diff --git a/.lgtm.yml b/.lgtm.yml
new file mode 100644
index 0000000..d301ab1
--- /dev/null
+++ b/.lgtm.yml
@@ -0,0 +1,6 @@
+extraction:
+  java:
+    index:
+      java_version: 11
+      build_command: "mvn --show-version clean install -Pstaging -Pfastest"
+
diff --git a/Jenkinsfile b/Jenkinsfile
index 1831123..b9c863a 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -110,7 +110,7 @@
             try {
               timeout(time: 1, unit: 'HOURS') {
                 sh """
-                  export CLASSPATH=${WORKSPACE}/glassfish6/javadb
+                  export CLASSPATH=${WORKSPACE}/glassfish7/javadb
                   ${WORKSPACE}/appserver/tests/gftest.sh run_test ${job}
                 """
               }
@@ -212,7 +212,7 @@
   }
 
   environment {
-    S1AS_HOME = "${WORKSPACE}/glassfish6/glassfish"
+    S1AS_HOME = "${WORKSPACE}/glassfish7/glassfish"
     APS_HOME = "${WORKSPACE}/appserver/tests/appserv-tests"
     TEST_RUN_LOG = "${WORKSPACE}/tests-run.log"
     GF_INTERNAL_ENV = credentials('gf-internal-env')
@@ -262,6 +262,8 @@
               echo Uname
               uname -a
 
+              # temporary build of external snapshot dependencies
+              mvn clean install -f ./snapshots/pom.xml -s ./snapshots/settings.xml
               # Until we fix ANTLR in cmp-support-sqlstore, broken in parallel builds. Just -Pfast after the fix.
               mvn clean install -Pfastest,staging -T4C
               ./gfbuild.sh archive_bundles
diff --git a/README.md b/README.md
index a34be2a..2503293 100644
--- a/README.md
+++ b/README.md
@@ -7,6 +7,7 @@
 
 ### Compatibility
 
+* Eclipse GlassFish 7.0.0 is Jakarta EE 10 compatible, requires Java 11, supports Java 18
 * Eclipse GlassFish 6.2.0 is Jakarta EE 9.1 compatible, requires Java 11, supports Java 17
 * Eclipse GlassFish 6.1.0 is Jakarta EE 9.1 compatible, requires Java 11
 * Eclipse GlassFish 6.0.0 is Jakarta EE 9 compatible, requires Java 8
@@ -27,6 +28,8 @@
 
 ### Execution
 
+:warning: Because GF7 is now in intensive development and depends on external snapshot dependencies, you have to build these dependencies first: `mvn clean install -f ./snapshots/pom.xml`
+
 * `mvn clean install` - Full build including automatic QA and maven managed tests. Typical time: 5 minutes.
 * `mvn clean install -Pfast` - Building all distribution artifacts, running just unit tests, QA and integration tests excluded. Typical time: 3 minutes.
 * `mvn clean install -Pfastest` - Building all distribution artifacts, excluded all QA and testing. Typical time: 1.5 minutes.
@@ -53,42 +56,41 @@
 
 ### QuickLook
 
-`mvn -f appserver/tests/quicklook/pom.xml test -Dglassfish.home=$(pwd)/appserver/distributions/glassfish/target/stage/glassfish6/glassfish`
+`mvn -f appserver/tests/quicklook/pom.xml test -Dglassfish.home=$(pwd)/appserver/distributions/glassfish/target/stage/glassfish7/glassfish`
 
 * Usual time: 3 minutes
 * see [QuickLook_Test_Instructions](https://github.com/eclipse-ee4j/glassfish/blob/master/appserver/tests/quicklook/QuickLook_Test_Instructions.html)
 
 ### Old Additional Tests
 
-* `./runTests.sh 6.2.3 cdi_all` - Usual time: 6 minutes
-* `./runTests.sh 6.2.3 ejb_group_1` - Usual time: 8 minutes
-* `./runTests.sh 6.2.3 web_jsp` - Usual time: 6 minutes
-* `./gfbuild.sh archive_bundles && ./gftest.sh ql_gf_web_profile_all` - Usual time: 2 minutes
+:warning: if the script fails, sometimes it doesn't stop the domain and you have to do that manually.
+
+* `./runTests.sh 7.0.0 batch_all` - Usual time: 4 minutes
+* `./runTests.sh 7.0.0 cdi_all` - Usual time: 6 minutes
+* `./runTests.sh 7.0.0 connector_group_1` - Usual time: 16 minutes
+* `./runTests.sh 7.0.0 connector_group_2` - Usual time: 3 minutes
+* `./runTests.sh 7.0.0 connector_group_3` - Usual time: 4 minutes
+* `./runTests.sh 7.0.0 connector_group_4` - Usual time: 16 minutes
+* `./runTests.sh 7.0.0 deployment_all` - Not fixed yet
+* `./runTests.sh 7.0.0 ejb_group_1` - Usual time: 10 minutes
+* `./runTests.sh 7.0.0 ejb_group_2` - Usual time: 7 minutes
+* `./runTests.sh 7.0.0 ejb_group_3` - Usual time: 18 minutes
+* `./runTests.sh 7.0.0 ejb_group_embedded` - Usual time: 4 minutes
+* `./runTests.sh 7.0.0 jdbc_all` - Usual time: 20 minutes
+* `./runTests.sh 7.0.0 persistence_all` - Usual time: 3 minutes
+* `./runTests.sh 7.0.0 web_jsp` - Usual time: 8 minutes
+* `./gfbuild.sh archive_bundles && ./gftest.sh ejb_web_all` - Usual time: 4 minutes
+* `./gfbuild.sh archive_bundles && ./gftest.sh nucleus_admin_all` - Not fixed yet
 * `./gfbuild.sh archive_bundles && ./gftest.sh ql_gf_full_profile_all` - Usual time: 4 minutes
-
-### Half-Dead Additional Tests Waiting for a Rescue
-
-First warning: if the script fails, it doesn't stop the domain and you have to do that manually.
-* `./runTests.sh 6.2.3 batch_all` - Crashes, Derby uses different port than expected
-* `./runTests.sh 6.2.3 connector_group_1` - Crashes, ports
-* `./runTests.sh 6.2.3 connector_group_2` - Crashes, ports
-* `./runTests.sh 6.2.3 connector_group_3` - Crashes, ports
-* `./runTests.sh 6.2.3 connector_group_4` - Crashes, ports
-* `./runTests.sh 6.2.3 deployment_all` - Usual time: 1 minute, failure: still uses javax packages.
-* `./runTests.sh 6.2.3 ejb_group_2` - Usual time: 2 minutes, failure: incompatible API at TimerSessionEJB.
-* `./runTests.sh 6.2.3 ejb_group_3` - Usual time: 4 minutes, failure: still uses javax packages
-* `./runTests.sh 6.2.3 jdbc_all` - Crashes, Derby uses different port than expected
-* `./runTests.sh 6.2.3 persistence_all` - Crashes, Derby uses different port than expected
-* `./gfbuild.sh archive_bundles && ./gftest.sh ejb_web_all` - Usual time: 4 minutes, failure: could not create the derby database
-* `./gfbuild.sh archive_bundles && ./gftest.sh ql_gf_nucleus_all` - Crashes
-* `./gfbuild.sh archive_bundles && ./gftest.sh nucleus_admin_all` - Crashes, missing TestNG dependency
-* many tests under appserver/tests subdirectories; they are still waiting for someone's attention.
+* `./gfbuild.sh archive_bundles && ./gftest.sh ql_gf_nucleus_all` - Not fixed yet
+* `./gfbuild.sh archive_bundles && ./gftest.sh ql_gf_web_profile_all` - Usual time: 2 minutes
+* There are many tests under appserver/tests subdirectories; they are still waiting for someone's attention.
 
 ## Basic Usage
 
-* Starting Eclipse GlassFish: `glassfish6/bin/asadmin start-domain`
+* Starting Eclipse GlassFish: `glassfish7/bin/asadmin start-domain`
 * Visit [http://localhost:4848](http://localhost:4848)
-* Stopping Eclipse GlassFish: `glassfish6/bin/asadmin stop-domain`
+* Stopping Eclipse GlassFish: `glassfish7/bin/asadmin stop-domain`
 
 ## Professional Services and Enterprise Support
 
diff --git a/appserver/admin/admin-core/pom.xml b/appserver/admin/admin-core/pom.xml
index ea1b0e2..a9fc038 100755
--- a/appserver/admin/admin-core/pom.xml
+++ b/appserver/admin/admin-core/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.admin</groupId>
         <artifactId>admin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>admin-core</artifactId>
@@ -60,8 +60,8 @@
         </dependency>
         <!-- Dependency of Hibernate Validator -->
         <dependency>
-            <groupId>org.glassfish</groupId>
-            <artifactId>jakarta.el</artifactId>
+            <groupId>org.glassfish.expressly</groupId>
+            <artifactId>expressly</artifactId>
             <scope>test</scope>
         </dependency>
     </dependencies>
diff --git a/appserver/admin/backup/pom.xml b/appserver/admin/backup/pom.xml
index 425c040..ad9f02c 100644
--- a/appserver/admin/backup/pom.xml
+++ b/appserver/admin/backup/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.admin</groupId>
         <artifactId>admin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>backup</artifactId>
diff --git a/appserver/admin/cli-optional/pom.xml b/appserver/admin/cli-optional/pom.xml
index 2c2c3b7..caed5c4 100755
--- a/appserver/admin/cli-optional/pom.xml
+++ b/appserver/admin/cli-optional/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.admin</groupId>
         <artifactId>admin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>cli-optional</artifactId>
diff --git a/appserver/admin/cli/pom.xml b/appserver/admin/cli/pom.xml
index 8c7c5a0..05cc67b 100755
--- a/appserver/admin/cli/pom.xml
+++ b/appserver/admin/cli/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.admin</groupId>
         <artifactId>admin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>appserver-cli</artifactId>
diff --git a/appserver/admin/pom.xml b/appserver/admin/pom.xml
index 9b55baf..df6a232 100755
--- a/appserver/admin/pom.xml
+++ b/appserver/admin/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/admin/template/pom.xml b/appserver/admin/template/pom.xml
index 18b9c3e..d8e7a1c 100644
--- a/appserver/admin/template/pom.xml
+++ b/appserver/admin/template/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.admin</groupId>
         <artifactId>admin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>appserver-domain</artifactId>
diff --git a/appserver/admin/template/src/main/resources/config/default-web.xml b/appserver/admin/template/src/main/resources/config/default-web.xml
index e28c2e6..bc2cc37 100644
--- a/appserver/admin/template/src/main/resources/config/default-web.xml
+++ b/appserver/admin/template/src/main/resources/config/default-web.xml
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
 <!--
 
-    Copyright (c) 2006, 2020 Oracle and/or its affiliates. All rights reserved.
+    Copyright (c) 2021 Contributors to Eclipse Foundation.
+    Copyright (c) 2006, 2021 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
     terms of the Eclipse Public License v. 2.0, which is available at
@@ -278,7 +279,7 @@
 
   <servlet>
     <servlet-name>jsp</servlet-name>
-    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
+    <servlet-class>org.glassfish.wasp.servlet.JspServlet</servlet-class>
     <init-param>
       <param-name>xpoweredBy</param-name>
       <param-value>true</param-value>
@@ -300,7 +301,7 @@
       <param-value>
         /lib/
         \lib\
-        jakarta.el.jar
+        expressly.jar
         jakarta.el-api.jar
         jakarta.servlet-api.jar
         jakarta.servlet.jsp-api.jar
@@ -315,8 +316,10 @@
         jakarta.validation-api.jar
         jakarta.ejb.jar
         jakarta.jms-api.jar
-        jakarta.activation.jar
-        jakarta.mail.jar
+        jakarta.activation-api.jar
+        angus-activation.jar
+        jakarta.mail-api.jar
+        angus-mail.jar
         jakarta.management.j2ee-api.jar
         jakarta.persistence.jar
         jakarta.resource-api.jar
diff --git a/appserver/admingui/cluster/pom.xml b/appserver/admingui/cluster/pom.xml
index a950392..4893c34 100644
--- a/appserver/admingui/cluster/pom.xml
+++ b/appserver/admingui/cluster/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.admingui</groupId>
         <artifactId>admingui</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/admingui/cluster/src/main/resources/org/glassfish/cluster/admingui/Strings.properties b/appserver/admingui/cluster/src/main/resources/org/glassfish/cluster/admingui/Strings.properties
index 768f176..8129ba9 100644
--- a/appserver/admingui/cluster/src/main/resources/org/glassfish/cluster/admingui/Strings.properties
+++ b/appserver/admingui/cluster/src/main/resources/org/glassfish/cluster/admingui/Strings.properties
@@ -190,7 +190,7 @@
 node.EditPageTitle=Edit Node
 node.EditPageTitleHelp=Edit properties for the selected node.
 node.InstallDir=Installation Directory:
-node.InstallDirHelp=The full path to the parent of the base installation directory of the GlassFish Server software on the host, for example, /export/glassfish6.
+node.InstallDirHelp=The full path to the parent of the base installation directory of the GlassFish Server software on the host, for example, /export/glassfish7.
 node.force=Force:
 node.forceHelp=Specifies whether the node is created even if validation of the node's parameters fails.
 node.type=Type:
diff --git a/appserver/admingui/common/pom.xml b/appserver/admingui/common/pom.xml
index e64ee3c..6300dd0 100644
--- a/appserver/admingui/common/pom.xml
+++ b/appserver/admingui/common/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.admingui</groupId>
         <artifactId>admingui</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
@@ -72,8 +72,8 @@
             <artifactId>jakarta.el-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.glassfish</groupId>
-            <artifactId>jakarta.el</artifactId>
+            <groupId>org.glassfish.expressly</groupId>
+            <artifactId>expressly</artifactId>
         </dependency>
         <dependency>
             <groupId>org.glassfish</groupId>
diff --git a/appserver/admingui/common/src/main/help/en/help/docinfo.html b/appserver/admingui/common/src/main/help/en/help/docinfo.html
index d5dcfa1..fff6bc0 100644
--- a/appserver/admingui/common/src/main/help/en/help/docinfo.html
+++ b/appserver/admingui/common/src/main/help/en/help/docinfo.html
@@ -16,7 +16,7 @@
 
 -->
 
-<h4>GlassFish Server Open Source Edition 5.1</h4>
+<h4>GlassFish Server Open Source Edition 7</h4>
 <p><a name="BEGIN" id="BEGIN"></a></p>
 <p>Common Online Help</p>
 <p></p>
@@ -25,7 +25,7 @@
 <p>This document provides the reference and task online help topics for the common module of the GlassFish Server Administration Console.</p>
 <p><a id="sthref1" name="sthref1"></a></p>
 <hr />
-<p>GlassFish Server Open Source Edition 5.1 Common Online Help</p>
+<p>GlassFish Server Open Source Edition 7 Common Online Help</p>
 
 <p>Copyright &copy; 2010, 2019 Oracle and/or its affiliates. All rights reserved.</p>
  
diff --git a/appserver/admingui/common/src/main/java/org/glassfish/admingui/common/handlers/CommonHandlers.java b/appserver/admingui/common/src/main/java/org/glassfish/admingui/common/handlers/CommonHandlers.java
index cb2c558..bd835ce 100644
--- a/appserver/admingui/common/src/main/java/org/glassfish/admingui/common/handlers/CommonHandlers.java
+++ b/appserver/admingui/common/src/main/java/org/glassfish/admingui/common/handlers/CommonHandlers.java
@@ -25,18 +25,11 @@
 
 package org.glassfish.admingui.common.handlers;
 
-import com.sun.enterprise.config.serverbeans.ServerTags;
-import com.sun.jsftemplating.annotation.Handler;
-import com.sun.jsftemplating.annotation.HandlerInput;
-import com.sun.jsftemplating.annotation.HandlerOutput;
-import com.sun.jsftemplating.el.PageSessionResolver;
-import com.sun.jsftemplating.handlers.NavigationHandlers;
-import com.sun.jsftemplating.layout.descriptors.handler.HandlerContext;
-import com.sun.jsftemplating.util.Util;
-
 import java.io.IOException;
 import java.io.Serializable;
 import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -44,20 +37,26 @@
 import java.util.ResourceBundle;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
+
+import org.glassfish.admingui.common.tree.FilterTreeEvent;
+import org.glassfish.admingui.common.util.GuiUtil;
+import org.glassfish.admingui.common.util.MiscUtil;
+import org.glassfish.admingui.common.util.RestUtil;
+import org.glassfish.admingui.common.util.TargetUtil;
+
+import com.sun.enterprise.config.serverbeans.ServerTags;
+import com.sun.jsftemplating.annotation.Handler;
+import com.sun.jsftemplating.annotation.HandlerInput;
+import com.sun.jsftemplating.annotation.HandlerOutput;
+import com.sun.jsftemplating.handlers.NavigationHandlers;
+import com.sun.jsftemplating.layout.descriptors.handler.HandlerContext;
+import com.sun.jsftemplating.util.Util;
 
 import jakarta.faces.component.UIComponent;
 import jakarta.faces.component.UIInput;
 import jakarta.faces.component.UIViewRoot;
 import jakarta.faces.context.FacesContext;
 import jakarta.servlet.http.HttpServletResponse;
-import org.glassfish.admingui.common.tree.FilterTreeEvent;
-
-import org.glassfish.admingui.common.util.GuiUtil;
-import org.glassfish.admingui.common.util.MiscUtil;
-import org.glassfish.admingui.common.util.RestUtil;
-import org.glassfish.admingui.common.util.TargetUtil;
 
 
 public class CommonHandlers {
@@ -826,10 +825,9 @@
     private static String handleBareAttribute(FacesContext ctx, String url) {
         // Get Page Session...
         UIViewRoot root = ctx.getViewRoot();
-        Map<String, Serializable> pageSession =
-            PageSessionResolver.getPageSession(ctx, root);
+        Map<String, Serializable> pageSession = null; // PageSessionResolver.getPageSession(ctx, root);
         if (pageSession == null) {
-            pageSession = PageSessionResolver.createPageSession(ctx, root);
+            pageSession = createPageSession(ctx, root); // PageSessionResolver.createPageSession(ctx, root);
         }
         String request = ctx.getExternalContext().getRequestParameterMap().get("bare");
         if (request != null) {
@@ -854,6 +852,26 @@
     }
 
     /**
+     * <p>
+     * This method will create a new "page session" <code>Map</code>. It will overwrite any existing "page session"
+     * <code>Map</code>, so be careful.
+     * </p>
+     */
+    public static Map<String, Serializable> createPageSession(FacesContext ctx, UIViewRoot root) {
+        if (root == null) {
+            root = ctx.getViewRoot();
+        }
+        // Create it...
+        Map<String, Serializable> map = new HashMap<>(4);
+
+        // Store it...
+        root.getAttributes().put("_ps", map);
+
+        // Return it...
+        return map;
+    }
+
+    /**
      * Add the name/value pair to the given url.
      * @param url
      * @param name
diff --git a/appserver/admingui/common/src/main/java/org/glassfish/admingui/common/handlers/MonitoringHandlers.java b/appserver/admingui/common/src/main/java/org/glassfish/admingui/common/handlers/MonitoringHandlers.java
index 532be65..16f4631 100644
--- a/appserver/admingui/common/src/main/java/org/glassfish/admingui/common/handlers/MonitoringHandlers.java
+++ b/appserver/admingui/common/src/main/java/org/glassfish/admingui/common/handlers/MonitoringHandlers.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2021 Contributors to the Eclipse Foundation
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -825,8 +826,4 @@
         monNamesList.add("jersey");
         monNamesList.add("deployment");
     }
-    final private static List containerDispList = new ArrayList();
-
-    final private static List containerNameList = new ArrayList();
-
 }
diff --git a/appserver/admingui/common/src/main/java/org/glassfish/admingui/common/security/AdminConsoleAuthModule.java b/appserver/admingui/common/src/main/java/org/glassfish/admingui/common/security/AdminConsoleAuthModule.java
index 2b304a1..3daa5c5 100644
--- a/appserver/admingui/common/src/main/java/org/glassfish/admingui/common/security/AdminConsoleAuthModule.java
+++ b/appserver/admingui/common/src/main/java/org/glassfish/admingui/common/security/AdminConsoleAuthModule.java
@@ -63,12 +63,11 @@
 import com.sun.enterprise.security.SecurityServicesUtil;
 
 /**
- * This class is responsible for providing the Authentication support
- * needed by the admin console to both access the admin console pages
- * as well as invoke REST requests.
+ * This class is responsible for providing the Authentication support needed by the admin console to both access the
+ * admin console pages as well as invoke REST requests.
  */
 public class AdminConsoleAuthModule implements ServerAuthModule {
-    //public static final String TOKEN_ADMIN_LISTENER_PORT = "${ADMIN_LISTENER_PORT}";
+    // public static final String TOKEN_ADMIN_LISTENER_PORT = "${ADMIN_LISTENER_PORT}";
 
     private CallbackHandler handler = null;
 
@@ -78,7 +77,7 @@
 
     private String loginErrorPage = null;
 
-    private static final Class[] SUPPORTED_MESSAGE_TYPES = new Class[]{HttpServletRequest.class, HttpServletResponse.class};
+    private static final Class[] SUPPORTED_MESSAGE_TYPES = new Class[] { HttpServletRequest.class, HttpServletResponse.class };
 
     private static final String SAVED_SUBJECT = "Saved_Subject";
 
@@ -106,8 +105,7 @@
     private static final Logger logger = GuiUtil.getLogger();
 
     /**
-     * This method configures this AuthModule and makes sure all the
-     * information needed to continue is present.
+     * This method configures this AuthModule and makes sure all the information needed to continue is present.
      */
     @Override
     public void initialize(MessagePolicy requestPolicy, MessagePolicy responsePolicy, CallbackHandler handler, Map options) throws AuthException {
@@ -115,25 +113,24 @@
         if (options != null) {
             this.loginPage = (String) options.get("loginPage");
             if (loginPage == null) {
-                throw new AuthException("'loginPage' "
-                        + "must be supplied as a property in the provider-config "
-                        + "in the domain.xml file!");
+                throw new AuthException(
+                        "'loginPage' " + "must be supplied as a property in the provider-config " + "in the domain.xml file!");
             }
             this.loginErrorPage = (String) options.get("loginErrorPage");
             if (loginErrorPage == null) {
-                throw new AuthException("'loginErrorPage' "
-                        + "must be supplied as a property in the provider-config "
-                        + "in the domain.xml file!");
+                throw new AuthException(
+                        "'loginErrorPage' " + "must be supplied as a property in the provider-config " + "in the domain.xml file!");
             }
             ServiceLocator habitat = SecurityServicesUtil.getInstance().getHabitat();
             Domain domain = habitat.getService(Domain.class);
-            NetworkListener adminListener = domain.getServerNamed("server").getConfig().getNetworkConfig().getNetworkListener("admin-listener");
+            NetworkListener adminListener = domain.getServerNamed("server").getConfig().getNetworkConfig()
+                    .getNetworkListener("admin-listener");
             SecureAdmin secureAdmin = habitat.getService(SecureAdmin.class);
 
             final String host = adminListener.getAddress();
             // Save the REST URL we need to authenticate the user.
-            this.restURL =  (SecureAdmin.Util.isEnabled(secureAdmin) ? "https://" : "http://") +
-                    (host.equals("0.0.0.0") ? "localhost" : host) + ":" + adminListener.getPort() + "/management/sessions";
+            this.restURL = (SecureAdmin.Util.isEnabled(secureAdmin) ? "https://" : "http://")
+                    + (host.equals("0.0.0.0") ? "localhost" : host) + ":" + adminListener.getPort() + "/management/sessions";
         }
     }
 
@@ -145,19 +142,15 @@
         return SUPPORTED_MESSAGE_TYPES;
     }
 
-
     /**
      * This is where the validation happens...
      */
     @Override
     public AuthStatus validateRequest(MessageInfo messageInfo, Subject clientSubject, Subject serviceSubject) throws AuthException {
         // Make sure we need to check...
-        HttpServletRequest request =
-                (HttpServletRequest) messageInfo.getRequestMessage();
-        HttpServletResponse response =
-                (HttpServletResponse) messageInfo.getResponseMessage();
-        if (!isMandatory(messageInfo)
-                && !request.getRequestURI().endsWith("/j_security_check")) {
+        HttpServletRequest request = (HttpServletRequest) messageInfo.getRequestMessage();
+        HttpServletResponse response = (HttpServletResponse) messageInfo.getResponseMessage();
+        if (!isMandatory(messageInfo) && !request.getRequestURI().endsWith("/j_security_check")) {
             return AuthStatus.SUCCESS;
         }
 
@@ -167,7 +160,7 @@
             return AuthStatus.FAILURE;
         }
 
-        Subject savedClientSubject = (Subject) session.getValue(SAVED_SUBJECT);
+        Subject savedClientSubject = (Subject) session.getAttribute(SAVED_SUBJECT);
         if (savedClientSubject != null) {
             // Copy all principals...
             clientSubject.getPrincipals().addAll(savedClientSubject.getPrincipals());
@@ -177,23 +170,21 @@
         }
 
         // See if we've already calculated the serverName / serverPort
-        if (session.getValue(REST_SERVER_NAME) == null) {
+        if (session.getAttribute(REST_SERVER_NAME) == null) {
             // Save this for use later...
             URL url = null;
             try {
                 url = new URL(restURL);
             } catch (MalformedURLException ex) {
-                throw new IllegalArgumentException(
-                        "Unable to parse REST URL: (" + restURL + ")", ex);
+                throw new IllegalArgumentException("Unable to parse REST URL: (" + restURL + ")", ex);
             }
-            session.putValue(REST_SERVER_NAME, url.getHost());
-            session.putValue(REST_SERVER_PORT, url.getPort());
+            session.setAttribute(REST_SERVER_NAME, savedClientSubject);
+            session.setAttribute(REST_SERVER_PORT, url.getPort());
         }
 
         // See if the username / password has been passed in...
         String username = request.getParameter("j_username");
-        char[] password = request.getParameter("j_password") != null
-                ? request.getParameter("j_password").toCharArray() : null;
+        char[] password = request.getParameter("j_password") != null ? request.getParameter("j_password").toCharArray() : null;
         if ((username == null) || (password == null) || !request.getMethod().equalsIgnoreCase("post")) {
             // Not passed in, show the login page...
             String origPath = request.getRequestURI();
@@ -213,14 +204,6 @@
             return AuthStatus.SEND_CONTINUE;
         }
 
-// Don't use the PasswordValidationCallback... use REST authorization instead.
-//        char[] pwd = new char[password.length()];
-//        password.getChars(0, password.length(), pwd, 0);
-//        PasswordValidationCallback pwdCallback =
-//            new PasswordValidationCallback(clientSubject, username, pwd);
-
-        // Make REST Request
-
         Client client2 = RestUtil.initialize(ClientBuilder.newBuilder()).build();
         WebTarget target = client2.target(restURL);
         target.register(HttpAuthenticationFeature.basic(username, new String(password)));
@@ -233,10 +216,9 @@
         // Check to see if successful..
         if (restResp.isSuccess()) {
             // Username and Password sent in... validate them!
-            CallerPrincipalCallback cpCallback =
-                    new CallerPrincipalCallback(clientSubject, username);
+            CallerPrincipalCallback cpCallback = new CallerPrincipalCallback(clientSubject, username);
             try {
-                handler.handle(new Callback[]{ /*pwdCallback,*/cpCallback});
+                handler.handle(new Callback[] { /* pwdCallback, */cpCallback });
             } catch (Exception ex) {
                 AuthException ae = new AuthException();
                 ae.initCause(ex);
@@ -245,7 +227,7 @@
 
             request.changeSessionId();
 
-                // Get the "extraProperties" section of the response...
+            // Get the "extraProperties" section of the response...
             Object obj = restResp.getResponse().get("data");
             Map extraProperties = null;
             if ((obj != null) && (obj instanceof Map)) {
@@ -257,18 +239,18 @@
 
             // Save the Rest Token...
             if (extraProperties != null) {
-                session.putValue(REST_TOKEN, extraProperties.get("token"));
+                session.setAttribute(REST_TOKEN, extraProperties.get("token"));
             }
 
             // Save the Subject...
-            session.putValue(SAVED_SUBJECT, clientSubject);
+            session.setAttribute(SAVED_SUBJECT, clientSubject);
 
             // Save the userName
-            session.putValue(USER_NAME, username);
+            session.setAttribute(USER_NAME, username);
 
             try {
                 // Redirect...
-                String origRequest = (String)session.getAttribute(ORIG_REQUEST_PATH);
+                String origRequest = (String) session.getAttribute(ORIG_REQUEST_PATH);
                 // Explicitly test for favicon.ico, as Firefox seems to ask for this on
                 // every page
                 if ((origRequest == null) || "/favicon.ico".equals(origRequest)) {
@@ -276,10 +258,9 @@
                 }
                 logger.log(Level.INFO, "Redirecting to {0}", neutralizeForLog(origRequest));
                 if (InputValidationUtil.validateStringforCRLF(origRequest)) {
-                    response.sendError(403,"Forbidden");
+                    response.sendError(403, "Forbidden");
                 }
-                response.sendRedirect(
-                        response.encodeRedirectURL(InputValidationUtil.removeLinearWhiteSpaces(origRequest)));
+                response.sendRedirect(response.encodeRedirectURL(InputValidationUtil.removeLinearWhiteSpaces(origRequest)));
             } catch (Exception ex) {
                 AuthException ae = new AuthException();
                 ae.initCause(ex);
@@ -294,6 +275,7 @@
                 request.setAttribute("errorText", GuiUtil.getMessage("alert.ConfigurationError"));
                 request.setAttribute("messageText", GuiUtil.getMessage("alert.EnableSecureAdmin"));
             }
+
             RequestDispatcher rd = request.getRequestDispatcher(this.loginErrorPage);
             try {
                 rd.forward(request, response);
@@ -302,6 +284,7 @@
                 ae.initCause(ex);
                 throw ae;
             }
+
             return AuthStatus.SEND_FAILURE;
         }
     }
@@ -317,7 +300,6 @@
     }
 
     private boolean isMandatory(MessageInfo messageInfo) {
-        return Boolean.valueOf((String) messageInfo.getMap().get(
-                "jakarta.security.auth.message.MessagePolicy.isMandatory"));
+        return Boolean.valueOf((String) messageInfo.getMap().get("jakarta.security.auth.message.MessagePolicy.isMandatory"));
     }
 }
diff --git a/appserver/admingui/community-theme/pom.xml b/appserver/admingui/community-theme/pom.xml
index 5dc4d52..3a247c7 100644
--- a/appserver/admingui/community-theme/pom.xml
+++ b/appserver/admingui/community-theme/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.admingui</groupId>
         <artifactId>admingui</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/admingui/concurrent/pom.xml b/appserver/admingui/concurrent/pom.xml
index ae81a7d..0ec69b9 100644
--- a/appserver/admingui/concurrent/pom.xml
+++ b/appserver/admingui/concurrent/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.admingui</groupId>
         <artifactId>admingui</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/admingui/concurrent/src/main/help/en/help/docinfo.html b/appserver/admingui/concurrent/src/main/help/en/help/docinfo.html
index c24dd38..397f1f7 100644
--- a/appserver/admingui/concurrent/src/main/help/en/help/docinfo.html
+++ b/appserver/admingui/concurrent/src/main/help/en/help/docinfo.html
@@ -16,7 +16,7 @@
 
 -->
 
-<h4>GlassFish Server Open Source Edition 5.1</h4>
+<h4>GlassFish Server Open Source Edition 7</h4>
 <p><a name="BEGIN" id="BEGIN"></a></p>
 <p>Concurrent Online Help</p>
 <p></p>
@@ -25,7 +25,7 @@
 <p>This document provides the reference and task online help topics for the concurrent module of the GlassFish Server Administration Console.</p>
 <p><a id="sthref1" name="sthref1"></a></p>
 <hr />
-<p>GlassFish Server Open Source Edition 5.1 Concurrent Online Help</p>
+<p>GlassFish Server Open Source Edition 7 Concurrent Online Help</p>
 
 <p>Copyright &copy; 2010, 2019 Oracle and/or its affiliates. All rights reserved.</p>
  
diff --git a/appserver/admingui/corba/pom.xml b/appserver/admingui/corba/pom.xml
index 515b07d..aa19139 100644
--- a/appserver/admingui/corba/pom.xml
+++ b/appserver/admingui/corba/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.admingui</groupId>
         <artifactId>admingui</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/admingui/corba/src/main/help/en/help/docinfo.html b/appserver/admingui/corba/src/main/help/en/help/docinfo.html
index 09df858..b3f1b1b 100644
--- a/appserver/admingui/corba/src/main/help/en/help/docinfo.html
+++ b/appserver/admingui/corba/src/main/help/en/help/docinfo.html
@@ -16,7 +16,7 @@
 
 -->
 
-<h4>GlassFish Server Open Source Edition 5.1</h4>
+<h4>GlassFish Server Open Source Edition 7</h4>
 <p><a name="BEGIN" id="BEGIN"></a></p>
 <p>CORBA Online Help</p>
 <p></p>
@@ -25,7 +25,7 @@
 <p>This document provides the reference and task online help topics for the corba module of the GlassFish Server Administration Console.</p>
 <p><a id="sthref1" name="sthref1"></a></p>
 <hr />
-<p>GlassFish Server Open Source Edition 5.1 CORBA Online Help</p>
+<p>GlassFish Server Open Source Edition 7 CORBA Online Help</p>
 
 <p>Copyright &copy; 2010, 2019 Oracle and/or its affiliates. All rights reserved.</p>
  
diff --git a/appserver/admingui/core/pom.xml b/appserver/admingui/core/pom.xml
index b3ac589..0b8558b 100644
--- a/appserver/admingui/core/pom.xml
+++ b/appserver/admingui/core/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.main.admingui</groupId>
         <artifactId>admingui</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/admingui/dataprovider/pom.xml b/appserver/admingui/dataprovider/pom.xml
index 612a648..d361948 100644
--- a/appserver/admingui/dataprovider/pom.xml
+++ b/appserver/admingui/dataprovider/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/admingui/dist-fragment/pom.xml b/appserver/admingui/dist-fragment/pom.xml
index 39d9953..95cda09 100644
--- a/appserver/admingui/dist-fragment/pom.xml
+++ b/appserver/admingui/dist-fragment/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.admingui</groupId>
         <artifactId>admingui</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>dist-fragment</artifactId>
diff --git a/appserver/admingui/ejb-lite/pom.xml b/appserver/admingui/ejb-lite/pom.xml
index 1a7f9ee..2fd8110 100644
--- a/appserver/admingui/ejb-lite/pom.xml
+++ b/appserver/admingui/ejb-lite/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.admingui</groupId>
         <artifactId>admingui</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/admingui/ejb-lite/src/main/help/en/help/docinfo.html b/appserver/admingui/ejb-lite/src/main/help/en/help/docinfo.html
index 5cd698d..4503625 100644
--- a/appserver/admingui/ejb-lite/src/main/help/en/help/docinfo.html
+++ b/appserver/admingui/ejb-lite/src/main/help/en/help/docinfo.html
@@ -16,7 +16,7 @@
 
 -->
 
-<h4>GlassFish Server Open Source Edition 5.1</h4>
+<h4>GlassFish Server Open Source Edition 7</h4>
 <p><a name="BEGIN" id="BEGIN"></a></p>
 <p>EJB Lite Online Help</p>
 <p></p>
@@ -25,7 +25,7 @@
 <p>This document provides the reference and task online help topics for the ejb-lite module of the GlassFish Server Administration Console.</p>
 <p><a id="sthref1" name="sthref1"></a></p>
 <hr />
-<p>GlassFish Server Open Source Edition 5.1 EJB Lite Online Help</p>
+<p>GlassFish Server Open Source Edition 7 EJB Lite Online Help</p>
 
 <p>Copyright &copy; 2010, 2019 Oracle and/or its affiliates. All rights reserved.</p>
  
diff --git a/appserver/admingui/ejb/pom.xml b/appserver/admingui/ejb/pom.xml
index c9ee087..c2dd901 100644
--- a/appserver/admingui/ejb/pom.xml
+++ b/appserver/admingui/ejb/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.admingui</groupId>
         <artifactId>admingui</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/admingui/ejb/src/main/help/en/help/docinfo.html b/appserver/admingui/ejb/src/main/help/en/help/docinfo.html
index d3c902a..863b002 100644
--- a/appserver/admingui/ejb/src/main/help/en/help/docinfo.html
+++ b/appserver/admingui/ejb/src/main/help/en/help/docinfo.html
@@ -16,7 +16,7 @@
 
 -->
 
-<h4>GlassFish Server Open Source Edition 5.1</h4>
+<h4>GlassFish Server Open Source Edition 7</h4>
 <p><a name="BEGIN" id="BEGIN"></a></p>
 <p>EJB Online Help</p>
 <p></p>
@@ -25,7 +25,7 @@
 <p>This document provides the reference and task online help topics for the ejb module of the GlassFish Server Administration Console.</p>
 <p><a id="sthref1" name="sthref1"></a></p>
 <hr />
-<p>GlassFish Server Open Source Edition 5.1 EJB Online Help</p>
+<p>GlassFish Server Open Source Edition 7 EJB Online Help</p>
 
 <p>Copyright &copy; 2010, 2019 Oracle and/or its affiliates. All rights reserved.</p>
  
diff --git a/appserver/admingui/full/pom.xml b/appserver/admingui/full/pom.xml
index e99d929..2971ebb 100644
--- a/appserver/admingui/full/pom.xml
+++ b/appserver/admingui/full/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.admingui</groupId>
         <artifactId>admingui</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/admingui/full/src/main/help/en/help/docinfo.html b/appserver/admingui/full/src/main/help/en/help/docinfo.html
index a33c1cf..c1cbe5d 100644
--- a/appserver/admingui/full/src/main/help/en/help/docinfo.html
+++ b/appserver/admingui/full/src/main/help/en/help/docinfo.html
@@ -16,7 +16,7 @@
 
 -->
 
-<h4>GlassFish Server Open Source Edition 5.1</h4>
+<h4>GlassFish Server Open Source Edition 7</h4>
 <p><a name="BEGIN" id="BEGIN"></a></p>
 <p>JavaMail Online Help</p>
 <p></p>
@@ -25,7 +25,7 @@
 <p>This document provides the reference and task online help topics for the full module of the GlassFish Server Administration Console.</p>
 <p><a id="sthref1" name="sthref1"></a></p>
 <hr />
-<p>GlassFish Server Open Source Edition 5.1 JavaMail Online Help</p>
+<p>GlassFish Server Open Source Edition 7 JavaMail Online Help</p>
 
 <p>Copyright &copy; 2010, 2019 Oracle and/or its affiliates. All rights reserved.</p>
  
diff --git a/appserver/admingui/gf-admingui-connector/pom.xml b/appserver/admingui/gf-admingui-connector/pom.xml
index 30c2aaa..5d20526 100755
--- a/appserver/admingui/gf-admingui-connector/pom.xml
+++ b/appserver/admingui/gf-admingui-connector/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/admingui/jackson-jaxb/pom.xml b/appserver/admingui/jackson-jaxb/pom.xml
index 16df5a3..b529bb9 100644
--- a/appserver/admingui/jackson-jaxb/pom.xml
+++ b/appserver/admingui/jackson-jaxb/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/admingui/jca/pom.xml b/appserver/admingui/jca/pom.xml
index 4cb6f8b..f9960c6 100644
--- a/appserver/admingui/jca/pom.xml
+++ b/appserver/admingui/jca/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.admingui</groupId>
         <artifactId>admingui</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/admingui/jca/src/main/help/en/help/docinfo.html b/appserver/admingui/jca/src/main/help/en/help/docinfo.html
index 6e6ed01..4252957 100644
--- a/appserver/admingui/jca/src/main/help/en/help/docinfo.html
+++ b/appserver/admingui/jca/src/main/help/en/help/docinfo.html
@@ -16,7 +16,7 @@
 
 -->
 
-<h4>GlassFish Server Open Source Edition 5.1</h4>
+<h4>GlassFish Server Open Source Edition 7</h4>
 <p><a name="BEGIN" id="BEGIN"></a></p>
 <p>JCA Online Help</p>
 <p></p>
@@ -25,7 +25,7 @@
 <p>This document provides the reference and task online help topics for the jca module of the GlassFish Server Administration Console.</p>
 <p><a id="sthref1" name="sthref1"></a></p>
 <hr />
-<p>GlassFish Server Open Source Edition 5.1 JCA Online Help</p>
+<p>GlassFish Server Open Source Edition 7 JCA Online Help</p>
 
 <p>Copyright &copy; 2010, 2019 Oracle and/or its affiliates. All rights reserved.</p>
  
diff --git a/appserver/admingui/jdbc/pom.xml b/appserver/admingui/jdbc/pom.xml
index abb87bb..0f143f8 100644
--- a/appserver/admingui/jdbc/pom.xml
+++ b/appserver/admingui/jdbc/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.admingui</groupId>
         <artifactId>admingui</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/admingui/jdbc/src/main/help/en/help/docinfo.html b/appserver/admingui/jdbc/src/main/help/en/help/docinfo.html
index d19a280..5048cb2 100644
--- a/appserver/admingui/jdbc/src/main/help/en/help/docinfo.html
+++ b/appserver/admingui/jdbc/src/main/help/en/help/docinfo.html
@@ -16,7 +16,7 @@
 
 -->
 
-<h4>GlassFish Server Open Source Edition 5.1</h4>
+<h4>GlassFish Server Open Source Edition 7</h4>
 <p><a name="BEGIN" id="BEGIN"></a></p>
 <p>JDBC Online Help</p>
 <p></p>
@@ -25,7 +25,7 @@
 <p>This document provides the reference and task online help topics for the jdbc module of the GlassFish Server Administration Console.</p>
 <p><a id="sthref1" name="sthref1"></a></p>
 <hr />
-<p>GlassFish Server Open Source Edition 5.1 JDBC Online Help</p>
+<p>GlassFish Server Open Source Edition 7 JDBC Online Help</p>
 
 <p>Copyright &copy; 2010, 2019 Oracle and/or its affiliates. All rights reserved.</p>
  
diff --git a/appserver/admingui/jms-plugin/pom.xml b/appserver/admingui/jms-plugin/pom.xml
index 9ed3f7a..8bd6eb5 100644
--- a/appserver/admingui/jms-plugin/pom.xml
+++ b/appserver/admingui/jms-plugin/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.admingui</groupId>
         <artifactId>admingui</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/admingui/jms-plugin/src/main/help/en/help/docinfo.html b/appserver/admingui/jms-plugin/src/main/help/en/help/docinfo.html
index 8adc314..7a8e00b 100644
--- a/appserver/admingui/jms-plugin/src/main/help/en/help/docinfo.html
+++ b/appserver/admingui/jms-plugin/src/main/help/en/help/docinfo.html
@@ -16,7 +16,7 @@
 
 -->
 
-<h4>GlassFish Server Open Source Edition 5.1</h4>
+<h4>GlassFish Server Open Source Edition 7</h4>
 <p><a name="BEGIN" id="BEGIN"></a></p>
 <p>JMS Online Help</p>
 <p></p>
@@ -25,7 +25,7 @@
 <p>This document provides the reference and task online help topics for the jms module of the GlassFish Server Administration Console.</p>
 <p><a id="sthref1" name="sthref1"></a></p>
 <hr />
-<p>GlassFish Server Open Source Edition 5.1 JMS Online Help</p>
+<p>GlassFish Server Open Source Edition 7 JMS Online Help</p>
 
 <p>Copyright &copy; 2010, 2019 Oracle and/or its affiliates. All rights reserved.</p>
  
diff --git a/appserver/admingui/jts/pom.xml b/appserver/admingui/jts/pom.xml
index 003db8c..47ec83f 100644
--- a/appserver/admingui/jts/pom.xml
+++ b/appserver/admingui/jts/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.admingui</groupId>
         <artifactId>admingui</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/admingui/jts/src/main/help/en/help/docinfo.html b/appserver/admingui/jts/src/main/help/en/help/docinfo.html
index 403feb7..3fcb6c1 100644
--- a/appserver/admingui/jts/src/main/help/en/help/docinfo.html
+++ b/appserver/admingui/jts/src/main/help/en/help/docinfo.html
@@ -16,7 +16,7 @@
 
 -->
 
-<h4>GlassFish Server Open Source Edition 5.1</h4>
+<h4>GlassFish Server Open Source Edition 7</h4>
 <p><a name="BEGIN" id="BEGIN"></a></p>
 <p>JTS Online Help</p>
 <p></p>
@@ -25,7 +25,7 @@
 <p>This document provides the reference and task online help topics for the jts module of the GlassFish Server Administration Console.</p>
 <p><a id="sthref1" name="sthref1"></a></p>
 <hr />
-<p>GlassFish Server Open Source Edition 5.1 JTS Online Help</p>
+<p>GlassFish Server Open Source Edition 7 JTS Online Help</p>
 
 <p>Copyright &copy; 2010, 2019 Oracle and/or its affiliates. All rights reserved.</p>
  
diff --git a/appserver/admingui/plugin-service/pom.xml b/appserver/admingui/plugin-service/pom.xml
index d3a16ea..5e0cc3b 100644
--- a/appserver/admingui/plugin-service/pom.xml
+++ b/appserver/admingui/plugin-service/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/admingui/pom.xml b/appserver/admingui/pom.xml
index 39f515f..93990d3 100644
--- a/appserver/admingui/pom.xml
+++ b/appserver/admingui/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/admingui/war/pom.xml b/appserver/admingui/war/pom.xml
index 8840024..0161bc4 100644
--- a/appserver/admingui/war/pom.xml
+++ b/appserver/admingui/war/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/admingui/web/pom.xml b/appserver/admingui/web/pom.xml
index 43c544f..820a98d 100644
--- a/appserver/admingui/web/pom.xml
+++ b/appserver/admingui/web/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.admingui</groupId>
         <artifactId>admingui</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>console-web-plugin</artifactId>
diff --git a/appserver/admingui/web/src/main/help/en/help/docinfo.html b/appserver/admingui/web/src/main/help/en/help/docinfo.html
index 0eab76f..a53b125 100644
--- a/appserver/admingui/web/src/main/help/en/help/docinfo.html
+++ b/appserver/admingui/web/src/main/help/en/help/docinfo.html
@@ -16,7 +16,7 @@
 
 -->
 
-<h4>GlassFish Server Open Source Edition 5.1</h4>
+<h4>GlassFish Server Open Source Edition 7</h4>
 <p><a name="BEGIN" id="BEGIN"></a></p>
 <p>Web Online Help</p>
 <p></p>
@@ -25,7 +25,7 @@
 <p>This document provides the reference and task online help topics for the web module of the GlassFish Server Administration Console.</p>
 <p><a id="sthref1" name="sthref1"></a></p>
 <hr />
-<p>GlassFish Server Open Source Edition 5.1 Web Online Help</p>
+<p>GlassFish Server Open Source Edition 7 Web Online Help</p>
 
 <p>Copyright &copy; 2010, 2019 Oracle and/or its affiliates. All rights reserved.</p>
  
diff --git a/appserver/ant-tasks/pom.xml b/appserver/ant-tasks/pom.xml
index fc62a03..b9d79dd 100644
--- a/appserver/ant-tasks/pom.xml
+++ b/appserver/ant-tasks/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/ant-tasks/src/main/resources/org/apache/tools/ant/sample-build.xml b/appserver/ant-tasks/src/main/resources/org/apache/tools/ant/sample-build.xml
index fe53580..e2679ed 100644
--- a/appserver/ant-tasks/src/main/resources/org/apache/tools/ant/sample-build.xml
+++ b/appserver/ant-tasks/src/main/resources/org/apache/tools/ant/sample-build.xml
@@ -22,12 +22,12 @@
 
 
     <target name="regular" description="Non-embedded tasks">
-        <glassfish-stop installdir = "/ws/v3/publish/glassfish6/" domain = "domain1" />
-        <glassfish-start installdir = "/ws/v3/publish/glassfish6/" domain = "domain1" />
-        <glassfish-stop installdir = "/ws/v3/publish/glassfish6/" domain = "domain1" />
-        <glassfish-admin installdir = "/ws/v3/publish/glassfish6/" command = "start-domain domain1" />
-    <glassfish-admin installdir = "/ws/v3/publish/glassfish6/" command = "create-http-listener --defaultvs=server --listenerport=9889 --listeneraddress=127.0.0. --listener_id=reg-listener"/>
-        <glassfish-undeploy installdir = "/ws/v3/publish/glassfish6/" name="test"/>
+        <glassfish-stop installdir = "/ws/v3/publish/glassfish7/" domain = "domain1" />
+        <glassfish-start installdir = "/ws/v3/publish/glassfish7/" domain = "domain1" />
+        <glassfish-stop installdir = "/ws/v3/publish/glassfish7/" domain = "domain1" />
+        <glassfish-admin installdir = "/ws/v3/publish/glassfish7/" command = "start-domain domain1" />
+    <glassfish-admin installdir = "/ws/v3/publish/glassfish7/" command = "create-http-listener --defaultvs=server --listenerport=9889 --listeneraddress=127.0.0. --listener_id=reg-listener"/>
+        <glassfish-undeploy installdir = "/ws/v3/publish/glassfish7/" name="test"/>
    </target>
 
    <target name="embedded" description="embedded tasks">
diff --git a/appserver/appclient/client/acc-config/pom.xml b/appserver/appclient/client/acc-config/pom.xml
index a0742d3..57bfe2a 100755
--- a/appserver/appclient/client/acc-config/pom.xml
+++ b/appserver/appclient/client/acc-config/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.appclient</groupId>
         <artifactId>client</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>acc-config</artifactId>
diff --git a/appserver/appclient/client/acc-standalone/pom.xml b/appserver/appclient/client/acc-standalone/pom.xml
index 33aac8e..9c5475b 100755
--- a/appserver/appclient/client/acc-standalone/pom.xml
+++ b/appserver/appclient/client/acc-standalone/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.appclient</groupId>
         <artifactId>client</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/appclient/client/acc/pom.xml b/appserver/appclient/client/acc/pom.xml
index 1f3225a..4c25022 100755
--- a/appserver/appclient/client/acc/pom.xml
+++ b/appserver/appclient/client/acc/pom.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
+    Copyright (c) 2021 Contributors to Eclipse Foundation.
     Copyright (c) 1997, 2021 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
@@ -23,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.main.appclient</groupId>
         <artifactId>client</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>gf-client-module</artifactId>
@@ -258,15 +259,38 @@
             <artifactId>jakarta.annotation-api</artifactId>
         </dependency>
 
+        <!-- jakarta.activation-api.jar -->
+        <dependency>
+            <groupId>jakarta.activation</groupId>
+            <artifactId>jakarta.activation-api</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.eclipse.angus</groupId>
+            <artifactId>angus-activation</artifactId>
+        </dependency>
+
         <!-- jakarta.xml.bind-api.jar -->
         <dependency>
             <groupId>jakarta.xml.bind</groupId>
             <artifactId>jakarta.xml.bind-api</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>com.sun.activation</groupId>
+                    <artifactId>jakarta.activation</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
 
         <dependency>
             <groupId>com.sun.xml.bind</groupId>
             <artifactId>jaxb-osgi</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>com.sun.activation</groupId>
+                    <artifactId>jakarta.activation</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
 
         <!-- webservices-api-osgi.jar -->
@@ -301,8 +325,8 @@
 
         <!-- JSON needs to be available to clients -->
         <dependency>
-            <groupId>org.glassfish</groupId>
-            <artifactId>jakarta.json</artifactId>
+            <groupId>org.eclipse.parsson</groupId>
+            <artifactId>parsson</artifactId>
             <scope>runtime</scope>
         </dependency>
 
@@ -322,6 +346,11 @@
             <artifactId>jakarta.enterprise.cdi-api</artifactId>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <groupId>jakarta.enterprise</groupId>
+            <artifactId>jakarta.enterprise.lang-model</artifactId>
+            <scope>compile</scope>
+        </dependency>
 
         <dependency>
             <groupId>jakarta.authorization</groupId>
diff --git a/appserver/appclient/client/acc/src/main/java/org/glassfish/appclient/client/acc/ACCClassLoader.java b/appserver/appclient/client/acc/src/main/java/org/glassfish/appclient/client/acc/ACCClassLoader.java
index e447aeb..d873fb4 100644
--- a/appserver/appclient/client/acc/src/main/java/org/glassfish/appclient/client/acc/ACCClassLoader.java
+++ b/appserver/appclient/client/acc/src/main/java/org/glassfish/appclient/client/acc/ACCClassLoader.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 1997, 2021 Oracle and/or its affiliates. All rights reserved.
  * Copyright (c) 2022 Contributors to the Eclipse Foundation
  *
@@ -118,7 +119,6 @@
         clientCLDelegate = new ClientClassLoaderDelegate(this);
     }
 
-
     private ACCClassLoader(URL[] urls, ClassLoader parent, boolean shouldTransform) {
         this(urls, parent);
         this.shouldTransform = shouldTransform;
diff --git a/appserver/appclient/client/acc/src/main/java/org/glassfish/appclient/client/acc/ACCJCDIServiceImpl.java b/appserver/appclient/client/acc/src/main/java/org/glassfish/appclient/client/acc/ACCJCDIServiceImpl.java
index 703a8a5..5def474 100644
--- a/appserver/appclient/client/acc/src/main/java/org/glassfish/appclient/client/acc/ACCJCDIServiceImpl.java
+++ b/appserver/appclient/client/acc/src/main/java/org/glassfish/appclient/client/acc/ACCJCDIServiceImpl.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2013, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -16,6 +17,18 @@
 
 package org.glassfish.appclient.client.acc;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Map;
+import java.util.Set;
+
+import javax.naming.NamingException;
+
+import org.jboss.weld.environment.se.Weld;
+import org.jboss.weld.environment.se.WeldContainer;
+import org.jboss.weld.manager.api.WeldManager;
+import org.jvnet.hk2.annotations.Service;
+
 import com.sun.enterprise.container.common.spi.InterceptorInvoker;
 import com.sun.enterprise.container.common.spi.JCDIService;
 import com.sun.enterprise.container.common.spi.JavaEEInterceptorBuilder;
@@ -24,19 +37,14 @@
 import com.sun.enterprise.deployment.EjbDescriptor;
 import com.sun.enterprise.deployment.EjbInterceptor;
 import com.sun.enterprise.deployment.ManagedBeanDescriptor;
-import org.jboss.weld.environment.se.Weld;
-import org.jboss.weld.environment.se.WeldContainer;
-import org.jboss.weld.manager.api.WeldManager;
-import org.jvnet.hk2.annotations.Service;
 
 import jakarta.enterprise.context.spi.CreationalContext;
 import jakarta.enterprise.inject.spi.AnnotatedType;
 import jakarta.enterprise.inject.spi.BeanManager;
 import jakarta.enterprise.inject.spi.InjectionTarget;
+import jakarta.enterprise.inject.spi.InjectionTargetFactory;
 import jakarta.inject.Inject;
-import javax.naming.NamingException;
 import jakarta.servlet.ServletContext;
-import java.util.*;
 
 /**
  * @author <a href="mailto:phil.zampino@oracle.com">Phil Zampino</a>
@@ -44,54 +52,46 @@
 @Service
 public class ACCJCDIServiceImpl implements JCDIService {
 
-    private WeldContainer weldContainer = null;
+    private WeldContainer weldContainer;
 
     @Inject
-    private InjectionManager injectionMgr;
-
-
+    private InjectionManager InjectionManager;
 
     @Override
     public boolean isCurrentModuleJCDIEnabled() {
         return hasBeansXML(Thread.currentThread().getContextClassLoader());
     }
 
-
     @Override
     public boolean isJCDIEnabled(BundleDescriptor bundle) {
         return hasBeansXML(bundle.getClassLoader());
     }
 
-
     @Override
     public boolean isCDIScoped(Class<?> clazz) {
         throw new UnsupportedOperationException("Application Client Container");
     }
 
-
     @Override
     public void setELResolver(ServletContext servletContext) throws NamingException {
         throw new UnsupportedOperationException("Application Client Container");
     }
 
-
     @Override
     public JCDIInjectionContext createManagedObject(Class managedClass, BundleDescriptor bundle) {
         return createManagedObject(managedClass, bundle, true);
     }
 
-
     private <T> T createEEManagedObject(ManagedBeanDescriptor desc) throws Exception {
-        JavaEEInterceptorBuilder interceptorBuilder =
-                                        (JavaEEInterceptorBuilder) desc.getInterceptorBuilder();
+        JavaEEInterceptorBuilder interceptorBuilder = (JavaEEInterceptorBuilder) desc.getInterceptorBuilder();
 
         InterceptorInvoker interceptorInvoker = interceptorBuilder.createInvoker(null);
 
         Object[] interceptorInstances = interceptorInvoker.getInterceptorInstances();
 
         // Inject interceptor instances
-        for(int i = 0; i < interceptorInstances.length; i++) {
-            injectionMgr.injectInstance(interceptorInstances[i], desc.getGlobalJndiName(), false);
+        for (int i = 0; i < interceptorInstances.length; i++) {
+            InjectionManager.injectInstance(interceptorInstances[i], desc.getGlobalJndiName(), false);
         }
 
         interceptorInvoker.invokeAroundConstruct();
@@ -99,7 +99,7 @@
         // This is the managed bean class instance
         T managedBean = (T) interceptorInvoker.getTargetInstance();
 
-        injectionMgr.injectInstance(managedBean, desc);
+        InjectionManager.injectInstance(managedBean, desc);
 
         interceptorInvoker.invokePostConstruct();
 
@@ -108,77 +108,68 @@
         return managedBean;
     }
 
-
     @Override
     @SuppressWarnings("unchecked")
-    public JCDIInjectionContext createManagedObject(Class            managedClass,
-                                                    BundleDescriptor bundle,
-                                                    boolean          invokePostConstruct) {
-        JCDIInjectionContext context = null;
-
+    public JCDIInjectionContext createManagedObject(Class managedClass, BundleDescriptor bundle, boolean invokePostConstruct) {
         Object managedObject = null;
 
         try {
-            managedObject =
-                createEEManagedObject(bundle.getManagedBeanByBeanClass(managedClass.getName()));
+            managedObject = createEEManagedObject(bundle.getManagedBeanByBeanClass(managedClass.getName()));
         } catch (Exception e) {
             e.printStackTrace();
         }
 
-        WeldContainer wc = getWeldContainer();
-        if (wc != null) {
-            BeanManager beanManager = wc.getBeanManager();
-
-            AnnotatedType annotatedType = beanManager.createAnnotatedType(managedClass);
-            InjectionTarget target = beanManager.createInjectionTarget(annotatedType);
-
-            CreationalContext cc = beanManager.createCreationalContext(null);
-
-            target.inject(managedObject, cc);
-
-            if( invokePostConstruct ) {
-                target.postConstruct(managedObject);
-            }
-
-            context = new JCDIInjectionContextImpl(target, cc, managedObject);
+        WeldContainer weldContainer = getWeldContainer();
+        if (weldContainer == null) {
+            return null;
         }
 
-        return context;
-    }
+        BeanManager beanManager = weldContainer.getBeanManager();
 
+        CreationalContext<Object> creationalContext = beanManager.createCreationalContext(null);
+        AnnotatedType<Object> annotatedType = beanManager.createAnnotatedType(managedClass);
+        InjectionTargetFactory<Object> injectionTargetFactory = beanManager.getInjectionTargetFactory(annotatedType);
+        InjectionTarget<Object> target = injectionTargetFactory.createInjectionTarget(null);
+
+        target.inject(managedObject, creationalContext);
+
+        if (invokePostConstruct) {
+            target.postConstruct(managedObject);
+        }
+
+        return new JCDIInjectionContextImpl(target, creationalContext, managedObject);
+
+    }
 
     @Override
     @SuppressWarnings("unchecked")
     public void injectManagedObject(Object managedObject, BundleDescriptor bundle) {
-        WeldContainer wc = getWeldContainer();
-
-        if (wc != null) {
-            BeanManager beanManager = wc.getBeanManager();
-
-            AnnotatedType annotatedType = beanManager.createAnnotatedType(managedObject.getClass());
-            InjectionTarget target = beanManager.createInjectionTarget(annotatedType);
-
-            CreationalContext cc = beanManager.createCreationalContext(null);
-
-            target.inject(managedObject, cc);
+        WeldContainer weldContainer = getWeldContainer();
+        if (weldContainer == null) {
+            return;
         }
+
+        BeanManager beanManager = weldContainer.getBeanManager();
+
+        CreationalContext<Object> creationalContext = beanManager.createCreationalContext(null);
+        AnnotatedType<Object> annotatedType = (AnnotatedType<Object>) beanManager.createAnnotatedType(managedObject.getClass());
+        InjectionTargetFactory<Object> injectionTargetFactory = beanManager.getInjectionTargetFactory(annotatedType);
+        InjectionTarget<Object> target = injectionTargetFactory.createInjectionTarget(null);
+
+        target.inject(managedObject, creationalContext);
     }
 
-
     @Override
-    public <T> T createInterceptorInstance( Class<T> interceptorClass,
-                                     EjbDescriptor ejbDesc,
-                                     JCDIService.JCDIInjectionContext ejbContext,
-                                     Set<EjbInterceptor> ejbInterceptors ) {
+    public <T> T createInterceptorInstance(Class<T> interceptorClass, EjbDescriptor ejbDesc, JCDIService.JCDIInjectionContext ejbContext, Set<EjbInterceptor> ejbInterceptors) {
         T interceptorInstance = null;
 
-        WeldContainer wc = getWeldContainer();
-        if (wc != null) {
-            BeanManager beanManager = wc.getBeanManager();
+        WeldContainer weldContainer = getWeldContainer();
+        if (weldContainer != null) {
+            BeanManager beanManager = weldContainer.getBeanManager();
 
             AnnotatedType annotatedType = beanManager.createAnnotatedType(interceptorClass);
-            InjectionTarget target =
-                ((WeldManager) beanManager).getInjectionTargetFactory(annotatedType).createInterceptorInjectionTarget();
+            InjectionTarget target = ((WeldManager) beanManager).getInjectionTargetFactory(annotatedType)
+                    .createInterceptorInjectionTarget();
 
             CreationalContext cc = beanManager.createCreationalContext(null);
 
@@ -189,13 +180,11 @@
         return interceptorInstance;
     }
 
-
     @Override
     public <T> JCDIInjectionContext<T> createJCDIInjectionContext(EjbDescriptor ejbDesc, Map<Class, Object> ejbInfo) {
         return createJCDIInjectionContext(ejbDesc, null, null);
     }
 
-
     @Override
     public <T> JCDIInjectionContext<T> createJCDIInjectionContext(EjbDescriptor ejbDesc, T instance, Map<Class, Object> ejbInfo) {
         throw new UnsupportedOperationException("Application Client Container");
@@ -206,13 +195,11 @@
         return new JCDIInjectionContextImpl();
     }
 
-
     @Override
     public void injectEJBInstance(JCDIInjectionContext injectionCtx) {
         throw new UnsupportedOperationException("Application Client Container");
     }
 
-
     private WeldContainer getWeldContainer() {
         if (weldContainer == null) {
             try {
@@ -224,12 +211,10 @@
         return weldContainer;
     }
 
-
-    private boolean hasBeansXML(ClassLoader cl) {
-        return (cl.getResource("META-INF/beans.xml") != null);
+    private boolean hasBeansXML(ClassLoader classLoader) {
+        return classLoader.getResource("META-INF/beans.xml") != null;
     }
 
-
     private static class JCDIInjectionContextImpl implements JCDIInjectionContext {
 
         InjectionTarget it;
@@ -245,6 +230,7 @@
             this.instance = i;
         }
 
+        @Override
         public Object getInstance() {
             return instance;
         }
@@ -254,10 +240,11 @@
             this.instance = instance;
         }
 
+        @Override
         @SuppressWarnings("unchecked")
         public void cleanup(boolean callPreDestroy) {
 
-            if( callPreDestroy ) {
+            if (callPreDestroy) {
                 it.preDestroy(instance);
             }
 
@@ -285,13 +272,14 @@
             this.cc = creationalContext;
         }
 
-        public void addDependentContext( JCDIInjectionContext dependentContext ) {
+        @Override
+        public void addDependentContext(JCDIInjectionContext dependentContext) {
             // nothing for now
         }
 
         @Override
         public Collection<JCDIInjectionContext> getDependentContexts() {
-            return new ArrayList<JCDIInjectionContext>();
+            return new ArrayList<>();
         }
 
         @Override
@@ -301,5 +289,4 @@
         }
     }
 
-
 }
diff --git a/appserver/appclient/client/acc/src/main/java/org/glassfish/appclient/client/acc/ACCLogger.java b/appserver/appclient/client/acc/src/main/java/org/glassfish/appclient/client/acc/ACCLogger.java
index 18dc72f..e937e6f 100644
--- a/appserver/appclient/client/acc/src/main/java/org/glassfish/appclient/client/acc/ACCLogger.java
+++ b/appserver/appclient/client/acc/src/main/java/org/glassfish/appclient/client/acc/ACCLogger.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -22,7 +23,6 @@
 import java.security.PrivilegedAction;
 import java.text.MessageFormat;
 import java.util.Enumeration;
-import java.util.Locale;
 import java.util.ResourceBundle;
 import java.util.logging.FileHandler;
 import java.util.logging.Handler;
@@ -30,22 +30,23 @@
 import java.util.logging.LogManager;
 import java.util.logging.Logger;
 import java.util.logging.SimpleFormatter;
+
 import org.glassfish.appclient.client.acc.config.LogService;
 
 /**
- * Logger that conforms to the glassfish-acc.xml config file settings for logging
- * while, in some cases, also adjusting other loggers.
+ * Logger that conforms to the glassfish-acc.xml config file settings for logging while, in some cases, also adjusting
+ * other loggers.
+ *
  * <p>
- * Historically the logging level specified in the glassfish-acc.xml is used to set the level
- * for all loggers.  Beginning with v3, which supports conventional log settings
- * via logging.properties as well, we make sure that each logger's level is
- * at least as detailed as the setting in the config file.
+ * Historically the logging level specified in the glassfish-acc.xml is used to set the level for all loggers. Beginning
+ * with v3, which supports conventional log settings via logging.properties as well, we make sure that each logger's
+ * level is at least as detailed as the setting in the config file.
+ *
  * <p>
- * Also, in prior versions if the user specified a logging file in the
- * glassfish-acc.xml config file then all pre-existing handlers would be removed,
- * essentially replaced with a single handler to send output to the user-specified
- * file.  Beginning with v3 the ACC augments - rather than replaces - existing
- * handlers if the settings in glassfish-acc.xml specify a file.
+ * Also, in prior versions if the user specified a logging file in the glassfish-acc.xml config file then all
+ * pre-existing handlers would be removed, essentially replaced with a single handler to send output to the
+ * user-specified file. Beginning with v3 the ACC augments - rather than replaces - existing handlers if the settings in
+ * glassfish-acc.xml specify a file.
  *
  * @author tjquinn
  */
@@ -63,48 +64,41 @@
     private void init(final LogService logService) throws IOException {
         final Level level = chooseLevel(logService);
         final Handler configuredFileHandler = createHandler(logService, level);
-        final ResourceBundle rb = ResourceBundle.getBundle(
-                ACCLogger.class.getPackage().getName() + ".LogStrings");
+        final ResourceBundle rb = ResourceBundle.getBundle(ACCLogger.class.getPackage().getName() + ".LogStrings");
 
         /*
          * Set existing loggers to at least the configured level.
          */
-        for (Enumeration<String> names =
-                LogManager.getLogManager().getLoggerNames();
-               names.hasMoreElements(); ) {
+        for (Enumeration<String> names = LogManager.getLogManager().getLoggerNames(); names.hasMoreElements();) {
             final String loggerName = names.nextElement();
             final Logger logger = LogManager.getLogManager().getLogger(loggerName);
             if (logger == null) {
-                final String msg = MessageFormat.format(
-                        rb.getString("appclient.nullLogger"),
-                        loggerName);
+                final String msg = MessageFormat.format(rb.getString("appclient.nullLogger"), loggerName);
                 if (level.intValue() <= Level.CONFIG.intValue()) {
                     System.err.println(msg);
                 }
             } else {
-                reviseLogger(
-                        logger,
-                        level,
-                        configuredFileHandler);
+                reviseLogger(logger, level, configuredFileHandler);
             }
         }
     }
 
     /**
-     * Returns the logging level to use, checking the configured log level and
-     * using the default if the configured value is absent or invalid.
+     * Returns the logging level to use, checking the configured log level and using the default if the configured value is
+     * absent or invalid.
+     *
      * @param configLevelText configured level name
      * @return log level to use for all logging in the ACC
      */
     private static Level chooseLevel(final LogService logService) {
         Level level = DEFAULT_ACC_LOG_LEVEL;
-        if (logService != null ) {
+        if (logService != null) {
             String configLevelText = logService.getLevel();
-            if (configLevelText!= null &&  ( ! configLevelText.equals(""))) {
+            if (configLevelText != null && (!configLevelText.equals(""))) {
                 try {
                     level = Level.parse(configLevelText);
                 } catch (IllegalArgumentException e) {
-                    //ignore - use the previously-assigned default - and log it !
+                    // ignore - use the previously-assigned default - and log it !
                     Logger.getLogger(ACCLogger.class.getName()).warning("Logger.Level = " + configLevelText + "??");
                 }
             }
@@ -113,8 +107,8 @@
     }
 
     /**
-     * Creates a logging handler to send logging to the specified file, using
-     * the indicated level.
+     * Creates a logging handler to send logging to the specified file, using the indicated level.
+     *
      * @param filePath path to the log file to which to log
      * @param level level at which to log
      * @return logging Handler if filePath is specified and valid; null otherwise
@@ -133,20 +127,18 @@
         return handler;
     }
 
-    private static void reviseLogger(final Logger logger,
-            final Level level,
-            final Handler handler) {
-            AccessController.doPrivileged(
-                    new PrivilegedAction() {
-                        public Object run() {
-                            if ( ! logger.isLoggable(level)) {
-                                logger.setLevel(level);
-                            }
-                            if (handler != null) {
-                                logger.addHandler(handler);
-                            }
-                            return null;
-                        }
-                    });
-        }
+    private static void reviseLogger(final Logger logger, final Level level, final Handler handler) {
+        AccessController.doPrivileged(new PrivilegedAction() {
+            @Override
+            public Object run() {
+                if (!logger.isLoggable(level)) {
+                    logger.setLevel(level);
+                }
+                if (handler != null) {
+                    logger.addHandler(handler);
+                }
+                return null;
+            }
+        });
     }
+}
diff --git a/appserver/appclient/client/acc/src/main/java/org/glassfish/appclient/client/acc/ProviderContainerContractInfoImpl.java b/appserver/appclient/client/acc/src/main/java/org/glassfish/appclient/client/acc/ProviderContainerContractInfoImpl.java
index fb2300a..951303f 100644
--- a/appserver/appclient/client/acc/src/main/java/org/glassfish/appclient/client/acc/ProviderContainerContractInfoImpl.java
+++ b/appserver/appclient/client/acc/src/main/java/org/glassfish/appclient/client/acc/ProviderContainerContractInfoImpl.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to the Eclipse Foundation.
  * Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -16,7 +17,6 @@
 
 package org.glassfish.appclient.client.acc;
 
-import com.sun.appserv.connectors.internal.api.ConnectorRuntime;
 import java.lang.instrument.ClassFileTransformer;
 import java.lang.instrument.IllegalClassFormatException;
 import java.lang.instrument.Instrumentation;
@@ -26,14 +26,18 @@
 import java.security.ProtectionDomain;
 import java.util.Collection;
 import java.util.HashSet;
-import jakarta.persistence.EntityManagerFactory;
-import jakarta.persistence.spi.ClassTransformer;
-import jakarta.validation.ValidatorFactory;
 
 import org.glassfish.api.deployment.DeploymentContext;
 import org.glassfish.deployment.common.RootDeploymentDescriptor;
 import org.glassfish.persistence.jpa.ProviderContainerContractInfoBase;
 
+import com.sun.appserv.connectors.internal.api.ConnectorRuntime;
+
+import jakarta.persistence.EntityManagerFactory;
+import jakarta.persistence.spi.ClassTransformer;
+import jakarta.persistence.spi.TransformerException;
+import jakarta.validation.ValidatorFactory;
+
 /**
  * Implements the internal GlassFish interface which all persistence provider
  * containers must.
@@ -67,10 +71,12 @@
         this.applicationLocation = applicationLocation;
     }
 
+    @Override
     public ClassLoader getClassLoader() {
         return classLoader;
     }
 
+    @Override
     public ClassLoader getTempClassloader() {
         return AccessController.doPrivileged(new PrivilegedAction<URLClassLoader>() {
 
@@ -82,6 +88,7 @@
             });
     }
 
+    @Override
     public void addTransformer(ClassTransformer transformer) {
         final TransformerWrapper tw = new TransformerWrapper(transformer, classLoader);
         if (inst != null) {
@@ -91,29 +98,35 @@
         }
     }
 
+    @Override
     public String getApplicationLocation() {
         return applicationLocation;
     }
 
+    @Override
     public ValidatorFactory getValidatorFactory() {
         // TODO: Need to implement this correctly.
         return null;
     }
 
     // TODO: remove after persistence is refactored.
+    @Override
     public DeploymentContext getDeploymentContext() {
         return null;
     }
 
+    @Override
     public boolean isJava2DBRequired() {
         // Returns whether Java2DB is required or not. For an AppClient it is always false
         return false;
     }
 
+    @Override
     public void registerEMF(String unitName, String persistenceRootUri, RootDeploymentDescriptor containingBundle, EntityManagerFactory emf) {
         emfs.add(emf);
     }
 
+    @Override
     public String getJTADataSourceOverride() {
         // Returns whether JTA datasource is overridden. For an appclient it is never the case.
         return null;
@@ -133,21 +146,24 @@
         private final ClassTransformer persistenceTransformer;
         private final ClassLoader classLoader;
 
-        TransformerWrapper(final ClassTransformer persistenceTransformer,
-                final ClassLoader classLoader) {
+        TransformerWrapper(final ClassTransformer persistenceTransformer, final ClassLoader classLoader) {
             this.persistenceTransformer = persistenceTransformer;
             this.classLoader = classLoader;
         }
 
+        @Override
         public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException {
             /*
              * Do not even bother running the transformer unless the loader
              * loading the class is the ACC's class loader.
              */
-            return (loader.equals(classLoader) ?
-                persistenceTransformer.transform(loader, className,
-                    classBeingRedefined, protectionDomain, classfileBuffer)
-                : null);
+            try {
+                return loader.equals(classLoader) ?
+                    persistenceTransformer.transform(loader, className, classBeingRedefined, protectionDomain, classfileBuffer) :
+                    null;
+            } catch (TransformerException e) {
+                throw (IllegalClassFormatException) (new IllegalClassFormatException().initCause(e));
+            }
         }
     }
 
diff --git a/appserver/appclient/client/acc/src/test/java/org/glassfish/appclient/client/CLIBootstrapTest.java b/appserver/appclient/client/acc/src/test/java/org/glassfish/appclient/client/CLIBootstrapTest.java
index 5649739..b00174a 100644
--- a/appserver/appclient/client/acc/src/test/java/org/glassfish/appclient/client/CLIBootstrapTest.java
+++ b/appserver/appclient/client/acc/src/test/java/org/glassfish/appclient/client/CLIBootstrapTest.java
@@ -44,7 +44,7 @@
         System.setProperty(CLIBootstrap.ENV_VAR_PROP_PREFIX + "JAVA_HOME", "");
         System.setProperty(CLIBootstrap.ENV_VAR_PROP_PREFIX + "PATH", System.getenv("PATH"));
         System.setProperty(CLIBootstrap.ENV_VAR_PROP_PREFIX + "_AS_INSTALL",
-            "/Users/Tim/asgroup/v3/H/publish/glassfish6/glassfish");
+            "/Users/Tim/asgroup/v3/H/publish/glassfish7/glassfish");
     }
 
     @Test
diff --git a/appserver/appclient/client/appclient-scripts/pom.xml b/appserver/appclient/client/appclient-scripts/pom.xml
index 4a28fa6..944a33a 100644
--- a/appserver/appclient/client/appclient-scripts/pom.xml
+++ b/appserver/appclient/client/appclient-scripts/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.appclient</groupId>
         <artifactId>client</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>appclient-scripts</artifactId>
@@ -49,5 +49,6 @@
       the transitive dependency handling in Maven.
     -->
     <packaging>distribution-fragment</packaging>
+
     <name>GlassFish appclient scripts</name>
 </project>
diff --git a/appserver/appclient/client/pom.xml b/appserver/appclient/client/pom.xml
index a7a2938..f5ec747 100755
--- a/appserver/appclient/client/pom.xml
+++ b/appserver/appclient/client/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>appclient</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.main.appclient</groupId>
diff --git a/appserver/appclient/pom.xml b/appserver/appclient/pom.xml
index 95d043e..bb9e276 100755
--- a/appserver/appclient/pom.xml
+++ b/appserver/appclient/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>appclient</artifactId>
diff --git a/appserver/appclient/server/connector/pom.xml b/appserver/appclient/server/connector/pom.xml
index 40fd19a..7cd60e0 100644
--- a/appserver/appclient/server/connector/pom.xml
+++ b/appserver/appclient/server/connector/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.appclient</groupId>
         <artifactId>server</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.main.appclient.server</groupId>
diff --git a/appserver/appclient/server/core/pom.xml b/appserver/appclient/server/core/pom.xml
index b035a48..3e7e713 100644
--- a/appserver/appclient/server/core/pom.xml
+++ b/appserver/appclient/server/core/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.appclient</groupId>
         <artifactId>server</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.main.appclient.server</groupId>
diff --git a/appserver/appclient/server/pom.xml b/appserver/appclient/server/pom.xml
index 4b25c26..565a34c 100755
--- a/appserver/appclient/server/pom.xml
+++ b/appserver/appclient/server/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>appclient</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/batch/batch-database/pom.xml b/appserver/batch/batch-database/pom.xml
index 8b510fd..ea2338a 100644
--- a/appserver/batch/batch-database/pom.xml
+++ b/appserver/batch/batch-database/pom.xml
@@ -26,7 +26,7 @@
     <parent>
         <groupId>org.glassfish.main.batch</groupId>
         <artifactId>batch</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>batch-databases</artifactId>
diff --git a/appserver/batch/glassfish-batch-commands/pom.xml b/appserver/batch/glassfish-batch-commands/pom.xml
index 5c4db0a..f15eb33 100755
--- a/appserver/batch/glassfish-batch-commands/pom.xml
+++ b/appserver/batch/glassfish-batch-commands/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.batch</groupId>
         <artifactId>batch</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/batch/glassfish-batch-connector/pom.xml b/appserver/batch/glassfish-batch-connector/pom.xml
index 1429368..885938e 100755
--- a/appserver/batch/glassfish-batch-connector/pom.xml
+++ b/appserver/batch/glassfish-batch-connector/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.batch</groupId>
         <artifactId>batch</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/batch/pom.xml b/appserver/batch/pom.xml
index ed28b55..4e939ab 100755
--- a/appserver/batch/pom.xml
+++ b/appserver/batch/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/common/amx-javaee/pom.xml b/appserver/common/amx-javaee/pom.xml
index a087f58..33cdedd 100755
--- a/appserver/common/amx-javaee/pom.xml
+++ b/appserver/common/amx-javaee/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.common</groupId>
         <artifactId>common</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>amx-javaee</artifactId>
diff --git a/appserver/common/annotation-framework/pom.xml b/appserver/common/annotation-framework/pom.xml
index ee105f3..b988a81 100755
--- a/appserver/common/annotation-framework/pom.xml
+++ b/appserver/common/annotation-framework/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.common</groupId>
         <artifactId>common</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>annotation-framework</artifactId>
diff --git a/appserver/common/annotation-framework/src/main/java/org/glassfish/apf/skip-annotation-class-list b/appserver/common/annotation-framework/src/main/java/org/glassfish/apf/skip-annotation-class-list
index bc3ddb4..68354b7 100644
--- a/appserver/common/annotation-framework/src/main/java/org/glassfish/apf/skip-annotation-class-list
+++ b/appserver/common/annotation-framework/src/main/java/org/glassfish/apf/skip-annotation-class-list
@@ -1,4 +1,4 @@
 jakarta.servlet.GenericServlet
 jakarta.servlet.http.HttpServlet
-org.apache.jasper.servlet.JspServlet
+org.glassfish.wasp.servlet.JspServlet
 org.apache.catalina.servlets.DefaultServlet
diff --git a/appserver/common/container-common/pom.xml b/appserver/common/container-common/pom.xml
index 4ba6ec8..817d1b3 100755
--- a/appserver/common/container-common/pom.xml
+++ b/appserver/common/container-common/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.common</groupId>
         <artifactId>common</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
@@ -88,8 +88,12 @@
             <version>${project.version}</version>
         </dependency>
         <dependency>
-            <groupId>com.sun.mail</groupId>
-            <artifactId>jakarta.mail</artifactId>
+            <groupId>jakarta.mail</groupId>
+            <artifactId>jakarta.mail-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.angus</groupId>
+            <artifactId>angus-mail</artifactId>
         </dependency>
         <dependency>
             <groupId>org.glassfish.main.security</groupId>
diff --git a/appserver/common/glassfish-ee-api/pom.xml b/appserver/common/glassfish-ee-api/pom.xml
index 5cd0fe0..9124e0f 100644
--- a/appserver/common/glassfish-ee-api/pom.xml
+++ b/appserver/common/glassfish-ee-api/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.common</groupId>
         <artifactId>common</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>glassfish-ee-api</artifactId>
diff --git a/appserver/common/glassfish-naming/pom.xml b/appserver/common/glassfish-naming/pom.xml
index faa0fe6..f85ab6b 100755
--- a/appserver/common/glassfish-naming/pom.xml
+++ b/appserver/common/glassfish-naming/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.common</groupId>
         <artifactId>common</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>glassfish-naming</artifactId>
diff --git a/appserver/common/pom.xml b/appserver/common/pom.xml
index ea18d4d..c35a5af 100755
--- a/appserver/common/pom.xml
+++ b/appserver/common/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/common/stats77/pom.xml b/appserver/common/stats77/pom.xml
index 02ca374..26e3f07 100755
--- a/appserver/common/stats77/pom.xml
+++ b/appserver/common/stats77/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.common</groupId>
         <artifactId>common</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>stats77</artifactId>
diff --git a/appserver/concurrent/concurrent-connector/pom.xml b/appserver/concurrent/concurrent-connector/pom.xml
index 4cd0400..920e0b2 100644
--- a/appserver/concurrent/concurrent-connector/pom.xml
+++ b/appserver/concurrent/concurrent-connector/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.concurrent</groupId>
         <artifactId>concurrent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>concurrent-connector</artifactId>
diff --git a/appserver/concurrent/concurrent-impl/pom.xml b/appserver/concurrent/concurrent-impl/pom.xml
index efe10d8..80d417b 100644
--- a/appserver/concurrent/concurrent-impl/pom.xml
+++ b/appserver/concurrent/concurrent-impl/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.concurrent</groupId>
         <artifactId>concurrent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>concurrent-impl</artifactId>
diff --git a/appserver/concurrent/pom.xml b/appserver/concurrent/pom.xml
index c2605f6..f451271 100755
--- a/appserver/concurrent/pom.xml
+++ b/appserver/concurrent/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.main.concurrent</groupId>
diff --git a/appserver/connectors/admin/pom.xml b/appserver/connectors/admin/pom.xml
index f9cc6f6..45c9a23 100644
--- a/appserver/connectors/admin/pom.xml
+++ b/appserver/connectors/admin/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.connectors</groupId>
         <artifactId>connectors</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>connectors-admin</artifactId>
@@ -105,8 +105,8 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.glassfish</groupId>
-            <artifactId>jakarta.el</artifactId>
+            <groupId>org.glassfish.expressly</groupId>
+            <artifactId>expressly</artifactId>
             <scope>test</scope>
         </dependency>
     </dependencies>
diff --git a/appserver/connectors/connectors-connector/pom.xml b/appserver/connectors/connectors-connector/pom.xml
index e261e89..7789b81 100644
--- a/appserver/connectors/connectors-connector/pom.xml
+++ b/appserver/connectors/connectors-connector/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.connectors</groupId>
         <artifactId>connectors</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>gf-connectors-connector</artifactId>
diff --git a/appserver/connectors/connectors-inbound-runtime/pom.xml b/appserver/connectors/connectors-inbound-runtime/pom.xml
index 31f5e68..fbf63bc 100644
--- a/appserver/connectors/connectors-inbound-runtime/pom.xml
+++ b/appserver/connectors/connectors-inbound-runtime/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.connectors</groupId>
         <artifactId>connectors</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/connectors/connectors-internal-api/pom.xml b/appserver/connectors/connectors-internal-api/pom.xml
index 2f8eaca..422bfb3 100755
--- a/appserver/connectors/connectors-internal-api/pom.xml
+++ b/appserver/connectors/connectors-internal-api/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.connectors</groupId>
         <artifactId>connectors</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/connectors/connectors-runtime/pom.xml b/appserver/connectors/connectors-runtime/pom.xml
index 767ab23..675ccf0 100644
--- a/appserver/connectors/connectors-runtime/pom.xml
+++ b/appserver/connectors/connectors-runtime/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.connectors</groupId>
         <artifactId>connectors</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/connectors/descriptors/pom.xml b/appserver/connectors/descriptors/pom.xml
index 7b77ce2..697dbe3 100644
--- a/appserver/connectors/descriptors/pom.xml
+++ b/appserver/connectors/descriptors/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.connectors</groupId>
         <artifactId>connectors</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>descriptors</artifactId>
diff --git a/appserver/connectors/pom.xml b/appserver/connectors/pom.xml
index 598e516..5d7a9b4 100644
--- a/appserver/connectors/pom.xml
+++ b/appserver/connectors/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.main.connectors</groupId>
diff --git a/appserver/connectors/work-management/pom.xml b/appserver/connectors/work-management/pom.xml
index 56355ea..739a1aa 100644
--- a/appserver/connectors/work-management/pom.xml
+++ b/appserver/connectors/work-management/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.connectors</groupId>
         <artifactId>connectors</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>work-management</artifactId>
diff --git a/appserver/core/api-exporter-fragment/pom.xml b/appserver/core/api-exporter-fragment/pom.xml
index ecb16f2..a7e5234 100755
--- a/appserver/core/api-exporter-fragment/pom.xml
+++ b/appserver/core/api-exporter-fragment/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.core</groupId>
         <artifactId>core</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
@@ -66,6 +66,7 @@
                             <regex>\s+</regex>
                             <replacement> </replacement>
                             <value>
+                                jakarta.activation;
                                 jakarta.annotation;
                                 jakarta.annotation.security;
                                 jakarta.annotation.sql;
diff --git a/appserver/core/javaee-kernel/pom.xml b/appserver/core/javaee-kernel/pom.xml
index 00d84ee..70855c4 100755
--- a/appserver/core/javaee-kernel/pom.xml
+++ b/appserver/core/javaee-kernel/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.core</groupId>
         <artifactId>core</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/core/pom.xml b/appserver/core/pom.xml
index f93fdd2..60ffe7d 100644
--- a/appserver/core/pom.xml
+++ b/appserver/core/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/deployment/dol/pom.xml b/appserver/deployment/dol/pom.xml
index ee06cc3..411b7e2 100755
--- a/appserver/deployment/dol/pom.xml
+++ b/appserver/deployment/dol/pom.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
+    Copyright (c) 2021 Contributors to Eclipse Foundation.
     Copyright (c) 1997, 2021 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
@@ -23,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.main.deployment</groupId>
         <artifactId>deployment</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>dol</artifactId>
@@ -103,6 +104,10 @@
             <groupId>jakarta.enterprise</groupId>
             <artifactId>jakarta.enterprise.cdi-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>jakarta.enterprise</groupId>
+            <artifactId>jakarta.enterprise.lang-model</artifactId>
+        </dependency>
 
         <dependency>
             <groupId>org.glassfish.main.common</groupId>
diff --git a/appserver/deployment/dtds/pom.xml b/appserver/deployment/dtds/pom.xml
index 8c82eb4..351f4e8 100644
--- a/appserver/deployment/dtds/pom.xml
+++ b/appserver/deployment/dtds/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.deployment</groupId>
         <artifactId>deployment</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>appserver-dtds</artifactId>
diff --git a/appserver/deployment/javaee-core/pom.xml b/appserver/deployment/javaee-core/pom.xml
index acb5ec8..1f0cd82 100755
--- a/appserver/deployment/javaee-core/pom.xml
+++ b/appserver/deployment/javaee-core/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.deployment</groupId>
         <artifactId>deployment</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/deployment/javaee-full/pom.xml b/appserver/deployment/javaee-full/pom.xml
index ced3dfb..adad910 100755
--- a/appserver/deployment/javaee-full/pom.xml
+++ b/appserver/deployment/javaee-full/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.deployment</groupId>
         <artifactId>deployment</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/deployment/pom.xml b/appserver/deployment/pom.xml
index fb90bfc..0d4de89 100755
--- a/appserver/deployment/pom.xml
+++ b/appserver/deployment/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/deployment/schemas/pom.xml b/appserver/deployment/schemas/pom.xml
index 2e4db47..4cd29ee 100644
--- a/appserver/deployment/schemas/pom.xml
+++ b/appserver/deployment/schemas/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.deployment</groupId>
         <artifactId>deployment</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>appserver-schemas</artifactId>
diff --git a/appserver/deployment/schemas/src/main/resources/glassfish/lib/schemas/application-client_10.xsd b/appserver/deployment/schemas/src/main/resources/glassfish/lib/schemas/application-client_10.xsd
new file mode 100644
index 0000000..6e95b0b
--- /dev/null
+++ b/appserver/deployment/schemas/src/main/resources/glassfish/lib/schemas/application-client_10.xsd
@@ -0,0 +1,307 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
+            targetNamespace="https://jakarta.ee/xml/ns/jakartaee"
+            xmlns:jakartaee="https://jakarta.ee/xml/ns/jakartaee"
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+            elementFormDefault="qualified"
+            attributeFormDefault="unqualified"
+            version="10">
+  <xsd:annotation>
+    <xsd:documentation>
+
+      Copyright (c) 2009, 2021 Oracle and/or its affiliates. All rights reserved.
+      
+      This program and the accompanying materials are made available under the
+      terms of the Eclipse Public License v. 2.0, which is available at
+      http://www.eclipse.org/legal/epl-2.0.
+      
+      This Source Code may also be made available under the following Secondary
+      Licenses when the conditions for such availability set forth in the
+      Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+      version 2 with the GNU Classpath Exception, which is available at
+      https://www.gnu.org/software/classpath/license.html.
+      
+      SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      <![CDATA[
+      This is the XML Schema for the application client 10
+      deployment descriptor.  The deployment descriptor must
+      be named "META-INF/application-client.xml" in the
+      application client's jar file.  All application client
+      deployment descriptors must indicate the application
+      client schema by using the Jakarta EE namespace:
+      
+      https://jakarta.ee/xml/ns/jakartaee
+      
+      and indicate the version of the schema by
+      using the version element as shown below:
+      
+      <application-client xmlns="https://jakarta.ee/xml/ns/jakartaee"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee 
+      	https://jakarta.ee/xml/ns/jakartaee/application-client_10.xsd"
+      version="10">
+      ...
+      </application-client>
+      
+      The instance documents may indicate the published version of
+      the schema using the xsi:schemaLocation attribute for Jakarta EE
+      namespace with the following location:
+      
+      https://jakarta.ee/xml/ns/jakartaee/application-client_10.xsd
+      
+      ]]>
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+
+      The following conventions apply to all Jakarta EE
+      deployment descriptor elements unless indicated otherwise.
+      
+      - In elements that specify a pathname to a file within the
+      same JAR file, relative filenames (i.e., those not
+      starting with "/") are considered relative to the root of
+      the JAR file's namespace.  Absolute filenames (i.e., those
+      starting with "/") also specify names in the root of the
+      JAR file's namespace.  In general, relative names are
+      preferred.  The exception is .war files where absolute
+      names are preferred for consistency with the Servlet API.
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:include schemaLocation="jakartaee_10.xsd"/>
+
+
+<!-- **************************************************** -->
+
+  <xsd:element name="application-client"
+               type="jakartaee:application-clientType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The application-client element is the root element of an
+        application client deployment descriptor.  The application
+        client deployment descriptor describes the enterprise bean 
+        components and external resources referenced by the 
+        application client.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:unique name="env-entry-name-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The env-entry-name element contains the name of an
+          application client's environment entry.  The name is a JNDI
+          name relative to the java:comp/env context.  The name must
+          be unique within an application client.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:env-entry"/>
+      <xsd:field xpath="jakartaee:env-entry-name"/>
+    </xsd:unique>
+    <xsd:unique name="ejb-ref-name-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The ejb-ref-name element contains the name of an enterprise bean 
+          reference. The enterprise bean reference is an entry 
+          in the application client's environment and is relative to the
+          java:comp/env context. The name must be unique within the
+          application client.
+          
+          It is recommended that name is prefixed with "ejb/".
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:ejb-ref"/>
+      <xsd:field xpath="jakartaee:ejb-ref-name"/>
+    </xsd:unique>
+    <xsd:unique name="res-ref-name-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The res-ref-name element specifies the name of a
+          resource manager connection factory reference.The name
+          is a JNDI name relative to the java:comp/env context.
+          The name must be unique within an application client.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:resource-ref"/>
+      <xsd:field xpath="jakartaee:res-ref-name"/>
+    </xsd:unique>
+    <xsd:unique name="resource-env-ref-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The resource-env-ref-name element specifies the name of
+          a resource environment reference; its value is the
+          environment entry name used in the application client
+          code. The name is a JNDI name relative to the
+          java:comp/env context and must be unique within an
+          application client.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:resource-env-ref"/>
+      <xsd:field xpath="jakartaee:resource-env-ref-name"/>
+    </xsd:unique>
+    <xsd:unique name="message-destination-ref-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The message-destination-ref-name element specifies the
+          name of a message destination reference; its value is
+          the message destination reference name used in the
+          application client code. The name is a JNDI name
+          relative to the java:comp/env context and must be unique
+          within an application client.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:message-destination-ref"/>
+      <xsd:field xpath="jakartaee:message-destination-ref-name"/>
+    </xsd:unique>
+  </xsd:element>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="application-clientType">
+    <xsd:sequence>
+      <xsd:element name="module-name"
+                   type="jakartaee:string"
+                   minOccurs="0"/>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="env-entry"
+                   type="jakartaee:env-entryType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="ejb-ref"
+                   type="jakartaee:ejb-refType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:group ref="jakartaee:service-refGroup"/>
+      <xsd:element name="resource-ref"
+                   type="jakartaee:resource-refType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="resource-env-ref"
+                   type="jakartaee:resource-env-refType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="message-destination-ref"
+                   type="jakartaee:message-destination-refType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="persistence-unit-ref"
+                   type="jakartaee:persistence-unit-refType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="post-construct"
+                   type="jakartaee:lifecycle-callbackType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="pre-destroy"
+                   type="jakartaee:lifecycle-callbackType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="callback-handler"
+                   type="jakartaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The callback-handler element names a class provided by
+            the application.  The class must have a no args
+            constructor and must implement the
+            jakarta.security.auth.callback.CallbackHandler
+            interface.  The class will be instantiated by the
+            application client container and used by the container
+            to collect authentication information from the user.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="message-destination"
+                   type="jakartaee:message-destinationType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="data-source"
+                   type="jakartaee:data-sourceType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="jms-connection-factory"
+                   type="jakartaee:jms-connection-factoryType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="jms-destination"
+                   type="jakartaee:jms-destinationType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="mail-session"
+                   type="jakartaee:mail-sessionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="connection-factory"
+                   type="jakartaee:connection-factory-resourceType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="administered-object"
+                   type="jakartaee:administered-objectType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="version"
+                   type="jakartaee:dewey-versionType"
+                   fixed="10"
+                   use="required">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The required value for the version is 10.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+    </xsd:attribute>
+    <xsd:attribute name="metadata-complete"
+                   type="xsd:boolean">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The metadata-complete attribute defines whether this
+          deployment descriptor and other related deployment
+          descriptors for this module (e.g., web service
+          descriptors) are complete, or whether the class
+          files available to this module and packaged with
+          this application should be examined for annotations
+          that specify deployment information.
+          
+          If metadata-complete is set to "true", the deployment
+          tool must ignore any annotations that specify deployment
+          information, which might be present in the class files
+          of the application.
+          
+          If metadata-complete is not specified or is set to
+          "false", the deployment tool must examine the class
+          files of the application for annotations, as
+          specified by the specifications.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+    </xsd:attribute>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+</xsd:schema>
diff --git a/appserver/deployment/schemas/src/main/resources/glassfish/lib/schemas/application_10.xsd b/appserver/deployment/schemas/src/main/resources/glassfish/lib/schemas/application_10.xsd
new file mode 100644
index 0000000..e73e21d
--- /dev/null
+++ b/appserver/deployment/schemas/src/main/resources/glassfish/lib/schemas/application_10.xsd
@@ -0,0 +1,311 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="https://jakarta.ee/xml/ns/jakartaee" xmlns:jakartaee="https://jakarta.ee/xml/ns/jakartaee" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" version="10">
+  <xsd:annotation>
+    <xsd:documentation>
+
+      Copyright (c) 2009, 2021 Oracle and/or its affiliates. All rights reserved.
+      
+      This program and the accompanying materials are made available under the
+      terms of the Eclipse Public License v. 2.0, which is available at
+      http://www.eclipse.org/legal/epl-2.0.
+      
+      This Source Code may also be made available under the following Secondary
+      Licenses when the conditions for such availability set forth in the
+      Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+      version 2 with the GNU Classpath Exception, which is available at
+      https://www.gnu.org/software/classpath/license.html.
+      
+      SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      <![CDATA[
+      This is the XML Schema for the application 10 deployment
+      descriptor.  The deployment descriptor must be named
+      "META-INF/application.xml" in the application's ear file.
+      All application deployment descriptors must indicate
+      the application schema by using the Jakarta EE namespace:
+      
+      https://jakarta.ee/xml/ns/jakartaee
+      
+      and indicate the version of the schema by
+      using the version element as shown below:
+      
+      <application xmlns="https://jakarta.ee/xml/ns/jakartaee"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee 
+      	https://jakarta.ee/xml/ns/jakartaee/application_10.xsd"
+      version="10">
+      ...
+      </application>
+      
+      The instance documents may indicate the published version of
+      the schema using the xsi:schemaLocation attribute for Jakarta EE
+      namespace with the following location:
+      
+      https://jakarta.ee/xml/ns/jakartaee/application_10.xsd
+      
+      ]]>
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+
+      The following conventions apply to all Jakarta EE
+      deployment descriptor elements unless indicated otherwise.
+      
+      - In elements that specify a pathname to a file within the
+      same JAR file, relative filenames (i.e., those not
+      starting with "/") are considered relative to the root of
+      the JAR file's namespace.  Absolute filenames (i.e., those
+      starting with "/") also specify names in the root of the
+      JAR file's namespace.  In general, relative names are
+      preferred.  The exception is .war files where absolute
+      names are preferred for consistency with the Servlet API.
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:include schemaLocation="jakartaee_10.xsd"/>
+
+
+<!-- **************************************************** -->
+
+  <xsd:element name="application" type="jakartaee:applicationType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The application element is the root element of a Jakarta EE
+        application deployment descriptor.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:unique name="context-root-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The context-root element content must be unique
+          in the ear. 
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:module/jakartaee:web"/>
+      <xsd:field xpath="jakartaee:context-root"/>
+    </xsd:unique>
+    <xsd:unique name="security-role-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The security-role-name element content
+          must be unique in the ear.  
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:security-role"/>
+      <xsd:field xpath="jakartaee:role-name"/>
+    </xsd:unique>
+  </xsd:element>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="applicationType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The applicationType defines the structure of the
+        application. 
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="application-name" type="jakartaee:string" minOccurs="0"/>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="initialize-in-order" type="jakartaee:generic-booleanType" minOccurs="0" maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            If initialize-in-order is true, modules must be initialized
+            in the order they're listed in this deployment descriptor,
+            with the exception of application client modules, which can
+            be initialized in any order.
+            If initialize-in-order is not set or set to false, the order
+            of initialization is unspecified and may be product-dependent.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="module" type="jakartaee:moduleType" maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The application deployment descriptor must have one
+            module element for each Jakarta EE module in the
+            application package. A module element is defined 
+            by moduleType definition. 
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="security-role" type="jakartaee:security-roleType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="library-directory" type="jakartaee:pathType" minOccurs="0" maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The library-directory element specifies the pathname
+            of a directory within the application package, relative
+            to the top level of the application package.  All files
+            named "*.jar" in this directory must be made available
+            in the class path of all components included in this
+            application package.  If this element isn't specified,
+            the directory named "lib" is searched.  An empty element
+            may be used to disable searching.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="env-entry" type="jakartaee:env-entryType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="ejb-ref" type="jakartaee:ejb-refType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="ejb-local-ref" type="jakartaee:ejb-local-refType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:group ref="jakartaee:service-refGroup"/>
+      <xsd:element name="resource-ref" type="jakartaee:resource-refType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="resource-env-ref" type="jakartaee:resource-env-refType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="message-destination-ref" type="jakartaee:message-destination-refType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="persistence-context-ref" type="jakartaee:persistence-context-refType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="persistence-unit-ref" type="jakartaee:persistence-unit-refType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="message-destination" type="jakartaee:message-destinationType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="data-source" type="jakartaee:data-sourceType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="jms-connection-factory" type="jakartaee:jms-connection-factoryType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="jms-destination" type="jakartaee:jms-destinationType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="mail-session" type="jakartaee:mail-sessionType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="connection-factory" type="jakartaee:connection-factory-resourceType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="administered-object" type="jakartaee:administered-objectType" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="version" type="jakartaee:dewey-versionType" fixed="10" use="required">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The required value for the version is 10.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+    </xsd:attribute>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="moduleType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The moduleType defines a single Jakarta EE module and contains a
+        connector, ejb, java, or web element, which indicates the
+        module type and contains a path to the module file, and an
+        optional alt-dd element, which specifies an optional URI to
+        the post-assembly version of the deployment descriptor.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:choice>
+        <xsd:element name="connector" type="jakartaee:pathType">
+          <xsd:annotation>
+            <xsd:documentation>
+
+              The connector element specifies the URI of a
+              resource adapter archive file, relative to the
+              top level of the application package.
+              
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:element>
+        <xsd:element name="ejb" type="jakartaee:pathType">
+          <xsd:annotation>
+            <xsd:documentation>
+
+              The ejb element specifies the URI of an ejb-jar,
+              relative to the top level of the application
+              package.
+              
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:element>
+        <xsd:element name="java" type="jakartaee:pathType">
+          <xsd:annotation>
+            <xsd:documentation>
+
+              The java element specifies the URI of a java
+              application client module, relative to the top
+              level of the application package.
+              
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:element>
+        <xsd:element name="web" type="jakartaee:webType"/>
+      </xsd:choice>
+      <xsd:element name="alt-dd" type="jakartaee:pathType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The alt-dd element specifies an optional URI to the
+            post-assembly version of the deployment descriptor
+            file for a particular Jakarta EE module.  The URI must
+            specify the full pathname of the deployment
+            descriptor file relative to the application's root
+            directory. If alt-dd is not specified, the deployer
+            must read the deployment descriptor from the default
+            location and file name required by the respective
+            component specification.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="webType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The webType defines the web-uri and context-root of
+        a web application module.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="web-uri" type="jakartaee:pathType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The web-uri element specifies the URI of a web
+            application file, relative to the top level of the
+            application package.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="context-root" type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The context-root element specifies the context root
+            of a web application.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+</xsd:schema>
\ No newline at end of file
diff --git a/appserver/deployment/schemas/src/main/resources/glassfish/lib/schemas/beans_4_0.xsd b/appserver/deployment/schemas/src/main/resources/glassfish/lib/schemas/beans_4_0.xsd
new file mode 100644
index 0000000..71ae3d7
--- /dev/null
+++ b/appserver/deployment/schemas/src/main/resources/glassfish/lib/schemas/beans_4_0.xsd
@@ -0,0 +1,372 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+~ JBoss, Home of Professional Open Source
+~ Copyright 2021, Red Hat, Inc., and individual contributors
+~ by the @authors tag. See the copyright.txt in the distribution for a
+~ full listing of individual contributors.
+~
+~ Licensed 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.
+-->
+
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+           xmlns:jakartaee="https://jakarta.ee/xml/ns/jakartaee"
+           elementFormDefault="qualified"
+           targetNamespace="https://jakarta.ee/xml/ns/jakartaee"
+           version="4.0">
+
+  <xs:annotation>
+    <xs:documentation>
+      <![CDATA[[
+         Jakarta Contexts and Dependency Injection (CDI) defines
+         a set of complementary services that help improve the structure
+         of application code. beans.xml is used to enable CDI services
+         for the current bean archive as well as to enable named
+         interceptors, decorators and alternatives for the current bean
+         archive.
+         
+
+         This is the XML Schema for the beans.xml deployment
+         descriptor for CDI 4.0.  The deployment descriptor must be named
+         "META-INF/beans.xml" or "WEB-INF/beans.xml" in a war file.
+         All application deployment descriptors may indicate
+         the application schema by using the Java EE namespace:
+
+         https://jakarta.ee/xml/ns/jakartaee
+
+         and may indicate the version of the schema by
+         using the version element as shown below:
+
+         <beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
+         https://jakarta.ee/xml/ns/jakartaee/beans_4_0.xsd"
+         version="4.0">
+            ...
+         </beans>
+
+        The deployment descriptor may indicate the published version of
+        the schema using the xsi:schemaLocation attribute for the Java EE
+        namespace with the following location:
+
+        https://jakarta.ee/xml/ns/jakartaee/beans_4_0.xsd
+
+     ]]>
+    </xs:documentation>
+  </xs:annotation>
+
+  <xs:element name="beans">
+    <xs:annotation>
+      <xs:documentation>
+        Bean classes of enabled beans must be
+        deployed in bean archives. A library jar, EJB jar,
+        application client jar or rar archive is a bean archive if
+        it has a file named beans.xml in the META-INF directory. The
+        WEB-INF/classes directory of a war is a bean archive if
+        there is a file named beans.xml in the WEB-INF directory of
+        the war. A directory in the JVM classpath is a bean archive
+        if it has a file named beans.xml in the META-INF directory.
+
+        When running in a CDI Lite environment, the bean-discovery-mode
+        attribute is the only configuration value read from a beans.xml file.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:complexType>
+      <xs:all >
+        <xs:element ref="jakartaee:interceptors" minOccurs="0"/>
+        <xs:element ref="jakartaee:decorators" minOccurs="0" />
+        <xs:element ref="jakartaee:alternatives" minOccurs="0" />
+        <xs:element ref="jakartaee:scan" minOccurs="0" />
+        <xs:element ref="jakartaee:trim" minOccurs="0"/>
+      </xs:all>
+      <xs:attribute name="version" default="4.0">
+        <xs:annotation>
+          <xs:documentation>
+            The version of CDI this beans.xml is for. If the version is "4.0" (or
+            later), then the attribute bean-discovery-mode must be added.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:pattern value="\.?[0-9]+(\.[0-9]+)*"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute name="bean-discovery-mode" use="optional" default="annotated">
+        <xs:annotation>
+          <xs:documentation>
+            It is strongly recommended you use "annotated". This is now the default and it
+            is also the default as of 4.0 when an empty beans.xml file is seen. When running
+            in a CDI Lite  environment, this is the only aspect of the beans.xml file that
+            is used.
+
+            If the bean discovery mode is "all", then all types in this
+            archive will be considered. If the bean discovery mode is
+            "annotated", then only those types with bean defining annotations will be
+            considered. If the bean discovery mode is "none", then no
+            types will be considered.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:simpleType>
+          <xs:restriction base="xs:string">
+            <xs:enumeration value="annotated">
+              <xs:annotation>
+                <xs:documentation>
+                  Only those types with bean defining annotations will be
+                  considered.
+                </xs:documentation>
+              </xs:annotation>
+            </xs:enumeration>
+            <xs:enumeration value="all">
+              <xs:annotation>
+                <xs:documentation>
+                  All types in this archive will be considered.
+                </xs:documentation>
+              </xs:annotation>
+            </xs:enumeration>
+            <xs:enumeration value="none">
+              <xs:annotation>
+                <xs:documentation>
+                  This archive will be ignored.
+                </xs:documentation>
+              </xs:annotation>
+            </xs:enumeration>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="scan">
+    <xs:annotation>
+      <xs:documentation>
+        <![CDATA[The <scan> element allows exclusion of classes and packages from consideration. Various filters may be applied, and may be conditionally activated.]]>
+      </xs:documentation>
+    </xs:annotation>
+    <xs:complexType>
+      <xs:sequence maxOccurs="unbounded" minOccurs="0">
+        <xs:element name="exclude">
+          <xs:annotation>
+            <xs:documentation>
+              <![CDATA[The exclude filter allows exclusion of classes and packages through the use of Ant-style glob matches. For example, <exclude name="com.acme.**"> would exclude all classes and subpackages of com.acme.]]>
+            </xs:documentation>
+          </xs:annotation>
+          <xs:complexType>
+            <xs:choice maxOccurs="unbounded" minOccurs="0">
+              <xs:element name="if-class-available">
+                <xs:annotation>
+                  <xs:documentation>
+                    <![CDATA[Activates the filter only if the class specified can be loaded.]]>
+                  </xs:documentation>
+                </xs:annotation>
+                <xs:complexType>
+                  <xs:attribute name="name" type="xs:string" use="required">
+                    <xs:annotation>
+                      <xs:documentation>
+                        <![CDATA[If the named class can be loaded then, then the filter will be activated.]]>
+                      </xs:documentation>
+                    </xs:annotation>
+                  </xs:attribute>
+                </xs:complexType>
+              </xs:element>
+              <xs:element name="if-class-not-available">
+                <xs:annotation>
+                  <xs:documentation>
+                    <![CDATA[Activates the filter only if the class specified cannot be loaded.]]>
+                  </xs:documentation>
+                </xs:annotation>
+                <xs:complexType>
+                  <xs:attribute name="name" type="xs:string" use="required">
+                    <xs:annotation>
+                      <xs:documentation>
+                        <![CDATA[If the named class cannot be loaded then, then the filter will be activated.]]>
+                      </xs:documentation>
+                    </xs:annotation>
+                  </xs:attribute>
+                </xs:complexType>
+              </xs:element>
+              <xs:element name="if-system-property">
+                <xs:annotation>
+                  <xs:documentation>
+                    <![CDATA[If both name and value are specified, then the named system property must be set, and have the specified value for the filter to be activated. If only the name is specified, then the named system property must be set for the filter to be activated.]]>
+                  </xs:documentation>
+                </xs:annotation>
+                <xs:complexType>
+                  <xs:attribute name="name" type="xs:string" use="required">
+                    <xs:annotation>
+                      <xs:documentation>
+                        <![CDATA[The name of the system property that must be set for the filter to be active.]]>
+                      </xs:documentation>
+                    </xs:annotation>
+                  </xs:attribute>
+                  <xs:attribute name="value" type="xs:string" use="optional">
+                    <xs:annotation>
+                      <xs:documentation>
+                        <![CDATA[Optional. The value that the system property must have for the filter to be active.]]>
+                      </xs:documentation>
+                    </xs:annotation>
+                  </xs:attribute>
+                </xs:complexType>
+              </xs:element>
+            </xs:choice>
+            <xs:attribute name="name" use="required">
+              <xs:annotation>
+                <xs:documentation>
+                  <![CDATA[The name of the class or package to exclude. Ant-style glob matches are supported. For example, <exclude name="com.acme.**"> would exclude all classes and subpackages of com.acme.]]>
+                </xs:documentation>
+              </xs:annotation>
+              <xs:simpleType>
+                <xs:restriction base="xs:string">
+                  <xs:pattern value="([a-zA-Z_$][a-zA-Z\d_$]*\.)*([a-zA-Z_$][a-zA-Z\d_$]*|\*|\*\*)"/>
+                </xs:restriction>
+              </xs:simpleType>
+            </xs:attribute>
+          </xs:complexType>
+        </xs:element>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="interceptors">
+    <xs:annotation>
+      <xs:documentation>
+        By default, a bean archive has no enabled
+        interceptors bound via interceptor bindings. An interceptor
+        must be explicitly enabled by listing its class under the
+        &lt;interceptors&gt; element of the beans.xml file of the
+        bean archive. The order of the interceptor declarations
+        determines the interceptor ordering. Interceptors which
+        occur earlier in the list are called first. If the same
+        class is listed twice under the &lt;interceptors&gt;
+        element, the container automatically detects the problem and
+        treats it as a deployment problem.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element name="class" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>
+              Each child &lt;class&gt; element
+              must specify the name of an interceptor class. If
+              there is no class with the specified name, or if
+              the class with the specified name is not an
+              interceptor class, the container automatically
+              detects the problem and treats it as a deployment
+              problem.
+            </xs:documentation>
+          </xs:annotation>
+        </xs:element>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="decorators">
+    <xs:annotation>
+      <xs:documentation>
+        By default, a bean archive has no enabled
+        decorators. A decorator must be explicitly enabled by
+        listing its bean class under the &lt;decorators&gt; element
+        of the beans.xml file of the bean archive. The order of the
+        decorator declarations determines the decorator ordering.
+        Decorators which occur earlier in the list are called first.
+        If the same class is listed twice under the
+        &lt;decorators&gt; element, the container automatically
+        detects the problem and treats it as a deployment problem.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element name="class" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>
+              Each child &lt;class&gt; element
+              must specify the name of a decorator class. If
+              there is no class with the specified name, or if
+              the class with the specified name is not a
+              decorator class, the container automatically
+              detects the problem and treats it as a deployment
+              problem.
+            </xs:documentation>
+          </xs:annotation>
+        </xs:element>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="alternatives">
+    <xs:annotation>
+      <xs:documentation>
+        An alternative is a bean that must be
+        explicitly declared in the beans.xml file if it should be
+        available for lookup, injection or EL resolution. By
+        default, a bean archive has no selected alternatives. An
+        alternative must be explicitly declared using the
+        &lt;alternatives&gt; element of the beans.xml file of the
+        bean archive. The &lt;alternatives&gt; element contains a
+        list of bean classes and stereotypes. An alternative is
+        selected for the bean archive if either: the alternative is
+        a managed bean or session bean and the bean class of the
+        bean is listed, or the alternative is a producer method,
+        field or resource, and the bean class that declares the
+        method or field is listed, or any @Alternative stereotype of
+        the alternative is listed.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element name="class" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>
+              Each child &lt;class&gt; element
+              must specify the name of an alternative bean class.
+              If there is no class with the specified name, or if
+              the class with the specified name is not an
+              alternative bean class, the container automatically
+              detects the problem and treats it as a deployment
+              problem. If the same class is listed twice under
+              the &lt;alternatives&gt; element, the container
+              automatically detects the problem and treats it as
+              a deployment problem.
+            </xs:documentation>
+          </xs:annotation>
+        </xs:element>
+
+        <xs:element name="stereotype" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>
+              Each child &lt;stereotype&gt;
+              element must specify the name of an @Alternative
+              stereotype annotation. If there is no annotation
+              with the specified name, or the annotation is not
+              an @Alternative stereotype, the container
+              automatically detects the problem and treats it as
+              a deployment problem. If the same stereotype is
+              listed twice under the &lt;alternatives&gt;
+              element, the container automatically detects the
+              problem and treats it as a deployment problem.
+            </xs:documentation>
+          </xs:annotation>
+        </xs:element>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="trim" type="xs:string" fixed="">
+    <xs:annotation>
+      <xs:documentation>
+        If an explicit bean archive contains the &lt;trim/&lt; element in its beans.xml file, types that don’t have
+        either a bean defining annotation (as defined in Bean defining annotations) or any scope annotation,
+        are removed from the set of discovered types.
+      </xs:documentation>
+    </xs:annotation>
+  </xs:element>
+
+</xs:schema>
diff --git a/appserver/deployment/schemas/src/main/resources/glassfish/lib/schemas/jakartaee_10.xsd b/appserver/deployment/schemas/src/main/resources/glassfish/lib/schemas/jakartaee_10.xsd
new file mode 100644
index 0000000..5cc9dcb
--- /dev/null
+++ b/appserver/deployment/schemas/src/main/resources/glassfish/lib/schemas/jakartaee_10.xsd
@@ -0,0 +1,2739 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema targetNamespace="https://jakarta.ee/xml/ns/jakartaee" xmlns:jakartaee="https://jakarta.ee/xml/ns/jakartaee" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" version="10">
+  <xsd:annotation>
+    <xsd:documentation>
+
+      Copyright (c) 2009, 2021 Oracle and/or its affiliates. All rights reserved.
+      
+      This program and the accompanying materials are made available under the
+      terms of the Eclipse Public License v. 2.0, which is available at
+      http://www.eclipse.org/legal/epl-2.0.
+      
+      This Source Code may also be made available under the following Secondary
+      Licenses when the conditions for such availability set forth in the
+      Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+      version 2 with the GNU Classpath Exception, which is available at
+      https://www.gnu.org/software/classpath/license.html.
+      
+      SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+
+      The following definitions that appear in the common
+      shareable schema(s) of Jakarta EE deployment descriptors should be
+      interpreted with respect to the context they are included:
+      
+      Deployment Component may indicate one of the following:
+      Jakarta EE application;
+      application client;
+      web application;
+      enterprise bean;
+      resource adapter; 
+      
+      Deployment File may indicate one of the following:
+      ear file;
+      war file;
+      jar file;
+      rar file;
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+
+  <xsd:include schemaLocation="jakartaee_web_services_client_2_0.xsd"/>
+
+  <xsd:group name="descriptionGroup">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This group keeps the usage of the contained description related
+        elements consistent across Jakarta EE deployment descriptors.
+        
+        All elements may occur multiple times with different languages,
+        to support localization of the content.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description" type="jakartaee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="display-name" type="jakartaee:display-nameType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="icon" type="jakartaee:iconType" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:group>
+
+  <xsd:group name="jndiEnvironmentRefsGroup">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This group keeps the usage of the contained JNDI environment
+        reference elements consistent across Jakarta EE deployment descriptors.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="env-entry" type="jakartaee:env-entryType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="ejb-ref" type="jakartaee:ejb-refType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="ejb-local-ref" type="jakartaee:ejb-local-refType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:group ref="jakartaee:service-refGroup"/>
+      <xsd:element name="resource-ref" type="jakartaee:resource-refType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="resource-env-ref" type="jakartaee:resource-env-refType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="message-destination-ref" type="jakartaee:message-destination-refType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="persistence-context-ref" type="jakartaee:persistence-context-refType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="persistence-unit-ref" type="jakartaee:persistence-unit-refType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="post-construct" type="jakartaee:lifecycle-callbackType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="pre-destroy" type="jakartaee:lifecycle-callbackType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="data-source" type="jakartaee:data-sourceType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="jms-connection-factory" type="jakartaee:jms-connection-factoryType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="jms-destination" type="jakartaee:jms-destinationType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="mail-session" type="jakartaee:mail-sessionType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="connection-factory" type="jakartaee:connection-factory-resourceType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="administered-object" type="jakartaee:administered-objectType" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:group>
+
+  <xsd:group name="resourceGroup">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This group collects elements that are common to most
+        JNDI resource elements.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:resourceBaseGroup"/>
+      <xsd:element name="lookup-name" type="jakartaee:xsdStringType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The JNDI name to be looked up to resolve a resource reference.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+  </xsd:group>
+
+  <xsd:group name="resourceBaseGroup">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This group collects elements that are common to all the
+        JNDI resource elements. It does not include the lookup-name
+        element, that is only applicable to some resource elements.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="mapped-name" type="jakartaee:xsdStringType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            A product specific name that this resource should be
+            mapped to.  The name of this resource, as defined by the
+            resource's name element or defaulted, is a name that is
+            local to the application component using the resource.
+            (It's a name in the JNDI java:comp/env namespace.)  Many
+            application servers provide a way to map these local
+            names to names of resources known to the application
+            server.  This mapped name is often a global JNDI name,
+            but may be a name of any form.
+            
+            Application servers are not required to support any
+            particular form or type of mapped name, nor the ability
+            to use mapped names.  The mapped name is
+            product-dependent and often installation-dependent.  No
+            use of a mapped name is portable.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="injection-target" type="jakartaee:injection-targetType" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:group>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="administered-objectType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Configuration of an administered object.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description" type="jakartaee:descriptionType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Description of this administered object.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="name" type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The name element specifies the JNDI name of the
+            administered object being defined.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="interface-name" type="jakartaee:fully-qualified-classType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The administered object's interface type.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="class-name" type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The administered object's class name.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="resource-adapter" type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Resource adapter name.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property" type="jakartaee:propertyType" minOccurs="0" maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Property of the administered object property.  This may be a 
+            vendor-specific property.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="connection-factory-resourceType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Configuration of a Connector Connection Factory resource.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description" type="jakartaee:descriptionType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Description of this resource.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="name" type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The name element specifies the JNDI name of the
+            resource being defined.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="interface-name" type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The fully qualified class name of the connection factory 
+            interface. 
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="resource-adapter" type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Resource adapter name.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="max-pool-size" type="jakartaee:xsdIntegerType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Maximum number of connections that should be concurrently
+            allocated for a connection pool.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="min-pool-size" type="jakartaee:xsdIntegerType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Minimum number of connections that should be concurrently
+            allocated for a connection pool.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="transaction-support" type="jakartaee:transaction-supportType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The level of transaction support the connection factory 
+            needs to support. 
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property" type="jakartaee:propertyType" minOccurs="0" maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Resource property.  This may be a vendor-specific
+            property.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="data-sourceType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Configuration of a DataSource.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description" type="jakartaee:descriptionType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Description of this DataSource.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="name" type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The name element specifies the JNDI name of the
+            data source being defined.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="class-name" type="jakartaee:fully-qualified-classType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            DataSource, XADataSource or ConnectionPoolDataSource
+            implementation class.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="server-name" type="jakartaee:string" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Database server name.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="port-number" type="jakartaee:xsdIntegerType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Port number where a server is listening for requests.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="database-name" type="jakartaee:string" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Name of a database on a server.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="url" type="jakartaee:jdbc-urlType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            A JDBC URL. If the <code>url</code> property is specified
+            along with other standard <code>DataSource</code> properties
+            such as <code>serverName</code>, <code>databaseName</code>
+            and <code>portNumber</code>, the more specific properties will
+            take precedence and <code>url</code> will be ignored.
+            
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="user" type="jakartaee:string" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            User name to use for connection authentication.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="password" type="jakartaee:string" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Password to use for connection authentication.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property" type="jakartaee:propertyType" minOccurs="0" maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            JDBC DataSource property.  This may be a vendor-specific
+            property or a less commonly used DataSource property.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="login-timeout" type="jakartaee:xsdIntegerType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Sets the maximum time in seconds that this data source
+            will wait while attempting to connect to a database.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="transactional" type="jakartaee:xsdBooleanType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Set to false if connections should not participate in
+            transactions.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="isolation-level" type="jakartaee:isolation-levelType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Isolation level for connections.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="initial-pool-size" type="jakartaee:xsdIntegerType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Number of connections that should be created when a
+            connection pool is initialized.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="max-pool-size" type="jakartaee:xsdIntegerType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Maximum number of connections that should be concurrently
+            allocated for a connection pool.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="min-pool-size" type="jakartaee:xsdIntegerType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Minimum number of connections that should be concurrently
+            allocated for a connection pool.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="max-idle-time" type="jakartaee:xsdIntegerType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The number of seconds that a physical connection should
+            remain unused in the pool before the connection is
+            closed for a connection pool.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="max-statements" type="jakartaee:xsdIntegerType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The total number of statements that a connection pool
+            should keep open.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="descriptionType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The description type is used by a description element to
+        provide text describing the parent element.  The elements
+        that use this type should include any information that the
+        Deployment Component's Deployment File file producer wants
+        to provide to the consumer of the Deployment Component's
+        Deployment File (i.e., to the Deployer). Typically, the
+        tools used by such a Deployment File consumer will display
+        the description when processing the parent element that
+        contains the description.
+        
+        The lang attribute defines the language that the
+        description is provided in. The default value is "en" (English). 
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="jakartaee:xsdStringType">
+        <xsd:attribute ref="xml:lang"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <xsd:simpleType name="dewey-versionType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type defines a dewey decimal that is used
+        to describe versions of documents. 
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern value="\.?[0-9]+(\.[0-9]+)*"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="display-nameType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        The display-name type contains a short name that is intended
+        to be displayed by tools. It is used by display-name
+        elements.  The display name need not be unique.
+        
+        Example: 
+        
+        ...
+        <display-name xml:lang="en">
+        Employee Self Service
+        </display-name>
+        
+        The value of the xml:lang attribute is "en" (English) by default. 
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="jakartaee:string">
+        <xsd:attribute ref="xml:lang"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="ejb-linkType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        The ejb-linkType is used by ejb-link
+        elements in the ejb-ref or ejb-local-ref elements to specify
+        that an enterprise bean reference is linked to enterprise bean.
+        
+        The value of the ejb-link element must be the ejb-name of an
+        enterprise bean in the same ejb-jar file or in another ejb-jar
+        file in the same Jakarta EE application unit. 
+        
+        Alternatively, the name in the ejb-link element may be
+        composed of a path name specifying the ejb-jar containing the
+        referenced enterprise bean with the ejb-name of the target
+        bean appended and separated from the path name by "#".  The
+        path name is relative to the Deployment File containing
+        Deployment Component that is referencing the enterprise
+        bean.  This allows multiple enterprise beans with the same
+        ejb-name to be uniquely identified.
+        
+        Examples:
+        
+        <ejb-link>EmployeeRecord</ejb-link>
+        
+        <ejb-link>../products/product.jar#ProductEJB</ejb-link>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="ejb-local-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The ejb-local-refType is used by ejb-local-ref elements for
+        the declaration of a reference to an enterprise bean's local
+        home or to the local business interface of a 3.0 bean.
+        The declaration consists of:
+        
+        - an optional description
+        - the enterprise bean's reference name used in the code of the 
+        Deployment Component that's referencing the enterprise bean.
+        - the optional expected type of the referenced enterprise bean
+        - the optional expected local interface of the referenced 
+        enterprise bean or the local business interface of the 
+        referenced enterprise bean.
+        - the optional expected local home interface of the referenced 
+        enterprise bean. Not applicable if this ejb-local-ref refers
+        to the local business interface of a 3.0 bean.
+        - optional ejb-link information, used to specify the 
+        referenced enterprise bean
+        - optional elements to define injection of the named enterprise  
+        bean into a component field or property.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description" type="jakartaee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="ejb-ref-name" type="jakartaee:ejb-ref-nameType"/>
+      <xsd:element name="ejb-ref-type" type="jakartaee:ejb-ref-typeType" minOccurs="0"/>
+      <xsd:element name="local-home" type="jakartaee:local-homeType" minOccurs="0"/>
+      <xsd:element name="local" type="jakartaee:localType" minOccurs="0"/>
+      <xsd:element name="ejb-link" type="jakartaee:ejb-linkType" minOccurs="0"/>
+      <xsd:group ref="jakartaee:resourceGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="ejb-ref-nameType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        The ejb-ref-name element contains the name of an enterprise bean reference. 
+        The enterprise bean reference is an entry in the Deployment Component's 
+        environment and is relative to the java:comp/env context.  The name must 
+        be unique within the Deployment Component.
+        
+        It is recommended that name is prefixed with "ejb/".
+        
+        Example:
+        
+        <ejb-ref-name>ejb/Payroll</ejb-ref-name>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:jndi-nameType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="ejb-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The ejb-refType is used by ejb-ref elements for the
+        declaration of a reference to an enterprise bean's home or
+        to the remote business interface of a 3.0 bean.  
+        The declaration consists of:
+        
+        - an optional description
+        - the enterprise bean's reference name used in the code of
+        the Deployment Component that's referencing the enterprise
+        bean. 
+        - the optional expected type of the referenced enterprise bean
+        - the optional remote interface of the referenced enterprise bean
+        or the remote business interface of the referenced enterprise 
+        bean
+        - the optional expected home interface of the referenced 
+        enterprise bean.  Not applicable if this ejb-ref
+        refers to the remote business interface of a 3.0 bean.
+        - optional ejb-link information, used to specify the
+        referenced enterprise bean
+        - optional elements to define injection of the named enterprise
+        bean into a component field or property
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description" type="jakartaee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="ejb-ref-name" type="jakartaee:ejb-ref-nameType"/>
+      <xsd:element name="ejb-ref-type" type="jakartaee:ejb-ref-typeType" minOccurs="0"/>
+      <xsd:element name="home" type="jakartaee:homeType" minOccurs="0"/>
+      <xsd:element name="remote" type="jakartaee:remoteType" minOccurs="0"/>
+      <xsd:element name="ejb-link" type="jakartaee:ejb-linkType" minOccurs="0"/>
+      <xsd:group ref="jakartaee:resourceGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="ejb-ref-typeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The ejb-ref-typeType contains the expected type of the
+        referenced enterprise bean.
+        
+        The ejb-ref-type designates a value
+        that must be one of the following:
+        
+        Entity
+        Session
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:enumeration value="Entity"/>
+        <xsd:enumeration value="Session"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="emptyType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type is used to designate an empty
+        element when used. 
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="env-entryType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The env-entryType is used to declare an application's
+        environment entry. The declaration consists of an optional
+        description, the name of the environment entry, a type
+        (optional if the value is injected, otherwise required), and
+        an optional value.
+        
+        It also includes optional elements to define injection of
+        the named resource into fields or JavaBeans properties.
+        
+        If a value is not specified and injection is requested,
+        no injection will occur and no entry of the specified name
+        will be created.  This allows an initial value to be
+        specified in the source code without being incorrectly
+        changed when no override has been specified.
+        
+        If a value is not specified and no injection is requested,
+        a value must be supplied during deployment. 
+        
+        This type is used by env-entry elements.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description" type="jakartaee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="env-entry-name" type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            The env-entry-name element contains the name of a
+            Deployment Component's environment entry.  The name
+            is a JNDI name relative to the java:comp/env
+            context.  The name must be unique within a 
+            Deployment Component. The uniqueness
+            constraints must be defined within the declared
+            context.
+            
+            Example:
+            
+            <env-entry-name>minAmount</env-entry-name>
+            
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="env-entry-type" type="jakartaee:env-entry-type-valuesType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            The env-entry-type element contains the Java language
+            type of the environment entry.  If an injection target
+            is specified for the environment entry, the type may
+            be omitted, or must match the type of the injection
+            target.  If no injection target is specified, the type
+            is required.
+            
+            Example:
+            
+            <env-entry-type>java.lang.Integer</env-entry-type>
+            
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="env-entry-value" type="jakartaee:xsdStringType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            The env-entry-value designates the value of a
+            Deployment Component's environment entry. The value
+            must be a String that is valid for the
+            constructor of the specified type that takes a
+            single String parameter, or for java.lang.Character,
+            a single character.
+            
+            Example:
+            
+            <env-entry-value>100.00</env-entry-value>
+            
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:group ref="jakartaee:resourceGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="env-entry-type-valuesType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        This type contains the fully-qualified Java type of the
+        environment entry value that is expected by the
+        application's code.
+        
+        The following are the legal values of env-entry-type-valuesType:
+        
+        java.lang.Boolean
+        java.lang.Byte
+        java.lang.Character
+        java.lang.String
+        java.lang.Short
+        java.lang.Integer
+        java.lang.Long
+        java.lang.Float
+        java.lang.Double
+        		  java.lang.Class
+        		  any enumeration type (i.e. a subclass of java.lang.Enum)
+        
+        Examples:
+        
+        <env-entry-type>java.lang.Boolean</env-entry-type>
+        <env-entry-type>java.lang.Class</env-entry-type>
+        <env-entry-type>com.example.Color</env-entry-type>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:fully-qualified-classType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="fully-qualified-classType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The elements that use this type designate the name of a
+        Java class or interface.  The name is in the form of a
+        "binary name", as defined in the JLS.  This is the form
+        of name used in Class.forName().  Tools that need the
+        canonical name (the name used in source code) will need
+        to convert this binary name to the canonical name.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="generic-booleanType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type defines four different values which can designate
+        boolean values. This includes values yes and no which are 
+        not designated by xsd:boolean
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:enumeration value="true"/>
+        <xsd:enumeration value="false"/>
+        <xsd:enumeration value="yes"/>
+        <xsd:enumeration value="no"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="iconType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The icon type contains small-icon and large-icon elements
+        that specify the file names for small and large GIF, JPEG,
+        or PNG icon images used to represent the parent element in a
+        GUI tool. 
+        
+        The xml:lang attribute defines the language that the
+        icon file names are provided in. Its value is "en" (English)
+        by default. 
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="small-icon" type="jakartaee:pathType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            The small-icon element contains the name of a file
+            containing a small (16 x 16) icon image. The file
+            name is a relative path within the Deployment
+            Component's Deployment File.
+            
+            The image may be in the GIF, JPEG, or PNG format.
+            The icon can be used by tools.
+            
+            Example:
+            
+            <small-icon>employee-service-icon16x16.jpg</small-icon>
+            
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="large-icon" type="jakartaee:pathType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            The large-icon element contains the name of a file
+            containing a large
+            (32 x 32) icon image. The file name is a relative 
+            path within the Deployment Component's Deployment
+            File.
+            
+            The image may be in the GIF, JPEG, or PNG format.
+            The icon can be used by tools.
+            
+            Example:
+            
+            <large-icon>employee-service-icon32x32.jpg</large-icon>
+            
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute ref="xml:lang"/>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="injection-targetType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        An injection target specifies a class and a name within
+        that class into which a resource should be injected.
+        
+        The injection target class specifies the fully qualified
+        class name that is the target of the injection.  The
+        Jakarta EE specifications describe which classes can be an
+        injection target.
+        
+        The injection target name specifies the target within
+        the specified class.  The target is first looked for as a
+        JavaBeans property name.  If not found, the target is
+        looked for as a field name.
+        
+        The specified resource will be injected into the target
+        during initialization of the class by either calling the
+        set method for the target property or by setting a value
+        into the named field.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="injection-target-class" type="jakartaee:fully-qualified-classType"/>
+      <xsd:element name="injection-target-name" type="jakartaee:java-identifierType"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:simpleType name="isolation-levelType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        	The following transaction isolation levels are allowed
+        	(see documentation for the java.sql.Connection interface):
+        TRANSACTION_READ_UNCOMMITTED
+        TRANSACTION_READ_COMMITTED
+        TRANSACTION_REPEATABLE_READ
+        TRANSACTION_SERIALIZABLE
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:string">
+      <xsd:enumeration value="TRANSACTION_READ_UNCOMMITTED"/>
+      <xsd:enumeration value="TRANSACTION_READ_COMMITTED"/>
+      <xsd:enumeration value="TRANSACTION_REPEATABLE_READ"/>
+      <xsd:enumeration value="TRANSACTION_SERIALIZABLE"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="java-identifierType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The java-identifierType defines a Java identifier.
+        The users of this type should further verify that 
+        the content does not contain Java reserved keywords.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:pattern value="($|_|\p{L})(\p{L}|\p{Nd}|_|$)*"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="java-typeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This is a generic type that designates a Java primitive
+        type or a fully qualified name of a Java interface/type,
+        or an array of such types.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:pattern value="[^\p{Z}]*"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="jdbc-urlType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        The jdbc-urlType contains the url pattern of the mapping.
+        It must follow the rules specified in Section 9.3 of the
+        JDBC Specification where the format is:
+        
+        jdbc:<subprotocol>:<subname>
+        
+        Example:
+        
+        <url>jdbc:mysql://localhost:3307/testdb</url>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:pattern value="jdbc:(.*):(.*)"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="jms-connection-factoryType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Configuration of a Messaging Connection Factory.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description" type="jakartaee:descriptionType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Description of this Messaging Connection Factory.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="name" type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The name element specifies the JNDI name of the
+            messaging connection factory being defined.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="interface-name" type="jakartaee:fully-qualified-classType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Fully-qualified name of the messaging connection factory
+            interface.  Permitted values are jakarta.jms.ConnectionFactory,
+            jakarta.jms.QueueConnectionFactory, or 
+            jakarta.jms.TopicConnectionFactory.  If not specified,
+            jakarta.jms.ConnectionFactory will be used.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="class-name" type="jakartaee:fully-qualified-classType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Fully-qualified name of the messaging connection factory 
+            implementation class.  Ignored if a resource adapter  
+            is used.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="resource-adapter" type="jakartaee:string" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Resource adapter name.  If not specified, the application
+            server will define the default behavior, which may or may
+            not involve the use of a resource adapter.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="user" type="jakartaee:string" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            User name to use for connection authentication.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="password" type="jakartaee:string" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Password to use for connection authentication.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="client-id" type="jakartaee:string" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Client id to use for connection.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property" type="jakartaee:propertyType" minOccurs="0" maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Messaging Connection Factory property.  This may be a vendor-specific
+            property or a less commonly used ConnectionFactory property.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="transactional" type="jakartaee:xsdBooleanType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Set to false if connections should not participate in
+            transactions.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="max-pool-size" type="jakartaee:xsdIntegerType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Maximum number of connections that should be concurrently
+            allocated for a connection pool.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="min-pool-size" type="jakartaee:xsdIntegerType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Minimum number of connections that should be concurrently
+            allocated for a connection pool.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="jms-destinationType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Configuration of a Messaging Destination.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description" type="jakartaee:descriptionType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Description of this Messaging Destination.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="name" type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The name element specifies the JNDI name of the
+            messaging destination being defined.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="interface-name" type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Fully-qualified name of the messaging destination interface.
+            Permitted values are jakarta.jms.Queue and jakarta.jms.Topic
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="class-name" type="jakartaee:fully-qualified-classType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Fully-qualified name of the messaging destination implementation
+            class.  Ignored if a resource adapter is used unless the
+            resource adapter defines more than one destination implementation
+            class for the specified interface.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="resource-adapter" type="jakartaee:string" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Resource adapter name.  If not specified, the application
+            server will define the default behavior, which may or may
+            not involve the use of a resource adapter.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="destination-name" type="jakartaee:string" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Name of the queue or topic.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property" type="jakartaee:propertyType" minOccurs="0" maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Messaging Destination property.  This may be a vendor-specific
+            property or a less commonly used Destination property.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="jndi-nameType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The jndi-nameType type designates a JNDI name in the
+        Deployment Component's environment and is relative to the
+        java:comp/env context.  A JNDI name must be unique within the
+        Deployment Component.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="homeType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        The homeType defines the fully-qualified name of
+        an enterprise bean's home interface. 
+        
+        Example:
+        
+        <home>com.aardvark.payroll.PayrollHome</home>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:fully-qualified-classType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="lifecycle-callbackType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The lifecycle-callback type specifies a method on a
+        class to be called when a lifecycle event occurs.
+        Note that each class may have only one lifecycle callback
+        method for any given event and that the method may not
+        be overloaded.
+        
+        If the lifefycle-callback-class element is missing then
+        the class defining the callback is assumed to be the
+        component class in scope at the place in the descriptor
+        in which the callback definition appears.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="lifecycle-callback-class" type="jakartaee:fully-qualified-classType" minOccurs="0"/>
+      <xsd:element name="lifecycle-callback-method" type="jakartaee:java-identifierType"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="listenerType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The listenerType indicates the deployment properties for a web
+        application listener bean.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="listener-class" type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The listener-class element declares a class in the
+            application must be registered as a web
+            application listener bean. The value is the fully
+            qualified classname of the listener class.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="localType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The localType defines the fully-qualified name of an
+        enterprise bean's local interface.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:fully-qualified-classType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="local-homeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The local-homeType defines the fully-qualified
+        name of an enterprise bean's local home interface.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:fully-qualified-classType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="mail-sessionType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Configuration of a Mail Session resource.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description" type="jakartaee:descriptionType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Description of this Mail Session resource.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="name" type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The name element specifies the JNDI name of the
+            Mail Session resource being defined.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="store-protocol" type="jakartaee:string" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Storage protocol.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="store-protocol-class" type="jakartaee:fully-qualified-classType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Service provider store protocol implementation class
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="transport-protocol" type="jakartaee:string" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Transport protocol.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="transport-protocol-class" type="jakartaee:fully-qualified-classType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Service provider transport protocol implementation class
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="host" type="jakartaee:string" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Mail server host name.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="user" type="jakartaee:string" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Mail server user name.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="password" type="jakartaee:string" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Password.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="from" type="jakartaee:string" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Email address to indicate the message sender.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property" type="jakartaee:propertyType" minOccurs="0" maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Mail server property.  This may be a vendor-specific
+            property.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="param-valueType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type is a general type that can be used to declare
+        parameter/value lists.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description" type="jakartaee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="param-name" type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The param-name element contains the name of a
+            parameter.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="param-value" type="jakartaee:xsdStringType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The param-value element contains the value of a
+            parameter.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="pathType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The elements that use this type designate either a relative
+        path or an absolute path starting with a "/".
+        
+        In elements that specify a pathname to a file within the
+        same Deployment File, relative filenames (i.e., those not
+        starting with "/") are considered relative to the root of
+        the Deployment File's namespace.  Absolute filenames (i.e.,
+        those starting with "/") also specify names in the root of
+        the Deployment File's namespace.  In general, relative names
+        are preferred.  The exception is .war files where absolute
+        names are preferred for consistency with the Servlet API.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="persistence-context-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        The persistence-context-ref element contains a declaration
+        of Deployment Component's reference to a persistence context
+        associated within a Deployment Component's
+        environment. It consists of:
+        
+        - an optional description
+        - the persistence context reference name
+        - an optional persistence unit name.  If not specified,
+        the default persistence unit is assumed.
+        - an optional specification as to whether
+        the persistence context type is Transaction or
+        Extended.  If not specified, Transaction is assumed.
+        - an optional specification as to whether
+        the persistence context synchronization with the current
+        transaction is Synchronized or Unsynchronized. If not
+        specified, Synchronized is assumed.
+        - an optional list of persistence properties
+        - optional injection targets
+        
+        Examples:
+        
+        <persistence-context-ref>
+        <persistence-context-ref-name>myPersistenceContext
+        </persistence-context-ref-name>
+        </persistence-context-ref>
+        
+        <persistence-context-ref>
+        <persistence-context-ref-name>myPersistenceContext
+        </persistence-context-ref-name>
+        <persistence-unit-name>PersistenceUnit1
+        </persistence-unit-name>
+        <persistence-context-type>Extended</persistence-context-type>
+        </persistence-context-ref>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description" type="jakartaee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="persistence-context-ref-name" type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The persistence-context-ref-name element specifies
+            the name of a persistence context reference; its
+            value is the environment entry name used in
+            Deployment Component code.  The name is a JNDI name
+            relative to the java:comp/env context.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="persistence-unit-name" type="jakartaee:string" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The Application Assembler(or BeanProvider) may use the
+            following syntax to avoid the need to rename persistence
+            units to have unique names within a Jakarta EE application.
+            
+            The Application Assembler specifies the pathname of the
+            root of the persistence.xml file for the referenced
+            persistence unit and appends the name of the persistence
+            unit separated from the pathname by #. The pathname is
+            relative to the referencing application component jar file. 
+            In this manner, multiple persistence units with the same
+            persistence unit name may be uniquely identified when the 
+            Application Assembler cannot change persistence unit names.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="persistence-context-type" type="jakartaee:persistence-context-typeType" minOccurs="0"/>
+      <xsd:element name="persistence-context-synchronization" type="jakartaee:persistence-context-synchronizationType" minOccurs="0"/>
+      <xsd:element name="persistence-property" type="jakartaee:propertyType" minOccurs="0" maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Used to specify properties for the container or persistence
+            provider.  Vendor-specific properties may be included in
+            the set of properties.  Properties that are not recognized
+            by a vendor must be ignored.  Entries that make use of the 
+            namespace jakarta.persistence and its subnamespaces must not
+            be used for vendor-specific properties.  The namespace
+            jakarta.persistence is reserved for use by the specification.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:group ref="jakartaee:resourceBaseGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="persistence-context-synchronizationType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The persistence-context-synchronizationType specifies 
+        whether a container-managed persistence context is automatically
+        synchronized with the current transaction.
+        
+        The value of the persistence-context-synchronization element 
+        must be one of the following:
+        Synchronized
+        Unsynchronized
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:enumeration value="Synchronized"/>
+        <xsd:enumeration value="Unsynchronized"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="persistence-context-typeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The persistence-context-typeType specifies the transactional
+        nature of a persistence context reference.  
+        
+        The value of the persistence-context-type element must be
+        one of the following:
+        Transaction
+        Extended
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:enumeration value="Transaction"/>
+        <xsd:enumeration value="Extended"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="propertyType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Specifies a name/value pair.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="name" type="jakartaee:xsdStringType">
+      </xsd:element>
+      <xsd:element name="value" type="jakartaee:xsdStringType">
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="persistence-unit-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        The persistence-unit-ref element contains a declaration
+        of Deployment Component's reference to a persistence unit
+        associated within a Deployment Component's
+        environment. It consists of:
+        
+        - an optional description
+        - the persistence unit reference name
+        - an optional persistence unit name.  If not specified,
+        the default persistence unit is assumed.
+        - optional injection targets
+        
+        Examples:
+        
+        <persistence-unit-ref>
+        <persistence-unit-ref-name>myPersistenceUnit
+        </persistence-unit-ref-name>
+        </persistence-unit-ref>
+        
+        <persistence-unit-ref>
+        <persistence-unit-ref-name>myPersistenceUnit
+        </persistence-unit-ref-name>
+        <persistence-unit-name>PersistenceUnit1
+        </persistence-unit-name>
+        </persistence-unit-ref>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description" type="jakartaee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="persistence-unit-ref-name" type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The persistence-unit-ref-name element specifies
+            the name of a persistence unit reference; its
+            value is the environment entry name used in
+            Deployment Component code.  The name is a JNDI name
+            relative to the java:comp/env context.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="persistence-unit-name" type="jakartaee:string" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The Application Assembler(or BeanProvider) may use the
+            following syntax to avoid the need to rename persistence
+            units to have unique names within a Jakarta EE application.
+            
+            The Application Assembler specifies the pathname of the
+            root of the persistence.xml file for the referenced
+            persistence unit and appends the name of the persistence
+            unit separated from the pathname by #. The pathname is
+            relative to the referencing application component jar file. 
+            In this manner, multiple persistence units with the same
+            persistence unit name may be uniquely identified when the 
+            Application Assembler cannot change persistence unit names.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:group ref="jakartaee:resourceBaseGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="remoteType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        The remote element contains the fully-qualified name
+        of the enterprise bean's remote interface.
+        
+        Example:
+        
+        <remote>com.wombat.empl.EmployeeService</remote>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:fully-qualified-classType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="resource-env-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        The resource-env-refType is used to define
+        resource-env-ref elements.  It contains a declaration of a
+        Deployment Component's reference to an administered object
+        associated with a resource in the Deployment Component's
+        environment.  It consists of an optional description, the
+        resource environment reference name, and an optional
+        indication of the resource environment reference type
+        expected by the Deployment Component code.
+        
+        It also includes optional elements to define injection of
+        the named resource into fields or JavaBeans properties.
+        
+        The resource environment type must be supplied unless an
+        injection target is specified, in which case the type
+        of the target is used.  If both are specified, the type
+        must be assignment compatible with the type of the injection
+        target.
+        
+        Example:
+        
+        <resource-env-ref>
+        <resource-env-ref-name>jms/StockQueue
+        </resource-env-ref-name>
+        <resource-env-ref-type>jakarta.jms.Queue
+        </resource-env-ref-type>
+        </resource-env-ref>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description" type="jakartaee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="resource-env-ref-name" type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The resource-env-ref-name element specifies the name
+            of a resource environment reference; its value is
+            the environment entry name used in
+            the Deployment Component code.  The name is a JNDI 
+            name relative to the java:comp/env context and must 
+            be unique within a Deployment Component.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="resource-env-ref-type" type="jakartaee:fully-qualified-classType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The resource-env-ref-type element specifies the type
+            of a resource environment reference.  It is the
+            fully qualified name of a Java language class or
+            interface.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:group ref="jakartaee:resourceGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="resource-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        The resource-refType contains a declaration of a
+        Deployment Component's reference to an external resource. It
+        consists of an optional description, the resource manager
+        connection factory reference name, an optional indication of
+        the resource manager connection factory type expected by the
+        Deployment Component code, an optional type of authentication
+        (Application or Container), and an optional specification of
+        the shareability of connections obtained from the resource
+        (Shareable or Unshareable).
+        
+        It also includes optional elements to define injection of
+        the named resource into fields or JavaBeans properties.
+        
+        The connection factory type must be supplied unless an
+        injection target is specified, in which case the type
+        of the target is used.  If both are specified, the type
+        must be assignment compatible with the type of the injection
+        target.
+        
+        Example:
+        
+        <resource-ref>
+        <res-ref-name>jdbc/EmployeeAppDB</res-ref-name>
+        <res-type>javax.sql.DataSource</res-type>
+        <res-auth>Container</res-auth>
+        <res-sharing-scope>Shareable</res-sharing-scope>
+        </resource-ref>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description" type="jakartaee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="res-ref-name" type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The res-ref-name element specifies the name of a
+            resource manager connection factory reference.
+            The name is a JNDI name relative to the
+            java:comp/env context.  
+            The name must be unique within a Deployment File. 
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="res-type" type="jakartaee:fully-qualified-classType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The res-type element specifies the type of the data
+            source. The type is specified by the fully qualified
+            Java language class or interface
+            expected to be implemented by the data source.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="res-auth" type="jakartaee:res-authType" minOccurs="0"/>
+      <xsd:element name="res-sharing-scope" type="jakartaee:res-sharing-scopeType" minOccurs="0"/>
+      <xsd:group ref="jakartaee:resourceGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="res-authType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The res-authType specifies whether the Deployment Component
+        code signs on programmatically to the resource manager, or
+        whether the Container will sign on to the resource manager
+        on behalf of the Deployment Component. In the latter case,
+        the Container uses information that is supplied by the
+        Deployer.
+        
+        The value must be one of the two following:
+        
+        Application
+        Container
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:enumeration value="Application"/>
+        <xsd:enumeration value="Container"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="res-sharing-scopeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The res-sharing-scope type specifies whether connections
+        obtained through the given resource manager connection
+        factory reference can be shared. The value, if specified,
+        must be one of the two following:
+        
+        Shareable
+        Unshareable
+        
+        The default value is Shareable.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:enumeration value="Shareable"/>
+        <xsd:enumeration value="Unshareable"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="run-asType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The run-asType specifies the run-as identity to be
+        used for the execution of a component. It contains an 
+        optional description, and the name of a security role.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description" type="jakartaee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="role-name" type="jakartaee:role-nameType"/>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="role-nameType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The role-nameType designates the name of a security role.
+        
+        The name must conform to the lexical rules for a token.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="security-roleType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        The security-roleType contains the definition of a security
+        role. The definition consists of an optional description of
+        the security role, and the security role name.
+        
+        Example:
+        
+        <security-role>
+        <description>
+        This role includes all employees who are authorized
+        to access the employee service application.
+        </description>
+        <role-name>employee</role-name>
+        </security-role>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description" type="jakartaee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="role-name" type="jakartaee:role-nameType"/>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="security-role-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The security-role-refType contains the declaration of a
+        security role reference in a component's or a
+        Deployment Component's code. The declaration consists of an
+        optional description, the security role name used in the
+        code, and an optional link to a security role. If the
+        security role is not specified, the Deployer must choose an
+        appropriate security role.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description" type="jakartaee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="role-name" type="jakartaee:role-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The value of the role-name element must be the String used
+            as the parameter to the 
+            EJBContext.isCallerInRole(String roleName) method or the
+            HttpServletRequest.isUserInRole(String role) method.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="role-link" type="jakartaee:role-nameType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The role-link element is a reference to a defined
+            security role. The role-link element must contain
+            the name of one of the security roles defined in the
+            security-role elements.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="xsdQNameType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:QName.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:QName">
+        <xsd:attribute name="id" type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="xsdBooleanType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:boolean.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:boolean">
+        <xsd:attribute name="id" type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="xsdNMTOKENType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:NMTOKEN.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:NMTOKEN">
+        <xsd:attribute name="id" type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="xsdAnyURIType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:anyURI.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:anyURI">
+        <xsd:attribute name="id" type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="xsdIntegerType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:integer.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:integer">
+        <xsd:attribute name="id" type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="xsdPositiveIntegerType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:positiveInteger.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:positiveInteger">
+        <xsd:attribute name="id" type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="xsdNonNegativeIntegerType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:nonNegativeInteger.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:nonNegativeInteger">
+        <xsd:attribute name="id" type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="xsdStringType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:string.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:string">
+        <xsd:attribute name="id" type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="string">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This is a special string datatype that is defined by Jakarta EE as
+        a base type for defining collapsed strings. When schemas
+        require trailing/leading space elimination as well as
+        collapsing the existing whitespace, this base type may be
+        used.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:token">
+        <xsd:attribute name="id" type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="true-falseType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This simple type designates a boolean with only two
+        permissible values
+        
+        - true
+        - false
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:xsdBooleanType">
+        <xsd:pattern value="(true|false)"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="url-patternType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The url-patternType contains the url pattern of the mapping.
+        It must follow the rules specified in Section 11.2 of the
+        Servlet API Specification. This pattern is assumed to be in
+        URL-decoded form and must not contain CR(#xD) or LF(#xA).
+        If it contains those characters, the container must inform
+        the developer with a descriptive error message.
+        The container must preserve all characters including whitespaces.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="message-destinationType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        The message-destinationType specifies a message
+        destination. The logical destination described by this
+        element is mapped to a physical destination by the Deployer.
+        
+        The message destination element contains: 
+        
+        - an optional description
+        - an optional display-name
+        - an optional icon
+        - a message destination name which must be unique
+        among message destination names within the same 
+        Deployment File. 
+        - an optional mapped name
+        - an optional lookup name
+        
+        Example: 
+        
+        <message-destination>
+        <message-destination-name>CorporateStocks
+        </message-destination-name>
+        </message-destination>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="message-destination-name" type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The message-destination-name element specifies a
+            name for a message destination.  This name must be
+            unique among the names of message destinations
+            within the Deployment File.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="mapped-name" type="jakartaee:xsdStringType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            A product specific name that this message destination
+            should be mapped to.  Each message-destination-ref
+            element that references this message destination will
+            define a name in the namespace of the referencing
+            component or in one of the other predefined namespaces. 
+            Many application servers provide a way to map these
+            local names to names of resources known to the
+            application server.  This mapped name is often a global
+            JNDI name, but may be a name of any form.  Each of the
+            local names should be mapped to this same global name.
+            
+            Application servers are not required to support any
+            particular form or type of mapped name, nor the ability
+            to use mapped names.  The mapped name is
+            product-dependent and often installation-dependent.  No
+            use of a mapped name is portable.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="lookup-name" type="jakartaee:xsdStringType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The JNDI name to be looked up to resolve the message destination.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="message-destination-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        The message-destination-ref element contains a declaration
+        of Deployment Component's reference to a message destination
+        associated with a resource in Deployment Component's
+        environment. It consists of:
+        
+        - an optional description
+        - the message destination reference name
+        - an optional message destination type
+        - an optional specification as to whether
+        the destination is used for 
+        consuming or producing messages, or both.
+        if not specified, "both" is assumed.
+        - an optional link to the message destination
+        - optional injection targets
+        
+        The message destination type must be supplied unless an
+        injection target is specified, in which case the type
+        of the target is used.  If both are specified, the type
+        must be assignment compatible with the type of the injection
+        target.
+        
+        Examples:
+        
+        <message-destination-ref>
+        <message-destination-ref-name>jms/StockQueue
+        </message-destination-ref-name>
+        <message-destination-type>jakarta.jms.Queue
+        </message-destination-type>
+        <message-destination-usage>Consumes
+        </message-destination-usage>
+        <message-destination-link>CorporateStocks
+        </message-destination-link>
+        </message-destination-ref>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description" type="jakartaee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="message-destination-ref-name" type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The message-destination-ref-name element specifies
+            the name of a message destination reference; its
+            value is the environment entry name used in
+            Deployment Component code.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="message-destination-type" type="jakartaee:message-destination-typeType" minOccurs="0"/>
+      <xsd:element name="message-destination-usage" type="jakartaee:message-destination-usageType" minOccurs="0"/>
+      <xsd:element name="message-destination-link" type="jakartaee:message-destination-linkType" minOccurs="0"/>
+      <xsd:group ref="jakartaee:resourceGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="message-destination-usageType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The message-destination-usageType specifies the use of the
+        message destination indicated by the reference.  The value
+        indicates whether messages are consumed from the message
+        destination, produced for the destination, or both.  The
+        Assembler makes use of this information in linking producers
+        of a destination with its consumers.
+        
+        The value of the message-destination-usage element must be
+        one of the following:
+        Consumes
+        Produces
+        ConsumesProduces
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:enumeration value="Consumes"/>
+        <xsd:enumeration value="Produces"/>
+        <xsd:enumeration value="ConsumesProduces"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="message-destination-typeType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        The message-destination-typeType specifies the type of
+        the destination. The type is specified by the Java interface
+        expected to be implemented by the destination.
+        
+        Example: 
+        
+        <message-destination-type>jakarta.jms.Queue
+        </message-destination-type>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:fully-qualified-classType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="message-destination-linkType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The message-destination-linkType is used to link a message
+        destination reference or message-driven bean to a message
+        destination.
+        
+        The Assembler sets the value to reflect the flow of messages
+        between producers and consumers in the application.
+        
+        The value must be the message-destination-name of a message
+        destination in the same Deployment File or in another
+        Deployment File in the same Jakarta EE application unit.
+        
+        Alternatively, the value may be composed of a path name
+        specifying a Deployment File containing the referenced
+        message destination with the message-destination-name of the
+        destination appended and separated from the path name by
+        "#". The path name is relative to the Deployment File
+        containing Deployment Component that is referencing the
+        message destination.  This allows multiple message
+        destinations with the same name to be uniquely identified.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="transaction-supportType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The transaction-supportType specifies the level of
+        transaction support provided by the resource adapter. It is
+        used by transaction-support elements.
+        
+        The value must be one of the following:
+        
+        NoTransaction
+        LocalTransaction
+        XATransaction
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:enumeration value="NoTransaction"/>
+        <xsd:enumeration value="LocalTransaction"/>
+        <xsd:enumeration value="XATransaction"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+</xsd:schema>
\ No newline at end of file
diff --git a/appserver/deployment/schemas/src/main/resources/glassfish/lib/schemas/permissions_10.xsd b/appserver/deployment/schemas/src/main/resources/glassfish/lib/schemas/permissions_10.xsd
new file mode 100644
index 0000000..fdb3c9d
--- /dev/null
+++ b/appserver/deployment/schemas/src/main/resources/glassfish/lib/schemas/permissions_10.xsd
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
+            targetNamespace="https://jakarta.ee/xml/ns/jakartaee"
+            xmlns:jakartaee="https://jakarta.ee/xml/ns/jakartaee"
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+            elementFormDefault="qualified"
+            attributeFormDefault="unqualified"
+            version="10">
+  <xsd:annotation>
+    <xsd:documentation>
+
+      Copyright (c) 2009, 2021 Oracle and/or its affiliates. All rights reserved.
+      
+      This program and the accompanying materials are made available under the
+      terms of the Eclipse Public License v. 2.0, which is available at
+      http://www.eclipse.org/legal/epl-2.0.
+      
+      This Source Code may also be made available under the following Secondary
+      Licenses when the conditions for such availability set forth in the
+      Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+      version 2 with the GNU Classpath Exception, which is available at
+      https://www.gnu.org/software/classpath/license.html.
+      
+      SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      <![CDATA[
+      This is the XML Schema for the application or module declared permissions 10.
+      The declared permissions file must be named "META-INF/permissions.xml" in the
+      application's ear file, or in a module's META-INF/permissions.xml if
+      the module is deployed standalone.  All declared permissions must indicate
+      the declared permissions schema by using the Jakarta EE namespace:
+      
+      https://jakarta.ee/xml/ns/jakartaee
+      
+      and indicate the version of the schema by
+      using the version element as shown below:
+      
+      <permissions xmlns="https://jakarta.ee/xml/ns/jakartaee"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee 
+      	https://jakarta.ee/xml/ns/jakartaee/permissions_10.xsd"
+      version="10">
+      ...
+      </permisssions>
+      
+      The instance documents may indicate the published version of
+      the schema using the xsi:schemaLocation attribute for Jakarta EE
+      namespace with the following location:
+      
+      https://jakarta.ee/xml/ns/jakartaee/permissions_10.xsd
+      
+      ]]>
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+
+      The following conventions apply to all Jakarta EE
+      deployment descriptor elements unless indicated otherwise.
+      
+      - In elements that specify a pathname to a file within the
+      same JAR file, relative filenames (i.e., those not
+      starting with "/") are considered relative to the root of
+      the JAR file's namespace.  Absolute filenames (i.e., those
+      starting with "/") also specify names in the root of the
+      JAR file's namespace.  In general, relative names are
+      preferred.  The exception is .war files where absolute
+      names are preferred for consistency with the Servlet API.
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:include schemaLocation="jakartaee_10.xsd"/>
+
+
+<!-- **************************************************** -->
+
+  <xsd:element name="permissions">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The permissions element is the root element in a
+        declared permissions file. The declared permissions file
+        declares the code based permissions granted to classes and libraries 
+        packaged in the application archive, or in a module if the module is
+        deployed standalone.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+
+<!-- **************************************************** -->
+
+    <xsd:complexType>
+      <xsd:sequence>
+        <xsd:element name="permission"
+                     maxOccurs="unbounded"
+                     minOccurs="0">
+          <xsd:annotation>
+            <xsd:documentation>
+
+              Each permission element declares a permission.  If no permission
+              elements are declared, the application or module needs no special
+              permissions, and the Jakarta EE product may deploy it with no
+              permissions beyond those necessary for the operation of the
+              container.
+              
+              For details on the definition of the 'name' and 'actions'
+              elements, refer to the Java API documentation for the class
+              java.security.Permission, and its derived classes.
+              
+            </xsd:documentation>
+          </xsd:annotation>
+
+<!-- **************************************************** -->
+
+          <xsd:complexType>
+            <xsd:sequence>
+              <xsd:element type="jakartaee:fully-qualified-classType"
+                           name="class-name"/>
+              <xsd:element type="jakartaee:string"
+                           name="name"
+                           minOccurs="0"/>
+              <xsd:element type="jakartaee:string"
+                           name="actions"
+                           minOccurs="0"/>
+            </xsd:sequence>
+          </xsd:complexType>
+        </xsd:element>
+      </xsd:sequence>
+      <xsd:attribute name="version"
+                     type="jakartaee:dewey-versionType"
+                     fixed="10"
+                     use="required">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The required value for the version is 10.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:attribute>
+    </xsd:complexType>
+  </xsd:element>
+
+</xsd:schema>
diff --git a/appserver/distributions/glassfish-common/pom.xml b/appserver/distributions/glassfish-common/pom.xml
index 5aadcff..781b7f8 100644
--- a/appserver/distributions/glassfish-common/pom.xml
+++ b/appserver/distributions/glassfish-common/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.distributions</groupId>
         <artifactId>distributions</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>glassfish-common</artifactId>
diff --git a/appserver/distributions/glassfish-common/src/main/resources/README.txt b/appserver/distributions/glassfish-common/src/main/resources/README.txt
index cdffcbc..6a6e479 100644
--- a/appserver/distributions/glassfish-common/src/main/resources/README.txt
+++ b/appserver/distributions/glassfish-common/src/main/resources/README.txt
@@ -24,8 +24,8 @@
 The 'asadmin' command-line utility is used to control and manage GlassFish (start, stop, configure, deploy applications, etc).
 
 To start GlassFish, just go in the directory where GlassFish is located and type:
-        On Unix: glassfish6/glassfish/bin/asadmin start-domain
-        On Windows: glassfish6\glassfish\bin\asadmin start-domain
+        On Unix: glassfish7/glassfish/bin/asadmin start-domain
+        On Windows: glassfish7\glassfish\bin\asadmin start-domain
 
 After a few seconds, GlassFish will be up and ready to accept requests. The default 'domain1' domain is configured to listen on port 8080. In your browser, go to http://localhost:8080 to see the default landing page.
 
@@ -36,14 +36,14 @@
 =====================
 
 To stop GlassFish, just issue the following command :
-        On Unix: glassfish6/glassfish/bin/asadmin stop-domain
-        On Windows: glassfish6\glassfish\bin\asadmin stop-domain
+        On Unix: glassfish7/glassfish/bin/asadmin stop-domain
+        On Windows: glassfish7\glassfish\bin\asadmin stop-domain
 
 
 4. Where to go next?
 ====================
 
-Open the following local file in your browser: glassfish6/glassfish/docs/quickstart.html. It contains useful information such as the details about the pre-configured 'domain1', links to the GlassFish Documentation, etc.
+Open the following local file in your browser: glassfish7/glassfish/docs/quickstart.html. It contains useful information such as the details about the pre-configured 'domain1', links to the GlassFish Documentation, etc.
 
 Make sure to also check the GlassFish ${project.version} Documentation contains important information : https://glassfish.org/docs/#current
 
diff --git a/appserver/distributions/glassfish/pom.xml b/appserver/distributions/glassfish/pom.xml
index 08cc6ea..77f1dcf 100644
--- a/appserver/distributions/glassfish/pom.xml
+++ b/appserver/distributions/glassfish/pom.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
+    Copyright (c) 2021, 2022 Contributors to Eclipse Foundation.
     Copyright (c) 1997, 2021 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
@@ -23,13 +24,18 @@
     <parent>
         <groupId>org.glassfish.main.distributions</groupId>
         <artifactId>distributions</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>glassfish</artifactId>
     <packaging>glassfish-distribution</packaging>
 
-    <name>Glassfish Distribution</name>
+    <name>Glassfish Full Profile Distribution</name>
+
+    <properties>
+        <glassfish.modules>${project.build.directory}/stage/glassfish7/glassfish/modules</glassfish.modules>
+        <patches>${basedir}/src/main/patches</patches>
+    </properties>
 
     <dependencies>
         <dependency>
diff --git a/appserver/distributions/pom.xml b/appserver/distributions/pom.xml
index 4ed16a1..85cbe1d 100644
--- a/appserver/distributions/pom.xml
+++ b/appserver/distributions/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.main.distributions</groupId>
diff --git a/appserver/distributions/web/pom.xml b/appserver/distributions/web/pom.xml
index f3f39c7..8e3edc4 100644
--- a/appserver/distributions/web/pom.xml
+++ b/appserver/distributions/web/pom.xml
@@ -23,13 +23,18 @@
     <parent>
         <groupId>org.glassfish.main.distributions</groupId>
         <artifactId>distributions</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>web</artifactId>
     <packaging>glassfish-distribution</packaging>
 
-    <name>Glassfish Web Distribution</name>
+    <name>Glassfish Web Profile Distribution</name>
+
+    <properties>
+        <glassfish.modules>${project.build.directory}/stage/glassfish7/glassfish/modules</glassfish.modules>
+        <patches>${basedir}/src/main/patches</patches>
+    </properties>
 
     <dependencies>
         <dependency>
@@ -59,7 +64,6 @@
             <optional>true</optional>
         </dependency>
 
-        <!-- following dependencies are needed to run tests... -->
         <dependency>
             <groupId>jakarta.servlet</groupId>
             <artifactId>jakarta.servlet-api</artifactId>
diff --git a/appserver/ejb/ejb-all/pom.xml b/appserver/ejb/ejb-all/pom.xml
index 045dd61..47900b7 100755
--- a/appserver/ejb/ejb-all/pom.xml
+++ b/appserver/ejb/ejb-all/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.ejb</groupId>
         <artifactId>ejb</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/ejb/ejb-client/pom.xml b/appserver/ejb/ejb-client/pom.xml
index 73d0945..33c640b 100755
--- a/appserver/ejb/ejb-client/pom.xml
+++ b/appserver/ejb/ejb-client/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.ejb</groupId>
         <artifactId>ejb</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>ejb-client</artifactId>
diff --git a/appserver/ejb/ejb-connector/pom.xml b/appserver/ejb/ejb-connector/pom.xml
index b2891d1..f468719 100755
--- a/appserver/ejb/ejb-connector/pom.xml
+++ b/appserver/ejb/ejb-connector/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.ejb</groupId>
         <artifactId>ejb</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/ejb/ejb-container/pom.xml b/appserver/ejb/ejb-container/pom.xml
index 63309d4..bd1d629 100755
--- a/appserver/ejb/ejb-container/pom.xml
+++ b/appserver/ejb/ejb-container/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.ejb</groupId>
         <artifactId>ejb</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/ejb/ejb-full-container/pom.xml b/appserver/ejb/ejb-full-container/pom.xml
index a242e66..7cd0487 100644
--- a/appserver/ejb/ejb-full-container/pom.xml
+++ b/appserver/ejb/ejb-full-container/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.ejb</groupId>
         <artifactId>ejb</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/ejb/ejb-internal-api/pom.xml b/appserver/ejb/ejb-internal-api/pom.xml
index bfd56f9..f84ae03 100755
--- a/appserver/ejb/ejb-internal-api/pom.xml
+++ b/appserver/ejb/ejb-internal-api/pom.xml
@@ -23,7 +23,7 @@
     <parent>
        <groupId>org.glassfish.main.ejb</groupId>
        <artifactId>ejb</artifactId>
-       <version>6.2.6-SNAPSHOT</version>
+       <version>7.0.0-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/ejb/ejb-timer-databases/pom.xml b/appserver/ejb/ejb-timer-databases/pom.xml
index 3840550..40d1ead 100644
--- a/appserver/ejb/ejb-timer-databases/pom.xml
+++ b/appserver/ejb/ejb-timer-databases/pom.xml
@@ -26,7 +26,7 @@
     <parent>
         <groupId>org.glassfish.main.ejb</groupId>
         <artifactId>ejb</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>ejb-timer-databases</artifactId>
diff --git a/appserver/ejb/ejb-timer-service-app/pom.xml b/appserver/ejb/ejb-timer-service-app/pom.xml
index e771972..21f1198 100644
--- a/appserver/ejb/ejb-timer-service-app/pom.xml
+++ b/appserver/ejb/ejb-timer-service-app/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.ejb</groupId>
         <artifactId>ejb</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/ejb/pom.xml b/appserver/ejb/pom.xml
index 3daaaec..1fc618b 100755
--- a/appserver/ejb/pom.xml
+++ b/appserver/ejb/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.main.ejb</groupId>
diff --git a/appserver/extras/appserv-rt/dist-frag/pom.xml b/appserver/extras/appserv-rt/dist-frag/pom.xml
index 3d82e9e..a9cb1b9 100644
--- a/appserver/extras/appserv-rt/dist-frag/pom.xml
+++ b/appserver/extras/appserv-rt/dist-frag/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.extras</groupId>
         <artifactId>appserv-rt-pom</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>appserv-rt-frag</artifactId>
diff --git a/appserver/extras/appserv-rt/manifest-jar/pom.xml b/appserver/extras/appserv-rt/manifest-jar/pom.xml
index b96a9ca..939ad32 100644
--- a/appserver/extras/appserv-rt/manifest-jar/pom.xml
+++ b/appserver/extras/appserv-rt/manifest-jar/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.extras</groupId>
         <artifactId>appserv-rt-pom</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/extras/appserv-rt/pom.xml b/appserver/extras/appserv-rt/pom.xml
index 554fc17..1483cc9 100644
--- a/appserver/extras/appserv-rt/pom.xml
+++ b/appserver/extras/appserv-rt/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.extras</groupId>
         <artifactId>extras</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/extras/embedded/all/pom.xml b/appserver/extras/embedded/all/pom.xml
index c3ea234..11bf5cb 100644
--- a/appserver/extras/embedded/all/pom.xml
+++ b/appserver/extras/embedded/all/pom.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
+    Copyright (c) 2021 Contributors to Eclipse Foundation.
     Copyright (c) 1997, 2021 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
@@ -20,19 +21,24 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
 
-    <parent>
+   <parent>
         <groupId>org.glassfish.main.extras</groupId>
         <artifactId>extras</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
-    <artifactId>glassfish-embedded-all</artifactId>
-    <packaging>jar</packaging>
+   <artifactId>glassfish-embedded-all</artifactId>
+   <packaging>jar</packaging>
 
-    <name>Embedded GlassFish All-In-One</name>
+   <name>Embedded GlassFish All-In-One</name>
 
-    <dependencies>
+   <properties>
+        <artifact-collection.directory>${project.build.directory}/jars</artifact-collection.directory>
+        <rar.directory>${project.build.directory}/rars</rar.directory>
+    </properties>
+
+   <dependencies>
         <dependency>
             <groupId>org.glassfish.external</groupId>
             <artifactId>antlr</artifactId>
@@ -283,13 +289,23 @@
             <optional>true</optional>
         </dependency>
         <dependency>
-            <groupId>com.sun.mail</groupId>
-            <artifactId>jakarta.mail</artifactId>
+            <groupId>jakarta.mail</groupId>
+            <artifactId>jakarta.mail-api</artifactId>
             <optional>true</optional>
         </dependency>
         <dependency>
-            <groupId>com.sun.activation</groupId>
-            <artifactId>jakarta.activation</artifactId>
+            <groupId>org.eclipse.angus</groupId>
+            <artifactId>angus-mail</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>jakarta.activation</groupId>
+            <artifactId>jakarta.activation-api</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.angus</groupId>
+            <artifactId>angus-activation</artifactId>
             <optional>true</optional>
         </dependency>
 
@@ -1307,8 +1323,8 @@
             <optional>true</optional>
         </dependency>
         <dependency>
-            <groupId>org.glassfish</groupId>
-            <artifactId>jakarta.json</artifactId>
+            <groupId>org.eclipse.parsson</groupId>
+            <artifactId>parsson</artifactId>
             <optional>true</optional>
         </dependency>
         <dependency>
@@ -1372,6 +1388,10 @@
             <optional>true</optional>
         </dependency>
         <dependency>
+            <groupId>org.apache.santuario</groupId>
+            <artifactId>xmlsec</artifactId>
+        </dependency>
+        <dependency>
             <groupId>org.codehaus.woodstox</groupId>
             <artifactId>stax2-api</artifactId>
             <optional>true</optional>
@@ -1489,6 +1509,11 @@
             <optional>true</optional>
         </dependency>
         <dependency>
+            <groupId>jakarta.enterprise</groupId>
+            <artifactId>jakarta.enterprise.lang-model</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
             <groupId>jakarta.jms</groupId>
             <artifactId>jakarta.jms-api</artifactId>
             <optional>true</optional>
@@ -1524,8 +1549,8 @@
             <optional>true</optional>
         </dependency>
         <dependency>
-            <groupId>org.glassfish</groupId>
-            <artifactId>jakarta.el</artifactId>
+            <groupId>org.glassfish.expressly</groupId>
+            <artifactId>expressly</artifactId>
             <optional>true</optional>
         </dependency>
         <dependency>
@@ -1534,6 +1559,11 @@
             <optional>true</optional>
         </dependency>
         <dependency>
+            <groupId>jakarta.websocket</groupId>
+            <artifactId>jakarta.websocket-client-api</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
             <groupId>jakarta.security.enterprise</groupId>
             <artifactId>jakarta.security.enterprise-api</artifactId>
             <optional>true</optional>
@@ -1607,7 +1637,7 @@
         <dependency>
             <groupId>org.glassfish.mq</groupId>
             <artifactId>mq-distribution</artifactId>
-            <version>${mq.version}</version>
+            <version>${openmq.version}</version>
             <type>zip</type>
             <optional>true</optional>
         </dependency>
@@ -1627,12 +1657,7 @@
         </dependency>
     </dependencies>
 
-    <properties>
-        <artifact-collection.directory>${project.build.directory}/jars</artifact-collection.directory>
-        <rar.directory>${project.build.directory}/rars</rar.directory>
-    </properties>
-
-    <build>
+   <build>
         <defaultGoal>install</defaultGoal>
         <plugins>
             <plugin>
diff --git a/appserver/extras/embedded/common/bootstrap/pom.xml b/appserver/extras/embedded/common/bootstrap/pom.xml
index 7c46268..5e07ddd 100644
--- a/appserver/extras/embedded/common/bootstrap/pom.xml
+++ b/appserver/extras/embedded/common/bootstrap/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.glassfish.main.extras</groupId>
     <artifactId>glassfish-embedded-common</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <relativePath>../pom.xml</relativePath>
   </parent>
 
diff --git a/appserver/extras/embedded/common/bootstrap/src/main/java/org/glassfish/uberjar/bootstrap/UberJarOSGiGlassFishRuntimeBuilder.java b/appserver/extras/embedded/common/bootstrap/src/main/java/org/glassfish/uberjar/bootstrap/UberJarOSGiGlassFishRuntimeBuilder.java
index 99f17e9..e541a6b 100644
--- a/appserver/extras/embedded/common/bootstrap/src/main/java/org/glassfish/uberjar/bootstrap/UberJarOSGiGlassFishRuntimeBuilder.java
+++ b/appserver/extras/embedded/common/bootstrap/src/main/java/org/glassfish/uberjar/bootstrap/UberJarOSGiGlassFishRuntimeBuilder.java
@@ -48,6 +48,7 @@
 
     private Framework framework;
 
+    @Override
     public boolean handles(BootstrapProperties bsOptions) {
         // default is Felix
         /* Constants.Platform platform =
@@ -93,6 +94,7 @@
 
     private static final String UBER_JAR_URI = "org.glassfish.embedded.osgimain.jarURI";
 
+    @Override
     public GlassFishRuntime build(BootstrapProperties bsOptions) throws GlassFishException {
         // Get all the properties in the Bootstrap options and then manipulate the Properties object.
         Properties props = bsOptions.getProperties();
@@ -201,13 +203,13 @@
 
     private String getDefaultInstallRoot() {
         String userDir = System.getProperty("user.home");
-        return new File(userDir, ".glassfish6-embedded").getAbsolutePath();
+        return new File(userDir, ".glassfish7-embedded").getAbsolutePath();
     }
 
     private String getDefaultInstanceRoot() {
         String userDir = System.getProperty("user.home");
         String fs = File.separator;
-        return new File(userDir, ".glassfish6-embedded" + fs + "domains" + fs + "domain1").getAbsolutePath();
+        return new File(userDir, ".glassfish7-embedded" + fs + "domains" + fs + "domain1").getAbsolutePath();
     }
 
     private boolean isOSGiEnv() {
diff --git a/appserver/extras/embedded/common/installroot-builder/pom.xml b/appserver/extras/embedded/common/installroot-builder/pom.xml
index 5a5ccb6..20a1642 100644
--- a/appserver/extras/embedded/common/installroot-builder/pom.xml
+++ b/appserver/extras/embedded/common/installroot-builder/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.glassfish.main.extras</groupId>
     <artifactId>glassfish-embedded-common</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <relativePath>../pom.xml</relativePath>
   </parent>
 
diff --git a/appserver/extras/embedded/common/installroot-builder/src/main/java/org/glassfish/uberjar/builder/installroot/InstallRootBuilder.java b/appserver/extras/embedded/common/installroot-builder/src/main/java/org/glassfish/uberjar/builder/installroot/InstallRootBuilder.java
index 2770560..312f466 100644
--- a/appserver/extras/embedded/common/installroot-builder/src/main/java/org/glassfish/uberjar/builder/installroot/InstallRootBuilder.java
+++ b/appserver/extras/embedded/common/installroot-builder/src/main/java/org/glassfish/uberjar/builder/installroot/InstallRootBuilder.java
@@ -32,7 +32,7 @@
 public class InstallRootBuilder implements BundleActivator {
 
     private static final Logger logger = Logger.getLogger("embedded-glassfish");
-    private static String resourceroot = "glassfish6/glassfish/";
+    private static String resourceroot = "glassfish7/glassfish/";
 
     public void start(BundleContext context) throws Exception {
         String installRoot = context.getProperty("com.sun.aas.installRoot");
diff --git a/appserver/extras/embedded/common/installroot-builder/src/main/java/org/glassfish/uberjar/builder/installroot/InstallRootBuilderUtil.java b/appserver/extras/embedded/common/installroot-builder/src/main/java/org/glassfish/uberjar/builder/installroot/InstallRootBuilderUtil.java
index 67af352..09a8ed2 100644
--- a/appserver/extras/embedded/common/installroot-builder/src/main/java/org/glassfish/uberjar/builder/installroot/InstallRootBuilderUtil.java
+++ b/appserver/extras/embedded/common/installroot-builder/src/main/java/org/glassfish/uberjar/builder/installroot/InstallRootBuilderUtil.java
@@ -34,7 +34,7 @@
 public class InstallRootBuilderUtil {
 
     private static final Logger logger = Logger.getLogger("embedded-glassfish");
-    private static String resourceroot = "glassfish6/glassfish/";
+    private static String resourceroot = "glassfish7/glassfish/";
 
     public static void buildInstallRoot(String installRoot) throws Exception {
         ClassLoader cl = InstallRootBuilderUtil.class.getClassLoader();
diff --git a/appserver/extras/embedded/common/instanceroot-builder/pom.xml b/appserver/extras/embedded/common/instanceroot-builder/pom.xml
index 2365b20..51021a7 100644
--- a/appserver/extras/embedded/common/instanceroot-builder/pom.xml
+++ b/appserver/extras/embedded/common/instanceroot-builder/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.glassfish.main.extras</groupId>
     <artifactId>glassfish-embedded-common</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <relativePath>../pom.xml</relativePath>
   </parent>
 
diff --git a/appserver/extras/embedded/common/instanceroot-builder/src/main/java/org/glassfish/uberjar/builder/instanceroot/InstanceRootBuilder.java b/appserver/extras/embedded/common/instanceroot-builder/src/main/java/org/glassfish/uberjar/builder/instanceroot/InstanceRootBuilder.java
index 552e480..2052ac6 100644
--- a/appserver/extras/embedded/common/instanceroot-builder/src/main/java/org/glassfish/uberjar/builder/instanceroot/InstanceRootBuilder.java
+++ b/appserver/extras/embedded/common/instanceroot-builder/src/main/java/org/glassfish/uberjar/builder/instanceroot/InstanceRootBuilder.java
@@ -32,7 +32,7 @@
 public class InstanceRootBuilder implements BundleActivator {
 
     private static final Logger logger = Logger.getLogger("embedded-glassfish");
-    private static String resourceroot = "glassfish6/glassfish/domains/domain1/";
+    private static String resourceroot = "glassfish7/glassfish/domains/domain1/";
 
     public void start(BundleContext context) throws Exception {
         String instanceRoot = context.getProperty("com.sun.aas.instanceRoot");
diff --git a/appserver/extras/embedded/common/instanceroot-builder/src/main/java/org/glassfish/uberjar/builder/instanceroot/InstanceRootBuilderUtil.java b/appserver/extras/embedded/common/instanceroot-builder/src/main/java/org/glassfish/uberjar/builder/instanceroot/InstanceRootBuilderUtil.java
index 5e57e63..8f59479 100644
--- a/appserver/extras/embedded/common/instanceroot-builder/src/main/java/org/glassfish/uberjar/builder/instanceroot/InstanceRootBuilderUtil.java
+++ b/appserver/extras/embedded/common/instanceroot-builder/src/main/java/org/glassfish/uberjar/builder/instanceroot/InstanceRootBuilderUtil.java
@@ -35,7 +35,7 @@
 public class InstanceRootBuilderUtil {
 
     private static final Logger logger = Logger.getLogger("embedded-glassfish");
-    private static String resourceroot = "glassfish6/glassfish/domains/domain1/";
+    private static String resourceroot = "glassfish7/glassfish/domains/domain1/";
 
     public static void buildInstanceRoot(String instanceroot, String configFileURI) throws Exception {
         ClassLoader cl = InstanceRootBuilderUtil.class.getClassLoader();
diff --git a/appserver/extras/embedded/common/osgi-main/pom.xml b/appserver/extras/embedded/common/osgi-main/pom.xml
index bb184b3..44bafcd 100644
--- a/appserver/extras/embedded/common/osgi-main/pom.xml
+++ b/appserver/extras/embedded/common/osgi-main/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.glassfish.main.extras</groupId>
     <artifactId>glassfish-embedded-common</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <relativePath>../pom.xml</relativePath>
   </parent>
 
diff --git a/appserver/extras/embedded/common/osgi-modules-uninstaller/pom.xml b/appserver/extras/embedded/common/osgi-modules-uninstaller/pom.xml
index b25a0ad..29e416a 100644
--- a/appserver/extras/embedded/common/osgi-modules-uninstaller/pom.xml
+++ b/appserver/extras/embedded/common/osgi-modules-uninstaller/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.glassfish.main.extras</groupId>
     <artifactId>glassfish-embedded-common</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <relativePath>../pom.xml</relativePath>
   </parent>
 
diff --git a/appserver/extras/embedded/common/pom.xml b/appserver/extras/embedded/common/pom.xml
index f270d23..1953df7 100644
--- a/appserver/extras/embedded/common/pom.xml
+++ b/appserver/extras/embedded/common/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.glassfish.main.extras</groupId>
         <artifactId>extras</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/extras/embedded/nucleus/pom.xml b/appserver/extras/embedded/nucleus/pom.xml
index 20d2f5c..3b5e608 100644
--- a/appserver/extras/embedded/nucleus/pom.xml
+++ b/appserver/extras/embedded/nucleus/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.extras</groupId>
         <artifactId>extras</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/extras/embedded/pom.xml b/appserver/extras/embedded/pom.xml
index 7318444..b66929d 100644
--- a/appserver/extras/embedded/pom.xml
+++ b/appserver/extras/embedded/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.extras</groupId>
         <artifactId>extras</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>embedded</artifactId>
diff --git a/appserver/extras/embedded/shell/glassfish-embedded-shell-frag/pom.xml b/appserver/extras/embedded/shell/glassfish-embedded-shell-frag/pom.xml
index 11997a5..98fbe71 100644
--- a/appserver/extras/embedded/shell/glassfish-embedded-shell-frag/pom.xml
+++ b/appserver/extras/embedded/shell/glassfish-embedded-shell-frag/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.extras</groupId>
         <artifactId>extras</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../../../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/extras/embedded/shell/glassfish-embedded-shell/pom.xml b/appserver/extras/embedded/shell/glassfish-embedded-shell/pom.xml
index d1ffa84..485894e 100755
--- a/appserver/extras/embedded/shell/glassfish-embedded-shell/pom.xml
+++ b/appserver/extras/embedded/shell/glassfish-embedded-shell/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.extras</groupId>
         <artifactId>extras</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../../../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/extras/embedded/shell/glassfish-embedded-static-shell-frag/pom.xml b/appserver/extras/embedded/shell/glassfish-embedded-static-shell-frag/pom.xml
index ea7d63d..4df064f 100644
--- a/appserver/extras/embedded/shell/glassfish-embedded-static-shell-frag/pom.xml
+++ b/appserver/extras/embedded/shell/glassfish-embedded-static-shell-frag/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.extras</groupId>
         <artifactId>extras</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../../../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/extras/embedded/shell/glassfish-embedded-static-shell/pom.xml b/appserver/extras/embedded/shell/glassfish-embedded-static-shell/pom.xml
index 35ada01..ddb5cda 100755
--- a/appserver/extras/embedded/shell/glassfish-embedded-static-shell/pom.xml
+++ b/appserver/extras/embedded/shell/glassfish-embedded-static-shell/pom.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
+    Copyright (c) 2021 Contributors to Eclipse Foundation.
     Copyright (c) 1997, 2021 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
@@ -23,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.main.extras</groupId>
         <artifactId>extras</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../../../pom.xml</relativePath>
     </parent>
 
@@ -552,13 +553,18 @@
             <version>${project.version}</version>
             <optional>true</optional>
         </dependency>
-        <!-- glassfish-jcdi -->
+        <!-- glassfish-cdi -->
         <dependency>
             <groupId>jakarta.enterprise</groupId>
             <artifactId>jakarta.enterprise.cdi-api</artifactId>
             <optional>true</optional>
         </dependency>
         <dependency>
+            <groupId>jakarta.enterprise</groupId>
+            <artifactId>jakarta.enterprise.lang-model</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
             <groupId>org.glassfish.main.web</groupId>
             <artifactId>cdi-api-fragment</artifactId>
             <version>${project.version}</version>
@@ -1039,19 +1045,28 @@
             <artifactId>jakarta.servlet.jsp.jstl</artifactId>
             <optional>true</optional>
         </dependency>
+        
+        <!-- Jakarta Expression Language -->
         <dependency>
             <groupId>jakarta.el</groupId>
             <artifactId>jakarta.el-api</artifactId>
             <optional>true</optional>
         </dependency>
         <dependency>
-            <groupId>org.glassfish</groupId>
-            <artifactId>jakarta.el</artifactId>
+            <groupId>org.glassfish.expressly</groupId>
+            <artifactId>expressly</artifactId>
+            <optional>true</optional>
+        </dependency>
+        
+        <!-- Jakarta WebSocket -->
+        <dependency>
+            <groupId>jakarta.websocket</groupId>
+            <artifactId>jakarta.websocket-api</artifactId>
             <optional>true</optional>
         </dependency>
         <dependency>
             <groupId>jakarta.websocket</groupId>
-            <artifactId>jakarta.websocket-api</artifactId>
+            <artifactId>jakarta.websocket-client-api</artifactId>
             <optional>true</optional>
         </dependency>
         <dependency>
@@ -1094,12 +1109,15 @@
             <artifactId>tyrus-container-glassfish-ejb</artifactId>
             <optional>true</optional>
         </dependency>
+        
         <dependency>
             <groupId>org.glassfish.main.security</groupId>
             <artifactId>websecurity</artifactId>
             <version>${project.version}</version>
             <optional>true</optional>
         </dependency>
+        
+        <!-- Jakarta Security -->
         <dependency>
             <groupId>org.glassfish.soteria</groupId>
             <artifactId>jakarta.security.enterprise</artifactId>
@@ -1111,8 +1129,8 @@
             <optional>true</optional>
         </dependency>
         <dependency>
-            <groupId>org.glassfish</groupId>
-            <artifactId>jakarta.json</artifactId>
+            <groupId>org.eclipse.parsson</groupId>
+            <artifactId>parsson</artifactId>
             <optional>true</optional>
         </dependency>
 
@@ -1336,6 +1354,10 @@
             <optional>true</optional>
         </dependency>
         <dependency>
+            <groupId>org.apache.santuario</groupId>
+            <artifactId>xmlsec</artifactId>
+        </dependency>
+        <dependency>
             <groupId>org.codehaus.woodstox</groupId>
             <artifactId>stax2-api</artifactId>
             <optional>true</optional>
diff --git a/appserver/extras/embedded/shell/pom.xml b/appserver/extras/embedded/shell/pom.xml
index 4310e13..ff9a4f3 100755
--- a/appserver/extras/embedded/shell/pom.xml
+++ b/appserver/extras/embedded/shell/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.extras</groupId>
         <artifactId>extras</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/extras/embedded/tests/pom.xml b/appserver/extras/embedded/tests/pom.xml
index 478b4e6..b92b405 100644
--- a/appserver/extras/embedded/tests/pom.xml
+++ b/appserver/extras/embedded/tests/pom.xml
@@ -23,10 +23,11 @@
     <parent>
         <groupId>org.glassfish.main.extras</groupId>
         <artifactId>embedded</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>tests-embedded</artifactId>
+
     <name>GlassFish Embedded Modules - Tests</name>
 
     <dependencies>
diff --git a/appserver/extras/embedded/web/pom.xml b/appserver/extras/embedded/web/pom.xml
index 559524b..db247cb 100644
--- a/appserver/extras/embedded/web/pom.xml
+++ b/appserver/extras/embedded/web/pom.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
+    Copyright (c) 2021 Contributors to Eclipse Foundation.
     Copyright (c) 1997, 2021 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
@@ -23,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.main.extras</groupId>
         <artifactId>extras</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
@@ -32,6 +33,11 @@
 
     <name>Embedded GlassFish Web</name>
 
+    <properties>
+        <artifact-collection.directory>${project.build.directory}/jars</artifact-collection.directory>
+        <rar.directory>${project.build.directory}/rars</rar.directory>
+    </properties>
+
     <dependencies>
         <!-- glassfish-hk2 -->
         <dependency>
@@ -624,13 +630,23 @@
             <optional>true</optional>
         </dependency>
         <dependency>
-            <groupId>com.sun.mail</groupId>
-            <artifactId>jakarta.mail</artifactId>
+            <groupId>jakarta.mail</groupId>
+            <artifactId>jakarta.mail-api</artifactId>
             <optional>true</optional>
         </dependency>
         <dependency>
-            <groupId>com.sun.activation</groupId>
-            <artifactId>jakarta.activation</artifactId>
+            <groupId>org.eclipse.angus</groupId>
+            <artifactId>angus-mail</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>jakarta.activation</groupId>
+            <artifactId>jakarta.activation-api</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.angus</groupId>
+            <artifactId>angus-activation</artifactId>
             <optional>true</optional>
         </dependency>
         <dependency>
@@ -983,19 +999,28 @@
             <artifactId>jakarta.servlet.jsp.jstl</artifactId>
             <optional>true</optional>
         </dependency>
+        
+        <!-- Jakarta Expression Language -->
         <dependency>
             <groupId>jakarta.el</groupId>
             <artifactId>jakarta.el-api</artifactId>
             <optional>true</optional>
         </dependency>
         <dependency>
-            <groupId>org.glassfish</groupId>
-            <artifactId>jakarta.el</artifactId>
+            <groupId>org.glassfish.expressly</groupId>
+            <artifactId>expressly</artifactId>
+            <optional>true</optional>
+        </dependency>
+        
+        <!-- Jakarta WebSocket -->
+        <dependency>
+            <groupId>jakarta.websocket</groupId>
+            <artifactId>jakarta.websocket-api</artifactId>
             <optional>true</optional>
         </dependency>
         <dependency>
             <groupId>jakarta.websocket</groupId>
-            <artifactId>jakarta.websocket-api</artifactId>
+            <artifactId>jakarta.websocket-client-api</artifactId>
             <optional>true</optional>
         </dependency>
         <dependency>
@@ -1038,6 +1063,7 @@
             <artifactId>tyrus-container-glassfish-ejb</artifactId>
             <optional>true</optional>
         </dependency>
+        
         <dependency>
             <groupId>org.glassfish.main.security</groupId>
             <artifactId>websecurity</artifactId>
@@ -1054,13 +1080,19 @@
             <artifactId>jakarta.security.enterprise-api</artifactId>
             <optional>true</optional>
         </dependency>
-        <!-- glassfish-jcdi -->
+        
+        <!-- glassfish-cdi -->
         <dependency>
             <groupId>jakarta.enterprise</groupId>
             <artifactId>jakarta.enterprise.cdi-api</artifactId>
             <optional>true</optional>
         </dependency>
         <dependency>
+            <groupId>jakarta.enterprise</groupId>
+            <artifactId>jakarta.enterprise.lang-model</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
             <groupId>org.glassfish.main.web</groupId>
             <artifactId>cdi-api-fragment</artifactId>
             <version>${project.version}</version>
@@ -1263,8 +1295,8 @@
         </dependency>
         <!-- glassfish-json -->
         <dependency>
-            <groupId>org.glassfish</groupId>
-            <artifactId>jakarta.json</artifactId>
+            <groupId>org.eclipse.parsson</groupId>
+            <artifactId>parsson</artifactId>
             <optional>true</optional>
         </dependency>
         <dependency>
@@ -1308,11 +1340,6 @@
         </dependency>
     </dependencies>
 
-    <properties>
-        <artifact-collection.directory>${project.build.directory}/jars</artifact-collection.directory>
-        <rar.directory>${project.build.directory}/rars</rar.directory>
-    </properties>
-
     <build>
         <defaultGoal>install</defaultGoal>
         <plugins>
diff --git a/appserver/extras/javaee/dist-frag/pom.xml b/appserver/extras/javaee/dist-frag/pom.xml
index 26a199d..ef785b8 100644
--- a/appserver/extras/javaee/dist-frag/pom.xml
+++ b/appserver/extras/javaee/dist-frag/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.extras</groupId>
         <artifactId>javaee-pom</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>javaee-frag</artifactId>
diff --git a/appserver/extras/javaee/manifest-jar/pom.xml b/appserver/extras/javaee/manifest-jar/pom.xml
index 22514e3..195dd98 100644
--- a/appserver/extras/javaee/manifest-jar/pom.xml
+++ b/appserver/extras/javaee/manifest-jar/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.extras</groupId>
         <artifactId>javaee-pom</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>javaee</artifactId>
@@ -37,7 +37,7 @@
                 <configuration>
                     <archive>
                         <manifestEntries>
-                            <Class-Path>../modules/jakarta.servlet-api.jar ../modules/jakarta.annotation-api.jar ../modules/jakarta.ejb-api.jar ../modules/jakarta.transaction-api.jar ../modules/jakarta.resource-api.jar ../modules/jakarta.authentication-api.jar ../modules/jakarta.authorization-api.jar ../modules/jakarta.xml.bind-api.jar ../modules/webservices-api-osgi.jar ../modules/jakarta.mail.jar ../modules/jakarta.activation.jar ../modules/jakarta.faces.jar ../modules/jakarta.servlet.jsp-api.jar ../modules/jakarta.el.jar ../modules/jakarta.el-api.jar ../modules/jakarta.servlet.jsp.jstl-api.jar ../modules/jakarta.persistence-api.jar ../modules/jakarta.jms-api.jar ../modules/hibernate-validator.jar ../modules/jakarta.validation-api.jar ../modules/cdi-api.jar ../../mq/lib/jaxm-api.jar ../modules/jakarta.ws.rs-api.jar ../modules/jakarta.json.jar ../modules/jakarta.json.bind-api.jar ../modules/jakarta.websocket-api.jar ../modules/jakarta.enterprise.concurrent-api.jar ../modules/jakarta.batch-api.jar ../modules/jakarta.inject-api.jar</Class-Path>
+                            <Class-Path>../modules/jakarta.servlet-api.jar ../modules/jakarta.annotation-api.jar ../modules/jakarta.ejb-api.jar ../modules/jakarta.transaction-api.jar ../modules/jakarta.resource-api.jar ../modules/jakarta.authentication-api.jar ../modules/jakarta.authorization-api.jar ../modules/jakarta.xml.bind-api.jar ../modules/webservices-api-osgi.jar ../modules/jakarta.mail-api.jar ../modules/jakarta.activation-api.jar ../modules/jakarta.faces.jar ../modules/jakarta.servlet.jsp-api.jar ../modules/expressly.jar ../modules/jakarta.el-api.jar ../modules/jakarta.servlet.jsp.jstl-api.jar ../modules/jakarta.persistence-api.jar ../modules/jakarta.jms-api.jar ../modules/hibernate-validator.jar ../modules/jakarta.validation-api.jar ../modules/cdi-api.jar ../modules/jakarta.ws.rs-api.jar ../modules/parsson.jar ../modules/jakarta.json.bind-api.jar ../modules/jakarta.websocket-api.jar ../modules/jakarta.websocket-client-api.jar ../modules/jakarta.enterprise.concurrent-api.jar ../modules/jakarta.batch-api.jar ../modules/jakarta.inject-api.jar</Class-Path>
                             <GlassFish-ServerExcluded>true</GlassFish-ServerExcluded>
                         </manifestEntries>
                     </archive>
diff --git a/appserver/extras/javaee/pom.xml b/appserver/extras/javaee/pom.xml
index 41a11fa..9277e20 100644
--- a/appserver/extras/javaee/pom.xml
+++ b/appserver/extras/javaee/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.extras</groupId>
         <artifactId>extras</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/extras/pom.xml b/appserver/extras/pom.xml
index 1b685e1..a201ae8 100755
--- a/appserver/extras/pom.xml
+++ b/appserver/extras/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.main.extras</groupId>
diff --git a/appserver/featuresets/debug/pom.xml b/appserver/featuresets/debug/pom.xml
index 391e8a0..c6162f5 100644
--- a/appserver/featuresets/debug/pom.xml
+++ b/appserver/featuresets/debug/pom.xml
@@ -17,62 +17,63 @@
 
 -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+>
+    <modelVersion>4.0.0</modelVersion>
 
-	<parent>
-		<groupId>org.glassfish.main.featuresets</groupId>
-		<artifactId>featuresets</artifactId>
-		<version>6.2.6-SNAPSHOT</version>
-	</parent>
+    <parent>
+        <groupId>org.glassfish.main.featuresets</groupId>
+        <artifactId>featuresets</artifactId>
+        <version>7.0.0-SNAPSHOT</version>
+    </parent>
 
-	<artifactId>debug</artifactId>
-	<description>
-		This project can be used as entry project in remote debugging, giving
-		one most dependencies of GlassFish to step through the source.
-		
-		Compile GF with mvn clean install -Pfastest,source -T10
-		
-		Start GF with ./adadmin start-domain --verbose --suspend
-		
-		In the IDE, for instance, Eclipse, go to 
-		  run - debug configurations - remote java application - project
-		And add this project there. 
-	</description>
+    <artifactId>debug</artifactId>
+    <description>
+    This project can be used as entry project in remote debugging, giving
+    one most dependencies of GlassFish to step through the source.
 
-	<name>Debug</name>
+    Compile GF with mvn clean install -Pfastest,source -T10
 
-	<dependencies>
-		<dependency>
-			<groupId>org.glassfish.main.featuresets</groupId>
-			<artifactId>glassfish</artifactId>
-			<version>${project.version}</version>
-			<type>pom</type>
-		</dependency>
-		<dependency>
-			<groupId>org.glassfish.main.featuresets</groupId>
-			<artifactId>web</artifactId>
-			<version>${project.version}</version>
-			<type>pom</type>
-		</dependency>
-		<dependency>
-			<groupId>org.glassfish.main.featuresets</groupId>
-			<artifactId>nucleus</artifactId>
-			<version>${project.version}</version>
-			<type>pom</type>
-		</dependency>
-		<dependency>
-			<groupId>org.glassfish.main.featuresets</groupId>
-			<artifactId>atomic</artifactId>
-			<version>${project.version}</version>
-			<type>pom</type>
-		</dependency>
+    Start GF with ./adadmin start-domain --verbose --suspend
 
-		<dependency>
-			<groupId>org.glassfish.main.jdbc.jdbc-ra.jdbc-core</groupId>
-			<artifactId>jdbc-core</artifactId>
-			<version>${project.version}</version>
-		</dependency>
-	</dependencies>
+    In the IDE, for instance, Eclipse, go to run - debug configurations - remote java application - project
+    And add this project there.
+  </description>
 
-</project>
\ No newline at end of file
+    <name>Debug</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.glassfish.main.featuresets</groupId>
+            <artifactId>glassfish</artifactId>
+            <version>${project.version}</version>
+            <type>pom</type>
+        </dependency>
+        <dependency>
+            <groupId>org.glassfish.main.featuresets</groupId>
+            <artifactId>web</artifactId>
+            <version>${project.version}</version>
+            <type>pom</type>
+        </dependency>
+        <dependency>
+            <groupId>org.glassfish.main.featuresets</groupId>
+            <artifactId>nucleus</artifactId>
+            <version>${project.version}</version>
+            <type>pom</type>
+        </dependency>
+        <dependency>
+            <groupId>org.glassfish.main.featuresets</groupId>
+            <artifactId>atomic</artifactId>
+            <version>${project.version}</version>
+            <type>pom</type>
+        </dependency>
+
+        <dependency>
+            <groupId>org.glassfish.main.jdbc.jdbc-ra.jdbc-core</groupId>
+            <artifactId>jdbc-core</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
+</project>
diff --git a/appserver/featuresets/glassfish/pom.xml b/appserver/featuresets/glassfish/pom.xml
index 5da620d..8f77144 100644
--- a/appserver/featuresets/glassfish/pom.xml
+++ b/appserver/featuresets/glassfish/pom.xml
@@ -23,28 +23,49 @@
     <parent>
         <groupId>org.glassfish.main.featuresets</groupId>
         <artifactId>featuresets</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>glassfish</artifactId>
     <packaging>pom</packaging>
 
     <name>Glassfish Featureset</name>
-    <description>This pom defines the set of packages for GlassFish distribution</description>
+    <description>This pom defines the set of packages for the full GlassFish distribution</description>
 
     <dependencies>
-        <!-- pull web packages -->
+        <!-- Pull web packages -->
         <dependency>
             <groupId>org.glassfish.main.featuresets</groupId>
             <artifactId>web</artifactId>
             <version>${project.version}</version>
             <type>pom</type>
         </dependency>
-
-        <!-- glassfish-common-full -->
+      
+        
+        <!-- Jakarta Concurrency -->
         <dependency>
-            <groupId>org.glassfish.main.deployment</groupId>
-            <artifactId>deployment-javaee-full</artifactId>
+            <groupId>jakarta.enterprise.concurrent</groupId>
+            <artifactId>jakarta.enterprise.concurrent-api</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.glassfish</groupId>
+            <artifactId>jakarta.enterprise.concurrent</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.glassfish.main.concurrent</groupId>
+            <artifactId>concurrent-connector</artifactId>
             <version>${project.version}</version>
             <exclusions>
                 <exclusion>
@@ -54,6 +75,50 @@
             </exclusions>
         </dependency>
         <dependency>
+            <groupId>org.glassfish.main.concurrent</groupId>
+            <artifactId>concurrent-impl</artifactId>
+            <version>${project.version}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        
+        
+        <!-- Jakarta Batch -->
+        <dependency>
+            <groupId>jakarta.batch</groupId>
+            <artifactId>jakarta.batch-api</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.ibm.jbatch</groupId>
+            <artifactId>com.ibm.jbatch.container</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.ibm.jbatch</groupId>
+            <artifactId>com.ibm.jbatch.spi</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
             <groupId>org.glassfish.main.batch</groupId>
             <artifactId>glassfish-batch-connector</artifactId>
             <version>${project.version}</version>
@@ -87,80 +152,9 @@
                 </exclusion>
             </exclusions>
         </dependency>
-        <dependency>
-            <groupId>jakarta.batch</groupId>
-            <artifactId>jakarta.batch-api</artifactId>
-            <exclusions>
-                <exclusion>
-                    <groupId>*</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>com.ibm.jbatch</groupId>
-            <artifactId>com.ibm.jbatch.container</artifactId>
-            <exclusions>
-                <exclusion>
-                    <groupId>*</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>com.ibm.jbatch</groupId>
-            <artifactId>com.ibm.jbatch.spi</artifactId>
-            <exclusions>
-                <exclusion>
-                    <groupId>*</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.glassfish.main.concurrent</groupId>
-            <artifactId>concurrent-connector</artifactId>
-            <version>${project.version}</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>*</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.glassfish.main.concurrent</groupId>
-            <artifactId>concurrent-impl</artifactId>
-            <version>${project.version}</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>*</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>jakarta.enterprise.concurrent</groupId>
-            <artifactId>jakarta.enterprise.concurrent-api</artifactId>
-            <exclusions>
-                <exclusion>
-                    <groupId>*</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.glassfish</groupId>
-            <artifactId>jakarta.enterprise.concurrent</artifactId>
-            <exclusions>
-                <exclusion>
-                    <groupId>*</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-
-        <!-- glassfish-ejb -->
+        
+        
+        <!-- Jakarta Enterprise Beans (features on top of Enterprise Beans Lite -->
         <dependency>
             <groupId>org.glassfish.main.ejb</groupId>
             <artifactId>ejb-timer-databases</artifactId>
@@ -229,8 +223,7 @@
                 </exclusion>
             </exclusions>
         </dependency>
-
-        <!-- glassfish-cmp -->
+        <!-- Jakarta Enterprise Beans - Container Managed Persistence (for compatibiliy, don't use) -->
         <dependency>
             <groupId>org.glassfish.main.persistence.cmp</groupId>
             <artifactId>cmp-ejb-mapping</artifactId>
@@ -352,15 +345,13 @@
                 </exclusion>
             </exclusions>
         </dependency>
-
-        <!-- glassfish-entitybeans-container -->
+        <!-- Jakarta Enterprise Beans - glassfish-entitybeans-container -->
         <dependency>
            <groupId>org.glassfish.main.persistence</groupId>
            <artifactId>entitybean-container</artifactId>
            <version>${project.version}</version>
         </dependency>
-
-        <!-- glassfish-corba -->
+        <!-- Jakarta Enterprise Beans - CORBA -->
         <dependency>
             <groupId>org.glassfish.corba</groupId>
             <artifactId>glassfish-corba-orb</artifactId>
@@ -392,8 +383,124 @@
             </exclusions>
         </dependency>
 
-        <!-- metro package -->
+        
+        <!-- Jakarta XML Web Services -->
+        <dependency><!-- Contains jakarta.jws, jakarta.xml.soap, jakarta.xml.ws -->
+            <groupId>org.glassfish.metro</groupId>
+            <artifactId>webservices-api-osgi</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency><!-- This is actually Metro -->
+            <groupId>org.glassfish.metro</groupId>
+            <artifactId>webservices-osgi</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency><!-- Repackaged Apache Santuario -->
+            <groupId>org.glassfish.metro</groupId>
+            <artifactId>webservices-extra-xmlsec</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
         <dependency>
+            <groupId>org.glassfish.metro</groupId>
+            <artifactId>webservices-extra-jdk-packages</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.glassfish.metro</groupId>
+            <artifactId>wstx-services</artifactId>
+            <version>${webservices.version}</version>
+            <type>war</type>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency><!-- webservices-osgi depends on ant -->
+            <groupId>org.glassfish.external</groupId>
+            <artifactId>ant</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.santuario</groupId>
+            <artifactId>xmlsec</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.woodstox</groupId>
+            <artifactId>woodstox-core</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.codehaus.woodstox</groupId>
+            <artifactId>stax2-api</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.glassfish.main.security</groupId>
+            <artifactId>webservices.security</artifactId>
+            <version>${project.version}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.glassfish.main.webservices</groupId>
+            <artifactId>webservices-scripts</artifactId>
+            <version>${project.version}</version>
+            <type>zip</type>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+         <dependency>
             <groupId>org.glassfish.main.webservices</groupId>
             <artifactId>metro-glue</artifactId>
             <version>${project.version}</version>
@@ -437,16 +544,9 @@
                 </exclusion>
             </exclusions>
         </dependency>
-        <dependency>
-            <groupId>com.sun.xml.bind</groupId>
-            <artifactId>jaxb-osgi</artifactId>
-            <exclusions>
-                <exclusion>
-                    <groupId>*</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
+        
+        
+        <!-- Jakarta XML Binding -->
         <dependency>
             <groupId>jakarta.xml.bind</groupId>
             <artifactId>jakarta.xml.bind-api</artifactId>
@@ -458,8 +558,21 @@
             </exclusions>
         </dependency>
         <dependency>
-            <groupId>com.fasterxml.woodstox</groupId>
-            <artifactId>woodstox-core</artifactId>
+            <groupId>com.sun.xml.bind</groupId>
+            <artifactId>jaxb-osgi</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        
+        
+        <!-- Jakarta Activation -->
+        <dependency>
+            <groupId>jakarta.activation</groupId>
+            <artifactId>jakarta.activation-api</artifactId>
             <exclusions>
                 <exclusion>
                     <groupId>*</groupId>
@@ -468,8 +581,8 @@
             </exclusions>
         </dependency>
         <dependency>
-            <groupId>org.glassfish.metro</groupId>
-            <artifactId>webservices-osgi</artifactId>
+            <groupId>org.eclipse.angus</groupId>
+            <artifactId>angus-activation</artifactId>
             <exclusions>
                 <exclusion>
                     <groupId>*</groupId>
@@ -477,52 +590,23 @@
                 </exclusion>
             </exclusions>
         </dependency>
-        <!-- webservices-osgi depends on ant -->
+        
+        
+        <!-- Jakarta Messaging -->
         <dependency>
-            <groupId>org.glassfish.external</groupId>
-            <artifactId>ant</artifactId>
+            <groupId>jakarta.jms</groupId>
+            <artifactId>jakarta.jms-api</artifactId>
             <exclusions>
                 <exclusion>
                     <groupId>*</groupId>
                     <artifactId>*</artifactId>
                 </exclusion>
             </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.glassfish.metro</groupId>
-            <artifactId>webservices-extra-jdk-packages</artifactId>
-            <exclusions>
-                <exclusion>
-                    <groupId>*</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.glassfish.metro</groupId>
-            <artifactId>webservices-api-osgi</artifactId>
-            <exclusions>
-                <exclusion>
-                    <groupId>*</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.glassfish.main.security</groupId>
-            <artifactId>webservices.security</artifactId>
-            <version>${project.version}</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>*</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.glassfish.main.webservices</groupId>
-            <artifactId>webservices-scripts</artifactId>
-            <version>${project.version}</version>
+       </dependency>
+       <dependency>
+            <groupId>org.glassfish.mq</groupId>
+            <artifactId>mq-distribution</artifactId>
+            <version>${openmq.version}</version>
             <type>zip</type>
             <exclusions>
                 <exclusion>
@@ -532,10 +616,9 @@
             </exclusions>
         </dependency>
         <dependency>
-            <groupId>org.glassfish.metro</groupId>
-            <artifactId>wstx-services</artifactId>
-            <version>${webservices.version}</version>
-            <type>war</type>
+            <groupId>org.glassfish.main.jms</groupId>
+            <artifactId>jms-core</artifactId>
+            <version>${project.version}</version>
             <exclusions>
                 <exclusion>
                     <groupId>*</groupId>
@@ -544,8 +627,9 @@
             </exclusions>
         </dependency>
         <dependency>
-            <groupId>org.codehaus.woodstox</groupId>
-            <artifactId>stax2-api</artifactId>
+            <groupId>org.glassfish.main.jms</groupId>
+            <artifactId>gf-jms-injection</artifactId>
+            <version>${project.version}</version>
             <exclusions>
                 <exclusion>
                     <groupId>*</groupId>
@@ -553,8 +637,54 @@
                 </exclusion>
             </exclusions>
         </dependency>
+        <dependency>
+           <groupId>org.glassfish.main.jms</groupId>
+           <artifactId>jms-admin</artifactId>
+           <version>${project.version}</version>
+           <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+       </dependency>
+       <dependency>
+           <groupId>org.glassfish.main.jms</groupId>
+           <artifactId>gf-jms-connector</artifactId>
+           <version>${project.version}</version>
+           <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+       </dependency>
+       <dependency>
+           <groupId>org.glassfish.main.connectors</groupId>
+           <artifactId>connectors-inbound-runtime</artifactId>
+           <version>${project.version}</version>
+           <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+       </dependency>
+       <dependency>
+           <groupId>org.glassfish.main.jms</groupId>
+           <artifactId>jmsra</artifactId>
+           <version>${project.version}</version>
+           <type>zip</type>
+           <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+       </dependency>
+        
 
-        <!-- glassfish-appclient -->
+        <!-- GlassFish Application Client Container-->
         <dependency>
             <groupId>org.glassfish.main.appclient</groupId>
             <artifactId>gf-client</artifactId>
@@ -643,102 +773,9 @@
                 </exclusion>
             </exclusions>
         </dependency>
+       
 
-        <!-- glassfish-jms -->
-        <dependency>
-            <groupId>org.glassfish.main.jms</groupId>
-            <artifactId>jms-core</artifactId>
-            <version>${project.version}</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>*</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.glassfish.main.jms</groupId>
-            <artifactId>gf-jms-injection</artifactId>
-            <version>${project.version}</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>*</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-           <groupId>org.glassfish.main.jms</groupId>
-           <artifactId>jms-admin</artifactId>
-           <version>${project.version}</version>
-           <exclusions>
-                <exclusion>
-                    <groupId>*</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
-            </exclusions>
-       </dependency>
-       <dependency>
-           <groupId>org.glassfish.main.jms</groupId>
-           <artifactId>gf-jms-connector</artifactId>
-           <version>${project.version}</version>
-           <exclusions>
-                <exclusion>
-                    <groupId>*</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
-            </exclusions>
-       </dependency>
-       <dependency>
-           <groupId>org.glassfish.main.connectors</groupId>
-           <artifactId>connectors-inbound-runtime</artifactId>
-           <version>${project.version}</version>
-           <exclusions>
-                <exclusion>
-                    <groupId>*</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
-            </exclusions>
-       </dependency>
-       <dependency>
-           <groupId>org.glassfish.main.jms</groupId>
-           <artifactId>jmsra</artifactId>
-           <version>${project.version}</version>
-           <type>zip</type>
-           <exclusions>
-                <exclusion>
-                    <groupId>*</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
-            </exclusions>
-       </dependency>
-
-       <dependency>
-            <groupId>jakarta.jms</groupId>
-            <artifactId>jakarta.jms-api</artifactId>
-            <exclusions>
-                <exclusion>
-                    <groupId>*</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
-            </exclusions>
-       </dependency>
-
-       <!-- mq package -->
-       <dependency>
-            <groupId>org.glassfish.mq</groupId>
-            <artifactId>mq-distribution</artifactId>
-            <version>${mq.version}</version>
-            <type>zip</type>
-            <exclusions>
-                <exclusion>
-                    <groupId>*</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-
-        <!-- glassfish-gui plugins -->
+        <!-- GlassFish Admin GUI -->
         <dependency>
             <groupId>org.glassfish.main.admingui</groupId>
             <artifactId>console-common-full-plugin</artifactId>
@@ -794,9 +831,12 @@
                 </exclusion>
             </exclusions>
         </dependency>
+        
+        <!-- glassfish-common-full -->
         <dependency>
-            <groupId>com.sun.activation</groupId>
-            <artifactId>jakarta.activation</artifactId>
+            <groupId>org.glassfish.main.deployment</groupId>
+            <artifactId>deployment-javaee-full</artifactId>
+            <version>${project.version}</version>
             <exclusions>
                 <exclusion>
                     <groupId>*</groupId>
diff --git a/appserver/featuresets/pom.xml b/appserver/featuresets/pom.xml
index a7948f4..1e37511 100644
--- a/appserver/featuresets/pom.xml
+++ b/appserver/featuresets/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.main.featuresets</groupId>
diff --git a/appserver/featuresets/web/pom.xml b/appserver/featuresets/web/pom.xml
index 9e6e2f3..e84fd1a 100644
--- a/appserver/featuresets/web/pom.xml
+++ b/appserver/featuresets/web/pom.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
+    Copyright (c) 2021 Contributors to Eclipse Foundation.
     Copyright (c) 2015, 2021 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
@@ -23,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.main.featuresets</groupId>
         <artifactId>featuresets</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>web</artifactId>
@@ -257,6 +258,7 @@
         </dependency>
 
         <!-- Jakarta MVC -->
+        <!-- TMP disable until EE 10 versions
         <dependency>
             <groupId>jakarta.mvc</groupId>
             <artifactId>jakarta.mvc-api</artifactId>
@@ -287,6 +289,7 @@
                 </exclusion>
             </exclusions>
         </dependency>
+        -->
 
         <!-- glassfish-grizzly-full -->
         <dependency>
@@ -598,6 +601,7 @@
         </dependency>
 
          <!-- Jakarta Security -->
+         <!-- TMP disable until EE 10 versions 
         <dependency>
             <groupId>jakarta.security.enterprise</groupId>
             <artifactId>jakarta.security.enterprise-api</artifactId>
@@ -628,6 +632,8 @@
                 </exclusion>
             </exclusions>
         </dependency>
+        -->
+        
         <dependency>
             <groupId>jakarta.authentication</groupId>
             <artifactId>jakarta.authentication-api</artifactId>
@@ -671,8 +677,8 @@
             </exclusions>
         </dependency>
         <dependency>
-            <groupId>com.sun.mail</groupId>
-            <artifactId>jakarta.mail</artifactId>
+            <groupId>jakarta.mail</groupId>
+            <artifactId>jakarta.mail-api</artifactId>
             <exclusions>
                 <exclusion>
                     <groupId>*</groupId>
@@ -681,8 +687,28 @@
             </exclusions>
         </dependency>
         <dependency>
-            <groupId>com.sun.activation</groupId>
-            <artifactId>jakarta.activation</artifactId>
+            <groupId>org.eclipse.angus</groupId>
+            <artifactId>angus-mail</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>jakarta.activation</groupId>
+            <artifactId>jakarta.activation-api</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.angus</groupId>
+            <artifactId>angus-activation</artifactId>
             <exclusions>
                 <exclusion>
                     <groupId>*</groupId>
@@ -1121,6 +1147,8 @@
                 </exclusion>
             </exclusions>
         </dependency>
+        
+        <!-- Jakarta Expression Language -->
         <dependency>
             <groupId>jakarta.el</groupId>
             <artifactId>jakarta.el-api</artifactId>
@@ -1132,8 +1160,20 @@
             </exclusions>
         </dependency>
         <dependency>
-            <groupId>org.glassfish</groupId>
-            <artifactId>jakarta.el</artifactId>
+            <groupId>org.glassfish.expressly</groupId>
+            <artifactId>expressly</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        
+        <!-- Jakarta WebSocket -->
+        <dependency>
+            <groupId>jakarta.websocket</groupId>
+            <artifactId>jakarta.websocket-api</artifactId>
             <exclusions>
                 <exclusion>
                     <groupId>*</groupId>
@@ -1143,7 +1183,7 @@
         </dependency>
         <dependency>
             <groupId>jakarta.websocket</groupId>
-            <artifactId>jakarta.websocket-api</artifactId>
+            <artifactId>jakarta.websocket-client-api</artifactId>
             <exclusions>
                 <exclusion>
                     <groupId>*</groupId>
@@ -1231,6 +1271,7 @@
                 </exclusion>
             </exclusions>
         </dependency>
+        
         <dependency>
             <groupId>org.glassfish.main.security</groupId>
             <artifactId>websecurity</artifactId>
@@ -1368,6 +1409,8 @@
                 </exclusion>
             </exclusions>
         </dependency>
+        <!-- Provides conflicting JAXB provider.
+             See https://github.com/eclipse-ee4j/eclipselink/issues/1380
         <dependency>
             <groupId>org.eclipse.persistence</groupId>
             <artifactId>org.eclipse.persistence.moxy</artifactId>
@@ -1378,6 +1421,7 @@
                 </exclusion>
             </exclusions>
         </dependency>
+        -->
         <dependency>
             <groupId>org.eclipse.persistence</groupId>
             <artifactId>org.eclipse.persistence.dbws</artifactId>
@@ -1556,6 +1600,16 @@
             </exclusions>
         </dependency>
         <dependency>
+            <groupId>jakarta.enterprise</groupId>
+            <artifactId>jakarta.enterprise.lang-model</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
             <groupId>org.glassfish.main.web</groupId>
             <artifactId>cdi-api-fragment</artifactId>
             <version>${project.version}</version>
@@ -1569,8 +1623,8 @@
 
         <!-- json -->
         <dependency>
-            <groupId>org.glassfish</groupId>
-            <artifactId>jakarta.json</artifactId>
+            <groupId>org.eclipse.parsson</groupId>
+            <artifactId>parsson</artifactId>
             <exclusions>
                 <exclusion>
                     <groupId>*</groupId>
diff --git a/appserver/flashlight/client/pom.xml b/appserver/flashlight/client/pom.xml
index 8c879df..1281073 100755
--- a/appserver/flashlight/client/pom.xml
+++ b/appserver/flashlight/client/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.common</groupId>
         <artifactId>common</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../../common/pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/flashlight/pom.xml b/appserver/flashlight/pom.xml
index 0fd4317..5330aaa 100755
--- a/appserver/flashlight/pom.xml
+++ b/appserver/flashlight/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/grizzly/glassfish-grizzly-extra-all/pom.xml b/appserver/grizzly/glassfish-grizzly-extra-all/pom.xml
index 6892524..a316b3a 100644
--- a/appserver/grizzly/glassfish-grizzly-extra-all/pom.xml
+++ b/appserver/grizzly/glassfish-grizzly-extra-all/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.grizzly</groupId>
         <artifactId>glassfish-grizzly</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/grizzly/grizzly-container/pom.xml b/appserver/grizzly/grizzly-container/pom.xml
index 58f7820..fac4481 100755
--- a/appserver/grizzly/grizzly-container/pom.xml
+++ b/appserver/grizzly/grizzly-container/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.grizzly</groupId>
         <artifactId>glassfish-grizzly</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/grizzly/pom.xml b/appserver/grizzly/pom.xml
index 90babe2..328fe95 100755
--- a/appserver/grizzly/pom.xml
+++ b/appserver/grizzly/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/ha/ha-file-store/pom.xml b/appserver/ha/ha-file-store/pom.xml
index 5d083dc..7b18369 100644
--- a/appserver/ha/ha-file-store/pom.xml
+++ b/appserver/ha/ha-file-store/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.ha</groupId>
         <artifactId>ha</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>ha-file-store</artifactId>
diff --git a/appserver/ha/ha-shoal-cache-bootstrap/pom.xml b/appserver/ha/ha-shoal-cache-bootstrap/pom.xml
index 195d0b5..a66a671 100644
--- a/appserver/ha/ha-shoal-cache-bootstrap/pom.xml
+++ b/appserver/ha/ha-shoal-cache-bootstrap/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.ha</groupId>
         <artifactId>ha</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>ha-shoal-cache-bootstrap</artifactId>
diff --git a/appserver/ha/ha-shoal-store/pom.xml b/appserver/ha/ha-shoal-store/pom.xml
index d7942ce..0afb4ca 100644
--- a/appserver/ha/ha-shoal-store/pom.xml
+++ b/appserver/ha/ha-shoal-store/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.ha</groupId>
         <artifactId>ha</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>ha-shoal-cache-store</artifactId>
diff --git a/appserver/ha/pom.xml b/appserver/ha/pom.xml
index f41fd0d..2f7eee8 100755
--- a/appserver/ha/pom.xml
+++ b/appserver/ha/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/jdbc/admin/pom.xml b/appserver/jdbc/admin/pom.xml
index 0778a4b..7ed9ff8 100644
--- a/appserver/jdbc/admin/pom.xml
+++ b/appserver/jdbc/admin/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.jdbc</groupId>
         <artifactId>jdbc</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
@@ -106,8 +106,8 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.glassfish</groupId>
-            <artifactId>jakarta.el</artifactId>
+            <groupId>org.glassfish.expressly</groupId>
+            <artifactId>expressly</artifactId>
             <scope>test</scope>
         </dependency>
 
diff --git a/appserver/jdbc/jdbc-config/pom.xml b/appserver/jdbc/jdbc-config/pom.xml
index 70be335..7d5ab60 100644
--- a/appserver/jdbc/jdbc-config/pom.xml
+++ b/appserver/jdbc/jdbc-config/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.jdbc</groupId>
         <artifactId>jdbc</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/jdbc/jdbc-ra/jdbc-core/pom.xml b/appserver/jdbc/jdbc-ra/jdbc-core/pom.xml
index 390f7f1..b2671ca 100644
--- a/appserver/jdbc/jdbc-ra/jdbc-core/pom.xml
+++ b/appserver/jdbc/jdbc-ra/jdbc-core/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.glassfish.main.jdbc.jdbc-ra</groupId>
     <artifactId>jdbc-ra</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <relativePath>../pom.xml</relativePath>
   </parent>
 
diff --git a/appserver/jdbc/jdbc-ra/jdbc-ra-distribution/pom.xml b/appserver/jdbc/jdbc-ra/jdbc-ra-distribution/pom.xml
index f91449b..123a838 100644
--- a/appserver/jdbc/jdbc-ra/jdbc-ra-distribution/pom.xml
+++ b/appserver/jdbc/jdbc-ra/jdbc-ra-distribution/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.jdbc.jdbc-ra</groupId>
         <artifactId>jdbc-ra</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
@@ -33,6 +33,10 @@
 
     <name>Distribution Module for JDBC Resource Adapter</name>
 
+    <properties>
+        <target.application.directory>${project.build.outputDirectory}/glassfish/lib/install/applications</target.application.directory>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.glassfish.main.jdbc.jdbc-ra.jdbc-core</groupId>
@@ -51,10 +55,6 @@
         </dependency>
     </dependencies>
 
-    <properties>
-        <target.application.directory>${project.build.outputDirectory}/glassfish/lib/install/applications</target.application.directory>
-    </properties>
-
     <build>
         <plugins>
             <plugin>
diff --git a/appserver/jdbc/jdbc-ra/jdbc40/pom.xml b/appserver/jdbc/jdbc-ra/jdbc40/pom.xml
index abb4865..f395a4f 100644
--- a/appserver/jdbc/jdbc-ra/jdbc40/pom.xml
+++ b/appserver/jdbc/jdbc-ra/jdbc40/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.jdbc.jdbc-ra</groupId>
         <artifactId>jdbc-ra</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/jdbc/jdbc-ra/pom.xml b/appserver/jdbc/jdbc-ra/pom.xml
index b82ca2d..955dbf8 100644
--- a/appserver/jdbc/jdbc-ra/pom.xml
+++ b/appserver/jdbc/jdbc-ra/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/jdbc/jdbc-runtime/pom.xml b/appserver/jdbc/jdbc-runtime/pom.xml
index 5b04c3f..85879e5 100644
--- a/appserver/jdbc/jdbc-runtime/pom.xml
+++ b/appserver/jdbc/jdbc-runtime/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.jdbc</groupId>
         <artifactId>jdbc</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>jdbc-runtime</artifactId>
@@ -49,8 +49,8 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.glassfish</groupId>
-            <artifactId>jakarta.el</artifactId>
+            <groupId>org.glassfish.expressly</groupId>
+            <artifactId>expressly</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
diff --git a/appserver/jdbc/pom.xml b/appserver/jdbc/pom.xml
index 64a5ae0..e072bb8 100755
--- a/appserver/jdbc/pom.xml
+++ b/appserver/jdbc/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.main.jdbc</groupId>
diff --git a/appserver/jdbc/templates/pom.xml b/appserver/jdbc/templates/pom.xml
index 04dda36..12674e1 100644
--- a/appserver/jdbc/templates/pom.xml
+++ b/appserver/jdbc/templates/pom.xml
@@ -19,11 +19,14 @@
 
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
+
     <parent>
         <groupId>org.glassfish.main.jdbc</groupId>
         <artifactId>jdbc</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
+
     <artifactId>templates</artifactId>
+
     <name>JDBC Templates</name>
 </project>
diff --git a/appserver/jms/admin/pom.xml b/appserver/jms/admin/pom.xml
index e96666f..8695edc 100644
--- a/appserver/jms/admin/pom.xml
+++ b/appserver/jms/admin/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.jms</groupId>
         <artifactId>jms</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/jms/gf-jms-connector/pom.xml b/appserver/jms/gf-jms-connector/pom.xml
index 057e19c..a26df8e 100644
--- a/appserver/jms/gf-jms-connector/pom.xml
+++ b/appserver/jms/gf-jms-connector/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.jms</groupId>
         <artifactId>jms</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/jms/gf-jms-injection/pom.xml b/appserver/jms/gf-jms-injection/pom.xml
index 3610210..82132e4 100644
--- a/appserver/jms/gf-jms-injection/pom.xml
+++ b/appserver/jms/gf-jms-injection/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.jms</groupId>
         <artifactId>jms</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/jms/gf-jms-injection/src/main/java/org/glassfish/jms/injection/AbstractJMSContextManager.java b/appserver/jms/gf-jms-injection/src/main/java/org/glassfish/jms/injection/AbstractJMSContextManager.java
index b623b03..c458324 100644
--- a/appserver/jms/gf-jms-injection/src/main/java/org/glassfish/jms/injection/AbstractJMSContextManager.java
+++ b/appserver/jms/gf-jms-injection/src/main/java/org/glassfish/jms/injection/AbstractJMSContextManager.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2012, 2020 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -22,30 +23,33 @@
 import java.util.Map.Entry;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-import jakarta.annotation.PostConstruct;
-import jakarta.annotation.PreDestroy;
-import jakarta.jms.ConnectionFactory;
-import jakarta.jms.JMSContext;
-import com.sun.enterprise.util.LocalStringManagerImpl;
-import org.glassfish.api.invocation.InvocationManager;
+
 import org.glassfish.api.invocation.ComponentInvocation;
+import org.glassfish.api.invocation.InvocationManager;
 import org.glassfish.hk2.api.ServiceLocator;
 import org.glassfish.internal.api.Globals;
 
+import com.sun.enterprise.util.LocalStringManagerImpl;
+
+import jakarta.annotation.PreDestroy;
+import jakarta.jms.ConnectionFactory;
+import jakarta.jms.JMSContext;
+
 /**
- * This bean has a map to store JMSContext instances based on the injection
- * point, that makes sure in one class, the injected JMSContext beans of
- * different injection point will not share the same request/trasaction scoped JMSContext
+ * This bean has a map to store JMSContext instances based on the injection point, that makes sure in one class, the
+ * injected JMSContext beans of different injection point will not share the same request/trasaction scoped JMSContext
  * instance in a request/transaction.
  */
 public abstract class AbstractJMSContextManager implements Serializable {
+
+    private static final long serialVersionUID = 1L;
     private static final Logger logger = Logger.getLogger(InjectableJMSContext.JMS_INJECTION_LOGGER);
     private final static LocalStringManagerImpl localStrings = new LocalStringManagerImpl(AbstractJMSContextManager.class);
 
     protected final Map<String, JMSContextEntry> contexts;
 
     public AbstractJMSContextManager() {
-        contexts = new HashMap<String, JMSContextEntry>();
+        contexts = new HashMap<>();
     }
 
     protected JMSContext createContext(String ipId, JMSContextMetadata metadata, ConnectionFactory connectionFactory) {
@@ -60,8 +64,7 @@
         }
         if (logger.isLoggable(Level.FINE)) {
             logger.log(Level.FINE, localStrings.getLocalString("JMSContext.impl.create",
-                                   "Created new JMSContext instance associated with id {0}: {1}.",
-                                   ipId, context.toString()));
+                    "Created new JMSContext instance associated with id {0}: {1}.", ipId, context.toString()));
         }
         return context;
     }
@@ -83,8 +86,9 @@
     public JMSContext getContext(String id) {
         JMSContextEntry entry = contexts.get(id);
         JMSContext context = null;
-        if (entry != null)
+        if (entry != null) {
             context = entry.getCtx();
+        }
         return context;
     }
 
@@ -101,25 +105,27 @@
             JMSContext context = contextEntry.getCtx();
             if (context != null) {
                 ComponentInvocation inv = contextEntry.getComponentInvocation();
-                if (inv != null && currentInv != inv) invMgr.preInvoke(inv);
+                if (inv != null && currentInv != inv) {
+                    invMgr.preInvoke(inv);
+                }
                 try {
                     context.close();
                     if (logger.isLoggable(Level.FINE)) {
                         logger.log(Level.FINE, localStrings.getLocalString("JMSContext.impl.close",
-                                               "Closed JMSContext instance associated with id {0}: {1}.",
-                                               ipId, context.toString()));
+                                "Closed JMSContext instance associated with id {0}: {1}.", ipId, context.toString()));
                     }
                 } catch (Exception e) {
                     logger.log(Level.SEVERE, localStrings.getLocalString("JMSContext.impl.close.failure",
-                                             "Failed to close JMSContext instance associated with id {0}: {1}.",
-                                             ipId, context.toString()), e);
+                            "Failed to close JMSContext instance associated with id {0}: {1}.", ipId, context.toString()), e);
                 } finally {
-                    if (inv != null && currentInv != inv) invMgr.postInvoke(inv);
+                    if (inv != null && currentInv != inv) {
+                        invMgr.postInvoke(inv);
+                    }
                 }
             }
         }
         contexts.clear();
-   }
+    }
 
     public abstract String getType();
 }
diff --git a/appserver/jms/gf-jms-injection/src/main/java/org/glassfish/jms/injection/ForwardingJMSContext.java b/appserver/jms/gf-jms-injection/src/main/java/org/glassfish/jms/injection/ForwardingJMSContext.java
index 00f3a61..ec4c6fb 100644
--- a/appserver/jms/gf-jms-injection/src/main/java/org/glassfish/jms/injection/ForwardingJMSContext.java
+++ b/appserver/jms/gf-jms-injection/src/main/java/org/glassfish/jms/injection/ForwardingJMSContext.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2012, 2020 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -17,9 +18,28 @@
 package org.glassfish.jms.injection;
 
 import java.io.Serializable;
-import jakarta.jms.*;
+
 import com.sun.enterprise.util.LocalStringManagerImpl;
 
+import jakarta.jms.BytesMessage;
+import jakarta.jms.ConnectionMetaData;
+import jakarta.jms.Destination;
+import jakarta.jms.ExceptionListener;
+import jakarta.jms.IllegalStateRuntimeException;
+import jakarta.jms.JMSConsumer;
+import jakarta.jms.JMSContext;
+import jakarta.jms.JMSProducer;
+import jakarta.jms.MapMessage;
+import jakarta.jms.Message;
+import jakarta.jms.ObjectMessage;
+import jakarta.jms.Queue;
+import jakarta.jms.QueueBrowser;
+import jakarta.jms.StreamMessage;
+import jakarta.jms.TemporaryQueue;
+import jakarta.jms.TemporaryTopic;
+import jakarta.jms.TextMessage;
+import jakarta.jms.Topic;
+
 // Delegate all business methods to JMSContext API
 public abstract class ForwardingJMSContext implements JMSContext {
     private final static LocalStringManagerImpl localStrings = new LocalStringManagerImpl(ForwardingJMSContext.class);
@@ -238,6 +258,6 @@
 
     private IllegalStateRuntimeException getUnsupportedException() {
         return new IllegalStateRuntimeException(localStrings.getLocalString("JMSContext.injection.not.supported",
-                                      "This method is not permitted on a container-managed (injected) JMSContext."));
+                "This method is not permitted on a container-managed (injected) JMSContext."));
     }
 }
diff --git a/appserver/jms/gf-jms-injection/src/main/java/org/glassfish/jms/injection/InjectableJMSContext.java b/appserver/jms/gf-jms-injection/src/main/java/org/glassfish/jms/injection/InjectableJMSContext.java
index f3dbaec..e4d234b 100644
--- a/appserver/jms/gf-jms-injection/src/main/java/org/glassfish/jms/injection/InjectableJMSContext.java
+++ b/appserver/jms/gf-jms-injection/src/main/java/org/glassfish/jms/injection/InjectableJMSContext.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2012, 2020 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -20,7 +21,20 @@
 import java.util.UUID;
 import java.util.logging.Level;
 import java.util.logging.Logger;
+
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
+import org.glassfish.hk2.api.ServiceLocator;
+import org.glassfish.internal.api.Globals;
+import org.glassfish.logging.annotation.LoggerInfo;
+
+import com.sun.appserv.connectors.internal.api.ConnectorsUtil;
+import com.sun.enterprise.transaction.api.JavaEETransactionManager;
+import com.sun.enterprise.util.LocalStringManagerImpl;
+
 import jakarta.annotation.PreDestroy;
+import jakarta.enterprise.context.ContextNotActiveException;
 import jakarta.enterprise.inject.Instance;
 import jakarta.enterprise.inject.spi.InjectionPoint;
 import jakarta.inject.Inject;
@@ -29,37 +43,31 @@
 import jakarta.jms.JMSContext;
 import jakarta.jms.JMSPasswordCredential;
 import jakarta.jms.JMSSessionMode;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-import jakarta.transaction.Transaction;
 import jakarta.transaction.SystemException;
-import com.sun.appserv.connectors.internal.api.ConnectorsUtil;
-import com.sun.enterprise.transaction.api.JavaEETransactionManager;
-import com.sun.enterprise.util.LocalStringManagerImpl;
-
-import org.glassfish.hk2.api.ServiceLocator;
-import org.glassfish.internal.api.Globals;
-import org.glassfish.logging.annotation.LoggerInfo;
-import jakarta.enterprise.context.ContextNotActiveException;
+import jakarta.transaction.Transaction;
 
 /**
- * This bean is the JMSContext wrapper which user gets by injection.
- * It can read metadata of injection point for it is dependent scoped.
- * It delegates all business methods of JMSContext interface to the
- * JMSContext API via request scopd JMSContextManager bean.
+ * This bean is the JMSContext wrapper which user gets by injection. It can read metadata of injection point for it is
+ * dependent scoped. It delegates all business methods of JMSContext interface to the JMSContext API via request scopd
+ * JMSContextManager bean.
  */
 public class InjectableJMSContext extends ForwardingJMSContext implements Serializable {
     // Note: since this bean is dependent-scoped, instances are liable to be passivated
     // All fields are therefore either serializable or transient
 
-    @LoggerInfo(subsystem="JMS_INJECTION", description="JMS Injection Logger", publish=true)
+    /**
+     *
+     */
+    private static final long serialVersionUID = 1L;
+
+    @LoggerInfo(subsystem = "JMS_INJECTION", description = "JMS Injection Logger", publish = true)
     public static final String JMS_INJECTION_LOGGER = "jakarta.enterprise.resource.jms.injection";
 
     private static final Logger logger = Logger.getLogger(JMS_INJECTION_LOGGER);
     private final static LocalStringManagerImpl localStrings = new LocalStringManagerImpl(InjectableJMSContext.class);
 
-    private final String ipId;  // id per injection point
-    private final String id;    // id per scope
+    private final String ipId; // id per injection point
+    private final String id; // id per scope
 
     // Make it transient for FindBugs
     @Inject
@@ -73,24 +81,24 @@
     private final JMSContextMetadata metadata;
 
     /*
-     * We cache the ConnectionFactory here to avoid repeated JNDI lookup
-     * If the bean is passivated/activated the field will be set to null
-     * and re-initialised lazily. (Though as a ConnectionFactory is required
-     * to be Serializable this may not be needed)
+     * We cache the ConnectionFactory here to avoid repeated JNDI lookup If the bean is passivated/activated the field will
+     * be set to null and re-initialised lazily. (Though as a ConnectionFactory is required to be Serializable this may not
+     * be needed)
      */
     private transient ConnectionFactory connectionFactory;
     private transient ConnectionFactory connectionFactoryPM;
     private transient JavaEETransactionManager transactionManager;
 
-    private static final boolean usePMResourceInTransaction = Boolean.getBoolean("org.glassfish.jms.skip-resource-registration-in-transaction");
+    private static final boolean usePMResourceInTransaction = Boolean
+            .getBoolean("org.glassfish.jms.skip-resource-registration-in-transaction");
 
     @Inject
     public InjectableJMSContext(InjectionPoint ip, RequestedJMSContextManager rm) {
         getTransactionManager();
 
         JMSConnectionFactory jmsConnectionFactoryAnnot = ip.getAnnotated().getAnnotation(JMSConnectionFactory.class);
-        JMSSessionMode                sessionModeAnnot = ip.getAnnotated().getAnnotation(JMSSessionMode.class);
-        JMSPasswordCredential          credentialAnnot = ip.getAnnotated().getAnnotation(JMSPasswordCredential.class);
+        JMSSessionMode sessionModeAnnot = ip.getAnnotated().getAnnotation(JMSSessionMode.class);
+        JMSPasswordCredential credentialAnnot = ip.getAnnotated().getAnnotation(JMSPasswordCredential.class);
 
         ipId = UUID.randomUUID().toString();
         this.requestedManager = rm;
@@ -98,13 +106,14 @@
         id = metadata.getFingerPrint();
         if (logger.isLoggable(Level.FINE)) {
             logger.log(Level.FINE, localStrings.getLocalString("JMSContext.injection.initialization",
-                       "Injecting JMSContext wrapper with id {0} and metadata [{1}].", ipId, metadata));
+                    "Injecting JMSContext wrapper with id {0} and metadata [{1}].", ipId, metadata));
         }
     }
 
     private synchronized TransactedJMSContextManager getTransactedManager() {
-        if (transactedManager == null)
+        if (transactedManager == null) {
             transactedManager = tm.get();
+        }
         return transactedManager;
     }
 
@@ -112,18 +121,19 @@
     protected JMSContext delegate() {
         AbstractJMSContextManager manager = requestedManager;
         boolean isInTransaction = isInTransaction();
-        if (isInTransaction)
+        if (isInTransaction) {
             manager = getTransactedManager();
+        }
 
         if (logger.isLoggable(Level.FINE)) {
             logger.log(Level.FINE, localStrings.getLocalString("JMSContext.delegation.type",
-                       "JMSContext wrapper with id {0} is delegating to {1} instance.", ipId, manager.getType()));
+                    "JMSContext wrapper with id {0} is delegating to {1} instance.", ipId, manager.getType()));
         }
         try {
             return manager.getContext(ipId, id, metadata, getConnectionFactory(isInTransaction));
         } catch (ContextNotActiveException e) {
             String message = localStrings.getLocalString("ContextNotActiveException.msg",
-                             "An injected JMSContext cannot be used when there is neither a transaction or a valid request scope.");
+                    "An injected JMSContext cannot be used when there is neither a transaction or a valid request scope.");
             throw new RuntimeException(message, e);
         }
     }
@@ -137,12 +147,14 @@
             if (isInTransaction) {
                 TransactedJMSContextManager manager = getTransactedManager();
                 tContext = manager.getContext(id);
-                if (tContext == null)
+                if (tContext == null) {
                     tContext = manager.getContext(ipId, id, metadata, getConnectionFactory(isInTransaction));
+                }
             } else {
                 rContext = requestedManager.getContext(id);
-                if (rContext == null)
+                if (rContext == null) {
                     rContext = requestedManager.getContext(ipId, id, metadata, getConnectionFactory(isInTransaction));
+                }
             }
         } catch (ContextNotActiveException cnae) {
             // if toString() is called in an env which doesn't have valid CDI request/transaction scope,
@@ -151,12 +163,13 @@
 
         StringBuffer sb = new StringBuffer();
         sb.append("JMSContext Wrapper ").append(ipId).append(" with metadata [").append(metadata).append("]");
-        if (tContext != null)
+        if (tContext != null) {
             sb.append(", around ").append(getTransactedManager().getType()).append(" [").append(tContext).append("]");
-        else if (rContext != null)
+        } else if (rContext != null) {
             sb.append(", around ").append(requestedManager.getType()).append(" [").append(rContext).append("]");
-        else
+        } else {
             sb.append(", there is neither a transaction or a valid request scope.");
+        }
         return sb.toString();
     }
 
@@ -170,24 +183,27 @@
         try {
             manager.cleanup();
             if (logger.isLoggable(Level.FINE)) {
-                logger.log(Level.FINE, localStrings.getLocalString("JMSContext.injection.cleanup",
-                           "Cleaning up {0} JMSContext wrapper with id {1} and metadata [{2}].",
-                           manager.getType(), ipId, metadata.getLookup()));
+                logger.log(Level.FINE,
+                        localStrings.getLocalString("JMSContext.injection.cleanup",
+                                "Cleaning up {0} JMSContext wrapper with id {1} and metadata [{2}].", manager.getType(), ipId,
+                                metadata.getLookup()));
             }
         } catch (ContextNotActiveException cnae) {
             // ignore the ContextNotActiveException when the application is undeployed.
         } catch (Throwable t) {
-            logger.log(Level.SEVERE, localStrings.getLocalString("JMSContext.injection.cleanup.failure",
-                       "Failed to cleaning up {0} JMSContext wrapper with id {1} and metadata [{2}]. Reason: {3}.",
-                        manager.getType(), ipId, metadata.getLookup(), t.toString()));
+            logger.log(Level.SEVERE,
+                    localStrings.getLocalString("JMSContext.injection.cleanup.failure",
+                            "Failed to cleaning up {0} JMSContext wrapper with id {1} and metadata [{2}]. Reason: {3}.", manager.getType(),
+                            ipId, metadata.getLookup(), t.toString()));
         }
     }
 
     private JavaEETransactionManager getTransactionManager() {
         if (transactionManager == null) {
             ServiceLocator serviceLocator = Globals.get(ServiceLocator.class);
-            if (serviceLocator != null)
+            if (serviceLocator != null) {
                 transactionManager = serviceLocator.getService(JavaEETransactionManager.class);
+            }
             if (transactionManager == null) {
                 throw new RuntimeException(localStrings.getLocalString("txn.mgr.failure", "Unable to retrieve transaction manager."));
             }
@@ -219,8 +235,8 @@
             try {
                 initialContext = new InitialContext();
             } catch (NamingException ne) {
-                throw new RuntimeException(localStrings.getLocalString("initialContext.init.exception",
-                                           "Cannot create InitialContext."), ne);
+                throw new RuntimeException(localStrings.getLocalString("initialContext.init.exception", "Cannot create InitialContext."),
+                        ne);
             }
 
             try {
@@ -228,7 +244,7 @@
                 boolean isPMName = jndiName.endsWith("__pm");
                 if (isPMName) {
                     int l = jndiName.length();
-                    jndiName = jndiName.substring(0, l-4);
+                    jndiName = jndiName.substring(0, l - 4);
                 }
                 cachedCF = (ConnectionFactory) initialContext.lookup(jndiName);
 
@@ -241,20 +257,21 @@
                 }
             } catch (NamingException ne) {
                 throw new RuntimeException(localStrings.getLocalString("connectionFactory.not.found",
-                                           "ConnectionFactory not found with lookup {0}.",
-                                           jndiName), ne);
+                        "ConnectionFactory not found with lookup {0}.", jndiName), ne);
             } finally {
                 if (initialContext != null) {
                     try {
                         initialContext.close();
-                    } catch (NamingException ne) {}
+                    } catch (NamingException ne) {
+                    }
                 }
             }
 
-            if (usePMResource)
+            if (usePMResource) {
                 connectionFactoryPM = cachedCF;
-            else
+            } else {
                 connectionFactory = cachedCF;
+            }
         }
         return cachedCF;
     }
@@ -263,11 +280,12 @@
         boolean isInTransaction = false;
         try {
             Transaction txn = getTransactionManager().getTransaction();
-            if (txn != null)
+            if (txn != null) {
                 isInTransaction = true;
+            }
         } catch (SystemException e) {
-            throw new RuntimeException(localStrings.getLocalString("txn.detection.failure",
-                                       "Failed to detect transaction status of current thread."), e);
+            throw new RuntimeException(
+                    localStrings.getLocalString("txn.detection.failure", "Failed to detect transaction status of current thread."), e);
         }
         return isInTransaction;
     }
diff --git a/appserver/jms/gf-jms-injection/src/main/java/org/glassfish/jms/injection/JMSCDIExtension.java b/appserver/jms/gf-jms-injection/src/main/java/org/glassfish/jms/injection/JMSCDIExtension.java
index ea2e6e6..b217de6 100644
--- a/appserver/jms/gf-jms-injection/src/main/java/org/glassfish/jms/injection/JMSCDIExtension.java
+++ b/appserver/jms/gf-jms-injection/src/main/java/org/glassfish/jms/injection/JMSCDIExtension.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2012, 2020 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -22,13 +23,28 @@
 import java.util.HashSet;
 import java.util.Set;
 import java.util.UUID;
-import jakarta.enterprise.context.*;
+
+import jakarta.enterprise.context.Dependent;
+import jakarta.enterprise.context.RequestScoped;
 import jakarta.enterprise.context.spi.CreationalContext;
 import jakarta.enterprise.event.Observes;
 import jakarta.enterprise.inject.Any;
 import jakarta.enterprise.inject.Default;
-import jakarta.enterprise.inject.spi.*;
-import jakarta.enterprise.util.AnnotationLiteral;
+import jakarta.enterprise.inject.spi.AfterBeanDiscovery;
+import jakarta.enterprise.inject.spi.AfterDeploymentValidation;
+import jakarta.enterprise.inject.spi.AnnotatedType;
+import jakarta.enterprise.inject.spi.Bean;
+import jakarta.enterprise.inject.spi.BeanManager;
+import jakarta.enterprise.inject.spi.BeforeBeanDiscovery;
+import jakarta.enterprise.inject.spi.BeforeShutdown;
+import jakarta.enterprise.inject.spi.Extension;
+import jakarta.enterprise.inject.spi.InjectionPoint;
+import jakarta.enterprise.inject.spi.InjectionTarget;
+import jakarta.enterprise.inject.spi.InjectionTargetFactory;
+import jakarta.enterprise.inject.spi.PassivationCapable;
+import jakarta.enterprise.inject.spi.ProcessAnnotatedType;
+import jakarta.enterprise.inject.spi.ProcessInjectionTarget;
+import jakarta.enterprise.inject.spi.ProcessProducer;
 import jakarta.transaction.TransactionScoped;
 
 /*
@@ -36,22 +52,14 @@
  * that can be injected into all applications.
  */
 public class JMSCDIExtension implements Extension {
-    public JMSCDIExtension() {
-    }
-
-    private Bean createLocalBean(BeanManager beanManager, Class beanClass) {
-        AnnotatedType annotatedType = beanManager.createAnnotatedType(beanClass);
-        LocalPassivationCapableBean localBean = new LocalPassivationCapableBean(beanClass);
-        InjectionTargetFactory injectionTargetFactory = beanManager.getInjectionTargetFactory(annotatedType);
-        localBean.setInjectionTarget(injectionTargetFactory.createInjectionTarget(localBean));
-        return localBean;
-    }
 
     public void afterBeanDiscovery(@Observes AfterBeanDiscovery afterBeanDiscoveryEvent, BeanManager beanManager) {
         Bean requestManagerBean = createLocalBean(beanManager, RequestedJMSContextManager.class);
         afterBeanDiscoveryEvent.addBean(requestManagerBean);
+
         Bean transactionManagerBean = createLocalBean(beanManager, TransactedJMSContextManager.class);
         afterBeanDiscoveryEvent.addBean(transactionManagerBean);
+
         Bean contextBean = createLocalBean(beanManager, InjectableJMSContext.class);
         afterBeanDiscoveryEvent.addBean(contextBean);
     }
@@ -68,7 +76,7 @@
     public void beforeBeanDiscovery(@Observes BeforeBeanDiscovery event, BeanManager beanManager) {
     }
 
-    public  void afterDeploymentValidation(@Observes AfterDeploymentValidation event, BeanManager beanManager) {
+    public void afterDeploymentValidation(@Observes AfterDeploymentValidation event, BeanManager beanManager) {
     }
 
     public void beforeShutdown(@Observes BeforeShutdown event, BeanManager beanManager) {
@@ -83,14 +91,6 @@
     public <T, X> void processProducer(@Observes ProcessProducer<T, X> event) {
     }
 
-    static AnnotationLiteral<Default> getDefaultAnnotationLiteral() {
-        return new AnnotationLiteral<Default>() {};
-    }
-
-    static AnnotationLiteral<Any> getAnyAnnotationLiteral() {
-        return new AnnotationLiteral<Any>() {};
-    }
-
     public static class LocalPassivationCapableBean implements Bean, PassivationCapable {
         private String id = UUID.randomUUID().toString();
         private Class beanClass;
@@ -126,20 +126,19 @@
 
         @Override
         public Set<Annotation> getQualifiers() {
-            Set<Annotation> qualifiers = new HashSet<Annotation>();
-            qualifiers.add(JMSCDIExtension.getDefaultAnnotationLiteral());
-            qualifiers.add(JMSCDIExtension.getAnyAnnotationLiteral());
-            return qualifiers;
+            return Set.of(Default.Literal.INSTANCE, Any.Literal.INSTANCE);
         }
 
         @Override
         public Class<? extends Annotation> getScope() {
-            if (beanClass.isAnnotationPresent(RequestScoped.class))
+            if (beanClass.isAnnotationPresent(RequestScoped.class)) {
                 return RequestScoped.class;
-            else if (beanClass.isAnnotationPresent(TransactionScoped.class))
+            }
+            if (beanClass.isAnnotationPresent(TransactionScoped.class)) {
                 return TransactionScoped.class;
-            else
-                return Dependent.class;
+            }
+
+            return Dependent.class;
         }
 
         @Override
@@ -149,7 +148,7 @@
 
         @Override
         public Set<Type> getTypes() {
-            Set<Type> types = new HashSet<Type>();
+            Set<Type> types = new HashSet<>();
             types.add(beanClass);
             boolean loop = true;
             Class clazz = beanClass;
@@ -175,11 +174,6 @@
         }
 
         @Override
-        public boolean isNullable() {
-            return false;
-        }
-
-        @Override
         public Object create(CreationalContext ctx) {
             Object instance = injectionTarget.produce(ctx);
             injectionTarget.inject(instance, ctx);
@@ -199,4 +193,13 @@
             return id;
         }
     }
+
+    private Bean createLocalBean(BeanManager beanManager, Class beanClass) {
+        AnnotatedType annotatedType = beanManager.createAnnotatedType(beanClass);
+        LocalPassivationCapableBean localBean = new LocalPassivationCapableBean(beanClass);
+        InjectionTargetFactory injectionTargetFactory = beanManager.getInjectionTargetFactory(annotatedType);
+        localBean.setInjectionTarget(injectionTargetFactory.createInjectionTarget(localBean));
+
+        return localBean;
+    }
 }
diff --git a/appserver/jms/gf-jms-injection/src/main/java/org/glassfish/jms/injection/JMSContextEntry.java b/appserver/jms/gf-jms-injection/src/main/java/org/glassfish/jms/injection/JMSContextEntry.java
index d7ee710..ea6aa48 100644
--- a/appserver/jms/gf-jms-injection/src/main/java/org/glassfish/jms/injection/JMSContextEntry.java
+++ b/appserver/jms/gf-jms-injection/src/main/java/org/glassfish/jms/injection/JMSContextEntry.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2012, 2020 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -17,18 +18,23 @@
 package org.glassfish.jms.injection;
 
 import java.io.Serializable;
-import jakarta.jms.JMSContext;
+
 import org.glassfish.api.invocation.ComponentInvocation;
 
+import jakarta.jms.JMSContext;
+
 public class JMSContextEntry implements Serializable {
+
+    private static final long serialVersionUID = 5250371279470306316L;
+
     private final String injectionPointId;
-    private final JMSContext ctx;
-    private final transient ComponentInvocation inv;
+    private final JMSContext jmsContext;
+    private final transient ComponentInvocation componentInvocation;
 
     public JMSContextEntry(String ipId, JMSContext context, ComponentInvocation inv) {
         injectionPointId = ipId;
-        ctx = context;
-        this.inv = inv;
+        jmsContext = context;
+        this.componentInvocation = inv;
     }
 
     public String getInjectionPointId() {
@@ -36,10 +42,10 @@
     }
 
     public JMSContext getCtx() {
-        return ctx;
+        return jmsContext;
     }
 
     public ComponentInvocation getComponentInvocation() {
-        return inv;
+        return componentInvocation;
     }
 }
diff --git a/appserver/jms/gf-jms-injection/src/main/java/org/glassfish/jms/injection/JMSContextMetadata.java b/appserver/jms/gf-jms-injection/src/main/java/org/glassfish/jms/injection/JMSContextMetadata.java
index 209a323..1ff08fb 100644
--- a/appserver/jms/gf-jms-injection/src/main/java/org/glassfish/jms/injection/JMSContextMetadata.java
+++ b/appserver/jms/gf-jms-injection/src/main/java/org/glassfish/jms/injection/JMSContextMetadata.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2012, 2020 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -20,18 +21,22 @@
 import java.security.MessageDigest;
 import java.util.logging.Level;
 import java.util.logging.Logger;
+
+import org.glassfish.internal.api.RelativePathResolver;
+
+import com.sun.enterprise.util.LocalStringManagerImpl;
+
 import jakarta.jms.JMSConnectionFactory;
 import jakarta.jms.JMSContext;
 import jakarta.jms.JMSPasswordCredential;
 import jakarta.jms.JMSSessionMode;
-import org.glassfish.internal.api.RelativePathResolver;
-import com.sun.enterprise.util.LocalStringManagerImpl;
 
 /**
- * Serializable object which holds the information about the JMSContext
- * that was specified at the injection point.
+ * Serializable object which holds the information about the JMSContext that was specified at the injection point.
  */
 public class JMSContextMetadata implements Serializable {
+
+    private static final long serialVersionUID = 1L;
     private static final Logger logger = Logger.getLogger(InjectableJMSContext.JMS_INJECTION_LOGGER);
     private final static LocalStringManagerImpl localStrings = new LocalStringManagerImpl(JMSContextMetadata.class);
     public final static String DEFAULT_CONNECTION_FACTORY = "java:comp/DefaultJMSConnectionFactory";
@@ -65,10 +70,10 @@
     }
 
     public String getLookup() {
-       return lookup;
+        return lookup;
     }
 
-    public int getSessionMode(){
+    public int getSessionMode() {
         return sessionMode;
     }
 
@@ -88,10 +93,11 @@
         sb.append(", sessionMode=").append(sessionMode);
         sb.append(", username=").append(userName);
         sb.append(", password=");
-        if (password != null)
+        if (password != null) {
             sb.append("xxxxxx");
-        else
+        } else {
             sb.append("null");
+        }
         sb.append(" [fingerPrint[").append(getFingerPrint());
         sb.append("]]");
         return sb.toString();
@@ -100,28 +106,32 @@
     public String getFingerPrint() {
         if (fingerPrint == null) {
             try {
-                MessageDigest md = MessageDigest.getInstance("MD5");
+                MessageDigest messageDigest = MessageDigest.getInstance("MD5");
                 byte delimer = (byte) '|';
-                md.update(delimer);
+                messageDigest.update(delimer);
                 String cf = lookup;
-                if (lookup == null)
+                if (lookup == null) {
                     cf = DEFAULT_CONNECTION_FACTORY;
-                md.update(cf.getBytes("ISO-8859-1"));
-                md.update(delimer);
-                md.update((byte) sessionMode);
-                md.update(delimer);
-                if (userName != null)
-                    md.update(userName.getBytes("ISO-8859-1"));
-                md.update(delimer);
-                if (password != null)
-                    md.update(password.getBytes("ISO-8859-1"));
-                md.update(delimer);
-                byte[] result = md.digest();
+                }
+                messageDigest.update(cf.getBytes("ISO-8859-1"));
+                messageDigest.update(delimer);
+                messageDigest.update((byte) sessionMode);
+                messageDigest.update(delimer);
+                if (userName != null) {
+                    messageDigest.update(userName.getBytes("ISO-8859-1"));
+                }
+                messageDigest.update(delimer);
+                if (password != null) {
+                    messageDigest.update(password.getBytes("ISO-8859-1"));
+                }
+                messageDigest.update(delimer);
+                byte[] result = messageDigest.digest();
                 StringBuffer buff = new StringBuffer();
-                for(int i=0; i<result.length; i++) {
+                for (int i = 0; i < result.length; i++) {
                     String byteStr = Integer.toHexString(result[i] & 0xFF);
-                    if(byteStr.length() < 2)
+                    if (byteStr.length() < 2) {
                         buff.append('0');
+                    }
                     buff.append(byteStr);
                 }
                 fingerPrint = buff.toString();
@@ -132,9 +142,11 @@
         return fingerPrint;
     }
 
-    private boolean isPasswordAlias(String password){
-        if (password != null && password.startsWith("${ALIAS="))
+    private boolean isPasswordAlias(String password) {
+        if (password != null && password.startsWith("${ALIAS=")) {
             return true;
+        }
+
         return false;
     }
 
@@ -142,15 +154,18 @@
         if (password != null && isPasswordAlias(password)) {
             try {
                 String unalisedPwd = RelativePathResolver.getRealPasswordFromAlias(password);
-                if (unalisedPwd != null && !"".equals(unalisedPwd))
+                if (unalisedPwd != null && !"".equals(unalisedPwd)) {
                     return unalisedPwd;
+                }
             } catch (Exception e) {
                 if (logger.isLoggable(Level.WARNING)) {
-                    logger.log(Level.WARNING, localStrings.getLocalString("decrypt.password.fail",
-                               "Failed to unalias password for the reason: {0}."), e.toString());
+                    logger.log(Level.WARNING,
+                            localStrings.getLocalString("decrypt.password.fail", "Failed to unalias password for the reason: {0}."),
+                            e.toString());
                 }
             }
         }
+
         return password;
     }
 }
diff --git a/appserver/jms/gf-jms-injection/src/main/java/org/glassfish/jms/injection/RequestedJMSContextManager.java b/appserver/jms/gf-jms-injection/src/main/java/org/glassfish/jms/injection/RequestedJMSContextManager.java
index f91fa8b..8a094f1 100644
--- a/appserver/jms/gf-jms-injection/src/main/java/org/glassfish/jms/injection/RequestedJMSContextManager.java
+++ b/appserver/jms/gf-jms-injection/src/main/java/org/glassfish/jms/injection/RequestedJMSContextManager.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2012, 2020 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -20,10 +21,9 @@
 
 @RequestScoped
 public class RequestedJMSContextManager extends AbstractJMSContextManager {
-    public RequestedJMSContextManager() {
-        super();
-    }
+    private static final long serialVersionUID = 1L;
 
+    @Override
     public String getType() {
         return "RequestScoped";
     }
diff --git a/appserver/jms/gf-jms-injection/src/main/java/org/glassfish/jms/injection/TransactedJMSContextManager.java b/appserver/jms/gf-jms-injection/src/main/java/org/glassfish/jms/injection/TransactedJMSContextManager.java
index 472c580..667ab80 100644
--- a/appserver/jms/gf-jms-injection/src/main/java/org/glassfish/jms/injection/TransactedJMSContextManager.java
+++ b/appserver/jms/gf-jms-injection/src/main/java/org/glassfish/jms/injection/TransactedJMSContextManager.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2012, 2020 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -20,10 +21,9 @@
 
 @TransactionScoped
 public class TransactedJMSContextManager extends AbstractJMSContextManager {
-    public TransactedJMSContextManager() {
-        super();
-    }
+    private static final long serialVersionUID = 1L;
 
+    @Override
     public String getType() {
         return "TransactionScoped";
     }
diff --git a/appserver/jms/jms-core/pom.xml b/appserver/jms/jms-core/pom.xml
index 24075fe..04ce39b 100644
--- a/appserver/jms/jms-core/pom.xml
+++ b/appserver/jms/jms-core/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.jms</groupId>
         <artifactId>jms</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/jms/jmsra/pom.xml b/appserver/jms/jmsra/pom.xml
index 97ff911..3dad2f1 100644
--- a/appserver/jms/jmsra/pom.xml
+++ b/appserver/jms/jmsra/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.jms</groupId>
         <artifactId>jms</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
@@ -44,7 +44,7 @@
         <dependency>
             <groupId>org.glassfish.mq</groupId>
             <artifactId>mq-distribution</artifactId>
-            <version>${mq.version}</version>
+            <version>${openmq.version}</version>
             <type>zip</type>
         </dependency>
     </dependencies>
diff --git a/appserver/jms/pom.xml b/appserver/jms/pom.xml
index 6ccfafb..9e47079 100644
--- a/appserver/jms/pom.xml
+++ b/appserver/jms/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/ldapbp/pom.xml b/appserver/ldapbp/pom.xml
index 5427954..4b279c9 100644
--- a/appserver/ldapbp/pom.xml
+++ b/appserver/ldapbp/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.main.ldapbp</groupId>
diff --git a/appserver/libpam4j/pom.xml b/appserver/libpam4j/pom.xml
index c4b2641..6796c44 100644
--- a/appserver/libpam4j/pom.xml
+++ b/appserver/libpam4j/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.main.libpam4j</groupId>
diff --git a/appserver/load-balancer/admin/pom.xml b/appserver/load-balancer/admin/pom.xml
index 3e61cc4..2695d16 100644
--- a/appserver/load-balancer/admin/pom.xml
+++ b/appserver/load-balancer/admin/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.loadbalancer</groupId>
         <artifactId>load-balancer</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/load-balancer/gf-load-balancer-connector/pom.xml b/appserver/load-balancer/gf-load-balancer-connector/pom.xml
index a7604bd..974c521 100644
--- a/appserver/load-balancer/gf-load-balancer-connector/pom.xml
+++ b/appserver/load-balancer/gf-load-balancer-connector/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.loadbalancer</groupId>
         <artifactId>load-balancer</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/load-balancer/pom.xml b/appserver/load-balancer/pom.xml
index 6227787..4bdcebb 100644
--- a/appserver/load-balancer/pom.xml
+++ b/appserver/load-balancer/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/orb/orb-connector/pom.xml b/appserver/orb/orb-connector/pom.xml
index aef716e..1f7e766 100755
--- a/appserver/orb/orb-connector/pom.xml
+++ b/appserver/orb/orb-connector/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.orb</groupId>
         <artifactId>orb</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>orb-connector</artifactId>
@@ -151,8 +151,8 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.glassfish</groupId>
-            <artifactId>jakarta.el</artifactId>
+            <groupId>org.glassfish.expressly</groupId>
+            <artifactId>expressly</artifactId>
             <scope>test</scope>
         </dependency>
     </dependencies>
diff --git a/appserver/orb/orb-enabler/pom.xml b/appserver/orb/orb-enabler/pom.xml
index 56eae4e..8364d42 100755
--- a/appserver/orb/orb-enabler/pom.xml
+++ b/appserver/orb/orb-enabler/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.main.orb</groupId>
         <artifactId>orb</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
@@ -62,6 +62,7 @@
             <version>${project.version}</version>
         </dependency>
     </dependencies>
+
     <build>
         <resources>
             <resource>
diff --git a/appserver/orb/orb-iiop/pom.xml b/appserver/orb/orb-iiop/pom.xml
index e0713cc..72b32a9 100755
--- a/appserver/orb/orb-iiop/pom.xml
+++ b/appserver/orb/orb-iiop/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.orb</groupId>
         <artifactId>orb</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>orb-iiop</artifactId>
diff --git a/appserver/orb/pom.xml b/appserver/orb/pom.xml
index 75b3b5b..6d0f51b 100755
--- a/appserver/orb/pom.xml
+++ b/appserver/orb/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/osgi-platforms/felix-webconsole-extension/pom.xml b/appserver/osgi-platforms/felix-webconsole-extension/pom.xml
index 8534d5c..e9134f5 100644
--- a/appserver/osgi-platforms/felix-webconsole-extension/pom.xml
+++ b/appserver/osgi-platforms/felix-webconsole-extension/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.osgi-platforms</groupId>
         <artifactId>osgi-console-extensions</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>felix-webconsole-extension</artifactId>
diff --git a/appserver/osgi-platforms/glassfish-osgi-console-plugin/pom.xml b/appserver/osgi-platforms/glassfish-osgi-console-plugin/pom.xml
index 3374b22..a420f49 100644
--- a/appserver/osgi-platforms/glassfish-osgi-console-plugin/pom.xml
+++ b/appserver/osgi-platforms/glassfish-osgi-console-plugin/pom.xml
@@ -23,7 +23,7 @@
     <parent>
        <groupId>org.glassfish.main.admingui</groupId>
        <artifactId>admingui</artifactId>
-       <version>6.2.6-SNAPSHOT</version>
+       <version>7.0.0-SNAPSHOT</version>
        <relativePath>../../admingui/pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/osgi-platforms/pom.xml b/appserver/osgi-platforms/pom.xml
index 67608d1..39d819e 100644
--- a/appserver/osgi-platforms/pom.xml
+++ b/appserver/osgi-platforms/pom.xml
@@ -23,7 +23,7 @@
     <parent>
       <groupId>org.glassfish.main</groupId>
       <artifactId>glassfish-parent</artifactId>
-      <version>6.2.6-SNAPSHOT</version>
+      <version>7.0.0-SNAPSHOT</version>
       <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/persistence/cmp/cmp-all/pom.xml b/appserver/persistence/cmp/cmp-all/pom.xml
index f691aa0..3545927 100755
--- a/appserver/persistence/cmp/cmp-all/pom.xml
+++ b/appserver/persistence/cmp/cmp-all/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.persistence.cmp</groupId>
         <artifactId>cmp</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/persistence/cmp/cmp-scripts/pom.xml b/appserver/persistence/cmp/cmp-scripts/pom.xml
index 82fd922..6716ec1 100755
--- a/appserver/persistence/cmp/cmp-scripts/pom.xml
+++ b/appserver/persistence/cmp/cmp-scripts/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.persistence.cmp</groupId>
         <artifactId>cmp</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>cmp-scripts</artifactId>
@@ -49,5 +49,6 @@
       the transitive dependency handling in Maven.
     -->
     <packaging>distribution-fragment</packaging>
+
     <name>GlassFish cmp scripts</name>
 </project>
diff --git a/appserver/persistence/cmp/ejb-mapping/pom.xml b/appserver/persistence/cmp/ejb-mapping/pom.xml
index 256560d..e15c684 100644
--- a/appserver/persistence/cmp/ejb-mapping/pom.xml
+++ b/appserver/persistence/cmp/ejb-mapping/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.persistence.cmp</groupId>
         <artifactId>cmp</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/persistence/cmp/enhancer/pom.xml b/appserver/persistence/cmp/enhancer/pom.xml
index 420f6a5..f2ad91a 100644
--- a/appserver/persistence/cmp/enhancer/pom.xml
+++ b/appserver/persistence/cmp/enhancer/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.persistence.cmp</groupId>
         <artifactId>cmp</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/persistence/cmp/generator-database/pom.xml b/appserver/persistence/cmp/generator-database/pom.xml
index d4b6700..8c9099d 100644
--- a/appserver/persistence/cmp/generator-database/pom.xml
+++ b/appserver/persistence/cmp/generator-database/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.persistence.cmp</groupId>
         <artifactId>cmp</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/persistence/cmp/internal-api/pom.xml b/appserver/persistence/cmp/internal-api/pom.xml
index 99c79df..002f788 100644
--- a/appserver/persistence/cmp/internal-api/pom.xml
+++ b/appserver/persistence/cmp/internal-api/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.persistence.cmp</groupId>
         <artifactId>cmp</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/persistence/cmp/model/pom.xml b/appserver/persistence/cmp/model/pom.xml
index f75aab2..1cb270b 100644
--- a/appserver/persistence/cmp/model/pom.xml
+++ b/appserver/persistence/cmp/model/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.persistence.cmp</groupId>
         <artifactId>cmp</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/persistence/cmp/pom.xml b/appserver/persistence/cmp/pom.xml
index f2f65ae..1a9fcfe 100644
--- a/appserver/persistence/cmp/pom.xml
+++ b/appserver/persistence/cmp/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.persistence</groupId>
         <artifactId>persistence</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.main.persistence.cmp</groupId>
diff --git a/appserver/persistence/cmp/support-ejb/pom.xml b/appserver/persistence/cmp/support-ejb/pom.xml
index a722f38..ade9576 100644
--- a/appserver/persistence/cmp/support-ejb/pom.xml
+++ b/appserver/persistence/cmp/support-ejb/pom.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-	Copyright (c) 2021 Contributors to the Eclipse Foundation
+  Copyright (c) 2021 Contributors to the Eclipse Foundation
     Copyright (c) 1997, 2021 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.main.persistence.cmp</groupId>
         <artifactId>cmp</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>cmp-support-ejb</artifactId>
diff --git a/appserver/persistence/cmp/support-sqlstore/pom.xml b/appserver/persistence/cmp/support-sqlstore/pom.xml
index f15d9d1..171a031 100644
--- a/appserver/persistence/cmp/support-sqlstore/pom.xml
+++ b/appserver/persistence/cmp/support-sqlstore/pom.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-	Copyright (c) 2021 Contributors to the Eclipse Foundation
+  Copyright (c) 2021 Contributors to the Eclipse Foundation
     Copyright (c) 1997, 2021 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.main.persistence.cmp</groupId>
         <artifactId>cmp</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>cmp-support-sqlstore</artifactId>
diff --git a/appserver/persistence/cmp/utility/pom.xml b/appserver/persistence/cmp/utility/pom.xml
index f70b8b6..7416006 100644
--- a/appserver/persistence/cmp/utility/pom.xml
+++ b/appserver/persistence/cmp/utility/pom.xml
@@ -23,7 +23,7 @@
     <parent>
        <groupId>org.glassfish.main.persistence.cmp</groupId>
        <artifactId>cmp</artifactId>
-       <version>6.2.6-SNAPSHOT</version>
+       <version>7.0.0-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/persistence/common/pom.xml b/appserver/persistence/common/pom.xml
index c5b5a11..39f5e16 100644
--- a/appserver/persistence/common/pom.xml
+++ b/appserver/persistence/common/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.persistence</groupId>
         <artifactId>persistence</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/persistence/eclipselink-wrapper/pom.xml b/appserver/persistence/eclipselink-wrapper/pom.xml
index 45d0ef3..394288c 100644
--- a/appserver/persistence/eclipselink-wrapper/pom.xml
+++ b/appserver/persistence/eclipselink-wrapper/pom.xml
@@ -23,7 +23,7 @@
     <parent>
        <groupId>org.glassfish.main.persistence</groupId>
        <artifactId>persistence</artifactId>
-       <version>6.2.6-SNAPSHOT</version>
+       <version>7.0.0-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/persistence/entitybean-container/pom.xml b/appserver/persistence/entitybean-container/pom.xml
index 6652e03..f3fab37 100644
--- a/appserver/persistence/entitybean-container/pom.xml
+++ b/appserver/persistence/entitybean-container/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.persistence</groupId>
         <artifactId>persistence</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/persistence/gf-jpa-connector/pom.xml b/appserver/persistence/gf-jpa-connector/pom.xml
index 4e0d5be..36605b6 100644
--- a/appserver/persistence/gf-jpa-connector/pom.xml
+++ b/appserver/persistence/gf-jpa-connector/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.persistence</groupId>
         <artifactId>persistence</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/persistence/jpa-container/pom.xml b/appserver/persistence/jpa-container/pom.xml
index 939f482..6e18426 100644
--- a/appserver/persistence/jpa-container/pom.xml
+++ b/appserver/persistence/jpa-container/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.persistence</groupId>
         <artifactId>persistence</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/persistence/jpa-container/src/main/java/org/glassfish/persistence/jpa/ServerProviderContainerContractInfo.java b/appserver/persistence/jpa-container/src/main/java/org/glassfish/persistence/jpa/ServerProviderContainerContractInfo.java
index 20efec8..2fdd5af 100644
--- a/appserver/persistence/jpa-container/src/main/java/org/glassfish/persistence/jpa/ServerProviderContainerContractInfo.java
+++ b/appserver/persistence/jpa-container/src/main/java/org/glassfish/persistence/jpa/ServerProviderContainerContractInfo.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to the Eclipse Foundation.
  * Copyright (c) 2010, 2020 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -34,6 +35,7 @@
 
 import jakarta.persistence.EntityManagerFactory;
 import jakarta.persistence.spi.ClassTransformer;
+import jakarta.persistence.spi.TransformerException;
 import jakarta.validation.Validation;
 import jakarta.validation.ValidatorFactory;
 
@@ -78,7 +80,11 @@
             public byte[] transform(
                     ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain,
                     byte[] classfileBuffer) throws IllegalClassFormatException {
-                return transformer.transform(loader, className, classBeingRedefined, protectionDomain, classfileBuffer);
+                try {
+                    return transformer.transform(loader, className, classBeingRedefined, protectionDomain, classfileBuffer);
+                } catch (TransformerException e) {
+                    throw (IllegalClassFormatException) (new IllegalClassFormatException().initCause(e));
+                }
             }
         });
     }
diff --git a/appserver/persistence/oracle-jdbc-driver-packages/pom.xml b/appserver/persistence/oracle-jdbc-driver-packages/pom.xml
index 97b3575..9cf4985 100755
--- a/appserver/persistence/oracle-jdbc-driver-packages/pom.xml
+++ b/appserver/persistence/oracle-jdbc-driver-packages/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.persistence</groupId>
         <artifactId>persistence</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>glassfish-oracle-jdbc-driver-packages</artifactId>
diff --git a/appserver/persistence/pom.xml b/appserver/persistence/pom.xml
index 4a85b25..d71c029 100644
--- a/appserver/persistence/pom.xml
+++ b/appserver/persistence/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.main.persistence</groupId>
diff --git a/appserver/pom.xml b/appserver/pom.xml
index 41db196..69fcd29 100644
--- a/appserver/pom.xml
+++ b/appserver/pom.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
+    Copyright (c) 2021, 2022 Contributors to Eclipse Foundation.
     Copyright (c) 1997, 2021 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
@@ -23,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-nucleus-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../nucleus/pom.xml</relativePath>
     </parent>
 
@@ -76,93 +77,84 @@
     </scm>
 
     <properties>
-        <product.name>Eclipse GlassFish</product.name>
-        <brief_product_name>GlassFish</brief_product_name>
-        <abbrev_product_name>glassfish</abbrev_product_name>
-        <admin_client_command_name>asadmin</admin_client_command_name>
-        <default_domain_template>appserver-domain.jar</default_domain_template>
-        <version_prefix />
-        <version_suffix />
-        <major_version>6</major_version>
-        <minor_version>2</minor_version>
-        <update_version>6</update_version>
-        <install.dir.name>glassfish6</install.dir.name>
+        <!-- Jakarta API Versions -->
 
         <!-- Jakarta Faces -->
-        <jakarta.faces-api.version>3.0.0</jakarta.faces-api.version>
-        <mojarra.version>3.0.1</mojarra.version>
+        <jakarta.faces-api.version>4.0.0-M3</jakarta.faces-api.version>
+        <mojarra.version>4.0.0-M5</mojarra.version>
 
         <!-- Jakarta WebSocket -->
-        <websocket-api.version>2.0.0</websocket-api.version>
-        <tyrus.version>2.0.2</tyrus.version>
+        <jakarta.websocket-api.version>2.1.0</jakarta.websocket-api.version>
+        <tyrus.version>2.1.0-M1</tyrus.version>
 
         <!-- Jakarta Concurrency -->
-        <concurrent-api.version>2.0.0</concurrent-api.version>
+        <jakarta.concurrent-api.version>2.0.0</jakarta.concurrent-api.version>
         <concurrent.version>2.0.0</concurrent.version>
 
         <!-- Jakarta Interceptors -->
-        <jakarta.interceptor-api.version>2.0.0</jakarta.interceptor-api.version>
+        <jakarta.interceptor-api.version>2.1.0</jakarta.interceptor-api.version>
 
-        <!-- Jakarta EE Security + Authentication/Authorization -->
-        <jakarta.security.enterprise-api.version>2.0.0</jakarta.security.enterprise-api.version>
-        <jakarta.authorization-api.version>2.0.0</jakarta.authorization-api.version>
-        <jakarta.authentication-api.version>2.0.0</jakarta.authentication-api.version>
+        <!-- Jakarta Security + Authentication/Authorization -->
+        <jakarta.security-api.version>2.0.0</jakarta.security-api.version>
+        <jakarta.authorization-api.version>2.1.0-RC1</jakarta.authorization-api.version>
+        <jakarta.authentication-api.version>3.0.0-RC2</jakarta.authentication-api.version>
         <soteria.version>2.0.1</soteria.version>
-        <exousia.version>1.0.0</exousia.version>
+        <exousia.version>2.1.0-M1</exousia.version>
 
         <!-- Jakarta Messaging -->
-        <jms-api.version>3.0.0</jms-api.version>
-        <mq.version>6.2.0</mq.version>
+        <jakarta.messaging-api.version>3.1.0</jakarta.messaging-api.version>
+        <openmq.version>6.3.0-RC1</openmq.version>
 
         <!-- Jakarta Persistence -->
-        <jakarta-persistence-api.version>3.0.0</jakarta-persistence-api.version>
-        <eclipselink.version>3.0.2</eclipselink.version>
+        <jakarta.persistence-api.version>3.1.0-RC2</jakarta.persistence-api.version>
+        <eclipselink.version>4.0.0-M1</eclipselink.version>
         <eclipselink.asm.version>9.2.0</eclipselink.asm.version>
 
-
         <!-- Jakarta Transactions -->
-        <jakarta.transaction-api.version>2.0.0</jakarta.transaction-api.version>
+        <jakarta.transaction-api.version>2.0.1-RC1</jakarta.transaction-api.version>
 
         <!-- Jakarta Connectors -->
-        <jakarta.resource-api.version>2.0.0</jakarta.resource-api.version>
+        <jakarta.resource-api.version>2.1.0</jakarta.resource-api.version>
 
         <!-- Jakarta Batch -->
-        <jakarta.batch-api.version>2.0.0</jakarta.batch-api.version>
-        <com.ibm.jbatch.container.version>2.0.0</com.ibm.jbatch.container.version>
-        <com.ibm.jbatch.spi.version>2.0.0</com.ibm.jbatch.spi.version>
+        <jakarta.batch-api.version>2.1.0</jakarta.batch-api.version>
+        <jbatch.version>2.1.0-M2</jbatch.version>
 
         <!-- Jakarta Enterprise beans -->
         <jakarta.ejb-api.version>4.0.0</jakarta.ejb-api.version>
 
         <!-- Jakarta JSON -->
-        <jsonp-api.version>2.0.1</jsonp-api.version>
-        <jsonp-ri.version>2.0.1</jsonp-ri.version>
+        <jakarta.jsonp-api.version>2.1.0</jakarta.jsonp-api.version>
+        <parsson.version>1.1.0</parsson.version>
         <jsonp-jaxrs.version>2.0.1</jsonp-jaxrs.version>
-        <json.bind-api.version>2.0.0</json.bind-api.version>
-        <yasson.version>2.0.4</yasson.version>
+        <jakarta.json.bind-api.version>3.0.0</jakarta.json.bind-api.version>
+        <yasson.version>3.0.0-RC1</yasson.version>
 
-        <!-- Jakarta Server Pages -->
-        <jsp-api.version>3.0.0</jsp-api.version>
-        <wasp.version>3.0.1</wasp.version>
+        <!-- Jakarta Pages -->
+        <jakarta.pages-api.version>3.1.0</jakarta.pages-api.version>
+        <wasp.version>3.1.0-M1</wasp.version>
 
-        <!-- Used for Jakarta XML Web Services -->
-        <woodstox.version>6.2.5</woodstox.version>
+        <!-- Used for Jakarta SOAP (XML Web Services) -->
+        <xmlsec.version>2.1.7</xmlsec.version>
+        <woodstox.version>6.2.8</woodstox.version>
         <stax2-api.version>4.2.1</stax2-api.version>
 
         <!-- Jakarta Standard Tag Library -->
-        <jstl-api.version>2.0.0</jstl-api.version>
-        <jstl-impl.version>2.0.0</jstl-impl.version>
+        <jstl-api.version>3.0.0-RC1</jstl-api.version>
+        <jstl-impl.version>3.0.0-M1</jstl-impl.version>
 
-        <!-- CDI -->
-        <cdi-api.version>3.0.0</cdi-api.version>
-        <weld.version>4.0.2.Final</weld.version>
+        <!-- Jakarta CDI -->
+        <jakarta.cdi-api.version>4.0.0</jakarta.cdi-api.version>
+        <weld.version>5.0.0.CR1</weld.version>
         <jboss.classfilewriter.version>1.2.5.Final</jboss.classfilewriter.version>
 
         <!-- Jakarta MVC -->
-        <mvc-api.version>2.0.0</mvc-api.version>
+        <jakarta.mvc-api.version>2.0.0</jakarta.mvc-api.version>
         <krazo.version>2.0.1</krazo.version>
 
+
         <!-- Admin console components -->
+        
         <jsftemplating.version>3.0.0</jsftemplating.version>
         <jsf-ext.version>0.2</jsf-ext.version>
         <woodstock.version>5.0.0</woodstock.version>
@@ -171,12 +163,29 @@
         <woodstock-json.version>2.0</woodstock-json.version>
         <woodstock-prototype.version>1.7.3</woodstock-prototype.version>
 
+
         <!-- Other -->
+        
         <dbschema.version>6.7</dbschema.version>
         <schema2beans.version>6.7</schema2beans.version>
         <derby.version>10.15.2.0</derby.version>
-        <wsdl4j.version>1.5.0</wsdl4j.version>
+        <wsdl4j.version>1.6.3</wsdl4j.version>
         <maven-rar-plugin.version>2.4</maven-rar-plugin.version>
+        
+        
+        <!-- Settings -->
+        
+        <product.name>Eclipse GlassFish</product.name>
+        <brief_product_name>GlassFish</brief_product_name>
+        <abbrev_product_name>glassfish</abbrev_product_name>
+        <admin_client_command_name>asadmin</admin_client_command_name>
+        <default_domain_template>appserver-domain.jar</default_domain_template>
+        <version_prefix />
+        <version_suffix />
+        <major_version>7</major_version>
+        <minor_version>0</minor_version>
+        <update_version>0</update_version>
+        <install.dir.name>glassfish7</install.dir.name>
     </properties>
 
     <dependencyManagement>
@@ -197,7 +206,12 @@
             <dependency>
                 <groupId>jakarta.websocket</groupId>
                 <artifactId>jakarta.websocket-api</artifactId>
-                <version>${websocket-api.version}</version>
+                <version>${jakarta.websocket-api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>jakarta.websocket</groupId>
+                <artifactId>jakarta.websocket-client-api</artifactId>
+                <version>${jakarta.websocket-api.version}</version>
             </dependency>
             <dependency>
                 <groupId>org.glassfish.tyrus</groupId>
@@ -211,7 +225,7 @@
             <dependency>
                 <groupId>jakarta.enterprise.concurrent</groupId>
                 <artifactId>jakarta.enterprise.concurrent-api</artifactId>
-                <version>${concurrent-api.version}</version>
+                <version>${jakarta.concurrent-api.version}</version>
             </dependency>
             <dependency>
                 <groupId>org.glassfish</groupId>
@@ -230,7 +244,7 @@
             <dependency>
                 <groupId>jakarta.security.enterprise</groupId>
                 <artifactId>jakarta.security.enterprise-api</artifactId>
-                <version>${jakarta.security.enterprise-api.version}</version>
+                <version>${jakarta.security-api.version}</version>
             </dependency>
             <dependency>
                 <groupId>jakarta.authentication</groupId>
@@ -268,12 +282,12 @@
             <dependency>
                 <groupId>jakarta.jms</groupId>
                 <artifactId>jakarta.jms-api</artifactId>
-                <version>${jms-api.version}</version>
+                <version>${jakarta.messaging-api.version}</version>
             </dependency>
             <dependency>
                 <groupId>org.glassfish.mq</groupId>
                 <artifactId>mq-distribution</artifactId>
-                <version>${mq.version}</version>
+                <version>${openmq.version}</version>
             </dependency>
              <dependency>
                 <groupId>com.sun.messaging.mq</groupId>
@@ -285,7 +299,7 @@
             <dependency>
                 <groupId>jakarta.persistence</groupId>
                 <artifactId>jakarta.persistence-api</artifactId>
-                <version>${jakarta-persistence-api.version}</version>
+                <version>${jakarta.persistence-api.version}</version>
             </dependency>
             <dependency>
                 <groupId>org.eclipse.persistence</groupId>
@@ -356,12 +370,12 @@
             <dependency>
                 <groupId>com.ibm.jbatch</groupId>
                 <artifactId>com.ibm.jbatch.container</artifactId>
-                <version>${com.ibm.jbatch.container.version}</version>
+                <version>${jbatch.version}</version>
             </dependency>
             <dependency>
                 <groupId>com.ibm.jbatch</groupId>
                 <artifactId>com.ibm.jbatch.spi</artifactId>
-                <version>${com.ibm.jbatch.spi.version}</version>
+                <version>${jbatch.version}</version>
             </dependency>
 
             <!-- Jakarta Validation -->
@@ -371,11 +385,11 @@
                 <version>${hibernate-validator.version}</version>
             </dependency>
 
-            <!-- Jakarta Expression Language Impl -->
+            <!-- Expressly - Jakarta Expression Language Impl -->
             <dependency>
-                <groupId>org.glassfish</groupId>
-                <artifactId>jakarta.el</artifactId>
-                <version>${jakarta.el.version}</version>
+                <groupId>org.glassfish.expressly</groupId>
+                <artifactId>expressly</artifactId>
+                <version>${expressly.version}</version>
             </dependency>
 
             <!-- Jakarta Enterprise beans -->
@@ -389,34 +403,34 @@
             <dependency>
                 <groupId>jakarta.json</groupId>
                 <artifactId>jakarta.json-api</artifactId>
-                <version>${jsonp-api.version}</version>
+                <version>${jakarta.jsonp-api.version}</version>
             </dependency>
             <dependency>
                 <groupId>jakarta.json.bind</groupId>
                 <artifactId>jakarta.json.bind-api</artifactId>
-                <version>${json.bind-api.version}</version>
+                <version>${jakarta.json.bind-api.version}</version>
             </dependency>
             <dependency>
-                <groupId>org.glassfish</groupId>
-                <artifactId>jakarta.json</artifactId>
-                <version>${jsonp-ri.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.glassfish</groupId>
-                <artifactId>jsonp-jaxrs</artifactId>
-                <version>${jsonp-jaxrs.version}</version>
+                <groupId>org.eclipse.parsson</groupId>
+                <artifactId>parsson</artifactId>
+                <version>${parsson.version}</version>
             </dependency>
             <dependency>
                 <groupId>org.eclipse</groupId>
                 <artifactId>yasson</artifactId>
                 <version>${yasson.version}</version>
             </dependency>
+             <dependency>
+                <groupId>org.glassfish</groupId>
+                <artifactId>jsonp-jaxrs</artifactId>
+                <version>${jsonp-jaxrs.version}</version>
+            </dependency>
 
-            <!-- Jakarta Server Pages -->
+            <!-- Jakarta Pages -->
             <dependency>
                 <groupId>jakarta.servlet.jsp</groupId>
                 <artifactId>jakarta.servlet.jsp-api</artifactId>
-                <version>${jsp-api.version}</version>
+                <version>${jakarta.pages-api.version}</version>
             </dependency>
             <dependency>
                 <groupId>org.glassfish.wasp</groupId>
@@ -436,6 +450,16 @@
                 <version>${webservices.version}</version>
             </dependency>
             <dependency>
+                <groupId>org.glassfish.metro</groupId>
+                <artifactId>webservices-extra-xmlsec</artifactId>
+                <version>${webservices.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.santuario</groupId>
+                <artifactId>xmlsec</artifactId>
+                <version>${xmlsec.version}</version>
+            </dependency>
+            <dependency>
                 <groupId>com.fasterxml.woodstox</groupId>
                 <artifactId>woodstox-core</artifactId>
                 <version>${woodstox.version}</version>
@@ -450,7 +474,7 @@
             <dependency>
                 <groupId>jakarta.xml.bind</groupId>
                 <artifactId>jakarta.xml.bind-api</artifactId>
-                <version>${jakarta.jaxb-api.version}</version>
+                <version>${jakarta.xml.bind-api.version}</version>
             </dependency>
             <dependency>
                 <groupId>com.sun.xml.bind</groupId>
@@ -470,11 +494,11 @@
                 <version>${jstl-impl.version}</version>
             </dependency>
 
-            <!-- CDI -->
+            <!-- Jakarta CDI -->
             <dependency>
                 <groupId>jakarta.enterprise</groupId>
                 <artifactId>jakarta.enterprise.cdi-api</artifactId>
-                <version>${cdi-api.version}</version>
+                <version>${jakarta.cdi-api.version}</version>
                 <exclusions>
                     <exclusion>
                         <groupId>jakarta.inject</groupId>
@@ -483,6 +507,11 @@
                 </exclusions>
             </dependency>
             <dependency>
+                <groupId>jakarta.enterprise</groupId>
+                <artifactId>jakarta.enterprise.lang-model</artifactId>
+                <version>${jakarta.cdi-api.version}</version>
+            </dependency>
+            <dependency>
                 <groupId>org.jboss.weld</groupId>
                 <artifactId>weld-osgi-bundle</artifactId>
                 <version>${weld.version}</version>
@@ -513,7 +542,7 @@
             <dependency>
                 <groupId>jakarta.mvc</groupId>
                 <artifactId>jakarta.mvc-api</artifactId>
-                <version>${mvc-api.version}</version>
+                <version>${jakarta.mvc-api.version}</version>
             </dependency>
             <dependency>
                 <groupId>org.eclipse.krazo</groupId>
@@ -679,28 +708,38 @@
                     <specs>
                         <spec>
                             <artifact>
-                                <groupId>com.sun.mail</groupId>
-                                <artifactId>jakarta.mail</artifactId>
-                                <version>${mail.version}</version>
+                                <groupId>jakarta.activation</groupId>
+                                <artifactId>jakarta.activation-api</artifactId>
+                                <version>${activation.version}</version>
                             </artifact>
-                            <jarType>impl</jarType>
-                            <specVersion>2.0</specVersion>
-                            <implVersion>2.0.0</implVersion>
-                            <apiPackage>jakarta.mail</apiPackage>
-                            <implNamespace>com.sun.mail</implNamespace>
+                            <jarType>api</jarType>
+                            <specVersion>2.1</specVersion>
+                            <specImplVersion>${activation.version}</specImplVersion>
+                            <apiPackage>jakarta.activation</apiPackage>
                         </spec>
                         <spec>
                             <artifact>
-                                <groupId>org.glassfish</groupId>
-                                <artifactId>jakarta.json</artifactId>
-                                <version>${jsonp-ri.version}</version>
+                                <groupId>jakarta.mail</groupId>
+                                <artifactId>jakarta.mail-api</artifactId>
+                                <version>${mail.version}</version>
+                            </artifact>
+                            <jarType>api</jarType>
+                            <specVersion>2.1</specVersion>
+                            <specImplVersion>${mail.version}</specImplVersion>
+                            <apiPackage>jakarta.mail</apiPackage>
+                        </spec>
+                        <spec>
+                            <artifact>
+                                <groupId>org.eclipse.parsson</groupId>
+                                <artifactId>parsson</artifactId>
+                                <version>${parsson.version}</version>
                             </artifact>
                             <nonFinal>false</nonFinal>
                             <jarType>impl</jarType>
                             <specVersion>1.1</specVersion>
-                            <implVersion>${jsonp-ri.version}</implVersion>
+                            <implVersion>${parsson.version}</implVersion>
                             <apiPackage>jakarta.json</apiPackage>
-                            <implNamespace>org.glassfish</implNamespace>
+                            <implNamespace>org.eclipse</implNamespace>
                         </spec>
                         <spec>
                             <artifact>
@@ -792,24 +831,24 @@
                             <artifact>
                                 <groupId>jakarta.jms</groupId>
                                 <artifactId>jakarta.jms-api</artifactId>
-                                <version>${jms-api.version}</version>
+                                <version>${jakarta.messaging-api.version}</version>
                             </artifact>
                             <nonFinal>false</nonFinal>
                             <jarType>api</jarType>
-                            <specVersion>${jms-api.version}</specVersion>
-                            <specImplVersion>${jms-api.version}</specImplVersion>
+                            <specVersion>${jakarta.messaging-api.version}</specVersion>
+                            <specImplVersion>${jakarta.messaging-api.version}</specImplVersion>
                             <apiPackage>jakarta.jms</apiPackage>
                         </spec>
                         <spec>
                             <artifact>
                                 <groupId>jakarta.enterprise.concurrent</groupId>
                                 <artifactId>jakarta.enterprise.concurrent-api</artifactId>
-                                <version>${concurrent-api.version}</version>
+                                <version>${jakarta.concurrent-api.version}</version>
                             </artifact>
                             <nonFinal>false</nonFinal>
                             <jarType>api</jarType>
-                            <specVersion>${concurrent-api.version}</specVersion>
-                            <specImplVersion>${concurrent-api.version}</specImplVersion>
+                            <specVersion>${jakarta.concurrent-api.version}</specVersion>
+                            <specImplVersion>${jakarta.concurrent-api.version}</specImplVersion>
                             <apiPackage>jakarta.enterprise.concurrent</apiPackage>
                         </spec>
                         <spec>
@@ -840,24 +879,24 @@
                             <artifact>
                                 <groupId>jakarta.websocket</groupId>
                                 <artifactId>jakarta.websocket-api</artifactId>
-                                <version>${websocket-api.version}</version>
+                                <version>${jakarta.websocket-api.version}</version>
                             </artifact>
                             <nonFinal>false</nonFinal>
                             <jarType>api</jarType>
-                            <specVersion>2.0</specVersion>
-                            <specImplVersion>${websocket-api.version}</specImplVersion>
+                            <specVersion>2.1</specVersion>
+                            <specImplVersion>${jakarta.websocket-api.version}</specImplVersion>
                             <apiPackage>jakarta.websocket</apiPackage>
                         </spec>
                         <spec>
                             <artifact>
                                 <groupId>jakarta.ws.rs</groupId>
                                 <artifactId>jakarta.ws.rs-api</artifactId>
-                                <version>${jax-rs-api.impl.version}</version>
+                                <version>${jakarta.rest-api.version}</version>
                             </artifact>
                             <nonFinal>false</nonFinal>
                             <jarType>api</jarType>
-                            <specVersion>${jax-rs-api.spec.version}</specVersion>
-                            <specImplVersion>${jax-rs-api.impl.version}</specImplVersion>
+                            <specVersion>${jakarta.rest-api.version}</specVersion>
+                            <specImplVersion>${jakarta.rest-api.version}</specImplVersion>
                             <apiPackage>jakarta.ws.rs</apiPackage>
                         </spec>
                         <spec>
@@ -900,7 +939,7 @@
                             <artifact>
                                 <groupId>jakarta.servlet.jsp</groupId>
                                 <artifactId>jakarta.servlet.jsp-api</artifactId>
-                                <version>${jsp-api.version}</version>
+                                <version>${jakarta.pages-api.version}</version>
                             </artifact>
                             <nonFinal>false</nonFinal>
                             <jarType>api</jarType>
@@ -910,25 +949,25 @@
                         </spec>
                         <spec>
                             <artifact>
-                                <groupId>org.glassfish</groupId>
-                                <artifactId>jakarta.el</artifactId>
-                                <version>${jakarta.el.version}</version>
+                                <groupId>org.glassfish.expressly</groupId>
+                                <artifactId>expressly</artifactId>
+                                <version>${expressly.version}</version>
                             </artifact>
                             <jarType>impl</jarType>
-                            <specVersion>3.0</specVersion>
-                            <implVersion>3.0.0</implVersion>
+                            <specVersion>5.0</specVersion>
+                            <implVersion>5.0.0</implVersion>
                             <apiPackage>jakarta.el</apiPackage>
-                            <implNamespace>com.sun.el</implNamespace>
+                            <implNamespace>org.glassfish.expressly</implNamespace>
                         </spec>
                         <spec>
                             <artifact>
                                 <groupId>jakarta.security.enterprise</groupId>
-                                <artifactId>jakarta.security.enterprise-api</artifactId>
-                                <version>${jakarta.security.enterprise-api.version}</version>
+                                <artifactId>jakarta.security-api</artifactId>
+                                <version>${jakarta.security-api.version}</version>
                             </artifact>
                             <nonFinal>false</nonFinal>
                             <jarType>api</jarType>
-                            <specVersion>${jakarta.security.enterprise-api.version}</specVersion>
+                            <specVersion>${jakarta.security-api.version}</specVersion>
                             <specImplVersion>${jakarta.security.enterprise.version}</specImplVersion>
                             <apiPackage>javax.security.enterprise</apiPackage>
                             <implNamespace>org.glassfish.soteria</implNamespace>
diff --git a/appserver/resources/mail/mail-connector/pom.xml b/appserver/resources/mail/mail-connector/pom.xml
index 575dfeb..98396ac 100644
--- a/appserver/resources/mail/mail-connector/pom.xml
+++ b/appserver/resources/mail/mail-connector/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.resources</groupId>
         <artifactId>mail</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>mail-connector</artifactId>
@@ -86,8 +86,8 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.glassfish</groupId>
-            <artifactId>jakarta.el</artifactId>
+            <groupId>org.glassfish.expressly</groupId>
+            <artifactId>expressly</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
diff --git a/appserver/resources/mail/mail-runtime/pom.xml b/appserver/resources/mail/mail-runtime/pom.xml
index 9777b98..387638a 100644
--- a/appserver/resources/mail/mail-runtime/pom.xml
+++ b/appserver/resources/mail/mail-runtime/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.resources</groupId>
         <artifactId>mail</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
@@ -74,8 +74,13 @@
             <artifactId>jakarta.interceptor-api</artifactId>
         </dependency>
         <dependency><!-- for FindBugs -->
-            <groupId>com.sun.mail</groupId>
-            <artifactId>jakarta.mail</artifactId>
+            <groupId>jakarta.mail</groupId>
+            <artifactId>jakarta.mail-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.angus</groupId>
+            <artifactId>angus-mail</artifactId>
             <scope>provided</scope>
         </dependency>
     </dependencies>
diff --git a/appserver/resources/mail/pom.xml b/appserver/resources/mail/pom.xml
index fd60384..26089ae 100644
--- a/appserver/resources/mail/pom.xml
+++ b/appserver/resources/mail/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.resources</groupId>
         <artifactId>resources</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>mail</artifactId>
@@ -38,8 +38,12 @@
 
     <dependencies>
         <dependency>
-            <groupId>com.sun.mail</groupId>
-            <artifactId>jakarta.mail</artifactId>
+            <groupId>jakarta.mail</groupId>
+            <artifactId>jakarta.mail-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.angus</groupId>
+            <artifactId>angus-mail</artifactId>
         </dependency>
     </dependencies>
 </project>
diff --git a/appserver/resources/pom.xml b/appserver/resources/pom.xml
index 5983ce7..c1c9115 100644
--- a/appserver/resources/pom.xml
+++ b/appserver/resources/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/resources/resources-connector/pom.xml b/appserver/resources/resources-connector/pom.xml
index 6afca35..237ffb7 100755
--- a/appserver/resources/resources-connector/pom.xml
+++ b/appserver/resources/resources-connector/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.resources</groupId>
         <artifactId>resources</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
@@ -94,8 +94,8 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.glassfish</groupId>
-            <artifactId>jakarta.el</artifactId>
+            <groupId>org.glassfish.expressly</groupId>
+            <artifactId>expressly</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
diff --git a/appserver/resources/resources-runtime/pom.xml b/appserver/resources/resources-runtime/pom.xml
index 6fa6754..15b9579 100755
--- a/appserver/resources/resources-runtime/pom.xml
+++ b/appserver/resources/resources-runtime/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.resources</groupId>
         <artifactId>resources</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/security/appclient.security/pom.xml b/appserver/security/appclient.security/pom.xml
index c3e8b39..e3df3e8 100644
--- a/appserver/security/appclient.security/pom.xml
+++ b/appserver/security/appclient.security/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.security</groupId>
         <artifactId>securitymodule</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>appclient.security</artifactId>
diff --git a/appserver/security/core-ee/pom.xml b/appserver/security/core-ee/pom.xml
index dcc6e09..ff80d69 100644
--- a/appserver/security/core-ee/pom.xml
+++ b/appserver/security/core-ee/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.security</groupId>
         <artifactId>securitymodule</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>security-ee</artifactId>
diff --git a/appserver/security/ejb.security/pom.xml b/appserver/security/ejb.security/pom.xml
index 6e29e66..fe42040 100644
--- a/appserver/security/ejb.security/pom.xml
+++ b/appserver/security/ejb.security/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.security</groupId>
         <artifactId>securitymodule</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/security/jaspic-provider-framework/pom.xml b/appserver/security/jaspic-provider-framework/pom.xml
index 8fe2284..9999b44 100644
--- a/appserver/security/jaspic-provider-framework/pom.xml
+++ b/appserver/security/jaspic-provider-framework/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.security</groupId>
         <artifactId>securitymodule</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/security/jaspic-provider-framework/src/main/java/com/sun/jaspic/config/factory/BaseAuthConfigFactory.java b/appserver/security/jaspic-provider-framework/src/main/java/com/sun/jaspic/config/factory/BaseAuthConfigFactory.java
index 8523dad..8215649 100644
--- a/appserver/security/jaspic-provider-framework/src/main/java/com/sun/jaspic/config/factory/BaseAuthConfigFactory.java
+++ b/appserver/security/jaspic-provider-framework/src/main/java/com/sun/jaspic/config/factory/BaseAuthConfigFactory.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2022, 2022 Contributors to the Eclipse Foundation.
  * Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -16,9 +17,9 @@
 
 package com.sun.jaspic.config.factory;
 
-import com.sun.jaspic.config.helper.JASPICLogManager;
 import java.lang.reflect.Constructor;
-
+import java.security.AccessController;
+import java.security.PrivilegedAction;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
@@ -32,9 +33,14 @@
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
+import com.sun.jaspic.config.factory.singlemodule.DefaultAuthConfigProvider;
+import com.sun.jaspic.config.helper.JASPICLogManager;
+
 import jakarta.security.auth.message.config.AuthConfigFactory;
 import jakarta.security.auth.message.config.AuthConfigProvider;
 import jakarta.security.auth.message.config.RegistrationListener;
+import jakarta.security.auth.message.module.ServerAuthModule;
+import jakarta.servlet.ServletContext;
 
 
 /**
@@ -45,6 +51,8 @@
 
     private static final Logger logger = Logger.getLogger(JASPICLogManager.JASPIC_LOGGER, JASPICLogManager.RES_BUNDLE);
 
+    private static final String CONTEXT_REGISTRATION_ID = "org.glassfish.security.message.registrationId";
+
     private static final ReadWriteLock rwLock = new ReentrantReadWriteLock(true);
     public static final Lock rLock = rwLock.readLock();
     public static final Lock wLock = rwLock.writeLock();
@@ -369,6 +377,70 @@
         }
     }
 
+    /**
+     * Gets the app context ID from the servlet context.
+     *
+     * <p>
+     * The app context ID is the ID that Jakarta Authentication associates with the given application.
+     * In this case that given application is the web application corresponding to the
+     * ServletContext.
+     *
+     * @param context the servlet context for which to obtain the Jakarta Authentication app context ID
+     * @return the app context ID for the web application corresponding to the given context
+     */
+    public static String getAppContextID(ServletContext context) {
+        return context.getVirtualServerName() + " " + context.getContextPath();
+    }
+
+    @Override
+    public String registerServerAuthModule(ServerAuthModule serverAuthModule, Object context) {
+        if (!(context instanceof ServletContext)) {
+            return null;
+        }
+
+        ServletContext servletContext = (ServletContext) context;
+
+        // Register the factory-factory-factory for the SAM
+        String registrationId = AccessController.doPrivileged(new PrivilegedAction<String>() {
+            @Override
+            public String run() {
+                return registerConfigProvider(
+                        new DefaultAuthConfigProvider(serverAuthModule),
+                        "HttpServlet",
+                        getAppContextID(servletContext),
+                        "Default single SAM authentication config provider");
+            }
+        });
+
+        // Remember the registration ID returned by the factory, so we can unregister the JASPIC module when the web module
+        // is undeployed. JASPIC being the low level API that it is won't do this automatically.
+        servletContext.setAttribute(CONTEXT_REGISTRATION_ID, registrationId);
+
+        return registrationId;
+    }
+
+    @Override
+    public void removeServerAuthModule(Object context) {
+        if (!(context instanceof ServletContext)) {
+            return;
+        }
+
+        ServletContext servletContext = (ServletContext) context;
+
+        String registrationId = (String) servletContext.getAttribute(CONTEXT_REGISTRATION_ID);
+        if (!isEmpty(registrationId)) {
+            AccessController.doPrivileged(new PrivilegedAction<Boolean>() {
+                @Override
+                public Boolean run() {
+                    return removeRegistration(registrationId);
+                }
+            });
+        }
+    }
+
+    private static boolean isEmpty(String string) {
+        return string == null || string.isEmpty();
+    }
 
     private AuthConfigProvider getConfigProviderUnderLock(String layer, String appContext,
         RegistrationListener listener) {
diff --git a/appserver/security/jaspic-provider-framework/src/main/java/com/sun/jaspic/config/factory/singlemodule/DefaultAuthConfigProvider.java b/appserver/security/jaspic-provider-framework/src/main/java/com/sun/jaspic/config/factory/singlemodule/DefaultAuthConfigProvider.java
new file mode 100644
index 0000000..5f19a29
--- /dev/null
+++ b/appserver/security/jaspic-provider-framework/src/main/java/com/sun/jaspic/config/factory/singlemodule/DefaultAuthConfigProvider.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright (c) 2022, 2022 Contributors to the Eclipse Foundation.
+ * Copyright (c) 2015, 2020 Oracle and/or its affiliates. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0, which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * This Source Code may also be made available under the following Secondary
+ * Licenses when the conditions for such availability set forth in the
+ * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ * version 2 with the GNU Classpath Exception, which is available at
+ * https://www.gnu.org/software/classpath/license.html.
+ *
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+ */
+
+package com.sun.jaspic.config.factory.singlemodule;
+
+import java.util.Map;
+
+import javax.security.auth.callback.CallbackHandler;
+
+import jakarta.security.auth.message.AuthException;
+import jakarta.security.auth.message.config.AuthConfigFactory;
+import jakarta.security.auth.message.config.AuthConfigProvider;
+import jakarta.security.auth.message.config.ClientAuthConfig;
+import jakarta.security.auth.message.config.ServerAuthConfig;
+import jakarta.security.auth.message.config.ServerAuthContext;
+import jakarta.security.auth.message.module.ServerAuthModule;
+
+/**
+ * This class functions as a kind of factory-factory for {@link ServerAuthConfig} instances, which are by themselves factories
+ * for {@link ServerAuthContext} instances, which are delegates for the actual {@link ServerAuthModule} (SAM) that we're after.
+ *
+ * @author Arjan Tijms
+ */
+public class DefaultAuthConfigProvider implements AuthConfigProvider {
+
+    private static final String CALLBACK_HANDLER_PROPERTY_NAME = "authconfigprovider.client.callbackhandler";
+
+    private Map<String, String> providerProperties;
+    private ServerAuthModule serverAuthModule;
+
+    public DefaultAuthConfigProvider(ServerAuthModule serverAuthModule) {
+        this.serverAuthModule = serverAuthModule;
+    }
+
+    /**
+     * Constructor with signature and implementation that's required by API.
+     *
+     * @param properties provider properties
+     * @param factory the auth config factory
+     */
+    public DefaultAuthConfigProvider(Map<String, String> properties, AuthConfigFactory factory) {
+        this.providerProperties = properties;
+
+        // API requires self registration if factory is provided. Not clear
+        // where the "layer" (2nd parameter)
+        // and especially "appContext" (3rd parameter) values have to come from
+        // at this place.
+        if (factory != null) {
+            // If this method ever gets called, it may throw a SecurityException.
+            // Don't bother with a PrivilegedAction as we don't expect to ever be
+            // constructed this way.
+            factory.registerConfigProvider(this, null, null, "Auto registration");
+        }
+    }
+
+    /**
+     * The actual factory method that creates the factory used to eventually obtain the delegate for a SAM.
+     */
+    @Override
+    public ServerAuthConfig getServerAuthConfig(String layer, String appContext, CallbackHandler handler) throws AuthException,
+        SecurityException {
+        return new DefaultServerAuthConfig(layer, appContext, handler == null ? createDefaultCallbackHandler() : handler,
+            providerProperties, serverAuthModule);
+    }
+
+    @Override
+    public ClientAuthConfig getClientAuthConfig(String layer, String appContext, CallbackHandler handler) throws AuthException,
+        SecurityException {
+        return null;
+    }
+
+    @Override
+    public void refresh() {
+    }
+
+    /**
+     * Creates a default callback handler via the system property "authconfigprovider.client.callbackhandler", as seemingly
+     * required by the API (API uses wording "may" create default handler). TODO: Isn't
+     * "authconfigprovider.client.callbackhandler" JBoss specific?
+     *
+     * @return
+     * @throws AuthException
+     */
+    private CallbackHandler createDefaultCallbackHandler() throws AuthException {
+        String callBackClassName = System.getProperty(CALLBACK_HANDLER_PROPERTY_NAME);
+
+        if (callBackClassName == null) {
+            throw new AuthException("No default handler set via system property: " + CALLBACK_HANDLER_PROPERTY_NAME);
+        }
+
+        try {
+            return (CallbackHandler)
+                Thread.currentThread()
+                      .getContextClassLoader()
+                      .loadClass(callBackClassName)
+                      .getDeclaredConstructor()
+                      .newInstance();
+        } catch (Exception e) {
+            throw new AuthException(e.getMessage());
+        }
+    }
+
+}
diff --git a/appserver/security/jaspic-provider-framework/src/main/java/com/sun/jaspic/config/factory/singlemodule/DefaultServerAuthConfig.java b/appserver/security/jaspic-provider-framework/src/main/java/com/sun/jaspic/config/factory/singlemodule/DefaultServerAuthConfig.java
new file mode 100644
index 0000000..b1d950e
--- /dev/null
+++ b/appserver/security/jaspic-provider-framework/src/main/java/com/sun/jaspic/config/factory/singlemodule/DefaultServerAuthConfig.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (c) 2022, 2022 Contributors to the Eclipse Foundation.
+ * Copyright (c) 2015, 2020 Oracle and/or its affiliates. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0, which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * This Source Code may also be made available under the following Secondary
+ * Licenses when the conditions for such availability set forth in the
+ * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ * version 2 with the GNU Classpath Exception, which is available at
+ * https://www.gnu.org/software/classpath/license.html.
+ *
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+ */
+
+package com.sun.jaspic.config.factory.singlemodule;
+
+import java.util.Map;
+
+import javax.security.auth.Subject;
+import javax.security.auth.callback.CallbackHandler;
+
+import jakarta.security.auth.message.AuthException;
+import jakarta.security.auth.message.MessageInfo;
+import jakarta.security.auth.message.config.ServerAuthConfig;
+import jakarta.security.auth.message.config.ServerAuthContext;
+import jakarta.security.auth.message.module.ServerAuthModule;
+
+/**
+ * This class functions as a kind of factory for {@link ServerAuthContext} instances, which are delegates for the actual
+ * {@link ServerAuthModule} (SAM) that we're after.
+ *
+ * @author Arjan Tijms
+ */
+public class DefaultServerAuthConfig implements ServerAuthConfig {
+
+    private String layer;
+    private String appContext;
+    private CallbackHandler handler;
+    private Map<String, String> providerProperties;
+    private ServerAuthModule serverAuthModule;
+
+    public DefaultServerAuthConfig(String layer, String appContext, CallbackHandler handler,
+        Map<String, String> providerProperties, ServerAuthModule serverAuthModule) {
+        this.layer = layer;
+        this.appContext = appContext;
+        this.handler = handler;
+        this.providerProperties = providerProperties;
+        this.serverAuthModule = serverAuthModule;
+    }
+
+    @Override
+    public ServerAuthContext getAuthContext(String authContextID, Subject serviceSubject,
+        @SuppressWarnings("rawtypes") Map properties) throws AuthException {
+        return new DefaultServerAuthContext(handler, serverAuthModule);
+    }
+
+    // ### The methods below mostly just return what has been passed into the
+    // constructor.
+    // ### In practice they don't seem to be called
+
+    @Override
+    public String getMessageLayer() {
+        return layer;
+    }
+
+    /**
+     * It's not entirely clear what the difference is between the "application context identifier" (appContext) and the
+     * "authentication context identifier" (authContext). In early iterations of the specification, authContext was called
+     * "operation" and instead of the MessageInfo it was obtained by something called an "authParam".
+     */
+    @Override
+    public String getAuthContextID(MessageInfo messageInfo) {
+        return appContext;
+    }
+
+    @Override
+    public String getAppContext() {
+        return appContext;
+    }
+
+    @Override
+    public void refresh() {
+    }
+
+    @Override
+    public boolean isProtected() {
+        return false;
+    }
+
+    public Map<String, String> getProviderProperties() {
+        return providerProperties;
+    }
+
+}
diff --git a/appserver/security/jaspic-provider-framework/src/main/java/com/sun/jaspic/config/factory/singlemodule/DefaultServerAuthContext.java b/appserver/security/jaspic-provider-framework/src/main/java/com/sun/jaspic/config/factory/singlemodule/DefaultServerAuthContext.java
new file mode 100644
index 0000000..86ef098
--- /dev/null
+++ b/appserver/security/jaspic-provider-framework/src/main/java/com/sun/jaspic/config/factory/singlemodule/DefaultServerAuthContext.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2022, 2022 Contributors to the Eclipse Foundation.
+ * Copyright (c) 2015, 2020 Oracle and/or its affiliates. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0, which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * This Source Code may also be made available under the following Secondary
+ * Licenses when the conditions for such availability set forth in the
+ * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ * version 2 with the GNU Classpath Exception, which is available at
+ * https://www.gnu.org/software/classpath/license.html.
+ *
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+ */
+
+package com.sun.jaspic.config.factory.singlemodule;
+
+import java.util.Collections;
+
+import javax.security.auth.Subject;
+import javax.security.auth.callback.CallbackHandler;
+
+import jakarta.security.auth.message.AuthException;
+import jakarta.security.auth.message.AuthStatus;
+import jakarta.security.auth.message.MessageInfo;
+import jakarta.security.auth.message.ServerAuth;
+import jakarta.security.auth.message.config.ServerAuthContext;
+import jakarta.security.auth.message.module.ServerAuthModule;
+
+/**
+ * The Server Authentication Context is an extra (required) indirection between the Application Server and the actual Server
+ * Authentication Module (SAM). This can be used to encapsulate any number of SAMs and either select one at run-time, invoke
+ * them all in order, etc.
+ * <p>
+ * Since this simple example only has a single SAM, we delegate directly to that one. Note that this {@link ServerAuthContext}
+ * and the {@link ServerAuthModule} (SAM) share a common base interface: {@link ServerAuth}.
+ *
+ * @author Arjan Tijms
+ */
+public class DefaultServerAuthContext implements ServerAuthContext {
+
+    private final ServerAuthModule serverAuthModule;
+
+    public DefaultServerAuthContext(CallbackHandler handler, ServerAuthModule serverAuthModule) throws AuthException {
+        this.serverAuthModule = serverAuthModule;
+        serverAuthModule.initialize(null, null, handler, Collections.<String, Object> emptyMap());
+    }
+
+    @Override
+    public AuthStatus validateRequest(MessageInfo messageInfo, Subject clientSubject, Subject serviceSubject)
+        throws AuthException {
+        return serverAuthModule.validateRequest(messageInfo, clientSubject, serviceSubject);
+    }
+
+    @Override
+    public AuthStatus secureResponse(MessageInfo messageInfo, Subject serviceSubject) throws AuthException {
+        return serverAuthModule.secureResponse(messageInfo, serviceSubject);
+    }
+
+    @Override
+    public void cleanSubject(MessageInfo messageInfo, Subject subject) throws AuthException {
+        serverAuthModule.cleanSubject(messageInfo, subject);
+    }
+
+}
diff --git a/appserver/security/jaspic-provider-framework/src/test/java/test/com/sun/jaspic/config/FactoryTest.java b/appserver/security/jaspic-provider-framework/src/test/java/test/com/sun/jaspic/config/FactoryTest.java
index 8977b6b..2177809 100644
--- a/appserver/security/jaspic-provider-framework/src/test/java/test/com/sun/jaspic/config/FactoryTest.java
+++ b/appserver/security/jaspic-provider-framework/src/test/java/test/com/sun/jaspic/config/FactoryTest.java
@@ -17,10 +17,14 @@
 
 package test.com.sun.jaspic.config;
 
-import com.sun.jaspic.config.factory.AuthConfigFileFactory;
-import com.sun.jaspic.config.factory.BaseAuthConfigFactory;
-import com.sun.jaspic.config.factory.EntryInfo;
-import com.sun.jaspic.config.factory.RegStoreFileParser;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.arrayWithSize;
+import static org.hamcrest.Matchers.greaterThan;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.security.PrivilegedExceptionAction;
 import java.security.Security;
@@ -44,6 +48,11 @@
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
+import com.sun.jaspic.config.factory.AuthConfigFileFactory;
+import com.sun.jaspic.config.factory.BaseAuthConfigFactory;
+import com.sun.jaspic.config.factory.EntryInfo;
+import com.sun.jaspic.config.factory.RegStoreFileParser;
+
 import jakarta.security.auth.message.AuthException;
 import jakarta.security.auth.message.MessageInfo;
 import jakarta.security.auth.message.config.AuthConfigFactory;
@@ -55,17 +64,6 @@
 import jakarta.security.auth.message.config.ServerAuthConfig;
 import jakarta.security.auth.message.config.ServerAuthContext;
 
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.arrayWithSize;
-import static org.hamcrest.Matchers.greaterThan;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertSame;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
-
 /**
  * @author Ron Monzillo
  */
@@ -227,38 +225,6 @@
     }
 
     @Test
-    public void testRegistrationWithNonStringPropertyAndPreviousRegistration() {
-        logger.info("BEGIN Registration with NonString Property and Previous Registration FACTORY TEST");
-        Security.setProperty(DEFAULT_FACTORY_SECURITY_PROPERTY, testFactoryClassName);
-
-        // first register a valid acp configuration
-        final String className = _AuthConfigProvider.class.getName();
-        final String layer = "HttpServlet";
-        final String appContext = "context";
-        final String description = null;
-        final String regId
-            = AuthConfigFactory.getFactory().registerConfigProvider(className, null, layer, appContext, description);
-        assertNotNull(regId, "Registration Should Have Succeeded returning a nonNULL RegistrationID but did not.");
-        final AuthConfigProvider previousAcp = AuthConfigFactory.getFactory().getConfigProvider(layer, appContext, null);
-        assertNotNull(previousAcp, "Registration Should Have Succeeded returning a nonNULL ACP but did not.");
-        final String previousRegId = regId;
-
-        // now for an invalid configuration
-        final Map<String, List<String>> properties = new HashMap<>();
-        final ArrayList<String> list = new ArrayList<>();
-        list.add("larry was here");
-        properties.put("test", list);
-        assertThrows(IllegalArgumentException.class, () -> AuthConfigFactory.getFactory()
-            .registerConfigProvider(className, properties, layer, appContext, description));
-        AuthConfigProvider acp = null;
-        acp = AuthConfigFactory.getFactory().getConfigProvider(layer, appContext, null);
-        assertSame(previousAcp, acp,
-            "Registration Should Have Failed for Invalid Config and Therefore returned the Previously Registered ACP");
-        assertTrue(AuthConfigFactory.getFactory().removeRegistration(previousRegId),
-            "Failed to remove the previously registered provider.");
-    }
-
-    @Test
     public void testOverrideForDefaultEntries() {
         logger.info("BEGIN overrideGetDefaultEntries TEST");
         AuthConfigFactory f = new _ExtendsBaseAuthConfigFactory();
@@ -314,6 +280,7 @@
                 rLock.unlock();
             }
         }
+
     }
 
     static class _Extends_ExtendsAuthConfigFactory extends _ExtendsBaseAuthConfigFactory {
diff --git a/appserver/security/pom.xml b/appserver/security/pom.xml
index e2f739f..846d0ea 100644
--- a/appserver/security/pom.xml
+++ b/appserver/security/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/security/security-all/pom.xml b/appserver/security/security-all/pom.xml
index e18d217..e494290 100644
--- a/appserver/security/security-all/pom.xml
+++ b/appserver/security/security-all/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.security</groupId>
         <artifactId>securitymodule</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/security/webintegration/pom.xml b/appserver/security/webintegration/pom.xml
index 7d0a1c6..1ce03b2 100644
--- a/appserver/security/webintegration/pom.xml
+++ b/appserver/security/webintegration/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.security</groupId>
         <artifactId>securitymodule</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/security/webintegration/src/main/java/com/sun/web/security/HttpRequestWrapper.java b/appserver/security/webintegration/src/main/java/com/sun/web/security/HttpRequestWrapper.java
index b713ff6..7bd7173 100644
--- a/appserver/security/webintegration/src/main/java/com/sun/web/security/HttpRequestWrapper.java
+++ b/appserver/security/webintegration/src/main/java/com/sun/web/security/HttpRequestWrapper.java
@@ -41,6 +41,7 @@
 import jakarta.servlet.DispatcherType;
 import jakarta.servlet.FilterChain;
 import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.ServletConnection;
 import jakarta.servlet.ServletContext;
 import jakarta.servlet.ServletInputStream;
 import jakarta.servlet.ServletRequest;
@@ -188,6 +189,12 @@
         httpRequest.setUserPrincipal(principal);
     }
 
+
+
+
+
+
+
     // ----- Request Methods -----
     @Override
     public String getAuthorization() {
@@ -413,8 +420,14 @@
         httpRequest.unlockSession();
     }
 
+
+
+
+
     // ----- ServletRequest Methods -----
     // implementation of ServletRequest interface
+
+
     @Override
     public Object getAttribute(String name) {
         return servletRequest.getAttribute(name);
@@ -536,11 +549,6 @@
     }
 
     @Override
-    public String getRealPath(String path) {
-        return servletRequest.getRealPath(path);
-    }
-
-    @Override
     public int getRemotePort() {
         return servletRequest.getRemotePort();
     }
@@ -600,4 +608,22 @@
         return servletRequest.getContentLengthLong();
     }
 
+    @Override
+    public String getRequestId() {
+        // TODO Implement!
+        return null;
+    }
+
+    @Override
+    public String getProtocolRequestId() {
+        // TODO Implement!
+        return null;
+    }
+
+    @Override
+    public ServletConnection getServletConnection() {
+        // TODO Implement!
+        return null;
+    }
+
 }
diff --git a/appserver/security/webintegration/src/main/java/com/sun/web/security/HttpResponseWrapper.java b/appserver/security/webintegration/src/main/java/com/sun/web/security/HttpResponseWrapper.java
index 595e7e5..401fb5b 100644
--- a/appserver/security/webintegration/src/main/java/com/sun/web/security/HttpResponseWrapper.java
+++ b/appserver/security/webintegration/src/main/java/com/sun/web/security/HttpResponseWrapper.java
@@ -34,13 +34,14 @@
 
 class HttpResponseWrapper extends HttpServletResponseWrapper implements HttpResponse {
 
-    private HttpResponse httpResponse;
+    private final HttpResponse httpResponse;
 
     HttpResponseWrapper(HttpResponse response, HttpServletResponse servletResponse) {
         super(servletResponse);
         httpResponse = response;
     }
 
+
     // ----- HttpResponse Methods -----
     @Override
     public String getHeader(String name) {
@@ -77,6 +78,13 @@
         httpResponse.reset(status, message);
     }
 
+    @Override
+    public void setError(int status, String message) {
+        httpResponse.setError(status, message);
+    }
+
+
+
     // ----- Response Methods -----
     @Override
     public Connector getConnector() {
@@ -198,6 +206,7 @@
         return httpResponse.getContentLength();
     }
 
+
     /*
      * Delegate to HttpServletResponse public String getContentType() { return httpResponse.getContentType(); }
      */
@@ -212,6 +221,7 @@
         httpResponse.recycle();
     }
 
+
     /*
      * Delegate to HttpServletResponse public void resetBuffer() { httpResponse.resetBuffer(); }
      */
@@ -230,4 +240,5 @@
     public String encode(String url) {
         return httpResponse.encode(url);
     }
+
 }
diff --git a/appserver/security/webintegration/src/main/java/com/sun/web/security/RequestFacadeWrapper.java b/appserver/security/webintegration/src/main/java/com/sun/web/security/RequestFacadeWrapper.java
index 3a1ac8c..1988108 100644
--- a/appserver/security/webintegration/src/main/java/com/sun/web/security/RequestFacadeWrapper.java
+++ b/appserver/security/webintegration/src/main/java/com/sun/web/security/RequestFacadeWrapper.java
@@ -191,11 +191,6 @@
     }
 
     @Override
-    public boolean isRequestedSessionIdFromUrl() {
-        return servletRequest.isRequestedSessionIdFromUrl();
-    }
-
-    @Override
     public boolean authenticate(HttpServletResponse response) throws IOException, ServletException {
         return servletRequest.authenticate(response);
     }
@@ -345,11 +340,6 @@
     }
 
     @Override
-    public String getRealPath(String path) {
-        return servletRequest.getRealPath(path);
-    }
-
-    @Override
     public int getRemotePort() {
         return servletRequest.getRemotePort();
     }
diff --git a/appserver/security/webservices.security/pom.xml b/appserver/security/webservices.security/pom.xml
index b407789..0741051 100644
--- a/appserver/security/webservices.security/pom.xml
+++ b/appserver/security/webservices.security/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.security</groupId>
         <artifactId>securitymodule</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>webservices.security</artifactId>
diff --git a/appserver/tests/admingui/auto-test/pom.xml b/appserver/tests/admingui/auto-test/pom.xml
index d61cacd..fac15b0 100644
--- a/appserver/tests/admingui/auto-test/pom.xml
+++ b/appserver/tests/admingui/auto-test/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.admingui</groupId>
         <artifactId>admingui</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
     <artifactId>console-auto-tests</artifactId>
diff --git a/appserver/tests/admingui/pom.xml b/appserver/tests/admingui/pom.xml
index 90e4f65..822cf40 100644
--- a/appserver/tests/admingui/pom.xml
+++ b/appserver/tests/admingui/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.admingui</groupId>
     <artifactId>admingui</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <packaging>pom</packaging>
     <name>GlassFish admingui Tests</name>
 
@@ -40,6 +40,7 @@
             <dependency>
                 <groupId>junit</groupId>
                 <artifactId>junit</artifactId>
+                <version>4.13.2</version>
                 <scope>test</scope>
             </dependency>
         </dependencies>
diff --git a/appserver/tests/amx/pom.xml b/appserver/tests/amx/pom.xml
index a6a476e..128529b 100755
--- a/appserver/tests/amx/pom.xml
+++ b/appserver/tests/amx/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.glassfish.tests</groupId>
         <artifactId>tests</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>amx-tests</artifactId>
diff --git a/appserver/tests/appserv-tests/cciblackbox-tx/pom.xml b/appserver/tests/appserv-tests/cciblackbox-tx/pom.xml
index a22f677..55acff2 100644
--- a/appserver/tests/appserv-tests/cciblackbox-tx/pom.xml
+++ b/appserver/tests/appserv-tests/cciblackbox-tx/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.main.tests</groupId>
         <artifactId>ant-tests</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.main.tests.connectors</groupId>
diff --git a/appserver/tests/appserv-tests/config/emma.xml b/appserver/tests/appserv-tests/config/emma.xml
index 7ebd28f..4884003 100644
--- a/appserver/tests/appserv-tests/config/emma.xml
+++ b/appserver/tests/appserv-tests/config/emma.xml
@@ -179,7 +179,7 @@
     <!-- restore original EJB jar files -->
     <unzip src="${glassfish-zip-file}" dest="${tmp.gf.exploded.dir}"/>
     <copy todir="${glassfish.server.dir}/modules" overwrite="true">
-      <fileset dir="${tmp.gf.exploded.dir}/glassfish6/glassfish/modules/">
+      <fileset dir="${tmp.gf.exploded.dir}/glassfish7/glassfish/modules/">
         <include name="**/*.jar"/>
       </fileset>
     </copy>
diff --git a/appserver/tests/appserv-tests/connectors-ra-redeploy/jars/pom.xml b/appserver/tests/appserv-tests/connectors-ra-redeploy/jars/pom.xml
index 7f1461e..4afc24b 100644
--- a/appserver/tests/appserv-tests/connectors-ra-redeploy/jars/pom.xml
+++ b/appserver/tests/appserv-tests/connectors-ra-redeploy/jars/pom.xml
@@ -6,7 +6,7 @@
     <parent>
         <groupId>org.glassfish.main.tests.connectors</groupId>
         <artifactId>connectors-ra-redeploy</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <artifactId>connectors-ra-redeploy-jars</artifactId>
     <dependencies>
diff --git a/appserver/tests/appserv-tests/connectors-ra-redeploy/pom.xml b/appserver/tests/appserv-tests/connectors-ra-redeploy/pom.xml
index 3f91921..b858e26 100644
--- a/appserver/tests/appserv-tests/connectors-ra-redeploy/pom.xml
+++ b/appserver/tests/appserv-tests/connectors-ra-redeploy/pom.xml
@@ -6,7 +6,7 @@
     <parent>
         <groupId>org.glassfish.main.tests</groupId>
         <artifactId>ant-tests</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <groupId>org.glassfish.main.tests.connectors</groupId>
     <artifactId>connectors-ra-redeploy</artifactId>
diff --git a/appserver/tests/appserv-tests/connectors-ra-redeploy/rars-xa/pom.xml b/appserver/tests/appserv-tests/connectors-ra-redeploy/rars-xa/pom.xml
index 13450c6..cf75b06 100644
--- a/appserver/tests/appserv-tests/connectors-ra-redeploy/rars-xa/pom.xml
+++ b/appserver/tests/appserv-tests/connectors-ra-redeploy/rars-xa/pom.xml
@@ -6,7 +6,7 @@
     <parent>
         <groupId>org.glassfish.main.tests.connectors</groupId>
         <artifactId>connectors-ra-redeploy</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <artifactId>connectors-ra-redeploy-rars-xa</artifactId>
     <packaging>rar</packaging>
diff --git a/appserver/tests/appserv-tests/connectors-ra-redeploy/rars/pom.xml b/appserver/tests/appserv-tests/connectors-ra-redeploy/rars/pom.xml
index c45f4ff..bc1ddd6 100644
--- a/appserver/tests/appserv-tests/connectors-ra-redeploy/rars/pom.xml
+++ b/appserver/tests/appserv-tests/connectors-ra-redeploy/rars/pom.xml
@@ -6,7 +6,7 @@
     <parent>
         <groupId>org.glassfish.main.tests.connectors</groupId>
         <artifactId>connectors-ra-redeploy</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <artifactId>connectors-ra-redeploy-rars</artifactId>
     <packaging>rar</packaging>
diff --git a/appserver/tests/appserv-tests/devtests/admin/cli/build.xml b/appserver/tests/appserv-tests/devtests/admin/cli/build.xml
index d9be326..1c3dc7b 100644
--- a/appserver/tests/appserv-tests/devtests/admin/cli/build.xml
+++ b/appserver/tests/appserv-tests/devtests/admin/cli/build.xml
@@ -465,11 +465,11 @@
         <echo message="gfurl == ${gfurl}"/>
         <setproxy proxyhost=""/>
         <get verbose="${verbose}" src="${gfurl}" dest="${asinstall_dir}/glassfish.zip"/>
-        <delete dir="${asinstall_dir}/glassfish6" includeemptydirs="true"/>
+        <delete dir="${asinstall_dir}/glassfish7" includeemptydirs="true"/>
         <unzip src="${asinstall_dir}/glassfish.zip" dest="${asinstall_dir}"/>
-        <chmod perm="a+x" file="${asinstall_dir}/glassfish6/bin/asadmin"/>
-        <chmod perm="a+x" file="${asinstall_dir}/glassfish6/glassfish/bin/asadmin"/>
-        <chmod perm="a+x" file="${asinstall_dir}/glassfish6/glassfish/lib/nadmin"/>
+        <chmod perm="a+x" file="${asinstall_dir}/glassfish7/bin/asadmin"/>
+        <chmod perm="a+x" file="${asinstall_dir}/glassfish7/glassfish/bin/asadmin"/>
+        <chmod perm="a+x" file="${asinstall_dir}/glassfish7/glassfish/lib/nadmin"/>
     </target>
 
     <!--
diff --git a/appserver/tests/appserv-tests/devtests/admin/cli/src/admin/SSHNodeTest.java b/appserver/tests/appserv-tests/devtests/admin/cli/src/admin/SSHNodeTest.java
index 9774345..4cf8bb7 100644
--- a/appserver/tests/appserv-tests/devtests/admin/cli/src/admin/SSHNodeTest.java
+++ b/appserver/tests/appserv-tests/devtests/admin/cli/src/admin/SSHNodeTest.java
@@ -38,7 +38,7 @@
  * In this case run the test like this:
  * #
  * ant -Dteststorun=sshnode -Dssh.host=adc2101159.us.oracle.com
- *    "-Dssh.installdir=/export/glassfish6" all
+ *    "-Dssh.installdir=/export/glassfish7" all
  *
  * If you want to use a different user for SSH login you can set ssh.user:
  *     -Dssh.user=hudson
@@ -328,6 +328,6 @@
             prefix = "/var/tmp/devTests-" + thisHost;
         }
         String randomSuffix = Long.toHexString(Double.doubleToLongBits(Math.random()));
-        return prefix + "/" + "glassfish6-" + randomSuffix;
+        return prefix + "/" + "glassfish7-" + randomSuffix;
     }
 }
diff --git a/appserver/tests/appserv-tests/devtests/admin/cli/src/admin/util/Jps.java b/appserver/tests/appserv-tests/devtests/admin/cli/src/admin/util/Jps.java
index e4cd757..d4971c5 100644
--- a/appserver/tests/appserv-tests/devtests/admin/cli/src/admin/util/Jps.java
+++ b/appserver/tests/appserv-tests/devtests/admin/cli/src/admin/util/Jps.java
@@ -143,7 +143,7 @@
      <pre>
      2524 sun.tools.jps.Jps
      5324 com.sun.enterprise.glassfish.bootstrap.ASMain
-     4120 D:\glassfish6\glassfish\bin\..\modules\admin-cli.jar
+     4120 D:\glassfish7\glassfish\bin\..\modules\admin-cli.jar
      </pre>
      * If there is a path -- then there is no classname and vice-versa
      * @param s
diff --git a/appserver/tests/appserv-tests/devtests/batch/batch-dev-tests/batch-commands-tests/pom.xml b/appserver/tests/appserv-tests/devtests/batch/batch-dev-tests/batch-commands-tests/pom.xml
index 1a7bfe0..12ef68b 100644
--- a/appserver/tests/appserv-tests/devtests/batch/batch-dev-tests/batch-commands-tests/pom.xml
+++ b/appserver/tests/appserv-tests/devtests/batch/batch-dev-tests/batch-commands-tests/pom.xml
@@ -25,7 +25,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>batch-dev-tests</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <artifactId>batch-commands-tests</artifactId>
     <packaging>jar</packaging>
diff --git a/appserver/tests/appserv-tests/devtests/batch/batch-dev-tests/batch-tests-utils/pom.xml b/appserver/tests/appserv-tests/devtests/batch/batch-dev-tests/batch-tests-utils/pom.xml
index 8526097..cb93a5f 100644
--- a/appserver/tests/appserv-tests/devtests/batch/batch-dev-tests/batch-tests-utils/pom.xml
+++ b/appserver/tests/appserv-tests/devtests/batch/batch-dev-tests/batch-tests-utils/pom.xml
@@ -25,7 +25,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>batch-dev-tests</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <artifactId>batch-tests-utils</artifactId>
     <packaging>jar</packaging>
diff --git a/appserver/tests/appserv-tests/devtests/batch/batch-dev-tests/pom.xml b/appserver/tests/appserv-tests/devtests/batch/batch-dev-tests/pom.xml
index 969dfaf..91131f4 100644
--- a/appserver/tests/appserv-tests/devtests/batch/batch-dev-tests/pom.xml
+++ b/appserver/tests/appserv-tests/devtests/batch/batch-dev-tests/pom.xml
@@ -25,7 +25,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-nucleus-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>batch-dev-tests</artifactId>
diff --git a/appserver/tests/appserv-tests/devtests/batch/bmt-chunk-job/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/batch/bmt-chunk-job/descriptor/beans.xml
index e69de29..45ccdd0 100644
--- a/appserver/tests/appserv-tests/devtests/batch/bmt-chunk-job/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/batch/bmt-chunk-job/descriptor/beans.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    This Source Code may also be made available under the following Secondary
+    Licenses when the conditions for such availability set forth in the
+    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
diff --git a/appserver/tests/appserv-tests/devtests/batch/cmt-chunk-job/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/batch/cmt-chunk-job/descriptor/beans.xml
index e69de29..c22fab1 100644
--- a/appserver/tests/appserv-tests/devtests/batch/cmt-chunk-job/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/batch/cmt-chunk-job/descriptor/beans.xml
@@ -0,0 +1,23 @@
+<!--
+
+    Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
+    Copyright (c) 2022 Contributors to the Eclipse Foundation
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    This Source Code may also be made available under the following Secondary
+    Licenses when the conditions for such availability set forth in the
+    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/README_Embedded.txt b/appserver/tests/appserv-tests/devtests/cdi/README_Embedded.txt
index 1f659c9..26d67f8 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/README_Embedded.txt
+++ b/appserver/tests/appserv-tests/devtests/cdi/README_Embedded.txt
@@ -1,6 +1,6 @@
 export APS_HOME=<Your-Workspace>/v2/appserv-tests
 
-export S1AS_HOME=<installed-glassfish> (eg.,, /tmp/glassfish6/glassfish)
+export S1AS_HOME=<installed-glassfish> (eg.,, /tmp/glassfish7/glassfish)
 
 export ANT_OPTS="-Xss128k -Xmx2048m -XX:MaxPermSize=256m"
 
diff --git a/appserver/tests/appserv-tests/devtests/cdi/build.xml b/appserver/tests/appserv-tests/devtests/cdi/build.xml
index 150a39a..0cfb0a0 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/build.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/build.xml
@@ -39,6 +39,90 @@
         </classpath>
     </taskdef>
 
+    <target name="usage">
+        <echo> Usage:
+                  ant cdi (Executes the cdi tests)
+                  ant all (Executes all the cdi tests)
+                  ant clean (cleans all the cdi tests)
+                  ant build (builds all the cdi tests)
+                  ant setup (sets up all resources for cdi tests)
+                  ant deploy (deploys all the cdi apps)
+                  ant run (Executes all the cdi tests)
+                  ant undeploy (undeploys all the  cdi apps)
+                  ant unsetup (unsets all resources for cdi tests)
+          </echo>
+    </target>
+
+    <target name="cdi" xmlns:if="ant:if" xmlns:unless="ant:unless">
+        <record name="cdi.output" action="start" />
+        <property environment="env" />
+
+        <echo message="@@## Running all CDI developer tests ##@@" />
+        <echo unless:set="env.cdi_all" message="@@## Set environment variable 'cdi_all' to name of single test dir to run only that one. ##@@${line.separator}" />
+        <echo if:set="env.cdi_all" message="@@## environment variable 'cdi_all' set. Running only ${env.cdi_all}  ##@@${line.separator}" />
+
+        <run-cdi-test path="smoke-tests" />
+        <run-cdi-test path="qualifiers" />
+        <run-cdi-test path="events" />
+        <run-cdi-test path="injection-point" />
+        <run-cdi-test path="interceptors" />
+        <run-cdi-test path="javaee-component-resources" />
+        <run-cdi-test path="javaee-integration" />
+        <run-cdi-test path="managed-beans" />
+        <run-cdi-test path="portable-extensions" />
+        <run-cdi-test path="producer-methods" />
+        <run-cdi-test path="scopes" />
+        <run-cdi-test path="specialization" />
+        <run-cdi-test path="stereotypes" />
+        <run-cdi-test path="transactions" />
+        <run-cdi-test path="unproxyable-deps" />
+        <run-cdi-test path="unsatisfied-deps" />
+        <run-cdi-test path="implicit" />
+        <run-cdi-test path="decorators" />
+
+        <!--
+               Not running until https://issues.jboss.org/browse/CDI-331 is sorted out.
+               In 1.1.10.Final the test passes.
+               In 2.0 Beta it fails.
+               In 3.0 We never bothered to check anymore.
+               See email from Jozef 3/4/13
+               <ant dir="alternatives" target="${cdi-target}"/>
+               <ant dir="ambiguous-deps" target="${cdi-target}"/>
+       -->
+
+
+        <!--
+               Not running until https://issues.jboss.org/browse/CDI-331 is sorted out.
+               In 1.1.10.Final the test passes.
+               In 2.0 Beta it fails.
+               See email from Jozef 3/4/13
+               <ant dir="programmatic-lookup" target="${cdi-target}"/>
+       -->
+
+
+        <!--
+               Not running until figherfish is back (narrator: "it never came back")
+               
+               <if>
+                   <equals arg1="${test.embedded.mode}" arg2="true" />
+                   <then>
+                       <echo> Excluding testcase directory osgi-cdi for embedded mode</echo>
+                   </then>
+                   <else>
+                       <ant dir="osgi-cdi" target="${cdi-target}"/>
+                   </else>
+               </if>
+       -->
+
+
+        <echo message="***** DONE TESTING - GENERATING REPORT ******" />
+
+        <!-- now generate report -->
+        <antcall target="report" />
+
+        <record name="cdi.output" action="stop" />
+    </target>
+
     <target name="pe-all">
         <antcall target="backup-config-pe" />
         <echo message="NOTE: The file ${env.APS_HOME}/config.properties is being replaced with ${basedir}/config/pe-config.properties. The file will be reverted to its original state after the completion of these tests." />
@@ -167,118 +251,36 @@
         </antcall>
     </target>
 
-    <target name="cdi">
-        <record name="cdi.output" action="start" />
-        <echo message="@@## Running all CDI developer tests##@@" />
-
-        <echo message="Running smoke-tests" />
-        <ant dir="smoke-tests" target="${cdi-target}" />
-
-        <echo message="Running qualifiers" />
-        <ant dir="qualifiers" target="${cdi-target}" />
-
-        <!--
-                Not running until https://issues.jboss.org/browse/CDI-331 is sorted out.
-                In 1.1.10.Final the test passes.
-                In 2.0 Beta it fails.
-                See email from Jozef 3/4/13
-                <ant dir="alternatives" target="${cdi-target}"/>
-                <ant dir="ambiguous-deps" target="${cdi-target}"/>
-        -->
-
-        <echo message="Running events" />
-        <ant dir="events" target="${cdi-target}" />
-
-        <echo message="Running injection-point" />
-        <ant dir="injection-point" target="${cdi-target}" />
-
-        <echo message="Running interceptors" />
-        <ant dir="interceptors" target="${cdi-target}" />
-
-        <echo message="Running javaee-component-resources" />
-        <ant dir="javaee-component-resources" target="${cdi-target}" />
-
-        <echo message="Running javaee-integration" />
-        <ant dir="javaee-integration" target="${cdi-target}" />
-
-        <echo message="Running managed-beans" />
-        <ant dir="managed-beans" target="${cdi-target}" />
-
-        <echo message="Running portable-extensions" />
-        <ant dir="portable-extensions" target="${cdi-target}" />
-
-        <echo message="Running producer-methods" />
-        <ant dir="producer-methods" target="${cdi-target}" />
-
-        <!--
-                Not running until https://issues.jboss.org/browse/CDI-331 is sorted out.
-                In 1.1.10.Final the test passes.
-                In 2.0 Beta it fails.
-                See email from Jozef 3/4/13
-                <ant dir="programmatic-lookup" target="${cdi-target}"/>
-        -->
-
-        <echo message="Running scopes" />
-        <ant dir="scopes" target="${cdi-target}" />
-
-        <echo message="Running specialization" />
-        <ant dir="specialization" target="${cdi-target}" />
-
-        <echo message="Running stereotypes" />
-        <ant dir="stereotypes" target="${cdi-target}" />
-
-        <echo message="Running transactions" />
-        <ant dir="transactions" target="${cdi-target}" />
-
-        <echo message="Running unproxyable-deps" />
-        <ant dir="unproxyable-deps" target="${cdi-target}" />
-
-        <echo message="Running unsatisfied-deps" />
-        <ant dir="unsatisfied-deps" target="${cdi-target}" />
-
-        <echo message="Running implicit" />
-        <ant dir="implicit" target="${cdi-target}" />
-
-        <if>
-            <equals arg1="${test.embedded.mode}" arg2="true" />
-            <then>
-                <echo> Excluding testcase directory osgi-cdi for embedded mode</echo>
-            </then>
-            <else>
-                <!--
-                        Not running until figherfish is back
-                -->
-                <!--
-                <ant dir="osgi-cdi" target="${cdi-target}"/>
-                -->
-            </else>
-        </if>
-
-        <echo message="***** DONE TESTING - GENERATING REPORT ******" />
-
-        <!-- now generate report -->
-        <antcall target="report" />
-
-        <record name="cdi.output" action="stop" />
-    </target>
-
-    <target name="usage">
-        <echo> Usage:
-                ant cdi (Executes the cdi tests)
-                ant all (Executes all the cdi tests)
-                ant clean (cleans all the cdi tests)
-                ant build (builds all the cdi tests)
-                ant setup (sets up all resources for cdi tests)
-                ant deploy (deploys all the cdi apps)
-                ant run (Executes all the cdi tests)
-                ant undeploy (undeploys all the  cdi apps)
-                ant unsetup (unsets all resources for cdi tests)
-        </echo>
-    </target>
-
     <target name="report-local">
         <exec executable="sh">
             <arg value="./resultCount.sh" />
         </exec>
     </target>
+
+    <macrodef name="run-cdi-test" xmlns:if="ant:if" xmlns:unless="ant:unless">
+        <attribute name="path" />
+        <sequential>
+            <local name="do-run-test" />
+            <condition property="do-run-test" else="false">
+                <or>
+                    <equals arg1="${env.cdi_all}" arg2="@{path}" />
+                    <not>
+                        <isset property="env.cdi_all" />
+                    </not>
+                </or>
+            </condition>
+
+            <sequential if:true="${do-run-test}">
+                <local name="absolute.path" />
+                <property name="absolute.path" location="@{path}" />
+                <echo message="${line.separator}" />
+                <echo message=" *************************" />
+                <echo message=" * Running @{path} " />
+                <echo message=" * Path: ${absolute.path} " />
+                <echo message=" *************************" />
+                <echo message="${line.separator}" />
+                <ant dir="@{path}" target="${cdi-target}" />
+            </sequential>
+        </sequential>
+    </macrodef>
 </project>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/decorators/build.xml b/appserver/tests/appserv-tests/devtests/cdi/decorators/build.xml
index e36ded6..fc37489 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/decorators/build.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/decorators/build.xml
@@ -21,66 +21,6 @@
 
     <property name="decorators-target" value="all"/>
 
-    <target name="run-test">
-        <antcall target="decorators">
-        <param name="decorators-target" value="run-test"/>
-        </antcall>
-    </target>
-
-    <target name="all">
-        <antcall target="decorators">
-        <param name="decorators-target" value="all"/>
-        </antcall>
-    </target>
-
-    <target name="clean">
-        <antcall target="decorators">
-        <param name="decorators-target" value="clean"/>
-        </antcall>
-    </target>
-
-    <target name="build">
-        <antcall target="decorators">
-        <param name="decorators-target" value="build"/>
-        </antcall>
-    </target>
-
-    <target name="setup">
-        <antcall target="decorators">
-        <param name="decorators-target" value="setup"/>
-        </antcall>
-    </target>
-
-    <target name="deploy">
-        <antcall target="decorators">
-        <param name="decorators-target" value="deploy"/>
-        </antcall>
-    </target>
-
-    <target name="undeploy">
-        <antcall target="decorators">
-        <param name="decorators-target" value="undeploy"/>
-        </antcall>
-    </target>
-
-    <target name="unsetup">
-        <antcall target="decorators">
-        <param name="decorators-target" value="unsetup"/>
-        </antcall>
-    </target>
-
-    <target name="run">
-        <antcall target="decorators">
-        <param name="decorators-target" value="run"/>
-        </antcall>
-    </target>
-
-    <target name="decorators">
-        <record name="decorators.output" action="start" />
-            <ant dir="simple-decorator" target="${decorators-target}"/>
-        <record name="decorators.output" action="stop" />
-    </target>
-
     <target name="usage">
         <echo> Usage:
                 ant all (Executes all the decorators tests)
@@ -93,4 +33,65 @@
                 ant unsetup (unsets all resources for decorators tests)
         </echo>
     </target>
+
+    <target name="decorators">
+        <record name="decorators.output" action="start" />
+        <ant dir="simple-decorator" target="${decorators-target}" />
+        <record name="decorators.output" action="stop" />
+    </target>
+
+    <target name="run-test">
+        <antcall target="decorators">
+            <param name="decorators-target" value="run-test"/>
+        </antcall>
+    </target>
+
+    <target name="all">
+        <antcall target="decorators">
+            <param name="decorators-target" value="all"/>
+        </antcall>
+    </target>
+
+    <target name="clean">
+        <antcall target="decorators">
+            <param name="decorators-target" value="clean"/>
+        </antcall>
+    </target>
+
+    <target name="build">
+        <antcall target="decorators">
+            <param name="decorators-target" value="build"/>
+        </antcall>
+    </target>
+
+    <target name="setup">
+        <antcall target="decorators">
+            <param name="decorators-target" value="setup"/>
+        </antcall>
+    </target>
+
+    <target name="deploy">
+        <antcall target="decorators">
+            <param name="decorators-target" value="deploy"/>
+        </antcall>
+    </target>
+
+    <target name="undeploy">
+        <antcall target="decorators">
+            <param name="decorators-target" value="undeploy"/>
+        </antcall>
+    </target>
+
+    <target name="unsetup">
+        <antcall target="decorators">
+            <param name="decorators-target" value="unsetup"/>
+        </antcall>
+    </target>
+
+    <target name="run">
+        <antcall target="decorators">
+            <param name="decorators-target" value="run"/>
+        </antcall>
+    </target>
+
 </project>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/decorators/decorators-over-beans-from-producer-methods/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/decorators/decorators-over-beans-from-producer-methods/descriptor/beans.xml
index efdec0d..d88eea6 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/decorators/decorators-over-beans-from-producer-methods/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/decorators/decorators-over-beans-from-producer-methods/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,11 +17,14 @@
 
 -->
 
-<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-  <decorators>
-    <class>test.beans.TestBeanDecorator</class>
-  </decorators>
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+    <decorators>
+        <class>test.beans.TestBeanDecorator</class>
+    </decorators>
 </beans>
+
+
diff --git a/appserver/tests/appserv-tests/devtests/cdi/decorators/simple-decorator/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/decorators/simple-decorator/descriptor/beans.xml
index 54a5a82..db3a169 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/decorators/simple-decorator/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/decorators/simple-decorator/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,15 +17,16 @@
 
 -->
 
-<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-  <interceptors>
-    <class>test.beans.TransactionInterceptor</class>
-    <class>test.beans.RequiresNewTransactionInterceptor</class>
-  </interceptors>
-  <decorators>
-    <class>test.beans.LargeTransactionDecorator</class>
-  </decorators>
-</beans>
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+    <interceptors>
+        <class>test.beans.TransactionInterceptor</class>
+        <class>test.beans.RequiresNewTransactionInterceptor</class>
+    </interceptors>
+    <decorators>
+        <class>test.beans.LargeTransactionDecorator</class>
+    </decorators>
+</beans>
\ No newline at end of file
diff --git a/appserver/tests/appserv-tests/devtests/cdi/events/conditional-observer/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/events/conditional-observer/descriptor/beans.xml
index 1d355f8..45ccdd0 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/events/conditional-observer/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/events/conditional-observer/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,10 +17,9 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
 </beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/events/event-producers/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/events/event-producers/descriptor/beans.xml
index 1d355f8..45ccdd0 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/events/event-producers/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/events/event-producers/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,10 +17,9 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
 </beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/events/event-qualifiers-with-members/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/events/event-qualifiers-with-members/descriptor/beans.xml
index 1d355f8..2944211 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/events/event-qualifiers-with-members/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/events/event-qualifiers-with-members/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,10 +17,9 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-</beans>
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
\ No newline at end of file
diff --git a/appserver/tests/appserv-tests/devtests/cdi/events/multiple-event-qualifiers/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/events/multiple-event-qualifiers/descriptor/beans.xml
index 1d355f8..2944211 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/events/multiple-event-qualifiers/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/events/multiple-event-qualifiers/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,10 +17,9 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-</beans>
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
\ No newline at end of file
diff --git a/appserver/tests/appserv-tests/devtests/cdi/events/simple-event-observers/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/events/simple-event-observers/descriptor/beans.xml
index 1d355f8..2944211 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/events/simple-event-observers/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/events/simple-event-observers/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,10 +17,9 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-</beans>
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
\ No newline at end of file
diff --git a/appserver/tests/appserv-tests/devtests/cdi/implicit/build.xml b/appserver/tests/appserv-tests/devtests/cdi/implicit/build.xml
index 61dbf4d..32bb1c7 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/implicit/build.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/implicit/build.xml
@@ -33,75 +33,14 @@
 
     <property name="implicit-target" value="all" />
 
-        <taskdef resource="net/sf/antcontrib/antcontrib.properties">
-                <classpath>
-                        <pathelement location="${env.APS_HOME}/devtests/cdi/lib/ant-contrib-1.0b3.jar" />
-                </classpath>
-        </taskdef>
-
-        <target name="run-test">
-                <antcall target="implicit">
-                        <param name="implicit-target" value="run-test" />
-                </antcall>
-        </target>
-
-        <target name="all">
-                <antcall target="implicit">
-                        <param name="implicit-target" value="all" />
-                </antcall>
-        </target>
-
-        <target name="clean">
-                <antcall target="implicit">
-                        <param name="implicit-target" value="clean" />
-                </antcall>
-        </target>
-
-        <target name="build">
-                <antcall target="implicit">
-                        <param name="implicit-target" value="build" />
-                </antcall>
-        </target>
-
-        <target name="setup">
-                <antcall target="implicit">
-                        <param name="implicit-target" value="setup" />
-                </antcall>
-        </target>
-
-        <target name="deploy">
-                <antcall target="implicit">
-                        <param name="implicit-target" value="deploy" />
-                </antcall>
-        </target>
-
-        <target name="undeploy">
-                <antcall target="implicit">
-                        <param name="implicit-target" value="undeploy" />
-                </antcall>
-        </target>
-
-        <target name="unsetup">
-                <antcall target="implicit">
-                        <param name="implicit-target" value="unsetup" />
-                </antcall>
-        </target>
-
-        <target name="run">
-                <antcall target="implicit">
-                        <param name="implicit-target" value="run" />
-                </antcall>
-        </target>
-
-        <target name="implicit">
-                <record name="implicit.output" action="start" />
-                <ant dir="simple-ejb-cdi" target="${implicit-target}" />
-                <ant dir="deployment-option" target="${implicit-target}" />
-                <record name="implicit.output" action="stop" />
-        </target>
-
-        <target name="usage">
-                <echo> Usage:
+    <taskdef resource="net/sf/antcontrib/antcontrib.properties">
+        <classpath>
+            <pathelement location="${env.APS_HOME}/devtests/cdi/lib/ant-contrib-1.0b3.jar" />
+        </classpath>
+    </taskdef>
+    
+    <target name="usage">
+        <echo> Usage:
                 ant all (Executes all the smoke tests)
                 ant clean (cleans all the smoke tests)
                 ant build (builds all the smoke tests)
@@ -111,5 +50,68 @@
                 ant undeploy (undeploys all the  smoke apps)
                 ant unsetup (unsets all resources for smoke tests)
         </echo>
-        </target>
+    </target>
+
+    <target name="run-test">
+        <antcall target="implicit">
+            <param name="implicit-target" value="run-test" />
+        </antcall>
+    </target>
+
+    <target name="all">
+        <antcall target="implicit">
+            <param name="implicit-target" value="all" />
+        </antcall>
+    </target>
+
+    <target name="clean">
+        <antcall target="implicit">
+            <param name="implicit-target" value="clean" />
+        </antcall>
+    </target>
+
+    <target name="build">
+        <antcall target="implicit">
+            <param name="implicit-target" value="build" />
+        </antcall>
+    </target>
+
+    <target name="setup">
+        <antcall target="implicit">
+            <param name="implicit-target" value="setup" />
+        </antcall>
+    </target>
+
+    <target name="deploy">
+        <antcall target="implicit">
+            <param name="implicit-target" value="deploy" />
+        </antcall>
+    </target>
+
+    <target name="undeploy">
+        <antcall target="implicit">
+            <param name="implicit-target" value="undeploy" />
+        </antcall>
+    </target>
+
+    <target name="unsetup">
+        <antcall target="implicit">
+            <param name="implicit-target" value="unsetup" />
+        </antcall>
+    </target>
+
+    <target name="run">
+        <antcall target="implicit">
+            <param name="implicit-target" value="run" />
+        </antcall>
+    </target>
+
+    <target name="implicit">
+        <record name="implicit.output" action="start" />
+        <ant dir="simple-ejb-cdi" target="${implicit-target}" />
+        <ant dir="deployment-option" target="${implicit-target}" />
+        <record name="implicit.output" action="stop" />
+    </target>
+
+
 </project>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/injection-point/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/injection-point/descriptor/beans.xml
index c35311a..45ccdd0 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/injection-point/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/injection-point/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,8 +17,9 @@
 
 -->
 
-<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="
-      http://java.sun.com/xml/ns/javaee
-      http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
 </beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/interceptors/build.xml b/appserver/tests/appserv-tests/devtests/cdi/interceptors/build.xml
index 7b79af8..4522d16 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/interceptors/build.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/interceptors/build.xml
@@ -77,7 +77,9 @@
 
     <target name="interceptors">
         <record name="interceptors.output" action="start" />
+            <!--
             <ant dir="interceptors-bean-validation" target="${interceptors-target}"/>
+            -->
             <ant dir="interceptors-binding-type-inheritance" target="${interceptors-target}"/>
             <ant dir="interceptors-binding-type-with-members" target="${interceptors-target}"/>
             <ant dir="interceptors-business-method-interception" target="${interceptors-target}"/>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-bean-validation/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-bean-validation/descriptor/beans.xml
index 1af38a6..ca7131a 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-bean-validation/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-bean-validation/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,11 +17,12 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-    <interceptors>
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+       <interceptors>
         <class>test.beans.TestInterceptor</class>
     </interceptors>
-</beans>
+</beans>
\ No newline at end of file
diff --git a/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-binding-type-inheritance/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-binding-type-inheritance/descriptor/beans.xml
index c7dc6b2..c080c51 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-binding-type-inheritance/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-binding-type-inheritance/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,15 +17,14 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-   <interceptors>
-      <class>test.beans.TransactionalSecureInterceptor</class>
-      <class>test.beans.TransactionInterceptor</class>
-      <class>test.beans.SecureInterceptor</class>
-   </interceptors>
-</beans>
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+    bean-discovery-mode="all" version="3.0">
+    <interceptors>
+        <class>test.beans.TransactionalSecureInterceptor</class>
+        <class>test.beans.TransactionInterceptor</class>
+        <class>test.beans.SecureInterceptor</class>
+    </interceptors>
+</beans>
\ No newline at end of file
diff --git a/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-binding-type-with-members/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-binding-type-with-members/descriptor/beans.xml
index bc97106..46232b8 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-binding-type-with-members/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-binding-type-with-members/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,14 +17,13 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-   <interceptors>
-      <class>test.beans.TransactionInterceptor</class>
-      <class>test.beans.RequiresNewTransactionInterceptor</class>
-   </interceptors>
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+    bean-discovery-mode="all" version="3.0">
+    <interceptors>
+        <class>test.beans.TransactionInterceptor</class>
+        <class>test.beans.RequiresNewTransactionInterceptor</class>
+    </interceptors>
 </beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-business-method-interception/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-business-method-interception/descriptor/beans.xml
index f075638..291ab04 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-business-method-interception/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-business-method-interception/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,13 +17,12 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-   <interceptors>
-      <class>test.beans.TransactionInterceptor</class>
-   </interceptors>
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+    bean-discovery-mode="all" version="3.0">
+    <interceptors>
+        <class>test.beans.TransactionInterceptor</class>
+    </interceptors>
 </beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-invalid-interceptor-specified-at-beans-xml/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-invalid-interceptor-specified-at-beans-xml/descriptor/beans.xml
index efe55d8..c6ec6f0 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-invalid-interceptor-specified-at-beans-xml/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-invalid-interceptor-specified-at-beans-xml/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,13 +17,12 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-   <interceptors>
-      <class>test.beans.INVALIDInterceptor</class>
-   </interceptors>
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+    bean-discovery-mode="all" version="3.0">
+    <interceptors>
+        <class>test.beans.INVALIDInterceptor</class>
+    </interceptors>
 </beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-multiple-interceptor-binding-annotations/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-multiple-interceptor-binding-annotations/descriptor/beans.xml
index 7b9b221..e148efa 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-multiple-interceptor-binding-annotations/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-multiple-interceptor-binding-annotations/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,13 +17,12 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-   <interceptors>
-      <class>test.beans.TransactionalSecureInterceptor</class>
-   </interceptors>
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+    bean-discovery-mode="all" version="3.0">
+    <interceptors>
+        <class>test.beans.TransactionalSecureInterceptor</class>
+    </interceptors>
 </beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-multiple-interceptors-for-a-binding-type/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-multiple-interceptors-for-a-binding-type/descriptor/beans.xml
index 999fa4a..3e90eda 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-multiple-interceptors-for-a-binding-type/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-multiple-interceptors-for-a-binding-type/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,17 +17,16 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-   <interceptors>
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+    bean-discovery-mode="all" version="3.0">
+    <interceptors>
       <class>test.beans.SecondTransactionInterceptor</class> <!--  first invoke second interceptor -->
       <class>test.beans.TransactionInterceptor</class>
       <!-- Third Transactional Interceptor is disabled
       <class>test.beans.ThirdTransactionInterceptor</class>
        -->
-   </interceptors>
+    </interceptors>
 </beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-use-of-at-interceptors/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-use-of-at-interceptors/descriptor/beans.xml
index b0ae3bd..68fcb85 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-use-of-at-interceptors/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-use-of-at-interceptors/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,14 +17,13 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-   <interceptors>
-      <class>test.beans.TransactionInterceptor</class>
-      <class>test.beans.SecureInterceptor</class>
-   </interceptors>
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+    bean-discovery-mode="all" version="3.0">
+    <interceptors>
+       <class>test.beans.TransactionInterceptor</class>
+       <class>test.beans.SecureInterceptor</class>
+    </interceptors>
 </beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-use-of-interceptors-in-ejbs-through-at-interceptors/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-use-of-interceptors-in-ejbs-through-at-interceptors/descriptor/beans.xml
index ce56e12..4bf799d 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-use-of-interceptors-in-ejbs-through-at-interceptors/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-use-of-interceptors-in-ejbs-through-at-interceptors/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,13 +17,12 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-   <interceptors>
-      <class>org.glassfish.cditest.security.interceptor.SecurityInterceptor</class>
-   </interceptors>
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+    bean-discovery-mode="all" version="3.0">
+    <interceptors>
+       <class>org.glassfish.cditest.security.interceptor.SecurityInterceptor</class>
+    </interceptors>
 </beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-use-of-interceptors-in-ejbs-through-interceptor-bindings/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-use-of-interceptors-in-ejbs-through-interceptor-bindings/descriptor/beans.xml
index ce56e12..4bf799d 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-use-of-interceptors-in-ejbs-through-interceptor-bindings/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/interceptors/interceptors-use-of-interceptors-in-ejbs-through-interceptor-bindings/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,13 +17,12 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-   <interceptors>
-      <class>org.glassfish.cditest.security.interceptor.SecurityInterceptor</class>
-   </interceptors>
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+    bean-discovery-mode="all" version="3.0">
+    <interceptors>
+       <class>org.glassfish.cditest.security.interceptor.SecurityInterceptor</class>
+    </interceptors>
 </beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/em-injection-no-interface-ejb/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/em-injection-no-interface-ejb/descriptor/beans.xml
index 1d355f8..45ccdd0 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/em-injection-no-interface-ejb/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/em-injection-no-interface-ejb/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,10 +17,9 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
 </beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/em-resource-injection-extended-transaction-context/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/em-resource-injection-extended-transaction-context/descriptor/beans.xml
index 1d355f8..45ccdd0 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/em-resource-injection-extended-transaction-context/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/em-resource-injection-extended-transaction-context/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,10 +17,9 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
 </beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/em-resource-injection-with-resource-declaration-in-another-jar/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/em-resource-injection-with-resource-declaration-in-another-jar/descriptor/beans.xml
index e69de29..2944211 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/em-resource-injection-with-resource-declaration-in-another-jar/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/em-resource-injection-with-resource-declaration-in-another-jar/descriptor/beans.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    This Source Code may also be made available under the following Secondary
+    Licenses when the conditions for such availability set forth in the
+    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
\ No newline at end of file
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/em-resource-injection/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/em-resource-injection/descriptor/beans.xml
index 1d355f8..45ccdd0 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/em-resource-injection/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/em-resource-injection/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,10 +17,9 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
 </beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/javaee-component-resource-typesafe-injection/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/javaee-component-resource-typesafe-injection/descriptor/beans.xml
index 1d355f8..45ccdd0 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/javaee-component-resource-typesafe-injection/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/javaee-component-resource-typesafe-injection/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,10 +17,9 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
 </beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/jms-resource-producer-field-in-library-jar/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/jms-resource-producer-field-in-library-jar/descriptor/beans.xml
index 1d355f8..45ccdd0 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/jms-resource-producer-field-in-library-jar/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/jms-resource-producer-field-in-library-jar/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,10 +17,9 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
 </beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/jms-resource-producer-field/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/jms-resource-producer-field/descriptor/beans.xml
index 1d355f8..45ccdd0 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/jms-resource-producer-field/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/jms-resource-producer-field/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,10 +17,9 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
 </beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/jpa-resource-injection-non-serializable/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/jpa-resource-injection-non-serializable/descriptor/beans.xml
index 1d355f8..2944211 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/jpa-resource-injection-non-serializable/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/jpa-resource-injection-non-serializable/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,10 +17,9 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-</beans>
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
\ No newline at end of file
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/jpa-resource-injection-passivating-scope/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/jpa-resource-injection-passivating-scope/descriptor/beans.xml
index 1d355f8..45ccdd0 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/jpa-resource-injection-passivating-scope/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/jpa-resource-injection-passivating-scope/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,10 +17,9 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
 </beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/jpa-resource-injection-with-singleton-ejb-producer/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/jpa-resource-injection-with-singleton-ejb-producer/descriptor/beans.xml
index 1d355f8..45ccdd0 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/jpa-resource-injection-with-singleton-ejb-producer/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/jpa-resource-injection-with-singleton-ejb-producer/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,10 +17,9 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
 </beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/jpa-resource-injection/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/jpa-resource-injection/descriptor/beans.xml
index 1d355f8..45ccdd0 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/jpa-resource-injection/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/jpa-resource-injection/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,10 +17,9 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
 </beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/no-interface-ejb/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/no-interface-ejb/descriptor/beans.xml
index 1d355f8..2944211 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/no-interface-ejb/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/no-interface-ejb/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,10 +17,9 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-</beans>
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
\ No newline at end of file
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/slsb-injection-into-sessionscoped/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/slsb-injection-into-sessionscoped/descriptor/beans.xml
index 1d355f8..2944211 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/slsb-injection-into-sessionscoped/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-component-resources/slsb-injection-into-sessionscoped/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,10 +17,9 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-</beans>
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
\ No newline at end of file
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/bean-in-lib-dir-used-by-ejb-in-ear/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/bean-in-lib-dir-used-by-ejb-in-ear/descriptor/beans.xml
index e69de29..45ccdd0 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/bean-in-lib-dir-used-by-ejb-in-ear/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/bean-in-lib-dir-used-by-ejb-in-ear/descriptor/beans.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    This Source Code may also be made available under the following Secondary
+    Licenses when the conditions for such availability set forth in the
+    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/build.xml b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/build.xml
index 2381ff6..1f2752e 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/build.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/build.xml
@@ -20,6 +20,54 @@
 <project name="javaee-int-test" default="usage" basedir=".">
 
     <property name="javaee-int-target" value="all" />
+    
+    <target name="usage">
+        <echo> Usage:
+                ant all (Executes all the javaee-int tests)
+                ant clean (cleans all the javaee-int tests)
+                ant build (builds all the javaee-int tests)
+                ant setup (sets up all resources for javaee-int tests)
+                ant deploy (deploys all the javaee-int apps)
+                ant run (Executes all the javaee-int tests)
+                ant undeploy (undeploys all the  javaee-int apps)
+                ant unsetup (unsets all resources for javaee-int tests)
+        </echo>
+    </target>
+    
+    <target name="javaee-int">
+        <record name="javaee-int.output" action="start" />
+        
+        <!--
+        
+            Not running until Hibernate Validation supports CDI 4.0. 
+            See https://hibernate.atlassian.net/browse/HV-1857
+        
+        <echo message="   ====  Running builtin-beans" />
+        <ant dir="builtin-beans" target="${javaee-int-target}" />
+        -->
+        
+        <echo message="   ====  Running servlet-context-injection-cdi" />
+        <ant dir="servlet-context-injection-cdi" target="${javaee-int-target}" />
+        
+        <echo message="   ====  Running simple-managed-bean-interceptor-nonnull-package" />
+        <ant dir="simple-managed-bean-interceptor-nonnull-package" target="${javaee-int-target}" />
+        
+        <echo message="   ====  Running no-interface-local-view-proxy-serializable" />
+        <ant dir="no-interface-local-view-proxy-serializable" target="${javaee-int-target}" />
+        
+        <echo message="   ====  Running normal-bean-injection-ear" />
+        <ant dir="normal-bean-injection-ear" target="${javaee-int-target}" />
+        <ant dir="programmatic-lookup-ear" target="${javaee-int-target}" />
+        <ant dir="bean-in-lib-dir-used-by-ejb-in-ear" target="${javaee-int-target}" />
+        <ant dir="cdi-servlet-3.0-annotation-with-web-inf-lib-javaee-injection" target="${javaee-int-target}" />
+        <ant dir="cdi-servlet-3.0-annotation-with-web-inf-lib-ordering" target="${javaee-int-target}" />
+        <ant dir="cdi-servlet-3.0-annotation-with-web-inf-lib-ordering-reversed" target="${javaee-int-target}" />
+        <ant dir="cdi-servlet-3.0-annotation-with-web-inf-lib-extension-alternative" target="${javaee-int-target}" />
+        <ant dir="cdi-servlet-3.0-annotation-with-web-inf-lib" target="${javaee-int-target}" />
+        <ant dir="embedded-resource-adapter-as-bean-archive" target="${javaee-int-target}" />
+
+        <record name="javaee-int.output" action="stop" />
+    </target>
 
     <target name="run-test">
         <antcall target="javaee-int">
@@ -75,36 +123,4 @@
         </antcall>
     </target>
 
-    <target name="javaee-int">
-        <record name="javaee-int.output" action="start" />
-
-        <ant dir="builtin-beans" target="${javaee-int-target}" />
-        <ant dir="servlet-context-injection-cdi" target="${javaee-int-target}" />
-        <ant dir="simple-managed-bean-interceptor-nonnull-package" target="${javaee-int-target}" />
-        <ant dir="no-interface-local-view-proxy-serializable" target="${javaee-int-target}" />
-        <ant dir="normal-bean-injection-ear" target="${javaee-int-target}" />
-        <ant dir="programmatic-lookup-ear" target="${javaee-int-target}" />
-        <ant dir="bean-in-lib-dir-used-by-ejb-in-ear" target="${javaee-int-target}" />
-        <ant dir="cdi-servlet-3.0-annotation-with-web-inf-lib-javaee-injection" target="${javaee-int-target}" />
-        <ant dir="cdi-servlet-3.0-annotation-with-web-inf-lib-ordering" target="${javaee-int-target}" />
-        <ant dir="cdi-servlet-3.0-annotation-with-web-inf-lib-ordering-reversed" target="${javaee-int-target}" />
-        <ant dir="cdi-servlet-3.0-annotation-with-web-inf-lib-extension-alternative" target="${javaee-int-target}" />
-        <ant dir="cdi-servlet-3.0-annotation-with-web-inf-lib" target="${javaee-int-target}" />
-        <ant dir="embedded-resource-adapter-as-bean-archive" target="${javaee-int-target}" />
-
-        <record name="javaee-int.output" action="stop" />
-    </target>
-
-    <target name="usage">
-        <echo> Usage:
-                ant all (Executes all the javaee-int tests)
-                ant clean (cleans all the javaee-int tests)
-                ant build (builds all the javaee-int tests)
-                ant setup (sets up all resources for javaee-int tests)
-                ant deploy (deploys all the javaee-int apps)
-                ant run (Executes all the javaee-int tests)
-                ant undeploy (undeploys all the  javaee-int apps)
-                ant unsetup (unsets all resources for javaee-int tests)
-        </echo>
-    </target>
 </project>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/builtin-beans/build.xml b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/builtin-beans/build.xml
index 06eabc9..9666b1d 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/builtin-beans/build.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/builtin-beans/build.xml
@@ -34,75 +34,75 @@
 
     <target name="all" depends="build,create-resources,deploy,run,undeploy,delete-resources" />
 
-        <target name="clean" depends="init-common">
-                <antcall target="clean-common" />
-                <delete>
-                        <fileset dir="." includes="*.class" />
-                        <fileset dir="client/test/client" includes="*.class" />
-                </delete>
-        </target>
+    <target name="clean" depends="init-common">
+        <antcall target="clean-common" />
+        <delete>
+            <fileset dir="." includes="*.class" />
+            <fileset dir="client/test/client" includes="*.class" />
+        </delete>
+    </target>
 
-        <target name="compile" depends="clean">
-                <antcall target="compile-common">
-                        <param name="src" value="servlet" />
-                </antcall>
-        </target>
+    <target name="compile" depends="clean">
+        <antcall target="compile-common">
+            <param name="src" value="servlet" />
+        </antcall>
+    </target>
 
-        <target name="build" depends="compile">
-                <property name="hasWebclient" value="yes" />
-                <antcall target="webclient-war-common">
-                        <param name="hasWebclient" value="yes" />
-                        <param name="webclient.war.classes" value="**/*.class" />
-                </antcall>
+    <target name="build" depends="compile">
+        <property name="hasWebclient" value="yes" />
+        <antcall target="webclient-war-common">
+            <param name="hasWebclient" value="yes" />
+            <param name="webclient.war.classes" value="**/*.class" />
+        </antcall>
 
-                <javac srcdir="client" classpath="${env.APS_HOME}/lib/reportbuilder.jar" includes="test/client/WebTest.java" />
+        <javac srcdir="client" classpath="${env.APS_HOME}/lib/reportbuilder.jar" includes="test/client/WebTest.java" />
 
-        </target>
+    </target>
 
-        <target name="build-publish-war" depends="build, publish-war-common" />
+    <target name="build-publish-war" depends="build, publish-war-common" />
 
-        <target name="deploy" depends="init-common">
-                <antcall target="deploy-war-common" />
-        </target>
+    <target name="deploy" depends="init-common">
+        <antcall target="deploy-war-common" />
+    </target>
 
-        <target name="create-resources" depends="init-common">
-                <antcall target="create-jdbc-connpool-common">
-                        <param name="jdbc.connpool.name" value="jdbc-dev-test-pool" />
-                </antcall>
-                <antcall target="create-jdbc-resource-common">
-                        <param name="jdbc.connpool.name" value="jdbc-dev-test-pool" />
-                        <param name="jdbc.resource.name" value="jdbc/jdbc-dev-test-resource" />
-                </antcall>
-        </target>
+    <target name="create-resources" depends="init-common">
+        <antcall target="create-jdbc-connpool-common">
+            <param name="jdbc.connpool.name" value="jdbc-dev-test-pool" />
+        </antcall>
+        <antcall target="create-jdbc-resource-common">
+            <param name="jdbc.connpool.name" value="jdbc-dev-test-pool" />
+            <param name="jdbc.resource.name" value="jdbc/jdbc-dev-test-resource" />
+        </antcall>
+    </target>
 
 
-        <target name="run" depends="init-common">
-                <java classname="test.client.WebTest" fork="true">
-                        <arg value="${http.host}" />
-                        <arg value="${http.port}" />
-                        <arg value="${contextroot}" />
-                        <classpath>
-                                <pathelement location="${env.APS_HOME}/lib/reportbuilder.jar" />
-                                <pathelement location="client" />
-                        </classpath>
-                </java>
-        </target>
+    <target name="run" depends="init-common">
+        <java classname="test.client.WebTest" fork="true">
+            <arg value="${http.host}" />
+            <arg value="${http.port}" />
+            <arg value="${contextroot}" />
+            <classpath>
+                <pathelement location="${env.APS_HOME}/lib/reportbuilder.jar" />
+                <pathelement location="client" />
+            </classpath>
+        </java>
+    </target>
 
-        <target name="undeploy" depends="init-common">
-                <antcall target="undeploy-war-common" />
-        </target>
+    <target name="undeploy" depends="init-common">
+        <antcall target="undeploy-war-common" />
+    </target>
 
-        <target name="delete-resources" depends="init-common">
-                <antcall target="delete-jdbc-resource-common">
-                        <param name="jdbc.resource.name" value="jdbc/jdbc-dev-test-resource" />
-                </antcall>
+    <target name="delete-resources" depends="init-common">
+        <antcall target="delete-jdbc-resource-common">
+            <param name="jdbc.resource.name" value="jdbc/jdbc-dev-test-resource" />
+        </antcall>
 
-                <antcall target="delete-jdbc-connpool-common">
-                        <param name="jdbc.connpool.name" value="jdbc-dev-test-pool" />
-                </antcall>
-        </target>
+        <antcall target="delete-jdbc-connpool-common">
+            <param name="jdbc.connpool.name" value="jdbc-dev-test-pool" />
+        </antcall>
+    </target>
 
-        <target name="usage">
-                <antcall target="usage-common" />
-        </target>
+    <target name="usage">
+        <antcall target="usage-common" />
+    </target>
 </project>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/builtin-beans/client/test/client/WebTest.java b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/builtin-beans/client/test/client/WebTest.java
index bce94d2..cd2fde0 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/builtin-beans/client/test/client/WebTest.java
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/builtin-beans/client/test/client/WebTest.java
@@ -30,8 +30,7 @@
  */
 public class WebTest {
 
-    private static SimpleReporterAdapter stat = new SimpleReporterAdapter(
-            "appserv-tests");
+    private static SimpleReporterAdapter stat = new SimpleReporterAdapter("appserv-tests");
     private static final String TEST_NAME = "javaee-integration-simple";
 
     private static final String EXPECTED_RESPONSE = "Hello from Servlet 3.0.";
@@ -67,8 +66,7 @@
 
         String url = "http://" + host + ":" + port + contextRoot + "/myurl";
         System.out.println("opening connection to " + url);
-        HttpURLConnection conn = (HttpURLConnection) (new URL(url))
-                .openConnection();
+        HttpURLConnection conn = (HttpURLConnection) (new URL(url)).openConnection();
 
         int code = conn.getResponseCode();
         if (code != 200) {
@@ -102,8 +100,7 @@
             if (EXPECTED_RESPONSE.equals(line)) {
                 stat.addStatus(TEST_NAME, stat.PASS);
             } else {
-                System.out.println("Wrong response. Expected: "
-                        + EXPECTED_RESPONSE + ", received: " + line);
+                System.out.println("Wrong response. Expected: " + EXPECTED_RESPONSE + ", received: " + line);
                 stat.addStatus(TEST_NAME, stat.FAIL);
             }
         }
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/builtin-beans/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/builtin-beans/descriptor/beans.xml
index 1d355f8..7c24ccd 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/builtin-beans/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/builtin-beans/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,10 +17,10 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
 </beans>
+
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/builtin-beans/servlet/test/beans/TestBeanInterface.java b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/builtin-beans/servlet/test/beans/TestBeanInterface.java
index e5be4d3..6c9f3ff 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/builtin-beans/servlet/test/beans/TestBeanInterface.java
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/builtin-beans/servlet/test/beans/TestBeanInterface.java
@@ -17,8 +17,8 @@
 package test.beans;
 
 public interface TestBeanInterface {
-    public void m1();
-    public void m2();
+    void m1();
+    void m2();
 
-    public String testDatasourceInjection();
+    String testDatasourceInjection();
 }
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/builtin-beans/servlet/test/beans/nonmock/TestBean.java b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/builtin-beans/servlet/test/beans/nonmock/TestBean.java
index b46dd27..d76b43e 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/builtin-beans/servlet/test/beans/nonmock/TestBean.java
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/builtin-beans/servlet/test/beans/nonmock/TestBean.java
@@ -24,13 +24,13 @@
 import test.beans.artifacts.Preferred;
 import test.beans.artifacts.TestDatabase;
 
-
 @RequestScoped
 @Preferred
-public class TestBean implements TestBeanInterface{
+public class TestBean implements TestBeanInterface {
     public static boolean testBeanInvoked = false;
 
-    @Inject @TestDatabase
+    @Inject
+    @TestDatabase
     DataSource ds;
 
     @Override
@@ -46,7 +46,7 @@
 
     @Override
     public String testDatasourceInjection() {
-        return (ds==null ? "typesafe injection into testbean failed" : "");
+        return (ds == null ? "typesafe injection into testbean failed" : "");
     }
 
 }
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/builtin-beans/servlet/test/servlet/DatabaseManager.java b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/builtin-beans/servlet/test/servlet/DatabaseManager.java
index 257feaa..4a95454 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/builtin-beans/servlet/test/servlet/DatabaseManager.java
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/builtin-beans/servlet/test/servlet/DatabaseManager.java
@@ -25,8 +25,7 @@
 public class DatabaseManager {
     @Produces
     @TestDatabase
-    @Resource(name = "jdbc/jdbc-dev-test-resource",
-            mappedName = "jdbc/jdbc-dev-test-resource")
+    @Resource(name = "jdbc/jdbc-dev-test-resource", mappedName = "jdbc/jdbc-dev-test-resource")
     DataSource ds;
 
 }
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/builtin-beans/servlet/test/servlet/SimpleJavaEEIntegrationTestServlet.java b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/builtin-beans/servlet/test/servlet/SimpleJavaEEIntegrationTestServlet.java
index 66ec9c1..93bce1f 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/builtin-beans/servlet/test/servlet/SimpleJavaEEIntegrationTestServlet.java
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/builtin-beans/servlet/test/servlet/SimpleJavaEEIntegrationTestServlet.java
@@ -37,20 +37,29 @@
 
 @WebServlet(name = "mytest", urlPatterns = { "/myurl" })
 public class SimpleJavaEEIntegrationTestServlet extends HttpServlet {
-    @Inject @Preferred
+    
+    @Inject
+    @Preferred
     TestBeanInterface tb;
 
-    @Inject @TestDatabase
+    @Inject
+    @TestDatabase
     DataSource ds;
 
     // Inject the built-in beans
-    @Inject UserTransaction ut;
-    @Inject Principal principal;
-    @Inject Validator validator;
-    @Inject ValidatorFactory vf;
+    @Inject
+    UserTransaction ut;
+    
+    @Inject
+    Principal principal;
+    
+    @Inject
+    Validator validator;
+    
+    @Inject
+    ValidatorFactory vf;
 
-    public void service(HttpServletRequest req, HttpServletResponse res)
-            throws IOException, ServletException {
+    public void service(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
 
         PrintWriter writer = res.getWriter();
         writer.write("Hello from Servlet 3.0.");
@@ -70,20 +79,16 @@
         System.out.println("Default Validator: " + validator);
         System.out.println("Default ValidatorFactory: " + vf);
         if (ut == null)
-            msg += "UserTransaction not available for injection "
-                    + "with the default qualifier in Servlet";
+            msg += "UserTransaction not available for injection " + "with the default qualifier in Servlet";
 
         if (principal == null)
-            msg += "Caller Principal not available for injection "
-                    + "with the default qualifier in Servlet";
+            msg += "Caller Principal not available for injection " + "with the default qualifier in Servlet";
 
         if (validator == null)
-            msg += "Default Validator not available for injection "
-                    + "with the default qualifier in Servlet";
+            msg += "Default Validator not available for injection " + "with the default qualifier in Servlet";
 
         if (vf == null)
-            msg += "ValidationFactory not available for injection "
-                    + "with the default qualifier in Servlet";
+            msg += "ValidationFactory not available for injection " + "with the default qualifier in Servlet";
 
         writer.write(msg + "\n");
     }
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib-extension-alternative/descriptor/beans-alternative.xml b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib-extension-alternative/descriptor/beans-alternative.xml
index 1b3ee25..60b3ba3 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib-extension-alternative/descriptor/beans-alternative.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib-extension-alternative/descriptor/beans-alternative.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,11 +17,16 @@
 
 -->
 
-<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="
-    http://java.sun.com/xml/ns/javaee
-    http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-    <alternatives>
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+       <alternatives>
         <class>test.beans.wbinflib.TestAlternativeBeanInWebInfLib</class>
     </alternatives>
 </beans>
+
+
+
+
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib-extension-alternative/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib-extension-alternative/descriptor/beans.xml
index e69de29..45ccdd0 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib-extension-alternative/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib-extension-alternative/descriptor/beans.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    This Source Code may also be made available under the following Secondary
+    Licenses when the conditions for such availability set forth in the
+    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib-javaee-injection/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib-javaee-injection/descriptor/beans.xml
index e69de29..45ccdd0 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib-javaee-injection/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib-javaee-injection/descriptor/beans.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    This Source Code may also be made available under the following Secondary
+    Licenses when the conditions for such availability set forth in the
+    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib-ordering-reversed/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib-ordering-reversed/descriptor/beans.xml
index e69de29..45ccdd0 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib-ordering-reversed/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib-ordering-reversed/descriptor/beans.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    This Source Code may also be made available under the following Secondary
+    Licenses when the conditions for such availability set forth in the
+    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib-ordering/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib-ordering/descriptor/beans.xml
index e69de29..45ccdd0 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib-ordering/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib-ordering/descriptor/beans.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    This Source Code may also be made available under the following Secondary
+    Licenses when the conditions for such availability set forth in the
+    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib/descriptor/beans.xml
index e69de29..45ccdd0 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/cdi-servlet-3.0-annotation-with-web-inf-lib/descriptor/beans.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    This Source Code may also be made available under the following Secondary
+    Licenses when the conditions for such availability set forth in the
+    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/embedded-resource-adapter-as-bean-archive/ra/META-INF/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/embedded-resource-adapter-as-bean-archive/ra/META-INF/beans.xml
index e69de29..45ccdd0 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/embedded-resource-adapter-as-bean-archive/ra/META-INF/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/embedded-resource-adapter-as-bean-archive/ra/META-INF/beans.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    This Source Code may also be made available under the following Secondary
+    Licenses when the conditions for such availability set forth in the
+    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/no-interface-local-view-proxy-serializable/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/no-interface-local-view-proxy-serializable/descriptor/beans.xml
index 1d355f8..7c24ccd 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/no-interface-local-view-proxy-serializable/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/no-interface-local-view-proxy-serializable/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,10 +17,10 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
 </beans>
+
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/normal-bean-injection-ear/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/normal-bean-injection-ear/descriptor/beans.xml
index e69de29..45ccdd0 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/normal-bean-injection-ear/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/normal-bean-injection-ear/descriptor/beans.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    This Source Code may also be made available under the following Secondary
+    Licenses when the conditions for such availability set forth in the
+    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/programmatic-lookup-ear/descriptor/application.xml b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/programmatic-lookup-ear/descriptor/application.xml
index d9378e7..eeca79c 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/programmatic-lookup-ear/descriptor/application.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/programmatic-lookup-ear/descriptor/application.xml
@@ -17,25 +17,27 @@
 
 -->
 
-<application xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="6" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd">
-  <display-name>ejb-ejb30-hello-session3App</display-name>
-  <module>
-    <ejb>cdi-full-ear-ejb.jar</ejb>
-  </module>
-  <module>
-    <web>
-      <web-uri>cdi-full-ear-web.war</web-uri>
-      <context-root>cdi-full-ear</context-root>
-    </web>
-  </module>
-  <env-entry>
-     <env-entry-name>java:app/env/value1</env-entry-name>
-     <env-entry-type>java.lang.Integer</env-entry-type>
-     <env-entry-value>18338</env-entry-value>
-  </env-entry>
-  <env-entry>
-    <env-entry-name>java:app/env/myString</env-entry-name>
-    <env-entry-type>java.lang.String</env-entry-type>
-    <env-entry-value>myString</env-entry-value>
-  </env-entry>
+<application xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="6"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd">
+    <display-name>ejb-ejb30-hello-session3App</display-name>
+    <module>
+        <ejb>cdi-full-ear-ejb.jar</ejb>
+    </module>
+    <module>
+        <web>
+            <web-uri>cdi-full-ear-web.war</web-uri>
+            <context-root>cdi-full-ear</context-root>
+        </web>
+    </module>
+    <env-entry>
+        <env-entry-name>java:app/env/value1</env-entry-name>
+        <env-entry-type>java.lang.Integer</env-entry-type>
+        <env-entry-value>18338</env-entry-value>
+    </env-entry>
+    <env-entry>
+        <env-entry-name>java:app/env/myString</env-entry-name>
+        <env-entry-type>java.lang.String</env-entry-type>
+        <env-entry-value>myString</env-entry-value>
+    </env-entry>
 </application>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/programmatic-lookup-ear/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/programmatic-lookup-ear/descriptor/beans.xml
index e69de29..45ccdd0 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/programmatic-lookup-ear/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/programmatic-lookup-ear/descriptor/beans.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    This Source Code may also be made available under the following Secondary
+    Licenses when the conditions for such availability set forth in the
+    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/servlet-context-injection-cdi/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/servlet-context-injection-cdi/descriptor/beans.xml
index e69de29..45ccdd0 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/servlet-context-injection-cdi/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/servlet-context-injection-cdi/descriptor/beans.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    This Source Code may also be made available under the following Secondary
+    Licenses when the conditions for such availability set forth in the
+    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/servlet-context-injection-cdi/servlet/tests/cdi/context/ServletContextBridge.java b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/servlet-context-injection-cdi/servlet/tests/cdi/context/ServletContextBridge.java
index 0aab361..abf1bb3 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/servlet-context-injection-cdi/servlet/tests/cdi/context/ServletContextBridge.java
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/servlet-context-injection-cdi/servlet/tests/cdi/context/ServletContextBridge.java
@@ -30,29 +30,26 @@
 
 @WebListener
 public class ServletContextBridge implements ServletContextListener {
+    
     @Inject
     private BeanManager beanManager;
 
-    public ServletContextBridge() {
-    }
 
     /**
      * Servlet context initialized / destroyed events
      */
-
-    public void contextDestroyed(final ServletContextEvent e) {
-        fireEvent(e, DESTROYED);
-    }
-
     public void contextInitialized(final ServletContextEvent e) {
         fireEvent(e, INITIALIZED);
     }
 
-    private void fireEvent(final Object payload,
-            final Annotation... qualifiers) {
-        System.out.println("Firing event #0 with qualifiers #1" + payload
-                + qualifiers);
-        beanManager.fireEvent(payload, qualifiers);
+    public void contextDestroyed(final ServletContextEvent e) {
+        fireEvent(e, DESTROYED);
+    }
+   
+
+    private void fireEvent(final Object payload, final Annotation... qualifiers) {
+        System.out.println("Firing event #0 with qualifiers #1" + payload + qualifiers);
+        beanManager.getEvent().select(qualifiers).fire(payload);
     }
 
     private static final AnnotationLiteral<Destroyed> DESTROYED = new AnnotationLiteral<Destroyed>() {
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/simple-managed-bean-interceptor-noargconstructor-missing/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/simple-managed-bean-interceptor-noargconstructor-missing/descriptor/beans.xml
index 6264a41..7c24ccd 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/simple-managed-bean-interceptor-noargconstructor-missing/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/simple-managed-bean-interceptor-noargconstructor-missing/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,9 +17,10 @@
 
 -->
 
-<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation=" http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-   <interceptors>
-      <class>test.interceptors.TestAroundInvokeInterceptor</class>
-   </interceptors>
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
 </beans>
+
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/simple-managed-bean-interceptor-nonnull-package/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/simple-managed-bean-interceptor-nonnull-package/descriptor/beans.xml
index 6264a41..f2f1b6c 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/simple-managed-bean-interceptor-nonnull-package/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/simple-managed-bean-interceptor-nonnull-package/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,9 +17,13 @@
 
 -->
 
-<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation=" http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-   <interceptors>
-      <class>test.interceptors.TestAroundInvokeInterceptor</class>
-   </interceptors>
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+    <interceptors>
+        <class>test.interceptors.TestAroundInvokeInterceptor</class>
+    </interceptors>
 </beans>
+
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/simple-managed-bean-interceptor-nonnull-package/servlet/test/beans/TestManagedBean.java b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/simple-managed-bean-interceptor-nonnull-package/servlet/test/beans/TestManagedBean.java
index 150e424..fe01b6f 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/simple-managed-bean-interceptor-nonnull-package/servlet/test/beans/TestManagedBean.java
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/simple-managed-bean-interceptor-nonnull-package/servlet/test/beans/TestManagedBean.java
@@ -23,32 +23,31 @@
     TestBean tb;
     boolean postConstructCalled = false;
 
-    //a ManagedBean needs to have a no-arg constructor
-    public TestManagedBean(){
+    // a ManagedBean needs to have a no-arg constructor
+    public TestManagedBean() {
     }
 
-    @jakarta.inject.Inject //Constructor based Injection
-    public TestManagedBean(TestBean tb){
+    @jakarta.inject.Inject // Constructor based Injection
+    public TestManagedBean(TestBean tb) {
         this.tb = tb;
     }
 
-
     @jakarta.annotation.PostConstruct
-    public void init(){
+    public void init() {
         System.out.println("In ManagedBean:: PostConstruct");
         postConstructCalled = true;
     }
 
     @Tester
-    public void foo(){
+    public void foo() {
         System.out.println("foo called");
     }
 
-    public boolean testPostConstructCalled(){
+    public boolean testPostConstructCalled() {
         return this.postConstructCalled;
     }
 
-    public boolean testInjection(){
+    public boolean testInjection() {
         System.out.println("In ManagedBean:: tb=" + tb);
         postConstructCalled = true;
         return this.tb != null;
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/simple-managed-bean-interceptor-nonnull-package/servlet/test/beans/Tester.java b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/simple-managed-bean-interceptor-nonnull-package/servlet/test/beans/Tester.java
index 84525e5..4e05b53 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/simple-managed-bean-interceptor-nonnull-package/servlet/test/beans/Tester.java
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/simple-managed-bean-interceptor-nonnull-package/servlet/test/beans/Tester.java
@@ -21,8 +21,8 @@
 import static java.lang.annotation.ElementType.*;
 import static java.lang.annotation.RetentionPolicy.*;
 
-
 @InterceptorBinding
-@Target({METHOD, TYPE})
+@Target({ METHOD, TYPE })
 @Retention(RUNTIME)
-public @interface Tester {}
+public @interface Tester {
+}
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/simple-managed-bean-interceptor-nonnull-package/servlet/test/interceptors/TestAroundInvokeInterceptor.java b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/simple-managed-bean-interceptor-nonnull-package/servlet/test/interceptors/TestAroundInvokeInterceptor.java
index e60e071..d5a2823 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/simple-managed-bean-interceptor-nonnull-package/servlet/test/interceptors/TestAroundInvokeInterceptor.java
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/simple-managed-bean-interceptor-nonnull-package/servlet/test/interceptors/TestAroundInvokeInterceptor.java
@@ -20,20 +20,24 @@
 
 import test.beans.Tester;
 
-@Tester @Interceptor
+@Tester
+@Interceptor
 public class TestAroundInvokeInterceptor {
     public static int aroundInvokeCount = 0;
 
-    public static void reset(){
+    public static void reset() {
         aroundInvokeCount = 0;
     }
 
-   @AroundInvoke
-   public Object testMethod(InvocationContext ctx) throws Exception {
-        System.out.println("TestAroundInvokeIntercetpr:: aroundInvoke called - target:" + ctx.getTarget() + " , params:"+ ctx.getParameters());
-        aroundInvokeCount ++;
+    @AroundInvoke
+    public Object testMethod(InvocationContext ctx) throws Exception {
+        System.out.println(
+            "TestAroundInvokeIntercetpr:: aroundInvoke called - target:" + ctx.getTarget() + 
+            " , params:" + ctx.getParameters());
+        aroundInvokeCount++;
         ctx.proceed();
+        
         return null;
-   }
+    }
 
 }
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/simple-managed-bean-interceptor-nonnull-package/servlet/test/servlet/TestServlet.java b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/simple-managed-bean-interceptor-nonnull-package/servlet/test/servlet/TestServlet.java
index 7c6c1e5..871c7fa 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/simple-managed-bean-interceptor-nonnull-package/servlet/test/servlet/TestServlet.java
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/simple-managed-bean-interceptor-nonnull-package/servlet/test/servlet/TestServlet.java
@@ -30,22 +30,28 @@
 import test.beans.TestManagedBean;
 import test.interceptors.TestAroundInvokeInterceptor;
 
-@WebServlet(name="mytest",
-        urlPatterns={"/myurl"},
-        initParams={ @WebInitParam(name="n1", value="v1"), @WebInitParam(name="n2", value="v2") } )
+@WebServlet(
+    name = "mytest", urlPatterns = { "/myurl" }, 
+    initParams = { 
+        @WebInitParam(name = "n1", value = "v1"),
+        @WebInitParam(name = "n2", value = "v2") 
+    }
+)
 public class TestServlet extends HttpServlet {
-    @jakarta.inject.Inject TestManagedBean tb1;
-    @jakarta.annotation.Resource TestManagedBean tb;
+    
+    @jakarta.inject.Inject
+    TestManagedBean tb1;
+    
+    @jakarta.annotation.Resource
+    TestManagedBean tb;
 
-    public void service(HttpServletRequest req, HttpServletResponse res)
-            throws IOException, ServletException {
+    public void service(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
 
         PrintWriter writer = res.getWriter();
         writer.write("Hello from Servlet 3.0. ");
-        String msg = "n1=" + getInitParameter("n1") +
-            ", n2=" + getInitParameter("n2");
+        String msg = "n1=" + getInitParameter("n1") + ", n2=" + getInitParameter("n2");
 
-        //ManagedBean testing .. add additional messages in the "msg" string, so that the test will FAIL in the client
+        // ManagedBean testing .. add additional messages in the "msg" string, so that the test will FAIL in the client
         msg += testManagedBean(tb, " | TestManagedBean injected via @Resource");
         msg += testManagedBean(tb1, " | TestManagedBean injected via @Inject");
         msg += testInterceptors();
@@ -55,24 +61,29 @@
 
     private String testManagedBean(TestManagedBean tb, String info) {
         String msg = "";
-        if (tb == null) msg += info + " is null!";
-        if (tb != null && !tb.testPostConstructCalled()) msg += info + " postConstruct not called";
-        if (tb != null && !tb.testInjection()) msg += info + "Bean Injection into ManagedBean failed";
+        if (tb == null)
+            msg += info + " is null!";
+        if (tb != null && !tb.testPostConstructCalled())
+            msg += info + " postConstruct not called";
+        if (tb != null && !tb.testInjection())
+            msg += info + "Bean Injection into ManagedBean failed";
+        
         return msg;
     }
 
-    private String testInterceptors(){
+    private String testInterceptors() {
         System.out.println("calling foo on an @Resource injected Managed Bean");
         tb.foo();
         System.out.println("calling foo on an @Inject Managed Bean");
-        tb1.foo(); //TestAroundInvokeInterceptor is not called in this case
+        tb1.foo(); // TestAroundInvokeInterceptor is not called in this case
 
         int count = TestAroundInvokeInterceptor.aroundInvokeCount;
         System.out.println("TestAroundInvokeInterceptor called " + count + " times");
         TestAroundInvokeInterceptor.reset();
-        if (count == 2) return "";
-            else return "Interceptor invocation count" + count + " invalid";
-   }
-
+        if (count == 2)
+            return "";
+        
+        return "Interceptor invocation count" + count + " invalid";
+    }
 
 }
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/standalone-resource-adapter-as-bean-archive/app/src/META-INF/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/standalone-resource-adapter-as-bean-archive/app/src/META-INF/beans.xml
index e69de29..45ccdd0 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/standalone-resource-adapter-as-bean-archive/app/src/META-INF/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/standalone-resource-adapter-as-bean-archive/app/src/META-INF/beans.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    This Source Code may also be made available under the following Secondary
+    Licenses when the conditions for such availability set forth in the
+    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/standalone-resource-adapter-as-bean-archive/ra/META-INF/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/standalone-resource-adapter-as-bean-archive/ra/META-INF/beans.xml
index e69de29..45ccdd0 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/standalone-resource-adapter-as-bean-archive/ra/META-INF/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/standalone-resource-adapter-as-bean-archive/ra/META-INF/beans.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    This Source Code may also be made available under the following Secondary
+    Licenses when the conditions for such availability set forth in the
+    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/managed-beans/managed-bean-lifecycle-polymorphism/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/managed-beans/managed-bean-lifecycle-polymorphism/descriptor/beans.xml
index 5388298..7206432 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/managed-beans/managed-bean-lifecycle-polymorphism/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/managed-beans/managed-bean-lifecycle-polymorphism/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,9 +17,12 @@
 
 -->
 
-<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation=" http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-<!--
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+       <!--
    <interceptors>
       <class>com.tests.TestAroundInvokeInterceptor</class>
    </interceptors>
@@ -27,3 +31,4 @@
        <class>com.tests.TestManagedBeanExtension</class>
    </alternatives>
 </beans>
+
diff --git a/appserver/tests/appserv-tests/devtests/cdi/managed-beans/managed-bean-via-resource-injection/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/managed-beans/managed-bean-via-resource-injection/descriptor/beans.xml
index a52bc90..f8946c0 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/managed-beans/managed-bean-via-resource-injection/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/managed-beans/managed-bean-via-resource-injection/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,9 +17,12 @@
 
 -->
 
-<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation=" http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-   <interceptors>
-      <class>com.tests.TestAroundInvokeInterceptor</class>
-   </interceptors>
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+    <interceptors>
+       <class>com.tests.TestAroundInvokeInterceptor</class>
+    </interceptors>
 </beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/pom.xml b/appserver/tests/appserv-tests/devtests/cdi/pom.xml
index ee6fdac..f22a163 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/pom.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <groupId>org.glassfish.main.tests</groupId>
     <artifactId>tests</artifactId>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/bean-interface/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/bean-interface/descriptor/beans.xml
index f075638..368feed 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/bean-interface/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/bean-interface/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,13 +17,12 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-   <interceptors>
-      <class>test.beans.TransactionInterceptor</class>
-   </interceptors>
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+    <interceptors>
+       <class>test.beans.TransactionInterceptor</class>
+    </interceptors>
 </beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/bean-manager/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/bean-manager/descriptor/beans.xml
index f075638..368feed 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/bean-manager/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/bean-manager/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,13 +17,12 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-   <interceptors>
-      <class>test.beans.TransactionInterceptor</class>
-   </interceptors>
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+    <interceptors>
+       <class>test.beans.TransactionInterceptor</class>
+    </interceptors>
 </beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/injection-target/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/injection-target/descriptor/beans.xml
index f075638..8745038 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/injection-target/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/injection-target/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,13 +17,13 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-   <interceptors>
-      <class>test.beans.TransactionInterceptor</class>
-   </interceptors>
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+    <interceptors>
+       <class>test.beans.TransactionInterceptor</class>
+    </interceptors>
 </beans>
+
diff --git a/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/injection-target/servlet/test/servlet/PortableExtensionInjectionTargetTestServlet.java b/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/injection-target/servlet/test/servlet/PortableExtensionInjectionTargetTestServlet.java
index 06cd1a0..591d6e8 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/injection-target/servlet/test/servlet/PortableExtensionInjectionTargetTestServlet.java
+++ b/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/injection-target/servlet/test/servlet/PortableExtensionInjectionTargetTestServlet.java
@@ -26,6 +26,7 @@
 import jakarta.enterprise.inject.spi.AnnotatedType;
 import jakarta.enterprise.inject.spi.BeanManager;
 import jakarta.enterprise.inject.spi.InjectionTarget;
+import jakarta.enterprise.inject.spi.InjectionTargetFactory;
 import jakarta.inject.Inject;
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
@@ -92,7 +93,9 @@
 
         // First: Constructor Injection Framework class
         CreationalContext ctx = bm.createCreationalContext(null);
-        InjectionTarget<TestFrameworkClassWithConstructorInjection> it = bm.createInjectionTarget(atfc);
+        InjectionTargetFactory<TestFrameworkClassWithConstructorInjection> injectionTargetFactory = bm.getInjectionTargetFactory(atfc);
+        InjectionTarget<TestFrameworkClassWithConstructorInjection> it = injectionTargetFactory.createInjectionTarget(null);
+        
         TestFrameworkClassWithConstructorInjection ctorInstance = it.produce(ctx);
 
         // Since this framework class needs to support constructor based injection
@@ -106,7 +109,8 @@
 
         // Second: Setter and Field based Injection into a Framework class
         AnnotatedType<TestFrameworkClassWithSetterAndFieldInjection> atsfi = bm.createAnnotatedType(TestFrameworkClassWithSetterAndFieldInjection.class);
-        InjectionTarget<TestFrameworkClassWithSetterAndFieldInjection> it_set = bm.createInjectionTarget(atsfi);
+        InjectionTargetFactory<TestFrameworkClassWithSetterAndFieldInjection> ahdgf = bm.getInjectionTargetFactory(atsfi);
+        InjectionTarget<TestFrameworkClassWithSetterAndFieldInjection> it_set = ahdgf.createInjectionTarget(null);
         TestFrameworkClassWithSetterAndFieldInjection setterInstance = new TestFrameworkClassWithSetterAndFieldInjection("test");
         it_set.inject(setterInstance, ctx);
         it_set.postConstruct(setterInstance);
diff --git a/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/new-bean-registration-extension-in-lib/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/new-bean-registration-extension-in-lib/descriptor/beans.xml
index f075638..8745038 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/new-bean-registration-extension-in-lib/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/new-bean-registration-extension-in-lib/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,13 +17,13 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-   <interceptors>
-      <class>test.beans.TransactionInterceptor</class>
-   </interceptors>
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+    <interceptors>
+       <class>test.beans.TransactionInterceptor</class>
+    </interceptors>
 </beans>
+
diff --git a/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/new-bean-registration-extension-in-lib/extension/test/extension/ServiceFrameworkExtension.java b/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/new-bean-registration-extension-in-lib/extension/test/extension/ServiceFrameworkExtension.java
index 2276906..c2364c2 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/new-bean-registration-extension-in-lib/extension/test/extension/ServiceFrameworkExtension.java
+++ b/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/new-bean-registration-extension-in-lib/extension/test/extension/ServiceFrameworkExtension.java
@@ -262,10 +262,6 @@
             return false;
         }
 
-        @Override
-        public boolean isNullable() {
-            return false;
-        }
     }
 
     /*
diff --git a/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/new-bean-registration/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/new-bean-registration/descriptor/beans.xml
index f075638..8745038 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/new-bean-registration/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/new-bean-registration/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,13 +17,13 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-   <interceptors>
-      <class>test.beans.TransactionInterceptor</class>
-   </interceptors>
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+    <interceptors>
+       <class>test.beans.TransactionInterceptor</class>
+    </interceptors>
 </beans>
+
diff --git a/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/new-bean-registration/servlet/test/extension/ServiceFrameworkExtension.java b/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/new-bean-registration/servlet/test/extension/ServiceFrameworkExtension.java
index 56bbbb8..120d97e 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/new-bean-registration/servlet/test/extension/ServiceFrameworkExtension.java
+++ b/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/new-bean-registration/servlet/test/extension/ServiceFrameworkExtension.java
@@ -52,10 +52,10 @@
  */
 public class ServiceFrameworkExtension implements Extension{
 
-    public static boolean beforeBeanDiscoveryCalled = false;
-    public static boolean afterBeanDiscoveryCalled = false;
-    public static boolean afterProcessBeanCalled = false;
-    public static boolean processAnnotatedTypeCalled = false;
+    public static boolean beforeBeanDiscoveryCalled;
+    public static boolean afterBeanDiscoveryCalled;
+    public static boolean afterProcessBeanCalled;
+    public static boolean processAnnotatedTypeCalled;
 
     /*
      * A map of Framework Service Types to be injected and additional metadata
@@ -261,11 +261,6 @@
         public boolean isAlternative() {
             return false;
         }
-
-        @Override
-        public boolean isNullable() {
-            return false;
-        }
     }
 
     /*
diff --git a/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/package-private-extension-constructor/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/package-private-extension-constructor/descriptor/beans.xml
index f075638..368feed 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/package-private-extension-constructor/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/package-private-extension-constructor/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,13 +17,12 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-   <interceptors>
-      <class>test.beans.TransactionInterceptor</class>
-   </interceptors>
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+    <interceptors>
+       <class>test.beans.TransactionInterceptor</class>
+    </interceptors>
 </beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/process-injection-target/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/process-injection-target/descriptor/beans.xml
index 1d355f8..8745038 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/process-injection-target/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/process-injection-target/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,10 +17,13 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+    <interceptors>
+       <class>test.beans.TransactionInterceptor</class>
+    </interceptors>
 </beans>
+
diff --git a/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/process-injection-target/servlet/test/servlet/PortableExtensionInjectionTargetTestServlet.java b/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/process-injection-target/servlet/test/servlet/PortableExtensionInjectionTargetTestServlet.java
index 457a5c0..cc2c5e1 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/process-injection-target/servlet/test/servlet/PortableExtensionInjectionTargetTestServlet.java
+++ b/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/process-injection-target/servlet/test/servlet/PortableExtensionInjectionTargetTestServlet.java
@@ -41,16 +41,12 @@
 @WebServlet(name = "mytest", urlPatterns = { "/myurl" })
 public class PortableExtensionInjectionTargetTestServlet extends HttpServlet {
 
-//    @Inject
-//    BeanManager bm;
-
     String msg = "";
 
     public static volatile boolean pitCalled;
     public volatile boolean pitsInjectionTargetUsed;
 
-    public void service(HttpServletRequest req, HttpServletResponse res)
-            throws IOException, ServletException {
+    public void service(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
 
         PrintWriter writer = res.getWriter();
         writer.write("Hello from Servlet 3.0.");
diff --git a/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/simple-portable-extension/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/simple-portable-extension/descriptor/beans.xml
index f075638..8745038 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/simple-portable-extension/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/portable-extensions/simple-portable-extension/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,13 +17,13 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-   <interceptors>
-      <class>test.beans.TransactionInterceptor</class>
-   </interceptors>
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+    <interceptors>
+       <class>test.beans.TransactionInterceptor</class>
+    </interceptors>
 </beans>
+
diff --git a/appserver/tests/appserv-tests/devtests/cdi/producer-methods/producer-method-disposes/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/producer-methods/producer-method-disposes/descriptor/beans.xml
index e69de29..7c24ccd 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/producer-methods/producer-method-disposes/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/producer-methods/producer-method-disposes/descriptor/beans.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    This Source Code may also be made available under the following Secondary
+    Licenses when the conditions for such availability set forth in the
+    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
+
diff --git a/appserver/tests/appserv-tests/devtests/cdi/producer-methods/producer-method-qualifiers/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/producer-methods/producer-method-qualifiers/descriptor/beans.xml
index e69de29..7c24ccd 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/producer-methods/producer-method-qualifiers/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/producer-methods/producer-method-qualifiers/descriptor/beans.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    This Source Code may also be made available under the following Secondary
+    Licenses when the conditions for such availability set forth in the
+    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
+
diff --git a/appserver/tests/appserv-tests/devtests/cdi/producer-methods/producer-method-runtimepolymorphism/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/producer-methods/producer-method-runtimepolymorphism/descriptor/beans.xml
index e69de29..7c24ccd 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/producer-methods/producer-method-runtimepolymorphism/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/producer-methods/producer-method-runtimepolymorphism/descriptor/beans.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    This Source Code may also be made available under the following Secondary
+    Licenses when the conditions for such availability set forth in the
+    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
+
diff --git a/appserver/tests/appserv-tests/devtests/cdi/producer-methods/producer-method-runtimepolymorphism/servlet/test/beans/Preferences.java b/appserver/tests/appserv-tests/devtests/cdi/producer-methods/producer-method-runtimepolymorphism/servlet/test/beans/Preferences.java
index 14b07bf..6c2235f 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/producer-methods/producer-method-runtimepolymorphism/servlet/test/beans/Preferences.java
+++ b/appserver/tests/appserv-tests/devtests/cdi/producer-methods/producer-method-runtimepolymorphism/servlet/test/beans/Preferences.java
@@ -19,7 +19,6 @@
 import java.io.Serializable;
 
 import jakarta.enterprise.context.SessionScoped;
-import jakarta.enterprise.inject.New;
 import jakarta.enterprise.inject.Produces;
 
 public class Preferences implements Serializable {
@@ -28,8 +27,8 @@
 
     @Produces
     @Preferred_CreatedProgrammatically
-    //In this producer method, we are manually creating the
-    //bean instance
+    // In this producer method, we are manually creating the
+    // bean instance
     public PaymentStrategy getPaymentStrategy() {
         if (true)
             paymentStrategy = PaymentStrategyType.CREDIT_CARD;
@@ -54,14 +53,12 @@
     // (which is RequestScoped)
     // we would incorrectly be promoting a request scoped object to a
     // session-scoped object
-    // so we use @New for CreditCardPaymentStrategy alone. The rest of the
+    // so we use @Dependent for CreditCardPaymentStrategy alone. The rest of the
     // payment
     // strategies are Dependent anyway as they are not scoped explicitly in
     // their
     // classes
-    public PaymentStrategy getPaymentStrategy(
-            @New CreditCardPaymentStrategy ccps, ChequePaymentStrategy cps,
-            PayPalPaymentStrategy pps) {
+    public PaymentStrategy getPaymentStrategy(CreditCardPaymentStrategy ccps, ChequePaymentStrategy cps, PayPalPaymentStrategy pps) {
         // set CREDIT_CARD as preferred always
         paymentStrategy = PaymentStrategyType.CREDIT_CARD;
 
diff --git a/appserver/tests/appserv-tests/devtests/cdi/qualifiers/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/qualifiers/descriptor/beans.xml
index e69de29..debd97c 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/qualifiers/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/qualifiers/descriptor/beans.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
\ No newline at end of file
diff --git a/appserver/tests/appserv-tests/devtests/cdi/scopes/build.xml b/appserver/tests/appserv-tests/devtests/cdi/scopes/build.xml
index c07b69e..68a1dc4 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/scopes/build.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/scopes/build.xml
@@ -20,6 +20,44 @@
 <project name="scopes-test" default="usage" basedir=".">
 
     <property name="scopes-target" value="all"/>
+    
+    <target name="usage">
+        <echo> Usage:
+                ant all (Executes all the scopes tests)
+                ant clean (cleans all the scopes tests)
+                ant build (builds all the scopes tests)
+                ant setup (sets up all resources for scopes tests)
+                ant deploy (deploys all the scopes apps)
+                ant run (Executes all the scopes tests)
+                ant undeploy (undeploys all the  scopes apps)
+                ant unsetup (unsets all resources for scopes tests)
+        </echo>
+    </target>
+    
+    <target name="scopes">
+        <record name="scopes.output" action="start" />
+        
+        <ant dir="dependent-scope" target="${scopes-target}"/>
+        <ant dir="request-and-application-scope-ejb-mdb" target="${scopes-target}"/>
+        <ant dir="singleton-scope" target="${scopes-target}"/>
+        
+        <!--
+        Not running until we have some kind of replacement for the @New qualifier.
+        
+        <ant dir="new-qualifier" target="${scopes-target}"/>
+        -->
+        
+        <!--
+        Not running until
+        https://issues.jboss.org/browse/WELD-1345 is fixed.
+        In 1.1.10.Final the test passes.
+        In 2.0 Beta it fails.
+        
+        (it was lost it time what exactly should not be run here)
+        -->
+        
+        <record name="scopes.output" action="stop" />
+    </target>
 
     <target name="run-test">
         <antcall target="scopes">
@@ -75,31 +113,7 @@
         </antcall>
     </target>
 
-    <target name="scopes">
-        <record name="scopes.output" action="start" />
-            <ant dir="dependent-scope" target="${scopes-target}"/>
-            <ant dir="new-qualifier" target="${scopes-target}"/>
-        <!--
-        Not running until
-        https://issues.jboss.org/browse/WELD-1345 is fixed.
-        In 1.1.10.Final the test passes.
-        In 2.0 Beta it fails.
-        -->
-        <ant dir="request-and-application-scope-ejb-mdb" target="${scopes-target}"/>
-        <ant dir="singleton-scope" target="${scopes-target}"/>
-        <record name="scopes.output" action="stop" />
-    </target>
+    
 
-    <target name="usage">
-        <echo> Usage:
-                ant all (Executes all the scopes tests)
-                ant clean (cleans all the scopes tests)
-                ant build (builds all the scopes tests)
-                ant setup (sets up all resources for scopes tests)
-                ant deploy (deploys all the scopes apps)
-                ant run (Executes all the scopes tests)
-                ant undeploy (undeploys all the  scopes apps)
-                ant unsetup (unsets all resources for scopes tests)
-        </echo>
-    </target>
+    
 </project>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/scopes/dependent-scope/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/scopes/dependent-scope/descriptor/beans.xml
index e69de29..7c24ccd 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/scopes/dependent-scope/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/scopes/dependent-scope/descriptor/beans.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    This Source Code may also be made available under the following Secondary
+    Licenses when the conditions for such availability set forth in the
+    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
+
diff --git a/appserver/tests/appserv-tests/devtests/cdi/scopes/new-qualifier/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/scopes/new-qualifier/descriptor/beans.xml
index e69de29..45ccdd0 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/scopes/new-qualifier/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/scopes/new-qualifier/descriptor/beans.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    This Source Code may also be made available under the following Secondary
+    Licenses when the conditions for such availability set forth in the
+    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/scopes/new-qualifier/servlet/test/servlets/NewQualifierTestServlet.java b/appserver/tests/appserv-tests/devtests/cdi/scopes/new-qualifier/servlet/test/servlets/NewQualifierTestServlet.java
index 2d6afc5..7a23110 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/scopes/new-qualifier/servlet/test/servlets/NewQualifierTestServlet.java
+++ b/appserver/tests/appserv-tests/devtests/cdi/scopes/new-qualifier/servlet/test/servlets/NewQualifierTestServlet.java
@@ -18,8 +18,7 @@
 
 import java.io.IOException;
 import java.io.PrintWriter;
-
-import jakarta.enterprise.inject.New;
+import jakarta.enterprise.context.Dependent;
 import jakarta.enterprise.inject.Instance;
 import jakarta.inject.Inject;
 import jakarta.servlet.ServletException;
@@ -40,19 +39,18 @@
     TestRequestScopedBean anotherRefToRequestScopedBean;
 
     @Inject
-    @New
+    @Dependent
     TestRequestScopedBean newRequestScopedBean;
 
     @Inject
-    @New
-    Instance<TestRequestScopedBean> newRequestScopedBeanProgrammaticLookup;
+    @Dependent
+    Instance<TestRequestScopedBean>newRequestScopedBeanProgrammaticLookup;
 
     @Inject
-    @New(TestRequestScopedBean.class)
+    @Dependent
     Instance<TestRequestScopedBean> newRequestScopedBeanProgrammaticLookup2;
 
-    public void service(HttpServletRequest req, HttpServletResponse res)
-            throws IOException, ServletException {
+    public void service(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
 
         PrintWriter writer = res.getWriter();
         writer.write("Hello from Servlet 3.0.");
@@ -75,10 +73,10 @@
         if (!testIsClientProxy(trsb, TestRequestScopedBean.class))
             msg += "Request scoped beans must be injected as a client proxy";
 
-        if(newRequestScopedBeanProgrammaticLookup.get() == null)
+        if (newRequestScopedBeanProgrammaticLookup.get() == null)
             msg += "A new instance of Request Scoped Bean obtained through programmatic lookup failed";
 
-        if(newRequestScopedBeanProgrammaticLookup2.get() == null)
+        if (newRequestScopedBeanProgrammaticLookup2.get() == null)
             msg += "A new(complex type specification scenario) instance of Request Scoped Bean obtained through programmatic lookup failed";
 
         writer.write(msg + "\n");
@@ -91,13 +89,11 @@
     // Tests if the bean instance is a client proxy
     private boolean testIsClientProxy(Object beanInstance, Class beanType) {
         boolean isSameClass = beanInstance.getClass().equals(beanType);
-        boolean isProxyAssignable = beanType.isAssignableFrom(beanInstance
-                .getClass());
-        System.out.println(beanInstance + "whose class is "
-                + beanInstance.getClass() + " is same class of " + beanType
-                + " = " + isSameClass);
-        System.out.println(beanType + " is assignable from " + beanInstance
-                + " = " + isProxyAssignable);
+        boolean isProxyAssignable = beanType.isAssignableFrom(beanInstance.getClass());
+        System.out.println(
+            beanInstance + "whose class is " + beanInstance.getClass() + 
+            " is same class of " + beanType + " = " + isSameClass);
+        System.out.println(beanType + " is assignable from " + beanInstance + " = " + isProxyAssignable);
         boolean isAClientProxy = !isSameClass && isProxyAssignable;
         return isAClientProxy;
     }
diff --git a/appserver/tests/appserv-tests/devtests/cdi/scopes/request-and-application-scope-ejb-mdb/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/scopes/request-and-application-scope-ejb-mdb/descriptor/beans.xml
index e69de29..45ccdd0 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/scopes/request-and-application-scope-ejb-mdb/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/scopes/request-and-application-scope-ejb-mdb/descriptor/beans.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    This Source Code may also be made available under the following Secondary
+    Licenses when the conditions for such availability set forth in the
+    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/scopes/singleton-scope/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/scopes/singleton-scope/descriptor/beans.xml
index e69de29..2944211 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/scopes/singleton-scope/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/scopes/singleton-scope/descriptor/beans.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    This Source Code may also be made available under the following Secondary
+    Licenses when the conditions for such availability set forth in the
+    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
\ No newline at end of file
diff --git a/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/cdi-servlet-3.0-annotation/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/cdi-servlet-3.0-annotation/descriptor/beans.xml
index e69de29..debd97c 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/cdi-servlet-3.0-annotation/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/cdi-servlet-3.0-annotation/descriptor/beans.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
\ No newline at end of file
diff --git a/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/cdi-servlet-filter-3.0-annotation/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/cdi-servlet-filter-3.0-annotation/descriptor/beans.xml
index e69de29..debd97c 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/cdi-servlet-filter-3.0-annotation/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/cdi-servlet-filter-3.0-annotation/descriptor/beans.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
\ No newline at end of file
diff --git a/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/optional-unbundled-beans/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/optional-unbundled-beans/descriptor/beans.xml
index e69de29..debd97c 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/optional-unbundled-beans/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/optional-unbundled-beans/descriptor/beans.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
\ No newline at end of file
diff --git a/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/simple-ear/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/simple-ear/descriptor/beans.xml
index e69de29..debd97c 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/simple-ear/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/simple-ear/descriptor/beans.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
\ No newline at end of file
diff --git a/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/simple-ejb-cdi/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/simple-ejb-cdi/descriptor/beans.xml
index e69de29..debd97c 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/simple-ejb-cdi/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/simple-ejb-cdi/descriptor/beans.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
\ No newline at end of file
diff --git a/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/simple-managed-bean-interceptor-nonnull-package/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/simple-managed-bean-interceptor-nonnull-package/descriptor/beans.xml
index a52bc90..05abcfe 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/simple-managed-bean-interceptor-nonnull-package/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/simple-managed-bean-interceptor-nonnull-package/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -15,10 +16,11 @@
     SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 
 -->
-
-<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation=" http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-   <interceptors>
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+       <interceptors>
       <class>com.tests.TestAroundInvokeInterceptor</class>
    </interceptors>
-</beans>
+</beans>
\ No newline at end of file
diff --git a/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/simple-managed-bean/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/simple-managed-bean/descriptor/beans.xml
index e69de29..debd97c 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/simple-managed-bean/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/simple-managed-bean/descriptor/beans.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
\ No newline at end of file
diff --git a/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/singleton-startup/hello/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/singleton-startup/hello/descriptor/beans.xml
index e69de29..debd97c 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/singleton-startup/hello/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/singleton-startup/hello/descriptor/beans.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
\ No newline at end of file
diff --git a/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/slf4j-visibility/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/slf4j-visibility/descriptor/beans.xml
index e69de29..debd97c 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/slf4j-visibility/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/slf4j-visibility/descriptor/beans.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+</beans>
\ No newline at end of file
diff --git a/appserver/tests/appserv-tests/devtests/cdi/specialization/alternative-leaks/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/specialization/alternative-leaks/descriptor/beans.xml
index 1f24f15..1fe0dea 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/specialization/alternative-leaks/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/specialization/alternative-leaks/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,18 +17,16 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-   <interceptors>
-      <class>test.beans.artifacts.TransactionInterceptor</class>
-      <class>test.beans.artifacts.RequiresNewTransactionInterceptor</class>
-   </interceptors>
-   <alternatives>
-   <stereotype>test.beans.artifacts.MockStereotype</stereotype>
-   </alternatives>
 
-</beans>
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+    bean-discovery-mode="all" version="3.0">
+    <interceptors>
+        <class>test.beans.artifacts.TransactionInterceptor</class>
+        <class>test.beans.artifacts.RequiresNewTransactionInterceptor</class>
+    </interceptors>
+    <alternatives>
+        <stereotype>test.beans.artifacts.MockStereotype</stereotype>
+    </alternatives>
+</beans>
\ No newline at end of file
diff --git a/appserver/tests/appserv-tests/devtests/cdi/specialization/specialization-simple/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/specialization/specialization-simple/descriptor/beans.xml
index 1f24f15..1aff4b3 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/specialization/specialization-simple/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/specialization/specialization-simple/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,18 +17,16 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-   <interceptors>
-      <class>test.beans.artifacts.TransactionInterceptor</class>
-      <class>test.beans.artifacts.RequiresNewTransactionInterceptor</class>
-   </interceptors>
-   <alternatives>
-   <stereotype>test.beans.artifacts.MockStereotype</stereotype>
-   </alternatives>
 
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+    bean-discovery-mode="all" version="3.0">
+    <interceptors>
+        <class>test.beans.artifacts.TransactionInterceptor</class>
+        <class>test.beans.artifacts.RequiresNewTransactionInterceptor</class>
+    </interceptors>
+    <alternatives>
+        <stereotype>test.beans.artifacts.MockStereotype</stereotype>
+    </alternatives>
 </beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/stereotypes/alternative-stereotypes/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/stereotypes/alternative-stereotypes/descriptor/beans.xml
index 1f24f15..1fe0dea 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/stereotypes/alternative-stereotypes/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/stereotypes/alternative-stereotypes/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,18 +17,16 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-   <interceptors>
-      <class>test.beans.artifacts.TransactionInterceptor</class>
-      <class>test.beans.artifacts.RequiresNewTransactionInterceptor</class>
-   </interceptors>
-   <alternatives>
-   <stereotype>test.beans.artifacts.MockStereotype</stereotype>
-   </alternatives>
 
-</beans>
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+    bean-discovery-mode="all" version="3.0">
+    <interceptors>
+        <class>test.beans.artifacts.TransactionInterceptor</class>
+        <class>test.beans.artifacts.RequiresNewTransactionInterceptor</class>
+    </interceptors>
+    <alternatives>
+        <stereotype>test.beans.artifacts.MockStereotype</stereotype>
+    </alternatives>
+</beans>
\ No newline at end of file
diff --git a/appserver/tests/appserv-tests/devtests/cdi/stereotypes/build.xml b/appserver/tests/appserv-tests/devtests/cdi/stereotypes/build.xml
index 82a7228..8cd7f33 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/stereotypes/build.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/stereotypes/build.xml
@@ -21,68 +21,6 @@
 
     <property name="stereotypes-target" value="all"/>
 
-    <target name="run-test">
-        <antcall target="stereotypes">
-        <param name="stereotypes-target" value="run-test"/>
-        </antcall>
-    </target>
-
-    <target name="all">
-        <antcall target="stereotypes">
-        <param name="stereotypes-target" value="all"/>
-        </antcall>
-    </target>
-
-    <target name="clean">
-        <antcall target="stereotypes">
-        <param name="stereotypes-target" value="clean"/>
-        </antcall>
-    </target>
-
-    <target name="build">
-        <antcall target="stereotypes">
-        <param name="stereotypes-target" value="build"/>
-        </antcall>
-    </target>
-
-    <target name="setup">
-        <antcall target="stereotypes">
-        <param name="stereotypes-target" value="setup"/>
-        </antcall>
-    </target>
-
-    <target name="deploy">
-        <antcall target="stereotypes">
-        <param name="stereotypes-target" value="deploy"/>
-        </antcall>
-    </target>
-
-    <target name="undeploy">
-        <antcall target="stereotypes">
-        <param name="stereotypes-target" value="undeploy"/>
-        </antcall>
-    </target>
-
-    <target name="unsetup">
-        <antcall target="stereotypes">
-        <param name="stereotypes-target" value="unsetup"/>
-        </antcall>
-    </target>
-
-    <target name="run">
-        <antcall target="stereotypes">
-        <param name="stereotypes-target" value="run"/>
-        </antcall>
-    </target>
-
-    <target name="stereotypes">
-        <record name="stereotypes.output" action="start" />
-            <ant dir="alternative-stereotypes" target="${stereotypes-target}"/>
-            <ant dir="interceptor-bindings-for-stereotypes" target="${stereotypes-target}"/>
-            <ant dir="stereotype-stacking" target="${stereotypes-target}"/>
-        <record name="stereotypes.output" action="stop" />
-    </target>
-
     <target name="usage">
         <echo> Usage:
                 ant all (Executes all the stereotypes tests)
@@ -95,4 +33,71 @@
                 ant unsetup (unsets all resources for stereotypes tests)
         </echo>
     </target>
+
+    <target name="stereotypes">
+        <record name="stereotypes.output" action="start" />
+
+        <ant dir="alternative-stereotypes" target="${stereotypes-target}" />
+        <ant dir="interceptor-bindings-for-stereotypes" target="${stereotypes-target}" />
+        <ant dir="stereotype-stacking" target="${stereotypes-target}" />
+
+        <record name="stereotypes.output" action="stop" />
+    </target>
+
+    <target name="run-test">
+        <antcall target="stereotypes">
+            <param name="stereotypes-target" value="run-test" />
+        </antcall>
+    </target>
+
+    <target name="all">
+        <antcall target="stereotypes">
+            <param name="stereotypes-target" value="all" />
+        </antcall>
+    </target>
+
+    <target name="clean">
+        <antcall target="stereotypes">
+            <param name="stereotypes-target" value="clean" />
+        </antcall>
+    </target>
+
+    <target name="build">
+        <antcall target="stereotypes">
+            <param name="stereotypes-target" value="build" />
+        </antcall>
+    </target>
+
+    <target name="setup">
+        <antcall target="stereotypes">
+            <param name="stereotypes-target" value="setup" />
+        </antcall>
+    </target>
+
+    <target name="deploy">
+        <antcall target="stereotypes">
+            <param name="stereotypes-target" value="deploy" />
+        </antcall>
+    </target>
+
+    <target name="run">
+        <antcall target="stereotypes">
+            <param name="stereotypes-target" value="run" />
+        </antcall>
+    </target>
+
+
+    <target name="undeploy">
+        <antcall target="stereotypes">
+            <param name="stereotypes-target" value="undeploy" />
+        </antcall>
+    </target>
+
+    <target name="unsetup">
+        <antcall target="stereotypes">
+            <param name="stereotypes-target" value="unsetup" />
+        </antcall>
+    </target>
+
+
 </project>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/stereotypes/interceptor-bindings-for-stereotypes/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/stereotypes/interceptor-bindings-for-stereotypes/descriptor/beans.xml
index 7900c53..85d0ac1 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/stereotypes/interceptor-bindings-for-stereotypes/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/stereotypes/interceptor-bindings-for-stereotypes/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,15 +17,13 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+    bean-discovery-mode="all" version="3.0">
    <interceptors>
       <class>test.beans.TransactionInterceptor</class>
       <class>test.beans.RequiresNewTransactionInterceptor</class>
    </interceptors>
-
 </beans>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/stereotypes/stereotype-stacking/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/stereotypes/stereotype-stacking/descriptor/beans.xml
index 33b2aa7..0b9c30a 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/stereotypes/stereotype-stacking/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/stereotypes/stereotype-stacking/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,14 +17,13 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-   <interceptors>
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+    bean-discovery-mode="all" version="3.0">
+  <interceptors>
       <class>test.beans.interceptors.TransactionInterceptor</class>
       <class>test.beans.interceptors.SecurityInterceptor</class>
    </interceptors>
-</beans>
+</beans>
\ No newline at end of file
diff --git a/appserver/tests/appserv-tests/devtests/cdi/transactions/transaction-scoped/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/transactions/transaction-scoped/descriptor/beans.xml
index 1d355f8..b8b4f75 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/transactions/transaction-scoped/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/transactions/transaction-scoped/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,10 +17,9 @@
 
 -->
 
-<beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-</beans>
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+    bean-discovery-mode="all" version="3.0">
+</beans>
\ No newline at end of file
diff --git a/appserver/tests/appserv-tests/devtests/cdi/unproxyable-deps/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/unproxyable-deps/descriptor/beans.xml
index e69de29..b8b4f75 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/unproxyable-deps/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/unproxyable-deps/descriptor/beans.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    This Source Code may also be made available under the following Secondary
+    Licenses when the conditions for such availability set forth in the
+    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+    bean-discovery-mode="all" version="3.0">
+</beans>
\ No newline at end of file
diff --git a/appserver/tests/appserv-tests/devtests/cdi/unsatisfied-deps/build.xml b/appserver/tests/appserv-tests/devtests/cdi/unsatisfied-deps/build.xml
index a78bc46..727b7c3 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/unsatisfied-deps/build.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/unsatisfied-deps/build.xml
@@ -32,56 +32,55 @@
     &testproperties;
     &run;
 
-    <target name="all" depends="build,deploy,run,undeploy"/>
+    <target name="all" depends="build,deploy,run,undeploy" />
 
     <target name="clean" depends="init-common">
-        <antcall target="clean-common"/>
+        <antcall target="clean-common" />
         <delete>
-            <fileset dir="." includes="*.class"/>
+            <fileset dir="." includes="*.class" />
         </delete>
     </target>
 
     <target name="compile" depends="clean">
         <antcall target="compile-common">
-            <param name="src" value="servlet"/>
+            <param name="src" value="servlet" />
         </antcall>
     </target>
 
     <target name="build" depends="compile">
-        <property name="hasWebclient" value="yes"/>
+        <property name="hasWebclient" value="yes" />
         <antcall target="webclient-war-common">
-            <param name="hasWebclient" value="yes"/>
-            <param name="webclient.war.classes" value="**/*.class"/>
+            <param name="hasWebclient" value="yes" />
+            <param name="webclient.war.classes" value="**/*.class" />
         </antcall>
 
-        <javac srcdir="." classpath="${env.APS_HOME}/lib/reportbuilder.jar"
-               includes="WebTest.java"/>
+        <javac srcdir="." classpath="${env.APS_HOME}/lib/reportbuilder.jar" includes="WebTest.java" />
 
     </target>
 
     <target name="build-publish-war" depends="build, publish-war-common" />
 
     <target name="deploy" depends="init-common">
-        <antcall target="deploy-war-common"/>
+        <antcall target="deploy-war-common" />
     </target>
 
     <target name="run" depends="init-common">
         <java classname="WebTest" fork="true">
-          <arg value="${http.host}"/>
-          <arg value="${http.port}"/>
-          <arg value="${contextroot}"/>
-          <classpath>
-           <pathelement location="${env.APS_HOME}/lib/reportbuilder.jar"/>
-           <pathelement location="."/>
-         </classpath>
+            <arg value="${http.host}" />
+            <arg value="${http.port}" />
+            <arg value="${contextroot}" />
+            <classpath>
+                <pathelement location="${env.APS_HOME}/lib/reportbuilder.jar" />
+                <pathelement location="." />
+            </classpath>
         </java>
     </target>
 
     <target name="undeploy" depends="init-common">
-        <antcall target="undeploy-war-common"/>
+        <antcall target="undeploy-war-common" />
     </target>
 
     <target name="usage">
-        <antcall target="usage-common"/>
+        <antcall target="usage-common" />
     </target>
 </project>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/unsatisfied-deps/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/cdi/unsatisfied-deps/descriptor/beans.xml
index 47d88ee..b30b02c 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/unsatisfied-deps/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/unsatisfied-deps/descriptor/beans.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
@@ -16,12 +17,13 @@
 
 -->
 
-<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="
-      http://java.sun.com/xml/ns/javaee
-      http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
-  <alternatives>
-  <!--  This test passes because this alternative is enabled -->
-    <class>test.artifacts.MockPaymentProcessor</class>
-  </alternatives>
-</beans>
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+    bean-discovery-mode="all" version="3.0">
+    <alternatives>
+        <!-- This test passes because this alternative is enabled -->
+        <class>test.artifacts.MockPaymentProcessor</class>
+    </alternatives>
+</beans>
\ No newline at end of file
diff --git a/appserver/tests/appserv-tests/devtests/cluster/test-bigcluster.sh b/appserver/tests/appserv-tests/devtests/cluster/test-bigcluster.sh
index eb987b2..b3e20ab 100755
--- a/appserver/tests/appserv-tests/devtests/cluster/test-bigcluster.sh
+++ b/appserver/tests/appserv-tests/devtests/cluster/test-bigcluster.sh
@@ -17,7 +17,7 @@
 
 
 TESTHOME=`pwd`
-GFHOME=$TESTHOME/glassfish6
+GFHOME=$TESTHOME/glassfish7
 export INSTALL_LOC=$HOME/testnode
 export DOMAIN=domain1
 echo "DOMAIN is set to $DOMAIN. Reset this if working with another domain."
@@ -89,7 +89,7 @@
   grep 'time to parse domain.xml' $GFHOME/glassfish/domains/$DOMAIN/logs/server.log |
     sed -e 's/^.*Total //' -e 's/|#]//' | tail -1
   echo 'size of domain.xml: ' `ls -l $GFHOME/glassfish/domains/$DOMAIN/config/domain.xml | awk '{ print $5 }'`
-  PIDFILE=$TESTHOME/glassfish6/glassfish/domains/domain1/config/pid
+  PIDFILE=$TESTHOME/glassfish7/glassfish/domains/domain1/config/pid
   # wait for pid file to be there, as restart-domain returns before it is actually there
   while [ ! -f $PIDFILE ]; do sleep 1; done
   daspid=`cat $PIDFILE`
@@ -192,14 +192,14 @@
 create_hosted_nodes() {
   echo Creating SSH nodes from the hosted_nodes file for domain $DOMAIN...
   grep -v '^#' $TESTHOME/hosted-nodes |
-    awk '{ printf "create-node-ssh --nodehost %s --installdir '$INSTALL_LOC'/glassfish6 --sshuser %s n-ssh-'$DOMAIN'-%d\n", $2, $1, ++n }' |
+    awk '{ printf "create-node-ssh --nodehost %s --installdir '$INSTALL_LOC'/glassfish7 --sshuser %s n-ssh-'$DOMAIN'-%d\n", $2, $1, ++n }' |
     asadmin
   asadmin list-nodes
 }
 
 install_hosted_nodes() {
   echo Installing GlassFish on nodes from hosted_nodes file...
-  asadmin install-node --installdir $INSTALL_LOC/glassfish6 `grep -v '^#' hosted-nodes | cut -d" " -f2`
+  asadmin install-node --installdir $INSTALL_LOC/glassfish7 `grep -v '^#' hosted-nodes | cut -d" " -f2`
 }
 
 cmd_on_hosted_nodes() {
diff --git a/appserver/tests/appserv-tests/devtests/ejb/README b/appserver/tests/appserv-tests/devtests/ejb/README
index 48e0512..59eaf85 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/README
+++ b/appserver/tests/appserv-tests/devtests/ejb/README
@@ -5,7 +5,7 @@
 1. Set the following variables:
 
 APS_HOME to the location of where v2/appserv-tests are checked out
-S1AS_HOME to <GlassFish install location>/glassfish6/glassfish
+S1AS_HOME to <GlassFish install location>/glassfish7/glassfish
 
 2. Make sure ant is in your path.  
 
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/jcdifull/descriptor/beans.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/jcdifull/descriptor/beans.xml
index b2b07ac..6a0c02b 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/jcdifull/descriptor/beans.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/jcdifull/descriptor/beans.xml
@@ -17,11 +17,13 @@
 -->
 
 <beans
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="
-       http://java.sun.com/xml/ns/javaee
-       http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+  xmlns="https://jakarta.ee/xml/ns/jakartaee"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="
+    https://jakarta.ee/xml/ns/jakartaee
+    https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+  bean-discovery-mode="all" version="3.0"
+>
    <interceptors>
       <class>test.beans.interceptors.AnotherInterceptor</class>
    </interceptors>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/pom.xml b/appserver/tests/appserv-tests/devtests/ejb/pom.xml
index 7f91c8c..9dc7431 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/pom.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <groupId>org.glassfish.main.tests</groupId>
     <artifactId>tests</artifactId>
diff --git a/appserver/tests/appserv-tests/devtests/jms/README b/appserver/tests/appserv-tests/devtests/jms/README
index d005390..e223761 100644
--- a/appserver/tests/appserv-tests/devtests/jms/README
+++ b/appserver/tests/appserv-tests/devtests/jms/README
@@ -5,7 +5,7 @@
 1. Set the following variables:
 
 APS_HOME to the location of where v2/appserv-tests are checked out
-S1AS_HOME to <GlassFish install location>/glassfish6/glassfish
+S1AS_HOME to <GlassFish install location>/glassfish7/glassfish
 
 2. Make sure ant is in your path.  
 
diff --git a/appserver/tests/appserv-tests/devtests/security/container-auth/testConfig/domain.xml b/appserver/tests/appserv-tests/devtests/security/container-auth/testConfig/domain.xml
index d2a2683..085400b 100644
--- a/appserver/tests/appserv-tests/devtests/security/container-auth/testConfig/domain.xml
+++ b/appserver/tests/appserv-tests/devtests/security/container-auth/testConfig/domain.xml
@@ -197,7 +197,7 @@
         <module-monitoring-levels connector-connection-pool="OFF" ejb-container="OFF" http-service="OFF" jdbc-connection-pool="OFF" jndi="OFF" orb="OFF" thread-pool="OFF" transaction-service="OFF" web-container="OFF"/>
 -->
       </monitoring-service>
-      <java-config classpath-suffix="${com.sun.aas.installRoot}/pointbase/lib/pbclient.jar${path.separator}${com.sun.aas.installRoot}/pointbase/lib/pbembedded.jar" debug-enabled="false" debug-options="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044" env-classpath-ignored="true" java-home="${com.sun.aas.javaRoot}" javac-options="-g" rmic-options="-iiop -poa -alwaysgenerate -keepgenerated -g" server-classpath="${com.sun.aas.javaRoot}/lib/tools.jar${path.separator}${com.sun.aas.installRoot}/lib/install/applications/jmsra/imqjmsra.jar${path.separator}${com.sun.aas.imqLib}/jaxm-api.jar${path.separator}${com.sun.aas.imqLib}/fscontext.jar${path.separator}${com.sun.aas.installRoot}/lib/ant/lib/ant.jar">
+      <java-config classpath-suffix="${com.sun.aas.installRoot}/pointbase/lib/pbclient.jar${path.separator}${com.sun.aas.installRoot}/pointbase/lib/pbembedded.jar" debug-enabled="false" debug-options="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044" env-classpath-ignored="true" java-home="${com.sun.aas.javaRoot}" javac-options="-g" rmic-options="-iiop -poa -alwaysgenerate -keepgenerated -g" server-classpath="${com.sun.aas.javaRoot}/lib/tools.jar${path.separator}${com.sun.aas.installRoot}/lib/install/applications/jmsra/imqjmsra.jar${path.separator}${com.sun.aas.imqLib}/fscontext.jar${path.separator}${com.sun.aas.installRoot}/lib/ant/lib/ant.jar">
         <!-- various required jvm-options -->
         <jvm-options>-client</jvm-options>
         <jvm-options>-Djava.security.policy=${com.sun.aas.instanceRoot}/config/server.policy</jvm-options>
diff --git a/appserver/tests/appserv-tests/devtests/security/ejb-auth-async/scheduler-service/pom.xml b/appserver/tests/appserv-tests/devtests/security/ejb-auth-async/scheduler-service/pom.xml
index 920198e..363ee8c 100644
--- a/appserver/tests/appserv-tests/devtests/security/ejb-auth-async/scheduler-service/pom.xml
+++ b/appserver/tests/appserv-tests/devtests/security/ejb-auth-async/scheduler-service/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-nucleus-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath/>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/appserver/tests/appserv-tests/devtests/security/jaccApi/prog-auth/common/pom.xml b/appserver/tests/appserv-tests/devtests/security/jaccApi/prog-auth/common/pom.xml
index 68727ec..d45fbd9 100644
--- a/appserver/tests/appserv-tests/devtests/security/jaccApi/prog-auth/common/pom.xml
+++ b/appserver/tests/appserv-tests/devtests/security/jaccApi/prog-auth/common/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.jaccApi.test</groupId>
         <artifactId>prog-auth</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>jaccApi-common</artifactId>
diff --git a/appserver/tests/appserv-tests/devtests/security/jaccApi/prog-auth/pom.xml b/appserver/tests/appserv-tests/devtests/security/jaccApi/prog-auth/pom.xml
index a631763..a61312e 100644
--- a/appserver/tests/appserv-tests/devtests/security/jaccApi/prog-auth/pom.xml
+++ b/appserver/tests/appserv-tests/devtests/security/jaccApi/prog-auth/pom.xml
@@ -21,7 +21,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.jaccApi.test</groupId>
     <artifactId>prog-auth</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>Programmatic authentication with Jakarta Authorization api</name>
diff --git a/appserver/tests/appserv-tests/devtests/security/jaccApi/prog-auth/programmatic-authentication/pom.xml b/appserver/tests/appserv-tests/devtests/security/jaccApi/prog-auth/programmatic-authentication/pom.xml
index e4503e0..af793a5 100644
--- a/appserver/tests/appserv-tests/devtests/security/jaccApi/prog-auth/programmatic-authentication/pom.xml
+++ b/appserver/tests/appserv-tests/devtests/security/jaccApi/prog-auth/programmatic-authentication/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.jaccApi.test</groupId>
         <artifactId>prog-auth</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>programmatic-authentication-jacc-api</artifactId>
diff --git a/appserver/tests/appserv-tests/devtests/security/soteria/README.md b/appserver/tests/appserv-tests/devtests/security/soteria/README.md
index 948191e..f3900e1 100644
--- a/appserver/tests/appserv-tests/devtests/security/soteria/README.md
+++ b/appserver/tests/appserv-tests/devtests/security/soteria/README.md
@@ -19,7 +19,7 @@
 
 Jun 05, 2017 3:50:22 PM org.jboss.arquillian.container.glassfish.managed_3_1.GlassFishServerControl$1 run
 WARNING: Forcing container shutdown
-Stopping container using command: [java, -jar, /media/sameerpandit/WLS/javaEE/tt/glassfish6/glassfish/../glassfish/modules/admin-cli.jar, stop-domain, -t]
+Stopping container using command: [java, -jar, /media/sameerpandit/WLS/javaEE/tt/glassfish7/glassfish/../glassfish/modules/admin-cli.jar, stop-domain, -t]
 ------------
 
 Resolve this by running the test with a fresh $S1AS_HOME.
diff --git a/appserver/tests/appserv-tests/devtests/security/soteria/app-bundled-ham-basic-login-config-form/pom.xml b/appserver/tests/appserv-tests/devtests/security/soteria/app-bundled-ham-basic-login-config-form/pom.xml
index 1d9efa7..d4da676 100644
--- a/appserver/tests/appserv-tests/devtests/security/soteria/app-bundled-ham-basic-login-config-form/pom.xml
+++ b/appserver/tests/appserv-tests/devtests/security/soteria/app-bundled-ham-basic-login-config-form/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.glassfish.soteria.test</groupId>
         <artifactId>soteria</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>app-bundled-ham-basic-login-config-form</artifactId>
diff --git a/appserver/tests/appserv-tests/devtests/security/soteria/app-caller-principal/pom.xml b/appserver/tests/appserv-tests/devtests/security/soteria/app-caller-principal/pom.xml
index f9f3450..c56687c 100644
--- a/appserver/tests/appserv-tests/devtests/security/soteria/app-caller-principal/pom.xml
+++ b/appserver/tests/appserv-tests/devtests/security/soteria/app-caller-principal/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.glassfish.soteria.test</groupId>
         <artifactId>soteria</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>app-caller-principal</artifactId>
diff --git a/appserver/tests/appserv-tests/devtests/security/soteria/app-custom-identity-store-handler/pom.xml b/appserver/tests/appserv-tests/devtests/security/soteria/app-custom-identity-store-handler/pom.xml
index 557f179..0815c79 100644
--- a/appserver/tests/appserv-tests/devtests/security/soteria/app-custom-identity-store-handler/pom.xml
+++ b/appserver/tests/appserv-tests/devtests/security/soteria/app-custom-identity-store-handler/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.glassfish.soteria.test</groupId>
         <artifactId>soteria</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>app-custom-identity-store-handler</artifactId>
diff --git a/appserver/tests/appserv-tests/devtests/security/soteria/app-custom-rememberme/pom.xml b/appserver/tests/appserv-tests/devtests/security/soteria/app-custom-rememberme/pom.xml
index ad5f7ba..26f62da 100644
--- a/appserver/tests/appserv-tests/devtests/security/soteria/app-custom-rememberme/pom.xml
+++ b/appserver/tests/appserv-tests/devtests/security/soteria/app-custom-rememberme/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.glassfish.soteria.test</groupId>
         <artifactId>soteria</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>app-custom-rememberme</artifactId>
diff --git a/appserver/tests/appserv-tests/devtests/security/soteria/app-custom-session/pom.xml b/appserver/tests/appserv-tests/devtests/security/soteria/app-custom-session/pom.xml
index 4ce035c..e159522 100644
--- a/appserver/tests/appserv-tests/devtests/security/soteria/app-custom-session/pom.xml
+++ b/appserver/tests/appserv-tests/devtests/security/soteria/app-custom-session/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.glassfish.soteria.test</groupId>
         <artifactId>soteria</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>app-custom-session</artifactId>
diff --git a/appserver/tests/appserv-tests/devtests/security/soteria/app-custom/pom.xml b/appserver/tests/appserv-tests/devtests/security/soteria/app-custom/pom.xml
index d85a476..b6fefaa 100644
--- a/appserver/tests/appserv-tests/devtests/security/soteria/app-custom/pom.xml
+++ b/appserver/tests/appserv-tests/devtests/security/soteria/app-custom/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.glassfish.soteria.test</groupId>
         <artifactId>soteria</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>app-custom</artifactId>
diff --git a/appserver/tests/appserv-tests/devtests/security/soteria/app-db/pom.xml b/appserver/tests/appserv-tests/devtests/security/soteria/app-db/pom.xml
index f10e03b..9ba40e8 100644
--- a/appserver/tests/appserv-tests/devtests/security/soteria/app-db/pom.xml
+++ b/appserver/tests/appserv-tests/devtests/security/soteria/app-db/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.glassfish.soteria.test</groupId>
     <artifactId>soteria</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
   </parent>
 
         <artifactId>app-db</artifactId>
@@ -40,7 +40,7 @@
     <dependency>
       <groupId>org.glassfish.soteria.test</groupId>
       <artifactId>common</artifactId>
-      <version>6.2.6-SNAPSHOT</version>
+      <version>7.0.0-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/appserver/tests/appserv-tests/devtests/security/soteria/app-double-ham/pom.xml b/appserver/tests/appserv-tests/devtests/security/soteria/app-double-ham/pom.xml
index 6f49151..e157f66 100644
--- a/appserver/tests/appserv-tests/devtests/security/soteria/app-double-ham/pom.xml
+++ b/appserver/tests/appserv-tests/devtests/security/soteria/app-double-ham/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.glassfish.soteria.test</groupId>
     <artifactId>soteria</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
   </parent>
 
         <artifactId>app-double-ham</artifactId>
@@ -40,7 +40,7 @@
         <dependency>
             <groupId>org.glassfish.soteria.test</groupId>
             <artifactId>common</artifactId>
-            <version>6.2.6-SNAPSHOT</version>
+            <version>7.0.0-SNAPSHOT</version>
             <scope>test</scope>
         </dependency>
     </dependencies>
diff --git a/appserver/tests/appserv-tests/devtests/security/soteria/app-ham-ordering/pom.xml b/appserver/tests/appserv-tests/devtests/security/soteria/app-ham-ordering/pom.xml
index a344289..6c106a5 100644
--- a/appserver/tests/appserv-tests/devtests/security/soteria/app-ham-ordering/pom.xml
+++ b/appserver/tests/appserv-tests/devtests/security/soteria/app-ham-ordering/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.glassfish.soteria.test</groupId>
     <artifactId>soteria</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
   </parent>
 
         <artifactId>app-ham-ordering</artifactId>
@@ -40,7 +40,7 @@
     <dependency>
       <groupId>org.glassfish.soteria.test</groupId>
       <artifactId>common</artifactId>
-      <version>6.2.6-SNAPSHOT</version>
+      <version>7.0.0-SNAPSHOT</version>
       <scope>test</scope>
       </dependency>
   </dependencies>
diff --git a/appserver/tests/appserv-tests/devtests/security/soteria/app-mem-basic/pom.xml b/appserver/tests/appserv-tests/devtests/security/soteria/app-mem-basic/pom.xml
index 0245a9f..4207451 100644
--- a/appserver/tests/appserv-tests/devtests/security/soteria/app-mem-basic/pom.xml
+++ b/appserver/tests/appserv-tests/devtests/security/soteria/app-mem-basic/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.soteria.test</groupId>
         <artifactId>soteria</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>app-mem-basic</artifactId>
@@ -41,7 +41,7 @@
         <dependency>
             <groupId>org.glassfish.soteria.test</groupId>
             <artifactId>common</artifactId>
-            <version>6.2.6-SNAPSHOT</version>
+            <version>7.0.0-SNAPSHOT</version>
             <scope>test</scope>
         </dependency>
     </dependencies>
diff --git a/appserver/tests/appserv-tests/devtests/security/soteria/app-mem-form/pom.xml b/appserver/tests/appserv-tests/devtests/security/soteria/app-mem-form/pom.xml
index 35321b7..6fb0fdc 100644
--- a/appserver/tests/appserv-tests/devtests/security/soteria/app-mem-form/pom.xml
+++ b/appserver/tests/appserv-tests/devtests/security/soteria/app-mem-form/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.glassfish.soteria.test</groupId>
     <artifactId>soteria</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
   </parent>
 
         <artifactId>app-mem-form</artifactId>
@@ -40,7 +40,7 @@
         <dependency>
             <groupId>org.glassfish.soteria.test</groupId>
             <artifactId>common</artifactId>
-            <version>6.2.6-SNAPSHOT</version>
+            <version>7.0.0-SNAPSHOT</version>
             <scope>test</scope>
         </dependency>
     </dependencies>
diff --git a/appserver/tests/appserv-tests/devtests/security/soteria/app-multiple-store-backup/pom.xml b/appserver/tests/appserv-tests/devtests/security/soteria/app-multiple-store-backup/pom.xml
index 4e77b7b..bd10de2 100644
--- a/appserver/tests/appserv-tests/devtests/security/soteria/app-multiple-store-backup/pom.xml
+++ b/appserver/tests/appserv-tests/devtests/security/soteria/app-multiple-store-backup/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.glassfish.soteria.test</groupId>
     <artifactId>soteria</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
   </parent>
 
         <artifactId>app-multiple-store-backup</artifactId>
@@ -40,7 +40,7 @@
         <dependency>
             <groupId>org.glassfish.soteria.test</groupId>
             <artifactId>common</artifactId>
-            <version>6.2.6-SNAPSHOT</version>
+            <version>7.0.0-SNAPSHOT</version>
             <scope>test</scope>
         </dependency>
     </dependencies>
diff --git a/appserver/tests/appserv-tests/devtests/security/soteria/app-multiple-store/pom.xml b/appserver/tests/appserv-tests/devtests/security/soteria/app-multiple-store/pom.xml
index d99d57a..97f26f4 100644
--- a/appserver/tests/appserv-tests/devtests/security/soteria/app-multiple-store/pom.xml
+++ b/appserver/tests/appserv-tests/devtests/security/soteria/app-multiple-store/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.glassfish.soteria.test</groupId>
     <artifactId>soteria</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
   </parent>
 
         <artifactId>app-multiple-store</artifactId>
@@ -40,7 +40,7 @@
     <dependency>
       <groupId>org.glassfish.soteria.test</groupId>
       <artifactId>common</artifactId>
-      <version>6.2.6-SNAPSHOT</version>
+      <version>7.0.0-SNAPSHOT</version>
       <scope>test</scope>
       </dependency>
   </dependencies>
diff --git a/appserver/tests/appserv-tests/devtests/security/soteria/app-no-application-caller-principal/pom.xml b/appserver/tests/appserv-tests/devtests/security/soteria/app-no-application-caller-principal/pom.xml
index abda6da..d4f447d 100644
--- a/appserver/tests/appserv-tests/devtests/security/soteria/app-no-application-caller-principal/pom.xml
+++ b/appserver/tests/appserv-tests/devtests/security/soteria/app-no-application-caller-principal/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.glassfish.soteria.test</groupId>
     <artifactId>soteria</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
   </parent>
 
         <artifactId>app-no-application-caller-principal</artifactId>
@@ -39,7 +39,7 @@
     <dependency>
       <groupId>org.glassfish.soteria.test</groupId>
       <artifactId>common</artifactId>
-      <version>6.2.6-SNAPSHOT</version>
+      <version>7.0.0-SNAPSHOT</version>
       <scope>test</scope>
       </dependency>
   </dependencies>
diff --git a/appserver/tests/appserv-tests/devtests/security/soteria/app-no-role-mapping/pom.xml b/appserver/tests/appserv-tests/devtests/security/soteria/app-no-role-mapping/pom.xml
index ccf1c2b..2ea7164 100644
--- a/appserver/tests/appserv-tests/devtests/security/soteria/app-no-role-mapping/pom.xml
+++ b/appserver/tests/appserv-tests/devtests/security/soteria/app-no-role-mapping/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.soteria.test</groupId>
         <artifactId>soteria</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>app-no-role-mapping</artifactId>
@@ -42,7 +42,7 @@
         <dependency>
             <groupId>org.glassfish.soteria.test</groupId>
             <artifactId>common</artifactId>
-            <version>6.2.6-SNAPSHOT</version>
+            <version>7.0.0-SNAPSHOT</version>
             <scope>test</scope>
         </dependency>
     </dependencies>
diff --git a/appserver/tests/appserv-tests/devtests/security/soteria/app-securitycontext-auth-ejb/pom.xml b/appserver/tests/appserv-tests/devtests/security/soteria/app-securitycontext-auth-ejb/pom.xml
index a7518de..b70196e 100644
--- a/appserver/tests/appserv-tests/devtests/security/soteria/app-securitycontext-auth-ejb/pom.xml
+++ b/appserver/tests/appserv-tests/devtests/security/soteria/app-securitycontext-auth-ejb/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.soteria.test</groupId>
         <artifactId>soteria</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
         <artifactId>app-securitycontext-auth-ejb</artifactId>
@@ -41,7 +41,7 @@
         <dependency>
             <groupId>org.glassfish.soteria.test</groupId>
             <artifactId>common</artifactId>
-            <version>6.2.6-SNAPSHOT</version>
+            <version>7.0.0-SNAPSHOT</version>
             <scope>test</scope>
         </dependency>
     </dependencies>
diff --git a/appserver/tests/appserv-tests/devtests/security/soteria/app-securitycontext-auth/pom.xml b/appserver/tests/appserv-tests/devtests/security/soteria/app-securitycontext-auth/pom.xml
index 120a9f0..628ac42 100644
--- a/appserver/tests/appserv-tests/devtests/security/soteria/app-securitycontext-auth/pom.xml
+++ b/appserver/tests/appserv-tests/devtests/security/soteria/app-securitycontext-auth/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.soteria.test</groupId>
         <artifactId>soteria</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
         <artifactId>app-securitycontext-auth</artifactId>
@@ -41,7 +41,7 @@
         <dependency>
             <groupId>org.glassfish.soteria.test</groupId>
             <artifactId>common</artifactId>
-            <version>6.2.6-SNAPSHOT</version>
+            <version>7.0.0-SNAPSHOT</version>
             <scope>test</scope>
         </dependency>
     </dependencies>
diff --git a/appserver/tests/appserv-tests/devtests/security/soteria/common/pom.xml b/appserver/tests/appserv-tests/devtests/security/soteria/common/pom.xml
index eafc6df..83fbed0 100644
--- a/appserver/tests/appserv-tests/devtests/security/soteria/common/pom.xml
+++ b/appserver/tests/appserv-tests/devtests/security/soteria/common/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.soteria.test</groupId>
         <artifactId>soteria</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>common</artifactId>
diff --git a/appserver/tests/appserv-tests/devtests/security/soteria/pom.xml b/appserver/tests/appserv-tests/devtests/security/soteria/pom.xml
index 56512ed..52fdaf1 100644
--- a/appserver/tests/appserv-tests/devtests/security/soteria/pom.xml
+++ b/appserver/tests/appserv-tests/devtests/security/soteria/pom.xml
@@ -21,7 +21,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.soteria.test</groupId>
     <artifactId>soteria</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>Soteria ${project.version} Integration tests and examples</name>
diff --git a/appserver/tests/appserv-tests/devtests/transaction/ee/dblogs/base/readme b/appserver/tests/appserv-tests/devtests/transaction/ee/dblogs/base/readme
index 6fdbb3d..b5dec3b 100644
--- a/appserver/tests/appserv-tests/devtests/transaction/ee/dblogs/base/readme
+++ b/appserver/tests/appserv-tests/devtests/transaction/ee/dblogs/base/readme
@@ -25,7 +25,7 @@
 
 Note: how to look at the log table:
 % asadmin stop-database
-% java -cp <gf-install>/javadb/lib/derbytools.jar:<gf-install>/javadb/lib/derbyclient.jar:<gf-install>/gfs/glassfish6/javadb/lib/derby.jar org.apache.derby.impl.tools.ij.Main
+% java -cp <gf-install>/javadb/lib/derbytools.jar:<gf-install>/javadb/lib/derbyclient.jar:<gf-install>/gfs/glassfish7/javadb/lib/derby.jar org.apache.derby.impl.tools.ij.Main
 ij version 10.8
 ij> connect 'jdbc:derby:<gf-install>/glassfish/databases/testdb';
 ij> show tables in dbuser;
diff --git a/appserver/tests/appserv-tests/devtests/web/README_Embedded.txt b/appserver/tests/appserv-tests/devtests/web/README_Embedded.txt
index d206d9c..d6d2353 100644
--- a/appserver/tests/appserv-tests/devtests/web/README_Embedded.txt
+++ b/appserver/tests/appserv-tests/devtests/web/README_Embedded.txt
@@ -1,6 +1,6 @@
 export APS_HOME=<Your-Workspace>/v2/appserv-tests
 
-export S1AS_HOME=<installed-glassfish> (eg.,, /tmp/glassfish6/glassfish)
+export S1AS_HOME=<installed-glassfish> (eg.,, /tmp/glassfish7/glassfish)
 
 export ANT_OPTS="-Xss128k -Xmx2048m -XX:MaxPermSize=256m"
 
diff --git a/appserver/tests/appserv-tests/devtests/web/build.xml b/appserver/tests/appserv-tests/devtests/web/build.xml
index d391f8f..e64fceb 100644
--- a/appserver/tests/appserv-tests/devtests/web/build.xml
+++ b/appserver/tests/appserv-tests/devtests/web/build.xml
@@ -37,89 +37,94 @@
     <property name="xmlfile" value="${env.APS_HOME}/test_resultsValid.xml" />
     <property name="htmlfile" value="${env.APS_HOME}/test_results.html" />
 
-    <target name="jsp" depends="init-report">
-        <ant dir="emptyServletPathJspInclude" target="all"/>
-        <ant dir="jsp-security" target="all"/>
-        <ant dir="jspAllowErrorPageToSetResponseCharsetIfNoOutputWritten" target="all"/>
-        <ant dir="jspAnonymousClass" target="all"/>
-        <ant dir="jspAttributeNameWithColonOrDot" target="all"/>
-        <ant dir="jspBomInClassicSyntax" target="all"/>
-        <ant dir="jspBomInClassicSyntaxEncodingMismatchJspConfig" target="all"/>
-        <ant dir="jspBomInClassicSyntaxEncodingMismatchPageDir" target="all"/>
-        <ant dir="jspCacheTaglibPrecompile" target="all"/>
-        <ant dir="jspCachingInstanceLevel" target="all"/>
-        <ant dir="jspCallingELFuctionFromTagfileWithinSameTaglibInfiniteRecursion" target="all"/>
-        <ant dir="jspCommentedOutPageDirective" target="all"/>
-        <ant dir="jspCommentedOutPageDirective1" target="all"/>
-        <ant dir="jspConfigBuffer" target="all"/>
-        <ant dir="jspConfigDefaultContentType" target="all"/>
-        <ant dir="jspConfigGetServletPath" target="all"/>
-        <ant dir="jspConfigIncludeChain" target="all"/>
-        <ant dir="jspConfigJavacSource" target="build-publish-war"/>
-        <ant dir="jspConfigJspFile" target="all"/>
-        <ant dir="jspConfigModificationTestInterval" target="all"/>
-        <ant dir="jspConfigUndeclaredNS" target="all"/>
-        <ant dir="jspConfigUsePrecompiled" target="all"/>
-        <ant dir="jspConfigUsePrecompiled2" target="all"/>
-        <ant dir="jspConfigWelcomeFiles" target="all"/>
-        <ant dir="jspCustomTagAttributeOfArrayType" target="all"/>
-        <ant dir="jspCustomTaglibBundledAsJar" target="all"/>
-        <ant dir="jspCustomTaglibJarInsideEarWithManifestClassPath" target="all"/>
-        <ant dir="jspCustomTaglibJarInsideEarWithoutManifestClassPath" target="all"/>
-        <ant dir="jspELEnum" target="all"/>
-        <ant dir="jspErrorPageClassCastException" target="all"/>
-        <ant dir="jspErrorPageServletErrorException" target="all"/>
-        <ant dir="jspErrorPageStatusCode" target="all"/>
-        <ant dir="jspExceptionInTagBodyRestoreJspWriter" target="all"/>
-        <ant dir="jspForwardPreserveApplicationResponseWrapper" target="all"/>
-        <ant dir="jspForwardUnbuffered" target="all"/>
-        <ant dir="jspGetTagLibraryInfos" target="all"/>
-        <ant dir="jspInWebappWithBundledXercesImpl" target="all"/>
-        <ant dir="jspIncludeResourceNameWithPlusChar" target="all"/>
-        <ant dir="jspIncludedWelcomePage" target="all"/>
-        <ant dir="jspNestedScriptingTagExtraInfo" target="all"/>
-        <ant dir="jspNullFragment" target="all"/>
-        <ant dir="jspPoundSyntax" target="all"/>
-        <ant dir="jspPrecompileConsiderDomainLibJarFilesAndClasses" target="all"/>
-        <ant dir="jspPrecompileDeployDashDashLibraries" target="all"/>
-        <ant dir="jspPrecompileIgnoreFragmentErrors" target="all"/>
-        <ant dir="jspReloadGeneratedServletIfUpdated" target="all"/>
-        <ant dir="jspResourceInjectionContextListener" target="all"/>
-        <ant dir="jspResourceInjectionSimpleTagHandler" target="all"/>
-        <ant dir="jspResourceInjectionTagHandler" target="all"/>
-        <ant dir="jspResourceInjectionTagHandlerPoolingDisabled" target="all"/>
-        <ant dir="jspRuntimeCompileConsiderDomainLibJarFilesAndClasses" target="all"/>
-        <ant dir="jspRuntimeDeployDashDashLibraries" target="all"/>
-        <ant dir="jspScriptlessTagBodyJspDocument" target="all"/>
-        <ant dir="jspScriptletAfterScriptlessTag" target="all"/>
-        <ant dir="jspScriptletDeclNestedInCustomAction" target="all"/>
-        <ant dir="jspScriptletSyntaxErrorCorrectErrorMessage" target="all"/>
-        <ant dir="jspSelfReferencingErrorPage" target="all"/>
-        <ant dir="jspSelfReferencingErrorPageWithRelativePath" target="all"/>
-        <ant dir="jspServletOverride" target="all"/>
-        <ant dir="jspSessionInvalidated" target="all"/>
-        <ant dir="jspSimpleTagAnnotation" target="all"/>
-        <ant dir="jspStaticFileEncoding" target="all"/>
-        <ant dir="jspTagFileBomEncodingMismatchTagDir" target="all"/>
-        <ant dir="jspTagHandlerPostConstructElement" target="all"/>
-        <ant dir="jspTagHandlerPreDestroyAnnotation" target="all"/>
-        <ant dir="jspTagHandlerPreDestroyAnnotation" target="all"/>
-        <ant dir="jspTagLibraryValidatorXMLViewStaticInclude" target="all"/>
-        <ant dir="jspTagReleaseCalledWhenPoolingDisabled" target="all"/>
-        <ant dir="jspTagReleaseCalledWhenPoolingEnabled" target="all"/>
-        <ant dir="jspTagdependentXml" target="all"/>
-        <ant dir="jspTemplateTextEscapedEL" target="all"/>
-        <ant dir="jspThrowsFileNotFoundExpect500ResponseCode" target="all"/>
-        <ant dir="jspTrimDirectiveWhitespaces" target="all"/>
-        <ant dir="jspUrnJspTldWithoutUri" target="all"/>
-        <ant dir="jspUseBean" target="all"/>
-        <ant dir="jspWelcomePageWithoutAnyServletMappings" target="all"/>
-        <ant dir="jspXpoweredByDisabled" target="all"/>
-        <ant dir="jspXpoweredBySingleResponseHeader" target="all"/>
-        <ant dir="jspcConfigure" target="all"/>
-        <ant dir="jspconfig" target="all"/>
-        <ant dir="welcomePageSecurityConstraintExactMatch" target="all"/>
-        <ant dir="welcomePageSecurityConstraintJspExtension" target="all"/>
+    <target name="jsp" depends="init-report" xmlns:if="ant:if" xmlns:unless="ant:unless">
+
+        <echo message="@@## Running WEB JSP developer tests ##@@" />
+        <echo unless:set="env.web" message="@@## Set environment variable 'web' to name of single test dir to run only that one. ##@@${line.separator}" />
+        <echo if:set="env.web" message="@@## environment variable 'web' set. Running only ${env.web}  ##@@${line.separator}" />
+        
+        <run-web-test path="emptyServletPathJspInclude" />
+        <run-web-test path="jsp-security" />
+        <run-web-test path="jspAllowErrorPageToSetResponseCharsetIfNoOutputWritten" />
+        <run-web-test path="jspAnonymousClass" />
+        <run-web-test path="jspAttributeNameWithColonOrDot" />
+        <run-web-test path="jspBomInClassicSyntax" />
+        <run-web-test path="jspBomInClassicSyntaxEncodingMismatchJspConfig" />
+        <run-web-test path="jspBomInClassicSyntaxEncodingMismatchPageDir" />
+        <run-web-test path="jspCacheTaglibPrecompile" />
+        <run-web-test path="jspCachingInstanceLevel" />
+        <run-web-test path="jspCallingELFuctionFromTagfileWithinSameTaglibInfiniteRecursion" />
+        <run-web-test path="jspCommentedOutPageDirective" />
+        <run-web-test path="jspCommentedOutPageDirective1" />
+        <run-web-test path="jspConfigBuffer" />
+        <run-web-test path="jspConfigDefaultContentType" />
+        <run-web-test path="jspConfigGetServletPath" />
+        <run-web-test path="jspConfigIncludeChain" />
+        <run-web-test path="jspConfigJavacSource" target="build-publish-war"/>
+        <run-web-test path="jspConfigJspFile" />
+        <run-web-test path="jspConfigModificationTestInterval" />
+        <run-web-test path="jspConfigUndeclaredNS" />
+        <run-web-test path="jspConfigUsePrecompiled" />
+        <run-web-test path="jspConfigUsePrecompiled2" />
+        <run-web-test path="jspConfigWelcomeFiles" />
+        <run-web-test path="jspCustomTagAttributeOfArrayType" />
+        <run-web-test path="jspCustomTaglibBundledAsJar" />
+        <run-web-test path="jspCustomTaglibJarInsideEarWithManifestClassPath" />
+        <run-web-test path="jspCustomTaglibJarInsideEarWithoutManifestClassPath" />
+        <run-web-test path="jspELEnum" />
+        <run-web-test path="jspErrorPageClassCastException" />
+        <run-web-test path="jspErrorPageServletErrorException" />
+        <run-web-test path="jspErrorPageStatusCode" />
+        <run-web-test path="jspExceptionInTagBodyRestoreJspWriter" />
+        <run-web-test path="jspForwardPreserveApplicationResponseWrapper" />
+        <run-web-test path="jspForwardUnbuffered" />
+        <run-web-test path="jspGetTagLibraryInfos" />
+        <run-web-test path="jspInWebappWithBundledXercesImpl" />
+        <run-web-test path="jspIncludeResourceNameWithPlusChar" />
+        <run-web-test path="jspIncludedWelcomePage" />
+        <run-web-test path="jspNestedScriptingTagExtraInfo" />
+        <run-web-test path="jspNullFragment" />
+        <run-web-test path="jspPoundSyntax" />
+        <run-web-test path="jspPrecompileConsiderDomainLibJarFilesAndClasses" />
+        <run-web-test path="jspPrecompileDeployDashDashLibraries" />
+        <run-web-test path="jspPrecompileIgnoreFragmentErrors" />
+        <run-web-test path="jspReloadGeneratedServletIfUpdated" />
+        <run-web-test path="jspResourceInjectionContextListener" />
+        <run-web-test path="jspResourceInjectionSimpleTagHandler" />
+        <run-web-test path="jspResourceInjectionTagHandler" />
+        <run-web-test path="jspResourceInjectionTagHandlerPoolingDisabled" />
+        <run-web-test path="jspRuntimeCompileConsiderDomainLibJarFilesAndClasses" />
+        <run-web-test path="jspRuntimeDeployDashDashLibraries" />
+        <run-web-test path="jspScriptlessTagBodyJspDocument" />
+        <run-web-test path="jspScriptletAfterScriptlessTag" />
+        <run-web-test path="jspScriptletDeclNestedInCustomAction" />
+        <run-web-test path="jspScriptletSyntaxErrorCorrectErrorMessage" />
+        <run-web-test path="jspSelfReferencingErrorPage" />
+        <run-web-test path="jspSelfReferencingErrorPageWithRelativePath" />
+        <run-web-test path="jspServletOverride" />
+        <run-web-test path="jspSessionInvalidated" />
+        <run-web-test path="jspSimpleTagAnnotation" />
+        <run-web-test path="jspStaticFileEncoding" />
+        <run-web-test path="jspTagFileBomEncodingMismatchTagDir" />
+        <run-web-test path="jspTagHandlerPostConstructElement" />
+        <run-web-test path="jspTagHandlerPreDestroyAnnotation" />
+        <run-web-test path="jspTagHandlerPreDestroyAnnotation" />
+        <run-web-test path="jspTagLibraryValidatorXMLViewStaticInclude" />
+        <run-web-test path="jspTagReleaseCalledWhenPoolingDisabled" />
+        <run-web-test path="jspTagReleaseCalledWhenPoolingEnabled" />
+        <run-web-test path="jspTagdependentXml" />
+        <run-web-test path="jspTemplateTextEscapedEL" />
+        <run-web-test path="jspThrowsFileNotFoundExpect500ResponseCode" />
+        <run-web-test path="jspTrimDirectiveWhitespaces" />
+        <run-web-test path="jspUrnJspTldWithoutUri" />
+        <run-web-test path="jspUseBean" />
+        <run-web-test path="jspWelcomePageWithoutAnyServletMappings" />
+        <run-web-test path="jspXpoweredByDisabled" />
+        <run-web-test path="jspXpoweredBySingleResponseHeader" />
+        <run-web-test path="jspcConfigure" />
+        <run-web-test path="jspconfig" />
+        <run-web-test path="welcomePageSecurityConstraintExactMatch" />
+        <run-web-test path="welcomePageSecurityConstraintJspExtension" />
     </target>
 
     <target name="taglib" depends="init-report">
@@ -583,6 +588,7 @@
     </target>
 
     <target name="init-report" unless="report.inited">
+        <property environment="env" />
         <property name="report.inited" value="true"/>
         <record name="web.output" action="start" />
         <antcall target="startDomain"/>
@@ -627,4 +633,32 @@
     <target name="usage">
         <echo>Usage: ant web (Executes the web tests)</echo>
     </target>
+    
+    <macrodef name="run-web-test" xmlns:if="ant:if" xmlns:unless="ant:unless">
+            <attribute name="path" />
+            <attribute name="target" default="all"/>
+            <sequential>
+                <local name="do-run-test" />
+                <condition property="do-run-test" else="false">
+                    <or>
+                        <equals arg1="${env.web}" arg2="@{path}" />
+                        <not>
+                            <isset property="env.web" />
+                        </not>
+                    </or>
+                </condition>
+
+                <sequential if:true="${do-run-test}">
+                    <local name="absolute.path" />
+                    <property name="absolute.path" location="@{path}" />
+                    <echo message="${line.separator}" />
+                    <echo message=" *************************" />
+                    <echo message=" * Running @{path} " />
+                    <echo message=" * Path: ${absolute.path} " />
+                    <echo message=" *************************" />
+                    <echo message="${line.separator}" />
+                    <ant dir="@{path}" target="@{target}" />
+                </sequential>
+            </sequential>
+        </macrodef>
 </project>
diff --git a/appserver/tests/appserv-tests/devtests/web/defaultCharset/docroot/jsp/getRequestCharset.jsp b/appserver/tests/appserv-tests/devtests/web/defaultCharset/docroot/jsp/getRequestCharset.jsp
index 06d8f0c..552b811 100644
--- a/appserver/tests/appserv-tests/devtests/web/defaultCharset/docroot/jsp/getRequestCharset.jsp
+++ b/appserver/tests/appserv-tests/devtests/web/defaultCharset/docroot/jsp/getRequestCharset.jsp
@@ -16,7 +16,7 @@
 
 --%>
 
-<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="c" uri="jakarta.tags.core" %>
 
 ${pageContext.request.reader}
 
diff --git a/appserver/tests/appserv-tests/devtests/web/elBigDecimal/build.xml b/appserver/tests/appserv-tests/devtests/web/elBigDecimal/build.xml
index 9e417d4..233a34f 100644
--- a/appserver/tests/appserv-tests/devtests/web/elBigDecimal/build.xml
+++ b/appserver/tests/appserv-tests/devtests/web/elBigDecimal/build.xml
@@ -37,7 +37,7 @@
     <target name="compile">
         <javac
             srcdir="."
-            classpath="${env.APS_HOME}/lib/reportbuilder.jar;${env.S1AS_HOME}/modules/jakarta.el.jar;${env.S1AS_HOME}/modules/jakarta.el-api.jar"
+            classpath="${env.APS_HOME}/lib/reportbuilder.jar;${env.S1AS_HOME}/modules/expressly.jar;${env.S1AS_HOME}/modules/jakarta.el-api.jar"
             includes="WebTest.java"/>
 
     </target>
@@ -46,7 +46,7 @@
         <java classname="WebTest" fork="true">
           <classpath>
            <pathelement location="${env.APS_HOME}/lib/reportbuilder.jar"/>
-           <pathelement location="${env.S1AS_HOME}/modules/jakarta.el.jar"/>
+           <pathelement location="${env.S1AS_HOME}/modules/expressly.jar"/>
            <pathelement location="${env.S1AS_HOME}/modules/jakarta.el-api.jar"/>
            <pathelement location="."/>
          </classpath>
diff --git a/appserver/tests/appserv-tests/devtests/web/emptyServletPathJspInclude/descriptor/web.xml b/appserver/tests/appserv-tests/devtests/web/emptyServletPathJspInclude/descriptor/web.xml
index 2ec5a55..37ebfbd 100644
--- a/appserver/tests/appserv-tests/devtests/web/emptyServletPathJspInclude/descriptor/web.xml
+++ b/appserver/tests/appserv-tests/devtests/web/emptyServletPathJspInclude/descriptor/web.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
 <!--
 
+	Copyright (c) 2021 Contributors to Eclipse Foundation.
     Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
@@ -29,7 +30,7 @@
 
   <servlet>
     <servlet-name>jspservlet</servlet-name>
-    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
+    <servlet-class>org.glassfish.wasp.servlet.JspServlet</servlet-class>
     <init-param>
       <param-name>xpoweredBy</param-name>
       <param-value>true</param-value>
diff --git a/appserver/tests/appserv-tests/devtests/web/formHintField/docroot/jsp/formHintField.jsp b/appserver/tests/appserv-tests/devtests/web/formHintField/docroot/jsp/formHintField.jsp
index 06d8f0c..552b811 100644
--- a/appserver/tests/appserv-tests/devtests/web/formHintField/docroot/jsp/formHintField.jsp
+++ b/appserver/tests/appserv-tests/devtests/web/formHintField/docroot/jsp/formHintField.jsp
@@ -16,7 +16,7 @@
 
 --%>
 
-<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="c" uri="jakarta.tags.core" %>
 
 ${pageContext.request.reader}
 
diff --git a/appserver/tests/appserv-tests/devtests/web/formHintFieldPrecedence/docroot/jsp/formHintField.jsp b/appserver/tests/appserv-tests/devtests/web/formHintFieldPrecedence/docroot/jsp/formHintField.jsp
index 06d8f0c..552b811 100644
--- a/appserver/tests/appserv-tests/devtests/web/formHintFieldPrecedence/docroot/jsp/formHintField.jsp
+++ b/appserver/tests/appserv-tests/devtests/web/formHintFieldPrecedence/docroot/jsp/formHintField.jsp
@@ -16,7 +16,7 @@
 
 --%>
 
-<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="c" uri="jakarta.tags.core" %>
 
 ${pageContext.request.reader}
 
diff --git a/appserver/tests/appserv-tests/devtests/web/ha/cluster-tests/simple-failover-modified-attribute/src/main/java/com/acme/HttpClient.java b/appserver/tests/appserv-tests/devtests/web/ha/cluster-tests/simple-failover-modified-attribute/src/main/java/com/acme/HttpClient.java
index 51b10c8..455a6f5 100644
--- a/appserver/tests/appserv-tests/devtests/web/ha/cluster-tests/simple-failover-modified-attribute/src/main/java/com/acme/HttpClient.java
+++ b/appserver/tests/appserv-tests/devtests/web/ha/cluster-tests/simple-failover-modified-attribute/src/main/java/com/acme/HttpClient.java
@@ -22,7 +22,7 @@
 
 public class HttpClient {
 
-    private static final String ASADMIN = "/home/rajiv/Software/glassfish6/glassfish/bin/asadmin";
+    private static final String ASADMIN = "/home/rajiv/Software/glassfish7/glassfish/bin/asadmin";
     private static String appName = "SFSBModifiedAttribute";
     private static String servletName = "SFSBDriverServlet";
 
diff --git a/appserver/tests/appserv-tests/devtests/web/ha/cluster-tests/simple-failover-modified-session/src/main/java/com/acme/HttpClient.java b/appserver/tests/appserv-tests/devtests/web/ha/cluster-tests/simple-failover-modified-session/src/main/java/com/acme/HttpClient.java
index feed93f..b7acdda 100644
--- a/appserver/tests/appserv-tests/devtests/web/ha/cluster-tests/simple-failover-modified-session/src/main/java/com/acme/HttpClient.java
+++ b/appserver/tests/appserv-tests/devtests/web/ha/cluster-tests/simple-failover-modified-session/src/main/java/com/acme/HttpClient.java
@@ -22,7 +22,7 @@
 
 public class HttpClient {
 
-    private static final String ASADMIN = "/home/rajiv/Software/glassfish6/glassfish/bin/asadmin";
+    private static final String ASADMIN = "/home/rajiv/Software/glassfish7/glassfish/bin/asadmin";
     private static String appName = "SFSBModifiedSession";
     private static String servletName = "SFSBDriverServlet";
 
diff --git a/appserver/tests/appserv-tests/devtests/web/jspConfigUsePrecompiled/servlet/org/apache/jsp/jsp/test_jsp.java b/appserver/tests/appserv-tests/devtests/web/jspConfigUsePrecompiled/servlet/org/apache/jsp/jsp/test_jsp.java
index 3d84740..5e5333a 100644
--- a/appserver/tests/appserv-tests/devtests/web/jspConfigUsePrecompiled/servlet/org/apache/jsp/jsp/test_jsp.java
+++ b/appserver/tests/appserv-tests/devtests/web/jspConfigUsePrecompiled/servlet/org/apache/jsp/jsp/test_jsp.java
@@ -20,51 +20,49 @@
 import jakarta.servlet.http.*;
 import jakarta.servlet.jsp.*;
 
-public final class test_jsp extends org.apache.jasper.runtime.HttpJspBase
-    implements org.apache.jasper.runtime.JspSourceDependent {
+public final class test_jsp extends org.glassfish.wasp.runtime.HttpJspBase implements org.glassfish.wasp.runtime.JspSourceDependent {
 
-  private static java.util.Vector _jspx_dependants;
+    private static java.util.Vector _jspx_dependants;
 
-  public java.util.List getDependants() {
-    return _jspx_dependants;
-  }
-
-  public void _jspService(HttpServletRequest request, HttpServletResponse response)
-        throws java.io.IOException, ServletException {
-
-    JspFactory _jspxFactory = null;
-    PageContext pageContext = null;
-    HttpSession session = null;
-    ServletContext application = null;
-    ServletConfig config = null;
-    JspWriter out = null;
-    Object page = this;
-    JspWriter _jspx_out = null;
-    PageContext _jspx_page_context = null;
-
-
-    try {
-      _jspxFactory = JspFactory.getDefaultFactory();
-      response.setContentType("text/html");
-      pageContext = _jspxFactory.getPageContext(this, request, response,
-                              null, true, 8192, true);
-      _jspx_page_context = pageContext;
-      application = pageContext.getServletContext();
-      config = pageContext.getServletConfig();
-      session = pageContext.getSession();
-      out = pageContext.getOut();
-      _jspx_out = out;
-
-      out.write("this is the precompiled and bundled jsp\n");
-    } catch (Throwable t) {
-      if (!(t instanceof SkipPageException)){
-        out = _jspx_out;
-        if (out != null && out.getBufferSize() != 0)
-          out.clearBuffer();
-        if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
-      }
-    } finally {
-      if (_jspxFactory != null) _jspxFactory.releasePageContext(_jspx_page_context);
+    public java.util.List getDependants() {
+        return _jspx_dependants;
     }
-  }
+
+    public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException {
+
+        JspFactory _jspxFactory = null;
+        PageContext pageContext = null;
+        HttpSession session = null;
+        ServletContext application = null;
+        ServletConfig config = null;
+        JspWriter out = null;
+        Object page = this;
+        JspWriter _jspx_out = null;
+        PageContext _jspx_page_context = null;
+
+        try {
+            _jspxFactory = JspFactory.getDefaultFactory();
+            response.setContentType("text/html");
+            pageContext = _jspxFactory.getPageContext(this, request, response, null, true, 8192, true);
+            _jspx_page_context = pageContext;
+            application = pageContext.getServletContext();
+            config = pageContext.getServletConfig();
+            session = pageContext.getSession();
+            out = pageContext.getOut();
+            _jspx_out = out;
+
+            out.write("this is the precompiled and bundled jsp\n");
+        } catch (Throwable t) {
+            if (!(t instanceof SkipPageException)) {
+                out = _jspx_out;
+                if (out != null && out.getBufferSize() != 0)
+                    out.clearBuffer();
+                if (_jspx_page_context != null)
+                    _jspx_page_context.handlePageException(t);
+            }
+        } finally {
+            if (_jspxFactory != null)
+                _jspxFactory.releasePageContext(_jspx_page_context);
+        }
+    }
 }
diff --git a/appserver/tests/appserv-tests/devtests/web/jspConfigUsePrecompiled2/lib/jsps.jar b/appserver/tests/appserv-tests/devtests/web/jspConfigUsePrecompiled2/lib/jsps.jar
index 66a962d..ec5925d 100644
--- a/appserver/tests/appserv-tests/devtests/web/jspConfigUsePrecompiled2/lib/jsps.jar
+++ b/appserver/tests/appserv-tests/devtests/web/jspConfigUsePrecompiled2/lib/jsps.jar
Binary files differ
diff --git a/appserver/tests/appserv-tests/devtests/web/jspELEnum/docroot/enum.jsp b/appserver/tests/appserv-tests/devtests/web/jspELEnum/docroot/enum.jsp
index c1024db..0daa084 100644
--- a/appserver/tests/appserv-tests/devtests/web/jspELEnum/docroot/enum.jsp
+++ b/appserver/tests/appserv-tests/devtests/web/jspELEnum/docroot/enum.jsp
@@ -16,7 +16,7 @@
 
 --%>
 
-<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="c" uri="jakarta.tags.core" %>
 
 <%! enum Suit {club, diamond, heart, spade} %>
 <%
diff --git a/appserver/tests/appserv-tests/devtests/web/jspErrorPageClassCastException/WebTest.java b/appserver/tests/appserv-tests/devtests/web/jspErrorPageClassCastException/WebTest.java
index 74f4275..26d3b2b 100644
--- a/appserver/tests/appserv-tests/devtests/web/jspErrorPageClassCastException/WebTest.java
+++ b/appserver/tests/appserv-tests/devtests/web/jspErrorPageClassCastException/WebTest.java
@@ -20,20 +20,15 @@
 
 /*
  * Unit test for Bugzilla 31171 ("ClassCastException in
- * org.apache.jasper.runtime.PageContextImpl.getException"), see
+ * org.glassfish.wasp.runtime.PageContextImpl.getException"), see
  * http://issues.apache.org/bugzilla/show_bug.cgi?id=31171
  */
 public class WebTest {
 
-    private static final String TEST_NAME
-        = "jsp-error-page-class-cast-exception";
+    private static final String TEST_NAME = "jsp-error-page-class-cast-exception";
+    private static final String EXPECTED = "jakarta.servlet.jsp.JspException: java.lang.Throwable: " + "The cake fell in the mud";
 
-    private static final String EXPECTED
-        = "jakarta.servlet.jsp.JspException: java.lang.Throwable: "
-            + "The cake fell in the mud";
-
-    private static SimpleReporterAdapter stat
-        = new SimpleReporterAdapter("appserv-tests");
+    private static SimpleReporterAdapter stat = new SimpleReporterAdapter("appserv-tests");
 
     private String host;
     private String port;
@@ -81,16 +76,20 @@
                 stat.addStatus(TEST_NAME, stat.FAIL);
             }
 
-        } catch( Exception ex) {
+        } catch (Exception ex) {
             ex.printStackTrace();
             stat.addStatus(TEST_NAME, stat.FAIL);
         } finally {
             try {
-                if (is != null) is.close();
-            } catch (IOException ex) {}
+                if (is != null)
+                    is.close();
+            } catch (IOException ex) {
+            }
             try {
-                if (bis != null) bis.close();
-            } catch (IOException ex) {}
+                if (bis != null)
+                    bis.close();
+            } catch (IOException ex) {
+            }
         }
     }
 
diff --git a/appserver/tests/appserv-tests/devtests/web/jspErrorPageServletErrorException/WebTest.java b/appserver/tests/appserv-tests/devtests/web/jspErrorPageServletErrorException/WebTest.java
index 0da24ac..789e6d2 100644
--- a/appserver/tests/appserv-tests/devtests/web/jspErrorPageServletErrorException/WebTest.java
+++ b/appserver/tests/appserv-tests/devtests/web/jspErrorPageServletErrorException/WebTest.java
@@ -1,3 +1,4 @@
+
 /*
  * Copyright (c) 1997, 2021 Oracle and/or its affiliates. All rights reserved.
  *
diff --git a/appserver/tests/appserv-tests/devtests/web/jspErrorPageServletErrorException/org/apache/jsp/nullErrorPage_jsp.java b/appserver/tests/appserv-tests/devtests/web/jspErrorPageServletErrorException/org/apache/jsp/nullErrorPage_jsp.java
new file mode 100644
index 0000000..2e9efef
--- /dev/null
+++ b/appserver/tests/appserv-tests/devtests/web/jspErrorPageServletErrorException/org/apache/jsp/nullErrorPage_jsp.java
@@ -0,0 +1,68 @@
+package org.apache.jsp;
+
+import jakarta.servlet.*;
+import jakarta.servlet.http.*;
+import jakarta.servlet.jsp.*;
+
+public final class nullErrorPage_jsp extends org.glassfish.wasp.runtime.HttpJspBase
+    implements org.glassfish.wasp.runtime.JspSourceDependent {
+
+  private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory();
+
+  private static java.util.List<String> _jspx_dependants;
+
+  private org.glassfish.jsp.api.ResourceInjector _jspx_resourceInjector;
+
+  public java.util.List<String> getDependants() {
+    return _jspx_dependants;
+  }
+
+  public void _jspService(HttpServletRequest request, HttpServletResponse response)
+        throws java.io.IOException, ServletException {
+
+    PageContext pageContext = null;
+    HttpSession session = null;
+    Throwable exception = org.glassfish.wasp.runtime.JspRuntimeLibrary.getThrowable(request);
+    if (exception != null) {
+      response.setStatus((Integer)request.getAttribute("jakarta.servlet.error.status_code"));
+    }
+    ServletContext application = null;
+    ServletConfig config = null;
+    JspWriter out = null;
+    Object page = this;
+    JspWriter _jspx_out = null;
+    PageContext _jspx_page_context = null;
+
+    try {
+      response.setContentType("text/html");
+      response.setHeader("X-Powered-By", "JSP/3.0");
+      pageContext = _jspxFactory.getPageContext(this, request, response,
+      			null, true, 8192, true);
+      _jspx_page_context = pageContext;
+      application = pageContext.getServletContext();
+      config = pageContext.getServletConfig();
+      session = pageContext.getSession();
+      out = pageContext.getOut();
+      _jspx_out = out;
+      _jspx_resourceInjector = (org.glassfish.jsp.api.ResourceInjector) application.getAttribute("com.sun.appserv.jsp.resource.injector");
+
+      out.write("\n");
+      out.write("\n");
+      out.write("\n");
+      out.write((java.lang.String) org.glassfish.wasp.runtime.PageContextImpl.evaluateExpression("${pageContext.exception}", java.lang.String.class, (PageContext)_jspx_page_context, null));
+      out.write('\n');
+      out.write((java.lang.String) org.glassfish.wasp.runtime.PageContextImpl.evaluateExpression("${pageContext.errorData.throwable}", java.lang.String.class, (PageContext)_jspx_page_context, null));
+      out.write('\n');
+    } catch (Throwable t) {
+      if (!(t instanceof SkipPageException)){
+        out = _jspx_out;
+        if (out != null && out.getBufferSize() != 0)
+          out.clearBuffer();
+        if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
+        else throw new ServletException(t);
+      }
+    } finally {
+      _jspxFactory.releasePageContext(_jspx_page_context);
+    }
+  }
+}
diff --git a/appserver/tests/appserv-tests/devtests/web/jspExceptionInTagBodyRestoreJspWriter/docroot/jsp/test.jsp b/appserver/tests/appserv-tests/devtests/web/jspExceptionInTagBodyRestoreJspWriter/docroot/jsp/test.jsp
index a2fcc1a..cb398f8 100644
--- a/appserver/tests/appserv-tests/devtests/web/jspExceptionInTagBodyRestoreJspWriter/docroot/jsp/test.jsp
+++ b/appserver/tests/appserv-tests/devtests/web/jspExceptionInTagBodyRestoreJspWriter/docroot/jsp/test.jsp
@@ -16,7 +16,7 @@
 
 --%>
 
-<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="c" uri="jakarta.tags.core" %>
  
 <%!
    public String throwEx() throws Exception {
diff --git a/appserver/tests/appserv-tests/devtests/web/jspForwardUnbuffered/WebTest.java b/appserver/tests/appserv-tests/devtests/web/jspForwardUnbuffered/WebTest.java
index ea3ea97..3da0135 100644
--- a/appserver/tests/appserv-tests/devtests/web/jspForwardUnbuffered/WebTest.java
+++ b/appserver/tests/appserv-tests/devtests/web/jspForwardUnbuffered/WebTest.java
@@ -19,8 +19,7 @@
 import com.sun.ejte.ccl.reporter.*;
 
 /*
- * Unit test for Bugzilla 13499 ("Jasper throws an exception on an immediate
- * pageContext.forward()").
+ * Unit test for Bugzilla 13499 ("WaSP throws an exception on an immediate pageContext.forward()").
  *
  * If page output is unbuffered, IllegalStateException is no longer
  * thrown on forward if and only if nothing has been written to the page. The
@@ -29,8 +28,7 @@
  */
 public class WebTest {
 
-    private static SimpleReporterAdapter stat =
-        new SimpleReporterAdapter("appserv-tests");
+    private static SimpleReporterAdapter stat = new SimpleReporterAdapter("appserv-tests");
     private static final String TEST_NAME = "jsp-forward-unbuffered";
 
     private String host;
@@ -59,33 +57,29 @@
 
     public void doTest1() throws Exception {
 
-        URL url = new URL("http://" + host  + ":" + port + contextRoot +
-                          "/from1.jsp");
+        URL url = new URL("http://" + host + ":" + port + contextRoot + "/from1.jsp");
         System.out.println("Connecting to: " + url.toString());
         HttpURLConnection conn = (HttpURLConnection) url.openConnection();
         conn.connect();
         int responseCode = conn.getResponseCode();
         if (responseCode != 200) {
-            throw new Exception("Wrong response code. Expected: 200" +
-                                ", received: " + responseCode);
+            throw new Exception("Wrong response code. Expected: 200" + ", received: " + responseCode);
         }
     }
 
     /*
-     * This test expects from2.jsp to throw an IllegalStateException due to
-     * the newline output as a result of its first line.
+     * This test expects from2.jsp to throw an IllegalStateException due to the newline output as a result of its first
+     * line.
      */
     public void doTest2() throws Exception {
 
-        URL url = new URL("http://" + host  + ":" + port + contextRoot +
-                          "/from2.jsp");
+        URL url = new URL("http://" + host + ":" + port + contextRoot + "/from2.jsp");
         System.out.println("Connecting to: " + url.toString());
         HttpURLConnection conn = (HttpURLConnection) url.openConnection();
         conn.connect();
         int responseCode = conn.getResponseCode();
         if (responseCode != 500) {
-            throw new Exception("Wrong response code. Expected: 500" +
-                                ", received: " + responseCode);
+            throw new Exception("Wrong response code. Expected: 500" + ", received: " + responseCode);
         }
     }
 
diff --git a/appserver/tests/appserv-tests/devtests/web/jspReloadGeneratedServletIfUpdated/WebTest.java b/appserver/tests/appserv-tests/devtests/web/jspReloadGeneratedServletIfUpdated/WebTest.java
index 16e3a69..97e8ddf 100644
--- a/appserver/tests/appserv-tests/devtests/web/jspReloadGeneratedServletIfUpdated/WebTest.java
+++ b/appserver/tests/appserv-tests/devtests/web/jspReloadGeneratedServletIfUpdated/WebTest.java
@@ -37,11 +37,9 @@
 
     private static String TEST_NAME;
 
-    private static final String TEST_ROOT_NAME
-        = "jsp-reload-generated-servlet-if-updated";
+    private static final String TEST_ROOT_NAME = "jsp-reload-generated-servlet-if-updated";
 
-    private static SimpleReporterAdapter stat
-        = new SimpleReporterAdapter("appserv-tests");
+    private static SimpleReporterAdapter stat = new SimpleReporterAdapter("appserv-tests");
 
     private String host;
     private String port;
@@ -57,9 +55,8 @@
 
     public static void main(String[] args) {
 
-        stat.addDescription("Unit test to ensure that servlet that "
-                            + "was generated from JSP is reloaded when its "
-                            + "class file is updated");
+        stat.addDescription(
+                "Unit test to ensure that servlet that " + "was generated from JSP is reloaded when its " + "class file is updated");
         WebTest webTest = new WebTest(args);
 
         if ("first".equals(webTest.run)) {
@@ -90,8 +87,7 @@
                 expectedResponse = "This is my UPDATED output";
             }
 
-            URL url = new URL("http://" + host  + ":" + port
-                              + contextRoot + "/jsp/test.jsp");
+            URL url = new URL("http://" + host + ":" + port + contextRoot + "/jsp/test.jsp");
             System.out.println("Connecting to: " + url.toString());
             HttpURLConnection conn = (HttpURLConnection) url.openConnection();
             conn.connect();
@@ -107,18 +103,21 @@
                 if (expectedResponse.equals(line)) {
                     stat.addStatus(TEST_NAME, stat.PASS);
                 } else {
-                    System.err.println("Wrong response. Expected: " +
-                                       expectedResponse + ", received: " + line);
+                    System.err.println("Wrong response. Expected: " + expectedResponse + ", received: " + line);
                     stat.addStatus(TEST_NAME, stat.FAIL);
                 }
             }
         } finally {
             try {
-                if (is != null) is.close();
-            } catch (IOException ex) {}
+                if (is != null)
+                    is.close();
+            } catch (IOException ex) {
+            }
             try {
-                if (input != null) input.close();
-            } catch (IOException ex) {}
+                if (input != null)
+                    input.close();
+            } catch (IOException ex) {
+            }
         }
     }
 }
diff --git a/appserver/tests/appserv-tests/devtests/web/jspReloadGeneratedServletIfUpdated/test_jsp.class b/appserver/tests/appserv-tests/devtests/web/jspReloadGeneratedServletIfUpdated/test_jsp.class
index f49864a..56729b7 100644
--- a/appserver/tests/appserv-tests/devtests/web/jspReloadGeneratedServletIfUpdated/test_jsp.class
+++ b/appserver/tests/appserv-tests/devtests/web/jspReloadGeneratedServletIfUpdated/test_jsp.class
Binary files differ
diff --git a/appserver/tests/appserv-tests/devtests/web/jspReloadGeneratedServletIfUpdated/test_jsp.java b/appserver/tests/appserv-tests/devtests/web/jspReloadGeneratedServletIfUpdated/test_jsp.java
index 08af270..84ceb25 100644
--- a/appserver/tests/appserv-tests/devtests/web/jspReloadGeneratedServletIfUpdated/test_jsp.java
+++ b/appserver/tests/appserv-tests/devtests/web/jspReloadGeneratedServletIfUpdated/test_jsp.java
@@ -20,55 +20,55 @@
 import jakarta.servlet.http.*;
 import jakarta.servlet.jsp.*;
 
-public final class test_jsp extends org.apache.jasper.runtime.HttpJspBase
-    implements org.apache.jasper.runtime.JspSourceDependent {
+public final class test_jsp extends org.glassfish.wasp.runtime.HttpJspBase implements org.glassfish.wasp.runtime.JspSourceDependent {
 
-  private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory();
+    private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory();
 
-  private static java.util.List<String> _jspx_dependants;
+    private static java.util.List<String> _jspx_dependants;
 
-  private org.glassfish.jsp.api.ResourceInjector _jspx_resourceInjector;
+    private org.glassfish.jsp.api.ResourceInjector _jspx_resourceInjector;
 
-  public java.util.List<String> getDependants() {
-    return _jspx_dependants;
-  }
-
-  public void _jspService(HttpServletRequest request, HttpServletResponse response)
-        throws java.io.IOException, ServletException {
-
-    PageContext pageContext = null;
-    HttpSession session = null;
-    ServletContext application = null;
-    ServletConfig config = null;
-    JspWriter out = null;
-    Object page = this;
-    JspWriter _jspx_out = null;
-    PageContext _jspx_page_context = null;
-
-    try {
-      response.setContentType("text/html");
-      response.setHeader("X-Powered-By", "JSP/2.3");
-      pageContext = _jspxFactory.getPageContext(this, request, response,
-                              null, true, 8192, true);
-      _jspx_page_context = pageContext;
-      application = pageContext.getServletContext();
-      config = pageContext.getServletConfig();
-      session = pageContext.getSession();
-      out = pageContext.getOut();
-      _jspx_out = out;
-      _jspx_resourceInjector = (org.glassfish.jsp.api.ResourceInjector) application.getAttribute("com.sun.appserv.jsp.resource.injector");
-
-      out.write("This is my UPDATED output\n\n");
-    } catch (Throwable t) {
-      if (!(t instanceof SkipPageException)){
-        out = _jspx_out;
-        if (out != null && out.getBufferSize() != 0)
-          out.clearBuffer();
-        if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
-        else throw new ServletException(t);
-      }
-    } finally {
-      _jspxFactory.releasePageContext(_jspx_page_context);
+    public java.util.List<String> getDependants() {
+        return _jspx_dependants;
     }
-  }
+
+    public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException {
+
+        PageContext pageContext = null;
+        HttpSession session = null;
+        ServletContext application = null;
+        ServletConfig config = null;
+        JspWriter out = null;
+        Object page = this;
+        JspWriter _jspx_out = null;
+        PageContext _jspx_page_context = null;
+
+        try {
+            response.setContentType("text/html");
+            response.setHeader("X-Powered-By", "JSP/2.3");
+            pageContext = _jspxFactory.getPageContext(this, request, response, null, true, 8192, true);
+            _jspx_page_context = pageContext;
+            application = pageContext.getServletContext();
+            config = pageContext.getServletConfig();
+            session = pageContext.getSession();
+            out = pageContext.getOut();
+            _jspx_out = out;
+            _jspx_resourceInjector = (org.glassfish.jsp.api.ResourceInjector) 
+                application.getAttribute("com.sun.appserv.jsp.resource.injector");
+
+            out.write("This is my UPDATED output\n\n");
+        } catch (Throwable t) {
+            if (!(t instanceof SkipPageException)) {
+                out = _jspx_out;
+                if (out != null && out.getBufferSize() != 0)
+                    out.clearBuffer();
+                if (_jspx_page_context != null)
+                    _jspx_page_context.handlePageException(t);
+                else
+                    throw new ServletException(t);
+            }
+        } finally {
+            _jspxFactory.releasePageContext(_jspx_page_context);
+        }
+    }
 }
diff --git a/appserver/tests/appserv-tests/devtests/web/jspResourceInjectionSimpleTagHandler/WebTest.java b/appserver/tests/appserv-tests/devtests/web/jspResourceInjectionSimpleTagHandler/WebTest.java
index e52ee35..1211282 100644
--- a/appserver/tests/appserv-tests/devtests/web/jspResourceInjectionSimpleTagHandler/WebTest.java
+++ b/appserver/tests/appserv-tests/devtests/web/jspResourceInjectionSimpleTagHandler/WebTest.java
@@ -23,15 +23,13 @@
  */
 public class WebTest {
 
-    private static final String TEST_NAME =
-        "jsp-resource-injection-simple-tag-handler";
+    private static final String TEST_NAME = "jsp-resource-injection-simple-tag-handler";
 
-    private static final String EXPECTED_RESPONSE =
-        "ds1-login-timeout=0,ds2-login-timeout=0,ds3-login-timeout=0,"
-        + "ds4-login-timeout=0,ds5-login-timeout=0,ds6-login-timeout=0";
+    private static final String EXPECTED_RESPONSE = 
+        "ds1-login-timeout=0,ds2-login-timeout=0,ds3-login-timeout=0," + 
+        "ds4-login-timeout=0,ds5-login-timeout=0,ds6-login-timeout=0";
 
-    private static SimpleReporterAdapter stat
-        = new SimpleReporterAdapter("appserv-tests");
+    private static SimpleReporterAdapter stat = new SimpleReporterAdapter("appserv-tests");
 
     private String host;
     private String port;
@@ -45,8 +43,7 @@
 
     public static void main(String[] args) {
 
-        stat.addDescription("Unit test for resource injection into "
-                            + "JSP SimpleTagHandler");
+        stat.addDescription("Unit test for resource injection into " + "JSP SimpleTagHandler");
         WebTest webTest = new WebTest(args);
 
         try {
@@ -64,8 +61,7 @@
         InputStream is = null;
         BufferedReader input = null;
         try {
-            URL url = new URL("http://" + host  + ":" + port
-                              + contextRoot + "/jsp/test.jsp");
+            URL url = new URL("http://" + host + ":" + port + contextRoot + "/jsp/test.jsp");
             System.out.println("Connecting to: " + url.toString());
             HttpURLConnection conn = (HttpURLConnection) url.openConnection();
             conn.connect();
@@ -82,23 +78,24 @@
                 if (EXPECTED_RESPONSE.equals(lastLine)) {
                     stat.addStatus(TEST_NAME, stat.PASS);
                 } else {
-                    System.err.println("Wrong response body. Expected: "
-                                       + EXPECTED_RESPONSE + ", received: "
-                                       + lastLine);
+                    System.err.println("Wrong response body. Expected: " + EXPECTED_RESPONSE + ", received: " + lastLine);
                     stat.addStatus(TEST_NAME, stat.FAIL);
                 }
             } else {
-                System.err.println("Wrong response code. Expected: 200"
-                                   + ", received: " + responseCode);
+                System.err.println("Wrong response code. Expected: 200" + ", received: " + responseCode);
                 stat.addStatus(TEST_NAME, stat.FAIL);
             }
         } finally {
             try {
-                if (is != null) is.close();
-            } catch (IOException ex) {}
+                if (is != null)
+                    is.close();
+            } catch (IOException ex) {
+            }
             try {
-                if (input != null) input.close();
-            } catch (IOException ex) {}
+                if (input != null)
+                    input.close();
+            } catch (IOException ex) {
+            }
         }
     }
 }
diff --git a/appserver/tests/appserv-tests/devtests/web/jspResourceInjectionSimpleTagHandler/descriptor/sun-web.xml b/appserver/tests/appserv-tests/devtests/web/jspResourceInjectionSimpleTagHandler/descriptor/sun-web.xml
index e1eecde..0848ec1 100644
--- a/appserver/tests/appserv-tests/devtests/web/jspResourceInjectionSimpleTagHandler/descriptor/sun-web.xml
+++ b/appserver/tests/appserv-tests/devtests/web/jspResourceInjectionSimpleTagHandler/descriptor/sun-web.xml
@@ -20,29 +20,34 @@
 <!DOCTYPE sun-web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Sun ONE Application Server 8.0 Servlet 2.4//EN' 'http://www.sun.com/software/sunone/appserver/dtds/sun-web-app_2_4-0.dtd'>
 
 <sun-web-app>
-  <resource-ref>
-     <res-ref-name>taglib.MySimpleTag/ds1</res-ref-name>
-     <jndi-name>jdbc/__default</jndi-name>
-  </resource-ref>
-  <resource-ref>
-     <res-ref-name>myDataSource2</res-ref-name>
-     <jndi-name>jdbc/__default</jndi-name>
-  </resource-ref>
-  <resource-ref>
-     <res-ref-name>jdbc/myDataSource3</res-ref-name>
-     <jndi-name>jdbc/__default</jndi-name>
-  </resource-ref>
-  <resource-ref>
-     <res-ref-name>myDataSource4</res-ref-name>
-     <jndi-name>jdbc/__default</jndi-name>
-  </resource-ref>
-  <resource-ref>
-     <res-ref-name>myDataSource5</res-ref-name>
-     <jndi-name>jdbc/__default</jndi-name>
-  </resource-ref>
-  <resource-ref>
-     <res-ref-name>jdbc/myDataSource6</res-ref-name>
-     <jndi-name>jdbc/__default</jndi-name>
-  </resource-ref>
+    <resource-ref>
+        <res-ref-name>taglib.MySimpleTag/ds1</res-ref-name>
+        <jndi-name>jdbc/__default</jndi-name>
+    </resource-ref>
+    
+    <resource-ref>
+        <res-ref-name>myDataSource2</res-ref-name>
+        <jndi-name>jdbc/__default</jndi-name>
+    </resource-ref>
+    
+    <resource-ref>
+        <res-ref-name>jdbc/myDataSource3</res-ref-name>
+        <jndi-name>jdbc/__default</jndi-name>
+    </resource-ref>
+    
+    <resource-ref>
+        <res-ref-name>myDataSource4</res-ref-name>
+        <jndi-name>jdbc/__default</jndi-name>
+    </resource-ref>
+    
+    <resource-ref>
+        <res-ref-name>myDataSource5</res-ref-name>
+        <jndi-name>jdbc/__default</jndi-name>
+    </resource-ref>
+    
+    <resource-ref>
+        <res-ref-name>jdbc/myDataSource6</res-ref-name>
+        <jndi-name>jdbc/__default</jndi-name>
+    </resource-ref>
 </sun-web-app>
 
diff --git a/appserver/tests/appserv-tests/devtests/web/jspResourceInjectionSimpleTagHandler/descriptor/tlds/my.tld b/appserver/tests/appserv-tests/devtests/web/jspResourceInjectionSimpleTagHandler/descriptor/tlds/my.tld
index 44a53a6..9f7e2bd 100644
--- a/appserver/tests/appserv-tests/devtests/web/jspResourceInjectionSimpleTagHandler/descriptor/tlds/my.tld
+++ b/appserver/tests/appserv-tests/devtests/web/jspResourceInjectionSimpleTagHandler/descriptor/tlds/my.tld
@@ -22,14 +22,14 @@
     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"
     version="2.0">
 
-  <tlib-version>1.0</tlib-version>
-  <uri>http://java.sun.com/test-taglib</uri>
+    <tlib-version>1.0</tlib-version>
+    <uri>http://java.sun.com/test-taglib</uri>
 
-  <tag>
-    <name>mySimpleTag</name>
-    <tag-class>taglib.MySimpleTag</tag-class>
-    <body-content>empty</body-content>
-  </tag>
+    <tag>
+        <name>mySimpleTag</name>
+        <tag-class>taglib.MySimpleTag</tag-class>
+        <body-content>empty</body-content>
+    </tag>
 
 </taglib>
 
diff --git a/appserver/tests/appserv-tests/devtests/web/jspResourceInjectionSimpleTagHandler/servlet/taglib/MySimpleTag.java b/appserver/tests/appserv-tests/devtests/web/jspResourceInjectionSimpleTagHandler/servlet/taglib/MySimpleTag.java
index 2f8de7d..5245b48 100644
--- a/appserver/tests/appserv-tests/devtests/web/jspResourceInjectionSimpleTagHandler/servlet/taglib/MySimpleTag.java
+++ b/appserver/tests/appserv-tests/devtests/web/jspResourceInjectionSimpleTagHandler/servlet/taglib/MySimpleTag.java
@@ -27,17 +27,21 @@
 import jakarta.annotation.Resources;
 import javax.sql.DataSource;
 
-@Resource(name="myDataSource4", type=DataSource.class)
-@Resources({ @Resource(name="myDataSource5", type=DataSource.class),
-             @Resource(name="jdbc/myDataSource6", type=DataSource.class) })
-
+@Resource(name = "myDataSource4", type = DataSource.class)
+@Resources({ 
+    @Resource(name = "myDataSource5", type = DataSource.class), 
+    @Resource(name = "jdbc/myDataSource6", type = DataSource.class) })
 public class MySimpleTag extends SimpleTagSupport {
 
-    private @Resource DataSource ds1;
-    private @Resource(name="myDataSource2") DataSource ds2;
+    @Resource 
+    private DataSource ds1;
+    
+    @Resource(name = "myDataSource2") 
+    private DataSource ds2;
+    
     private DataSource ds3;
 
-    @Resource(name="jdbc/myDataSource3")
+    @Resource(name = "jdbc/myDataSource3")
     private void setDataSource(DataSource ds) {
         ds3 = ds;
     }
@@ -57,18 +61,15 @@
 
             InitialContext ic = new InitialContext();
 
-            DataSource ds4 = (DataSource)
-                ic.lookup("java:comp/env/myDataSource4");
+            DataSource ds4 = (DataSource) ic.lookup("java:comp/env/myDataSource4");
             loginTimeout = ds4.getLoginTimeout();
             jsw.write(",ds4-login-timeout=" + loginTimeout);
 
-            DataSource ds5 = (DataSource)
-                ic.lookup("java:comp/env/myDataSource5");
+            DataSource ds5 = (DataSource) ic.lookup("java:comp/env/myDataSource5");
             loginTimeout = ds5.getLoginTimeout();
             jsw.write(",ds5-login-timeout=" + loginTimeout);
 
-            DataSource ds6 = (DataSource)
-                ic.lookup("java:comp/env/jdbc/myDataSource6");
+            DataSource ds6 = (DataSource) ic.lookup("java:comp/env/jdbc/myDataSource6");
             loginTimeout = ds6.getLoginTimeout();
             jsw.write(",ds6-login-timeout=" + loginTimeout);
 
diff --git a/appserver/tests/appserv-tests/devtests/web/jspServletOverride/descriptor/web.xml b/appserver/tests/appserv-tests/devtests/web/jspServletOverride/descriptor/web.xml
index d342e61..350382e 100644
--- a/appserver/tests/appserv-tests/devtests/web/jspServletOverride/descriptor/web.xml
+++ b/appserver/tests/appserv-tests/devtests/web/jspServletOverride/descriptor/web.xml
@@ -1,5 +1,6 @@
 <!--
 
+	Copyright (c) 2021 Contributors to Eclipse Foundation.
     Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
@@ -23,7 +24,7 @@
 
   <servlet>
     <servlet-name>jsp</servlet-name>
-    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
+    <servlet-class>org.glassfish.wasp.servlet.JspServlet</servlet-class>
     <init-param>
       <param-name>ieClassId</param-name>
       <param-value>ABCD</param-value>
diff --git a/appserver/tests/appserv-tests/devtests/web/jspTrimDirectiveWhitespaces/docroot/trim.jsp b/appserver/tests/appserv-tests/devtests/web/jspTrimDirectiveWhitespaces/docroot/trim.jsp
index d0d0dd7..1d91118 100644
--- a/appserver/tests/appserv-tests/devtests/web/jspTrimDirectiveWhitespaces/docroot/trim.jsp
+++ b/appserver/tests/appserv-tests/devtests/web/jspTrimDirectiveWhitespaces/docroot/trim.jsp
@@ -16,10 +16,10 @@
 
 --%>
 
-<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="c" uri="jakarta.tags.core" %>
    
 
-<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
+<%@ taglib prefix="x" uri="jakarta.tags.xml" %>
 xyz
 <%@ page trimDirectiveWhitespaces="true" %>
 <h1>Hello World!</h1>
diff --git a/appserver/tests/appserv-tests/devtests/web/jspcConfigure/docroot/jsp/test.jsp b/appserver/tests/appserv-tests/devtests/web/jspcConfigure/docroot/jsp/test.jsp
index 341895d..96f3472 100644
--- a/appserver/tests/appserv-tests/devtests/web/jspcConfigure/docroot/jsp/test.jsp
+++ b/appserver/tests/appserv-tests/devtests/web/jspcConfigure/docroot/jsp/test.jsp
@@ -16,7 +16,7 @@
 
 --%>
 
-<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
-<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
-<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
-<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
+<%@ taglib prefix="fmt" uri="jakarta.tags.fmt" %>
+<%@ taglib prefix="fmt" uri="jakarta.tags.fmt" %>
+<%@ taglib prefix="fmt" uri="jakarta.tags.fmt" %>
+<%@ taglib prefix="fmt" uri="jakarta.tags.fmt" %>
diff --git a/appserver/tests/appserv-tests/devtests/web/jstlHtmlParamOutsideFmtMessage/docroot/jsp/test.jspx b/appserver/tests/appserv-tests/devtests/web/jstlHtmlParamOutsideFmtMessage/docroot/jsp/test.jspx
index 1724ca2..0d3cd8c 100644
--- a/appserver/tests/appserv-tests/devtests/web/jstlHtmlParamOutsideFmtMessage/docroot/jsp/test.jspx
+++ b/appserver/tests/appserv-tests/devtests/web/jstlHtmlParamOutsideFmtMessage/docroot/jsp/test.jspx
@@ -1,8 +1,8 @@
 <?xml version="1.0"?>
 <html
     xmlns:jsp="http://java.sun.com/JSP/Page"
-    xmlns:jstlc="http://java.sun.com/jsp/jstl/core"
-    xmlns:jstlf="http://java.sun.com/jsp/jstl/fmt">
+    xmlns:jstlc="jakarta.tags.core"
+    xmlns:jstlf="jakarta.tags.fmt">
 
     <jstlc:if test="${true}">
         <applet code="some.package.SomeApplet.class" archive="applet.jar"
diff --git a/appserver/tests/appserv-tests/devtests/web/requestDispatcherPathWithParams/docroot/jsp/forwardTo.jsp b/appserver/tests/appserv-tests/devtests/web/requestDispatcherPathWithParams/docroot/jsp/forwardTo.jsp
index 9544516..890d7f5 100644
--- a/appserver/tests/appserv-tests/devtests/web/requestDispatcherPathWithParams/docroot/jsp/forwardTo.jsp
+++ b/appserver/tests/appserv-tests/devtests/web/requestDispatcherPathWithParams/docroot/jsp/forwardTo.jsp
@@ -16,7 +16,7 @@
 
 --%>
 
-<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="c" uri="jakarta.tags.core" %>
 
 <c:out value="${pageContext.request.requestURI}" />
 <c:out value="${pageContext.request.queryString}" />
diff --git a/appserver/tests/appserv-tests/devtests/web/servlet-3.0/multipart/src/if.jsp b/appserver/tests/appserv-tests/devtests/web/servlet-3.0/multipart/src/if.jsp
index ca5fa26..69b21f5 100644
--- a/appserver/tests/appserv-tests/devtests/web/servlet-3.0/multipart/src/if.jsp
+++ b/appserver/tests/appserv-tests/devtests/web/servlet-3.0/multipart/src/if.jsp
@@ -16,7 +16,7 @@
 
 --%>
 
-<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="jakarta.tags.core" prefix="c" %>
 <c:if test="${1<2}">
   works!
 </c:if>
diff --git a/appserver/tests/appserv-tests/devtests/web/tagPluginForEach/docroot/jsp/enum.jsp b/appserver/tests/appserv-tests/devtests/web/tagPluginForEach/docroot/jsp/enum.jsp
index 6f57512..2edb254 100644
--- a/appserver/tests/appserv-tests/devtests/web/tagPluginForEach/docroot/jsp/enum.jsp
+++ b/appserver/tests/appserv-tests/devtests/web/tagPluginForEach/docroot/jsp/enum.jsp
@@ -16,7 +16,7 @@
 
 --%>
 
-<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="jakarta.tags.core" prefix="c" %>
 <%@ page language="java" import="java.util.Vector" %>
 
 <% Vector v = new Vector();
diff --git a/appserver/tests/appserv-tests/devtests/web/tagPluginForEach/docroot/jsp/iterator.jsp b/appserver/tests/appserv-tests/devtests/web/tagPluginForEach/docroot/jsp/iterator.jsp
index 9824567..fb6ab87 100644
--- a/appserver/tests/appserv-tests/devtests/web/tagPluginForEach/docroot/jsp/iterator.jsp
+++ b/appserver/tests/appserv-tests/devtests/web/tagPluginForEach/docroot/jsp/iterator.jsp
@@ -16,7 +16,7 @@
 
 --%>
 
-<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="jakarta.tags.core" prefix="c" %>
 <%@ page language="java" import="java.util.Vector" %>
 
 <% Vector v = new Vector();
diff --git a/appserver/tests/appserv-tests/devtests/web/tagPluginForEach/docroot/jsp/map.jsp b/appserver/tests/appserv-tests/devtests/web/tagPluginForEach/docroot/jsp/map.jsp
index aef0d25..42d8c84 100644
--- a/appserver/tests/appserv-tests/devtests/web/tagPluginForEach/docroot/jsp/map.jsp
+++ b/appserver/tests/appserv-tests/devtests/web/tagPluginForEach/docroot/jsp/map.jsp
@@ -16,7 +16,7 @@
 
 --%>
 
-<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="jakarta.tags.core" prefix="c" %>
 <%@ page language="java" import="java.util.HashMap" %>
 
 <% HashMap m = new HashMap();
diff --git a/appserver/tests/appserv-tests/devtests/web/tagPluginForEachTagFile/descriptor/tags/test.tag b/appserver/tests/appserv-tests/devtests/web/tagPluginForEachTagFile/descriptor/tags/test.tag
index 40ca42c..8bf3fde 100644
--- a/appserver/tests/appserv-tests/devtests/web/tagPluginForEachTagFile/descriptor/tags/test.tag
+++ b/appserver/tests/appserv-tests/devtests/web/tagPluginForEachTagFile/descriptor/tags/test.tag
@@ -1,4 +1,4 @@
-<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="c" uri="jakarta.tags.core" %>
 <%@ attribute name="end" required="true" %>
 
 <c:forEach var="i" begin="1" end="${end}">
diff --git a/appserver/tests/appserv-tests/devtests/web/tagplugin/docroot/test.jsp b/appserver/tests/appserv-tests/devtests/web/tagplugin/docroot/test.jsp
index d952152..94df8f8 100644
--- a/appserver/tests/appserv-tests/devtests/web/tagplugin/docroot/test.jsp
+++ b/appserver/tests/appserv-tests/devtests/web/tagplugin/docroot/test.jsp
@@ -22,7 +22,7 @@
 Testing tag plugins for &lt;c:if>, &lt;c:forEach>, and &lt;c:choose>
 <br/>
 
-<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="jakarta.tags.core" prefix="c" %>
 
 <c:set var="count" value="1"/>
 
diff --git a/appserver/tests/appserv-tests/devtests/web/weblogicDD/jspDescriptor/docroot/test.jsp b/appserver/tests/appserv-tests/devtests/web/weblogicDD/jspDescriptor/docroot/test.jsp
index 677aceb..d64b28a 100644
--- a/appserver/tests/appserv-tests/devtests/web/weblogicDD/jspDescriptor/docroot/test.jsp
+++ b/appserver/tests/appserv-tests/devtests/web/weblogicDD/jspDescriptor/docroot/test.jsp
@@ -16,6 +16,6 @@
 
 --%>
 
-<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="jakarta.tags.core" prefix="c" %>
 <%@ page session="false" %>
 <c:if test="${1<2}">pass!</c:if>
diff --git a/appserver/tests/appserv-tests/pom.xml b/appserver/tests/appserv-tests/pom.xml
index 4ee8bfb..2c52528 100644
--- a/appserver/tests/appserv-tests/pom.xml
+++ b/appserver/tests/appserv-tests/pom.xml
@@ -25,7 +25,7 @@
     <parent>
         <groupId>org.glassfish.main.tests</groupId>
         <artifactId>tests</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>ant-tests</artifactId>
diff --git a/appserver/tests/cdi/README.txt b/appserver/tests/cdi/README.txt
index 039e86b..dc47dfc 100644
--- a/appserver/tests/cdi/README.txt
+++ b/appserver/tests/cdi/README.txt
@@ -6,7 +6,7 @@
 
 To run the tests something like this line should be run:
 
-mvn -Dglassfish.home=/scratch/jwells/bg/installs/gf/glassfish6/glassfish \
+mvn -Dglassfish.home=/scratch/jwells/bg/installs/gf/glassfish7/glassfish \
     -Dsource.home=/scratch/jwells/bg/all/main \
 	clean install 2>&1 | tee t.out
 
diff --git a/appserver/tests/cdi/cases/multiBeansXml/ejb1/pom.xml b/appserver/tests/cdi/cases/multiBeansXml/ejb1/pom.xml
index b2e6250..3f2e322 100755
--- a/appserver/tests/cdi/cases/multiBeansXml/ejb1/pom.xml
+++ b/appserver/tests/cdi/cases/multiBeansXml/ejb1/pom.xml
@@ -23,13 +23,13 @@
     <parent>
         <groupId>org.glassfish.tests.cdi.cases</groupId>
         <artifactId>multiBeansXml</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
     <groupId>org.glassfish.tests.cdi.cases.multiBeansXml</groupId>
     <artifactId>ejb1</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
 
     <name>GlassFish Ejb1 With Specific beans.xml</name>
 
diff --git a/appserver/tests/cdi/cases/multiBeansXml/ejb2/pom.xml b/appserver/tests/cdi/cases/multiBeansXml/ejb2/pom.xml
index 2ef1815..abb106e 100755
--- a/appserver/tests/cdi/cases/multiBeansXml/ejb2/pom.xml
+++ b/appserver/tests/cdi/cases/multiBeansXml/ejb2/pom.xml
@@ -23,13 +23,13 @@
     <parent>
         <groupId>org.glassfish.tests.cdi.cases</groupId>
         <artifactId>multiBeansXml</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
     <groupId>org.glassfish.tests.cdi.cases.multiBeansXml</groupId>
     <artifactId>ejb2</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
 
     <name>GlassFish Ejb2 With Specific beans.xml</name>
 
diff --git a/appserver/tests/cdi/cases/multiBeansXml/multiBeansApp/pom.xml b/appserver/tests/cdi/cases/multiBeansXml/multiBeansApp/pom.xml
index 0e0ed15..570b72b 100644
--- a/appserver/tests/cdi/cases/multiBeansXml/multiBeansApp/pom.xml
+++ b/appserver/tests/cdi/cases/multiBeansXml/multiBeansApp/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.cdi.cases</groupId>
         <artifactId>multiBeansXml</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.tests.cdi.cases.multiBeansXml</groupId>
diff --git a/appserver/tests/cdi/cases/multiBeansXml/pom.xml b/appserver/tests/cdi/cases/multiBeansXml/pom.xml
index 4ad3a99..9069ec8 100755
--- a/appserver/tests/cdi/cases/multiBeansXml/pom.xml
+++ b/appserver/tests/cdi/cases/multiBeansXml/pom.xml
@@ -23,14 +23,14 @@
     <parent>
         <groupId>org.glassfish.tests.cdi</groupId>
         <artifactId>cases</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
     <groupId>org.glassfish.tests.cdi.cases</groupId>
     <artifactId>multiBeansXml</artifactId>
     <packaging>pom</packaging>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
 
     <name>GlassFish CDI MultiBeanXml Test</name>
     <modules>
diff --git a/appserver/tests/cdi/cases/pom.xml b/appserver/tests/cdi/cases/pom.xml
index beb4306..1065c49 100755
--- a/appserver/tests/cdi/cases/pom.xml
+++ b/appserver/tests/cdi/cases/pom.xml
@@ -23,14 +23,14 @@
     <parent>
         <groupId>org.glassfish.tests</groupId>
         <artifactId>cdi</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
     <groupId>org.glassfish.tests.cdi</groupId>
     <artifactId>cases</artifactId>
     <packaging>pom</packaging>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
 
     <name>GlassFish CDI Test Cases</name>
     <modules>
diff --git a/appserver/tests/cdi/cases/preDestroyScoping/ear/pom.xml b/appserver/tests/cdi/cases/preDestroyScoping/ear/pom.xml
index 69235f7..6146312 100644
--- a/appserver/tests/cdi/cases/preDestroyScoping/ear/pom.xml
+++ b/appserver/tests/cdi/cases/preDestroyScoping/ear/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.cdi.cases</groupId>
         <artifactId>preDestroyScoping</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.tests.cdi.cases.preDestroyScoping</groupId>
diff --git a/appserver/tests/cdi/cases/preDestroyScoping/lib/pom.xml b/appserver/tests/cdi/cases/preDestroyScoping/lib/pom.xml
index 982d5ee..048c2a4 100755
--- a/appserver/tests/cdi/cases/preDestroyScoping/lib/pom.xml
+++ b/appserver/tests/cdi/cases/preDestroyScoping/lib/pom.xml
@@ -23,13 +23,13 @@
     <parent>
         <groupId>org.glassfish.tests.cdi.cases</groupId>
         <artifactId>preDestroyScoping</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
     <groupId>org.glassfish.tests.cdi.cases.preDestroyScoping</groupId>
     <artifactId>lib</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
 
     <name>GlassFish library for PreDestroyScoping test</name>
 
diff --git a/appserver/tests/cdi/cases/preDestroyScoping/pom.xml b/appserver/tests/cdi/cases/preDestroyScoping/pom.xml
index 0d43f5d..621b78c 100755
--- a/appserver/tests/cdi/cases/preDestroyScoping/pom.xml
+++ b/appserver/tests/cdi/cases/preDestroyScoping/pom.xml
@@ -23,14 +23,14 @@
     <parent>
         <groupId>org.glassfish.tests.cdi</groupId>
         <artifactId>cases</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
     <groupId>org.glassfish.tests.cdi.cases</groupId>
     <artifactId>preDestroyScoping</artifactId>
     <packaging>pom</packaging>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
 
     <name>GlassFish CDI PreDestroyScoping Test</name>
     <modules>
diff --git a/appserver/tests/cdi/cases/preDestroyScoping/web/pom.xml b/appserver/tests/cdi/cases/preDestroyScoping/web/pom.xml
index f4b92d1..245e61e 100644
--- a/appserver/tests/cdi/cases/preDestroyScoping/web/pom.xml
+++ b/appserver/tests/cdi/cases/preDestroyScoping/web/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.cdi.cases</groupId>
         <artifactId>preDestroyScoping</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.tests.cdi.cases.preDestroyScoping</groupId>
diff --git a/appserver/tests/cdi/cases/runner/pom.xml b/appserver/tests/cdi/cases/runner/pom.xml
index df44d85..74e0902 100644
--- a/appserver/tests/cdi/cases/runner/pom.xml
+++ b/appserver/tests/cdi/cases/runner/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.cdi</groupId>
         <artifactId>cases</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.tests.cdi.cases</groupId>
diff --git a/appserver/tests/cdi/negative/normalScopeWithFinal/pom.xml b/appserver/tests/cdi/negative/normalScopeWithFinal/pom.xml
index 5aa4dc7..e07a37c 100755
--- a/appserver/tests/cdi/negative/normalScopeWithFinal/pom.xml
+++ b/appserver/tests/cdi/negative/normalScopeWithFinal/pom.xml
@@ -23,13 +23,13 @@
     <parent>
         <groupId>org.glassfish.tests.cdi</groupId>
         <artifactId>negative</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
     <groupId>org.glassfish.tests.cdi.negative</groupId>
     <artifactId>normalScopeWithFinal</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
 
     <name>GlassFish Normal Scoped Bean With Final Methods</name>
 
diff --git a/appserver/tests/cdi/negative/pom.xml b/appserver/tests/cdi/negative/pom.xml
index b9bd6dd..de752da 100755
--- a/appserver/tests/cdi/negative/pom.xml
+++ b/appserver/tests/cdi/negative/pom.xml
@@ -23,14 +23,14 @@
     <parent>
         <groupId>org.glassfish.tests</groupId>
         <artifactId>cdi</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
     <groupId>org.glassfish.tests.cdi</groupId>
     <artifactId>negative</artifactId>
     <packaging>pom</packaging>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
 
     <name>GlassFish CDI Negative Tests</name>
     <modules>
diff --git a/appserver/tests/cdi/negative/runner/pom.xml b/appserver/tests/cdi/negative/runner/pom.xml
index a1dbb10..eed3fb6 100644
--- a/appserver/tests/cdi/negative/runner/pom.xml
+++ b/appserver/tests/cdi/negative/runner/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.cdi</groupId>
         <artifactId>negative</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.tests.cdi.negative</groupId>
diff --git a/appserver/tests/cdi/pom.xml b/appserver/tests/cdi/pom.xml
index 8bef183..4d473cc 100755
--- a/appserver/tests/cdi/pom.xml
+++ b/appserver/tests/cdi/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.tests</groupId>
         <artifactId>tests</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.tests</groupId>
diff --git a/appserver/tests/community/pom.xml b/appserver/tests/community/pom.xml
index b25b361..971b6d2 100644
--- a/appserver/tests/community/pom.xml
+++ b/appserver/tests/community/pom.xml
@@ -28,7 +28,7 @@
     <artifactId>quicklook</artifactId>
     <name>Glassfish Quicklook Bundle</name>
     <packaging>jar</packaging>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <description>This pom describes how to run QuickLook tests on the Glassfish Bundle</description>
 
     <build>
diff --git a/appserver/tests/cts_smoke/run_test.sh b/appserver/tests/cts_smoke/run_test.sh
index 29f34e9..8a75152 100755
--- a/appserver/tests/cts_smoke/run_test.sh
+++ b/appserver/tests/cts_smoke/run_test.sh
@@ -261,7 +261,7 @@
 
 delete_workspace(){
   printf "\n%s \n\n" "===== DELETE WORKSPACE ====="
-    rm -rf ${WORKSPACE}/glassfish6 > /dev/null || true
+    rm -rf ${WORKSPACE}/glassfish7 > /dev/null || true
     rm -rf ${WORKSPACE}/servlettck > /dev/null  || true
     rm ${WORKSPACE}/servlettck.zip > /dev/null || true
     rm -rf ${WORKSPACE}/javaee-smoke > /dev/null || true
diff --git a/appserver/tests/embedded/basic/lifecycle/pom.xml b/appserver/tests/embedded/basic/lifecycle/pom.xml
index 2619914..6ec6a7b 100644
--- a/appserver/tests/embedded/basic/lifecycle/pom.xml
+++ b/appserver/tests/embedded/basic/lifecycle/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.embedded.basic</groupId>
     <artifactId>lifecycle</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Test newGlassFish(), start(), stop(), dispose() lifecyle operations</name>
     <build>
         <plugins>
diff --git a/appserver/tests/embedded/basic/pom.xml b/appserver/tests/embedded/basic/pom.xml
index bf3e298..16366a0 100755
--- a/appserver/tests/embedded/basic/pom.xml
+++ b/appserver/tests/embedded/basic/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.embedded</groupId>
     <artifactId>basic</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <packaging>pom</packaging>
     <name>Basic tests for testing org.glassfish.embeddable APIs</name>
     <modules>
diff --git a/appserver/tests/embedded/cdi_basic/pom.xml b/appserver/tests/embedded/cdi_basic/pom.xml
index 02c4207..863b577 100644
--- a/appserver/tests/embedded/cdi_basic/pom.xml
+++ b/appserver/tests/embedded/cdi_basic/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.embedded.basic</groupId>
     <artifactId>cdi_basic</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Basic CDI Test</name>
     <build>
         <finalName>cdi_basic</finalName>
@@ -57,7 +57,7 @@
                 <dependency>
                     <groupId>org.glassfish.main.extras</groupId>
                     <artifactId>glassfish-embedded-all</artifactId>
-                    <version>6.2.6-SNAPSHOT</version>
+                    <version>7.0.0-SNAPSHOT</version>
                 </dependency>
                 <dependency>
                     <groupId>junit</groupId>
diff --git a/appserver/tests/embedded/cdi_ejb_jpa/pom.xml b/appserver/tests/embedded/cdi_ejb_jpa/pom.xml
index fae2ec6..1746667 100644
--- a/appserver/tests/embedded/cdi_ejb_jpa/pom.xml
+++ b/appserver/tests/embedded/cdi_ejb_jpa/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.embedded.basic</groupId>
     <artifactId>cdi_ejb_jpa</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>CDI, EJB, JPA integration test</name>
     <build>
         <finalName>cdi_ejb_jpa</finalName>
diff --git a/appserver/tests/embedded/ejb/basic/pom.xml b/appserver/tests/embedded/ejb/basic/pom.xml
index 261124f..a3f4c4e 100644
--- a/appserver/tests/embedded/ejb/basic/pom.xml
+++ b/appserver/tests/embedded/ejb/basic/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.embedded.ejb</groupId>
     <artifactId>basic</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Test HelloWorld and Timer EJB deployed with org.glassfish.embeddable APIs</name>
   <build>
     <plugins>
@@ -53,7 +53,7 @@
                 <dependency>
                     <groupId>org.glassfish.main.extras</groupId>
                     <artifactId>glassfish-embedded-all</artifactId>
-                    <version>6.2.6-SNAPSHOT</version>
+                    <version>7.0.0-SNAPSHOT</version>
                 </dependency>
             </dependencies>
         </profile>
diff --git a/appserver/tests/embedded/ejb/ejb-api/pom.xml b/appserver/tests/embedded/ejb/ejb-api/pom.xml
index 7c8b1f3..b7af339 100644
--- a/appserver/tests/embedded/ejb/ejb-api/pom.xml
+++ b/appserver/tests/embedded/ejb/ejb-api/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.embedded.ejb</groupId>
     <artifactId>ejb-api-test</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>EJB Embedded API test</name>
   <build>
     <plugins>
@@ -57,7 +57,7 @@
                 <dependency>
                     <groupId>org.glassfish.main.extras</groupId>
                     <artifactId>glassfish-embedded-all</artifactId>
-                    <version>6.2.6-SNAPSHOT</version>
+                    <version>7.0.0-SNAPSHOT</version>
                 </dependency>
             </dependencies>
         </profile>
diff --git a/appserver/tests/embedded/ejb/ejb-main/pom.xml b/appserver/tests/embedded/ejb/ejb-main/pom.xml
index 6e7bdf1..f74455e 100644
--- a/appserver/tests/embedded/ejb/ejb-main/pom.xml
+++ b/appserver/tests/embedded/ejb/ejb-main/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.glassfish.tests.embedded</groupId>
         <artifactId>ejb</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.embedded.ejb</groupId>
diff --git a/appserver/tests/embedded/ejb/pom.xml b/appserver/tests/embedded/ejb/pom.xml
index 0acd16a..28b5531 100755
--- a/appserver/tests/embedded/ejb/pom.xml
+++ b/appserver/tests/embedded/ejb/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.embedded</groupId>
     <artifactId>ejb</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <packaging>pom</packaging>
     <name>EJB related Embedded Tests</name>
     <modules>
diff --git a/appserver/tests/embedded/ejb/remoteejb/pom.xml b/appserver/tests/embedded/ejb/remoteejb/pom.xml
index 4594d8d..bed7512 100644
--- a/appserver/tests/embedded/ejb/remoteejb/pom.xml
+++ b/appserver/tests/embedded/ejb/remoteejb/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.embedded.ejb</groupId>
     <artifactId>remoteejb</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Test remote EJB deployment with org.glassfish.embeddable APIs</name>
     <build>
         <finalName>remoteejb</finalName>
@@ -65,7 +65,7 @@
                 <dependency>
                     <groupId>org.glassfish.main.extras</groupId>
                     <artifactId>glassfish-embedded-all</artifactId>
-                    <version>6.2.6-SNAPSHOT</version>
+                    <version>7.0.0-SNAPSHOT</version>
                 </dependency>
             </dependencies>
         </profile>
diff --git a/appserver/tests/embedded/glassfish_resources_xml/pom.xml b/appserver/tests/embedded/glassfish_resources_xml/pom.xml
index 1795410..437ed89 100644
--- a/appserver/tests/embedded/glassfish_resources_xml/pom.xml
+++ b/appserver/tests/embedded/glassfish_resources_xml/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.embedded.basic</groupId>
     <artifactId>glassfish_resources_xml</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>CDI, EJB, JPA integration test which has glassfish-resources.xml</name>
     <build>
         <finalName>glassfish_resources_xml</finalName>
diff --git a/appserver/tests/embedded/inplanted/pom.xml b/appserver/tests/embedded/inplanted/pom.xml
index 0641f57..6fd8d17 100755
--- a/appserver/tests/embedded/inplanted/pom.xml
+++ b/appserver/tests/embedded/inplanted/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
@@ -74,7 +74,7 @@
                 <dependency>
                     <groupId>org.glassfish.main.extras</groupId>
                     <artifactId>glassfish-embedded-all</artifactId>
-                    <version>6.2.6-SNAPSHOT</version>
+                    <version>7.0.0-SNAPSHOT</version>
                 </dependency>
             </dependencies>
         </profile>
diff --git a/appserver/tests/embedded/maven-plugin/applicationDispatcher/pom.xml b/appserver/tests/embedded/maven-plugin/applicationDispatcher/pom.xml
index 38a6e87..38da738 100644
--- a/appserver/tests/embedded/maven-plugin/applicationDispatcher/pom.xml
+++ b/appserver/tests/embedded/maven-plugin/applicationDispatcher/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.embedded</groupId>
         <artifactId>maven-plugin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <groupId>org.glassfish.tests.embedded.maven-plugin</groupId>
     <artifactId>applicationDispatcher</artifactId>
diff --git a/appserver/tests/embedded/maven-plugin/dirListing/pom.xml b/appserver/tests/embedded/maven-plugin/dirListing/pom.xml
index c0a9933..c7cbcbf 100644
--- a/appserver/tests/embedded/maven-plugin/dirListing/pom.xml
+++ b/appserver/tests/embedded/maven-plugin/dirListing/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.embedded</groupId>
         <artifactId>maven-plugin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <groupId>org.glassfish.tests.embedded.maven-plugin</groupId>
     <artifactId>dirListing</artifactId>
diff --git a/appserver/tests/embedded/maven-plugin/filterURIMapping/pom.xml b/appserver/tests/embedded/maven-plugin/filterURIMapping/pom.xml
index deb48c1..1324a45 100644
--- a/appserver/tests/embedded/maven-plugin/filterURIMapping/pom.xml
+++ b/appserver/tests/embedded/maven-plugin/filterURIMapping/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.embedded</groupId>
         <artifactId>maven-plugin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <groupId>org.glassfish.tests.embedded.maven-plugin</groupId>
     <artifactId>filterURIMapping</artifactId>
diff --git a/appserver/tests/embedded/maven-plugin/getRequestURI/pom.xml b/appserver/tests/embedded/maven-plugin/getRequestURI/pom.xml
index 696eb32..77499b8 100644
--- a/appserver/tests/embedded/maven-plugin/getRequestURI/pom.xml
+++ b/appserver/tests/embedded/maven-plugin/getRequestURI/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.embedded</groupId>
         <artifactId>maven-plugin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <groupId>org.glassfish.tests.embedded.maven-plugin</groupId>
     <artifactId>getRequestURI</artifactId>
diff --git a/appserver/tests/embedded/maven-plugin/index/pom.xml b/appserver/tests/embedded/maven-plugin/index/pom.xml
index 52dc134..a6c296a 100644
--- a/appserver/tests/embedded/maven-plugin/index/pom.xml
+++ b/appserver/tests/embedded/maven-plugin/index/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.embedded</groupId>
         <artifactId>maven-plugin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <groupId>org.glassfish.tests.embedded.maven-plugin</groupId>
     <artifactId>index</artifactId>
diff --git a/appserver/tests/embedded/maven-plugin/init/pom.xml b/appserver/tests/embedded/maven-plugin/init/pom.xml
index 8df1157..81cdbc0 100644
--- a/appserver/tests/embedded/maven-plugin/init/pom.xml
+++ b/appserver/tests/embedded/maven-plugin/init/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.embedded</groupId>
         <artifactId>maven-plugin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <groupId>org.glassfish.tests.embedded.maven-plugin</groupId>
     <artifactId>init</artifactId>
diff --git a/appserver/tests/embedded/maven-plugin/jmxUndeployEvent/pom.xml b/appserver/tests/embedded/maven-plugin/jmxUndeployEvent/pom.xml
index bc8c45a..810227e 100644
--- a/appserver/tests/embedded/maven-plugin/jmxUndeployEvent/pom.xml
+++ b/appserver/tests/embedded/maven-plugin/jmxUndeployEvent/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.embedded</groupId>
         <artifactId>maven-plugin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <groupId>org.glassfish.tests.embedded.maven-plugin</groupId>
     <artifactId>jmxUndeployEvent</artifactId>
diff --git a/appserver/tests/embedded/maven-plugin/jsftest/pom.xml b/appserver/tests/embedded/maven-plugin/jsftest/pom.xml
index 03581fa..4877700 100644
--- a/appserver/tests/embedded/maven-plugin/jsftest/pom.xml
+++ b/appserver/tests/embedded/maven-plugin/jsftest/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.tests.embedded</groupId>
         <artifactId>maven-plugin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <groupId>org.glassfish.tests.embedded.maven-plugin</groupId>
     <artifactId>jsftest</artifactId>
diff --git a/appserver/tests/embedded/maven-plugin/jsptest/pom.xml b/appserver/tests/embedded/maven-plugin/jsptest/pom.xml
index 8566ffe..6282799 100644
--- a/appserver/tests/embedded/maven-plugin/jsptest/pom.xml
+++ b/appserver/tests/embedded/maven-plugin/jsptest/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.tests.embedded</groupId>
         <artifactId>maven-plugin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <groupId>org.glassfish.tests.embedded.maven-plugin</groupId>
     <artifactId>jsptest</artifactId>
diff --git a/appserver/tests/embedded/maven-plugin/localejbs/pom.xml b/appserver/tests/embedded/maven-plugin/localejbs/pom.xml
index 15e3b95..4153988 100644
--- a/appserver/tests/embedded/maven-plugin/localejbs/pom.xml
+++ b/appserver/tests/embedded/maven-plugin/localejbs/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.embedded</groupId>
         <artifactId>maven-plugin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <groupId>org.glassfish.tests.embedded.maven-plugin</groupId>
     <artifactId>localejbs</artifactId>
diff --git a/appserver/tests/embedded/maven-plugin/mdb/pom.xml b/appserver/tests/embedded/maven-plugin/mdb/pom.xml
index f21c3ba..34ca01a 100644
--- a/appserver/tests/embedded/maven-plugin/mdb/pom.xml
+++ b/appserver/tests/embedded/maven-plugin/mdb/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.embedded</groupId>
         <artifactId>maven-plugin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <groupId>org.glassfish.tests.embedded.maven-plugin</groupId>
     <artifactId>mdb</artifactId>
diff --git a/appserver/tests/embedded/maven-plugin/multipleApps/pom.xml b/appserver/tests/embedded/maven-plugin/multipleApps/pom.xml
index 5b45b95..683eb8c 100644
--- a/appserver/tests/embedded/maven-plugin/multipleApps/pom.xml
+++ b/appserver/tests/embedded/maven-plugin/multipleApps/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.tests.embedded</groupId>
         <artifactId>maven-plugin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <groupId>org.glassfish.tests.embedded.maven-plugin</groupId>
     <artifactId>multipleApps</artifactId>
diff --git a/appserver/tests/embedded/maven-plugin/pom.xml b/appserver/tests/embedded/maven-plugin/pom.xml
index c8f7edd..cd44a04 100644
--- a/appserver/tests/embedded/maven-plugin/pom.xml
+++ b/appserver/tests/embedded/maven-plugin/pom.xml
@@ -23,7 +23,7 @@
 
     <groupId>org.glassfish.tests.embedded</groupId>
     <artifactId>maven-plugin</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <packaging>pom</packaging>
     <name>GlassFish Embedded Maven Plugin Tests</name>
 
diff --git a/appserver/tests/embedded/maven-plugin/queryString/pom.xml b/appserver/tests/embedded/maven-plugin/queryString/pom.xml
index 4f520f1..8eed0c7 100644
--- a/appserver/tests/embedded/maven-plugin/queryString/pom.xml
+++ b/appserver/tests/embedded/maven-plugin/queryString/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.embedded</groupId>
         <artifactId>maven-plugin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <groupId>org.glassfish.tests.embedded.maven-plugin</groupId>
     <artifactId>queryString</artifactId>
diff --git a/appserver/tests/embedded/maven-plugin/remoteejbs/pom.xml b/appserver/tests/embedded/maven-plugin/remoteejbs/pom.xml
index 57de1a9..02ef60e 100644
--- a/appserver/tests/embedded/maven-plugin/remoteejbs/pom.xml
+++ b/appserver/tests/embedded/maven-plugin/remoteejbs/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.embedded</groupId>
         <artifactId>maven-plugin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <groupId>org.glassfish.tests.embedded.maven-plugin</groupId>
     <artifactId>remoteejbs</artifactId>
diff --git a/appserver/tests/embedded/maven-plugin/scattered/pom.xml b/appserver/tests/embedded/maven-plugin/scattered/pom.xml
index 2f4485a..ec37c3c 100644
--- a/appserver/tests/embedded/maven-plugin/scattered/pom.xml
+++ b/appserver/tests/embedded/maven-plugin/scattered/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.glassfish.tests.embedded</groupId>
         <artifactId>maven-plugin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <groupId>org.glassfish</groupId>
     <artifactId>scattered</artifactId>
diff --git a/appserver/tests/embedded/maven-plugin/secureWebApp/pom.xml b/appserver/tests/embedded/maven-plugin/secureWebApp/pom.xml
index 2afe5ab..ef13694 100644
--- a/appserver/tests/embedded/maven-plugin/secureWebApp/pom.xml
+++ b/appserver/tests/embedded/maven-plugin/secureWebApp/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.tests.embedded</groupId>
         <artifactId>maven-plugin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <groupId>org.glassfish.tests.embedded.maven-plugin</groupId>
     <artifactId>securewebapp</artifactId>
diff --git a/appserver/tests/embedded/maven-plugin/sessionDestroyed/pom.xml b/appserver/tests/embedded/maven-plugin/sessionDestroyed/pom.xml
index 3e110eb..8b0d3f0 100644
--- a/appserver/tests/embedded/maven-plugin/sessionDestroyed/pom.xml
+++ b/appserver/tests/embedded/maven-plugin/sessionDestroyed/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.embedded</groupId>
         <artifactId>maven-plugin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <groupId>org.glassfish.tests.embedded.maven-plugin</groupId>
     <artifactId>sessionDestroyed</artifactId>
diff --git a/appserver/tests/embedded/maven-plugin/simple/pom.xml b/appserver/tests/embedded/maven-plugin/simple/pom.xml
index cac40cc..e03c8ff 100644
--- a/appserver/tests/embedded/maven-plugin/simple/pom.xml
+++ b/appserver/tests/embedded/maven-plugin/simple/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.glassfish.tests.embedded</groupId>
         <artifactId>maven-plugin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <groupId>org.glassfish</groupId>
     <artifactId>maven-glassfish-plugin-tester-deploy</artifactId>
diff --git a/appserver/tests/embedded/maven-plugin/standalonewar/pom.xml b/appserver/tests/embedded/maven-plugin/standalonewar/pom.xml
index b77ddf4..3fa4b1c 100644
--- a/appserver/tests/embedded/maven-plugin/standalonewar/pom.xml
+++ b/appserver/tests/embedded/maven-plugin/standalonewar/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.embedded</groupId>
         <artifactId>maven-plugin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <groupId>org.glassfish.tests.embedded.maven-plugin</groupId>
     <artifactId>standalonewar</artifactId>
diff --git a/appserver/tests/embedded/maven-plugin/static-shell-init/pom.xml b/appserver/tests/embedded/maven-plugin/static-shell-init/pom.xml
index 7cb995d..6821553 100644
--- a/appserver/tests/embedded/maven-plugin/static-shell-init/pom.xml
+++ b/appserver/tests/embedded/maven-plugin/static-shell-init/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.embedded</groupId>
         <artifactId>maven-plugin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <groupId>org.glassfish.tests.embedded.maven-plugin</groupId>
     <artifactId>init</artifactId>
diff --git a/appserver/tests/embedded/maven-plugin/webservice/pom.xml b/appserver/tests/embedded/maven-plugin/webservice/pom.xml
index a598361..5f70958 100644
--- a/appserver/tests/embedded/maven-plugin/webservice/pom.xml
+++ b/appserver/tests/embedded/maven-plugin/webservice/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.tests.embedded</groupId>
         <artifactId>maven-plugin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <groupId>org.glassfish.tests.embedded.maven-plugin</groupId>
     <artifactId>webservice</artifactId>
diff --git a/appserver/tests/embedded/maven-plugin/websockets/pom.xml b/appserver/tests/embedded/maven-plugin/websockets/pom.xml
index 54940d6..f0a4c9e 100644
--- a/appserver/tests/embedded/maven-plugin/websockets/pom.xml
+++ b/appserver/tests/embedded/maven-plugin/websockets/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.embedded</groupId>
         <artifactId>maven-plugin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <groupId>org.glassfish.tests.embedded.maven-plugin</groupId>
     <artifactId>websockets</artifactId>
diff --git a/appserver/tests/embedded/mysql/pom.xml b/appserver/tests/embedded/mysql/pom.xml
index 5265a1d..b16a447 100644
--- a/appserver/tests/embedded/mysql/pom.xml
+++ b/appserver/tests/embedded/mysql/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.embedded</groupId>
     <artifactId>mysql</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <packaging>war</packaging>
     <name>Simple web application which uses mysql as database</name>
     <build>
@@ -65,7 +65,7 @@
         <dependency>
             <groupId>org.glassfish.main.extras</groupId>
             <artifactId>glassfish-embedded-all</artifactId>
-            <version>6.2.6-SNAPSHOT</version>
+            <version>7.0.0-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>mysql</groupId>
diff --git a/appserver/tests/embedded/pom.xml b/appserver/tests/embedded/pom.xml
index 2a6ee4d..816ad95 100755
--- a/appserver/tests/embedded/pom.xml
+++ b/appserver/tests/embedded/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests</groupId>
     <artifactId>embedded</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <packaging>pom</packaging>
     <name>GlassFish Embedded Tests</name>
 
diff --git a/appserver/tests/embedded/scatteredarchive/pom.xml b/appserver/tests/embedded/scatteredarchive/pom.xml
index 8c03419..235281f 100644
--- a/appserver/tests/embedded/scatteredarchive/pom.xml
+++ b/appserver/tests/embedded/scatteredarchive/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.embedded.basic</groupId>
     <artifactId>scatteredarchive</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Scattered Archive Test</name>
     <build>
     <finalName>scatteredarchive</finalName>
@@ -57,7 +57,7 @@
                 <dependency>
                     <groupId>org.glassfish.main.extras</groupId>
                     <artifactId>glassfish-embedded-all</artifactId>
-                    <version>6.2.6-SNAPSHOT</version>
+                    <version>7.0.0-SNAPSHOT</version>
                 </dependency>
             </dependencies>
         </profile>
diff --git a/appserver/tests/embedded/servlet_runs_admin_cmds/pom.xml b/appserver/tests/embedded/servlet_runs_admin_cmds/pom.xml
index 6d0c280..4c60712 100644
--- a/appserver/tests/embedded/servlet_runs_admin_cmds/pom.xml
+++ b/appserver/tests/embedded/servlet_runs_admin_cmds/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.embedded.basic</groupId>
     <artifactId>servlet_runs_admin_cmds</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Servlet Running Admin Commands using org.glassfish.embeddable.CommandRunner</name>
     <packaging>war</packaging>
     <build>
diff --git a/appserver/tests/embedded/static/ejb/pom.xml b/appserver/tests/embedded/static/ejb/pom.xml
index 73cd96c..14c8b91 100755
--- a/appserver/tests/embedded/static/ejb/pom.xml
+++ b/appserver/tests/embedded/static/ejb/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.embedded</groupId>
         <artifactId>static</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
     <groupId>org.glassfish.tests.embedded.static</groupId>
diff --git a/appserver/tests/embedded/static/ejb/simple/pom.xml b/appserver/tests/embedded/static/ejb/simple/pom.xml
index c94d94e..174939f 100644
--- a/appserver/tests/embedded/static/ejb/simple/pom.xml
+++ b/appserver/tests/embedded/static/ejb/simple/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.glassfish.tests.embedded.static</groupId>
         <artifactId>ejb</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
@@ -44,7 +44,7 @@
         <dependency>
             <groupId>org.glassfish.extras</groupId>
             <artifactId>glassfish-embedded-web</artifactId>
-            <version>6.2.6-SNAPSHOT</version>
+            <version>7.0.0-SNAPSHOT</version>
             <scope>test</scope>
         </dependency>
     </dependencies>
diff --git a/appserver/tests/embedded/static/pom.xml b/appserver/tests/embedded/static/pom.xml
index fc7065a..6b671e5 100755
--- a/appserver/tests/embedded/static/pom.xml
+++ b/appserver/tests/embedded/static/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests</groupId>
         <artifactId>embedded</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
     <groupId>org.glassfish.tests.embedded</groupId>
diff --git a/appserver/tests/embedded/static/web/pom.xml b/appserver/tests/embedded/static/web/pom.xml
index 6d6503b..bf0fdda 100755
--- a/appserver/tests/embedded/static/web/pom.xml
+++ b/appserver/tests/embedded/static/web/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
diff --git a/appserver/tests/embedded/static/web/src/test/java/org/glassfish/tests/embedded/cooked/ExistingConfigurationTest.java b/appserver/tests/embedded/static/web/src/test/java/org/glassfish/tests/embedded/cooked/ExistingConfigurationTest.java
index ebfbc41..10f3aa6 100644
--- a/appserver/tests/embedded/static/web/src/test/java/org/glassfish/tests/embedded/cooked/ExistingConfigurationTest.java
+++ b/appserver/tests/embedded/static/web/src/test/java/org/glassfish/tests/embedded/cooked/ExistingConfigurationTest.java
@@ -42,7 +42,7 @@
         File f = new File(System.getProperty("basedir"));
         f = new File(f, "target");
         f = new File(f, "dependency");
-        f = new File(f, "glassfish6");
+        f = new File(f, "glassfish7");
         f = new File(f, "glassfish");
         if (f.exists()) {
             System.out.println("Using gf at " + f.getAbsolutePath());
diff --git a/appserver/tests/embedded/static/web/src/test/java/org/glassfish/tests/embedded/cooked/ExistingDomainTest.java b/appserver/tests/embedded/static/web/src/test/java/org/glassfish/tests/embedded/cooked/ExistingDomainTest.java
index b040dd2..8b68c24 100644
--- a/appserver/tests/embedded/static/web/src/test/java/org/glassfish/tests/embedded/cooked/ExistingDomainTest.java
+++ b/appserver/tests/embedded/static/web/src/test/java/org/glassfish/tests/embedded/cooked/ExistingDomainTest.java
@@ -43,7 +43,7 @@
         File f = new File(System.getProperty("basedir"));
         f = new File(f, "target");
         f = new File(f, "dependency");
-        f = new File(f, "glassfish6");
+        f = new File(f, "glassfish7");
         f = new File(f, "glassfish");
         if (f.exists()) {
             System.out.println("Using gf at " + f.getAbsolutePath());
diff --git a/appserver/tests/embedded/static/web/src/test/java/org/glassfish/tests/embedded/cooked/InplantedTest.java b/appserver/tests/embedded/static/web/src/test/java/org/glassfish/tests/embedded/cooked/InplantedTest.java
index 0d622d8..2d83d47 100644
--- a/appserver/tests/embedded/static/web/src/test/java/org/glassfish/tests/embedded/cooked/InplantedTest.java
+++ b/appserver/tests/embedded/static/web/src/test/java/org/glassfish/tests/embedded/cooked/InplantedTest.java
@@ -42,7 +42,7 @@
         File f = new File(System.getProperty("basedir"));
         f = new File(f, "target");
         f = new File(f, "dependency");
-        f = new File(f, "glassfish6");
+        f = new File(f, "glassfish7");
         f = new File(f, "glassfish");
         if (f.exists()) {
             System.out.println("Using gf at " + f.getAbsolutePath());
diff --git a/appserver/tests/embedded/utils/pom.xml b/appserver/tests/embedded/utils/pom.xml
index 9ebc14f..deb69e8 100644
--- a/appserver/tests/embedded/utils/pom.xml
+++ b/appserver/tests/embedded/utils/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests</groupId>
         <artifactId>embedded</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
     <groupId>org.glassfish.tests.embedded</groupId>
@@ -33,7 +33,7 @@
         <dependency>
             <groupId>org.glassfish.main.extras</groupId>
             <artifactId>glassfish-embedded-shell</artifactId>
-            <version>6.2.6-SNAPSHOT</version>
+            <version>7.0.0-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>junit</groupId>
diff --git a/appserver/tests/embedded/utils/src/main/java/org/glassfish/tests/embedded/utils/EmbeddedServerUtils.java b/appserver/tests/embedded/utils/src/main/java/org/glassfish/tests/embedded/utils/EmbeddedServerUtils.java
index 9d63306..5d6cdf3 100644
--- a/appserver/tests/embedded/utils/src/main/java/org/glassfish/tests/embedded/utils/EmbeddedServerUtils.java
+++ b/appserver/tests/embedded/utils/src/main/java/org/glassfish/tests/embedded/utils/EmbeddedServerUtils.java
@@ -30,7 +30,7 @@
         File f = new File(System.getProperty("basedir"));
         f = new File(f, "target");
         f = new File(f, "dependency");
-        f = new File(f, "glassfish6");
+        f = new File(f, "glassfish7");
         f = new File(f, "glassfish");
         if (f.exists()) {
             System.out.println("Using gf at " + f.getAbsolutePath());
diff --git a/appserver/tests/embedded/web/autodelete/pom.xml b/appserver/tests/embedded/web/autodelete/pom.xml
index 28af6ee..2e1f79e 100644
--- a/appserver/tests/embedded/web/autodelete/pom.xml
+++ b/appserver/tests/embedded/web/autodelete/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.embedded</groupId>
         <artifactId>web</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/tests/embedded/web/pom.xml b/appserver/tests/embedded/web/pom.xml
index dd54ede..f0192ea 100755
--- a/appserver/tests/embedded/web/pom.xml
+++ b/appserver/tests/embedded/web/pom.xml
@@ -23,7 +23,7 @@
     <groupId>org.glassfish.tests.embedded</groupId>
     <artifactId>web</artifactId>
     <packaging>pom</packaging>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>GlassFish Web Embedded Tests</name>
     <modules>
         <module>web-api</module>
diff --git a/appserver/tests/embedded/web/servlet/pom.xml b/appserver/tests/embedded/web/servlet/pom.xml
index 2f45096..ac21c49 100644
--- a/appserver/tests/embedded/web/servlet/pom.xml
+++ b/appserver/tests/embedded/web/servlet/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.embedded</groupId>
         <artifactId>web</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/tests/embedded/web/web-all/pom.xml b/appserver/tests/embedded/web/web-all/pom.xml
index 26d061c..765b423 100644
--- a/appserver/tests/embedded/web/web-all/pom.xml
+++ b/appserver/tests/embedded/web/web-all/pom.xml
@@ -28,13 +28,13 @@
     <!--<parent>-->
     <!--<groupId>org.glassfish</groupId>-->
     <!--<artifactId>glassfish-parent</artifactId>-->
-    <!--<version>6.2.6-SNAPSHOT</version>-->
+    <!--<version>7.0.0-SNAPSHOT</version>-->
     <!--</parent>-->
 
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests</groupId>
     <artifactId>web-all-embedded-test</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Test for glassfish-embedded-web</name>
 
     <properties>
@@ -118,7 +118,7 @@
                 <dependency>
                     <groupId>org.glassfish.extras</groupId>
                     <artifactId>glassfish-embedded-all</artifactId>
-                    <version>6.2.6-SNAPSHOT</version>
+                    <version>7.0.0-SNAPSHOT</version>
                 </dependency>
             </dependencies>
         </profile>
diff --git a/appserver/tests/embedded/web/web-api/pom.xml b/appserver/tests/embedded/web/web-api/pom.xml
index 1bae4ac..5175920 100755
--- a/appserver/tests/embedded/web/web-api/pom.xml
+++ b/appserver/tests/embedded/web/web-api/pom.xml
@@ -24,7 +24,7 @@
     <groupId>org.glassfish.tests.embedded</groupId>
     <artifactId>web-api-embedded-test</artifactId>
     <packaging>war</packaging>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Test for glassfish-embedded-web</name>
 
     <build>
@@ -72,7 +72,7 @@
                 <dependency>
                     <groupId>org.glassfish.main.extras</groupId>
                     <artifactId>glassfish-embedded-web</artifactId>
-                    <version>6.2.6-SNAPSHOT</version>
+                    <version>7.0.0-SNAPSHOT</version>
                 </dependency>
                 <dependency>
                     <groupId>junit</groupId>
diff --git a/appserver/tests/embedded/web/web-api/src/main/resources/org/glassfish/tests/webapi/my-default-web.xml b/appserver/tests/embedded/web/web-api/src/main/resources/org/glassfish/tests/webapi/my-default-web.xml
index 63060f1..dc6ccfd 100644
--- a/appserver/tests/embedded/web/web-api/src/main/resources/org/glassfish/tests/webapi/my-default-web.xml
+++ b/appserver/tests/embedded/web/web-api/src/main/resources/org/glassfish/tests/webapi/my-default-web.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
 <!--
 
+	Copyright (c) 2021 Contributors to Eclipse Foundation.
     Copyright (c) 2006, 2018 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
@@ -268,7 +269,7 @@
 
   <servlet>
     <servlet-name>jsp</servlet-name>
-    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
+    <servlet-class>org.glassfish.wasp.servlet.JspServlet</servlet-class>
     <init-param>
       <param-name>xpoweredBy</param-name>
       <param-value>true</param-value>
diff --git a/appserver/tests/embedded/web/web-war/pom.xml b/appserver/tests/embedded/web/web-war/pom.xml
index e06f3d7..f42ec2e 100644
--- a/appserver/tests/embedded/web/web-war/pom.xml
+++ b/appserver/tests/embedded/web/web-war/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests</groupId>
         <artifactId>embedded</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/tests/embedded/web/web-war/test/pom.xml b/appserver/tests/embedded/web/web-war/test/pom.xml
index 3226144..e907d6d 100644
--- a/appserver/tests/embedded/web/web-war/test/pom.xml
+++ b/appserver/tests/embedded/web/web-war/test/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests</groupId>
         <artifactId>embedded-web-war</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
@@ -139,7 +139,7 @@
         <dependency>
             <groupId>org.glassfish.transaction</groupId>
             <artifactId>jta</artifactId>
-            <version>6.2.6-SNAPSHOT</version>
+            <version>7.0.0-SNAPSHOT</version>
             <scope>test</scope>
         </dependency>
         <dependency>
diff --git a/appserver/tests/embedded/web/web-war/war/pom.xml b/appserver/tests/embedded/web/web-war/war/pom.xml
index 0d695ad..407abd3 100644
--- a/appserver/tests/embedded/web/web-war/war/pom.xml
+++ b/appserver/tests/embedded/web/web-war/war/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests</groupId>
         <artifactId>embedded-web-war</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/tests/embedded/web/web-war/web-fragment1/pom.xml b/appserver/tests/embedded/web/web-war/web-fragment1/pom.xml
index aafb5f2..61650c1 100644
--- a/appserver/tests/embedded/web/web-war/web-fragment1/pom.xml
+++ b/appserver/tests/embedded/web/web-war/web-fragment1/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests</groupId>
         <artifactId>embedded-web-war</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/tests/embedded/web/web-war/web-fragment2/pom.xml b/appserver/tests/embedded/web/web-war/web-fragment2/pom.xml
index d1f3fd5..87ca366 100644
--- a/appserver/tests/embedded/web/web-war/web-fragment2/pom.xml
+++ b/appserver/tests/embedded/web/web-war/web-fragment2/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests</groupId>
         <artifactId>embedded-web-war</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/tests/embedded/web/web-war/web-fragment3/pom.xml b/appserver/tests/embedded/web/web-war/web-fragment3/pom.xml
index 08a1f76..7ef6fe5 100644
--- a/appserver/tests/embedded/web/web-war/web-fragment3/pom.xml
+++ b/appserver/tests/embedded/web/web-war/web-fragment3/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests</groupId>
         <artifactId>embedded-web-war</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/tests/embedded/wrapper/pom.xml b/appserver/tests/embedded/wrapper/pom.xml
index 5f26ede..eb41bb8 100644
--- a/appserver/tests/embedded/wrapper/pom.xml
+++ b/appserver/tests/embedded/wrapper/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.test</groupId>
     <artifactId>test-wrapper</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Embedded GlassFish Wrapper</name>
 
     <dependencies>
diff --git a/appserver/tests/hk2/README.txt b/appserver/tests/hk2/README.txt
index 6fc2631..7fb49a4 100644
--- a/appserver/tests/hk2/README.txt
+++ b/appserver/tests/hk2/README.txt
@@ -6,7 +6,7 @@
 
 To run the tests something like this line should be run:
 
-mvn -Dglassfish.home=/scratch/jwells/bg/installs/gf/glassfish6/glassfish \
+mvn -Dglassfish.home=/scratch/jwells/bg/installs/gf/glassfish7/glassfish \
     -Dsource.home=/scratch/jwells/bg/all/main \
 	clean install 2>&1 | tee t.out
 
diff --git a/appserver/tests/hk2/cdi/basic/ejb1/pom.xml b/appserver/tests/hk2/cdi/basic/ejb1/pom.xml
index 6332b95..ace7067 100644
--- a/appserver/tests/hk2/cdi/basic/ejb1/pom.xml
+++ b/appserver/tests/hk2/cdi/basic/ejb1/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.hk2.cdi</groupId>
         <artifactId>basic</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.tests.hk2.cdi.basic</groupId>
diff --git a/appserver/tests/hk2/cdi/basic/pom.xml b/appserver/tests/hk2/cdi/basic/pom.xml
index f6b36c4..aeafeab 100755
--- a/appserver/tests/hk2/cdi/basic/pom.xml
+++ b/appserver/tests/hk2/cdi/basic/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.hk2</groupId>
         <artifactId>cdi</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.tests.hk2.cdi</groupId>
diff --git a/appserver/tests/hk2/cdi/basic/runner/pom.xml b/appserver/tests/hk2/cdi/basic/runner/pom.xml
index 7ea1252..7bd4e20 100644
--- a/appserver/tests/hk2/cdi/basic/runner/pom.xml
+++ b/appserver/tests/hk2/cdi/basic/runner/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.hk2.cdi</groupId>
         <artifactId>basic</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.tests.hk2.cdi.basic</groupId>
diff --git a/appserver/tests/hk2/cdi/ear/app/pom.xml b/appserver/tests/hk2/cdi/ear/app/pom.xml
index 3c98636..944651b 100644
--- a/appserver/tests/hk2/cdi/ear/app/pom.xml
+++ b/appserver/tests/hk2/cdi/ear/app/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.hk2.cdi</groupId>
         <artifactId>ear</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.tests.hk2.cdi.ear</groupId>
diff --git a/appserver/tests/hk2/cdi/ear/ejb1/pom.xml b/appserver/tests/hk2/cdi/ear/ejb1/pom.xml
index 033275a..2731259 100644
--- a/appserver/tests/hk2/cdi/ear/ejb1/pom.xml
+++ b/appserver/tests/hk2/cdi/ear/ejb1/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.hk2.cdi</groupId>
         <artifactId>ear</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.tests.hk2.cdi.ear</groupId>
diff --git a/appserver/tests/hk2/cdi/ear/ejb2/pom.xml b/appserver/tests/hk2/cdi/ear/ejb2/pom.xml
index 3c573e5..ba13220 100644
--- a/appserver/tests/hk2/cdi/ear/ejb2/pom.xml
+++ b/appserver/tests/hk2/cdi/ear/ejb2/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.hk2.cdi</groupId>
         <artifactId>ear</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.tests.hk2.cdi.ear</groupId>
diff --git a/appserver/tests/hk2/cdi/ear/lib1/pom.xml b/appserver/tests/hk2/cdi/ear/lib1/pom.xml
index 1d0490a..4526397 100644
--- a/appserver/tests/hk2/cdi/ear/lib1/pom.xml
+++ b/appserver/tests/hk2/cdi/ear/lib1/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.hk2.cdi</groupId>
         <artifactId>ear</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.tests.hk2.cdi.ear</groupId>
diff --git a/appserver/tests/hk2/cdi/ear/pom.xml b/appserver/tests/hk2/cdi/ear/pom.xml
index cb92aeb..2aa3e39 100755
--- a/appserver/tests/hk2/cdi/ear/pom.xml
+++ b/appserver/tests/hk2/cdi/ear/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.hk2</groupId>
         <artifactId>cdi</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.tests.hk2.cdi</groupId>
diff --git a/appserver/tests/hk2/cdi/ear/runner/pom.xml b/appserver/tests/hk2/cdi/ear/runner/pom.xml
index 4ab7103..c92a348 100644
--- a/appserver/tests/hk2/cdi/ear/runner/pom.xml
+++ b/appserver/tests/hk2/cdi/ear/runner/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.hk2.cdi</groupId>
         <artifactId>ear</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.tests.hk2.cdi.ear</groupId>
diff --git a/appserver/tests/hk2/cdi/ear/war1/pom.xml b/appserver/tests/hk2/cdi/ear/war1/pom.xml
index a744fc6..1b64c44 100644
--- a/appserver/tests/hk2/cdi/ear/war1/pom.xml
+++ b/appserver/tests/hk2/cdi/ear/war1/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.hk2.cdi</groupId>
         <artifactId>ear</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.tests.hk2.cdi.ear</groupId>
diff --git a/appserver/tests/hk2/cdi/ear/war2/pom.xml b/appserver/tests/hk2/cdi/ear/war2/pom.xml
index 3bc9daa..fbe6caf 100644
--- a/appserver/tests/hk2/cdi/ear/war2/pom.xml
+++ b/appserver/tests/hk2/cdi/ear/war2/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.hk2.cdi</groupId>
         <artifactId>ear</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.tests.hk2.cdi.ear</groupId>
diff --git a/appserver/tests/hk2/cdi/jersey/pom.xml b/appserver/tests/hk2/cdi/jersey/pom.xml
index a0cb985..6e394b6 100755
--- a/appserver/tests/hk2/cdi/jersey/pom.xml
+++ b/appserver/tests/hk2/cdi/jersey/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.hk2</groupId>
         <artifactId>cdi</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.tests.hk2.cdi</groupId>
diff --git a/appserver/tests/hk2/cdi/jersey/runner/pom.xml b/appserver/tests/hk2/cdi/jersey/runner/pom.xml
index 163bd36..125ef49 100644
--- a/appserver/tests/hk2/cdi/jersey/runner/pom.xml
+++ b/appserver/tests/hk2/cdi/jersey/runner/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests.hk2.cdi</groupId>
         <artifactId>jersey</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.tests.hk2.cdi.jersey</groupId>
diff --git a/appserver/tests/hk2/cdi/jersey/war/pom.xml b/appserver/tests/hk2/cdi/jersey/war/pom.xml
index c43ea06..d3a6bdf 100644
--- a/appserver/tests/hk2/cdi/jersey/war/pom.xml
+++ b/appserver/tests/hk2/cdi/jersey/war/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.glassfish.tests.hk2.cdi</groupId>
         <artifactId>jersey</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.tests.hk2.cdi.jersey</groupId>
diff --git a/appserver/tests/hk2/cdi/pom.xml b/appserver/tests/hk2/cdi/pom.xml
index 1f4aaef..b5f421f 100755
--- a/appserver/tests/hk2/cdi/pom.xml
+++ b/appserver/tests/hk2/cdi/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.tests</groupId>
         <artifactId>hk2</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.tests.hk2</groupId>
diff --git a/appserver/tests/hk2/isolation/pom.xml b/appserver/tests/hk2/isolation/pom.xml
index cc29cd8..d144c09 100755
--- a/appserver/tests/hk2/isolation/pom.xml
+++ b/appserver/tests/hk2/isolation/pom.xml
@@ -23,14 +23,14 @@
     <parent>
         <groupId>org.glassfish.tests</groupId>
         <artifactId>hk2</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
     <groupId>org.glassfish.tests.hk2</groupId>
     <artifactId>isolation</artifactId>
     <packaging>pom</packaging>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
 
     <name>GlassFish HK2 Isolation Tests</name>
     <modules>
diff --git a/appserver/tests/hk2/isolation/runner/pom.xml b/appserver/tests/hk2/isolation/runner/pom.xml
index a3a3073..ef3aba1 100755
--- a/appserver/tests/hk2/isolation/runner/pom.xml
+++ b/appserver/tests/hk2/isolation/runner/pom.xml
@@ -23,14 +23,14 @@
     <parent>
         <groupId>org.glassfish.tests.hk2</groupId>
         <artifactId>isolation</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
     <groupId>org.glassfish.tests.hk2.isolation</groupId>
     <artifactId>runner</artifactId>
     <packaging>jar</packaging>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
 
     <name>GlassFish HK2 Isolation Test Runner</name>
 
diff --git a/appserver/tests/hk2/isolation/web/iso1/pom.xml b/appserver/tests/hk2/isolation/web/iso1/pom.xml
index e5cf6cf..c67b2d2 100644
--- a/appserver/tests/hk2/isolation/web/iso1/pom.xml
+++ b/appserver/tests/hk2/isolation/web/iso1/pom.xml
@@ -23,13 +23,13 @@
     <parent>
         <groupId>org.glassfish.tests.hk2.isolation</groupId>
         <artifactId>web</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
     <groupId>org.glassfish.tests.hk2.isolation.web</groupId>
     <artifactId>iso1</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <packaging>war</packaging>
 
     <name>Isolation servlet one</name>
diff --git a/appserver/tests/hk2/isolation/web/iso2/pom.xml b/appserver/tests/hk2/isolation/web/iso2/pom.xml
index 0526b34..089e693 100644
--- a/appserver/tests/hk2/isolation/web/iso2/pom.xml
+++ b/appserver/tests/hk2/isolation/web/iso2/pom.xml
@@ -23,13 +23,13 @@
     <parent>
         <groupId>org.glassfish.tests.hk2.isolation</groupId>
         <artifactId>web</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
     <groupId>org.glassfish.tests.hk2.isolation.web</groupId>
     <artifactId>iso2</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <packaging>war</packaging>
 
     <name>Isolation servlet two</name>
diff --git a/appserver/tests/hk2/isolation/web/pom.xml b/appserver/tests/hk2/isolation/web/pom.xml
index f99bf08..65053ed 100755
--- a/appserver/tests/hk2/isolation/web/pom.xml
+++ b/appserver/tests/hk2/isolation/web/pom.xml
@@ -23,14 +23,14 @@
     <parent>
         <groupId>org.glassfish.tests.hk2</groupId>
         <artifactId>isolation</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
     <groupId>org.glassfish.tests.hk2.isolation</groupId>
     <artifactId>web</artifactId>
     <packaging>pom</packaging>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
 
     <name>GlassFish HK2 Isolation WebApps</name>
     <modules>
diff --git a/appserver/tests/hk2/pom.xml b/appserver/tests/hk2/pom.xml
index 8cda20d..79293f8 100755
--- a/appserver/tests/hk2/pom.xml
+++ b/appserver/tests/hk2/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.tests</groupId>
         <artifactId>tests</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.tests</groupId>
diff --git a/appserver/tests/paas/README.txt b/appserver/tests/paas/README.txt
index b97d346..bf4a00b 100644
--- a/appserver/tests/paas/README.txt
+++ b/appserver/tests/paas/README.txt
@@ -3,7 +3,7 @@
 
 1. Unzip latest version of glassfish.zip and set S1AS_HOME enviroment variable to point to the extracted GlassFish location.
 
-  For example: export S1AS_HOME=/tmp/glassfish6/glassfish
+  For example: export S1AS_HOME=/tmp/glassfish7/glassfish
 
 2. Also set PAAS_TESTS_HOME environment variable to point to the location where paas tests are checked out.
 
diff --git a/appserver/tests/paas/appscoped-db-with-resources-xml/pom.xml b/appserver/tests/paas/appscoped-db-with-resources-xml/pom.xml
index 148995c..558cc57 100644
--- a/appserver/tests/paas/appscoped-db-with-resources-xml/pom.xml
+++ b/appserver/tests/paas/appscoped-db-with-resources-xml/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.paas</groupId>
     <artifactId>appscoped-db-with-resources-xml</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Appscoped DB Service with glassfish-resources.xml sample</name>
     <packaging>war</packaging>
     <build>
diff --git a/appserver/tests/paas/basic-bookstore-dns/pom.xml b/appserver/tests/paas/basic-bookstore-dns/pom.xml
index 52df3c0..2fb4c46 100644
--- a/appserver/tests/paas/basic-bookstore-dns/pom.xml
+++ b/appserver/tests/paas/basic-bookstore-dns/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.paas</groupId>
     <artifactId>basic-bookstore-dns</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Basic Bookstore DNS sample</name>
     <packaging>war</packaging>
     <build>
diff --git a/appserver/tests/paas/basic-db-initsql/pom.xml b/appserver/tests/paas/basic-db-initsql/pom.xml
index 28d98b8..155ab30 100644
--- a/appserver/tests/paas/basic-db-initsql/pom.xml
+++ b/appserver/tests/paas/basic-db-initsql/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.paas</groupId>
     <artifactId>basic-db-initsql</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Basic InitSQL PaaS sample</name>
     <packaging>war</packaging>
     <build>
diff --git a/appserver/tests/paas/basic-db-teardown-sql/pom.xml b/appserver/tests/paas/basic-db-teardown-sql/pom.xml
index fec7f28..cf1ced6 100644
--- a/appserver/tests/paas/basic-db-teardown-sql/pom.xml
+++ b/appserver/tests/paas/basic-db-teardown-sql/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.paas</groupId>
     <artifactId>basic-db-teardown-sql</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Basic DB Tear down SQL PaaS sample</name>
     <packaging>war</packaging>
     <build>
diff --git a/appserver/tests/paas/basic-db-with-resources-xml/pom.xml b/appserver/tests/paas/basic-db-with-resources-xml/pom.xml
index be1b443..aa5ab4f 100644
--- a/appserver/tests/paas/basic-db-with-resources-xml/pom.xml
+++ b/appserver/tests/paas/basic-db-with-resources-xml/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.paas</groupId>
     <artifactId>basic-db-with-resources-xml</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Basic DB with glassfish-resources.xml sample</name>
     <packaging>war</packaging>
     <build>
diff --git a/appserver/tests/paas/basic-db/pom.xml b/appserver/tests/paas/basic-db/pom.xml
index 3bf9b18..2cef70b 100644
--- a/appserver/tests/paas/basic-db/pom.xml
+++ b/appserver/tests/paas/basic-db/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.paas</groupId>
     <artifactId>basic-db</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Basic PaaS sample</name>
     <packaging>war</packaging>
     <build>
diff --git a/appserver/tests/paas/basic-jpa/pom.xml b/appserver/tests/paas/basic-jpa/pom.xml
index 7284893..a139857 100644
--- a/appserver/tests/paas/basic-jpa/pom.xml
+++ b/appserver/tests/paas/basic-jpa/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.paas</groupId>
     <artifactId>basic-jpa</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Basic JPA PaaS sample</name>
     <packaging>war</packaging>
     <build>
diff --git a/appserver/tests/paas/basic-service-discovery/pom.xml b/appserver/tests/paas/basic-service-discovery/pom.xml
index 7e9226e..be47e39 100644
--- a/appserver/tests/paas/basic-service-discovery/pom.xml
+++ b/appserver/tests/paas/basic-service-discovery/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.paas</groupId>
     <artifactId>basic-sd</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Basic Service Discovery PaaS sample</name>
     <packaging>war</packaging>
     <build>
diff --git a/appserver/tests/paas/basic-shared-service-test/pom.xml b/appserver/tests/paas/basic-shared-service-test/pom.xml
index aca6e93..ab531a6 100644
--- a/appserver/tests/paas/basic-shared-service-test/pom.xml
+++ b/appserver/tests/paas/basic-shared-service-test/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.paas</groupId>
     <artifactId>basic-shared-service-test</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Basic Shared Sevice Test</name>
     <packaging>war</packaging>
     <build>
diff --git a/appserver/tests/paas/basic/pom.xml b/appserver/tests/paas/basic/pom.xml
index 42fc7d3..0874ea6 100644
--- a/appserver/tests/paas/basic/pom.xml
+++ b/appserver/tests/paas/basic/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.paas</groupId>
     <artifactId>basic</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Basic PaaS sample</name>
     <packaging>war</packaging>
     <build>
diff --git a/appserver/tests/paas/bookstore/pom.xml b/appserver/tests/paas/bookstore/pom.xml
index 77efd73..d90ca58 100644
--- a/appserver/tests/paas/bookstore/pom.xml
+++ b/appserver/tests/paas/bookstore/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.paas</groupId>
     <artifactId>bookstore</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Bookstore PaaS sample</name>
     <packaging>war</packaging>
     <build>
diff --git a/appserver/tests/paas/deployment-rollback/pom.xml b/appserver/tests/paas/deployment-rollback/pom.xml
index 3a20a9c..e63ea81 100644
--- a/appserver/tests/paas/deployment-rollback/pom.xml
+++ b/appserver/tests/paas/deployment-rollback/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.paas</groupId>
     <artifactId>rollback-test</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Deployment Rollback Test</name>
     <packaging>war</packaging>
     <build>
diff --git a/appserver/tests/paas/enable-disable-test/pom.xml b/appserver/tests/paas/enable-disable-test/pom.xml
index e059bac..e797cdb 100644
--- a/appserver/tests/paas/enable-disable-test/pom.xml
+++ b/appserver/tests/paas/enable-disable-test/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.paas</groupId>
     <artifactId>enable-disable-test</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Enable Disable Test</name>
     <packaging>war</packaging>
     <build>
diff --git a/appserver/tests/paas/ext-shared-service-enable-disable-test/pom.xml b/appserver/tests/paas/ext-shared-service-enable-disable-test/pom.xml
index 4f0d37c..0135468 100644
--- a/appserver/tests/paas/ext-shared-service-enable-disable-test/pom.xml
+++ b/appserver/tests/paas/ext-shared-service-enable-disable-test/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.paas</groupId>
     <artifactId>ext-shared-service-enable-disable-test</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Enable Disable External and Shared Service Test</name>
     <packaging>war</packaging>
     <build>
diff --git a/appserver/tests/paas/external-and-shared-service/pom.xml b/appserver/tests/paas/external-and-shared-service/pom.xml
index 4cee3d4..e8adcf5 100644
--- a/appserver/tests/paas/external-and-shared-service/pom.xml
+++ b/appserver/tests/paas/external-and-shared-service/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.paas</groupId>
     <artifactId>external-and-shared-service-test</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>External and Shared Service Test</name>
     <packaging>war</packaging>
     <build>
diff --git a/appserver/tests/paas/external-db-service/generatederbyvm/pom.xml b/appserver/tests/paas/external-db-service/generatederbyvm/pom.xml
index c76893e..d273fb2 100644
--- a/appserver/tests/paas/external-db-service/generatederbyvm/pom.xml
+++ b/appserver/tests/paas/external-db-service/generatederbyvm/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>paas.plugins</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>generatederbyvm</artifactId>
diff --git a/appserver/tests/paas/external-db-service/pom.xml b/appserver/tests/paas/external-db-service/pom.xml
index 1b6acba..103b8c0 100644
--- a/appserver/tests/paas/external-db-service/pom.xml
+++ b/appserver/tests/paas/external-db-service/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.paas</groupId>
     <artifactId>external-service-test</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>External DB Service TesT</name>
     <packaging>pom</packaging>
     <modules>
diff --git a/appserver/tests/paas/external-db-service/test/pom.xml b/appserver/tests/paas/external-db-service/test/pom.xml
index be9068d..06879d4 100644
--- a/appserver/tests/paas/external-db-service/test/pom.xml
+++ b/appserver/tests/paas/external-db-service/test/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.paas</groupId>
     <artifactId>external-db-service-test</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>External DB Service PaaS application</name>
     <packaging>war</packaging>
     <build>
diff --git a/appserver/tests/paas/helloworld/pom.xml b/appserver/tests/paas/helloworld/pom.xml
index e7dd2de..55a12c1 100644
--- a/appserver/tests/paas/helloworld/pom.xml
+++ b/appserver/tests/paas/helloworld/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.paas</groupId>
     <artifactId>helloworld</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>PaaS Hello World sample</name>
     <packaging>war</packaging>
     <build>
diff --git a/appserver/tests/paas/javaee_shared_service/pom.xml b/appserver/tests/paas/javaee_shared_service/pom.xml
index b933498..0006d5f 100644
--- a/appserver/tests/paas/javaee_shared_service/pom.xml
+++ b/appserver/tests/paas/javaee_shared_service/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.paas</groupId>
     <artifactId>bookstore2</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Bookstore PaaS sample running on Java EE (GlassFish) shared service.</name>
     <packaging>war</packaging>
     <build>
diff --git a/appserver/tests/paas/lazy-shared-service-test/pom.xml b/appserver/tests/paas/lazy-shared-service-test/pom.xml
index c29c52d..b0169e4 100644
--- a/appserver/tests/paas/lazy-shared-service-test/pom.xml
+++ b/appserver/tests/paas/lazy-shared-service-test/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.paas</groupId>
     <artifactId>lazy-shared-service-test</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Lazy Shared Service PaaS sample</name>
     <packaging>war</packaging>
     <build>
diff --git a/appserver/tests/paas/mq-shared-service-test/mq-test/pom.xml b/appserver/tests/paas/mq-shared-service-test/mq-test/pom.xml
index 6720502..42def8f 100644
--- a/appserver/tests/paas/mq-shared-service-test/mq-test/pom.xml
+++ b/appserver/tests/paas/mq-shared-service-test/mq-test/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.paas</groupId>
     <artifactId>mq-test</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>MQ Shared Service Test</name>
     <packaging>jar</packaging>
     <properties>
diff --git a/appserver/tests/paas/mq-shared-service-test/pom.xml b/appserver/tests/paas/mq-shared-service-test/pom.xml
index 665e82b..f90c040 100644
--- a/appserver/tests/paas/mq-shared-service-test/pom.xml
+++ b/appserver/tests/paas/mq-shared-service-test/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.paas</groupId>
     <artifactId>mq-shared-service-test</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>MQ Shared Service TesT</name>
     <packaging>pom</packaging>
     <modules>
diff --git a/appserver/tests/paas/multiple-db-app-scoped-services/advanced/pom.xml b/appserver/tests/paas/multiple-db-app-scoped-services/advanced/pom.xml
index 3ccfba1..af85335 100644
--- a/appserver/tests/paas/multiple-db-app-scoped-services/advanced/pom.xml
+++ b/appserver/tests/paas/multiple-db-app-scoped-services/advanced/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.paas</groupId>
     <artifactId>multiple-app-scoped-service-test-advanced</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Multiple Application Scoped Database Services Advanced PaaS Application</name>
     <packaging>war</packaging>
     <build>
diff --git a/appserver/tests/paas/multiple-db-app-scoped-services/basic/pom.xml b/appserver/tests/paas/multiple-db-app-scoped-services/basic/pom.xml
index b22ab19..983ff56 100644
--- a/appserver/tests/paas/multiple-db-app-scoped-services/basic/pom.xml
+++ b/appserver/tests/paas/multiple-db-app-scoped-services/basic/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.paas</groupId>
     <artifactId>multiple-app-scoped-service-test-basic</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Multiple Application Scoped Database Services Basic PaaS Application</name>
     <packaging>war</packaging>
     <build>
diff --git a/appserver/tests/paas/multiple-db-app-scoped-services/pom.xml b/appserver/tests/paas/multiple-db-app-scoped-services/pom.xml
index 31998fb..0d82184 100644
--- a/appserver/tests/paas/multiple-db-app-scoped-services/pom.xml
+++ b/appserver/tests/paas/multiple-db-app-scoped-services/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.paas</groupId>
     <artifactId>multiple-db-app-scoped-services</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Multiple DB App Scoped Services</name>
     <packaging>pom</packaging>
     <modules>
diff --git a/appserver/tests/paas/multiple-db-shared-services/advanced/pom.xml b/appserver/tests/paas/multiple-db-shared-services/advanced/pom.xml
index a6d34a1..7f48c0b 100644
--- a/appserver/tests/paas/multiple-db-shared-services/advanced/pom.xml
+++ b/appserver/tests/paas/multiple-db-shared-services/advanced/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.paas</groupId>
     <artifactId>multiple-shared-db-service-test</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Multiple Shared DB service PaaS application</name>
     <packaging>war</packaging>
     <build>
diff --git a/appserver/tests/paas/multiple-db-shared-services/basic/pom.xml b/appserver/tests/paas/multiple-db-shared-services/basic/pom.xml
index bde112f..732b492 100644
--- a/appserver/tests/paas/multiple-db-shared-services/basic/pom.xml
+++ b/appserver/tests/paas/multiple-db-shared-services/basic/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.paas</groupId>
     <artifactId>multiple-shared-db-service-test-basic</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Multiple Shared DB service Basic PaaS application</name>
     <packaging>war</packaging>
     <build>
diff --git a/appserver/tests/paas/multiple-db-shared-services/pom.xml b/appserver/tests/paas/multiple-db-shared-services/pom.xml
index c1218c6..35bbe16 100644
--- a/appserver/tests/paas/multiple-db-shared-services/pom.xml
+++ b/appserver/tests/paas/multiple-db-shared-services/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.paas</groupId>
     <artifactId>multiple-db-shared-services</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Multiple DB Shared Services</name>
     <packaging>pom</packaging>
     <modules>
diff --git a/appserver/tests/paas/multiple-spe-test/mydb-plugin/pom.xml b/appserver/tests/paas/multiple-spe-test/mydb-plugin/pom.xml
index 83bcaab..3fe07ed 100644
--- a/appserver/tests/paas/multiple-spe-test/mydb-plugin/pom.xml
+++ b/appserver/tests/paas/multiple-spe-test/mydb-plugin/pom.xml
@@ -22,13 +22,13 @@
     <parent>
         <groupId>org.glassfish</groupId>
         <artifactId>paas.plugins</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish</groupId>
     <artifactId>paas.mydbplugin</artifactId>
 
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>MyDB Plugin</name>
     <build>
         <resources>
diff --git a/appserver/tests/paas/multiple-spe-test/pom.xml b/appserver/tests/paas/multiple-spe-test/pom.xml
index 3d8a4c5..8ed5417 100644
--- a/appserver/tests/paas/multiple-spe-test/pom.xml
+++ b/appserver/tests/paas/multiple-spe-test/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.paas</groupId>
     <artifactId>multiple-spe-test</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Multiple SPE TesT</name>
     <packaging>pom</packaging>
     <modules>
diff --git a/appserver/tests/paas/multiple-spe-test/spetest/pom.xml b/appserver/tests/paas/multiple-spe-test/spetest/pom.xml
index 9ec9844..af68bfd 100644
--- a/appserver/tests/paas/multiple-spe-test/spetest/pom.xml
+++ b/appserver/tests/paas/multiple-spe-test/spetest/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.paas</groupId>
     <artifactId>basic-spe-test</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Basic SPE Test</name>
     <packaging>war</packaging>
     <build>
diff --git a/appserver/tests/paas/pom.xml b/appserver/tests/paas/pom.xml
index 99fdbaf..bf46a1a 100644
--- a/appserver/tests/paas/pom.xml
+++ b/appserver/tests/paas/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests</groupId>
     <artifactId>paas</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>PaaS samples</name>
     <packaging>pom</packaging>
 
diff --git a/appserver/tests/paas/scale_service/pom.xml b/appserver/tests/paas/scale_service/pom.xml
index 971b8e7..bd2dcf7 100644
--- a/appserver/tests/paas/scale_service/pom.xml
+++ b/appserver/tests/paas/scale_service/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.paas</groupId>
     <artifactId>scale_service</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Scale Service PaaS sample</name>
     <packaging>war</packaging>
     <build>
diff --git a/appserver/tests/paas/service_metadata/custom_db_name/pom.xml b/appserver/tests/paas/service_metadata/custom_db_name/pom.xml
index 0518b9e..df65f0a 100644
--- a/appserver/tests/paas/service_metadata/custom_db_name/pom.xml
+++ b/appserver/tests/paas/service_metadata/custom_db_name/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.paas</groupId>
     <artifactId>custom_db_name</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Custom DB Name PaaS sample</name>
     <packaging>war</packaging>
     <build>
diff --git a/appserver/tests/paas/service_metadata/pom.xml b/appserver/tests/paas/service_metadata/pom.xml
index 0c274be..d50d79f 100644
--- a/appserver/tests/paas/service_metadata/pom.xml
+++ b/appserver/tests/paas/service_metadata/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.paas</groupId>
     <artifactId>service_metadata</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Service Metadata PaaS samples</name>
     <packaging>pom</packaging>
     <modules>
diff --git a/appserver/tests/paas/service_metadata/provision_using_specified_template/pom.xml b/appserver/tests/paas/service_metadata/provision_using_specified_template/pom.xml
index 81bd2a6..a0761eb 100644
--- a/appserver/tests/paas/service_metadata/provision_using_specified_template/pom.xml
+++ b/appserver/tests/paas/service_metadata/provision_using_specified_template/pom.xml
@@ -22,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.tests.paas</groupId>
     <artifactId>service_metadata.provision_using_specified_template</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Provision service(s) using specified template</name>
     <packaging>war</packaging>
     <build>
diff --git a/appserver/tests/pom.xml b/appserver/tests/pom.xml
index 5f723b0..ebcd02d 100755
--- a/appserver/tests/pom.xml
+++ b/appserver/tests/pom.xml
@@ -25,7 +25,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.main.tests</groupId>
diff --git a/appserver/tests/quicklook/QuickLook_Test_Instructions.html b/appserver/tests/quicklook/QuickLook_Test_Instructions.html
index 59af537..32f2df7 100644
--- a/appserver/tests/quicklook/QuickLook_Test_Instructions.html
+++ b/appserver/tests/quicklook/QuickLook_Test_Instructions.html
@@ -67,7 +67,7 @@
 	</UL>
 	<LI><P STYLE="margin-bottom: 0in">For <B>glassfish-ips.zip</B>
 	bundle, the same command can be used but {Installation Dir}
-	is equivelent to in /test/glassfish6/glassfish: 
+	is equivelent to in /test/glassfish7/glassfish: 
 	</P>
 	<LI><P>To run cluster tests only, you can go to <B>tests/quicklook</B>
 	and do: <I>ant -Dglassfish.home={Installation Dir} all_cluster</I></P>
@@ -237,8 +237,8 @@
 deploy runtest&quot;</P>
 <P STYLE="margin-bottom: 0in">Since QL runs in multiple profiles, the
 test cases need to be defined in the 3 test lists (under
-quicklook/testng dir) for the profiles: testng_wd.xml for the Web
-profile, testng_gd.xml for Glassfish profile, testng_debug.xml for
+quicklook/testng dir) for the profiles: testng_web_profile.xml for the Web
+profile, testng_full_profile.xml for Glassfish full profile, testng_debug.xml for
 the debug profile. The module level testng.xml is optional but it
 provides the conveniences of running the module test locally. User
 can also choose to define the class name in the local build.xml. In
diff --git a/appserver/tests/quicklook/admin/pom.xml b/appserver/tests/quicklook/admin/pom.xml
index 98746f2..2dc0976 100644
--- a/appserver/tests/quicklook/admin/pom.xml
+++ b/appserver/tests/quicklook/admin/pom.xml
@@ -26,7 +26,7 @@
     <parent>
         <artifactId>org.glassfish.quicklook</artifactId>
         <groupId>quicklook</groupId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
     <description>Runs the tests on admin/asadmin code</description>
diff --git a/appserver/tests/quicklook/adminconsole/pom.xml b/appserver/tests/quicklook/adminconsole/pom.xml
index 6411e56..026ab00 100644
--- a/appserver/tests/quicklook/adminconsole/pom.xml
+++ b/appserver/tests/quicklook/adminconsole/pom.xml
@@ -21,7 +21,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.quicklook</groupId>
     <artifactId>adminconsole</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>Admin Console Quicklook Tests</name>
     <packaging>jar</packaging>
     <parent>
@@ -101,7 +101,7 @@
         <dependency>
             <groupId>org.glassfish.common</groupId>
             <artifactId>amx-core</artifactId>
-            <version>6.2.6-SNAPSHOT</version>
+            <version>7.0.0-SNAPSHOT</version>
         </dependency>
     </dependencies>
 </project>
diff --git a/appserver/tests/quicklook/amx/pom.xml b/appserver/tests/quicklook/amx/pom.xml
index 0de7895..85c32f3 100644
--- a/appserver/tests/quicklook/amx/pom.xml
+++ b/appserver/tests/quicklook/amx/pom.xml
@@ -26,7 +26,7 @@
     <parent>
         <artifactId>org.glassfish.quicklook</artifactId>
         <groupId>quicklook</groupId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
     <description>Runs the tests on admin/asadmin code</description>
diff --git a/appserver/tests/quicklook/build.properties b/appserver/tests/quicklook/build.properties
index e6917d7..dc813c5 100644
--- a/appserver/tests/quicklook/build.properties
+++ b/appserver/tests/quicklook/build.properties
@@ -19,7 +19,7 @@
 glassfish.http.host=localhost
 glassfish.http.port=8080
 glassfish.admin.port=4848
-#glassfish.home=/v3/glassfish6/glassfish
+#glassfish.home=/v3/glassfish7/glassfish
 
 maven.repo.local=${user.home}/.m2/repository
 plugin_classpath=${maven.repo.local}/org/testng/testng/6.11/testng-6.11.jar
diff --git a/appserver/tests/quicklook/build.xml b/appserver/tests/quicklook/build.xml
index 09e7341..44888d6 100644
--- a/appserver/tests/quicklook/build.xml
+++ b/appserver/tests/quicklook/build.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
+    Copyright (c) 2021 Contributors to Eclipse Foundation.
     Copyright (c) 1997, 2021 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
@@ -27,9 +28,44 @@
 
     <description>Builds, tests, and runs the project Quicklook</description>
 
-    <presetdef name="javac">
-        <javac includeantruntime="false" />
-    </presetdef>
+
+    <target name="initprops">
+        <property name="build.class.dir" value="${basedir}/classes/test" />
+        <property name="Java_SE" value="${basedir}/classes/EJB_remoteview/app" />
+        <property name="test.report" value="${basedir}/test-output" />
+
+        <mkdir dir="${test.report}" />
+
+        <path id="junit.path">
+            <pathelement path="${plugin_classpath}" />
+        </path>
+
+        <typedef name="junitreport" classname="org.apache.tools.ant.taskdefs.optional.junit.XMLResultAggregator" classpathref="junit.path" />
+
+        <path id="run.testng.classpath">
+            <fileset dir="${glassfish.home}/modules">
+                <include name="**/hk2*.jar" />
+                <include name="**/glassfish-api.jar" />
+                <include name="**/amx-core.jar" />
+                <include name="**/amx-javaee.jar" />
+                <include name="**/management-api.jar" />
+            </fileset>
+            <fileset dir="${glassfish.home}/lib">
+                <include name="**/gf-client.jar" />
+            </fileset>
+            <pathelement path="${plugin_classpath}" />
+            <pathelement location="${Java_SE}" />
+            <pathelement location="${build.class.dir}" />
+        </path>
+
+        <path id="embedded.testng.classpath">
+            <fileset dir="${glassfish.home}/lib/embedded">
+                <include name="**/glassfish-embedded-static-shell.jar" />
+            </fileset>
+            <pathelement location="${build.class.dir}" />
+            <pathelement location="${build.class.dir}/../EJB_Embedded/app" />
+        </path>
+    </target>
 
     <target name="all_cluster">
         <record name="${basedir}/allrun.output" action="start" />
@@ -61,14 +97,24 @@
     <!-- target name="all_wd" depends="clean" -->
     <target name="all_wd">
         <record name="${basedir}/allrun.output" action="start" />
+
+        <echo>+-----------------------------+</echo>
+        <echo>|                             |</echo>
+        <echo>|        R u n n i n g        |</echo>
+        <echo>|            all_wd           |</echo>
+        <echo>|          Web Profile        |</echo>
+        <echo>+-----------------------------+</echo>
+
         <property name="env.security_manager" value="OFF" />
         <antcall target="verify-xml" />
         <antcall target="start-derby" />
         <antcall target="start-server-felix" />
         <antcall target="build-deploy" />
+
         <antcall target="runtest">
-            <param name="testng.xml" value="testng/testng_wd.xml" />
+            <param name="testng.xml" value="testng/testng_web_profile.xml" />
         </antcall>
+
         <antcall target="undeploy" />
         <antcall target="quicklook-summary_wd" />
         <antcall target="stop-server" />
@@ -76,20 +122,30 @@
         <copy file="test-output/emailable-report.html" tofile="test-output/QL-WP-report.html" />
         <antcall target="check-logged-messages" />
         <antcall target="testng-summary_wd" />
+
         <record name="${basedir}/allrun.output" action="stop" />
     </target>
 
     <target name="all_wd_security">
         <record name="${basedir}/allrun.output" action="start" />
+
+        <echo>+-----------------------------+</echo>
+        <echo>|                             |</echo>
+        <echo>|        R u n n i n g        |</echo>
+        <echo>|       all_wd_security       |</echo>
+        <echo>|         Web Profile         |</echo>
+        <echo>+-----------------------------+</echo>
+
         <antcall target="add-quicklook-policy-grants" />
         <property name="env.security_manager" value="ON" />
 
         <antcall target="start_server_with_security_manager_enabled" />
-
         <antcall target="build-deploy" />
+
         <antcall target="runtest">
-            <param name="testng.xml" value="testng/testng_wd.xml" />
+            <param name="testng.xml" value="testng/testng_web_profile.xml" />
         </antcall>
+
         <antcall target="undeploy" />
         <antcall target="quicklook-summary_wd" />
 
@@ -102,6 +158,147 @@
         <record name="${basedir}/allrun.output" action="stop" />
     </target>
 
+    <!-- Target for testing glassfish distribution (containing EJB)  -->
+    <target name="all" depends="clean">
+        <record name="${basedir}/allrun.output" action="start" />
+
+
+        <echo>+-----------------------------+</echo>
+        <echo>|                             |</echo>
+        <echo>|        R u n n i n g        |</echo>
+        <echo>|             all             |</echo>
+        <echo>|                             |</echo>
+        <echo>+-----------------------------+</echo>
+
+        <property name="env.security_manager" value="OFF" />
+        <antcall target="verify-xml" />
+        <antcall target="start-derby" />
+        <antcall target="start-server-felix" />
+        <antcall target="build-deploy-gd" />
+        <antcall target="build-deploy" />
+        <antcall target="build-cluster" />
+
+        <antcall target="runtest">
+            <param name="testng.xml" value="testng/testng_full_profile.xml" />
+        </antcall>
+
+        <antcall target="undeploy" />
+        <antcall target="undeploy-gd" />
+        <antcall target="quicklook-summary" />
+        <antcall target="stop-server" />
+        <antcall target="stop-derby" />
+        <copy file="test-output/emailable-report.html" tofile="test-output/QL-GP-report.html" failonerror="false" />
+        <antcall target="check-logged-messages" />
+        <antcall target="testng-summary" />
+        <record name="${basedir}/allrun.output" action="stop" />
+    </target>
+
+    <!-- Target for testing glassfish distribution (containing EJB)  -->
+    <target name="all_ri" depends="clean">
+        <record name="${basedir}/allrun.output" action="start" />
+
+
+        <echo>+-----------------------------+</echo>
+        <echo>|                             |</echo>
+        <echo>|        R u n n i n g        |</echo>
+        <echo>|            all_ri           |</echo>
+        <echo>|                             |</echo>
+        <echo>+-----------------------------+</echo>
+
+        <property name="env.security_manager" value="OFF" />
+        <antcall target="verify-xml" />
+        <antcall target="start-derby" />
+        <antcall target="start-server-felix" />
+        <antcall target="build-deploy" />
+        <antcall target="build-deploy-gd" />
+
+        <antcall target="runtest">
+            <param name="testng.xml" value="testng/testng_ri.xml" />
+        </antcall>
+
+        <antcall target="undeploy" />
+        <antcall target="undeploy-gd" />
+        <antcall target="quicklook-summary" />
+        <antcall target="stop-server" />
+        <antcall target="stop-derby" />
+        <copy file="test-output/emailable-report.html" tofile="test-output/QL-GP-report.html" failonerror="false" />
+        <antcall target="check-logged-messages" />
+        <antcall target="testng-summary" />
+
+        <record name="${basedir}/allrun.output" action="stop" />
+    </target>
+
+    <!-- Target for testing glassfish distribution (GD) (containing EJB)  -->
+    <target name="all_gd_security" depends="clean">
+        <record name="${basedir}/allrun.output" action="start" />
+
+
+        <echo>+-----------------------------+</echo>
+        <echo>|                             |</echo>
+        <echo>|        R u n n i n g        |</echo>
+        <echo>|       all_gd_security       |</echo>
+        <echo>|         Full Profile        |</echo>
+        <echo>+-----------------------------+</echo>
+
+
+        <antcall target="add-quicklook-policy-grants" />
+        <property name="env.security_manager" value="ON" />
+        <antcall target="verify-xml" />
+        <antcall target="start-derby" />
+        <antcall target="start-server-felix" />
+        <antcall target="enable-security-manager" />
+        <antcall target="stop-server" />
+        <antcall target="start-server-felix" />
+        <antcall target="build-deploy" />
+        <antcall target="build-deploy-gd" />
+
+        <antcall target="runtest">
+            <param name="testng.xml" value="testng/testng_full_profile.xml" />
+        </antcall>
+
+        <antcall target="undeploy" />
+        <antcall target="undeploy-gd" />
+        <antcall target="quicklook-summary" />
+        <antcall target="remove-quicklook-policy-grants" />
+        <antcall target="disable-security-manager" />
+        <antcall target="stop-server" />
+        <antcall target="stop-derby" />
+        <copy file="test-output/emailable-report.html" tofile="test-output/QL-GP-report.html" failonerror="false" />
+        <antcall target="check-logged-messages" />
+        <antcall target="testng-summary" />
+        <record name="${basedir}/allrun.output" action="stop" />
+    </target>
+
+    <!-- Target for testing glassfish distribution (containing EJB)  -->
+    <target name="dev_debug" depends="clean">
+        <record name="${basedir}/allrun.output" action="start" />
+
+        <echo>+-----------------------------+</echo>
+        <echo>|                             |</echo>
+        <echo>|        R u n n i n g        |</echo>
+        <echo>|           dev_debug         |</echo>
+        <echo>|         Full Profile        |</echo>
+        <echo>+-----------------------------+</echo>
+
+        <antcall target="verify-xml" />
+        <antcall target="start-derby" />
+        <antcall target="build-deploy" />
+        <antcall target="runtest">
+            <param name="testng.xml" value="testng/testng_debug.xml" />
+        </antcall>
+        <antcall target="undeploy" />
+        <antcall target="stop-derby" />
+        <antcall target="check-logged-messages" />
+        <antcall target="testng-summary" />
+
+        <record name="${basedir}/allrun.output" action="stop" />
+    </target>
+
+
+
+    <!--  S T A R T    S E R V E R  -->
+
+
     <target name="start_server_with_security_manager_enabled">
         <property name="env.security_manager" value="ON" />
         <antcall target="verify-xml" />
@@ -119,191 +316,148 @@
         <antcall target="stop-derby" />
     </target>
 
-    <!-- Target for testing glassfish distribution (containing EJB)  -->
-    <target name="all" depends="clean">
-        <record name="${basedir}/allrun.output" action="start" />
-        <property name="env.security_manager" value="OFF" />
-        <antcall target="verify-xml" />
-        <antcall target="start-derby" />
-        <antcall target="start-server-felix" />
-        <antcall target="build-deploy-gd" />
-        <antcall target="build-deploy" />
-        <antcall target="build-cluster" />
-        <antcall target="runtest">
-            <param name="testng.xml" value="testng/testng_gd.xml" />
-        </antcall>
-        <antcall target="undeploy" />
-        <antcall target="undeploy-gd" />
-        <antcall target="quicklook-summary" />
-        <antcall target="stop-server" />
-        <antcall target="stop-derby" />
-        <copy file="test-output/emailable-report.html" tofile="test-output/QL-GP-report.html" failonerror="false" />
-        <antcall target="check-logged-messages" />
-        <antcall target="testng-summary" />
-        <record name="${basedir}/allrun.output" action="stop" />
+    <target name="start-server-hk2" depends="setOSConditions">
+
+        <echo>+-----------------------------+</echo>
+        <echo>|                             |</echo>
+        <echo>| S T A R T I N G   GLASSFISH |</echo>
+        <echo>|       in HK2 mode           |</echo>
+        <echo>|                             |</echo>
+        <echo>+-----------------------------+</echo>
+
+        <antcall target="start-server-hk2-unix" />
+        <antcall target="start-server-hk2-windows" />
     </target>
 
-    <!-- Target for testing glassfish distribution (containing EJB)  -->
-    <target name="all_ri" depends="clean">
-        <record name="${basedir}/allrun.output" action="start" />
-        <property name="env.security_manager" value="OFF" />
-        <antcall target="verify-xml" />
-        <antcall target="start-derby" />
-        <antcall target="start-server-felix" />
-        <antcall target="build-deploy" />
-        <antcall target="build-deploy-gd" />
-        <antcall target="runtest">
-            <param name="testng.xml" value="testng/testng_ri.xml" />
-        </antcall>
-        <antcall target="undeploy" />
-        <antcall target="undeploy-gd" />
-        <antcall target="quicklook-summary" />
-        <antcall target="stop-server" />
-        <antcall target="stop-derby" />
-        <copy file="test-output/emailable-report.html" tofile="test-output/QL-GP-report.html" failonerror="false" />
-        <antcall target="check-logged-messages" />
-        <antcall target="testng-summary" />
-        <record name="${basedir}/allrun.output" action="stop" />
+    <target name="start-server-hk2-windows" if="isWindows">
+        <exec executable="cmd" spawn="true">
+            <env key="GlassFish_Platform" value="HK2" />
+            <arg value="/c" />
+            <arg value="${glassfish.home}\bin\asadmin.bat" />
+            <arg value="start-domain" />
+        </exec>
     </target>
 
-    <!-- Target for testing glassfish distribution (GD) (containing EJB)  -->
-    <target name="all_gd_security" depends="clean">
-        <record name="${basedir}/allrun.output" action="start" />
-        <antcall target="add-quicklook-policy-grants" />
-        <property name="env.security_manager" value="ON" />
-        <antcall target="verify-xml" />
-        <antcall target="start-derby" />
-        <antcall target="start-server-felix" />
-        <antcall target="enable-security-manager" />
-        <antcall target="stop-server" />
-        <antcall target="start-server-felix" />
-        <antcall target="build-deploy" />
-        <antcall target="build-deploy-gd" />
-        <antcall target="runtest">
-            <param name="testng.xml" value="testng/testng_gd.xml" />
-        </antcall>
-        <antcall target="undeploy" />
-        <antcall target="undeploy-gd" />
-        <antcall target="quicklook-summary" />
-        <antcall target="remove-quicklook-policy-grants" />
-        <antcall target="disable-security-manager" />
-        <antcall target="stop-server" />
-        <antcall target="stop-derby" />
-        <copy file="test-output/emailable-report.html" tofile="test-output/QL-GP-report.html" failonerror="false" />
-        <antcall target="check-logged-messages" />
-        <antcall target="testng-summary" />
-        <record name="${basedir}/allrun.output" action="stop" />
+    <target name="start-server-hk2-unix" if="isUnix">
+        <exec executable="${glassfish.home}/bin/asadmin">
+            <env key="GlassFish_Platform" value="HK2" />
+            <arg value="start-domain" />
+        </exec>
     </target>
 
-    <!-- Target for testing glassfish distribution (containing EJB)  -->
-    <target name="dev_debug" depends="clean">
-        <record name="${basedir}/allrun.output" action="start" />
-        <antcall target="verify-xml" />
-        <antcall target="start-derby" />
-        <antcall target="build-deploy" />
-        <antcall target="runtest">
-            <param name="testng.xml" value="testng/testng_debug.xml" />
-        </antcall>
-        <antcall target="undeploy" />
-        <antcall target="stop-derby" />
-        <antcall target="check-logged-messages" />
-        <antcall target="testng-summary" />
-        <record name="${basedir}/allrun.output" action="stop" />
+    <target name="start-server-felix" depends="setOSConditions">
+
+        <echo>+-----------------------------+</echo>
+        <echo>|                             |</echo>
+        <echo>| S T A R T I N G   GLASSFISH |</echo>
+        <echo>|       in Felix mode         |</echo>
+        <echo>|                             |</echo>
+        <echo>+-----------------------------+</echo>
+
+        <antcall target="start-server-felix-unix" />
+        <antcall target="start-server-felix-windows" />
     </target>
 
+    <target name="start-server-felix-windows" if="isWindows">
+        <exec executable="cmd" spawn="true">
+            <arg value="/c" />
+            <arg value="${glassfish.home}\bin\asadmin.bat" />
+            <arg value="start-domain" />
+            <arg value="domain1" />
+        </exec>
+        <waitfor maxwait="30" maxwaitunit="second" checkevery="500">
+            <http url="http://localhost:4848/" />
+        </waitfor>
+    </target>
+
+    <target name="start-server-felix-unix" if="isUnix">
+        <exec executable="${glassfish.home}/bin/asadmin">
+            <arg value="start-domain" />
+            <arg value="domain1" />
+        </exec>
+    </target>
+
+
+
+    <!--  B U I L D  &  D E P L O Y    T E S T    A R C H I V E S  -->
+
     <target name="build-deploy">
         <record name="${basedir}/build.output" action="start" />
         <echo message="ANT PROJECT ${ant.project.name}" />
-        <ant dir="amx" target="build" />
-        <ant dir="admin" target="build" />
-        <ant dir="admincli" target="build" />
-        <ant dir="adminconsole" target="build" />
-        <ant dir="rest" target="build" />
-        <!--<ant dir="osgitest/basicosgi" target="build"/>-->
-        <ant dir="web/helloworld" target="build-deploy" />
-        <ant dir="web/jsfastrologer" target="build-deploy" />
-        <ant dir="web/jsfinjection" target="build-deploy" />
-        <ant dir="jdbc/jdbcusertx" target="build-deploy" />
-        <ant dir="persistence/jpainjectemf" target="build-deploy" />
-        <ant dir="persistence/jpavalidation" target="build-deploy" />
-        <ant dir="security/helloworld" target="build-deploy" />
-        <ant dir="security/basicauth" target="build-deploy" />
-        <ant dir="ejb/slsbnicmt" target="build-deploy" />
-        <ant dir="ejb/sfulnoi" target="build-deploy" />
-        <ant dir="bean-validator/simple-bv-servlet" target="build-deploy" />
-        <ant dir="weld/numberguess" target="build-deploy" />
-        <ant dir="weld/osgiweld" target="build-deploy" />
-        <ant dir="weld/extensions" target="build-deploy" />
+
+        <run-quicklook-test path="amx" target="build" />
+        <run-quicklook-test path="admin" target="build" />
+        <run-quicklook-test path="admincli" target="build" />
+        <!-- For now GlassFish 7 doesn't have an admin console
+        <run-quicklook-test path="adminconsole" target="build" />
+        -->
+        <run-quicklook-test path="rest" target="build" />
+        <!--<run-quicklook-test path="osgitest/basicosgi" target="build"/>-->
+        <run-quicklook-test path="web/helloworld" target="build-deploy" />
+        <run-quicklook-test path="web/jsfastrologer" target="build-deploy" />
+        <run-quicklook-test path="web/jsfinjection" target="build-deploy" />
+        <run-quicklook-test path="jdbc/jdbcusertx" target="build-deploy" />
+        <run-quicklook-test path="persistence/jpainjectemf" target="build-deploy" />
+        <run-quicklook-test path="persistence/jpavalidation" target="build-deploy" />
+        <run-quicklook-test path="security/helloworld" target="build-deploy" />
+        <run-quicklook-test path="security/basicauth" target="build-deploy" />
+        <run-quicklook-test path="ejb/slsbnicmt" target="build-deploy" />
+        <run-quicklook-test path="ejb/sfulnoi" target="build-deploy" />
+        <run-quicklook-test path="bean-validator/simple-bv-servlet" target="build-deploy" />
+        <run-quicklook-test path="weld/numberguess" target="build-deploy" />
+        <run-quicklook-test path="weld/osgiweld" target="build-deploy" />
+        <run-quicklook-test path="weld/extensions" target="build-deploy" />
+
         <record name="${basedir}/build.output" action="stop" />
     </target>
 
     <target name="build-deploy-gd">
-        <echo message="Glassfish Distribution Build Deploy" />
-        <ant dir="ejb/remoteview" target="build-deploy" />
-        <ant dir="ejb/singleton" target="build-deploy" />
-        <ant dir="ejb/cmp" target="build-deploy" />
-        <ant dir="ejb/mdb" target="build" />
-        <ant dir="jms/injection" target="build-deploy" />
-        <ant dir="wsit/JaxwsFromWsdl" target="build-deploy" />
-        <ant dir="wsit/jsr109tester" target="build-deploy" />
-        <ant dir="security/appperms" target="build-deploy" />
+        <echo message="Glassfish Full Profile Build Deploy" />
+        <run-quicklook-test path="ejb/remoteview" target="build-deploy" />
+        <run-quicklook-test path="ejb/singleton" target="build-deploy" />
+        <run-quicklook-test path="ejb/cmp" target="build-deploy" />
+        <run-quicklook-test path="ejb/mdb" target="build" />
+        <run-quicklook-test path="jms/injection" target="build-deploy" />
+        <run-quicklook-test path="wsit/JaxwsFromWsdl" target="build-deploy" />
+        <run-quicklook-test path="wsit/jsr109tester" target="build-deploy" />
+        <run-quicklook-test path="security/appperms" target="build-deploy" />
     </target>
 
-    <target name="undeploy">
-        <record name="${basedir}/undeploy.output" action="start" />
-        <ant dir="web/helloworld" target="undeploy" />
-        <ant dir="web/jsfastrologer" target="undeploy" />
-        <ant dir="web/jsfinjection" target="undeploy" />
-        <ant dir="jdbc/jdbcusertx" target="undeploy" />
-        <ant dir="persistence/jpainjectemf" target="undeploy" />
-        <ant dir="persistence/jpavalidation" target="undeploy" />
-        <ant dir="security/helloworld" target="undeploy" />
-        <ant dir="security/basicauth" target="undeploy" />
-        <ant dir="ejb/slsbnicmt" target="undeploy" />
-        <ant dir="ejb/sfulnoi" target="undeploy" />
-        <ant dir="bean-validator/simple-bv-servlet" target="undeploy" />
-        <ant dir="weld/numberguess" target="undeploy" />
-        <ant dir="weld/osgiweld" target="undeploy" />
-        <ant dir="weld/extensions" target="undeploy" />
-        <ant dir="jms/injection" target="undeploy" />
-        <record name="${basedir}/undeploy.output" action="stop" />
-    </target>
 
-    <target name="undeploy-gd">
-        <ant dir="ejb/singleton" target="undeploy" />
-        <ant dir="ejb/remoteview" target="undeploy" />
-        <ant dir="ejb/cmp" target="undeploy" />
-        <!-- <ant dir="wsit/JaxwsFromWsdl" target="undeploy"/>
-        <ant dir="wsit/jsr109tester" target="undeploy"/>-->
-        <ant dir="security/appperms" target="undeploy" />
-    </target>
 
-    <!-- Target is re-defined here as someone didn't want to specify ws.root property -->
-    <target name="clean">
-        <delete dir="${basedir}/classes" />
-        <delete verbose="true" includeemptydirs="true">
-            <fileset dir="${basedir}" includes="**/classes" />
-        </delete>
-        <delete dir="${basedir}/test-output" includeemptydirs="true" />
-        <delete dir="${basedir}/dist" includeemptydirs="true" />
-        <delete includeemptydirs="true">
-            <fileset dir="${basedir}">
-                <include name="**/*.output" />
-            </fileset>
-        </delete>
-    </target>
+    <!--  R U N    T E S T S -->
 
-    <taskdef name="testng" classname="org.testng.TestNGAntTask">
-        <classpath>
-            <pathelement path="${plugin_classpath}" />
-        </classpath>
-    </taskdef>
 
     <!-- Target is re-definted here as didn't want to specify ws.root property -->
     <target name="runtest" depends="initprops,setOSConditions,asenv-unix,asenv-windows">
         <record name="${basedir}/runtestng.output" action="start" />
-        <echo message="=============Starting TestNG functional tests from ${testng.xml} ============" />
+
+        <echo message="${line.separator}${line.separator}" />
+        <echo message="=============================================================================" />
+        <echo message="=                                                                           =" />
+        <echo message="=         S t a r t i n g   TestNG   f u n c t i o n a l    t e s t s       =" />
+        <echo message="=                                                                           =" />
+        <echo message="= TEST FILE = ${testng.xml}                                                 =" />
+        <echo message="= BASEDIR   = ${basedir}                                                    =" />
+        <echo message="=                                                                           =" />
+        <echo message="=============================================================================" />
+        <echo message="${line.separator}${line.separator}" />
+
         <property name="hasTestNGXML" value="true" />
+        <loadfile property="tests" srcfile="${testng.xml}">
+            <filterchain>
+                <linecontainsregexp>
+                    <regexp pattern="test name"/>
+                </linecontainsregexp>
+            </filterchain>
+        </loadfile>
+        
+        <echo message="${line.separator}${line.separator}" />
+        <echo message="=============================================================================" />
+        <echo message="=  R u n n i n g   t h e   f o l l o w i n g    t e s t s:                  =" />
+        <echo message="= From TEST FILE = ${testng.xml}                                                 =" />
+        <echo message="${tests}" />
+        <echo message="=============================================================================" />
 
         <mkdir dir="${test.report}" />
         <testng outputdir="${test.report}" classpathref="run.testng.classpath">
@@ -317,6 +471,7 @@
             <sysproperty key="BASEDIR" value="${basedir}" />
             <xmlfileset dir="." includes="${testng.xml}" />
         </testng>
+
         <record name="${basedir}/runtestng.output" action="stop" />
     </target>
 
@@ -332,6 +487,64 @@
         <record name="${basedir}/runtestng.output" action="stop" />
     </target>
 
+
+
+
+    <!--  U N D E P L O Y    T E S T    A R C H I V E S  -->
+    
+    <target name="undeploy">
+         <record name="${basedir}/undeploy.output" action="start" />
+         
+         <run-quicklook-test path="web/helloworld" target="undeploy" />
+         <run-quicklook-test path="web/jsfastrologer" target="undeploy" />
+         <run-quicklook-test path="web/jsfinjection" target="undeploy" />
+         <run-quicklook-test path="jdbc/jdbcusertx" target="undeploy" />
+         <run-quicklook-test path="persistence/jpainjectemf" target="undeploy" />
+         <run-quicklook-test path="persistence/jpavalidation" target="undeploy" />
+         <run-quicklook-test path="security/helloworld" target="undeploy" />
+         <run-quicklook-test path="security/basicauth" target="undeploy" />
+         <run-quicklook-test path="ejb/slsbnicmt" target="undeploy" />
+         <run-quicklook-test path="ejb/sfulnoi" target="undeploy" />
+         <run-quicklook-test path="bean-validator/simple-bv-servlet" target="undeploy" />
+         <run-quicklook-test path="weld/numberguess" target="undeploy" />
+         <run-quicklook-test path="weld/osgiweld" target="undeploy" />
+         <run-quicklook-test path="weld/extensions" target="undeploy" />
+         <run-quicklook-test path="jms/injection" target="undeploy" />
+         
+         <record name="${basedir}/undeploy.output" action="stop" />
+     </target>
+
+    <target name="undeploy-gd">
+        <run-quicklook-test path="ejb/singleton" target="undeploy" />
+        <run-quicklook-test path="ejb/remoteview" target="undeploy" />
+        <run-quicklook-test path="ejb/cmp" target="undeploy" />
+        <!-- <ant dir="wsit/JaxwsFromWsdl" target="undeploy"/>
+        <ant dir="wsit/jsr109tester" target="undeploy"/>-->
+        <run-quicklook-test path="security/appperms" target="undeploy" />
+    </target>
+
+    <!-- Target is re-defined here as someone (who?) didn't want to specify ws.root property -->
+    <target name="clean">
+        <delete dir="${basedir}/classes" />
+        <delete verbose="true" includeemptydirs="true">
+            <fileset dir="${basedir}" includes="**/classes" />
+        </delete>
+        <delete dir="${basedir}/test-output" includeemptydirs="true" />
+        <delete dir="${basedir}/dist" includeemptydirs="true" />
+        <delete includeemptydirs="true">
+            <fileset dir="${basedir}">
+                <include name="**/*.output" />
+            </fileset>
+        </delete>
+    </target>
+
+
+
+
+    <!-- S U M M A R Y -->
+
+
+
     <!-- Generate the TestNG report -->
     <target name="report" depends="initprops">
         <echo message="Generating report at ${test.report}" />
@@ -370,39 +583,6 @@
         </if>
     </target>
 
-    <target name="initprops">
-        <property name="build.class.dir" value="${basedir}/classes/test" />
-        <property name="Java_SE" value="${basedir}/classes/EJB_remoteview/app" />
-        <property name="test.report" value="${basedir}/test-output" />
-        <mkdir dir="${test.report}" />
-        <path id="junit.path">
-            <pathelement path="${plugin_classpath}" />
-        </path>
-        <typedef name="junitreport" classname="org.apache.tools.ant.taskdefs.optional.junit.XMLResultAggregator" classpathref="junit.path" />
-        <path id="run.testng.classpath">
-            <fileset dir="${glassfish.home}/modules">
-                <include name="**/hk2*.jar" />
-                <include name="**/glassfish-api.jar" />
-                <include name="**/amx-core.jar" />
-                <include name="**/amx-javaee.jar" />
-                <include name="**/management-api.jar" />
-            </fileset>
-            <fileset dir="${glassfish.home}/lib">
-                <include name="**/gf-client.jar" />
-            </fileset>
-            <pathelement path="${plugin_classpath}" />
-            <pathelement location="${Java_SE}" />
-            <pathelement location="${build.class.dir}" />
-        </path>
-        <path id="embedded.testng.classpath">
-            <fileset dir="${glassfish.home}/lib/embedded">
-                <include name="**/glassfish-embedded-static-shell.jar" />
-            </fileset>
-            <pathelement location="${build.class.dir}" />
-            <pathelement location="${build.class.dir}/../EJB_Embedded/app" />
-        </path>
-    </target>
-
     <!-- added few messages in order to show testng summary of wsit related tests along with final summary as wsit tests are ran seperately as a workaround for GLASSFISH-21672 -->
     <target name="testng-summary">
         <loadfile srcfile="runtestng.output" property="testng_output">
@@ -557,66 +737,7 @@
         <property name="APPCLIENT" value="${glassfish.home}\bin\appclient.bat" />
     </target>
 
-    <target name="start-server-hk2" depends="setOSConditions">
 
-        <echo>+-----------------------------+</echo>
-        <echo>|                             |</echo>
-        <echo>| S T A R T I N G   GLASSFISH |</echo>
-        <echo>|       in HK2 mode           |</echo>
-        <echo>|                             |</echo>
-        <echo>+-----------------------------+</echo>
-
-        <antcall target="start-server-hk2-unix" />
-        <antcall target="start-server-hk2-windows" />
-    </target>
-
-    <target name="start-server-hk2-windows" if="isWindows">
-        <exec executable="cmd" spawn="true">
-            <env key="GlassFish_Platform" value="HK2" />
-            <arg value="/c" />
-            <arg value="${glassfish.home}\bin\asadmin.bat" />
-            <arg value="start-domain" />
-        </exec>
-    </target>
-
-    <target name="start-server-hk2-unix" if="isUnix">
-        <exec executable="${glassfish.home}/bin/asadmin">
-            <env key="GlassFish_Platform" value="HK2" />
-            <arg value="start-domain" />
-        </exec>
-    </target>
-
-    <target name="start-server-felix" depends="setOSConditions">
-
-        <echo>+-----------------------------+</echo>
-        <echo>|                             |</echo>
-        <echo>| S T A R T I N G   GLASSFISH |</echo>
-        <echo>|       in Felix mode         |</echo>
-        <echo>|                             |</echo>
-        <echo>+-----------------------------+</echo>
-
-        <antcall target="start-server-felix-unix" />
-        <antcall target="start-server-felix-windows" />
-    </target>
-
-    <target name="start-server-felix-windows" if="isWindows">
-        <exec executable="cmd" spawn="true">
-            <arg value="/c" />
-            <arg value="${glassfish.home}\bin\asadmin.bat" />
-            <arg value="start-domain" />
-            <arg value="domain1" />
-        </exec>
-        <waitfor maxwait="30" maxwaitunit="second" checkevery="500">
-            <http url="http://localhost:4848/" />
-        </waitfor>
-    </target>
-
-    <target name="start-server-felix-unix" if="isUnix">
-        <exec executable="${glassfish.home}/bin/asadmin">
-            <arg value="start-domain" />
-            <arg value="domain1" />
-        </exec>
-    </target>
 
     <target name="build-version" depends="setOSConditions">
         <antcall target="build-version-unix" />
@@ -677,4 +798,47 @@
         </exec>
     </target>
 
+
+
+
+    <!-- D E F S -->
+
+    <presetdef name="javac">
+        <javac includeantruntime="false" />
+    </presetdef>
+
+    <taskdef name="testng" classname="org.testng.TestNGAntTask">
+        <classpath>
+            <pathelement path="${plugin_classpath}" />
+        </classpath>
+    </taskdef>
+
+    <macrodef name="run-quicklook-test" xmlns:if="ant:if" xmlns:unless="ant:unless">
+        <attribute name="path" />
+        <attribute name="target" />
+        <sequential>
+            <local name="do-run-test" />
+            <condition property="do-run-test" else="false">
+                <or>
+                    <equals arg1="${env.quicklook}" arg2="@{path}" />
+                    <not>
+                        <isset property="env.quicklook" />
+                    </not>
+                </or>
+            </condition>
+
+            <sequential if:true="${do-run-test}">
+                <local name="absolute.path" />
+                <property name="absolute.path" location="@{path}" />
+                <echo message="${line.separator}" />
+                <echo message=" *************************" />
+                <echo message=" * @{target} @{path} " />
+                <echo message=" * Path: ${absolute.path} " />
+                <echo message=" *************************" />
+                <echo message="${line.separator}" />
+                <ant dir="@{path}" target="@{target}"/>
+            </sequential>
+        </sequential>
+    </macrodef>
+
 </project>
diff --git a/appserver/tests/quicklook/ejb/cmp/pom.xml b/appserver/tests/quicklook/ejb/cmp/pom.xml
index 8f5774e..323cf57 100644
--- a/appserver/tests/quicklook/ejb/cmp/pom.xml
+++ b/appserver/tests/quicklook/ejb/cmp/pom.xml
@@ -28,7 +28,7 @@
     <artifactId>cmp_quicklook</artifactId>
     <name>CMP Roster App Quicklook</name>
     <packaging>jar</packaging>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <description>This pom describes how to run QuickLook tests on the Glassfish Bundle</description>
 
     <build>
diff --git a/appserver/tests/quicklook/ejb/embedded/pom.xml b/appserver/tests/quicklook/ejb/embedded/pom.xml
index dec6cf1..7cd344a 100644
--- a/appserver/tests/quicklook/ejb/embedded/pom.xml
+++ b/appserver/tests/quicklook/ejb/embedded/pom.xml
@@ -28,7 +28,7 @@
     <artifactId>ejb_quicklook</artifactId>
     <name>Glassfish JRuby Quicklook</name>
     <packaging>jar</packaging>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <description>This pom describes how to run QuickLook tests on the Glassfish Bundle</description>
 
     <build>
diff --git a/appserver/tests/quicklook/ejb/remoteview/pom.xml b/appserver/tests/quicklook/ejb/remoteview/pom.xml
index dec6cf1..7cd344a 100644
--- a/appserver/tests/quicklook/ejb/remoteview/pom.xml
+++ b/appserver/tests/quicklook/ejb/remoteview/pom.xml
@@ -28,7 +28,7 @@
     <artifactId>ejb_quicklook</artifactId>
     <name>Glassfish JRuby Quicklook</name>
     <packaging>jar</packaging>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <description>This pom describes how to run QuickLook tests on the Glassfish Bundle</description>
 
     <build>
diff --git a/appserver/tests/quicklook/ejb/sfulnoi/pom.xml b/appserver/tests/quicklook/ejb/sfulnoi/pom.xml
index dec6cf1..7cd344a 100644
--- a/appserver/tests/quicklook/ejb/sfulnoi/pom.xml
+++ b/appserver/tests/quicklook/ejb/sfulnoi/pom.xml
@@ -28,7 +28,7 @@
     <artifactId>ejb_quicklook</artifactId>
     <name>Glassfish JRuby Quicklook</name>
     <packaging>jar</packaging>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <description>This pom describes how to run QuickLook tests on the Glassfish Bundle</description>
 
     <build>
diff --git a/appserver/tests/quicklook/ejb/singleton/pom.xml b/appserver/tests/quicklook/ejb/singleton/pom.xml
index dec6cf1..7cd344a 100644
--- a/appserver/tests/quicklook/ejb/singleton/pom.xml
+++ b/appserver/tests/quicklook/ejb/singleton/pom.xml
@@ -28,7 +28,7 @@
     <artifactId>ejb_quicklook</artifactId>
     <name>Glassfish JRuby Quicklook</name>
     <packaging>jar</packaging>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <description>This pom describes how to run QuickLook tests on the Glassfish Bundle</description>
 
     <build>
diff --git a/appserver/tests/quicklook/ejb/slsbnicmt/pom.xml b/appserver/tests/quicklook/ejb/slsbnicmt/pom.xml
index dec6cf1..7cd344a 100644
--- a/appserver/tests/quicklook/ejb/slsbnicmt/pom.xml
+++ b/appserver/tests/quicklook/ejb/slsbnicmt/pom.xml
@@ -28,7 +28,7 @@
     <artifactId>ejb_quicklook</artifactId>
     <name>Glassfish JRuby Quicklook</name>
     <packaging>jar</packaging>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <description>This pom describes how to run QuickLook tests on the Glassfish Bundle</description>
 
     <build>
diff --git a/appserver/tests/quicklook/gfproject/build-impl.xml b/appserver/tests/quicklook/gfproject/build-impl.xml
index 98ede24..8cac519 100644
--- a/appserver/tests/quicklook/gfproject/build-impl.xml
+++ b/appserver/tests/quicklook/gfproject/build-impl.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
+    Copyright (c) 2021 Contributors to Eclipse Foundation.
     Copyright (c) 1997, 2021 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
@@ -19,423 +20,359 @@
 
 <project name="common-impl" default="all" basedir=".">
 
-    <property file="${ws.root}/build.properties"/>
-    <property name="app.file.ext" value="${app.file}.${archive.type}"/>
-    <property name="config.dir" value="${ant.file}"/>
-    <property name="is.war.module" value="true"/>
-    <property name="is.persistence.module" value="true"/>
-    <property name="result.output" value="${ws.root}/test-output"/>
-    <property name="assemble.dir" value="${ws.root}/dist/${testsuite.name}"/>
-    <property name="class.output" value="${ws.root}/classes/${testsuite.name}/app"/>
-    <!--<property name="test.class.output" value="${ws.root}/classes/${testsuite.name}/test"/>-->
-    <property name="test.class.output" value="${ws.root}/classes/test"/>
-    <property name="dist.dir" value="${ws.root}/dist/${testsuite.name}"/>
+    <property file="${ws.root}/build.properties" />
+    <property name="app.file.ext" value="${app.file}.${archive.type}" />
+    <property name="config.dir" value="${ant.file}" />
+    <property name="is.war.module" value="true" />
+    <property name="is.persistence.module" value="true" />
+    <property name="result.output" value="${ws.root}/test-output" />
+    <property name="assemble.dir" value="${ws.root}/dist/${testsuite.name}" />
+    <property name="class.output" value="${ws.root}/classes/${testsuite.name}/app" />
+    <property name="test.class.output" value="${ws.root}/classes/test" />
+    <property name="dist.dir" value="${ws.root}/dist/${testsuite.name}" />
 
     <target name="clean">
-        <delete dir="${ws.root}/classes"/>
-        <delete dir="${result.output}"/>
-        <delete dir="${ws.root}/dist"/>
-        <echo message="Deleting all WAR/EAR in local testsuite directories!!!"/>
-        <echo message="There should not be any WAR file checked in."/>
+        <delete dir="${ws.root}/classes" />
+        <delete dir="${result.output}" />
+        <delete dir="${ws.root}/dist" />
+        <echo message="Deleting all WAR/EAR in local testsuite directories!!!" />
+        <echo message="There should not be any WAR file checked in." />
         <delete>
-            <fileset dir="." includes="**/*.war"/>
+            <fileset dir="." includes="**/*.war" />
         </delete>
     </target>
 
-    <!-- classpath at QL runtime (i.e. not for building of testing apps) -->
+    <!-- classpath at QuickLook runtime (i.e. not for building of testing apps) -->
     <path id="run.testng.classpath">
         <fileset dir="${glassfish.home}/modules">
-            <include name="**/hk2*.jar"/>
-            <include name="**/glassfish-api.jar"/>
-            <include name="**/amx-core.jar"/>
-            <include name="**/amx-javaee.jar"/>
-            <include name="**/gf-client-module.jar"/>
+            <include name="**/hk2*.jar" />
+            <include name="**/glassfish-api.jar" />
+            <include name="**/amx-core.jar" />
+            <include name="**/amx-javaee.jar" />
+            <include name="**/gf-client-module.jar" />
         </fileset>
-    <fileset dir="${maven.repo.local}/com/beust/jcommander">
-        <include name="**/1.72/jcommander-1.72.jar"/>
-    </fileset>
-        <pathelement location="${class.output}"/>
-        <pathelement location="${test.class.output}"/>
+        <fileset dir="${maven.repo.local}/com/beust/jcommander">
+            <include name="**/1.72/jcommander-1.72.jar" />
+        </fileset>
+        <pathelement location="${class.output}" />
+        <pathelement location="${test.class.output}" />
     </path>
 
-    <!-- classpath at QL build time for building testing apps -->
+    <!-- classpath at QuickLook build time for building testing apps -->
     <path id="class.path">
         <fileset dir="${glassfish.home}/modules">
-            <include name="**/*.jar"/>
+            <include name="**/*.jar" />
             <!-- excluding some obviously unnecessary jars to reduce classpath length (> 32kB causes javac to fail on WinXP) -->
-            <exclude name="cmp*.jar"/>
-            <exclude name="connectors-*.jar"/>
-            <exclude name="console-*.jar"/>
-            <exclude name="deployment-*.jar"/>
-            <exclude name="*help.jar"/>
-            <exclude name="orb-*.jar"/>
-            <exclude name="org.apache.felix.*"/>
-            <exclude name="org.eclipse.persistence.*"/>
-            <exclude name="stats77.jar"/>
-            <exclude name="trilead-ssh2-repackaged.jar"/>
-            <exclude name="virt-core.jar"/>
-            <exclude name="woodstox-osgi.jar"/>
+            <exclude name="cmp*.jar" />
+            <exclude name="connectors-*.jar" />
+            <exclude name="console-*.jar" />
+            <exclude name="deployment-*.jar" />
+            <exclude name="*help.jar" />
+            <exclude name="orb-*.jar" />
+            <exclude name="org.apache.felix.*" />
+            <exclude name="org.eclipse.persistence.*" />
+            <exclude name="stats77.jar" />
+            <exclude name="trilead-ssh2-repackaged.jar" />
+            <exclude name="virt-core.jar" />
+            <exclude name="woodstox-osgi.jar" />
         </fileset>
-        <pathelement location="${class.output}"/>
-        <pathelement location="${test.class.output}"/>
-        <pathelement path="${plugin_classpath}"/>
+        <pathelement location="${class.output}" />
+        <pathelement location="${test.class.output}" />
+        <pathelement path="${plugin_classpath}" />
     </path>
 
     <!-- TestNG class fileset -->
 
     <path id="path2testng">
-        <pathelement location="${ws.root}/lib/testng-5.0-jdk15.jar"/>
+        <pathelement location="${ws.root}/lib/testng-5.0-jdk15.jar" />
     </path>
 
     <taskdef name="testng" classname="org.testng.TestNGAntTask">
         <classpath>
-        <pathelement path="${plugin_classpath}"/>
+            <pathelement path="${plugin_classpath}" />
         </classpath>
     </taskdef>
 
 
     <target name="compile-tests" description="compile the test ng example">
-        <echo message="compiling test client to ${test.class.output}"/>
+        <echo message="compiling test client to ${test.class.output}" />
 
         <fileset dir="${basedir}/src/test" id="java.source.id">
-            <include name="**/*.java"/>
+            <include name="**/*.java" />
         </fileset>
-        <property name="source.file.list" refid="java.source.id"/>
-        <echo message="Listing of source files: ${source.file.list}"/>
+        <property name="source.file.list" refid="java.source.id" />
+        <echo message="Listing of source files: ${source.file.list}" />
 
-        <mkdir dir="${test.class.output}"/>
-        <javac   debug="true"
-                 source="1.8"
-                 target="1.8"
-                 classpathref="class.path"
-                 srcdir="${basedir}/src/test"
-                 sourcepath=""
-                 destdir="${test.class.output}">
-            <include name="**/*.java"/>
+        <mkdir dir="${test.class.output}" />
+        <javac debug="true" source="1.8" target="1.8" classpathref="class.path" srcdir="${basedir}/src/test" sourcepath="" destdir="${test.class.output}">
+            <include name="**/*.java" />
         </javac>
     </target>
 
-    <target name="compile-util"
-        description="compile the test ng util">
-        <mkdir dir="${test.class.output}"/>
-        <javac   debug="true"
-                 source="1.8"
-         target="1.8"
-         classpathref="class.path"
-                 srcdir="${ws.root}/admincli/src/test/admincli/util:${ws.root}/utils"
-                 destdir="${test.class.output}">
+    <target name="compile-util" description="compile the test ng util">
+        <mkdir dir="${test.class.output}" />
+        <javac debug="true" source="1.8" target="1.8" classpathref="class.path" srcdir="${ws.root}/admincli/src/test/admincli/util:${ws.root}/utils" destdir="${test.class.output}">
         </javac>
     </target>
 
     <!-- Generate the TestNG report -->
     <target name="report">
-        <delete dir="${result.output}"/>
-        <mkdir dir="${test-report}"/>
+        <delete dir="${result.output}" />
+        <mkdir dir="${test-report}" />
         <junitreport todir="${test-report}">
             <fileset dir=".">
-                <include name="**/test-output/**/*.xml"/>
-                <exclude name="**/testng-failed.xml"/>
+                <include name="**/test-output/**/*.xml" />
+                <exclude name="**/testng-failed.xml" />
             </fileset>
-            <report format="noframes" todir="test-report"/>
+            <report format="noframes" todir="test-report" />
         </junitreport>
     </target>
 
     <target name="archive-type">
-        <echo message="archive-type is ${archive.type}"/>
+        <echo message="archive-type is ${archive.type}" />
         <condition property="archive.war">
-            <equals arg1="war" arg2="${archive.type}"/>
+            <equals arg1="war" arg2="${archive.type}" />
         </condition>
         <condition property="archive.ear">
-            <equals arg1="ear" arg2="${archive.type}"/>
+            <equals arg1="ear" arg2="${archive.type}" />
         </condition>
         <condition property="archive.appclient_ear">
-            <equals arg1="appclient_ear" arg2="${archive.type}"/>
+            <equals arg1="appclient_ear" arg2="${archive.type}" />
         </condition>
         <condition property="archive.jar">
-            <equals arg1="jar" arg2="${archive.type}"/>
+            <equals arg1="jar" arg2="${archive.type}" />
         </condition>
     </target>
 
     <target name="build-impl">
-        <antcall target="build-war"/>
-        <antcall target="build-ear"/>
-    <antcall target="build-appclient-ear"/>
-        <antcall target="build-jar"/>
+        <antcall target="build-war" />
+        <antcall target="build-ear" />
+        <antcall target="build-appclient-ear" />
+        <antcall target="build-jar" />
     </target>
 
     <target name="compile-single">
-        <delete dir="$class.output}"/>
-        <mkdir dir="${class.output}"/>
-        <javac   debug="true"
-                 source="1.8"
-         target="1.8"
-                 classpathref="class.path"
-                 srcdir="src"
-                 destdir="${class.output}"/>
-
+        <delete dir="$class.output}" />
+        <mkdir dir="${class.output}" />
+        <javac debug="true" source="1.8" target="1.8" classpathref="class.path" srcdir="src" destdir="${class.output}" />
     </target>
 
 
-<target name="build-war" depends="archive-type" if="archive.war">
-    <echo message="Now creating a war file ${dist.dir}/${app.file.ext}"/>
-    <delete dir="${class.output}"/>
-    <delete dir="${dist.dir}"/>
-    <delete file="${app.file.ext}"/>
-    <mkdir dir="${class.output}"/>
-    <mkdir dir="${dist.dir}"/>
-    <mkdir dir="web/html"/>
-    <mkdir dir="web/jsp"/>
-    <mkdir dir="src/java"/>
-    <javac   debug="true"
-    source="8"
-    target="8"
-    classpathref="class.path"
-    srcdir="src/java"
-    failonerror="false"
-    destdir="${class.output}"/>
+    <target name="build-war" depends="archive-type" if="archive.war">
+        <echo message="Now creating a war file ${dist.dir}/${app.file.ext}" />
+        <delete dir="${class.output}" />
+        <delete dir="${dist.dir}" />
+        <delete file="${app.file.ext}" />
+        <mkdir dir="${class.output}" />
+        <mkdir dir="${dist.dir}" />
+        <mkdir dir="web/html" />
+        <mkdir dir="web/jsp" />
+        <mkdir dir="src/java" />
+        <javac debug="true" source="8" target="8" classpathref="class.path" srcdir="src/java" failonerror="false" destdir="${class.output}" />
 
-    <mkdir dir="${class.output}/META-INF"/>
-    <copy file="metadata/persistence.xml" todir="${class.output}/META-INF" failonerror="false"/>
+        <mkdir dir="${class.output}/META-INF" />
+        <copy file="metadata/persistence.xml" todir="${class.output}/META-INF" failonerror="false" />
 
-    <war destfile="${dist.dir}/${app.file.ext}" webxml="metadata/web.xml">
-        <fileset dir="web/html"/>
-        <fileset dir="web/jsp"/>
-        <classes dir="${class.output}">
-            <include name="**/*.class"/>
-        <include name="**/persistence.xml"/>
-        <include name="**/*.properties"/>
-        </classes>
-        <!--<zipfileset dir="src/graphics/images/gifs"
-        prefix="images"/>-->
-        <webinf dir="metadata">
-            <include name="**/*.xml"/>
-            <exclude name="**/persistence.xml"/>
-        </webinf>
-    </war>
-    <!-- antcall target="update-war-struts"/ -->
-    <!-- copy file="${dist.dir}/${app.file.ext}" tofile="./${app.file.ext}"/ -->
-</target>
+        <war destfile="${dist.dir}/${app.file.ext}" webxml="metadata/web.xml">
+            <fileset dir="web/html" />
+            <fileset dir="web/jsp" />
+            <classes dir="${class.output}">
+                <include name="**/*.class" />
+                <include name="**/persistence.xml" />
+                <include name="**/*.properties" />
+            </classes>
+            <webinf dir="metadata">
+                <include name="**/*.xml" />
+                <exclude name="**/persistence.xml" />
+            </webinf>
+        </war>
+    </target>
 
-<target name="update-war-struts" if="add.struts.jar">
-    <echo message="Adding struts jar to WEB-INF/lib"/>
-<war destfile="${dist.dir}/${app.file.ext}" update="true">
-    <lib dir="${ws.root}/web/lib/struts-1.2.9">
-        <include name="**/*.jar"/>
-    </lib>
-</war>
+    <target name="update-war-struts" if="add.struts.jar">
+        <echo message="Adding struts jar to WEB-INF/lib" />
+        <war destfile="${dist.dir}/${app.file.ext}" update="true">
+            <lib dir="${ws.root}/web/lib/struts-1.2.9">
+                <include name="**/*.jar" />
+            </lib>
+        </war>
+    </target>
 
-</target>
+    <target name="build-jar" depends="archive-type" if="archive.jar">
+        <echo message="Now creating a jar file ${dist.dir}/${app.file.ext}" />
+        <delete dir="${class.output}" />
+        <delete dir="${dist.dir}" />
+        <mkdir dir="${class.output}" />
+        <mkdir dir="${dist.dir}" />
+        <echo message="Now compiling" />
+        <javac debug="true" source="1.8" target="1.8" classpathref="class.path" srcdir="src/java" destdir="${class.output}" />
+        <echo message="Now creating a war file ${dist.dir}/${app.file.ext}" />
+        <jar destfile="${dist.dir}/${app.file.ext}" update="true" basedir="${class.output}" />
+    </target>
 
-<target name="build-jar" depends="archive-type" if="archive.jar">
-    <echo message="Now creating a jar file ${dist.dir}/${app.file.ext}"/>
-    <delete dir="${class.output}"/>
-    <delete dir="${dist.dir}"/>
-    <mkdir dir="${class.output}"/>
-    <mkdir dir="${dist.dir}"/>
-    <echo message="Now compiling"/>
-    <javac   debug="true"
-    source="1.8"
-    target="1.8"
-    classpathref="class.path"
-    srcdir="src/java"
-    destdir="${class.output}"/>
-    <echo message="Now creating a war file ${dist.dir}/${app.file.ext}"/>
-    <jar destfile="${dist.dir}/${app.file.ext}" update="true"
-    basedir="${class.output}"/>
-</target>
+    <target name="build-ear" depends="archive-type" if="archive.ear">
+        <delete dir="${class.output}" />
+        <delete dir="${dist.dir}" />
+        <delete file="${app.file.ext}" />
+        <mkdir dir="${class.output}" />
+        <mkdir dir="${dist.dir}" />
+        <javac debug="true" source="1.8" target="1.8" classpathref="class.path" srcdir="src/java" failonerror="false" destdir="${class.output}" />
+        <echo message="war.classes ============== : ${war.classes}" />
+        <war destfile="${dist.dir}/${app.file}Web.war" webxml="metadata/web.xml">
+            <fileset dir="web/html" />
+            <fileset dir="web/jsp" />
+            <classes dir="${class.output}" includes="${war.classes}" />
+            <webinf dir="metadata">
+                <include name="**/web.xml" />
+            </webinf>
+        </war>
+        <mkdir dir="${class.output}/META-INF" />
+        <copy file="metadata/ejb-jar.xml" tofile="${class.output}/META-INF/ejb-jar.xml" failonerror="false" />
+        <copy file="metadata/sun-ejb-jar.xml" tofile="${class.output}/META-INF/sun-ejb-jar.xml" failonerror="false" />
+        <copy file="metadata/sun-cmp-mappings.xml" tofile="${class.output}/META-INF/sun-cmp-mappings.xml" failonerror="false" />
+        <copy file="metadata/${dbschema}" tofile="${class.output}/${dbschema}" failonerror="false" />
+        <jar destfile="${dist.dir}/${app.file}EJB.jar" basedir="${class.output}" excludes="**/*Servlet.class" />
+        <ear destfile="${dist.dir}/${app.file.ext}" appxml="metadata/application.xml">
+            <fileset dir="${dist.dir}" includes="*.jar,*.war" />
+        </ear>
+        <echo message="Packaged Archive at ${dist.dir}/${app.file.ext}" />
+    </target>
 
-<target name="build-ear" depends="archive-type" if="archive.ear">
-    <delete dir="${class.output}"/>
-    <delete dir="${dist.dir}"/>
-    <delete file="${app.file.ext}"/>
-    <mkdir dir="${class.output}"/>
-    <mkdir dir="${dist.dir}"/>
-    <javac   debug="true"
-    source="1.8"
-    target="1.8"
-    classpathref="class.path"
-    srcdir="src/java"
-    failonerror="false"
-    destdir="${class.output}"/>
-    <echo message="war.classes ============== : ${war.classes}"/>
-    <war destfile="${dist.dir}/${app.file}Web.war" webxml="metadata/web.xml">
-        <fileset dir="web/html"/>
-        <fileset dir="web/jsp"/>
-        <classes dir="${class.output}" includes="${war.classes}"/>
-        <webinf dir="metadata">
-            <include name="**/web.xml"/>
-        </webinf>
-    </war>
-    <mkdir dir="${class.output}/META-INF"/>
-    <copy file="metadata/ejb-jar.xml" tofile="${class.output}/META-INF/ejb-jar.xml" failonerror="false"/>
-    <copy file="metadata/sun-ejb-jar.xml" tofile="${class.output}/META-INF/sun-ejb-jar.xml" failonerror="false"/>
-    <copy file="metadata/sun-cmp-mappings.xml" tofile="${class.output}/META-INF/sun-cmp-mappings.xml" failonerror="false"/>
-    <copy file="metadata/${dbschema}" tofile="${class.output}/${dbschema}" failonerror="false"/>
-    <jar destfile="${dist.dir}/${app.file}EJB.jar"
-        basedir="${class.output}"
-        excludes="**/*Servlet.class"/>
-    <ear destfile="${dist.dir}/${app.file.ext}" appxml="metadata/application.xml">
-        <fileset dir="${dist.dir}" includes="*.jar,*.war"/>
-    </ear>
-    <echo message="Packaged Archive at ${dist.dir}/${app.file.ext}"/>
-</target>
+    <target name="build-appclient-ear" depends="archive-type" if="archive.appclient_ear">
+        <delete dir="${class.output}" />
+        <delete dir="${dist.dir}" />
+        <delete file="${app.file.ext}" />
+        <mkdir dir="${class.output}" />
+        <mkdir dir="${dist.dir}" />
+        <javac debug="true" source="1.8" target="1.8" classpathref="class.path" srcdir="src/com" failonerror="false" destdir="${class.output}" />
+        <mkdir dir="${class.output}/META-INF" />
+        <copy file="metadata/sun-application-client.xml" tofile="${class.output}/META-INF/sun-application-client.xml" failonerror="false" />
+        <jar destfile="${dist.dir}/${app.file}-client.jar" basedir="${class.output}" includes="**/Client.class" manifest="./metadata/MANIFEST.MF">
+            <metainf dir="${class.output}/META-INF">
+                <include name="sun-application-client.xml" />
+            </metainf>
+        </jar>
+        <delete dir="${class.output}/META-INF" />
+        <jar destfile="${dist.dir}/${app.file}-ejb.jar" basedir="${class.output}" excludes="**/client/Client.*" />
+        <ear destfile="${dist.dir}/${app.file}App.ear" appxml="metadata/application.xml">
+            <fileset dir="${dist.dir}" includes="*.jar,*.war" />
+        </ear>
+        <echo message="Packaged Archive at ${dist.dir}/${app.file}App.ear" />
+    </target>
 
-<target name="build-appclient-ear" depends="archive-type" if="archive.appclient_ear">
-    <delete dir="${class.output}"/>
-    <delete dir="${dist.dir}"/>
-    <delete file="${app.file.ext}"/>
-    <mkdir dir="${class.output}"/>
-    <mkdir dir="${dist.dir}"/>
-    <javac   debug="true"
-    source="1.8"
-    target="1.8"
-    classpathref="class.path"
-    srcdir="src/com"
-    failonerror="false"
-    destdir="${class.output}"/>
-    <mkdir dir="${class.output}/META-INF"/>
-    <copy file="metadata/sun-application-client.xml" tofile="${class.output}/META-INF/sun-application-client.xml" failonerror="false"/>
-    <jar destfile="${dist.dir}/${app.file}-client.jar"
-        basedir="${class.output}" includes="**/Client.class" manifest="./metadata/MANIFEST.MF">
-      <metainf dir="${class.output}/META-INF">
-        <include name="sun-application-client.xml"/>
-      </metainf>
-    </jar>
-    <delete dir="${class.output}/META-INF"/>
-    <jar destfile="${dist.dir}/${app.file}-ejb.jar"
-        basedir="${class.output}"
-        excludes="**/client/Client.*"/>
-    <ear destfile="${dist.dir}/${app.file}App.ear" appxml="metadata/application.xml">
-        <fileset dir="${dist.dir}" includes="*.jar,*.war"/>
-    </ear>
-    <echo message="Packaged Archive at ${dist.dir}/${app.file}App.ear"/>
-</target>
-
-<target name="checkTestNGXML">
-<available file="testng.xml" property="testng.xml.present"/>
-</target>
+    <target name="checkTestNGXML">
+        <available file="testng.xml" property="testng.xml.present" />
+    </target>
 
 
-<target name="runtest-impl">
-    <antcall target="runtest-impl-class"/>
-    <antcall target="runtest-impl-xml"/>
-</target>
+    <target name="runtest-impl">
+        <antcall target="runtest-impl-class" />
+        <antcall target="runtest-impl-xml" />
+    </target>
 
-<target name="runtest-impl-class" depends="setOSConditions,asenv-unix,asenv-windows,checkTestNGXML" unless="testng.xml.present">
-    <echo message="=============Starting TestNG test at ${test.class.output}  ============"/>
+    <target name="runtest-impl-class" depends="setOSConditions,asenv-unix,asenv-windows,checkTestNGXML" unless="testng.xml.present">
+        <echo message="=============Starting TestNG test at ${test.class.output}  ============" />
 
-    <mkdir dir="${result.output}"/>
-    <testng outputdir="${result.output}" verbose="2"
-        suitename="${testsuite.name}" testname="${testng.test.name}" classpathref="run.testng.classpath">
-        <sysproperty key="glassfish.home" value="${glassfish.home}"/>
-        <sysproperty key="BASEDIR" value="${ws.root}"/>
-        <classfileset dir="${test.class.output}" includes="**/${testng.testclient}.class"/>
-        <jvmarg value="-Dhttp.host=${glassfish.http.host}" />
-        <jvmarg value="-Dhttp.port=${glassfish.http.port}" />
-        <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
-        <jvmarg value="-DASADMIN=${ASADMIN}" />
-    </testng>
-</target>
+        <mkdir dir="${result.output}" />
+        <testng outputdir="${result.output}" verbose="2" suitename="${testsuite.name}" testname="${testng.test.name}" classpathref="run.testng.classpath">
+            <sysproperty key="glassfish.home" value="${glassfish.home}" />
+            <sysproperty key="BASEDIR" value="${ws.root}" />
+            <classfileset dir="${test.class.output}" includes="**/${testng.testclient}.class" />
+            <jvmarg value="-Dhttp.host=${glassfish.http.host}" />
+            <jvmarg value="-Dhttp.port=${glassfish.http.port}" />
+            <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+            <jvmarg value="-DASADMIN=${ASADMIN}" />
+        </testng>
+    </target>
 
-<target name="runtest-impl-xml" depends="setOSConditions,asenv-unix,asenv-windows,checkTestNGXML" if="testng.xml.present">
-    <echo message="=============Starting TestNG test at ${test.class.output} from testng.xml  ============"/>
+    <target name="runtest-impl-xml" depends="setOSConditions,asenv-unix,asenv-windows,checkTestNGXML" if="testng.xml.present">
+        <echo message="=============Starting TestNG test at ${test.class.output} from testng.xml  ============" />
 
-    <mkdir dir="${result.output}"/>
-    <testng outputdir="${result.output}"
-        suitename="${testsuite.name}"
-        testname="${testng.test.name}"
-        classpathref="run.testng.classpath">
-        <xmlfileset dir="." includes="testng.xml"/>
-        <jvmarg value="-Dhttp.host=${glassfish.http.host}" />
-        <jvmarg value="-Dhttp.port=${glassfish.http.port}" />
-        <jvmarg value="-DASADMIN=${ASADMIN}" />
-        <jvmarg value="-DAPPCLIENT=${APPCLIENT}" />
-        <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
-    </testng>
-</target>
+        <mkdir dir="${result.output}" />
+        <testng outputdir="${result.output}" suitename="${testsuite.name}" testname="${testng.test.name}" classpathref="run.testng.classpath">
+            <xmlfileset dir="." includes="testng.xml" />
+            <jvmarg value="-Dhttp.host=${glassfish.http.host}" />
+            <jvmarg value="-Dhttp.port=${glassfish.http.port}" />
+            <jvmarg value="-DASADMIN=${ASADMIN}" />
+            <jvmarg value="-DAPPCLIENT=${APPCLIENT}" />
+            <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+        </testng>
+    </target>
 
-<!-- the following targets are for running the embedded tests -->
-<target name="runtest-embedded-class" depends="setOSConditions,asenv-unix,asenv-windows,checkTestNGXML" unless="testng.xml.present">
-    <echo message="=============Starting TestNG test at ${test.class.output}  ============"/>
-    <mkdir dir="${result.output}"/>
-    <testng outputdir="${result.output}" verbose="2"
-    suitename="${testsuite.name}"
-    testname="${testng.test.name}"
-            classpathref="embedded.testng.classpath">
-        <sysproperty key="glassfish.home" value="${glassfish.home}"/>
-        <sysproperty key="BASEDIR" value="${ws.root}"/>
-        <classfileset dir="${test.class.output}" includes="**/${testng.testclient}.class"/>
-        <jvmarg value="-Dhttp.host=${glassfish.http.host}" />
-        <jvmarg value="-Dhttp.port=${glassfish.http.port}" />
-        <jvmarg value="-DASADMIN=${ASADMIN}" />
-    </testng>
-</target>
+    <!-- the following targets are for running the embedded tests -->
+    <target name="runtest-embedded-class" depends="setOSConditions,asenv-unix,asenv-windows,checkTestNGXML" unless="testng.xml.present">
+        <echo message="=============Starting TestNG test at ${test.class.output}  ============" />
+        <mkdir dir="${result.output}" />
+        <testng outputdir="${result.output}" verbose="2" suitename="${testsuite.name}" testname="${testng.test.name}" classpathref="embedded.testng.classpath">
+            <sysproperty key="glassfish.home" value="${glassfish.home}" />
+            <sysproperty key="BASEDIR" value="${ws.root}" />
+            <classfileset dir="${test.class.output}" includes="**/${testng.testclient}.class" />
+            <jvmarg value="-Dhttp.host=${glassfish.http.host}" />
+            <jvmarg value="-Dhttp.port=${glassfish.http.port}" />
+            <jvmarg value="-DASADMIN=${ASADMIN}" />
+        </testng>
+    </target>
 
     <path id="embedded.testng.classpath">
         <fileset dir="${glassfish.home}/lib/embedded">
-            <include name="**/glassfish-embedded-static-shell.jar"/>
+            <include name="**/glassfish-embedded-static-shell.jar" />
         </fileset>
-        <pathelement location="${class.output}"/>
-        <pathelement location="${test.class.output}"/>
+        <pathelement location="${class.output}" />
+        <pathelement location="${test.class.output}" />
     </path>
 
 
-<!-- the following targets are for running the wsit tests -->
+    <!-- the following targets are for running the wsit tests -->
     <path id="wsit.classpath">
-        <pathelement location="${glassfish.home}/modules/jakarta.xml.bind-api.jar"/>
-        <pathelement location="${glassfish.home}/modules/jakarta.activation.jar"/>
-        <pathelement location="${glassfish.home}/modules/jakarta.mail.jar"/>
-        <pathelement location="${glassfish.home}/modules/jaxb-osgi.jar"/>
-        <pathelement location="${glassfish.home}/modules/webservices-api-osgi.jar"/>
-        <pathelement location="${glassfish.home}/modules/webservices-osgi.jar"/>
-        <pathelement location="${java.home}/../lib/tools.jar"/>
+        <pathelement location="${glassfish.home}/modules/jakarta.xml.bind-api.jar" />
+        <pathelement location="${glassfish.home}/modules/jakarta.activation-api.jar" />
+        <pathelement location="${glassfish.home}/modules/angus-activation.jar" />
+        <pathelement location="${glassfish.home}/modules/jakarta.mail-api.jar" />
+        <pathelement location="${glassfish.home}/modules/angus-mail.jar" />
+        <pathelement location="${glassfish.home}/modules/jaxb-osgi.jar" />
+        <pathelement location="${glassfish.home}/modules/webservices-api-osgi.jar" />
+        <pathelement location="${glassfish.home}/modules/webservices-osgi.jar" />
+        <pathelement location="${java.home}/../lib/tools.jar" />
     </path>
 
     <condition property="wsjar.available">
         <and>
-            <available file="${glassfish.home}/modules/webservices-api-osgi.jar"/>
-            <available file="${glassfish.home}/modules/webservices-osgi.jar"/>
-            <available file="${glassfish.home}/modules/jakarta.xml.bind-api.jar"/>
-            <available file="${glassfish.home}/modules/jaxb-osgi.jar"/>
+            <available file="${glassfish.home}/modules/webservices-api-osgi.jar" />
+            <available file="${glassfish.home}/modules/webservices-osgi.jar" />
+            <available file="${glassfish.home}/modules/jakarta.xml.bind-api.jar" />
+            <available file="${glassfish.home}/modules/jaxb-osgi.jar" />
         </and>
     </condition>
 
     <target name="declare-wsimport" if="wsjar.available">
-      <taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport">
-         <classpath refid="wsit.classpath"/>
-      </taskdef>
+        <taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport">
+            <classpath refid="wsit.classpath" />
+        </taskdef>
     </target>
 
     <target name="runwsittest-impl">
-        <antcall target="runwsittest-impl-class"/>
-        <antcall target="runwsittest-impl-xml"/>
+        <antcall target="runwsittest-impl-class" />
+        <antcall target="runwsittest-impl-xml" />
     </target>
 
     <target name="runwsittest-impl-class" depends="checkTestNGXML" unless="testng.xml.present">
-        <echo message="=============Starting TestNG test at ${test.class.output}  ============"/>
-        <mkdir dir="${result.output}"/>
-        <testng outputdir="${result.output}" verbose="2"
-        suitename="${testsuite.name}"
-        testname="${testng.test.name}"
-                classpathref="wsit.classpath" classpath="${build.classes.home}:${basedir}/etc">
-            <classfileset dir="${build.classes.home}" includes="**/${testng.testclient}.class"/>
+        <echo message="=============Starting TestNG test at ${test.class.output}  ============" />
+        <mkdir dir="${result.output}" />
+        <testng outputdir="${result.output}" verbose="2" suitename="${testsuite.name}" testname="${testng.test.name}" classpathref="wsit.classpath" classpath="${build.classes.home}:${basedir}/etc">
+            <classfileset dir="${build.classes.home}" includes="**/${testng.testclient}.class" />
             <jvmarg value="-Dhttp.host=${glassfish.http.host}" />
             <jvmarg value="-Dhttp.port=${glassfish.http.port}" />
-            <bootclasspath classpathref="boot.class.path"/>
+            <bootclasspath classpathref="boot.class.path" />
         </testng>
     </target>
 
     <target name="runwsittest-impl-xml" depends="checkTestNGXML" if="testng.xml.present">
-        <echo message="=============Starting TestNG test at ${test.class.output} from testng.xml  ============"/>
-        <mkdir dir="${result.output}"/>
-        <testng outputdir="${result.output}"
-        suitename="${testsuite.name}"
-        testname="${testng.test.name}"
-                classpathref="wsit.classpath" classpath="${build.classes.home}:${basedir}/etc">
-            <xmlfileset dir="." includes="testng.xml"/>
+        <echo message="=============Starting TestNG test at ${test.class.output} from testng.xml  ============" />
+        <mkdir dir="${result.output}" />
+        <testng outputdir="${result.output}" suitename="${testsuite.name}" testname="${testng.test.name}" classpathref="wsit.classpath" classpath="${build.classes.home}:${basedir}/etc">
+            <xmlfileset dir="." includes="testng.xml" />
             <jvmarg value="-Dhttp.host=${glassfish.http.host}" />
             <jvmarg value="-Dhttp.port=${glassfish.http.port}" />
-            <bootclasspath classpathref="boot.class.path"/>
+            <bootclasspath classpathref="boot.class.path" />
         </testng>
     </target>
 
diff --git a/appserver/tests/quicklook/jms/injection/pom.xml b/appserver/tests/quicklook/jms/injection/pom.xml
index 69c4620..2d3e196 100644
--- a/appserver/tests/quicklook/jms/injection/pom.xml
+++ b/appserver/tests/quicklook/jms/injection/pom.xml
@@ -28,7 +28,7 @@
     <artifactId>injection_quicklook</artifactId>
     <name>Glassfish JMS Injection Quicklook</name>
     <packaging>jar</packaging>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <description>This pom describes how to run QuickLook tests on the Glassfish Bundle</description>
 
     <build>
diff --git a/appserver/tests/quicklook/pom.xml b/appserver/tests/quicklook/pom.xml
index 95189c3..2bc75d2 100644
--- a/appserver/tests/quicklook/pom.xml
+++ b/appserver/tests/quicklook/pom.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
+    Copyright (c) 2021 Contributors to Eclipse Foundation.
     Copyright (c) 1997, 2021 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
@@ -17,20 +18,24 @@
 
 -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
+
     <parent>
         <groupId>org.eclipse.ee4j</groupId>
         <artifactId>project</artifactId>
         <version>1.0</version>
         <relativePath/>
     </parent>
+
     <groupId>org.glassfish.quicklook</groupId>
     <artifactId>quicklook</artifactId>
-    <name>Glassfish Quicklook Bundle</name>
+    <version>7.0.0-SNAPSHOT</version>
     <packaging>jar</packaging>
-    <version>6.2.6-SNAPSHOT</version>
+
+    <name>Glassfish Quicklook Bundle</name>
     <description>This pom describes how to run QuickLook tests on the Glassfish Bundle</description>
+
     <build>
         <plugins>
             <plugin>
@@ -42,13 +47,14 @@
                         <phase>test</phase>
                         <configuration>
                             <target>
-                                <taskdef resource="net/sf/antcontrib/antcontrib.properties"
-                                         classpathref="maven.plugin.classpath" />
+                                <taskdef resource="net/sf/antcontrib/antcontrib.properties" classpathref="maven.plugin.classpath" />
                                 <property name="compile_classpath" refid="maven.compile.classpath"/>
                                 <property name="plugin_classpath" refid="maven.plugin.classpath"/>
 
                                 <echo message="compile classpath: ${compile_classpath}"/>
                                 <echo message="plugin classpath:  ${plugin_classpath}"/>
+                                
+                                <!-- Full Profile -->
                                 <if>
                                     <equals arg1="${test.gd}" arg2="true" />
                                     <then>
@@ -57,8 +63,19 @@
                                         </ant>
                                     </then>
                                 </if>
+                                
+                                 <if>
+                                    <equals arg1="${test.gd.security}" arg2="true" />
+                                    <then>
+                                        <ant dir="." antfile="build.xml" target="all_gd_security">
+                                            <property name="glassfish.home" value="${glassfish.home}"/>
+                                        </ant>
+                                    </then>
+                                </if>
+                                
+                                <!-- Web Profile -->
                                 <if>
-                                    <equals arg1="${test.wd}" arg2="true" />
+                                    <equals arg1="${test.web.profile}" arg2="true" />
                                     <then>
                                         <ant dir="." antfile="build.xml" target="all_wd">
                                             <property name="glassfish.home" value="${glassfish.home}"/>
@@ -66,23 +83,7 @@
                                     </then>
                                 </if>
                                 <if>
-                                    <equals arg1="${test.em}" arg2="true" />
-                                    <then>
-                                        <ant dir="." antfile="build.xml" target="all_embedded">
-                                            <property name="glassfish.home" value="${glassfish.home}"/>
-                                        </ant>
-                                    </then>
-                                </if>
-                                <if>
-                                    <equals arg1="${test.ri}" arg2="true" />
-                                    <then>
-                                        <ant dir="." antfile="build.xml" target="all_ri">
-                                            <property name="glassfish.home" value="${glassfish.home}"/>
-                                        </ant>
-                                    </then>
-                                </if>
-                                <if>
-                                    <equals arg1="${test.wd.security}" arg2="true" />
+                                    <equals arg1="${test.web.profile.security}" arg2="true" />
                                     <then>
                                         <ant dir="." antfile="build.xml" target="all_wd_security">
                                             <property name="glassfish.home" value="${glassfish.home}"/>
@@ -105,10 +106,21 @@
                                         </ant>
                                     </then>
                                 </if>
+                               
+                                <!-- Other -->
                                 <if>
-                                    <equals arg1="${test.gd.security}" arg2="true" />
+                                    <equals arg1="${test.em}" arg2="true" />
                                     <then>
-                                        <ant dir="." antfile="build.xml" target="all_gd_security">
+                                        <ant dir="." antfile="build.xml" target="all_embedded">
+                                            <property name="glassfish.home" value="${glassfish.home}"/>
+                                        </ant>
+                                    </then>
+                                </if>
+                                
+                                <if>
+                                    <equals arg1="${test.ri}" arg2="true" />
+                                    <then>
+                                        <ant dir="." antfile="build.xml" target="all_ri">
                                             <property name="glassfish.home" value="${glassfish.home}"/>
                                         </ant>
                                     </then>
@@ -197,44 +209,36 @@
             </plugin>
         </plugins>
     </build>
+
     <profiles>
-        <profile>
-            <id>report</id>
-            <properties>
-                <test.report>test-output</test.report>
-            </properties>
-        </profile>
+        <!-- Full profile -->
         <profile>
             <id>all</id>
             <activation>
                 <activeByDefault>true</activeByDefault>
             </activation>
-            <properties>
+            <properties> 
                 <test.gd>true</test.gd>
             </properties>
         </profile>
         <profile>
+            <id>test_gd_security</id>
+            <properties>
+                <test.gd.security>true</test.gd.security>
+            </properties>
+        </profile>
+        
+        <!-- Web Profile -->
+        <profile>
             <id>test_wd</id>
             <properties>
-                <test.wd>true</test.wd>
+                <test.web.profile>true</test.web.profile>
             </properties>
         </profile>
-        <profile>
-            <id>test_em</id>
-            <properties>
-                <test.em>true</test.em>
-            </properties>
-        </profile>
-        <profile>
-            <id>test_ri</id>
-            <properties>
-                <test.ri>true</test.ri>
-            </properties>
-        </profile>
-        <profile>
+         <profile>
             <id>test_wd_security</id>
             <properties>
-                <test.wd.security>true</test.wd.security>
+                <test.web.profile.security>true</test.web.profile.security>
             </properties>
         </profile>
         <profile>
@@ -249,18 +253,32 @@
                 <stop.wd.security>true</stop.wd.security>
             </properties>
         </profile>
+        
+        <!-- Other -->
         <profile>
-            <id>test_gd_security</id>
+            <id>test_em</id>
             <properties>
-                <test.gd.security>true</test.gd.security>
+                <test.em>true</test.em>
             </properties>
         </profile>
         <profile>
+            <id>test_ri</id>
+            <properties>
+                <test.ri>true</test.ri>
+            </properties>
+        </profile>
+        
+        <profile>
             <id>dev_debug</id>
             <properties>
                 <test.debug>true</test.debug>
             </properties>
         </profile>
+         <profile>
+            <id>report</id>
+            <properties>
+                <test.report>test-output</test.report>
+            </properties>
+        </profile>
     </profiles>
 </project>
-
diff --git a/appserver/tests/quicklook/rest/build.xml b/appserver/tests/quicklook/rest/build.xml
index 039cd1d..64ca1c8 100644
--- a/appserver/tests/quicklook/rest/build.xml
+++ b/appserver/tests/quicklook/rest/build.xml
@@ -18,22 +18,22 @@
 -->
 
 <project name="adminconsole" default="default" basedir=".">
-    <property file="build.properties"/>
-    <property file="${ws.root}/gfproject/${deploy.platform}-config.properties"/>
+    <property file="build.properties" />
+    <property file="${ws.root}/gfproject/${deploy.platform}-config.properties" />
 
     <description>Tests the Admin Console</description>
-    <import file="${ws.root}/gfproject/build-impl.xml"/>
-    <import file="${ws.root}/gfproject/${deploy.platform}-targets.xml"/>
+    <import file="${ws.root}/gfproject/build-impl.xml" />
+    <import file="${ws.root}/gfproject/${deploy.platform}-targets.xml" />
 
-    <target name="all" depends="build,runtest"/>
+    <target name="all" depends="build,runtest" />
+    
     <target name="build">
-      <antcall target="compile-tests">
-      </antcall>
+        <antcall target="compile-tests"/>
     </target>
 
-    <target  name="runtest">
+    <target name="runtest">
         <antcall target="runtest-impl">
-          <param name="testng.test.name" value="${testng.test.name}"/>
+            <param name="testng.test.name" value="${testng.test.name}" />
         </antcall>
     </target>
 </project>
diff --git a/appserver/tests/quicklook/rest/pom.xml b/appserver/tests/quicklook/rest/pom.xml
index 8c97641..d5b78bf 100644
--- a/appserver/tests/quicklook/rest/pom.xml
+++ b/appserver/tests/quicklook/rest/pom.xml
@@ -21,7 +21,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.quicklook</groupId>
     <artifactId>rest</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <name>REST API Quicklook Tests</name>
     <packaging>jar</packaging>
     <parent>
diff --git a/appserver/tests/quicklook/rest/src/test/admin/RestTests.java b/appserver/tests/quicklook/rest/src/test/admin/RestTests.java
index 59f96a6..2a367dc 100644
--- a/appserver/tests/quicklook/rest/src/test/admin/RestTests.java
+++ b/appserver/tests/quicklook/rest/src/test/admin/RestTests.java
@@ -22,18 +22,20 @@
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
-/** Supposed to have JDBC connection pool and resource tests.
+/**
+ * Supposed to have JDBC connection pool and resource tests.
  *
  * @author &#2325;&#2375;&#2342;&#2366;&#2352 (km@dev.java.net)
  * @since GlassFish v3 Prelude
  */
-@Test(groups = {"rest"}, description = "REST API Tests")
+@Test(groups = { "rest" }, description = "REST API Tests")
 public class RestTests {
 
     @Test
     public void testManagementEndpoint() {
         try {
-            HttpURLConnection connection = getConnection("http://localhost:4848/management/domain.xml");
+            HttpURLConnection connection = getConnection(
+                "http://localhost:4848/management/domain.xml");
             Assert.assertEquals(200, connection.getResponseCode());
         } catch (Exception e) {
             Assert.fail(e.getMessage());
@@ -43,7 +45,8 @@
     @Test
     public void testMonitoringEndpoint() {
         try {
-            HttpURLConnection connection = getConnection("http://localhost:4848/monitoring/domain.xml");
+            HttpURLConnection connection = getConnection(
+                "http://localhost:4848/monitoring/domain.xml");
             Assert.assertEquals(200, connection.getResponseCode());
         } catch (Exception e) {
             Assert.fail(e.getMessage());
@@ -53,7 +56,8 @@
     @Test
     public void testEndpointWithEncodedSlash() {
         try {
-            HttpURLConnection connection = getConnection("http://localhost:4848/management/domain/resources/jdbc-resource/jdbc%2F__TimerPool.xml");
+            HttpURLConnection connection = getConnection(
+                "http://localhost:4848/management/domain/resources/jdbc-resource/jdbc%2F__TimerPool.xml");
             Assert.assertEquals(200, connection.getResponseCode());
         } catch (Exception e) {
             Assert.fail(e.getMessage());
@@ -63,7 +67,8 @@
     @Test
     public void testAdminCommandEndpoint() {
         try {
-            HttpURLConnection connection = getConnection("http://localhost:4848/management/domain/version.xml");
+            HttpURLConnection connection = getConnection(
+                "http://localhost:4848/management/domain/version.xml");
             Assert.assertEquals(200, connection.getResponseCode());
         } catch (Exception e) {
             Assert.fail(e.getMessage());
@@ -73,7 +78,8 @@
     @Test
     public void testChildConfigBeanEndpoint() {
         try {
-            HttpURLConnection connection = getConnection("http://localhost:4848/management/domain/applications.xml");
+            HttpURLConnection connection = getConnection(
+                "http://localhost:4848/management/domain/applications.xml");
             Assert.assertEquals(200, connection.getResponseCode());
         } catch (Exception e) {
             Assert.fail(e.getMessage());
diff --git a/appserver/tests/quicklook/rest/testng.xml b/appserver/tests/quicklook/rest/testng.xml
index e83161f..1918b0e 100644
--- a/appserver/tests/quicklook/rest/testng.xml
+++ b/appserver/tests/quicklook/rest/testng.xml
@@ -18,19 +18,17 @@
 
 <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
 
-<suite name="QuickLookTests" verbose="2" >
-  <parameter name="admin.url" value="http://localhost:4848/__asadmin"/>
-  <parameter name="admin.user" value="admin"/>
-  <parameter name="admin.password" value=""/>
-  <parameter name="admin.console.url" value="http://localhost:4848/"/>
-  <parameter name="resources.xml.relative.path" value="admin/resources/resources.xml"/>
+<suite name="QuickLookTests" verbose="2">
+    <parameter name="admin.url" value="http://localhost:4848/__asadmin" />
+    <parameter name="admin.user" value="admin" />
+    <parameter name="admin.password" value="" />
+    <parameter name="admin.console.url" value="http://localhost:4848/" />
+    <parameter name="resources.xml.relative.path" value="admin/resources/resources.xml" />
 
-
-  <test name="rest_tests">
-    <classes>
-        <class name="test.admin.RestTests"/>
-    </classes>
-  </test>
-
+    <test name="rest_tests">
+        <classes>
+            <class name="test.admin.RestTests" />
+        </classes>
+    </test>
 </suite>
 
diff --git a/appserver/tests/quicklook/run_test.sh b/appserver/tests/quicklook/run_test.sh
index 1a0b1b2..782b8ad 100755
--- a/appserver/tests/quicklook/run_test.sh
+++ b/appserver/tests/quicklook/run_test.sh
@@ -17,8 +17,8 @@
 
 copy_ql_results(){
     if [[ ${1} = "ql_gf_web_profile_all" || ${1} = "ql_gf_full_profile_all" || "ql_gf_embedded_profile_all" = ${1} ]]; then
-        tar -cf ${WORKSPACE}/results/domainArchive.tar.gz ${WORKSPACE}/glassfish6/glassfish/domains
-        cp ${WORKSPACE}/glassfish6/glassfish/domains/domain1/logs/server.log* ${WORKSPACE}/results/ || true
+        tar -cf ${WORKSPACE}/results/domainArchive.tar.gz ${WORKSPACE}/glassfish7/glassfish/domains
+        cp ${WORKSPACE}/glassfish7/glassfish/domains/domain1/logs/server.log* ${WORKSPACE}/results/ || true
         cp -r ${WORKSPACE}/appserver/tests/quicklook/test-output/* ${WORKSPACE}/results/
         cp ${WORKSPACE}/appserver/tests/quicklook/test-output/TESTS-TestSuites.xml ${WORKSPACE}/results/junitreports/test_results_junit.xml
         cp ${WORKSPACE}/appserver/tests/quicklook/quicklook_summary.txt ${WORKSPACE}/results || true
diff --git a/appserver/tests/quicklook/testng/testng_full_profile.xml b/appserver/tests/quicklook/testng/testng_full_profile.xml
new file mode 100644
index 0000000..9f690d6
--- /dev/null
+++ b/appserver/tests/quicklook/testng/testng_full_profile.xml
@@ -0,0 +1,193 @@
+<!--
+
+    Copyright (c) 2021 Contributors to Eclipse Foundation.
+    Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    This Source Code may also be made available under the following Secondary
+    Licenses when the conditions for such availability set forth in the
+    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+
+<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
+
+<suite name="QuickLookTests" verbose="2">
+
+    <parameter name="admin.url" value="http://localhost:4848/__asadmin" />
+    <parameter name="admin.user" value="admin" />
+    <parameter name="admin.password" value="" />
+    <parameter name="admin.console.url" value="http://localhost:4848/" />
+    <parameter name="resources.xml.relative.path" value="admin/resources/resources.xml" />
+
+    <test name="admincli_tests">
+        <classes>
+            <class name="test.admincli.RestartDomainTests" />
+            <class name="test.admincli.ExistStatusTests" />
+        </classes>
+    </test>
+
+    <!-- AMX -->
+    <parameter name="amx.debug" value="true" />
+    <!-- AMX: port of the JMX RMI -->
+    <parameter name="amx.rmiport" value="8686" />
+
+    <!-- AMX -->
+    <test name="amx_tests">
+        <classes>
+            <class name="amxtest.AMXCoreTests" />
+            <class name="amxtest.AMXProxyTests" />
+            <class name="amxtest.AMXConfigProxyTests" />
+            <class name="amxtest.AMXOtherTests" />
+        </classes>
+    </test>
+
+    <!--  
+    <test name="adminconsole_tests">
+        <classes>
+            <class name="test.admin.AdminConsoleTests" />
+        </classes>
+    </test>
+    -->
+
+    <test name="rest_tests">
+        <classes>
+            <class name="test.admin.RestTests" />
+        </classes>
+    </test>
+
+    <test name="deploy_upload_test">
+        <classes>
+            <class name="test.web.jsp.hello.HelloJSPTestNG" />
+        </classes>
+    </test>
+
+    <test name="jsf_hello_world">
+        <classes>
+            <class name="test.jsf.astrologer.JSFWebTestNG" />
+        </classes>
+    </test>
+
+    <test name="jsf_injection">
+        <classes>
+            <class name="test.web.jsfinjection.JSFInjectionTestNG" />
+        </classes>
+    </test>
+
+    <test name="jdbc_user_tx">
+        <classes>
+            <class name="test.jdbc.jdbcusertx.JdbcUserTxTestNG" />
+        </classes>
+    </test>
+
+    <test name="jpa_inject_emf">
+        <classes>
+            <class name="test.jpa.jpainjectemf.JpaInjectEMFTestNG" />
+        </classes>
+    </test>
+
+    <test name="jpa_validation">
+        <classes>
+            <class
+                name="test.jpa.jpavalidation.JpaValidationTestNG" />
+        </classes>
+    </test>
+
+    <test name="security_hello_jsp">
+        <classes>
+            <class
+                name="test.security.hellojsp.HelloSecurityTestNG" />
+        </classes>
+    </test>
+
+    <test name="security_hello_basicauth">
+        <classes>
+            <class name="test.security.basicauth.BasicAuthTestNG" />
+        </classes>
+    </test>
+
+    <test name="security_app_permissions">
+        <classes>
+            <class name="test.security.appperms.ApppermsTestNG" />
+        </classes>
+    </test>
+    <test name="ejb_remoteview">
+        <classes>
+            <class name="test.ejb.remoteview.RemoteViewTestNG" />
+        </classes>
+    </test>
+
+    <test name="ejb_singleton_ear_redeploy">
+        <classes>
+            <class name="test.ejb.singleton.SingletonTestNG" />
+        </classes>
+    </test>
+
+    <test name="ejb_stateful_cmt_ni_war">
+        <classes>
+            <class name="test.ejb.slsbnicmt.SlsbnicmtTestNG" />
+            <class name="test.ejb.sfulnoi.SfulnoiTestNG" />
+        </classes>
+    </test>
+
+    <test name="ejb_cmp_ear">
+        <classes>
+            <class name="test.CmpRosterTestNG" />
+        </classes>
+    </test>
+
+    <!-- MDB tests parameters -->
+    <parameter name="MDB_APP_DIR" value="./dist/mdb/" />
+    <parameter name="BATCH_FILE1" value="ejb/mdb/create_resources.asadmin" />
+    <parameter name="BATCH_FILE2" value="ejb/mdb/delete_resources.asadmin" />
+    <test name="MDB_tests">
+        <classes>
+            <class name="test.mdb.MDBTests" />
+        </classes>
+    </test>
+
+    <test name="bv_servlet_simple">
+        <classes>
+            <class
+                name="test.bv.servlet.simple.SimpleBVServletTestNG" />
+        </classes>
+    </test>
+
+    <test name="weld_tests">
+        <classes>
+            <class name="test.web.numberguess.NumberGuessTestNG" />
+            <class name="test.weld.osgi.OsgiWeldTestNG" />
+            <class name="test.web.extensions.ExtensionsTestNG" />
+        </classes>
+    </test>
+
+    <test name="asadmin_tests">
+        <classes>
+            <class name="test.admin.JvmOptionTests" />
+            <class name="test.admin.JdbcConnectionPoolTests" />
+            <class name="test.admin.WebtierTests" />
+            <class name="test.admin.OsgiAsadminTest" />
+        </classes>
+    </test>
+<!-- Uncomment when/if fighterfish is reenabled
+    <test name="osgi_test">
+        <classes>
+            <class name="test.osgi.hello.HelloOSGITestNG" />
+        </classes>
+    </test>
+-->
+
+    <test name="jms_injection_jmsContext">
+        <classes>
+            <class name="test.jms.injection.ClientTestNG" />
+        </classes>
+    </test>
+</suite>
+
diff --git a/appserver/tests/quicklook/testng/testng_gd.xml b/appserver/tests/quicklook/testng/testng_gd.xml
deleted file mode 100644
index ca4089d..0000000
--- a/appserver/tests/quicklook/testng/testng_gd.xml
+++ /dev/null
@@ -1,190 +0,0 @@
-<!--
-
-    Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
-
-    This program and the accompanying materials are made available under the
-    terms of the Eclipse Public License v. 2.0, which is available at
-    http://www.eclipse.org/legal/epl-2.0.
-
-    This Source Code may also be made available under the following Secondary
-    Licenses when the conditions for such availability set forth in the
-    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
-    version 2 with the GNU Classpath Exception, which is available at
-    https://www.gnu.org/software/classpath/license.html.
-
-    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
-
--->
-
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
-
-<suite name="QuickLookTests" verbose="2">
-
-    <parameter name="admin.url" value="http://localhost:4848/__asadmin" />
-    <parameter name="admin.user" value="admin" />
-    <parameter name="admin.password" value="" />
-    <parameter name="admin.console.url" value="http://localhost:4848/" />
-    <parameter name="resources.xml.relative.path" value="admin/resources/resources.xml" />
-
-    <test name="admincli_tests">
-        <classes>
-            <class name="test.admincli.RestartDomainTests" />
-            <class name="test.admincli.ExistStatusTests" />
-        </classes>
-    </test>
-
-    <!-- AMX -->
-    <parameter name="amx.debug" value="true" />
-    <!-- AMX: port of the JMX RMI -->
-    <parameter name="amx.rmiport" value="8686" />
-
-    <!-- AMX -->
-    <test name="amx_tests">
-        <classes>
-            <class name="amxtest.AMXCoreTests" />
-            <class name="amxtest.AMXProxyTests" />
-            <class name="amxtest.AMXConfigProxyTests" />
-            <class name="amxtest.AMXOtherTests" />
-        </classes>
-    </test>
-
-    <test name="adminconsole_tests">
-        <classes>
-            <class name="test.admin.AdminConsoleTests" />
-        </classes>
-    </test>
-
-    <test name="rest_tests">
-        <classes>
-            <class name="test.admin.RestTests" />
-        </classes>
-    </test>
-
-    <test name="deploy_upload_test">
-        <classes>
-            <class name="test.web.jsp.hello.HelloJSPTestNG" />
-        </classes>
-    </test>
-
-    <test name="jsf_hello_world">
-        <classes>
-            <class name="test.jsf.astrologer.JSFWebTestNG" />
-        </classes>
-    </test>
-
-    <test name="jsf_injection">
-        <classes>
-            <class name="test.web.jsfinjection.JSFInjectionTestNG" />
-        </classes>
-    </test>
-
-    <test name="jdbc_user_tx">
-        <classes>
-            <class name="test.jdbc.jdbcusertx.JdbcUserTxTestNG" />
-        </classes>
-    </test>
-
-    <test name="jpa_inject_emf">
-        <classes>
-            <class name="test.jpa.jpainjectemf.JpaInjectEMFTestNG" />
-        </classes>
-    </test>
-
-    <test name="jpa_validation">
-        <classes>
-            <class
-                name="test.jpa.jpavalidation.JpaValidationTestNG" />
-        </classes>
-    </test>
-
-    <test name="security_hello_jsp">
-        <classes>
-            <class
-                name="test.security.hellojsp.HelloSecurityTestNG" />
-        </classes>
-    </test>
-
-    <test name="security_hello_basicauth">
-        <classes>
-            <class name="test.security.basicauth.BasicAuthTestNG" />
-        </classes>
-    </test>
-
-    <test name="security_app_permissions">
-        <classes>
-            <class name="test.security.appperms.ApppermsTestNG" />
-        </classes>
-    </test>
-    <test name="ejb_remoteview">
-        <classes>
-            <class name="test.ejb.remoteview.RemoteViewTestNG" />
-        </classes>
-    </test>
-
-    <test name="ejb_singleton_ear_redeploy">
-        <classes>
-            <class name="test.ejb.singleton.SingletonTestNG" />
-        </classes>
-    </test>
-
-    <test name="ejb_stateful_cmt_ni_war">
-        <classes>
-            <class name="test.ejb.slsbnicmt.SlsbnicmtTestNG" />
-            <class name="test.ejb.sfulnoi.SfulnoiTestNG" />
-        </classes>
-    </test>
-
-    <test name="ejb_cmp_ear">
-        <classes>
-            <class name="test.CmpRosterTestNG" />
-        </classes>
-    </test>
-
-    <!-- MDB tests parameters -->
-    <parameter name="MDB_APP_DIR" value="./dist/mdb/" />
-    <parameter name="BATCH_FILE1" value="ejb/mdb/create_resources.asadmin" />
-    <parameter name="BATCH_FILE2" value="ejb/mdb/delete_resources.asadmin" />
-    <test name="MDB_tests">
-        <classes>
-            <class name="test.mdb.MDBTests" />
-        </classes>
-    </test>
-
-    <test name="bv_servlet_simple">
-        <classes>
-            <class
-                name="test.bv.servlet.simple.SimpleBVServletTestNG" />
-        </classes>
-    </test>
-
-    <test name="weld_tests">
-        <classes>
-            <class name="test.web.numberguess.NumberGuessTestNG" />
-            <class name="test.weld.osgi.OsgiWeldTestNG" />
-            <class name="test.web.extensions.ExtensionsTestNG" />
-        </classes>
-    </test>
-
-    <test name="asadmin_tests">
-        <classes>
-            <class name="test.admin.JvmOptionTests" />
-            <class name="test.admin.JdbcConnectionPoolTests" />
-            <class name="test.admin.WebtierTests" />
-            <class name="test.admin.OsgiAsadminTest" />
-        </classes>
-    </test>
-<!-- Uncomment when/if fighterfish is reenabled
-    <test name="osgi_test">
-        <classes>
-            <class name="test.osgi.hello.HelloOSGITestNG" />
-        </classes>
-    </test>
--->
-
-    <test name="jms_injection_jmsContext">
-        <classes>
-            <class name="test.jms.injection.ClientTestNG" />
-        </classes>
-    </test>
-</suite>
-
diff --git a/appserver/tests/quicklook/testng/testng_wd.xml b/appserver/tests/quicklook/testng/testng_wd.xml
deleted file mode 100644
index 6e9c067..0000000
--- a/appserver/tests/quicklook/testng/testng_wd.xml
+++ /dev/null
@@ -1,156 +0,0 @@
-<!--
-
-    Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
-
-    This program and the accompanying materials are made available under the
-    terms of the Eclipse Public License v. 2.0, which is available at
-    http://www.eclipse.org/legal/epl-2.0.
-
-    This Source Code may also be made available under the following Secondary
-    Licenses when the conditions for such availability set forth in the
-    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
-    version 2 with the GNU Classpath Exception, which is available at
-    https://www.gnu.org/software/classpath/license.html.
-
-    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
-
--->
-
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
-
-<!--
-
-    Tests for "WD" (Web Distribution, aka Jakarta EE Web Profile)
-
- -->
-<suite name="QuickLookTests" verbose="2">
-
-    <parameter name="admin.url" value="http://localhost:4848/__asadmin" />
-    <parameter name="admin.user" value="admin" />
-    <parameter name="admin.password" value="" />
-    <parameter name="admin.console.url" value="http://localhost:4848/" />
-    <parameter name="resources.xml.relative.path" value="admin/resources/resources.xml" />
-
-    <test name="admincli_tests">
-        <classes>
-            <class name="test.admincli.RestartDomainTests" />
-            <class name="test.admincli.ExistStatusTests" />
-        </classes>
-    </test>
-
-    <!-- AMX -->
-    <parameter name="amx.debug" value="true" />
-    <!-- AMX: port of the JMX RMI -->
-    <parameter name="amx.rmiport" value="8686" />
-
-    <!-- AMX -->
-    <test name="amx_tests">
-        <classes>
-            <class name="amxtest.AMXCoreTests" />
-            <class name="amxtest.AMXProxyTests" />
-            <class name="amxtest.AMXConfigProxyTests" />
-            <class name="amxtest.AMXOtherTests" />
-        </classes>
-    </test>
-
-    <test name="adminconsole_tests">
-        <classes>
-            <class name="test.admin.AdminConsoleTests" />
-        </classes>
-    </test>
-
-    <test name="rest_tests">
-        <classes>
-            <class name="test.admin.RestTests" />
-        </classes>
-    </test>
-
-    <test name="deploy_upload_test">
-        <classes>
-            <class name="test.web.jsp.hello.HelloJSPTestNG" />
-        </classes>
-    </test>
-
-    <test name="jsf_hello_world">
-        <classes>
-            <class name="test.jsf.astrologer.JSFWebTestNG" />
-        </classes>
-    </test>
-
-    <test name="jsf_injection">
-        <classes>
-            <class name="test.web.jsfinjection.JSFInjectionTestNG" />
-        </classes>
-    </test>
-
-    <test name="jdbc_user_tx">
-        <classes>
-            <class name="test.jdbc.jdbcusertx.JdbcUserTxTestNG" />
-        </classes>
-    </test>
-
-    <test name="jpa_inject_emf">
-        <classes>
-            <class name="test.jpa.jpainjectemf.JpaInjectEMFTestNG" />
-        </classes>
-    </test>
-    <test name="jpa_validation">
-        <classes>
-            <class
-                name="test.jpa.jpavalidation.JpaValidationTestNG" />
-        </classes>
-    </test>
-
-    <test name="security_hello_jsp">
-        <classes>
-            <class
-                name="test.security.hellojsp.HelloSecurityTestNG" />
-        </classes>
-    </test>
-
-    <test name="security_hello_basicauth">
-        <classes>
-            <class name="test.security.basicauth.BasicAuthTestNG" />
-        </classes>
-    </test>
-
-    <test name="ejb_stateful_cmt_ni_war">
-        <classes>
-            <class name="test.ejb.slsbnicmt.SlsbnicmtTestNG" />
-            <class name="test.ejb.sfulnoi.SfulnoiTestNG" />
-        </classes>
-    </test>
-
-    <test name="bv_servlet_simple">
-        <classes>
-            <class
-                name="test.bv.servlet.simple.SimpleBVServletTestNG" />
-        </classes>
-    </test>
-
-    <test name="weld_tests">
-        <classes>
-            <class name="test.web.numberguess.NumberGuessTestNG" />
-            <class name="test.weld.osgi.OsgiWeldTestNG" />
-            <class name="test.web.extensions.ExtensionsTestNG" />
-        </classes>
-    </test>
-
-    <test name="asadmin_tests">
-        <classes>
-            <class name="test.admin.JvmOptionTests" />
-            <class name="test.admin.JdbcConnectionPoolTests" />
-            <class name="test.admin.WebtierTests" />
-            <class name="test.admin.OsgiAsadminTest" />
-        </classes>
-    </test>
-
-<!-- Uncomment when/if fighterfish is reenabled
-    <test name="osgi_test">
-        <classes>
-            <class name="test.osgi.hello.HelloOSGITestNG" />
-        </classes>
-    </test>
--->
-</suite>
-
diff --git a/appserver/tests/quicklook/testng/testng_web_profile.xml b/appserver/tests/quicklook/testng/testng_web_profile.xml
new file mode 100644
index 0000000..fba9d5b
--- /dev/null
+++ b/appserver/tests/quicklook/testng/testng_web_profile.xml
@@ -0,0 +1,158 @@
+<!--
+
+    Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    This Source Code may also be made available under the following Secondary
+    Licenses when the conditions for such availability set forth in the
+    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+
+<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
+
+<!--
+
+    Tests for "WD" (Web Distribution, aka Jakarta EE Web Profile)
+
+ -->
+<suite name="QuickLookTests" verbose="2">
+
+    <parameter name="admin.url" value="http://localhost:4848/__asadmin" />
+    <parameter name="admin.user" value="admin" />
+    <parameter name="admin.password" value="" />
+    <parameter name="admin.console.url" value="http://localhost:4848/" />
+    <parameter name="resources.xml.relative.path" value="admin/resources/resources.xml" />
+
+    <test name="admincli_tests">
+        <classes>
+            <class name="test.admincli.RestartDomainTests" />
+            <class name="test.admincli.ExistStatusTests" />
+        </classes>
+    </test>
+
+    <!-- AMX -->
+    <parameter name="amx.debug" value="true" />
+    <!-- AMX: port of the JMX RMI -->
+    <parameter name="amx.rmiport" value="8686" />
+
+    <!-- AMX -->
+    <test name="amx_tests">
+        <classes>
+            <class name="amxtest.AMXCoreTests" />
+            <class name="amxtest.AMXProxyTests" />
+            <class name="amxtest.AMXConfigProxyTests" />
+            <class name="amxtest.AMXOtherTests" />
+        </classes>
+    </test>
+
+    <!--  
+    <test name="adminconsole_tests">
+        <classes>
+            <class name="test.admin.AdminConsoleTests" />
+        </classes>
+    </test>
+    -->
+
+    <test name="rest_tests">
+        <classes>
+            <class name="test.admin.RestTests" />
+        </classes>
+    </test>
+
+    <test name="deploy_upload_test">
+        <classes>
+            <class name="test.web.jsp.hello.HelloJSPTestNG" />
+        </classes>
+    </test>
+
+    <test name="jsf_hello_world">
+        <classes>
+            <class name="test.jsf.astrologer.JSFWebTestNG" />
+        </classes>
+    </test>
+
+    <test name="jsf_injection">
+        <classes>
+            <class name="test.web.jsfinjection.JSFInjectionTestNG" />
+        </classes>
+    </test>
+
+    <test name="jdbc_user_tx">
+        <classes>
+            <class name="test.jdbc.jdbcusertx.JdbcUserTxTestNG" />
+        </classes>
+    </test>
+
+    <test name="jpa_inject_emf">
+        <classes>
+            <class name="test.jpa.jpainjectemf.JpaInjectEMFTestNG" />
+        </classes>
+    </test>
+    <test name="jpa_validation">
+        <classes>
+            <class
+                name="test.jpa.jpavalidation.JpaValidationTestNG" />
+        </classes>
+    </test>
+
+    <test name="security_hello_jsp">
+        <classes>
+            <class
+                name="test.security.hellojsp.HelloSecurityTestNG" />
+        </classes>
+    </test>
+
+    <test name="security_hello_basicauth">
+        <classes>
+            <class name="test.security.basicauth.BasicAuthTestNG" />
+        </classes>
+    </test>
+
+    <test name="ejb_stateful_cmt_ni_war">
+        <classes>
+            <class name="test.ejb.slsbnicmt.SlsbnicmtTestNG" />
+            <class name="test.ejb.sfulnoi.SfulnoiTestNG" />
+        </classes>
+    </test>
+
+    <test name="bv_servlet_simple">
+        <classes>
+            <class
+                name="test.bv.servlet.simple.SimpleBVServletTestNG" />
+        </classes>
+    </test>
+
+    <test name="weld_tests">
+        <classes>
+            <class name="test.web.numberguess.NumberGuessTestNG" />
+            <class name="test.weld.osgi.OsgiWeldTestNG" />
+            <class name="test.web.extensions.ExtensionsTestNG" />
+        </classes>
+    </test>
+
+    <test name="asadmin_tests">
+        <classes>
+            <class name="test.admin.JvmOptionTests" />
+            <class name="test.admin.JdbcConnectionPoolTests" />
+            <class name="test.admin.WebtierTests" />
+            <class name="test.admin.OsgiAsadminTest" />
+        </classes>
+    </test>
+
+<!-- Uncomment when/if fighterfish is reenabled
+    <test name="osgi_test">
+        <classes>
+            <class name="test.osgi.hello.HelloOSGITestNG" />
+        </classes>
+    </test>
+-->
+</suite>
+
diff --git a/appserver/tests/quicklook/web/jsfastrologer/metadata/faces-config.xml b/appserver/tests/quicklook/web/jsfastrologer/metadata/faces-config.xml
index cb9bb26..a82cc11 100644
--- a/appserver/tests/quicklook/web/jsfastrologer/metadata/faces-config.xml
+++ b/appserver/tests/quicklook/web/jsfastrologer/metadata/faces-config.xml
@@ -1,6 +1,7 @@
 <?xml version='1.0' encoding='UTF-8'?>
 <!--
 
+    Copyright (c) 2021 Contributors to Eclipse Foundation.
     Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
@@ -24,23 +25,14 @@
 <!-- =========== FULL CONFIGURATION FILE ================================== -->
 
 <faces-config>
- <navigation-rule>
+    <navigation-rule>
         <description>
             handle user input
         </description>
-        <from-view-id>/greetings.jsp</from-view-id>
+        <from-view-id>/greetings.xhtml</from-view-id>
         <navigation-case>
             <from-outcome>submit</from-outcome>
-            <to-view-id>/success.jsp</to-view-id>
+            <to-view-id>/success.xhtml</to-view-id>
         </navigation-case>
     </navigation-rule>
-    <managed-bean>
-        <description>
-            Managed User Bean
-        </description>
-        <managed-bean-name>UserBean</managed-bean-name>
-        <managed-bean-class>web.jsf.bean.UserBean</managed-bean-class>
-        <managed-bean-scope>request</managed-bean-scope>
-    </managed-bean>
-
 </faces-config>
diff --git a/appserver/tests/quicklook/web/jsfastrologer/metadata/web.xml b/appserver/tests/quicklook/web/jsfastrologer/metadata/web.xml
index e7a78ee..c5346e4 100644
--- a/appserver/tests/quicklook/web/jsfastrologer/metadata/web.xml
+++ b/appserver/tests/quicklook/web/jsfastrologer/metadata/web.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
+    Copyright (c) 2021 Contributors to Eclipse Foundation.
     Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
@@ -17,39 +18,29 @@
 
 -->
 
-<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
-    <context-param>
-        <param-name>com.sun.faces.verifyObjects</param-name>
-        <param-value>false</param-value>
-    </context-param>
-    <context-param>
-        <param-name>com.sun.faces.validateXml</param-name>
-        <param-value>false</param-value>
-    </context-param>
-    <context-param>
-        <param-name>jakarta.faces.STATE_SAVING_METHOD</param-name>
-        <param-value>client</param-value>
-    </context-param>
+<web-app
+    xmlns="https://jakarta.ee/xml/ns/jakartaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
+    version="5.0"
+>
+    
     <servlet>
         <servlet-name>Faces Servlet</servlet-name>
         <servlet-class>jakarta.faces.webapp.FacesServlet</servlet-class>
         <load-on-startup>1</load-on-startup>
-        </servlet>
+    </servlet>
     <servlet-mapping>
         <servlet-name>Faces Servlet</servlet-name>
-        <url-pattern>/faces/*</url-pattern>
+        <url-pattern>*.xhtml</url-pattern>
     </servlet-mapping>
+    
     <session-config>
-        <session-timeout>
-            30
-        </session-timeout>
+        <session-timeout>30</session-timeout>
     </session-config>
     <welcome-file-list>
-    <welcome-file>
-            index.jsp
-        </welcome-file>
         <welcome-file>
-            index.jsp
+            index.xhrml
         </welcome-file>
     </welcome-file-list>
 </web-app>
diff --git a/appserver/tests/quicklook/web/jsfastrologer/src/java/web/jsf/bean/UserBean.java b/appserver/tests/quicklook/web/jsfastrologer/src/java/web/jsf/bean/UserBean.java
index 9640558..549a5e4 100644
--- a/appserver/tests/quicklook/web/jsfastrologer/src/java/web/jsf/bean/UserBean.java
+++ b/appserver/tests/quicklook/web/jsfastrologer/src/java/web/jsf/bean/UserBean.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -19,21 +20,20 @@
  *
  * Created on December 4, 2007, 1:32 PM
  *
- * To change this template, choose Tools | Template Manager
- * and open the template in the editor.
  */
 
 package web.jsf.bean;
 
+import jakarta.enterprise.context.RequestScoped;
+import jakarta.inject.Named;
+
+@RequestScoped
+@Named
 public class UserBean {
 
     private String name;
     private String birthday;
 
-    /** Creates a new instance of UserBean */
-    public UserBean() {
-    }
-
     public String getName() {
         return name;
     }
diff --git a/appserver/tests/quicklook/web/jsfastrologer/src/test/JSFWebTestNG.java b/appserver/tests/quicklook/web/jsfastrologer/src/test/JSFWebTestNG.java
index e2778c3..a20a198 100644
--- a/appserver/tests/quicklook/web/jsfastrologer/src/test/JSFWebTestNG.java
+++ b/appserver/tests/quicklook/web/jsfastrologer/src/test/JSFWebTestNG.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -31,113 +32,83 @@
 import java.net.*;
 import java.util.*;
 
-
 public class JSFWebTestNG {
 
-    private static final String TEST_NAME =
-        "jsf-webapp";
+    private static final String TEST_NAME = "jsf-webapp";
+    private static final String EXPECTED_RESPONSE = "JSP Page Test";
 
-    private static final String EXPECTED_RESPONSE =
-        "JSP Page Test";
-
-    private String strContextRoot="jsfastrologer";
-
+    private String strContextRoot = "jsfastrologer";
     static String result = "";
-    String m_host="";
-    String m_port="";
-    //HttpClient httpclient = new HttpClient();
+    String m_host = "";
+    String m_port = "";
 
-    //@Parameters({"host","port"})
     @BeforeMethod
-    public void beforeTest(){
-        m_host=System.getProperty("http.host");
-        m_port=System.getProperty("http.port");
+    public void beforeTest() {
+        m_host = System.getProperty("http.host");
+        m_port = System.getProperty("http.port");
     }
 
     /*
-     *If tw
-     o asserts are mentioned in one method, then last assert is taken in
-     *to account.
-     *Each method can act as one test within one test suite
+     * If two asserts are mentioned in one method, then last assert is taken in to account. Each method can act as one test
+     * within one test suite
      */
 
+    @Test(groups = { "pulse" }) // test method
+    public void jsfAppDeployedFirstPagetest() throws Exception {
+        try {
 
-    @Test(groups ={ "pulse"} ) // test method
-    //public void webtest(String host, String port, String contextroot) throws Exception{
-    public void jsfAppDeployedFirstPagetest() throws Exception{
+            HttpURLConnection connection = (HttpURLConnection) 
+                new URL("http://" + m_host + ":" + m_port + "/" + strContextRoot + "/greetings.xhtml").openConnection();
+            connection.connect();
+            int responseCode = connection.getResponseCode();
 
-        try{
-        //System.out.println("Running TestMethod webtest");
+            BufferedReader input = new BufferedReader(new InputStreamReader(connection.getInputStream()));
 
-        String testurl = "http://" + m_host  + ":" + m_port + "/"+ strContextRoot + "/faces/greetings.jsp";
-        //System.out.println("URL is: "+testurl);
-        URL url = new URL(testurl);
-        //echo("Connecting to: " + url.toString());
-        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
-        conn.connect();
-        int responseCode = conn.getResponseCode();
+            String line = null;
+            boolean result = false;
+            String testLine = null;
+            while ((line = input.readLine()) != null) {
+                if (line.indexOf("Welcome to jAstrologer") != -1) {
+                    result = true;
+                    testLine = line;
 
-
-        InputStream is = conn.getInputStream();
-        BufferedReader input = new BufferedReader(new InputStreamReader(is));
-
-        String line = null;
-        boolean result=false;
-        String testLine = null;
-        while ((line = input.readLine()) != null) {
-            if(line.indexOf("Welcome to jAstrologer")!=-1){
-                result=true;
-                testLine = line;
+                }
 
             }
 
-        }
+            Assert.assertEquals(result, true, "Unexpected HTML");
 
-        Assert.assertEquals(result, true,"Unexpected HTML");
-
-
-        }catch(Exception e){
+        } catch (Exception e) {
             e.printStackTrace();
             throw new Exception(e);
         }
 
     }
 
+    @Test(groups = { "pulse" }) // test method
+    public void jsfIndexPageBasicTest() throws Exception {
+        try {
 
-    @Test(groups ={ "pulse"} ) // test method
-    public void jsfIndexPageBasicTest() throws Exception{
-         try{
+            HttpURLConnection conn = (HttpURLConnection) 
+                new URL("http://" + m_host + ":" + m_port + "/" + strContextRoot + "/index.xhtml").openConnection();
+            conn.connect();
+            int responseCode = conn.getResponseCode();
+            BufferedReader input = new BufferedReader(new InputStreamReader(conn.getInputStream()));
 
-             //System.out.println("Running TestMethod SimpleHTMLTest");
+            String line = null;
+            boolean result = false;
+            String testLine = null;
+            while ((line = input.readLine()) != null) {
+                if (line.indexOf("Jakarta Faces Greetings Page") != -1) {
+                    result = true;
+                    testLine = line;
+                }
 
-
-        String testurl = "http://" + m_host  + ":" + m_port + "/"+ strContextRoot + "/index.jsp";
-        //System.out.println("URL is: "+testurl);
-        URL url = new URL(testurl);
-        //echo("Connecting to: " + url.toString());
-        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
-        conn.connect();
-        int responseCode = conn.getResponseCode();
-
-
-        InputStream is = conn.getInputStream();
-        BufferedReader input = new BufferedReader(new InputStreamReader(is));
-
-        String line = null;
-        boolean result=false;
-        String testLine = null;
-        while ((line = input.readLine()) != null) {
-            if(line.indexOf("JavaServer Faces Greetings Page")!=-1){
-                result=true;
-             testLine = line;
-           //System.out.println(testLine);
             }
 
-        }
+            Assert.assertEquals(result, true);
 
-        Assert.assertEquals(result, true);
-
-        }catch(Exception e){
+        } catch (Exception e) {
             e.printStackTrace();
             throw new Exception(e);
         }
@@ -148,51 +119,4 @@
         System.out.println(msg);
     }
 
-
-/*
-    @Test(groups={"pulse"})
-    public void testRequestResponse() throws Exception{
-        try{
-            //System.out.println("Running method testRequestResponse");
-            String testurl = "http://" + m_host  + ":" + m_port +
-                    "/"+ strContextRoot + "/index.jsp";
-            String name="testuser";
-            String birthday="121212";
-            //System.out.println("URL is: "+testurl);
-            GetMethod httpget=null;
-            PostMethod post=null;
-            httpget = new GetMethod(testurl);
-            post=new PostMethod("http://localhost:8080/jsfastrologer/faces/greetings.jsp");
-
-
-            NameValuePair[] mydata = {
-                // new NameValuePair("loginID", itUser),
-                // new NameValuePair("password", itPwd), Not working for editing of bug
-
-                new NameValuePair("name",name),
-                new NameValuePair("birthday",birthday)
-            };
-
-            post.setRequestBody(mydata);
-            int statusCode = httpclient.executeMethod(post);
-            //System.out.println("print status ok "+statusCode);
-             Assert.assertEquals(statusCode, 200);
-
-            if (statusCode != HttpStatus.SC_OK) {
-                System.err.println("Method failed: " + post.getStatusLine());
-            }
-            post.getStatusLine();
-
-        String response=post.getResponseBodyAsString();
-        //System.out.println(response);
-
-
-        }catch(Exception e){
-            e.printStackTrace();
-            throw new Exception(e);
-        }
-
-    }
-*/
-
 }
diff --git a/appserver/tests/quicklook/web/jsfastrologer/web/html/first.html b/appserver/tests/quicklook/web/jsfastrologer/web/html/first.html
index b7a1f5b..ae99d57 100644
--- a/appserver/tests/quicklook/web/jsfastrologer/web/html/first.html
+++ b/appserver/tests/quicklook/web/jsfastrologer/web/html/first.html
@@ -1,8 +1,9 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
-  <head>
+<head>
 <!--
 
+    Copyright (c) 2021 Contributors to Eclipse Foundation.
     Copyright (c) 2010, 2018 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
@@ -19,16 +20,15 @@
 
 -->
 
-    <title></title>
-  </head>
-  <body>
-  Welcome to HTML Test Program. This tests following thing
-  <ol>
-      <li>TestNG</li>
-      <li>build.xml</li>
-      <li>V2 & V3</li>
-      <li>New Framework</li>
-  </ol>
-
-  </body>
+<title></title>
+</head>
+    <body>
+        Welcome to HTML Test Program. This tests following thing
+        <ol>
+            <li>TestNG</li>
+            <li>build.xml</li>
+            <li>V2 & V3 & V4 & V5 & V6 & V7</li>
+            <li>New Framework</li>
+        </ol>
+    </body>
 </html>
diff --git a/appserver/tests/quicklook/web/jsfastrologer/web/jsp/greetings.jsp b/appserver/tests/quicklook/web/jsfastrologer/web/jsp/greetings.jsp
deleted file mode 100644
index 9c9a29c..0000000
--- a/appserver/tests/quicklook/web/jsfastrologer/web/jsp/greetings.jsp
+++ /dev/null
@@ -1,55 +0,0 @@
-<%--
-
-    Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
-
-    This program and the accompanying materials are made available under the
-    terms of the Eclipse Public License v. 2.0, which is available at
-    http://www.eclipse.org/legal/epl-2.0.
-
-    This Source Code may also be made available under the following Secondary
-    Licenses when the conditions for such availability set forth in the
-    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
-    version 2 with the GNU Classpath Exception, which is available at
-    https://www.gnu.org/software/classpath/license.html.
-
-    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
-
---%>
-
-<%@page contentType="text/html"%>
-<%@page pageEncoding="UTF-8"%>
-<%--
-The taglib directive below imports the JSTL library. If you uncomment it,
-you must also add the JSTL library to the project. The Add Library... action
-on Libraries node in Projects view can be used to add the JSTL 1.1 library.
---%>
-
-<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
-<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
-<%--
-<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
-
---%>
-<html>
-    <head>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-        <title>Greetings-JSF Test</title>
-    </head>
-    <body>
-        
-        <h1>Welcome to jAstrologer</h1>
-        
-        
-        <f:view>
-            <h:form>
-                <p>Enter your name: <h:inputText value="#{UserBean.name}"/></p>
-                <p>Enter your birthday: <h:inputText value="#{UserBean.birthday}"/></p>
-                <h:commandButton value="Submit" action="submit" />
-            </h:form>
-        </f:view>
-        
-    </body>
-</html>
-    
-    
-    
diff --git a/appserver/tests/quicklook/web/jsfastrologer/web/jsp/greetings.xhtml b/appserver/tests/quicklook/web/jsfastrologer/web/jsp/greetings.xhtml
new file mode 100644
index 0000000..70ecea5
--- /dev/null
+++ b/appserver/tests/quicklook/web/jsfastrologer/web/jsp/greetings.xhtml
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!--
+
+    Copyright (c) 2021 Contributors to Eclipse Foundation.
+    Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    This Source Code may also be made available under the following Secondary
+    Licenses when the conditions for such availability set forth in the
+    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+<html xmlns:h="jakarta.faces.html">
+    <h:head>
+        <title>Greetings-JSF Test</title>
+    </h:head>
+    <h:body>
+        <h1>Welcome to jAstrologer</h1>
+        
+        <h:form>
+                <p>Enter your name: <h:inputText value="#{userBean.name}"/></p>
+                <p>Enter your birthday: <h:inputText value="#{userBean.birthday}"/></p>
+                <h:commandButton value="Submit" action="submit" />
+            </h:form>
+    </h:body>
+</html>
+    
+    
diff --git a/appserver/tests/quicklook/web/jsfastrologer/web/jsp/index.jsp b/appserver/tests/quicklook/web/jsfastrologer/web/jsp/index.jsp
deleted file mode 100644
index ce6c419..0000000
--- a/appserver/tests/quicklook/web/jsfastrologer/web/jsp/index.jsp
+++ /dev/null
@@ -1,59 +0,0 @@
-<%--
-
-    Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
-
-    This program and the accompanying materials are made available under the
-    terms of the Eclipse Public License v. 2.0, which is available at
-    http://www.eclipse.org/legal/epl-2.0.
-
-    This Source Code may also be made available under the following Secondary
-    Licenses when the conditions for such availability set forth in the
-    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
-    version 2 with the GNU Classpath Exception, which is available at
-    https://www.gnu.org/software/classpath/license.html.
-
-    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
-
---%>
-
-<%@page contentType="text/html"%>
-<%@page pageEncoding="UTF-8"%>
-<%--
-The taglib directive below imports the JSTL library. If you uncomment it,
-you must also add the JSTL library to the project. The Add Library... action
-on Libraries node in Projects view can be used to add the JSTL 1.1 library.
---%>
-<%--
-<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
---%>
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-   "http://www.w3.org/TR/html4/loose.dtd">
-
-<html>
-    <head>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-        <title>JSP Page</title>
-    </head>
-    <body>
-
-    <h1>JSP Page</h1>
-    <br/>    
-    <a href="./faces/greetings.jsp">JavaServer Faces Greetings Page</a>
-    <br/>
-    <p>There should be a form after clicking on above link</p>
-    
-    
-    <%--
-    This example uses JSTL, uncomment the taglib directive above.
-    To test, display the page like this: index.jsp?sayHello=true&name=Murphy
-    --%>
-    <%--
-    <c:if test="${param.sayHello}">
-        <!-- Let's welcome the user ${param.name} -->
-        Hello ${param.name}!
-    </c:if>
-    --%>
-    
-    </body>
-</html>
diff --git a/appserver/tests/quicklook/web/jsfastrologer/web/jsp/index.xhtml b/appserver/tests/quicklook/web/jsfastrologer/web/jsp/index.xhtml
new file mode 100644
index 0000000..5074bc9
--- /dev/null
+++ b/appserver/tests/quicklook/web/jsfastrologer/web/jsp/index.xhtml
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!--
+
+    Copyright (c) 2021 Contributors to Eclipse Foundation.
+    Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    This Source Code may also be made available under the following Secondary
+    Licenses when the conditions for such availability set forth in the
+    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+<html xmlns:h="jakarta.faces.html">
+	<h:head>
+		<title>Faces Page</title>
+	</h:head>
+	<h:body>
+		<h1>JSP Page</h1>
+		
+		<br />
+		<a href="./greetings.xhtml">Jakarta Faces Greetings Page</a>
+		<br />
+		
+		<p>There should be a form after clicking on above link</p>
+	</h:body>
+</html>
+
+
diff --git a/appserver/tests/quicklook/web/jsfastrologer/web/jsp/success.jsp b/appserver/tests/quicklook/web/jsfastrologer/web/jsp/success.jsp
deleted file mode 100644
index 88a06d9..0000000
--- a/appserver/tests/quicklook/web/jsfastrologer/web/jsp/success.jsp
+++ /dev/null
@@ -1,56 +0,0 @@
-<%--
-
-    Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
-
-    This program and the accompanying materials are made available under the
-    terms of the Eclipse Public License v. 2.0, which is available at
-    http://www.eclipse.org/legal/epl-2.0.
-
-    This Source Code may also be made available under the following Secondary
-    Licenses when the conditions for such availability set forth in the
-    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
-    version 2 with the GNU Classpath Exception, which is available at
-    https://www.gnu.org/software/classpath/license.html.
-
-    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
-
---%>
-
-<%@page contentType="text/html"%>
-<%@page pageEncoding="UTF-8"%>
-<%--
-The taglib directive below imports the JSTL library. If you uncomment it,
-you must also add the JSTL library to the project. The Add Library... action
-on Libraries node in Projects view can be used to add the JSTL 1.1 library.
---%>
-<%--
-<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
---%>
-
-<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
-<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-   "http://www.w3.org/TR/html4/loose.dtd">
-
-<html>
-    <head>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-        <title>Congratulations-JSF Test</title>
-    </head>
-    <body>
-
-    <h1>Congratulations-Success</h1>
-    <f:view>
-        <h:form>
-            <p>You've successfully registered with jAstrologer</p>
-            <p>Your name is ;should display here through JSF Tag--<h:outputText value="#{UserBean.name}"/></p>
-            <p>Your birthday is;should display here through JSF Tag--<h:outputText value="#{UserBean.birthday}"/></p>
-        </h:form>
-    </f:view>
-    
-    <p>You've successfully registered with jAstrologer.</p>
-    
-        
-    </body>
-</html>
diff --git a/appserver/tests/quicklook/web/jsfastrologer/web/jsp/success.xhtml b/appserver/tests/quicklook/web/jsfastrologer/web/jsp/success.xhtml
new file mode 100644
index 0000000..7e1a4d8
--- /dev/null
+++ b/appserver/tests/quicklook/web/jsfastrologer/web/jsp/success.xhtml
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<!--
+
+    Copyright (c) 2021 Contributors to Eclipse Foundation.
+    Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    This Source Code may also be made available under the following Secondary
+    Licenses when the conditions for such availability set forth in the
+    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+<html xmlns:h="jakarta.faces.html">
+    <h:head>
+        <title>Congratulations-JSF Test</title>
+    </h:head>
+    
+    <h:body>
+        <h1>Congratulations-Success</h1>
+        
+        <h:form>
+            <p>You've successfully registered with jAstrologer</p>
+            <p>Your name is ;should display here through Faces Tag--<h:outputText value="#{userBean.name}"/></p>
+            <p>Your birthday is;should display here through Faces Tag--<h:outputText value="#{userBean.birthday}"/></p>
+        </h:form>
+    
+        <p>You've successfully registered with jAstrologer.</p>
+    
+    </h:body>
+</html>
diff --git a/appserver/tests/quicklook/web/jsfastrologer/web/jsp/welcomeJSF.jsp b/appserver/tests/quicklook/web/jsfastrologer/web/jsp/welcomeJSF.jsp
deleted file mode 100644
index d649a2c..0000000
--- a/appserver/tests/quicklook/web/jsfastrologer/web/jsp/welcomeJSF.jsp
+++ /dev/null
@@ -1,38 +0,0 @@
-<%--
-
-    Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
-
-    This program and the accompanying materials are made available under the
-    terms of the Eclipse Public License v. 2.0, which is available at
-    http://www.eclipse.org/legal/epl-2.0.
-
-    This Source Code may also be made available under the following Secondary
-    Licenses when the conditions for such availability set forth in the
-    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
-    version 2 with the GNU Classpath Exception, which is available at
-    https://www.gnu.org/software/classpath/license.html.
-
-    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
-
---%>
-
-<%@page contentType="text/html"%>
-<%@page pageEncoding="UTF-8"%>
-
-<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
-<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-   "http://www.w3.org/TR/html4/loose.dtd">
-
-<html>
-    <head>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-        <title>JSP Page</title>
-    </head>
-    <body>
-        <f:view>
-            <h1><h:outputText value="JavaServer Faces"/></h1>
-        </f:view>
-    </body>
-</html>
diff --git a/appserver/tests/quicklook/web/jsfastrologer/web/jsp/welcomeJSF.xhtml b/appserver/tests/quicklook/web/jsfastrologer/web/jsp/welcomeJSF.xhtml
new file mode 100644
index 0000000..e8fa45f
--- /dev/null
+++ b/appserver/tests/quicklook/web/jsfastrologer/web/jsp/welcomeJSF.xhtml
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<!--
+
+    Copyright (c) 2021 Contributors to Eclipse Foundation.
+    Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    This Source Code may also be made available under the following Secondary
+    Licenses when the conditions for such availability set forth in the
+    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+<html xmlns:h="jakarta.faces.html">
+    <h:head>
+        <title>Faces Page</title>
+    </h:head>
+    
+    <h:body>
+        <h1>Congratulations-Success</h1>
+        
+        <h1><h:outputText value="JavaServer Faces"/></h1>
+    
+    </h:body>
+</html>
diff --git a/appserver/tests/quicklook/web/jsfastrologer/web/jsp/welcomeStruts.jsp b/appserver/tests/quicklook/web/jsfastrologer/web/jsp/welcomeStruts.jsp
deleted file mode 100644
index 31fd022..0000000
--- a/appserver/tests/quicklook/web/jsfastrologer/web/jsp/welcomeStruts.jsp
+++ /dev/null
@@ -1,41 +0,0 @@
-<%--
-
-    Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
-
-    This program and the accompanying materials are made available under the
-    terms of the Eclipse Public License v. 2.0, which is available at
-    http://www.eclipse.org/legal/epl-2.0.
-
-    This Source Code may also be made available under the following Secondary
-    Licenses when the conditions for such availability set forth in the
-    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
-    version 2 with the GNU Classpath Exception, which is available at
-    https://www.gnu.org/software/classpath/license.html.
-
-    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
-
---%>
-
-<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
-<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
-<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>
-
-<html:html locale="true">
-<head>
-<title><bean:message key="welcome.title"/></title>
-<html:base/>
-</head>
-<body bgcolor="white">
-
-<logic:notPresent name="org.apache.struts.action.MESSAGE" scope="application">
-  <font color="red">
-    ERROR:  Application resources not loaded -- check servlet container
-    logs for error messages.
-  </font>
-</logic:notPresent>
-
-<h3><bean:message key="welcome.heading"/></h3>
-<p><bean:message key="welcome.message"/></p>
-
-</body>
-</html:html>
diff --git a/appserver/tests/quicklook/web/jsfinjection/metadata/faces-config.xml b/appserver/tests/quicklook/web/jsfinjection/metadata/faces-config.xml
deleted file mode 100644
index d70ecd8..0000000
--- a/appserver/tests/quicklook/web/jsfinjection/metadata/faces-config.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!--
-
-    Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
-
-    This program and the accompanying materials are made available under the
-    terms of the Eclipse Public License v. 2.0, which is available at
-    http://www.eclipse.org/legal/epl-2.0.
-
-    This Source Code may also be made available under the following Secondary
-    Licenses when the conditions for such availability set forth in the
-    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
-    version 2 with the GNU Classpath Exception, which is available at
-    https://www.gnu.org/software/classpath/license.html.
-
-    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
-
--->
-
-<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
-    version="1.2">
-
-  <managed-bean>
-    <managed-bean-name>bean</managed-bean-name>
-    <managed-bean-class>jsfinjection.TestBean</managed-bean-class>
-    <managed-bean-scope>request</managed-bean-scope>
-  </managed-bean>
-
-</faces-config>
diff --git a/appserver/tests/quicklook/web/jsfinjection/metadata/web.xml b/appserver/tests/quicklook/web/jsfinjection/metadata/web.xml
index 0275b4c..b2de571 100644
--- a/appserver/tests/quicklook/web/jsfinjection/metadata/web.xml
+++ b/appserver/tests/quicklook/web/jsfinjection/metadata/web.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
 <!--
 
+    Copyright (c) 2021 Contributors to Eclipse Foundation.
     Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
@@ -17,15 +18,15 @@
 
 -->
 
-<web-app xmlns="http://java.sun.com/xml/ns/javaee"
+<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
-    version="2.5">
+    xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
+    version="5.0">
+    
     <filter>
         <filter-name>FilterTest</filter-name>
         <filter-class>jsfinjection.FilterTest</filter-class>
     </filter>
-
     <filter-mapping>
         <filter-name>FilterTest</filter-name>
         <url-pattern>/jsfHello.jsf</url-pattern>
@@ -42,22 +43,13 @@
     </servlet>
     <servlet-mapping>
         <servlet-name>Faces Servlet</servlet-name>
-        <url-pattern>*.jsf</url-pattern>
+        <url-pattern>*.xhtml</url-pattern>
     </servlet-mapping>
 
-  <env-entry>
-    <env-entry-name>entry</env-entry-name>
-    <env-entry-type>java.lang.String</env-entry-type>
-    <env-entry-value>Injected entry</env-entry-value>
-  </env-entry>
-
-  <jsp-config>
-    <jsp-property-group>
-      <url-pattern>/jetty.jsp</url-pattern>
-      <page-encoding>UTF-8</page-encoding>
-      <include-prelude>/jinclude.jsp</include-prelude>
-    </jsp-property-group>
-  </jsp-config>
-
+    <env-entry>
+        <env-entry-name>entry</env-entry-name>
+        <env-entry-type>java.lang.String</env-entry-type>
+        <env-entry-value>Injected entry</env-entry-value>
+    </env-entry>
 
 </web-app>
diff --git a/appserver/tests/quicklook/web/jsfinjection/src/java/FilterTest.java b/appserver/tests/quicklook/web/jsfinjection/src/java/FilterTest.java
index 0e80129..f2d4f08 100644
--- a/appserver/tests/quicklook/web/jsfinjection/src/java/FilterTest.java
+++ b/appserver/tests/quicklook/web/jsfinjection/src/java/FilterTest.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -22,10 +23,10 @@
 import javax.sql.DataSource;
 import javax.naming.*;
 
-public class FilterTest implements Filter{
+public class FilterTest implements Filter {
 
     private ServletContext context;
-    private @Resource(name="jdbc/__default") DataSource ds;
+    private @Resource(name = "jdbc/__default") DataSource ds;
 //    private DataSource ds;
 
     public void destroy() {
@@ -36,19 +37,11 @@
         System.out.println("[Filter.doFilter]");
 
         String msg = "PASS";
-/*
-        try {
-            InitialContext ic = new InitialContext();
-            ic.lookup("jdbc/__default");
-            msg += "=:iclookup";
-            System.out.println("XXX ic lookup DONE");
-        } catch(Exception ex) {
-        }
-*/
+        
         if (ds != null) {
             try {
                 msg = "PASS-:" + ds.getLoginTimeout();
-            } catch(Throwable ex) {
+            } catch (Throwable ex) {
                 msg = "FAIL-:" + ex.toString();
             }
         } else {
@@ -56,12 +49,11 @@
         }
         System.out.println("[Filter.doFilter.msg = " + msg + "]");
 
-        ((HttpServletRequest)request).getSession().setAttribute("FILTER", msg);
+        ((HttpServletRequest) request).getSession().setAttribute("FILTER", msg);
         filterChain.doFilter(request, response);
 
     }
 
-
     public void init(jakarta.servlet.FilterConfig filterConfig) throws jakarta.servlet.ServletException {
         System.out.println("[Filter.init]");
         context = filterConfig.getServletContext();
diff --git a/appserver/tests/quicklook/web/jsfinjection/src/java/TestBean.java b/appserver/tests/quicklook/web/jsfinjection/src/java/TestBean.java
index 76fd970..2893259 100644
--- a/appserver/tests/quicklook/web/jsfinjection/src/java/TestBean.java
+++ b/appserver/tests/quicklook/web/jsfinjection/src/java/TestBean.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -15,38 +16,45 @@
  */
 
 package jsfinjection;
+
+import jakarta.enterprise.context.RequestScoped;
 import jakarta.annotation.*;
 import javax.sql.DataSource;
+import jakarta.inject.Named;
 
+@RequestScoped
+@Named
 public class TestBean {
 
-    @Resource(name="entry")
+    @Resource(name = "entry")
     private String entry;
 
-    @Resource(name="jdbc/__default")
+    @Resource(name = "jdbc/__default")
     private DataSource ds;
+    
+    private boolean initCalled;
+    
+    @PostConstruct
+    void init() {
+        initCalled = true;
+    }
 
     public String getEntry() {
         return entry;
     }
 
     public int getNumber() {
-        int tout = -3000;
+        int number = -3000;
         if (ds != null) {
             try {
-                tout = ds.getLoginTimeout();
-            } catch(Exception ex) {
+                number = ds.getLoginTimeout();
+            } catch (Exception ex) {
                 ex.printStackTrace();
-                tout = -1000;
+                number = -1000;
             }
         }
-        return tout;
-    }
-
-    private boolean initCalled;
-
-    @PostConstruct void init() {
-        initCalled = true;
+        
+        return number;
     }
 
     public boolean getInit() {
diff --git a/appserver/tests/quicklook/web/jsfinjection/src/test/JSFInjectionTestNG.java b/appserver/tests/quicklook/web/jsfinjection/src/test/JSFInjectionTestNG.java
index 287074e..0b2d3ae 100644
--- a/appserver/tests/quicklook/web/jsfinjection/src/test/JSFInjectionTestNG.java
+++ b/appserver/tests/quicklook/web/jsfinjection/src/test/JSFInjectionTestNG.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -15,6 +16,7 @@
  */
 
 package test.web.jsfinjection;
+
 import org.testng.annotations.Configuration;
 import org.testng.annotations.ExpectedExceptions;
 import org.testng.annotations.Test;
@@ -26,125 +28,113 @@
 import java.util.*;
 
 /**
- * Simple TestNG client for basic WAR containing JSF page with injectited values.
- * Client checks for two values: injected string and injected number.
- * If both values are as expected test passes.
+ * Simple TestNG client for basic WAR containing JSF page with injectited values. Client checks for two values: injected
+ * string and injected number. If both values are as expected test passes.
  */
 public class JSFInjectionTestNG {
 
-    private static final String TEST_NAME =
-        "simple-webapp-jsf-injection";
+    private static final String TEST_NAME = "simple-webapp-jsf-injection";
 
-    private String strContextRoot="jsfinjection";
+    private String strContextRoot = "jsfinjection";
 
     static String result = "";
-    String host=System.getProperty("http.host");
-    String port=System.getProperty("http.port");
+    String host = System.getProperty("http.host");
+    String port = System.getProperty("http.port");
 
     /*
-     *If two asserts are mentioned in one method, then last assert is taken in
-     *to account.
-     *Each method can act as one test within one test suite
+     * If two asserts are mentioned in one method, then last assert is taken in to account. Each method can act as one test
+     * within one test suite
      */
-
-
-    //@Parameters({ "host", "port", "contextroot" })
-    @Test(groups ={ "pulse"} ) // test method
+    @Test(groups = { "pulse" }) // test method
     public void injectedValuesTestPage() throws Exception {
+        try {
 
-      try {
+            String errorText = "";
+            boolean testPass = false;
 
-        String errorText = "";
-        boolean testPass = false;
+            String testUrl = "http://" + host + ":" + port + "/" + strContextRoot + "/jsfHello.xhtml";
+            URL url = new URL(testUrl);
+            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+            conn.connect();
+            int responseCode = conn.getResponseCode();
+            if (responseCode != 200) {
+                errorText = errorText + "ERROR: http response code is " + responseCode + ".\n";
+            }
 
-        String testUrl = "http://" + host  + ":" + port + "/"+ strContextRoot + "/jsfHello.jsf";
-        //echo("URL is: " + testUrl);
-        URL url = new URL(testUrl);
-        //echo("Connecting to: " + url.toString());
-        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
-        conn.connect();
-        int responseCode = conn.getResponseCode();
-        if ( responseCode != 200 ) {
-          //echo("ERROR: http response code is " + responseCode);
-          errorText = errorText + "ERROR: http response code is " + responseCode + ".\n";
-        } else {
-          //echo("Connected: " + responseCode);
-        }
+            InputStream is = conn.getInputStream();
+            BufferedReader input = new BufferedReader(new InputStreamReader(is));
 
-        InputStream is = conn.getInputStream();
-        BufferedReader input = new BufferedReader(new InputStreamReader(is));
+            String line = null;
+            String line2 = null;
+            String line3 = null;
+            boolean result = false;
+            String EXPECTED_RESPONSE = "Injected entry";
+            String DIVIDER = "===";
+            String PC = "Postconstruct";
+            
+            while ((line = input.readLine()) != null) {
+                echo(line);
+                if (line.indexOf(EXPECTED_RESPONSE) != -1) {
+                    testPass = true;
+                }
+                if (line.indexOf(DIVIDER) != -1) {
+                    line2 = line;
+                }
+                if (line.indexOf(PC) != -1) {
+                    line3 = line;
+                }
+            }
 
-        String line = null;
-        String line2 = null;
-        String line3 = null;
-        boolean result=false;
-    String EXPECTED_RESPONSE = "Injected entry";
-    String DIVIDER = "===";
-        String PC = "Postconstruct";
-        while ((line = input.readLine()) != null) {
-          //echo ("LINE:"+line);
-          if (line.indexOf(EXPECTED_RESPONSE)!= -1) {
-            testPass = true;
-            //echo("Received line: " + line);
-          }
-          if (line.indexOf(DIVIDER)!= -1) {
-            line2 = line;
-            //echo("Received line2: " + line2);
-          }
-          if (line.indexOf(PC)!= -1) {
-            line3 = line;
-            //echo("Received line3: " + line3);
-          }
-        }
+            if (!testPass) {
+                echo("ERROR: injection 1 not found");
+                errorText = errorText + "ERROR: injection 1 not found\n";
+            }
 
-        if (! testPass) {
-          echo("ERROR: injection 1 not found");
-          errorText = errorText + "ERROR: injection 1 not found\n";
-        }
+            if (line2 != null) {
+                
+                echo(line2);
+                
+                String[] injection2Array = line2.split(DIVIDER);
+                String injectedNumber = injection2Array[1].trim();
+                int num = Integer.parseInt(injectedNumber);
 
-        if (line2 != null) {
-          String [] injection2Array = line2.split(DIVIDER);
-          String injectedNumber = injection2Array[1].trim();
-          //echo("injectedNumber = " + injectedNumber);
-          int num = Integer.parseInt(injectedNumber);
-
-          if ( num < 0 ) {
-            echo("ERROR: injection 2 is less than zero.");
-            errorText = errorText + "ERROR: injection 2 is less than zero";
-            testPass = false;
-          } else {
-            echo("Injection2 matched.");
-          }
-        } else {
-          echo("ERROR: line with " + DIVIDER + " not found.");
-          errorText = errorText + "ERROR: line with " + DIVIDER + " not found";
-          testPass = false;
-        }
-
-        if (line3 != null) {
-            if (line3.contains("true")) {
-                echo("@PostConstruct worked");
+                if (num < 0) {
+                    echo("ERROR: injection 2 is less than zero.");
+                    errorText = errorText + "ERROR: injection 2 is less than zero";
+                    testPass = false;
+                } else {
+                    echo("Injection2 matched.");
+                }
             } else {
-                echo("ERROR:@PostConstruct failed");
-                errorText = errorText + "ERROR: @PostConstruct failed";
+                echo("ERROR: line with " + DIVIDER + " not found.");
+                errorText = errorText + "ERROR: line with " + DIVIDER + " not found";
                 testPass = false;
             }
-        } else {
-          echo("ERROR: line with " + PC + " not found.");
-          errorText = errorText + "ERROR: line with " + PC + " not found";
-          testPass = false;
+
+            if (line3 != null) {
+                if (line3.contains("true")) {
+                    echo("@PostConstruct worked");
+                } else {
+                    echo("ERROR:@PostConstruct failed");
+                    errorText = errorText + "ERROR: @PostConstruct failed";
+                    testPass = false;
+                }
+            } else {
+                echo("ERROR: line with " + PC + " not found.");
+                errorText = errorText + "ERROR: line with " + PC + " not found";
+                testPass = false;
+            }
+
+            Assert.assertEquals(testPass, true, errorText);
+
+        } catch (Exception e) {
+            echo("ERROR: caught exception!");
+            e.printStackTrace();
+            throw new Exception(e);
         }
-
-        Assert.assertEquals(testPass, true, errorText);
-
-      }catch(Exception e){
-        echo("ERROR: caught exception!");
-        e.printStackTrace();
-        throw new Exception(e);
-      }
     }
 
     public static void echo(String msg) {
-      System.out.println(msg);
+        System.out.println(msg);
     }
 }
diff --git a/appserver/tests/quicklook/web/jsfinjection/web/jsp/jsfHello.jsp b/appserver/tests/quicklook/web/jsfinjection/web/jsp/jsfHello.jsp
deleted file mode 100644
index 3accc76..0000000
--- a/appserver/tests/quicklook/web/jsfinjection/web/jsp/jsfHello.jsp
+++ /dev/null
@@ -1,39 +0,0 @@
-<%--
-
-    Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
-
-    This program and the accompanying materials are made available under the
-    terms of the Eclipse Public License v. 2.0, which is available at
-    http://www.eclipse.org/legal/epl-2.0.
-
-    This Source Code may also be made available under the following Secondary
-    Licenses when the conditions for such availability set forth in the
-    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
-    version 2 with the GNU Classpath Exception, which is available at
-    https://www.gnu.org/software/classpath/license.html.
-
-    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
-
---%>
-
-<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
-<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
-
-<f:view>
- <html>
-  <head>
-    <title>JSF Hello</title>
-  </head>
-  <body>
-    <h:form id="form">
-      <h3>
-        Hello, and welcome<br>
-        <h:outputText value="If injection worked, this sentence should be followed by the injected words -> #{bean.entry} "/><br>
-        <h:outputText value="If second injection worked, this sentence should be followed by 'a non-negative number' === #{bean.number} ==="/><br>
-        <h:outputText value="If @Postconstruct worked, this sentence should be followed by #{bean.init} "/>
-      </h3>
-    </h:form>
-  </body>
- </html>
-</f:view>
-
diff --git a/appserver/tests/quicklook/web/jsfinjection/web/jsp/jsfHello.xhtml b/appserver/tests/quicklook/web/jsfinjection/web/jsp/jsfHello.xhtml
new file mode 100644
index 0000000..431e01a
--- /dev/null
+++ b/appserver/tests/quicklook/web/jsfinjection/web/jsp/jsfHello.xhtml
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<!--
+
+    Copyright (c) 2021 Contributors to Eclipse Foundation.
+    Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    This Source Code may also be made available under the following Secondary
+    Licenses when the conditions for such availability set forth in the
+    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+<html xmlns:h="jakarta.faces.html">
+	<h:head>
+		<title>Faces Hello</title>
+	</h:head>
+	<h:body>
+		<h1>Welcome to jAstrologer</h1>
+	
+		<h:form id="form">
+			<h3>
+				Hello, and welcome<br/>
+				<h:outputText
+					value="If injection worked, this sentence should be followed by the injected words -> #{testBean.entry} " />
+				<br/>
+				<h:outputText
+					value="If second injection worked, this sentence should be followed by 'a non-negative number' === #{testBean.number} ===" />
+				<br/>
+				<h:outputText
+					value="If @Postconstruct worked, this sentence should be followed by #{testBean.init} " />
+			</h3>
+		</h:form>
+	</h:body>
+</html>
+
diff --git a/appserver/tests/quicklook/weld/numberguess/metadata/beans.xml b/appserver/tests/quicklook/weld/numberguess/metadata/beans.xml
index 0291596..651674f 100644
--- a/appserver/tests/quicklook/weld/numberguess/metadata/beans.xml
+++ b/appserver/tests/quicklook/weld/numberguess/metadata/beans.xml
@@ -1,6 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-    Copyright (c) 2010, 2018 Oracle and/or its affiliates. All rights reserved.
+    Copyright (c) 2021 Contributors to Eclipse Foundation.
+    Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
     terms of the Eclipse Public License v. 2.0, which is available at
@@ -16,8 +18,12 @@
 
 -->
 
-<beans>
-  <interceptors>
-    <class>numberguess.InterceptorA</class>
-  </interceptors>
-</beans>
+
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
+       bean-discovery-mode="all" version="3.0">
+    <interceptors>
+        <class>numberguess.InterceptorA</class>
+    </interceptors>
+</beans>
\ No newline at end of file
diff --git a/appserver/tests/quicklook/weld/numberguess/metadata/faces-config.xml b/appserver/tests/quicklook/weld/numberguess/metadata/faces-config.xml
deleted file mode 100644
index c077e25..0000000
--- a/appserver/tests/quicklook/weld/numberguess/metadata/faces-config.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-<!--
-
-    Copyright (c) 2010, 2018 Oracle and/or its affiliates. All rights reserved.
-
-    This program and the accompanying materials are made available under the
-    terms of the Eclipse Public License v. 2.0, which is available at
-    http://www.eclipse.org/legal/epl-2.0.
-
-    This Source Code may also be made available under the following Secondary
-    Licenses when the conditions for such availability set forth in the
-    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
-    version 2 with the GNU Classpath Exception, which is available at
-    https://www.gnu.org/software/classpath/license.html.
-
-    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
-
--->
-
-<faces-config version="2.0"
-              xmlns="http://java.sun.com/xml/ns/javaee"
-              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2.0.xsd">
-
-</faces-config>
diff --git a/appserver/tests/quicklook/weld/numberguess/metadata/sun-web.xml b/appserver/tests/quicklook/weld/numberguess/metadata/sun-web.xml
deleted file mode 100644
index c3071b3..0000000
--- a/appserver/tests/quicklook/weld/numberguess/metadata/sun-web.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
-
-    This program and the accompanying materials are made available under the
-    terms of the Eclipse Public License v. 2.0, which is available at
-    http://www.eclipse.org/legal/epl-2.0.
-
-    This Source Code may also be made available under the following Secondary
-    Licenses when the conditions for such availability set forth in the
-    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
-    version 2 with the GNU Classpath Exception, which is available at
-    https://www.gnu.org/software/classpath/license.html.
-
-    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
-
--->
-
-<!DOCTYPE sun-web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Sun ONE Application Server 7.0 Servlet 2.3//EN' 'http://www.sun.com/software/sunone/appserver/dtds/sun-web-app_2_3-0.dtd'>
-
-<sun-web-app>
-  <session-config>
-    <session-manager/>
-  </session-config>
-  <class-loader delegate="true"/>
-  <jsp-config/>
-</sun-web-app>
-
diff --git a/appserver/tests/quicklook/weld/numberguess/metadata/web.xml b/appserver/tests/quicklook/weld/numberguess/metadata/web.xml
index 2cbcd2a..77844f4 100644
--- a/appserver/tests/quicklook/weld/numberguess/metadata/web.xml
+++ b/appserver/tests/quicklook/weld/numberguess/metadata/web.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
+    Copyright (c) 2021 Contributors to Eclipse Foundation.
     Copyright (c) 2010, 2018 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
@@ -17,10 +18,12 @@
 
 -->
 
-<web-app version="2.5"
-    xmlns="http://java.sun.com/xml/ns/javaee"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+<web-app
+    xmlns="https://jakarta.ee/xml/ns/jakartaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
+    version="5.0"
+>
 
    <display-name>Web Beans Numberguess example</display-name>
 
@@ -30,10 +33,9 @@
       <servlet-name>Faces Servlet</servlet-name>
       <servlet-class>jakarta.faces.webapp.FacesServlet</servlet-class>
    </servlet>
-
    <servlet-mapping>
       <servlet-name>Faces Servlet</servlet-name>
-      <url-pattern>*.jsf</url-pattern>
+      <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>
 
    <session-config>
diff --git a/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/Game.java b/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/Game.java
index 6478fb9..b8a9cfa 100644
--- a/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/Game.java
+++ b/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/Game.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2009, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -16,7 +17,6 @@
 
 package numberguess;
 
-
 import java.io.Serializable;
 
 import jakarta.annotation.PostConstruct;
@@ -32,111 +32,98 @@
 
 @Named
 @SessionScoped
-public class Game implements Serializable
-{
-   private static final long serialVersionUID = 1L;
+public class Game implements Serializable {
+    private static final long serialVersionUID = 1L;
 
-   private int number;
+    private int number;
 
-   private int guess;
-   private int smallest;
+    private int guess;
+    private int smallest;
 
-   @Inject
-   private StatefulBean sb;
+    @Inject
+    private StatefulBean sb;
 
-   @MaxNumber @Inject
-   private int maxNumber;
+    @MaxNumber
+    @Inject
+    private int maxNumber;
 
-   private int biggest;
-   private int remainingGuesses;
+    private int biggest;
+    private int remainingGuesses;
 
-   @Random @Inject Instance<Integer> randomNumber;
+    @Random
+    @Inject
+    Instance<Integer> randomNumber;
 
-   public Game()
-   {
-   }
+    public Game() {
+    }
 
-   public int getNumber()
-   {
-      return number;
-   }
+    public int getNumber() {
+        return number;
+    }
 
-   public int getGuess()
-   {
-      return guess;
-   }
+    public int getGuess() {
+        return guess;
+    }
 
-   public void setGuess(int guess)
-   {
-      this.guess = guess;
-   }
+    public void setGuess(int guess) {
+        this.guess = guess;
+    }
 
-   public int getSmallest()
-   {
-      return smallest;
-   }
+    public int getSmallest() {
+        return smallest;
+    }
 
-   public int getBiggest()
-   {
-      return biggest;
-   }
+    public int getBiggest() {
+        return biggest;
+    }
 
-   public int getRemainingGuesses()
-   {
-      return remainingGuesses;
-   }
+    public int getRemainingGuesses() {
+        return remainingGuesses;
+    }
 
-   public String check() throws InterruptedException
-   {
-       System.out.println("In Game::check");
-       sb.hello();
+    public String check() throws InterruptedException {
+        System.out.println("In Game::check");
+        sb.hello();
 
-      if (guess>number)
-      {
-         biggest = guess - 1;
-      }
-      if (guess<number)
-      {
-         smallest = guess + 1;
-      }
-      if (guess == number)
-      {
-         FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Correct!"));
-      }
-      remainingGuesses--;
-      return null;
-   }
+        if (guess > number) {
+            biggest = guess - 1;
+        }
+        if (guess < number) {
+            smallest = guess + 1;
+        }
+        if (guess == number) {
+            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Correct!"));
+        }
+        remainingGuesses--;
+        return null;
+    }
 
-   @PostConstruct
-   public void reset()
-   {
-       System.out.println("In Game::reset()");
-       sb.hello();
+    @PostConstruct
+    public void reset() {
+        System.out.println("In Game::reset()");
+        sb.hello();
 
-      this.smallest = 0;
-      this.guess = 0;
-      this.remainingGuesses = 10;
-      this.biggest = maxNumber;
-      this.number = randomNumber.get();
-   }
+        this.smallest = 0;
+        this.guess = 0;
+        this.remainingGuesses = 10;
+        this.biggest = maxNumber;
+        this.number = randomNumber.get();
+    }
 
-   public void validateNumberRange(FacesContext context,  UIComponent toValidate, Object value)
-   {
-      if (remainingGuesses <= 0)
-      {
-         FacesMessage message = new FacesMessage("No guesses left!");
-         context.addMessage(toValidate.getClientId(context), message);
-         ((UIInput)toValidate).setValid(false);
-         return;
-      }
-      int input = (Integer) value;
+    public void validateNumberRange(FacesContext context, UIComponent toValidate, Object value) {
+        if (remainingGuesses <= 0) {
+            FacesMessage message = new FacesMessage("No guesses left!");
+            context.addMessage(toValidate.getClientId(context), message);
+            ((UIInput) toValidate).setValid(false);
+            return;
+        }
+        int input = (Integer) value;
 
-      if (input < smallest || input > biggest)
-       {
-         ((UIInput)toValidate).setValid(false);
+        if (input < smallest || input > biggest) {
+            ((UIInput) toValidate).setValid(false);
 
-         FacesMessage message = new FacesMessage("Invalid guess");
-         context.addMessage(toValidate.getClientId(context), message);
-      }
-   }
+            FacesMessage message = new FacesMessage("Invalid guess");
+            context.addMessage(toValidate.getClientId(context), message);
+        }
+    }
 }
diff --git a/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/Generator.java b/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/Generator.java
index ef62946..dc36c57 100644
--- a/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/Generator.java
+++ b/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/Generator.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2009, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -16,34 +17,34 @@
 
 package numberguess;
 
-
 import java.io.Serializable;
 
 import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.enterprise.inject.Produces;
 
 @ApplicationScoped
-public class Generator implements Serializable
-{
+public class Generator implements Serializable {
 
-   private static final long serialVersionUID = -7213673465118041882L;
+    private static final long serialVersionUID = -7213673465118041882L;
 
-   private java.util.Random random = new java.util.Random( System.currentTimeMillis() );
+    private java.util.Random random = new java.util.Random(System.currentTimeMillis());
 
-   private int maxNumber = 100;
+    private int maxNumber = 100;
 
-   java.util.Random getRandom()
-   {
-      return random;
-   }
+    java.util.Random getRandom() {
+        return random;
+    }
 
-   @Produces @Random int next() {
-      return getRandom().nextInt(maxNumber);
-   }
+    @Produces
+    @Random
+    int next() {
+        return getRandom().nextInt(maxNumber);
+    }
 
-   @Produces @MaxNumber int getMaxNumber()
-   {
-      return maxNumber;
-   }
+    @Produces
+    @MaxNumber
+    int getMaxNumber() {
+        return maxNumber;
+    }
 
 }
diff --git a/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/InterceptorA.java b/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/InterceptorA.java
index 081f837..fc53b8b 100644
--- a/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/InterceptorA.java
+++ b/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/InterceptorA.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2009, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -29,14 +30,13 @@
     @EJB
     private StatelessLocal statelessLocal;
 
-    @Inject Foo foo;
+    @Inject
+    Foo foo;
 
     @AroundInvoke
     public Object around(InvocationContext ctx) throws Exception {
-
         System.out.println("In InterceptorA::around");
         return ctx.proceed();
-
     }
 
     @PostConstruct
@@ -48,7 +48,8 @@
 
         try {
             ctx.proceed();
-        } catch (Exception ignore ) {}
+        } catch (Exception ignore) {
+        }
     }
 
     @PreDestroy
@@ -56,7 +57,8 @@
         System.out.println("In InterceptorA::destroy()");
         try {
             ctx.proceed();
-        } catch (Exception ignore ) {}
+        } catch (Exception ignore) {
+        }
     }
 
 }
diff --git a/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/InterceptorB.java b/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/InterceptorB.java
index 2208447..eeb5d5f 100644
--- a/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/InterceptorB.java
+++ b/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/InterceptorB.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2009, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -26,9 +27,10 @@
 
 import jakarta.inject.Inject;
 
-public class InterceptorB implements Serializable{
+public class InterceptorB implements Serializable {
 
-    @EJB StatelessLocal sbean;
+    @EJB
+    StatelessLocal sbean;
 
     @AroundInvoke
     public Object around(InvocationContext ctx) throws Exception {
@@ -42,7 +44,7 @@
     public void init(InvocationContext ctx) {
         System.out.println("In InterceptorB::init()");
 
-        if( sbean == null ) {
+        if (sbean == null) {
             throw new EJBException("null sbean");
         }
 
@@ -50,7 +52,8 @@
 
         try {
             ctx.proceed();
-        } catch (Exception ignore ) {}
+        } catch (Exception ignore) {
+        }
     }
 
     @PreDestroy
@@ -58,7 +61,8 @@
         System.out.println("In InterceptorB::destroy()");
         try {
             ctx.proceed();
-        } catch (Exception ignore ) {}
+        } catch (Exception ignore) {
+        }
     }
 
 }
diff --git a/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/MaxNumber.java b/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/MaxNumber.java
index b1c3444..182a185 100644
--- a/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/MaxNumber.java
+++ b/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/MaxNumber.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2009, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -16,7 +17,6 @@
 
 package numberguess;
 
-
 import static java.lang.annotation.ElementType.FIELD;
 import static java.lang.annotation.ElementType.METHOD;
 import static java.lang.annotation.ElementType.PARAMETER;
@@ -29,11 +29,10 @@
 
 import jakarta.inject.Qualifier;
 
-@Target( { TYPE, METHOD, PARAMETER, FIELD })
+@Target({ TYPE, METHOD, PARAMETER, FIELD })
 @Retention(RUNTIME)
 @Documented
 @Qualifier
-public @interface MaxNumber
-{
+public @interface MaxNumber {
 
 }
diff --git a/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/Random.java b/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/Random.java
index 2703fc4..f6b7c9a 100644
--- a/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/Random.java
+++ b/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/Random.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2009, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -16,7 +17,6 @@
 
 package numberguess;
 
-
 import static java.lang.annotation.ElementType.FIELD;
 import static java.lang.annotation.ElementType.METHOD;
 import static java.lang.annotation.ElementType.PARAMETER;
@@ -29,11 +29,10 @@
 
 import jakarta.inject.Qualifier;
 
-@Target( { TYPE, METHOD, PARAMETER, FIELD })
+@Target({ TYPE, METHOD, PARAMETER, FIELD })
 @Retention(RUNTIME)
 @Documented
 @Qualifier
-public @interface Random
-{
+public @interface Random {
 
 }
diff --git a/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/SingletonBean.java b/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/SingletonBean.java
index 03c4de9..8c3ad2c 100644
--- a/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/SingletonBean.java
+++ b/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/SingletonBean.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2009, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -26,7 +27,6 @@
 import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.inject.Inject;
 
-
 @Singleton
 @Startup
 @ApplicationScoped
@@ -42,7 +42,7 @@
     public void init() {
         System.out.println("In SingletonBean::init()");
         System.out.println("sessionCtx = " + sessionCtx);
-        if( sessionCtx == null ) {
+        if (sessionCtx == null) {
             throw new EJBException("EE injection error");
         }
     }
@@ -57,6 +57,4 @@
         System.out.println("In SingletonBean::destroy()");
     }
 
-
-
 }
diff --git a/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/SomeBindingType.java b/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/SomeBindingType.java
index 3cad7f3..10f57d4 100644
--- a/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/SomeBindingType.java
+++ b/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/SomeBindingType.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2009, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -29,4 +30,5 @@
 @InterceptorBinding
 @Target(TYPE)
 @Retention(RUNTIME)
-public @interface SomeBindingType {}
+public @interface SomeBindingType {
+}
diff --git a/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/StatefulBean.java b/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/StatefulBean.java
index 8c8f6d0..ec86900 100644
--- a/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/StatefulBean.java
+++ b/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/StatefulBean.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2009, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -38,23 +39,21 @@
 
     @PostConstruct
     public void init() {
-    System.out.println("In StatefulBean::init()");
-    System.out.println("sessionCtx = " + sessionCtx);
-    if( sessionCtx == null ) {
-        throw new EJBException("EE injection error");
-    }
-    singleton.hello();
+        System.out.println("In StatefulBean::init()");
+        System.out.println("sessionCtx = " + sessionCtx);
+        if (sessionCtx == null) {
+            throw new EJBException("EE injection error");
+        }
+        singleton.hello();
     }
 
     public void hello() {
-    System.out.println("In StatefulBean::hello()");
+        System.out.println("In StatefulBean::hello()");
     }
 
     @PreDestroy
     public void destroy() {
-    System.out.println("In StatefulBean::destroy()");
+        System.out.println("In StatefulBean::destroy()");
     }
 
-
-
 }
diff --git a/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/StatelessBean.java b/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/StatelessBean.java
index 4186f4c..5e711ed 100644
--- a/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/StatelessBean.java
+++ b/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/StatelessBean.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2009, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -27,7 +28,6 @@
     @EJB
     private SingletonBean singleton;
 
-
     @PostConstruct
     public void init() {
         System.out.println("In StatelessBean::init()");
@@ -43,6 +43,4 @@
         System.out.println("In StatelessBean::destroy()");
     }
 
-
-
 }
diff --git a/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/StatelessLocal.java b/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/StatelessLocal.java
index aa1e59f..b4dc1aa 100644
--- a/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/StatelessLocal.java
+++ b/appserver/tests/quicklook/weld/numberguess/src/java/numberguess/StatelessLocal.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2009, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -18,6 +19,6 @@
 
 public interface StatelessLocal {
 
-    public void hello();
+    void hello();
 
 }
diff --git a/appserver/tests/quicklook/weld/numberguess/src/test/NumberGuessTestNG.java b/appserver/tests/quicklook/weld/numberguess/src/test/NumberGuessTestNG.java
index 63e3e14..a530429 100644
--- a/appserver/tests/quicklook/weld/numberguess/src/test/NumberGuessTestNG.java
+++ b/appserver/tests/quicklook/weld/numberguess/src/test/NumberGuessTestNG.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -22,7 +23,6 @@
 import org.testng.annotations.*;
 import org.testng.Assert;
 
-
 import java.io.*;
 import java.net.*;
 import java.util.*;
@@ -33,43 +33,39 @@
  */
 public class NumberGuessTestNG {
 
-    private String strContextRoot="numberguess";
+    private String strContextRoot = "numberguess";
 
     static String result = "";
-    String m_host="";
-    String m_port="";
+    String m_host = "";
+    String m_port = "";
 
     @BeforeMethod
-    public void beforeTest(){
-        m_host=System.getProperty("http.host");
-        m_port=System.getProperty("http.port");
+    public void beforeTest() {
+        m_host = System.getProperty("http.host");
+        m_port = System.getProperty("http.port");
     }
 
-    @Test(groups ={ "pulse"} ) // test method
+    @Test(groups = { "pulse" }) // test method
     public void appDeployedFirstPagetest() throws Exception {
 
-        try{
-            String testurl = "http://" + m_host  + ":" + m_port +
-                    "/"+ strContextRoot+"/home.jsf";
-            URL url = new URL(testurl);
-            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+        try {
+            HttpURLConnection conn = (HttpURLConnection) 
+                new URL("http://" + m_host + ":" + m_port + "/" + strContextRoot + "/home.xhtml").openConnection();
             conn.connect();
             int responseCode = conn.getResponseCode();
 
-            InputStream is = conn.getInputStream();
-            BufferedReader input = new BufferedReader(new InputStreamReader(is));
-
+            BufferedReader input = new BufferedReader(new InputStreamReader(conn.getInputStream()));
             String line = null;
             boolean result = false;
             String testLine = null;
             while ((line = input.readLine()) != null) {
-                if(line.indexOf("thinking of a number between")!=-1){
+                if (line.indexOf("thinking of a number between") != -1) {
                     result = true;
                     testLine = line;
                 }
             }
-            Assert.assertEquals(result, true,"Unexpected HTML");
-        }catch(Exception e){
+            Assert.assertEquals(result, true, "Unexpected HTML");
+        } catch (Exception e) {
             e.printStackTrace();
             throw new Exception(e);
         }
diff --git a/appserver/tests/quicklook/weld/numberguess/web/html/first.html b/appserver/tests/quicklook/weld/numberguess/web/html/first.html
index b7a1f5b..b9cbb69 100644
--- a/appserver/tests/quicklook/weld/numberguess/web/html/first.html
+++ b/appserver/tests/quicklook/weld/numberguess/web/html/first.html
@@ -1,8 +1,8 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-  <head>
+
 <!--
 
+    Copyright (c) 2021 Contributors to Eclipse Foundation.
     Copyright (c) 2010, 2018 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
@@ -19,16 +19,18 @@
 
 -->
 
-    <title></title>
-  </head>
-  <body>
-  Welcome to HTML Test Program. This tests following thing
-  <ol>
-      <li>TestNG</li>
-      <li>build.xml</li>
-      <li>V2 & V3</li>
-      <li>New Framework</li>
-  </ol>
-
-  </body>
+<html>
+	<head>
+	    <title></title>
+	</head>
+	<body>
+		Welcome to HTML Test Program. This tests following thing
+		<ol>
+			<li>TestNG</li>
+			<li>build.xml</li>
+			<li>V2 & V3</li>
+			<li>New Framework</li>
+		</ol>
+	
+	</body>
 </html>
diff --git a/appserver/tests/quicklook/weld/numberguess/web/html/home.xhtml b/appserver/tests/quicklook/weld/numberguess/web/html/home.xhtml
index 59316cc..e9cceb6 100644
--- a/appserver/tests/quicklook/weld/numberguess/web/html/home.xhtml
+++ b/appserver/tests/quicklook/weld/numberguess/web/html/home.xhtml
@@ -1,6 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <!--
 
+    Copyright (c) 2021 Contributors to Eclipse Foundation.
     Copyright (c) 2010, 2018 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
@@ -25,6 +26,7 @@
   <ui:composition template="template.xhtml">
     <ui:define name="content">
        <h1>Guess a number...</h1>
+       
        <h:form id="NumberGuessMain">
           <div style="color: red">
              <h:messages id="messages" globalOnly="false"/>
@@ -47,6 +49,7 @@
             <h:commandButton id="RestartButton" value="Reset" action="#{game.reset}" immediate="true" />
           </div>
        </h:form>
+       
     </ui:define>
   </ui:composition>
 </html>
diff --git a/appserver/tests/quicklook/weld/numberguess/web/html/index.html b/appserver/tests/quicklook/weld/numberguess/web/html/index.html
index b4b66d0..902d980 100644
--- a/appserver/tests/quicklook/weld/numberguess/web/html/index.html
+++ b/appserver/tests/quicklook/weld/numberguess/web/html/index.html
@@ -1,23 +1,24 @@
 <html>
-<head>
-<!--
-
-    Copyright (c) 2010, 2018 Oracle and/or its affiliates. All rights reserved.
-
-    This program and the accompanying materials are made available under the
-    terms of the Eclipse Public License v. 2.0, which is available at
-    http://www.eclipse.org/legal/epl-2.0.
-
-    This Source Code may also be made available under the following Secondary
-    Licenses when the conditions for such availability set forth in the
-    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
-    version 2 with the GNU Classpath Exception, which is available at
-    https://www.gnu.org/software/classpath/license.html.
-
-    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
-
--->
-
-  <meta http-equiv="Refresh" content="0; URL=home.jsf">
-</head>
+	<head>
+	<!--
+	
+	    Copyright (c) 2021 Contributors to Eclipse Foundation.
+	    Copyright (c) 2010, 2018 Oracle and/or its affiliates. All rights reserved.
+	
+	    This program and the accompanying materials are made available under the
+	    terms of the Eclipse Public License v. 2.0, which is available at
+	    http://www.eclipse.org/legal/epl-2.0.
+	
+	    This Source Code may also be made available under the following Secondary
+	    Licenses when the conditions for such availability set forth in the
+	    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+	    version 2 with the GNU Classpath Exception, which is available at
+	    https://www.gnu.org/software/classpath/license.html.
+	
+	    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+	
+	-->
+	
+	  <meta http-equiv="Refresh" content="0; URL=home.xhtml">
+	</head>
 </html>
diff --git a/appserver/tests/quicklook/weld/numberguess/web/html/template.xhtml b/appserver/tests/quicklook/weld/numberguess/web/html/template.xhtml
index d1433d8..feb9fe1 100644
--- a/appserver/tests/quicklook/weld/numberguess/web/html/template.xhtml
+++ b/appserver/tests/quicklook/weld/numberguess/web/html/template.xhtml
@@ -1,6 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html>
 <!--
 
+    Copyright (c) 2021 Contributors to Eclipse Foundation.
     Copyright (c) 2010, 2018 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
@@ -18,34 +19,28 @@
 -->
 
 <html xmlns="http://www.w3.org/1999/xhtml"
-    xmlns:ui="http://java.sun.com/jsf/facelets"
-    xmlns:h="http://java.sun.com/jsf/html"
-    xmlns:f="http://java.sun.com/jsf/core">
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:h="http://java.sun.com/jsf/html"
+	xmlns:f="http://java.sun.com/jsf/core">
 
-<head>
-  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-  <title>Numberguess</title>
-  <link href="style/main.css" rel="stylesheet" type="text/css"/>
-  <ui:insert name="head"/>
-</head>
-
-<body>
-  
-  <div id="container">
-    <div id="header">
-  
-    </div>
-
-    <div id="sidebar">
-    
-    </div>
-  
-    <div id="content">
-      <ui:insert name="content"/>
-    </div>
-    
-    <br style="clear:both"/>
-  </div>
-   
-</body>
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+		<title>Numberguess</title>
+		<link href="style/main.css" rel="stylesheet" type="text/css" />
+		<ui:insert name="head" />
+	</head>
+	
+	<body>
+		<div id="container">
+			<div id="header"></div>
+	
+			<div id="sidebar"></div>
+	
+			<div id="content">
+				<ui:insert name="content" />
+			</div>
+	
+			<br style="clear: both" />
+		</div>
+	</body>
 </html>
diff --git a/appserver/tests/quicklook/wsit/JaxwsFromWsdl/metadata/web.xml b/appserver/tests/quicklook/wsit/JaxwsFromWsdl/metadata/web.xml
index 8aa56a9..3320ba9 100644
--- a/appserver/tests/quicklook/wsit/JaxwsFromWsdl/metadata/web.xml
+++ b/appserver/tests/quicklook/wsit/JaxwsFromWsdl/metadata/web.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
+    Copyright (c) 2021 Contributors to Eclipse Foundation.
     Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
@@ -17,24 +18,31 @@
 
 -->
 
-<web-app version="2.4" mlns="http://java.sun.com/xml/ns/j2ee">
-  <display-name>JaxwsFromWsdl</display-name>
-  <description>JaxwsFromWsdl</description>
-  <listener>
-    <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
-  </listener>
-  <servlet>
-    <servlet-name>JaxwsFromWsdl</servlet-name>
+<web-app
+    xmlns="https://jakarta.ee/xml/ns/jakartaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
+    version="5.0"
+>
     <display-name>JaxwsFromWsdl</display-name>
-    <description>JAX-WS endpoint - jaxwsfromwsdl</description>
-    <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
-    <load-on-startup>1</load-on-startup>
-  </servlet>
-  <servlet-mapping>
-    <servlet-name>JaxwsFromWsdl</servlet-name>
-    <url-pattern>/addnumbers</url-pattern>
-  </servlet-mapping>
-  <session-config>
-    <session-timeout>60</session-timeout>
-  </session-config>
+    <description>JaxwsFromWsdl</description>
+    
+    <listener>
+        <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener
+        </listener-class>
+    </listener>
+    
+    <servlet>
+        <servlet-name>JaxwsFromWsdl</servlet-name>
+        <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>JaxwsFromWsdl</servlet-name>
+        <url-pattern>/addnumbers</url-pattern>
+    </servlet-mapping>
+    
+    <session-config>
+        <session-timeout>60</session-timeout>
+    </session-config>
 </web-app>
diff --git a/appserver/tests/quicklook/wsit/JaxwsFromWsdl/pom.xml b/appserver/tests/quicklook/wsit/JaxwsFromWsdl/pom.xml
index 6acb3f2..39dc01a 100644
--- a/appserver/tests/quicklook/wsit/JaxwsFromWsdl/pom.xml
+++ b/appserver/tests/quicklook/wsit/JaxwsFromWsdl/pom.xml
@@ -28,7 +28,7 @@
     <artifactId>wsit_quicklook</artifactId>
     <name>Glassfish Web Services Quicklook</name>
     <packaging>jar</packaging>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <description>This pom describes how to run QuickLook tests on the Glassfish Bundle</description>
 
     <build>
diff --git a/appserver/tests/quicklook/wsit/JaxwsFromWsdl/src/jaxwsfromwsdl/client/AddNumbersClient.java b/appserver/tests/quicklook/wsit/JaxwsFromWsdl/src/jaxwsfromwsdl/client/AddNumbersClient.java
index 3522184..fb7fe0f 100644
--- a/appserver/tests/quicklook/wsit/JaxwsFromWsdl/src/jaxwsfromwsdl/client/AddNumbersClient.java
+++ b/appserver/tests/quicklook/wsit/JaxwsFromWsdl/src/jaxwsfromwsdl/client/AddNumbersClient.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -23,64 +24,63 @@
 
     public boolean testAddNumbers() {
 
-        boolean status=false;
+        boolean status = false;
         AddNumbersPortType port = null;
 
         try {
-            port = new AddNumbersService().getAddNumbersPort ();
+            port = new AddNumbersService().getAddNumbersPort();
             int number1 = 10;
             int number2 = 20;
             int number3 = 30;
 
             // System.out.printf ("Invoking addNumbers(%d, %d)\n", number1, number2);
-            int result = port.addNumbers (number1, number2);
+            int result = port.addNumbers(number1, number2);
             // System.out.printf ("The result of adding %d and %d is %d.\n\n", number1, number2, result);
             if (result == number3)
-          status = true;
-        } catch(Exception ex){
+                status = true;
+        } catch (Exception ex) {
             System.out.print("Got unexpected exception");
             // ex.printStackTrace();
-    }
+        }
         return status;
 
     }
 
     public boolean testAddNumbersException() {
 
-        boolean status=false;
+        boolean status = false;
         AddNumbersPortType port = null;
 
         try {
-            port = new AddNumbersService().getAddNumbersPort ();
+            port = new AddNumbersService().getAddNumbersPort();
             int number1 = -10;
             int number2 = 20;
 
             // System.out.printf ("Invoking addNumbers(%d, %d)\n", number1, number2);
-            int result = port.addNumbers (number1, number2);
+            int result = port.addNumbers(number1, number2);
             // System.out.printf ("The result of adding %d and %d is %d.\n\n", number1, number2, result);
         } catch (AddNumbersFault_Exception ex) {
-        // System.out.print("Got expected exception");
-          // System.out.printf ("Caught AddNumbersFault_Exception: %s\n", ex.getFaultInfo().getFaultInfo ());
+            // System.out.print("Got expected exception");
+            // System.out.printf ("Caught AddNumbersFault_Exception: %s\n", ex.getFaultInfo().getFaultInfo ());
             String info1 = ex.getFaultInfo().getFaultInfo();
-        // System.out.print("info1="+info1+"---");
+            // System.out.print("info1="+info1+"---");
             String info2 = ex.getFaultInfo().getMessage();
-        // System.out.print("info2="+info2+"---");
+            // System.out.print("info2="+info2+"---");
             if (info2.contains("Negative number cant be added!"))
-        status = true;
-    }
+                status = true;
+        }
 
         return status;
 
     }
 
-    public static void main (String[] args) {
+    public static void main(String[] args) {
         System.out.println("AddNumbersClient:main");
         AddNumbersClient client = new AddNumbersClient();
         boolean result = false;
         result = client.testAddNumbers();
-        System.out.println("result1="+result);
+        System.out.println("result1=" + result);
         result = client.testAddNumbersException();
-        System.out.println("result2="+result);
+        System.out.println("result2=" + result);
     }
 }
-
diff --git a/appserver/tests/quicklook/wsit/JaxwsFromWsdl/src/jaxwsfromwsdl/server/AddNumbersImpl.java b/appserver/tests/quicklook/wsit/JaxwsFromWsdl/src/jaxwsfromwsdl/server/AddNumbersImpl.java
index dd3ff53..927b398 100644
--- a/appserver/tests/quicklook/wsit/JaxwsFromWsdl/src/jaxwsfromwsdl/server/AddNumbersImpl.java
+++ b/appserver/tests/quicklook/wsit/JaxwsFromWsdl/src/jaxwsfromwsdl/server/AddNumbersImpl.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -16,25 +17,23 @@
 
 package jaxwsfromwsdl.server;
 
-@jakarta.jws.WebService (endpointInterface="jaxwsfromwsdl.server.AddNumbersPortType")
-public class AddNumbersImpl{
+@jakarta.jws.WebService(endpointInterface = "jaxwsfromwsdl.server.AddNumbersPortType")
+public class AddNumbersImpl {
 
     /**
      * @param number1
      * @param number2
      * @return The sum
-     * @throws AddNumbersException
-     *             if any of the numbers to be added is negative.
+     * @throws AddNumbersException if any of the numbers to be added is negative.
      */
-    public int addNumbers (int number1, int number2)
-    throws AddNumbersFault_Exception {
+    public int addNumbers(int number1, int number2) throws AddNumbersFault_Exception {
         if (number1 < 0 || number2 < 0) {
             String message = "Negative number cant be added!";
             String detail = "Numbers: " + number1 + ", " + number2;
-            AddNumbersFault fault = new AddNumbersFault ();
-            fault.setMessage (message);
-            fault.setFaultInfo (detail);
-            throw new AddNumbersFault_Exception (message, fault);
+            AddNumbersFault fault = new AddNumbersFault();
+            fault.setMessage(message);
+            fault.setFaultInfo(detail);
+            throw new AddNumbersFault_Exception(message, fault);
         }
         return number1 + number2;
     }
diff --git a/appserver/tests/quicklook/wsit/JaxwsFromWsdl/src/test/jaxwsfromwsdl/client/JaxwsFromWsdlTestNG.java b/appserver/tests/quicklook/wsit/JaxwsFromWsdl/src/test/jaxwsfromwsdl/client/JaxwsFromWsdlTestNG.java
index 735720b..57189f1 100644
--- a/appserver/tests/quicklook/wsit/JaxwsFromWsdl/src/test/jaxwsfromwsdl/client/JaxwsFromWsdlTestNG.java
+++ b/appserver/tests/quicklook/wsit/JaxwsFromWsdl/src/test/jaxwsfromwsdl/client/JaxwsFromWsdlTestNG.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2008, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -15,6 +16,7 @@
  */
 
 package jaxwsfromwsdl.client;
+
 import org.testng.annotations.*;
 import org.testng.Assert;
 import java.lang.reflect.*;
@@ -22,55 +24,54 @@
 
 public class JaxwsFromWsdlTestNG {
 
-
-    private Class cls = null;
-    private Constructor  ct = null;
-    private Object  obj = null;
-    private Method meth = null;
+    private Class cls;
+    private Constructor ct;
+    private Object obj;
+    private Method meth;
 
     @BeforeTest
     public void loadClass() throws Exception {
-      try {
-    cls = Class.forName ("jaxwsfromwsdl.client.AddNumbersClient");
-        ct = cls.getConstructor();
-        obj = ct.newInstance();
-    // System.out.println ("class is loaded");
-      } catch (Exception ex) {
-    System.out.println ("Got ex, class is not loaded.");
-        throw new Exception(ex);
-      }
+        try {
+            cls = Class.forName("jaxwsfromwsdl.client.AddNumbersClient");
+            ct = cls.getConstructor();
+            obj = ct.newInstance();
+            // System.out.println ("class is loaded");
+        } catch (Exception ex) {
+            System.out.println("Got ex, class is not loaded.");
+            throw new Exception(ex);
+        }
         System.out.println("done for init");
     }
 
-    @Test(groups ={"functional"})
-    public void testAddNumbers_JaxwsFromWsdl() throws Exception{
-      boolean result = false;
-      try {
-        meth = cls.getMethod("testAddNumbers");
-        // System.out.println("meth="+ meth.toString());
-        // System.out.println("cls="+ cls);
-        // System.out.println("ct="+ ct);
-        // System.out.println("obj="+ obj);
-    result = (Boolean) meth.invoke(obj, (Object[])null);
-      } catch (Exception ex) {
-    System.out.println ("got unexpected exception.");
-        throw new Exception(ex);
-      }
-      Assert.assertTrue(result);
+    @Test(groups = { "functional" })
+    public void testAddNumbers_JaxwsFromWsdl() throws Exception {
+        boolean result = false;
+        try {
+            meth = cls.getMethod("testAddNumbers");
+            System.out.println("meth=" + meth.toString());
+            System.out.println("cls=" + cls);
+            System.out.println("ct=" + ct);
+            System.out.println("obj=" + obj);
+            result = (Boolean) meth.invoke(obj, (Object[]) null);
+        } catch (Exception ex) {
+            System.out.println("got unexpected exception.");
+            throw new Exception(ex);
+        }
+        
+        Assert.assertTrue(result);
     }
 
-
     @Test(dependsOnMethods = { "testAddNumbers_JaxwsFromWsdl" })
-    public void testAddNumbersException_JaxwsFromWsdl() throws Exception{
-      boolean result = false;
-      try {
-        meth = cls.getMethod("testAddNumbersException");
-    result = (Boolean) meth.invoke(obj, (Object[])null);
-      } catch (Exception ex) {
-    System.out.println ("got unexpected exception");
-        throw new Exception(ex);
-      }
-      Assert.assertTrue(result);
+    public void testAddNumbersException_JaxwsFromWsdl() throws Exception {
+        boolean result = false;
+        try {
+            meth = cls.getMethod("testAddNumbersException");
+            result = (Boolean) meth.invoke(obj, (Object[]) null);
+        } catch (Exception ex) {
+            System.out.println("got unexpected exception");
+            throw new Exception(ex);
+        }
+        Assert.assertTrue(result);
     }
 
 }
diff --git a/appserver/tests/quicklook/wsit/jsr109tester/build.xml b/appserver/tests/quicklook/wsit/jsr109tester/build.xml
index 8ce0373..0397218 100644
--- a/appserver/tests/quicklook/wsit/jsr109tester/build.xml
+++ b/appserver/tests/quicklook/wsit/jsr109tester/build.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
+    Copyright (c) 2021 Contributors to Eclipse Foundation.
     Copyright (c) 2014, 2018 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
@@ -19,111 +20,87 @@
 
 <project basedir="." default="help" name="jsr109tester">
 
-    <property file="build.properties"/>
-    <property file="${ws.root}/gfproject/${deploy.platform}-config.properties"/>
+    <property file="build.properties" />
+    <property file="${ws.root}/gfproject/${deploy.platform}-config.properties" />
 
     <description>wsit tests</description>
-    <import file="${ws.root}/gfproject/build-impl.xml"/>
-    <import file="${ws.root}/gfproject/${deploy.platform}-targets.xml"/>
+    <import file="${ws.root}/gfproject/build-impl.xml" />
+    <import file="${ws.root}/gfproject/${deploy.platform}-targets.xml" />
 
-    <target name="build-deploy" depends="server,client, runtest, undeploy"/>
-    <target name="all" depends="server, client, runtest, undeploy"/>
+    <target name="build-deploy" depends="server,client, runtest, undeploy" />
+    <target name="all" depends="server, client, runtest, undeploy" />
 
-    <!--<target name="server" depends="build-server-wsdl, create-war, deploy"/>-->
-    <target name="server" depends="build-server, create-war, deploy"/>
-    <target name="client" depends="generate-client, build-client1, build-client2"/>
+    <target name="server" depends="build-server, create-war, deploy" />
+    <target name="client" depends="generate-client, build-client1, build-client2" />
 
     <target name="build-setup">
-        <echo message="build-setup: build.home=${build.home}"/>
-        <mkdir dir="${build.classes.home}"/>
-        <mkdir dir="${build.war.home}"/>
+        <echo message="build-setup: build.home=${build.home}" />
+        <mkdir dir="${build.classes.home}" />
+        <mkdir dir="${build.war.home}" />
     </target>
 
     <target name="build-server" depends="declare-wsimport,build-setup" if="wsjar.available">
-        <javac
-                srcdir="${basedir}/src"
-                destdir="${build.classes.home}"
-                includes="**/server/**,**/common/**" classpathref="class.path">
-            <classpath refid="wsit.classpath"/>
+        <javac srcdir="${basedir}/src" destdir="${build.classes.home}" includes="**/server/**,**/common/**" classpathref="class.path">
+            <classpath refid="wsit.classpath" />
         </javac>
     </target>
 
     <target name="create-war">
         <zip destfile="${app.file.ext}">
             <zipfileset dir="${build.classes.home}" prefix="WEB-INF/classes">
-                <include name="fromjava/server/**/**"/>
+                <include name="fromjava/server/**/**" />
             </zipfileset>
         </zip>
-        <copy file="${app.file.ext}" tofile="${dist.dir}/${app.file.ext}"/>
+        <copy file="${app.file.ext}" tofile="${dist.dir}/${app.file.ext}" />
     </target>
 
     <target name="generate-client" depends="declare-wsimport,build-setup" if="wsjar.available">
-        <wsimport
-                debug="${debug}"
-                verbose="${verbose}"
-                failonerror="false"
-                keep="${keep}"
-                extension="${extension}"
-                destdir="${build.classes.home}"
-                wsdl="${client.wsdl}"
-                package="${client.package}">
+        <wsimport debug="${debug}" verbose="${verbose}" failonerror="false" keep="${keep}" extension="${extension}" destdir="${build.classes.home}" wsdl="${client.wsdl}" package="${client.package}">
         </wsimport>
     </target>
 
     <target name="build-client" depends="generate-client">
-        <javac
-                srcdir="src"
-                failonerror="false"
-                destdir="${build.classes.home}"
-                includes="**/client/**,**/common/**" classpathref="class.path">
-            <classpath refid="wsit.classpath"/>
+        <javac srcdir="src" failonerror="false" destdir="${build.classes.home}" includes="**/client/**,**/common/**" classpathref="class.path">
+            <classpath refid="wsit.classpath" />
         </javac>
     </target>
 
     <target name="build-client1" depends="generate-client">
-        <javac
-                failonerror="false"
-                srcdir="src"
-                destdir="${build.classes.home}"
-                includes="**/*Client.java" classpathref="class.path">
-            <classpath refid="wsit.classpath"/>
+        <javac failonerror="false" srcdir="src" destdir="${build.classes.home}" includes="**/*Client.java" classpathref="class.path">
+            <classpath refid="wsit.classpath" />
         </javac>
     </target>
 
     <target name="build-client2">
-        <javac
-                failonerror="false"
-                srcdir="src"
-                destdir="${build.classes.home}"
-                includes="**/client/*TestNG.java" classpathref="class.path">
-            <classpath refid="wsit.classpath"/>
+        <javac failonerror="false" srcdir="src" destdir="${build.classes.home}" includes="**/client/*TestNG.java" classpathref="class.path">
+            <classpath refid="wsit.classpath" />
         </javac>
     </target>
 
 
     <target name="runtest">
-    <record name="${basedir}/wsit2run.output" action="start"/>
+        <record name="${basedir}/wsit2run.output" action="start" />
         <antcall target="runtest-impl">
-            <param name="testng.test.name" value="${testng.test.name}"/>
-            <param name="testng.testclient" value="jsr109tester"/>
+            <param name="testng.test.name" value="${testng.test.name}" />
+            <param name="testng.testclient" value="jsr109tester" />
         </antcall>
-    <record name="${basedir}/wsit2run.output" action="stop"/>
+        <record name="${basedir}/wsit2run.output" action="stop" />
     </target>
 
     <target name="deploy">
-        <antcall target="deploy-${deploy.platform}-impl"/>
+        <antcall target="deploy-${deploy.platform}-impl" />
     </target>
 
     <target name="undeploy">
-        <antcall target="undeploy-${deploy.platform}-impl"/>
+        <antcall target="undeploy-${deploy.platform}-impl" />
     </target>
 
     <target name="help">
-        <echo message="server:       Builds and deploy the service endpoint WAR"/>
-        <echo message="client:       Builds the client"/>
-        <echo message="runtest:      Runs the client"/>
-        <echo message="undeploy:     Undeploy war"/>
-        <echo message="build-clean:  Remove build dir"/>
+        <echo message="server:       Builds and deploy the service endpoint WAR" />
+        <echo message="client:       Builds the client" />
+        <echo message="runtest:      Runs the client" />
+        <echo message="undeploy:     Undeploy war" />
+        <echo message="build-clean:  Remove build dir" />
     </target>
 
 </project>
diff --git a/appserver/tests/quicklook/wsit/jsr109tester/pom.xml b/appserver/tests/quicklook/wsit/jsr109tester/pom.xml
index 55d4855..21036a6 100644
--- a/appserver/tests/quicklook/wsit/jsr109tester/pom.xml
+++ b/appserver/tests/quicklook/wsit/jsr109tester/pom.xml
@@ -29,7 +29,7 @@
     <artifactId>wsit_quicklook</artifactId>
     <name>Glassfish Web Services Quicklook</name>
     <packaging>jar</packaging>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <description>This pom describes how to run QuickLook tests on the Glassfish Bundle</description>
 
     <build>
diff --git a/appserver/tests/quicklook/wsit/jsr109tester/src/test/fromjava/client/CheckTesterUITestNG.java b/appserver/tests/quicklook/wsit/jsr109tester/src/test/fromjava/client/CheckTesterUITestNG.java
index b44618a..8957c8e 100644
--- a/appserver/tests/quicklook/wsit/jsr109tester/src/test/fromjava/client/CheckTesterUITestNG.java
+++ b/appserver/tests/quicklook/wsit/jsr109tester/src/test/fromjava/client/CheckTesterUITestNG.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2014, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -37,8 +38,8 @@
     public static final String URL_TESTER_PAGE = "http://localhost:8080/JaxwsFromJava/AddNumbersService?Tester";
     public static final String HEADER_TESTER_PAGE = "AddNumbersService Web Service Tester";
 
-    private Object port = null;
-    private Method method = null;
+    private Object port;
+    private Method method;
 
     @BeforeTest
     public void loadClass() throws Exception {
@@ -55,7 +56,7 @@
         System.out.println("done for init");
     }
 
-    @Test(groups = {"functional"})
+    @Test(groups = { "functional" })
     public void testAddNumbers() throws Exception {
         int result = 0;
         try {
@@ -68,21 +69,22 @@
             System.out.println("got unexpected exception.");
             throw new Exception(ex);
         }
+        
         Assert.assertTrue(result == 3);
     }
 
-    @Test(groups = {"functional"})
+    @Test(groups = { "functional" })
     public void testTesterUI() throws Exception {
         String testerPageHTML = wget(URL_TESTER_PAGE);
         System.out.println("Tester Page HTML = " + testerPageHTML);
+        
         Assert.assertTrue(testerPageHTML.contains(HEADER_TESTER_PAGE));
     }
 
     public static String wget(String url) throws Exception {
         BufferedReader in = null;
         try {
-            URLConnection connection = new URL(url).openConnection();
-            in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
+            in = new BufferedReader(new InputStreamReader(new URL(url).openConnection().getInputStream()));
             StringBuilder response = new StringBuilder();
 
             String inputLine;
diff --git a/appserver/tests/sqe_smoke/run_test.sh b/appserver/tests/sqe_smoke/run_test.sh
index 1437328..982de67 100755
--- a/appserver/tests/sqe_smoke/run_test.sh
+++ b/appserver/tests/sqe_smoke/run_test.sh
@@ -29,7 +29,7 @@
   # CLEANUPS
   kill_clean `ps -ef |grep jre|grep -v grep|cut -f4,5 -d" "`
   kill_clean `jps |grep Main |grep -v grep |cut -f1 -d" "`
-  kill_clean `ps -ef | grep ${WORKSPACE}/glassfish6/glassfish|grep -v grep`
+  kill_clean `ps -ef | grep ${WORKSPACE}/glassfish7/glassfish|grep -v grep`
 
   curl --noproxy '*' ${INTERNAL_RELEASE_REPO}/com/oracle/glassfish/sqe-smoke/1.0/sqe-smoke-1.0.zip > bundles/sqe-smoke.zip
   unzip bundles/sqe-smoke.zip
diff --git a/appserver/tests/sse/basic/pom.xml b/appserver/tests/sse/basic/pom.xml
index c12c6f2..727f1a3 100644
--- a/appserver/tests/sse/basic/pom.xml
+++ b/appserver/tests/sse/basic/pom.xml
@@ -30,14 +30,14 @@
     <properties>
         <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <glasfish.home>../../../distributions/web/target/stage/glassfish6/glassfish</glasfish.home>
+        <glasfish.home>../../../distributions/web/target/stage/glassfish7/glassfish</glasfish.home>
     </properties>
 
     <dependencies>
         <dependency>
             <groupId>org.glassfish.main.web</groupId>
             <artifactId>web-sse</artifactId>
-            <version>6.2.6-SNAPSHOT</version>
+            <version>7.0.0-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
diff --git a/appserver/tests/sse/videoplayer/README.txt b/appserver/tests/sse/videoplayer/README.txt
index f636d60..71c8272 100644
--- a/appserver/tests/sse/videoplayer/README.txt
+++ b/appserver/tests/sse/videoplayer/README.txt
@@ -2,7 +2,7 @@
 
 * Deploy the target/videoplayer.war file to the server avatar distribution
 
-$cd appserver/distributions/avatar/target/stage/glassfish6/glassfish/bin
+$cd appserver/distributions/avatar/target/stage/glassfish7/glassfish/bin
 $./asadmin start-domain
 $./asadmin deploy videoplayer.war
 
diff --git a/appserver/tests/sse/videoplayer/pom.xml b/appserver/tests/sse/videoplayer/pom.xml
index 9b32259..7237055 100644
--- a/appserver/tests/sse/videoplayer/pom.xml
+++ b/appserver/tests/sse/videoplayer/pom.xml
@@ -30,14 +30,14 @@
     <properties>
         <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <glasfish.home>../../../distributions/web/target/stage/glassfish6/glassfish</glasfish.home>
+        <glasfish.home>../../../distributions/web/target/stage/glassfish7/glassfish</glasfish.home>
     </properties>
 
     <dependencies>
         <dependency>
             <groupId>org.glassfish.main.web</groupId>
             <artifactId>web-sse</artifactId>
-            <version>6.2.6-SNAPSHOT</version>
+            <version>7.0.0-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
diff --git a/appserver/tests/tck/authentication/pom.xml b/appserver/tests/tck/authentication/pom.xml
index 445ad8c..c387f87 100644
--- a/appserver/tests/tck/authentication/pom.xml
+++ b/appserver/tests/tck/authentication/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.tests.tck</groupId>
         <artifactId>tck</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>6.2.4-SNAPSHOT</version>
     </parent>
 
     <artifactId>glassfish-external-tck-authentication</artifactId>
diff --git a/appserver/tests/tck/authorization/pom.xml b/appserver/tests/tck/authorization/pom.xml
index 30dc819..53a2bbf 100644
--- a/appserver/tests/tck/authorization/pom.xml
+++ b/appserver/tests/tck/authorization/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.tests.tck</groupId>
         <artifactId>tck</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>glassfish-external-tck-authorization</artifactId>
@@ -35,7 +35,7 @@
         <ant.home>${project.build.directory}/apache-ant-${ant.version}</ant.home>
         <ant.zip.url>https://archive.apache.org/dist/ant/binaries/apache-ant-${ant.version}-bin.zip</ant.zip.url>
         <tck.home>${project.build.directory}/authorization-tck</tck.home>
-        <glassfish.home>${project.build.directory}/glassfish6</glassfish.home>
+        <glassfish.home>${project.build.directory}/glassfish7</glassfish.home>
         <glassfish.version>${project.version}</glassfish.version>
         <glassfish.asadmin>${glassfish.home}/glassfish/bin/asadmin</glassfish.asadmin>
         <tck.tests.home>${tck.home}/src/com/sun/ts/tests</tck.tests.home>
diff --git a/appserver/tests/tck/embedded_ejb_smoke/ejb_lite_basic/pom.xml b/appserver/tests/tck/embedded_ejb_smoke/ejb_lite_basic/pom.xml
index a7f5887..4b74bb8 100644
--- a/appserver/tests/tck/embedded_ejb_smoke/ejb_lite_basic/pom.xml
+++ b/appserver/tests/tck/embedded_ejb_smoke/ejb_lite_basic/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.tests.tck</groupId>
         <artifactId>embedded-ejb-smoke</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>ejb-lite-basic</artifactId>
diff --git a/appserver/tests/tck/embedded_ejb_smoke/pom.xml b/appserver/tests/tck/embedded_ejb_smoke/pom.xml
index 7492b7b..f47be0e 100644
--- a/appserver/tests/tck/embedded_ejb_smoke/pom.xml
+++ b/appserver/tests/tck/embedded_ejb_smoke/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.tests.tck</groupId>
         <artifactId>tck</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>embedded-ejb-smoke</artifactId>
diff --git a/appserver/tests/tck/embedded_ejb_smoke/runner/pom.xml b/appserver/tests/tck/embedded_ejb_smoke/runner/pom.xml
index 5ef50e9..dbfea6c 100644
--- a/appserver/tests/tck/embedded_ejb_smoke/runner/pom.xml
+++ b/appserver/tests/tck/embedded_ejb_smoke/runner/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.tests.tck</groupId>
         <artifactId>embedded-ejb-smoke</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>embedded-ejb-smoke-runner</artifactId>
@@ -37,7 +37,7 @@
     <properties>
         <tck.debug>${maven.tck.debug}</tck.debug>
         <tck.home>${project.build.directory}/tck</tck.home>
-        <glassfish.home>${tck.home}/glassfish6</glassfish.home>
+        <glassfish.home>${tck.home}/glassfish7</glassfish.home>
         <glassfish.version>${project.version}</glassfish.version>
     </properties>
 
@@ -70,7 +70,7 @@
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>
-            <version>3.3.2</version>
+            <version>3.12.0</version>
         </dependency>
 
         <dependency>
diff --git a/appserver/tests/tck/faces/pom.xml b/appserver/tests/tck/faces/pom.xml
index 00fc619..39806a2 100644
--- a/appserver/tests/tck/faces/pom.xml
+++ b/appserver/tests/tck/faces/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.tests.tck</groupId>
         <artifactId>tck</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>6.2.4-SNAPSHOT</version>
     </parent>
 
     <artifactId>glassfish-external-tck-faces</artifactId>
@@ -192,7 +192,7 @@
                                 <tck-setting key="impl.vi.deploy.dir" value="${webServerHome}/domains/domain1/autodeploy"/>
                                 <tck-setting key="impl.deploy.timeout.multiplier" value="960"/>
                                 
-                                <tck-setting key="jsf.classes" value="${webServerHome}/modules/cdi-api.jar;${webServerHome}/modules/jakarta.servlet.jsp.jstl-api.jar;${webServerHome}/modules/jakarta.inject.jar;${webServerHome}/modules/jakarta.faces.jar;${webServerHome}/modules/jakarta.servlet.jsp-api.jar;${webServerHome}/modules/jakarta.servlet-api.jar;${webServerHome}/modules/jakarta.el.jar"/>
+                                <tck-setting key="jsf.classes" value="${webServerHome}/modules/cdi-api.jar;${webServerHome}/modules/jakarta.servlet.jsp.jstl-api.jar;${webServerHome}/modules/jakarta.inject.jar;${webServerHome}/modules/jakarta.faces.jar;${webServerHome}/modules/jakarta.servlet.jsp-api.jar;${webServerHome}/modules/jakarta.servlet-api.jar;${webServerHome}/modules/expressly.jar"/>
 
                                 <limit maxwait="60">
                                     <exec executable="${glassfish.asadmin}" dir="${glassfish.home}/glassfish/bin">
diff --git a/appserver/tests/tck/pom.xml b/appserver/tests/tck/pom.xml
index 9d5c53f..65db0f2 100644
--- a/appserver/tests/tck/pom.xml
+++ b/appserver/tests/tck/pom.xml
@@ -23,12 +23,13 @@
     <parent>
         <groupId>org.glassfish.main.tests</groupId>
         <artifactId>tests</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.main.tests.tck</groupId>
     <artifactId>tck</artifactId>
     <packaging>pom</packaging>
+
     <name>TCK: Parent</name>
 
     <modules>
diff --git a/appserver/tests/tck/rest/pom.xml b/appserver/tests/tck/rest/pom.xml
index 4622e02..9952b2d 100644
--- a/appserver/tests/tck/rest/pom.xml
+++ b/appserver/tests/tck/rest/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.tests.tck</groupId>
         <artifactId>tck</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>6.2.4-SNAPSHOT</version>
     </parent>
 
     <artifactId>glassfish-external-tck-rest</artifactId>
@@ -186,7 +186,7 @@
                                 
                                 <tck-setting key="jaxrs_impl_name" value="jersey"/>
                                 
-                                <tck-setting key="jaxrs_impl.classes" value="${web.home}/modules/jakarta.json.jar:${web.home}/modules/jakarta.json.bind-api.jar:${web.home}/modules/jakarta.json.jar:${web.home}/modules/jsonp-jaxrs.jar:${web.home}/modules/jersey-client.jar:${web.home}/modules/jersey-common.jar:${web.home}/modules/jersey-server.jar:${web.home}/modules/jersey-container-servlet.jar:${web.home}/modules/jersey-container-servlet-core.jar:${web.home}/modules/jersey-media-jaxb.jar:${web.home}/modules/jersey-media-sse.jar:${web.home}/modules/jersey-hk2.jar:${web.home}/modules/osgi-resource-locator.jar:${web.home}/modules/jakarta.inject-api.jar:${web.home}/modules/guava.jar:${web.home}/modules/hk2-api.jar:${web.home}/modules/hk2-locator.jar:${web.home}/modules/hk2-utils.jar:${web.home}/modules/javassist.jar:${web.home}/modules/cglib.jar:${web.home}/modules/jakarta.annotation-api.jar:${web.home}/modules/jakarta.xml.bind-api.jar:${web.home}/modules/jakarta.activation.jar"/>
+                                <tck-setting key="jaxrs_impl.classes" value="${web.home}/modules/parsson.jar:${web.home}/modules/jakarta.json.bind-api.jar:${web.home}/modules/parrson.jar:${web.home}/modules/jsonp-jaxrs.jar:${web.home}/modules/jersey-client.jar:${web.home}/modules/jersey-common.jar:${web.home}/modules/jersey-server.jar:${web.home}/modules/jersey-container-servlet.jar:${web.home}/modules/jersey-container-servlet-core.jar:${web.home}/modules/jersey-media-jaxb.jar:${web.home}/modules/jersey-media-sse.jar:${web.home}/modules/jersey-hk2.jar:${web.home}/modules/osgi-resource-locator.jar:${web.home}/modules/jakarta.inject-api.jar:${web.home}/modules/guava.jar:${web.home}/modules/hk2-api.jar:${web.home}/modules/hk2-locator.jar:${web.home}/modules/hk2-utils.jar:${web.home}/modules/javassist.jar:${web.home}/modules/cglib.jar:${web.home}/modules/jakarta.annotation-api.jar:${web.home}/modules/jakarta.xml.bind-api.jar:${web.home}/modules/jakarta.activation.jar"/>
                                 <tck-setting key="jaxrs_impl_lib" value="${web.home}/modules/jersey-container-servlet-core.jar"/>
                                 <tck-setting key="jaxrs.classes" value="${web.home}/modules/jakarta.ws.rs-api.jar"/>
                                 <tck-setting key="servlet_adaptor" value="org/glassfish/jersey/servlet/ServletContainer.class"/>
diff --git a/appserver/tests/tck/tck-download/jakarta-authentication-tck/pom.xml b/appserver/tests/tck/tck-download/jakarta-authentication-tck/pom.xml
index a9a8cb5..3de3af2 100644
--- a/appserver/tests/tck/tck-download/jakarta-authentication-tck/pom.xml
+++ b/appserver/tests/tck/tck-download/jakarta-authentication-tck/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.main.tests.tck</groupId>
         <artifactId>tck-download</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>6.2.4-SNAPSHOT</version>
     </parent>
 
     <artifactId>jakarta-authentication-tck</artifactId>
diff --git a/appserver/tests/tck/tck-download/jakarta-authorization-tck/pom.xml b/appserver/tests/tck/tck-download/jakarta-authorization-tck/pom.xml
index e78bcc8..4306e11 100644
--- a/appserver/tests/tck/tck-download/jakarta-authorization-tck/pom.xml
+++ b/appserver/tests/tck/tck-download/jakarta-authorization-tck/pom.xml
@@ -16,19 +16,18 @@
     SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
+
     <parent>
         <groupId>org.glassfish.main.tests.tck</groupId>
         <artifactId>tck-download</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>jakarta-authorization-tck</artifactId>
     <packaging>pom</packaging>
+
     <name>TCK: Install Jakarta Authorization TCK</name>
 
     <properties>
@@ -77,5 +76,4 @@
             </plugin>
         </plugins>
     </build>
-
 </project>
diff --git a/appserver/tests/tck/tck-download/jakarta-faces-tck/pom.xml b/appserver/tests/tck/tck-download/jakarta-faces-tck/pom.xml
index b5598cb..f59e677 100644
--- a/appserver/tests/tck/tck-download/jakarta-faces-tck/pom.xml
+++ b/appserver/tests/tck/tck-download/jakarta-faces-tck/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.main.tests.tck</groupId>
         <artifactId>tck-download</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>6.2.4-SNAPSHOT</version>
     </parent>
 
     <artifactId>jakarta-faces-tck</artifactId>
diff --git a/appserver/tests/tck/tck-download/jakarta-rest-tck/pom.xml b/appserver/tests/tck/tck-download/jakarta-rest-tck/pom.xml
index 448dc66..1318673 100644
--- a/appserver/tests/tck/tck-download/jakarta-rest-tck/pom.xml
+++ b/appserver/tests/tck/tck-download/jakarta-rest-tck/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.main.tests.tck</groupId>
         <artifactId>tck-download</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>6.2.4-SNAPSHOT</version>
     </parent>
 
     <artifactId>jakarta-rest-tck</artifactId>
diff --git a/appserver/tests/tck/tck-download/javatest/pom.xml b/appserver/tests/tck/tck-download/javatest/pom.xml
index a6acd02..9c19d8d 100644
--- a/appserver/tests/tck/tck-download/javatest/pom.xml
+++ b/appserver/tests/tck/tck-download/javatest/pom.xml
@@ -16,19 +16,18 @@
     SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
+
     <parent>
         <groupId>org.glassfish.main.tests.tck</groupId>
         <artifactId>tck-download</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>javatest</artifactId>
     <packaging>pom</packaging>
+
     <name>TCK: Install Jakarta Authorization`s javatest</name>
 
     <properties>
diff --git a/appserver/tests/tck/tck-download/pom.xml b/appserver/tests/tck/tck-download/pom.xml
index aca7fa1..c698bec 100644
--- a/appserver/tests/tck/tck-download/pom.xml
+++ b/appserver/tests/tck/tck-download/pom.xml
@@ -17,19 +17,18 @@
 
 -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
+
     <parent>
         <groupId>org.glassfish.main.tests.tck</groupId>
         <artifactId>tck</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>tck-download</artifactId>
     <packaging>pom</packaging>
+
     <name>TCK: Download and Install Dependencies not in Maven Repos</name>
 
     <modules>
diff --git a/appserver/tests/tck/tck-download/tsharness/pom.xml b/appserver/tests/tck/tck-download/tsharness/pom.xml
index 893da8f..055731b 100644
--- a/appserver/tests/tck/tck-download/tsharness/pom.xml
+++ b/appserver/tests/tck/tck-download/tsharness/pom.xml
@@ -16,19 +16,18 @@
     SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
+
     <parent>
         <groupId>org.glassfish.main.tests.tck</groupId>
         <artifactId>tck-download</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>tsharness</artifactId>
     <packaging>pom</packaging>
+
     <name>TCK: Install Jakarta Authorization`s tsharness</name>
 
     <dependencies>
diff --git a/appserver/tests/v2-tests/appserv-tests/config/emma.xml b/appserver/tests/v2-tests/appserv-tests/config/emma.xml
index 2f643fe..7c90a5a 100644
--- a/appserver/tests/v2-tests/appserv-tests/config/emma.xml
+++ b/appserver/tests/v2-tests/appserv-tests/config/emma.xml
@@ -179,7 +179,7 @@
     <!-- restore original EJB jar files -->
     <unzip src="${glassfish-zip-file}" dest="${tmp.gf.exploded.dir}"/>
     <copy todir="${glassfish.server.dir}/modules" overwrite="true">
-      <fileset dir="${tmp.gf.exploded.dir}/glassfish6/glassfish/modules/">
+      <fileset dir="${tmp.gf.exploded.dir}/glassfish7/glassfish/modules/">
         <include name="**/*.jar"/>
       </fileset>
     </copy>
diff --git a/appserver/tests/v2-tests/appserv-tests/devtests/appserv-commons/com/sun/enterprise/config/domain.orig.xml b/appserver/tests/v2-tests/appserv-tests/devtests/appserv-commons/com/sun/enterprise/config/domain.orig.xml
index 6799dfa..7dcd9e3 100755
--- a/appserver/tests/v2-tests/appserv-tests/devtests/appserv-commons/com/sun/enterprise/config/domain.orig.xml
+++ b/appserver/tests/v2-tests/appserv-tests/devtests/appserv-commons/com/sun/enterprise/config/domain.orig.xml
@@ -126,7 +126,7 @@
       <monitoring-service>
         <module-monitoring-levels thread-pool="OFF" orb="OFF" ejb-container="OFF" web-container="OFF" transaction-service="OFF" http-service="OFF" jdbc-connection-pool="OFF" connector-connection-pool="OFF" connector-service="OFF" jvm="OFF" jms-service="OFF"/>
       </monitoring-service>
-      <java-config java-home="${com.sun.aas.javaRoot}" debug-enabled="false" debug-options="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044" rmic-options="-iiop -poa -alwaysgenerate -keepgenerated -g" javac-options="-g" server-classpath="${com.sun.aas.javaRoot}/lib/tools.jar${path.separator}${com.sun.aas.installRoot}/lib/install/applications/jmsra/imqjmsra.jar${path.separator}${com.sun.aas.imqLib}/jaxm-api.jar${path.separator}${com.sun.aas.imqLib}/fscontext.jar${path.separator}${com.sun.aas.installRoot}/lib/ant/lib/ant.jar${path.separator}${com.sun.aas.hadbRoot}/lib/hadbjdbc4.jar${path.separator}/usr/lib/audit/Audit.jar${path.separator}${com.sun.aas.jdmkHome}/lib/jdmkrt.jar" classpath-suffix="${com.sun.aas.installRoot}/pointbase/lib/pbclient.jar${path.separator}${com.sun.aas.installRoot}/pointbase/lib/pbembedded.jar" env-classpath-ignored="true">
+      <java-config java-home="${com.sun.aas.javaRoot}" debug-enabled="false" debug-options="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044" rmic-options="-iiop -poa -alwaysgenerate -keepgenerated -g" javac-options="-g" server-classpath="${com.sun.aas.javaRoot}/lib/tools.jar${path.separator}${com.sun.aas.installRoot}/lib/install/applications/jmsra/imqjmsra.jar${path.separator}${com.sun.aas.imqLib}/fscontext.jar${path.separator}${com.sun.aas.installRoot}/lib/ant/lib/ant.jar${path.separator}${com.sun.aas.hadbRoot}/lib/hadbjdbc4.jar${path.separator}/usr/lib/audit/Audit.jar${path.separator}${com.sun.aas.jdmkHome}/lib/jdmkrt.jar" classpath-suffix="${com.sun.aas.installRoot}/pointbase/lib/pbclient.jar${path.separator}${com.sun.aas.installRoot}/pointbase/lib/pbembedded.jar" env-classpath-ignored="true">
         <!-- various required jvm-options -->
         <jvm-options>-client</jvm-options>
         <jvm-options>-Dcom.sun.enterprise.web.connector.useCoyoteConnector=true</jvm-options>
@@ -229,7 +229,7 @@
       <monitoring-service>
         <module-monitoring-levels thread-pool="OFF" orb="OFF" ejb-container="OFF" web-container="OFF" transaction-service="OFF" http-service="OFF" jdbc-connection-pool="OFF" connector-connection-pool="OFF"/>
       </monitoring-service>
-      <java-config java-home="${com.sun.aas.javaRoot}" debug-enabled="false" debug-options="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044" rmic-options="-iiop -poa -alwaysgenerate -keepgenerated -g" javac-options="-g" server-classpath="${com.sun.aas.javaRoot}/lib/tools.jar${path.separator}${com.sun.aas.installRoot}/lib/install/applications/jmsra/imqjmsra.jar${path.separator}${com.sun.aas.imqLib}/jaxm-api.jar${path.separator}${com.sun.aas.imqLib}/fscontext.jar${path.separator}${com.sun.aas.installRoot}/lib/ant/lib/ant.jar${path.separator}${com.sun.aas.hadbRoot}/lib/hadbjdbc4.jar${path.separator}/usr/lib/audit/Audit.jar${path.separator}${com.sun.aas.jdmkHome}/lib/jdmkrt.jar" classpath-suffix="${com.sun.aas.installRoot}/pointbase/lib/pbclient.jar${path.separator}${com.sun.aas.installRoot}/pointbase/lib/pbembedded.jar" env-classpath-ignored="true">
+      <java-config java-home="${com.sun.aas.javaRoot}" debug-enabled="false" debug-options="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044" rmic-options="-iiop -poa -alwaysgenerate -keepgenerated -g" javac-options="-g" server-classpath="${com.sun.aas.javaRoot}/lib/tools.jar${path.separator}${com.sun.aas.installRoot}/lib/install/applications/jmsra/imqjmsra.jar${path.separator}${com.sun.aas.imqLib}/fscontext.jar${path.separator}${com.sun.aas.installRoot}/lib/ant/lib/ant.jar${path.separator}${com.sun.aas.hadbRoot}/lib/hadbjdbc4.jar${path.separator}/usr/lib/audit/Audit.jar${path.separator}${com.sun.aas.jdmkHome}/lib/jdmkrt.jar" classpath-suffix="${com.sun.aas.installRoot}/pointbase/lib/pbclient.jar${path.separator}${com.sun.aas.installRoot}/pointbase/lib/pbembedded.jar" env-classpath-ignored="true">
         <!-- various required jvm-options -->
         <jvm-options>-client</jvm-options>
         <jvm-options>-Djava.security.policy=${com.sun.aas.instanceRoot}/config/server.policy</jvm-options>
diff --git a/appserver/tests/v2-tests/appserv-tests/devtests/hk2/README b/appserver/tests/v2-tests/appserv-tests/devtests/hk2/README
index 0994072..ff2526c 100644
--- a/appserver/tests/v2-tests/appserv-tests/devtests/hk2/README
+++ b/appserver/tests/v2-tests/appserv-tests/devtests/hk2/README
@@ -12,7 +12,7 @@
 1. Set the following variables:
 
 APS_HOME to the location of where v2/appserv-tests are checked out
-S1AS_HOME to <GlassFish install location>/glassfish6/glassfish
+S1AS_HOME to <GlassFish install location>/glassfish7/glassfish
 
 2. Make sure ant is in your path.  
 
diff --git a/appserver/transaction/internal-api/pom.xml b/appserver/transaction/internal-api/pom.xml
index a256cc8..3c71d2f 100644
--- a/appserver/transaction/internal-api/pom.xml
+++ b/appserver/transaction/internal-api/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.transaction</groupId>
         <artifactId>transaction</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/transaction/jta/pom.xml b/appserver/transaction/jta/pom.xml
index ec01c19..7a3f99a 100644
--- a/appserver/transaction/jta/pom.xml
+++ b/appserver/transaction/jta/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.transaction</groupId>
         <artifactId>transaction</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/transaction/jts/pom.xml b/appserver/transaction/jts/pom.xml
index a3d19fb..696645e 100644
--- a/appserver/transaction/jts/pom.xml
+++ b/appserver/transaction/jts/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.main.transaction</groupId>
         <artifactId>transaction</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>jts</artifactId>
diff --git a/appserver/transaction/pom.xml b/appserver/transaction/pom.xml
index c5207eb..8821ac0 100644
--- a/appserver/transaction/pom.xml
+++ b/appserver/transaction/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/web/admin/pom.xml b/appserver/web/admin/pom.xml
index dd78a2c..c718ef7 100644
--- a/appserver/web/admin/pom.xml
+++ b/appserver/web/admin/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.web</groupId>
         <artifactId>web</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/web/cdi-api-fragment/pom.xml b/appserver/web/cdi-api-fragment/pom.xml
index fbd6e98..dff3a22 100644
--- a/appserver/web/cdi-api-fragment/pom.xml
+++ b/appserver/web/cdi-api-fragment/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.web</groupId>
         <artifactId>web</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/web/gf-web-connector/pom.xml b/appserver/web/gf-web-connector/pom.xml
index f3347b7..0b9891a 100755
--- a/appserver/web/gf-web-connector/pom.xml
+++ b/appserver/web/gf-web-connector/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.web</groupId>
         <artifactId>web</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/web/gf-weld-connector/pom.xml b/appserver/web/gf-weld-connector/pom.xml
index 5973d1c..5ceb9b3 100644
--- a/appserver/web/gf-weld-connector/pom.xml
+++ b/appserver/web/gf-weld-connector/pom.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
+    Copyright (c) 2021 Contributors to Eclipse Foundation.
     Copyright (c) 2011, 2021 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
@@ -23,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.main.web</groupId>
         <artifactId>web</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
@@ -53,5 +54,10 @@
             <artifactId>jakarta.enterprise.cdi-api</artifactId>
             <optional>true</optional>
         </dependency>
+        <dependency>
+            <groupId>jakarta.enterprise</groupId>
+            <artifactId>jakarta.enterprise.lang-model</artifactId>
+            <optional>true</optional>
+        </dependency>
     </dependencies>
 </project>
diff --git a/appserver/web/gui-plugin-common/pom.xml b/appserver/web/gui-plugin-common/pom.xml
index ce5f82c..39b8104 100755
--- a/appserver/web/gui-plugin-common/pom.xml
+++ b/appserver/web/gui-plugin-common/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.web</groupId>
         <artifactId>web</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/web/jersey-ejb-component-provider/pom.xml b/appserver/web/jersey-ejb-component-provider/pom.xml
index 6d6320f..2444650 100644
--- a/appserver/web/jersey-ejb-component-provider/pom.xml
+++ b/appserver/web/jersey-ejb-component-provider/pom.xml
@@ -17,17 +17,18 @@
 
 -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
         <groupId>org.glassfish.main.web</groupId>
         <artifactId>web</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>jersey-ejb-component-provider</artifactId>
     <packaging>glassfish-jar</packaging>
+
     <name>Jersey EJB Component Provider Module</name>
 
     <dependencies>
diff --git a/appserver/web/jersey-mvc-connector/pom.xml b/appserver/web/jersey-mvc-connector/pom.xml
index 33e0699..87048b4 100644
--- a/appserver/web/jersey-mvc-connector/pom.xml
+++ b/appserver/web/jersey-mvc-connector/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.web</groupId>
         <artifactId>web</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/web/jsf-connector/pom.xml b/appserver/web/jsf-connector/pom.xml
index 1f92404..e552c83 100644
--- a/appserver/web/jsf-connector/pom.xml
+++ b/appserver/web/jsf-connector/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.web</groupId>
         <artifactId>web</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/web/jspcaching-connector/pom.xml b/appserver/web/jspcaching-connector/pom.xml
index 57c4ff5..dd3194c 100644
--- a/appserver/web/jspcaching-connector/pom.xml
+++ b/appserver/web/jspcaching-connector/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.web</groupId>
         <artifactId>web</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/web/jstl-connector/pom.xml b/appserver/web/jstl-connector/pom.xml
index ce38a98..4eb671c 100644
--- a/appserver/web/jstl-connector/pom.xml
+++ b/appserver/web/jstl-connector/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.web</groupId>
         <artifactId>web</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/web/pom.xml b/appserver/web/pom.xml
index b609230..08c7de1 100755
--- a/appserver/web/pom.xml
+++ b/appserver/web/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/web/war-util/pom.xml b/appserver/web/war-util/pom.xml
index 8f06edd..051195c 100755
--- a/appserver/web/war-util/pom.xml
+++ b/appserver/web/war-util/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.web</groupId>
         <artifactId>web</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
@@ -64,8 +64,8 @@
             <artifactId>jakarta.el-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.glassfish</groupId>
-            <artifactId>jakarta.el</artifactId>
+            <groupId>org.glassfish.expressly</groupId>
+            <artifactId>expressly</artifactId>
         </dependency>
         <dependency>
             <groupId>jakarta.servlet</groupId>
diff --git a/appserver/web/war-util/src/main/java/org/glassfish/web/loader/WebappClassLoader.java b/appserver/web/war-util/src/main/java/org/glassfish/web/loader/WebappClassLoader.java
index 4829ac1..755fc66 100644
--- a/appserver/web/war-util/src/main/java/org/glassfish/web/loader/WebappClassLoader.java
+++ b/appserver/web/war-util/src/main/java/org/glassfish/web/loader/WebappClassLoader.java
@@ -76,12 +76,12 @@
  * the delegation model recommended in the specification. The system class
  * loader will be queried first, then the local repositories, and only then
  * delegation to the parent class loader will occur. This allows the web
- * application to override any shared class except the classes from J2SE.
+ * application to override any shared class except the classes from Java SE.
  * Special handling is provided from the JAXP XML parser interfaces, the JNDI
  * interfaces, and the classes from the servlet API, which are never loaded
  * from the webapp repository.
  * <p>
- * <strong>IMPLEMENTATION NOTE</strong> - Due to limitations in Jasper
+ * <strong>IMPLEMENTATION NOTE</strong> - Due to limitations in WaSP
  * compilation technology, any repository which contains classes from
  * the servlet API will be ignored by the class loader.
  * <p>
@@ -194,7 +194,7 @@
     protected URL[] repositoryURLs = null;
 
     /**
-     * Repositories translated as path in the work directory (for Jasper
+     * Repositories translated as path in the work directory (for WaSP
      * originally), but which is used to generate fake URLs should getURLs be
      * called.
      */
@@ -2400,7 +2400,7 @@
      * class loader or any class loader where this loader is a parent class
      * loader. Whilst {@link ResourceBundle#clearCache()} could be used there
      * are complications around the
-     * {@link org.apache.jasper.servlet.JasperLoader} that mean a reflection
+     * {@link org.glassfish.wasp.servlet.WaspLoader} that mean a reflection
      * based approach is more likely to be complete.
      *
      * The ResourceBundle is using WeakReferences so it shouldn't be pinning the
diff --git a/appserver/web/war-util/src/main/java/org/glassfish/web/util/IntrospectionUtils.java b/appserver/web/war-util/src/main/java/org/glassfish/web/util/IntrospectionUtils.java
index 4b08f47..0f64c93 100644
--- a/appserver/web/war-util/src/main/java/org/glassfish/web/util/IntrospectionUtils.java
+++ b/appserver/web/war-util/src/main/java/org/glassfish/web/util/IntrospectionUtils.java
@@ -240,8 +240,8 @@
     /**
      * Adds classpath entries from a vector of URL's to the "tc_path_add" System
      * property. This System property lists the classpath entries common to web
-     * applications. This System property is currently used by Jasper when its
-     * JSP servlet compiles the Java file for a JSP.
+     * applications. This System property is currently used by WaSP when its
+     * Jakarta Pages servlet compiles the Java file for a Jakarta Page.
      */
     public static String classPathAdd(URL urls[], String cp) {
         if (urls == null)
diff --git a/appserver/web/web-core/pom.xml b/appserver/web/web-core/pom.xml
index f3773d1..4aaaa55 100755
--- a/appserver/web/web-core/pom.xml
+++ b/appserver/web/web-core/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.web</groupId>
         <artifactId>web</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/web/web-core/src/main/java/org/apache/catalina/HttpResponse.java b/appserver/web/web-core/src/main/java/org/apache/catalina/HttpResponse.java
index 04be9d8..6b72908 100644
--- a/appserver/web/web-core/src/main/java/org/apache/catalina/HttpResponse.java
+++ b/appserver/web/web-core/src/main/java/org/apache/catalina/HttpResponse.java
@@ -94,6 +94,13 @@
      */
     public void reset(int status, String message);
 
+    /**
+     * Alternative to sendError that doesn't suspend the response and doesn't reset the buffer.
+     * @param status
+     * @param message
+     */
+    public void setError(int status, String message);
+
 
     /**
      * Send an acknowledgment of a request.   An acknowledgment in this
diff --git a/appserver/web/web-core/src/main/java/org/apache/catalina/connector/Request.java b/appserver/web/web-core/src/main/java/org/apache/catalina/connector/Request.java
index 6f766ea..bdabcac 100644
--- a/appserver/web/web-core/src/main/java/org/apache/catalina/connector/Request.java
+++ b/appserver/web/web-core/src/main/java/org/apache/catalina/connector/Request.java
@@ -45,6 +45,7 @@
 import jakarta.servlet.DispatcherType;
 import jakarta.servlet.FilterChain;
 import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.ServletConnection;
 import jakarta.servlet.ServletContext;
 import jakarta.servlet.ServletException;
 import jakarta.servlet.ServletInputStream;
@@ -1019,6 +1020,7 @@
      * Return an Iterator containing the String names of all notes bindings
      * that exist for this request.
      */
+    @Override
     public Iterator<String> getNoteNames() {
         return notes.keySet().iterator();
     }
@@ -1472,27 +1474,6 @@
     }
 
     /**
-     * Return the real path of the specified virtual path.
-     *
-     * @param path Path to be translated
-     *
-     * @deprecated As of version 2.1 of the Java Servlet API, use
-     *  <code>ServletContext.getRealPath()</code>.
-     */
-    @Override
-    public String getRealPath(String path) {
-        if (servletContext == null) {
-            return null;
-        } else {
-            try {
-                return servletContext.getRealPath(path);
-            } catch (IllegalArgumentException e) {
-                return null;
-            }
-        }
-    }
-
-    /**
      * Return the remote IP address making this Request.
      */
     @Override
@@ -2018,7 +1999,7 @@
                             @Override
                             public Boolean run() {
                                 try {
-                                    return Boolean.valueOf(realm.invokeAuthenticateDelegate(req, (HttpResponse) getResponse(), context, (AuthenticatorBase) authBase, true));
+                                    return Boolean.valueOf(realm.invokeAuthenticateDelegate(req, (HttpResponse) getResponse(), context, authBase, true));
                                 } catch (IOException ex) {
                                     throw new RuntimeException("Exception thrown while attempting to authenticate", ex);
                                 }
@@ -2026,7 +2007,7 @@
                         });
                         return ret.booleanValue();
                     } else {
-                        return realm.invokeAuthenticateDelegate(req, (HttpResponse) getResponse(), context, (AuthenticatorBase) authBase, true);
+                        return realm.invokeAuthenticateDelegate(req, (HttpResponse) getResponse(), context, authBase, true);
                     }
 
                 } catch (Exception ex) {
@@ -2774,18 +2755,6 @@
     }
 
     /**
-     * Return <code>true</code> if the session identifier included in this
-     * request came from the request URI.
-     *
-     * @deprecated As of Version 2.1 of the Java Servlet API, use
-     *  <code>isRequestedSessionIdFromURL()</code> instead.
-     */
-    @Override
-    public boolean isRequestedSessionIdFromUrl() {
-        return isRequestedSessionIdFromURL();
-    }
-
-    /**
      * Marks (or unmarks) this request as having a JSESSIONID cookie
      * that is marked as secure
      *
@@ -4531,6 +4500,24 @@
             context.getManager().isSessionVersioningSupported();
     }
 
+    @Override
+    public String getRequestId() {
+        // TODO Implement!
+        return null;
+    }
+
+    @Override
+    public String getProtocolRequestId() {
+        // TODO Implement!
+        return null;
+    }
+
+    @Override
+    public ServletConnection getServletConnection() {
+        // TODO Implement!
+        return null;
+    }
+
     /**
      * This class will be invoked by Grizzly when a suspended operation is
      * resumed {@link org.glassfish.grizzly.http.server.Response#resume} or has timed out.
diff --git a/appserver/web/web-core/src/main/java/org/apache/catalina/connector/RequestFacade.java b/appserver/web/web-core/src/main/java/org/apache/catalina/connector/RequestFacade.java
index 56201ce..57a2a19 100644
--- a/appserver/web/web-core/src/main/java/org/apache/catalina/connector/RequestFacade.java
+++ b/appserver/web/web-core/src/main/java/org/apache/catalina/connector/RequestFacade.java
@@ -60,6 +60,7 @@
     private final class GetAttributePrivilegedAction
             implements PrivilegedAction<Enumeration<String>> {
 
+        @Override
         public Enumeration<String> run() {
             return request.getAttributeNames();
         }
@@ -69,6 +70,7 @@
     private final class GetParameterMapPrivilegedAction
             implements PrivilegedAction<Map<String, String[]>> {
 
+        @Override
         public Map<String, String[]> run() {
             return request.getParameterMap();
         }
@@ -84,6 +86,7 @@
             this.path = path;
         }
 
+        @Override
         public RequestDispatcher run() {
             return request.getRequestDispatcher(path);
         }
@@ -99,6 +102,7 @@
             this.name = name;
         }
 
+        @Override
         public String run() {
             return request.getParameter(name);
         }
@@ -108,6 +112,7 @@
     private final class GetParameterNamesPrivilegedAction
             implements PrivilegedAction<Enumeration<String>> {
 
+        @Override
         public Enumeration<String> run() {
             return request.getParameterNames();
         }
@@ -123,6 +128,7 @@
             this.name = name;
         }
 
+        @Override
         public String[] run() {
             return request.getParameterValues(name);
         }
@@ -132,6 +138,7 @@
     private final class GetCookiesPrivilegedAction
             implements PrivilegedAction<Cookie[]> {
 
+        @Override
         public Cookie[] run() {
             return request.getCookies();
         }
@@ -141,6 +148,7 @@
     private final class GetCharacterEncodingPrivilegedAction
             implements PrivilegedAction<String> {
 
+        @Override
         public String run() {
             return request.getCharacterEncoding();
         }
@@ -156,6 +164,7 @@
             this.name = name;
         }
 
+        @Override
         public Enumeration<String> run() {
             return request.getHeaders(name);
         }
@@ -165,6 +174,7 @@
     private final class GetHeaderNamesPrivilegedAction
             implements PrivilegedAction<Enumeration<String>> {
 
+        @Override
         public Enumeration<String> run() {
             return request.getHeaderNames();
         }
@@ -174,6 +184,7 @@
     private final class GetLocalePrivilegedAction
             implements PrivilegedAction<Locale> {
 
+        @Override
         public Locale run() {
             return request.getLocale();
         }
@@ -183,6 +194,7 @@
     private final class GetLocalesPrivilegedAction
             implements PrivilegedAction<Enumeration<Locale>> {
 
+        @Override
         public Enumeration<Locale> run() {
             return request.getLocales();
         }
@@ -197,6 +209,7 @@
             this.create = create;
         }
 
+        @Override
         public HttpSession run() {
             return request.getSession(create);
         }
@@ -205,6 +218,7 @@
     private final class ChangeSessionIdPrivilegedAction
             implements PrivilegedAction<String> {
 
+        @Override
         public String run() {
             return request.changeSessionId();
         }
@@ -276,6 +290,7 @@
     /**
     * Prevent cloning the facade.
     */
+    @Override
     protected Object clone()
         throws CloneNotSupportedException {
         throw new CloneNotSupportedException();
@@ -392,6 +407,7 @@
         return request.getInputStream();
     }
 
+    @Override
     public HttpServletMapping getHttpServletMapping() {
 
         if (request == null) {
@@ -401,6 +417,7 @@
         return request.getHttpServletMapping();
     }
 
+    @Override
     public String getParameter(String name) {
 
         if (request == null) {
@@ -447,7 +464,7 @@
             ret = AccessController.doPrivileged(
                 new GetParameterValuePrivilegedAction(name));
             if (ret != null) {
-                ret = (String[]) ret.clone();
+                ret = ret.clone();
             }
         } else {
             ret = request.getParameterValues(name);
@@ -617,16 +634,6 @@
     }
 
     @Override
-    public String getRealPath(String path) {
-
-        if (request == null) {
-            throw new IllegalStateException(rb.getString(LogFacade.CANNOT_USE_REQUEST_OBJECT_OUTSIDE_SCOPE_EXCEPTION));
-        }
-
-        return request.getRealPath(path);
-    }
-
-    @Override
     public String getAuthType() {
 
         if (request == null) {
@@ -653,7 +660,7 @@
             ret = AccessController.doPrivileged(
                 new GetCookiesPrivilegedAction());
             if (ret != null) {
-                ret = (Cookie[]) ret.clone();
+                ret = ret.clone();
             }
         } else {
             ret = request.getCookies();
@@ -950,16 +957,6 @@
     }
 
     @Override
-    public boolean isRequestedSessionIdFromUrl() {
-
-        if (request == null) {
-            throw new IllegalStateException(rb.getString(LogFacade.CANNOT_USE_REQUEST_OBJECT_OUTSIDE_SCOPE_EXCEPTION));
-        }
-
-        return request.isRequestedSessionIdFromURL();
-    }
-
-    @Override
     public String getLocalAddr() {
 
         if (request == null) {
@@ -1144,4 +1141,25 @@
         return request;
     }
     //END S1AS 4703023
+
+
+    @Override
+    public String getRequestId() {
+        // TODO Implement!
+        return null;
+    }
+
+
+    @Override
+    public String getProtocolRequestId() {
+        // // TODO Implement!
+        return null;
+    }
+
+
+    @Override
+    public ServletConnection getServletConnection() {
+        // // TODO Implement!
+        return null;
+    }
 }
diff --git a/appserver/web/web-core/src/main/java/org/apache/catalina/connector/Response.java b/appserver/web/web-core/src/main/java/org/apache/catalina/connector/Response.java
index 69438aa..02203d8 100644
--- a/appserver/web/web-core/src/main/java/org/apache/catalina/connector/Response.java
+++ b/appserver/web/web-core/src/main/java/org/apache/catalina/connector/Response.java
@@ -1548,6 +1548,10 @@
         setStatus(status, null);
     }
 
+    public void setError(int status, String message) {
+        setStatus(status, message);
+    }
+
 
     /**
      * Set the HTTP status and message to be returned with this response.
@@ -1555,12 +1559,8 @@
      * @param status The new HTTP status
      * @param message The associated text message
      *
-     * @deprecated As of Version 2.1 of the Java Servlet API, this method
-     *  has been deprecated due to the ambiguous meaning of the message
-     *  parameter.
      */
-    public void setStatus(int status, String message) {
-
+    private void setStatus(int status, String message) {
         if (isCommitted())
             return;
 
diff --git a/appserver/web/web-core/src/main/java/org/apache/catalina/connector/ResponseFacade.java b/appserver/web/web-core/src/main/java/org/apache/catalina/connector/ResponseFacade.java
index af4d091..29001be 100644
--- a/appserver/web/web-core/src/main/java/org/apache/catalina/connector/ResponseFacade.java
+++ b/appserver/web/web-core/src/main/java/org/apache/catalina/connector/ResponseFacade.java
@@ -273,6 +273,7 @@
                 AccessController.doPrivileged(
                         new PrivilegedExceptionAction<Void>(){
 
+                    @Override
                     public Void run() throws IOException{
                         response.setAppCommitted(true);
 
@@ -407,28 +408,6 @@
     }
 
     @Override
-    public String encodeUrl(String url) {
-
-        // Disallow operation if the object has gone out of scope
-        if (response == null) {
-            throw new IllegalStateException(rb.getString(LogFacade.NULL_RESPONSE_OBJECT));
-        }
-
-        return response.encodeURL(url);
-    }
-
-    @Override
-    public String encodeRedirectUrl(String url) {
-
-        // Disallow operation if the object has gone out of scope
-        if (response == null) {
-            throw new IllegalStateException(rb.getString(LogFacade.NULL_RESPONSE_OBJECT));
-        }
-
-        return response.encodeRedirectURL(url);
-    }
-
-    @Override
     public void sendError(int sc, String msg) throws IOException {
 
         // Disallow operation if the object has gone out of scope
@@ -578,20 +557,6 @@
     }
 
     @Override
-    public void setStatus(int sc, String msg) {
-
-        // Disallow operation if the object has gone out of scope
-        if (response == null) {
-            throw new IllegalStateException(rb.getString(LogFacade.NULL_RESPONSE_OBJECT));
-        }
-
-        if (isCommitted())
-            return;
-
-        response.setStatus(sc, msg);
-    }
-
-    @Override
     public String getContentType() {
 
         // Disallow operation if the object has gone out of scope
diff --git a/appserver/web/web-core/src/main/java/org/apache/catalina/core/ApplicationContext.java b/appserver/web/web-core/src/main/java/org/apache/catalina/core/ApplicationContext.java
index 961f720..4eb84a1 100644
--- a/appserver/web/web-core/src/main/java/org/apache/catalina/core/ApplicationContext.java
+++ b/appserver/web/web-core/src/main/java/org/apache/catalina/core/ApplicationContext.java
@@ -17,23 +17,45 @@
 
 package org.apache.catalina.core;
 
-import org.apache.catalina.*;
-import org.apache.catalina.deploy.ApplicationParameter;
-import org.apache.catalina.util.Enumerator;
-import org.apache.catalina.util.ServerInfo;
-
-import javax.naming.directory.DirContext;
-import jakarta.servlet.*;
-import jakarta.servlet.descriptor.JspConfigDescriptor;
 import java.io.InputStream;
 import java.net.MalformedURLException;
 import java.net.URL;
-import java.util.*;
-import java.util.concurrent.ConcurrentMap;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.EventListener;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.ResourceBundle;
+import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
+import javax.naming.directory.DirContext;
+
+import org.apache.catalina.ContainerEvent;
+import org.apache.catalina.Globals;
+import org.apache.catalina.LogFacade;
+import org.apache.catalina.util.Enumerator;
+import org.apache.catalina.util.ServerInfo;
+
+import jakarta.servlet.Filter;
+import jakarta.servlet.FilterRegistration;
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.Servlet;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletContextAttributeEvent;
+import jakarta.servlet.ServletContextAttributeListener;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRegistration;
+import jakarta.servlet.SessionCookieConfig;
+import jakarta.servlet.SessionTrackingMode;
+import jakarta.servlet.descriptor.JspConfigDescriptor;
+
 
 /**
  * Standard implementation of <code>ServletContext</code> that represents
@@ -379,14 +401,6 @@
     }
 
     /**
-     * @deprecated As of Java Servlet API 2.1, with no direct replacement.
-     */
-    @Override
-    public Servlet getServlet(String name) {
-        return (null);
-    }
-
-    /**
      * Return the display name of this web application.
      */
     @Override
@@ -395,22 +409,6 @@
     }
 
     /**
-     * @deprecated As of Java Servlet API 2.1, with no direct replacement.
-     */
-    @Override
-    public Enumeration<String> getServletNames() {
-        return (new Enumerator<String>(emptyString));
-    }
-
-    /**
-     * @deprecated As of Java Servlet API 2.1, with no direct replacement.
-     */
-    @Override
-    public Enumeration<Servlet> getServlets() {
-        return (new Enumerator<Servlet>(emptyServlet));
-    }
-
-    /**
      * Writes the specified message to a servlet log file.
      *
      * @param message Message to be written
@@ -421,20 +419,6 @@
     }
 
     /**
-     * Writes the specified exception and message to a servlet log file.
-     *
-     * @param exception Exception to be reported
-     * @param message Message to be written
-     *
-     * @deprecated As of Java Servlet API 2.1, use
-     *  <code>log(String, Throwable)</code> instead
-     */
-    @Override
-    public void log(Exception exception, String message) {
-        context.log(exception, message);
-    }
-
-    /**
      * Writes the specified message and exception to a servlet log file.
      *
      * @param message Message to be written
diff --git a/appserver/web/web-core/src/main/java/org/apache/catalina/core/ApplicationContextFacade.java b/appserver/web/web-core/src/main/java/org/apache/catalina/core/ApplicationContextFacade.java
index 19a430f..b15e120 100644
--- a/appserver/web/web-core/src/main/java/org/apache/catalina/core/ApplicationContextFacade.java
+++ b/appserver/web/web-core/src/main/java/org/apache/catalina/core/ApplicationContextFacade.java
@@ -262,60 +262,6 @@
         }
     }
 
-
-    /**
-     * @deprecated As of Java Servlet API 2.1, with no direct replacement.
-     */
-    @Override
-    @Deprecated
-    public Servlet getServlet(String name)
-        throws ServletException {
-        if (SecurityUtil.isPackageProtectionEnabled()) {
-            try {
-                return (Servlet) invokeMethod(context, "getServlet",
-                                              new Object[]{name});
-            } catch (Throwable t) {
-                if (t instanceof ServletException) {
-                    throw (ServletException) t;
-                }
-                return null;
-            }
-        } else {
-            return context.getServlet(name);
-        }
-    }
-
-
-    /**
-     * @deprecated As of Java Servlet API 2.1, with no direct replacement.
-     */
-    @Override
-    @SuppressWarnings("unchecked") // doPrivileged() returns the correct type
-    @Deprecated
-    public Enumeration<Servlet> getServlets() {
-        if (SecurityUtil.isPackageProtectionEnabled()) {
-            return (Enumeration<Servlet>) doPrivileged("getServlets", null);
-        } else {
-            return context.getServlets();
-        }
-    }
-
-
-    /**
-     * @deprecated As of Java Servlet API 2.1, with no direct replacement.
-     */
-    @Override
-    @SuppressWarnings("unchecked") // doPrivileged() returns the correct type
-    @Deprecated
-    public Enumeration<String> getServletNames() {
-        if (SecurityUtil.isPackageProtectionEnabled()) {
-            return (Enumeration<String>) doPrivileged("getServletNames", null);
-        } else {
-            return context.getServletNames();
-        }
-   }
-
-
     @Override
     public void log(String msg) {
         if (SecurityUtil.isPackageProtectionEnabled()) {
@@ -325,23 +271,6 @@
         }
     }
 
-
-    /**
-     * @deprecated As of Java Servlet API 2.1, use
-     *  <code>log(String, Throwable)</code> instead
-     */
-    @Override
-    @Deprecated
-    public void log(Exception exception, String msg) {
-        if (SecurityUtil.isPackageProtectionEnabled()) {
-            doPrivileged("log", new Class[]{Exception.class, String.class},
-                         new Object[]{exception,msg});
-        } else {
-            context.log(exception, msg);
-        }
-    }
-
-
     @Override
     public void log(String message, Throwable throwable) {
         if (SecurityUtil.isPackageProtectionEnabled()) {
@@ -1024,6 +953,7 @@
 
         if (Globals.IS_SECURITY_ENABLED){
            return AccessController.doPrivileged(new PrivilegedExceptionAction<Object>(){
+                @Override
                 public Object run() throws IllegalAccessException, InvocationTargetException{
                     return method.invoke(context,  params);
                 }
diff --git a/appserver/web/web-core/src/main/java/org/apache/catalina/core/ApplicationDispatcherForward.java b/appserver/web/web-core/src/main/java/org/apache/catalina/core/ApplicationDispatcherForward.java
index 55a9229..30f5aa0 100644
--- a/appserver/web/web-core/src/main/java/org/apache/catalina/core/ApplicationDispatcherForward.java
+++ b/appserver/web/web-core/src/main/java/org/apache/catalina/core/ApplicationDispatcherForward.java
@@ -269,7 +269,7 @@
         String message = errorPage.getReason();
         if (message != null && !response.isCommitted()) {
             response.reset();
-            response.setStatus(statusCode, message);
+            response.sendError(statusCode, message);
         }
 
         try {
diff --git a/appserver/web/web-core/src/main/java/org/apache/catalina/core/ApplicationHttpResponse.java b/appserver/web/web-core/src/main/java/org/apache/catalina/core/ApplicationHttpResponse.java
index dcd4e59..55ecb55 100644
--- a/appserver/web/web-core/src/main/java/org/apache/catalina/core/ApplicationHttpResponse.java
+++ b/appserver/web/web-core/src/main/java/org/apache/catalina/core/ApplicationHttpResponse.java
@@ -106,6 +106,7 @@
      * @exception IllegalStateException if the response has already
      *  been committed
      */
+    @Override
     public void reset() {
 
         // If already committed, the wrapped response will throw ISE
@@ -120,6 +121,7 @@
      *
      * @param len The new content length
      */
+    @Override
     public void setContentLength(int len) {
 
         if (!included)
@@ -133,6 +135,7 @@
      *
      * @param type The new content type
      */
+    @Override
     public void setContentType(String type) {
 
         if (!included)
@@ -146,6 +149,7 @@
      *
      * @param loc The new locale
      */
+    @Override
     public void setLocale(Locale loc) {
 
         if (!included)
@@ -159,6 +163,7 @@
      *
      * @param size The buffer size
      */
+    @Override
     public void setBufferSize(int size) {
         if (!included)
             getResponse().setBufferSize(size);
@@ -173,6 +178,7 @@
      *
      * @param cookie The new cookie
      */
+    @Override
     public void addCookie(Cookie cookie) {
 
         if (!included)
@@ -187,6 +193,7 @@
      * @param name The new header name
      * @param value The new header value
      */
+    @Override
     public void addDateHeader(String name, long value) {
 
         if (!included)
@@ -201,6 +208,7 @@
      * @param name The new header name
      * @param value The new header value
      */
+    @Override
     public void addHeader(String name, String value) {
 
         if (!included)
@@ -215,6 +223,7 @@
      * @param name The new header name
      * @param value The new header value
      */
+    @Override
     public void addIntHeader(String name, int value) {
 
         if (!included)
@@ -230,6 +239,7 @@
      *
      * @exception IOException if an input/output error occurs
      */
+    @Override
     public void sendError(int sc) throws IOException {
 
         if (!included)
@@ -246,6 +256,7 @@
      *
      * @exception IOException if an input/output error occurs
      */
+    @Override
     public void sendError(int sc, String msg) throws IOException {
 
         if (!included)
@@ -261,6 +272,7 @@
      *
      * @exception IOException if an input/output error occurs
      */
+    @Override
     public void sendRedirect(String location) throws IOException {
 
         if (!included)
@@ -275,6 +287,7 @@
      * @param name The new header name
      * @param value The new header value
      */
+    @Override
     public void setDateHeader(String name, long value) {
 
         if (!included)
@@ -289,6 +302,7 @@
      * @param name The new header name
      * @param value The new header value
      */
+    @Override
     public void setHeader(String name, String value) {
 
         if (!included)
@@ -303,6 +317,7 @@
      * @param name The new header name
      * @param value The new header value
      */
+    @Override
     public void setIntHeader(String name, int value) {
 
         if (!included)
@@ -316,6 +331,7 @@
      *
      * @param sc The new status code
      */
+    @Override
     public void setStatus(int sc) {
 
         if (!included)
@@ -324,20 +340,6 @@
     }
 
 
-    /**
-     * Disallow <code>setStatus()</code> calls on an included response.
-     *
-     * @param sc The new status code
-     * @param msg The new message
-     */
-    public void setStatus(int sc, String msg) {
-
-        if (!included)
-            ((HttpServletResponse) getResponse()).setStatus(sc, msg);
-
-    }
-
-
     // -------------------------------------------------------- Package Methods
 
 
diff --git a/appserver/web/web-core/src/main/java/org/apache/catalina/core/Constants.java b/appserver/web/web-core/src/main/java/org/apache/catalina/core/Constants.java
index cb967fb..7567299 100644
--- a/appserver/web/web-core/src/main/java/org/apache/catalina/core/Constants.java
+++ b/appserver/web/web-core/src/main/java/org/apache/catalina/core/Constants.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 1997-2018 Oracle and/or its affiliates. All rights reserved.
  * Copyright 2004 The Apache Software Foundation
  *
@@ -25,7 +26,7 @@
     public static final int MINOR_VERSION = 0;
 
     public static final String JSP_SERVLET_CLASS =
-        "org.apache.jasper.servlet.JspServlet";
+        "org.glassfish.wasp.servlet.JspServlet";
 
     public static final String JSP_SERVLET_NAME = "jsp";
 
diff --git a/appserver/web/web-core/src/main/java/org/apache/catalina/core/DummyRequest.java b/appserver/web/web-core/src/main/java/org/apache/catalina/core/DummyRequest.java
index b89c343..b32c885 100644
--- a/appserver/web/web-core/src/main/java/org/apache/catalina/core/DummyRequest.java
+++ b/appserver/web/web-core/src/main/java/org/apache/catalina/core/DummyRequest.java
@@ -34,6 +34,7 @@
 import jakarta.servlet.DispatcherType;
 import jakarta.servlet.FilterChain;
 import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.ServletConnection;
 import jakarta.servlet.ServletContext;
 import jakarta.servlet.ServletException;
 import jakarta.servlet.ServletInputStream;
@@ -85,217 +86,343 @@
     // END PWC 4707989
 
     private static Enumeration<String> dummyEnum = new Enumeration<String>(){
+        @Override
         public boolean hasMoreElements(){
             return false;
         }
+        @Override
         public String nextElement(){
             return null;
         }
     };
 
+    @Override
     public String getContextPath() {
         return null;
     }
 
+    @Override
     public ServletRequest getRequest() {
         return this;
     }
 
+    @Override
     public ServletRequest getRequest(boolean maskDefaultContextMapping) {
         return getRequest();
     }
 
+    @Override
     public String getDecodedRequestURI() {
         return null;
     }
 
+    @Override
     public FilterChain getFilterChain() {
         return filterChain;
     }
 
+    @Override
     public void setFilterChain(FilterChain filterChain) {
         this.filterChain = filterChain;
     }
 
+    @Override
     public String getQueryString() {
         return queryString;
     }
 
+    @Override
     public void setQueryString(String query) {
         queryString = query;
     }
 
+    @Override
     public String getPathInfo() {
         return pathInfo;
     }
 
+    @Override
     public void setPathInfo(String path) {
         pathInfo = path;
     }
 
+    @Override
     public DataChunk getRequestPathMB() {
         return null;
     }
 
+    @Override
     public String getServletPath() {
         return servletPath;
     }
 
+    @Override
     public void setServletPath(String path) {
         servletPath = path;
     }
 
+    @Override
     public Wrapper getWrapper() {
         return wrapper;
     }
 
+    @Override
     public void setWrapper(Wrapper wrapper) {
         this.wrapper = wrapper;
     }
 
     // START PWC 4707989
+    @Override
     public void setMethod(String method) {
         this.method = method;
     }
 
+    @Override
     public String getMethod() {
         return method;
     }
     // END PWC 4707989
 
+    @Override
     public String getAuthorization() { return null; }
+    @Override
     public Connector getConnector() { return null; }
+    @Override
     public void setConnector(Connector connector) {}
+    @Override
     public Context getContext() { return null; }
+    @Override
     public void setContext(Context context) {}
+    @Override
     public Host getHost() { return null; }
+    @Override
     public void setHost(Host host) {}
+    @Override
     public String getInfo() { return null; }
+    @Override
     public Response getResponse() { return null; }
+    @Override
     public void setResponse(Response response) {}
+    @Override
     public Socket getSocket() { return null; }
+    @Override
     public void setSocket(Socket socket) {}
+    @Override
     public InputStream getStream() { return null; }
+    @Override
     public void setStream(InputStream input) {}
+    @Override
     public void addLocale(Locale locale) {}
+    @Override
     public ServletInputStream createInputStream() throws IOException {
         return null;
     }
+    @Override
     public void finishRequest() throws IOException {}
+    @Override
     public Object getNote(String name) { return null; }
+    @Override
     public Iterator<String> getNoteNames() { return null; }
+    @Override
     public void removeNote(String name) {}
+    @Override
     public void setContentType(String type) {}
+    @Override
     public void setNote(String name, Object value) {}
+    @Override
     public void setProtocol(String protocol) {}
+    @Override
     public void setRemoteAddr(String remoteAddr) {}
     public void setRemoteHost(String remoteHost) {}
+    @Override
     public void setServerName(String name) {}
+    @Override
     public void setServerPort(int port) {}
+    @Override
     public Object getAttribute(String name) { return null; }
+    @Override
     public Enumeration<String> getAttributeNames() { return null; }
+    @Override
     public String getCharacterEncoding() { return null; }
+    @Override
     public int getContentLength() { return -1; }
+    @Override
     public long getContentLengthLong() { return -1L; }
+    @Override
     public void setContentLength(int length) {}
+    @Override
     public String getContentType() { return null; }
+    @Override
     public ServletInputStream getInputStream() throws IOException {
         return null;
     }
+    @Override
     public Locale getLocale() { return null; }
+    @Override
     public Enumeration<Locale> getLocales() { return null; }
+    @Override
     public String getProtocol() { return null; }
+    @Override
     public BufferedReader getReader() throws IOException { return null; }
     public String getRealPath(String path) { return null; }
+    @Override
     public String getRemoteAddr() { return null; }
+    @Override
     public String getRemoteHost() { return null; }
+    @Override
     public String getScheme() { return null; }
+    @Override
     public String getServerName() { return null; }
+    @Override
     public int getServerPort() { return -1; }
+    @Override
     public boolean isSecure() { return false; }
+    @Override
     public void removeAttribute(String name) {}
+    @Override
     public void setAttribute(String name, Object value) {}
+    @Override
     public void setCharacterEncoding(String enc)
         throws UnsupportedEncodingException {}
+    @Override
     public void addCookie(Cookie cookie) {}
+    @Override
     public void addHeader(String name, String value) {}
+    @Override
     public void addParameter(String name, String values[]) {}
+    @Override
     public void clearCookies() {}
+    @Override
     public void clearHeaders() {}
+    @Override
     public void clearLocales() {}
+    @Override
     public void clearParameters() {}
+    @Override
     public void replayPayload(byte[] payloadByteArray) {}
+    @Override
     public void recycle() {}
+    @Override
     public void setAuthType(String authType) {}
     /* START PWC 4707989
     public void setMethod(String method) {}
     */
+    @Override
     public void setRequestedSessionCookie(boolean flag) {}
+    @Override
     public void setRequestedSessionId(String id) {}
+    @Override
     public void setRequestedSessionURL(boolean flag) {}
+    @Override
     public void setRequestURI(String uri) {}
+    @Override
     public void setSecure(boolean secure) {}
+    @Override
     public void setUserPrincipal(Principal principal) {}
+    @Override
     public String getParameter(String name) { return null; }
+    @Override
     public Map<String, String[]> getParameterMap() { return null; }
+    @Override
     public Enumeration<String> getParameterNames() { return dummyEnum; }
+    @Override
     public String[] getParameterValues(String name) { return null; }
+    @Override
     public RequestDispatcher getRequestDispatcher(String path) {
         return null;
     }
+    @Override
     public String getAuthType() { return null; }
+    @Override
     public Cookie[] getCookies() { return null; }
+    @Override
     public long getDateHeader(String name) { return -1; }
+    @Override
     public String getHeader(String name) { return null; }
+    @Override
     public Enumeration<String> getHeaders(String name) { return null; }
+    @Override
     public Enumeration<String> getHeaderNames() { return null; }
+    @Override
     public int getIntHeader(String name) { return -1; }
     /* START PWC 4707989
     public String getMethod() { return null; }
     */
+    @Override
     public String getPathTranslated() { return null; }
+    @Override
     public String getRemoteUser() { return null; }
+    @Override
     public String getRequestedSessionId() { return null; }
+    @Override
     public String getRequestURI() { return null; }
+    @Override
     public StringBuffer getRequestURL() { return null; }
+    @Override
     public HttpSession getSession() { return null; }
+    @Override
     public HttpSession getSession(boolean create) { return null; }
+    @Override
     public Session getSessionInternal(boolean create) { return null; }
+    @Override
     public String changeSessionId() { return null; }
+    @Override
     public boolean isRequestedSessionIdFromCookie() { return false; }
+    @Override
     public boolean isRequestedSessionIdFromURL() { return false; }
     public boolean isRequestedSessionIdFromUrl() { return false; }
+    @Override
     public boolean isRequestedSessionIdValid() { return false; }
+    @Override
     public void setRequestedSessionCookiePath(String cookiePath) {}
+    @Override
     public boolean isUserInRole(String role) { return false; }
+    @Override
     public Principal getUserPrincipal() { return null; }
+    @Override
     public String getLocalAddr() { return null; }
+    @Override
     public String getLocalName() { return null; }
+    @Override
     public int getLocalPort() { return -1; }
+    @Override
     public int getRemotePort() { return -1; }
+    @Override
     public DispatcherType getDispatcherType() { return null; }
+    @Override
     public AsyncContext startAsync() throws IllegalStateException { return null; }
+    @Override
     public AsyncContext startAsync(ServletRequest servletRequest,
                                    ServletResponse servletResponse)
             throws IllegalStateException { return null; }
+    @Override
     public boolean isAsyncStarted() { return false; }
+    @Override
     public boolean isAsyncSupported() { return false; }
     public void setAsyncTimeout(long timeout) {}
     public long getAsyncTimeout() { return -1; }
+    @Override
     public AsyncContext getAsyncContext() { return null; }
     public void addAsyncListener(AsyncListener listener) {};
     public void addAsyncListener(AsyncListener listener,
                                  ServletRequest servletRequest,
                                  ServletResponse servletResponse) {}
     public boolean isSetAsyncTimeoutCalled() { return false; }
+    @Override
     public void disableAsyncSupport() {}
+    @Override
     public Collection<Part> getParts() {return null;}
+    @Override
     public Part getPart(String name) {return null;}
+    @Override
     public boolean authenticate(HttpServletResponse response)
         throws IOException, ServletException { return false; }
+    @Override
     public void login(String username, String password)
         throws ServletException {}
+    @Override
     public void logout() throws ServletException {}
+    @Override
     public <T extends HttpUpgradeHandler> T upgrade(Class<T> handlerClass) { return null; }
 
     // START CR 6415120
@@ -303,6 +430,7 @@
      * Set whether or not access to resources under WEB-INF or META-INF
      * needs to be checked.
      */
+    @Override
     public void setCheckRestrictedResources(boolean check) {
         checkRestrictedResources = check;
     }
@@ -311,6 +439,7 @@
      * Return whether or not access to resources under WEB-INF or META-INF
      * needs to be checked.
      */
+    @Override
     public boolean getCheckRestrictedResources() {
         return checkRestrictedResources;
     }
@@ -325,6 +454,7 @@
      * @return The jroute id of this request, or null if this request does not
      * carry any jroute id
      */
+    @Override
     public String getJrouteId() {
         return null;
     }
@@ -334,6 +464,7 @@
      * This object does not implement a session ID generator. Provide
      * a dummy implementation so that the default one will be used.
      */
+    @Override
     public String generateSessionId() {
         return null;
     }
@@ -345,15 +476,36 @@
      * @return the servlet context to which this servlet request was last
      * dispatched
      */
+    @Override
     public ServletContext getServletContext() {
         return null;
     }
 
+    @Override
     public Session lockSession() {
         return null;
     }
 
+    @Override
     public void unlockSession() {}
 
+    @Override
+    public String getRequestId() {
+        // TODO IMPLEMENT!
+        return null;
+    }
+
+    @Override
+    public String getProtocolRequestId() {
+        // TODO IMPLEMENT!
+        return null;
+    }
+
+    @Override
+    public ServletConnection getServletConnection() {
+        // TODO IMPLEMENT!
+        return null;
+    }
+
 }
 
diff --git a/appserver/web/web-core/src/main/java/org/apache/catalina/core/DummyResponse.java b/appserver/web/web-core/src/main/java/org/apache/catalina/core/DummyResponse.java
index c85aeef..1266e06 100644
--- a/appserver/web/web-core/src/main/java/org/apache/catalina/core/DummyResponse.java
+++ b/appserver/web/web-core/src/main/java/org/apache/catalina/core/DummyResponse.java
@@ -117,6 +117,7 @@
     public void sendAcknowledgement() throws IOException {}
     public void sendError(int status) throws IOException {}
     public void sendError(int status, String message) throws IOException {}
+    public void setError(int status, String message) {}
     public void sendRedirect(String location) throws IOException {}
     public void setDateHeader(String name, long value) {}
     public void setHeader(String name, String value) {}
diff --git a/appserver/web/web-core/src/main/java/org/apache/catalina/core/SessionCookieConfigImpl.java b/appserver/web/web-core/src/main/java/org/apache/catalina/core/SessionCookieConfigImpl.java
index 7076715..2636e5b 100644
--- a/appserver/web/web-core/src/main/java/org/apache/catalina/core/SessionCookieConfigImpl.java
+++ b/appserver/web/web-core/src/main/java/org/apache/catalina/core/SessionCookieConfigImpl.java
@@ -20,6 +20,7 @@
 import org.apache.catalina.LogFacade;
 
 import java.text.MessageFormat;
+import java.util.Map;
 import java.util.ResourceBundle;
 import java.util.logging.Logger;
 import jakarta.servlet.SessionCookieConfig;
@@ -57,6 +58,7 @@
      * from which this <tt>SessionCookieConfig</tt> was acquired has
      * already been initialized
      */
+    @Override
     public void setName(String name) {
         if (ctx.isContextInitializedCalled()) {
             String msg = MessageFormat.format(rb.getString(LogFacade.SESSION_COOKIE_CONFIG_ALREADY_INIT),
@@ -73,6 +75,7 @@
      * @return the cookie name set via {@link #setName}, or
      * <tt>JSESSIONID</tt> if {@link #setName} was never called
      */
+    @Override
     public String getName() {
         return name;
     }
@@ -85,6 +88,7 @@
      * from which this <tt>SessionCookieConfig</tt> was acquired has
      * already been initialized
      */
+    @Override
     public void setDomain(String domain) {
         if (ctx.isContextInitializedCalled()) {
             String msg = MessageFormat.format(rb.getString(LogFacade.SESSION_COOKIE_CONFIG_ALREADY_INIT),
@@ -100,6 +104,7 @@
      * @return the cookie domain set via {@link #setDomain}, or
      * <tt>null</tt> if {@link #setDomain} was never called
      */
+    @Override
     public String getDomain() {
         return domain;
     }
@@ -112,6 +117,7 @@
      * from which this <tt>SessionCookieConfig</tt> was acquired has
      * already been initialized
      */
+    @Override
     public void setPath(String path) {
         if (ctx.isContextInitializedCalled()) {
             String msg = MessageFormat.format(rb.getString(LogFacade.SESSION_COOKIE_CONFIG_ALREADY_INIT),
@@ -129,6 +135,7 @@
      * <tt>SessionCookieConfig</tt> was acquired if {@link #setPath}
      * was never called
      */
+    @Override
     public String getPath() {
         return path;
     }
@@ -141,6 +148,7 @@
      * from which this <tt>SessionCookieConfig</tt> was acquired has
      * already been initialized
      */
+    @Override
     public void setComment(String comment) {
         if (ctx.isContextInitializedCalled()) {
             String msg = MessageFormat.format(rb.getString(LogFacade.SESSION_COOKIE_CONFIG_ALREADY_INIT),
@@ -156,6 +164,7 @@
      * @return the cookie comment set via {@link #setComment}, or
      * <tt>null</tt> if {@link #setComment} was never called
      */
+    @Override
     public String getComment() {
         return comment;
     }
@@ -171,6 +180,7 @@
      * from which this <tt>SessionCookieConfig</tt> was acquired has
      * already been initialized
      */
+    @Override
     public void setHttpOnly(boolean httpOnly) {
         if (ctx.isContextInitializedCalled()) {
             String msg = MessageFormat.format(rb.getString(LogFacade.SESSION_COOKIE_CONFIG_ALREADY_INIT),
@@ -187,6 +197,7 @@
      * <tt>ServletContext</tt> from which this <tt>SessionCookieConfig</tt>
      * was acquired will be marked as <i>HttpOnly</i>, false otherwise
      */
+    @Override
     public boolean isHttpOnly() {
         return httpOnly;
     }
@@ -205,6 +216,7 @@
      * from which this <tt>SessionCookieConfig</tt> was acquired has
      * already been initialized
      */
+    @Override
     public void setSecure(boolean secure) {
         if (ctx.isContextInitializedCalled()) {
             String msg = MessageFormat.format(rb.getString(LogFacade.SESSION_COOKIE_CONFIG_ALREADY_INIT),
@@ -225,11 +237,13 @@
      * only if the request that initiated the corresponding session was
      * also secure
      */
+    @Override
     public boolean isSecure() {
         return secure;
     }
 
 
+    @Override
     public void setMaxAge(int maxAge) {
         if (ctx.isContextInitializedCalled()) {
             String msg = MessageFormat.format(rb.getString(LogFacade.SESSION_COOKIE_CONFIG_ALREADY_INIT),
@@ -241,8 +255,30 @@
     }
 
 
+    @Override
     public int getMaxAge() {
         return maxAge;
     }
 
+
+    @Override
+    public void setAttribute(String name, String value) {
+        // TODO IMPLEMENT!
+
+    }
+
+
+    @Override
+    public String getAttribute(String name) {
+        // TODO IMPLEMENT!
+        return null;
+    }
+
+
+    @Override
+    public Map<String, String> getAttributes() {
+        // TODO IMPLEMENT!
+        return null;
+    }
+
 }
diff --git a/appserver/web/web-core/src/main/java/org/apache/catalina/core/StandardContext.java b/appserver/web/web-core/src/main/java/org/apache/catalina/core/StandardContext.java
index 66f26cd..0270c74 100644
--- a/appserver/web/web-core/src/main/java/org/apache/catalina/core/StandardContext.java
+++ b/appserver/web/web-core/src/main/java/org/apache/catalina/core/StandardContext.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 1997-2018 Oracle and/or its affiliates. All rights reserved.
  * Copyright 2004 The Apache Software Foundation
  *
@@ -54,6 +55,12 @@
 import jakarta.servlet.http.HttpSessionIdListener;
 import jakarta.servlet.http.HttpSessionListener;
 import jakarta.servlet.http.HttpUpgradeHandler;
+
+import static java.util.logging.Level.SEVERE;
+import static org.apache.catalina.Globals.FACES_INITIALIZER;
+import static org.glassfish.web.loader.ServletContainerInitializerUtil.getInitializerList;
+import static org.glassfish.web.loader.ServletContainerInitializerUtil.getInterestList;
+
 import java.io.*;
 import java.net.MalformedURLException;
 import java.net.URLDecoder;
@@ -727,6 +734,7 @@
 
     // ----------------------------------------------------- Context Properties
 
+    @Override
     public String getEncodedPath() {
         return encodedPath;
     }
@@ -1646,6 +1654,7 @@
     /**
      * Returns the value of the securePagesWithPragma property.
      */
+    @Override
     public boolean isSecurePagesWithPragma() {
         return securePagesWithPragma;
     }
@@ -2069,6 +2078,7 @@
      *
      * @param listener the fully qualified class name of the Listener
      */
+    @Override
     public void addApplicationListener(String listener) {
         addListener(listener, false);
     }
@@ -2078,6 +2088,7 @@
      *
      * @param parameter The new application parameter
      */
+    @Override
     public void addApplicationParameter(ApplicationParameter parameter) {
         String newName = parameter.getName();
         Iterator<ApplicationParameter> i =
@@ -2266,6 +2277,7 @@
      *
      * @param ejb New EJB resource reference
      */
+    @Override
     public void addEjb(ContextEjb ejb) {
         namingResources.addEjb(ejb);
         if (notifyContainerListeners) {
@@ -2278,6 +2290,7 @@
      *
      * @param environment New environment entry
      */
+    @Override
     public void addEnvironment(ContextEnvironment environment) {
 
         ContextEnvironment env = findEnvironment(environment.getName());
@@ -2357,6 +2370,7 @@
      *
      * @param filterDef The filter definition to be added
      */
+    @Override
     public void addFilterDef(FilterDef filterDef) {
         addFilterDef(filterDef, false, true);
     }
@@ -2523,6 +2537,7 @@
      * Adds the filter with the given name and class name to this servlet
      * context.
      */
+    @Override
     public FilterRegistration.Dynamic addFilter(
             String filterName, String className) {
 
@@ -3166,6 +3181,7 @@
      * @param extension Filename extension being mapped
      * @param mimeType Corresponding MIME type
      */
+    @Override
     public void addMimeMapping(String extension, String mimeType) {
         mimeMappings.put(extension.toLowerCase(Locale.ENGLISH), mimeType);
         if (notifyContainerListeners) {
@@ -3183,6 +3199,7 @@
      *  or if this context initialization parameter has already been
      *  registered
      */
+    @Override
     public void addParameter(String name, String value) {
         // Validate the proposed context initialization parameter
         if ((name == null) || (value == null)) {
@@ -3210,6 +3227,7 @@
      *
      * @param resource New resource reference
      */
+    @Override
     public void addResource(ContextResource resource) {
         namingResources.addResource(resource);
         if (notifyContainerListeners) {
@@ -3224,6 +3242,7 @@
      * @param name The resource environment reference name
      * @param type The resource environment reference type
      */
+    @Override
     public void addResourceEnvRef(String name, String type) {
         namingResources.addResourceEnvRef(name, type);
         if (notifyContainerListeners) {
@@ -3236,6 +3255,7 @@
      *
      * @param resourceLink New resource link
      */
+    @Override
     public void addResourceLink(ContextResourceLink resourceLink) {
         namingResources.addResourceLink(resourceLink);
         if (notifyContainerListeners) {
@@ -3250,6 +3270,7 @@
      * @param role Security role used in the application
      * @param link Actual security role to check for
      */
+    @Override
     public void addRoleMapping(String role, String link) {
         synchronized (roleMappings) {
             roleMappings.put(role, link);
@@ -3264,6 +3285,7 @@
      *
      * @param role New security role
      */
+    @Override
     public void addSecurityRole(String role) {
         securityRoles.add(role);
         if (notifyContainerListeners) {
@@ -3587,11 +3609,6 @@
             throw new NullPointerException(rb.getString(LogFacade.NULL_SERVLET_INSTANCE_EXCEPTION));
         }
 
-        if (servlet instanceof SingleThreadModel) {
-            throw new IllegalArgumentException("Servlet implements " +
-                SingleThreadModel.class.getName());
-        }
-
         /*
          * Make sure the given Servlet instance is unique across all deployed
          * contexts
@@ -4498,6 +4515,7 @@
      *
      * @param name Name of the EJB resource reference to remove
      */
+    @Override
     public void removeEjb(String name) {
 
         namingResources.removeEjb(name);
@@ -5633,16 +5651,22 @@
     protected void callServletContainerInitializers()
             throws LifecycleException {
 
+        Iterator<ServletContainerInitializer> initIterator = servletContainerInitializers.iterator();
+
+        List<ServletContainerInitializer> loadedServletContainerInitializers = new ArrayList<>();
+        while (initIterator.hasNext()) {
+            try {
+                loadedServletContainerInitializers.add(initIterator.next());
+            } catch (ServiceConfigurationError e) {
+                log.log(SEVERE, "", e);
+            }
+        }
+
         // Get the list of ServletContainerInitializers and the classes
         // they are interested in
-        Map<Class<?>, List<Class<? extends ServletContainerInitializer>>> interestList =
-            ServletContainerInitializerUtil.getInterestList(
-                servletContainerInitializers);
-        Map<Class<? extends ServletContainerInitializer>, Set<Class<?>>> initializerList =
-            ServletContainerInitializerUtil.getInitializerList(
-                servletContainerInitializers, interestList,
-                getTypes(),
-                getClassLoader());
+        var interestList = getInterestList(loadedServletContainerInitializers);
+        var initializerList = getInitializerList(loadedServletContainerInitializers, interestList, getTypes(), getClassLoader());
+
         if (initializerList == null) {
             return;
         }
@@ -5655,12 +5679,10 @@
         // the condition. Time to call the initializers
         ServletContext ctxt = this.getServletContext();
         try {
-            for (Map.Entry<Class<? extends ServletContainerInitializer>, Set<Class<?>>> e :
-                    initializerList.entrySet()) {
+            for (var e : initializerList.entrySet()) {
                 Class<? extends ServletContainerInitializer> initializer = e.getKey();
                 // See IT 11333
-                if (isUseMyFaces() &&
-                        Globals.FACES_INITIALIZER.equals(initializer.getName())) {
+                if (isUseMyFaces() && FACES_INITIALIZER.equals(initializer.getName())) {
                     continue;
                 }
                 try {
@@ -5680,7 +5702,8 @@
                     String msg = MessageFormat.format(rb.getString(LogFacade.INVOKING_SERVLET_CONTAINER_INIT_EXCEPTION),
                                                       initializer.getCanonicalName());
                     log.log(Level.SEVERE, msg, t);
-                    throw new LifecycleException(t);
+                    // TMP until EE 10 support is ready
+                    // throw new LifecycleException(t);
                 }
             }
         } finally {
@@ -6842,6 +6865,7 @@
     /**
      * Returns the context path of the web application.
      */
+    @Override
     public String getContextPath() {
         return getPath();
     }
@@ -6850,6 +6874,7 @@
      * Return a <code>ServletContext</code> object that corresponds to a
      * specified URI on the server.
      */
+    @Override
     public ServletContext getContext(String uri) {
 
         // Validate the format of the specified argument
@@ -6894,6 +6919,7 @@
      * Return the value of the specified initialization parameter, or
      * <code>null</code> if this parameter does not exist.
      */
+    @Override
     public String getInitParameter(final String name) {
         return context.getInitParameter(name);
     }
@@ -6902,6 +6928,7 @@
      * Return the names of the context's initialization parameters, or an
      * empty enumeration if the context has no initialization parameters.
      */
+    @Override
     public Enumeration<String> getInitParameterNames() {
         return context.getInitParameterNames();
     }
@@ -6912,6 +6939,7 @@
      * if it was not set because this ServletContext already contains a
      * context initialization parameter with a matching name
      */
+    @Override
     public boolean setInitParameter(String name, String value) {
         if (isContextInitializedCalled) {
             String msg = MessageFormat.format(rb.getString(LogFacade.SERVLET_CONTEXT_ALREADY_INIT_EXCEPTION),
@@ -6924,6 +6952,7 @@
     /**
      * Return the major version of the Java Servlet API that we implement.
      */
+    @Override
     public int getMajorVersion() {
         return context.getMajorVersion();
     }
@@ -6931,6 +6960,7 @@
     /**
      * Return the minor version of the Java Servlet API that we implement.
      */
+    @Override
     public int getMinorVersion() {
         return context.getMinorVersion();
     }
@@ -6939,6 +6969,7 @@
      * Return the MIME type of the specified file, or <code>null</code> if
      * the MIME type cannot be determined.
      */
+    @Override
     public String getMimeType(String file) {
 
         if (file == null)
@@ -6957,6 +6988,7 @@
      * Return a <code>RequestDispatcher</code> object that acts as a
      * wrapper for the named servlet.
      */
+    @Override
     public RequestDispatcher getNamedDispatcher(String name) {
 
         // Validate the name argument
@@ -6975,6 +7007,7 @@
     /**
      * Return the display name of this web application.
      */
+    @Override
     public String getServletContextName() {
         return getDisplayName();
     }
@@ -6982,6 +7015,7 @@
     /**
      * Remove the context attribute with the specified name, if any.
      */
+    @Override
     public void removeAttribute(String name) {
         context.removeAttribute(name);
     }
@@ -6990,6 +7024,7 @@
      * Bind the specified value with the specified context attribute name,
      * replacing any existing value for that name.
      */
+    @Override
     public void setAttribute(String name, Object value) {
         context.setAttribute(name, value);
     }
@@ -6997,6 +7032,7 @@
     /**
      * Return the name and version of the servlet container.
      */
+    @Override
     public String getServerInfo() {
         return context.getServerInfo();
     }
@@ -7006,6 +7042,7 @@
      * <code>null</code> if the container was unable to perform the
      * translation
      */
+    @Override
     public String getRealPath(String path) {
         if (!(showArchivedRealPathEnabled || directoryDeployed)) {
             return null;
@@ -7056,6 +7093,7 @@
     /**
      * Writes the specified message to a servlet log file.
      */
+    @Override
     public void log(String message) {
         message= neutralizeForLog(message);
         org.apache.catalina.Logger logger = getLogger();
@@ -7082,6 +7120,7 @@
     /**
      * Writes the specified message and exception to a servlet log file.
      */
+    @Override
     public void log(String message, Throwable throwable) {
         message= neutralizeForLog(message);
         org.apache.catalina.Logger logger = getLogger();
@@ -7089,24 +7128,13 @@
             logger.log(logName() + message, throwable);
     }
 
-    public Servlet getServlet(String name) {
-        return context.getServlet(name);
-    }
-
-    public Enumeration<String> getServletNames() {
-        return context.getServletNames();
-    }
-
-    public Enumeration<Servlet> getServlets() {
-        return context.getServlets();
-    }
-
     /**
      * Return the requested resource as an <code>InputStream</code>.  The
      * path must be specified according to the rules described under
      * <code>getResource</code>.  If no such resource can be identified,
      * return <code>null</code>.
      */
+    @Override
     public InputStream getResourceAsStream(String path) {
 
         if (path == null || !path.startsWith("/"))
@@ -7149,6 +7177,7 @@
      * The path must begin with a "/" and is interpreted as relative to the
      * current context root.
      */
+    @Override
     public java.net.URL getResource(String path)
         throws MalformedURLException {
 
@@ -7219,6 +7248,7 @@
      * specified collection. Each path will be a String starting with
      * a "/" character. The returned set is immutable.
      */
+    @Override
     public Set<String> getResourcePaths(String path) {
         // Validate the path argument
         if (path == null) {
@@ -7300,6 +7330,7 @@
      * wrapper for the resource at the given path.  The path must begin
      * with a "/" and is interpreted as relative to the current context root.
      */
+    @Override
     public RequestDispatcher getRequestDispatcher(String path) {
 
         // Validate the path argument
@@ -7414,6 +7445,7 @@
      * parsing xml instances.
      * @param webXmlValidation true to enable xml instance validation
      */
+    @Override
     public void setXmlValidation(boolean webXmlValidation){
         this.webXmlValidation = webXmlValidation;
     }
@@ -7423,6 +7455,7 @@
      * @return true if validation is enabled.
      *
      */
+    @Override
     public boolean getXmlValidation(){
         return webXmlValidation;
     }
@@ -7431,6 +7464,7 @@
      * Get the server.xml <context> attribute's xmlNamespaceAware.
      * @return true if namespace awarenes is enabled.
      */
+    @Override
     public boolean getXmlNamespaceAware(){
         return webXmlNamespaceAware;
     }
@@ -7440,6 +7474,7 @@
      * parsing xml instances.
      * @param webXmlNamespaceAware true to enable namespace awareness
      */
+    @Override
     public void setXmlNamespaceAware(boolean webXmlNamespaceAware){
         this.webXmlNamespaceAware= webXmlNamespaceAware;
     }
@@ -7449,6 +7484,7 @@
      * parsing tlds files.
      * @param tldValidation true to enable xml instance validation
      */
+    @Override
     public void setTldValidation(boolean tldValidation){
         this.tldValidation = tldValidation;
     }
@@ -7458,6 +7494,7 @@
      * @return true if validation is enabled.
      *
      */
+    @Override
     public boolean getTldValidation(){
         return tldValidation;
     }
@@ -7466,6 +7503,7 @@
      * Get the server.xml <host> attribute's xmlNamespaceAware.
      * @return true if namespace awarenes is enabled.
      */
+    @Override
     public boolean getTldNamespaceAware(){
         return tldNamespaceAware;
     }
@@ -7475,6 +7513,7 @@
      * parsing xml instances.
      * @param tldNamespaceAware true to enable namespace awareness
      */
+    @Override
     public void setTldNamespaceAware(boolean tldNamespaceAware){
         this.tldNamespaceAware= tldNamespaceAware;
     }
@@ -7627,10 +7666,12 @@
             this.delegate = delegate;
         }
 
+        @Override
         public void contextInitialized(ServletContextEvent sce) {
             delegate.contextInitialized(sce);
         }
 
+        @Override
         public void contextDestroyed(ServletContextEvent sce) {
             delegate.contextDestroyed(sce);
         }
@@ -7757,6 +7798,7 @@
     private static class PrivilegedCreateSecurityManager
             implements PrivilegedAction<MySecurityManager> {
 
+        @Override
         public MySecurityManager run() {
             return new MySecurityManager();
         }
diff --git a/appserver/web/web-core/src/main/java/org/apache/catalina/core/StandardHostValve.java b/appserver/web/web-core/src/main/java/org/apache/catalina/core/StandardHostValve.java
index 7a884c2..414cff8 100644
--- a/appserver/web/web-core/src/main/java/org/apache/catalina/core/StandardHostValve.java
+++ b/appserver/web/web-core/src/main/java/org/apache/catalina/core/StandardHostValve.java
@@ -17,81 +17,91 @@
 
 package org.apache.catalina.core;
 
-import org.apache.catalina.*;
+import static jakarta.servlet.DispatcherType.ERROR;
+import static jakarta.servlet.RequestDispatcher.ERROR_MESSAGE;
+import static jakarta.servlet.RequestDispatcher.ERROR_REQUEST_URI;
+import static jakarta.servlet.RequestDispatcher.ERROR_SERVLET_NAME;
+import static jakarta.servlet.RequestDispatcher.ERROR_STATUS_CODE;
+import static jakarta.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR;
+import static java.util.Locale.ENGLISH;
+import static java.util.logging.Level.FINE;
+import static java.util.logging.Level.INFO;
+import static java.util.logging.Level.WARNING;
+import static org.apache.catalina.Globals.DISPATCHER_REQUEST_PATH_ATTR;
+import static org.apache.catalina.LogFacade.NO_CONTEXT_TO_PROCESS;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.ResourceBundle;
+import java.util.logging.Logger;
+
+import org.apache.catalina.Context;
+import org.apache.catalina.HttpRequest;
+import org.apache.catalina.HttpResponse;
+import org.apache.catalina.LogFacade;
+import org.apache.catalina.Request;
+import org.apache.catalina.Response;
+import org.apache.catalina.Wrapper;
 import org.apache.catalina.connector.ClientAbortException;
 import org.apache.catalina.deploy.ErrorPage;
 import org.apache.catalina.util.ResponseUtil;
 import org.apache.catalina.valves.ValveBase;
 import org.glassfish.web.valve.GlassFishValve;
 
-
-import jakarta.servlet.*;
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletOutputStream;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
-import java.io.*;
-import java.util.Locale;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import java.util.ResourceBundle;
-// END SJSAS 6374691
 
 /**
- * Valve that implements the default basic behavior for the
- * <code>StandardHost</code> container implementation.
+ * Valve that implements the default basic behavior for the <code>StandardHost</code> container implementation.
  * <p>
- * <b>USAGE CONSTRAINT</b>:  This implementation is likely to be useful only
- * when processing HTTP requests.
+ * <b>USAGE CONSTRAINT</b>: This implementation is likely to be useful only when processing HTTP requests.
  *
  * @author Craig R. McClanahan
  * @author Remy Maucherat
  * @version $Revision: 1.21 $ $Date: 2007/04/10 17:12:22 $
  */
 
-final class StandardHostValve
-    extends ValveBase {
+final class StandardHostValve extends ValveBase {
 
     private static final Logger log = LogFacade.getLogger();
     private static final ResourceBundle rb = log.getResourceBundle();
 
-    private static final ClassLoader standardHostValveClassLoader =
-        StandardHostValve.class.getClassLoader();
-
+    private static final ClassLoader standardHostValveClassLoader = StandardHostValve.class.getClassLoader();
 
     // ----------------------------------------------------- Instance Variables
 
-
     /**
      * The descriptive information related to this implementation.
      */
-    private static final String info =
-        "org.apache.catalina.core.StandardHostValve/1.0";
+    private static final String info = "org.apache.catalina.core.StandardHostValve/1.0";
 
-
-    // START SJSAS 6374691
     private GlassFishValve errorReportValve;
-    // END SJSAS 6374691
-
 
     // ------------------------------------------------------------- Properties
 
-
     /**
      * Return descriptive information about this Valve implementation.
      */
+    @Override
     public String getInfo() {
-
-        return (info);
-
+        return info;
     }
 
-
     // --------------------------------------------------------- Public Methods
 
-
     /**
-     * Select the appropriate child Context to process this request,
-     * based on the specified request URI.  If no matching Context can
-     * be found, return an appropriate HTTP error.
+     * Select the appropriate child Context to process this request, based on the specified request URI. If no matching
+     * Context can be found, return an appropriate HTTP error.
      *
      * @param request Request to be processed
      * @param response Response to be produced
@@ -100,17 +110,14 @@
      * @exception ServletException if a servlet error occurred
      */
     @Override
-    public int invoke(Request request, Response response)
-            throws IOException, ServletException {
-
+    public int invoke(Request request, Response response) throws IOException, ServletException {
         Context context = preInvoke(request, response);
         if (context == null) {
             return END_PIPELINE;
         }
 
         // Ask this Context to process this request
-        if (context.getPipeline().hasNonBasicValves() ||
-                context.hasCustomPipeline()) {
+        if (context.getPipeline().hasNonBasicValves() || context.hasCustomPipeline()) {
             context.getPipeline().invoke(request, response);
         } else {
             context.getPipeline().getBasic().invoke(request, response);
@@ -119,23 +126,18 @@
         return END_PIPELINE;
     }
 
-
     /**
      * Tomcat style invocation.
      */
     @Override
-    public void invoke(org.apache.catalina.connector.Request request,
-                       org.apache.catalina.connector.Response response)
-            throws IOException, ServletException {
-
+    public void invoke(org.apache.catalina.connector.Request request, org.apache.catalina.connector.Response response) throws IOException, ServletException {
         Context context = preInvoke(request, response);
         if (context == null) {
             return;
         }
 
         // Ask this Context to process this request
-        if (context.getPipeline().hasNonBasicValves() ||
-                context.hasCustomPipeline()) {
+        if (context.getPipeline().hasNonBasicValves() || context.hasCustomPipeline()) {
             context.getPipeline().invoke(request, response);
         } else {
             context.getPipeline().getBasic().invoke(request, response);
@@ -144,29 +146,16 @@
         postInvoke(request, response);
     }
 
-
     @Override
-    public void postInvoke(Request request, Response response)
-        // START SJSAS 6374691
-        throws IOException, ServletException
-        // END SJSAS 6374691
-    {
+    public void postInvoke(Request request, Response response) throws IOException, ServletException {
         try {
-            /*
-            // START SJSAS 6374990
-            if (((ServletResponse) response).isCommitted()) {
-                return;
-            }
-            // END SJSAS 6374990
-            */
 
             HttpServletRequest hreq = (HttpServletRequest) request.getRequest();
 
             // Error page processing
             response.setSuspended(false);
 
-            Throwable t = (Throwable) hreq.getAttribute(
-                RequestDispatcher.ERROR_EXCEPTION);
+            Throwable t = (Throwable) hreq.getAttribute(RequestDispatcher.ERROR_EXCEPTION);
 
             if (t != null) {
                 throwable(request, response, t);
@@ -174,7 +163,6 @@
                 status(request, response);
             }
 
-            // See IT 11423
             boolean isDefaultErrorPageEnabled = true;
             Wrapper wrapper = request.getWrapper();
             if (wrapper != null) {
@@ -184,42 +172,34 @@
                 }
             }
 
-            // START SJSAS 6374691
             if (errorReportValve != null && response.isError() && isDefaultErrorPageEnabled) {
                 errorReportValve.postInvoke(request, response);
             }
-            // END SJSAS 6374691
 
             Context context = request.getContext();
             if (context != null) {
                 context.fireRequestDestroyedEvent(hreq);
             }
         } finally {
-            Thread.currentThread().setContextClassLoader
-                (standardHostValveClassLoader);
+            Thread.currentThread().setContextClassLoader(standardHostValveClassLoader);
         }
     }
 
-
     // ------------------------------------------------------ Protected Methods
 
-
     /**
-     * Handle the specified Throwable encountered while processing
-     * the specified Request to produce the specified Response.  Any
-     * exceptions that occur during generation of the exception report are
-     * logged and swallowed.
+     * Handle the specified Throwable encountered while processing the specified Request to produce the specified Response.
+     * Any exceptions that occur during generation of the exception report are logged and swallowed.
      *
      * @param request The request being processed
      * @param response The response being generated
-     * @param throwable The throwable that occurred (which possibly wraps
-     *  a root cause exception
+     * @param throwable The throwable that occurred (which possibly wraps a root cause exception
      */
-    protected void throwable(Request request, Response response,
-                             Throwable throwable) {
+    protected void throwable(Request request, Response response, Throwable throwable) {
         Context context = request.getContext();
-        if (context == null)
+        if (context == null) {
             return;
+        }
 
         Throwable realError = throwable;
         if (realError instanceof ServletException) {
@@ -230,9 +210,9 @@
         }
 
         // If this is an aborted request from a client just log it and return
-        if (realError instanceof ClientAbortException ) {
-            if (log.isLoggable(Level.FINE)) {
-                log.log(Level.FINE, LogFacade.REMOTE_CLIENT_ABORTED_EXCEPTION, realError.getCause().getMessage());
+        if (realError instanceof ClientAbortException) {
+            if (log.isLoggable(FINE)) {
+                log.log(FINE, LogFacade.REMOTE_CLIENT_ABORTED_EXCEPTION, realError.getCause().getMessage());
             }
             return;
         }
@@ -243,61 +223,42 @@
         }
 
         if (errorPage != null) {
-            dispatchToErrorPage(request, response, errorPage, throwable,
-                                realError, 0);
+            dispatchToErrorPage(request, response, errorPage, throwable, realError, 0);
         } else if (context.getDefaultErrorPage() != null) {
-            dispatchToErrorPage(request, response,
-                context.getDefaultErrorPage(), throwable, realError, 0);
+            dispatchToErrorPage(request, response, context.getDefaultErrorPage(), throwable, realError, 0);
         } else {
             // A custom error-page has not been defined for the exception
             // that was thrown during request processing. Check if an
             // error-page for error code 500 was specified and if so,
             // send that page back as the response.
-            ServletResponse sresp = (ServletResponse) response;
+            ServletResponse servletResponse = (ServletResponse) response;
 
-            /* GlassFish 6386229
-            if (sresp instanceof HttpServletResponse) {
-                ((HttpServletResponse) sresp).setStatus(
-                    HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
-                // The response is an error
-                response.setError();
+            ((HttpServletResponse) servletResponse).setStatus(SC_INTERNAL_SERVER_ERROR);
 
-                status(request, response);
-            }
-            */
-            // START GlassFish 6386229
-            ((HttpServletResponse) sresp).setStatus(
-                HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
             // The response is an error
             response.setError();
 
             status(request, response);
-            // END GlassFish 6386229
         }
 
-
     }
 
-
     /**
-     * Handle the HTTP status code (and corresponding message) generated
-     * while processing the specified Request to produce the specified
-     * Response.  Any exceptions that occur during generation of the error
-     * report are logged and swallowed.
+     * Handle the HTTP status code (and corresponding message) generated while processing the specified Request to produce
+     * the specified Response. Any exceptions that occur during generation of the error report are logged and swallowed.
      *
      * @param request The request being processed
      * @param response The response being generated
      */
     protected void status(Request request, Response response) {
-
         // Handle a custom error page for this status code
         Context context = request.getContext();
-        if (context == null)
+        if (context == null) {
             return;
+        }
 
         /*
-         * Only look for error pages when isError() is set.
-         * isError() is set when response.sendError() is invoked.
+         * Only look for error pages when isError() is set. isError() is set when response.sendError() is invoked.
          */
         if (!response.isError()) {
             return;
@@ -311,30 +272,27 @@
                 if (!file.exists()) {
                     File file2 = new File(errorPage.getLocation());
                     if (!file2.exists()) {
-                        log.log(Level.WARNING, LogFacade.ERROR_PAGE_NOT_EXIST,
-                                new Object[]{file.getAbsolutePath(), file2.getAbsolutePath()});
+                        log.log(WARNING, LogFacade.ERROR_PAGE_NOT_EXIST,
+                                new Object[] { file.getAbsolutePath(), file2.getAbsolutePath() });
                     }
                 }
             }
             setErrorPageContentType(response, errorPage.getLocation(), context);
             dispatchToErrorPage(request, response, errorPage, null, null, statusCode);
-        } else if (statusCode >= 400 && statusCode < 600 &&
-                context.getDefaultErrorPage() != null) {
-            dispatchToErrorPage(request, response,
-                context.getDefaultErrorPage(), null, null, statusCode);
+        } else if (statusCode >= 400 && statusCode < 600 && context.getDefaultErrorPage() != null) {
+            dispatchToErrorPage(request, response, context.getDefaultErrorPage(), null, null, statusCode);
         }
         // START SJSAS 6324911
         else {
-            errorPage = ((StandardHost) getContainer()).findErrorPage(
-                                                        statusCode);
+            errorPage = ((StandardHost) getContainer()).findErrorPage(statusCode);
             if (errorPage != null) {
                 if (errorPage.getLocation() != null) {
                     File file = new File(context.getDocBase(), errorPage.getLocation());
                     if (!file.exists()) {
                         File file2 = new File(errorPage.getLocation());
                         if (!file2.exists()) {
-                            log.log(Level.WARNING, LogFacade.ERROR_PAGE_NOT_EXIST,
-                                    new Object[]{file.getAbsolutePath(), file2.getAbsolutePath()});
+                            log.log(WARNING, LogFacade.ERROR_PAGE_NOT_EXIST,
+                                    new Object[] { file.getAbsolutePath(), file2.getAbsolutePath() });
                         }
                     }
                 }
@@ -349,117 +307,93 @@
         // END SJSAS 6324911
     }
 
-
     /**
-     * Find and return the ErrorPage instance for the specified exception's
-     * class, or an ErrorPage instance for the closest superclass for which
-     * there is such a definition.  If no associated ErrorPage instance is
-     * found, return <code>null</code>.
+     * Find and return the ErrorPage instance for the specified exception's class, or an ErrorPage instance for the closest
+     * superclass for which there is such a definition. If no associated ErrorPage instance is found, return
+     * <code>null</code>.
      *
      * @param context The Context in which to search
      * @param exception The exception for which to find an ErrorPage
      */
-    protected static ErrorPage findErrorPage
-        (Context context, Throwable exception) {
+    protected static ErrorPage findErrorPage(Context context, Throwable exception) {
+        if (exception == null) {
+            return null;
+        }
 
-        if (exception == null)
-            return (null);
         Class<?> clazz = exception.getClass();
         String name = clazz.getName();
         while (!Object.class.equals(clazz)) {
             ErrorPage errorPage = context.findErrorPage(name);
-            if (errorPage != null)
-                return (errorPage);
+            if (errorPage != null) {
+                return errorPage;
+            }
+
             clazz = clazz.getSuperclass();
-            if (clazz == null)
+            if (clazz == null) {
                 break;
+            }
             name = clazz.getName();
         }
-        return (null);
 
+        return null;
     }
 
-
     /**
-     * Handle an HTTP status code or Java exception by forwarding control
-     * to the location included in the specified errorPage object.  It is
-     * assumed that the caller has already recorded any request attributes
-     * that are to be forwarded to this page.  Return <code>true</code> if
-     * we successfully utilized the specified error page location, or
+     * Handle an HTTP status code or Java exception by forwarding control to the location included in the specified
+     * errorPage object. It is assumed that the caller has already recorded any request attributes that are to be forwarded
+     * to this page. Return <code>true</code> if we successfully utilized the specified error page location, or
      * <code>false</code> if the default error report should be rendered.
      *
      * @param request The request being processed
      * @param response The response being generated
      * @param errorPage The errorPage directive we are obeying
      */
-    protected boolean custom(Request request, Response response,
-                             ErrorPage errorPage) {
-
-        if (debug >= 1)
+    protected boolean custom(Request request, Response response, ErrorPage errorPage) {
+        if (debug >= 1) {
             log("Processing " + errorPage);
-
-        // Validate our current environment
-        /* GlassFish 6386229
-        if (!(request instanceof HttpRequest)) {
-            if (debug >= 1)
-                log(" Not processing an HTTP request --> default handling");
-            return (false);     // NOTE - Nothing we can do generically
         }
-        */
-        HttpServletRequest hreq =
-            (HttpServletRequest) request.getRequest();
-        /* GlassFish 6386229
-        if (!(response instanceof HttpResponse)) {
-            if (debug >= 1)
-                log("Not processing an HTTP response --> default handling");
-            return (false);     // NOTE - Nothing we can do generically
-        }
-        */
-        HttpServletResponse hres =
-            (HttpServletResponse) response.getResponse();
 
-        ((HttpRequest) request).setPathInfo(errorPage.getLocation());
+        HttpResponse httpResponse = (HttpResponse) response;
+        HttpRequest httpRequest = (HttpRequest) request;
+
+        HttpServletRequest httpServletRequest = (HttpServletRequest) request.getRequest();
+        HttpServletResponse httpServletResponse = (HttpServletResponse) response.getResponse();
+
+        httpRequest.setPathInfo(errorPage.getLocation());
 
         try {
-            Integer statusCodeObj = (Integer) hreq.getAttribute(
-                RequestDispatcher.ERROR_STATUS_CODE);
-            int statusCode = statusCodeObj.intValue();
-            String message = (String) hreq.getAttribute(
-                RequestDispatcher.ERROR_MESSAGE);
-            hres.setStatus(statusCode, message);
+            httpResponse.setError(
+                (Integer) httpServletRequest.getAttribute(ERROR_STATUS_CODE),
+                (String) httpServletRequest.getAttribute(ERROR_MESSAGE));
 
             // Forward control to the specified location
-            ServletContext servletContext =
-                request.getContext().getServletContext();
-            ApplicationDispatcher dispatcher = (ApplicationDispatcher)
-                servletContext.getRequestDispatcher(errorPage.getLocation());
+            ServletContext servletContext = request.getContext().getServletContext();
+            ApplicationDispatcher dispatcher = (ApplicationDispatcher) servletContext.getRequestDispatcher(errorPage.getLocation());
 
-            if (hres.isCommitted()) {
-                // Response is committed - including the error page is the
-                // best we can do
-                dispatcher.include(hreq, hres);
+            if (httpServletResponse.isCommitted()) {
+                // Response is committed - including the error page is the best we can do
+                dispatcher.include(httpServletRequest, httpServletResponse);
             } else {
                 // Reset the response (keeping the real error code and message)
                 response.resetBuffer(true);
 
-                dispatcher.dispatch(hreq, hres, DispatcherType.ERROR);
+                dispatcher.dispatch(httpServletRequest, httpServletResponse, ERROR);
 
                 // If we forward, the response is suspended again
                 response.setSuspended(false);
             }
 
             // Indicate that we have successfully processed this custom page
-            return (true);
+            return true;
 
         } catch (Throwable t) {
             // Report our failure to process this custom page
             log("Exception Processing " + errorPage, t);
-            return (false);
+            return false;
         }
 
     }
 
-
     /**
      * Log a message on the Logger associated with our Container (if any).
      *
@@ -470,13 +404,12 @@
         if (logger != null) {
             logger.log(this.toString() + ": " + message);
         } else {
-            if (log.isLoggable(Level.INFO)) {
-                log.log(Level.INFO, this.toString() + ": " + message);
+            if (log.isLoggable(INFO)) {
+                log.log(INFO, this.toString() + ": " + message);
             }
         }
     }
 
-
     /**
      * Log a message on the Logger associated with our Container (if any).
      *
@@ -486,44 +419,38 @@
     protected void log(String message, Throwable t) {
         org.apache.catalina.Logger logger = container.getLogger();
         if (logger != null) {
-            logger.log(this.toString() + ": " + message, t,
-                org.apache.catalina.Logger.WARNING);
+            logger.log(this.toString() + ": " + message, t, org.apache.catalina.Logger.WARNING);
         } else {
-            log.log(Level.WARNING, this.toString() + ": " + message, t);
+            log.log(WARNING, this.toString() + ": " + message, t);
         }
     }
 
-
-    // START SJSAS 6324911
     /**
-     * Copies the contents of the given error page to the response, and
-     * updates the status message with the reason string of the error page.
+     * Copies the contents of the given error page to the response, and updates the status message with the reason string of
+     * the error page.
      *
      * @param response The response object
      * @param errorPage The error page whose contents are to be copied
      * @param statusCode The status code
      */
-    private void handleHostErrorPage(Response response,
-                                     ErrorPage errorPage,
-                                     int statusCode)
-            throws Exception {
-
-        ServletOutputStream ostream = null;
+    private void handleHostErrorPage(Response response, ErrorPage errorPage, int statusCode) throws Exception {
+        ServletOutputStream outputStream = null;
         PrintWriter writer = null;
         FileReader reader = null;
         BufferedInputStream istream = null;
-        IOException ioe = null;
+        IOException ioException = null;
 
         if (!response.getResponse().isCommitted()) {
             response.resetBuffer(true);
         }
+
         String message = errorPage.getReason();
         if (message != null) {
             ((HttpResponse) response).reset(statusCode, message);
         }
 
         try {
-            ostream = response.getResponse().getOutputStream();
+            outputStream = response.getResponse().getOutputStream();
         } catch (IllegalStateException e) {
             // If it fails, we try to get a Writer instead if we're
             // trying to serve a text file
@@ -532,127 +459,100 @@
 
         if (writer != null) {
             reader = new FileReader(errorPage.getLocation());
-            ioe = ResponseUtil.copy(reader, writer);
+            ioException = ResponseUtil.copy(reader, writer);
             try {
                 reader.close();
             } catch (Throwable t) {
-                ;
+
             }
         } else {
-            istream = new BufferedInputStream(
-                new FileInputStream(errorPage.getLocation()));
-            ioe = ResponseUtil.copy(istream, ostream);
+            istream = new BufferedInputStream(new FileInputStream(errorPage.getLocation()));
+            ioException = ResponseUtil.copy(istream, outputStream);
             try {
                 istream.close();
             } catch (Throwable t) {
-                ;
+
             }
         }
 
         // Rethrow any exception that may have occurred
-        if (ioe != null) {
-            throw ioe;
+        if (ioException != null) {
+            throw ioException;
         }
     }
-    // END SJSAS 6324911
 
-
-    // START SJSAS 6374691
     void setErrorReportValve(GlassFishValve errorReportValve) {
         this.errorReportValve = errorReportValve;
     }
-    // END SJSAS 6374691
 
-
-    private Context preInvoke(Request request, Response response)
-            throws IOException, ServletException {
-
+    private Context preInvoke(Request request, Response response) throws IOException, ServletException {
         // Select the Context to be used for this Request
         Context context = request.getContext();
         if (context == null) {
-            // BEGIN S1AS 4878272
-            ((HttpServletResponse) response.getResponse()).sendError
-                (HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
-            response.setDetailMessage(rb.getString(LogFacade.NO_CONTEXT_TO_PROCESS));
-            // END S1AS 4878272
+            ((HttpServletResponse) response.getResponse()).sendError(SC_INTERNAL_SERVER_ERROR);
+            response.setDetailMessage(rb.getString(NO_CONTEXT_TO_PROCESS));
             return null;
         }
 
         // Bind the context CL to the current thread
-        if( context.getLoader() != null ) {
+        if (context.getLoader() != null) {
             // Not started - it should check for availability first
             // This should eventually move to Engine, it's generic.
-            Thread.currentThread().setContextClassLoader
-                    (context.getLoader().getClassLoader());
+            Thread.currentThread().setContextClassLoader(context.getLoader().getClassLoader());
         }
 
-        // START GlassFish Issue 1057
         // Update the session last access time for our session (if any)
-        HttpServletRequest hreq = (HttpServletRequest) request.getRequest();
-        hreq.getSession(false);
-        // END GlassFish Issue 1057
+        HttpServletRequest httpServletRequest = (HttpServletRequest) request.getRequest();
+        httpServletRequest.getSession(false);
 
-        context.fireRequestInitializedEvent(hreq);
+        context.fireRequestInitializedEvent(httpServletRequest);
 
         return context;
     }
 
-
-    private void dispatchToErrorPage(Request request, Response response,
-            ErrorPage errorPage, Throwable throwable, Throwable realError,
-            int statusCode) {
-
+    private void dispatchToErrorPage(Request request, Response response, ErrorPage errorPage, Throwable throwable, Throwable realError, int statusCode) {
         response.setAppCommitted(false);
 
-        ServletRequest sreq = request.getRequest();
-        ServletResponse sresp = response.getResponse();
+        ServletRequest servletRequest = request.getRequest();
+        ServletResponse servletResponse = response.getResponse();
 
-        sreq.setAttribute(Globals.DISPATCHER_REQUEST_PATH_ATTR,
-                          errorPage.getLocation());
-        sreq.setAttribute(RequestDispatcher.ERROR_REQUEST_URI,
-                          ((HttpServletRequest) sreq).getRequestURI());
+        servletRequest.setAttribute(DISPATCHER_REQUEST_PATH_ATTR, errorPage.getLocation());
+        servletRequest.setAttribute(ERROR_REQUEST_URI, ((HttpServletRequest) servletRequest).getRequestURI());
         Wrapper wrapper = request.getWrapper();
         if (wrapper != null) {
-            sreq.setAttribute(RequestDispatcher.ERROR_SERVLET_NAME,
-                              wrapper.getName());
+            servletRequest.setAttribute(ERROR_SERVLET_NAME, wrapper.getName());
         }
 
         if (throwable != null) {
-            sreq.setAttribute(RequestDispatcher.ERROR_STATUS_CODE,
-                Integer.valueOf(HttpServletResponse.SC_INTERNAL_SERVER_ERROR));
-            sreq.setAttribute(RequestDispatcher.ERROR_MESSAGE,
-                              throwable.getMessage());
-            sreq.setAttribute(RequestDispatcher.ERROR_EXCEPTION,
-                              realError);
-            sreq.setAttribute(RequestDispatcher.ERROR_EXCEPTION_TYPE,
-                              realError.getClass());
+            servletRequest.setAttribute(ERROR_STATUS_CODE, Integer.valueOf(SC_INTERNAL_SERVER_ERROR));
+            servletRequest.setAttribute(ERROR_MESSAGE, throwable.getMessage());
+            servletRequest.setAttribute(RequestDispatcher.ERROR_EXCEPTION, realError);
+            servletRequest.setAttribute(RequestDispatcher.ERROR_EXCEPTION_TYPE, realError.getClass());
         } else {
-            sreq.setAttribute(RequestDispatcher.ERROR_STATUS_CODE,
-                              Integer.valueOf(statusCode));
+            servletRequest.setAttribute(ERROR_STATUS_CODE, Integer.valueOf(statusCode));
             String message = ((HttpResponse) response).getMessage();
             if (message == null) {
                 message = "";
             }
-            sreq.setAttribute(RequestDispatcher.ERROR_MESSAGE, message);
+            servletRequest.setAttribute(ERROR_MESSAGE, message);
         }
 
         if (custom(request, response, errorPage)) {
             try {
-                sresp.flushBuffer();
+                servletResponse.flushBuffer();
             } catch (IOException e) {
                 log("Exception processing " + errorPage, e);
             }
         }
     }
 
-    private void setErrorPageContentType(Response response,
-                                         String location, Context context) {
-
+    private void setErrorPageContentType(Response response, String location, Context context) {
         if (response.getContentType() == null && location != null) {
-            String str = location.substring(location.lastIndexOf('.') + 1);
-            str = context.findMimeMapping(str.toLowerCase(Locale.ENGLISH));
-            if(str != null)
-                ((ServletResponse) response).setContentType(str);
+            String contentType = location.substring(location.lastIndexOf('.') + 1);
+            contentType = context.findMimeMapping(contentType.toLowerCase(ENGLISH));
+            if (contentType != null) {
+                ((ServletResponse) response).setContentType(contentType);
+            }
         }
     }
 
diff --git a/appserver/web/web-core/src/main/java/org/apache/catalina/core/StandardWrapper.java b/appserver/web/web-core/src/main/java/org/apache/catalina/core/StandardWrapper.java
index 8cd579a..070835a 100644
--- a/appserver/web/web-core/src/main/java/org/apache/catalina/core/StandardWrapper.java
+++ b/appserver/web/web-core/src/main/java/org/apache/catalina/core/StandardWrapper.java
@@ -36,7 +36,6 @@
 import jakarta.servlet.ServletException;
 import jakarta.servlet.ServletRequest;
 import jakarta.servlet.ServletResponse;
-import jakarta.servlet.SingleThreadModel;
 import jakarta.servlet.UnavailableException;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
@@ -240,6 +239,7 @@
 
     /**
      * Stack containing the STM instances.
+     * TODO: remove
      */
     private Stack<Servlet> instancePool = null;
 
@@ -314,6 +314,7 @@
      * this servlet will return an SC_SERVICE_UNAVAILABLE error.  If it is zero,
      * the servlet is currently available.
      */
+    @Override
     public long getAvailable() {
 
         return (this.available);
@@ -330,6 +331,7 @@
      *
      * @param available The new available date/time
      */
+    @Override
     public void setAvailable(long available) {
 
         long oldAvailable = this.available;
@@ -357,6 +359,7 @@
     /**
      * Return the debugging detail level for this component.
      */
+    @Override
     public int getDebug() {
         return (this.debug);
     }
@@ -367,6 +370,7 @@
      *
      * @param debug The new debugging detail level
      */
+    @Override
     public void setDebug(int debug) {
         int oldDebug = this.debug;
         this.debug = debug;
@@ -385,6 +389,7 @@
      * the corresponding version number, in the format
      * <code>&lt;description&gt;/&lt;version&gt;</code>.
      */
+    @Override
     public String getInfo() {
         return (info);
     }
@@ -401,6 +406,7 @@
     /**
      * Return the context-relative URI of the JSP file for this servlet.
      */
+    @Override
     public String getJspFile() {
         return (this.jspFile);
     }
@@ -411,6 +417,7 @@
      *
      * @param jspFile JSP file URI
      */
+    @Override
     public void setJspFile(String jspFile) {
 
         String oldJspFile = this.jspFile;
@@ -428,6 +435,7 @@
      * Return the load-on-startup order value (negative value means
      * load on first call).
      */
+    @Override
     public int getLoadOnStartup() {
 
         if (isJspServlet && loadOnStartup < 0) {
@@ -449,6 +457,7 @@
      *
      * @param value New load-on-startup value
      */
+    @Override
     public void setLoadOnStartup(int value) {
 
         int oldLoadOnStartup = this.loadOnStartup;
@@ -486,6 +495,7 @@
     /**
      * Sets the description of this servlet.
      */
+    @Override
     public void setDescription(String description) {
         this.description = description;
     }
@@ -494,6 +504,7 @@
     /**
      * Gets the description of this servlet.
      */
+    @Override
     public String getDescription() {
         return description;
     }
@@ -527,6 +538,7 @@
      *
      * @param container Proposed parent Container
      */
+    @Override
     public void setParent(Container container) {
         if ((container != null) &&
             !(container instanceof Context))
@@ -544,6 +556,7 @@
     /**
      * Return the run-as identity for this servlet.
      */
+    @Override
     public String getRunAs() {
         return (this.runAs);
     }
@@ -554,6 +567,7 @@
      *
      * @param runAs New run-as identity value
      */
+    @Override
     public void setRunAs(String runAs) {
         String oldRunAs = this.runAs;
         this.runAs = runAs;
@@ -567,6 +581,7 @@
      * @param isAsyncSupported true if the wrapped servlet supports async mode,
      * false otherwise
      */
+    @Override
     public void setIsAsyncSupported(boolean isAsyncSupported) {
         this.isAsyncSupported = isAsyncSupported;
     }
@@ -579,6 +594,7 @@
      * @return true if the wrapped servlet supports async operations, and
      * false otherwise
      */
+    @Override
     public boolean isAsyncSupported() {
         return isAsyncSupported;
     }
@@ -587,6 +603,7 @@
     /**
      * Return the fully qualified servlet class name for this servlet.
      */
+    @Override
     public String getServletClassName() {
         return this.servletClassName;
     }
@@ -597,6 +614,7 @@
      *
      * @param className Servlet class name
      */
+    @Override
     public void setServletClassName(String className) {
         if (className == null) {
             throw new NullPointerException("Null servlet class name");
@@ -630,6 +648,7 @@
      * @param clazz The class object from which this servlet will
      * be instantiated
      */
+    @Override
     public void setServletClass(Class <? extends Servlet> clazz) {
         if (clazz == null) {
             throw new NullPointerException("Null servlet class");
@@ -697,6 +716,7 @@
     /**
      * Is this servlet currently unavailable?
      */
+    @Override
     public boolean isUnavailable() {
         if (available == 0L)
             return (false);
@@ -718,6 +738,7 @@
      * @return Array of names of the methods supported by the underlying
      * servlet
      */
+    @Override
     public String[] getServletMethods() throws ServletException {
 
         loadServletClass();
@@ -766,6 +787,7 @@
     /**
      * Sets the multipart location
      */
+    @Override
     public void setMultipartLocation(String location) {
         multipartConfigured = true;
         multipartLocation = location;
@@ -775,6 +797,7 @@
     /**
      * Gets the multipart location
      */
+    @Override
     public String getMultipartLocation(){
         return multipartLocation;
     }
@@ -783,6 +806,7 @@
     /**
      * Sets the multipart max-file-size
      */
+    @Override
     public void setMultipartMaxFileSize(long maxFileSize) {
         multipartConfigured = true;
         multipartMaxFileSize = maxFileSize;
@@ -792,6 +816,7 @@
     /**
      * Gets the multipart max-file-size
      */
+    @Override
     public long getMultipartMaxFileSize() {
         return multipartMaxFileSize;
     }
@@ -800,6 +825,7 @@
     /**
      * Sets the multipart max-request-size
      */
+    @Override
     public void setMultipartMaxRequestSize(long maxRequestSize) {
         multipartConfigured = true;
         multipartMaxRequestSize = maxRequestSize;
@@ -809,6 +835,7 @@
     /**
      * Gets the multipart max-request-Size
      */
+    @Override
     public long getMultipartMaxRequestSize() {
         return multipartMaxRequestSize;
     }
@@ -817,6 +844,7 @@
     /**
      * Sets the multipart file-size-threshold
      */
+    @Override
     public void setMultipartFileSizeThreshold(int fileSizeThreshold) {
         multipartConfigured = true;
         multipartFileSizeThreshold = fileSizeThreshold;
@@ -826,6 +854,7 @@
     /**
      * Gets the multipart file-size-threshol
      */
+    @Override
     public int getMultipartFileSizeThreshold() {
         return multipartFileSizeThreshold;
     }
@@ -845,6 +874,7 @@
 
 
     // START GlassFish 1343
+    @Override
     public synchronized void addValve(GlassFishValve valve) {
         /*
          * This exception should never be thrown in reality, because we never
@@ -891,6 +921,7 @@
      *
      * @param child Child container to be added
      */
+    @Override
     public void addChild(Container child) {
         throw new IllegalStateException
                 (rb.getString(LogFacade.WRAPPER_CONTAINER_NO_CHILD_EXCEPTION));
@@ -904,6 +935,7 @@
      * @param name the name of the init parameter
      * @param value the value of the init parameter
      */
+    @Override
     public void addInitParameter(String name, String value) {
         setInitParameter(name, value, true);
         if (notifyContainerListeners) {
@@ -990,6 +1022,7 @@
      *
      * @param listener The new listener
      */
+    @Override
     public void addInstanceListener(InstanceListener listener) {
         instanceSupport.addInstanceListener(listener);
     }
@@ -1000,6 +1033,7 @@
      *
      * @param mapping The new wrapper mapping
      */
+    @Override
     public void addMapping(String mapping) {
         synchronized (mappings) {
             mappings.add(mapping);
@@ -1025,6 +1059,7 @@
      * @param name Role name used within this servlet
      * @param link Role name used within the web application
      */
+    @Override
     public void addSecurityReference(String name, String link) {
         synchronized (references) {
             references.put(name, link);
@@ -1049,6 +1084,7 @@
      *  an exception
      * @exception ServletException if a loading error occurs
      */
+    @Override
     public synchronized Servlet allocate() throws ServletException {
 
         // If we are currently unloading this servlet, throw an exception
@@ -1133,6 +1169,7 @@
      *
      * @exception ServletException if a deallocation error occurs
      */
+    @Override
     public void deallocate(Servlet servlet) throws ServletException {
 
         // If not SingleThreadModel, no action is required
@@ -1156,6 +1193,7 @@
      *
      * @param name Name of the requested initialization parameter
      */
+    @Override
     public String findInitParameter(String name) {
         synchronized (parameters) {
             return parameters.get(name);
@@ -1167,6 +1205,7 @@
      * Return the names of all defined initialization parameters for this
      * servlet.
      */
+    @Override
     public String[] findInitParameters() {
         synchronized (parameters) {
             String results[] = new String[parameters.size()];
@@ -1178,6 +1217,7 @@
     /**
      * Return the mappings associated with this wrapper.
      */
+    @Override
     public String[] findMappings() {
         synchronized (mappings) {
             return mappings.toArray(new String[mappings.size()]);
@@ -1191,6 +1231,7 @@
      *
      * @param name Security role reference used within this servlet
      */
+    @Override
     public String findSecurityReference(String name) {
         synchronized (references) {
             return references.get(name);
@@ -1202,6 +1243,7 @@
      * Return the set of security role reference names associated with
      * this servlet, if any; otherwise return a zero-length array.
      */
+    @Override
     public String[] findSecurityReferences() {
         synchronized (references) {
             String results[] = new String[references.size()];
@@ -1235,6 +1277,7 @@
      *  an exception
      * @exception ServletException if some other loading problem occurs
      */
+    @Override
     public synchronized void load() throws ServletException {
         instance = loadServlet();
         initServlet(instance);
@@ -1290,12 +1333,6 @@
         classLoadTime = (int) (System.currentTimeMillis() -t1);
 
         // Register our newly initialized instance
-        singleThreadModel = servlet instanceof SingleThreadModel;
-        if (singleThreadModel) {
-            if (instancePool == null)
-                instancePool = new Stack<Servlet>();
-        }
-
         if (notifyContainerListeners) {
             fireContainerEvent("load", this);
         }
@@ -1368,6 +1405,7 @@
                 try{
                     clazz = AccessController.doPrivileged(
                         new PrivilegedExceptionAction<Class>(){
+                            @Override
                             public Class run() throws Exception{
                                 if (fclassLoader != null) {
                                     return fclassLoader.loadClass(factualClass);
@@ -1451,7 +1489,7 @@
                 req.setQueryString("jsp_precompile=true");
 
                 // START PWC 4707989
-                String allowedMethods = (String) parameters.get("httpMethods");
+                String allowedMethods = parameters.get("httpMethods");
                 if (allowedMethods != null
                         && allowedMethods.length() > 0) {
                     String[] s = allowedMethods.split(",");
@@ -1537,8 +1575,8 @@
                                                serviceType,
                                                principal);
                 } else {
-                    serv.service((HttpServletRequest) request,
-                                 (HttpServletResponse) response);
+                    serv.service(request,
+                                 response);
                 }
             } else {
                 serv.service(request, response);
@@ -1599,6 +1637,7 @@
      *
      * @param name Name of the initialization parameter to remove
      */
+    @Override
     public void removeInitParameter(String name) {
 
         synchronized (parameters) {
@@ -1616,6 +1655,7 @@
      *
      * @param listener The listener to remove
      */
+    @Override
     public void removeInstanceListener(InstanceListener listener) {
 
         instanceSupport.removeInstanceListener(listener);
@@ -1628,6 +1668,7 @@
      *
      * @param mapping The pattern to remove
      */
+    @Override
     public void removeMapping(String mapping) {
 
         synchronized (mappings) {
@@ -1645,6 +1686,7 @@
      *
      * @param name Security role used within this servlet to be removed
      */
+    @Override
     public void removeSecurityReference(String name) {
 
         synchronized (references) {
@@ -1660,6 +1702,7 @@
     /**
      * Return a String representation of this component.
      */
+    @Override
     public String toString() {
 
         StringBuilder sb = new StringBuilder();
@@ -1682,6 +1725,7 @@
      * @param unavailable The exception that occurred, or <code>null</code>
      *  to mark this servlet as permanently unavailable
      */
+    @Override
     public void unavailable(UnavailableException unavailable) {
         String msg = MessageFormat.format(rb.getString(LogFacade.MARK_SERVLET_UNAVAILABLE), neutralizeForLog(getName()));
         getServletContext().log(msg);
@@ -1710,6 +1754,7 @@
      * @exception ServletException if an exception is thrown by the
      *  destroy() method
      */
+    @Override
     public synchronized void unload() throws ServletException {
 
         // Nothing to do if we have never loaded the instance
@@ -1829,6 +1874,7 @@
      *
      * @param name Name of the initialization parameter to retrieve
      */
+    @Override
     public String getInitParameter(String name) {
         return findInitParameter(name);
     }
@@ -1845,6 +1891,7 @@
      * Return the set of initialization parameter names defined for this
      * servlet.  If none are defined, an empty Enumeration is returned.
      */
+    @Override
     public Enumeration<String> getInitParameterNames() {
         synchronized (parameters) {
             return (new Enumerator<String>(parameters.keySet()));
@@ -1855,6 +1902,7 @@
     /**
      * Return the servlet context with which this servlet is associated.
      */
+    @Override
     public ServletContext getServletContext() {
         if (parent == null)
             return (null);
@@ -1868,6 +1916,7 @@
     /**
      * Return the name of this servlet.
      */
+    @Override
     public String getServletName() {
         return (getName());
     }
@@ -1949,6 +1998,7 @@
     /**
      * Log the abbreviated name of this Container for logging messages.
      */
+    @Override
     protected String logName() {
 
         StringBuilder sb = new StringBuilder("StandardWrapper[");
@@ -1998,6 +2048,7 @@
      *
      * @exception LifecycleException if a fatal error occurs during startup
      */
+    @Override
     public void start() throws LifecycleException {
 
         // Send j2ee.state.starting notification
@@ -2033,6 +2084,7 @@
      *
      * @exception LifecycleException if a fatal error occurs during shutdown
      */
+    @Override
     public void stop() throws LifecycleException {
 
         setAvailable(Long.MAX_VALUE);
diff --git a/appserver/web/web-core/src/main/java/org/apache/catalina/filters/CsrfPreventionFilter.java b/appserver/web/web-core/src/main/java/org/apache/catalina/filters/CsrfPreventionFilter.java
index 83bf184..55f51dd 100644
--- a/appserver/web/web-core/src/main/java/org/apache/catalina/filters/CsrfPreventionFilter.java
+++ b/appserver/web/web-core/src/main/java/org/apache/catalina/filters/CsrfPreventionFilter.java
@@ -243,23 +243,11 @@
         }
 
         @Override
-        @Deprecated
-        public String encodeRedirectUrl(String url) {
-            return encodeRedirectURL(url);
-        }
-
-        @Override
         public String encodeRedirectURL(String url) {
             return addNonce(super.encodeRedirectURL(url));
         }
 
         @Override
-        @Deprecated
-        public String encodeUrl(String url) {
-            return encodeURL(url);
-        }
-
-        @Override
         public String encodeURL(String url) {
             return addNonce(super.encodeURL(url));
         }
diff --git a/appserver/web/web-core/src/main/java/org/apache/catalina/loader/WebappLoader.java b/appserver/web/web-core/src/main/java/org/apache/catalina/loader/WebappLoader.java
index fc25b8d..640f829 100644
--- a/appserver/web/web-core/src/main/java/org/apache/catalina/loader/WebappLoader.java
+++ b/appserver/web/web-core/src/main/java/org/apache/catalina/loader/WebappLoader.java
@@ -1089,7 +1089,7 @@
 
     /**
      * Set the appropriate context attribute for our class path.  This
-     * is required only because Jasper depends on it.
+     * is required only because WaSP depends on it.
      */
     private void setClassPath() {
 
@@ -1228,7 +1228,7 @@
 
     /**
      * Copy a file to the specified temp directory. This is required only
-     * because Jasper depends on it.
+     * because WaSP depends on it.
      */
     private boolean copy(InputStream is, OutputStream os) {
 
diff --git a/appserver/web/web-core/src/main/java/org/apache/catalina/security/SecurityConfig.java b/appserver/web/web-core/src/main/java/org/apache/catalina/security/SecurityConfig.java
index 951a56e..eb18a63 100644
--- a/appserver/web/web-core/src/main/java/org/apache/catalina/security/SecurityConfig.java
+++ b/appserver/web/web-core/src/main/java/org/apache/catalina/security/SecurityConfig.java
@@ -38,7 +38,7 @@
 
     private final static String PACKAGE_ACCESS =  "sun.,"
                                                 + "org.apache.catalina."
-                                                + ",org.apache.jasper."
+                                                + ",org.glassfish.wasp."
                                                 + ",org.glassfish.grizzly.tcp."
                                                 + ",org.glassfish.grizzly.";
 
@@ -46,7 +46,7 @@
                                                 + ",org.apache.catalina."
                                                 + ",org.glassfish.grizzly.tcp."
                                                 + ",org.glassfish.grizzly."
-                                                + ",org.apache.jasper.";
+                                                + ",org.glassfish.wasp.";
     /**
      * List of protected package from conf/catalina.properties
      */
diff --git a/appserver/web/web-core/src/main/java/org/apache/catalina/session/StandardSession.java b/appserver/web/web-core/src/main/java/org/apache/catalina/session/StandardSession.java
index 717e101..ddfee7f 100644
--- a/appserver/web/web-core/src/main/java/org/apache/catalina/session/StandardSession.java
+++ b/appserver/web/web-core/src/main/java/org/apache/catalina/session/StandardSession.java
@@ -132,11 +132,6 @@
     };
 
     /**
-     * The HTTP session context associated with this session.
-     */
-    protected static volatile HttpSessionContext sessionContext = null;
-
-    /**
      * Used for serialized format versioning.
      * 1 = first version where this is being tracked.
      *
@@ -300,6 +295,7 @@
      * Return the authentication type used to authenticate our cached
      * Principal, if any.
      */
+    @Override
     public String getAuthType() {
 
         return (this.authType);
@@ -313,6 +309,7 @@
      *
      * @param authType The new cached authentication type
      */
+    @Override
     public void setAuthType(String authType) {
 
         this.authType = authType;
@@ -325,6 +322,7 @@
      *
      * @param time The new creation time
      */
+    @Override
     public void setCreationTime(long time) {
 
         this.creationTime = time;
@@ -337,6 +335,7 @@
     /**
      * Return the session identifier for this session.
      */
+    @Override
     public String getId() {
 
         return getIdInternal();
@@ -347,6 +346,7 @@
     /**
      * Return the session identifier for this session.
      */
+    @Override
     public String getIdInternal() {
 
         return (this.id);
@@ -359,6 +359,7 @@
      *
      * @param id The new session identifier
      */
+    @Override
     public void setId(String id) {
 
         if ((this.id != null) && (manager != null))
@@ -498,6 +499,7 @@
      * the corresponding version number, in the format
      * <code>&lt;description&gt;/&lt;version&gt;</code>.
      */
+    @Override
     public String getInfo() {
 
         return (this.info);
@@ -511,6 +513,7 @@
      * GMT.  Actions that your application takes, such as getting or setting
      * a value associated with the session, do not affect the access time.
      */
+    @Override
     public long getLastAccessedTime() {
         if ( !isValid() ) {
             throw new IllegalStateException
@@ -548,6 +551,7 @@
     /**
      * Return the Manager within which this Session is valid.
      */
+    @Override
     public Manager getManager() {
 
         return (this.manager);
@@ -560,6 +564,7 @@
      *
      * @param manager The new Manager
      */
+    @Override
     public void setManager(Manager manager) {
         this.manager = manager;
         context = (StandardContext) manager.getContainer();
@@ -571,6 +576,7 @@
      * before the servlet container will invalidate the session.  A negative
      * time indicates that the session should never time out.
      */
+    @Override
     public int getMaxInactiveInterval() {
 
         return (this.maxInactiveInterval);
@@ -585,6 +591,7 @@
      *
      * @param interval The new maximum interval
      */
+    @Override
     public void setMaxInactiveInterval(int interval) {
 
         this.maxInactiveInterval = interval;
@@ -600,6 +607,7 @@
      *
      * @param isNew The new value for the <code>isNew</code> flag
      */
+    @Override
     public void setNew(boolean isNew) {
 
         this.isNew = isNew;
@@ -614,6 +622,7 @@
      * <code>Realm.authenticate()</code> calls on every request.  If there
      * is no current associated Principal, return <code>null</code>.
      */
+    @Override
     public Principal getPrincipal() {
 
         return (this.principal);
@@ -629,6 +638,7 @@
      *
      * @param principal The new Principal, or <code>null</code> if none
      */
+    @Override
     public void setPrincipal(Principal principal) {
 
         this.principal = principal;
@@ -639,6 +649,7 @@
      * Return the <code>HttpSession</code> for which this object
      * is the facade.
      */
+    @Override
     public HttpSession getSession() {
 
         if (facade == null){
@@ -646,6 +657,7 @@
                 final StandardSession fsession = this;
                 facade = AccessController.doPrivileged(
                         new PrivilegedAction<StandardSessionFacade>(){
+                    @Override
                     public StandardSessionFacade run(){
                         return new StandardSessionFacade(fsession);
                     }
@@ -662,6 +674,7 @@
     /**
      * Return the <code>isValid</code> flag for this session.
      */
+    @Override
     public boolean isValid() {
 
         if (this.expiring){
@@ -695,6 +708,7 @@
     }
 
     // START CR 6363689
+    @Override
     public boolean getIsValid() {
         return this.isValid;
     }
@@ -705,6 +719,7 @@
      *
      * @param isValid The new value for the <code>isValid</code> flag
      */
+    @Override
     public void setValid(boolean isValid) {
 
         this.isValid = isValid;
@@ -724,6 +739,7 @@
      * should be called by the context when a request comes in for a particular
      * session, even if the application does not reference it.
      */
+    @Override
     public void access() {
         this.lastAccessedTime = this.thisAccessedTime;
         this.thisAccessedTime = System.currentTimeMillis();
@@ -735,6 +751,7 @@
     /**
      * End the access.
      */
+    @Override
     public void endAccess() {
         isNew = false;
     }
@@ -743,6 +760,7 @@
     /**
      * Add a session event listener to this component.
      */
+    @Override
     public void addSessionListener(SessionListener listener) {
 
         synchronized (listeners) {
@@ -756,6 +774,7 @@
      * Perform the internal processing required to invalidate this session,
      * without triggering an exception if the session has already expired.
      */
+    @Override
     public void expire() {
 
         expire(true);
@@ -967,6 +986,7 @@
      *
      * @param name Name of the note to be returned
      */
+    @Override
     public Object getNote(String name) {
         return (notes.get(name));
     }
@@ -976,6 +996,7 @@
      * Return an Iterator containing the String names of all notes bindings
      * that exist for this session.
      */
+    @Override
     public Iterator<String> getNoteNames() {
         return (notes.keySet().iterator());
     }
@@ -985,6 +1006,7 @@
      * Release all object references, and initialize instance variables, in
      * preparation for reuse of this object.
      */
+    @Override
     public void recycle() {
 
         // Reset the instance variables associated with this Session
@@ -1013,6 +1035,7 @@
      *
      * @param name Name of the note to be removed
      */
+    @Override
     public void removeNote(String name) {
         notes.remove(name);
     }
@@ -1021,6 +1044,7 @@
     /**
      * Remove a session event listener from this component.
      */
+    @Override
     public void removeSessionListener(SessionListener listener) {
 
         synchronized (listeners) {
@@ -1037,6 +1061,7 @@
      * @param name Name to which the object should be bound
      * @param value Object to be bound to the specified name
      */
+    @Override
     public void setNote(String name, Object value) {
         notes.put(name, value);
     }
@@ -1048,6 +1073,7 @@
      *
      * @return true if this Session has expired, false otherwise
      */
+    @Override
     public boolean hasExpired() {
 
         if (maxInactiveInterval >= 0
@@ -1072,6 +1098,7 @@
     /**
      * Gets the version number
      */
+    @Override
     public long getVersion() {
         return version.get();
     }
@@ -1089,6 +1116,7 @@
      * Return the single sign on id.
      * It is null if there is no SSO.
      */
+    @Override
     public String getSsoId() {
         return ssoId;
     }
@@ -1097,6 +1125,7 @@
     /**
      * Set the single sign on id.
      */
+    @Override
     public void setSsoId(String ssoId) {
         this.ssoId = ssoId;
     }
@@ -1105,6 +1134,7 @@
     /**
      * Return the single sign on version.
      */
+    @Override
     public long getSsoVersion() {
         return ssoVersion;
     }
@@ -1113,6 +1143,7 @@
     /**
      * Set the single sign on version.
      */
+    @Override
     public void setSsoVersion(long value) {
         ssoVersion = value;
     }
@@ -1121,6 +1152,7 @@
     /**
      * Return a string representation of this object.
      */
+    @Override
     public String toString() {
 
         // STARTS S1AS
@@ -1216,6 +1248,7 @@
      * @exception IllegalStateException if this method is called on an
      *  invalidated session
      */
+    @Override
     public long getCreationTime() {
 
         if (!isValid())
@@ -1230,6 +1263,7 @@
     /**
      * Return the ServletContext to which this session belongs.
      */
+    @Override
     public ServletContext getServletContext() {
 
         if (manager == null)
@@ -1242,20 +1276,6 @@
     }
 
 
-    /**
-     * Return the session context with which this session is associated.
-     *
-     * @deprecated As of Version 2.1, this method is deprecated and has no
-     *  replacement.  It will be removed in a future version of the
-     *  Java Servlet API.
-     */
-    public HttpSessionContext getSessionContext() {
-        if (sessionContext == null)
-            sessionContext = new StandardSessionContext();
-        return (sessionContext);
-
-    }
-
 
     // ----------------------------------------------HttpSession Public Methods
 
@@ -1268,6 +1288,7 @@
      *                                                                                   * @exception IllegalStateException if this method is called on an
      *  invalidated session
      */
+    @Override
     public Object getAttribute(String name) {
 
         if (!isValid())
@@ -1291,6 +1312,7 @@
      * @exception IllegalStateException if this method is called on an
      *  invalidated session
      */
+    @Override
     public Enumeration<String> getAttributeNames() {
 
         if (!isValid())
@@ -1315,6 +1337,7 @@
      * @deprecated As of Version 2.2, this method is replaced by
      *  <code>getAttribute()</code>
      */
+    @Deprecated
     public Object getValue(String name) {
 
         return (getAttribute(name));
@@ -1332,6 +1355,7 @@
      * @deprecated As of Version 2.2, this method is replaced by
      *  <code>getAttributeNames()</code>
      */
+    @Deprecated
     public String[] getValueNames() {
 
         if (!isValid())
@@ -1355,7 +1379,7 @@
      */
     protected boolean getSessionLockForForeground() {
         boolean result = false;
-        StandardSession sess = (StandardSession) this;
+        StandardSession sess = this;
         //now lock the session
         //System.out.println("IN LOCK_SESSION_FOR_FOREGROUND: sess =" + sess);
         long pollTime = 200L;
@@ -1418,6 +1442,7 @@
      * lock the session for background
      * returns true if successful; false if unsuccessful
      */
+    @Override
     public boolean lockForeground() {
         //in this case we are not using locks
         //so just return true
@@ -1445,6 +1470,7 @@
     /**
      * unlock the session from foreground
      */
+    @Override
     public void unlockForeground() {
         //in this case we are not using locks
         //so just return true
@@ -1512,6 +1538,7 @@
      *  an invalidated session
      * HERCULES:modified method
      */
+    @Override
     public void invalidate() {
 
         if (!isValid)
@@ -1541,6 +1568,7 @@
      * @exception IllegalStateException if this method is called on an
      *  invalidated session
      */
+    @Override
     public boolean isNew() {
 
         if (!isValid())
@@ -1570,6 +1598,7 @@
      * @deprecated As of Version 2.2, this method is replaced by
      *  <code>setAttribute()</code>
      */
+    @Deprecated
     public void putValue(String name, Object value) {
 
         setAttribute(name, value);
@@ -1591,6 +1620,7 @@
      * @exception IllegalStateException if this method is called on an
      *  invalidated session
      */
+    @Override
     public void removeAttribute(String name) {
 
         removeAttribute(name, true, true);
@@ -1717,6 +1747,7 @@
      * @deprecated As of Version 2.2, this method is replaced by
      *  <code>removeAttribute()</code>
      */
+    @Deprecated
     public void removeValue(String name) {
 
         removeAttribute(name);
@@ -1741,6 +1772,7 @@
      * @exception IllegalStateException if this method is called on an
      *  invalidated session
      */
+    @Override
     public void setAttribute(String name, Object value) {
 
         // Name cannot be null
@@ -2330,49 +2362,3 @@
 }
 
 
-// ------------------------------------------------------------ Protected Class
-
-
-/**
- * This class is a dummy implementation of the <code>HttpSessionContext</code>
- * interface, to conform to the requirement that such an object be returned
- * when <code>HttpSession.getSessionContext()</code> is called.
- *
- * @author Craig R. McClanahan
- *
- * @deprecated As of Java Servlet API 2.1 with no replacement.  The
- *  interface will be removed in a future version of this API.
- */
-
-final class StandardSessionContext implements HttpSessionContext {
-
-
-    private HashMap<?, String> dummy = new HashMap<String, String>();
-
-    /**
-     * Return the session identifiers of all sessions defined
-     * within this context.
-     *
-     * @deprecated As of Java Servlet API 2.1 with no replacement.
-     *  This method must return an empty <code>Enumeration</code>
-     *  and will be removed in a future version of the API.
-     */
-    public Enumeration<String> getIds() {
-        return (new Enumerator<String>(dummy));
-    }
-
-
-    /**
-     * Return the <code>HttpSession</code> associated with the
-     * specified session identifier.
-     *
-     * @param id Session identifier for which to look up a session
-     *
-     * @deprecated As of Java Servlet API 2.1 with no replacement.
-     *  This method must return null and will be removed in a
-     *  future version of the API.
-     */
-    public HttpSession getSession(String id) {
-        return (null);
-    }
-}
diff --git a/appserver/web/web-core/src/main/java/org/apache/catalina/session/StandardSessionFacade.java b/appserver/web/web-core/src/main/java/org/apache/catalina/session/StandardSessionFacade.java
index f0ba2a2..d5c7ced 100644
--- a/appserver/web/web-core/src/main/java/org/apache/catalina/session/StandardSessionFacade.java
+++ b/appserver/web/web-core/src/main/java/org/apache/catalina/session/StandardSessionFacade.java
@@ -20,7 +20,6 @@
 
 import jakarta.servlet.ServletContext;
 import jakarta.servlet.http.HttpSession;
-import jakarta.servlet.http.HttpSessionContext;
 import java.util.Enumeration;
 
 
@@ -68,102 +67,68 @@
     // ---------------------------------------------------- HttpSession Methods
 
 
+    @Override
     public long getCreationTime() {
         return session.getCreationTime();
     }
 
 
+    @Override
     public String getId() {
         return session.getId();
     }
 
 
+    @Override
     public long getLastAccessedTime() {
         return session.getLastAccessedTime();
     }
 
 
+    @Override
     public ServletContext getServletContext() {
         // FIXME : Facade this object ?
         return session.getServletContext();
     }
 
 
+    @Override
     public void setMaxInactiveInterval(int interval) {
         session.setMaxInactiveInterval(interval);
     }
 
 
+    @Override
     public int getMaxInactiveInterval() {
         return session.getMaxInactiveInterval();
     }
 
-
-    /**
-     * @deprecated
-     */
-    public HttpSessionContext getSessionContext() {
-        return session.getSessionContext();
-    }
-
-
+    @Override
     public Object getAttribute(String name) {
         return session.getAttribute(name);
     }
 
-
-    /**
-     * @deprecated
-     */
-    public Object getValue(String name) {
-        return session.getAttribute(name);
-    }
-
-
-    /**
-     * @deprecated
-     */
+    @Override
     public Enumeration<String> getAttributeNames() {
         return session.getAttributeNames();
     }
 
-
-    public String[] getValueNames() {
-        return session.getValueNames();
-    }
-
-
+    @Override
     public void setAttribute(String name, Object value) {
         session.setAttribute(name, value);
     }
 
-
-    /**
-     * @deprecated
-     */
-    public void putValue(String name, Object value) {
-        session.setAttribute(name, value);
-    }
-
-
+    @Override
     public void removeAttribute(String name) {
         session.removeAttribute(name);
     }
 
-
-    /**
-     * @deprecated
-     */
-    public void removeValue(String name) {
-        session.removeAttribute(name);
-    }
-
-
+    @Override
     public void invalidate() {
         session.invalidate();
     }
 
-
+    @Override
     public boolean isNew() {
         return session.isNew();
     }
diff --git a/appserver/web/web-embed/api/pom.xml b/appserver/web/web-embed/api/pom.xml
index ac5dcf5..94d1af3 100755
--- a/appserver/web/web-embed/api/pom.xml
+++ b/appserver/web/web-embed/api/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.web</groupId>
         <artifactId>web-embed</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>web-embed-api</artifactId>
diff --git a/appserver/web/web-embed/api/src/main/resources/org/glassfish/web/embed/default-web.xml b/appserver/web/web-embed/api/src/main/resources/org/glassfish/web/embed/default-web.xml
index 1ec4989..80d175e 100644
--- a/appserver/web/web-embed/api/src/main/resources/org/glassfish/web/embed/default-web.xml
+++ b/appserver/web/web-embed/api/src/main/resources/org/glassfish/web/embed/default-web.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
 <!--
 
+    Copyright (c) 2021 Contributors to Eclipse Foundation.
     Copyright (c) 2006, 2018 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
@@ -271,7 +272,7 @@
 
   <servlet>
     <servlet-name>jsp</servlet-name>
-    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
+    <servlet-class>org.glassfish.wasp.servlet.JspServlet</servlet-class>
     <init-param>
       <param-name>xpoweredBy</param-name>
       <param-value>true</param-value>
diff --git a/appserver/web/web-embed/pom.xml b/appserver/web/web-embed/pom.xml
index 54b5411..c31a758 100755
--- a/appserver/web/web-embed/pom.xml
+++ b/appserver/web/web-embed/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.web</groupId>
         <artifactId>web</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/web/web-glue/pom.xml b/appserver/web/web-glue/pom.xml
index 860b2ec..48605e7 100755
--- a/appserver/web/web-glue/pom.xml
+++ b/appserver/web/web-glue/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.web</groupId>
         <artifactId>web</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
@@ -132,8 +132,8 @@
             <artifactId>jakarta.el-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.glassfish</groupId>
-            <artifactId>jakarta.el</artifactId>
+            <groupId>org.glassfish.expressly</groupId>
+            <artifactId>expressly</artifactId>
         </dependency>
         <dependency>
             <groupId>org.glassfish.main.admin</groupId>
diff --git a/appserver/web/web-glue/src/main/java/com/sun/enterprise/web/Constants.java b/appserver/web/web-glue/src/main/java/com/sun/enterprise/web/Constants.java
index f299a6a..8a8e661 100644
--- a/appserver/web/web-glue/src/main/java/com/sun/enterprise/web/Constants.java
+++ b/appserver/web/web-glue/src/main/java/com/sun/enterprise/web/Constants.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -68,10 +69,10 @@
     public static final String DEFAULT_WEB_MODULE_PREFIX = "__default-";
 
     /**
-     * The Apache Jasper JSP servlet class name.
+     * The Eclipse WASP Pages servlet class name.
      */
     public static final String APACHE_JSP_SERVLET_CLASS =
-        "org.apache.jasper.servlet.JspServlet";
+        "org.glassfish.wasp.servlet.JspServlet";
 
     public static final String JSP_URL_PATTERN="*.jsp";
 
diff --git a/appserver/web/web-glue/src/main/java/com/sun/enterprise/web/ContextFacade.java b/appserver/web/web-glue/src/main/java/com/sun/enterprise/web/ContextFacade.java
index 967a1a8..d0611d7 100644
--- a/appserver/web/web-glue/src/main/java/com/sun/enterprise/web/ContextFacade.java
+++ b/appserver/web/web-glue/src/main/java/com/sun/enterprise/web/ContextFacade.java
@@ -171,21 +171,6 @@
     }
 
     @Override
-    public Servlet getServlet(String name) {
-        return context.getServlet(name);
-    }
-
-    @Override
-    public Enumeration<Servlet> getServlets() {
-        return context.getServlets();
-    }
-
-    @Override
-    public Enumeration<String> getServletNames() {
-        return context.getServletNames();
-    }
-
-    @Override
     public void log(String msg) {
         context.log(msg);
     }
@@ -309,15 +294,18 @@
         return servletMappings;
     }
 
+    @Override
     protected ServletRegistrationImpl createServletRegistrationImpl(
             StandardWrapper wrapper) {
         return new ServletRegistrationImpl(wrapper, this);
     }
+    @Override
     protected ServletRegistrationImpl createDynamicServletRegistrationImpl(
             StandardWrapper wrapper) {
         return new DynamicServletRegistrationImpl(wrapper, this);
     }
 
+    @Override
     public ServletRegistration.Dynamic addServlet(String servletName,
             Class <? extends Servlet> servletClass) {
         if (context != null) {
@@ -327,6 +315,7 @@
         }
     }
 
+    @Override
     public ServletRegistration.Dynamic addServlet(
             String servletName, Servlet servlet) {
         if (context != null) {
@@ -343,6 +332,7 @@
         return servletMappings.keySet();
     }
 
+    @Override
     public <T extends Servlet> T createServlet(Class<T> clazz)
             throws ServletException {
         if (context != null) {
@@ -357,10 +347,12 @@
         }
     }
 
+    @Override
     public ServletRegistration getServletRegistration(String servletName) {
         return servletRegisMap.get(servletName);
     }
 
+    @Override
     public Map<String, ? extends ServletRegistration> getServletRegistrations() {
         return context.getServletRegistrations();
     }
@@ -417,6 +409,7 @@
         }
     }
 
+    @Override
     public FilterRegistration.Dynamic addFilter(
             String filterName, Filter filter) {
         if (context != null) {
@@ -426,6 +419,7 @@
         }
     }
 
+    @Override
     public FilterRegistration.Dynamic addFilter(String filterName,
             Class <? extends Filter> filterClass) {
         if (context != null) {
@@ -435,6 +429,7 @@
         }
     }
 
+    @Override
     public <T extends Filter> T createFilter(Class<T> clazz)
             throws ServletException {
         if (context != null) {
@@ -449,30 +444,37 @@
         }
     }
 
+    @Override
     public FilterRegistration getFilterRegistration(String filterName) {
         return filterRegisMap.get(filterName);
     }
 
+    @Override
     public Map<String, ? extends FilterRegistration> getFilterRegistrations() {
         return context.getFilterRegistrations();
     }
 
+    @Override
     public SessionCookieConfig getSessionCookieConfig() {
         return context.getSessionCookieConfig();
     }
 
+    @Override
     public void setSessionTrackingModes(Set<SessionTrackingMode> sessionTrackingModes) {
         context.setSessionTrackingModes(sessionTrackingModes);
     }
 
+    @Override
     public Set<SessionTrackingMode> getDefaultSessionTrackingModes() {
         return context.getDefaultSessionTrackingModes();
     }
 
+    @Override
     public Set<SessionTrackingMode> getEffectiveSessionTrackingModes() {
         return context.getEffectiveSessionTrackingModes();
     }
 
+    @Override
     public void addListener(String className) {
         if (context != null) {
             context.addListener(className);
@@ -485,6 +487,7 @@
         return listenerNames;
     }
 
+    @Override
     public <T extends EventListener> void addListener(T t) {
         if (context != null) {
             context.addListener(t);
@@ -493,6 +496,7 @@
         }
     }
 
+    @Override
     public void addListener(Class <? extends EventListener> listenerClass) {
         if (context != null) {
             context.addListener(listenerClass);
@@ -501,6 +505,7 @@
         }
     }
 
+    @Override
     public <T extends EventListener> T createListener(Class<T> clazz)
             throws ServletException {
         if (context != null) {
@@ -525,10 +530,12 @@
         }
     }
 
+    @Override
     public JspConfigDescriptor getJspConfigDescriptor() {
         return context.getJspConfigDescriptor();
     }
 
+    @Override
     public ClassLoader getClassLoader() {
         if (classLoader != null) {
             return classLoader;
@@ -539,26 +546,32 @@
         }
     }
 
+    @Override
     public void declareRoles(String... roleNames) {
         context.declareRoles(roleNames);
     }
 
+    @Override
     public String getVirtualServerName() {
         return context.getVirtualServerName();
     }
 
+    @Override
     public String getPath() {
         return context.getPath();
     }
 
+    @Override
     public void setPath(String path) {
         context.setPath(path);
     }
 
+    @Override
     public String getDefaultWebXml() {
         return context.getDefaultWebXml();
     }
 
+    @Override
     public void setDefaultWebXml(String defaultWebXml) {
         context.setDefaultWebXml(defaultWebXml);
     }
@@ -582,10 +595,12 @@
     /**
      * Enables or disables directory listings on this <tt>Context</tt>.
      */
+    @Override
     public void setDirectoryListing(boolean directoryListing) {
         context.setDirectoryListing(directoryListing);
     }
 
+    @Override
     public boolean isDirectoryListing() {
         return context.isDirectoryListing();
     }
@@ -593,6 +608,7 @@
     /**
      * Set the security related configuration for this context
      */
+    @Override
     public void setSecurityConfig(SecurityConfig config) {
         this.config = config;
         if (config == null) {
@@ -605,6 +621,7 @@
     /**
      * Gets the security related configuration for this context
      */
+    @Override
     public SecurityConfig getSecurityConfig() {
         return config;
     }
diff --git a/appserver/web/web-glue/src/main/java/com/sun/enterprise/web/WebComponentDecorator.java b/appserver/web/web-glue/src/main/java/com/sun/enterprise/web/WebComponentDecorator.java
index f60f50d..66cdc02 100644
--- a/appserver/web/web-glue/src/main/java/com/sun/enterprise/web/WebComponentDecorator.java
+++ b/appserver/web/web-glue/src/main/java/com/sun/enterprise/web/WebComponentDecorator.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2009, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -19,19 +20,18 @@
 import org.jvnet.hk2.annotations.Contract;
 
 /**
- * Used to decorate a web component before it is put to service.
- * e.g., WebBeans module may like to perform additional injection
- * in a servlet or a filter.
+ * Used to decorate a web component before it is put to service. e.g., the CDI module may like to perform additional
+ * injection in a servlet or a filter.
  *
  * @author Sanjeeb.Sahoo@Sun.COM
  */
 @Contract
-public interface WebComponentDecorator<T>
-{
+public interface WebComponentDecorator<T> {
     /**
      * Decoare a web component.
+     *
      * @param webComponent web component to be decorated.
-     * @param wm web module which owns this web component.
+     * @param webModule web module which owns this web component.
      */
-    void decorate(T webComponent, WebModule wm);
+    void decorate(T webComponent, WebModule webModule);
 }
diff --git a/appserver/web/web-glue/src/main/java/com/sun/enterprise/web/WebComponentInvocation.java b/appserver/web/web-glue/src/main/java/com/sun/enterprise/web/WebComponentInvocation.java
index 81f13c2..4a8ffe4 100644
--- a/appserver/web/web-glue/src/main/java/com/sun/enterprise/web/WebComponentInvocation.java
+++ b/appserver/web/web-glue/src/main/java/com/sun/enterprise/web/WebComponentInvocation.java
@@ -16,12 +16,12 @@
 
 package com.sun.enterprise.web;
 
+import java.lang.reflect.Method;
+
 import org.glassfish.api.invocation.ComponentInvocation;
 
 import jakarta.servlet.Filter;
 import jakarta.servlet.Servlet;
-import jakarta.servlet.SingleThreadModel;
-import java.lang.reflect.Method;
 
 public class WebComponentInvocation extends ComponentInvocation {
 
@@ -58,12 +58,7 @@
         Object resourceTableKey = null;
         if (instance instanceof Servlet || instance instanceof Filter) {
             // Servlet or Filter
-            if (instance instanceof SingleThreadModel) {
-                resourceTableKey = instance;
-            } else {
-                resourceTableKey =
-                        new PairKey(instance, Thread.currentThread());
-            }
+            resourceTableKey = new PairKey(instance, Thread.currentThread());
         } else {
             resourceTableKey = instance;
         }
diff --git a/appserver/web/web-glue/src/main/java/com/sun/enterprise/web/WebContainer.java b/appserver/web/web-glue/src/main/java/com/sun/enterprise/web/WebContainer.java
index bdfede0..fa36197 100644
--- a/appserver/web/web-glue/src/main/java/com/sun/enterprise/web/WebContainer.java
+++ b/appserver/web/web-glue/src/main/java/com/sun/enterprise/web/WebContainer.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -60,8 +61,8 @@
 import org.apache.catalina.startup.ContextConfig;
 import org.apache.catalina.util.RequestUtil;
 import org.apache.catalina.util.ServerInfo;
-import org.apache.jasper.runtime.JspFactoryImpl;
-import org.apache.jasper.xmlparser.ParserUtils;
+import org.glassfish.wasp.runtime.JspFactoryImpl;
+import org.glassfish.wasp.xmlparser.ParserUtils;
 import org.glassfish.api.admin.ServerEnvironment;
 import org.glassfish.api.event.EventListener;
 import org.glassfish.api.event.EventTypes;
diff --git a/appserver/web/web-glue/src/main/java/com/sun/enterprise/web/WebModule.java b/appserver/web/web-glue/src/main/java/com/sun/enterprise/web/WebModule.java
index 2e6106c..5de356d 100644
--- a/appserver/web/web-glue/src/main/java/com/sun/enterprise/web/WebModule.java
+++ b/appserver/web/web-glue/src/main/java/com/sun/enterprise/web/WebModule.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -40,7 +41,7 @@
 import org.apache.catalina.loader.WebappLoader;
 import org.apache.catalina.servlets.DefaultServlet;
 import org.apache.catalina.session.StandardManager;
-import org.apache.jasper.servlet.JspServlet;
+import org.glassfish.wasp.servlet.JspServlet;
 import org.glassfish.api.deployment.DeploymentContext;
 import org.glassfish.embeddable.web.Context;
 import org.glassfish.embeddable.web.config.FormLoginConfig;
diff --git a/appserver/web/web-glue/src/main/java/com/sun/enterprise/web/WebModuleListener.java b/appserver/web/web-glue/src/main/java/com/sun/enterprise/web/WebModuleListener.java
index db3d17b..c68e7a6 100644
--- a/appserver/web/web-glue/src/main/java/com/sun/enterprise/web/WebModuleListener.java
+++ b/appserver/web/web-glue/src/main/java/com/sun/enterprise/web/WebModuleListener.java
@@ -16,6 +16,41 @@
 
 package com.sun.enterprise.web;
 
+import static java.util.logging.Level.FINE;
+import static java.util.logging.Level.FINER;
+import static java.util.logging.Level.WARNING;
+
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.StringTokenizer;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.regex.Pattern;
+//import com.sun.enterprise.server.PersistenceUnitLoaderImpl;
+//import com.sun.enterprise.server.PersistenceUnitLoader;
+//import com.sun.enterprise.config.ConfigException;
+
+import javax.naming.NamingException;
+
+import org.apache.catalina.Globals;
+import org.apache.catalina.Lifecycle;
+import org.apache.catalina.LifecycleEvent;
+import org.apache.catalina.LifecycleException;
+import org.apache.catalina.LifecycleListener;
+import org.apache.catalina.Wrapper;
+import org.glassfish.api.invocation.InvocationManager;
+import org.glassfish.api.web.TldProvider;
+import org.glassfish.hk2.api.ServiceLocator;
+import org.glassfish.loader.util.ASClassLoaderUtil;
+import org.glassfish.web.LogFacade;
+import org.glassfish.web.deployment.runtime.SunWebAppImpl;
+import org.glassfish.web.deployment.runtime.WebProperty;
+import org.glassfish.web.deployment.util.WebValidatorWithCL;
+
 import com.sun.appserv.web.cache.CacheManager;
 import com.sun.enterprise.container.common.spi.JCDIService;
 import com.sun.enterprise.deployment.WebBundleDescriptor;
@@ -25,31 +60,8 @@
 import com.sun.enterprise.util.net.JarURIPattern;
 import com.sun.enterprise.web.jsp.JspProbeEmitterImpl;
 import com.sun.enterprise.web.jsp.ResourceInjectorImpl;
-import org.apache.catalina.*;
-import org.glassfish.api.invocation.InvocationManager;
-import org.glassfish.api.web.TldProvider;
-import org.glassfish.web.LogFacade;
-import org.glassfish.web.deployment.runtime.WebProperty;
-import org.glassfish.web.deployment.runtime.SunWebAppImpl;
-import org.glassfish.web.deployment.util.WebValidatorWithCL;
-import org.glassfish.loader.util.ASClassLoaderUtil;
-import org.glassfish.hk2.api.ServiceLocator;
 
-import javax.naming.NamingException;
 import jakarta.servlet.ServletContext;
-import java.net.URI;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import java.util.StringTokenizer;
-import java.util.regex.Pattern;
-//import com.sun.enterprise.server.PersistenceUnitLoaderImpl;
-//import com.sun.enterprise.server.PersistenceUnitLoader;
-//import com.sun.enterprise.config.ConfigException;
 
 /**
  * Startup event listener for a <b>Context</b> that configures the properties
@@ -90,6 +102,7 @@
      * Process the START event for an associated WebModule
      * @param event The lifecycle event that has occurred
      */
+    @Override
     public void lifecycleEvent(LifecycleEvent event) {
 
         // Identify the context we are associated with
@@ -97,7 +110,7 @@
         try {
             webModule = (WebModule) event.getLifecycle();
         } catch (ClassCastException e) {
-            _logger.log(Level.WARNING, LogFacade.CLASS_CAST_EXCEPTION, event.getLifecycle());
+            _logger.log(WARNING, LogFacade.CLASS_CAST_EXCEPTION, event.getLifecycle());
             return;
         }
 
@@ -137,7 +150,7 @@
 
         // Find tld URI and set it to ServletContext attribute
         List<URI> appLibUris = webModule.getDeployAppLibs();
-        Map<URI, List<String>> appLibTldMap = new HashMap<URI, List<String>>();
+        Map<URI, List<String>> appLibTldMap = new HashMap<>();
         if (appLibUris != null && appLibUris.size() > 0) {
             Pattern pattern = Pattern.compile("META-INF/.*\\.tld");
             for (URI uri : appLibUris) {
@@ -150,7 +163,7 @@
 
         Collection<TldProvider> tldProviders =
             webContainer.getTldProviders();
-        Map<URI, List<String>> tldMap = new HashMap<URI, List<String>>();
+        Map<URI, List<String>> tldMap = new HashMap<>();
         for (TldProvider tldProvider : tldProviders) {
             // Skip any JSF related TLDs for non-JSF apps
             if ("jsfTld".equals(tldProvider.getName()) &&
@@ -172,7 +185,7 @@
          * ServletContext attribute
          */
         Map<URI, List<String>> tldListenerMap =
-            new HashMap<URI, List<String>>();
+            new HashMap<>();
         for (TldProvider tldProvider : tldProviders) {
             // Skip any JSF related TLDs for non-JSF apps
             if ("jsfTld".equals(tldProvider.getName()) &&
@@ -212,8 +225,8 @@
             for (int i = 0; i < props.length; i++) {
                 String pname = props[i].getAttributeValue("name");
                 String pvalue = props[i].getAttributeValue("value");
-                if (_logger.isLoggable(Level.FINE)) {
-                    _logger.log(Level.FINE,
+                if (_logger.isLoggable(FINE)) {
+                    _logger.log(FINE,
                             LogFacade.JSP_CONFIG_PROPERTY,
                             "[" + webModule.getID() + "] is [" + pname + "] = [" + pvalue + "]");
                 }
@@ -222,7 +235,7 @@
         }
 
         // Override any log setting with the container wide logging level
-        wrapper.addInitParameter("logVerbosityLevel",getJasperLogLevel());
+        wrapper.addInitParameter("logVerbosityLevel",getWaspLogLevel());
 
         ResourceInjectorImpl resourceInjector = new ResourceInjectorImpl(
             webModule);
@@ -232,7 +245,7 @@
 
         // START SJSAS 6311155
         String sysClassPath = ASClassLoaderUtil.getModuleClassPath(
-            (ServiceLocator) defaultServices,
+            defaultServices,
             webModule.getID(), null
         );
         // If the configuration flag usMyFaces is set, remove jakarta.faces.jar
@@ -248,8 +261,8 @@
         }
         // TODO: combine with classpath from
         // servletContext.getAttribute(("org.apache.catalina.jsp_classpath")
-        if (_logger.isLoggable(Level.FINE)) {
-            _logger.log(Level.FINE, LogFacade.SYS_CLASSPATH, webModule.getID() + " is " + sysClassPath);
+        if (_logger.isLoggable(FINE)) {
+            _logger.log(FINE, LogFacade.SYS_CLASSPATH, webModule.getID() + " is " + sysClassPath);
         }
         if (sysClassPath.equals("")) {
             // In embedded mode, services returns SingleModulesRegistry and
@@ -295,7 +308,7 @@
             return;
         }
 
-        String includeJarsString = null;;
+        String includeJarsString = null;
         for (WebComponentDescriptor wcd: wbd.getWebComponentDescriptors()) {
             if ("jsp".equals(wcd.getCanonicalName())) {
                 InitializationParameter initp =
@@ -311,7 +324,7 @@
             includeJars = null;
             return;
         }
-        includeJars = new ArrayList<String>();
+        includeJars = new ArrayList<>();
         StringTokenizer tokenizer = new StringTokenizer(includeJarsString);
         while (tokenizer.hasMoreElements()) {
             includeJars.add(tokenizer.nextToken());
@@ -359,18 +372,25 @@
      * Determine the debug setting for JspServlet based on the iAS log
      * level.
      */
-    private String getJasperLogLevel() {
+    private String getWaspLogLevel() {
         Level level = _logger.getLevel();
-        if (level == null )
+        if (level == null ) {
             return "warning";
-        if (level.equals(Level.WARNING))
+        }
+
+        if (level.equals(WARNING)) {
             return "warning";
-        else if (level.equals(Level.FINE))
+        }
+
+        if (level.equals(FINE)) {
             return "information";
-        else if (level.equals(Level.FINER) || level.equals(Level.FINEST))
+        }
+
+        if (level.equals(FINER) || level.equals(Level.FINEST)) {
             return "debug";
-        else
-            return "warning";
+        }
+
+        return "warning";
     }
 
     private void startCacheManager(WebModule webModule) {
@@ -383,15 +403,15 @@
             try {
                 cm = CacheModule.configureResponseCache(webModule, bean);
             } catch (Exception ee) {
-                _logger.log(Level.WARNING, LogFacade.CACHE_MRG_EXCEPTION, ee);
+                _logger.log(WARNING, LogFacade.CACHE_MRG_EXCEPTION, ee);
             }
 
             if (cm != null) {
                 try {
                     // first start the CacheManager, if enabled
                     cm.start();
-                    if (_logger.isLoggable(Level.FINE)) {
-                        _logger.log(Level.FINE, LogFacade.CACHE_MANAGER_STARTED);
+                    if (_logger.isLoggable(FINE)) {
+                        _logger.log(FINE, LogFacade.CACHE_MANAGER_STARTED);
                     }
                     // set this manager as a context attribute so that
                     // caching filters/tags can find it
@@ -399,7 +419,7 @@
                     ctxt.setAttribute(CacheManager.CACHE_MANAGER_ATTR_NAME, cm);
 
                 } catch (LifecycleException ee) {
-                    _logger.log(Level.WARNING, ee.getMessage(),
+                    _logger.log(WARNING, ee.getMessage(),
                                                ee.getCause());
                 }
             }
@@ -413,12 +433,12 @@
         if (cm != null) {
             try {
                 cm.stop();
-                if (_logger.isLoggable(Level.FINE)) {
-                    _logger.log(Level.FINE, LogFacade.CACHE_MANAGER_STOPPED);
+                if (_logger.isLoggable(FINE)) {
+                    _logger.log(FINE, LogFacade.CACHE_MANAGER_STOPPED);
                 }
                 ctxt.removeAttribute(CacheManager.CACHE_MANAGER_ATTR_NAME);
             } catch (LifecycleException ee) {
-                _logger.log(Level.WARNING, ee.getMessage(), ee.getCause());
+                _logger.log(WARNING, ee.getMessage(), ee.getCause());
             }
         }
     }
diff --git a/appserver/web/web-glue/src/main/java/com/sun/web/server/J2EEInstanceListener.java b/appserver/web/web-glue/src/main/java/com/sun/web/server/J2EEInstanceListener.java
index d22df20..cbbaa2f 100644
--- a/appserver/web/web-glue/src/main/java/com/sun/web/server/J2EEInstanceListener.java
+++ b/appserver/web/web-glue/src/main/java/com/sun/web/server/J2EEInstanceListener.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -16,6 +17,33 @@
 
 package com.sun.web.server;
 
+import java.security.AccessControlException;
+import java.security.AccessController;
+import java.security.Policy;
+import java.security.Principal;
+import java.security.PrivilegedAction;
+import java.security.ProtectionDomain;
+import java.text.MessageFormat;
+import java.util.ResourceBundle;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+//END OF IASRI 4660742
+
+import org.apache.catalina.Context;
+import org.apache.catalina.InstanceEvent;
+import org.apache.catalina.InstanceListener;
+import org.apache.catalina.Realm;
+import org.apache.catalina.Wrapper;
+import org.apache.catalina.connector.RequestFacade;
+import org.apache.catalina.servlets.DefaultServlet;
+import org.glassfish.api.invocation.ComponentInvocation;
+import org.glassfish.api.invocation.InvocationManager;
+import org.glassfish.hk2.api.ServiceHandle;
+import org.glassfish.hk2.api.ServiceLocator;
+import org.glassfish.internal.api.ServerContext;
+import org.glassfish.wasp.servlet.JspServlet;
+import org.glassfish.web.LogFacade;
+
 import com.sun.enterprise.container.common.spi.util.InjectionException;
 import com.sun.enterprise.container.common.spi.util.InjectionManager;
 import com.sun.enterprise.security.integration.AppServSecurityContext;
@@ -24,16 +52,6 @@
 import com.sun.enterprise.transaction.api.JavaEETransactionManager;
 import com.sun.enterprise.web.WebComponentInvocation;
 import com.sun.enterprise.web.WebModule;
-import org.apache.catalina.*;
-import org.apache.catalina.connector.RequestFacade;
-import org.apache.catalina.servlets.DefaultServlet;
-import org.apache.jasper.servlet.JspServlet;
-import org.glassfish.api.invocation.ComponentInvocation;
-import org.glassfish.api.invocation.InvocationManager;
-import org.glassfish.hk2.api.ServiceHandle;
-import org.glassfish.hk2.api.ServiceLocator;
-import org.glassfish.internal.api.ServerContext;
-import org.glassfish.web.LogFacade;
 
 import jakarta.servlet.Servlet;
 import jakarta.servlet.ServletRequest;
@@ -41,12 +59,6 @@
 import jakarta.servlet.ServletResponse;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
-import java.security.*;
-import java.text.MessageFormat;
-import java.util.ResourceBundle;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-//END OF IASRI 4660742
 
 /**
  * This class implements the Tomcat InstanceListener interface and
diff --git a/appserver/web/web-glue/src/main/java/org/apache/jsp/jsp/test_jsp.java b/appserver/web/web-glue/src/main/java/org/apache/jsp/jsp/test_jsp.java
new file mode 100644
index 0000000..10756cf
--- /dev/null
+++ b/appserver/web/web-glue/src/main/java/org/apache/jsp/jsp/test_jsp.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 1997, 2021 Oracle and/or its affiliates. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0, which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * This Source Code may also be made available under the following Secondary
+ * Licenses when the conditions for such availability set forth in the
+ * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ * version 2 with the GNU Classpath Exception, which is available at
+ * https://www.gnu.org/software/classpath/license.html.
+ *
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+ */
+
+package org.apache.jsp.jsp;
+
+import jakarta.servlet.*;
+import jakarta.servlet.http.*;
+import jakarta.servlet.jsp.*;
+
+public final class test_jsp extends org.glassfish.wasp.runtime.HttpJspBase implements org.glassfish.wasp.runtime.JspSourceDependent {
+
+    private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory();
+
+    private static java.util.List<String> _jspx_dependants;
+
+    private org.glassfish.jsp.api.ResourceInjector _jspx_resourceInjector;
+
+    public java.util.List<String> getDependants() {
+        return _jspx_dependants;
+    }
+
+    public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException {
+
+        PageContext pageContext = null;
+        HttpSession session = null;
+        ServletContext application = null;
+        ServletConfig config = null;
+        JspWriter out = null;
+        Object page = this;
+        JspWriter _jspx_out = null;
+        PageContext _jspx_page_context = null;
+
+        try {
+            response.setContentType("text/html");
+            response.setHeader("X-Powered-By", "JSP/2.3");
+            pageContext = _jspxFactory.getPageContext(this, request, response, null, true, 8192, true);
+            _jspx_page_context = pageContext;
+            application = pageContext.getServletContext();
+            config = pageContext.getServletConfig();
+            session = pageContext.getSession();
+            out = pageContext.getOut();
+            _jspx_out = out;
+            _jspx_resourceInjector = (org.glassfish.jsp.api.ResourceInjector)
+                application.getAttribute("com.sun.appserv.jsp.resource.injector");
+
+            out.write("This is my UPDATED output\n\n");
+        } catch (Throwable t) {
+            if (!(t instanceof SkipPageException)) {
+                out = _jspx_out;
+                if (out != null && out.getBufferSize() != 0)
+                    out.clearBuffer();
+                if (_jspx_page_context != null)
+                    _jspx_page_context.handlePageException(t);
+                else
+                    throw new ServletException(t);
+            }
+        } finally {
+            _jspxFactory.releasePageContext(_jspx_page_context);
+        }
+    }
+}
diff --git a/appserver/web/web-glue/src/main/java/org/apache/jsp/nullErrorPage_jsp.java b/appserver/web/web-glue/src/main/java/org/apache/jsp/nullErrorPage_jsp.java
new file mode 100644
index 0000000..c5ae178
--- /dev/null
+++ b/appserver/web/web-glue/src/main/java/org/apache/jsp/nullErrorPage_jsp.java
@@ -0,0 +1,68 @@
+package org.apache.jsp;
+
+import jakarta.servlet.*;
+import jakarta.servlet.http.*;
+import jakarta.servlet.jsp.*;
+
+public final class nullErrorPage_jsp extends org.glassfish.wasp.runtime.HttpJspBase
+    implements org.glassfish.wasp.runtime.JspSourceDependent {
+
+  private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory();
+
+  private static java.util.List<String> _jspx_dependants;
+
+  private org.glassfish.jsp.api.ResourceInjector _jspx_resourceInjector;
+
+  public java.util.List<String> getDependants() {
+    return _jspx_dependants;
+  }
+
+  public void _jspService(HttpServletRequest request, HttpServletResponse response)
+        throws java.io.IOException, ServletException {
+
+    PageContext pageContext = null;
+    HttpSession session = null;
+    Throwable exception = org.glassfish.wasp.runtime.JspRuntimeLibrary.getThrowable(request);
+    if (exception != null) {
+      response.setStatus((Integer)request.getAttribute("jakarta.servlet.error.status_code"));
+    }
+    ServletContext application = null;
+    ServletConfig config = null;
+    JspWriter out = null;
+    Object page = this;
+    JspWriter _jspx_out = null;
+    PageContext _jspx_page_context = null;
+
+    try {
+      response.setContentType("text/html");
+      response.setHeader("X-Powered-By", "JSP/3.0");
+      pageContext = _jspxFactory.getPageContext(this, request, response,
+                  null, true, 8192, true);
+      _jspx_page_context = pageContext;
+      application = pageContext.getServletContext();
+      config = pageContext.getServletConfig();
+      session = pageContext.getSession();
+      out = pageContext.getOut();
+      _jspx_out = out;
+      _jspx_resourceInjector = (org.glassfish.jsp.api.ResourceInjector) application.getAttribute("com.sun.appserv.jsp.resource.injector");
+
+      out.write("\n");
+      out.write("\n");
+      out.write("\n");
+      out.write((java.lang.String) org.glassfish.wasp.runtime.PageContextImpl.evaluateExpression("${pageContext.exception}", java.lang.String.class, (PageContext)_jspx_page_context, null));
+      out.write('\n');
+      out.write((java.lang.String) org.glassfish.wasp.runtime.PageContextImpl.evaluateExpression("${pageContext.errorData.throwable}", java.lang.String.class, (PageContext)_jspx_page_context, null));
+      out.write('\n');
+    } catch (Throwable t) {
+      if (!(t instanceof SkipPageException)){
+        out = _jspx_out;
+        if (out != null && out.getBufferSize() != 0)
+          out.clearBuffer();
+        if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
+        else throw new ServletException(t);
+      }
+    } finally {
+      _jspxFactory.releasePageContext(_jspx_page_context);
+    }
+  }
+}
diff --git a/appserver/web/web-glue/src/main/java/org/glassfish/web/deployment/descriptor/JspGroupDescriptor.java b/appserver/web/web-glue/src/main/java/org/glassfish/web/deployment/descriptor/JspGroupDescriptor.java
index 8744016..7e8bfcd 100644
--- a/appserver/web/web-glue/src/main/java/org/glassfish/web/deployment/descriptor/JspGroupDescriptor.java
+++ b/appserver/web/web-glue/src/main/java/org/glassfish/web/deployment/descriptor/JspGroupDescriptor.java
@@ -43,6 +43,7 @@
     /**
      * Return the set of URL pattern aliases for this group.
      */
+    @Override
     public Set<String> getUrlPatterns() {
         if (this.urlPatterns == null) {
             this.urlPatterns = new OrderedSet<String>();
@@ -69,6 +70,7 @@
     /**
      * Return an Iterable over the include prelude elements for this group.
      */
+    @Override
     public Set<String> getIncludePreludes() {
         if (this.includePreludes == null) {
             this.includePreludes = new OrderedSet<String>();
@@ -95,6 +97,7 @@
     /**
      * Return an Iterable over include coda elements for this group.
      */
+    @Override
     public Set<String> getIncludeCodas() {
         if (this.includeCodas == null) {
             this.includeCodas = new OrderedSet<String>();
@@ -125,6 +128,7 @@
         elIgnored = value;
     }
 
+    @Override
     public String getElIgnored() {
         return elIgnored;
     }
@@ -136,6 +140,7 @@
         scriptingInvalid = value;
     }
 
+    @Override
     public String getScriptingInvalid() {
         return scriptingInvalid;
     }
@@ -147,6 +152,7 @@
         isXml = value;
     }
 
+    @Override
     public String getIsXml() {
         return isXml;
     }
@@ -158,6 +164,7 @@
         deferredSyntaxAllowedAsLiteral = value;
     }
 
+    @Override
     public String getDeferredSyntaxAllowedAsLiteral() {
         return deferredSyntaxAllowedAsLiteral;
     }
@@ -169,6 +176,7 @@
         trimDirectiveWhitespaces = value;
     }
 
+    @Override
     public String getTrimDirectiveWhitespaces() {
         return trimDirectiveWhitespaces;
     }
@@ -176,6 +184,7 @@
     /**
      * get display name.
      */
+    @Override
     public String getDisplayName() {
         // bug#4745178  other code requires the
         // display name to be localized.
@@ -185,12 +194,14 @@
     /**
      * set display name.
      */
+    @Override
     public void setDisplayName(String name) {
         // bug#4745178  other code requires the
         // display name to be localized.
         super.setName(name);
     }
 
+    @Override
     public String getPageEncoding() {
         return pageEncoding;
     }
@@ -202,6 +213,7 @@
     /**
      * get defaultContentType
      */
+    @Override
     public String getDefaultContentType() {
         return defaultContentType;
     }
@@ -216,6 +228,7 @@
     /**
      * get buffer
      */
+    @Override
     public String getBuffer() {
         return buffer;
     }
@@ -234,6 +247,7 @@
         errorOnUndeclaredNamespace = value;
     }
 
+    @Override
     public String getErrorOnUndeclaredNamespace() {
         return errorOnUndeclaredNamespace;
     }
@@ -241,6 +255,7 @@
     /**
      * @return a string describing the values I hold
      */
+    @Override
     public void print(StringBuffer toStringBuffer) {
         toStringBuffer.append("\n JspGroupDescriptor");
         toStringBuffer.append( "\n");
@@ -259,4 +274,10 @@
         toStringBuffer.append( "\n buffer: ").append(buffer);
         toStringBuffer.append( "\n errorOnUndeclaredNamespace: ").append(errorOnUndeclaredNamespace);
     }
+
+    @Override
+    public String getErrorOnELNotFound() {
+        // TODO IMPLEMENT!
+        return null;
+    }
 }
diff --git a/appserver/web/web-glue/src/main/java/org/glassfish/web/jsp/JSPCompiler.java b/appserver/web/web-glue/src/main/java/org/glassfish/web/jsp/JSPCompiler.java
index ee5ebe9..2c7bef9 100644
--- a/appserver/web/web-glue/src/main/java/org/glassfish/web/jsp/JSPCompiler.java
+++ b/appserver/web/web-glue/src/main/java/org/glassfish/web/jsp/JSPCompiler.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -16,8 +17,8 @@
 
 /*
  * Indentation Information:
- * 0. Please (try to) preserve these settings.
- * 1. Tabs are preferred over spaces.
+ * 0. Please do not (try to) preserve these settings.
+ * 1. Tabs are not preferred over spaces.
  * 2. In vi/vim -
  *             :set tabstop=4 :set shiftwidth=4 :set softtabstop=4
  * 3. In S1 Studio -
@@ -32,11 +33,6 @@
 
 package org.glassfish.web.jsp;
 
-import com.sun.enterprise.deployment.WebBundleDescriptor;
-import com.sun.enterprise.deployment.WebComponentDescriptor;
-import com.sun.enterprise.deployment.web.InitializationParameter;
-import com.sun.enterprise.util.io.FileUtils;
-
 import java.io.File;
 import java.util.Enumeration;
 import java.util.Iterator;
@@ -45,15 +41,20 @@
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import org.apache.jasper.JspC;
 import org.glassfish.deployment.common.DeploymentException;
 import org.glassfish.internal.api.ServerContext;
 import org.glassfish.loader.util.ASClassLoaderUtil;
+import org.glassfish.wasp.JspC;
 import org.glassfish.web.LogFacade;
 import org.glassfish.web.deployment.runtime.JspConfig;
 import org.glassfish.web.deployment.runtime.SunWebAppImpl;
 import org.glassfish.web.deployment.runtime.WebProperty;
 
+import com.sun.enterprise.deployment.WebBundleDescriptor;
+import com.sun.enterprise.deployment.WebComponentDescriptor;
+import com.sun.enterprise.deployment.web.InitializationParameter;
+import com.sun.enterprise.util.io.FileUtils;
+
 public final class JSPCompiler {
 
     public static void compile(File inWebDir, File outWebDir, WebBundleDescriptor wbd, ServerContext serverContext)
diff --git a/appserver/web/web-ha/pom.xml b/appserver/web/web-ha/pom.xml
index 7214421..ef71202 100755
--- a/appserver/web/web-ha/pom.xml
+++ b/appserver/web/web-ha/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.web</groupId>
         <artifactId>web</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/web/web-naming/pom.xml b/appserver/web/web-naming/pom.xml
index f6636dc..9651917 100755
--- a/appserver/web/web-naming/pom.xml
+++ b/appserver/web/web-naming/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.web</groupId>
         <artifactId>web</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
@@ -50,8 +50,12 @@
 
     <dependencies>
         <dependency>
-            <groupId>com.sun.mail</groupId>
-            <artifactId>jakarta.mail</artifactId>
+            <groupId>jakarta.mail</groupId>
+            <artifactId>jakarta.mail-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.angus</groupId>
+            <artifactId>angus-mail</artifactId>
         </dependency>
         <dependency>
             <groupId>org.glassfish.grizzly</groupId>
diff --git a/appserver/web/web-sse/pom.xml b/appserver/web/web-sse/pom.xml
index 9609f4b..de9a013 100755
--- a/appserver/web/web-sse/pom.xml
+++ b/appserver/web/web-sse/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.web</groupId>
         <artifactId>web</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/web/web-sse/src/main/java/org/glassfish/sse/api/ServerSentEvent.java b/appserver/web/web-sse/src/main/java/org/glassfish/sse/api/ServerSentEvent.java
index 35d17b4..4523864 100644
--- a/appserver/web/web-sse/src/main/java/org/glassfish/sse/api/ServerSentEvent.java
+++ b/appserver/web/web-sse/src/main/java/org/glassfish/sse/api/ServerSentEvent.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2011, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -16,32 +17,35 @@
 
 package org.glassfish.sse.api;
 
-import java.lang.annotation.ElementType;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
 import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
 /**
- * {@code ServerSentEvent} indicates a server component that pushes
- * notifications to clients via a HTTP connection. Browser applications
- * typically use <a href="http://dev.w3.org/html5/eventsource/">EventSource</a>
- * API to connect to this source of server-sent events.
+ * {@code ServerSentEvent} indicates a server component that pushes notifications to clients via a HTTP connection.
+ * Browser applications typically use <a href="http://dev.w3.org/html5/eventsource/">EventSource</a> API to connect to
+ * this source of server-sent events.
  *
  * <p>
- * Server component class needs to have {@code ServerSentEvent} annotation and
- * provides the implementation of {@code ServerSentEventHandler}. For example:
- * <pre><code>
+ * Server component class needs to have {@code ServerSentEvent} annotation and provides the implementation of
+ * {@code ServerSentEventHandler}. For example:
+ *
+ * <pre>
+ * <code>
  *     &#64;ServerSentEvent("/foo")
  *     public class FooHandler extends ServerSentEventHandler {
  *         ...
  *     }
- * </code></pre>
+ * </code>
+ * </pre>
  *
  * @author Jitendra Kotamraju
  * @author Santiago.PericasGeertsen@oracle.com
  */
-@Target(value = {ElementType.TYPE})
-@Retention(value = RetentionPolicy.RUNTIME)
+@Target(TYPE)
+@Retention(RUNTIME)
 public @interface ServerSentEvent {
 
     /**
@@ -50,5 +54,3 @@
     public String value();
 
 }
-
-
diff --git a/appserver/web/web-sse/src/main/java/org/glassfish/sse/api/ServerSentEventConnection.java b/appserver/web/web-sse/src/main/java/org/glassfish/sse/api/ServerSentEventConnection.java
index ea75fcf..02a879a 100644
--- a/appserver/web/web-sse/src/main/java/org/glassfish/sse/api/ServerSentEventConnection.java
+++ b/appserver/web/web-sse/src/main/java/org/glassfish/sse/api/ServerSentEventConnection.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2011, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -37,8 +38,7 @@
     /**
      * Event source's last event ID.
      *
-     * @return null if there is no HTTP header in the request
-     *         otherwise, last event ID
+     * @return null if there is no HTTP header in the request otherwise, last event ID
      */
     public String getLastEventID() {
         return getRequest().getHeader("Last-Event-ID");
@@ -56,13 +56,13 @@
 
     /**
      * Sends the Server-Sent event to client
+     *
      * @param eventData Server-Sent event data
      * @throws IOException when there is an error in sending
      * @throws IllegalStateException when called after calling close method
      * @see ServerSentEventData
      */
-    public abstract void sendMessage(ServerSentEventData eventData)
-            throws IOException;
+    public abstract void sendMessage(ServerSentEventData eventData) throws IOException;
 
     /**
      * Closes the connection
diff --git a/appserver/web/web-sse/src/main/java/org/glassfish/sse/api/ServerSentEventContext.java b/appserver/web/web-sse/src/main/java/org/glassfish/sse/api/ServerSentEventContext.java
index 7a0522f..980c50d 100644
--- a/appserver/web/web-sse/src/main/java/org/glassfish/sse/api/ServerSentEventContext.java
+++ b/appserver/web/web-sse/src/main/java/org/glassfish/sse/api/ServerSentEventContext.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2011, 2020 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -20,7 +21,7 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
-import jakarta.enterprise.util.Nonbinding;
+
 import jakarta.inject.Qualifier;
 
 /**
diff --git a/appserver/web/web-sse/src/main/java/org/glassfish/sse/api/ServerSentEventData.java b/appserver/web/web-sse/src/main/java/org/glassfish/sse/api/ServerSentEventData.java
index 8d8fc93..cbe4216 100644
--- a/appserver/web/web-sse/src/main/java/org/glassfish/sse/api/ServerSentEventData.java
+++ b/appserver/web/web-sse/src/main/java/org/glassfish/sse/api/ServerSentEventData.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2011, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -20,8 +21,9 @@
  * Represents a Server-Sent Event data.
  *
  * <p>
- * {@code new ServerSentEventData().data("YHOO").data("+2").data("10)} would send
- * the following event (followed by blank line):
+ * {@code new ServerSentEventData().data("YHOO").data("+2").data("10)} would send the following event (followed by blank
+ * line):
+ *
  * <pre>
  * data:YHOO
  * data:+2
@@ -30,24 +32,26 @@
  * </pre>
  *
  * <p>
- * {@code new ServerSentEventData().comment("test stream")} would send the
- * following event (followed by blank line):
+ * {@code new ServerSentEventData().comment("test stream")} would send the following event (followed by blank line):
+ *
  * <pre>
  * :test stream
  *
  * </pre>
  *
  * <p>
- * {@code new ServerSentEventData().data("first event").id("1")} would send the
- * following event (followed by blank line):
+ * {@code new ServerSentEventData().data("first event").id("1")} would send the following event (followed by blank
+ * line):
+ *
  * <pre>
  * data:first event
  * id:1
  * </pre>
  *
  * <p>
- * {@code new ServerSentEventData().event("add").data("73857293")} would send the
- * following event (followed by blank line):
+ * {@code new ServerSentEventData().event("add").data("73857293")} would send the following event (followed by blank
+ * line):
+ *
  * <pre>
  * event:add
  * data:73857293
diff --git a/appserver/web/web-sse/src/main/java/org/glassfish/sse/api/ServerSentEventHandler.java b/appserver/web/web-sse/src/main/java/org/glassfish/sse/api/ServerSentEventHandler.java
index 7bf551f..b8979bb 100644
--- a/appserver/web/web-sse/src/main/java/org/glassfish/sse/api/ServerSentEventHandler.java
+++ b/appserver/web/web-sse/src/main/java/org/glassfish/sse/api/ServerSentEventHandler.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2011, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -17,7 +18,6 @@
 package org.glassfish.sse.api;
 
 import jakarta.servlet.http.HttpServletRequest;
-import java.io.IOException;
 
 /**
  * A handler that handles Server-Sent Events.
@@ -28,18 +28,18 @@
 public abstract class ServerSentEventHandler {
     protected ServerSentEventConnection connection;
 
-    public enum Status { DONT_RECONNECT, OK }
+    public enum Status {
+        DONT_RECONNECT, OK
+    }
 
     /**
-     * A callback to indicate that a client connects to receive Server-Sent Events.
-     * The application has full access to HTTP request and can decide whether
-     * to accept the connection or reject it. In SSE, clients will reconnect
-     * if the connection is closed, but can be told to stop reconnecting by
-     * returning the appropriate status.
+     * A callback to indicate that a client connects to receive Server-Sent Events. The application has full access to HTTP
+     * request and can decide whether to accept the connection or reject it. In SSE, clients will reconnect if the
+     * connection is closed, but can be told to stop reconnecting by returning the appropriate status.
      *
      * <p>
-     * Last-Event-ID may be used in determining the status and it can be
-     * got using {@code HttpServletRequest.getHeader("Last-Event-ID")}
+     * Last-Event-ID may be used in determining the status and it can be got using
+     * {@code HttpServletRequest.getHeader("Last-Event-ID")}
      *
      * @param request connection request
      * @return Status to accept, or don't reconnect etc
@@ -49,11 +49,9 @@
     }
 
     /**
-     * A callback to indicate that a client connects to receive Server-Sent Events.
-     * The application has full access to HTTP request and can decide whether
-     * to accept the connection or reject it. In SSE, clients will reconnect
-     * if the connection is closed, but can be told to stop reconnecting by
-     * returning the appropriate status.
+     * A callback to indicate that a client connects to receive Server-Sent Events. The application has full access to HTTP
+     * request and can decide whether to accept the connection or reject it. In SSE, clients will reconnect if the
+     * connection is closed, but can be told to stop reconnecting by returning the appropriate status.
      *
      * @param connection Server-Sert event connection
      * @return Status to accept, or don't reconnect etc
diff --git a/appserver/web/web-sse/src/main/java/org/glassfish/sse/api/ServerSentEventHandlerContext.java b/appserver/web/web-sse/src/main/java/org/glassfish/sse/api/ServerSentEventHandlerContext.java
index acacfba..f0293ef 100644
--- a/appserver/web/web-sse/src/main/java/org/glassfish/sse/api/ServerSentEventHandlerContext.java
+++ b/appserver/web/web-sse/src/main/java/org/glassfish/sse/api/ServerSentEventHandlerContext.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2011, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -19,8 +20,7 @@
 import java.util.Set;
 
 /**
- * A context class that gives access to all the active handlers for a
- * Server-Sent Event path.
+ * A context class that gives access to all the active handlers for a Server-Sent Event path.
  *
  * @author Santiago.PericasGeertsen@oracle.com
  */
@@ -31,13 +31,13 @@
      *
      * @return path for the Server-Sent event handlers
      */
-    public String getPath();
+    String getPath();
 
     /**
      * Returns all the active Server-Sent event handlers for a path
      *
      * @return all the active handlers
      */
-    public Set<T> getHandlers();
+    Set<T> getHandlers();
 
 }
diff --git a/appserver/web/web-sse/src/main/java/org/glassfish/sse/impl/ServerSentEventCdiExtension.java b/appserver/web/web-sse/src/main/java/org/glassfish/sse/impl/ServerSentEventCdiExtension.java
index 3eb5e99..ef67688 100644
--- a/appserver/web/web-sse/src/main/java/org/glassfish/sse/impl/ServerSentEventCdiExtension.java
+++ b/appserver/web/web-sse/src/main/java/org/glassfish/sse/impl/ServerSentEventCdiExtension.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2011, 2020 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -16,23 +17,38 @@
 
 package org.glassfish.sse.impl;
 
-import org.glassfish.sse.api.*;
+import static java.util.logging.Level.FINE;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.logging.Logger;
+
+import org.glassfish.sse.api.ServerSentEvent;
+import org.glassfish.sse.api.ServerSentEventContext;
+import org.glassfish.sse.api.ServerSentEventHandler;
+import org.glassfish.sse.api.ServerSentEventHandlerContext;
 
 import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.enterprise.context.spi.CreationalContext;
 import jakarta.enterprise.event.Observes;
-import jakarta.enterprise.inject.spi.*;
+import jakarta.enterprise.inject.spi.AfterBeanDiscovery;
+import jakarta.enterprise.inject.spi.Bean;
+import jakarta.enterprise.inject.spi.BeanManager;
+import jakarta.enterprise.inject.spi.BeforeBeanDiscovery;
+import jakarta.enterprise.inject.spi.Extension;
+import jakarta.enterprise.inject.spi.InjectionPoint;
+import jakarta.enterprise.inject.spi.ProcessAnnotatedType;
 import jakarta.enterprise.util.AnnotationLiteral;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.util.*;
-import java.util.logging.Level;
-import java.util.logging.Logger;
 
 /**
- * A CDI extension that creates ServerSentEventHandlerContext beans so that
- * they can be injected into other EE components
+ * A CDI extension that creates ServerSentEventHandlerContext beans so that they can be injected into other EE
+ * components
  *
  * @author Jitendra Kotamraju
  */
@@ -41,19 +57,16 @@
     private final Logger LOGGER = Logger.getLogger(ServerSentEventCdiExtension.class.getName());
 
     // path --> application
-    private final Map<String, ServerSentEventApplication> applicationMap
-        = new HashMap<String, ServerSentEventApplication>();
+    private final Map<String, ServerSentEventApplication> applicationMap = new HashMap<String, ServerSentEventApplication>();
 
     public Map<String, ServerSentEventApplication> getApplicationMap() {
         return applicationMap;
     }
 
-    @SuppressWarnings("UnusedDeclaration")
     void beforeBeanDiscovery(@Observes BeforeBeanDiscovery bbd, BeanManager bm) {
         bbd.addQualifier(ServerSentEventContext.class);
     }
 
-    @SuppressWarnings("ClassExplicitlyAnnotation")
     static class WebHandlerContextAnnotationLiteral extends AnnotationLiteral<ServerSentEventContext> implements ServerSentEventContext {
         private final String path;
 
@@ -85,7 +98,7 @@
             types.add(new ParameterizedType() {
                 @Override
                 public Type[] getActualTypeArguments() {
-                    return new Type[] {handlerClass};
+                    return new Type[] { handlerClass };
                 }
 
                 @Override
@@ -134,11 +147,6 @@
         }
 
         @Override
-        public boolean isNullable() {
-            return false;
-        }
-
-        @Override
         public Set<InjectionPoint> getInjectionPoints() {
             return Collections.emptySet();
         }
@@ -154,36 +162,36 @@
 
     }
 
-    // For each ServerSentEvent hanlder, it creates a corresponding ServerSentHandlerContext
+    // For each ServerSentEvent handler, it creates a corresponding ServerSentHandlerContext
     // This context can be got anywhere from BeanManager
-    @SuppressWarnings("UnusedDeclaration")
     void afterBeanDiscovery(@Observes AfterBeanDiscovery bbd) {
-        for(Map.Entry<String, ServerSentEventApplication> entry : applicationMap.entrySet()) {
-            bbd.addBean(new ServerSentEventHandlerContextBean(entry.getKey(), entry.getValue().getHandlerContext(),
+        for (Map.Entry<String, ServerSentEventApplication> entry : applicationMap.entrySet()) {
+            bbd.addBean(
+                new ServerSentEventHandlerContextBean(
+                    entry.getKey(),
+                    entry.getValue().getHandlerContext(),
                     entry.getValue().getHandlerClass()));
         }
     }
 
-    @SuppressWarnings("UnusedDeclaration")
-    <T> void processAnnotatedType(@Observes ProcessAnnotatedType<T> pat,
-            BeanManager beanManager) {
-        if (LOGGER.isLoggable(Level.FINE)) {
+    <T> void processAnnotatedType(@Observes ProcessAnnotatedType<T> pat, BeanManager beanManager) {
+        if (LOGGER.isLoggable(FINE)) {
             LOGGER.fine("scanning type: " + pat.getAnnotatedType().getJavaClass().getName());
         }
 
-        for (Annotation an : pat.getAnnotatedType().getAnnotations()) {
-            Class clazz = pat.getAnnotatedType().getJavaClass();
+        for (Annotation annotation : pat.getAnnotatedType().getAnnotations()) {
+            Class<?> clazz = pat.getAnnotatedType().getJavaClass();
 
-            if (an instanceof ServerSentEvent) {
+            if (annotation instanceof ServerSentEvent) {
                 if (!ServerSentEventHandler.class.isAssignableFrom(clazz)) {
-                    throw new RuntimeException("Invalid base class '"
-                            + clazz.getName() + "' for handler.");
+                    throw new RuntimeException("Invalid base class '" + clazz.getName() + "' for handler.");
                 }
-                ServerSentEvent wh = (ServerSentEvent) an;
-                String path = normalizePath(wh.value());
+
+                ServerSentEvent serverSentEvent = (ServerSentEvent) annotation;
+                String path = normalizePath(serverSentEvent.value());
                 ServerSentEventApplication app = applicationMap.get(path);
                 if (app != null) {
-                    throw new RuntimeException("Two ServerSentEvent handlers are mapped to same path="+path);
+                    throw new RuntimeException("Two ServerSentEvent handlers are mapped to same path=" + path);
                 }
                 app = new ServerSentEventApplication(clazz, path);
                 applicationMap.put(path, app);
diff --git a/appserver/web/web-sse/src/main/java/org/glassfish/sse/impl/ServerSentEventServlet.java b/appserver/web/web-sse/src/main/java/org/glassfish/sse/impl/ServerSentEventServlet.java
index d8ac35e..db86e1f 100644
--- a/appserver/web/web-sse/src/main/java/org/glassfish/sse/impl/ServerSentEventServlet.java
+++ b/appserver/web/web-sse/src/main/java/org/glassfish/sse/impl/ServerSentEventServlet.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2011, 2020 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -37,21 +38,20 @@
  *
  * @author Jitendra Kotamraju
  */
-@WebServlet(asyncSupported=true)
+@WebServlet(asyncSupported = true)
 public final class ServerSentEventServlet extends HttpServlet {
 
-    @SuppressWarnings("UnusedDeclaration")
+    private static final long serialVersionUID = -2281462213280496518L;
+
     @Inject
     private transient ServerSentEventCdiExtension extension;
 
-    @SuppressWarnings("UnusedDeclaration")
     @Inject
-    private transient BeanManager bm;
+    private transient BeanManager beanManager;
 
     @Override
     @SuppressWarnings("unchecked")
-    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
-                throws ServletException, IOException {
+    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 
         // TODO CDI is not strictly required unless ServerSentEventHandlerContext
         // TODO needs to be injected
@@ -60,40 +60,42 @@
         }
 
         Map<String, ServerSentEventApplication> applicationMap = extension.getApplicationMap();
-        ServerSentEventApplication sseApp = applicationMap.get(req.getServletPath());
+        ServerSentEventApplication sseApp = applicationMap.get(request.getServletPath());
         Class<?> clazz = sseApp.getHandlerClass();
-        ServerSentEventHandler sseh;
-        CreationalContext cc;
+        ServerSentEventHandler serverSentEventHandler;
+        CreationalContext creationalContext;
 
         // Check if SSE handler can be instantiated via CDI
-        Iterator<Bean<?>> it = bm.getBeans(clazz).iterator();
+        Iterator<Bean<?>> it = beanManager.getBeans(clazz).iterator();
         if (it.hasNext()) {
             Bean bean = it.next();
-            cc = bm.createCreationalContext(bean);
-            sseh = (ServerSentEventHandler) bean.create(cc);
+            creationalContext = beanManager.createCreationalContext(bean);
+            serverSentEventHandler = (ServerSentEventHandler) bean.create(creationalContext);
         } else {
             throw new RuntimeException("Cannot create ServerSentEventHandler using CDI");
         }
 
-        ServerSentEventHandler.Status status = sseh.onConnecting(req);
+        ServerSentEventHandler.Status status = serverSentEventHandler.onConnecting(request);
         if (status == ServerSentEventHandler.Status.DONT_RECONNECT) {
-            resp.setStatus(HttpServletResponse.SC_NO_CONTENT);
-            cc.release();
+            response.setStatus(HttpServletResponse.SC_NO_CONTENT);
+            creationalContext.release();
             return;
         }
 
         if (status != ServerSentEventHandler.Status.OK) {
-            throw new RuntimeException("Internal Error: need to handle status "+status);
+            throw new RuntimeException("Internal Error: need to handle status " + status);
         }
 
-        resp.setStatus(HttpServletResponse.SC_OK);
-        resp.setContentType("text/event-stream");
-        resp.flushBuffer();    // writes status code and headers
-        AsyncContext ac = req.startAsync(req, resp);
-        ac.setTimeout(0);    // no timeout. need config ?
-        ServerSentEventConnectionImpl con = sseApp.createConnection(req, sseh, cc, ac);
-        ac.addListener(con);
-        con.init();
+        response.setStatus(HttpServletResponse.SC_OK);
+        response.setContentType("text/event-stream");
+        response.flushBuffer(); // writes status code and headers
+
+        AsyncContext asyncContext = request.startAsync(request, response);
+        asyncContext.setTimeout(0); // no timeout. need config ?
+        ServerSentEventConnectionImpl sseConnection = sseApp.createConnection(request, serverSentEventHandler, creationalContext,
+                asyncContext);
+        asyncContext.addListener(sseConnection);
+        sseConnection.init();
     }
 
 }
diff --git a/appserver/web/web-sse/src/main/java/org/glassfish/sse/impl/ServerSentEventServletContainerInitializer.java b/appserver/web/web-sse/src/main/java/org/glassfish/sse/impl/ServerSentEventServletContainerInitializer.java
index bda133e..80fbb10 100644
--- a/appserver/web/web-sse/src/main/java/org/glassfish/sse/impl/ServerSentEventServletContainerInitializer.java
+++ b/appserver/web/web-sse/src/main/java/org/glassfish/sse/impl/ServerSentEventServletContainerInitializer.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2011, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -28,8 +29,7 @@
 /**
  * Registers a context listener to get ServletContext
  *
- * Registers a servlet dynamically if there are ServerSentEventHandlers in
- * an application.
+ * Registers a servlet dynamically if there are ServerSentEventHandlers in an application.
  *
  * @author Jitendra Kotamraju
  */
@@ -43,7 +43,7 @@
 
         // Check if there is already a servlet for server sent events
         Map<String, ? extends ServletRegistration> registrations = ctx.getServletRegistrations();
-        for(ServletRegistration reg : registrations.values()) {
+        for (ServletRegistration reg : registrations.values()) {
             if (reg.getClass().equals(ServerSentEventServlet.class)) {
                 return;
             }
@@ -52,11 +52,11 @@
         // Collect all the url patterns for server sent event handlers
         List<String> urlPatternList = new ArrayList<String>();
 
-        for(Class<?> clazz : set) {
+        for (Class<?> clazz : set) {
             if (ServerSentEventHandler.class.isAssignableFrom(clazz)) {
                 ServerSentEvent handler = clazz.getAnnotation(ServerSentEvent.class);
                 if (handler == null) {
-                    throw new RuntimeException("ServerSentEventHandler Class "+clazz+" doesn't have WebHandler annotation");
+                    throw new RuntimeException("ServerSentEventHandler Class " + clazz + " doesn't have WebHandler annotation");
                 }
                 urlPatternList.add(handler.value());
             }
diff --git a/appserver/web/webtier-all/pom.xml b/appserver/web/webtier-all/pom.xml
index 68a08eb..4563d31 100755
--- a/appserver/web/webtier-all/pom.xml
+++ b/appserver/web/webtier-all/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.web</groupId>
         <artifactId>web</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/web/weld-integration-fragment/pom.xml b/appserver/web/weld-integration-fragment/pom.xml
index 01b28be..e10f9a6 100644
--- a/appserver/web/weld-integration-fragment/pom.xml
+++ b/appserver/web/weld-integration-fragment/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.web</groupId>
         <artifactId>web</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>weld-integration-fragment</artifactId>
diff --git a/appserver/web/weld-integration-test-fragment/pom.xml b/appserver/web/weld-integration-test-fragment/pom.xml
index 094eecc..5ad8c0c 100644
--- a/appserver/web/weld-integration-test-fragment/pom.xml
+++ b/appserver/web/weld-integration-test-fragment/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.web</groupId>
         <artifactId>web</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/web/weld-integration/pom.xml b/appserver/web/weld-integration/pom.xml
index 7b58d3b..231d3d0 100644
--- a/appserver/web/weld-integration/pom.xml
+++ b/appserver/web/weld-integration/pom.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
+    Copyright (c) 2021 Contributors to Eclipse Foundation.
     Copyright (c) 1997, 2021 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
@@ -23,8 +24,7 @@
     <parent>
         <groupId>org.glassfish.main.web</groupId>
         <artifactId>web</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
-        <relativePath>../pom.xml</relativePath>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>weld-integration</artifactId>
@@ -64,6 +64,10 @@
             <artifactId>jakarta.enterprise.cdi-api</artifactId>
         </dependency>
         <dependency>
+            <groupId>jakarta.enterprise</groupId>
+            <artifactId>jakarta.enterprise.lang-model</artifactId>
+        </dependency>
+        <dependency>
             <groupId>org.glassfish.main.deployment</groupId>
             <artifactId>deployment-javaee-full</artifactId>
             <version>${project.version}</version>
diff --git a/appserver/web/weld-integration/src/main/java/org/glassfish/cdi/hk2/HK2CDIBean.java b/appserver/web/weld-integration/src/main/java/org/glassfish/cdi/hk2/HK2CDIBean.java
index 0de0897..465dbdf 100644
--- a/appserver/web/weld-integration/src/main/java/org/glassfish/cdi/hk2/HK2CDIBean.java
+++ b/appserver/web/weld-integration/src/main/java/org/glassfish/cdi/hk2/HK2CDIBean.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2012, 2020 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -16,10 +17,11 @@
 
 package org.glassfish.cdi.hk2;
 
+import static java.util.Collections.emptySet;
+
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Type;
 import java.util.Collections;
-import java.util.HashSet;
 import java.util.Set;
 
 import org.glassfish.hk2.api.ActiveDescriptor;
@@ -29,6 +31,7 @@
 
 import jakarta.enterprise.context.Dependent;
 import jakarta.enterprise.context.spi.CreationalContext;
+import jakarta.enterprise.inject.Default;
 import jakarta.enterprise.inject.spi.Bean;
 import jakarta.enterprise.inject.spi.InjectionPoint;
 
@@ -77,11 +80,7 @@
     @Override
     public Set<Annotation> getQualifiers() {
         if (descriptor.getQualifierAnnotations().isEmpty()) {
-            HashSet<Annotation> retVal = new HashSet<>();
-
-            retVal.add(new DefaultImpl());
-
-            return retVal;
+            return Set.of(Default.Literal.INSTANCE);
         }
 
         return descriptor.getQualifierAnnotations();
@@ -99,7 +98,7 @@
 
     @Override
     public Set<Class<? extends Annotation>> getStereotypes() {
-        return Collections.emptySet();
+        return emptySet();
     }
 
     @Override
@@ -112,12 +111,6 @@
         return false;
     }
 
-    @Override
-    public boolean isNullable() {
-        // TODO, some scoped DO support a null return
-        return false;
-    }
-
     public ActiveDescriptor<T> getHK2Descriptor() {
         return descriptor;
     }
diff --git a/appserver/web/weld-integration/src/main/java/org/glassfish/cdi/transaction/TransactionScopedCDIUtil.java b/appserver/web/weld-integration/src/main/java/org/glassfish/cdi/transaction/TransactionScopedCDIUtil.java
index cc466d0..c5f565f 100644
--- a/appserver/web/weld-integration/src/main/java/org/glassfish/cdi/transaction/TransactionScopedCDIUtil.java
+++ b/appserver/web/weld-integration/src/main/java/org/glassfish/cdi/transaction/TransactionScopedCDIUtil.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2014, 2020 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -170,11 +171,6 @@
         }
 
         @Override
-        public boolean isNullable() {
-            return false;
-        }
-
-        @Override
         public Object create(CreationalContext ctx) {
             Object instance = injectionTarget.produce(ctx);
             injectionTarget.inject(instance, ctx);
diff --git a/appserver/web/weld-integration/src/main/java/org/glassfish/cdi/transaction/TransactionalInterceptorRequired.java b/appserver/web/weld-integration/src/main/java/org/glassfish/cdi/transaction/TransactionalInterceptorRequired.java
index 2b4073c..e2d71a8 100644
--- a/appserver/web/weld-integration/src/main/java/org/glassfish/cdi/transaction/TransactionalInterceptorRequired.java
+++ b/appserver/web/weld-integration/src/main/java/org/glassfish/cdi/transaction/TransactionalInterceptorRequired.java
@@ -24,13 +24,14 @@
 import java.util.logging.Logger;
 
 import com.sun.enterprise.transaction.TransactionManagerHelper;
+
 import jakarta.annotation.Priority;
 import jakarta.interceptor.AroundInvoke;
 import jakarta.interceptor.Interceptor;
 import jakarta.interceptor.InvocationContext;
+import jakarta.transaction.TransactionManager;
 import jakarta.transaction.Transactional;
 import jakarta.transaction.TransactionalException;
-import jakarta.transaction.TransactionManager;
 
 /**
  * Transactional annotation Interceptor class for Required transaction type, ie
diff --git a/appserver/web/weld-integration/src/main/java/org/glassfish/cdi/transaction/TransactionalInterceptorRequiresNew.java b/appserver/web/weld-integration/src/main/java/org/glassfish/cdi/transaction/TransactionalInterceptorRequiresNew.java
index 29af34b..1c1b38f 100644
--- a/appserver/web/weld-integration/src/main/java/org/glassfish/cdi/transaction/TransactionalInterceptorRequiresNew.java
+++ b/appserver/web/weld-integration/src/main/java/org/glassfish/cdi/transaction/TransactionalInterceptorRequiresNew.java
@@ -24,14 +24,15 @@
 import java.util.logging.Logger;
 
 import com.sun.enterprise.transaction.TransactionManagerHelper;
+
 import jakarta.annotation.Priority;
 import jakarta.interceptor.AroundInvoke;
 import jakarta.interceptor.Interceptor;
 import jakarta.interceptor.InvocationContext;
 import jakarta.transaction.Transaction;
+import jakarta.transaction.TransactionManager;
 import jakarta.transaction.Transactional;
 import jakarta.transaction.TransactionalException;
-import jakarta.transaction.TransactionManager;
 
 /**
  * Transactional annotation Interceptor class for RequiresNew transaction type, ie
diff --git a/appserver/web/weld-integration/src/main/java/org/glassfish/weld/ACLSingletonProvider.java b/appserver/web/weld-integration/src/main/java/org/glassfish/weld/ACLSingletonProvider.java
index 376dae1..101c8b0 100644
--- a/appserver/web/weld-integration/src/main/java/org/glassfish/weld/ACLSingletonProvider.java
+++ b/appserver/web/weld-integration/src/main/java/org/glassfish/weld/ACLSingletonProvider.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2009, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -109,7 +110,7 @@
          * EarLibClassLoader. If latter is the case, it assumes that this is a standalone module and hence it returns the
          * thread's context class loader.
          *
-         * @return a class loader that's common to all modules of a Java EE app
+         * @return a class loader that's common to all modules of a Jakarta EE application
          */
         private ClassLoader getClassLoader() {
             ClassLoader contextClassLoader = getSecurityManager() != null ? doPrivileged(new PrivilegedAction<ClassLoader>() {
diff --git a/appserver/web/weld-integration/src/main/java/org/glassfish/weld/BeanDeploymentArchiveImpl.java b/appserver/web/weld-integration/src/main/java/org/glassfish/weld/BeanDeploymentArchiveImpl.java
index 6971a23..cf463d5 100644
--- a/appserver/web/weld-integration/src/main/java/org/glassfish/weld/BeanDeploymentArchiveImpl.java
+++ b/appserver/web/weld-integration/src/main/java/org/glassfish/weld/BeanDeploymentArchiveImpl.java
@@ -633,8 +633,7 @@
         } else {
             className = filename.replace(SEPARATOR_CHAR, '.');
         }
-        className = className.substring(0, className.length() - 6);
-        return className;
+        return className.substring(0, className.length() - 6);
     }
 
     private ClassLoader getClassLoader() {
diff --git a/appserver/web/weld-integration/src/main/java/org/glassfish/weld/DeploymentImpl.java b/appserver/web/weld-integration/src/main/java/org/glassfish/weld/DeploymentImpl.java
index bc6da27..ea8535c 100644
--- a/appserver/web/weld-integration/src/main/java/org/glassfish/weld/DeploymentImpl.java
+++ b/appserver/web/weld-integration/src/main/java/org/glassfish/weld/DeploymentImpl.java
@@ -710,7 +710,7 @@
 
         try {
             // Each appLib in context.getAppLibs is a URI of the form
-            // "file:/glassfish/runtime/trunk/glassfish6/glassfish/domains/domain1/lib/applibs/mylib.jar"
+            // "file:/glassfish/runtime/trunk/glassfish7/glassfish/domains/domain1/lib/applibs/mylib.jar"
             List<URI> appLibs = context.getAppLibs();
             Set<String> installedLibraries = getInstalledLibraries(archive);
 
diff --git a/appserver/web/weld-integration/src/main/java/org/glassfish/weld/InjectionPointHelper.java b/appserver/web/weld-integration/src/main/java/org/glassfish/weld/InjectionPointHelper.java
index 3905286..28c16ab 100644
--- a/appserver/web/weld-integration/src/main/java/org/glassfish/weld/InjectionPointHelper.java
+++ b/appserver/web/weld-integration/src/main/java/org/glassfish/weld/InjectionPointHelper.java
@@ -16,11 +16,12 @@
 
 package org.glassfish.weld;
 
+import static java.util.Locale.ENGLISH;
+
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Field;
 import java.lang.reflect.Member;
 import java.lang.reflect.Method;
-import java.util.Locale;
 
 import javax.naming.NamingException;
 
@@ -136,27 +137,24 @@
 
     private String getInjectionMethodPropertyName(Method method) {
         String methodName = method.getName();
-        String propertyName;
 
         if (methodName.length() <= 3 || !methodName.startsWith("set")) {
             throw new IllegalArgumentException("Illegal env dependency setter name" + method.getName());
         }
-        // Derive javabean property name.
-        propertyName = methodName.substring(3, 4).toLowerCase(Locale.ENGLISH) + methodName.substring(4);
 
-        return propertyName;
+        return methodName.substring(3, 4).toLowerCase(ENGLISH) + methodName.substring(4);
     }
 
     private Annotation getEnvAnnotation(Annotation[] annotations) {
-
         Annotation envAnnotation = null;
 
         for (Annotation next : annotations) {
-
             String className = next.annotationType().getName();
-            if (className.equals("jakarta.ejb.EJB") || className.equals("jakarta.annotation.Resource")
-                    || className.equals("jakarta.persistence.PersistenceContext") || className.equals("jakarta.persistence.PersistenceUnit")
-                    || className.equals("jakarta.xml.ws.WebServiceRef")) {
+            if (className.equals("jakarta.ejb.EJB") ||
+               className.equals("jakarta.annotation.Resource") ||
+               className.equals("jakarta.persistence.PersistenceContext") ||
+               className.equals("jakarta.persistence.PersistenceUnit") ||
+               className.equals("jakarta.xml.ws.WebServiceRef")) {
                 envAnnotation = next;
                 break;
             }
diff --git a/appserver/web/weld-integration/src/main/java/org/glassfish/weld/RootBeanDeploymentArchive.java b/appserver/web/weld-integration/src/main/java/org/glassfish/weld/RootBeanDeploymentArchive.java
index 3e4a67b..495e4e3 100644
--- a/appserver/web/weld-integration/src/main/java/org/glassfish/weld/RootBeanDeploymentArchive.java
+++ b/appserver/web/weld-integration/src/main/java/org/glassfish/weld/RootBeanDeploymentArchive.java
@@ -18,7 +18,6 @@
 
 import static java.util.Collections.emptyList;
 
-import java.net.URL;
 import java.util.Collection;
 
 import org.glassfish.api.deployment.DeploymentContext;
diff --git a/appserver/web/weld-integration/src/main/java/org/glassfish/weld/ValidationNamingProxy.java b/appserver/web/weld-integration/src/main/java/org/glassfish/weld/ValidationNamingProxy.java
index 4dc0a29..f4d2b37 100644
--- a/appserver/web/weld-integration/src/main/java/org/glassfish/weld/ValidationNamingProxy.java
+++ b/appserver/web/weld-integration/src/main/java/org/glassfish/weld/ValidationNamingProxy.java
@@ -24,7 +24,6 @@
 import org.glassfish.api.invocation.InvocationManager;
 import org.glassfish.api.naming.NamedNamingObjectProxy;
 import org.glassfish.hk2.api.ServiceLocator;
-import org.jboss.weld.bootstrap.WeldBootstrap;
 import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
 import org.jvnet.hk2.annotations.Service;
 
diff --git a/appserver/web/weld-integration/src/main/java/org/glassfish/weld/WebComponentInjectionManager.java b/appserver/web/weld-integration/src/main/java/org/glassfish/weld/WebComponentInjectionManager.java
index ed957d0..3e75576 100644
--- a/appserver/web/weld-integration/src/main/java/org/glassfish/weld/WebComponentInjectionManager.java
+++ b/appserver/web/weld-integration/src/main/java/org/glassfish/weld/WebComponentInjectionManager.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2009, 2020 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -28,10 +29,12 @@
 import com.sun.enterprise.web.WebModule;
 
 import jakarta.enterprise.context.spi.CreationalContext;
+import jakarta.enterprise.inject.spi.AnnotatedType;
 import jakarta.enterprise.inject.spi.BeanManager;
+import jakarta.enterprise.inject.spi.InjectionTargetFactory;
 
 /**
- * This is a decorator which calls Weld implemetation to do necessary injection of a web component. It is called by
+ * This is a decorator which calls Weld implementation to do necessary injection of a web component. It is called by
  * {@link com.sun.web.server.J2EEInstanceListener} before a web component is put into service.
  *
  * @author Sanjeeb.Sahoo@Sun.COM
@@ -52,12 +55,14 @@
                                                               .getBeanDeploymentArchives()
                                                               .iterator().next());
 
-            // PENDING : Not available in this Web Beans Release
-            CreationalContext<T> ccontext = beanManager.createCreationalContext(null);
+            Class<T> beanClass = (Class<T>) webComponent.getClass();
 
-            beanManager.createInjectionTarget(
-                beanManager.createAnnotatedType(
-                    (Class<T>) webComponent.getClass())).inject(webComponent, ccontext);
+            // PENDING : Not available in this Web Beans Release
+            CreationalContext<T> creationalContext = beanManager.createCreationalContext(null);
+            AnnotatedType<T> annotatedType = beanManager.createAnnotatedType(beanClass);
+            InjectionTargetFactory<T> injectionTargetFactory = beanManager.getInjectionTargetFactory(annotatedType);
+
+            injectionTargetFactory.createInjectionTarget(null).inject(webComponent, creationalContext);
         }
     }
 }
diff --git a/appserver/web/weld-integration/src/main/java/org/glassfish/weld/WeldContextListener.java b/appserver/web/weld-integration/src/main/java/org/glassfish/weld/WeldContextListener.java
index bac6608..5a7be9e 100644
--- a/appserver/web/weld-integration/src/main/java/org/glassfish/weld/WeldContextListener.java
+++ b/appserver/web/weld-integration/src/main/java/org/glassfish/weld/WeldContextListener.java
@@ -1,6 +1,6 @@
 /*
- * Copyright (c) 2009, 2020 Oracle and/or its affiliates. All rights reserved.
  * Copyright (c) 2021 Contributors to the Eclipse Foundation
+ * Copyright (c) 2009, 2020 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -20,8 +20,8 @@
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import org.apache.jasper.runtime.JspApplicationContextImpl;
 import org.glassfish.cdi.CDILoggerInfo;
+import org.glassfish.wasp.runtime.JspApplicationContextImpl;
 import org.jboss.weld.module.web.el.WeldELContextListener;
 
 import jakarta.enterprise.inject.spi.BeanManager;
diff --git a/appserver/web/weld-integration/src/main/java/org/glassfish/weld/jsf/WeldApplication.java b/appserver/web/weld-integration/src/main/java/org/glassfish/weld/jsf/WeldApplication.java
index 3279020..05011b0 100644
--- a/appserver/web/weld-integration/src/main/java/org/glassfish/weld/jsf/WeldApplication.java
+++ b/appserver/web/weld-integration/src/main/java/org/glassfish/weld/jsf/WeldApplication.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2009, 2020 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -19,7 +20,7 @@
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
 
-import org.apache.jasper.runtime.JspApplicationContextImpl;
+import org.glassfish.wasp.runtime.JspApplicationContextImpl;
 import org.glassfish.weld.util.Util;
 
 import jakarta.el.ELContextListener;
@@ -39,13 +40,15 @@
 
     public WeldApplication(Application application) {
         this.application = application;
+
         BeanManager beanManager = getBeanManager();
         if (beanManager != null) {
             application.addELContextListener(Util.<ELContextListener>newInstance("org.jboss.weld.module.web.el.WeldELContextListener"));
             application.addELResolver(beanManager.getELResolver());
+
             JspApplicationContext jspAppContext = JspFactory.getDefaultFactory()
                     .getJspApplicationContext((ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext());
-            this.expressionFactory = beanManager.wrapExpressionFactory(jspAppContext.getExpressionFactory());
+            expressionFactory = beanManager.wrapExpressionFactory(jspAppContext.getExpressionFactory());
             ((JspApplicationContextImpl) jspAppContext).setExpressionFactory(this.expressionFactory);
         }
     }
@@ -57,21 +60,21 @@
 
     @Override
     public ExpressionFactory getExpressionFactory() {
-        if (this.expressionFactory == null) {
+        if (expressionFactory == null) {
             BeanManager beanManager = getBeanManager();
             if (beanManager != null) {
-                this.expressionFactory = beanManager.wrapExpressionFactory(getWrapped().getExpressionFactory());
+                expressionFactory = beanManager.wrapExpressionFactory(getWrapped().getExpressionFactory());
             } else {
-                this.expressionFactory = getWrapped().getExpressionFactory();
+                expressionFactory = getWrapped().getExpressionFactory();
             }
         }
+
         return expressionFactory;
     }
 
     private BeanManager getBeanManager() {
         try {
-            InitialContext context = new InitialContext();
-            return (BeanManager) context.lookup("java:comp/BeanManager");
+            return (BeanManager) new InitialContext().lookup("java:comp/BeanManager");
         } catch (NamingException e) {
             return null;
         }
diff --git a/appserver/web/weld-integration/src/main/java/org/glassfish/weld/jsf/WeldFacesConfigProvider.java b/appserver/web/weld-integration/src/main/java/org/glassfish/weld/jsf/WeldFacesConfigProvider.java
index 6de9e2f..510f7ba 100644
--- a/appserver/web/weld-integration/src/main/java/org/glassfish/weld/jsf/WeldFacesConfigProvider.java
+++ b/appserver/web/weld-integration/src/main/java/org/glassfish/weld/jsf/WeldFacesConfigProvider.java
@@ -17,20 +17,21 @@
 
 package org.glassfish.weld.jsf;
 
+import static java.util.logging.Level.SEVERE;
+import static org.glassfish.cdi.CDILoggerInfo.SEVERE_ERROR_CREATING_URI_FOR_FACES_CONFIG_XML;
+import static org.glassfish.weld.WeldDeployer.WELD_EXTENSION;
+
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
-import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import org.glassfish.api.invocation.ComponentInvocation;
 import org.glassfish.api.invocation.InvocationManager;
 import org.glassfish.cdi.CDILoggerInfo;
 import org.glassfish.hk2.api.ServiceLocator;
-import org.glassfish.weld.WeldDeployer;
 
 import com.sun.enterprise.deployment.WebBundleDescriptor;
 import com.sun.enterprise.web.WebModule;
@@ -39,49 +40,49 @@
 import jakarta.servlet.ServletContext;
 
 /**
- * This provider returns the Web Beans faces-config.xml to the JSF runtime. It will only return the configuraion file
+ * This provider returns the Web Beans faces-config.xml to the Faces runtime. It will only return the configuration file
  * for Web Beans deployments.
  */
 public class WeldFacesConfigProvider implements FacesConfigResourceProvider {
 
     private static final String HABITAT_ATTRIBUTE = "org.glassfish.servlet.habitat";
-    private InvocationManager invokeMgr;
+    private static final String SERVICES_FACES_CONFIG = "META-INF/services/faces-config.xml";
 
     private Logger logger = CDILoggerInfo.getLogger();
 
-    private static final String SERVICES_FACES_CONFIG = "META-INF/services/faces-config.xml";
-
     @Override
     public Collection<URI> getResources(ServletContext context) {
-
-        ServiceLocator defaultServices = (ServiceLocator) context.getAttribute(HABITAT_ATTRIBUTE);
-        invokeMgr = defaultServices.getService(InvocationManager.class);
-        ComponentInvocation inv = invokeMgr.getCurrentInvocation();
-        WebModule webModule = (WebModule) inv.getContainer();
-        WebBundleDescriptor wdesc = webModule.getWebBundleDescriptor();
-
         List<URI> list = new ArrayList<>(1);
 
-        if (!wdesc.hasExtensionProperty(WeldDeployer.WELD_EXTENSION)) {
+        if (!getWebBundleDescriptor(context).hasExtensionProperty(WELD_EXTENSION)) {
             return list;
         }
 
-        // Don't use Util.getCurrentLoader().  This config resource should
+        // Don't use Util.getCurrentLoader(). This config resource should
         // be available from the same classloader that loaded this instance.
         // Doing so allows us to be more OSGi friendly.
-        ClassLoader loader = this.getClass().getClassLoader();
-        URL resource = loader.getResource(SERVICES_FACES_CONFIG);
+        URL resource = getClass().getClassLoader().getResource(SERVICES_FACES_CONFIG);
         if (resource != null) {
             try {
                 list.add(resource.toURI());
             } catch (URISyntaxException ex) {
-                if (logger.isLoggable(Level.SEVERE)) {
-                    logger.log(Level.SEVERE, CDILoggerInfo.SEVERE_ERROR_CREATING_URI_FOR_FACES_CONFIG_XML,
+                if (logger.isLoggable(SEVERE)) {
+                    logger.log(SEVERE, SEVERE_ERROR_CREATING_URI_FOR_FACES_CONFIG_XML,
                             new Object[] { resource.toExternalForm(), ex });
                 }
             }
         }
+
         return list;
     }
 
+    WebBundleDescriptor getWebBundleDescriptor(ServletContext context) {
+        return ((WebModule) ((ServiceLocator)
+            context.getAttribute(HABITAT_ATTRIBUTE))
+                   .getService(InvocationManager.class)
+                   .getCurrentInvocation()
+                   .getContainer())
+                   .getWebBundleDescriptor();
+    }
+
 }
diff --git a/appserver/web/weld-integration/src/main/java/org/glassfish/weld/services/JCDIServiceImpl.java b/appserver/web/weld-integration/src/main/java/org/glassfish/weld/services/JCDIServiceImpl.java
index c7a561a..e1b49b7 100644
--- a/appserver/web/weld-integration/src/main/java/org/glassfish/weld/services/JCDIServiceImpl.java
+++ b/appserver/web/weld-integration/src/main/java/org/glassfish/weld/services/JCDIServiceImpl.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2009, 2020 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -74,6 +75,7 @@
 import jakarta.enterprise.inject.spi.Bean;
 import jakarta.enterprise.inject.spi.BeanManager;
 import jakarta.enterprise.inject.spi.InjectionTarget;
+import jakarta.enterprise.inject.spi.InjectionTargetFactory;
 import jakarta.enterprise.inject.spi.Interceptor;
 import jakarta.inject.Inject;
 import jakarta.inject.Scope;
@@ -86,6 +88,11 @@
     @LogMessagesResourceBundle
     public static final String SHARED_LOGMESSAGE_RESOURCE = "org.glassfish.cdi.LogMessages";
 
+    @LoggerInfo(subsystem = "AS-WELD", description = "WELD", publish = true)
+    public static final String WELD_LOGGER_SUBSYSTEM_NAME = "jakarta.enterprise.resource.weld";
+
+    private static final Logger logger = Logger.getLogger(WELD_LOGGER_SUBSYSTEM_NAME, SHARED_LOGMESSAGE_RESOURCE);
+
     private static final Set<String> validScopes = new HashSet<>();
     static {
         validScopes.add(Scope.class.getName());
@@ -110,10 +117,6 @@
     @Inject
     private InvocationManager invocationManager;
 
-    @LoggerInfo(subsystem = "AS-WELD", description = "WELD", publish = true)
-    public static final String WELD_LOGGER_SUBSYSTEM_NAME = "jakarta.enterprise.resource.weld";
-
-    private static final Logger logger = Logger.getLogger(WELD_LOGGER_SUBSYSTEM_NAME, SHARED_LOGMESSAGE_RESOURCE);
 
     @Override
     public boolean isCurrentModuleJCDIEnabled() {
@@ -304,7 +307,7 @@
     }
 
     /**
-     * Perform 299 style injection on the <code>managedObject</code> argument.
+     * Perform CDI style injection on the <code>managedObject</code> argument.
      *
      * @param managedObject the managed object
      * @param bundle the bundle descriptor
@@ -312,18 +315,14 @@
     @Override
     @SuppressWarnings({ "rawtypes", "unchecked" })
     public void injectManagedObject(Object managedObject, BundleDescriptor bundle) {
+        BeanManager beanManager = getBeanManagerFromBundle(bundle);
 
-        BundleDescriptor topLevelBundleDesc = (BundleDescriptor) bundle.getModuleDescriptor().getDescriptor();
-
-        // First get BeanDeploymentArchive for this ejb
-        BeanDeploymentArchive bda = weldDeployer.getBeanDeploymentArchiveForBundle(topLevelBundleDesc);
-        //BeanDeploymentArchive bda = getBDAForBeanClass(topLevelBundleDesc, managedObject.getClass().getName());
-        WeldBootstrap bootstrap = weldDeployer.getBootstrapForApp(bundle.getApplication());
-        BeanManager beanManager = bootstrap.getManager(bda);
+        CreationalContext creationalContext = beanManager.createCreationalContext(null);
         AnnotatedType annotatedType = beanManager.createAnnotatedType(managedObject.getClass());
-        InjectionTarget it = beanManager.createInjectionTarget(annotatedType);
-        CreationalContext cc = beanManager.createCreationalContext(null);
-        it.inject(managedObject, cc);
+        InjectionTargetFactory injectionTargetFactory = beanManager.getInjectionTargetFactory(annotatedType);
+
+        injectionTargetFactory.createInjectionTarget(null)
+                              .inject(managedObject, creationalContext);
     }
 
     private Interceptor findEjbInterceptor(Class interceptorClass, Set<EjbInterceptor> ejbInterceptors) {
@@ -447,7 +446,16 @@
         }
 
         return new JCDIInjectionContextImpl(it, cc, managedObject);
+    }
 
+    private BeanManager getBeanManagerFromBundle(BundleDescriptor bundle) {
+        BundleDescriptor topLevelBundleDesc = (BundleDescriptor) bundle.getModuleDescriptor().getDescriptor();
+
+        // First get BeanDeploymentArchive for this Enterprise Bean
+        BeanDeploymentArchive beanDeploymentArchive = weldDeployer.getBeanDeploymentArchiveForBundle(topLevelBundleDesc);
+
+        return weldDeployer.getBootstrapForApp(bundle.getApplication())
+                          .getManager(beanDeploymentArchive);
     }
 
     /**
diff --git a/appserver/web/weld-integration/src/main/java/org/glassfish/weld/services/ProxyServicesImpl.java b/appserver/web/weld-integration/src/main/java/org/glassfish/weld/services/ProxyServicesImpl.java
index 683f895..d34e72a 100644
--- a/appserver/web/weld-integration/src/main/java/org/glassfish/weld/services/ProxyServicesImpl.java
+++ b/appserver/web/weld-integration/src/main/java/org/glassfish/weld/services/ProxyServicesImpl.java
@@ -1,6 +1,6 @@
 /*
- * Copyright (c) 2010, 2018-2021 Oracle and/or its affiliates. All rights reserved.
  * Copyright (c) 2022 Contributors to the Eclipse Foundation
+ * Copyright (c) 2010, 2018-2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -17,16 +17,14 @@
 
 package org.glassfish.weld.services;
 
-import com.sun.ejb.codegen.ClassGenerator;
-
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.security.PrivilegedExceptionAction;
 import java.security.ProtectionDomain;
+
 import org.glassfish.hk2.api.ServiceLocator;
 import org.glassfish.internal.api.ClassLoaderHierarchy;
 import org.jboss.weld.serialization.spi.ProxyServices;
 
+import com.sun.ejb.codegen.ClassGenerator;
+
 /**
  * An implementation of the {@link ProxyServices}.
  * <p>
@@ -52,42 +50,6 @@
         classLoaderHierarchy = services.getService(ClassLoaderHierarchy.class);
     }
 
-
-    @Deprecated
-    @Override
-    public boolean supportsClassDefining() {
-        // true is mandatory since Weld 4.0.1.SP1, because default method impl returns false
-        // and cdi_all tests then fail
-        return true;
-    }
-
-
-    @Deprecated
-    @Override
-    public ClassLoader getClassLoader(final Class<?> proxiedBeanType) {
-        if (System.getSecurityManager() == null) {
-            return getClassLoaderforBean(proxiedBeanType);
-        }
-        final PrivilegedAction<ClassLoader> action = () -> getClassLoaderforBean(proxiedBeanType);
-        return AccessController.doPrivileged(action);
-    }
-
-
-    @Deprecated
-    @Override
-    public Class<?> loadBeanClass(final String className) {
-        try {
-            if (System.getSecurityManager() == null) {
-                return loadClassByThreadCL(className);
-            }
-            final PrivilegedExceptionAction<Class<?>> action = () -> loadClassByThreadCL(className);
-            return AccessController.doPrivileged(action);
-        } catch (final Exception ex) {
-            throw new WeldProxyException("Failed to load the bean class: " + className, ex);
-        }
-    }
-
-
     @Override
     public Class<?> defineClass(final Class<?> originalClass, final String className, final byte[] classBytes,
         final int off, final int len) throws ClassFormatError {
diff --git a/appserver/web/weld-integration/src/main/java/org/glassfish/weld/util/Util.java b/appserver/web/weld-integration/src/main/java/org/glassfish/weld/util/Util.java
index b277c71..0b24dec 100644
--- a/appserver/web/weld-integration/src/main/java/org/glassfish/weld/util/Util.java
+++ b/appserver/web/weld-integration/src/main/java/org/glassfish/weld/util/Util.java
@@ -36,14 +36,10 @@
         try {
             if (Thread.currentThread().getContextClassLoader() != null) {
                 Class<?> c = Thread.currentThread().getContextClassLoader().loadClass(name);
-                @SuppressWarnings("unchecked")
-                Class<T> clazz = (Class<T>) c;
-                return clazz;
+                return (Class<T>) c;
             }
             Class<?> c = Class.forName(name);
-            @SuppressWarnings("unchecked")
-            Class<T> clazz = (Class<T>) c;
-            return clazz;
+            return (Class<T>) c;
         } catch (ClassNotFoundException | NoClassDefFoundError e) {
             throw new IllegalArgumentException("Cannot load class for " + name, e);
         }
diff --git a/appserver/web/weld-integration/src/test/java/org/glassfish/weld/WeldContextListenerTest.java b/appserver/web/weld-integration/src/test/java/org/glassfish/weld/WeldContextListenerTest.java
index 232c917..633c148 100644
--- a/appserver/web/weld-integration/src/test/java/org/glassfish/weld/WeldContextListenerTest.java
+++ b/appserver/web/weld-integration/src/test/java/org/glassfish/weld/WeldContextListenerTest.java
@@ -1,6 +1,6 @@
 /*
- * Copyright (c) 2013, 2020 Oracle and/or its affiliates. All rights reserved.
  * Copyright (c) 2021 Contributors to the Eclipse Foundation
+ * Copyright (c) 2013, 2020 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -17,23 +17,6 @@
 
 package org.glassfish.weld;
 
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.apache.catalina.core.StandardContext;
-import org.apache.jasper.runtime.JspApplicationContextImpl;
-import org.easymock.EasyMockSupport;
-import org.jboss.weld.module.web.el.WeldELContextListener;
-import org.junit.jupiter.api.Test;
-
-import jakarta.el.ELResolver;
-import jakarta.el.ExpressionFactory;
-import jakarta.enterprise.inject.spi.BeanManager;
-import jakarta.servlet.ServletContextEvent;
-import jakarta.servlet.jsp.JspApplicationContext;
-
 import static org.easymock.EasyMock.expect;
 import static org.easymock.EasyMock.isA;
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -43,6 +26,23 @@
 import static org.junit.jupiter.api.Assertions.assertSame;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import org.apache.catalina.core.StandardContext;
+import org.easymock.EasyMockSupport;
+import org.glassfish.wasp.runtime.JspApplicationContextImpl;
+import org.jboss.weld.module.web.el.WeldELContextListener;
+import org.junit.jupiter.api.Test;
+
+import jakarta.el.ELResolver;
+import jakarta.el.ExpressionFactory;
+import jakarta.enterprise.inject.spi.BeanManager;
+import jakarta.servlet.ServletContextEvent;
+import jakarta.servlet.jsp.JspApplicationContext;
+
 /**
  * @author <a href="mailto:j.j.snyder@oracle.com">JJ Snyder</a>
  */
diff --git a/appserver/webservices/connector/pom.xml b/appserver/webservices/connector/pom.xml
index 9e5e2b6..5c7f91a 100755
--- a/appserver/webservices/connector/pom.xml
+++ b/appserver/webservices/connector/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.webservices</groupId>
         <artifactId>webservices</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>webservices-connector</artifactId>
diff --git a/appserver/webservices/jsr109-impl/pom.xml b/appserver/webservices/jsr109-impl/pom.xml
index 166b4d5..930af18 100755
--- a/appserver/webservices/jsr109-impl/pom.xml
+++ b/appserver/webservices/jsr109-impl/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.webservices</groupId>
         <artifactId>webservices</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>jsr109-impl</artifactId>
diff --git a/appserver/webservices/jsr109-impl/src/main/java/org/glassfish/webservices/monitoring/WebServiceTesterServlet.java b/appserver/webservices/jsr109-impl/src/main/java/org/glassfish/webservices/monitoring/WebServiceTesterServlet.java
index a845206..f1fcf1f 100644
--- a/appserver/webservices/jsr109-impl/src/main/java/org/glassfish/webservices/monitoring/WebServiceTesterServlet.java
+++ b/appserver/webservices/jsr109-impl/src/main/java/org/glassfish/webservices/monitoring/WebServiceTesterServlet.java
@@ -1,6 +1,6 @@
 /*
- * Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
  * Copyright (c) 2021 Contributors to the Eclipse Foundation
+ * Copyright (c) 1997, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -78,7 +78,8 @@
 
     //modules required by wsimport tool
     private static final List<String> WSIMPORT_MODULES = Arrays.asList(new String[] {
-        "com.sun.activation.jakarta.activation",
+        "jakarta.activation-api",
+        "angus-activation",
         "jakarta.annotation-api",
         "jakarta.xml.bind-api",
         "com.sun.xml.bind.jaxb-osgi",
@@ -613,7 +614,7 @@
             wsimportArgs[2]="-keep";
             wsimportArgs[3]=wsdlLocation.toExternalForm();
             wsimportArgs[4]="-target";
-            wsimportArgs[5]="2.1";
+            wsimportArgs[5]="3.0";
             wsimportArgs[6]="-extension";
             WSToolsObjectFactory tools = WSToolsObjectFactory.newInstance();
             logger.log(Level.INFO, LogUtils.WSIMPORT_INVOKE, wsdlLocation);
diff --git a/appserver/webservices/metro-fragments/pom.xml b/appserver/webservices/metro-fragments/pom.xml
index 8aa776e..fbb4d85 100644
--- a/appserver/webservices/metro-fragments/pom.xml
+++ b/appserver/webservices/metro-fragments/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.webservices</groupId>
         <artifactId>webservices</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>metro-fragments</artifactId>
diff --git a/appserver/webservices/metro-glue/pom.xml b/appserver/webservices/metro-glue/pom.xml
index 5c124c7..28df6e7 100644
--- a/appserver/webservices/metro-glue/pom.xml
+++ b/appserver/webservices/metro-glue/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.webservices</groupId>
         <artifactId>webservices</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/webservices/pom.xml b/appserver/webservices/pom.xml
index effdaa3..4df127d 100755
--- a/appserver/webservices/pom.xml
+++ b/appserver/webservices/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/webservices/soap-tcp/pom.xml b/appserver/webservices/soap-tcp/pom.xml
index 1afefd9..458b05f 100755
--- a/appserver/webservices/soap-tcp/pom.xml
+++ b/appserver/webservices/soap-tcp/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.webservices</groupId>
         <artifactId>webservices</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/appserver/webservices/soap-tcp/src/main/java/org/glassfish/webservices/transport/tcp/ServletFakeArtifactSet.java b/appserver/webservices/soap-tcp/src/main/java/org/glassfish/webservices/transport/tcp/ServletFakeArtifactSet.java
index 493d296..af0ec55 100644
--- a/appserver/webservices/soap-tcp/src/main/java/org/glassfish/webservices/transport/tcp/ServletFakeArtifactSet.java
+++ b/appserver/webservices/soap-tcp/src/main/java/org/glassfish/webservices/transport/tcp/ServletFakeArtifactSet.java
@@ -16,7 +16,6 @@
 
 package org.glassfish.webservices.transport.tcp;
 
-import com.sun.xml.ws.api.DistributedPropertySet;
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.PrintWriter;
@@ -26,14 +25,25 @@
 import java.util.Enumeration;
 import java.util.Locale;
 import java.util.Map;
+
+import com.sun.xml.ws.api.DistributedPropertySet;
+
+import jakarta.servlet.AsyncContext;
+import jakarta.servlet.AsyncListener;
+import jakarta.servlet.DispatcherType;
 import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.ServletConnection;
+import jakarta.servlet.ServletContext;
 import jakarta.servlet.ServletInputStream;
 import jakarta.servlet.ServletOutputStream;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
 import jakarta.servlet.http.Cookie;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.servlet.http.HttpSession;
 import jakarta.servlet.http.HttpUpgradeHandler;
+import jakarta.servlet.http.Part;
 import jakarta.xml.soap.SOAPException;
 import jakarta.xml.soap.SOAPMessage;
 import jakarta.xml.ws.handler.MessageContext;
@@ -52,6 +62,7 @@
         model = parse(ServletFakeArtifactSet.class);
     }
 
+    @Override
     public DistributedPropertySet.PropertyMap getPropertyMap() {
         return model;
     }
@@ -90,102 +101,127 @@
             this.servletPath = servletPath;
         }
 
+        @Override
         public String getAuthType() {
             return null;
         }
 
+        @Override
         public Cookie[] getCookies() {
             return null;
         }
 
+        @Override
         public long getDateHeader(final String string) {
             return 0L;
         }
 
+        @Override
         public String getHeader(final String string) {
             return null;
         }
 
+        @Override
         public Enumeration<String> getHeaders(final String string) {
             return null;
         }
 
+        @Override
         public Enumeration<String> getHeaderNames() {
             return null;
         }
 
+        @Override
         public int getIntHeader(final String string) {
             return -1;
         }
 
+        @Override
         public String getMethod() {
             return "POST";
         }
 
+        @Override
         public String getPathInfo() {
             return null;
         }
 
+        @Override
         public String getPathTranslated() {
             return null;
         }
 
+        @Override
         public String getContextPath() {
             return null;
         }
 
+        @Override
         public String getQueryString() {
             return null;
         }
 
+        @Override
         public String getRemoteUser() {
             return null;
         }
 
+        @Override
         public boolean isUserInRole(final String string) {
             return true;
         }
 
+        @Override
         public Principal getUserPrincipal() {
             return null;
         }
 
+        @Override
         public String getRequestedSessionId() {
             return null;
         }
 
+        @Override
         public String getRequestURI() {
             return requestURI;
         }
 
+        @Override
         public StringBuffer getRequestURL() {
             return requestURL;
         }
 
+        @Override
         public String getServletPath() {
             return servletPath;
         }
 
+        @Override
         public HttpSession getSession(final boolean b) {
             return null;
         }
 
+        @Override
         public HttpSession getSession() {
             return null;
         }
 
+        @Override
         public String changeSessionId() {
             return null;
         }
 
+        @Override
         public boolean isRequestedSessionIdValid() {
             return true;
         }
 
+        @Override
         public boolean isRequestedSessionIdFromCookie() {
             return true;
         }
 
+        @Override
         public boolean isRequestedSessionIdFromURL() {
             return true;
         }
@@ -194,99 +230,124 @@
             return true;
         }
 
+        @Override
         public Object getAttribute(final String string) {
             return null;
         }
 
-        public Enumeration getAttributeNames() {
+        @Override
+        public Enumeration<String> getAttributeNames() {
             return null;
         }
 
+        @Override
         public String getCharacterEncoding() {
             return null;
         }
 
+        @Override
         public void setCharacterEncoding(final String string) throws UnsupportedEncodingException {
         }
 
+        @Override
         public int getContentLength() {
             return 0;
         }
 
+        @Override
         public long getContentLengthLong() {
             return 0L;
         }
 
+        @Override
         public String getContentType() {
             return null;
         }
 
+        @Override
         public ServletInputStream getInputStream() throws IOException {
             return null;
         }
 
+        @Override
         public String getParameter(final String string) {
             return null;
         }
 
-        public Enumeration getParameterNames() {
+        @Override
+        public Enumeration<String> getParameterNames() {
             return null;
         }
 
+        @Override
         public String[] getParameterValues(final String string) {
             return null;
         }
 
+        @Override
         public Map getParameterMap() {
             return null;
         }
 
+        @Override
         public String getProtocol() {
             return null;
         }
 
+        @Override
         public String getScheme() {
             return null;
         }
 
+        @Override
         public String getServerName() {
             return null;
         }
 
+        @Override
         public int getServerPort() {
             return 0;
         }
 
+        @Override
         public BufferedReader getReader() throws IOException {
             return null;
         }
 
+        @Override
         public String getRemoteAddr() {
             return null;
         }
 
+        @Override
         public String getRemoteHost() {
             return null;
         }
 
+        @Override
         public void setAttribute(final String string, final Object object) {
         }
 
+        @Override
         public void removeAttribute(final String string) {
         }
 
+        @Override
         public Locale getLocale() {
             return null;
         }
 
-        public Enumeration getLocales() {
+        @Override
+        public Enumeration<Locale> getLocales() {
             return null;
         }
 
+        @Override
         public boolean isSecure() {
             return false;
         }
 
+        @Override
         public RequestDispatcher getRequestDispatcher(final String string) {
             return null;
         }
@@ -295,45 +356,56 @@
             return null;
         }
 
+        @Override
         public int getRemotePort() {
             return 0;
         }
 
+        @Override
         public String getLocalName() {
             return null;
         }
 
+        @Override
         public String getLocalAddr() {
             return null;
         }
 
+        @Override
         public int getLocalPort() {
             return 0;
         }
 
-        public jakarta.servlet.http.Part getPart(String s) {
+        @Override
+        public Part getPart(String s) {
             return null;
         }
 
-        public Collection<jakarta.servlet.http.Part> getParts() {
+        @Override
+        public Collection<Part> getParts() {
             return null;
         }
 
+        @Override
         public void login(String s1, String s2) {
         }
 
+        @Override
         public void logout() {
         }
 
+        @Override
         public <T extends HttpUpgradeHandler> T upgrade(Class<T> handlerClass) {
             return null;
         }
 
+        @Override
         public boolean authenticate(HttpServletResponse response) {
             return true;
         }
 
-        public jakarta.servlet.DispatcherType getDispatcherType() {
+        @Override
+        public DispatcherType getDispatcherType() {
             return null;
         }
 
@@ -344,49 +416,74 @@
         public void setAsyncTimeout(long timeout) {
         }
 
-        public void addAsyncListener(jakarta.servlet.AsyncListener listener) {
+        public void addAsyncListener(AsyncListener listener) {
         }
 
-        public void addAsyncListener(jakarta.servlet.AsyncListener listener, jakarta.servlet.ServletRequest request, jakarta.servlet.ServletResponse response) {
+        public void addAsyncListener(AsyncListener listener, ServletRequest request, ServletResponse response) {
         }
 
+        @Override
         public jakarta.servlet.AsyncContext getAsyncContext() {
             return null;
         }
 
+        @Override
         public boolean isAsyncSupported() {
             return false;
         }
 
+        @Override
         public boolean isAsyncStarted() {
             return false;
         }
 
-        public jakarta.servlet.AsyncContext startAsync() {
+        @Override
+        public AsyncContext startAsync() {
             return null;
         }
 
-        public jakarta.servlet.AsyncContext startAsync(jakarta.servlet.ServletRequest request, jakarta.servlet.ServletResponse response) {
+        @Override
+        public AsyncContext startAsync(ServletRequest request, ServletResponse response) {
             return null;
         }
 
-        public jakarta.servlet.ServletContext getServletContext() {
+        @Override
+        public ServletContext getServletContext() {
+            return null;
+        }
+
+        @Override
+        public String getRequestId() {
+            return null;
+        }
+
+        @Override
+        public String getProtocolRequestId() {
+            return null;
+        }
+
+        @Override
+        public ServletConnection getServletConnection() {
             return null;
         }
     }
 
     public static final class FakeServletHttpResponse implements HttpServletResponse {
+        @Override
         public void addCookie(final Cookie cookie) {
         }
 
+        @Override
         public boolean containsHeader(final String string) {
             return true;
         }
 
+        @Override
         public String encodeURL(final String string) {
             return null;
         }
 
+        @Override
         public String encodeRedirectURL(final String string) {
             return null;
         }
@@ -399,106 +496,136 @@
             return null;
         }
 
+        @Override
         public void sendError(final int i, final String string) throws IOException {
         }
 
+        @Override
         public void sendError(final int i) throws IOException {
         }
 
+        @Override
         public void sendRedirect(final String string) throws IOException {
         }
 
+        @Override
         public void setDateHeader(final String string, final long l) {
         }
 
+        @Override
         public void addDateHeader(final String string, final long l) {
         }
 
+        @Override
         public void setHeader(final String string, final String string0) {
         }
 
+        @Override
         public void addHeader(final String string,final  String string0) {
         }
 
+        @Override
         public void setIntHeader(final String string, final int i) {
         }
 
+        @Override
         public void addIntHeader(final String string, final int i) {
         }
 
+        @Override
         public void setStatus(final int i) {
         }
 
         public void setStatus(final int i, final String string) {
         }
 
+        @Override
         public String getCharacterEncoding() {
             return null;
         }
 
+        @Override
         public String getContentType() {
             return null;
         }
 
+        @Override
         public ServletOutputStream getOutputStream() throws IOException {
             return null;
         }
 
+        @Override
         public PrintWriter getWriter() throws IOException {
             return null;
         }
 
+        @Override
         public void setCharacterEncoding(final String string) {
         }
 
+        @Override
         public void setContentLength(final int i) {
         }
 
+        @Override
         public void setContentLengthLong(final long l) {
         }
 
+        @Override
         public void setContentType(final String string) {
         }
 
+        @Override
         public void setBufferSize(final int i) {
         }
 
+        @Override
         public int getBufferSize() {
             return 0;
         }
 
+        @Override
         public void flushBuffer() throws IOException {
         }
 
+        @Override
         public void resetBuffer() {
         }
 
+        @Override
         public boolean isCommitted() {
             return true;
         }
 
+        @Override
         public void reset() {
         }
 
+        @Override
         public void setLocale(final Locale locale) {
         }
 
+        @Override
         public Locale getLocale() {
             return null;
         }
 
+        @Override
         public Collection<String> getHeaderNames() {
             return null;
         }
 
+        @Override
         public Collection<String> getHeaders(String s) {
             return null;
         }
 
+        @Override
         public String getHeader(String name) {
             return null;
         }
 
+        @Override
         public int getStatus() {
             return 200;
         }
diff --git a/appserver/webservices/webservices-scripts/pom.xml b/appserver/webservices/webservices-scripts/pom.xml
index c1d069d..cde02e5 100644
--- a/appserver/webservices/webservices-scripts/pom.xml
+++ b/appserver/webservices/webservices-scripts/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.webservices</groupId>
         <artifactId>webservices</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>webservices-scripts</artifactId>
@@ -49,5 +49,6 @@
       the transitive dependency handling in Maven.
     -->
     <packaging>distribution-fragment</packaging>
+
     <name>GlassFish webservices scripts</name>
 </project>
diff --git a/appserver/webservices/webservices-scripts/src/main/resources/glassfish/bin/schemagen b/appserver/webservices/webservices-scripts/src/main/resources/glassfish/bin/schemagen
index 7f2c915..96a6500 100644
--- a/appserver/webservices/webservices-scripts/src/main/resources/glassfish/bin/schemagen
+++ b/appserver/webservices/webservices-scripts/src/main/resources/glassfish/bin/schemagen
@@ -30,4 +30,4 @@
     JAVA=${AS_JAVA}/bin/java
 fi
 
-exec "$JAVA" -cp "$AS_INSTALL_LIB/webservices-api-osgi.jar:$AS_INSTALL_LIB/webservices-osgi.jar:$AS_INSTALL_LIB/jakarta.xml.bind-api.jar:$AS_INSTALL_LIB/jaxb-osgi.jar:$AS_INSTALL_LIB/jakarta.activation.jar" com.sun.tools.jxc.SchemaGeneratorFacade "$@"
+exec "$JAVA" -cp "$AS_INSTALL_LIB/webservices-api-osgi.jar:$AS_INSTALL_LIB/webservices-osgi.jar:$AS_INSTALL_LIB/jakarta.xml.bind-api.jar:$AS_INSTALL_LIB/jaxb-osgi.jar:$AS_INSTALL_LIB/jakarta.activation-api.jar:$AS_INSTALL_LIB/angus-activation.jar" com.sun.tools.jxc.SchemaGeneratorFacade "$@"
diff --git a/appserver/webservices/webservices-scripts/src/main/resources/glassfish/bin/schemagen.bat b/appserver/webservices/webservices-scripts/src/main/resources/glassfish/bin/schemagen.bat
index 58ccdb4..a6ee72e 100644
--- a/appserver/webservices/webservices-scripts/src/main/resources/glassfish/bin/schemagen.bat
+++ b/appserver/webservices/webservices-scripts/src/main/resources/glassfish/bin/schemagen.bat
@@ -33,4 +33,4 @@
 set JAVA=java
 
 :run
-%JAVA% -cp "%~dp0..\modules\webservices-api-osgi.jar;%~dp0..\modules\webservices-osgi.jar;%~dp0..\modules\jakarta.xml.bind-api.jar;%~dp0..\modules\jaxb-osgi.jar;%~dp0..\modules\jakarta.activation.jar" com.sun.tools.jxc.SchemaGeneratorFacade %*
+%JAVA% -cp "%~dp0..\modules\webservices-api-osgi.jar;%~dp0..\modules\webservices-osgi.jar;%~dp0..\modules\jakarta.xml.bind-api.jar;%~dp0..\modules\jaxb-osgi.jar;%~dp0..\modules\jakarta.activation-api.jar;%~dp0..\modules\angus-activation.jar" com.sun.tools.jxc.SchemaGeneratorFacade %*
diff --git a/appserver/webservices/webservices-scripts/src/main/resources/glassfish/bin/wsgen b/appserver/webservices/webservices-scripts/src/main/resources/glassfish/bin/wsgen
index 245fce1..bf15480 100644
--- a/appserver/webservices/webservices-scripts/src/main/resources/glassfish/bin/wsgen
+++ b/appserver/webservices/webservices-scripts/src/main/resources/glassfish/bin/wsgen
@@ -30,4 +30,4 @@
     JAVA=${AS_JAVA}/bin/java
 fi
 
-exec "$JAVA" $WSGEN_OPTS -cp "$AS_INSTALL_LIB/webservices-api-osgi.jar:$AS_INSTALL_LIB/webservices-osgi.jar:$AS_INSTALL_LIB/jakarta.xml.bind-api.jar:$AS_INSTALL_LIB/jaxb-osgi.jar:$AS_INSTALL_LIB/jakarta.activation.jar" com.sun.tools.ws.WsGen "$@"
+exec "$JAVA" $WSGEN_OPTS -cp "$AS_INSTALL_LIB/webservices-api-osgi.jar:$AS_INSTALL_LIB/webservices-osgi.jar:$AS_INSTALL_LIB/jakarta.xml.bind-api.jar:$AS_INSTALL_LIB/jaxb-osgi.jar:$AS_INSTALL_LIB/jakarta.activation-api.jar:$AS_INSTALL_LIB/angus-activation.jar" com.sun.tools.ws.WsGen "$@"
diff --git a/appserver/webservices/webservices-scripts/src/main/resources/glassfish/bin/wsgen.bat b/appserver/webservices/webservices-scripts/src/main/resources/glassfish/bin/wsgen.bat
index c907bc7..38694ba 100644
--- a/appserver/webservices/webservices-scripts/src/main/resources/glassfish/bin/wsgen.bat
+++ b/appserver/webservices/webservices-scripts/src/main/resources/glassfish/bin/wsgen.bat
@@ -33,4 +33,4 @@
 set JAVA=java
 
 :run
-%JAVA% %WSGEN_OPTS% -cp "%~dp0..\modules\webservices-api-osgi.jar;%~dp0..\modules\webservices-osgi.jar;%~dp0..\modules\jakarta.xml.bind-api.jar;%~dp0..\modules\jaxb-osgi.jar;%~dp0..\modules\jakarta.activation.jar" com.sun.tools.ws.WsGen %*
+%JAVA% %WSGEN_OPTS% -cp "%~dp0..\modules\webservices-api-osgi.jar;%~dp0..\modules\webservices-osgi.jar;%~dp0..\modules\jakarta.xml.bind-api.jar;%~dp0..\modules\jaxb-osgi.jar;%~dp0..\modules\jakarta.activation-api.jar;%~dp0..\modules\angus-activation.jar" com.sun.tools.ws.WsGen %*
diff --git a/appserver/webservices/webservices-scripts/src/main/resources/glassfish/bin/wsimport b/appserver/webservices/webservices-scripts/src/main/resources/glassfish/bin/wsimport
index 132cd36..5792b17 100644
--- a/appserver/webservices/webservices-scripts/src/main/resources/glassfish/bin/wsimport
+++ b/appserver/webservices/webservices-scripts/src/main/resources/glassfish/bin/wsimport
@@ -30,4 +30,4 @@
     JAVA=${AS_JAVA}/bin/java
 fi
 
-exec "$JAVA" $WSIMPORT_OPTS -cp "$AS_INSTALL_LIB/webservices-api-osgi.jar:$AS_INSTALL_LIB/webservices-osgi.jar:$AS_INSTALL_LIB/jakarta.xml.bind-api.jar:$AS_INSTALL_LIB/jaxb-osgi.jar:$AS_INSTALL_LIB/jakarta.activation.jar" com.sun.tools.ws.WsImport "$@"
+exec "$JAVA" $WSIMPORT_OPTS -cp "$AS_INSTALL_LIB/webservices-api-osgi.jar:$AS_INSTALL_LIB/webservices-osgi.jar:$AS_INSTALL_LIB/jakarta.xml.bind-api.jar:$AS_INSTALL_LIB/jaxb-osgi.jar:$AS_INSTALL_LIB/jakarta.activation-api.jar:$AS_INSTALL_LIB/angus-activation.jar" com.sun.tools.ws.WsImport "$@"
diff --git a/appserver/webservices/webservices-scripts/src/main/resources/glassfish/bin/wsimport.bat b/appserver/webservices/webservices-scripts/src/main/resources/glassfish/bin/wsimport.bat
index 907a465..7384523 100644
--- a/appserver/webservices/webservices-scripts/src/main/resources/glassfish/bin/wsimport.bat
+++ b/appserver/webservices/webservices-scripts/src/main/resources/glassfish/bin/wsimport.bat
@@ -33,4 +33,4 @@
 set JAVA=java
 
 :run
-%JAVA% %WSIMPORT_OPTS% -cp "%~dp0..\modules\webservices-api-osgi.jar;%~dp0..\modules\webservices-osgi.jar;%~dp0..\modules\jakarta.xml.bind-api.jar;%~dp0..\modules\jaxb-osgi.jar;%~dp0..\modules\jakarta.activation.jar" com.sun.tools.ws.WsImport %*
+%JAVA% %WSIMPORT_OPTS% -cp "%~dp0..\modules\webservices-api-osgi.jar;%~dp0..\modules\webservices-osgi.jar;%~dp0..\modules\jakarta.xml.bind-api.jar;%~dp0..\modules\jaxb-osgi.jar;%~dp0..\modules\jakarta.activation-api.jar;%~dp0..\modules\angus-activation.jar" com.sun.tools.ws.WsImport %*
diff --git a/appserver/webservices/webservices-scripts/src/main/resources/glassfish/bin/xjc b/appserver/webservices/webservices-scripts/src/main/resources/glassfish/bin/xjc
index 1b05a27..980dbf2 100644
--- a/appserver/webservices/webservices-scripts/src/main/resources/glassfish/bin/xjc
+++ b/appserver/webservices/webservices-scripts/src/main/resources/glassfish/bin/xjc
@@ -30,4 +30,4 @@
     JAVA=${AS_JAVA}/bin/java
 fi
 
-exec "$JAVA" -cp "$AS_INSTALL_LIB/webservices-api-osgi.jar:$AS_INSTALL_LIB/webservices-osgi.jar:$AS_INSTALL_LIB/jakarta.xml.bind-api.jar:$AS_INSTALL_LIB/jaxb-osgi.jar:$AS_INSTALL_LIB/jakarta.activation.jar" com.sun.tools.xjc.Driver "$@"
+exec "$JAVA" -cp "$AS_INSTALL_LIB/webservices-api-osgi.jar:$AS_INSTALL_LIB/webservices-osgi.jar:$AS_INSTALL_LIB/jakarta.xml.bind-api.jar:$AS_INSTALL_LIB/jaxb-osgi.jar:$AS_INSTALL_LIB/jakarta.activation-api.jar:$AS_INSTALL_LIB/angus-activation.jar" com.sun.tools.xjc.Driver "$@"
diff --git a/appserver/webservices/webservices-scripts/src/main/resources/glassfish/bin/xjc.bat b/appserver/webservices/webservices-scripts/src/main/resources/glassfish/bin/xjc.bat
index 129f4ec..e470057 100644
--- a/appserver/webservices/webservices-scripts/src/main/resources/glassfish/bin/xjc.bat
+++ b/appserver/webservices/webservices-scripts/src/main/resources/glassfish/bin/xjc.bat
@@ -33,4 +33,4 @@
 set JAVA=java
 
 :run
-%JAVA% -cp "%~dp0..\modules\webservices-api-osgi.jar;%~dp0..\modules\webservices-osgi.jar;%~dp0..\modules\jakarta.xml.bind-api.jar;%~dp0..\modules\jaxb-osgi.jar;%~dp0..\modules\jakarta.activation.jar" com.sun.tools.xjc.Driver %*
+%JAVA% -cp "%~dp0..\modules\webservices-api-osgi.jar;%~dp0..\modules\webservices-osgi.jar;%~dp0..\modules\jakarta.xml.bind-api.jar;%~dp0..\modules\jaxb-osgi.jar;%~dp0..\modules\jakarta.activation-api.jar;%~dp0..\modules\angus-activation.jar" com.sun.tools.xjc.Driver %*
diff --git a/docs/add-on-component-development-guide/README.md b/docs/add-on-component-development-guide/README.md
deleted file mode 100644
index a3ec2b6..0000000
--- a/docs/add-on-component-development-guide/README.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# A JBake project template
-
-## About JBake
-
-JBake is a static site generator, it's inspired from jekyll and written
-in java.  The basic idea is to have templates for the structure of the
-page, and the body generated from asciidoc content.
-
-## Pre requisites
-
-- Maven
-- JDK8+
-
-Deploying to Github will require password less authentication.
-
-This is done by exporting your SSH public key into your Github account.
-
-## Build the site locally
-
-The site is generated under target/staging.
-
-Open file:///PATH_TO_PROJECT_DIR/target/staging in a browser to view the site.
-
-```
-mvn generate-resources
-```
-
-Or you can invoke the JBake plugin directly.
-
-```
-mvn jbake:build
-```
-
-### Rebuild the site on changes
-
-```
-mvn jbake:watch
-```
-
-If you keep this command running, changes to the sources will be
-detected and the site will be rendered incrementally.
-
-This is convenient when writing content.
-
-### Serve the site locally
-
-```
-mvn jbake:serve
-```
-
-If a webserver is required (e.g. absolute path are used), this command
-will start a webserver (jetty) at http://localhost:8820.  It will also
-watch for changes and rebuild incrementally.
-
-## Deploy the site to Github Pages
-
-```
-mvn deploy
-```
-
-## Produce a zip file for download
-
-To produce a zip file containing the generated html files, use:
-
-```
-mvn package
-```
-
-When making a release on GitHub, this zip file should be added to the release.
-
-## Links
-
-- [JBake maven plugin documentation](https://github.com/Blazebit/jbake-maven-plugin)
-- [JBake documentation](http://jbake.org/docs/2.5.1)
-- [Freemarker documentation](http://freemarker.org/docs)
-- [AsciiDoc User Guide](http://asciidoc.org/userguide.html)
-- [Asciidoctor quick reference](http://asciidoctor.org/docs/asciidoc-syntax-quick-reference)
diff --git a/docs/add-on-component-development-guide/pom.xml b/docs/add-on-component-development-guide/pom.xml
index 95880b6..7dc7027 100644
--- a/docs/add-on-component-development-guide/pom.xml
+++ b/docs/add-on-component-development-guide/pom.xml
@@ -22,11 +22,10 @@
     <parent>
         <groupId>org.glassfish.docs</groupId>
         <artifactId>parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../parent</relativePath>
     </parent>
-    <groupId>org.glassfish.docs</groupId>
     <artifactId>add-on-component-development-guide</artifactId>
     <packaging>jar</packaging>
-    <name>Eclipse GlassFish Server Add-On Component Development Guide, Release 5.1</name>
+    <name>Eclipse GlassFish Server Add-On Component Development Guide, Release 7</name>
 </project>
diff --git a/docs/add-on-component-development-guide/src/main/asciidoc/adding-configuration-data.adoc b/docs/add-on-component-development-guide/src/main/asciidoc/adding-configuration-data.adoc
new file mode 100644
index 0000000..ac0c131
--- /dev/null
+++ b/docs/add-on-component-development-guide/src/main/asciidoc/adding-configuration-data.adoc
@@ -0,0 +1,840 @@
+type=page
+status=published
+title=Adding Configuration Data for a Component
+next=adding-container-capabilities.html
+prev=adding-monitoring-capabilities.html
+~~~~~~
+
+= Adding Configuration Data for a Component
+
+[[GSACG00006]][[gjlpe]]
+
+[[adding-configuration-data-for-a-component]]
+== Adding Configuration Data for a Component
+
+The configuration data of a component determines the characteristics and
+runtime behavior of a component. {productName} provides interfaces to
+enable an add-on component to store its configuration data in the same
+way as other {productName} components. These interfaces are similar
+to interfaces that are defined in
+[Jakarta XML Binding](`https://jakarta.ee/specifications/xml-binding/`). By using these interfaces to
+store configuration data, you ensure that the add-on component is fully
+integrated with {productName}. As a result, administrators can
+configure an add-on component in the same way as they can configure
+other {productName} components.
+
+The following topics are addressed here:
+
+* link:#gjrdv[How {productName} Stores Configuration Data]
+* link:#gjlop[Defining an Element]
+* link:#gjlpb[Defining an Attribute of an Element]
+* link:#gjlov[Defining a Subelement]
+* link:#gjlpu[Validating Configuration Data]
+* link:#gjrdj[Initializing a Component's Configuration Data]
+* link:#gjrcz[Creating a Transaction to Update Configuration Data]
+* link:#gjmkt[Dotted Names and REST URLs of Configuration Attributes]
+* link:#gkaal[Examples of Adding Configuration Data for a Component]
+
+[[gjrdv]][[GSACG00121]][[how-glassfish-server-stores-configuration-data]]
+
+=== How {productName} Stores Configuration Data
+
+{productName} stores the configuration data for a domain in a single
+configuration file that is named `domain.xml`. This file is an
+extensible markup language (XML) instance that contains a hierarchy of
+elements to represent a domain's configuration. The content model of
+this XML instance is not defined in a document type definition (DTD) or
+an XML schema. Instead, the content model is derived from Java language
+interfaces with appropriate annotations. You use these annotations to
+add configuration data for a component as explained in the sections that
+follow.
+
+[[gjlop]][[GSACG00122]][[defining-an-element]]
+
+=== Defining an Element
+
+An element represents an item of configuration data. For example, to
+represent the configuration data for a network listener, {productName} defines the `network-listener` element.
+
+Define an element for each item of configuration data that you are
+adding.
+
+[[gjcnt]][[GSACG00074]][[to-define-an-element]]
+
+==== To Define an Element
+
+1. Define a Java language interface to represent the element.
+Define one interface for each element. Do not represent multiple
+elements in a single interface.
+The name that you give to the interface determines name of the element
+as follows:
+* A change from lowercase to uppercase in the interface name is
+  transformed to the hyphen (`-`) separator character.
+* The element name is all lowercase.
+For example, to define an interface to represent the
+`wombat-container-config` element, give the name `WombatContainerConfig`
+to the interface.
+
+2. Specify the parent of the element.
+To specify the parent, extend the interface that identifies the parent
+as shown in the following table.
++
+[width="100%",cols="<27%,<73%",options="header",]
+|===
+|Parent Element |Interface to Extend
+|`config`
+|`org.glassfish.api.admin.config.Container`
+
+|`applications`
+|`org.glassfish.api.admin.config.ApplicationName`
+
+|Another element that you are defining
+|`org.jvnet.hk2.config.ConfigBeanProxy`
+|===
+
+3. Annotate the declaration of the interface with the
+`org.jvnet.hk2.config.Configured` annotation.
+
+[[GSACG00053]][[gjcne]]
+Example 6-1 Declaration of an Interface That Defines an Element
+
+This example shows the declaration of the `WombatContainerConfig`
+interface that represents the `wombat-container-config` element.
+The parent of this element is the `config` element.
+
+[source,java]
+----
+...
+import org.jvnet.hk2.config.Configured;
+...
+import org.glassfish.api.admin.config.Container;
+...
+@Configured
+public interface WombatContainerConfig extends Container {
+...
+}
+----
+
+[[sthref6]]
+
+How Interfaces That Are Annotated With @Configured Are Implemented
+
+You are not required to implement any interfaces that you annotate with
+the `@Configured` annotation. {productName} implements these
+interfaces by using the `Dom` class. {productName} creates a proxy
+for each `Dom` object to implement the interface.
+
+[[gjlpb]][[GSACG00123]][[defining-an-attribute-of-an-element]]
+
+=== Defining an Attribute of an Element
+
+The attributes of an element describe the characteristics of the
+element.
+For example, the `port` attribute of the `network-listener`
+element identifies the port number on which the listener listens.
+
+[[gjorj]][[GSACG00227]][[representing-an-attribute-of-an-element]]
+
+==== Representing an Attribute of an Element
+
+Represent each attribute of an element as the property of a pair of
+JavaBeans specification getter and setter methods of the interface that
+defines the element. The component for which the configuration data is
+being defined can then access the attribute through the getter method.
+The setter method enables the attribute to be updated.
+
+[[gjopa]][[GSACG00228]][[specifying-the-data-type-of-an-attribute]]
+
+==== Specifying the Data Type of an Attribute
+
+The data type of an attribute is the return type of the getter method
+that is associated with the attribute. To enable the attribute take
+properties in the form `${`property-name`}` as values, specify the data
+type as `String`.
+
+[[gjopm]][[GSACG00229]][[identifying-an-attribute-of-an-element]]
+
+==== Identifying an Attribute of an Element
+
+To identify an attribute of an element, annotate the declaration of the
+getter method that is associated with the attribute with the
+`org.jvnet.hk2.config.Attribute` annotation.
+
+To specify the properties of the attribute, use the elements of the
+`@Attribute` annotation as explained in the sections that follow.
+
+[[gjopq]][[GSACG00230]][[specifying-the-name-of-an-attribute]]
+
+==== Specifying the Name of an Attribute
+
+To specify the name of an attribute, set the `value` element of the
+`@Attribute` annotation to a string that specifies the name. If you do
+not set this element, the name is derived from the name of the property
+as follows:
+
+* A change from lowercase to uppercase in the interface name is
+transformed to the hyphen (`-`) separator character.
+* The element name is all lowercase.
+
+For example, if the getter method `getNumberOfInstances` is defined for
+the property `NumberOfInstances` to represent an attribute, the name of
+the attribute is `number-of-instances`.
+
+[[gjoqj]][[GSACG00231]][[specifying-the-default-value-of-an-attribute]]
+
+==== Specifying the Default Value of an Attribute
+
+The default value of an attribute is the value that is applied if the
+attribute is omitted when the element is written to the domain
+configuration file.
+
+To specify the default value of an attribute, set the `defaultValue`
+element of the `@Attribute` annotation to a string that contains the
+default value. If you do not set this element, the parameter has no
+default value.
+
+[[gjoui]][[GSACG00232]][[specifying-whether-an-attribute-is-required-or-optional]]
+
+==== Specifying Whether an Attribute Is Required or Optional
+
+Whether an attribute is required or optional determines how {productName} responds if the parameter is omitted when the element is written
+to the domain configuration file:
+
+* If the attribute is required, an error occurs.
+* If the attribute is optional, the element is written successfully to
+the domain configuration file.
+
+To specify whether an attribute is required or optional, set the
+`required` element of the `@Attribute` annotation as follows:
+
+* If the attribute is required, set the `required` element to `true`.
+* If the attribute is optional, set the `required` element to `false`.
+This value is the default.
+
+[[gjrdz]][[GSACG00233]][[example-of-defining-an-attribute-of-an-element]]
+
+==== Example of Defining an Attribute of an Element
+
+[[sthref7]]
+
+Example 6-2 Defining an Attribute of an Element
+
+This example defines the attribute `number-of-instances`. To enable the
+attribute take properties in the form `${`property-name`}` as values,
+the data type of this attribute is `String`.
+
+[source,java]
+----
+import org.jvnet.hk2.config.Attribute;
+...
+    @Attribute
+    public String getNumberOfInstances();
+    public void setNumberOfInstances(String instances) throws PropertyVetoException;
+...
+----
+
+[[gjlov]][[GSACG00124]][[defining-a-subelement]]
+
+=== Defining a Subelement
+
+A subelement represents a containment or ownership relationship. For
+example, {productName} defines the `network-listeners` element to
+contain the configuration data for individual network listeners. The
+configuration data for an individual network listener is represented by
+the `network-listener` element, which is a subelement of
+`network-listeners` element.
+
+[[gjzlb]][[GSACG00075]][[to-define-a-subelement]]
+
+==== To Define a Subelement
+
+1. Define an interface to represent the subelement.
+For more information, see link:#gjlop[Defining an Element].
+The interface that represents the subelement must extend the
+`org.jvnet.hk2.config.ConfigBeanProxy` interface.
+
+2. In the interface that defines the parent element, identify the
+subelement to its parent element.
+
+3. Represent the subelement as the property of a JavaBeans
+specification getter or setter method.
+
+4. Annotate the declaration of the getter or setter method that is
+associated with the subelement with the `org.jvnet.hk2.config.Element`
+annotation.
+
+[[GSACG00054]][[gjzjt]]
+Example 6-3 Declaring an Interface to Represent a Subelement
+
+This example shows the declaration of the `WombatElement` interface to
+represent the `wombat-element` element.
+
+[source,java]
+----
+...
+import org.jvnet.hk2.config.ConfigBeanProxy;
+import org.jvnet.hk2.config.Configured;
+...
+@Configured
+public interface WombatElement extends ConfigBeanProxy {
+...
+}
+...
+----
+
+[[GSACG00055]][[gjzkh]]
+Example 6-4 Identifying a Subelement to its Parent Element
+
+This example identifies the `wombat-element` element as a subelement.
+
+[source,java]
+----
+...
+import org.jvnet.hk2.config.Element;
+...
+import java.beans.PropertyVetoException;
+...
+@Element
+    public WombatElement getElement();
+    public void setElement(WombatElement element) throws PropertyVetoException;
+...
+----
+
+[[gjlpu]][[GSACG00125]][[validating-configuration-data]]
+
+=== Validating Configuration Data
+
+Validating configuration data ensures that attribute values that are
+being set or updated do not violate any constraints that you impose on
+the data. For example, you might require that an attribute that
+represents a name is not null, or an integer that represents a port
+number is within the range of available port numbers. Any attempt to set
+or update an attribute value that fails validation fails. Any
+validations that you specify for an attribute are performed when the
+attribute is initialized and every time the attribute is changed.
+
+To standardize the validation of configuration data, {productName}
+uses https://jakarta.ee/specifications/bean-validation/[Jakarta Bean Validation]
+(`https://jakarta.ee/specifications/bean-validation/`) for validating configuration
+data.
+Jakarta Bean Validation defines a metadata model and API for the validation of
+JavaBeans components.
+
+To validate an attribute of an element, annotate the attribute's getter
+method with the annotation in the `jakarta.validation.constraints` package
+that performs the validation that you require. The following table lists
+commonly used annotations for validating {productName} configuration
+data.
+For the complete list of annotations, see the
+https://jakarta.ee/specifications/bean-validation/3.0/apidocs/jakarta/validation/constraints/package-summary.html[`jakarta.validation.constraints`
+package summary]
+(`https://jakarta.ee/specifications/bean-validation/3.0/apidocs/jakarta/validation/constraints/package-summary.html`).
+
+[[sthref8]][[gjrlg]]
+
+Table 6-1 Commonly Used Annotations for Validating {productName}
+Configuration Data
+
+[width="100%",cols="<37%,<63%",options="header",]
+|===
+|Validation |Annotation
+|Not null |`jakarta.validation.constraints.NotNull`
+
+|Null |`jakarta.validation.constraints.Null`
+
+|Minimum value a|
+`jakarta.validation.constraints.Min`
+
+Set the `value` element of this annotation to the minimum allowed value.
+
+|Maximum value a|
+`jakarta.validation.constraints.Max`
+
+Set the `value` element of this annotation to the maximum allowed value.
+
+|Regular expression matching a|
+`jakarta.validation.constraints.Pattern`
+
+Set the `regexp` element of this annotation to the regular expression
+that is to be matched.
+
+|===
+
+
+[[GSACG00056]][[gjrmp]]
+Example 6-5 Specifying a Range of Valid Values for an Integer
+
+This example specifies that the attribute `rotation-interval-in-minutes`
+must be a positive integer.
+
+[source,java]
+----
+...
+import jakarta.validation.constraints.Max;
+import jakarta.validation.constraints.Min;
+...
+@Min(value=1)
+@Max(value=Integer.MAX_VALUE)
+String getRotationIntervalInMinutes();
+...
+----
+
+[[GSACG00057]][[gjzkq]]
+Example 6-6 Specifying Regular Expression Matching
+
+This example specifies that the attribute `classname` must contain only
+non-whitespace characters.
+
+[source,java]
+----
+import jakarta.validation.constraints.Pattern;
+...
+@Pattern(regexp="^[\\S]*$")
+String getClassname();
+...
+----
+
+[[gjrdj]][[GSACG00126]][[initializing-a-components-configuration-data]]
+
+=== Initializing a Component's Configuration Data
+
+To ensure that a component's configuration data is added to the
+`domain.xml` file when the component is first instantiated, you must
+initialize the component's configuration data.
+
+Initializing a component's configuration data involves the following
+tasks:
+
+* link:#gkbgi[To Define a Component's Initial Configuration Data]
+* link:#gjses[To Write a Component's Initial Configuration Data to the
+`domain.xml` File]
+
+[[gkbgi]][[GSACG00076]][[to-define-a-components-initial-configuration-data]]
+
+==== To Define a Component's Initial Configuration Data
+
+1. Create a plain-text file that contains an XML fragment to represent
+the configuration data.
+* Ensure that each XML element accurately represents the interface that
+  is defined for the element.
+* Ensure that any subelements that you are initializing are correctly nested.
+* Set attributes of the elements to their required initial values.
+2. When you package the component, include the file that contains the
+XML fragment in the component's JAR file.
+
+[[GSACG00058]][[gkaba]]
+Example 6-7 XML Data Fragment
+
+This example shows the XML data fragment for adding the
+`wombat-container-config` element to the `domain.xml` file. The
+`wombat-container-config` element contains the subelement
+`wombat-element`. The attributes of `wombat-element` are initialized as
+follows:
+
+* The `foo` attribute is set to `something`.
+* The `bar` attribute is set to `anything`.
+
+[source,xml]
+----
+<wombat-container-config>
+    <wombat-element foo="something" bar="anything"/>
+</wombat-container-config>
+----
+
+[[gjses]][[GSACG00077]][[to-write-a-components-initial-configuration-data-to-the-domain.xml-file]]
+
+==== To Write a Component's Initial Configuration Data to the `domain.xml` File
+
+Add code to write the component's initial configuration data in the
+class that represents your add-on component. If your add-on component is
+a container, add this code to the sniffer class. For more information
+about adding a container, see
+link:adding-container-capabilities.html#ghmon[Adding Container
+Capabilities].
+
+1. Set an optional dependency on an instance of the class that
+represents the XML element that you are adding.
+
+2. Initialize the instance variable to `null`.
++
+If the element is not present in the `domain.xml` file when the add-on
+component is initialized, the instance variable remains `null`.
+
+3. Annotate the declaration of the instance variable with the
+`org.jvnet.hk2.annotations.Inject` annotation.
+
+4. Set the `optional` element of the `@Inject` annotation to `true`.
+
+5. Set a dependency on an instance of the following classes:
+* `org.glassfish.api.admin.config.ConfigParser`
++
+The `ConfigParser` class provides methods to parse an XML fragment and
+to write the fragment to the correct location in the `domain.xml` file.
+* `org.jvnet.hk2.component.Habitat`
+
+6. Invoke the `parseContainerConfig` method of the `ConfigParser`
+object only if the instance is `null`.
+If your add-on component is a container, invoke this method within the
+implementation of the `setup` method the sniffer class.
+When the container is first instantiated, {productName} invokes the `setup` method.
+The test that the instance is `null` is required to ensure that the
+configuration data is added only if the data is not already present in
+the `domain.xml` file.
+In the invocation of the `parseContainerConfig` method, pass the
+following items as parameters:
+* The `Habitat` object on which you set a dependency
+* The URL to the file that contains the XML fragment that represents the configuration data
+
+[[GSACG00059]][[gkabo]]
+Example 6-8 Writing a Component's Initial Configuration Data to the
+`domain.xml` File
+
+This example writes the XML fragment in the file `init.xml` to the
+`domain.xml` file. The fragment is written only if the `domain.xml` file
+does not contain the `wombat-container-config-element`.
+
+The `wombat-container-config` element is represented by the
+`WombatContainerConfig` interface. An optional dependency is set on an
+instance of a class that implements `WombatContainerConfig`.
+
+[source,java]
+----
+...
+import org.glassfish.api.admin.config.ConfigParser;
+import org.glassfish.examples.extension.config.WombatContainerConfig;
+...
+import org.jvnet.hk2.annotations.Inject;
+import org.jvnet.hk2.component.Habitat;
+import com.sun.enterprise.module.Module;
+
+import java.util.logging.Logger;
+...
+import java.io.IOException;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Array;
+import java.net.URL;
+...
+    @Inject(optional=true)
+    WombatContainerConfig config=null;
+...
+    @Inject
+    ConfigParser configParser;
+
+    @Inject
+    Habitat habitat;
+
+    public Module[] setup(String containerHome, Logger logger) throws IOException {
+        if (config==null) {
+            URL url = this.getClass().getClassLoader().getResource("init.xml");
+            if (url!=null) {
+               configParser.parseContainerConfig(habitat, url,
+                   WombatContainerConfig.class);
+            }
+        }
+        return null;
+    }
+...
+----
+
+[[GSACG00060]][[gjski]]
+Example 6-9 `domain.xml` File After Initialization
+
+This example shows the `domain.xml` file after the `setup` method was
+invoked to add the `wombat-container-config` element under the `config`
+element.
+
+[source,xml]
+----
+<domain>
+...
+  <configs>
+    <config name="server-config">
+      <wombat-container-config number-of-instances="5">
+        <wombat-element foo="something" bar="anything" />
+      </wombat-container-config>
+      <http-service>
+...
+</domain>
+----
+
+[[gjrcz]][[GSACG00127]][[creating-a-transaction-to-update-configuration-data]]
+
+=== Creating a Transaction to Update Configuration Data
+
+Creating a transaction to update configuration data enables the data to
+be updated without the need to specify a dotted name in the
+link:reference-manual/set.html#GSRFM00226[`set`] subcommand. You can make the transaction
+available to system administrators in the following ways:
+
+* By adding an link:reference-manual/asadmin.html#GSRFM00263[`asadmin`] subcommand. If you are adding
+an `asadmin` subcommand, include the code for the transaction in the
+body of the subcommand's `execute` method. For more information, see
+link:extending-asadmin.html#ghmrd[Extending the `asadmin` Utility].
+* By extending the Administration Console. For more information, see
+link:extending-the-admin-console.html#ghmrb[Extending the Administration
+Console].
+
+[[gkakw]][[GSACG00078]][[to-create-a-transaction-to-update-configuration-data]]
+
+==== To Create a Transaction to Update Configuration Data
+
+Any transaction that you create to modify configuration data must use a
+configuration change transaction to ensure that the change is atomic,
+consistent, isolated, and durable (ACID).
+
+.  [[gkakq]]
+Set a dependency on the configuration object to update.
+
+.  [[gkalq]]
+Define a method to invoke to perform the transaction.
+
+.  Use the generic `SimpleConfigCode` interface to define the method
+that is to be invoked on a single configuration object, namely:
+`SingleConfigCode<T extends ConfigBeanProxy>()`.
+
+.  In the body of this method, implement the `run` method of the
+`SingleConfigCode<T extends ConfigBeanProxy>` interface.
+
+.  In the body of the `run` method, invoke the setter methods that are
+defined for the attributes that you are setting.
++
+These setter methods are defined in the interface that represents the
+element whose elements you are setting.
+
+.  Invoke the static method
+`org.jvnet.hk2.config.ConfigSupport.ConfigSupport.apply`.
+In the invocation, pass the following information as parameters to the method:
+* The code of the method that you defined in Step  link:#gkalq[2].
+* The configuration object to update, on which you set the dependency in Step link:#gkakq[1].
+
+[[sthref9]]
+
+Example 6-10 Creating a Transaction to Update Configuration Data
+
+This example shows code in the `execute` method of an `asadmin`
+subcommand for updating the `number-of-instances` element of
+`wombat-container-config` element.
+
+[source,java]
+----
+...
+import org.glassfish.api.Param;
+...
+import org.jvnet.hk2.annotations.Inject;
+import org.jvnet.hk2.config.Transactions;
+import org.jvnet.hk2.config.ConfigSupport;
+import org.jvnet.hk2.config.SingleConfigCode;
+import org.jvnet.hk2.config.TransactionFailure;
+...
+    @Param
+    String instances;
+
+    @Inject
+    WombatContainerConfig config;
+
+    public void execute(AdminCommandContext adminCommandContext) {
+        try {
+            ConfigSupport.apply(new SingleConfigCode<WombatContainerConfig>() {
+                public Object run(WombatContainerConfig wombatContainerConfig)
+                        throws PropertyVetoException, TransactionFailure {
+                    wombatContainerConfig.setNumberOfInstances(instances);
+                    return null;
+                }
+            }, config);
+        } catch(TransactionFailure e) {
+        }
+    }
+...
+----
+
+[[gjmkt]][[GSACG00128]][[dotted-names-and-rest-urls-of-configuration-attributes]]
+
+=== Dotted Names and REST URLs of Configuration Attributes
+
+The {productName} administrative subcommands link:reference-manual/get.html#GSRFM00139[`get`],
+link:reference-manual/list.html#GSRFM00145[`list`], and olink:GSRFM00226[`set`] locate a
+configuration attribute through the dotted name of the attribute. The
+dotted name of an attribute of a configuration element is as follows:
+
+[source]
+----
+configs.config.server-config.element-name[.subelement-name...].attribute-name
+----
+
+element-name::
+  The name of an element that contains a subelement or the attribute.
+subelement-name::
+  The name of a subelement, if any.
+attribute-name::
+  The name of the attribute.
++
+For example, the dotted name of the `foo` attribute of the
+`wombat-element` element is as follows:
++
+[source]
+----
+configs.config.server-config.wombat-container-config.wombat-element.foo
+----
++
+The formats of the URL to a REST resource that represent an attribute of
+a configuration element is as follows:
++
+[source]
+----
+http://host:port/management/domain/path
+----
+host::
+  The host where the DAS is running.
+port::
+  The HTTP port or HTTPS port for administration.
+path::
+  The path to the attribute. The path is the dotted name of the
+  attribute in which each dot (`.`) is replaced with a slash (`/`).
+
+For example, the URL to the REST resource for the `foo` attribute of the
+`wombat-element` element is as follows:
+
+[source]
+----
+http://localhost:4848/management/domain/configs/config/server-config/wombat-container-config/wombat-element/foo
+----
+
+In this example, the DAS is running on the local host and the HTTP port
+for administration is 4848.
+
+[[gkaal]][[GSACG00131]][[examples-of-adding-configuration-data-for-a-component]]
+
+=== Examples of Adding Configuration Data for a Component
+
+This example shows the interfaces that define the configuration data for
+the Greeter Container component. The data is comprised of the following
+elements:
+
+* A parent element, which is shown in link:#gkamy[Example 6-11]
+* A subelement that is contained by the parent element, which is shown
+in link:#gkamb[Example 6-12]
+
+This example also shows an XML data fragment for initializing an
+element. See link:#gkamk[Example 6-13].
+
+Code for the Greeter Container component is shown in
+link:adding-container-capabilities.html#gkane[Example of Adding Container
+Capabilities].
+
+Code for an `asadmin` subcommand that updates the configuration data in
+this example is shown in link:extending-asadmin.html#gkbdf[Example 4-7].
+
+[[GSACG00061]][[gkamy]]
+Example 6-11 Parent Element Definition
+
+This example shows the definition of the `greeter-container-config` element.
+The attributes of the `greeter-container-config` element are as follows:
+
+* `number-of-instances`, which must be in the range 1-10.
+* `language`, which must contain only non-whitespace characters.
+* `style`, which must contain only non-whitespace characters.
+
+The `greeter-element` element is identified as a subelement of the
+`greeter-container-config` element. The definition of the
+`greeter-element` element is shown in link:#gkamb[Example 6-12].
+
+[source,java]
+----
+package org.glassfish.examples.extension.greeter.config;
+
+import org.jvnet.hk2.config.Configured;
+import org.jvnet.hk2.config.Attribute;
+import org.jvnet.hk2.config.Element;
+import org.glassfish.api.admin.config.Container;
+
+import jakarta.validation.constraints.Pattern;
+import jakarta.validation.constraints.Min;
+import jakarta.validation.constraints.Max;
+
+import java.beans.PropertyVetoException;
+
+@Configured
+public interface GreeterContainerConfig extends Container {
+
+    @Attribute
+    @Min(value=1)
+    @Max (value=10)
+    public String getNumberOfInstances();
+    public void setNumberOfInstances(String instances) throws PropertyVetoException;
+
+    @Attribute
+    @Pattern(regexp = "^[\\S]*$")
+    public String getLanguage();
+    public void setLanguage(String language) throws PropertyVetoException;
+
+    @Attribute
+    @Pattern(regexp = "^[\\S]*$")
+    public String getStyle();
+    public void setStyle(String style) throws PropertyVetoException;
+
+    @Element
+    public GreeterElement getElement();
+    public void setElement(GreeterElement element) throws PropertyVetoException;
+
+
+}
+----
+
+[[GSACG00062]][[gkamb]]
+Example 6-12 Subelement Definition
+
+This example shows the definition of the `greeter-element` element,
+which is identified as a subelement of the `greeter-container-config`
+element in link:#gkamy[Example 6-11]. The only attribute of the
+`greeter-element` element is `greeter-port`, which must be in the range 1030-1050.
+
+[source,java]
+----
+package org.glassfish.examples.extension.greeter.config;
+
+import org.jvnet.hk2.config.ConfigBeanProxy;
+import org.jvnet.hk2.config.Configured;
+import org.jvnet.hk2.config.Attribute;
+
+import jakarta.validation.constraints.Min;
+import jakarta.validation.constraints.Max;
+
+import java.beans.PropertyVetoException;
+
+@Configured
+public interface GreeterElement extends ConfigBeanProxy {
+
+    @Attribute
+    @Min(value=1030)
+    @Max (value=1050)
+    public String getGreeterPort();
+    public void setGreeterPort(String greeterport) throws PropertyVetoException;
+
+}
+----
+
+[[GSACG00063]][[gkamk]]
+Example 6-13 XML Data Fragment for Initializing the `greeter-container-config` Element
+
+This example shows the XML data fragment for adding the
+`greeter-container-config` element to the `domain.xml` file.
+The `greeter-container-config` element contains the subelement `greeter-element`.
+
+The attributes of `greeter-container-config` are initialized as follows:
+
+* The `number-of-instances` attribute is set to `5`.
+* The `language` attribute is set to `norsk`.
+* The `style` element is set to `formal`.
+
+The `greeter-port` attribute of the `greeter-element` element is set to `1040`.
+
+[source,xml]
+----
+<greeter-container-config number-of-instances="5" language="norsk" style="formal">
+    <greeter-element greeter-port="1040"/>
+</greeter-container-config>
+----
+
+The definition of the `greeter-container-config` element is shown in
+link:#gkamy[Example 6-11]. The definition of the `greeter-element`
+element is shown in link:#gkamb[Example 6-12].
diff --git a/docs/add-on-component-development-guide/src/main/asciidoc/adding-container-capabilities.adoc b/docs/add-on-component-development-guide/src/main/asciidoc/adding-container-capabilities.adoc
new file mode 100644
index 0000000..3dfcff2
--- /dev/null
+++ b/docs/add-on-component-development-guide/src/main/asciidoc/adding-container-capabilities.adoc
@@ -0,0 +1,822 @@
+type=page
+status=published
+title=Adding Container Capabilities
+next=session-persistence-modules.html
+prev=adding-configuration-data.html
+~~~~~~
+
+= Adding Container Capabilities
+
+[[GSACG00007]][[ghmon]]
+
+
+[[adding-container-capabilities]]
+== Adding Container Capabilities
+
+Applications run on {productName} in containers. {productName}
+enables you to create containers that extend or replace the existing
+containers of {productName}. Adding container capabilities enables
+you to run new types of applications and to deploy new archive types in
+{productName}.
+
+The following topics are addressed here:
+
+* link:#ghpjl[Creating a `Container` Implementation]
+* link:#ghozu[Adding an Archive Type]
+* link:#ghphp[Creating Connector Modules]
+* link:#gkane[Example of Adding Container Capabilities]
+
+[[ghpjl]][[GSACG00132]][[creating-a-container-implementation]]
+
+=== Creating a `Container` Implementation
+
+To implement a container that extends or replaces a service in {productName}, you must create a Java programming language class that includes
+the following characteristics:
+
+* It is annotated with the `org.jvnet.hk2.annotations.Service`
+annotation.
+* It implements the `org.glassfish.api.container.Container` interface.
+
+You should also run the HK2 Inhabitants Generator utility on your class
+files, which adds classes marked with the `@Service` annotation to the
+`META-INF/hk2-locator/default` file in your JAR file. For more
+information about the HK2 Inhabitants Generator, see the
+https://hk2.java.net/inhabitant-generator.html[HK2 Inhabitants Generator
+page].
+
+[[ghogv]][[GSACG00234]][[marking-the-class-with-the-service-annotation]]
+
+==== Marking the Class With the `@Service` Annotation
+
+Add a `com.jvnet.hk2.annotations.Service` annotation at the class
+definition level to identify your class as a service implementation.
+
+[source,java]
+----
+@Service
+public class MyContainer implements Container {
+...
+}
+----
+
+To avoid potential name collisions with other containers, use the fully
+qualified class name of your container class in the `@Service`
+annotation's `name` element:
+
+[source,java]
+----
+package com.example.containers;
+...
+
+@Service @jakarta.inject.Named("com.example.containers.MyContainer")
+public class MyContainer implements Container {
+...
+}
+----
+
+[[ghohg]][[GSACG00235]][[implementing-the-container-interface]]
+
+==== Implementing the `Container` Interface
+
+The `org.glassfish.api.container.Container` interface is the contract
+that defines a container implementation. Classes that implement
+`Container` can extend or replace the functionality in {productName}
+by allowing applications to be deployed and run within the {productName} runtime.
+
+The `Container` interface consists of two methods, `getDeployer` and
+`getName`. The `getDeployer` method returns an implementation class of
+the `org.glassfish.api.deployment.Deployer` interface capable of
+managing applications that run within this container. The `getName`
+method returns a human-readable name for the container, and is typically
+used to display messages belonging to the container.
+
+The `Deployer` interface defines the contract for managing a particular
+application that runs in the container. It consists of the following
+methods:
+
+`getMetaData`::
+  Retrieves the metadata used by the `Deployer` instance, and returns an
+  `org.glassfish.api.deployment.MetaData` object.
+`loadMetaData`::
+  Loads the metadata associated with an application.
+`prepare`::
+  Prepares the application to run in {productName}.
+`load`::
+  Loads a previously prepared application to the container.
+`unload`::
+  Unloads or stops a previously loaded application.
+`clean`::
+  Removes any artifacts generated by an application during the `prepare`
+  phase.
+
+The `DeploymentContext` is the usual context object passed around
+deployer instances during deployment.
+
+[[GSACG00064]][[ghojg]]
+Example 7-1 Example Implementation of `Container`
+
+This example shows a Java programming language class that implements the
+`Container` interface and is capable of extending the functionality of
+{productName}.
+
+[source,java]
+----
+package com.example.containers;
+
+@Service(name="com.example.containers.MyContainer")
+public class MyContainer implements Container {
+    public String getName() {
+        return "MyContainer";
+    }
+
+    public Class<? extends org.glassfish.api.deployment.Deployer> getDeployer() {
+        return MyDeployer.class;
+    }
+}
+----
+
+[[GSACG00065]][[ghoiv]]
+Example 7-2 Example Implementation of `Deployer`
+
+[source,java]
+----
+package com.example.containers;
+
+@Service
+public class MyDeployer {
+
+    public MetaData getMetaData() {
+        return new MetaData(...);
+    }
+
+    public <V> v loadMetaData(Class<V> type, DeploymentContext dc) {
+        ...
+    }
+
+    public boolean prepare(DeploymentContext dc) {
+        // performs any actions needed to allow the application to run,
+        // such as generating artifacts
+        ...
+    }
+
+    public MyApplication load(MyContainer container, DeploymentContext dc) {
+        // creates a new instance of an application
+        MyApplication myApp = new MyApplication (...);
+        ...
+        // returns the application instance
+        return myApp;
+    }
+
+    public void unload(MyApplication myApp, DeploymentContext dc) {
+        // stops and removes the application
+        ...
+    }
+
+    public void clean (DeploymentContext dc) {
+        // cleans up any artifacts generated during prepare()
+        ...
+    }
+}
+----
+
+[[ghozu]][[GSACG00133]][[adding-an-archive-type]]
+
+=== Adding an Archive Type
+
+An archive type is an abstraction of the archive file format. An archive
+type can be implemented as a plain JAR file, as a directory layout, or a
+custom type. By default, {productName} recognizes JAR based and
+directory based archive types. A new container might require a new
+archive type.
+
+There are two sub-interfaces of the
+`org.glassfish.api.deployment.archive.Archive` interface,
+`org.glassfish.api.deployment.archive.ReadableArchive` and
+`org.glassfish.api.deployment.archive.WritableArchive`. Typically
+developers of new archive types will provide separate implementations of
+`ReadableArchive` and `WritableArchive`, or a single implementation that
+implements both `ReadableArchive` and `WritableArchive`.
+
+Implementations of the `ReadableArchive` interface provide read access
+to an archive type. `ReadableArchive` defines the following methods:
+
+`getEntry(String name)`::
+  Returns a `java.io.InputStream` for the specified entry name, or null
+  if the entry doesn't exist.
+`exists(String name)`::
+  Returns a `boolean` value indicating whether the specified entry name
+  exists.
+`getEntrySize(String name)`::
+  Returns the size of the specified entry as a `long` value.
+`open(URI uri)`::
+  Returns an archive for the given `java.net.URI`.
+`getSubArchive(String name)`::
+  Returns an instance of `ReadableArchive` for the specified sub-archive
+  contained within the parent archive, or null if no such archive
+  exists.
+`exists()`::
+  Returns a `boolean` value indicating whether this archive exists.
+`delete()`::
+  Deletes the archive, and returns a `boolean` value indicating whether
+  the archive has been successfully deleted.
+`renameTo(String name)`::
+  Renames the archive to the specified name, and returns a `boolean`
+  value indicating whether the archive has been successfully renamed.
+
+Implementations of the `WritableArchive` interface provide write access
+to the archive type. `WritableArchive` defines the following methods:
+
+`create(URI uri)`::
+  Creates a new archive with the given path, specified as a
+  `java.net.URI`.
+`closeEntry(WritableArchive subArchive)`::
+  Closes the specified sub-archive contained within the parent archive.
+`closeEntry()`::
+  Closes the current entry.
+`createSubArchive(String name)`::
+  Creates a new sub-archive in the parent archive with the specified
+  name, and returns it as a `WritableArchive` instance.
+`putNextEntry(String name)`::
+  Creates a new entry in the archive with the specified name, and
+  returns it as a `java.io.OutputStream`.
+
+[[ghoyp]][[GSACG00236]][[implementing-the-archivehandler-interface]]
+
+==== Implementing the `ArchiveHandler` Interface
+
+An archive handler is responsible for handling the particular layout of
+an archive. Jakarta EE defines a set of archives (WAR, JAR, and RAR, for
+example), and each of these archives has an `ArchiveHandler` instance
+associated with the archive type.
+
+Each layout should have one handler associated with it. There is no
+extension point support at this level; the archive handler's
+responsibility is to give access to the classes and resources packaged
+in the archive, and it should not contain any container-specific code.
+The `java.lang.ClassLoader` returned by the handler is used by all the
+containers in which the application will be deployed.
+
+`ArchiveHandler` defines the following methods:
+
+`getArchiveType()`::
+  Returns the name of the archive type as a `String`. Typically, this is
+  the archive extension, such as `jar` or `war`.
+`getDefaultApplicationName(ReadableArchive archive)`::
+  Returns the default name of the specified archive as a `String`.
+  Typically this default name is the name part of the `URI` location of
+  the archive.
+`handles(ReadableArchive archive)`::
+  Returns a `boolean` value indicating whether this implementation of
+  `ArchiveHandler` can work with the specified archive.
+`getClassLoader(DeploymentContext dc)`::
+  Returns a `java.lang.ClassLoader` capable of loading all classes from
+  the archive passed in by the `DeploymentContext` instance. Typically
+  the `ClassLoader` will load classes in the scratch directory area,
+  returned by `DeploymentContext.getScratchDir()`, as stubs and other
+  artifacts are generated in the scratch directory.
+`expand(ReadableArchive source, WritableArchive target)`::
+  Prepares the `ReadableArchive`++'s++ source archive for loading into the
+  container in a format the container accepts. Such preparation could be
+  to expand a compressed archive, or possibly nothing at all if the
+  source archive format is already in a state that the container can
+  handle. This method returns the archive as an instance of
+  `WritableArchive`.
+
+[[ghphp]][[GSACG00134]][[creating-connector-modules]]
+
+=== Creating Connector Modules
+
+Connector modules are small add-on modules that consist of application
+"sniffers" that associate application types with containers that can run
+the application type. {productName} connector modules are separate
+from the associated add-on module that delivers the container
+implementation to allow {productName} to dynamically install and
+configure containers on demand.
+
+When a deployment request is received by the {productName} runtime:
+
+1. The current `Sniffer` implementations are used to determine the application type.
+2. Once an application type is found, the runtime looks for a running
+container associated with that application type. If no running container
+is found, the runtime attempts to install and configure the container
+associated with the application type as defined by the `Sniffer` implementation.
+3. The `Deployer` interface is used to prepare and load the implementation.
+
+[[ghozd]][[GSACG00237]][[associating-file-types-with-containers-by-using-the-sniffer-interface]]
+
+==== Associating File Types With Containers by Using the `Sniffer` Interface
+
+Containers do not necessarily need to be installed on the local machine
+for {productName} to recognize the container's application type.
+{productName} uses a "sniffer" concept to study the artifacts in a
+deployment request and to choose the associated container that handles
+the application type that the user is trying to deploy. To create this
+association, create a Java programming language class that implements
+the `org.glassfish.api.container.Sniffer` interface. This implementation
+can be as simple as looking for a specific file in the application's
+archive (such as the presence of `WEB-INF/web.xml`), or as complicated
+as running an annotation scanner to determine an XML-less archive (such
+as enterprise bean annotations in a JAR file). A `Sniffer`
+implementation must be as small as possible and must not load any of the
+container's runtime classes.
+
+A simple version of a `Sniffer` implementation uses the `handles` method
+to check the existence of a file in the archive that denotes the
+application type (as `WEB-INF/web.xml` denotes a web application).
+Once a `Sniffer` implementation has detected that it can handle the
+deployment request artifact, {productName} calls the `setUp` method.
+The `setUp` method is responsible for setting up the container, which
+can involve one or more of the following actions:
+
+* Downloading the container's runtime (the first time that a container is used)
+* Installing the container's runtime (the first time that a container is used)
+* Setting up one or more repositories to access the runtime's classes
+(these are implementations of the HK2 `com.sun.enterprise.module.Repository` interface,
+such as the `com.sun.enterprise.module.impl.DirectoryBasedRepository` class)
+
+The `setUp` method returns an array of the
+`com.sun.enterprise.module.Module` objects required by the container.
+
+The `Sniffer` interface defines the following methods:
+
+`handles(ReadableArchive source, ClassLoader loader)`::
+  Returns a `boolean` value indicating whether this `Sniffer`
+  implementation can handle the specified archive.
+`getURLPatterns()`::
+  Returns a `String` array containing all URL patterns to apply against
+  the request URL. If a pattern matches, the service method of the
+  associated container is invoked.
+`getAnnotationTypes()`::
+  Returns a list of annotation types recognized by this `Sniffer`
+  implementation. If an application archive contains one of the returned
+  annotation types, the deployment process invokes the container's
+  deployers as if the `handles` method had returned true.
+`getModuleType()`::
+  Returns the module type associated with this `Sniffer` implementation
+  as a `String`.
+`setup(String containerHome, Logger logger)`::
+  Sets up the container libraries so that any dependent bundles from the
+  connector JAR file will be made available to the HK2 runtime. The
+  `setup` method returns an array of `com.sun.enterprise.module.Module`
+  classes, which are definitions of container implementations. {productName} can then load these modules so that it can create an instance
+  of the container's `Deployer` or `Container` implementations when it
+  needs to. The module is locked as long as at least one module is
+  loaded in the associated container.
+`teardown()`::
+  Removes a container and all associated modules in the HK2 modules
+  subsystem.
+`getContainerNames()`::
+  Returns a `String` array containing the `Container` implementations
+  that this `Sniffer` implementation enables.
+`isUserVisible()`::
+  Returns a `boolean` value indicating whether this `Sniffer`
+  implementation should be visible to end-users.
+`getDeploymentConfigurations(final ReadableArchive source)`::
+  Returns a `Map<String, String>` of deployment configuration names to
+  configurations from this `Sniffer` implementation for the specified
+  application (the archive source). The names are created by {productName}; the configurations are the names of the files that contain
+  configuration information (for example, `WEB-INF/web.xml` and possibly
+  `WEB-INF/sun-web.xml` for a web application). If the
+  `getDeploymentConfigurations` method encounters errors while searching
+  or reading the specified archive source, it throws a
+  `java.io.IOException`.
+
+[[ghpbx]][[GSACG00172]][[making-sniffer-implementations-available-to-the-glassfish-server]]
+
+===== Making `Sniffer` Implementations Available to the {productName}
+
+Package `Sniffer` implementation code into modules and install the
+modules in the as-install``/modules`` directory. {productName} will
+automatically discover these modules. If an administrator installs
+connector modules that contain`Sniffer` implementations while {productName} is running, {productName} will pick them up at the next
+deployment request.
+
+[[gkane]][[GSACG00135]][[example-of-adding-container-capabilities]]
+
+=== Example of Adding Container Capabilities
+
+This example shows a custom container and a web client of the container.
+The example is comprised of the following code:
+
+* Code for the container, which is shown in link:#gkbah[Container
+Component Code]
+* Code for a web client of the container, which is shown in
+link:#gkbcq[Web Client Code]
+
+Code that defines the configuration data for the container component is
+shown in link:adding-configuration-data.html#gkaal[Examples of Adding
+Configuration Data for a Component].
+
+Code for an `asadmin` subcommand that updates the configuration data in
+this example is shown in link:extending-asadmin.html#gkbdf[Example 4-7].
+
+[[gkbah]][[GSACG00238]][[container-component-code]]
+
+==== Container Component Code
+
+The container component code is comprised of the classes and interfaces
+that are listed in the following table. The table also provides a
+cross-reference to the listing of each class or interface.
+
+[width="100%",cols="<50%,<50%",options="header",]
+|===
+|Class or Interface |Listing
+|`Greeter` |link:#gkamr[Example 7-3]
+|`GreeterContainer` |link:#gkand[Example 7-4]
+|`GreeterContainer` |link:#gkamm[Example 7-5]
+|`GreeterDeployer` |link:#gkalo[Example 7-6]
+|`GreeterSniffer` |link:#gkaks[Example 7-7]
+|===
+
+[[GSACG00066]][[gkamr]]
+Example 7-3 Annotation to Denote a Container's Component
+
+This example shows the code for defining a component of the `Greeter`
+container.
+
+[source,java]
+----
+package org.glassfish.examples.extension.greeter;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Simple annotation to denote Greeter's component
+ */
+@Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
+public @interface Greeter {
+
+    /**
+     * Name to uniquely identify different greeters
+     *
+     * @return a good greeter name
+     */
+    public String name();
+}
+----
+
+[[GSACG00067]][[gkand]]
+Example 7-4 Application Container Class
+
+This example shows the Java language class `GreeterAppContainer`, which
+implements the `ApplicationContainer` interface.
+
+[source,java]
+----
+package org.glassfish.examples.extension.greeter;
+
+import org.glassfish.api.deployment.ApplicationContainer;
+import org.glassfish.api.deployment.ApplicationContext;
+import org.glassfish.api.deployment.archive.ReadableArchive;
+
+import java.util.List;
+import java.util.ArrayList;
+
+public class GreeterAppContainer implements ApplicationContainer {
+
+    final GreeterContainer ctr;
+    final List<Class> componentClasses = new ArrayList<Class>();
+
+    public GreeterAppContainer(GreeterContainer ctr) {
+        this.ctr = ctr;
+    }
+
+    void addComponent(Class componentClass) {
+        componentClasses.add(componentClass);
+    }
+
+    public Object getDescriptor() {
+        return null;
+    }
+
+    public boolean start(ApplicationContext startupContext) throws Exception {
+        for (Class componentClass : componentClasses) {
+            try {
+                Object component = componentClass.newInstance();
+                Greeter greeter = (Greeter)
+                     componentClass.getAnnotation(Greeter.class);
+                ctr.habitat.addComponent(greeter.name(), component);
+            } catch(Exception e) {
+                throw new RuntimeException(e);
+            }
+        }
+        return true;
+    }
+
+    public boolean stop(ApplicationContext stopContext) {
+        for (Class componentClass : componentClasses) {
+            ctr.habitat.removeAllByType(componentClass);
+        }
+        return true;
+    }
+
+    public boolean suspend() {
+        return false;
+    }
+
+    public boolean resume() throws Exception {
+        return false;
+    }
+
+    public ClassLoader getClassLoader() {
+        return null;
+    }
+}
+----
+
+[[GSACG00068]][[gkamm]]
+Example 7-5 Container Class
+
+This example shows the Java language class `GreeterContainer`, which
+implements the `Container` interface.
+
+[source,java]
+----
+package org.glassfish.examples.extension.greeter;
+
+import org.glassfish.api.container.Container;
+import org.glassfish.api.deployment.Deployer;
+import org.jvnet.hk2.annotations.Service;
+import org.jvnet.hk2.annotations.Inject;
+import org.jvnet.hk2.component.Habitat;
+
+@Service(name="org.glassfish.examples.extension.GreeterContainer")
+public class GreeterContainer implements Container {
+
+    @Inject
+    Habitat habitat;
+
+    public Class<? extends Deployer> getDeployer() {
+        return GreeterDeployer.class;
+    }
+
+    public String getName() {
+        return "greeter";
+    }
+}
+----
+
+[[GSACG00069]][[gkalo]]
+Example 7-6 Deployer Class
+
+This example shows the Java language class `GreeterDeployer`, which
+implements the `Deployer` interface.
+
+[source,java]
+----
+package org.glassfish.examples.extension.greeter;
+
+import org.glassfish.api.deployment.Deployer;
+import org.glassfish.api.deployment.MetaData;
+import org.glassfish.api.deployment.DeploymentContext;
+import org.glassfish.api.deployment.ApplicationContainer;
+import org.glassfish.api.deployment.archive.ReadableArchive;
+import org.glassfish.api.container.Container;
+import org.jvnet.hk2.annotations.Service;
+
+import java.util.Enumeration;
+
+@Service
+public class GreeterDeployer
+    implements Deployer<GreeterContainer, GreeterAppContainer> {
+
+    public MetaData getMetaData() {
+        return null;
+    }
+
+    public <V> V loadMetaData(Class<V> type, DeploymentContext context) {
+        return null;
+    }
+
+    public boolean prepare(DeploymentContext context) {
+        return false;
+    }
+
+    public GreeterAppContainer load(
+        GreeterContainer container, DeploymentContext context) {
+
+        GreeterAppContainer appCtr = new GreeterAppContainer(container);
+        ClassLoader cl = context.getClassLoader();
+
+        ReadableArchive ra = context.getOriginalSource();
+        Enumeration<String> entries = ra.entries();
+        while (entries.hasMoreElements()) {
+            String entry = entries.nextElement();
+            if (entry.endsWith(".class")) {
+                String className = entryToClass(entry);
+                try {
+                    Class componentClass = cl.loadClass(className);
+                    // ensure it is one of our component
+                    if (componentClass.isAnnotationPresent(Greeter.class)) {
+                        appCtr.addComponent(componentClass);
+                    }
+                } catch(Exception e) {
+                    throw new RuntimeException(e);
+                }
+
+            }
+        }
+        return appCtr;
+    }
+
+    public void unload(GreeterAppContainer appContainer, DeploymentContext context) {
+
+    }
+
+    public void clean(DeploymentContext context) {
+
+    }
+
+    private String entryToClass(String entry) {
+        String str = entry.substring("WEB-INF/classes/".length(), entry.length()-6);
+        return str.replaceAll("/", ".");
+    }
+}
+----
+
+[[GSACG00070]][[gkaks]]
+Example 7-7 Sniffer Class
+
+This example shows the Java language class `GreeterSniffer`, which
+implements the `Sniffer` interface.
+
+[source,java]
+----
+package org.glassfish.examples.extension.greeter;
+
+import org.glassfish.api.container.Sniffer;
+import org.glassfish.api.deployment.archive.ReadableArchive;
+import org.glassfish.api.admin.config.ConfigParser;
+import org.glassfish.examples.extension.greeter.config.GreeterContainerConfig;
+import org.jvnet.hk2.annotations.Service;
+import org.jvnet.hk2.annotations.Inject;
+import org.jvnet.hk2.component.Habitat;
+import com.sun.enterprise.module.Module;
+
+import java.util.logging.Logger;
+import java.util.Map;
+import java.io.IOException;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Array;
+import java.net.URL;
+
+/**
+ * @author Jerome Dochez
+ */
+@Service(name="greeter")
+public class GreeterSniffer implements Sniffer {
+
+    @Inject(optional=true)
+    GreeterContainerConfig config=null;
+
+    @Inject
+    ConfigParser configParser;
+
+    @Inject
+    Habitat habitat;
+
+    public boolean handles(ReadableArchive source, ClassLoader loader) {
+        return false;
+    }
+
+    public String[] getURLPatterns() {
+        return new String[0];
+    }
+
+    public Class<? extends Annotation>[] getAnnotationTypes() {
+        Class<? extends Annotation>[] a = (Class<? extends Annotation>[]) Array.newInstance(Class.class, 1);
+        a[0] = Greeter.class;
+        return a;
+    }
+
+    public String getModuleType() {
+        return "greeter";
+    }
+
+    public Module[] setup(String containerHome, Logger logger) throws IOException {
+        if (config==null) {
+            URL url = this.getClass().getClassLoader().getResource("init.xml");
+            if (url!=null) {
+                configParser.parseContainerConfig(
+                    habitat, url, GreeterContainerConfig.class);
+            }
+        }
+        return null;
+    }
+
+    public void tearDown() {
+
+    }
+
+    public String[] getContainersNames() {
+        String[] c = { GreeterContainer.class.getName() };
+        return c;
+    }
+
+    public boolean isUserVisible() {
+        return true;
+    }
+
+    public Map<String, String> getDeploymentConfigurations
+        (ReadableArchive source) throws IOException {
+        return null;
+    }
+
+    public String[] getIncompatibleSnifferTypes() {
+        return new String[0];
+    }
+}
+----
+
+[[gkbcq]][[GSACG00239]][[web-client-code]]
+
+==== Web Client Code
+
+The web client code is comprised of the classes and resources that are
+listed in the following table. The table also provides a cross-reference
+to the listing of each class or resource.
+
+[width="100%",cols="<50%,<50%",options="header",]
+|===
+|Class or Resource |Listing
+|`HelloWorld` |link:#gkaki[Example 7-8]
++
+|`SimpleGreeter` |link:#gkalf[Example 7-9]
++
+|Deployment descriptor |link:#gkaly[Example 7-10]
++
+|===
+
+
+[[GSACG00071]][[gkaki]]
+Example 7-8 Container Client Class
+
+[source,java]
+----
+import components.SimpleGreeter;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import jakarta.servlet.annotation.WebServlet;
+import jakarta.servlet.*;
+import jakarta.servlet.http.*;
+import jakarta.annotation.Resource;
+
+
+@WebServlet(urlPatterns={"/hello"})
+public class HelloWorld extends HttpServlet {
+
+    @Resource(name="Simple")
+    SimpleGreeter greeter;
+
+    public void doGet(HttpServletRequest req, HttpServletResponse res)
+            throws IOException, ServletException {
+
+
+        PrintWriter pw = res.getWriter();
+        try {
+            pw.println("Injected service is " + greeter);
+            if (greeter!=null) {
+                pw.println("SimpleService says " + greeter.saySomething());
+                pw.println("<br>");
+            }
+                } catch(Exception e) {
+                e.printStackTrace();
+        }
+    }
+}
+----
+
+[[GSACG00072]][[gkalf]]
+Example 7-9 Component for Container Client
+
+[source,java]
+----
+package components;
+
+import org.glassfish.examples.extension.greeter.Greeter;
+
+@Greeter(name="simple")
+public class SimpleGreeter {
+
+    public String saySomething() {
+        return "Bonjour";
+    }
+}
+----
+
+[[GSACG00073]][[gkaly]]
+Example 7-10 Deployment Descriptor for Container Client
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="3.1"
+  xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation=
+    "http://xmlns.jcp.org/xml/ns/javaee
+    http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
+</web-app>
+----
diff --git a/docs/add-on-component-development-guide/src/main/asciidoc/adding-monitoring-capabilities.adoc b/docs/add-on-component-development-guide/src/main/asciidoc/adding-monitoring-capabilities.adoc
new file mode 100644
index 0000000..8c30a4d
--- /dev/null
+++ b/docs/add-on-component-development-guide/src/main/asciidoc/adding-monitoring-capabilities.adoc
@@ -0,0 +1,1126 @@
+type=page
+status=published
+title=Adding Monitoring Capabilities
+next=adding-configuration-data.html
+prev=extending-asadmin.html
+~~~~~~
+
+= Adding Monitoring Capabilities
+
+[[GSACG00005]][[ghmos]]
+
+[[adding-monitoring-capabilities]]
+== Adding Monitoring Capabilities
+
+Monitoring is the process of reviewing the statistics of a system to
+improve performance or solve problems. By monitoring the state of
+components and services that are deployed in the {productName},
+system administrators can identify performance bottlenecks, predict
+failures, perform root cause analysis, and ensure that everything is
+functioning as expected. Monitoring data can also be useful in
+performance tuning and capacity planning.
+
+An add-on component typically generates statistics that the {productName} can gather at run time. Adding monitoring capabilities enables an
+add-on component to provide statistics to {productName} in the same
+way as components that are supplied in {productName} distributions.
+As a result, system administrators can use the same administrative
+interfaces to monitor statistics from any installed {productName}
+component, regardless of the origin of the component.
+
+The following topics are addressed here:
+
+* link:#ghopc[Defining Statistics That Are to Be Monitored]
+* link:#ghplw[Updating the Monitorable Object Tree]
+* link:#ghrma[Dotted Names and REST URLs for an Add-On Component's Statistics]
+* link:#ghptj[Example of Adding Monitoring Capabilities]
+
+[[ghopc]][[GSACG00116]][[defining-statistics-that-are-to-be-monitored]]
+
+=== Defining Statistics That Are to Be Monitored
+
+At runtime, your add-on component might perform operations that affect
+the behavior and performance of your system. For example, your component
+might start a thread of control, receive a request from a service, or
+request a connection from a connection pool. Monitoring the statistics
+that are related to these operations helps a system administrator
+maintain the system.
+
+To provide statistics to {productName}, your component must define
+events for the operations that generate these statistics. At runtime,
+your component must send these events when performing the operations for
+which the events are defined. For example, to enable the number of
+received requests to be monitored, a component must send a "request
+received" event each time that the component receives a request.
+
+A statistic can correspond to single event or to multiple events.
+
+* Counter statistics typically correspond to a single event. For
+example, to calculate the number of received requests, only one event is
+required, for example, a "request received" event. Every time that a
+"request received" event is sent, the number of received requests is
+increased by 1.
+* Timer statistics typically correspond to multiple events. For example,
+to calculate the time to process a request, two requests, for example, a
+"request received" event and a "request completed" event.
+
+Defining statistics that are to be monitored involves the following
+tasks:
+
+* link:#gkadk[Defining an Event Provider]
+* link:#ghprg[Sending an Event]
+
+[[gkadk]][[GSACG00220]][[defining-an-event-provider]]
+
+==== Defining an Event Provider
+
+An event provider defines the types of events for the operations that
+generate statistics for an add-on component.
+
+{productName} enables you to define an event provider in the
+following ways:
+
+* By writing a Java Class. Define an event provider this way if you have
+access to the source code of the component for which you are defining an
+event provider.
+* By writing an XML fragment. Define an event provider this way if you
+do not have access to the source code of the component for which you are
+defining and event provider.
+
+[[ghovq]][[GSACG00164]][[defining-an-event-provider-by-writing-a-java-class]]
+
+===== Defining an Event Provider by Writing a Java Class
+
+To define an event provider, write a Java language class that defines
+the types of events for the component. Your class is not required to
+extend any specific class or implement any interfaces.
+
+To identify your class as an event provider, annotate the declaration of
+the class with the
+`org.glassfish.external.probe.provider.annotations.ProbeProvider`
+annotation.
+
+To create a name space for event providers and to uniquely identify an
+event provider to the monitoring infrastructure of {productName}, set
+the elements of the `@ProbeProvider` annotation as follows:
+
+`moduleProviderName`::
+  Your choice of text to identify the application to which the event
+  provider belongs. The value of the `moduleProviderName` element is not
+  required to be unique.
+  For example, for event providers from {productName}, `moduleProviderName` is `glassfish`.
+`moduleName`::
+  Your choice of name for the module for which the event provider is
+  defined. A module provides significant functionality of an
+  application. The value of the `moduleName` element is not required to
+  be unique.
+  In {productName}, examples of module names are `web-container`,
+  `ejb-container`, `transaction`, and `webservices`.
+`probeProviderName`::
+  Your choice of name to identify the event provider. To uniquely
+  identify the event provider, ensure that `probeProviderName` is unique
+  for all event providers in the same module.
+  In {productName}, examples of event-provider names are `jsp`,
+  `servlet`, and `web-module`.
+
+[[ghosi]][[GSACG00011]][[defining-event-types-in-an-event-provider-class]]
+
+Defining Event Types in an Event Provider Class
+
+To define event types in an event provider class, write one method for
+each type of event that is related to the component. The requirements
+for each method are as follows:
+
+* The return value of the callback methods must be void.
+* The method body must be empty. You instantiate the event provider
+class in the class that invokes the method to send the event.
+For more information, see link:#ghprg[Sending an Event].
+* To enable the event to be used as an Oracle Solaris DTrace probe, each
+parameter in the method signature must be a Java language primitive,
+such as `Integer`, `boolean`, or `String`.
+
+Annotate the declaration of each method with the
+`org.glassfish.external.probe.provider.annotations.Probe` annotation.
+
+By default, the type of the event is the method name. If you overload a
+method in your class, you must uniquely identify the event type for each
+form of the method. To uniquely identify the event type, set the `name`
+element of the `@Probe` annotation to the name of the event type.
+
+[NOTE]
+====
+You are not required to uniquely identify the event type for methods that are not overloaded.
+====
+
+
+[[ghoul]][[GSACG00012]][[specifying-event-parameters]]
+
+Specifying Event Parameters
+
+To enable methods in an event listener to select a subset of values,
+annotate each parameter in the method signature with the
+`org.glassfish.external.probe.provider.annotations.ProbeParam`
+annotation. Set the `value` element of the `@ProbeParam` annotation to
+the name of the parameter.
+
+[[ghpmm]][[GSACG00013]][[example-of-defining-an-event-provider-by-writing-a-java-class]]
+
+Example of Defining an Event Provider by Writing a Java Class
+
+[[GSACG00041]][[ghprw]]
+Example 5-1 Defining an Event Provider by Writing a Java Class
+
+This example shows the definition of the `TxManager` class. This class
+defines events for the start and end of transactions that are performed
+by a transaction manager.
+
+The methods in this class are as follows:
+
+`onTxBegin`::
+  This method sends an event to indicate the start of a transaction. The
+  name of the event type that is associated with this method is `begin`.
+  A parameter that is named `txId` is passed to the method.
+`onCompletion`::
+  This method sends an event to indicate the end of a transaction. The
+  name of the event type that is associated with this method is `end`. A
+  parameter that is named `outcome` is passed to the method.
+
+[source,java]
+----
+import org.glassfish.external.probe.provider.annotations.Probe;
+import org.glassfish.external.probe.provider.annotations.ProbeParam;
+import org.glassfish.external.probe.provider.annotations.ProbeProvider;
+@ProbeProvider(moduleProviderName="examplecomponent",
+moduleName="transaction", probeProviderName="manager")
+public class TxManager {
+
+    @Probe("begin")
+    public void onTxBegin(
+        @ProbeParam("{txId}") String txId
+    ){}
+
+    @Probe ("end")
+    public void onCompletion(
+        @ProbeParam("{outcome}") boolean outcome
+    ){}
+ }
+----
+
+[[gkaec]][[GSACG00165]][[defining-an-event-provider-by-writing-an-xml-fragment]]
+
+===== Defining an Event Provider by Writing an XML Fragment
+
+To define an event provider, write an extensible markup language (XML)
+fragment that contains a single `probe-provider` element.
+
+To create a name space for event providers and to uniquely identify an
+event provider to the monitoring infrastructure of {productName}, set
+the attributes of the `probe-provider` element as follows:
+
+`moduleProviderName`::
+  Your choice of text to identify the application to which the event
+  provider belongs. The value of the `moduleProviderName` attribute is
+  not required to be unique.
+  For example, for event providers from {productName}, `moduleProviderName` is `glassfish`.
+`moduleName`::
+  Your choice of name for the module for which the event provider is
+  defined. A module provides significant functionality of an
+  application. The value of the `moduleName` attribute is not required
+  to be unique.
+  In {productName}, examples of module names are `web-container`,
+  `ejb-container`, `transaction`, and `webservices`.
+`probeProviderName`::
+  Your choice of name to identify the event provider. To uniquely
+  identify the event provider, ensure that `probeProviderName` is unique
+  for all event providers in the same module.
+  In {productName}, examples of event—provider names are `jsp`,
+  `servlet`, and `web-module`.
+
+Within the `probe-provider` element, add one `probe` element for each
+event type that you are defining. To identify the event type, set the
+name attribute of the `probe` element to the type.
+
+To define the characteristics of each event type, add the following
+elements within the `probe` element:
+
+`class`::
+  This element contains the fully qualified Java class name of the
+  component that generates the statistics for which you are defining
+  events.
+`method`::
+  This element contains the name of the method that is invoked to
+  generate the statistic.
+`signature`::
+  This element contains the following information about the signature if
+  the method:
++
+[source]
+----
+return-type (paramater-type-list)
+----
+  `return-type`;;
+    The return type of the method.
+  `paramater-type-list`;;
+    A comma-separated list of the types of the parameters in the method
+    signature.
+`probe-param`::
+  The attributes of this element identify the type and the name of a
+  parameter in the method signature. One `probe-param` element is
+  required for each parameter in the method signature. The `probe-param`
+  element does not contain any data.
+  The attributes of the `probe-param` element are as follows:
+  `type`;;
+    Specifies the type of the parameter.
+  `name`;;
+    Specifies the name of the parameter.
+`return-param`::
+  The `type` attribute of this element specifies the return type of the
+  method. The `return-param` element does not contain any data.
+
+[[GSACG00042]][[gkajj]]
+Example 5-2 Defining an Event Provider by Writing an XML Fragment
+
+This example defines an event provider for the `glassfish:web:jsp`
+component. The Java class of this component is
+`com.sun.enterprise.web.jsp.JspProbeEmitterImpl`. The event provider
+defines one event of type `jspLoadedEvent`. The signature of the method
+that is associated with this event is as follows:
+
+[source,java]
+----
+void jspLoaded(String jsp, String hostName)
+----
+[source,xml]
+----
+<probe-provider moduleProviderName="glassfish" moduleName="web" probeProviderName="jsp">
+    <probe name="jspLoadedEvent">
+       <class>com.sun.enterprise.web.jsp.JspProbeEmitterImpl</class>
+       <method>jspLoaded</method>
+       <signature>void (String,String)</signature>
+       <probe-param type="String" name="jsp"/>
+       <probe-param type="String" name="hostName"/>
+       <return-param type="void" />
+    </probe>
+</probe-provider>
+----
+
+[[gkaie]][[GSACG00166]][[packaging-a-components-event-providers]]
+
+===== Packaging a Component's Event Providers
+
+Packaging a component's event providers enables the monitoring
+infrastructure of {productName} to discover the event providers automatically.
+
+To package a component's event providers, add an entry to the
+component's `META-INF/MANIFEST.MF` file that identifies all of the
+component's event providers. The format of the entry depends on how the
+event providers are defined:
+
+* If the event providers are defined as Java classes, the entry is a
+list of the event providers' class names as follows:
++
+[source]
+----
+probe-provider-class-names : class-list
+----
++
+The `class-list` is a comma-separated list of the fully qualified Java
+class names of the component's event providers.
+* If the event providers are defined as XML fragments, the entry is a
+list of the paths to the files that contain the XML fragments as follows:
++
+[source]
+----
+probe-provider-xml-file-names : path-list
+----
++
+The `path-list` is a comma-separated list of the paths to the XML files
+relative to the root of the archive in the JAR file.
+
+[[GSACG00043]][[gkaii]]
+Example 5-3 Manifest Entry for Event Providers That Are Defined as Java Classes
+
+This example shows the entry in the `META-INF/MANIFEST.MF` file of a
+component whose event provider is the
+`org.glassfish.pluggability.monitoring.ModuleProbeProvider` class.
+
+[source]
+----
+probe-provider-class-names : org.glassfish.pluggability.monitoring.ModuleProbeProvider
+----
+
+[[ghprg]][[GSACG00221]][[sending-an-event]]
+
+==== Sending an Event
+
+At runtime, your add-on component might perform an operation that
+generates statistics. To provide statistics about the operation to
+{productName}, your component must send an event of the correct type
+when performing the operation.
+
+To send an event, instantiate your event provider class and invoke the
+method of the event provider class for the type of the event.
+Instantiate the class and invoke the method in the class that represents
+your add-on component. Ensure that the method is invoked when your
+component performs the operation for which the event was defined. One
+way to meet this requirement is to invoke the method for sending the
+event in the body of the method for performing the operation.
+
+[[GSACG00044]][[ghpus]]
+Example 5-4 Sending an Event
+
+This example shows the code for instantiating the `TxManager` class and
+invoking the `onTxBegin` method to send an event of type `begin`. This
+event indicates that a component is about to begin a transaction.
+
+The `TxManager` class is instantiated in the constructor of the
+`TransactionManagerImpl` class. To ensure that the event is sent at the
+correct time, the `onTxBegin` method is invoked in the body of the
+`begin` method, which starts a transaction.
+
+The declaration of the `onTxBegin` method in the event provider
+interface is shown in link:#ghprw[Example 5-1].
+
+[source,java]
+----
+...
+public class TransactionManagerImpl {
+...
+     public TransactionManagerImpl() {
+         TxManager txProvider = new TxManager();
+         ...
+     }
+    ...
+    public void begin() {
+        String txId = createTransactionId();
+        ....
+        txProvider.onTxBegin(txId); //emit
+      }
+...
+}
+----
+
+[[ghplw]][[GSACG00117]][[updating-the-monitorable-object-tree]]
+
+=== Updating the Monitorable Object Tree
+
+A monitorable object is a component, subcomponent, or service that can
+be monitored. {productName} uses a tree structure to track
+monitorable objects.
+
+Because the tree is dynamic, the tree changes as components of the
+{productName} instance are added, modified, or removed. Objects are
+also added to or removed from the tree in response to configuration
+changes. For example, if monitoring for a component is turned off, the
+component's monitorable object is removed from the tree.
+
+To enable system administrators to access statistics for all components
+in the same way, you must provide statistics for an add-on component by
+updating the monitorable object tree. Statistics for the add-on
+component are then available through the {productName} administrative
+commands link:reference-manual/get.html#GSRFM00139[`get`], olink:GSRFM00145[`list`], and
+link:reference-manual/set.html#GSRFM00226[`set`]. These commands locate an object in the tree
+through the object's dotted name.
+
+For more information about the tree structure of monitorable objects,
+see "link:administration-guide/monitoring.html#GSADG00727[How the Monitoring Tree Structure Works]" in
+{productName} Administration Guide.
+
+To make an add-on component a monitorable object, you must add the
+add-on component to the monitorable object tree.
+
+To update the statistics for an add-on component, you must add the
+statistics to the monitorable object tree, and create event listeners to
+gather statistics from events that represent these statistics. At
+runtime, these listeners must update monitorable objects with statistics
+that these events contain. The events are sent by event provider
+classes. For information about how to create event provider classes and
+send events, see link:#ghopc[Defining Statistics That Are to Be
+Monitored].
+
+Updating the monitorable object tree involves the following tasks:
+
+* link:#ghpni[Creating Event Listeners]
+* link:#ghptp[Representing a Component's Statistics in an Event Listener Class]
+* link:#ghpml[Subscribing to Events From Event Provider Classes]
+* link:#ghppo[Registering an Event Listener]
+
+[[ghpni]][[GSACG00222]][[creating-event-listeners]]
+
+==== Creating Event Listeners
+
+An event listener gathers statistics from events that an event provider
+sends. To enable an add-on component to gather statistics from events,
+create listeners to receive events from the event provider. The listener
+can receive events from the add-on component in which the listener is
+created and from other components.
+
+To create an event listener, write a Java class to represent the
+listener. The listener can be any Java object.
+
+An event listener also represents a component's statistics. To enable
+the Application Server Management Extensions (AMX) to expose the
+statistics to client applications, annotate the declaration of the class
+with the `org.glassfish.gmbal.ManagedObject` annotation.
+
+Ensure that the class that you write meets these requirements:
+
+* The return value of all callback methods in the listener must be void.
+* Because the methods of your event provider class may be entered by
+multiple threads, the listener must be thread safe. However,{productName} provides utility classes to perform some common operations such
+as `count`, `avg`, and `sum`.
+* The listener must have the same restrictions as a Jakarta EE application. For example, the listener
+cannot open server sockets, or create threads.
+
+A listener is called in the same thread as the event method. As a
+result, the listener can use thread locals. If the monitored system
+allows access to thread locals, the listener can access thread locals of
+the monitored system.
+
+
+[NOTE]
+====
+A listener that is not registered to listen for events is never called
+by the framework. Therefore, unregistered listeners do not consume any
+computing resources, such as memory or processor cycles.
+====
+
+[[ghptp]][[GSACG00223]][[representing-a-components-statistics-in-an-event-listener-class]]
+
+==== Representing a Component's Statistics in an Event Listener Class
+
+Represent each statistic as the property of a JavaBeans specification
+getter method of your listener class. Methods in the listener class for
+processing events can then access the property through the getter
+method. For more information, see link:#ghpml[Subscribing to Events From
+Event Provider Classes].
+
+To enable AMX to expose the statistic to client applications, annotate
+the declaration of the getter method with the
+`org.glassfish.gmbal.ManagedAttribute` annotation. Set the `id` element
+of the `@ManagedAttribute` annotation to the property name all in
+lowercase.
+
+The data type of the property that represents a statistic must be a
+class that provides methods for computing the statistic from event data.
+
+The `org.glassfish.external.statistics.impl` package provides the
+following classes to gather and compute statistics data:
+
+`AverageRangeStatisticImpl`::
+  Provides standard measurements of the lowest and highest values that
+  an attribute has held and the current value of the attribute.
+`BoundaryStatisticImpl`::
+  Provides standard measurements of the upper and lower limits of the
+  value of an attribute.
+`BoundedRangeStatisticImpl`::
+  Aggregates the attributes of `RangeStatisticImpl` and
+  `BoundaryStatisticImpl` and provides standard measurements of a range
+  that has fixed limits.
+`CountStatisticImpl`::
+  Provides standard count measurements.
+`RangeStatisticImpl`::
+  Provides standard measurements of the lowest and highest values that
+  an attribute has held and the current value of the attribute.
+`StatisticImpl`::
+  Provides performance data.
+`StringStatisticImpl`::
+  Provides a string equivalent of a counter statistic.
+`TimeStatisticImpl`::
+  Provides standard timing measurements.
+
+[[GSACG00045]][[ghpsc]]
+Example 5-5 Representing a Component's Statistics in an Event Listener
+Class
+
+This example shows the code for representing the `txcount` statistic in
+the `TxListener` class.
+
+[source,java]
+----
+...
+import org.glassfish.external.statistics.CountStatistic;
+import org.glassfish.external.statistics.impl.CountStatisticImpl;
+...
+import org.glassfish.gmbal.ManagedAttribute;
+import org.glassfish.gmbal.ManagedObject;
+
+...
+@ManagedObject
+public class TxListener {
+
+    private CountStatisticImpl txCount = new CountStatisticImpl("TxCount",
+        "count", "Number of completed transactions");
+...
+    @ManagedAttribute(id="txcount")
+    public CountStatistic  getTxCount(){
+         return txCount;
+    }
+}
+----
+
+[[ghpml]][[GSACG00224]][[subscribing-to-events-from-event-provider-classes]]
+
+==== Subscribing to Events From Event Provider Classes
+
+To receive events from event provider classes, a listener must subscribe
+to the events. Subscribing to events also specifies the provider and the
+type of events that the listener will receive.
+
+To subscribe to events from event provider classes, write one method in
+your listener class to process each type of event. To specify the
+provider and the type of event, annotate the method with the
+`org.glassfish.external.probe.provider.annotations.ProbeListener`
+annotation. In the `@ProbeListener` annotation, specify the provider and
+the type as follows:
+
+[source]
+----
+"module-providername:module-name:probe-provider-name:event-type"
+----
+
+module-providername::
+  The application to which the event provider belongs. This parameter
+  must be the value of the `moduleProviderName` element or attribute in
+  the definition of the event provider. See link:#ghovq[Defining an
+  Event Provider by Writing a Java Class] and link:#gkaec[Defining an
+  Event Provider by Writing an XML Fragment].
+module-name::
+  The module for which the event provider is defined. This parameter
+  must match be the value of the `moduleName` element or attribute in
+  the definition of the event provider. See link:#ghovq[Defining an
+  Event Provider by Writing a Java Class] and link:#gkaec[Defining an
+  Event Provider by Writing an XML Fragment].
+probe-provider-name::
+  The name of the event provider. This parameter must match be the value
+  of the `probeProviderName` element or attribute in the definition of
+  the event provider. See link:#ghovq[Defining an Event Provider by
+  Writing a Java Class] and link:#gkaec[Defining an Event Provider by
+  Writing an XML Fragment].
+event-type::
+  The type of the event. This type is defined in the event provider
+  class. For more information, see link:#ghosi[Defining Event Types in
+  an Event Provider Class].
+
+Annotate each parameter in the method signature with the `@ProbeParam`
+annotation. Set the `value` element of the `@ProbeParam` annotation to
+the name of the parameter.
+
+In the method body, provide the code to update monitoring statistics in
+response to the event.
+
+[[GSACG00046]][[ghpwu]]
+Example 5-6 Subscribing to Events From Event Provider Classes
+
+This example shows the code for subscribing to events of type `begin`
+from the `tx` component. The provider of the component is `TxManager`.
+The body of the `begin` method contains code to increase the transaction
+count txcount by 1 each time that an event is received.
+
+The definition of the `begin` event type is shown in link:#ghprw[Example 5-1].
+
+The code for sending `begin` events is shown in link:#ghpus[Example 5-4].
+
+The instantiation of the `txCount` object is shown in
+link:#ghpsc[Example 5-5].
+
+[source,java]
+----
+...
+import org.glassfish.external.probe.provider.annotations.ProbeListener;
+import org.glassfish.external.probe.provider.annotations.ProbeParam;
+import org.glassfish.gmbal.ManagedObject;
+...
+@ManagedObject
+public class TxListener {
+    ...;    @ProbeListner("examplecomponent:transaction:manager:begin")
+    public void begin(
+    @ProbeParam("{txId}")
+    String txId) {
+      txCount.increment();
+    }
+  }
+----
+
+[[ghpsp]][[GSACG00167]][[listening-for-changes-to-values-that-are-not-part-of-the-target-method-definition]]
+
+===== Listening for Changes to Values That are Not Part of the Target Method Definition
+
+Event listeners can express their interest in certain predefined values
+that are not part of the target method definition. For example,
+$\{gf.appname}, $\{gf.modulename} etc. are some of the computed params
+that are available to the clients, these values are computed/evaluated
+only on demand and provided by the event infrastructure.
+
+[[ghpsw]][[GSACG00168]][[getting-information-about-a-event-provider]]
+
+===== Getting Information About a Event Provider
+
+`ProbeProviderInfo` contains details about individual event types in an
+event provider class.
+
+[source,java]
+----
+public interface ProbeProviderInfo {
+
+      public String getModuleName();
+
+      public String getProviderName();
+
+      public String getApplicationName();
+
+      public String getProbeName();
+
+      public String[] getParamterNames();
+
+      public Class getParamterTypes();
+
+ }
+----
+
+[[ghpmt]][[GSACG00225]][[listening-for-events-from-classes-that-are-not-event-providers]]
+
+==== Listening for Events From Classes That Are Not Event Providers
+
+gfProbes infrastructure allows clients to monitor glassfish even in the
+absence of provider classes. This is done by allowing clients to receive
+callbacks when a java methods are entered / exited. Note that while this
+approach allows a client to monitor legacy code, it may not always be
+possible to receive "high-level" events.
+
+For example, while it is easy to monitor (through gfProbes) when
+TransactionManagerImpl.begin() entered / exited, the client cannot
+determine the transaction ID in this case.
+
+[source,java]
+----
+public class TxMonitor {
+     @MethodEntry("tx:com.sun.tx.TxMgrImpl::onTxBegin")
+     public void onTx(String tId) {
+       count++;
+     }
+  }
+----
+
+[[ghpql]][[GSACG00169]][[monitoring-method-entry]]
+
+===== Monitoring Method Entry
+
+The @MethodEntry annotation must be used by the client to receive
+callback when the target method is entered. The client method argument
+types and count must match the target methods parameter types/count.
+
+[[ghppg]][[GSACG00170]][[monitoring-method-exit]]
+
+===== Monitoring Method Exit
+
+The @MethodExit annotation must be used by the client to receive
+callback when the target method is exited. The client method argument
+types and count must match the target methods parameter types/count. The
+first parameter in the client method should match the return type of the
+target method (only if the target method has a non void return type)
+
+[[ghplj]][[GSACG00171]][[monitoring-exceptions]]
+
+===== Monitoring Exceptions
+
+The @OnException annotation must be used by the client to receive
+callback when the target method exits because of an exception. The
+client method argument types and count must match the target methods
+parameter types/count. (This restriction might be removed later). The
+first parameter in the client method should be of type Throwable
+
+[[ghppo]][[GSACG00226]][[registering-an-event-listener]]
+
+==== Registering an Event Listener
+
+Registering an event listener enables the listener to receive callbacks
+from the {productName} event infrastructure. The listener can then
+collect data from events and update monitorable objects in the object
+tree. These monitorable objects form the basis for monitoring
+statistics.
+
+Registering an event listener also makes a component and its statistics
+monitorable objects by adding statistics for the component to the
+monitorable object tree.
+
+At runtime, the {productName} event infrastructure registers
+listeners for an event provider when the event provider is started and
+unregisters them when the event provider is shut down. As a result,
+listeners have no dependencies on other components.
+
+To register a listener, invoke the static
+`org.glassfish.external.probe.provider.StatsProviderManager.register`
+method in the class that represents your add-on component. In the method
+invocation, pass the following information as parameters:
+
+* The name of the configuration element with which all statistics in the
+event listener are to be associated. System administrators use this
+element for enabling or disabling monitoring for the event listener.
+* The node in the monitorable object tree under which the event listener
+is to be registered. To specify the node, pass one of the following
+constants of the
+`org.glassfish.external.probe.provider.PluginPointPluginPoint`
+enumeration:
+
+** To register the listener under the `server/applications` node, pass
+the `APPLICATIONS` constant.
+
+** To register the listener under the `server` node, pass the `SERVER`
+constant.
+* The path through the monitorable object tree from the node under which
+the event listener is registered down to the statistics in the event
+listener. The nodes in this path are separated by the slash (`/`)
+character.
+* The listener object that you are registering.
+
+[[GSACG00047]][[ghpuu]]
+Example 5-7 Registering an Event Listener
+
+This example shows the code for registering the event listener
+`TxListener` for the add-on component that is represented by the class
+`TransactionManagerImpl`. The statistics that are defined in this
+listener are associated with the `web-container` configuration element.
+The listener is registered under the `server/applications` node. The
+path from this node to the statistics in the event listener is
+`tx/txapp`.
+
+Code for the constructor of the `TxListener` class is beyond the scope
+of this example.
+
+[source,java]
+----
+...
+import org.glassfish.external.probe.provider.StatsProviderManager;
+import org.glassfish.external.probe.provider.PluginPoint
+...
+public class TransactionManagerImpl {
+...
+    StatsProviderManager.register("web-container", PluginPoint.APPLICATIONS,
+        "tx/txapp", new TxListener());
+...
+}
+----
+
+[[ghrma]][[GSACG00118]][[dotted-names-and-rest-urls-for-an-add-on-components-statistics]]
+
+=== Dotted Names and REST URLs for an Add-On Component's Statistics
+
+The {productName} administrative subcommands link:reference-manual/get.html#GSRFM00139[`get`],
+link:reference-manual/list.html#GSRFM00145[`list`], and olink:GSRFM00226[`set`] locate a statistic
+through the dotted name of the statistic. The dotted name of a statistic
+for an add-on component is determined from the registration of the event
+listener that defines the statistic as follows:
+
+[source]
+----
+listener-parent-node.path-to-statistic.statistic-name
+----
+
+listener-parent-node::
+  The node in the monitorable object tree under which the event listener
+  that defines the statistic is registered. This node is passed in the
+  invocation of the `register` method that registers the event listener.
+  For more information, see link:#ghppo[Registering an Event Listener].
+path-to-statistic::
+  The path through the monitorable object tree from the node under which
+  the event listener is registered down to the statistic in the event
+  listener in which each slash is replaced with a period. This path is
+  passed in the invocation of the `register` method that registers the
+  event listener. For more information, see link:#ghppo[Registering an
+  Event Listener].
+statistic-name::
+  The name of the statistic. This name is the value of the `id` element
+  of the `@ManagedAttribute` annotation on the property that represents
+  the statistic. For more information, see link:#ghptp[Representing a
+  Component's Statistics in an Event Listener Class].
+
+For example, the dotted name of the `txcount` statistic that is defined
+in link:#ghpsc[Example 5-5] and registered in link:#ghpuu[Example 5-7]
+is as follows:
+
+[source]
+----
+server.applications.tx.txapp.txcount
+----
+
+The formats of the URL to a REST resource that represents a statistic is as follows:
+
+[source]
+----
+http://host:port/monitoring/domain/path
+----
+
+host::
+  The host where the DAS is running.
+port::
+  The HTTP port or HTTPS port for administration.
+path::
+  The path to the statistic. The path is the dotted name of the
+  attribute in which each dot (`.`) is replaced with a slash (`/`).
+
+For example, the URL the REST resource for the `txcount` statistic that
+is defined in link:#ghpsc[Example 5-5] and registered in
+link:#ghpuu[Example 5-7] is as follows:
+
+[source]
+----
+http://localhost:4848/monitoring/domain/server/applications/tx/txapp/txcount
+----
+
+In this example, the DAS is running on the local host and the HTTP port
+for administration is 4848.
+
+[[ghmox]][[GSACG00119]][[adding-a-type-to-the-monitor-command]]
+
+=== Adding a Type to the `monitor` Command
+
+To add a type to the `monitor` command, implement the `MonitorContract` interface.
+
+An implementation of the `MonitorContract` interface is an HK2 service
+that provides monitoring data to the `monitor` command.
+
+[[ghptj]][[GSACG00120]][[example-of-adding-monitoring-capabilities]]
+
+=== Example of Adding Monitoring Capabilities
+
+This example shows a component that monitors the number of requests that
+a container receives. The following table provides a cross-reference to
+the listing of each class or interface in the example.
+
+[width="100%",cols="<50%,<50%",options="header",]
+|===
+|Class or Interface |Listing
+|`ModuleProbeProvider` |link:#ghpna[Example 5-8]
+|`ModuleBootStrap` |link:#ghpmu[Example 5-9]
+|`ModuleStatsTelemetry` |link:#ghpvw[Example 5-10]
+|`Module` |link:#ghpuc[Example 5-11]
+|`ModuleMBean` |link:#ghpwx[Example 5-12]
+|===
+
+
+[[GSACG00048]][[ghpna]]
+Example 5-8 Event Provider Class
+
+This example illustrates how to define an event provider as explained in
+link:#ghovq[Defining an Event Provider by Writing a Java Class].
+
+The example shows the definition of the `ModuleProbeProvider` class.
+The event provider sends events when the request count is increased by 1 or
+decreased by 1.
+
+This class defines the following methods:
+
+* `moduleCountIncrementEvent`
+* `moduleCountDecrementEvent`
+
+The name of each method is also the name of the event type that is
+associated with the method.
+
+A parameter that is named `count` is passed to each method.
+
+[source,java]
+----
+package org.glassfish.pluggability.monitoring;
+
+import org.glassfish.external.probe.provider.annotations.Probe;
+import org.glassfish.external.probe.provider.annotations.ProbeParam;
+import org.glassfish.external.probe.provider.annotations.ProbeProvider;
+
+/**
+ * Monitoring count events
+ * Provider interface for module specific probe events.
+ */
+@ProbeProvider(moduleProviderName = "glassfish", moduleName = "mybeanmodule",
+probeProviderName = "mybean")
+public class ModuleProbeProvider {
+
+    /**
+     * Emits probe event whenever the count is incremented
+     */
+    @Probe(name = "moduleCountIncrementEvent")
+    public void moduleCountIncrementEvent(
+            @ProbeParam("count") Integer count) {
+    }
+
+    /**
+     * Emits probe event whenever the count is decremented
+     */
+    @Probe(name = "moduleCountDecrementEvent")
+    public void moduleCountDecrementEvent(
+            @ProbeParam("count") Integer count) {
+    }
+}
+----
+
+
+[[GSACG00049]][[ghpmu]]
+
+Example 5-9 Bootstrap Class
+
+This example illustrates how to register an event listener as explained
+in link:#ghppo[Registering an Event Listener]. The example shows the
+code for registering an instance of the listener class
+`ModuleStatsTelemetry`. This instance is added as a child of the
+`server/applications` node of the tree.
+
+[source,java]
+----
+package org.glassfish.pluggability.monitoring;
+
+import org.jvnet.hk2.component.PostConstruct;
+import org.jvnet.hk2.annotations.Service;
+import org.jvnet.hk2.annotations.Scoped;
+import org.jvnet.hk2.component.Singleton;
+import org.glassfish.external.probe.provider.StatsProviderManager;
+import org.glassfish.external.probe.provider.PluginPoint;
+
+/**
+ * Monitoring Count Example
+ * Bootstrap object for registering probe provider and listener
+ */
+@Service
+@Scoped(Singleton.class)
+public class ModuleBootStrap implements PostConstruct {
+
+    @Override
+    public void postConstruct() {
+        try {
+            StatsProviderManager.register("web-container",
+                    PluginPoint.APPLICATIONS, "myapp", new ModuleStatsTelemetry());
+        } catch (Exception e) {
+            System.out.println("Caught exception in postconstruct");
+            e.printStackTrace();
+        }
+    }
+}
+----
+
+[[GSACG00050]][[ghpvw]]
+Example 5-10 Listener Class
+
+This example shows how to perform the following tasks:
+
+* link:#ghpni[Creating Event Listeners]. The example shows the code of
+the `ModuleStatsTelemetry` listener class.
+* link:#ghptp[Representing a Component's Statistics in an Event Listener
+Class]. The example shows the code for representing the
+`countmbeancount` statistic.
+* link:#ghpml[Subscribing to Events From Event Provider Classes]. The
+example shows the code for subscribing to the following types of events
+from the `count` component:
+** `moduleCountIncrementEvent`
+** `moduleCountDecrementEvent`
+
+[source,java]
+----
+package org.glassfish.pluggability.monitoring;
+
+import org.glassfish.external.statistics.CountStatistic;
+import org.glassfish.external.statistics.impl.CountStatisticImpl;
+import org.glassfish.external.probe.provider.annotations.ProbeListener;
+import org.glassfish.external.probe.provider.annotations.ProbeParam;
+import org.glassfish.gmbal.ManagedAttribute;
+import org.glassfish.gmbal.ManagedObject;
+
+/**
+ * Monitoring counter example
+ * Telemtry object which listens to probe events and updates
+ * the monitoring stats
+ */
+@ManagedObject
+public class ModuleStatsTelemetry {
+
+    private CountStatisticImpl countMBeanCount = new CountStatisticImpl(
+            "CountMBeanCount", "count", "Number of MBeans");
+
+    @ManagedAttribute(id = "countmbeancount")
+    public CountStatistic getCountMBeanCount() {
+        return countMBeanCount;
+    }
+
+    @ProbeListener("count:example:countapp:moduleCountIncrementEvent")
+    public void moduleCountIncrementEvent(
+            @ProbeParam("count") Integer count) {
+        countMBeanCount.increment();
+    }
+
+    @ProbeListener("count:example:countapp:moduleCountDecrementEvent")
+    public void moduleCountDecrementEvent(
+            @ProbeParam("count") Integer count) {
+        countMBeanCount.decrement();
+    }
+}
+----
+
+[[GSACG00051]][[ghpuc]]
+Example 5-11 MBean Interface
+
+This example defines the interface for a simple standard MBean that has
+methods to increase and decrease a counter by 1.
+
+[source,java]
+----
+package com.example.count.monitoring;
+
+/**
+ * Monitoring counter example
+ * ModuleMBean interface
+ */
+public interface ModuleMBean {
+    public Integer getCount() ;
+    public void incrementCount() ;
+    public void decrementCount() ;
+}
+----
+
+[[GSACG00052]][[ghpwx]]
+Example 5-12 MBean Implementation
+
+This example illustrates how to send an event as explained in link:#ghprg[Sending an Event].
+The example shows code for sending events as follows:
+
+* The `moduleCountIncrementEvent` method is invoked in the body of the `incrementCount` method.
+* The `moduleCountDecrementEvent` method is invoked in the body of the `decrementCount` method.
+
+The methods `incrementCount` and `decrementCount` are invoked by an
+entity that is beyond the scope of this example, for example, JConsole.
+
+[source,java]
+----
+package org.glassfish.pluggability.monitoring;
+
+/**
+ * Monitoring counter example
+ * ModuleMBean implementation
+ */
+public class Module implements ModuleMBean {
+
+    private int k = 0;
+    private ModuleProbeProvider mpp = null;
+
+    @Override
+    public Integer getCount() {
+        return k;
+    }
+
+    @Override
+    public void incrementCount() {
+        k++;
+        if (mpp != null) {
+            mpp.moduleCountIncrementEvent(k);
+        }
+    }
+
+    @Override
+    public void decrementCount() {
+        k--;
+        if (mpp != null) {
+            mpp.moduleCountDecrementEvent(k);
+        }
+    }
+
+    void setProbeProvider(ModuleProbeProvider mpp) {
+        this.mpp = mpp;
+    }
+}
+----
diff --git a/docs/add-on-component-development-guide/src/main/asciidoc/extending-asadmin.adoc b/docs/add-on-component-development-guide/src/main/asciidoc/extending-asadmin.adoc
new file mode 100644
index 0000000..dd29618
--- /dev/null
+++ b/docs/add-on-component-development-guide/src/main/asciidoc/extending-asadmin.adoc
@@ -0,0 +1,1738 @@
+type=page
+status=published
+title=Extending the asadmin Utility
+next=adding-monitoring-capabilities.html
+prev=extending-the-admin-console.html
+~~~~~~
+
+= Extending the asadmin Utility
+
+[[GSACG00004]][[ghmrd]]
+
+
+[[extending-the-asadmin-utility]]
+== Extending the `asadmin` Utility
+
+The `asadmin` utility is a command-line tool for configuring and
+administering {productName}. Extending the `asadmin` utility enables
+you to provide administrative interfaces for an add-on component that
+are consistent with the interfaces of other {productName} components.
+A user can run `asadmin` subcommands either from a command prompt or
+from a script. For more information about the `asadmin` utility, see the
+link:reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] man page.
+
+The following topics are addressed here:
+
+* link:#ghpuj[About the Administrative Command Infrastructure of {productName}]
+* link:#ghpwe[Adding an `asadmin` Subcommand]
+* link:#ghpwa[Adding Parameters to an `asadmin` Subcommand]
+* link:#gkygt[Making `asadmin` Subcommands Cluster-Aware]
+* link:#ghptw[Adding Message Text Strings to an `asadmin` Subcommand]
+* link:#ghpvn[Enabling an `asadmin` Subcommand to Run]
+* link:#ghpvq[Setting the Context of an `asadmin` Subcommand]
+* link:#ghpwn[Changing the Brand in the {productName} CLI]
+* link:#ghmza[Examples of Extending the `asadmin` Utility]
+* link:#gkzlq[Implementing Create, Delete, and List Commands Using
+Annotations]
+
+[[ghpuj]][[GSACG00105]][[about-the-administrative-command-infrastructure-of-glassfish-server]]
+
+=== About the Administrative Command Infrastructure of {productName}
+
+To enable multiple containers to be independently packaged and loaded,
+the administrative command infrastructure of {productName} provides
+the following features:
+
+* Location independence. Administration subcommands can be loaded from
+any add-on component that is known to {productName}.
+* Extensibility. Administrative subcommands that are available to
+{productName} are discovered on demand and not obtained from a preset
+list of subcommands.
+* Support for the HK2 architecture. Subcommands can use injection to
+express their dependencies, and extraction to provide results to a user.
+For more information, see link:writing-hk2-components.html#ghmna[Writing
+HK2 Components].
+
+[[ghpwe]][[GSACG00107]][[adding-an-asadmin-subcommand]]
+
+=== Adding an `asadmin` Subcommand
+
+An `asadmin` subcommand identifies the operation or task that a user is
+to perform. Adding an `asadmin` subcommand enables the user to perform
+these tasks and operations through the `asadmin` utility.
+
+The following topics are addressed here:
+
+* link:#ghrqj[Representing an `asadmin` Subcommand as a Java Class]
+* link:#ghrpm[Specifying the Name of an `asadmin` Subcommand]
+* link:#ghrng[Ensuring That an `AdminCommand` Implementation Is
+Stateless]
+* link:#ghrqx[Example of Adding an `asadmin` Subcommand]
+
+[[ghrqj]][[GSACG00194]][[representing-an-asadmin-subcommand-as-a-java-class]]
+
+==== Representing an `asadmin` Subcommand as a Java Class
+
+Each `asadmin` subcommand that you are adding must be represented as a
+Java class. To represent an `asadmin` subcommand as a Java class, write
+a Java class that implements the `org.glassfish.api.admin.AdminCommand`
+interface. Write one class for each subcommand that you are adding. Do
+not represent multiple `asadmin` subcommands in a single class.
+
+Annotate the declaration of your implementations of the `AdminCommand`
+interface with the `org.jvnet.hk2.annotations.Service` annotation. The
+`@Service` annotation ensures that the following requirements for your
+implementations are met:
+
+* The implementations are eligible for resource injection and resource extraction.
+* The implementations are location independent, provided that the
+component that contains them is made known to the {productName} runtime.
++
+For information about how to make a component known to the {productName} runtime, see
+link:packaging-integrating-delivering.html#ghmne[Integrating an Add-On Component With {productName}].
+
+[[ghrpm]][[GSACG00195]][[specifying-the-name-of-an-asadmin-subcommand]]
+
+==== Specifying the Name of an `asadmin` Subcommand
+
+To specify the name of the subcommand, set the `name` element of the
+`@Service` annotation to the name.
+
+
+[NOTE]
+====
+Subcommand names are case-sensitive.
+====
+
+
+Subcommands that are supplied in {productName} distributions
+typically create, delete, and list objects of a particular type. For
+consistency with the names of subcommands that are supplied in {productName} distributions, follow these conventions when specifying the name
+of a subcommand:
+
+* For subcommands that create an object of a particular type, use the name `create-`object`.`
+* For subcommands that delete an object of a particular type, use the name `delete-`object`.`
+* For subcommands that list all objects of a particular type, use the name `list-`objects`.`
+
+For example, {productName} provides the following subcommands for
+creating, deleting, and listing HTTP listeners:
+
+* `create-http-listener`
+* `delete-http-listener`
+* `list-http-listeners`
+
+You must also ensure that the name of your subcommand is unique.
+To obtain a complete list of the names of all `asadmin` subcommands that
+are installed, use the
+link:reference-manual/list-commands.html#GSRFM00154[`list-commands`] subcommand.
+For a complete list of `asadmin` subcommands that are supplied in
+{productName} distributions, see the
+link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+[[ghrng]][[GSACG00196]][[ensuring-that-an-admincommand-implementation-is-stateless]]
+
+==== Ensuring That an `AdminCommand` Implementation Is Stateless
+
+To enable multiple clients to run a subcommand simultaneously, ensure
+that the implementation of the `AdminCommand` interface for the
+subcommand is stateless. To ensure that the implementation of the
+`AdminCommand` interface is stateless, annotate the declaration of your
+implementation with the `org.jvnet.hk2.annotations.Scoped` annotation.
+In the `@Scoped` annotation, set the scope as follows:
+
+* To instantiate the subcommand for each lookup, set the scope to `PerLookup.class`.
+* To instantiate the subcommand only once for each session, set the scope to `Singleton`.
+
+[[ghrqx]][[GSACG00197]][[example-of-adding-an-asadmin-subcommand]]
+
+==== Example of Adding an `asadmin` Subcommand
+
+[[GSACG00034]][[ghrqq]]
+Example 4-1 Adding an `asadmin` Subcommand
+
+This example shows the declaration of the class `CreateMycontainer` that
+represents an `asadmin` subcommand that is named `create-mycontainer`.
+The subcommand is instantiated for each lookup.
+
+[source,java]
+----
+package com.example.mycontainer;
+
+import org.glassfish.api.admin.AdminCommand;
+...
+import org.jvnet.hk2.annotations.Service;
+...
+import org.jvnet.hk2.annotations.Scoped;
+import org.jvnet.hk2.component.PerLookup;
+
+/**
+ * Sample subcommand
+ */
+@Service(name="create-mycontainer")
+@Scoped(PerLookup.class)
+public Class CreateMycontainer implements AdminCommand {
+…
+}
+----
+
+[[ghpwa]][[GSACG00108]][[adding-parameters-to-an-asadmin-subcommand]]
+
+=== Adding Parameters to an `asadmin` Subcommand
+
+The parameters of an `asadmin` subcommand are the options and operands
+of the subcommand.
+
+* Options control how the `asadmin` utility performs a subcommand.
+* Operands are the objects on which a subcommand acts. For example, the
+operand of the link:reference-manual/start-domain.html#GSRFM00235[`start-domain`] subcommand is the domain
+that is to be started.
+
+The following topics are addressed here:
+
+* link:#ghpvh[Representing a Parameter of an `asadmin` Subcommand]
+* link:#ghptx[Identifying a Parameter of an `asadmin` Subcommand]
+* link:#ghpxp[Specifying Whether a Parameter Is an Option or an Operand]
+* link:#ghpxj[Specifying the Name of an Option]
+* link:#ghpxl[Specifying the Acceptable Values of a Parameter]
+* link:#ghrgt[Specifying the Default Value of a Parameter]
+* link:#ghpuk[Specifying Whether a Parameter Is Required or Optional]
+* link:#CDCFAJDG[Specifying Whether a Parameter Can Be Used Multiple
+Times on the Command Line]
+* link:#ghpxd[Example of Adding Parameters to an `asadmin` Subcommand]
+
+[[ghpvh]][[GSACG00198]][[representing-a-parameter-of-an-asadmin-subcommand]]
+
+==== Representing a Parameter of an `asadmin` Subcommand
+
+Represent each parameter of a subcommand in your implementation as a
+field or as the property of a JavaBeans specification setter method. Use
+the property of a setter method for the following reasons:
+
+* To provide data encapsulation for the parameter
+* To add code for validating the parameter before the property is set
+
+[[ghptx]][[GSACG00199]][[identifying-a-parameter-of-an-asadmin-subcommand]]
+
+==== Identifying a Parameter of an `asadmin` Subcommand
+
+Identifying a parameter of an `asadmin` subcommand enables {productName} to perform the following operations at runtime on the parameter:
+
+* Validation. The {productName} determines whether all required
+parameters are specified and returns an error if any required parameter
+is omitted.
+* Injection. Before the subcommand runs, the {productName} injects
+each parameter into the required field or method before the subcommand
+is run.
+* Usage message generation. The {productName} uses reflection to
+obtain the list of parameters for a subcommand and to generate the usage
+message from this list.
+* Localized string display. If the subcommand supports
+internationalization and if localized strings are available, the
+{productName} can automatically obtain the localized strings for a
+subcommand and display them to the user.
+
+To identify a parameter of a subcommand, annotate the declaration of the
+item that is associated with the parameter with the
+`org.glassfish.api.Param` annotation. This item is either the field or
+setter method that is associated with the parameter.
+
+To specify the properties of the parameter, use the elements of the
+`@Param` annotation as explained in the sections that follow.
+
+[[ghpxp]][[GSACG00200]][[specifying-whether-a-parameter-is-an-option-or-an-operand]]
+
+==== Specifying Whether a Parameter Is an Option or an Operand
+
+Whether a parameter is an option or an operand determines how a user
+must specify the parameter when running the subcommand:
+
+* If the parameter is an option, the user must specify the option with
+the parameter name.
+* If the parameter is an operand, the user may omit the parameter name.
+
+To specify whether a parameter is an option or an operand, set the
+`primary` element of the `@Param` annotation as follows:
+
+* If the parameter is an option, set the `primary` element to `false`.
+This value is the default.
+* If the parameter is an operand, set the `primary` element to `true`.
+
+[[ghpxj]][[GSACG00201]][[specifying-the-name-of-an-option]]
+
+==== Specifying the Name of an Option
+
+The name of an option is the name that a user must type on the command
+line to specify the option when running the subcommand.
+
+The name of each option that you add in your implementation of an
+`asadmin` subcommand can have a long form and a short form. When running
+the subcommand, the user specifies the long form and the short form as
+follows:
+
+* The short form of an option name has a single dash (`-`) followed by a
+single character.
+* The long form of an option name has two dashes (`--`) followed by an
+option word.
+
+For example, the short form and the long form of the name of the option
+for specifying terse output are as follows:
+
+* Short form: `-m`
+* Long form: `--monitor`
+
+
+[NOTE]
+====
+Option names are case-sensitive.
+====
+
+
+[[ghpvy]][[GSACG00163]][[specifying-the-long-form-of-an-option-name]]
+
+===== Specifying the Long Form of an Option Name
+
+To specify the long form of an option name, set the `name` element of
+the `@Param` annotation to a string that specifies the name. If you do
+not set this element, the default name depends on how you represent the
+option.
+
+* If you represent the option as a field, the default name is the field
+name.
+* If you represent the option as the property of a JavaBeans
+specification setter method, the default name is the property name from
+the setter method name. For example, if the setter method `setPassword`
+is associated with an option, the property name and the option name are
+both `password`.
+
+[[sthref5]][[specifying-the-short-form-of-an-option-name]]
+
+===== Specifying the Short Form of an Option Name
+
+[[ghpvi]]
+
+To specify the short form of an option name, set the `shortName` element
+of the `@Param` annotation to a single character that specifies the
+short form of the parameter. The user can specify this character instead
+of the full parameter name, for example `-m` instead of `--monitor`. If
+you do not set this element, the option has no short form.
+
+[[ghpxl]][[GSACG00202]][[specifying-the-acceptable-values-of-a-parameter]]
+
+==== Specifying the Acceptable Values of a Parameter
+
+When a user runs the subcommand, the {productName} validates option
+arguments and operands against the acceptable values that you specify in
+your implementation.
+
+To specify the acceptable values of a parameter, set the
+`acceptableValues` element of the `@Param` annotation to a string that
+contains a comma-separated list of acceptable values. If you do not set
+this element, any string of characters is acceptable.
+
+[[ghrgt]][[GSACG00203]][[specifying-the-default-value-of-a-parameter]]
+
+==== Specifying the Default Value of a Parameter
+
+The default value of a parameter is the value that is applied if a user
+omits the parameter when running the subcommand.
+
+To specify the default value of a parameter, set the `defaultValue`
+element of the `@Param` annotation to a string that contains the default
+value. You can also compute the default value dynamically by extending
+the `ParamDefaultCalculator` class and setting the `defaultCalculator`
+element of the `@Param` annotation to this class. If these elements are
+not set, the parameter has no default value.
+
+[[ghpuk]][[GSACG00204]][[specifying-whether-a-parameter-is-required-or-optional]]
+
+==== Specifying Whether a Parameter Is Required or Optional
+
+Whether a parameter is required or optional determines how a subcommand
+responds if a user omits the parameter when running the subcommand:
+
+* If the parameter is required, the subcommand returns an error.
+* If the parameter is optional, the subcommand runs successfully.
+
+To specify whether a parameter is optional or required, set the
+`optional` element of the `@Param` annotation as follows:
+
+* If the parameter is required, set the `optional` element to `false`.
+This value is the default.
+* If the parameter is optional, set the `optional` element to `true`.
+
+[[CDCFAJDG]][[specifying-whether-a-parameter-can-be-used-multiple-times-on-the-command-line]]
+
+Specifying Whether a Parameter Can Be Used Multiple Times on the Command
+==== Line
+
+By default, each parameter can be used once on the command line. To use
+the parameter multiple times, set the `multiple` element of the `@Param`
+annotation to `true`. The type of the annotated parameter must be an
+array.
+
+[[ghpxd]][[GSACG00205]][[example-of-adding-parameters-to-an-asadmin-subcommand]]
+
+==== Example of Adding Parameters to an `asadmin` Subcommand
+
+[[GSACG00035]][[ghpuh]]
+Example 4-2 Adding Parameters to an `asadmin` Subcommand
+
+This example shows the code for adding parameters to an `asadmin`
+subcommand with the properties as shown in the table.
+
+|===
+|Name |Represented As |Acceptable Values |Default Value |Optional or
+Required |Short Name |Option or Operand
+|`--originator` |A field that is named `originator` |Any character
+string |None defined |Required |None |Option
+
+|`--description` |A field that is named `mycontainerDescription` |Any
+character string |None defined |Optional |None |Option
+
+|`--enabled` |A field that is named `enabled` |`true` or `false`
+|`false` |Optional |None |Option
+
+|`--containername` |A field that is named `containername` |Any character
+string |None defined |Required |None |Operand
+|===
+
+
+[source,java]
+----
+...
+import org.glassfish.api.Param;
+...
+{
+//…
+    @Param
+    String originator;
+
+    @Param(name="description", optional=true)
+    //…
+    String mycontainerDescription
+
+    @Param (acceptableValues="true,false", defaultValue="false", optional=true)
+    String enabled
+
+    @Param(primary=true)
+    String containername;
+//…
+}
+----
+
+[[gkygt]][[GSACG00109]][[making-asadmin-subcommands-cluster-aware]]
+
+=== Making `asadmin` Subcommands Cluster-Aware
+
+The {productName} `asadmin` command framework provides support for
+making `asadmin` subcommands work properly in a clustered environment or
+with standalone server instances. A command that changes a configuration
+is first executed on the domain administration server (DAS) and then
+executed on each of the server instances affected by the change.
+Annotations provided by the framework determine the instances on which
+the command should be replicated and executed. Commands that do not
+change a configuration need not be executed on the DAS at all, but only
+on the necessary instances. The framework provides support for
+collecting the output from the instances and sending a report back to
+the user.
+
+Subcommands in a multi-instance environment can accept a `--target`
+option to specify the cluster or instance on which the command acts.
+From within the command, the `Target` utility allows the command to
+determine information about where it is running. For some commands, it
+may be desirable to have a main command that runs on the DAS and
+supplemental preprocessing or postprocessing commands that run on the
+instances.
+
+The following topics are addressed here:
+
+* link:#gkyjk[Specifying Allowed Targets]
+* link:#gkykm[The `Target` Utility]
+* link:#gkyfv[Specifying `asadmin` Subcommand Execution]
+* link:#gkyjs[Subcommand Preprocessing and Postprocessing]
+* link:#gkyit[Running a Command from Another Command]
+
+[[gkyjk]][[GSACG00206]][[specifying-allowed-targets]]
+
+==== Specifying Allowed Targets
+
+When you define a `--target` option by using the `@Param` annotation in
+the `org.glassfish.api` package, possible targets are as follows:
+
+* `domain` — The entire domain
+* `server` — The domain administration server, or DAS
+* cluster — A homogeneous set of server instances that function as a
+unit
+* standalone instance — A server instance that isn't part of a cluster
+* clustered instance — A server instance that is part of a cluster
+* config — A configuration for a cluster or standalone server instance
+
+These possible targets are represented by the following `CommandTarget`
+elements of the `@TargetType` annotation in the
+`org.glassfish.config.support` package:
+
+* `CommandTarget.DOMAIN`
+* `CommandTarget.DAS`
+* `CommandTarget.CLUSTER`
+* `CommandTarget.STANDALONE_SERVER`
+* `CommandTarget.CLUSTERED_INSTANCE`
+* `CommandTarget.CONFIG`
+
+By default, the allowed targets are `server` (the DAS), standalone
+server instances, clusters, and configurations. Not specifying a
+`@TargetType` annotation is equivalent to specifying the following
+`@TargetType` annotation:
+
+[source,java]
+----
+@TargetType(CommandTarget.DAS,CommandTarget.STANDALONE_SERVER,CommandTarget.CLUSTER,CommandTarget.CONFIG)
+----
+
+Subcommands that support other combinations of targets must specify
+`@TargetType` annotations. For example, the `create-http-lb` subcommand
+supports only standalone server instance and cluster targets. Its
+`@TargetType` annotation is as follows:
+
+[source,java]
+----
+@TargetType(CommandTarget.STANDALONE_SERVER,CommandTarget.CLUSTER)
+----
+
+Most subcommands do not act on server instances that are part of a
+cluster. This ensures that all server instances in a cluster remain
+synchronized. Thus, the `CommandTarget.CLUSTERED_INSTANCE` element of
+the `@TargetType` annotation is rarely used.
+
+An example exception is the `enable` subcommand. To perform a rolling
+upgrade of an application deployed to a cluster, you must be able to
+enable the new application (which automatically disables the old) on one
+clustered instance at a time. The `@TargetType` annotation for the
+`enable` subcommand is as follows, all on one line:
+
+[source,java]
+----
+@TargetType(CommandTarget.DAS,CommandTarget.STANDALONE_INSTANCE,CommandTarget.CLUSTER,
+CommandTarget.CLUSTERED_INSTANCE)
+----
+
+Note that the `CommandTarget.CLUSTERED_INSTANCE` element is specified.
+
+The target name specified in the command line is injected into the
+subcommand implementation if the following annotation is present:
+
+[source,java]
+----
+@Param(optional=true,defaultValue=SystemPropertyConstants.DEFAULT_SERVER_INSTANCE_NAME)
+String target;
+----
+
+[[gkykm]][[GSACG00207]][[the-target-utility]]
+
+==== The `Target` Utility
+
+The `Target` utility is a service, present in the `internal-api` module,
+`org.glassfish.internal.api` package, which a command implementation can
+obtain by using the following annotation:
+
+[source,java]
+----
+@Inject Target targetUtil;
+----
+
+You can use this utility to avoid writing boiler plate code for actions
+such as getting the list of server instances for a cluster or checking
+if a server instance is part of a cluster. For example, here is an
+example of using the utility to obtain the configuration for a target
+cluster or server instance:
+
+[source,java]
+----
+Config c = targetUtil.getConfig(target);
+----
+
+The `Target` utility is packaged in the
+as-install``/modules/internal-api.jar`` file. Its methods are documented
+with comments.
+
+[[gkyfv]][[GSACG00208]][[specifying-asadmin-subcommand-execution]]
+
+==== Specifying `asadmin` Subcommand Execution
+
+By default, all `asadmin` subcommands are automatically replicated and
+run on the DAS and all {productName} instances specified in the
+`--target` option. To run a subcommand only on the DAS, use the
+following `@ExecuteOn` annotation in the `org.glassfish.api.admin` package:
+
+[source,java]
+----
+@ExecuteOn(RuntimeType.DAS)
+----
+
+The `stop-domain` subcommand and subcommands that list information are
+examples of subcommands that execute only on the DAS.
+
+To run a subcommand only on applicable server instances, use the
+following `@ExecuteOn` annotation:
+
+[source,java]
+----
+@ExecuteOn(RuntimeType.INSTANCE)
+----
+
+Not specifying an `@ExecuteOn` annotation is equivalent to specifying
+the following `@ExecuteOn` annotation:
+
+[source,java]
+----
+@ExecuteOn(RuntimeType.DAS,RuntimeType.INSTANCE)
+----
+
+In addition to `RuntimeType`, you can specify the following additional
+elements with the `@ExecuteOn` annotation:
+
+* `ifFailure` — By default, if errors occur during execution of a
+subcommand on a server instance, command execution is considered to have
+failed and further execution is stopped. However, you can choose to
+ignore the failure or warn the user rather than stopping further command
+execution. Specify the `ifFailure` element and set it to
+`FailurePolicy.Ignore` or `FailurePolicy.Warn`. For example:
++
+[source,java]
+----
+@ExecuteOn(value={RuntimeType.DAS}, ifFailure=FailurePolicy.Warn)
+----
+* `ifOffline` — By default, if a server instance is found to be offline
+during the command replication process, command execution is considered
+to have failed and further execution is stopped. However, you can choose
+to ignore the failure or warn the user rather than stopping further
+command execution. Specify the `ifOffline` element and set it to
+`FailurePolicy.Ignore` or `FailurePolicy.Warn`. For example:
++
+[source,java]
+----
+@ExecuteOn(value={RuntimeType.DAS}, ifOffline=FailurePolicy.Ignore)
+----
+
+[[gkyjs]][[GSACG00209]][[subcommand-preprocessing-and-postprocessing]]
+
+==== Subcommand Preprocessing and Postprocessing
+
+Some `asadmin` subcommands may require preprocessing or postprocessing.
+For example, after an application is deployed to the DAS, references are
+created in all applicable server instances, which synchronize with the
+DAS. As another example, Message Queue or load balancer settings may
+have to be reconfigured whenever a server instance is added to a
+cluster.
+
+For such cases, the command replication framework provides the
+`@Supplemental` annotation (in the `org.glassfish.api.admin` package).
+An implementation must use the `value` element of the `@Supplemental`
+annotation to express the supplemented command. This value is the name
+of the command as defined by the supplemented command's `@Service`
+annotation (in the `org.jvnet.hk2.annotations` package).
+
+For example, the `deploy` subcommand requires postprocessing. The
+deployment command implementation looks like this:
+
+[source,java]
+----
+@Service(name="deploy")
+@ExecuteOn(RuntimeType.DAS)
+public DeployCommand implements AdminCommand {
+// Do Actual Deployment
+}
+----
+
+A supplemental command that is run after every successful deployment
+looks like this:
+
+[source,java]
+----
+@Service(name="DeploymentSupplementalCommand")
+@Supplemental("deploy")
+@ExecuteOn(RuntimeType.INSTANCE)
+public DeploymentSupplementalCommand implements AdminCommand {
+// Do logic that happens after deployment has been done
+}
+----
+
+As another example, a subcommand to create a local server instance might
+look like this:
+
+[source,java]
+----
+@Service(name = "create-local-instance")
+@Scoped(PerLookup.class)
+public final class CreateLocalInstanceCommand implements AdminCommand {
+// Do local instance creation
+}
+----
+
+A supplemental command to change Message Queue or load balancer settings
+after local instance creation might look like this:
+
+[source,java]
+----
+@Service(name="CreateLocalInstanceSupplementalCommand")
+@Supplemental("create-local-instance")
+public CreateLocalInstanceSupplementalCommand implements AdminCommand {
+// Change MQ/LB properties here
+}
+----
+
+A supplemental command implements AdminCommand, thus it can use the
+`@Param` annotation and expect the corresponding `asadmin` command
+parameters to be injected at runtime. The parameter values available for
+injection are the same ones provided for the original command with which
+the supplemental command is associated. For example, the
+`DeploymentSupplementalCommand` has access to the parameter values
+available to the `DeployCommand` invocation.
+
+An `asadmin` subcommand can be supplemented with multiple supplemental
+commands. In this case, all supplemental commands are run after
+completion of the main command but without any guarantee of the order in
+which they run.
+
+To specify that a supplemental command is run before the main command,
+set the `on` element of the `@Supplemental` annotation to
+`Supplemental.Timing.Before`. For example:
+
+[source,java]
+----
+@Supplemental(value="mycommand", on=Supplemental.Timing.Before)
+----
+
+Supplemental commands can use the `@ExecuteOn` annotation as described
+in link:#gkyfv[Specifying `asadmin` Subcommand Execution].
+
+[[gkyit]][[GSACG00210]][[running-a-command-from-another-command]]
+
+==== Running a Command from Another Command
+
+An `asadmin` subcommand or supplemental command might need to run
+another subcommand. For example, a subcommand running on the DAS might
+need to run a different subcommand on one or more server instances. Such
+invocations might use the `ClusterExecutor` class (in the
+`org.glassfish.api.admin` package), which accepts a `ParameterMap`, to
+pass parameters and their values to the invoked command.
+
+The `ParameterMapExtractor` utility is a service, present in the
+`common-util` module, `org.glassfish.common.util.admin` package, which
+creates a new `ParameterMap` populated using the parameters and values
+of another `AdminCommand` that has already been injected.
+
+To list parameter names you want excluded from the `ParameterMap`, pass
+the following:
+
+[source,java]
+----
+Set<String>
+----
+
+This is optional.
+
+[[ghptw]][[GSACG00110]][[adding-message-text-strings-to-an-asadmin-subcommand]]
+
+=== Adding Message Text Strings to an `asadmin` Subcommand
+
+A message text string provides useful information to the user about an
+`asadmin` subcommand or a parameter.
+
+To provide internationalization support for the text string of a
+subcommand or parameter, annotate the declaration of the subcommand or
+parameter with the `org.glassfish.api.I18n` annotation. The `@I18n`
+annotation identifies the resource from the resource bundle that is
+associated with your implementation.
+
+To add message text strings to an `asadmin` subcommand, create a plain
+text file that is named `LocalStrings.properties` to contain the
+strings. Define each string on a separate line of the file as follows:
+
+[source]
+----
+key=string
+----
+
+key::
+  A key that maps the string to a subcommand or a parameter. The format
+  to use for key depends on the target to which the key applies and
+  whether the target is annotated with the `@I18n` annotation. See the
+  following table.
++
+[width="100%",cols="<36%,<64%",options="header",]
+|===
+|Target |Format
+|Subcommand or parameter with the `@I18n` annotation
+|`subcommand-name.command.resource-name`
+
+|Subcommand without the `@I18n` annotation
+|`subcommand-name.command`
+
+|Parameter without the `@I18n` annotation
+|`subcommand-name.command.param-name`
+|===
++
+The replaceable parts of these formats are as follows:
++
+  subcommand-name;;
+    The name of the subcommand.
+  resource-name;;
+    The name of the resource that is specified in the`@I18n` annotation.
+  param-name;;
+    The name of the parameter.
+string::
+  A string without quotes that contains the text of the message.
+
+
+[NOTE]
+====
+To display the message strings to users, you must provide code in your
+implementation of the `execute` method to display the text. For more
+information about implementing the `execute` method, see
+link:#ghpvn[Enabling an `asadmin` Subcommand to Run].
+====
+
+[[GSACG00036]][[ghpvm]]
+Example 4-3 Adding Message Strings to an `asadmin` Subcommand
+
+This example shows the code for adding message strings to the
+`create-mycontainer` subcommand as follows:
+
+* The `create-mycontainer` subcommand is associated with the message
+`Creates a custom container`. No internationalization support is
+provided for this message.
+* The `--originator` parameter is associated with the message
+`The originator of the container`. No internationalization support is
+provided for this message.
+* The `--description` parameter is associated with the message that is
+contained in the resource `mydesc`, for which internationalization is
+provided. This resource contains the message text
+`A description of the container`.
+* The `--enabled` parameter is associated with the message
+`Whether the container is enabled or disabled`.
+No internationalization support is provided for this message.
+* The `--containername` parameter is associated with the message
+`The container name`. No internationalization support is provided for this message.
+
+The addition of the parameters `originator`, `description`, `enabled`
+and `containername` to the subcommand is shown in link:#ghpuh[Example 4-2].
+
+[source,java]
+----
+package com.example.mycontainer;
+
+import org.glassfish.api.admin.AdminCommand;
+import org.glassfish.api.I18n;
+import org.glassfish.api.Param;
+import org.jvnet.hk2.annotations.Service;
+import org.jvnet.hk2.annotations.Scoped;
+import org.jvnet.hk2.component.PerLookup;
+//...
+
+/**
+ * Sample subcommand
+ */
+@Service(name="create-mycontainer")
+@Scoped(PerLookup.class)
+public Class CreateMycontainer implements AdminCommand {
+
+    @Param
+    String originator;
+
+    @Param(name="description", optional=true)
+    @I18n("mydesc")
+    String mycontainerDescription
+
+    @Param (acceptableValues="true,false", defaultValue="false", optional=true)
+    String enabled
+
+    @Param(primary=true)
+    String containername;
+//...
+}
+----
+
+The following message text strings are defined in the file
+`LocalStrings.properties` for use by the subcommand:
+
+[source]
+----
+create-mycontainer.command=Creates a custom container
+create-mycontainer.command.originator=The originator of the container
+create-mycontainer.command.mydesc=A description of the container
+create-mycontainer.command.enabled=Whether the container is enabled or disabled
+create-mycontainer.command.containername=The container name
+----
+
+[[ghpvn]][[GSACG00111]][[enabling-an-asadmin-subcommand-to-run]]
+
+=== Enabling an `asadmin` Subcommand to Run
+
+To enable an `asadmin` subcommand to run, implement the `execute` method
+in your implementation of the `AdminCommand` interface. The declaration
+of the `execute` method in your implementation must be as follows.
+
+[source,java]
+----
+    public void execute(AdminCommandContext context);
+----
+
+Pass each parameter of the subcommand as a property to your
+implementation of the `execute` method. Set the key of the property to
+the parameter name and set the value of the property to the parameter's
+value.
+
+In the body of the `execute` method, provide the code for performing the
+operation that the command was designed to perform. For examples, see
+link:#ghrsi[Example 4-6] and link:#gkbdf[Example 4-7].
+
+[[ghpvq]][[GSACG00112]][[setting-the-context-of-an-asadmin-subcommand]]
+
+=== Setting the Context of an `asadmin` Subcommand
+
+The `org.glassfish.api.admin.AdminCommandContext` class provides the
+following services to an `asadmin` subcommand:
+
+* Access to the parameters of the subcommand
+* Logging
+* Reporting
+
+To set the context of an `asadmin` subcommand, pass an
+`AdminCommandContext` object to the `execute` method of your
+implementation.
+
+[[ghpwn]][[GSACG00113]][[changing-the-brand-in-the-glassfish-server-cli]]
+
+=== Changing the Brand in the {productName} CLI
+
+The brand in the {productName} command-line interface (CLI) consists
+of the product name and release information that are displayed in the
+following locations:
+
+* In the string that the link:reference-manual/version.html#GSRFM00261[`version`] subcommand displays
+* In each entry in the `server.log` file
+
+If you are incorporating {productName} into a new product with an
+external vendor's own brand name, change the brand in the {productName} CLI.
+
+To change the brand in the {productName} CLI, create an OSGi fragment
+bundle that contains a plain text file that is named
+`src/main/resources/BrandingVersion.properties`.
+
+In the `BrandingVersion.properties` file, define the following
+keyword-value pairs:
+
+[source]
+----
+product_name=product-name
+abbrev_product_name=abbrev-product-name
+major_version=major-version
+minor_version=minor-version
+build_id=build-id
+version_prefix=version-prefix
+version_suffix=version-suffix
+----
+
+Define each keyword-value pair on a separate line of the file. Each
+value is a text string without quotes.
+
+The meaning of each keyword-value pair is as follows:
+
+`product_name=`product-name::
+  Specifies the full product name without any release information, for
+  example,
+  `name="ProductNameFullPlain" content="{productName}"`.
+`abbrev_product_name=`abbrev-product-name::
+  Specifies an abbreviated form of the product name without any release
+  information, for example,
+  `name="ProductNamePlain" content="{productName}"`.
+`major_version=`major-version::
+  Returns the product major version, for example, `6`
+`minor_version=`minor-version::
+  Specifies the product minor version, for example, `0`.
+`build_id=`build-id::
+  Specifies the build version, for example, `build 17`.
+`version_prefix=`version-prefix::
+  Specifies a prefix for the product version, for example, `v`.
+`version_suffix=`version-suffix::
+  Specifies a suffix for the product version, for example, `Beta`.
+
+[[GSACG00037]][[ghrfh]]
+Example 4-4 `BrandingVersion.properties` File for Changing the Brand in
+the {productName} CLI
+
+This example shows the content of the `BrandingVersion.properties` for
+defining the product name and release information of {productName} 6.0.0, build 17. The abbreviated product name is
+`glassfish-server`.
+
+[source]
+----
+product_name=Eclipse GlassFish
+abbrev_product_name=glassfish-server
+major_version=6
+minor_version=0.0
+build_id=build 17
+----
+
+To enable the display of OEM-specific information, the following
+properties might also be required:
+
+[source]
+----
+LEGAL_COPYRIGHT                "Copyright 2020"
+LEGAL_COMPANY_NAME             "Eclipse Foundation"
+LEGAL_RIGHTS                   "All rights reserved."
+SIMPLE_COMPANY_NAME            "Eclipse"
+COMPANY_CONTACT_URL            "http://www.glassfish.org"
+PRODUCT_TRADEMARKS             "GlassFish is a trademark of the Eclipse Foundation"
+----
+
+[[ghmza]][[GSACG00114]][[examples-of-extending-the-asadmin-utility]]
+
+=== Examples of Extending the `asadmin` Utility
+
+[[GSACG00038]][[ghrnt]]
+Example 4-5 `asadmin` Subcommand With Empty `execute` Method
+
+This example shows a class that represents the `asadmin` subcommand
+`create-mycontainer`.
+
+The usage statement for this subcommand is as follows:
+
+[source]
+----
+asadmin create-mycontainer --originator any-character-string
+[--description any-character-string]
+[--enabled {true|false}] any-character-string
+----
+
+This subcommand uses injection to specify that a running domain is
+required.
+
+[source,java]
+----
+package com.example.mycontainer;
+
+import org.glassfish.api.admin.AdminCommand;
+import org.glassfish.api.admin.AdminCommandContext;
+import org.glassfish.api.I18n;
+import org.glassfish.api.Param;
+import org.jvnet.hk2.annotations.Service;
+import org.jvnet.hk2.annotations.Inject;
+import org.jvnet.hk2.annotations.Scoped;
+import org.jvnet.hk2.component.PerLookup;
+
+/**
+ * Sample subcommand
+ */
+@Service(name="create-mycontainer")
+@Scoped(PerLookup.class)
+public Class CreateMycontainer implements AdminCommand {
+
+    @Inject
+    Domain domain;
+
+    @Param
+    String originator;
+
+    @Param(name="description", optional=true)
+    @I18n("mydesc")
+    String mycontainerDescription
+
+    @Param (acceptableValues="true,false", defaultValue="false", optional=true)
+    String enabled
+
+    @Param(primary=true)
+    String containername;
+
+    /**
+     * Executes the subcommand with the subcommand parameters passed as Properties
+     * where the keys are the paramter names and the values the parameter values
+     * @param context information
+     */
+    public void execute(AdminCommandContext context) {
+        // domain and originator are not null
+        // mycontainerDescription can be null.
+    }
+}
+----
+
+The following message text strings are defined in the file
+`LocalStrings.properties` for use by the subcommand:
+
+[source]
+----
+create-mycontainer.command=Creates a custom container
+create-mycontainer.command.originator=The originator of the container
+create-mycontainer.command.mydesc=A description of the container
+create-mycontainer.command.enabled=Whether the container is enabled or disabled
+create-mycontainer.command.containername=The container name
+----
+
+[[GSACG00039]][[ghrsi]]
+Example 4-6 `asadmin` Subcommand for Retrieving and Displaying Information
+
+This example shows a class that represents the `asadmin` subcommand
+`list-runtime-environment`. The subcommand determines the operating
+system or runtime information for {productName}.
+
+The usage statement for this subcommand is as follows:
+
+[source]
+----
+asadmin list-runtime-environment{runtime|os}
+----
+[source,java]
+----
+package com.example.env.cli;
+
+import org.glassfish.api.admin.AdminCommand;
+import org.glassfish.api.admin.AdminCommandContext;
+import org.glassfish.api.ActionReport;
+import org.glassfish.api.I18n;
+import org.glassfish.api.ActionReport.ExitCode;
+import org.glassfish.api.Param;
+import org.jvnet.hk2.annotations.Service;
+import org.jvnet.hk2.annotations.Inject;
+import org.jvnet.hk2.annotations.Scoped;
+import org.jvnet.hk2.component.PerLookup;
+
+import java.lang.management.ManagementFactory;
+import java.lang.management.OperatingSystemMXBean;
+import java.lang.management.RuntimeMXBean;
+
+/**
+ * Demos asadmin CLI extension
+ */
+@Service(name="list-runtime-environment")
+@Scoped(PerLookup.class)
+public class ListRuntimeEnvironmentCommand implements AdminCommand {
+
+    // this value can be either runtime or os for our demo
+    @Param(primary=true)
+    String inParam;
+
+    public void execute(AdminCommandContext context) {
+
+        ActionReport report = context.getActionReport();
+        report.setActionExitCode(ExitCode.SUCCESS);
+
+        // If the inParam is 'os' then this subcommand returns operating system
+        // info and if the inParam is 'runtime' then it returns runtime info.
+        // Both of the above are based on mxbeans.
+
+        if ("os".equals(inParam)) {
+            OperatingSystemMXBean osmb = ManagementFactory.getOperatingSystemMXBean();
+            report.setMessage("Your machine operating system name = " + osmb.getName());
+        } else if ("runtime".equals(inParam)) {
+            RuntimeMXBean rtmb = ManagementFactory.getRuntimeMXBean();
+            report.setMessage("Your JVM name = " + rtmb.getVmName());
+        } else {
+            report.setActionExitCode(ExitCode.FAILURE);
+            report.setMessage("operand should be either 'os' or 'runtime'");
+        }
+    }
+}
+----
+
+[[GSACG00040]][[gkbdf]]
+Example 4-7 `asadmin` Subcommand for Updating Configuration Data
+
+This example shows a class that represents the `asadmin` subcommand
+`configure-greeter-container`. The subcommand performs a transaction to
+update configuration data for a container component. For more
+information about such transactions, see
+link:adding-configuration-data.html#gjrcz[Creating a Transaction to
+Update Configuration Data].
+
+The usage statement for this subcommand is as follows:
+
+[source]
+----
+asadmin configure-greeter-container --instances instances [--language language] [--style style]
+----
+
+The acceptable values and default value of each option of the subcommand
+are shown in the following table. The table also indicates whether each
+option is optional or required.
+
+[width="100%",cols="<25%,<25%,<25%,<25%",options="header",]
+|===
+|Option |Acceptable Values |Default value |Optional or Required
+|`--instances` |An integer in the range 1-10 |5 |Required
+|`--language` |`english`, `norsk`, or `francais` |`norsk` |Optional
+|`--style` |`formal`, `casual`, or `expansive` |`formal` |Optional
+|===
+
+
+Code for the container component is shown in
+link:adding-container-capabilities.html#gkane[Example of Adding Container
+Capabilities].
+
+Code that defines the configuration data for the container component is
+shown in link:adding-configuration-data.html#gkaal[Examples of Adding
+Configuration Data for a Component].
+
+[source,java]
+----
+package org.glassfish.examples.extension.greeter.config;
+
+import org.glassfish.api.admin.AdminCommand;
+import org.glassfish.api.admin.AdminCommandContext;
+import org.glassfish.api.Param;
+import org.jvnet.hk2.annotations.Service;
+import org.jvnet.hk2.annotations.Inject;
+import org.jvnet.hk2.config.Transactions;
+import org.jvnet.hk2.config.ConfigSupport;
+import org.jvnet.hk2.config.SingleConfigCode;
+import org.jvnet.hk2.config.TransactionFailure;
+
+import java.beans.PropertyVetoException;
+
+@Service(name = "configure-greeter-container")
+public class ConfigureGreeterContainerCommand implements AdminCommand {
+
+    @Param(acceptableValues = "1,2,3,4,5,6,7,8,9,10", defaultValue = "5")
+    String instances;
+    @Param(acceptableValues = "english,norsk,francais", defaultValue = "norsk",
+    optional = true)
+    String language;
+    @Param(acceptableValues = "formal,casual,expansive", defaultValue = "formal",
+    optional = true)
+    String style;
+    @Inject
+    GreeterContainerConfig config;
+
+    public void execute(AdminCommandContext adminCommandContext) {
+        try {
+            ConfigSupport.apply(new SingleConfigCode<GreeterContainerConfig>() {
+
+                public Object run(GreeterContainerConfig greeterContainerConfig)
+                        throws PropertyVetoException, TransactionFailure {
+                    greeterContainerConfig.setNumberOfInstances(instances);
+                    greeterContainerConfig.setLanguage(language);
+                    greeterContainerConfig.setStyle(style);
+                    return null;
+                }
+            }, config);
+        } catch (TransactionFailure e) {
+        }
+
+    }
+}
+----
+
+[[gkzlq]][[GSACG00115]][[implementing-create-delete-and-list-commands-using-annotations]]
+
+=== Implementing Create, Delete, and List Commands Using Annotations
+
+Many `asadmin` subcommands simply create, delete, or list objects in the
+configuration. Such code is repetitive to write and error prone. To
+simplify the writing of these `asadmin` commands, {productName}
+supports annotations that can create, delete, and list configuration
+objects from a command invocation. Unless attributes or properties are
+set to non-default values or extra actions are required, no writing of
+code is needed.
+
+The following topics are addressed here:
+
+* link:#gkzkc[Command Patterns]
+* link:#gkzle[Resolvers]
+* link:#gkzoy[The `@Create` Annotation]
+* link:#gkzoo[The `@Delete` Annotation]
+* link:#gkzpl[The `@Listing` Annotation]
+* link:#gkznf[Create Command Decorators]
+* link:#gkznx[Delete Command Decorators]
+* link:#gkzmu[Specifying Command Execution]
+* link:#gkznd[Using Multiple Command Annotations]
+
+[[gkzkc]][[GSACG00211]][[command-patterns]]
+
+==== Command Patterns
+
+Create command pattern. The most basic create commands are implemented
+in the following pattern:
+
+1. Retrieve the parent configuration object instance to which the child
+will be added. For example, the parent could be a `Clusters` object and
+the child a `Cluster` object.
+
+2. Start a transaction on the parent instance.
+
+3. Create the child configuration object instance.
+
+4. Set the attributes and properties of the newly created child instance.
+
+5. Add the child to the parent using one of the following accessor
+methods:
++
+[source,java]
+----
+void setChild(ChildType child)
+----
+Used when there can be zero or one children of a single type associated
+with one parent instance.
++
+[source,java]
+----
+List<ChildType> getChildren()
+----
+Used when there can be zero or more children of a single type associated
+with one parent instance.
+You cannot retrieve a set of children of the same type from the same
+parent using two different accessor methods.
+
+6. Commit the transaction.
+
+A generic create command implementation can do most of these tasks if
+the following information is provided:
+
+* A way to resolve the identity of the parent instance.
+* The type of the child instance.
+* A mapping between command options and child attributes.
+* The accessor method for adding the child to the parent.
+
+Delete command pattern. The most basic delete commands are implemented
+in the following pattern:
+
+1. Retrieve the configuration object instance to be deleted.
+2. Start a transaction on the parent instance.
+3. Delete the child by removing it from the list or calling `setXXX(null)`.
+4. Commit the transaction.
+
+A generic delete command implementation can do most of these tasks if
+the following information is provided:
+
+* A way to resolve the identity of the child instance.
+* The accessor method for deleting the child.
+
+List command pattern. The most basic list commands simply retrieve all
+configuration object instances of a given type.
+
+[[gkzle]][[GSACG00212]][[resolvers]]
+
+==== Resolvers
+
+A resolver retrieves a configuration object instance of a particular
+type. For a create command, it retrieves the parent of the object to be
+created. For a delete command, it retrieves the object to be deleted. A
+resolver implements the CrudResolver interface:
+
+[source,java]
+----
+package org.glassfish.config.support;
+
+/**
+ * A config resolver is responsible for finding the target object of a specified
+ * type on which a creation command invocation will be processed.
+ *
+ * Implementation of these interfaces can be injected with the command invocation
+ * parameters in order to determine which object should be returned
+ */
+@Contract
+public interface CrudResolver {
+
+    /**
+     * Retrieves the existing configuration object a command invocation is
+     * intented to mutate.
+     * @param context the command invocation context
+     * @param type the type of the expected instance
+     * @return the instance or null if not found
+     */
+    <T extends ConfigBeanProxy> T resolve(AdminCommandContext context, Class<T> type);
+}
+----
+
+Given an `AdminCommandContext`, plus injection with the `asadmin`
+command line parameters (or any other HK2 services if necessary), the
+resolver should be able to determine the particular configuration object
+on which to act.
+
+The following resolvers are provided in the
+`org.glassfish.config.support` package:
+
+* `TargetBasedResolver` — Uses the `--target` option and the expected
+return type to retrieve the configuration object instance.
+* `TargetAndNameBasedResolver` — Uses the `--target` option to look up a
+`Config` object and a name to retrieve one of the `Config` object's
+children.
+* `TypeAndNameResolver` — Uses the requested type and `asadmin` command
+name operand to find the configuration object instance. This is useful
+for a configuration that uses the `@Index` annotation, which registers
+instances under names.
+* `TypeResolver` — Uses the requested type to find the configuration
+object instance. This is the default resolver.
+
+[[gkzoy]][[GSACG00213]][[the-create-annotation]]
+
+==== The `@Create` Annotation
+
+By placing the `org.glassfish.config.support.Create` annotation on a
+method, you provide the following information:
+
+* The `value` element of the `@Create` annotation is the name of the
+`asadmin` subcommand that creates the configuration object.
+* The method's class is the type of the parent.
+* The method's return type or parameter type is the type of the child.
+* The method is the accessor method that adds a child of the specified
+type to the parent.
+
+The only additional information needed is the resolver to use.
+
+The following example specifies a `create-cluster` subcommand:
+
+[source,java]
+----
+@Configured
+public interface Clusters extends ConfigBeanProxy, Injectable {
+
+     /**
+      * Return the list of clusters currently configured
+      *
+      * @return list of {@link Cluster }
+      */
+    @Element
+    @Create(value="create-cluster")
+    public List<Cluster> getCluster();
+}
+----
+
+Because there is only one instance of the parent type, `Clusters`, in
+the configuration, this example uses the default resolver to retrieve
+it. Therefore, no resolver needs to be specified.
+
+[[gkzoo]][[GSACG00214]][[the-delete-annotation]]
+
+==== The `@Delete` Annotation
+
+By placing the `org.glassfish.config.support.Delete` annotation on a
+method, you provide the following information:
+
+* The `value` element of the `@Delete` annotation is the name of the
+`asadmin` subcommand that deletes the configuration object.
+* The method's class is the type of the parent.
+* The method's return type or parameter type is the type of the child.
+* The method is the accessor method that deletes a child of the
+specified type from the parent.
+
+The only additional information needed is the resolver to use.
+
+The following example specifies a `delete-cluster` subcommand:
+
+[source,java]
+----
+@Configured
+public interface Clusters extends ConfigBeanProxy, Injectable {
+
+     /**
+      * Return the list of clusters currently configured
+      *
+      * @return list of {@link Cluster }
+      */
+    @Element
+    @Delete(value="delete-cluster", resolver=TypeAndNameResolver.class)
+    public List<Cluster> getCluster();
+}
+----
+
+The `TypeAndNameResolver` uses the child type and the name operand
+passed through the command line to retrieve the specific cluster
+instance to be deleted.
+
+[[gkzpl]][[GSACG00215]][[the-listing-annotation]]
+
+==== The `@Listing` Annotation
+
+By placing the `org.glassfish.config.support.Listing` annotation on a
+method, you provide the following information:
+
+* The `value` element of the `@Listing` annotation is the name of the
+`asadmin` subcommand that lists the configuration objects.
+* The method's class is the type of the parent.
+* The method's return type is the type of the children to be listed.
+* The method is always the following accessor method:
++
+[source,java]
+----
+List<ChildType> getChildren()
+----
+
+The default resolver retrieves all of the children of the specified
+type. Therefore, no resolver needs to be specified for a list command.
+
+The following example specifies a `list-clusters` subcommand:
+
+[source,java]
+----
+@Configured
+public interface Clusters extends ConfigBeanProxy, Injectable {
+
+     /**
+      * Return the list of clusters currently configured
+      *
+      * @return list of {@link Cluster }
+      */
+    @Element
+    @Listing(value="list-clusters")
+    public List<Cluster> getCluster();
+}
+----
+
+[[gkznf]][[GSACG00216]][[create-command-decorators]]
+
+==== Create Command Decorators
+
+Most create commands must do more than create a single configuration
+object instance with default attribute values. For example, most create
+commands allow the user to specify non-default attribute values through
+command options. For another example, the `create-cluster` subcommand
+creates children of the `Cluster` object and copies a referenced
+`Config` object. A creation decorator provides the code necessary to
+perform such additional operations.
+
+The interface that a creation decorator must implement is as follows:
+
+[source,java]
+----
+@Scoped(PerLookup.class)
+public interface CreationDecorator<T extends ConfigBeanProxy> {
+
+    /**
+     * The element instance has been created and added to the parent, it can be
+     * customized. This method is called within a
+     * {@link org.jvnet.hk2.config.Transaction}
+     * and instance is therefore a writeable view on the configuration component.
+     *
+     * @param context administration command context
+     * @param instance newly created configuration element
+     * @throws TransactionFailure if the transaction should be rollbacked
+     * @throws PropertyVetoException if one of the listener of <T> is throwing
+     * a veto exception
+     */
+    public void decorate(AdminCommandContext context, T instance)
+        throws TransactionFailure, PropertyVetoException;
+
+    /**
+     * Default implementation of a decorator that does nothing.
+     */
+    @Service
+    public class NoDecoration implements CreationDecorator<ConfigBeanProxy> {
+        @Override
+        public void decorate(AdminCommandContext context, ConfigBeanProxy instance)
+            throws TransactionFailure, PropertyVetoException {
+            // do nothing
+        }
+    }
+}
+----
+
+The CreationDecorator interface is in the `org.glassfish.config.support`
+package.
+
+A `@Create` annotation specifies a creation decorator using a
+`decorator` element. For example:
+
+[source,java]
+----
+@Configured
+public interface Clusters extends ConfigBeanProxy, Injectable {
+
+     /**
+      * Return the list of clusters currently configured
+      *
+      * @return list of {@link Cluster }
+      */
+    @Element
+    @Create(value="create-cluster", decorator=Cluster.Decorator.class)
+    public List<Cluster> getCluster();
+}
+----
+
+The `@Create` annotation is on a method of the parent class. However,
+the referenced creation decorator class is associated with the child
+class. For example:
+
+[source,java]
+----
+@Configured
+public interface Cluster extends ConfigBeanProxy, ... {
+
+    ...
+
+    @Service
+    @Scoped(PerLookup.class)
+    class Decorator implements CreationDecorator<Cluster> {
+
+        @Param(name="config", optional=true)
+        String configRef=null;
+
+        @Inject
+        Domain domain;
+
+        @Override
+        public void decorate(AdminCommandContext context, final Cluster instance)
+                throws TransactionFailure, PropertyVetoException {
+
+        ...
+
+        }
+    }
+}
+----
+
+The decorator class can optionally be an inner class of the child class.
+You can inject command options using the `@Param` annotation. You can
+also inject HK2 services or configuration instances.
+
+[[gkznx]][[GSACG00217]][[delete-command-decorators]]
+
+==== Delete Command Decorators
+
+Some delete commands must do more than delete a single configuration
+object instance. For example, the `delete-cluster` subcommand deletes
+the referenced `Config` object if no other `Cluster` or `Instance`
+objects reference it. A deletion decorator provides the code necessary
+to perform such additional operations.
+
+The interface that a deletion decorator must implement is as follows:
+
+[source,java]
+----
+/**
+ * A decorator for acting upon a configuration element deletion.
+ *
+ * @param <T> the deleted element parent type
+ * @param <U> the deleted element
+ */
+@Scoped(PerLookup.class)
+public interface DeletionDecorator<T extends ConfigBeanProxy,
+    U extends ConfigBeanProxy> {
+
+    /**
+     * notification of a configuration element of type U deletion.
+     *
+     * Note that this notification is called within the boundaries of the
+     * configuration transaction, therefore the parent instance is a
+     * writable copy and further changes to the parent can be made without
+     * enrolling it inside a transaction.
+     *
+     * @param context the command context to lead to the element deletion
+     * @param parent the parent instance the element was removed from
+     * @param child the deleted instance
+     */
+    public void decorate(AdminCommandContext context, T parent, U child);
+}
+----
+
+The DeletionDecorator interface is in the `org.glassfish.config.support`
+package.
+
+A `@Delete` annotation specifies a deletion decorator using a
+`decorator` element. For example:
+
+[source,java]
+----
+@Configured
+public interface Clusters extends ConfigBeanProxy, Injectable {
+
+     /**
+      * Return the list of clusters currently configured
+      *
+      * @return list of {@link Cluster }
+      */
+    @Element
+    @Delete(value="delete-cluster", resolver= TypeAndNameResolver.class,
+        decorator=Cluster.DeleteDecorator.class)
+    public List<Cluster> getCluster();
+}
+----
+
+The `@Delete` annotation is on a method of the parent class. However,
+the referenced deletion decorator class is associated with the child
+class. For example:
+
+[source,java]
+----
+@Configured
+public interface Cluster extends ConfigBeanProxy, ... {
+
+    ..
+    @Service
+    @Scoped(PerLookup.class)
+    class DeleteDecorator implements DeletionDecorator<Clusters, Cluster> {
+        ....
+    }
+}
+----
+
+The decorator class can optionally be an inner class of the child class.
+You can inject command options using the `@Param` annotation. You can
+also inject HK2 services or configuration instances.
+
+[[gkzmu]][[GSACG00218]][[specifying-command-execution]]
+
+==== Specifying Command Execution
+
+Commands specified with the `@Create`, `@Delete`, and `@Listing`
+annotations can use the `@ExecuteOn` annotation. The `@ExecuteOn`
+annotation specifies whether the command runs on the DAS, on server
+instances, or both (the default). For more information, see
+link:#gkyfv[Specifying `asadmin` Subcommand Execution].
+
+To add an `@ExecuteOn` annotation to a `@Create` or `@Delete`
+annotation, use the `cluster` element. For example:
+
+[source,java]
+----
+@Create(value="create-instance", resolver=TypeResolver.class,
+        decorator=Server.CreateDecorator.class,
+        cluster=@org.glassfish.api.admin.ExecuteOn(value=RuntimeType.DAS))
+----
+
+[[gkznd]][[GSACG00219]][[using-multiple-command-annotations]]
+
+==== Using Multiple Command Annotations
+
+You can specify multiple command annotations on the same method. The
+following example combines create, delete, and list commands for
+clusters:
+
+[source,java]
+----
+@Configured
+public interface Clusters extends ConfigBeanProxy, Injectable {
+
+     /**
+      * Return the list of clusters currently configured
+      *
+      * @return list of {@link Cluster }
+      */
+    @Element
+    @Create(value="create-cluster", decorator=Cluster.Decorator.class)
+    @Delete(value="delete-cluster", resolver= TypeAndNameResolver.class,
+        decorator=Cluster.DeleteDecorator.class)
+    @Listing(value="list-clusters")
+    public List<Cluster> getCluster();
+}
+----
+
+You can also specify multiple create or delete command annotations for
+the same configuration object type using the `@Creates` or `@Deletes`
+annotation (both in the `org.glassfish.config.support` package). For
+example:
+
+[source,java]
+----
+@Element
+@Creates(
+   @Create(value="create-something", decorator=CreateSomething.Decorator)
+   @Create(value="create-something-else", decorator=CreateSomethingElse.Decorator)
+   List<Something> getSomethings();
+)
+----
+
+These commands create configuration object instances of the same type.
+Differences in the decorators and resolvers can produce differences in
+the options each command takes. The `@Param` annotated attributes of the
+created type define a superset of options for both commands.
+
diff --git a/docs/add-on-component-development-guide/src/main/asciidoc/extending-the-admin-console.adoc b/docs/add-on-component-development-guide/src/main/asciidoc/extending-the-admin-console.adoc
new file mode 100644
index 0000000..6c82a62
--- /dev/null
+++ b/docs/add-on-component-development-guide/src/main/asciidoc/extending-the-admin-console.adoc
@@ -0,0 +1,1020 @@
+type=page
+status=published
+title=Extending the Administration Console
+next=extending-asadmin.html
+prev=writing-hk2-components.html
+~~~~~~
+
+= Extending the Administration Console
+
+[[GSACG00003]][[ghmrb]]
+
+
+[[extending-the-administration-console]]
+== Extending the Administration Console
+
+The Administration Console is a browser-based tool for administering
+{productName}. It features an easy-to-navigate interface and online
+help. Extending the Administration Console enables you to provide a
+graphical user interface for administering your add-on component. You
+can use any of the user interface features of the Administration
+Console, such as tree nodes, links on the Common Tasks page, tabs and
+sub-tabs, property sheets, and Jakarta Server Faces pages. Your add-on
+component implements a marker interface and provides a configuration
+file that describes how your customizations integrate with the
+Administration Console.
+
+This chapter refers to a simple example called `console-sample-ip` that
+illustrates how to provide Administration Console features for a
+hypothetical add-on component.
+
+The following topics are addressed here:
+
+* link:#ghmof[Administration Console Architecture]
+* link:#ghmom[About Administration Console Templates]
+* link:#ghmqr[About Integration Points]
+* link:#ghmpg[Specifying the ID of an Add-On Component]
+* link:#ghmpk[Adding Functionality to the Administration Console]
+* link:#ghmqi[Adding Internationalization Support]
+* link:#ghmqg[Changing the Theme or Brand of the Administration Console]
+* link:#ghpkz[Creating an Integration Point Type]
+
+[[ghmof]][[GSACG00097]][[administration-console-architecture]]
+
+=== Administration Console Architecture
+
+The Administration Console is a web application that is composed of OSGi
+bundles. These bundles provide all the features of the Administration
+Console, such as the Web Applications, Update Center, and Security
+content. To provide support for your add-on component, create your own
+OSGi bundle that implements the parts of the user interface that you
+need. Place your bundle in the `modules` directory of your {productName} installation,
+along with the other Administration Console bundles.
+
+To learn how to package the Administration Console features for an
+add-on component, go to the `modules` directory of your {productName}
+installation and examine the contents of the files named
+``console-``componentname``-plugin.jar``. Place the `console-sample-ip`
+project bundle in the same place to deploy it and examine the changes
+that it makes to the Administration Console.
+
+The Administration Console includes a Console Add-On Component Service.
+The Console Add-On Component Service is an HK2 service that acts as a
+façade to all theAdministration Console add-on components. The Console
+Add-On Component Service queries the various console providers for
+integration points so that it can perform the actions needed for the
+integration (adding a tree node or a new tab, for example). The
+interface name for this service is
+`org.glassfish.api.admingui.ConsolePluginService`.
+
+For details about the Hundred-Kilobyte Kernel (HK2) project, see
+link:introduction.html#ghmnq[Hundred-Kilobyte Kernel] and
+link:writing-hk2-components.html#ghokq[HK2 Component Model].
+
+Each add-on component must contain a console provider implementation.
+This is a Java class that implements the
+`org.glassfish.api.admingui.ConsoleProvider` interface and uses the HK2
+`@Service` annotation. The console provider allows your add-on component
+to specify where your integration point configuration file is located.
+This configuration file communicates to the Console Add-On Component
+Service the customizations that your add-on component makes to the
+Administration Console.
+
+[[ghnzl]][[GSACG00187]][[implementing-a-console-provider]]
+
+==== Implementing a Console Provider
+
+The `org.glassfish.api.admingui.ConsoleProvider` interface has one
+required method, `getConfiguration`. The `getConfiguration` method
+returns the location of the `console-config.xml` file as a
+`java.net.URL`. If `getConfiguration` returns `null`, the default
+location, `META-INF/admingui/console-config.xml`, is used. The
+`console-config.xml` file is described in link:#ghmqr[About Integration
+Points].
+
+To implement the console provider for your add-on component, write a
+Java class that is similar to the following example.
+
+[[GSACG00019]][[ghosz]]
+Example 3-1 Example `ConsoleProvider` Implementation
+
+This example shows a simple implementation of the `ConsoleProvider`
+interface:
+
+[source,java]
+----
+package org.glassfish.admingui.plugin;
+
+import org.glassfish.api.admingui.ConsoleProvider;
+import org.jvnet.hk2.annotations.Service;
+
+import java.net.URL;
+
+@Service
+public class SamplePlugin implements ConsoleProvider {
+
+    public URL getConfiguration() { return null; }
+}
+----
+
+This implementation of `getConfiguration` returns null to specify that
+the configuration file is in the default location. If you place the file
+in a nonstandard location or give it a name other than
+`console-config.xml`, your implementation of `getConfiguration` must
+return the URL where the file can be found.
+
+
+[[ghmom]][[GSACG00098]][[about-administration-console-templates]]
+
+=== About Administration Console Templates
+
+{productName} includes a set of templates that make it easier to
+create Jakarta Server Faces pages for your add-on component. These templates
+use Templating for Jakarta Server Faces Technology, which is also known as
+JSFTemplating.
+
+Examples of JSFTemplating technology can be found in the following
+sections of this chapter:
+
+* link:#ghoej[Creating a Jakarta Server Faces Page for Your Node]
+* link:#ghovg[Creating Jakarta Server Faces Pages for Your Tabs]
+* link:#ghoeu[Creating a Jakarta Server Faces Page for Your Task]
+* link:#ghoya[Creating a Jakarta Server Faces Page for Your Task Group]
+* link:#ghpao[Creating a Jakarta Server Faces Page for Your Page Content]
+* link:#ghmqe[Adding a Page to the Administration Console]
+
+[[ghmqr]][[GSACG00099]][[about-integration-points]]
+
+=== About Integration Points
+
+The integration points for your add-on component are the individual
+Administration Console user interface features that your add-on
+component will extend. You can implement the following kinds of
+integration points:
+
+* Nodes in the navigation tree
+* Elements on the Common Tasks page of the Administration Console
+* Jakarta Server Faces pages
+* Tabs and sub-tabs
+
+Specify all the integration points in a file named `console-config.xml`.
+In the example, this file is in the directory
+`project/src/main/resources/META-INF/admingui/`. The following sections
+describe how to create this file.
+
+In addition, create Jakarta Server Faces pages that contain JSF code
+fragments to implement the integration points. In the example, these
+files are in the directory `project/src/main/resources/`. The content of
+these files depends on the integration point you are implementing. The
+following sections describe how to create these JavaServer Faces pages.
+
+For reference information on integration points, see
+link:integration-point-reference.html#ghmrp[Integration Point Reference].
+
+[[ghmpg]][[GSACG00100]][[specifying-the-id-of-an-add-on-component]]
+
+=== Specifying the ID of an Add-On Component
+
+The `console-config.xml` file consists of a `console-config` element
+that encloses a series of `integration-point` elements. The
+`console-config` element has one attribute, `id`, which specifies a
+unique name or ID value for the add-on component.
+
+In the example, the element is declared as follows:
+
+[source,xml]
+----
+<console-config id="sample">
+    ...
+</console-config>
+----
+
+You will also specify this ID value when you construct URLs to images,
+resources and pages in your add-on component. See link:#ghocf[Adding a
+Node to the Navigation Tree] for an example.
+
+For example, a URL to an image named `my.gif` might look like this:
+
+[source,xml]
+----
+<sun:image url="/resource/sample/images/my.gif" />
+----
+
+The URL is constructed as follows:
+
+* ``/resource`` is required to locate any resource URL.
+* `sample` is the add-on component ID. You must choose a unique ID
+value.
+* `images` is a folder under the root of the add-on component JAR file.
+
+[[ghmpk]][[GSACG00101]][[adding-functionality-to-the-administration-console]]
+
+=== Adding Functionality to the Administration Console
+
+The `integration-point` elements in the `console-config.xml` file
+specify attributes for the user interface features that you choose to
+implement. The example file provides examples of most of the available
+kinds of integration points at this release. Your own add-on component
+can use some or all of them.
+
+For each `integration-point` element, specify the following attributes.
+
+`id`::
+  An identifier for the integration point.
+`parentId`::
+  The ID of the integration point's parent.
+`type`::
+  The type of the integration point.
+`priority`::
+  A numeric value that specifies the relative ordering of integration
+  points for add-on components that specify the same `parentId`. A lower
+  number specifies a higher priority (for example, 100 represents a
+  higher priority than 400). The integration points for add-on
+  components are always placed after those in the basic Administration
+  Console. You might need to experiment to place the integration point
+  where you want it. This attribute is optional.
+`content`::
+  The content for the integration point, typically a JavaServer Faces
+  page. In the example, you can find the JavaServer Faces pages in the
+  directory `project/src/main/resources/`.
+
+
+[NOTE]
+====
+The order in which these attributes are specified does not matter, and
+in the example `console-config.xml` file the order varies. To improve
+readability, this chapter uses the same order throughout.
+====
+
+
+The following topics are addressed here:
+
+* link:#ghocf[Adding a Node to the Navigation Tree]
+* link:#ghotv[Adding Tabs to a Page]
+* link:#ghmqw[Adding a Task to the Common Tasks Page]
+* link:#ghozn[Adding a Task Group to the Common Tasks Page]
+* link:#ghmrg[Adding Content to a Page]
+* link:#ghmqe[Adding a Page to the Administration Console]
+
+[[ghocf]][[GSACG00188]][[adding-a-node-to-the-navigation-tree]]
+
+==== Adding a Node to the Navigation Tree
+
+You can add a node to the navigation tree, either at the top level or
+under another node. To add a node, use an integration point of type
+`org.glassfish.admingui:navNode`. Use the `parentId` attribute to
+specify where the new node should be placed. Any tree node, including
+those added by other add-on components, can be specified. Examples
+include the following:
+
+`tree`::
+  At the top level
+`applicationServer`::
+  Under the {productName} node
+`applications`::
+  Under the Applications node
+`resources`::
+  Under the Resources node
+`configuration`::
+  Under the Configuration node
+`webContainer`::
+  Under the Web Container node
+`httpService`::
+  Under the HTTP Service node
+
+
+[NOTE]
+====
+The `webContainer` and `httpService` nodes are available only if you
+installed the web container module for the Administration Console (the
+`console-web-gui.jar` OSGi bundle).
+====
+
+
+If you do not specify a `parentId`, the new content is added to the root
+of the integration point, in this case the top level node, `tree`.
+
+[[GSACG00020]][[ghpmb]]
+Example 3-2 Example Tree Node Integration Point
+
+For example, the following `integration-point` element uses a `parentId`
+of `tree` to place the new node at the top level.
+
+[source,xml]
+----
+        <integration-point
+                id="samplenode"
+                parentid="tree"
+                type="org.glassfish.admingui:treeNode"
+                priority="200"
+                content="sampleNode.jsf"
+        />
+----
+
+This example specifies the following values in addition to the
+`parentId`:
+
+* The `id` value, `sampleNode`, specifies the integration point ID.
+* The `type` value, `org.glassfish.admingui:treeNode`, specifies the
+integration point type as a tree node.
+* The `priority` value, `200`, specifies the order of the node on the
+tree.
+* The `content` value, `sampleNode.jsf`, specifies the JavaServer Faces
+page that displays the node.
+
+The example `console-config.xml` file provides other examples of tree
+nodes under the Resources and Configuration nodes.
+
+[[ghoej]][[GSACG00158]][[creating-a-javaserver-faces-page-for-your-node]]
+
+===== Creating a Jakarta Server Faces Page for Your Node
+
+A Jakarta Server Faces page for a tree node uses the tag `sun:treeNode`.
+This tag provides all the capabilities of the Project Woodstock tag
+`webuijsf:treeNode`.
+
+[[GSACG00021]][[ghpmn]]
+Example 3-3 Example Jakarta Server Faces Page for a Tree Node
+
+In the example, the `sampleNode.jsf` file has the following content:
+
+[source,xml]
+----
+<sun:treeNode
+        id="treenode1"
+        text="SampleTop"
+        url="/sample/page/testPage.jsf?name=SampleTop"
+        imageURL="/resource/sample/images/sample.png"
+       >
+    <sun:treeNode
+            id="treenodebb"
+            text="SampleBB"
+            url="/sample/page/testPage.jsf?name=SampleBB"
+            imageURL="resource/sample/images/sample.png" />
+</sun:treeNode>
+----
+
+This file uses the `sun:treenode` tag to specify both a top-level tree
+node and another node nested beneath it. In your own JavaServer Faces
+pages, specify the attributes of this tag as follows:
+
+`id`::
+  A unique identifier for the tree node.
+`text`::
+  The node name that appears in the tree.
+`url`::
+  The location of the JavaServer Faces page that appears when you click
+  the node. In the example, most of the integration points use a very
+  simple Jakarta Server Faces page called `testPage.jsf`, which is in the
+  `src/main/resources/page/` directory. Specify the integration point
+  `id` value as the root of the URL; in this case, it is `sample` (see
+  link:#ghmpg[Specifying the ID of an Add-On Component]). The rest of
+  the URL is relative to the `src/main/resources/` directory, where
+  `sampleNode.jsf` resides.
+  The `url` tag in this example passes a `name` parameter to the
+  Jakarta Server Faces page.
+`imageURL`::
+  The location of a graphic to display next to the node name. In the
+  example, the graphic is always `sample.png`, which is in the
+  `src/main/resources/images/` directory. The URL for this image is an
+  absolute path, `/resource/`sample`/images/sample.png`, where sample in
+  the path is the integration point `id` value (see
+  link:#ghmpg[Specifying the ID of an Add-On Component]).
+
+[[ghotv]][[GSACG00189]][[adding-tabs-to-a-page]]
+
+==== Adding Tabs to a Page
+
+You can add a tab to an existing tab set, or you can create a tab set
+for your own page. One way to add a tab or tab set is to use an
+integration point of type `org.glassfish.admingui:serverInstTab`, which
+adds a tab to the tab set on the main {productName} page of the
+Administration Console. You can also create sub-tabs. Once again, the
+`parentId` element specifies where to place the tab or tab set.
+
+[[GSACG00022]][[ghplc]]
+Example 3-4 Example Tab Integration Point
+
+In the example, the following `integration-point` element adds a new tab
+on the main {productName} page of the Administration Console:
+
+[source,xml]
+----
+        <integration-point
+            id="sampletab"
+            parentid="serverinsttabs"
+            type="org.glassfish.admingui:serverInstTab"
+            priority="500"
+            content="sampleTab.jsf"
+        />
+----
+
+This example specifies the following values:
+
+* The `id` value, `sampleTab`, specifies the integration point ID.
+* The `parentId` value, `serverInstTabs`, specifies the tab set
+associated with the server instance. The {productName} page is the
+only one of the default Administration Console pages that has a tab set.
+* The `type` value, `org.glassfish.admingui:serverInstTab`, specifies
+the integration point type as a tab associated with the server instance.
+* The `priority` value, `500`, specifies the order of the tab within the
+tab set. This value is optional.
+* The `content` value, `sampleTab.jsf`, specifies the Jakarta Server Faces
+page that displays the tab.
+
+[[GSACG00023]][[ghplu]]
+Example 3-5 Example Tab Set Integration Points
+
+The following `integration-point` elements add a new tab with two
+sub-tabs, also on the main {productName} page of the Administration
+Console:
+
+[source,xml]
+----
+        <integration-point
+            id="sampletabwithsubtab"
+            parentid="serverinsttabs"
+            type="org.glassfish.admingui:serverInstTab"
+            priority="300"
+            content="sampleTabWithSubTab.jsf"
+        />
+        <integration-point
+            id="samplesubtab1"
+            parentid="sampletabwithsubtab"
+            type="org.glassfish.admingui:serverInstTab"
+            priority="300"
+            content="sampleSubTab1.jsf"
+        />
+        <integration-point
+            id="samplesubtab2"
+            parentid="sampletabwithsubtab"
+            type="org.glassfish.admingui:serverInstTab"
+            priority="400"
+            content="sampleSubTab2.jsf"
+        />
+----
+
+These examples specify the following values:
+
+* The `id` values, `sampleTabWithSubTab`, `sampleSubTab1`, and
+`sampleSubTab2`, specify the integration point IDs for the tab and its
+sub-tabs.
+* The `parentId` of the new tab, `serverInstTabs`, specifies the tab set
+associated with the server instance. The `parentId` of the two sub-tabs,
+`sampleTabWithSubTab`, is the `id` value of this new tab.
+* The `type` value, `org.glassfish.admingui:serverInstTab`, specifies
+the integration point type for all the tabs as a tab associated with the
+server instance.
+* The `priority` values specify the order of the tabs within the tab
+set. This value is optional. In this case, the priority value for
+`sampleTabWithSubTab` is `300`, which is higher than the value for
+`sampleTab`. That means that `sampleTabWithSubTab` appears to the left
+of `sampleTab` in the Administration Console. The priority values for
+`sampleSubTab1` and `sampleSubTab2` are `300` and `400` respectively, so
+`sampleSubTab1` appears to the left of `sampleSubTab2`.
+* The `content` values, `sampleTabWithSubTab.jsf`, `sampleSubTab1.jsf`,
+and `sampleSubTab2.jsf`, specify the Jakarta Server Faces pages that display
+the tabs.
+
+[[ghovg]][[GSACG00159]][[creating-javaserver-faces-pages-for-your-tabs]]
+
+===== Creating Jakarta Server Faces Pages for Your Tabs
+
+A Jakarta Server Faces page for a tab uses the tag `sun:tab`. This tag
+provides all the capabilities of the Project Woodstock tag
+`webuijsf:tab`.
+
+[[GSACG00024]][[ghpnt]]
+Example 3-6 Example Jakarta Server Faces Page for a Tab
+
+In the example, the `sampleTab.jsf` file has the following content:
+
+[source,xml]
+----
+<sun:tab id="sampletab" immediate="true" text="Sample First Tab">
+    <!command
+        setSessionAttribute(key="serverInstTabs" value="sampleTab");
+        gf.redirect(page="#{request.contextPath}/page/tabPage.jsf?name=Sample%20First%20Tab");
+    />
+</sun:tab>
+----
+
+
+[NOTE]
+====
+In the actual file there are no line breaks in the `gf.redirect` value.
+====
+
+
+In your own Jakarta Server Faces pages, specify the attributes of this tag
+as follows:
+
+`id`::
+  A unique identifier for the tab, in this case `sampleTab`.
+`immediate`::
+  If set to true, event handling for this component should be handled
+  immediately (in the Apply Request Values phase) rather than waiting
+  until the Invoke Application phase.
+`text`::
+  The tab name that appears in the tab set.
+
+The JSF page displays tab content differently from the way the page for
+a node displays node content. It invokes two handlers for the `command`
+event: `setSessionAttribute` and `gf.redirect`. The `gf.redirect`
+handler has the same effect for a tab that the `url` attribute has for a
+node. It navigates to a simple Jakarta Server Faces page called
+`tabPage.jsf`, in the `src/main/resources/page/` directory, passing the
+text "Sample First Tab" to the page in a `name` parameter.
+
+The `sampleSubTab1.jsf` and `sampleSubTab2.jsf` files are almost
+identical to `sampleTab.jsf`. The most important difference is that each
+sets the session attribute `serverInstTabs` to the base name of the
+Jakarta Server Faces file that corresponds to that tab:
+
+[source]
+----
+setSessionAttribute(key="serverInstTabs" value="sampleTab");
+setSessionAttribute(key="serverInstTabs" value="sampleSubTab1");
+setSessionAttribute(key="serverInstTabs" value="sampleSubTab2");
+----
+
+[[ghmqw]][[GSACG00190]][[adding-a-task-to-the-common-tasks-page]]
+
+==== Adding a Task to the Common Tasks Page
+
+You can add either a single task or a group of tasks to the Common Tasks
+page of the Administration Console. To add a task or task group, use an
+integration point of type `org.glassfish.admingui:commonTask`.
+
+See link:#ghozn[Adding a Task Group to the Common Tasks Page] for
+information on adding a task group.
+
+[[GSACG00025]][[ghpox]]
+Example 3-7 Example Task Integration Point
+
+In the example `console-config.xml` file, the following
+`integration-point` element adds a task to the Deployment task group:
+
+[source,xml]
+----
+        <integration-point
+                id="samplecommontask"
+                parentid="deployment"
+                type="org.glassfish.admingui:commonTask"
+                priority="200"
+                content="sampleCommonTask.jsf"
+        />
+----
+
+This example specifies the following values:
+
+* The `id` value, `sampleCommonTask`, specifies the integration point ID.
+* The `parentId` value, `deployment`, specifies that the task is to be
+placed in the Deployment task group.
+* The `type` value, `org.glassfish.admingui:commonTask`, specifies the
+integration point type as a common task.
+* The `priority` value, `200`, specifies the order of the task within
+the task group.
+* The `content` value, `sampleCommonTask.jsf`, specifies the JavaServer
+Faces page that displays the task.
+
+[[ghoeu]][[GSACG00160]][[creating-a-javaserver-faces-page-for-your-task]]
+
+===== Creating a Jakarta Server Faces Page for Your Task
+
+A Jakarta Server Faces page for a task uses the tag `sun:commonTask`.
+This tag provides all the capabilities of the Project Woodstock tag `webuijsf:commonTask`.
+
+[[GSACG00026]][[gjkgd]]
+Example 3-8 Example Jakarta Server Faces Page for a Task
+
+In the example, the `sampleCommonTask.jsf` file has the following
+content:
+
+[source,xml]
+----
+<sun:commonTask
+        text="Sample Application Page"
+        toolTip="Sample Application Page"
+        onClick="return admingui.woodstock.commonTaskHandler('treeForm:tree:applications:ejb',
+        '#{request.contextPath}/sample/page/testPage.jsf?name=Sample%20Application%20Page');">
+</sun:commonTask>
+----
+
+
+[NOTE]
+====
+In the actual file, there is no line break in the `onClick` attribute value.
+====
+
+
+This file uses the `sun:commonTask` tag to specify the task. In your own
+Jakarta Server Faces pages, specify the attributes of this tag as follows:
+
+`text`::
+  The task name that appears on the Common Tasks page.
+`toolTip`::
+  The text that appears when a user places the mouse cursor over the
+  task name.
+`onClick`::
+  Scripting code that is to be executed when a user clicks the task
+  name.
+
+[[ghozn]][[GSACG00191]][[adding-a-task-group-to-the-common-tasks-page]]
+
+==== Adding a Task Group to the Common Tasks Page
+
+You can add a new group of tasks to the Common Tasks page to display the
+most important tasks for your add-on component. To add a task group, use
+an integration point of type `org.glassfish.admingui:commonTask`.
+
+[[GSACG00027]][[ghplk]]
+Example 3-9 Example Task Group Integration Point
+
+In the example `console-config.xml` file, the following
+`integration-point` element adds a new task group to the Common Tasks
+page:
+
+[source,xml]
+----
+       <integration-point
+            id="samplegroup"
+            parentid="commontaskssection"
+            type="org.glassfish.admingui:commonTask"
+            priority="500"
+            content="sampleTaskGroup.jsf"
+        />
+----
+
+This example specifies the following values:
+
+* The `id` value, `sampleGroup`, specifies the integration point ID.
+* The `parentId` value, `commonTasksSection`, specifies that the task
+group is to be placed on the Common Tasks page.
+* The `type` value, `org.glassfish.admingui:commonTask`, specifies the
+integration point type as a common task.
+* The `priority` value, `500`, specifies the order of the task group on
+the Common Tasks page. The low value places it at the end of the page.
+* The `content` value, `sampleTaskGroup.jsf`, specifies the JavaServer
+Faces page that displays the task.
+
+[[ghoya]][[GSACG00161]][[creating-a-javaserver-faces-page-for-your-task-group]]
+
+===== Creating a Jakarta Server Faces Page for Your Task Group
+
+A Jakarta Server Faces page for a task group uses the tag
+`sun:commonTasksGroup`. This tag provides all the capabilities of the
+Project Woodstock tag `webuijsf:commonTasksGroup`.
+
+[[GSACG00028]][[ghpqe]]
+Example 3-10 Example Jakarta Server Faces Page for a Task Group
+
+In the example, the `sampleTaskGroup.jsf` file has the following
+content:
+
+[source,xml]
+----
+<sun:commonTasksGroup title="My Own Sample Group">
+    <sun:commonTask
+            text="Go To Sample Resource"
+            toolTip="Go To Sample Resource"
+            onClick="return admingui.woodstock.commonTaskHandler('form:tree:resources:treeNode1',
+            '#{request.contextPath}/sample/page/testPage.jsf?name=Sample%20Resource%20Page');">
+    </sun:commonTask>
+    <sun:commonTask
+            text="Sample Configuration"
+            toolTip="Go To Sample Configuration"
+            onClick="return admingui.woodstock.commonTaskHandler('form:tree:configuration:sampleConfigNode',
+            '#{request.contextPath}/sample/page/testPage.jsf?name=Sample%20Configuration%20Page');">
+    </sun:commonTask>
+</sun:commonTasksGroup>
+----
+
+
+[NOTE]
+====
+In the actual file, there are no line breaks in the `onClick` attribute values.
+====
+
+
+This file uses the `sun:commonTasksGroup` tag to specify the task group,
+and two `sun:commonTask` tags to specify the tasks in the task group.
+The `sun:commonTasksGroup` tag has only one attribute, `title`, which
+specifies the name of the task group.
+
+[[ghmrg]][[GSACG00192]][[adding-content-to-a-page]]
+
+==== Adding Content to a Page
+
+You can add content for your add-on component to an existing top-level
+page, such as the Configuration page or the Resources page.
+To add content to one of these pages, use an integration point of type
+`org.glassfish.admingui:configuration` or `org.glassfish.admingui:resources`.
+
+[[GSACG00029]][[ghpnu]]
+Example 3-11 Example Resources Page Implementation Point
+
+In the example `console-config.xml` file, the following
+`integration-point` element adds new content to the top-level Resources page:
+
+[source,xml]
+----
+        <integration-point
+                id="sampleresourcelink"
+                parentid="propsheetsection"
+                type="org.glassfish.admingui:resources"
+                priority="100"
+                content="sampleResourceLink.jsf"
+        />
+----
+
+This example specifies the following values:
+
+* The `id` value, `sampleResourceLink`, specifies the integration point ID.
+* The `parentId` value, `propSheetSection`, specifies that the content
+is to be a section of a property sheet on the page.
+* The `type` value, `org.glassfish.admingui:resources`, specifies the
+integration point type as the Resources page.
++
+To add content to the Configuration page, specify the `type` value as
+`org.glassfish.admingui:configuration`.
+* The `priority` value, `100`, specifies the order of the content on the
+Resources page. The high value places it at the top of the page.
+* The `content` value, `sampleResourceLink.jsf`, specifies the
+JavaServer Faces page that displays the new content on the Resources page.
+
+Another `integration-point` element in the `console-config.xml` file
+places similar content on the Configuration page.
+
+[[ghpao]][[GSACG00162]][[creating-a-javaserver-faces-page-for-your-page-content]]
+
+===== Creating a Jakarta Server Faces Page for Your Page Content
+
+A Jakarta Server Faces page for page content often uses the tag
+`sun:property` to specify a property on a property sheet. This tag
+provides all the capabilities of the Project Woodstock tag
+`webuijsf:property`.
+
+[[GSACG00030]][[ghpoz]]
+Example 3-12 Example Jakarta Server Faces Page for a Resource Page Item
+
+In the example, the `sampleResourceLink.jsf` file has the following
+content:
+
+[source,xml]
+----
+<sun:property>
+    <sun:hyperlink
+        toolTip="Sample Resource"
+        url="/sample/page/testPage.jsf?name=Sample%20Resource%20Page">
+        <sun:image url="/resource/sample/images/sample.png" />
+        <sun:staticText text="Sample Resource" />
+    </sun:hyperlink>
+</sun:property>
+
+<sun:property>
+    <sun:hyperlink
+        toolTip="Another"
+        url="/sample/page/testPage.jsf?name=Another">
+        <sun:image url="/resource/sample/images/sample.png" />
+        <sun:staticText text="Another" />
+    </sun:hyperlink>
+</sun:property>
+----
+
+The file specifies two simple properties on the property sheet, one
+above the other. Each consists of a `sun:hyperlink` element (a link to a
+URL). Within each `sun:hyperlink` element is nested a `sun:image`
+element, specifying an image, and a `sun:staticText` element, specifying
+the text to be placed next to the image.
+
+Each `sun:hyperlink` element uses a `toolTip` attribute and a `url`
+attribute. Each `url` attribute references the `testPage.jsf` file that
+is used elsewhere in the example, specifying different content for the
+`name` parameter.
+
+You can use many other kinds of user interface elements within a
+`sun:property` element.
+
+[[ghmqe]][[GSACG00193]][[adding-a-page-to-the-administration-console]]
+
+==== Adding a Page to the Administration Console
+
+Your add-on component may require new configuration tasks. In addition
+to implementing commands that accomplish these tasks (see
+link:extending-asadmin.html#ghmrd[Chapter 4, "Extending the `asadmin`
+Utility"]), you can provide property sheets that enable users to
+configure your component or to perform tasks such as creating and
+editing resources for it.
+
+[[GSACG00031]][[ghple]]
+Example 3-13 Example Jakarta Server Faces Page for a Property Sheet
+
+Most of the user interface features used in the example reference the
+file `testPage.jsf` or (for tabs) the file `tabPage.jsf`. Both files are
+in the `src/main/resources/page/` directory. The `testPage.jsf` file
+looks like this:
+
+[source]
+----
+<!composition template="/templates/default.layout" guiTitle="TEST Sample Page Title">
+<!define name="content">
+<sun:form id="propertyform">
+
+<sun:propertySheet id="propertysheet">
+    <sun:propertySheetSection id="propertysection">
+       <sun:property id="prop1" labelAlign="left" noWrap="true"
+                     overlapLabel="false" label="Test Page Name:">
+            <sun:staticText text="$pageSession{pageName}">
+                <!beforeCreate
+                    getRequestValue(key="name" value=>$page{pageName});
+                />
+            </sun:staticText>
+        </sun:property>
+    </sun:propertySheetSection>
+</sun:propertySheet>
+<sun:hidden id="helpkey" value="" />
+
+</sun:form>
+</define>
+</composition>
+----
+
+The page uses the `composition` directive to specify that the page uses
+the `default.layout` template and to specify a page title. The page uses
+additional directives, events, and tags to specify its content.
+
+[[ghmqi]][[GSACG00102]][[adding-internationalization-support]]
+
+=== Adding Internationalization Support
+
+To add internationalization support for your add-on component to the
+Administration Console, you can place an event and handler like the
+following at the top of your page:
+
+[source,xml]
+----
+<!initPage
+    setResourceBundle(key="yourI18NKey" bundle="bundle.package.BundleName")
+/>
+----
+
+Replace the values `yourI18NKey` and `bundle.package.BundleName` with
+appropriate values for your component.
+
+[[ghmqg]][[GSACG00103]][[changing-the-theme-or-brand-of-the-administration-console]]
+
+=== Changing the Theme or Brand of the Administration Console
+
+To change the theme or brand of the Administration Console for your
+add-on component, use the integration point type
+`org.glassfish.admingui:customtheme`. This integration point affects the
+Cascading Style Sheet (CSS) files and images that are used in the
+Administration Console.
+
+[[GSACG00032]][[ghpls]]
+Example 3-14 Example Custom Theme Integration Point
+
+For example, the following integration point specifies a custom theme:
+
+[source,xml]
+----
+        <integration-point
+                id="myownbrand"
+                type="org.glassfish.admingui:customtheme"
+                priority="2"
+                content="myOwnBrand.properties"
+        />
+----
+
+The `priority` attribute works differently when you specify it in a
+branding integration point from the way it works in other integration
+points. You can place multiple branding add-on components in the
+`modules` directory, but only one theme can be applied to the
+Administration Console. The `priority` attribute determines which theme
+is used. Specify a value from 1 to 100; the lower the number, the higher
+the priority. The integration point with the highest priority will be
+used.
+
+Additional integration point types also affect the theme or brand of the
+Administration Console:
+
+`org.glassfish.admingui:masthead`::
+  Specifies the name and location of the include masthead file, which
+  can be customized with a branding image. This include file will be
+  integrated on the masthead of the Administration Console.
+`org.glassfish.admingui:loginimage`::
+  Specifies the name and location of the include file containing the
+  branding login image code that will be integrated with the login page
+  of the Administration Console.
+`org.glassfish.admingui:loginform`::
+  Specifies the name and location of the include file containing the
+  customized login form code. This code also contains the login
+  background image used for the login page for the Administration
+  Console.
+`org.glassfish.admingui:versioninfo`::
+  Specifies the name and location of the include file containing the
+  branding image that will be integrated with the content of the version
+  popup window.
+
+[[GSACG00033]][[ghpla]]
+Example 3-15 Example of Branding Integration Points
+
+For example, you might specify the following integration points. The
+content for each integration point is defined in an include file.
+
+[source,xml]
+----
+       <integration-point
+               id="myownbrandmast"
+               type="org.glassfish.admingui:masthead"
+               priority="80"
+               content="branding/masthead.inc"
+       />
+       <integration-point
+               id="myownbrandlogimg"
+               type="org.glassfish.admingui:loginimage"
+               priority="80"
+               content="branding/loginimage.inc"
+       />
+       <integration-point
+               id="myownbrandlogfm"
+               type="org.glassfish.admingui:loginform"
+               priority="80"
+               content="branding/loginform.inc"
+       />
+       <integration-point
+               id="myownbrandversinf"
+               type="org.glassfish.admingui:versioninfo"
+               priority="80"
+               content="branding/versioninfo.inc"
+       />
+----
+
+To provide your own CSS and images to modify the global look and feel of
+the entire application (not just the Administration Console), use the
+theming feature of https://github.com/eclipse-ee4j/glassfish-woodstock[Project
+Woodstock] (`https://github.com/eclipse-ee4j/glassfish-woodstock`). Create a theme JAR
+file with all the CSS properties and image files that are required by
+your Woodstock component. Use a script provided by the Woodstock project
+to clone an existing theme, then modify the files and properties as
+necessary. Once you have created the theme JAR file, place it in the
+`WEB-INF/lib` directory of the Administration Console so that the
+Woodstock theme component will load the theme. In addition, edit the
+properties file specified by your integration point
+(`MyOwnBrand.properties`, for example) to specify the name and version
+of your theme.
+
+[[ghpkz]][[GSACG00104]][[creating-an-integration-point-type]]
+
+=== Creating an Integration Point Type
+
+If your add-on component provides new content that you would like other
+people to extend, you may define your own integration point types. For
+example, if you add a new page that provides tabs of monitoring
+information, you might want to allow others to add their own tabs to
+complement your default tabs. This feature enables your page to behave
+like the existing Administration Console pages that you or others can
+extend.
+
+[[sthref4]][[to-create-an-integration-point-type]]
+
+==== To Create an Integration Point Type
+
+1. Decide on the name of your integration point type.
++
+The integration point type must be a unique identifier. You might use
+the package name of your integration point, with a meaningful name
+appended to the end, as in the following example:
++
+[source]
+----
+org.company.project:myMonitoringTabs
+----
+
+2. After you have an integration point ID, use handlers to insert the
+integration point implementation(s).
++
+Include code like the following below the place in your Jakarta Server Faces
+page where you would like to enable others to add their integration
+point implementations:
++
+[source]
+----
+<event>
+    <!afterCreate
+        getUIComponent(clientid="clientid:of:root"
+                       component=>$attribute{rootComp});
+        includeIntegrations(type="org.company.project:myMonitoringTabs"
+                            root="#{rootComp}");
+    />
+</event>
+----
+Change `clientId:of:root` to match the `clientId` of the outermost
+component in which you want others to be able to add their content (in
+this example, the tab set is the most likely choice). Also include your
+integration point ID in place of `org.company.project:myMonitoringTabs`.
+If you omit the `root` argument to `includeIntegrations`, all components
+on the entire page can be used for the `parentId` of the integration
+points.
+
diff --git a/docs/add-on-component-development-guide/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png b/docs/add-on-component-development-guide/src/main/asciidoc/img/eclipse_foundation_logo_tiny.png
similarity index 100%
rename from docs/add-on-component-development-guide/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png
rename to docs/add-on-component-development-guide/src/main/asciidoc/img/eclipse_foundation_logo_tiny.png
Binary files differ
diff --git a/docs/add-on-component-development-guide/src/main/asciidoc/integration-point-reference.adoc b/docs/add-on-component-development-guide/src/main/asciidoc/integration-point-reference.adoc
new file mode 100644
index 0000000..e64c4e1
--- /dev/null
+++ b/docs/add-on-component-development-guide/src/main/asciidoc/integration-point-reference.adoc
@@ -0,0 +1,400 @@
+type=page
+status=published
+title=Integration Point Reference
+prev=packaging-integrating-delivering.html
+~~~~~~
+
+= Integration Point Reference
+
+[[GSACG00010]][[ghmrp]]
+
+
+[[a-integration-point-reference]]
+== Integration Point Reference
+
+This appendix provides reference information about integration points,
+which are described in
+link:extending-the-admin-console.html#ghmrb[Extending the Administration Console].
+Define an integration point for each user interface feature in the
+`console-config.xml` file for your add-on component.
+
+The following topics are addressed here:
+
+* link:#ghprc[Integration Point Attributes]
+* link:#ghmwa[`org.glassfish.admingui:navNode` Integration Point]
+* link:#gjkff[`org.glassfish.admingui:rightPanel` Integration Point]
+* link:#gjkfq[`org.glassfish.admingui:rightPanelTitle` Integration Point]
+* link:#ghpkh[`org.glassfish.admingui:serverInstTab` Integration Point]
+* link:#ghpit[`org.glassfish.admingui:commonTask` Integration Point]
+* link:#ghphz[`org.glassfish.admingui:configuration` Integration Point]
+* link:#ghpfm[`org.glassfish.admingui:resources` Integration Point]
+* link:#ghpiz[`org.glassfish.admingui:customtheme` Integration Point]
+* link:#ghppm[`org.glassfish.admingui:masthead` Integration Point]
+* link:#ghppk[`org.glassfish.admingui:loginimage` Integration Point]
+* link:#ghprk[`org.glassfish.admingui:loginform` Integration Point]
+* link:#ghpse[`org.glassfish.admingui:versioninfo` Integration Point]
+
+[[ghprc]][[GSACG00145]][[integration-point-attributes]]
+
+=== Integration Point Attributes
+
+For each `integration-point` element, specify the following attributes.
+Each attribute takes a string value.
+
+`id`::
+  An identifier for the integration point. The remaining sections of
+  this appendix do not provide details about specifying this attribute.
+`parentId`::
+  The ID of the integration point's parent.
+`type`::
+  The type of the integration point.
+`priority`::
+  A numeric value that specifies the relative ordering of integration
+  points with the same `parentId`. A lower number specifies a higher
+  priority (for example, 100 represents a higher priority than 400). You
+  may need to experiment in order to place the integration point where
+  you want it. This attribute is optional.
+`content`::
+  A relative path to the Jakarta Server Faces page that contains the content
+  to be integrated. Typically, the file contains a Jakarta Server Faces code
+  fragment that is incorporated into a page. The code fragment often
+  specifies a link to another Jakarta Server Faces page that appears when a
+  user clicks the link.
+
+[[ghmwa]][[GSACG00146]][[org.glassfish.adminguinavnode-integration-point]]
+
+=== `org.glassfish.admingui:navNode` Integration Point
+
+Use an `org.glassfish.admingui:navNode` integration point to insert a
+node in the Administration Console navigation tree. Specify the
+attributes and their content as follows.
+
+`type`::
+  `org.glassfish.admingui:navNode`, the left-hand navigation tree
+`parentId`::
+  The `id` value of the `navNode` that is the parent for this node.
+  The `parentId` can be any of the following:
++
+  `tree`;;
+    The root node of the entire navigation tree. Use this value to place
+    your node at the top level of the tree. You can then use the `id` of
+    this node to create additional nodes beneath it.
+  `registration`;;
+    The Registration node
+  `applicationServer`;;
+    The {productName} node
+  `applications`;;
+    The Applications node
+  `resources`;;
+    The Resources node
+  `configuration`;;
+    The Configuration node
+  `webContainer`;;
+    The Web Container node under the Configuration node
+  `httpService`;;
+    The HTTP Service node under the Configuration node
++
+[NOTE]
+====
+The `webContainer` and `httpService` nodes are available only if you
+installed the web container module for the Administration Console (the
+`console-web-gui.jar` OSGi bundle).
+====
+
+`priority`::
+  A numeric value that specifies the relative ordering of the node on
+  the tree, whether at the top level or under another node.
+`content`::
+  A relative path to the Jakarta Server Faces page that contains the content
+  to be integrated, or a URL to an external resource that returns the
+  appropriate data structure for inclusion.
+
+For an example, see link:extending-the-admin-console.html#ghpmb[Example 3-2].
+
+[[gjkff]][[GSACG00147]][[org.glassfish.adminguirightpanel-integration-point]]
+
+=== `org.glassfish.admingui:rightPanel` Integration Point
+
+Use an `org.glassfish.admingui:rightPanel` integration point to specify
+content for the right frame of the Administration Console. Specify the
+attributes and their content as follows.
+
+`type`::
+  `org.glassfish.admingui:rightPanel`
+`parentId`::
+  None.
+`priority`::
+  A numeric value that specifies the relative ordering. If multiple
+  plug-ins specify content for the right frame, the one with greater
+  priority will take precedence.
+`content`::
+  A path relative to the root of the plug-in JAR file to a file
+  containing the content for the right panel. Alternatively, it may
+  contain a full URL which will deliver the content for the right panel.
+
+[[gjkfq]][[GSACG00148]][[org.glassfish.adminguirightpaneltitle-integration-point]]
+
+=== `org.glassfish.admingui:rightPanelTitle` Integration Point
+
+Use an `org.glassfish.admingui:rightPanel` integration point to specify
+the title for the right frame of the Administration Console. Specify the
+attributes and their content as follows.
+
+`type`::
+  `org.glassfish.admingui:rightPanelTitle`
+`parentId`::
+  None.
+`priority`::
+  A numeric value that specifies the relative ordering. If multiple
+  plug-ins specify content for the right frame, the one with greater
+  priority will take precedence.
+`content`::
+  Specifies the title to display at the top of the right panel.
+
+[[ghpkh]][[GSACG00149]][[org.glassfish.adminguiserverinsttab-integration-point]]
+
+=== `org.glassfish.admingui:serverInstTab` Integration Point
+
+Use an `org.glassfish.admingui:serverInstTab` integration point to place
+an additional tab on the {productName} page of the Administration
+Console. Specify the attributes and their content as follows.
+
+`type`::
+  `org.glassfish.admingui:serverInstTab`
+`parentId`::
+  The `id` value of the tab set that is the parent for this tab. For a
+  top-level tab on this page, this value is `serverInstTabs`, the tab
+  set that contains the general information property pages for {productName}.
+  For a sub-tab, the value is the `id` value for the parent tab.
+`priority`::
+  A numeric value that specifies the relative ordering of the tab on the
+  page, whether at the top level or under another tab.
+`content`::
+  A relative path to the Jakarta Server Faces page that contains the content
+  to be integrated.
+  When you use this integration point, your Jakarta Server Faces page must
+  call the `setSessionAttribute` handler for the `command` event to set
+  the session variable of the `serverInstTabs` tab set to the `id` value
+  of your tab. For example, the file may have the following content:
++
+[source,xml]
+----
+<sun:tab id="sampletab" immediate="true" text="Sample First Tab">
+    <!command
+        setSessionAttribute(key="serverInstTabs" value="sampleTab");
+        gf.redirect(page="#{request.contextPath}/page/tabPage.jsf?name=Sample%20First%20Tab");
+    />
+</sun:tab>
+----
+  The `id` of the `sun:tab` custom tag must be the same as the `value`
+  argument of the `setSessionAttribute` handler.
+
+For examples, see link:extending-the-admin-console.html#ghplc[Example
+3-4] and link:extending-the-admin-console.html#ghplu[Example 3-5].
+
+[[ghpit]][[GSACG00150]][[org.glassfish.adminguicommontask-integration-point]]
+
+=== `org.glassfish.admingui:commonTask` Integration Point
+
+Use an `org.glassfish.admingui:commonTask` integration point to place a
+new task or task group on the Common Tasks page of the Administration
+Console. Specify the attributes and their content as follows.
+
+`type`::
+  `org.glassfish.admingui:commonTask`
+`parentId`::
+  If you are adding a task group, the `id` value of the Common Tasks
+  page, which is `commonTasksSection`.
+  If you are adding a single task, the `id` value of the task group that
+  is the parent for this tab, such as `deployment` (for the Deployment
+  group).
+`priority`::
+  A numeric value that specifies the relative ordering of the tab on the
+  page, whether at the top level or under another tab.
+`content`::
+  A relative path to the Jakarta Server Faces page that contains the content
+  to be integrated.
+
+For examples, see link:extending-the-admin-console.html#ghpox[Example
+3-7] and link:extending-the-admin-console.html#ghplk[Example 3-9].
+
+[[ghphz]][[GSACG00151]][[org.glassfish.adminguiconfiguration-integration-point]]
+
+=== `org.glassfish.admingui:configuration` Integration Point
+
+Use an `org.glassfish.admingui:configuration` integration point to add a
+component to the Configuration page of the Administration Console.
+Typically, you add a link to the property sheet section of this page.
+Specify the attributes and their content as follows.
+
+`type`::
+  `org.glassfish.admingui:configuration`
+`parentId`::
+  The `id` value of the property sheet for the Configuration page. This
+  value is `propSheetSection`, the section that contains the property
+  definitions for the Configuration page.
+`priority`::
+  A numeric value that specifies the relative ordering of the item on
+  the Configuration page.
+`content`::
+  A relative path to the Jakarta Server Faces page that contains the content
+  to be integrated.
+
+[[ghpfm]][[GSACG00152]][[org.glassfish.adminguiresources-integration-point]]
+
+=== `org.glassfish.admingui:resources` Integration Point
+
+Use an `org.glassfish.admingui:resources` integration point to add a
+component to the Resources page of the Administration Console.
+Typically, you add a link to the property sheet section of this page.
+Specify the attributes and their content as follows.
+
+`type`::
+  `org.glassfish.admingui:resources`
+`parentId`::
+  The `id` value of the property sheet for the Resources page. This
+  value is `propSheetSection`, the section that contains the property
+  definitions for the Resources page.
+`priority`::
+  A numeric value that specifies the relative ordering of the item on
+  the Resources page.
+`content`::
+  A relative path to the Jakarta Server Faces page that contains the content
+  to be integrated.
+
+For an example, see link:extending-the-admin-console.html#ghpnu[Example
+3-11].
+
+[[ghpiz]][[GSACG00153]][[org.glassfish.adminguicustomtheme-integration-point]]
+
+=== `org.glassfish.admingui:customtheme` Integration Point
+
+Use an `org.glassfish.admingui:customtheme` integration point to add
+your own branding to the Administration Console. Specify the attributes
+and their content as follows. Do not specify a `parentId` attribute for
+this integration point.
+
+`type`::
+  `org.glassfish.admingui:customtheme`
+`priority`::
+  A numeric value that specifies the relative ordering of the item in
+  comparison to other themes. This value must be between 1 and 100. The
+  theme with the smallest number is used first.
+`content`::
+  The name of the properties file that contains the key/value pairs that
+  will be used to access your theme JAR file. You must specify the
+  following keys:
+  `com.sun.webui.theme.DEFAULT_THEME`;;
+    Specifies the theme name for the theme that this application may
+    depend on.
+  `com.sun.webui.theme.DEFAULT_THEME_VERSION`;;
+    Specifies the theme version this application may depend on.
++
+For example, the properties file for the default Administration Console brand contains the following:
++
+[source]
+----
+com.sun.webui.theme.DEFAULT_THEME=suntheme
+com.sun.webui.theme.DEFAULT_THEME_VERSION=4.3
+----
+
+For an example, see link:extending-the-admin-console.html#ghpls[Example
+3-14].
+
+[[ghppm]][[GSACG00154]][[org.glassfish.adminguimasthead-integration-point]]
+
+=== `org.glassfish.admingui:masthead` Integration Point
+
+Use an `org.glassfish.admingui:masthead` integration point to specify
+the name and location of the include masthead file, which can be
+customized with a branding image. This include file will be integrated
+on the masthead of the Administration Console. Specify the attributes
+and their content as follows. Do not specify a `parentId` attribute for
+this integration point.
+
+`type`::
+  `org.glassfish.admingui:masthead`
+`priority`::
+  A numeric value that specifies the relative ordering of the item in
+  comparison to other items of this type. This value must be between 1
+  and 100. The theme with the smallest number is used first.
+`content`::
+  A file that contains the content, typically a file that is included in
+  a Jakarta Server Faces page.
+
+For an example, see link:extending-the-admin-console.html#ghpla[Example
+3-15].
+
+[[ghppk]][[GSACG00155]][[org.glassfish.adminguiloginimage-integration-point]]
+
+=== `org.glassfish.admingui:loginimage` Integration Point
+
+Use an `org.glassfish.admingui:loginimage` integration point to specify
+the name and location of the include file containing the branding login
+image code that will be integrated with the login page of the
+Administration Console. Specify the attributes and their content as
+follows. Do not specify a `parentId` attribute for this integration
+point.
+
+`type`::
+  `org.glassfish.admingui:loginimage`
+`parentId`::
+  None; a login image does not have a parent ID.
+`priority`::
+  A numeric value that specifies the relative ordering of the item in
+  comparison to other items of this type. This value must be between 1
+  and 100. The theme with the smallest number is used first.
+`content`::
+  A file that contains the content, typically a file that is included in
+  a Jakarta Server Faces page.
+
+For an example, see link:extending-the-admin-console.html#ghpla[Example
+3-15].
+
+[[ghprk]][[GSACG00156]][[org.glassfish.adminguiloginform-integration-point]]
+
+=== `org.glassfish.admingui:loginform` Integration Point
+
+Use an `org.glassfish.admingui:loginform` integration point to specify
+the name and location of the include file containing the customized
+login form code. This code also contains the login background image used
+for the login page for the Administration Console. Specify the
+attributes and their content as follows. Do not specify a `parentId`
+attribute for this integration point.
+
+`type`::
+  `org.glassfish.admingui:loginform`
+`priority`::
+  A numeric value that specifies the relative ordering of the item in
+  comparison to other items of this type. This value must be between 1
+  and 100. The theme with the smallest number is used first.
+`content`::
+  A file that contains the content, typically a file that is included in
+  a Jakarta Server Faces page.
+
+For an example, see link:extending-the-admin-console.html#ghpla[Example
+3-15].
+
+[[ghpse]][[GSACG00157]][[org.glassfish.adminguiversioninfo-integration-point]]
+
+=== `org.glassfish.admingui:versioninfo` Integration Point
+
+Use an `org.glassfish.admingui:versioninfo` integration point to specify
+the name and location of the include file containing the branding image
+that will be integrated with the content of the version popup window.
+Specify the attributes and their content as follows. Do not specify a
+`parentId` attribute for this integration point.
+
+`type`::
+  `org.glassfish.admingui:versioninfo`
+`priority`::
+  A numeric value that specifies the relative ordering of the item in
+  comparison to other items of this type. This value must be between 1
+  and 100. The theme with the smallest number is used first.
+`content`::
+  A file that contains the content, typically a file that is included in
+  a Jakarta Server Faces page.
+
+For an example, see link:extending-the-admin-console.html#ghpla[Example
+3-15].
+
diff --git a/docs/add-on-component-development-guide/src/main/asciidoc/introduction.adoc b/docs/add-on-component-development-guide/src/main/asciidoc/introduction.adoc
new file mode 100644
index 0000000..f7329d1
--- /dev/null
+++ b/docs/add-on-component-development-guide/src/main/asciidoc/introduction.adoc
@@ -0,0 +1,280 @@
+type=page
+status=published
+title=Introduction to the Development Environment for {productName} Add-On Components
+next=writing-hk2-components.html
+prev=preface.html
+~~~~~~
+
+= Introduction to the Development Environment for {productName} Add-On Components
+
+[[GSACG00001]][[ghmlv]]
+
+
+[[introduction-to-the-development-environment-for-eclipse-glassfish-add-on-components]]
+== Introduction to the Development Environment for {productName} Add-On Components
+
+{productName} enables an external vendor such as
+an independent software vendor (ISV), original equipment manufacturer
+(OEM), or system integrator to incorporate {productName} into a new
+product with the vendor's own brand name. External vendors can extend
+the functionality of {productName} by developing add-on components
+for {productName}. {productName} provides interfaces to enable
+add-on components to be configured, managed, and monitored through
+existing {productName} tools such as the Administration Console and
+the `asadmin` utility.
+
+The following topics are addressed here:
+
+* link:#ghmje[{productName} Modular Architecture and Add-On
+Components]
+* link:#ghmrf[OSGi Alliance Module Management Subsystem]
+* link:#ghmnq[Hundred-Kilobyte Kernel]
+* link:#ghmns[Overview of the Development Process for an Add-On
+Component]
+
+[[ghmje]][[GSACG00087]][[glassfish-server-modular-architecture-and-add-on-components]]
+
+=== {productName} Modular Architecture and Add-On Components
+
+{productName} has a modular architecture in which the features of
+{productName} are provided by a consistent set of components that
+interact with each other. Each component provides a small set of
+functionally related features.
+
+The modular architecture of {productName} enables users to download
+and install only the components that are required for the applications
+that are being deployed. As a result, start-up times, memory
+consumption, and disk space requirements are all minimized.
+
+The modular architecture of {productName} enables you to extend the
+basic functionality of {productName} by developing add-on components.
+An add-on component is an encapsulated definition of reusable code that
+has the following characteristics:
+
+* The component provides a set of Java classes.
+* The component offers services and public interfaces.
+* The component implements the public interfaces with a set of private
+classes.
+* The component depends on other components.
+
+Add-on components that you develop interact with {productName} in the
+same way as components that are supplied in {productName}
+distributions.
+
+You can create and offer new or updated add-on components at any time.
+{productName} administrators can install add-on components and update
+or remove installed components after {productName} is installed. For
+more information, see "link:administration-guide.html#GSADG00014[Extending and Updating {productName}]" in {productName} Administration Guide.
+
+[[ghmrf]][[GSACG00088]][[osgi-alliance-module-management-subsystem]]
+
+=== OSGi Alliance Module Management Subsystem
+
+To enable components to be added when required, {productName}
+provides a lightweight and extensible kernel that uses the module
+management subsystem from the http://www.osgi.org/[OSGi Alliance]
+(`http://www.osgi.org/`). Any {productName} component that plugs in
+to this kernel must be implemented as an OSGi bundle. To enable an
+add-on component to plug in to the {productName} kernel in the same
+way as other components, package the component as an OSGi bundle. For
+more information, see
+link:packaging-integrating-delivering.html#ghpun[Packaging an Add-On
+Component].
+
+The default OSGi module management subsystem in {productName} is the
+Apache Felix http://felix.apache.org[OSGi framework]
+(`http://felix.apache.org`). However, the {productName} kernel uses
+only the http://www.osgi.org/Release4/HomePage[OSGi Service Platform
+Release 4] (`http://www.osgi.org/Release4/HomePage`) API. Therefore,
+{productName} supports other OSGi module management subsystems that
+are compatible with the OSGi Service Platform Release 4 API.
+
+[[ghmnq]][[GSACG00089]][[hundred-kilobyte-kernel]]
+
+=== Hundred-Kilobyte Kernel
+
+The https://github.com/eclipse-ee4j/glassfish-hk2[Hundred-Kilobyte Kernel (HK2)]
+(`https://github.com/eclipse-ee4j/glassfish-hk2`) is the lightweight and extensible kernel
+of {productName}. HK2 consists of the following technologies:
+
+* Module subsystem. The HK2 module subsystem provides isolation between
+components of the {productName}. The HK2 module subsystem is
+compatible with existing technologies such as the OSGi framework.
+* Component model. The HK2 component model eases the development of
+components that are also services. {productName} discovers these
+components automatically and dynamically. HK2 components use injection
+of dependencies to express dependencies on other components. {productName} provides two-way mappings between the services of an HK2
+component and OSGi services.
+
+For more information, see link:writing-hk2-components.html#ghmna[Writing
+HK2 Components].
+
+[[ghmns]][[GSACG00090]][[overview-of-the-development-process-for-an-add-on-component]]
+
+=== Overview of the Development Process for an Add-On Component
+
+To ensure that an add-on component behaves identically to components
+that are supplied in {productName} distributions, the component must
+meet the following requirements:
+
+* If the component generates management data, configuration data, or
+monitoring data, it must provide that data to other {productName}
+components in the same way as other {productName} components.
+* If the component generates management data, configuration data, or
+monitoring data, it must provide that data to users through {productName} administrative interfaces such as Administration Console and the
+`asadmin` utility.
+* The component must be packaged and delivered as an OSGi bundle.
+
+To develop add-on components that meet these requirements, follow the
+development process that is described in the following sections:
+
+* link:#ghpqc[Writing HK2 Components]
+* link:#ghokn[Extending the Administration Console]
+* link:#ghohx[Extending the `asadmin` Utility]
+* link:#ghojs[Adding Monitoring Capabilities]
+* link:#gkahs[Adding Configuration Data for a Component]
+* link:#ghojq[Adding Container Capabilities]
+* link:#gktld[Creating a Session Persistence Module]
+* link:#ghoiu[Packaging and Delivering an Add-On Component]
+
+[[ghpqc]][[GSACG00173]][[writing-hk2-components]]
+
+==== Writing HK2 Components
+
+The Hundred-Kilobyte Kernel (HK2) is the lightweight and extensible
+kernel of {productName}. To interact with {productName}, add-on
+components plug in to this kernel. In the HK2 component model, the
+functions of an add-on component are declared through a contract-service
+implementation paradigm. An HK2 contract identifies and describes the
+building blocks or the extension points of an application. An HK2
+service implements an HK2 contract.
+
+For more information, see link:writing-hk2-components.html#ghmna[Writing
+HK2 Components].
+
+[[ghokn]][[GSACG00174]][[extending-the-administration-console]]
+
+==== Extending the Administration Console
+
+The Administration Console is a browser-based tool for administering
+{productName}. It features an easy-to-navigate interface and online
+help. Extending the Administration Console enables you to provide a
+graphical user interface for administering your add-on component. You
+can use any of the user interface features of the Administration
+Console, such as tree nodes, links on the Common Tasks page, tabs and
+sub-tabs, property sheets, and JavaServer Faces pages. Your add-on
+component implements a marker interface and provides a configuration
+file that describes how your customizations integrate with the
+Administration Console.
+
+For more information, see
+link:extending-the-admin-console.html#ghmrb[Extending the Administration
+Console].
+
+[[ghohx]][[GSACG00175]][[extending-the-asadmin-utility]]
+
+==== Extending the `asadmin` Utility
+
+The `asadmin` utility is a command-line tool for configuring and
+administering {productName}. Extending the `asadmin` utility enables
+you to provide administrative interfaces for an add-on component that
+are consistent with the interfaces of other {productName} components.
+A user can run `asadmin` subcommands either from a command prompt or
+from a script. For more information about the `asadmin` utility, see the
+link:reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] man page.
+
+For more information, see link:extending-asadmin.html#ghmrd[Extending the
+`asadmin` Utility].
+
+[[ghojs]][[GSACG00176]][[adding-monitoring-capabilities]]
+
+==== Adding Monitoring Capabilities
+
+Monitoring is the process of reviewing the statistics of a system to
+improve performance or solve problems. By monitoring the state of
+components and services that are deployed in the {productName},
+system administrators can identify performance bottlenecks, predict
+failures, perform root cause analysis, and ensure that everything is
+functioning as expected. Monitoring data can also be useful in
+performance tuning and capacity planning.
+
+An add-on component typically generates statistics that the {productName} can gather at run time. Adding monitoring capabilities enables an
+add-on component to provide statistics to {productName} in the same
+way as components that are supplied in {productName} distributions.
+As a result, system administrators can use the same administrative
+interfaces to monitor statistics from any installed {productName}
+component, regardless of the origin of the component.
+
+For more information, see
+link:adding-monitoring-capabilities.html#ghmos[Adding Monitoring
+Capabilities].
+
+[[gkahs]][[GSACG00177]][[adding-configuration-data-for-a-component]]
+
+==== Adding Configuration Data for a Component
+
+The configuration data of a component determines the characteristics and
+runtime behavior of a component. {productName} provides interfaces to
+enable an add-on component to store its configuration data in the same
+way as other {productName} components. These interfaces are similar
+to interfaces that are defined in
+https://jakarta.ee/specifications/xml-binding/3.0/[Jakarta XML Binding 3.0]
+(`https://jakarta.ee/specifications/xml-binding/3.0/`). By using these interfaces to
+store configuration data, you ensure that the add-on component is fully
+integrated with {productName}. As a result, administrators can
+configure an add-on component in the same way as they can configure
+other {productName} components.
+
+For more information, see
+link:adding-configuration-data.html#gjlpe[Adding Configuration Data for a
+Component].
+
+[[ghojq]][[GSACG00178]][[adding-container-capabilities]]
+
+==== Adding Container Capabilities
+
+Applications run on {productName} in containers. {productName}
+enables you to create containers that extend or replace the existing
+containers of {productName}. Adding container capabilities enables
+you to run new types of applications and to deploy new archive types in
+{productName}.
+
+For more information, see
+link:adding-container-capabilities.html#ghmon[Adding Container
+Capabilities].
+
+[[gktld]][[GSACG00179]][[creating-a-session-persistence-module]]
+
+==== Creating a Session Persistence Module
+
+{productName} enables you to create a session persistence module in
+the web container for high availability-related functionality by
+implementing the `PersistenceStrategyBuilder` interface . Using the
+`PersistenceStrategyBuilder` interface in an HK2 service makes the
+session manager extensible because you can implement a new persistence
+type without having to modify the web container code.
+
+For information about other high-availability, session persistence
+solutions, see "link:ha-administration-guide/session-persistence-and-failover.html#GSHAG00011[Configuring High Availability Session
+Persistence and Failover]" in {productName} High
+Availability Administration Guide.
+
+For more information, see
+link:session-persistence-modules.html#gkmhj[Creating a Session
+Persistence Module].
+
+[[ghoiu]][[GSACG00180]][[packaging-and-delivering-an-add-on-component]]
+
+==== Packaging and Delivering an Add-On Component
+
+Packaging an add-on component enables the component to interact with the
+{productName} kernel in the same way as other components. Integrating
+a component with {productName} enables {productName} to discover
+the component at runtime. If an add-on component is an extension or
+update to existing installations of {productName}, deliver the
+component through Update Tool.
+
+For more information, see
+link:packaging-integrating-delivering.html#ghmxp[Packaging, Integrating,
+and Delivering an Add-On Component].
+
diff --git a/docs/add-on-component-development-guide/src/main/asciidoc/loe.adoc b/docs/add-on-component-development-guide/src/main/asciidoc/loe.adoc
new file mode 100644
index 0000000..d2e4b08
--- /dev/null
+++ b/docs/add-on-component-development-guide/src/main/asciidoc/loe.adoc
@@ -0,0 +1,130 @@
+type=page
+status=published
+title=List of Examples
+next=lot.html
+prev=toc.html
+~~~~~~
+
+= List of Examples
+
+[[list-of-examples]]
+== List of Examples
+
+* link:writing-hk2-components.html#ghoqv[2-1 Example Implementation of
+PostContruct and PreDestroy]
+* link:writing-hk2-components.html#ghquz[2-2 Example of Instantiation
+Cascading]
+* link:writing-hk2-components.html#ghoip[2-3 Example of the Optional
+Elements of the @Service Annotation]
+* link:writing-hk2-components.html#ghqsa[2-4 Example of the Maven Plug-In
+Configuration]
+* link:writing-hk2-components.html#ghoik[2-5 Example of META-INF/services
+File Generation]
+* link:extending-the-admin-console.html#ghosz[3-1 Example ConsoleProvider
+Implementation]
+* link:extending-the-admin-console.html#ghpmb[3-2 Example Tree Node
+Integration Point]
+* link:extending-the-admin-console.html#ghpmn[3-3 Example JavaServer
+Faces Page for a Tree Node]
+* link:extending-the-admin-console.html#ghplc[3-4 Example Tab Integration
+Point]
+* link:extending-the-admin-console.html#ghplu[3-5 Example Tab Set
+Integration Points]
+* link:extending-the-admin-console.html#ghpnt[3-6 Example JavaServer
+Faces Page for a Tab]
+* link:extending-the-admin-console.html#ghpox[3-7 Example Task
+Integration Point]
+* link:extending-the-admin-console.html#gjkgd[3-8 Example JavaServer
+Faces Page for a Task]
+* link:extending-the-admin-console.html#ghplk[3-9 Example Task Group
+Integration Point]
+* link:extending-the-admin-console.html#ghpqe[3-10 Example JavaServer
+Faces Page for a Task Group]
+* link:extending-the-admin-console.html#ghpnu[3-11 Example Resources Page
+Implementation Point]
+* link:extending-the-admin-console.html#ghpoz[3-12 Example JavaServer
+Faces Page for a Resource Page Item]
+* link:extending-the-admin-console.html#ghple[3-13 Example JavaServer
+Faces Page for a Property Sheet]
+* link:extending-the-admin-console.html#ghpls[3-14 Example Custom Theme
+Integration Point]
+* link:extending-the-admin-console.html#ghpla[3-15 Example of Branding
+Integration Points]
+* link:extending-asadmin.html#ghrqq[4-1 Adding an asadmin Subcommand]
+* link:extending-asadmin.html#ghpuh[4-2 Adding Parameters to an asadmin
+Subcommand]
+* link:extending-asadmin.html#ghpvm[4-3 Adding Message Strings to an
+asadmin Subcommand]
+* link:extending-asadmin.html#ghrfh[4-4 BrandingVersion.properties File
+for Changing the Brand in the {productName} CLI]
+* link:extending-asadmin.html#ghrnt[4-5 asadmin Subcommand With Empty
+execute Method]
+* link:extending-asadmin.html#ghrsi[4-6 asadmin Subcommand for Retrieving
+and Displaying Information]
+* link:extending-asadmin.html#gkbdf[4-7 asadmin Subcommand for Updating
+Configuration Data]
+* link:adding-monitoring-capabilities.html#ghprw[5-1 Defining an Event
+Provider by Writing a Java Class]
+* link:adding-monitoring-capabilities.html#gkajj[5-2 Defining an Event
+Provider by Writing an XML Fragment]
+* link:adding-monitoring-capabilities.html#gkaii[5-3 Manifest Entry for
+Event Providers That Are Defined as Java Classes]
+* link:adding-monitoring-capabilities.html#ghpus[5-4 Sending an Event]
+* link:adding-monitoring-capabilities.html#ghpsc[5-5 Representing a
+Component's Statistics in an Event Listener Class]
+* link:adding-monitoring-capabilities.html#ghpwu[5-6 Subscribing to
+Events From Event Provider Classes]
+* link:adding-monitoring-capabilities.html#ghpuu[5-7 Registering an Event
+Listener]
+* link:adding-monitoring-capabilities.html#ghpna[5-8 Event Provider
+Class]
+* link:adding-monitoring-capabilities.html#ghpmu[5-9 Bootstrap Class]
+* link:adding-monitoring-capabilities.html#ghpvw[5-10 Listener Class]
+* link:adding-monitoring-capabilities.html#ghpuc[5-11 MBean Interface]
+* link:adding-monitoring-capabilities.html#ghpwx[5-12 MBean
+Implementation]
+* link:adding-configuration-data.html#gjcne[6-1 Declaration of an
+Interface That Defines an Element]
+* link:adding-configuration-data.html#sthref7[6-2 Defining an Attribute
+of an Element]
+* link:adding-configuration-data.html#gjzjt[6-3 Declaring an Interface to
+Represent a Subelement]
+* link:adding-configuration-data.html#gjzkh[6-4 Identifying a Subelement
+to its Parent Element]
+* link:adding-configuration-data.html#gjrmp[6-5 Specifying a Range of
+Valid Values for an Integer]
+* link:adding-configuration-data.html#gjzkq[6-6 Specifying Regular
+Expression Matching]
+* link:adding-configuration-data.html#gkaba[6-7 XML Data Fragment]
+* link:adding-configuration-data.html#gkabo[6-8 Writing a Component's
+Initial Configuration Data to the domain.xml File]
+* link:adding-configuration-data.html#gjski[6-9 domain.xml File After
+Initialization]
+* link:adding-configuration-data.html#sthref9[6-10 Creating a Transaction
+to Update Configuration Data]
+* link:adding-configuration-data.html#gkamy[6-11 Parent Element
+Definition]
+* link:adding-configuration-data.html#gkamb[6-12 Subelement Definition]
+* link:adding-configuration-data.html#gkamk[6-13 XML Data Fragment for
+Initializing the greeter-container-config Element]
+* link:adding-container-capabilities.html#ghojg[7-1 Example
+Implementation of Container]
+* link:adding-container-capabilities.html#ghoiv[7-2 Example
+Implementation of Deployer]
+* link:adding-container-capabilities.html#gkamr[7-3 Annotation to Denote
+a Container's Component]
+* link:adding-container-capabilities.html#gkand[7-4 Application Container
+Class]
+* link:adding-container-capabilities.html#gkamm[7-5 Container Class]
+* link:adding-container-capabilities.html#gkalo[7-6 Deployer Class]
+* link:adding-container-capabilities.html#gkaks[7-7 Sniffer Class]
+* link:adding-container-capabilities.html#gkaki[7-8 Container Client
+Class]
+* link:adding-container-capabilities.html#gkalf[7-9 Component for
+Container Client]
+* link:adding-container-capabilities.html#gkaly[7-10 Deployment
+Descriptor for Container Client]
+* link:session-persistence-modules.html#sthref10[8-1 Implementing
+PersistenceStrategyBuilder With a Custom Web Session Manager]
+* link:session-persistence-modules.html#sthref11[8-2 Session Manager
+Configuration in the glassfish-web.xml File]
diff --git a/docs/add-on-component-development-guide/src/main/asciidoc/lot.adoc b/docs/add-on-component-development-guide/src/main/asciidoc/lot.adoc
new file mode 100644
index 0000000..e410d02
--- /dev/null
+++ b/docs/add-on-component-development-guide/src/main/asciidoc/lot.adoc
@@ -0,0 +1,14 @@
+type=page
+status=published
+title=List of Tables
+next=title.html
+prev=loe.html
+~~~~~~
+
+= List of Tables
+
+[[list-of-tables]]
+== List of Tables
+
+* link:adding-configuration-data.html#gjrlg[6-1 Commonly Used Annotations
+for Validating {productName} Configuration Data]
diff --git a/docs/add-on-component-development-guide/src/main/asciidoc/packaging-integrating-delivering.adoc b/docs/add-on-component-development-guide/src/main/asciidoc/packaging-integrating-delivering.adoc
new file mode 100644
index 0000000..7c465f0
--- /dev/null
+++ b/docs/add-on-component-development-guide/src/main/asciidoc/packaging-integrating-delivering.adoc
@@ -0,0 +1,71 @@
+type=page
+status=published
+title=Packaging, Integrating, and Delivering an Add-On Component
+next=integration-point-reference.html
+prev=session-persistence-modules.html
+~~~~~~
+
+= Packaging, Integrating, and Delivering an Add-On Component
+
+[[GSACG00009]][[ghmxp]]
+
+
+[[packaging-integrating-and-delivering-an-add-on-component]]
+== Packaging, Integrating, and Delivering an Add-On Component
+
+Packaging an add-on component enables the component to interact with the
+{productName} kernel in the same way as other components. Integrating
+a component with {productName} enables {productName} to discover
+the component at runtime. If an add-on component is an extension or
+update to existing installations of {productName}, deliver the
+component through Update Tool.
+
+The following topics are addressed here:
+
+* link:#ghpun[Packaging an Add-On Component]
+* link:#ghmne[Integrating an Add-On Component With {productName}]
+* link:#ghpuz[Delivering an Add-On Component Through Update Tool]
+
+[[ghpun]][[GSACG00142]][[packaging-an-add-on-component]]
+
+=== Packaging an Add-On Component
+
+To enable an add-on component to plug in to the {productName} kernel
+in the same way as other components, package the component as an OSGi
+bundle.
+
+A bundle is the unit of deployment in the OSGi module management
+subsystem. To package a component as an OSGi bundle, package the
+component's constituent files in a Java archive (JAR) file with
+appropriate manifest entries. The manifest entries provide information
+about the component that is required to enable the component to be
+plugged into the {productName} kernel, such as:
+
+* Name
+* Version
+* Dependencies
+* Capabilities
+
+[[ghmne]][[GSACG00143]][[integrating-an-add-on-component-with-glassfish-server]]
+
+=== Integrating an Add-On Component With {productName}
+
+Integrating an add-on component with {productName} enables {productName} to
+discover the component at runtime. To integrate an add-on
+component with {productName}, ensure that the JAR file that contains
+the component is copied to or installed in the as-install``/modules/`` directory.
+
+[[ghpuz]][[GSACG00144]][[delivering-an-add-on-component-through-update-tool]]
+
+=== Delivering an Add-On Component Through Update Tool
+
+If an add-on component is an extension or update to existing
+installations of {productName}, deliver the component through Update
+Tool. To deliver an add-on component through Update Tool, create an
+Image Packaging System (IPS) package to contain the component and add
+the package to a suitable IPS package repository.
+
+For information about how to create IPS packages, see the
+http://wikis.oracle.com/display/IpsBestPractices/[IPS best practices
+document] (`http://wikis.oracle.com/display/IpsBestPractices/`).
+
diff --git a/docs/add-on-component-development-guide/src/main/asciidoc/preface.adoc b/docs/add-on-component-development-guide/src/main/asciidoc/preface.adoc
new file mode 100644
index 0000000..6064458
--- /dev/null
+++ b/docs/add-on-component-development-guide/src/main/asciidoc/preface.adoc
@@ -0,0 +1,330 @@
+type=page
+status=published
+title=Preface
+next=introduction.html
+prev=title.html
+~~~~~~
+
+= Preface
+
+[[sthref2]]
+[[preface]]
+== Preface
+
+This document explains how to use published interfaces of
+{productName} to develop add-on components
+for {productName}.
+This document explains how to perform only those tasks that
+ensure that the add-on component is suitable for {productName}.
+
+This document is for software developers who are developing add-on
+components for {productName}. This document assumes that the
+developers are working with a distribution of {productName}. Access
+to the source code of the GlassFish project is not required to perform
+the tasks in this document. This document also assumes the ability to
+program in the Java language.
+
+This preface contains information about and conventions for the entire
+{productName} ({productName}) documentation set.
+
+{productName} 7 is developed through the GlassFish project
+open-source community at https://github.com/eclipse-ee4j/glassfish.
+The GlassFish project provides a structured process for developing the
+{productName} platform that makes the new features of the Jakarta EE
+platform available faster, while maintaining the most important feature
+of Jakarta EE: compatibility. It enables Java developers to access the
+{productName} source code and to contribute to the development of the
+{productName}.
+
+The following topics are addressed here:
+
+* link:#ghpbz[{productName} Documentation Set]
+* link:#giprl[Related Documentation]
+* link:#fwbkx[Typographic Conventions]
+* link:#fquvc[Symbol Conventions]
+* link:#ghpfg[Default Paths and File Names]
+
+[[GSACG00079]][[ghpbz]]
+
+[[glassfish-server-documentation-set]]
+=== {productName} Documentation Set
+
+The {productName} documentation set describes deployment planning and
+system installation. For an introduction to {productName}, refer to
+the books in the order in which they are listed in the following table.
+
+[width="100%",cols="<30%,<70%",options="header",]
+|===
+|Book Title |Description
+|link:release-notes.html#GSRLN[Release Notes] |Provides late-breaking information about
+the software and the documentation and includes a comprehensive,
+table-based summary of the supported hardware, operating system, Java
+Development Kit (JDK), and database drivers.
+
+|link:quick-start-guide.html#GSQSG[Quick Start Guide]
+|Explains how to get started with the {productName} product.
+
+|link:installation-guide.html#GSING[Installation Guide]
+|Explains how to install the software and its components.
+
+|link:upgrade-guide.html#GSUPG[Upgrade Guide]
+|Explains how to upgrade to the latest version of {productName}.
+This guide also describes differences between adjacent product releases and configuration
+options that can result in incompatibility with the product specifications.
+
+|link:deployment-planning-guide.html#GSPLG[Deployment Planning Guide]
+|Explains how to build a production deployment of {productName} that meets the requirements of
+your system and enterprise.
+
+|link:administration-guide.html#GSADG[Administration Guide]
+|Explains how to configure, monitor, and manage {productName} subsystems and components
+from the command line by using the link:reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] utility.
+Instructions for performing these tasks from the Administration Console are provided
+in the Administration Console online help.
+
+|link:security-guide.html#GSSCG[Security Guide]
+|Provides instructions for configuring and administering {productName} security.
+
+|link:application-deployment-guide.html#GSDPG[Application Deployment Guide]
+|Explains how to assemble and deploy applications to the {productName} and provides information
+about deployment descriptors.
+
+|link:application-development-guide.html#GSDVG[Application Development Guide]
+|Explains how to create and implement Java Platform, Enterprise Edition (Jakarta EE platform)
+applications that are intended to run on the {productName}.
+These applications follow the open Java standards model for Jakarta EE components
+and application programmer interfaces (APIs).
+This guide provides information about developer tools, security, and debugging.
+
+|link:add-on-component-development-guide.html#GSACG[Add-On Component Development Guide]
+|Explains how to use published interfaces of {productName} to develop add-on components
+for {productName}.
+This document explains how to perform only those tasks that ensure that the add-on component
+is suitable for {productName}.
+
+|link:embedded-server-guide.html#GSESG[Embedded Server Guide]
+|Explains how to run applications in embedded {productName} and to develop applications
+in which {productName} is embedded.
+
+|link:ha-administration-guide.html#GSHAG[High Availability Administration Guide]
+|Explains how to configure {productName} to provide higher availability and
+scalability through failover and load balancing.
+
+|link:performance-tuning-guide.html#GSPTG[Performance Tuning Guide]
+|Explains how to optimize the performance of {productName}.
+
+|link:troubleshooting-guide.html#GSTSG[Troubleshooting Guide]
+|Describes common problems that you might encounter when using {productName} and explains how to solve them.
+
+|link:error-messages-reference.html#GSEMR[Error Message Reference]
+|Describes error messages that you might encounter when using {productName}.
+
+|link:reference-manual.html#GSRFM[Reference Manual]
+|Provides reference information in man page format for {productName} administration commands, utility
+commands, and related concepts.
+
+|link:../openmq/mq-release-notes.html#GMRLN[Message Queue Release Notes]
+|Describes new features, compatibility issues, and existing bugs for Open Message Queue.
+
+|link:../openmq/mq-tech-over.html#GMTOV[Message Queue Technical Overview]
+|Provides an introduction to the technology, concepts, architecture, capabilities, and features of
+the Message Queue messaging service.
+
+|link:../openmq/mq-admin-guide.html#GMADG[Message Queue Administration Guide]
+|Explains how to set up and manage a Message Queue messaging system.
+
+|link:../openmq/mq-dev-guide-jmx.html#GMJMG[Message Queue Developer's Guide for JMX Clients]
+|Describes the application programming interface in Message Queue for
+programmatically configuring and monitoring Message Queue resources in
+conformance with the Java Management Extensions (JMX).
+
+|link:../openmq/mq-dev-guide-java.html#GMJVG[Message Queue Developer's Guide for Java Clients]
+|Provides information about concepts and procedures for developing Java messaging
+applications (Java clients) that work with {productName}.
+
+|link:../openmq/mq-dev-guide-c.html#GMCCG[Message Queue Developer's Guide for C Clients]
+|Provides programming and reference information for developers working with
+Message Queue who want to use the C language binding to the Message
+Queue messaging service to send, receive, and process Message Queue messages.
+|===
+
+
+[[GSACG00080]][[giprl]]
+
+[[related-documentation]]
+=== Related Documentation
+
+The following tutorials explain how to develop Jakarta EE applications:
+
+* https://github.com/eclipse-ee4j/jakartaee-firstcup-examples[
+Your First Cup: An Introduction to the Jakarta EE Platform].
+For beginning Jakarta EE programmers, this short tutorial explains the entire
+process for developing a simple enterprise application.
+The sample application is a web application that consists of a component that is
+based on the Enterprise JavaBeans specification, a JAX-RS web service,
+and a JavaServer Faces component for the web front end.
+
+* https://eclipse-ee4j.github.io/jakartaee-tutorial[The Jakarta EE Tutorial].
+This comprehensive tutorial explains how to use Jakarta EE platform technologies
+and APIs to develop Jakarta EE applications.
+
+Javadoc tool reference documentation for packages that are provided with
+{productName} is available as follows.
+
+* The Jakarta EE specifications and API specification is
+located at https://jakarta.ee/specifications/.
+
+* The API specification for {productName} 7, including Jakarta EE
+platform packages and nonplatform packages that are specific to the
+{productName} product, is located at
+https://glassfish.org/docs/.
+
+For information about creating enterprise applications in the NetBeans
+Integrated Development Environment (IDE), see the
+https://netbeans.apache.org/kb/docs/java-ee.html[
+NetBeans Documentation, Training & Support page].
+
+For information about the Derby database for use with
+the {productName}, see the https://db.apache.org/derby/index.html[Derby page].
+
+The Jakarta EE Samples project is a collection of sample applications that
+demonstrate a broad range of Jakarta EE technologies. The Jakarta EE Samples
+are bundled with the Jakarta EE Software Development Kit (SDK) and are also
+available from the repository
+(`https://github.com/eclipse-ee4j/glassfish-samples`).
+
+[[GSACG00081]][[fwbkx]]
+
+[[typographic-conventions]]
+=== Typographic Conventions
+
+The following table describes the typographic changes that are used in
+this book.
+
+[width="100%",cols="<14%,<37%,<49%",options="header",]
+|===
+|Typeface |Meaning |Example
+
+|`AaBbCc123`
+|The names of commands, files, and directories, and onscreen computer output
+|Edit your `.login` file.
+
+Use `ls` `a` to list all files.
+
+`machine_name% you have mail.`
+
+|`AaBbCc123`
+|What you type, contrasted with onscreen computer output
+|`machine_name%` `su`
+
+`Password:`
+
+|AaBbCc123
+|A placeholder to be replaced with a real name or value
+|The command to remove a file is `rm` filename.
+
+|AaBbCc123
+|Book titles, new terms, and terms to be emphasized (note that some emphasized items appear bold online)
+|Read Chapter 6 in the User's Guide.
+
+A cache is a copy that is stored locally.
+
+Do not save the file.
+|===
+
+
+[[GSACG00082]][[fquvc]]
+
+[[symbol-conventions]]
+=== Symbol Conventions
+
+The following table explains symbols that might be used in this book.
+
+[width="100%",cols="<10%,<26%,<28%,<36%",options="header",]
+|===
+|Symbol |Description |Example |Meaning
+
+|`[ ]`
+|Contains optional arguments and command options.
+|`ls [-l]`
+|The `-l` option is not required.
+
+|`{ \| }`
+|Contains a set of choices for a required command option.
+|`-d {y\|n}`
+|The `-d` option requires that you use either the `y` argument or the `n` argument.
+
+|`${ }`
+|Indicates a variable reference.
+|`${com.sun.javaRoot}`
+|References the value of the `com.sun.javaRoot` variable.
+
+|`-`
+|Joins simultaneous multiple keystrokes.
+|Control-A
+|Press the Control key while you press the A key.
+
+|`+`
+|Joins consecutive multiple keystrokes.
+|Ctrl+A+N
+|Press the Control key, release it, and then press the subsequent keys.
+
+|`>`
+|Indicates menu item selection in a graphical user interface.
+|File > New > Templates
+|From the File menu, choose New. From the New submenu, choose Templates.
+|===
+
+
+[[GSACG00083]][[ghpfg]]
+
+
+[[default-paths-and-file-names]]
+=== Default Paths and File Names
+
+The following table describes the default paths and file names that are
+used in this book.
+
+[%autowidth.stretch,options="header",]
+|===
+|Placeholder |Description |Default Value
+
+|as-install
+a|Represents the base installation directory for {productName}.
+In configuration files, as-install is represented as follows:
+`${com.sun.aas.installRoot}`
+a|* Installations on the Oracle Solaris operating system, Linux operating
+system, and Mac OS operating system:
++
+user's-home-directory``/glassfish7/glassfish``
++
+* Installations on the Windows operating system:
++
+SystemDrive``:\glassfish7\glassfish``
+
+|as-install-parent
+|Represents the parent of the base installation directory for {productName}.
+a|* Installations on the Oracle Solaris operating system, Linux operating
+system, and Mac operating system:
++
+user's-home-directory``/glassfish7``
++
+* Installations on the Windows operating system:
++
+SystemDrive``:\glassfish7``
+
+|domain-root-dir
+|Represents the directory in which a domain is created by default.
+|as-install``/domains/``
+
+|domain-dir
+|Represents the directory in which a domain's configuration is stored.
+In configuration files, domain-dir is represented as follows:
+`${com.sun.aas.instanceRoot}`
+|domain-root-dir/domain-name
+
+|instance-dir
+|Represents the directory for a server instance.
+|domain-dir/instance-name
+|===
+
diff --git a/docs/add-on-component-development-guide/src/main/asciidoc/session-persistence-modules.adoc b/docs/add-on-component-development-guide/src/main/asciidoc/session-persistence-modules.adoc
new file mode 100644
index 0000000..6b0f84e
--- /dev/null
+++ b/docs/add-on-component-development-guide/src/main/asciidoc/session-persistence-modules.adoc
@@ -0,0 +1,169 @@
+type=page
+status=published
+title=Creating a Session Persistence Module
+next=packaging-integrating-delivering.html
+prev=adding-container-capabilities.html
+~~~~~~
+
+= Creating a Session Persistence Module
+
+[[GSACG00008]][[gkmhj]]
+
+
+[[creating-a-session-persistence-module]]
+== Creating a Session Persistence Module
+
+{productName} enables you to create a session persistence module in
+the web container for high availability-related functionality by
+implementing the `PersistenceStrategyBuilder` interface . Using the
+`PersistenceStrategyBuilder` interface in an HK2 service makes the
+session manager extensible because you can implement a new persistence
+type without having to modify the web container code.
+
+For information about other high-availability, session persistence
+solutions, see "link:ha-administration-guide/session-persistence-and-failover.html#GSHAG00011[Configuring High Availability Session
+Persistence and Failover]" in {productName} High
+Availability Administration Guide.
+
+[[gkmhr]][[GSACG00141]][[implementing-the-persistencestrategybuilder-interface]]
+
+=== Implementing the `PersistenceStrategyBuilder` Interface
+
+You can implement the `PersistenceStrategyBuilder` interface by creating
+a new web session manager type.
+
+[source,java]
+----
+
+package com.sun.enterprise.web;
+
+import com.sun.enterprise.deployment.runtime.web.SessionManager;
+import org.apache.catalina.Context;
+import org.jvnet.hk2.annotations.Contract;
+
+@Contract
+public interface PersistenceStrategyBuilder {
+
+    public void initializePersistenceStrategy(
+            Context ctx,
+            SessionManager smBean,
+            ServerConfigLookup serverConfigLookup);
+
+    public void setPersistenceFrequency(String persistenceFrequency);
+
+    public void setPersistenceScope(String persistenceScope);
+
+    public void setPassedInPersistenceType(String persistenceType);
+}
+----
+
+Here is an example of how to implement the `PersistenceStrategyBuilder`
+interface by creating a new web session manager and setting a store for
+it:
+
+[source,java]
+----
+
+@Service(name="xyz")
+public class XYZStrategyBuilder implements PersistenceStrategyBuilder {
+
+    private String persistenceFrequency = null;
+    private String persistenceScope = null;
+    private String persistenceType = null;
+
+    public void init(StandardContext ctx, SessionManager sessionManager,
+      ServerConfigLookup serverConfigLookup) {
+        // add listeners, valves, etc. to the ctx
+        // Set the manager and store
+    }
+
+    public void setPersistenceFrequency(String persistenceFrequency) {
+        this.persistenceFrequency = persistenceFrequency;
+    }
+
+    public void setPersistenceScope(String persistenceScope) {
+        this.persistenceScope = persistenceScope;
+    }
+
+    public void setPassedInPersistenceType(String persistenceType) {
+        this.passedInPersistenceType = persistenceType;
+    }
+}
+----
+
+If a `Manager` is provided, then it will be used in {productName}.
+
+
+[NOTE]
+====
+If a backing store is required, it is the responsibility of the
+`Manager` to make sure that the `findSession` method correctly uses the
+`Store` that the `Manager` provides.
+====
+
+[[sthref10]]
+
+Example 8-1 Implementing `PersistenceStrategyBuilder` With a Custom Web
+Session Manager
+
+This example defines a session manager type that is named
+`MyHASolution`.
+
+[source,java]
+----
+
+@Service(name="MyHASolution")
+public class MyHASolutionStrategyBuilder implements PersistenceStrategyBuilder {
+
+    private String persistenceFrequency = null;
+    private String persistenceScope = null;
+    private String persistenceType = null;
+
+    public void init(StandardContext ctx, SessionManager sessionManager,
+      ServerConfigLookup serverConfigLookup) {
+        // add listeners, valves, etc. to the ctx
+        // Set the manager and store
+        MyManager myManager = new MyManager(persistenceType, persistenceFrequency);
+        // (You could also make this a service and look it up in the habitat.
+        // For simplicity we are just doing a new implementation of the class here.)
+        MyStore store = new MyStore();
+        myManager.setStore(store);
+        ctx.setManager(myManager);
+    }
+
+    public void setPersistenceFrequency(String persistenceFrequency) {
+        this.persistenceFrequency = persistenceFrequency;
+    }
+
+    public void setPersistenceScope(String persistenceScope) {
+        this.persistenceScope = persistenceScope;
+    }
+
+    public void setPassedInPersistenceType(String persistenceType) {
+        this.passedInPersistenceType = persistenceType;
+
+    }
+
+}
+----
+
+[[sthref11]]
+
+Example 8-2 Session Manager Configuration in the `glassfish-web.xml`
+File
+
+This example sets the `persistence-type` attribute of the
+`session-manager` element of `glassfish-web.xml` to `myHASolution`
+
+Based on the `domain.xml` and `glassfish-web.xml` settings, the web
+container looks up the appropriate `PersistenceStrategyBuilder`
+interface in the Habitat and uses it.
+
+[source,xml]
+----
+       <glassfish-web-app>
+         <session-config>
+           <session-manager persistence-type="myHASolution"/>
+         <session-config>
+       <glassfish-web-app>
+----
diff --git a/docs/add-on-component-development-guide/src/main/asciidoc/title.adoc b/docs/add-on-component-development-guide/src/main/asciidoc/title.adoc
new file mode 100644
index 0000000..efd9633
--- /dev/null
+++ b/docs/add-on-component-development-guide/src/main/asciidoc/title.adoc
@@ -0,0 +1,55 @@
+type=page
+status=published
+title={productName} Add-On Component Development Guide, Release 7
+next=preface.html
+prev=lot.html
+~~~~~~
+
+= {productName} Add-On Component Development Guide, Release 7
+
+
+[[eclipse-glassfish-server]]
+== {productName}
+
+Add-On Component Development Guide
+
+Release 7
+
+Contributed 2018-2022
+
+This document explains how to use published interfaces of {productName} to develop add-on components for {productName}. This document explains how to perform only those tasks that
+ensure that the add-on component is suitable for {productName}.
+
+This document is for software developers who are developing add-on
+components for {productName}. This document assumes that the
+developers are working with a distribution of {productName}. Access
+to the source code of the GlassFish project is not required to perform
+the tasks in this document. This document also assumes the ability to
+program in the Java language.
+
+[[sthref1]]
+
+'''''
+
+{productName} Add-On Component Development Guide,
+Release 7
+
+Copyright © 2013, 2019 Oracle and/or its affiliates. All rights reserved.
+
+This program and the accompanying materials are made available under the
+terms of the Eclipse Public License v. 2.0, which is available at
+http://www.eclipse.org/legal/epl-2.0.
+
+SPDX-License-Identifier: EPL-2.0
+
+Oracle and Java are registered trademarks of Oracle and/or its
+affiliates. Other names may be trademarks of their respective owners.
+
+Intel and Intel Xeon are trademarks or registered trademarks of Intel
+Corporation. All SPARC trademarks are used under license and are
+trademarks or registered trademarks of SPARC International, Inc. AMD,
+Opteron, the AMD logo, and the AMD Opteron logo are trademarks or
+registered trademarks of Advanced Micro Devices. UNIX is a registered
+trademark of The Open Group.
+
+image:img/eclipse_foundation_logo_tiny.png["Eclipse Logo"]
diff --git a/docs/add-on-component-development-guide/src/main/asciidoc/writing-hk2-components.adoc b/docs/add-on-component-development-guide/src/main/asciidoc/writing-hk2-components.adoc
new file mode 100644
index 0000000..6055232
--- /dev/null
+++ b/docs/add-on-component-development-guide/src/main/asciidoc/writing-hk2-components.adoc
@@ -0,0 +1,410 @@
+type=page
+status=published
+title=Writing HK2 Components
+next=extending-the-admin-console.html
+prev=introduction.html
+~~~~~~
+
+= Writing HK2 Components
+
+[[GSACG00002]][[ghmna]]
+
+
+[[writing-hk2-components]]
+== Writing HK2 Components
+
+The Hundred-Kilobyte Kernel (HK2) is the lightweight and extensible
+kernel of {productName}. To interact with {productName}, add-on
+components plug in to this kernel. In the HK2 component model, the
+functions of an add-on component are declared through a contract-service
+implementation paradigm. An HK2 contract identifies and describes the
+building blocks or the extension points of an application. An HK2
+service implements an HK2 contract.
+
+The following topics are addressed here:
+
+* link:#ghokq[HK2 Component Model]
+* link:#ghojt[Services in the HK2 Component Model]
+* link:#ghokt[HK2 Runtime]
+* link:#ghojb[Inversion of Control]
+* link:#ghmoe[Identifying a Class as an Add-On Component]
+* link:#ghpvp[Using the Apache Maven Build System to Develop HK2 Components]
+
+[[ghokq]][[GSACG00091]][[hk2-component-model]]
+
+=== HK2 Component Model
+
+The Hundred-Kilobyte Kernel (HK2) provides a module system and component
+model for building complex software systems. HK2 forms the core of
+{productName}'s architecture.
+
+The module system is responsible for instantiating classes that
+constitute the application functionality. The HK2 runtime complements
+the module system by creating objects. It configures such objects by:
+
+* Injecting other objects that are needed by a newly instantiated object
+* Injecting configuration information needed for that object
+* Making newly created objects available, so that they can then be
+injected to other objects that need it
+
+[[ghojt]][[GSACG00092]][[services-in-the-hk2-component-model]]
+
+=== Services in the HK2 Component Model
+
+An HK2 service identifies the building blocks or the extension points of
+an application. A service is a plain-old Java object (POJO) with the
+following characteristics:
+
+* The object implements an interface.
+* The object is declared in a JAR file with the `META-INF/services`
+file.
+
+To clearly separate the contract interface and its implementation, the
+HK2 runtime requires the following information:
+
+* Which interfaces are contracts
+* Which implementations of such interfaces are services
+
+Interfaces that define a contract are identified by the
+`org.jvnet.hk2.annotations.Contract` annotation.
+
+[source,java]
+----
+@Retention(RUNTIME)
+@Target(TYPE)
+public @interface Contract {
+}
+----
+
+Implementations of such contracts should be identified with an
+`org.jvnet.hk2.annotations.Service` annotation so that the HK2 runtime
+can recognize them as `@Contract` implementations.
+
+[source,java]
+----
+@Retention(RUNTIME)
+@Target(TYPE)
+public @interface Service {
+    ...
+}
+----
+
+For more information, see
+http://hk2.java.net/auto-depends/apidocs/org/jvnet/hk2/annotations/Service.html[`Service`]
+(`http://hk2.java.net/auto-depends/apidocs/org/jvnet/hk2/annotations/Service.html`).
+
+[[ghokt]][[GSACG00093]][[hk2-runtime]]
+
+=== HK2 Runtime
+
+Once Services are defined, the HK2 runtime can be used to instantiate or
+retrieve instances of services. Each service instance has a scope,
+specified as singleton, per thread, per application, or a custom scope.
+
+[[ghoib]][[GSACG00181]][[scopes-of-services]]
+
+==== Scopes of Services
+
+You can specify the scope of a service by adding an
+`org.jvnet.hk2.annotations.Scoped` annotation to the class-level of your
+`@Service` implementation class. Scopes are also services, so they can
+be custom defined and added to the HK2 runtime before being used by
+other services. Each scope is responsible for storing the service
+instances to which it is tied; therefore, the HK2 runtime does not rely
+on predefined scopes (although it comes with a few predefined ones).
+
+[source,java]
+----
+@Contract
+public abstract class Scope {
+    public abstract ScopeInstance current();
+}
+----
+
+The following code fragment shows how to set the scope for a service to
+the predefined `Singleton` scope:
+
+[source,java]
+----
+@Service
+public Singleton implements Scope {
+    ...
+}
+
+@Scope(Singleton.class)
+@Service
+public class SingletonService implements RandomContract {
+    ...
+}
+----
+
+You can define a new `Scope` implementation and use that scope on your
+`@Service` implementations. You will see that the HK2 runtime uses the
+`Scope` instance to store and retrieve service instances tied to that
+scope.
+
+[[ghoky]][[GSACG00182]][[instantiation-of-components-in-hk2]]
+
+==== Instantiation of Components in HK2
+
+Do not call the `new` method to instantiate components. Instead,
+retrieve components by using the `Habitat` instance. The simplest way to
+use the `Habitat` instance is through a `getComponent(Class`T
+`contract)` call:
+
+[source,java]
+----
+public <T> T getComponent(Class<T> clazz) throws ComponentException;
+----
+
+More APIs are available at
+http://hk2.java.net/auto-depends/apidocs/org/jvnet/hk2/component/Habitat.html[`Habitat`]
+(`http://hk2.java.net/auto-depends/apidocs/org/jvnet/hk2/component/Habitat.html`).
+
+[[ghois]][[GSACG00183]][[hk2-lifecycle-interfaces]]
+
+==== HK2 Lifecycle Interfaces
+
+Components can attach behaviors to their construction and destruction
+events by implementing the
+http://hk2.java.net/auto-depends/apidocs/org/jvnet/hk2/component/PostConstruct.html[`org.jvnet.hk2.component.PostConstruct`]
+(`http://hk2.java.net/auto-depends/apidocs/org/jvnet/hk2/component/PostConstruct.html`)
+interface, the
+http://hk2.java.net/auto-depends/apidocs/org/jvnet/hk2/component/PreDestroy.html[`org.jvnet.hk2.component.PreDestroy`]
+(`http://hk2.java.net/auto-depends/apidocs/org/jvnet/hk2/component/PreDestroy.html`)
+interface, or both. These are interfaces rather than annotations for
+performance reasons.
+
+The `PostConstruct` interface defines a single method, `postConstruct`,
+which is called after a component has been initialized and all its
+dependencies have been injected.
+
+The `PreDestroy` interface defines a single method, `preDestroy`, which
+is called just before a component is removed from the system.
+
+[[GSACG00014]][[ghoqv]]
+Example 2-1 Example Implementation of `PostContruct` and `PreDestroy`
+
+[source,java]
+----
+@Service(name="com.example.container.MyContainer")
+public class MyContainer implements Container, PostConstruct, PreDestroy {
+    @Inject
+    Logger logger;
+    ...
+    public void postConstruct() {
+        logger.info("Starting up.");
+    }
+
+    public void preDestroy() {
+        logger.info("Shutting down.");
+    }
+}
+
+----
+
+[[ghojb]][[GSACG00094]][[inversion-of-control]]
+
+=== Inversion of Control
+
+Inversion of control (IoC) refers to a style of software architecture
+where the behavior of a system is determined by the runtime capabilities
+of the individual, discrete components that make up the system. This
+architecture is different from traditional styles of software
+architecture, where all the components of a system are specified at
+design-time. With IoC, discrete components respond to high-level events
+to perform actions. While performing these actions, the components
+typically rely on other components to provide other actions. In an IoC
+system, components use injection to gain access to other components.
+
+[[ghoiz]][[GSACG00184]][[injecting-hk2-components]]
+
+==== Injecting HK2 Components
+
+Services usually rely on other services to perform their tasks. The HK2
+runtime identifies the `@Contract` implementations required by a service
+by using the
+http://hk2.java.net/auto-depends/apidocs/org/jvnet/hk2/annotations/Inject.html[`org.jvnet.hk2.annotations.Inject`]
+(`http://hk2.java.net/auto-depends/apidocs/org/jvnet/hk2/annotations/Inject.html`)
+annotation. `Inject` can be placed on fields or setter methods of any
+service instantiated by the HK2 runtime. The target service is retrieved
+and injected during the calling service's instantiation by the component
+manager.
+
+The following example shows how to use `@Inject` at the field level:
+
+[source,java]
+----
+@Inject
+ConfigService config;
+----
+
+The following example shows how to use `@Inject` at the setter level:
+
+[source,java]
+----
+@Inject
+public void set(ConfigService svc) {...}
+----
+
+Injection can further qualify the intended injected service
+implementation by using a name and scope from which the service should
+be available:
+
+[source,java]
+----
+@Inject(Scope=Singleton.class, name="deploy")
+AdminCommand deployCommand;
+----
+
+[[ghoic]][[GSACG00186]][[instantiation-cascading-in-hk2]]
+
+==== Instantiation Cascading in HK2
+
+Injection of instances that have not been already instantiated triggers
+more instantiation. You can see this as a component instantiation
+cascade where some code requests for a high-level service will, by using
+the `@Inject` annotation, require more injection and instantiation of
+lower level services. This cascading feature keeps the implementation as
+private as possible while relying on interfaces and the separation of
+contracts and providers.
+
+[[GSACG00015]][[ghquz]]
+Example 2-2 Example of Instantiation Cascading
+
+The following example shows how the instantiation of `DeploymentService`
+as a `Startup` contract implementation will trigger the instantiation of
+the `ConfigService`.
+
+[source,java]
+----
+@Contract
+public interface Startup {...}
+
+Iterable<Startup> startups;
+startups = habitat.getComponents(Startup.class);
+
+@Service
+public class DeploymentService implements Startup {
+    @Inject
+    ConfigService config;
+}
+
+@Service
+public Class ConfigService implements ... {...}
+----
+
+[[ghmoe]][[GSACG00095]][[identifying-a-class-as-an-add-on-component]]
+
+=== Identifying a Class as an Add-On Component
+
+{productName} discovers add-on components by identifying Java
+programming language classes that are annotated with the
+`org.jvnet.hk2.annotation.Service` annotation.
+
+To identify a class as an implementation of an {productName} service,
+add the `org.jvnet.hk2.annotations.Service` annotation at the
+class-definition level of your Java programming language class.
+
+[source,java]
+----
+@Service
+public class SamplePlugin implements ConsoleProvider {
+...
+}
+----
+
+The `@Service` annotation has the following elements. All elements are
+optional.
+
+`name`::
+  The name of the service. The default value is an empty string.
+`scope`::
+  The scope to which this service implementation is tied. The default
+  value is `org.glassfish.hk2.scopes.PerLookup.class`.
+`factory`::
+  The factory class for the service implementation, if the service is
+  created by a factory class rather than by calling the default
+  constructor. If this element is specified, the factory component is
+  activated, and `Factory.getObject` is used instead of the default
+  constructor. The default value of the `factory` element is
+  `org.jvnet.hk2.component.Factory.class`.
+
+[[GSACG00016]][[ghoip]]
+Example 2-3 Example of the Optional Elements of the `@Service` Annotation
+
+The following example shows how to use the optional elements of the
+`@Service` annotation:
+
+[source,java]
+----
+@Service (name="MyService",
+    scope=com.example.PerRequest.class,
+    factory=com.example.MyCustomFactory)
+public class SamplePlugin implements ConsoleProvider {
+...
+}
+----
+
+[[ghpvp]][[GSACG00096]][[using-the-apache-maven-build-system-to-develop-hk2-components]]
+
+=== Using the Apache Maven Build System to Develop HK2 Components
+
+If you are using Maven 2 to build HK2 components, invoke the
+`auto-depends` plug-in for Maven so that the `META-INF/services` files
+are generated automatically during build time.
+
+[[GSACG00017]][[ghqsa]]
+Example 2-4 Example of the Maven Plug-In Configuration
+
+[source,xml]
+----
+<plugin>
+    <groupId>org.glassfish.hk2</groupId>
+    <artifactId>hk2-maven-plugin</artifactId>
+    <configuration>
+        <includes>
+            <include>com/example/**</include>
+        </includes>
+    </configuration>
+</plugin>
+----
+
+[[GSACG00018]][[ghoik]]
+Example 2-5 Example of `META-INF/services` File Generation
+
+This example shows how to use
+http://hk2.java.net/auto-depends/apidocs/org/jvnet/hk2/annotations/Contract.html[`@Contract`]
+(`http://hk2.java.net/auto-depends/apidocs/org/jvnet/hk2/annotations/Contract.html`)
+and
+http://hk2.java.net/auto-depends/apidocs/org/jvnet/hk2/annotations/Service.html[`@Service`]
+(`http://hk2.java.net/auto-depends/apidocs/org/jvnet/hk2/annotations/Service.html`)
+and the resulting `META-INF/services` files.
+
+The interfaces and classes in this example are as follows:
+
+[source,java]
+----
+package com.example.wallaby.annotations;
+@Contract
+public interface Startup {...}
+
+package com.example.wombat;
+@Contract
+public interface RandomContract {...}
+
+package com.example.wallaby;
+@Service
+public class MyService implements Startup, RandomContract, PropertyChangeListener {
+    ...
+}
+----
+
+These interfaces and classes generate this `META-INF/services` file with
+the `MyService` content:
+
+[source]
+----
+com.example.wallaby.annotations.Startup
+com.example.wombat.RandomContract
+----
diff --git a/docs/add-on-component-development-guide/src/main/jbake/assets/css/style.css b/docs/add-on-component-development-guide/src/main/jbake/assets/css/style.css
deleted file mode 100644
index 25a16e4..0000000
--- a/docs/add-on-component-development-guide/src/main/jbake/assets/css/style.css
+++ /dev/null
@@ -1,315 +0,0 @@
-/* CSS */
-/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
-/** 1. Set default font family to sans-serif. 2. Prevent iOS text size adjust after orientation change, without disabling user zoom. */
-html { font-family: sans-serif; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ }
-
-/* HTML5 display definitions ========================================================================== */
-/** Correct `block` display not defined for any HTML5 element in IE 8/9. Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox. Correct `block` display not defined for `main` in IE 11. */
-article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { display: block; }
-
-/** 1. Correct `inline-block` display not defined in IE 8/9. 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. */
-audio, canvas, progress, video { display: inline-block; /* 1 */ vertical-align: baseline; /* 2 */ }
-
-/** Prevent modern browsers from displaying `audio` without controls. Remove excess height in iOS 5 devices. */
-audio:not([controls]) { display: none; height: 0; }
-
-/** Address `[hidden]` styling not present in IE 8/9/10. Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. */
-[hidden], template { display: none; }
-
-/* Links ========================================================================== */
-/** Remove the gray background color from active links in IE 10. */
-a { background-color: transparent; }
-
-/** Improve readability when focused and also mouse hovered in all browsers. */
-a:active, a:hover { outline: 0; }
-
-/* Text-level semantics ========================================================================== */
-/** Address styling not present in IE 8/9/10/11, Safari, and Chrome. */
-abbr[title] { border-bottom: 1px dotted; }
-
-/** Address style set to `bolder` in Firefox 4+, Safari, and Chrome. */
-b, strong { font-weight: bold; }
-
-/** Address styling not present in Safari and Chrome. */
-dfn { font-style: italic; }
-
-/** Address variable `h1` font-size and margin within `section` and `article` contexts in Firefox 4+, Safari, and Chrome. */
-h1 { font-size: 2em; margin: 0.67em 0; }
-
-/** Address styling not present in IE 8/9. */
-mark { background: #ff0; color: #000; }
-
-/** Address inconsistent and variable font size in all browsers. */
-small { font-size: 80%; }
-
-/** Prevent `sub` and `sup` affecting `line-height` in all browsers. */
-sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }
-
-sup { top: -0.5em; }
-
-sub { bottom: -0.25em; }
-
-/* Embedded content ========================================================================== */
-/** Remove border when inside `a` element in IE 8/9/10. */
-img { border: 0; }
-
-/** Correct overflow not hidden in IE 9/10/11. */
-svg:not(:root) { overflow: hidden; }
-
-/* Grouping content ========================================================================== */
-/** Address margin not present in IE 8/9 and Safari. */
-figure { margin: 1em 40px; }
-
-/** Address differences between Firefox and other browsers. */
-hr { box-sizing: content-box; height: 0; }
-
-/** Contain overflow in all browsers. */
-pre { overflow: auto; }
-
-/** Address odd `em`-unit font size rendering in all browsers. */
-code, kbd, pre, samp { font-family: monospace, monospace; font-size: 1em; }
-
-/* Forms ========================================================================== */
-/** Known limitation: by default, Chrome and Safari on OS X allow very limited styling of `select`, unless a `border` property is set. */
-/** 1. Correct color not being inherited. Known issue: affects color of disabled elements. 2. Correct font properties not being inherited. 3. Address margins set differently in Firefox 4+, Safari, and Chrome. */
-button, input, optgroup, select, textarea { color: inherit; /* 1 */ font: inherit; /* 2 */ margin: 0; /* 3 */ }
-
-/** Address `overflow` set to `hidden` in IE 8/9/10/11. */
-button { overflow: visible; }
-
-/** Address inconsistent `text-transform` inheritance for `button` and `select`. All other form control elements do not inherit `text-transform` values. Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. Correct `select` style inheritance in Firefox. */
-button, select { text-transform: none; }
-
-/** 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls. 2. Correct inability to style clickable `input` types in iOS. 3. Improve usability and consistency of cursor style between image-type `input` and others. */
-button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ }
-
-/** Re-set default cursor for disabled elements. */
-button[disabled], html input[disabled] { cursor: default; }
-
-/** Remove inner padding and border in Firefox 4+. */
-button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; }
-
-/** Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet. */
-input { line-height: normal; }
-
-/** It's recommended that you don't attempt to style these elements. Firefox's implementation doesn't respect box-sizing, padding, or width.  1. Address box sizing set to `content-box` in IE 8/9/10. 2. Remove excess padding in IE 8/9/10. */
-input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ }
-
-/** Fix the cursor style for Chrome's increment/decrement buttons. For certain `font-size` values of the `input`, it causes the cursor style of the decrement button to change from `default` to `text`. */
-input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { height: auto; }
-
-/** 1. Address `appearance` set to `searchfield` in Safari and Chrome. 2. Address `box-sizing` set to `border-box` in Safari and Chrome (include `-moz` to future-proof). */
-input[type="search"] { -webkit-appearance: textfield; /* 1 */ /* 2 */ box-sizing: content-box; }
-
-/** Remove inner padding and search cancel button in Safari and Chrome on OS X. Safari (but not Chrome) clips the cancel button when the search input has padding (and `textfield` appearance). */
-input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; }
-
-/** Define consistent border, margin, and padding. */
-fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; }
-
-/** 1. Correct `color` not being inherited in IE 8/9/10/11. 2. Remove padding so people aren't caught out if they zero out fieldsets. */
-legend { border: 0; /* 1 */ padding: 0; /* 2 */ }
-
-/** Remove default vertical scrollbar in IE 8/9/10/11. */
-textarea { overflow: auto; }
-
-/** Don't inherit the `font-weight` (applied by a rule above). NOTE: the default cannot safely be changed in Chrome and Safari on OS X. */
-optgroup { font-weight: bold; }
-
-/* Tables ========================================================================== */
-/** Remove most spacing between table cells. */
-table { border-collapse: collapse; border-spacing: 0; }
-
-td, th { padding: 0; }
-
-/* LAYOUT STYLES */
-
-p { margin-top: 0; }
-
-code, pre { margin-bottom: 30px; font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace; font-size: 13px; color: #222; }
-
-code { padding: 0 3px; background-color: #f2f8fc; border: solid 1px #dbe7f3; }
-
-pre { padding: 20px; overflow: auto; text-shadow: none; background: #fff; border: solid 1px #f2f2f2; }
-
-pre code { padding: 0; color: #2879d0; background-color: #fff; border: none; }
-
-ul, ol, dl { margin-bottom: 20px; }
-
-/* COMMON STYLES */
-
-td.halign-right { text-align: right; } 
-
-td.halign-center { text-align: center; } 
-
-form { padding: 20px; background: #f2f2f2; }
-
-h2 { 
-   font-size: 2em;
-   line-height: 1.2em;
-   font-weight: 200;
-   letter-spacing: 0;
-}
-
-h3 { 
-   font-size: 1.4em;
-   line-height: 1.2em;
-   font-weight: normal;
-   letter-spacing: 0;
-}
-
-.sect1 {
-   margin-left: 4%;
-   margin-right: 4%;
-   font: 13px/20px Arial, Helvetica, sans-serif  
-}
-
-a:link {
-   text-decoration: none;
-   color: #09569d;
-}
-
-#preamble hr{
-   margin-left: 0%;
-   margin-right: 0%;
-}
-
-#preamble .sectionbody table  {
-   font-weight: 200;
-   margin-left: 4%;
-   margin-right: 4%;
-}
-
-hr {
-   margin-bottom: 12px;
-}
-
-table.tableblock.frame-all.grid-all.spread {
-   font-size: 12px;
-}
-
-code {
-   font-size:.9em;
-   border: 1px solid #eaeaea;
-   background-color: #f6f6f6;
-   border-radius: 3px;
-   padding: 1px;
-   padding-left:2px;
-   padding-right:2px;
-}
-
-pre.prettyprint.highlight {
-   border: 1px solid #eaeaea;
-   background-color: #f6f6f6;
-   border-radius: 4px;
-   padding: 8px;
-   padding-top:4px;
-   padding-bottom:4px;
-}
-
-.language-oac_no_warn {
-   font-size:.9em;
-   color:#222;
-   background-color: transparent;
-}
-
-#doc-title {
-   margin-left: 4%;
-}
-
-#top-nav {
-   margin-left: 4%;
-   font-size: 12px;
-}
-
-#bottom-nav {
-   margin-left: 4%;
-   font-size: 12px;
-}
-
-.vector-font {
-   color:grey; 
-   font-size: 20px;
-}
-
-#copyright {
-   padding-top: 10px;
-   padding-bottom: 4px;
-   display: table;
-   margin:0 auto;
-   color: grey;
-   font-size: 12px;
-   vertical-align: middle;
-}
-
-.beta {color: #FF0000}
-
-/* GENERAL ELEMENT TYPE STYLES */
-
-/* #Media Queries
-================================================== */
-/* Smaller than standard 960 (devices and browsers) */
-/* Tablet Portrait size to standard 960 (devices and browsers) */
-@media only screen and (min-width: 768px) and (max-width: 959px) { .inner { width: 740px; }
-  header h1, header h2 { width: 340px; }
-  header h1 { font-size: 60px; }
-  header h2 { font-size: 30px; }
-}
-/* All Mobile Sizes (devices and browser) */
-@media only screen and (max-width: 767px) { .inner { width: 93%; }
-  header { padding: 20px 0; }
-  header .inner { position: relative; }
-  header h1, header h2 { width: 100%; }
-  header h1 { font-size: 48px; }
-  header h2 { font-size: 24px; }
-  header a.button { position: relative; display: inline-block; width: auto; height: auto; padding: 5px 10px; margin-top: 15px; font-size: 13px; line-height: 1; color: #2879d0; text-align: center; background-color: #9ddcff; background-image: none; border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; }
-  header a.button small { display: inline; font-size: 13px; }
-}
-/* Mobile Landscape Size to Tablet Portrait (devices and browsers) */
-/* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */
-
-header h1 { padding-top: 14px; font-size: 2em; font-weight: 200; line-height: 1.4; color: #FFFFFF; letter-spacing: 0px; border-bottom: 0px; }
-
-header h2 { font-size: 1.2em; margin-top: 0; margin-bottom: 0; font-weight: 200; line-height: .8; color: #ec7D11; letter-spacing: 0; }
-
-/*
-header a.button { background: transparent url(../images/logo.png) 0 0 no-repeat; padding-left: 32px; }
-*/
-
-header a:hover { text-decoration: none; }
-
-/* Admonition (Note) block */
-.admonitionblock > table {
-  border: 0;
-  background: none;
-  width: 100%;
-  table-layout: auto;
-  margin-bottom: 10.5px;
-}
-.admonitionblock > table td.icon {
-  text-align: center;
-  width: 60px;
-}
-.admonitionblock > table td.icon img {
-  max-width: none;
-}
-.admonitionblock > table td.icon .title {
-  text-transform: uppercase;
-}
-.admonitionblock > table td.content {
-  padding-left: 1em;
-  padding-right: 1em;
-  border-left: 3px solid #ddd;
-}
-.admonitionblock > table td.content > :last-child > :last-child {
-  margin-bottom: 0;
-}
-.admonitionblock td.icon [class^="fa icon-"]:before {
-  font-size: 2.5em;
-  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
-  cursor: default;
-}
-.admonitionblock td.icon .icon-note:before {
-  content: "\f05a";
-  color: #5bc0de;
-}
diff --git a/docs/add-on-component-development-guide/src/main/jbake/content/adding-configuration-data.adoc b/docs/add-on-component-development-guide/src/main/jbake/content/adding-configuration-data.adoc
deleted file mode 100644
index ffd1c43..0000000
--- a/docs/add-on-component-development-guide/src/main/jbake/content/adding-configuration-data.adoc
+++ /dev/null
@@ -1,881 +0,0 @@
-type=page
-status=published
-title=Adding Configuration Data for a Component
-next=adding-container-capabilities.html
-prev=adding-monitoring-capabilities.html
-~~~~~~
-Adding Configuration Data for a Component
-=========================================
-
-[[GSACG00006]][[gjlpe]]
-
-
-[[adding-configuration-data-for-a-component]]
-6 Adding Configuration Data for a Component
--------------------------------------------
-
-The configuration data of a component determines the characteristics and
-runtime behavior of a component. Eclipse GlassFish provides interfaces to
-enable an add-on component to store its configuration data in the same
-way as other GlassFish Server components. These interfaces are similar
-to interfaces that are defined in
-[Jakarta XML Binding](`https://jakarta.ee/specifications/xml-binding/`). By using these interfaces to
-store configuration data, you ensure that the add-on component is fully
-integrated with GlassFish Server. As a result, administrators can
-configure an add-on component in the same way as they can configure
-other GlassFish Server components.
-
-The following topics are addressed here:
-
-* link:#gjrdv[How GlassFish Server Stores Configuration Data]
-* link:#gjlop[Defining an Element]
-* link:#gjlpb[Defining an Attribute of an Element]
-* link:#gjlov[Defining a Subelement]
-* link:#gjlpu[Validating Configuration Data]
-* link:#gjrdj[Initializing a Component's Configuration Data]
-* link:#gjrcz[Creating a Transaction to Update Configuration Data]
-* link:#gjmkt[Dotted Names and REST URLs of Configuration Attributes]
-* link:#gkaal[Examples of Adding Configuration Data for a Component]
-
-[[gjrdv]][[GSACG00121]][[how-glassfish-server-stores-configuration-data]]
-
-How GlassFish Server Stores Configuration Data
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-GlassFish Server stores the configuration data for a domain in a single
-configuration file that is named `domain.xml`. This file is an
-extensible markup language (XML) instance that contains a hierarchy of
-elements to represent a domain's configuration. The content model of
-this XML instance is not defined in a document type definition (DTD) or
-an XML schema. Instead, the content model is derived from Java language
-interfaces with appropriate annotations. You use these annotations to
-add configuration data for a component as explained in the sections that
-follow.
-
-[[gjlop]][[GSACG00122]][[defining-an-element]]
-
-Defining an Element
-~~~~~~~~~~~~~~~~~~~
-
-An element represents an item of configuration data. For example, to
-represent the configuration data for a network listener, GlassFish
-Server defines the `network-listener` element.
-
-Define an element for each item of configuration data that you are
-adding.
-
-[[gjcnt]][[GSACG00074]][[to-define-an-element]]
-
-To Define an Element
-^^^^^^^^^^^^^^^^^^^^
-
-1.  Define a Java language interface to represent the element. +
-Define one interface for each element. Do not represent multiple
-elements in a single interface. +
-The name that you give to the interface determines name of the element
-as follows:
-* A change from lowercase to uppercase in the interface name is
-transformed to the hyphen (`-`) separator character.
-* The element name is all lowercase. +
-For example, to define an interface to represent the
-`wombat-container-config` element, give the name `WombatContainerConfig`
-to the interface.
-2.  Specify the parent of the element. +
-To specify the parent, extend the interface that identifies the parent
-as shown in the following table. +
-[width="100%",cols="<27%,<73%",options="header",]
-|=======================================================================
-|Parent Element |Interface to Extend
-|`config` |`org.glassfish.api.admin.config.Container`
-
-|`applications` |`org.glassfish.api.admin.config.ApplicationName`
-
-|Another element that you are defining
-|`org.jvnet.hk2.config.ConfigBeanProxy`
-|=======================================================================
-
-3.  Annotate the declaration of the interface with the
-`org.jvnet.hk2.config.Configured` annotation.
-
-[[GSACG00053]][[gjcne]]
-
-
-Example 6-1 Declaration of an Interface That Defines an Element
-
-This example shows the declaration of the `WombatContainerConfig`
-interface that represents the `wombat-container-config` element. The
-parent of this element is the `config` element.
-
-[source,oac_no_warn]
-----
-...
-import org.jvnet.hk2.config.Configured;
-...
-import org.glassfish.api.admin.config.Container;
-...
-@Configured
-public interface WombatContainerConfig extends Container {
-...
-}
-----
-
-[[sthref6]]
-
-How Interfaces That Are Annotated With @Configured Are Implemented
-
-You are not required to implement any interfaces that you annotate with
-the `@Configured` annotation. GlassFish Server implements these
-interfaces by using the `Dom` class. GlassFish Server creates a Java
-Platform, Standard Edition (Java SE) proxy for each `Dom` object to
-implement the interface.
-
-[[gjlpb]][[GSACG00123]][[defining-an-attribute-of-an-element]]
-
-Defining an Attribute of an Element
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The attributes of an element describe the characteristics of the
-element. For example, the `port` attribute of the `network-listener`
-element identifies the port number on which the listener listens.
-
-[[gjorj]][[GSACG00227]][[representing-an-attribute-of-an-element]]
-
-Representing an Attribute of an Element
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Represent each attribute of an element as the property of a pair of
-JavaBeans specification getter and setter methods of the interface that
-defines the element. The component for which the configuration data is
-being defined can then access the attribute through the getter method.
-The setter method enables the attribute to be updated.
-
-[[gjopa]][[GSACG00228]][[specifying-the-data-type-of-an-attribute]]
-
-Specifying the Data Type of an Attribute
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The data type of an attribute is the return type of the getter method
-that is associated with the attribute. To enable the attribute take
-properties in the form `${`property-name`}` as values, specify the data
-type as `String`.
-
-[[gjopm]][[GSACG00229]][[identifying-an-attribute-of-an-element]]
-
-Identifying an Attribute of an Element
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To identify an attribute of an element, annotate the declaration of the
-getter method that is associated with the attribute with the
-`org.jvnet.hk2.config.Attribute` annotation.
-
-To specify the properties of the attribute, use the elements of the
-`@Attribute` annotation as explained in the sections that follow.
-
-[[gjopq]][[GSACG00230]][[specifying-the-name-of-an-attribute]]
-
-Specifying the Name of an Attribute
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To specify the name of an attribute, set the `value` element of the
-`@Attribute` annotation to a string that specifies the name. If you do
-not set this element, the name is derived from the name of the property
-as follows:
-
-* A change from lowercase to uppercase in the interface name is
-transformed to the hyphen (`-`) separator character.
-* The element name is all lowercase.
-
-For example, if the getter method `getNumberOfInstances` is defined for
-the property `NumberOfInstances` to represent an attribute, the name of
-the attribute is `number-of-instances`.
-
-[[gjoqj]][[GSACG00231]][[specifying-the-default-value-of-an-attribute]]
-
-Specifying the Default Value of an Attribute
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The default value of an attribute is the value that is applied if the
-attribute is omitted when the element is written to the domain
-configuration file.
-
-To specify the default value of an attribute, set the `defaultValue`
-element of the `@Attribute` annotation to a string that contains the
-default value. If you do not set this element, the parameter has no
-default value.
-
-[[gjoui]][[GSACG00232]][[specifying-whether-an-attribute-is-required-or-optional]]
-
-Specifying Whether an Attribute Is Required or Optional
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Whether an attribute is required or optional determines how GlassFish
-Server responds if the parameter is omitted when the element is written
-to the domain configuration file:
-
-* If the attribute is required, an error occurs.
-* If the attribute is optional, the element is written successfully to
-the domain configuration file.
-
-To specify whether an attribute is required or optional, set the
-`required` element of the `@Attribute` annotation as follows:
-
-* If the attribute is required, set the `required` element to `true`.
-* If the attribute is optional, set the `required` element to `false`.
-This value is the default.
-
-[[gjrdz]][[GSACG00233]][[example-of-defining-an-attribute-of-an-element]]
-
-Example of Defining an Attribute of an Element
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-[[sthref7]]
-
-Example 6-2 Defining an Attribute of an Element
-
-This example defines the attribute `number-of-instances`. To enable the
-attribute take properties in the form `${`property-name`}` as values,
-the data type of this attribute is `String`.
-
-[source,oac_no_warn]
-----
-import org.jvnet.hk2.config.Attribute;
-...
-    @Attribute
-    public String getNumberOfInstances();
-    public void setNumberOfInstances(String instances) throws PropertyVetoException;
-...
-----
-
-[[gjlov]][[GSACG00124]][[defining-a-subelement]]
-
-Defining a Subelement
-~~~~~~~~~~~~~~~~~~~~~
-
-A subelement represents a containment or ownership relationship. For
-example, GlassFish Server defines the `network-listeners` element to
-contain the configuration data for individual network listeners. The
-configuration data for an individual network listener is represented by
-the `network-listener` element, which is a subelement of
-`network-listeners` element.
-
-[[gjzlb]][[GSACG00075]][[to-define-a-subelement]]
-
-To Define a Subelement
-^^^^^^^^^^^^^^^^^^^^^^
-
-1.  Define an interface to represent the subelement. +
-For more information, see link:#gjlop[Defining an Element]. +
-The interface that represents the subelement must extend the
-`org.jvnet.hk2.config.ConfigBeanProxy` interface.
-2.  In the interface that defines the parent element, identify the
-subelement to its parent element.
-1.  Represent the subelement as the property of a JavaBeans
-specification getter or setter method.
-2.  Annotate the declaration of the getter or setter method that is
-associated with the subelement with the `org.jvnet.hk2.config.Element`
-annotation.
-
-[[GSACG00054]][[gjzjt]]
-
-
-Example 6-3 Declaring an Interface to Represent a Subelement
-
-This example shows the declaration of the `WombatElement` interface to
-represent the `wombat-element` element.
-
-[source,oac_no_warn]
-----
-...
-import org.jvnet.hk2.config.ConfigBeanProxy;
-import org.jvnet.hk2.config.Configured;
-...
-@Configured
-public interface WombatElement extends ConfigBeanProxy {
-...
-}
-...
-----
-
-[[GSACG00055]][[gjzkh]]
-
-
-Example 6-4 Identifying a Subelement to its Parent Element
-
-This example identifies the `wombat-element` element as a subelement.
-
-[source,oac_no_warn]
-----
-...
-import org.jvnet.hk2.config.Element;
-...
-import java.beans.PropertyVetoException;
-...
-@Element
-    public WombatElement getElement();
-    public void setElement(WombatElement element) throws PropertyVetoException;
-...
-----
-
-[[gjlpu]][[GSACG00125]][[validating-configuration-data]]
-
-Validating Configuration Data
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Validating configuration data ensures that attribute values that are
-being set or updated do not violate any constraints that you impose on
-the data. For example, you might require that an attribute that
-represents a name is not null, or an integer that represents a port
-number is within the range of available port numbers. Any attempt to set
-or update an attribute value that fails validation fails. Any
-validations that you specify for an attribute are performed when the
-attribute is initialized and every time the attribute is changed.
-
-To standardize the validation of configuration data, GlassFish Server
-uses https://jakarta.ee/specifications/bean-validation/[Jakarta Bean Validation]
-(`https://jakarta.ee/specifications/bean-validation/`) for validating configuration
-data. Jakarta Bean Validation defines a metadata model and API for the validation of
-JavaBeans components.
-
-To validate an attribute of an element, annotate the attribute's getter
-method with the annotation in the `jakarta.validation.constraints` package
-that performs the validation that you require. The following table lists
-commonly used annotations for validating GlassFish Server configuration
-data. For the complete list of annotations, see the
-https://jakarta.ee/specifications/bean-validation/3.0/apidocs/jakarta/validation/constraints/package-summary.html[`jakarta.validation.constraints`
-package summary]
-(`https://jakarta.ee/specifications/bean-validation/3.0/apidocs/jakarta/validation/constraints/package-summary.html`).
-
-[[sthref8]][[gjrlg]]
-
-Table 6-1 Commonly Used Annotations for Validating GlassFish Server
-Configuration Data
-
-[width="100%",cols="<37%,<63%",options="header",]
-|=======================================================================
-|Validation |Annotation
-|Not null |`jakarta.validation.constraints.NotNull`
-
-|Null |`jakarta.validation.constraints.Null`
-
-|Minimum value a|
-`jakarta.validation.constraints.Min`
-
-Set the `value` element of this annotation to the minimum allowed value.
-
-|Maximum value a|
-`jakarta.validation.constraints.Max`
-
-Set the `value` element of this annotation to the maximum allowed value.
-
-|Regular expression matching a|
-`jakarta.validation.constraints.Pattern`
-
-Set the `regexp` element of this annotation to the regular expression
-that is to be matched.
-
-|=======================================================================
-
-
-[[GSACG00056]][[gjrmp]]
-
-
-Example 6-5 Specifying a Range of Valid Values for an Integer
-
-This example specifies that the attribute `rotation-interval-in-minutes`
-must be a positive integer.
-
-[source,oac_no_warn]
-----
-...
-import jakarta.validation.constraints.Max;
-import jakarta.validation.constraints.Min;
-...
-@Min(value=1)
-@Max(value=Integer.MAX_VALUE)
-String getRotationIntervalInMinutes();
-...
-----
-
-[[GSACG00057]][[gjzkq]]
-
-
-Example 6-6 Specifying Regular Expression Matching
-
-This example specifies that the attribute `classname` must contain only
-non-whitespace characters.
-
-[source,oac_no_warn]
-----
-import jakarta.validation.constraints.Pattern;
-...
-@Pattern(regexp="^[\\S]*$")
-String getClassname();
-...
-----
-
-[[gjrdj]][[GSACG00126]][[initializing-a-components-configuration-data]]
-
-Initializing a Component's Configuration Data
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-To ensure that a component's configuration data is added to the
-`domain.xml` file when the component is first instantiated, you must
-initialize the component's configuration data.
-
-Initializing a component's configuration data involves the following
-tasks:
-
-* link:#gkbgi[To Define a Component's Initial Configuration Data]
-* link:#gjses[To Write a Component's Initial Configuration Data to the
-`domain.xml` File]
-
-[[gkbgi]][[GSACG00076]][[to-define-a-components-initial-configuration-data]]
-
-To Define a Component's Initial Configuration Data
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-1.  Create a plain-text file that contains an XML fragment to represent
-the configuration data.
-* Ensure that each XML element accurately represents the interface that
-is defined for the element.
-* Ensure that any subelements that you are initializing are correctly
-nested.
-* Set attributes of the elements to their required initial values.
-2.  When you package the component, include the file that contains the
-XML fragment in the component's JAR file.
-
-[[GSACG00058]][[gkaba]]
-
-
-Example 6-7 XML Data Fragment
-
-This example shows the XML data fragment for adding the
-`wombat-container-config` element to the `domain.xml` file. The
-`wombat-container-config` element contains the subelement
-`wombat-element`. The attributes of `wombat-element` are initialized as
-follows:
-
-* The `foo` attribute is set to `something`.
-* The `bar` attribute is set to `anything`.
-
-[source,oac_no_warn]
-----
-<wombat-container-config>
-    <wombat-element foo="something" bar="anything"/>
-</wombat-container-config>
-----
-
-[[gjses]][[GSACG00077]][[to-write-a-components-initial-configuration-data-to-the-domain.xml-file]]
-
-To Write a Component's Initial Configuration Data to the `domain.xml`
-File
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Add code to write the component's initial configuration data in the
-class that represents your add-on component. If your add-on component is
-a container, add this code to the sniffer class. For more information
-about adding a container, see
-link:adding-container-capabilities.html#ghmon[Adding Container
-Capabilities].
-
-1.  Set an optional dependency on an instance of the class that
-represents the XML element that you are adding.
-1.  Initialize the instance variable to `null`. +
-If the element is not present in the `domain.xml` file when the add-on
-component is initialized, the instance variable remains `null`.
-2.  Annotate the declaration of the instance variable with the
-`org.jvnet.hk2.annotations.Inject` annotation.
-3.  Set the `optional` element of the `@Inject` annotation to `true`.
-2.  Set a dependency on an instance of the following classes:
-* `org.glassfish.api.admin.config.ConfigParser` +
-The `ConfigParser` class provides methods to parse an XML fragment and
-to write the fragment to the correct location in the `domain.xml` file.
-* `org.jvnet.hk2.component.Habitat`
-3.  Invoke the `parseContainerConfig` method of the `ConfigParser`
-object only if the instance is `null`. +
-If your add-on component is a container, invoke this method within the
-implementation of the `setup` method the sniffer class. When the
-container is first instantiated, GlassFish Server invokes the `setup`
-method. +
-The test that the instance is `null` is required to ensure that the
-configuration data is added only if the data is not already present in
-the `domain.xml` file. +
-In the invocation of the `parseContainerConfig` method, pass the
-following items as parameters:
-* The `Habitat` object on which you set a dependency
-* The URL to the file that contains the XML fragment that represents the
-configuration data
-
-[[GSACG00059]][[gkabo]]
-
-
-Example 6-8 Writing a Component's Initial Configuration Data to the
-`domain.xml` File
-
-This example writes the XML fragment in the file `init.xml` to the
-`domain.xml` file. The fragment is written only if the `domain.xml` file
-does not contain the `wombat-container-config-element`.
-
-The `wombat-container-config` element is represented by the
-`WombatContainerConfig` interface. An optional dependency is set on an
-instance of a class that implements `WombatContainerConfig`.
-
-[source,oac_no_warn]
-----
-...
-import org.glassfish.api.admin.config.ConfigParser;
-import org.glassfish.examples.extension.config.WombatContainerConfig;
-...
-import org.jvnet.hk2.annotations.Inject;
-import org.jvnet.hk2.component.Habitat;
-import com.sun.enterprise.module.Module;
-
-import java.util.logging.Logger;
-...
-import java.io.IOException;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Array;
-import java.net.URL;
-...
-    @Inject(optional=true)
-    WombatContainerConfig config=null;
-...
-@Inject
-    ConfigParser configParser;
-
-    @Inject
-    Habitat habitat;
-
-    public Module[] setup(String containerHome, Logger logger) throws IOException {
-        if (config==null) {
-            URL url = this.getClass().getClassLoader().getResource("init.xml");
-            if (url!=null) {
-               configParser.parseContainerConfig(habitat, url,
-                   WombatContainerConfig.class);
-            }
-        }
-        return null;
-    }
-...
-----
-
-[[GSACG00060]][[gjski]]
-
-
-Example 6-9 `domain.xml` File After Initialization
-
-This example shows the `domain.xml` file after the `setup` method was
-invoked to add the `wombat-container-config` element under the `config`
-element.
-
-[source,oac_no_warn]
-----
-<domain...>
-...
-   <configs>
-    <config name="server-config">
-      <wombat-container-config number-of-instances="5">
-        <wombat-element foo="something" bar="anything" />
-      </wombat-container-config>
-      <http-service>
-...
-</domain>
-----
-
-[[gjrcz]][[GSACG00127]][[creating-a-transaction-to-update-configuration-data]]
-
-Creating a Transaction to Update Configuration Data
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Creating a transaction to update configuration data enables the data to
-be updated without the need to specify a dotted name in the
-link:../reference-manual/set.html#GSRFM00226[`set`] subcommand. You can make the transaction
-available to system administrators in the following ways:
-
-* By adding an link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`] subcommand. If you are adding
-an `asadmin` subcommand, include the code for the transaction in the
-body of the subcommand's `execute` method. For more information, see
-link:extending-asadmin.html#ghmrd[Extending the `asadmin` Utility].
-* By extending the Administration Console. For more information, see
-link:extending-the-admin-console.html#ghmrb[Extending the Administration
-Console].
-
-[[gkakw]][[GSACG00078]][[to-create-a-transaction-to-update-configuration-data]]
-
-To Create a Transaction to Update Configuration Data
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Any transaction that you create to modify configuration data must use a
-configuration change transaction to ensure that the change is atomic,
-consistent, isolated, and durable (ACID).
-
-1.  [[gkakq]]
-Set a dependency on the configuration object to update.
-2.  [[gkalq]]
-Define a method to invoke to perform the transaction.
-
-1.  Use the generic `SimpleConfigCode` interface to define the method
-that is to be invoked on a single configuration object, namely:
-`SingleConfigCode<T extends ConfigBeanProxy>()`.
-2.  In the body of this method, implement the `run` method of the
-`SingleConfigCode<T extends ConfigBeanProxy>` interface.
-3.  In the body of the `run` method, invoke the setter methods that are
-defined for the attributes that you are setting. +
-These setter methods are defined in the interface that represents the
-element whose elements you are setting.
-3.  Invoke the static method
-`org.jvnet.hk2.config.ConfigSupport.ConfigSupport.apply`. +
-In the invocation, pass the following information as parameters to the
-method:
-* The code of the method that you defined in Step  link:#gkalq[2].
-* The configuration object to update, on which you set the dependency in
-Step link:#gkakq[1].
-
-[[sthref9]]
-
-Example 6-10 Creating a Transaction to Update Configuration Data
-
-This example shows code in the `execute` method of an `asadmin`
-subcommand for updating the `number-of-instances` element of
-`wombat-container-config` element.
-
-[source,oac_no_warn]
-----
-...
-import org.glassfish.api.Param;
-...
-import org.jvnet.hk2.annotations.Inject;
-import org.jvnet.hk2.config.Transactions;
-import org.jvnet.hk2.config.ConfigSupport;
-import org.jvnet.hk2.config.SingleConfigCode;
-import org.jvnet.hk2.config.TransactionFailure;
-...
-    @Param
-    String instances;
-
-    @Inject
-    WombatContainerConfig config;
-
-    public void execute(AdminCommandContext adminCommandContext) {
-        try {
-            ConfigSupport.apply(new SingleConfigCode<WombatContainerConfig>() {
-                public Object run(WombatContainerConfig wombatContainerConfig)
-                        throws PropertyVetoException, TransactionFailure {
-                    wombatContainerConfig.setNumberOfInstances(instances);
-                    return null;
-                }
-            }, config);
-        } catch(TransactionFailure e) {
-        }
-    }
-...
-----
-
-[[gjmkt]][[GSACG00128]][[dotted-names-and-rest-urls-of-configuration-attributes]]
-
-Dotted Names and REST URLs of Configuration Attributes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The GlassFish Server administrative subcommands link:../reference-manual/get.html#GSRFM00139[`get`],
-link:../reference-manual/list.html#GSRFM00145[`list`], and olink:GSRFM00226[`set`] locate a
-configuration attribute through the dotted name of the attribute. The
-dotted name of an attribute of a configuration element is as follows:
-
-[source,oac_no_warn]
-----
-configs.config.server-config.element-name[.subelement-name...].attribute-name
-----
-
-element-name::
-  The name of an element that contains a subelement or the attribute.
-subelement-name::
-  The name of a subelement, if any.
-attribute-name::
-  The name of the attribute.
-
-For example, the dotted name of the `foo` attribute of the
-`wombat-element` element is as follows:
-
-[source,oac_no_warn]
-----
-configs.config.server-config.wombat-container-config.wombat-element.foo
-----
-
-The formats of the URL to a REST resource that represent an attribute of
-a configuration element is as follows:
-
-[source,oac_no_warn]
-----
-http://host:port/management/domain/path
-----
-
-host::
-  The host where the DAS is running.
-port::
-  The HTTP port or HTTPS port for administration.
-path::
-  The path to the attribute. The path is the dotted name of the
-  attribute in which each dot (`.`) is replaced with a slash (`/`).
-
-For example, the URL to the REST resource for the `foo` attribute of the
-`wombat-element` element is as follows:
-
-[source,oac_no_warn]
-----
-http://localhost:4848/management/domain/configs/config/server-config/
-wombat-container-config/wombat-element/foo
-----
-
-In this example, the DAS is running on the local host and the HTTP port
-for administration is 4848.
-
-[[gkaal]][[GSACG00131]][[examples-of-adding-configuration-data-for-a-component]]
-
-Examples of Adding Configuration Data for a Component
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This example shows the interfaces that define the configuration data for
-the Greeter Container component. The data is comprised of the following
-elements:
-
-* A parent element, which is shown in link:#gkamy[Example 6-11]
-* A subelement that is contained by the parent element, which is shown
-in link:#gkamb[Example 6-12]
-
-This example also shows an XML data fragment for initializing an
-element. See link:#gkamk[Example 6-13].
-
-Code for the Greeter Container component is shown in
-link:adding-container-capabilities.html#gkane[Example of Adding Container
-Capabilities].
-
-Code for an `asadmin` subcommand that updates the configuration data in
-this example is shown in link:extending-asadmin.html#gkbdf[Example 4-7].
-
-[[GSACG00061]][[gkamy]]
-
-
-Example 6-11 Parent Element Definition
-
-This example shows the definition of the `greeter-container-config`
-element. The attributes of the `greeter-container-config` element are as
-follows:
-
-* `number-of-instances`, which must be in the range 1-10.
-* `language`, which must contain only non-whitespace characters.
-* `style`, which must contain only non-whitespace characters.
-
-The `greeter-element` element is identified as a subelement of the
-`greeter-container-config` element. The definition of the
-`greeter-element` element is shown in link:#gkamb[Example 6-12].
-
-[source,oac_no_warn]
-----
-package org.glassfish.examples.extension.greeter.config;
-
-import org.jvnet.hk2.config.Configured;
-import org.jvnet.hk2.config.Attribute;
-import org.jvnet.hk2.config.Element;
-import org.glassfish.api.admin.config.Container;
-
-import jakarta.validation.constraints.Pattern;
-import jakarta.validation.constraints.Min;
-import jakarta.validation.constraints.Max;
-
-import java.beans.PropertyVetoException;
-
-@Configured
-public interface GreeterContainerConfig extends Container {
-
-    @Attribute
-    @Min(value=1)
-    @Max (value=10)
-    public String getNumberOfInstances();
-    public void setNumberOfInstances(String instances) throws PropertyVetoException;
-
-    @Attribute
-    @Pattern(regexp = "^[\\S]*$")
-    public String getLanguage();
-    public void setLanguage(String language) throws PropertyVetoException;
-
-    @Attribute
-    @Pattern(regexp = "^[\\S]*$")
-    public String getStyle();
-    public void setStyle(String style) throws PropertyVetoException;
-
-    @Element
-    public GreeterElement getElement();
-    public void setElement(GreeterElement element) throws PropertyVetoException;
-
-
-}
-----
-
-[[GSACG00062]][[gkamb]]
-
-
-Example 6-12 Subelement Definition
-
-This example shows the definition of the `greeter-element` element,
-which is identified as a subelement of the `greeter-container-config`
-element in link:#gkamy[Example 6-11]. The only attribute of the
-`greeter-element` element is `greeter-port`, which must be in the range
-1030-1050.
-
-[source,oac_no_warn]
-----
-package org.glassfish.examples.extension.greeter.config;
-
-import org.jvnet.hk2.config.ConfigBeanProxy;
-import org.jvnet.hk2.config.Configured;
-import org.jvnet.hk2.config.Attribute;
-
-import jakarta.validation.constraints.Min;
-import jakarta.validation.constraints.Max;
-
-import java.beans.PropertyVetoException;
-
-@Configured
-public interface GreeterElement extends ConfigBeanProxy {
-
-    @Attribute
-    @Min(value=1030)
-    @Max (value=1050)
-    public String getGreeterPort();
-    public void setGreeterPort(String greeterport) throws PropertyVetoException;
-
-}
-----
-
-[[GSACG00063]][[gkamk]]
-
-
-Example 6-13 XML Data Fragment for Initializing the
-`greeter-container-config` Element
-
-This example shows the XML data fragment for adding the
-`greeter-container-config` element to the `domain.xml` file. The
-`greeter-container-config` element contains the subelement
-`greeter-element`.
-
-The attributes of `greeter-container-config` are initialized as follows:
-
-* The `number-of-instances` attribute is set to `5`.
-* The `language` attribute is set to `norsk`.
-* The `style` element is set to `formal`.
-
-The `greeter-port` attribute of the `greeter-element` element is set to
-`1040`.
-
-[source,oac_no_warn]
-----
-<greeter-container-config number-of-instances="5" language="norsk" style="formal">
-    <greeter-element greeter-port="1040"/>
-</greeter-container-config>
-----
-
-The definition of the `greeter-container-config` element is shown in
-link:#gkamy[Example 6-11]. The definition of the `greeter-element`
-element is shown in link:#gkamb[Example 6-12].
-
-----
diff --git a/docs/add-on-component-development-guide/src/main/jbake/content/adding-container-capabilities.adoc b/docs/add-on-component-development-guide/src/main/jbake/content/adding-container-capabilities.adoc
deleted file mode 100644
index 302a0e3..0000000
--- a/docs/add-on-component-development-guide/src/main/jbake/content/adding-container-capabilities.adoc
+++ /dev/null
@@ -1,863 +0,0 @@
-type=page
-status=published
-title=Adding Container Capabilities
-next=session-persistence-modules.html
-prev=adding-configuration-data.html
-~~~~~~
-Adding Container Capabilities
-=============================
-
-[[GSACG00007]][[ghmon]]
-
-
-[[adding-container-capabilities]]
-7 Adding Container Capabilities
--------------------------------
-
-Applications run on Eclipse GlassFish Server in containers. GlassFish Server
-enables you to create containers that extend or replace the existing
-containers of GlassFish Server. Adding container capabilities enables
-you to run new types of applications and to deploy new archive types in
-GlassFish Server.
-
-The following topics are addressed here:
-
-* link:#ghpjl[Creating a `Container` Implementation]
-* link:#ghozu[Adding an Archive Type]
-* link:#ghphp[Creating Connector Modules]
-* link:#gkane[Example of Adding Container Capabilities]
-
-[[ghpjl]][[GSACG00132]][[creating-a-container-implementation]]
-
-Creating a `Container` Implementation
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-To implement a container that extends or replaces a service in GlassFish
-Server, you must create a Java programming language class that includes
-the following characteristics:
-
-* It is annotated with the `org.jvnet.hk2.annotations.Service`
-annotation.
-* It implements the `org.glassfish.api.container.Container` interface.
-
-You should also run the HK2 Inhabitants Generator utility on your class
-files, which adds classes marked with the `@Service` annotation to the
-`META-INF/hk2-locator/default` file in your JAR file. For more
-information about the HK2 Inhabitants Generator, see the
-https://hk2.java.net/inhabitant-generator.html[HK2 Inhabitants Generator
-page].
-
-[[ghogv]][[GSACG00234]][[marking-the-class-with-the-service-annotation]]
-
-Marking the Class With the `@Service` Annotation
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Add a `com.jvnet.hk2.annotations.Service` annotation at the class
-definition level to identify your class as a service implementation.
-
-[source,oac_no_warn]
-----
-@Service
-public class MyContainer implements Container {
-...
-}
-----
-
-To avoid potential name collisions with other containers, use the fully
-qualified class name of your container class in the `@Service`
-annotation's `name` element:
-
-[source,oac_no_warn]
-----
-package com.example.containers;
-...
-
-@Service @jakarta.inject.Named("com.example.containers.MyContainer")
-public class MyContainer implements Container {
-...
-}
-----
-
-[[ghohg]][[GSACG00235]][[implementing-the-container-interface]]
-
-Implementing the `Container` Interface
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The `org.glassfish.api.container.Container` interface is the contract
-that defines a container implementation. Classes that implement
-`Container` can extend or replace the functionality in GlassFish Server
-by allowing applications to be deployed and run within the GlassFish
-Server runtime.
-
-The `Container` interface consists of two methods, `getDeployer` and
-`getName`. The `getDeployer` method returns an implementation class of
-the `org.glassfish.api.deployment.Deployer` interface capable of
-managing applications that run within this container. The `getName`
-method returns a human-readable name for the container, and is typically
-used to display messages belonging to the container.
-
-The `Deployer` interface defines the contract for managing a particular
-application that runs in the container. It consists of the following
-methods:
-
-`getMetaData`::
-  Retrieves the metadata used by the `Deployer` instance, and returns an
-  `org.glassfish.api.deployment.MetaData` object.
-`loadMetaData`::
-  Loads the metadata associated with an application.
-`prepare`::
-  Prepares the application to run in GlassFish Server.
-`load`::
-  Loads a previously prepared application to the container.
-`unload`::
-  Unloads or stops a previously loaded application.
-`clean`::
-  Removes any artifacts generated by an application during the `prepare`
-  phase.
-
-The `DeploymentContext` is the usual context object passed around
-deployer instances during deployment.
-
-[[GSACG00064]][[ghojg]]
-
-
-Example 7-1 Example Implementation of `Container`
-
-This example shows a Java programming language class that implements the
-`Container` interface and is capable of extending the functionality of
-GlassFish Server.
-
-[source,oac_no_warn]
-----
-package com.example.containers;
-contains
-@Service(name="com.example.containers.MyContainer")
-public class MyContainer implements Container {
-    public String getName() {
-        return "MyContainer";
-    }
-
-    public Class<? extends org.glassfish.api.deployment.Deployer> getDeployer() {
-        return MyDeployer.class;
-    }
-}
-----
-
-[[GSACG00065]][[ghoiv]]
-
-
-Example 7-2 Example Implementation of `Deployer`
-
-[source,oac_no_warn]
-----
-package com.example.containers;
-
-@Service
-public class MyDeployer {
-
-    public MetaData getMetaData() {
-        return new MetaData(...);
-    }
-
-    public <V> v loadMetaData(Class<V> type, DeploymentContext dc) {
-        ...
-    }
-
-    public boolean prepare(DeploymentContext dc) {
-        // performs any actions needed to allow the application to run,
-        // such as generating artifacts
-        ...
-    }
-
-    public MyApplication load(MyContainer container, DeploymentContext dc) {
-        // creates a new instance of an application
-        MyApplication myApp = new MyApplication (...);
-        ...
-        // returns the application instance
-        return myApp;
-    }
-
-    public void unload(MyApplication myApp, DeploymentContext dc) {
-        // stops and removes the application
-        ...
-    }
-
-    public void clean (DeploymentContext dc) {
-        // cleans up any artifacts generated during prepare()
-        ...
-    }
-}
-----
-
-[[ghozu]][[GSACG00133]][[adding-an-archive-type]]
-
-Adding an Archive Type
-~~~~~~~~~~~~~~~~~~~~~~
-
-An archive type is an abstraction of the archive file format. An archive
-type can be implemented as a plain JAR file, as a directory layout, or a
-custom type. By default, GlassFish Server recognizes JAR based and
-directory based archive types. A new container might require a new
-archive type.
-
-There are two sub-interfaces of the
-`org.glassfish.api.deployment.archive.Archive` interface,
-`org.glassfish.api.deployment.archive.ReadableArchive` and
-`org.glassfish.api.deployment.archive.WritableArchive`. Typically
-developers of new archive types will provide separate implementations of
-`ReadableArchive` and `WritableArchive`, or a single implementation that
-implements both `ReadableArchive` and `WritableArchive`.
-
-Implementations of the `ReadableArchive` interface provide read access
-to an archive type. `ReadableArchive` defines the following methods:
-
-`getEntry(String name)`::
-  Returns a `java.io.InputStream` for the specified entry name, or null
-  if the entry doesn't exist.
-`exists(String name)`::
-  Returns a `boolean` value indicating whether the specified entry name
-  exists.
-`getEntrySize(String name)`::
-  Returns the size of the specified entry as a `long` value.
-`open(URI uri)`::
-  Returns an archive for the given `java.net.URI`.
-`getSubArchive(String name)`::
-  Returns an instance of `ReadableArchive` for the specified sub-archive
-  contained within the parent archive, or null if no such archive
-  exists.
-`exists()`::
-  Returns a `boolean` value indicating whether this archive exists.
-`delete()`::
-  Deletes the archive, and returns a `boolean` value indicating whether
-  the archive has been successfully deleted.
-`renameTo(String name)`::
-  Renames the archive to the specified name, and returns a `boolean`
-  value indicating whether the archive has been successfully renamed.
-
-Implementations of the `WritableArchive` interface provide write access
-to the archive type. `WritableArchive` defines the following methods:
-
-`create(URI uri)`::
-  Creates a new archive with the given path, specified as a
-  `java.net.URI`.
-`closeEntry(WritableArchive subArchive)`::
-  Closes the specified sub-archive contained within the parent archive.
-`closeEntry()`::
-  Closes the current entry.
-`createSubArchive(String name)`::
-  Creates a new sub-archive in the parent archive with the specified
-  name, and returns it as a `WritableArchive` instance.
-`putNextEntry(String name)`::
-  Creates a new entry in the archive with the specified name, and
-  returns it as a `java.io.OutputStream`.
-
-[[ghoyp]][[GSACG00236]][[implementing-the-archivehandler-interface]]
-
-Implementing the `ArchiveHandler` Interface
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-An archive handler is responsible for handling the particular layout of
-an archive. Jakarta EE defines a set of archives (WAR, JAR, and RAR, for
-example), and each of these archives has an `ArchiveHandler` instance
-associated with the archive type.
-
-Each layout should have one handler associated with it. There is no
-extension point support at this level; the archive handler's
-responsibility is to give access to the classes and resources packaged
-in the archive, and it should not contain any container-specific code.
-The `java.lang.ClassLoader` returned by the handler is used by all the
-containers in which the application will be deployed.
-
-`ArchiveHandler` defines the following methods:
-
-`getArchiveType()`::
-  Returns the name of the archive type as a `String`. Typically, this is
-  the archive extension, such as `jar` or `war`.
-`getDefaultApplicationName(ReadableArchive archive)`::
-  Returns the default name of the specified archive as a `String`.
-  Typically this default name is the name part of the `URI` location of
-  the archive.
-`handles(ReadableArchive archive)`::
-  Returns a `boolean` value indicating whether this implementation of
-  `ArchiveHandler` can work with the specified archive.
-`getClassLoader(DeploymentContext dc)`::
-  Returns a `java.lang.ClassLoader` capable of loading all classes from
-  the archive passed in by the `DeploymentContext` instance. Typically
-  the `ClassLoader` will load classes in the scratch directory area,
-  returned by `DeploymentContext.getScratchDir()`, as stubs and other
-  artifacts are generated in the scratch directory.
-`expand(ReadableArchive source, WritableArchive target)`::
-  Prepares the `ReadableArchive`source archive for loading into the
-  container in a format the container accepts. Such preparation could be
-  to expand a compressed archive, or possibly nothing at all if the
-  source archive format is already in a state that the container can
-  handle. This method returns the archive as an instance of
-  `WritableArchive`.
-
-[[ghphp]][[GSACG00134]][[creating-connector-modules]]
-
-Creating Connector Modules
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Connector modules are small add-on modules that consist of application
-"sniffers" that associate application types with containers that can run
-the application type. GlassFish Server connector modules are separate
-from the associated add-on module that delivers the container
-implementation to allow GlassFish Server to dynamically install and
-configure containers on demand.
-
-When a deployment request is received by the GlassFish Server runtime:
-
-1.  The current `Sniffer` implementations are used to determine the
-application type.
-2.  Once an application type is found, the runtime looks for a running
-container associated with that application type. If no running container
-is found, the runtime attempts to install and configure the container
-associated with the application type as defined by the `Sniffer`
-implementation.
-3.  The `Deployer` interface is used to prepare and load the
-implementation.
-
-[[ghozd]][[GSACG00237]][[associating-file-types-with-containers-by-using-the-sniffer-interface]]
-
-Associating File Types With Containers by Using the `Sniffer` Interface
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Containers do not necessarily need to be installed on the local machine
-for GlassFish Server to recognize the container's application type.
-GlassFish Server uses a "sniffer" concept to study the artifacts in a
-deployment request and to choose the associated container that handles
-the application type that the user is trying to deploy. To create this
-association, create a Java programming language class that implements
-the `org.glassfish.api.container.Sniffer` interface. This implementation
-can be as simple as looking for a specific file in the application's
-archive (such as the presence of `WEB-INF/web.xml`), or as complicated
-as running an annotation scanner to determine an XML-less archive (such
-as enterprise bean annotations in a JAR file). A `Sniffer`
-implementation must be as small as possible and must not load any of the
-container's runtime classes.
-
-A simple version of a `Sniffer` implementation uses the `handles` method
-to check the existence of a file in the archive that denotes the
-application type (as `WEB-INF/web.xml` denotes a web application). Once
-a `Sniffer` implementation has detected that it can handle the
-deployment request artifact, GlassFish Server calls the `setUp` method.
-The `setUp` method is responsible for setting up the container, which
-can involve one or more of the following actions:
-
-* Downloading the container's runtime (the first time that a container
-is used)
-* Installing the container's runtime (the first time that a container is
-used)
-* Setting up one or more repositories to access the runtime's classes
-(these are implementations of the HK2
-`com.sun.enterprise.module.Repository` interface, such as the
-`com.sun.enterprise.module.impl.DirectoryBasedRepository` class)
-
-The `setUp` method returns an array of the
-`com.sun.enterprise.module.Module` objects required by the container.
-
-The `Sniffer` interface defines the following methods:
-
-`handles(ReadableArchive source, ClassLoader loader)`::
-  Returns a `boolean` value indicating whether this `Sniffer`
-  implementation can handle the specified archive.
-`getURLPatterns()`::
-  Returns a `String` array containing all URL patterns to apply against
-  the request URL. If a pattern matches, the service method of the
-  associated container is invoked.
-`getAnnotationTypes()`::
-  Returns a list of annotation types recognized by this `Sniffer`
-  implementation. If an application archive contains one of the returned
-  annotation types, the deployment process invokes the container's
-  deployers as if the `handles` method had returned true.
-`getModuleType()`::
-  Returns the module type associated with this `Sniffer` implementation
-  as a `String`.
-`setup(String containerHome, Logger logger)`::
-  Sets up the container libraries so that any dependent bundles from the
-  connector JAR file will be made available to the HK2 runtime. The
-  `setup` method returns an array of `com.sun.enterprise.module.Module`
-  classes, which are definitions of container implementations. GlassFish
-  Server can then load these modules so that it can create an instance
-  of the container's `Deployer` or `Container` implementations when it
-  needs to. The module is locked as long as at least one module is
-  loaded in the associated container.
-`teardown()`::
-  Removes a container and all associated modules in the HK2 modules
-  subsystem.
-`getContainerNames()`::
-  Returns a `String` array containing the `Container` implementations
-  that this `Sniffer` implementation enables.
-`isUserVisible()`::
-  Returns a `boolean` value indicating whether this `Sniffer`
-  implementation should be visible to end-users.
-`getDeploymentConfigurations(final ReadableArchive source)`::
-  Returns a `Map<String, String>` of deployment configuration names to
-  configurations from this `Sniffer` implementation for the specified
-  application (the archive source). The names are created by GlassFish
-  Server; the configurations are the names of the files that contain
-  configuration information (for example, `WEB-INF/web.xml` and possibly
-  `WEB-INF/sun-web.xml` for a web application). If the
-  `getDeploymentConfigurations` method encounters errors while searching
-  or reading the specified archive source, it throws a
-  `java.io.IOException`.
-
-[[ghpbx]][[GSACG00172]][[making-sniffer-implementations-available-to-the-glassfish-server]]
-
-Making `Sniffer` Implementations Available to the GlassFish Server
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-Package `Sniffer` implementation code into modules and install the
-modules in the as-install`/modules` directory. GlassFish Server will
-automatically discover these modules. If an administrator installs
-connector modules that contain`Sniffer` implementations while GlassFish
-Server is running, GlassFish Server will pick them up at the next
-deployment request.
-
-[[gkane]][[GSACG00135]][[example-of-adding-container-capabilities]]
-
-Example of Adding Container Capabilities
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This example shows a custom container and a web client of the container.
-The example is comprised of the following code:
-
-* Code for the container, which is shown in link:#gkbah[Container
-Component Code]
-* Code for a web client of the container, which is shown in
-link:#gkbcq[Web Client Code]
-
-Code that defines the configuration data for the container component is
-shown in link:adding-configuration-data.html#gkaal[Examples of Adding
-Configuration Data for a Component].
-
-Code for an `asadmin` subcommand that updates the configuration data in
-this example is shown in link:extending-asadmin.html#gkbdf[Example 4-7].
-
-[[gkbah]][[GSACG00238]][[container-component-code]]
-
-Container Component Code
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-The container component code is comprised of the classes and interfaces
-that are listed in the following table. The table also provides a
-cross-reference to the listing of each class or interface.
-
-[width="100%",cols="<50%,<50%",options="header",]
-|==============================================
-|Class or Interface |Listing
-|`Greeter` |link:#gkamr[Example 7-3] +
-|`GreeterContainer` |link:#gkand[Example 7-4] +
-|`GreeterContainer` |link:#gkamm[Example 7-5] +
-|`GreeterDeployer` |link:#gkalo[Example 7-6] +
-|`GreeterSniffer` |link:#gkaks[Example 7-7] +
-|==============================================
-
-
-[[GSACG00066]][[gkamr]]
-
-
-Example 7-3 Annotation to Denote a Container's Component
-
-This example shows the code for defining a component of the `Greeter`
-container.
-
-[source,oac_no_warn]
-----
-package org.glassfish.examples.extension.greeter;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-/**
- * Simple annotation to denote Greeter's component
- */
-@Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
-public @interface Greeter {
-
-    /**
-     * Name to uniquely identify different greeters
-     *
-     * @return a good greeter name
-     */
-    public String name();
-}
-----
-
-[[GSACG00067]][[gkand]]
-
-
-Example 7-4 Application Container Class
-
-This example shows the Java language class `GreeterAppContainer`, which
-implements the `ApplicationContainer` interface.
-
-[source,oac_no_warn]
-----
-package org.glassfish.examples.extension.greeter;
-
-import org.glassfish.api.deployment.ApplicationContainer;
-import org.glassfish.api.deployment.ApplicationContext;
-import org.glassfish.api.deployment.archive.ReadableArchive;
-
-import java.util.List;
-import java.util.ArrayList;
-
-public class GreeterAppContainer implements ApplicationContainer {
-
-    final GreeterContainer ctr;
-    final List<Class> componentClasses = new ArrayList<Class>();
-
-    public GreeterAppContainer(GreeterContainer ctr) {
-        this.ctr = ctr;
-    }
-
-    void addComponent(Class componentClass) {
-        componentClasses.add(componentClass);
-    }
-
-    public Object getDescriptor() {
-        return null;
-    }
-
-    public boolean start(ApplicationContext startupContext) throws Exception {
-        for (Class componentClass : componentClasses) {
-            try {
-                Object component = componentClass.newInstance();
-                Greeter greeter = (Greeter)
-                     componentClass.getAnnotation(Greeter.class);
-                ctr.habitat.addComponent(greeter.name(), component);
-            } catch(Exception e) {
-                throw new RuntimeException(e);
-            }
-        }
-        return true;
-    }
-
-    public boolean stop(ApplicationContext stopContext) {
-        for (Class componentClass : componentClasses) {
-            ctr.habitat.removeAllByType(componentClass);
-        }
-        return true;
-    }
-
-    public boolean suspend() {
-        return false;
-    }
-
-    public boolean resume() throws Exception {
-        return false;
-    }
-
-    public ClassLoader getClassLoader() {
-        return null;
-    }
-}
-----
-
-[[GSACG00068]][[gkamm]]
-
-
-Example 7-5 Container Class
-
-This example shows the Java language class `GreeterContainer`, which
-implements the `Container` interface.
-
-[source,oac_no_warn]
-----
-package org.glassfish.examples.extension.greeter;
-
-import org.glassfish.api.container.Container;
-import org.glassfish.api.deployment.Deployer;
-import org.jvnet.hk2.annotations.Service;
-import org.jvnet.hk2.annotations.Inject;
-import org.jvnet.hk2.component.Habitat;
-
-@Service(name="org.glassfish.examples.extension.GreeterContainer")
-public class GreeterContainer implements Container {
-
-    @Inject
-    Habitat habitat;
-
-    public Class<? extends Deployer> getDeployer() {
-        return GreeterDeployer.class;
-    }
-
-    public String getName() {
-        return "greeter";
-    }
-}
-----
-
-[[GSACG00069]][[gkalo]]
-
-
-Example 7-6 Deployer Class
-
-This example shows the Java language class `GreeterDeployer`, which
-implements the `Deployer` interface.
-
-[source,oac_no_warn]
-----
-package org.glassfish.examples.extension.greeter;
-
-import org.glassfish.api.deployment.Deployer;
-import org.glassfish.api.deployment.MetaData;
-import org.glassfish.api.deployment.DeploymentContext;
-import org.glassfish.api.deployment.ApplicationContainer;
-import org.glassfish.api.deployment.archive.ReadableArchive;
-import org.glassfish.api.container.Container;
-import org.jvnet.hk2.annotations.Service;
-
-import java.util.Enumeration;
-
-@Service
-public class GreeterDeployer
-    implements Deployer<GreeterContainer, GreeterAppContainer> {
-
-    public MetaData getMetaData() {
-        return null;
-    }
-
-    public <V> V loadMetaData(Class<V> type, DeploymentContext context) {
-        return null;
-    }
-
-    public boolean prepare(DeploymentContext context) {
-        return false;
-    }
-
-    public GreeterAppContainer load(
-        GreeterContainer container, DeploymentContext context) {
-
-        GreeterAppContainer appCtr = new GreeterAppContainer(container);
-        ClassLoader cl = context.getClassLoader();
-
-        ReadableArchive ra = context.getOriginalSource();
-        Enumeration<String> entries = ra.entries();
-        while (entries.hasMoreElements()) {
-            String entry = entries.nextElement();
-            if (entry.endsWith(".class")) {
-                String className = entryToClass(entry);
-                try {
-                    Class componentClass = cl.loadClass(className);
-                    // ensure it is one of our component
-                    if (componentClass.isAnnotationPresent(Greeter.class)) {
-                        appCtr.addComponent(componentClass);
-                    }
-                } catch(Exception e) {
-                    throw new RuntimeException(e);
-                }
-
-            }
-        }
-        return appCtr;
-    }
-
-    public void unload(GreeterAppContainer appContainer, DeploymentContext context) {
-
-    }
-
-    public void clean(DeploymentContext context) {
-
-    }
-
-    private String entryToClass(String entry) {
-        String str = entry.substring("WEB-INF/classes/".length(), entry.length()-6);
-        return str.replaceAll("/", ".");
-    }
-}
-----
-
-[[GSACG00070]][[gkaks]]
-
-
-Example 7-7 Sniffer Class
-
-This example shows the Java language class `GreeterSniffer`, which
-implements the `Sniffer` interface.
-
-[source,oac_no_warn]
-----
-package org.glassfish.examples.extension.greeter;
-
-import org.glassfish.api.container.Sniffer;
-import org.glassfish.api.deployment.archive.ReadableArchive;
-import org.glassfish.api.admin.config.ConfigParser;
-import org.glassfish.examples.extension.greeter.config.GreeterContainerConfig;
-import org.jvnet.hk2.annotations.Service;
-import org.jvnet.hk2.annotations.Inject;
-import org.jvnet.hk2.component.Habitat;
-import com.sun.enterprise.module.Module;
-
-import java.util.logging.Logger;
-import java.util.Map;
-import java.io.IOException;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Array;
-import java.net.URL;
-
-/**
- * @author Jerome Dochez
- */
-@Service(name="greeter")
-public class GreeterSniffer implements Sniffer {
-
-    @Inject(optional=true)
-    GreeterContainerConfig config=null;
-
-    @Inject
-    ConfigParser configParser;
-
-    @Inject
-    Habitat habitat;
-
-    public boolean handles(ReadableArchive source, ClassLoader loader) {
-        return false;
-    }
-
-    public String[] getURLPatterns() {
-        return new String[0];
-    }
-
-    public Class<? extends Annotation>[] getAnnotationTypes() {
-        Class<? extends Annotation>[] a = (Class<? extends Annotation>[]) Array.newInstance(Class.class, 1);
-        a[0] = Greeter.class;
-        return a;
-    }
-
-    public String getModuleType() {
-        return "greeter";
-    }
-
-    public Module[] setup(String containerHome, Logger logger) throws IOException {
-        if (config==null) {
-            URL url = this.getClass().getClassLoader().getResource("init.xml");
-            if (url!=null) {
-                configParser.parseContainerConfig(
-                    habitat, url, GreeterContainerConfig.class);
-            }
-        }
-        return null;
-    }
-
-    public void tearDown() {
-
-    }
-
-    public String[] getContainersNames() {
-        String[] c = { GreeterContainer.class.getName() };
-        return c;
-    }
-
-    public boolean isUserVisible() {
-        return true;
-    }
-
-    public Map<String, String> getDeploymentConfigurations
-        (ReadableArchive source) throws IOException {
-        return null;
-    }
-
-    public String[] getIncompatibleSnifferTypes() {
-        return new String[0];
-    }
-}
-----
-
-[[gkbcq]][[GSACG00239]][[web-client-code]]
-
-Web Client Code
-^^^^^^^^^^^^^^^
-
-The web client code is comprised of the classes and resources that are
-listed in the following table. The table also provides a cross-reference
-to the listing of each class or resource.
-
-[width="100%",cols="<50%,<50%",options="header",]
-|==================================================
-|Class or Resource |Listing
-|`HelloWorld` |link:#gkaki[Example 7-8] +
-|`SimpleGreeter` |link:#gkalf[Example 7-9] +
-|Deployment descriptor |link:#gkaly[Example 7-10] +
-|==================================================
-
-
-[[GSACG00071]][[gkaki]]
-
-
-Example 7-8 Container Client Class
-
-[source,oac_no_warn]
-----
-import components.SimpleGreeter;
-
-import java.io.IOException;
-import java.io.PrintWriter;
-import jakarta.servlet.annotation.WebServlet;
-import jakarta.servlet.*;
-import jakarta.servlet.http.*;
-import jakarta.annotation.Resource;
-
-
-@WebServlet(urlPatterns={"/hello"})
-public class HelloWorld extends HttpServlet {
-
-    @Resource(name="Simple")
-    SimpleGreeter greeter;
-
-    public void doGet(HttpServletRequest req, HttpServletResponse res)
-            throws IOException, ServletException {
-
-
-        PrintWriter pw = res.getWriter();
-        try {
-            pw.println("Injected service is " + greeter);
-            if (greeter!=null) {
-                pw.println("SimpleService says " + greeter.saySomething());
-                pw.println("<br>");
-            }
-                } catch(Exception e) {
-                e.printStackTrace();
-        }
-    }
-}
-----
-
-[[GSACG00072]][[gkalf]]
-
-
-Example 7-9 Component for Container Client
-
-[source,oac_no_warn]
-----
-package components;
-
-import org.glassfish.examples.extension.greeter.Greeter;
-
-@Greeter(name="simple")
-public class SimpleGreeter {
-
-    public String saySomething() {
-        return "Bonjour";
-    }
-}
-----
-
-[[GSACG00073]][[gkaly]]
-
-
-Example 7-10 Deployment Descriptor for Container Client
-
-[source,oac_no_warn]
-----
-<?xml version="1.0" encoding="UTF-8"?>
-<web-app version="3.1"
-  xmlns="http://xmlns.jcp.org/xml/ns/javaee"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation=
-    "http://xmlns.jcp.org/xml/ns/javaee
-    http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
-</web-app>
-----
diff --git a/docs/add-on-component-development-guide/src/main/jbake/content/adding-monitoring-capabilities.adoc b/docs/add-on-component-development-guide/src/main/jbake/content/adding-monitoring-capabilities.adoc
deleted file mode 100644
index a9ad697..0000000
--- a/docs/add-on-component-development-guide/src/main/jbake/content/adding-monitoring-capabilities.adoc
+++ /dev/null
@@ -1,1198 +0,0 @@
-type=page
-status=published
-title=Adding Monitoring Capabilities
-next=adding-configuration-data.html
-prev=extending-asadmin.html
-~~~~~~
-Adding Monitoring Capabilities
-==============================
-
-[[GSACG00005]][[ghmos]]
-
-
-[[adding-monitoring-capabilities]]
-5 Adding Monitoring Capabilities
---------------------------------
-
-Monitoring is the process of reviewing the statistics of a system to
-improve performance or solve problems. By monitoring the state of
-components and services that are deployed in the GlassFish Server,
-system administrators can identify performance bottlenecks, predict
-failures, perform root cause analysis, and ensure that everything is
-functioning as expected. Monitoring data can also be useful in
-performance tuning and capacity planning.
-
-An add-on component typically generates statistics that the Eclipse GlassFish
-Server can gather at run time. Adding monitoring capabilities enables an
-add-on component to provide statistics to GlassFish Server in the same
-way as components that are supplied in GlassFish Server distributions.
-As a result, system administrators can use the same administrative
-interfaces to monitor statistics from any installed GlassFish Server
-component, regardless of the origin of the component.
-
-The following topics are addressed here:
-
-* link:#ghopc[Defining Statistics That Are to Be Monitored]
-* link:#ghplw[Updating the Monitorable Object Tree]
-* link:#ghrma[Dotted Names and REST URLs for an Add-On Component's
-Statistics]
-* link:#ghptj[Example of Adding Monitoring Capabilities]
-
-[[ghopc]][[GSACG00116]][[defining-statistics-that-are-to-be-monitored]]
-
-Defining Statistics That Are to Be Monitored
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-At runtime, your add-on component might perform operations that affect
-the behavior and performance of your system. For example, your component
-might start a thread of control, receive a request from a service, or
-request a connection from a connection pool. Monitoring the statistics
-that are related to these operations helps a system administrator
-maintain the system.
-
-To provide statistics to GlassFish Server, your component must define
-events for the operations that generate these statistics. At runtime,
-your component must send these events when performing the operations for
-which the events are defined. For example, to enable the number of
-received requests to be monitored, a component must send a "request
-received" event each time that the component receives a request.
-
-A statistic can correspond to single event or to multiple events.
-
-* Counter statistics typically correspond to a single event. For
-example, to calculate the number of received requests, only one event is
-required, for example, a "request received" event. Every time that a
-"request received" event is sent, the number of received requests is
-increased by 1.
-* Timer statistics typically correspond to multiple events. For example,
-to calculate the time to process a request, two requests, for example, a
-"request received" event and a "request completed" event.
-
-Defining statistics that are to be monitored involves the following
-tasks:
-
-* link:#gkadk[Defining an Event Provider]
-* link:#ghprg[Sending an Event]
-
-[[gkadk]][[GSACG00220]][[defining-an-event-provider]]
-
-Defining an Event Provider
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-An event provider defines the types of events for the operations that
-generate statistics for an add-on component.
-
-GlassFish Server enables you to define an event provider in the
-following ways:
-
-* By writing a Java Class. Define an event provider this way if you have
-access to the source code of the component for which you are defining an
-event provider.
-* By writing an XML fragment. Define an event provider this way if you
-do not have access to the source code of the component for which you are
-defining and event provider.
-
-[[ghovq]][[GSACG00164]][[defining-an-event-provider-by-writing-a-java-class]]
-
-Defining an Event Provider by Writing a Java Class
-++++++++++++++++++++++++++++++++++++++++++++++++++
-
-To define an event provider, write a Java language class that defines
-the types of events for the component. Your class is not required to
-extend any specific class or implement any interfaces.
-
-To identify your class as an event provider, annotate the declaration of
-the class with the
-`org.glassfish.external.probe.provider.annotations.ProbeProvider`
-annotation.
-
-To create a name space for event providers and to uniquely identify an
-event provider to the monitoring infrastructure of GlassFish Server, set
-the elements of the `@ProbeProvider` annotation as follows:
-
-`moduleProviderName`::
-  Your choice of text to identify the application to which the event
-  provider belongs. The value of the `moduleProviderName` element is not
-  required to be unique. +
-  For example, for event providers from GlassFish Server Open Source
-  Edition, `moduleProviderName` is `glassfish`.
-`moduleName`::
-  Your choice of name for the module for which the event provider is
-  defined. A module provides significant functionality of an
-  application. The value of the `moduleName` element is not required to
-  be unique. +
-  In GlassFish Server, examples of module names are `web-container`,
-  `ejb-container`, `transaction`, and `webservices`.
-`probeProviderName`::
-  Your choice of name to identify the event provider. To uniquely
-  identify the event provider, ensure that `probeProviderName` is unique
-  for all event providers in the same module. +
-  In GlassFish Server, examples of event—provider names are `jsp`,
-  `servlet`, and `web-module`.
-
-[[ghosi]][[GSACG00011]][[defining-event-types-in-an-event-provider-class]]
-
-Defining Event Types in an Event Provider Class
-
-To define event types in an event provider class, write one method for
-each type of event that is related to the component. The requirements
-for each method are as follows:
-
-* The return value of the callback methods must be void.
-* The method body must be empty. You instantiate the event provider
-class in the class that invokes the method to send the event. For more
-information, see link:#ghprg[Sending an Event].
-* To enable the event to be used as an Oracle Solaris DTrace probe, each
-parameter in the method signature must be a Java language primitive,
-such as `Integer`, `boolean`, or `String`.
-
-Annotate the declaration of each method with the
-`org.glassfish.external.probe.provider.annotations.Probe` annotation.
-
-By default, the type of the event is the method name. If you overload a
-method in your class, you must uniquely identify the event type for each
-form of the method. To uniquely identify the event type, set the `name`
-element of the `@Probe` annotation to the name of the event type.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-You are not required to uniquely identify the event type for methods
-that are not overloaded.
-
-|=======================================================================
-
-
-[[ghoul]][[GSACG00012]][[specifying-event-parameters]]
-
-Specifying Event Parameters
-
-To enable methods in an event listener to select a subset of values,
-annotate each parameter in the method signature with the
-`org.glassfish.external.probe.provider.annotations.ProbeParam`
-annotation. Set the `value` element of the `@ProbeParam` annotation to
-the name of the parameter.
-
-[[ghpmm]][[GSACG00013]][[example-of-defining-an-event-provider-by-writing-a-java-class]]
-
-Example of Defining an Event Provider by Writing a Java Class
-
-[[GSACG00041]][[ghprw]]
-
-
-Example 5-1 Defining an Event Provider by Writing a Java Class
-
-This example shows the definition of the `TxManager` class. This class
-defines events for the start and end of transactions that are performed
-by a transaction manager.
-
-The methods in this class are as follows:
-
-`onTxBegin`::
-  This method sends an event to indicate the start of a transaction. The
-  name of the event type that is associated with this method is `begin`.
-  A parameter that is named `txId` is passed to the method.
-`onCompletion`::
-  This method sends an event to indicate the end of a transaction. The
-  name of the event type that is associated with this method is `end`. A
-  parameter that is named `outcome` is passed to the method.
-
-[source,oac_no_warn]
-----
-import org.glassfish.external.probe.provider.annotations.Probe;
-import org.glassfish.external.probe.provider.annotations.ProbeParam;
-import org.glassfish.external.probe.provider.annotations.ProbeProvider;
-@ProbeProvider(moduleProviderName="examplecomponent",
-moduleName="transaction", probeProviderName="manager")
-public class TxManager {
-
-    @Probe("begin")
-    public void onTxBegin(
-        @ProbeParam("{txId}") String txId
-    ){}
-
-    @Probe ("end")
-    public void onCompletion(
-        @ProbeParam("{outcome}") boolean outcome
-    ){}
- }
-----
-
-[[gkaec]][[GSACG00165]][[defining-an-event-provider-by-writing-an-xml-fragment]]
-
-Defining an Event Provider by Writing an XML Fragment
-+++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-To define an event provider, write an extensible markup language (XML)
-fragment that contains a single `probe-provider` element.
-
-To create a name space for event providers and to uniquely identify an
-event provider to the monitoring infrastructure of GlassFish Server, set
-the attributes of the `probe-provider` element as follows:
-
-`moduleProviderName`::
-  Your choice of text to identify the application to which the event
-  provider belongs. The value of the `moduleProviderName` attribute is
-  not required to be unique. +
-  For example, for event providers from GlassFish Server Open Source
-  Edition, `moduleProviderName` is `glassfish`.
-`moduleName`::
-  Your choice of name for the module for which the event provider is
-  defined. A module provides significant functionality of an
-  application. The value of the `moduleName` attribute is not required
-  to be unique. +
-  In GlassFish Server, examples of module names are `web-container`,
-  `ejb-container`, `transaction`, and `webservices`.
-`probeProviderName`::
-  Your choice of name to identify the event provider. To uniquely
-  identify the event provider, ensure that `probeProviderName` is unique
-  for all event providers in the same module. +
-  In GlassFish Server, examples of event—provider names are `jsp`,
-  `servlet`, and `web-module`.
-
-Within the `probe-provider` element, add one `probe` element for each
-event type that you are defining. To identify the event type, set the
-name attribute of the `probe` element to the type.
-
-To define the characteristics of each event type, add the following
-elements within the `probe` element:
-
-`class`::
-  This element contains the fully qualified Java class name of the
-  component that generates the statistics for which you are defining
-  events.
-`method`::
-  This element contains the name of the method that is invoked to
-  generate the statistic.
-`signature`::
-  This element contains the following information about the signature if
-  the method: +
-[source,oac_no_warn]
-----
-return-type (paramater-type-list)
-----
-::
-  return-type;;
-    The return type of the method.
-  paramater-type-list;;
-    A comma-separated list of the types of the parameters in the method
-    signature.
-`probe-param`::
-  The attributes of this element identify the type and the name of a
-  parameter in the method signature. One `probe-param` element is
-  required for each parameter in the method signature. The `probe-param`
-  element does not contain any data. +
-  The attributes of the `probe-param` element are as follows: +
-  `type`;;
-    Specifies the type of the parameter.
-  `name`;;
-    Specifies the name of the parameter.
-`return-param`::
-  The `type` attribute of this element specifies the return type of the
-  method. The `return-param` element does not contain any data.
-
-[[GSACG00042]][[gkajj]]
-
-
-Example 5-2 Defining an Event Provider by Writing an XML Fragment
-
-This example defines an event provider for the `glassfish:web:jsp`
-component. The Java class of this component is
-`com.sun.enterprise.web.jsp.JspProbeEmitterImpl`. The event provider
-defines one event of type `jspLoadedEvent`. The signature of the method
-that is associated with this event is as follows:
-
-[source,oac_no_warn]
-----
-void jspLoaded (String jsp, String hostName)
-
-<probe-provider moduleProviderName="glassfish" moduleName="web" probeProviderName="jsp">
-    <probe name="jspLoadedEvent">
-       <class>com.sun.enterprise.web.jsp.JspProbeEmitterImpl</class>
-       <method>jspLoaded</method>
-       <signature>void (String,String)</signature>
-       <probe-param type="String" name="jsp"/>
-       <probe-param type="String" name="hostName"/>
-       <return-param type="void" />
-    </probe>
-</probe-provider>
-----
-
-[[gkaie]][[GSACG00166]][[packaging-a-components-event-providers]]
-
-Packaging a Component's Event Providers
-+++++++++++++++++++++++++++++++++++++++
-
-Packaging a component's event providers enables the monitoring
-infrastructure of GlassFish Server to discover the event providers
-automatically.
-
-To package a component's event providers, add an entry to the
-component's `META-INF/MANIFEST.MF` file that identifies all of the
-component's event providers. The format of the entry depends on how the
-event providers are defined:
-
-* If the event providers are defined as Java classes, the entry is a
-list of the event providers' class names as follows: +
-[source,oac_no_warn]
-----
-probe-provider-class-names : class-list
-----
-The `class-list` is a comma-separated list of the fully qualified Java
-class names of the component's event providers.
-* If the event providers are defined as XML fragments, the entry is a
-list of the paths to the files that contain the XML fragments as
-follows: +
-[source,oac_no_warn]
-----
-probe-provider-xml-file-names : path-list
-----
-The `path-list` is a comma-separated list of the paths to the XML files
-relative to the root of the archive in the JAR file.
-
-[[GSACG00043]][[gkaii]]
-
-
-Example 5-3 Manifest Entry for Event Providers That Are Defined as Java
-Classes
-
-This example shows the entry in the `META-INF/MANIFEST.MF` file of a
-component whose event provider is the
-`org.glassfish.pluggability.monitoring.ModuleProbeProvider` class.
-
-[source,oac_no_warn]
-----
-probe-provider-class-names : org.glassfish.pluggability.monitoring.ModuleProbeProvider
-----
-
-[[ghprg]][[GSACG00221]][[sending-an-event]]
-
-Sending an Event
-^^^^^^^^^^^^^^^^
-
-At runtime, your add-on component might perform an operation that
-generates statistics. To provide statistics about the operation to
-GlassFish Server, your component must send an event of the correct type
-when performing the operation.
-
-To send an event, instantiate your event provider class and invoke the
-method of the event provider class for the type of the event.
-Instantiate the class and invoke the method in the class that represents
-your add-on component. Ensure that the method is invoked when your
-component performs the operation for which the event was defined. One
-way to meet this requirement is to invoke the method for sending the
-event in the body of the method for performing the operation.
-
-[[GSACG00044]][[ghpus]]
-
-
-Example 5-4 Sending an Event
-
-This example shows the code for instantiating the `TxManager` class and
-invoking the `onTxBegin` method to send an event of type `begin`. This
-event indicates that a component is about to begin a transaction.
-
-The `TxManager` class is instantiated in the constructor of the
-`TransactionManagerImpl` class. To ensure that the event is sent at the
-correct time, the `onTxBegin` method is invoked in the body of the
-`begin` method, which starts a transaction.
-
-The declaration of the `onTxBegin` method in the event provider
-interface is shown in link:#ghprw[Example 5-1].
-
-[source,oac_no_warn]
-----
-...
-public class TransactionManagerImpl {
-...
-     public TransactionManagerImpl() {
-         TxManager txProvider = new TxManager();
-         ...
-     }
-    ...
-    public void begin() {
-        String txId = createTransactionId();
-        ....
-        txProvider.onTxBegin(txId); //emit
-      }
-...
-}
-----
-
-[[ghplw]][[GSACG00117]][[updating-the-monitorable-object-tree]]
-
-Updating the Monitorable Object Tree
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-A monitorable object is a component, subcomponent, or service that can
-be monitored. GlassFish Server uses a tree structure to track
-monitorable objects.
-
-Because the tree is dynamic, the tree changes as components of the
-GlassFish Server instance are added, modified, or removed. Objects are
-also added to or removed from the tree in response to configuration
-changes. For example, if monitoring for a component is turned off, the
-component's monitorable object is removed from the tree.
-
-To enable system administrators to access statistics for all components
-in the same way, you must provide statistics for an add-on component by
-updating the monitorable object tree. Statistics for the add-on
-component are then available through the GlassFish Server administrative
-commands link:../reference-manual/get.html#GSRFM00139[`get`], olink:GSRFM00145[`list`], and
-link:../reference-manual/set.html#GSRFM00226[`set`]. These commands locate an object in the tree
-through the object's dotted name.
-
-For more information about the tree structure of monitorable objects,
-see "link:../administration-guide/monitoring.html#GSADG00727[How the Monitoring Tree Structure Works]" in
-Eclipse GlassFish Administration Guide.
-
-To make an add-on component a monitorable object, you must add the
-add-on component to the monitorable object tree.
-
-To update the statistics for an add-on component, you must add the
-statistics to the monitorable object tree, and create event listeners to
-gather statistics from events that represent these statistics. At
-runtime, these listeners must update monitorable objects with statistics
-that these events contain. The events are sent by event provider
-classes. For information about how to create event provider classes and
-send events, see link:#ghopc[Defining Statistics That Are to Be
-Monitored].
-
-Updating the monitorable object tree involves the following tasks:
-
-* link:#ghpni[Creating Event Listeners]
-* link:#ghptp[Representing a Component's Statistics in an Event Listener
-Class]
-* link:#ghpml[Subscribing to Events From Event Provider Classes]
-* link:#ghppo[Registering an Event Listener]
-
-[[ghpni]][[GSACG00222]][[creating-event-listeners]]
-
-Creating Event Listeners
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-An event listener gathers statistics from events that an event provider
-sends. To enable an add-on component to gather statistics from events,
-create listeners to receive events from the event provider. The listener
-can receive events from the add-on component in which the listener is
-created and from other components.
-
-To create an event listener, write a Java class to represent the
-listener. The listener can be any Java object.
-
-An event listener also represents a component's statistics. To enable
-the Application Server Management Extensions (AMX) to expose the
-statistics to client applications, annotate the declaration of the class
-with the `org.glassfish.gmbal.ManagedObject` annotation.
-
-Ensure that the class that you write meets these requirements:
-
-* The return value of all callback methods in the listener must be void.
-* Because the methods of your event provider class may be entered by
-multiple threads, the listener must be thread safe. However,GlassFish
-Server provides utility classes to perform some common operations such
-as `count`, `avg`, and `sum`.
-* The listener must have the same restrictions as a Jakarta EE application. For example, the listener
-cannot open server sockets, or create threads.
-
-A listener is called in the same thread as the event method. As a
-result, the listener can use thread locals. If the monitored system
-allows access to thread locals, the listener can access thread locals of
-the monitored system.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-A listener that is not registered to listen for events is never called
-by the framework. Therefore, unregistered listeners do not consume any
-computing resources, such as memory or processor cycles.
-
-|=======================================================================
-
-
-[[ghptp]][[GSACG00223]][[representing-a-components-statistics-in-an-event-listener-class]]
-
-Representing a Component's Statistics in an Event Listener Class
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Represent each statistic as the property of a JavaBeans specification
-getter method of your listener class. Methods in the listener class for
-processing events can then access the property through the getter
-method. For more information, see link:#ghpml[Subscribing to Events From
-Event Provider Classes].
-
-To enable AMX to expose the statistic to client applications, annotate
-the declaration of the getter method with the
-`org.glassfish.gmbal.ManagedAttribute` annotation. Set the `id` element
-of the `@ManagedAttribute` annotation to the property name all in
-lowercase.
-
-The data type of the property that represents a statistic must be a
-class that provides methods for computing the statistic from event data.
-
-The `org.glassfish.external.statistics.impl` package provides the
-following classes to gather and compute statistics data:
-
-`AverageRangeStatisticImpl`::
-  Provides standard measurements of the lowest and highest values that
-  an attribute has held and the current value of the attribute.
-`BoundaryStatisticImpl`::
-  Provides standard measurements of the upper and lower limits of the
-  value of an attribute.
-`BoundedRangeStatisticImpl`::
-  Aggregates the attributes of `RangeStatisticImpl` and
-  `BoundaryStatisticImpl` and provides standard measurements of a range
-  that has fixed limits.
-`CountStatisticImpl`::
-  Provides standard count measurements.
-`RangeStatisticImpl`::
-  Provides standard measurements of the lowest and highest values that
-  an attribute has held and the current value of the attribute.
-`StatisticImpl`::
-  Provides performance data.
-`StringStatisticImpl`::
-  Provides a string equivalent of a counter statistic.
-`TimeStatisticImpl`::
-  Provides standard timing measurements.
-
-[[GSACG00045]][[ghpsc]]
-
-
-Example 5-5 Representing a Component's Statistics in an Event Listener
-Class
-
-This example shows the code for representing the `txcount` statistic in
-the `TxListener` class.
-
-[source,oac_no_warn]
-----
-...
-import org.glassfish.external.statistics.CountStatistic;
-import org.glassfish.external.statistics.impl.CountStatisticImpl;
-...
-import org.glassfish.gmbal.ManagedAttribute;
-import org.glassfish.gmbal.ManagedObject;
-
-...
-@ManagedObject
-public class TxListener {
-
-    private CountStatisticImpl txCount = new CountStatisticImpl("TxCount",
-        "count", "Number of completed transactions");
-...
-    @ManagedAttribute(id="txcount")
-    public CountStatistic  getTxCount(){
-         return txCount;
-    }
-}
-----
-
-[[ghpml]][[GSACG00224]][[subscribing-to-events-from-event-provider-classes]]
-
-Subscribing to Events From Event Provider Classes
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To receive events from event provider classes, a listener must subscribe
-to the events. Subscribing to events also specifies the provider and the
-type of events that the listener will receive.
-
-To subscribe to events from event provider classes, write one method in
-your listener class to process each type of event. To specify the
-provider and the type of event, annotate the method with the
-`org.glassfish.external.probe.provider.annotations.ProbeListener`
-annotation. In the `@ProbeListener` annotation, specify the provider and
-the type as follows:
-
-[source,oac_no_warn]
-----
-"module-providername:module-name:probe-provider-name:event-type"
-----
-
-module-providername::
-  The application to which the event provider belongs. This parameter
-  must be the value of the `moduleProviderName` element or attribute in
-  the definition of the event provider. See link:#ghovq[Defining an
-  Event Provider by Writing a Java Class] and link:#gkaec[Defining an
-  Event Provider by Writing an XML Fragment].
-module-name::
-  The module for which the event provider is defined. This parameter
-  must match be the value of the `moduleName` element or attribute in
-  the definition of the event provider. See link:#ghovq[Defining an
-  Event Provider by Writing a Java Class] and link:#gkaec[Defining an
-  Event Provider by Writing an XML Fragment].
-probe-provider-name::
-  The name of the event provider. This parameter must match be the value
-  of the `probeProviderName` element or attribute in the definition of
-  the event provider. See link:#ghovq[Defining an Event Provider by
-  Writing a Java Class] and link:#gkaec[Defining an Event Provider by
-  Writing an XML Fragment].
-event-type::
-  The type of the event. This type is defined in the event provider
-  class. For more information, see link:#ghosi[Defining Event Types in
-  an Event Provider Class].
-
-Annotate each parameter in the method signature with the `@ProbeParam`
-annotation. Set the `value` element of the `@ProbeParam` annotation to
-the name of the parameter.
-
-In the method body, provide the code to update monitoring statistics in
-response to the event.
-
-[[GSACG00046]][[ghpwu]]
-
-
-Example 5-6 Subscribing to Events From Event Provider Classes
-
-This example shows the code for subscribing to events of type `begin`
-from the `tx` component. The provider of the component is `TxManager`.
-The body of the `begin` method contains code to increase the transaction
-count txcount by 1 each time that an event is received.
-
-The definition of the `begin` event type is shown in link:#ghprw[Example
-5-1].
-
-The code for sending `begin` events is shown in link:#ghpus[Example
-5-4].
-
-The instantiation of the `txCount` object is shown in
-link:#ghpsc[Example 5-5].
-
-[source,oac_no_warn]
-----
-...
-import org.glassfish.external.probe.provider.annotations.ProbeListener;
-import org.glassfish.external.probe.provider.annotations.ProbeParam;
-import org.glassfish.gmbal.ManagedObject;
-...
-@ManagedObject
-public class TxListener {
-    ...;    @ProbeListner("examplecomponent:transaction:manager:begin")
-    public void begin(
-    @ProbeParam("{txId}")
-    String txId) {
-      txCount.increment();
-    }
-  }
-----
-
-[[ghpsp]][[GSACG00167]][[listening-for-changes-to-values-that-are-not-part-of-the-target-method-definition]]
-
-Listening for Changes to Values That are Not Part of the Target Method Definition
-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-Event listeners can express their interest in certain predefined values
-that are not part of the target method definition. For example,
-$\{gf.appname}, $\{gf.modulename} etc. are some of the computed params
-that are available to the clients, these values are computed/evaluated
-only on demand and provided by the event infrastructure.
-
-[[ghpsw]][[GSACG00168]][[getting-information-about-a-event-provider]]
-
-Getting Information About a Event Provider
-++++++++++++++++++++++++++++++++++++++++++
-
-`ProbeProviderInfo` contains details about individual event types in an
-event provider class.
-
-[source,oac_no_warn]
-----
-public interface ProbeProviderInfo {
-
-      public String getModuleName();
-
-      public String getProviderName();
-
-      public String getApplicationName();
-
-      public String getProbeName();
-
-      public String[] getParamterNames();
-
-      public Class getParamterTypes();
-
- }
-----
-
-[[ghpmt]][[GSACG00225]][[listening-for-events-from-classes-that-are-not-event-providers]]
-
-Listening for Events From Classes That Are Not Event Providers
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-gfProbes infrastructure allows clients to monitor glassfish even in the
-absence of provider classes. This is done by allowing clients to receive
-callbacks when a java methods are entered / exited. Note that while this
-approach allows a client to monitor legacy code, it may not always be
-possible to receive "high-level" events.
-
-For example, while it is easy to monitor (through gfProbes) when
-TransactionManagerImpl.begin() entered / exited, the client cannot
-determine the transaction ID in this case.
-
-[source,oac_no_warn]
-----
-public class TxMonitor {
-     @MethodEntry("tx:com.sun.tx.TxMgrImpl::onTxBegin")
-     public void onTx(String tId) {
-       count++;
-     }
-  }
-----
-
-[[ghpql]][[GSACG00169]][[monitoring-method-entry]]
-
-Monitoring Method Entry
-+++++++++++++++++++++++
-
-The @MethodEntry annotation must be used by the client to receive
-callback when the target method is entered. The client method argument
-types and count must match the target methods parameter types/count.
-
-[[ghppg]][[GSACG00170]][[monitoring-method-exit]]
-
-Monitoring Method Exit
-++++++++++++++++++++++
-
-The @MethodExit annotation must be used by the client to receive
-callback when the target method is exited. The client method argument
-types and count must match the target methods parameter types/count. The
-first parameter in the client method should match the return type of the
-target method (only if the target method has a non void return type)
-
-[[ghplj]][[GSACG00171]][[monitoring-exceptions]]
-
-Monitoring Exceptions
-+++++++++++++++++++++
-
-The @OnException annotation must be used by the client to receive
-callback when the target method exits because of an exception. The
-client method argument types and count must match the target methods
-parameter types/count. (This restriction might be removed later). The
-first parameter in the client method should be of type Throwable
-
-[[ghppo]][[GSACG00226]][[registering-an-event-listener]]
-
-Registering an Event Listener
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Registering an event listener enables the listener to receive callbacks
-from the GlassFish Server event infrastructure. The listener can then
-collect data from events and update monitorable objects in the object
-tree. These monitorable objects form the basis for monitoring
-statistics.
-
-Registering an event listener also makes a component and its statistics
-monitorable objects by adding statistics for the component to the
-monitorable object tree.
-
-At runtime, the GlassFish Server event infrastructure registers
-listeners for an event provider when the event provider is started and
-unregisters them when the event provider is shut down. As a result,
-listeners have no dependencies on other components.
-
-To register a listener, invoke the static
-`org.glassfish.external.probe.provider.StatsProviderManager.register`
-method in the class that represents your add-on component. In the method
-invocation, pass the following information as parameters:
-
-* The name of the configuration element with which all statistics in the
-event listener are to be associated. System administrators use this
-element for enabling or disabling monitoring for the event listener.
-* The node in the monitorable object tree under which the event listener
-is to be registered. To specify the node, pass one of the following
-constants of the
-`org.glassfish.external.probe.provider.PluginPointPluginPoint`
-enumeration:
-
-** To register the listener under the `server/applications` node, pass
-the `APPLICATIONS` constant.
-
-** To register the listener under the `server` node, pass the `SERVER`
-constant.
-* The path through the monitorable object tree from the node under which
-the event listener is registered down to the statistics in the event
-listener. The nodes in this path are separated by the slash (`/`)
-character.
-* The listener object that you are registering.
-
-[[GSACG00047]][[ghpuu]]
-
-
-Example 5-7 Registering an Event Listener
-
-This example shows the code for registering the event listener
-`TxListener` for the add-on component that is represented by the class
-`TransactionManagerImpl`. The statistics that are defined in this
-listener are associated with the `web-container` configuration element.
-The listener is registered under the `server/applications` node. The
-path from this node to the statistics in the event listener is
-`tx/txapp`.
-
-Code for the constructor of the `TxListener` class is beyond the scope
-of this example.
-
-[source,oac_no_warn]
-----
-...
-import org.glassfish.external.probe.provider.StatsProviderManager;
-import org.glassfish.external.probe.provider.PluginPoint
-...
-public class TransactionManagerImpl {
-...
-    StatsProviderManager.register("web-container", PluginPoint.APPLICATIONS,
-        "tx/txapp", new TxListener());
-...
-}
-----
-
-[[ghrma]][[GSACG00118]][[dotted-names-and-rest-urls-for-an-add-on-components-statistics]]
-
-Dotted Names and REST URLs for an Add-On Component's Statistics
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The GlassFish Server administrative subcommands link:../reference-manual/get.html#GSRFM00139[`get`],
-link:../reference-manual/list.html#GSRFM00145[`list`], and olink:GSRFM00226[`set`] locate a statistic
-through the dotted name of the statistic. The dotted name of a statistic
-for an add-on component is determined from the registration of the event
-listener that defines the statistic as follows:
-
-[source,oac_no_warn]
-----
-listener-parent-node.path-to-statistic.statistic-name
-----
-
-listener-parent-node::
-  The node in the monitorable object tree under which the event listener
-  that defines the statistic is registered. This node is passed in the
-  invocation of the `register` method that registers the event listener.
-  For more information, see link:#ghppo[Registering an Event Listener].
-path-to-statistic::
-  The path through the monitorable object tree from the node under which
-  the event listener is registered down to the statistic in the event
-  listener in which each slash is replaced with a period. This path is
-  passed in the invocation of the `register` method that registers the
-  event listener. For more information, see link:#ghppo[Registering an
-  Event Listener].
-statistic-name::
-  The name of the statistic. This name is the value of the `id` element
-  of the `@ManagedAttribute` annotation on the property that represents
-  the statistic. For more information, see link:#ghptp[Representing a
-  Component's Statistics in an Event Listener Class].
-
-For example, the dotted name of the `txcount` statistic that is defined
-in link:#ghpsc[Example 5-5] and registered in link:#ghpuu[Example 5-7]
-is as follows:
-
-[source,oac_no_warn]
-----
-server.applications.tx.txapp.txcount
-----
-
-The formats of the URL to a REST resource that represents a statistic is
-as follows:
-
-[source,oac_no_warn]
-----
-http://host:port/monitoring/domain/path
-----
-
-host::
-  The host where the DAS is running.
-port::
-  The HTTP port or HTTPS port for administration.
-path::
-  The path to the statistic. The path is the dotted name of the
-  attribute in which each dot (`.`) is replaced with a slash (`/`).
-
-For example, the URL the REST resource for the `txcount` statistic that
-is defined in link:#ghpsc[Example 5-5] and registered in
-link:#ghpuu[Example 5-7] is as follows:
-
-[source,oac_no_warn]
-----
-http://localhost:4848/monitoring/domain/server/applications/tx/txapp/txcount
-----
-
-In this example, the DAS is running on the local host and the HTTP port
-for administration is 4848.
-
-[[ghmox]][[GSACG00119]][[adding-a-type-to-the-monitor-command]]
-
-Adding a Type to the `monitor` Command
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-To add a type to the `monitor` command, implement the `MonitorContract`
-interface.
-
-An implementation of the `MonitorContract` interface is an HK2 service
-that provides monitoring data to the `monitor` command.
-
-[[ghptj]][[GSACG00120]][[example-of-adding-monitoring-capabilities]]
-
-Example of Adding Monitoring Capabilities
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This example shows a component that monitors the number of requests that
-a container receives. The following table provides a cross-reference to
-the listing of each class or interface in the example.
-
-[width="100%",cols="<50%,<50%",options="header",]
-|===================================================
-|Class or Interface |Listing
-|`ModuleProbeProvider` |link:#ghpna[Example 5-8] +
-|`ModuleBootStrap` |link:#ghpmu[Example 5-9] +
-|`ModuleStatsTelemetry` |link:#ghpvw[Example 5-10] +
-|`Module` |link:#ghpuc[Example 5-11] +
-|`ModuleMBean` |link:#ghpwx[Example 5-12] +
-|===================================================
-
-
-[[GSACG00048]][[ghpna]]
-
-
-Example 5-8 Event Provider Class
-
-This example illustrates how to define an event provider as explained in
-link:#ghovq[Defining an Event Provider by Writing a Java Class].
-
-The example shows the definition of the `ModuleProbeProvider` class. The
-event provider sends events when the request count is increased by 1 or
-decreased by 1.
-
-This class defines the following methods:
-
-* `moduleCountIncrementEvent`
-* `moduleCountDecrementEvent`
-
-The name of each method is also the name of the event type that is
-associated with the method.
-
-A parameter that is named `count` is passed to each method.
-
-[source,oac_no_warn]
-----
-package org.glassfish.pluggability.monitoring;
-
-import org.glassfish.external.probe.provider.annotations.Probe;
-import org.glassfish.external.probe.provider.annotations.ProbeParam;
-import org.glassfish.external.probe.provider.annotations.ProbeProvider;
-
-/**
- * Monitoring count events
- * Provider interface for module specific probe events.
- *
- */
-@ProbeProvider(moduleProviderName = "glassfish", moduleName = "mybeanmodule",
-probeProviderName = "mybean")
-public class ModuleProbeProvider {
-
-    /**
-     * Emits probe event whenever the count is incremented
-     */
-    @Probe(name = "moduleCountIncrementEvent")
-    public void moduleCountIncrementEvent(
-            @ProbeParam("count") Integer count) {
-    }
-
-    /**
-     * Emits probe event whenever the count is decremented
-     */
-    @Probe(name = "moduleCountDecrementEvent")
-    public void moduleCountDecrementEvent(
-            @ProbeParam("count") Integer count) {
-    }
-}
-----
-
-[[GSACG00049]][[ghpmu]]
-
-
-Example 5-9 Bootstrap Class
-
-This example illustrates how to register an event listener as explained
-in link:#ghppo[Registering an Event Listener]. The example shows the
-code for registering an instance of the listener class
-`ModuleStatsTelemetry`. This instance is added as a child of the
-`server/applications` node of the tree.
-
-[source,oac_no_warn]
-----
-package org.glassfish.pluggability.monitoring;
-
-import org.jvnet.hk2.component.PostConstruct;
-import org.jvnet.hk2.annotations.Service;
-import org.jvnet.hk2.annotations.Scoped;
-import org.jvnet.hk2.component.Singleton;
-import org.glassfish.external.probe.provider.StatsProviderManager;
-import org.glassfish.external.probe.provider.PluginPoint;
-
-/**
- * Monitoring Count Example
- * Bootstrap object for registering probe provider and listener
- *
- */
-@Service
-@Scoped(Singleton.class)
-public class ModuleBootStrap implements PostConstruct {
-
-    @Override
-    public void postConstruct() {
-        try {
-            StatsProviderManager.register("web-container",
-                    PluginPoint.APPLICATIONS, "myapp", new ModuleStatsTelemetry());
-        } catch (Exception e) {
-            System.out.println("Caught exception in postconstruct");
-            e.printStackTrace();
-        }
-    }
-}
-----
-
-[[GSACG00050]][[ghpvw]]
-
-
-Example 5-10 Listener Class
-
-This example shows how to perform the following tasks:
-
-* link:#ghpni[Creating Event Listeners]. The example shows the code of
-the `ModuleStatsTelemetry` listener class.
-* link:#ghptp[Representing a Component's Statistics in an Event Listener
-Class]. The example shows the code for representing the
-`countmbeancount` statistic.
-* link:#ghpml[Subscribing to Events From Event Provider Classes]. The
-example shows the code for subscribing to the following types of events
-from the `count` component:
-
-** `moduleCountIncrementEvent`
-
-** `moduleCountDecrementEvent`
-
-[source,oac_no_warn]
-----
-package org.glassfish.pluggability.monitoring;
-
-import org.glassfish.external.statistics.CountStatistic;
-import org.glassfish.external.statistics.impl.CountStatisticImpl;
-import org.glassfish.external.probe.provider.annotations.ProbeListener;
-import org.glassfish.external.probe.provider.annotations.ProbeParam;
-import org.glassfish.gmbal.ManagedAttribute;
-import org.glassfish.gmbal.ManagedObject;
-
-/**
- * Monitoring counter example
- * Telemtry object which listens to probe events and updates
- * the monitoring stats
- *
- */
-@ManagedObject
-public class ModuleStatsTelemetry {
-
-    private CountStatisticImpl countMBeanCount = new CountStatisticImpl(
-            "CountMBeanCount", "count", "Number of MBeans");
-
-    @ManagedAttribute(id = "countmbeancount")
-    public CountStatistic getCountMBeanCount() {
-        return countMBeanCount;
-    }
-
-    @ProbeListener("count:example:countapp:moduleCountIncrementEvent")
-    public void moduleCountIncrementEvent(
-            @ProbeParam("count") Integer count) {
-        countMBeanCount.increment();
-    }
-
-    @ProbeListener("count:example:countapp:moduleCountDecrementEvent")
-    public void moduleCountDecrementEvent(
-            @ProbeParam("count") Integer count) {
-        countMBeanCount.decrement();
-    }
-}
-----
-
-[[GSACG00051]][[ghpuc]]
-
-
-Example 5-11 MBean Interface
-
-This example defines the interface for a simple standard MBean that has
-methods to increase and decrease a counter by 1.
-
-[source,oac_no_warn]
-----
-package com.example.count.monitoring;
-
-/**
- * Monitoring counter example
- * ModuleMBean interface
- *
- */
-public interface ModuleMBean {
-    public Integer getCount() ;
-    public void incrementCount() ;
-    public void decrementCount() ;
-}
-----
-
-[[GSACG00052]][[ghpwx]]
-
-
-Example 5-12 MBean Implementation
-
-This example illustrates how to send an event as explained in
-link:#ghprg[Sending an Event]. The example shows code for sending events
-as follows:
-
-* The `moduleCountIncrementEvent` method is invoked in the body of the
-`incrementCount` method.
-* The `moduleCountDecrementEvent` method is invoked in the body of the
-`decrementCount` method.
-
-The methods `incrementCount` and `decrementCount` are invoked by an
-entity that is beyond the scope of this example, for example, JConsole.
-
-[source,oac_no_warn]
-----
-package org.glassfish.pluggability.monitoring;
-
-/**
- * Monitoring counter example
- * ModuleMBean implementation
- *
- */
-public class Module implements ModuleMBean {
-
-    private int k = 0;
-    private ModuleProbeProvider mpp = null;
-
-    @Override
-    public Integer getCount() {
-        return k;
-    }
-
-    @Override
-    public void incrementCount() {
-        k++;
-        if (mpp != null) {
-            mpp.moduleCountIncrementEvent(k);
-        }
-    }
-
-    @Override
-    public void decrementCount() {
-        k--;
-        if (mpp != null) {
-            mpp.moduleCountDecrementEvent(k);
-        }
-    }
-
-    void setProbeProvider(ModuleProbeProvider mpp) {
-        this.mpp = mpp;
-    }
-}
-----
diff --git a/docs/add-on-component-development-guide/src/main/jbake/content/extending-asadmin.adoc b/docs/add-on-component-development-guide/src/main/jbake/content/extending-asadmin.adoc
deleted file mode 100644
index 8a621bc..0000000
--- a/docs/add-on-component-development-guide/src/main/jbake/content/extending-asadmin.adoc
+++ /dev/null
@@ -1,1826 +0,0 @@
-type=page
-status=published
-title=Extending the asadmin Utility
-next=adding-monitoring-capabilities.html
-prev=extending-the-admin-console.html
-~~~~~~
-Extending the asadmin Utility
-=============================
-
-[[GSACG00004]][[ghmrd]]
-
-
-[[extending-the-asadmin-utility]]
-4 Extending the `asadmin` Utility
----------------------------------
-
-The `asadmin` utility is a command-line tool for configuring and
-administering Eclipse GlassFish Server. Extending the `asadmin` utility enables
-you to provide administrative interfaces for an add-on component that
-are consistent with the interfaces of other GlassFish Server components.
-A user can run `asadmin` subcommands either from a command prompt or
-from a script. For more information about the `asadmin` utility, see the
-link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] man page.
-
-The following topics are addressed here:
-
-* link:#ghpuj[About the Administrative Command Infrastructure of
-GlassFish Server]
-* link:#ghpwe[Adding an `asadmin` Subcommand]
-* link:#ghpwa[Adding Parameters to an `asadmin` Subcommand]
-* link:#gkygt[Making `asadmin` Subcommands Cluster-Aware]
-* link:#ghptw[Adding Message Text Strings to an `asadmin` Subcommand]
-* link:#ghpvn[Enabling an `asadmin` Subcommand to Run]
-* link:#ghpvq[Setting the Context of an `asadmin` Subcommand]
-* link:#ghpwn[Changing the Brand in the GlassFish Server CLI]
-* link:#ghmza[Examples of Extending the `asadmin` Utility]
-* link:#gkzlq[Implementing Create, Delete, and List Commands Using
-Annotations]
-
-[[ghpuj]][[GSACG00105]][[about-the-administrative-command-infrastructure-of-glassfish-server]]
-
-About the Administrative Command Infrastructure of GlassFish Server
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-To enable multiple containers to be independently packaged and loaded,
-the administrative command infrastructure of GlassFish Server provides
-the following features:
-
-* Location independence. Administration subcommands can be loaded from
-any add-on component that is known to GlassFish Server.
-* Extensibility. Administrative subcommands that are available to
-GlassFish Server are discovered on demand and not obtained from a preset
-list of subcommands.
-* Support for the HK2 architecture. Subcommands can use injection to
-express their dependencies, and extraction to provide results to a user.
-For more information, see link:writing-hk2-components.html#ghmna[Writing
-HK2 Components].
-
-[[ghpwe]][[GSACG00107]][[adding-an-asadmin-subcommand]]
-
-Adding an `asadmin` Subcommand
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-An `asadmin` subcommand identifies the operation or task that a user is
-to perform. Adding an `asadmin` subcommand enables the user to perform
-these tasks and operations through the `asadmin` utility.
-
-The following topics are addressed here:
-
-* link:#ghrqj[Representing an `asadmin` Subcommand as a Java Class]
-* link:#ghrpm[Specifying the Name of an `asadmin` Subcommand]
-* link:#ghrng[Ensuring That an `AdminCommand` Implementation Is
-Stateless]
-* link:#ghrqx[Example of Adding an `asadmin` Subcommand]
-
-[[ghrqj]][[GSACG00194]][[representing-an-asadmin-subcommand-as-a-java-class]]
-
-Representing an `asadmin` Subcommand as a Java Class
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Each `asadmin` subcommand that you are adding must be represented as a
-Java class. To represent an `asadmin` subcommand as a Java class, write
-a Java class that implements the `org.glassfish.api.admin.AdminCommand`
-interface. Write one class for each subcommand that you are adding. Do
-not represent multiple `asadmin` subcommands in a single class.
-
-Annotate the declaration of your implementations of the `AdminCommand`
-interface with the `org.jvnet.hk2.annotations.Service` annotation. The
-`@Service` annotation ensures that the following requirements for your
-implementations are met:
-
-* The implementations are eligible for resource injection and resource
-extraction.
-* The implementations are location independent, provided that the
-component that contains them is made known to the GlassFish Server
-runtime. +
-For information about how to make a component known to the GlassFish
-Server runtime, see
-link:packaging-integrating-delivering.html#ghmne[Integrating an Add-On
-Component With GlassFish Server].
-
-[[ghrpm]][[GSACG00195]][[specifying-the-name-of-an-asadmin-subcommand]]
-
-Specifying the Name of an `asadmin` Subcommand
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To specify the name of the subcommand, set the `name` element of the
-`@Service` annotation to the name.
-
-
-[width="100%",cols="<100%",]
-|===================================
-a|
-Note:
-
-Subcommand names are case-sensitive.
-
-|===================================
-
-
-Subcommands that are supplied in GlassFish Server distributions
-typically create, delete, and list objects of a particular type. For
-consistency with the names of subcommands that are supplied in GlassFish
-Server distributions, follow these conventions when specifying the name
-of a subcommand:
-
-* For subcommands that create an object of a particular type, use the
-name `create-`object`.`
-* For subcommands that delete an object of a particular type, use the
-name `delete-`object`.`
-* For subcommands that list all objects of a particular type, use the
-name `list-`objects`.`
-
-For example, GlassFish Server provides the following subcommands for
-creating, deleting, and listing HTTP listeners:
-
-* `create-http-listener`
-* `delete-http-listener`
-* `list-http-listeners`
-
-You must also ensure that the name of your subcommand is unique. To
-obtain a complete list of the names of all `asadmin` subcommands that
-are installed, use the link:../reference-manual/list-commands.html#GSRFM00154[`list-commands`] subcommand. For
-a complete list of `asadmin` subcommands that are supplied in GlassFish
-Server distributions, see the link:../reference-manual/toc.html#GSRFM[Eclipse GlassFish Reference Manual].
-
-[[ghrng]][[GSACG00196]][[ensuring-that-an-admincommand-implementation-is-stateless]]
-
-Ensuring That an `AdminCommand` Implementation Is Stateless
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To enable multiple clients to run a subcommand simultaneously, ensure
-that the implementation of the `AdminCommand` interface for the
-subcommand is stateless. To ensure that the implementation of the
-`AdminCommand` interface is stateless, annotate the declaration of your
-implementation with the `org.jvnet.hk2.annotations.Scoped` annotation.
-In the `@Scoped` annotation, set the scope as follows:
-
-* To instantiate the subcommand for each lookup, set the scope to
-`PerLookup.class`.
-* To instantiate the subcommand only once for each session, set the
-scope to `Singleton`.
-
-[[ghrqx]][[GSACG00197]][[example-of-adding-an-asadmin-subcommand]]
-
-Example of Adding an `asadmin` Subcommand
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-[[GSACG00034]][[ghrqq]]
-
-
-Example 4-1 Adding an `asadmin` Subcommand
-
-This example shows the declaration of the class `CreateMycontainer` that
-represents an `asadmin` subcommand that is named `create-mycontainer`.
-The subcommand is instantiated for each lookup.
-
-[source,oac_no_warn]
-----
-package com.example.mycontainer;
-
-import org.glassfish.api.admin.AdminCommand;
-...
-import org.jvnet.hk2.annotations.Service;
-...
-import org.jvnet.hk2.annotations.Scoped;
-import org.jvnet.hk2.component.PerLookup;
-
-/**
- * Sample subcommand
- */
-@Service(name="create-mycontainer")
-@Scoped(PerLookup.class)
-public Class CreateMycontainer implements AdminCommand {
-…
-}
-----
-
-[[ghpwa]][[GSACG00108]][[adding-parameters-to-an-asadmin-subcommand]]
-
-Adding Parameters to an `asadmin` Subcommand
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The parameters of an `asadmin` subcommand are the options and operands
-of the subcommand.
-
-* Options control how the `asadmin` utility performs a subcommand.
-* Operands are the objects on which a subcommand acts. For example, the
-operand of the link:../reference-manual/start-domain.html#GSRFM00235[`start-domain`] subcommand is the domain
-that is to be started.
-
-The following topics are addressed here:
-
-* link:#ghpvh[Representing a Parameter of an `asadmin` Subcommand]
-* link:#ghptx[Identifying a Parameter of an `asadmin` Subcommand]
-* link:#ghpxp[Specifying Whether a Parameter Is an Option or an Operand]
-* link:#ghpxj[Specifying the Name of an Option]
-* link:#ghpxl[Specifying the Acceptable Values of a Parameter]
-* link:#ghrgt[Specifying the Default Value of a Parameter]
-* link:#ghpuk[Specifying Whether a Parameter Is Required or Optional]
-* link:#CDCFAJDG[Specifying Whether a Parameter Can Be Used Multiple
-Times on the Command Line]
-* link:#ghpxd[Example of Adding Parameters to an `asadmin` Subcommand]
-
-[[ghpvh]][[GSACG00198]][[representing-a-parameter-of-an-asadmin-subcommand]]
-
-Representing a Parameter of an `asadmin` Subcommand
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Represent each parameter of a subcommand in your implementation as a
-field or as the property of a JavaBeans specification setter method. Use
-the property of a setter method for the following reasons:
-
-* To provide data encapsulation for the parameter
-* To add code for validating the parameter before the property is set
-
-[[ghptx]][[GSACG00199]][[identifying-a-parameter-of-an-asadmin-subcommand]]
-
-Identifying a Parameter of an `asadmin` Subcommand
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Identifying a parameter of an `asadmin` subcommand enables GlassFish
-Server to perform the following operations at runtime on the parameter:
-
-* Validation. The GlassFish Server determines whether all required
-parameters are specified and returns an error if any required parameter
-is omitted.
-* Injection. Before the subcommand runs, the GlassFish Server injects
-each parameter into the required field or method before the subcommand
-is run.
-* Usage message generation. The GlassFish Server uses reflection to
-obtain the list of parameters for a subcommand and to generate the usage
-message from this list.
-* Localized string display. If the subcommand supports
-internationalization and if localized strings are available, the
-GlassFish Server can automatically obtain the localized strings for a
-subcommand and display them to the user.
-
-To identify a parameter of a subcommand, annotate the declaration of the
-item that is associated with the parameter with the
-`org.glassfish.api.Param` annotation. This item is either the field or
-setter method that is associated with the parameter.
-
-To specify the properties of the parameter, use the elements of the
-`@Param` annotation as explained in the sections that follow.
-
-[[ghpxp]][[GSACG00200]][[specifying-whether-a-parameter-is-an-option-or-an-operand]]
-
-Specifying Whether a Parameter Is an Option or an Operand
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Whether a parameter is an option or an operand determines how a user
-must specify the parameter when running the subcommand:
-
-* If the parameter is an option, the user must specify the option with
-the parameter name.
-* If the parameter is an operand, the user may omit the parameter name.
-
-To specify whether a parameter is an option or an operand, set the
-`primary` element of the `@Param` annotation as follows:
-
-* If the parameter is an option, set the `primary` element to `false`.
-This value is the default.
-* If the parameter is an operand, set the `primary` element to `true`.
-
-[[ghpxj]][[GSACG00201]][[specifying-the-name-of-an-option]]
-
-Specifying the Name of an Option
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The name of an option is the name that a user must type on the command
-line to specify the option when running the subcommand.
-
-The name of each option that you add in your implementation of an
-`asadmin` subcommand can have a long form and a short form. When running
-the subcommand, the user specifies the long form and the short form as
-follows:
-
-* The short form of an option name has a single dash (`-`) followed by a
-single character.
-* The long form of an option name has two dashes (`--`) followed by an
-option word.
-
-For example, the short form and the long form of the name of the option
-for specifying terse output are as follows:
-
-* Short form: `-m`
-* Long form: `--monitor`
-
-
-[width="100%",cols="<100%",]
-|===============================
-a|
-Note:
-
-Option names are case-sensitive.
-
-|===============================
-
-
-[[ghpvy]][[GSACG00163]][[specifying-the-long-form-of-an-option-name]]
-
-Specifying the Long Form of an Option Name
-++++++++++++++++++++++++++++++++++++++++++
-
-To specify the long form of an option name, set the `name` element of
-the `@Param` annotation to a string that specifies the name. If you do
-not set this element, the default name depends on how you represent the
-option.
-
-* If you represent the option as a field, the default name is the field
-name.
-* If you represent the option as the property of a JavaBeans
-specification setter method, the default name is the property name from
-the setter method name. For example, if the setter method `setPassword`
-is associated with an option, the property name and the option name are
-both `password`.
-
-[[sthref5]][[specifying-the-short-form-of-an-option-name]]
-
-Specifying the Short Form of an Option Name
-+++++++++++++++++++++++++++++++++++++++++++
-
-[[ghpvi]]
-
-To specify the short form of an option name, set the `shortName` element
-of the `@Param` annotation to a single character that specifies the
-short form of the parameter. The user can specify this character instead
-of the full parameter name, for example `-m` instead of `--monitor`. If
-you do not set this element, the option has no short form.
-
-[[ghpxl]][[GSACG00202]][[specifying-the-acceptable-values-of-a-parameter]]
-
-Specifying the Acceptable Values of a Parameter
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-When a user runs the subcommand, the GlassFish Server validates option
-arguments and operands against the acceptable values that you specify in
-your implementation.
-
-To specify the acceptable values of a parameter, set the
-`acceptableValues` element of the `@Param` annotation to a string that
-contains a comma-separated list of acceptable values. If you do not set
-this element, any string of characters is acceptable.
-
-[[ghrgt]][[GSACG00203]][[specifying-the-default-value-of-a-parameter]]
-
-Specifying the Default Value of a Parameter
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The default value of a parameter is the value that is applied if a user
-omits the parameter when running the subcommand.
-
-To specify the default value of a parameter, set the `defaultValue`
-element of the `@Param` annotation to a string that contains the default
-value. You can also compute the default value dynamically by extending
-the `ParamDefaultCalculator` class and setting the `defaultCalculator`
-element of the `@Param` annotation to this class. If these elements are
-not set, the parameter has no default value.
-
-[[ghpuk]][[GSACG00204]][[specifying-whether-a-parameter-is-required-or-optional]]
-
-Specifying Whether a Parameter Is Required or Optional
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Whether a parameter is required or optional determines how a subcommand
-responds if a user omits the parameter when running the subcommand:
-
-* If the parameter is required, the subcommand returns an error.
-* If the parameter is optional, the subcommand runs successfully.
-
-To specify whether a parameter is optional or required, set the
-`optional` element of the `@Param` annotation as follows:
-
-* If the parameter is required, set the `optional` element to `false`.
-This value is the default.
-* If the parameter is optional, set the `optional` element to `true`.
-
-[[CDCFAJDG]][[specifying-whether-a-parameter-can-be-used-multiple-times-on-the-command-line]]
-
-Specifying Whether a Parameter Can Be Used Multiple Times on the Command
-Line
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-By default, each parameter can be used once on the command line. To use
-the parameter multiple times, set the `multiple` element of the `@Param`
-annotation to `true`. The type of the annotated parameter must be an
-array.
-
-[[ghpxd]][[GSACG00205]][[example-of-adding-parameters-to-an-asadmin-subcommand]]
-
-Example of Adding Parameters to an `asadmin` Subcommand
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-[[GSACG00035]][[ghpuh]]
-
-
-Example 4-2 Adding Parameters to an `asadmin` Subcommand
-
-This example shows the code for adding parameters to an `asadmin`
-subcommand with the properties as shown in the table.
-
-[width="172%",cols="<17%,<12%,<8%,<5%,<6%,<46%,<6%",options="header",]
-|=======================================================================
-|Name |Represented As |Acceptable Values |Default Value |Optional or
-Required |Short Name |Option or Operand
-|`--originator` |A field that is named `originator` |Any character
-string |None defined |Required |None |Option
-
-|`--description` |A field that is named `mycontainerDescription` |Any
-character string |None defined |Optional |None |Option
-
-|`--enabled` |A field that is named `enabled` |`true` or `false`
-|`false` |Optional |None |Option
-
-|`--containername` |A field that is named `containername` |Any character
-string |None defined |Required |None |Operand
-|=======================================================================
-
-
-[source,oac_no_warn]
-----
-...
-import org.glassfish.api.Param;
-...
-{
-…
-    @Param
-    String originator;
-
-    @Param(name="description", optional=true)
-    …
-    String mycontainerDescription
-
-    @Param (acceptableValues="true,false", defaultValue="false", optional=true)
-    String enabled
-
-    @Param(primary=true)
-    String containername;
-…
-}
-----
-
-[[gkygt]][[GSACG00109]][[making-asadmin-subcommands-cluster-aware]]
-
-Making `asadmin` Subcommands Cluster-Aware
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The GlassFish Server `asadmin` command framework provides support for
-making `asadmin` subcommands work properly in a clustered environment or
-with standalone server instances. A command that changes a configuration
-is first executed on the domain administration server (DAS) and then
-executed on each of the server instances affected by the change.
-Annotations provided by the framework determine the instances on which
-the command should be replicated and executed. Commands that do not
-change a configuration need not be executed on the DAS at all, but only
-on the necessary instances. The framework provides support for
-collecting the output from the instances and sending a report back to
-the user.
-
-Subcommands in a multi-instance environment can accept a `--target`
-option to specify the cluster or instance on which the command acts.
-From within the command, the `Target` utility allows the command to
-determine information about where it is running. For some commands, it
-may be desirable to have a main command that runs on the DAS and
-supplemental preprocessing or postprocessing commands that run on the
-instances.
-
-The following topics are addressed here:
-
-* link:#gkyjk[Specifying Allowed Targets]
-* link:#gkykm[The `Target` Utility]
-* link:#gkyfv[Specifying `asadmin` Subcommand Execution]
-* link:#gkyjs[Subcommand Preprocessing and Postprocessing]
-* link:#gkyit[Running a Command from Another Command]
-
-[[gkyjk]][[GSACG00206]][[specifying-allowed-targets]]
-
-Specifying Allowed Targets
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-When you define a `--target` option by using the `@Param` annotation in
-the `org.glassfish.api` package, possible targets are as follows:
-
-* `domain` — The entire domain
-* `server` — The domain administration server, or DAS
-* cluster — A homogeneous set of server instances that function as a
-unit
-* standalone instance — A server instance that isn't part of a cluster
-* clustered instance — A server instance that is part of a cluster
-* config — A configuration for a cluster or standalone server instance
-
-These possible targets are represented by the following `CommandTarget`
-elements of the `@TargetType` annotation in the
-`org.glassfish.config.support` package:
-
-* `CommandTarget.DOMAIN`
-* `CommandTarget.DAS`
-* `CommandTarget.CLUSTER`
-* `CommandTarget.STANDALONE_SERVER`
-* `CommandTarget.CLUSTERED_INSTANCE`
-* `CommandTarget.CONFIG`
-
-By default, the allowed targets are `server` (the DAS), standalone
-server instances, clusters, and configurations. Not specifying a
-`@TargetType` annotation is equivalent to specifying the following
-`@TargetType` annotation:
-
-[source,oac_no_warn]
-----
-@TargetType(CommandTarget.DAS,CommandTarget.STANDALONE_SERVER,CommandTarget.CLUSTER,CommandTarget.CONFIG)
-----
-
-Subcommands that support other combinations of targets must specify
-`@TargetType` annotations. For example, the `create-http-lb` subcommand
-supports only standalone server instance and cluster targets. Its
-`@TargetType` annotation is as follows:
-
-[source,oac_no_warn]
-----
-@TargetType(CommandTarget.STANDALONE_SERVER,CommandTarget.CLUSTER)
-----
-
-Most subcommands do not act on server instances that are part of a
-cluster. This ensures that all server instances in a cluster remain
-synchronized. Thus, the `CommandTarget.CLUSTERED_INSTANCE` element of
-the `@TargetType` annotation is rarely used.
-
-An example exception is the `enable` subcommand. To perform a rolling
-upgrade of an application deployed to a cluster, you must be able to
-enable the new application (which automatically disables the old) on one
-clustered instance at a time. The `@TargetType` annotation for the
-`enable` subcommand is as follows, all on one line:
-
-[source,oac_no_warn]
-----
-@TargetType(CommandTarget.DAS,CommandTarget.STANDALONE_INSTANCE,CommandTarget.CLUSTER,
-CommandTarget.CLUSTERED_INSTANCE)
-----
-
-Note that the `CommandTarget.CLUSTERED_INSTANCE` element is specified.
-
-The target name specified in the command line is injected into the
-subcommand implementation if the following annotation is present:
-
-[source,oac_no_warn]
-----
-@Param(optional=true,defaultValue=SystemPropertyConstants.DEFAULT_SERVER_INSTANCE_NAME)
-    String target;
-----
-
-[[gkykm]][[GSACG00207]][[the-target-utility]]
-
-The `Target` Utility
-^^^^^^^^^^^^^^^^^^^^
-
-The `Target` utility is a service, present in the `internal-api` module,
-`org.glassfish.internal.api` package, which a command implementation can
-obtain by using the following annotation:
-
-[source,oac_no_warn]
-----
-@Inject Target targetUtil;
-----
-
-You can use this utility to avoid writing boiler plate code for actions
-such as getting the list of server instances for a cluster or checking
-if a server instance is part of a cluster. For example, here is an
-example of using the utility to obtain the configuration for a target
-cluster or server instance:
-
-[source,oac_no_warn]
-----
-Config c = targetUtil.getConfig(target);
-----
-
-The `Target` utility is packaged in the
-as-install`/modules/internal-api.jar` file. Its methods are documented
-with comments.
-
-[[gkyfv]][[GSACG00208]][[specifying-asadmin-subcommand-execution]]
-
-Specifying `asadmin` Subcommand Execution
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-By default, all `asadmin` subcommands are automatically replicated and
-run on the DAS and all GlassFish Server instances specified in the
-`--target` option. To run a subcommand only on the DAS, use the
-following `@ExecuteOn` annotation in the `org.glassfish.api.admin`
-package:
-
-[source,oac_no_warn]
-----
-@ExecuteOn(RuntimeType.DAS)
-----
-
-The `stop-domain` subcommand and subcommands that list information are
-examples of subcommands that execute only on the DAS.
-
-To run a subcommand only on applicable server instances, use the
-following `@ExecuteOn` annotation:
-
-[source,oac_no_warn]
-----
-@ExecuteOn(RuntimeType.INSTANCE)
-----
-
-Not specifying an `@ExecuteOn` annotation is equivalent to specifying
-the following `@ExecuteOn` annotation:
-
-[source,oac_no_warn]
-----
-@ExecuteOn(RuntimeType.DAS,RuntimeType.INSTANCE)
-----
-
-In addition to `RuntimeType`, you can specify the following additional
-elements with the `@ExecuteOn` annotation:
-
-* `ifFailure` — By default, if errors occur during execution of a
-subcommand on a server instance, command execution is considered to have
-failed and further execution is stopped. However, you can choose to
-ignore the failure or warn the user rather than stopping further command
-execution. Specify the `ifFailure` element and set it to
-`FailurePolicy.Ignore` or `FailurePolicy.Warn`. For example: +
-[source,oac_no_warn]
-----
-@ExecuteOn(value={RuntimeType.DAS}, ifFailure=FailurePolicy.Warn)
-----
-* `ifOffline` — By default, if a server instance is found to be offline
-during the command replication process, command execution is considered
-to have failed and further execution is stopped. However, you can choose
-to ignore the failure or warn the user rather than stopping further
-command execution. Specify the `ifOffline` element and set it to
-`FailurePolicy.Ignore` or `FailurePolicy.Warn`. For example: +
-[source,oac_no_warn]
-----
-@ExecuteOn(value={RuntimeType.DAS}, ifOffline=FailurePolicy.Ignore)
-----
-
-[[gkyjs]][[GSACG00209]][[subcommand-preprocessing-and-postprocessing]]
-
-Subcommand Preprocessing and Postprocessing
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Some `asadmin` subcommands may require preprocessing or postprocessing.
-For example, after an application is deployed to the DAS, references are
-created in all applicable server instances, which synchronize with the
-DAS. As another example, Message Queue or load balancer settings may
-have to be reconfigured whenever a server instance is added to a
-cluster.
-
-For such cases, the command replication framework provides the
-`@Supplemental` annotation (in the `org.glassfish.api.admin` package).
-An implementation must use the `value` element of the `@Supplemental`
-annotation to express the supplemented command. This value is the name
-of the command as defined by the supplemented command's `@Service`
-annotation (in the `org.jvnet.hk2.annotations` package).
-
-For example, the `deploy` subcommand requires postprocessing. The
-deployment command implementation looks like this:
-
-[source,oac_no_warn]
-----
-@Service(name="deploy")
-@ExecuteOn(RuntimeType.DAS)
-public DeployCommand implements AdminCommand {
-//Do Actual Deployment
-}
-----
-
-A supplemental command that is run after every successful deployment
-looks like this:
-
-[source,oac_no_warn]
-----
-@Service(name="DeploymentSupplementalCommand")
-@Supplemental("deploy")
-@ExecuteOn(RuntimeType.INSTANCE)
-public DeploymentSupplementalCommand implements AdminCommand {
-//Do logic that happens after deployment has been done
-}
-----
-
-As another example, a subcommand to create a local server instance might
-look like this:
-
-[source,oac_no_warn]
-----
-@Service(name = "create-local-instance")
-@Scoped(PerLookup.class)
-public final class CreateLocalInstanceCommand implements AdminCommand {
-//Do local instance creation
-}
-----
-
-A supplemental command to change Message Queue or load balancer settings
-after local instance creation might look like this:
-
-[source,oac_no_warn]
-----
-@Service(name="CreateLocalInstanceSupplementalCommand")
-@Supplemental("create-local-instance")
-public CreateLocalInstanceSupplementalCommand implements AdminCommand {
-//Change MQ/LB properties here
-}
-----
-
-A supplemental command implements AdminCommand, thus it can use the
-`@Param` annotation and expect the corresponding `asadmin` command
-parameters to be injected at runtime. The parameter values available for
-injection are the same ones provided for the original command with which
-the supplemental command is associated. For example, the
-`DeploymentSupplementalCommand` has access to the parameter values
-available to the `DeployCommand` invocation.
-
-An `asadmin` subcommand can be supplemented with multiple supplemental
-commands. In this case, all supplemental commands are run after
-completion of the main command but without any guarantee of the order in
-which they run.
-
-To specify that a supplemental command is run before the main command,
-set the `on` element of the `@Supplemental` annotation to
-`Supplemental.Timing.Before`. For example:
-
-[source,oac_no_warn]
-----
-@Supplemental(value="mycommand", on=Supplemental.Timing.Before)
-----
-
-Supplemental commands can use the `@ExecuteOn` annotation as described
-in link:#gkyfv[Specifying `asadmin` Subcommand Execution].
-
-[[gkyit]][[GSACG00210]][[running-a-command-from-another-command]]
-
-Running a Command from Another Command
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-An `asadmin` subcommand or supplemental command might need to run
-another subcommand. For example, a subcommand running on the DAS might
-need to run a different subcommand on one or more server instances. Such
-invocations might use the `ClusterExecutor` class (in the
-`org.glassfish.api.admin` package), which accepts a `ParameterMap`, to
-pass parameters and their values to the invoked command.
-
-The `ParameterMapExtractor` utility is a service, present in the
-`common-util` module, `org.glassfish.common.util.admin` package, which
-creates a new `ParameterMap` populated using the parameters and values
-of another `AdminCommand` that has already been injected.
-
-To list parameter names you want excluded from the `ParameterMap`, pass
-the following:
-
-[source,oac_no_warn]
-----
-Set<String>
-----
-
-This is optional.
-
-[[ghptw]][[GSACG00110]][[adding-message-text-strings-to-an-asadmin-subcommand]]
-
-Adding Message Text Strings to an `asadmin` Subcommand
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-A message text string provides useful information to the user about an
-`asadmin` subcommand or a parameter.
-
-To provide internationalization support for the text string of a
-subcommand or parameter, annotate the declaration of the subcommand or
-parameter with the `org.glassfish.api.I18n` annotation. The `@I18n`
-annotation identifies the resource from the resource bundle that is
-associated with your implementation.
-
-To add message text strings to an `asadmin` subcommand, create a plain
-text file that is named `LocalStrings.properties` to contain the
-strings. Define each string on a separate line of the file as follows:
-
-[source,oac_no_warn]
-----
-key=string
-----
-
-key::
-  A key that maps the string to a subcommand or a parameter. The format
-  to use for key depends on the target to which the key applies and
-  whether the target is annotated with the `@I18n` annotation. See the
-  following table. +
-[width="100%",cols="<36%,<64%",options="header",]
-|======================================================
-|Target |Format
-|Subcommand or parameter with the `@I18n` annotation a|
-[source,oac_no_warn]
-----
-subcommand-name.command.resource-name
-----
-
-|Subcommand without the `@I18n` annotation a|
-[source,oac_no_warn]
-----
-subcommand-name.command
-----
-
-|Parameter without the `@I18n` annotation a|
-[source,oac_no_warn]
-----
-subcommand-name.command.param-name
-----
-
-|======================================================
-
-  The replaceable parts of these formats are as follows: +
-  subcommand-name;;
-    The name of the subcommand.
-  resource-name;;
-    The name of the resource that is specified in the`@I18n` annotation.
-  param-name;;
-    The name of the parameter.
-string::
-  A string without quotes that contains the text of the message.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-To display the message strings to users, you must provide code in your
-implementation of the `execute` method to display the text. For more
-information about implementing the `execute` method, see
-link:#ghpvn[Enabling an `asadmin` Subcommand to Run].
-
-|=======================================================================
-
-
-[[GSACG00036]][[ghpvm]]
-
-
-Example 4-3 Adding Message Strings to an `asadmin` Subcommand
-
-This example shows the code for adding message strings to the
-`create-mycontainer` subcommand as follows:
-
-* The `create-mycontainer` subcommand is associated with the message
-`Creates a custom container`. No internationalization support is
-provided for this message.
-* The `--originator` parameter is associated with the message
-`The originator of the container`. No internationalization support is
-provided for this message.
-* The `--description` parameter is associated with the message that is
-contained in the resource `mydesc`, for which internationalization is
-provided. This resource contains the message text
-`A description of the container`.
-* The `--enabled` parameter is associated with the message
-`Whether the container is enabled or disabled`. No internationalization
-support is provided for this message.
-* The `--containername` parameter is associated with the message
-`The container name`. No internationalization support is provided for
-this message.
-
-The addition of the parameters `originator`, `description`, `enabled`
-and `containername` to the subcommand is shown in link:#ghpuh[Example
-4-2].
-
-[source,oac_no_warn]
-----
-package com.example.mycontainer;
-
-import org.glassfish.api.admin.AdminCommand;
-...
-import org.glassfish.api.I18n;
-import org.glassfish.api.Param;
-import org.jvnet.hk2.annotations.Service;
-...
-import org.jvnet.hk2.annotations.Scoped;
-import org.jvnet.hk2.component.PerLookup;
-
-/**
- * Sample subcommand
- */
-@Service(name="create-mycontainer")
-@Scoped(PerLookup.class)
-public Class CreateMycontainer implements AdminCommand {
-
-    …
-
-    @Param
-    String originator;
-
-    @Param(name="description", optional=true)
-    @I18n("mydesc")
-    String mycontainerDescription
-
-    @Param (acceptableValues="true,false", defaultValue="false", optional=true)
-    String enabled
-
-    @Param(primary=true)
-    String containername;
- …
-
-}
-----
-
-The following message text strings are defined in the file
-`LocalStrings.properties` for use by the subcommand:
-
-[source,oac_no_warn]
-----
-create-mycontainer.command=Creates a custom container
-create-mycontainer.command.originator=The originator of the container
-create-mycontainer.command.mydesc=A description of the container
-create-mycontainer.command.enabled=Whether the container is enabled or disabled
-create-mycontainer.command.containername=The container name
-----
-
-[[ghpvn]][[GSACG00111]][[enabling-an-asadmin-subcommand-to-run]]
-
-Enabling an `asadmin` Subcommand to Run
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-To enable an `asadmin` subcommand to run, implement the `execute` method
-in your implementation of the `AdminCommand` interface. The declaration
-of the `execute` method in your implementation must be as follows.
-
-[source,oac_no_warn]
-----
-    public void execute(AdminCommandContext context);
-----
-
-Pass each parameter of the subcommand as a property to your
-implementation of the `execute` method. Set the key of the property to
-the parameter name and set the value of the property to the parameter's
-value.
-
-In the body of the `execute` method, provide the code for performing the
-operation that the command was designed to perform. For examples, see
-link:#ghrsi[Example 4-6] and link:#gkbdf[Example 4-7].
-
-[[ghpvq]][[GSACG00112]][[setting-the-context-of-an-asadmin-subcommand]]
-
-Setting the Context of an `asadmin` Subcommand
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The `org.glassfish.api.admin.AdminCommandContext` class provides the
-following services to an `asadmin` subcommand:
-
-* Access to the parameters of the subcommand
-* Logging
-* Reporting
-
-To set the context of an `asadmin` subcommand, pass an
-`AdminCommandContext` object to the `execute` method of your
-implementation.
-
-[[ghpwn]][[GSACG00113]][[changing-the-brand-in-the-glassfish-server-cli]]
-
-Changing the Brand in the GlassFish Server CLI
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The brand in the GlassFish Server command-line interface (CLI) consists
-of the product name and release information that are displayed in the
-following locations:
-
-* In the string that the link:../reference-manual/version.html#GSRFM00261[`version`] subcommand displays
-* In each entry in the `server.log` file
-
-If you are incorporating GlassFish Server into a new product with an
-external vendor's own brand name, change the brand in the GlassFish
-Server CLI.
-
-To change the brand in the GlassFish Server CLI, create an OSGi fragment
-bundle that contains a plain text file that is named
-`src/main/resources/BrandingVersion.properties`.
-
-In the `BrandingVersion.properties` file, define the following
-keyword-value pairs:
-
-[source,oac_no_warn]
-----
-product_name=product-name
-abbrev_product_name=abbrev-product-name
-major_version=major-version
-minor_version=minor-version
-build_id=build-id
-version_prefix=version-prefix
-version_suffix=version-suffix
-----
-
-Define each keyword-value pair on a separate line of the file. Each
-value is a text string without quotes.
-
-The meaning of each keyword-value pair is as follows:
-
-`product_name=`product-name::
-  Specifies the full product name without any release information, for
-  example,
-  `name="ProductNameFullPlain" content="Eclipse GlassFish Server"`.
-`abbrev_product_name=`abbrev-product-name::
-  Specifies an abbreviated form of the product name without any release
-  information, for example,
-  `name="ProductNamePlain" content="GlassFish Server"`.
-`major_version=`major-version::
-  Returns the product major version, for example, `6`
-`minor_version=`minor-version::
-  Specifies the product minor version, for example, `0`.
-`build_id=`build-id::
-  Specifies the build version, for example, `build 17`.
-`version_prefix=`version-prefix::
-  Specifies a prefix for the product version, for example, `v`.
-`version_suffix=`version-suffix::
-  Specifies a suffix for the product version, for example, `Beta`.
-
-[[GSACG00037]][[ghrfh]]
-
-
-Example 4-4 `BrandingVersion.properties` File for Changing the Brand in
-the GlassFish Server CLI
-
-This example shows the content of the `BrandingVersion.properties` for
-defining the product name and release information of Eclipse GlassFish
-Server 6.0.0, build 17. The abbreviated product name is
-`glassfish-server`.
-
-[source,oac_no_warn]
-----
-product_name=Eclise GlassFish Server
-abbrev_product_name=glassfish-server
-major_version=6
-minor_version=0.0
-build_id=build 17
-----
-
-To enable the display of OEM-specific information, the following
-properties might also be required:
-
-[source,oac_no_warn]
-----
-LEGAL_COPYRIGHT                "Copyright 2020"
-LEGAL_COMPANY_NAME             "Eclipse Foundation"
-LEGAL_RIGHTS                   "All rights reserved."
-SIMPLE_COMPANY_NAME            "Eclipse"
-COMPANY_CONTACT_URL            "http://www.glassfish.org"
-PRODUCT_TRADEMARKS             "GlassFish is a trademark of the Eclipse Foundation"
-----
-
-[[ghmza]][[GSACG00114]][[examples-of-extending-the-asadmin-utility]]
-
-Examples of Extending the `asadmin` Utility
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-[[GSACG00038]][[ghrnt]]
-
-
-Example 4-5 `asadmin` Subcommand With Empty `execute` Method
-
-This example shows a class that represents the `asadmin` subcommand
-`create-mycontainer`.
-
-The usage statement for this subcommand is as follows:
-
-[source,oac_no_warn]
-----
-asadmin create-mycontainer --originator any-character-string
-[--description any-character-string]
-[--enabled {true|false}] any-character-string
-----
-
-This subcommand uses injection to specify that a running domain is
-required.
-
-[source,oac_no_warn]
-----
-package com.example.mycontainer;
-
-import org.glassfish.api.admin.AdminCommand;
-import org.glassfish.api.admin.AdminCommandContext;
-import org.glassfish.api.I18n;
-import org.glassfish.api.Param;
-import org.jvnet.hk2.annotations.Service;
-import org.jvnet.hk2.annotations.Inject;
-import org.jvnet.hk2.annotations.Scoped;
-import org.jvnet.hk2.component.PerLookup;
-
-/**
- * Sample subcommand
- */
-@Service(name="create-mycontainer")
-@Scoped(PerLookup.class)
-public Class CreateMycontainer implements AdminCommand {
-
-    @Inject
-    Domain domain;
-
-    @Param
-    String originator;
-
-    @Param(name="description", optional=true)
-    @I18n("mydesc")
-    String mycontainerDescription
-
-    @Param (acceptableValues="true,false", defaultValue="false", optional=true)
-    String enabled
-
-    @Param(primary=true)
-    String containername;
-
-    /**
-     * Executes the subcommand with the subcommand parameters passed as Properties
-     * where the keys are the paramter names and the values the parameter values
-     * @param context information
-     */
-    public void execute(AdminCommandContext context) {
-        // domain and originator are not null
-        // mycontainerDescription can be null.
-    }
-}
-----
-
-The following message text strings are defined in the file
-`LocalStrings.properties` for use by the subcommand:
-
-[source,oac_no_warn]
-----
-create-mycontainer.command=Creates a custom container
-create-mycontainer.command.originator=The originator of the container
-create-mycontainer.command.mydesc=A description of the container
-create-mycontainer.command.enabled=Whether the container is enabled or disabled
-create-mycontainer.command.containername=The container name
-----
-
-[[GSACG00039]][[ghrsi]]
-
-
-Example 4-6 `asadmin` Subcommand for Retrieving and Displaying
-Information
-
-This example shows a class that represents the `asadmin` subcommand
-`list-runtime-environment`. The subcommand determines the operating
-system or runtime information for GlassFish Server.
-
-The usage statement for this subcommand is as follows:
-
-[source,oac_no_warn]
-----
-asadmin list-runtime-environment{runtime|os}
-
-package com.example.env.cli;
-
-import org.glassfish.api.admin.AdminCommand;
-import org.glassfish.api.admin.AdminCommandContext;
-import org.glassfish.api.ActionReport;
-import org.glassfish.api.I18n;
-import org.glassfish.api.ActionReport.ExitCode;
-import org.glassfish.api.Param;
-import org.jvnet.hk2.annotations.Service;
-import org.jvnet.hk2.annotations.Inject;
-import org.jvnet.hk2.annotations.Scoped;
-import org.jvnet.hk2.component.PerLookup;
-
-import java.lang.management.ManagementFactory;
-import java.lang.management.OperatingSystemMXBean;
-import java.lang.management.RuntimeMXBean;
-
-/**
- * Demos asadmin CLI extension
- *
-  */
-@Service(name="list-runtime-environment")
-@Scoped(PerLookup.class)
-public class ListRuntimeEnvironmentCommand implements AdminCommand {
-
-    // this value can be either runtime or os for our demo
-    @Param(primary=true)
-    String inParam;
-
-    public void execute(AdminCommandContext context) {
-
-        ActionReport report = context.getActionReport();
-        report.setActionExitCode(ExitCode.SUCCESS);
-
-        // If the inParam is 'os' then this subcommand returns operating system
-        // info and if the inParam is 'runtime' then it returns runtime info.
-        // Both of the above are based on mxbeans.
-
-        if ("os".equals(inParam)) {
-            OperatingSystemMXBean osmb = ManagementFactory.getOperatingSystemMXBean();
-            report.setMessage("Your machine operating system name = " + osmb.getName());
-        } else if ("runtime".equals(inParam)) {
-            RuntimeMXBean rtmb = ManagementFactory.getRuntimeMXBean();
-            report.setMessage("Your JVM name = " + rtmb.getVmName());
-        } else {
-            report.setActionExitCode(ExitCode.FAILURE);
-            report.setMessage("operand should be either 'os' or 'runtime'");
-        }
-
-    }
-}
-----
-
-[[GSACG00040]][[gkbdf]]
-
-
-Example 4-7 `asadmin` Subcommand for Updating Configuration Data
-
-This example shows a class that represents the `asadmin` subcommand
-`configure-greeter-container`. The subcommand performs a transaction to
-update configuration data for a container component. For more
-information about such transactions, see
-link:adding-configuration-data.html#gjrcz[Creating a Transaction to
-Update Configuration Data].
-
-The usage statement for this subcommand is as follows:
-
-[source,oac_no_warn]
-----
-asadmin configure-greeter-container --instances instances [--language language] [--style style]
-----
-
-The acceptable values and default value of each option of the subcommand
-are shown in the following table. The table also indicates whether each
-option is optional or required.
-
-[width="100%",cols="<25%,<25%,<25%,<25%",options="header",]
-|==================================================================
-|Option |Acceptable Values |Default value |Optional or Required
-|`--instances` |An integer in the range 1-10 |5 |Required
-|`--language` |`english`, `norsk`, or `francais` |`norsk` |Optional
-|`--style` |`formal`, `casual`, or `expansive` |`formal` |Optional
-|==================================================================
-
-
-Code for the container component is shown in
-link:adding-container-capabilities.html#gkane[Example of Adding Container
-Capabilities].
-
-Code that defines the configuration data for the container component is
-shown in link:adding-configuration-data.html#gkaal[Examples of Adding
-Configuration Data for a Component].
-
-[source,oac_no_warn]
-----
-package org.glassfish.examples.extension.greeter.config;
-
-import org.glassfish.api.admin.AdminCommand;
-import org.glassfish.api.admin.AdminCommandContext;
-import org.glassfish.api.Param;
-import org.jvnet.hk2.annotations.Service;
-import org.jvnet.hk2.annotations.Inject;
-import org.jvnet.hk2.config.Transactions;
-import org.jvnet.hk2.config.ConfigSupport;
-import org.jvnet.hk2.config.SingleConfigCode;
-import org.jvnet.hk2.config.TransactionFailure;
-
-import java.beans.PropertyVetoException;
-
-@Service(name = "configure-greeter-container")
-public class ConfigureGreeterContainerCommand implements AdminCommand {
-
-    @Param(acceptableValues = "1,2,3,4,5,6,7,8,9,10", defaultValue = "5")
-    String instances;
-    @Param(acceptableValues = "english,norsk,francais", defaultValue = "norsk",
-    optional = true)
-    String language;
-    @Param(acceptableValues = "formal,casual,expansive", defaultValue = "formal",
-    optional = true)
-    String style;
-    @Inject
-    GreeterContainerConfig config;
-
-    public void execute(AdminCommandContext adminCommandContext) {
-        try {
-            ConfigSupport.apply(new SingleConfigCode<GreeterContainerConfig>() {
-
-                public Object run(GreeterContainerConfig greeterContainerConfig)
-                        throws PropertyVetoException, TransactionFailure {
-                    greeterContainerConfig.setNumberOfInstances(instances);
-                    greeterContainerConfig.setLanguage(language);
-                    greeterContainerConfig.setStyle(style);
-                    return null;
-                }
-            }, config);
-        } catch (TransactionFailure e) {
-        }
-
-    }
-}
-----
-
-[[gkzlq]][[GSACG00115]][[implementing-create-delete-and-list-commands-using-annotations]]
-
-Implementing Create, Delete, and List Commands Using Annotations
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Many `asadmin` subcommands simply create, delete, or list objects in the
-configuration. Such code is repetitive to write and error prone. To
-simplify the writing of these `asadmin` commands, GlassFish Server
-supports annotations that can create, delete, and list configuration
-objects from a command invocation. Unless attributes or properties are
-set to non-default values or extra actions are required, no writing of
-code is needed.
-
-The following topics are addressed here:
-
-* link:#gkzkc[Command Patterns]
-* link:#gkzle[Resolvers]
-* link:#gkzoy[The `@Create` Annotation]
-* link:#gkzoo[The `@Delete` Annotation]
-* link:#gkzpl[The `@Listing` Annotation]
-* link:#gkznf[Create Command Decorators]
-* link:#gkznx[Delete Command Decorators]
-* link:#gkzmu[Specifying Command Execution]
-* link:#gkznd[Using Multiple Command Annotations]
-
-[[gkzkc]][[GSACG00211]][[command-patterns]]
-
-Command Patterns
-^^^^^^^^^^^^^^^^
-
-Create command pattern. The most basic create commands are implemented
-in the following pattern:
-
-1.  Retrieve the parent configuration object instance to which the child
-will be added. For example, the parent could be a `Clusters` object and
-the child a `Cluster` object.
-2.  Start a transaction on the parent instance.
-3.  Create the child configuration object instance.
-4.  Set the attributes and properties of the newly created child
-instance.
-5.  Add the child to the parent using one of the following accessor
-methods: +
-[source,oac_no_warn]
-----
-void setChild(ChildType child)
-----
-Used when there can be zero or one children of a single type associated
-with one parent instance. +
-[source,oac_no_warn]
-----
-List<ChildType> getChildren()
-----
-Used when there can be zero or more children of a single type associated
-with one parent instance. +
-You cannot retrieve a set of children of the same type from the same
-parent using two different accessor methods.
-6.  Commit the transaction.
-
-A generic create command implementation can do most of these tasks if
-the following information is provided:
-
-* A way to resolve the identity of the parent instance.
-* The type of the child instance.
-* A mapping between command options and child attributes.
-* The accessor method for adding the child to the parent.
-
-Delete command pattern. The most basic delete commands are implemented
-in the following pattern:
-
-1.  Retrieve the configuration object instance to be deleted.
-2.  Start a transaction on the parent instance.
-3.  Delete the child by removing it from the list or calling
-`setXXX(null)`.
-4.  Commit the transaction.
-
-A generic delete command implementation can do most of these tasks if
-the following information is provided:
-
-* A way to resolve the identity of the child instance.
-* The accessor method for deleting the child.
-
-List command pattern. The most basic list commands simply retrieve all
-configuration object instances of a given type.
-
-[[gkzle]][[GSACG00212]][[resolvers]]
-
-Resolvers
-^^^^^^^^^
-
-A resolver retrieves a configuration object instance of a particular
-type. For a create command, it retrieves the parent of the object to be
-created. For a delete command, it retrieves the object to be deleted. A
-resolver implements the CrudResolver interface:
-
-[source,oac_no_warn]
-----
-package org.glassfish.config.support;
-
-/**
- * A config resolver is responsible for finding the target object of a specified
- * type on which a creation command invocation will be processed.
- *
- * Implementation of these interfaces can be injected with the command invocation
- * parameters in order to determine which object should be returned
- */
-@Contract
-public interface CrudResolver {
-
-    /**
-     * Retrieves the existing configuration object a command invocation is
-     * intented to mutate.
-     * @param context the command invocation context
-     * @param type the type of the expected instance
-     * @return the instance or null if not found
-     */
-    <T extends ConfigBeanProxy> T resolve(AdminCommandContext context, Class<T> type);
-}
-----
-
-Given an `AdminCommandContext`, plus injection with the `asadmin`
-command line parameters (or any other HK2 services if necessary), the
-resolver should be able to determine the particular configuration object
-on which to act.
-
-The following resolvers are provided in the
-`org.glassfish.config.support` package:
-
-* `TargetBasedResolver` — Uses the `--target` option and the expected
-return type to retrieve the configuration object instance.
-* `TargetAndNameBasedResolver` — Uses the `--target` option to look up a
-`Config` object and a name to retrieve one of the `Config` object's
-children.
-* `TypeAndNameResolver` — Uses the requested type and `asadmin` command
-name operand to find the configuration object instance. This is useful
-for a configuration that uses the `@Index` annotation, which registers
-instances under names.
-* `TypeResolver` — Uses the requested type to find the configuration
-object instance. This is the default resolver.
-
-[[gkzoy]][[GSACG00213]][[the-create-annotation]]
-
-The `@Create` Annotation
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-By placing the `org.glassfish.config.support.Create` annotation on a
-method, you provide the following information:
-
-* The `value` element of the `@Create` annotation is the name of the
-`asadmin` subcommand that creates the configuration object.
-* The method's class is the type of the parent.
-* The method's return type or parameter type is the type of the child.
-* The method is the accessor method that adds a child of the specified
-type to the parent.
-
-The only additional information needed is the resolver to use.
-
-The following example specifies a `create-cluster` subcommand:
-
-[source,oac_no_warn]
-----
-@Configured
-public interface Clusters extends ConfigBeanProxy, Injectable {
-
-     /**
-      * Return the list of clusters currently configured
-      *
-      * @return list of {@link Cluster }
-      */
-    @Element
-    @Create(value="create-cluster")
-    public List<Cluster> getCluster();
-}
-----
-
-Because there is only one instance of the parent type, `Clusters`, in
-the configuration, this example uses the default resolver to retrieve
-it. Therefore, no resolver needs to be specified.
-
-[[gkzoo]][[GSACG00214]][[the-delete-annotation]]
-
-The `@Delete` Annotation
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-By placing the `org.glassfish.config.support.Delete` annotation on a
-method, you provide the following information:
-
-* The `value` element of the `@Delete` annotation is the name of the
-`asadmin` subcommand that deletes the configuration object.
-* The method's class is the type of the parent.
-* The method's return type or parameter type is the type of the child.
-* The method is the accessor method that deletes a child of the
-specified type from the parent.
-
-The only additional information needed is the resolver to use.
-
-The following example specifies a `delete-cluster` subcommand:
-
-[source,oac_no_warn]
-----
-@Configured
-public interface Clusters extends ConfigBeanProxy, Injectable {
-
-     /**
-      * Return the list of clusters currently configured
-      *
-      * @return list of {@link Cluster }
-      */
-    @Element
-    @Delete(value="delete-cluster", resolver=TypeAndNameResolver.class)
-    public List<Cluster> getCluster();
-}
-----
-
-The `TypeAndNameResolver` uses the child type and the name operand
-passed through the command line to retrieve the specific cluster
-instance to be deleted.
-
-[[gkzpl]][[GSACG00215]][[the-listing-annotation]]
-
-The `@Listing` Annotation
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-By placing the `org.glassfish.config.support.Listing` annotation on a
-method, you provide the following information:
-
-* The `value` element of the `@Listing` annotation is the name of the
-`asadmin` subcommand that lists the configuration objects.
-* The method's class is the type of the parent.
-* The method's return type is the type of the children to be listed.
-* The method is always the following accessor method: +
-[source,oac_no_warn]
-----
-List<ChildType> getChildren()
-----
-
-The default resolver retrieves all of the children of the specified
-type. Therefore, no resolver needs to be specified for a list command.
-
-The following example specifies a `list-clusters` subcommand:
-
-[source,oac_no_warn]
-----
-@Configured
-public interface Clusters extends ConfigBeanProxy, Injectable {
-
-     /**
-      * Return the list of clusters currently configured
-      *
-      * @return list of {@link Cluster }
-      */
-    @Element
-    @Listing(value="list-clusters")
-    public List<Cluster> getCluster();
-}
-----
-
-[[gkznf]][[GSACG00216]][[create-command-decorators]]
-
-Create Command Decorators
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Most create commands must do more than create a single configuration
-object instance with default attribute values. For example, most create
-commands allow the user to specify non-default attribute values through
-command options. For another example, the `create-cluster` subcommand
-creates children of the `Cluster` object and copies a referenced
-`Config` object. A creation decorator provides the code necessary to
-perform such additional operations.
-
-The interface that a creation decorator must implement is as follows:
-
-[source,oac_no_warn]
-----
-@Scoped(PerLookup.class)
-public interface CreationDecorator<T extends ConfigBeanProxy> {
-
-    /**
-     * The element instance has been created and added to the parent, it can be
-     * customized. This method is called within a
-     * {@link org.jvnet.hk2.config.Transaction}
-     * and instance is therefore a writeable view on the configuration component.
-     *
-     * @param context administration command context
-     * @param instance newly created configuration element
-     * @throws TransactionFailure if the transaction should be rollbacked
-     * @throws PropertyVetoException if one of the listener of <T> is throwing
-     * a veto exception
-     */
-    public void decorate(AdminCommandContext context, T instance)
-        throws TransactionFailure, PropertyVetoException;
-
-    /**
-     * Default implementation of a decorator that does nothing.
-     */
-    @Service
-    public class NoDecoration implements CreationDecorator<ConfigBeanProxy> {
-        @Override
-        public void decorate(AdminCommandContext context, ConfigBeanProxy instance)
-            throws TransactionFailure, PropertyVetoException {
-            // do nothing
-        }
-    }
-}
-----
-
-The CreationDecorator interface is in the `org.glassfish.config.support`
-package.
-
-A `@Create` annotation specifies a creation decorator using a
-`decorator` element. For example:
-
-[source,oac_no_warn]
-----
-@Configured
-public interface Clusters extends ConfigBeanProxy, Injectable {
-
-     /**
-      * Return the list of clusters currently configured
-      *
-      * @return list of {@link Cluster }
-      */
-    @Element
-    @Create(value="create-cluster", decorator=Cluster.Decorator.class)
-    public List<Cluster> getCluster();
-}
-----
-
-The `@Create` annotation is on a method of the parent class. However,
-the referenced creation decorator class is associated with the child
-class. For example:
-
-[source,oac_no_warn]
-----
-@Configured
-public interface Cluster extends ConfigBeanProxy, ... {
-
-    ...
-
-    @Service
-    @Scoped(PerLookup.class)
-    class Decorator implements CreationDecorator<Cluster> {
-
-        @Param(name="config", optional=true)
-        String configRef=null;
-
-        @Inject
-        Domain domain;
-
-        @Override
-        public void decorate(AdminCommandContext context, final Cluster instance)
-                throws TransactionFailure, PropertyVetoException {
-
-        ...
-
-        }
-    }
-}
-----
-
-The decorator class can optionally be an inner class of the child class.
-You can inject command options using the `@Param` annotation. You can
-also inject HK2 services or configuration instances.
-
-[[gkznx]][[GSACG00217]][[delete-command-decorators]]
-
-Delete Command Decorators
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Some delete commands must do more than delete a single configuration
-object instance. For example, the `delete-cluster` subcommand deletes
-the referenced `Config` object if no other `Cluster` or `Instance`
-objects reference it. A deletion decorator provides the code necessary
-to perform such additional operations.
-
-The interface that a deletion decorator must implement is as follows:
-
-[source,oac_no_warn]
-----
-/**
- * A decorator for acting upon a configuration element deletion.
- *
- * @param <T> the deleted element parent type
- * @param <U> the deleted element
- */
-@Scoped(PerLookup.class)
-public interface DeletionDecorator<T extends ConfigBeanProxy,
-    U extends ConfigBeanProxy> {
-
-    /**
-     * notification of a configuration element of type U deletion.
-     *
-     * Note that this notification is called within the boundaries of the
-     * configuration transaction, therefore the parent instance is a
-     * writable copy and further changes to the parent can be made without
-     * enrolling it inside a transaction.
-     *
-     * @param context the command context to lead to the element deletion
-     * @param parent the parent instance the element was removed from
-     * @param child the deleted instance
-     */
-    public void decorate(AdminCommandContext context, T parent, U child);
-}
-----
-
-The DeletionDecorator interface is in the `org.glassfish.config.support`
-package.
-
-A `@Delete` annotation specifies a deletion decorator using a
-`decorator` element. For example:
-
-[source,oac_no_warn]
-----
-@Configured
-public interface Clusters extends ConfigBeanProxy, Injectable {
-
-     /**
-      * Return the list of clusters currently configured
-      *
-      * @return list of {@link Cluster }
-      */
-    @Element
-    @Delete(value="delete-cluster", resolver= TypeAndNameResolver.class,
-        decorator=Cluster.DeleteDecorator.class)
-    public List<Cluster> getCluster();
-}
-----
-
-The `@Delete` annotation is on a method of the parent class. However,
-the referenced deletion decorator class is associated with the child
-class. For example:
-
-[source,oac_no_warn]
-----
-@Configured
-public interface Cluster extends ConfigBeanProxy, ... {
-
-    ..
-    @Service
-    @Scoped(PerLookup.class)
-    class DeleteDecorator implements DeletionDecorator<Clusters, Cluster> {
-        ....
-    }
-}
-----
-
-The decorator class can optionally be an inner class of the child class.
-You can inject command options using the `@Param` annotation. You can
-also inject HK2 services or configuration instances.
-
-[[gkzmu]][[GSACG00218]][[specifying-command-execution]]
-
-Specifying Command Execution
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Commands specified with the `@Create`, `@Delete`, and `@Listing`
-annotations can use the `@ExecuteOn` annotation. The `@ExecuteOn`
-annotation specifies whether the command runs on the DAS, on server
-instances, or both (the default). For more information, see
-link:#gkyfv[Specifying `asadmin` Subcommand Execution].
-
-To add an `@ExecuteOn` annotation to a `@Create` or `@Delete`
-annotation, use the `cluster` element. For example:
-
-[source,oac_no_warn]
-----
-@Create(value="create-instance", resolver=TypeResolver.class,
-        decorator=Server.CreateDecorator.class,
-        cluster=@org.glassfish.api.admin.ExecuteOn(value=RuntimeType.DAS))
-----
-
-[[gkznd]][[GSACG00219]][[using-multiple-command-annotations]]
-
-Using Multiple Command Annotations
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can specify multiple command annotations on the same method. The
-following example combines create, delete, and list commands for
-clusters:
-
-[source,oac_no_warn]
-----
-@Configured
-public interface Clusters extends ConfigBeanProxy, Injectable {
-
-     /**
-      * Return the list of clusters currently configured
-      *
-      * @return list of {@link Cluster }
-      */
-    @Element
-    @Create(value="create-cluster", decorator=Cluster.Decorator.class)
-    @Delete(value="delete-cluster", resolver= TypeAndNameResolver.class,
-        decorator=Cluster.DeleteDecorator.class)
-    @Listing(value="list-clusters")
-    public List<Cluster> getCluster();
-}
-----
-
-You can also specify multiple create or delete command annotations for
-the same configuration object type using the `@Creates` or `@Deletes`
-annotation (both in the `org.glassfish.config.support` package). For
-example:
-
-[source,oac_no_warn]
-----
-@Element
-@Creates(
-   @Create(value="create-something", decorator=CreateSomething.Decorator)
-   @Create(value="create-something-else", decorator=CreateSomethingElse.Decorator)
-   List<Something> getSomethings();
-)
-----
-
-These commands create configuration object instances of the same type.
-Differences in the decorators and resolvers can produce differences in
-the options each command takes. The `@Param` annotated attributes of the
-created type define a superset of options for both commands.
-
-----
diff --git a/docs/add-on-component-development-guide/src/main/jbake/content/extending-the-admin-console.adoc b/docs/add-on-component-development-guide/src/main/jbake/content/extending-the-admin-console.adoc
deleted file mode 100644
index 6b7aaf2..0000000
--- a/docs/add-on-component-development-guide/src/main/jbake/content/extending-the-admin-console.adoc
+++ /dev/null
@@ -1,1100 +0,0 @@
-type=page
-status=published
-title=Extending the Administration Console
-next=extending-asadmin.html
-prev=writing-hk2-components.html
-~~~~~~
-Extending the Administration Console
-====================================
-
-[[GSACG00003]][[ghmrb]]
-
-
-[[extending-the-administration-console]]
-3 Extending the Administration Console
---------------------------------------
-
-The Administration Console is a browser-based tool for administering
-Eclipse GlassFish Server. It features an easy-to-navigate interface and online
-help. Extending the Administration Console enables you to provide a
-graphical user interface for administering your add-on component. You
-can use any of the user interface features of the Administration
-Console, such as tree nodes, links on the Common Tasks page, tabs and
-sub-tabs, property sheets, and Jakarta Server Faces pages. Your add-on
-component implements a marker interface and provides a configuration
-file that describes how your customizations integrate with the
-Administration Console.
-
-This chapter refers to a simple example called `console-sample-ip` that
-illustrates how to provide Administration Console features for a
-hypothetical add-on component. 
-
-The following topics are addressed here:
-
-* link:#ghmof[Administration Console Architecture]
-* link:#ghmom[About Administration Console Templates]
-* link:#ghmqr[About Integration Points]
-* link:#ghmpg[Specifying the ID of an Add-On Component]
-* link:#ghmpk[Adding Functionality to the Administration Console]
-* link:#ghmqi[Adding Internationalization Support]
-* link:#ghmqg[Changing the Theme or Brand of the Administration Console]
-* link:#ghpkz[Creating an Integration Point Type]
-
-[[ghmof]][[GSACG00097]][[administration-console-architecture]]
-
-Administration Console Architecture
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The Administration Console is a web application that is composed of OSGi
-bundles. These bundles provide all the features of the Administration
-Console, such as the Web Applications, Update Center, and Security
-content. To provide support for your add-on component, create your own
-OSGi bundle that implements the parts of the user interface that you
-need. Place your bundle in the `modules` directory of your GlassFish
-Server installation, along with the other Administration Console
-bundles.
-
-To learn how to package the Administration Console features for an
-add-on component, go to the `modules` directory of your GlassFish Server
-installation and examine the contents of the files named
-`console-`componentname`-plugin.jar`. Place the `console-sample-ip`
-project bundle in the same place to deploy it and examine the changes
-that it makes to the Administration Console.
-
-The Administration Console includes a Console Add-On Component Service.
-The Console Add-On Component Service is an HK2 service that acts as a
-façade to all theAdministration Console add-on components. The Console
-Add-On Component Service queries the various console providers for
-integration points so that it can perform the actions needed for the
-integration (adding a tree node or a new tab, for example). The
-interface name for this service is
-`org.glassfish.api.admingui.ConsolePluginService`.
-
-For details about the Hundred-Kilobyte Kernel (HK2) project, see
-link:introduction.html#ghmnq[Hundred-Kilobyte Kernel] and
-link:writing-hk2-components.html#ghokq[HK2 Component Model].
-
-Each add-on component must contain a console provider implementation.
-This is a Java class that implements the
-`org.glassfish.api.admingui.ConsoleProvider` interface and uses the HK2
-`@Service` annotation. The console provider allows your add-on component
-to specify where your integration point configuration file is located.
-This configuration file communicates to the Console Add-On Component
-Service the customizations that your add-on component makes to the
-Administration Console.
-
-[[ghnzl]][[GSACG00187]][[implementing-a-console-provider]]
-
-Implementing a Console Provider
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The `org.glassfish.api.admingui.ConsoleProvider` interface has one
-required method, `getConfiguration`. The `getConfiguration` method
-returns the location of the `console-config.xml` file as a
-`java.net.URL`. If `getConfiguration` returns `null`, the default
-location, `META-INF/admingui/console-config.xml`, is used. The
-`console-config.xml` file is described in link:#ghmqr[About Integration
-Points].
-
-To implement the console provider for your add-on component, write a
-Java class that is similar to the following example.
-
-[[GSACG00019]][[ghosz]]
-
-
-Example 3-1 Example `ConsoleProvider` Implementation
-
-This example shows a simple implementation of the `ConsoleProvider`
-interface:
-
-[source,oac_no_warn]
-----
-package org.glassfish.admingui.plugin;
-
-import org.glassfish.api.admingui.ConsoleProvider;
-import org.jvnet.hk2.annotations.Service;
-
-import java.net.URL;
-
-@Service
-public class SamplePlugin implements ConsoleProvider {
-
-    public URL getConfiguration() { return null; }
-}
-----
-
-This implementation of `getConfiguration` returns null to specify that
-the configuration file is in the default location. If you place the file
-in a nonstandard location or give it a name other than
-`console-config.xml`, your implementation of `getConfiguration` must
-return the URL where the file can be found.
-
-
-[[ghmom]][[GSACG00098]][[about-administration-console-templates]]
-
-About Administration Console Templates
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-GlassFish Server includes a set of templates that make it easier to
-create Jakarta Server Faces pages for your add-on component. These templates
-use Templating for Jakarta Server Faces Technology, which is also known as
-JSFTemplating.
-
-Examples of JSFTemplating technology can be found in the following
-sections of this chapter:
-
-* link:#ghoej[Creating a Jakarta Server Faces Page for Your Node]
-* link:#ghovg[Creating Jakarta Server Faces Pages for Your Tabs]
-* link:#ghoeu[Creating a Jakarta Server Faces Page for Your Task]
-* link:#ghoya[Creating a Jakarta Server Faces Page for Your Task Group]
-* link:#ghpao[Creating a Jakarta Server Faces Page for Your Page Content]
-* link:#ghmqe[Adding a Page to the Administration Console]
-
-[[ghmqr]][[GSACG00099]][[about-integration-points]]
-
-About Integration Points
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-The integration points for your add-on component are the individual
-Administration Console user interface features that your add-on
-component will extend. You can implement the following kinds of
-integration points:
-
-* Nodes in the navigation tree
-* Elements on the Common Tasks page of the Administration Console
-* Jakarta Server Faces pages
-* Tabs and sub-tabs
-
-Specify all the integration points in a file named `console-config.xml`.
-In the example, this file is in the directory
-`project/src/main/resources/META-INF/admingui/`. The following sections
-describe how to create this file.
-
-In addition, create Jakarta Server Faces pages that contain JSF code
-fragments to implement the integration points. In the example, these
-files are in the directory `project/src/main/resources/`. The content of
-these files depends on the integration point you are implementing. The
-following sections describe how to create these JavaServer Faces pages.
-
-For reference information on integration points, see
-link:integration-point-reference.html#ghmrp[Integration Point Reference].
-
-[[ghmpg]][[GSACG00100]][[specifying-the-id-of-an-add-on-component]]
-
-Specifying the ID of an Add-On Component
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The `console-config.xml` file consists of a `console-config` element
-that encloses a series of `integration-point` elements. The
-`console-config` element has one attribute, `id`, which specifies a
-unique name or ID value for the add-on component.
-
-In the example, the element is declared as follows:
-
-[source,oac_no_warn]
-----
-<console-config id="sample">
-    ...
-</console-config>
-----
-
-You will also specify this ID value when you construct URLs to images,
-resources and pages in your add-on component. See link:#ghocf[Adding a
-Node to the Navigation Tree] for an example.
-
-For example, a URL to an image named `my.gif` might look like this:
-
-[source,oac_no_warn]
-----
-<sun:image url="/resource/sample/images/my.gif" />
-----
-
-The URL is constructed as follows:
-
-* `/resource` is required to locate any resource URL.
-* `sample` is the add-on component ID. You must choose a unique ID
-value.
-* `images` is a folder under the root of the add-on component JAR file.
-
-[[ghmpk]][[GSACG00101]][[adding-functionality-to-the-administration-console]]
-
-Adding Functionality to the Administration Console
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The `integration-point` elements in the `console-config.xml` file
-specify attributes for the user interface features that you choose to
-implement. The example file provides examples of most of the available
-kinds of integration points at this release. Your own add-on component
-can use some or all of them.
-
-For each `integration-point` element, specify the following attributes.
-
-`id`::
-  An identifier for the integration point.
-`parentId`::
-  The ID of the integration point's parent.
-`type`::
-  The type of the integration point.
-`priority`::
-  A numeric value that specifies the relative ordering of integration
-  points for add-on components that specify the same `parentId`. A lower
-  number specifies a higher priority (for example, 100 represents a
-  higher priority than 400). The integration points for add-on
-  components are always placed after those in the basic Administration
-  Console. You might need to experiment to place the integration point
-  where you want it. This attribute is optional.
-`content`::
-  The content for the integration point, typically a JavaServer Faces
-  page. In the example, you can find the JavaServer Faces pages in the
-  directory `project/src/main/resources/`.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-The order in which these attributes are specified does not matter, and
-in the example `console-config.xml` file the order varies. To improve
-readability, this chapter uses the same order throughout.
-
-|=======================================================================
-
-
-The following topics are addressed here:
-
-* link:#ghocf[Adding a Node to the Navigation Tree]
-* link:#ghotv[Adding Tabs to a Page]
-* link:#ghmqw[Adding a Task to the Common Tasks Page]
-* link:#ghozn[Adding a Task Group to the Common Tasks Page]
-* link:#ghmrg[Adding Content to a Page]
-* link:#ghmqe[Adding a Page to the Administration Console]
-
-[[ghocf]][[GSACG00188]][[adding-a-node-to-the-navigation-tree]]
-
-Adding a Node to the Navigation Tree
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can add a node to the navigation tree, either at the top level or
-under another node. To add a node, use an integration point of type
-`org.glassfish.admingui:navNode`. Use the `parentId` attribute to
-specify where the new node should be placed. Any tree node, including
-those added by other add-on components, can be specified. Examples
-include the following:
-
-`tree`::
-  At the top level
-`applicationServer`::
-  Under the GlassFish Server node
-`applications`::
-  Under the Applications node
-`resources`::
-  Under the Resources node
-`configuration`::
-  Under the Configuration node
-`webContainer`::
-  Under the Web Container node
-`httpService`::
-  Under the HTTP Service node
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-The `webContainer` and `httpService` nodes are available only if you
-installed the web container module for the Administration Console (the
-`console-web-gui.jar` OSGi bundle).
-
-|=======================================================================
-
-
-If you do not specify a `parentId`, the new content is added to the root
-of the integration point, in this case the top level node, `tree`.
-
-[[GSACG00020]][[ghpmb]]
-
-
-Example 3-2 Example Tree Node Integration Point
-
-For example, the following `integration-point` element uses a `parentId`
-of `tree` to place the new node at the top level.
-
-[source,oac_no_warn]
-----
-        <integration-point
-                id="samplenode"
-                parentid="tree"
-                type="org.glassfish.admingui:treeNode"
-                priority="200"
-                content="sampleNode.jsf"
-        />
-----
-
-This example specifies the following values in addition to the
-`parentId`:
-
-* The `id` value, `sampleNode`, specifies the integration point ID.
-* The `type` value, `org.glassfish.admingui:treeNode`, specifies the
-integration point type as a tree node.
-* The `priority` value, `200`, specifies the order of the node on the
-tree.
-* The `content` value, `sampleNode.jsf`, specifies the JavaServer Faces
-page that displays the node.
-
-The example `console-config.xml` file provides other examples of tree
-nodes under the Resources and Configuration nodes.
-
-[[ghoej]][[GSACG00158]][[creating-a-javaserver-faces-page-for-your-node]]
-
-Creating a Jakarta Server Faces Page for Your Node
-++++++++++++++++++++++++++++++++++++++++++++++
-
-A Jakarta Server Faces page for a tree node uses the tag `sun:treeNode`.
-This tag provides all the capabilities of the Project Woodstock tag
-`webuijsf:treeNode`.
-
-[[GSACG00021]][[ghpmn]]
-
-
-Example 3-3 Example Jakarta Server Faces Page for a Tree Node
-
-In the example, the `sampleNode.jsf` file has the following content:
-
-[source,oac_no_warn]
-----
-<sun:treeNode
-        id="treenode1"
-        text="SampleTop"
-        url="/sample/page/testPage.jsf?name=SampleTop"
-        imageURL="/resource/sample/images/sample.png"
-       >
-    <sun:treeNode
-            id="treenodebb"
-            text="SampleBB"
-            url="/sample/page/testPage.jsf?name=SampleBB"
-            imageURL="resource/sample/images/sample.png" />
-</sun:treeNode>
-----
-
-This file uses the `sun:treenode` tag to specify both a top-level tree
-node and another node nested beneath it. In your own JavaServer Faces
-pages, specify the attributes of this tag as follows:
-
-`id`::
-  A unique identifier for the tree node.
-`text`::
-  The node name that appears in the tree.
-`url`::
-  The location of the JavaServer Faces page that appears when you click
-  the node. In the example, most of the integration points use a very
-  simple Jakarta Server Faces page called `testPage.jsf`, which is in the
-  `src/main/resources/page/` directory. Specify the integration point
-  `id` value as the root of the URL; in this case, it is `sample` (see
-  link:#ghmpg[Specifying the ID of an Add-On Component]). The rest of
-  the URL is relative to the `src/main/resources/` directory, where
-  `sampleNode.jsf` resides. +
-  The `url` tag in this example passes a `name` parameter to the
-  Jakarta Server Faces page.
-`imageURL`::
-  The location of a graphic to display next to the node name. In the
-  example, the graphic is always `sample.png`, which is in the
-  `src/main/resources/images/` directory. The URL for this image is an
-  absolute path, `/resource/`sample`/images/sample.png`, where sample in
-  the path is the integration point `id` value (see
-  link:#ghmpg[Specifying the ID of an Add-On Component]).
-
-[[ghotv]][[GSACG00189]][[adding-tabs-to-a-page]]
-
-Adding Tabs to a Page
-^^^^^^^^^^^^^^^^^^^^^
-
-You can add a tab to an existing tab set, or you can create a tab set
-for your own page. One way to add a tab or tab set is to use an
-integration point of type `org.glassfish.admingui:serverInstTab`, which
-adds a tab to the tab set on the main GlassFish Server page of the
-Administration Console. You can also create sub-tabs. Once again, the
-`parentId` element specifies where to place the tab or tab set.
-
-[[GSACG00022]][[ghplc]]
-
-
-Example 3-4 Example Tab Integration Point
-
-In the example, the following `integration-point` element adds a new tab
-on the main GlassFish Server page of the Administration Console:
-
-[source,oac_no_warn]
-----
-        <integration-point
-            id="sampletab"
-            parentid="serverinsttabs"
-            type="org.glassfish.admingui:serverInstTab"
-            priority="500"
-            content="sampleTab.jsf"
-        />
-----
-
-This example specifies the following values:
-
-* The `id` value, `sampleTab`, specifies the integration point ID.
-* The `parentId` value, `serverInstTabs`, specifies the tab set
-associated with the server instance. The GlassFish Server page is the
-only one of the default Administration Console pages that has a tab set.
-* The `type` value, `org.glassfish.admingui:serverInstTab`, specifies
-the integration point type as a tab associated with the server instance.
-* The `priority` value, `500`, specifies the order of the tab within the
-tab set. This value is optional.
-* The `content` value, `sampleTab.jsf`, specifies the Jakarta Server Faces
-page that displays the tab.
-
-[[GSACG00023]][[ghplu]]
-
-
-Example 3-5 Example Tab Set Integration Points
-
-The following `integration-point` elements add a new tab with two
-sub-tabs, also on the main GlassFish Server page of the Administration
-Console:
-
-[source,oac_no_warn]
-----
-        <integration-point
-            id="sampletabwithsubtab"
-            parentid="serverinsttabs"
-            type="org.glassfish.admingui:serverInstTab"
-            priority="300"
-            content="sampleTabWithSubTab.jsf"
-        />
-
-        <integration-point
-            id="samplesubtab1"
-            parentid="sampletabwithsubtab"
-            type="org.glassfish.admingui:serverInstTab"
-            priority="300"
-            content="sampleSubTab1.jsf"
-        />
-        <integration-point
-            id="samplesubtab2"
-            parentid="sampletabwithsubtab"
-            type="org.glassfish.admingui:serverInstTab"
-            priority="400"
-            content="sampleSubTab2.jsf"
-        />
-----
-
-These examples specify the following values:
-
-* The `id` values, `sampleTabWithSubTab`, `sampleSubTab1`, and
-`sampleSubTab2`, specify the integration point IDs for the tab and its
-sub-tabs.
-* The `parentId` of the new tab, `serverInstTabs`, specifies the tab set
-associated with the server instance. The `parentId` of the two sub-tabs,
-`sampleTabWithSubTab`, is the `id` value of this new tab.
-* The `type` value, `org.glassfish.admingui:serverInstTab`, specifies
-the integration point type for all the tabs as a tab associated with the
-server instance.
-* The `priority` values specify the order of the tabs within the tab
-set. This value is optional. In this case, the priority value for
-`sampleTabWithSubTab` is `300`, which is higher than the value for
-`sampleTab`. That means that `sampleTabWithSubTab` appears to the left
-of `sampleTab` in the Administration Console. The priority values for
-`sampleSubTab1` and `sampleSubTab2` are `300` and `400` respectively, so
-`sampleSubTab1` appears to the left of `sampleSubTab2`.
-* The `content` values, `sampleTabWithSubTab.jsf`, `sampleSubTab1.jsf`,
-and `sampleSubTab2.jsf`, specify the Jakarta Server Faces pages that display
-the tabs.
-
-[[ghovg]][[GSACG00159]][[creating-javaserver-faces-pages-for-your-tabs]]
-
-Creating Jakarta Server Faces Pages for Your Tabs
-+++++++++++++++++++++++++++++++++++++++++++++
-
-A Jakarta Server Faces page for a tab uses the tag `sun:tab`. This tag
-provides all the capabilities of the Project Woodstock tag
-`webuijsf:tab`.
-
-[[GSACG00024]][[ghpnt]]
-
-
-Example 3-6 Example Jakarta Server Faces Page for a Tab
-
-In the example, the `sampleTab.jsf` file has the following content:
-
-[source,oac_no_warn]
-----
-<sun:tab id="sampletab" immediate="true" text="Sample First Tab">
-    <!command
-        setSessionAttribute(key="serverInstTabs" value="sampleTab");
-        gf.redirect(page="#{request.contextPath}/page/tabPage.jsf?name=Sample%20First%20Tab");
-    />
-</sun:tab>
-----
-
-
-[width="100%",cols="<100%",]
-|======================================================================
-a|
-Note:
-
-In the actual file there are no line breaks in the `gf.redirect` value.
-
-|======================================================================
-
-
-In your own Jakarta Server Faces pages, specify the attributes of this tag
-as follows:
-
-`id`::
-  A unique identifier for the tab, in this case `sampleTab`.
-`immediate`::
-  If set to true, event handling for this component should be handled
-  immediately (in the Apply Request Values phase) rather than waiting
-  until the Invoke Application phase.
-`text`::
-  The tab name that appears in the tab set.
-
-The JSF page displays tab content differently from the way the page for
-a node displays node content. It invokes two handlers for the `command`
-event: `setSessionAttribute` and `gf.redirect`. The `gf.redirect`
-handler has the same effect for a tab that the `url` attribute has for a
-node. It navigates to a simple Jakarta Server Faces page called
-`tabPage.jsf`, in the `src/main/resources/page/` directory, passing the
-text "Sample First Tab" to the page in a `name` parameter.
-
-The `sampleSubTab1.jsf` and `sampleSubTab2.jsf` files are almost
-identical to `sampleTab.jsf`. The most important difference is that each
-sets the session attribute `serverInstTabs` to the base name of the
-Jakarta Server Faces file that corresponds to that tab:
-
-[source,oac_no_warn]
-----
-setSessionAttribute(key="serverInstTabs" value="sampleTab");
-
-setSessionAttribute(key="serverInstTabs" value="sampleSubTab1");
-
-setSessionAttribute(key="serverInstTabs" value="sampleSubTab2");
-----
-
-[[ghmqw]][[GSACG00190]][[adding-a-task-to-the-common-tasks-page]]
-
-Adding a Task to the Common Tasks Page
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can add either a single task or a group of tasks to the Common Tasks
-page of the Administration Console. To add a task or task group, use an
-integration point of type `org.glassfish.admingui:commonTask`.
-
-See link:#ghozn[Adding a Task Group to the Common Tasks Page] for
-information on adding a task group.
-
-[[GSACG00025]][[ghpox]]
-
-
-Example 3-7 Example Task Integration Point
-
-In the example `console-config.xml` file, the following
-`integration-point` element adds a task to the Deployment task group:
-
-[source,oac_no_warn]
-----
-        <integration-point
-                id="samplecommontask"
-                parentid="deployment"
-                type="org.glassfish.admingui:commonTask"
-                priority="200"
-                content="sampleCommonTask.jsf"
-        />
-----
-
-This example specifies the following values:
-
-* The `id` value, `sampleCommonTask`, specifies the integration point
-ID.
-* The `parentId` value, `deployment`, specifies that the task is to be
-placed in the Deployment task group.
-* The `type` value, `org.glassfish.admingui:commonTask`, specifies the
-integration point type as a common task.
-* The `priority` value, `200`, specifies the order of the task within
-the task group.
-* The `content` value, `sampleCommonTask.jsf`, specifies the JavaServer
-Faces page that displays the task.
-
-[[ghoeu]][[GSACG00160]][[creating-a-javaserver-faces-page-for-your-task]]
-
-Creating a Jakarta Server Faces Page for Your Task
-++++++++++++++++++++++++++++++++++++++++++++++
-
-A Jakarta Server Faces page for a task uses the tag `sun:commonTask`. This
-tag provides all the capabilities of the Project Woodstock tag
-`webuijsf:commonTask`.
-
-[[GSACG00026]][[gjkgd]]
-
-
-Example 3-8 Example Jakarta Server Faces Page for a Task
-
-In the example, the `sampleCommonTask.jsf` file has the following
-content:
-
-[source,oac_no_warn]
-----
-<sun:commonTask
-        text="Sample Application Page"
-        toolTip="Sample Application Page"
-        onClick="return admingui.woodstock.commonTaskHandler('treeForm:tree:applications:ejb',
-        '#{request.contextPath}/sample/page/testPage.jsf?name=Sample%20Application%20Page');">
-</sun:commonTask>
-----
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-In the actual file, there is no line break in the `onClick` attribute
-value.
-
-|=======================================================================
-
-
-This file uses the `sun:commonTask` tag to specify the task. In your own
-Jakarta Server Faces pages, specify the attributes of this tag as follows:
-
-`text`::
-  The task name that appears on the Common Tasks page.
-`toolTip`::
-  The text that appears when a user places the mouse cursor over the
-  task name.
-`onClick`::
-  Scripting code that is to be executed when a user clicks the task
-  name.
-
-[[ghozn]][[GSACG00191]][[adding-a-task-group-to-the-common-tasks-page]]
-
-Adding a Task Group to the Common Tasks Page
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can add a new group of tasks to the Common Tasks page to display the
-most important tasks for your add-on component. To add a task group, use
-an integration point of type `org.glassfish.admingui:commonTask`.
-
-[[GSACG00027]][[ghplk]]
-
-
-Example 3-9 Example Task Group Integration Point
-
-In the example `console-config.xml` file, the following
-`integration-point` element adds a new task group to the Common Tasks
-page:
-
-[source,oac_no_warn]
-----
-       <integration-point
-            id="samplegroup"
-            parentid="commontaskssection"
-            type="org.glassfish.admingui:commonTask"
-            priority="500"
-            content="sampleTaskGroup.jsf"
-        />
-----
-
-This example specifies the following values:
-
-* The `id` value, `sampleGroup`, specifies the integration point ID.
-* The `parentId` value, `commonTasksSection`, specifies that the task
-group is to be placed on the Common Tasks page.
-* The `type` value, `org.glassfish.admingui:commonTask`, specifies the
-integration point type as a common task.
-* The `priority` value, `500`, specifies the order of the task group on
-the Common Tasks page. The low value places it at the end of the page.
-* The `content` value, `sampleTaskGroup.jsf`, specifies the JavaServer
-Faces page that displays the task.
-
-[[ghoya]][[GSACG00161]][[creating-a-javaserver-faces-page-for-your-task-group]]
-
-Creating a Jakarta Server Faces Page for Your Task Group
-++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-A Jakarta Server Faces page for a task group uses the tag
-`sun:commonTasksGroup`. This tag provides all the capabilities of the
-Project Woodstock tag `webuijsf:commonTasksGroup`.
-
-[[GSACG00028]][[ghpqe]]
-
-
-Example 3-10 Example Jakarta Server Faces Page for a Task Group
-
-In the example, the `sampleTaskGroup.jsf` file has the following
-content:
-
-[source,oac_no_warn]
-----
-<sun:commonTasksGroup title="My Own Sample Group">
-    <sun:commonTask
-            text="Go To Sample Resource"
-            toolTip="Go To Sample Resource"
-            onClick="return admingui.woodstock.commonTaskHandler('form:tree:resources:treeNode1',
-            '#{request.contextPath}/sample/page/testPage.jsf?name=Sample%20Resource%20Page');">
-    </sun:commonTask>
-    <sun:commonTask
-            text="Sample Configuration"
-            toolTip="Go To Sample Configuration"
-            onClick="return admingui.woodstock.commonTaskHandler('form:tree:configuration:sampleConfigNode',
-            '#{request.contextPath}/sample/page/testPage.jsf?name=Sample%20Configuration%20Page');">
-    </sun:commonTask>
-</sun:commonTasksGroup>
-----
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-In the actual file, there are no line breaks in the `onClick` attribute
-values.
-
-|=======================================================================
-
-
-This file uses the `sun:commonTasksGroup` tag to specify the task group,
-and two `sun:commonTask` tags to specify the tasks in the task group.
-The `sun:commonTasksGroup` tag has only one attribute, `title`, which
-specifies the name of the task group.
-
-[[ghmrg]][[GSACG00192]][[adding-content-to-a-page]]
-
-Adding Content to a Page
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can add content for your add-on component to an existing top-level
-page, such as the Configuration page or the Resources page. To add
-content to one of these pages, use an integration point of type
-`org.glassfish.admingui:configuration` or
-`org.glassfish.admingui:resources`.
-
-[[GSACG00029]][[ghpnu]]
-
-
-Example 3-11 Example Resources Page Implementation Point
-
-In the example `console-config.xml` file, the following
-`integration-point` element adds new content to the top-level Resources
-page:
-
-[source,oac_no_warn]
-----
-        <integration-point
-                id="sampleresourcelink"
-                parentid="propsheetsection"
-                type="org.glassfish.admingui:resources"
-                priority="100"
-                content="sampleResourceLink.jsf"
-        />
-----
-
-This example specifies the following values:
-
-* The `id` value, `sampleResourceLink`, specifies the integration point
-ID.
-* The `parentId` value, `propSheetSection`, specifies that the content
-is to be a section of a property sheet on the page.
-* The `type` value, `org.glassfish.admingui:resources`, specifies the
-integration point type as the Resources page. +
-To add content to the Configuration page, specify the `type` value as
-`org.glassfish.admingui:configuration`.
-* The `priority` value, `100`, specifies the order of the content on the
-Resources page. The high value places it at the top of the page.
-* The `content` value, `sampleResourceLink.jsf`, specifies the
-JavaServer Faces page that displays the new content on the Resources
-page.
-
-Another `integration-point` element in the `console-config.xml` file
-places similar content on the Configuration page.
-
-[[ghpao]][[GSACG00162]][[creating-a-javaserver-faces-page-for-your-page-content]]
-
-Creating a Jakarta Server Faces Page for Your Page Content
-++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-A Jakarta Server Faces page for page content often uses the tag
-`sun:property` to specify a property on a property sheet. This tag
-provides all the capabilities of the Project Woodstock tag
-`webuijsf:property`.
-
-[[GSACG00030]][[ghpoz]]
-
-
-Example 3-12 Example Jakarta Server Faces Page for a Resource Page Item
-
-In the example, the `sampleResourceLink.jsf` file has the following
-content:
-
-[source,oac_no_warn]
-----
-<sun:property>
-    <sun:hyperlink
-        toolTip="Sample Resource"
-        url="/sample/page/testPage.jsf?name=Sample%20Resource%20Page">
-        <sun:image url="/resource/sample/images/sample.png" />
-        <sun:staticText text="Sample Resource" />
-    </sun:hyperlink>
-</sun:property>
-
-<sun:property>
-    <sun:hyperlink
-        toolTip="Another"
-        url="/sample/page/testPage.jsf?name=Another">
-        <sun:image url="/resource/sample/images/sample.png" />
-        <sun:staticText text="Another" />
-    </sun:hyperlink>
-</sun:property>
-----
-
-The file specifies two simple properties on the property sheet, one
-above the other. Each consists of a `sun:hyperlink` element (a link to a
-URL). Within each `sun:hyperlink` element is nested a `sun:image`
-element, specifying an image, and a `sun:staticText` element, specifying
-the text to be placed next to the image.
-
-Each `sun:hyperlink` element uses a `toolTip` attribute and a `url`
-attribute. Each `url` attribute references the `testPage.jsf` file that
-is used elsewhere in the example, specifying different content for the
-`name` parameter.
-
-You can use many other kinds of user interface elements within a
-`sun:property` element.
-
-[[ghmqe]][[GSACG00193]][[adding-a-page-to-the-administration-console]]
-
-Adding a Page to the Administration Console
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Your add-on component may require new configuration tasks. In addition
-to implementing commands that accomplish these tasks (see
-link:extending-asadmin.html#ghmrd[Chapter 4, "Extending the `asadmin`
-Utility"]), you can provide property sheets that enable users to
-configure your component or to perform tasks such as creating and
-editing resources for it.
-
-[[GSACG00031]][[ghple]]
-
-
-Example 3-13 Example Jakarta Server Faces Page for a Property Sheet
-
-Most of the user interface features used in the example reference the
-file `testPage.jsf` or (for tabs) the file `tabPage.jsf`. Both files are
-in the `src/main/resources/page/` directory. The `testPage.jsf` file
-looks like this:
-
-[source,oac_no_warn]
-----
-<!composition template="/templates/default.layout" guiTitle="TEST Sample Page Title">
-<!define name="content">
-<sun:form id="propertyform">
-
-<sun:propertySheet id="propertysheet">
-    <sun:propertySheetSection id="propertysection">
-       <sun:property id="prop1" labelAlign="left" noWrap="true"
-                     overlapLabel="false" label="Test Page Name:">
-            <sun:staticText text="$pageSession{pageName}">
-                <!beforeCreate
-                    getRequestValue(key="name" value=>$page{pageName});
-                />
-            </sun:staticText>
-        </sun:property>
-    </sun:propertySheetSection>
-</sun:propertySheet>
-<sun:hidden id="helpkey" value="" />
-
-</sun:form>
-</define>
-</composition>
-----
-
-The page uses the `composition` directive to specify that the page uses
-the `default.layout` template and to specify a page title. The page uses
-additional directives, events, and tags to specify its content.
-
-[[ghmqi]][[GSACG00102]][[adding-internationalization-support]]
-
-Adding Internationalization Support
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-To add internationalization support for your add-on component to the
-Administration Console, you can place an event and handler like the
-following at the top of your page:
-
-[source,oac_no_warn]
-----
-<!initPage
-    setResourceBundle(key="yourI18NKey" bundle="bundle.package.BundleName")
-/>
-----
-
-Replace the values `yourI18NKey` and `bundle.package.BundleName` with
-appropriate values for your component.
-
-[[ghmqg]][[GSACG00103]][[changing-the-theme-or-brand-of-the-administration-console]]
-
-Changing the Theme or Brand of the Administration Console
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-To change the theme or brand of the Administration Console for your
-add-on component, use the integration point type
-`org.glassfish.admingui:customtheme`. This integration point affects the
-Cascading Style Sheet (CSS) files and images that are used in the
-Administration Console.
-
-[[GSACG00032]][[ghpls]]
-
-
-Example 3-14 Example Custom Theme Integration Point
-
-For example, the following integration point specifies a custom theme:
-
-[source,oac_no_warn]
-----
-        <integration-point
-                id="myownbrand"
-                type="org.glassfish.admingui:customtheme"
-                priority="2"
-                content="myOwnBrand.properties"
-        />
-----
-
-The `priority` attribute works differently when you specify it in a
-branding integration point from the way it works in other integration
-points. You can place multiple branding add-on components in the
-`modules` directory, but only one theme can be applied to the
-Administration Console. The `priority` attribute determines which theme
-is used. Specify a value from 1 to 100; the lower the number, the higher
-the priority. The integration point with the highest priority will be
-used.
-
-Additional integration point types also affect the theme or brand of the
-Administration Console:
-
-`org.glassfish.admingui:masthead`::
-  Specifies the name and location of the include masthead file, which
-  can be customized with a branding image. This include file will be
-  integrated on the masthead of the Administration Console.
-`org.glassfish.admingui:loginimage`::
-  Specifies the name and location of the include file containing the
-  branding login image code that will be integrated with the login page
-  of the Administration Console.
-`org.glassfish.admingui:loginform`::
-  Specifies the name and location of the include file containing the
-  customized login form code. This code also contains the login
-  background image used for the login page for the Administration
-  Console.
-`org.glassfish.admingui:versioninfo`::
-  Specifies the name and location of the include file containing the
-  branding image that will be integrated with the content of the version
-  popup window.
-
-[[GSACG00033]][[ghpla]]
-
-
-Example 3-15 Example of Branding Integration Points
-
-For example, you might specify the following integration points. The
-content for each integration point is defined in an include file.
-
-[source,oac_no_warn]
-----
-       <integration-point
-               id="myownbrandmast"
-               type="org.glassfish.admingui:masthead"
-               priority="80"
-               content="branding/masthead.inc"
-       />
-       <integration-point
-               id="myownbrandlogimg"
-               type="org.glassfish.admingui:loginimage"
-               priority="80"
-               content="branding/loginimage.inc"
-       />
-       <integration-point
-               id="myownbrandlogfm"
-               type="org.glassfish.admingui:loginform"
-               priority="80"
-               content="branding/loginform.inc"
-       />
-       <integration-point
-               id="myownbrandversinf"
-               type="org.glassfish.admingui:versioninfo"
-               priority="80"
-               content="branding/versioninfo.inc"
-       />
-----
-
-To provide your own CSS and images to modify the global look and feel of
-the entire application (not just the Administration Console), use the
-theming feature of https://github.com/eclipse-ee4j/glassfish-woodstock[Project
-Woodstock] (`https://github.com/eclipse-ee4j/glassfish-woodstock`). Create a theme JAR
-file with all the CSS properties and image files that are required by
-your Woodstock component. Use a script provided by the Woodstock project
-to clone an existing theme, then modify the files and properties as
-necessary. Once you have created the theme JAR file, place it in the
-`WEB-INF/lib` directory of the Administration Console so that the
-Woodstock theme component will load the theme. In addition, edit the
-properties file specified by your integration point
-(`MyOwnBrand.properties`, for example) to specify the name and version
-of your theme.
-
-[[ghpkz]][[GSACG00104]][[creating-an-integration-point-type]]
-
-Creating an Integration Point Type
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-If your add-on component provides new content that you would like other
-people to extend, you may define your own integration point types. For
-example, if you add a new page that provides tabs of monitoring
-information, you might want to allow others to add their own tabs to
-complement your default tabs. This feature enables your page to behave
-like the existing Administration Console pages that you or others can
-extend.
-
-[[sthref4]][[to-create-an-integration-point-type]]
-
-To Create an Integration Point Type
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-1.  Decide on the name of your integration point type. +
-The integration point type must be a unique identifier. You might use
-the package name of your integration point, with a meaningful name
-appended to the end, as in the following example: +
-[source,oac_no_warn]
-----
-org.company.project:myMonitoringTabs
-----
-2.  After you have an integration point ID, use handlers to insert the
-integration point implementation(s). +
-Include code like the following below the place in your Jakarta Server Faces
-page where you would like to enable others to add their integration
-point implementations: +
-[source,oac_no_warn]
-----
-<event>
-    <!afterCreate
-        getUIComponent(clientid="clientid:of:root"
-                       component=>$attribute{rootComp});
-        includeIntegrations(type="org.company.project:myMonitoringTabs"
-                            root="#{rootComp}");
-    />
-</event>
-----
-Change `clientId:of:root` to match the `clientId` of the outermost
-component in which you want others to be able to add their content (in
-this example, the tab set is the most likely choice). Also include your
-integration point ID in place of `org.company.project:myMonitoringTabs`.
-If you omit the `root` argument to `includeIntegrations`, all components
-on the entire page can be used for the `parentId` of the integration
-points.
-
-
-----
diff --git a/docs/add-on-component-development-guide/src/main/jbake/content/integration-point-reference.adoc b/docs/add-on-component-development-guide/src/main/jbake/content/integration-point-reference.adoc
deleted file mode 100644
index 13d3b4a..0000000
--- a/docs/add-on-component-development-guide/src/main/jbake/content/integration-point-reference.adoc
+++ /dev/null
@@ -1,421 +0,0 @@
-type=page
-status=published
-title=Integration Point Reference
-prev=packaging-integrating-delivering.html
-~~~~~~
-Integration Point Reference
-===========================
-
-[[GSACG00010]][[ghmrp]]
-
-
-[[a-integration-point-reference]]
-A Integration Point Reference
------------------------------
-
-This appendix provides reference information about integration points,
-which are described in
-link:extending-the-admin-console.html#ghmrb[Extending the Administration
-Console]. 
-Define an integration point for each user interface feature in the
-`console-config.xml` file for your add-on component.
-
-The following topics are addressed here:
-
-* link:#ghprc[Integration Point Attributes]
-* link:#ghmwa[`org.glassfish.admingui:navNode` Integration Point]
-* link:#gjkff[`org.glassfish.admingui:rightPanel` Integration Point]
-* link:#gjkfq[`org.glassfish.admingui:rightPanelTitle` Integration
-Point]
-* link:#ghpkh[`org.glassfish.admingui:serverInstTab` Integration Point]
-* link:#ghpit[`org.glassfish.admingui:commonTask` Integration Point]
-* link:#ghphz[`org.glassfish.admingui:configuration` Integration Point]
-* link:#ghpfm[`org.glassfish.admingui:resources` Integration Point]
-* link:#ghpiz[`org.glassfish.admingui:customtheme` Integration Point]
-* link:#ghppm[`org.glassfish.admingui:masthead` Integration Point]
-* link:#ghppk[`org.glassfish.admingui:loginimage` Integration Point]
-* link:#ghprk[`org.glassfish.admingui:loginform` Integration Point]
-* link:#ghpse[`org.glassfish.admingui:versioninfo` Integration Point]
-
-[[ghprc]][[GSACG00145]][[integration-point-attributes]]
-
-Integration Point Attributes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-For each `integration-point` element, specify the following attributes.
-Each attribute takes a string value.
-
-`id`::
-  An identifier for the integration point. The remaining sections of
-  this appendix do not provide details about specifying this attribute.
-`parentId`::
-  The ID of the integration point's parent.
-`type`::
-  The type of the integration point.
-`priority`::
-  A numeric value that specifies the relative ordering of integration
-  points with the same `parentId`. A lower number specifies a higher
-  priority (for example, 100 represents a higher priority than 400). You
-  may need to experiment in order to place the integration point where
-  you want it. This attribute is optional.
-`content`::
-  A relative path to the Jakarta Server Faces page that contains the content
-  to be integrated. Typically, the file contains a Jakarta Server Faces code
-  fragment that is incorporated into a page. The code fragment often
-  specifies a link to another Jakarta Server Faces page that appears when a
-  user clicks the link.
-
-[[ghmwa]][[GSACG00146]][[org.glassfish.adminguinavnode-integration-point]]
-
-`org.glassfish.admingui:navNode` Integration Point
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Use an `org.glassfish.admingui:navNode` integration point to insert a
-node in the Administration Console navigation tree. Specify the
-attributes and their content as follows.
-
-`type`::
-  `org.glassfish.admingui:navNode`, the left-hand navigation tree
-`parentId`::
-  The `id` value of the `navNode` that is the parent for this node. The
-  `parentId` can be any of the following: +
-  `tree`;;
-    The root node of the entire navigation tree. Use this value to place
-    your node at the top level of the tree. You can then use the `id` of
-    this node to create additional nodes beneath it.
-  `registration`;;
-    The Registration node
-  `applicationServer`;;
-    The GlassFish Server node
-  `applications`;;
-    The Applications node
-  `resources`;;
-    The Resources node
-  `configuration`;;
-    The Configuration node
-  `webContainer`;;
-    The Web Container node under the Configuration node
-  `httpService`;;
-    The HTTP Service node under the Configuration node +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-The `webContainer` and `httpService` nodes are available only if you
-installed the web container module for the Administration Console (the
-`console-web-gui.jar` OSGi bundle).
-
-|=======================================================================
-
-`priority`::
-  A numeric value that specifies the relative ordering of the node on
-  the tree, whether at the top level or under another node.
-`content`::
-  A relative path to the Jakarta Server Faces page that contains the content
-  to be integrated, or a URL to an external resource that returns the
-  appropriate data structure for inclusion.
-
-For an example, see link:extending-the-admin-console.html#ghpmb[Example
-3-2].
-
-[[gjkff]][[GSACG00147]][[org.glassfish.adminguirightpanel-integration-point]]
-
-`org.glassfish.admingui:rightPanel` Integration Point
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Use an `org.glassfish.admingui:rightPanel` integration point to specify
-content for the right frame of the Administration Console. Specify the
-attributes and their content as follows.
-
-`type`::
-  `org.glassfish.admingui:rightPanel`
-`parentId`::
-  None.
-`priority`::
-  A numeric value that specifies the relative ordering. If multiple
-  plug-ins specify content for the right frame, the one with greater
-  priority will take precedence.
-`content`::
-  A path relative to the root of the plug-in JAR file to a file
-  containing the content for the right panel. Alternatively, it may
-  contain a full URL which will deliver the content for the right panel.
-
-[[gjkfq]][[GSACG00148]][[org.glassfish.adminguirightpaneltitle-integration-point]]
-
-`org.glassfish.admingui:rightPanelTitle` Integration Point
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Use an `org.glassfish.admingui:rightPanel` integration point to specify
-the title for the right frame of the Administration Console. Specify the
-attributes and their content as follows.
-
-`type`::
-  `org.glassfish.admingui:rightPanelTitle`
-`parentId`::
-  None.
-`priority`::
-  A numeric value that specifies the relative ordering. If multiple
-  plug-ins specify content for the right frame, the one with greater
-  priority will take precedence.
-`content`::
-  Specifies the title to display at the top of the right panel.
-
-[[ghpkh]][[GSACG00149]][[org.glassfish.adminguiserverinsttab-integration-point]]
-
-`org.glassfish.admingui:serverInstTab` Integration Point
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Use an `org.glassfish.admingui:serverInstTab` integration point to place
-an additional tab on the GlassFish Server page of the Administration
-Console. Specify the attributes and their content as follows.
-
-`type`::
-  `org.glassfish.admingui:serverInstTab`
-`parentId`::
-  The `id` value of the tab set that is the parent for this tab. For a
-  top-level tab on this page, this value is `serverInstTabs`, the tab
-  set that contains the general information property pages for GlassFish
-  Server. +
-  For a sub-tab, the value is the `id` value for the parent tab.
-`priority`::
-  A numeric value that specifies the relative ordering of the tab on the
-  page, whether at the top level or under another tab.
-`content`::
-  A relative path to the Jakarta Server Faces page that contains the content
-  to be integrated. +
-  When you use this integration point, your Jakarta Server Faces page must
-  call the `setSessionAttribute` handler for the `command` event to set
-  the session variable of the `serverInstTabs` tab set to the `id` value
-  of your tab. For example, the file may have the following content: +
-[source,oac_no_warn]
-----
-<sun:tab id="sampletab" immediate="true" text="Sample First Tab">
-    <!command
-        setSessionAttribute(key="serverInstTabs" value="sampleTab");
-        gf.redirect(page="#{request.contextPath}/page/tabPage.jsf?name=Sample%20First%20Tab");
-    />
-</sun:tab>
-----
-::
-  The `id` of the `sun:tab` custom tag must be the same as the `value`
-  argument of the `setSessionAttribute` handler.
-
-For examples, see link:extending-the-admin-console.html#ghplc[Example
-3-4] and link:extending-the-admin-console.html#ghplu[Example 3-5].
-
-[[ghpit]][[GSACG00150]][[org.glassfish.adminguicommontask-integration-point]]
-
-`org.glassfish.admingui:commonTask` Integration Point
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Use an `org.glassfish.admingui:commonTask` integration point to place a
-new task or task group on the Common Tasks page of the Administration
-Console. Specify the attributes and their content as follows.
-
-`type`::
-  `org.glassfish.admingui:commonTask`
-`parentId`::
-  If you are adding a task group, the `id` value of the Common Tasks
-  page, which is `commonTasksSection`. +
-  If you are adding a single task, the `id` value of the task group that
-  is the parent for this tab, such as `deployment` (for the Deployment
-  group).
-`priority`::
-  A numeric value that specifies the relative ordering of the tab on the
-  page, whether at the top level or under another tab.
-`content`::
-  A relative path to the Jakarta Server Faces page that contains the content
-  to be integrated.
-
-For examples, see link:extending-the-admin-console.html#ghpox[Example
-3-7] and link:extending-the-admin-console.html#ghplk[Example 3-9].
-
-[[ghphz]][[GSACG00151]][[org.glassfish.adminguiconfiguration-integration-point]]
-
-`org.glassfish.admingui:configuration` Integration Point
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Use an `org.glassfish.admingui:configuration` integration point to add a
-component to the Configuration page of the Administration Console.
-Typically, you add a link to the property sheet section of this page.
-Specify the attributes and their content as follows.
-
-`type`::
-  `org.glassfish.admingui:configuration`
-`parentId`::
-  The `id` value of the property sheet for the Configuration page. This
-  value is `propSheetSection`, the section that contains the property
-  definitions for the Configuration page.
-`priority`::
-  A numeric value that specifies the relative ordering of the item on
-  the Configuration page.
-`content`::
-  A relative path to the Jakarta Server Faces page that contains the content
-  to be integrated.
-
-[[ghpfm]][[GSACG00152]][[org.glassfish.adminguiresources-integration-point]]
-
-`org.glassfish.admingui:resources` Integration Point
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Use an `org.glassfish.admingui:resources` integration point to add a
-component to the Resources page of the Administration Console.
-Typically, you add a link to the property sheet section of this page.
-Specify the attributes and their content as follows.
-
-`type`::
-  `org.glassfish.admingui:resources`
-`parentId`::
-  The `id` value of the property sheet for the Resources page. This
-  value is `propSheetSection`, the section that contains the property
-  definitions for the Resources page.
-`priority`::
-  A numeric value that specifies the relative ordering of the item on
-  the Resources page.
-`content`::
-  A relative path to the Jakarta Server Faces page that contains the content
-  to be integrated.
-
-For an example, see link:extending-the-admin-console.html#ghpnu[Example
-3-11].
-
-[[ghpiz]][[GSACG00153]][[org.glassfish.adminguicustomtheme-integration-point]]
-
-`org.glassfish.admingui:customtheme` Integration Point
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Use an `org.glassfish.admingui:customtheme` integration point to add
-your own branding to the Administration Console. Specify the attributes
-and their content as follows. Do not specify a `parentId` attribute for
-this integration point.
-
-`type`::
-  `org.glassfish.admingui:customtheme`
-`priority`::
-  A numeric value that specifies the relative ordering of the item in
-  comparison to other themes. This value must be between 1 and 100. The
-  theme with the smallest number is used first.
-`content`::
-  The name of the properties file that contains the key/value pairs that
-  will be used to access your theme JAR file. You must specify the
-  following keys: +
-  `com.sun.webui.theme.DEFAULT_THEME`;;
-    Specifies the theme name for the theme that this application may
-    depend on.
-  `com.sun.webui.theme.DEFAULT_THEME_VERSION`;;
-    Specifies the theme version this application may depend on. +
-  For example, the properties file for the default Administration
-  Console brand contains the following: +
-[source,oac_no_warn]
-----
-com.sun.webui.theme.DEFAULT_THEME=suntheme
-com.sun.webui.theme.DEFAULT_THEME_VERSION=4.3
-----
-
-For an example, see link:extending-the-admin-console.html#ghpls[Example
-3-14].
-
-[[ghppm]][[GSACG00154]][[org.glassfish.adminguimasthead-integration-point]]
-
-`org.glassfish.admingui:masthead` Integration Point
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Use an `org.glassfish.admingui:masthead` integration point to specify
-the name and location of the include masthead file, which can be
-customized with a branding image. This include file will be integrated
-on the masthead of the Administration Console. Specify the attributes
-and their content as follows. Do not specify a `parentId` attribute for
-this integration point.
-
-`type`::
-  `org.glassfish.admingui:masthead`
-`priority`::
-  A numeric value that specifies the relative ordering of the item in
-  comparison to other items of this type. This value must be between 1
-  and 100. The theme with the smallest number is used first.
-`content`::
-  A file that contains the content, typically a file that is included in
-  a Jakarta Server Faces page.
-
-For an example, see link:extending-the-admin-console.html#ghpla[Example
-3-15].
-
-[[ghppk]][[GSACG00155]][[org.glassfish.adminguiloginimage-integration-point]]
-
-`org.glassfish.admingui:loginimage` Integration Point
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Use an `org.glassfish.admingui:loginimage` integration point to specify
-the name and location of the include file containing the branding login
-image code that will be integrated with the login page of the
-Administration Console. Specify the attributes and their content as
-follows. Do not specify a `parentId` attribute for this integration
-point.
-
-`type`::
-  `org.glassfish.admingui:loginimage`
-`parentId`::
-  None; a login image does not have a parent ID.
-`priority`::
-  A numeric value that specifies the relative ordering of the item in
-  comparison to other items of this type. This value must be between 1
-  and 100. The theme with the smallest number is used first.
-`content`::
-  A file that contains the content, typically a file that is included in
-  a Jakarta Server Faces page.
-
-For an example, see link:extending-the-admin-console.html#ghpla[Example
-3-15].
-
-[[ghprk]][[GSACG00156]][[org.glassfish.adminguiloginform-integration-point]]
-
-`org.glassfish.admingui:loginform` Integration Point
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Use an `org.glassfish.admingui:loginform` integration point to specify
-the name and location of the include file containing the customized
-login form code. This code also contains the login background image used
-for the login page for the Administration Console. Specify the
-attributes and their content as follows. Do not specify a `parentId`
-attribute for this integration point.
-
-`type`::
-  `org.glassfish.admingui:loginform`
-`priority`::
-  A numeric value that specifies the relative ordering of the item in
-  comparison to other items of this type. This value must be between 1
-  and 100. The theme with the smallest number is used first.
-`content`::
-  A file that contains the content, typically a file that is included in
-  a Jakarta Server Faces page.
-
-For an example, see link:extending-the-admin-console.html#ghpla[Example
-3-15].
-
-[[ghpse]][[GSACG00157]][[org.glassfish.adminguiversioninfo-integration-point]]
-
-`org.glassfish.admingui:versioninfo` Integration Point
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Use an `org.glassfish.admingui:versioninfo` integration point to specify
-the name and location of the include file containing the branding image
-that will be integrated with the content of the version popup window.
-Specify the attributes and their content as follows. Do not specify a
-`parentId` attribute for this integration point.
-
-`type`::
-  `org.glassfish.admingui:versioninfo`
-`priority`::
-  A numeric value that specifies the relative ordering of the item in
-  comparison to other items of this type. This value must be between 1
-  and 100. The theme with the smallest number is used first.
-`content`::
-  A file that contains the content, typically a file that is included in
-  a Jakarta Server Faces page.
-
-For an example, see link:extending-the-admin-console.html#ghpla[Example
-3-15].
-
-----
diff --git a/docs/add-on-component-development-guide/src/main/jbake/content/introduction.adoc b/docs/add-on-component-development-guide/src/main/jbake/content/introduction.adoc
deleted file mode 100644
index 6e63aa3..0000000
--- a/docs/add-on-component-development-guide/src/main/jbake/content/introduction.adoc
+++ /dev/null
@@ -1,298 +0,0 @@
-type=page
-status=published
-title=Introduction to the Development Environment for Eclipse GlassFish Add-On Components
-next=writing-hk2-components.html
-prev=preface.html
-~~~~~~
-Introduction to the Development Environment for Eclipse GlassFish Add-On Components
-==================================================================================
-
-[[GSACG00001]][[ghmlv]]
-
-
-[[introduction-to-the-development-environment-for-eclipse-glassfish-add-on-components]]
-1 Introduction to the Development Environment for Eclipse GlassFish Add-On Components
-------------------------------------------------------------------------------------
-
-Eclipse GlassFish enables an external vendor such as
-an independent software vendor (ISV), original equipment manufacturer
-(OEM), or system integrator to incorporate GlassFish Server into a new
-product with the vendor's own brand name. External vendors can extend
-the functionality of GlassFish Server by developing add-on components
-for GlassFish Server. GlassFish Server provides interfaces to enable
-add-on components to be configured, managed, and monitored through
-existing GlassFish Server tools such as the Administration Console and
-the `asadmin` utility.
-
-The following topics are addressed here:
-
-* link:#ghmje[GlassFish Server Modular Architecture and Add-On
-Components]
-* link:#ghmrf[OSGi Alliance Module Management Subsystem]
-* link:#ghmnq[Hundred-Kilobyte Kernel]
-* link:#ghmns[Overview of the Development Process for an Add-On
-Component]
-
-[[ghmje]][[GSACG00087]][[glassfish-server-modular-architecture-and-add-on-components]]
-
-GlassFish Server Modular Architecture and Add-On Components
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-GlassFish Server has a modular architecture in which the features of
-GlassFish Server are provided by a consistent set of components that
-interact with each other. Each component provides a small set of
-functionally related features.
-
-The modular architecture of GlassFish Server enables users to download
-and install only the components that are required for the applications
-that are being deployed. As a result, start-up times, memory
-consumption, and disk space requirements are all minimized.
-
-The modular architecture of GlassFish Server enables you to extend the
-basic functionality of GlassFish Server by developing add-on components.
-An add-on component is an encapsulated definition of reusable code that
-has the following characteristics:
-
-* The component provides a set of Java classes.
-* The component offers services and public interfaces.
-* The component implements the public interfaces with a set of private
-classes.
-* The component depends on other components.
-
-Add-on components that you develop interact with GlassFish Server in the
-same way as components that are supplied in GlassFish Server
-distributions.
-
-You can create and offer new or updated add-on components at any time.
-GlassFish Server administrators can install add-on components and update
-or remove installed components after GlassFish Server is installed. For
-more information, see "link:../administration-guide/toc.html#GSADG00014[Extending and Updating GlassFish
-Server]" in Eclipse GlassFish Administration Guide.
-
-[[ghmrf]][[GSACG00088]][[osgi-alliance-module-management-subsystem]]
-
-OSGi Alliance Module Management Subsystem
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-To enable components to be added when required, GlassFish Server
-provides a lightweight and extensible kernel that uses the module
-management subsystem from the http://www.osgi.org/[OSGi Alliance]
-(`http://www.osgi.org/`). Any GlassFish Server component that plugs in
-to this kernel must be implemented as an OSGi bundle. To enable an
-add-on component to plug in to the GlassFish Server kernel in the same
-way as other components, package the component as an OSGi bundle. For
-more information, see
-link:packaging-integrating-delivering.html#ghpun[Packaging an Add-On
-Component].
-
-The default OSGi module management subsystem in GlassFish Server is the
-Apache Felix http://felix.apache.org[OSGi framework]
-(`http://felix.apache.org`). However, the GlassFish Server kernel uses
-only the http://www.osgi.org/Release4/HomePage[OSGi Service Platform
-Release 4] (`http://www.osgi.org/Release4/HomePage`) API. Therefore,
-GlassFish Server supports other OSGi module management subsystems that
-are compatible with the OSGi Service Platform Release 4 API.
-
-[[ghmnq]][[GSACG00089]][[hundred-kilobyte-kernel]]
-
-Hundred-Kilobyte Kernel
-~~~~~~~~~~~~~~~~~~~~~~~
-
-The https://github.com/eclipse-ee4j/glassfish-hk2[Hundred-Kilobyte Kernel (HK2)]
-(`https://github.com/eclipse-ee4j/glassfish-hk2`) is the lightweight and extensible kernel
-of GlassFish Server. HK2 consists of the following technologies:
-
-* Module subsystem. The HK2 module subsystem provides isolation between
-components of the GlassFish Server. The HK2 module subsystem is
-compatible with existing technologies such as the OSGi framework.
-* Component model. The HK2 component model eases the development of
-components that are also services. GlassFish Server discovers these
-components automatically and dynamically. HK2 components use injection
-of dependencies to express dependencies on other components. GlassFish
-Server provides two-way mappings between the services of an HK2
-component and OSGi services.
-
-For more information, see link:writing-hk2-components.html#ghmna[Writing
-HK2 Components].
-
-[[ghmns]][[GSACG00090]][[overview-of-the-development-process-for-an-add-on-component]]
-
-Overview of the Development Process for an Add-On Component
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-To ensure that an add-on component behaves identically to components
-that are supplied in GlassFish Server distributions, the component must
-meet the following requirements:
-
-* If the component generates management data, configuration data, or
-monitoring data, it must provide that data to other GlassFish Server
-components in the same way as other GlassFish Server components.
-* If the component generates management data, configuration data, or
-monitoring data, it must provide that data to users through GlassFish
-Server administrative interfaces such as Administration Console and the
-`asadmin` utility.
-* The component must be packaged and delivered as an OSGi bundle.
-
-To develop add-on components that meet these requirements, follow the
-development process that is described in the following sections:
-
-* link:#ghpqc[Writing HK2 Components]
-* link:#ghokn[Extending the Administration Console]
-* link:#ghohx[Extending the `asadmin` Utility]
-* link:#ghojs[Adding Monitoring Capabilities]
-* link:#gkahs[Adding Configuration Data for a Component]
-* link:#ghojq[Adding Container Capabilities]
-* link:#gktld[Creating a Session Persistence Module]
-* link:#ghoiu[Packaging and Delivering an Add-On Component]
-
-[[ghpqc]][[GSACG00173]][[writing-hk2-components]]
-
-Writing HK2 Components
-^^^^^^^^^^^^^^^^^^^^^^
-
-The Hundred-Kilobyte Kernel (HK2) is the lightweight and extensible
-kernel of GlassFish Server. To interact with GlassFish Server, add-on
-components plug in to this kernel. In the HK2 component model, the
-functions of an add-on component are declared through a contract-service
-implementation paradigm. An HK2 contract identifies and describes the
-building blocks or the extension points of an application. An HK2
-service implements an HK2 contract.
-
-For more information, see link:writing-hk2-components.html#ghmna[Writing
-HK2 Components].
-
-[[ghokn]][[GSACG00174]][[extending-the-administration-console]]
-
-Extending the Administration Console
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The Administration Console is a browser-based tool for administering
-GlassFish Server. It features an easy-to-navigate interface and online
-help. Extending the Administration Console enables you to provide a
-graphical user interface for administering your add-on component. You
-can use any of the user interface features of the Administration
-Console, such as tree nodes, links on the Common Tasks page, tabs and
-sub-tabs, property sheets, and JavaServer Faces pages. Your add-on
-component implements a marker interface and provides a configuration
-file that describes how your customizations integrate with the
-Administration Console.
-
-For more information, see
-link:extending-the-admin-console.html#ghmrb[Extending the Administration
-Console].
-
-[[ghohx]][[GSACG00175]][[extending-the-asadmin-utility]]
-
-Extending the `asadmin` Utility
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The `asadmin` utility is a command-line tool for configuring and
-administering GlassFish Server. Extending the `asadmin` utility enables
-you to provide administrative interfaces for an add-on component that
-are consistent with the interfaces of other GlassFish Server components.
-A user can run `asadmin` subcommands either from a command prompt or
-from a script. For more information about the `asadmin` utility, see the
-link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] man page.
-
-For more information, see link:extending-asadmin.html#ghmrd[Extending the
-`asadmin` Utility].
-
-[[ghojs]][[GSACG00176]][[adding-monitoring-capabilities]]
-
-Adding Monitoring Capabilities
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Monitoring is the process of reviewing the statistics of a system to
-improve performance or solve problems. By monitoring the state of
-components and services that are deployed in the GlassFish Server,
-system administrators can identify performance bottlenecks, predict
-failures, perform root cause analysis, and ensure that everything is
-functioning as expected. Monitoring data can also be useful in
-performance tuning and capacity planning.
-
-An add-on component typically generates statistics that the GlassFish
-Server can gather at run time. Adding monitoring capabilities enables an
-add-on component to provide statistics to GlassFish Server in the same
-way as components that are supplied in GlassFish Server distributions.
-As a result, system administrators can use the same administrative
-interfaces to monitor statistics from any installed GlassFish Server
-component, regardless of the origin of the component.
-
-For more information, see
-link:adding-monitoring-capabilities.html#ghmos[Adding Monitoring
-Capabilities].
-
-[[gkahs]][[GSACG00177]][[adding-configuration-data-for-a-component]]
-
-Adding Configuration Data for a Component
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The configuration data of a component determines the characteristics and
-runtime behavior of a component. GlassFish Server provides interfaces to
-enable an add-on component to store its configuration data in the same
-way as other GlassFish Server components. These interfaces are similar
-to interfaces that are defined in
-https://jakarta.ee/specifications/xml-binding/3.0/[Jakarta XML Binding 3.0]
-(`https://jakarta.ee/specifications/xml-binding/3.0/`). By using these interfaces to
-store configuration data, you ensure that the add-on component is fully
-integrated with GlassFish Server. As a result, administrators can
-configure an add-on component in the same way as they can configure
-other GlassFish Server components.
-
-For more information, see
-link:adding-configuration-data.html#gjlpe[Adding Configuration Data for a
-Component].
-
-[[ghojq]][[GSACG00178]][[adding-container-capabilities]]
-
-Adding Container Capabilities
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Applications run on GlassFish Server in containers. GlassFish Server
-enables you to create containers that extend or replace the existing
-containers of GlassFish Server. Adding container capabilities enables
-you to run new types of applications and to deploy new archive types in
-GlassFish Server.
-
-For more information, see
-link:adding-container-capabilities.html#ghmon[Adding Container
-Capabilities].
-
-[[gktld]][[GSACG00179]][[creating-a-session-persistence-module]]
-
-Creating a Session Persistence Module
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-GlassFish Server enables you to create a session persistence module in
-the web container for high availability-related functionality by
-implementing the `PersistenceStrategyBuilder` interface . Using the
-`PersistenceStrategyBuilder` interface in an HK2 service makes the
-session manager extensible because you can implement a new persistence
-type without having to modify the web container code.
-
-For information about other high-availability, session persistence
-solutions, see "link:../ha-administration-guide/session-persistence-and-failover.html#GSHAG00011[Configuring High Availability Session
-Persistence and Failover]" in Eclipse GlassFish High
-Availability Administration Guide.
-
-For more information, see
-link:session-persistence-modules.html#gkmhj[Creating a Session
-Persistence Module].
-
-[[ghoiu]][[GSACG00180]][[packaging-and-delivering-an-add-on-component]]
-
-Packaging and Delivering an Add-On Component
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Packaging an add-on component enables the component to interact with the
-GlassFish Server kernel in the same way as other components. Integrating
-a component with GlassFish Server enables GlassFish Server to discover
-the component at runtime. If an add-on component is an extension or
-update to existing installations of GlassFish Server, deliver the
-component through Update Tool.
-
-For more information, see
-link:packaging-integrating-delivering.html#ghmxp[Packaging, Integrating,
-and Delivering an Add-On Component].
-
-----
diff --git a/docs/add-on-component-development-guide/src/main/jbake/content/loe.adoc b/docs/add-on-component-development-guide/src/main/jbake/content/loe.adoc
deleted file mode 100644
index a012d30..0000000
--- a/docs/add-on-component-development-guide/src/main/jbake/content/loe.adoc
+++ /dev/null
@@ -1,131 +0,0 @@
-type=page
-status=published
-title=List of Examples
-next=lot.html
-prev=toc.html
-~~~~~~
-List of Examples
-================
-
-[[list-of-examples]]
-List of Examples
-----------------
-
-* link:writing-hk2-components.html#ghoqv[2-1 Example Implementation of
-PostContruct and PreDestroy]
-* link:writing-hk2-components.html#ghquz[2-2 Example of Instantiation
-Cascading]
-* link:writing-hk2-components.html#ghoip[2-3 Example of the Optional
-Elements of the @Service Annotation]
-* link:writing-hk2-components.html#ghqsa[2-4 Example of the Maven Plug-In
-Configuration]
-* link:writing-hk2-components.html#ghoik[2-5 Example of META-INF/services
-File Generation]
-* link:extending-the-admin-console.html#ghosz[3-1 Example ConsoleProvider
-Implementation]
-* link:extending-the-admin-console.html#ghpmb[3-2 Example Tree Node
-Integration Point]
-* link:extending-the-admin-console.html#ghpmn[3-3 Example JavaServer
-Faces Page for a Tree Node]
-* link:extending-the-admin-console.html#ghplc[3-4 Example Tab Integration
-Point]
-* link:extending-the-admin-console.html#ghplu[3-5 Example Tab Set
-Integration Points]
-* link:extending-the-admin-console.html#ghpnt[3-6 Example JavaServer
-Faces Page for a Tab]
-* link:extending-the-admin-console.html#ghpox[3-7 Example Task
-Integration Point]
-* link:extending-the-admin-console.html#gjkgd[3-8 Example JavaServer
-Faces Page for a Task]
-* link:extending-the-admin-console.html#ghplk[3-9 Example Task Group
-Integration Point]
-* link:extending-the-admin-console.html#ghpqe[3-10 Example JavaServer
-Faces Page for a Task Group]
-* link:extending-the-admin-console.html#ghpnu[3-11 Example Resources Page
-Implementation Point]
-* link:extending-the-admin-console.html#ghpoz[3-12 Example JavaServer
-Faces Page for a Resource Page Item]
-* link:extending-the-admin-console.html#ghple[3-13 Example JavaServer
-Faces Page for a Property Sheet]
-* link:extending-the-admin-console.html#ghpls[3-14 Example Custom Theme
-Integration Point]
-* link:extending-the-admin-console.html#ghpla[3-15 Example of Branding
-Integration Points]
-* link:extending-asadmin.html#ghrqq[4-1 Adding an asadmin Subcommand]
-* link:extending-asadmin.html#ghpuh[4-2 Adding Parameters to an asadmin
-Subcommand]
-* link:extending-asadmin.html#ghpvm[4-3 Adding Message Strings to an
-asadmin Subcommand]
-* link:extending-asadmin.html#ghrfh[4-4 BrandingVersion.properties File
-for Changing the Brand in the GlassFish Server CLI]
-* link:extending-asadmin.html#ghrnt[4-5 asadmin Subcommand With Empty
-execute Method]
-* link:extending-asadmin.html#ghrsi[4-6 asadmin Subcommand for Retrieving
-and Displaying Information]
-* link:extending-asadmin.html#gkbdf[4-7 asadmin Subcommand for Updating
-Configuration Data]
-* link:adding-monitoring-capabilities.html#ghprw[5-1 Defining an Event
-Provider by Writing a Java Class]
-* link:adding-monitoring-capabilities.html#gkajj[5-2 Defining an Event
-Provider by Writing an XML Fragment]
-* link:adding-monitoring-capabilities.html#gkaii[5-3 Manifest Entry for
-Event Providers That Are Defined as Java Classes]
-* link:adding-monitoring-capabilities.html#ghpus[5-4 Sending an Event]
-* link:adding-monitoring-capabilities.html#ghpsc[5-5 Representing a
-Component's Statistics in an Event Listener Class]
-* link:adding-monitoring-capabilities.html#ghpwu[5-6 Subscribing to
-Events From Event Provider Classes]
-* link:adding-monitoring-capabilities.html#ghpuu[5-7 Registering an Event
-Listener]
-* link:adding-monitoring-capabilities.html#ghpna[5-8 Event Provider
-Class]
-* link:adding-monitoring-capabilities.html#ghpmu[5-9 Bootstrap Class]
-* link:adding-monitoring-capabilities.html#ghpvw[5-10 Listener Class]
-* link:adding-monitoring-capabilities.html#ghpuc[5-11 MBean Interface]
-* link:adding-monitoring-capabilities.html#ghpwx[5-12 MBean
-Implementation]
-* link:adding-configuration-data.html#gjcne[6-1 Declaration of an
-Interface That Defines an Element]
-* link:adding-configuration-data.html#sthref7[6-2 Defining an Attribute
-of an Element]
-* link:adding-configuration-data.html#gjzjt[6-3 Declaring an Interface to
-Represent a Subelement]
-* link:adding-configuration-data.html#gjzkh[6-4 Identifying a Subelement
-to its Parent Element]
-* link:adding-configuration-data.html#gjrmp[6-5 Specifying a Range of
-Valid Values for an Integer]
-* link:adding-configuration-data.html#gjzkq[6-6 Specifying Regular
-Expression Matching]
-* link:adding-configuration-data.html#gkaba[6-7 XML Data Fragment]
-* link:adding-configuration-data.html#gkabo[6-8 Writing a Component's
-Initial Configuration Data to the domain.xml File]
-* link:adding-configuration-data.html#gjski[6-9 domain.xml File After
-Initialization]
-* link:adding-configuration-data.html#sthref9[6-10 Creating a Transaction
-to Update Configuration Data]
-* link:adding-configuration-data.html#gkamy[6-11 Parent Element
-Definition]
-* link:adding-configuration-data.html#gkamb[6-12 Subelement Definition]
-* link:adding-configuration-data.html#gkamk[6-13 XML Data Fragment for
-Initializing the greeter-container-config Element]
-* link:adding-container-capabilities.html#ghojg[7-1 Example
-Implementation of Container]
-* link:adding-container-capabilities.html#ghoiv[7-2 Example
-Implementation of Deployer]
-* link:adding-container-capabilities.html#gkamr[7-3 Annotation to Denote
-a Container's Component]
-* link:adding-container-capabilities.html#gkand[7-4 Application Container
-Class]
-* link:adding-container-capabilities.html#gkamm[7-5 Container Class]
-* link:adding-container-capabilities.html#gkalo[7-6 Deployer Class]
-* link:adding-container-capabilities.html#gkaks[7-7 Sniffer Class]
-* link:adding-container-capabilities.html#gkaki[7-8 Container Client
-Class]
-* link:adding-container-capabilities.html#gkalf[7-9 Component for
-Container Client]
-* link:adding-container-capabilities.html#gkaly[7-10 Deployment
-Descriptor for Container Client]
-* link:session-persistence-modules.html#sthref10[8-1 Implementing
-PersistenceStrategyBuilder With a Custom Web Session Manager]
-* link:session-persistence-modules.html#sthref11[8-2 Session Manager
-Configuration in the glassfish-web.xml File]
diff --git a/docs/add-on-component-development-guide/src/main/jbake/content/lot.adoc b/docs/add-on-component-development-guide/src/main/jbake/content/lot.adoc
deleted file mode 100644
index 81c3255..0000000
--- a/docs/add-on-component-development-guide/src/main/jbake/content/lot.adoc
+++ /dev/null
@@ -1,15 +0,0 @@
-type=page
-status=published
-title=List of Tables
-next=title.html
-prev=loe.html
-~~~~~~
-List of Tables
-==============
-
-[[list-of-tables]]
-List of Tables
---------------
-
-* link:adding-configuration-data.html#gjrlg[6-1 Commonly Used Annotations
-for Validating GlassFish Server Configuration Data]
diff --git a/docs/add-on-component-development-guide/src/main/jbake/content/packaging-integrating-delivering.adoc b/docs/add-on-component-development-guide/src/main/jbake/content/packaging-integrating-delivering.adoc
deleted file mode 100644
index 6b0e9eb..0000000
--- a/docs/add-on-component-development-guide/src/main/jbake/content/packaging-integrating-delivering.adoc
+++ /dev/null
@@ -1,77 +0,0 @@
-type=page
-status=published
-title=Packaging, Integrating, and Delivering an Add-On Component
-next=integration-point-reference.html
-prev=session-persistence-modules.html
-~~~~~~
-Packaging, Integrating, and Delivering an Add-On Component
-==========================================================
-
-[[GSACG00009]][[ghmxp]]
-
-
-[[packaging-integrating-and-delivering-an-add-on-component]]
-9 Packaging, Integrating, and Delivering an Add-On Component
-------------------------------------------------------------
-
-Packaging an add-on component enables the component to interact with the
-GlassFish Server kernel in the same way as other components. Integrating
-a component with GlassFish Server enables GlassFish Server to discover
-the component at runtime. If an add-on component is an extension or
-update to existing installations of GlassFish Server, deliver the
-component through Update Tool.
-
-The following topics are addressed here:
-
-* link:#ghpun[Packaging an Add-On Component]
-* link:#ghmne[Integrating an Add-On Component With GlassFish Server]
-* link:#ghpuz[Delivering an Add-On Component Through Update Tool]
-
-[[ghpun]][[GSACG00142]][[packaging-an-add-on-component]]
-
-Packaging an Add-On Component
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-To enable an add-on component to plug in to the GlassFish Server kernel
-in the same way as other components, package the component as an OSGi
-bundle.
-
-A bundle is the unit of deployment in the OSGi module management
-subsystem. To package a component as an OSGi bundle, package the
-component's constituent files in a Java archive (JAR) file with
-appropriate manifest entries. The manifest entries provide information
-about the component that is required to enable the component to be
-plugged into the GlassFish Server kernel, such as:
-
-* Name
-* Version
-* Dependencies
-* Capabilities
-
-[[ghmne]][[GSACG00143]][[integrating-an-add-on-component-with-glassfish-server]]
-
-Integrating an Add-On Component With GlassFish Server
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Integrating an add-on component with GlassFish Server enables GlassFish
-Server to discover the component at runtime. To integrate an add-on
-component with GlassFish Server, ensure that the JAR file that contains
-the component is copied to or installed in the as-install`/modules/`
-directory.
-
-[[ghpuz]][[GSACG00144]][[delivering-an-add-on-component-through-update-tool]]
-
-Delivering an Add-On Component Through Update Tool
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-If an add-on component is an extension or update to existing
-installations of GlassFish Server, deliver the component through Update
-Tool. To deliver an add-on component through Update Tool, create an
-Image Packaging System (IPS) package to contain the component and add
-the package to a suitable IPS package repository.
-
-For information about how to create IPS packages, see the
-http://wikis.oracle.com/display/IpsBestPractices/[IPS best practices
-document] (`http://wikis.oracle.com/display/IpsBestPractices/`).
-
-----
diff --git a/docs/add-on-component-development-guide/src/main/jbake/content/preface.adoc b/docs/add-on-component-development-guide/src/main/jbake/content/preface.adoc
deleted file mode 100644
index 1d584d6..0000000
--- a/docs/add-on-component-development-guide/src/main/jbake/content/preface.adoc
+++ /dev/null
@@ -1,359 +0,0 @@
-type=page
-status=published
-title=Preface
-next=introduction.html
-prev=title.html
-~~~~~~
-Preface
-=======
-
-[[sthref2]][[preface]]
-
-Preface
--------
-
-[NOTE]
-========================================================================
-
-This documentation is part of the Java Enterprise Edition contribution 
-to the Eclipse Foundation and is not intended for use in relation to 
-Java Enterprise Edition or Orace GlassFish. The documentation is in the 
-process of being revised to reflect the new Jakarta EE branding. 
-Additional changes will be made as requirements and procedures evolve 
-for Jakarta EE. Where applicable, references to Java EE or Java 
-Enterprise Edition should be considered references to Jakarta EE. 
-
-Please see the Title page for additional license information.
-========================================================================
-
-This document explains how to use published interfaces of GlassFish
-Server Open Source Edition to develop add-on components for GlassFish
-Server. This document explains how to perform only those tasks that
-ensure that the add-on component is suitable for GlassFish Server.
-
-This document is for software developers who are developing add-on
-components for GlassFish Server. This document assumes that the
-developers are working with a distribution of GlassFish Server. Access
-to the source code of the GlassFish project is not required to perform
-the tasks in this document. This document also assumes the ability to
-program in the Java language.
-
-This preface contains information about and conventions for the entire
-GlassFish Server Open Source Edition (GlassFish Server) documentation
-set.
-
-GlassFish Server 4.0 is developed through the GlassFish project
-open-source community at `http://glassfish.java.net/`. The GlassFish
-project provides a structured process for developing the GlassFish
-Server platform that makes the new features of the Java EE platform
-available faster, while maintaining the most important feature of Java
-EE: compatibility. It enables Java developers to access the GlassFish
-Server source code and to contribute to the development of the GlassFish
-Server. The GlassFish project is designed to encourage communication
-between Oracle engineers and the community.
-
-The following topics are addressed here:
-
-* link:#ghpbz[GlassFish Server Documentation Set]
-* link:#giprl[Related Documentation]
-* link:#fwbkx[Typographic Conventions]
-* link:#fquvc[Symbol Conventions]
-* link:#ghpfg[Default Paths and File Names]
-
-
-[[GSACG00079]][[ghpbz]]
-
-
-[[glassfish-server-documentation-set]]
-GlassFish Server Documentation Set
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The GlassFish Server documentation set describes deployment planning and
-system installation. For an introduction to GlassFish Server, refer to
-the books in the order in which they are listed in the following table.
-
-[width="100%",cols="<30%,<70%",options="header",]
-|=======================================================================
-|Book Title |Description
-|link:../release-notes/toc.html#GSRLN[Release Notes] |Provides late-breaking information about
-the software and the documentation and includes a comprehensive,
-table-based summary of the supported hardware, operating system, Java
-Development Kit (JDK), and database drivers.
-
-|link:../quick-start-guide/toc.html#GSQSG[Quick Start Guide] |Explains how to get started with the
-GlassFish Server product.
-
-|link:../installation-guide/toc.html#GSING[Installation Guide] |Explains how to install the software
-and its components.
-
-|link:../upgrade-guide/toc.html#GSUPG[Upgrade Guide] |Explains how to upgrade to the latest
-version of GlassFish Server. This guide also describes differences
-between adjacent product releases and configuration options that can
-result in incompatibility with the product specifications.
-
-|link:../deployment-planning-guide/toc.html#GSPLG[Deployment Planning Guide] |Explains how to build a
-production deployment of GlassFish Server that meets the requirements of
-your system and enterprise.
-
-|link:../administration-guide/toc.html#GSADG[Administration Guide] |Explains how to configure, monitor,
-and manage GlassFish Server subsystems and components from the command
-line by using the link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] utility. Instructions
-for performing these tasks from the Administration Console are provided
-in the Administration Console online help.
-
-|link:../security-guide/toc.html#GSSCG[Security Guide] |Provides instructions for configuring and
-administering GlassFish Server security.
-
-|link:../application-deployment-guide/toc.html#GSDPG[Application Deployment Guide] |Explains how to assemble and
-deploy applications to the GlassFish Server and provides information
-about deployment descriptors.
-
-|link:../application-development-guide/toc.html#GSDVG[Application Development Guide] |Explains how to create and
-implement Java Platform, Enterprise Edition (Java EE platform)
-applications that are intended to run on the GlassFish Server. These
-applications follow the open Java standards model for Java EE components
-and application programmer interfaces (APIs). This guide provides
-information about developer tools, security, and debugging.
-
-|link:../add-on-component-development-guide/toc.html#GSACG[Add-On Component Development Guide] |Explains how to use
-published interfaces of GlassFish Server to develop add-on components
-for GlassFish Server. This document explains how to perform only those
-tasks that ensure that the add-on component is suitable for GlassFish
-Server.
-
-|link:../embedded-server-guide/toc.html#GSESG[Embedded Server Guide] |Explains how to run applications in
-embedded GlassFish Server and to develop applications in which GlassFish
-Server is embedded.
-
-|link:../ha-administration-guide/toc.html#GSHAG[High Availability Administration Guide] |Explains how to
-configure GlassFish Server to provide higher availability and
-scalability through failover and load balancing.
-
-|link:../performance-tuning-guide/toc.html#GSPTG[Performance Tuning Guide] |Explains how to optimize the
-performance of GlassFish Server.
-
-|link:../troubleshooting-guide/toc.html#GSTSG[Troubleshooting Guide] |Describes common problems that you
-might encounter when using GlassFish Server and explains how to solve
-them.
-
-|link:../error-messages-reference/toc.html#GSEMR[Error Message Reference] |Describes error messages that you
-might encounter when using GlassFish Server.
-
-|link:../reference-manual/toc.html#GSRFM[Reference Manual] |Provides reference information in man
-page format for GlassFish Server administration commands, utility
-commands, and related concepts.
-
-|link:../../openmq/mq-release-notes/toc.html#GMRLN[Message Queue Release Notes] |Describes new features,
-compatibility issues, and existing bugs for Open Message Queue.
-
-|link:../../openmq/mq-tech-over/toc.html#GMTOV[Message Queue Technical Overview] |Provides an introduction
-to the technology, concepts, architecture, capabilities, and features of
-the Message Queue messaging service.
-
-|link:../../openmq/mq-admin-guide/toc.html#GMADG[Message Queue Administration Guide] |Explains how to set up
-and manage a Message Queue messaging system.
-
-|link:../../openmq/mq-dev-guide-jmx/toc.html#GMJMG[Message Queue Developer's Guide for JMX Clients] |Describes
-the application programming interface in Message Queue for
-programmatically configuring and monitoring Message Queue resources in
-conformance with the Java Management Extensions (JMX).
-
-|link:../../openmq/mq-dev-guide-java/toc.html#GMJVG[Message Queue Developer's Guide for Java Clients] |Provides
-information about concepts and procedures for developing Java messaging
-applications (Java clients) that work with GlassFish Server.
-
-|link:../../openmq/mq-dev-guide-c/toc.html#GMCCG[Message Queue Developer's Guide for C Clients] |Provides
-programming and reference information for developers working with
-Message Queue who want to use the C language binding to the Message
-Queue messaging service to send, receive, and process Message Queue
-messages.
-|=======================================================================
-
-
-[[GSACG00080]][[giprl]]
-
-
-[[related-documentation]]
-Related Documentation
-~~~~~~~~~~~~~~~~~~~~~
-
-The following tutorials explain how to develop Java EE applications:
-
-* http://docs.oracle.com/javaee/7/firstcup/doc/home.html[Your First Cup:
-An Introduction to the Java EE Platform]
-(`http://docs.oracle.com/javaee/7/firstcup/doc/home.html`). For beginning
-Java EE programmers, this short tutorial explains the entire process for
-developing a simple enterprise application. The sample application is a
-web application that consists of a component that is based on the
-Enterprise JavaBeans specification, a JAX-RS web service, and a
-JavaServer Faces component for the web front end.
-* http://docs.oracle.com/javaee/7/tutorial/doc/home.html[The Java EE 7
-Tutorial] (`http://docs.oracle.com/javaee/7/tutorial/doc/home.html`).
-This comprehensive tutorial explains how to use Java EE 7 platform
-technologies and APIs to develop Java EE applications.
-
-Javadoc tool reference documentation for packages that are provided with
-GlassFish Server is available as follows.
-
-* The API specification for version 7 of Java EE is located at
-`http://docs.oracle.com/javaee/7/api/`.
-* The API specification for GlassFish Server 4.0, including Java EE 7
-platform packages and nonplatform packages that are specific to the
-GlassFish Server product, is located at
-`http://glassfish.java.net/nonav/docs/v3/api/`.
-
-Additionally, the
-http://www.oracle.com/technetwork/java/javaee/tech/index.html[Java EE
-Specifications]
-(`http://www.oracle.com/technetwork/java/javaee/tech/index.html`) might
-be useful.
-
-For information about creating enterprise applications in the NetBeans
-Integrated Development Environment (IDE), see the
-http://www.netbeans.org/kb/[NetBeans Documentation, Training & Support
-page] (`http://www.netbeans.org/kb/`).
-
-For information about the Java DB database for use with the GlassFish
-Server, see the
-http://www.oracle.com/technetwork/java/javadb/overview/index.html[Java
-DB product page]
-(`http://www.oracle.com/technetwork/java/javadb/overview/index.html`).
-
-The Java EE Samples project is a collection of sample applications that
-demonstrate a broad range of Java EE technologies. The Java EE Samples
-are bundled with the Java EE Software Development Kit (SDK) and are also
-available from the http://glassfish-samples.java.net/[Java EE Samples
-project page] (`http://glassfish-samples.java.net/`).
-
-[[GSACG00081]][[fwbkx]]
-
-
-[[typographic-conventions]]
-Typographic Conventions
-~~~~~~~~~~~~~~~~~~~~~~~
-
-The following table describes the typographic changes that are used in
-this book.
-
-[width="100%",cols="<14%,<37%,<49%",options="header",]
-|=======================================================================
-|Typeface |Meaning |Example
-|`AaBbCc123` |The names of commands, files, and directories, and
-onscreen computer output a|
-Edit your `.login` file.
-
-Use `ls` `a` to list all files.
-
-`machine_name% you have mail.`
-
-|`AaBbCc123` |What you type, contrasted with onscreen computer output a|
-`machine_name%` `su`
-
-`Password:`
-
-|AaBbCc123 |A placeholder to be replaced with a real name or value |The
-command to remove a file is `rm` filename.
-
-|AaBbCc123 |Book titles, new terms, and terms to be emphasized (note
-that some emphasized items appear bold online) a|
-Read Chapter 6 in the User's Guide.
-
-A cache is a copy that is stored locally.
-
-Do not save the file.
-
-|=======================================================================
-
-
-[[GSACG00082]][[fquvc]]
-
-
-[[symbol-conventions]]
-Symbol Conventions
-~~~~~~~~~~~~~~~~~~
-
-The following table explains symbols that might be used in this book.
-
-[width="100%",cols="<10%,<26%,<28%,<36%",options="header",]
-|=======================================================================
-|Symbol |Description |Example |Meaning
-|`[ ]` |Contains optional arguments and command options. |`ls [-l]` |The
-`-l` option is not required.
-
-|`{ \| }` |Contains a set of choices for a required command option.
-|`-d {y\|n}` |The `-d` option requires that you use either the `y`
-argument or the `n` argument.
-
-|`${ }` |Indicates a variable reference. |`${com.sun.javaRoot}`
-|References the value of the `com.sun.javaRoot` variable.
-
-|- |Joins simultaneous multiple keystrokes. |Control-A |Press the
-Control key while you press the A key.
-
-|+ + |Joins consecutive multiple keystrokes. |Ctrl+A+N |Press the
-Control key, release it, and then press the subsequent keys.
-
-|> |Indicates menu item selection in a graphical user interface. |File >
-New > Templates |From the File menu, choose New. From the New submenu,
-choose Templates.
-|=======================================================================
-
-
-[[GSACG00083]][[ghpfg]]
-
-
-[[default-paths-and-file-names]]
-Default Paths and File Names
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following table describes the default paths and file names that are
-used in this book.
-
-[width="100%",cols="<14%,<34%,<52%",options="header",]
-|=======================================================================
-|Placeholder |Description |Default Value
-|as-install + a|
-Represents the base installation directory for GlassFish Server.
-
-In configuration files, as-install is represented as follows:
-
-`${com.sun.aas.installRoot}`
-
- a|
-Installations on the Oracle Solaris operating system, Linux operating
-system, and Mac OS operating system:
-
-user's-home-directory`/glassfish3/glassfish`
-
-Installations on the Windows operating system:
-
-SystemDrive`:\glassfish3\glassfish`
-
-|as-install-parent + |Represents the parent of the base installation
-directory for GlassFish Server. a|
-Installations on the Oracle Solaris operating system, Linux operating
-system, and Mac operating system:
-
-user's-home-directory`/glassfish3`
-
-Installations on the Windows operating system:
-
-SystemDrive`:\glassfish3`
-
-|domain-root-dir + |Represents the directory in which a domain is
-created by default. |as-install`/domains/`
-
-|domain-dir + a|
-Represents the directory in which a domain's configuration is stored.
-
-In configuration files, domain-dir is represented as follows:
-
-`${com.sun.aas.instanceRoot}`
-
- |domain-root-dir`/`domain-name
-
-|instance-dir + |Represents the directory for a server instance.
-|domain-dir`/`instance-name
-|=======================================================================
-
-
diff --git a/docs/add-on-component-development-guide/src/main/jbake/content/session-persistence-modules.adoc b/docs/add-on-component-development-guide/src/main/jbake/content/session-persistence-modules.adoc
deleted file mode 100644
index 6c018fc..0000000
--- a/docs/add-on-component-development-guide/src/main/jbake/content/session-persistence-modules.adoc
+++ /dev/null
@@ -1,177 +0,0 @@
-type=page
-status=published
-title=Creating a Session Persistence Module
-next=packaging-integrating-delivering.html
-prev=adding-container-capabilities.html
-~~~~~~
-Creating a Session Persistence Module
-=====================================
-
-[[GSACG00008]][[gkmhj]]
-
-
-[[creating-a-session-persistence-module]]
-8 Creating a Session Persistence Module
----------------------------------------
-
-GlassFish Server enables you to create a session persistence module in
-the web container for high availability-related functionality by
-implementing the `PersistenceStrategyBuilder` interface . Using the
-`PersistenceStrategyBuilder` interface in an HK2 service makes the
-session manager extensible because you can implement a new persistence
-type without having to modify the web container code.
-
-For information about other high-availability, session persistence
-solutions, see "link:../ha-administration-guide/session-persistence-and-failover.html#GSHAG00011[Configuring High Availability Session
-Persistence and Failover]" in GlassFish Server Open Source Edition High
-Availability Administration Guide.
-
-[[gkmhr]][[GSACG00141]][[implementing-the-persistencestrategybuilder-interface]]
-
-Implementing the `PersistenceStrategyBuilder` Interface
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can implement the `PersistenceStrategyBuilder` interface by creating
-a new web session manager type.
-
-[source,oac_no_warn]
-----
-
-package com.sun.enterprise.web;
-
-import com.sun.enterprise.deployment.runtime.web.SessionManager;
-import org.apache.catalina.Context;
-import org.jvnet.hk2.annotations.Contract;
-
-@Contract
-public interface PersistenceStrategyBuilder {
-
-    public void initializePersistenceStrategy(
-            Context ctx,
-            SessionManager smBean,
-            ServerConfigLookup serverConfigLookup);
-
-    public void setPersistenceFrequency(String persistenceFrequency);
-
-    public void setPersistenceScope(String persistenceScope);
-
-    public void setPassedInPersistenceType(String persistenceType);
-}
-----
-
-Here is an example of how to implement the `PersistenceStrategyBuilder`
-interface by creating a new web session manager and setting a store for
-it:
-
-[source,oac_no_warn]
-----
-
-@Service(name="xyz")
-public class XYZStrategyBuilder implements PersistenceStrategyBuilder {
-
-    private String persistenceFrequency = null;
-    private String persistenceScope = null;
-    private String persistenceType = null;
-
-    public void init(StandardContext ctx, SessionManager sessionManager,
-      ServerConfigLookup serverConfigLookup) {
-        // add listeners, valves, etc. to the ctx
-        // Set the manager and store
-    }
-
-    public void setPersistenceFrequency(String persistenceFrequency) {
-        this.persistenceFrequency = persistenceFrequency;
-    }
-
-    public void setPersistenceScope(String persistenceScope) {
-        this.persistenceScope = persistenceScope;
-    }
-
-    public void setPassedInPersistenceType(String persistenceType) {
-        this.passedInPersistenceType = persistenceType;
-    }
-}
-----
-
-If a `Manager` is provided, then it will be used in GlassFish Server.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-If a backing store is required, it is the responsibility of the
-`Manager` to make sure that the `findSession` method correctly uses the
-`Store` that the `Manager` provides.
-
-|=======================================================================
-
-
-[[sthref10]]
-
-Example 8-1 Implementing `PersistenceStrategyBuilder` With a Custom Web
-Session Manager
-
-This example defines a session manager type that is named
-`MyHASolution`.
-
-[source,oac_no_warn]
-----
-
-@Service(name="MyHASolution")
-public class MyHASolutionStrategyBuilder implements PersistenceStrategyBuilder {
-
-    private String persistenceFrequency = null;
-    private String persistenceScope = null;
-    private String persistenceType = null;
-
-    public void init(StandardContext ctx, SessionManager sessionManager,
-      ServerConfigLookup serverConfigLookup) {
-        // add listeners, valves, etc. to the ctx
-        // Set the manager and store
-        MyManager myManager = new MyManager(persistenceType, persistenceFrequency);
-        // (You could also make this a service and look it up in the habitat.
-        // For simplicity we are just doing a new implementation of the class here.)
-        MyStore store = new MyStore();
-        myManager.setStore(store);
-        ctx.setManager(myManager);
-    }
-
-    public void setPersistenceFrequency(String persistenceFrequency) {
-        this.persistenceFrequency = persistenceFrequency;
-    }
-
-    public void setPersistenceScope(String persistenceScope) {
-        this.persistenceScope = persistenceScope;
-    }
-
-    public void setPassedInPersistenceType(String persistenceType) {
-        this.passedInPersistenceType = persistenceType;
-
-    }
-
-}
-----
-
-[[sthref11]]
-
-Example 8-2 Session Manager Configuration in the `glassfish-web.xml`
-File
-
-This example sets the `persistence-type` attribute of the
-`session-manager` element of `glassfish-web.xml` to `myHASolution`
-
-Based on the `domain.xml` and `glassfish-web.xml` settings, the web
-container looks up the appropriate `PersistenceStrategyBuilder`
-interface in the Habitat and uses it.
-
-[source,oac_no_warn]
-----
-
-       <glassfish-web-app>
-         <session-config>
-           <session-manager persistence-type="myHASolution"/>
-         <session-config>
-       <glassfish-web-app>
-----
diff --git a/docs/add-on-component-development-guide/src/main/jbake/content/title.adoc b/docs/add-on-component-development-guide/src/main/jbake/content/title.adoc
deleted file mode 100644
index 18c789b..0000000
--- a/docs/add-on-component-development-guide/src/main/jbake/content/title.adoc
+++ /dev/null
@@ -1,57 +0,0 @@
-type=page
-status=published
-title=Eclipse GlassFish Server Add-On Component Development Guide, Release 5.1
-next=preface.html
-prev=lot.html
-~~~~~~
-Eclipse GlassFish Server Add-On Component Development Guide, Release 5.1
-========================================================================
-
-
-[[eclipse-glassfish-server]]
-Eclipse GlassFish Server
-------------------------
-
-Add-On Component Development Guide
-
-Release 5.1
-
-Contributed 2018, 2019
-
-This document explains how to use published interfaces of Eclipse GlassFish
-Server to develop add-on components for GlassFish
-Server. This document explains how to perform only those tasks that
-ensure that the add-on component is suitable for GlassFish Server.
-
-This document is for software developers who are developing add-on
-components for GlassFish Server. This document assumes that the
-developers are working with a distribution of GlassFish Server. Access
-to the source code of the GlassFish project is not required to perform
-the tasks in this document. This document also assumes the ability to
-program in the Java language.
-
-[[sthref1]]
-
-'''''
-
-Eclipse GlassFish Server Add-On Component Development Guide,
-Release 5.1
-
-Copyright © 2013, 2019 Oracle and/or its affiliates. All rights reserved.
-
-This program and the accompanying materials are made available under the 
-terms of the Eclipse Public License v. 2.0, which is available at 
-http://www.eclipse.org/legal/epl-2.0. 
-
-SPDX-License-Identifier: EPL-2.0
-
-Oracle and Java are registered trademarks of Oracle and/or its 
-affiliates. Other names may be trademarks of their respective owners. 
-
-Intel and Intel Xeon are trademarks or registered trademarks of Intel 
-Corporation. All SPARC trademarks are used under license and are 
-trademarks or registered trademarks of SPARC International, Inc. AMD, 
-Opteron, the AMD logo, and the AMD Opteron logo are trademarks or 
-registered trademarks of Advanced Micro Devices. UNIX is a registered 
-trademark of The Open Group. 
-
diff --git a/docs/add-on-component-development-guide/src/main/jbake/content/writing-hk2-components.adoc b/docs/add-on-component-development-guide/src/main/jbake/content/writing-hk2-components.adoc
deleted file mode 100644
index 8820852..0000000
--- a/docs/add-on-component-development-guide/src/main/jbake/content/writing-hk2-components.adoc
+++ /dev/null
@@ -1,434 +0,0 @@
-type=page
-status=published
-title=Writing HK2 Components
-next=extending-the-admin-console.html
-prev=introduction.html
-~~~~~~
-Writing HK2 Components
-======================
-
-[[GSACG00002]][[ghmna]]
-
-
-[[writing-hk2-components]]
-2 Writing HK2 Components
-------------------------
-
-The Hundred-Kilobyte Kernel (HK2) is the lightweight and extensible
-kernel of GlassFish Server. To interact with GlassFish Server, add-on
-components plug in to this kernel. In the HK2 component model, the
-functions of an add-on component are declared through a contract-service
-implementation paradigm. An HK2 contract identifies and describes the
-building blocks or the extension points of an application. An HK2
-service implements an HK2 contract.
-
-The following topics are addressed here:
-
-* link:#ghokq[HK2 Component Model]
-* link:#ghojt[Services in the HK2 Component Model]
-* link:#ghokt[HK2 Runtime]
-* link:#ghojb[Inversion of Control]
-* link:#ghmoe[Identifying a Class as an Add-On Component]
-* link:#ghpvp[Using the Apache Maven Build System to Develop HK2
-Components]
-
-[[ghokq]][[GSACG00091]][[hk2-component-model]]
-
-HK2 Component Model
-~~~~~~~~~~~~~~~~~~~
-
-The Hundred-Kilobyte Kernel (HK2) provides a module system and component
-model for building complex software systems. HK2 forms the core of
-GlassFish Server's architecture.
-
-The module system is responsible for instantiating classes that
-constitute the application functionality. The HK2 runtime complements
-the module system by creating objects. It configures such objects by:
-
-* Injecting other objects that are needed by a newly instantiated object
-* Injecting configuration information needed for that object
-* Making newly created objects available, so that they can then be
-injected to other objects that need it
-
-[[ghojt]][[GSACG00092]][[services-in-the-hk2-component-model]]
-
-Services in the HK2 Component Model
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-An HK2 service identifies the building blocks or the extension points of
-an application. A service is a plain-old Java object (POJO) with the
-following characteristics:
-
-* The object implements an interface.
-* The object is declared in a JAR file with the `META-INF/services`
-file.
-
-To clearly separate the contract interface and its implementation, the
-HK2 runtime requires the following information:
-
-* Which interfaces are contracts
-* Which implementations of such interfaces are services
-
-Interfaces that define a contract are identified by the
-`org.jvnet.hk2.annotations.Contract` annotation.
-
-[source,oac_no_warn]
-----
-@Retention(RUNTIME)
-@Target(TYPE)
-public @interface Contract {
-}
-----
-
-Implementations of such contracts should be identified with an
-`org.jvnet.hk2.annotations.Service` annotation so that the HK2 runtime
-can recognize them as `@Contract` implementations.
-
-[source,oac_no_warn]
-----
-@Retention(RUNTIME)
-@Target(TYPE)
-public @interface Service {
-    ...
-}
-----
-
-For more information, see
-http://hk2.java.net/auto-depends/apidocs/org/jvnet/hk2/annotations/Service.html[`Service`]
-(`http://hk2.java.net/auto-depends/apidocs/org/jvnet/hk2/annotations/Service.html`).
-
-[[ghokt]][[GSACG00093]][[hk2-runtime]]
-
-HK2 Runtime
-~~~~~~~~~~~
-
-Once Services are defined, the HK2 runtime can be used to instantiate or
-retrieve instances of services. Each service instance has a scope,
-specified as singleton, per thread, per application, or a custom scope.
-
-[[ghoib]][[GSACG00181]][[scopes-of-services]]
-
-Scopes of Services
-^^^^^^^^^^^^^^^^^^
-
-You can specify the scope of a service by adding an
-`org.jvnet.hk2.annotations.Scoped` annotation to the class-level of your
-`@Service` implementation class. Scopes are also services, so they can
-be custom defined and added to the HK2 runtime before being used by
-other services. Each scope is responsible for storing the service
-instances to which it is tied; therefore, the HK2 runtime does not rely
-on predefined scopes (although it comes with a few predefined ones).
-
-[source,oac_no_warn]
-----
-@Contract
-public abstract class Scope {
-    public abstract ScopeInstance current();
-}
-----
-
-The following code fragment shows how to set the scope for a service to
-the predefined `Singleton` scope:
-
-[source,oac_no_warn]
-----
-@Service
-public Singleton implements Scope {
-    ...
-}
-
-@Scope(Singleton.class)
-@Service
-public class SingletonService implements RandomContract {
-    ...
-}
-----
-
-You can define a new `Scope` implementation and use that scope on your
-`@Service` implementations. You will see that the HK2 runtime uses the
-`Scope` instance to store and retrieve service instances tied to that
-scope.
-
-[[ghoky]][[GSACG00182]][[instantiation-of-components-in-hk2]]
-
-Instantiation of Components in HK2
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Do not call the `new` method to instantiate components. Instead,
-retrieve components by using the `Habitat` instance. The simplest way to
-use the `Habitat` instance is through a `getComponent(Class`T
-`contract)` call:
-
-[source,oac_no_warn]
-----
-public <T> T getComponent(Class<T> clazz) throws ComponentException;
-----
-
-More APIs are available at
-http://hk2.java.net/auto-depends/apidocs/org/jvnet/hk2/component/Habitat.html[`Habitat`]
-(`http://hk2.java.net/auto-depends/apidocs/org/jvnet/hk2/component/Habitat.html`).
-
-[[ghois]][[GSACG00183]][[hk2-lifecycle-interfaces]]
-
-HK2 Lifecycle Interfaces
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-Components can attach behaviors to their construction and destruction
-events by implementing the
-http://hk2.java.net/auto-depends/apidocs/org/jvnet/hk2/component/PostConstruct.html[`org.jvnet.hk2.component.PostConstruct`]
-(`http://hk2.java.net/auto-depends/apidocs/org/jvnet/hk2/component/PostConstruct.html`)
-interface, the
-http://hk2.java.net/auto-depends/apidocs/org/jvnet/hk2/component/PreDestroy.html[`org.jvnet.hk2.component.PreDestroy`]
-(`http://hk2.java.net/auto-depends/apidocs/org/jvnet/hk2/component/PreDestroy.html`)
-interface, or both. These are interfaces rather than annotations for
-performance reasons.
-
-The `PostConstruct` interface defines a single method, `postConstruct`,
-which is called after a component has been initialized and all its
-dependencies have been injected.
-
-The `PreDestroy` interface defines a single method, `preDestroy`, which
-is called just before a component is removed from the system.
-
-[[GSACG00014]][[ghoqv]]
-
-
-Example 2-1 Example Implementation of `PostContruct` and `PreDestroy`
-
-[source,oac_no_warn]
-----
-@Service(name="com.example.container.MyContainer")
-public class MyContainer implements Container, PostConstruct, PreDestroy {
-    @Inject
-    Logger logger;
-    ...
-    public void postConstruct() {
-        logger.info("Starting up.");
-    }
-
-    public void preDestroy() {
-        logger.info("Shutting down.");
-    }
-}
-
-----
-
-[[ghojb]][[GSACG00094]][[inversion-of-control]]
-
-Inversion of Control
-~~~~~~~~~~~~~~~~~~~~
-
-Inversion of control (IoC) refers to a style of software architecture
-where the behavior of a system is determined by the runtime capabilities
-of the individual, discrete components that make up the system. This
-architecture is different from traditional styles of software
-architecture, where all the components of a system are specified at
-design-time. With IoC, discrete components respond to high-level events
-to perform actions. While performing these actions, the components
-typically rely on other components to provide other actions. In an IoC
-system, components use injection to gain access to other components.
-
-[[ghoiz]][[GSACG00184]][[injecting-hk2-components]]
-
-Injecting HK2 Components
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-Services usually rely on other services to perform their tasks. The HK2
-runtime identifies the `@Contract` implementations required by a service
-by using the
-http://hk2.java.net/auto-depends/apidocs/org/jvnet/hk2/annotations/Inject.html[`org.jvnet.hk2.annotations.Inject`]
-(`http://hk2.java.net/auto-depends/apidocs/org/jvnet/hk2/annotations/Inject.html`)
-annotation. `Inject` can be placed on fields or setter methods of any
-service instantiated by the HK2 runtime. The target service is retrieved
-and injected during the calling service's instantiation by the component
-manager.
-
-The following example shows how to use `@Inject` at the field level:
-
-[source,oac_no_warn]
-----
-@Inject
-ConfigService config;
-----
-
-The following example shows how to use `@Inject` at the setter level:
-
-[source,oac_no_warn]
-----
-@Inject
-public void set(ConfigService svc) {...}
-----
-
-Injection can further qualify the intended injected service
-implementation by using a name and scope from which the service should
-be available:
-
-[source,oac_no_warn]
-----
-@Inject(Scope=Singleton.class, name="deploy")
-AdminCommand deployCommand;
-----
-
-[[ghoic]][[GSACG00186]][[instantiation-cascading-in-hk2]]
-
-Instantiation Cascading in HK2
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Injection of instances that have not been already instantiated triggers
-more instantiation. You can see this as a component instantiation
-cascade where some code requests for a high-level service will, by using
-the `@Inject` annotation, require more injection and instantiation of
-lower level services. This cascading feature keeps the implementation as
-private as possible while relying on interfaces and the separation of
-contracts and providers.
-
-[[GSACG00015]][[ghquz]]
-
-
-Example 2-2 Example of Instantiation Cascading
-
-The following example shows how the instantiation of `DeploymentService`
-as a `Startup` contract implementation will trigger the instantiation of
-the `ConfigService`.
-
-[source,oac_no_warn]
-----
-@Contract
-public interface Startup {...}
-
-Iterable<Startup> startups;
-startups = habitat.getComponents(Startup.class);
-
-@Service
-public class DeploymentService implements Startup {
-    @Inject
-    ConfigService config;
-}
-
-@Service
-public Class ConfigService implements ... {...}
-----
-
-[[ghmoe]][[GSACG00095]][[identifying-a-class-as-an-add-on-component]]
-
-Identifying a Class as an Add-On Component
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-GlassFish Server discovers add-on components by identifying Java
-programming language classes that are annotated with the
-`org.jvnet.hk2.annotation.Service` annotation.
-
-To identify a class as an implementation of an GlassFish Server service,
-add the `org.jvnet.hk2.annotations.Service` annotation at the
-class-definition level of your Java programming language class.
-
-[source,oac_no_warn]
-----
-@Service
-public class SamplePlugin implements ConsoleProvider {
-...
-}
-----
-
-The `@Service` annotation has the following elements. All elements are
-optional.
-
-`name`::
-  The name of the service. The default value is an empty string.
-`scope`::
-  The scope to which this service implementation is tied. The default
-  value is `org.glassfish.hk2.scopes.PerLookup.class`.
-`factory`::
-  The factory class for the service implementation, if the service is
-  created by a factory class rather than by calling the default
-  constructor. If this element is specified, the factory component is
-  activated, and `Factory.getObject` is used instead of the default
-  constructor. The default value of the `factory` element is
-  `org.jvnet.hk2.component.Factory.class`.
-
-[[GSACG00016]][[ghoip]]
-
-
-Example 2-3 Example of the Optional Elements of the `@Service`
-Annotation
-
-The following example shows how to use the optional elements of the
-`@Service` annotation:
-
-[source,oac_no_warn]
-----
-@Service (name="MyService",
-    scope=com.example.PerRequest.class,
-    factory=com.example.MyCustomFactory)
-public class SamplePlugin implements ConsoleProvider {
-...
-}
-----
-
-[[ghpvp]][[GSACG00096]][[using-the-apache-maven-build-system-to-develop-hk2-components]]
-
-Using the Apache Maven Build System to Develop HK2 Components
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-If you are using Maven 2 to build HK2 components, invoke the
-`auto-depends` plug-in for Maven so that the `META-INF/services` files
-are generated automatically during build time.
-
-[[GSACG00017]][[ghqsa]]
-
-
-Example 2-4 Example of the Maven Plug-In Configuration
-
-[source,oac_no_warn]
-----
-<plugin>
-    <groupId>org.glassfish.hk2</groupId>
-    <artifactId>hk2-maven-plugin</artifactId>
-    <configuration>
-        <includes>
-            <include>com/example/**</include>
-        </includes>
-    </configuration>
-</plugin>
-----
-
-[[GSACG00018]][[ghoik]]
-
-
-Example 2-5 Example of `META-INF/services` File Generation
-
-This example shows how to use
-http://hk2.java.net/auto-depends/apidocs/org/jvnet/hk2/annotations/Contract.html[`@Contract`]
-(`http://hk2.java.net/auto-depends/apidocs/org/jvnet/hk2/annotations/Contract.html`)
-and
-http://hk2.java.net/auto-depends/apidocs/org/jvnet/hk2/annotations/Service.html[`@Service`]
-(`http://hk2.java.net/auto-depends/apidocs/org/jvnet/hk2/annotations/Service.html`)
-and the resulting `META-INF/services` files.
-
-The interfaces and classes in this example are as follows:
-
-[source,oac_no_warn]
-----
-package com.example.wallaby.annotations;
-@Contract
-public interface Startup {...}
-
-package com.example.wombat;
-@Contract
-public interface RandomContract {...}
-
-package com.example.wallaby;
-@Service
-public class MyService implements Startup, RandomContract, PropertyChangeListener {
-    ...
-}
-----
-
-These interfaces and classes generate this `META-INF/services` file with
-the `MyService` content:
-
-[source,oac_no_warn]
-----
-com.example.wallaby.annotations.Startup
-com.example.wombat.RandomContract
-----
diff --git a/docs/add-on-component-development-guide/src/main/jbake/jbake.properties b/docs/add-on-component-development-guide/src/main/jbake/jbake.properties
deleted file mode 100644
index 546d09c..0000000
--- a/docs/add-on-component-development-guide/src/main/jbake/jbake.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-site.host=http://jbake.org
-render.tags=false
-render.sitemap=false
-render.archive=false
-render.feed=false
-asciidoctor.option.safe=0
-asciidoctor.attributes.export=true
diff --git a/docs/add-on-component-development-guide/src/main/jbake/templates/footer.ftl b/docs/add-on-component-development-guide/src/main/jbake/templates/footer.ftl
deleted file mode 100644
index 697f005..0000000
--- a/docs/add-on-component-development-guide/src/main/jbake/templates/footer.ftl
+++ /dev/null
@@ -1,46 +0,0 @@
-<#-- a footer template fragment included in the page template -->
-<hr />
-
-<table width="90%" id="bottom-nav" cellspacing="0" cellpadding="0">
-	<colgroup>
-		<col width="12%"/>
-		<col width="12%"/>
-		<col width="*"/>
-	</colgroup>
-	<tr>		
-	    <#if content.prev??>
-		<td align="left">
-		<a href="${content.prev}">
-			<span class=" vector-font"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Previous</span>
-		</a>
-		</td>
-		</#if>
-
-		<#if content.next??>
-		<td align="left">
-		<a href="${content.next}">
-			<span class="vector-font"><i class="fa fa-arrow-circle-right vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Next</span>
-		</a>
-		</td>
-		</#if>
-
-		<td align="right">
-		<a href="toc.html">
-			<span class="vector-font"><i class="fa fa-list vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Contents</span>
-		</a>
-		</td>
-	</tr>
-</table>
-
-<span id="copyright">
-        <img src="img/eclipse_foundation_logo_tiny.png" height="20px" alt="Eclipse Foundation Logo" align="top"/>&nbsp;            
-        <span >Copyright&nbsp;&copy;&nbsp;2020,&nbsp;Oracle&nbsp;and/or&nbsp;its&nbsp;affiliates.&nbsp;All&nbsp;rights&nbsp;reserved.</span>
-</span>
-
-<p align="center" class="beta">${config.status!}</p>
-
-</body>
-</html>
diff --git a/docs/add-on-component-development-guide/src/main/jbake/templates/header.ftl b/docs/add-on-component-development-guide/src/main/jbake/templates/header.ftl
deleted file mode 100644
index 82ebb36..0000000
--- a/docs/add-on-component-development-guide/src/main/jbake/templates/header.ftl
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html>
-<#-- a header template fragment included in the page template -->
-<html lang="en">
-  <head>
-    <meta charset="utf-8"/>
-    <title><#if (content.title)??><#escape x as x?xml>${content.title}</#escape></#if></title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <link href="<#if (content.rootpath)??>${content.rootpath}<#else></#if>css/style.css" rel="stylesheet">
-    <script src="https://use.fontawesome.com/96c4d89611.js"></script>
-  </head>
-  <body>
-<table id="doc-title" cellspacing="0" cellpadding="0">
-  <tr>
-  <td align="left" valign="top">
-  <b>${content.title}</b><br />
-      <p class="beta">${config.status!}</p>
-  </td>
-  </tr>
-</table>
-<hr />
-
-<table width="90%" id="top-nav" cellspacing="0" cellpadding="0">
-	<colgroup>
-		<col width="12%"/>
-		<col width="12%"/>
-		<col width="*"/>
-	</colgroup>
-	<tr>
-	    <#if content.prev??>
-		<td align="left">
-		<a href="${content.prev}">
-			<span class="vector-font"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Previous</span>
-		</a>
-		</td>
-	    </#if>
-
-	    <#if content.next??>
-		<td align="left">
-		<a href="${content.next}">
-			<span class=" vector-font"><i class="fa fa-arrow-circle-right vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Next</span>
-		</a>
-		</td>
-	    </#if>
-
-		<td align="right">
-		<a href="toc.html">
-			<span class=" vector-font"><i class="fa fa-list vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Contents</span>
-		</a>
-		</td>
-	</tr>
-</table>
-
diff --git a/docs/add-on-component-development-guide/src/main/jbake/templates/menu.ftl b/docs/add-on-component-development-guide/src/main/jbake/templates/menu.ftl
deleted file mode 100644
index 888c03d..0000000
--- a/docs/add-on-component-development-guide/src/main/jbake/templates/menu.ftl
+++ /dev/null
@@ -1 +0,0 @@
-<#-- a menu bar template fragment included in the page template -->
\ No newline at end of file
diff --git a/docs/add-on-component-development-guide/src/main/jbake/templates/page.ftl b/docs/add-on-component-development-guide/src/main/jbake/templates/page.ftl
deleted file mode 100644
index eca51db..0000000
--- a/docs/add-on-component-development-guide/src/main/jbake/templates/page.ftl
+++ /dev/null
@@ -1,8 +0,0 @@
-<#-- a top level page layout template -->
-
-<#include "header.ftl">
-<#include "menu.ftl">
-
-${content.body}
-
-<#include "footer.ftl">
\ No newline at end of file
diff --git a/docs/administration-guide/README.md b/docs/administration-guide/README.md
deleted file mode 100644
index a3ec2b6..0000000
--- a/docs/administration-guide/README.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# A JBake project template
-
-## About JBake
-
-JBake is a static site generator, it's inspired from jekyll and written
-in java.  The basic idea is to have templates for the structure of the
-page, and the body generated from asciidoc content.
-
-## Pre requisites
-
-- Maven
-- JDK8+
-
-Deploying to Github will require password less authentication.
-
-This is done by exporting your SSH public key into your Github account.
-
-## Build the site locally
-
-The site is generated under target/staging.
-
-Open file:///PATH_TO_PROJECT_DIR/target/staging in a browser to view the site.
-
-```
-mvn generate-resources
-```
-
-Or you can invoke the JBake plugin directly.
-
-```
-mvn jbake:build
-```
-
-### Rebuild the site on changes
-
-```
-mvn jbake:watch
-```
-
-If you keep this command running, changes to the sources will be
-detected and the site will be rendered incrementally.
-
-This is convenient when writing content.
-
-### Serve the site locally
-
-```
-mvn jbake:serve
-```
-
-If a webserver is required (e.g. absolute path are used), this command
-will start a webserver (jetty) at http://localhost:8820.  It will also
-watch for changes and rebuild incrementally.
-
-## Deploy the site to Github Pages
-
-```
-mvn deploy
-```
-
-## Produce a zip file for download
-
-To produce a zip file containing the generated html files, use:
-
-```
-mvn package
-```
-
-When making a release on GitHub, this zip file should be added to the release.
-
-## Links
-
-- [JBake maven plugin documentation](https://github.com/Blazebit/jbake-maven-plugin)
-- [JBake documentation](http://jbake.org/docs/2.5.1)
-- [Freemarker documentation](http://freemarker.org/docs)
-- [AsciiDoc User Guide](http://asciidoc.org/userguide.html)
-- [Asciidoctor quick reference](http://asciidoctor.org/docs/asciidoc-syntax-quick-reference)
diff --git a/docs/administration-guide/pom.xml b/docs/administration-guide/pom.xml
index 2e74099..c4a2f34 100644
--- a/docs/administration-guide/pom.xml
+++ b/docs/administration-guide/pom.xml
@@ -22,11 +22,10 @@
     <parent>
         <groupId>org.glassfish.docs</groupId>
         <artifactId>parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../parent</relativePath>
     </parent>
-    <groupId>org.glassfish.docs</groupId>
     <artifactId>administration-guide</artifactId>
     <packaging>jar</packaging>
-    <name>Eclipse GlassFish Server Administration Guide, Release 5.1</name>
+    <name>Eclipse GlassFish Server Administration Guide, Release 7</name>
 </project>
diff --git a/docs/administration-guide/src/main/asciidoc/asadmin-subcommands.adoc b/docs/administration-guide/src/main/asciidoc/asadmin-subcommands.adoc
new file mode 100644
index 0000000..67a3d5e
--- /dev/null
+++ b/docs/administration-guide/src/main/asciidoc/asadmin-subcommands.adoc
@@ -0,0 +1,771 @@
+type=page
+status=published
+title=Subcommands for the asadmin Utility
+prev=part-appendixes.html
+~~~~~~
+
+= Subcommands for the asadmin Utility
+
+[[GSADG00023]][[gcode]]
+
+
+[[a-subcommands-for-the-asadmin-utility]]
+== A Subcommands for the `asadmin` Utility
+
+This appendix lists the `asadmin` subcommands that are included with
+this release of the {productName} 7 software.
+
+* link:#ggltk[General Administration Subcommands]
+* link:#CHDJGEEG[Batch Jobs Subcommands]
+* link:#CHDECJFC[Concurrent Resources Subcommands]
+* link:#giowb[Connectivity Subcommands]
+* link:#gitwu[Domain Subcommands]
+* link:#ggltm[Internet Connectivity Subcommands]
+* link:#ggltf[JavaMail Subcommands]
+* link:#gipen[JMS Subcommands]
+* link:#gitws[JNDI Subcommands]
+* link:#gglsk[JVM Subcommands]
+* link:#giuzl[Life Cycle Module Subcommands]
+* link:#gitxd[Logging and Monitoring Subcommands]
+* link:#giusq[ORB Subcommands]
+* link:#giuqr[Thread Pool Subcommands]
+* link:#gitxi[Transaction Service Subcommands]
+
+For information and instructions on using the `asadmin` application
+deployment subcommands, see the link:application-deployment-guide.html#GSDPG[{productName} Application Deployment Guide].
+
+Online help for the `asadmin` subcommands can be invoked on the command
+line, for example, `asadmin create-domain` `help`. The
+link:reference-manual.html#GSRFM[{productName} Reference Manual] also
+provides a collection of these help pages.
+
+
+[NOTE]
+====
+The common options used with remote subcommands are described in the
+olink:GSRFM00263[`asadmin`(1M)] help page.
+====
+
+
+[[ggltk]][[GSADG00610]][[general-administration-subcommands]]
+
+=== General Administration Subcommands
+
+link:reference-manual/add-resources.html#GSRFM00001[`add-resources`]::
+  Creates the resources named in the specified XML file. Supported in
+  remote mode only. For procedural information in this guide, see
+  link:general-administration.html#ggoeh[To Add Resources From an XML
+  File].
+link:reference-manual/asadmin.html#GSRFM00263[`asadmin`]::
+  Describes how the `asadmin` utility works.
+link:reference-manual/attach.html#GSRFM825[`attach`]::
+  Attaches to subcommands that were started using the `asadmin --detach`
+  option or that contain progress information. For procedural
+  information in this guide, see
+  link:general-administration.html#CACDDHBA[To Run `asadmin` Subcommands
+  in `--detach` Mode].
+link:reference-manual/configure-managed-jobs.html#GSRFM836[`configure-managed-jobs`]::
+  Configures how long information about subcommands (jobs) that were
+  started using the `asadmin --detach` option or that contain progress
+  information is kept. For procedural information in this guide, see
+  link:general-administration.html#CACDDHBA[To Run `asadmin` Subcommands
+  in `--detach` Mode].
+link:reference-manual/create-module-config.html#GSRFM844[`create-module-config`]::
+  Adds the default configuration of a module to `domain.xml`.
+link:reference-manual/create-service.html#GSRFM00057[`create-service`]::
+  Configures the starting of a domain administration server (DAS) on an
+  unattended boot. On Oracle Solaris 10, this subcommand uses the
+  Service Management Facility (SMF). For procedural information in this
+  guide, see link:domains.html#giusi[To Configure a DAS or an Instance
+  for Automatic Restart on Oracle Solaris].
+link:reference-manual/create-system-properties.html#GSRFM00059[`create-system-properties`]::
+  Creates or updates system properties. Supported in remote mode only.
+  For procedural information in this guide, see
+  link:general-administration.html#ggonc[To Create System Properties].
+link:reference-manual/delete-module-config.html#GSRFM854[`delete-module-config`]::
+  Removes the configuration of a module from `domain.xml`.
+link:reference-manual/delete-system-property.html#GSRFM00110[`delete-system-property`]::
+  Deletes system properties of a domain or configuration, or server
+  instance. Supported in remote mode only. For procedural information in
+  this guide, see link:general-administration.html#ggomm[To Delete a
+  System Property].
+link:reference-manual/get.html#GSRFM00139[`get`]::
+  Gets an attribute of an element in the `domain.xml` file. With the
+  `-m` option, gets the names and values of the monitorable or
+  configurable attributes. For procedural information in this guide, see
+  link:monitoring.html#ablwh[Guidelines for Using the `list` and `get`
+  Subcommands for Monitoring].
+link:reference-manual/get-active-module-config.html#GSRFM859[`get-active-module-config`]::
+  Displays the current active configuration of a module.
+link:reference-manual/list.html#GSRFM00145[`list`]::
+  Lists the configurable element. On Oracle Solaris, quotes are needed
+  when running subcommands with `*` as the option value or operand. For
+  procedural information in this guide, see
+  link:monitoring.html#ablwh[Guidelines for Using the `list` and `get`
+  Subcommands for Monitoring].
+link:reference-manual/list-commands.html#GSRFM00154[`list-commands`]::
+  Lists all the `asadmin` subcommands, local subcommands first, then
+  remote subcommands. You can specify that only remote subcommands or
+  only local subcommands be displayed. Supported in remote mode only.
+  For procedural information in this guide, see
+  link:general-administration.html#ggoeg[To List Subcommands].
+link:reference-manual/list-containers.html#GSRFM00161[`list-containers`]::
+  Lists application containers and the status of each container.
+  Supported in remote mode only. For procedural information in this
+  guide, see link:general-administration.html#ggocv[To List Containers].
+link:reference-manual/list-jobs.html#GSRFM867[`list-jobs`]::
+  Lists information about subcommands that were started using the
+  `asadmin --detach` option or that contain progress information. For
+  procedural information in this guide, see
+  link:general-administration.html#CACDDHBA[To Run `asadmin` Subcommands
+  in `--detach` Mode].
+link:reference-manual/list-modules.html#GSRFM00185[`list-modules`]::
+  Lists modules that are accessible to the {productName} subsystem.
+  The status of each module is included. Supported in remote mode only.
+  For procedural information in this guide, see
+  link:general-administration.html#ghlgf[To List Modules].
+link:reference-manual/list-system-properties.html#GSRFM00203[`list-system-properties`]::
+  Lists the system properties of a domain or configuration. Supported in
+  remote mode only. For procedural information in this guide, see
+  link:general-administration.html#ggodt[To List System Properties].
+link:reference-manual/list-timers.html#GSRFM00205[`list-timers`]::
+  List the timers owned by a specific server instance. Supported in
+  remote mode only. For procedural information in this guide, see
+  link:general-administration.html#giojd[To List Timers].
+link:reference-manual/multimode.html#GSRFM00213[`multimode`]::
+  Provides an `asadmin>` prompt for running multiple subcommands while
+  preserving options and environment settings. Supported in local mode
+  only. For procedural information, see
+  link:general-administration.html#giobi[Using the `asadmin` Utility].
+link:reference-manual/osgi.html#GSRFM877[`osgi`]::
+  Delegates the command line to the Apache Felix Gogo remote shell for
+  the execution of OSGi shell commands. For procedural information in
+  this guide, see link:overview.html#CJAGIGII[To Run Apache Felix Gogo
+  Remote Shell Commands].
+link:reference-manual/osgi-shell.html#GSRFM890[`osgi-shell`]::
+  Provides interactive access to the Apache Felix Gogo remote shell for
+  the execution of OSGi shell commands. For procedural information in
+  this guide, see link:overview.html#CJAGIGII[To Run Apache Felix Gogo
+  Remote Shell Commands].
+link:reference-manual/set.html#GSRFM00226[`set`]::
+  Sets the values of one or more configurable attributes. For procedural
+  information in this guide, see link:monitoring.html#ablvp[Configuring
+  Monitoring].
+link:reference-manual/setup-local-dcom.html#GSRFM893[`setup-local-dcom`]::
+  Sets up the Distributed Component Object Model (DCOM) remote protocol
+  on the host where the subcommand is run. The DCOM remote protocol is
+  available only on Windows systems.
+link:reference-manual/show-component-status.html#GSRFM00232[`show-component-status`]::
+  Lists the status of existing components. Supported in remote mode
+  only. For procedural information in this guide, see
+  link:general-administration.html#giyjd[To Show Component Status].
+link:reference-manual/start-database.html#GSRFM00234[`start-database`]::
+  Starts the Apache Derby database server. Use this subcommand only for
+  working with applications deployed to the {productName}. For
+  procedural information in this guide, see link:jdbc.html#ggndz[To Start
+  the Database].
+link:reference-manual/stop-database.html#GSRFM00239[`stop-database`]::
+  Stops a process of the Apache Derby DB database server. For procedural
+  information in this guide, see link:jdbc.html#ggnbw[To Stop the
+  Database].
+link:reference-manual/version.html#GSRFM00261[`version`]::
+  Displays the version information for the option specified in archive
+  or folder format. Supported in remote mode only. For procedural
+  information in this guide, see
+  link:general-administration.html#ghhox[To Display the {productName}
+  Version].
+
+[[CHDJGEEG]][[GSADG1155]][[batch-jobs-subcommands]]
+
+=== Batch Jobs Subcommands
+
+link:reference-manual/list-batch-jobs.html#GSRFM861[`list-batch-jobs`]::
+  Lists batch jobs and job details. For procedural information in this
+  guide, see link:batch.html#BABIBFDJ[To List Batch Jobs].
+link:reference-manual/list-batch-job-executions.html#GSRFM884[`list-batch-job-executions`]::
+  Lists batch job executions and execution details. For procedural
+  information in this guide, see link:batch.html#BABFBGJB[To List Batch
+  Job Executions].
+link:reference-manual/list-batch-job-steps.html#GSRFM895[`list-batch-job-steps`]::
+  Lists steps for a specific batch job execution. For procedural
+  information in this guide, see link:batch.html#BABGJIDD[To List Batch
+  Job Steps].
+link:reference-manual/list-batch-runtime-configuration.html#GSRFM863[`list-batch-runtime-configuration`]::
+  Displays the configuration of the batch runtime. For procedural
+  information in this guide, see link:batch.html#BABBGHCJ[To List the
+  Batch Runtime Configuration].
+link:reference-manual/set-batch-runtime-configuration.html#GSRFM897[`set-batch-runtime-configuration`]::
+  Configures the batch runtime. For procedural information in this
+  guide, see link:batch.html#BABFEJAD[To Configure the Batch Runtime].
+
+[[CHDECJFC]][[GSADG1156]][[concurrent-resources-subcommands]]
+
+=== Concurrent Resources Subcommands
+
+link:reference-manual/create-context-service.html#GSRFM838[`create-context-service`]::
+  Creates a context service resource. For procedural information in this
+  guide, see link:concurrent.html#DAFJACDI[To Create a Context Service].
+link:reference-manual/create-managed-executor-service.html#GSRFM840[`create-managed-executor-service`]::
+  Creates a managed executor service resource. For procedural
+  information in this guide, see link:concurrent.html#DAFJIEGA[To Create
+  a Managed Executor Service].
+link:reference-manual/create-managed-scheduled-executo.html#GSRFM680[`create-managed-scheduled-executor-service`]::
+  Creates a managed scheduled executor service resource. For procedural
+  information in this guide, see link:concurrent.html#DAFFGDGG[To Create
+  a Managed Scheduled Executor Service].
+link:reference-manual/create-managed-thread-factory.html#GSRFM842[`create-managed-thread-factory`]::
+  Creates a managed thread factory resource. For procedural information
+  in this guide, see link:concurrent.html#DAFGFAEI[To Create a Managed
+  Thread Factory].
+link:reference-manual/create-context-service.html#GSRFM838[`list-context-services`]::
+  Lists context service resources. For procedural information in this
+  guide, see link:concurrent.html#DAFDCFCB[To List Context Services].
+link:reference-manual/create-managed-executor-service.html#GSRFM840[`list-managed-executor-services`]::
+  Lists managed executor service resources. For procedural information
+  in this guide, see link:concurrent.html#DAFIJDAE[To List Managed
+  Executor Services].
+link:reference-manual/create-managed-scheduled-executo.html#GSRFM680[`list-managed-scheduled-executor-services`]::
+  Lists managed scheduled executor service resources. For procedural
+  information in this guide, see link:concurrent.html#DAFJBADD[To List
+  Managed Scheduled Executor Services].
+link:reference-manual/create-managed-thread-factory.html#GSRFM842[`list-managed-thread-factories`]::
+  Lists managed thread factory resources. For procedural information in
+  this guide, see link:concurrent.html#DAFDGEGE[To List Managed Thread
+  Factories].
+link:reference-manual/delete-context-service.html#GSRFM846[`delete-context-service`]::
+  Removes a context service resource. For procedural information in this
+  guide, see link:concurrent.html#DAFGGGEC[To Delete a Context Service].
+link:reference-manual/delete-managed-executor-service.html#GSRFM848[`delete-managed-executor-service`]::
+  Removes a managed executor service resource. For procedural
+  information in this guide, see link:concurrent.html#DAFDAGAD[To Delete
+  a Managed Executor Service].
+link:reference-manual/delete-managed-scheduled-executo.html#GSRFM850[`delete-managed-scheduled-executor-service`]::
+  Removes a managed scheduled executor service resource. For procedural
+  information in this guide, see link:concurrent.html#DAFEBEGC[To Delete
+  a Managed Scheduled Executor Service].
+link:reference-manual/delete-managed-thread-factory.html#GSRFM852[`delete-managed-thread-factory`]::
+  Removes a managed thread factory resource. For procedural information
+  in this guide, see link:concurrent.html#DAFCEDEI[To Delete a Managed
+  Thread Factory].
+
+[[giowb]][[GSADG00611]][[connectivity-subcommands]]
+
+=== Connectivity Subcommands
+
+link:reference-manual/create-admin-object.html#GSRFM00012[`create-admin-object`]::
+  Creates an administered object. For procedural information in this
+  guide, see link:connectors.html#giolr[To Create an Administered
+  Object].
+link:reference-manual/create-connector-connection-pool.html#GSRFM00018[`create-connector-connection-pool`]::
+  Adds a new connector connection pool with the specified connection
+  pool name. For procedural information in this guide, see
+  link:connectors.html#gioce[To Create a Connector Connection Pool].
+link:reference-manual/create-connector-resource.html#GSRFM00019[`create-connector-resource`]::
+  Creates a connector resource. For procedural information in this
+  guide, see link:connectors.html#giogt[To Create a Connector Resource].
+link:reference-manual/create-connector-security-map.html#GSRFM00020[`create-connector-security-map`]::
+  Creates a connector security map for the specified connector
+  connection pool. For procedural information, see
+  link:connectors.html#gitzz[To Create a Connector Security Map].
+link:reference-manual/create-connector-work-security-m.html#GSRFM00021[`create-connector-work-security-map`]::
+  Creates a connector work security map for the specified resource
+  adapter. Supported in remote mode only. For procedural information in
+  this guide, see link:connectors.html#giofz[To Create a Connector Work
+  Security Map].
+link:reference-manual/create-jdbc-resource.html#GSRFM00037[`create-jdbc-resource`]::
+  Creates a new JDBC resource. Supported in remote mode only. For
+  procedural information in this guide, see link:jdbc.html#ggnda[To
+  Create a JDBC Resource].
+link:reference-manual/create-jdbc-connection-pool.html#GSRFM00036[`create-jdbc-connection-pool`]::
+  Registers a new JDBC connection pool with the specified JDBC
+  connection pool name. Supported in remote mode only. For procedural
+  information in this guide, see link:jdbc.html#ggnfv[To Create a JDBC
+  Connection Pool].
+link:reference-manual/create-resource-adapter-config.html#GSRFM00054[`create-resource-adapter-config`]::
+  Creates configuration information for the connector module. Supported
+  in remote mode only. For procedural information in this guide, see
+  link:connectors.html#gioqx[To Create Configuration Information for a
+  Resource Adapter].
+link:reference-manual/delete-admin-object.html#GSRFM00063[`delete-admin-object`]::
+  Deletes an administered object. For procedural information in this
+  guide, see link:connectors.html#gioma[To Delete an Administered
+  Object].
+link:reference-manual/delete-connector-connection-pool.html#GSRFM00070[`delete-connector-connection-pool`]::
+  Removes the connector connection pool specified using the
+  `connector_connection_pool_name` operand. For procedural information
+  in this guide, see link:connectors.html#giocp[To Delete a Connector
+  Connection Pool].
+link:reference-manual/delete-connector-resource.html#GSRFM00071[`delete-connector-resource`]::
+  Deletes connector resource. For procedural information in this guide,
+  see link:connectors.html#giofs[To Delete a Connector Resource].
+link:reference-manual/delete-connector-security-map.html#GSRFM00072[`delete-connector-security-map`]::
+  Deletes a specified connector security map. Supported in remote mode
+  only. For procedural information in this guide, see
+  link:connectors.html#gitvf[To Delete a Connector Security Map].
+link:reference-manual/delete-connector-work-security-m.html#GSRFM00073[`delete-connector-work-security-map`]::
+  Deletes a specified connector work security map. Supported in remote
+  mode only. For procedural information in this guide, see
+  link:connectors.html#gioin[To Delete a Connector Work Security Map].
+link:reference-manual/delete-jdbc-connection-pool.html#GSRFM00088[`delete-jdbc-connection-pool`]::
+  Deletes the specified JDBC connection pool. Supported in remote mode
+  only. For procedural information in this guide, see
+  link:jdbc.html#ggngb[To Delete a JDBC Connection Pool].
+link:reference-manual/delete-jdbc-resource.html#GSRFM00089[`delete-jdbc-resource`]::
+  Deletes a JDBC resource. The specified JNDI name identifies the
+  resource to be deleted. Supported in remote mode only. For procedural
+  information in this guide, see link:jdbc.html#ggnhz[To Delete a JDBC
+  Resource].
+link:reference-manual/delete-resource-adapter-config.html#GSRFM00106[`delete-resource-adapter-config`]::
+  Deletes configuration information for the connector module. Supported
+  in remote mode only. For procedural information in this guide, see
+  link:connectors.html#gionv[To Delete a Resource Adapter Configuration].
+link:reference-manual/flush-connection-pool.html#GSRFM00135[`flush-connection-pool`]::
+  Reintializes all connections established in the specified connection.
+  For procedural information in this guide, see link:jdbc.html#gjiqp[To
+  Reset (Flush) a Connection Pool].
+link:reference-manual/list-admin-objects.html#GSRFM00146[`list-admin-objects`]::
+  Lists administered objects. For procedural information in this guide,
+  see link:connectors.html#giokm[To List Administered Objects].
+link:reference-manual/list-connector-connection-pools.html#GSRFM00157[`list-connector-connection-pools`]::
+  Lists the connector connection pools that have been created. For
+  procedural information in this guide, see link:connectors.html#giocg[To
+  List Connector Connection Pools].
+link:reference-manual/list-connector-resources.html#GSRFM00158[`list-connector-resources`]::
+  Creates connector resources. For procedural information in this guide,
+  see link:connectors.html#giohs[To List Connector Resources].
+link:reference-manual/list-connector-security-maps.html#GSRFM00159[`list-connector-security-maps`]::
+  Lists the connector security maps belonging to a specified connector
+  connection pool. For procedural information in this guide, see
+  link:connectors.html#gitwx[To List Connector Security Maps].
+link:reference-manual/list-connector-work-security-map.html#GSRFM00160[`list-connector-work-security-maps`]::
+  Lists the existing connector work security maps for a resource
+  adapter. Supported in remote mode only. For procedural information in
+  this guide, see link:connectors.html#gioir[To List Connector Work
+  Security Maps].
+link:reference-manual/list-jdbc-connection-pools.html#GSRFM00173[`list-jdbc-connection-pools`]::
+  Lists the existing JDBC connection pools. Supported in remote mode
+  only. For procedural information in this guide, see
+  link:jdbc.html#ggnby[To List JDBC Connection Pools].
+link:reference-manual/list-jdbc-resources.html#GSRFM00174[`list-jdbc-resources`]::
+  Lists the existing JDBC resources. Supported in remote mode only. For
+  procedural information in this guide, see link:jdbc.html#ggnhl[To List
+  JDBC Resources].
+link:reference-manual/list-resource-adapter-configs.html#GSRFM00196[`list-resource-adapter-configs`]::
+  Lists configuration information for the connector modules. Supported
+  in remote mode only. For procedural information in this guide, see
+  link:connectors.html#giorn[To List Resource Adapter Configurations].
+link:reference-manual/ping-connection-pool.html#GSRFM00214[`ping-connection-pool`]::
+  Tests if a JDBC connection pool is usable. Supported in remote mode
+  only. For procedural information in this guide, see
+  link:jdbc.html#ggnwn[To Contact (Ping) a Connection Pool].
+link:reference-manual/update-connector-security-map.html#GSRFM00252[`update-connector-security-map`]::
+  Modifies a security map for the specified connector connection pool.
+  For procedural information in this guide, see
+  link:connectors.html#gityj[To Update a Connector Security Map].
+link:reference-manual/update-connector-work-security-m.html#GSRFM00253[`update-connector-work-security-map`]::
+  Modifies a work security map that belongs to a specific resource
+  adapter (connector module). For procedure information in this guide,
+  see link:connectors.html#giogm[To Update a Connector Work Security
+  Map].
+
+[[gitwu]][[GSADG00612]][[domain-subcommands]]
+
+=== Domain Subcommands
+
+link:reference-manual/backup-domain.html#GSRFM00003[`backup-domain`]::
+  Describes how to back up a domain. Supported in local mode only. For
+  procedural information in this guide, see link:domains.html#ggocq[To
+  Back Up a Domain].
+link:reference-manual/create-domain.html#GSRFM00023[`create-domain`]::
+  Creates the configuration of a domain. A domain can exist independent
+  of other domains. Any user who has access to the `asadmin` utility on
+  a given host can create a domain and store its configuration in a
+  location of choice. For procedural information in this guide, see
+  link:domains.html#ggoei[To Create a Domain].
+link:reference-manual/delete-domain.html#GSRFM00075[`delete-domain`]::
+  Deletes the specified domain. The domain must be stopped before it can
+  be deleted. For procedural information in this guide, see
+  link:domains.html#ggofa[To Delete a Domain].
+link:reference-manual/list-backups.html#GSRFM00152[`list-backups`]::
+  Lists the existing domain backups. Supported in local mode only. For
+  procedural information in this guide, see link:domains.html#ghgod[To
+  List Domain Backups].
+link:reference-manual/list-domains.html#GSRFM00163[`list-domains`]::
+  Lists the existing domains and their statuses. If the domain directory
+  is not specified, the domains in the domain-root-dir, the default for
+  which is as-install``/domains``, are displayed. For procedural
+  information in this guide, see link:domains.html#ggoco[To List
+  Domains].
+link:reference-manual/login.html#GSRFM00210[`login`]::
+  Allows you to log in to a domain. For procedural information in this
+  guide, see link:domains.html#ghhjz[To Log In to a Domain].
+link:reference-manual/restart-domain.html#GSRFM00218[`restart-domain`]::
+  Restarts the Domain Administration Server (DAS) of the specified
+  domain. Supported in remote mode only. For procedural information in
+  this guide, see link:domains.html#ginqj[To Restart a Domain].
+link:reference-manual/restore-domain.html#GSRFM00221[`restore-domain`]::
+  Recovers and domain from a backup file. Supported in local mode only.
+  For procedural information in this guide, see
+  link:domains.html#ggody[To Restore a Domain].
+link:reference-manual/start-domain.html#GSRFM00235[`start-domain`]::
+  Starts a domain. If the domain directory is not specified, the default
+  `domain1` in the default domain-root-dir directory is started. If
+  there are two or more domains, the domain_name operand must be
+  specified. For procedural information in this guide, see
+  link:domains.html#ggoda[To Start a Domain].
+link:reference-manual/stop-domain.html#GSRFM00240[`stop-domain`]::
+  Stops the domain administration server (DAS) of the specified domain.
+  Supported in remote mode only. For procedural information in this
+  guide, see link:domains.html#ggoch[To Stop a Domain].
+link:reference-manual/uptime.html#GSRFM00258[`uptime`]::
+  Displays the length of time that the domain administration server
+  (DAS) has been running since the last restart. Supported in remote
+  mode only. For procedural information in this guide, see
+  link:domains.html#ghhnt[To Display Domain Uptime].
+
+[[ggltm]][[GSADG00613]][[internet-connectivity-subcommands]]
+
+=== Internet Connectivity Subcommands
+
+link:reference-manual/create-http.html#GSRFM00025[`create-http`]::
+  Creates a set of HTTP parameters for a protocol, which in turn
+  configures one or more network listeners. Supported in remote mode
+  only. For procedural information in this guide, see
+  link:http_https.html#gjhqc[To Create an HTTP Configuration].
+link:reference-manual/create-http-listener.html#GSRFM00030[`create-http-listener`]::
+  Creates a new HTTP listener socket. Supported in remote mode only. For
+  procedural information in this guide, see link:http_https.html#ggnfh[To
+  Create an Internet Connection].
+link:reference-manual/create-network-listener.html#GSRFM00046[`create-network-listener`]::
+  Creates a new HTTP listener socket. Supported in remote mode only. For
+  procedural information in this guide, see link:http_https.html#ggnfh[To
+  Create an Internet Connection].
+link:reference-manual/create-protocol.html#GSRFM00051[`create-protocol`]::
+  Creates a protocol for a listener. Supported in remote mode only. For
+  procedural information in this guide, see link:http_https.html#gjhot[To
+  Create a Protocol].
+link:reference-manual/create-transport.html#GSRFM00061[`create-transport`]::
+  Creates a transport for a listener. Supported in remote mode only. For
+  procedural information in this guide, see link:http_https.html#gjhps[To
+  Create a Transport].
+link:reference-manual/create-virtual-server.html#GSRFM00062[`create-virtual-server`]::
+  Creates the specified virtual server element. Supported in remote mode
+  only. For procedural information in this guide, see
+  link:http_https.html#ggnfr[To Create a Virtual Server].
+link:reference-manual/create-ssl.html#GSRFM00058[`create-ssl`]::
+  Creates and configures the SSL element in the selected HTTP listener
+  to enable secure communication on that listener/service. Supported in
+  remote mode only. For procedural information in this guide, see
+  link:http_https.html#ggnbj[To Configure an HTTP Listener for SSL].
+link:reference-manual/delete-http.html#GSRFM00077[`delete-http`]::
+  Deletes an existing HTTP configuration. Supported in remote mode only.
+  For procedural information in this guide, see
+  link:http_https.html#gjhqa[To Delete an HTTP Configuration].
+link:reference-manual/delete-http-listener.html#GSRFM00082[`delete-http-listener`]::
+  Deletes the specified HTTP listener. Supported in remote mode only.
+  For procedural information in this guide, see
+  link:http_https.html#ggndu[To Delete an HTTP Network Listener].
+link:reference-manual/delete-network-listener.html#GSRFM00098[`delete-network-listener`]::
+  Deletes the specified HTTP listener. Supported in remote mode only.
+  For procedural information in this guide, see
+  link:http_https.html#ggndu[To Delete an HTTP Network Listener].
+link:reference-manual/delete-protocol.html#GSRFM00103[`delete-protocol`]::
+  Deletes and existing HTTP protocol. Supported in remote mode only. For
+  procedural information in this guide, see link:http_https.html#gjhnx[To
+  Delete a Protocol].
+link:reference-manual/delete-ssl.html#GSRFM00109[`delete-ssl`]::
+  Deletes the SSL element in the selected HTTP listener. Supported in
+  remote mode only. For procedural information in this guide, see
+  link:http_https.html#ggncl[To Delete SSL From an HTTP Listener].
+link:reference-manual/delete-transport.html#GSRFM00112[`delete-transport`]::
+  Deletes and existing HTTP transport. Supported in remote mode only.
+  For procedural information in this guide, see
+  link:http_https.html#gjhqp[To Delete a Transport].
+link:reference-manual/delete-virtual-server.html#GSRFM00113[`delete-virtual-server`]::
+  Deletes the specified virtual server element. Supported in remote mode
+  only. For procedural information in this guide, see
+  link:http_https.html#ggnen[To Delete a Virtual Server].
+link:reference-manual/list-http-listeners.html#GSRFM00168[`list-http-listeners`]::
+  Lists the existing HTTP listeners. Supported in remote mode only. For
+  procedural information in this guide, see link:http_https.html#ggnbv[To
+  List HTTP Network Listeners].
+link:reference-manual/list-network-listeners.html#GSRFM00186[`list-network-listeners`]::
+  Lists the existing HTTP listeners. Supported in remote mode only. For
+  procedural information in this guide, see link:http_https.html#ggnbv[To
+  List HTTP Network Listeners].
+link:reference-manual/list-protocols.html#GSRFM00195[`list-protocols`]::
+  Lists the existing HTTP protocols. Supported in remote mode only. For
+  procedural information in this guide, see link:http_https.html#gjhna[To
+  List Protocols].
+link:reference-manual/list-transports.html#GSRFM00206[`list-transports`]::
+  Lists the existing HTTP transports. Supported in remote mode only. For
+  procedural information in this guide, see link:http_https.html#gjhmx[To
+  List Transports].
+link:reference-manual/list-virtual-servers.html#GSRFM00207[`list-virtual-servers`]::
+  Lists the existing virtual servers. Supported in remote mode only. For
+  procedural information in this guide, see link:http_https.html#ggndw[To
+  List Virtual Servers].
+
+[[ggltf]][[GSADG00614]][[javamail-subcommands]]
+
+=== JavaMail Subcommands
+
+link:reference-manual/create-javamail-resource.html#GSRFM00035[`create-javamail-resource`]::
+  Creates a JavaMail session resource. Supported in remote mode only.
+  For procedural information in this guide, see
+  link:javamail.html#giowd[To Create a JavaMail Resource].
+link:reference-manual/delete-javamail-resource.html#GSRFM00087[`delete-javamail-resource`]::
+  Deletes a JavaMail session resource. Supported in remote mode only.
+  For procedural information in this guide, see
+  link:javamail.html#gioxj[To Delete a JavaMail Resource].
+link:reference-manual/list-javamail-resources.html#GSRFM00172[`list-javamail-resources`]::
+  Creates JavaMail session resources. Supported in remote mode only. For
+  procedural information in this guide, see link:javamail.html#giowq[To
+  List JavaMail Resources].
+
+[[gipen]][[GSADG00615]][[jms-subcommands]]
+
+=== JMS Subcommands
+
+link:reference-manual/create-jmsdest.html#GSRFM00038[`create-jmsdest`]::
+  Creates a JMS physical destination. Along with the physical
+  destination, you use the `create-jms-resource` subcommand to create a
+  JMS destination resource that has a `Name` property that specifies the
+  physical destination. Supported in remote mode only. For procedural
+  information in this guide, see link:jms.html#gioue[To Create a JMS
+  Physical Destination].
+link:reference-manual/create-jms-host.html#GSRFM00039[`create-jms-host`]::
+  Creates a JMS host within the JMS service. Supported in remote mode
+  only. For procedural information in this guide, see
+  link:jms.html#gipbh[To Create a JMS Host].
+link:reference-manual/create-jms-resource.html#GSRFM00040[`create-jms-resource`]::
+  Creates a JMS connection factory resource or JMS destination resource.
+  Supported in remote mode only. Supported in remote mode only. For
+  procedural information in this guide, see link:jms.html#giotd[To Create
+  a Connection Factory or Destination Resource].
+link:reference-manual/delete-jmsdest.html#GSRFM00090[`delete-jmsdest`]::
+  Removes the specified JMS destination. Supported in remote mode only.
+  For procedural information in this guide, see link:jms.html#giouv[To
+  Delete a JMS Physical Destination].
+link:reference-manual/delete-jms-host.html#GSRFM00091[`delete-jms-host`]::
+  Deletes a JMS host within the JMS service. Supported in remote mode
+  only. For procedural information in this guide, see
+  link:jms.html#gipbv[To Delete a JMS Host].
+link:reference-manual/delete-jms-resource.html#GSRFM00092[`delete-jms-resource`]::
+  Deletes a JMS connection factory resource or JMS destination resource.
+  Supported in remote mode only. For procedural information in this
+  guide, see link:jms.html#giouw[To Delete a Connection Factory or
+  Destination Resource].
+link:reference-manual/flush-jmsdest.html#GSRFM00136[`flush-jmsdest`]::
+  Purges the messages from a physical destination in the specified JMS
+  Service configuration of the specified target. Supported in remote
+  mode only. For procedural information in this guide, see
+  link:jms.html#giowx[To Purge Messages From a Physical Destination].
+link:reference-manual/jms-ping.html#GSRFM00144[`jms-ping`]::
+  Checks if the JMS service (also known as the JMS provider) is up and
+  running. Supported in remote mode only. For procedural information in
+  this guide, see link:jms.html#gipnh[Troubleshooting the JMS Service].
+link:reference-manual/list-jmsdest.html#GSRFM00175[`list-jmsdest`]::
+  Lists the JMS physical destinations. Supported in remote mode only.
+  For procedural information in this guide, see link:jms.html#gioyp[To
+  List JMS Physical Destinations].
+link:reference-manual/list-jms-hosts.html#GSRFM00176[`list-jms-hosts`]::
+  Lists the existing JMS hosts. Supported in remote mode only. For
+  procedural information in this guide, see link:jms.html#gipbz[To List
+  JMS Hosts].
+link:reference-manual/list-jms-resources.html#GSRFM00177[`list-jms-resources`]::
+  Lists the existing JMS connection factory or destination resources.
+  Supported in remote mode only. For procedural information in this
+  guide, see link:jms.html#giosx[To List JMS Resources].
+
+[[gitws]][[GSADG00616]][[jndi-subcommands]]
+
+=== JNDI Subcommands
+
+link:reference-manual/create-custom-resource.html#GSRFM00022[`create-custom-resource`]::
+  Creates a custom JNDI resource. Supported in remote mode only. For
+  procedural information in this guide, see link:jndi.html#giowe[To
+  Create a Custom JNDI Resource].
+link:reference-manual/create-jndi-resource.html#GSRFM00041[`create-jndi-resource`]::
+  Creates an external JNDI resource. Supported in remote mode only. For
+  procedural information in this guide, see link:jndi.html#gitxn[To
+  Register an External JNDI Resource].
+link:reference-manual/delete-custom-resource.html#GSRFM00074[`delete-custom-resource`]::
+  Deletes a custom JNDI resource. Supported in remote mode only. For
+  procedural information in this guide, see link:jndi.html#gioxl[To
+  Delete a Custom JNDI Resource].
+link:reference-manual/delete-jndi-resource.html#GSRFM00093[`delete-jndi-resource`]::
+  Deletes an external JNDI resource. Supported in remote mode only. For
+  procedural information in this guide, see link:jndi.html#gitvt[To
+  Delete an External JNDI Resource].
+link:reference-manual/list-custom-resources.html#GSRFM00162[`list-custom-resources`]::
+  Lists the existing custom JNDI resources. Supported in remote mode
+  only. For procedural information in this guide, see
+  link:jndi.html#gioxb[To List Custom JNDI Resources].
+link:reference-manual/list-jndi-entries.html#GSRFM00178[`list-jndi-entries`]::
+  Lists the entries in the JNDI tree. Supported in remote mode only. For
+  procedural information in this guide, see link:jndi.html#gitwc[To List
+  External JNDI Entries],
+link:reference-manual/list-jndi-resources.html#GSRFM00179[`list-jndi-resources`]::
+  Lists the existing external JNDI resources. Supported in remote mode
+  only. For procedural information in this guide, see
+  link:jndi.html#gitvj[To List External JNDI Resources].
+
+[[gglsk]][[GSADG00617]][[jvm-subcommands]]
+
+=== JVM Subcommands
+
+link:reference-manual/create-jvm-options.html#GSRFM00042[`create-jvm-options`]::
+  Creates a JVM option in the Java configuration or profiler elements of
+  the `domain.xml` file. Supported in remote mode only. For procedural
+  information in this guide, see link:jvm.html#ggnes[To Create JVM
+  Options].
+link:reference-manual/create-profiler.html#GSRFM00050[`create-profiler`]::
+  Creates a profiler element. Supported in remote mode only. For
+  procedural information in this guide, see link:jvm.html#ggneb[To Create
+  a Profiler].
+link:reference-manual/delete-jvm-options.html#GSRFM00094[`delete-jvm-options`]::
+  Deletes the specified JVM option from the Java configuration or
+  profiler elements of the `domain.xml` file. Supported in remote mode
+  only. For procedural information in this guide, see
+  link:jvm.html#ggnfi[To Delete JVM Options].
+link:reference-manual/delete-profiler.html#GSRFM00102[`delete-profiler`]::
+  Deletes the specified profiler element. Supported in remote mode only.
+  For procedural information in this guide, see link:jvm.html#ggnem[To
+  Delete a Profiler].
+link:reference-manual/generate-jvm-report.html#GSRFM00138[`generate-jvm-report`]::
+  Generates a report showing the threads, classes, and memory for the
+  virtual machine that runs {productName}. For procedural information
+  in this guide, see link:jvm.html#ggnbu[To Generate a JVM Report].
+link:reference-manual/list-jvm-options.html#GSRFM00180[`list-jvm-options`]::
+  Lists the command-line options that are passed to the Java application
+  launcher when {productName} is started. Supported in remote mode
+  only. For procedural information in this guide, see
+  link:jvm.html#ggnce[To List JVM Options].
+
+[[giuzl]][[GSADG00618]][[life-cycle-module-subcommands]]
+
+=== Life Cycle Module Subcommands
+
+link:reference-manual/create-lifecycle-module.html#GSRFM00043[`create-lifecycle-module`]::
+  Creates a new life cycle module. Supported in remote mode only. For
+  procedural information in this guide, see
+  link:lifecycle-modules.html#giuus[To Create a Life Cycle Module].
+link:reference-manual/list-lifecycle-modules.html#GSRFM00181[`list-lifecycle-modules`]::
+  Lists life cycle modules. Supported in remote mode only. For
+  procedural information in this guide, see
+  link:lifecycle-modules.html#giuvh[To List Life Cycle Modules].
+link:reference-manual/delete-lifecycle-module.html#GSRFM00095[`delete-lifecycle-module`]::
+  Deletes an existing life cycle module. Supported in remote mode only.
+  For procedural information in this guide, see
+  link:lifecycle-modules.html#giuux[To Delete a Life Cycle Module].
+
+[[gitxd]][[GSADG00619]][[logging-and-monitoring-subcommands]]
+
+=== Logging and Monitoring Subcommands
+
+link:reference-manual/collect-log-files.html#GSRFM00007[`collect-log-files`]::
+  Collects all available log files and creates a ZIP archive. Supported
+  in remote mode only. For procedural information in this guide, see
+  link:logging.html#gklbi[To Collect Log Files into a ZIP Archive].
+link:reference-manual/disable-monitoring.html#GSRFM00120[`disable-monitoring`]::
+  Disables the monitoring service. Supported in remote mode only. For
+  procedural information in this guide, see link:monitoring.html#gglcu[To
+  Disable Monitoring].
+link:reference-manual/enable-monitoring.html#GSRFM00128[`enable-monitoring`]::
+  Enables the monitoring service. Supported in remote mode only. For
+  procedural information in this guide, see link:monitoring.html#ablvr[To
+  Enable Monitoring].
+link:reference-manual/list-log-attributes.html#GSRFM00182[`list-log-attributes`]::
+  Lists log file attributes. Supported in remote mode only. For
+  procedural information in this guide, see
+  link:logging.html#gklmn[Configuring the Logging Service].
+link:reference-manual/list-log-levels.html#GSRFM00183[`list-log-levels`]::
+  Lists the existing loggers. Supported in remote mode only. For
+  procedural information in this guide, see link:logging.html#gjirr[To
+  List Log Levels].
+link:reference-manual/list-loggers.html#GSRFM869[`list-loggers`]::
+  Lists all public loggers in your distribution of {productName}. Internal loggers are not listed. For procedural
+  information in this guide, see link:logging.html#CEGGICGF[To List
+  Loggers].
+link:reference-manual/monitor.html#GSRFM00212[`monitor`]::
+  Displays monitoring information for the common {productName}
+  resources. Supported in remote mode only. For procedural information
+  in this guide, see link:monitoring.html#gelol[To View Common Monitoring
+  Data].
+link:reference-manual/rotate-log.html#GSRFM00224[`rotate-log`]::
+  Rotates the `server.log` file and stores the old data in a
+  time-stamped file. Supported in remote mode only. For procedural
+  information in this guide, see link:logging.html#gkmau[To Rotate Log
+  Files Manually].
+link:reference-manual/set-log-attributes.html#GSRFM00227[`set-log-attributes`]::
+  Sets log file attributes. Supported in remote mode only. For
+  procedural information in this guide, see
+  link:logging.html#gklmn[Configuring the Logging Service].
+link:reference-manual/set-log-file-format.html#GSRFM879[`set-log-file-format`]::
+  Sets the formatter used to format log records in log files. For
+  procedural information in this guide, see
+  link:logging.html#CEGDJEBG[Setting the Log File Format].
+link:reference-manual/set-log-levels.html#GSRFM00228[`set-log-levels`]::
+  Sets the log level for a module. Supported in remote mode only. For
+  procedural information in this guide, see
+  link:logging.html#gklml[Setting Log Levels].
+
+[[giusq]][[GSADG00620]][[orb-subcommands]]
+
+=== ORB Subcommands
+
+link:reference-manual/create-iiop-listener.html#GSRFM00032[`create-iiop-listener`]::
+  Creates an IIOP listener. Supported in remote mode only. For
+  procedural information in this guide, see link:orb.html#gioyo[To Create
+  an IIOP Listener].
+link:reference-manual/delete-iiop-listener.html#GSRFM00084[`delete-iiop-listener`]::
+  Deletes an IIOP listener. Supported in remote mode only. For
+  procedural information in this guide, see link:orb.html#giowj[To Delete
+  an IIOP Listener].
+link:reference-manual/list-iiop-listeners.html#GSRFM00169[`list-iiop-listeners`]::
+  Lists the existing IIOP listeners. Supported in remote mode only. For
+  procedural information in this guide, see link:orb.html#giowc[To List
+  IIOP Listeners].
+
+[[giuqr]][[GSADG00621]][[thread-pool-subcommands]]
+
+=== Thread Pool Subcommands
+
+link:reference-manual/create-threadpool.html#GSRFM00060[`create-threadpool`]::
+  Creates a new thread pool. Supported in remote mode only. For
+  procedural information in this guide, see
+  link:threadpools.html#ggkwj[To Create a Thread Pool].
+link:reference-manual/delete-threadpool.html#GSRFM00111[`delete-threadpool`]::
+  Deletes the specified thread pool. Supported in remote mode only. For
+  procedural information in this guide, see
+  link:threadpools.html#ggkwy[To Delete a Thread Pool].
+link:reference-manual/list-threadpools.html#GSRFM00204[`list-threadpools`]::
+  Lists the existing thread pools. Supported in remote mode only. For
+  procedural information in this guide, see
+  link:threadpools.html#giuff[To List Thread Pools].
+
+[[gitxi]][[GSADG00622]][[transaction-service-subcommands]]
+
+=== Transaction Service Subcommands
+
+link:reference-manual/freeze-transaction-service.html#GSRFM00137[`freeze-transaction-service`]::
+  Freezes the transaction subsystem during which time all the in-flight
+  transactions are suspended. Supported in remote mode only. For
+  procedural information, see link:transactions.html#giufn[To Stop the
+  Transaction Service].
+link:reference-manual/recover-transactions.html#GSRFM00216[`recover-transactions`]::
+  Manually recovers pending transactions. Supported in remote mode only.
+  For procedural information, see link:transactions.html#giuhe[To
+  Manually Recover Transactions].
+link:reference-manual/rollback-transaction.html#GSRFM00223[`rollback-transaction`]::
+  Rolls back the named transaction. Supported in remote mode only. For
+  procedural information, see link:transactions.html#giugk[To Roll Back a
+  Transaction].
+link:reference-manual/unfreeze-transaction-service.html#GSRFM00245[`unfreeze-transaction-service`]::
+  Resumes all the suspended in-flight transactions. Invoke this
+  subcommand on an already frozen transaction. Supported in remote mode
+  only. For procedural information, see link:transactions.html#giuet[To
+  Restart the Transaction Service].
+
+
diff --git a/docs/administration-guide/src/main/asciidoc/batch.adoc b/docs/administration-guide/src/main/asciidoc/batch.adoc
new file mode 100644
index 0000000..30c719f
--- /dev/null
+++ b/docs/administration-guide/src/main/asciidoc/batch.adoc
@@ -0,0 +1,313 @@
+type=page
+status=published
+title=Administering Batch Jobs
+next=part-res-and-svcs-admin.html
+prev=lifecycle-modules.html
+~~~~~~
+
+= Administering Batch Jobs
+
+[[GSADG1077]][[sthref66]]
+
+
+[[administering-batch-jobs]]
+== 10 Administering Batch Jobs
+
+This chapter provides procedures for administering batch jobs in the
+{productName} environment by using the `asadmin` command-line
+utility.
+
+The following topics are addressed here:
+
+* link:#BABCHGJJ[About Batch Jobs]
+* link:#BABIHIGA[Viewing Batch Jobs]
+* link:#BABBFFIG[Configuring the Batch Runtime]
+
+Instructions for accomplishing these tasks by using the Administration
+Console are contained in the Administration Console online help.
+
+[[BABCHGJJ]][[GSADG1078]][[about-batch-jobs]]
+
+=== About Batch Jobs
+
+{productName} provides a batch runtime for the scheduling and
+execution of batch jobs. Batch jobs are typically long-running,
+bulk-oriented tasks that contain a series of steps and can be executed
+without user interaction. Examples include billing, report generation,
+data format conversion, and image processing.
+
+Batch applications submit jobs to the batch runtime and provide
+instructions about how and when to execute the steps. The batch runtime
+processes the steps as directed by job XML documents packaged with the
+applications and stores information about jobs in a job repository. In
+{productName}, the job repository is a database
+
+For detailed information about batch jobs, batch processing, and the
+batch processing framework, see
+https://eclipse-ee4j.github.io/jakartaee-tutorial/#batch-processing[Batch Processing]
+in The Jakarta EE Tutorial. Also see
+http://jcp.org/en/jsr/detail?id=352[Java Specification Request 352:
+Batch Applications for the Java Platform]
+(`http://jcp.org/en/jsr/detail?id=352`). The specification defines the
+programming model for batch applications and the runtime for scheduling
+and executing batch jobs.
+
+[[BABIHIGA]][[GSADG1079]][[viewing-batch-jobs]]
+
+=== Viewing Batch Jobs
+
+You can view detailed information about batch jobs, executions, and
+steps. Users who log in to the `asadmin` utility or to the
+Administration Console as administrator are the only users who can view
+details for all batch jobs submitted by all applications in the
+{productName} environment.
+
+The following tasks are used to view information about batch jobs:
+
+* link:#BABIBFDJ[To List Batch Jobs]
+* link:#BABFBGJB[To List Batch Job Executions]
+* link:#BABGJIDD[To List Batch Job Steps]
+
+[[BABIBFDJ]][[GSADG1080]][[to-list-batch-jobs]]
+
+==== To List Batch Jobs
+
+Use the `list-batch-jobs` subcommand in remote mode to list batch jobs
+and job details.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List batch jobs by using the link:reference-manual/list-jdbc-resources.html#GSRFM00174[`list-batch-jobs`]
+subcommand.
+
+[[GSADG1081]][[sthref67]]
+Example 10-1 Listing Batch Jobs
+
+This example lists batch jobs for the default server instance, `server`.
+Use `list-batch-jobs -l` to list additional details.
+
+[source]
+----
+asadmin> list-batch-jobs
+JOBNAME  INSTANCECOUNT
+payroll  9
+bonus    6
+Command list-batch-jobs executed successfully.
+----
+
+[[GSADG1082]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-batch-jobs` at the command line.
+
+[[BABFBGJB]][[GSADG1083]][[to-list-batch-job-executions]]
+
+==== To List Batch Job Executions
+
+When the batch runtime executes a job, the execution is given a unique
+execution ID. An execution ID is similar to a process ID. A new
+execution is created the first time a job is started and every time the
+existing execution is restarted.
+
+Use the `list-batch-job-executions` subcommand in remote mode to list
+batch job executions and execution details.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List batch job executions by using the
+link:reference-manual/list-jdbc-resources.html#GSRFM00174[`list-batch-job-executions`] subcommand.
+
+[[GSADG1084]][[sthref68]]
+Example 10-2 Listing Batch Job Executions
+
+This example lists batch job executions for the default server instance,
+`server`, and displays specific details. Use
+`list-batch-job-executions -l` to list additional details.
+
+[source]
+----
+asadmin> list-batch-job-executions -o=jobname,executionid,batchstatus,exitstatus
+JOBNAME  EXECUTIONID  BATCHSTATUS  EXITSTATUS
+payroll  9            COMPLETED    COMPLETED
+bonus    6            FAILED       FAILED
+Command list-batch-job-executions executed successfully.
+----
+
+[[GSADG1085]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-batch-job-executions` at the command line.
+
+[[BABGJIDD]][[GSADG1086]][[to-list-batch-job-steps]]
+
+==== To List Batch Job Steps
+
+A batch job consists of one or more steps. A step is an independent and
+sequential phase of a batch job.
+
+Use the `list-batch-job-steps` subcommand in remote mode to list steps
+and step details for a specific batch job execution.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the execution ID of an execution by using the
+`list-batch-job-executions` subcommand.
+3. List steps for a specific batch job execution by using the
+link:reference-manual/list-jdbc-resources.html#GSRFM00174[`list-batch-job-steps`] subcommand.
+
+[[GSADG1087]][[sthref69]]
+Example 10-3 Listing Batch Job Steps
+
+This example lists batch job steps and specific step details for a job
+execution with the execution ID of `7`. The target is the default server
+instance, `server`. Use `list-batch-job-steps -l` to list additional
+details.
+
+Some lines of output are omitted from this example for readability.
+
+[source]
+----
+asadmin> list-batch-job-steps o=stepname,stepid,batchstatus,stepmetrics 7
+STEPNAME   STEPID   BATCHSTATUS   STEPMETRICS
+prepare    7        COMPLETED     METRICNAME          VALUE
+                                  READ_COUNT          8
+                                  WRITE_COUNT         8
+                                  PROCESS_SKIP_COUNT  0
+process    8        COMPLETED     METRICNAME          VALUE
+                                  READ_COUNT          8
+                                  WRITE_COUNT         8
+                                  PROCESS_SKIP_COUNT  0
+...
+Command list-batch-job-steps executed successfully.
+----
+
+[[GSADG1088]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-batch-job-steps` at the command line.
+
+[[BABBFFIG]][[GSADG1089]][[configuring-the-batch-runtime]]
+
+=== Configuring the Batch Runtime
+
+The batch runtime uses a data source and a managed executor service to
+execute batch jobs. The data source stores information about current and
+past jobs, and the managed executor service provides threads to jobs.
+Batch runtime configuration data is stored in the `config` element in
+`domain.xml`.
+
+{productName} provides a default data source and managed executor
+service for the execution of batch jobs. For the domain administration
+server (DAS), the default data source is `jdbc/__TimerPool` and the
+default managed executor service is
+`concurrent/__defaultManagedExecutorService`. If you create a standalone
+server instance or a standalone cluster, the default data source is
+`jdbc/__default`. You can configure the batch runtime to use different
+resources.
+
+For more information about data sources, see
+link:jdbc.html#ablih[Administering Database Connectivity]. For more
+information about managed executor services, see
+link:concurrent.html#DAFBHEDI[Configuring Managed Executor Services].
+
+The following tasks are used to view and configure the batch runtime:
+
+* link:#BABBGHCJ[To List the Batch Runtime Configuration]
+* link:#BABFEJAD[To Configure the Batch Runtime]
+
+[[BABBGHCJ]][[GSADG1090]][[to-list-the-batch-runtime-configuration]]
+
+==== To List the Batch Runtime Configuration
+
+Use the `list-batch-runtime-configuration` subcommand in remote mode to
+display the configuration of the batch runtime.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Display the configuration of the batch runtime by using the
+link:reference-manual/list-jdbc-resources.html#GSRFM00174[`list-batch-runtime-configuration`] subcommand.
+3. If desired, use the `get` subcommand to view the attributes of the
+data source and managed executor service resources.
++
+For example (output omitted):
++
+[source]
+----
+asdmin> get resources.jdbc-resource.jdbc/__TimerPool.*
+...
+asdmin> get resources.managed-executor-service.concurrent/__defaultManagedExecutorService.*
+...
+----
+
+[[GSADG1091]][[sthref70]]
+Example 10-4 Listing the Batch Runtime Configuration
+
+This example lists the configuration of the batch runtime for the
+default server instance, `server`.
+
+[source]
+----
+asadmin> list-batch-runtime-configuration
+DATASOURCELOOKUPNAME     EXECUTORSERVICELOOKUPNAME
+jdbc/__TimerPool         concurrent/__defaultManagedExecutorService
+Command list-batch-runtime-configuration executed successfully.
+----
+
+[[GSADG1092]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-batch-runtime-configuration` at the command
+line.
+
+[[BABFEJAD]][[GSADG1093]][[to-configure-the-batch-runtime]]
+
+==== To Configure the Batch Runtime
+
+Use the `set-batch-runtime-configuration` subcommand in remote mode to
+configure the batch runtime.
+
+
+[NOTE]
+====
+Do not change the data source after the first batch job has been
+submitted to the batch runtime for execution. If the data source must be
+changed, stop and restart the domain and then make the change before any
+jobs are started or restarted. However, once the data source has been
+changed, information stored in the previous data source becomes
+inaccessible.
+
+The managed executor service can be changed after a batch job has been
+submitted to the batch runtime without affecting execution of the job.
+====
+
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Configure the batch runtime by using the
+link:reference-manual/list-jdbc-resources.html#GSRFM00174[`set-batch-runtime-configuration`] subcommand.
+
+[[GSADG1094]][[sthref71]]
+Example 10-5 Configuring the Batch Runtime
+
+This example configures the batch runtime for the default server
+instance, `server`, to use an existing managed executor service named
+`concurrent/Executor1`.
+
+[source]
+----
+asadmin> set-batch-runtime-configuration --executorservicelookupname concurrent/Executor1
+Command set-batch-runtime-configuration executed successfully.
+----
+
+[[GSADG1095]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help set-batch-runtime-configuration` at the command
+line.
+
+
diff --git a/docs/administration-guide/src/main/asciidoc/concurrent.adoc b/docs/administration-guide/src/main/asciidoc/concurrent.adoc
new file mode 100644
index 0000000..bfff5cd
--- /dev/null
+++ b/docs/administration-guide/src/main/asciidoc/concurrent.adoc
@@ -0,0 +1,790 @@
+type=page
+status=published
+title=Administering Concurrent Resources
+next=orb.html
+prev=http_https.html
+~~~~~~
+
+= Administering Concurrent Resources
+
+[[GSADG1108]][[sthref73]]
+
+
+[[administering-concurrent-resources]]
+== 14 Administering Concurrent Resources
+
+This chapter provides procedures for administering concurrent resources
+in the {productName} environment by using the `asadmin` command-line
+utility.
+
+The following topics are addressed here:
+
+* link:#DAFGCCDI[About Concurrent Resources]
+* link:#DAFFGDCD[Default Concurrent Resources]
+* link:#DAFFCEEA[Configuring Context Services]
+* link:#DAFBAAIJ[Configuring Managed Thread Factories]
+* link:#DAFBHEDI[Configuring Managed Executor Services]
+* link:#DAFHJHCF[Configuring Managed Scheduled Executor Services]
+
+Instructions for accomplishing these tasks by using the Administration
+Console are contained in the Administration Console online help.
+
+[[DAFGCCDI]][[GSADG1109]][[about-concurrent-resources]]
+
+=== About Concurrent Resources
+
+Concurrent resources are managed objects that provide concurrency
+capabilities to Jakarta EE applications. In {productName}, you configure
+concurrent resources and make them available for use by application
+components such as servlets and EJBs. Concurrent resources are accessed
+through JNDI lookup or resource injection.
+
+Concurrent resources are resources of the following types:
+
+* Context services. See link:#DAFFCEEA[Configuring Context Services].
+* Managed thread factories. See link:#DAFBAAIJ[Configuring Managed
+Thread Factories].
+* Managed executor services. See link:#DAFBHEDI[Configuring Managed
+Executor Services].
+* Managed scheduled executor services. See link:#DAFHJHCF[Configuring
+Managed Scheduled Executor Services].
+
+For detailed information about concurrent resources, see
+https://eclipse-ee4j.github.io/jakartaee-tutorial/#jakarta-concurrency-2[Concurrency Utilities]
+in The Jakarta EE Tutorial. Also see
+http://jcp.org/en/jsr/detail?id=236[
+Java Specification Request 236: Concurrency Utilities for Jakarta EE].
+
+[[DAFFGDCD]][[GSADG1110]][[default-concurrent-resources]]
+
+=== Default Concurrent Resources
+
+When you create a concurrent resource, you specify a unique JNDI name
+for the resource. Applications use this name to access the resource.
+
+The Jakarta EE standard specifies that certain default resources be made
+available to applications, and defines specific JNDI names for these
+default resources. {productName} makes these names available through
+the use of logical JNDI names, which map Jakarta EE standard JNDI names to
+specific {productName} resources. For concurrent resources, the
+mappings are as follows:
+
+java:comp/DefaultContextService::
+  This Jakarta EE standard name is mapped to the
+  `concurrent/__defaultContextService` resource.
+java:comp/DefaultManagedThreadFactory::
+  This Jakarta EE standard name is mapped to the
+  `concurrent/__defaultManagedThreadFactory` resource.
+java:comp/DefaultManagedExecutorService::
+  This Jakarta EE standard name is mapped to the
+  `concurrent/__defaultManagedExecutorService` resource.
+java:comp/DefaultManagedScheduledExecutorService::
+  This Jakarta EE standard name is mapped to the
+  `concurrent/__defaultManagedScheduledExecutorService` resource.
+
+[[DAFFCEEA]][[GSADG1111]][[configuring-context-services]]
+
+=== Configuring Context Services
+
+Context services are used to create dynamic proxy objects that capture
+the context of a container and enable applications to run within that
+context at a later time. The context of the container is propagated to
+the thread executing the task.
+
+The following tasks are used to administer context service resources:
+
+* link:#DAFJACDI[To Create a Context Service]
+* link:#DAFDCFCB[To List Context Services]
+* link:#DAFBFICB[To Update a Context Service]
+* link:#DAFGGGEC[To Delete a Context Service]
+
+[[DAFJACDI]][[GSADG1112]][[to-create-a-context-service]]
+
+==== To Create a Context Service
+
+Use the `create-context-service` subcommand in remote mode to create a
+context service resource.
+
+Because all JNDI names are in the `java:comp/env` subcontext, when
+specifying the JNDI name of a context service, use only the
+`concurrent/`name format. For example, `concurrent/Context1`.
+
+For more information about the default context service resource included
+with {productName}, see link:#DAFFGDCD[Default Concurrent Resources].
+
+
+[NOTE]
+====
+Creating a context service resource is a dynamic event and typically
+does not require server restart. Applications can use a resource as soon
+as it is created. However, if an application tried to use a resource
+before it was created, and that resource is created later, the
+application or the server must be restarted. Otherwise, the application
+will not be able to locate the resource.
+====
+
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Create a context service by using the
+link:reference-manual/create-jdbc-resource.html#GSRFM00037[`create-context-service`] subcommand.
+3. If necessary, notify users that the new resource has been created.
+
+[[GSADG1113]][[sthref74]]
+Example 14-1 Creating a Context Service
+
+This example creates a context service resource named
+`concurrent/Context1`.
+
+[source]
+----
+asadmin> create-context-service concurrent/Context1
+Context service concurrent/Context1 created successfully.
+Command create-context-service executed successfully.
+----
+
+[[GSADG1114]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-context-service` at the command line.
+
+[[DAFDCFCB]][[GSADG1115]][[to-list-context-services]]
+
+==== To List Context Services
+
+Use the `list-context-services` subcommand in remote mode to list the
+existing context service resources.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List context service resources by using the
+link:reference-manual/list-jdbc-resources.html#GSRFM00174[`list-context-services`] subcommand.
+
+[[GSADG1116]][[sthref75]]
+Example 14-2 Listing Context Services
+
+This example lists context service resources on the default server
+instance, `server`.
+
+[source]
+----
+asadmin> list-context-services
+concurrent/__defaultContextService
+concurrent/Context1
+concurrent/Context2
+Command list-context-services executed successfully.
+----
+
+[[GSADG1117]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-context-services` at the command line.
+
+[[DAFBFICB]][[GSADG1118]][[to-update-a-context-service]]
+
+==== To Update a Context Service
+
+You can change all of the settings for an existing context service
+resource except its JNDI name. Use the `get` and `set` subcommands to
+view and change the values of the context service attributes.
+
+
+[NOTE]
+====
+When a resource is updated, the existing resource is shut down and
+recreated. If an application used the resource prior to the update, the
+application or the server must be restarted.
+====
+
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the context service resources by using the
+link:reference-manual/list-jdbc-connection-pools.html#GSRFM00173[`list-context-services`] subcommand.
+3. View the attributes of a specific context service by using the `get` subcommand.
+For example:
++
+[source]
+----
+asadmin> get resources.context-service.concurrent/Context1.*
+----
+4. Set an attribute of the context service by using the `set` subcommand.
+For example:
++
+[source]
+----
+asadmin> set resources.context-service.concurrent/Context1.deployment-order=120
+----
+
+[[DAFGGGEC]][[GSADG1119]][[to-delete-a-context-service]]
+
+==== To Delete a Context Service
+
+Use the `delete-context-service` subcommand in remote mode to delete an
+existing context service. Deleting a context service is a dynamic event
+and does not require server restart.
+
+Before deleting a context service resource, all associations to the
+resource must be removed.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the context service resources by using the
+link:reference-manual/list-jdbc-connection-pools.html#GSRFM00173[`list-context-services`] subcommand.
+3. If necessary, notify users that the context service is being deleted.
+4. Delete the context service by using the
+link:reference-manual/delete-jdbc-connection-pool.html#GSRFM00088[`delete-context-service`] subcommand.
+
+[[GSADG1120]][[sthref76]]
+Example 14-3 Deleting a Context Service
+
+This example deletes the context service resource named
+`concurrent/Context1`.
+
+[source]
+----
+asadmin> delete-context-service concurrent/Context1
+Context service concurrent/Context1 deleted successfully.
+Command delete-context-service executed successfully.
+----
+
+[[GSADG1121]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-context-service` at the command line.
+
+[[DAFBAAIJ]][[GSADG1122]][[configuring-managed-thread-factories]]
+
+=== Configuring Managed Thread Factories
+
+Managed thread factories are used by applications to create managed
+threads on demand. The threads are started and managed by the container.
+The context of the container is propagated to the thread executing the
+task.
+
+The following tasks are used to administer managed thread factory
+resources:
+
+* link:#DAFGFAEI[To Create a Managed Thread Factory]
+* link:#DAFDGEGE[To List Managed Thread Factories]
+* link:#DAFDIJIH[To Update a Managed Thread Factory]
+* link:#DAFCEDEI[To Delete a Managed Thread Factory]
+
+[[DAFGFAEI]][[GSADG1123]][[to-create-a-managed-thread-factory]]
+
+==== To Create a Managed Thread Factory
+
+Use the `create-managed-thread-factory` subcommand in remote mode to
+create a managed thread factory resource.
+
+Because all JNDI names are in the `java:comp/env` subcontext, when
+specifying the JNDI name of a managed thread factory, use only the
+``concurrent/``name format. For example, `concurrent/Factory1`.
+
+For more information about the default managed thread factory resource
+included with {productName}, see link:#DAFFGDCD[Default Concurrent Resources].
+
+[NOTE]
+====
+Creating a managed thread factory resource is a dynamic event and
+typically does not require server restart. Applications can use a
+resource as soon as it is created. However, if an application tried to
+use a resource before it was created, and that resource is created
+later, the application or the server must be restarted. Otherwise, the
+application will not be able to locate the resource.
+====
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Create a managed thread factory by using the
+link:reference-manual/create-jdbc-resource.html#GSRFM00037[`create-managed-thread-factory`] subcommand.
+3. If necessary, notify users that the new resource has been created.
+
+[[GSADG1124]][[sthref77]]
+Example 14-4 Creating a Managed Thread Factory
+
+This example creates a managed thread factory resource named
+`concurrent/Factory1`.
+
+[source]
+----
+asadmin> create-managed-thread-factory concurrent/Factory1
+Managed thread factory concurrent/Factory1 created successfully.
+Command create-managed-thread-factory executed successfully.
+----
+
+[[GSADG1125]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-managed-thread-factory` at the command line.
+
+[[DAFDGEGE]][[GSADG1126]][[to-list-managed-thread-factories]]
+
+==== To List Managed Thread Factories
+
+Use the `list-managed-thread-factories` subcommand in remote mode to
+list the existing managed thread factory resources.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List managed thread factory resources by using the
+link:reference-manual/list-jdbc-resources.html#GSRFM00174[`list-managed-thread-factories`] subcommand.
+
+[[GSADG1127]][[sthref78]]
+Example 14-5 Listing Managed Thread Factories
+
+This example lists managed thread factory resources on the default
+server instance, `server`.
+
+[source]
+----
+asadmin> list-managed-thread-factories
+concurrent/__defaultManagedThreadFactory
+concurrent/Factory1
+concurrent/Factory2
+Command list-managed-thread-factories executed successfully.
+----
+
+[[GSADG1128]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-managed-thread-factories` at the command line.
+
+[[DAFDIJIH]][[GSADG1129]][[to-update-a-managed-thread-factory]]
+
+==== To Update a Managed Thread Factory
+
+You can change all of the settings for an existing managed thread
+factory resource except its JNDI name. Use the `get` and `set`
+subcommands to view and change the values of the managed thread factory
+attributes.
+
+
+[NOTE]
+====
+When a resource is updated, the existing resource is shut down and
+recreated. If applications used the resource prior to the update, the
+application or the server must be restarted.
+====
+
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the managed thread factory resources by using the
+link:reference-manual/list-jdbc-connection-pools.html#GSRFM00173[`list-managed-thread-factories`] subcommand.
+3. View the attributes of a managed thread factory by using the `get` subcommand.
+For example:
++
+[source]
+----
+asadmin> get resources.managed-thread-factory.concurrent/Factory1.*
+----
+4. Set an attribute of the managed thread factory by using the `set` subcommand.
+For example:
++
+[source]
+----
+asadmin> set resources.managed-thread-factory.concurrent/Factory1.deployment-order=120
+----
+
+[[DAFCEDEI]][[GSADG1130]][[to-delete-a-managed-thread-factory]]
+
+==== To Delete a Managed Thread Factory
+
+Use the `delete-managed-thread-factory` subcommand in remote mode to
+delete an existing managed thread factory. Deleting a managed thread
+factory is a dynamic event and does not require server restart.
+
+Before deleting a managed thread factory resource, all associations to
+the resource must be removed.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the managed thread factory resources by using the
+link:reference-manual/list-jdbc-connection-pools.html#GSRFM00173[`list-managed-thread-factories`] subcommand.
+3. If necessary, notify users that the managed thread factory is being deleted.
+4. Delete the managed thread factory by using the
+link:reference-manual/delete-jdbc-connection-pool.html#GSRFM00088[`delete-managed-thread-factory`] subcommand.
+
+[[GSADG1131]][[sthref79]]
+Example 14-6 Deleting a Managed Thread Factory
+
+This example deletes the managed thread factory resource named
+`concurrent/Factory1`.
+
+[source]
+----
+asadmin> delete-managed-thread-factory concurrent/Factory1
+Managed thread factory concurrent/Factory1 deleted successfully.
+Command delete-managed-thread-factory executed successfully.
+----
+
+[[GSADG1132]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-managed-thread-factory` at the command line.
+
+[[DAFBHEDI]][[GSADG1133]][[configuring-managed-executor-services]]
+
+=== Configuring Managed Executor Services
+
+Managed executor services are used by applications to execute submitted
+tasks asynchronously. Tasks are executed on threads that are started and
+managed by the container. The context of the container is propagated to
+the thread executing the task.
+
+The following tasks are used to administer managed executor service
+resources:
+
+* link:#DAFJIEGA[To Create a Managed Executor Service]
+* link:#DAFIJDAE[To List Managed Executor Services]
+* link:#DAFICEJF[To Update a Managed Executor Service]
+* link:#DAFDAGAD[To Delete a Managed Executor Service]
+
+[[DAFJIEGA]][[GSADG1134]][[to-create-a-managed-executor-service]]
+
+==== To Create a Managed Executor Service
+
+Use the `create-managed-executor-service` subcommand in remote mode to
+create a managed executor service resource.
+
+Because all JNDI names are in the `java:comp/env` subcontext, when
+specifying the JNDI name of a managed executor service, use only the
+`concurrent/`name format. For example, `concurrent/Executor1`.
+
+For more information about the default managed executor service resource
+included with {productName}, see link:#DAFFGDCD[Default Concurrent
+Resources].
+
+
+[NOTE]
+====
+Creating a managed executor service resource is a dynamic event and
+typically does not require server restart. Applications can use a
+resource as soon as it is created. However, if an application tried to
+use a resource before it was created, and that resource is created
+later, the application or the server must be restarted. Otherwise, the
+application will not be able to locate the resource.
+====
+
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Create a managed executor service by using the
+link:reference-manual/create-jdbc-resource.html#GSRFM00037[`create-managed-executor-service`] subcommand.
+3. If necessary, notify users that the new resource has been created.
+
+[[GSADG1135]][[sthref80]]
+Example 14-7 Creating a Managed Executor Service
+
+This example creates a managed executor service resource named
+`concurrent/Executor1`.
+
+[source]
+----
+asadmin> create-managed-executor-service concurrent/Executor1
+Managed executor service concurrent/Executor1 created successfully.
+Command create-managed-executor-service executed successfully.
+----
+
+[[GSADG1136]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-managed-executor-service` at the command
+line.
+
+[[DAFIJDAE]][[GSADG1137]][[to-list-managed-executor-services]]
+
+==== To List Managed Executor Services
+
+Use the `list-managed-executor-services` subcommand in remote mode to
+list the existing managed executor service resources.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List managed executor service resources by using the
+link:reference-manual/list-jdbc-resources.html#GSRFM00174[`list-managed-executor-services`] subcommand.
+
+[[GSADG1138]][[sthref81]]
+Example 14-8 Listing Managed Executor Services
+
+This example lists managed executor service resources on the default
+server instance, `server`.
+
+[source]
+----
+asadmin> list-managed-executor-services
+concurrent/__defaultManagedExecutorService
+concurrent/Executor1
+concurrent/Executor2
+Command list-managed-executor-services executed successfully.
+----
+
+[[GSADG1139]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-managed-executor-services` at the command
+line.
+
+[[DAFICEJF]][[GSADG1140]][[to-update-a-managed-executor-service]]
+
+==== To Update a Managed Executor Service
+
+You can change all of the settings for an existing managed executor
+service resource except its JNDI name. Use the `get` and `set`
+subcommands to view and change the values of the managed executor
+service attributes.
+
+
+[NOTE]
+====
+When a resource is updated, the existing resource is shut down and
+recreated. If applications used the resource prior to the update, the
+application or the server must be restarted.
+====
+
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the managed executor service resources by using the
+link:reference-manual/list-jdbc-connection-pools.html#GSRFM00173[`list-managed-executor-services`] subcommand.
+3. View the attributes of a managed executor service by using the `get` subcommand.
+For example:
++
+[source]
+----
+asadmin> get resources.managed-executor-service.concurrent/Executor1.*
+----
+4. Set an attribute of the managed executor service by using the `set`
+subcommand. For example:
++
+[source]
+----
+asadmin> set resources.managed-executor-service.concurrent/Executor1.deployment-order=120
+----
+
+[[DAFDAGAD]][[GSADG1141]][[to-delete-a-managed-executor-service]]
+
+==== To Delete a Managed Executor Service
+
+Use the `delete-managed-executor-service` subcommand in remote mode to
+delete an existing managed executor service. Deleting a managed executor
+service is a dynamic event and does not require server restart.
+
+Before deleting a managed executor service resource, all associations to
+the resource must be removed.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the managed executor service resources by using the
+link:reference-manual/list-jdbc-connection-pools.html#GSRFM00173[`list-managed-executor-services`] subcommand.
+3. If necessary, notify users that the managed executor service is being deleted.
+4. Delete the managed executor service by using the
+link:reference-manual/delete-jdbc-connection-pool.html#GSRFM00088[`delete-managed-executor-service`] subcommand.
+
+[[GSADG1142]][[sthref82]]
+Example 14-9 Deleting a Managed Executor Service
+
+This example deletes the managed executor service resource named
+`concurrent/Executor1`.
+
+[source]
+----
+asadmin> delete-managed-executor-service concurrent/Executor1
+Managed executor service concurrent/Executor1 deleted successfully.
+Command delete-managed-executor-service executed successfully.
+----
+
+[[GSADG1143]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-managed-executor-service` at the command
+line.
+
+[[DAFHJHCF]][[GSADG1144]][[configuring-managed-scheduled-executor-services]]
+
+=== Configuring Managed Scheduled Executor Services
+
+Managed scheduled executor services are used by applications to execute
+submitted tasks asynchronously at specific times. Tasks are executed on
+threads that are started and managed by the container. The context of
+the container is propagated to the thread executing the task.
+
+The following tasks are used to administer managed scheduled executor
+service resources:
+
+* link:#DAFFGDGG[To Create a Managed Scheduled Executor Service]
+* link:#DAFJBADD[To List Managed Scheduled Executor Services]
+* link:#DAFGEBEI[To Update a Managed Scheduled Executor Service]
+* link:#DAFEBEGC[To Delete a Managed Scheduled Executor Service]
+
+[[DAFFGDGG]][[GSADG1145]][[to-create-a-managed-scheduled-executor-service]]
+
+==== To Create a Managed Scheduled Executor Service
+
+Use the `create-managed-scheduled-executor-service` subcommand in remote
+mode to create a managed scheduled executor service resource.
+
+Because all JNDI names are in the `java:comp/env` subcontext, when
+specifying the JNDI name of a managed scheduled executor service, use
+only the `concurrent/`name format. For example,
+`concurrent/ScheduledExecutor1`.
+
+For more information about the default managed scheduled executor
+service resource included with {productName}, see
+link:#DAFFGDCD[Default Concurrent Resources].
+
+
+[NOTE]
+====
+Creating a managed scheduled executor service resource is a dynamic
+event and typically does not require server restart. Applications can
+use a resource as soon as it is created. However, if an application
+tried to use a resource before it was created, and that resource is
+created later, the application or the server must be restarted.
+Otherwise, the application will not be able to locate the resource.
+====
+
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Create a managed scheduled executor service by using the
+link:reference-manual/create-jdbc-resource.html#GSRFM00037[`create-managed-scheduled-executor-service`] subcommand.
+3. If necessary, notify users that the new resource has been created.
+
+[[GSADG1146]][[sthref83]]
+Example 14-10 Creating a Managed Scheduled Executor Service
+
+This example creates a managed scheduled executor service resource named
+`concurrent/ScheduledExecutor1`.
+
+[source]
+----
+asadmin> create-managed-scheduled-executor-service concurrent/ScheduledExecutor1
+Managed scheduled executor service concurrent/ScheduledExecutor1 created successfully.
+Command create-managed-scheduled-executor-service executed successfully.
+----
+
+[[GSADG1147]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-managed-scheduled-executor-service` at the
+command line.
+
+[[DAFJBADD]][[GSADG1148]][[to-list-managed-scheduled-executor-services]]
+
+==== To List Managed Scheduled Executor Services
+
+Use the `list-managed-scheduled-executor-services` subcommand in remote
+mode to list the existing managed scheduled executor service resources.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List managed scheduled executor service resources by using the
+link:reference-manual/list-jdbc-resources.html#GSRFM00174[`list-managed-scheduled-executor-services`] subcommand.
+
+[[GSADG1149]][[sthref84]]
+Example 14-11 Listing Managed Scheduled Executor Services
+
+This example lists managed scheduled executor service resources on the
+default server instance, `server`.
+
+[source]
+----
+asadmin> list-managed-scheduled-executor-services
+concurrent/__defaultManagedScheduledExecutorService
+concurrent/ScheduledExecutor1
+concurrent/ScheduledExecutor2
+Command list-managed-scheduled-executor-services executed successfully.
+----
+
+[[GSADG1150]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-managed-scheduled-executor-services` at the
+command line.
+
+[[DAFGEBEI]][[GSADG1151]][[to-update-a-managed-scheduled-executor-service]]
+
+==== To Update a Managed Scheduled Executor Service
+
+You can change all of the settings for an existing managed scheduled
+executor service resource except its JNDI name. Use the `get` and `set`
+subcommands to view and change the values of the managed scheduled
+executor service attributes.
+
+[NOTE]
+====
+When a resource is updated, the existing resource is shut down and
+recreated. If applications used the resource prior to the update, the
+application or the server must be restarted.
+====
+
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the managed scheduled executor service resources by using the
+link:reference-manual/list-jdbc-connection-pools.html#GSRFM00173[`list-managed-scheduled-executor-services`] subcommand.
+3. View the attributes of a managed scheduled executor service by using the `get` subcommand.
+For example:
++
+[source]
+----
+asadmin> get resources.managed-scheduled-executor-service.concurrent/ScheduledExecutor1.*
+----
+4. Set an attribute of the managed scheduled executor service by using
+the `set` subcommand. For example:
++
+[source]
+----
+asadmin> set resources.managed-scheduled-executor-service.concurrent/ScheduledExecutor1.deployment-order=120
+----
+
+[[DAFEBEGC]][[GSADG1152]][[to-delete-a-managed-scheduled-executor-service]]
+
+==== To Delete a Managed Scheduled Executor Service
+
+Use the `delete-managed-scheduled-executor-service` subcommand in remote
+mode to delete an existing managed scheduled executor service. Deleting
+a managed scheduled executor service is a dynamic event and does not
+require server restart.
+
+Before deleting a managed scheduled executor service resource, all
+associations to the resource must be removed.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the managed scheduled executor service resources by using the
+link:reference-manual/list-jdbc-connection-pools.html#GSRFM00173[`list-managed-scheduled-executor-service`] subcommand.
+3. If necessary, notify users that the managed scheduled executor service is being deleted.
+4. Delete the managed scheduled executor service by using the
+link:reference-manual/delete-jdbc-connection-pool.html#GSRFM00088[`delete-managed-scheduled-executor-service`] subcommand.
+
+[[GSADG1153]][[sthref85]]
+Example 14-12 Deleting a Managed Scheduled Executor Service
+
+This example deletes the managed scheduled executor service resource
+named `concurrent/ScheduledExecutor1`.
+
+[source]
+----
+asadmin> delete-managed-scheduled-executor-service concurrent/ScheduledExecutor1
+Managed scheduled executor service concurrent/ScheduledExecutor1 deleted successfully.
+Command delete-managed-scheduled-executor-service executed successfully.
+----
+
+[[GSADG1154]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-managed-scheduled-executor-service` at the
+command line.
+
+
diff --git a/docs/administration-guide/src/main/asciidoc/connectors.adoc b/docs/administration-guide/src/main/asciidoc/connectors.adoc
new file mode 100644
index 0000000..d796eb2
--- /dev/null
+++ b/docs/administration-guide/src/main/asciidoc/connectors.adoc
@@ -0,0 +1,1145 @@
+type=page
+status=published
+title=Administering EIS Connectivity
+next=http_https.html
+prev=jdbc.html
+~~~~~~
+
+= Administering EIS Connectivity
+
+[[GSADG00016]][[abllp]]
+
+
+[[administering-eis-connectivity]]
+== 12 Administering EIS Connectivity
+
+This chapter provides information and procedures for administering
+connections to enterprise information system (EIS) data in the {productName} 7 environment by using the `asadmin` command-line utility.
+
+
+[NOTE]
+====
+If you installed the Web Profile, connector modules that use only
+outbound communication features and work-management that does not
+involve inbound communication features are supported. Other connector
+features are supported only in the Full Platform Profile.
+====
+
+
+The following topics are addressed here:
+
+* link:#abllq[About EIS Connectivity]
+* link:#ablls[Administering Connector Connection Pools]
+* link:#abllx[Administering Connector Resources]
+* link:#giope[Administering the Resource Adapter Configuration]
+* link:#gitxy[Administering Connector Security Maps]
+* link:#giohl[Administering Connector Work Security Maps]
+* link:#ablmc[Administering Administered Objects]
+
+Instructions for accomplishing the tasks in this chapter by using the
+Administration Console are contained in the Administration Console
+online help.
+
+For information about database connectivity, see
+link:jdbc.html#ablih[Administering Database Connectivity].
+
+[[abllq]][[GSADG00580]][[about-eis-connectivity]]
+
+=== About EIS Connectivity
+
+Enterprise information system (EIS) refers to any system that holds the
+data of an organization. It can be a mainframe, a messaging system, a
+database system, or an application. Connection resources are used by
+applications and modules to access EIS software.)
+
+The key elements of EIS connectivity are the following:
+
+* Connector Module. A connector module, also called a resource adapter,
+is a Jakarta EE component that enables applications to interact with EIS
+software. A connector module is used by {productName} to implement
+Java Message Service (JMS). Like other Jakarta EE modules, a connector
+module is installed when it is deployed. For instructions on creating a
+connector module, see "link:application-development-guide/connectors.html#GSDVG00013[Developing Connectors]" in
+{productName} Application Development Guide.
+* Connector Connection Pool. A connector connection pool is a group of
+reusable connections for a particular EIS. A connector connection pool
+is created when you specify the connector module that is associated with
+the pool. For administration procedures, see link:#ablls[Administering
+Connector Connection Pools].
+* Connector Resource. A connector resource is a program object that
+provides an application with a connection to an EIS. A connector
+resource is created when you specify its JNDI name and its associated
+connection pool. The JNDI name of a connector resource for an EIS is
+usually in the `java:comp/env/`eis-specific subcontext. For
+administration procedures, see link:#abllx[Administering Connector
+Resources].
+* Connector Module Configuration. A connector module configuration is
+the information that resides in the domain configuration file
+(`domain.xml`) for the particular connector module (resource adapter).
+For administration procedures, see link:#giope[Administering the
+Resource Adapter Configuration].
+* Connector Security Map. A connector security map associates the caller
+identity of the application (principal or user group) to a suitable EIS
+principal or group. For administration procedures, see
+link:#gitxy[Administering Connector Security Maps].
+* Connector Work Security Map. A connector work security map associates
+the caller identity of the work submitted by the connector module
+(resource adapter) EIS principal or EIS user group to a suitable
+principal or user group in the {productName} security domain. For
+administration procedures, see link:#giohl[Administering Connector Work
+Security Maps].
+* Administered Object. An administered object provides specialized
+functionality for an application, such as providing access to a parser
+that is specific to the connector module and its associated EIS. For
+administration procedures, see link:#ablmc[Administering Administered
+Objects].
+
+At runtime, the following sequence occurs when an application connects
+to an EIS:
+
+1. The application gets the connector resource (data source) associated
+with the EIS by making a call through the JNDI API.
++
+Using the JNDI name of the connector resource, the naming and directory
+service locates the resource. Each EIS resource specifies a connector
+connection pool.
+2. Using the connector resource, the application gets an EIS
+connection.
++
+{productName} retrieves a physical connection from the connection
+pool that corresponds to the EIS resource. The pool defines connection
+attributes such as the EIS name, user name, and password.
+3. After the EIS connection is established, the application can read,
+modify, and add data to the EIS.
++
+The application accesses the EIS information by making calls to the JMS
+API.
+4. When the application is finished accessing the EIS, the application
+closes the connection and returns the connection to the connection pool.
+
+[[ablls]][[GSADG00581]][[administering-connector-connection-pools]]
+
+=== Administering Connector Connection Pools
+
+After a connector module has been deployed, you are ready to create a
+connector connection pool for it.
+
+The following topics are addressed here:
+
+* link:#gioce[To Create a Connector Connection Pool]
+* link:#giocg[To List Connector Connection Pools]
+* link:#gjiqz[To Connect to (Ping) or Reset (Flush) a Connector
+Connection Pool]
+* link:#gioti[To Update a Connector Connection Pool]
+* link:#giocp[To Delete a Connector Connection Pool]
+
+[[gioce]][[GSADG00431]][[to-create-a-connector-connection-pool]]
+
+==== To Create a Connector Connection Pool
+
+Use the `create-connector-connection-pool` subcommand in remote mode to
+create a connector connection pool for a deployed connector module. When
+you are building the connector connection pool, certain data specific to
+the EIS will be required. The value in the mandatory
+`--connectiondefintion` option provides the EIS info.
+
+Multiple connector resources can specify a single connection pool.
+
+Creating a connector connection pool is a dynamic event and does not
+require server restart. However, there are some parameters that do
+require server restart. See link:overview.html#ghciy[Configuration
+Changes That Require Restart].
+
+[[GSADG968]]
+
+Before You Begin
+
+Before creating the connector connection pool, the connector must be
+installed.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Create the connector connection pool by using the
+link:reference-manual/create-connector-connection-pool.html#GSRFM00018[`create-connector-connection-pool`] subcommand.
++
+Information about properties for the subcommand is included in this help
+page.
+3. If needed, restart the server.
++
+Some properties require server restart. See
+link:overview.html#ghciy[Configuration Changes That Require Restart]. If
+your server needs to be restarted, see link:domains.html#ginqj[To Restart
+a Domain].
+4. You can verify that a connection pool is usable by using the
+`ping-connection-pool` subcommand.
++
+For instructions, see link:jdbc.html#ggnwn[To Contact (Ping) a Connection
+Pool].
+
+[[GSADG00223]][[giocc]]
+Example 12-1 Creating a Connector Connection Pool
+
+This example creates the new `jms/qConnPool` pool for the
+`jakarta.jms.QueueConnectionFactory` connector module.
+
+[source]
+----
+asadmin> create-connector-connection-pool --steadypoolsize 20 --maxpoolsize 100
+--poolresize 2 --maxwait 60000 --raname jmsra --connectiondefinition
+jakarta.jms.QueueConnectionFactory jms/qConnPool
+
+Command create-connector-connection-pool executed successfully
+----
+
+[[GSADG969]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-connector-connection-pool` at the command
+line.
+
+[[giocg]][[GSADG00432]][[to-list-connector-connection-pools]]
+
+==== To List Connector Connection Pools
+
+Use the `list-connector-connection-pools` subcommand in remote mode to
+list the pools that have been created.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the connector connection pools by using the
+link:reference-manual/list-connector-connection-pools.html#GSRFM00157[`list-connector-connection-pools`] subcommand.
+
+[[GSADG00224]][[giody]]
+Example 12-2 Listing Connector Connection Pools
+
+This example lists the existing connector connection pools.
+
+[source]
+----
+asadmin> list-connector-connection-pools
+jms/qConnPool
+Command list-connector-connection-pools executed successfully
+----
+
+[[GSADG970]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-connector-connection-pools` at the command
+line.
+
+[[gjiqz]][[GSADG00433]][[to-connect-to-ping-or-reset-flush-a-connector-connection-pool]]
+
+==== To Connect to (Ping) or Reset (Flush) a Connector Connection Pool
+
+Use the `ping-connection-pool` or `flush-connection-pool` subcommands in
+remote mode to perform these tasks on a connection pools. See
+link:jdbc.html#ggnwn[To Contact (Ping) a Connection Pool] or
+link:jdbc.html#gjiqp[To Reset (Flush) a Connection Pool] for
+instructions.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Connect to or reset a connector connection pool by using the
+link:reference-manual/flush-connection-pool.html#GSRFM00135[`flush-connection-pool`] subcommand or the
+link:reference-manual/ping-connection-pool.html#GSRFM00214[`ping-connection-pool`] subcommand.
+
+[[gioti]][[GSADG00434]][[to-update-a-connector-connection-pool]]
+
+==== To Update a Connector Connection Pool
+
+Use the `get` and `set` subcommands to view and change the values of the
+connector connection pool properties.
+
+1. List the connector connection pools by using the
+link:reference-manual/list-connector-connection-pools.html#GSRFM00157[`list-connector-connection-pools`] subcommand.
+2. View the properties of the connector connection pool by using the
+link:reference-manual/get.html#GSRFM00139[`get`] subcommand. For example:
++
+[source]
+----
+asadmin> get domain.resources.connector-connection-pool.conectionpoolname.*
+----
+3. Set the property of the connector connection pool by using the
+link:reference-manual/set.html#GSRFM00226[`set`] subcommand.
+For example:
++
+[source]
+----
+asadmin> set domain.resources.connector-connection-pool
+.conectionpoolname.validate-atmost-once-period-in-seconds=3
+----
+4. If needed, restart the server. Some properties require server restart.
+See link:overview.html#ghciy[Configuration Changes That Require Restart].
+If your server needs to be restarted, see link:domains.html#ginqj[To Restart a Domain].
+
+[[giocp]][[GSADG00435]][[to-delete-a-connector-connection-pool]]
+
+==== To Delete a Connector Connection Pool
+
+Use the `delete-connector-connection-pool` subcommand in remote mode to
+remove a connector connection pool.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the connector connection pools by using the
+link:reference-manual/list-connector-connection-pools.html#GSRFM00157[`list-connector-connection-pools`] subcommand.
+3. If necessary, notify users that the connector connection pool is being deleted.
+4. Delete the connector connection pool by using the
+link:reference-manual/delete-connector-connection-pool.html#GSRFM00070[`delete-connector-connection-pool`] subcommand.
+
+[[GSADG00225]][[giohd]]
+Example 12-3 Deleting a Connector Connection Pool
+
+This example deletes the connection pool named `jms/qConnPool`.
+
+[source]
+----
+asadmin> delete-connector-connection-pool --cascade=false jms/qConnPool
+Command delete-connector-connection-pool executed successfully
+----
+
+[[GSADG971]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-connector-connection-pool` at the command
+line.
+
+[[abllx]][[GSADG00582]][[administering-connector-resources]]
+
+=== Administering Connector Resources
+
+A connector resource provides an application or module with the means of
+connecting to an EIS. Typically, you create a connector resource for
+each EIS that is accessed by the applications deployed in the domain.
+
+The following topics are addressed here:
+
+* link:#giogt[To Create a Connector Resource]
+* link:#giohs[To List Connector Resources]
+* link:#giosg[To Update a Connector Resource]
+* link:#giofs[To Delete a Connector Resource]
+
+[[giogt]][[GSADG00436]][[to-create-a-connector-resource]]
+
+==== To Create a Connector Resource
+
+Use the `create-connector-resource` subcommand in remote mode to
+register a new connector resource with its JNDI name.
+
+Creating a connector resource is a dynamic event and does not require
+server restart. However, there are some parameters that do require
+server restart. See link:overview.html#ghciy[Configuration Changes That
+Require Restart].
+
+[[GSADG972]]
+
+Before You Begin
+
+Before creating a connector resource, you must first create a connector
+connection pool. For instructions, see link:#gioce[To Create a Connector
+Connection Pool].
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Create the connector resource by using the
+link:reference-manual/create-connector-resource.html#GSRFM00019[`create-connector-resource`] subcommand.
++
+Information about properties for the subcommand is included in this help
+page.
+3. If needed, restart the server.
++
+Some properties require server restart. See
+link:overview.html#ghciy[Configuration Changes That Require Restart]. If
+your server needs to be restarted, see link:domains.html#ginqj[To Restart
+a Domain].
+
+[[GSADG00226]][[giogn]]
+Example 12-4 Creating a Connector Resource
+
+This example creates a new resource named `jms/qConnFactory` for the
+`jms/qConnPool` connection pool.
+
+[source]
+----
+asadmin> create-connector-resource --poolname jms/qConnPool
+--description "creating sample connector resource" jms/qConnFactory
+Command create-connector-resource executed successfully
+----
+
+[[GSADG973]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-connector-resource` at the command line.
+
+[[giohs]][[GSADG00437]][[to-list-connector-resources]]
+
+==== To List Connector Resources
+
+Use the `list-connector-resources` subcommand in remote mode to list the
+connector resources that have been created.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the connector connection pools by using the
+link:reference-manual/list-connector-resources.html#GSRFM00158[`list-connector-resources`] subcommand.
+
+[[GSADG00227]][[gioia]]
+Example 12-5 Listing Connector Resources
+
+This example lists the existing connector resources.
+
+[source]
+----
+asadmin> list-connector-resources
+jms/qConnFactory
+Command list-connector-resources executed successfully
+----
+
+[[GSADG974]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-connector-resources` at the command line.
+
+[[giosg]][[GSADG00438]][[to-update-a-connector-resource]]
+
+==== To Update a Connector Resource
+
+Use the `get` and `set` subcommands to view and change the values of the
+connector resource properties.
+
+1. List the connector connection pools by using the
+link:reference-manual/list-connector-resources.html#GSRFM00158[`list-connector-resources`] subcommand.
+2. View the properties of the connector resource by using the
+link:reference-manual/get.html#GSRFM00139[`get`] subcommand.
+For example
++
+[source]
+----
+asadmin> get domain.resources.connector-resource.jms/qConnFactory
+----
+3. Set the property of the connector resource by using the
+link:reference-manual/set.html#GSRFM00226[`set`] subcommand.
+For example:
++
+[source]
+----
+asadmin> set domain.resources.connector-resource.jms/qConnFactory.enabled=true
+----
+4. If needed, restart the server. Some properties require server restart.
+See link:overview.html#ghciy[Configuration Changes That Require Restart].
+If your server needs to be restarted, see link:domains.html#ginqj[To Restart a Domain].
+
+[[giofs]][[GSADG00439]][[to-delete-a-connector-resource]]
+
+==== To Delete a Connector Resource
+
+Use the `delete-connector-resource` subcommand in remote mode to remove
+a connector resource by specifying the JNDI name.
+
+[[GSADG975]]
+
+Before You Begin
+
+Before deleting a resource, all associations with the resource must be removed.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the connector connection pools by using the
+link:reference-manual/list-connector-resources.html#GSRFM00158[`list-connector-resources`] subcommand.
+3. If necessary, notify users that the connector resource is being deleted.
+4. Delete the connector resource by using the
+link:reference-manual/delete-connector-resource.html#GSRFM00071[`delete-connector-resource`] subcommand.
+
+[[GSADG00228]][[giokh]]
+Example 12-6 Deleting a Connector Resource
+
+This example deletes the `jms/qConnFactory` connector resource.
+
+[source]
+----
+asadmin> delete-connector-resource jms/qConnFactory
+Command delete-connector-resources executed successfully
+----
+
+[[GSADG976]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-connector-resource` at the command line.
+
+[[giope]][[GSADG00583]][[administering-the-resource-adapter-configuration]]
+
+=== Administering the Resource Adapter Configuration
+
+The following topics are addressed here:
+
+* link:#gioqx[To Create Configuration Information for a Resource
+Adapter]
+* link:#giorn[To List Resource Adapter Configurations]
+* link:#gioum[To Update a Resource Adapter Configuration]
+* link:#gionv[To Delete a Resource Adapter Configuration]
+
+[[gioqx]][[GSADG00440]][[to-create-configuration-information-for-a-resource-adapter]]
+
+==== To Create Configuration Information for a Resource Adapter
+
+Use the `create-resource-adapter-config` subcommand in remote mode to
+create configuration information for a resource adapter, also known as a
+connector module. You can run the subcommand before deploying a resource
+adapter, so that the configuration information is available at the time
+of deployment. The resource adapter configuration can also be created
+after the resource adapter is deployed. In this situation, the resource
+adapter is restarted with the new configuration.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Create configuration information by using the
+link:reference-manual/create-resource-adapter-config.html#GSRFM00054[`create-resource-adapter-config`] subcommand.
++
+Information about properties for the subcommand is included in this help
+page.
+
+[[GSADG00229]][[gionp]]
+Example 12-7 Creating a Resource Adapter Configuration
+
+This example creates the configuration for resource adapter `ra1`.
+
+[source]
+----
+asadmin> create-resource-adapter-config --property foo=bar
+--threadpoolid mycustomerthreadpool ra1
+Command create-resource-adapter-config executed successfully
+----
+
+[[GSADG977]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-resource-adapter-config` at the command
+line.
+
+[[giorn]][[GSADG00441]][[to-list-resource-adapter-configurations]]
+
+==== To List Resource Adapter Configurations
+
+Use the `list-resource-adapter-configs` subcommand in remote mode to
+list the configuration information contained in the domain configuration
+file (`domain.xml`) for the specified resource adapter (connector
+module).
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the configurations for a resource adapter by using the
+link:reference-manual/list-resource-adapter-configs.html#GSRFM00196[`list-resource-adapter-configs`] subcommand.
+
+[[GSADG00230]][[gioof]]
+Example 12-8 Listing Configurations for a Resource Adapter
+
+This example lists all the resource adapter configurations.
+
+[source]
+----
+asadmin> list-resource-adapter-configs
+ra1
+ra2
+Command list-resource-adapter-configs executed successfully
+----
+
+[[GSADG978]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-resource-adapter-configs` at the command line.
+
+[[gioum]][[GSADG00442]][[to-update-a-resource-adapter-configuration]]
+
+==== To Update a Resource Adapter Configuration
+
+Use the `get` and `set` subcommands to view and change the values of the
+resource adapter configuration properties.
+
+1. List the configurations for a resource adapter by using the
+link:reference-manual/list-resource-adapter-configs.html#GSRFM00196[`list-resource-adapter-configs`] subcommand.
+2. View the properties of the connector resource by using the
+link:reference-manual/get.html#GSRFM00139[`get`] subcommand.
+For example:
++
+[source]
+----
+asadmin>get domain.resources.resource-adapter-config.ra1.*
+----
+3. Set the property of the connector resource by using the
+link:reference-manual/set.html#GSRFM00226[`set`] subcommand.
+For example:
++
+[source]
+----
+asadmin> set domain.resources.resource-adapter-config.ra1.raSpecificProperty=value
+----
+
+[[gionv]][[GSADG00443]][[to-delete-a-resource-adapter-configuration]]
+
+==== To Delete a Resource Adapter Configuration
+
+Use the `delete-resource-adapter-config` subcommand in remote mode to
+delete the configuration information contained in the domain
+configuration file (`domain.xml`) for a specified resource adapter
+(connector module).
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the configurations for a resource adapter by using the
+link:reference-manual/list-resource-adapter-configs.html#GSRFM00196[`list-resource-adapter-configs`] subcommand.
+3. Delete the configuration for a resource adapter by using the
+link:reference-manual/delete-resource-adapter-config.html#GSRFM00106[`delete-resource-adapter-config`] subcommand.
+
+[[GSADG00231]][[giorj]]
+Example 12-9 Deleting a Resource Adapter Configuration
+
+This example deletes the configuration for resource adapter `ra1`.
+
+[source]
+----
+asadmin> delete-resource-adapter-config ra1
+Command delete-resource-adapter-config executed successfully
+----
+
+[[GSADG979]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-resource-adapter-config` at the command
+line.
+
+[[gitxy]][[GSADG00584]][[administering-connector-security-maps]]
+
+=== Administering Connector Security Maps
+
+The EIS is any system that holds the data of an organization. It can be
+a mainframe, a messaging system, a database system, or an application.
+The connector security map is used to map the application's credentials
+to the EIS credentials.
+
+A security map applies to a particular connector connection pool. One or
+more named security maps can be associated with a connector connection
+pool.
+
+The following topics are addressed here:
+
+* link:#gitzz[To Create a Connector Security Map]
+* link:#gitwx[To List Connector Security Maps]
+* link:#gityj[To Update a Connector Security Map]
+* link:#gitvf[To Delete a Connector Security Map]
+
+[[gitzz]][[GSADG00444]][[to-create-a-connector-security-map]]
+
+==== To Create a Connector Security Map
+
+Use the `create-connector-security-map` subcommand in remote mode to
+create a security map for the specified connector connection pool. If
+the security map is not present, a new one is created. You can specify
+back-end EIS principals or back-end EIS user groups. The connector
+security map configuration supports the use of the wild card asterisk
+(*) to indicate all users or all user groups.
+
+You can also use this subcommand to map the caller identity of the
+application (principal or user group) to a suitable EIS principal in
+container-managed authentication scenarios.
+
+[[GSADG980]]
+
+Before You Begin
+
+For this subcommand to succeed, you must have first created a connector
+connection pool. For instructions, see link:#gioce[To Create a Connector
+Connection Pool].
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Create a connector security map by using the
+link:reference-manual/create-connector-security-map.html#GSRFM00020[`create-connector-security-map`] subcommand.
++
+Information about the options for the subcommand is included in this
+help page.
+3. If needed, restart the server.
++
+Some properties require server restart. See
+link:overview.html#ghciy[Configuration Changes That Require Restart]. If
+your server needs to be restarted, see link:domains.html#ginqj[To Restart
+a Domain].
+
+[[GSADG00232]][[giuxc]]
+Example 12-10 Creating a Connector Security Map
+
+This example creates a connector security map `securityMap1` for
+`connection-pool1`.
+
+[source]
+----
+asadmin> create-connector-security-map --poolname connector-pool1
+--principals principal1, principal2 --mappedusername backend-username securityMap1
+Command create-connector-security-map executed successfully
+----
+
+[[gitwx]][[GSADG00445]][[to-list-connector-security-maps]]
+
+==== To List Connector Security Maps
+
+Use the `list-connector-security-maps` subcommand in remote mode to list
+the existing security maps belonging to the specified connector
+connection pool. You can get a simple listing of the connector security
+maps for a connector connection pool, or you can get a more
+comprehensive listing that shows the principals of the map.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List existing connector connection pools by using the
+link:reference-manual/list-connector-connection-pools.html#GSRFM00157[`list-connector-connection-pools`] subcommand.
+3. List the security maps for a specific connector connection pool by
+using the link:reference-manual/list-connector-security-maps.html#GSRFM00159[`list-connector-security-maps`] subcommand.
+
+[[GSADG00233]][[giuwj]]
+Example 12-11 Listing All Connector Security Maps for a Connector
+Connection Pool
+
+This example lists the connector security maps associated with
+`connector-Pool1`.
+
+[source]
+----
+asadmin> list-connector-security-maps connector-Pool1
+securityMap1
+Command list-connector-security-maps executed successfully.
+----
+
+[[GSADG00234]][[giuyc]]
+Example 12-12 Listing Principals for a Specific Security Map for a
+Connector Connection Pool
+
+This example lists the principals associated with `securityMap1`.
+
+[source]
+----
+asadmin> list-connector-security-maps --securitymap securityMap1 connector-Pool1
+principal1
+principal1
+Command list-connector-security-maps executed successfully.
+----
+
+[[GSADG00235]][[giuuf]]
+Example 12-13 Listing Principals of All Connector Security Maps for a
+Connector Connection Pool
+
+This example lists the connector security maps associated with
+`connector-Pool1`.
+
+[source]
+----
+asadmin> list-connector-security-maps --verbose connector-Pool1
+securityMap1
+principal1
+principal1
+Command list-connector-security-maps executed successfully.
+----
+
+[[gityj]][[GSADG00446]][[to-update-a-connector-security-map]]
+
+==== To Update a Connector Security Map
+
+Use the `update-connector-security-map` subcommand in remote mode to
+create or modify a security map for the specified connector connection
+pool.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List existing connector security maps by using the
+link:reference-manual/list-connector-security-maps.html#GSRFM00159[`list-connector-security-maps`] subcommand.
+3. Modify a security map for a specific connector connection pool by
+using the link:reference-manual/update-connector-security-map.html#GSRFM00252[`update-connector-security-map`] subcommand.
+4. If needed, restart the server.
++
+Some properties require server restart. See
+link:overview.html#ghciy[Configuration Changes That Require Restart]. If
+your server needs to be restarted, see link:domains.html#ginqj[To Restart
+a Domain].
+
+[[GSADG00236]][[giuwi]]
+Example 12-14 Updating a Connector Security Map
+
+This example adds principals to `securityMap1`.
+
+[source]
+----
+asadmin> update-connector-security-map --poolname connector-pool1
+--addprincipals principal1, principal2 securityMap1
+Command update-connector-security-map executed successfully.
+----
+
+[[gitvf]][[GSADG00447]][[to-delete-a-connector-security-map]]
+
+==== To Delete a Connector Security Map
+
+Use the `delete-connector-security-map` subcommand in remote mode to
+delete a security map for the specified connector connection pool.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List existing connector connection pools by using the
+link:reference-manual/list-connector-connection-pools.html#GSRFM00157[`list-connector-connection-pools`] subcommand.
+3. Delete a security map for a specific connector connection pool by
+using the link:reference-manual/delete-connector-security-map.html#GSRFM00072[`delete-connector-security-map`] subcommand.
++
+Information about options for this subcommand is included in this help
+page.
+
+[[GSADG00237]][[giuvr]]
+Example 12-15 Deleting a Connector Security Map
+
+This example deletes `securityMap1` from `connector-pool1`.
+
+[source]
+----
+asadmin> delete-connector-security-map --poolname connector-pool1 securityMap1
+
+Command delete-connector-security-map executed successfully
+----
+
+[[giohl]][[GSADG00585]][[administering-connector-work-security-maps]]
+
+=== Administering Connector Work Security Maps
+
+The EIS is any system that holds the data of an organization. It can be
+a mainframe, a messaging system, a database system, or an application.
+The connector work security map is used to is used to map the EIS
+credentials to the credentials of {productName} security domain.
+
+A security map applies to a particular connector connection pool. One or
+more named security maps can be associated with a connector connection
+pool.
+
+The following topics are addressed here:
+
+* link:#giofz[To Create a Connector Work Security Map]
+* link:#gioir[To List Connector Work Security Maps]
+* link:#giogm[To Update a Connector Work Security Map]
+* link:#gioin[To Delete a Connector Work Security Map]
+
+[[giofz]][[GSADG00448]][[to-create-a-connector-work-security-map]]
+
+==== To Create a Connector Work Security Map
+
+Use the `create-connector-work-security-map` subcommand in remote mode
+to map the caller identity of the work submitted by the connector module
+(resource adapter) EIS principal or EIS user group to a suitable
+principal or user group in the {productName} security domain. One or
+more work security maps can be associated with a connector module.
+
+The connector security map configuration supports the use of the wild
+card asterisk (*) to indicate all users or all user groups.
+
+[[GSADG981]]
+
+Before You Begin
+
+Before creating a connector work security map, you must first create a
+connector connection pool. For instructions, see link:#gioce[To Create a
+Connector Connection Pool].
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Create the connector work security map by using the
+link:reference-manual/create-connector-work-security-m.html#GSRFM00021[`create-connector-work-security-map`] subcommand.
++
+Information about properties for the subcommand is included in this help
+page.
+3. If needed, restart the server.
++
+Some properties require server restart. See
+link:overview.html#ghciy[Configuration Changes That Require Restart]. If
+your server needs to be restarted, see link:domains.html#ginqj[To Restart
+a Domain].
+
+[[GSADG00238]][[giokw]]
+Example 12-16 Creating Connector Work Security Maps
+
+The following examples create `workSecurityMap1` and `workSecurityMap2`
+for `my-resource-adapter-name`.
+
+[source]
+----
+asadmin> create-connector-work-security-map --raname my-resource-adapter-name
+--principalsmap eis-principal-1=server-principal-1,eis-principal-2=server-principal-2,
+eis-principal-3=server-principal-1 workSecurityMap1
+
+asadmin> create-connector-work-security-map --raname my-resource-adapter-name
+--groupsmap eis-group-1=server-group-1,eis-group-2=server-group-2,
+eis-group-3=server-group-1 workSecurityMap2
+Command create-connector-work-security-map executed successfully
+----
+
+[[GSADG982]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-connector-work-security-map` at the command
+line.
+
+[[gioir]][[GSADG00449]][[to-list-connector-work-security-maps]]
+
+==== To List Connector Work Security Maps
+
+Use the `list-connector-work-security-maps` subcommand in remote mode to
+list the work security maps that belong to a specific connector module.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the connector work security maps by using the
+link:reference-manual/list-connector-work-security-map.html#GSRFM00160[`list-connector-work-security-maps`] subcommand.
+
+[[GSADG00239]][[gionj]]
+Example 12-17 Listing the Connector Work Security Maps
+
+This example lists the generic work security maps.
+
+[source]
+----
+asadmin> list-connector-work-security-maps generic-ra
+generic-ra-groups-map: EIS group=eis-group, mapped group=glassfish-group
+generic-ra-principals-map: EIS principal=eis-bar, mapped principal=bar
+generic-ra-principals-map: EIS principal=eis-foo, mapped principal=foo
+Command list-connector-work-security-maps executed successfully.
+----
+
+[[GSADG983]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-connector-work-security-maps` at the command
+line.
+
+[[giogm]][[GSADG00450]][[to-update-a-connector-work-security-map]]
+
+==== To Update a Connector Work Security Map
+
+Use the `update-connector-work-security-map` subcommand in remote to
+modify a work security map that belongs to a specific resource adapter
+(connector module).
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the connector work security maps by using the
+link:reference-manual/list-connector-work-security-map.html#GSRFM00160[`list-connector-work-security-maps`] subcommand.
+3. If necessary, notify users that the connector work security map is
+being modified.
+4. Update a connector work security map by using the
+link:reference-manual/update-connector-work-security-m.html#GSRFM00253[`update-connector-work-security-map`] subcommand.
+
+[[GSADG00240]][[gioll]]
+Example 12-18 Updating a Connector Work Security Map
+
+This example removes a principal from a work security map.
+
+[source]
+----
+asadmin> update-connector-work-security-map --raname generic-ra
+--removeprincipals eis-foo generic-ra-principals-map
+Command update-connector-work-security-map executed successfully.
+----
+
+[[GSADG984]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help update-connector-work-security-map` at the command
+line.
+
+[[gioin]][[GSADG00451]][[to-delete-a-connector-work-security-map]]
+
+==== To Delete a Connector Work Security Map
+
+Use the `delete-connector-work-security-map` subcommand in remote mode
+to delete a work security map that belongs to a specific connector
+module (resource adapter).
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the connector work security maps by using the
+link:reference-manual/list-connector-work-security-map.html#GSRFM00160[`list-connector-work-security-maps`] subcommand.
+3. Delete a connector work security map by using the
+link:reference-manual/delete-connector-work-security-m.html#GSRFM00073[`delete-connector-work-security-map`] subcommand.
+
+[[GSADG00241]][[giolk]]
+Example 12-19 Deleting a Connector Work Security Map
+
+This example deletes the `worksecuritymap1` map from the `my_ra`
+connector module.
+
+[source]
+----
+asadmin> delete-connector-work-security-map --raname my_ra worksecuritymap1
+Command delete-connector-work-security-map executed successfully.
+----
+
+[[GSADG985]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-connector-work-security-map` at the command
+line.
+
+[[ablmc]][[GSADG00586]][[administering-administered-objects]]
+
+=== Administering Administered Objects
+
+Packaged within a connector module, an administered object provides
+specialized functionality for an application. For example, an
+administered object might provide access to a parser that is specific to
+the connector module and its associated EIS.
+
+The following topics are addressed here:
+
+* link:#giolr[To Create an Administered Object]
+* link:#giokm[To List Administered Objects]
+* link:#giots[To Update an Administered Object]
+* link:#gioma[To Delete an Administered Object]
+
+[[giolr]][[GSADG00452]][[to-create-an-administered-object]]
+
+==== To Create an Administered Object
+
+Use the `create-admin-object` subcommand to create an administered
+object resource. When creating an administered object resource,
+name-value pairs are created, and the object is associated to a JNDI
+name.
+
+[[GSADG986]]
+
+Before You Begin
+
+The resource adapter must be deployed before running this subcommand
+(`jmsrar.rar`).
+
+1. Create an administered object by using the
+link:reference-manual/create-admin-object.html#GSRFM00012[`create-admin-object`] subcommand.
++
+Information about properties for the subcommand is included in this help
+page.
+2. If needed, restart the server.
++
+Some properties require server restart. See
+link:overview.html#ghciy[Configuration Changes That Require Restart]. If
+your server needs to be restarted, see link:domains.html#ginqj[To Restart
+a Domain].
+
+[[GSADG00242]][[giokx]]
+Example 12-20 Creating an Administered Object
+
+For this example, the `jakarta.jms.Queue` resource type is obtained from
+the `ra.xml` file. The JNDI name of the new administered object is
+`jms/samplequeue`.
+
+[source]
+----
+asadmin> create-admin-object --restype jakarta.jms.Queue --raname jmsra
+--description "sample administered object" --property Name=sample_jmsqueue jms/samplequeue
+Command create-admin-object executed successfully
+----
+
+[[GSADG987]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-admin-object` at the command line.
+
+[[giokm]][[GSADG00453]][[to-list-administered-objects]]
+
+==== To List Administered Objects
+
+Use the `list-admin-object` subcommand in remote mode to list the
+existing administered objects.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the administered objects by using the
+link:reference-manual/list-admin-objects.html#GSRFM00146[`list-admin-objects`] subcommand.
+
+[[GSADG00243]][[giokg]]
+Example 12-21 Listing Administered Objects
+
+This example lists the existing administered objects.
+
+[source]
+----
+asadmin> list-admin-objects
+jms/samplequeue
+Command list-admin-objects executed successfully
+----
+
+[[GSADG988]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-admin-object` at the command line.
+
+[[giots]][[GSADG00454]][[to-update-an-administered-object]]
+
+==== To Update an Administered Object
+
+Use the `get` and `set` subcommands to view and change the values of the
+administered objects properties.
+
+1. List the administered objects by using the
+link:reference-manual/list-admin-objects.html#GSRFM00146[`list-admin-objects`] subcommand.
+2. View the properties of the administered object by using the
+link:reference-manual/get.html#GSRFM00139[`get`] subcommand.
+For example:
++
+[source]
+----
+asadmin> get domain.resources.admin-object-resource.jms/samplequeue.*
+----
+3. Set the property of the administered object by using the
+link:reference-manual/set.html#GSRFM00226[`set`] subcommand.
+For example:
++
+[source]
+----
+asadmin> set domain.resources.admin-object-resource.jms/samplequeue.enabled=false
+----
+4. If needed, restart the server. Some properties require server restart.
+See link:overview.html#ghciy[Configuration Changes That Require Restart].
+If your server needs to be restarted, see link:domains.html#ginqj[To Restart a Domain].
+
+[[gioma]][[GSADG00455]][[to-delete-an-administered-object]]
+
+==== To Delete an Administered Object
+
+Use the `delete-admin-object` subcommand to delete an administered objects.
+
+1. List the administered objects by using the
+link:reference-manual/list-admin-objects.html#GSRFM00146[`list-admin-objects`] subcommand.
+2. If necessary, notify users that the administered object is being deleted.
+3. Delete an administered object by using the
+link:reference-manual/delete-admin-object.html#GSRFM00063[`delete-admin-object`] subcommand.
+
+[[GSADG00244]][[giolc]]
+Example 12-22 Deleting an Administered Object
+
+This example deletes the administered object with the JNDI name
+`jms/samplequeue`.
+
+[source]
+----
+asadmin> delete-admin-object jms/samplequeue
+Command delete-admin-object executed successfully
+----
+
+[[GSADG989]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-admin-object` at the command line.
+
+
diff --git a/docs/administration-guide/src/main/asciidoc/domains.adoc b/docs/administration-guide/src/main/asciidoc/domains.adoc
new file mode 100644
index 0000000..144c704
--- /dev/null
+++ b/docs/administration-guide/src/main/asciidoc/domains.adoc
@@ -0,0 +1,1466 @@
+type=page
+status=published
+title=Administering Domains
+next=jvm.html
+prev=general-administration.html
+~~~~~~
+
+= Administering Domains
+
+[[GSADG00006]][[ggnop]]
+
+
+[[administering-domains]]
+== 3 Administering Domains
+
+This chapter provides procedures for administering domains in the
+{productName} environment by using the `asadmin`
+command-line utility.
+
+The following topics are addressed here:
+
+* link:#ggoek[About Administering Domains]
+* link:#gitvz[Creating, Logging In To, and Deleting a Domain]
+* link:#gitwj[Starting and Stopping a Domain]
+* link:#gglqp[Configuring a DAS or a {productName} Instance for Automatic Restart]
+* link:#gityo[Backing Up and Restoring a Domain]
+* link:#gglri[Re-Creating the Domain Administration Server (DAS)]
+* link:#gitvn[Additional Domain Tasks]
+
+Instructions for accomplishing the tasks in this chapter by using the
+Administration Console are contained in the Administration Console
+online help.
+
+[[ggoek]][[GSADG00535]][[about-administering-domains]]
+
+=== About Administering Domains
+
+A domain contains a group of {productName} instances that are
+administered together. Each domain has a domain administration server
+(DAS) that hosts administrative applications. These concepts are
+explained in more detail in the following sections:
+
+* link:#geolm[{productName} Instances]
+* link:#geojp[Domains for Administering {productName}]
+* link:#geojl[Domain Administration Server (DAS)]
+
+[[geolm]][[GSADG00715]][[glassfish-server-instances]]
+
+==== {productName} Instances
+
+A {productName} instance is a single Virtual Machine for the Java
+platform (Java Virtual Machine or JVM machine) on a single node in which
+{productName} is running. A node defines the host where the {productName} instance resides. The JVM machine must be compatible with the
+Java Platform, Enterprise Edition (Jakarta EE).
+
+{productName} instances form the basis of an application deployment.
+
+Whenever a domain is created, {productName} creates a default
+instance that is named `server`. If a single instance meets your
+requirements, you can use this instance for deploying applications
+without the need to administer {productName} instances explicitly.
+You administer the default instance when you administer its domain.
+
+If you require multiple instances, you must administer the instances
+explicitly. For more information, see "link:ha-administration-guide/instances.html#GSHAG00006[Administering
+{productName} Instances]" in {productName}
+High Availability Administration Guide.
+
+For an instance, you can also create virtual servers. Virtual servers do
+not span instances. For many purposes, you can use virtual servers
+instead of multiple instances in operational deployments. Virtual
+servers enable you to offer, within a single instance, separate domain
+names, IP addresses, and some administration capabilities to
+organizations or individuals. To these users, a virtual server behaves
+like a dedicated web server, but without the hardware and basic web
+server maintenance.
+
+For more information about virtual servers, see
+link:http_https.html#ggncs[Administering Virtual Servers].
+
+[[geojp]][[GSADG00716]][[domains-for-administering-glassfish-server]]
+
+==== Domains for Administering {productName}
+
+A domain is an administrative boundary that contains a group of
+{productName} instances that are administered together. Each instance
+can belong to only one domain. A domain provides a preconfigured runtime
+for user applications. Each domain has its own configuration data, log
+files, and application deployment areas that are independent of other
+domains. If the configuration is changed for one domain, the
+configurations of other domains are not affected.
+
+Domains enable different organizations and administrators to share
+securely a single {productName} installation. Each organization or
+administrator can administer the instances in a single domain without
+affecting the instances in other domains.
+
+At installation time, {productName} creates a default domain that is
+named `domain1`. After installation, you can create additional domains
+as necessary.
+
+When a domain is created, you are prompted for the administration user
+name and password. If you accept the default, the user `admin` is
+created without password. To reset the administration password, see
+"link:security-guide/system-security.html#GSSCG00095[To Change an Administration Password]" in {productName} Security Guide.
+
+[[geojl]][[GSADG00717]][[domain-administration-server-das]]
+
+==== Domain Administration Server (DAS)
+
+The domain administration server (DAS) is a specially designated
+{productName} instance that hosts administrative applications. The
+DAS is similar to any other {productName} instance, except that the
+DAS has additional administration capabilities. The DAS authenticates
+the administrator, accepts requests from administration tools, and
+communicates with other instances in the domain to carry out the
+requests from administration tools.
+
+Each domain has its own DAS with a unique administration port number.
+The default administration port is 4848, but a different port can be
+specified when a domain is created.
+
+The DAS has the master copy of the configuration data for all instances
+in a domain. If an instance is destroyed, for example, because a host
+failed, the instance can be re-created from the data in the DAS.
+
+The DAS is the default {productName} instance in a domain and is
+named `server`. If a single instance meets your requirements, you can
+use the DAS for deploying applications and for administering the domain.
+
+The graphical Administration Console communicates with a specific DAS to
+administer the domain that is associated with the DAS. Each
+Administration Console session enables you to configure and manage only
+one domain. If you create multiple domains, you must start a separate
+Administration Console session to manage each domain.
+
+[[gitvz]][[GSADG00536]][[creating-logging-in-to-and-deleting-a-domain]]
+
+=== Creating, Logging In To, and Deleting a Domain
+
+The following topics are addressed here:
+
+* link:#ggoei[To Create a Domain]
+* link:#gldel[To Create a Domain From a Custom Template]
+* link:#ggoco[To List Domains]
+* link:#ghhjz[To Log In to a Domain]
+* link:#ggofa[To Delete a Domain]
+
+[[ggoei]][[GSADG00330]][[to-create-a-domain]]
+
+==== To Create a Domain
+
+After installing {productName} and creating the default domain
+(`domain1`), you can create additional domains by using the local
+`create-domain` subcommand. This subcommand creates the configuration of
+a domain. Any user who has access to the `asadmin` utility on a given
+system can create a domain and store the domain configuration in a
+folder of choice. By default, the domain configuration is created in the
+default directory for domains. You can override this location to store
+the configuration elsewhere.
+
+You are required to specify an administrative user when you create a
+domain, or you can accept the default login identity which is username
+`admin` with no password.
+
+1. Select a name for the domain that you are creating.
+You can verify that a name is not already in use by using the
+link:reference-manual/list-domains.html#GSRFM00163[`list-domains`] subcommand
+2. Create a domain by using the link:reference-manual/create-domain.html#GSRFM00023[`create-domain`] subcommand.
+Information about the options for this subcommand is included in this help page.
+3. Type an admin user name and password for the domain.
+To avoid setting up an admin login, you can accept the default `admin`,
+with no password. Pressing Return also selects the default.
+
+[[GSADG00126]][[ggoeu]]
+Example 3-1 Creating a Domain
+
+This example creates a domain named `domain1` . When you type the
+command, you might be prompted for login information.
+
+[source]
+----
+asadmin> create-domain --adminport 4848 domain1
+Enter admin user name[Enter to accept default]>
+Using port 4848 for Admin.
+Default port 8080 for HTTP Instance is in use. Using 1161
+Using default port 7676 for JMS.
+Using default port 3700 for IIOP.
+Using default port 8081 for HTTP_SSL.
+Using default port 3820 for IIOP_SSL.
+Using default port 3920 for IIOP_MUTUALAUTH.
+Default port 8686 for JMX_ADMIN is in use. Using 1162
+Distinguished Name of the self-signed X.509 Server Certificate is:
+[CN=moonbeam.gateway.2wire.net,OU=GlassFish,O=Oracle Corp.,L=Redwood Shores,ST
+California,C=US]
+Domain domain1 created.
+Command create-domain executed successfully.
+----
+
+To start the Administration Console in a browser, enter the URL in the
+following format:
+
+[source]
+----
+http://hostname:5000
+----
+
+For this example, the domain's log files, configuration files, and
+deployed applications now reside in the following directory:
+
+domain-root-dir``/mydomain``
+
+[[GSADG819]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-domain` at the command line.
+
+[[gldel]][[GSADG00331]][[to-create-a-domain-from-a-custom-template]]
+
+==== To Create a Domain From a Custom Template
+
+A custom template enables you to customize the configuration of any
+domain that you create from the template.
+
+1. Create a domain to use as the basis for the template.
+For more information, see link:#ggoei[To Create a Domain].
+
+2. Use the `asadmin` utility or the Administration Console to configure the domain.
+Your configuration changes will be included in the template that you create from the domain.
+
+3. Copy the domain's `domain.xml` file under a new name to the
+as-install``/lib/templates`` directory.
+A domain's `domain.xml` file is located in the domain-dir``/config`` directory.
+
+4. In a plain text editor, edit the file that you copied to replace
+with tokens values that are to be substituted when a domain is created.
+Each token is identified as `%%%token-name%%%`, where `token-name` is
+one of the following names:::
+`ADMIN_PORT`::
+  Represents the port number of the HTTP port or the HTTPS port for
+  administration. This token is replaced with one of the following
+  values in the command to create a domain from the template:
+  * The value of the `--adminport` option
+  * The value of the `domain.adminPort` property
+`CONFIG_MODEL_NAME`::
+  Represents the name of the configuration that is created for the
+  domain that is being created. This token is replaced with the string
+  `server-config`.
+`DOMAIN_NAME`::
+  Represents the name of the domain that is being created. This token is
+  replaced with the operand of `create-domain` subcommand.
+`HOST_NAME`::
+  Represents the name of the host on which the domain is being created.
+  This token is replaced with the fully qualified host name of the host
+  where the domain is being created.
+`HTTP_PORT`::
+  Represents the port number of the port that is used to listen for HTTP
+  requests. This token is replaced with one of the following values in
+  the command to create a domain from the template:
+  * The value of the `--instanceport` option
+  * A value that the `create-domain` subcommand calculates from the
+  value of the `--portbase` option
+  * The value of the `domain.instancePort` property
+`HTTP_SSL_PORT`::
+  Represents the port number of the port that is used to listen for
+  secure HTTP requests. This token is replaced with one of the following
+  values in the command to create a domain from the template:
+  * A value that the `create-domain` subcommand calculates from the
+  value of the `--portbase` option
+  * The value of the `http.ssl.port` property
+`JAVA_DEBUGGER_PORT`::
+  Represents the port number of the port that is used for connections to the
+  http://docs.oracle.com/javase/8/docs/technotes/guides/jpda/architecture.html[Java
+  Platform Debugger Architecture (JPDA)] debugger.
+  This token is replaced with one of the following values in the command to create
+  a domain from the template:
+  * A value that the `create-domain` subcommand calculates from the
+  value of the `--portbase` option
+  * The value of the `java.debugger.port` property
+`JMS_PROVIDER_PORT`::
+  Represents the port number for the Java Message Service provider.
+  This token is replaced with one of the following values in the command to
+  create a domain from the template:
+  * A value that the `create-domain` subcommand calculates from the
+  value of the `--portbase` option
+  * The value of the `jms.port` property
+`JMX_SYSTEM_CONNECTOR_PORT`::
+  Represents the port number on which the JMX connector listens.
+  This token is replaced with one of the following values in the command to
+  create a domain from the template:
+  * A value that the `create-domain` subcommand calculates from the
+  value of the `--portbase` option
+  * The value of the `domain.jmxPort` property
+`ORB_LISTENER_PORT`::
+  Represents the port number of the port that is used for IIOP
+  connections. This token is replaced with one of the following values
+  in the command to create a domain from the template:
+  * A value that the `create-domain` subcommand calculates from the
+  value of the `--portbase` option
+  * The value of the `orb.listener.port` property
+`ORB_MUTUALAUTH_PORT`::
+  Represents the port number of the port that is used for secure IIOP
+  connections with client authentication. This token is replaced with
+  one of the following values in the command to create a domain from the
+  template:
+  * A value that the `create-domain` subcommand calculates from the
+  value of the `--portbase` option
+  * The value of the `orb.mutualauth.port` property
+`ORB_SSL_PORT`::
+  Represents the port number of the port that is used for secure IIOP
+  connections. This token is replaced with one of the following values
+  in the command to create a domain from the template:
+  * A value that the `create-domain` subcommand calculates from the
+  value of the `--portbase` option
+  * The value of the `orb.ssl.port` property
+`OSGI_SHELL_TELNET_PORT`::
+  Represents the port number of the port that is used for connections to the
+  http://felix.apache.org/documentation/subprojects/apache-felix-remote-shell.html[Apache
+  Felix Remote Shell]. This shell uses the Felix shell service to
+  interact with the OSGi module management subsystem. This token is
+  replaced with one of the following values in the command to create
+  a domain from the template:
+  * A value that the `create-domain` subcommand calculates from the
+  value of the `--portbase` option
+  * The value of the `osgi.shell.telnet.port` property
+`SERVER_ID`::
+  Represents the name of the DAS for the domain that is being created.
+  This token is replaced with the string `server`.
++
+[TIP]
+====
+For information about how these tokens are used in the default template,
+examine the as-install``/lib/templates/domain.xml`` file.
+====
+
+5. Create the domain that you want to be based on a custom template.
+In the command to create the domain, pass the name of file that you
+edited in the previous step as the `--template` option of the
+link:reference-manual/create-domain.html#GSRFM00023[`create-domain`] subcommand.
+
+6. Before starting the domain, verify that the domain's `domain.xml` file is valid.
+Use the link:reference-manual/verify-domain-xml.html#GSRFM00260[`verify-domain-xml`]
+subcommand for this purpose.
+Information about the options for this subcommand is included in the subcommand's help page.
+
+[[GSADG820]]
+
+See Also
+
+* link:#ggoei[To Create a Domain]
+* link:reference-manual/create-domain.html#GSRFM00023[`create-domain`(1)]
+* link:reference-manual/verify-domain-xml.html#GSRFM00260[`verify-domain-xml`(1)]
+
+You can also view the full syntax and options of the subcommands by
+typing the following commands at the command line.
+
+* `asadmin help create-domain`
+* `asadmin help verify-domain-xml`
+
+[[ggoco]][[GSADG00332]][[to-list-domains]]
+
+==== To List Domains
+
+Use the `list-domains` subcommand to display a list of domains and their statuses.
+If the domain directory is not specified, the contents of the
+domain-root-dir, the default for which is as-install``/domains``, is listed.
+If there is more than one domain, the domain name must be specified.
+
+To list domains that were created in other directories, specify the `--domaindir` option.
+
+List domains by using the link:reference-manual/list-domains.html#GSRFM00163[`list-domains`] subcommand.
+
+[[GSADG00127]][[ggpfv]]
+Example 3-2 Listing Domains
+
+This example lists the domains in the default domain root directory:
+
+[source]
+----
+asadmin> list-domains
+Name: domain1 Status: Running
+Name: domain4 Status: Not Running
+Name: domain6 Status: Not Running
+Command list-domains executed successfully.
+----
+
+[[GSADG821]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-domain` at the command line.
+
+[[ghhjz]][[GSADG00333]][[to-log-in-to-a-domain]]
+
+==== To Log In to a Domain
+
+All remote subcommands require that credentials be specified in terms of
+an administration user name and its password. By default, the domain is
+created with an identity that allows an `asadmin` user to perform
+administrative operations when no identity is explicitly or implicitly
+specified.
+
+The default identity is in the form of a user whose name is `admin` and
+has no password. If you specify no user name on the command line or on
+prompt, and specify no password in the `--passwordfile` option or on
+prompt, and you have never logged in to a domain using either the
+`login` subcommand or the `create-domain` subcommand with the
+`--savelogin` option, then the `asadmin` utility will attempt to perform
+a given administrative operation without specifying any identity.
+
+A server (domain) allows administrative operations to be run using this
+default identity if the following conditions are true:
+
+* The server (domain) uses file realm for authentication of administrative users.
+If this condition is not true, you will need to specify the user name
+and password.
+* The file realm has one and only one user (what the user name is does not matter).
+If this condition is not true, you will also need to specify the user name.
+* That one user has no password.
+If this condition is not true, you will need to specify the password.
+
+By default, all of these conditions are true, unless you have created
+the domain with a specific user name and password. Thus, by default, the
+only administrative user is `admin` with no password.
+
+Use the `login` subcommand in local mode to authenticate yourself (log
+in to) a specific domain. After such login, you do not need to specify
+the administration user or password for subsequent operations on the
+domain. The `login` subcommand can only be used to specify the
+administration password. For other passwords that remote subcommands
+require, use the `--passwordfile` option, or specify the password at the
+command prompt. You are always prompted for the administration user name
+and password.
+
+There is no logout subcommand. If you want to log in to another domain,
+invoke `asadmin login` with new values for `--host` and `--port`.
+
+1. Determine the name of the domain that you are logging in to.
+To list the existing domains:
++
+[source]
+----
+asadmin list-domains
+----
+2. Log in to the domain by using the olink:GSRFM00210[`login`] command.
+
+[[GSADG00128]][[ghlfx]]
+Example 3-3 Logging In To a Domain on a Remote Machine
+
+This example logs into a domain located on another machine. Options are
+specified before the `login` subcommand.
+
+[source]
+----
+asadmin> --host foo --port 8282 login
+Please enter the admin user name>admin Please enter the admin password>
+Trying to authenticate for administration of server at host [foo] and port [8282] ...
+Login information relevant to admin user name [admin]
+for host [foo] and admin port [8282] stored at [/.asadminpass] successfully.
+Make sure that this file remains protected. Information stored in this
+file will be used by asadmin commands to manage associated domain.
+----
+
+[[GSADG00129]][[ghldv]]
+Example 3-4 Logging In to a Domain on the Default Port of Localhost
+
+This example logs into a domain on `myhost` on the default port. Options
+are specified before the login subcommand.
+
+[source]
+----
+asadmin> --host myhost login
+Please enter the admin user name>admin
+Please enter the admin password>
+Trying to authenticate for administration of server at host [myhost] and port [4848] ...
+An entry for login exists for host [myhost] and port [4848], probably from
+an earlier login operation.
+Do you want to overwrite this entry (y/n)?y
+Login information relevant to admin user name [admin] for host [myhost]
+and admin port [4848] stored at [/home/joe/.asadminpass] successfully.
+Make sure that this file remains protected. Information stored in this file will be used by
+asadmin commands to manage associated domain.
+----
+
+[[GSADG822]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help login` at the command line. For additional
+information about passwords, see "link:security-guide/system-security.html#GSSCG00144[Administering
+Passwords]" in {productName} Security Guide.
+
+[[ggofa]][[GSADG00334]][[to-delete-a-domain]]
+
+==== To Delete a Domain
+
+Use the `delete-domain` subcommand to delete an existing domain from a
+server. Only the root user or the operating system user who is
+authorized to administer the domain can run this subcommand.
+
+[[GSADG823]]
+
+Before You Begin
+
+A domain must be stopped before it can be deleted.
+
+1. List domains by using the link:reference-manual/list-domains.html#GSRFM00163[`list-domains`] subcommand.
+2. If necessary, notify domain users that the domain is being deleted.
+3. Ensure that the domain you want to delete is stopped. If needed, see link:#ggoch[To Stop a Domain].
+4. Delete the domain by using the link:reference-manual/delete-domain.html#GSRFM00075[`delete-domain`] subcommand.
+
+[[GSADG00130]][[ggoiy]]
+Example 3-5 Deleting a Domain
+
+This example deletes a domain named `domain1` from the location
+specified.
+
+[source]
+----
+asadmin> delete-domain --domaindir ..\domains domain1
+Domain domain1 deleted.
+Command delete-domain executed successfully.
+----
+
+[[GSADG824]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-domain` at the command line.
+
+[[gitwj]][[GSADG00537]][[starting-and-stopping-a-domain]]
+
+=== Starting and Stopping a Domain
+
+The following topics are addressed here:
+
+* link:#ggoda[To Start a Domain]
+* link:#ggoch[To Stop a Domain]
+* link:#ginqj[To Restart a Domain]
+
+[[ggoda]][[GSADG00335]][[to-start-a-domain]]
+
+==== To Start a Domain
+
+When you start a domain or server, the domain administration server
+(DAS) is started. After startup, the DAS runs constantly, listening for
+and accepting requests.
+
+If the domain directory is not specified, the domain in the default
+domain root directory is started. If there are two or more domains, the
+`domain_name` operand must be specified. Each domain must be started
+separately.
+
+
+[NOTE]
+====
+For Microsoft Windows, you can use an alternate method to start a
+domain. From the Windows Start menu, select the command for your
+distribution of {productName}:
+
+* If you are using the Full Platform, select Programs > {productName} > Start Admin Server.
+* If you are using the Web Profile, select Programs > {productName} Web Profile > Start Admin Server.
+====
+
+
+This subcommand is supported in local mode only.
+
+Start a domain by using the link:reference-manual/start-domain.html#GSRFM00235[`start-domain`] subcommand.
+
+[[GSADG00131]][[ggocw]]
+Example 3-6 Starting a Domain
+
+This example starts `domain2` in the default domain directory.
+
+[source]
+----
+asadmin> start-domain domain2
+----
+
+If there is only one domain, you can omit the domain name. If you do not
+include the password, you might be prompted to supply it.
+
+[source]
+----
+Name of the domain started: [domain1] and its location:
+[C:\prelude\v3_prelude_release\distributions\web\target\glassfish
+domains\domain1].
+Admin port for the domain: [4848].
+----
+
+[[GSADG825]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help start-domain` at the command line.
+
+[[ggoch]][[GSADG00336]][[to-stop-a-domain]]
+
+==== To Stop a Domain
+
+Stopping a domain or server shuts down its domain administration server
+(DAS). When stopping a domain, the DAS stops accepting new connections
+and then waits for all outstanding connections to complete. This
+shutdown process takes a few seconds. While the domain is stopped, the
+Administration Console and most of the `asadmin` subcommands cannot be
+used. This subcommand is particularly useful in stopping a runaway
+server. For more controlled situations, you can use the
+link:reference-manual/restart-domain.html#GSRFM00218[`restart-domain`] subcommand.
+
+
+[NOTE]
+====
+For Microsoft Windows, you can use an alternate method to stop a domain.
+From the Start menu, select the command for your distribution of
+{productName}:
+
+* If you are using the Full Platform, select Programs > {productName} > Stop Admin Server.
+* If you are using the Web Profile, select Programs > {productName} Web Profile > Stop Admin Server.
+====
+
+
+1. If necessary, notify users that you are going to stop the domain.
+2. Stop the domain by using the link:reference-manual/stop-domain.html#GSRFM00240[`stop-domain`]
+subcommand.
+
+[[GSADG00132]][[gioes]]
+Example 3-7 Stopping a Domain (or Server)
+
+This example stops `domain1` in the default directory, where `domain1`
+is the only domain present in the directory.
+
+[source]
+----
+asadmin> stop-domain
+Waiting for the domain to stop ...........
+Command stop-domain executed successfully.
+----
+
+[[GSADG826]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help stop-domain` at the command line.
+
+[[ginqj]][[GSADG00337]][[to-restart-a-domain]]
+
+==== To Restart a Domain
+
+Use the `restart-domain` subcommand in remote mode to restart the Domain
+Administration Server (DAS) of the specified host. When restarting a
+domain, the DAS stops accepting new connections and then waits for all
+outstanding connections to complete. This shutdown process takes a few
+seconds. Until the domain has restarted, the Administration Console and
+most of the `asadmin` subcommands cannot be used.
+
+This subcommand is particularly useful for environments where the server
+machine is secured and difficult to get to. With the right credentials,
+you can restart the server from a remote location as well as from the
+same machine.
+
+If the server will not restart, use the link:reference-manual/stop-domain.html#GSRFM00240[`stop-domain`]
+subcommand followed by the link:reference-manual/start-domain.html#GSRFM00235[`start-domain`] subcommand.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Restart the domain by using the link:reference-manual/restart-domain.html#GSRFM00218[`restart-domain`] subcommand.
+
+[[GSADG00133]][[ggoet]]
+Example 3-8 Restarting a Domain (or Server)
+
+This example restarts `mydoimain4` in the default directory.
+
+[source]
+----
+asadmin> restart-domain mydomain4
+Waiting for the domain to restart ...........
+Command restart-domain executed successfully.
+----
+
+[[GSADG00134]][[giupx]]
+Example 3-9 Restarting a Domain in a Browser
+
+This example invokes the `restart-domain` subcommand in a browser.
+
+[source]
+----
+http://yourhost:4848/__asadmin/restart-domain
+----
+
+[[GSADG827]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help restart-domain` at the command line.
+
+[[gglqp]][[GSADG00538]][[configuring-a-das-or-a-glassfish-server-instance-for-automatic-restart]]
+
+=== Configuring a DAS or a {productName} Instance for Automatic Restart
+
+Use the `create-service` subcommand in local mode to configure your
+system to automatically restart a domain administration server (DAS) or
+a {productName} instance. {productName} enables you to configure a
+DAS or an instance for automatic restart on the following operating
+systems:
+
+* Windows
+* Linux
+* Oracle Solaris
+
+To ensure that automatic restart functions correctly on Windows, you
+must prevent service shutdown when a user logs out.
+
+The following topics are addressed here:
+
+* link:#gjzfg[To Configure a DAS or an Instance for Automatic Restart on Windows]
+* link:#giurs[To Configure a DAS or an Instance for Automatic Restart on Linux]
+* link:#giusi[To Configure a DAS or an Instance for Automatic Restart on Oracle Solaris]
+* link:#giurf[To Prevent Service Shutdown When a User Logs Out on Windows]
+
+[[gjzfg]][[GSADG00338]][[to-configure-a-das-or-an-instance-for-automatic-restart-on-windows]]
+
+==== To Configure a DAS or an Instance for Automatic Restart on Windows
+
+On Windows systems, the `create-service` subcommand creates a Windows
+service to represent the DAS or instance. The service is created in the
+disabled state. After this subcommand creates the service, you must use
+the Windows Services Manager or the Windows Services Wrapper to start,
+stop, uninstall, or install the service. To administer the service from
+the Windows command line, use the `sc.exe` tool.
+
+This subcommand must be run as the OS-level administrator user.
+
+1. Create the service by using the link:reference-manual/create-service.html#GSRFM00057[`create-service`]
+subcommand.
+2. After the service is created, start the service by using the Windows
+Services Manager or the Windows Services Wrapper.
++
+For example, to start the service for the default domain by using the
+`sc.exe` tool, type:
++
+[source]
+----
+C:\> sc start domain1
+----
+If you are using the `sc.exe` tool to administer the service, use the
+tool as follows:
+* To obtain information about the service, use the `sc query` command.
+* To stop the service, use the `sc stop` command.
+* To uninstall the service, use the `sc delete` command.
+
+[[GSADG00135]][[gjzix]]
+Example 3-10 Creating a Service to Restart a DAS Automatically on
+Windows
+
+This example creates a service for the default domain on a system that
+is running Windows.
+
+[source]
+----
+asadmin> create-service
+Found the Windows Service and successfully uninstalled it.
+The Windows Service was created successfully.  It is ready to be started.  Here are
+the details:
+ID of the service: domain1
+Display Name of the service:domain1 Eclipse GlassFish
+Domain Directory: C:\glassfish7\glassfish\domains\domain1
+Configuration file for Windows Services Wrapper: C:\glassfish7\glassfish\domains\
+domain1\bin\domain1Service.xml
+The service can be controlled using the Windows Services Manager or you can use the
+Windows Services Wrapper instead:
+Start Command:  C:\glassfish7\glassfish\domains\domain1\bin\domain1Service.exe  start
+Stop Command:   C:\glassfish7\glassfish\domains\domain1\bin\domain1Service.exe  stop
+Uninstall Command:  C:\glassfish7\glassfish\domains\domain1\bin\domain1Service.exe
+uninstall
+Install Command:  C:\glassfish7\glassfish\domains\domain1\bin\domain1Service.exe
+install
+
+This message is also available in a file named PlatformServices.log in the domain's
+root directory
+Command create-service executed successfully.
+----
+
+[[GSADG00136]][[gktso]]
+Example 3-11 Querying the Service to Restart a DAS Automatically on
+Windows
+
+This obtains information about the service for the default domain on a
+system that is running Windows.
+
+[source]
+----
+C:\> sc query domain1
+
+SERVICE_NAME: domain1
+        TYPE               : 10  WIN32_OWN_PROCESS
+        STATE              : 1  STOPPED
+        WIN32_EXIT_CODE    : 1077  (0x435)
+        SERVICE_EXIT_CODE  : 0  (0x0)
+        CHECKPOINT         : 0x0
+        WAIT_HINT          : 0x0
+----
+
+[[giurs]][[GSADG00339]][[to-configure-a-das-or-an-instance-for-automatic-restart-on-linux]]
+
+==== To Configure a DAS or an Instance for Automatic Restart on Linux
+
+On Linux systems, the `create-service` subcommand creates a
+System-V-style initialization script
+`/etc/init.d/GlassFish_`domain-or-instance-name and installs a link to
+this script in any `/etc/rc`N`.d` directory that is present, where N is
+`0`, `1`, `2`, `3`, `4`, `5`, `6`, and `S`. After this subcommand
+creates the script, you must use this script to start, stop, or restart
+the domain or instance.
+
+The script automatically restarts the domain or instance only during a
+reboot. If the domain or instance is stopped, but the host remains
+running, the domain or instance is not restarted automatically. To
+restart the domain or instance, you must run the script manually.
+
+You might no longer require the domain or instance to be automatically
+restarted during a reboot. In this situation, use the operating system
+to delete the initialization script and the link to the script that the
+`create-service` subcommand creates.
+
+The `create-service` subcommand must be run as the OS-level root user.
+
+Create the service by using the link:reference-manual/create-service.html#GSRFM00057[`create-service`]
+subcommand.
+
+[[GSADG828]][[sthref19]]
+Example 3-12 Creating a Service to Restart a DAS Automatically on Linux
+
+This example creates a service for the default domain on a system that
+is running Linux.
+
+[source]
+----
+asadmin> create-service
+Found the Linux Service and successfully uninstalled it.
+The Service was created successfully. Here are the details:
+Name of the service:domain1
+Type of the service:Domain
+Configuration location of the service:/etc/init.d/GlassFish_domain1
+User account that will run the service: root
+You have created the service but you need to start it yourself.
+Here are the most typical Linux commands of interest:
+
+* /etc/init.d/GlassFish_domain1 start
+* /etc/init.d/GlassFish_domain1 stop
+* /etc/init.d/GlassFish_domain1 restart
+
+For your convenience this message has also been saved to this file:
+/export/glassfish7/glassfish/domains/domain1/PlatformServices.log
+Command create-service executed successfully.
+----
+
+[[giusi]][[GSADG00340]][[to-configure-a-das-or-an-instance-for-automatic-restart-on-oracle-solaris]]
+
+==== To Configure a DAS or an Instance for Automatic Restart on Oracle Solaris
+
+On Oracle Solaris systems, the `create-service` subcommand creates an
+Oracle Solaris Service Management Facility (SMF) service that restarts a
+DAS or an instance. The service grants to the process the privileges of
+the user that runs the process. When you create an SMF service, the
+default user is the superuser. If you require a different user to run
+the process, specify the user in `method_credential`.
+
+If your process is to bind to a privileged port of Oracle Solaris, the
+process requires the `net_privaddr` privilege. The privileged ports of
+the Oracle Solaris operating system have port numbers less than 1024.
+
+To determine if a user has the `net_privaddr` privilege, log in as that
+user and type the command `ppriv -l | grep net_privaddr`.
+
+After you create and enable the SMF service, if the domain or instance
+is stopped, SMF restarts it.
+
+[[GSADG829]]
+
+Before You Begin
+
+To run the `create-service` subcommand, you must have `solaris.smf.*`
+authorization. For information about how to set the authorizations, see
+the
+http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Museradd-1m[`useradd`(1M)]
+man page and the
+http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Musermod-1m[`usermod`(1M)]
+man page. You must also have write permission in the directory tree:
+`/var/svc/manifest/application/SUNWappserver`. Usually, the superuser
+has both of these permissions. Additionally, Oracle Solaris
+administration commands such as
+http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Msvccfg-1m[`svccfg`],
+http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1svcs-1[`svcs`],
+and
+http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1auths-1[`auths`]
+must be available in the PATH.
+
+If a particular {productName} domain or instance should not have
+default user privileges, modify the manifest of the service and reimport
+the service.
+
+1. Create the service by using the link:reference-manual/create-service.html#GSRFM00057[`create-service`]
+subcommand.
+2. After the service is created, enable the service by using the
+`svacdm enable` command.
++
+For example, to enable the SMF service for the default domain, type:
++
+[source]
+----
+svacdm enable /appserver/domains/domain1
+----
+
+[[GSADG00137]][[giuqp]]
+Example 3-13 Creating a Service to Restart a Domain Automatically on
+Oracle Solaris
+
+This example creates a service for the default domain on a system that
+is running Oracle Solaris.
+
+[source]
+----
+asadmin> create-service
+The Service was created successfully. Here are the details:
+Name of the service:application/GlassFish/domain1
+Type of the service:Domain
+Configuration location of the service:/home/gfuser/glassfish-installations
+/glassfish7/glassfish/domains
+Manifest file location on the system:/var/svc/manifest/application
+/GlassFish/domain1_home_gfuser_glassfish-installations_glassfish7
+_glassfish_domains/Domain-service-smf.xml.
+You have created the service but you need to start it yourself.
+Here are the most typical Solaris commands of interest:
+* /usr/bin/svcs -a | grep domain1 // status
+* /usr/sbin/svcadm enable domain1 // start
+* /usr/sbin/svcadm disable domain1 // stop
+* /usr/sbin/svccfg delete domain1 // uninstall
+Command create-service executed successfully
+----
+
+[[GSADG830]]
+
+See Also
+
+For information about administering the service, see the following
+Oracle Solaris documentation:
+
+* "http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=SYSADV1hbrunlevels-25516[Managing
+Services (Overview)]" in System Administration Guide: Basic
+Administration
+* "http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=SYSADV1faauf[Managing
+Services (Tasks)]" in System Administration Guide: Basic Administration
+* http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1auths-1[`auths`(1)]
+* http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1svcs-1[`svcs`(1)]
+* http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Msvcadm-1m[`svcadm`(1M)]
+* http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Msvccfg-1m[`svccfg`(1M)]
+* http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Museradd-1m[`useradd`(1M)]
+* http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Musermod-1m[`usermod`(1M)]
+* http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN5rbac-5[`rbac`(5)]
+* http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN5smf-security-5[`smf_security`(5)]
+
+[[giurf]][[GSADG00341]][[to-prevent-service-shutdown-when-a-user-logs-out-on-windows]]
+
+==== To Prevent Service Shutdown When a User Logs Out on Windows
+
+By default, the Java Virtual Machine (VM) receives signals from Windows
+that indicate that Windows is shutting down, or that a user is logging
+out of Windows, which causes the system to shut itself down cleanly.
+This behavior causes the {productName} service to shut down. To
+prevent the service from shutting down when a user logs out, you must
+set the `-Xrs` Java VM option
+(`https://github.com/eclipse-ee4j/glassfishdocumentation`).
+
+1. Ensure that the DAS is running.
+
+2. Set the `-Xrs` Java VM option for the DAS.
+Use the link:reference-manual/create-jvm-options.html#GSRFM00042[`create-jvm-options`] subcommand for this purpose.
++
+[source]
+----
+asadmin> create-jvm-options -Xrs
+----
+
+3. Set the `-Xrs` Java VM option for the Java VM within which the `asadmin` utility runs.
+To set this option, edit the `asadmin.bat` file to add the `-Xrs` option
+to the line that runs the `admin-cli.jar` file.
+..  In the as-install``\bin\asadmin.bat`` file, edit the line to read as follows:
++
+[source]
+----
+%JAVA% -Xrs -jar "%~dp0..\modules\admin-cli.jar" %*
+----
+.. In the as-install-parent``\bin\asadmin.bat`` file, edit the line to read as follows:
++
+[source]
+----
+%JAVA% -Xrs -jar "%~dp0..\glassfish\modules\admin-cli.jar" %*
+----
+
+4. If the {productName} service is running, restart the service for your changes to take effect.
+
+[[gityo]][[GSADG00541]][[backing-up-and-restoring-a-domain]]
+
+=== Backing Up and Restoring a Domain
+
+The following topics are addressed here:
+
+* link:#ggocq[To Back Up a Domain]
+* link:#ggody[To Restore a Domain]
+* link:#ghgod[To List Domain Backups]
+
+[[ggocq]][[GSADG00352]][[to-back-up-a-domain]]
+
+==== To Back Up a Domain
+
+Use the `backup-domain` subcommand in local mode to make a backup of a
+specified domain.
+
+When you use the `backup-domain` subcommand, {productName} creates a
+ZIP file backup of all the files and subdirectories in the domain's
+directory, domain-root-dir``/``domain-dir, except for the `backups`
+subdirectory.
+
+The `backup-domain` subcommand provides several options to meet
+particular needs, including:
+
+* `--backupdir` to specify a directory in which to store the backup
+instead of the default domain-root-dir``/``domain-dir``/backups``.
+* `--description` to provide a description of the backup to be stored in
+the backup itself.
+
+1. Ensure that the domain is stopped .
++
+The `backup-domain` subcommand operates only when the domain is stopped.
+2. Back up the domain by using the link:reference-manual/backup-domain.html#GSRFM00003[`backup-domain`]
+subcommand.
+3. Restore the domain to its previous state, if necessary.
++
+Start or resume the domain.
+
+[[GSADG00149]][[ggoxt]]
+Example 3-14 Backing Up the Default Domain
+
+This example makes a backup of the default domain, `domain1`, storing
+the backup file in `/net/backups.example.com/glassfish`:
+
+[source]
+----
+asadmin> backup-domain --backupdir /net/backups.example.com/glassfish domain1
+Backed up domain1 at Mon Jan 17 08:16:22 PST 2011.
+Command backup-domain executed successfully
+----
+
+[[GSADG842]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help backup-domain` at the command line.
+
+[[ggody]][[GSADG00353]][[to-restore-a-domain]]
+
+==== To Restore a Domain
+
+Use the `restore-domain` subcommand in local mode to use a backup file
+to restore the files and subdirectories in a specified domain's
+directory.
+
+The `restore-domain` subcommand can use backup files created by the
+`backup-domain` subcommand and by automatic backup configurations, both
+full backups and configuration-only backups. Automatic backup
+configurations are available only in {productName}.
+
+1. If necessary, notify domain users that the domain is being restored
+from backup.
+2. Ensure that the domain is stopped.
++
+The `restore-domain` subcommand operates only when the domain is
+stopped.
++
+To determine whether the domain is running, use the
+link:reference-manual/list-domains.html#GSRFM00163[`list-domains`] subcommand, as described in
+link:#ggoco[To List Domains].
++
+To stop the domain, use the link:reference-manual/stop-domain.html#GSRFM00240[`stop-domain`] subcommand
+as described in link:#ggoch[To Stop a Domain].
+3. Restore backup files for a domain by using the
+link:reference-manual/restore-domain.html#GSRFM00221[`restore-domain`] subcommand.
+4. Verify that the restore has succeeded.
+5. If necessary, notify users that the domain has been restored and is
+available.
+
+[[GSADG00150]][[ggoys]]
+Example 3-15 Restoring the Default Domain
+
+This example restores files for the default domain, `domain1`, from the
+most recent backup stored in a specified backup directory:
+
+[source]
+----
+asadmin> restore-domain --backupdir /net/backups.example.com/glassfish domain1
+Restored the domain (domain1) to /home/user1/glassfish7/glassfish/domains/domain1
+Command restore-domain executed successfully.
+----
+
+[[GSADG843]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin restore-domain --help` at the command line.
+
+[[ghgod]][[GSADG00354]][[to-list-domain-backups]]
+
+==== To List Domain Backups
+
+Use the `list-backups` subcommand in local mode to display information
+about backups of a specified domain stored in a specified backup
+directory.
+
+The `list-backups` subcommand provides several options to meet
+particular needs, including `--backupdir` to specify a directory where
+backups are stored instead of the default domain-dir``/backups``.
+
+List backups by using the `list-backups` subcommand.
+
+[[GSADG00151]][[ghgsv]]
+Example 3-16 Listing Backups of the Default Domain
+
+This example lists the backups of the default domain, `domain1`, that
+are stored in the `/net/backups.example.com/glassfish` directory:
+
+[source]
+----
+asadmin> list-backups --backupdir /net/backups.example.com/glassfish domain1
+CONFIG        USER   BACKUP DATE                   FILENAME
+              user1  Mon Jan 17 08:16:22 PST 2011  domain1_2011_01_17_v00001.zip
+monthly-full  user1  Wed Dec 01 00:00:00 PST 2010  domain1_2010_12_01_v00001.zip
+monthly-full  user1  Sat Jan 01 00:00:03 PST 2011  domain1_2011_01_01_v00001.zip
+monthly-full  user1  Tue Feb 01 00:00:01 PST 2011  domain1_2011_02_01_v00001.zip
+Command list-backups executed successfully.
+----
+
+Note that this listing includes backups created automatically by a
+backup configuration. This feature is available only in {productName}.
+
+[[GSADG844]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-backups` at the command line.
+
+[[gglri]][[GSADG00542]][[re-creating-the-domain-administration-server-das]]
+
+=== Re-Creating the Domain Administration Server (DAS)
+
+For mirroring purposes, and to provide a working copy of the DAS, you
+must have:
+
+* One host (olddashost) that contains the original DAS.
+* A second host (apphost) that contains a cluster with server instances
+running applications and catering to clients. The cluster is configured
+using the DAS on the first host.
+* A third host (newdashost) where the DAS needs to be re-created in a
+situation where the first host crashes or is being taken out of service.
+
+
+[NOTE]
+====
+You must maintain a backup of the DAS from the first host using the
+olink:GSRFM00003[`backup-domain`] subcommand as described in
+link:#ggocq[To Back Up a Domain]. You can automatically maintain a
+backup of the DAS using the automatic backups feature of {productName}.
+====
+
+
+
+[NOTE]
+====
+{productName} includes `asadmin` subcommands that simplify
+this procedure. If you are using {productName}, see
+link:#gglnp[To Migrate the DAS].
+====
+
+
+[[gglnp]][[GSADG00355]][[to-migrate-the-das]]
+
+==== To Migrate the DAS
+
+The following steps are required to migrate the DAS from the first host
+(olddashost) to the third host (newdashost).
+
+1. Install {productName} on newdashost just as it was installed on olddashost.
+This is required so that the DAS can be properly restored on newdashost without causing path conflicts.
+
+2. Use the `restore-domain` subcommand to restore the latest backup file onto newdashost.
+For example:
++
+[source]
+----
+asadmin> restore-domain --backupdir /net/backups.example.com/glassfish
+----
+This example assumes that backups are stored in a network-accessible location.
+If this is not the case, manually copy the latest backup file
+from offline storage to a directory on newdashost.
+You can backup any domain. However, while re-creating the domain, the
+domain name should be same as the original.
+
+3. Stop the domain on olddashost, if it is running.
+
+4. Start the domain on newdashost by using the
+link:reference-manual/start-domain.html#GSRFM00235[`start-domain`] subcommand.
+For example:
++
+[source]
+----
+asadmin> start-domain domain1
+----
+
+5. If the domain on olddashost was centrally administered, set up
+centralized administration on newdashost.
+See "link:ha-administration-guide/ssh-setup.html#GSHAG00003[Enabling Centralized Administration of {productName} Instances]"
+in {productName} High Availability Administration Guide for instructions.
+
+6. Verify that instances on other hosts are visible to the new DAS on newdashost:
++
+[source]
+----
+asadmin> list-instances --long
+----
+7. Change the DAS host values for properties under the node on apphost.
+In the file as-install``/nodes/``node-name``/agent/config/das.properties``
+file, change the `agent.das.host` property value to refer to newdashost
+instead of olddasnost.
+
+8. Use the new DAS to restart clusters and standalone instances on apphost:
+Restarting the clustered and standalone instances on apphost triggers
+their recognition of the new DAS on newdashost.
+..  Use the `list-clusters` subcommand to list the clusters in the domain.
+..  Use the `stop-cluster` subcommand to stop each cluster.
+..  Use the `list-instances` subcommand to list the instances in the domain.
+..  Use the `restart-instance` subcommand to restart each standalone instance.
+..  Use the `start-cluster` subcommand to start each cluster.
+    If the domain does not use centralized administration, use the
+    `start-local-instance` subcommand to start the cluster instances on apphost.
+
+9. Verify that instances on apphost are running:
++
+[source]
+----
+asadmin> list-instances --long
+----
+10. Decommission and discontinue use of the DAS on olddashost.
+
+[[gitvn]][[GSADG00543]][[additional-domain-tasks]]
+
+=== Additional Domain Tasks
+
+The following topics are addressed here:
+
+* link:#ghhnt[To Display Domain Uptime]
+* link:#ghmbn[To Switch a Domain to Another Supported Java Version]
+* link:#gkvkb[To Change the Administration Port of a Domain]
+
+[[ghhnt]][[GSADG00356]][[to-display-domain-uptime]]
+
+==== To Display Domain Uptime
+
+Use the `uptime` subcommand in remote mode to display the length of time
+that the domain administration server (DAS) has been running since it
+was last started.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Display uptime by using the link:reference-manual/uptime.html#GSRFM00258[`uptime`] subcommand.
+
+[[GSADG00152]][[ghlds]]
+Example 3-17 Displaying the DAS Uptime
+
+This example displays the length of time that the DAS has been running.
+
+[source]
+----
+asadmin> uptime
+Uptime: 1 Weeks, 4 days, 0 hours, 17 minutes, 14 seconds, Total milliseconds: 951434595
+Command uptime executed successfully.
+----
+
+[[GSADG845]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help uptime` at the command line.
+
+[[ghmbn]][[GSADG00357]][[to-switch-a-domain-to-another-supported-java-version]]
+
+==== To Switch a Domain to Another Supported Java Version
+
+{productName} 7 requires Java SE 11 as the underlying virtual
+machine for the Java platform (Java Virtual Machine or JVM machine).
+
+[NOTE]
+====
+Do not downgrade to an earlier Java version after a domain has been
+created with a newer JVM machine. If you must downgrade your JVM
+machine, downgrade it only for individual domains.
+====
+
+1. If you have not already done so, download the desired Java SDK (not the JRE) and install it on your system.
+The Java SDK can be downloaded from the
+https://jdk.java.net/java-se-ri/11[Java SE RI Downloads page] .
+
+2. Start the domain for which you are changing the JDK.
+Use the following format:
++
+[source]
+----
+as-install/bin/asadmin start-domain domain-name
+----
+
+For a valid JVM installation, locations are checked in the following order:
+
+1. `domain.xml` (`java-home` inside `java-config`)
+
+2. `asenv.conf` (setting `AS_JAVA="path to java home"`)
+If a legal JDK is not found, a fatal error occurs and the problem is reported back to you.
+
+3. If necessary, change the JVM machine attributes for the domain.
+In particular, you might need to change the `JAVA_HOME` environment
+variable. For example, to change the `JAVA_HOME` variable, type:
++
+[source]
+----
+as-install/bin/asadmin set "server.java-config.java-home=path-to-java-home"
+----
+
+[[gkvkb]][[GSADG00358]][[to-change-the-administration-port-of-a-domain]]
+
+==== To Change the Administration Port of a Domain
+
+Use the `set` subcommand in remote mode to change the administration
+port of a domain.
+
+The HTTP port or the HTTPS port for administration of a domain is
+defined by the `--adminport` option of the
+link:reference-manual/create-domain.html#GSRFM00023[`create-domain`] subcommand when the domain is created.
+If this port must be reallocated for another purpose, change the port on
+which the DAS listens for administration requests.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Set the port number to its new value.
+Use the link:reference-manual/set.html#GSRFM00226[`set`] subcommand for this purpose.
++
+[source]
+----
+$ asadmin set
+server-config.network-config.network-listeners.network-listener.admin-listener.port=new-port-number
+----
+The new-port-number is the new value that you are setting for the port
+number.
++
+[NOTE]
+====
+After you set the port number to its new value, running the
+`list-domains` subcommand incorrectly reports that the DAS is not
+running. The `list-domains` subcommand reports the correct state again
+only after you stop and restart the domain as explained in the steps
+that follow.
+====
+
+3. Stop the domain, specifying the host on which the DAS is running and
+the old administration port number of the domain.
+You must specify the old port number because the DAS is still listening
+for administration requests on this port. If you omit the port number,
+the command fails because the `stop-domain` subcommand attempts to
+contact the DAS through the new port number.
++
+[NOTE]
+====
+Only the options that are required to complete this task are provided in
+this step. For information about all the options for controlling the
+behavior of the domain, see the olink:GSRFM00240[`stop-domain`(1)] help
+page.
+====
++
+[source]
+----
+$ asadmin --host host-name --port old-port-number stop-domain
+----
+host-name::
+  The name of the host on which the DAS is running. If you run the
+  `stop-domain` subcommand on the host where the DAS is running, you
+  must specify the actual host name and not `localhost`. If you specify
+  `localhost`, the `stop-domain` subcommand fails.
+old-port-number::
+  The value of administration port number of the domain before you
+  changed it in the preceding step.
+
+4. Start the domain.
++
+[NOTE]
+====
+Only the options that are required to complete this task are provided in
+this step. For information about all the options for controlling the
+behavior of the domain, see the olink:GSRFM00235[`start-domain`(1)] help
+page.
+====
++
+[source]
+----
+$ start-domain [domain-name]
+----
+The domain-name is the name of the domain to start. If only one domain
+subdirectory is contained in the `domains` directory, you may omit this
+option.
+
+[[GSADG00153]][[gkvkl]]
+Example 3-18 Changing the Administration Port of a Domain
+
+This example changes the administration port of the domain `domain1`
+from 4848 to 4849. The DAS is running on the host `xk01.example.com`.
+
+[source]
+----
+$ asadmin set
+server-config.network-config.network-listeners.network-listener.admin-listener.port=4849
+server-config.network-config.network-listeners.network-listener.admin-listener.port=4849
+Command set executed successfully.
+$ asadmin --host xk01.example.com --port 4848 stop-domain
+Waiting for the domain to stop ....
+Command stop-domain executed successfully.
+$ asadmin start-domain
+Waiting for domain1 to start ........................
+Successfully started the domain : domain1
+domain  Location: /export/glassfish7/glassfish/domains/domain1
+Log File: /export/glassfish7/glassfish/domains/domain1/logs/server.log
+Admin Port: 4849
+Command start-domain executed successfully.
+----
+
+[[GSADG846]]
+
+See Also
+
+* link:reference-manual/create-domain.html#GSRFM00023[`create-domain`(1)]
+* link:reference-manual/set.html#GSRFM00226[`set`(1)]
+* link:reference-manual/start-domain.html#GSRFM00235[`start-domain`(1)]
+* link:reference-manual/stop-domain.html#GSRFM00240[`stop-domain`(1)]
+
+You can also view the full syntax and options of the subcommands by
+typing the following commands at the command line:
+
+* `asadmin help create-domain`
+* `asadmin help set`
+* `asadmin help start-domain`
+* `asadmin help stop-domain`
+
+
diff --git a/docs/administration-guide/src/main/asciidoc/general-administration.adoc b/docs/administration-guide/src/main/asciidoc/general-administration.adoc
new file mode 100644
index 0000000..0e174af
--- /dev/null
+++ b/docs/administration-guide/src/main/asciidoc/general-administration.adoc
@@ -0,0 +1,3206 @@
+type=page
+status=published
+title=General Administration
+next=domains.html
+prev=part-runtime-admin.html
+~~~~~~
+
+= General Administration
+
+[[GSADG00005]][[gitya]]
+
+
+[[general-administration]]
+== 2 General Administration
+
+This chapter provides instructions for performing general administration
+tasks in the {productName} 7 environment by
+using the `asadmin` command-line utility.
+
+The following topics are addressed here:
+
+* link:#giobi[Using the `asadmin` Utility]
+* link:#ghcjc[Administering System Properties]
+* link:#CHDJBJDA[Using Configuration Modularity]
+* link:#gixps[Administering Resources]
+* link:#ggocm[Listing Various System Elements]
+* link:#gjipx[Using REST Interfaces to Administer {productName}]
+
+Instructions for accomplishing the tasks in this chapter by using the
+Administration Console are contained in the Administration Console
+online help.
+
+[[giobi]][[GSADG00530]][[using-the-asadmin-utility]]
+
+=== Using the `asadmin` Utility
+
+Use the `asadmin` utility to perform administrative tasks for {productName} from the command line or from a script. You can use this utility
+instead of the Administration Console interface.
+
+The following topics are addressed here:
+
+* link:#giwdb[Path to the `asadmin` Utility]
+* link:#givvn[`asadmin` Utility Syntax]
+* link:#ghvzx[To Run an `asadmin` Utility Subcommand in Single Mode]
+* link:#givlw[To Display Help Information for the `asadmin` Utility or a
+Subcommand]
+* link:#giodz[To Start a Multimode Session]
+* link:#givjn[To End a Multimode Session]
+* link:#givjd[To Run a Set of `asadmin` Subcommands From a File]
+* link:#CACDDHBA[To Run `asadmin` Subcommands in `--detach` Mode]
+
+[[giwdb]][[GSADG00705]][[path-to-the-asadmin-utility]]
+
+==== Path to the `asadmin` Utility
+
+The `asadmin` utility is located in the as-install``/bin`` directory. To
+run the `asadmin` utility without specifying the path, ensure that this
+directory is in your path.
+
+[[givvn]][[GSADG00706]][[asadmin-utility-syntax]]
+
+==== `asadmin` Utility Syntax
+
+The syntax for running the `asadmin` utility is as follows:
+
+[source]
+----
+asadmin [asadmin-util-options] [subcommand [subcommand-options] [operands]]
+----
+
+The replaceable items in this syntax are described in the subsections
+that follow. For full details of this syntax, see the
+https://github.com/eclipse-ee4j/glassfishdoc/5.0/reference-manual.pdf[`asadmin`(1M)]
+help page.
+
+[[ghvzn]][[GSADG00631]][[subcommands-of-the-asadmin-utility]]
+
+===== Subcommands of the `asadmin` Utility
+
+The subcommand identifies the operation or task that you are performing.
+Subcommands are case-sensitive. Each subcommand is either a local
+subcommand or a remote subcommand.
+
+* A local subcommand can be run without a running domain administration
+server (DAS). However, to run the subcommand and have access to the
+installation directory and the domain directory, the user must be logged
+in to the machine that hosts the domain.
+* A remote subcommand is always run by connecting to a DAS and running
+the subcommand there. A running DAS is required.
+
+For a list of the subcommands for this release of {productName}, see
+Section 1 of the
+https://github.com/eclipse-ee4j/glassfishdoc/5.0/reference-manual.pdf[{productName} Reference Manual].
+
+[[ghvyd]][[GSADG00632]][[asadmin-utility-options-and-subcommand-options]]
+
+===== `asadmin` Utility Options and Subcommand Options
+
+Options control the behavior of the `asadmin` utility and its
+subcommands. Options are case-sensitive.
+
+The `asadmin` utility has the following types of options:
+
+* `asadmin` utility options. These options control the behavior of the
+`asadmin` utility, not the subcommand. The `asadmin` utility options may
+precede or follow the subcommand, but `asadmin` utility options after
+the subcommand are deprecated. All `asadmin` utility options must either
+precede or follow the subcommand. If `asadmin` utility options are
+specified both before and after the subcommand, an error occurs. For a
+description of the `asadmin` utility options, see the
+link:reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] help page.
+* Subcommand Options. These options control the behavior of the
+subcommand, not the `asadmin` utility. Subcommand options must follow
+the subcommand. For a description of a subcommand's options, see the
+entry for the subcommand in the
+https://github.com/eclipse-ee4j/glassfishdoc/5.0/reference-manual.pdf[{productName} Reference Manual].
++
+
+[NOTE]
+====
+Not all subcommand options are supported for this release of {productName}. If you specify an unsupported option, a syntax error does not
+occur. Instead, the command runs successfully and the unsupported option
+is silently ignored.
+====
+
+
+A subcommand option may have the same name as an `asadmin` utility
+option, but the effects of the two options are different.
+
+Options have a long form and a short form.
+
+* The short form of an option has a single dash (`-`) followed by a
+single character.
+* The long form of an option has two dashes (`--`) followed by an option
+word.
+
+For example, the short form and the long form of the option for
+specifying terse output are as follows:
+
+* Short form: `-t`
+* Long form: `--terse`
+
+Most options require argument values, except Boolean options, which
+toggle to enable or disable a feature.
+
+[[ghvyj]][[GSADG00633]][[operands-of-asadmin-utility-subcommands]]
+
+===== Operands of `asadmin` Utility Subcommands
+
+Operands specify the items on which the subcommand is to act. Operands
+must follow the argument values of subcommand options, and are set off
+by a space, a tab, or double dashes (`--`). The `asadmin` utility treats
+anything that follows the subcommand options and their values as an
+operand.
+
+[[ghvzx]][[GSADG00304]][[to-run-an-asadmin-utility-subcommand-in-single-mode]]
+
+==== To Run an `asadmin` Utility Subcommand in Single Mode
+
+In single mode, you must type a separate `asadmin` command for each
+subcommand that you want to use. After the subcommand has run, you are
+returned to the operating system's command shell. Any `asadmin` utility
+options must be specified in each separate `asadmin` command that you
+run. If you require the same `asadmin` utility options for multiple
+subcommands, use the `asadmin` utility in multimode. For more
+information, see link:#giodz[To Start a Multimode Session].
+
+1. In the operating system's command shell, run the `asadmin` utility,
+specifying the subcommand.
+2. If necessary, also specify any required `asadmin` utility options,
+subcommand options, and operands.
+
+[[GSADG00098]][[giwdr]]
+Example 2-1 Running an `asadmin` Utility Subcommand in Single Mode
+
+This example runs the link:reference-manual/list-applications.html#GSRFM00148[`list-applications`] subcommand
+in single mode. In this example, the default values for all options are
+used.
+
+The example shows that the application `hello` is deployed on the local
+host.
+
+[source]
+----
+asadmin list-applications
+hello <web>
+Command list-applications executed successfully.
+----
+
+[[GSADG00099]][[giwbf]]
+Example 2-2 Specifying an `asadmin` Utility Option With a Subcommand in
+Single Mode
+
+This example specifies the `--host` `asadmin` utility option with the
+`list-applications` subcommand in single mode. In this example, the DAS
+is running on the host `srvr1.example.com`.
+
+The example shows that the applications `basic-ezcomp`, `scrumtoys`,
+`ejb31-war`, and `automatic-timer-ejb` are deployed on the host
+`srvr1.example.com`.
+
+[source]
+----
+asadmin --host srvr1.example.com list-applications
+basic-ezcomp <web>
+scrumtoys <web>
+ejb31-war <ejb, web>
+automatic-timer-ejb <ejb>
+Command list-applications executed successfully.
+----
+
+[[GSADG00100]][[ghvyk]]
+Example 2-3 Specifying an `asadmin` Utility Option and a Subcommand
+Option in Single Mode
+
+This example specifies the `--host` `asadmin` utility option and the
+`--type` subcommand option with the `list-applications` subcommand in
+single mode. In this example, the DAS is running on the host
+`srvr1.example.com` and applications of type `web` are to be listed.
+
+[source]
+----
+asadmin --host srvr1.example.com list-applications --type web
+basic-ezcomp <web>
+scrumtoys <web>
+ejb31-war <ejb, web>
+Command list-applications executed successfully.
+----
+
+[[givlw]][[GSADG00305]][[to-display-help-information-for-the-asadmin-utility-or-a-subcommand]]
+
+==== To Display Help Information for the `asadmin` Utility or a Subcommand
+
+{productName} provides help information about the syntax, purpose,
+and options of the `asadmin` utility and its subcommands. This help
+information is written in the style of UNIX platform man pages. This
+help information is also available in the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+1. If you are displaying help information for a remote subcommand,
+ensure that the server is running.
++
+Remote subcommands require a running server.
+2. Specify the subcommand of interest as the operand of the `help`
+subcommand.
++
+If you run the `help` subcommand without an operand, help information
+for the `asadmin` utility is displayed.
+
+[[GSADG00101]][[giwgs]]
+Example 2-4 Displaying Help Information for the `asadmin` Utility
+
+This example displays the help information for the `asadmin` utility.
+
+[source]
+----
+asadmin help
+----
+
+[[GSADG00102]][[giusg]]
+Example 2-5 Displaying Help Information for an `asadmin` Utility
+Subcommand
+
+This example displays the help information for the
+`create-jdbc-resource` subcommand.
+
+[source]
+----
+asadmin help create-jdbc-resource
+----
+
+[[GSADG800]]
+
+See Also
+
+To display the available subcommands, use the
+link:reference-manual/list-commands.html#GSRFM00154[`list-commands`] subcommand. Local subcommands are
+displayed before remote subcommands. If the server is not running, only
+local subcommands are displayed.
+
+[[giodz]][[GSADG00306]][[to-start-a-multimode-session]]
+
+==== To Start a Multimode Session
+
+The `asadmin` utility can be used in multiple command mode, or
+multimode. In multimode, you run the `asadmin` utility once to start a
+multimode session. During the session, the `asadmin` utility continues
+to accept subcommands until you end the session and return to the
+operating system's command shell. Any `asadmin` utility options that you
+set for your multimode session are used for all subsequent subcommands
+in the session.
+
+
+[NOTE]
+====
+Starting a multimode session does not require a running DAS.
+====
+
+1. Do one of the following:
+* Run the `asadmin` utility without a subcommand.
+* Use the link:reference-manual/multimode.html#GSRFM00213[`multimode`] subcommand.
+2. If necessary, also specify any `asadmin` utility options that will
+apply throughout the multimode session.
+3. In a multimode session, the `asadmin>` prompt is displayed on the
+command line. You can now type `asadmin` subcommands at this prompt to
+administer {productName}.
+
+[[GSADG00103]][[givuq]]
+Example 2-6 Starting a Multimode Session With `asadmin` Utility Options
+
+This example starts a multimode session in which the `asadmin` utility
+options `--user` and `--passwordfile` are set for the session.
+
+[source]
+----
+asadmin --user admin1 --passwordfile pwd.txt multimode
+----
+
+[[GSADG00104]][[giwgh]]
+Example 2-7 Starting a Multimode Session by Using the `multimode`
+Subcommand
+
+This example uses the `multimode` subcommand to start a multimode
+session in which the default `asadmin` utility options are used.
+
+[source]
+----
+asadmin multimode
+----
+
+The `asadmin>` prompt is displayed on the command line.
+
+[[GSADG00105]][[ghvzc]]
+Example 2-8 Running a Subcommand in a Multimode Session
+
+This example starts a multimode session and runs the `list-domains`
+subcommand in the session.
+
+[source]
+----
+asadmin
+Enter commands one per "line", ^D to quit
+asadmin> list-domains
+Name: domain1 Status: Running
+Command list-domains executed successfully.
+asadmin>
+----
+
+[[GSADG801]]
+
+Starting a Multimode Session From Within an Existing Multimode Session
+
+You can start a multimode session from within an existing session by
+running the `multimode` subcommand from within the existing session.
+After you end the second multimode session, you return to your original
+multimode session.
+
+[[GSADG802]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help multimode` at the command line.
+
+[[givjn]][[GSADG00307]][[to-end-a-multimode-session]]
+
+==== To End a Multimode Session
+
+At the `asadmin>` prompt, type one of the following commands or key
+combinations:
+
+* `exit`
+* `quit`
+* UNIX and Linux systems: Ctrl-D
+* Windows systems: Ctrl-Z
+
+
+[CAUTION]
+====
+Do not type Ctrl-C to end a multimode session. If a domain or {productName} instance is started from the multimode session, typing Ctrl-C
+kills the domain or instance process.
+====
+
+
+You are returned to the operating system's command shell and the
+`asadmin>` prompt is no longer displayed. If the `asadmin>` prompt is
+still displayed, you might have opened a multimode session within a
+multimode session. In this situation, repeat this procedure to end the
+remaining multimode session.
+
+[[givjd]][[GSADG00308]][[to-run-a-set-of-asadmin-subcommands-from-a-file]]
+
+==== To Run a Set of `asadmin` Subcommands From a File
+
+Running a set of `asadmin` subcommands from a file enables you to
+automate repetitive tasks.
+
+1. Create a plain text file that contains the sequence of subcommands
+that you want to run.
+2. Run the link:reference-manual/multimode.html#GSRFM00213[`multimode`] subcommand, specifying the
+file that you created.
++
+If necessary, also specify any `asadmin` utility options that are
+required to enable subcommands in the file to run.
+
+[[GSADG00106]][[givul]]
+Example 2-9 Running a Set of `asadmin` Subcommands From a File
+
+This example contains the following:
+
+* A listing of a file that is named `commands_file.txt`, which contains
+a sequence of `asadmin` subcommands
+* The command to run the subcommands in the file `commands_file.txt`
+
+The `commands_file.txt` file contains the `asadmin` utility subcommands
+to perform the following sequence of operations:
+
+1. Creating the domain `customdomain`
+2. Starting the domain `customdomain`
+3. Listing all available subcommands
+4. Stopping the domain `customdomain`
+5. Deleting the domain `customdomain`
+
+The content of the `commands_file.txt` file is as follows:
+
+[source]
+----
+create-domain --portbase 9000 customdomain
+start-domain customdomain
+list-commands
+stop-domain customdomain
+delete-domain customdomain
+----
+
+This example runs the sequence of subcommands in the `commands_file.txt`
+file. Because the `--portbase` option is specified for the
+`create-domain` subcommand in the file, the `--port` `asadmin` utility
+option must also be set.
+
+[source]
+----
+asadmin --port 9048 multimode --file commands_file.txt
+----
+
+[[GSADG803]]
+
+See Also
+
+For more information about the subcommands in the preceding example, see
+the following help pages:
+
+* link:reference-manual/create-domain.html#GSRFM00023[`create-domain`(1)]
+* link:reference-manual/delete-domain.html#GSRFM00075[`delete-domain`(1)]
+* link:reference-manual/list-commands.html#GSRFM00154[`list-commands`(1)]
+* link:reference-manual/multimode.html#GSRFM00213[`multimode`(1)]
+* link:reference-manual/start-domain.html#GSRFM00235[`start-domain`(1)]
+* link:reference-manual/stop-domain.html#GSRFM00240[`stop-domain`(1)]
+
+[[CACDDHBA]][[GSADG1055]][[to-run-asadmin-subcommands-in---detach-mode]]
+
+==== To Run `asadmin` Subcommands in `--detach` Mode
+
+You can use the `--detach` option of the `asadmin` utility to detach
+`asadmin` subcommands and run them in the background in detach mode. The
+`asadmin` `--detach` option is useful for long-running subcommands and
+enables you to run several independent subcommands from one console or
+script.
+
+1. Ensure that the server is running. Remote commands require a running server.
+2. Detach and run the subcommand by using the `asadmin` `--detach` option.
+
+[[GSADG1056]][[sthref7]]
+Example 2-10 Using the `--detach` Option in Single Mode
+
+This example uses the `asadmin` `--detach` option in single mode to run
+the `create-cluster` subcommand.
+
+[source]
+----
+asadmin --detach create-cluster Cluster1
+Job ID: 1
+Command create-cluster started successfully.
+----
+
+[[GSADG1057]][[sthref8]]
+Example 2-11 Using the `--detach` Option in Multimode
+
+This example uses the `asadmin` `--detach` option in multimode to run
+the `create-cluster` subcommand.
+
+[source]
+----
+asadmin> create-cluster Cluster1 --detach
+Job ID: 1
+Command create-cluster started successfully.
+----
+
+Job IDs are assigned to subcommands that are started using the `asadmin`
+`--detach` option or that contain progress information. You can use the
+`list-jobs` subcommand to list jobs and their job IDs, the `attach`
+subcommand to reattach to a job and view its status, and the
+`configure-managed-jobs` subcommand to configure how long information
+about jobs is kept.
+
+[[GSADG1058]][[sthref9]]
+Example 2-12 Listing Jobs
+
+This example runs the `list-jobs` subcommand in multimode to list jobs
+and job information.
+
+[source]
+----
+asadmin> list-jobs
+JOB ID     COMMAND           STATE       EXIT CODE TIME OF COMPLETION
+1          create-cluster    COMPLETED   SUCCESS   2013-02-15 16:16:16 PST
+2          deploy            COMPLETED   FAILURE   2013-02-15 18:26:30 PST
+Command list-jobs executed successfully
+----
+
+[[GSADG1059]][[sthref10]]
+Example 2-13 Attaching to a Subcommand and Checking Its Status
+
+This example runs the `attach` subcommand in multimode to attach to the
+`create-cluster` subcommand with a job ID of `1`. If a subcommand is
+still in progress, the output displays the current status, such as
+percentage complete.
+
+[source]
+----
+asadmin> attach 1
+Command create-cluster executed with status SUCCESS.
+Command attach executed successfully.
+----
+
+[[GSADG1060]][[sthref11]]
+Example 2-14 Configuring Managed Jobs
+
+This example runs the `configure-managed-jobs` subcommand in multimode
+to set the job retention period to 36 hours. Time periods can be
+specified in Hh|Mm|Ss for hours, minutes, or seconds.
+
+[source]
+----
+asadmin> configure-managed-jobs --job-retention-period=36h
+Command configure-managed-jobs executed successfully.
+----
+
+[[GSADG1061]]
+
+See Also
+
+For the full syntax and options of the subcommands in the preceding
+examples, see the following help pages:
+
+* link:reference-manual/attach.html#GSRFM825[`attach`(1)]
+* link:reference-manual/configure-managed-jobs.html#GSRFM836[`configure-managed-jobs`(1)]
+* link:reference-manual/list-jobs.html#GSRFM867[`list-jobs`(1)]
+
+[[ghcjc]][[GSADG00531]][[administering-system-properties]]
+
+=== Administering System Properties
+
+Shared server instances will often need to override attributes defined
+in their referenced configuration. Any configuration attribute can be
+overridden through a system property of the corresponding name.
+
+The following topics are addressed here:
+
+* link:#ggonc[To Create System Properties]
+* link:#ggodt[To List System Properties]
+* link:#ggomm[To Delete a System Property]
+
+[[ggonc]][[GSADG00309]][[to-create-system-properties]]
+
+==== To Create System Properties
+
+Use the `create-system-properties` subcommand in remote mode to create
+or update one or more system properties of the domain or configuration.
+Any configuration attribute can be overwritten through a system property
+of the corresponding name.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Create system properties by using the
+link:reference-manual/create-system-properties.html#GSRFM00059[`create-system-properties`] subcommand.
++
+Information about properties for the subcommand is included in this help
+page.
+
+[[GSADG00107]][[ggovp]]
+Example 2-15 Creating a System Property
+
+This example creates a system property associated with
+`http-listener-port=1088` on `localhost`.
+
+[source]
+----
+asadmin> create-system-properties http-listener-port=1088
+Command create-system-properties executed successfully.
+----
+
+[[GSADG804]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-system-properties` at the command line.
+
+[[ggodt]][[GSADG00310]][[to-list-system-properties]]
+
+==== To List System Properties
+
+Use the `list-system-properties` subcommand in remote mode to list the
+system properties that apply to a domain, cluster, or server instance or
+configuration.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List system properties by using the
+link:reference-manual/list-system-properties.html#GSRFM00203[`list-system-properties`] subcommand.
++
+The existing system properties are displayed, including predefined
+properties such as `HTTP_LISTENER_PORT` and `HTTP_SSL_LISTENER_PORT`.
+
+[[GSADG00108]][[ggopn]]
+Example 2-16 Listing System Properties
+
+This example lists the system properties on host `localhost`.
+
+[source]
+----
+asadmin> list-system-properties
+http-listener-port=1088
+Command list-system-properties executed successfully.
+----
+
+[[GSADG805]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-system-properties` at the command line.
+
+[[ggomm]][[GSADG00311]][[to-delete-a-system-property]]
+
+==== To Delete a System Property
+
+Use the `delete-system-property` subcommand in remote mode to delete
+system properties.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the existing system properties by using the
+link:reference-manual/list-system-properties.html#GSRFM00203[`list-system-properties`] subcommand.
+3. Delete the system property by using the
+link:reference-manual/delete-system-property.html#GSRFM00110[`delete-system-property`] subcommand.
+4. If necessary, notify users that the system property has been
+deleted.
+
+[[GSADG00109]][[ggoph]]
+Example 2-17 Deleting a System Property
+
+This example deletes a system property named `http-listener-port` from
+`localhost`.
+
+[source]
+----
+asadmin> delete-system-property http-listener-port
+Command delete-system-property executed successfully.
+----
+
+[[GSADG806]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-system-property` at the command line.
+
+[[CHDJBJDA]][[GSADG1096]][[using-configuration-modularity]]
+
+=== Using Configuration Modularity
+
+With configuration modularity in {productName},
+new modules can be added to {productName} distributions without
+modifying the global `domain.xml` configuration file. Default
+configuration data for modules is stored in the modules themselves,
+rather than in `domain.xml`, and loaded when needed.
+
+Module configuration elements are stored in `domain.xml` only when the
+default configuration included in the module is changed or when module
+configuration elements are added to `domain.xml` using the
+`create-module-config` subcommand. The `delete-module-config` subcommand
+removes module configuration elements from `domain.xml`, and the
+`get-active-module-config` subcommand displays the current active
+configuration of a module.
+
+[[CHDGCJCF]][[GSADG1097]][[to-add-the-default-configuration-of-a-module-to-domain.xml]]
+
+==== To Add the Default Configuration of a Module to `domain.xml`
+
+Use the `create-module-config` subcommand to add the default
+configuration of a module to `domain.xml`.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Add the default configuration of a module to `domain.xml` by using
+the link:reference-manual/create-jdbc-resource.html#GSRFM00037[`create-module-config`] subcommand.
+
+[[GSADG1098]][[sthref12]]
+Example 2-18 Adding Module Configuration to `domain.xml`
+
+This example adds the default configuration of the web container module
+to `domain1` in `server-config` (the default configuration). Use the
+`--dryrun` option to preview the configuration before it is added.
+
+[source]
+----
+asadmin> create-module-config web-container
+Command create-module-config executed successfully.
+----
+
+[[GSADG1099]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-module-config` at the command line.
+
+[[CHDJCJFA]][[GSADG1100]][[to-remove-the-configuration-of-a-module-from-domain.xml]]
+
+==== To Remove the Configuration of a Module From `domain.xml`
+
+Use the `delete-module-config` subcommand to remove the configuration of
+a module from `domain.xml` and cause the module to use the default
+configuration included in the module.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Remove the configuration of a module from `domain.xml` by using the
+link:reference-manual/create-jdbc-resource.html#GSRFM00037[`delete-module-config`] subcommand.
+
+[[GSADG1101]][[sthref13]]
+Example 2-19 Removing Module Configuration From `domain.xml`
+
+This example deletes the configuration of the web container module from
+`domain1` in `server-config` (the default configuration).
+
+[source]
+----
+asadmin> delete-module-config web-container
+Command delete-module-config executed successfully.
+----
+
+[[GSADG1102]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-module-config` at the command line.
+
+[[CHDICIJE]][[GSADG1103]][[to-display-the-current-active-configuration-of-a-module]]
+
+==== To Display the Current Active Configuration of a Module
+
+Use the `get-active-module-config` subcommand to display the current
+active configuration of a module.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Display the current active configuration of a module by using the
+link:reference-manual/create-jdbc-resource.html#GSRFM00037[`get-active-module-config`] subcommand.
+
+[[GSADG1104]][[sthref14]]
+Example 2-20 Displaying the Current Active Configuration of a Module
+
+This example displays the current active configuration of the JMS
+service in `server-config` (the default configuration).
+
+[source]
+----
+asadmin> get-active-module-config jms-service
+At location: domain/configs/config[server-config]
+<jms-service default-jms-host="default_JMS_host" type="EMBEDDED"
+  <jms-host port="7676" host="localhost" name="default_JMS_host"/>
+</jms-service>
+Command get-active-module-config executed successfully.
+----
+
+[[GSADG1105]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help get-active-module-config` at the command line.
+
+[[gixps]][[GSADG00532]][[administering-resources]]
+
+=== Administering Resources
+
+This section contains instructions for integrating resources into the
+{productName} environment. Information about administering specific
+resources, such as JDBC, is contained in other chapters.
+
+[[ggoeh]][[GSADG00312]][[to-add-resources-from-an-xml-file]]
+
+==== To Add Resources From an XML File
+
+Use the `add-resources` subcommand in remote mode to create the
+resources named in the specified XML file. The following resources are
+supported: JDBC connection pool and resource, JMS, JNDI, and JavaMail
+resources, custom resource, connector resource and work security map,
+admin object, and resource adapter configuration.
+
+The XML file must reside in the domain-dir``/config`` directory. If you
+specify a relative path or simply provide the name of the XML file, this
+subcommand will prepend domain-dir``/config`` to this operand.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Add resources from an XML file by using the
+link:reference-manual/add-resources.html#GSRFM00001[`add-resources`] subcommand.
++
+Information about properties for the subcommand is included in this help
+page.
+3. Restart {productName}.
++
+See link:domains.html#ginqj[To Restart a Domain].
+
+[[GSADG00110]][[ggozc]]
+Example 2-21 Adding Resources
+
+This example creates resources using the contents of the `resource.xml`
+file on `localhost`.
+
+[source]
+----
+asadmin> add-resources c:\tmp\resource.xml
+Command : JDBC resource jdbc1 created successfully.
+Command : JDBC connection pool poolA created successfully.
+Command add-resources executed successfully.
+----
+
+[[GSADG807]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help add-resources` at the command line.
+
+[[ggocm]][[GSADG00533]][[listing-various-system-elements]]
+
+=== Listing Various System Elements
+
+The following topics are addressed here:
+
+* link:#ghhox[To Display the {productName} Version]
+* link:#ggocy[To List Applications]
+* link:#ggocv[To List Containers]
+* link:#ghlgf[To List Modules]
+* link:#ggoeg[To List Subcommands]
+* link:#giojd[To List Timers]
+* link:#giyjd[To Show Component Status]
+
+[[ghhox]][[GSADG00316]][[to-display-the-glassfish-server-version]]
+
+==== To Display the {productName} Version
+
+Use the `version` subcommand in remote mode to display information about
+the {productName} version for a particular server. If the subcommand
+cannot communicate with the server by using the specified login
+(user/password) and target (host/port) information, then the local
+version is displayed along with a warning message.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Display the version by using the link:reference-manual/version.html#GSRFM00261[`version`]
+subcommand.
+
+[[GSADG00114]][[ghjnb]]
+Example 2-22 Displaying Version Information
+
+This example displays the version of {productName} on the local host.
+
+[source]
+----
+asadmin> version
+Version = Eclipse GlassFish 7.0.0 (build 19)
+Command version executed successfully.
+----
+
+[[GSADG811]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help version` at the command line.
+
+[[ggocy]][[GSADG00317]][[to-list-applications]]
+
+==== To List Applications
+
+Use the `list-applications` subcommand in remote mode to list the
+deployed Java applications. If the `--type` option is not specified, all
+applications are listed.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List applications by using the link:reference-manual/list-applications.html#GSRFM00148[`list-applications`]
+subcommand.
+
+[[GSADG00115]][[ggouk]]
+Example 2-23 Listing Applications
+
+This example lists the web applications on `localhost`.
+
+[source]
+----
+asadmin> list-applications --type web
+hellojsp <web>
+Command list-applications executed successfully.
+----
+
+[[GSADG812]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-applications` at the command line.
+
+[[ggocv]][[GSADG00319]][[to-list-containers]]
+
+==== To List Containers
+
+Use the `list-containers` subcommand in remote mode to list application
+containers.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List containers by using the link:reference-manual/list-containers.html#GSRFM00161[`list-containers`]
+subcommand.
+
+[[GSADG00116]][[ggown]]
+Example 2-24 Listing Containers
+
+This example lists the containers on `localhost`.
+
+[source]
+----
+asadmin> list-containers
+List all known application containers
+Container : grizzly
+Container : ejb
+Container : webservices
+Container : ear
+Container : appclient
+Container : connector
+Container : jpa
+Container : web
+Container : security
+Container : webbeans
+Command list-containers executed successfully.
+----
+
+[[GSADG813]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-containers` at the command line.
+
+[[ghlgf]][[GSADG00320]][[to-list-modules]]
+
+==== To List Modules
+
+Use the `list-modules` subcommand in remote mode to list the modules
+that are accessible to the {productName} module subsystem. The status
+of each module is included. Possible statuses include NEW and READY.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List modules by using the link:reference-manual/list-modules.html#GSRFM00185[`list-modules`]
+subcommand.
+
+[[GSADG00117]][[ghlfw]]
+Example 2-25 Listing Modules
+
+This example lists the accessible modules.
+
+[source]
+----
+asadmin> list-modules
+----
+
+Information similar to the following is displayed (partial output):
+
+[source]
+----
+List Of Modules
+Module : org.glassfish.web.jstl-connector:10.0.0.b28
+    properties=(visibility=public,State=READY,Sticky=true)
+    Module Characteristics : List of Jars implementing the module
+        Jar : file:/C:/Preview/v3_Preview_release/distributions/web/target/glass
+fish/modules/web/jstl-connector.jar
+    Module Characteristics : List of imported modules
+    Module Characteristics : Provides to following services
+Module : org.glassfish.admingui.console-common:10.0.0.b28
+    properties=(visibility=public,State=NEW,Sticky=true)
+Module : org.glassfish.admin.launcher:10.0.0.b28
+    properties=(visibility=public,State=NEW,Sticky=true)
+Module : org.glassfish.external.commons-codec-repackaged:10.0.0.b28
+    properties=(visibility=public,State=NEW,Sticky=true)
+Module : com.sun.enterprise.tiger-types-osgi:0.3.32.Preview-b28
+    properties=(visibility=public,State=READY,Sticky=true)
+    Module Characteristics : List of imported modules
+    Module Characteristics : Provides to following services
+    Module Characteristics : List of Jars implementing the module
+        Jar : file:/C:/Preview/v3_Preview_release/distributions/web/target/glass
+fish/modules/tiger-types-osgi.jar.
+...
+Command list-modules executed successfully.
+----
+
+[[GSADG814]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-modules` at the command line.
+
+[[ggoeg]][[GSADG00321]][[to-list-subcommands]]
+
+==== To List Subcommands
+
+Use the `list-commands` subcommand in remote mode to list the deployed
+`asadmin` subcommands. You can specify that only remote subcommands or
+only local subcommands are listed. By default, this subcommand displays
+a list of local subcommands followed by a list of remote subcommands.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List subcommands by using the link:reference-manual/list-commands.html#GSRFM00154[`list-commands`]
+subcommand.
+
+[[GSADG00118]][[ggpdl]]
+Example 2-26 Listing Subcommands
+
+This example lists only local subcommands.
+
+[source]
+----
+asadmin> list-commands --localonly
+create-domain
+delete-domain
+list-commands
+list-domains
+login
+monitor
+start-database
+start-domain
+stop-domain
+stop-database
+version
+Command list-commands executed successfully.
+----
+
+[[GSADG815]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-commands` at the command line.
+
+[[giojd]][[GSADG00322]][[to-list-timers]]
+
+==== To List Timers
+
+The timer service is a persistent and transactional notification service
+that is provided by the enterprise bean container and is used to
+schedule notifications or events used by enterprise beans. All
+enterprise beans except stateful session beans can receive notifications
+from the timer service. Persistent timers set by the service are not
+destroyed when the server is shut down or restarted.
+
+Use the `list-timers` subcommand in remote mode to list the persistent
+timers owned by a specific server instance. You can use this information
+to decide whether to do a timer migration, or to verify that a migration
+has been completed successfully.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List timers by using the link:reference-manual/list-timers.html#GSRFM00205[`list-timers`] subcommand.
+
+[[GSADG00119]][[giojj]]
+Example 2-27 Listing Timers
+
+This example lists the timers in a particular standalone server
+instance. There is one currently active timer set.
+
+[source]
+----
+asadmin> list-timers server
+1
+The list-timers command was executed successfully.
+----
+
+[[giyjd]][[GSADG00323]][[to-show-component-status]]
+
+==== To Show Component Status
+
+Use the `show-component-status` subcommand in remote mode to get the
+status (either enabled or disabled) of the specified deployed component.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Show component status by using the
+link:reference-manual/show-component-status.html#GSRFM00232[`show-component-status`] subcommand.
+
+[[GSADG00120]][[gjhkk]]
+Example 2-28 Showing Status of a Component
+
+This example shows the status of the `MEjbApp` component.
+
+[source]
+----
+asadmin> show-component-status MEjbApp
+Status of MEjbApp is enabled
+Command show-component-status executed successfully.
+----
+
+[[gjipx]][[GSADG00534]][[using-rest-interfaces-to-administer-glassfish-server]]
+
+=== Using REST Interfaces to Administer {productName}
+
+{productName} provides representational state transfer (REST)
+interfaces to enable you to access monitoring and configuration data for
+{productName}, including data that is provided by newly installed
+add-on components.
+
+You can access the {productName} REST interfaces through client
+applications such as:
+
+* Web browsers
+* http://curl.haxx.se/[cURL]
+* http://www.gnu.org/software/wget/[GNU Wget]
+
+You can also use the {productName} REST interfaces in REST client
+applications that are developed in languages such as:
+
+* JavaScript
+* Ruby
+* Perl
+* Java
+* JavaFX
+
+The implementation of the {productName} REST interfaces is based on
+https://eclipse-ee4j.github.io/jersey/[project Jersey]. Project Jersey is the
+reference implementation of http://jcp.org/en/jsr/summary?id=311[
+Java Specification Request (JSR) 311: JAX-RS: The Java API for RESTful Web Services].
+Information about JSR 311 is also available from the JSR
+https://javaee.github.io/jsr311/[311 project home page] .
+Information about Jakarta RESTful Web Services is here:
+https://jakarta.ee/specifications/restful-ws/
+
+The following topics are addressed here:
+
+* link:#gjipk[Using REST URLs to Administer {productName}]
+* link:#gjijx[Using REST Resource Methods to Administer {productName}]
+* link:#gjjdg[Resources for `asadmin` Subcommands That Perform Non-CRUD
+Operations]
+* link:#gjiut[Securing {productName} REST Interfaces]
+* link:#gjijz[Formats for Resource Representation of Configuration
+Objects]
+* link:#gkwdd[Formats for Resource Representation of Monitoring Objects]
+* link:#gkwid[Formats for Resource Representation of Log File Details]
+* link:#gkwsq[Supported Content Types in Requests to REST Resources]
+
+[[gjipk]][[GSADG00707]][[using-rest-urls-to-administer-glassfish-server]]
+
+==== Using REST URLs to Administer {productName}
+
+Each object in the configuration and monitoring object trees is
+represented as a REST resource that is accessible through an HTTP
+uniform resource locator (URL). Access to REST resources for {productName} monitoring and configuration data requires a running DAS.
+
+[[gkwhy]][[GSADG00634]][[rest-urls-to-resources-for-configuration-and-monitoring-objects]]
+
+===== REST URLs to Resources for Configuration and Monitoring Objects
+
+The formats of the URLs to resources that represent objects in the
+configuration and monitoring object trees are as follows:
+
+* Configuration: `http://`host`:`port`/management/domain/`path
+* Monitoring: `http://`host`:`port`/monitoring/domain/`path
+
+The replaceable items in these URLs are as follows:
+
+host::
+  The host where the DAS is running.
+port::
+  The HTTP port or HTTPS port for administration.
+path::
+  The path to the object. The path is the dotted name of the object in
+  which each dot (`.`) is replaced with a slash (`/`).
++
+
+[NOTE]
+====
+The path to a {productName} instance is ``servers/server/``instance-name,
+where instance-name is the name of the instance.
+For the DAS, instance-name is `server` and the path is `servers/server/server`.
+====
+
+For more information, see the following documentation:
+
+* The link:reference-manual/dotted-names.html#GSRFM00268[`dotted-names`(5ASC)] help page
+* link:monitoring.html#ghbaz[How the Monitoring Tree Structure Works]
+* link:overview.html#giusb[How Dotted Names Work for Configuration]
+
+If the URL to a REST resource for {productName} monitoring or
+configuration data is opened in a web browser, the browser displays a
+web page that contains the following information about the resource:
+
+* A list of the attributes of the resource and their values. If the
+resource represents an object in the configuration tree, these
+attributes are presented in an HTML form that you can use to update the
+resource. Attributes of a resource for an object in the monitoring tree
+are read only.
+* A list of hypertext links to the children of the resource. This list
+of links enables you to traverse the tree that contains the resource and
+to discover the all resources in the tree.
+* A list of hypertext links to resources that represent `asadmin`
+subcommands for non-CRUD operations on the resource.
+
+The following figure shows the web page for the REST resource for
+managing a domain.
+
+[[GSADG00001]][[gjjce]]
+
+
+.*Figure 2-1 Web Page for the REST Resource for Managing a Domain*
+image:img/rest-management.png[
+"Screen capture showing the web page for the REST resource for managing a domain."]
+
+
+[[gkwib]][[GSADG00635]][[rest-urls-for-accessing-the-log-file]]
+
+===== REST URLs for Accessing the Log File
+
+The `server.log` file of the DAS is represented as a child that is named
+`view-log` of the resource for managing the domain. A child of the
+resource for the `server.log` file represents the log file details
+
+The formats of the URLs to resources that represent the log file are as
+follows:
+
+* Log file: ``http://``host``:``port``/management/domain/view-log``
+* Log file details: ``http://``host``:``port``/monitoring/domain/view-log/details``
+
+The replaceable items in these URLs are as follows:
+
+host::
+  The host where the DAS is running.
+port::
+  The HTTP port or HTTPS port for administration.
+
+You can use the optional `start` parameter in the URL to the resource
+for the log file to specify the number of characters at the start of the
+file to skip. For example, to skip 10,000 characters, specify the URL as
+`http://localhost:4848/management/domain/view-log?start=10000`. This
+example assumes that the DAS is running on the local host and uses the
+default port for administration.
+
+The resource for the log file returns the HTTP header
+`"X-Text-Append-Next"`, which contains the entire URL to pass to the
+`GET` method to return the changes since the last call. You can use this
+header in client applications to get all log entries that were added in
+particular interval. For example, by testing the value of the
+`"X-Text-Append-Next"` header in a client thread every 10 seconds, you
+can monitor the log entries that were added in the last 10 seconds.
+
+[[gjijx]][[GSADG00708]][[using-rest-resource-methods-to-administer-glassfish-server]]
+
+==== Using REST Resource Methods to Administer {productName}
+
+The {productName} REST interfaces support methods for accessing
+objects in the monitoring and configuration object trees.
+
+The following table shows the REST methods for administering monitoring
+and configuration data and the tasks that you can perform with each
+method. These methods are HTTP 1.1 primitives. For the detailed
+specification of these primitives, see
+http://www.w3.org/Protocols/rfc2616/rfc2616.html[Hypertext Transfer
+Protocol -- HTTP/1.1] .
+
+[[GSADG816]][[sthref16]][[gkame]]
+
+
+Table 2-1 REST Resource Methods for Administering Monitoring and
+Configuration Data
+
+[width="100%",cols="74%,26%",options="header",]
+|===
+|Task |REST Method
+|Determine the methods and method parameters that an object in the tree
+supports |`GET`
+
+|Retrieve data for an object in the tree |`GET`
+
+|Add an object to the tree |`POST`
+
+|Update an object in the tree |`POST`
+
+|Delete an object from the tree |`DELETE`
+|===
+
+
+
+[NOTE]
+====
+REST requests that add, update, or delete objects must specify the
+`X-Requested-By` header with the value `GlassFish REST HTML interface`.
+
+The `GET` method determines the methods and method parameters that an
+object in the tree supports and provides additional information about
+the object. For details, see link:#gjjel[To Retrieve Data for an Object
+in the Tree].
+====
+
+
+[[gjjei]][[GSADG00324]][[to-determine-the-methods-and-method-parameters-that-an-object-in-the-tree-supports]]
+
+===== To Determine the Methods and Method Parameters That an Object in the Tree Supports
+
+The methods and method parameters that an object in the tree supports
+depend on the REST resource that represents the object:
+
+* REST resources for monitoring support only the `GET` method.
+* All REST resources for configuration support the `GET` method.
+However, only some REST resources for configuration also support the
+`POST` method and the `DELETE` method.
+
+Before performing any operations on an object in the tree, determine the
+methods and method parameters that the object supports.
+
+You can specify the format in which this information is presented. For
+more information, see link:#gjijz[Formats for Resource Representation of
+Configuration Objects].
+
+
+[NOTE]
+====
+Each `POST` method and `DELETE` method that a REST resource supports has
+an equivalent `asadmin` subcommand. The parameters of a `POST` method or
+a `DELETE` method correspond to the options of the method's equivalent
+`asadmin` subcommand. For information about the options of `asadmin`
+subcommand, see the olink:GSRFM[{productName}
+Reference Manual].
+====
+
+
+1. Ensure that the server is running.
++
+Operations on REST resources for {productName} data require a running
+server.
+2. Use the `GET` method on the REST resource that represents the
+object.
++
+The `GET` method returns the list of methods that the resource supports.
+For each method, the list of acceptable message parameters or the list
+of acceptable query parameters are returned.
+
+[[GSADG00121]][[gjjdi]]
+Example 2-29 Determining the Methods and Method Parameters That an
+Object in the Tree Supports
+
+This example uses the cURL utility to determine the methods and method
+parameters that the resource for the node `sj01` supports. The example
+uses the following options of the cURL utility:
+
+* `-X` to specify that the `GET` method is used
+* `-H` to specify that the resource is represented in JavaScript Object
+Notation (JSON)
+
+In this example, the DAS is running on the local host and the HTTP port
+for administration is 4848. The resource supports the `GET` method and
+the `POST` method.
+
+Line breaks and white space are added to enhance readability.
+
+[source]
+----
+curl -X GET -H "Accept: application/json" http://localhost:4848/management/domain/nodes/node/sj01
+{
+  "command":"Node",
+  "exit_code":"SUCCESS",
+  "extraProperties":{
+    "commands":[
+      {"path":"_delete-node","command":"delete-node","method":"DELETE"},
+      {"path":"_update-node","command":"_update-node","method":"POST"},
+      {"path":"ping-node-ssh","command":"ping-node-ssh","method":"GET"},
+      {"path":"update-node-ssh","command":"update-node-ssh","method":"POST"},
+      {"path":"update-node-config","command":"update-node-config","method":"POST"}],
+    "methods":[
+      {"name":"GET"},
+      {"name":"POST","messageParameters":{
+        "installDir":{"optional":"true","type":"string","key":"false"},
+        "nodeDir":{"optional":"true","type":"string","key":"false"},
+        "nodeHost":{"optional":"true","type":"string","key":"false"},
+        "type":{"optional":"true","type":"string","key":"false"}
+        }
+      }
+    ],
+    "entity":{
+      "installDir":"\/export\/glassfish7",
+      "name":"sj01",
+      "nodeDir":null,
+      "nodeHost":
+      "sj01.example.com",
+      "type":"SSH"
+    },
+    "childResources":{
+      "application-ref":
+        "https:\/\/localhost:4848\/management\/domain\/nodes\/node\/sj01\/application-ref",
+      "resource-ref":
+        "https:\/\/localhost:4848\/management\/domain\/nodes\/node\/sj01\/resource-ref",
+      "ssh-connector":
+        "https:\/\/localhost:4848\/management\/domain\/nodes\/node\/sj01\/ssh-connector"
+    }
+  }
+}
+----
+
+[[gjjel]][[GSADG00325]][[to-retrieve-data-for-an-object-in-the-tree]]
+
+===== To Retrieve Data for an Object in the Tree
+
+Retrieving data for an object in the tree obtains the following
+information about the REST resource that represents the object:
+
+* A list of the REST methods that the resource supports
+* A list of the attributes of the resource and their values
+* A list of URLs to the children of the resource
+
+You can specify the format in which this information is presented. For
+more information, see link:#gjijz[Formats for Resource Representation of
+Configuration Objects].
+
+1. Ensure that the server is running.
++
+Operations on REST resources for {productName} data require a running
+server.
+2. Use the `GET` method on the REST resource that represents the
+object.
+
+[[GSADG00122]][[gjjed]]
+Example 2-30 Retrieving Data for an Object in the Tree
+
+This example uses the cURL utility to retrieve data for the resource for
+a the node `sj01`. The example uses the following options of the cURL
+utility:
+
+* `-X` to specify that the `GET` method is used
+* `-H` to specify that the resource is represented in JavaScript Object
+Notation (JSON)
+
+In this example, the DAS is running on the local host and the HTTP port
+for administration is 4848.
+
+Line breaks and white space are added to enhance readability.
+
+[source]
+----
+curl -X GET -H "Accept: application/json" http://localhost:4848/management/domain/nodes/node/sj01
+{
+  "command":"Node",
+  "exit_code":"SUCCESS",
+  "extraProperties":{
+    "commands":[
+      {"path":"_delete-node","command":"delete-node","method":"DELETE"},
+      {"path":"_update-node","command":"_update-node","method":"POST"},
+      {"path":"ping-node-ssh","command":"ping-node-ssh","method":"GET"},
+      {"path":"update-node-ssh","command":"update-node-ssh","method":"POST"},
+      {"path":"update-node-config","command":"update-node-config","method":"POST"}],
+    "methods":[
+      {"name":"GET"},
+      {"name":"POST","messageParameters":{
+        "installDir":{"optional":"true","type":"string","key":"false"},
+        "nodeDir":{"optional":"true","type":"string","key":"false"},
+        "nodeHost":{"optional":"true","type":"string","key":"false"},
+        "type":{"optional":"true","type":"string","key":"false"}
+        }
+      }
+    ],
+    "entity":{
+      "installDir":"\/export\/glassfish7",
+      "name":"sj01",
+      "nodeDir":null,
+      "nodeHost":
+      "sj01.example.com",
+      "type":"SSH"
+    },
+    "childResources":{
+      "application-ref":
+        "https:\/\/localhost:4848\/management\/domain\/nodes\/node\/sj01\/application-ref",
+      "resource-ref":
+        "https:\/\/localhost:4848\/management\/domain\/nodes\/node\/sj01\/resource-ref",
+      "ssh-connector":
+        "https:\/\/localhost:4848\/management\/domain\/nodes\/node\/sj01\/ssh-connector"
+    }
+  }
+}
+----
+
+[[gjjdv]][[GSADG00326]][[to-add-an-object-to-the-tree]]
+
+===== To Add an Object to the Tree
+
+1. Ensure that the server is running.
++
+Operations on REST resources for {productName} data require a running
+server.
+2. Determine the acceptable message parameters for the `POST` method of
+the resource that represents the parent of the object.
++
+For information about how to perform this step, see link:#gjjei[To
+Determine the Methods and Method Parameters That an Object in the Tree
+Supports].
+3. Use the `POST` method on the REST resource that represents the
+parent of the object that you are adding.
+4. Confirm that the object has been added.
++
+Perform this step on the resource that represents the object that you
+have just added, not the parent. For information about how to perform
+this step, see link:#gjjel[To Retrieve Data for an Object in the Tree].
+
+[[GSADG00123]][[gjjen]]
+Example 2-31 Adding an Object to the Tree
+
+This example uses the cURL utility to add a JDBC resource object to the
+tree by creating a REST resource to represent the JDBC resource.
+
+In this example, the DAS is running on the local host and the HTTP port
+for administration is 4848.
+
+Line breaks are added to enhance readability.
+
+1. This step determines the acceptable message parameters for the
+`POST` method of the resource `jdbc-resource`.
++
+[source]
+----
+curl -X GET -H "Accept: application/json"
+http://localhost:4848/management/domain/resources/jdbc-resource
+{
+  "command":"Jdbc-resource",
+  "exit_code":"SUCCESS",
+  "extraProperties":{
+    "commands":[],
+    "methods":[
+      {"name":"GET"},
+      {"name":"POST","messageParameters":{
+        "description":{"acceptableValues":"","optional":"true","type":"string","defaultValue":""},
+        "enabled":{"acceptableValues":"",optional":"true","type":"boolean",defaultValue":"true"},
+        "id":{"acceptableValues":"","optional":"false","type":"string","defaultValue":""},
+        "poolName":{"acceptableValues":"","optional":"false","type":"string","defaultValue":""},
+        "property":{"acceptableValues":"","optional":"true","type":"string","defaultValue":"},
+        "target":{"acceptableValues":"","optional":"true","type":"string","defaultValue":""}
+        }
+      }
+    ],
+    "childResources":{
+      "jdbc\/__TimerPool":
+        "https:\/\/localhost:4848\/management\/domain\/resources\/jdbc-resource\/jdbc%2F__TimerPool",
+      "jdbc\/__default":
+        "https:\/\/localhost:4848\/management\/domain\/resources\/jdbc-resource\/jdbc%2F__default"
+    }
+  }
+}
+----
+2. This step adds a resource as a child of the `jdbc-resource`
+resource. The `-d` option of the cURL utility sets the required message
+parameters as follows:
++
+* `id` is set to `jdbc/myjdbcresource`.
+* `connectionpoolid` is set to `DerbyPool`.
++
+[source]
+----
+curl -X POST -H "X-Requested-By: GlassFish REST HTML interface"
+-d id=jdbc/myjdbcresource -d connectionpoolid=DerbyPool
+http://localhost:4848/management/domain/resources/jdbc-resource
+----
+
+3. This step confirms that the object has been added by retrieving data
+for the REST resource that represents the object.
++
+[source]
+----
+curl -X GET -H "Accept: application/json"
+http://localhost:4848/management/domain/resources/
+jdbc-resource/jdbc%2Fmyjdbcresource
+{
+  "command":"Jdbc-resource",
+  "exit_code":"SUCCESS",
+  "extraProperties":{
+    "commands":[],
+    "methods":[
+      {"name":"GET"},
+      {"name":"POST","messageParameters":{
+        "description":{"optional":"true","type":"string","key":"false"},
+        "enabled":{"optional":"true","type":"boolean","defaultValue":"true","key":"false"},
+        "jndiName":{"optional":"true","type":"string","key":"true"},
+        "objectType":{"optional":"true","type":"string","defaultValue":"user","key":"false"},
+        "poolName":{"optional":"true","type":"string","key":"false"}
+        }
+      },
+      {"name":"DELETE","messageParameters":{
+        "target":{"acceptableValues":"","optional":"true","type":"string","defaultValue":""}
+        }
+      }
+    ],
+    "childResources":{
+      "property":
+        "https:\/\/localhost:4848\/management\/domain\/resources\/jdbc-resource\/jdbc%2Fmyjdbcresource\/property"
+    }
+  }
+}
+----
+
+[[gjjgj]][[GSADG00327]][[to-update-an-object-in-the-tree]]
+
+===== To Update an Object in the Tree
+
+1. Ensure that the server is running.
+Operations on REST resources for {productName} data require a running server.
+
+2. Determine the acceptable message parameters for the `POST` method of
+the resource that represents the object.
+For information about how to perform this step,
+see link:#gjjei[To Determine the Methods and Method Parameters That an Object in the Tree Supports].
+
+3. Use the `POST` method on the REST resource that represents the
+object that you are updating.
+
+4. Confirm that the object has been updated.
+For information about how to perform this step, see link:#gjjel[To Retrieve Data for an Object in the Tree].
+
+[[GSADG00124]][[gjjhd]]
+Example 2-32 Updating an Object in the Tree
+
+This example uses the cURL utility to update a JDBC resource in the tree
+by modifying the REST resource that represents the JDBC resource.
+
+In this example, the DAS is running on the local host and the HTTP port
+for administration is 4848.
+
+Line breaks are added to enhance readability.
+
+1. This step determines the acceptable message parameters for the
+`POST` method of the resource `jdbc-myjdbcresource`.
++
+[source]
+----
+curl -X OPTIONS -H "Accept: application/json"
+http://localhost:4848/management/domain/resources/
+jdbc-resource/jdbc-myjdbcresource
+{
+  "command":"Jdbc-resource",
+  "exit_code":"SUCCESS",
+  "extraProperties":{
+    "commands":[],
+    "methods":[
+      {"name":"GET"},
+      {"name":"POST","messageParameters":{
+        "description":{"optional":"true","type":"string","key":"false"},
+        "enabled":{"optional":"true","type":"boolean","defaultValue":"true","key":"false"},
+        "jndiName":{"optional":"true","type":"string","key":"true"},
+        "objectType":{"optional":"true","type":"string","defaultValue":"user","key":"false"},
+        "poolName":{"optional":"true","type":"string","key":"false"}
+        }
+      },
+      {"name":"DELETE","messageParameters":{
+        "target":{"acceptableValues":"","optional":"true","type":"string","defaultValue":""}
+        }
+      }
+    ],
+    "childResources":{
+      "property":
+        "https:\/\/localhost:4848\/management\/domain\/resources\/jdbc-resource\/jdbc%2Fmyjdbcresource\/property"
+    }
+  }
+}
+----
+2. This step updates the REST resource `jdbc-myjdbcresource` to disable
+the JDBC resource that `jdbc-myjdbcresource` represents. The `-d` option
+of the cURL utility sets the `enabled` message parameter to `disabled`.
++
+[source]
+----
+curl -X POST -H "X-Requested-By: GlassFish REST HTML interface"
+-d "enabled=false" http://localhost:4848/management/domain/resources/
+jdbc-resource/jdbc%2Fmyjdbcresource
+----
+3. This step confirms that the object has been updated by retrieving
+data for the REST resource that represents the object.
++
+[source]
+----
+curl -X GET -H "Accept: application/json"
+http://localhost:4848/management/domain/resources/
+jdbc-resource/jdbc%2Fmyjdbcresource
+{
+  "command":"Jdbc-resource",
+  "exit_code":"SUCCESS",
+  "extraProperties":{
+    "commands":[],
+    "methods":[
+      {"name":"GET"},
+      {"name":"POST","messageParameters":{
+        "description":{"optional":"true","type":"string","key":"false"},
+        "enabled":{"optional":"true","type":"boolean","defaultValue":"true","key":"false"},
+        "jndiName":{"optional":"true","type":"string","key":"true"},
+        "objectType":{"optional":"true","type":"string","defaultValue":
+        "user","key":"false"},
+        "poolName":{"optional":"true","type":"string","key":"false"}
+        }
+      },
+      {"name":"DELETE","messageParameters":{
+        "target":{"acceptableValues":"","optional":"true","type":"string","defaultValue":""}
+        }
+      }
+    ],
+  "entity":{
+    "description":null,
+    "enabled":"false",
+    "jndiName":"jdbc\/myjdbcresource",
+    "objectType":
+    "user",
+    "poolName":"DerbyPool"
+  },
+  "childResources":{
+    "property":
+      "https:\/\/localhost:4848\/management\/domain\/resources\/jdbc-resource\/
+       jdbc%2Fmyjdbcresource\/property"
+    }
+  }
+}
+----
+
+[[gjjgm]][[GSADG00328]][[to-delete-an-object-from-the-tree]]
+
+===== To Delete an Object From the Tree
+
+1. Ensure that the server is running.
++
+Operations on REST resources for {productName} data require a running
+server.
+2. Confirm that the object can be deleted.
++
+For information about how to perform this step, see link:#gjjei[To
+Determine the Methods and Method Parameters That an Object in the Tree
+Supports].
+3. Confirm that the object has been deleted.
++
+Perform this step on the resource that represents the parent of the
+object that you have just deleted. For information about how to perform
+this step, see link:#gjjel[To Retrieve Data for an Object in the Tree].
+
+[[GSADG00125]][[gjjgp]]
+Example 2-33 Deleting an Object From the Tree
+
+This example uses the cURL utility to delete a JDBC resource from the
+tree by deleting the REST resource that represents the JDBC resource.
+
+In this example, the DAS is running on the local host and the HTTP port
+for administration is 4848.
+
+Line breaks and white space are added to enhance readability.
+
+1. This step confirms that the object can be deleted by retrieving the
+REST methods that the resource `jdbc-myjdbcresource` supports.
++
+[source]
+----
+curl -X GET -H "Accept: application/json"
+http://localhost:4848/management/domain/resources/
+jdbc-resource/jdbc%2Fmyjdbcresource
+{
+  "command":"Jdbc-resource",
+  "exit_code":"SUCCESS",
+  "extraProperties":{
+    "commands":[],
+    "methods":[
+      {"name":"GET"},
+      {"name":"POST","messageParameters":{
+        "description":{"optional":"true","type":"string","key":"false"},
+        "enabled":{"optional":"true","type":"boolean","defaultValue":"true","key":"false"},
+        "jndiName":{"optional":"true","type":"string","key":"true"},
+        "objectType":{"optional":"true","type":"string","defaultValue":"user","key":"false"},
+        "poolName":{"optional":"true","type":"string","key":"false"}
+        }
+      },
+      {"name":"DELETE","messageParameters":{
+        "target":{"acceptableValues":"","optional":"true","type":"string","defaultValue":""}
+        }
+      }
+    ],
+    "childResources":{
+      "property":
+        "https:\/\/localhost:4848\/management\/domain\/resources\/jdbc-resource\/
+        jdbc%2Fmyjdbcresource\/property"
+    }
+  }
+}
+----
+2. This step deletes the `jdbc/myjdbcresource` resource.
++
+[source]
+----
+curl -X DELETE -H "X-Requested-By: GlassFish REST HTML interface"
+http://localhost:4848/management/domain/resources/
+jdbc-resource/jdbc%2Fmyjdbcresource
+----
+3. This step confirms that the object has been deleted by retrieving
+data for the REST resource that represents the parent of the object.
++
+[source]
+----
+curl -X GET -H "Accept: application/json"
+http://localhost:4848/management/domain/resources/jdbc-resource
+{
+  "command":"Jdbc-resource",
+  "exit_code":"SUCCESS",
+  "extraProperties":{
+    "commands":[],
+    "methods":[
+      {"name":"GET"},
+      {"name":"POST","messageParameters":{
+        "description":{"acceptableValues":"","optional":"true","type":"string","defaultValue":""},
+        "enabled":{"acceptableValues":"",optional":"true","type":"boolean",defaultValue":"true"},
+        "id":{"acceptableValues":"","optional":"false","type":"string","defaultValue":""},
+        "poolName":{"acceptableValues":"","optional":"false","type":"string","defaultValue":""},
+        "property":{"acceptableValues":"","optional":"true","type":"string","defaultValue":"},
+        "target":{"acceptableValues":"","optional":"true","type":"string","defaultValue":""}
+        }
+      }
+    ],
+    "childResources":{
+      "jdbc\/__TimerPool":
+        "https:\/\/localhost:4848\/management\/domain\/resources\/jdbc-resource\/jdbc%2F__TimerPool",
+      "jdbc\/__default":
+        "https:\/\/localhost:4848\/management\/domain\/resources\/jdbc-resource\/jdbc%2F__default"
+    }
+  }
+}
+----
+
+[[gjjdg]][[GSADG00709]][[resources-for-asadmin-subcommands-that-perform-non-crud-operations]]
+
+==== Resources for `asadmin` Subcommands That Perform Non-CRUD Operations
+
+The {productName} REST interfaces also support operations other than
+create, read, update, and delete (CRUD) operations, for example:
+
+* State management
+* Queries
+* Application deployment
+
+These operations are supported through REST resources that represent the
+`asadmin` subcommands for performing these operations. Each resource is
+a child of the resource on which the operation is performed. The child
+resources do not represent objects in the configuration object tree.
+
+For example, the resource that represents a node provides child
+resources for the following `asadmin` subcommands that perform non-CRUD
+operations on the node:
+
+* `ping-node-ssh`
+* `update-node-config`
+* `update-node-ssh`
+
+[[gjiut]][[GSADG00710]][[securing-glassfish-server-rest-interfaces]]
+
+==== Securing {productName} REST Interfaces
+
+The {productName} REST interfaces support the following
+authentication schemes for securing the REST interfaces:
+
+* Basic authentication over a secure connection
+* Authentication by using session tokens
+
+When security is enabled, you must specify `https` as the protocol in
+the URLs to REST resources and provide a user name and password.
+
+[[GSADG817]][[sthref17]]
+
+
+[[setting-up-basic-authentication-over-a-secure-connection]]
+===== Setting Up Basic Authentication Over a Secure Connection
+
+Setting up basic authentication over a secure connection to secure
+{productName} REST interfaces involves the following sequence of
+tasks:
+
+1. Adding an `admin-realm` user to the `asadmin` user group
+2. Enabling Secure Sockets Layer (SSL)
+
+For information about how to perform these tasks from the command line,
+see the following documentation:
+
+* "link:security-guide/user-security.html#GSSCG00110[To Create an Authentication Realm]" in {productName} Security Guide
+* "link:security-guide/user-security.html#GSSCG00118[To Create a File User]" in {productName} Security Guide
+* link:http_https.html#ggnbj[To Configure an HTTP Listener for SSL]
+
+For information about how to perform these tasks by using the
+Administration Console, see the following topics in the Administration
+Console online help:
+
+* To Add a User to the Admin Realm
+* To Edit SSL Settings for a Protocol
+
+[[gkvtj]][[GSADG00329]][[to-secure-rest-interfaces-by-using-session-tokens]]
+
+===== To Secure REST Interfaces by Using Session Tokens
+
+Basic authentication requires a REST client to cache a user's
+credentials to enable the client to pass the credentials with each
+request. If you require a REST client not to cache credentials, your
+client must use session tokens for authentication.
+
+1. Request a session token by using the `GET` method on the resource at
+`http://`host`:`port`/management/sessions`.
+{productName} uses basic authentication to authenticate the client,
+generates a session token, and passes the token to the client.
+
+2. In each subsequent request that requires authentication, use the
+token to authenticate the client.
+.. Create a cookie that is named `gfresttoken` the value of which is the token.
+.. Send the cookie with the request.
+.. When the token is no longer required, retire the token by using the
+`DELETE` method on the resource at
+`http://`host`:`port`/management/sessions/{`tokenvalue`}`.
++
+[NOTE]
+====
+If a client does not explicitly retire a token, the token is retired
+after 30 minutes of inactivity.
+====
+
+
+[[gjijz]][[GSADG00711]][[formats-for-resource-representation-of-configuration-objects]]
+
+==== Formats for Resource Representation of Configuration Objects
+
+The {productName} REST interfaces represent resources for
+configuration objects in the following formats:
+
+* http://www.json.org/[JSON]
+* XML
+* HTML
+
+{productName} enables you to specify the resource representation
+through the filename extension in the URL or through the HTTP header:
+
+* To specify the resource representation through the filename extension
+in the URL, specify the appropriate extension as follows:
+
+** For JSON, specify the `.json` extension.
+
+** For XML, specify the `.xml` extension.
+
+** For HTML, omit the extension.
+* How to specify the resource representation through the HTTP header
+depends on the client that you are using to access the resource. For
+example, if you are using the cURL utility, specify the resource
+representation through the `-H` option as follows:
+
+** For JSON, specify `-H "Accept: application/json"`.
+
+** For XML, specify `-H "Accept: application/xml"`.
+
+** For HTML, omit the `-H` option.
+
+[[gjiji]][[GSADG00636]][[json-resource-representation-for-configuration-objects]]
+
+===== JSON Resource Representation for Configuration Objects
+
+The general format for the JSON representation of a resource for a
+configuration object is as follows:
+
+[source,json]
+----
+{
+  "command":"resource",
+  "exit_code":"code",
+  "extraProperties":{
+    "commands":[command-list],
+    "methods":[method-list],
+    "entity":{attributes},
+    "childResources":{children}
+  }
+}
+----
+
+The replaceable items in this format are as follows:
+
+resource::
+  The name of the resource.
+code::
+  The result of the attempt to get the resource.
+command-list::
+  One or more metadata sets separated by a comma (`,`) that represent
+  the `asadmin` subcommands for performing non—CRUD operations on the
+  resource. For the format of each metadata set, see link:#gkvyr[JSON
+  Representation of a Command in a Command List].
+method-list::
+  One or more metadata sets separated by a comma (`,`) that represent
+  the methods that the resource supports. For the format of each
+  metadata set, see link:#gjjas[JSON Representation of a Method in a
+  Method List].
+attributes::
+  Zero or more name-value pairs separated by a comma (`,`). Each
+  name-value pair is specified as `"`name`":`value.
+children::
+  Zero or more child resources separated by a comma (`,`). Each child
+  resource is specified as "resource-name":"url".
++
+  resource-name;;
+    The name of the resource as displayed in client applications that
+    access the parent of the resource.
+  url;;
+    The URL to the child resource.
+
+
+[[gkvyr]][[GSADG00024]][[json-representation-of-a-command-in-a-command-list]]
+
+JSON Representation of a Command in a Command List
+
+The JSON representation of a command in a command list is as follows:
+
+[source,json]
+----
+{
+  "path":"command-path",
+  "command":"command-name",
+  "method":"rest-method"
+}
+----
+
+The replaceable items in this format are as follows:
+
+command-path::
+  The relative path to REST resource that represents the command. This
+  path is relative to the URL of the REST resource that is the parent of
+  the resource that represents the command.
+command-name::
+  The name of the command as displayed in client applications that
+  access the resource.
+rest-method::
+  The REST resource method that the command invokes when the command is
+  run. The method is `GET`, `POST`, or `DELETE`.
+
+[[gjjas]][[GSADG00025]][[json-representation-of-a-method-in-a-method-list]]
+
+JSON Representation of a Method in a Method List
+
+The JSON representation of a method in a method list is as follows:
+
+[source,json]
+----
+{
+    "name":"method-name",
+    "messageParameters":{
+        message-parameter-list
+    }
+    "queryParameters":{
+        queryparameter- list
+    }
+}
+----
+
+The replaceable items in this format are as follows:
+
+method-name::
+  The name of the method, which is `GET`, `POST`, or `DELETE`.
+message-parameter-list::
+  Zero or more metadata sets separated by a comma (`,`) that represent
+  the message parameters that are allowed for the method. For the format
+  of each metadata set, see link:#gjjbb[JSON Representation of a Message
+  Parameter or a Query Parameter].
+query-parameter-list::
+  Zero or more metadata sets separated by a comma (`,`) that represent
+  the query parameters that are allowed for the method. For the format
+  of each metadata set, see link:#gjjbb[JSON Representation of a Message
+  Parameter or a Query Parameter].
+
+[[gjjbb]][[GSADG00026]][[json-representation-of-a-message-parameter-or-a-query-parameter]]
+
+JSON Representation of a Message Parameter or a Query Parameter
+
+The JSON representation of a message parameter or a query parameter is
+as follows:
+
+[source,json]
+----
+"parameter-name":{attribute-list}
+----
+
+The replaceable items in this format are as follows:
+
+parameter-name::
+  The name of the parameter.
+attribute-list::
+  A comma-separated list of name-value pairs of attributes for the
+  parameter. Each pair is in the following format:
++
+[source,json]
+----
+"name":"value"
+----
+Possible attributes are as follows:
++
+  `defaultValue`;;
+    The default value of the parameter.
+  `acceptableValues`;;
+    The set or range of acceptable values for the parameter.
+  `type`;;
+    The data type of the parameter, which is one of the following types:
++
+    * `boolean`
+    * `int`
+    * `string`
+  `optional`;;
+    Indicates whether the parameter is optional. If `true`, the
+    parameter is optional. If `false`, the parameter is required.
+  `key`;;
+    Indicates whether the parameter is key. If `true`, the parameter is
+    key. If `false`, the parameter is not key.
+
+[[gjjgg]][[GSADG00027]][[example-json-resource-representation-for-a-configuration-object]]
+
+Example JSON Resource Representation for a Configuration Object
+
+This example shows the JSON representation of the resource for the node
+`sj01`. In this example, the DAS is running on the local host and the
+HTTP port for administration is 4848. The URL to the resource in this
+example is `http://localhost:4848/management/domain/nodes/node/sj01`.
+
+Line breaks and white space are added to enhance readability.
+
+[source,json]
+----
+{
+  "command":"Node",
+  "exit_code":"SUCCESS",
+  "extraProperties":{
+    "commands":[
+      {"path":"_delete-node","command":"delete-node","method":"DELETE"},
+      {"path":"_update-node","command":"_update-node","method":"POST"},
+      {"path":"ping-node-ssh","command":"ping-node-ssh","method":"GET"},
+      {"path":"update-node-ssh","command":"update-node-ssh","method":"POST"},
+      {"path":"update-node-config","command":"update-node-config","method":"POST"}],
+    "methods":[
+      {"name":"GET"},
+      {"name":"POST","messageParameters":{
+        "installDir":{"optional":"true","type":"string","key":"false"},
+        "nodeDir":{"optional":"true","type":"string","key":"false"},
+        "nodeHost":{"optional":"true","type":"string","key":"false"},
+        "type":{"optional":"true","type":"string","key":"false"}
+        }
+      }
+    ],
+    "entity":{
+      "installDir":"\/export\/glassfish7",
+      "name":"sj01",
+      "nodeDir":null,
+      "nodeHost":
+      "sj01.example.com",
+      "type":"SSH"
+    },
+    "childResources":{
+      "application-ref":
+       "https:\/\/localhost:4848\/management\/domain\/nodes\/node\/sj01\/application-ref",
+      "resource-ref":
+       "https:\/\/localhost:4848\/management\/domain\/nodes\/node\/sj01\/resource-ref",
+      "ssh-connector":
+       "https:\/\/localhost:4848\/management\/domain\/nodes\/node\/sj01\/ssh-connector"
+    }
+  }
+}
+----
+
+[[gkvzs]][[GSADG00637]][[xml-resource-representation-for-configuration-objects]]
+
+===== XML Resource Representation for Configuration Objects
+
+The general format for the XML representation of a resource for a
+configuration object is as follows:
+
+[source,xml]
+----
+<map>
+ <entry key="extraProperties">
+  <map>
+   <entry key="methods">
+    <list>
+     methods
+    </list>
+   </entry>
+   <entry key="entity">
+    <map>
+     attributes
+    </map>
+   </entry>
+   <entry key="commands">
+    <list>
+     commands
+    </list>
+   </entry>
+   <entry key="childResources">
+    <map>
+    children
+    </map>
+   </entry>
+  </map>
+ </entry>
+ <entry key="message"></entry>
+ <entry key="exit_code" value="code"></entry>
+ <entry key="command" value="resource"></entry>
+</map>
+----
+
+The replaceable items in this format are as follows:
+
+methods::
+  One or more XML elements that represent the methods that the resource
+  supports. For the format of each element, see link:#gjizh[XML
+  Representation of a Resource Method].
+attributes::
+  Zero or more XML elements that represent the attributes of the
+  resource. Each element specifies a name-value pair as follows:
++
+[source,xml]
+----
+<entry key="name" value="value"></entry>
+----
+commands::
+  One or more XML elements that represent the `asadmin` subcommands for
+  performing non—CRUD operations on the resource. For the format of each
+  element, see link:#gkwaw[XML Representation of a Command].
+children::
+  Zero or more XML elements that represent the children of the resource.
+  Each element is specified as follows:
++
+[source,xml]
+----
+<entry key="resource-name" value="url"></entry>
+----
+  resource-name;;
+    The name of the resource as displayed in client applications that
+    access the parent of the resource.
+  url;;
+    The URL to the child resource.
+code::
+  The result of the attempt to get the resource.
+resource::
+  The name of the resource.
+
+[[gjizh]][[GSADG00028]][[xml-representation-of-a-resource-method]]
+
+XML Representation of a Resource Method
+
+The XML representation of a method in a method list is as follows:
+
+[source,xml]
+----
+<map>
+ <entry key="name" value="method-name"></entry>
+ <entry key="messageParameters">
+  message-parameter-list
+ </entry>
+ <entry key="queryParameters">
+  message-parameter-list
+ </entry>
+</map>
+----
+
+The replaceable items in this format are as follows:
+
+method-name::
+  The name of the method, which is `GET`, `POST`, or `DELETE`.
+message-parameter-list::
+  Zero or more XML elements that represent the message parameters that
+  are allowed for the method. For the format of each element, see
+  link:#gjizn[XML Representation of a Message Parameter or a Query
+  Parameter].
+query-parameter-list::
+  Zero or more XML elements that represent the query parameters that are
+  allowed for the method. For the format of each element, see
+  link:#gjizn[XML Representation of a Message Parameter or a Query
+  Parameter].
+
+[[gkwaw]][[GSADG00029]][[xml-representation-of-a-command]]
+
+XML Representation of a Command
+
+The XML representation of a command is as follows:
+
+[source,xml]
+----
+<map>
+ <entry key="command" value="command-name"></entry>
+ <entry key="path" value="command-path"></entry>
+ <entry key="method" value="rest-method"></entry>
+</map>
+----
+
+The replaceable items in this format are as follows:
+
+command-name::
+  The name of the command as displayed in client applications that
+  access the resource.
+command-path::
+  The relative path to REST resource that represents the command. This
+  path is relative to the URL of the REST resource that is the parent of
+  the resource that represents the command.
+rest-method::
+  The REST resource method that the command invokes when the command is
+  run. The method is `GET`, `POST`, or `DELETE`.
+
+[[gjizn]][[GSADG00030]][[xml-representation-of-a-message-parameter-or-a-query-parameter]]
+
+XML Representation of a Message Parameter or a Query Parameter
+
+The XML representation of a message parameter or a query parameter is as
+follows:
+
+[source,xml]
+----
+<map>
+ <entry key="parameter-name">
+  <map>
+   attributes
+  </map>
+ </entry>
+</map>
+----
+
+The replaceable items in this format are as follows:
+
+parameter-name::
+  The name of the parameter.
+attributes::
+  One or more XML elements that represent the attributes for the
+  parameter. Each element specifies a name-value pair as follows:
++
+[source,xml]
+----
+<entry key="name" value="value"></entry>
+----
+  Possible attributes are as follows:
++
+  `defaultValue`;;
+    The default value of the parameter.
+  `acceptablevalues`;;
+    The set or range of acceptable values for the parameter.
+  `type`;;
+    The data type of the parameter, which is one of the following types:
++
+    * `boolean`
+    * `int`
+    * `string`
+  `optional`;;
+    Indicates whether the parameter is optional. If `true`, the
+    parameter is optional. If `false`, the parameter is required.
+  `key`;;
+    Indicates whether the parameter is key. If `true`, the parameter is
+    key. If `false`, the parameter is not key.
+
+[[gjjgi]][[GSADG00031]][[example-xml-resource-representation]]
+
+Example XML Resource Representation
+
+This example shows the XML representation of the resource for the node
+`sj01`. In this example, the DAS is running on the local host and the
+HTTP port for administration is 4848. The URL to the resource in this
+example is `http://localhost:4848/management/domain/nodes/node/sj01`.
+
+Line breaks and white space are added to enhance readability.
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<map>
+ <entry key="extraProperties">
+  <map>
+   <entry key="methods">
+    <list>
+     <map>
+      <entry key="name" value="GET"/>
+     </map>
+     <map>
+      <entry key="name" value="POST"/>
+      <entry key="messageParameters">
+       <map>
+        <entry key="installDir">
+         <map>
+          <entry key="optional" value="true"/>
+          <entry key="type" value="string"/>
+          <entry key="key" value="false"/>
+         </map>
+        </entry>
+        <entry key="nodeDir">
+         <map>
+          <entry key="optional" value="true"/>
+          <entry key="type" value="string"/>
+          <entry key="key" value="false"/>
+         </map>
+        </entry>
+        <entry key="type">
+         <map>
+          <entry key="optional" value="true"/>
+          <entry key="type" value="string"/>
+          <entry key="key" value="false"/>
+         </map>
+        </entry>
+        <entry key="nodeHost">
+         <map>
+          <entry key="optional" value="true"/>
+          <entry key="type" value="string"/>
+          <entry key="key" value="false"/>
+         </map>
+        </entry>
+       </map>
+      </entry>
+     </map>
+    </list>
+   </entry>
+   <entry key="entity">
+    <map>
+     <entry key="installDir" value="/export/glassfish7"/>
+     <entry key="name" value="sj01"/>
+     <entry key="nodeDir" value=""/>
+     <entry key="type" value="SSH"/>
+     <entry key="nodeHost" value="sj01example.com"/>
+    </map>
+   </entry>
+   <entry key="commands">
+    <list>
+     <map>
+      <entry key="command" value="delete-node"/>
+      <entry key="path" value="_delete-node"/>
+      <entry key="method" value="DELETE"/>
+     </map>
+     <map>
+      <entry key="command" value="_update-node"/>
+      <entry key="path" value="_update-node"/>
+      <entry key="method" value="POST"/>
+     </map>
+     <map>
+      <entry key="command" value="ping-node-ssh"/>
+      <entry key="path" value="ping-node-ssh"/>
+      <entry key="method" value="GET"/>
+     </map>
+     <map>
+      <entry key="command" value="update-node-ssh"/>
+      <entry key="path" value="update-node-ssh"/>
+      <entry key="method" value="POST"/>
+     </map>
+     <map>
+      <entry key="command" value="update-node-config"/>
+      <entry key="path" value="update-node-config"/>
+      <entry key="method" value="POST"/>
+     </map>
+    </list>
+   </entry>
+   <entry key="childResources">
+    <map>
+     <entry key="application-ref"
+      value="https://localhost:4848/management/domain/nodes/node/sj01/application-ref"/>
+     <entry key="ssh-connector"
+      value="https://localhost:4848/management/domain/nodes/node/sj01/ssh-connector"/>
+     <entry key="resource-ref"
+      value="https://localhost:4848/management/domain/nodes/node/sj01/resource-ref"/>
+    </map>
+   </entry>
+  </map>
+ </entry>
+ <entry key="message"/>
+ <entry key="exit_code" value="SUCCESS"/>
+ <entry key="command" value="Node"/>
+</map>
+----
+
+[[gjipm]][[GSADG00638]][[html-resource-representation-for-configuration-objects]]
+
+===== HTML Resource Representation for Configuration Objects
+
+The format for the HTML representation of a resource for a configuration
+object is a web page that provides the following information about the
+resource:
+
+* A list of the attributes of the resource and their values.
+* A list of the methods and method parameters that the resource
+supports. Each method and its parameters are presented as a field of the
+appropriate type in an HTML form.
+* A list of hypertext links to the children of the resource.
+* A list of hypertext links to resources that represent `asadmin`
+subcommands for non-CRUD operations on the resource.
+
+For a sample web page, see link:#gjjce[Figure 2-1]. In this example, the
+DAS is running on the local host and the HTTP port for administration is
+4848. The URL to the resource in this example is
+`http://localhost:4848/management/domain/nodes/node/sj01`.
+
+[[gkwdd]][[GSADG00712]][[formats-for-resource-representation-of-monitoring-objects]]
+
+==== Formats for Resource Representation of Monitoring Objects
+
+The {productName} REST interfaces represent resources for monitoring
+data in the following formats:
+
+* http://www.json.org/[JSON]
+* XML
+* HTML
+
+[[gkwgi]][[GSADG00639]][[json-resource-representation-for-monitoring-objects]]
+
+===== JSON Resource Representation for Monitoring Objects
+
+The general format for the JSON representation of a resource for a
+monitoring object is as follows:
+
+[source,json]
+----
+{
+  "message":"",
+  "command":"Monitoring Data",
+  "exit_code":"code",
+  "extraProperties":{
+    "entity":{
+      statistics-list
+    },
+    "childResources":{
+      children
+    }
+  }
+}
+----
+
+The replaceable items in this format are as follows:
+
+code::
+  The result of the attempt to get the resource.
+statistics-list::
+  Zero or more metadata sets separated by a comma (`,`) that represent
+  the statistics that the monitoring object provides. For the format of
+  each metadata set, see link:#gkwkl[JSON Representation of a Statistic
+  in a Statistics List].
+children::
+  Zero or more child resources separated by a comma (`,`). Each child
+  resource is specified as "resource-name":"url".
++
+  resource-name;;
+    The name of the resource as displayed in client applications that
+    access the parent of the resource.
+  url;;
+    The URL to the child resource.
+
+[[gkwkl]][[GSADG00032]][[json-representation-of-a-statistic-in-a-statistics-list]]
+
+JSON Representation of a Statistic in a Statistics List
+
+The JSON representation of a counter statistic in a statistics list is
+as follows:
+
+[source,json]
+----
+"statistic":{
+  "count":count,
+  "lastsampletime":last-sample-time,
+  "description":"description",
+  "unit":"unit",
+  "name":"name",
+  "starttime":start-time
+}
+----
+
+The JSON representation of a range statistic in a statistics list is as
+follows:
+
+[source,json]
+----
+"statistic":{
+  "highwatermark":highest-value,
+  "lowwatermark":lowest-value,
+  "current":current-value
+  "lastsampletime":last-sample-time,
+  "description":"description",
+  "unit":"unit",
+  "name":"name",
+  "starttime":start-time
+}
+----
+
+The replaceable items in these formats are as follows:
+
+statistic::
+  The name of the statistic.
+count::
+  Counter statistics only: The current value of the statistic.
+highest-value::
+  Range statistics only: The highest value of the statistic since
+  monitoring of the statistic began.
+lowest-value::
+  Range statistics only: The lowest value of the statistic since
+  monitoring of the statistic began.
+current-value::
+  Range statistics only: The lowest value of the statistic since
+  monitoring of the statistic began.
+last-sample-time::
+  The time in UNIX time at which the statistic was last sampled.
+description::
+  A textual description of what the statistic represents.
+unit::
+  The unit of measurement of the statistic, which is one of the
+  following units of measurement:
++
+  `count`;;
+    The cumulative value of an attribute that increases with time.
+  `range`;;
+    The lowest value, highest value, and current value of an attribute
+    that can increase or decrease with time.
+  `boundedrange`;;
+    The lowest value, highest value, and current value of an attribute
+    that can increase or decrease with time and has fixed limits.
+  `string`;;
+    A string that represents an attribute value. A string statistic is
+    similar to a count, except that the values are not ordered.
+    Typically, a string statistic represents the state of an object, for
+    example, `CONNECTED`, `CLOSED`, or `DISCONNECTED`.
+  `time`;;
+    Values of an attribute that provide the following timing
+    measurements for an operation:
++
+    * The number of times the operation was performed.
+    * The maximum amount of time to perform the operation once.
+    * The minimum amount of time to perform the operation once.
+    * The total amount of time that has been spent performing the
+    operation.
+    * The average amount of time to perform the operation.
+name::
+  The name of the statistic as displayed in client applications that
+  access the resource that contains the statistic.
+start-time::
+  The time in UNIX time at which monitoring of the statistic began.
+
+[[gkwht]][[GSADG00033]][[example-json-resource-representation-for-a-monitoring-object]]
+
+Example JSON Resource Representation for a Monitoring Object
+
+This example shows the JSON representation of the monitoring object that
+provides class loader statistics for the virtual machine for the Java
+platform. In this example, the DAS is running on the local host and the
+HTTP port for administration is 4848. The URL to the resource in this
+example is
+`http://localhost:4848/monitoring/domain/server/jvm/class-loading-system`.
+
+Line breaks and white space are added to enhance readability.
+
+[source,json]
+----
+{
+  "message":"",
+  "command":"Monitoring Data",
+  "exit_code":"SUCCESS",
+  "extraProperties":{
+    "entity":{
+      "loadedclass-count":{
+        "count":8521,
+        "lastsampletime":1300726961018,
+        "description":"Number of classes currently loaded in the Java virtual
+          machine",
+        "unit":"count",
+        "name":"LoadedClassCount",
+        "starttime":1300483924126
+      },
+      "totalloadedclass-count":{
+        "count":8682,
+        "lastsampletime":1300726961018,
+        "description":"Total number of classes that have been loaded since the
+          Java virtual machine has started execution",
+        "unit":"count",
+        "name":"TotalLoadedClassCount",
+        "starttime":1300483924127
+      },
+      "unloadedclass-count":{
+        "count":161,
+        "lastsampletime":1300726961018,
+        "description":"Total number of classes unloaded since the Java virtual
+          machine has started execution",
+        "unit":"count",
+        "name":"UnLoadedClassCount",
+        "starttime":1300483924127
+      }
+    },"childResources":{}
+  }
+}
+----
+
+[[gkwew]][[GSADG00640]][[xml-resource-representation-for-monitoring-objects]]
+
+===== XML Resource Representation for Monitoring Objects
+
+The general format for the XML representation of a resource for a
+monitoring object is as follows:
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<map>
+ <entry key="extraProperties">
+  <map>
+   <entry key="entity">
+    <map>
+     statistics
+    </map>
+   </entry>
+   <entry key="childResources">
+    <map>
+     children
+    </map>
+   </entry>
+  </map>
+ </entry>
+ <entry key="message" value=""></entry>
+ <entry key="exit_code" value="code"></entry>
+ <entry key="command" value="Monitoring Data"></entry>
+</map>
+----
+
+The replaceable items in this format are as follows:
+
+statistics::
+  Zero or more XML elements that represent the statistics that the
+  monitoring object provides. For the format of each element, see
+  link:#gkwjv[XML Representation of a Statistic].
+children::
+  Zero or more XML elements that represent the children of the resource.
+  Each element is specified as follows:
++
+[source,xml]
+----
+<entry key="resource-name" value="url"></entry>
+----
+  resource-name;;
+    The name of the resource as displayed in client applications that
+    access the parent of the resource.
+  url;;
+    The URL to the child resource.
+code::
+  The result of the attempt to get the resource.
+
+[[gkwjv]][[GSADG00034]][[xml-representation-of-a-statistic]]
+
+XML Representation of a Statistic
+
+The XML representation of a counter statistic is as follows:
+
+[source,xml]
+----
+<entry key="statistic">
+ <map>
+ <entry key="unit" value="unit"></entry>
+ <entry key="starttime">
+   <number>start-time</number>
+  </entry>
+  <entry key="count">
+   <number>count</number>
+  </entry>
+  <entry key="description" value="description"></entry>
+  <entry key="name" value="name"></entry>
+  <entry key="lastsampletime">
+   <number>last-sample-time</number>
+  </entry>
+  </map>
+</entry>
+----
+
+The XML representation of a range statistic is as follows:
+
+[source,xml]
+----
+<entry key="statistic">
+ <map>
+ <entry key="unit" value="unit"></entry>
+ <entry key="starttime">
+   <number>start-time</number>
+  </entry>
+  <entry key="highwatermark">
+   <number>highest-value</number>
+  </entry>
+  <entry key="lowwatermark">
+   <number>lowest-value</number>
+  </entry>
+  <entry key="current">
+   <number>current-value</number>
+  </entry>
+  <entry key="description" value="description"></entry>
+  <entry key="name" value="name"></entry>
+  <entry key="lastsampletime">
+   <number>last-sample-time</number>
+  </entry>
+  </map>
+</entry>
+----
+
+The replaceable items in these formats are as follows:
+
+statistic::
+  The name of the statistic.
+unit::
+  The unit of measurement of the statistic, which is one of the
+  following units of measurement:
++
+  `count`;;
+    The cumulative value of an attribute that increases with time.
+  `range`;;
+    The lowest value, highest value, and current value of an attribute
+    that can increase or decrease with time.
+  `boundedrange`;;
+    The lowest value, highest value, and current value of an attribute
+    that can increase or decrease with time and has fixed limits.
+  `string`;;
+    A string that represents an attribute value. A string statistic is
+    similar to a count, except that the values are not ordered.
+    Typically, a string statistic represents the state of an object, for
+    example, `CONNECTED`, `CLOSED`, or `DISCONNECTED`.
+  `time`;;
+    Values of an attribute that provide the following timing
+    measurements for an operation:
++
+    * The number of times the operation was performed.
+    * The maximum amount of time to perform the operation once.
+    * The minimum amount of time to perform the operation once.
+    * The total amount of time that has been spent performing the
+    operation.
+    * The average amount of time to perform the operation.
+start-time::
+  The in time in UNIX time at which monitoring of the statistic began.
+count::
+  Counter statistics only: The current value of the statistic.
+highest-value::
+  Range statistics only: The highest value of the statistic since
+  monitoring of the statistic began.
+lowest-value::
+  Range statistics only: The lowest value of the statistic since
+  monitoring of the statistic began.
+current-value::
+  Range statistics only: The lowest value of the statistic since
+  monitoring of the statistic began.
+description::
+  A textual description of what the statistic represents.
+name::
+  The name of the statistic as displayed in client applications that
+  access the resource that contains the statistic.
+last-sample-time::
+  The time in UNIX time at which the statistic was last sampled.
+
+[[gkwhz]][[GSADG00035]][[example-xml-resource-representation-for-a-monitoring-object]]
+
+Example XML Resource Representation for a Monitoring Object
+
+This example shows the XML representation of the monitoring object that
+provides class loader statistics for the virtual machine for the Java
+platform. In this example, the DAS is running on the local host and the
+HTTP port for administration is 4848. The URL to the resource in this
+example is
+`http://localhost:4848/monitoring/domain/server/jvm/class-loading-system`.
+
+Line breaks and white space are added to enhance readability.
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<map>
+ <entry key="extraProperties">
+  <map>
+   <entry key="entity">
+    <map>
+     <entry key="unloadedclass-count">
+      <map>
+       <entry key="unit" value="count"/>
+       <entry key="starttime">
+        <number>1300483924127</number>
+       </entry><entry key="count">
+        <number>161</number>
+       </entry>
+       <entry key="description" value="Total number of classes unloaded since
+        the Java virtual machine has started execution"/>
+       <entry key="name" value="UnLoadedClassCount"/>
+       <entry key="lastsampletime">
+        <number>1300726989505</number>
+       </entry>
+      </map>
+     </entry>
+     <entry key="totalloadedclass-count">
+      <map>
+       <entry key="unit" value="count"/>
+       <entry key="starttime">
+        <number>1300483924127</number>
+       </entry>
+       <entry key="count">
+         number>8682</number>
+       </entry>
+       <entry key="description" value="Total number of classes that have been
+        loaded since the Java virtual machine has started execution"/>
+       <entry key="name" value="TotalLoadedClassCount"/>
+       <entry key="lastsampletime">
+        <number>1300726989505</number>
+       </entry>
+      </map>
+     </entry>
+     <entry key="loadedclass-count">
+      <map>
+       <entry key="unit" value="count"/>
+       <entry key="starttime">
+        <number>1300483924126</number>
+       </entry><entry key="count">
+        <number>8521</number>
+       </entry>
+       <entry key="description" value="Number of classes currently loaded in
+        the Java virtual machine"/>
+       <entry key="name" value="LoadedClassCount"/>
+       <entry key="lastsampletime">
+        <number>1300726989505</number>
+       </entry>
+      </map>
+     </entry>
+    </map>
+   </entry>
+   <entry key="childResources">
+    <map/>
+   </entry>
+  </map>
+ </entry>
+ <entry key="message" value=""/>
+ <entry key="exit_code" value="SUCCESS"/>
+ <entry key="command" value="Monitoring Data"/>
+</map>
+----
+
+[[gkwij]][[GSADG00641]][[html-resource-representation-for-monitoring-objects]]
+
+===== HTML Resource Representation for Monitoring Objects
+
+The format for the HTML representation of a resource for a monitoring
+object is a web page that provides the following information about the
+resource:
+
+* A list of the statistics that the resource provides.
+* A list of hypertext links to the children of the resource.
+
+The following figure shows the web page for the REST resource that
+provides class loader statistics for the virtual machine for the Java
+platform.
+
+[[GSADG00002]][[gkwku]]
+
+
+.*Figure 2-2 Web Page for the REST Resource That Provides Class Loader Statistics*
+image:img/rest-monitoring.png[
+"Screen capture showing the web page for the REST resource that provides
+class loader statistics."]
+
+
+[[gkwid]][[GSADG00713]][[formats-for-resource-representation-of-log-file-details]]
+
+==== Formats for Resource Representation of Log File Details
+
+The {productName} REST interfaces represent resources for log file
+details in the following formats:
+
+* http://www.json.org/[JSON]
+* XML
+
+[[gkwnp]][[GSADG00642]][[json-resource-representation-for-log-file-details]]
+
+===== JSON Resource Representation for Log File Details
+
+The general format for the JSON representation of a resource for log
+file details is as follows:
+
+[source,json]
+----
+{
+  "records": [
+    record-list
+  ]
+}
+----
+
+The replaceable item in this format is the record-list, which is one or
+more metadata sets separated by a comma (`,`) that represent the log
+records in the log file. For the format of each metadata set, see
+link:#gkwme[JSON Representation of a Log Record in a Record List].
+
+[[gkwme]][[GSADG00036]][[json-representation-of-a-log-record-in-a-record-list]]
+
+JSON Representation of a Log Record in a Record List
+
+The JSON representation of a log record in a record list is as follows:
+
+[source,json]
+----
+{
+  "recordNumber":record-number,
+  "loggedDateTimeInMS":logged-date,
+  "loggedLevel":"log-level",
+  "productName":"product-name",
+  "loggerName":"logger-class-name",
+  "nameValuePairs":"_ThreadID=thread-id;_ThreadName=thread-name;",
+  "messageID":"message-id",
+  "Message":"message-text"
+}
+----
+
+The replaceable items in this format are as follows:
+
+record-number::
+  A serial number in the form of a decimal integer that uniquely
+  identifies the log record.
+logged-date::
+  The date and time in UNIX time that the record was created.
+log-level::
+  The severity level of the message in the log record. For more
+  information, see link:logging.html#gklml[Setting Log Levels].
+product-name::
+  The application that created the log message, for example, `glassfish7`.
+logger-class-name::
+  The fully qualified name of the Java class of the logger class that
+  created the log message. Each component of {productName} provides
+  its own logger class. For detailed information about the names of
+  logger classes in {productName}, see link:logging.html#gkres[Logger
+  Namespaces].
+thread-id::
+  The numerical identifier of the thread that created the message.
+thread-name::
+  The name of the thread that created the message.
+message-id::
+  A unique identifier for the message. For messages from {productName}, this identifier consists of a module code and a numerical
+  value, for example, `CORE5004`. All `SEVERE` and `WARNING` messages
+  and some `INFO` messages from {productName} contain a message
+  identifier. For more information, see the
+  link:error-messages-reference.html#GSEMR[
+  {productName} Error Message Reference].
+message-text::
+  The text of the log message.
+
+[[gkwoz]][[GSADG00037]][[example-json-resource-representation-for-log-file-details]]
+
+Example JSON Resource Representation for Log File Details
+
+This example shows the JSON representation of the resource for log file
+details. In this example, the DAS is running on the local host and the
+HTTP port for administration is 4848. The URL to the resource in this
+example is `http://localhost:4848/management/domain/view-log/details`.
+
+Line breaks and white space are added to enhance readability.
+
+[source,json]
+----
+{
+  "records": [
+    {
+      "recordNumber":475,
+      "loggedDateTimeInMS":1300743782815,
+      "loggedLevel":"INFO",
+      "productName":"glassfish7",
+      "loggerName":"org.glassfish.admingui",
+      "nameValuePairs": "_ThreadID=25;_ThreadName=Thread-1;",
+      "messageID":"",
+      "Message":"Admin Console: Initializing Session Attributes..."
+    },
+    {
+      "recordNumber":474,
+      "loggedDateTimeInMS":1300728893368,
+      "loggedLevel":"INFO",
+      "productName":"glassfish7",
+      "loggerName":"jakarta.enterprise.system.core.com.sun.enterprise.v3.admin.adapter",
+      "nameValuePairs":"_ThreadID=238;_ThreadName=Thread-1;",
+      "messageID":"",
+      "Message":"The Admin Console application is loaded."
+    },
+    {
+      "recordNumber":473,
+      "loggedDateTimeInMS":1300728893367,
+      "loggedLevel":"INFO",
+      "productName":"glassfish7",
+      "loggerName":"jakarta.enterprise.system.core.com.sun.enterprise.v3.server",
+      "nameValuePairs":"_ThreadID=238;_ThreadName=Thread-1;",
+      "messageID":"CORE10010",
+      "Message":" Loading application __admingui done in 40,063 ms"
+    }
+  ]
+}
+----
+
+[[gkwmi]][[GSADG00643]][[xml-resource-representation-for-log-file-details]]
+
+===== XML Resource Representation for Log File Details
+
+The general format for the XML representation of a resource for log file
+details is as follows:
+
+[source,xml]
+----
+<records>
+ records
+ </records>
+----
+
+The replaceable item in this format is the records, which is one or more
+XML elements that represent the log records in the log file. For the
+format of each element, see link:#gkwot[XML Representation of a Log
+Record].
+
+[[gkwot]][[GSADG00038]][[xml-representation-of-a-log-record]]
+
+XML Representation of a Log Record
+
+The XML representation of a log record is as follows:
+
+[source,xml]
+----
+<record loggedDateTimeInMS="logged-date" loggedLevel="log-level"
+ loggerName="logger-class-name" messageID="message-id"
+ nameValuePairs="_ThreadID=thread-id;_thread-name;" productName="product-name"
+ recordNumber="record-number"/>
+----
+
+The replaceable items in this format are as follows:
+
+logged-date::
+  The date and time in UNIX time that the record was created.
+log-level::
+  The severity level of the message in the log record. For more
+  information, see link:logging.html#gklml[Setting Log Levels].
+logger-class-name::
+  The fully qualified name of the Java class of the logger class that
+  created the log message. Each component of {productName} provides
+  its own logger class. For detailed information about the names of
+  logger classes in {productName}, see link:logging.html#gkres[Logger
+  Namespaces].
+message-id::
+  A unique identifier for the message. For messages from {productName}, this identifier consists of a module code and a numerical
+  value, for example, `CORE5004`. All `SEVERE` and `WARNING` messages
+  and some `INFO` messages from {productName} contain a message
+  identifier. For more information, see the link:error-messages-reference.html#GSEMR[{productName} Error Message Reference].
+thread-id::
+  The numerical identifier of the thread that created the message.
+thread-name::
+  The name of the thread that created the message.
+product-name::
+  The application that created the log message, for example,
+  `glassfish7`.
+record-number::
+  A serial number in the form of a decimal integer that uniquely
+  identifies the log record.
+
+[[gkwoq]][[GSADG00039]][[example-xml-resource-representation-for-log-file-details]]
+
+Example XML Resource Representation for Log File Details
+
+This example shows the XML representation of the resource for log file
+details. In this example, the DAS is running on the local host and the
+HTTP port for administration is 4848. The URL to the resource in this
+example is `http://localhost:4848/management/domain/view-log/details`.
+
+Line breaks and white space are added to enhance readability.
+
+[source,xml]
+----
+<records>
+ <record loggedDateTimeInMS="1300743782815" loggedLevel="INFO"
+ loggerName="org.glassfish.admingui" messageID=""
+ nameValuePairs="_ThreadID=25;_ThreadName=Thread-1;"
+ productName="glassfish7" recordNumber="475"/>
+ <record loggedDateTimeInMS="1300728893368" loggedLevel="INFO"
+ loggerName="jakarta.enterprise.system.core.com.sun.enterprise.v3.admin.adapter"
+  messageID="" nameValuePairs="_ThreadID=238;_ThreadName=Thread-1;"
+  productName="glassfish7" recordNumber="474"/>
+ <record loggedDateTimeInMS="1300728893367" loggedLevel="INFO"
+ loggerName="jakarta.enterprise.system.core.com.sun.enterprise.v3.server"
+ messageid="core10010" nameValuePairs="_ThreadID=238;_ThreadName=Thread-1;"
+ productName="glassfish7" recordNumber="473"/>
+</records>
+----
+
+[[gkwsq]][[GSADG00714]][[supported-content-types-in-requests-to-rest-resources]]
+
+==== Supported Content Types in Requests to REST Resources
+
+The {productName} REST interfaces support the following types in the
+content-type header of a client request:
+
+* http://www.json.org/[JSON]
+* XML
+* http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1[Form URL
+encoded]
+
+How to specify the type in the content-type header depends on how you
+are sending the request. For example, if you are using the cURL utility,
+specify the type through the `-H` option as follows:
+
+* For JSON, specify `-H "Content-type: application/json"`.
+* For XML, specify `-H "Content-type: application/xml"`.
+* For form URL encoded, specify
+`-H "Content-type: application/x-www-form-urlencoded"`.
+
+
diff --git a/docs/administration-guide/src/main/asciidoc/http_https.adoc b/docs/administration-guide/src/main/asciidoc/http_https.adoc
new file mode 100644
index 0000000..79f4d3c
--- /dev/null
+++ b/docs/administration-guide/src/main/asciidoc/http_https.adoc
@@ -0,0 +1,1067 @@
+type=page
+status=published
+title=Administering Internet Connectivity
+next=concurrent.html
+prev=connectors.html
+~~~~~~
+
+= Administering Internet Connectivity
+
+[[GSADG00017]][[ablsw]]
+
+
+[[administering-internet-connectivity]]
+== 13 Administering Internet Connectivity
+
+This chapter provides procedures for performing internet connectivity
+tasks in the {productName} 7 environment by
+using the `asadmin` command-line utility.
+
+The following topics are addressed here:
+
+* link:#giusf[About Internet Connectivity]
+* link:#ggnfu[Administering HTTP Network Listeners]
+* link:#ggncs[Administering Virtual Servers]
+
+Instructions for accomplishing the tasks in this chapter by using the
+Administration Console are contained in the Administration Console
+online help.
+
+[[giusf]][[GSADG00587]][[about-internet-connectivity]]
+
+=== About Internet Connectivity
+
+The HTTP service provides functionality for deploying web applications
+and for making deployed web applications accessible by Internet clients,
+either in a single application server instance or in a cluster of
+multiple server instances. HTTP services are provided by two kinds of
+related objects: listeners and virtual servers.
+
+For more information about clusters, see the link:ha-administration-guide.html#GSHAG[{productName} High Availability Administration Guide].
+
+The following topics are addressed here:
+
+* link:#giuri[About HTTP Network Listeners]
+* link:#giupz[About Virtual Servers]
+
+[[giuri]][[GSADG00766]][[about-http-network-listeners]]
+
+==== About HTTP Network Listeners
+
+An HTTP listener, also known as a network listener, is a listen socket
+that has an Internet Protocol (IP) address, a port number, a server
+name, and a default virtual server. Each virtual server provides
+connections between the server and clients through one or more
+listeners. Each listener must have a unique combination of port number
+and IP address. For example, an HTTP listener can listen for a host on
+all configured IP addresses on a given port by specifying the IP address
+0.0.0.0. Alternatively, the listener can specify a unique IP address for
+each listener while using the same port.
+
+Because an HTTP listener is a combination of IP address and port number,
+you can have multiple HTTP listeners with the same IP address and
+different port numbers, or with different IP addresses and the same port
+number (if your host was configured to respond to these addresses).
+However, if an HTTP listener uses the 0.0.0.0 IP address, which listens
+on all IP addresses on a port, you cannot create HTTP listeners for
+additional IP addresses that listen on the same port for a specific IP
+address. For example, if an HTTP listener uses 0.0.0.0:8080 (all IP
+addresses on port 8080), another HTTP listener cannot use 1.2.3.4:8080.
+The host running the {productName} typically has access to only one
+IP address. HTTP listeners typically use the 0.0.0.0 IP address and
+different port numbers, with each port number serving a different
+purpose. However, if the host does have access to more than one IP
+address, each address can serve a different purpose.
+
+To access a web application deployed on {productName}, use the URL
+`http://localhost:8080/` (or `https://localhost:8081/` for a secure
+application), along with the context root specified for the web
+application.
+
+To access the Administration Console, use the URL
+`https://localhost:4848/` or `http://localhost:4848/asadmin/` (console
+default context root).
+
+[[giupz]][[GSADG00767]][[about-virtual-servers]]
+
+==== About Virtual Servers
+
+A virtual server, sometimes called a virtual host, is an object that
+allows the same physical server to host multiple Internet domain names.
+All virtual servers hosted on the same physical server share the IP
+address of that physical server. A virtual server associates a domain
+name for a server (such as `www.aaa.com`) with the particular server on
+which {productName} is running. Each virtual server must be
+registered with the DNS server for your network.
+
+
+[NOTE]
+====
+Do not confuse an Internet domain with the administrative domain of
+{productName}.
+====
+
+
+For example, assume that you want to host the following domains on your
+physical server: `www.aaa.com`, `www.bbb.com`, and `www.ccc.com`. Assume
+that these domains are respectively associated with web modules `web1`,
+`web2`, and `web3`. This means that the following URLs are handled by
+your physical server:
+
+[source]
+----
+http://www.aaa.com:8080/web1
+http://www.bbb.com:8080/web2
+http://www.ccc.com:8080/web3
+----
+
+The first URL is mapped to virtual server `www.aaa.com`, the second URL
+is mapped to virtual server `www.bbb.com`, and the third is mapped to
+virtual server `www.ccc.com`. For this mapping to work, `www.aaa.com`,
+`www.bbb.com`, and `www.ccc.com` must all resolve to your physical
+server's IP address and each virtual server must be registered with the
+DNS server for your network. In addition, on a UNIX system, add these
+domains to your `/etc/hosts` file (if the setting for `hosts` in your
+`/etc/nsswitch.conf` file includes `files`).
+
+[[ggnfu]][[GSADG00588]][[administering-http-network-listeners]]
+
+=== Administering HTTP Network Listeners
+
+By default, when {productName} starts, the following HTTP listeners
+are started automatically:
+
+* HTTP listeners associated with the virtual server named `server`:
+** The listener named `http-listener-1` does not have security enabled.
+** The listener named `http-listener-2` has security enabled.
+* An HTTP listener named `admin-listener`, associated with the virtual
+server named `__asadmin`. For this listener, security is not enabled.
+
+The following table describes the {productName} default ports for the
+listeners that use ports.
+
+[[GSADG990]][[sthref72]][[ggnpj]]
+
+
+Table 13-1 Default Ports for Listeners
+
+[width="100%",cols="18%,13%,69%",options="header",]
+|===
+|Listener |Default Port |Description
+|Administrative server |4848 |A domain's administrative server is
+accessed by the Administration Console and the `asadmin` utility. For
+the Administration Console, specify the port number in the URL of the
+browser. When running an `asadmin` subcommand remotely, specify the port
+number by using the `--port` option.
+
+|HTTP |8080 |The web server listens for HTTP requests on a port.
+To access deployed web applications and services, clients connect to this port.
+
+|HTTPS |8181 |Web applications configured for secure communications
+listen on a separate port.
+
+|===
+
+
+The following topics are addressed here:
+
+* link:#ggnfh[To Create an Internet Connection]
+* link:#gjkuy[Administering HTTP Protocols]
+* link:#gjkzi[Administering HTTP Configurations]
+* link:#gjkym[Administering HTTP Transports]
+* link:#gjkwt[Administering HTTP Network Listeners]
+
+[[ggnfh]][[GSADG00456]][[to-create-an-internet-connection]]
+
+==== To Create an Internet Connection
+
+Use the subcommands in this procedure to create an internet connection
+with the full range of listener options. A network listener is created
+behind the scenes. For the shortcut version of this process , see
+link:#gjimx[To Create an HTTP Network Listener].
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Create an HTTP or HTTPS protocol by using the
+link:reference-manual/create-protocol.html#GSRFM00051[`create-protocol`] subcommand with the
+`--securityenabled` option.
+To use the built-in `http-listener-1` HTTP protocol,
+or `http-listener-2` HTTPS protocol, skip this step.
+3. Create an HTTP configuration by using the
+link:reference-manual/create-http.html#GSRFM00025[`create-http`] subcommand.
+To use a built-in protocol, skip this step.
+4. Create a transport by using the link:reference-manual/create-transport.html#GSRFM00061[`create-transport`]
+subcommand. To use the built-in `tcp` transport, skip this step.
+5. Create a thread pool by using the
+link:reference-manual/create-threadpool.html#GSRFM00060[`create-threadpool`] subcommand.
+To avoid using a thread pool, or to use the built-in `http-thread-pool`
+thread pool, skip this step.
+For additional thread pool information, see link:threadpools.html#abluc[Administering Thread Pools].
+6. Create an HTTP listener by using the
+link:reference-manual/create-network-listener.html#GSRFM00046[`create-network-listener`] subcommand.
+Specify a protocol and transport, optionally a thread pool.
+7. To apply your changes, restart {productName}. See link:domains.html#ginqj[To Restart a Domain].
+
+[[GSADG991]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing a command such as `asadmin help create-http-listener` at the
+command line.
+
+[[gjkuy]][[GSADG00768]][[administering-http-protocols]]
+
+==== Administering HTTP Protocols
+
+Each HTTP listener has an HTTP protocol, which is created either by
+using the `create-protocol` subcommand or by using the built-in
+protocols that are applied when you follow the instructions in
+link:#gjimx[To Create an HTTP Network Listener].
+
+The following topics are addressed here:
+
+* link:#gjhot[To Create a Protocol]
+* link:#gjhna[To List Protocols]
+* link:#gjhnx[To Delete a Protocol]
+
+[[gjhot]][[GSADG00457]][[to-create-a-protocol]]
+
+===== To Create a Protocol
+
+Use the `create-protocol` subcommand in remote mode to create a
+protocol.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Create a protocol by using the link:reference-manual/create-protocol.html#GSRFM00051[`create-protocol`]
++
+Information about options and properties for the subcommand are included
+in this help page.
+
+[[GSADG00245]][[gjhos]]
+Example 13-1 Creating an HTTP Protocol
+
+This example creates a protocol named `http-1` with security enabled.
+
+[source]
+----
+asadmin> create-protocol --securityenabled=true http-1
+Command create-protocol executed successfully.
+----
+
+[[GSADG992]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-protocol` at the command line.
+
+[[gjhna]][[GSADG00458]][[to-list-protocols]]
+
+===== To List Protocols
+
+Use the `list-protocols` subcommand in remote mode to list the existing
+HTTP protocols.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the existing protocols by using the
+link:reference-manual/list-protocols.html#GSRFM00195[`list-protocols`] subcommand.
+
+[[GSADG00246]][[gjhqg]]
+Example 13-2 Listing the Protocols
+
+This example lists the existing protocols.
+
+[source]
+----
+asadmin> list-protocols
+admin-listener
+http-1
+http-listener-1
+http-listener-2
+Command list-protocols executed successfully.
+----
+
+[[GSADG993]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-protocols` at the command line.
+
+[[gjhnx]][[GSADG00459]][[to-delete-a-protocol]]
+
+===== To Delete a Protocol
+
+Use the `delete-protocol` subcommand in remote mode to remove a
+protocol.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Delete a protocol by using the link:reference-manual/delete-protocol.html#GSRFM00103[`delete-protocol`]
+subcommand
+
+[[GSADG00247]][[gjhop]]
+Example 13-3 Deleting a Protocol
+
+This example deletes the protocol named `http-1`.
+
+[source]
+----
+asadmin> delete-protocol http-1
+Command delete-protocol executed successfully.
+----
+
+[[GSADG994]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-protocol` at the command line.
+
+[[gjkzi]][[GSADG00769]][[administering-http-configurations]]
+
+==== Administering HTTP Configurations
+
+Each HTTP listener has an HTTP configuration, which is created either by
+using the `create-http` subcommand or by using the built-in
+configurations that are applied when you follow the instructions in
+link:#gjimx[To Create an HTTP Network Listener].
+
+The following topics are addressed here:
+
+* link:#gjhqc[To Create an HTTP Configuration]
+* link:#gjhqa[To Delete an HTTP Configuration]
+
+[[gjhqc]][[GSADG00460]][[to-create-an-http-configuration]]
+
+===== To Create an HTTP Configuration
+
+Use the `create-http` subcommand in remote mode to create a set of HTTP
+parameters for a protocol. This set of parameters configures one or more
+network listeners,
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Create an HTTP configuration by using the
+link:reference-manual/create-http.html#GSRFM00025[`create-http`] subcommand.
+Information about options and properties for the subcommand are included
+in this help page.
+
+[[GSADG00248]][[gjhnz]]
+Example 13-4 Creating an HTTP Configuration
+
+This example creates an HTTP parameter set for the protocol named
+`http-1`.
+
+[source]
+----
+asadmin> create-http --timeout-seconds 60 --default-virtual-server server http-1
+Command create-http executed successfully.
+----
+
+[[GSADG995]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-http` at the command line.
+
+[[gjhqa]][[GSADG00461]][[to-delete-an-http-configuration]]
+
+===== To Delete an HTTP Configuration
+
+Use the `delete-http` subcommand in remote mode to remove HTTP
+parameters from a protocol.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Delete the HTTP parameters from a protocol by using the
+link:reference-manual/delete-http.html#GSRFM00077[`delete-http`] subcommand.
+
+[[GSADG00249]][[gjhov]]
+Example 13-5 Deleting an HTTP Configuration
+
+This example deletes the HTTP parameter set from a protocol named `http-1`.
+
+[source]
+----
+asadmin> delete-http http-1
+Command delete-http executed successfully.
+----
+
+[[GSADG996]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-http` at the command line.
+
+[[gjkym]][[GSADG00770]][[administering-http-transports]]
+
+==== Administering HTTP Transports
+
+Each HTTP listener has an HTTP transport, which is created either by
+using the `create-transport` subcommand or by using the built-in
+transports that are applied when you follow the instructions in
+link:#gjimx[To Create an HTTP Network Listener].
+
+The following topics are addressed here:
+
+* link:#gjhps[To Create a Transport]
+* link:#gjhmx[To List Transports]
+* link:#gjhqp[To Delete a Transport]
+
+[[gjhps]][[GSADG00462]][[to-create-a-transport]]
+
+===== To Create a Transport
+
+Use the `create-transport` subcommand in remote mode to create a
+transport for a network listener,
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Create a transport by using the link:reference-manual/create-transport.html#GSRFM00061[`create-transport`]
+subcommand.
+Information about options and properties for the subcommand are included in this help page.
+
+[[GSADG00250]][[gjhpx]]
+Example 13-6 Creating a Transport
+
+This example creates a transport named `http1-trans` that uses a
+non-default number of acceptor threads.
+
+[source]
+----
+asadmin> create-transport --acceptorthreads 100 http1-trans
+Command create-transport executed successfully.
+----
+
+[[GSADG997]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-transport` at the command line.
+
+[[gjhmx]][[GSADG00463]][[to-list-transports]]
+
+===== To List Transports
+
+Use the `list-transports` subcommand in remote mode to list the existing
+HTTP transports.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the existing transports by using the
+link:reference-manual/list-transports.html#GSRFM00206[`list-transports`] subcommand.
+
+[[GSADG00251]][[gjhqj]]
+Example 13-7 Listing HTTP Transports
+
+This example lists the existing transports.
+
+[source]
+----
+asadmin> list-transports
+http1-trans
+tcp
+Command list-transports executed successfully.
+----
+
+[[GSADG998]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-transports` at the command line.
+
+[[gjhqp]][[GSADG00464]][[to-delete-a-transport]]
+
+===== To Delete a Transport
+
+Use the `delete-transport` subcommand in remote mode to remove a
+transport.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Delete a transport by using the link:reference-manual/delete-transport.html#GSRFM00112[`delete-transport`]
+subcommand.
+
+[[GSADG00252]][[gjhoh]]
+Example 13-8 Deleting a Transport
+
+This example deletes he transport named `http1-trans`.
+
+[source]
+----
+asadmin> delete-transport http1-trans
+Command delete-transport executed successfully.
+----
+
+[[GSADG999]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-transport` at the command line.
+
+[[gjkwt]][[GSADG00771]][[administering-http-network-listeners-1]]
+
+==== Administering HTTP Network Listeners
+
+The following topics are addressed here:
+
+* link:#gjimx[To Create an HTTP Network Listener]
+* link:#ggnbv[To List HTTP Network Listeners]
+* link:#giwls[To Update an HTTP Network Listener]
+* link:#ggndu[To Delete an HTTP Network Listener]
+* link:#ggnbj[To Configure an HTTP Listener for SSL]
+* link:#CHDEDCEA[To Configure Optional Client Authentication for SSL]
+* link:#CHDHEFHG[To Configure a Custom SSL Implementation]
+* link:#ggncl[To Delete SSL From an HTTP Listener]
+* link:#gixjb[To Assign a Default Virtual Server to an HTTP Listener]
+
+[[gjimx]][[GSADG00465]][[to-create-an-http-network-listener]]
+
+===== To Create an HTTP Network Listener
+
+Use the `create-http-listener` subcommand or the
+`create-network-listener` subcommand in remote mode to create a
+listener. These subcommands provide backward compatibility and also
+provide a shortcut for creating network listeners that use the HTTP
+protocol. Behind the scenes, a network listener is created as well as
+its associated protocol, transport, and HTTP configuration. This method
+is a convenient shortcut, but it gives access to only a limited number
+of options. If you want to specify the full range of listener options,
+follow the instructions in link:#ggnfh[To Create an Internet
+Connection].
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Create an HTTP network listener by using the
+link:reference-manual/create-network-listener.html#GSRFM00046[`create-network-listener`] subcommand or the
+link:reference-manual/create-http-listener.html#GSRFM00030[`create-http-listener`] subcommand.
+3. If needed, restart the server.
++
+If you edit the special HTTP network listener named `admin-listener`,
+you must restart the server for changes to take effect. See
+link:domains.html#ginqj[To Restart a Domain].
+
+[[GSADG00253]][[ggpjk]]
+Example 13-9 Creating an HTTP Listener
+
+This example creates an HTTP listener named `sampleListener` that uses a
+non-default number of acceptor threads. Security is not enabled at
+runtime.
+
+[source]
+----
+asadmin> create-http-listener --listeneraddress 0.0.0.0
+--listenerport 7272 --defaultvs server --servername host1.sun.com
+--acceptorthreads 100 --securityenabled=false
+--enabled=false sampleListener
+Command create-http-listener executed successfully.
+----
+
+[[GSADG00254]][[gjimj]]
+Example 13-10 Creating a Network Listener
+
+This example a network listener named `sampleListener` that is not
+enabled at runtime:
+
+[source]
+----
+asadmin> create-network-listener --listenerport 7272 protocol http-1
+--enabled=false sampleListener
+Command create-network-listener executed successfully.
+----
+
+[[GSADG1000]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-http-listener` or
+`asadmin help create-network-listener` at the command line.
+
+[[ggnbv]][[GSADG00466]][[to-list-http-network-listeners]]
+
+===== To List HTTP Network Listeners
+
+Use the `list-http-listeners` subcommand or the `list-network-listeners`
+subcommand in remote mode to list the existing HTTP listeners.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List HTTP listeners by using the
+link:reference-manual/list-http-listeners.html#GSRFM00168[`list-http-listeners`] or
+link:reference-manual/list-network-listeners.html#GSRFM00186[`list-network-listeners`] subcommand.
+
+[[GSADG00255]][[ggpgw]]
+Example 13-11 Listing HTTP Listeners
+
+This example lists the HTTP listeners. The same output is given if you
+use the `list-network-listeners` subcommand.
+
+[source]
+----
+asadmin> list-http-listeners
+admin-listener
+http-listener-2
+http-listener-1
+Command list-http-listeners executed successfully.
+----
+
+[[GSADG1001]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-http-listeners` or
+`asadmin help list-network-listeners` at the command line.
+
+[[giwls]][[GSADG00467]][[to-update-an-http-network-listener]]
+
+===== To Update an HTTP Network Listener
+
+1. List HTTP listeners by using the
+link:reference-manual/list-http-listeners.html#GSRFM00168[`list-http-listeners`] or
+link:reference-manual/list-network-listeners.html#GSRFM00186[`list-network-listeners`] subcommand.
+2. Modify the values for the specified listener by using the
+link:reference-manual/set.html#GSRFM00226[`set`] subcommand.
++
+The listener is identified by its dotted name.
+
+[[GSADG00256]][[giwiw]]
+Example 13-12 Updating an HTTP Network Listener
+
+This example changes `security-enabled` to `false` on `http-listener-2`.
+
+[source]
+----
+asadmin> set server.network-config.protocols.protocol.http-listener-2.security-enabled=false
+Command set executed successfully.
+----
+
+[[ggndu]][[GSADG00468]][[to-delete-an-http-network-listener]]
+
+===== To Delete an HTTP Network Listener
+
+Use the `delete-http-listener` subcommand or the
+`delete-network-listener` subcommand in remote mode to delete an
+existing HTTP listener. This disables secure communications for the
+listener.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List HTTP listeners by using the
+link:reference-manual/list-http-listeners.html#GSRFM00168[`list-http-listeners`] subcommand.
+3. Delete an HTTP listener by using the
+link:reference-manual/delete-http-listener.html#GSRFM00082[`delete-http-listener`] or
+link:reference-manual/delete-network-listener.html#GSRFM00098[`delete-network-listener`] subcommand.
+4. To apply your changes, restart {productName}.
++
+See link:domains.html#ginqj[To Restart a Domain].
+
+[[GSADG00257]][[ggpjr]]
+Example 13-13 Deleting an HTTP Listener
+
+This example deletes the HTTP listener named `sampleListener`:
+
+[source]
+----
+asadmin> delete-http-listener sampleListener
+Command delete-http-listener executed successfully.
+----
+
+[[GSADG1002]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-http-listener` or
+`asadmin help delete-network-listener` at the command line.
+
+[[ggnbj]][[GSADG00469]][[to-configure-an-http-listener-for-ssl]]
+
+===== To Configure an HTTP Listener for SSL
+
+Use the `create-ssl` subcommand in remote mode to create and configure
+an SSL element in the specified listener. This enables secure
+communication for the listener.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Configure an HTTP listener by using the
+link:reference-manual/create-ssl.html#GSRFM00058[`create-ssl`] subcommand.
+3. To apply your changes, restart {productName}.
++
+See link:domains.html#ginqj[To Restart a Domain].
+
+[[GSADG00258]][[ggphv]]
+Example 13-14 Configuring an HTTP Listener for SSL
+
+This example enables the HTTP listener named `http-listener-1` for SSL:
+
+[source]
+----
+asadmin> create-ssl --type http-listener --certname sampleCert http-listener-1
+Command create-ssl executed successfully.
+----
+
+[[GSADG1003]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-ssl` at the command line.
+
+[[CHDEDCEA]][[GSADG1106]][[to-configure-optional-client-authentication-for-ssl]]
+
+===== To Configure Optional Client Authentication for SSL
+
+In {productName}, you can configure the SSL protocol of an HTTP
+listener such that it requests a certificate before permitting a client
+connection, but does not refuse a connection if the client does not
+provide one. To enable this feature, set the `client-auth` property of
+the SSL protocol to the value `want`. For example:
+
+[source]
+----
+asadmin> set configs.config.config-name.network-config.protocols.\
+protocol.listener-name.ssl.client-auth=want
+----
+
+[[CHDHEFHG]][[GSADG1107]][[to-configure-a-custom-ssl-implementation]]
+
+===== To Configure a Custom SSL Implementation
+
+In {productName}, you can configure the SSL protocol an HTTP listener
+such that it uses a custom implementation of SSL. To enable this
+feature, set the `classname` property of the SSL protocol to the name of
+a class that implements the `com.sun.grizzly.util.net.SSLImplementation`
+interface. For example:
+
+[source]
+----
+asadmin> set configs.config.config-name.network-config.protocols.\
+protocol.listener-name.ssl.classname=SSLImplementation-class-name
+----
+
+By default, {productName} uses the implementation
+`com.sun.enterprise.security.ssl.GlassfishSSLImpl` for the SSL protocol.
+
+[[ggncl]][[GSADG00470]][[to-delete-ssl-from-an-http-listener]]
+
+===== To Delete SSL From an HTTP Listener
+
+Use the `delete-ssl` subcommand in remote mode to delete the SSL element
+in the specified listener. This disables secure communications for the
+listener.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Delete SSL from an HTTP listener by using the
+link:reference-manual/delete-ssl.html#GSRFM00109[`delete-ssl`] subcommand.
+3. To apply your changes, restart {productName}.
++
+See link:domains.html#ginqj[To Restart a Domain].
+
+[[GSADG00259]][[ggpln]]
+Example 13-15 Deleting SSL From an HTTP Listener
+
+This example disables SSL for the HTTP listener named `http-listener-1`:
+
+[source]
+----
+asadmin> delete-ssl --type http-listener http-listener-1
+Command delete-http-listener executed successfully.
+----
+
+[[GSADG1004]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-ssl` at the command line.
+
+[[gixjb]][[GSADG00471]][[to-assign-a-default-virtual-server-to-an-http-listener]]
+
+===== To Assign a Default Virtual Server to an HTTP Listener
+
+1. In the Administration Console, open the HTTP Service component under
+the relevant configuration.
+2. Open the HTTP Listeners component under the HTTP Service component.
+3. Select or create a new HTTP listener.
+4. Select from the Default Virtual Server drop-down list.
++
+For more information, see link:#beaga[To Assign a Default Web Module to
+a Virtual Server].
+
+[[GSADG1005]]
+
+See Also
+
+For details, click the Help button in the Administration Console from
+the HTTP Listeners page.
+
+[[ggncs]][[GSADG00589]][[administering-virtual-servers]]
+
+=== Administering Virtual Servers
+
+A virtual server is a virtual web server that serves content targeted
+for a specific URL. Multiple virtual servers can serve content using the
+same or different host names, port numbers, or IP addresses. The HTTP
+service directs incoming web requests to different virtual servers based
+on the URL.
+
+When you first install {productName}, a default virtual server is
+created. You can assign a default virtual server to each new HTTP
+listener you create.
+
+Web applications and Jakarta EE applications containing web components (web
+modules) can be assigned to virtual servers during deployment. A web
+module can be assigned to more than one virtual server, and a virtual
+server can have more than one web module assigned to it. If you deploy a
+web application and don't specify any assigned virtual servers, the web
+application is assigned to all currently defined virtual servers. If you
+then create additional virtual servers and want to assign existing web
+applications to them, you must redeploy the web applications. For more
+information about deployment, see the link:application-deployment-guide.html#GSDPG[{productName} Application Deployment Guide].
+
+You can define virtual server properties using the `asadmin set`
+command. For example:
+
+[source]
+----
+asadmin> set server-config.http-service.virtual-server.MyVS.property.sso-enabled="true"
+----
+
+Some virtual server properties can be set for a specific web
+application. For details, see "link:application-deployment-guide/dd-elements.html#GSDPG00161[glassfish-web-app]" in
+{productName} Application Deployment Guide.
+
+The following topics are addressed here:
+
+* link:#ggnfr[To Create a Virtual Server]
+* link:#ggndw[To List Virtual Servers]
+* link:#giwkp[To Update a Virtual Server]
+* link:#ggnen[To Delete a Virtual Server]
+* link:#beaga[To Assign a Default Web Module to a Virtual Server]
+* link:#gixku[To Assign a Virtual Server to an Application or Module]
+* link:#glavy[To Set `JSESSIONIDSSO` Cookie Attributes]
+
+[[ggnfr]][[GSADG00472]][[to-create-a-virtual-server]]
+
+==== To Create a Virtual Server
+
+By default, when {productName} starts, the following virtual servers
+are started automatically:
+
+* A virtual server named `server`, which hosts all user-defined web
+modules.
++
+For development, testing, and deployment of web services in a
+non-production environment, `server` is often the only virtual server
+required.
+* A virtual server named `__asadmin`, which hosts all
+administration-related web modules (specifically, the Administration
+Console). This server is restricted, which means that you cannot deploy
+web modules to this virtual server.
+
+In a production environment, additional virtual servers provide hosting
+facilities for users and customers so that each appears to have its own
+web server, even though there is only one physical server.
+
+Use the `create-virtual-server` subcommand in remote mode to create the
+named virtual server.
+
+[[GSADG1006]]
+
+Before You Begin
+
+A virtual server must specify an existing HTTP listener. Because the
+virtual server cannot specify an HTTP listener that is already being
+used by another virtual server, create at least one HTTP listener before
+creating a new virtual server.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Create a virtual server by using the
+link:reference-manual/create-virtual-server.html#GSRFM00062[`create-virtual-server`] subcommand.
++
+Information about properties for this subcommand is included in this
+help page.
+3. To apply your changes, restart {productName}.
++
+See link:domains.html#ginqj[To Restart a Domain].
+
+[[GSADG00260]][[ggpha]]
+Example 13-16 Creating a Virtual Server
+
+This example creates a virtual server named `sampleServer` on
+`localhost`.
+
+[source]
+----
+asadmin> create-virtual-server sampleServer
+Command create-virtual-server executed successfully.
+----
+
+[[GSADG1007]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-virutal-server` at the command line.
+
+[[ggndw]][[GSADG00473]][[to-list-virtual-servers]]
+
+==== To List Virtual Servers
+
+Use the `list-virtual-servers` subcommand in remote mode to list the
+existing virtual servers.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List virtual servers by using the
+link:reference-manual/list-virtual-servers.html#GSRFM00207[`list-virtual-servers`] subcommand.
+
+[[GSADG00261]][[ggpgr]]
+Example 13-17 Listing Virtual Servers
+
+This example lists the virtual servers for `localhost`.
+
+[source]
+----
+asadmin> list-virtual-servers
+sampleListener
+admin-listener
+http-listener-2
+http-listener-1
+Command list-http-listeners executed successfully.
+----
+
+[[GSADG1008]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-virutal-servers` at the command line.
+
+[[giwkp]][[GSADG00474]][[to-update-a-virtual-server]]
+
+==== To Update a Virtual Server
+
+1. List virtual servers by using the
+link:reference-manual/list-virtual-servers.html#GSRFM00207[`list-virtual-servers`] subcommand.
+2. Modify the values for the specified virtual server by using the
+link:reference-manual/set.html#GSRFM00226[`set`] subcommand.
++
+The virtual server is identified by its dotted name.
+
+[[ggnen]][[GSADG00475]][[to-delete-a-virtual-server]]
+
+==== To Delete a Virtual Server
+
+Use the `delete-virtual-server` subcommand in remote mode to delete an
+existing virtual server.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List virtual servers by using the
+link:reference-manual/list-virtual-servers.html#GSRFM00207[`list-virtual-servers`] subcommand.
+3. If necessary, notify users that the virtual server is being deleted.
+4. Delete a virtual server by using the
+link:reference-manual/delete-virtual-server.html#GSRFM00113[`delete-virtual-server`] subcommand.
+5. To apply your changes, restart {productName}.
++
+See link:domains.html#ginqj[To Restart a Domain].
+
+[[GSADG00262]][[ggpmd]]
+Example 13-18 Deleting a Virtual Server
+
+This example deletes the virtual server named `sampleServer` from
+`localhost`.
+
+[source]
+----
+asadmin> delete-virtual-server sampleServer
+Command delete-virtual-server executed successfully.
+----
+
+[[GSADG1009]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-virutal-server` at the command line.
+
+[[beaga]][[GSADG00772]][[to-assign-a-default-web-module-to-a-virtual-server]]
+
+==== To Assign a Default Web Module to a Virtual Server
+
+A default web module can be assigned to the default virtual server and
+to each new virtual server. To access the default web module for a
+virtual server, point the browser to the URL for the virtual server, but
+do not supply a context root. For example:
+
+[source]
+----
+http://myvserver:3184/
+----
+
+A virtual server with no default web module assigned serves HTML or
+JavaServer Pages ( JSP) content from its document root, which is usually
+domain-dir``/docroot``. To access this HTML or JSP content, point your
+browser to the URL for the virtual server, do not supply a context root,
+but specify the target file.
+
+For example:
+
+[source]
+----
+http://myvserver:3184/hellothere.jsp
+----
+
+[[gixku]][[GSADG00476]][[to-assign-a-virtual-server-to-an-application-or-module]]
+
+==== To Assign a Virtual Server to an Application or Module
+
+You can assign a virtual server to a deployed application or web module.
+
+[[GSADG1010]]
+
+Before You Begin
+
+The application or module must already be deployed. For more
+information, see the link:application-deployment-guide.html#GSDPG[{productName}
+Application Deployment Guide].
+
+1. In the Administration Console, open the HTTP Service component under
+the relevant configuration.
+2. Open the Virtual Servers component under the HTTP Service component.
+3. Select the virtual server to which you want to assign a default web
+module.
+4. Select the application or web module from the Default Web Module
+drop-down list.
++
+For more information, see link:#beaga[To Assign a Default Web Module to
+a Virtual Server].
+
+[[glavy]][[GSADG00477]][[to-set-jsessionidsso-cookie-attributes]]
+
+==== To Set `JSESSIONIDSSO` Cookie Attributes
+
+Use the `sso-cookie-http-only` and `sso-cookie-secure` virtual server
+attributes to set the `HttpOnly` and `Secure` attributes of any
+`JSESSIONIDSSO` cookies associated with web applications deployed to the
+virtual server.
+
+Use the link:reference-manual/set.html#GSRFM00226[`set`] subcommand to set the value of the
+`sso-cookie-http-only` and `sso-cookie-secure` virtual server
+attributes.
+
+The values supported for these attributes are as follows:
+
+`sso-cookie-http-only`::
+  A boolean value that specifies whether the `HttpOnly` attribute is
+  included in `JSESSIONIDSSO` cookies. When set to `true`, which is the
+  default, the `HttpOnly` attribute is included. When set to `false`,
+  the `HttpOnly` attribute is not included.
+`sso-cookie-secure`::
+  A string value that specifies whether the `Secure` attribute is
+  included in `JSESSIONIDSSO` cookies. Allowed values are as follows:
++
+  * `true` — The `Secure` attribute is included.
+  * `false` — The `Secure` attribute is not included.
+  * `dynamic` — The `Secure` attribute setting is inherited from the
+  first session participating in SSO. This is the default value.
+
+
diff --git a/docs/administration-guide/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png b/docs/administration-guide/src/main/asciidoc/img/eclipse_foundation_logo_tiny.png
similarity index 100%
rename from docs/administration-guide/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png
rename to docs/administration-guide/src/main/asciidoc/img/eclipse_foundation_logo_tiny.png
Binary files differ
diff --git a/docs/administration-guide/src/main/jbake/assets/img/rest-management.png b/docs/administration-guide/src/main/asciidoc/img/rest-management.png
similarity index 100%
rename from docs/administration-guide/src/main/jbake/assets/img/rest-management.png
rename to docs/administration-guide/src/main/asciidoc/img/rest-management.png
Binary files differ
diff --git a/docs/administration-guide/src/main/jbake/assets/img/rest-monitoring.png b/docs/administration-guide/src/main/asciidoc/img/rest-monitoring.png
similarity index 100%
rename from docs/administration-guide/src/main/jbake/assets/img/rest-monitoring.png
rename to docs/administration-guide/src/main/asciidoc/img/rest-monitoring.png
Binary files differ
diff --git a/docs/administration-guide/src/main/jbake/assets/img/websphere-mq.png b/docs/administration-guide/src/main/asciidoc/img/websphere-mq.png
similarity index 100%
rename from docs/administration-guide/src/main/jbake/assets/img/websphere-mq.png
rename to docs/administration-guide/src/main/asciidoc/img/websphere-mq.png
Binary files differ
diff --git a/docs/administration-guide/src/main/asciidoc/javamail.adoc b/docs/administration-guide/src/main/asciidoc/javamail.adoc
new file mode 100644
index 0000000..8472e01
--- /dev/null
+++ b/docs/administration-guide/src/main/asciidoc/javamail.adoc
@@ -0,0 +1,226 @@
+type=page
+status=published
+title=Administering the JavaMail Service
+next=jms.html
+prev=orb.html
+~~~~~~
+
+= Administering the JavaMail Service
+
+[[GSADG00019]][[ablkr]]
+
+
+[[administering-the-javamail-service]]
+== 16 Administering the JavaMail Service
+
+{productName} includes the JavaMail API along with JavaMail service
+providers that allow an application component to send email
+notifications over the Internet and to read email from IMAP and POP3
+mail servers.
+
+The following topics are addressed here:
+
+* link:#ggjsf[About JavaMail]
+* link:#giowr[Administering JavaMail Resources]
+
+Instructions for accomplishing the tasks in this chapter by using the
+Administration Console are contained in the Administration Console
+online help.
+
+[[ggjsf]][[GSADG00593]][[about-javamail]]
+
+=== About JavaMail
+
+The JavaMail API is a set of abstract APIs that model a mail system. The
+JavaMail API provides a platform-independent and protocol-independent
+framework to build mail and messaging applications and provide
+facilities for reading and sending electronic messages. Service
+providers implement particular protocols. Using the API you can add
+email capabilities to your applications. JavaMail provides access from
+Java applications to Internet Message Access Protocol (IMAP) and Simple
+Mail Transfer Protocol (SMTP) capable mail servers on your network or
+the Internet. The API does not provide mail server functionality; you
+must have access to a mail server to use JavaMail.
+
+The JavaMail API is implemented as an optional package in the Java
+platform and is also available as part of the Jakarta EE platform.
+
+To learn more about the JavaMail API, consult the
+http://www.oracle.com/technetwork/java/javamail/[JavaMail web site] .
+
+[[giowr]][[GSADG00594]][[administering-javamail-resources]]
+
+=== Administering JavaMail Resources
+
+When you create a mail session, the server-side components and
+applications are enabled to access JavaMail services with JNDI, using
+the session properties you assign for them. When creating a mail
+session, you can designate the mail hosts, the transport and store
+protocols, and the default mail user so that components that use
+JavaMail do not have to set these properties. Applications that are
+heavy email users benefit because {productName} creates a single
+session object and makes the session available to any component that
+needs it.
+
+JavaMail settings such as the following can be specified:
+
+* JNDI Name. The unique name for the mail session. Use the naming
+sub-context prefix mail/ for JavaMail resources. For example:
+`mail/MySession`
+* Mail Host. The host name of the default mail server. The connect
+methods of the store and transport objects use this value if a
+protocol-specific host property is not supplied. The name must be
+resolvable to an actual host name.
+* Default User. The default user name to provide when connecting to a
+mail server. The connect methods of the store and transport objects use
+this value if a protocol-specific username property is not supplied.
+* Default Return Address. The email address of the default user, in the
+form: username@host.domain.
+* Description. A descriptive statement for the component.
+* Session. Indicates whether or not mail session is enabled or disabled
+at this time
+
+The following topics are addressed here:
+
+* link:#giowd[To Create a JavaMail Resource]
+* link:#giowq[To List JavaMail Resources]
+* link:#giwjw[To Update a JavaMail Resource]
+* link:#gioxj[To Delete a JavaMail Resource]
+
+[[giowd]][[GSADG00482]][[to-create-a-javamail-resource]]
+
+==== To Create a JavaMail Resource
+
+Use the `create-javamail-resource` subcommand in remote mode to create a
+JavaMail session resource. The JNDI name for a JavaMail session resource
+customarily includes the mail/ naming subcontext, For example:
+`mail/MyMailSession.`
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Create a JavaMail resource by using the
+link:reference-manual/create-javamail-resource.html#GSRFM00035[`create-javamail-resource`] subcommand.
++
+Information about the properties for the subcommand is included in this
+help page.
+3. To apply your changes, restart {productName}.
++
+See link:domains.html#ginqj[To Restart a Domain].
+
+[[GSADG00267]][[gipfs]]
+Example 16-1 Creating a JavaMail Resource
+
+This example creates a JavaMail resource named `mail/MyMailSession`. The
+escape character (\) is used in the `--fromaddress` option to
+distinguish the dot (.) and at sign (@).
+
+[source]
+----
+asadmin> create-javamail-resource --mailhost localhost
+--mailuser sample --fromaddress sample\@sun\.com mail/MyMailSession
+Command create-javamail-resource executed successfully.
+----
+
+[[GSADG1014]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-javamail-resource` at the command line.
+
+[[giowq]][[GSADG00483]][[to-list-javamail-resources]]
+
+==== To List JavaMail Resources
+
+Use the `list-javamail-resources` subcommand in remote mode to list the
+existing JavaMail session resources.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the JavaMail resources by using the
+link:reference-manual/list-javamail-resources.html#GSRFM00172[`list-javamail-resources`] subcommand.
+
+[[GSADG00268]][[gipfe]]
+Example 16-2 Listing JavaMail Resources
+
+This example lists the JavaMail resources on `localhost`.
+
+[source]
+----
+asadmin> list-javamail-resources
+mail/MyMailSession
+Command list-javamail-resources executed successfuly.
+----
+
+[[GSADG1015]]
+
+See Also
+
+You can also view the full syntax and options of the subcommands by
+typing `asadmin help list-javamail-resources` at the command line.
+
+[[giwjw]][[GSADG00484]][[to-update-a-javamail-resource]]
+
+==== To Update a JavaMail Resource
+
+1. List the JavaMail resources by using the
+link:reference-manual/list-javamail-resources.html#GSRFM00172[`list-javamail-resources`] subcommand.
+2. Modify the values for the specified JavaMail source by using the
+link:reference-manual/set.html#GSRFM00226[`set`] subcommand.
++
+The resource is identified by its dotted name.
+
+[[GSADG00269]][[giwjb]]
+Example 16-3 Updating a JavaMail Resource
+
+This example changes `joeserver` to `joe`.
+
+[source]
+----
+asadmin> set server.resources.mail-resource.mail/
+MyMailSession.user=joeserver.resources.mail-resource.mail/
+MyMailSession.user=joe
+Command set executed successfully.
+----
+
+[[gioxj]][[GSADG00485]][[to-delete-a-javamail-resource]]
+
+==== To Delete a JavaMail Resource
+
+Use the `delete-javamail-resource` subcommands in remote mode to delete
+a JavaMail session resource.
+
+[[GSADG1016]]
+
+Before You Begin
+
+References to the specified resource must be removed before running the
+`delete-javamail-resource` subcommands.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the JavaMail resources by using the
+link:reference-manual/list-javamail-resources.html#GSRFM00172[`list-javamail-resources`] subcommands.
+3. Delete a JavaMail resource by using the
+link:reference-manual/delete-javamail-resource.html#GSRFM00087[`delete-javamail-resource`] subcommands.
+4. To apply your changes, restart {productName}.
++
+See link:domains.html#ginqj[To Restart a Domain].
+
+[[GSADG00270]][[gipcd]]
+Example 16-4 Deleting a JavaMail Resource
+
+This example deletes the JavaMail session resource named
+`mail/MyMailSession`.
+
+[source]
+----
+asadmin> delete-javamail-resource mail/MyMailSession
+Command delete-javamail-resource executed successfully.
+----
+
+[[GSADG1017]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-javamail-resource` at the command line.
+
+
diff --git a/docs/administration-guide/src/main/asciidoc/jdbc.adoc b/docs/administration-guide/src/main/asciidoc/jdbc.adoc
new file mode 100644
index 0000000..6052da0
--- /dev/null
+++ b/docs/administration-guide/src/main/asciidoc/jdbc.adoc
@@ -0,0 +1,1697 @@
+type=page
+status=published
+title=Administering Database Connectivity
+next=connectors.html
+prev=part-res-and-svcs-admin.html
+~~~~~~
+
+= Administering Database Connectivity
+
+[[GSADG00015]][[ablih]]
+
+
+[[administering-database-connectivity]]
+== 11 Administering Database Connectivity
+
+This chapter provides procedures for performing database connectivity
+tasks in the {productName} 7 environment by
+using the `asadmin` command-line utility.
+
+The following topics are addressed here:
+
+* link:#gipbp[About Database Connectivity]
+* link:#ggkon[Setting Up the Database]
+* link:#ggndx[Configuring Access to the Database]
+* link:#beamw[Configuration Specifics for JDBC Drivers]
+
+Instructions for accomplishing these tasks by using the Administration
+Console are contained in the Administration Console online help.
+
+[[gipbp]][[GSADG00576]][[about-database-connectivity]]
+
+=== About Database Connectivity
+
+A database management system (DBMS) provides facilities for storing,
+organizing, and retrieving data. The information in databases is often
+described as persistent data because it is saved on disk and exists
+after the application process ends. Most business applications store
+data in relational databases. Applications can access database
+information by using the Java Database Connectivity (JDBC) API.
+
+The key elements of database connectivity are the following:
+
+* Database. The repository where data is stored for an enterprise. Java
+EE applications access relational databases through the JDBC API. For
+administration procedures, see link:#ggkon[Setting Up the Database].
+* JDBC Connection Pool. A JDBC connection pool is a group of reusable
+connections for a particular database. For administration procedures,
+see link:#gharo[Administering JDBC Connection Pools].
+* JDBC Resource. A JDBC resource (data source) provides applications
+with a means of connecting to a database. To create a JDBC resource,
+specify the connection pool with which it is associated. Multiple JDBC
+resources can specify a single connection pool. A JDBC resource is
+identified by its Java Naming and Directory Interface (JNDI) name. For
+administration procedures, see link:#ggndp[Administering JDBC
+Resources].
+* JDBC Driver. A database driver is a software component that enables a
+Java application to interact with a database connectivity API . Each
+database requires its own driver. For administration procedures, see
+link:#ghatb[Integrating the JDBC Driver].
+
+At runtime, the following sequence occurs when an application connects
+to a database:
+
+1. The application gets the JDBC resource associated with the database
+by making a call through the JNDI API.
++
+Using the JNDI name of the resource, the naming and directory service
+locates the JDBC resource. Each JDBC resource specifies a connection
+pool.
+
+2. Using the JDBC resource, the application gets a database connection.
++
+{productName} retrieves a physical connection from the connection
+pool that corresponds to the database. The pool defines connection
+attributes such as the database name (URL), user name, and password.
+
+3. After the database connection is established, the application can
+read, modify, and add data to the database.
++
+The application accesses the database by making calls to the JDBC API.
+The JDBC driver translates the application's JDBC calls into the
+protocol of the database server.
+
+4. When the application is finished accessing the database, the
+application closes the connection and returns the connection to the
+connection pool.
+
+[[ggkon]][[GSADG00577]][[setting-up-the-database]]
+
+=== Setting Up the Database
+
+Most applications use relational databases to store, organize, and
+retrieve data. Applications access relational databases through the Java
+Database Connectivity (JDBC) API.
+
+The following topics are addressed here:
+
+* link:#gharl[To Install the Database and Database Driver]
+* link:#ggndz[To Start the Database]
+* link:#ggnbw[To Stop the Database]
+* link:#ghmbq[Apache Derby Database Utility Scripts]
+
+[[gharl]][[GSADG00416]][[to-install-the-database-and-database-driver]]
+
+==== To Install the Database and Database Driver
+
+1. Install a supported database product.
++
+To see the current list of database products supported by {productName}, refer to the link:release-notes.html#GSRLN[{productName} Release Notes].
+
+2. Install a supported JDBC driver for the database product.
++
+For a list of drivers supported by {productName}, see
+link:#beamw[Configuration Specifics for JDBC Drivers].
+
+3. Make the JDBC driver JAR file accessible to the domain
+administration server (DAS).
++
+See link:#ghatb[Integrating the JDBC Driver].
+
+4. Create the database.
++
+The application provider usually delivers scripts for creating and
+populating the database.
+
+[[GSADG949]]
+
+Next Steps
+
+You are now ready to create a connection pool for the database, and a
+JDBC resource that points to the connection pool. See link:#ggnfv[To
+Create a JDBC Connection Pool] and link:#ggnda[To Create a JDBC
+Resource]. The final step is to integrate the JDBC driver into an
+administrative domain as described in link:#ghatb[Integrating the JDBC
+Driver].
+
+[[ggndz]][[GSADG00417]][[to-start-the-database]]
+
+==== To Start the Database
+
+{productName} includes an implementation of the Apache Derby
+database, however, you can use any JDBC-compliant database. The database
+is not started automatically when you start {productName}, so if you
+have applications that require a database, you need to start Apache
+Derby database manually by using the local `start-database` subcommand.
+
+Start the database by using the link:reference-manual/start-database.html#GSRFM00234[`start-database`]
+subcommand.
+
+When the database server starts, or a client connects to it
+successfully, the following files are created at the location that is
+specified by the `--dbhome` option:
+
+* The `derby.log` file contains the database server process log along
+with its standard output and standard error information.
+* The database files contain your schema (for example, database tables).
+
+[[GSADG00212]][[ggooc]]
+Example 11-1 Starting a Database
+
+This example starts the Apache Derby database on the host host1 and port
+5001. [source]
+----
+asadmin> start-database --dbhost host1 --dbport 5001 --terse=true
+Starting database in the background.
+Log redirected to /opt/SUNWappserver/databases/javadb.log.
+Command start-database executed successfully.
+----
+
+[[GSADG950]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help start-database` at the command line.
+
+[[ggnbw]][[GSADG00418]][[to-stop-the-database]]
+
+==== To Stop the Database
+
+Use the local `stop-database` subcommand to stop the Apache Derby
+database on a specified port. A single host can have multiple database
+server processes running on different ports.
+
+1. If necessary, notify users that the database is being stopped.
+2. Stop the database by using the link:reference-manual/stop-database.html#GSRFM00239[`stop-database`]
+subcommand.
+
+[[GSADG00213]][[ggorc]]
+Example 11-2 Stopping a Database
+
+This example stops the Apache Derby database on port 5001 of
+`localhost`.
+
+[source]
+----
+asadmin> stop-database --dbhost=localhost --dbport=5001
+onnection obtained for host: localhost, port number 5001.
+Apache Derby Network Server - 10.2.2.1 - (538595) shutdown
+at 2008-10-17 23:34:2 7.218 GMT
+Command stop-database executed successfully.
+----
+
+[[GSADG951]]
+
+Troubleshooting
+
+For a laptop that roams between networks, you might have trouble
+shutting down the database. If you start the Apache Derby database and
+then change your IP address, you will not be able to stop the Apache
+Derby database unless you add a specific `--dbhost` argument. For
+example, if you run `asadmin start-database` `dbhost` `= 0.0.0.0`, and
+then disconnect Ethernet and switch to wifi, you should run a command
+similar to the following to stop the database:
+
+`asadmin stop-database` `dbhost` `localhost`
+
+[[GSADG952]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help stop-database` at the command line.
+
+[[ghmbq]][[GSADG00744]][[apache-derby-database-utility-scripts]]
+
+==== Apache Derby Database Utility Scripts
+
+The Apache Derby database configuration that is available for use with
+{productName} includes scripts that can help you use the Apache Derby
+database. The following scripts are available in the
+as-install``/javadb/bin`` directory:
+
+`startNetworkServer,startNetworkServer.bat`::
+  Script to start the network server
+`stopNetworkServer,stopNetworkServer.bat`::
+  Script to stop the network server
+`ij,ij.bat`::
+  Interactive JDBC scripting tool
+`dblook,dblook.bat`::
+  Script to view all or part of the DDL for a database
+`sysinfo, sysinfo.bat`::
+  Script to display versioning information about the Apache Derby
+  database environment
+`NetworkServerControl,NetworkServerControl.bat`::
+  Script to execute commands on the `NetworkServerControl` API
+
+[[ghmbj]][[GSADG00419]][[to-configure-your-environment-to-run-the-apache-derby-database-utility-scripts]]
+
+===== To Configure Your Environment to Run the Apache Derby Database Utility Scripts
+
+1. Ensure that the `JAVA_HOME` environment variable specifies the
+directory where the JDK is installed.
+2. Set the `JAVADB_HOME` environment variable to point to the
+as-install``/javadb`` directory.
+
+[[GSADG953]]
+
+See Also
+
+For more information about these utilities, see the following
+documentation:
+
+* http://db.apache.org/derby/docs/10.13/tools/[Apache Derby Tools and
+Utilities Guide]
+* http://db.apache.org/derby/docs/10.13/adminguide/[Derby Server and
+Administration Guide]
+
+[[ggndx]][[GSADG00578]][[configuring-access-to-the-database]]
+
+=== Configuring Access to the Database
+
+After establishing the database, you are ready to set up access for
+{productName} applications. The high-level steps include creating a
+JDBC connection pool, creating a JDBC resource for the connection pool,
+and integrating a JDBC driver into an administrative domain.
+
+Instructions for performing these steps are contained in the following
+sections:
+
+* link:#gharo[Administering JDBC Connection Pools]
+* link:#ggndp[Administering JDBC Resources]
+* link:#gkudf[Enabling the `jdbc/__default` Resource in a Clustered
+Environment]
+* link:#ghatb[Integrating the JDBC Driver]
+
+[[gharo]][[GSADG00745]][[administering-jdbc-connection-pools]]
+
+==== Administering JDBC Connection Pools
+
+A JDBC connection pool is a group of reusable connections for a
+particular database. Because creating each new physical connection is
+time consuming, {productName} maintains a pool of available
+connections. When an application requests a connection, it obtains one
+from the pool. When an application closes a connection, the connection
+is returned to the pool. JDBC connection pools can be globally
+accessible or be scoped to an enterprise application, web module, EJB
+module, connector module or application client module, as described in
+"link:application-deployment-guide/deploying-applications.html#GSDPG00075[Application-Scoped Resources]" in {productName} Application Deployment Guide.
+
+A JDBC resource is created by specifying the connection pool with which
+the resource is associated. Multiple JDBC resources can specify a single
+connection pool. The properties of connection pools can vary with
+different database vendors. Some common properties are the database name
+(URL), the user name, and the password.
+
+The following tasks and information are used to administer JDBC
+connection pools:
+
+* link:#ggnfv[To Create a JDBC Connection Pool]
+* link:#ggnby[To List JDBC Connection Pools]
+* link:#ggnwn[To Contact (Ping) a Connection Pool]
+* link:#gjiqp[To Reset (Flush) a Connection Pool]
+* link:#giosk[To Update a JDBC Connection Pool]
+* link:#ggngb[To Delete a JDBC Connection Pool]
+* link:#gktdi[Configuring Specific JDBC Connection Pool Features]
+
+[[ggnfv]][[GSADG00420]][[to-create-a-jdbc-connection-pool]]
+
+===== To Create a JDBC Connection Pool
+
+Use the `create-jdbc-connection-pool` subcommand in remote mode to
+register a new JDBC connection pool with the specified JDBC connection
+pool name. A JDBC connection pool or a connector connection pool can be
+created with authentication. You can either use a subcommand option to
+specify user, password, or other connection information using the
+`asadmin` utility, or specify the connection information in the XML
+descriptor file.
+
+One connection pool is needed for each database, possibly more depending
+on the application. When you are building the connection pool, certain
+data specific to the JDBC driver and the database vendor is required.
+You can find some of the following specifics in
+link:#beamw[Configuration Specifics for JDBC Drivers]:
+
+* Database vendor name
+* Resource type, such as `javax.sql.DataSource` (local transactions
+only) `javax.sql.XADataSource` (global transactions)
+* Data source class name
+* Required properties, such as the database name (URL), user name, and
+password
+
+Creating a JDBC connection pool is a dynamic event and does not require
+server restart. However, there are some parameters that do require
+server restart. See link:overview.html#ghciy[Configuration Changes That
+Require Restart].
+
+[[GSADG954]]
+
+Before You Begin
+
+Before creating the connection pool, you must first install and
+integrate the database and its associated JDBC driver. For instructions,
+see link:#ggkon[Setting Up the Database].
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Create the JDBC connection pool by using the
+link:reference-manual/create-jdbc-connection-pool.html#GSRFM00036[`create-jdbc-connection-pool`] subcommand.
+3. If needed, restart the server.
++
+Some parameters require server restart. See
+link:overview.html#ghciy[Configuration Changes That Require Restart].
+
+[[GSADG00214]][[ggrgh]]
+Example 11-3 Creating a JDBC Connection Pool
+
+This example creates a JDBC connection pool named `sample_derby_pool` on
+`localhost`.
+
+[source]
+----
+asadmin> create-jdbc-connection-pool
+--datasourceclassname org.apache.derby.jdbc.ClientDataSource
+--restype javax.sql.XADataSource
+--property portNumber=1527:password=APP:user=APP:serverName=
+localhost:databaseName=sun-appserv-samples:connectionAttribut
+es=\;create\\=true sample_derby_pool
+Command create-jdbc-connection-pool executed successfully.
+----
+
+[[GSADG955]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-jdbc-connection-pool` at the command line.
+
+[[ggnby]][[GSADG00421]][[to-list-jdbc-connection-pools]]
+
+===== To List JDBC Connection Pools
+
+Use the `list-jdbc-connection-pools` subcommand in remote mode to list
+all existing JDBC connection pools.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the JDBC connection pools by using the
+link:reference-manual/list-jdbc-connection-pools.html#GSRFM00173[`list-jdbc-connection-pools`] subcommand.
+
+[[GSADG00215]][[ggpcf]]
+Example 11-4 Listing JDBC Connection Pools
+
+This example lists the JDBC connection pools that are on `localhost`.
+
+[source]
+----
+asadmin> list-jdbc-connection-pools
+sample_derby_pool2
+poolA
+__TimerPool
+DerbyPool
+sample_derby_pool
+Command list-jdbc-connection-pools executed successfully.
+----
+
+[[GSADG956]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-jdbc-connection-pools` at the command line.
+
+[[ggnwn]][[GSADG00422]][[to-contact-ping-a-connection-pool]]
+
+===== To Contact (Ping) a Connection Pool
+
+Use the `ping-connection-pool` subcommand in remote mode to test if a
+connection pool is usable. For example, if you create a new JDBC
+connection pool for an application that is expected to be deployed
+later, you can test the JDBC pool with this subcommand before the
+application is deployed. Running a ping will force the creation of the
+pool if it hasn't already been created.
+
+[[GSADG957]]
+
+Before You Begin
+
+Before you can contact a connection pool, the connection pool must be
+created with authentication, and the server or database must be running.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Ping a connection pool by using the
+link:reference-manual/ping-connection-pool.html#GSRFM00214[`ping-connection-pool`] subcommand.
+
+[[GSADG00216]][[ggpcs]]
+Example 11-5 Contacting a Connection Pool
+
+This example tests to see if the `DerbyPool` connection pool is usable.
+
+[source]
+----
+asadmin> ping-connection-pool DerbyPool
+Command ping-connection-pool executed successfully
+----
+
+[[GSADG958]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help ping-connection-pool` at the command line.
+
+You can also specify that a JDBC connection pool is automatically tested
+when created or reconfigured by setting its `--ping` option to `true`
+(the default is `false`). See link:#ggnfv[To Create a JDBC Connection
+Pool] or link:#giosk[To Update a JDBC Connection Pool].
+
+[[gjiqp]][[GSADG00423]][[to-reset-flush-a-connection-pool]]
+
+===== To Reset (Flush) a Connection Pool
+
+Use the `flush-connection-pool` in remote mode to reinitialize all
+connections established in the specified connection pool without the
+need for reconfiguring the pool. Connection pool reconfiguration can
+result in application redeployment, which is a time-consuming operation.
+The JDBC connection pool or connector connection pool is reset to its
+initial state. Any existing live connections are destroyed, which means
+that the transactions associated with these connections are lost and
+must be retried. The subcommand then recreates the initial connections
+for the pool, and restores the pool to its steady pool size.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Reset a connection pool by using
+theolink:GSRFM00135[`flush-connection-pool`] subcommand.
+
+[[GSADG00217]][[gjirk]]
+Example 11-6 Resetting (Flushing) a Connection Pool
+
+This example resets the JDBC connection pool named `__TimerPool` to its
+steady pool size.
+
+[source]
+----
+asadmin> flush-connection-pool __TimerPool
+Command flush-connection-pool executed successfully.
+----
+
+[[GSADG959]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help flush-connection-pool` at the command line.
+
+[[giosk]][[GSADG00424]][[to-update-a-jdbc-connection-pool]]
+
+===== To Update a JDBC Connection Pool
+
+You can change all of the settings for an existing pool except its name.
+Use the `get` and `set` subcommands to view and change the values of the
+JDBC connection pool properties.
+
+1. List the JDBC connection pools by using the
+link:reference-manual/list-jdbc-connection-pools.html#GSRFM00173[`list-jdbc-connection-pools`] subcommand.
+2. View the attributes of the JDBC connection pool by using the get
+subcommand.
++
+For example:
++
+[source]
+----
+asadmin get resources.jdbc-connection-pool.DerbyPool.property
+----
+3. Set the attribute of the JDBC connection pool by using the set
+subcommand.
++
+For example:
++
+[source]
+----
+asadmin set resources.jdbc-connection-pool.DerbyPool.steady-pool-size=9
+----
+4. If needed, restart the server.
++
+Some parameters require server restart. See
+link:overview.html#ghciy[Configuration Changes That Require Restart].
+
+[[GSADG960]]
+
+See Also
+
+For information about how to tune a connection pool, see the
+link:performance-tuning-guide.html#GSPTG[{productName} Performance Tuning
+Guide].
+
+[[ggngb]][[GSADG00425]][[to-delete-a-jdbc-connection-pool]]
+
+===== To Delete a JDBC Connection Pool
+
+Use the `delete-jdbc-connection-pool` subcommand in remote mode to
+delete an existing JDBC connection pool. Deleting a JDBC connection pool
+is a dynamic event and does not require server restart.
+
+[[GSADG961]]
+
+Before You Begin
+
+Before deleting a JDBC connection pool, all associations to the resource
+must be removed.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the JDBC connection pools by using the
+link:reference-manual/list-jdbc-connection-pools.html#GSRFM00173[`list-jdbc-connection-pools`] subcommand.
+3. If necessary, notify users that the JDBC connection pool is being
+deleted.
+4. Delete the connection pool by using the
+link:reference-manual/delete-jdbc-connection-pool.html#GSRFM00088[`delete-jdbc-connection-pool`] subcommand.
+
+[[GSADG00218]][[ggpis]]
+Example 11-7 Deleting a JDBC Connection Pool
+
+This example deletes the JDBC connection pool named `DerbyPool`.
+
+[source]
+----
+asadmin> delete-jdbc-connection-pool jdbc/DerbyPool
+Command delete-jdbc-connection-pool executed successfully.
+----
+
+[[GSADG962]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-jdbc-connection-pool` at the command line.
+
+[[gktdi]][[GSADG00670]][[configuring-specific-jdbc-connection-pool-features]]
+
+===== Configuring Specific JDBC Connection Pool Features
+
+In {productName}, JDBC Connection Pools support a variety of features
+to simplify administration, monitoring and performance tuning. The
+following topics address several of these features:
+
+* link:#gktcv[Transparent Pool Reconfiguration]
+* link:#gkter[Using an Initialization Statement]
+* link:#gktcc[Setting a Statement Timeout]
+* link:#gktec[Statement Leak Detection and Leaked Statement Reclamation]
+* link:#gktej[Statement Caching]
+* link:#gktbu[Statement Tracing]
+
+[[gktcv]][[GSADG00085]][[transparent-pool-reconfiguration]]
+
+Transparent Pool Reconfiguration
+
+When the properties or attributes of a JDBC connection pool are changed,
+the connection pool is destroyed and re-created. Normally, applications
+using the connection pool must be redeployed as a consequence. This
+restriction can be avoided by enabling transparent JDBC connection pool
+reconfiguration. When this feature is enabled, applications do not need
+to be redeployed. Instead, requests for new connections are blocked
+until the reconfiguration operation completes. Connection requests from
+any in-flight transactions are served using the old pool configuration
+so as to complete the transaction. Then, connections are created using
+the pool's new configuration, and any blocked connection requests are
+served with connections from the re-created pool.
+
+To enable transparent JDBC connection pool reconfiguration, set the
+`dynamic-reconfiguration-wait-timeout-in-seconds` property of the JDBC
+connection pool to a positive, nonzero value in one of the following
+ways:
+
+* Add it as a property in the Edit JDBC Connection Pool Properties page
+in the Administration Console. For more information, click the Help
+button in the Administration Console.
+* Specify it using the `--property` option in the
+`create-jdbc-connection-pool` subcommand. For more information, see
+link:reference-manual/create-jdbc-connection-pool.html#GSRFM00036[`create-jdbc-connection-pool`(1)].
+* Set it using the `set` subcommand. For example:
++
+[source]
+----
+asadmin set resources.jdbc-connection-pool.pool-name.property.dynamic-reconfiguration-wait-timeout-in-seconds=15
+----
+
+This property specifies the time in seconds to wait for in-use
+connections to close and in-flight transactions to complete. Any
+connections in use or transaction in flight past this time must be
+retried.
+
+[[gkter]][[GSADG00086]][[using-an-initialization-statement]]
+
+Using an Initialization Statement
+
+You can specify a statement that executes each time a physical
+connection to the database is created (not reused) from a JDBC
+connection pool. This is useful for setting request or session specific
+properties and is suited for homogeneous requests in a single
+application. Set the Init SQL attribute of the JDBC connection pool to
+the SQL string to be executed in one of the following ways:
+
+* Enter an Init SQL value in the Edit Connection Pool Advanced
+Attributes page in the Administration Console. For more information,
+click the Help button in the Administration Console.
+* Specify the `--initsql` option in the
+`asadmin create-jdbc-connection-pool` command. For more information, see
+link:reference-manual/create-jdbc-connection-pool.html#GSRFM00036[`create-jdbc-connection-pool`(1)].
+* Specify the `init-sql` option in the `asadmin set` command. For
+example:
++
+[source]
+----
+asadmin set domain1.resources.jdbc-connection-pool.DerbyPool.init-sql="sql-string"
+----
+
+[[gktcc]][[GSADG00087]][[setting-a-statement-timeout]]
+
+Setting a Statement Timeout
+
+An abnormally long running JDBC query executed by an application may
+leave it in a hanging state unless a timeout is explicitly set on the
+statement. Setting a statement timeout guarantees that all queries
+automatically time out if not completed within the specified period.
+When statements are created, the `queryTimeout` is set according to the
+statement timeout setting. This works only when the underlying JDBC
+driver supports `queryTimeout` for `Statement`, `PreparedStatement`,
+`CallableStatement`, and `ResultSet`.
+
+You can specify a statement timeout in the following ways:
+
+* Enter a Statement Timeout value in the Edit Connection Pool Advanced
+Attributes page in the Administration Console. For more information,
+click the Help button in the Administration Console.
+* Specify the `--statementtimeout` option in the
+`asadmin create-jdbc-connection-pool` command. For more information, see
+link:reference-manual/create-jdbc-connection-pool.html#GSRFM00036[`create-jdbc-connection-pool`(1)].
+
+[[gktec]][[GSADG00088]][[statement-leak-detection-and-leaked-statement-reclamation]]
+
+Statement Leak Detection and Leaked Statement Reclamation
+
+If statements are not closed by an application after use, it is possible
+for the application to run out of cursors. Enabling statement leak
+detection causes statements to be considered as leaked if they are not
+closed within a specified period. Additionally, leaked statements can
+reclaimed automatically.
+
+To enable statement leak detection, set Statement Leak Timeout In
+Seconds for the JDBC connection pool to a positive, nonzero value in one
+of the following ways:
+
+* Specify the `--statementleaktimeout` option in the
+`create-jdbc-connection-pool` subcommand. For more information, see
+link:reference-manual/create-jdbc-connection-pool.html#GSRFM00036[`create-jdbc-connection-pool`(1)].
+* Specify the `statement-leak-timeout-in-seconds` option in the `set`
+subcommand. For example:
++
+[source]
+----
+asadmin set resources.jdbc-connection-pool.pool-name.statement-leak-timeout-in-seconds=300
+----
+
+When selecting a value for Statement Leak Timeout In Seconds, make sure
+that:
+
+* It is less than the Connection Leak Timeout; otherwise, the connection
+could be closed before the statement leak is recognized.
+* It is greater than the Statement Timeout; otherwise, a long running
+query could be mistaken as a statement leak.
+
+After enabling statement leak detection, enable leaked statement
+reclamation by setting Reclaim Leaked Statements for the JDBC connection
+pool to a `true` value in one of the following ways:
+
+* Specify the `--statementleakreclaim=true` option in the
+`create-jdbc-connection-pool` subcommand. For more information, see
+link:reference-manual/create-jdbc-connection-pool.html#GSRFM00036[`create-jdbc-connection-pool`(1)].
+* Specify the `statement-leak-reclaim` option in the `set` subcommand.
+For example:
++
+[source]
+----
+asadmin set resources.jdbc-connection-pool.pool-name.statement-leak-reclaim=true
+----
+
+[[gktej]][[GSADG00089]][[statement-caching]]
+
+Statement Caching
+
+Statement caching stores statements, prepared statements, and callable
+statements that are executed repeatedly by applications in a cache,
+thereby improving performance. Instead of the statement being prepared
+each time, the cache is searched for a match. The overhead of parsing
+and creating new statements each time is eliminated.
+
+Statement caching is usually a feature of the JDBC driver. The {productName} provides caching for drivers that do not support caching. To
+enable this feature, set the Statement Cache Size for the JDBC
+connection pool in one of the following ways:
+
+* Enter a Statement Cache Size value in the Edit Connection Pool
+Advanced Attributes page in the Administration Console. For more
+information, click the Help button in the Administration Console.
+* Specify the `--statementcachesize` option in the
+`asadmin create-jdbc-connection-pool` command. For more information, see
+link:reference-manual/create-jdbc-connection-pool.html#GSRFM00036[`create-jdbc-connection-pool`(1)].
+* Specify the `statement-cache-size` option in the `asadmin set`
+command. For example:
++
+[source]
+----
+asadmin set domain1.resources.jdbc-connection-pool.DerbyPool.statement-cache-size=10
+----
+
+By default, this attribute is set to zero and the statement caching is
+turned off. To enable statement caching, you can set any positive
+nonzero value. The built-in cache eviction strategy is LRU-based (Least
+Recently Used). When a connection pool is flushed, the connections in
+the statement cache are recreated.
+
+[[gktbu]][[GSADG00090]][[statement-tracing]]
+
+Statement Tracing
+
+You can trace the SQL statements executed by applications that use a
+JDBC connection pool. Set the SQL Trace Listeners attribute to a
+comma-separated list of trace listener implementation classes in one of
+the following ways:
+
+* Enter an SQL Trace Listeners value in the Edit Connection Pool
+Advanced Attributes page in the Administration Console. For more
+information, click the Help button in the Administration Console.
+* Specify the `--sqltracelisteners` option in the
+`asadmin create-jdbc-connection-pool` command. For more information, see
+link:reference-manual/create-jdbc-connection-pool.html#GSRFM00036[`create-jdbc-connection-pool`(1)].
+* Specify the `sql-trace-listeners` option in the `asadmin set` command.
+For example:
++
+[source]
+----
+asadmin set domain1.resources.jdbc-connection-pool.DerbyPool.sql-trace-listeners=listeners
+----
+
+The {productName} provides a public interface,
+org.glassfish.api.jdbc.SQLTraceListener , that implements a means of
+recording `SQLTraceRecord` objects. To make custom implementations of
+this interface available to the {productName}, place the
+implementation classes in as-install``/lib``.
+
+The {productName} provides an SQL tracing logger to log the SQL
+operations in the form of `SQLTraceRecord` objects in the `server.log`
+file. The module name under which the SQL operation is logged is
+`jakarta.enterprise.resource.sqltrace`. SQL traces are logged as FINE
+messages along with the module name to enable easy filtering of the SQL
+logs. A sample SQL trace record looks like this:
+
+[source]
+----
+[#|2009-11-27T15:46:52.202+0530|FINE|glassfish7.0|jakarta.enterprise.resource.sqltrace.com.sun.gjc.util
+|_ThreadID=29;_ThreadName=Thread-1;ClassName=com.sun.gjc.util.SQLTraceLogger;MethodName=sqlTrace;
+|ThreadID=77 | ThreadName=p: thread-pool-1; w: 6 | TimeStamp=1259317012202
+| ClassName=com.sun.gjc.spi.jdbc40.PreparedStatementWrapper40 | MethodName=executeUpdate
+| arg[0]=insert into table1(colName) values(100) | arg[1]=columnNames | |#]
+----
+
+This trace shows that an `executeUpdate(String sql, String columnNames)`
+operation is being done.
+
+When SQL statement tracing is enabled and JDBC connection pool
+monitoring is enabled, {productName} maintains a tracing cache of
+recent queries and their frequency of use. The following JDBC connection
+pool properties can be configured to control this cache and the
+monitoring statistics available from it:
+
+`time-to-keep-queries-in-minutes`::
+  Specifies how long in minutes to keep a query in the tracing cache,
+  tracking its frequency of use. The default value is 5 minutes.
+`number-of-top-queries-to-report`::
+  Specifies how many of the most used queries, in frequency order, are
+  listed the monitoring report. The default value is 10 queries.
+
+Set these parameters in one of the following ways:
+
+* Add them as properties in the Edit JDBC Connection Pool Properties
+page in the Administration Console. For more information, click the Help
+button in the Administration Console.
+* Specify them using the `--property` option in the
+`create-jdbc-connection-pool` subcommand. For more information, see
+link:reference-manual/create-jdbc-connection-pool.html#GSRFM00036[`create-jdbc-connection-pool`(1)].
+* Set them using the `set` subcommand. For example:
++
+[source]
+----
+asadmin set resources.jdbc-connection-pool.pool-name.property.time-to-keep-queries-in-minutes=10
+----
+
+[[ggndp]][[GSADG00746]][[administering-jdbc-resources]]
+
+==== Administering JDBC Resources
+
+A JDBC resource, also known as a data source, provides an application
+with a means of connecting to a database. Typically, you create a JDBC
+resource for each database that is accessed by the applications deployed
+in a domain. Multiple JDBC resources can be specified for a database.
+JDBC resources can be globally accessible or be scoped to an enterprise
+application, web module, EJB module, connector module or application
+client module, as described in "link:application-deployment-guide/deploying-applications.html#GSDPG00075[Application-Scoped
+Resources]" in {productName} Application
+Deployment Guide.
+
+A JDBC resource is created by specifying the connection pool with which
+the resource will be associated . Use a unique Java Naming and Directory
+Interface (JNDI) name to identify the resource. For example, the JNDI
+name for the resource of a payroll database might be
+`java:comp/env/jdbc/payrolldb`.
+
+The Jakarta EE standard specifies that certain default resources be made
+available to applications, and defines specific JNDI names for these
+default resources. {productName} makes these names available through
+the use of logical JNDI names, which map Jakarta EE standard JNDI names to
+specific {productName} resources. For JDBC resources, the Jakarta EE
+standard name `java:comp/DefaultDataSource` is mapped to the
+`jdbc/__default` resource.
+
+The following tasks and information are used to administer JDBC
+resources:
+
+* link:#ggnda[To Create a JDBC Resource]
+* link:#ggnhl[To List JDBC Resources]
+* link:#giwjv[To Update a JDBC Resource]
+* link:#ggnhz[To Delete a JDBC Resource]
+
+[[ggnda]][[GSADG00426]][[to-create-a-jdbc-resource]]
+
+===== To Create a JDBC Resource
+
+Use the `create-jdbc-resource` subcommand in remote mode to create a
+JDBC resource. Creating a JDBC resource is a dynamic event and does not
+require server restart.
+
+Because all JNDI names are in the `java:comp/env` subcontext, when
+specifying the JNDI name of a JDBC resource in the Administration
+Console, use only the `jdbc/`name format. For example, a payroll
+database might be specified as `jdbc/payrolldb`.
+
+[[GSADG963]]
+
+Before You Begin
+
+Before creating a JDBC resource, you must first create a JDBC connection
+pool. For instructions, see link:#ggnfv[To Create a JDBC Connection
+Pool].
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Create a JDBC resource by using the
+link:reference-manual/create-jdbc-resource.html#GSRFM00037[`create-jdbc-resource`] subcommand.
++
+Information about properties for the subcommand is included in this help
+page.
+3. If necessary, notify users that the new resource has been created.
+
+[[GSADG00219]][[ggplj]]
+Example 11-8 Creating a JDBC Resource
+
+This example creates a JDBC resource named `DerbyPool`.
+
+[source]
+----
+asadmin> create-jdbc-resource --connectionpoolid DerbyPool jdbc/DerbyPool
+Command create-jdbc-resource executed successfully.
+----
+
+[[GSADG964]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-jdbc-resource` at the command line.
+
+[[ggnhl]][[GSADG00427]][[to-list-jdbc-resources]]
+
+===== To List JDBC Resources
+
+Use the `list-jdbc-resources` subcommand in remote mode to list the
+existing JDBC resources.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List JDBC resources by using the
+link:reference-manual/list-jdbc-resources.html#GSRFM00174[`list-jdbc-resources`] subcommand.
+
+[[GSADG00220]][[ggpgi]]
+Example 11-9 Listing JDBC Resources
+
+This example lists JDBC resources for `localhost`.
+
+[source]
+----
+asadmin> list-jdbc-resources
+jdbc/__TimerPool
+jdbc/DerbyPool
+jdbc/__default
+jdbc1
+Command list-jdbc-resources executed successfully.
+----
+
+[[GSADG965]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-jdbc-resources` at the command line.
+
+[[giwjv]][[GSADG00428]][[to-update-a-jdbc-resource]]
+
+===== To Update a JDBC Resource
+
+You can enable or disable a JDBC resource by using the `set` subcommand.
+The JDBC resource is identified by its dotted name.
+
+1. List JDBC resources by using the
+link:reference-manual/list-jdbc-resources.html#GSRFM00174[`list-jdbc-resources`] subcommand.
+2. Modify the values for the specified JDBC resource by using the
+link:reference-manual/set.html#GSRFM00226[`set`] subcommand.
++
+For example:
+
+[[GSADG00221]][[gjkrz]]
+Example 11-10 Updating a JDBC Resource
+
+This example changes the `res1` enabled setting to false.
+
+[source]
+----
+asadmin>set resources.jdbc-resource.res1.enabled=false
+----
+
+[[ggnhz]][[GSADG00429]][[to-delete-a-jdbc-resource]]
+
+===== To Delete a JDBC Resource
+
+Use the `delete-jdbc-resource` subcommand in remote mode to delete an
+existing JDBC resource. Deleting a JDBC resource is a dynamic event and
+does not require server restart.
+
+[[GSADG966]]
+
+Before You Begin
+
+Before deleting a JDBC resource, all associations with this resource
+must be removed.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List JDBC resources by using the
+link:reference-manual/list-jdbc-resources.html#GSRFM00174[`list-jdbc-resources`] subcommand.
+3. If necessary, notify users that the JDBC resource is being deleted.
+4. Delete a JDBC resource by using the
+link:reference-manual/delete-jdbc-resource.html#GSRFM00089[`delete-jdbc-resource`] subcommand.
+
+[[GSADG00222]][[ggpga]]
+Example 11-11 Deleting a JDBC Resource
+
+This example deletes a JDBC resource named `DerbyPool`.
+
+[source]
+----
+asadmin> delete-jdbc-resource jdbc/DerbyPool
+Command delete-jdbc-resource executed successfully.
+----
+
+[[GSADG967]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-jdbc-resource` at the command line.
+
+[[gkudf]][[GSADG00747]][[enabling-the-jdbc__default-resource-in-a-clustered-environment]]
+
+==== Enabling the `jdbc/__default` Resource in a Clustered Environment
+
+{productName} 7 includes a preconfigured JDBC resource with the
+JNDI name `jdbc/__default`. This `jdbc/__default` resource is not
+enabled by default, so you need to explicitly enable it if you want to
+use it in a cluster.
+
+[[gkubj]][[GSADG00430]][[to-enable-the-jdbc__default-resource-for-a-clustered-environment]]
+
+===== To Enable the `jdbc/__default` Resource for a Clustered Environment
+
+Instructions for creating JDBC resources in general are provided in
+link:#ggnda[To Create a JDBC Resource]. Use the following procedure to
+enable the preconfigured `jdbc/__default` resource for a clustered
+{productName} environment.
+
+1. Create the `jdbc/__default` resource reference for the cluster.
++
+[source]
+----
+asadmin create-resource-ref --target cluster-name jdbc/__default
+----
+2. Enable the resource on the DAS that manages the cluster.
++
+[source]
+----
+asadmin set resources.jdbc-connection-pool.DerbyPool.property.serverName=DAS-machine-name
+----
+This step is only required if the cluster includes remote instances.
+3. Restart the DAS and the target cluster(s).
++
+[source]
+----
+asadmin stop-cluster cluster-name
+asadmin stop-domain domain-name
+asadmin start-domain domain-name
+asadmin start-cluster cluster-name
+----
+
+[[ghatb]][[GSADG00748]][[integrating-the-jdbc-driver]]
+
+==== Integrating the JDBC Driver
+
+To use JDBC features, you must choose a JDBC driver to work with the
+{productName}, then you must set up the driver. This section covers
+these topics:
+
+* link:#gkpdj[Supported Database Drivers]
+* link:#gkpci[Making the JDBC Driver JAR Files Accessible]
+* link:#gkpfj[Automatic Detection of Installed Drivers]
+
+[[gkpdj]][[GSADG00671]][[supported-database-drivers]]
+
+===== Supported Database Drivers
+
+Supported JDBC drivers are those that have been fully tested by Oracle.
+For a list of the JDBC drivers currently supported by the {productName}, see the link:release-notes.html#GSRLN[{productName} Release
+Notes]. For configurations of supported and other drivers, see
+link:#beamw[Configuration Specifics for JDBC Drivers].
+
+
+[NOTE]
+====
+Because the drivers and databases supported by the {productName} are
+constantly being updated, and because database vendors continue to
+upgrade their products, always check with Oracle technical support for
+the latest database support information.
+====
+
+
+[[gkpci]][[GSADG00672]][[making-the-jdbc-driver-jar-files-accessible]]
+
+===== Making the JDBC Driver JAR Files Accessible
+
+To integrate the JDBC driver into a {productName} domain, copy the
+JAR files into the domain-dir``/lib`` directory, then restart the server.
+This makes classes accessible to all applications or modules deployed on
+servers that share the same configuration. For more information about
+{productName} class loaders, see "link:application-development-guide/class-loaders.html#GSDVG00003[Class Loaders]" in
+{productName} Application Development Guide.
+
+If you are using an Oracle database with EclipseLink extensions, copy
+the JAR files into the domain-dir``/lib/ext`` directory, then restart the
+server. For details, see "link:application-development-guide/jpa.html#GSDVG00390[Oracle Database
+Enhancements]" in {productName} Application
+Development Guide.
+
+[[gkpfj]][[GSADG00673]][[automatic-detection-of-installed-drivers]]
+
+===== Automatic Detection of Installed Drivers
+
+The Administration Console detects installed JDBC Drivers automatically
+when you create a JDBC connection pool. To create a JDBC connection pool
+using the Administration Console, open the Resources component, open the
+JDBC component, select Connection Pools, and click on the New button.
+This displays the New JDBC Connection Pool page.
+
+Based on the Resource Type and Database Vendor you select on the New
+JDBC Connection Pool page, data source or driver implementation class
+names are listed in the Datasource Classname or Driver Classname field
+when you click on the Next button. When you choose a specific
+implementation class name on the next page, additional properties
+relevant to the installed JDBC driver are displayed in the Additional
+Properties section.
+
+[[beamw]][[GSADG00579]][[configuration-specifics-for-jdbc-drivers]]
+
+=== Configuration Specifics for JDBC Drivers
+
+{productName} is designed to support connectivity to any database
+management system by using a corresponding JDBC driver. Configuration
+information is provided for these JDBC drivers:
+
+* link:#beanc[IBM DB2 Database Type 2 Driver]
+* link:#glhim[IBM DB2 Database Type 4 Driver]
+* link:#beamx[Apache Derby DB/Derby Type 4 Driver]
+* link:#gbsor[MySQL Server Database Type 4 Driver]
+* link:#beani[Oracle 10 Database Driver]
+* link:#beanh[Oracle 11 Database Driver]
+* link:#gjksj[PostgreSQL Type 4 Driver]
+* link:#beamy[DataDirect Type 4 Driver for IBM DB2 Database]
+* link:#beanj[DataDirect Type 4 Driver for IBM Informix]
+* link:#beana[DataDirect Type 4 Driver for Microsoft SQL Server
+Database]
+* link:#gjksd[DataDirect Type 4 Driver for MySQL Server Database]
+* link:#beamz[DataDirect Type 4 Driver for Oracle 11 Database]
+* link:#beanb[DataDirect Type 4 Driver for Sybase Database]
+* link:#beane[Inet Oraxo Driver for Oracle Database]
+* link:#beanf[Inet Merlia Driver for Microsoft SQL Server Database]
+* link:#beang[Inet Sybelux Driver for Sybase Database]
+* link:#beand[JConnect Type 4 Driver for Sybase ASE 12.5 Database]
+
+[[beanc]][[GSADG00749]][[ibm-db2-database-type-2-driver]]
+
+==== IBM DB2 Database Type 2 Driver
+
+The JAR files for the DB2 driver are `db2jcc.jar`,
+`db2jcc_license_cu.jar`, and `db2java.zip`. Set your environment
+variables . For example:
+
+[source]
+----
+LD_LIBRARY_PATH=/usr/db2user/sqllib/lib:${Jakarta EE.home}/lib
+DB2DIR=/opt/IBM/db2/V8.2
+DB2INSTANCE=db2user
+INSTHOME=/usr/db2user
+VWSPATH=/usr/db2user/sqllib
+THREADS_FLAG=native
+----
+
+Configure the connection pool using the following settings:
+
+* Name: Use this name when you configure the JDBC resource later.
+* Resource Type: Specify the appropriate value.
+* Database Vendor: DB2
+* DataSource Classname: `com.ibm.db2.jcc.DB2SimpleDataSource`
+* Properties:
+
+** `databaseName` - Set as appropriate.
+
+** `user` - Set as appropriate.
+
+** `password` - Set as appropriate.
+
+** `driverType` - Set to `2`.
+
+** `deferPrepares` - Set to `false`.
+
+[[glhim]][[GSADG00750]][[ibm-db2-database-type-4-driver]]
+
+==== IBM DB2 Database Type 4 Driver
+
+The JAR file for the DB2 driver is `db2jcc.jar`. Configure the
+connection pool using the following settings:
+
+* Name: Use this name when you configure the JDBC resource later.
+* Resource Type: Specify the appropriate value.
+* Database Vendor: DB2
+* DataSource Classname: `com.ibm.db2.jcc.DB2SimpleDataSource`
+* Properties:
+
+** `databaseName` - Set as appropriate.
+
+** `user` - Set as appropriate.
+
+** `password` - Set as appropriate.
+
+** `driverType` - Set to `4`.
+
+[[beamx]][[GSADG00751]][[apache-derby-dbderby-type-4-driver]]
+
+==== Apache Derby DB/Derby Type 4 Driver
+
+The Apache Derby DB/Derby JDBC driver is included with {productName}
+by default, so you do not need to integrate this JDBC driver with
+{productName}.
+
+The JAR file for the Apache Derby DB driver is `derbyclient.jar`.
+Configure the connection pool using the following settings:
+
+* Name: Use this name when you configure the JDBC resource later.
+* Resource Type: Specify the appropriate value.
+* Database Vendor: Apache Derby
+* DataSource Classname: Specify one of the following:
++
+[source]
+----
+org.apache.derby.jdbc.ClientDataSource40
+org.apache.derby.jdbc.ClientXADataSource40
+----
+* Properties:
+
+** `serverName` - Specify the host name or IP address of the database
+server.
+
+** `portNumber` - Specify the port number of the database server if it
+is different from the default.
+
+** `databaseName` - Specify the name of the database.
+
+** `user` - Specify the database user.
++
+This is only necessary if the Apache Derby database is configured to use
+authentication. The Apache Derby database does not use authentication by
+default. When the user is provided, it is the name of the schema where
+the tables reside.
+
+** `password` - Specify the database password.
++
+This is only necessary if the Apache Derby database is configured to use
+authentication.
+
+[[gbsor]][[GSADG00752]][[mysql-server-database-type-4-driver]]
+
+==== MySQL Server Database Type 4 Driver
+
+The JAR file for the MySQL driver is
+`mysql-connector-java-5.1.14-bin.jar`. Configure the connection pool
+using the following settings:
+
+* Name: Use this name when you configure the JDBC resource later.
+* Resource Type: Specify the appropriate value.
+* Database Vendor: MySql
+* DataSource Classname:
++
+[source]
+----
+com.mysql.jdbc.jdbc2.optional.MysqlDataSource
+com.mysql.jdbc.jdbc2.optional.MysqlXADataSource
+----
+* Properties:
+
+** `serverName` - Specify the host name or IP address of the database
+server.
+
+** `portNumber` - Specify the port number of the database server.
+
+** `databaseName` - Set as appropriate.
+
+** `user` - Set as appropriate.
+
+** `password` - Set as appropriate.
+
+[[beani]][[GSADG00753]][[oracle-10-database-driver]]
+
+==== Oracle 10 Database Driver
+
+The JAR file for the Oracle 10 database driver is `ojdbc14.jar`. Make
+sure that the shared library is available through `LD_LIBRARY_PATH` and
+that the `ORACLE_HOME` property is set.
+
+To make the Oracle driver behave in a Jakarta EE-compliant manner, you must
+define the following JVM property:
+
+[source]
+----
+-Doracle.jdbc.J2EE13Compliant=true
+----
+
+Configure the connection pool using the following settings:
+
+* Name: Use this name when you configure the JDBC resource later.
+* Resource Type: Specify the appropriate value.
+* Database Vendor: Oracle
+* DataSource Classname: Specify one of the following:
++
+[source]
+----
+oracle.jdbc.pool.OracleDataSource
+oracle.jdbc.xa.client.OracleXADataSource
+----
+* Properties:
+
+** `user` - Set as appropriate.
+
+** `password` - Set as appropriate.
+
+[[beanh]][[GSADG00754]][[oracle-11-database-driver]]
+
+==== Oracle 11 Database Driver
+
+The JAR file for the Oracle 11 database driver is `ojdbc6.jar`.
+
+To make the Oracle driver behave in a Jakarta EE-compliant manner, you must
+define the following JVM property:
+
+[source]
+----
+-Doracle.jdbc.J2EE13Compliant=true
+----
+
+Configure the connection pool using the following settings:
+
+* Name: Use this name when you configure the JDBC resource later.
+* Resource Type: Specify the appropriate value.
+* Database Vendor: Oracle
+* DataSource Classname: Specify one of the following:
++
+[source]
+----
+oracle.jdbc.pool.OracleDataSource
+oracle.jdbc.xa.client.OracleXADataSource
+----
+* Properties:
+
+** `user` - Set as appropriate.
+
+** `password` - Set as appropriate.
++
+
+[NOTE]
+====
+For this driver, the `XAResource.recover` method repeatedly returns the
+same set of in-doubt Xids regardless of the input flag. According to the
+XA specifications, the Transaction Manager initially calls this method
+with `TMSTARTSCAN` and then with `TMNOFLAGS` repeatedly until no Xids
+are returned. The `XAResource.commit` method also has some issues.
+
+To disable this {productName} workaround, the
+`oracle-xa-recovery-workaround` property value must be set to `false`.
+
+Additionally, in order for the transaction manager to recover
+transactions, the JDBC connection pool's database user must be given
+certain Oracle permissions:
+
+** SELECT permission on DBA_PENDING_TRANSACTIONS, PENDING_TRANS$,
+DBA_2PC_PENDING and DBA_2PC_NEIGHBORS.
+** EXECUTE permissions on DBMS_XA and DBMS_SYSTEM.
+====
+
+
+[[gjksj]][[GSADG00755]][[postgresql-type-4-driver]]
+
+==== PostgreSQL Type 4 Driver
+
+The JAR file for the PostgreSQL driver is
+`postgresql-9.0-801.jdbc4.jar`. Configure the connection pool using the
+following settings:
+
+* Name: Use this name when you configure the JDBC resource later.
+* Resource Type: Specify the appropriate value.
+* Database Vendor: Postgresql
+* DataSource Classname: `org.postgresql.ds.PGSimpleDataSource`
+* Properties:
+
+** `serverName` - Specify the host name or IP address of the database
+server.
+
+** `portNumber` - Specify the port number of the database server.
+
+** `databaseName` - Set as appropriate.
+
+** `user` - Set as appropriate.
+
+** `password` - Set as appropriate.
+
+[[beamy]][[GSADG00756]][[datadirect-type-4-driver-for-ibm-db2-database]]
+
+==== DataDirect Type 4 Driver for IBM DB2 Database
+
+The JAR file for DataDirect driver is `db2.jar`. Configure the
+connection pool using the following settings:
+
+* Name: Use this name when you configure the JDBC resource later.
+* Resource Type: Specify the appropriate value.
+* Database Vendor: DataDirect-DB2
+* DataSource Classname: `com.ddtek.jdbcx.db2.DB2DataSource`
+* Properties:
+
+** `serverName` - Specify the host name or IP address of the database
+server.
+
+** `portNumber` - Specify the port number of the database server.
+
+** `databaseName` - Set as appropriate.
+
+** `user` - Set as appropriate.
+
+** `password` - Set as appropriate.
+
+[[beanj]][[GSADG00757]][[datadirect-type-4-driver-for-ibm-informix]]
+
+==== DataDirect Type 4 Driver for IBM Informix
+
+Configure the connection pool using the following settings:
+
+* Name: Use this name when you configure the JDBC resource later.
+* Resource Type: Specify the appropriate value.
+* Database Vendor: DataDirect-Informix
+* DataSource Classname: Specify one of the following:
++
+[source]
+----
+com.informix.jdbcx.IfxDataSource
+com.informix.jdbcx.IfxXADataSource
+----
+DataDirect DataSource Classname:
+`com.ddtek.jdbcx.informix.InformixDataSourcee`
+* Properties:
+
+** `serverName` - Specify the Informix database server name.
+
+** `portNumber` - Specify the port number of the database server.
+
+** `databaseName` - Set as appropriate. This is optional.
+
+** `user` - Set as appropriate.
+
+** `password` - Set as appropriate.
+
+** `IfxIFXHost` - Specify the host name or IP address of the database
+server.
+
+[[beana]][[GSADG00758]][[datadirect-type-4-driver-for-microsoft-sql-server-database]]
+
+==== DataDirect Type 4 Driver for Microsoft SQL Server Database
+
+The JAR file for the DataDirect driver is `sqlserver.jar`. Configure the
+connection pool using the following settings:
+
+* Name: Use this name when you configure the JDBC resource later.
+* Resource Type: Specify the appropriate value.
+* Database Vendor: DataDirect-Microsoft SQL Server
+* DataSource Classname: `com.ddtek.jdbcx.sqlserver.SQLServerDataSource`
+* Properties:
+
+** `serverName` - Specify the host name or IP address and the port of
+the database server.
+
+** `portNumber` - Specify the port number of the database server.
+
+** `user` - Set as appropriate.
+
+** `password` - Set as appropriate.
+
+** `selectMethod` - Set to `cursor`.
+
+[[gjksd]][[GSADG00759]][[datadirect-type-4-driver-for-mysql-server-database]]
+
+==== DataDirect Type 4 Driver for MySQL Server Database
+
+The JAR file for the DataDirect driver is `mysql.jar`. Configure the
+connection pool using the following settings:
+
+* Name: Use this name when you configure the JDBC resource later.
+* Resource Type: Specify the appropriate value.
+* Database Vendor: DataDirect-MySQL
+* DataSource: `com.ddtek.jdbcx.mysql.MySQLDataSource`
+* Properties:
+
+** `serverName` - Specify the host name or IP address and the port of
+the database server.
+
+** `portNumber` - Specify the port number of the database server.
+
+** `user` - Set as appropriate.
+
+** `password` - Set as appropriate.
+
+** `selectMethod` - Set to `cursor`.
+
+[[beamz]][[GSADG00760]][[datadirect-type-4-driver-for-oracle-11-database]]
+
+==== DataDirect Type 4 Driver for Oracle 11 Database
+
+The JAR file for the DataDirect driver is `oracle.jar`.
+
+To make the Oracle driver behave in a Jakarta EE-compliant manner, you must
+define the following JVM property:
+
+[source]
+----
+-Doracle.jdbc.J2EE13Compliant=true
+----
+
+Configure the connection pool using the following settings:
+
+* Name: Use this name when you configure the JDBC resource later.
+* Resource Type: Specify the appropriate value.
+* Database Vendor: DataDirect-Oracle
+* DataSource Classname: `com.ddtek.jdbcx.oracle.OracleDataSource`
+* Properties:
+
+** `serverName` - Specify the host name or IP address of the database
+server.
+
+** `portNumber` - Specify the port number of the database server.
+
+** `user` - Set as appropriate.
+
+** `password` - Set as appropriate.
+
+[[beanb]][[GSADG00761]][[datadirect-type-4-driver-for-sybase-database]]
+
+==== DataDirect Type 4 Driver for Sybase Database
+
+The JAR file for the DataDirect driver is `sybase.jar`. Configure the
+connection pool using the following settings:
+
+* Name: Use this name when you configure the JDBC resource later.
+* Resource Type: Specify the appropriate value.
+* Database Vendor: DataDirect-Sybase
+* DataSource Classname: `com.ddtek.jdbcx.sybase.SybaseDataSource`
+* Properties:
+
+** `serverName` - Specify the host name or IP address of the database
+server.
+
+** `portNumber` - Specify the port number of the database server.
+
+** `databaseName` - Set as appropriate. This is optional.
+
+** `user` - Set as appropriate.
+
+** `password` - Set as appropriate.
+
+
+[NOTE]
+====
+In some situations, using this driver can cause exceptions to be thrown
+because the driver creates a stored procedure for every parameterized
+PreparedStatement by default. If this situation arises, add the property
+`PrepareMethod`, setting its value to `direct`.
+====
+
+
+[[beane]][[GSADG00762]][[inet-oraxo-driver-for-oracle-database]]
+
+==== Inet Oraxo Driver for Oracle Database
+
+The JAR file for the Inet Oracle driver is `Oranxo.jar`. Configure the
+connection pool using the following settings:
+
+* Name: Use this name when you configure the JDBC resource later.
+* Resource Type: Specify the appropriate value.
+* Database Vendor: Oracle
+* DataSource Classname: `com.inet.ora.OraDataSource`
+* Properties:
+
+** `serverName` - Specify the host name or IP address of the database
+server.
+
+** `portNumber` - Specify the port number of the database server.
+
+** `user` - Specify the database user.
+
+** `password` - Specify the database password.
+
+** `serviceName` - Specify the URL of the database. The syntax is as follows:
++
+[source]
+----
+jdbc:inetora:server:port:dbname
+----
+For example:
++
+[source]
+----
+jdbc:inetora:localhost:1521:payrolldb
+----
+In this example,`localhost` is the name of the host running the Oracle
+server, `1521` is the Oracle server's port number, and `payrolldb` is
+the SID of the database. For more information about the syntax of the
+database URL, see the Oracle documentation.
+
+** `streamstolob` - If the size of BLOB or CLOB data types exceeds 4 KB
+and this driver is used for CMP, this property must be set to `true`.
+
+[[beanf]][[GSADG00763]][[inet-merlia-driver-for-microsoft-sql-server-database]]
+
+==== Inet Merlia Driver for Microsoft SQL Server Database
+
+The JAR file for the Inet Microsoft SQL Server driver is `Merlia.jar`.
+Configure the connection pool using the following settings:
+
+* Name: Use this name when you configure the JDBC resource later.
+* Resource Type: Specify the appropriate value.
+* Database Vendor: MicrosoftSqlServer
+* DataSource Classname: `com.inet.tds.TdsDataSource`
+* Properties:
+
+** `serverName` - Specify the host name or IP address and the port of
+the database server.
+
+** `portNumber` - Specify the port number of the database server.
+
+** `user` - Set as appropriate.
+
+** `password` - Set as appropriate.
+
+[[beang]][[GSADG00764]][[inet-sybelux-driver-for-sybase-database]]
+
+==== Inet Sybelux Driver for Sybase Database
+
+The JAR file for the Inet Sybase driver is `Sybelux.jar`. Configure the
+connection pool using the following settings:
+
+* Name: Use this name when you configure the JDBC resource later.
+* Resource Type: Specify the appropriate value.
+* Database Vendor: Sybase
+* DataSource Classname: `com.inet.syb.SybDataSource`
+* Properties:
+
+** `serverName` - Specify the host name or IP address of the database
+server.
+
+** `portNumber` - Specify the port number of the database server.
+
+** `databaseName` - Set as appropriate. Do not specify the complete URL,
+only the database name.
+
+** `user` - Set as appropriate.
+
+** `password` - Set as appropriate.
+
+[[beand]][[GSADG00765]][[jconnect-type-4-driver-for-sybase-ase-12.5-database]]
+
+==== JConnect Type 4 Driver for Sybase ASE 12.5 Database
+
+The JAR file for the Sybase driver is `jconn4.jar`. Configure the
+connection pool using the following settings:
+
+* Name: Use this name when you configure the JDBC resource later.
+* Resource Type: Specify the appropriate value.
+* Database Vendor: Sybase
+* DataSource Classname: Specify one of the following:
++
+[source]
+----
+com.sybase.jdbc4.jdbc.SybDataSource
+com.sybase.jdbc4.jdbc.SybXADataSource
+----
+* Properties:
+
+** `serverName` - Specify the host name or IP address of the database
+server.
+
+** `portNumber` - Specify the port number of the database server.
+
+** `databaseName` - Set as appropriate. Do not specify the complete URL,
+only the database name.
+
+** `user` - Set as appropriate.
+
+** `password` - Set as appropriate.
+
+** `BE_AS_JDBC_COMPLIANT_AS_POSSIBLE` - Set to `true`.
+
+** `FAKE_METADATA` - Set to `true`.
+
+
diff --git a/docs/administration-guide/src/main/asciidoc/jms.adoc b/docs/administration-guide/src/main/asciidoc/jms.adoc
new file mode 100644
index 0000000..e7e5954
--- /dev/null
+++ b/docs/administration-guide/src/main/asciidoc/jms.adoc
@@ -0,0 +1,2655 @@
+type=page
+status=published
+title=Administering the Java Message Service (JMS)
+next=jndi.html
+prev=javamail.html
+~~~~~~
+
+= Administering the Java Message Service (JMS)
+
+[[GSADG00020]][[abljw]]
+
+
+[[administering-the-java-message-service-jms]]
+== 17 Administering the Java Message Service (JMS)
+
+The Java Message Service (JMS) API is a messaging standard that allows
+Jakarta EE applications and components, including message-driven beans
+(MDBs), to create, send, receive, and read messages. It enables
+distributed communication that is loosely coupled, reliable, and
+asynchronous.
+
+{productName} supports JMS messaging by communicating with a JMS
+provider through a Jakarta EE Connector resource adapter. By default,
+{productName} provides JMS messaging through its built-in jmsra
+resource adapter communicating with Open Message Queue, which is
+included with {productName}. This combination, known as the JMS
+Service, is tightly integrated with {productName}, providing a rich
+set of `asadmin` subcommands and Administration Console pages to
+simplify JMS messaging administration tasks.
+
+{productName} also supports the Generic Resource Adapter for JMS
+(GenericJMSRA) for use as a resource adapter to connect to other JMS
+providers. The last section in this chapter, link:#gbtvg[Using the
+Generic Resource Adapter for JMS to Integrate Supported External JMS
+Providers], describes the GenericJMSRA and provides instructions for
+using it to make other supported JMS providers available to {productName}.
+
+The following topics are addressed here:
+
+* link:#gipit[About the JMS Service]
+* link:#beaof[Updating the JMS Service Configuration]
+* link:#gipbg[Administering JMS Hosts]
+* link:#ablkb[Administering JMS Connection Factories and Destinations]
+* link:#ablkj[Administering JMS Physical Destinations]
+* link:#gkxgk[Special Situations When Using the JMS Service]
+* link:#gipnh[Troubleshooting the JMS Service]
+* link:#gbtvg[Using the Generic Resource Adapter for JMS to Integrate
+Supported External JMS Providers]
+
+Instructions for accomplishing the task in this chapter by using the
+Administration Console are contained in the Administration Console
+online help.
+
+[[gipit]][[GSADG00595]][[about-the-jms-service]]
+
+=== About the JMS Service
+
+To support JMS messaging, the JMS Service provides the following
+administrative objects:
+
+JMS Service Configuration::
+  The JMS service configuration is part of the overall configuration for
+  a GlassFish standalone instance or cluster. It specifies how the JMS
+  Service is to create and maintain connections with JMS Hosts.
+JMS Hosts::
+  JMS hosts are the message servers that host destinations, store
+  messages, and interact with applications to send and receive messages
+  across connections. In Message Queue, JMS hosts are called brokers. +
+  The JMS service supports these types of JMS hosts:
+
+  * Embedded type, in which the JMS host runs in the same JVM as the
+    GlassFish instance; its configuration and lifecycle are managed by the JMS service.
+  * Local type, in which the JMS host runs separately on the same host
+    as the GlassFish instance; its configuration and lifecycle are managed by the JMS service.
+  * Remote type, in which the JMS host represents a Message Queue broker
+    or broker cluster that is external to the JMS service; its operation
+    is managed using Message Queue administrative tools.
+
++
+For more information about JMS host types, see link:#giplw[About JMS Host Types].
+JMS Connection Factory Resources::
+  JMS connection factory resources house the information that
+  applications use to connect to a JMS provider. For each JMS connection
+  factory, the JMS service automatically maintains a GlassFish connector
+  resource and a GlassFish connector connection pool in order to support
+  connection pooling and failover.
+JMS Destination Resources::
+  JMS destination resources house the information that applications use
+  to specify the target destination of messages they produce and the
+  source destination of messages they consume. For each JMS destination
+  resource, the JMS service automatically maintains a GlassFish
+  administered object.
+JMS Physical Destinations::
+  JMS physical destinations provide a means to create and manage JMS
+  destinations administratively instead of having them created
+  dynamically when needed by an application. While dynamic creation of
+  destinations is often sufficient during application development,
+  administratively created physical destinations are more suitable for
+  production environments.
+
+[[gavqn]][[GSADG00773]][[jms-service-high-availability]]
+
+==== JMS Service High Availability
+
+Just as {productName} supports clusters of instances to provide high
+availability, Message Queue supports clusters of brokers to provide
+service availability or service and data availability, depending on the
+type of broker cluster, as described in "link:../openmq/mq-tech-over/broker-clusters.html#GMTOV00028[Broker
+Clusters]" in Open Message Queue Technical Overview.
+
+The JMS service takes advantage of this Message Queue capability and
+automatically creates and manages a Message Queue broker cluster when a
+GlassFish cluster's configuration specifies Embedded or Local type JMS
+hosts. Additionally, both GlassFish clusters and standalone instances
+can use Message Queue broker clusters as Remote type JMS hosts.
+
+For information about how the JMS service supports GlassFish clusters
+and Message Queue broker clusters, see "link:ha-administration-guide/jms.html#GSHAG00012[Configuring
+Java Message Service High Availability]" in {productName} High Availability Administration Guide.
+
+[[beaof]][[GSADG00596]][[updating-the-jms-service-configuration]]
+
+=== Updating the JMS Service Configuration
+
+Because the JMS service configuration is part of the overall
+configuration for a standalone instance or cluster, it is created when
+the standalone instance or cluster is created. You can then update the
+JMS service configuration by using the Java Message Service page for the
+configuration in the Administration Console, or by using a `set`
+subcommand of the following form:
+
+[source]
+----
+set configs.config.config-name.jms-service.attribute-name=attribute-value
+----
+
+The attributes you can set are:
+
+`type`::
+  The JMS host type the service is to use. Available choices are
+  `EMBEDDED`, `LOCAL` and `REMOTE`. See link:#giplw[About JMS Host
+  Types] for more information.
+`init-timeout-in-seconds`::
+  The number of seconds {productName} waits for the JMS service to
+  start before aborting the startup.
+`start-args`::
+  A list of arguments the JMS service passes to Embedded and Local type
+  JMS hosts on startup. Permissible arguments are the options supported
+  by the Message Queue `imqbrokerd` command, as described in
+  "link:../openmq/mq-admin-guide/command-line-reference.html#GMADG00280[Broker Utility]" in Open Message Queue
+  Administration Guide.
+`default-jms-host`::
+  The name of the default JMS host.
+`reconnect-enabled`::
+  When set to `true`, the JMS service attempts to reconnect to a JMS
+  host (or one of the JMS hosts in the AddressList) when a connection is
+  lost.
+`reconnect-attempts`::
+  The number of attempts to connect (or reconnect) for each JMS host in
+  the AddressList before the JMS service tries the next address in the
+  list. A value of -1 indicates that the number of reconnect attempts is
+  unlimited (the JMS service attempts to connect to the first address
+  until it succeeds).
+`reconnect-interval-in-seconds`::
+  The number of seconds between reconnect attempts. This interval
+  applies for attempts on each JMS host in the AddressList and for
+  successive addresses in the list. If it is too short, this time
+  interval does not give a JMS host time to recover. If it is too long,
+  the reconnect might represent an unacceptable delay.
+`addresslist-behavior`::
+  The order of connection attempts. Available choices are:
++
+  `random`;;
+    Select a JMS host from the AddressList randomly. If there are many
+    clients attempting a connection using the same connection factory,
+    specify `random` to prevent them from all being connected to the
+    same JMS host.
+  `priority`;;
+    Always try to connect to the first JMS host in the AddressList and
+    use another one only if the first one is not available.
+`addresslist-iterations`::
+  The number of times the JMS service iterates through the AddressList
+  in an effort to establish (or reestablish) a connection. A value of -1
+  indicates that the number of attempts is unlimited.
+`mq-scheme`::
+`mq-service`::
+  The Message Queue address scheme name and connection service name to
+  use for the AddressList if a non-default scheme or service is to be
+  used. See "link:../openmq/mq-admin-guide/administered-object-attributes.html#GMADG00622[Connection Handling]" in Open Message
+  Queue Administration Guide for syntax information.
+
+
+[NOTE]
+====
+After making changes to the JMS service configuration, {productName}
+instances that use the configuration must be restarted in order for the
+changes to be propagated.
+====
+
+
+[[gkxgf]][[GSADG00774]][[setting-message-queue-broker-properties-in-the-jms-service-configuration]]
+
+==== Setting Message Queue Broker Properties in the JMS Service Configuration
+
+You can specify any Message Queue broker property in the JMS service
+configuration by adding it by name to the Additional Properties table on
+the Java Message Service page for the configuration in the
+Administration Console, or by using a `set` subcommand of the following
+form:
+
+[source]
+----
+set configs.config.config-name.jms-service.property.broker-property-name=value
+----
+
+If the broker property name includes dots, preface the dots with two
+backslashes (`\\`); for example, to set the `imq.system.max_count`
+property, specify `imq\\.system\\.max_count` in the `set` subcommand.
+
+
+[NOTE]
+====
+You can also set broker properties in the JMS host. If you set the same
+broker property in both the JMS service configuration and the JMS host,
+the value specified in the JMS host is used.
+====
+
+
+[[gipbg]][[GSADG00597]][[administering-jms-hosts]]
+
+=== Administering JMS Hosts
+
+A JMS host represents a Message Queue broker. JMS contains a JMS hosts
+list (the `AddressList` property) that contains all the JMS hosts that
+are used by {productName}. The JMS hosts list is populated with the
+hosts and ports of the specified Message Queue brokers and is updated
+whenever a JMS host configuration changes. When you create JMS resources
+or deploy message driven beans, the resources or beans inherit the JMS
+hosts list.
+
+The following topics are addressed here:
+
+* link:#giplw[About JMS Host Types]
+* link:#gktfb[Configuring Embedded and Local JMS Hosts]
+* link:#gipbh[To Create a JMS Host]
+* link:#gipbz[To List JMS Hosts]
+* link:#givno[To Update a JMS Host]
+* link:#gipbv[To Delete a JMS Host]
+
+For information about administering JMS hosts that are servicing
+GlassFish clusters, see "link:ha-administration-guide/jms.html#GSHAG00312[Configuring GlassFish Clusters
+to Use Message Queue Broker Clusters]" in {productName} High Availability Administration Guide.
+
+[[giplw]][[GSADG00775]][[about-jms-host-types]]
+
+==== About JMS Host Types
+
+The JMS service uses Message Queue (MQ) brokers as JMS hosts,
+integrating them in three ways:
+
+Embedded Type::
+  When the JMS service configuration's `type` attribute is `EMBEDDED`,
+  the MQ broker is co-located in the same JVM as the {productName}
+  instance it services. The JMS service starts it in-process and manages
+  its configuration and lifecycle. +
+  For this type, the JMS service uses lazy initialization to start the
+  broker when the first JMS operation is requested instead of
+  immediately when the GlassFish instance is started. If necessary, you
+  can force startup of the broker by using the
+  link:reference-manual/jms-ping.html#GSRFM00144[`jms-ping`] command. +
+  Additionally, if the GlassFish instance is a standalone instance (not
+  a clustered instance), JMS operations use a Message Queue feature
+  called direct mode to bypass the networking stack, leading to
+  performance optimization.
+Local Type::
+  When the JMS service configuration's `type` attribute is `LOCAL`, the
+  JMS service starts the MQ broker specified in the configuration as the
+  default JMS host in a separate process on the same host as the
+  {productName} instance. The JMS service manages its configuration
+  and lifecycle. +
+  For this type, the JMS service starts the broker immediately when the
+  GlassFish instance is started. +
+  The JMS service provides the Message Queue broker an additional port
+  to start the RMI registry. This port number is equal to the broker's
+  JMS port plus 100. For example, if the JMS port number is 37676, then
+  the additional port's number will be 37776. Additionally, the
+  `start-args` property of the JMS service configuration can be used to
+  specify Message Queue broker startup options.
+Remote Type::
+  When the JMS service configuration's `type` attribute is `REMOTE`, the
+  JMS service uses the information defined by the default JMS host to
+  communicate with an MQ broker or broker cluster that has been
+  configured and started using Message Queue tools, as described in the
+  link:../openmq/mq-admin-guide.html#GMADG[Open Message Queue Administration Guide]. Ongoing
+  administration and tuning of the broker or broker cluster are also
+  performed using Message Queue tools.
+
+[[gktfb]][[GSADG00776]][[configuring-embedded-and-local-jms-hosts]]
+
+==== Configuring Embedded and Local JMS Hosts
+
+Because the JMS service, not Message Queue, manages Embedded and Local
+JMS hosts automatically, you should avoid using Message Queue utilities
+to configure them. Instead, specify broker properties in the JMS service
+configuration or in the JMS host.
+
+Should the need to use Message Queue utilities arise, you must use the
+`-varhome` option when running certain Message Queue utilities to
+specify the `IMQ_VARHOME` location of the Embedded or Local JMS host.
+This location depends on which GlassFish instance the JMS host is
+servicing:
+
+* For `server`, the Domain Administration Server (DAS), the
+`IMQ_VARHOME` location is:
++
+[source]
+----
+domain-root-dir/domain-dir/imq
+----
+* For any other GlassFish instance, the `IMQ_VARHOME` location is:
++
+[source]
+----
+as-install/nodes/node-name/instance-name/imq
+----
+
+For example, the broker log file for an Embedded or Local JMS host
+servicing the DAS is available at
+domain-root-dir``/``domain-dir``/imq/instances/imqbroker/log/log.txt``, and
+the broker log file for an Embedded or Local JMS host servicing any
+other GlassFish instance is available at
+as-install``/nodes/``node-name``/``instance-name`/imq/instances/``mq-instance-name``/log/log.txt``.
+
+
+[NOTE]
+====
+When using Message Queue utilities on the Windows platform, you must
+explicitly use the Windows executable (`.exe`) versions of the
+utilities, even when running command shells such as Cygwin. For example,
+instead of running `imqcmd`, you must run `imqcmd.exe`.
+====
+
+
+[[gipbh]][[GSADG00486]][[to-create-a-jms-host]]
+
+==== To Create a JMS Host
+
+The default JMS service configuration includes a JMS host,
+`default_JMS_host`. For most situations, this host is sufficient, so
+replacing it or creating additional JMS hosts is not often necessary and
+is a task for advanced users. Use the `create-jms-host` subcommand in
+remote `asadmin` mode to create an additional JMS host.
+
+1. Ensure that the server is running.
++
+Remote `asadmin` subcommands require a running server.
+2. Create the JMS host by using the link:reference-manual/create-jms-host.html#GSRFM00039[`create-jms-host`]
+subcommand:
++
+[source]
+----
+asadmin> create-jms-host --mqhost hostName --mqport portNumber
+--mquser adminUser --mqpassword adminPassword --target glassfishTarget
+--property mqBrokerPropList --force trueFalse jms-host-name
+----
+`--mqhost`::
+  The host name of the Message Queue broker.
+`--mqport`::
+  The port number of the Message Queue broker.
+`--mquser`::
+  The user name of the administrative user of the Message Queue broker.
+`--mqpassword`::
+  The password of the administrative user of the Message Queue broker.
+`--target`::
+  The {productName} object for which the JMS host is being created.
+  For details, see link:reference-manual/create-jms-host.html#GSRFM00039[`create-jms-host`(1)].
+`--property`::
+  A list of one or more Message Queue broker properties to configure the
+  broker. The list is colon-separated (`:`) and has the form:
++
+[source]
+----
+prop1Name=prop1Value:prop2Name=prop2Value:...
+----
+  If a broker property name includes dots, preface the dots with two
+  backslashes (`\\`); for example, to include the `imq.system.max_count`
+  property, specify `imq\\.system\\.max_count` in the `--property`
+  option.
++
+
+[NOTE]
+====
+You can also set broker properties in the JMS service configuration.
+If you set the same broker property in both the JMS host and the JMS
+service configuration, the value specified in the JMS host is used.
+====
+
+`--force`::
+  Specifies whether the subcommand overwrites the existing JMS host of
+  the same name. The default value is `false`.
+jms-host-name::
+  The unique name of the JMS host.
+
+[[GSADG00271]][[gipbb]]
+Example 17-1 Creating a JMS Host
+
+This example creates a JMS host named `MyNewHost`.
+
+[source]
+----
+asadmin> create-jms-host --mqhost pigeon --mqport 7677
+--mquser admin --mqpassword admin MyNewHost
+Jms Host MyNewHost created.
+Command create-jms-host executed successfully.
+----
+
+[[GSADG1018]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-jms-host` at the command line.
+
+[[gipbz]][[GSADG00487]][[to-list-jms-hosts]]
+
+==== To List JMS Hosts
+
+Use the `list-jms-hosts` subcommand in remote `asadmin` mode to list the
+existing JMS hosts.
+
+1. Ensure that the server is running.
++
+Remote `asadmin` subcommands require a running server.
+2. List the JMS hosts by using the link:reference-manual/list-jms-hosts.html#GSRFM00176[`list-jms-hosts`]
+subcommand.
+
+[[GSADG00272]][[gipdw]]
+Example 17-2 Listing JMS Hosts
+
+The following subcommand lists the existing JMS hosts.
+
+[source]
+----
+asadmin> list-jms-hosts
+default_JMS_host
+MyNewHost
+Command list-jmsdest executed successfully
+----
+
+[[givno]][[GSADG00488]][[to-update-a-jms-host]]
+
+==== To Update a JMS Host
+
+Use the `set` subcommand in remote `asadmin` mode to update an existing
+JMS host.
+
+1. Ensure that the server is running.
++
+Remote `asadmin` subcommands require a running server.
+2. Use the link:reference-manual/get.html#GSRFM00139[`get`] subcommand to list the current
+attribute values of the desired JMS host:
++
+[source]
+----
+asadmin> get configs.config.config-name.jms-service.jms-host.jms-host-name.*
+----
+For information about JMS host attributes, see
+link:reference-manual/create-jms-host.html#GSRFM00039[`create-jms-host`(1)].
+3. Use the link:reference-manual/set.html#GSRFM00226[`set`] subcommand to modify a JMS host
+attribute:
++
+[source]
+----
+asadmin> set configs.config.config-name.jms-service.jmshost.
+jms-host-name.attribute-name=attribute-value
+----
+The attributes you can set are:::
+`host`::
+  The host name of the Message Queue broker.
+`port`::
+  The port number of the Message Queue broker.
+`admin-user-name`::
+  The user name of the administrative user of the Message Queue broker.
+`admin-password`::
+  The password of the administrative user of the Message Queue broker.
+`property.`broker-property-name::
+  A Message Queue broker property. The property, and the value assigned
+  to it, are used to configure the Message Queue broker.
++
+  If the broker property name includes dots, preface the dots with two
+  backslashes (`\\`); for example, to include the `imq.system.max_count`
+  property, specify `imq\\.system\\.max_count` in the `set` subcommand.
++
+
+[NOTE]
+====
+You can also set broker properties in the JMS service configuration.
+If you set the same broker property in both the JMS host and the JMS
+service configuration, the value specified in the JMS host is used.
+====
+
+
+[[GSADG00273]][[givlz]]
+Example 17-3 Updating a JMS Host
+
+This example changes the value of the `host` attribute of the JMS host
+`default_JMS_Host`. By default this value is `localhost`.
+
+[source]
+----
+asadmin> set configs.config.server-config.jms-service.jms-host.default_JMS_host.host=
+"server1.middleware.example.com"
+----
+
+[[gipbv]][[GSADG00489]][[to-delete-a-jms-host]]
+
+==== To Delete a JMS Host
+
+Use the `delete-jms-host` subcommand in remote `asadmin` mode to delete
+a JMS host from the JMS service. If you delete the only JMS host, the
+JMS service will not be able to start until you create a new JMS host.
+
+1. Ensure that the server is running.
++
+Remote `asadmin` subcommands require a running server.
+2. List the JMS hosts by using the link:reference-manual/list-jms-hosts.html#GSRFM00176[`list-jms-hosts`]
+subcommand.
+3. Delete a JMS host by using the link:reference-manual/delete-jms-host.html#GSRFM00091[`delete-jms-host`]
+subcommand.
+
+[[GSADG00274]][[gipbj]]
+Example 17-4 Deleting a JMS Host
+
+This example deletes a JMS host named `MyNewHost`.
+
+[source]
+----
+asadmin> delete-jms-host MyNewHost
+Command delete-jms-host executed successfully.
+----
+
+[[GSADG1019]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-jms-host` at the command line.
+
+[[ablkb]][[GSADG00598]][[administering-jms-connection-factories-and-destinations]]
+
+=== Administering JMS Connection Factories and Destinations
+
+The JMS API uses two kinds of administered objects. Connection factory
+objects allow an application to create other JMS objects
+programmatically. Destination objects serve as repositories for
+messages. How these objects are created is specific to each
+implementation of JMS. In {productName}, JMS is implemented by
+performing the following tasks:
+
+* Creating a connection factory
+* Creating a destination, which requires creating a physical destination
+and a destination resource that refers to the physical destination
+
+JMS applications use the Java Naming and Directory Interface (JNDI) API
+to access the connection factory and destination resources. A JMS
+application normally uses at least one connection factory and at least
+one destination. By studying the application or consulting with the
+application developer, you can determine what resources must be created.
+The order in which the resources are created does not matter.
+
+The Jakarta EE standard specifies that certain default resources be made
+available to applications, and defines specific JNDI names for these
+default resources. {productName} makes these names available through
+the use of logical JNDI names, which map Jakarta EE standard JNDI names to
+specific {productName} resources. For JMS connection factory
+resources, the Jakarta EE standard name
+`java:comp/DefaultJMSConnectionFactory` is mapped to the
+`jms/__defaultConnectionFactory` resource.
+
+{productName} provides the following types of connection factory
+objects:
+
+* `QueueConnectionFactory` objects, used for point-to-point
+communication
+* `TopicConnectionFactory` objects, used for publish-subscribe
+communication
+* `ConnectionFactory` objects, which can be used for both point-to-point
+and publish-subscribe communications (recommended for new applications)
+
+{productName} provides the following types of destination objects:
+
+* `Queue` objects, used for point-to-point communication
+* `Topic` objects, used for publish-subscribe communication
+
+The following topics are addressed here:
+
+* link:#giotd[To Create a Connection Factory or Destination Resource]
+* link:#giosx[To List JMS Resources]
+* link:#giouw[To Delete a Connection Factory or Destination Resource]
+
+The subcommands in this section can be used to administer both the
+connection factory resources and the destination resources. For
+information on JMS service support of connection pooling and failover,
+see "link:ha-administration-guide/jms.html#GSHAG00213[Connection Failover]" in {productName} High Availability Administration Guide. For instructions
+on administering physical destinations, see link:#ablkj[Administering
+JMS Physical Destinations].
+
+[[giotd]][[GSADG00490]][[to-create-a-connection-factory-or-destination-resource]]
+
+==== To Create a Connection Factory or Destination Resource
+
+For each JMS connection factory that you create, {productName}
+creates a connector connection pool and connector resource. For each JMS
+destination that you create, {productName} creates a connector admin
+object resource. If you delete a JMS resource, {productName}
+automatically deletes the connector resources.
+
+Use the `create-jms-resource` command in remote `asadmin` mode to create
+a JMS connection factory resource or a destination resource.
+
+
+[TIP]
+====
+To specify the `addresslist` property (in the format
+`host:mqport,host2:mqport,host3:mqport`) for the
+`asadmin create-jms-resource` command, escape the : by using `\\`. For
+example, `host1\\:mqport,host2\\:mqport,host3\\:mpqport`. For more
+information about using escape characters, see the
+olink:GSRFM00263[`asadmin`(1M)] help page.
+====
+
+
+To update a JMS connection factory, use the `set` subcommand for the
+underlying connector connection pool, See link:connectors.html#gioti[To
+Update a Connector Connection Pool].
+
+To update a destination, use the `set` subcommand for the admin object
+resource. See link:connectors.html#giots[To Update an Administered
+Object].
+
+1. Ensure that the server is running.
++
+Remote `asadmin` subcommands require a running server.
+2. Create a JMS resource by using the
+link:reference-manual/create-jms-resource.html#GSRFM00040[`create-jms-resource`] command.
++
+Information about the properties for the subcommand is included in this
+help page.
+3. If needed, restart the server.
++
+Some properties require server restart. See
+link:overview.html#ghciy[Configuration Changes That Require Restart]. If
+your server needs to be restarted, see link:domains.html#ginqj[To Restart
+a Domain].
+
+[[GSADG00275]][[giovy]]
+Example 17-5 Creating a JMS Connection Factory
+
+This example creates a connection factory resource of type
+`jakarta.jms.ConnectionFactory` whose JNDI name is
+`jms/DurableConnectionFactory`. The `ClientId` property sets a client ID
+on the connection factory so that it can be used for durable
+subscriptions. The JNDI name for a JMS resource customarily includes the
+`jms/` naming subcontext.
+
+[source]
+----
+asadmin> create-jms-resource --restype jakarta.jms.ConnectionFactory
+--description "connection factory for durable subscriptions"
+--property ClientId=MyID jms/DurableConnectionFactory
+Command create-jms-resource executed successfully.
+----
+
+[[GSADG00276]][[giovn]]
+Example 17-6 Creating a JMS Destination
+
+This example creates a destination resource whose JNDI name is
+`jms/MyQueue`.
+
+[source]
+----
+asadmin> create-jms-resource --restype jakarta.jms.Queue
+--property Name=PhysicalQueue jms/MyQueue
+Command create-jms-resource executed successfully.
+----
+
+[[GSADG1020]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-jms-resource` at the command line.
+
+[[giosx]][[GSADG00491]][[to-list-jms-resources]]
+
+==== To List JMS Resources
+
+Use the `list-jms-resources` subcommand in remote `asadmin` mode to list
+the existing connection factory and destination resources.
+
+1. Ensure that the server is running.
++
+Remote `asadmin` subcommands require a running server.
+2. List the existing JMS resources by using the
+link:reference-manual/list-jms-resources.html#GSRFM00177[`list-jms-resources`] subcommand.
+
+[[GSADG00277]][[giovz]]
+Example 17-7 Listing All JMS Resources
+
+This example lists all the existing JMS connection factory and
+destination resources.
+
+[source]
+----
+asadmin> list-jms-resources
+jms/Queue
+jms/ConnectionFactory
+jms/DurableConnectionFactory
+jms/Topic
+Command list-jms-resources executed successfully
+----
+
+[[GSADG00278]][[giovq]]
+Example 17-8 Listing a JMS Resources of a Specific Type
+
+This example lists the resources for the resource type `javax`.
+
+[source]
+----
+asadmin> list-jms-resources --restype jakarta.jms.TopicConnectionFactory
+jms/DurableTopicConnectionFactory
+jms/TopicConnectionFactory
+Command list-jms-resources executed successfully.
+----
+
+[[GSADG1021]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-jms-resources` at the command line.
+
+[[giouw]][[GSADG00492]][[to-delete-a-connection-factory-or-destination-resource]]
+
+==== To Delete a Connection Factory or Destination Resource
+
+Use the `delete-jms-resource` subcommand in remote `asadmin` mode to
+remove the specified connection factory or destination resource.
+
+[[GSADG1022]]
+
+Before You Begin
+
+Ensure that you remove all references to the specified JMS resource
+before running this subcommand.
+
+1. Ensure that the server is running.
++
+Remote `asadmin` subcommands require a running server.
+2. List the existing JMS resources by using the
+link:reference-manual/list-jms-resources.html#GSRFM00177[`list-jms-resources`] subcommand.
+3. Delete the JMS resource by using the
+link:reference-manual/delete-jms-resource.html#GSRFM00092[`delete-jms-resource`] subcommand.
+
+[[GSADG00279]][[giovi]]
+Example 17-9 Deleting a JMS Resource
+
+This example deletes the `jms/Queue` resource.
+
+[source]
+----
+asadmin> delete-jms-resource jms/Queue
+Command delete-jms-resource executed successfully
+----
+
+[[GSADG1023]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-jms-resource` at the command line.
+
+[[ablkj]][[GSADG00599]][[administering-jms-physical-destinations]]
+
+=== Administering JMS Physical Destinations
+
+Messages are delivered for routing and delivery to consumers by using
+physical destinations in the JMS provider. A physical destination is
+identified and encapsulated by an administered object (such as a `Topic`
+or `Queue` destination resource) that an application component uses to
+specify the destination of messages it is producing and the source of
+messages it is consuming. For instructions on configuring a destination
+resource, see link:#giotd[To Create a Connection Factory or Destination
+Resource].
+
+If a message-driven bean is deployed and the physical destination it
+listens to does not exist, {productName} automatically creates the
+physical destination and sets the value of the `maxNumActiveConsumers`
+property to `-1`. However, it is good practice to create the physical
+destination beforehand. The first time that an application accesses a
+destination resource, Message Queue automatically creates the physical
+destination specified by the Name property of the destination resource.
+This automatically created physical destination is temporary and expires
+after a period specified by a Message Queue configuration property,
+provided that there are no messages in it and no message producers or
+consumers connected to it.
+
+The following topics are addressed here:
+
+* link:#gioue[To Create a JMS Physical Destination]
+* link:#gioyp[To List JMS Physical Destinations]
+* link:#giowx[To Purge Messages From a Physical Destination]
+* link:#giouv[To Delete a JMS Physical Destination]
+
+[[gioue]][[GSADG00493]][[to-create-a-jms-physical-destination]]
+
+==== To Create a JMS Physical Destination
+
+For production purposes, always create physical destinations. During the
+development and testing phase, however, this step is not required. Use
+the `create-jmsdest` subcommand in remote `asadmin` mode to create a
+physical destination.
+
+Because a physical destination is actually a Message Queue object rather
+than a server object, you use Message Queue broker commands to update
+properties. For information on Message Queue properties, see the
+link:../openmq/mq-admin-guide.html#GMADG[Open Message Queue Administration Guide].
+
+1. Ensure that the server is running.
++
+Remote `asadmin` subcommands require a running server.
+2. Create a JMS physical destination by using the
+link:reference-manual/create-jmsdest.html#GSRFM00038[`create-jmsdest`] subcommand.
++
+Information about the properties for the subcommand is included in this
+help page.
+3. If needed, restart the server.
++
+Some properties require server restart. See
+link:overview.html#ghciy[Configuration Changes That Require Restart]. If
+your server needs to be restarted, see link:domains.html#ginqj[To Restart
+a Domain].
+
+[[GSADG00280]][[gioxt]]
+Example 17-10 Creating a JMS Physical Destination
+
+This example creates a queue named `PhysicalQueue`.
+
+[source]
+----
+asadmin> create-jmsdest --desttype queue --property
+User=public:Password=public PhysicalQueue
+Command create-jmsdest executed successfully.
+----
+
+[[GSADG1024]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-jmsdest` at the command line.
+
+[[gioyp]][[GSADG00494]][[to-list-jms-physical-destinations]]
+
+==== To List JMS Physical Destinations
+
+Use the `list-jmsdest` subcommand in remote `asadmin` mode to list the
+existing JMS physical destinations.
+
+1. Ensure that the server is running.
++
+Remote `asadmin` subcommands require a running server.
+2. List the existing JMS physical destinations by using the
+link:reference-manual/list-jmsdest.html#GSRFM00175[`list-jmsdest`] subcommand.
+
+[[GSADG00281]][[gioxo]]
+Example 17-11 Listing JMS Physical Destinations
+
+This example lists the physical destinations for the default server
+instance.
+
+[source]
+----
+asadmin> list-jmsdest
+PhysicalQueue queue {}
+PhysicalTopic topic {}
+Command list-jmsdest executed successfully.
+----
+
+[[GSADG1025]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-jmsdest` at the command line.
+
+[[giowx]][[GSADG00495]][[to-purge-messages-from-a-physical-destination]]
+
+==== To Purge Messages From a Physical Destination
+
+Use the `flush-jmsdest` subcommand in remote `asadmin` mode to purge the
+messages from a physical destination in the specified target's JMS
+service configuration.
+
+1. Ensure that the server is running.
++
+Remote `asadmin` subcommands require a running server.
+2. Purge messages from the a JMS physical destination by using the
+link:reference-manual/flush-jmsdest.html#GSRFM00136[`flush-jmsdest`] subcommand.
+3. If needed, restart the server.
++
+Some properties require server restart. See
+link:overview.html#ghciy[Configuration Changes That Require Restart]. If
+your server needs to be restarted, see link:domains.html#ginqj[To Restart
+a Domain].
+
+[[GSADG00282]][[giows]]
+Example 17-12 Flushing Messages From a JMS Physical Destination
+
+This example purges messages from the queue named `PhysicalQueue`.
+
+[source]
+----
+asadmin> flush-jmsdest --desttype queue PhysicalQueue
+Command flush-jmsdest executed successfully
+----
+
+[[GSADG1026]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help flush-jmsdest` at the command line.
+
+[[giouv]][[GSADG00496]][[to-delete-a-jms-physical-destination]]
+
+==== To Delete a JMS Physical Destination
+
+Use the `delete-jmsdest` subcommand in remote `asadmin` mode to remove
+the specified JMS physical destination.
+
+1. Ensure that the server is running.
++
+Remote `asadmin` subcommands require a running server.
+2. List the existing JMS physical destinations by using the
+link:reference-manual/list-jmsdest.html#GSRFM00175[`list-jmsdest`] subcommand.
+3. Delete the physical resource by using the
+link:reference-manual/delete-jmsdest.html#GSRFM00090[`delete-jmsdest`] subcommand.
+
+[[GSADG00283]][[gioxx]]
+Example 17-13 Deleting a Physical Destination
+
+This example deletes the queue named `PhysicalQueue`.
+
+[source]
+----
+asadmin> delete-jmsdest --desttype queue PhysicalQueue
+Command delete-jmsdest executed successfully
+----
+
+[[GSADG1027]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-jmsdest` at the command line.
+
+[[gkxgk]][[GSADG00600]][[special-situations-when-using-the-jms-service]]
+
+=== Special Situations When Using the JMS Service
+
+As mentioned earlier, Message Queue, through the built-in `jmsra`
+resource adapter, is tightly integrated with {productName} to provide
+JMS messaging managed through a rich set of `asadmin` subcommands and
+Administration Console pages to simplify JMS messaging administration
+tasks. In most instances, this tight integration is transparent and
+automatic, requiring no special effort on the part of an administrator.
+In certain special situations, though, an administrator must perform a
+task such a setting a Message Queue broker property or a GlassFish
+object attribute to enable or disable a capability of the integration.
+The topics in this section describe these situations.
+
+Restarting an Embedded or Local Broker That Has Failed::
+  Because the JMS service, not Message Queue, manages the lifecycle of
+  brokers acting as Embedded and Local JMS hosts, do not use the
+  `imqbrokerd` Message Queue utility to start such a broker that has
+  failed. Instead, restart the GlassFish instance that the broker is
+  servicing.
+Changing the Admin User Password for an Embedded or Local Broker::
+  Follow these steps to change the `admin` user password for an Embedded
+  or Local broker:
+  1. [[CHDDHDIE]]
+  Make sure the broker is running.
+
+  2. [[CHDHDFAH]]
+  Use the `imqusermgr` Message Queue utility to change the password of
+  the `admin` user.
+
+  3. [[CHDCJEFG]]
+  Edit the configuration of the JMS host, changing the password of the
+  `admin` user to the new password.
+
+  4. [[CHDFJECE]]
+  Restart the GlassFish instance that the broker is servicing. +
+  When changing the password for the brokers in a broker cluster, first
+  perform steps link:#CHDDHDIE[1] and link:#CHDHDFAH[2] on each broker.
+  Then, perform step link:#CHDCJEFG[3]. Finally, perform
+  step link:#CHDFJECE[4] on each broker.
+
+Using SSL to Connect to an Oracle Internet Directory (OID) or Oracle
+Virtual Directory (OVD) User Respository::
+  When using SSL to connect to an OID or OVD user repository, you must
+  set the `imq.user_repository.ldap.ssl.socketfactory` Message Queue
+  broker property to
+  `com.sun.enterprise.security.auth.realm.ldap.CustomSocketFactory`.
+
+[[gipnh]][[GSADG00601]][[troubleshooting-the-jms-service]]
+
+=== Troubleshooting the JMS Service
+
+If you encounter problems, consider the following:
+
+* Use the link:reference-manual/jms-ping.html#GSRFM00144[`jms-ping`] subcommand to confirm that the
+Message Queue broker is running.
+* View the {productName} log file. For `server`, the Domain
+Administrations Server (DAS), the log is available at
+domain-dir``/logs/server.log``; for other GlassFish instances, the log is
+available at
+as-install``/nodes/``node-name``/``instance-name``/logs/server.log``.
++
+If the log file indicates that a Message Queue broker acting as a Remote
+JMS host did not respond to a message, stop the broker and then restart
+it.
+* View the broker log. For a broker associated with the Domain
+Administration Server (DAS), the log is available at
+domain-dir`/imq/instances/imqbroker/log/log.txt`; for brokers associated
+with other GlassFish instances, the log is available at
+as-install``/nodes/``node-name``/``instance-name`/imq/instances/``mq-instance-name``/log/log.txt``.
+* For Remote type JMS hosts, be sure to start Message Queue brokers
+first, then {productName} instances.
+* If all Message Queue brokers are down, it can take up to 30 minutes
+for {productName} to go down or up when you are using the default
+values in JMS. You can change the default values for this timeout. For
+example:
++
+[source]
+----
+asadmin set domain1.jms-service.reconnect-interval-in-seconds=5
+----
+
+[[gbtvg]][[GSADG00602]][[using-the-generic-resource-adapter-for-jms-to-integrate-supported-external-jms-providers]]
+
+=== Using the Generic Resource Adapter for JMS to Integrate Supported External JMS Providers
+
+{productName} supports the integration and use of Oracle WebLogic JMS
+and IBM WebSphere MQ JMS providers through the use of the Generic
+Resource Adapter for JMS (GenericJMSRA). This Jakarta EE connector 1.5
+resource adapter can wrap the JMS client library of Oracle WebLogic JMS
+and IBM WebSphere MQ and make it available for use by GlassFish. The
+adapter is a `.rar` archive that can be deployed and configured using
+{productName} administration tools.
+
+The following topics are addressed here:
+
+* link:#gkkvc[Configuring GenericJMSRA for Supported External JMS
+Providers]
+* link:#gkkuy[Using GenericJMSRA with WebLogic JMS]
+* link:#gkslb[Using GenericJMSRA with IBM WebSphere MQ]
+
+[[gkkvc]][[GSADG00777]][[configuring-genericjmsra-for-supported-external-jms-providers]]
+
+==== Configuring GenericJMSRA for Supported External JMS Providers
+
+GenericJMSRA has three main properties that need to be configured:
+`SupportXA`, `DeliveryType`, and `ProviderIntegrationMode`. The values
+that need to be set for them depends on the capabilities of the JMS
+provider being used, as follows:
+
+* `SupportXA` — indicates whether the JMS provider supports XA or not.
+* `DeliveryType` — indicates whether an MDB should use a
+`ConnectionConsumer` or `Consumer.receive()` when consuming messages.
+* `ProviderIntegrationMode` — indicates what mode of integration is
+required. The available integration modes are jndi and javabean. Some
+JMS providers support only one integration mode while others may offer
+the choice of both
+
+** If jndi is specified, then the resource adapter will obtain JMS
+connection factories and destinations from the JMS provider's JNDI
+repository.
+
+** If javabean is specified then the resource adapter will obtain JMS
+connection factories and destinations by instantiating the appropriate
+classes directly.
++
+Which option is specified determines which other properties need to be
+set.
+
+[[giosy]][[GSADG00497]][[to-deploy-and-configure-genericjmsra]]
+
+===== To Deploy and Configure GenericJMSRA
+
+Before deploying GenericJMSRA, JMS client libraries must be made
+available to {productName}. For some JMS providers, client libraries
+might also include native libraries. In such cases, these native
+libraries must be made available to any {productName} JVMs.
+
+1. Download the `genericra.rar` archive.
+2. Deploy GenericJMSRA the same way you would deploy a connector
+module.
++
+See "link:application-deployment-guide/deploying-applications.html#GSDPG00069[Deploying a Connector Module]" in {productName} Application Deployment Guide.
+3. Configure the resource adapter's properties.
++
+See link:#gbtvu[GenericJMSRA Configuration Properties].
+4. Create a connector connection pool.
++
+See link:connectors.html#gioce[To Create a Connector Connection Pool].
+5. Create a connector resource.
++
+See link:connectors.html#giogt[To Create a Connector Resource].
+6. Create an administered object resource.
++
+See link:connectors.html#giolr[To Create an Administered Object].
+
+[[gbtvu]][[GSADG00674]][[genericjmsra-configuration-properties]]
+
+===== GenericJMSRA Configuration Properties
+
+The following table describes the properties that can be set to when
+configuring the resource adapter.
+
+[width="100%",cols="28%,19%,14%,39%",options="header",]
+|===
+|Property Name |Valid Values |Default Value |Description
+|`SupportsXA` |`true/false` |false |Specifies whether the JMS client
+supports XA transactions.
+
+|`DeliveryType` a|
+`Synchronous/`
+
+`Asynchronous`
+
+ |Asynchronous |Specifies whether an MDB should use a
+`ConnectionConsumer` (Asynchronous) or `consumer.receive()`
+(Synchronous) when consuming messages.
+
+|`QueueConnectionFactoryClassName` |A valid class name |None |Class name
+of `jakarta.jms.QueueConnectionFactory` implementation of the JMS client.
+This class must be made available on the application server classpath.
+Used if `ProviderIntegrationMode` is `javabean`.
+
+|`TopicConnectionFactoryClassName` |A valid class name |None |Class name
+of `jakarta.jms.TopicConnectionFactory` implementation of the JMS client.
+This class must be made available on the application server classpath.
+Used if `ProviderIntegrationMode` is specified as `javabean`.
+
+|`XAConnectionFactoryClassName` |A valid class name |None |Class name of
+`jakarta.jms.ConnectionFactory` implementation of the JMS client. This
+class must be made available on the application server classpath. Used
+if `ProviderIntegrationMode` is specified as `javabean`.
+
+|`XAQueueConnectionFactoryClassName` |A valid class name |None |Class
+name of `jakarta.jms.``XAQueueConnectionFactory` implementation of the JMS
+client. This class must be made available on the application server
+classpath. Used if `ProviderIntegrationMode` is specified as `javabean`.
+
+|`XATopicConnectionFactoryClassName` |A valid class name |None |Class
+name of `jakarta.jms.``XATopicConnectionFactory` implementation of the JMS
+client. This class must be made available on the application server
+classpath. Used if `ProviderIntegrationMode` is `javabean`.
+
+|`TopicClassName` |A valid class name |None |Class Name of
+`jakarta.jms.Topic` implementation of the JMS client. This class must be
+made available on the application server classpath. Used if
+`ProviderIntegrationMode` is `javabean`.
+
+|`QueueClassName` |A valid class name |None |Class Name of
+`jakarta.jms.Queue` implementation of the JMS client. This class must be
+made available on the application server classpath. Used if
+`ProviderIntegrationMode` is specified as a `javabean`.
+
+|`ConnectionFactoryProperties` |Name value pairs separated by comma
+|None |Specifies the `javabean` property names and values of the
+`ConnectionFactory` of the JMS client. Required only if
+`ProviderIntegrationMode` is `javabean`.
+
+|`JndiProperties` |Name value pairs separated by comma |None |Specifies
+the JNDI provider properties to be used for connecting to the JMS
+provider's JNDI. Used only if `ProviderIntegrationMode` is `jndi`.
+
+|`CommonSetterMethodName` |Method name |None |Specifies the common
+setter method name that some JMS vendors use to set the properties on
+their administered objects. Used only if `ProviderIntegrationMode` is
+`javabean`. For example, in the case of Message Queue, this would be
+`setProperty`.
+
+|`UserName` |Name of the JMS user |None |User name to connect to the JMS
+Provider.
+
+|`Password` |Password for the JMS user |None |Password to connect to the
+JMS provider.
+
+|`RMPolicy` |`ProviderManaged` or `OnePerPhysicalConnection`
+|`Provider``Managed` a|
+The `isSameRM` method on an `XAResource` is used by the Transaction
+Manager to determine if the Resource Manager instance represented by two
+`XAResources` are the same. When `RMPolicy` is set to `ProviderManaged`
+(the default value), the JMS provider is responsible for determining the
+`RMPolicy` and the `XAResource` wrappers in GenericJMSRA merely delegate
+the `isSameRM` call to the JMS provider's XA resource implementations.
+This should ideally work for most JMS providers.
+
+Some `XAResource` implementations such as WebSphere MQ rely on a
+resource manager per physical connection and this causes issues when
+there is inbound and outbound communication to the same queue manager in
+a single transaction (for example, when an MDB sends a response to a
+destination). When `RMPolicy` is set to `OnePerPhysicalConnection`, the
+XAResource wrapper implementation's `isSameRM` in GenericJMSRA would
+check if both the `XAResources` use the same physical connection, before
+delegating to the wrapped objects.
+
+|===
+
+
+[[gbtwu]][[GSADG00675]][[connection-factory-properties]]
+
+===== Connection Factory Properties
+
+`ManagedConnectionFactory` properties are specified when a
+`connector-connection-pool` is created. All the properties specified
+while creating the resource adapter can be overridden in a
+`ManagedConnectionFactory`. Additional properties available only in
+`ManagedConnectionFactory` are given below.
+
+[width="181%",cols="20%,8%,49%,23%",options="header",]
+|===
+|Property Name |Valid Value |Default Value |Description
+|`ClientId` |A valid client ID |None |`ClientID` as specified by JMS 1.1
+specification.
+
+|`ConnectionFactoryJndiName` |JNDI Name |None |JNDI name of the
+connection factory bound in the JNDI tree of the JMS provider. The
+administrator should provide all connection factory properties (except
+`clientID`) in the JMS provider itself. This property name will be used
+only if `ProviderIntegratinMode` is `jndi`.
+
+|`ConnectionValidationEnabled` |true/false |false |If set to true, the
+resource adapter will use an exception listener to catch any connection
+exception and will send a `CONNECTION_ERROR_OCCURED` event to
+application server.
+|===
+
+
+[[gbtxa]][[GSADG00676]][[destination-properties]]
+
+===== Destination Properties
+
+Properties in this section are specified when a destination (queue or
+topic) is created. All the resource adapter properties can be overridden
+in a destination. Additional properties available only in the
+destination are given below.
+
+[width="100%",cols="31%,14%,11%,44%",options="header",]
+|===
+|Property Name |Valid Value |Default Value |Description
+|`DestinationJndiName` |JNDI Name |None |JNDI name of the destination
+bound in the JNDI tree of the JMS provider. The Administrator should
+provide all properties in the JMS provider itself. This property name
+will be used only if `ProviderIntegrationMode` is `jndi`.
+
+|`DestinationProperties` |Name value pairs separated by a comma |None
+|Specifies the `javabean` property names and values of the destination
+of the JMS client. Required only if `ProviderIntegrationMode` is
+`javabean`.
+|===
+
+
+[[gbtvf]][[GSADG00677]][[activation-spec-properties]]
+
+===== Activation Spec Properties
+
+Properties in this section are specified in the {productName}
+`glassfish-ejb-jar.xml` deployment descriptor of an MDB as
+`activation-config-properties`. All the resource adapter properties can
+be overridden in an Activation Spec. Additional properties available
+only in ActivationSpec are given below.
+
+[width="100%",cols="43%,14%,13%,30%",options="header",]
+|===
+|Property Name |Valid Value |Default Value |Description
+|`MaxPoolSize` |An integer |8 |Maximum size of server session pool
+internally created by the resource adapter for achieving concurrent
+message delivery. This should be equal to the maximum pool size of MDB
+objects.
+
+|`MaxWaitTime` |An integer |3 |The resource adapter will wait for the
+time in seconds specified by this property to obtain a server session
+from its internal pool. If this limit is exceeded, message delivery will
+fail.
+
+|`SubscriptionDurability` |Durable or Non-Durable |Non-Durable
+|`SubscriptionDurability` as specified by JMS 1.1 specification.
+
+|`SubscriptionName` | + |None |`SubscriptionName` as specified by JMS
+1.1 specification.
+
+|`MessageSelector` |A valid message selector |None |`MessageSelector` as
+specified by JMS 1.1 specification.
+
+|`ClientID` |A valid client ID |None |`ClientID` as specified by JMS 1.1
+specification.
+
+|`ConnectionFactoryJndiName` |A valid JNDI Name |None |JNDI name of
+connection factory created in JMS provider. This connection factory will
+be used by resource adapter to create a connection to receive messages.
+Used only if `ProviderIntegrationMode` is configured as `jndi`.
+
+|`DestinationJndiName` |A valid JNDI Name |None |JNDI name of
+destination created in JMS provider. This destination will be used by
+resource adapter to create a connection to receive messages from. Used
+only if `ProviderIntegrationMode` is configured as `jndi`.
+
+|`DestinationType` |`jakarta.jms.Queue` or `jakarta.jms.Topic` |Null |Type
+of the destination the MDB will listen to.
+
+|`DestinationProperties` |Name-value pairs separated by comma |None
+|Specifies the `javabean` property names and values of the destination
+of the JMS client. Required only if `ProviderIntegrationMode` is
+`javabean`.
+
+|`RedeliveryAttempts` |integer | + |Number of times a message will be
+delivered if a message causes a runtime exception in the MDB.
+
+|`Redelivery``Interval` |time in seconds | + |Interval between repeated
+deliveries, if a message causes a runtime exception in the MDB.
+
+|`SendBadMessagesToDMD` |true/false |False |Indicates whether the
+resource adapter should send the messages to a dead message destination,
+if the number of delivery attempts is exceeded.
+
+|`DeadMessageDestinationJndiName` |a valid JNDI name. |None |JNDI name
+of the destination created in the JMS provider. This is the target
+destination for dead messages. This is used only if
+`ProviderIntegrationMode` is `jndi`.
+
+|`DeadMessageDestinationClassName` |class name of destination object.
+|None |Used if `ProviderIntegrationMode` is `javabean`.
+
+|`DeadMessageDestinationProperties` |Name Value Pairs separated by comma
+|None |Specifies the `javabean` property names and values of the
+destination of the JMS client. This is required only if
+`ProviderIntegrationMode` is `javabean`.
+
+|`DeadMessageConnectionFactoryJndiName` |a valid JNDI name |None |JNDI
+name of the connection factory created in the JMS provider. This is the
+target connection factory for dead messages. This is used only if
+`ProviderIntegrationMode` is `jndi`.
+
+|`DeadMessageDestinationType` |queue or topic destination |None |The
+destination type for dead messages.
+
+|`ReconnectAttempts` |integer |0 |Number of times a reconnect will be
+attempted in case exception listener catches an error on connection.
+
+|`ReconnectInterval` |time in seconds |0 |Interval between reconnects.
+|===
+
+
+[[gkkuy]][[GSADG00778]][[using-genericjmsra-with-weblogic-jms]]
+
+==== Using GenericJMSRA with WebLogic JMS
+
+You can configure GenericJMSRA to enable applications running in
+{productName} to send messages to, and receive messages from, Oracle
+WebLogic JMS.
+
+GenericJMSRA should be used in conjunction with the WebLogic Server Thin
+T3 Client. Due to the nature of this client, messages exchanged between
+{productName} and WebLogic Server cannot be sent or received in XA
+transactions. There is also only limited support for asynchronous
+receipt of messages in an MDB, as described in detail in
+link:#gkkvz[Limitations When Using GenericJMSRA with WebLogic JMS].
+
+The following topics are addressed here:
+
+* link:#gkmeb[Deploy the WebLogic Thin T3 Client JAR in {productName}]
+* link:#gkmek[Configure WebLogic JMS Resources for Integration]
+* link:#gkmee[Create a Resource Adapter Configuration for GenericJMSRA
+to Work With WebLogic JMS]
+* link:#gkkxz[Deploy the GenericJMSRA Resource Archive]
+* link:#gkkwq[Configuring an MDB to Receive Messages from WebLogic JMS]
+* link:#gknjj[Accessing Connections and Destinations Directly]
+* link:#gkkvz[Limitations When Using GenericJMSRA with WebLogic JMS]
+* link:#gktfi[Configuration Reference of GenericJMSRA Properties for
+WebLogic JMS]
+
+[[gkmeb]][[GSADG00678]][[deploy-the-weblogic-thin-t3-client-jar-in-glassfish-server]]
+
+===== Deploy the WebLogic Thin T3 Client JAR in {productName}
+
+WebLogic Server provides several different clients for use by standalone
+applications that run outside of WebLogic Server. These client are
+summarized in
+"http://www.oracle.com/pls/as1111/lookup?id=SACLT117[Overview of
+Stand-alone Clients"] in Programming Stand-alone Clients for Oracle
+WebLogic Server. When connecting from {productName} to WebLogic JMS
+resources you must use the WebLogic Thin T3 client,
+`wlthint3client.jar`.
+
+There are a couple of methods to deploy the WebLogic Thin T3 client in
+{productName} and make it available to GenericJMSRA:
+
+* To make the Thin T3 client available to all applications, copy the
+`wlthint3client.jar` to the as-install``/lib`` directory under your
+{productName} installation. The Thin T3 client can be found in a
+WebLogic Server installation in a directory similar to
+MW_HOME``/server/lib``.
+* It is also possible to deploy the Thin T3 client in a less global
+manner, so that it is specific to an individual application. For
+information on how to do this, see
+"link:application-development-guide/class-loaders.html#GSDVG00099[Application-Specific Class Loading]" in {productName} Application Development Guide.
+
+[[gkmek]][[GSADG00679]][[configure-weblogic-jms-resources-for-integration]]
+
+===== Configure WebLogic JMS Resources for Integration
+
+If you need to configure the necessary WebLogic JMS resources on the
+WebLogic Server from which you want to access messages using {productName}, then follow the instructions in the WebLogic Server
+documentation for configuring the necessary resources, such as
+destinations, and connection factories.
+
+* JMS System Module Configuration
+* Queue and Topic Destination Configuration
+* Connection Factory Configuration
+
+The example code snippets in this section refer to a WebLogic JMS
+connection factory named `WLoutboundQueueFactory` and queue destination
+named `WLoutboundQueue`. For conceptual overviews on configuring
+WebLogic JMS resources, refer to
+"http://www.oracle.com/pls/as1111/lookup?id=JMSAD123[Understanding JMS
+Resource Configuration]" in Configuring and Managing JMS for Oracle
+WebLogic Server. For detailed instructions on configuring WebLogic JMS
+resources, refer to
+"http://www.oracle.com/pls/as1111/lookup?id=WLACH01854[Configure JMS
+system modules and add JMS resources]" in the WebLogic Administration
+Console Online Help.
+
+[[gkmee]][[GSADG00680]][[create-a-resource-adapter-configuration-for-genericjmsra-to-work-with-weblogic-jms]]
+
+===== Create a Resource Adapter Configuration for GenericJMSRA to Work With WebLogic JMS
+
+When you deploy GenericJMSRA, you also need to create a resource adapter
+configuration in {productName}. You can do this using either the
+Administration Console or the `asadmin` command. If you use
+theAdministration Console then you need deploy the GenericJMSRA resource
+archive first. Here's an example using `asadmin`:
+
+[source]
+----
+asadmin create-resource-adapter-config --host localhost --port 4848 --property
+SupportsXA=false:DeliveryType=Synchronous:ProviderIntegrationMode
+                          =jndi:JndiProperties=java.naming.factory.initial\
+                          =weblogic.jndi.WLInitialContextFactory,java.naming.provider.url\
+                          =t3\://localhost\:7001,java.naming.factory.url.pkgs\
+                          =weblogic.corba.client.naming genericra
+----
+
+This creates a resource adapter configuration with the name `genericra`,
+and Oracle recommends not changing the default name. The resource
+adapter configuration is configured with the properties specified using
+the `--properties` argument; multiple properties are configured as a
+colon-separated list of name-value pairs that are entered as a single
+line. You will also need to change the host and port that WebLogic
+Server is running on to suit your installation.
+
+In this example, the following properties are configured:
+
+[width="100%",cols="28%,72%",options="header",]
+|===
+|Property |Value
+|`SupportsXA` |`false`
+|`DeliveryType` |`Synchronous`
+|`ProviderIntegrationMode` |`jndi`
+|`JndiProperties` a|
+[source]
+----
+java.naming.factory.initial
+=weblogic.jndi.WLInitialContextFactory,java.naming.provider.url
+=t3://localhost:7001,java.naming.factory.url.pkgs
+=weblogic.corba.client.naming
+
+(replace "localhost:7001" with the host:port of WebLogic Server)
+----
+
+|===
+
+
+You must use the same values for `SupportsXA`, `DeliveryType` and
+`ProviderIntegrationMode` as the required values that are used in this
+table. The `JndiProperties` value must be set to a list of JNDI
+properties needed for connecting to WebLogic JNDI.
+
+
+[NOTE]
+====
+When using `asadmin` you need to escape each `=` and any `:` characters
+by prepending a backward slash `\`. The escape sequence is not necessary
+if the configuration is performed through the Administration Console.
+====
+
+
+For a description of all the resource adapter properties that are
+relevant for WebLogic JMS, see the link:#gktfi[Configuration Reference
+of GenericJMSRA Properties for WebLogic JMS].
+
+[[gkkxz]][[GSADG00498]][[deploy-the-genericjmsra-resource-archive]]
+
+===== Deploy the GenericJMSRA Resource Archive
+
+1. Download the GenericJMSRA resource archive (genericra.rar).
+2. Deploy the resource adapter. You can do this using either the
+Administration Console or the `asadmin` deploy command. Here's an
+example using the `asadmin` deploy command:
++
+[source]
+----
+$ asadmin deploy --user admin --password adminadmin
+  <location of the generic resource adapter rar file>
+----
+If you deploy the resource adapter using the Administration Console,
+then after deployment you need to create a resource adapter
+configuration as described in link:#gkmee[Create a Resource Adapter
+Configuration for GenericJMSRA to Work With WebLogic JMS].
+
+[[gkkwq]][[GSADG00499]][[configuring-an-mdb-to-receive-messages-from-weblogic-jms]]
+
+===== Configuring an MDB to Receive Messages from WebLogic JMS
+
+In this example, all configuration information is defined in two
+deployment descriptor files: `ejb-jar.xml` and the {productName}
+`glassfish-ejb-jar.xml` file. To configure a MDB to receive messages
+from WebLogic JMS, you would configure these deployment descriptor files
+as follows:
+
+1. Configure the ejb-jar.xml deployment descriptor:
++
+[source,xml]
+----
+<ejb-jar>
+  <enterprise-beans>
+    <message-driven>
+      <ejb-name>SimpleMessageEJB</ejb-name>
+      <ejb-class>test.simple.queue.ejb.SimpleMessageBean</ejb-class>
+      <transaction-type>Container</transaction-type>
+    </message-driven>
+  </enterprise-beans>
+  <assembly-descriptor>
+    <container-transaction>
+      <method>
+        <ejb-name>SimpleMessageEJB</ejb-name>
+        <method-name>onMessage</method-name>
+        <method-params>
+          <method-param>jakarta.jms.Message</method-param>
+        </method-params>
+      </method>
+      <trans-attribute>NotSupported</trans-attribute>
+    </container-transaction>
+  </assembly-descriptor>
+</ejb-jar>
+----
++
+[NOTE]
+====
+If container-managed transactions are configured, then the transactional
+attribute must be set to `NotSupported`. For more information, see
+link:#gkkvz[Limitations When Using GenericJMSRA with WebLogic JMS].
+====
+
+2. Configure the glassfish-ejb-jar.xml deployment descriptor:
++
+[source,xml]
+----
+<sun-ejb-jar>
+  <enterprise-beans>
+    <ejb>
+      <ejb-name>SimpleMessageEJB</ejb-name>
+      <mdb-resource-adapter>
+        <resource-adapter-mid>genericra</resource-adapter-mid>
+        <activation-config>
+          <activation-config-property>
+            <activation-config-property-name>
+              ConnectionFactoryJndiName
+            </activation-config-property-name>
+            <activation-config-property-value>
+              jms/WLInboundQueueFactory
+            </activation-config-property-value>
+          </activation-config-property>
+          <activation-config-property>
+            <activation-config-property-name>
+              DestinationJndiName
+            </activation-config-property-name>
+            <activation-config-property-value>
+              jms/WLInboundQueue
+            </activation-config-property-value>
+          </activation-config-property>
+        </activation-config>
+      </mdb-resource-adapter>
+    </ejb>
+  </enterprise-beans>
+</sun-ejb-jar>
+----
+where:
++
+The `<resource-adapter-mid>genericra</resource-adapter-mid>` element is
+used to specify the resource adapter and resource adapter configurations
+that was deployed in the link:#gkmee[Create a Resource Adapter
+Configuration for GenericJMSRA to Work With WebLogic JMS] instructions.
+It is recommended you stick to `genericra` as is used here.
++
+The `activation-config` element in `glassfish-ejb-jar.xml` is the one
+which defines how and where the MDB receives messages, as follows:
+* The `ConnectionFactoryJndiName` property must be set to the JNDI name
+of the connection factory in the WebLogic JNDI store that will be used
+to receive messages. Therefore, replace `jms/WLInboundQueueFactory` in
+the example above with the JNDI name used in your environment.
+* The `DestinationJndiName` property must be set to the JNDI name of the
+destination (the queue or topic from which messages will be consumed) in
+the WebLogic JNDI store. Therefore, replace `jms/WLInboundQueue` in the
+example above with the JNDI name used in your environment. +
+
+For a description of all the ActivationSpec properties that are relevant
+for WebLogic JMS, see the link:#gktfi[Configuration Reference of
+GenericJMSRA Properties for WebLogic JMS]. +
+
+Make sure to use the appropriate WebLogic administration tools, such as
+the WebLogic Administration Console or the WebLogic Scripting Tool (WLST).
+For more information, see
+"http://www.oracle.com/pls/as1111/lookup?id=WLACH01853[Configure
+Messaging]" in WebLogic Server Administration Console Online Help and
+http://www.oracle.com/pls/as1111/lookup?id=WLSTC112[WebLogic Server WLST
+Online and Offline Command Reference].
+
+[[gknjj]][[GSADG00500]][[accessing-connections-and-destinations-directly]]
+
+===== Accessing Connections and Destinations Directly
+
+When configuring a MDB to consume messages from WebLogic JMS your code
+does not need to access the WebLogic JMS connection factory and
+destination directly. You simply define them in the activation
+configuration, as shown in link:#gkkwq[Configuring an MDB to Receive
+Messages from WebLogic JMS]. However when configuring an MDB to send
+messages, or when configuring a EJB, Servlet, or application client to
+either send or receive messages, your code needs to obtain these objects
+using a JNDI lookup.
+
+
+[NOTE]
+====
+If you want configure connections and destination resources using the
+Administration Console, this is explained in the Administration Console
+online help. When using Administration Console, follow the instructions
+for creating a new Connector Connection Pool and Admin Object Resources,
+and not the instructions for creating a JMS Connection Pool and
+Destination Resources. For more information about using `asadmin` to
+create these resources, see link:connectors.html#gioce[To Create a
+Connector Connection Pool] and link:connectors.html#giogt[To Create a
+Connector Resource].
+====
+
+
+1. Looking up the connection factory and destination
++
+The following code looks up a connection factory with the JNDI name
+`jms/QCFactory` and a queue with the name `jms/outboundQueue` from the
+{productName} JNDI store:
++
+[source,java]
+----
+     Context initialContect  = new InitialContext();
+     QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory)
+          jndiContext.lookup("java:comp/env/jms/MyQCFactory");
+     Queue queue = (Queue) jndiContext.lookup("java:comp/env/jms/outboundQueue");
+----
+Note that the resources used are {productName} resources, not
+WebLogic JMS resources. For every connection factory or destination that
+you want to use in the WebLogic JMS JNDI store, you need to create a
+corresponding connection factory or destination in the {productName}
+JNDI store and configure the {productName} object to point to the
+corresponding WebLogic JMS object.
+2. Declaring the connection factory and destination
++
+In accordance with standard Jakarta EE requirements, these resources need
+to be declared in the deployment descriptor for the MDB, EJB or other
+component. For example, for a session bean, configure the `ejb-jar.xml`
+with `<resource-env-ref>` elements, as follows:
++
+[source,xml]
+----
+<ejb-jar>
+  <enterprise-beans>
+    <session>
+      . . .
+      <resource-env-ref>
+        <resource-env-ref-name>jms/QCFactory</resource-env-ref-name>
+        <resource-env-ref-type>jakarta.jms.QueueConnectionFactory</resource-env-ref-type>
+      </resource-env-ref>
+      <resource-env-ref>
+        <resource-env-ref-name>jms/outboundQueue</resource-env-ref-name>
+        <resource-env-ref-type>jakarta.jms.Queue</resource-env-ref-type>
+      </resource-env-ref>
+----
+3. Create a Connector Connection Pool and Connector Resource by
+entering the following `asadmin` commands, both all in one line:
++
+In order to configure a JMS Connection Factory using GenericJMSRA, a
+Connector connection pool and resource need to be created in {productName} using names that map to the corresponding connection factory in
+the WebLogic JNDI store.
++
+[source]
+----
+asadmin create-connector-connection-pool --host localhost --port 4848
+   --raname genericra --connectiondefinition jakarta.jms.QueueConnectionFactory
+   --target server --transactionsupport LocalTransaction
+   --property ConnectionFactoryJndiName=jms/WLOutboundQueueFactory
+     qcpool
+
+asadmin create-connector-resource --host localhost --port 4848
+    --poolname qcpool --target server jms/QCFactory
+----
+These `asadmin` commands together creates a connection factory in
+{productName} and its corresponding connection pool.
+* The connection pool has the JNDI name `jms/WLoutboundQueueFactory` and
+obtains connections from a connection pool named `qcpool`.
+* The connection pool `qcpool` uses the resource adapter `genericra` and
+contains objects of type `jakarta.jms.QueueConnectionFactory`.
+* The `transactionsupport` argument is set to `LocalTransaction`, which
+specifies that the connection will be used in local transactions only.
+You can also specify `NoTransaction`. However, the default setting of
+`XATransaction` cannot be used. For more information, see
+link:#gkkvz[Limitations When Using GenericJMSRA with WebLogic JMS].
+* The connection pool is configured with the properties specified using
+the `properties` argument; multiple properties are configured as a
+colon-separated list of name-value pairs. Only one property is
+configured in this example, as follows:
++
+[source]
+----
+ConnectionFactoryJndiName=jms/WLOutboundQueueFactory
+----
+The `ConnectionFactoryJndiName` property must be set to the JNDI name of
+the corresponding connection factory in the WebLogic JMS JNDI store.
+Therefore, replace `jms/WLOutboundQueueFactory` in the example above
+with the JNDI name used in your environment.
+* For a description of the `ManagedConnectionFactory` properties that
+are relevant for WebLogic JMS, see the link:#gktfi[Configuration
+Reference of GenericJMSRA Properties for WebLogic JMS].
+4. Create a destination object that refers to a corresponding WebLogic
+JMS destination by entering the following `asadmin` command, all in one
+line:
++
+[source]
+----
+asadmin create-admin-object --host localhost --port 4848 --target server
+    --restype jakarta.jms.Queue --property DestinationJndiName=jms/WLOutboundQueue
+    --raname genericra jms/outboundQueue
+----
+This `asadmin` command creates a destination in {productName}.
+* The destination has the JNDI name `jms/outboundQueue`, uses the
+resource adapter `genericra`, and is of type `jakarta.jms.Queue`.
+* The destination is configured with the properties specified using the
+`properties` argument; multiple properties are configured as a
+colon-separated list of name-value pairs. Only one property is
+configured in this example, as follows:
++
+[source]
+----
+DestinationJndiName=jms/WLOutboundQueue
+----
+The `DestinationJndiName` property must be set to the JNDI name of the
+corresponding destination in the WebLogic JMS JNDI store. Therefore,
+replace `jms/WLOutboundQueue` in the example above with the JNDI name
+used in your environment.
+* For a description of the destination properties that are relevant for
+WebLogic JMS, see the link:#gktfi[Configuration Reference of
+GenericJMSRA Properties for WebLogic JMS].
+
+[[gkkvz]][[GSADG00681]][[limitations-when-using-genericjmsra-with-weblogic-jms]]
+
+===== Limitations When Using GenericJMSRA with WebLogic JMS
+
+Due to the nature of the WebLogic T3 Thin Client there are a number of
+limitations in the way in which it can be used with GenericJMSRA.
+
+[[gknho]][[GSADG00091]][[no-support-for-xa-transactions]]
+
+No Support for XA Transactions
+
+WebLogic JMS does not support the optional JMS "Chapter 8" interfaces
+for XA transactions in a form suitable for use outside of WebLogic
+Server. Therefore, the GenericJMSRA configuration must have the
+`SupportsXA` property set to `-false`. This has a number of implications
+for the way in which applications may be used, as described in this
+section.
+
+Using a MDB to Receive Messages: Container-managed Transactions (CMT)
+
+* If container-managed transactions are used, the transactional
+attribute of a MDB should be set to `NotSupported`. No transaction will
+be started. Messages will be received in a non-transacted session with
+an acknowledgeMode of `AUTO_ACKNOWLEDGE`.
+* A transactional `Required` attribute should not be used; otherwise,
+MDB activation will fail with an exception:
+`javax.resource.ResourceException: MDB is configured to use container managed transaction. But SupportsXA is configured to false in the resource adapter.`
+
+The remaining transactional attributes are normally considered
+inappropriate for use with a MDB. If used, the following behavior will
+occur:
+
+* If the transactional attribute is `RequiresNew`, then MDB activation
+will fail with an exception:
+`javax.resource.ResourceException: MDB is configured to use container managed transaction But SupportsXA is configured to false in the resource adapter.`
+* If the transactional attribute is `Mandatory`, the MDB can be
+activated but a `TransactionRequiredException` (or similar) will always
+be thrown by the server.
+* If the transactional attribute is `Supports`, then no transaction will
+be started and the MDB will work as if `NotSupported` had been used.
+* If the transactional attribute is `Never`, then no transaction will be
+started and the MDB will work as if `NotSupported` had been used.
+
+Using a MDB to Receive Messages: Bean-managed Transactions (BMT)
+
+* If bean-managed transactions are configured in accordance with the EJB
+specification any `UserTransaction` started by the bean will have no
+effect on the consumption of messages.
+* Messages will be received in a non-transacted session with an
+acknowledgeMode of `AUTO_ACKNOWLEDGE`.
+
+Accessing Connections and Destinations Directly - Container-managed
+Transactions (CMT)
+
+When accessing connections directly (such as when sending messages from
+a MDB or an EJB) and container-managed transactions are being used, the
+connection pool's `transaction-support` property should be set to either
+`LocalTransaction` or `NoTransaction`. If the default value of
+`XATransaction` is used, an exception will be thrown at runtime when
+`createConnection()` is called. This is the case irrespective of the
+transactional attribute of the MDB or EJB. Note that MDBs must have
+their transactional attribute set to `NotSupported` as specified above;
+whereas, an EJB can use any transactional attribute.
+
+If there is no transaction in progress within the bean method (for
+example, `notSupported` is being used) then it does not make any
+difference whether the connection pool's `transaction-support` property
+is set to `LocalTransaction` or `NoTransaction`; the transactional
+behavior will be determined by the arguments to `createSession()`. If
+you want the outbound message to be sent without a transaction, call
+`createSession(false, ...)`. If you want the outbound message to be sent
+in a local transaction call
+`createSession(true, Session.SESSION_TRANSACTED)`, remembering to call
+`session.commit()` or `session.rollback()`after the message is sent.
+
+If there is a transaction in progress within the bean method (which will
+only be possible for EJBs), then setting the connection pool's
+`transaction-support` property to `LocalTransaction` or `NoTransaction`
+gives different results:
+
+* If it is set to `NoTransaction` then a non-transacted session will be
+used.
+* If it is set to `LocalTransaction` then a (local, non-XA) transacted
+session will be used, which will be committed or rolled back when the
+`UserTransaction` is committed or rolled back. In this case, calling
+`session.commit()` or `session.rollback()` will cause an exception.
+
+No Support for Redelivery Limits and Dead Message Queue
+
+Due to the lack of XA support when using WebLogic JMS, there is no
+support for GenericJMSRA's dead message queue feature, in which a
+message that has been redelivered to a MDB a defined number of times is
+sent to a dead message queue.
+
+[[gknft]][[GSADG00092]][[limited-support-for-asynchronous-receipt-of-messages-in-a-mdb]]
+
+Limited Support for Asynchronous Receipt of Messages In a MDB
+
+WebLogic JMS does not support the optional JMS "Chapter 8" interfaces
+for "Concurrent Processing of a Subscription's Messages" (that is,
+`ServerSession`, `ServerSessionPool` and `ConnectionConsumer`) in a form
+suitable for use outside of WebLogic Server. Therefore, the generic
+JMSRA configuration must set the property `DeliveryType` to
+`Synchronous`.
+
+This affects the way in which MDBs consume messages from a queue or
+topic as follows:
+
+* When messages are being received from a queue, each MDB instance will
+have its own session and consumer, and it will consume messages by
+repeatedly calling `receive(timeout)`. This allows the use of a pool of
+MDBs to process messages from the queue.
+* When messages are being received from a topic, only one MDB instance
+will be used irrespective of the configured pool size. This means that a
+pool of multiple MDBs cannot be used to share the load of processing
+messages, which may reduce the rate at which messages can be received
+and processed.
++
+This restriction is a consequence of the semantics of synchronously
+consuming messages from topics in JMS: In the case of non-durable topic
+subscriptions, each consumer receives a copy of all the messages on the
+topic, so using multiple consumers would result in multiple copies of
+each message being received rather than allowing the load to be shared
+among the multiple MDBs. In the case of durable topic subscriptions,
+only one active consumer is allowed to exist at a time.
+
+[[gktfi]][[GSADG00682]][[configuration-reference-of-genericjmsra-properties-for-weblogic-jms]]
+
+===== Configuration Reference of GenericJMSRA Properties for WebLogic JMS
+
+The tables in this section list the properties that need to be set to
+configure the resource adapter and any activation specs, managed
+connections, and other administered objects that are relevant only when
+using GenericJMSRA to communicate with WebLogic JMS. For a complete list
+of properties, see the comprehensive table in link:#gbtvu[GenericJMSRA
+Configuration Properties]
+
+Resource Adapter Properties
+
+These properties are used to configure the resource adapter itself when
+it is deployed, and can be specified using the
+`create-resource-adapter-config` command.
+
+[width="100%",cols="28%,42%,30%",options="header",]
+|===
+|Property Name |Required Value |Description
+|`SupportsXA` |`false` a|
+Specifies whether the JMS client supports XA transactions.
+
+Set to `false` for WebLogic JMS.
+
+|`DeliveryType` |`Synchronous` a|
+Specifies whether an MDB should use a `ConnectionConsumer`
+(Asynchronous) or `consumer.receive()` (Synchronous) when consuming
+messages.
+
+Set to `Synchronous` for WebLogic JMS.
+
+|`ProviderIntegrationMode` |`jndi` a|
+Specifies that connection factories and destinations in GlassFish's JNDI
+store are configured to refer to connection factories and destinations
+in WebLogic's JNDI store.
+
+Set to `jndi` for WebLogic JMS.
+
+|`JndiProperties` a|
+[source]
+----
+java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory,
+java.naming.provider.url=t3://localhost:7001,
+java.naming.factory.url.pkgs=weblogic.corba.client.naming
+(replace localhost:7001 with the host:port of WebLogic Server)
+----
+
+ |JNDI properties for connect to WebLogic JNDI, specified as
+comma-separated list of name=value pairs without spaces.
+
+|`UserName` |`Name of the WebLogic JMS user` |User name to connect to
+WebLogic JMS. The user name can be overridden in `ActivationSpec` and
+`ManagedConnection`. If no user name is specified anonymous connections
+will be used, if permitted.
+
+|`Password` |`Password for the WebLogic JMS user` |Password to connect
+to WebLogic JMS. The password can be overridden in `ActivationSpec` and
+`ManagedConnection`.
+
+|`LogLevel` |`Desired log level of JDK logger` |Used to specify the
+level of logging.
+|===
+
+
+Connection Factory Properties
+
+`ManagedConnectionFactory` objects are created in the {productName}
+JNDI store using the Administration Console or the
+`asadmin connector-connection-pool` command. All the properties that can
+be set on a resource adapter configuration can be overridden by setting
+them on a destination object. The properties specific to
+`ManagedConnectionFactory` objects are listed in the following table.
+
+[width="100%",cols="39%,14%,10%,37%",options="header",]
+|===
+|Property Name |Valid Value |Default Value |Description
+|`ClientId` |A valid client ID |None |`ClientID` as specified by JMS 1.1
+specification.
+
+|`ConnectionFactoryJndiName` |A valid JNDI Name |None |JNDI name of
+connection factory in the {productName} JNDI store. This connection
+factory should be configured to refer to the physical connection factory
+in the WebLogic JNDI store.
+
+|`ConnectionValidationEnabled` |`true` or `false` |FALSE |If set to
+`true`, the resource adapter will use an exception listener to catch any
+connection exception and will send a `CONNECTION_ERROR_OCCURED` event to
+{productName}.
+|===
+
+
+Destination Properties
+
+Destination (queue or topic) objects are created in the {productName}
+JNDI store using the Administration Console or the
+`asadmin connector-admin-object` command. All the properties that can be
+set on a resource adapter configuration can be overridden by setting
+them on a destination object. The properties specific to destination
+objects are listed in the following table.
+
+[width="100%",cols="28%,14%,10%,48%",options="header",]
+|===
+|Property Name |Valid Value |Default Value |Description
+|`DestinationJndiName` |A valid JNDI name |None |JNDI name of the
+destination object in the {productName} JNDI store. This destination
+object should be configured to refer to the corresponding physical
+destination in the WebLogic JNDI store.
+|===
+
+
+ActivationSpec Properties
+
+An ActivationSpec is a set of properties that configures a MDB. It is
+defined either in the MDB's {productName} deployment descriptor
+`glassfish-ejb-jar.xml` using `activation-config-property` elements or
+in the MDB itself using annotation. All the resource adapter properties
+listed in the table above can be overridden in an ActivationSpec.
+Additional properties available only to a ActivationSpec are given
+below.
+
+[width="100%",cols="30%,19%,14%,37%",options="header",]
+|===
+|Property Name |Valid Value |Default Value |Description
+|`MaxPoolSize` |An integer |8 a|
+Maximum size of server session pool internally created by the resource
+adapter for achieving concurrent message delivery. This should be equal
+to the maximum pool size of MDB objects.
+
+Only used for queues; ignored for topics, when a value of 1 is always
+used.
+
+|`SubscriptionDurability` |`Durable` or `Non-Durable` |`Non-Durable`
+|Only used for topics. Specifies whether the subscription is durable or
+non-durable.
+
+|`SubscriptionName` | |None |Only used for topics when
+`SubscriptionDurability` is `Durable`. Specifies the name of the durable
+subscription.
+
+|`MessageSelector` |A valid message selector |None |JMS message
+selector.
+
+|`ClientID` |A valid client ID |None |JMS ClientID.
+
+|`ConnectionFactoryJndiName` |A valid JNDI Name |None |JNDI name of
+connection factory in the {productName} JNDI store. This connection
+factory should be configured to refer to the physical connection factory
+in the WebLogic JNDI store.
+
+|`DestinationJndiName` |A valid JNDI Name |None |JNDI name of
+destination in the {productName} JNDI store. This destination should
+be configured to refer to the physical destination in the WebLogic JNDI
+store.
+
+|`DestinationType` |`jakarta.jms.Queue` or `jakarta.jms.Topic` |Null
+|Specifies whether the configured `DestinationJndiName` refers to a
+queue or topic.
+
+|`ReconnectAttempts` |integer |0 |Number of times a reconnect will be
+attempted in case exception listener catches an error on connection.
+
+|`ReconnectInterval` |time in seconds |0 |Interval between reconnection
+attempts.
+|===
+
+
+[[gkslb]][[GSADG00779]][[using-genericjmsra-with-ibm-websphere-mq]]
+
+==== Using GenericJMSRA with IBM WebSphere MQ
+
+You can configure GenericJMSRA to enable applications running in
+{productName} to send messages to, and receive messages from, IBM
+WebSphere MQ. {productName}only supports using GenericJMSRA with
+WebSphere MQ version 6.0 and WebSphere MQ version 7.0
+
+These instructions assume that the WebSphere MQ broker and {productName} are deployed and running on the same physical host/machine. If
+you have the WebSphere MQ broker running on a different machine and need
+to access it remotely, refer to the WebSphere MQ documentation for
+configuration details. The resource adapter configuration and other
+application server related configuration remains unchanged.
+
+The following topics are addressed here:
+
+* link:#gksiw[Preliminary Setup Procedures for WebSphere MQ Integration]
+* link:#gksli[Configure the WebSphere MQ Administered Objects]
+* link:#gksni[Create a Resource Adapter Configuration for GenericJMSRA
+to Work With WebSphere MQ]
+* link:#gksnh[Deploy the GenericJMSRA Archive]
+* link:#gkson[Create the Connection Factories and Administered Objects
+in {productName}]
+* link:#gktmn[Configuring an MDB to Receive Messages from WebSphere MQ]
+
+[[gksiw]][[GSADG00683]][[preliminary-setup-procedures-for-websphere-mq-integration]]
+
+===== Preliminary Setup Procedures for WebSphere MQ Integration
+
+Before you can configure WebSphere MQ to exchange messages with
+{productName}, you must complete the following tasks:
+
+* The following permissions must be added to the `server.policy` and the
+`client.policy` file to deploy GenericJMSRA and to run the client
+application.
+
+** Use a text editor to modify the `server.policy` file in the
+`${appserver-install-dir}/domains/domain1/config/`directory by adding
+the following line to the default grant block:
++
+[source]
+----
+permission java.util.logging.LoggingPermission "control";
+permission java.util.PropertyPermission "*", "read,write";
+----
+
+** If you use an application client in your application, edit the
+client's `client.policy` file in the
+`${appserver-install-dir}/lib/appclient/` directory by adding the
+following permission:
++
+[source]
+----
+permission javax.security.auth.PrivateCredentialPermission
+"javax.resource.spi.security.PasswordCredential * \"*\"","read";
+----
+* To integrate {productName}with WebSphere MQ 6.0 or 7.0, copy the
+necessary JAR files to the as-install``/lib`` directory:
+
+** For WebSphere MQ 6.0, copy these JAR files to the as-install``/lib``
+directory:
++
+[source]
+----
+/opt/mqm/java/lib/com.ibm.mq.jar
+/opt/mqm/java/lib/com.ibm.mq.jms.Nojndi.jar
+/opt/mqm/java/lib/com.ibm.mq.soap.jar
+/opt/mqm/java/lib/com.ibm.mqjms.jar
+/opt/mqm/java/lib/com.ibm.mqetclient.jar
+/opt/mqm/java/lib/commonservices.jar
+/opt/mqm/java/lib/dhbcore.jar
+/opt/mqm/java/lib/rmm.jar
+/opt/mqm/java/lib/providerutil.jar
+/opt/mqm/java/lib/CL3Export.jar
+/opt/mqm/java/lib/CL3Nonexport.jar
+----
+where `/opt/mqm` is the location of the WebSphere MQ 6.0 installation.
+
+** For WebSphere MQ 7.0, copy these JAR files to the as-install``/lib``
+directory:
++
+[source]
+----
+/opt/mqm/java/lib/com.ibm.mq.jar,
+/opt/mqm/java/lib/com.ibm.mq.jms.Nojndi.jar,
+/opt/mqm/java/lib/com.ibm.mq.soap.jar,
+/opt/mqm/java/lib/com.ibm.mqjms.jar,
+/opt/mqm/java/lib/com.ibm.mq.jmqi.jar,
+/opt/mqm/java/lib/com.ibm.mq.commonservices.jar,
+/opt/mqm/java/lib/dhbcore.jar,
+/opt/mqm/java/lib/rmm.jar,
+/opt/mqm/java/lib/providerutil.jar,
+/opt/mqm/java/lib/CL3Export.jar,
+/opt/mqm/java/lib/CL3Nonexport.jar
+----
+where `/opt/mqm` is the location of the WebSphere MQ 7.0 installation.
+* Set the `LD_LIBRARY_PATH` environment variable to the `java/lib`
+directory, and then restart {productName}. For example, in a
+UNIX—based system, with WebSphere MQ installed under `/opt/mqm`, you
+would enter:
++
+[source]
+----
+$ export LD_LIBRARY_PATH=/opt/mqm/java/lib
+----
+
+[[gksli]][[GSADG00501]][[configure-the-websphere-mq-administered-objects]]
+
+===== Configure the WebSphere MQ Administered Objects
+
+This section provides an example of how you could configure the
+necessary administered objects, such as destinations and connection
+factories, on the WebSphere MQ instance from which you want to access
+messages using {productName}. Therefore, you will need to change the
+administered object names to suit your installation.
+
+[[GSADG1028]]
+
+Before You Begin
+
+If WebSphere MQ created a user and a group named `mqm` during the
+installation, then you must specify a password for the `mqm` user using
+the `$ passwd mqm` command.
+
+image:img/websphere-mq.png[
+"This graphic represents all of the administered objects created in this
+example configuration."]
+
+
+1. Switch to the `mqm` user: +
+`$ su mqm`
+
+2. For Linux, set the following kernel version: +
+`$ export LD_ASSUME_KERNEL=2.2.5`
+
+3. Create a new MQ queue manager named "QM1": +
+`$ crtmqm QM1`
+
+4. Start the new MQ queue manager. +
+In the image above, `QM1` is associated with the IBM WebSphere MQ broker. +
+`$ strmqm QM1`
+
+5. Start the MQ listener: +
+`$ runmqlsr -t tcp -m QM1 -p 1414 &`
+
+6. Modify the default JMSAdmin console configuration as follows:
+[arabic]
+.. Edit the JMSAdmin script in the `/opt/mqm/java/bin` directory to
+   change the JVM to a location of a valid JVM your system.
+.. Set the relevant environment variable required for JMSAdmin by
+   sourcing the `setjmsenv` script located in the `/opt/mqm/java/bin` directory.
++
+[source]
+----
+$ cd /opt/mqm/java/bin
+$ source setjmsenv
+----
+where `/opt/mqm` is the location of the WebSphere MQ installation.
+.. Change the JMSAdmin.config file to indicate the Initial Context Factory
+   you will be using by setting the following name-value pairs and
+   commenting out the rest:
++
+[source]
+----
+INITIAL_CONTEXT_FACTORY=com.sun.jndi.fscontext.RefFSContextFactory
+PROVIDER_URL=file:/opt/tmp
+----
+
+7. Create WebSphere MQ queues using the runmqsc console and MQJMS_PSQ.mqsc script. +
+`$ runmqsc QM1 < MQJMS_PSQ.mqsc`
+
+8. Create user defined physical queue for your application using
+runmqsc console and an appropriate physical queue name. An example of
+how this could be done is shown below. +
+In the image above, `ORANGE.LOCAL.QUEUE` is associated with `QM1`.
++
+[source]
+----
+     $ runmqsc QM1
+             > DEFINE QLOCAL(ORANGE.LOCAL.QUEUE)
+             > end
+----
+
+9. Start the WebSphere MQ Broker: +
+`$ strmqbrk -m QM1`
+
+10. In the WebSphere MQ JMSAdmin console, use the following commands to
+create the connection factories, XA connection factories, and
+destinations for your application, as shown in the following sample,
+which lists each of the various JMS administered objects. +
+In the image above, `QCF` (for `QM1`) and `TQueue` (associated with
+`ORANGE.LOCAL.QUEUE`) are defined in the `FileSystem Naming Context`.
++
+[source]
+----
+$ ./JMSAdmin
+
+   InitCtx>def qcf<JNDI name to be given to the Queue Connection Factory>
+     hostname<IBM MQ server hostname> port(1414) channel(SYSTEM.DEF.SVRCONN)
+     transport(CLIENT) qmanager<name of queue manager defined>
+
+     For example:
+     def qcf(QCF) hostname(localhost) port(1414) channel(SYSTEM.DEF.SVRCONN)
+      transport(CLIENT) qmanager(QM1)
+
+   InitCtx%def xaqcf<JNDI name to be given to the XA Queue Connection Factory>
+     hostname<IBM MQ server hostname> port(1414) channel(SYSTEM.DEF.SVRCONN)
+     transport(CLIENT) qmanager<name of queue manager defined>
+
+     For example:
+     def xaqcf(XAQCF) hostname(localhost) port(1414) channel(SYSTEM.DEF.SVRCONN)
+     transport(CLIENT) qmanager(QM1)
+
+   InitCtx%def q<JNDI Name to be given to the Queue> queue<physical queue name>
+     qmanager(name of queue manager defined )
+
+     For example: def q(TQueue) queue(ORANGE.LOCAL.QUEUE) qmanager(QM1)
+
+   InitCtx%def tcf<JNDI Name to be given to the Topic Connection Factory>
+     qmanager(name of queue manager defined )
+
+     For example: def tcf(TCF) qmanager(QM1)
+
+   InitCtx%def xatcf<JNDI Name to be given to the  XA Topic Connection Factory>
+     qmanager(name of queue manager defined )
+
+     For example: def xatcf(XATCF) qmanager(QM1)
+
+   InitCtx%def t<JNDI Name to be given to the Topic> topic<sample topic name>
+
+     For example: def t(TTopic) topic(topic)
+----
+
+[[gksni]][[GSADG00684]][[create-a-resource-adapter-configuration-for-genericjmsra-to-work-with-websphere-mq]]
+
+===== Create a Resource Adapter Configuration for GenericJMSRA to Work With WebSphere MQ
+
+Before deploying GenericJMSRA, you need to create a resource adapter
+configuration in {productName}. You can do this using either the
+Administration Console or the `asadmin` command. Use the following
+`asadmin` command to create a resource adapter configuration for
+`genericra` to configure it to work with WebSphere MQ.
+
+[source]
+----
+                     asadmin> create-resource-adapter-config
+                       --user <adminname> --password <admin password>
+                       --property SupportsXA=true:ProviderIntegrationMode
+                       =jndi:UserName=mqm:Password=###:RMPolicy
+                       =OnePerPhysicalConnection:JndiProperties
+                       =java.naming.factory.url.pkgs\\
+                       =com.ibm.mq.jms.naming,java.naming.factory.initial\\
+                       =com.sun.jndi.fscontext.RefFSContextFactory,java.naming.provider.url\\
+                       =file\\:\\/\\/opt\\/tmp:LogLevel=finest genericra
+----
+
+
+[NOTE]
+====
+When using `asadmin` you need to escape each `=` and any `:` characters
+by prepending a backward slash `\`. The escape sequence is not necessary
+if the configuration is performed through the Administration Console.
+Also , ensure that the provider URL is configured correctly depending on
+the platform. For example, on Windows systems it should be
+`file:/C:/opt/tmp` and on UNIX—based systems it is `file://opt/tmp`.
+====
+
+
+This creates a resource adapter configuration with the name `genericra`,
+and Oracle recommends not changing the default name. The resource
+adapter configuration is configured with the properties specified using
+the `--properties` argument; multiple properties are configured as a
+colon-separated list of name-value pairs that are entered as a single
+line.
+
+In this example, the following properties are configured:
+
+
+[NOTE]
+====
+The tables in this section describe the GenericJMSRA properties that are
+relevant only when integrating with WebSphere MQ. For a complete list of
+properties, see the comprehensive table in link:#gbtvu[GenericJMSRA
+Configuration Properties].
+====
+
+
+[width="100%",cols="25%,45%,30%",options="header",]
+|===
+|Property Name |Required Value |Description
+|`SupportsXA`
+|`true`
+|Set the supports distributed transactions attribute to `true`.
+The level of transactional support the adapter provides
+-- none, local, or XA -- depends on the capabilities of the
+Enterprise Information System (EIS) being adapted. If an adapter
+supports XA transactions and this attribute is XA, the application can
+use distributed transactions to coordinate the EIS resource with JDBC
+and JMS resources.
+
+|`ProviderIntegrationMode`
+|`jndi`
+|Specifies that connection factories
+and destinations in GlassFish's JNDI store are configured to refer to
+connection factories and destinations in WebSphere MQ's JNDI store.
+
+|`JndiProperties`
+a|
+[source]
+----
+JndiProperties=java.naming.factory.url.pkgs\\=com.ibm.mq.jms.naming,
+java.naming.factory.initial\\=com.sun.jndi.fscontext.RefFSContextFactory,
+java.naming.provider.url\\=file\\:\\/\\/opt\\/tmp:LogLevel=finest genericra
+----
+|JNDI properties for connecting to WebSphere MQ's JNDI, specified as
+comma-separated list of name=value pairs without spaces.
+
+|`UserName`
+|`Name of the WebSphere MQ user`
+a|
+User name to connect to WebSphere MQ.
+The user name can be overridden in `ActivationSpec` and
+`ManagedConnection`. If no user name is specified anonymous connections
+will be used, if permitted.
+
+|`Password`
+|`Password for the WebSphere MQ user`
+a|
+Password to connect to WebSphere MQ.
+The password can be overridden in `ActivationSpec` and
+`ManagedConnection`.
+
+|`RMIPolicy`
+|`OnePerPhysicalConnection`
+a|
+Some XAResource implementations, such as WebSphere MQ, rely on a
+Resource Manager per Physical Connection, and this causes issues when
+there is inbound and outbound communication to the same queue manager in
+a single transaction (for example, when an MDB sends a response to a
+destination).
+
+When RMPolicy is set to `OnePerPhysicalConnection`, the XAResource
+wrapper implementation's `isSameRM` in GenericJMSRA would check if both
+the XAResources use the same physical connection, before delegating to
+the wrapped objects. Therefore, ensure that this attribute is set to
+`OnePerPhysicalConnection` if the application uses XA.
+
+|`LogLevel`
+|`Desired log level of JDK logger`
+|Used to specify the level of logging.
+|===
+
+
+
+[NOTE]
+====
+You must use the values for `SupportsXA`, `RMPolicy` and
+`ProviderIntegrationMode` as the required values that are used in this
+table.
+====
+
+
+[[gksnh]][[GSADG00685]][[deploy-the-genericjmsra-archive]]
+
+===== Deploy the GenericJMSRA Archive
+
+For instructions on downloading and deploying GenericJMSRA, see
+link:#gkkxz[Deploy the GenericJMSRA Resource Archive].
+
+[[gkson]][[GSADG00686]][[create-the-connection-factories-and-administered-objects-in-glassfish-server]]
+
+===== Create the Connection Factories and Administered Objects in {productName}
+
+In order to configure a JMS Connection Factory using GenericJMSRA, a
+Connector Connection Pool and resource needs to be created in {productName}, as described in this section.
+
+Using the example WebSphere MQ configuration in link:#gksli[Configure
+the WebSphere MQ Administered Objects], you will see `mypool` (pointing
+to `GenericJMSRA` and `QCF`) and `jms/MyQCF` (for `mypool`) created in
+{productName}.
+
+
+[NOTE]
+====
+If you want configure connections and destination resources using the
+Administration Console, this is explained in the Administration Console
+online help. When using Administration Console, following the,
+instructions for creating a new Connector Connection Pool and Admin
+Object Resources, and not the instructions for creating a JMS Connection
+Pool and Destination Resources. For more information about using
+`asadmin` to create these resources, see link:connectors.html#gioce[To
+Create a Connector Connection Pool] and link:connectors.html#giogt[To
+Create a Connector Resource].
+====
+
+
+[[gksro]][[GSADG00502]][[creating-connections-and-destinations]]
+
+Creating Connections and Destinations
+
+In order to configure a JMS Connection Factory, using GenericJMSRA, a
+Connector Connection Pool and Destination resources need to be created
+in {productName} using names that map to the corresponding connection
+and destination resources in WebSphere MQ. The connections and
+destination name in these steps map to the example WebSphere MQ
+configuration in link:#gksli[Configure the WebSphere MQ Administered
+Objects].
+
+1. Create connection pools that point to the connection pools in
+WebSphere MQ.
++
+The following `asadmin` command creates a Connection Pool called
+`mypool` and points to the `XAQCF` created in WebSphere MQ:
++
+[source]
+----
+     asadmin create-connector-connection-pool -- raname genericra connectiondefinition
+            jakarta.jms.QueueConnectionFactory --transactionsupport  XATransaction
+            --property ConnectionFactoryJndiName=QCF mypool
+----
+The following `asadmin` command creates a Connection Pool called
+`mypool2` and points to the `XATCF` created in WebSphere MQ:
++
+[source]
+----
+     asadmin create-connector-connection-pool
+            -- raname genericra connectiondefinition jakarta.jms.TopicConnectionFactory
+            --transactionsupport  XATransaction
+            --property ConnectionFactoryJndiName=XATCF mypool2
+----
+2. Create the connector resources.
++
+The following `asadmin` command creates a connector resource named
+`jms/MyQCF` and binds this resource to JNDI for applications to use:
++
+[source]
+----
+     asadmin create-connector-resource --poolname mypool jms/MyQCF
+----
+The following `asadmin` command creates a connector resource named
+`jms/MyTCF` and binds this resource to JNDI for applications to use:
++
+[source]
+----
+     asadmin create-connector-resource --poolname mypool2 jms/MyTCF
+----
+3. Create the JMS destination resources as administered objects.
++
+In the image above, `jms/MyQueue` (pointing to `GenericJMSRA` and
+`TQueue`) is created in {productName}.
++
+The following `asadmin` command creates a `jakarta.jms.Queue` administered
+object and binds it to the {productName} JNDI tree at `jms/MyQueue`
+and points to the `jms/TQueue` created in WebSphere MQ.
++
+[source]
+----
+     asadmin create-admin-object --raname genericra --restype jakarta.jms.Queue
+            --property DestinationJndiName=TQueue jms/MyQueue
+----
+The following `asadmin` command creates a `jakarta.jms.Topic` administered
+object and binds it to the {productName} JNDI tree at `jms/MyTopic`
+and points to the `jms/TTopic` created in WebSphere MQ.
++
+[source]
+----
+     asadmin create-admin-object --raname genericra --restype jakarta.jms.Topic
+            --property DestinationJndiName=TTopic jms/MyTopic
+----
+
+[[gktmn]][[GSADG00687]][[configuring-an-mdb-to-receive-messages-from-websphere-mq]]
+
+===== Configuring an MDB to Receive Messages from WebSphere MQ
+
+The administered object names in the sample deployment descriptor below
+map to the example WebSphere MQ configuration in link:#gksli[Configure
+the WebSphere MQ Administered Objects]. The deployment descriptors need
+to take into account the resource adapter and the connection resources
+that have been created. A sample `sun-ejb-jar.xml` for a Message Driven
+Bean that listens to a destination called `TQueue` in WebSphere MQ, and
+publishes back reply messages to a destination resource named
+`jms/replyQueue` in {productName}, as shown below.
+
+[source,xml]
+----
+       <sun-ejb-jar>
+         <enterprise-beans>
+         <unique-id.1</unique-id>
+         <ejb>
+            <ejb-name>SimpleMessageEJB</ejb-name>
+            <jndi-name>jms/SampleQueue</jndi-name>
+             <!-- QCF used to publish reply messages -->
+            <resource-ref>
+               <res-ref-name>jms/MyQueueConnectionFactory</res-ref-name>
+               <jndi-name>jms/MyQCF</jndi-name>
+               <default-resource-principal>
+                  <name>mqm</name>
+                  <password>mqm</password>
+               </default-resource-principal>
+            </resource-ref>
+            <!-- reply destination resource> Creating of this replyQueue destination resource is not
+                 shown above, but the steps are similar to creating the  "jms/MyQueue" resource -->
+            <resource-env-ref>
+               <resource-env-ref-name>jms/replyQueue</resource-env-ref-name>
+               <jndi-name>jms/replyQueue</jndi-name>
+            </resource-env-ref>
+
+            <!-- Activation related RA specific configuration for this MDB -->
+            <mdb-resource-adapter>
+            <!-- resource-adapter-mid points to the Generic Resource Adapter for JMS -->
+            <resource-adapter-mid>genericra</resource-adapter-mid>
+            <activation-config>
+               <activation-config-property>
+                  <activation-config-property-name>DestinationType</activation-config-property-name>
+                  <activation-config-property-value>javax>jms>Queue</activation-config-property-value>
+               </activation-config-property>
+               <activation-config-property>
+                  <activation-config-property-name>ConnectionFactoryJndiName</activation-config-property-name>
+                  <activation-config-property-value>QCF</activation-config-property-value>
+               </activation-config-property>
+               <activation-config-property>
+                  <activation-config-property-name>DestinationJndiName</activation-config-property-name>
+                  <activation-config-property-value>TQueue</activation-config-property-value>
+               </activation-config-property>
+               <activation-config-property>
+                  <activation-config-property-name>MaxPoolSize</activation-config-property-name>
+                  <activation-config-property-value>32</activation-config-property-value>
+               </activation-config-property>
+               <activation-config-property>
+                  <activation-config-property-name>RedeliveryAttempts</activation-config-property-name>
+                  <activation-config-property-value>0</activation-config-property-value>
+               </activation-config-property>
+               <activation-config-property>
+                  <activation-config-property-name>ReconnectAttempts</activation-config-property-name>
+                  <activation-config-property-value>4</activation-config-property-value>
+               </activation-config-property>
+               <activation-config-property>
+                  <activation-config-property-name>ReconnectInterval</activation-config-property-name>
+                  <activation-config-property-value>10</activation-config-property-value>
+               </activation-config-property>
+               <activation-config-property>
+                  <activation-config-property-name>RedeliveryInterval</activation-config-property-name>
+                  <activation-config-property-value>1</activation-config-property-value>
+               </activation-config-property>
+               <activation-config-property>
+                  <activation-config-property-name>SendBadMessagesToDMD</activation-config-property-name>
+                  <activation-config-property-value>false</activation-config-property-value>
+               </activation-config-property>
+            </activation-config>
+          </mdb-resource-adapter>
+          </ejb>
+          </enterprise-beans>
+       </sun-ejb-jar>
+----
+
+The business logic encoded in Message Driven Bean could then lookup the
+configured `QueueConnectionFactory/Destination` resource to create a
+connection as shown below.
+
+[source,java]
+----
+             Context context = null;
+             ConnectionFactory connectionFactory = null;
+             logger.info("In PublisherBean>ejbCreate()");
+             try {
+                 context = new InitialContext();
+                 queue = (javax.jms.Queue) context.lookup ("java:comp/env/jms/replyQueue");
+                 connectionFactory = (ConnectionFactory) context>lookup("java:comp/env/jms/MyQueueConnectionFactory");
+                 connection = connectionFactory>createConnection();
+             } catch (Throwable t) {
+                 logger.severe("PublisherBean>ejbCreate:" + "Exception: " + t.toString());
+             }
+----
+
+
diff --git a/docs/administration-guide/src/main/asciidoc/jndi.adoc b/docs/administration-guide/src/main/asciidoc/jndi.adoc
new file mode 100644
index 0000000..ffa5968
--- /dev/null
+++ b/docs/administration-guide/src/main/asciidoc/jndi.adoc
@@ -0,0 +1,545 @@
+type=page
+status=published
+title=Administering the Java Naming and Directory Interface (JNDI) Service
+next=transactions.html
+prev=jms.html
+~~~~~~
+
+= Administering the Java Naming and Directory Interface (JNDI) Service
+
+[[GSADG00021]][[ablky]]
+
+
+[[administering-the-java-naming-and-directory-interface-jndi-service]]
+== 18 Administering the Java Naming and Directory Interface (JNDI) Service
+
+The Java Naming and Directory Interface (JNDI) API is used for accessing
+different kinds of naming and directory services. Jakarta EE components
+locate objects by invoking the JNDI lookup method.
+
+The following topics are addressed here:
+
+* link:#ggjue[About JNDI]
+* link:#gglpq[Administering JNDI Resources]
+
+Instructions for accomplishing the tasks in this chapter by using the
+Administration Console are contained in the Administration Console
+online help.
+
+[[ggjue]][[GSADG00603]][[about-jndi]]
+
+=== About JNDI
+
+By making calls to the JNDI API, applications locate resources and other
+program objects. A resource is a program object that provides
+connections to systems, such as database servers and messaging systems.
+A JDBC resource is sometimes referred to as a data source. Each resource
+object is identified by a unique, people-friendly name, called the JNDI
+name. A resource object and its JNDI name are bound together by the
+naming and directory service, which is included with the {productName}.
+
+When a new name-object binding is entered into the JNDI, a new resource
+is created.
+
+The following topics are addressed here:
+
+* link:#abllb[Jakarta EE Naming Environment]
+* link:#gglpg[How the Naming Environment and the Container Work
+Together]
+* link:#abllc[Naming References and Binding Information]
+
+[[abllb]][[GSADG00780]][[java-ee-naming-environment]]
+
+==== Jakarta EE Naming Environment
+
+JNDI names are bound to their objects by the naming and directory
+service that is provided by a Jakarta EE server. Because Jakarta EE components
+access this service through the JNDI API, the object usually uses its
+JNDI name. For example, the JNDI name of the Apache Derby database is
+`jdbc/_default`. At startup, the {productName} reads information from
+the configuration file and automatically adds JNDI database names to the
+name space, one of which is `jdbc/_default`.
+
+Jakarta EE application clients, enterprise beans, and web components must
+have access to a JNDI naming environment.
+
+The application component's naming environment is the mechanism that
+allows customization of the application component's business logic
+during deployment or assembly. This environment allows you to customize
+the application component without needing to access or change the source
+code off the component. A Jakarta EE container implements the provides the
+environment to the application component instance as a JNDI naming
+context.
+
+[[gglpg]][[GSADG00781]][[how-the-naming-environment-and-the-container-work-together]]
+
+==== How the Naming Environment and the Container Work Together
+
+The application component's environment is used as follows:
+
+* The application component's business methods access the environment
+using the JNDI interfaces. In the deployment descriptor, the application
+component provider declares all the environment entries that the
+application component expects to be provided in its environment at
+runtime.
+* The container provides an implementation of the JNDI naming context
+that stores the application component environment. The container also
+provides the tools that allow the deployer to create and manage the
+environment of each application component.
+* A deployer uses the tools provided by the container to initialize the
+environment entries that are declared in the application component's
+deployment descriptor. The deployer sets and modifies the values of the
+environment entries.
+* The container makes the JNDI context available to the application
+component instances at runtime. These instances use the JNDI interfaces
+to obtain the values of the environment entries.
+
+Each application component defines its own set of environment entries.
+All instances of an application component within the same container
+share the same environment entries. Application component instances are
+not allowed to modify the environment at runtime.
+
+[[abllc]][[GSADG00782]][[naming-references-and-binding-information]]
+
+==== Naming References and Binding Information
+
+A resource reference is an element in a deployment descriptor that
+identifies the component's coded name for the resource. For example,
+`jdbc/SavingsAccountDB`. More specifically, the coded name references a
+connection factory for the resource.
+
+The JNDI name of a resource and the resource reference name are not the
+same. This approach to naming requires that you map the two names before
+deployment, but it also decouples components from resources. Because of
+this decoupling, if at a later time the component needs to access a
+different resource, the name does not need to change. This flexibility
+makes it easier for you to assemble Jakarta EE applications from
+preexisting components.
+
+The following table lists JNDI lookups and their associated resource
+references for the Jakarta EE resources used by the {productName}.
+
+[[GSADG1029]][[sthref87]][[fxizy]]
+
+
+Table 18-1 JNDI Lookup Names and Their Associated References
+
+[width="100%",cols="38%,62%",options="header",]
+|===
+|JNDI Lookup Name |Associated Resource Reference
+|`java:comp/env` |Application environment entries
+
+|`java:comp/env/jdbc` |JDBC DataSource resource manager connection
+factories
+
+|`java:comp/env/ejb` |EJB References
+
+|`java:comp/UserTransaction` |UserTransaction references
+
+|`java:comp/env/mail` |JavaMail Session Connection Factories
+
+|`java:comp/env/url` |URL Connection Factories
+
+|`java:comp/env/jms` |JMS Connection Factories and Destinations
+
+|`java:comp/ORB` |ORB instance shared across application components
+|===
+
+
+[[gglpq]][[GSADG00604]][[administering-jndi-resources]]
+
+=== Administering JNDI Resources
+
+Within {productName}, you can configure your environment for custom
+and external JNDI resources. A custom resource accesses a local JNDI
+repository; an external resource accesses an external JNDI repository.
+Both types of resources need user-specified factory class elements, JNDI
+name attributes, and so on.
+
+* link:#ablle[Administering Custom JNDI Resources]
+* link:#gitxz[Administering External JNDI Resources]
+
+[[ablle]][[GSADG00783]][[administering-custom-jndi-resources]]
+
+==== Administering Custom JNDI Resources
+
+A custom resource specifies a custom server-wide resource object factory
+that implements the `javax.naming.spi.ObjectFactory` interface.
+
+The following topics are addressed here:
+
+* link:#giowe[To Create a Custom JNDI Resource]
+* link:#gioxb[To List Custom JNDI Resources]
+* link:#giwlk[To Update a Custom JNDI Resource]
+* link:#gioxl[To Delete a Custom JNDI Resource]
+
+[[giowe]][[GSADG00503]][[to-create-a-custom-jndi-resource]]
+
+===== To Create a Custom JNDI Resource
+
+Use the `create-custom-resource` subcommand in remote mode to create a
+custom resource.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Create a custom resource by using the
+link:reference-manual/create-custom-resource.html#GSRFM00022[`create-custom-resource`] subcommand.
++
+Information on properties for the subcommand is contained in this help
+page.
+3. Restart {productName}.
++
+See link:domains.html#ginqj[To Restart a Domain].
+
+[[GSADG00284]][[gioyi]]
+Example 18-1 Creating a Custom Resource
+
+This example creates a custom resource named `sample-custom-resource`.
+
+[source]
+----
+asadmin> create-custom-resource --restype topic --factoryclass com.imq.topic
+sample_custom_resource
+Command create-custom-resource executed successfully.
+----
+
+[[GSADG1030]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-custom-resource` at the command line.
+
+[[gioxb]][[GSADG00504]][[to-list-custom-jndi-resources]]
+
+===== To List Custom JNDI Resources
+
+Use the `list-custom-resources` subcommand in remote mode to list the
+existing custom resources.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the custom resources by using the
+link:reference-manual/list-custom-resources.html#GSRFM00162[`list-custom-resources`] subcommand.
+
+[[GSADG00285]][[gioyr]]
+Example 18-2 Listing Custom Resources
+
+This example lists the existing custom resources.
+
+[source]
+----
+asadmin> list-custom-resources
+sample_custom_resource01
+sample_custom_resource02
+Command list-custom-resources executed successfully
+----
+
+[[GSADG1031]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-custom-resources` at the command line.
+
+[[giwlk]][[GSADG00505]][[to-update-a-custom-jndi-resource]]
+
+===== To Update a Custom JNDI Resource
+
+1. List the custom resources by using the
+link:reference-manual/list-custom-resources.html#GSRFM00162[`list-custom-resources`] subcommand.
+2. Use the link:reference-manual/set.html#GSRFM00226[`set`] subcommand to modify a custom JNDI
+resource.
+
+[[GSADG00286]][[giwkg]]
+Example 18-3 Updating a Custom JNDI Resource
+
+This example modifies a custom resource.
+
+[source]
+----
+asadmin> set server.resources.custom-resource.custom
+/my-custom-resource.property.value=2010server.resources.custom-resource.custom
+/my-custom-resource.property.value=2010
+----
+
+[[gioxl]][[GSADG00506]][[to-delete-a-custom-jndi-resource]]
+
+===== To Delete a Custom JNDI Resource
+
+Use the `delete-custom-resource` subcommand in remote mode to delete a
+custom resource.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the custom resources by using the
+link:reference-manual/list-custom-resources.html#GSRFM00162[`list-custom-resources`] subcommand.
+3. Delete a custom resource by using the
+link:reference-manual/delete-custom-resource.html#GSRFM00074[`delete-custom-resource`] subcommand.
+
+[[GSADG00287]][[gioxh]]
+Example 18-4 Deleting a Custom Resource
+
+This example deletes a custom resource named `sample-custom-resource`.
+
+[source]
+----
+asadmin> delete-custom-resource sample_custom_resource
+Command delete-custom-resource executed successfully.
+----
+
+[[GSADG1032]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-custom-resource` at the command line.
+
+[[gitxz]][[GSADG00784]][[administering-external-jndi-resources]]
+
+==== Administering External JNDI Resources
+
+Applications running on {productName} often require access to
+resources stored in an external JNDI repository. For example, generic
+Java objects might be stored in an LDAP server according to the Java
+schema. External JNDI resource elements let you configure such external
+resource repositories.
+
+The following topics are addressed here:
+
+* link:#gitxn[To Register an External JNDI Resource]
+* link:#gitvj[To List External JNDI Resources]
+* link:#gitwc[To List External JNDI Entries]
+* link:#giwnr[To Update an External JNDI Resource]
+* link:#gitvt[To Delete an External JNDI Resource]
+* link:#abllk[Example of Using an External JNDI Resource]
+* link:#gknaf[To Disable {productName} v2 Vendor-Specific JNDI Names]
+
+[[gitxn]][[GSADG00507]][[to-register-an-external-jndi-resource]]
+
+===== To Register an External JNDI Resource
+
+Use the `create-jndi-resource` subcommand in remote mode to register an
+external JNDI resource.
+
+[[GSADG1033]]
+
+Before You Begin
+
+The external JNDI factory must implement the
+`javax.naming.spi.InitialContextFactory` interface.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Register an external JNDI resource by using the
+link:reference-manual/create-jndi-resource.html#GSRFM00041[`create-jndi-resource`] subcommand.
++
+Information on properties for the subcommand is contained in this help
+page.
+3. Restart {productName}.
++
+See link:domains.html#ginqj[To Restart a Domain].
+
+[[GSADG00288]][[giwcx]]
+Example 18-5 Registering an External JNDI Resource
+
+In This example `sample_jndi_resource` is registered.
+
+[source]
+----
+asadmin> create-jndi-resource --jndilookupname sample_jndi
+--restype queue --factoryclass sampleClass --description "this is a sample jndi
+resource" sample_jndi_resource
+Command create-jndi-resource executed successfully
+----
+
+[[GSADG1034]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-jndi-resource` at the command line.
+
+[[gitvj]][[GSADG00508]][[to-list-external-jndi-resources]]
+
+===== To List External JNDI Resources
+
+Use the `list-jndi-resources` subcommand in remote mode to list all
+existing JNDI resources.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the existing JNDI resources by using
+theolink:GSRFM00179[`list-jndi-resources`] subcommand.
+
+[[GSADG00289]][[giwbe]]
+Example 18-6 Listing JNDI Resources
+
+This example lists the JNDI resources.
+
+[source]
+----
+asadmin> list-jndi-resources
+jndi_resource1
+jndi_resource2
+jndi_resource3
+Command list-jndi-resources executed successfully
+----
+
+[[GSADG1035]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-jndi-resources` at the command line.
+
+[[gitwc]][[GSADG00509]][[to-list-external-jndi-entries]]
+
+===== To List External JNDI Entries
+
+Use the `list-jndi-entries` subcommand in remote mode to browse and list
+the entries in the JNDI tree. You can either list all entries, or you
+can specify the JNDI context or subcontext to list specific entries.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the JNDI entries for a configuration by using the
+link:reference-manual/list-jndi-entries.html#GSRFM00178[`list-jndi-entries`] subcommand.
+
+[[GSADG00290]][[giwal]]
+Example 18-7 Listing JNDI Entries
+
+This example lists all the JNDI entries for the naming service.
+
+[source]
+----
+asadmin> list-jndi-entries
+jndi_entry03
+jndi_entry72
+jndi_entry76
+Command list-jndi-resources executed successfully
+----
+
+[[GSADG1036]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-jndi-entries` at the command line.
+
+[[giwnr]][[GSADG00510]][[to-update-an-external-jndi-resource]]
+
+===== To Update an External JNDI Resource
+
+1. List the existing JNDI resources by using
+theolink:GSRFM00179[`list-jndi-resources`] subcommand.
+2. Use the link:reference-manual/set.html#GSRFM00226[`set`] subcommand to modify an external
+JNDI resource.
+
+[[GSADG00291]][[giwoa]]
+Example 18-8 Updating an External JNDI Resource
+
+This example modifies an external resource.
+
+[source]
+----
+asadmin> set server.resources.external-jndi-resource.my-jndi-resource.
+jndi-lookup-name=bar server.resources.external-jndi-resource.my-jndi-resource.jndi-lookup-name=bar
+----
+
+[[gitvt]][[GSADG00511]][[to-delete-an-external-jndi-resource]]
+
+===== To Delete an External JNDI Resource
+
+Use the `delete-jndi-resource` subcommand in remote mode to remove a
+JNDI resource.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Remove an external JNDI entry by using the
+link:reference-manual/delete-jndi-resource.html#GSRFM00093[`delete-jndi-resource`] subcommand.
+
+[[GSADG00292]][[giwby]]
+Example 18-9 Deleting an External JNDI Resource
+
+This example deletes an external JNDI resource:
+
+[source]
+----
+asadmin> delete-jndi-resource jndi_resource2
+Command delete-jndi-resource executed successfully.
+----
+
+[[GSADG1037]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-jndi-resource` at the command line.
+
+[[abllk]][[GSADG00688]][[example-of-using-an-external-jndi-resource]]
+
+===== Example of Using an External JNDI Resource
+
+[source,xml]
+----
+<resources>
+ <!-- external-jndi-resource element specifies how to access Jakarta EE resources
+ -- stored in an external JNDI repository. This example
+ -- illustrates how to access a java object stored in LDAP.
+ -- factory-class element specifies the JNDI InitialContext factory that
+ -- needs to be used to access the resource factory. property element
+ -- corresponds to the environment applicable to the external JNDI context
+ -- and jndi-lookup-name refers to the JNDI name to lookup to fetch the
+ -- designated (in this case the java) object.
+ -->
+  <external-jndi-resource jndi-name="test/myBean"
+      jndi-lookup-name="cn=myBean"
+      res-type="test.myBean"
+      factory-class="com.sun.jndi.ldap.LdapCtxFactory">
+    <property name="PROVIDER-URL" value="ldap://ldapserver:389/o=myObjects" />
+    <property name="SECURITY_AUTHENTICATION" value="simple" />
+    <property name="SECURITY_PRINCIPAL", value="cn=joeSmith, o=Engineering" />
+    <property name="SECURITY_CREDENTIALS" value="changeit" />
+  </external-jndi-resource>
+</resources>
+----
+
+[[gknaf]][[GSADG00512]][[to-disable-glassfish-server-v2-vendor-specific-jndi-names]]
+
+===== To Disable {productName} v2 Vendor-Specific JNDI Names
+
+The EJB 3.1 specification supported by {productName} 7 defines
+portable EJB JNDI names. Because of this, there is less need to continue
+to use older vendor-specific JNDI names.
+
+By default, {productName} v2-specific JNDI names are applied
+automatically by {productName} 7 for backward compatibility.
+However, this can lead to some ease-of-use issues. For example,
+deploying two different applications containing a Remote EJB component
+that exposes the same remote interface causes a conflict between the
+default JNDI names.
+
+The default handling of v2-specific JNDI names in {productName} 7
+can be managed with the `asadmin` command or with the
+`disable-nonportable-jndi-names` boolean property for the
+`ejb-container` element in `glassfish-ejb-jar.xml`.
+
+Use the `asadmin` command or directly modify the `glassfish-ejb-jar.xml`
+file to set the `disable-nonportable-jndi-names` property.
+
+* Using the `asadmin` command:
++
+[source]
+----
+asadmin> set server.ejb-container.property.disable-nonportable-jndi-names="true"
+----
+* Directly modifying the `glassfish-ejb-jar.xml` file.
+1. Add the `disable-nonportable-jndi-names` property to the
+`ejb-container` element in `glassfish-ejb-jar.xml`.
+2. Set the value of the `disable-nonportable-jndi-names` boolean, as
+desired.
++
+`false` - Enables the automatic use of {productName} v2-specific JNDI
+names. This is the default setting.
++
+`true` - Disables the automatic use of v2-specific JNDI names. In all
+cases, 5.0-compatible JNDI names will be used.
+3. Save the `glassfish-ejb-jar.xml` file and restart the {productName} domain.
++
+This setting applies to all EJBs deployed to the server.
+
+
diff --git a/docs/administration-guide/src/main/asciidoc/jvm.adoc b/docs/administration-guide/src/main/asciidoc/jvm.adoc
new file mode 100644
index 0000000..88439d9
--- /dev/null
+++ b/docs/administration-guide/src/main/asciidoc/jvm.adoc
@@ -0,0 +1,326 @@
+type=page
+status=published
+title=Administering the Virtual Machine for the Java Platform
+next=threadpools.html
+prev=domains.html
+~~~~~~
+
+= Administering the Virtual Machine for the Java Platform
+
+[[GSADG00007]][[ablwj]]
+
+
+[[administering-the-virtual-machine-for-the-java-platform]]
+== 4 Administering the Virtual Machine for the Java Platform
+
+This chapter provides procedures for administering the Virtual Machine
+for the Java platform (Java Virtual Machine) or JVM machine) in the
+{productName} 7 environment by using the
+`asadmin` command-line utility.
+
+The following topics are addressed here:
+
+* link:#gepzd[Administering JVM Options]
+* link:#ggnde[Administering the Profiler]
+
+Instructions for accomplishing these tasks by using the Administration
+Console are contained in the Administration Console online help.
+
+[[gepzd]][[GSADG00544]][[administering-jvm-options]]
+
+=== Administering JVM Options
+
+The Java Virtual Machine is an interpretive computing engine responsible
+for running the byte codes in a compiled Java program. The virtual
+machine translates the Java byte codes into the native instructions of
+the host machine. {productName}, being a Java process, requires a
+virtual machine to run and support the Java applications running on it.
+JVM settings are part of an {productName} configuration.
+
+The following topics are addressed here:
+
+* link:#ggnes[To Create JVM Options]
+* link:#ggnce[To List JVM Options]
+* link:#ggnfi[To Delete JVM Options]
+* link:#ggnbu[To Generate a JVM Report]
+
+[[ggnes]][[GSADG00359]][[to-create-jvm-options]]
+
+==== To Create JVM Options
+
+Use the `create-jvm-options` subcommand in remote mode to create JVM
+options in the Java configuration or the profiler elements of the
+`domain.xml` file. If JVM options are created for a profiler, these
+options are used to record the settings that initiate the profiler.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Create JVM options by using the
+link:reference-manual/create-jvm-options.html#GSRFM00042[`create-jvm-options`] subcommand.
++
+To create more than one JVM option, use a colon (:) to separate the
+options. If the JVM option itself contains a colon (:), use the
+backslash (\) to offset the colon delimiter.
++
+Information about properties for the subcommand is included in this help
+page.
+3. To apply your changes, restart {productName}. See
+link:domains.html#ginqj[To Restart a Domain].
+
+[[GSADG00154]][[ghqwm]]
+Example 4-1 Creating JVM Options
+
+This example sets multiple Java system properties.
+
+[source]
+----
+asadmin> create-jvm-options -Dunixlocation=/root/example:
+-Dvariable=\$HOME:
+-Dwindowslocation=d\\:\\\sun\\\appserver:
+-Doption1=-value1
+created 4 option(s)
+Command create-jvm-options executed successfully.
+----
+
+[[GSADG847]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-jvm-options` at the command line.
+
+[[ggnce]][[GSADG00360]][[to-list-jvm-options]]
+
+==== To List JVM Options
+
+Use the `list-jvm-options` subcommand in remote mode to list the
+existing JVM options.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List JVM options by using the link:reference-manual/list-jvm-options.html#GSRFM00180[`list-jvm-options`]
+subcommand.
+
+[[GSADG00155]][[ggphx]]
+Example 4-2 Listing JVM Options
+
+This example lists all JVM options.
+
+[source]
+----
+asadmin> list-jvm-options
+-Djava.security.auth.login.config=${com.sun.aas.instanceRoot}/config/login.conf
+-XX: LogVMOutput
+-XX: UnlockDiagnosticVMOptions
+-Dcom.sun.enterprise.config.config_environment_factory_class=com.sun.enterprise.
+config.serverbeans.AppserverConfigEnvironmentFactory
+-Djavax.net.ssl.keyStore=${com.sun.aas.instanceRoot}/config/keystore.jks
+-XX:NewRatio=2
+-Djava.security.policy=${com.sun.aas.instanceRoot}/config/server.policy
+-Djdbc.drivers=org.apache.derby.jdbc.ClientDriver
+-Djavax.net.ssl.trustStore=${com.sun.aas.instanceRoot}/config/cacerts.jks
+-client
+-Djava.ext.dirs=${com.sun.aas.javaRoot}/lib/ext${path.separator}${com.sun.aas.ja
+vaRoot}/jre/lib/ext${path.separator}${com.sun.aas.instanceRoot}/lib/ext${path.se
+parator}${com.sun.aas.derbyRoot}/lib
+-Xmx512m
+-XX:LogFile=${com.sun.aas.instanceRoot}/logs/jvm.log
+Command list-jvm-options executed successfully.
+----
+
+[[GSADG848]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-jvm-options` at the command line.
+
+[[ggnfi]][[GSADG00361]][[to-delete-jvm-options]]
+
+==== To Delete JVM Options
+
+Use the `delete-jvm-options` subcommand in remote mode to delete JVM
+options from the Java configuration or profiler elements of the
+`domain.xml` file.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List JVM options by using the link:reference-manual/list-jvm-options.html#GSRFM00180[`list-jvm-options`]
+subcommand.
+3. If necessary, notify users that the JVM option is being deleted.
+4. Delete JVM options by using the
+link:reference-manual/delete-jvm-options.html#GSRFM00094[`delete-jvm-options`] subcommand.
++
+To remove more than one JVM option, use a colon (:) to separate the
+options. If the JVM option itself contains a colon, use the backslash
+(\) to offset the colon delimiter.
+5. To apply your changes, restart {productName}. See
+link:domains.html#ginqj[To Restart a Domain].
+
+[[GSADG00156]][[ggpgz]]
+Example 4-3 Deleting a JVM Option
+
+This example removes a single JVM option.
+
+[source]
+----
+asadmin> delete-jvm-options -Dopt1=A
+
+deleted 1 option(s)
+Command delete-jvm-options executed successfully.
+----
+
+[[GSADG00157]][[ggpkr]]
+Example 4-4 Deleting Multiple JVM Options
+
+This example removes multiple JVM options.
+
+[source]
+----
+asadmin> delete-jvm-options -Doption1=-value1:-Dvariable=\$HOME
+deleted 2 option(s)
+Command delete-jvm-options executed successfully.
+----
+
+[[GSADG849]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-jvm-options` at the command line.
+
+[[ggnbu]][[GSADG00362]][[to-generate-a-jvm-report]]
+
+==== To Generate a JVM Report
+
+Use the `generate-jvm-report` subcommand in remote mode to generate a
+JVM report showing the threads (dump of a stack trace), classes, memory,
+and loggers for a specified instance, including the domain
+administration server (DAS). You can generate the following types of
+reports: summary (default), class, thread, log.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Generate the report by using the
+link:reference-manual/generate-jvm-report.html#GSRFM00138[`generate-jvm-report`] subcommand.
+
+[[GSADG00158]][[ghhkr]]
+Example 4-5 Generating a JVM Report
+
+This example displays summary information about the threads, classes,
+and memory.
+
+[source]
+----
+asadmin> generate-jvm-report --type summary
+Operating System Information:
+Name of the Operating System: Windows XP
+Binary Architecture name of the Operating System: x86, Version: 5.1
+Number of processors available on the Operating System: 2
+System load on the available processors for the last minute: NOT_AVAILABLE.
+(Sum of running and queued runnable entities per minute).
+.
+,
+.
+user.home = C:\Documents and Settings\Jennifer
+user.language = en
+user.name = Jennifer
+user.timezone = America/New_York
+user.variant =
+variable = \$HOME
+web.home = C:\Preview\v3_Preview_release\distributions\web\target\
+glassfish\modules\web
+Command generate-jvm-report executed successfully.
+----
+
+[[GSADG850]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help generate-jvm-report` at the command line.
+
+[[ggnde]][[GSADG00545]][[administering-the-profiler]]
+
+=== Administering the Profiler
+
+A profiler generates information used to analyze server performance.
+
+The following topics are addressed here:
+
+* link:#ggneb[To Create a Profiler]
+* link:#ggnem[To Delete a Profiler]
+
+[[ggneb]][[GSADG00363]][[to-create-a-profiler]]
+
+==== To Create a Profiler
+
+A server instance is tied to a particular profiler by the profiler
+element in the Java configuration. If JVM options are created for a
+profiler, the options are used to record the settings needed to activate
+a particular profiler. Use the `create-profiler` subcommand in remote
+mode to create the profiler element in the Java configuration.
+
+Only one profiler can exist. If a profiler already exists, you receive
+an error message that directs you to delete the existing profiler before
+creating a new one.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Create a profiler by using the link:reference-manual/create-profiler.html#GSRFM00050[`create-profiler`]
+subcommand.
++
+Information about properties for the subcommand is included in this help
+page.
+3. To apply your changes, restart {productName}.
++
+See link:domains.html#ginqj[To Restart a Domain].
+
+[[GSADG00159]][[ggpla]]
+Example 4-6 Creating a Profiler
+
+This example creates a profiler named `sample_profiler`.
+
+[source]
+----
+asadmin> create-profiler --classpath=/home/appserver/ --nativelibrarypath=/u/home/lib
+--enabled=false --property=defaultuser=admin:password=adminadmin sample_profiler
+Command create-profiler executed successfully.
+----
+
+[[GSADG851]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-profiler` at the command line.
+
+[[ggnem]][[GSADG00365]][[to-delete-a-profiler]]
+
+==== To Delete a Profiler
+
+Use the `delete-profiler` subcommand in remote mode to delete the
+profiler element from the Java configuration. You can then create a new
+profiler.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Delete the profiler by using the link:reference-manual/delete-profiler.html#GSRFM00102[`delete-profiler`]
+subcommand.
+3. To apply your changes, restart {productName}.
++
+See link:domains.html#ginqj[To Restart a Domain].
+
+[[GSADG00161]][[ggpkc]]
+Example 4-7 Deleting a Profiler
+
+This example deletes the profiler named `sample_profiler`.
+
+[source]
+----
+asadmin> delete-profiler sample_profiler
+Command delete-profiler executed successfully.
+----
+
+[[GSADG852]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-profiler` at the command line.
+
+
diff --git a/docs/administration-guide/src/main/asciidoc/lifecycle-modules.adoc b/docs/administration-guide/src/main/asciidoc/lifecycle-modules.adoc
new file mode 100644
index 0000000..1624509
--- /dev/null
+++ b/docs/administration-guide/src/main/asciidoc/lifecycle-modules.adoc
@@ -0,0 +1,228 @@
+type=page
+status=published
+title=Administering Life Cycle Modules
+next=batch.html
+prev=monitoring.html
+~~~~~~
+
+= Administering Life Cycle Modules
+
+[[GSADG00013]][[giury]]
+
+
+[[administering-life-cycle-modules]]
+== 9 Administering Life Cycle Modules
+
+This chapter provides procedures for administering life cycle modules in
+the {productName} 7 environment.
+
+The following topics are addressed here:
+
+* link:#giuxo[About Life Cycle Modules]
+* link:#giuue[Configuring Life Cycle Modules]
+
+Instructions for accomplishing the tasks in this chapter by using the
+Administration Console are contained in the Administration Console
+online help.
+
+[[giuxo]][[GSADG00566]][[about-life-cycle-modules]]
+
+=== About Life Cycle Modules
+
+Life cycle modules, also known as initialization services, provide a
+means of running short or long duration Java-based tasks within the
+{productName} environment. These modules are automatically initiated
+at server startup and are notified at various phases of the server life
+cycle. Configured properties for a life cycle module are passed as
+properties during server initialization.
+
+All life cycle module classes and interfaces are in the
+as-install``/modules/glassfish-api.jar`` file.
+
+A life cycle module listens for and performs its tasks in response to
+the following {productName} sequence of events:
+
+1. Initialization. The server reads the configuration, initializes
+built-in subsystems (such as security and logging services), and creates
+the containers.
+2. Startup. The server loads and initializes deployed applications.
+3. Ready. The server begins servicing requests.
+4. Shutdown. The server shuts down the applications and stops.
+5. Termination. The server closes the containers, the built-in
+subsystems, and the server runtime environment.
+
+These events are defined in the `LifecycleEvent` class. For information
+on creating life cycle modules, see "link:application-development-guide/lifecycle-listeners.html#GSDVG00014[Developing
+Lifecycle Listeners]" in {productName}
+Application Development Guide.
+
+
+[NOTE]
+====
+If the `is-failure-fatal` setting is set to true (the default is false),
+life cycle module failure prevents server initialization or startup, but
+not shutdown or termination.
+====
+
+
+[[giuue]][[GSADG00567]][[configuring-life-cycle-modules]]
+
+=== Configuring Life Cycle Modules
+
+The following topics are addressed here:
+
+* link:#giuus[To Create a Life Cycle Module]
+* link:#giuvh[To List Life Cycle Modules]
+* link:#giuyh[To Update a Life Cycle Module]
+* link:#giuux[To Delete a Life Cycle Module]
+
+[[giuus]][[GSADG00399]][[to-create-a-life-cycle-module]]
+
+==== To Create a Life Cycle Module
+
+Use the `create-lifecycle-module` subcommand in remote mode to create a
+life cycle module.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Create a new life cycle modules by using the
+link:reference-manual/create-lifecycle-module.html#GSRFM00043[`create-lifecycle-module`] subcommand.
++
+Information about options and properties for the subcommand are included
+in this help page.
+3. Restart the server for your changes to take effect.
++
+See link:domains.html#ginqj[To Restart a Domain].
+
+[[GSADG00206]][[giuyo]]
+Example 9-1 Creating a Life Cycle Module
+
+This example creates the `customSetup` life cycle module :
+
+[source]
+----
+asadmin> create-lifecycle-module --classname "com.acme.CustomSetup"
+--classpath "/export/customSetup" --loadorder 1 --failurefatal=true
+--description "this is a sample customSetup"
+--property rmi="Server\=acme1\:7070":timeout=30 customSetup
+Command create-lifecycle-module executed successfully
+----
+
+[[GSADG927]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-lifecycle-module` at the command line.
+
+[[giuvh]][[GSADG00400]][[to-list-life-cycle-modules]]
+
+==== To List Life Cycle Modules
+
+Use the `list-lifecycle-modules` subcommand in remote mode to list the
+existing life cycle modules.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List life cycle modules by using the
+link:reference-manual/list-lifecycle-modules.html#GSRFM00181[`list-lifecycle-modules`] subcommand.
+
+[[GSADG00207]][[giuyr]]
+Example 9-2 Listing Life Cycle Modules
+
+This example lists the existing life cycle modules.
+
+[source]
+----
+asadmin> list-lifecycle-modules
+WSTCPConnectorLCModule
+Command list-lifecycle-modules executed successfully
+----
+
+[[GSADG928]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-lifecycle-modules` at the command line.
+
+[[giuyh]][[GSADG00401]][[to-update-a-life-cycle-module]]
+
+==== To Update a Life Cycle Module
+
+Use the `set` subcommand to update an existing life cycle module.
+
+1. List the properties that can be updated for a life cycle module by
+using the link:reference-manual/get.html#GSRFM00139[`get`] subcommand.
++
+For example (single mode):
++
+[source]
+----
+asadmin get "*" | grep sampleLCM
+applications.application.sampleLCMmodule.availability-enabled=false
+applications.application.sampleLCMmodule.directory-deployed=false
+applications.application.sampleLCMmodule.enabled=true
+applications.application.sampleLCMmodule.name=sampleLCMmodule
+applications.application.sampleLCMmodule.object-type=user
+applications.application.sampleLCMmodule.property.class-name=example.lc.SampleModule
+applications.application.sampleLCMmodule.property.classpath=/build/lcm.jar
+applications.application.sampleLCMmodule.property.is-failure-fatal=false
+applications.application.sampleLCMmodule.property.isLifecycle=true
+----
+2. Update a life cycle module by using the olink:GSRFM00226[`set`]
+subcommand.
+3. Restart the server for your changes to take effect.
++
+See link:domains.html#ginqj[To Restart a Domain].
+
+[[GSADG00208]][[giuyq]]
+Example 9-3 Updating a Life Cycle Module
+
+This example updates the `classpath` property.
+
+[source]
+----
+sadmin> set applications.application.sampleLCMmodule.
+property.classpath=/build/lcm_new.jarapplications.application.
+sampleLCMmodule.property.classpath=/build/lcm_new.jar
+Command set executed successfully.
+----
+
+[[GSADG929]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help set` at the command line.
+
+[[giuux]][[GSADG00402]][[to-delete-a-life-cycle-module]]
+
+==== To Delete a Life Cycle Module
+
+Use the `delete-lifecycle-module` subcommand in remote mode to delete a
+life cycle module.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the current life cycle modules by using the
+link:reference-manual/list-lifecycle-modules.html#GSRFM00181[`list-lifecycle-modules`] subcommand.
+3. Delete a life cycle module by using the
+link:reference-manual/delete-lifecycle-module.html#GSRFM00095[`delete-lifecycle-module`] subcommand.
+
+[[GSADG00209]][[giuyi]]
+Example 9-4 Deleting a Life Cycle Module
+
+This example deletes the `customSetup` life cycle module.
+
+[source]
+----
+asadmin> delete-lifecycle-module customSetup
+Command delete-lifecycle-module executed successfully
+----
+
+[[GSADG930]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-lifecycle-module` at the command line.
+
+
diff --git a/docs/administration-guide/src/main/asciidoc/loe.adoc b/docs/administration-guide/src/main/asciidoc/loe.adoc
new file mode 100644
index 0000000..d53fcec
--- /dev/null
+++ b/docs/administration-guide/src/main/asciidoc/loe.adoc
@@ -0,0 +1,281 @@
+type=page
+status=published
+title=List of Examples
+next=lof.html
+prev=toc.html
+~~~~~~
+
+= List of Examples
+
+[[list-of-examples]]
+== List of Examples
+
+* link:overview.html#gkvay[1-1 Determining if the DAS Requires Restart]
+* link:overview.html#gkvba[1-2 Determining if an Instance Requires
+Restart]
+* link:overview.html#sthref5[1-3 Listing Apache Felix Gogo Remote Shell
+Commands]
+* link:overview.html#sthref6[1-4 Running a Remote Shell Command]
+* link:overview.html#gjkrh[1-5 Determining the Services That an OSGi
+Bundle Provides]
+* link:general-administration.html#giwdr[2-1 Running an asadmin Utility
+Subcommand in Single Mode]
+* link:general-administration.html#giwbf[2-2 Specifying an asadmin
+Utility Option With a Subcommand in Single Mode]
+* link:general-administration.html#ghvyk[2-3 Specifying an asadmin
+Utility Option and a Subcommand Option in Single Mode]
+* link:general-administration.html#giwgs[2-4 Displaying Help Information
+for the asadmin Utility]
+* link:general-administration.html#giusg[2-5 Displaying Help Information
+for an asadmin Utility Subcommand]
+* link:general-administration.html#givuq[2-6 Starting a Multimode Session
+With asadmin Utility Options]
+* link:general-administration.html#giwgh[2-7 Starting a Multimode Session
+by Using the multimode Subcommand]
+* link:general-administration.html#ghvzc[2-8 Running a Subcommand in a
+Multimode Session]
+* link:general-administration.html#givul[2-9 Running a Set of asadmin
+Subcommands From a File]
+* link:general-administration.html#sthref7[2-10 Using the --detach Option
+in Single Mode]
+* link:general-administration.html#sthref8[2-11 Using the --detach Option
+in Multimode]
+* link:general-administration.html#sthref9[2-12 Listing Jobs]
+* link:general-administration.html#sthref10[2-13 Attaching to a
+Subcommand and Checking Its Status]
+* link:general-administration.html#sthref11[2-14 Configuring Managed
+Jobs]
+* link:general-administration.html#ggovp[2-15 Creating a System Property]
+* link:general-administration.html#ggopn[2-16 Listing System Properties]
+* link:general-administration.html#ggoph[2-17 Deleting a System Property]
+* link:general-administration.html#sthref12[2-18 Adding Module
+Configuration to domain.xml]
+* link:general-administration.html#sthref13[2-19 Removing Module
+Configuration From domain.xml]
+* link:general-administration.html#sthref14[2-20 Displaying the Current
+Active Configuration of a Module]
+* link:general-administration.html#ggozc[2-21 Adding Resources]
+* link:general-administration.html#ghjnb[2-22 Displaying Version
+Information]
+* link:general-administration.html#ggouk[2-23 Listing Applications]
+* link:general-administration.html#ggown[2-24 Listing Containers]
+* link:general-administration.html#ghlfw[2-25 Listing Modules]
+* link:general-administration.html#ggpdl[2-26 Listing Subcommands]
+* link:general-administration.html#giojj[2-27 Listing Timers]
+* link:general-administration.html#gjhkk[2-28 Showing Status of a
+Component]
+* link:general-administration.html#gjjdi[2-29 Determining the Methods and
+Method Parameters That an Object in the Tree Supports]
+* link:general-administration.html#gjjed[2-30 Retrieving Data for an
+Object in the Tree]
+* link:general-administration.html#gjjen[2-31 Adding an Object to the
+Tree]
+* link:general-administration.html#gjjhd[2-32 Updating an Object in the
+Tree]
+* link:general-administration.html#gjjgp[2-33 Deleting an Object From the
+Tree]
+* link:domains.html#ggoeu[3-1 Creating a Domain]
+* link:domains.html#ggpfv[3-2 Listing Domains]
+* link:domains.html#ghlfx[3-3 Logging In To a Domain on a Remote Machine]
+* link:domains.html#ghldv[3-4 Logging In to a Domain on the Default Port
+of Localhost]
+* link:domains.html#ggoiy[3-5 Deleting a Domain]
+* link:domains.html#ggocw[3-6 Starting a Domain]
+* link:domains.html#gioes[3-7 Stopping a Domain (or Server)]
+* link:domains.html#ggoet[3-8 Restarting a Domain (or Server)]
+* link:domains.html#giupx[3-9 Restarting a Domain in a Browser]
+* link:domains.html#gjzix[3-10 Creating a Service to Restart a DAS
+Automatically on Windows]
+* link:domains.html#gktso[3-11 Querying the Service to Restart a DAS
+Automatically on Windows]
+* link:domains.html#sthref19[3-12 Creating a Service to Restart a DAS
+Automatically on Linux]
+* link:domains.html#giuqp[3-13 Creating a Service to Restart a Domain
+Automatically on Oracle Solaris]
+* link:domains.html#ggoxt[3-14 Backing Up the Default Domain]
+* link:domains.html#ggoys[3-15 Restoring the Default Domain]
+* link:domains.html#ghgsv[3-16 Listing Backups of the Default Domain]
+* link:domains.html#ghlds[3-17 Displaying the DAS Uptime]
+* link:domains.html#gkvkl[3-18 Changing the Administration Port of a
+Domain]
+* link:jvm.html#ghqwm[4-1 Creating JVM Options]
+* link:jvm.html#ggphx[4-2 Listing JVM Options]
+* link:jvm.html#ggpgz[4-3 Deleting a JVM Option]
+* link:jvm.html#ggpkr[4-4 Deleting Multiple JVM Options]
+* link:jvm.html#ghhkr[4-5 Generating a JVM Report]
+* link:jvm.html#ggpla[4-6 Creating a Profiler]
+* link:jvm.html#ggpkc[4-7 Deleting a Profiler]
+* link:threadpools.html#giuez[5-1 Creating a Thread Pool]
+* link:threadpools.html#giugs[5-2 Listing Thread Pools]
+* link:threadpools.html#giuhc[5-3 Updating a Thread Pool]
+* link:threadpools.html#giugt[5-4 Deleting a Thread Pool]
+* link:webapps.html#giyhf[6-1 Invoking a Servlet With a URL]
+* link:webapps.html#giyib[6-2 Invoking a Servlet From Within a JSP File]
+* link:webapps.html#giyis[6-3 Redirecting a URL]
+* link:webapps.html#gixrq[6-4 httpd.conf File for mod_jk]
+* link:webapps.html#gixqt[6-5 workers.properties File for mod_jk]
+* link:webapps.html#gjjzu[6-6 httpd.conf File for Load Balancing]
+* link:webapps.html#gjjzf[6-7 workers.properties File for Load Balancing]
+* link:webapps.html#gjpnc[6-8 http-ssl.conf File for mod_jk Security]
+* link:logging.html#gkmal[7-1 Changing the Name and Location of a
+Cluster's Log File]
+* link:logging.html#gkmgz[7-2 Setting the java.util.logging.config.file
+System Property]
+* link:logging.html#gjiti[7-3 Listing Logger Levels for Modules]
+* link:logging.html#gkkot[7-4 Listing Log Levels for an Instance]
+* link:logging.html#ghmfi[7-5 Changing the Global Log Level for All
+Module Loggers]
+* link:logging.html#ghmev[7-6 Setting the Log Level for a Module Logger]
+* link:logging.html#gjkat[7-7 Setting Log Levels for Multiple Loggers]
+* link:logging.html#sthref23[7-8 Setting the Log File Format using
+set-log-file-format]
+* link:logging.html#sthref24[7-9 Setting the Log File Format using
+set-log-attributes]
+* link:logging.html#sthref25[7-10 Excluding Fields in Log Records]
+* link:logging.html#sthref26[7-11 Setting Multiline Mode]
+* link:logging.html#gkmay[7-12 Changing the Rotation Size]
+* link:logging.html#gkmbc[7-13 Changing the Rotation Interval]
+* link:logging.html#gkmaq[7-14 Changing the Limit Number of Retained
+Files]
+* link:logging.html#gkmav[7-15 Rotating Log Files Manually]
+* link:logging.html#ghphb[7-16 Adding a New Log Handler]
+* link:logging.html#gklap[7-17 Creating a ZIP Archive]
+* link:logging.html#sthref27[7-18 Listing Loggers]
+* link:monitoring.html#gixri[8-1 Enabling the Monitoring Service
+Dynamically]
+* link:monitoring.html#gixre[8-2 Enabling Monitoring for Modules
+Dynamically]
+* link:monitoring.html#gjcmm[8-3 Enabling Monitoring for Modules by Using
+the set Subcommand]
+* link:monitoring.html#gixsc[8-4 Disabling the Monitoring Service
+Dynamically]
+* link:monitoring.html#gjcnw[8-5 Disabling Monitoring for Modules
+Dynamically]
+* link:monitoring.html#gixpg[8-6 Disabling Monitoring by Using the set
+Subcommand]
+* link:monitoring.html#ghljw[8-7 Viewing Common Monitoring Data]
+* link:monitoring.html#ghlre[8-8 Viewing Attributes for a Specific Type]
+* link:monitoring.html#ghbgv[8-9 Viewing Monitorable Applications]
+* link:monitoring.html#ghbfj[8-10 Viewing Attributes for an Application]
+* link:monitoring.html#ghbge[8-11 Viewing a Specific Attribute]
+* link:lifecycle-modules.html#giuyo[9-1 Creating a Life Cycle Module]
+* link:lifecycle-modules.html#giuyr[9-2 Listing Life Cycle Modules]
+* link:lifecycle-modules.html#giuyq[9-3 Updating a Life Cycle Module]
+* link:lifecycle-modules.html#giuyi[9-4 Deleting a Life Cycle Module]
+* link:batch.html#sthref67[10-1 Listing Batch Jobs]
+* link:batch.html#sthref68[10-2 Listing Batch Job Executions]
+* link:batch.html#sthref69[10-3 Listing Batch Job Steps]
+* link:batch.html#sthref70[10-4 Listing the Batch Runtime Configuration]
+* link:batch.html#sthref71[10-5 Configuring the Batch Runtime]
+* link:jdbc.html#ggooc[11-1 Starting a Database]
+* link:jdbc.html#ggorc[11-2 Stopping a Database]
+* link:jdbc.html#ggrgh[11-3 Creating a JDBC Connection Pool]
+* link:jdbc.html#ggpcf[11-4 Listing JDBC Connection Pools]
+* link:jdbc.html#ggpcs[11-5 Contacting a Connection Pool]
+* link:jdbc.html#gjirk[11-6 Resetting (Flushing) a Connection Pool]
+* link:jdbc.html#ggpis[11-7 Deleting a JDBC Connection Pool]
+* link:jdbc.html#ggplj[11-8 Creating a JDBC Resource]
+* link:jdbc.html#ggpgi[11-9 Listing JDBC Resources]
+* link:jdbc.html#gjkrz[11-10 Updating a JDBC Resource]
+* link:jdbc.html#ggpga[11-11 Deleting a JDBC Resource]
+* link:connectors.html#giocc[12-1 Creating a Connector Connection Pool]
+* link:connectors.html#giody[12-2 Listing Connector Connection Pools]
+* link:connectors.html#giohd[12-3 Deleting a Connector Connection Pool]
+* link:connectors.html#giogn[12-4 Creating a Connector Resource]
+* link:connectors.html#gioia[12-5 Listing Connector Resources]
+* link:connectors.html#giokh[12-6 Deleting a Connector Resource]
+* link:connectors.html#gionp[12-7 Creating a Resource Adapter
+Configuration]
+* link:connectors.html#gioof[12-8 Listing Configurations for a Resource
+Adapter]
+* link:connectors.html#giorj[12-9 Deleting a Resource Adapter
+Configuration]
+* link:connectors.html#giuxc[12-10 Creating a Connector Security Map]
+* link:connectors.html#giuwj[12-11 Listing All Connector Security Maps
+for a Connector Connection Pool]
+* link:connectors.html#giuyc[12-12 Listing Principals for a Specific
+Security Map for a Connector Connection Pool]
+* link:connectors.html#giuuf[12-13 Listing Principals of All Connector
+Security Maps for a Connector Connection Pool]
+* link:connectors.html#giuwi[12-14 Updating a Connector Security Map]
+* link:connectors.html#giuvr[12-15 Deleting a Connector Security Map]
+* link:connectors.html#giokw[12-16 Creating Connector Work Security Maps]
+* link:connectors.html#gionj[12-17 Listing the Connector Work Security
+Maps]
+* link:connectors.html#gioll[12-18 Updating a Connector Work Security
+Map]
+* link:connectors.html#giolk[12-19 Deleting a Connector Work Security
+Map]
+* link:connectors.html#giokx[12-20 Creating an Administered Object]
+* link:connectors.html#giokg[12-21 Listing Administered Objects]
+* link:connectors.html#giolc[12-22 Deleting an Administered Object]
+* link:http_https.html#gjhos[13-1 Creating an HTTP Protocol]
+* link:http_https.html#gjhqg[13-2 Listing the Protocols]
+* link:http_https.html#gjhop[13-3 Deleting a Protocol]
+* link:http_https.html#gjhnz[13-4 Creating an HTTP Configuration]
+* link:http_https.html#gjhov[13-5 Deleting an HTTP Configuration]
+* link:http_https.html#gjhpx[13-6 Creating a Transport]
+* link:http_https.html#gjhqj[13-7 Listing HTTP Transports]
+* link:http_https.html#gjhoh[13-8 Deleting a Transport]
+* link:http_https.html#ggpjk[13-9 Creating an HTTP Listener]
+* link:http_https.html#gjimj[13-10 Creating a Network Listener]
+* link:http_https.html#ggpgw[13-11 Listing HTTP Listeners]
+* link:http_https.html#giwiw[13-12 Updating an HTTP Network Listener]
+* link:http_https.html#ggpjr[13-13 Deleting an HTTP Listener]
+* link:http_https.html#ggphv[13-14 Configuring an HTTP Listener for SSL]
+* link:http_https.html#ggpln[13-15 Deleting SSL From an HTTP Listener]
+* link:http_https.html#ggpha[13-16 Creating a Virtual Server]
+* link:http_https.html#ggpgr[13-17 Listing Virtual Servers]
+* link:http_https.html#ggpmd[13-18 Deleting a Virtual Server]
+* link:concurrent.html#sthref74[14-1 Creating a Context Service]
+* link:concurrent.html#sthref75[14-2 Listing Context Services]
+* link:concurrent.html#sthref76[14-3 Deleting a Context Service]
+* link:concurrent.html#sthref77[14-4 Creating a Managed Thread Factory]
+* link:concurrent.html#sthref78[14-5 Listing Managed Thread Factories]
+* link:concurrent.html#sthref79[14-6 Deleting a Managed Thread Factory]
+* link:concurrent.html#sthref80[14-7 Creating a Managed Executor Service]
+* link:concurrent.html#sthref81[14-8 Listing Managed Executor Services]
+* link:concurrent.html#sthref82[14-9 Deleting a Managed Executor Service]
+* link:concurrent.html#sthref83[14-10 Creating a Managed Scheduled
+Executor Service]
+* link:concurrent.html#sthref84[14-11 Listing Managed Scheduled Executor
+Services]
+* link:concurrent.html#sthref85[14-12 Deleting a Managed Scheduled
+Executor Service]
+* link:orb.html#gipfl[15-1 Creating an IIOP Listener]
+* link:orb.html#gipcm[15-2 Listing IIOP Listeners]
+* link:orb.html#giwlj[15-3 Updating an IIOP Listener]
+* link:orb.html#giped[15-4 Deleting an IIOP Listener]
+* link:javamail.html#gipfs[16-1 Creating a JavaMail Resource]
+* link:javamail.html#gipfe[16-2 Listing JavaMail Resources]
+* link:javamail.html#giwjb[16-3 Updating a JavaMail Resource]
+* link:javamail.html#gipcd[16-4 Deleting a JavaMail Resource]
+* link:jms.html#gipbb[17-1 Creating a JMS Host]
+* link:jms.html#gipdw[17-2 Listing JMS Hosts]
+* link:jms.html#givlz[17-3 Updating a JMS Host]
+* link:jms.html#gipbj[17-4 Deleting a JMS Host]
+* link:jms.html#giovy[17-5 Creating a JMS Connection Factory]
+* link:jms.html#giovn[17-6 Creating a JMS Destination]
+* link:jms.html#giovz[17-7 Listing All JMS Resources]
+* link:jms.html#giovq[17-8 Listing a JMS Resources of a Specific Type]
+* link:jms.html#giovi[17-9 Deleting a JMS Resource]
+* link:jms.html#gioxt[17-10 Creating a JMS Physical Destination]
+* link:jms.html#gioxo[17-11 Listing JMS Physical Destinations]
+* link:jms.html#giows[17-12 Flushing Messages From a JMS Physical
+Destination]
+* link:jms.html#gioxx[17-13 Deleting a Physical Destination]
+* link:jndi.html#gioyi[18-1 Creating a Custom Resource]
+* link:jndi.html#gioyr[18-2 Listing Custom Resources]
+* link:jndi.html#giwkg[18-3 Updating a Custom JNDI Resource]
+* link:jndi.html#gioxh[18-4 Deleting a Custom Resource]
+* link:jndi.html#giwcx[18-5 Registering an External JNDI Resource]
+* link:jndi.html#giwbe[18-6 Listing JNDI Resources]
+* link:jndi.html#giwal[18-7 Listing JNDI Entries]
+* link:jndi.html#giwoa[18-8 Updating an External JNDI Resource]
+* link:jndi.html#giwby[18-9 Deleting an External JNDI Resource]
+* link:transactions.html#giufq[19-1 Stopping the Transaction Service]
+* link:transactions.html#giufy[19-2 Rolling Back a Transaction]
+* link:transactions.html#giuef[19-3 Restarting the Transaction Service]
+* link:transactions.html#giugn[19-4 Manually Recovering Transactions]
+
+
diff --git a/docs/administration-guide/src/main/asciidoc/lof.adoc b/docs/administration-guide/src/main/asciidoc/lof.adoc
new file mode 100644
index 0000000..7d69f97
--- /dev/null
+++ b/docs/administration-guide/src/main/asciidoc/lof.adoc
@@ -0,0 +1,18 @@
+type=page
+status=published
+title=List of Figures
+next=lot.html
+prev=loe.html
+~~~~~~
+
+= List of Figures
+
+[[list-of-figures]]
+== List of Figures
+
+* link:general-administration.html#gjjce[2-1 Web Page for the REST
+Resource for Managing a Domain]
+* link:general-administration.html#gkwku[2-2 Web Page for the REST
+Resource That Provides Class Loader Statistics]
+
+
diff --git a/docs/administration-guide/src/main/asciidoc/logging.adoc b/docs/administration-guide/src/main/asciidoc/logging.adoc
new file mode 100644
index 0000000..66dd64e
--- /dev/null
+++ b/docs/administration-guide/src/main/asciidoc/logging.adoc
@@ -0,0 +1,1358 @@
+type=page
+status=published
+title=Administering the Logging Service
+next=monitoring.html
+prev=webapps.html
+~~~~~~
+
+= Administering the Logging Service
+
+[[GSADG00010]][[abluj]]
+
+
+[[administering-the-logging-service]]
+== 7 Administering the Logging Service
+
+This chapter provides instructions on how to configure logging and how
+to view log information in the {productName} 7 environment.
+
+The following topics are addressed here:
+
+* link:#abluk[About Logging]
+* link:#gklmn[Configuring the Logging Service]
+* link:#gkobx[Viewing Log Records]
+* link:#CEGGHGIJ[Listing Loggers]
+
+Instructions for accomplishing these tasks and editing logging service
+properties in the Administration Console are available from the
+Administration Console online help.
+
+[[abluk]][[GSADG00554]][[about-logging]]
+
+=== About Logging
+
+Logging is the process by which {productName}
+captures information about events that occur, such as configuration
+errors, security failures, or server malfunction. This data is recorded
+in log files and is usually the first source of information when
+problems occur. Analyzing the log files can help you to follow events
+that occur in the server runtime and determine the overall health of the
+server.
+
+Although application components can use the Apache Commons Logging
+Library to record messages, the platform standard JSR 47 Logging API is
+recommended for better log configuration. For more information about JSR 47,
+see `http://jcp.org/en/jsr/detail?id=47`.
+
+The following topics are addressed here:
+
+* link:#ablul[Log Files]
+* link:#gkres[Logger Namespaces]
+* link:#gkjft[Logging Targets]
+* link:#gkkit[Logging Properties]
+
+[[ablul]][[GSADG00719]][[log-files]]
+
+==== Log Files
+
+{productName} log records are captured in the
+server log file, which captures information about the operation of a server instance
+running in the domain. Each instance, managed server
+instance (that is, each cluster member), and the domain administration
+server (DAS) has an individual server log file.
+
+The following topics are addressed here:
+
+* link:#gkmep[Log File Names and Locations]
+* link:#gkmex[Log Records]
+* link:#gkmdz[Log Rotation]
+
+[[gkmep]][[GSADG00644]][[log-file-names-and-locations]]
+
+===== Log File Names and Locations
+
+In an {productName} domain, log files have the
+following name and location by default:
+
+[width="100%",cols="27%,73%",options="header",]
+|===
+|Instance |Default Log File Name and Location
+|DAS |domain-dir``/logs/server.log``
+|Each server instance |instance-dir``/logs/server.log``
+|Cluster instance |instance-dir``/logs/server.log``
+|===
+
+
+For example, in a domain hosted on a given machine that includes a
+cluster with two managed servers (`ClusterServer1` and `ClusterServer1`)
+and a standalone instance (`StandaloneServer`), the log files might be
+arranged in the following directory structure. In this directory
+structure, the `server.log` file for the DAS is located in
+domain-dir``/logs``.
+
+[source]
+----
+as-install-parent directory
+  glassfish/
+    domains/
+      domain-dir/
+        logs/
+          server.log
+    nodes/
+      hostname/
+        ClusterServer1/
+          logs/
+            server.log
+        ClusterServer2/
+          logs/
+            server.log
+        StandaloneServer/
+          logs/
+            server.log
+----
+
+You can change the default name or location of a log file by modifying
+the logging properties file for the corresponding instance, described in
+link:#gkmak[To Change the Name and Location of the Log File].
+
+[[gkmex]][[GSADG00645]][[log-records]]
+
+===== Log Records
+
+{productName} writes log records in either the
+Oracle Diagnostics Logging (ODL) format or the Uniform Log Formatter
+(ULF) format. The default format is ODL. For information about changing
+the format, see link:#CEGDJEBG[Setting the Log File Format].
+
+A custom formatter can also be used by specifying the fully qualified
+name of a class that extends the `java.util.logging.Formatter` class.
+The custom formatter class can be packaged in a JAR file and placed in
+the domain-dir``/lib/ext`` directory, or implemented as a Hundred-Kilobyte
+Kernel (HK2) service and the JAR containing the formatter implementation
+placed in the as-install``/modules`` directory.
+
+Log records formatted in the ODL format are displayed as follows:
+
+[source]
+----
+[yyyy-mm-ddThh:mm:ss.SSS-Z][ProductName-Version][Log Level]
+[Message ID][LoggerName][Key Value Pairs][[Message]]
+----
+
+* `[` and `]` mark the beginning and end of fields in the record. Some
+fields may be empty.
+* yyyy-mm-dd`T`hh:mm:ss.SSSS-Z represents the date and time that the
+record was created. For example: `2013-04-12T08:08:30.154-0700`
+* ProductName-Version represents the current version of {productName}. For example: `glassfish`
+* Log Level represents the log level. You can set any of the following
+values: `EMERGENCY`, `ALERT`, `SEVERE`, `WARNING`, `INFO`, `CONFIG`,
+`FINE`, `FINER`, and `FINEST`. The default is `INFO`.
+* Message ID consists of a module code that indicates the origin of the
+message and the message number. For example: `AS-WEB-GLUE-00172`
+* LoggerName represents a hierarchical logger namespace that identifies
+the source of the log module. For example: `jakarta.enterprise.web`
+* Key Value Pairs represents pairs of key names and values. For example:
+`timeMillis: 1365779310154`
+* Message represents the text of the log message. For multiline
+messages, `[[` marks the end of the first line, and `]]` marks the end
+of the message. Multiline messages start on a new line after the message
+header and are indented.
+
+The following is an example of a log record formatted in the ODL format:
+
+[source]
+----
+[2021-04-12T08:08:30.154-0700] [glassfish 7.0] [INFO] [AS-WEB-GLUE-00172] [jakarta.enterprise.web] [tid: _ThreadID=217 _ThreadName=admin-listener(21)]
+[timeMillis: 1365779310154] [levelValue: 800] [[
+  Loading application [payroll] at [/payroll]]]
+----
+
+Log records formatted in the ULF format are displayed as follows:
+
+[source]
+----
+[#|yyyy-mm-ddThh:mm:ss.SSS-Z|Log Level|ProductName-Version|LoggerName|Key Value Pairs|Message|#]
+----
+
+* `[#` and `#]` mark the beginning and end of the record.
+* The vertical bar (`|`) separates the fields of the record.
+* yyyy-mm-dd`T`hh:mm:ss.SSSS-Z represents the date and time that the
+record was created. For example: `2013-04-18T09:27:44.315-0700`
+* Log Level represents the log level. You can set any of the following
+values: `EMERGENCY`, `ALERT`, `SEVERE`, `WARNING`, `INFO`, `CONFIG`,
+`FINE`, `FINER`, and `FINEST`. The default is `INFO`.
+* ProductName-Version represents the current version of {productName}. For example: `glassfish`
+* LoggerName represents a hierarchical logger namespace that identifies
+the source of the log module. For example: `jakarta.enterprise.web.core`
+* Key Value Pairs represents pairs of key names and values and can
+include a message ID. For example: `_MessageID=AS-WEB-CORE-00306`.
++
+Message IDs are included for all {productName}
+`EMERGENCY`, `ALERT`, `SEVERE`, and `WARNING` messages, and for many
+`INFO` messages.
+* Message represents the text of the log message. Multiline messages
+start on a new line after the message header and are indented.
+
+The following is an example of a log record formatted in the ULF format:
+
+[source]
+----
+[#|2013-04-18T09:27:44.315-0700|INFO|glassfish 7.0|jakarta.enterprise.web.core|
+_ThreadID=15;_ThreadName=RunLevelControllerThread-1366302462682;_TimeMillis=1366302464315;_LevelValue=800;_MessageID=AS-WEB-CORE-00306;|
+  Setting JAAS app name glassfish-web|#]
+----
+
+The Administration Console presents log records in a more readable
+display. For information about viewing log records using the
+Administration Console, see link:#gkobx[Viewing Log Records].
+
+[[gkmdz]][[GSADG00646]][[log-rotation]]
+
+===== Log Rotation
+
+By default, when a log file grows to 2 MB, {productName} renames (rotates) the file to incorporate a timestamp and
+creates a new log file. The log file is renamed as `server.log_`date,
+where date is the date and time that the file was rotated.
+
+You can configure the logging service to change the default settings for
+log file rotation, as explained in link:#gklni[Setting Log File
+Rotation].
+
+[[gkres]][[GSADG00720]][[logger-namespaces]]
+
+==== Logger Namespaces
+
+{productName} provides a logger for each of its
+modules. The following list is an example of the logger namespaces in a
+server instance as they appear when using the `list-log-levels`
+subcommand.
+
+[source]
+----
+java.util.logging.ConsoleHandler     <FINEST>
+jakarta.enterprise.resource.corba     <INFO>
+jakarta.enterprise.resource.javamail  <INFO>
+jakarta.enterprise.resource.jdo       <INFO>
+jakarta.enterprise.resource.jms       <INFO>
+jakarta.enterprise.resource.jta       <INFO>
+jakarta.enterprise.resource.resourceadapter     <INFO>
+jakarta.enterprise.resource.sqltrace  <INFO>
+jakarta.enterprise.resource.webcontainer.jsf.application  <INFO>
+jakarta.enterprise.resource.webcontainer.jsf.config       <INFO>
+jakarta.enterprise.resource.webcontainer.jsf.context      <INFO>
+jakarta.enterprise.resource.webcontainer.jsf.facelets     <INFO>
+jakarta.enterprise.resource.webcontainer.jsf.lifecycle    <INFO>
+jakarta.enterprise.resource.webcontainer.jsf.managedbean  <INFO>
+jakarta.enterprise.resource.webcontainer.jsf.renderkit    <INFO>
+jakarta.enterprise.resource.webcontainer.jsf.resource     <INFO>
+jakarta.enterprise.resource.webcontainer.jsf.taglib       <INFO>
+jakarta.enterprise.resource.webcontainer.jsf.timing       <INFO>
+jakarta.enterprise.system.container.cmp         <INFO>
+jakarta.enterprise.system.container.ejb         <INFO>
+jakarta.enterprise.system.container.ejb.mdb     <INFO>
+jakarta.enterprise.system.container.web         <INFO>
+jakarta.enterprise.system.core.classloading     <INFO>
+jakarta.enterprise.system.core.config   <INFO>
+jakarta.enterprise.system.core.naming   <INFO>
+jakarta.enterprise.system.core.security <INFO>
+jakarta.enterprise.system.core.selfmanagement   <INFO>
+jakarta.enterprise.system.core.transaction      <INFO>
+jakarta.enterprise.system     <INFO>
+jakarta.enterprise.system.tools.admin   <INFO>
+jakarta.enterprise.system.tools.backup  <INFO>
+jakarta.enterprise.system.tools.deployment      <INFO>
+jakarta.enterprise.system.util          <INFO>
+jakarta.enterprise.system.webservices.registry  <INFO>
+jakarta.enterprise.system.webservices.rpc       <INFO>
+jakarta.enterprise.system.webservices.saaj      <INFO>
+javax     <INFO>
+org.apache.catalina    <INFO>
+org.apache.coyote      <INFO>
+org.apache.jasper      <INFO>
+org.jvnet.hk2.osgiadapter   <INFO>
+----
+
+For information about how to display logger namespaces and log levels,
+see link:#gjirr[To List Log Levels]. For information about how to
+display a list of loggers and logger details, see link:#CEGGICGF[To List
+Loggers].
+
+[[gkjft]][[GSADG00721]][[logging-targets]]
+
+==== Logging Targets
+
+Each instance in an {productName} domain has a
+dedicated log file, and each instance and cluster has its own logging
+properties file. To configure logging for an instance or a cluster,
+{productName} allows you target specific log
+files or logging properties files when you do the following:
+
+* Set global or module-specific log levels
+* Rotate log files or compress them into a ZIP archive
+* Change logging property attributes
+* List log levels or log attributes
+
+The following subcommands optionally accept a target specification. A
+target can be a configuration name, server name, cluster name, or
+instance name, and is specified as either an operand or as a value
+passed using the `--target` option. If no target is specified when using
+any of these subcommands, the default target is the DAS.
+
+[width="100%",cols="27%,47%,26%",options="header",]
+|===
+|Subcommand |Description |Target Specification
+|link:reference-manual/collect-log-files.html#GSRFM00007[`collect-log-files`] |Collects all available log files
+into a ZIP archive. |`--target``=`target-name
+
+|link:reference-manual/list-log-attributes.html#GSRFM00182[`list-log-attributes`] |Lists logging attributes in
+the logging properties file. |target-name operand
+
+|link:reference-manual/list-log-levels.html#GSRFM00183[`list-log-levels`] |Lists the loggers in the logging
+properties file and their log levels. |target-name operand
+
+|link:reference-manual/rotate-log.html#GSRFM00224[`rotate-log`] |Rotates the log file by renaming it and
+creating a new log file to store new messages. |`--target``=`target-name
+
+|link:reference-manual/set-log-attributes.html#GSRFM00227[`set-log-attributes`] |Sets the specified logging
+attributes in the logging properties file. |`--target``=`target-name
+
+|link:reference-manual/set-log-file-format.html#GSRFM879[`set-log-file-format`] |Sets the log file formatter.
+|`--target``=`target-name
+
+|link:reference-manual/set-log-levels.html#GSRFM00228[`set-log-levels`] |Sets the log level for one or more
+loggers listed in the logging properties file. |`--target``=`target-name
+|===
+
+
+[[gkkit]][[GSADG00722]][[logging-properties]]
+
+==== Logging Properties
+
+The DAS as well as each configuration, instance, and cluster has its own
+set of logging properties that are maintained in individual
+configuration files. A logging properties file is named
+`logging.properies` and includes the following information:
+
+* Log file name and location
+* Logger names and levels
+* Properties for custom handlers
+* Log rotation and logger format properties
+
+By default in an {productName} domain, logging
+properties files are created in the following locations:
+
+[width="100%",cols="18%,82%",options="header",]
+|===
+|Target |Default Location of Logging Properties File
+|DAS |domain-dir``/config```/logging.properties`
+
+|A configuration |domain-dir`/config/`config-name`/logging.properties`,
+where config-name represents the name of a configuration that is shared
+by one or more instances or clusters.
+
+|An instance
+|domain-dir``/config```/`instance-name`-config/logging.properties`, where
+instance-name represents the name of the instance.
+
+|A cluster
+|domain-dir`/config/`cluster-name`-config/logging.properties`, where
+cluster-name represents the name of the cluster.
+|===
+
+
+For information about configuring logging properties, see
+link:#gklmn[Configuring the Logging Service].
+
+[[gklmn]][[GSADG00555]][[configuring-the-logging-service]]
+
+=== Configuring the Logging Service
+
+This section contains the following topics:
+
+* link:#gklmx[Changing the Name and Location of Logging Service Files]
+* link:#gklml[Setting Log Levels]
+* link:#CEGDJEBG[Setting the Log File Format]
+* link:#gklni[Setting Log File Rotation]
+* link:#gklnk[Adding a Custom Logging Handler]
+
+[[gklmx]][[GSADG00723]][[changing-the-name-and-location-of-logging-service-files]]
+
+==== Changing the Name and Location of Logging Service Files
+
+This section explains how to change the name and location of the
+following logging service files:
+
+* Log file
+* Logging properties file
+
+[[gkmak]][[GSADG00375]][[to-change-the-name-and-location-of-the-log-file]]
+
+===== To Change the Name and Location of the Log File
+
+To change the name and location of the log file, first use the
+`list-log-attributes` subcommand to obtain the current log attribute
+setting for the log file name and location. Then use the
+`set-log-attributes` subcommand to specify the new name or location. The
+default target for these two subcommands is the DAS. However, you can
+optionally specify one of the following targets:
+
+* Configuration name — to target all instances or clusters that share a specific configuration name.
+* Server name — to target only a specific server.
+* Instance name — to target only a specific instance.
+* Cluster name — to target only a specific cluster.
+
+1. Ensure that the target server or cluster is running.
+Remote subcommands require a running server.
+
+2. Use the link:reference-manual/list-log-attributes.html#GSRFM00182[`list-log-attributes`]
+subcommand in remote mode to obtain the current log attribute settings.
+The name and location of the log file is set with the
+`com.sun.enterprise.server.logging.GFFileHandler.file` attribute of the
+logging properties file.
+Optionally you can target a configuration, server, instance, or cluster.
+If you do not specify a target, the log attribute settings for the DAS are displayed.
+
+3. Use the link:reference-manual/set-log-attributes.html#GSRFM00227[`set-log-attributes`]
+subcommand in remote mode to define a custom name or location of the log file.
+If you do not specify a target, the log file for the DAS is targeted by default.
+If you target a cluster, the name of the cluster log file for
+each member instance can be changed (the server log file name cannot).
+
+[[GSADG00174]][[gkmal]]
+Example 7-1 Changing the Name and Location of a Cluster's Log File
+
+This example changes the name of the cluster log file for `Cluster1` to
+`cluster1.log`. `Cluster1` has two server instances: `ClusterServer1` and `ClusterServer2`.
+
+[source]
+----
+asadmin> list-log-attributes Cluster1
+com.sun.enterprise.server.logging.GFFileHandler.alarms <false>
+com.sun.enterprise.server.logging.GFFileHandler.file
+<${com.sun.aas.instanceRoot}/logs/server.log>
+com.sun.enterprise.server.logging.GFFileHandler.flushFrequency  <1>
+.
+.
+.
+log4j.logger.org.hibernate.validator.util.Version <warn>
+Command list-log-attributes executed successfully.
+asadmin> set-log-attributes --target Cluster1
+com.sun.enterprise.server.logging.GFFileHandler.file=
+${com.sun.aas.instanceRoot}/logs/cluster1.log
+com.sun.enterprise.server.logging.GFFileHandler.file
+logging attribute set with value ${com.sun.aas.instanceRoot}/logs/cluster1.log
+These logging attributes are set for Cluster1.
+ClusterServer1 :
+com.sun.enterprise.server.logging.GFFileHandler.file
+logging attribute set with value ${com.sun.aas.instanceRoot}/logs/cluster1.log
+These logging attributes are set for Cluster1.
+
+ClusterServer2 :
+com.sun.enterprise.server.logging.GFFileHandler.file
+logging attribute set with value ${com.sun.aas.instanceRoot}/logs/cluster1.log
+These logging attributes are set for Cluster1.
+
+Command set-log-attributes executed successfully.
+----
+
+[[GSADG864]]
+
+See Also
+
+You can view the full syntax and options of these subcommands by typing
+`asadmin help list-log-levels` and `asadmin help set-log-attributes` at
+the command line.
+
+[[gkmcz]][[GSADG00376]][[to-change-the-name-and-location-of-the-logging-properties-file]]
+
+===== To Change the Name and Location of the Logging Properties File
+
+You can set the name and location of the logging properties file by
+setting the `java.util.logging.config.file` system property. By setting
+this system property, you can have a single logging properties file that
+is used by all instances running on the same host.
+
+[NOTE]
+====
+Setting the `java.util.logging.config.file` system property causes all
+other {productName} logging properties files on
+the host to be overridden.
+====
+
+
+1. Set the `java.util.logging.config.file` system property.
+For example, you can use the following `java` command:
++
+[source]
+----
+java -Djava.util.logging.config.file=properties_file
+----
+Alternatively, you can use the Administration Console to set this system property.
+
+2. To apply your change, restart {productName}.
+
+[[GSADG00175]][[gkmgz]]
+Example 7-2 Setting the `java.util.logging.config.file` System Property
+
+The following example changes the location of the logging properties
+file to `/space/mylogging/logging.properties`:
+[source]
+----
+java -Djava.util.logging.config.file=/space/mylogging/logging.properties
+----
+
+[[gklml]][[GSADG00724]][[setting-log-levels]]
+
+==== Setting Log Levels
+
+The log level determines the granularity of the message that is logged,
+from error only (`EMERGENCY`) to detailed debug (`FINEST`). The
+following values apply: `EMERGENCY`, `ALERT`, `SEVERE`, `WARNING`,
+`INFO`, `CONFIG`, `FINE`, `FINER`, and `FINEST`. These log levels are
+hierarchically inclusive, which means that if you set a particular log
+level, such as INFO, the messages that have log levels above that level
+(`EMERGENCY`, `ALERT`, `SEVERE`, and `WARNING`,) are also included. If
+you set the log level to the lowest level, `FINEST`, your output
+includes all the messages in the file. The default setting is `INFO`.
+
+You can list current log levels of all loggers specified in the
+`logging properties` file. In some cases, loggers that have not been
+created by the respective containers will also appear in the list.
+
+You can set log levels that are global or logger-specific. When you set
+a global log level, the log level goes into effect for all loggers. If
+you set the log level for a specific logger that is different from the
+global log level, the logger-specific setting takes precedence. In
+addition, when setting log levels, you can target a configuration,
+server, instance, or cluster.
+
+Because setting log levels is a dynamic operation, you do not need to
+restart {productName} for changes to take effect.
+
+Setting either global or logger-specific log levels is done by using the
+`set-log-levels` subcommand. Listing log levels is done by using the
+`list-log-levels` subcommand.
+
+The following topics are addressed here:
+
+* link:#gjirr[To List Log Levels]
+* link:#ghmep[To Set the Global Log Level]
+* link:#ghmdu[To Set Module Log Levels]
+
+[[gjirr]][[GSADG00377]][[to-list-log-levels]]
+
+===== To List Log Levels
+
+{productName} provides the means to list all
+loggers and their log levels. Listing the loggers provides a convenient
+means to view current loggers and log levels either prior to or after
+making log level changes.
+
+Use the `list-log-levels` subcommand in remote mode to list the modules
+and their current log levels. The default target for this subcommand is
+the DAS. However, you can optionally specify one of the following
+targets:
+
+* Configuration name — to target all instances or clusters that share a specific configuration name.
+* Server name — to target a specific server.
+* Instance name — to target a specific instance.
+* Cluster name — to target a specific cluster.
+
+1. Ensure that the DAS is running. Remote subcommands require a running server.
+2. List the existing module loggers and log levels by using the
+link:reference-manual/list-log-levels.html#GSRFM00183[`list-log-levels`] subcommand.
+
+[[GSADG00176]][[gjiti]]
+Example 7-3 Listing Logger Levels for Modules
+
+This example shows a partial list of the existing loggers and their log
+levels in the DAS.
+
+[source]
+----
+asadmin> list-log-levels
+jakarta.enterprise.system.container.cmp <INFO>
+jakarta.enterprise.system.tools.admin <INFO>
+java.util.logging.ConsoleHandler <FINEST>
+jakarta.enterprise.system.container.web <INFO>
+jakarta.enterprise.system.util <INFO>
+jakarta.enterprise.resource.webcontainer.jsf.timing <INFO>
+javax <INFO>
+jakarta.enterprise.resource.corba <INFO>
+...
+Command list-log-levels executed successfully.
+----
+
+[[GSADG00177]][[gkkot]]
+Example 7-4 Listing Log Levels for an Instance
+
+This example shows a partial list of the loggers and log levels for the
+instance `MyServer2`.
+
+[source]
+----
+asadmin> list-log-levels MyServer2
+java.util.logging.ConsoleHandler <FINEST>
+jakarta.enterprise.resource.corba  <INFO>
+jakarta.enterprise.resource.javamail   <INFO>
+jakarta.enterprise.resource.jdo <INFO>
+jakarta.enterprise.resource.jms <INFO>
+jakarta.enterprise.resource.jta <INFO>
+jakarta.enterprise.resource.resourceadapter <INFO>
+jakarta.enterprise.resource.sqltrace <FINE>
+...
+Command list-log-levels executed successfully.
+----
+
+[[GSADG865]]
+
+See Also
+
+You can view the full syntax and options of the subcommand by typing
+`asadmin help list-log-levels` at the command line.
+
+[[ghmep]][[GSADG00378]][[to-set-the-global-log-level]]
+
+===== To Set the Global Log Level
+
+The global log level specifies the events that are logged across all
+loggers. The default level for messages output to the console is `INFO`
+(which also includes `EMERGENCY`, `ALERT`, `SEVERE`, and `WARNING`
+messages).
+
+Use the `set-log-levels` subcommand in remote mode to set the global log
+level. The default target for this subcommand is the DAS. However, you
+can optionally specify one of the following targets using the `--target`
+option:
+
+* Configuration name — to target all instances or clusters that share a specific configuration name.
+* Server name — to target a specific server.
+* Instance name — to target a specific instance.
+* Cluster name — to target a specific cluster.
+
+1. Ensure that the target server or cluster is running.
+2. Set the global log level by using the
+link:reference-manual/set-log-levels.html#GSRFM00228[`set-log-levels`] subcommand, specifying the log level
+of the `java.util.logging.ConsoleHandler` logger.
+The `ConsoleHandler` has a separate log level setting that limits the
+messages that are displayed. For example:
++
+[source]
+----
+java.util.logging.ConsoleHandler <FINEST>
+----
+
+[[GSADG00178]][[ghmfi]]
+Example 7-5 Changing the Global Log Level for All Module Loggers
+
+By setting the log level of the `ConsoleHandler`, you set the global log
+level for all loggers. This example sets the global log level in the DAS
+to `INFO`:
+
+[source]
+----
+asadmin> set-log-levels java.util.logging.ConsoleHandler=INFO
+java.util.logging.ConsoleHandler package set with log level INFO.
+These logging levels are set for server.
+
+Command set-log-levels executed successfully.
+----
+
+[[GSADG866]]
+
+See Also
+
+You can view the full syntax and options of the subcommand by typing
+`asadmin help set-log-levels` at the command line.
+
+[[ghmdu]][[GSADG00379]][[to-set-module-log-levels]]
+
+===== To Set Module Log Levels
+
+A module log level specifies the events that are logged for a particular
+logger. The default level for messages output to the console is `INFO`
+(which also includes `EMERGENCY`, `ALERT`, `SEVERE`, and `WARNING`
+messages). The global log level is overridden by a module-specific log level.
+
+By default, the module log level is set to `FINE`. The lines for the
+loggers in the logging properties file might look like this (the modules
+are indicated in bold):
+
+[source]
+----
+jakarta.enterprise.system.tools.level=FINE
+jakarta.enterprise.system.container.ejb.level=FINE
+jakarta.enterprise.system.core.security.level=FINE
+jakarta.enterprise.system.tools.admin.level=FINE
+jakarta.enterprise.level=FINE
+jakarta.enterprise.system.container.web.level=FINE
+----
+
+Because setting log levels is a dynamic operation, you do not need to
+restart {productName} for changes to take effect.
+
+1. Ensure that the target server or cluster is running. Remote subcommands require a running server.
+
+2. List the existing module loggers and their log levels by using the
+link:reference-manual/list-log-levels.html#GSRFM00183[`list-log-levels`] subcommand.
+
+3. Set the log level for a module by using the
+link:reference-manual/set-log-levels.html#GSRFM00228[`set-log-levels`] subcommand.
+Your choices are `EMERGENCY`, `ALERT`, `SEVERE`, `WARNING`, `INFO`,
+`CONFIG`, `FINE`, `FINER`, and `FINEST`.
+
+[[GSADG00179]][[ghmev]]
+Example 7-6 Setting the Log Level for a Module Logger
+
+This example sets the log level for the web container logger to WARNING
+on the target instance `ManagedServer1`:
+
+[source]
+----
+asadmin> set-log-levels --target ManagedServer1
+jakarta.enterprise.system.container.web=WARNING
+jakarta.enterprise.system.container.web package set with log level WARNING.
+These logging levels are set for ManagedServer1.
+ManagedServer1 :
+jakarta.enterprise.system.container.web package set with log level WARNING.
+These logging levels are set for ManagedServer1.
+
+Command set-log-levels executed successfully.
+----
+
+[[GSADG00180]][[gjkat]]
+Example 7-7 Setting Log Levels for Multiple Loggers
+
+The following example sets the log level for security and web container
+loggers in the DAS.
+
+[source]
+----
+asadmin> set-log-levels jakarta.enterprise.system.core.security=FINE:
+jakarta.enterprise.system.container.web=WARNING
+jakarta.enterprise.system.container.web package set with log level WARNING.
+jakarta.enterprise.system.core.security package set with log level FINE.
+These logging levels are set for server.
+
+Command set-log-levels executed successfully.
+----
+
+[[GSADG867]]
+
+See Also
+
+You can view the full syntax and options of the subcommand by typing
+`asadmin help set-log-levels` at the command line.
+
+[[CEGDJEBG]][[GSADG1062]][[setting-the-log-file-format]]
+
+==== Setting the Log File Format
+
+You can set the format for log records in log files. The following
+topics are addressed here:
+
+* link:#CEGFFJDG[To Set the Log File Format]
+* link:#CEGGBJCC[To Exclude Fields in Log Records]
+* link:#CEGBBEAH[To Set Multiline Mode]
+
+[[CEGFFJDG]][[GSADG1063]][[to-set-the-log-file-format]]
+
+===== To Set the Log File Format
+
+Use the `set-log-file-format` subcommand in remote mode to set the
+formatter used by {productName} to format log
+records in log files. You can also use the `set-log-attributes`
+subcommand. Log formats for all server instances in a cluster will be
+the same. For information about log formats, see link:#gkmex[Log
+Records].
+
+
+[NOTE]
+====
+Changing the log format forces log rotation to avoid mixed format in the
+same file.
+====
+
+
+1. Ensure that the target server or cluster is running. Remote commands require a running server.
+2. Set the formatter by using the
+link:reference-manual/redeploy.html#GSRFM00217[`set-log-file-format`] subcommand.
+3. To apply your change, restart {productName}.
+
+[[GSADG1064]][[sthref23]]
+Example 7-8 Setting the Log File Format using `set-log-file-format`
+
+This example sets the log file format to `ULF` for standalone instance
+`ManagedServer1` using the `set-log-file-format` subcommand.
+
+[source]
+----
+asadmin> set-log-file-format --target ManagedServer1 ulf
+The log file formatter is set to com.sun.enterprise.server.logging.UniformLogFormatter for instance ManagedServer1.
+Command set-log-file-format executed successfully.
+----
+
+[[GSADG1065]][[sthref24]]
+Example 7-9 Setting the Log File Format using `set-log-attributes`
+
+This example sets the log file format to `ULF` for standalone instance
+`ManagedServer1` using the `set-log-attributes` subcommand.
+
+[source]
+----
+asadmin> set-log-attributes --target ManagedServer1 com.sun.enterprise.server.logging.GFFileHandler.formatter=ulf
+com.sun.enterprise.server.logging.GFFileHandler.formatter logging attribute value set to ulf.
+The logging attributes are saved successfully for ManagedServer1-config.
+Command set-log-attributes executed successfully.
+----
+
+[[GSADG1066]]
+
+See Also
+
+You can view the full syntax and options of the `set-log-file-format`
+subcommand by typing `asadmin help set-log-file-format` at the command
+line. You can view the full syntax and options of the
+`set-log-attributes` subcommand by typing
+`asadmin help set-log-attributes` at the command line.
+
+[[CEGGBJCC]][[GSADG1067]][[to-exclude-fields-in-log-records]]
+
+===== To Exclude Fields in Log Records
+
+Use the `set-log-attributes` subcommand in remote mode to exclude
+specific name-value fields from log records. If the `excludeFields`
+attribute is not specified, all name-value fields are included. The
+following fields can be excluded:
+
+* `tid`
+* `userId`
+* `ecid`
+* `timeMillis`
+* `levelVal`
+
+1. Ensure that the target server or cluster is running. Remote commands require a running server.
+
+2. Exclude fields by using the link:reference-manual/set-log-attributes.html#GSRFM00227[`set-log-attributes`]
+subcommand, specifying the following attribute and the fields to exclude:
++
+[source]
+----
+com.sun.enterprise.server.logging.GFFileHandler.excludeFields=fields
+----
+where `fields` is a comma-separated list of the name-value fields to
+exclude from the log file.
+
+3. To apply your change, restart {productName}.
+
+[[GSADG1068]][[sthref25]]
+Example 7-10 Excluding Fields in Log Records
+
+This example excludes the `userId` and `levelVal` name-value fields in
+log records for standalone instance `ManagedServer1`:
+
+[source]
+----
+asadmin> set-log-attributes --target ManagedServer1
+com.sun.enterprise.server.logging.GFFileHandler.excludeFields=userId,levelVal
+com.sun.enterprise.server.logging.GFFileHandler.excludeFields logging attribute value set to userId,levelVal.
+The logging attributes are saved successfully for ManagedServer1-config.
+
+Command set-log-attributes executed successfully.
+----
+
+[[GSADG1069]]
+
+See Also
+
+You can view the full syntax and options of the subcommand by typing
+`asadmin help set-log-attributes` at the command line.
+
+[[CEGBBEAH]][[GSADG1070]][[to-set-multiline-mode]]
+
+===== To Set Multiline Mode
+
+Use the `set-log-attributes` command in remote mode to set multiline
+mode. When multiline mode is enabled (the default), the body of a log
+message starts on a new line after the message header and is indented.
+
+1. Ensure that the target server or cluster is running. Remote commands require a running server.
+
+2. Set multiline mode by using the
+link:reference-manual/set-log-attributes.html#GSRFM00227[`set-log-attributes`] subcommand, specifying the
+following attribute and its value (`true` or `false`):
++
+[source]
+----
+com.sun.enterprise.server.logging.GFFileHandler.multiLineMode=value
+----
+
+3. To apply your change, restart {productName}.
+
+[[GSADG1071]][[sthref26]]
+Example 7-11 Setting Multiline Mode
+
+Multiline mode is enabled by default. The following example disables
+multiline mode in log files for standalone instance `ManagedServer1`:
+
+[source]
+----
+asadmin> set-log-attributes --target ManagedServer1
+com.sun.enterprise.server.logging.GFFileHandler.multiLineMode=false
+com.sun.enterprise.server.logging.GFFileHandler.multiLineMode logging attribute value set to false.
+The logging attributes are saved successfully for ManagedServer1-config.
+
+Command set-log-attributes executed successfully.
+----
+
+[[GSADG1072]]
+
+See Also
+
+You can view the full syntax and options of the subcommand by typing
+`asadmin help set-log-attributes` at the command line.
+
+[[gklni]][[GSADG00725]][[setting-log-file-rotation]]
+
+==== Setting Log File Rotation
+
+As explained in link:#ablul[Log Files], {productName} by default rotates log files when they reach 2 MB in size.
+However, you can change the default rotation settings. For example, you
+can change the file size at which the server rotates the log file or you
+can configure a server to rotate log files based on a time interval. In
+addition to changing when rotation occurs, you can also:
+
+* Specify the maximum number of rotated files that can accumulate.
+By default, {productName} does not limit the
+number of rotated log files that are retained. However, you can set a
+limit. After the number of log files reaches this limit, subsequent file
+rotations delete the oldest rotated log file.
+
+* Rotate the log file manually.
+A manual rotation forces the immediate rotation of the target log file.
+
+Changing the default log rotation settings is done using the
+`set-log-attributes` subcommand, and rotating log files manually is done
+using the `rotate-log` subcommand, as explained in the following
+sections:
+
+* link:#gkmbh[To Change the Rotation File Size]
+* link:#gkman[To Change the File Rotation Interval]
+* link:#gkmai[To Change the Limit Number of Retained Files]
+* link:#gkmau[To Rotate Log Files Manually]
+
+[[gkmbh]][[GSADG00380]][[to-change-the-rotation-file-size]]
+
+===== To Change the Rotation File Size
+
+Use the `set-log-attributes` subcommand in remote mode to change the log
+rotation file size. The default target of this subcommand is the DAS.
+Optionally, you can target a configuration, server, instance, or
+cluster. The minimum size that can be set is 500 KB.
+
+1. Ensure that the target server or cluster is running.
+
+2. Change the rotation file size limit by using the
+link:reference-manual/set-log-attributes.html#GSRFM00227[`set-log-attributes`] subcommand,
+specifying the following attribute and the desired limit in bytes:
++
+[source]
+----
+com.sun.enterprise.server.logging.GFFileHandler.rotationLimitInBytes=bytes
+----
+
+3. To apply your change, restart {productName}.
+
+[[GSADG00181]][[gkmay]]
+Example 7-12 Changing the Rotation Size
+
+The following example sets the log file rotation size to 1 MB for the
+standalone instance `ManagedServer1`:
+
+[source]
+----
+asadmin> set-log-attributes --target ManagedServer1
+com.sun.enterprise.server.logging.GFFileHandler.rotationLimitInBytes=1000000
+com.sun.enterprise.server.logging.GFFileHandler.rotationLimitInBytes
+logging attribute set with value 1000000.
+These logging attributes are set for ManagedServer1.
+ManagedServer1 :
+com.sun.enterprise.server.logging.GFFileHandler.rotationLimitInBytes
+logging attribute set with value 1000000.
+These logging attributes are set for ManagedServer1.
+
+Command set-log-attributes executed successfully.
+----
+
+[[GSADG868]]
+
+See Also
+
+You can view the full syntax and options of the subcommand by typing
+`asadmin help set-log-attributes` at the command line.
+
+[[gkman]][[GSADG00381]][[to-change-the-file-rotation-interval]]
+
+===== To Change the File Rotation Interval
+
+Use the `set-log-attributes` subcommand in remote mode to change the log
+file rotation time limit interval. The default target of this subcommand
+is the DAS. Optionally, you can target a configuration, server,
+instance, or cluster. The default value is `0`.
+
+1. Ensure that the target server or cluster is running.
+
+2. Change the rotation time limit by using the
+link:reference-manual/set-log-attributes.html#GSRFM00227[`set-log-attributes`] subcommand,
+specifying the following attribute and the desired limit in minutes:
++
+[source]
+----
+com.sun.enterprise.server.logging.GFFileHandler.rotationTimelimitInMinutes=minutes
+----
+
+3. To apply your change, restart {productName}.
+
+[[GSADG00182]][[gkmbc]]
+Example 7-13 Changing the Rotation Interval
+
+The following example sets the log file rotation time limit for the
+cluster `Cluster1`, which has the instances `ClusterServer1` and
+`ClusterServer2`.
+
+[source]
+----
+asadmin> set-log-attributes --target Cluster1
+com.sun.enterprise.server.logging.GFFileHandler.rotationTimelimitInMinutes=10
+com.sun.enterprise.server.logging.GFFileHandler.rotationTimelimitInMinutes
+logging attribute set with value 10.
+These logging attributes are set for Cluster1.
+ClusterServer1 :
+com.sun.enterprise.server.logging.GFFileHandler.rotationTimelimitInMinutes
+logging attribute set with value 10.
+These logging attributes are set for Cluster1.
+
+ClusterServer2 :
+com.sun.enterprise.server.logging.GFFileHandler.rotationTimelimitInMinutes
+logging attribute set with value 10.
+These logging attributes are set for Cluster1.
+
+Command set-log-attributes executed successfully.
+----
+
+[[GSADG869]]
+
+See Also
+
+You can view the full syntax and options of the subcommand by typing
+`asadmin help set-log-attributes` at the command line.
+
+[[gkmai]][[GSADG00382]][[to-change-the-limit-number-of-retained-files]]
+
+===== To Change the Limit Number of Retained Files
+
+Use the `set-log-attributes` subcommand in remote mode to change the
+limit on the number of log files that the server creates to store old
+log messages. The default target of this subcommand is the DAS.
+Optionally, you can target a configuration, server, instance, or
+cluster. The default limit value is `0`, which results in no limit
+placed on the number of rotated log files that are retained.
+
+1. Ensure that the target server or cluster is running.
+2. Change the limit number of retained log files by using the
+link:reference-manual/set-log-attributes.html#GSRFM00227[`set-log-attributes`] subcommand,
+specifying the following attribute and the desired file limit number:
++
+[source]
+----
+com.sun.enterprise.server.logging.GFFileHandler.maxHistoryFiles=minutes
+----
++
+The behavior of the `com.sun.enterprise.server.logging.GFFileHandler.maxHistoryFiles`
+attribute is as follows:
++
+* If the property is not set, {productName} keeps
+  a maximum of 10 rotated log files.
+* If the property is set to an invalid number or null, {productName} keeps a maximum of 10 rotated log files.
+* If the property is set to 0, {productName}
+  retains all rotated log files (that is, sets no maximum).
+
+3. To apply your change, restart {productName}.
+
+[[GSADG00183]][[gkmaq]]
+Example 7-14 Changing the Limit Number of Retained Files
+
+The following example sets the log limit number of retained log files
+for the DAS to `10`.
+
+[source]
+----
+asadmin> set-log-attributes
+com.sun.enterprise.server.logging.GFFileHandler.maxHistoryFiles=10
+com.sun.enterprise.server.logging.GFFileHandler.maxHistoryFiles
+logging attribute set with value 10.
+These logging attributes are set for server.
+Command set-log-attributes executed successfully.
+----
+
+[[GSADG870]]
+
+See Also
+
+You can view the full syntax and options of the subcommand by typing
+`asadmin help set-log-attributes` at the command line.
+
+[[gkmau]][[GSADG00383]][[to-rotate-log-files-manually]]
+
+===== To Rotate Log Files Manually
+
+You can rotate log files manually by using the `rotate-log` subcommand
+in remote mode. The default target of this subcommand is the DAS.
+Optionally, you can target a configuration, server, instance, or
+cluster. When you use this subcommand, the target log file is
+immediately moved to a new time-stamped file and a new log file is
+created.
+
+Because log rotation is a dynamic operation, you do not need to restart
+{productName} for changes to take effect.
+
+1. Ensure that the target server or cluster is running.
+2. Rotate log files by using the link:reference-manual/rotate-log.html#GSRFM00224[`rotate-log`]
+subcommand.
+
+[[GSADG00184]][[gkmav]]
+Example 7-15 Rotating Log Files Manually
+
+The following example rotates the `server.log` file for `ManagedServer2`
+to `server.log_`yyyy-mm-dd`T`hh-mm-ss, where yyyy-mm-dd`T`hh-mm-ss
+represents the time when the file is rotated, and creates a new
+`server.log` file in the default location.
+
+[source]
+----
+asadmin> rotate-log --target ManagedServer2
+Command rotate-log executed successfully.
+----
+
+[[GSADG871]]
+
+See Also
+
+You can view the full syntax and options of the subcommand by typing
+`asadmin help rotate-log` at the command line.
+
+[[gklnk]][[GSADG00726]][[adding-a-custom-logging-handler]]
+
+==== Adding a Custom Logging Handler
+
+By default, {productName} log records are
+captured in a server log file using the format described in
+link:#gkmex[Log Records]. However, you may find that you want to log
+messages to a different location, such as a database or a remote server,
+or log messages from specific loggers to your own file. This can be done
+by implementing a custom log handler. This section explains how to add a
+custom log handler to the {productName} logging
+service.
+
+[[ghmen]][[GSADG00384]][[to-add-a-custom-log-handler]]
+
+===== To Add a Custom Log Handler
+
+A comma-separated list of log handlers is installed during startup of
+the Java Virtual Machine (JVM) host. The default log handler that is
+provided in the `logging.properties` file, `ConsoleHandler`, is
+configured as follows:
+
+[source]
+----
+handlers=java.util.logging.ConsoleHandler
+----
+
+In {productName}, the best approach to developing
+a custom handler is to define a Hundred-Kilobyte Kernel (HK2) component
+that implements the handler contract. {productName} registers this handler automatically
+because it is an HK2 component. There is no task required of the administrator.
+
+
+[NOTE]
+====
+The custom handler class should be packaged in an OSGi module and the
+JAR file placed in the as-install``/modules`` directory.
+====
+
+
+To configure a custom handler that is not developed as an HK2 component,
+add the new handler to the `logging.properties` file after the developer
+has put the custom handler JAR file into the domain-dir``/lib/ext`` directory.
+
+[[GSADG872]]
+
+Before You Begin
+
+If you set a handler by setting the handlers attribute in the logging
+properties file, the class that extends `java.util.logging.Handler` must
+be in the server classpath.
+
+1. Ensure that the target server or cluster is running.
++
+Remote subcommands require a running server.
+2. Use the link:reference-manual/set-log-attributes.html#GSRFM00227[`set-log-attributes`] subcommand to add the
+handler to the `handlers` attribute.
++
+The default target of this subcommand is the DAS. Optionally you can
+target a configuration, server, instance, or cluster.
+3. To apply your changes, restart {productName}.
++
+See link:domains.html#ginqj[To Restart a Domain].
+
+[[GSADG00185]][[ghphb]]
+Example 7-16 Adding a New Log Handler
+
+This example adds the custom logger `com.example.logging.MyHandler` to
+the logging properties file of the DAS.
+
+[source]
+----
+asadmin> set-log-attributes
+handlers=java.util.logging.ConsoleHandler,com.example.logging.MyHandler
+handlers logging attribute set with value
+java.util.logging.ConsoleHandler,com.example.logging.MyHandler.
+These logging attributes are set for server.
+Command set-log-attributes executed successfully.
+----
+
+[[GSADG873]]
+
+See Also
+
+You can view the full syntax and options of the subcommand by typing
+`asadmin help set-log-attributes` at the command line.
+
+[[gkobx]][[GSADG00556]][[viewing-log-records]]
+
+=== Viewing Log Records
+
+The recommended means for general viewing of logging information is to
+use the Log Viewer in the Administration Console. The Log Viewer
+simplifies reading, searching, and filtering log file contents. For
+instructions, see the Administration Console online help.
+
+{productName} also allows you to collect log
+files into a ZIP archive, which provides the means to obtain and view
+log files for an instance or cluster even when it is not currently
+running. The following section explains how to collect all available log
+files for an instance or cluster and compile them into a single ZIP
+archive, which is done by using the `collect-log-files` subcommand.
+
+[[gklbi]][[GSADG00385]][[to-collect-log-files-into-a-zip-archive]]
+
+==== To Collect Log Files into a ZIP Archive
+
+Use the `collect-log-files` subcommand in remote mode to collect log
+files into a ZIP archive. The default target of this subcommand is the
+DAS. Optionally you can target a configuration, server, instance, or
+cluster.
+
+1. Ensure that the target server or cluster is running.
++
+Remote subcommands require a running server.
+2. Use the link:reference-manual/collect-log-files.html#GSRFM00007[`collect-log-files`] subcommand to create
+the ZIP archive.
++
+The default location in which the ZIP archive is created is the
+domain-dir`/collected-logs` directory. The `collect-log-files`
+subcommand allows you to specify a nondefault directory in which the ZIP
+archive is to be created by using the `--retrieve` option set to `true`,
+followed by the directory name.
++
+The name of the ZIP file contains the timestamp, as follows:
++
+`log_`yyyy-mm-dd_hh-min-sec`.zip`
+
+[[GSADG00186]][[gklap]]
+Example 7-17 Creating a ZIP Archive
+
+This example shows collecting the log files for the cluster `MyCluster`
+and compiling them into a ZIP archive in the `/space/output` directory.
+
+[source]
+----
+asadmin> collect-log-files --target MyCluster
+--retrieve true /space/output
+Log files are downloaded for ClusterServer1.
+Log files are downloaded for ClusterServer2.
+ Created Zip file under /space/output/log_2011-02-10_13-35-25.zip.
+Command collect-log-files executed successfully.
+----
+
+When the ZIP file created by the preceding command is uncompressed, the
+following directory structure is created:
+
+[source]
+----
+as-install-parent/
+  glassfish/
+    domains/
+      domain-dir/
+        collected_logs/
+          logs/
+            ClusterServer1/
+              server.log
+            ClusterServer2/
+              server.log
+----
+
+[[GSADG874]]
+
+See Also
+
+You can view the full syntax and options of the subcommand by typing
+`asadmin help collect-log-files` at the command line.
+
+[[CEGGHGIJ]][[GSADG1073]][[listing-loggers]]
+
+=== Listing Loggers
+
+You can list and view information about all public loggers in your
+distribution of {productName}.
+
+[[CEGGICGF]][[GSADG1074]][[to-list-loggers]]
+
+==== To List Loggers
+
+Use the `list-loggers` subcommand in remote mode to list the logger
+name, subsystem, and description of loggers in your distribution of
+{productName}. Internal loggers are not listed.
+
+1. Ensure that the target server or cluster is running. Remote commands require a running server.
+2. List loggers by using the link:reference-manual/redeploy.html#GSRFM00217[`list-loggers`]
+subcommand.
+
+[[GSADG1075]][[sthref27]]
+Example 7-18 Listing Loggers
+
+This example lists the logger name, subsystem, and description for each
+logger. Some lines of output are omitted from this example for
+readability.
+
+[source]
+----
+asadmin> list-loggers
+Logger Name                            Subsystem         Logger Description
+...
+jakarta.enterprise.monitoring            Monitoring        Monitoring Logger
+jakarta.enterprise.system.core.ee        AS-CORE           Jakarta EE Core Kernel
+jakarta.enterprise.system.jmx            JMX               JMX System Logger
+jakarta.enterprise.system.tools.admin    ADMIN             Administration Services
+...
+Command list-loggers executed successfully.
+----
+
+[[GSADG1076]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-loggers` at the command line.
+
+
diff --git a/docs/administration-guide/src/main/asciidoc/lot.adoc b/docs/administration-guide/src/main/asciidoc/lot.adoc
new file mode 100644
index 0000000..75ac2c6
--- /dev/null
+++ b/docs/administration-guide/src/main/asciidoc/lot.adoc
@@ -0,0 +1,77 @@
+type=page
+status=published
+title=List of Tables
+next=title.html
+prev=lof.html
+~~~~~~
+
+= List of Tables
+
+[[list-of-tables]]
+== List of Tables
+
+* link:overview.html#giuad[1-1 Default Administration Values]
+* link:overview.html#gjhfv[1-2 Default Locations]
+* link:general-administration.html#gkame[2-1 REST Resource Methods for
+Administering Monitoring and Configuration Data]
+* link:webapps.html#fvyhk[6-1 URL Fields for Servlets Within an
+Application]
+* link:monitoring.html#ghlta[8-1 HTTP Listener Common Monitoring
+Statistics]
+* link:monitoring.html#ghlsl[8-2 JVM Common Monitoring Statistics]
+* link:monitoring.html#ghqly[8-3 Web Module Common Monitoring Statistics]
+* link:monitoring.html#ggnpb[8-4 Example Resources Level Dotted Names]
+* link:monitoring.html#gelod[8-5 EJB Cache Monitoring Statistics]
+* link:monitoring.html#gelns[8-6 EJB Container Monitoring Statistics]
+* link:monitoring.html#gelnu[8-7 EJB Method Monitoring Statistics]
+* link:monitoring.html#gelpe[8-8 EJB Pool Monitoring Statistics]
+* link:monitoring.html#gelob[8-9 Timer Monitoring Statistics]
+* link:monitoring.html#gelnm[8-10 HTTP Service Virtual Server Monitoring
+Statistics]
+* link:monitoring.html#gjjys[8-11 Jersey Statistics]
+* link:monitoring.html#gelot[8-12 Connector Connection Pool Monitoring
+Statistics (JMS)]
+* link:monitoring.html#gelnz[8-13 Connector Work Management Monitoring
+Statistics (JMS)]
+* link:monitoring.html#gelow[8-14 JVM Monitoring Statistics for Java SE
+Class Loading]
+* link:monitoring.html#geloa[8-15 JVM Monitoring Statistics for Java SE -
+Threads]
+* link:monitoring.html#gelnt[8-16 JVM Monitoring Statistics for Java SE
+Compilation]
+* link:monitoring.html#gelox[8-17 JVM Monitoring Statistics for Java SE
+Garbage Collectors]
+* link:monitoring.html#gelnx[8-18 JVM Monitoring Statistics for Java SE
+Memory]
+* link:monitoring.html#gelog[8-19 JVM Statistics for the Java SE
+Operating System]
+* link:monitoring.html#gelop[8-20 JVM Monitoring Statistics for Java SE
+Runtime]
+* link:monitoring.html#gjirp[8-21 Network Keep Alive Statistics]
+* link:monitoring.html#gjjxc[8-22 Network Connection Queue Statistics]
+* link:monitoring.html#gjjpd[8-23 Network File Cache Statistics]
+* link:monitoring.html#gjjov[8-24 Network Thread Pool Statistics]
+* link:monitoring.html#gelqw[8-25 ORB Monitoring Statistics (Connection
+Manager)]
+* link:monitoring.html#gelqa[8-26 General Resource Monitoring Statistics
+(Connection Pool)]
+* link:monitoring.html#gktcp[8-27 Application Specific Resource
+Monitoring Statistics (Connection Pool)]
+* link:monitoring.html#gjirc[8-28 EJB Security Monitoring Statistics]
+* link:monitoring.html#gjiqv[8-29 Web Security Monitoring Statistics]
+* link:monitoring.html#gjirq[8-30 Realm Security Monitoring Statistics]
+* link:monitoring.html#gelqt[8-31 Thread Pool Monitoring Statistics]
+* link:monitoring.html#geloy[8-32 JVM Monitoring Statistics for Java SE -
+Thread Info]
+* link:monitoring.html#gelpl[8-33 Transaction Service Monitoring
+Statistics]
+* link:monitoring.html#gjkba[8-34 Web Module Servlet Statistics]
+* link:monitoring.html#givgh[8-35 Web JSP Monitoring Statistics]
+* link:monitoring.html#gjisw[8-36 Web Request Monitoring Statistics]
+* link:monitoring.html#ghqiu[8-37 Web Servlet Monitoring Statistics]
+* link:monitoring.html#gellc[8-38 Web Session Monitoring Statistics]
+* link:http_https.html#ggnpj[13-1 Default Ports for Listeners]
+* link:jndi.html#fxizy[18-1 JNDI Lookup Names and Their Associated
+References]
+
+
diff --git a/docs/administration-guide/src/main/asciidoc/monitoring.adoc b/docs/administration-guide/src/main/asciidoc/monitoring.adoc
new file mode 100644
index 0000000..380f3dc
--- /dev/null
+++ b/docs/administration-guide/src/main/asciidoc/monitoring.adoc
@@ -0,0 +1,2768 @@
+type=page
+status=published
+title=Administering the Monitoring Service
+next=lifecycle-modules.html
+prev=logging.html
+~~~~~~
+
+= Administering the Monitoring Service
+
+[[GSADG00011]][[ablur]]
+
+
+[[administering-the-monitoring-service]]
+== 8 Administering the Monitoring Service
+
+This chapter explains how to monitor the {productName} 7 components and services by using the `asadmin` command-line
+utility. Instructions for configuring JConsole to monitor {productName} resources are also provided.
+
+The following topics are addressed here:
+
+* link:#ablus[About Monitoring]
+* link:#ablvp[Configuring Monitoring]
+* link:#ablvs[Viewing Common Monitoring Data]
+* link:#ghmct[Viewing Comprehensive Monitoring Data]
+* link:#giwqm[Configuring JConsole to View {productName} Monitoring
+Data]
+
+Instructions for monitoring by using the Administration Console are
+contained in the Administration Console online help.
+
+For information on using REST interfaces for monitoring, see
+link:general-administration.html#gjipx[Using REST Interfaces to
+Administer {productName}].
+
+[[ablus]][[GSADG00557]][[about-monitoring]]
+
+=== About Monitoring
+
+Monitoring is the process of reviewing the statistics of a system to
+improve performance or solve problems. The monitoring service can track
+and display operational statistics, such as the number of requests per
+second, the average response time, and the throughput. By monitoring the
+state of various components and services deployed in {productName},
+you can identify performance bottlenecks, predict failures, perform root
+cause analysis, and ensure that everything is functioning as expected.
+Data gathered by monitoring can also be useful in performance tuning and
+capacity planning.
+
+For this release of {productName}, monitoring is exposed in a modular
+way so that many client modules can access and display the monitoring
+statistics. These clients include the Administration Console, the
+`asadmin` utility, AMX, and REST interfaces.
+
+The following topics are addressed here:
+
+* link:#ghbaz[How the Monitoring Tree Structure Works]
+* link:#gitkq[About Monitoring for Add-on Components]
+* link:#ghbfq[Tools for Monitoring {productName}]
+
+[[ghbaz]][[GSADG00727]][[how-the-monitoring-tree-structure-works]]
+
+==== How the Monitoring Tree Structure Works
+
+A monitorable object is a component, subcomponent, or service that can
+be monitored. {productName} uses a tree structure to track
+monitorable objects. Because the tree is dynamic, the tree changes as
+{productName} components are added or removed.
+
+In the tree, a monitorable object can have child objects (nodes) that
+represent exactly what can be monitored for that object. All child
+objects are addressed using the dot (.) character as a separator. These
+constructed names are referred to as dotted names. Detailed information
+on dotted names is available in the
+link:reference-manual/dotted-names.html#GSRFM00268[`dotted-names`(5ASC)] help page.
+
+The following command lists the monitorable child objects of the
+instance `server`:
+
+[source]
+----
+asadmin> list --monitor "server.*"
+
+server.applications
+server.connector-service
+server.http-service
+server.jms-service
+server.jvm
+server.network
+server.orb
+server.resources
+server.security
+server.thread-pool
+server.transaction-service
+server.web
+----
+
+Each object is represented by a dotted name. Dotted names can also
+address specific attributes in monitorable objects. For example, the
+`jvm` object has a `memory` attribute with a statistic called
+`maxheapsize`. The following dotted name addresses the attribute:
+
+[source]
+----
+server.jvm.memory.maxheapsize
+----
+
+Although an object is monitorable, it is not necessarily being actively
+monitored. For instructions on activating monitoring, see
+link:#ablvp[Configuring Monitoring].
+
+[[abluv]][[GSADG00647]][[tree-structure-of-monitorable-objects]]
+
+===== Tree Structure of Monitorable Objects
+
+Each monitorable object has a hierarchical tree structure. In the tree,
+a replaceable such as *statistics represents the name of the attribute
+that you can show statistics for.
+
+The following node tree hierarchies are addressed here:
+
+* link:#abluw[Applications Tree Hierarchy]
+* link:#abluz[Connector Service Tree Hierarchy]
+* link:#ghlin[HTTP Service Tree Hierarchy]
+* link:#ablva[JMS/Container Service Tree Hierarchy]
+* link:#ghlic[JVM Tree Hierarchy]
+* link:#giznj[Network Tree Hierarchy]
+* link:#ablvb[ORB Tree Hierarchy]
+* link:#giqdo[Resources Tree Hierarchy]
+* link:#gjios[Security Tree Hierarchy]
+* link:#ablvc[Thread Pool Tree Hierarchy]
+* link:#gitci[Transactions Service Tree Hierarchy]
+* link:#ghlff[Web Tree Hierarchy]
+
+[[abluw]][[GSADG00040]][[applications-tree-hierarchy]]
+
+Applications Tree Hierarchy
+
+The `applications` tree contains the following nodes:
+
+[source]
+----
+server.applications
+   |--- application1
+   |    |--- ejb-module-1
+   |    |        |--- ejb1 *
+   |    |                  |--- bean-cache (for entity/sfsb) *
+   |    |                  |--- bean-pool (for slsb/mdb/entity) *
+   |    |                  |--- bean-methods
+   |    |                       |---method1 *
+   |    |                       |---method2 *
+   |    |                  |--- timers (for s1sb/entity/mdb) *
+   |    |--- web-module-1
+   |    |        |--- virtual-server-1 *
+   |    |                       |---servlet1  *
+   |    |                       |---servlet2  *
+   |--- standalone-web-module-1
+   |    |        |----- virtual-server-2 *
+   |    |                       |---servlet3 *
+   |    |                       |---servlet4 *
+   |    |        |----- virtual-server-3 *
+   |    |                       |---servlet3 *(same servlet on different vs)
+   |    |                       |---servlet5 *
+   |--- standalone-ejb-module-1
+   |    |        |--- ejb2 *
+   |    |                  |--- bean-cache (for entity/sfsb) *
+   |    |                  |--- bean-pool (for slsb/mdb/entity) *
+   |    |                  |--- bean-methods
+   |    |                       |--- method1 *
+   |    |                       |--- method2 *
+   |    |                  |--- timers (for s1sb/entity/mdb) *
+   |--- jersey-application-1
+   |    |--- jersey
+   |    |        |--- resources
+                           resource-0
+                               hitcount
+                                    *statistic
+   |--- application2
+----
+
+An example dotted name might be:
+
+[source]
+----
+server.applications.hello.server.request.maxtime
+----
+
+An example dotted name under the EJB `method` node might be:
+
+[source]
+----
+server.applications.ejbsfapp1.ejbsfapp1ejbmod1\.jar.SFApp1EJB1
+----
+
+An example Jersey dotted name might be:
+
+[source]
+----
+server.applications.helloworld-webapp.jersey.resources.resource-0.hitcount.resourcehitcount-count
+----
+
+For available statistics, see link:#gjkbi[EJB Statistics],
+link:#gjjyb[Jersey Statistics], and link:#ablvf[Web Statistics].
+
+[[abluz]][[GSADG00041]][[connector-service-tree-hierarchy]]
+
+Connector Service Tree Hierarchy
+
+The `connector-service` tree holds monitorable attributes for pools such
+as the connector connection pool. The `connector-service` tree contains
+the following nodes:
+
+[source]
+----
+server.connector-service
+        resource-adapter-1
+             connection-pools
+                  pool-1
+             work-management
+----
+
+An example dotted name might be
+`server.connector-service.resource-adapter-1.connection-pools.pool-1`.
+For available statistics, see link:#ablvi[JMS/Connector Service
+Statistics].
+
+[[ghlin]][[GSADG00042]][[http-service-tree-hierarchy]]
+
+HTTP Service Tree Hierarchy
+
+The `http-service` tree contains the following nodes:
+
+[source]
+----
+server.http-service
+       virtual-server
+           request
+               *statistic
+       _asadmin
+           request
+               *statistic
+----
+
+An example dotted name under the virutal-server node might be
+`server.http-service.virtual-server1.request.requestcount`. For
+available statistics, see link:#ablvg[HTTP Service Statistics].
+
+[[ablva]][[GSADG00043]][[jmscontainer-service-tree-hierarchy]]
+
+JMS/Container Service Tree Hierarchy
+
+The `jms-service` tree holds monitorable attributes for connection
+factories (connection pools for resource adapters) and work management
+(for Message Queue resource adapters). The `jms-service` tree contains
+the following nodes:
+
+[source]
+----
+server.jms-service
+        connection-factories
+             connection-factory-1
+        work-management
+----
+
+An example dotted name under the `connection-factories` node might be
+`server.jms-service.connection-factories.connection-factory-1` which
+shows all the statistics for this connection factory. For available
+statistics, see link:#ablvi[JMS/Connector Service Statistics].
+
+[[ghlic]][[GSADG00044]][[jvm-tree-hierarchy]]
+
+JVM Tree Hierarchy
+
+The `jvm` tree contains the following nodes:
+
+[source]
+----
+server.jvm
+           class-loading-system
+           compilation-system
+           garbage-collectors
+           memory
+           operating-system
+           runtime
+----
+
+An example dotted name under the `memory` node might be
+`server.jvm.memory.maxheapsize`. For available statistics, see
+link:#ablvm[JVM Statistics].
+
+[[giznj]][[GSADG00045]][[network-tree-hierarchy]]
+
+Network Tree Hierarchy
+
+The network statistics apply to the network listener, such as
+`admin-listener`, `http-listener-1`, `ttp-listener-2`. The `network`
+tree contains the following nodes:
+
+[source]
+----
+server.network
+          type-of-listener
+              keep-alive
+                    *statistic
+              file-cache
+                    *statistic
+              thread-pool
+                    *statistic
+              connection-queue
+                     *statistic
+----
+
+An example dotted name under the `network` node might be
+`server.network.admin-listener.keep-alive.maxrequests-count`. For
+available statistics, see link:#gjipy[Network Statistics].
+
+[[ablvb]][[GSADG00046]][[orb-tree-hierarchy]]
+
+ORB Tree Hierarchy
+
+The `orb` tree holds monitorable attributes for connection managers. The
+`orb` tree contains the following nodes:
+
+[source]
+----
+server.orb
+    transport
+        connectioncache
+            inbound
+                *statistic
+            outbound
+                *statistic
+----
+
+An example dotted name might be
+`server.orb.transport.connectioncache.inbound.connectionsidle-count`.
+For available statistics, see link:#ablvj[ORB Statistics (Connection
+Manager)].
+
+[[giqdo]][[GSADG00047]][[resources-tree-hierarchy]]
+
+Resources Tree Hierarchy
+
+The `resources` tree holds monitorable attributes for pools such as the
+JDBC connection pool and connector connection pool. The `resources` tree
+contains the following nodes:
+
+[source]
+----
+server.resources
+       connection-pool
+           request
+               *statistic
+----
+
+An example dotted name might be
+`server.resources.jdbc-connection-pool1.numconnfree.count`. For
+available statistics, see link:#gipzv[Resource Statistics (Connection
+Pool)].
+
+[[gjios]][[GSADG00048]][[security-tree-hierarchy]]
+
+Security Tree Hierarchy
+
+The security tree contains the following nodes:
+
+[source]
+----
+server.security
+       ejb
+          *statistic
+       web
+          *statistic
+       realm
+          *statistic
+----
+
+An example dotted name might be
+`server.security.realm.realmcount-starttime`. For available statistics,
+see link:#gjiov[Security Statistics].
+
+[[ablvc]][[GSADG00049]][[thread-pool-tree-hierarchy]]
+
+Thread Pool Tree Hierarchy
+
+The `thread-pool` tree holds monitorable attributes for connection
+managers, and contains the following nodes:
+
+[source]
+----
+server.thread-pool
+                orb
+                    threadpool
+                            thread-pool-1
+                                *statistic
+----
+
+An example dotted name might be
+`server.thread-pool.orb.threadpool.thread-pool-1.averagetimeinqueue-current`.
+For available statistics, see link:#ablvk[Thread Pool Statistics].
+
+[[gitci]][[GSADG00050]][[transactions-service-tree-hierarchy]]
+
+Transactions Service Tree Hierarchy
+
+The `transaction-service` tree holds monitorable attributes for the
+transaction subsystem for the purpose of rolling back transactions. The
+`transaction-service` tree contains the following nodes:
+
+[source]
+----
+server.transaction-service
+         statistic
+----
+
+An example dotted name might be `server.tranaction-service.activeids`.
+For available statistics, see link:#ablvl[Transaction Service
+Statistics].
+
+[[ghlff]][[GSADG00051]][[web-tree-hierarchy]]
+
+Web Tree Hierarchy
+
+The `web` tree contains the following nodes:
+
+[source]
+----
+server.web
+           jsp
+              *statistic
+           servlet
+              *statistic
+           session
+              *statistic
+           request
+              *statistic
+----
+
+An example dotted name for the `servlet` node might be
+`server.web.servlet.activeservletsloadedcount`. For available
+statistics, see link:#ghljx[Web Module Common Statistics].
+
+[[gitkq]][[GSADG00728]][[about-monitoring-for-add-on-components]]
+
+==== About Monitoring for Add-on Components
+
+An add-on component typically generates statistics that {productName}
+can gather at runtime. Adding monitoring capabilities enables an add-on
+component to provide statistics to {productName} in the same way as
+components that are supplied in the {productName} distributions. As a
+result, you can use the same administrative interfaces to monitor
+statistics from any installed {productName} component, regardless of
+the origin of the component.
+
+[[ghbfq]][[GSADG00729]][[tools-for-monitoring-glassfish-server]]
+
+==== Tools for Monitoring {productName}
+
+The following `asadmin` subcommands are provided for monitoring the
+services and components of {productName}:
+
+* The `enable-monitoring`, `disable-monitoring`, or the `get` and `set`
+subcommands are used to turn monitoring on or off. For instructions, see
+link:#ablvp[Configuring Monitoring].
+* The `monitor` `type` subcommand is used to display basic data for a
+particular type of monitorable object. For instructions, see
+link:#ablvs[Viewing Common Monitoring Data].
+* The `list` `--monitor` subcommand is used to display the objects that
+can be monitored with the `monitor` subcommand. For guidelines and
+instructions, see link:#ablwh[Guidelines for Using the `list` and `get`
+Subcommands for Monitoring].
+* The `get` subcommand is used to display comprehensive data, such as
+the attributes and values for a dotted name. The `get` subcommand used
+with a wildcard parameter displays all available attributes for any
+monitorable object. For additional information, see
+link:#ablwh[Guidelines for Using the `list` and `get` Subcommands for
+Monitoring].
+
+[[ablvp]][[GSADG00558]][[configuring-monitoring]]
+
+=== Configuring Monitoring
+
+By default, the monitoring service is enabled for {productName}, but
+monitoring for the individual modules is not. To enable monitoring for a
+module, you change the monitoring level for that module to LOW or HIGH,
+You can choose to leave monitoring OFF for objects that do not need to
+be monitored.
+
+* LOW. Simple statistics, such as create count, byte count, and so on
+* HIGH. Simple statistics plus method statistics, such as method count,
+duration, and so on
+* OFF. No monitoring, no impact on performance
+
+The following tasks are addressed here:
+
+* link:#ablvr[To Enable Monitoring]
+* link:#gglcu[To Disable Monitoring]
+
+[[ablvr]][[GSADG00386]][[to-enable-monitoring]]
+
+==== To Enable Monitoring
+
+Use the `enable-monitoring` subcommand to enable the monitoring service
+itself, or to enable monitoring for individual modules. Monitoring is
+immediately activated, without restarting {productName}.
+
+You can also use the link:reference-manual/set.html#GSRFM00226[`set`] subcommand to enable
+monitoring for a module. Using the `set` command is not a dynamic
+procedure, so you need to restart {productName} for your changes to
+take effect.
+
+1. Determine which services and components are currently enabled for
+monitoring.
++
+[source]
+----
+asadmin> get server.monitoring-service.module-monitoring-levels.*
+----
+This example output shows that the HTTP service is not enabled (OFF for
+monitoring), but other objects are enabled:
++
+[source]
+----
+configs.config.server-config.monitoring-service.module-monitoring-levels.web-container=HIGH
+       configs.config.server-config.monitoring-service.module-monitoring-levels.http-service=OFF
+           configs.config.server-config.monitoring-service.module-monitoring-levels.jvm=HIGH
+----
+2. Enable monitoring by using the olink:GSRFM00128[`enable-monitoring`]
+subcommand.
++
+Server restart is not required.
+
+[[GSADG00188]][[gixri]]
+Example 8-1 Enabling the Monitoring Service Dynamically
+
+This example enables the monitoring service without affecting monitoring
+for individual modules.
+
+[source]
+----
+asadmin> enable-monitoring
+Command enable-monitoring executed successfully
+----
+
+[[GSADG00189]][[gixre]]
+Example 8-2 Enabling Monitoring for Modules Dynamically
+
+This example enables monitoring for the `ejb-container` module.
+
+[source]
+----
+asadmin> enable-monitoring --level ejb-container=HIGH
+Command enable-monitoring executed successfully
+----
+
+[[GSADG00190]][[gjcmm]]
+Example 8-3 Enabling Monitoring for Modules by Using the `set`
+Subcommand
+
+This example enables monitoring for the HTTP service by setting the
+monitoring level to HIGH (you must restart the server for changes to
+take effect).
+
+[source]
+----
+asadmin> set server.monitoring-service.module-monitoring-levels.http-service=HIGH
+Command set executed successfully
+----
+
+[[GSADG875]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help enable-monitoring` at the command line.
+
+[[gglcu]][[GSADG00387]][[to-disable-monitoring]]
+
+==== To Disable Monitoring
+
+Use the `disable-monitoring` subcommand to disable the monitoring
+service itself, or to disable monitoring for individual modules.
+Monitoring is immediately stopped, without restarting {productName}.
+
+You can also use the link:reference-manual/set.html#GSRFM00226[`set`] subcommand to disable
+monitoring for a module. Using the `set` command is not a dynamic
+procedure, so you need to restart {productName} for your changes to
+take effect.
+
+1. Determine which services and components currently are enabled for
+monitoring.
++
+[source]
+----
+asadmin get server.monitoring-service.module-monitoring-levels.*
+----
+This example output shows that monitoring is enabled for
+`web-container`, `http-service`, and `jvm`:
++
+[source]
+----
+configs.config.server-config.monitoring-service.module-monitoring-levels.web-container=HIGH
+       configs.config.server-config.monitoring-service.module-monitoring-levels.http-service=HIGH
+              configs.config.server-config.monitoring-service.module-monitoring-levels.jvm=HIGH
+----
+2. Disable monitoring for a service or module by using the
+link:reference-manual/disable-monitoring.html#GSRFM00120[`disable-monitoring`] subcommand.
++
+Server restart is not required.
+
+[[GSADG00191]][[gixsc]]
+Example 8-4 Disabling the Monitoring Service Dynamically
+
+This example disables the monitoring service without changing the
+monitoring levels for individual modules.
+
+[source]
+----
+asadmin> disable-monitoring
+Command disable-monitoring executed successfully
+----
+
+[[GSADG00192]][[gjcnw]]
+Example 8-5 Disabling Monitoring for Modules Dynamically
+
+This example disables monitoring for specific modules. Their monitoring
+levels are set to OFF.
+
+[source]
+----
+asadmin> disable-monitoring --modules web-container,ejb-container
+Command disable-monitoring executed successfully
+----
+
+[[GSADG00193]][[gixpg]]
+Example 8-6 Disabling Monitoring by Using the `set` Subcommand
+
+This example disables monitoring for the HTTP service (you must restart
+the server for changes to take effect).
+
+[source]
+----
+asadmin> set server.monitoring-service.module-monitoring-levels.http-service=OFF
+Command set executed successfully
+----
+
+[[GSADG876]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help disable-monitoring` at the command line.
+
+[[ablvs]][[GSADG00559]][[viewing-common-monitoring-data]]
+
+=== Viewing Common Monitoring Data
+
+Use the `monitor` subcommand to display basic data on commonly-monitored
+objects.
+
+* link:#gelol[To View Common Monitoring Data]
+* link:#ghmdc[Common Monitoring Statistics]
+
+[[gelol]][[GSADG00388]][[to-view-common-monitoring-data]]
+
+==== To View Common Monitoring Data
+
+Use the `--type` option of the `monitor` subcommand to specify the
+object for which you want to display data, such as `httplistener`,
+`jvm`, `webmodule`. If you use the `monitor` subcommand without
+specifying a type, an error message is displayed.
+
+Output from the subcommand is displayed continuously in a tabular
+format. The `--interval` option can be used to display output at a
+particular interval (the default is 30 seconds).
+
+[[GSADG877]]
+
+Before You Begin
+
+A monitorable object must be configured for monitoring before you can
+display data on the object. See link:#ablvr[To Enable Monitoring].
+
+1. Determine which type of monitorable object you want to monitor.
++
+Your choices for 5.0 are `jvm`, `httplistener`, and `webmodule`.
+2. Request the monitoring data by using the link:reference-manual/monitor.html#GSRFM00212[`monitor`]
+subcommand.
+
+[[GSADG00194]][[ghljw]]
+Example 8-7 Viewing Common Monitoring Data
+
+This example requests common data for type `jvm` on instance `server`.
+
+[source]
+----
+asadmin> monitor --type jvm server
+
+UpTime(ms)                          Heap and NonHeap Memory(bytes)
+current                   min        max        low        high       count
+
+9437266                   8585216    619642880  0          0          93093888
+9467250                   8585216    619642880  0          0          93093888
+----
+
+[[GSADG878]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help monitor` at the command line.
+
+[[ghmdc]][[GSADG00730]][[common-monitoring-statistics]]
+
+==== Common Monitoring Statistics
+
+Common monitoring statistics are described in the following sections:
+
+* link:#ghltk[HTTP Listener Common Statistics]
+* link:#ghlvm[JVM Common Statistics]
+* link:#ghljx[Web Module Common Statistics]
+
+[[ghltk]][[GSADG00648]][[http-listener-common-statistics]]
+
+===== HTTP Listener Common Statistics
+
+The statistics available for the `httplistener` type are shown in the
+following table.
+
+[[GSADG879]][[sthref28]][[ghlta]]
+
+
+Table 8-1 HTTP Listener Common Monitoring Statistics
+
+[width="100%",cols="17%,83%",options="header",]
+|===
+|Statistic |Description
+|`ec` |Error count. Cumulative value of the error count
+
+|`mt` |Maximum time. Longest response time for a request; not a
+cumulative value, but the largest response time from among the response
+times
+
+|`pt` |Processing time. Cumulative value of the times taken to process
+each request, with processing time being the average of request
+processing times over request
+
+|`rc` |Request count. Cumulative number of requests processed so far
+|===
+
+
+[[ghlvm]][[GSADG00649]][[jvm-common-statistics]]
+
+===== JVM Common Statistics
+
+The statistics available for the `jvm` type are shown in the following
+table.
+
+[[GSADG880]][[sthref29]][[ghlsl]]
+
+
+Table 8-2 JVM Common Monitoring Statistics
+
+[width="100%",cols="19%,81%",options="header",]
+|===
+|Statistic |Description
+|`count` |Amount of memory (in bytes) that is guaranteed to be available
+for use by the JVM machine
+
+|`high` |Retained for compatibility with other releases
+
+|`low` |Retained for compatibility with other releases
+
+|`max` |The maximum amount of memory that can be used for memory
+management.
+
+|`min` |Initial amount of memory (in bytes) that the JVM machine
+requests from the operating system for memory management during startup
+
+|`UpTime` |Number of milliseconds that the JVM machine has been running
+since it was last started
+|===
+
+
+[[ghljx]][[GSADG00650]][[web-module-common-statistics]]
+
+===== Web Module Common Statistics
+
+The statistics available for the `webmodule` type are shown in the
+following table.
+
+[[GSADG881]][[sthref30]][[ghqly]]
+
+
+Table 8-3 Web Module Common Monitoring Statistics
+
+[width="100%",cols="18%,82%",options="header",]
+|===
+|Statistic |Description
+|`ajlc` |Number of active JavaServer Pages (JSP) technology pages that
+are loaded
+
+|`asc` |Current active sessions
+
+|`aslc` |Number of active servlets that are loaded
+
+|`ast` |Total active sessions
+
+|`mjlc` |Maximum number of JSP pages that are loaded
+
+|`mslc` |Maximum number of servlets that are loaded
+
+|`rst` |Total rejected sessions
+
+|`st` |Total sessions
+
+|`tjlc` |Total number of JSP pages that are loaded
+
+|`tslc` |Total number of servlets that are loaded
+|===
+
+
+[[ghmct]][[GSADG00560]][[viewing-comprehensive-monitoring-data]]
+
+=== Viewing Comprehensive Monitoring Data
+
+By applying the `list` and `get` subcommands against the tree structure
+using dotted names, you can display more comprehensive monitoring data,
+such as a description of each of the statistics and its unit of
+measurement.
+
+The following topics are addressed here:
+
+* link:#ablwh[Guidelines for Using the `list` and `get` Subcommands for
+Monitoring]
+* link:#ablvv[To View Comprehensive Monitoring Data]
+* link:#ghmcn[Comprehensive Monitoring Statistics]
+
+[[ablwh]][[GSADG00731]][[guidelines-for-using-the-list-and-get-subcommands-for-monitoring]]
+
+==== Guidelines for Using the `list` and `get` Subcommands for Monitoring
+
+The underlying assumptions for using the `list` and `get` subcommands
+with dotted names are:
+
+* A `list` subcommand that specifies a dotted name that is not followed
+by a wildcard (`*`) lists the current node's immediate children. For
+example, the following subcommand lists all immediate children belonging
+to the `server` node:
++
+[source]
+----
+list --monitor server
+----
+* A `list` subcommand that specifies a dotted name followed by a
+wildcard of the form `.*` lists a hierarchical tree of child nodes from
+the specified node. For example, the following subcommand lists all
+children of the `applications` node, their subsequent child nodes, and
+so on:
++
+[source]
+----
+list --monitor server.applications.*
+----
+* A `list` subcommand that specifies a dotted name preceded or followed
+by a wildcard of the form *dottedname or dotted * name or dottedname *
+lists all nodes and their children that match the regular expression
+created by the specified matching pattern.
+* A `get` subcommand followed by a `.*` or a `*` gets the set of
+attributes and their values that belong to the node specified.
+
+For example, the following table explains the output of the `list` and
+`get` subcommands used with the dotted name for the `resources` node.
+
+[[GSADG882]][[sthref31]][[ggnpb]]
+
+
+Table 8-4 Example Resources Level Dotted Names
+
+[width="100%",cols="23%,41%,36%",options="header",]
+|===
+|Subcommand |Dotted Name |Output
+|`list --monitor` |`server.resources` |List of pool names.
+
+|`list --monitor` |`server.resources.``connection-pool1` |No attributes,
+but a message saying "Use `get` subcommand with the `--monitor` option
+to view this node's attributes and values."
+
+|`get --monitor` |`server.resources.``connection-pool1.*` |List of
+attributes and values corresponding to connection pool attributes.
+|===
+
+
+For detailed information on dotted names, see the
+link:reference-manual/dotted-names.html#GSRFM00268[`dotted-names`(5ASC)] help page.
+
+[[ablvv]][[GSADG00389]][[to-view-comprehensive-monitoring-data]]
+
+==== To View Comprehensive Monitoring Data
+
+Although the `monitor` subcommand is useful in many situations, it does
+not offer the complete list of all monitorable objects. To work with
+comprehensive data for an object type, use the `list` `monitor` and the
+`get` `monitor` subcommands followed by the dotted name of a monitorable
+object.
+
+[[GSADG883]]
+
+Before You Begin
+
+A monitorable object must be configured for monitoring before you can
+display information about the object. See link:#ablvr[To Enable
+Monitoring] if needed.
+
+1. List the objects that are enabled for monitoring by using the
+link:reference-manual/list.html#GSRFM00145[`list`] subcommand.
++
+For example, the following subcommand lists all components and services
+that have monitoring enabled for instance `server`.
++
+[source]
+----
+asadmin> list --monitor "*"
+server.web
+server.connector-service
+server.orb
+server.jms-serviceserver.jvm
+server.applications
+server.http-service
+server.thread-pools
+----
+2. Get data for a monitored component or service by using the
+link:reference-manual/get.html#GSRFM00139[`get`] subcommand.
+
+[[GSADG00195]][[ghlre]]
+Example 8-8 Viewing Attributes for a Specific Type
+
+This example gets information about all the attributes for object type
+`jvm` on instance `server`.
+
+[source]
+----
+asadmin> get --monitor server.jvm.*
+server.jvm.class-loading-system.loadedclasscount = 3715
+server.jvm.class-loading-system.totalloadedclasscount = 3731
+server.jvm.class-loading-system.unloadedclasscount = 16
+server.jvm.compilation-system.name-current = HotSpot Client Compiler
+server.jvm.compilation-system.totalcompilationtime = 769
+server.jvm.garbage-collectors.Copy.collectioncount = 285
+server.jvm.garbage-collectors.Copy.collectiontime = 980
+server.jvm.garbage-collectors.MarkSweepCompact.collectioncount = 2
+server.jvm.garbage-collectors.MarkSweepCompact.collectiontime = 383
+server.jvm.memory.committedheapsize = 23498752
+server.jvm.memory.committednonheapsize = 13598720
+server.jvm.memory.initheapsize = 0
+server.jvm.memory.initnonheapsize = 8585216
+server.jvm.memory.maxheapsize = 66650112
+server.jvm.memory.maxnonheapsize = 100663296
+server.jvm.memory.objectpendingfinalizationcount = 0
+server.jvm.memory.usedheapsize = 19741184
+server.jvm.memory.usednonheapsize = 13398352
+server.jvm.operating-system.arch-current = x86
+server.jvm.operating-system.availableprocessors = 2
+server.jvm.operating-system.name-current = Windows XP
+server.jvm.operating-system.version-current = 5.1
+server.jvm.runtime.classpath-current = glassfish.jar
+server.jvm.runtime.inputarguments-current = []
+server.jvm.runtime.managementspecversion-current = 1.0
+server.jvm.runtime.name-current = 4372@ABBAGANI_WORK
+server.jvm.runtime.specname-current = Java Virtual Machine Specification
+server.jvm.runtime.specvendor-current = Sun Microsystems Inc.
+server.jvm.runtime.specversion-current = 1.0
+server.jvm.runtime.uptime = 84813
+server.jvm.runtime.vmname-current = Java HotSpot(TM) Client VM
+server.jvm.runtime.vmvendor-current = Sun Microsystems Inc.
+server.jvm.runtime.vmversion-current = 1.5.0_11-b03
+----
+
+[[GSADG00196]][[ghbgv]]
+Example 8-9 Viewing Monitorable Applications
+
+This example lists all the monitorable applications for instance
+`server`.
+
+[source]
+----
+asadmin> list --monitor server.applications.*
+server.applications.app1
+server.applications.app2
+server.applications.app1.virtual-server1
+server.applications.app2.virtual-server1
+----
+
+[[GSADG00197]][[ghbfj]]
+Example 8-10 Viewing Attributes for an Application
+
+This example gets information about all the attributes for application
+`hello`.
+
+[source]
+----
+asadmin> get --monitor server.applications.hello.*
+server.applications.hello.server.activatedsessionstotal = 0
+server.applications.hello.server.activejspsloadedcount = 1
+server.applications.hello.server.activeservletsloadedcount = 1
+server.applications.hello.server.activesessionscurrent = 1
+server.applications.hello.server.activesessionshigh = 1
+server.applications.hello.server.errorcount = 0
+server.applications.hello.server.expiredsessionstotal = 0
+server.applications.hello.server.maxjspsloadedcount = 1
+server.applications.hello.server.maxservletsloadedcount = 0
+server.applications.hello.server.maxtime = 0
+server.applications.hello.server.passivatedsessionstotal = 0
+server.applications.hello.server.persistedsessionstotal = 0
+server.applications.hello.server.processingtime = 0.0
+server.applications.hello.server.rejectedsessionstotal = 0
+server.applications.hello.server.requestcount = 0
+server.applications.hello.server.sessionstotal =
+server.applications.hello.server.totaljspsloadedcount = 0
+server.applications.hello.server.totalservletsloadedcount = 0
+----
+
+[[GSADG00198]][[ghbge]]
+Example 8-11 Viewing a Specific Attribute
+
+This example gets information about the `jvm` attribute
+`runtime.vmversion-current` on instance `server`.
+
+[source]
+----
+asadmin> get --monitor server.jvm.runtime.vmversion-current
+server.jvm.runtime.vmversion-current = 10.0-b23
+----
+
+[[ghmcn]][[GSADG00732]][[comprehensive-monitoring-statistics]]
+
+==== Comprehensive Monitoring Statistics
+
+You can get comprehensive monitoring statistics by forming a dotted name
+that specifies the statistic you are looking for. For example, the
+following dotted name will display the cumulative number of requests for
+the HTTP service on `virtual-server1`:
+
+`server.http-service.virtual-server1.request.requestcount`
+
+The tables in the following sections list the statistics that are
+available for each monitorable object:
+
+* link:#gjkbi[EJB Statistics]
+* link:#ablvg[HTTP Service Statistics]
+* link:#gjjyb[Jersey Statistics]
+* link:#ablvi[JMS/Connector Service Statistics]
+* link:#ablvm[JVM Statistics]
+* link:#gjipy[Network Statistics]
+* link:#ablvj[ORB Statistics (Connection Manager)]
+* link:#gipzv[Resource Statistics (Connection Pool)]
+* link:#gjiov[Security Statistics]
+* link:#ablvk[Thread Pool Statistics]
+* link:#ablvl[Transaction Service Statistics]
+* link:#ablvf[Web Statistics]
+
+[[gjkbi]][[GSADG00651]][[ejb-statistics]]
+
+===== EJB Statistics
+
+EJBs fit into the tree of objects as shown in link:#abluw[Applications
+Tree Hierarchy]. Use the following dotted name pattern to get EJB
+statistics for an application:
+
+[source]
+----
+server.applications.appname.ejbmodulename.ejbname.bean-cache.statistic
+----
+
+
+[NOTE]
+====
+EJB statistics for an application are available after the application is
+executed. If the application is deployed but has not yet been executed,
+all counts will show default values. When the application is undeployed,
+all its monitoring data is lost.
+====
+
+
+Statistics available for applications are shown in the following
+sections:
+
+* link:#gisyw[EJB Cache Statistics]
+* link:#giszu[EJB Container Statistics]
+* link:#gisyx[EJB Method Statistics]
+* link:#gisza[EJB Pool Statistics]
+* link:#gisyr[Timer Statistics]
+
+[[gisyw]][[GSADG00052]][[ejb-cache-statistics]]
+
+EJB Cache Statistics
+
+Use the following dotted name pattern for EJB cache statistics:
+
+[source]
+----
+server.applications.appname.ejbmodulename.bean-cache.ejbname.statistic
+----
+
+The statistics available for EJB caches are listed in the following
+table.
+
+[[GSADG884]][[sthref32]][[gelod]]
+
+
+Table 8-5 EJB Cache Monitoring Statistics
+
+[width="100%",cols="37%,16%,47%",options="header",]
+|===
+|Statistic |Data Type |Description
+|`cachemisses` |RangeStatistic |The number of times a user request does
+not find a bean in the cache.
+
+|`cachehits` |RangeStatistic |The number of times a user request found
+an entry in the cache.
+
+|`numbeansincache` |RangeStatistic |The number of beans in the cache.
+This is the current size of the cache.
+
+|`numpassivations` |CountStatistic |Number of passivated beans. Applies
+only to stateful session beans.
+
+|`numpassivationerrors` |CountStatistic |Number of errors during
+passivation. Applies only to stateful session beans.
+
+|`numexpiredsessionsremoved` |CountStatistic |Number of expired sessions
+removed by the cleanup thread. Applies only to stateful session beans.
+
+|`numpassivationsuccess` |CountStatistic |Number of times passivation
+completed successfully. Applies only to stateful session beans.
+|===
+
+
+[[giszu]][[GSADG00053]][[ejb-container-statistics]]
+
+EJB Container Statistics
+
+Use the following dotted name pattern for EJB container statistics:
+
+[source]
+----
+server.applications.appname.ejbmodulename.container.ejbname
+----
+
+The statistics available for EJB containers are listed in the following
+table.
+
+[[GSADG885]][[sthref33]][[gelns]]
+
+
+Table 8-6 EJB Container Monitoring Statistics
+
+[width="100%",cols="24%,16%,60%",options="header",]
+|===
+|Statistic |Data Type |Description
+|`createcount` |CountStatistic |Number of times an EJB's `create` method
+is called.
+
+|`messagecount` |CountStatistic |Number of messages received for a
+message-driven bean.
+
+|`methodreadycount` |RangeStatistic |Number of stateful or stateless
+session beans that are in the `MethodReady` state.
+
+|`passivecount` |RangeStatistic |Number of stateful session beans that
+are in `Passive` state.
+
+|`pooledcount` |RangeStatistic |Number of entity beans in pooled state.
+
+|`readycount` |RangeStatistic |Number of entity beans in ready state.
+
+|`removecount` |CountStatistic |Number of times an EJB's `remove` method
+is called.
+|===
+
+
+[[gisyx]][[GSADG00054]][[ejb-method-statistics]]
+
+EJB Method Statistics
+
+Use the following dotted name pattern for EJB method statistics:
+
+[source]
+----
+server.applications.appname.ejbmodulename.bean-methods.ejbname.statistic
+----
+
+The statistics available for EJB method invocations are listed in the
+following table.
+
+[[GSADG886]][[sthref34]][[gelnu]]
+
+
+Table 8-7 EJB Method Monitoring Statistics
+
+[width="100%",cols="23%,16%,61%",options="header",]
+|===
+|Statistic |Data Type |Description
+|`executiontime` |CountStatistic |Time, in milliseconds, spent executing
+the method for the last successful/unsuccessful attempt to run the
+operation. This is collected for stateless and stateful session beans
+and entity beans if monitoring is enabled on the EJB container.
+
+|`methodstatistic` |TimeStatistic |Number of times an operation is
+called; the total time that is spent during the invocation, and so on.
+
+|`totalnumerrors` |CountStatistic |Number of times the method execution
+resulted in an exception. This is collected for stateless and stateful
+session beans and entity beans if monitoring is enabled for the EJB
+container.
+
+|`totalnumsuccess` |CountStatistic |Number of times the method
+successfully executed. This is collected for stateless and stateful
+session beans and entity beans if monitoring enabled is true for EJB
+container.
+|===
+
+
+[[gisza]][[GSADG00055]][[ejb-pool-statistics]]
+
+EJB Pool Statistics
+
+Use the following dotted name pattern for EJB pool statistics:
+
+[source]
+----
+server.applications.appname.ejbmodulename.bean-pool.ejbname.statistic
+----
+
+The statistics available for EJB pools are listed in the following
+table.
+
+[[GSADG887]][[sthref35]][[gelpe]]
+
+
+Table 8-8 EJB Pool Monitoring Statistics
+
+[width="100%",cols="28%,16%,56%",options="header",]
+|===
+|Statistic |Data Type |Description
+|`jmsmaxmessagesload` |CountStatistic |The maximum number of messages to
+load into a JMS session at one time for a message-driven bean to serve.
+Default is 1. Applies only to pools for message driven beans.
+
+|`numbeansinpool` |RangeStatistic |Number of EJBs in the associated
+pool, providing information about how the pool is changing.
+
+|`numthreadswaiting` |RangeStatistic |Number of threads waiting for free
+beans, giving an indication of possible congestion of requests.
+
+|`totalbeanscreated` |CountStatistic |Number of beans created in
+associated pool since the gathering of data started.
+
+|`totalbeansdestroyed` |CountStatistic |Number of beans destroyed from
+associated pool since the gathering of data started.
+|===
+
+
+[[gisyr]][[GSADG00057]][[timer-statistics]]
+
+Timer Statistics
+
+Use the following dotted name pattern for timer statistics:
+
+[source]
+----
+server.applications.appname.ejbmodulename.timers.ejbname.statistic
+----
+
+The statistics available for timers are listed in the following table.
+
+[[GSADG889]][[sthref36]][[gelob]]
+
+
+Table 8-9 Timer Monitoring Statistics
+
+[width="100%",cols="28%,16%,56%",options="header",]
+|===
+|Statistic |Data Type |Description
+|`numtimerscreated` |CountStatistic |Number of timers created in the
+system.
+
+|`numtimersdelivered` |CountStatistic |Number of timers delivered by the
+system.
+
+|`numtimersremoved` |CountStatistic |Number of timers removed from the
+system.
+|===
+
+
+[[ablvg]][[GSADG00652]][[http-service-statistics]]
+
+===== HTTP Service Statistics
+
+The HTTP service fits into the tree of objects as shown in
+link:#ghlin[HTTP Service Tree Hierarchy].
+
+[[ghqdi]][[GSADG00059]][[http-service-virtual-server-statistics]]
+
+HTTP Service Virtual Server Statistics
+
+Use the following dotted name pattern for HTTP service virtual server
+statistics:
+
+[source]
+----
+server.http-service.virtual-server.request.statistic
+----
+
+The HTTP service statistics for virtual servers are shown in the
+following table.
+
+[[GSADG891]][[sthref37]][[gelnm]]
+
+
+Table 8-10 HTTP Service Virtual Server Monitoring Statistics
+
+[width="100%",cols="21%,16%,63%",options="header",]
+|===
+|Statistic |Data Type |Description
+|`count200` |CountStatistic |Number of responses with a status code
+equal to 200
+
+|`count2xx` |CountStatistic |Number of responses with a status code in
+the 2xx range
+
+|`count302` |CountStatistic |Number of responses with a status code
+equal to 302
+
+|`count304` |CountStatistic |Number of responses with a status code
+equal to 304
+
+|`count3xx` |CountStatistic |Number of responses with a status code
+equal in the 3xx range
+
+|`count400` |CountStatistic |Number of responses with a status code
+equal to 400
+
+|`count401` |CountStatistic |Number of responses with a status code
+equal to 401
+
+|`count403` |CountStatistic |Number of responses with a status code
+equal to 403
+
+|`count404` |CountStatistic |Number of responses with a status code
+equal to 404
+
+|`count4xx` |CountStatistic |Number of responses with a status code
+equal in the 4xx range
+
+|`count503` |CountStatistic |Number of responses with a status code
+equal to 503
+
+|`count5xx` |CountStatistic |Number of responses with a status code
+equal in the 5xx range
+
+|`countother` |CountStatistic |Number of responses with a status code
+outside the 2xx, 3xx, 4xx, and 5xx range
+
+|`errorcount` |CountStatistic |Cumulative value of the error count, with
+error count representing the number of cases where the response code was
+greater than or equal to 400
+
+|`hosts` |StringStatistic |The host (alias) names of the virtual server
+
+|`maxtime` |CountStatistic |Longest response time for a request; not a
+cumulative value, but the largest response time from among the response
+times
+
+|`processingtime` |CountStatistic |Cumulative value of the times taken
+to process each request, with processing time being the average of
+request processing times over the request count
+
+|`requestcount` |CountStatistic |Cumulative number of requests processed
+so far
+
+|`state` |StringStatistic |The state of the virtual server
+|===
+
+
+[[gjjyb]][[GSADG00653]][[jersey-statistics]]
+
+===== Jersey Statistics
+
+Jersey fits into the tree of objects as shown in
+link:#abluw[Applications Tree Hierarchy].
+
+Use the following dotted name pattern for Jersey statistics:
+
+[source]
+----
+server.applications.jersey-application.jersey.resources.resource-0.hitcount.statistic
+----
+
+The statistics available for Jersey are shown in the following table.
+
+[[GSADG892]][[sthref38]][[gjjys]]
+
+
+Table 8-11 Jersey Statistics
+
+[width="100%",cols="33%,21%,46%",options="header",]
+|===
+|Statistic |Data Type |Description
+|`resourcehitcount` |CountStatistic |Number of hits on this resource
+class
+
+|`rootresourcehitcount` |CountStatistic |Number of hits on this root
+resource class
+|===
+
+
+[[ablvi]][[GSADG00654]][[jmsconnector-service-statistics]]
+
+===== JMS/Connector Service Statistics
+
+The JMS/Connector Service fits into the tree of objects as shown in
+link:#ablva[JMS/Container Service Tree Hierarchy].
+
+JMS/Connector Service statistics are shown in the following sections:
+
+* link:#giszy[Connector Connection Pool Statistics (JMS)]
+* link:#giszh[Connector Work Management Statistics (JMS)]
+
+[[giszy]][[GSADG00060]][[connector-connection-pool-statistics-jms]]
+
+Connector Connection Pool Statistics (JMS)
+
+Use the following dotted name pattern for JMS/Connector Service
+connection pool statistics:
+
+[source]
+----
+server.connector-service.resource-adapter-1.connection-pool.statistic
+----
+
+JMS/Connector Service statistics available for the connector connection
+pools are shown in the following table.
+
+
+[NOTE]
+====
+In order to improve system performance, connection pools are initialized
+lazily; that is, a pool is not initialized until an application first
+uses the pool or the pool is explicitly pinged. Monitoring statistics
+for a connection pool are not available until the pool is initialized.
+====
+
+
+[[GSADG893]][[sthref39]][[gelot]]
+
+
+Table 8-12 Connector Connection Pool Monitoring Statistics (JMS)
+
+[width="100%",cols="37%,16%,47%",options="header",]
+|===
+|Statistic |Data Type |Description
+|`averageconnwaittime` |CountStatistic |Average wait time of connections
+before they are serviced by the connection pool.
+
+|`connectionrequestwaittime` |RangeStatistic |The longest and shortest
+wait times of connection requests. The current value indicates the wait
+time of the last request that was serviced by the pool.
+
+|`numconnfailedvalidation` |CountStatistic |Total number of connections
+in the connection pool that failed validation from the start time until
+the last sample time.
+
+|`numconnused` |RangeStatistic |Total number of connections that are
+currently being used, as well as information about the maximum number of
+connections that were used (the high water mark).
+
+|`numconnfree` |RangeStatistic |Total number of free connections in the
+pool as of the last sampling.
+
+|`numconntimedout` |CountStatistic |Total number of connections in the
+pool that timed out between the start time and the last sample time.
+
+|`numconncreated` |CountStatistic |Number of physical connections, in
+milliseconds, that were created since the last reset.
+
+|`numconndestroyed` |CountStatistic |Number of physical connections that
+were destroyed since the last reset.
+
+|`numconnacquired` |CountStatistic |Number of logical connections
+acquired from the pool.
+
+|`numconnreleased` |CountStatistic |Number of logical connections
+released to the pool.
+
+|`waitqueuelenght` |CountStatistic |Number of connection requests in the
+queue waiting to be serviced.
+|===
+
+
+[[giszh]][[GSADG00061]][[connector-work-management-statistics-jms]]
+
+Connector Work Management Statistics (JMS)
+
+Use the following dotted name pattern for JMS/Connector Service work
+management statistics:
+
+[source]
+----
+server.connector-service.resource-adapter-1.work-management.statistic
+----
+
+JMS/Connector Service statistics available for connector work management
+are listed in the following table.
+
+[[GSADG894]][[sthref40]][[gelnz]]
+
+
+Table 8-13 Connector Work Management Monitoring Statistics (JMS)
+
+[width="100%",cols="28%,16%,56%",options="header",]
+|===
+|Statistic |Data Type |Description
+|`activeworkcount` |RangeStatistic |Number of work objects executed by
+the connector.
+
+|`completedworkcount` |CountStatistic |Number of work objects that were
+completed.
+
+|`rejectedworkcount` |CountStatistic |Number of work objects rejected by
+the {productName}.
+
+|`submittedworkcount` |CountStatistic |Number of work objects submitted
+by a connector module.
+
+|`waitqueuelength` |RangeStatistic |Number of work objects waiting in
+the queue before executing.
+
+|`workrequestwaittime` |RangeStatistic |Longest and shortest wait of a
+work object before it gets executed.
+|===
+
+
+[[ablvm]][[GSADG00655]][[jvm-statistics]]
+
+===== JVM Statistics
+
+The JVM fits into the tree of objects as show in link:#ghlic[JVM Tree
+Hierarchy].
+
+The statistics that are available for the Virtual Machine for Java
+platform (Java Virtual Machine) or JVM machine are shown in the
+following sections:
+
+* link:#ablvn[JVM Class Loading System Statistics]
+* link:#ghqfh[JVM Compilation System Statistics]
+* link:#ghqea[JVM Garbage Collectors Statistics]
+* link:#ghqdn[JVM Memory Statistics]
+* link:#ghqec[JVM Operating System Statistics]
+* link:#ghqby[JVM Runtime Statistics]
+
+[[ablvn]][[GSADG00062]][[jvm-class-loading-system-statistics]]
+
+JVM Class Loading System Statistics
+
+Use the following dotted name pattern for JVM class loading system
+statistics:
+
+[source]
+----
+server.jvm.class-loading-system.statistic
+----
+
+With Java SE, additional monitoring information can be obtained from the
+JVM. Set the monitoring level to LOW to enable the display of this
+additional information. Set the monitoring level to HIGH to also view
+information pertaining to each live thread in the system. More
+information about the additional monitoring features for Java SE is
+available in
+http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/technotes/guides/management/[Monitoring
+and Management for the Java Platform] .
+
+The Java SE monitoring tools are discussed at
+`http://docs.oracle.com/javase/8/docs/technotes/tools/`.
+
+The statistics that are available for class loading in the JVM for Java
+SE are shown in the following table.
+
+[[GSADG895]][[sthref41]][[gelow]]
+
+
+Table 8-14 JVM Monitoring Statistics for Java SE Class Loading
+
+[width="100%",cols="31%,16%,53%",options="header",]
+|===
+|Statistic |Data Type |Description
+|`loadedclasscount` |CountStatistic |Number of classes that are
+currently loaded in the JVM
+
+|`totalloadedclasscount` |CountStatistic |Total number of classes that
+have been loaded since the JVM began execution
+
+|`unloadedclasscount` |CountStatistic |Number of classes that have been
+unloaded from the JVM since the JVM began execution
+|===
+
+
+The statistics available for threads in the JVM in Java SE are shown in
+the following table.
+
+[[GSADG896]][[sthref42]][[geloa]]
+
+
+Table 8-15 JVM Monitoring Statistics for Java SE - Threads
+
+[width="100%",cols="35%,16%,49%",options="header",]
+|===
+|Statistic |Data Type |Description
+|`allthreadids` |StringStatistic |List of all live thread ids.
+
+|`currentthreadcputime` |CountStatistic |CPU time for the current thread
+(in nanoseconds) if CPU time measurement is enabled. If CPU time
+measurement is disabled, returns -1.
+
+|`daemonthreadcount` |CountStatistic |Current number of live daemon
+threads.
+
+|`monitordeadlockedthreads` |StringStatistic |List of thread ids that
+are monitor deadlocked.
+
+|`peakthreadcount` |CountStatistic |Peak live thread count since the JVM
+started or the peak was reset.
+
+|`threadcount` |CountStatistic |Current number of live daemon and
+non-daemon threads.
+
+|`totalstartedthreadcount` |CountStatistic |Total number of threads
+created and/or started since the JVM started.
+|===
+
+
+[[ghqfh]][[GSADG00063]][[jvm-compilation-system-statistics]]
+
+JVM Compilation System Statistics
+
+Use the following dotted name pattern for JVM compilation system
+statistics:
+
+[source]
+----
+server.jvm.compilation-system.statistic
+----
+
+The statistics that are available for compilation in the JVM for Java SE
+are shown in the following table.
+
+[[GSADG897]][[sthref43]][[gelnt]]
+
+
+Table 8-16 JVM Monitoring Statistics for Java SE Compilation
+
+[width="100%",cols="34%,20%,46%",options="header",]
+|===
+|Statistic |Data Type |Description
+|`name-current` |StringStatistic |Name of the current compiler
+
+|`totalcompilationtime` |CountStatistic |Accumulated time (in
+milliseconds) spent in compilation
+|===
+
+
+[[ghqea]][[GSADG00064]][[jvm-garbage-collectors-statistics]]
+
+JVM Garbage Collectors Statistics
+
+Use the following dotted name pattern for JVM garbage collectors
+statistics:
+
+[source]
+----
+server.jvm.garbage-collectors.statistic
+----
+
+The statistics that are available for garbage collection in the JVM for
+Java SE are shown in the following table.
+
+[[GSADG898]][[sthref44]][[gelox]]
+
+
+Table 8-17 JVM Monitoring Statistics for Java SE Garbage Collectors
+
+[width="100%",cols="23%,16%,61%",options="header",]
+|===
+|Statistic |Data Type |Description
+|`collectioncount` |CountStatistic |Total number of collections that
+have occurred
+
+|`collectiontime` |CountStatistic |Accumulated time (in milliseconds)
+spent in collection
+|===
+
+
+[[ghqdn]][[GSADG00065]][[jvm-memory-statistics]]
+
+JVM Memory Statistics
+
+Use the following dotted name pattern for JVM memory statistics:
+
+[source]
+----
+server.jvm.memory.statistic
+----
+
+The statistics that are available for memory in the JVM for Java SE are
+shown in the following table.
+
+[[GSADG899]][[sthref45]][[gelnx]]
+
+
+Table 8-18 JVM Monitoring Statistics for Java SE Memory
+
+[width="100%",cols="44%,16%,40%",options="header",]
+|===
+|Statistic |Data Type |Description
+|`committedheapsize` |CountStatistic |Amount of heap memory (in bytes)
+that is committed for the JVM to use
+
+|`committednonheapsize` |CountStatistic |Amount of non-heap memory (in
+bytes) that is committed for the JVM to use
+
+|`initheapsize` |CountStatistic |Size of the heap initially requested by
+the JVM
+
+|`initnonheapsize` |CountStatistic |Size of the non-heap area initially
+requested by the JVM
+
+|`maxheapsize` |CountStatistic |Maximum amount of heap memory (in bytes)
+that can be used for memory management
+
+|`maxnonheapsize` |CountStatistic |Maximum amount of non-heap memory (in
+bytes) that can be used for memory management
+
+|`objectpendingfinalizationcount` |CountStatistic |Approximate number of
+objects that are pending finalization
+
+|`usedheapsize` |CountStatistic |Size of the heap currently in use
+
+|`usednonheapsize` |CountStatistic |Size of the non-heap area currently
+in use
+|===
+
+
+[[ghqec]][[GSADG00066]][[jvm-operating-system-statistics]]
+
+JVM Operating System Statistics
+
+Use the following dotted name pattern for JVM operating system
+statistics:
+
+[source]
+----
+server.jvm.operating-system.statistic
+----
+
+The statistics that are available for the operating system for the JVM
+machine in Java SE are shown in the following table.
+
+[[GSADG900]][[sthref46]][[gelog]]
+
+
+Table 8-19 JVM Statistics for the Java SE Operating System
+
+[width="100%",cols="28%,16%,56%",options="header",]
+|===
+|Statistic |Data Type |Description
+|`arch-current` |StringStatistic |Operating system architecture
+
+|`availableprocessors` |CountStatistic |Number of processors available
+to the JVM
+
+|`name-current` |StringStatistic |Operating system name
+
+|`version-current` |StringStatistic |Operating system version
+|===
+
+
+[[ghqby]][[GSADG00067]][[jvm-runtime-statistics]]
+
+JVM Runtime Statistics
+
+Use the following dotted name pattern for JVM runtime statistics:
+
+[source]
+----
+server.jvm.runtime.statistic
+----
+
+The statistics that are available for the runtime in the JVM runtime for
+Java SE are shown in the following table.
+
+[[GSADG901]][[sthref47]][[gelop]]
+
+
+Table 8-20 JVM Monitoring Statistics for Java SE Runtime
+
+[width="100%",cols="42%,16%,42%",options="header",]
+|===
+|Statistic |Data Type |Description
+|`classpath-current` |StringStatistic |Classpath that is used by the
+system class loader to search for class files
+
+|`inputarguments-current` |StringStatistic |Input arguments passed to
+the JVM; not including arguments to the `main` method
+
+|`managementspecversion-current` |StringStatistic |Management
+specification version implemented by the JVM
+
+|`name-current` |StringStatistic |Name representing the running JVM
+
+|`specname-current` |StringStatistic |JVM specification name
+
+|`specvendor-current` |StringStatistic |JVM specification vendor
+
+|`specversion-current` |StringStatistic |JVM specification version
+
+|`uptime` |CountStatistic |Uptime of the JVM (in milliseconds)
+
+|`vmname-current` |StringStatistic |JVM implementation name
+
+|`vmvendor-current` |StringStatistic |JVM implementation vendor
+
+|`vmversion-current` |StringStatistic |JVM implementation version
+
+| | |
+
+| | |
+|===
+
+
+[[gjipy]][[GSADG00656]][[network-statistics]]
+
+===== Network Statistics
+
+Network fits into the tree of objects as shown in link:#giznj[Network
+Tree Hierarchy].
+
+Network statistics are described in the following sections:
+
+* link:#gjiqu[Network Keep Alive Statistics]
+* link:#gjjom[Network Connection Queue Statistics]
+* link:#gjjpi[Network File Cache Statistics]
+* link:#gjjpp[Network Thread Pool Statistics]
+
+[[gjiqu]][[GSADG00068]][[network-keep-alive-statistics]]
+
+Network Keep Alive Statistics
+
+Use the following dotted name pattern for network keep alive statistics:
+
+[source]
+----
+server.network.type-of-listener.keep-alive.statistic
+----
+
+Statistics available for network keep alive are shown in the following
+table.
+
+[[GSADG902]][[sthref48]][[gjirp]]
+
+
+Table 8-21 Network Keep Alive Statistics
+
+[width="100%",cols="25%,16%,59%",options="header",]
+|===
+|Statistic |Data Type |Description
+|`countconnections` |CountStatistic |Number of connections in keep-alive
+mode.
+
+|`counttimeouts` |CountStatistic |Number of keep-alive connections that
+timed out.
+
+|`secondstimeouts` |CountStatistic |Keep-alive timeout value in seconds.
+
+|`maxrequests` |CountStatistic |Maximum number of requests allowed on a
+single keep-alive connection.
+
+|`countflushes` |CountStatistic |Number of keep-alive connections that
+were closed.
+
+|`counthits` |CountStatistic |Number of requests received by connections
+in keep-alive mode.
+
+|`countrefusals` |CountStatistic |Number of keep-alive connections that
+were rejected.
+|===
+
+
+[[gjjom]][[GSADG00069]][[network-connection-queue-statistics]]
+
+Network Connection Queue Statistics
+
+Use the following dotted name pattern for network connection queue
+statistics:
+
+[source]
+----
+server.network.type-of-listener.connection-queue.statistic
+----
+
+Statistics available for network connection queue are shown in the
+following table.
+
+[[GSADG903]][[sthref49]][[gjjxc]]
+
+
+Table 8-22 Network Connection Queue Statistics
+
+[width="100%",cols="40%,16%,44%",options="header",]
+|===
+|Statistic |Data Type |Description
+|`countopenconnections` |CountStatistic |The number of open/active
+connections
+
+|`countoverflows` |CountStatistic |Number of times the queue has been
+too full to accommodate a connection
+
+|`countqueued` |CountStatistic |Number of connections currently in the
+queue
+
+|`countqueued15minutesaverage` |CountStatistic |Average number of
+connections queued in the last 15 minutes
+
+|`countqueued1minuteaverage` |CountStatistic |Average number of
+connections queued in the last 1 minute
+
+|`countqueued5minutesaverage` |CountStatistic |Average number of
+connections queued in the last 5 minutes
+
+|`counttotalconnections` |CountStatistic |Total number of connections
+that have been accepted
+
+|`counttotalqueued` |CountStatistic |Total number of connections that
+have been queued
+
+|`maxqueued` |CountStatistic |Maximum size of the connection queue
+
+|`peakqueued` |CountStatistic |Largest number of connections that were
+in the queue simultaneously
+
+|`tickstotalqueued` |CountStatistic |(Unsupported) Total number of ticks
+that connections have spent in the queue
+|===
+
+
+[[gjjpi]][[GSADG00070]][[network-file-cache-statistics]]
+
+Network File Cache Statistics
+
+Use the following dotted name pattern for network file cache statistics:
+
+[source]
+----
+server.network.type-of-listener.file-cache.statistic
+----
+
+Statistics available for network file cache are shown in the following
+table.
+
+[[GSADG904]][[sthref50]][[gjjpd]]
+
+
+Table 8-23 Network File Cache Statistics
+
+[width="100%",cols="28%,16%,56%",options="header",]
+|===
+|Statistic |Data Type |Description
+|`contenthits` |CountStatistic |Number of hits on cached file content
+
+|`contentmisses` |CountStatistic |Number of misses on cached file
+content
+
+|`heapsize` |CountStatistic |Current cache size in bytes
+
+|`hits` |CountStatistic |Number of cache lookup hits
+
+|`infohits` |CountStatistic |Number of hits on cached file info
+
+|`infomisses` |CountStatistic |Number of misses on cached file info
+
+|`mappedmemorysize` |CountStatistic |Size of mapped memory used for
+caching in bytes
+
+|`maxheapsize` |CountStatistic |Maximum heap space used for cache in
+bytes
+
+|`maxmappedmemorysize` |CountStatistic |Maximum memory map size used for
+caching in bytes
+
+|`misses` |CountStatistic |Number of cache lookup misses data type
+
+|`opencacheentries` |CountStatistic |Number of current open cache
+entries
+|===
+
+
+[[gjjpp]][[GSADG00071]][[network-thread-pool-statistics]]
+
+Network Thread Pool Statistics
+
+Use the following dotted name pattern for network thread pool
+statistics:
+
+[source]
+----
+server.network.type-of-listener.thread-pool.statistic
+----
+
+Statistics available for network thread pool are shown in the following
+table.
+
+[[GSADG905]][[sthref51]][[gjjov]]
+
+
+Table 8-24 Network Thread Pool Statistics
+
+[width="100%",cols="28%,16%,56%",options="header",]
+|===
+|Statistic |Data Type |Description
+|`corethreads` |CountStatistic |Core number of threads in the thread
+pool
+
+|`currentthreadcount` |CountStatistic |Provides the number of request
+processing threads currently in the listener thread pool
+
+|`currentthreadsbusy` |CountStatistic |Provides the number of request
+processing threads currently in use in the listener thread pool serving
+requests
+
+|`maxthreads` |CountStatistic |Maximum number of threads allowed in the
+thread pool
+
+|`totalexecutedtasks` |CountStatistic |Provides the total number of
+tasks, which were executed by the thread pool
+|===
+
+
+[[ablvj]][[GSADG00657]][[orb-statistics-connection-manager]]
+
+===== ORB Statistics (Connection Manager)
+
+The ORB fits into the tree of objects as shown in link:#ablvb[ORB Tree
+Hierarchy].
+
+Use the following dotted name patterns for ORB statistics:
+
+[source]
+----
+server.orb.transport.connectioncache.inbound.statistic
+server.orb.transport.connectioncache.outbound.statistic
+----
+
+The statistics available for the connection manager in an ORB are listed
+in the following table.
+
+[[GSADG906]][[sthref52]][[gelqw]]
+
+
+Table 8-25 ORB Monitoring Statistics (Connection Manager)
+
+[width="100%",cols="24%,26%,50%",options="header",]
+|===
+|Statistic |Data Type |Description
+|`connectionsidle` |CountStatistic |Total number of connections that are
+idle to the ORB
+
+|`connectionsinuse` |CountStatistic |Total number of connections in use
+to the ORB
+
+|`totalconnections` |BoundedRangeStatistic |Total number of connections
+to the ORB
+|===
+
+
+[[gipzv]][[GSADG00658]][[resource-statistics-connection-pool]]
+
+===== Resource Statistics (Connection Pool)
+
+By monitoring connection pool resources you can measure performance and
+capture resource usage at runtime. Connections are expensive and
+frequently cause performance bottlenecks in applications. It is
+important to monitor how a connection pool is releasing and creating new
+connections and how many threads are waiting to retrieve a connection
+from a particular pool.
+
+The connection pool resources fit into the tree of objects as shown in
+link:#giqdo[Resources Tree Hierarchy].
+
+Use the following dotted name pattern for general connection pool
+statistics:
+
+[source]
+----
+server.resources.pool-name.statistic
+----
+
+Use the following dotted name pattern for application-scoped connection
+pool statistics:
+
+[source]
+----
+server.applications.application-name.resources.pool-name.statistic
+----
+
+Use the following dotted name pattern for module-scoped connection pool
+statistics:
+
+[source]
+----
+server.applications.application-name.module-name.resources.pool-name.statistic
+----
+
+The connection pool statistics are shown in the following tables.
+
+
+[NOTE]
+====
+In order to improve system performance, connection pools are initialized
+lazily; that is, a pool is not initialized until an application first
+uses the pool or the pool is explicitly pinged. Monitoring statistics
+for a connection pool are not available until the pool is initialized.
+====
+
+
+[[GSADG907]][[sthref53]][[gelqa]]
+
+
+Table 8-26 General Resource Monitoring Statistics (Connection Pool)
+
+[width="100%",cols="43%,16%,41%",options="header",]
+|===
+|Statistic |Data Type |Description
+|`averageconnwaittime` |CountStatistic |Average wait-time-duration per
+successful connection request
+
+|`connrequestwaittime` |RangeStatistic |Longest and shortest wait times,
+in milliseconds, of connection requests since the last sampling. current
+value indicates the wait time of the last request that was serviced by
+the pool
+
+|`numconnacquired` |CountStatistic |Number of logical connections
+acquired from the pool since the last sampling
+
+|`numconncreated` |CountStatistic |Number of physical connections that
+were created by the pool since the last reset
+
+|`numconndestroyed` |CountStatistic |Number of physical connections that
+were destroyed since the last reset
+
+|`numconnfailedvalidation` |CountStatistic |Number of connections in the
+connection pool that failed validation from the start time until the
+last sampling time
+
+|`numconnfree` |RangeStatistic |Number of free connections in the pool
+as of the last sampling
+
+|`numconnnotsuccessfullymatched` |CountStatistic |Number of connections
+rejected during matching
+
+|`numconnreleased` |CountStatistic |Number of connections released back
+to the pool since the last sampling
+
+|`numconnsuccessfullymatched` |CountStatistic |Number of connections
+successfully matched
+
+|`numconntimedout` |CountStatistic |Number of connections in the pool
+that timed out between the start time and the last sampling time
+
+|`numconnused` |RangeStatistic |Number of connections that are currently
+being used, as well as information about the maximum number of
+connections that were used (high water mark)
+
+|`frequsedsqlqueries` |StringStatistic |List of the most frequently used
+SQL queries (Available only when SQL Tracing is enabled)
+
+|`numpotentialconnleak` |CountStatistic |Number of potential connection
+leaks
+
+|`numpotentialstatementleak` |CountStatistic |Number of potential
+statement leaks (Available only when Statement Leak Dectection is
+enabled)
+
+|`numstatementcachehit` |CountStatistic |Number of statements that were
+found in the statement cache (Available only when the Statement Cache is
+enabled)
+
+|`numstatementcachemiss` |CountStatistic |Number of statements that were
+not found in the statement cache (Available only when the Statement
+Cache is enabled)
+
+|`waitqueuelength` |CountStatistic |Number of connection requests in the
+queue waiting to be serviced
+|===
+
+
+[[GSADG908]][[sthref54]][[gktcp]]
+
+
+Table 8-27 Application Specific Resource Monitoring Statistics
+(Connection Pool)
+
+[width="100%",cols="23%,16%,61%",options="header",]
+|===
+|Statistic |Data Type |Description
+|`numconnacquired` |CountStatistic |Number of logical connections
+acquired from the pool since the last sampling
+
+|`numconnreleased` |CountStatistic |Number of connections released back
+to the pool since the last sampling
+
+|`numconnused` |RangeStatistic |Number of connections that are currently
+being used, as well as information about the maximum number of
+connections that were used (high water mark)
+|===
+
+
+[[gjiov]][[GSADG00659]][[security-statistics]]
+
+===== Security Statistics
+
+Security fits into the tree of objects as shown in link:#gjios[Security
+Tree Hierarchy].
+
+Statistics available for security are shown in the following sections:
+
+* link:#gjira[EJB Security Statistics]
+* link:#gjirn[Web Security Statistics]
+* link:#gjirj[Realm Security Statistics]
+
+[[gjira]][[GSADG00072]][[ejb-security-statistics]]
+
+EJB Security Statistics
+
+Use the following dotted name pattern for EJB security statistics:
+
+[source]
+----
+server.security.ejb.statistic
+----
+
+The statistics available for EJB security are listed in the following
+table.
+
+[[GSADG909]][[sthref55]][[gjirc]]
+
+
+Table 8-28 EJB Security Monitoring Statistics
+
+[width="100%",cols="40%,18%,42%",options="header",]
+|===
+|Statistic |Data Type |Description
+|`policyconfigurationcount` |CountStatistic |Number of policy
+configuration
+
+|`securitymanagercount` |CountStatistic |Number of EJB security managers
+|===
+
+
+[[gjirn]][[GSADG00073]][[web-security-statistics]]
+
+Web Security Statistics
+
+Use the following dotted name pattern for web security statistics:
+
+[source]
+----
+server.security.web.statistic
+----
+
+The statistics available for web security are listed in the following
+table.
+
+[[GSADG910]][[sthref56]][[gjiqv]]
+
+
+Table 8-29 Web Security Monitoring Statistics
+
+[width="100%",cols="40%,16%,44%",options="header",]
+|===
+|Statistic |Data Type |Description
+|`websecuritymanagercount` |CountStatistic |Number of security managers
+
+|`webpolicyconfigurationcount` |CountStatistic |Number of policy
+configuration objects
+|===
+
+
+[[gjirj]][[GSADG00074]][[realm-security-statistics]]
+
+Realm Security Statistics
+
+Use the following dotted name pattern for realm security statistics:
+
+[source]
+----
+server.security.realm.statistic
+----
+
+The statistics available for realm security are listed in the following
+table.
+
+[[GSADG911]][[sthref57]][[gjirq]]
+
+
+Table 8-30 Realm Security Monitoring Statistics
+
+[width="100%",cols="32%,22%,46%",options="header",]
+|===
+|Statistic |Data Type |Description
+|`realmcount` |CountStatistic |Number of realms
+|===
+
+
+[[ablvk]][[GSADG00660]][[thread-pool-statistics]]
+
+===== Thread Pool Statistics
+
+The thread pool fits into the tree of objects as shown in
+link:#ablvc[Thread Pool Tree Hierarchy].
+
+The statistics available for thread pools are shown in the following
+sections:
+
+* link:#gitct[Thread Pool Monitoring Statistics]
+* link:#gitce[JVM Statistics for Java SE-Thread Information]
+
+[[gitct]][[GSADG00075]][[thread-pool-monitoring-statistics]]
+
+Thread Pool Monitoring Statistics
+
+Use the following dotted name pattern for thread pool statistics:
+
+[source]
+----
+server.thread-pool.thread-pool.statistic
+----
+
+The statistics available for the thread pool are shown in the following
+table.
+
+[[GSADG912]][[sthref58]][[gelqt]]
+
+
+Table 8-31 Thread Pool Monitoring Statistics
+
+[width="100%",cols="37%,26%,37%",options="header",]
+|===
+|Statistic |Data Type |Description
+|`averagetimeinqueue` |BoundedRangeStatistic |Average amount of time (in
+milliseconds) a request waited in the queue before being processed
+
+|`averageworkcompletiontime` |BoundedRangeStatistic |Average amount of
+time (in milliseconds) taken to complete an assignment
+
+|`currentbusythreads` |CountStatistic |Number of busy threads
+
+|`currentnumberofthreads` |BoundedRangeStatistic |Current number of
+request processing threads
+
+|`numberofavailablethreads` |CountStatistic |Number of available threads
+
+|`numberofworkitemsinqueue` |BoundedRangeStatistic |Current number of
+work items waiting in queue
+
+|`totalworkitemsadded` |CountStatistic |Total number of work items added
+to the work queue as of last sampling
+|===
+
+
+[[gitce]][[GSADG00076]][[jvm-statistics-for-java-se-thread-information]]
+
+JVM Statistics for Java SE - Thread Information
+
+The statistics available for `ThreadInfo` in the JVM in Java SE are
+shown in the following table.
+
+[[GSADG913]][[sthref59]][[geloy]]
+
+
+Table 8-32 JVM Monitoring Statistics for Java SE - Thread Info
+
+[width="100%",cols="20%,16%,64%",options="header",]
+|===
+|Statistic |Data Type |Description
+|`blockedcount` |CountStatistic |Total number of times that the thread
+entered the `BLOCKED` state.
+
+|`blockedtime` |CountStatistic |Time elapsed (in milliseconds) since the
+thread entered the `BLOCKED` state. Returns -1 if thread contention
+monitoring is disabled.
+
+|`lockname` |StringStatistic |String representation of the monitor lock
+that the thread is blocked to enter or waiting to be notified through
+the `Object.wait` method.
+
+|`lockownerid` |CountStatistic |ID of the thread that holds the monitor
+lock of an object on which this thread is blocking.
+
+|`lockownername` |StringStatistic |Name of the thread that holds the
+monitor lock of the object this thread is blocking on.
+
+|`stacktrace` |StringStatistic |Stack trace associated with this thread.
+
+|`threadid` |CountStatistic |ID of the thread.
+
+|`threadname` |StringStatistic |Name of the thread.
+
+|`threadstate` |StringStatistic |State of the thread.
+
+|`waitedtime` |CountStatistic |Elapsed time (in milliseconds) that the
+thread has been in a `WAITING` state. Returns -1 if thread contention
+monitoring is disabled.
+
+|`waitedcount` |CountStatistic |Total number of times the thread was in
+`WAITING` or `TIMED_WAITING` states.
+|===
+
+
+[[ablvl]][[GSADG00661]][[transaction-service-statistics]]
+
+===== Transaction Service Statistics
+
+The transaction service allows the client to freeze the transaction
+subsystem in order to roll back transactions and determine which
+transactions are in process at the time of the freeze. The transaction
+service fits into the tree of objects as shown in
+link:#gitci[Transactions Service Tree Hierarchy].
+
+Use the following dotted name pattern for transaction service
+statistics:
+
+[source]
+----
+server.transaction-service.statistic
+----
+
+The statistics available for the transaction service are shown in the
+following table.
+
+[[GSADG914]][[sthref60]][[gelpl]]
+
+
+Table 8-33 Transaction Service Monitoring Statistics
+
+[width="100%",cols="23%,16%,61%",options="header",]
+|===
+|Statistic |Data Type |Description
+|`activecount` |CountStatistic |Number of transactions currently active.
+
+|`activeids` |StringStatistic |The ID's of the transactions that are
+currently active. Every such transaction can be rolled back after
+freezing the transaction service.
+
+|`committedcount` |CountStatistic |Number of transactions that have been
+committed.
+
+|`rolledbackcount` |CountStatistic |Number of transactions that have
+been rolled back.
+
+|`state` |StringStatistic |Indicates whether or not the transaction has
+been frozen.
+|===
+
+
+[[ablvf]][[GSADG00662]][[web-statistics]]
+
+===== Web Statistics
+
+The web module fits into the tree of objects as shown in link:#ghlff[Web
+Tree Hierarchy].
+
+The available web statistics shown in the following sections:
+
+* link:#gjkaz[Web Module Servlet Statistics]
+* link:#ghqge[Web JSP Statistics]
+* link:#ghqga[Web Request Statistics]
+* link:#ghqfu[Web Servlet Statistics]
+* link:#ghqfr[Web Session Statistics]
+
+[[gjkaz]][[GSADG00077]][[web-module-servlet-statistics]]
+
+Web Module Servlet Statistics
+
+Use the following dotted name pattern for web module servlet statistics:
+
+[source]
+----
+server.applications.web-module.virtual-server.servlet.statistic
+server.applications.application.web-module.virtual-server.servlet.statistic
+----
+
+The available web module servlet statistics are shown in the following
+table.
+
+[[GSADG915]][[sthref61]][[gjkba]]
+
+
+Table 8-34 Web Module Servlet Statistics
+
+[width="100%",cols="21%,16%,63%",options="header",]
+|===
+|Statistic |Data Type |Description
+|`errorcount` |CountStatistic |Cumulative number of cases where the
+response code is greater than or equal to 400.
+
+|`maxtime` |CountStatistic |Maximum amount of time the web container
+waits for requests.
+
+|`processingtime` |CountStatistic |Cumulative value of the amount of
+time required to process each request. The processing time is the
+average of request processing times divided by the request count.
+
+|`requestcount` |CountStatistic |The total number of requests processed
+so far.
+
+|`servicetime` |CountStatistic |Aggregate response time in milliseconds.
+|===
+
+
+[[ghqge]][[GSADG00079]][[web-jsp-statistics]]
+
+Web JSP Statistics
+
+Use the following dotted name pattern for web JSP statistics:
+
+[source]
+----
+server.applications.web-module.virtual-server.statistic
+server.applications.application.web-module.virtual-server.statistic
+----
+
+The available web JSP statistics are shown in the following table.
+
+[[GSADG917]][[sthref62]][[givgh]]
+
+
+Table 8-35 Web JSP Monitoring Statistics
+
+[width="100%",cols="24%,16%,60%",options="header",]
+|===
+|Statistic |Data Type |Description
+|`jspcount-current` |RangeStatistic |Number of active JSP pages
+
+|`jsperrorcount` |CountStatistic |Total number of errors triggered by
+JSP page invocations
+
+|`jspreloadedcount` |CountStatistic |Total number of JSP pages that were
+reloaded
+
+|`totaljspcount` |CountStatistic |Total number of JSP pages ever loaded
+|===
+
+
+[[ghqga]][[GSADG00080]][[web-request-statistics]]
+
+Web Request Statistics
+
+Use the following dotted name pattern for web request statistics:
+
+[source]
+----
+server.applications.web-module.virtual-server.statistic
+server.applications.application.web-module.virtual-server.statistic
+----
+
+The available web request statistics are shown in the following table.
+
+[[GSADG918]][[sthref63]][[gjisw]]
+
+
+Table 8-36 Web Request Monitoring Statistics
+
+[width="100%",cols="21%,16%,63%",options="header",]
+|===
+|Statistic |Data Type |Description
+|`errorcount` |CountStatistic |Cumulative value of the error count, with
+error count representing the number of cases where the response code was
+greater than or equal to 400
+
+|`maxtime` |CountStatistic |Longest response time for a request; not a
+cumulative value, but the largest response time from among the response
+times
+
+|`processingtime` |CountStatistic |Average request processing time, in
+milliseconds
+
+|`requestcount` |CountStatistic |Cumulative number of the requests
+processed so far
+|===
+
+
+[[ghqfu]][[GSADG00081]][[web-servlet-statistics]]
+
+Web Servlet Statistics
+
+Use the following dotted name pattern for web servlet statistics:
+
+[source]
+----
+server.applications.web-module.virtual-server.statistic
+server.applications.application.web-module.virtual-server.statistic
+----
+
+The available web servlet statistics are shown in the following table.
+
+[[GSADG919]][[sthref64]][[ghqiu]]
+
+
+Table 8-37 Web Servlet Monitoring Statistics
+
+[width="100%",cols="37%,16%,47%",options="header",]
+|===
+|Statistic |Data Type |Description
+|`activeservletsloadedcount` |RangeStatistic |Number of currently loaded
+servlets
+
+|`servletprocessingtimes` |CountStatistic |Cumulative servlet processing
+times , in milliseconds
+
+|`totalservletsloadedcount` |CountStatistic |Cumulative number of
+servlets that have been loaded into the web module
+|===
+
+
+[[ghqfr]][[GSADG00082]][[web-session-statistics]]
+
+Web Session Statistics
+
+Use the following dotted name pattern for web session statistics:
+
+[source]
+----
+server.applications.web-module.virtual-server.statistic
+server.applications.application.web-module.virtual-server.statistic
+----
+
+The available web session statistics are shown in the following table.
+
+[[GSADG920]][[sthref65]][[gellc]]
+
+
+Table 8-38 Web Session Monitoring Statistics
+
+[width="100%",cols="34%,16%,50%",options="header",]
+|===
+|Statistic |Data Type |Description
+|`activatedsessionstotal` |CountStatistic |Total number of activated
+sessions
+
+|`activesessionscurrent` |RangeStatistic |Number of currently active
+sessions
+
+|`activesessionshigh` |CountStatistic |Maximum number of concurrently
+active sessions
+
+|`expiredsessionstotal` |CountStatistic |Total number of expired
+sessions
+
+|`passivatedsessionstotal` |CountStatistic |Total number of passivated
+sessions
+
+|`persistedsessionstotal` |CountStatistic |Total number of persisted
+sessions
+
+|`rejectedsessionstotal` |CountStatistic |Total number of rejected
+sessions
+
+|`sessionstotal` |CountStatistic |Total number of sessions created
+|===
+
+
+[[giwqm]][[GSADG00561]][[configuring-jconsole-to-view-glassfish-server-monitoring-data]]
+
+=== Configuring JConsole to View {productName} Monitoring Data
+
+Java SE provides tools to connect to an MBean Server and view the MBeans
+registered with the server. JConsole is one such popular JMX Connector
+Client and is available as part of the standard Java SE distribution.
+When you configure JConsole for use with {productName}, {productName} becomes the JMX Connector's server end and JConsole becomes the
+JMX connector's client end.
+
+[[ggpfh]][[GSADG00390]][[to-connect-jconsole-to-glassfish-server]]
+
+==== To Connect JConsole to {productName}
+
+Java SE 6 enhanced management and monitoring of the virtual machine by
+including a Platform MBean Server and by including managed beans
+(MBeans) to configure the virtual machine.
+
+To view all MBeans, {productName} provides a configuration of the
+standard JMX connector server called System JMX Connector Server. As
+part of {productName} startup, an instance of this JMX Connector
+Server is started. Any compliant JMX connector client can connect to the
+server using the JMX Connector Server.
+
+By default, {productName} is configured with a non-secure System JMX
+Connector Server. If this is an issue, the JMX connector can be removed.
+However, access can be restricted to a specific IP address (for example,
+the loopback address) by setting `address` to `locahost`.
+
+1. Start the domain.
++
+For instructions, see link:domains.html#ggoda[To Start a Domain].
+2. Start JConsole using this format: JDK_HOME``/bin/jconsole``
++
+For example:
++
+[source]
+----
+/usr/java/bin/jconsole
+----
+The JConsole Connect to Agent window is displayed.
+3. Click the Remote tab and type the host name and port.
++
+Always connect remotely with JConsole, otherwise MBeans will not load
+automatically.
+4. Click Connect.
+5. In the Remote Process text box, specify the JMX Service URL.
++
+For example:
++
+[source]
+----
+service:jmx:rmi:///jndi/rmi://localhost:8686/jmxrmi
+----
+The JMX Service URL is emitted by the server at startup, looking
+something like this:
++
+[source]
+----
+[#|2009-12-03T10:25:17.737-0800|INFO|glassfish7.0|
+x..system.tools.admin.org.glassfish.server|_ThreadID=20;
+_ThreadName=Thread-26;|JMXStartupService: Started JMXConnector, JMXService
+URL = service:jmx:rmi://localhost:8686/jndi/rmi://localhost:8686/jmxrmi|#]
+----
+However, in most cases, simply entering `host:port` is fine, such as,
+192.168.1.150:8686. The long Service URL is not needed.
++
+
+[NOTE]
+====
+Another host name can be substituted for `localhost`. The default port
+number (8686) could change if the `jmx-connector` configuration has been
+modified.
+====
+
+6. Click Connect.
++
+In the JConsole window you will see all your MBeans, JVM information,
+and so on, in various tabs. Most of the useful MBeans are to be found in
+the `amx` and `java.lang` domains.
+
+[[GSADG921]]
+
+See Also
+
+For more information about JConsole, see
+`http://docs.oracle.com/javase/8/docs/technotes/guides/management/jconsole.html`.
+
+
diff --git a/docs/administration-guide/src/main/asciidoc/orb.adoc b/docs/administration-guide/src/main/asciidoc/orb.adoc
new file mode 100644
index 0000000..e8c4579
--- /dev/null
+++ b/docs/administration-guide/src/main/asciidoc/orb.adoc
@@ -0,0 +1,208 @@
+type=page
+status=published
+title=Administering the Object Request Broker (ORB)
+next=javamail.html
+prev=concurrent.html
+~~~~~~
+
+= Administering the Object Request Broker (ORB)
+
+[[GSADG00018]][[abltr]]
+
+
+[[administering-the-object-request-broker-orb]]
+== 15 Administering the Object Request Broker (ORB)
+
+{productName} supports a standard set of protocols and formats that
+ensure interoperability. Among these protocols are those defined by
+CORBA. The Object Request Broker (ORB) is the central component of
+CORBA. The ORB provides the required infrastructure to identify and
+locate objects, handle connection management, deliver data, and request
+communication. This chapter describes how to configure the ORB and the
+IIOP listeners.
+
+The following topics are addressed here:
+
+* link:#ablts[About the ORB]
+* link:#abltw[Configuring the ORB]
+* link:#ablty[Administering IIOP Listeners]
+
+Instructions for accomplishing the tasks in this chapter by using the
+Administration Console are contained in the Administration Console
+online help.
+
+[[ablts]][[GSADG00590]][[about-the-orb]]
+
+=== About the ORB
+
+The Common Object Request Broker Architecture (CORBA) model is based on
+clients requesting services from distributed objects or servers through
+a well-defined interface by issuing requests to the objects in the form
+of remote method requests. A remote method request carries information
+about the operation that needs to be performed, including the object
+name (called an object reference) of the service provider and
+parameters, if any, for the invoked method. CORBA automatically handles
+network programming tasks such as object registration, object location,
+object activation, request de-multiplexing, error-handling, marshalling,
+and operation dispatching.
+
+[[abltw]][[GSADG00591]][[configuring-the-orb]]
+
+=== Configuring the ORB
+
+A CORBA object never talks directly with another. Instead, the object
+makes requests through a remote stub to the Internet Inter-Orb Protocol
+(IIOP) running on the local host. The local ORB then passes the request
+to an ORB on the other host using IIOP. The remote ORB then locates the
+appropriate object, processes the request, and returns the results.
+
+IIOP can be used as a Remote Method Invocation (RMI) protocol by
+applications or objects using RMI-IIOP. Remote clients of enterprise
+beans (EJB modules) communicate with {productName} by using RMI-IIOP.
+
+[[ablty]][[GSADG00592]][[administering-iiop-listeners]]
+
+=== Administering IIOP Listeners
+
+An IIOP listener is a listen socket that accepts incoming connections
+from the remote clients of enterprise beans and from other CORBA-based
+clients. Multiple IIOP listeners can be configured for {productName}.
+For each listener, specify a port number (optional; default 1072), a
+network address, and security attributes (optional). If you create
+multiple listeners, you must assign a different port number for each
+listener.
+
+The following topics are addressed here:
+
+* link:#gioyo[To Create an IIOP Listener]
+* link:#giowc[To List IIOP Listeners]
+* link:#giwlq[To Update an IIOP Listener]
+* link:#giowj[To Delete an IIOP Listener]
+
+[[gioyo]][[GSADG00478]][[to-create-an-iiop-listener]]
+
+==== To Create an IIOP Listener
+
+Use the `create-iiop-listener` subcommand in remote mode to create an
+IIOP listener.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Create an IIOP listener by using the
+link:reference-manual/create-iiop-listener.html#GSRFM00032[`create-iiop-listener`] subcommand.
++
+Information about the properties for the subcommand is included in this
+help page.
+3. To apply your changes, restart {productName}.
++
+See link:domains.html#ginqj[To Restart a Domain].
+
+[[GSADG00263]][[gipfl]]
+Example 15-1 Creating an IIOP Listener
+
+This example creates an IIOP listener named `sample_iiop_listener`.
+
+[source]
+----
+asadmin> create-iiop-listener --listeneraddress 192.168.1.100
+--iiopport 1400 sample_iiop_listener
+Command create-iiop-listener executed successfully.
+----
+
+[[GSADG1011]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-iiop-listener` at the command line.
+
+[[giowc]][[GSADG00479]][[to-list-iiop-listeners]]
+
+==== To List IIOP Listeners
+
+Use the `list-iiop-listeners` subcommand in remote mode to list the
+existing IIOP listeners.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the IIOP listeners by using the
+link:reference-manual/list-iiop-listeners.html#GSRFM00169[`list-iiop-listeners`] subcommand.
+
+[[GSADG00264]][[gipcm]]
+Example 15-2 Listing IIOP Listeners
+
+This example lists all the IIOP listeners for the server instance.
+
+[source]
+----
+asadmin> list-iiop-listeners
+orb-listener-1
+SSL
+SSL_MUTUALAUTH
+sample_iiop_listener
+Command list-iiop-listeners executed successfully.
+----
+
+[[GSADG1012]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-iiop-listeners` at the command line.
+
+[[giwlq]][[GSADG00480]][[to-update-an-iiop-listener]]
+
+==== To Update an IIOP Listener
+
+1. List the IIOP listeners by using the
+link:reference-manual/list-iiop-listeners.html#GSRFM00169[`list-iiop-listeners`] subcommand.
+2. Modify the values for the specified IIOP listener by using the
+link:reference-manual/set.html#GSRFM00226[`set`] subcommand.
++
+The listener is identified by its dotted name.
+
+[[GSADG00265]][[giwlj]]
+Example 15-3 Updating an IIOP Listener
+
+This example changes SSL from enabled to disabled.
+
+[source]
+----
+asadmin> set "server.iiop-service.iiop-listener.SSL.enabled"
+server.iiop-service.iiop-listener.SSL.enabled=false
+Command set executed successfully.
+----
+
+[[giowj]][[GSADG00481]][[to-delete-an-iiop-listener]]
+
+==== To Delete an IIOP Listener
+
+Use the `delete-iiop-listener` subcommand in remote mode to delete an
+IIOP listener.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the IIOP listeners by using the
+link:reference-manual/list-iiop-listeners.html#GSRFM00169[`list-iiop-listeners`] subcommand.
+3. Delete an IIOP listener by using the
+link:reference-manual/delete-iiop-listener.html#GSRFM00084[`delete-iiop-listener`] subcommand.
+4. To apply your changes, restart {productName}.
++
+See link:domains.html#ginqj[To Restart a Domain].
+
+[[GSADG00266]][[giped]]
+Example 15-4 Deleting an IIOP Listener
+
+This example deletes the IIOP listener named `sample_iiop_listener`.
+
+[source]
+----
+asadmin> delete-iiop-listener sample_iiop_listener
+ Command delete-iiop-listener executed successfully.
+----
+
+[[GSADG1013]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-iiop-listener` at the command line.
+
+
diff --git a/docs/administration-guide/src/main/asciidoc/overview.adoc b/docs/administration-guide/src/main/asciidoc/overview.adoc
new file mode 100644
index 0000000..1e65ed6
--- /dev/null
+++ b/docs/administration-guide/src/main/asciidoc/overview.adoc
@@ -0,0 +1,1037 @@
+type=page
+status=published
+title=Overview of {productName} Administration
+next=part-runtime-admin.html
+prev=preface.html
+~~~~~~
+
+= Overview of {productName} Administration
+
+[[GSADG00004]][[ablaq]]
+
+
+[[overview-of-glassfish-server-administration]]
+== 1 Overview of {productName} Administration
+
+{productName} provides a server for developing
+and deploying Java Platform Enterprise Edition (Jakarta EE) applications
+and web Java Web Services.
+
+As an administrator of{productName}, your main responsibilities are
+to establish a secure {productName} environment and to oversee the
+services, resources, and users that participate in that environment.
+Your key tasks include configuring resources and services, managing
+{productName} at runtime, and fixing problems that are associated
+with the server. You might also be involved in installing software,
+integrating add-on components, and deploying applications.
+
+The following topics are addressed here:
+
+* link:#giubb[Default Settings and Locations]
+* link:#ghrcy[Configuration Tasks]
+* link:#ggjxp[Administration Tools]
+* link:#giudo[Instructions for Administering {productName}]
+
+[[giubb]][[GSADG00526]][[default-settings-and-locations]]
+
+=== Default Settings and Locations
+
+After installation, you might need to perform some immediate
+configuration tasks to make your installation function as intended. If
+configuration defaults have been accepted, some features are enabled and
+some not. For an overview of initial configuration tasks for {productName} services and resources, see link:#gitwr[Initial Configuration
+Tasks].
+
+In addition, you might want to reset default passwords, change names or
+locations of files, and so on. The following tables list the default
+administration values.
+
+
+[NOTE]
+====
+For the zip bundle of {productName} 7, the default administrator
+login is `admin`, with no password, which means that no login is
+required.
+====
+
+
+[[GSADG793]][[sthref3]][[giuad]]
+
+
+Table 1-1 Default Administration Values
+
+[width="100%",cols="43%,57%",options="header",]
+|===
+|Item |Default
+|Domain Name |`domain1`
+|Master Password |`changeit`
+|Administration User |`admin`
+|Administration Server Port |4848
+|HTTP Port |8080
+|HTTPS Port |8181
+|Pure JMX Clients Port |8686
+|Message Queue Port |7676
+|IIOP Port |3700
+|IIOP/SSL Port |3820
+|IIOP/SSL Port With Mutual Authentication |3920
+|===
+
+
+[[GSADG794]][[sthref4]][[gjhfv]]
+
+
+Table 1-2 Default Locations
+
+[width="100%",cols="43%,57%",options="header",]
+|===
+|Item |Default
+|Command-line Utility (`asadmin`) |as-install``/bin``
+|Configuration Files |domain-dir``/config``
+|Log Files |domain-dir``/logs``
+|Upgrade Tool (`asupgrade` Command) |as-install``/bin``
+|===
+
+
+For information about replaceable items and default paths and files, see
+link:preface.html#ghpfg[Default Paths and File Names].
+
+[[ghrcy]][[GSADG00527]][[configuration-tasks]]
+
+=== Configuration Tasks
+
+Some configuration tasks must be performed directly after installation
+for your {productName} environment to work as intended. For example,
+if you are using a database with {productName}, you need to set up
+database connectivity right away.
+
+Some configuration situations are ongoing and will require you to make
+changes many times during the life of your installation. You can use
+either the Administration Console or the `asadmin` utility to modify the
+configuration. Changes are automatically applied to the appropriate
+configuration file.
+
+The following topics are addressed here:
+
+* link:#gitwr[Initial Configuration Tasks]
+* link:#giusb[How Dotted Names Work for Configuration]
+* link:#gjjrl[Configuration Files]
+* link:#gitzw[Impact of Configuration Changes]
+
+[[gitwr]][[GSADG00694]][[initial-configuration-tasks]]
+
+==== Initial Configuration Tasks
+
+This section maps the common configuration tasks to the command-line
+procedures in this guide. In some situations, the resource or service is
+automatically enabled and your configuration tasks involve adjusting or
+changing the default settings to suit your specific needs.
+
+The following resources and services frequently require configuration
+immediately after installation:
+
+System Properties::
+  See link:general-administration.html#ghcjc[Administering System
+  Properties].
+Domains::
+  The initial `domain1` is created during installation. Additional
+  configuration tasks might include such tasks as configuring additional
+  domains or setting up automatic restart. See
+  link:domains.html#ggnop[Administering Domains].
+JVM::
+  The initial tasks for configuring the JVM include creating JVM options
+  and profilers. See link:jvm.html#ablwj[Administering the Virtual
+  Machine for the Java Platform].
+Logging::
+  By default, logging is enabled, so basic logging works without
+  additional configuration. However, you might want to change log
+  levels, property values, or the location of log files. See
+  link:logging.html#abluj[Administering the Logging Service].
+Monitoring::
+  By default, the monitoring service is enabled. However, monitoring for
+  the individual modules is not enabled, so your first monitoring task
+  is to enable monitoring for the modules that you want to monitor. See
+  link:monitoring.html#ablur[Administering the Monitoring Service].
+Life Cycle Modules::
+  See link:lifecycle-modules.html#giury[Administering Life Cycle
+  Modules].
+Security::
+  * System Security. Initial configuration tasks might include setting
+  up passwords, audit modules, and certificates. See
+  "link:security-guide/system-security.html#GSSCG00035[Administering System Security]" in {productName} Security Guide.
+  * User Security. Initial configuration tasks might include creating
+  authentication realms and file users. See
+  "link:security-guide/user-security.html#GSSCG00036[Administering User Security]" in {productName} Security Guide.
+  * Message Security. Initial configuration tasks might include
+  configuring a Java Cryptography Extension (JCE) provider, enabling
+  default and non-default security providers, and configuring message
+  protection policies. See "link:security-guide/message-security.html#GSSCG00037[Administering Message
+  Security]" in {productName} Security Guide.
+Database Connectivity::
+  The initial tasks involved in configuring {productName} to connect
+  to the Apache Derby database include creating a Java Database
+  Connectivity (JDBC) connection pool, creating a JDBC resource, and
+  integrating a JDBC driver. See link:jdbc.html#ablih[Administering
+  Database Connectivity].
+EIS Connectivity::
+  The initial tasks involved in configuring {productName} to connect
+  to an enterprise information system (EIS) include creating a connector
+  connection pool, creating a connector resource, editing a resource
+  adapter configuration, creating a connector security map, creating a
+  connector work security map, and creating an administered object (if
+  needed). See link:connectors.html#abllp[Administering EIS
+  Connectivity].
+Internet Connectivity::
+  The initial tasks involved in making deployed web applications
+  accessible by internet clients include creating HTTP network listeners
+  and virtual servers, and configuring the HTTP listeners for SSL (if
+  needed). See link:http_https.html#ablsw[Administering Internet
+  Connectivity].
+Object Request Broker (ORB)::
+  An initial configuration task might involve creating an IIOP listener.
+  See link:orb.html#abltr[Administering the Object Request Broker (ORB)].
+JavaMail Service::
+  An initial configuration task might involve creating a JavaMail
+  resource. See link:javamail.html#ablkr[Administering the JavaMail
+  Service].
+Java Message Service (JMS)::
+  Initial configuration tasks might include creating a physical
+  destination, creating connection factories or destination resources,
+  creating a JMS host (if the default JMS host is not adequate),
+  adjusting connection pool settings (if needed), and configuring
+  resource adapters for JMS. See link:jms.html#abljw[Administering the
+  Java Message Service (JMS)].
+JNDI Service::
+  An initial configuration task might involve creating a JNDI resource.
+  See link:jndi.html#ablky[Administering the Java Naming and Directory
+  Interface (JNDI) Service].
+
+Information and instructions for accomplishing the tasks by using the
+Administration Console are contained in the Administration Console
+online help.
+
+[[giusb]][[GSADG00695]][[how-dotted-names-work-for-configuration]]
+
+==== How Dotted Names Work for Configuration
+
+After the initial configuration is working, you will continue to manage
+ongoing configuration for the life of your {productName}
+installation. You might need to adjust resources to improve
+productivity, or issues might arise that require settings to be modified
+or defaults to be reset. In some situations, an `asadmin` subcommand is
+provided for updating, such as the `update-connector-work-security-map`
+subcommand. However, most updating is done by using the `list`, `get`,
+and `set` subcommands with dotted names. For detailed information about
+dotted names, see the link:reference-manual/dotted-names.html#GSRFM00268[`dotted-names`(5ASC)] help page.
+
+
+[NOTE]
+====
+Dotted names also apply to monitoring, but the method is different. For
+information on using dotted names for monitoring, see
+link:monitoring.html#ghbaz[How the Monitoring Tree Structure Works].
+====
+
+
+The general process for working with configuration changes on the
+command line is as follows:
+
+1. List the modules for the component of interest.
++
+The following single mode example uses the | (pipe) character and the
+`grep` command to narrow the search:
++
+[source]
+----
+asadmin list "*" | grep http | grep listener
+----
+Information similar to the following is returned:
++
+[source]
+----
+configs.config.server-config.network-config.network-listeners.network-listener.http-listener-1
+configs.config.server-config.network-config.network-listeners.network-listener.http-listener-2
+configs.config.server-config.network-config.protocols.protocol.admin-listener.http
+configs.config.server-config.network-config.protocols.protocol.admin-listener.http.file-cache
+configs.config.server-config.network-config.protocols.protocol.http-listener-1
+configs.config.server-config.network-config.protocols.protocol.http-listener-1.http
+configs.config.server-config.network-config.protocols.protocol.http-listener-1.http.file-cache
+configs.config.server-config.network-config.protocols.protocol.http-listener-2
+configs.config.server-config.network-config.protocols.protocol.http-listener-2.http
+configs.config.server-config.network-config.protocols.protocol.http-listener-2.http.file-cache
+configs.config.server-config.network-config.protocols.protocol.http-listener-2.ssl
+----
+
+2. Get the attributes that apply to the module you are interested in.
++
+The following multimode example gets the attributes and values for
+`http-listener-1`:
++
+[source]
+----
+asadmin> get server-config.network-config.network-listeners.network-listener.http-listener-1.*
+----
+Information similar to the following is returned:
++
+[source]
+----
+server.http-service.http-listener.http-listener-1.acceptor-threads = 1
+server.http-service.http-listener.http-listener-1.address = 0.0.0.0
+server.http-service.http-listener.http-listener-1.blocking-enabled = false
+server.http-service.http-listener.http-listener-1.default-virtual-server = server
+server.http-service.http-listener.http-listener-1.enabled = true
+server.http-service.http-listener.http-listener-1.external-port =
+server.http-service.http-listener.http-listener-1.family = inet
+server.http-service.http-listener.http-listener-1.id = http-listener-1
+server.http-service.http-listener.http-listener-1.port = 8080
+server.http-service.http-listener.http-listener-1.redirect-port =
+server.http-service.http-listener.http-listener-1.security-enabled = false
+server.http-service.http-listener.http-listener-1.server-name =
+server.http-service.http-listener.http-listener-1.xpowered-by = true
+----
+
+3. Modify an attribute by using the `set` subcommand.
++
+This example sets the `security-enabled` attribute of `http-listener-1`
+to true:
++
+[source]
+----
+asadmin> set server.http-service.http-listener.http-listener-1.security-enabled = true
+----
+
+[[gjjrl]][[GSADG00696]][[configuration-files]]
+
+==== Configuration Files
+
+The bulk of the configuration information about {productName}
+resources, applications, and instances is stored in the `domain.xml`
+configuration file.
+This file is the central repository for a given
+administrative domain and contains an XML representation of the {productName} domain model.
+The default location for the `domain.xml` file is domain-dir``/config``.
+
+[NOTE]
+====
+{productName} maintains a backup of the `domain.xml` file that is
+named `domain.xml.bak`. The purpose of this file is solely to enable
+{productName} to start a domain if the `domain.xml` file cannot be
+read.
+Do not modify or delete the `domain.xml.bak` file and do not use this file for any other purpose.
+====
+
+The `logging.properties` file is used to configure logging levels for
+individual modules. The default `logging.properties` file is located in
+the same directory as the `domain.xml` file. For further information on
+the `logging.properties` file, see link:logging.html#gkkit[Logging
+Properties].
+
+The `asenv.conf` file is located in the as-install``/config`` directory.
+Its purpose is to store the {productName} environment variables, such
+as the installation location of the database, Message Queue, and so on.
+
+[NOTE]
+====
+Changes are automatically applied to the appropriate configuration file.
+Do not edit the configuration files directly.
+Manual editing is prone to error and can have unexpected results.
+====
+
+
+[[gitzw]][[GSADG00697]][[impact-of-configuration-changes]]
+
+==== Impact of Configuration Changes
+
+Some configuration changes require that you restart the DAS or {productName} instances for the changes to take effect. Other changes are
+applied dynamically without requiring that the DAS or instances be restarted.
+The procedures in this guide indicate when a restart is required.
+{productName} enables you to determine whether the DAS or
+an instance must be restarted to apply configuration changes.
+
+Some changes to resources or connection pools affect the applications
+that use the resources or connection pools. These changes do not require restart.
+However, any applications that use the resources or connection
+pools must be disabled and re-enabled or redeployed for the change to take effect.
+
+The following topics are addressed here:
+
+* link:#gkvaj[To Determine Whether the DAS or an Instance Requires Restart]
+* link:#ghciy[Configuration Changes That Require Restart]
+* link:#ghclm[Dynamic Configuration Changes]
+* link:#gkvas[Changes That Affect Applications]
+
+[[gkvaj]][[GSADG00300]][[to-determine-whether-the-das-or-an-instance-requires-restart]]
+
+===== To Determine Whether the DAS or an Instance Requires Restart
+
+1. Ensure that the DAS is running.
+To obtain information about the DAS or an instance, a running server is required.
+
+2. Do one of the following:
+* To determine if the DAS requires restart, list the domains in your {productName} installation.
+Use the link:reference-manual/list-domains.html#GSRFM00163[`list-domains`] subcommand for this purpose.
++
+[source]
+----
+asadmin> list-domains [--domaindir domain-root-dir]
+----
++
+The domain-root-dir is the directory that contains the directories in
+which individual domains' configuration is stored.
+The default is as-install``/domains``, where as-install is the base installation
+directory of the {productName} software.
+If the DAS requires restart, a statement that restart is required is displayed.
+
+* To determine if an instance requires restart, list information about the instance.
+Use the link:reference-manual/list-instances.html#GSRFM00170[`list-instances`] subcommand for this purpose.
++
+[source]
+----
+asadmin> list-instances instance-name
+----
+The instance-name is the name of the instance for which you are listing
+information.
+If the instance requires restart, one of the following pieces of
+information is displayed: a statement that restart is required,
+or a list of configuration changes that are not yet applied to the instance.
+
+[[GSADG00093]][[gkvay]]
+Example 1-1 Determining if the DAS Requires Restart
+
+This example determines that the DAS for the domain `domain1` requires
+restart to apply configuration changes.
+
+[source]
+----
+asadmin> list-domains
+domain1 running, restart required to apply configuration changes
+Command list-domains executed successfully.
+----
+
+[[GSADG00094]][[gkvba]]
+Example 1-2 Determining if an Instance Requires Restart
+
+This example determines that the instance `pmd-i1` requires restart to
+apply configuration changes.
+
+[source]
+----
+asadmin> list-instances pmd-i1
+pmd-i1   running;  requires restart
+Command list-instances executed successfully.
+----
+
+[[GSADG795]]
+
+See Also
+
+* link:reference-manual/list-domains.html#GSRFM00163[`list-domains`(1)]
+* link:reference-manual/list-instances.html#GSRFM00170[`list-instances`(1)]
+
+You can also view the full syntax and options of the subcommands by
+typing the following commands at the command line.
+
+* `asadmin help list-domains`
+* `asadmin help list-instances`
+
+[[ghciy]][[GSADG00628]][[configuration-changes-that-require-restart]]
+
+===== Configuration Changes That Require Restart
+
+The following configuration changes require restart for the changes to
+take effect:
+
+* Changing JVM options
+* Changing port numbers
++
+
+[NOTE]
+====
+Changes to some port numbers, for example HTTP listener ports, do not
+require restart.
+====
+
+* Changing log handler elements
+* Configuring certificates
+* Managing HTTP, JMS, IIOP, JNDI services
+* Enabling or disabling secure administration as explained in
+"link:security-guide/administrative-security.html#GSSCG00165[Running Secure Admin]" in {productName} Security Guide
+
+[[ghclm]][[GSADG00629]][[dynamic-configuration-changes]]
+
+===== Dynamic Configuration Changes
+
+With dynamic configuration, changes take effect while the DAS or
+instance is running. The following configuration changes do not require
+restart:
+
+* Adding or deleting add-on components
+* Adding or removing JDBC, JMS, and connector resources and pools
+(Exception: Some connection pool properties affect applications.)
+* Changing a system property that is not referenced by a JVM option or a
+port
+* Adding file realm users
+* Changing logging levels
+* Enabling and disabling monitoring
+* Changing monitoring levels for modules
+* Enabling and disabling resources and applications
+* Deploying, undeploying, and redeploying applications
+
+[[gkvas]][[GSADG00630]][[changes-that-affect-applications]]
+
+===== Changes That Affect Applications
+
+Some changes to resources or connection pools affect the applications
+that use the resources or connection pools. These changes do not require
+restart. However, any applications that use the resources or connection
+pools must be disabled and re-enabled or redeployed for the change to
+take effect.
+
+
+[NOTE]
+====
+If you do not know which applications use the changed resources or
+connection pools, you can apply these changes by restarting the clusters
+or{productName} instances to which applications are deployed.
+However, to minimize the disruption to the services that your
+applications provide, avoid restarting clusters or instances to apply
+these changes if possible.
+====
+
+
+The following changes affect applications:
+
+* Creating or deleting resources (Exception: Changes to some JDBC, JMS,
+or connector resources do not affect applications.)
+* Modifying the following JDBC connection pool properties:
+
+** `datasource-classname`
+
+** `associate-with-thread`
+
+** `lazy-connection-association`
+
+** `lazy-connection-enlistment`
+
+** JDBC driver vendor-specific properties
+* Modifying the following connector connection pool properties:
+
+** `resource-adapter-name`
+
+** `connection-definition-name`
+
+** `transaction-support`
+
+** `associate-with-thread`
+
+** `lazy-connection-association`
+
+** `lazy-connection-enlistment`
+
+** Vendor-specific properties
+
+[[ggjxp]][[GSADG00528]][[administration-tools]]
+
+=== Administration Tools
+
+For the most part, you can perform the same tasks by using either the
+graphical Administration Console or the `asadmin` command-line utility,
+however, there are exceptions.
+
+The following {productName} administration tools are described here:
+
+* link:#ablav[Administration Console]
+* link:#gcocs[`asadmin` Utility]
+* link:#gjjok[REST Interfaces]
+* link:#gjjxt[OSGi Module Management Subsystem]
+* link:#ghcjl[`keytool` Utility]
+* link:#ghrfm[Java Monitoring and Management Console (JConsole)]
+
+[[ablav]][[GSADG00698]][[administration-console]]
+
+==== Administration Console
+
+The Administration Console is a browser-based utility that features an
+easy-to-navigate graphical interface that includes extensive online help
+for the administrative tasks.
+
+To use the Administration Console, the domain administration server
+(DAS) must be running. Each domain has its own DAS, which has a unique
+port number. When {productName} was installed, you chose a port
+number for the DAS, or used the default port of 4848. You also specified
+a user name and password if you did not accept the default login
+(`admin` with no password).
+
+When specifying the URL for the Administration Console, use the port
+number for the domain to be administered. The format for starting the
+Administration Console in a web browser is `http://`hostname`:`port. For
+example:
+
+[source]
+----
+http://kindness.example.com:4848
+----
+
+If the Administration Console is running on the host where {productName} was installed, specify `localhost` for the host name. For
+example:
+
+[source]
+----
+http://localhost:4848
+----
+
+If the Administration Console is run on a host different from the host
+where {productName} was installed, a secure connection (`https`
+instead of `http`) is used. Some browsers do not display pages on secure
+connections by default and must be configured to permit secure protocols
+(SSL and TLS).
+
+For Microsoft Windows, an alternate way to start the {productName}
+Administration Console is by using the Start menu.
+
+You can display the help material for a page in the Administration
+Console by clicking the Help button on the page. The initial help page
+describes the functions and fields of the page itself. Associated task
+instructions can be accessed on additional pages by clicking a link in
+the See Also list.
+
+
+[NOTE]
+====
+If you try to use the Administration Console from a system through a
+proxy server on another system back to the original system, while using
+the system's full host name (instead of `localhost` or `127.0.0.1`) you
+are denied access because the request is treated as a remote request,
+which requires that the secure administration feature (secure admin) be
+enabled.
+
+To avoid this situation, do one of the following:
+
+* Do not use a proxy server.
+* Use `localhost` or `127.0.0.1` as the host name.
+* Enable secure admin so that what {productName} interprets as a
+remote request is accepted as such.
+
+To enable secure admin, see "olink:GSSCG00039[Managing Administrative
+Security]" in {productName} Security Guide.
+====
+
+
+[[gcocs]][[GSADG00699]][[asadmin-utility]]
+
+==== `asadmin` Utility
+
+The `asadmin` utility is a command-line tool that runs subcommands for
+identifying the operation or task that you want to perform. You can run
+`asadmin` subcommands either from a command prompt or from a script.
+Running `asadmin` subcommands from a script is helpful for automating
+repetitive tasks. Basic information about how the `asadmin` utility
+works can be found in the link:reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] help page. For
+instructions on using the `asadmin` utility, see
+link:general-administration.html#giobi[Using the `asadmin` Utility].
+
+To issue an `asadmin` subcommand in the standard command shell (single
+mode), go to the as-install``/bin`` directory and type the `asadmin`
+command followed by a subcommand. For example:
+
+[source]
+----
+asadmin list-jdbc-resources
+----
+
+You can invoke multiple command mode (multimode) by typing `asadmin` at
+the command prompt, after which the `asadmin>` prompt is presented. The
+`asadmin` utility continues to accept subcommands until you exit
+multimode and return to the standard command shell. For example:
+
+[source]
+----
+asadmin> list-jdbc-resources
+----
+
+You can display a help page for any `asadmin` subcommand by typing
+`help` before the subcommand name. For example:
+
+[source]
+----
+asadmin> help restart-domain
+----
+
+or
+
+[source]
+----
+asadmin help restart-domain
+----
+
+A collection of the `asadmin` help pages is available in HTML and PDF
+format in the link:reference-manual.html#GSRFM[{productName} Reference
+Manual].
+
+[[gjjok]][[GSADG00700]][[rest-interfaces]]
+
+==== REST Interfaces
+
+{productName} provides representational state transfer (REST)
+interfaces to enable you to access monitoring and configuration data for
+{productName}, including data that is provided by newly installed
+add-on components. For more information, see
+link:general-administration.html#gjipx[Using REST Interfaces to
+Administer {productName}].
+
+[[gjjxt]][[GSADG00702]][[osgi-module-management-subsystem]]
+
+==== OSGi Module Management Subsystem
+
+The OSGi module management subsystem that is provided with {productName} is the http://felix.apache.org/[Apache Felix OSGi framework] . To
+administer this framework, use the either of the following tools:
+
+* http://felix.apache.org/documentation/subprojects/apache-felix-remote-shell.html[Apache
+Felix Gogo] remote shell. This shell is provided with {productName}.
+The shell uses the Felix Gogo shell service to interact with the OSGi
+module management subsystem.
+* GlassFish OSGi Administration Console. This console is distributed as
+an add-on component for {productName} or as a set of files from the
+Maven GlassFish repository. In both distributions, the GlassFish OSGi
+Web Console is provided as an extension to the Administration Console
+and as a standalone web application. The GlassFish OSGi Administration
+Console is a customized version of the
+http://felix.apache.org/documentation/subprojects/apache-felix-web-console.html[Apache
+Felix Web Console].
+
+These tools enable you to perform administrative tasks on OSGi bundles
+such as:
+
+* Browsing installed OSGi bundles
+* Viewing the headers of installed OSGi bundles
+* Installing OSGi bundles
+* Controlling the life cycle of installed bundles
+
+[[glhdz]][[GSADG00302]][[to-enable-the-apache-felix-gogo-remote-shell]]
+
+===== To Enable the Apache Felix Gogo Remote Shell
+
+By default, the Apache Felix Gogo remote shell in {productName} is
+disabled. Before using the shell to administer OSGi bundles in {productName}, you must enable the shell.
+
+Enabling the Apache Felix Gogo remote shell in {productName} involves
+changing the value of the property `glassfish.osgi.start.level.final`.
+This property controls whether the OSGi start level service enables the
+shell when the DAS or a {productName} instance is started.
+
+1. Ensure that the DAS is running.
++
+[[CEGDBDBH]]
+2. Change the value of the `glassfish.osgi.start.level.final` property from 2 to 3.
+If the domain includes clustered or standalone instances on remote
+hosts, perform this step on each remote host. You can change this value either by creating a Java system property or
+by editing a file.
+* To change this value by creating a Java system property, create the
+Java system property `glassfish.osgi.start.level.final` with a value of 3.
++
+[source]
+----
+asadmin> create-jvm-options --target target -Dglassfish.osgi.start.level.final=3
+----
+target::
+  The target for which you are creating the property.
++
+  For the DAS, the target is `server`.
++
+  For a clustered or standalone instance, the target is the name of the
+  instance.
+* To change this value by editing a file, edit the plain-text file
+as-install``/config/osgi.properties`` to change the value of the
+`glassfish.osgi.start.level.final` property from 2 to 3.
+
+3. Restart the DAS.
+For instructions, see link:domains.html#ginqj[To Restart a Domain].
+
+[[CJAGIGII]][[GSADG1050]][[to-run-apache-felix-gogo-remote-shell-commands]]
+
+===== To Run Apache Felix Gogo Remote Shell Commands
+
+The Apache Felix Gogo remote shell is integrated with the {productName} `asadmin` command line utility. You can use the `asadmin`
+subcommands `osgi` and `osgi-shell` to access the remote shell and run
+OSGi shell commands.
+
+[[GSADG1051]]
+
+To Run Remote Shell Commands Using the `osgi` Subcommand
+
+The `osgi` subcommand delegates the command line to the Apache Felix
+Gogo remote shell for the execution of OSGi shell commands. Commands are
+executed by the remote shell and results are returned by the `asadmin`
+utility. The `osgi` subcommand is supported in remote mode only.
+
+1. Ensure that the server is running.
+Remote commands require a running server.
+2. Access the remote shell by using the link:reference-manual/redeploy.html#GSRFM00217[`osgi`]
+subcommand. For the full syntax and options for this subcommand, see `osgi`(1).
+
+[[GSADG1052]]
+
+To Run Remote Shell Commands Using the `osgi-shell` Subcommand
+
+The `osgi-shell` subcommand provides interactive access to the Apache
+Felix Gogo remote shell for the execution of OSGi shell commands. OSGi
+shell commands are executed on the server and results are printed on the client.
+You can run multiple commands from a file or run commands interactively.
+The `osgi-shell` subcommand is supported in local mode only.
+Unlike other local subcommands, however, the DAS and the server
+instance whose shell is being accessed must be running.
+
+1. Ensure that the server is running.
+2. Access the remote shell by using the link:reference-manual/redeploy.html#GSRFM00217[`osgi-shell`]
+subcommand. For the full syntax and options for this subcommand, see `osgi-shell`(1).
+
+[[GSADG1053]][[sthref5]]
+Example 1-3 Listing Apache Felix Gogo Remote Shell Commands
+
+This example lists Apache Felix Gogo remote shell commands. Some lines
+of output are omitted from this example for readability.
+
+[source]
+----
+asadmin> osgi help
+felix:bundlelevel
+felix:cd
+felix:frameworklevel
+gogo:cat
+gogo:each
+gogo:echo
+...
+asadmin> osgi-shell
+Use "exit" to exit and "help" for online help.
+gogo$ help
+felix:bundlelevel
+felix:cd
+felix:frameworklevel
+gogo:cat
+gogo:each
+gogo:echo
+----
+
+[[GSADG1054]][[sthref6]]
+Example 1-4 Running a Remote Shell Command
+
+This example runs the Felix Remote Shell Command `lb` without any
+arguments to list all installed OSGi bundles. Some lines of output are
+omitted from this example for readability.
+
+[source]
+----
+asadmin> osgi lb
+START LEVEL 2
+ID|State      |Level|Name
+ 0|Active     |    0|System Bundle
+ 1|Active     |    1|Metro Web Services API OSGi Bundle
+ 2|Active     |    1|jakarta.annotation API
+Command osgi executed successfully.
+...
+asadmin> osgi-shell
+Use "exit" to exit and "help" for online help.
+gogo$ lb
+START LEVEL 2
+ID|State      |Level|Name
+ 0|Active     |    0|System Bundle
+ 1|Active     |    1|Metro Web Services API OSGi Bundle
+ 2|Active     |    1|jakarta.annotation API
+gogo$
+----
+
+[[GSADG00097]][[gjkrh]]
+Example 1-5 Determining the Services That an OSGi Bundle Provides
+
+This example runs the Felix Remote Shell Command `inspect` with the
+`service` option and the `capability` option to determine the services
+that OSGi bundle 251 provides. Some lines of output are omitted from
+this example for readability.
+
+[source]
+----
+asadmin> osgi inspect service capability 251
+== GlassFish EJB Container for OSGi Enabled EJB Applications (251) provides services:
+objectClass = org.glassfish.osgijavaeebase.Extender
+service.id = 68
+-----
+objectClass = org.glassfish.osgijavaeebase.OSGiDeployer
+service.id = 69
+service.ranking = -2147483648
+Command osgi executed successfully.
+...
+asadmin> osgi -shell
+Use "exit" to exit and "help" for online help.
+gogo$ inspect service capability 251
+== GlassFish EJB Container for OSGi Enabled EJB Applications (251) provides services:
+objectClass = org.glassfish.osgijavaeebase.Extender
+service.id = 68
+...
+gogo$
+----
+
+[[gkwvx]][[GSADG00303]][[to-download-and-install-the-glassfish-osgi-web-console]]
+
+===== To Download and Install the GlassFish OSGi Web Console
+
+The GlassFish OSGi Web Console is distributed as follows:
+
+* As an add-on component for {productName}
+* As a set of files from the https://maven.java.net[GlassFish Maven
+repository]
+
+In both distributions, the GlassFish OSGi Web Console is provided as an
+extension to the Administration Console and as a standalone web
+application.
+
+1. Perform one of the following sets of steps, depending on how you are
+obtaining the GlassFish OSGi Web Console.
+* If you are obtaining the console as an add-on component, install the
+GlassFish OSGi Admin Console component.
+* If you are obtaining the console from the Maven repository, download
+and unzip the required files.
+2. Download the following files to the parent of the `glassfish7`
+directory of your {productName} installation.
+http://maven.glassfish.org/content/groups/glassfish/org/glassfish/packager/glassfish-osgi-http/3.1.2/glassfish-osgi-http-3.1.2.zip[`glassfish-osgi-http-3.1.2.zip`]
++
+http://maven.glassfish.org/content/groups/glassfish/org/glassfish/packager/glassfish-osgi-gui/3.1.2/glassfish-osgi-gui-3.1.2.zip[`glassfish-osgi-gui-3.1.2.zip`]
+3. Unzip the files that you downloaded.
++
+The contents of the files are added to the
+as-install``/modules/autostart`` directory of your {productName}
+installation.
+4. Restart the DAS. For instructions, see link:domains.html#ginqj[To Restart a Domain].
+
+[[GSADG797]]
+
+Next Steps
+
+After downloading and installing the GlassFish OSGi Web Console, you can
+access the console as explained in the following sections:
+
+* link:#BABIDJHF[To Access the GlassFish OSGi Web Console Through the
+{productName} Administration Console]
+* link:#BABDJHAF[To Access the GlassFish OSGi Web Console as a Standalone Web Application]
+
+[[BABIDJHF]][[GSADG798]][[to-access-the-glassfish-osgi-web-console-through-the-glassfish-server-administration-console]]
+
+===== To Access the GlassFish OSGi Web Console Through the {productName} Administration Console
+
+A tab for the GlassFish OSGi Web Console is provided for the DAS and for
+every {productName} instance in a domain.
+
+1. Ensure that the DAS and the instance for which you want to access
+the GlassFish OSGi Web Console are running.
+
+2. Start the {productName} Administration Console.
+For instructions, see link:#ablav[Administration Console].
+
+3. Open the Administration Console page for the DAS or instance for
+which you are accessing the GlassFish OSGi Web Console.
+* For the DAS, in the navigation tree, select the server (Admin Server) node.
+* For a standalone instance, perform these steps:
+.. In the navigation tree, expand the Standalone Instances node.
+.. Under the Standalone Instances node, select the instance.
+* For a clustered instance, perform these steps:
+.. In the navigation tree, expand the Clusters node.
+.. Under the Clusters node, select the cluster that contains the instance.
+   The General Information page for the cluster opens.
+.. In the General Information page for the cluster, click the Instances tab.
+   The Clustered Server Instances page for the cluster opens.
+.. In the Server Instances table on the Clustered Server Instances
+   page, select the instance.
+
+4. On the Administration Console page for the DAS or instance, click
+the OSGi Console tab. You are prompted for the user name and password of the administrative
+user of the GlassFish OSGi Web Console.
+
+5. In response to the prompt, provide the user name and password of the
+administrative user of the GlassFish OSGi Web Console.
+The user name and password of this user are both preset to `admin`.
+The GlassFish OSGi Web Console page opens.
+
+[[BABDJHAF]][[GSADG799]][[to-access-the-glassfish-osgi-web-console-as-a-standalone-web-application]]
+
+===== To Access the GlassFish OSGi Web Console as a Standalone Web Application
+
+1. Ensure that the DAS or the instance for which you want to access the
+GlassFish OSGi Web Console is running.
+
+2. In a web browser, open the following location:
++
+[source]
+----
+http://host:http-port/osgi/system/console/
+----
+host::
+  The host where the DAS or instance is running.
+http-port::
+  The port on which {productName} listens for HTTP requests.
+  The default is 8080.
+
++
+For example, if the DAS is running on the local host and {productName} listens
+  for HTTP requests on the default port, open the following location:
++
+[source]
+----
+http://localhost:8080/osgi/system/console/
+----
+
+3. When prompted, provide the user name and password of the
+administrative user of the GlassFish OSGi Web Console.
++
+The user name and password of this user are both preset to `admin`.
+
+[[ghcjl]][[GSADG00703]][[keytool-utility]]
+
+==== `keytool` Utility
+
+The `keytool` utility is used to set up and work with Java Security
+Socket Extension (JSSE) digital certificates. See
+"link:security-guide/system-security.html#GSSCG00147[Administering JSSE Certificates]"
+in {productName} Security Guide for instructions on using `keytool`.
+
+[[ghrfm]][[GSADG00704]][[java-monitoring-and-management-console-jconsole]]
+
+==== Java Monitoring and Management Console (JConsole)
+
+Java SE provides tools to connect to an MBean server and view the MBeans
+that are registered with the server. JConsole is one such popular JMX
+Connector Client and is available as part of the standard Java SE
+distribution. For instructions on implementing JConsole in the {productName} environment,
+see link:monitoring.html#giwqm[Configuring JConsole to View {productName} Monitoring Data].
+
+[[giudo]][[GSADG00529]][[instructions-for-administering-glassfish-server]]
+
+=== Instructions for Administering {productName}
+
+Information and instructions on performing most of the administration
+tasks from the command line are provided in this document and in the
+`asadmin` utility help pages. For instructions on accessing `asadmin`
+online help, see link:general-administration.html#givlw[To Display Help
+Information for the `asadmin` Utility or a Subcommand].
+
+Information and instructions for accomplishing the tasks by using the
+Administration Console are contained in the Administration Console
+online help.
+
+
+[NOTE]
+====
+Instructions written for the {productName} tools use standard UNIX
+forward slashes (/) for directory path separators in commands and file
+names. If you are running {productName} on a Microsoft Windows
+system, use backslashes (\) instead. For example:
+
+* UNIX: as-install``/bin/asadmin``
+* Windows: as-install``\bin\asadmin``
+
+====
+
+
+The following additional documents address specific administration areas:
+
+* Verifying and deploying applications
+link:application-deployment-guide.html#GSDPG[{productName} Application Deployment Guide]
+
+
diff --git a/docs/administration-guide/src/main/asciidoc/part-appendixes.adoc b/docs/administration-guide/src/main/asciidoc/part-appendixes.adoc
new file mode 100644
index 0000000..7d1cdc7
--- /dev/null
+++ b/docs/administration-guide/src/main/asciidoc/part-appendixes.adoc
@@ -0,0 +1,16 @@
+type=page
+status=published
+title=Appendixes
+next=asadmin-subcommands.html
+prev=transactions.html
+~~~~~~
+
+= Appendixes
+
+[[gitym]][[GSADG00299]][[part-iii]]
+
+== Part III
+
+[[appendixes]]
+== Appendixes
+
diff --git a/docs/administration-guide/src/main/asciidoc/part-res-and-svcs-admin.adoc b/docs/administration-guide/src/main/asciidoc/part-res-and-svcs-admin.adoc
new file mode 100644
index 0000000..5ba4b28
--- /dev/null
+++ b/docs/administration-guide/src/main/asciidoc/part-res-and-svcs-admin.adoc
@@ -0,0 +1,16 @@
+type=page
+status=published
+title=Resources and Services Administration
+next=jdbc.html
+prev=batch.html
+~~~~~~
+
+= Resources and Services Administration
+
+[[gitxw]][[GSADG00298]][[part-ii]]
+
+== Part II
+
+[[resources-and-services-administration]]
+== Resources and Services Administration
+
diff --git a/docs/administration-guide/src/main/asciidoc/part-runtime-admin.adoc b/docs/administration-guide/src/main/asciidoc/part-runtime-admin.adoc
new file mode 100644
index 0000000..283d747
--- /dev/null
+++ b/docs/administration-guide/src/main/asciidoc/part-runtime-admin.adoc
@@ -0,0 +1,16 @@
+type=page
+status=published
+title=Runtime Administration
+next=general-administration.html
+prev=overview.html
+~~~~~~
+
+= Runtime Administration
+
+[[gitzg]][[GSADG00297]][[part-i]]
+
+== Part I
+
+[[runtime-administration]]
+== Runtime Administration
+
diff --git a/docs/administration-guide/src/main/asciidoc/preface.adoc b/docs/administration-guide/src/main/asciidoc/preface.adoc
new file mode 100644
index 0000000..695c770
--- /dev/null
+++ b/docs/administration-guide/src/main/asciidoc/preface.adoc
@@ -0,0 +1,320 @@
+type=page
+status=published
+title=Preface
+next=overview.html
+prev=title.html
+~~~~~~
+
+= Preface
+
+[[GSADG00003]][[gkamj]]
+[[preface]]
+== Preface
+
+The {productName} Administration Guide provides
+instructions for configuring and administering
+{productName}.
+
+This preface contains information about and conventions for the entire
+{productName} ({productName}) documentation set.
+
+{productName} 7 is developed through the GlassFish project
+open-source community at https://github.com/eclipse-ee4j/glassfish.
+The GlassFish project provides a structured process for developing the
+{productName} platform that makes the new features of the Jakarta EE
+platform available faster, while maintaining the most important feature
+of Jakarta EE: compatibility. It enables Java developers to access the
+{productName} source code and to contribute to the development of the
+{productName}.
+
+The following topics are addressed here:
+
+* link:#ghpbz[{productName} Documentation Set]
+* link:#giprl[Related Documentation]
+* link:#fwbkx[Typographic Conventions]
+* link:#fquvc[Symbol Conventions]
+* link:#ghpfg[Default Paths and File Names]
+
+[[GSADG00518]][[ghpbz]]
+
+[[glassfish-server-documentation-set]]
+=== {productName} Documentation Set
+
+The {productName} documentation set describes deployment planning and
+system installation. For an introduction to {productName}, refer to
+the books in the order in which they are listed in the following table.
+
+[width="100%",cols="<30%,<70%",options="header",]
+|===
+|Book Title |Description
+|link:release-notes.html#GSRLN[Release Notes] |Provides late-breaking information about
+the software and the documentation and includes a comprehensive,
+table-based summary of the supported hardware, operating system, Java
+Development Kit (JDK), and database drivers.
+
+|link:quick-start-guide.html#GSQSG[Quick Start Guide]
+|Explains how to get started with the {productName} product.
+
+|link:installation-guide.html#GSING[Installation Guide]
+|Explains how to install the software and its components.
+
+|link:upgrade-guide.html#GSUPG[Upgrade Guide]
+|Explains how to upgrade to the latest version of {productName}.
+This guide also describes differences between adjacent product releases and configuration
+options that can result in incompatibility with the product specifications.
+
+|link:deployment-planning-guide.html#GSPLG[Deployment Planning Guide]
+|Explains how to build a production deployment of {productName} that meets the requirements of
+your system and enterprise.
+
+|link:administration-guide.html#GSADG[Administration Guide]
+|Explains how to configure, monitor, and manage {productName} subsystems and components
+from the command line by using the link:reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] utility.
+Instructions for performing these tasks from the Administration Console are provided
+in the Administration Console online help.
+
+|link:security-guide.html#GSSCG[Security Guide]
+|Provides instructions for configuring and administering {productName} security.
+
+|link:application-deployment-guide.html#GSDPG[Application Deployment Guide]
+|Explains how to assemble and deploy applications to the {productName} and provides information
+about deployment descriptors.
+
+|link:application-development-guide.html#GSDVG[Application Development Guide]
+|Explains how to create and implement Java Platform, Enterprise Edition (Jakarta EE platform)
+applications that are intended to run on the {productName}.
+These applications follow the open Java standards model for Jakarta EE components
+and application programmer interfaces (APIs).
+This guide provides information about developer tools, security, and debugging.
+
+|link:add-on-component-development-guide.html#GSACG[Add-On Component Development Guide]
+|Explains how to use published interfaces of {productName} to develop add-on components
+for {productName}.
+This document explains how to perform only those tasks that ensure that the add-on component
+is suitable for {productName}.
+
+|link:embedded-server-guide.html#GSESG[Embedded Server Guide]
+|Explains how to run applications in embedded {productName} and to develop applications
+in which {productName} is embedded.
+
+|link:ha-administration-guide.html#GSHAG[High Availability Administration Guide]
+|Explains how to configure {productName} to provide higher availability and
+scalability through failover and load balancing.
+
+|link:performance-tuning-guide.html#GSPTG[Performance Tuning Guide]
+|Explains how to optimize the performance of {productName}.
+
+|link:troubleshooting-guide.html#GSTSG[Troubleshooting Guide]
+|Describes common problems that you might encounter when using {productName} and explains how to solve them.
+
+|link:error-messages-reference.html#GSEMR[Error Message Reference]
+|Describes error messages that you might encounter when using {productName}.
+
+|link:reference-manual.html#GSRFM[Reference Manual]
+|Provides reference information in man page format for {productName} administration commands, utility
+commands, and related concepts.
+
+|link:../openmq/mq-release-notes.html#GMRLN[Message Queue Release Notes]
+|Describes new features, compatibility issues, and existing bugs for Open Message Queue.
+
+|link:../openmq/mq-tech-over.html#GMTOV[Message Queue Technical Overview]
+|Provides an introduction to the technology, concepts, architecture, capabilities, and features of
+the Message Queue messaging service.
+
+|link:../openmq/mq-admin-guide.html#GMADG[Message Queue Administration Guide]
+|Explains how to set up and manage a Message Queue messaging system.
+
+|link:../openmq/mq-dev-guide-jmx.html#GMJMG[Message Queue Developer's Guide for JMX Clients]
+|Describes the application programming interface in Message Queue for
+programmatically configuring and monitoring Message Queue resources in
+conformance with the Java Management Extensions (JMX).
+
+|link:../openmq/mq-dev-guide-java.html#GMJVG[Message Queue Developer's Guide for Java Clients]
+|Provides information about concepts and procedures for developing Java messaging
+applications (Java clients) that work with {productName}.
+
+|link:../openmq/mq-dev-guide-c.html#GMCCG[Message Queue Developer's Guide for C Clients]
+|Provides programming and reference information for developers working with
+Message Queue who want to use the C language binding to the Message
+Queue messaging service to send, receive, and process Message Queue messages.
+|===
+
+
+[[GSADG00519]][[giprl]]
+
+[[related-documentation]]
+=== Related Documentation
+
+The following tutorials explain how to develop Jakarta EE applications:
+
+* https://github.com/eclipse-ee4j/jakartaee-firstcup-examples[
+Your First Cup: An Introduction to the Jakarta EE Platform].
+For beginning Jakarta EE programmers, this short tutorial explains the entire
+process for developing a simple enterprise application.
+The sample application is a web application that consists of a component that is
+based on the Enterprise JavaBeans specification, a JAX-RS web service,
+and a JavaServer Faces component for the web front end.
+
+* https://eclipse-ee4j.github.io/jakartaee-tutorial[The Jakarta EE Tutorial].
+This comprehensive tutorial explains how to use Jakarta EE platform technologies
+and APIs to develop Jakarta EE applications.
+
+Javadoc tool reference documentation for packages that are provided with
+{productName} is available as follows.
+
+* The Jakarta EE specifications and API specification is
+located at https://jakarta.ee/specifications/.
+
+* The API specification for {productName} 7, including Jakarta EE
+platform packages and nonplatform packages that are specific to the
+{productName} product, is located at
+https://glassfish.org/docs/.
+
+For information about creating enterprise applications in the NetBeans
+Integrated Development Environment (IDE), see the
+https://netbeans.apache.org/kb/docs/java-ee.html[
+NetBeans Documentation, Training & Support page].
+
+For information about the Derby database for use with
+the {productName}, see the https://db.apache.org/derby/index.html[Derby page].
+
+The Jakarta EE Samples project is a collection of sample applications that
+demonstrate a broad range of Jakarta EE technologies. The Jakarta EE Samples
+are bundled with the Jakarta EE Software Development Kit (SDK) and are also
+available from the repository
+(`https://github.com/eclipse-ee4j/glassfish-samples`).
+
+[[GSADG00520]][[fwbkx]]
+
+[[typographic-conventions]]
+=== Typographic Conventions
+
+The following table describes the typographic changes that are used in
+this book.
+
+[width="100%",cols="<14%,<37%,<49%",options="header",]
+|===
+|Typeface |Meaning |Example
+
+|`AaBbCc123`
+|The names of commands, files, and directories, and onscreen computer output
+|Edit your `.login` file.
+
+Use `ls` `a` to list all files.
+
+`machine_name% you have mail.`
+
+|`AaBbCc123`
+|What you type, contrasted with onscreen computer output
+|`machine_name%` `su`
+
+`Password:`
+
+|AaBbCc123
+|A placeholder to be replaced with a real name or value
+|The command to remove a file is `rm` filename.
+
+|AaBbCc123
+|Book titles, new terms, and terms to be emphasized (note that some emphasized items appear bold online)
+|Read Chapter 6 in the User's Guide.
+
+A cache is a copy that is stored locally.
+
+Do not save the file.
+|===
+
+
+[[GSADG00521]][[fquvc]]
+
+[[symbol-conventions]]
+=== Symbol Conventions
+
+The following table explains symbols that might be used in this book.
+
+[width="100%",cols="<10%,<26%,<28%,<36%",options="header",]
+|===
+|Symbol |Description |Example |Meaning
+
+|`[ ]`
+|Contains optional arguments and command options.
+|`ls [-l]`
+|The `-l` option is not required.
+
+|`{ \| }`
+|Contains a set of choices for a required command option.
+|`-d {y\|n}`
+|The `-d` option requires that you use either the `y` argument or the `n` argument.
+
+|`${ }`
+|Indicates a variable reference.
+|`${com.sun.javaRoot}`
+|References the value of the `com.sun.javaRoot` variable.
+
+|`-`
+|Joins simultaneous multiple keystrokes.
+|Control-A
+|Press the Control key while you press the A key.
+
+|`+`
+|Joins consecutive multiple keystrokes.
+|Ctrl+A+N
+|Press the Control key, release it, and then press the subsequent keys.
+
+|`>`
+|Indicates menu item selection in a graphical user interface.
+|File > New > Templates
+|From the File menu, choose New. From the New submenu, choose Templates.
+|===
+
+
+[[GSADG00522]][[ghpfg]]
+
+[[default-paths-and-file-names]]
+=== Default Paths and File Names
+
+The following table describes the default paths and file names that are
+used in this book.
+
+[%autowidth.stretch,options="header",]
+|===
+|Placeholder |Description |Default Value
+
+|as-install
+a|Represents the base installation directory for {productName}.
+In configuration files, as-install is represented as follows:
+`${com.sun.aas.installRoot}`
+a|* Installations on the Oracle Solaris operating system, Linux operating
+system, and Mac OS operating system:
++
+user's-home-directory``/glassfish7/glassfish``
++
+* Installations on the Windows operating system:
++
+SystemDrive``:\glassfish7\glassfish``
+
+|as-install-parent
+|Represents the parent of the base installation directory for {productName}.
+a|* Installations on the Oracle Solaris operating system, Linux operating
+system, and Mac operating system:
++
+user's-home-directory``/glassfish7``
++
+* Installations on the Windows operating system:
++
+SystemDrive``:\glassfish7``
+
+|domain-root-dir
+|Represents the directory in which a domain is created by default.
+|as-install``/domains/``
+
+|domain-dir
+|Represents the directory in which a domain's configuration is stored.
+In configuration files, domain-dir is represented as follows:
+`${com.sun.aas.instanceRoot}`
+|domain-root-dir/domain-name
+
+|instance-dir
+|Represents the directory for a server instance.
+|domain-dir/instance-name
+|===
+
diff --git a/docs/administration-guide/src/main/asciidoc/threadpools.adoc b/docs/administration-guide/src/main/asciidoc/threadpools.adoc
new file mode 100644
index 0000000..346f93f
--- /dev/null
+++ b/docs/administration-guide/src/main/asciidoc/threadpools.adoc
@@ -0,0 +1,228 @@
+type=page
+status=published
+title=Administering Thread Pools
+next=webapps.html
+prev=jvm.html
+~~~~~~
+
+= Administering Thread Pools
+
+[[GSADG00008]][[abluc]]
+
+
+[[administering-thread-pools]]
+== 5 Administering Thread Pools
+
+This chapter provides procedures for administering thread pools in the
+{productName} 7 environment by using the
+`asadmin` command-line utility.
+
+The following topics are addressed here:
+
+* link:#ggjyv[About Thread Pools]
+* link:#ablud[Configuring Thread Pools]
+
+Instructions for accomplishing these tasks by using the Administration
+Console are contained in the Administration Console online help.
+
+[[ggjyv]][[GSADG00546]][[about-thread-pools]]
+
+=== About Thread Pools
+
+The Virtual Machine for the Java platform (Java Virtual Machine) or JVM
+machine) can support many threads of execution simultaneously. To help
+performance, {productName} maintains one or more thread pools. It is
+possible to assign specific thread pools to connector modules, to
+network listeners, or to the Object Request Broker (ORB).
+
+One thread pool can serve multiple connector modules and enterprise
+beans. Request threads handle user requests for application components.
+When {productName} receives a request, it assigns the request to a
+free thread from the thread pool. The thread executes the client's
+requests and returns results. For example, if the request needs to use a
+system resource that is currently busy, the thread waits until that
+resource is free before allowing the request to use that resource.
+
+[[ablud]][[GSADG00547]][[configuring-thread-pools]]
+
+=== Configuring Thread Pools
+
+You can specify the minimum and maximum number of threads that are
+reserved for requests from applications. The thread pool is dynamically
+adjusted between these two values.
+
+The following topics are addressed here:
+
+* link:#ggkwj[To Create a Thread Pool]
+* link:#giuff[To List Thread Pools]
+* link:#ggkyc[To Update a Thread Pool]
+* link:#ggkwy[To Delete a Thread Pool]
+
+[[ggkwj]][[GSADG00366]][[to-create-a-thread-pool]]
+
+==== To Create a Thread Pool
+
+Use the `create-threadpool` subcommand in remote mode to create a thread
+pool.
+
+The minimum thread pool size that is specified signals the server to
+allocate at least that many threads in reserve for application requests.
+That number is increased up to the maximum thread pool size that is
+specified. Increasing the number of threads available to a process
+allows the process to respond to more application requests
+simultaneously.
+
+If one resource adapter or application occupies all the {productName}
+threads, thread starvation might occur. You can avoid this by dividing
+the {productName} threads into different thread pools.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Create a new thread pool by using the
+link:reference-manual/create-threadpool.html#GSRFM00060[`create-threadpool`] subcommand.
++
+Information about options for the subcommand is included in this help
+page.
+3. To apply your changes, restart {productName}.
++
+See link:domains.html#ginqj[To Restart a Domain].
++
+
+[NOTE]
+====
+Restart is not necessary for thread pools used by the web container.
+====
+
+
+[[GSADG00162]][[giuez]]
+Example 5-1 Creating a Thread Pool
+
+This example creates `threadpool-l`.
+
+[source]
+----
+asadmin> create-threadpool --maxthreadpoolsize 100
+--minthreadpoolsize 20 --idletimeout 2 --workqueues 100 threadpool-1
+Command create-threadpool executed successfully
+----
+
+[[GSADG853]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-threadpool` at the command line.
+
+[[giuff]][[GSADG00367]][[to-list-thread-pools]]
+
+==== To List Thread Pools
+
+Use the `list-threadpools` subcommand in remote mode to list the
+existing thread pools.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the existing thread pools by using the
+link:reference-manual/list-threadpools.html#GSRFM00204[`list-threadpools`] subcommand.
+
+[[GSADG00163]][[giugs]]
+Example 5-2 Listing Thread Pools
+
+This example lists the existing thread pools.
+
+[source]
+----
+asadmin> list-threadpools
+threadpool-1
+Command list-threadpools executed successfully
+----
+
+[[GSADG854]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-threadpools` at the command line.
+
+[[ggkyc]][[GSADG00368]][[to-update-a-thread-pool]]
+
+==== To Update a Thread Pool
+
+Use the `set` subcommand to update the values for a specified thread
+pool.
+
+1. List the existing thread pools by using the
+link:reference-manual/list-threadpools.html#GSRFM00204[`list-threadpools`] subcommand.
+2. Modify the values for a thread pool by using the
+link:reference-manual/set.html#GSRFM00226[`set`] subcommand.
++
+The thread pool is identified by its dotted name.
+3. To apply your changes, restart {productName}.
++
+See link:domains.html#ginqj[To Restart a Domain].
++
+
+[NOTE]
+====
+Restart is not necessary for thread pools used by the web container.
+====
+
+
+[[GSADG00164]][[giuhc]]
+Example 5-3 Updating a Thread Pool
+
+This example sets the `max-thread-pool-size` from its previous value to
+8. [source]
+----
+asadmin> set server.thread-pools.thread-pool.http-thread-pool.max-thread-pool-size=8
+Command set executed successfully
+----
+
+[[GSADG855]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help set` at the command line.
+
+[[ggkwy]][[GSADG00369]][[to-delete-a-thread-pool]]
+
+==== To Delete a Thread Pool
+
+Use the `delete-threadpool` subcommand in remote mode to delete an
+existing thread pool. Deleting a thread pool will fail if that pool is
+referenced by a network listener.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the existing thread pools by using the
+link:reference-manual/list-threadpools.html#GSRFM00204[`list-threadpools`] subcommand.
+3. Delete the specified thread pool by using the
+link:reference-manual/delete-threadpool.html#GSRFM00111[`delete-threadpool`] subcommand.
+4. To apply your changes, restart {productName}.
++
+See link:domains.html#ginqj[To Restart a Domain].
++
+
+[NOTE]
+====
+Restart is not necessary for thread pools used by the web container.
+====
+
+
+[[GSADG00165]][[giugt]]
+Example 5-4 Deleting a Thread Pool
+
+This example deletes `threadpool-1`.
+
+[source]
+----
+asadmin> delete-threadpool threadpool-1
+Command delete-threadpool executed successfully
+----
+
+[[GSADG856]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-threadpool` at the command line.
+
+
diff --git a/docs/administration-guide/src/main/asciidoc/title.adoc b/docs/administration-guide/src/main/asciidoc/title.adoc
new file mode 100644
index 0000000..a8c35bd
--- /dev/null
+++ b/docs/administration-guide/src/main/asciidoc/title.adoc
@@ -0,0 +1,48 @@
+type=page
+status=published
+title={productName} Administration Guide, Release 7
+next=preface.html
+prev=lot.html
+~~~~~~
+
+
+= {productName} Administration Guide, Release 7
+
+
+[[eclipse-glassfish-server]]
+== {productName}
+
+Administration Guide
+
+Release 7
+
+Contributed 2018 - 2022
+
+{productName} 7 Administration Guide provides
+instructions for configuring and administering {productName}.
+
+[[sthref1]]
+
+'''''
+
+{productName} Administration Guide, Release 7
+
+Copyright © 2013, 2019 Oracle and/or its affiliates. All rights reserved.
+
+This program and the accompanying materials are made available under the
+terms of the Eclipse Public License v. 2.0, which is available at
+http://www.eclipse.org/legal/epl-2.0.
+
+SPDX-License-Identifier: EPL-2.0
+
+Oracle and Java are registered trademarks of Oracle and/or its
+affiliates. Other names may be trademarks of their respective owners.
+
+Intel and Intel Xeon are trademarks or registered trademarks of Intel
+Corporation. All SPARC trademarks are used under license and are
+trademarks or registered trademarks of SPARC International, Inc. AMD,
+Opteron, the AMD logo, and the AMD Opteron logo are trademarks or
+registered trademarks of Advanced Micro Devices. UNIX is a registered
+trademark of The Open Group.
+
+image:img/eclipse_foundation_logo_tiny.png["Eclipse Logo"]
diff --git a/docs/administration-guide/src/main/asciidoc/transactions.adoc b/docs/administration-guide/src/main/asciidoc/transactions.adoc
new file mode 100644
index 0000000..f667878
--- /dev/null
+++ b/docs/administration-guide/src/main/asciidoc/transactions.adoc
@@ -0,0 +1,810 @@
+type=page
+status=published
+title=Administering Transactions
+next=part-appendixes.html
+prev=jndi.html
+~~~~~~
+
+= Administering Transactions
+
+[[GSADG00022]][[ablsn]]
+
+
+[[administering-transactions]]
+== 19 Administering Transactions
+
+This chapter discusses how to manage the transaction service for the
+{productName} environment by using the `asadmin`
+command-line utility. Instructions for manually recovering transactions
+are also included.
+
+The following topics are addressed here:
+
+* link:#ablso[About Transactions]
+* link:#beanp[Configuring the Transaction Service]
+* link:#giubd[Managing the Transaction Service for Rollbacks]
+* link:#gjjpy[Recovering Transactions]
+* link:#beanq[Transaction Logging]
+
+Instructions for accomplishing the tasks in this chapter by using the
+Administration Console are contained in the Administration Console
+online help.
+
+For more information about the Java Transaction API (JTA) and Java
+Transaction Service (JTS), see the following sites:
+`http://www.oracle.com/technetwork/java/javaee/tech/jta-138684.html` and
+`http://www.oracle.com/technetwork/java/javaee/tech/jts-140022.html`.
+
+You might also want to read
+"https://eclipse-ee4j.github.io/jakartaee-tutorial/#transactions[Transactions]"
+in The Jakarta EE Tutorial.
+
+[[ablso]][[GSADG00605]][[about-transactions]]
+
+=== About Transactions
+
+A transaction is a series of discreet actions in an application that
+must all complete successfully. By enclosing one or more actions in an
+indivisible unit of work, a transaction ensures data integrity and
+consistency. If all actions do not complete, the changes are rolled
+back.
+
+For example, to transfer funds from a checking account to a savings
+account, the following steps typically occur:
+
+1. Check to see if the checking account has enough money to cover the
+transfer.
+2. Debit the amount from the checking account.
+3. Credit the amount to the savings account.
+4. Record the transfer to the checking account log.
+5. Record the transfer to the savings account log.
+
+These steps together are considered a single transaction.
+
+If all the steps complete successfully, the transaction is committed .
+If any step fails, all changes from the preceding steps are rolled back,
+and the checking account and savings account are returned to the states
+they were in before the transaction started. This type of event is
+called a rollback. A normal transaction ends in either a committed state
+or a rolled back state.
+
+The following elements contribute to reliable transaction processing by
+implementing various APIs and functionalities:
+
+* Transaction Manager. Provides the services and management functions
+required to support transaction demarcation, transactional resource
+management, synchronization, and transaction context propagation.
+* {productName}. Provides the infrastructure required to support the
+application runtime environment that includes transaction state
+management.
+* Resource Manager. Through a resource adapter, the resource manager
+provides the application access to resources. The resource manager
+participates in distributed transactions by implementing a transaction
+resource interface used by the transaction manager to communicate
+transaction association, transaction completion, and recovery work. An
+example of such a resource manager is a relational database server.
+* Resource Adapter. A system-level software library is used by {productName} or a client to connect to a resource manager. A resource adapter
+is typically specific to a resource manager. The resource adapter is
+available as a library and is used within the address space of the
+client using it. An example of such a resource adapter is a Java
+Database Connectivity (JDBC) driver. For information on supported JDBC
+drivers, see link:jdbc.html#beamw[Configuration Specifics for JDBC
+Drivers].
+* Transactional User Application. In the {productName} environment,
+the transactional user application uses Java Naming and Directory
+Interface (JNDI) to look up transactional data sources and, optionally,
+the user transaction). The application might use declarative transaction
+attribute settings for enterprise beans, or explicit programmatic
+transaction demarcation. For more information, see "link:application-development-guide/transaction-service.html#GSDVG00191[The
+Transaction Manager, the Transaction Synchronization Registry, and
+UserTransaction]" in {productName} Application
+Development Guide.
+
+The following topics are addressed here:
+
+* link:#beann[Transaction Resource Managers]
+* link:#beano[Transaction Scope]
+
+[[beann]][[GSADG00785]][[transaction-resource-managers]]
+
+==== Transaction Resource Managers
+
+There are three types of transaction resource managers:
+
+* Databases - Use of transactions prevents databases from being left in
+inconsistent states due to incomplete updates. For information about
+JDBC transaction isolation levels, see "link:application-development-guide/transaction-service.html#GSDVG00511[Using JDBC
+Transaction Isolation Levels]" in {productName}
+Application Development Guide.
++
+The {productName} supports a variety of JDBC XA drivers. For a list
+of the JDBC drivers currently supported by the {productName}, see the
+link:release-notes.html#GSRLN[{productName} Release Notes]. For
+configurations of supported and other drivers, see
+link:jdbc.html#beamw[Configuration Specifics for JDBC Drivers].
+* Java Message Service (JMS) Providers - Use of transactions ensures
+that messages are reliably delivered. The {productName} is integrated
+with Open Message Queue, a fully capable JMS provider. For more
+information about transactions and the JMS API, see
+link:jms.html#abljw[Administering the Java Message Service (JMS)].
+* J2EE Connector Architecture (CA) components - Use of transactions
+prevents legacy EIS systems from being left in inconsistent states due
+to incomplete updates. For more information about connectors, see
+link:connectors.html#abllp[Administering EIS Connectivity].
+
+[[beano]][[GSADG00786]][[transaction-scope]]
+
+==== Transaction Scope
+
+A local transaction involves only one non-XA resource and requires that
+all participating application components execute within one process.
+Local transaction optimization is specific to the resource manager and
+is transparent to the Jakarta EE application.
+
+In the {productName}, a JDBC resource is non-XA if it meets either of
+the following criteria:
+
+* In the JDBC connection pool configuration, the DataSource class does
+not implement the javax.sql.XADataSource interface.
+* The Resource Type setting is not set to javax.sql.XADataSource .
+
+A transaction remains local if the following conditions remain true:
+
+* One and only one non-XA resource is used. If any additional non-XA
+resource is used, the transaction is aborted, because the transaction
+manager must use XA protocol to commit two or more resources.
+* No transaction importing or exporting occurs.
+
+Transactions that involve multiple resources or multiple participant
+processes are distributed or global transactions. A global transaction
+can involve one non-XA resource if last agent optimization is enabled.
+Otherwise, all resources must be XA. The `use-last-agent-optimization`
+property is set to `true` by default. For details about how to set this
+property, see link:#beanp[Configuring the Transaction Service].
+
+If only one XA resource is used in a transaction, one-phase commit
+occurs, otherwise the transaction is coordinated with a two-phase commit
+protocol.
+
+A two-phase commit protocol between the transaction manager and all the
+resources enlisted for a transaction ensures that either all the
+resource managers commit the transaction or they all abort. When the
+application requests the commitment of a transaction, the transaction
+manager issues a `PREPARE_TO_COMMIT` request to all the resource
+managers involved. Each of these resources can in turn send a reply
+indicating whether it is ready for commit (`PREPARED`) or not (`NO`).
+Only when all the resource managers are ready for a commit does the
+transaction manager issue a commit request (`COMMIT`) to all the
+resource managers. Otherwise, the transaction manager issues a rollback
+request (`ABORT`) and the transaction is rolled back.
+
+[[beanp]][[GSADG00606]][[configuring-the-transaction-service]]
+
+=== Configuring the Transaction Service
+
+You can configure the transaction service in the {productName} in the
+following ways:
+
+* To configure the transaction service using the Administration Console,
+open the Transaction Service component under the relevant configuration.
+For details, click the Help button in the Administration Console.
+* To configure the transaction service, use the link:reference-manual/set.html#GSRFM00226[`set`]
+subcommand to set the following attributes.
++
+The following examples show the `server-config` configuration, but
+values for any configuration can be set. For example, if you create a
+cluster named `cluster1` and a configuration named `cluster1-config` is
+automatically created for it, you can use `cluster1-config` in the `set`
+subcommand to get the transaction service settings for that cluster.
++
+[source]
+----
+server-config.transaction-service.automatic-recovery = false
+server-config.transaction-service.heuristic-decision = rollback
+server-config.transaction-service.keypoint-interval = 2048
+server-config.transaction-service.retry-timeout-in-seconds = 600
+server-config.transaction-service.timeout-in-seconds = 0
+server-config.transaction-service.tx-log-dir = domain-dir/logs
+----
+You can also set these properties:
++
+[source]
+----
+server-config.transaction-service.property.oracle-xa-recovery-workaround = true
+server-config.transaction-service.property.sybase-xa-recovery-workaround = false
+server-config.transaction-service.property.disable-distributed-transaction-logging = false
+server-config.transaction-service.property.xaresource-txn-timeout = 0
+server-config.transaction-service.property.pending-txn-cleanup-interval = -1
+server-config.transaction-service.property.use-last-agent-optimization = true
+server-config.transaction-service.property.delegated-recovery = false
+server-config.transaction-service.property.wait-time-before-recovery-insec = 60
+server-config.transaction-service.property.purge-cancelled-transactions-after = 0
+server-config.transaction-service.property.commit-one-phase-during-recovery = false
+server-config.transaction-service.property.add-wait-point-during-recovery = 0
+server-config.transaction-service.property.db-logging-resource = jdbc/TxnDS
+server-config.transaction-service.property.xa-servername = myserver
+----
+Default property values are shown where they exist. For
+`db-logging-resource` and `xa-servername`, typical values are shown.
+Values that are not self-explanatory are as follows:
+
+** The `xaresource-txn-timeout` default of `0` means there is no
+timeout. The units are seconds.
+
+** The `pending-txn-cleanup-interval` default of `-1` means the periodic
+recovery thread doesn't run. The units are seconds.
+
+** The `purge-cancelled-transactions-after` default of `0` means
+cancelled transactions are not purged. The units are the number of
+cancellations in between purging attempts.
+
+** The `add-wait-point-during-recovery` property does not have a default
+value. If this property is unset, recovery does not wait. The units are
+seconds.
+
+** The `db-logging-resource` property does not have a default value. It
+is unset by default. However, if you set `db-logging-resource` to an
+empty value, the value used is `jdbc/TxnDS`.
+
+** The `xa-servername` property does not have a default value. Use this
+property to override server names that can cause errors.
++
+You can use the link:reference-manual/get.html#GSRFM00139[`get`] subcommand to list all the
+transaction service attributes and the properties that have been set.
+For details, see the link:reference-manual.html#GSRFM[{productName}
+Reference Manual].
++
+Changing `keypoint-interval`, `retry-timeout-in-seconds`, or
+`timeout-in-seconds` does not require a server restart. Changing other
+attributes or properties requires a server restart.
+* You can also set the following system properties:
++
+[source]
+----
+ALLOW_MULTIPLE_ENLISTS_DELISTS=false
+JTA_RESOURCE_TABLE_MAX_ENTRIES=8192
+JTA_RESOURCE_TABLE_DEFAULT_LOAD_FACTOR=0.75f
+----
+The `JTA_RESOURCE_TABLE_DEFAULT_LOAD_FACTOR` default is the default
+`Map` resizing value.
+
+[[giubd]][[GSADG00607]][[managing-the-transaction-service-for-rollbacks]]
+
+=== Managing the Transaction Service for Rollbacks
+
+You can roll back a single transaction by using the `asadmin`
+subcommands described in this section. To do so, the transaction service
+must be stopped (and later restarted), allowing you to see the active
+transactions and correctly identify the one that needs to be rolled
+back.
+
+The following topics are addressed here:
+
+* link:#giufn[To Stop the Transaction Service]
+* link:#giugk[To Roll Back a Transaction]
+* link:#giuet[To Restart the Transaction Service]
+* link:#gkrbo[Determining Local Transaction Completion at Shutdown]
+
+[[giufn]][[GSADG00513]][[to-stop-the-transaction-service]]
+
+==== To Stop the Transaction Service
+
+Use the `freeze-transaction-service` subcommand in remote mode to stop
+the transaction service. When the transaction service is stopped, all
+in-flight transactions are immediately suspended. You must stop the
+transaction service before rolling back any in-flight transactions.
+
+Running this subcommand on a stopped transaction subsystem has no
+effect. The transaction service remains suspended until you restart it
+by using the `unfreeze-transaction-service` subcommand.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Stop the transaction service by using the
+link:reference-manual/freeze-transaction-service.html#GSRFM00137[`freeze-transaction-service`] subcommand.
+
+[[GSADG00293]][[giufq]]
+Example 19-1 Stopping the Transaction Service
+
+This example stops the transaction service.
+
+[source]
+----
+asadmin> freeze-transaction-service --target instance1
+Command freeze-transaction-service executed successfully
+----
+
+[[GSADG1038]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help freeze-transaction-service` at the command line.
+
+[[giugk]][[GSADG00514]][[to-roll-back-a-transaction]]
+
+==== To Roll Back a Transaction
+
+In some situations, you might want to roll back a particular
+transaction. Before you can roll back a transaction, you must first stop
+the transaction service so that transaction operations are suspended.
+Use the `rollback-transaction` subcommand in remote mode to roll back a
+specific transaction.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Enable monitoring using the `set` subcommand. For example:
++
+[source]
+----
+asadmin> set cluster1-config.monitoring-service.module-monitoring-levels.transaction-service=HIGH
+----
+3. Use the `freeze-transaction-service` subcommand to halt in-process
+transactions. See link:#giufn[To Stop the Transaction Service].
+4. Identify the ID of the transaction you want to roll back.
++
+To see a list of IDs of active transactions, use the `get` subcommand
+with the `--monitor` option to get the monitoring data for the
+`activeids` statistic. See link:monitoring.html#ablvl[Transaction Service
+Statistics]. For example:
++
+[source]
+----
+asadmin> get --monitor instance1.server.transaction-service.activeids-current
+----
+5. Roll back the transaction by using the
+link:reference-manual/rollback-transaction.html#GSRFM00223[`rollback-transaction`] subcommand.
++
+The transaction is not rolled back at the time of this command's
+execution, but only marked for rollback. The transaction is rolled back
+when it is completed.
+
+[[GSADG00294]][[giufy]]
+Example 19-2 Rolling Back a Transaction
+
+This example rolls back the transaction with transaction ID
+`0000000000000001_00`.
+
+[source]
+----
+asadmin> rollback-transaction --target instance1 0000000000000001_00
+Command rollback-transaction executed successfully
+----
+
+[[GSADG1039]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help rollback-transaction` at the command line.
+
+[[giuet]][[GSADG00515]][[to-restart-the-transaction-service]]
+
+==== To Restart the Transaction Service
+
+Use the `unfreeze-transaction-service` subcommand in remote mote to
+resume all the suspended in-flight transactions. Run this subcommand to
+restart the transaction service after it has been frozen.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Restart the suspended transaction service by using the
+link:reference-manual/unfreeze-transaction-service.html#GSRFM00245[`unfreeze-transaction-service`] subcommand.
+
+[[GSADG00295]][[giuef]]
+Example 19-3 Restarting the Transaction Service
+
+This example restarts the transaction service after it has been frozen.
+
+[source]
+----
+asadmin> unfreeze-transaction-service --target instance1
+Command unfreeze-transaction-service executed successfully
+----
+
+[[GSADG1040]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help unfreeze-transaction-service` at the command line.
+
+[[gkrbo]][[GSADG00787]][[determining-local-transaction-completion-at-shutdown]]
+
+==== Determining Local Transaction Completion at Shutdown
+
+When you shut down a {productName} instance, all database connections
+are closed. When an Oracle JDBC driver-based database connection is
+closed in the middle of a non-XA transaction, all pending changes are
+committed. Other databases usually roll back pending changes when a
+connection is closed without being explicitly committed. To determine
+the exact behavior for your database, refer to the documentation from
+your JDBC driver vendor.
+
+To explicitly specify whether {productName} commits or rolls back
+non-XA transactions at server shutdown, set the
+`com.sun.enterprise.in-progress-local-transaction.completion-mode` JVM
+option to either `commit` or `rollback` using the
+link:reference-manual/create-jvm-options.html#GSRFM00042[`create-jvm-options`] subcommand. For example:
+
+[source]
+----
+asadmin> create-jvm-options -Dcom.sun.enterprise.in-progress-local-transaction.completion-mode=rollback
+----
+
+[[gjjpy]][[GSADG00608]][[recovering-transactions]]
+
+=== Recovering Transactions
+
+There are some situations where the commit or rollback operations might
+be interrupted, typically because the server crashed or a resource
+manager crashed. Crash situations can leave some transactions stranded
+between steps. {productName} is designed to recover from these
+failures. If the failed transaction spans multiple servers, the server
+that started the transaction can contact the other servers to get the
+outcome of the transaction. If the other servers are unreachable, the
+transaction uses heuristic decision information to determine the
+outcome.
+
+The following topics are addressed here:
+
+* link:#gkoen[Automatic Transaction Recovery]
+* link:#giuhe[To Manually Recover Transactions]
+* link:#gaxim[Distributed Transaction Recovery]
+* link:#gaxig[Recovery Workarounds and Limitations]
+
+[[gkoen]][[GSADG00788]][[automatic-transaction-recovery]]
+
+==== Automatic Transaction Recovery
+
+{productName} can perform automatic recovery in these ways:
+
+* Pending transactions are completed upon server startup if
+`automatic-recovery` is set to `true`.
+* Periodic automatic recovery is performed by a background thread if the
+`pending-txn-cleanup-interval` property is set to a positive value.
+
+Changing these settings requires a server restart. For more information
+about how to change these settings, see link:#beanp[Configuring the
+Transaction Service].
+
+If commit fails during recovery, a message is written to the server log.
+
+[[giuhe]][[GSADG00516]][[to-manually-recover-transactions]]
+
+==== To Manually Recover Transactions
+
+Use the `recover-transactions` subcommand in remote mode to manually
+recover transactions that were pending when a resource or a server
+instance failed.
+
+For a standalone server, do not use manual transaction recovery to
+recover transactions after a server failure. For a standalone server,
+manual transaction recovery can recover transactions only when a
+resource fails, but the server is still running. If a standalone server
+fails, only the full startup recovery process can recover transactions
+that were pending when the server failed.
+
+For an installation of multiple server instances, you can use manual
+transaction recovery from a surviving server instance to recover
+transactions after a server failure. For manual transaction recovery to
+work properly, transaction logs must be stored on a shared file system
+that is accessible to all server instances. See link:#beanq[Transaction
+Logging].
+
+When you execute `recover-transactions` in non-delegated mode, you can
+recover transactions that didn't complete two-phase commit because of a
+resource crash. To use manual transaction recovery in this way, the
+following conditions must be met:
+
+* The `recover-transactions` command should be executed after the
+resource is restarted.
+* Connection validation should be enabled so the connection pool is
+refreshed when the resource is accessed after the recovery. For more
+information, see "link:performance-tuning-guide/tuning-glassfish.html#GSPTG00030[Connection Validation Settings]" in
+{productName} Performance Tuning Guide.
+
+If commit fails during recovery, a message is written to the server log.
+
+
+[NOTE]
+====
+A JMS resource crash is handled the same way as any other resource.
+
+You can list in-doubt Open Message Queue transactions using the
+`imqcmd list txn` subcommand. For more information, see
+"olink:GMADG00241[Managing Transactions]" in Open Message Queue
+Administration Guide.
+====
+
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Manually recover transactions by using the
+link:reference-manual/recover-transactions.html#GSRFM00216[`recover-transactions`] subcommand.
+
+[[GSADG00296]][[giugn]]
+Example 19-4 Manually Recovering Transactions
+
+This example performs manual recovery of transactions on `instance1`,
+saving them to `instance2`.
+
+[source]
+----
+asadmin recover-transactions --target instance2 instance1
+Transaction recovered.
+----
+
+[[GSADG1041]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help recover-transactions` at the command line.
+
+[[gaxim]][[GSADG00789]][[distributed-transaction-recovery]]
+
+==== Distributed Transaction Recovery
+
+To enable cluster-wide automatic recovery, you must first facilitate
+storing of transaction logs in a shared file system. See
+link:#beanq[Transaction Logging].
+
+Next, you must set the transaction service's `delegated-recovery`
+property to `true` (the default is `false`). For information about
+setting `tx-log-dir` and `delegated-recovery`, see
+link:#beanp[Configuring the Transaction Service].
+
+[[gaxig]][[GSADG00790]][[recovery-workarounds-and-limitations]]
+
+==== Recovery Workarounds and Limitations
+
+The {productName} provides workarounds for some known issues with
+transaction recovery implementations.
+
+
+[NOTE]
+====
+These workarounds do not imply support for any particular JDBC driver.
+====
+
+
+[[gknau]][[GSADG00689]][[general-recovery-limitations]]
+
+===== General Recovery Limitations
+
+The following general limitations apply to transaction recovery:
+
+* Recovery succeeds if there are no exceptions during the process. This
+is independent of the number of transactions that need to be recovered.
+* Only transactions that did not complete the two-phase commit can be
+recovered (one of the XA resources failed or {productName} crashed
+after resources were prepared).
+* Manual transaction recovery cannot recover transactions after a server
+crash on a standalone server instance. Manual operations are intended
+for cases when a resource dies unexpectedly while the server is running.
+In case of a server crash, only startup recovery can recover in-doubt
+transactions.
+* It is not possible to list transaction IDs for in-doubt transactions.
+* Delegated transaction recovery (by a different server instance in a
+cluster) is not possible if the failed instance used an `EMBEDDED`
+Message Queue broker, or if it used a `LOCAL` or `REMOTE` Message Queue
+broker and the broker also failed. In this case, only automatic recovery
+on server instance restart is possible. This is because for conventional
+Message Queue clustering, state information in a failed broker is not
+available until the broker restarts.
+
+[[gknee]][[GSADG00690]][[oracle-setup-for-transaction-recovery]]
+
+===== Oracle Setup for Transaction Recovery
+
+You must configure the following `grant` statements in your Oracle
+database to set up transaction recovery:
+
+[source]
+----
+grant select on SYS.DBA_PENDING_TRANSACTIONS to user;
+grant execute on SYS.DBMS_SYSTEM to user;
+grant select on SYS.PENDING_TRANS$ to user;
+grant select on SYS.DBA_2PC_NEIGHBORS to user;
+grant execute on SYS.DBMS_XA to user;
+grant select on SYS.DBA_2PC_PENDING to user;
+----
+
+The user is the database administrator. On some versions of the Oracle
+driver the last `grant execute` fails. You can ignore this.
+
+[[gjiep]][[GSADG00691]][[oracle-thin-driver]]
+
+===== Oracle Thin Driver
+
+In the Oracle thin driver, the `XAResource.recover` method repeatedly
+returns the same set of in-doubt Xids regardless of the input flag.
+According to the XA specifications, the Transaction Manager initially
+calls this method with TMSTARTSCAN and then with TMNOFLAGS repeatedly
+until no Xids are returned. The `XAResource.commit` method also has some
+issues.
+
+To disable the {productName} workaround, set the
+`oracle-xa-recovery-workaround` property value to `false`. For details
+about how to set this property, see link:#beanp[Configuring the
+Transaction Service]. This workaround is used unless explicitly
+disabled.
+
+[[gkneq]][[GSADG00692]][[delegated-recovery-after-server-crash-doesnt-work-on-mysql]]
+
+===== Delegated Recovery After Server Crash Doesn't Work on MySQL
+
+The MySQL database supports XA transaction recovery only when the
+database crashes. When a {productName} instance crashes, MySQL rolls
+back prepared transactions.
+
+[[glclh]][[GSADG00693]][[call-to-xateminator.recover-during-resourceadapter.start-hangs-if-automatic-recovery-is-enabled]]
+
+===== Call to `XATeminator.recover()` During `ResourceAdapter.start()` Hangs If Automatic Recovery Is Enabled
+
+Calls to `XATerminator.recover()` from the `ResourceAdapter.start()`
+method never return because {productName} deadlocks. This only occurs
+when automatic recovery is enabled.
+
+It is not advisable to do transactional activities, such as starting a
+transaction or calling `XATerminator.recover()`, during
+`ResourceAdapter.start()`. For more information, see
+`http://markmail.org/message/ogc7qndhaywfkdrp#query:+page:1+mid:kyyzpcexusbnv7ri+state:results`.
+
+[[beanq]][[GSADG00609]][[transaction-logging]]
+
+=== Transaction Logging
+
+The transaction service writes transactional activity into transaction
+logs so that transactions can be recovered. You can control transaction
+logging in these ways:
+
+* Set the location of the transaction log files in one of these ways:
+
+** Set the {productName}'s `log-root` setting to a shared file system
+base directory and set the transaction service's `tx-log-dir` attribute
+to a relative path.
+
+** Set `tx-log-dir` to an absolute path to a shared file system
+directory, in which case `log-root` is ignored for transaction logs.
+
+** Set a system property called `TX-LOG-DIR` to a shared file system
+directory. For example:
++
+[source]
+----
+asadmin> create-system-properties --target server TX-LOG-DIR=/inst1/logs
+----
+For information about setting `log-root` and other general logging
+settings, see link:logging.html#abluj[Administering the Logging Service].
+* Turn off transaction logging by setting the
+`disable-distributed-transaction-logging` property to `true` and the
+`automatic-recovery` attribute to `false`. Do this only if performance
+is more important than transaction recovery.
+
+
+[NOTE]
+====
+All instances in a cluster must be owned by the same user (`uid`), and
+read/write permissions for that user must be set on the transaction log
+directories.
+
+Transaction logs should be stored in a high-availability network file
+system (NFS) to avoid a single point of failure.
+====
+
+
+[[gcmam]][[GSADG00517]][[to-store-transaction-logs-in-a-database]]
+
+==== To Store Transaction Logs in a Database
+
+For multi-core machines, logging transactions to a database may be more
+efficient. Transaction logging is designed to work with any
+JDBC-compliant database. For databases with which transaction logging
+has been tested, see the {productName} Release
+Notes.
+
+1. [[CIHDBIJI]]
+Create a JDBC connection Pool. To use non-transactional connections to
+insert log records, you can either set the
+`non-transactional-connections` attribute to `true` in this step, or you
+can perform step link:#CIHGIHJC[5] later.
+
+2. Create a JDBC resource that uses the connection pool and note the
+JNDI name of the JDBC resource.
+
+3. Automatic table creation for the transaction logs is done by default.
+However, if you would prefer to create the table manually, name
+it `txn_log_table` with the following schema:
++
+[width="100%",cols="50%,50%",options="header",]
+|===
+|Column Name |JDBC Type
+|`LOCALTID` |`VARCHAR`
+|`INSTANCENAME` |`VARCHAR`
+|`SERVERNAME` |`VARCHAR(n)`
+|`GTRID` |`VARBINARY`
+|===
+The size of the `SERVERNAME` column should be at least the length of the
+{productName} host name plus 10 characters. +
+The size of the `GTRID` column should be at least 64 bytes.
+
+4. Add the `db-logging-resource` property to the transaction service.
+For example:
++
+[source]
+----
+asadmin set server-config.transaction-service.property.db-logging-resource="jdbc/TxnDS"
+----
+The property's value should be the JNDI name of the JDBC resource
+configured previously.
+
+5. [[CIHGIHJC]]
+If you didn't set the `non-transactional-connections` attribute to
+`true` in step link:#CIHDBIJI[1] and you want to use non-transactional
+connections to insert log records, use the following
+`asadmin create-jvm-options` command to reference an existing
+transactional resource but use non-transactional connections for the
+`INSERT` statements:
++
+[source]
+----
+asadmin create-jvm-options -Dcom.sun.jts.dblogging.use.nontx.connection.for.add=true
+----
+
+6. To disable file synchronization, use the following
+`asadmin create-jvm-options` command:
++
+[source]
+----
+asadmin create-jvm-options -Dcom.sun.appserv.transaction.nofdsync
+----
+
+7. Restart the server.
+
+[[GSADG1042]]
+
+Next Steps
+
+To define the SQL used by the transaction manager when it is storing its
+transaction logs in the database, use the following flags:
+
+`-Dcom.sun.jts.dblogging.insertquery=sql` statement
+
+`-Dcom.sun.jts.dblogging.deletequery=sql` statement
+
+`-Dcom.sun.jts.dblogging.selectquery=sql` statement
+
+`-Dcom.sun.jts.dblogging.selectservernamequery=sql` statement
+
+The default statements are as follows:
+
+`-Dcom.sun.jts.dblogging.insertquery=insert into txn_log_table values ( ?, ?, ?, ? )`
+
+`-Dcom.sun.jts.dblogging.deletequery=delete from txn_log_table where localtid = ? and servername = ?`
+
+`-Dcom.sun.jts.dblogging.selectquery=select * from txn_log_table where servername = ?`
+
+`-Dcom.sun.jts.dblogging.selectservernamequery=select distinct servername from txn_log_table where instancename = ?`
+
+To set one of these flags using the `asadmin create-jvm-options`
+command, you must quote the statement. For example:
+
+`create-jvm-options '-Dcom.sun.jts.dblogging.deletequery=delete from txn_log_table where gtrid = ?'`
+
+You can also set JVM options in the Administration Console. Select the
+JVM Settings component under the relevant configuration. These flags and
+their statements must also be quoted in the Administration Console. For
+example:
+
+`'-Dcom.sun.jts.dblogging.deletequery=delete from txn_log_table where gtrid = ?'`
+
+[[GSADG1043]]
+
+See Also
+
+For information about JDBC connection pools and resources, see
+link:jdbc.html#ablih[Administering Database Connectivity]. For more
+information about the `asadmin set` and `asadmin create-jvm-options`
+commands, see the link:reference-manual.html#GSRFM[{productName}
+Reference Manual]. For databases with which transaction logging has been
+tested, see the {productName} Release Notes.
+
+
diff --git a/docs/administration-guide/src/main/asciidoc/webapps.adoc b/docs/administration-guide/src/main/asciidoc/webapps.adoc
new file mode 100644
index 0000000..93d0d73
--- /dev/null
+++ b/docs/administration-guide/src/main/asciidoc/webapps.adoc
@@ -0,0 +1,747 @@
+type=page
+status=published
+title=Administering Web Applications
+next=logging.html
+prev=threadpools.html
+~~~~~~
+
+= Administering Web Applications
+
+[[GSADG00009]][[gbbjk]]
+
+
+[[administering-web-applications]]
+== 6 Administering Web Applications
+
+This chapter explains how to administer web applications in the
+{productName} 7 environment.
+
+The following topics are addressed here:
+
+* link:#beagk[Invoking a Servlet by Alternate Means]
+* link:#gixud[Changing Log Output for a Servlet]
+* link:#beagc[Defining Global Features for Web Applications]
+* link:#gixrb[Redirecting a URL]
+* link:#gfaad[Administering `mod_jk`]
+* link:#CIHJDAJD[Administering `mod_proxy_ajp`]
+
+Instructions for accomplishing some of these tasks by using the
+Administration Console are contained in the Administration Console
+online help.
+
+[[beagk]][[GSADG00548]][[invoking-a-servlet-by-alternate-means]]
+
+=== Invoking a Servlet by Alternate Means
+
+You can call a servlet deployed to {productName} by using a URL in a
+browser or embedded as a link in an HTML or JSP file. The format of a
+servlet invocation URL is as follows:
+
+[source]
+----
+http://server:port/context-root/servlet-mapping?name=value
+----
+
+The following table describes each URL section.
+
+[[GSADG857]][[sthref20]][[fvyhk]]
+
+
+Table 6-1 URL Fields for Servlets Within an Application
+
+[width="100%",cols="21%,79%",options="header",]
+|===
+|URL element |Description
+|server`:`port a|
+The IP address (or host name) and optional port number.
+
+To access the default web module for a virtual server, specify only this
+URL section. You do not need to specify the context-root or servlet-name
+unless you also wish to specify name-value parameters.
+
+|context-root a|
+For an application, the context root is defined in the `context-root`
+element of the `application.xml`, `sun-application.xml`, or
+`sun-web.xml` file. For an individually deployed web module, the context
+root is specified during deployment.
+
+For both applications and individually deployed web modules, the default
+context root is the name of the WAR file minus the `.war` suffix.
+
+|servlet-mapping |The `servlet-mapping` as configured in the `web.xml`
+file.
+
+|`?`name`=`value`...` |Optional request parameters.
+|===
+
+
+[[GSADG00166]][[giyhf]]
+Example 6-1 Invoking a Servlet With a URL
+
+In this example, `localhost` is the host name, `MortPages` is the
+context root, and `calcMortgage` is the servlet mapping.
+
+[source]
+----
+http://localhost:8080/MortPages/calcMortgage?rate=8.0&per=360&bal=180000
+----
+
+[[GSADG00167]][[giyib]]
+Example 6-2 Invoking a Servlet From Within a JSP File
+
+To invoke a servlet from within a JSP file, you can use a relative path.
+For example:
+
+[source,xml]
+----
+<jsp:forward page="TestServlet"/><jsp:include page="TestServlet"/>
+----
+
+[[gixud]][[GSADG00549]][[changing-log-output-for-a-servlet]]
+
+=== Changing Log Output for a Servlet
+
+`ServletContext.log` messages are sent to the server log. By default,
+the `System.out` and `System.err` output of servlets are sent to the
+server log. During startup, server log messages are echoed to the
+`System.err` output. Also by default, there is no Windows-only console
+for the `System.err` output.
+
+You can change these defaults using the Administration Console Write to
+System Log box. If this box is checked, `System.out` output is sent to
+the server log. If it is unchecked, `System.out` output is sent to the
+system default location only.
+
+[[beagc]][[GSADG00550]][[defining-global-features-for-web-applications]]
+
+=== Defining Global Features for Web Applications
+
+You can use the `default-web.xml` file to define features such as
+filters and security constraints that apply to all web applications.
+
+For example, directory listings are disabled by default for added
+security. To enable directory listings in your domain's
+`default-web.xml` file, search for the definition of the servlet whose
+`servlet-name` is equal to `default`, and set the value of the
+`init-param` named `listings` to `true`. Then restart the server.
+
+[source,xml]
+----
+<init-param>
+   <param-name>listings</param-name>
+   <param-value>true</param-value>
+</init-param>
+----
+
+If `listings` is set to `true`, you can also determine how directory
+listings are sorted. Set the value of the `init-param` named `sortedBy`
+to `NAME`, `SIZE`, or `LAST_MODIFIED`. Then restart the server.
+
+[source,xml]
+----
+<init-param>
+   <param-name>sortedBy</param-name>
+   <param-value>LAST_MODIFIED</param-value>
+</init-param>
+----
+
+The `mime-mapping` elements in `default-web.xml` are global and
+inherited by all web applications. You can override these mappings or
+define your own using `mime-mapping` elements in your web application's
+`web.xml` file. For more information about `mime-mapping` elements, see
+the Servlet specification.
+
+You can use the Administration Console to edit the `default-web.xml`
+file, or edit the file directly using the following steps.
+
+[[fvymc]][[GSADG00370]][[to-use-the-default-web.xml-file]]
+
+==== To Use the `default-web.xml` File
+
+1. Place the JAR file for the filter, security constraint, or other
+feature in the domain-dir``/lib`` directory.
+2. Edit the domain-dir``/config/default-web.xml`` file to refer to the JAR file.
+3. To apply your changes, restart {productName}.
++
+See link:domains.html#ginqj[To Restart a Domain].
+
+[[gixrb]][[GSADG00551]][[redirecting-a-url]]
+
+=== Redirecting a URL
+
+You can specify that a request for an old URL be treated as a request
+for a new URL. This is called redirecting a URL.
+
+To specify a redirected URL for a virtual server, use the `redirect_n`
+property, where n is a positive integer that allows specification of
+more than one. Each of these `redirect_n` properties is inherited by all
+web applications deployed on the virtual server.
+
+The value of each `redirect_n` property has two components which can be
+specified in any order:
+
+* The first component, `from`, specifies the prefix of the requested URI
+to match.
+* The second component, `url-prefix`, specifies the new URL prefix to
+return to the client. The from prefix is replaced by this URL prefix.
+
+[[GSADG00168]][[giyis]]
+Example 6-3 Redirecting a URL
+
+This example redirects `from` `dummy` to `etude`:
+
+[source,xml]
+----
+<property name="redirect_1" value="from=/dummy url-prefix=http://etude"/>
+----
+
+[[gfaad]][[GSADG00552]][[administering-mod_jk]]
+
+=== Administering `mod_jk`
+
+The Apache Tomcat Connector `mod_jk` can be used to connect the web
+container with web servers such as Apache HTTP Server. By using
+`mod_jk`, which comes with {productName}, you can front {productName} with Apache HTTP Server.
+
+You can also use `mod_jk` directly at the JSP/servlet engine for load
+balancing. For more information about configuring `mod_jk` and Apache
+HTTP Server for load balancing with {productName} 7 refer to
+"link:ha-administration-guide/http-load-balancing.html#GSHAG00009[Configuring HTTP Load Balancing]" in {productName} High Availability Administration Guide.
+
+The following topics are addressed here:
+
+* link:#gixqw[To Enable `mod_jk`]
+* link:#gixpx[To Load Balance Using `mod_jk` and {productName}]
+* link:#gjpat[To Enable SSL Between the `mod_jk` Load Balancer and the
+Browser]
+* link:#gjpan[To Enable SSL Between the `mod_jk` Load Balancer and
+{productName}]
+
+[[gixqw]][[GSADG00371]][[to-enable-mod_jk]]
+
+==== To Enable `mod_jk`
+
+You can front {productName} with Apache HTTP Server by enabling the
+`mod_jk` protocol for one of {productName}'s network listeners, as
+described in this procedure. A typical use for `mod_jk` would be to have
+Apache HTTP Server handle requests for static resources, while having
+requests for dynamic resources, such as servlets and JavaServer Pages
+(JSPs), forwarded to, and handled by the {productName} back-end
+instance.
+
+When you use the `jk-enabled` attribute of the network listener, you do
+not need to copy any additional JAR files into the ``/lib`` directory. You
+can also create JK connectors under different virtual servers by using
+the network listener attribute `jk-enabled`.
+
+1. Install Apache HTTP Server and `mod_jk`.
+* For information on installing Apache HTTP Server, see
+`http://httpd.apache.org/docs/2.2/install.html`.
+* For information on installing `mod_jk`, see
+`http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html`.
+2. Configure the following files:
+* `apache2/conf/httpd.conf`, the main Apache configuration file
+* `apache2/conf/workers.properties`
++
+link:#gixrq[Example 6-4] and link:#gixqt[Example 6-5] provide examples
+of configuring these two files.
+3. Start Apache HTTP Server (`httpd`).
+4. Start {productName} with at least one web application deployed.
++
+In order for the `mod_jk`-enabled network listener to start listening
+for requests, the web container must be started. Normally, this is
+achieved by deploying a web application.
+5. Create a jk-enabled network listener by using the
+link:reference-manual/create-network-listener.html#GSRFM00046[`create-network-listener`] subcommand.
++
+[source]
+----
+asadmin> create-network-listener --protocol http-listener-1 \
+--listenerport 8009 --jkenabled true jk-connector
+----
+6. If you are using the `glassfish-jk.properties` file to use
+non-default values of attributes described at
+`http://tomcat.apache.org/tomcat-5.5-doc/config/ajp.html`), set the
+`jk-configuration-file` property of the network listener to the
+fully-qualified file name of the `glassfish-jk.properties` file.
++
+[source]
+----
+asadmin> set server-config.network-config.network-listeners.network-listener.\
+jk-connector.jk-configuration-file=domain-dir/config/glassfish-jk.properties
+----
+7. If you expect to need more than five threads for the listener,
+increase the maximum threads in the `http-thread-pool` pool:
++
+[source]
+----
+asadmin> set configs.config.server-config.thread-pools.thread-pool.\
+http-thread-pool.max-thread-pool-size=value
+----
+8. To apply your changes, restart {productName}.
++
+See link:domains.html#ginqj[To Restart a Domain].
+
+[[GSADG00169]][[gixrq]]
+Example 6-4 `httpd.conf` File for `mod_jk`
+
+This example shows an `httpd.conf` file that is set for `mod_jk`. In
+this example, `mod_jk` used as a simple pass-through.
+
+[source]
+----
+LoadModule jk_module /usr/lib/httpd/modules/mod_jk.so
+JkWorkersFile /etc/httpd/conf/worker.properties
+# Where to put jk logs
+JkLogFile /var/log/httpd/mod_jk.log
+# Set the jk log level [debug/error/info]
+JkLogLevel debug
+# Select the log format
+JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
+# JkOptions indicate to send SSL KEY SIZE,
+JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
+# JkRequestLogFormat set the request format
+JkRequestLogFormat "%w %V %T"
+# Send all jsp requests to GlassFish
+JkMount /*.jsp worker1
+# Send all glassfish-test requests to GlassFish
+JkMount /glassfish-test/* worker1
+----
+
+[[GSADG00170]][[gixqt]]
+Example 6-5 `workers.properties` File for `mod_jk`
+
+This example shows a `workers.properties` that is set for `mod_jk`. This
+`workers.properties` file is referenced in the second line of
+link:#gixrq[Example 6-4].
+
+[source]
+----
+# Define 1 real worker using ajp13
+worker.list=worker1
+# Set properties for worker1 (ajp13)
+worker.worker1.type=ajp13
+worker.worker1.host=localhost
+worker.worker1.port=8009
+----
+
+[[GSADG858]]
+
+See Also
+
+For more information on Apache, see `http://httpd.apache.org/`.
+
+For more information on Apache Tomcat Connector, see
+`http://tomcat.apache.org/connectors-doc/index.html`.
+
+[[gixpx]][[GSADG00372]][[to-load-balance-using-mod_jk-and-glassfish-server]]
+
+==== To Load Balance Using `mod_jk` and {productName}
+
+Load balancing is the process of dividing the amount of work that a
+computer has to do between two or more computers so that more work gets
+done in the same amount of time. Load balancing can be configured with
+or without security.
+
+In order to support stickiness, the Apache `mod_jk` load balancer relies
+on a `jvmRoute` system property that is included in any `JSESSIONID`
+received by the load balancer. This means that every {productName}
+instance that is front-ended by the Apache load balancer must be
+configured with a unique `jvmRoute` system property.
+
+1. On each of the instances, perform the steps in link:#gixqw[To Enable
+`mod_jk`].
++
+If your instances run on the same machine, you must choose different JK
+ports. The ports must match `worker.worker*.port` in your
+`workers.properties` file. See the properties file in
+link:#gixqt[Example 6-5].
+2. On each of the instances, create the `jvmRoute` system property of
+{productName} by using the link:reference-manual/create-jvm-options.html#GSRFM00042[`create-jvm-options`]
+subcommand.
++
+Use the following format:
++
+[source]
+----
+asadmin> create-jvm-options "-DjvmRoute=/instance-worker-name"/
+----
+where instance-worker-name is the name of the worker that you defined to
+represent the instance in the `workers.properties` file.
+3. To apply your changes, restart Apache HTTP Server and {productName}.
+
+[[GSADG00171]][[gjjzu]]
+Example 6-6 `httpd.conf` File for Load Balancing
+
+This example shows an `httpd.conf` file that is set for load balancing.
+
+[source]
+----
+LoadModule jk_module /usr/lib/httpd/modules/mod_jk.so
+JkWorkersFile /etc/httpd/conf/worker.properties
+# Where to put jk logs
+JkLogFile /var/log/httpd/mod_jk.log
+# Set the jk log level [debug/error/info]
+JkLogLevel debug
+# Select the log format
+JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
+# JkOptions indicate to send SSL KEY SIZE,
+JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
+# JkRequestLogFormat set the request format
+JkRequestLogFormat "%w %V %T"
+# Send all jsp requests to GlassFish
+JkMount /*.jsp worker1
+# Send all glassfish-test requests to GlassFish
+JkMount /glassfish-test/* loadbalancer
+----
+
+[[GSADG00172]][[gjjzf]]
+Example 6-7 `workers.properties` File for Load Balancing
+
+This example shows a `workers.properties` or `glassfish-jk.properties`
+file that is set for load balancing. The `worker.worker*.port` should
+match with JK ports you created.
+
+[source]
+----
+worker.list=worker1,worker2,loadbalancer
+worker.worker1.type=ajp13
+worker.worker1.host=localhost
+worker.worker1.port=8009
+worker.worker1.lbfactor=1
+worker.worker1.socket_keepalive=1
+worker.worker1.socket_timeout=300
+worker.worker2.type=ajp13
+worker.worker2.host=localhost
+worker.worker2.port=8010
+worker.worker2.lbfactor=1
+worker.worker2.socket_keepalive=1
+worker.worker2.socket_timeout=300
+worker.loadbalancer.type=lb
+worker.loadbalancer.balance_workers=worker1,worker2
+----
+
+[[gjpat]][[GSADG00373]][[to-enable-ssl-between-the-mod_jk-load-balancer-and-the-browser]]
+
+==== To Enable SSL Between the `mod_jk` Load Balancer and the Browser
+
+To activate security for `mod_jk` on {productName}, you must first
+generate a Secure Socket Layer (SSL) self-signed certificate on the
+Apache HTTP Server with the `mod_ssl` module. The tasks include
+generating a private key, a Certificate Signing Request (CSR), a
+self-signed certificate, and configuring SSL-enabled virtual hosts.
+
+[[GSADG859]]
+
+Before You Begin
+
+The `mod_jk` connector must be enabled.
+
+1. Generate the private key as follows:
++
+[source]
+----
+openssl genrsa -des3 -rand file1:file2:file3:file4:file5 -out server.key 1024
+----
+where `file1:file2:` and so on represents the random compressed files.
+2. Remove the pass-phrase from the key as follows:
++
+[source]
+----
+openssl rsa -in server.key -out server.pem
+----
+3. Generate the CSR is as follows:
++
+[source]
+----
+openssl req -new -key server.pem -out server.csr
+----
+Enter the information you are prompted for.
+4. Generate a temporary certificate as follows:
++
+[source]
+----
+openssl x509 -req -days 60 -in server.csr -signkey server.pem -out server.crt
+----
+This temporary certificate is good for 60 days.
+5. Create the `http-ssl.conf` file under the `/etc/apache2/conf.d`
+directory.
+6. In the `http-ssl.conf` file, add one of the following redirects:
+* Redirect a web application, for example, `JkMount /hello/* worker1`.
+* Redirect all requests, for example, `JkMount /* worker1`.
++
+[source]
+----
+# Send all jsp requests to GlassFish
+JkMount /*.jsp worker1
+# Send all glassfish-test requests to GlassFish
+JkMount /glassfish-test/* loadbalancer
+----
+
+[[GSADG00173]][[gjpnc]]
+Example 6-8 `http-ssl.conf` File for `mod_jk` Security
+
+A basic SSL-enabled virtual host will appear in the `http-ssl.conf`
+file. In this example, all requests are redirected.
+
+[source]
+----
+Listen 443
+<VirtualHost _default_:443>
+SSLEngine on
+SSLCipherSuite ALL:!ADH:!EXP56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
+SSLCertificateFile "/etc/apache2/2.2/server.crt"
+SSLCertificateKeyFile "/etc/apache2/2.2/server.pem"
+JkMount /* worker1
+</VirtualHost>
+----
+
+[[gjpan]][[GSADG00374]][[to-enable-ssl-between-the-mod_jk-load-balancer-and-glassfish-server]]
+
+==== To Enable SSL Between the `mod_jk` Load Balancer and {productName}
+
+This procedure does not enable SSL transfer between `mod_jk` and
+{productName}. It enables `mod_jk` to forward SSL-encrypted
+information from the browser to {productName}.
+
+[[GSADG860]]
+
+Before You Begin
+
+The self-signed certificate must be configured.
+
+1. Perform the steps in link:#gixqw[To Enable `mod_jk`].
+2. Start another {productName} with at least one web application
+deployed.
++
+In order for the `mod_jk`-enabled network listener to start listening
+for requests, the web container must be started. Normally, this is
+achieved by deploying a web application.
+3. Follow instructions from link:http_https.html#ggnbj[To Configure an
+HTTP Listener for SSL] on the `mod_jk` connector.
++
+Use the following format:
++
+[source]
+----
+asadmin> create-ssl --type http-listener --certname sampleCert new-listener
+----
+4. Add the following directives in the `httpd.conf` file under the
+`/etc/apache2/conf.d` directory:
++
+[source]
+----
+# Should mod_jk send SSL information (default is On)
+JkExtractSSL On
+# What is the indicator for SSL (default is HTTPS)
+JkHTTPSIndicator HTTPS
+# What is the indicator for SSL session (default is SSL_SESSION_ID)
+JkSESSIONIndicator SSL_SESSION_ID
+# What is the indicator for client SSL cipher suit (default is SSL_CIPHER )
+JkCIPHERIndicator SSL_CIPHER
+# What is the indicator for the client SSL certificated? (default is SSL_CLIENT_CERT )
+JkCERTSIndicator SSL_CLIENT_CERT
+----
+5. To apply your changes, restart Apache HTTP Server and {productName}.
+
+[[CIHJDAJD]][[GSADG861]][[administering-mod_proxy_ajp]]
+
+=== Administering `mod_proxy_ajp`
+
+The Apache Connector `mod_proxy_ajp` can be used to connect the web
+container with Apache HTTP Server. By using `mod_proxy_ajp`, you can
+front {productName} with Apache HTTP Server.
+
+[[GSADG862]][[sthref21]]
+
+
+[[to-enable-mod_proxy_ajp]]
+==== To Enable `mod_proxy_ajp`
+
+You can front {productName} with Apache HTTP Server and its
+`mod_proxy_ajp` connector by enabling the AJP protocol for one of
+{productName}'s network listeners, as described in this procedure. A
+typical use for `mod_proxy_ajp` would be to have Apache HTTP Server
+handle requests for static resources, while having requests for dynamic
+resources, such as servlets and JavaServer Pages (JSPs), forwarded to,
+and handled by the {productName} back-end instance.
+
+1. Install Apache HTTP Server.
++
+For information on installing Apache HTTP Server, see
+`http://httpd.apache.org/docs/2.2/install.html`.
+2. Configure `apache2/conf/httpd.conf`, the main Apache configuration
+file.
++
+For example:
++
+[source]
+----
+LoadModule proxy_module /usr/lib/httpd/modules/mod_proxy.so
+LoadModule proxy_ajp_module /usr/lib/httpd/modules/mod_proxy_ajp.so
+
+Listen 1979
+NameVirtualHost *:1979
+<VirtualHost *:1979>
+   ServerName localhost
+   ErrorLog /var/log/apache2/ajp.error.log
+   CustomLog /var/log/apache2/ajp.log combined
+
+   <Proxy *>
+     AddDefaultCharset Off
+     Order deny,allow
+     Allow from all
+   </Proxy>
+
+   ProxyPass / ajp://localhost:8009/
+   ProxyPassReverse / ajp://localhost:8009/
+</VirtualHost>
+----
+3. Start Apache HTTP Server (`httpd`).
+4. Create a jk-enabled network listener by using the
+`create-network-listener` subcommand.
++
+[source]
+----
+asadmin> create-network-listener --protocol http-listener-1 \
+--listenerport 8009 --jkenabled true jk-connector
+----
+5. If you expect to need more than five threads for the listener,
+increase the maximum threads in the `http-thread-pool` pool:
++
+[source]
+----
+asadmin> set configs.config.server-config.thread-pools.thread-pool.\
+http-thread-pool.max-thread-pool-size=value
+----
+6. To apply your changes, restart {productName}.
++
+See link:domains.html#ginqj[To Restart a Domain].
+
+[[GSADG863]]
+
+See Also
+
+For more information on Apache, see `http://httpd.apache.org/`.
+
+For more information on the Apache `mod_proxy_ajp` Connector, see
+`http://httpd.apache.org/docs/2.1/mod/mod_proxy.html` and
+`http://httpd.apache.org/docs/2.1/mod/mod_proxy_ajp.html`.
+
+For more information on the AJP protocol, see
+`http://tomcat.apache.org/connectors-doc/ajp/ajpv13a.html`.
+
+[[GSADG1049]][[sthref22]]
+
+
+[[to-load-balance-using-mod_proxy_ajp-and-glassfish-server]]
+==== To Load Balance Using `mod_proxy_ajp` and {productName}
+
+Load balancing is the process of dividing the amount of work that a
+computer has to do between two or more computers so that more work gets
+done in the same amount of time. In the {productName} context, load
+balancing is most frequently used to distribute work among the instances
+in a {productName} cluster.
+
+To configure load balancing using `mod_proxy_ajp`, you must use the
+`mod_proxy_balancer` Apache module in addition to `mod_proxy_ajp`.
+
+In order to support stickiness, the `mod_proxy_balancer` load balancer
+relies on a `jvmRoute` system property that is included in any
+`JSESSIONID` received by the load balancer. Consequently, every
+{productName} instance that is front-ended by the Apache load
+balancer must be configured with a unique `jvmRoute` system property.
+
+1. Install Apache HTTP Server.
++
+For information on installing Apache HTTP Server, see
+`http://httpd.apache.org/docs/2.2/install.html`.
+2. [[BABIFEEC]]
++
+Configure `apache2/conf/httpd.conf`, the main Apache configuration file.
++
+For example:
++
+[source]
+----
+LoadModule proxy_module /usr/lib/httpd/modules/mod_proxy.so
+LoadModule proxy_ajp_module /usr/lib/httpd/modules/mod_proxy_ajp.so
+LoadModule proxy_balancer_module /usr/lib/httpd/modules/mod_proxy_balancer.so
+
+# Forward proxy needs to be turned off
+ProxyRequests Off
+# Keep the original Host Header
+ProxyPreserveHost On
+
+   <Proxy *>
+      Order deny,allow
+      Deny from all
+      Allow from localhost
+   </Proxy>
+
+# Each BalancerMember corresponds to an instance in the Eclipse GlassFish
+# cluster. The port specified for each instance must match the ajp port
+# specified for that instance.
+<Proxy balancer://localhost>
+    BalancerMember ajp://localhost:8009
+    BalancerMember ajp://localhost:8010
+    BalancerMember ajp://localhost:8011
+</Proxy>
+----
+3. Start Apache HTTP Server (`httpd`).
+4. In {productName}, use the `create-network-listener` subcommand to
+create a jk-enabled network listener targeted to the cluster.
++
+For example:
++
+[source]
+----
+asadmin> create-network-listener --jkenabled true --target cluster1 \
+--protocol http-listener-1 --listenerport ${AJP_PORT} jk-listener
+----
+In this example, `cluster1` is the name of the cluster and `jk-listener`
+is the name of the new listener.
+5. If you expect to need more than five threads for the listener,
+increase the maximum threads in the `http-thread-pool` pool:
++
+[source]
+----
+asadmin> set configs.config.cluster1-config.thread-pools.thread-pool.\
+http-thread-pool.max-thread-pool-size=value
+----
+6. Use the `create-jvm-options` subcommand to create the `jvmRoute`
+property targeted to the cluster.
++
+For example:
++
+[source]
+----
+asadmin> create-jvm-options --target cluster1 \
+"-DjvmRoute=\${AJP_INSTANCE_NAME}"
+----
+7. Use the `create-system-properties` subcommand to define the
+`AJP_PORT` and `AJP_INSTANCE_NAME` properties for each of the instances
+in the cluster, making sure to match the port values you used in
+Step link:#BABIFEEC[2] when specifying the load balancer members.
++
+For example:
++
+[source]
+----
+asadmin> create-system-properties --target instance1 AJP_PORT=8009
+asadmin> create-system-properties --target instance1 \
+AJP_INSTANCE_NAME=instance1
+asadmin> create-system-properties --target instance2 AJP_PORT=8010
+asadmin> create-system-properties --target instance2 \
+AJP_INSTANCE_NAME=instance2
+asadmin> create-system-properties --target instance3 AJP_PORT=8011
+asadmin> create-system-properties --target instance3 \
+AJP_INSTANCE_NAME=instance3
+----
+In this example, `instance1`, `instance2` and `instance3` are the names
+of the {productName} instances in the cluster.
+8. To apply your changes, restart {productName}.
++
+See link:domains.html#ginqj[To Restart a Domain].
+
+
diff --git a/docs/administration-guide/src/main/jbake/assets/css/style.css b/docs/administration-guide/src/main/jbake/assets/css/style.css
deleted file mode 100644
index 25a16e4..0000000
--- a/docs/administration-guide/src/main/jbake/assets/css/style.css
+++ /dev/null
@@ -1,315 +0,0 @@
-/* CSS */
-/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
-/** 1. Set default font family to sans-serif. 2. Prevent iOS text size adjust after orientation change, without disabling user zoom. */
-html { font-family: sans-serif; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ }
-
-/* HTML5 display definitions ========================================================================== */
-/** Correct `block` display not defined for any HTML5 element in IE 8/9. Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox. Correct `block` display not defined for `main` in IE 11. */
-article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { display: block; }
-
-/** 1. Correct `inline-block` display not defined in IE 8/9. 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. */
-audio, canvas, progress, video { display: inline-block; /* 1 */ vertical-align: baseline; /* 2 */ }
-
-/** Prevent modern browsers from displaying `audio` without controls. Remove excess height in iOS 5 devices. */
-audio:not([controls]) { display: none; height: 0; }
-
-/** Address `[hidden]` styling not present in IE 8/9/10. Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. */
-[hidden], template { display: none; }
-
-/* Links ========================================================================== */
-/** Remove the gray background color from active links in IE 10. */
-a { background-color: transparent; }
-
-/** Improve readability when focused and also mouse hovered in all browsers. */
-a:active, a:hover { outline: 0; }
-
-/* Text-level semantics ========================================================================== */
-/** Address styling not present in IE 8/9/10/11, Safari, and Chrome. */
-abbr[title] { border-bottom: 1px dotted; }
-
-/** Address style set to `bolder` in Firefox 4+, Safari, and Chrome. */
-b, strong { font-weight: bold; }
-
-/** Address styling not present in Safari and Chrome. */
-dfn { font-style: italic; }
-
-/** Address variable `h1` font-size and margin within `section` and `article` contexts in Firefox 4+, Safari, and Chrome. */
-h1 { font-size: 2em; margin: 0.67em 0; }
-
-/** Address styling not present in IE 8/9. */
-mark { background: #ff0; color: #000; }
-
-/** Address inconsistent and variable font size in all browsers. */
-small { font-size: 80%; }
-
-/** Prevent `sub` and `sup` affecting `line-height` in all browsers. */
-sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }
-
-sup { top: -0.5em; }
-
-sub { bottom: -0.25em; }
-
-/* Embedded content ========================================================================== */
-/** Remove border when inside `a` element in IE 8/9/10. */
-img { border: 0; }
-
-/** Correct overflow not hidden in IE 9/10/11. */
-svg:not(:root) { overflow: hidden; }
-
-/* Grouping content ========================================================================== */
-/** Address margin not present in IE 8/9 and Safari. */
-figure { margin: 1em 40px; }
-
-/** Address differences between Firefox and other browsers. */
-hr { box-sizing: content-box; height: 0; }
-
-/** Contain overflow in all browsers. */
-pre { overflow: auto; }
-
-/** Address odd `em`-unit font size rendering in all browsers. */
-code, kbd, pre, samp { font-family: monospace, monospace; font-size: 1em; }
-
-/* Forms ========================================================================== */
-/** Known limitation: by default, Chrome and Safari on OS X allow very limited styling of `select`, unless a `border` property is set. */
-/** 1. Correct color not being inherited. Known issue: affects color of disabled elements. 2. Correct font properties not being inherited. 3. Address margins set differently in Firefox 4+, Safari, and Chrome. */
-button, input, optgroup, select, textarea { color: inherit; /* 1 */ font: inherit; /* 2 */ margin: 0; /* 3 */ }
-
-/** Address `overflow` set to `hidden` in IE 8/9/10/11. */
-button { overflow: visible; }
-
-/** Address inconsistent `text-transform` inheritance for `button` and `select`. All other form control elements do not inherit `text-transform` values. Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. Correct `select` style inheritance in Firefox. */
-button, select { text-transform: none; }
-
-/** 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls. 2. Correct inability to style clickable `input` types in iOS. 3. Improve usability and consistency of cursor style between image-type `input` and others. */
-button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ }
-
-/** Re-set default cursor for disabled elements. */
-button[disabled], html input[disabled] { cursor: default; }
-
-/** Remove inner padding and border in Firefox 4+. */
-button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; }
-
-/** Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet. */
-input { line-height: normal; }
-
-/** It's recommended that you don't attempt to style these elements. Firefox's implementation doesn't respect box-sizing, padding, or width.  1. Address box sizing set to `content-box` in IE 8/9/10. 2. Remove excess padding in IE 8/9/10. */
-input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ }
-
-/** Fix the cursor style for Chrome's increment/decrement buttons. For certain `font-size` values of the `input`, it causes the cursor style of the decrement button to change from `default` to `text`. */
-input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { height: auto; }
-
-/** 1. Address `appearance` set to `searchfield` in Safari and Chrome. 2. Address `box-sizing` set to `border-box` in Safari and Chrome (include `-moz` to future-proof). */
-input[type="search"] { -webkit-appearance: textfield; /* 1 */ /* 2 */ box-sizing: content-box; }
-
-/** Remove inner padding and search cancel button in Safari and Chrome on OS X. Safari (but not Chrome) clips the cancel button when the search input has padding (and `textfield` appearance). */
-input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; }
-
-/** Define consistent border, margin, and padding. */
-fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; }
-
-/** 1. Correct `color` not being inherited in IE 8/9/10/11. 2. Remove padding so people aren't caught out if they zero out fieldsets. */
-legend { border: 0; /* 1 */ padding: 0; /* 2 */ }
-
-/** Remove default vertical scrollbar in IE 8/9/10/11. */
-textarea { overflow: auto; }
-
-/** Don't inherit the `font-weight` (applied by a rule above). NOTE: the default cannot safely be changed in Chrome and Safari on OS X. */
-optgroup { font-weight: bold; }
-
-/* Tables ========================================================================== */
-/** Remove most spacing between table cells. */
-table { border-collapse: collapse; border-spacing: 0; }
-
-td, th { padding: 0; }
-
-/* LAYOUT STYLES */
-
-p { margin-top: 0; }
-
-code, pre { margin-bottom: 30px; font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace; font-size: 13px; color: #222; }
-
-code { padding: 0 3px; background-color: #f2f8fc; border: solid 1px #dbe7f3; }
-
-pre { padding: 20px; overflow: auto; text-shadow: none; background: #fff; border: solid 1px #f2f2f2; }
-
-pre code { padding: 0; color: #2879d0; background-color: #fff; border: none; }
-
-ul, ol, dl { margin-bottom: 20px; }
-
-/* COMMON STYLES */
-
-td.halign-right { text-align: right; } 
-
-td.halign-center { text-align: center; } 
-
-form { padding: 20px; background: #f2f2f2; }
-
-h2 { 
-   font-size: 2em;
-   line-height: 1.2em;
-   font-weight: 200;
-   letter-spacing: 0;
-}
-
-h3 { 
-   font-size: 1.4em;
-   line-height: 1.2em;
-   font-weight: normal;
-   letter-spacing: 0;
-}
-
-.sect1 {
-   margin-left: 4%;
-   margin-right: 4%;
-   font: 13px/20px Arial, Helvetica, sans-serif  
-}
-
-a:link {
-   text-decoration: none;
-   color: #09569d;
-}
-
-#preamble hr{
-   margin-left: 0%;
-   margin-right: 0%;
-}
-
-#preamble .sectionbody table  {
-   font-weight: 200;
-   margin-left: 4%;
-   margin-right: 4%;
-}
-
-hr {
-   margin-bottom: 12px;
-}
-
-table.tableblock.frame-all.grid-all.spread {
-   font-size: 12px;
-}
-
-code {
-   font-size:.9em;
-   border: 1px solid #eaeaea;
-   background-color: #f6f6f6;
-   border-radius: 3px;
-   padding: 1px;
-   padding-left:2px;
-   padding-right:2px;
-}
-
-pre.prettyprint.highlight {
-   border: 1px solid #eaeaea;
-   background-color: #f6f6f6;
-   border-radius: 4px;
-   padding: 8px;
-   padding-top:4px;
-   padding-bottom:4px;
-}
-
-.language-oac_no_warn {
-   font-size:.9em;
-   color:#222;
-   background-color: transparent;
-}
-
-#doc-title {
-   margin-left: 4%;
-}
-
-#top-nav {
-   margin-left: 4%;
-   font-size: 12px;
-}
-
-#bottom-nav {
-   margin-left: 4%;
-   font-size: 12px;
-}
-
-.vector-font {
-   color:grey; 
-   font-size: 20px;
-}
-
-#copyright {
-   padding-top: 10px;
-   padding-bottom: 4px;
-   display: table;
-   margin:0 auto;
-   color: grey;
-   font-size: 12px;
-   vertical-align: middle;
-}
-
-.beta {color: #FF0000}
-
-/* GENERAL ELEMENT TYPE STYLES */
-
-/* #Media Queries
-================================================== */
-/* Smaller than standard 960 (devices and browsers) */
-/* Tablet Portrait size to standard 960 (devices and browsers) */
-@media only screen and (min-width: 768px) and (max-width: 959px) { .inner { width: 740px; }
-  header h1, header h2 { width: 340px; }
-  header h1 { font-size: 60px; }
-  header h2 { font-size: 30px; }
-}
-/* All Mobile Sizes (devices and browser) */
-@media only screen and (max-width: 767px) { .inner { width: 93%; }
-  header { padding: 20px 0; }
-  header .inner { position: relative; }
-  header h1, header h2 { width: 100%; }
-  header h1 { font-size: 48px; }
-  header h2 { font-size: 24px; }
-  header a.button { position: relative; display: inline-block; width: auto; height: auto; padding: 5px 10px; margin-top: 15px; font-size: 13px; line-height: 1; color: #2879d0; text-align: center; background-color: #9ddcff; background-image: none; border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; }
-  header a.button small { display: inline; font-size: 13px; }
-}
-/* Mobile Landscape Size to Tablet Portrait (devices and browsers) */
-/* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */
-
-header h1 { padding-top: 14px; font-size: 2em; font-weight: 200; line-height: 1.4; color: #FFFFFF; letter-spacing: 0px; border-bottom: 0px; }
-
-header h2 { font-size: 1.2em; margin-top: 0; margin-bottom: 0; font-weight: 200; line-height: .8; color: #ec7D11; letter-spacing: 0; }
-
-/*
-header a.button { background: transparent url(../images/logo.png) 0 0 no-repeat; padding-left: 32px; }
-*/
-
-header a:hover { text-decoration: none; }
-
-/* Admonition (Note) block */
-.admonitionblock > table {
-  border: 0;
-  background: none;
-  width: 100%;
-  table-layout: auto;
-  margin-bottom: 10.5px;
-}
-.admonitionblock > table td.icon {
-  text-align: center;
-  width: 60px;
-}
-.admonitionblock > table td.icon img {
-  max-width: none;
-}
-.admonitionblock > table td.icon .title {
-  text-transform: uppercase;
-}
-.admonitionblock > table td.content {
-  padding-left: 1em;
-  padding-right: 1em;
-  border-left: 3px solid #ddd;
-}
-.admonitionblock > table td.content > :last-child > :last-child {
-  margin-bottom: 0;
-}
-.admonitionblock td.icon [class^="fa icon-"]:before {
-  font-size: 2.5em;
-  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
-  cursor: default;
-}
-.admonitionblock td.icon .icon-note:before {
-  content: "\f05a";
-  color: #5bc0de;
-}
diff --git a/docs/administration-guide/src/main/jbake/content/asadmin-subcommands.adoc b/docs/administration-guide/src/main/jbake/content/asadmin-subcommands.adoc
deleted file mode 100644
index b245a76..0000000
--- a/docs/administration-guide/src/main/jbake/content/asadmin-subcommands.adoc
+++ /dev/null
@@ -1,791 +0,0 @@
-type=page
-status=published
-title=Subcommands for the asadmin Utility
-prev=part-appendixes.html
-~~~~~~
-Subcommands for the asadmin Utility
-===================================
-
-[[GSADG00023]][[gcode]]
-
-
-[[a-subcommands-for-the-asadmin-utility]]
-A Subcommands for the `asadmin` Utility
----------------------------------------
-
-This appendix lists the `asadmin` subcommands that are included with
-this release of the GlassFish Server Open Source Edition 5.0 software.
-
-* link:#ggltk[General Administration Subcommands]
-* link:#CHDJGEEG[Batch Jobs Subcommands]
-* link:#CHDECJFC[Concurrent Resources Subcommands]
-* link:#giowb[Connectivity Subcommands]
-* link:#gitwu[Domain Subcommands]
-* link:#ggltm[Internet Connectivity Subcommands]
-* link:#ggltf[JavaMail Subcommands]
-* link:#gipen[JMS Subcommands]
-* link:#gitws[JNDI Subcommands]
-* link:#gglsk[JVM Subcommands]
-* link:#giuzl[Life Cycle Module Subcommands]
-* link:#gitxd[Logging and Monitoring Subcommands]
-* link:#giusq[ORB Subcommands]
-* link:#giuqr[Thread Pool Subcommands]
-* link:#gitxi[Transaction Service Subcommands]
-
-For information and instructions on using the `asadmin` application
-deployment subcommands, see the link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source
-Edition Application Deployment Guide].
-
-Online help for the `asadmin` subcommands can be invoked on the command
-line, for example, `asadmin create-domain` `help`. The
-link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual] also
-provides a collection of these help pages.
-
-
-[NOTE]
-=======================================================================
-
-The common options used with remote subcommands are described in the
-olink:GSRFM00263[`asadmin`(1M)] help page.
-
-=======================================================================
-
-
-[[ggltk]][[GSADG00610]][[general-administration-subcommands]]
-
-General Administration Subcommands
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-link:../reference-manual/add-resources.html#GSRFM00001[`add-resources`]::
-  Creates the resources named in the specified XML file. Supported in
-  remote mode only. For procedural information in this guide, see
-  link:general-administration.html#ggoeh[To Add Resources From an XML
-  File].
-link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`]::
-  Describes how the `asadmin` utility works.
-link:../reference-manual/attach.html#GSRFM825[`attach`]::
-  Attaches to subcommands that were started using the `asadmin --detach`
-  option or that contain progress information. For procedural
-  information in this guide, see
-  link:general-administration.html#CACDDHBA[To Run `asadmin` Subcommands
-  in `--detach` Mode].
-link:../reference-manual/configure-managed-jobs.html#GSRFM836[`configure-managed-jobs`]::
-  Configures how long information about subcommands (jobs) that were
-  started using the `asadmin --detach` option or that contain progress
-  information is kept. For procedural information in this guide, see
-  link:general-administration.html#CACDDHBA[To Run `asadmin` Subcommands
-  in `--detach` Mode].
-link:../reference-manual/create-module-config.html#GSRFM844[`create-module-config`]::
-  Adds the default configuration of a module to `domain.xml`.
-link:../reference-manual/create-service.html#GSRFM00057[`create-service`]::
-  Configures the starting of a domain administration server (DAS) on an
-  unattended boot. On Oracle Solaris 10, this subcommand uses the
-  Service Management Facility (SMF). For procedural information in this
-  guide, see link:domains.html#giusi[To Configure a DAS or an Instance
-  for Automatic Restart on Oracle Solaris].
-link:../reference-manual/create-system-properties.html#GSRFM00059[`create-system-properties`]::
-  Creates or updates system properties. Supported in remote mode only.
-  For procedural information in this guide, see
-  link:general-administration.html#ggonc[To Create System Properties].
-link:../reference-manual/delete-module-config.html#GSRFM854[`delete-module-config`]::
-  Removes the configuration of a module from `domain.xml`.
-link:../reference-manual/delete-system-property.html#GSRFM00110[`delete-system-property`]::
-  Deletes system properties of a domain or configuration, or server
-  instance. Supported in remote mode only. For procedural information in
-  this guide, see link:general-administration.html#ggomm[To Delete a
-  System Property].
-link:../reference-manual/get.html#GSRFM00139[`get`]::
-  Gets an attribute of an element in the `domain.xml` file. With the
-  `-m` option, gets the names and values of the monitorable or
-  configurable attributes. For procedural information in this guide, see
-  link:monitoring.html#ablwh[Guidelines for Using the `list` and `get`
-  Subcommands for Monitoring].
-link:../reference-manual/get-active-module-config.html#GSRFM859[`get-active-module-config`]::
-  Displays the current active configuration of a module.
-link:../reference-manual/list.html#GSRFM00145[`list`]::
-  Lists the configurable element. On Oracle Solaris, quotes are needed
-  when running subcommands with `*` as the option value or operand. For
-  procedural information in this guide, see
-  link:monitoring.html#ablwh[Guidelines for Using the `list` and `get`
-  Subcommands for Monitoring].
-link:../reference-manual/list-commands.html#GSRFM00154[`list-commands`]::
-  Lists all the `asadmin` subcommands, local subcommands first, then
-  remote subcommands. You can specify that only remote subcommands or
-  only local subcommands be displayed. Supported in remote mode only.
-  For procedural information in this guide, see
-  link:general-administration.html#ggoeg[To List Subcommands].
-link:../reference-manual/list-containers.html#GSRFM00161[`list-containers`]::
-  Lists application containers and the status of each container.
-  Supported in remote mode only. For procedural information in this
-  guide, see link:general-administration.html#ggocv[To List Containers].
-link:../reference-manual/list-jobs.html#GSRFM867[`list-jobs`]::
-  Lists information about subcommands that were started using the
-  `asadmin --detach` option or that contain progress information. For
-  procedural information in this guide, see
-  link:general-administration.html#CACDDHBA[To Run `asadmin` Subcommands
-  in `--detach` Mode].
-link:../reference-manual/list-modules.html#GSRFM00185[`list-modules`]::
-  Lists modules that are accessible to the GlassFish Server subsystem.
-  The status of each module is included. Supported in remote mode only.
-  For procedural information in this guide, see
-  link:general-administration.html#ghlgf[To List Modules].
-link:../reference-manual/list-system-properties.html#GSRFM00203[`list-system-properties`]::
-  Lists the system properties of a domain or configuration. Supported in
-  remote mode only. For procedural information in this guide, see
-  link:general-administration.html#ggodt[To List System Properties].
-link:../reference-manual/list-timers.html#GSRFM00205[`list-timers`]::
-  List the timers owned by a specific server instance. Supported in
-  remote mode only. For procedural information in this guide, see
-  link:general-administration.html#giojd[To List Timers].
-link:../reference-manual/multimode.html#GSRFM00213[`multimode`]::
-  Provides an `asadmin>` prompt for running multiple subcommands while
-  preserving options and environment settings. Supported in local mode
-  only. For procedural information, see
-  link:general-administration.html#giobi[Using the `asadmin` Utility].
-link:../reference-manual/osgi.html#GSRFM877[`osgi`]::
-  Delegates the command line to the Apache Felix Gogo remote shell for
-  the execution of OSGi shell commands. For procedural information in
-  this guide, see link:overview.html#CJAGIGII[To Run Apache Felix Gogo
-  Remote Shell Commands].
-link:../reference-manual/osgi-shell.html#GSRFM890[`osgi-shell`]::
-  Provides interactive access to the Apache Felix Gogo remote shell for
-  the execution of OSGi shell commands. For procedural information in
-  this guide, see link:overview.html#CJAGIGII[To Run Apache Felix Gogo
-  Remote Shell Commands].
-link:../reference-manual/set.html#GSRFM00226[`set`]::
-  Sets the values of one or more configurable attributes. For procedural
-  information in this guide, see link:monitoring.html#ablvp[Configuring
-  Monitoring].
-link:../reference-manual/setup-local-dcom.html#GSRFM893[`setup-local-dcom`]::
-  Sets up the Distributed Component Object Model (DCOM) remote protocol
-  on the host where the subcommand is run. The DCOM remote protocol is
-  available only on Windows systems.
-link:../reference-manual/show-component-status.html#GSRFM00232[`show-component-status`]::
-  Lists the status of existing components. Supported in remote mode
-  only. For procedural information in this guide, see
-  link:general-administration.html#giyjd[To Show Component Status].
-link:../reference-manual/start-database.html#GSRFM00234[`start-database`]::
-  Starts the Apache Derby database server. Use this subcommand only for
-  working with applications deployed to the GlassFish Server. For
-  procedural information in this guide, see link:jdbc.html#ggndz[To Start
-  the Database].
-link:../reference-manual/stop-database.html#GSRFM00239[`stop-database`]::
-  Stops a process of the Apache Derby DB database server. For procedural
-  information in this guide, see link:jdbc.html#ggnbw[To Stop the
-  Database].
-link:../reference-manual/version.html#GSRFM00261[`version`]::
-  Displays the version information for the option specified in archive
-  or folder format. Supported in remote mode only. For procedural
-  information in this guide, see
-  link:general-administration.html#ghhox[To Display the GlassFish Server
-  Version].
-
-[[CHDJGEEG]][[GSADG1155]][[batch-jobs-subcommands]]
-
-Batch Jobs Subcommands
-~~~~~~~~~~~~~~~~~~~~~~
-
-link:../reference-manual/list-batch-jobs.html#GSRFM861[`list-batch-jobs`]::
-  Lists batch jobs and job details. For procedural information in this
-  guide, see link:batch.html#BABIBFDJ[To List Batch Jobs].
-link:../reference-manual/list-batch-job-executions.html#GSRFM884[`list-batch-job-executions`]::
-  Lists batch job executions and execution details. For procedural
-  information in this guide, see link:batch.html#BABFBGJB[To List Batch
-  Job Executions].
-link:../reference-manual/list-batch-job-steps.html#GSRFM895[`list-batch-job-steps`]::
-  Lists steps for a specific batch job execution. For procedural
-  information in this guide, see link:batch.html#BABGJIDD[To List Batch
-  Job Steps].
-link:../reference-manual/list-batch-runtime-configuration.html#GSRFM863[`list-batch-runtime-configuration`]::
-  Displays the configuration of the batch runtime. For procedural
-  information in this guide, see link:batch.html#BABBGHCJ[To List the
-  Batch Runtime Configuration].
-link:../reference-manual/set-batch-runtime-configuration.html#GSRFM897[`set-batch-runtime-configuration`]::
-  Configures the batch runtime. For procedural information in this
-  guide, see link:batch.html#BABFEJAD[To Configure the Batch Runtime].
-
-[[CHDECJFC]][[GSADG1156]][[concurrent-resources-subcommands]]
-
-Concurrent Resources Subcommands
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-link:../reference-manual/create-context-service.html#GSRFM838[`create-context-service`]::
-  Creates a context service resource. For procedural information in this
-  guide, see link:concurrent.html#DAFJACDI[To Create a Context Service].
-link:../reference-manual/create-managed-executor-service.html#GSRFM840[`create-managed-executor-service`]::
-  Creates a managed executor service resource. For procedural
-  information in this guide, see link:concurrent.html#DAFJIEGA[To Create
-  a Managed Executor Service].
-link:../reference-manual/create-managed-scheduled-executo.html#GSRFM680[`create-managed-scheduled-executor-service`]::
-  Creates a managed scheduled executor service resource. For procedural
-  information in this guide, see link:concurrent.html#DAFFGDGG[To Create
-  a Managed Scheduled Executor Service].
-link:../reference-manual/create-managed-thread-factory.html#GSRFM842[`create-managed-thread-factory`]::
-  Creates a managed thread factory resource. For procedural information
-  in this guide, see link:concurrent.html#DAFGFAEI[To Create a Managed
-  Thread Factory].
-link:../reference-manual/create-context-service.html#GSRFM838[`list-context-services`]::
-  Lists context service resources. For procedural information in this
-  guide, see link:concurrent.html#DAFDCFCB[To List Context Services].
-link:../reference-manual/create-managed-executor-service.html#GSRFM840[`list-managed-executor-services`]::
-  Lists managed executor service resources. For procedural information
-  in this guide, see link:concurrent.html#DAFIJDAE[To List Managed
-  Executor Services].
-link:../reference-manual/create-managed-scheduled-executo.html#GSRFM680[`list-managed-scheduled-executor-services`]::
-  Lists managed scheduled executor service resources. For procedural
-  information in this guide, see link:concurrent.html#DAFJBADD[To List
-  Managed Scheduled Executor Services].
-link:../reference-manual/create-managed-thread-factory.html#GSRFM842[`list-managed-thread-factories`]::
-  Lists managed thread factory resources. For procedural information in
-  this guide, see link:concurrent.html#DAFDGEGE[To List Managed Thread
-  Factories].
-link:../reference-manual/delete-context-service.html#GSRFM846[`delete-context-service`]::
-  Removes a context service resource. For procedural information in this
-  guide, see link:concurrent.html#DAFGGGEC[To Delete a Context Service].
-link:../reference-manual/delete-managed-executor-service.html#GSRFM848[`delete-managed-executor-service`]::
-  Removes a managed executor service resource. For procedural
-  information in this guide, see link:concurrent.html#DAFDAGAD[To Delete
-  a Managed Executor Service].
-link:../reference-manual/delete-managed-scheduled-executo.html#GSRFM850[`delete-managed-scheduled-executor-service`]::
-  Removes a managed scheduled executor service resource. For procedural
-  information in this guide, see link:concurrent.html#DAFEBEGC[To Delete
-  a Managed Scheduled Executor Service].
-link:../reference-manual/delete-managed-thread-factory.html#GSRFM852[`delete-managed-thread-factory`]::
-  Removes a managed thread factory resource. For procedural information
-  in this guide, see link:concurrent.html#DAFCEDEI[To Delete a Managed
-  Thread Factory].
-
-[[giowb]][[GSADG00611]][[connectivity-subcommands]]
-
-Connectivity Subcommands
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-link:../reference-manual/create-admin-object.html#GSRFM00012[`create-admin-object`]::
-  Creates an administered object. For procedural information in this
-  guide, see link:connectors.html#giolr[To Create an Administered
-  Object].
-link:../reference-manual/create-connector-connection-pool.html#GSRFM00018[`create-connector-connection-pool`]::
-  Adds a new connector connection pool with the specified connection
-  pool name. For procedural information in this guide, see
-  link:connectors.html#gioce[To Create a Connector Connection Pool].
-link:../reference-manual/create-connector-resource.html#GSRFM00019[`create-connector-resource`]::
-  Creates a connector resource. For procedural information in this
-  guide, see link:connectors.html#giogt[To Create a Connector Resource].
-link:../reference-manual/create-connector-security-map.html#GSRFM00020[`create-connector-security-map`]::
-  Creates a connector security map for the specified connector
-  connection pool. For procedural information, see
-  link:connectors.html#gitzz[To Create a Connector Security Map].
-link:../reference-manual/create-connector-work-security-m.html#GSRFM00021[`create-connector-work-security-map`]::
-  Creates a connector work security map for the specified resource
-  adapter. Supported in remote mode only. For procedural information in
-  this guide, see link:connectors.html#giofz[To Create a Connector Work
-  Security Map].
-link:../reference-manual/create-jdbc-resource.html#GSRFM00037[`create-jdbc-resource`]::
-  Creates a new JDBC resource. Supported in remote mode only. For
-  procedural information in this guide, see link:jdbc.html#ggnda[To
-  Create a JDBC Resource].
-link:../reference-manual/create-jdbc-connection-pool.html#GSRFM00036[`create-jdbc-connection-pool`]::
-  Registers a new JDBC connection pool with the specified JDBC
-  connection pool name. Supported in remote mode only. For procedural
-  information in this guide, see link:jdbc.html#ggnfv[To Create a JDBC
-  Connection Pool].
-link:../reference-manual/create-resource-adapter-config.html#GSRFM00054[`create-resource-adapter-config`]::
-  Creates configuration information for the connector module. Supported
-  in remote mode only. For procedural information in this guide, see
-  link:connectors.html#gioqx[To Create Configuration Information for a
-  Resource Adapter].
-link:../reference-manual/delete-admin-object.html#GSRFM00063[`delete-admin-object`]::
-  Deletes an administered object. For procedural information in this
-  guide, see link:connectors.html#gioma[To Delete an Administered
-  Object].
-link:../reference-manual/delete-connector-connection-pool.html#GSRFM00070[`delete-connector-connection-pool`]::
-  Removes the connector connection pool specified using the
-  `connector_connection_pool_name` operand. For procedural information
-  in this guide, see link:connectors.html#giocp[To Delete a Connector
-  Connection Pool].
-link:../reference-manual/delete-connector-resource.html#GSRFM00071[`delete-connector-resource`]::
-  Deletes connector resource. For procedural information in this guide,
-  see link:connectors.html#giofs[To Delete a Connector Resource].
-link:../reference-manual/delete-connector-security-map.html#GSRFM00072[`delete-connector-security-map`]::
-  Deletes a specified connector security map. Supported in remote mode
-  only. For procedural information in this guide, see
-  link:connectors.html#gitvf[To Delete a Connector Security Map].
-link:../reference-manual/delete-connector-work-security-m.html#GSRFM00073[`delete-connector-work-security-map`]::
-  Deletes a specified connector work security map. Supported in remote
-  mode only. For procedural information in this guide, see
-  link:connectors.html#gioin[To Delete a Connector Work Security Map].
-link:../reference-manual/delete-jdbc-connection-pool.html#GSRFM00088[`delete-jdbc-connection-pool`]::
-  Deletes the specified JDBC connection pool. Supported in remote mode
-  only. For procedural information in this guide, see
-  link:jdbc.html#ggngb[To Delete a JDBC Connection Pool].
-link:../reference-manual/delete-jdbc-resource.html#GSRFM00089[`delete-jdbc-resource`]::
-  Deletes a JDBC resource. The specified JNDI name identifies the
-  resource to be deleted. Supported in remote mode only. For procedural
-  information in this guide, see link:jdbc.html#ggnhz[To Delete a JDBC
-  Resource].
-link:../reference-manual/delete-resource-adapter-config.html#GSRFM00106[`delete-resource-adapter-config`]::
-  Deletes configuration information for the connector module. Supported
-  in remote mode only. For procedural information in this guide, see
-  link:connectors.html#gionv[To Delete a Resource Adapter Configuration].
-link:../reference-manual/flush-connection-pool.html#GSRFM00135[`flush-connection-pool`]::
-  Reintializes all connections established in the specified connection.
-  For procedural information in this guide, see link:jdbc.html#gjiqp[To
-  Reset (Flush) a Connection Pool].
-link:../reference-manual/list-admin-objects.html#GSRFM00146[`list-admin-objects`]::
-  Lists administered objects. For procedural information in this guide,
-  see link:connectors.html#giokm[To List Administered Objects].
-link:../reference-manual/list-connector-connection-pools.html#GSRFM00157[`list-connector-connection-pools`]::
-  Lists the connector connection pools that have been created. For
-  procedural information in this guide, see link:connectors.html#giocg[To
-  List Connector Connection Pools].
-link:../reference-manual/list-connector-resources.html#GSRFM00158[`list-connector-resources`]::
-  Creates connector resources. For procedural information in this guide,
-  see link:connectors.html#giohs[To List Connector Resources].
-link:../reference-manual/list-connector-security-maps.html#GSRFM00159[`list-connector-security-maps`]::
-  Lists the connector security maps belonging to a specified connector
-  connection pool. For procedural information in this guide, see
-  link:connectors.html#gitwx[To List Connector Security Maps].
-link:../reference-manual/list-connector-work-security-map.html#GSRFM00160[`list-connector-work-security-maps`]::
-  Lists the existing connector work security maps for a resource
-  adapter. Supported in remote mode only. For procedural information in
-  this guide, see link:connectors.html#gioir[To List Connector Work
-  Security Maps].
-link:../reference-manual/list-jdbc-connection-pools.html#GSRFM00173[`list-jdbc-connection-pools`]::
-  Lists the existing JDBC connection pools. Supported in remote mode
-  only. For procedural information in this guide, see
-  link:jdbc.html#ggnby[To List JDBC Connection Pools].
-link:../reference-manual/list-jdbc-resources.html#GSRFM00174[`list-jdbc-resources`]::
-  Lists the existing JDBC resources. Supported in remote mode only. For
-  procedural information in this guide, see link:jdbc.html#ggnhl[To List
-  JDBC Resources].
-link:../reference-manual/list-resource-adapter-configs.html#GSRFM00196[`list-resource-adapter-configs`]::
-  Lists configuration information for the connector modules. Supported
-  in remote mode only. For procedural information in this guide, see
-  link:connectors.html#giorn[To List Resource Adapter Configurations].
-link:../reference-manual/ping-connection-pool.html#GSRFM00214[`ping-connection-pool`]::
-  Tests if a JDBC connection pool is usable. Supported in remote mode
-  only. For procedural information in this guide, see
-  link:jdbc.html#ggnwn[To Contact (Ping) a Connection Pool].
-link:../reference-manual/update-connector-security-map.html#GSRFM00252[`update-connector-security-map`]::
-  Modifies a security map for the specified connector connection pool.
-  For procedural information in this guide, see
-  link:connectors.html#gityj[To Update a Connector Security Map].
-link:../reference-manual/update-connector-work-security-m.html#GSRFM00253[`update-connector-work-security-map`]::
-  Modifies a work security map that belongs to a specific resource
-  adapter (connector module). For procedure information in this guide,
-  see link:connectors.html#giogm[To Update a Connector Work Security
-  Map].
-
-[[gitwu]][[GSADG00612]][[domain-subcommands]]
-
-Domain Subcommands
-~~~~~~~~~~~~~~~~~~
-
-link:../reference-manual/backup-domain.html#GSRFM00003[`backup-domain`]::
-  Describes how to back up a domain. Supported in local mode only. For
-  procedural information in this guide, see link:domains.html#ggocq[To
-  Back Up a Domain].
-link:../reference-manual/create-domain.html#GSRFM00023[`create-domain`]::
-  Creates the configuration of a domain. A domain can exist independent
-  of other domains. Any user who has access to the `asadmin` utility on
-  a given host can create a domain and store its configuration in a
-  location of choice. For procedural information in this guide, see
-  link:domains.html#ggoei[To Create a Domain].
-link:../reference-manual/delete-domain.html#GSRFM00075[`delete-domain`]::
-  Deletes the specified domain. The domain must be stopped before it can
-  be deleted. For procedural information in this guide, see
-  link:domains.html#ggofa[To Delete a Domain].
-link:../reference-manual/list-backups.html#GSRFM00152[`list-backups`]::
-  Lists the existing domain backups. Supported in local mode only. For
-  procedural information in this guide, see link:domains.html#ghgod[To
-  List Domain Backups].
-link:../reference-manual/list-domains.html#GSRFM00163[`list-domains`]::
-  Lists the existing domains and their statuses. If the domain directory
-  is not specified, the domains in the domain-root-dir, the default for
-  which is as-install`/domains`, are displayed. For procedural
-  information in this guide, see link:domains.html#ggoco[To List
-  Domains].
-link:../reference-manual/login.html#GSRFM00210[`login`]::
-  Allows you to log in to a domain. For procedural information in this
-  guide, see link:domains.html#ghhjz[To Log In to a Domain].
-link:../reference-manual/restart-domain.html#GSRFM00218[`restart-domain`]::
-  Restarts the Domain Administration Server (DAS) of the specified
-  domain. Supported in remote mode only. For procedural information in
-  this guide, see link:domains.html#ginqj[To Restart a Domain].
-link:../reference-manual/restore-domain.html#GSRFM00221[`restore-domain`]::
-  Recovers and domain from a backup file. Supported in local mode only.
-  For procedural information in this guide, see
-  link:domains.html#ggody[To Restore a Domain].
-link:../reference-manual/start-domain.html#GSRFM00235[`start-domain`]::
-  Starts a domain. If the domain directory is not specified, the default
-  `domain1` in the default domain-root-dir directory is started. If
-  there are two or more domains, the domain_name operand must be
-  specified. For procedural information in this guide, see
-  link:domains.html#ggoda[To Start a Domain].
-link:../reference-manual/stop-domain.html#GSRFM00240[`stop-domain`]::
-  Stops the domain administration server (DAS) of the specified domain.
-  Supported in remote mode only. For procedural information in this
-  guide, see link:domains.html#ggoch[To Stop a Domain].
-link:../reference-manual/uptime.html#GSRFM00258[`uptime`]::
-  Displays the length of time that the domain administration server
-  (DAS) has been running since the last restart. Supported in remote
-  mode only. For procedural information in this guide, see
-  link:domains.html#ghhnt[To Display Domain Uptime].
-
-[[ggltm]][[GSADG00613]][[internet-connectivity-subcommands]]
-
-Internet Connectivity Subcommands
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-link:../reference-manual/create-http.html#GSRFM00025[`create-http`]::
-  Creates a set of HTTP parameters for a protocol, which in turn
-  configures one or more network listeners. Supported in remote mode
-  only. For procedural information in this guide, see
-  link:http_https.html#gjhqc[To Create an HTTP Configuration].
-link:../reference-manual/create-http-listener.html#GSRFM00030[`create-http-listener`]::
-  Creates a new HTTP listener socket. Supported in remote mode only. For
-  procedural information in this guide, see link:http_https.html#ggnfh[To
-  Create an Internet Connection].
-link:../reference-manual/create-network-listener.html#GSRFM00046[`create-network-listener`]::
-  Creates a new HTTP listener socket. Supported in remote mode only. For
-  procedural information in this guide, see link:http_https.html#ggnfh[To
-  Create an Internet Connection].
-link:../reference-manual/create-protocol.html#GSRFM00051[`create-protocol`]::
-  Creates a protocol for a listener. Supported in remote mode only. For
-  procedural information in this guide, see link:http_https.html#gjhot[To
-  Create a Protocol].
-link:../reference-manual/create-transport.html#GSRFM00061[`create-transport`]::
-  Creates a transport for a listener. Supported in remote mode only. For
-  procedural information in this guide, see link:http_https.html#gjhps[To
-  Create a Transport].
-link:../reference-manual/create-virtual-server.html#GSRFM00062[`create-virtual-server`]::
-  Creates the specified virtual server element. Supported in remote mode
-  only. For procedural information in this guide, see
-  link:http_https.html#ggnfr[To Create a Virtual Server].
-link:../reference-manual/create-ssl.html#GSRFM00058[`create-ssl`]::
-  Creates and configures the SSL element in the selected HTTP listener
-  to enable secure communication on that listener/service. Supported in
-  remote mode only. For procedural information in this guide, see
-  link:http_https.html#ggnbj[To Configure an HTTP Listener for SSL].
-link:../reference-manual/delete-http.html#GSRFM00077[`delete-http`]::
-  Deletes an existing HTTP configuration. Supported in remote mode only.
-  For procedural information in this guide, see
-  link:http_https.html#gjhqa[To Delete an HTTP Configuration].
-link:../reference-manual/delete-http-listener.html#GSRFM00082[`delete-http-listener`]::
-  Deletes the specified HTTP listener. Supported in remote mode only.
-  For procedural information in this guide, see
-  link:http_https.html#ggndu[To Delete an HTTP Network Listener].
-link:../reference-manual/delete-network-listener.html#GSRFM00098[`delete-network-listener`]::
-  Deletes the specified HTTP listener. Supported in remote mode only.
-  For procedural information in this guide, see
-  link:http_https.html#ggndu[To Delete an HTTP Network Listener].
-link:../reference-manual/delete-protocol.html#GSRFM00103[`delete-protocol`]::
-  Deletes and existing HTTP protocol. Supported in remote mode only. For
-  procedural information in this guide, see link:http_https.html#gjhnx[To
-  Delete a Protocol].
-link:../reference-manual/delete-ssl.html#GSRFM00109[`delete-ssl`]::
-  Deletes the SSL element in the selected HTTP listener. Supported in
-  remote mode only. For procedural information in this guide, see
-  link:http_https.html#ggncl[To Delete SSL From an HTTP Listener].
-link:../reference-manual/delete-transport.html#GSRFM00112[`delete-transport`]::
-  Deletes and existing HTTP transport. Supported in remote mode only.
-  For procedural information in this guide, see
-  link:http_https.html#gjhqp[To Delete a Transport].
-link:../reference-manual/delete-virtual-server.html#GSRFM00113[`delete-virtual-server`]::
-  Deletes the specified virtual server element. Supported in remote mode
-  only. For procedural information in this guide, see
-  link:http_https.html#ggnen[To Delete a Virtual Server].
-link:../reference-manual/list-http-listeners.html#GSRFM00168[`list-http-listeners`]::
-  Lists the existing HTTP listeners. Supported in remote mode only. For
-  procedural information in this guide, see link:http_https.html#ggnbv[To
-  List HTTP Network Listeners].
-link:../reference-manual/list-network-listeners.html#GSRFM00186[`list-network-listeners`]::
-  Lists the existing HTTP listeners. Supported in remote mode only. For
-  procedural information in this guide, see link:http_https.html#ggnbv[To
-  List HTTP Network Listeners].
-link:../reference-manual/list-protocols.html#GSRFM00195[`list-protocols`]::
-  Lists the existing HTTP protocols. Supported in remote mode only. For
-  procedural information in this guide, see link:http_https.html#gjhna[To
-  List Protocols].
-link:../reference-manual/list-transports.html#GSRFM00206[`list-transports`]::
-  Lists the existing HTTP transports. Supported in remote mode only. For
-  procedural information in this guide, see link:http_https.html#gjhmx[To
-  List Transports].
-link:../reference-manual/list-virtual-servers.html#GSRFM00207[`list-virtual-servers`]::
-  Lists the existing virtual servers. Supported in remote mode only. For
-  procedural information in this guide, see link:http_https.html#ggndw[To
-  List Virtual Servers].
-
-[[ggltf]][[GSADG00614]][[javamail-subcommands]]
-
-JavaMail Subcommands
-~~~~~~~~~~~~~~~~~~~~
-
-link:../reference-manual/create-javamail-resource.html#GSRFM00035[`create-javamail-resource`]::
-  Creates a JavaMail session resource. Supported in remote mode only.
-  For procedural information in this guide, see
-  link:javamail.html#giowd[To Create a JavaMail Resource].
-link:../reference-manual/delete-javamail-resource.html#GSRFM00087[`delete-javamail-resource`]::
-  Deletes a JavaMail session resource. Supported in remote mode only.
-  For procedural information in this guide, see
-  link:javamail.html#gioxj[To Delete a JavaMail Resource].
-link:../reference-manual/list-javamail-resources.html#GSRFM00172[`list-javamail-resources`]::
-  Creates JavaMail session resources. Supported in remote mode only. For
-  procedural information in this guide, see link:javamail.html#giowq[To
-  List JavaMail Resources].
-
-[[gipen]][[GSADG00615]][[jms-subcommands]]
-
-JMS Subcommands
-~~~~~~~~~~~~~~~
-
-link:../reference-manual/create-jmsdest.html#GSRFM00038[`create-jmsdest`]::
-  Creates a JMS physical destination. Along with the physical
-  destination, you use the `create-jms-resource` subcommand to create a
-  JMS destination resource that has a `Name` property that specifies the
-  physical destination. Supported in remote mode only. For procedural
-  information in this guide, see link:jms.html#gioue[To Create a JMS
-  Physical Destination].
-link:../reference-manual/create-jms-host.html#GSRFM00039[`create-jms-host`]::
-  Creates a JMS host within the JMS service. Supported in remote mode
-  only. For procedural information in this guide, see
-  link:jms.html#gipbh[To Create a JMS Host].
-link:../reference-manual/create-jms-resource.html#GSRFM00040[`create-jms-resource`]::
-  Creates a JMS connection factory resource or JMS destination resource.
-  Supported in remote mode only. Supported in remote mode only. For
-  procedural information in this guide, see link:jms.html#giotd[To Create
-  a Connection Factory or Destination Resource].
-link:../reference-manual/delete-jmsdest.html#GSRFM00090[`delete-jmsdest`]::
-  Removes the specified JMS destination. Supported in remote mode only.
-  For procedural information in this guide, see link:jms.html#giouv[To
-  Delete a JMS Physical Destination].
-link:../reference-manual/delete-jms-host.html#GSRFM00091[`delete-jms-host`]::
-  Deletes a JMS host within the JMS service. Supported in remote mode
-  only. For procedural information in this guide, see
-  link:jms.html#gipbv[To Delete a JMS Host].
-link:../reference-manual/delete-jms-resource.html#GSRFM00092[`delete-jms-resource`]::
-  Deletes a JMS connection factory resource or JMS destination resource.
-  Supported in remote mode only. For procedural information in this
-  guide, see link:jms.html#giouw[To Delete a Connection Factory or
-  Destination Resource].
-link:../reference-manual/flush-jmsdest.html#GSRFM00136[`flush-jmsdest`]::
-  Purges the messages from a physical destination in the specified JMS
-  Service configuration of the specified target. Supported in remote
-  mode only. For procedural information in this guide, see
-  link:jms.html#giowx[To Purge Messages From a Physical Destination].
-link:../reference-manual/jms-ping.html#GSRFM00144[`jms-ping`]::
-  Checks if the JMS service (also known as the JMS provider) is up and
-  running. Supported in remote mode only. For procedural information in
-  this guide, see link:jms.html#gipnh[Troubleshooting the JMS Service].
-link:../reference-manual/list-jmsdest.html#GSRFM00175[`list-jmsdest`]::
-  Lists the JMS physical destinations. Supported in remote mode only.
-  For procedural information in this guide, see link:jms.html#gioyp[To
-  List JMS Physical Destinations].
-link:../reference-manual/list-jms-hosts.html#GSRFM00176[`list-jms-hosts`]::
-  Lists the existing JMS hosts. Supported in remote mode only. For
-  procedural information in this guide, see link:jms.html#gipbz[To List
-  JMS Hosts].
-link:../reference-manual/list-jms-resources.html#GSRFM00177[`list-jms-resources`]::
-  Lists the existing JMS connection factory or destination resources.
-  Supported in remote mode only. For procedural information in this
-  guide, see link:jms.html#giosx[To List JMS Resources].
-
-[[gitws]][[GSADG00616]][[jndi-subcommands]]
-
-JNDI Subcommands
-~~~~~~~~~~~~~~~~
-
-link:../reference-manual/create-custom-resource.html#GSRFM00022[`create-custom-resource`]::
-  Creates a custom JNDI resource. Supported in remote mode only. For
-  procedural information in this guide, see link:jndi.html#giowe[To
-  Create a Custom JNDI Resource].
-link:../reference-manual/create-jndi-resource.html#GSRFM00041[`create-jndi-resource`]::
-  Creates an external JNDI resource. Supported in remote mode only. For
-  procedural information in this guide, see link:jndi.html#gitxn[To
-  Register an External JNDI Resource].
-link:../reference-manual/delete-custom-resource.html#GSRFM00074[`delete-custom-resource`]::
-  Deletes a custom JNDI resource. Supported in remote mode only. For
-  procedural information in this guide, see link:jndi.html#gioxl[To
-  Delete a Custom JNDI Resource].
-link:../reference-manual/delete-jndi-resource.html#GSRFM00093[`delete-jndi-resource`]::
-  Deletes an external JNDI resource. Supported in remote mode only. For
-  procedural information in this guide, see link:jndi.html#gitvt[To
-  Delete an External JNDI Resource].
-link:../reference-manual/list-custom-resources.html#GSRFM00162[`list-custom-resources`]::
-  Lists the existing custom JNDI resources. Supported in remote mode
-  only. For procedural information in this guide, see
-  link:jndi.html#gioxb[To List Custom JNDI Resources].
-link:../reference-manual/list-jndi-entries.html#GSRFM00178[`list-jndi-entries`]::
-  Lists the entries in the JNDI tree. Supported in remote mode only. For
-  procedural information in this guide, see link:jndi.html#gitwc[To List
-  External JNDI Entries],
-link:../reference-manual/list-jndi-resources.html#GSRFM00179[`list-jndi-resources`]::
-  Lists the existing external JNDI resources. Supported in remote mode
-  only. For procedural information in this guide, see
-  link:jndi.html#gitvj[To List External JNDI Resources].
-
-[[gglsk]][[GSADG00617]][[jvm-subcommands]]
-
-JVM Subcommands
-~~~~~~~~~~~~~~~
-
-link:../reference-manual/create-jvm-options.html#GSRFM00042[`create-jvm-options`]::
-  Creates a JVM option in the Java configuration or profiler elements of
-  the `domain.xml` file. Supported in remote mode only. For procedural
-  information in this guide, see link:jvm.html#ggnes[To Create JVM
-  Options].
-link:../reference-manual/create-profiler.html#GSRFM00050[`create-profiler`]::
-  Creates a profiler element. Supported in remote mode only. For
-  procedural information in this guide, see link:jvm.html#ggneb[To Create
-  a Profiler].
-link:../reference-manual/delete-jvm-options.html#GSRFM00094[`delete-jvm-options`]::
-  Deletes the specified JVM option from the Java configuration or
-  profiler elements of the `domain.xml` file. Supported in remote mode
-  only. For procedural information in this guide, see
-  link:jvm.html#ggnfi[To Delete JVM Options].
-link:../reference-manual/delete-profiler.html#GSRFM00102[`delete-profiler`]::
-  Deletes the specified profiler element. Supported in remote mode only.
-  For procedural information in this guide, see link:jvm.html#ggnem[To
-  Delete a Profiler].
-link:../reference-manual/generate-jvm-report.html#GSRFM00138[`generate-jvm-report`]::
-  Generates a report showing the threads, classes, and memory for the
-  virtual machine that runs GlassFish Server. For procedural information
-  in this guide, see link:jvm.html#ggnbu[To Generate a JVM Report].
-link:../reference-manual/list-jvm-options.html#GSRFM00180[`list-jvm-options`]::
-  Lists the command-line options that are passed to the Java application
-  launcher when GlassFish Server is started. Supported in remote mode
-  only. For procedural information in this guide, see
-  link:jvm.html#ggnce[To List JVM Options].
-
-[[giuzl]][[GSADG00618]][[life-cycle-module-subcommands]]
-
-Life Cycle Module Subcommands
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-link:../reference-manual/create-lifecycle-module.html#GSRFM00043[`create-lifecycle-module`]::
-  Creates a new life cycle module. Supported in remote mode only. For
-  procedural information in this guide, see
-  link:lifecycle-modules.html#giuus[To Create a Life Cycle Module].
-link:../reference-manual/list-lifecycle-modules.html#GSRFM00181[`list-lifecycle-modules`]::
-  Lists life cycle modules. Supported in remote mode only. For
-  procedural information in this guide, see
-  link:lifecycle-modules.html#giuvh[To List Life Cycle Modules].
-link:../reference-manual/delete-lifecycle-module.html#GSRFM00095[`delete-lifecycle-module`]::
-  Deletes an existing life cycle module. Supported in remote mode only.
-  For procedural information in this guide, see
-  link:lifecycle-modules.html#giuux[To Delete a Life Cycle Module].
-
-[[gitxd]][[GSADG00619]][[logging-and-monitoring-subcommands]]
-
-Logging and Monitoring Subcommands
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-link:../reference-manual/collect-log-files.html#GSRFM00007[`collect-log-files`]::
-  Collects all available log files and creates a ZIP archive. Supported
-  in remote mode only. For procedural information in this guide, see
-  link:logging.html#gklbi[To Collect Log Files into a ZIP Archive].
-link:../reference-manual/disable-monitoring.html#GSRFM00120[`disable-monitoring`]::
-  Disables the monitoring service. Supported in remote mode only. For
-  procedural information in this guide, see link:monitoring.html#gglcu[To
-  Disable Monitoring].
-link:../reference-manual/enable-monitoring.html#GSRFM00128[`enable-monitoring`]::
-  Enables the monitoring service. Supported in remote mode only. For
-  procedural information in this guide, see link:monitoring.html#ablvr[To
-  Enable Monitoring].
-link:../reference-manual/list-log-attributes.html#GSRFM00182[`list-log-attributes`]::
-  Lists log file attributes. Supported in remote mode only. For
-  procedural information in this guide, see
-  link:logging.html#gklmn[Configuring the Logging Service].
-link:../reference-manual/list-log-levels.html#GSRFM00183[`list-log-levels`]::
-  Lists the existing loggers. Supported in remote mode only. For
-  procedural information in this guide, see link:logging.html#gjirr[To
-  List Log Levels].
-link:../reference-manual/list-loggers.html#GSRFM869[`list-loggers`]::
-  Lists all public loggers in your distribution of GlassFish Server Open
-  Source Edition. Internal loggers are not listed. For procedural
-  information in this guide, see link:logging.html#CEGGICGF[To List
-  Loggers].
-link:../reference-manual/monitor.html#GSRFM00212[`monitor`]::
-  Displays monitoring information for the common GlassFish Server
-  resources. Supported in remote mode only. For procedural information
-  in this guide, see link:monitoring.html#gelol[To View Common Monitoring
-  Data].
-link:../reference-manual/rotate-log.html#GSRFM00224[`rotate-log`]::
-  Rotates the `server.log` file and stores the old data in a
-  time-stamped file. Supported in remote mode only. For procedural
-  information in this guide, see link:logging.html#gkmau[To Rotate Log
-  Files Manually].
-link:../reference-manual/set-log-attributes.html#GSRFM00227[`set-log-attributes`]::
-  Sets log file attributes. Supported in remote mode only. For
-  procedural information in this guide, see
-  link:logging.html#gklmn[Configuring the Logging Service].
-link:../reference-manual/set-log-file-format.html#GSRFM879[`set-log-file-format`]::
-  Sets the formatter used to format log records in log files. For
-  procedural information in this guide, see
-  link:logging.html#CEGDJEBG[Setting the Log File Format].
-link:../reference-manual/set-log-levels.html#GSRFM00228[`set-log-levels`]::
-  Sets the log level for a module. Supported in remote mode only. For
-  procedural information in this guide, see
-  link:logging.html#gklml[Setting Log Levels].
-
-[[giusq]][[GSADG00620]][[orb-subcommands]]
-
-ORB Subcommands
-~~~~~~~~~~~~~~~
-
-link:../reference-manual/create-iiop-listener.html#GSRFM00032[`create-iiop-listener`]::
-  Creates an IIOP listener. Supported in remote mode only. For
-  procedural information in this guide, see link:orb.html#gioyo[To Create
-  an IIOP Listener].
-link:../reference-manual/delete-iiop-listener.html#GSRFM00084[`delete-iiop-listener`]::
-  Deletes an IIOP listener. Supported in remote mode only. For
-  procedural information in this guide, see link:orb.html#giowj[To Delete
-  an IIOP Listener].
-link:../reference-manual/list-iiop-listeners.html#GSRFM00169[`list-iiop-listeners`]::
-  Lists the existing IIOP listeners. Supported in remote mode only. For
-  procedural information in this guide, see link:orb.html#giowc[To List
-  IIOP Listeners].
-
-[[giuqr]][[GSADG00621]][[thread-pool-subcommands]]
-
-Thread Pool Subcommands
-~~~~~~~~~~~~~~~~~~~~~~~
-
-link:../reference-manual/create-threadpool.html#GSRFM00060[`create-threadpool`]::
-  Creates a new thread pool. Supported in remote mode only. For
-  procedural information in this guide, see
-  link:threadpools.html#ggkwj[To Create a Thread Pool].
-link:../reference-manual/delete-threadpool.html#GSRFM00111[`delete-threadpool`]::
-  Deletes the specified thread pool. Supported in remote mode only. For
-  procedural information in this guide, see
-  link:threadpools.html#ggkwy[To Delete a Thread Pool].
-link:../reference-manual/list-threadpools.html#GSRFM00204[`list-threadpools`]::
-  Lists the existing thread pools. Supported in remote mode only. For
-  procedural information in this guide, see
-  link:threadpools.html#giuff[To List Thread Pools].
-
-[[gitxi]][[GSADG00622]][[transaction-service-subcommands]]
-
-Transaction Service Subcommands
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-link:../reference-manual/freeze-transaction-service.html#GSRFM00137[`freeze-transaction-service`]::
-  Freezes the transaction subsystem during which time all the in-flight
-  transactions are suspended. Supported in remote mode only. For
-  procedural information, see link:transactions.html#giufn[To Stop the
-  Transaction Service].
-link:../reference-manual/recover-transactions.html#GSRFM00216[`recover-transactions`]::
-  Manually recovers pending transactions. Supported in remote mode only.
-  For procedural information, see link:transactions.html#giuhe[To
-  Manually Recover Transactions].
-link:../reference-manual/rollback-transaction.html#GSRFM00223[`rollback-transaction`]::
-  Rolls back the named transaction. Supported in remote mode only. For
-  procedural information, see link:transactions.html#giugk[To Roll Back a
-  Transaction].
-link:../reference-manual/unfreeze-transaction-service.html#GSRFM00245[`unfreeze-transaction-service`]::
-  Resumes all the suspended in-flight transactions. Invoke this
-  subcommand on an already frozen transaction. Supported in remote mode
-  only. For procedural information, see link:transactions.html#giuet[To
-  Restart the Transaction Service].
-
-
diff --git a/docs/administration-guide/src/main/jbake/content/batch.adoc b/docs/administration-guide/src/main/jbake/content/batch.adoc
deleted file mode 100644
index 90f32d5..0000000
--- a/docs/administration-guide/src/main/jbake/content/batch.adoc
+++ /dev/null
@@ -1,337 +0,0 @@
-type=page
-status=published
-title=Administering Batch Jobs
-next=part-res-and-svcs-admin.html
-prev=lifecycle-modules.html
-~~~~~~
-Administering Batch Jobs
-========================
-
-[[GSADG1077]][[sthref66]]
-
-
-[[administering-batch-jobs]]
-10 Administering Batch Jobs
----------------------------
-
-This chapter provides procedures for administering batch jobs in the
-GlassFish Server environment by using the `asadmin` command-line
-utility.
-
-The following topics are addressed here:
-
-* link:#BABCHGJJ[About Batch Jobs]
-* link:#BABIHIGA[Viewing Batch Jobs]
-* link:#BABBFFIG[Configuring the Batch Runtime]
-
-Instructions for accomplishing these tasks by using the Administration
-Console are contained in the Administration Console online help.
-
-[[BABCHGJJ]][[GSADG1078]][[about-batch-jobs]]
-
-About Batch Jobs
-~~~~~~~~~~~~~~~~
-
-GlassFish Server provides a batch runtime for the scheduling and
-execution of batch jobs. Batch jobs are typically long-running,
-bulk-oriented tasks that contain a series of steps and can be executed
-without user interaction. Examples include billing, report generation,
-data format conversion, and image processing.
-
-Batch applications submit jobs to the batch runtime and provide
-instructions about how and when to execute the steps. The batch runtime
-processes the steps as directed by job XML documents packaged with the
-applications and stores information about jobs in a job repository. In
-GlassFish Server, the job repository is a database
-
-For detailed information about batch jobs, batch processing, and the
-batch processing framework, see
-"https://javaee.github.io/tutorial/batch-processing.html[Batch
-Processing]" in The Java EE 8 Tutorial. Also see
-http://jcp.org/en/jsr/detail?id=352[Java Specification Request 352:
-Batch Applications for the Java Platform]
-(`http://jcp.org/en/jsr/detail?id=352`). The specification defines the
-programming model for batch applications and the runtime for scheduling
-and executing batch jobs.
-
-[[BABIHIGA]][[GSADG1079]][[viewing-batch-jobs]]
-
-Viewing Batch Jobs
-~~~~~~~~~~~~~~~~~~
-
-You can view detailed information about batch jobs, executions, and
-steps. Users who log in to the `asadmin` utility or to the
-Administration Console as administrator are the only users who can view
-details for all batch jobs submitted by all applications in the
-GlassFish Server environment.
-
-The following tasks are used to view information about batch jobs:
-
-* link:#BABIBFDJ[To List Batch Jobs]
-* link:#BABFBGJB[To List Batch Job Executions]
-* link:#BABGJIDD[To List Batch Job Steps]
-
-[[BABIBFDJ]][[GSADG1080]][[to-list-batch-jobs]]
-
-To List Batch Jobs
-^^^^^^^^^^^^^^^^^^
-
-Use the `list-batch-jobs` subcommand in remote mode to list batch jobs
-and job details.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List batch jobs by using the link:../reference-manual/list-jdbc-resources.html#GSRFM00174[`list-batch-jobs`]
-subcommand.
-
-[[GSADG1081]][[sthref67]]
-
-
-Example 10-1 Listing Batch Jobs
-
-This example lists batch jobs for the default server instance, `server`.
-Use `list-batch-jobs -l` to list additional details.
-
-[source,oac_no_warn]
-----
-asadmin> list-batch-jobs
-JOBNAME  INSTANCECOUNT 
-payroll  9
-bonus    6
-Command list-batch-jobs executed successfully.
-----
-
-[[GSADG1082]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-batch-jobs` at the command line.
-
-[[BABFBGJB]][[GSADG1083]][[to-list-batch-job-executions]]
-
-To List Batch Job Executions
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-When the batch runtime executes a job, the execution is given a unique
-execution ID. An execution ID is similar to a process ID. A new
-execution is created the first time a job is started and every time the
-existing execution is restarted.
-
-Use the `list-batch-job-executions` subcommand in remote mode to list
-batch job executions and execution details.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List batch job executions by using the
-link:../reference-manual/list-jdbc-resources.html#GSRFM00174[`list-batch-job-executions`] subcommand.
-
-[[GSADG1084]][[sthref68]]
-
-
-Example 10-2 Listing Batch Job Executions
-
-This example lists batch job executions for the default server instance,
-`server`, and displays specific details. Use
-`list-batch-job-executions -l` to list additional details.
-
-[source,oac_no_warn]
-----
-asadmin> list-batch-job-executions -o=jobname,executionid,batchstatus,exitstatus
-JOBNAME  EXECUTIONID  BATCHSTATUS  EXITSTATUS
-payroll  9            COMPLETED    COMPLETED
-bonus    6            FAILED       FAILED
-Command list-batch-job-executions executed successfully.
-----
-
-[[GSADG1085]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-batch-job-executions` at the command line.
-
-[[BABGJIDD]][[GSADG1086]][[to-list-batch-job-steps]]
-
-To List Batch Job Steps
-^^^^^^^^^^^^^^^^^^^^^^^
-
-A batch job consists of one or more steps. A step is an independent and
-sequential phase of a batch job.
-
-Use the `list-batch-job-steps` subcommand in remote mode to list steps
-and step details for a specific batch job execution.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the execution ID of an execution by using the
-`list-batch-job-executions` subcommand.
-3.  List steps for a specific batch job execution by using the
-link:../reference-manual/list-jdbc-resources.html#GSRFM00174[`list-batch-job-steps`] subcommand.
-
-[[GSADG1087]][[sthref69]]
-
-
-Example 10-3 Listing Batch Job Steps
-
-This example lists batch job steps and specific step details for a job
-execution with the execution ID of `7`. The target is the default server
-instance, `server`. Use `list-batch-job-steps -l` to list additional
-details.
-
-Some lines of output are omitted from this example for readability.
-
-[source,oac_no_warn]
-----
-asadmin> list-batch-job-steps o=stepname,stepid,batchstatus,stepmetrics 7
-STEPNAME   STEPID   BATCHSTATUS   STEPMETRICS
-prepare    7        COMPLETED     METRICNAME          VALUE
-                                  READ_COUNT          8
-                                  WRITE_COUNT         8
-                                  PROCESS_SKIP_COUNT  0
-process    8        COMPLETED     METRICNAME          VALUE
-                                  READ_COUNT          8
-                                  WRITE_COUNT         8
-                                  PROCESS_SKIP_COUNT  0
-...
-Command list-batch-job-steps executed successfully.
-----
-
-[[GSADG1088]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-batch-job-steps` at the command line.
-
-[[BABBFFIG]][[GSADG1089]][[configuring-the-batch-runtime]]
-
-Configuring the Batch Runtime
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The batch runtime uses a data source and a managed executor service to
-execute batch jobs. The data source stores information about current and
-past jobs, and the managed executor service provides threads to jobs.
-Batch runtime configuration data is stored in the `config` element in
-`domain.xml`.
-
-GlassFish Server provides a default data source and managed executor
-service for the execution of batch jobs. For the domain administration
-server (DAS), the default data source is `jdbc/__TimerPool` and the
-default managed executor service is
-`concurrent/__defaultManagedExecutorService`. If you create a standalone
-server instance or a standalone cluster, the default data source is
-`jdbc/__default`. You can configure the batch runtime to use different
-resources.
-
-For more information about data sources, see
-link:jdbc.html#ablih[Administering Database Connectivity]. For more
-information about managed executor services, see
-link:concurrent.html#DAFBHEDI[Configuring Managed Executor Services].
-
-The following tasks are used to view and configure the batch runtime:
-
-* link:#BABBGHCJ[To List the Batch Runtime Configuration]
-* link:#BABFEJAD[To Configure the Batch Runtime]
-
-[[BABBGHCJ]][[GSADG1090]][[to-list-the-batch-runtime-configuration]]
-
-To List the Batch Runtime Configuration
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `list-batch-runtime-configuration` subcommand in remote mode to
-display the configuration of the batch runtime.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Display the configuration of the batch runtime by using the
-link:../reference-manual/list-jdbc-resources.html#GSRFM00174[`list-batch-runtime-configuration`] subcommand.
-3.  If desired, use the `get` subcommand to view the attributes of the
-data source and managed executor service resources. +
-For example (output omitted): +
-[source,oac_no_warn]
-----
-asdmin> get resources.jdbc-resource.jdbc/__TimerPool.*
-...
-asdmin> get resources.managed-executor-service.concurrent/__defaultManagedExecutorService.*
-...
-----
-
-[[GSADG1091]][[sthref70]]
-
-
-Example 10-4 Listing the Batch Runtime Configuration
-
-This example lists the configuration of the batch runtime for the
-default server instance, `server`.
-
-[source,oac_no_warn]
-----
-asadmin> list-batch-runtime-configuration
-DATASOURCELOOKUPNAME     EXECUTORSERVICELOOKUPNAME
-jdbc/__TimerPool         concurrent/__defaultManagedExecutorService
-Command list-batch-runtime-configuration executed successfully.
-----
-
-[[GSADG1092]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-batch-runtime-configuration` at the command
-line.
-
-[[BABFEJAD]][[GSADG1093]][[to-configure-the-batch-runtime]]
-
-To Configure the Batch Runtime
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `set-batch-runtime-configuration` subcommand in remote mode to
-configure the batch runtime.
-
-
-[NOTE]
-=======================================================================
-
-Do not change the data source after the first batch job has been
-submitted to the batch runtime for execution. If the data source must be
-changed, stop and restart the domain and then make the change before any
-jobs are started or restarted. However, once the data source has been
-changed, information stored in the previous data source becomes
-inaccessible.
-
-The managed executor service can be changed after a batch job has been
-submitted to the batch runtime without affecting execution of the job.
-
-=======================================================================
-
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Configure the batch runtime by using the
-link:../reference-manual/list-jdbc-resources.html#GSRFM00174[`set-batch-runtime-configuration`] subcommand.
-
-[[GSADG1094]][[sthref71]]
-
-
-Example 10-5 Configuring the Batch Runtime
-
-This example configures the batch runtime for the default server
-instance, `server`, to use an existing managed executor service named
-`concurrent/Executor1`.
-
-[source,oac_no_warn]
-----
-asadmin> set-batch-runtime-configuration --executorservicelookupname concurrent/Executor1
-Command set-batch-runtime-configuration executed successfully.
-----
-
-[[GSADG1095]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help set-batch-runtime-configuration` at the command
-line.
-
-
diff --git a/docs/administration-guide/src/main/jbake/content/concurrent.adoc b/docs/administration-guide/src/main/jbake/content/concurrent.adoc
deleted file mode 100644
index 5aef2d7..0000000
--- a/docs/administration-guide/src/main/jbake/content/concurrent.adoc
+++ /dev/null
@@ -1,880 +0,0 @@
-type=page
-status=published
-title=Administering Concurrent Resources
-next=orb.html
-prev=http_https.html
-~~~~~~
-Administering Concurrent Resources
-==================================
-
-[[GSADG1108]][[sthref73]]
-
-
-[[administering-concurrent-resources]]
-14 Administering Concurrent Resources
--------------------------------------
-
-This chapter provides procedures for administering concurrent resources
-in the GlassFish Server environment by using the `asadmin` command-line
-utility.
-
-The following topics are addressed here:
-
-* link:#DAFGCCDI[About Concurrent Resources]
-* link:#DAFFGDCD[Default Concurrent Resources]
-* link:#DAFFCEEA[Configuring Context Services]
-* link:#DAFBAAIJ[Configuring Managed Thread Factories]
-* link:#DAFBHEDI[Configuring Managed Executor Services]
-* link:#DAFHJHCF[Configuring Managed Scheduled Executor Services]
-
-Instructions for accomplishing these tasks by using the Administration
-Console are contained in the Administration Console online help.
-
-[[DAFGCCDI]][[GSADG1109]][[about-concurrent-resources]]
-
-About Concurrent Resources
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Concurrent resources are managed objects that provide concurrency
-capabilities to Java EE applications. In GlassFish Server, you configure
-concurrent resources and make them available for use by application
-components such as servlets and EJBs. Concurrent resources are accessed
-through JNDI lookup or resource injection.
-
-Concurrent resources are resources of the following types:
-
-* Context services. See link:#DAFFCEEA[Configuring Context Services].
-* Managed thread factories. See link:#DAFBAAIJ[Configuring Managed
-Thread Factories].
-* Managed executor services. See link:#DAFBHEDI[Configuring Managed
-Executor Services].
-* Managed scheduled executor services. See link:#DAFHJHCF[Configuring
-Managed Scheduled Executor Services].
-
-For detailed information about concurrent resources, see
-"https://javaee.github.io/tutorial/concurrency-utilities.html[Concurrency
-Utilities]" in The Java EE 8 Tutorial. Also see
-http://jcp.org/en/jsr/detail?id=236[Java Specification Request 236:
-Concurrency Utilities for Java EE]
-(`http://jcp.org/en/jsr/detail?id=236`).
-
-[[DAFFGDCD]][[GSADG1110]][[default-concurrent-resources]]
-
-Default Concurrent Resources
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-When you create a concurrent resource, you specify a unique JNDI name
-for the resource. Applications use this name to access the resource.
-
-The Java EE standard specifies that certain default resources be made
-available to applications, and defines specific JNDI names for these
-default resources. GlassFish Server makes these names available through
-the use of logical JNDI names, which map Java EE standard JNDI names to
-specific GlassFish Server resources. For concurrent resources, the
-mappings are as follows:
-
-java:comp/DefaultContextService::
-  This Java EE standard name is mapped to the
-  `concurrent/__defaultContextService` resource.
-java:comp/DefaultManagedThreadFactory::
-  This Java EE standard name is mapped to the
-  `concurrent/__defaultManagedThreadFactory` resource.
-java:comp/DefaultManagedExecutorService::
-  This Java EE standard name is mapped to the
-  `concurrent/__defaultManagedExecutorService` resource.
-java:comp/DefaultManagedScheduledExecutorService::
-  This Java EE standard name is mapped to the
-  `concurrent/__defaultManagedScheduledExecutorService` resource.
-
-[[DAFFCEEA]][[GSADG1111]][[configuring-context-services]]
-
-Configuring Context Services
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Context services are used to create dynamic proxy objects that capture
-the context of a container and enable applications to run within that
-context at a later time. The context of the container is propagated to
-the thread executing the task.
-
-The following tasks are used to administer context service resources:
-
-* link:#DAFJACDI[To Create a Context Service]
-* link:#DAFDCFCB[To List Context Services]
-* link:#DAFBFICB[To Update a Context Service]
-* link:#DAFGGGEC[To Delete a Context Service]
-
-[[DAFJACDI]][[GSADG1112]][[to-create-a-context-service]]
-
-To Create a Context Service
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `create-context-service` subcommand in remote mode to create a
-context service resource.
-
-Because all JNDI names are in the `java:comp/env` subcontext, when
-specifying the JNDI name of a context service, use only the
-`concurrent/`name format. For example, `concurrent/Context1`.
-
-For more information about the default context service resource included
-with GlassFish Server, see link:#DAFFGDCD[Default Concurrent Resources].
-
-
-[NOTE]
-=======================================================================
-
-Creating a context service resource is a dynamic event and typically
-does not require server restart. Applications can use a resource as soon
-as it is created. However, if an application tried to use a resource
-before it was created, and that resource is created later, the
-application or the server must be restarted. Otherwise, the application
-will not be able to locate the resource.
-
-=======================================================================
-
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Create a context service by using the
-link:../reference-manual/create-jdbc-resource.html#GSRFM00037[`create-context-service`] subcommand.
-3.  If necessary, notify users that the new resource has been created.
-
-[[GSADG1113]][[sthref74]]
-
-
-Example 14-1 Creating a Context Service
-
-This example creates a context service resource named
-`concurrent/Context1`.
-
-[source,oac_no_warn]
-----
-asadmin> create-context-service concurrent/Context1
-Context service concurrent/Context1 created successfully.
-Command create-context-service executed successfully.
-----
-
-[[GSADG1114]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-context-service` at the command line.
-
-[[DAFDCFCB]][[GSADG1115]][[to-list-context-services]]
-
-To List Context Services
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `list-context-services` subcommand in remote mode to list the
-existing context service resources.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List context service resources by using the
-link:../reference-manual/list-jdbc-resources.html#GSRFM00174[`list-context-services`] subcommand.
-
-[[GSADG1116]][[sthref75]]
-
-
-Example 14-2 Listing Context Services
-
-This example lists context service resources on the default server
-instance, `server`.
-
-[source,oac_no_warn]
-----
-asadmin> list-context-services
-concurrent/__defaultContextService
-concurrent/Context1
-concurrent/Context2
-Command list-context-services executed successfully.
-----
-
-[[GSADG1117]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-context-services` at the command line.
-
-[[DAFBFICB]][[GSADG1118]][[to-update-a-context-service]]
-
-To Update a Context Service
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can change all of the settings for an existing context service
-resource except its JNDI name. Use the `get` and `set` subcommands to
-view and change the values of the context service attributes.
-
-
-[NOTE]
-=======================================================================
-
-When a resource is updated, the existing resource is shut down and
-recreated. If an application used the resource prior to the update, the
-application or the server must be restarted.
-
-=======================================================================
-
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the context service resources by using the
-link:../reference-manual/list-jdbc-connection-pools.html#GSRFM00173[`list-context-services`] subcommand.
-3.  View the attributes of a specific context service by using the `get`
-subcommand. +
-For example: +
-[source,oac_no_warn]
-----
-asdmin> get resources.context-service.concurrent/Context1.*
-----
-4.  Set an attribute of the context service by using the `set`
-subcommand. +
-For example: +
-[source,oac_no_warn]
-----
-asdmin> set resources.context-service.concurrent/Context1.deployment-order=120
-----
-
-[[DAFGGGEC]][[GSADG1119]][[to-delete-a-context-service]]
-
-To Delete a Context Service
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `delete-context-service` subcommand in remote mode to delete an
-existing context service. Deleting a context service is a dynamic event
-and does not require server restart.
-
-Before deleting a context service resource, all associations to the
-resource must be removed.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the context service resources by using the
-link:../reference-manual/list-jdbc-connection-pools.html#GSRFM00173[`list-context-services`] subcommand.
-3.  If necessary, notify users that the context service is being
-deleted.
-4.  Delete the context service by using the
-link:../reference-manual/delete-jdbc-connection-pool.html#GSRFM00088[`delete-context-service`] subcommand.
-
-[[GSADG1120]][[sthref76]]
-
-
-Example 14-3 Deleting a Context Service
-
-This example deletes the context service resource named
-`concurrent/Context1`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-context-service concurrent/Context1
-Context service concurrent/Context1 deleted successfully.
-Command delete-context-service executed successfully.
-----
-
-[[GSADG1121]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-context-service` at the command line.
-
-[[DAFBAAIJ]][[GSADG1122]][[configuring-managed-thread-factories]]
-
-Configuring Managed Thread Factories
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Managed thread factories are used by applications to create managed
-threads on demand. The threads are started and managed by the container.
-The context of the container is propagated to the thread executing the
-task.
-
-The following tasks are used to administer managed thread factory
-resources:
-
-* link:#DAFGFAEI[To Create a Managed Thread Factory]
-* link:#DAFDGEGE[To List Managed Thread Factories]
-* link:#DAFDIJIH[To Update a Managed Thread Factory]
-* link:#DAFCEDEI[To Delete a Managed Thread Factory]
-
-[[DAFGFAEI]][[GSADG1123]][[to-create-a-managed-thread-factory]]
-
-To Create a Managed Thread Factory
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `create-managed-thread-factory` subcommand in remote mode to
-create a managed thread factory resource.
-
-Because all JNDI names are in the `java:comp/env` subcontext, when
-specifying the JNDI name of a managed thread factory, use only the
-`concurrent/`name format. For example, `concurrent/Factory1`.
-
-For more information about the default managed thread factory resource
-included with GlassFish Server, see link:#DAFFGDCD[Default Concurrent
-Resources].
-
-
-[NOTE]
-=======================================================================
-
-Creating a managed thread factory resource is a dynamic event and
-typically does not require server restart. Applications can use a
-resource as soon as it is created. However, if an application tried to
-use a resource before it was created, and that resource is created
-later, the application or the server must be restarted. Otherwise, the
-application will not be able to locate the resource.
-
-=======================================================================
-
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Create a managed thread factory by using the
-link:../reference-manual/create-jdbc-resource.html#GSRFM00037[`create-managed-thread-factory`] subcommand.
-3.  If necessary, notify users that the new resource has been created.
-
-[[GSADG1124]][[sthref77]]
-
-
-Example 14-4 Creating a Managed Thread Factory
-
-This example creates a managed thread factory resource named
-`concurrent/Factory1`.
-
-[source,oac_no_warn]
-----
-asadmin> create-managed-thread-factory concurrent/Factory1
-Managed thread factory concurrent/Factory1 created successfully.
-Command create-managed-thread-factory executed successfully.
-----
-
-[[GSADG1125]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-managed-thread-factory` at the command line.
-
-[[DAFDGEGE]][[GSADG1126]][[to-list-managed-thread-factories]]
-
-To List Managed Thread Factories
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `list-managed-thread-factories` subcommand in remote mode to
-list the existing managed thread factory resources.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List managed thread factory resources by using the
-link:../reference-manual/list-jdbc-resources.html#GSRFM00174[`list-managed-thread-factories`] subcommand.
-
-[[GSADG1127]][[sthref78]]
-
-
-Example 14-5 Listing Managed Thread Factories
-
-This example lists managed thread factory resources on the default
-server instance, `server`.
-
-[source,oac_no_warn]
-----
-asadmin> list-managed-thread-factories
-concurrent/__defaultManagedThreadFactory
-concurrent/Factory1
-concurrent/Factory2
-Command list-managed-thread-factories executed successfully.
-----
-
-[[GSADG1128]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-managed-thread-factories` at the command line.
-
-[[DAFDIJIH]][[GSADG1129]][[to-update-a-managed-thread-factory]]
-
-To Update a Managed Thread Factory
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can change all of the settings for an existing managed thread
-factory resource except its JNDI name. Use the `get` and `set`
-subcommands to view and change the values of the managed thread factory
-attributes.
-
-
-[NOTE]
-=======================================================================
-
-When a resource is updated, the existing resource is shut down and
-recreated. If applications used the resource prior to the update, the
-application or the server must be restarted.
-
-=======================================================================
-
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the managed thread factory resources by using the
-link:../reference-manual/list-jdbc-connection-pools.html#GSRFM00173[`list-managed-thread-factories`] subcommand.
-3.  View the attributes of a managed thread factory by using the `get`
-subcommand. +
-For example: +
-[source,oac_no_warn]
-----
-asdmin> get resources.managed-thread-factory.concurrent/Factory1.*
-----
-4.  Set an attribute of the managed thread factory by using the `set`
-subcommand. +
-For example: +
-[source,oac_no_warn]
-----
-asdmin> set resources.managed-thread-factory.concurrent/Factory1.deployment-order=120
-----
-
-[[DAFCEDEI]][[GSADG1130]][[to-delete-a-managed-thread-factory]]
-
-To Delete a Managed Thread Factory
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `delete-managed-thread-factory` subcommand in remote mode to
-delete an existing managed thread factory. Deleting a managed thread
-factory is a dynamic event and does not require server restart.
-
-Before deleting a managed thread factory resource, all associations to
-the resource must be removed.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the managed thread factory resources by using the
-link:../reference-manual/list-jdbc-connection-pools.html#GSRFM00173[`list-managed-thread-factories`] subcommand.
-3.  If necessary, notify users that the managed thread factory is being
-deleted.
-4.  Delete the managed thread factory by using the
-link:../reference-manual/delete-jdbc-connection-pool.html#GSRFM00088[`delete-managed-thread-factory`] subcommand.
-
-[[GSADG1131]][[sthref79]]
-
-
-Example 14-6 Deleting a Managed Thread Factory
-
-This example deletes the managed thread factory resource named
-`concurrent/Factory1`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-managed-thread-factory concurrent/Factory1
-Managed thread factory concurrent/Factory1 deleted successfully.
-Command delete-managed-thread-factory executed successfully.
-----
-
-[[GSADG1132]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-managed-thread-factory` at the command line.
-
-[[DAFBHEDI]][[GSADG1133]][[configuring-managed-executor-services]]
-
-Configuring Managed Executor Services
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Managed executor services are used by applications to execute submitted
-tasks asynchronously. Tasks are executed on threads that are started and
-managed by the container. The context of the container is propagated to
-the thread executing the task.
-
-The following tasks are used to administer managed executor service
-resources:
-
-* link:#DAFJIEGA[To Create a Managed Executor Service]
-* link:#DAFIJDAE[To List Managed Executor Services]
-* link:#DAFICEJF[To Update a Managed Executor Service]
-* link:#DAFDAGAD[To Delete a Managed Executor Service]
-
-[[DAFJIEGA]][[GSADG1134]][[to-create-a-managed-executor-service]]
-
-To Create a Managed Executor Service
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `create-managed-executor-service` subcommand in remote mode to
-create a managed executor service resource.
-
-Because all JNDI names are in the `java:comp/env` subcontext, when
-specifying the JNDI name of a managed executor service, use only the
-`concurrent/`name format. For example, `concurrent/Executor1`.
-
-For more information about the default managed executor service resource
-included with GlassFish Server, see link:#DAFFGDCD[Default Concurrent
-Resources].
-
-
-[NOTE]
-=======================================================================
-
-Creating a managed executor service resource is a dynamic event and
-typically does not require server restart. Applications can use a
-resource as soon as it is created. However, if an application tried to
-use a resource before it was created, and that resource is created
-later, the application or the server must be restarted. Otherwise, the
-application will not be able to locate the resource.
-
-=======================================================================
-
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Create a managed executor service by using the
-link:../reference-manual/create-jdbc-resource.html#GSRFM00037[`create-managed-executor-service`] subcommand.
-3.  If necessary, notify users that the new resource has been created.
-
-[[GSADG1135]][[sthref80]]
-
-
-Example 14-7 Creating a Managed Executor Service
-
-This example creates a managed executor service resource named
-`concurrent/Executor1`.
-
-[source,oac_no_warn]
-----
-asadmin> create-managed-executor-service concurrent/Executor1
-Managed executor service concurrent/Executor1 created successfully.
-Command create-managed-executor-service executed successfully.
-----
-
-[[GSADG1136]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-managed-executor-service` at the command
-line.
-
-[[DAFIJDAE]][[GSADG1137]][[to-list-managed-executor-services]]
-
-To List Managed Executor Services
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `list-managed-executor-services` subcommand in remote mode to
-list the existing managed executor service resources.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List managed executor service resources by using the
-link:../reference-manual/list-jdbc-resources.html#GSRFM00174[`list-managed-executor-services`] subcommand.
-
-[[GSADG1138]][[sthref81]]
-
-
-Example 14-8 Listing Managed Executor Services
-
-This example lists managed executor service resources on the default
-server instance, `server`.
-
-[source,oac_no_warn]
-----
-asadmin> list-managed-executor-services
-concurrent/__defaultManagedExecutorService
-concurrent/Executor1
-concurrent/Executor2
-Command list-managed-executor-services executed successfully.
-----
-
-[[GSADG1139]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-managed-executor-services` at the command
-line.
-
-[[DAFICEJF]][[GSADG1140]][[to-update-a-managed-executor-service]]
-
-To Update a Managed Executor Service
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can change all of the settings for an existing managed executor
-service resource except its JNDI name. Use the `get` and `set`
-subcommands to view and change the values of the managed executor
-service attributes.
-
-
-[NOTE]
-=======================================================================
-
-When a resource is updated, the existing resource is shut down and
-recreated. If applications used the resource prior to the update, the
-application or the server must be restarted.
-
-=======================================================================
-
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the managed executor service resources by using the
-link:../reference-manual/list-jdbc-connection-pools.html#GSRFM00173[`list-managed-executor-services`] subcommand.
-3.  View the attributes of a managed executor service by using the `get`
-subcommand. +
-For example: +
-[source,oac_no_warn]
-----
-asdmin> get resources.managed-executor-service.concurrent/Executor1.*
-----
-4.  Set an attribute of the managed executor service by using the `set`
-subcommand. +
-For example: +
-[source,oac_no_warn]
-----
-asdmin> set resources.managed-executor-service.concurrent/Executor1.deployment-order=120
-----
-
-[[DAFDAGAD]][[GSADG1141]][[to-delete-a-managed-executor-service]]
-
-To Delete a Managed Executor Service
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `delete-managed-executor-service` subcommand in remote mode to
-delete an existing managed executor service. Deleting a managed executor
-service is a dynamic event and does not require server restart.
-
-Before deleting a managed executor service resource, all associations to
-the resource must be removed.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the managed executor service resources by using the
-link:../reference-manual/list-jdbc-connection-pools.html#GSRFM00173[`list-managed-executor-services`] subcommand.
-3.  If necessary, notify users that the managed executor service is
-being deleted.
-4.  Delete the managed executor service by using the
-link:../reference-manual/delete-jdbc-connection-pool.html#GSRFM00088[`delete-managed-executor-service`] subcommand.
-
-[[GSADG1142]][[sthref82]]
-
-
-Example 14-9 Deleting a Managed Executor Service
-
-This example deletes the managed executor service resource named
-`concurrent/Executor1`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-managed-executor-service concurrent/Executor1
-Managed executor service concurrent/Executor1 deleted successfully.
-Command delete-managed-executor-service executed successfully.
-----
-
-[[GSADG1143]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-managed-executor-service` at the command
-line.
-
-[[DAFHJHCF]][[GSADG1144]][[configuring-managed-scheduled-executor-services]]
-
-Configuring Managed Scheduled Executor Services
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Managed scheduled executor services are used by applications to execute
-submitted tasks asynchronously at specific times. Tasks are executed on
-threads that are started and managed by the container. The context of
-the container is propagated to the thread executing the task.
-
-The following tasks are used to administer managed scheduled executor
-service resources:
-
-* link:#DAFFGDGG[To Create a Managed Scheduled Executor Service]
-* link:#DAFJBADD[To List Managed Scheduled Executor Services]
-* link:#DAFGEBEI[To Update a Managed Scheduled Executor Service]
-* link:#DAFEBEGC[To Delete a Managed Scheduled Executor Service]
-
-[[DAFFGDGG]][[GSADG1145]][[to-create-a-managed-scheduled-executor-service]]
-
-To Create a Managed Scheduled Executor Service
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `create-managed-scheduled-executor-service` subcommand in remote
-mode to create a managed scheduled executor service resource.
-
-Because all JNDI names are in the `java:comp/env` subcontext, when
-specifying the JNDI name of a managed scheduled executor service, use
-only the `concurrent/`name format. For example,
-`concurrent/ScheduledExecutor1`.
-
-For more information about the default managed scheduled executor
-service resource included with GlassFish Server, see
-link:#DAFFGDCD[Default Concurrent Resources].
-
-
-[NOTE]
-=======================================================================
-
-Creating a managed scheduled executor service resource is a dynamic
-event and typically does not require server restart. Applications can
-use a resource as soon as it is created. However, if an application
-tried to use a resource before it was created, and that resource is
-created later, the application or the server must be restarted.
-Otherwise, the application will not be able to locate the resource.
-
-=======================================================================
-
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Create a managed scheduled executor service by using the
-link:../reference-manual/create-jdbc-resource.html#GSRFM00037[`create-managed-scheduled-executor-service`]
-subcommand.
-3.  If necessary, notify users that the new resource has been created.
-
-[[GSADG1146]][[sthref83]]
-
-
-Example 14-10 Creating a Managed Scheduled Executor Service
-
-This example creates a managed scheduled executor service resource named
-`concurrent/ScheduledExecutor1`.
-
-[source,oac_no_warn]
-----
-asadmin> create-managed-scheduled-executor-service concurrent/ScheduledExecutor1
-Managed scheduled executor service concurrent/ScheduledExecutor1 created successfully.
-Command create-managed-scheduled-executor-service executed successfully.
-----
-
-[[GSADG1147]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-managed-scheduled-executor-service` at the
-command line.
-
-[[DAFJBADD]][[GSADG1148]][[to-list-managed-scheduled-executor-services]]
-
-To List Managed Scheduled Executor Services
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `list-managed-scheduled-executor-services` subcommand in remote
-mode to list the existing managed scheduled executor service resources.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List managed scheduled executor service resources by using the
-link:../reference-manual/list-jdbc-resources.html#GSRFM00174[`list-managed-scheduled-executor-services`] subcommand.
-
-[[GSADG1149]][[sthref84]]
-
-
-Example 14-11 Listing Managed Scheduled Executor Services
-
-This example lists managed scheduled executor service resources on the
-default server instance, `server`.
-
-[source,oac_no_warn]
-----
-asadmin> list-managed-scheduled-executor-services
-concurrent/__defaultManagedScheduledExecutorService
-concurrent/ScheduledExecutor1
-concurrent/ScheduledExecutor2
-Command list-managed-scheduled-executor-services executed successfully.
-----
-
-[[GSADG1150]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-managed-scheduled-executor-services` at the
-command line.
-
-[[DAFGEBEI]][[GSADG1151]][[to-update-a-managed-scheduled-executor-service]]
-
-To Update a Managed Scheduled Executor Service
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can change all of the settings for an existing managed scheduled
-executor service resource except its JNDI name. Use the `get` and `set`
-subcommands to view and change the values of the managed scheduled
-executor service attributes.
-
-
-[NOTE]
-=======================================================================
-
-When a resource is updated, the existing resource is shut down and
-recreated. If applications used the resource prior to the update, the
-application or the server must be restarted.
-
-=======================================================================
-
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the managed scheduled executor service resources by using the
-link:../reference-manual/list-jdbc-connection-pools.html#GSRFM00173[`list-managed-scheduled-executor-services`] subcommand.
-3.  View the attributes of a managed scheduled executor service by using
-the `get` subcommand. +
-For example: +
-[source,oac_no_warn]
-----
-asdmin> get resources.managed-scheduled-executor-service.concurrent/ScheduledExecutor1.*
-----
-4.  Set an attribute of the managed scheduled executor service by using
-the `set` subcommand. +
-For example: +
-[source,oac_no_warn]
-----
-asdmin> set resources.managed-scheduled-executor-service.concurrent/ScheduledExecutor1.deployment-order=120
-----
-
-[[DAFEBEGC]][[GSADG1152]][[to-delete-a-managed-scheduled-executor-service]]
-
-To Delete a Managed Scheduled Executor Service
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `delete-managed-scheduled-executor-service` subcommand in remote
-mode to delete an existing managed scheduled executor service. Deleting
-a managed scheduled executor service is a dynamic event and does not
-require server restart.
-
-Before deleting a managed scheduled executor service resource, all
-associations to the resource must be removed.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the managed scheduled executor service resources by using the
-link:../reference-manual/list-jdbc-connection-pools.html#GSRFM00173[`list-managed-scheduled-executor-service`] subcommand.
-3.  If necessary, notify users that the managed scheduled executor
-service is being deleted.
-4.  Delete the managed scheduled executor service by using the
-link:../reference-manual/delete-jdbc-connection-pool.html#GSRFM00088[`delete-managed-scheduled-executor-service`]
-subcommand.
-
-[[GSADG1153]][[sthref85]]
-
-
-Example 14-12 Deleting a Managed Scheduled Executor Service
-
-This example deletes the managed scheduled executor service resource
-named `concurrent/ScheduledExecutor1`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-managed-scheduled-executor-service concurrent/ScheduledExecutor1
-Managed scheduled executor service concurrent/ScheduledExecutor1 deleted successfully.
-Command delete-managed-scheduled-executor-service executed successfully.
-----
-
-[[GSADG1154]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-managed-scheduled-executor-service` at the
-command line.
-
-
diff --git a/docs/administration-guide/src/main/jbake/content/connectors.adoc b/docs/administration-guide/src/main/jbake/content/connectors.adoc
deleted file mode 100644
index 64e395c..0000000
--- a/docs/administration-guide/src/main/jbake/content/connectors.adoc
+++ /dev/null
@@ -1,1232 +0,0 @@
-type=page
-status=published
-title=Administering EIS Connectivity
-next=http_https.html
-prev=jdbc.html
-~~~~~~
-Administering EIS Connectivity
-==============================
-
-[[GSADG00016]][[abllp]]
-
-
-[[administering-eis-connectivity]]
-12 Administering EIS Connectivity
----------------------------------
-
-This chapter provides information and procedures for administering
-connections to enterprise information system (EIS) data in the Oracle
-GlassFish Server 5.0 environment by using the `asadmin` command-line
-utility.
-
-
-[NOTE]
-=======================================================================
-
-If you installed the Web Profile, connector modules that use only
-outbound communication features and work-management that does not
-involve inbound communication features are supported. Other connector
-features are supported only in the Full Platform Profile.
-
-=======================================================================
-
-
-The following topics are addressed here:
-
-* link:#abllq[About EIS Connectivity]
-* link:#ablls[Administering Connector Connection Pools]
-* link:#abllx[Administering Connector Resources]
-* link:#giope[Administering the Resource Adapter Configuration]
-* link:#gitxy[Administering Connector Security Maps]
-* link:#giohl[Administering Connector Work Security Maps]
-* link:#ablmc[Administering Administered Objects]
-
-Instructions for accomplishing the tasks in this chapter by using the
-Administration Console are contained in the Administration Console
-online help.
-
-For information about database connectivity, see
-link:jdbc.html#ablih[Administering Database Connectivity].
-
-[[abllq]][[GSADG00580]][[about-eis-connectivity]]
-
-About EIS Connectivity
-~~~~~~~~~~~~~~~~~~~~~~
-
-Enterprise information system (EIS) refers to any system that holds the
-data of an organization. It can be a mainframe, a messaging system, a
-database system, or an application. Connection resources are used by
-applications and modules to access EIS software.)
-
-The key elements of EIS connectivity are the following:
-
-* Connector Module. A connector module, also called a resource adapter,
-is a Java EE component that enables applications to interact with EIS
-software. A connector module is used by GlassFish Server to implement
-Java Message Service (JMS). Like other Java EE modules, a connector
-module is installed when it is deployed. For instructions on creating a
-connector module, see "link:../application-development-guide/connectors.html#GSDVG00013[Developing Connectors]" in
-GlassFish Server Open Source Edition Application Development Guide.
-* Connector Connection Pool. A connector connection pool is a group of
-reusable connections for a particular EIS. A connector connection pool
-is created when you specify the connector module that is associated with
-the pool. For administration procedures, see link:#ablls[Administering
-Connector Connection Pools].
-* Connector Resource. A connector resource is a program object that
-provides an application with a connection to an EIS. A connector
-resource is created when you specify its JNDI name and its associated
-connection pool. The JNDI name of a connector resource for an EIS is
-usually in the `java:comp/env/`eis-specific subcontext. For
-administration procedures, see link:#abllx[Administering Connector
-Resources].
-* Connector Module Configuration. A connector module configuration is
-the information that resides in the domain configuration file
-(`domain.xml`) for the particular connector module (resource adapter).
-For administration procedures, see link:#giope[Administering the
-Resource Adapter Configuration].
-* Connector Security Map. A connector security map associates the caller
-identity of the application (principal or user group) to a suitable EIS
-principal or group. For administration procedures, see
-link:#gitxy[Administering Connector Security Maps].
-* Connector Work Security Map. A connector work security map associates
-the caller identity of the work submitted by the connector module
-(resource adapter) EIS principal or EIS user group to a suitable
-principal or user group in the GlassFish Server security domain. For
-administration procedures, see link:#giohl[Administering Connector Work
-Security Maps].
-* Administered Object. An administered object provides specialized
-functionality for an application, such as providing access to a parser
-that is specific to the connector module and its associated EIS. For
-administration procedures, see link:#ablmc[Administering Administered
-Objects].
-
-At runtime, the following sequence occurs when an application connects
-to an EIS:
-
-1.  The application gets the connector resource (data source) associated
-with the EIS by making a call through the JNDI API. +
-Using the JNDI name of the connector resource, the naming and directory
-service locates the resource. Each EIS resource specifies a connector
-connection pool.
-2.  Using the connector resource, the application gets an EIS
-connection. +
-GlassFish Server retrieves a physical connection from the connection
-pool that corresponds to the EIS resource. The pool defines connection
-attributes such as the EIS name, user name, and password.
-3.  After the EIS connection is established, the application can read,
-modify, and add data to the EIS. +
-The application accesses the EIS information by making calls to the JMS
-API.
-4.  When the application is finished accessing the EIS, the application
-closes the connection and returns the connection to the connection pool.
-
-[[ablls]][[GSADG00581]][[administering-connector-connection-pools]]
-
-Administering Connector Connection Pools
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-After a connector module has been deployed, you are ready to create a
-connector connection pool for it.
-
-The following topics are addressed here:
-
-* link:#gioce[To Create a Connector Connection Pool]
-* link:#giocg[To List Connector Connection Pools]
-* link:#gjiqz[To Connect to (Ping) or Reset (Flush) a Connector
-Connection Pool]
-* link:#gioti[To Update a Connector Connection Pool]
-* link:#giocp[To Delete a Connector Connection Pool]
-
-[[gioce]][[GSADG00431]][[to-create-a-connector-connection-pool]]
-
-To Create a Connector Connection Pool
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `create-connector-connection-pool` subcommand in remote mode to
-create a connector connection pool for a deployed connector module. When
-you are building the connector connection pool, certain data specific to
-the EIS will be required. The value in the mandatory
-`--connectiondefintion` option provides the EIS info.
-
-Multiple connector resources can specify a single connection pool.
-
-Creating a connector connection pool is a dynamic event and does not
-require server restart. However, there are some parameters that do
-require server restart. See link:overview.html#ghciy[Configuration
-Changes That Require Restart].
-
-[[GSADG968]]
-
-Before You Begin
-
-Before creating the connector connection pool, the connector must be
-installed.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Create the connector connection pool by using the
-link:../reference-manual/create-connector-connection-pool.html#GSRFM00018[`create-connector-connection-pool`] subcommand. +
-Information about properties for the subcommand is included in this help
-page.
-3.  If needed, restart the server. +
-Some properties require server restart. See
-link:overview.html#ghciy[Configuration Changes That Require Restart]. If
-your server needs to be restarted, see link:domains.html#ginqj[To Restart
-a Domain].
-4.  You can verify that a connection pool is usable by using the
-`ping-connection-pool` subcommand. +
-For instructions, see link:jdbc.html#ggnwn[To Contact (Ping) a Connection
-Pool].
-
-[[GSADG00223]][[giocc]]
-
-
-Example 12-1 Creating a Connector Connection Pool
-
-This example creates the new `jms/qConnPool` pool for the
-`jakarta.jms.QueueConnectionFactory` connector module.
-
-[source,oac_no_warn]
-----
-asadmin> create-connector-connection-pool --steadypoolsize 20 --maxpoolsize 100 
---poolresize 2 --maxwait 60000 --raname jmsra --connectiondefinition 
-jakarta.jms.QueueConnectionFactory jms/qConnPool
-
-Command create-connector-connection-pool executed successfully
-----
-
-[[GSADG969]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-connector-connection-pool` at the command
-line.
-
-[[giocg]][[GSADG00432]][[to-list-connector-connection-pools]]
-
-To List Connector Connection Pools
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `list-connector-connection-pools` subcommand in remote mode to
-list the pools that have been created.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the connector connection pools by using the
-link:../reference-manual/list-connector-connection-pools.html#GSRFM00157[`list-connector-connection-pools`] subcommand.
-
-[[GSADG00224]][[giody]]
-
-
-Example 12-2 Listing Connector Connection Pools
-
-This example lists the existing connector connection pools.
-
-[source,oac_no_warn]
-----
-asadmin> list-connector-connection-pools
-jms/qConnPool
-Command list-connector-connection-pools executed successfully
-----
-
-[[GSADG970]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-connector-connection-pools` at the command
-line.
-
-[[gjiqz]][[GSADG00433]][[to-connect-to-ping-or-reset-flush-a-connector-connection-pool]]
-
-To Connect to (Ping) or Reset (Flush) a Connector Connection Pool
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `ping-connection-pool` or `flush-connection-pool` subcommands in
-remote mode to perform these tasks on a connection pools. See
-link:jdbc.html#ggnwn[To Contact (Ping) a Connection Pool] or
-link:jdbc.html#gjiqp[To Reset (Flush) a Connection Pool] for
-instructions.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Connect to or reset a connector connection pool by using the
-link:../reference-manual/flush-connection-pool.html#GSRFM00135[`flush-connection-pool`] subcommand or the
-link:../reference-manual/ping-connection-pool.html#GSRFM00214[`ping-connection-pool`] subcommand.
-
-[[gioti]][[GSADG00434]][[to-update-a-connector-connection-pool]]
-
-To Update a Connector Connection Pool
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `get` and `set` subcommands to view and change the values of the
-connector connection pool properties.
-
-1.  List the connector connection pools by using the
-link:../reference-manual/list-connector-connection-pools.html#GSRFM00157[`list-connector-connection-pools`] subcommand.
-2.  View the properties of the connector connection pool by using the
-link:../reference-manual/get.html#GSRFM00139[`get`] subcommand. +
-For example: +
-[source,oac_no_warn]
-----
-asadmin> get domain.resources.connector-connection-pool.conectionpoolname.*
-----
-3.  Set the property of the connector connection pool by using the
-link:../reference-manual/set.html#GSRFM00226[`set`] subcommand. +
-For example: +
-[source,oac_no_warn]
-----
-asadmin> set domain.resources.connector-connection-pool
-.conectionpoolname.validate-atmost-once-period-in-seconds=3
-----
-4.  If needed, restart the server. +
-Some properties require server restart. See
-link:overview.html#ghciy[Configuration Changes That Require Restart]. If
-your server needs to be restarted, see link:domains.html#ginqj[To Restart
-a Domain].
-
-[[giocp]][[GSADG00435]][[to-delete-a-connector-connection-pool]]
-
-To Delete a Connector Connection Pool
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `delete-connector-connection-pool` subcommand in remote mode to
-remove a connector connection pool.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the connector connection pools by using the
-link:../reference-manual/list-connector-connection-pools.html#GSRFM00157[`list-connector-connection-pools`] subcommand.
-3.  If necessary, notify users that the connector connection pool is
-being deleted.
-4.  Delete the connector connection pool by using the
-link:../reference-manual/delete-connector-connection-pool.html#GSRFM00070[`delete-connector-connection-pool`] subcommand.
-
-[[GSADG00225]][[giohd]]
-
-
-Example 12-3 Deleting a Connector Connection Pool
-
-This example deletes the connection pool named `jms/qConnPool`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-connector-connection-pool --cascade=false jms/qConnPool
-Command delete-connector-connection-pool executed successfully
-----
-
-[[GSADG971]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-connector-connection-pool` at the command
-line.
-
-[[abllx]][[GSADG00582]][[administering-connector-resources]]
-
-Administering Connector Resources
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-A connector resource provides an application or module with the means of
-connecting to an EIS. Typically, you create a connector resource for
-each EIS that is accessed by the applications deployed in the domain.
-
-The following topics are addressed here:
-
-* link:#giogt[To Create a Connector Resource]
-* link:#giohs[To List Connector Resources]
-* link:#giosg[To Update a Connector Resource]
-* link:#giofs[To Delete a Connector Resource]
-
-[[giogt]][[GSADG00436]][[to-create-a-connector-resource]]
-
-To Create a Connector Resource
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `create-connector-resource` subcommand in remote mode to
-register a new connector resource with its JNDI name.
-
-Creating a connector resource is a dynamic event and does not require
-server restart. However, there are some parameters that do require
-server restart. See link:overview.html#ghciy[Configuration Changes That
-Require Restart].
-
-[[GSADG972]]
-
-Before You Begin
-
-Before creating a connector resource, you must first create a connector
-connection pool. For instructions, see link:#gioce[To Create a Connector
-Connection Pool].
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Create the connector resource by using the
-link:../reference-manual/create-connector-resource.html#GSRFM00019[`create-connector-resource`] subcommand. +
-Information about properties for the subcommand is included in this help
-page.
-3.  If needed, restart the server. +
-Some properties require server restart. See
-link:overview.html#ghciy[Configuration Changes That Require Restart]. If
-your server needs to be restarted, see link:domains.html#ginqj[To Restart
-a Domain].
-
-[[GSADG00226]][[giogn]]
-
-
-Example 12-4 Creating a Connector Resource
-
-This example creates a new resource named `jms/qConnFactory` for the
-`jms/qConnPool` connection pool.
-
-[source,oac_no_warn]
-----
-asadmin> create-connector-resource --poolname jms/qConnPool 
---description "creating sample connector resource" jms/qConnFactory
-Command create-connector-resource executed successfully
-----
-
-[[GSADG973]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-connector-resource` at the command line.
-
-[[giohs]][[GSADG00437]][[to-list-connector-resources]]
-
-To List Connector Resources
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `list-connector-resources` subcommand in remote mode to list the
-connector resources that have been created.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the connector connection pools by using the
-link:../reference-manual/list-connector-resources.html#GSRFM00158[`list-connector-resources`] subcommand.
-
-[[GSADG00227]][[gioia]]
-
-
-Example 12-5 Listing Connector Resources
-
-This example lists the existing connector resources.
-
-[source,oac_no_warn]
-----
-asadmin> list-connector-resources
-jms/qConnFactory
-Command list-connector-resources executed successfully
-----
-
-[[GSADG974]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-connector-resources` at the command line.
-
-[[giosg]][[GSADG00438]][[to-update-a-connector-resource]]
-
-To Update a Connector Resource
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `get` and `set` subcommands to view and change the values of the
-connector resource properties.
-
-1.  List the connector connection pools by using the
-link:../reference-manual/list-connector-resources.html#GSRFM00158[`list-connector-resources`] subcommand.
-2.  View the properties of the connector resource by using the
-link:../reference-manual/get.html#GSRFM00139[`get`] subcommand. +
-For example +
-[source,oac_no_warn]
-----
-asadmin> get domain.resources.connector-resource.jms/qConnFactory
-----
-3.  Set the property of the connector resource by using the
-link:../reference-manual/set.html#GSRFM00226[`set`] subcommand. +
-For example: +
-[source,oac_no_warn]
-----
-asadmin> set domain.resources.connector-resource.jms/qConnFactory.enabled=true
-----
-4.  If needed, restart the server. +
-Some properties require server restart. See
-link:overview.html#ghciy[Configuration Changes That Require Restart]. If
-your server needs to be restarted, see link:domains.html#ginqj[To Restart
-a Domain].
-
-[[giofs]][[GSADG00439]][[to-delete-a-connector-resource]]
-
-To Delete a Connector Resource
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `delete-connector-resource` subcommand in remote mode to remove
-a connector resource by specifying the JNDI name.
-
-[[GSADG975]]
-
-Before You Begin
-
-Before deleting a resource, all associations with the resource must be
-removed.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the connector connection pools by using the
-link:../reference-manual/list-connector-resources.html#GSRFM00158[`list-connector-resources`] subcommand.
-3.  If necessary, notify users that the connector resource is being
-deleted.
-4.  Delete the connector resource by using the
-link:../reference-manual/delete-connector-resource.html#GSRFM00071[`delete-connector-resource`] subcommand.
-
-[[GSADG00228]][[giokh]]
-
-
-Example 12-6 Deleting a Connector Resource
-
-This example deletes the `jms/qConnFactory` connector resource.
-
-[source,oac_no_warn]
-----
-asadmin> delete-connector-resource jms/qConnFactory 
-Command delete-connector-resources executed successfully
-----
-
-[[GSADG976]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-connector-resource` at the command line.
-
-[[giope]][[GSADG00583]][[administering-the-resource-adapter-configuration]]
-
-Administering the Resource Adapter Configuration
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following topics are addressed here:
-
-* link:#gioqx[To Create Configuration Information for a Resource
-Adapter]
-* link:#giorn[To List Resource Adapter Configurations]
-* link:#gioum[To Update a Resource Adapter Configuration]
-* link:#gionv[To Delete a Resource Adapter Configuration]
-
-[[gioqx]][[GSADG00440]][[to-create-configuration-information-for-a-resource-adapter]]
-
-To Create Configuration Information for a Resource Adapter
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `create-resource-adapter-config` subcommand in remote mode to
-create configuration information for a resource adapter, also known as a
-connector module. You can run the subcommand before deploying a resource
-adapter, so that the configuration information is available at the time
-of deployment. The resource adapter configuration can also be created
-after the resource adapter is deployed. In this situation, the resource
-adapter is restarted with the new configuration.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Create configuration information by using the
-link:../reference-manual/create-resource-adapter-config.html#GSRFM00054[`create-resource-adapter-config`] subcommand. +
-Information about properties for the subcommand is included in this help
-page.
-
-[[GSADG00229]][[gionp]]
-
-
-Example 12-7 Creating a Resource Adapter Configuration
-
-This example creates the configuration for resource adapter `ra1`.
-
-[source,oac_no_warn]
-----
-asadmin> create-resource-adapter-config --property foo=bar 
---threadpoolid mycustomerthreadpool ra1
-Command create-resource-adapter-config executed successfully
-----
-
-[[GSADG977]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-resource-adapter-config` at the command
-line.
-
-[[giorn]][[GSADG00441]][[to-list-resource-adapter-configurations]]
-
-To List Resource Adapter Configurations
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `list-resource-adapter-configs` subcommand in remote mode to
-list the configuration information contained in the domain configuration
-file (`domain.xml`) for the specified resource adapter (connector
-module).
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the configurations for a resource adapter by using the
-link:../reference-manual/list-resource-adapter-configs.html#GSRFM00196[`list-resource-adapter-configs`] subcommand.
-
-[[GSADG00230]][[gioof]]
-
-
-Example 12-8 Listing Configurations for a Resource Adapter
-
-This example lists all the resource adapter configurations.
-
-[source,oac_no_warn]
-----
-asadmin> list-resource-adapter-configs
-ra1
-ra2
-Command list-resource-adapter-configs executed successfully
-----
-
-[[GSADG978]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-resource-adapter-configs` at the command line.
-
-[[gioum]][[GSADG00442]][[to-update-a-resource-adapter-configuration]]
-
-To Update a Resource Adapter Configuration
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `get` and `set` subcommands to view and change the values of the
-resource adapter configuration properties.
-
-1.  List the configurations for a resource adapter by using the
-link:../reference-manual/list-resource-adapter-configs.html#GSRFM00196[`list-resource-adapter-configs`] subcommand.
-2.  View the properties of the connector resource by using the
-link:../reference-manual/get.html#GSRFM00139[`get`] subcommand. +
-For example: +
-[source,oac_no_warn]
-----
-asadmin>get domain.resources.resource-adapter-config.ra1.*
-----
-3.  Set the property of the connector resource by using the
-link:../reference-manual/set.html#GSRFM00226[`set`] subcommand. +
-For example: +
-[source,oac_no_warn]
-----
-asadmin> set domain.resources.resource-adapter-config.ra1.raSpecificProperty=value
-----
-
-[[gionv]][[GSADG00443]][[to-delete-a-resource-adapter-configuration]]
-
-To Delete a Resource Adapter Configuration
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `delete-resource-adapter-config` subcommand in remote mode to
-delete the configuration information contained in the domain
-configuration file (`domain.xml`) for a specified resource adapter
-(connector module).
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the configurations for a resource adapter by using the
-link:../reference-manual/list-resource-adapter-configs.html#GSRFM00196[`list-resource-adapter-configs`] subcommand.
-3.  Delete the configuration for a resource adapter by using the
-link:../reference-manual/delete-resource-adapter-config.html#GSRFM00106[`delete-resource-adapter-config`] subcommand.
-
-[[GSADG00231]][[giorj]]
-
-
-Example 12-9 Deleting a Resource Adapter Configuration
-
-This example deletes the configuration for resource adapter `ra1`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-resource-adapter-config ra1
-Command delete-resource-adapter-config executed successfully
-----
-
-[[GSADG979]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-resource-adapter-config` at the command
-line.
-
-[[gitxy]][[GSADG00584]][[administering-connector-security-maps]]
-
-Administering Connector Security Maps
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The EIS is any system that holds the data of an organization. It can be
-a mainframe, a messaging system, a database system, or an application.
-The connector security map is used to map the application's credentials
-to the EIS credentials.
-
-A security map applies to a particular connector connection pool. One or
-more named security maps can be associated with a connector connection
-pool.
-
-The following topics are addressed here:
-
-* link:#gitzz[To Create a Connector Security Map]
-* link:#gitwx[To List Connector Security Maps]
-* link:#gityj[To Update a Connector Security Map]
-* link:#gitvf[To Delete a Connector Security Map]
-
-[[gitzz]][[GSADG00444]][[to-create-a-connector-security-map]]
-
-To Create a Connector Security Map
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `create-connector-security-map` subcommand in remote mode to
-create a security map for the specified connector connection pool. If
-the security map is not present, a new one is created. You can specify
-back-end EIS principals or back-end EIS user groups. The connector
-security map configuration supports the use of the wild card asterisk
-(*) to indicate all users or all user groups.
-
-You can also use this subcommand to map the caller identity of the
-application (principal or user group) to a suitable EIS principal in
-container-managed authentication scenarios.
-
-[[GSADG980]]
-
-Before You Begin
-
-For this subcommand to succeed, you must have first created a connector
-connection pool. For instructions, see link:#gioce[To Create a Connector
-Connection Pool].
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Create a connector security map by using the
-link:../reference-manual/create-connector-security-map.html#GSRFM00020[`create-connector-security-map`] subcommand. +
-Information about the options for the subcommand is included in this
-help page.
-3.  If needed, restart the server. +
-Some properties require server restart. See
-link:overview.html#ghciy[Configuration Changes That Require Restart]. If
-your server needs to be restarted, see link:domains.html#ginqj[To Restart
-a Domain].
-
-[[GSADG00232]][[giuxc]]
-
-
-Example 12-10 Creating a Connector Security Map
-
-This example creates a connector security map `securityMap1` for
-`connection-pool1`.
-
-[source,oac_no_warn]
-----
-asadmin> create-connector-security-map --poolname connector-pool1 
---principals principal1, principal2 --mappedusername backend-username securityMap1
-Command create-connector-security-map executed successfully
-----
-
-[[gitwx]][[GSADG00445]][[to-list-connector-security-maps]]
-
-To List Connector Security Maps
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `list-connector-security-maps` subcommand in remote mode to list
-the existing security maps belonging to the specified connector
-connection pool. You can get a simple listing of the connector security
-maps for a connector connection pool, or you can get a more
-comprehensive listing that shows the principals of the map.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List existing connector connection pools by using the
-link:../reference-manual/list-connector-connection-pools.html#GSRFM00157[`list-connector-connection-pools`] subcommand.
-3.  List the security maps for a specific connector connection pool by
-using the link:../reference-manual/list-connector-security-maps.html#GSRFM00159[`list-connector-security-maps`] subcommand.
-
-[[GSADG00233]][[giuwj]]
-
-
-Example 12-11 Listing All Connector Security Maps for a Connector
-Connection Pool
-
-This example lists the connector security maps associated with
-`connector-Pool1`.
-
-[source,oac_no_warn]
-----
-asadmin> list-connector-security-maps connector-Pool1
-securityMap1 
-Command list-connector-security-maps executed successfully.
-----
-
-[[GSADG00234]][[giuyc]]
-
-
-Example 12-12 Listing Principals for a Specific Security Map for a
-Connector Connection Pool
-
-This example lists the principals associated with `securityMap1`.
-
-[source,oac_no_warn]
-----
-asadmin> list-connector-security-maps --securitymap securityMap1 connector-Pool1
-principal1
-principal1
-Command list-connector-security-maps executed successfully.
-----
-
-[[GSADG00235]][[giuuf]]
-
-
-Example 12-13 Listing Principals of All Connector Security Maps for a
-Connector Connection Pool
-
-This example lists the connector security maps associated with
-`connector-Pool1`.
-
-[source,oac_no_warn]
-----
-asadmin> list-connector-security-maps --verbose connector-Pool1
-securityMap1
-principal1
-principal1
-Command list-connector-security-maps executed successfully.
-----
-
-[[gityj]][[GSADG00446]][[to-update-a-connector-security-map]]
-
-To Update a Connector Security Map
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `update-connector-security-map` subcommand in remote mode to
-create or modify a security map for the specified connector connection
-pool.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List existing connector security maps by using the
-link:../reference-manual/list-connector-security-maps.html#GSRFM00159[`list-connector-security-maps`] subcommand.
-3.  Modify a security map for a specific connector connection pool by
-using the link:../reference-manual/update-connector-security-map.html#GSRFM00252[`update-connector-security-map`] subcommand.
-4.  If needed, restart the server. +
-Some properties require server restart. See
-link:overview.html#ghciy[Configuration Changes That Require Restart]. If
-your server needs to be restarted, see link:domains.html#ginqj[To Restart
-a Domain].
-
-[[GSADG00236]][[giuwi]]
-
-
-Example 12-14 Updating a Connector Security Map
-
-This example adds principals to `securityMap1`.
-
-[source,oac_no_warn]
-----
-asadmin> update-connector-security-map --poolname connector-pool1 
---addprincipals principal1, principal2 securityMap1
-Command update-connector-security-map executed successfully.
-----
-
-[[gitvf]][[GSADG00447]][[to-delete-a-connector-security-map]]
-
-To Delete a Connector Security Map
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `delete-connector-security-map` subcommand in remote mode to
-delete a security map for the specified connector connection pool.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List existing connector connection pools by using the
-link:../reference-manual/list-connector-connection-pools.html#GSRFM00157[`list-connector-connection-pools`] subcommand.
-3.  Delete a security map for a specific connector connection pool by
-using the link:../reference-manual/delete-connector-security-map.html#GSRFM00072[`delete-connector-security-map`] subcommand. +
-Information about options for this subcommand is included in this help
-page.
-
-[[GSADG00237]][[giuvr]]
-
-
-Example 12-15 Deleting a Connector Security Map
-
-This example deletes `securityMap1` from `connector-pool1`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-connector-security-map --poolname connector-pool1 securityMap1
-
-Command delete-connector-security-map executed successfully
-----
-
-[[giohl]][[GSADG00585]][[administering-connector-work-security-maps]]
-
-Administering Connector Work Security Maps
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The EIS is any system that holds the data of an organization. It can be
-a mainframe, a messaging system, a database system, or an application.
-The connector work security map is used to is used to map the EIS
-credentials to the credentials of GlassFish Server security domain.
-
-A security map applies to a particular connector connection pool. One or
-more named security maps can be associated with a connector connection
-pool.
-
-The following topics are addressed here:
-
-* link:#giofz[To Create a Connector Work Security Map]
-* link:#gioir[To List Connector Work Security Maps]
-* link:#giogm[To Update a Connector Work Security Map]
-* link:#gioin[To Delete a Connector Work Security Map]
-
-[[giofz]][[GSADG00448]][[to-create-a-connector-work-security-map]]
-
-To Create a Connector Work Security Map
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `create-connector-work-security-map` subcommand in remote mode
-to map the caller identity of the work submitted by the connector module
-(resource adapter) EIS principal or EIS user group to a suitable
-principal or user group in the GlassFish Server security domain. One or
-more work security maps can be associated with a connector module.
-
-The connector security map configuration supports the use of the wild
-card asterisk (*) to indicate all users or all user groups.
-
-[[GSADG981]]
-
-Before You Begin
-
-Before creating a connector work security map, you must first create a
-connector connection pool. For instructions, see link:#gioce[To Create a
-Connector Connection Pool].
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Create the connector work security map by using the
-link:../reference-manual/create-connector-work-security-m.html#GSRFM00021[`create-connector-work-security-map`] subcommand. +
-Information about properties for the subcommand is included in this help
-page.
-3.  If needed, restart the server. +
-Some properties require server restart. See
-link:overview.html#ghciy[Configuration Changes That Require Restart]. If
-your server needs to be restarted, see link:domains.html#ginqj[To Restart
-a Domain].
-
-[[GSADG00238]][[giokw]]
-
-
-Example 12-16 Creating Connector Work Security Maps
-
-The following examples create `workSecurityMap1` and `workSecurityMap2`
-for `my-resource-adapter-name`.
-
-[source,oac_no_warn]
-----
-asadmin> create-connector-work-security-map --raname my-resource-adapter-name 
---principalsmap eis-principal-1=server-principal-1,eis-principal-2=server-principal-2, 
-eis-principal-3=server-principal-1 workSecurityMap1
-
-asadmin> create-connector-work-security-map --raname my-resource-adapter-name
---groupsmap eis-group-1=server-group-1,eis-group-2=server-group-2,
-eis-group-3=server-group-1 workSecurityMap2
-Command create-connector-work-security-map executed successfully
-----
-
-[[GSADG982]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-connector-work-security-map` at the command
-line.
-
-[[gioir]][[GSADG00449]][[to-list-connector-work-security-maps]]
-
-To List Connector Work Security Maps
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `list-connector-work-security-maps` subcommand in remote mode to
-list the work security maps that belong to a specific connector module.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the connector work security maps by using the
-link:../reference-manual/list-connector-work-security-map.html#GSRFM00160[`list-connector-work-security-maps`] subcommand.
-
-[[GSADG00239]][[gionj]]
-
-
-Example 12-17 Listing the Connector Work Security Maps
-
-This example lists the generic work security maps.
-
-[source,oac_no_warn]
-----
-asadmin> list-connector-work-security-maps generic-ra
-generic-ra-groups-map: EIS group=eis-group, mapped group=glassfish-group
-generic-ra-principals-map: EIS principal=eis-bar, mapped principal=bar
-generic-ra-principals-map: EIS principal=eis-foo, mapped principal=foo
-Command list-connector-work-security-maps executed successfully.
-----
-
-[[GSADG983]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-connector-work-security-maps` at the command
-line.
-
-[[giogm]][[GSADG00450]][[to-update-a-connector-work-security-map]]
-
-To Update a Connector Work Security Map
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `update-connector-work-security-map` subcommand in remote to
-modify a work security map that belongs to a specific resource adapter
-(connector module).
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the connector work security maps by using the
-link:../reference-manual/list-connector-work-security-map.html#GSRFM00160[`list-connector-work-security-maps`] subcommand.
-3.  If necessary, notify users that the connector work security map is
-being modified.
-4.  Update a connector work security map by using the
-link:../reference-manual/update-connector-work-security-m.html#GSRFM00253[`update-connector-work-security-map`] subcommand.
-
-[[GSADG00240]][[gioll]]
-
-
-Example 12-18 Updating a Connector Work Security Map
-
-This example removes a principal from a work security map.
-
-[source,oac_no_warn]
-----
-asadmin> update-connector-work-security-map --raname generic-ra
---removeprincipals eis-foo generic-ra-principals-map
-Command update-connector-work-security-map executed successfully.
-----
-
-[[GSADG984]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help update-connector-work-security-map` at the command
-line.
-
-[[gioin]][[GSADG00451]][[to-delete-a-connector-work-security-map]]
-
-To Delete a Connector Work Security Map
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `delete-connector-work-security-map` subcommand in remote mode
-to delete a work security map that belongs to a specific connector
-module (resource adapter).
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the connector work security maps by using the
-link:../reference-manual/list-connector-work-security-map.html#GSRFM00160[`list-connector-work-security-maps`] subcommand.
-3.  Delete a connector work security map by using the
-link:../reference-manual/delete-connector-work-security-m.html#GSRFM00073[`delete-connector-work-security-map`] subcommand.
-
-[[GSADG00241]][[giolk]]
-
-
-Example 12-19 Deleting a Connector Work Security Map
-
-This example deletes the `worksecuritymap1` map from the `my_ra`
-connector module.
-
-[source,oac_no_warn]
-----
-asadmin> delete-connector-work-security-map --raname my_ra worksecuritymap1
-Command delete-connector-work-security-map executed successfully.
-----
-
-[[GSADG985]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-connector-work-security-map` at the command
-line.
-
-[[ablmc]][[GSADG00586]][[administering-administered-objects]]
-
-Administering Administered Objects
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Packaged within a connector module, an administered object provides
-specialized functionality for an application. For example, an
-administered object might provide access to a parser that is specific to
-the connector module and its associated EIS.
-
-The following topics are addressed here:
-
-* link:#giolr[To Create an Administered Object]
-* link:#giokm[To List Administered Objects]
-* link:#giots[To Update an Administered Object]
-* link:#gioma[To Delete an Administered Object]
-
-[[giolr]][[GSADG00452]][[to-create-an-administered-object]]
-
-To Create an Administered Object
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `create-admin-object` subcommand to create an administered
-object resource. When creating an administered object resource,
-name-value pairs are created, and the object is associated to a JNDI
-name.
-
-[[GSADG986]]
-
-Before You Begin
-
-The resource adapter must be deployed before running this subcommand
-(`jmsrar.rar`).
-
-1.  Create an administered object by using the
-link:../reference-manual/create-admin-object.html#GSRFM00012[`create-admin-object`] subcommand. +
-Information about properties for the subcommand is included in this help
-page.
-2.  If needed, restart the server. +
-Some properties require server restart. See
-link:overview.html#ghciy[Configuration Changes That Require Restart]. If
-your server needs to be restarted, see link:domains.html#ginqj[To Restart
-a Domain].
-
-[[GSADG00242]][[giokx]]
-
-
-Example 12-20 Creating an Administered Object
-
-For this example, the `jakarta.jms.Queue` resource type is obtained from
-the `ra.xml` file. The JNDI name of the new administered object is
-`jms/samplequeue`.
-
-[source,oac_no_warn]
-----
-asadmin> create-admin-object --restype jakarta.jms.Queue --raname jmsra
---description "sample administered object" --property Name=sample_jmsqueue jms/samplequeue
-Command create-admin-object executed successfully
-----
-
-[[GSADG987]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-admin-object` at the command line.
-
-[[giokm]][[GSADG00453]][[to-list-administered-objects]]
-
-To List Administered Objects
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `list-admin-object` subcommand in remote mode to list the
-existing administered objects.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the administered objects by using the
-link:../reference-manual/list-admin-objects.html#GSRFM00146[`list-admin-objects`] subcommand.
-
-[[GSADG00243]][[giokg]]
-
-
-Example 12-21 Listing Administered Objects
-
-This example lists the existing administered objects.
-
-[source,oac_no_warn]
-----
-asadmin> list-admin-objects
-jms/samplequeue
-Command list-admin-objects executed successfully
-----
-
-[[GSADG988]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-admin-object` at the command line.
-
-[[giots]][[GSADG00454]][[to-update-an-administered-object]]
-
-To Update an Administered Object
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `get` and `set` subcommands to view and change the values of the
-administered objects properties.
-
-1.  List the administered objects by using the
-link:../reference-manual/list-admin-objects.html#GSRFM00146[`list-admin-objects`] subcommand.
-2.  View the properties of the administered object by using the
-link:../reference-manual/get.html#GSRFM00139[`get`] subcommand. +
-For example: +
-[source,oac_no_warn]
-----
-asadmin> get domain.resources.admin-object-resource.jms/samplequeue.* 
-----
-3.  Set the property of the administered object by using the
-link:../reference-manual/set.html#GSRFM00226[`set`] subcommand. +
-For example: +
-[source,oac_no_warn]
-----
-asadmin> set domain.resources.admin-object-resource.jms/samplequeue.enabled=false
-----
-4.  If needed, restart the server. +
-Some properties require server restart. See
-link:overview.html#ghciy[Configuration Changes That Require Restart]. If
-your server needs to be restarted, see link:domains.html#ginqj[To Restart
-a Domain].
-
-[[gioma]][[GSADG00455]][[to-delete-an-administered-object]]
-
-To Delete an Administered Object
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `delete-admin-object` subcommand to delete an administered
-objects.
-
-1.  List the administered objects by using the
-link:../reference-manual/list-admin-objects.html#GSRFM00146[`list-admin-objects`] subcommand.
-2.  If necessary, notify users that the administered object is being
-deleted.
-3.  Delete an administered object by using the
-link:../reference-manual/delete-admin-object.html#GSRFM00063[`delete-admin-object`] subcommand.
-
-[[GSADG00244]][[giolc]]
-
-
-Example 12-22 Deleting an Administered Object
-
-This example deletes the administered object with the JNDI name
-`jms/samplequeue`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-admin-object jms/samplequeue
-Command delete-admin-object executed successfully
-----
-
-[[GSADG989]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-admin-object` at the command line.
-
-
diff --git a/docs/administration-guide/src/main/jbake/content/domains.adoc b/docs/administration-guide/src/main/jbake/content/domains.adoc
deleted file mode 100644
index a6fa9a8..0000000
--- a/docs/administration-guide/src/main/jbake/content/domains.adoc
+++ /dev/null
@@ -1,1566 +0,0 @@
-type=page
-status=published
-title=Administering Domains
-next=jvm.html
-prev=general-administration.html
-~~~~~~
-Administering Domains
-=====================
-
-[[GSADG00006]][[ggnop]]
-
-
-[[administering-domains]]
-3 Administering Domains
------------------------
-
-This chapter provides procedures for administering domains in the
-GlassFish Server Open Source Edition environment by using the `asadmin`
-command-line utility.
-
-The following topics are addressed here:
-
-* link:#ggoek[About Administering Domains]
-* link:#gitvz[Creating, Logging In To, and Deleting a Domain]
-* link:#gitwj[Starting and Stopping a Domain]
-* link:#gglqp[Configuring a DAS or a GlassFish Server Instance for
-Automatic Restart]
-* link:#gityo[Backing Up and Restoring a Domain]
-* link:#gglri[Re-Creating the Domain Administration Server (DAS)]
-* link:#gitvn[Additional Domain Tasks]
-
-Instructions for accomplishing the tasks in this chapter by using the
-Administration Console are contained in the Administration Console
-online help.
-
-[[ggoek]][[GSADG00535]][[about-administering-domains]]
-
-About Administering Domains
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-A domain contains a group of GlassFish Server instances that are
-administered together. Each domain has a domain administration server
-(DAS) that hosts administrative applications. These concepts are
-explained in more detail in the following sections:
-
-* link:#geolm[GlassFish Server Instances]
-* link:#geojp[Domains for Administering GlassFish Server]
-* link:#geojl[Domain Administration Server (DAS)]
-
-[[geolm]][[GSADG00715]][[glassfish-server-instances]]
-
-GlassFish Server Instances
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A GlassFish Server instance is a single Virtual Machine for the Java
-platform (Java Virtual Machine or JVM machine) on a single node in which
-GlassFish Server is running. A node defines the host where the GlassFish
-Server instance resides. The JVM machine must be compatible with the
-Java Platform, Enterprise Edition (Java EE).
-
-GlassFish Server instances form the basis of an application deployment.
-
-Whenever a domain is created, GlassFish Server creates a default
-instance that is named `server`. If a single instance meets your
-requirements, you can use this instance for deploying applications
-without the need to administer GlassFish Server instances explicitly.
-You administer the default instance when you administer its domain.
-
-If you require multiple instances, you must administer the instances
-explicitly. For more information, see "link:../ha-administration-guide/instances.html#GSHAG00006[Administering
-GlassFish Server Instances]" in GlassFish Server Open Source Edition
-High Availability Administration Guide.
-
-For an instance, you can also create virtual servers. Virtual servers do
-not span instances. For many purposes, you can use virtual servers
-instead of multiple instances in operational deployments. Virtual
-servers enable you to offer, within a single instance, separate domain
-names, IP addresses, and some administration capabilities to
-organizations or individuals. To these users, a virtual server behaves
-like a dedicated web server, but without the hardware and basic web
-server maintenance.
-
-For more information about virtual servers, see
-link:http_https.html#ggncs[Administering Virtual Servers].
-
-[[geojp]][[GSADG00716]][[domains-for-administering-glassfish-server]]
-
-Domains for Administering GlassFish Server
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A domain is an administrative boundary that contains a group of
-GlassFish Server instances that are administered together. Each instance
-can belong to only one domain. A domain provides a preconfigured runtime
-for user applications. Each domain has its own configuration data, log
-files, and application deployment areas that are independent of other
-domains. If the configuration is changed for one domain, the
-configurations of other domains are not affected.
-
-Domains enable different organizations and administrators to share
-securely a single GlassFish Server installation. Each organization or
-administrator can administer the instances in a single domain without
-affecting the instances in other domains.
-
-At installation time, GlassFish Server creates a default domain that is
-named `domain1`. After installation, you can create additional domains
-as necessary.
-
-When a domain is created, you are prompted for the administration user
-name and password. If you accept the default, the user `admin` is
-created without password. To reset the administration password, see
-"link:../security-guide/system-security.html#GSSCG00095[To Change an Administration Password]" in GlassFish
-Server Open Source Edition Security Guide.
-
-[[geojl]][[GSADG00717]][[domain-administration-server-das]]
-
-Domain Administration Server (DAS)
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The domain administration server (DAS) is a specially designated
-GlassFish Server instance that hosts administrative applications. The
-DAS is similar to any other GlassFish Server instance, except that the
-DAS has additional administration capabilities. The DAS authenticates
-the administrator, accepts requests from administration tools, and
-communicates with other instances in the domain to carry out the
-requests from administration tools.
-
-Each domain has its own DAS with a unique administration port number.
-The default administration port is 4848, but a different port can be
-specified when a domain is created.
-
-The DAS has the master copy of the configuration data for all instances
-in a domain. If an instance is destroyed, for example, because a host
-failed, the instance can be re-created from the data in the DAS.
-
-The DAS is the default GlassFish Server instance in a domain and is
-named `server`. If a single instance meets your requirements, you can
-use the DAS for deploying applications and for administering the domain.
-
-The graphical Administration Console communicates with a specific DAS to
-administer the domain that is associated with the DAS. Each
-Administration Console session enables you to configure and manage only
-one domain. If you create multiple domains, you must start a separate
-Administration Console session to manage each domain.
-
-[[gitvz]][[GSADG00536]][[creating-logging-in-to-and-deleting-a-domain]]
-
-Creating, Logging In To, and Deleting a Domain
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following topics are addressed here:
-
-* link:#ggoei[To Create a Domain]
-* link:#gldel[To Create a Domain From a Custom Template]
-* link:#ggoco[To List Domains]
-* link:#ghhjz[To Log In to a Domain]
-* link:#ggofa[To Delete a Domain]
-
-[[ggoei]][[GSADG00330]][[to-create-a-domain]]
-
-To Create a Domain
-^^^^^^^^^^^^^^^^^^
-
-After installing GlassFish Server and creating the default domain
-(`domain1`), you can create additional domains by using the local
-`create-domain` subcommand. This subcommand creates the configuration of
-a domain. Any user who has access to the `asadmin` utility on a given
-system can create a domain and store the domain configuration in a
-folder of choice. By default, the domain configuration is created in the
-default directory for domains. You can override this location to store
-the configuration elsewhere.
-
-You are required to specify an administrative user when you create a
-domain, or you can accept the default login identity which is username
-`admin` with no password.
-
-1.  Select a name for the domain that you are creating. +
-You can verify that a name is not already in use by using the
-link:../reference-manual/list-domains.html#GSRFM00163[`list-domains`] subcommand
-2.  Create a domain by using the link:../reference-manual/create-domain.html#GSRFM00023[`create-domain`]
-subcommand. +
-Information about the options for this subcommand is included in this
-help page.
-3.  Type an admin user name and password for the domain. +
-To avoid setting up an admin login, you can accept the default `admin`,
-with no password. Pressing Return also selects the default.
-
-[[GSADG00126]][[ggoeu]]
-
-
-Example 3-1 Creating a Domain
-
-This example creates a domain named `domain1` . When you type the
-command, you might be prompted for login information.
-
-[source,oac_no_warn]
-----
-asadmin> create-domain --adminport 4848 domain1
-Enter admin user name[Enter to accept default]>
-Using port 4848 for Admin.
-Default port 8080 for HTTP Instance is in use. Using 1161
-Using default port 7676 for JMS.
-Using default port 3700 for IIOP.
-Using default port 8081 for HTTP_SSL.
-Using default port 3820 for IIOP_SSL.
-Using default port 3920 for IIOP_MUTUALAUTH.
-Default port 8686 for JMX_ADMIN is in use. Using 1162
-Distinguished Name of the self-signed X.509 Server Certificate is:
-[CN=moonbeam.gateway.2wire.net,OU=GlassFish,O=Oracle Corp.,L=Redwood Shores,ST
-California,C=US]
-Domain domain1 created.
-Command create-domain executed successfully.
-----
-
-To start the Administration Console in a browser, enter the URL in the
-following format:
-
-[source,oac_no_warn]
-----
-http://hostname:5000
-----
-
-For this example, the domain's log files, configuration files, and
-deployed applications now reside in the following directory:
-
-domain-root-dir`/mydomain`
-
-[[GSADG819]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-domain` at the command line.
-
-[[gldel]][[GSADG00331]][[to-create-a-domain-from-a-custom-template]]
-
-To Create a Domain From a Custom Template
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A custom template enables you to customize the configuration of any
-domain that you create from the template.
-
-1.  Create a domain to use as the basis for the template. +
-For more information, see link:#ggoei[To Create a Domain].
-2.  Use the `asadmin` utility or the Administration Console to configure
-the domain. +
-Your configuration changes will be included in the template that you
-create from the domain.
-3.  Copy the domain's `domain.xml` file under a new name to the
-as-install`/lib/templates` directory. +
-A domain's `domain.xml` file is located in the domain-dir`/config`
-directory.
-4.  In a plain text editor, edit the file that you copied to replace
-with tokens values that are to be substituted when a domain is created. +
-Each token is identified as `%%%`token-name`%%%`, where token-name is
-one of the following names:::
-`ADMIN_PORT`::
-  Represents the port number of the HTTP port or the HTTPS port for
-  administration. This token is replaced with one of the following
-  values in the command to create a domain from the template: +
-  * The value of the `--adminport` option
-  * The value of the `domain.adminPort` property
-`CONFIG_MODEL_NAME`::
-  Represents the name of the configuration that is created for the
-  domain that is being created. This token is replaced with the string
-  `server-config`.
-`DOMAIN_NAME`::
-  Represents the name of the domain that is being created. This token is
-  replaced with the operand of `create-domain` subcommand.
-`HOST_NAME`::
-  Represents the name of the host on which the domain is being created.
-  This token is replaced with the fully qualified host name of the host
-  where the domain is being created.
-`HTTP_PORT`::
-  Represents the port number of the port that is used to listen for HTTP
-  requests. This token is replaced with one of the following values in
-  the command to create a domain from the template: +
-  * The value of the `--instanceport` option
-  * A value that the `create-domain` subcommand calculates from the
-  value of the `--portbase` option
-  * The value of the `domain.instancePort` property
-`HTTP_SSL_PORT`::
-  Represents the port number of the port that is used to listen for
-  secure HTTP requests. This token is replaced with one of the following
-  values in the command to create a domain from the template: +
-  * A value that the `create-domain` subcommand calculates from the
-  value of the `--portbase` option
-  * The value of the `http.ssl.port` property
-`JAVA_DEBUGGER_PORT`::
-  Represents the port number of the port that is used for connections to
-  the
-  http://docs.oracle.com/javase/8/docs/technotes/guides/jpda/architecture.html[Java
-  Platform Debugger Architecture (JPDA)] debugger. This token is
-  replaced with one of the following values in the command to create a
-  domain from the template: +
-  * A value that the `create-domain` subcommand calculates from the
-  value of the `--portbase` option
-  * The value of the `java.debugger.port` property
-`JMS_PROVIDER_PORT`::
-  Represents the port number for the Java Message Service provider. This
-  token is replaced with one of the following values in the command to
-  create a domain from the template: +
-  * A value that the `create-domain` subcommand calculates from the
-  value of the `--portbase` option
-  * The value of the `jms.port` property
-`JMX_SYSTEM_CONNECTOR_PORT`::
-  Represents the port number on which the JMX connector listens. This
-  token is replaced with one of the following values in the command to
-  create a domain from the template: +
-  * A value that the `create-domain` subcommand calculates from the
-  value of the `--portbase` option
-  * The value of the `domain.jmxPort` property
-`ORB_LISTENER_PORT`::
-  Represents the port number of the port that is used for IIOP
-  connections. This token is replaced with one of the following values
-  in the command to create a domain from the template: +
-  * A value that the `create-domain` subcommand calculates from the
-  value of the `--portbase` option
-  * The value of the `orb.listener.port` property
-`ORB_MUTUALAUTH_PORT`::
-  Represents the port number of the port that is used for secure IIOP
-  connections with client authentication. This token is replaced with
-  one of the following values in the command to create a domain from the
-  template: +
-  * A value that the `create-domain` subcommand calculates from the
-  value of the `--portbase` option
-  * The value of the `orb.mutualauth.port` property
-`ORB_SSL_PORT`::
-  Represents the port number of the port that is used for secure IIOP
-  connections. This token is replaced with one of the following values
-  in the command to create a domain from the template: +
-  * A value that the `create-domain` subcommand calculates from the
-  value of the `--portbase` option
-  * The value of the `orb.ssl.port` property
-`OSGI_SHELL_TELNET_PORT`::
-  Represents the port number of the port that is used for connections to
-  the
-  http://felix.apache.org/documentation/subprojects/apache-felix-remote-shell.html[Apache
-  Felix Remote Shell] . This shell uses the Felix shell service to
-  interact with the OSGi module management subsystem. This token is
-  replaced with one of the following values in the command to create a
-  domain from the template: +
-  * A value that the `create-domain` subcommand calculates from the
-  value of the `--portbase` option
-  * The value of the `osgi.shell.telnet.port` property
-`SERVER_ID`::
-  Represents the name of the DAS for the domain that is being created.
-  This token is replaced with the string `server`. +
-
-[TIP]
-=======================================================================
-
-For information about how these tokens are used in the default template,
-examine the as-install`/lib/templates/domain.xml` file.
-
-=======================================================================
-
-5.  Create the domain that you want to be based on a custom template. +
-In the command to create the domain, pass the name of file that you
-edited in the previous step as the `--template` option of the
-link:../reference-manual/create-domain.html#GSRFM00023[`create-domain`] subcommand.
-6.  Before starting the domain, verify that the domain's `domain.xml`
-file is valid. +
-Use the link:../reference-manual/verify-domain-xml.html#GSRFM00260[`verify-domain-xml`] subcommand for this
-purpose. +
-Information about the options for this subcommand is included in the
-subcommand's help page.
-
-[[GSADG820]]
-
-See Also
-
-* link:#ggoei[To Create a Domain]
-* link:../reference-manual/create-domain.html#GSRFM00023[`create-domain`(1)]
-* link:../reference-manual/verify-domain-xml.html#GSRFM00260[`verify-domain-xml`(1)]
-
-You can also view the full syntax and options of the subcommands by
-typing the following commands at the command line.
-
-* `asadmin help create-domain`
-* `asadmin help verify-domain-xml`
-
-[[ggoco]][[GSADG00332]][[to-list-domains]]
-
-To List Domains
-^^^^^^^^^^^^^^^
-
-Use the `list-domains` subcommand to display a list of domains and their
-statuses. If the domain directory is not specified, the contents of the
-domain-root-dir, the default for which is as-install`/domains`, is
-listed. If there is more than one domain, the domain name must be
-specified.
-
-To list domains that were created in other directories, specify the
-`--domaindir` option.
-
-List domains by using the link:../reference-manual/list-domains.html#GSRFM00163[`list-domains`] subcommand.
-
-[[GSADG00127]][[ggpfv]]
-
-
-Example 3-2 Listing Domains
-
-This example lists the domains in the default domain root directory:
-
-[source,oac_no_warn]
-----
-asadmin> list-domains
-Name: domain1 Status: Running
-Name: domain4 Status: Not Running
-Name: domain6 Status: Not Running
-Command list-domains executed successfully.
-----
-
-[[GSADG821]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-domain` at the command line.
-
-[[ghhjz]][[GSADG00333]][[to-log-in-to-a-domain]]
-
-To Log In to a Domain
-^^^^^^^^^^^^^^^^^^^^^
-
-All remote subcommands require that credentials be specified in terms of
-an administration user name and its password. By default, the domain is
-created with an identity that allows an `asadmin` user to perform
-administrative operations when no identity is explicitly or implicitly
-specified.
-
-The default identity is in the form of a user whose name is `admin` and
-has no password. If you specify no user name on the command line or on
-prompt, and specify no password in the `--passwordfile` option or on
-prompt, and you have never logged in to a domain using either the
-`login` subcommand or the `create-domain` subcommand with the
-`--savelogin` option, then the `asadmin` utility will attempt to perform
-a given administrative operation without specifying any identity.
-
-A server (domain) allows administrative operations to be run using this
-default identity if the following conditions are true:
-
-* The server (domain) uses file realm for authentication of
-administrative users. +
-If this condition is not true, you will need to specify the user name
-and password.
-* The file realm has one and only one user (what the user name is does
-not matter). +
-If this condition is not true, you will also need to specify the user
-name.
-* That one user has no password. +
-If this condition is not true, you will need to specify the password.
-
-By default, all of these conditions are true, unless you have created
-the domain with a specific user name and password. Thus, by default, the
-only administrative user is `admin` with no password.
-
-Use the `login` subcommand in local mode to authenticate yourself (log
-in to) a specific domain. After such login, you do not need to specify
-the administration user or password for subsequent operations on the
-domain. The `login` subcommand can only be used to specify the
-administration password. For other passwords that remote subcommands
-require, use the `--passwordfile` option, or specify the password at the
-command prompt. You are always prompted for the administration user name
-and password.
-
-There is no logout subcommand. If you want to log in to another domain,
-invoke `asadmin login` with new values for `--host` and `--port`.
-
-1.  Determine the name of the domain that you are logging in to. +
-To list the existing domains: +
-[source,oac_no_warn]
-----
-asadmin list-domains
-----
-2.  Log in to the domain by using the olink:GSRFM00210[`login`] command.
-
-[[GSADG00128]][[ghlfx]]
-
-
-Example 3-3 Logging In To a Domain on a Remote Machine
-
-This example logs into a domain located on another machine. Options are
-specified before the `login` subcommand.
-
-[source,oac_no_warn]
-----
-asadmin> --host foo --port 8282 login
-Please enter the admin user name>admin Please enter the admin password> 
-Trying to authenticate for administration of server at host [foo] and port [8282] ... 
-Login information relevant to admin user name [admin] 
-for host [foo] and admin port [8282] stored at [/.asadminpass] successfully. 
-Make sure that this file remains protected. Information stored in this
-file will be used by asadmin commands to manage associated domain.
-----
-
-[[GSADG00129]][[ghldv]]
-
-
-Example 3-4 Logging In to a Domain on the Default Port of Localhost
-
-This example logs into a domain on `myhost` on the default port. Options
-are specified before the login subcommand.
-
-[source,oac_no_warn]
-----
-asadmin> --host myhost login 
-Please enter the admin user name>admin
-Please enter the admin password> 
-Trying to authenticate for administration of server at host [myhost] and port [4848] ... 
-An entry for login exists for host [myhost] and port [4848], probably from 
-an earlier login operation. 
-Do you want to overwrite this entry (y/n)?y 
-Login information relevant to admin user name [admin] for host [myhost] 
-and admin port [4848] stored at [/home/joe/.asadminpass] successfully. 
-Make sure that this file remains protected. Information stored in this file will be used by 
-asadmin commands to manage associated domain.
-----
-
-[[GSADG822]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help login` at the command line. For additional
-information about passwords, see "link:../security-guide/system-security.html#GSSCG00144[Administering
-Passwords]" in GlassFish Server Open Source Edition Security Guide.
-
-[[ggofa]][[GSADG00334]][[to-delete-a-domain]]
-
-To Delete a Domain
-^^^^^^^^^^^^^^^^^^
-
-Use the `delete-domain` subcommand to delete an existing domain from a
-server. Only the root user or the operating system user who is
-authorized to administer the domain can run this subcommand.
-
-[[GSADG823]]
-
-Before You Begin
-
-A domain must be stopped before it can be deleted.
-
-1.  List domains by using the link:../reference-manual/list-domains.html#GSRFM00163[`list-domains`]
-subcommand.
-2.  If necessary, notify domain users that the domain is being deleted.
-3.  Ensure that the domain you want to delete is stopped. +
-If needed, see link:#ggoch[To Stop a Domain].
-4.  Delete the domain by using the link:../reference-manual/delete-domain.html#GSRFM00075[`delete-domain`]
-subcommand.
-
-[[GSADG00130]][[ggoiy]]
-
-
-Example 3-5 Deleting a Domain
-
-This example deletes a domain named `domain1` from the location
-specified.
-
-[source,oac_no_warn]
-----
-asadmin> delete-domain --domaindir ..\domains domain1
-Domain domain1 deleted.
-Command delete-domain executed successfully.
-----
-
-[[GSADG824]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-domain` at the command line.
-
-[[gitwj]][[GSADG00537]][[starting-and-stopping-a-domain]]
-
-Starting and Stopping a Domain
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following topics are addressed here:
-
-* link:#ggoda[To Start a Domain]
-* link:#ggoch[To Stop a Domain]
-* link:#ginqj[To Restart a Domain]
-
-[[ggoda]][[GSADG00335]][[to-start-a-domain]]
-
-To Start a Domain
-^^^^^^^^^^^^^^^^^
-
-When you start a domain or server, the domain administration server
-(DAS) is started. After startup, the DAS runs constantly, listening for
-and accepting requests.
-
-If the domain directory is not specified, the domain in the default
-domain root directory is started. If there are two or more domains, the
-`domain_name` operand must be specified. Each domain must be started
-separately.
-
-
-[NOTE]
-=======================================================================
-
-For Microsoft Windows, you can use an alternate method to start a
-domain. From the Windows Start menu, select the command for your
-distribution of GlassFish Server:
-
-* If you are using the Full Platform, select Programs > Oracle GlassFish
-Server > Start Admin Server.
-* If you are using the Web Profile, select Programs > Oracle GlassFish
-Server Web Profile > Start Admin Server.
-
-=======================================================================
-
-
-This subcommand is supported in local mode only.
-
-Start a domain by using the link:../reference-manual/start-domain.html#GSRFM00235[`start-domain`] subcommand.
-
-[[GSADG00131]][[ggocw]]
-
-
-Example 3-6 Starting a Domain
-
-This example starts `domain2` in the default domain directory.
-
-[source,oac_no_warn]
-----
-asadmin> start-domain domain2
-----
-
-If there is only one domain, you can omit the domain name. If you do not
-include the password, you might be prompted to supply it.
-
-[source,oac_no_warn]
-----
-Name of the domain started: [domain1] and its location: 
-[C:\prelude\v3_prelude_release\distributions\web\target\glassfish
-domains\domain1].
-Admin port for the domain: [4848].
-----
-
-[[GSADG825]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help start-domain` at the command line.
-
-[[ggoch]][[GSADG00336]][[to-stop-a-domain]]
-
-To Stop a Domain
-^^^^^^^^^^^^^^^^
-
-Stopping a domain or server shuts down its domain administration server
-(DAS). When stopping a domain, the DAS stops accepting new connections
-and then waits for all outstanding connections to complete. This
-shutdown process takes a few seconds. While the domain is stopped, the
-Administration Console and most of the `asadmin` subcommands cannot be
-used. This subcommand is particularly useful in stopping a runaway
-server. For more controlled situations, you can use the
-link:../reference-manual/restart-domain.html#GSRFM00218[`restart-domain`] subcommand.
-
-
-[NOTE]
-=======================================================================
-
-For Microsoft Windows, you can use an alternate method to stop a domain.
-From the Start menu, select the command for your distribution of
-GlassFish Server:
-
-* If you are using the Full Platform, select Programs > Oracle GlassFish
-Server > Stop Admin Server.
-* If you are using the Web Profile, select Programs > Oracle GlassFish
-Server Web Profile > Stop Admin Server.
-
-=======================================================================
-
-
-1.  If necessary, notify users that you are going to stop the domain.
-2.  Stop the domain by using the link:../reference-manual/stop-domain.html#GSRFM00240[`stop-domain`]
-subcommand.
-
-[[GSADG00132]][[gioes]]
-
-
-Example 3-7 Stopping a Domain (or Server)
-
-This example stops `domain1` in the default directory, where `domain1`
-is the only domain present in the directory.
-
-[source,oac_no_warn]
-----
-asadmin> stop-domain
-Waiting for the domain to stop ...........
-Command stop-domain executed successfully.
-----
-
-[[GSADG826]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help stop-domain` at the command line.
-
-[[ginqj]][[GSADG00337]][[to-restart-a-domain]]
-
-To Restart a Domain
-^^^^^^^^^^^^^^^^^^^
-
-Use the `restart-domain` subcommand in remote mode to restart the Domain
-Administration Server (DAS) of the specified host. When restarting a
-domain, the DAS stops accepting new connections and then waits for all
-outstanding connections to complete. This shutdown process takes a few
-seconds. Until the domain has restarted, the Administration Console and
-most of the `asadmin` subcommands cannot be used.
-
-This subcommand is particularly useful for environments where the server
-machine is secured and difficult to get to. With the right credentials,
-you can restart the server from a remote location as well as from the
-same machine.
-
-If the server will not restart, use the link:../reference-manual/stop-domain.html#GSRFM00240[`stop-domain`]
-subcommand followed by the link:../reference-manual/start-domain.html#GSRFM00235[`start-domain`] subcommand.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Restart the domain by using the link:../reference-manual/restart-domain.html#GSRFM00218[`restart-domain`]
-subcommand.
-
-[[GSADG00133]][[ggoet]]
-
-
-Example 3-8 Restarting a Domain (or Server)
-
-This example restarts `mydoimain4` in the default directory.
-
-[source,oac_no_warn]
-----
-asadmin> restart-domain mydomain4
-Waiting for the domain to restart ...........
-Command restart-domain executed successfully.
-----
-
-[[GSADG00134]][[giupx]]
-
-
-Example 3-9 Restarting a Domain in a Browser
-
-This example invokes the `restart-domain` subcommand in a browser.
-
-[source,oac_no_warn]
-----
-http://yourhost:4848/__asadmin/restart-domain
-----
-
-[[GSADG827]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help restart-domain` at the command line.
-
-[[gglqp]][[GSADG00538]][[configuring-a-das-or-a-glassfish-server-instance-for-automatic-restart]]
-
-Configuring a DAS or a GlassFish Server Instance for Automatic Restart
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Use the `create-service` subcommand in local mode to configure your
-system to automatically restart a domain administration server (DAS) or
-a GlassFish Server instance. GlassFish Server enables you to configure a
-DAS or an instance for automatic restart on the following operating
-systems:
-
-* Windows
-* Linux
-* Oracle Solaris
-
-To ensure that automatic restart functions correctly on Windows, you
-must prevent service shutdown when a user logs out.
-
-The following topics are addressed here:
-
-* link:#gjzfg[To Configure a DAS or an Instance for Automatic Restart on
-Windows]
-* link:#giurs[To Configure a DAS or an Instance for Automatic Restart on
-Linux]
-* link:#giusi[To Configure a DAS or an Instance for Automatic Restart on
-Oracle Solaris]
-* link:#giurf[To Prevent Service Shutdown When a User Logs Out on
-Windows]
-
-[[gjzfg]][[GSADG00338]][[to-configure-a-das-or-an-instance-for-automatic-restart-on-windows]]
-
-To Configure a DAS or an Instance for Automatic Restart on Windows
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-On Windows systems, the `create-service` subcommand creates a Windows
-service to represent the DAS or instance. The service is created in the
-disabled state. After this subcommand creates the service, you must use
-the Windows Services Manager or the Windows Services Wrapper to start,
-stop, uninstall, or install the service. To administer the service from
-the Windows command line, use the `sc.exe` tool.
-
-This subcommand must be run as the OS-level administrator user.
-
-1.  Create the service by using the link:../reference-manual/create-service.html#GSRFM00057[`create-service`]
-subcommand.
-2.  After the service is created, start the service by using the Windows
-Services Manager or the Windows Services Wrapper. +
-For example, to start the service for the default domain by using the
-`sc.exe` tool, type: +
-[source,oac_no_warn]
-----
-C:\> sc start domain1
-----
-If you are using the `sc.exe` tool to administer the service, use the
-tool as follows:
-* To obtain information about the service, use the `sc query` command.
-* To stop the service, use the `sc stop` command.
-* To uninstall the service, use the `sc delete` command.
-
-[[GSADG00135]][[gjzix]]
-
-
-Example 3-10 Creating a Service to Restart a DAS Automatically on
-Windows
-
-This example creates a service for the default domain on a system that
-is running Windows.
-
-[source,oac_no_warn]
-----
-asadmin> create-service
-Found the Windows Service and successfully uninstalled it.
-The Windows Service was created successfully.  It is ready to be started.  Here are 
-the details:
-ID of the service: domain1
-Display Name of the service:domain1 GlassFish Server
-Domain Directory: C:\glassfishv3\glassfish\domains\domain1
-Configuration file for Windows Services Wrapper: C:\glassfishv3\glassfish\domains\
-domain1\bin\domain1Service.xml
-The service can be controlled using the Windows Services Manager or you can use the
-Windows Services Wrapper instead:
-Start Command:  C:\glassfishv3\glassfish\domains\domain1\bin\domain1Service.exe  start
-Stop Command:   C:\glassfishv3\glassfish\domains\domain1\bin\domain1Service.exe  stop
-Uninstall Command:  C:\glassfishv3\glassfish\domains\domain1\bin\domain1Service.exe
-uninstall
-Install Command:  C:\glassfishv3\glassfish\domains\domain1\bin\domain1Service.exe
-install
-
-This message is also available in a file named PlatformServices.log in the domain's 
-root directory
-Command create-service executed successfully.
-----
-
-[[GSADG00136]][[gktso]]
-
-
-Example 3-11 Querying the Service to Restart a DAS Automatically on
-Windows
-
-This obtains information about the service for the default domain on a
-system that is running Windows.
-
-[source,oac_no_warn]
-----
-C:\> sc query domain1
-
-SERVICE_NAME: domain1
-        TYPE               : 10  WIN32_OWN_PROCESS
-        STATE              : 1  STOPPED
-        WIN32_EXIT_CODE    : 1077  (0x435)
-        SERVICE_EXIT_CODE  : 0  (0x0)
-        CHECKPOINT         : 0x0
-        WAIT_HINT          : 0x0
-----
-
-[[giurs]][[GSADG00339]][[to-configure-a-das-or-an-instance-for-automatic-restart-on-linux]]
-
-To Configure a DAS or an Instance for Automatic Restart on Linux
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-On Linux systems, the `create-service` subcommand creates a
-System-V-style initialization script
-`/etc/init.d/GlassFish_`domain-or-instance-name and installs a link to
-this script in any `/etc/rc`N`.d` directory that is present, where N is
-`0`, `1`, `2`, `3`, `4`, `5`, `6`, and `S`. After this subcommand
-creates the script, you must use this script to start, stop, or restart
-the domain or instance.
-
-The script automatically restarts the domain or instance only during a
-reboot. If the domain or instance is stopped, but the host remains
-running, the domain or instance is not restarted automatically. To
-restart the domain or instance, you must run the script manually.
-
-You might no longer require the domain or instance to be automatically
-restarted during a reboot. In this situation, use the operating system
-to delete the initialization script and the link to the script that the
-`create-service` subcommand creates.
-
-The `create-service` subcommand must be run as the OS-level root user.
-
-Create the service by using the link:../reference-manual/create-service.html#GSRFM00057[`create-service`]
-subcommand.
-
-[[GSADG828]][[sthref19]]
-
-
-Example 3-12 Creating a Service to Restart a DAS Automatically on Linux
-
-This example creates a service for the default domain on a system that
-is running Linux.
-
-[source,oac_no_warn]
-----
-asadmin> create-service
-Found the Linux Service and successfully uninstalled it.
-The Service was created successfully. Here are the details:
-Name of the service:domain1
-Type of the service:Domain
-Configuration location of the service:/etc/init.d/GlassFish_domain1
-User account that will run the service: root
-You have created the service but you need to start it yourself.
-Here are the most typical Linux commands of interest:
-
-* /etc/init.d/GlassFish_domain1 start
-* /etc/init.d/GlassFish_domain1 stop
-* /etc/init.d/GlassFish_domain1 restart
-
-For your convenience this message has also been saved to this file: 
-/export/glassfish3/glassfish/domains/domain1/PlatformServices.log
-Command create-service executed successfully.
-----
-
-[[giusi]][[GSADG00340]][[to-configure-a-das-or-an-instance-for-automatic-restart-on-oracle-solaris]]
-
-To Configure a DAS or an Instance for Automatic Restart on Oracle
-Solaris
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-On Oracle Solaris systems, the `create-service` subcommand creates an
-Oracle Solaris Service Management Facility (SMF) service that restarts a
-DAS or an instance. The service grants to the process the privileges of
-the user that runs the process. When you create an SMF service, the
-default user is the superuser. If you require a different user to run
-the process, specify the user in `method_credential`.
-
-If your process is to bind to a privileged port of Oracle Solaris, the
-process requires the `net_privaddr` privilege. The privileged ports of
-the Oracle Solaris operating system have port numbers less than 1024.
-
-To determine if a user has the `net_privaddr` privilege, log in as that
-user and type the command `ppriv -l | grep net_privaddr`.
-
-After you create and enable the SMF service, if the domain or instance
-is stopped, SMF restarts it.
-
-[[GSADG829]]
-
-Before You Begin
-
-To run the `create-service` subcommand, you must have `solaris.smf.*`
-authorization. For information about how to set the authorizations, see
-the
-http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Museradd-1m[`useradd`(1M)]
-man page and the
-http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Musermod-1m[`usermod`(1M)]
-man page. You must also have write permission in the directory tree:
-`/var/svc/manifest/application/SUNWappserver`. Usually, the superuser
-has both of these permissions. Additionally, Oracle Solaris
-administration commands such as
-http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Msvccfg-1m[`svccfg`],
-http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1svcs-1[`svcs`],
-and
-http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1auths-1[`auths`]
-must be available in the PATH.
-
-If a particular GlassFish Server domain or instance should not have
-default user privileges, modify the manifest of the service and reimport
-the service.
-
-1.  Create the service by using the link:../reference-manual/create-service.html#GSRFM00057[`create-service`]
-subcommand.
-2.  After the service is created, enable the service by using the
-`svacdm enable` command. +
-For example, to enable the SMF service for the default domain, type: +
-[source,oac_no_warn]
-----
-svacdm enable /appserver/domains/domain1
-----
-
-[[GSADG00137]][[giuqp]]
-
-
-Example 3-13 Creating a Service to Restart a Domain Automatically on
-Oracle Solaris
-
-This example creates a service for the default domain on a system that
-is running Oracle Solaris.
-
-[source,oac_no_warn]
-----
-asadmin> create-service
-The Service was created successfully. Here are the details:
-Name of the service:application/GlassFish/domain1
-Type of the service:Domain
-Configuration location of the service:/home/gfuser/glassfish-installations
-/glassfishv3/glassfish/domains
-Manifest file location on the system:/var/svc/manifest/application
-/GlassFish/domain1_home_gfuser_glassfish-installations_glassfishv3
-_glassfish_domains/Domain-service-smf.xml.
-You have created the service but you need to start it yourself.
-Here are the most typical Solaris commands of interest:
-* /usr/bin/svcs -a | grep domain1 // status
-* /usr/sbin/svcadm enable domain1 // start
-* /usr/sbin/svcadm disable domain1 // stop
-* /usr/sbin/svccfg delete domain1 // uninstall
-Command create-service executed successfully
-----
-
-[[GSADG830]]
-
-See Also
-
-For information about administering the service, see the following
-Oracle Solaris documentation:
-
-* "http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=SYSADV1hbrunlevels-25516[Managing
-Services (Overview)]" in System Administration Guide: Basic
-Administration
-* "http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=SYSADV1faauf[Managing
-Services (Tasks)]" in System Administration Guide: Basic Administration
-* http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1auths-1[`auths`(1)]
-* http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1svcs-1[`svcs`(1)]
-* http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Msvcadm-1m[`svcadm`(1M)]
-* http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Msvccfg-1m[`svccfg`(1M)]
-* http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Museradd-1m[`useradd`(1M)]
-* http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Musermod-1m[`usermod`(1M)]
-* http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN5rbac-5[`rbac`(5)]
-* http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN5smf-security-5[`smf_security`(5)]
-
-[[giurf]][[GSADG00341]][[to-prevent-service-shutdown-when-a-user-logs-out-on-windows]]
-
-To Prevent Service Shutdown When a User Logs Out on Windows
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-By default, the Java Virtual Machine (VM) receives signals from Windows
-that indicate that Windows is shutting down, or that a user is logging
-out of Windows, which causes the system to shut itself down cleanly.
-This behavior causes the GlassFish Server service to shut down. To
-prevent the service from shutting down when a user logs out, you must
-set the `-Xrs` Java VM option
-(`https://javaee.github.io/glassfish/documentation`).
-
-1.  Ensure that the DAS is running.
-2.  Set the `-Xrs` Java VM option for the DAS. +
-Use the link:../reference-manual/create-jvm-options.html#GSRFM00042[`create-jvm-options`] subcommand for this
-purpose. +
-[source,oac_no_warn]
-----
-asadmin> create-jvm-options -Xrs
-----
-3.  Set the `-Xrs` Java VM option for the Java VM within which the
-`asadmin` utility runs. +
-To set this option, edit the `asadmin.bat` file to add the `-Xrs` option
-to the line that runs the `admin-cli.jar` file.
-1.  In the as-install`\bin\asadmin.bat` file, edit the line to read as
-follows: +
-[source,oac_no_warn]
-----
-%JAVA% -Xrs -jar "%~dp0..\modules\admin-cli.jar" %*
-----
-2.  In the as-install-parent`\bin\asadmin.bat` file, edit the line to
-read as follows: +
-[source,oac_no_warn]
-----
-%JAVA% -Xrs -jar "%~dp0..\glassfish\modules\admin-cli.jar" %*
-----
-4.  If the GlassFish Server service is running, restart the service for
-your changes to take effect.
-
-[[gityo]][[GSADG00541]][[backing-up-and-restoring-a-domain]]
-
-Backing Up and Restoring a Domain
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following topics are addressed here:
-
-* link:#ggocq[To Back Up a Domain]
-* link:#ggody[To Restore a Domain]
-* link:#ghgod[To List Domain Backups]
-
-[[ggocq]][[GSADG00352]][[to-back-up-a-domain]]
-
-To Back Up a Domain
-^^^^^^^^^^^^^^^^^^^
-
-Use the `backup-domain` subcommand in local mode to make a backup of a
-specified domain.
-
-When you use the `backup-domain` subcommand, GlassFish Server creates a
-ZIP file backup of all the files and subdirectories in the domain's
-directory, domain-root-dir`/`domain-dir, except for the `backups`
-subdirectory.
-
-The `backup-domain` subcommand provides several options to meet
-particular needs, including:
-
-* `--backupdir` to specify a directory in which to store the backup
-instead of the default domain-root-dir`/`domain-dir`/backups`.
-* `--description` to provide a description of the backup to be stored in
-the backup itself.
-
-1.  Ensure that the domain is stopped . +
-The `backup-domain` subcommand operates only when the domain is stopped.
-2.  Back up the domain by using the link:../reference-manual/backup-domain.html#GSRFM00003[`backup-domain`]
-subcommand.
-3.  Restore the domain to its previous state, if necessary. +
-Start or resume the domain.
-
-[[GSADG00149]][[ggoxt]]
-
-
-Example 3-14 Backing Up the Default Domain
-
-This example makes a backup of the default domain, `domain1`, storing
-the backup file in `/net/backups.example.com/glassfish`:
-
-[source,oac_no_warn]
-----
-asadmin> backup-domain --backupdir /net/backups.example.com/glassfish domain1
-Backed up domain1 at Mon Jan 17 08:16:22 PST 2011.
-Command backup-domain executed successfully
-----
-
-[[GSADG842]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help backup-domain` at the command line.
-
-[[ggody]][[GSADG00353]][[to-restore-a-domain]]
-
-To Restore a Domain
-^^^^^^^^^^^^^^^^^^^
-
-Use the `restore-domain` subcommand in local mode to use a backup file
-to restore the files and subdirectories in a specified domain's
-directory.
-
-The `restore-domain` subcommand can use backup files created by the
-`backup-domain` subcommand and by automatic backup configurations, both
-full backups and configuration-only backups. Automatic backup
-configurations are available only in Oracle GlassFish Server.
-
-1.  If necessary, notify domain users that the domain is being restored
-from backup.
-2.  Ensure that the domain is stopped. +
-The `restore-domain` subcommand operates only when the domain is
-stopped. +
-To determine whether the domain is running, use the
-link:../reference-manual/list-domains.html#GSRFM00163[`list-domains`] subcommand, as described in
-link:#ggoco[To List Domains]. +
-To stop the domain, use the link:../reference-manual/stop-domain.html#GSRFM00240[`stop-domain`] subcommand
-as described in link:#ggoch[To Stop a Domain].
-3.  Restore backup files for a domain by using the
-link:../reference-manual/restore-domain.html#GSRFM00221[`restore-domain`] subcommand.
-4.  Verify that the restore has succeeded.
-5.  If necessary, notify users that the domain has been restored and is
-available.
-
-[[GSADG00150]][[ggoys]]
-
-
-Example 3-15 Restoring the Default Domain
-
-This example restores files for the default domain, `domain1`, from the
-most recent backup stored in a specified backup directory:
-
-[source,oac_no_warn]
-----
-asadmin> restore-domain --backupdir /net/backups.example.com/glassfish domain1
-Restored the domain (domain1) to /home/user1/glassfish3/glassfish/domains/domain1
-Command restore-domain executed successfully.
-----
-
-[[GSADG843]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin restore-domain --help` at the command line.
-
-[[ghgod]][[GSADG00354]][[to-list-domain-backups]]
-
-To List Domain Backups
-^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `list-backups` subcommand in local mode to display information
-about backups of a specified domain stored in a specified backup
-directory.
-
-The `list-backups` subcommand provides several options to meet
-particular needs, including `--backupdir` to specify a directory where
-backups are stored instead of the default domain-dir`/backups`.
-
-List backups by using the `list-backups` subcommand.
-
-[[GSADG00151]][[ghgsv]]
-
-
-Example 3-16 Listing Backups of the Default Domain
-
-This example lists the backups of the default domain, `domain1`, that
-are stored in the `/net/backups.example.com/glassfish` directory:
-
-[source,oac_no_warn]
-----
-asadmin> list-backups --backupdir /net/backups.example.com/glassfish domain1
-CONFIG        USER   BACKUP DATE                   FILENAME
-              user1  Mon Jan 17 08:16:22 PST 2011  domain1_2011_01_17_v00001.zip
-monthly-full  user1  Wed Dec 01 00:00:00 PST 2010  domain1_2010_12_01_v00001.zip
-monthly-full  user1  Sat Jan 01 00:00:03 PST 2011  domain1_2011_01_01_v00001.zip
-monthly-full  user1  Tue Feb 01 00:00:01 PST 2011  domain1_2011_02_01_v00001.zip
-Command list-backups executed successfully.
-----
-
-Note that this listing includes backups created automatically by a
-backup configuration. This feature is available only in Oracle GlassFish
-Server.
-
-[[GSADG844]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-backups` at the command line.
-
-[[gglri]][[GSADG00542]][[re-creating-the-domain-administration-server-das]]
-
-Re-Creating the Domain Administration Server (DAS)
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-For mirroring purposes, and to provide a working copy of the DAS, you
-must have:
-
-* One host (olddashost) that contains the original DAS.
-* A second host (apphost) that contains a cluster with server instances
-running applications and catering to clients. The cluster is configured
-using the DAS on the first host.
-* A third host (newdashost) where the DAS needs to be re-created in a
-situation where the first host crashes or is being taken out of service.
-
-
-[NOTE]
-=======================================================================
-
-You must maintain a backup of the DAS from the first host using the
-olink:GSRFM00003[`backup-domain`] subcommand as described in
-link:#ggocq[To Back Up a Domain]. You can automatically maintain a
-backup of the DAS using the automatic backups feature of Oracle
-GlassFish Server.
-
-=======================================================================
-
-
-
-[NOTE]
-=======================================================================
-
-Oracle GlassFish Server includes `asadmin` subcommands that simplify
-this procedure. If you are using Oracle GlassFish Server, see
-link:#gglnp[To Migrate the DAS].
-
-=======================================================================
-
-
-[[gglnp]][[GSADG00355]][[to-migrate-the-das]]
-
-To Migrate the DAS
-^^^^^^^^^^^^^^^^^^
-
-The following steps are required to migrate the DAS from the first host
-(olddashost) to the third host (newdashost).
-
-1.  Install GlassFish Server on newdashost just as it was installed on
-olddashost. +
-This is required so that the DAS can be properly restored on newdashost
-without causing path conflicts.
-2.  Use the `restore-domain` subcommand to restore the latest backup
-file onto newdashost. +
-For example: +
-[source,oac_no_warn]
-----
-asadmin> restore-domain --backupdir /net/backups.example.com/glassfish
-----
-This example assumes that backups are stored in a network-accessible
-location. If this is not the case, manually copy the latest backup file
-from offline storage to a directory on newdashost. +
-You can backup any domain. However, while re-creating the domain, the
-domain name should be same as the original.
-3.  Stop the domain on olddashost, if it is running.
-4.  Start the domain on newdashost by using the
-link:../reference-manual/start-domain.html#GSRFM00235[`start-domain`] subcommand. +
-For example: +
-[source,oac_no_warn]
-----
-asadmin> start-domain domain1
-----
-5.  If the domain on olddashost was centrally administered, set up
-centralized administration on newdashost. +
-See "link:../ha-administration-guide/ssh-setup.html#GSHAG00003[Enabling Centralized Administration of GlassFish
-Server Instances]" in GlassFish Server Open Source Edition High
-Availability Administration Guide for instructions.
-6.  Verify that instances on other hosts are visible to the new DAS on
-newdashost: +
-[source,oac_no_warn]
-----
-asadmin> list-instances --long
-----
-7.  Change the DAS host values for properties under the node on apphost. +
-In the file as-install`/nodes/`node-name`/agent/config/das.properties`
-file, change the `agent.das.host` property value to refer to newdashost
-instead of olddasnost.
-8.  Use the new DAS to restart clusters and standalone instances on
-apphost: +
-Restarting the clustered and standalone instances on apphost triggers
-their recognition of the new DAS on newdashost.
-1.  Use the `list-clusters` subcommand to list the clusters in the
-domain.
-2.  Use the `stop-cluster` subcommand to stop each cluster.
-3.  Use the `list-instances` subcommand to list the instances in the
-domain.
-4.  Use the `restart-instance` subcommand to restart each standalone
-instance.
-5.  Use the `start-cluster` subcommand to start each cluster. +
-If the domain does not use centralized administration, use the
-`start-local-instance` subcommand to start the cluster instances on
-apphost.
-9.  Verify that instances on apphost are running: +
-[source,oac_no_warn]
-----
-asadmin> list-instances --long
-----
-10. Decommission and discontinue use of the DAS on olddashost.
-
-[[gitvn]][[GSADG00543]][[additional-domain-tasks]]
-
-Additional Domain Tasks
-~~~~~~~~~~~~~~~~~~~~~~~
-
-The following topics are addressed here:
-
-* link:#ghhnt[To Display Domain Uptime]
-* link:#ghmbn[To Switch a Domain to Another Supported Java Version]
-* link:#gkvkb[To Change the Administration Port of a Domain]
-
-[[ghhnt]][[GSADG00356]][[to-display-domain-uptime]]
-
-To Display Domain Uptime
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `uptime` subcommand in remote mode to display the length of time
-that the domain administration server (DAS) has been running since it
-was last started.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Display uptime by using the link:../reference-manual/uptime.html#GSRFM00258[`uptime`] subcommand.
-
-[[GSADG00152]][[ghlds]]
-
-
-Example 3-17 Displaying the DAS Uptime
-
-This example displays the length of time that the DAS has been running.
-
-[source,oac_no_warn]
-----
-asadmin> uptime
-Uptime: 1 Weeks, 4 days, 0 hours, 17 minutes, 14 seconds, Total milliseconds: 951434595
-Command uptime executed successfully.
-----
-
-[[GSADG845]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help uptime` at the command line.
-
-[[ghmbn]][[GSADG00357]][[to-switch-a-domain-to-another-supported-java-version]]
-
-To Switch a Domain to Another Supported Java Version
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-GlassFish Server 5.0 requires Java SE 8 as the underlying virtual
-machine for the Java platform (Java Virtual Machine or JVM machine).
-
-
-[NOTE]
-=======================================================================
-
-Do not downgrade to an earlier Java version after a domain has been
-created with a newer JVM machine. If you must downgrade your JVM
-machine, downgrade it only for individual domains.
-
-=======================================================================
-
-
-1.  If you have not already done so, download the desired Java SDK (not
-the JRE) and install it on your system. +
-The Java SDK can be downloaded from the
-http://www.oracle.com/technetwork/java/javase/downloads/index.html[Java
-SE Downloads page] .
-2.  Start the domain for which you are changing the JDK. +
-Use the following format: +
-[source,oac_no_warn]
-----
-as-install/bin/asadmin start-domain domain-name
-----
-For a valid JVM installation, locations are checked in the following
-order:
-1.  `domain.xml` (`java-home` inside `java-config`)
-2.  `asenv.conf` (setting `AS_JAVA="path to java home"`) +
-If a legal JDK is not found, a fatal error occurs and the problem is
-reported back to you.
-3.  If necessary, change the JVM machine attributes for the domain. +
-In particular, you might need to change the `JAVA_HOME` environment
-variable. For example, to change the `JAVA_HOME` variable, type: +
-[source,oac_no_warn]
-----
-as-install/bin/asadmin set "server.java-config.java-home=path-to-java-home"
-----
-
-[[gkvkb]][[GSADG00358]][[to-change-the-administration-port-of-a-domain]]
-
-To Change the Administration Port of a Domain
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `set` subcommand in remote mode to change the administration
-port of a domain.
-
-The HTTP port or the HTTPS port for administration of a domain is
-defined by the `--adminport` option of the
-link:../reference-manual/create-domain.html#GSRFM00023[`create-domain`] subcommand when the domain is created.
-If this port must be reallocated for another purpose, change the port on
-which the DAS listens for administration requests.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Set the port number to its new value. +
-Use the link:../reference-manual/set.html#GSRFM00226[`set`] subcommand for this purpose. +
-[source,oac_no_warn]
-----
-$ asadmin set 
-server-config.network-config.network-listeners.network-listener.admin-listener.port=new-port-number
-----
-The new-port-number is the new value that you are setting for the port
-number. +
-
-[NOTE]
-=======================================================================
-
-After you set the port number to its new value, running the
-`list-domains` subcommand incorrectly reports that the DAS is not
-running. The `list-domains` subcommand reports the correct state again
-only after you stop and restart the domain as explained in the steps
-that follow.
-
-=======================================================================
-
-3.  Stop the domain, specifying the host on which the DAS is running and
-the old administration port number of the domain. +
-You must specify the old port number because the DAS is still listening
-for administration requests on this port. If you omit the port number,
-the command fails because the `stop-domain` subcommand attempts to
-contact the DAS through the new port number. +
-
-[NOTE]
-=======================================================================
-
-Only the options that are required to complete this task are provided in
-this step. For information about all the options for controlling the
-behavior of the domain, see the olink:GSRFM00240[`stop-domain`(1)] help
-page.
-
-=======================================================================
-
-[source,oac_no_warn]
-----
-$ asadmin --host host-name --port old-port-number stop-domain
-----
-host-name::
-  The name of the host on which the DAS is running. If you run the
-  `stop-domain` subcommand on the host where the DAS is running, you
-  must specify the actual host name and not `localhost`. If you specify
-  `localhost`, the `stop-domain` subcommand fails.
-old-port-number::
-  The value of administration port number of the domain before you
-  changed it in the preceding step.
-4.  Start the domain. +
-
-[NOTE]
-=======================================================================
-
-Only the options that are required to complete this task are provided in
-this step. For information about all the options for controlling the
-behavior of the domain, see the olink:GSRFM00235[`start-domain`(1)] help
-page.
-
-=======================================================================
-
-[source,oac_no_warn]
-----
-$ start-domain [domain-name]
-----
-The domain-name is the name of the domain to start. If only one domain
-subdirectory is contained in the `domains` directory, you may omit this
-option.
-
-[[GSADG00153]][[gkvkl]]
-
-
-Example 3-18 Changing the Administration Port of a Domain
-
-This example changes the administration port of the domain `domain1`
-from 4848 to 4849. The DAS is running on the host `xk01.example.com`.
-
-[source,oac_no_warn]
-----
-$ asadmin set 
-server-config.network-config.network-listeners.network-listener.admin-listener.port=4849
-server-config.network-config.network-listeners.network-listener.admin-listener.port=4849
-Command set executed successfully.
-$ asadmin --host xk01.example.com --port 4848 stop-domain
-Waiting for the domain to stop ....
-Command stop-domain executed successfully.
-$ asadmin start-domain
-Waiting for domain1 to start ........................
-Successfully started the domain : domain1
-domain  Location: /export/glassfish3/glassfish/domains/domain1
-Log File: /export/glassfish3/glassfish/domains/domain1/logs/server.log
-Admin Port: 4849
-Command start-domain executed successfully.
-----
-
-[[GSADG846]]
-
-See Also
-
-* link:../reference-manual/create-domain.html#GSRFM00023[`create-domain`(1)]
-* link:../reference-manual/set.html#GSRFM00226[`set`(1)]
-* link:../reference-manual/start-domain.html#GSRFM00235[`start-domain`(1)]
-* link:../reference-manual/stop-domain.html#GSRFM00240[`stop-domain`(1)]
-
-You can also view the full syntax and options of the subcommands by
-typing the following commands at the command line:
-
-* `asadmin help create-domain`
-* `asadmin help set`
-* `asadmin help start-domain`
-* `asadmin help stop-domain`
-
-
diff --git a/docs/administration-guide/src/main/jbake/content/general-administration.adoc b/docs/administration-guide/src/main/jbake/content/general-administration.adoc
deleted file mode 100644
index 20f66cf..0000000
--- a/docs/administration-guide/src/main/jbake/content/general-administration.adoc
+++ /dev/null
@@ -1,3334 +0,0 @@
-type=page
-status=published
-title=General Administration
-next=domains.html
-prev=part-runtime-admin.html
-~~~~~~
-General Administration
-======================
-
-[[GSADG00005]][[gitya]]
-
-
-[[general-administration]]
-2 General Administration
-------------------------
-
-This chapter provides instructions for performing general administration
-tasks in the GlassFish Server Open Source Edition 5.0 environment by
-using the `asadmin` command-line utility.
-
-The following topics are addressed here:
-
-* link:#giobi[Using the `asadmin` Utility]
-* link:#ghcjc[Administering System Properties]
-* link:#CHDJBJDA[Using Configuration Modularity]
-* link:#gixps[Administering Resources]
-* link:#ggocm[Listing Various System Elements]
-* link:#gjipx[Using REST Interfaces to Administer GlassFish Server]
-
-Instructions for accomplishing the tasks in this chapter by using the
-Administration Console are contained in the Administration Console
-online help.
-
-[[giobi]][[GSADG00530]][[using-the-asadmin-utility]]
-
-Using the `asadmin` Utility
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Use the `asadmin` utility to perform administrative tasks for GlassFish
-Server from the command line or from a script. You can use this utility
-instead of the Administration Console interface.
-
-The following topics are addressed here:
-
-* link:#giwdb[Path to the `asadmin` Utility]
-* link:#givvn[`asadmin` Utility Syntax]
-* link:#ghvzx[To Run an `asadmin` Utility Subcommand in Single Mode]
-* link:#givlw[To Display Help Information for the `asadmin` Utility or a
-Subcommand]
-* link:#giodz[To Start a Multimode Session]
-* link:#givjn[To End a Multimode Session]
-* link:#givjd[To Run a Set of `asadmin` Subcommands From a File]
-* link:#CACDDHBA[To Run `asadmin` Subcommands in `--detach` Mode]
-
-[[giwdb]][[GSADG00705]][[path-to-the-asadmin-utility]]
-
-Path to the `asadmin` Utility
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The `asadmin` utility is located in the as-install`/bin` directory. To
-run the `asadmin` utility without specifying the path, ensure that this
-directory is in your path.
-
-[[givvn]][[GSADG00706]][[asadmin-utility-syntax]]
-
-`asadmin` Utility Syntax
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-The syntax for running the `asadmin` utility is as follows:
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-util-options] [subcommand [subcommand-options] [operands]]
-----
-
-The replaceable items in this syntax are described in the subsections
-that follow. For full details of this syntax, see the
-https://javaee.github.io/glassfish/doc/5.0/reference-manual.pdf[`asadmin`(1M)]
-help page.
-
-[[ghvzn]][[GSADG00631]][[subcommands-of-the-asadmin-utility]]
-
-Subcommands of the `asadmin` Utility
-++++++++++++++++++++++++++++++++++++
-
-The subcommand identifies the operation or task that you are performing.
-Subcommands are case-sensitive. Each subcommand is either a local
-subcommand or a remote subcommand.
-
-* A local subcommand can be run without a running domain administration
-server (DAS). However, to run the subcommand and have access to the
-installation directory and the domain directory, the user must be logged
-in to the machine that hosts the domain.
-* A remote subcommand is always run by connecting to a DAS and running
-the subcommand there. A running DAS is required.
-
-For a list of the subcommands for this release of GlassFish Server, see
-Section 1 of the
-https://javaee.github.io/glassfish/doc/5.0/reference-manual.pdf[GlassFish
-Server Open Source Edition Reference Manual].
-
-[[ghvyd]][[GSADG00632]][[asadmin-utility-options-and-subcommand-options]]
-
-`asadmin` Utility Options and Subcommand Options
-++++++++++++++++++++++++++++++++++++++++++++++++
-
-Options control the behavior of the `asadmin` utility and its
-subcommands. Options are case-sensitive.
-
-The `asadmin` utility has the following types of options:
-
-* `asadmin`utility options. These options control the behavior of the
-`asadmin` utility, not the subcommand. The `asadmin` utility options may
-precede or follow the subcommand, but `asadmin` utility options after
-the subcommand are deprecated. All `asadmin` utility options must either
-precede or follow the subcommand. If `asadmin` utility options are
-specified both before and after the subcommand, an error occurs. For a
-description of the `asadmin` utility options, see the
-link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] help page.
-* Subcommand Options. These options control the behavior of the
-subcommand, not the `asadmin` utility. Subcommand options must follow
-the subcommand. For a description of a subcommand's options, see the
-entry for the subcommand in the
-https://javaee.github.io/glassfish/doc/5.0/reference-manual.pdf[GlassFish
-Server Open Source Edition Reference Manual]. +
-
-[NOTE]
-=======================================================================
-
-Not all subcommand options are supported for this release of GlassFish
-Server. If you specify an unsupported option, a syntax error does not
-occur. Instead, the command runs successfully and the unsupported option
-is silently ignored.
-
-=======================================================================
-
-
-A subcommand option may have the same name as an `asadmin` utility
-option, but the effects of the two options are different.
-
-Options have a long form and a short form.
-
-* The short form of an option has a single dash (`-`) followed by a
-single character.
-* The long form of an option has two dashes (`--`) followed by an option
-word.
-
-For example, the short form and the long form of the option for
-specifying terse output are as follows:
-
-* Short form: `-t`
-* Long form: `--terse`
-
-Most options require argument values, except Boolean options, which
-toggle to enable or disable a feature.
-
-[[ghvyj]][[GSADG00633]][[operands-of-asadmin-utility-subcommands]]
-
-Operands of `asadmin` Utility Subcommands
-+++++++++++++++++++++++++++++++++++++++++
-
-Operands specify the items on which the subcommand is to act. Operands
-must follow the argument values of subcommand options, and are set off
-by a space, a tab, or double dashes (`--`). The `asadmin` utility treats
-anything that follows the subcommand options and their values as an
-operand.
-
-[[ghvzx]][[GSADG00304]][[to-run-an-asadmin-utility-subcommand-in-single-mode]]
-
-To Run an `asadmin` Utility Subcommand in Single Mode
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-In single mode, you must type a separate `asadmin` command for each
-subcommand that you want to use. After the subcommand has run, you are
-returned to the operating system's command shell. Any `asadmin` utility
-options must be specified in each separate `asadmin` command that you
-run. If you require the same `asadmin` utility options for multiple
-subcommands, use the `asadmin` utility in multimode. For more
-information, see link:#giodz[To Start a Multimode Session].
-
-1.  In the operating system's command shell, run the `asadmin` utility,
-specifying the subcommand.
-2.  If necessary, also specify any required `asadmin` utility options,
-subcommand options, and operands.
-
-[[GSADG00098]][[giwdr]]
-
-
-Example 2-1 Running an `asadmin` Utility Subcommand in Single Mode
-
-This example runs the link:../reference-manual/list-applications.html#GSRFM00148[`list-applications`] subcommand
-in single mode. In this example, the default values for all options are
-used.
-
-The example shows that the application `hello` is deployed on the local
-host.
-
-[source,oac_no_warn]
-----
-asadmin list-applications
-hello <web>
-Command list-applications executed successfully.
-----
-
-[[GSADG00099]][[giwbf]]
-
-
-Example 2-2 Specifying an `asadmin` Utility Option With a Subcommand in
-Single Mode
-
-This example specifies the `--host` `asadmin` utility option with the
-`list-applications` subcommand in single mode. In this example, the DAS
-is running on the host `srvr1.example.com`.
-
-The example shows that the applications `basic-ezcomp`, `scrumtoys`,
-`ejb31-war`, and `automatic-timer-ejb` are deployed on the host
-`srvr1.example.com`.
-
-[source,oac_no_warn]
-----
-asadmin --host srvr1.example.com list-applications
-basic-ezcomp <web>
-scrumtoys <web>
-ejb31-war <ejb, web>
-automatic-timer-ejb <ejb>
-Command list-applications executed successfully.
-----
-
-[[GSADG00100]][[ghvyk]]
-
-
-Example 2-3 Specifying an `asadmin` Utility Option and a Subcommand
-Option in Single Mode
-
-This example specifies the `--host` `asadmin` utility option and the
-`--type` subcommand option with the `list-applications` subcommand in
-single mode. In this example, the DAS is running on the host
-`srvr1.example.com` and applications of type `web` are to be listed.
-
-[source,oac_no_warn]
-----
-asadmin --host srvr1.example.com list-applications --type web
-basic-ezcomp <web>
-scrumtoys <web>
-ejb31-war <ejb, web>
-Command list-applications executed successfully.
-----
-
-[[givlw]][[GSADG00305]][[to-display-help-information-for-the-asadmin-utility-or-a-subcommand]]
-
-To Display Help Information for the `asadmin` Utility or a Subcommand
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-GlassFish Server provides help information about the syntax, purpose,
-and options of the `asadmin` utility and its subcommands. This help
-information is written in the style of UNIX platform man pages. This
-help information is also available in the link:../reference-manual/toc.html#GSRFM[GlassFish Server
-Open Source Edition Reference Manual].
-
-1.  If you are displaying help information for a remote subcommand,
-ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Specify the subcommand of interest as the operand of the `help`
-subcommand. +
-If you run the `help` subcommand without an operand, help information
-for the `asadmin` utility is displayed.
-
-[[GSADG00101]][[giwgs]]
-
-
-Example 2-4 Displaying Help Information for the `asadmin` Utility
-
-This example displays the help information for the `asadmin` utility.
-
-[source,oac_no_warn]
-----
-asadmin help
-----
-
-[[GSADG00102]][[giusg]]
-
-
-Example 2-5 Displaying Help Information for an `asadmin` Utility
-Subcommand
-
-This example displays the help information for the
-`create-jdbc-resource` subcommand.
-
-[source,oac_no_warn]
-----
-asadmin help create-jdbc-resource
-----
-
-[[GSADG800]]
-
-See Also
-
-To display the available subcommands, use the
-link:../reference-manual/list-commands.html#GSRFM00154[`list-commands`] subcommand. Local subcommands are
-displayed before remote subcommands. If the server is not running, only
-local subcommands are displayed.
-
-[[giodz]][[GSADG00306]][[to-start-a-multimode-session]]
-
-To Start a Multimode Session
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The `asadmin` utility can be used in multiple command mode, or
-multimode. In multimode, you run the `asadmin` utility once to start a
-multimode session. During the session, the `asadmin` utility continues
-to accept subcommands until you end the session and return to the
-operating system's command shell. Any `asadmin` utility options that you
-set for your multimode session are used for all subsequent subcommands
-in the session.
-
-
-[NOTE]
-===========================================================
-
-Starting a multimode session does not require a running DAS.
-
-===========================================================
-
-
-1.  Do one of the following:
-* Run the `asadmin` utility without a subcommand.
-* Use the link:../reference-manual/multimode.html#GSRFM00213[`multimode`] subcommand.
-2.  If necessary, also specify any `asadmin` utility options that will
-apply throughout the multimode session.
-3.  In a multimode session, the `asadmin>` prompt is displayed on the
-command line. You can now type `asadmin` subcommands at this prompt to
-administer GlassFish Server.
-
-[[GSADG00103]][[givuq]]
-
-
-Example 2-6 Starting a Multimode Session With `asadmin` Utility Options
-
-This example starts a multimode session in which the `asadmin` utility
-options `--user` and `--passwordfile` are set for the session.
-
-[source,oac_no_warn]
-----
-asadmin --user admin1 --passwordfile pwd.txt multimode
-----
-
-[[GSADG00104]][[giwgh]]
-
-
-Example 2-7 Starting a Multimode Session by Using the `multimode`
-Subcommand
-
-This example uses the `multimode` subcommand to start a multimode
-session in which the default `asadmin` utility options are used.
-
-[source,oac_no_warn]
-----
-asadmin multimode
-----
-
-The `asadmin>` prompt is displayed on the command line.
-
-[[GSADG00105]][[ghvzc]]
-
-
-Example 2-8 Running a Subcommand in a Multimode Session
-
-This example starts a multimode session and runs the `list-domains`
-subcommand in the session.
-
-[source,oac_no_warn]
-----
-asadmin
-Enter commands one per "line", ^D to quit
-asadmin> list-domains
-Name: domain1 Status: Running
-Command list-domains executed successfully.
-asadmin>
-----
-
-[[GSADG801]]
-
-Starting a Multimode Session From Within an Existing Multimode Session
-
-You can start a multimode session from within an existing session by
-running the `multimode` subcommand from within the existing session.
-After you end the second multimode session, you return to your original
-multimode session.
-
-[[GSADG802]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help multimode` at the command line.
-
-[[givjn]][[GSADG00307]][[to-end-a-multimode-session]]
-
-To End a Multimode Session
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-At the `asadmin>` prompt, type one of the following commands or key
-combinations:
-
-* `exit`
-* `quit`
-* UNIX and Linux systems: Ctrl-D
-* Windows systems: Ctrl-Z
-
-
-[CAUTION]
-=======================================================================
-
-Do not type Ctrl-C to end a multimode session. If a domain or GlassFish
-Server instance is started from the multimode session, typing Ctrl-C
-kills the domain or instance process.
-
-=======================================================================
-
-
-You are returned to the operating system's command shell and the
-`asadmin>` prompt is no longer displayed. If the `asadmin>` prompt is
-still displayed, you might have opened a multimode session within a
-multimode session. In this situation, repeat this procedure to end the
-remaining multimode session.
-
-[[givjd]][[GSADG00308]][[to-run-a-set-of-asadmin-subcommands-from-a-file]]
-
-To Run a Set of `asadmin` Subcommands From a File
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Running a set of `asadmin` subcommands from a file enables you to
-automate repetitive tasks.
-
-1.  Create a plain text file that contains the sequence of subcommands
-that you want to run.
-2.  Run the link:../reference-manual/multimode.html#GSRFM00213[`multimode`] subcommand, specifying the
-file that you created. +
-If necessary, also specify any `asadmin` utility options that are
-required to enable subcommands in the file to run.
-
-[[GSADG00106]][[givul]]
-
-
-Example 2-9 Running a Set of `asadmin` Subcommands From a File
-
-This example contains the following:
-
-* A listing of a file that is named `commands_file.txt`, which contains
-a sequence of `asadmin` subcommands
-* The command to run the subcommands in the file `commands_file.txt`
-
-The `commands_file.txt` file contains the `asadmin` utility subcommands
-to perform the following sequence of operations:
-
-1.  Creating the domain `customdomain`
-2.  Starting the domain `customdomain`
-3.  Listing all available subcommands
-4.  Stopping the domain `customdomain`
-5.  Deleting the domain `customdomain`
-
-The content of the `commands_file.txt` file is as follows:
-
-[source,oac_no_warn]
-----
-create-domain --portbase 9000 customdomain
-start-domain customdomain
-list-commands
-stop-domain customdomain
-delete-domain customdomain
-----
-
-This example runs the sequence of subcommands in the `commands_file.txt`
-file. Because the `--portbase` option is specified for the
-`create-domain` subcommand in the file, the `--port` `asadmin` utility
-option must also be set.
-
-[source,oac_no_warn]
-----
-asadmin --port 9048 multimode --file commands_file.txt
-----
-
-[[GSADG803]]
-
-See Also
-
-For more information about the subcommands in the preceding example, see
-the following help pages:
-
-* link:../reference-manual/create-domain.html#GSRFM00023[`create-domain`(1)]
-* link:../reference-manual/delete-domain.html#GSRFM00075[`delete-domain`(1)]
-* link:../reference-manual/list-commands.html#GSRFM00154[`list-commands`(1)]
-* link:../reference-manual/multimode.html#GSRFM00213[`multimode`(1)]
-* link:../reference-manual/start-domain.html#GSRFM00235[`start-domain`(1)]
-* link:../reference-manual/stop-domain.html#GSRFM00240[`stop-domain`(1)]
-
-[[CACDDHBA]][[GSADG1055]][[to-run-asadmin-subcommands-in---detach-mode]]
-
-To Run `asadmin` Subcommands in `--detach` Mode
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can use the `--detach` option of the `asadmin` utility to detach
-`asadmin` subcommands and run them in the background in detach mode. The
-`asadmin` `--detach` option is useful for long-running subcommands and
-enables you to run several independent subcommands from one console or
-script.
-
-1.  Ensure that the server is running. +
-Remote commands require a running server.
-2.  Detach and run the subcommand by using the `asadmin` `--detach`
-option.
-
-[[GSADG1056]][[sthref7]]
-
-
-Example 2-10 Using the `--detach` Option in Single Mode
-
-This example uses the `asadmin` `--detach` option in single mode to run
-the `create-cluster` subcommand.
-
-[source,oac_no_warn]
-----
-asadmin --detach create-cluster Cluster1
-Job ID: 1
-Command create-cluster started successfully.
-----
-
-[[GSADG1057]][[sthref8]]
-
-
-Example 2-11 Using the `--detach` Option in Multimode
-
-This example uses the `asadmin` `--detach` option in multimode to run
-the `create-cluster` subcommand.
-
-[source,oac_no_warn]
-----
-asadmin> create-cluster Cluster1 --detach
-Job ID: 1
-Command create-cluster started successfully.
-----
-
-Job IDs are assigned to subcommands that are started using the `asadmin`
-`--detach` option or that contain progress information. You can use the
-`list-jobs` subcommand to list jobs and their job IDs, the `attach`
-subcommand to reattach to a job and view its status, and the
-`configure-managed-jobs` subcommand to configure how long information
-about jobs is kept.
-
-[[GSADG1058]][[sthref9]]
-
-
-Example 2-12 Listing Jobs
-
-This example runs the `list-jobs` subcommand in multimode to list jobs
-and job information.
-
-[source,oac_no_warn]
-----
-asadmin> list-jobs
-JOB ID     COMMAND           STATE       EXIT CODE TIME OF COMPLETION
-1          create-cluster    COMPLETED   SUCCESS   2013-02-15 16:16:16 PST
-2          deploy            COMPLETED   FAILURE   2013-02-15 18:26:30 PST
-Command list-jobs executed successfully
-----
-
-[[GSADG1059]][[sthref10]]
-
-
-Example 2-13 Attaching to a Subcommand and Checking Its Status
-
-This example runs the `attach` subcommand in multimode to attach to the
-`create-cluster` subcommand with a job ID of `1`. If a subcommand is
-still in progress, the output displays the current status, such as
-percentage complete.
-
-[source,oac_no_warn]
-----
-asadmin> attach 1
-Command create-cluster executed with status SUCCESS.
-Command attach executed successfully.
-----
-
-[[GSADG1060]][[sthref11]]
-
-
-Example 2-14 Configuring Managed Jobs
-
-This example runs the `configure-managed-jobs` subcommand in multimode
-to set the job retention period to 36 hours. Time periods can be
-specified in Hh|Mm|Ss for hours, minutes, or seconds.
-
-[source,oac_no_warn]
-----
-asadmin> configure-managed-jobs --job-retention-period=36h
-Command configure-managed-jobs executed successfully.
-----
-
-[[GSADG1061]]
-
-See Also
-
-For the full syntax and options of the subcommands in the preceding
-examples, see the following help pages:
-
-* link:../reference-manual/attach.html#GSRFM825[`attach`(1)]
-* link:../reference-manual/configure-managed-jobs.html#GSRFM836[`configure-managed-jobs`(1)]
-* link:../reference-manual/list-jobs.html#GSRFM867[`list-jobs`(1)]
-
-[[ghcjc]][[GSADG00531]][[administering-system-properties]]
-
-Administering System Properties
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Shared server instances will often need to override attributes defined
-in their referenced configuration. Any configuration attribute can be
-overridden through a system property of the corresponding name.
-
-The following topics are addressed here:
-
-* link:#ggonc[To Create System Properties]
-* link:#ggodt[To List System Properties]
-* link:#ggomm[To Delete a System Property]
-
-[[ggonc]][[GSADG00309]][[to-create-system-properties]]
-
-To Create System Properties
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `create-system-properties` subcommand in remote mode to create
-or update one or more system properties of the domain or configuration.
-Any configuration attribute can be overwritten through a system property
-of the corresponding name.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Create system properties by using the
-link:../reference-manual/create-system-properties.html#GSRFM00059[`create-system-properties`] subcommand. +
-Information about properties for the subcommand is included in this help
-page.
-
-[[GSADG00107]][[ggovp]]
-
-
-Example 2-15 Creating a System Property
-
-This example creates a system property associated with
-`http-listener-port=1088` on `localhost`.
-
-[source,oac_no_warn]
-----
-asadmin> create-system-properties http-listener-port=1088
-Command create-system-properties executed successfully.
-----
-
-[[GSADG804]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-system-properties` at the command line.
-
-[[ggodt]][[GSADG00310]][[to-list-system-properties]]
-
-To List System Properties
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `list-system-properties` subcommand in remote mode to list the
-system properties that apply to a domain, cluster, or server instance or
-configuration.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List system properties by using the
-link:../reference-manual/list-system-properties.html#GSRFM00203[`list-system-properties`] subcommand. +
-The existing system properties are displayed, including predefined
-properties such as `HTTP_LISTENER_PORT` and `HTTP_SSL_LISTENER_PORT`.
-
-[[GSADG00108]][[ggopn]]
-
-
-Example 2-16 Listing System Properties
-
-This example lists the system properties on host `localhost`.
-
-[source,oac_no_warn]
-----
-asadmin> list-system-properties
-http-listener-port=1088
-Command list-system-properties executed successfully.
-----
-
-[[GSADG805]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-system-properties` at the command line.
-
-[[ggomm]][[GSADG00311]][[to-delete-a-system-property]]
-
-To Delete a System Property
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `delete-system-property` subcommand in remote mode to delete
-system properties.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the existing system properties by using the
-link:../reference-manual/list-system-properties.html#GSRFM00203[`list-system-properties`] subcommand.
-3.  Delete the system property by using the
-link:../reference-manual/delete-system-property.html#GSRFM00110[`delete-system-property`] subcommand.
-4.  If necessary, notify users that the system property has been
-deleted.
-
-[[GSADG00109]][[ggoph]]
-
-
-Example 2-17 Deleting a System Property
-
-This example deletes a system property named `http-listener-port` from
-`localhost`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-system-property http-listener-port
-Command delete-system-property executed successfully.
-----
-
-[[GSADG806]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-system-property` at the command line.
-
-[[CHDJBJDA]][[GSADG1096]][[using-configuration-modularity]]
-
-Using Configuration Modularity
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-With configuration modularity in GlassFish Server Open Source Edition,
-new modules can be added to GlassFish Server distributions without
-modifying the global `domain.xml` configuration file. Default
-configuration data for modules is stored in the modules themselves,
-rather than in `domain.xml`, and loaded when needed.
-
-Module configuration elements are stored in `domain.xml` only when the
-default configuration included in the module is changed or when module
-configuration elements are added to `domain.xml` using the
-`create-module-config` subcommand. The `delete-module-config` subcommand
-removes module configuration elements from `domain.xml`, and the
-`get-active-module-config` subcommand displays the current active
-configuration of a module.
-
-[[CHDGCJCF]][[GSADG1097]][[to-add-the-default-configuration-of-a-module-to-domain.xml]]
-
-To Add the Default Configuration of a Module to `domain.xml`
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `create-module-config` subcommand to add the default
-configuration of a module to `domain.xml`.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Add the default configuration of a module to `domain.xml` by using
-the link:../reference-manual/create-jdbc-resource.html#GSRFM00037[`create-module-config`] subcommand.
-
-[[GSADG1098]][[sthref12]]
-
-
-Example 2-18 Adding Module Configuration to `domain.xml`
-
-This example adds the default configuration of the web container module
-to `domain1` in `server-config` (the default configuration). Use the
-`--dryrun` option to preview the configuration before it is added.
-
-[source,oac_no_warn]
-----
-asadmin> create-module-config web-container
-Command create-module-config executed successfully.
-----
-
-[[GSADG1099]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-module-config` at the command line.
-
-[[CHDJCJFA]][[GSADG1100]][[to-remove-the-configuration-of-a-module-from-domain.xml]]
-
-To Remove the Configuration of a Module From `domain.xml`
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `delete-module-config` subcommand to remove the configuration of
-a module from `domain.xml` and cause the module to use the default
-configuration included in the module.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Remove the configuration of a module from `domain.xml` by using the
-link:../reference-manual/create-jdbc-resource.html#GSRFM00037[`delete-module-config`] subcommand.
-
-[[GSADG1101]][[sthref13]]
-
-
-Example 2-19 Removing Module Configuration From `domain.xml`
-
-This example deletes the configuration of the web container module from
-`domain1` in `server-config` (the default configuration).
-
-[source,oac_no_warn]
-----
-asadmin> delete-module-config web-container
-Command delete-module-config executed successfully.
-----
-
-[[GSADG1102]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-module-config` at the command line.
-
-[[CHDICIJE]][[GSADG1103]][[to-display-the-current-active-configuration-of-a-module]]
-
-To Display the Current Active Configuration of a Module
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `get-active-module-config` subcommand to display the current
-active configuration of a module.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Display the current active configuration of a module by using the
-link:../reference-manual/create-jdbc-resource.html#GSRFM00037[`get-active-module-config`] subcommand.
-
-[[GSADG1104]][[sthref14]]
-
-
-Example 2-20 Displaying the Current Active Configuration of a Module
-
-This example displays the current active configuration of the JMS
-service in `server-config` (the default configuration).
-
-[source,oac_no_warn]
-----
-asadmin> get-active-module-config jms-service
-At location: domain/configs/config[server-config]
-<jms-service default-jms-host="default_JMS_host" type="EMBEDDED"
-  <jms-host port="7676" host="localhost" name="default_JMS_host"/>
-</jms-service>
-Command get-active-module-config executed successfully.
-----
-
-[[GSADG1105]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help get-active-module-config` at the command line.
-
-[[gixps]][[GSADG00532]][[administering-resources]]
-
-Administering Resources
-~~~~~~~~~~~~~~~~~~~~~~~
-
-This section contains instructions for integrating resources into the
-GlassFish Server environment. Information about administering specific
-resources, such as JDBC, is contained in other chapters.
-
-[[ggoeh]][[GSADG00312]][[to-add-resources-from-an-xml-file]]
-
-To Add Resources From an XML File
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `add-resources` subcommand in remote mode to create the
-resources named in the specified XML file. The following resources are
-supported: JDBC connection pool and resource, JMS, JNDI, and JavaMail
-resources, custom resource, connector resource and work security map,
-admin object, and resource adapter configuration.
-
-The XML file must reside in the domain-dir`/config` directory. If you
-specify a relative path or simply provide the name of the XML file, this
-subcommand will prepend domain-dir`/config` to this operand.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Add resources from an XML file by using the
-link:../reference-manual/add-resources.html#GSRFM00001[`add-resources`] subcommand. +
-Information about properties for the subcommand is included in this help
-page.
-3.  Restart GlassFish Server. +
-See link:domains.html#ginqj[To Restart a Domain].
-
-[[GSADG00110]][[ggozc]]
-
-
-Example 2-21 Adding Resources
-
-This example creates resources using the contents of the `resource.xml`
-file on `localhost`.
-
-[source,oac_no_warn]
-----
-asadmin> add-resources c:\tmp\resource.xml
-Command : JDBC resource jdbc1 created successfully.
-Command : JDBC connection pool poolA created successfully.
-Command add-resources executed successfully.
-----
-
-[[GSADG807]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help add-resources` at the command line.
-
-[[ggocm]][[GSADG00533]][[listing-various-system-elements]]
-
-Listing Various System Elements
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following topics are addressed here:
-
-* link:#ghhox[To Display the GlassFish Server Version]
-* link:#ggocy[To List Applications]
-* link:#ggocv[To List Containers]
-* link:#ghlgf[To List Modules]
-* link:#ggoeg[To List Subcommands]
-* link:#giojd[To List Timers]
-* link:#giyjd[To Show Component Status]
-
-[[ghhox]][[GSADG00316]][[to-display-the-glassfish-server-version]]
-
-To Display the GlassFish Server Version
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `version` subcommand in remote mode to display information about
-the GlassFish Server version for a particular server. If the subcommand
-cannot communicate with the server by using the specified login
-(user/password) and target (host/port) information, then the local
-version is displayed along with a warning message.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Display the version by using the link:../reference-manual/version.html#GSRFM00261[`version`]
-subcommand.
-
-[[GSADG00114]][[ghjnb]]
-
-
-Example 2-22 Displaying Version Information
-
-This example displays the version of GlassFish Server on the local host.
-
-[source,oac_no_warn]
-----
-asadmin> version
-Version = Oracle GlassFish Server 3.0.1 (build 19)
-Command version executed successfully.
-----
-
-[[GSADG811]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help version` at the command line.
-
-[[ggocy]][[GSADG00317]][[to-list-applications]]
-
-To List Applications
-^^^^^^^^^^^^^^^^^^^^
-
-Use the `list-applications` subcommand in remote mode to list the
-deployed Java applications. If the `--type` option is not specified, all
-applications are listed.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List applications by using the link:../reference-manual/list-applications.html#GSRFM00148[`list-applications`]
-subcommand.
-
-[[GSADG00115]][[ggouk]]
-
-
-Example 2-23 Listing Applications
-
-This example lists the web applications on `localhost`.
-
-[source,oac_no_warn]
-----
-asadmin> list-applications --type web
-hellojsp <web>
-Command list-applications executed successfully.
-----
-
-[[GSADG812]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-applications` at the command line.
-
-[[ggocv]][[GSADG00319]][[to-list-containers]]
-
-To List Containers
-^^^^^^^^^^^^^^^^^^
-
-Use the `list-containers` subcommand in remote mode to list application
-containers.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List containers by using the link:../reference-manual/list-containers.html#GSRFM00161[`list-containers`]
-subcommand.
-
-[[GSADG00116]][[ggown]]
-
-
-Example 2-24 Listing Containers
-
-This example lists the containers on `localhost`.
-
-[source,oac_no_warn]
-----
-asadmin> list-containers
-List all known application containers
-Container : grizzly
-Container : ejb
-Container : webservices
-Container : ear
-Container : appclient
-Container : connector
-Container : jpa
-Container : web
-Container : security
-Container : webbeans
-Command list-containers executed successfully.
-----
-
-[[GSADG813]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-containers` at the command line.
-
-[[ghlgf]][[GSADG00320]][[to-list-modules]]
-
-To List Modules
-^^^^^^^^^^^^^^^
-
-Use the `list-modules` subcommand in remote mode to list the modules
-that are accessible to the GlassFish Server module subsystem. The status
-of each module is included. Possible statuses include NEW and READY.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List modules by using the link:../reference-manual/list-modules.html#GSRFM00185[`list-modules`]
-subcommand.
-
-[[GSADG00117]][[ghlfw]]
-
-
-Example 2-25 Listing Modules
-
-This example lists the accessible modules.
-
-[source,oac_no_warn]
-----
-asadmin> list-modules
-----
-
-Information similar to the following is displayed (partial output):
-
-[source,oac_no_warn]
-----
-List Of Modules
-Module : org.glassfish.web.jstl-connector:10.0.0.b28
-    properties=(visibility=public,State=READY,Sticky=true)
-    Module Characteristics : List of Jars implementing the module
-        Jar : file:/C:/Preview/v3_Preview_release/distributions/web/target/glass
-fish/modules/web/jstl-connector.jar
-    Module Characteristics : List of imported modules
-    Module Characteristics : Provides to following services
-Module : org.glassfish.admingui.console-common:10.0.0.b28
-    properties=(visibility=public,State=NEW,Sticky=true)
-Module : org.glassfish.admin.launcher:10.0.0.b28
-    properties=(visibility=public,State=NEW,Sticky=true)
-Module : org.glassfish.external.commons-codec-repackaged:10.0.0.b28
-    properties=(visibility=public,State=NEW,Sticky=true)
-Module : com.sun.enterprise.tiger-types-osgi:0.3.32.Preview-b28
-    properties=(visibility=public,State=READY,Sticky=true)
-    Module Characteristics : List of imported modules
-    Module Characteristics : Provides to following services
-    Module Characteristics : List of Jars implementing the module
-        Jar : file:/C:/Preview/v3_Preview_release/distributions/web/target/glass
-fish/modules/tiger-types-osgi.jar.
-...
-Command list-modules executed successfully.
-----
-
-[[GSADG814]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-modules` at the command line.
-
-[[ggoeg]][[GSADG00321]][[to-list-subcommands]]
-
-To List Subcommands
-^^^^^^^^^^^^^^^^^^^
-
-Use the `list-commands` subcommand in remote mode to list the deployed
-`asadmin` subcommands. You can specify that only remote subcommands or
-only local subcommands are listed. By default, this subcommand displays
-a list of local subcommands followed by a list of remote subcommands.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List subcommands by using the link:../reference-manual/list-commands.html#GSRFM00154[`list-commands`]
-subcommand.
-
-[[GSADG00118]][[ggpdl]]
-
-
-Example 2-26 Listing Subcommands
-
-This example lists only local subcommands.
-
-[source,oac_no_warn]
-----
-asadmin> list-commands --localonly
-create-domain
-delete-domain
-list-commands
-list-domains
-login
-monitor
-start-database
-start-domain
-stop-domain
-stop-database
-version
-Command list-commands executed successfully.
-----
-
-[[GSADG815]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-commands` at the command line.
-
-[[giojd]][[GSADG00322]][[to-list-timers]]
-
-To List Timers
-^^^^^^^^^^^^^^
-
-The timer service is a persistent and transactional notification service
-that is provided by the enterprise bean container and is used to
-schedule notifications or events used by enterprise beans. All
-enterprise beans except stateful session beans can receive notifications
-from the timer service. Persistent timers set by the service are not
-destroyed when the server is shut down or restarted.
-
-Use the `list-timers` subcommand in remote mode to list the persistent
-timers owned by a specific server instance. You can use this information
-to decide whether to do a timer migration, or to verify that a migration
-has been completed successfully.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List timers by using the link:../reference-manual/list-timers.html#GSRFM00205[`list-timers`] subcommand.
-
-[[GSADG00119]][[giojj]]
-
-
-Example 2-27 Listing Timers
-
-This example lists the timers in a particular standalone server
-instance. There is one currently active timer set.
-
-[source,oac_no_warn]
-----
-asadmin> list-timers server
-1
-The list-timers command was executed successfully.
-----
-
-[[giyjd]][[GSADG00323]][[to-show-component-status]]
-
-To Show Component Status
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `show-component-status` subcommand in remote mode to get the
-status (either enabled or disabled) of the specified deployed component.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Show component status by using the
-link:../reference-manual/show-component-status.html#GSRFM00232[`show-component-status`] subcommand.
-
-[[GSADG00120]][[gjhkk]]
-
-
-Example 2-28 Showing Status of a Component
-
-This example shows the status of the `MEjbApp` component.
-
-[source,oac_no_warn]
-----
-asadmin> show-component-status MEjbApp
-Status of MEjbApp is enabled
-Command show-component-status executed successfully.
-----
-
-[[gjipx]][[GSADG00534]][[using-rest-interfaces-to-administer-glassfish-server]]
-
-Using REST Interfaces to Administer GlassFish Server
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-GlassFish Server provides representational state transfer (REST)
-interfaces to enable you to access monitoring and configuration data for
-GlassFish Server, including data that is provided by newly installed
-add-on components.
-
-You can access the GlassFish Server REST interfaces through client
-applications such as:
-
-* Web browsers
-* http://curl.haxx.se/[cURL]
-* http://www.gnu.org/software/wget/[GNU Wget]
-
-You can also use the GlassFish Server REST interfaces in REST client
-applications that are developed in languages such as:
-
-* JavaScript
-* Ruby
-* Perl
-* Java
-* JavaFX
-
-The implementation of the GlassFish Server REST interfaces is based on
-https://jersey.github.io[project Jersey] . Project Jersey is the
-reference implementation of http://jcp.org/en/jsr/summary?id=311[Java
-Specification Request (JSR) 311: JAX-RS: The Java API for RESTful Web
-Services]. Information about JSR 311 is also available from the JSR
-https://javaee.github.io/jsr311/[311 project home page] .
-
-The following topics are addressed here:
-
-* link:#gjipk[Using REST URLs to Administer GlassFish Server]
-* link:#gjijx[Using REST Resource Methods to Administer GlassFish
-Server]
-* link:#gjjdg[Resources for `asadmin` Subcommands That Perform Non-CRUD
-Operations]
-* link:#gjiut[Securing GlassFish Server REST Interfaces]
-* link:#gjijz[Formats for Resource Representation of Configuration
-Objects]
-* link:#gkwdd[Formats for Resource Representation of Monitoring Objects]
-* link:#gkwid[Formats for Resource Representation of Log File Details]
-* link:#gkwsq[Supported Content Types in Requests to REST Resources]
-
-[[gjipk]][[GSADG00707]][[using-rest-urls-to-administer-glassfish-server]]
-
-Using REST URLs to Administer GlassFish Server
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Each object in the configuration and monitoring object trees is
-represented as a REST resource that is accessible through an HTTP
-uniform resource locator (URL). Access to REST resources for GlassFish
-Server monitoring and configuration data requires a running DAS.
-
-[[gkwhy]][[GSADG00634]][[rest-urls-to-resources-for-configuration-and-monitoring-objects]]
-
-REST URLs to Resources for Configuration and Monitoring Objects
-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-The formats of the URLs to resources that represent objects in the
-configuration and monitoring object trees are as follows:
-
-* Configuration: `http://`host`:`port`/management/domain/`path
-* Monitoring: `http://`host`:`port`/monitoring/domain/`path
-
-The replaceable items in these URLs are as follows:
-
-host::
-  The host where the DAS is running.
-port::
-  The HTTP port or HTTPS port for administration.
-path::
-  The path to the object. The path is the dotted name of the object in
-  which each dot (`.`) is replaced with a slash (`/`). +
-
-[width="100%",cols="100%",]
-|=======================================================================
-a|
-Note:
-
-The path to a GlassFish Server instance is
-`servers/server/`instance-name, where instance-name is the name of the
-instance. For the DAS, instance-name is `server` and the path is
-`servers/server/server`.
-
-|=======================================================================
-
-  For more information, see the following documentation: +
-  * The link:../reference-manual/dotted-names.html#GSRFM00268[`dotted-names`(5ASC)] help page
-  * link:monitoring.html#ghbaz[How the Monitoring Tree Structure Works]
-  * link:overview.html#giusb[How Dotted Names Work for Configuration]
-
-If the URL to a REST resource for GlassFish Server monitoring or
-configuration data is opened in a web browser, the browser displays a
-web page that contains the following information about the resource:
-
-* A list of the attributes of the resource and their values. If the
-resource represents an object in the configuration tree, these
-attributes are presented in an HTML form that you can use to update the
-resource. Attributes of a resource for an object in the monitoring tree
-are read only.
-* A list of hypertext links to the children of the resource. This list
-of links enables you to traverse the tree that contains the resource and
-to discover the all resources in the tree.
-* A list of hypertext links to resources that represent `asadmin`
-subcommands for non-CRUD operations on the resource.
-
-The following figure shows the web page for the REST resource for
-managing a domain.
-
-[[GSADG00001]][[gjjce]]
-
-
-.*Figure 2-1 Web Page for the REST Resource for Managing a Domain*
-image:img/rest-management.png[
-"Screen capture showing the web page for the REST resource for managing a
-domain."]
-
-
-[[gkwib]][[GSADG00635]][[rest-urls-for-accessing-the-log-file]]
-
-REST URLs for Accessing the Log File
-++++++++++++++++++++++++++++++++++++
-
-The `server.log` file of the DAS is represented as a child that is named
-`view-log` of the resource for managing the domain. A child of the
-resource for the `server.log` file represents the log file details
-
-The formats of the URLs to resources that represent the log file are as
-follows:
-
-* Log file: `http://`host`:`port`/management/domain/view-log`
-* Log file details:
-`http://`host`:`port`/monitoring/domain/view-log/details`
-
-The replaceable items in these URLs are as follows:
-
-host::
-  The host where the DAS is running.
-port::
-  The HTTP port or HTTPS port for administration.
-
-You can use the optional `start` parameter in the URL to the resource
-for the log file to specify the number of characters at the start of the
-file to skip. For example, to skip 10,000 characters, specify the URL as
-`http://localhost:4848/management/domain/view-log?start=10000`. This
-example assumes that the DAS is running on the local host and uses the
-default port for administration.
-
-The resource for the log file returns the HTTP header
-`"X-Text-Append-Next"`, which contains the entire URL to pass to the
-`GET` method to return the changes since the last call. You can use this
-header in client applications to get all log entries that were added in
-particular interval. For example, by testing the value of the
-`"X-Text-Append-Next"` header in a client thread every 10 seconds, you
-can monitor the log entries that were added in the last 10 seconds.
-
-[[gjijx]][[GSADG00708]][[using-rest-resource-methods-to-administer-glassfish-server]]
-
-Using REST Resource Methods to Administer GlassFish Server
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The GlassFish Server REST interfaces support methods for accessing
-objects in the monitoring and configuration object trees.
-
-The following table shows the REST methods for administering monitoring
-and configuration data and the tasks that you can perform with each
-method. These methods are HTTP 1.1 primitives. For the detailed
-specification of these primitives, see
-http://www.w3.org/Protocols/rfc2616/rfc2616.html[Hypertext Transfer
-Protocol -- HTTP/1.1] .
-
-[[GSADG816]][[sthref16]][[gkame]]
-
-
-Table 2-1 REST Resource Methods for Administering Monitoring and
-Configuration Data
-
-[width="100%",cols="74%,26%",options="header",]
-|=======================================================================
-|Task |REST Method
-|Determine the methods and method parameters that an object in the tree
-supports |`GET`
-
-|Retrieve data for an object in the tree |`GET`
-
-|Add an object to the tree |`POST`
-
-|Update an object in the tree |`POST`
-
-|Delete an object from the tree |`DELETE`
-|=======================================================================
-
-
-
-[NOTE]
-=======================================================================
-
-REST requests that add, update, or delete objects must specify the
-`X-Requested-By` header with the value `GlassFish REST HTML interface`.
-
-The `GET` method determines the methods and method parameters that an
-object in the tree supports and provides additional information about
-the object. For details, see link:#gjjel[To Retrieve Data for an Object
-in the Tree].
-
-=======================================================================
-
-
-[[gjjei]][[GSADG00324]][[to-determine-the-methods-and-method-parameters-that-an-object-in-the-tree-supports]]
-
-To Determine the Methods and Method Parameters That an Object in the Tree Supports
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-The methods and method parameters that an object in the tree supports
-depend on the REST resource that represents the object:
-
-* REST resources for monitoring support only the `GET` method.
-* All REST resources for configuration support the `GET` method.
-However, only some REST resources for configuration also support the
-`POST` method and the `DELETE` method.
-
-Before performing any operations on an object in the tree, determine the
-methods and method parameters that the object supports.
-
-You can specify the format in which this information is presented. For
-more information, see link:#gjijz[Formats for Resource Representation of
-Configuration Objects].
-
-
-[NOTE]
-=======================================================================
-
-Each `POST` method and `DELETE` method that a REST resource supports has
-an equivalent `asadmin` subcommand. The parameters of a `POST` method or
-a `DELETE` method correspond to the options of the method's equivalent
-`asadmin` subcommand. For information about the options of `asadmin`
-subcommand, see the olink:GSRFM[GlassFish Server Open Source Edition
-Reference Manual].
-
-=======================================================================
-
-
-1.  Ensure that the server is running. +
-Operations on REST resources for GlassFish Server data require a running
-server.
-2.  Use the `GET` method on the REST resource that represents the
-object. +
-The `GET` method returns the list of methods that the resource supports.
-For each method, the list of acceptable message parameters or the list
-of acceptable query parameters are returned.
-
-[[GSADG00121]][[gjjdi]]
-
-
-Example 2-29 Determining the Methods and Method Parameters That an
-Object in the Tree Supports
-
-This example uses the cURL utility to determine the methods and method
-parameters that the resource for the node `sj01` supports. The example
-uses the following options of the cURL utility:
-
-* `-X` to specify that the `GET` method is used
-* `-H` to specify that the resource is represented in JavaScript Object
-Notation (JSON)
-
-In this example, the DAS is running on the local host and the HTTP port
-for administration is 4848. The resource supports the `GET` method and
-the `POST` method.
-
-Line breaks and white space are added to enhance readability.
-
-[source,oac_no_warn]
-----
-curl -X GET -H "Accept: application/json" http://localhost:4848/management/domain/nodes/node/sj01
-{
-  "command":"Node",
-  "exit_code":"SUCCESS",
-  "extraProperties":{
-    "commands":[
-      {"path":"_delete-node","command":"delete-node","method":"DELETE"},
-      {"path":"_update-node","command":"_update-node","method":"POST"},
-      {"path":"ping-node-ssh","command":"ping-node-ssh","method":"GET"},
-      {"path":"update-node-ssh","command":"update-node-ssh","method":"POST"},
-      {"path":"update-node-config","command":"update-node-config","method":"POST"}],
-    "methods":[
-      {"name":"GET"},
-      {"name":"POST","messageParameters":{
-        "installDir":{"optional":"true","type":"string","key":"false"},
-        "nodeDir":{"optional":"true","type":"string","key":"false"},
-        "nodeHost":{"optional":"true","type":"string","key":"false"},
-        "type":{"optional":"true","type":"string","key":"false"}
-        }
-      }
-    ],
-    "entity":{
-      "installDir":"\/export\/glassfish3",
-      "name":"sj01",
-      "nodeDir":null,
-      "nodeHost":
-      "sj01.example.com",
-      "type":"SSH"
-    },
-    "childResources":{
-      "application-ref":
-        "https:\/\/localhost:4848\/management\/domain\/nodes\/node\/sj01\/application-ref",
-      "resource-ref":
-        "https:\/\/localhost:4848\/management\/domain\/nodes\/node\/sj01\/resource-ref",
-      "ssh-connector":
-        "https:\/\/localhost:4848\/management\/domain\/nodes\/node\/sj01\/ssh-connector"
-    }
-  }
-}
-----
-
-[[gjjel]][[GSADG00325]][[to-retrieve-data-for-an-object-in-the-tree]]
-
-To Retrieve Data for an Object in the Tree
-++++++++++++++++++++++++++++++++++++++++++
-
-Retrieving data for an object in the tree obtains the following
-information about the REST resource that represents the object:
-
-* A list of the REST methods that the resource supports
-* A list of the attributes of the resource and their values
-* A list of URLs to the children of the resource
-
-You can specify the format in which this information is presented. For
-more information, see link:#gjijz[Formats for Resource Representation of
-Configuration Objects].
-
-1.  Ensure that the server is running. +
-Operations on REST resources for GlassFish Server data require a running
-server.
-2.  Use the `GET` method on the REST resource that represents the
-object.
-
-[[GSADG00122]][[gjjed]]
-
-
-Example 2-30 Retrieving Data for an Object in the Tree
-
-This example uses the cURL utility to retrieve data for the resource for
-a the node `sj01`. The example uses the following options of the cURL
-utility:
-
-* `-X` to specify that the `GET` method is used
-* `-H` to specify that the resource is represented in JavaScript Object
-Notation (JSON)
-
-In this example, the DAS is running on the local host and the HTTP port
-for administration is 4848.
-
-Line breaks and white space are added to enhance readability.
-
-[source,oac_no_warn]
-----
-curl -X GET -H "Accept: application/json" http://localhost:4848/management/domain/nodes/node/sj01
-{
-  "command":"Node",
-  "exit_code":"SUCCESS",
-  "extraProperties":{
-    "commands":[
-      {"path":"_delete-node","command":"delete-node","method":"DELETE"},
-      {"path":"_update-node","command":"_update-node","method":"POST"},
-      {"path":"ping-node-ssh","command":"ping-node-ssh","method":"GET"},
-      {"path":"update-node-ssh","command":"update-node-ssh","method":"POST"},
-      {"path":"update-node-config","command":"update-node-config","method":"POST"}],
-    "methods":[
-      {"name":"GET"},
-      {"name":"POST","messageParameters":{
-        "installDir":{"optional":"true","type":"string","key":"false"},
-        "nodeDir":{"optional":"true","type":"string","key":"false"},
-        "nodeHost":{"optional":"true","type":"string","key":"false"},
-        "type":{"optional":"true","type":"string","key":"false"}
-        }
-      }
-    ],
-    "entity":{
-      "installDir":"\/export\/glassfish3",
-      "name":"sj01",
-      "nodeDir":null,
-      "nodeHost":
-      "sj01.example.com",
-      "type":"SSH"
-    },
-    "childResources":{
-      "application-ref":
-        "https:\/\/localhost:4848\/management\/domain\/nodes\/node\/sj01\/application-ref",
-      "resource-ref":
-        "https:\/\/localhost:4848\/management\/domain\/nodes\/node\/sj01\/resource-ref",
-      "ssh-connector":
-        "https:\/\/localhost:4848\/management\/domain\/nodes\/node\/sj01\/ssh-connector"
-    }
-  }
-}
-----
-
-[[gjjdv]][[GSADG00326]][[to-add-an-object-to-the-tree]]
-
-To Add an Object to the Tree
-++++++++++++++++++++++++++++
-
-1.  Ensure that the server is running. +
-Operations on REST resources for GlassFish Server data require a running
-server.
-2.  Determine the acceptable message parameters for the `POST` method of
-the resource that represents the parent of the object. +
-For information about how to perform this step, see link:#gjjei[To
-Determine the Methods and Method Parameters That an Object in the Tree
-Supports].
-3.  Use the `POST` method on the REST resource that represents the
-parent of the object that you are adding.
-4.  Confirm that the object has been added. +
-Perform this step on the resource that represents the object that you
-have just added, not the parent. For information about how to perform
-this step, see link:#gjjel[To Retrieve Data for an Object in the Tree].
-
-[[GSADG00123]][[gjjen]]
-
-
-Example 2-31 Adding an Object to the Tree
-
-This example uses the cURL utility to add a JDBC resource object to the
-tree by creating a REST resource to represent the JDBC resource.
-
-In this example, the DAS is running on the local host and the HTTP port
-for administration is 4848.
-
-Line breaks are added to enhance readability.
-
-1.  This step determines the acceptable message parameters for the
-`POST` method of the resource `jdbc-resource`. +
-[source,oac_no_warn]
-----
-curl -X GET -H "Accept: application/json" 
-http://localhost:4848/management/domain/resources/jdbc-resource
-{
-  "command":"Jdbc-resource",
-  "exit_code":"SUCCESS",
-  "extraProperties":{
-    "commands":[],
-    "methods":[
-      {"name":"GET"},
-      {"name":"POST","messageParameters":{
-        "description":{"acceptableValues":"","optional":"true","type":"string","defaultValue":""},
-        "enabled":{"acceptableValues":"",optional":"true","type":"boolean",defaultValue":"true"},
-        "id":{"acceptableValues":"","optional":"false","type":"string","defaultValue":""},
-        "poolName":{"acceptableValues":"","optional":"false","type":"string","defaultValue":""},
-        "property":{"acceptableValues":"","optional":"true","type":"string","defaultValue":"},
-        "target":{"acceptableValues":"","optional":"true","type":"string","defaultValue":""}
-        }
-      }
-    ],
-    "childResources":{
-      "jdbc\/__TimerPool":
-        "https:\/\/localhost:4848\/management\/domain\/resources\/jdbc-resource\/jdbc%2F__TimerPool",
-      "jdbc\/__default":
-        "https:\/\/localhost:4848\/management\/domain\/resources\/jdbc-resource\/jdbc%2F__default"
-    }
-  }
-}
-----
-2.  This step adds a resource as a child of the `jdbc-resource`
-resource. The `-d` option of the cURL utility sets the required message
-parameters as follows:
-* `id` is set to `jdbc/myjdbcresource`.
-* `connectionpoolid` is set to `DerbyPool`. +
-[source,oac_no_warn]
-----
-curl -X POST -H "X-Requested-By: GlassFish REST HTML interface" 
--d id=jdbc/myjdbcresource -d connectionpoolid=DerbyPool 
-http://localhost:4848/management/domain/resources/jdbc-resource
-----
-3.  This step confirms that the object has been added by retrieving data
-for the REST resource that represents the object. +
-[source,oac_no_warn]
-----
-curl -X GET -H "Accept: application/json" 
-http://localhost:4848/management/domain/resources/
-jdbc-resource/jdbc%2Fmyjdbcresource
-{
-  "command":"Jdbc-resource",
-  "exit_code":"SUCCESS",
-  "extraProperties":{
-    "commands":[],
-    "methods":[
-      {"name":"GET"},
-      {"name":"POST","messageParameters":{
-        "description":{"optional":"true","type":"string","key":"false"},
-        "enabled":{"optional":"true","type":"boolean","defaultValue":"true","key":"false"},
-        "jndiName":{"optional":"true","type":"string","key":"true"},
-        "objectType":{"optional":"true","type":"string","defaultValue":"user","key":"false"},
-        "poolName":{"optional":"true","type":"string","key":"false"}
-        }
-      },
-      {"name":"DELETE","messageParameters":{
-        "target":{"acceptableValues":"","optional":"true","type":"string","defaultValue":""}
-        }
-      }
-    ],
-    "childResources":{
-      "property":
-        "https:\/\/localhost:4848\/management\/domain\/resources\/jdbc-resource\/jdbc%2Fmyjdbcresource\/property"
-    }
-  }
-}
-----
-
-[[gjjgj]][[GSADG00327]][[to-update-an-object-in-the-tree]]
-
-To Update an Object in the Tree
-+++++++++++++++++++++++++++++++
-
-1.  Ensure that the server is running. +
-Operations on REST resources for GlassFish Server data require a running
-server.
-2.  Determine the acceptable message parameters for the `POST` method of
-the resource that represents the object. +
-For information about how to perform this step, see link:#gjjei[To
-Determine the Methods and Method Parameters That an Object in the Tree
-Supports].
-3.  Use the `POST` method on the REST resource that represents the
-object that you are updating.
-4.  Confirm that the object has been updated. +
-For information about how to perform this step, see link:#gjjel[To
-Retrieve Data for an Object in the Tree].
-
-[[GSADG00124]][[gjjhd]]
-
-
-Example 2-32 Updating an Object in the Tree
-
-This example uses the cURL utility to update a JDBC resource in the tree
-by modifying the REST resource that represents the JDBC resource.
-
-In this example, the DAS is running on the local host and the HTTP port
-for administration is 4848.
-
-Line breaks are added to enhance readability.
-
-1.  This step determines the acceptable message parameters for the
-`POST` method of the resource `jdbc-myjdbcresource`. +
-[source,oac_no_warn]
-----
-curl -X OPTIONS -H "Accept: application/json" 
-http://localhost:4848/management/domain/resources/
-jdbc-resource/jdbc-myjdbcresource
-{
-  "command":"Jdbc-resource",
-  "exit_code":"SUCCESS",
-  "extraProperties":{
-    "commands":[],
-    "methods":[
-      {"name":"GET"},
-      {"name":"POST","messageParameters":{
-        "description":{"optional":"true","type":"string","key":"false"},
-        "enabled":{"optional":"true","type":"boolean","defaultValue":"true","key":"false"},
-        "jndiName":{"optional":"true","type":"string","key":"true"},
-        "objectType":{"optional":"true","type":"string","defaultValue":"user","key":"false"},
-        "poolName":{"optional":"true","type":"string","key":"false"}
-        }
-      },
-      {"name":"DELETE","messageParameters":{
-        "target":{"acceptableValues":"","optional":"true","type":"string","defaultValue":""}
-        }
-      }
-    ],
-    "childResources":{
-      "property":
-        "https:\/\/localhost:4848\/management\/domain\/resources\/jdbc-resource\/jdbc%2Fmyjdbcresource\/property"
-    }
-  }
-}
-----
-2.  This step updates the REST resource `jdbc-myjdbcresource` to disable
-the JDBC resource that `jdbc-myjdbcresource` represents. The `-d` option
-of the cURL utility sets the `enabled` message parameter to `disabled`. +
-[source,oac_no_warn]
-----
-curl -X POST -H "X-Requested-By: GlassFish REST HTML interface" 
--d "enabled=false" http://localhost:4848/management/domain/resources/
-jdbc-resource/jdbc%2Fmyjdbcresource
-----
-3.  This step confirms that the object has been updated by retrieving
-data for the REST resource that represents the object. +
-[source,oac_no_warn]
-----
-curl -X GET -H "Accept: application/json" 
-http://localhost:4848/management/domain/resources/
-jdbc-resource/jdbc%2Fmyjdbcresource
-{
-  "command":"Jdbc-resource",
-  "exit_code":"SUCCESS",
-  "extraProperties":{
-    "commands":[],
-    "methods":[
-      {"name":"GET"},
-      {"name":"POST","messageParameters":{
-        "description":{"optional":"true","type":"string","key":"false"},
-        "enabled":{"optional":"true","type":"boolean","defaultValue":"true","key":"false"},
-        "jndiName":{"optional":"true","type":"string","key":"true"},
-        "objectType":{"optional":"true","type":"string","defaultValue":
-        "user","key":"false"},
-        "poolName":{"optional":"true","type":"string","key":"false"}
-        }
-      },
-      {"name":"DELETE","messageParameters":{
-        "target":{"acceptableValues":"","optional":"true","type":"string","defaultValue":""}
-        }
-      }
-    ],
-  "entity":{
-    "description":null,
-    "enabled":"false",
-    "jndiName":"jdbc\/myjdbcresource",
-    "objectType":
-    "user",
-    "poolName":"DerbyPool"
-  },
-  "childResources":{
-    "property":
-      "https:\/\/localhost:4848\/management\/domain\/resources\/jdbc-resource\/
-       jdbc%2Fmyjdbcresource\/property"
-    }
-  }
-}
-----
-
-[[gjjgm]][[GSADG00328]][[to-delete-an-object-from-the-tree]]
-
-To Delete an Object From the Tree
-+++++++++++++++++++++++++++++++++
-
-1.  Ensure that the server is running. +
-Operations on REST resources for GlassFish Server data require a running
-server.
-2.  Confirm that the object can be deleted. +
-For information about how to perform this step, see link:#gjjei[To
-Determine the Methods and Method Parameters That an Object in the Tree
-Supports].
-3.  Confirm that the object has been deleted. +
-Perform this step on the resource that represents the parent of the
-object that you have just deleted. For information about how to perform
-this step, see link:#gjjel[To Retrieve Data for an Object in the Tree].
-
-[[GSADG00125]][[gjjgp]]
-
-
-Example 2-33 Deleting an Object From the Tree
-
-This example uses the cURL utility to delete a JDBC resource from the
-tree by deleting the REST resource that represents the JDBC resource.
-
-In this example, the DAS is running on the local host and the HTTP port
-for administration is 4848.
-
-Line breaks and white space are added to enhance readability.
-
-1.  This step confirms that the object can be deleted by retrieving the
-REST methods that the resource `jdbc-myjdbcresource` supports. +
-[source,oac_no_warn]
-----
-curl -X GET -H "Accept: application/json" 
-http://localhost:4848/management/domain/resources/
-jdbc-resource/jdbc%2Fmyjdbcresource
-{
-  "command":"Jdbc-resource",
-  "exit_code":"SUCCESS",
-  "extraProperties":{
-    "commands":[],
-    "methods":[
-      {"name":"GET"},
-      {"name":"POST","messageParameters":{
-        "description":{"optional":"true","type":"string","key":"false"},
-        "enabled":{"optional":"true","type":"boolean","defaultValue":"true","key":"false"},
-        "jndiName":{"optional":"true","type":"string","key":"true"},
-        "objectType":{"optional":"true","type":"string","defaultValue":"user","key":"false"},
-        "poolName":{"optional":"true","type":"string","key":"false"}
-        }
-      },
-      {"name":"DELETE","messageParameters":{
-        "target":{"acceptableValues":"","optional":"true","type":"string","defaultValue":""}
-        }
-      }
-    ],
-    "childResources":{
-      "property":
-        "https:\/\/localhost:4848\/management\/domain\/resources\/jdbc-resource\/
-        jdbc%2Fmyjdbcresource\/property"
-    }
-  }
-}
-----
-2.  This step deletes the `jdbc/myjdbcresource` resource. +
-[source,oac_no_warn]
-----
-curl -X DELETE -H "X-Requested-By: GlassFish REST HTML interface" 
-http://localhost:4848/management/domain/resources/
-jdbc-resource/jdbc%2Fmyjdbcresource
-----
-3.  This step confirms that the object has been deleted by retrieving
-data for the REST resource that represents the parent of the object. +
-[source,oac_no_warn]
-----
-curl -X GET -H "Accept: application/json" 
-http://localhost:4848/management/domain/resources/jdbc-resource
-{
-  "command":"Jdbc-resource",
-  "exit_code":"SUCCESS",
-  "extraProperties":{
-    "commands":[],
-    "methods":[
-      {"name":"GET"},
-      {"name":"POST","messageParameters":{
-        "description":{"acceptableValues":"","optional":"true","type":"string","defaultValue":""},
-        "enabled":{"acceptableValues":"",optional":"true","type":"boolean",defaultValue":"true"},
-        "id":{"acceptableValues":"","optional":"false","type":"string","defaultValue":""},
-        "poolName":{"acceptableValues":"","optional":"false","type":"string","defaultValue":""},
-        "property":{"acceptableValues":"","optional":"true","type":"string","defaultValue":"},
-        "target":{"acceptableValues":"","optional":"true","type":"string","defaultValue":""}
-        }
-      }
-    ],
-    "childResources":{
-      "jdbc\/__TimerPool":
-        "https:\/\/localhost:4848\/management\/domain\/resources\/jdbc-resource\/jdbc%2F__TimerPool",
-      "jdbc\/__default":
-        "https:\/\/localhost:4848\/management\/domain\/resources\/jdbc-resource\/jdbc%2F__default"
-    }
-  }
-}
-----
-
-[[gjjdg]][[GSADG00709]][[resources-for-asadmin-subcommands-that-perform-non-crud-operations]]
-
-Resources for `asadmin` Subcommands That Perform Non-CRUD Operations
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The GlassFish Server REST interfaces also support operations other than
-create, read, update, and delete (CRUD) operations, for example:
-
-* State management
-* Queries
-* Application deployment
-
-These operations are supported through REST resources that represent the
-`asadmin` subcommands for performing these operations. Each resource is
-a child of the resource on which the operation is performed. The child
-resources do not represent objects in the configuration object tree.
-
-For example, the resource that represents a node provides child
-resources for the following `asadmin` subcommands that perform non-CRUD
-operations on the node:
-
-* `ping-node-ssh`
-* `update-node-config`
-* `update-node-ssh`
-
-[[gjiut]][[GSADG00710]][[securing-glassfish-server-rest-interfaces]]
-
-Securing GlassFish Server REST Interfaces
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The GlassFish Server REST interfaces support the following
-authentication schemes for securing the REST interfaces:
-
-* Basic authentication over a secure connection
-* Authentication by using session tokens
-
-When security is enabled, you must specify `https` as the protocol in
-the URLs to REST resources and provide a user name and password.
-
-[[GSADG817]][[sthref17]]
-
-
-[[setting-up-basic-authentication-over-a-secure-connection]]
-Setting Up Basic Authentication Over a Secure Connection
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-Setting up basic authentication over a secure connection to secure
-GlassFish Server REST interfaces involves the following sequence of
-tasks:
-
-1.  Adding an `admin-realm` user to the `asadmin` user group
-2.  Enabling Secure Sockets Layer (SSL)
-
-For information about how to perform these tasks from the command line,
-see the following documentation:
-
-* "link:../security-guide/user-security.html#GSSCG00110[To Create an Authentication Realm]" in GlassFish
-Server Open Source Edition Security Guide
-* "link:../security-guide/user-security.html#GSSCG00118[To Create a File User]" in GlassFish Server Open
-Source Edition Security Guide
-* link:http_https.html#ggnbj[To Configure an HTTP Listener for SSL]
-
-For information about how to perform these tasks by using the
-Administration Console, see the following topics in the Administration
-Console online help:
-
-* To Add a User to the Admin Realm
-* To Edit SSL Settings for a Protocol
-
-[[gkvtj]][[GSADG00329]][[to-secure-rest-interfaces-by-using-session-tokens]]
-
-To Secure REST Interfaces by Using Session Tokens
-+++++++++++++++++++++++++++++++++++++++++++++++++
-
-Basic authentication requires a REST client to cache a user's
-credentials to enable the client to pass the credentials with each
-request. If you require a REST client not to cache credentials, your
-client must use session tokens for authentication.
-
-1.  Request a session token by using the `GET` method on the resource at
-`http://`host`:`port`/management/sessions`. +
-GlassFish Server uses basic authentication to authenticate the client,
-generates a session token, and passes the token to the client.
-2.  In each subsequent request that requires authentication, use the
-token to authenticate the client.
-1.  Create a cookie that is named `gfresttoken` the value of which is
-the token.
-2.  Send the cookie with the request.
-3.  When the token is no longer required, retire the token by using the
-`DELETE` method on the resource at
-`http://`host`:`port`/management/sessions/{`tokenvalue`}`. +
-
-[NOTE]
-=======================================================================
-
-If a client does not explicitly retire a token, the token is retired
-after 30 minutes of inactivity.
-
-=======================================================================
-
-
-[[gjijz]][[GSADG00711]][[formats-for-resource-representation-of-configuration-objects]]
-
-Formats for Resource Representation of Configuration Objects
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The GlassFish Server REST interfaces represent resources for
-configuration objects in the following formats:
-
-* http://www.json.org/[JSON]
-* XML
-* HTML
-
-GlassFish Server enables you to specify the resource representation
-through the filename extension in the URL or through the HTTP header:
-
-* To specify the resource representation through the filename extension
-in the URL, specify the appropriate extension as follows:
-
-** For JSON, specify the `.json` extension.
-
-** For XML, specify the `.xml` extension.
-
-** For HTML, omit the extension.
-* How to specify the resource representation through the HTTP header
-depends on the client that you are using to access the resource. For
-example, if you are using the cURL utility, specify the resource
-representation through the `-H` option as follows:
-
-** For JSON, specify `-H "Accept: application/json"`.
-
-** For XML, specify `-H "Accept: application/xml"`.
-
-** For HTML, omit the `-H` option.
-
-[[gjiji]][[GSADG00636]][[json-resource-representation-for-configuration-objects]]
-
-JSON Resource Representation for Configuration Objects
-++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-The general format for the JSON representation of a resource for a
-configuration object is as follows:
-
-[source,oac_no_warn]
-----
-{
-  "command":"resource",
-  "exit_code":"code",
-  "extraProperties":{
-    "commands":[command-list],
-    "methods":[method-list],
-    "entity":{attributes},
-    "childResources":{children}
-  }
-}
-----
-
-The replaceable items in this format are as follows:
-
-resource::
-  The name of the resource.
-code::
-  The result of the attempt to get the resource.
-command-list::
-  One or more metadata sets separated by a comma (`,`) that represent
-  the `asadmin` subcommands for performing non—CRUD operations on the
-  resource. For the format of each metadata set, see link:#gkvyr[JSON
-  Representation of a Command in a Command List].
-method-list::
-  One or more metadata sets separated by a comma (`,`) that represent
-  the methods that the resource supports. For the format of each
-  metadata set, see link:#gjjas[JSON Representation of a Method in a
-  Method List].
-attributes::
-  Zero or more name-value pairs separated by a comma (`,`). Each
-  name-value pair is specified as `"`name`":`value.
-children::
-  Zero or more child resources separated by a comma (`,`). Each child
-  resource is specified as "resource-name":"url". +
-  resource-name;;
-    The name of the resource as displayed in client applications that
-    access the parent of the resource.
-  url;;
-    The URL to the child resource.
-
-[[gkvyr]][[GSADG00024]][[json-representation-of-a-command-in-a-command-list]]
-
-JSON Representation of a Command in a Command List
-
-The JSON representation of a command in a command list is as follows:
-
-[source,oac_no_warn]
-----
-{
-  "path":"command-path",
-  "command":"command-name",
-  "method":"rest-method"
-}
-----
-
-The replaceable items in this format are as follows:
-
-command-path::
-  The relative path to REST resource that represents the command. This
-  path is relative to the URL of the REST resource that is the parent of
-  the resource that represents the command.
-command-name::
-  The name of the command as displayed in client applications that
-  access the resource.
-rest-method::
-  The REST resource method that the command invokes when the command is
-  run. The method is `GET`, `POST`, or `DELETE`.
-
-[[gjjas]][[GSADG00025]][[json-representation-of-a-method-in-a-method-list]]
-
-JSON Representation of a Method in a Method List
-
-The JSON representation of a method in a method list is as follows:
-
-[source,oac_no_warn]
-----
-{
-    "name":"method-name",
-    "messageParameters":{
-        message-parameter-list
-    }
-    "queryParameters":{
-        queryparameter- list
-    }
-}
-----
-
-The replaceable items in this format are as follows:
-
-method-name::
-  The name of the method, which is `GET`, `POST`, or `DELETE`.
-message-parameter-list::
-  Zero or more metadata sets separated by a comma (`,`) that represent
-  the message parameters that are allowed for the method. For the format
-  of each metadata set, see link:#gjjbb[JSON Representation of a Message
-  Parameter or a Query Parameter].
-query-parameter-list::
-  Zero or more metadata sets separated by a comma (`,`) that represent
-  the query parameters that are allowed for the method. For the format
-  of each metadata set, see link:#gjjbb[JSON Representation of a Message
-  Parameter or a Query Parameter].
-
-[[gjjbb]][[GSADG00026]][[json-representation-of-a-message-parameter-or-a-query-parameter]]
-
-JSON Representation of a Message Parameter or a Query Parameter
-
-The JSON representation of a message parameter or a query parameter is
-as follows:
-
-[source,oac_no_warn]
-----
-"parameter-name":{attribute-list}
-----
-
-The replaceable items in this format are as follows:
-
-parameter-name::
-  The name of the parameter.
-attribute-list::
-  A comma-separated list of name-value pairs of attributes for the
-  parameter. Each pair is in the following format: +
-[source,oac_no_warn]
-----
-"name":"value"
-----
-::
-  Possible attributes are as follows: +
-  `defaultValue`;;
-    The default value of the parameter.
-  `acceptableValues`;;
-    The set or range of acceptable values for the parameter.
-  `type`;;
-    The data type of the parameter, which is one of the following types: +
-    * `boolean`
-    * `int`
-    * `string`
-  `optional`;;
-    Indicates whether the parameter is optional. If `true`, the
-    parameter is optional. If `false`, the parameter is required.
-  `key`;;
-    Indicates whether the parameter is key. If `true`, the parameter is
-    key. If `false`, the parameter is not key.
-
-[[gjjgg]][[GSADG00027]][[example-json-resource-representation-for-a-configuration-object]]
-
-Example JSON Resource Representation for a Configuration Object
-
-This example shows the JSON representation of the resource for the node
-`sj01`. In this example, the DAS is running on the local host and the
-HTTP port for administration is 4848. The URL to the resource in this
-example is `http://localhost:4848/management/domain/nodes/node/sj01`.
-
-Line breaks and white space are added to enhance readability.
-
-[source,oac_no_warn]
-----
-{
-  "command":"Node",
-  "exit_code":"SUCCESS",
-  "extraProperties":{
-    "commands":[
-      {"path":"_delete-node","command":"delete-node","method":"DELETE"},
-      {"path":"_update-node","command":"_update-node","method":"POST"},
-      {"path":"ping-node-ssh","command":"ping-node-ssh","method":"GET"},
-      {"path":"update-node-ssh","command":"update-node-ssh","method":"POST"},
-      {"path":"update-node-config","command":"update-node-config","method":"POST"}],
-    "methods":[
-      {"name":"GET"},
-      {"name":"POST","messageParameters":{
-        "installDir":{"optional":"true","type":"string","key":"false"},
-        "nodeDir":{"optional":"true","type":"string","key":"false"},
-        "nodeHost":{"optional":"true","type":"string","key":"false"},
-        "type":{"optional":"true","type":"string","key":"false"}
-        }
-      }
-    ],
-    "entity":{
-      "installDir":"\/export\/glassfish3",
-      "name":"sj01",
-      "nodeDir":null,
-      "nodeHost":
-      "sj01.example.com",
-      "type":"SSH"
-    },
-    "childResources":{
-      "application-ref":
-       "https:\/\/localhost:4848\/management\/domain\/nodes\/node\/sj01\/application-ref",
-      "resource-ref":
-       "https:\/\/localhost:4848\/management\/domain\/nodes\/node\/sj01\/resource-ref",
-      "ssh-connector":
-       "https:\/\/localhost:4848\/management\/domain\/nodes\/node\/sj01\/ssh-connector"
-    }
-  }
-}
-----
-
-[[gkvzs]][[GSADG00637]][[xml-resource-representation-for-configuration-objects]]
-
-XML Resource Representation for Configuration Objects
-+++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-The general format for the XML representation of a resource for a
-configuration object is as follows:
-
-[source,oac_no_warn]
-----
-<map>
- <entry key="extraProperties">
-  <map>
-   <entry key="methods">
-    <list>
-     methods
-    </list>
-   </entry>
-   <entry key="entity">
-    <map>
-     attributes
-    </map>
-   </entry>
-   <entry key="commands">
-    <list>
-     commands
-    </list>
-   </entry>
-   <entry key="childResources">
-    <map>
-    children
-    </map>
-   </entry>
-  </map>
- </entry>
- <entry key="message"></entry>
- <entry key="exit_code" value="code"></entry>
- <entry key="command" value="resource"></entry>
-</map>
-----
-
-The replaceable items in this format are as follows:
-
-methods::
-  One or more XML elements that represent the methods that the resource
-  supports. For the format of each element, see link:#gjizh[XML
-  Representation of a Resource Method].
-attributes::
-  Zero or more XML elements that represent the attributes of the
-  resource. Each element specifies a name-value pair as follows: +
-[source,oac_no_warn]
-----
-<entry key="name" value="value"></entry>
-----
-commands::
-  One or more XML elements that represent the `asadmin` subcommands for
-  performing non—CRUD operations on the resource. For the format of each
-  element, see link:#gkwaw[XML Representation of a Command].
-children::
-  Zero or more XML elements that represent the children of the resource.
-  Each element is specified as follows: +
-[source,oac_no_warn]
-----
-<entry key="resource-name" value="url"></entry>
-----
-::
-  resource-name;;
-    The name of the resource as displayed in client applications that
-    access the parent of the resource.
-  url;;
-    The URL to the child resource.
-code::
-  The result of the attempt to get the resource.
-resource::
-  The name of the resource.
-
-[[gjizh]][[GSADG00028]][[xml-representation-of-a-resource-method]]
-
-XML Representation of a Resource Method
-
-The XML representation of a method in a method list is as follows:
-
-[source,oac_no_warn]
-----
-<map>
- <entry key="name" value="method-name"></entry>
- <entry key="messageParameters">
-  message-parameter-list
- </entry>
- <entry key="queryParameters">
-  message-parameter-list
- </entry>
-</map>
-----
-
-The replaceable items in this format are as follows:
-
-method-name::
-  The name of the method, which is `GET`, `POST`, or `DELETE`.
-message-parameter-list::
-  Zero or more XML elements that represent the message parameters that
-  are allowed for the method. For the format of each element, see
-  link:#gjizn[XML Representation of a Message Parameter or a Query
-  Parameter].
-query-parameter-list::
-  Zero or more XML elements that represent the query parameters that are
-  allowed for the method. For the format of each element, see
-  link:#gjizn[XML Representation of a Message Parameter or a Query
-  Parameter].
-
-[[gkwaw]][[GSADG00029]][[xml-representation-of-a-command]]
-
-XML Representation of a Command
-
-The XML representation of a command is as follows:
-
-[source,oac_no_warn]
-----
-<map>
- <entry key="command" value="command-name"></entry>
- <entry key="path" value="command-path"></entry>
- <entry key="method" value="rest-method"></entry>
-</map>
-----
-
-The replaceable items in this format are as follows:
-
-command-name::
-  The name of the command as displayed in client applications that
-  access the resource.
-command-path::
-  The relative path to REST resource that represents the command. This
-  path is relative to the URL of the REST resource that is the parent of
-  the resource that represents the command.
-rest-method::
-  The REST resource method that the command invokes when the command is
-  run. The method is `GET`, `POST`, or `DELETE`.
-
-[[gjizn]][[GSADG00030]][[xml-representation-of-a-message-parameter-or-a-query-parameter]]
-
-XML Representation of a Message Parameter or a Query Parameter
-
-The XML representation of a message parameter or a query parameter is as
-follows:
-
-[source,oac_no_warn]
-----
-<map>
- <entry key="parameter-name">
-  <map>
-   attributes
-  </map>
- </entry>
-</map>
-----
-
-The replaceable items in this format are as follows:
-
-parameter-name::
-  The name of the parameter.
-attributes::
-  One or more XML elements that represent the attributes for the
-  parameter. Each element specifies a name-value pair as follows: +
-[source,oac_no_warn]
-----
-<entry key="name" value="value"></entry>
-----
-::
-  Possible attributes are as follows: +
-  `defaultValue`;;
-    The default value of the parameter.
-  `acceptablevalues`;;
-    The set or range of acceptable values for the parameter.
-  `type`;;
-    The data type of the parameter, which is one of the following types: +
-    * `boolean`
-    * `int`
-    * `string`
-  `optional`;;
-    Indicates whether the parameter is optional. If `true`, the
-    parameter is optional. If `false`, the parameter is required.
-  `key`;;
-    Indicates whether the parameter is key. If `true`, the parameter is
-    key. If `false`, the parameter is not key.
-
-[[gjjgi]][[GSADG00031]][[example-xml-resource-representation]]
-
-Example XML Resource Representation
-
-This example shows the XML representation of the resource for the node
-`sj01`. In this example, the DAS is running on the local host and the
-HTTP port for administration is 4848. The URL to the resource in this
-example is `http://localhost:4848/management/domain/nodes/node/sj01`.
-
-Line breaks and white space are added to enhance readability.
-
-[source,oac_no_warn]
-----
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<map>
- <entry key="extraProperties">
-  <map>
-   <entry key="methods">
-    <list>
-     <map>
-      <entry key="name" value="GET"/>
-     </map>
-     <map>
-      <entry key="name" value="POST"/>
-      <entry key="messageParameters">
-       <map>
-        <entry key="installDir">
-         <map>
-          <entry key="optional" value="true"/>
-          <entry key="type" value="string"/>
-          <entry key="key" value="false"/>
-         </map>
-        </entry>
-        <entry key="nodeDir">
-         <map>
-          <entry key="optional" value="true"/>
-          <entry key="type" value="string"/>
-          <entry key="key" value="false"/>
-         </map>
-        </entry>
-        <entry key="type">
-         <map>
-          <entry key="optional" value="true"/>
-          <entry key="type" value="string"/>
-          <entry key="key" value="false"/>
-         </map>
-        </entry>
-        <entry key="nodeHost">
-         <map>
-          <entry key="optional" value="true"/>
-          <entry key="type" value="string"/>
-          <entry key="key" value="false"/>
-         </map>
-        </entry>
-       </map>
-      </entry>
-     </map>
-    </list>
-   </entry>
-   <entry key="entity">
-    <map>
-     <entry key="installDir" value="/export/glassfish3"/>
-     <entry key="name" value="sj01"/>
-     <entry key="nodeDir" value=""/>
-     <entry key="type" value="SSH"/>
-     <entry key="nodeHost" value="sj01example.com"/>
-    </map>
-   </entry>
-   <entry key="commands">
-    <list>
-     <map>
-      <entry key="command" value="delete-node"/>
-      <entry key="path" value="_delete-node"/>
-      <entry key="method" value="DELETE"/>
-     </map>
-     <map>
-      <entry key="command" value="_update-node"/>
-      <entry key="path" value="_update-node"/>
-      <entry key="method" value="POST"/>
-     </map>
-     <map>
-      <entry key="command" value="ping-node-ssh"/>
-      <entry key="path" value="ping-node-ssh"/>
-      <entry key="method" value="GET"/>
-     </map>
-     <map>
-      <entry key="command" value="update-node-ssh"/>
-      <entry key="path" value="update-node-ssh"/>
-      <entry key="method" value="POST"/>
-     </map>
-     <map>
-      <entry key="command" value="update-node-config"/>
-      <entry key="path" value="update-node-config"/>
-      <entry key="method" value="POST"/>
-     </map>
-    </list>
-   </entry>
-   <entry key="childResources">
-    <map>
-     <entry key="application-ref" 
-      value="https://localhost:4848/management/domain/nodes/node/sj01/application-ref"/>
-     <entry key="ssh-connector" 
-      value="https://localhost:4848/management/domain/nodes/node/sj01/ssh-connector"/>
-     <entry key="resource-ref" 
-      value="https://localhost:4848/management/domain/nodes/node/sj01/resource-ref"/>
-    </map>
-   </entry>
-  </map>
- </entry>
- <entry key="message"/>
- <entry key="exit_code" value="SUCCESS"/>
- <entry key="command" value="Node"/>
-</map>
-----
-
-[[gjipm]][[GSADG00638]][[html-resource-representation-for-configuration-objects]]
-
-HTML Resource Representation for Configuration Objects
-++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-The format for the HTML representation of a resource for a configuration
-object is a web page that provides the following information about the
-resource:
-
-* A list of the attributes of the resource and their values.
-* A list of the methods and method parameters that the resource
-supports. Each method and its parameters are presented as a field of the
-appropriate type in an HTML form.
-* A list of hypertext links to the children of the resource.
-* A list of hypertext links to resources that represent `asadmin`
-subcommands for non-CRUD operations on the resource.
-
-For a sample web page, see link:#gjjce[Figure 2-1]. In this example, the
-DAS is running on the local host and the HTTP port for administration is
-4848. The URL to the resource in this example is
-`http://localhost:4848/management/domain/nodes/node/sj01`.
-
-[[gkwdd]][[GSADG00712]][[formats-for-resource-representation-of-monitoring-objects]]
-
-Formats for Resource Representation of Monitoring Objects
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The GlassFish Server REST interfaces represent resources for monitoring
-data in the following formats:
-
-* http://www.json.org/[JSON]
-* XML
-* HTML
-
-[[gkwgi]][[GSADG00639]][[json-resource-representation-for-monitoring-objects]]
-
-JSON Resource Representation for Monitoring Objects
-+++++++++++++++++++++++++++++++++++++++++++++++++++
-
-The general format for the JSON representation of a resource for a
-monitoring object is as follows:
-
-[source,oac_no_warn]
-----
-{
-  "message":"",
-  "command":"Monitoring Data",
-  "exit_code":"code",
-  "extraProperties":{
-    "entity":{
-      statistics-list
-    },
-    "childResources":{
-      children
-    }
-  }
-}
-----
-
-The replaceable items in this format are as follows:
-
-code::
-  The result of the attempt to get the resource.
-statistics-list::
-  Zero or more metadata sets separated by a comma (`,`) that represent
-  the statistics that the monitoring object provides. For the format of
-  each metadata set, see link:#gkwkl[JSON Representation of a Statistic
-  in a Statistics List].
-children::
-  Zero or more child resources separated by a comma (`,`). Each child
-  resource is specified as "resource-name":"url". +
-  resource-name;;
-    The name of the resource as displayed in client applications that
-    access the parent of the resource.
-  url;;
-    The URL to the child resource.
-
-[[gkwkl]][[GSADG00032]][[json-representation-of-a-statistic-in-a-statistics-list]]
-
-JSON Representation of a Statistic in a Statistics List
-
-The JSON representation of a counter statistic in a statistics list is
-as follows:
-
-[source,oac_no_warn]
-----
-"statistic":{
-  "count":count,
-  "lastsampletime":last-sample-time,
-  "description":"description",
-  "unit":"unit",
-  "name":"name",
-  "starttime":start-time
-}
-----
-
-The JSON representation of a range statistic in a statistics list is as
-follows:
-
-[source,oac_no_warn]
-----
-"statistic":{
-  "highwatermark":highest-value, 
-  "lowwatermark":lowest-value, 
-  "current":current-value
-  "lastsampletime":last-sample-time,
-  "description":"description",
-  "unit":"unit",
-  "name":"name",
-  "starttime":start-time
-}
-----
-
-The replaceable items in these formats are as follows:
-
-statistic::
-  The name of the statistic.
-count::
-  Counter statistics only: The current value of the statistic.
-highest-value::
-  Range statistics only: The highest value of the statistic since
-  monitoring of the statistic began.
-lowest-value::
-  Range statistics only: The lowest value of the statistic since
-  monitoring of the statistic began.
-current-value::
-  Range statistics only: The lowest value of the statistic since
-  monitoring of the statistic began.
-last-sample-time::
-  The time in UNIX time at which the statistic was last sampled.
-description::
-  A textual description of what the statistic represents.
-unit::
-  The unit of measurement of the statistic, which is one of the
-  following units of measurement: +
-  `count`;;
-    The cumulative value of an attribute that increases with time.
-  `range`;;
-    The lowest value, highest value, and current value of an attribute
-    that can increase or decrease with time.
-  `boundedrange`;;
-    The lowest value, highest value, and current value of an attribute
-    that can increase or decrease with time and has fixed limits.
-  `string`;;
-    A string that represents an attribute value. A string statistic is
-    similar to a count, except that the values are not ordered.
-    Typically, a string statistic represents the state of an object, for
-    example, `CONNECTED`, `CLOSED`, or `DISCONNECTED`.
-  `time`;;
-    Values of an attribute that provide the following timing
-    measurements for an operation: +
-    * The number of times the operation was performed.
-    * The maximum amount of time to perform the operation once.
-    * The minimum amount of time to perform the operation once.
-    * The total amount of time that has been spent performing the
-    operation.
-    * The average amount of time to perform the operation.
-name::
-  The name of the statistic as displayed in client applications that
-  access the resource that contains the statistic.
-start-time::
-  The time in UNIX time at which monitoring of the statistic began.
-
-[[gkwht]][[GSADG00033]][[example-json-resource-representation-for-a-monitoring-object]]
-
-Example JSON Resource Representation for a Monitoring Object
-
-This example shows the JSON representation of the monitoring object that
-provides class loader statistics for the virtual machine for the Java
-platform. In this example, the DAS is running on the local host and the
-HTTP port for administration is 4848. The URL to the resource in this
-example is
-`http://localhost:4848/monitoring/domain/server/jvm/class-loading-system`.
-
-Line breaks and white space are added to enhance readability.
-
-[source,oac_no_warn]
-----
-{
-  "message":"",
-  "command":"Monitoring Data",
-  "exit_code":"SUCCESS",
-  "extraProperties":{
-    "entity":{
-      "loadedclass-count":{
-        "count":8521,
-        "lastsampletime":1300726961018,
-        "description":"Number of classes currently loaded in the Java virtual 
-          machine",
-        "unit":"count",
-        "name":"LoadedClassCount",
-        "starttime":1300483924126
-      },
-      "totalloadedclass-count":{
-        "count":8682,
-        "lastsampletime":1300726961018,
-        "description":"Total number of classes that have been loaded since the 
-          Java virtual machine has started execution",
-        "unit":"count",
-        "name":"TotalLoadedClassCount",
-        "starttime":1300483924127
-      },
-      "unloadedclass-count":{
-        "count":161,
-        "lastsampletime":1300726961018,
-        "description":"Total number of classes unloaded since the Java virtual 
-          machine has started execution",
-        "unit":"count",
-        "name":"UnLoadedClassCount",
-        "starttime":1300483924127
-      }
-    },"childResources":{}
-  }
-}
-----
-
-[[gkwew]][[GSADG00640]][[xml-resource-representation-for-monitoring-objects]]
-
-XML Resource Representation for Monitoring Objects
-++++++++++++++++++++++++++++++++++++++++++++++++++
-
-The general format for the XML representation of a resource for a
-monitoring object is as follows:
-
-[source,oac_no_warn]
-----
-<?xml version="1.0" encoding="UTF-8"?>
-<map>
- <entry key="extraProperties">
-  <map>
-   <entry key="entity">
-    <map>
-     statistics
-    </map>
-   </entry>
-   <entry key="childResources">
-    <map>
-     children
-    </map>
-   </entry>
-  </map>
- </entry>
- <entry key="message" value=""></entry>
- <entry key="exit_code" value="code"></entry>
- <entry key="command" value="Monitoring Data"></entry>
-</map>
-----
-
-The replaceable items in this format are as follows:
-
-statistics::
-  Zero or more XML elements that represent the statistics that the
-  monitoring object provides. For the format of each element, see
-  link:#gkwjv[XML Representation of a Statistic].
-children::
-  Zero or more XML elements that represent the children of the resource.
-  Each element is specified as follows: +
-[source,oac_no_warn]
-----
-<entry key="resource-name" value="url"></entry>
-----
-::
-  resource-name;;
-    The name of the resource as displayed in client applications that
-    access the parent of the resource.
-  url;;
-    The URL to the child resource.
-code::
-  The result of the attempt to get the resource.
-
-[[gkwjv]][[GSADG00034]][[xml-representation-of-a-statistic]]
-
-XML Representation of a Statistic
-
-The XML representation of a counter statistic is as follows:
-
-[source,oac_no_warn]
-----
-<entry key="statistic">
- <map>
- <entry key="unit" value="unit"></entry>
- <entry key="starttime">
-   <number>start-time</number>
-  </entry>
-  <entry key="count">
-   <number>count</number>
-  </entry>
-  <entry key="description" value="description"></entry>
-  <entry key="name" value="name"></entry>
-  <entry key="lastsampletime">
-   <number>last-sample-time</number>
-  </entry>
-  </map>
-</entry>
-----
-
-The XML representation of a range statistic is as follows:
-
-[source,oac_no_warn]
-----
-<entry key="statistic">
- <map>
- <entry key="unit" value="unit"></entry>
- <entry key="starttime">
-   <number>start-time</number>
-  </entry>
-  <entry key="highwatermark">
-   <number>highest-value</number>
-  </entry>
-  <entry key="lowwatermark">
-   <number>lowest-value</number>
-  </entry>
-  <entry key="current">
-   <number>current-value</number>
-  </entry>
-  <entry key="description" value="description"></entry>
-  <entry key="name" value="name"></entry>
-  <entry key="lastsampletime">
-   <number>last-sample-time</number>
-  </entry>
-  </map>
-</entry>
-----
-
-The replaceable items in these formats are as follows:
-
-statistic::
-  The name of the statistic.
-unit::
-  The unit of measurement of the statistic, which is one of the
-  following units of measurement: +
-  `count`;;
-    The cumulative value of an attribute that increases with time.
-  `range`;;
-    The lowest value, highest value, and current value of an attribute
-    that can increase or decrease with time.
-  `boundedrange`;;
-    The lowest value, highest value, and current value of an attribute
-    that can increase or decrease with time and has fixed limits.
-  `string`;;
-    A string that represents an attribute value. A string statistic is
-    similar to a count, except that the values are not ordered.
-    Typically, a string statistic represents the state of an object, for
-    example, `CONNECTED`, `CLOSED`, or `DISCONNECTED`.
-  `time`;;
-    Values of an attribute that provide the following timing
-    measurements for an operation: +
-    * The number of times the operation was performed.
-    * The maximum amount of time to perform the operation once.
-    * The minimum amount of time to perform the operation once.
-    * The total amount of time that has been spent performing the
-    operation.
-    * The average amount of time to perform the operation.
-start-time::
-  The in time in UNIX time at which monitoring of the statistic began.
-count::
-  Counter statistics only: The current value of the statistic.
-highest-value::
-  Range statistics only: The highest value of the statistic since
-  monitoring of the statistic began.
-lowest-value::
-  Range statistics only: The lowest value of the statistic since
-  monitoring of the statistic began.
-current-value::
-  Range statistics only: The lowest value of the statistic since
-  monitoring of the statistic began.
-description::
-  A textual description of what the statistic represents.
-name::
-  The name of the statistic as displayed in client applications that
-  access the resource that contains the statistic.
-last-sample-time::
-  The time in UNIX time at which the statistic was last sampled.
-
-[[gkwhz]][[GSADG00035]][[example-xml-resource-representation-for-a-monitoring-object]]
-
-Example XML Resource Representation for a Monitoring Object
-
-This example shows the XML representation of the monitoring object that
-provides class loader statistics for the virtual machine for the Java
-platform. In this example, the DAS is running on the local host and the
-HTTP port for administration is 4848. The URL to the resource in this
-example is
-`http://localhost:4848/monitoring/domain/server/jvm/class-loading-system`.
-
-Line breaks and white space are added to enhance readability.
-
-[source,oac_no_warn]
-----
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<map>
- <entry key="extraProperties">
-  <map>
-   <entry key="entity">
-    <map>
-     <entry key="unloadedclass-count">
-      <map>
-       <entry key="unit" value="count"/>
-       <entry key="starttime">
-        <number>1300483924127</number>
-       </entry><entry key="count">
-        <number>161</number>
-       </entry>
-       <entry key="description" value="Total number of classes unloaded since 
-        the Java virtual machine has started execution"/>
-       <entry key="name" value="UnLoadedClassCount"/>
-       <entry key="lastsampletime">
-        <number>1300726989505</number>
-       </entry>
-      </map>
-     </entry>
-     <entry key="totalloadedclass-count">
-      <map>
-       <entry key="unit" value="count"/>
-       <entry key="starttime">
-        <number>1300483924127</number>
-       </entry>
-       <entry key="count">
-         number>8682</number>
-       </entry>
-       <entry key="description" value="Total number of classes that have been 
-        loaded since the Java virtual machine has started execution"/>
-       <entry key="name" value="TotalLoadedClassCount"/>
-       <entry key="lastsampletime">
-        <number>1300726989505</number>
-       </entry>
-      </map>
-     </entry>
-     <entry key="loadedclass-count">
-      <map>
-       <entry key="unit" value="count"/>
-       <entry key="starttime">
-        <number>1300483924126</number>
-       </entry><entry key="count">
-        <number>8521</number>
-       </entry>
-       <entry key="description" value="Number of classes currently loaded in 
-        the Java virtual machine"/>
-       <entry key="name" value="LoadedClassCount"/>
-       <entry key="lastsampletime">
-        <number>1300726989505</number>
-       </entry>
-      </map>
-     </entry>
-    </map>
-   </entry>
-   <entry key="childResources">
-    <map/>
-   </entry>
-  </map>
- </entry>
- <entry key="message" value=""/>
- <entry key="exit_code" value="SUCCESS"/>
- <entry key="command" value="Monitoring Data"/>
-</map>
-----
-
-[[gkwij]][[GSADG00641]][[html-resource-representation-for-monitoring-objects]]
-
-HTML Resource Representation for Monitoring Objects
-+++++++++++++++++++++++++++++++++++++++++++++++++++
-
-The format for the HTML representation of a resource for a monitoring
-object is a web page that provides the following information about the
-resource:
-
-* A list of the statistics that the resource provides.
-* A list of hypertext links to the children of the resource.
-
-The following figure shows the web page for the REST resource that
-provides class loader statistics for the virtual machine for the Java
-platform.
-
-[[GSADG00002]][[gkwku]]
-
-
-.*Figure 2-2 Web Page for the REST Resource That Provides Class Loader Statistics*
-image:img/rest-monitoring.png[
-"Screen capture showing the web page for the REST resource that provides
-class loader statistics."]
-
-
-[[gkwid]][[GSADG00713]][[formats-for-resource-representation-of-log-file-details]]
-
-Formats for Resource Representation of Log File Details
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The GlassFish Server REST interfaces represent resources for log file
-details in the following formats:
-
-* http://www.json.org/[JSON]
-* XML
-
-[[gkwnp]][[GSADG00642]][[json-resource-representation-for-log-file-details]]
-
-JSON Resource Representation for Log File Details
-+++++++++++++++++++++++++++++++++++++++++++++++++
-
-The general format for the JSON representation of a resource for log
-file details is as follows:
-
-[source,oac_no_warn]
-----
-{
-  "records": [
-    record-list
-  ]
-}
-----
-
-The replaceable item in this format is the record-list, which is one or
-more metadata sets separated by a comma (`,`) that represent the log
-records in the log file. For the format of each metadata set, see
-link:#gkwme[JSON Representation of a Log Record in a Record List].
-
-[[gkwme]][[GSADG00036]][[json-representation-of-a-log-record-in-a-record-list]]
-
-JSON Representation of a Log Record in a Record List
-
-The JSON representation of a log record in a record list is as follows:
-
-[source,oac_no_warn]
-----
-{
-  "recordNumber":record-number,
-  "loggedDateTimeInMS":logged-date,
-  "loggedLevel":"log-level",
-  "productName":"product-name",
-  "loggerName":"logger-class-name",
-  "nameValuePairs":"_ThreadID=thread-id;_ThreadName=thread-name;",
-  "messageID":"message-id",
-  "Message":"message-text"
-}
-----
-
-The replaceable items in this format are as follows:
-
-record-number::
-  A serial number in the form of a decimal integer that uniquely
-  identifies the log record.
-logged-date::
-  The date and time in UNIX time that the record was created.
-log-level::
-  The severity level of the message in the log record. For more
-  information, see link:logging.html#gklml[Setting Log Levels].
-product-name::
-  The application that created the log message, for example,
-  `glassfish3.1`.
-logger-class-name::
-  The fully qualified name of the Java class of the logger class that
-  created the log message. Each component of GlassFish Server provides
-  its own logger class. For detailed information about the names of
-  logger classes in GlassFish Server, see link:logging.html#gkres[Logger
-  Namespaces].
-thread-id::
-  The numerical identifier of the thread that created the message.
-thread-name::
-  The name of the thread that created the message.
-message-id::
-  A unique identifier for the message. For messages from GlassFish
-  Server, this identifier consists of a module code and a numerical
-  value, for example, `CORE5004`. All `SEVERE` and `WARNING` messages
-  and some `INFO` messages from GlassFish Server contain a message
-  identifier. For more information, see the link:../error-messages-reference/toc.html#GSEMR[GlassFish Server
-  Open Source Edition Error Message Reference].
-message-text::
-  The text of the log message.
-
-[[gkwoz]][[GSADG00037]][[example-json-resource-representation-for-log-file-details]]
-
-Example JSON Resource Representation for Log File Details
-
-This example shows the JSON representation of the resource for log file
-details. In this example, the DAS is running on the local host and the
-HTTP port for administration is 4848. The URL to the resource in this
-example is `http://localhost:4848/management/domain/view-log/details`.
-
-Line breaks and white space are added to enhance readability.
-
-[source,oac_no_warn]
-----
-{
-  "records": [
-    {
-      "recordNumber":475,
-      "loggedDateTimeInMS":1300743782815,
-      "loggedLevel":"INFO",
-      "productName":"glassfish3.1",
-      "loggerName":"org.glassfish.admingui",
-      "nameValuePairs": "_ThreadID=25;_ThreadName=Thread-1;",
-      "messageID":"",
-      "Message":"Admin Console: Initializing Session Attributes..."
-    },
-    {
-      "recordNumber":474,
-      "loggedDateTimeInMS":1300728893368,
-      "loggedLevel":"INFO",
-      "productName":"glassfish3.1",
-      "loggerName":"jakarta.enterprise.system.core.com.sun.enterprise.v3.admin.adapter",
-      "nameValuePairs":"_ThreadID=238;_ThreadName=Thread-1;",
-      "messageID":"",
-      "Message":"The Admin Console application is loaded."
-    },
-    {
-      "recordNumber":473,
-      "loggedDateTimeInMS":1300728893367,
-      "loggedLevel":"INFO",
-      "productName":"glassfish3.1",
-      "loggerName":"jakarta.enterprise.system.core.com.sun.enterprise.v3.server",
-      "nameValuePairs":"_ThreadID=238;_ThreadName=Thread-1;",
-      "messageID":"CORE10010",
-      "Message":" Loading application __admingui done in 40,063 ms"
-    }
-  ]
-}
-----
-
-[[gkwmi]][[GSADG00643]][[xml-resource-representation-for-log-file-details]]
-
-XML Resource Representation for Log File Details
-++++++++++++++++++++++++++++++++++++++++++++++++
-
-The general format for the XML representation of a resource for log file
-details is as follows:
-
-[source,oac_no_warn]
-----
-<records>
- records
- </records>
-----
-
-The replaceable item in this format is the records, which is one or more
-XML elements that represent the log records in the log file. For the
-format of each element, see link:#gkwot[XML Representation of a Log
-Record].
-
-[[gkwot]][[GSADG00038]][[xml-representation-of-a-log-record]]
-
-XML Representation of a Log Record
-
-The XML representation of a log record is as follows:
-
-[source,oac_no_warn]
-----
-<record loggedDateTimeInMS="logged-date" loggedLevel="log-level" 
- loggerName="logger-class-name" messageID="message-id" 
- nameValuePairs="_ThreadID=thread-id;_thread-name;" productName="product-name"
- recordNumber="record-number"/>
-----
-
-The replaceable items in this format are as follows:
-
-logged-date::
-  The date and time in UNIX time that the record was created.
-log-level::
-  The severity level of the message in the log record. For more
-  information, see link:logging.html#gklml[Setting Log Levels].
-logger-class-name::
-  The fully qualified name of the Java class of the logger class that
-  created the log message. Each component of GlassFish Server provides
-  its own logger class. For detailed information about the names of
-  logger classes in GlassFish Server, see link:logging.html#gkres[Logger
-  Namespaces].
-message-id::
-  A unique identifier for the message. For messages from GlassFish
-  Server, this identifier consists of a module code and a numerical
-  value, for example, `CORE5004`. All `SEVERE` and `WARNING` messages
-  and some `INFO` messages from GlassFish Server contain a message
-  identifier. For more information, see the link:../error-messages-reference/toc.html#GSEMR[GlassFish Server
-  Open Source Edition Error Message Reference].
-thread-id::
-  The numerical identifier of the thread that created the message.
-thread-name::
-  The name of the thread that created the message.
-product-name::
-  The application that created the log message, for example,
-  `glassfish3.1`.
-record-number::
-  A serial number in the form of a decimal integer that uniquely
-  identifies the log record.
-
-[[gkwoq]][[GSADG00039]][[example-xml-resource-representation-for-log-file-details]]
-
-Example XML Resource Representation for Log File Details
-
-This example shows the XML representation of the resource for log file
-details. In this example, the DAS is running on the local host and the
-HTTP port for administration is 4848. The URL to the resource in this
-example is `http://localhost:4848/management/domain/view-log/details`.
-
-Line breaks and white space are added to enhance readability.
-
-[source,oac_no_warn]
-----
-<records>
- <record loggedDateTimeInMS="1300743782815" loggedLevel="INFO" 
- loggerName="org.glassfish.admingui" messageID="" 
- nameValuePairs="_ThreadID=25;_ThreadName=Thread-1;" 
- productName="glassfish3.1" recordNumber="475"/>
- <record loggedDateTimeInMS="1300728893368" loggedLevel="INFO" 
- loggerName="jakarta.enterprise.system.core.com.sun.enterprise.v3.admin.adapter" 
-  messageID="" nameValuePairs="_ThreadID=238;_ThreadName=Thread-1;" 
-  productName="glassfish3.1" recordNumber="474"/>
- <record loggedDateTimeInMS="1300728893367" loggedLevel="INFO" 
- loggerName="jakarta.enterprise.system.core.com.sun.enterprise.v3.server" 
- messageid="core10010" nameValuePairs="_ThreadID=238;_ThreadName=Thread-1;" 
- productName="glassfish3.1" recordNumber="473"/>
-</records>
-----
-
-[[gkwsq]][[GSADG00714]][[supported-content-types-in-requests-to-rest-resources]]
-
-Supported Content Types in Requests to REST Resources
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The GlassFish Server REST interfaces support the following types in the
-content-type header of a client request:
-
-* http://www.json.org/[JSON]
-* XML
-* http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1[Form URL
-encoded]
-
-How to specify the type in the content-type header depends on how you
-are sending the request. For example, if you are using the cURL utility,
-specify the type through the `-H` option as follows:
-
-* For JSON, specify `-H "Content-type: application/json"`.
-* For XML, specify `-H "Content-type: application/xml"`.
-* For form URL encoded, specify
-`-H "Content-type: application/x-www-form-urlencoded"`.
-
-
diff --git a/docs/administration-guide/src/main/jbake/content/http_https.adoc b/docs/administration-guide/src/main/jbake/content/http_https.adoc
deleted file mode 100644
index 6d3392a..0000000
--- a/docs/administration-guide/src/main/jbake/content/http_https.adoc
+++ /dev/null
@@ -1,1158 +0,0 @@
-type=page
-status=published
-title=Administering Internet Connectivity
-next=concurrent.html
-prev=connectors.html
-~~~~~~
-Administering Internet Connectivity
-===================================
-
-[[GSADG00017]][[ablsw]]
-
-
-[[administering-internet-connectivity]]
-13 Administering Internet Connectivity
---------------------------------------
-
-This chapter provides procedures for performing internet connectivity
-tasks in the GlassFish Server Open Source Edition 5.0 environment by
-using the `asadmin` command-line utility.
-
-The following topics are addressed here:
-
-* link:#giusf[About Internet Connectivity]
-* link:#ggnfu[Administering HTTP Network Listeners]
-* link:#ggncs[Administering Virtual Servers]
-
-Instructions for accomplishing the tasks in this chapter by using the
-Administration Console are contained in the Administration Console
-online help.
-
-[[giusf]][[GSADG00587]][[about-internet-connectivity]]
-
-About Internet Connectivity
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The HTTP service provides functionality for deploying web applications
-and for making deployed web applications accessible by Internet clients,
-either in a single application server instance or in a cluster of
-multiple server instances. HTTP services are provided by two kinds of
-related objects: listeners and virtual servers.
-
-For more information about clusters, see the link:../ha-administration-guide/toc.html#GSHAG[GlassFish
-Server Open Source Edition High Availability Administration Guide].
-
-The following topics are addressed here:
-
-* link:#giuri[About HTTP Network Listeners]
-* link:#giupz[About Virtual Servers]
-
-[[giuri]][[GSADG00766]][[about-http-network-listeners]]
-
-About HTTP Network Listeners
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-An HTTP listener, also known as a network listener, is a listen socket
-that has an Internet Protocol (IP) address, a port number, a server
-name, and a default virtual server. Each virtual server provides
-connections between the server and clients through one or more
-listeners. Each listener must have a unique combination of port number
-and IP address. For example, an HTTP listener can listen for a host on
-all configured IP addresses on a given port by specifying the IP address
-0.0.0.0. Alternatively, the listener can specify a unique IP address for
-each listener while using the same port.
-
-Because an HTTP listener is a combination of IP address and port number,
-you can have multiple HTTP listeners with the same IP address and
-different port numbers, or with different IP addresses and the same port
-number (if your host was configured to respond to these addresses).
-However, if an HTTP listener uses the 0.0.0.0 IP address, which listens
-on all IP addresses on a port, you cannot create HTTP listeners for
-additional IP addresses that listen on the same port for a specific IP
-address. For example, if an HTTP listener uses 0.0.0.0:8080 (all IP
-addresses on port 8080), another HTTP listener cannot use 1.2.3.4:8080.
-The host running the GlassFish Server typically has access to only one
-IP address. HTTP listeners typically use the 0.0.0.0 IP address and
-different port numbers, with each port number serving a different
-purpose. However, if the host does have access to more than one IP
-address, each address can serve a different purpose.
-
-To access a web application deployed on GlassFish Server, use the URL
-`http://localhost:8080/` (or `https://localhost:8081/` for a secure
-application), along with the context root specified for the web
-application.
-
-To access the Administration Console, use the URL
-`https://localhost:4848/` or `http://localhost:4848/asadmin/` (console
-default context root).
-
-[[giupz]][[GSADG00767]][[about-virtual-servers]]
-
-About Virtual Servers
-^^^^^^^^^^^^^^^^^^^^^
-
-A virtual server, sometimes called a virtual host, is an object that
-allows the same physical server to host multiple Internet domain names.
-All virtual servers hosted on the same physical server share the IP
-address of that physical server. A virtual server associates a domain
-name for a server (such as `www.aaa.com`) with the particular server on
-which GlassFish Server is running. Each virtual server must be
-registered with the DNS server for your network.
-
-
-[NOTE]
-=======================================================================
-
-Do not confuse an Internet domain with the administrative domain of
-GlassFish Server.
-
-=======================================================================
-
-
-For example, assume that you want to host the following domains on your
-physical server: `www.aaa.com`, `www.bbb.com`, and `www.ccc.com`. Assume
-that these domains are respectively associated with web modules `web1`,
-`web2`, and `web3`. This means that the following URLs are handled by
-your physical server:
-
-[source,oac_no_warn]
-----
-http://www.aaa.com:8080/web1
-http://www.bbb.com:8080/web2
-http://www.ccc.com:8080/web3
-----
-
-The first URL is mapped to virtual server `www.aaa.com`, the second URL
-is mapped to virtual server `www.bbb.com`, and the third is mapped to
-virtual server `www.ccc.com`. For this mapping to work, `www.aaa.com`,
-`www.bbb.com`, and `www.ccc.com` must all resolve to your physical
-server's IP address and each virtual server must be registered with the
-DNS server for your network. In addition, on a UNIX system, add these
-domains to your `/etc/hosts` file (if the setting for `hosts` in your
-`/etc/nsswitch.conf` file includes `files`).
-
-[[ggnfu]][[GSADG00588]][[administering-http-network-listeners]]
-
-Administering HTTP Network Listeners
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-By default, when GlassFish Server starts, the following HTTP listeners
-are started automatically:
-
-* HTTP listeners associated with the virtual server named `server`:
-
-** The listener named `http-listener-1` does not have security enabled.
-
-** The listener named `http-listener-2` has security enabled
-* An HTTP listener named `admin-listener`, associated with the virtual
-server named `__asadmin`. For this listener, security is not enabled.
-
-The following table describes the GlassFish Server default ports for the
-listeners that use ports.
-
-[[GSADG990]][[sthref72]][[ggnpj]]
-
-
-Table 13-1 Default Ports for Listeners
-
-[width="100%",cols="18%,13%,69%",options="header",]
-|=======================================================================
-|Listener |Default Port |Description
-|Administrative server |4848 |A domain's administrative server is
-accessed by the Administration Console and the `asadmin` utility. For
-the Administration Console, specify the port number in the URL of the
-browser. When running an `asadmin` subcommand remotely, specify the port
-number by using the `--port` option.
-
-|HTTP |8080 |The web server listens for HTTP requests on a port. To
-access deployed web applications and services, clients connect to this
-port.
-
-|HTTPS |8181 |Web applications configured for secure communications
-listen on a separate port.
-
-| | |
-
-| | |
-
-| | |
-|=======================================================================
-
-
-The following topics are addressed here:
-
-* link:#ggnfh[To Create an Internet Connection]
-* link:#gjkuy[Administering HTTP Protocols]
-* link:#gjkzi[Administering HTTP Configurations]
-* link:#gjkym[Administering HTTP Transports]
-* link:#gjkwt[Administering HTTP Network Listeners]
-
-[[ggnfh]][[GSADG00456]][[to-create-an-internet-connection]]
-
-To Create an Internet Connection
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the subcommands in this procedure to create an internet connection
-with the full range of listener options. A network listener is created
-behind the scenes. For the shortcut version of this process , see
-link:#gjimx[To Create an HTTP Network Listener].
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Create an HTTP or HTTPS protocol by using the
-link:../reference-manual/create-protocol.html#GSRFM00051[`create-protocol`] subcommand with the
-`--securityenabled` option. +
-To use the built-in `http-listener-1` HTTP protocol, or
-`http-listener-2` HTTPS protocol, skip this step.
-3.  Create an HTTP configuration by using the
-link:../reference-manual/create-http.html#GSRFM00025[`create-http`] subcommand. +
-To use a built-in protocol, skip this step.
-4.  Create a transport by using the link:../reference-manual/create-transport.html#GSRFM00061[`create-transport`]
-subcommand. +
-To use the built-in `tcp` transport, skip this step.
-5.  Create a thread pool by using the
-link:../reference-manual/create-threadpool.html#GSRFM00060[`create-threadpool`] subcommand. +
-To avoid using a thread pool, or to use the built-in `http-thread-pool`
-thread pool, skip this step. +
-For additional thread pool information, see
-link:threadpools.html#abluc[Administering Thread Pools].
-6.  Create an HTTP listener by using the
-link:../reference-manual/create-network-listener.html#GSRFM00046[`create-network-listener`] subcommand. +
-Specify a protocol and transport, optionally a thread pool.
-7.  To apply your changes, restart GlassFish Server. +
-See link:domains.html#ginqj[To Restart a Domain].
-
-[[GSADG991]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing a command such as `asadmin help create-http-listener` at the
-command line.
-
-[[gjkuy]][[GSADG00768]][[administering-http-protocols]]
-
-Administering HTTP Protocols
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Each HTTP listener has an HTTP protocol, which is created either by
-using the `create-protocol` subcommand or by using the built-in
-protocols that are applied when you follow the instructions in
-link:#gjimx[To Create an HTTP Network Listener].
-
-The following topics are addressed here:
-
-* link:#gjhot[To Create a Protocol]
-* link:#gjhna[To List Protocols]
-* link:#gjhnx[To Delete a Protocol]
-
-[[gjhot]][[GSADG00457]][[to-create-a-protocol]]
-
-To Create a Protocol
-++++++++++++++++++++
-
-Use the `create-protocol` subcommand in remote mode to create a
-protocol.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Create a protocol by using the link:../reference-manual/create-protocol.html#GSRFM00051[`create-protocol`] +
-Information about options and properties for the subcommand are included
-in this help page.
-
-[[GSADG00245]][[gjhos]]
-
-
-Example 13-1 Creating an HTTP Protocol
-
-This example creates a protocol named `http-1` with security enabled.
-
-[source,oac_no_warn]
-----
-asadmin> create-protocol --securityenabled=true http-1
-Command create-protocol executed successfully.
-----
-
-[[GSADG992]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-protocol` at the command line.
-
-[[gjhna]][[GSADG00458]][[to-list-protocols]]
-
-To List Protocols
-+++++++++++++++++
-
-Use the `list-protocols` subcommand in remote mode to list the existing
-HTTP protocols.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the existing protocols by using the
-link:../reference-manual/list-protocols.html#GSRFM00195[`list-protocols`] subcommand.
-
-[[GSADG00246]][[gjhqg]]
-
-
-Example 13-2 Listing the Protocols
-
-This example lists the existing protocols.
-
-[source,oac_no_warn]
-----
-asadmin> list-protocols
-admin-listener
-http-1
-http-listener-1
-http-listener-2
-Command list-protocols executed successfully.
-----
-
-[[GSADG993]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-protocols` at the command line.
-
-[[gjhnx]][[GSADG00459]][[to-delete-a-protocol]]
-
-To Delete a Protocol
-++++++++++++++++++++
-
-Use the `delete-protocol` subcommand in remote mode to remove a
-protocol.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Delete a protocol by using the link:../reference-manual/delete-protocol.html#GSRFM00103[`delete-protocol`]
-subcommand
-
-[[GSADG00247]][[gjhop]]
-
-
-Example 13-3 Deleting a Protocol
-
-This example deletes the protocol named `http-1`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-protocol http-1
-Command delete-protocol executed successfully.
-----
-
-[[GSADG994]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-protocol` at the command line.
-
-[[gjkzi]][[GSADG00769]][[administering-http-configurations]]
-
-Administering HTTP Configurations
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Each HTTP listener has an HTTP configuration, which is created either by
-using the `create-http` subcommand or by using the built-in
-configurations that are applied when you follow the instructions in
-link:#gjimx[To Create an HTTP Network Listener].
-
-The following topics are addressed here:
-
-* link:#gjhqc[To Create an HTTP Configuration]
-* link:#gjhqa[To Delete an HTTP Configuration]
-
-[[gjhqc]][[GSADG00460]][[to-create-an-http-configuration]]
-
-To Create an HTTP Configuration
-+++++++++++++++++++++++++++++++
-
-Use the `create-http` subcommand in remote mode to create a set of HTTP
-parameters for a protocol. This set of parameters configures one or more
-network listeners,
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Create an HTTP configuration by using the
-link:../reference-manual/create-http.html#GSRFM00025[`create-http`] subcommand. +
-Information about options and properties for the subcommand are included
-in this help page.
-
-[[GSADG00248]][[gjhnz]]
-
-
-Example 13-4 Creating an HTTP Configuration
-
-This example creates an HTTP parameter set for the protocol named
-`http-1`.
-
-[source,oac_no_warn]
-----
-asadmin> create-http --timeout-seconds 60 --default-virtual-server server http-1
-Command create-http executed successfully.
-----
-
-[[GSADG995]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-http` at the command line.
-
-[[gjhqa]][[GSADG00461]][[to-delete-an-http-configuration]]
-
-To Delete an HTTP Configuration
-+++++++++++++++++++++++++++++++
-
-Use the `delete-http` subcommand in remote mode to remove HTTP
-parameters from a protocol.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Delete the HTTP parameters from a protocol by using the
-link:../reference-manual/delete-http.html#GSRFM00077[`delete-http`] subcommand.
-
-[[GSADG00249]][[gjhov]]
-
-
-Example 13-5 Deleting an HTTP Configuration
-
-This example deletes the HTTP parameter set from a protocol named
-`http-1`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-http http-1
-Command delete-http executed successfully.
-----
-
-[[GSADG996]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-http` at the command line.
-
-[[gjkym]][[GSADG00770]][[administering-http-transports]]
-
-Administering HTTP Transports
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Each HTTP listener has an HTTP transport, which is created either by
-using the `create-transport` subcommand or by using the built-in
-transports that are applied when you follow the instructions in
-link:#gjimx[To Create an HTTP Network Listener].
-
-The following topics are addressed here:
-
-* link:#gjhps[To Create a Transport]
-* link:#gjhmx[To List Transports]
-* link:#gjhqp[To Delete a Transport]
-
-[[gjhps]][[GSADG00462]][[to-create-a-transport]]
-
-To Create a Transport
-+++++++++++++++++++++
-
-Use the `create-transport` subcommand in remote mode to create a
-transport for a network listener,
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Create a transport by using the link:../reference-manual/create-transport.html#GSRFM00061[`create-transport`]
-subcommand. +
-Information about options and properties for the subcommand are included
-in this help page.
-
-[[GSADG00250]][[gjhpx]]
-
-
-Example 13-6 Creating a Transport
-
-This example creates a transport named `http1-trans` that uses a
-non-default number of acceptor threads.
-
-[source,oac_no_warn]
-----
-asadmin> create-transport --acceptorthreads 100 http1-trans
-Command create-transport executed successfully.
-----
-
-[[GSADG997]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-transport` at the command line.
-
-[[gjhmx]][[GSADG00463]][[to-list-transports]]
-
-To List Transports
-++++++++++++++++++
-
-Use the `list-transports` subcommand in remote mode to list the existing
-HTTP transports.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the existing transports by using the
-link:../reference-manual/list-transports.html#GSRFM00206[`list-transports`] subcommand.
-
-[[GSADG00251]][[gjhqj]]
-
-
-Example 13-7 Listing HTTP Transports
-
-This example lists the existing transports.
-
-[source,oac_no_warn]
-----
-asadmin> list-transports
-http1-trans
-tcp
-Command list-transports executed successfully.
-----
-
-[[GSADG998]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-transports` at the command line.
-
-[[gjhqp]][[GSADG00464]][[to-delete-a-transport]]
-
-To Delete a Transport
-+++++++++++++++++++++
-
-Use the `delete-transport` subcommand in remote mode to remove a
-transport.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Delete a transport by using the link:../reference-manual/delete-transport.html#GSRFM00112[`delete-transport`]
-subcommand.
-
-[[GSADG00252]][[gjhoh]]
-
-
-Example 13-8 Deleting a Transport
-
-This example deletes he transport named `http1-trans`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-transport http1-trans
-Command delete-transport executed successfully. 
-----
-
-[[GSADG999]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-transport` at the command line.
-
-[[gjkwt]][[GSADG00771]][[administering-http-network-listeners-1]]
-
-Administering HTTP Network Listeners
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The following topics are addressed here:
-
-* link:#gjimx[To Create an HTTP Network Listener]
-* link:#ggnbv[To List HTTP Network Listeners]
-* link:#giwls[To Update an HTTP Network Listener]
-* link:#ggndu[To Delete an HTTP Network Listener]
-* link:#ggnbj[To Configure an HTTP Listener for SSL]
-* link:#CHDEDCEA[To Configure Optional Client Authentication for SSL]
-* link:#CHDHEFHG[To Configure a Custom SSL Implementation]
-* link:#ggncl[To Delete SSL From an HTTP Listener]
-* link:#gixjb[To Assign a Default Virtual Server to an HTTP Listener]
-
-[[gjimx]][[GSADG00465]][[to-create-an-http-network-listener]]
-
-To Create an HTTP Network Listener
-++++++++++++++++++++++++++++++++++
-
-Use the `create-http-listener` subcommand or the
-`create-network-listener` subcommand in remote mode to create a
-listener. These subcommands provide backward compatibility and also
-provide a shortcut for creating network listeners that use the HTTP
-protocol. Behind the scenes, a network listener is created as well as
-its associated protocol, transport, and HTTP configuration. This method
-is a convenient shortcut, but it gives access to only a limited number
-of options. If you want to specify the full range of listener options,
-follow the instructions in link:#ggnfh[To Create an Internet
-Connection].
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Create an HTTP network listener by using the
-link:../reference-manual/create-network-listener.html#GSRFM00046[`create-network-listener`] subcommand or the
-link:../reference-manual/create-http-listener.html#GSRFM00030[`create-http-listener`] subcommand.
-3.  If needed, restart the server. +
-If you edit the special HTTP network listener named `admin-listener`,
-you must restart the server for changes to take effect. See
-link:domains.html#ginqj[To Restart a Domain].
-
-[[GSADG00253]][[ggpjk]]
-
-
-Example 13-9 Creating an HTTP Listener
-
-This example creates an HTTP listener named `sampleListener` that uses a
-non-default number of acceptor threads. Security is not enabled at
-runtime.
-
-[source,oac_no_warn]
-----
-asadmin> create-http-listener --listeneraddress 0.0.0.0 
---listenerport 7272 --defaultvs server --servername host1.sun.com 
---acceptorthreads 100 --securityenabled=false 
---enabled=false sampleListener
-Command create-http-listener executed successfully.
-----
-
-[[GSADG00254]][[gjimj]]
-
-
-Example 13-10 Creating a Network Listener
-
-This example a network listener named `sampleListener` that is not
-enabled at runtime:
-
-[source,oac_no_warn]
-----
-asadmin> create-network-listener --listenerport 7272 protocol http-1
---enabled=false sampleListener
-Command create-network-listener executed successfully.
-----
-
-[[GSADG1000]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-http-listener` or
-`asadmin help create-network-listener` at the command line.
-
-[[ggnbv]][[GSADG00466]][[to-list-http-network-listeners]]
-
-To List HTTP Network Listeners
-++++++++++++++++++++++++++++++
-
-Use the `list-http-listeners` subcommand or the `list-network-listeners`
-subcommand in remote mode to list the existing HTTP listeners.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List HTTP listeners by using the
-link:../reference-manual/list-http-listeners.html#GSRFM00168[`list-http-listeners`] or
-link:../reference-manual/list-network-listeners.html#GSRFM00186[`list-network-listeners`] subcommand.
-
-[[GSADG00255]][[ggpgw]]
-
-
-Example 13-11 Listing HTTP Listeners
-
-This example lists the HTTP listeners. The same output is given if you
-use the `list-network-listeners` subcommand.
-
-[source,oac_no_warn]
-----
-asadmin> list-http-listeners
-admin-listener
-http-listener-2
-http-listener-1
-Command list-http-listeners executed successfully.
-----
-
-[[GSADG1001]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-http-listeners` or
-`asadmin help list-network-listeners` at the command line.
-
-[[giwls]][[GSADG00467]][[to-update-an-http-network-listener]]
-
-To Update an HTTP Network Listener
-++++++++++++++++++++++++++++++++++
-
-1.  List HTTP listeners by using the
-link:../reference-manual/list-http-listeners.html#GSRFM00168[`list-http-listeners`] or
-link:../reference-manual/list-network-listeners.html#GSRFM00186[`list-network-listeners`] subcommand.
-2.  Modify the values for the specified listener by using the
-link:../reference-manual/set.html#GSRFM00226[`set`] subcommand. +
-The listener is identified by its dotted name.
-
-[[GSADG00256]][[giwiw]]
-
-
-Example 13-12 Updating an HTTP Network Listener
-
-This example changes `security-enabled` to `false` on `http-listener-2`.
-
-[source,oac_no_warn]
-----
-asadmin> set server.network-config.protocols.protocol.http-listener-2.security-enabled=false
-Command set executed successfully.
-----
-
-[[ggndu]][[GSADG00468]][[to-delete-an-http-network-listener]]
-
-To Delete an HTTP Network Listener
-++++++++++++++++++++++++++++++++++
-
-Use the `delete-http-listener` subcommand or the
-`delete-network-listener` subcommand in remote mode to delete an
-existing HTTP listener. This disables secure communications for the
-listener.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List HTTP listeners by using the
-link:../reference-manual/list-http-listeners.html#GSRFM00168[`list-http-listeners`] subcommand.
-3.  Delete an HTTP listener by using the
-link:../reference-manual/delete-http-listener.html#GSRFM00082[`delete-http-listener`] or
-link:../reference-manual/delete-network-listener.html#GSRFM00098[`delete-network-listener`] subcommand.
-4.  To apply your changes, restart GlassFish Server. +
-See link:domains.html#ginqj[To Restart a Domain].
-
-[[GSADG00257]][[ggpjr]]
-
-
-Example 13-13 Deleting an HTTP Listener
-
-This example deletes the HTTP listener named `sampleListener`:
-
-[source,oac_no_warn]
-----
-asadmin> delete-http-listener sampleListener
-Command delete-http-listener executed successfully.
-----
-
-[[GSADG1002]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-http-listener` or
-`asadmin help delete-network-listener` at the command line.
-
-[[ggnbj]][[GSADG00469]][[to-configure-an-http-listener-for-ssl]]
-
-To Configure an HTTP Listener for SSL
-+++++++++++++++++++++++++++++++++++++
-
-Use the `create-ssl` subcommand in remote mode to create and configure
-an SSL element in the specified listener. This enables secure
-communication for the listener.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Configure an HTTP listener by using the
-link:../reference-manual/create-ssl.html#GSRFM00058[`create-ssl`] subcommand.
-3.  To apply your changes, restart GlassFish Server. +
-See link:domains.html#ginqj[To Restart a Domain].
-
-[[GSADG00258]][[ggphv]]
-
-
-Example 13-14 Configuring an HTTP Listener for SSL
-
-This example enables the HTTP listener named `http-listener-1` for SSL:
-
-[source,oac_no_warn]
-----
-asadmin> create-ssl --type http-listener --certname sampleCert http-listener-1
-Command create-ssl executed successfully.
-----
-
-[[GSADG1003]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-ssl` at the command line.
-
-[[CHDEDCEA]][[GSADG1106]][[to-configure-optional-client-authentication-for-ssl]]
-
-To Configure Optional Client Authentication for SSL
-+++++++++++++++++++++++++++++++++++++++++++++++++++
-
-In GlassFish Server, you can configure the SSL protocol of an HTTP
-listener such that it requests a certificate before permitting a client
-connection, but does not refuse a connection if the client does not
-provide one. To enable this feature, set the `client-auth` property of
-the SSL protocol to the value `want`. For example:
-
-[source,oac_no_warn]
-----
-asadmin> set configs.config.config-name.network-config.protocols.\
-protocol.listener-name.ssl.client-auth=want
-----
-
-[[CHDHEFHG]][[GSADG1107]][[to-configure-a-custom-ssl-implementation]]
-
-To Configure a Custom SSL Implementation
-++++++++++++++++++++++++++++++++++++++++
-
-In GlassFish Server, you can configure the SSL protocol an HTTP listener
-such that it uses a custom implementation of SSL. To enable this
-feature, set the `classname` property of the SSL protocol to the name of
-a class that implements the `com.sun.grizzly.util.net.SSLImplementation`
-interface. For example:
-
-[source,oac_no_warn]
-----
-asadmin> set configs.config.config-name.network-config.protocols.\
-protocol.listener-name.ssl.classname=SSLImplementation-class-name
-----
-
-By default, GlassFish Server uses the implementation
-`com.sun.enterprise.security.ssl.GlassfishSSLImpl` for the SSL protocol.
-
-[[ggncl]][[GSADG00470]][[to-delete-ssl-from-an-http-listener]]
-
-To Delete SSL From an HTTP Listener
-+++++++++++++++++++++++++++++++++++
-
-Use the `delete-ssl` subcommand in remote mode to delete the SSL element
-in the specified listener. This disables secure communications for the
-listener.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Delete SSL from an HTTP listener by using the
-link:../reference-manual/delete-ssl.html#GSRFM00109[`delete-ssl`] subcommand.
-3.  To apply your changes, restart GlassFish Server. +
-See link:domains.html#ginqj[To Restart a Domain].
-
-[[GSADG00259]][[ggpln]]
-
-
-Example 13-15 Deleting SSL From an HTTP Listener
-
-This example disables SSL for the HTTP listener named `http-listener-1`:
-
-[source,oac_no_warn]
-----
-asadmin> delete-ssl --type http-listener http-listener-1
-Command delete-http-listener executed successfully.
-----
-
-[[GSADG1004]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-ssl` at the command line.
-
-[[gixjb]][[GSADG00471]][[to-assign-a-default-virtual-server-to-an-http-listener]]
-
-To Assign a Default Virtual Server to an HTTP Listener
-++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-1.  In the Administration Console, open the HTTP Service component under
-the relevant configuration.
-2.  Open the HTTP Listeners component under the HTTP Service component.
-3.  Select or create a new HTTP listener.
-4.  Select from the Default Virtual Server drop-down list. +
-For more information, see link:#beaga[To Assign a Default Web Module to
-a Virtual Server].
-
-[[GSADG1005]]
-
-See Also
-
-For details, click the Help button in the Administration Console from
-the HTTP Listeners page.
-
-[[ggncs]][[GSADG00589]][[administering-virtual-servers]]
-
-Administering Virtual Servers
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-A virtual server is a virtual web server that serves content targeted
-for a specific URL. Multiple virtual servers can serve content using the
-same or different host names, port numbers, or IP addresses. The HTTP
-service directs incoming web requests to different virtual servers based
-on the URL.
-
-When you first install GlassFish Server, a default virtual server is
-created. You can assign a default virtual server to each new HTTP
-listener you create.
-
-Web applications and Java EE applications containing web components (web
-modules) can be assigned to virtual servers during deployment. A web
-module can be assigned to more than one virtual server, and a virtual
-server can have more than one web module assigned to it. If you deploy a
-web application and don't specify any assigned virtual servers, the web
-application is assigned to all currently defined virtual servers. If you
-then create additional virtual servers and want to assign existing web
-applications to them, you must redeploy the web applications. For more
-information about deployment, see the link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open
-Source Edition Application Deployment Guide].
-
-You can define virtual server properties using the `asadmin set`
-command. For example:
-
-[source,oac_no_warn]
-----
-asadmin> set server-config.http-service.virtual-server.MyVS.property.sso-enabled="true"
-----
-
-Some virtual server properties can be set for a specific web
-application. For details, see "link:../application-deployment-guide/dd-elements.html#GSDPG00161[glassfish-web-app]" in
-GlassFish Server Open Source Edition Application Deployment Guide.
-
-The following topics are addressed here:
-
-* link:#ggnfr[To Create a Virtual Server]
-* link:#ggndw[To List Virtual Servers]
-* link:#giwkp[To Update a Virtual Server]
-* link:#ggnen[To Delete a Virtual Server]
-* link:#beaga[To Assign a Default Web Module to a Virtual Server]
-* link:#gixku[To Assign a Virtual Server to an Application or Module]
-* link:#glavy[To Set `JSESSIONIDSSO` Cookie Attributes]
-
-[[ggnfr]][[GSADG00472]][[to-create-a-virtual-server]]
-
-To Create a Virtual Server
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-By default, when GlassFish Server starts, the following virtual servers
-are started automatically:
-
-* A virtual server named `server`, which hosts all user-defined web
-modules. +
-For development, testing, and deployment of web services in a
-non-production environment, `server` is often the only virtual server
-required.
-* A virtual server named `__asadmin`, which hosts all
-administration-related web modules (specifically, the Administration
-Console). This server is restricted, which means that you cannot deploy
-web modules to this virtual server.
-
-In a production environment, additional virtual servers provide hosting
-facilities for users and customers so that each appears to have its own
-web server, even though there is only one physical server.
-
-Use the `create-virtual-server` subcommand in remote mode to create the
-named virtual server.
-
-[[GSADG1006]]
-
-Before You Begin
-
-A virtual server must specify an existing HTTP listener. Because the
-virtual server cannot specify an HTTP listener that is already being
-used by another virtual server, create at least one HTTP listener before
-creating a new virtual server.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Create a virtual server by using the
-link:../reference-manual/create-virtual-server.html#GSRFM00062[`create-virtual-server`] subcommand. +
-Information about properties for this subcommand is included in this
-help page.
-3.  To apply your changes, restart GlassFish Server. +
-See link:domains.html#ginqj[To Restart a Domain].
-
-[[GSADG00260]][[ggpha]]
-
-
-Example 13-16 Creating a Virtual Server
-
-This example creates a virtual server named `sampleServer` on
-`localhost`.
-
-[source,oac_no_warn]
-----
-asadmin> create-virtual-server sampleServer
-Command create-virtual-server executed successfully.
-----
-
-[[GSADG1007]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-virutal-server` at the command line.
-
-[[ggndw]][[GSADG00473]][[to-list-virtual-servers]]
-
-To List Virtual Servers
-^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `list-virtual-servers` subcommand in remote mode to list the
-existing virtual servers.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List virtual servers by using the
-link:../reference-manual/list-virtual-servers.html#GSRFM00207[`list-virtual-servers`] subcommand.
-
-[[GSADG00261]][[ggpgr]]
-
-
-Example 13-17 Listing Virtual Servers
-
-This example lists the virtual servers for `localhost`.
-
-[source,oac_no_warn]
-----
-asadmin> list-virtual-servers
-sampleListener
-admin-listener
-http-listener-2
-http-listener-1
-Command list-http-listeners executed successfully.
-----
-
-[[GSADG1008]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-virutal-servers` at the command line.
-
-[[giwkp]][[GSADG00474]][[to-update-a-virtual-server]]
-
-To Update a Virtual Server
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-1.  List virtual servers by using the
-link:../reference-manual/list-virtual-servers.html#GSRFM00207[`list-virtual-servers`] subcommand.
-2.  Modify the values for the specified virtual server by using the
-link:../reference-manual/set.html#GSRFM00226[`set`] subcommand. +
-The virtual server is identified by its dotted name.
-
-[[ggnen]][[GSADG00475]][[to-delete-a-virtual-server]]
-
-To Delete a Virtual Server
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `delete-virtual-server` subcommand in remote mode to delete an
-existing virtual server.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List virtual servers by using the
-link:../reference-manual/list-virtual-servers.html#GSRFM00207[`list-virtual-servers`] subcommand.
-3.  If necessary, notify users that the virtual server is being deleted.
-4.  Delete a virtual server by using the
-link:../reference-manual/delete-virtual-server.html#GSRFM00113[`delete-virtual-server`] subcommand.
-5.  To apply your changes, restart GlassFish Server. +
-See link:domains.html#ginqj[To Restart a Domain].
-
-[[GSADG00262]][[ggpmd]]
-
-
-Example 13-18 Deleting a Virtual Server
-
-This example deletes the virtual server named `sampleServer` from
-`localhost`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-virtual-server sampleServer
-Command delete-virtual-server executed successfully.
-----
-
-[[GSADG1009]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-virutal-server` at the command line.
-
-[[beaga]][[GSADG00772]][[to-assign-a-default-web-module-to-a-virtual-server]]
-
-To Assign a Default Web Module to a Virtual Server
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A default web module can be assigned to the default virtual server and
-to each new virtual server. To access the default web module for a
-virtual server, point the browser to the URL for the virtual server, but
-do not supply a context root. For example:
-
-[source,oac_no_warn]
-----
-http://myvserver:3184/
-----
-
-A virtual server with no default web module assigned serves HTML or
-JavaServer Pages ( JSP) content from its document root, which is usually
-domain-dir`/docroot`. To access this HTML or JSP content, point your
-browser to the URL for the virtual server, do not supply a context root,
-but specify the target file.
-
-For example:
-
-[source,oac_no_warn]
-----
-http://myvserver:3184/hellothere.jsp
-----
-
-[[gixku]][[GSADG00476]][[to-assign-a-virtual-server-to-an-application-or-module]]
-
-To Assign a Virtual Server to an Application or Module
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can assign a virtual server to a deployed application or web module.
-
-[[GSADG1010]]
-
-Before You Begin
-
-The application or module must already be deployed. For more
-information, see the link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition
-Application Deployment Guide].
-
-1.  In the Administration Console, open the HTTP Service component under
-the relevant configuration.
-2.  Open the Virtual Servers component under the HTTP Service component.
-3.  Select the virtual server to which you want to assign a default web
-module.
-4.  Select the application or web module from the Default Web Module
-drop-down list. +
-For more information, see link:#beaga[To Assign a Default Web Module to
-a Virtual Server].
-
-[[glavy]][[GSADG00477]][[to-set-jsessionidsso-cookie-attributes]]
-
-To Set `JSESSIONIDSSO` Cookie Attributes
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `sso-cookie-http-only` and `sso-cookie-secure` virtual server
-attributes to set the `HttpOnly` and `Secure` attributes of any
-`JSESSIONIDSSO` cookies associated with web applications deployed to the
-virtual server.
-
-Use the link:../reference-manual/set.html#GSRFM00226[`set`] subcommand to set the value of the
-`sso-cookie-http-only` and `sso-cookie-secure` virtual server
-attributes.
-
-The values supported for these attributes are as follows:
-
-`sso-cookie-http-only`::
-  A boolean value that specifies whether the `HttpOnly` attribute is
-  included in `JSESSIONIDSSO` cookies. When set to `true`, which is the
-  default, the `HttpOnly` attribute is included. When set to `false`,
-  the `HttpOnly` attribute is not included.
-`sso-cookie-secure`::
-  A string value that specifies whether the `Secure` attribute is
-  included in `JSESSIONIDSSO` cookies. Allowed values are as follows: +
-  * `true` — The `Secure` attribute is included.
-  * `false` — The `Secure` attribute is not included.
-  * `dynamic` — The `Secure` attribute setting is inherited from the
-  first session participating in SSO. This is the default value.
-
-
diff --git a/docs/administration-guide/src/main/jbake/content/javamail.adoc b/docs/administration-guide/src/main/jbake/content/javamail.adoc
deleted file mode 100644
index b1f823a..0000000
--- a/docs/administration-guide/src/main/jbake/content/javamail.adoc
+++ /dev/null
@@ -1,240 +0,0 @@
-type=page
-status=published
-title=Administering the JavaMail Service
-next=jms.html
-prev=orb.html
-~~~~~~
-Administering the JavaMail Service
-==================================
-
-[[GSADG00019]][[ablkr]]
-
-
-[[administering-the-javamail-service]]
-16 Administering the JavaMail Service
--------------------------------------
-
-GlassFish Server includes the JavaMail API along with JavaMail service
-providers that allow an application component to send email
-notifications over the Internet and to read email from IMAP and POP3
-mail servers.
-
-The following topics are addressed here:
-
-* link:#ggjsf[About JavaMail]
-* link:#giowr[Administering JavaMail Resources]
-
-Instructions for accomplishing the tasks in this chapter by using the
-Administration Console are contained in the Administration Console
-online help.
-
-[[ggjsf]][[GSADG00593]][[about-javamail]]
-
-About JavaMail
-~~~~~~~~~~~~~~
-
-The JavaMail API is a set of abstract APIs that model a mail system. The
-JavaMail API provides a platform-independent and protocol-independent
-framework to build mail and messaging applications and provide
-facilities for reading and sending electronic messages. Service
-providers implement particular protocols. Using the API you can add
-email capabilities to your applications. JavaMail provides access from
-Java applications to Internet Message Access Protocol (IMAP) and Simple
-Mail Transfer Protocol (SMTP) capable mail servers on your network or
-the Internet. The API does not provide mail server functionality; you
-must have access to a mail server to use JavaMail.
-
-The JavaMail API is implemented as an optional package in the Java
-platform and is also available as part of the Java EE platform.
-
-To learn more about the JavaMail API, consult the
-http://www.oracle.com/technetwork/java/javamail/[JavaMail web site] .
-
-[[giowr]][[GSADG00594]][[administering-javamail-resources]]
-
-Administering JavaMail Resources
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-When you create a mail session, the server-side components and
-applications are enabled to access JavaMail services with JNDI, using
-the session properties you assign for them. When creating a mail
-session, you can designate the mail hosts, the transport and store
-protocols, and the default mail user so that components that use
-JavaMail do not have to set these properties. Applications that are
-heavy email users benefit because GlassFish Server creates a single
-session object and makes the session available to any component that
-needs it.
-
-JavaMail settings such as the following can be specified:
-
-* JNDI Name. The unique name for the mail session. Use the naming
-sub-context prefix mail/ for JavaMail resources. For example:
-`mail/MySession`
-* Mail Host. The host name of the default mail server. The connect
-methods of the store and transport objects use this value if a
-protocol-specific host property is not supplied. The name must be
-resolvable to an actual host name.
-* Default User. The default user name to provide when connecting to a
-mail server. The connect methods of the store and transport objects use
-this value if a protocol-specific username property is not supplied.
-* Default Return Address. The email address of the default user, in the
-form: username@host.domain.
-* Description. A descriptive statement for the component.
-* Session. Indicates whether or not mail session is enabled or disabled
-at this time
-
-The following topics are addressed here:
-
-* link:#giowd[To Create a JavaMail Resource]
-* link:#giowq[To List JavaMail Resources]
-* link:#giwjw[To Update a JavaMail Resource]
-* link:#gioxj[To Delete a JavaMail Resource]
-
-[[giowd]][[GSADG00482]][[to-create-a-javamail-resource]]
-
-To Create a JavaMail Resource
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `create-javamail-resource` subcommand in remote mode to create a
-JavaMail session resource. The JNDI name for a JavaMail session resource
-customarily includes the mail/ naming subcontext, For example:
-`mail/MyMailSession.`
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Create a JavaMail resource by using the
-link:../reference-manual/create-javamail-resource.html#GSRFM00035[`create-javamail-resource`] subcommand. +
-Information about the properties for the subcommand is included in this
-help page.
-3.  To apply your changes, restart GlassFish Server. +
-See link:domains.html#ginqj[To Restart a Domain].
-
-[[GSADG00267]][[gipfs]]
-
-
-Example 16-1 Creating a JavaMail Resource
-
-This example creates a JavaMail resource named `mail/MyMailSession`. The
-escape character (\) is used in the `--fromaddress` option to
-distinguish the dot (.) and at sign (@).
-
-[source,oac_no_warn]
-----
-asadmin> create-javamail-resource --mailhost localhost 
---mailuser sample --fromaddress sample\@sun\.com mail/MyMailSession 
-Command create-javamail-resource executed successfully.
-----
-
-[[GSADG1014]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-javamail-resource` at the command line.
-
-[[giowq]][[GSADG00483]][[to-list-javamail-resources]]
-
-To List JavaMail Resources
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `list-javamail-resources` subcommand in remote mode to list the
-existing JavaMail session resources.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the JavaMail resources by using the
-link:../reference-manual/list-javamail-resources.html#GSRFM00172[`list-javamail-resources`] subcommand.
-
-[[GSADG00268]][[gipfe]]
-
-
-Example 16-2 Listing JavaMail Resources
-
-This example lists the JavaMail resources on `localhost`.
-
-[source,oac_no_warn]
-----
-asadmin> list-javamail-resources 
-mail/MyMailSession
-Command list-javamail-resources executed successfuly.
-----
-
-[[GSADG1015]]
-
-See Also
-
-You can also view the full syntax and options of the subcommands by
-typing `asadmin help list-javamail-resources` at the command line.
-
-[[giwjw]][[GSADG00484]][[to-update-a-javamail-resource]]
-
-To Update a JavaMail Resource
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-1.  List the JavaMail resources by using the
-link:../reference-manual/list-javamail-resources.html#GSRFM00172[`list-javamail-resources`] subcommand.
-2.  Modify the values for the specified JavaMail source by using the
-link:../reference-manual/set.html#GSRFM00226[`set`] subcommand. +
-The resource is identified by its dotted name.
-
-[[GSADG00269]][[giwjb]]
-
-
-Example 16-3 Updating a JavaMail Resource
-
-This example changes `joeserver` to `joe`.
-
-[source,oac_no_warn]
-----
-asadmin> set server.resources.mail-resource.mail/
-MyMailSession.user=joeserver.resources.mail-resource.mail/
-MyMailSession.user=joe
-Command set executed successfully.
-----
-
-[[gioxj]][[GSADG00485]][[to-delete-a-javamail-resource]]
-
-To Delete a JavaMail Resource
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `delete-javamail-resource` subcommands in remote mode to delete
-a JavaMail session resource.
-
-[[GSADG1016]]
-
-Before You Begin
-
-References to the specified resource must be removed before running the
-`delete-javamail-resource` subcommands.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the JavaMail resources by using the
-link:../reference-manual/list-javamail-resources.html#GSRFM00172[`list-javamail-resources`] subcommands.
-3.  Delete a JavaMail resource by using the
-link:../reference-manual/delete-javamail-resource.html#GSRFM00087[`delete-javamail-resource`] subcommands.
-4.  To apply your changes, restart GlassFish Server. +
-See link:domains.html#ginqj[To Restart a Domain].
-
-[[GSADG00270]][[gipcd]]
-
-
-Example 16-4 Deleting a JavaMail Resource
-
-This example deletes the JavaMail session resource named
-`mail/MyMailSession`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-javamail-resource mail/MyMailSession 
-Command delete-javamail-resource executed successfully.
-----
-
-[[GSADG1017]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-javamail-resource` at the command line.
-
-
diff --git a/docs/administration-guide/src/main/jbake/content/jdbc.adoc b/docs/administration-guide/src/main/jbake/content/jdbc.adoc
deleted file mode 100644
index f1d9887..0000000
--- a/docs/administration-guide/src/main/jbake/content/jdbc.adoc
+++ /dev/null
@@ -1,1745 +0,0 @@
-type=page
-status=published
-title=Administering Database Connectivity
-next=connectors.html
-prev=part-res-and-svcs-admin.html
-~~~~~~
-Administering Database Connectivity
-===================================
-
-[[GSADG00015]][[ablih]]
-
-
-[[administering-database-connectivity]]
-11 Administering Database Connectivity
---------------------------------------
-
-This chapter provides procedures for performing database connectivity
-tasks in the GlassFish Server Open Source Edition 5.0 environment by
-using the `asadmin` command-line utility.
-
-The following topics are addressed here:
-
-* link:#gipbp[About Database Connectivity]
-* link:#ggkon[Setting Up the Database]
-* link:#ggndx[Configuring Access to the Database]
-* link:#beamw[Configuration Specifics for JDBC Drivers]
-
-Instructions for accomplishing these tasks by using the Administration
-Console are contained in the Administration Console online help.
-
-[[gipbp]][[GSADG00576]][[about-database-connectivity]]
-
-About Database Connectivity
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-A database management system (DBMS) provides facilities for storing,
-organizing, and retrieving data. The information in databases is often
-described as persistent data because it is saved on disk and exists
-after the application process ends. Most business applications store
-data in relational databases. Applications can access database
-information by using the Java Database Connectivity (JDBC) API.
-
-The key elements of database connectivity are the following:
-
-* Database. The repository where data is stored for an enterprise. Java
-EE applications access relational databases through the JDBC API. For
-administration procedures, see link:#ggkon[Setting Up the Database].
-* JDBC Connection Pool. A JDBC connection pool is a group of reusable
-connections for a particular database. For administration procedures,
-see link:#gharo[Administering JDBC Connection Pools].
-* JDBC Resource. A JDBC resource (data source) provides applications
-with a means of connecting to a database. To create a JDBC resource,
-specify the connection pool with which it is associated. Multiple JDBC
-resources can specify a single connection pool. A JDBC resource is
-identified by its Java Naming and Directory Interface (JNDI) name. For
-administration procedures, see link:#ggndp[Administering JDBC
-Resources].
-* JDBC Driver. A database driver is a software component that enables a
-Java application to interact with a database connectivity API . Each
-database requires its own driver. For administration procedures, see
-link:#ghatb[Integrating the JDBC Driver].
-
-At runtime, the following sequence occurs when an application connects
-to a database:
-
-1.  The application gets the JDBC resource associated with the database
-by making a call through the JNDI API. +
-Using the JNDI name of the resource, the naming and directory service
-locates the JDBC resource. Each JDBC resource specifies a connection
-pool.
-2.  Using the JDBC resource, the application gets a database connection. +
-GlassFish Server retrieves a physical connection from the connection
-pool that corresponds to the database. The pool defines connection
-attributes such as the database name (URL), user name, and password.
-3.  After the database connection is established, the application can
-read, modify, and add data to the database. +
-The application accesses the database by making calls to the JDBC API.
-The JDBC driver translates the application's JDBC calls into the
-protocol of the database server.
-4.  When the application is finished accessing the database, the
-application closes the connection and returns the connection to the
-connection pool.
-
-[[ggkon]][[GSADG00577]][[setting-up-the-database]]
-
-Setting Up the Database
-~~~~~~~~~~~~~~~~~~~~~~~
-
-Most applications use relational databases to store, organize, and
-retrieve data. Applications access relational databases through the Java
-Database Connectivity (JDBC) API.
-
-The following topics are addressed here:
-
-* link:#gharl[To Install the Database and Database Driver]
-* link:#ggndz[To Start the Database]
-* link:#ggnbw[To Stop the Database]
-* link:#ghmbq[Apache Derby Database Utility Scripts]
-
-[[gharl]][[GSADG00416]][[to-install-the-database-and-database-driver]]
-
-To Install the Database and Database Driver
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-1.  Install a supported database product. +
-To see the current list of database products supported by GlassFish
-Server, refer to the link:../release-notes/toc.html#GSRLN[GlassFish Server Open Source Edition
-Release Notes].
-2.  Install a supported JDBC driver for the database product. +
-For a list of drivers supported by GlassFish Server, see
-link:#beamw[Configuration Specifics for JDBC Drivers].
-3.  Make the JDBC driver JAR file accessible to the domain
-administration server (DAS). +
-See link:#ghatb[Integrating the JDBC Driver].
-4.  Create the database. +
-The application provider usually delivers scripts for creating and
-populating the database.
-
-[[GSADG949]]
-
-Next Steps
-
-You are now ready to create a connection pool for the database, and a
-JDBC resource that points to the connection pool. See link:#ggnfv[To
-Create a JDBC Connection Pool] and link:#ggnda[To Create a JDBC
-Resource]. The final step is to integrate the JDBC driver into an
-administrative domain as described in link:#ghatb[Integrating the JDBC
-Driver].
-
-[[ggndz]][[GSADG00417]][[to-start-the-database]]
-
-To Start the Database
-^^^^^^^^^^^^^^^^^^^^^
-
-GlassFish Server includes an implementation of the Apache Derby
-database, however, you can use any JDBC-compliant database. The database
-is not started automatically when you start GlassFish Server, so if you
-have applications that require a database, you need to start Apache
-Derby database manually by using the local `start-database` subcommand.
-
-Start the database by using the link:../reference-manual/start-database.html#GSRFM00234[`start-database`]
-subcommand.
-
-When the database server starts, or a client connects to it
-successfully, the following files are created at the location that is
-specified by the `--dbhome` option:
-
-* The `derby.log` file contains the database server process log along
-with its standard output and standard error information.
-* The database files contain your schema (for example, database tables).
-
-[[GSADG00212]][[ggooc]]
-
-
-Example 11-1 Starting a Database
-
-This example starts the Apache Derby database on the host host1 and port
-5001.
-
-[source,oac_no_warn]
-----
-asadmin> start-database --dbhost host1 --dbport 5001 --terse=true
-Starting database in the background. 
-Log redirected to /opt/SUNWappserver/databases/javadb.log.
-Command start-database executed successfully.
-----
-
-[[GSADG950]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help start-database` at the command line.
-
-[[ggnbw]][[GSADG00418]][[to-stop-the-database]]
-
-To Stop the Database
-^^^^^^^^^^^^^^^^^^^^
-
-Use the local `stop-database` subcommand to stop the Apache Derby
-database on a specified port. A single host can have multiple database
-server processes running on different ports.
-
-1.  If necessary, notify users that the database is being stopped.
-2.  Stop the database by using the link:../reference-manual/stop-database.html#GSRFM00239[`stop-database`]
-subcommand.
-
-[[GSADG00213]][[ggorc]]
-
-
-Example 11-2 Stopping a Database
-
-This example stops the Apache Derby database on port 5001 of
-`localhost`.
-
-[source,oac_no_warn]
-----
-asadmin> stop-database --dbhost=localhost --dbport=5001
-onnection obtained for host: localhost, port number 5001.
-Apache Derby Network Server - 10.2.2.1 - (538595) shutdown 
-at 2008-10-17 23:34:2 7.218 GMT
-Command stop-database executed successfully.
-----
-
-[[GSADG951]]
-
-Troubleshooting
-
-For a laptop that roams between networks, you might have trouble
-shutting down the database. If you start the Apache Derby database and
-then change your IP address, you will not be able to stop the Apache
-Derby database unless you add a specific `--dbhost` argument. For
-example, if you run `asadmin start-database` `dbhost` `= 0.0.0.0`, and
-then disconnect Ethernet and switch to wifi, you should run a command
-similar to the following to stop the database:
-
-`asadmin stop-database` `dbhost` `localhost`
-
-[[GSADG952]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help stop-database` at the command line.
-
-[[ghmbq]][[GSADG00744]][[apache-derby-database-utility-scripts]]
-
-Apache Derby Database Utility Scripts
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The Apache Derby database configuration that is available for use with
-GlassFish Server includes scripts that can help you use the Apache Derby
-database. The following scripts are available in the
-as-install`/javadb/bin` directory:
-
-`startNetworkServer,startNetworkServer.bat`::
-  Script to start the network server
-`stopNetworkServer,stopNetworkServer.bat`::
-  Script to stop the network server
-`ij,ij.bat`::
-  Interactive JDBC scripting tool
-`dblook,dblook.bat`::
-  Script to view all or part of the DDL for a database
-`sysinfo, sysinfo.bat`::
-  Script to display versioning information about the Apache Derby
-  database environment
-`NetworkServerControl,NetworkServerControl.bat`::
-  Script to execute commands on the `NetworkServerControl` API
-
-[[ghmbj]][[GSADG00419]][[to-configure-your-environment-to-run-the-apache-derby-database-utility-scripts]]
-
-To Configure Your Environment to Run the Apache Derby Database Utility Scripts
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-1.  Ensure that the `JAVA_HOME` environment variable specifies the
-directory where the JDK is installed.
-2.  Set the `JAVADB_HOME` environment variable to point to the
-as-install`/javadb` directory.
-
-[[GSADG953]]
-
-See Also
-
-For more information about these utilities, see the following
-documentation:
-
-* http://db.apache.org/derby/docs/10.13/tools/[Apache Derby Tools and
-Utilities Guide]
-* http://db.apache.org/derby/docs/10.13/adminguide/[Derby Server and
-Administration Guide]
-
-[[ggndx]][[GSADG00578]][[configuring-access-to-the-database]]
-
-Configuring Access to the Database
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-After establishing the database, you are ready to set up access for
-GlassFish Server applications. The high-level steps include creating a
-JDBC connection pool, creating a JDBC resource for the connection pool,
-and integrating a JDBC driver into an administrative domain.
-
-Instructions for performing these steps are contained in the following
-sections:
-
-* link:#gharo[Administering JDBC Connection Pools]
-* link:#ggndp[Administering JDBC Resources]
-* link:#gkudf[Enabling the `jdbc/__default` Resource in a Clustered
-Environment]
-* link:#ghatb[Integrating the JDBC Driver]
-
-[[gharo]][[GSADG00745]][[administering-jdbc-connection-pools]]
-
-Administering JDBC Connection Pools
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A JDBC connection pool is a group of reusable connections for a
-particular database. Because creating each new physical connection is
-time consuming, GlassFish Server maintains a pool of available
-connections. When an application requests a connection, it obtains one
-from the pool. When an application closes a connection, the connection
-is returned to the pool. JDBC connection pools can be globally
-accessible or be scoped to an enterprise application, web module, EJB
-module, connector module or application client module, as described in
-"link:../application-deployment-guide/deploying-applications.html#GSDPG00075[Application-Scoped Resources]" in GlassFish Server
-Open Source Edition Application Deployment Guide.
-
-A JDBC resource is created by specifying the connection pool with which
-the resource is associated. Multiple JDBC resources can specify a single
-connection pool. The properties of connection pools can vary with
-different database vendors. Some common properties are the database name
-(URL), the user name, and the password.
-
-The following tasks and information are used to administer JDBC
-connection pools:
-
-* link:#ggnfv[To Create a JDBC Connection Pool]
-* link:#ggnby[To List JDBC Connection Pools]
-* link:#ggnwn[To Contact (Ping) a Connection Pool]
-* link:#gjiqp[To Reset (Flush) a Connection Pool]
-* link:#giosk[To Update a JDBC Connection Pool]
-* link:#ggngb[To Delete a JDBC Connection Pool]
-* link:#gktdi[Configuring Specific JDBC Connection Pool Features]
-
-[[ggnfv]][[GSADG00420]][[to-create-a-jdbc-connection-pool]]
-
-To Create a JDBC Connection Pool
-++++++++++++++++++++++++++++++++
-
-Use the `create-jdbc-connection-pool` subcommand in remote mode to
-register a new JDBC connection pool with the specified JDBC connection
-pool name. A JDBC connection pool or a connector connection pool can be
-created with authentication. You can either use a subcommand option to
-specify user, password, or other connection information using the
-`asadmin` utility, or specify the connection information in the XML
-descriptor file.
-
-One connection pool is needed for each database, possibly more depending
-on the application. When you are building the connection pool, certain
-data specific to the JDBC driver and the database vendor is required.
-You can find some of the following specifics in
-link:#beamw[Configuration Specifics for JDBC Drivers]:
-
-* Database vendor name
-* Resource type, such as `javax.sql.DataSource` (local transactions
-only) `javax.sql.XADataSource` (global transactions)
-* Data source class name
-* Required properties, such as the database name (URL), user name, and
-password
-
-Creating a JDBC connection pool is a dynamic event and does not require
-server restart. However, there are some parameters that do require
-server restart. See link:overview.html#ghciy[Configuration Changes That
-Require Restart].
-
-[[GSADG954]]
-
-Before You Begin
-
-Before creating the connection pool, you must first install and
-integrate the database and its associated JDBC driver. For instructions,
-see link:#ggkon[Setting Up the Database].
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Create the JDBC connection pool by using the
-link:../reference-manual/create-jdbc-connection-pool.html#GSRFM00036[`create-jdbc-connection-pool`] subcommand.
-3.  If needed, restart the server. +
-Some parameters require server restart. See
-link:overview.html#ghciy[Configuration Changes That Require Restart].
-
-[[GSADG00214]][[ggrgh]]
-
-
-Example 11-3 Creating a JDBC Connection Pool
-
-This example creates a JDBC connection pool named `sample_derby_pool` on
-`localhost`.
-
-[source,oac_no_warn]
-----
-asadmin> create-jdbc-connection-pool 
---datasourceclassname org.apache.derby.jdbc.ClientDataSource 
---restype javax.sql.XADataSource 
---property portNumber=1527:password=APP:user=APP:serverName=
-localhost:databaseName=sun-appserv-samples:connectionAttribut
-es=\;create\\=true sample_derby_pool
-Command create-jdbc-connection-pool executed successfully.
-----
-
-[[GSADG955]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-jdbc-connection-pool` at the command line.
-
-[[ggnby]][[GSADG00421]][[to-list-jdbc-connection-pools]]
-
-To List JDBC Connection Pools
-+++++++++++++++++++++++++++++
-
-Use the `list-jdbc-connection-pools` subcommand in remote mode to list
-all existing JDBC connection pools.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the JDBC connection pools by using the
-link:../reference-manual/list-jdbc-connection-pools.html#GSRFM00173[`list-jdbc-connection-pools`] subcommand.
-
-[[GSADG00215]][[ggpcf]]
-
-
-Example 11-4 Listing JDBC Connection Pools
-
-This example lists the JDBC connection pools that are on `localhost`.
-
-[source,oac_no_warn]
-----
-asadmin> list-jdbc-connection-pools
-sample_derby_pool2
-poolA
-__TimerPool
-DerbyPool
-sample_derby_pool
-Command list-jdbc-connection-pools executed successfully.
-----
-
-[[GSADG956]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-jdbc-connection-pools` at the command line.
-
-[[ggnwn]][[GSADG00422]][[to-contact-ping-a-connection-pool]]
-
-To Contact (Ping) a Connection Pool
-+++++++++++++++++++++++++++++++++++
-
-Use the `ping-connection-pool` subcommand in remote mode to test if a
-connection pool is usable. For example, if you create a new JDBC
-connection pool for an application that is expected to be deployed
-later, you can test the JDBC pool with this subcommand before the
-application is deployed. Running a ping will force the creation of the
-pool if it hasn't already been created.
-
-[[GSADG957]]
-
-Before You Begin
-
-Before you can contact a connection pool, the connection pool must be
-created with authentication, and the server or database must be running.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Ping a connection pool by using the
-link:../reference-manual/ping-connection-pool.html#GSRFM00214[`ping-connection-pool`] subcommand.
-
-[[GSADG00216]][[ggpcs]]
-
-
-Example 11-5 Contacting a Connection Pool
-
-This example tests to see if the `DerbyPool` connection pool is usable.
-
-[source,oac_no_warn]
-----
-asadmin> ping-connection-pool DerbyPool
-Command ping-connection-pool executed successfully
-----
-
-[[GSADG958]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help ping-connection-pool` at the command line.
-
-You can also specify that a JDBC connection pool is automatically tested
-when created or reconfigured by setting its `--ping` option to `true`
-(the default is `false`). See link:#ggnfv[To Create a JDBC Connection
-Pool] or link:#giosk[To Update a JDBC Connection Pool].
-
-[[gjiqp]][[GSADG00423]][[to-reset-flush-a-connection-pool]]
-
-To Reset (Flush) a Connection Pool
-++++++++++++++++++++++++++++++++++
-
-Use the `flush-connection-pool` in remote mode to reinitialize all
-connections established in the specified connection pool without the
-need for reconfiguring the pool. Connection pool reconfiguration can
-result in application redeployment, which is a time-consuming operation.
-The JDBC connection pool or connector connection pool is reset to its
-initial state. Any existing live connections are destroyed, which means
-that the transactions associated with these connections are lost and
-must be retried. The subcommand then recreates the initial connections
-for the pool, and restores the pool to its steady pool size.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Reset a connection pool by using
-theolink:GSRFM00135[`flush-connection-pool`] subcommand.
-
-[[GSADG00217]][[gjirk]]
-
-
-Example 11-6 Resetting (Flushing) a Connection Pool
-
-This example resets the JDBC connection pool named `__TimerPool` to its
-steady pool size.
-
-[source,oac_no_warn]
-----
-asadmin> flush-connection-pool __TimerPool 
-Command flush-connection-pool executed successfully.
-----
-
-[[GSADG959]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help flush-connection-pool` at the command line.
-
-[[giosk]][[GSADG00424]][[to-update-a-jdbc-connection-pool]]
-
-To Update a JDBC Connection Pool
-++++++++++++++++++++++++++++++++
-
-You can change all of the settings for an existing pool except its name.
-Use the `get` and `set` subcommands to view and change the values of the
-JDBC connection pool properties.
-
-1.  List the JDBC connection pools by using the
-link:../reference-manual/list-jdbc-connection-pools.html#GSRFM00173[`list-jdbc-connection-pools`] subcommand.
-2.  View the attributes of the JDBC connection pool by using the get
-subcommand. +
-For example: +
-[source,oac_no_warn]
-----
-asadmin get resources.jdbc-connection-pool.DerbyPool.property
-----
-3.  Set the attribute of the JDBC connection pool by using the set
-subcommand. +
-For example: +
-[source,oac_no_warn]
-----
-asadmin set resources.jdbc-connection-pool.DerbyPool.steady-pool-size=9
-----
-4.  If needed, restart the server. +
-Some parameters require server restart. See
-link:overview.html#ghciy[Configuration Changes That Require Restart].
-
-[[GSADG960]]
-
-See Also
-
-For information about how to tune a connection pool, see the
-link:../performance-tuning-guide/toc.html#GSPTG[GlassFish Server Open Source Edition Performance Tuning
-Guide].
-
-[[ggngb]][[GSADG00425]][[to-delete-a-jdbc-connection-pool]]
-
-To Delete a JDBC Connection Pool
-++++++++++++++++++++++++++++++++
-
-Use the `delete-jdbc-connection-pool` subcommand in remote mode to
-delete an existing JDBC connection pool. Deleting a JDBC connection pool
-is a dynamic event and does not require server restart.
-
-[[GSADG961]]
-
-Before You Begin
-
-Before deleting a JDBC connection pool, all associations to the resource
-must be removed.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the JDBC connection pools by using the
-link:../reference-manual/list-jdbc-connection-pools.html#GSRFM00173[`list-jdbc-connection-pools`] subcommand.
-3.  If necessary, notify users that the JDBC connection pool is being
-deleted.
-4.  Delete the connection pool by using the
-link:../reference-manual/delete-jdbc-connection-pool.html#GSRFM00088[`delete-jdbc-connection-pool`] subcommand.
-
-[[GSADG00218]][[ggpis]]
-
-
-Example 11-7 Deleting a JDBC Connection Pool
-
-This example deletes the JDBC connection pool named `DerbyPool`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-jdbc-connection-pool jdbc/DerbyPool
-Command delete-jdbc-connection-pool executed successfully.
-----
-
-[[GSADG962]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-jdbc-connection-pool` at the command line.
-
-[[gktdi]][[GSADG00670]][[configuring-specific-jdbc-connection-pool-features]]
-
-Configuring Specific JDBC Connection Pool Features
-++++++++++++++++++++++++++++++++++++++++++++++++++
-
-In GlassFish Server, JDBC Connection Pools support a variety of features
-to simplify administration, monitoring and performance tuning. The
-following topics address several of these features:
-
-* link:#gktcv[Transparent Pool Reconfiguration]
-* link:#gkter[Using an Initialization Statement]
-* link:#gktcc[Setting a Statement Timeout]
-* link:#gktec[Statement Leak Detection and Leaked Statement Reclamation]
-* link:#gktej[Statement Caching]
-* link:#gktbu[Statement Tracing]
-
-[[gktcv]][[GSADG00085]][[transparent-pool-reconfiguration]]
-
-Transparent Pool Reconfiguration
-
-When the properties or attributes of a JDBC connection pool are changed,
-the connection pool is destroyed and re-created. Normally, applications
-using the connection pool must be redeployed as a consequence. This
-restriction can be avoided by enabling transparent JDBC connection pool
-reconfiguration. When this feature is enabled, applications do not need
-to be redeployed. Instead, requests for new connections are blocked
-until the reconfiguration operation completes. Connection requests from
-any in-flight transactions are served using the old pool configuration
-so as to complete the transaction. Then, connections are created using
-the pool's new configuration, and any blocked connection requests are
-served with connections from the re-created pool.
-
-To enable transparent JDBC connection pool reconfiguration, set the
-`dynamic-reconfiguration-wait-timeout-in-seconds` property of the JDBC
-connection pool to a positive, nonzero value in one of the following
-ways:
-
-* Add it as a property in the Edit JDBC Connection Pool Properties page
-in the Administration Console. For more information, click the Help
-button in the Administration Console.
-* Specify it using the `--property` option in the
-`create-jdbc-connection-pool` subcommand. For more information, see
-link:../reference-manual/create-jdbc-connection-pool.html#GSRFM00036[`create-jdbc-connection-pool`(1)].
-* Set it using the `set` subcommand. For example: +
-[source,oac_no_warn]
-----
-asadmin set resources.jdbc-connection-pool.pool-name.property.dynamic-reconfiguration-wait-timeout-in-seconds=15
-----
-
-This property specifies the time in seconds to wait for in-use
-connections to close and in-flight transactions to complete. Any
-connections in use or transaction in flight past this time must be
-retried.
-
-[[gkter]][[GSADG00086]][[using-an-initialization-statement]]
-
-Using an Initialization Statement
-
-You can specify a statement that executes each time a physical
-connection to the database is created (not reused) from a JDBC
-connection pool. This is useful for setting request or session specific
-properties and is suited for homogeneous requests in a single
-application. Set the Init SQL attribute of the JDBC connection pool to
-the SQL string to be executed in one of the following ways:
-
-* Enter an Init SQL value in the Edit Connection Pool Advanced
-Attributes page in the Administration Console. For more information,
-click the Help button in the Administration Console.
-* Specify the `--initsql` option in the
-`asadmin create-jdbc-connection-pool` command. For more information, see
-link:../reference-manual/create-jdbc-connection-pool.html#GSRFM00036[`create-jdbc-connection-pool`(1)].
-* Specify the `init-sql` option in the `asadmin set` command. For
-example: +
-[source,oac_no_warn]
-----
-asadmin set domain1.resources.jdbc-connection-pool.DerbyPool.init-sql="sql-string"
-----
-
-[[gktcc]][[GSADG00087]][[setting-a-statement-timeout]]
-
-Setting a Statement Timeout
-
-An abnormally long running JDBC query executed by an application may
-leave it in a hanging state unless a timeout is explicitly set on the
-statement. Setting a statement timeout guarantees that all queries
-automatically time out if not completed within the specified period.
-When statements are created, the `queryTimeout` is set according to the
-statement timeout setting. This works only when the underlying JDBC
-driver supports `queryTimeout` for `Statement`, `PreparedStatement`,
-`CallableStatement`, and `ResultSet`.
-
-You can specify a statement timeout in the following ways:
-
-* Enter a Statement Timeout value in the Edit Connection Pool Advanced
-Attributes page in the Administration Console. For more information,
-click the Help button in the Administration Console.
-* Specify the `--statementtimeout` option in the
-`asadmin create-jdbc-connection-pool` command. For more information, see
-link:../reference-manual/create-jdbc-connection-pool.html#GSRFM00036[`create-jdbc-connection-pool`(1)].
-
-[[gktec]][[GSADG00088]][[statement-leak-detection-and-leaked-statement-reclamation]]
-
-Statement Leak Detection and Leaked Statement Reclamation
-
-If statements are not closed by an application after use, it is possible
-for the application to run out of cursors. Enabling statement leak
-detection causes statements to be considered as leaked if they are not
-closed within a specified period. Additionally, leaked statements can
-reclaimed automatically.
-
-To enable statement leak detection, set Statement Leak Timeout In
-Seconds for the JDBC connection pool to a positive, nonzero value in one
-of the following ways:
-
-* Specify the `--statementleaktimeout` option in the
-`create-jdbc-connection-pool` subcommand. For more information, see
-link:../reference-manual/create-jdbc-connection-pool.html#GSRFM00036[`create-jdbc-connection-pool`(1)].
-* Specify the `statement-leak-timeout-in-seconds` option in the `set`
-subcommand. For example: +
-[source,oac_no_warn]
-----
-asadmin set resources.jdbc-connection-pool.pool-name.statement-leak-timeout-in-seconds=300
-----
-
-When selecting a value for Statement Leak Timeout In Seconds, make sure
-that:
-
-* It is less than the Connection Leak Timeout; otherwise, the connection
-could be closed before the statement leak is recognized.
-* It is greater than the Statement Timeout; otherwise, a long running
-query could be mistaken as a statement leak.
-
-After enabling statement leak detection, enable leaked statement
-reclamation by setting Reclaim Leaked Statements for the JDBC connection
-pool to a `true` value in one of the following ways:
-
-* Specify the `--statementleakreclaim=true` option in the
-`create-jdbc-connection-pool` subcommand. For more information, see
-link:../reference-manual/create-jdbc-connection-pool.html#GSRFM00036[`create-jdbc-connection-pool`(1)].
-* Specify the `statement-leak-reclaim` option in the `set` subcommand.
-For example: +
-[source,oac_no_warn]
-----
-asadmin set resources.jdbc-connection-pool.pool-name.statement-leak-reclaim=true
-----
-
-[[gktej]][[GSADG00089]][[statement-caching]]
-
-Statement Caching
-
-Statement caching stores statements, prepared statements, and callable
-statements that are executed repeatedly by applications in a cache,
-thereby improving performance. Instead of the statement being prepared
-each time, the cache is searched for a match. The overhead of parsing
-and creating new statements each time is eliminated.
-
-Statement caching is usually a feature of the JDBC driver. The GlassFish
-Server provides caching for drivers that do not support caching. To
-enable this feature, set the Statement Cache Size for the JDBC
-connection pool in one of the following ways:
-
-* Enter a Statement Cache Size value in the Edit Connection Pool
-Advanced Attributes page in the Administration Console. For more
-information, click the Help button in the Administration Console.
-* Specify the `--statementcachesize` option in the
-`asadmin create-jdbc-connection-pool` command. For more information, see
-link:../reference-manual/create-jdbc-connection-pool.html#GSRFM00036[`create-jdbc-connection-pool`(1)].
-* Specify the `statement-cache-size` option in the `asadmin set`
-command. For example: +
-[source,oac_no_warn]
-----
-asadmin set domain1.resources.jdbc-connection-pool.DerbyPool.statement-cache-size=10
-----
-
-By default, this attribute is set to zero and the statement caching is
-turned off. To enable statement caching, you can set any positive
-nonzero value. The built-in cache eviction strategy is LRU-based (Least
-Recently Used). When a connection pool is flushed, the connections in
-the statement cache are recreated.
-
-[[gktbu]][[GSADG00090]][[statement-tracing]]
-
-Statement Tracing
-
-You can trace the SQL statements executed by applications that use a
-JDBC connection pool. Set the SQL Trace Listeners attribute to a
-comma-separated list of trace listener implementation classes in one of
-the following ways:
-
-* Enter an SQL Trace Listeners value in the Edit Connection Pool
-Advanced Attributes page in the Administration Console. For more
-information, click the Help button in the Administration Console.
-* Specify the `--sqltracelisteners` option in the
-`asadmin create-jdbc-connection-pool` command. For more information, see
-link:../reference-manual/create-jdbc-connection-pool.html#GSRFM00036[`create-jdbc-connection-pool`(1)].
-* Specify the `sql-trace-listeners` option in the `asadmin set` command.
-For example: +
-[source,oac_no_warn]
-----
-asadmin set domain1.resources.jdbc-connection-pool.DerbyPool.sql-trace-listeners=listeners
-----
-
-The GlassFish Server provides a public interface,
-org.glassfish.api.jdbc.SQLTraceListener , that implements a means of
-recording `SQLTraceRecord` objects. To make custom implementations of
-this interface available to the GlassFish Server, place the
-implementation classes in as-install`/lib`.
-
-The GlassFish Server provides an SQL tracing logger to log the SQL
-operations in the form of `SQLTraceRecord` objects in the `server.log`
-file. The module name under which the SQL operation is logged is
-`jakarta.enterprise.resource.sqltrace`. SQL traces are logged as FINE
-messages along with the module name to enable easy filtering of the SQL
-logs. A sample SQL trace record looks like this:
-
-[source,oac_no_warn]
-----
-[#|2009-11-27T15:46:52.202+0530|FINE|glassfishv3.0|jakarta.enterprise.resource.sqltrace.com.sun.gjc.util
-|_ThreadID=29;_ThreadName=Thread-1;ClassName=com.sun.gjc.util.SQLTraceLogger;MethodName=sqlTrace;
-|ThreadID=77 | ThreadName=p: thread-pool-1; w: 6 | TimeStamp=1259317012202 
-| ClassName=com.sun.gjc.spi.jdbc40.PreparedStatementWrapper40 | MethodName=executeUpdate 
-| arg[0]=insert into table1(colName) values(100) | arg[1]=columnNames | |#]
-----
-
-This trace shows that an `executeUpdate(String sql, String columnNames)`
-operation is being done.
-
-When SQL statement tracing is enabled and JDBC connection pool
-monitoring is enabled, GlassFish Server maintains a tracing cache of
-recent queries and their frequency of use. The following JDBC connection
-pool properties can be configured to control this cache and the
-monitoring statistics available from it:
-
-`time-to-keep-queries-in-minutes`::
-  Specifies how long in minutes to keep a query in the tracing cache,
-  tracking its frequency of use. The default value is 5 minutes.
-`number-of-top-queries-to-report`::
-  Specifies how many of the most used queries, in frequency order, are
-  listed the monitoring report. The default value is 10 queries.
-
-Set these parameters in one of the following ways:
-
-* Add them as properties in the Edit JDBC Connection Pool Properties
-page in the Administration Console. For more information, click the Help
-button in the Administration Console.
-* Specify them using the `--property` option in the
-`create-jdbc-connection-pool` subcommand. For more information, see
-link:../reference-manual/create-jdbc-connection-pool.html#GSRFM00036[`create-jdbc-connection-pool`(1)].
-* Set them using the `set` subcommand. For example: +
-[source,oac_no_warn]
-----
-asadmin set resources.jdbc-connection-pool.pool-name.property.time-to-keep-queries-in-minutes=10
-----
-
-[[ggndp]][[GSADG00746]][[administering-jdbc-resources]]
-
-Administering JDBC Resources
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A JDBC resource, also known as a data source, provides an application
-with a means of connecting to a database. Typically, you create a JDBC
-resource for each database that is accessed by the applications deployed
-in a domain. Multiple JDBC resources can be specified for a database.
-JDBC resources can be globally accessible or be scoped to an enterprise
-application, web module, EJB module, connector module or application
-client module, as described in "link:../application-deployment-guide/deploying-applications.html#GSDPG00075[Application-Scoped
-Resources]" in GlassFish Server Open Source Edition Application
-Deployment Guide.
-
-A JDBC resource is created by specifying the connection pool with which
-the resource will be associated . Use a unique Java Naming and Directory
-Interface (JNDI) name to identify the resource. For example, the JNDI
-name for the resource of a payroll database might be
-`java:comp/env/jdbc/payrolldb`.
-
-The Java EE standard specifies that certain default resources be made
-available to applications, and defines specific JNDI names for these
-default resources. GlassFish Server makes these names available through
-the use of logical JNDI names, which map Java EE standard JNDI names to
-specific GlassFish Server resources. For JDBC resources, the Java EE
-standard name `java:comp/DefaultDataSource` is mapped to the
-`jdbc/__default` resource.
-
-The following tasks and information are used to administer JDBC
-resources:
-
-* link:#ggnda[To Create a JDBC Resource]
-* link:#ggnhl[To List JDBC Resources]
-* link:#giwjv[To Update a JDBC Resource]
-* link:#ggnhz[To Delete a JDBC Resource]
-
-[[ggnda]][[GSADG00426]][[to-create-a-jdbc-resource]]
-
-To Create a JDBC Resource
-+++++++++++++++++++++++++
-
-Use the `create-jdbc-resource` subcommand in remote mode to create a
-JDBC resource. Creating a JDBC resource is a dynamic event and does not
-require server restart.
-
-Because all JNDI names are in the `java:comp/env` subcontext, when
-specifying the JNDI name of a JDBC resource in the Administration
-Console, use only the `jdbc/`name format. For example, a payroll
-database might be specified as `jdbc/payrolldb`.
-
-[[GSADG963]]
-
-Before You Begin
-
-Before creating a JDBC resource, you must first create a JDBC connection
-pool. For instructions, see link:#ggnfv[To Create a JDBC Connection
-Pool].
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Create a JDBC resource by using the
-link:../reference-manual/create-jdbc-resource.html#GSRFM00037[`create-jdbc-resource`] subcommand. +
-Information about properties for the subcommand is included in this help
-page.
-3.  If necessary, notify users that the new resource has been created.
-
-[[GSADG00219]][[ggplj]]
-
-
-Example 11-8 Creating a JDBC Resource
-
-This example creates a JDBC resource named `DerbyPool`.
-
-[source,oac_no_warn]
-----
-asadmin> create-jdbc-resource --connectionpoolid DerbyPool jdbc/DerbyPool
-Command create-jdbc-resource executed successfully.
-----
-
-[[GSADG964]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-jdbc-resource` at the command line.
-
-[[ggnhl]][[GSADG00427]][[to-list-jdbc-resources]]
-
-To List JDBC Resources
-++++++++++++++++++++++
-
-Use the `list-jdbc-resources` subcommand in remote mode to list the
-existing JDBC resources.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List JDBC resources by using the
-link:../reference-manual/list-jdbc-resources.html#GSRFM00174[`list-jdbc-resources`] subcommand.
-
-[[GSADG00220]][[ggpgi]]
-
-
-Example 11-9 Listing JDBC Resources
-
-This example lists JDBC resources for `localhost`.
-
-[source,oac_no_warn]
-----
-asadmin> list-jdbc-resources
-jdbc/__TimerPool
-jdbc/DerbyPool
-jdbc/__default
-jdbc1
-Command list-jdbc-resources executed successfully.
-----
-
-[[GSADG965]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-jdbc-resources` at the command line.
-
-[[giwjv]][[GSADG00428]][[to-update-a-jdbc-resource]]
-
-To Update a JDBC Resource
-+++++++++++++++++++++++++
-
-You can enable or disable a JDBC resource by using the `set` subcommand.
-The JDBC resource is identified by its dotted name.
-
-1.  List JDBC resources by using the
-link:../reference-manual/list-jdbc-resources.html#GSRFM00174[`list-jdbc-resources`] subcommand.
-2.  Modify the values for the specified JDBC resource by using the
-link:../reference-manual/set.html#GSRFM00226[`set`] subcommand. +
-For example:
-
-[[GSADG00221]][[gjkrz]]
-
-
-Example 11-10 Updating a JDBC Resource
-
-This example changes the `res1` enabled setting to false.
-
-[source,oac_no_warn]
-----
-asadmin>set resources.jdbc-resource.res1.enabled=false
-----
-
-[[ggnhz]][[GSADG00429]][[to-delete-a-jdbc-resource]]
-
-To Delete a JDBC Resource
-+++++++++++++++++++++++++
-
-Use the `delete-jdbc-resource` subcommand in remote mode to delete an
-existing JDBC resource. Deleting a JDBC resource is a dynamic event and
-does not require server restart.
-
-[[GSADG966]]
-
-Before You Begin
-
-Before deleting a JDBC resource, all associations with this resource
-must be removed.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List JDBC resources by using the
-link:../reference-manual/list-jdbc-resources.html#GSRFM00174[`list-jdbc-resources`] subcommand.
-3.  If necessary, notify users that the JDBC resource is being deleted.
-4.  Delete a JDBC resource by using the
-link:../reference-manual/delete-jdbc-resource.html#GSRFM00089[`delete-jdbc-resource`] subcommand.
-
-[[GSADG00222]][[ggpga]]
-
-
-Example 11-11 Deleting a JDBC Resource
-
-This example deletes a JDBC resource named `DerbyPool`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-jdbc-resource jdbc/DerbyPool
-Command delete-jdbc-resource executed successfully.
-----
-
-[[GSADG967]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-jdbc-resource` at the command line.
-
-[[gkudf]][[GSADG00747]][[enabling-the-jdbc__default-resource-in-a-clustered-environment]]
-
-Enabling the `jdbc/__default` Resource in a Clustered Environment
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-GlassFish Server 5.0 includes a preconfigured JDBC resource with the
-JNDI name `jdbc/__default`. This `jdbc/__default` resource is not
-enabled by default, so you need to explicitly enable it if you want to
-use it in a cluster.
-
-[[gkubj]][[GSADG00430]][[to-enable-the-jdbc__default-resource-for-a-clustered-environment]]
-
-To Enable the `jdbc/__default` Resource for a Clustered Environment
-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-Instructions for creating JDBC resources in general are provided in
-link:#ggnda[To Create a JDBC Resource]. Use the following procedure to
-enable the preconfigured `jdbc/__default` resource for a clustered
-GlassFish Server environment.
-
-1.  Create the `jdbc/__default` resource reference for the cluster. +
-[source,oac_no_warn]
-----
-asadmin create-resource-ref --target cluster-name jdbc/__default
-----
-2.  Enable the resource on the DAS that manages the cluster. +
-[source,oac_no_warn]
-----
-asadmin set resources.jdbc-connection-pool.DerbyPool.property.serverName=DAS-machine-name
-----
-This step is only required if the cluster includes remote instances.
-3.  Restart the DAS and the target cluster(s). +
-[source,oac_no_warn]
-----
-asadmin stop-cluster cluster-name
-asadmin stop-domain domain-name
-asadmin start-domain domain-name
-asadmin start-cluster cluster-name
-----
-
-[[ghatb]][[GSADG00748]][[integrating-the-jdbc-driver]]
-
-Integrating the JDBC Driver
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To use JDBC features, you must choose a JDBC driver to work with the
-GlassFish Server, then you must set up the driver. This section covers
-these topics:
-
-* link:#gkpdj[Supported Database Drivers]
-* link:#gkpci[Making the JDBC Driver JAR Files Accessible]
-* link:#gkpfj[Automatic Detection of Installed Drivers]
-
-[[gkpdj]][[GSADG00671]][[supported-database-drivers]]
-
-Supported Database Drivers
-++++++++++++++++++++++++++
-
-Supported JDBC drivers are those that have been fully tested by Oracle.
-For a list of the JDBC drivers currently supported by the GlassFish
-Server, see the link:../release-notes/toc.html#GSRLN[GlassFish Server Open Source Edition Release
-Notes]. For configurations of supported and other drivers, see
-link:#beamw[Configuration Specifics for JDBC Drivers].
-
-
-[NOTE]
-=======================================================================
-
-Because the drivers and databases supported by the GlassFish Server are
-constantly being updated, and because database vendors continue to
-upgrade their products, always check with Oracle technical support for
-the latest database support information.
-
-=======================================================================
-
-
-[[gkpci]][[GSADG00672]][[making-the-jdbc-driver-jar-files-accessible]]
-
-Making the JDBC Driver JAR Files Accessible
-+++++++++++++++++++++++++++++++++++++++++++
-
-To integrate the JDBC driver into a GlassFish Server domain, copy the
-JAR files into the domain-dir`/lib` directory, then restart the server.
-This makes classes accessible to all applications or modules deployed on
-servers that share the same configuration. For more information about
-GlassFish Server class loaders, see "link:../application-development-guide/class-loaders.html#GSDVG00003[Class Loaders]" in
-GlassFish Server Open Source Edition Application Development Guide.
-
-If you are using an Oracle database with EclipseLink extensions, copy
-the JAR files into the domain-dir`/lib/ext` directory, then restart the
-server. For details, see "link:../application-development-guide/jpa.html#GSDVG00390[Oracle Database
-Enhancements]" in GlassFish Server Open Source Edition Application
-Development Guide.
-
-[[gkpfj]][[GSADG00673]][[automatic-detection-of-installed-drivers]]
-
-Automatic Detection of Installed Drivers
-++++++++++++++++++++++++++++++++++++++++
-
-The Administration Console detects installed JDBC Drivers automatically
-when you create a JDBC connection pool. To create a JDBC connection pool
-using the Administration Console, open the Resources component, open the
-JDBC component, select Connection Pools, and click on the New button.
-This displays the New JDBC Connection Pool page.
-
-Based on the Resource Type and Database Vendor you select on the New
-JDBC Connection Pool page, data source or driver implementation class
-names are listed in the Datasource Classname or Driver Classname field
-when you click on the Next button. When you choose a specific
-implementation class name on the next page, additional properties
-relevant to the installed JDBC driver are displayed in the Additional
-Properties section.
-
-[[beamw]][[GSADG00579]][[configuration-specifics-for-jdbc-drivers]]
-
-Configuration Specifics for JDBC Drivers
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-GlassFish Server is designed to support connectivity to any database
-management system by using a corresponding JDBC driver. Configuration
-information is provided for these JDBC drivers:
-
-* link:#beanc[IBM DB2 Database Type 2 Driver]
-* link:#glhim[IBM DB2 Database Type 4 Driver]
-* link:#beamx[Apache Derby DB/Derby Type 4 Driver]
-* link:#gbsor[MySQL Server Database Type 4 Driver]
-* link:#beani[Oracle 10 Database Driver]
-* link:#beanh[Oracle 11 Database Driver]
-* link:#gjksj[PostgreSQL Type 4 Driver]
-* link:#beamy[DataDirect Type 4 Driver for IBM DB2 Database]
-* link:#beanj[DataDirect Type 4 Driver for IBM Informix]
-* link:#beana[DataDirect Type 4 Driver for Microsoft SQL Server
-Database]
-* link:#gjksd[DataDirect Type 4 Driver for MySQL Server Database]
-* link:#beamz[DataDirect Type 4 Driver for Oracle 11 Database]
-* link:#beanb[DataDirect Type 4 Driver for Sybase Database]
-* link:#beane[Inet Oraxo Driver for Oracle Database]
-* link:#beanf[Inet Merlia Driver for Microsoft SQL Server Database]
-* link:#beang[Inet Sybelux Driver for Sybase Database]
-* link:#beand[JConnect Type 4 Driver for Sybase ASE 12.5 Database]
-
-[[beanc]][[GSADG00749]][[ibm-db2-database-type-2-driver]]
-
-IBM DB2 Database Type 2 Driver
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The JAR files for the DB2 driver are `db2jcc.jar`,
-`db2jcc_license_cu.jar`, and `db2java.zip`. Set your environment
-variables . For example:
-
-[source,oac_no_warn]
-----
-LD_LIBRARY_PATH=/usr/db2user/sqllib/lib:${Java EE.home}/lib
-DB2DIR=/opt/IBM/db2/V8.2
-DB2INSTANCE=db2user
-INSTHOME=/usr/db2user
-VWSPATH=/usr/db2user/sqllib
-THREADS_FLAG=native
-----
-
-Configure the connection pool using the following settings:
-
-* Name: Use this name when you configure the JDBC resource later.
-* Resource Type: Specify the appropriate value.
-* Database Vendor: DB2
-* DataSource Classname: `com.ibm.db2.jcc.DB2SimpleDataSource`
-* Properties:
-
-** `databaseName` - Set as appropriate.
-
-** `user` - Set as appropriate.
-
-** `password` - Set as appropriate.
-
-** `driverType` - Set to `2`.
-
-** `deferPrepares` - Set to `false`.
-
-[[glhim]][[GSADG00750]][[ibm-db2-database-type-4-driver]]
-
-IBM DB2 Database Type 4 Driver
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The JAR file for the DB2 driver is `db2jcc.jar`. Configure the
-connection pool using the following settings:
-
-* Name: Use this name when you configure the JDBC resource later.
-* Resource Type: Specify the appropriate value.
-* Database Vendor: DB2
-* DataSource Classname: `com.ibm.db2.jcc.DB2SimpleDataSource`
-* Properties:
-
-** `databaseName` - Set as appropriate.
-
-** `user` - Set as appropriate.
-
-** `password` - Set as appropriate.
-
-** `driverType` - Set to `4`.
-
-[[beamx]][[GSADG00751]][[apache-derby-dbderby-type-4-driver]]
-
-Apache Derby DB/Derby Type 4 Driver
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The Apache Derby DB/Derby JDBC driver is included with GlassFish Server
-by default, so you do not need to integrate this JDBC driver with
-GlassFish Server.
-
-The JAR file for the Apache Derby DB driver is `derbyclient.jar`.
-Configure the connection pool using the following settings:
-
-* Name: Use this name when you configure the JDBC resource later.
-* Resource Type: Specify the appropriate value.
-* Database Vendor: Apache Derby
-* DataSource Classname: Specify one of the following: +
-[source,oac_no_warn]
-----
-org.apache.derby.jdbc.ClientDataSource40
-org.apache.derby.jdbc.ClientXADataSource40
-----
-* Properties:
-
-** `serverName` - Specify the host name or IP address of the database
-server.
-
-** `portNumber` - Specify the port number of the database server if it
-is different from the default.
-
-** `databaseName` - Specify the name of the database.
-
-** `user` - Specify the database user. +
-This is only necessary if the Apache Derby database is configured to use
-authentication. The Apache Derby database does not use authentication by
-default. When the user is provided, it is the name of the schema where
-the tables reside.
-
-** `password` - Specify the database password. +
-This is only necessary if the Apache Derby database is configured to use
-authentication.
-
-[[gbsor]][[GSADG00752]][[mysql-server-database-type-4-driver]]
-
-MySQL Server Database Type 4 Driver
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The JAR file for the MySQL driver is
-`mysql-connector-java-5.1.14-bin.jar`. Configure the connection pool
-using the following settings:
-
-* Name: Use this name when you configure the JDBC resource later.
-* Resource Type: Specify the appropriate value.
-* Database Vendor: MySql
-* DataSource Classname: +
-[source,oac_no_warn]
-----
-com.mysql.jdbc.jdbc2.optional.MysqlDataSource
-com.mysql.jdbc.jdbc2.optional.MysqlXADataSource
-----
-* Properties:
-
-** `serverName` - Specify the host name or IP address of the database
-server.
-
-** `portNumber` - Specify the port number of the database server.
-
-** `databaseName` - Set as appropriate.
-
-** `user` - Set as appropriate.
-
-** `password` - Set as appropriate.
-
-[[beani]][[GSADG00753]][[oracle-10-database-driver]]
-
-Oracle 10 Database Driver
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The JAR file for the Oracle 10 database driver is `ojdbc14.jar`. Make
-sure that the shared library is available through `LD_LIBRARY_PATH` and
-that the `ORACLE_HOME` property is set.
-
-To make the Oracle driver behave in a Java EE-compliant manner, you must
-define the following JVM property:
-
-[source,oac_no_warn]
-----
--Doracle.jdbc.J2EE13Compliant=true
-----
-
-Configure the connection pool using the following settings:
-
-* Name: Use this name when you configure the JDBC resource later.
-* Resource Type: Specify the appropriate value.
-* Database Vendor: Oracle
-* DataSource Classname: Specify one of the following: +
-[source,oac_no_warn]
-----
-oracle.jdbc.pool.OracleDataSource
-oracle.jdbc.xa.client.OracleXADataSource
-----
-* Properties:
-
-** `user` - Set as appropriate.
-
-** `password` - Set as appropriate.
-
-[[beanh]][[GSADG00754]][[oracle-11-database-driver]]
-
-Oracle 11 Database Driver
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The JAR file for the Oracle 11 database driver is `ojdbc6.jar`.
-
-To make the Oracle driver behave in a Java EE-compliant manner, you must
-define the following JVM property:
-
-[source,oac_no_warn]
-----
--Doracle.jdbc.J2EE13Compliant=true
-----
-
-Configure the connection pool using the following settings:
-
-* Name: Use this name when you configure the JDBC resource later.
-* Resource Type: Specify the appropriate value.
-* Database Vendor: Oracle
-* DataSource Classname: Specify one of the following: +
-[source,oac_no_warn]
-----
-oracle.jdbc.pool.OracleDataSource
-oracle.jdbc.xa.client.OracleXADataSource
-----
-* Properties:
-
-** `user` - Set as appropriate.
-
-** `password` - Set as appropriate. +
-
-[NOTE]
-=======================================================================
-
-For this driver, the `XAResource.recover` method repeatedly returns the
-same set of in-doubt Xids regardless of the input flag. According to the
-XA specifications, the Transaction Manager initially calls this method
-with `TMSTARTSCAN` and then with `TMNOFLAGS` repeatedly until no Xids
-are returned. The `XAResource.commit` method also has some issues.
-
-To disable this GlassFish Server workaround, the
-`oracle-xa-recovery-workaround` property value must be set to `false`.
-
-Additionally, in order for the transaction manager to recover
-transactions, the JDBC connection pool's database user must be given
-certain Oracle permissions:
-
-** SELECT permission on DBA_PENDING_TRANSACTIONS, PENDING_TRANS$,
-DBA_2PC_PENDING and DBA_2PC_NEIGHBORS.
-** EXECUTE permissions on DBMS_XA and DBMS_SYSTEM.
-
-=======================================================================
-
-
-[[gjksj]][[GSADG00755]][[postgresql-type-4-driver]]
-
-PostgreSQL Type 4 Driver
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-The JAR file for the PostgreSQL driver is
-`postgresql-9.0-801.jdbc4.jar`. Configure the connection pool using the
-following settings:
-
-* Name: Use this name when you configure the JDBC resource later.
-* Resource Type: Specify the appropriate value.
-* Database Vendor: Postgresql
-* DataSource Classname: `org.postgresql.ds.PGSimpleDataSource`
-* Properties:
-
-** `serverName` - Specify the host name or IP address of the database
-server.
-
-** `portNumber` - Specify the port number of the database server.
-
-** `databaseName` - Set as appropriate.
-
-** `user` - Set as appropriate.
-
-** `password` - Set as appropriate.
-
-[[beamy]][[GSADG00756]][[datadirect-type-4-driver-for-ibm-db2-database]]
-
-DataDirect Type 4 Driver for IBM DB2 Database
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The JAR file for DataDirect driver is `db2.jar`. Configure the
-connection pool using the following settings:
-
-* Name: Use this name when you configure the JDBC resource later.
-* Resource Type: Specify the appropriate value.
-* Database Vendor: DataDirect-DB2
-* DataSource Classname: `com.ddtek.jdbcx.db2.DB2DataSource`
-* Properties:
-
-** `serverName` - Specify the host name or IP address of the database
-server.
-
-** `portNumber` - Specify the port number of the database server.
-
-** `databaseName` - Set as appropriate.
-
-** `user` - Set as appropriate.
-
-** `password` - Set as appropriate.
-
-[[beanj]][[GSADG00757]][[datadirect-type-4-driver-for-ibm-informix]]
-
-DataDirect Type 4 Driver for IBM Informix
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Configure the connection pool using the following settings:
-
-* Name: Use this name when you configure the JDBC resource later.
-* Resource Type: Specify the appropriate value.
-* Database Vendor: DataDirect-Informix
-* DataSource Classname: Specify one of the following: +
-[source,oac_no_warn]
-----
-com.informix.jdbcx.IfxDataSource
-com.informix.jdbcx.IfxXADataSource
-----
-DataDirect DataSource Classname:
-`com.ddtek.jdbcx.informix.InformixDataSourcee`
-* Properties:
-
-** `serverName` - Specify the Informix database server name.
-
-** `portNumber` - Specify the port number of the database server.
-
-** `databaseName` - Set as appropriate. This is optional.
-
-** `user` - Set as appropriate.
-
-** `password` - Set as appropriate.
-
-** `IfxIFXHost` - Specify the host name or IP address of the database
-server.
-
-[[beana]][[GSADG00758]][[datadirect-type-4-driver-for-microsoft-sql-server-database]]
-
-DataDirect Type 4 Driver for Microsoft SQL Server Database
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The JAR file for the DataDirect driver is `sqlserver.jar`. Configure the
-connection pool using the following settings:
-
-* Name: Use this name when you configure the JDBC resource later.
-* Resource Type: Specify the appropriate value.
-* Database Vendor: DataDirect-Microsoft SQL Server
-* DataSource Classname: `com.ddtek.jdbcx.sqlserver.SQLServerDataSource`
-* Properties:
-
-** `serverName` - Specify the host name or IP address and the port of
-the database server.
-
-** `portNumber` - Specify the port number of the database server.
-
-** `user` - Set as appropriate.
-
-** `password` - Set as appropriate.
-
-** `selectMethod` - Set to `cursor`.
-
-[[gjksd]][[GSADG00759]][[datadirect-type-4-driver-for-mysql-server-database]]
-
-DataDirect Type 4 Driver for MySQL Server Database
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The JAR file for the DataDirect driver is `mysql.jar`. Configure the
-connection pool using the following settings:
-
-* Name: Use this name when you configure the JDBC resource later.
-* Resource Type: Specify the appropriate value.
-* Database Vendor: DataDirect-MySQL
-* DataSource: `com.ddtek.jdbcx.mysql.MySQLDataSource`
-* Properties:
-
-** `serverName` - Specify the host name or IP address and the port of
-the database server.
-
-** `portNumber` - Specify the port number of the database server.
-
-** `user` - Set as appropriate.
-
-** `password` - Set as appropriate.
-
-** `selectMethod` - Set to `cursor`.
-
-[[beamz]][[GSADG00760]][[datadirect-type-4-driver-for-oracle-11-database]]
-
-DataDirect Type 4 Driver for Oracle 11 Database
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The JAR file for the DataDirect driver is `oracle.jar`.
-
-To make the Oracle driver behave in a Java EE-compliant manner, you must
-define the following JVM property:
-
-[source,oac_no_warn]
-----
--Doracle.jdbc.J2EE13Compliant=true
-----
-
-Configure the connection pool using the following settings:
-
-* Name: Use this name when you configure the JDBC resource later.
-* Resource Type: Specify the appropriate value.
-* Database Vendor: DataDirect-Oracle
-* DataSource Classname: `com.ddtek.jdbcx.oracle.OracleDataSource`
-* Properties:
-
-** `serverName` - Specify the host name or IP address of the database
-server.
-
-** `portNumber` - Specify the port number of the database server.
-
-** `user` - Set as appropriate.
-
-** `password` - Set as appropriate.
-
-[[beanb]][[GSADG00761]][[datadirect-type-4-driver-for-sybase-database]]
-
-DataDirect Type 4 Driver for Sybase Database
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The JAR file for the DataDirect driver is `sybase.jar`. Configure the
-connection pool using the following settings:
-
-* Name: Use this name when you configure the JDBC resource later.
-* Resource Type: Specify the appropriate value.
-* Database Vendor: DataDirect-Sybase
-* DataSource Classname: `com.ddtek.jdbcx.sybase.SybaseDataSource`
-* Properties:
-
-** `serverName` - Specify the host name or IP address of the database
-server.
-
-** `portNumber` - Specify the port number of the database server.
-
-** `databaseName` - Set as appropriate. This is optional.
-
-** `user` - Set as appropriate.
-
-** `password` - Set as appropriate.
-
-
-[NOTE]
-=======================================================================
-
-In some situations, using this driver can cause exceptions to be thrown
-because the driver creates a stored procedure for every parameterized
-PreparedStatement by default. If this situation arises, add the property
-`PrepareMethod`, setting its value to `direct`.
-
-=======================================================================
-
-
-[[beane]][[GSADG00762]][[inet-oraxo-driver-for-oracle-database]]
-
-Inet Oraxo Driver for Oracle Database
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The JAR file for the Inet Oracle driver is `Oranxo.jar`. Configure the
-connection pool using the following settings:
-
-* Name: Use this name when you configure the JDBC resource later.
-* Resource Type: Specify the appropriate value.
-* Database Vendor: Oracle
-* DataSource Classname: `com.inet.ora.OraDataSource`
-* Properties:
-
-** `serverName` - Specify the host name or IP address of the database
-server.
-
-** `portNumber` - Specify the port number of the database server.
-
-** `user` - Specify the database user.
-
-** `password` - Specify the database password.
-
-** `serviceName` - Specify the URL of the database. The syntax is as
-follows: +
-[source,oac_no_warn]
-----
-jdbc:inetora:server:port:dbname
-----
-For example: +
-[source,oac_no_warn]
-----
-jdbc:inetora:localhost:1521:payrolldb
-----
-In this example,`localhost` is the name of the host running the Oracle
-server, `1521` is the Oracle server's port number, and `payrolldb` is
-the SID of the database. For more information about the syntax of the
-database URL, see the Oracle documentation.
-
-** `streamstolob` - If the size of BLOB or CLOB data types exceeds 4 KB
-and this driver is used for CMP, this property must be set to `true`.
-
-[[beanf]][[GSADG00763]][[inet-merlia-driver-for-microsoft-sql-server-database]]
-
-Inet Merlia Driver for Microsoft SQL Server Database
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The JAR file for the Inet Microsoft SQL Server driver is `Merlia.jar`.
-Configure the connection pool using the following settings:
-
-* Name: Use this name when you configure the JDBC resource later.
-* Resource Type: Specify the appropriate value.
-* Database Vendor: MicrosoftSqlServer
-* DataSource Classname: `com.inet.tds.TdsDataSource`
-* Properties:
-
-** `serverName` - Specify the host name or IP address and the port of
-the database server.
-
-** `portNumber` - Specify the port number of the database server.
-
-** `user` - Set as appropriate.
-
-** `password` - Set as appropriate.
-
-[[beang]][[GSADG00764]][[inet-sybelux-driver-for-sybase-database]]
-
-Inet Sybelux Driver for Sybase Database
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The JAR file for the Inet Sybase driver is `Sybelux.jar`. Configure the
-connection pool using the following settings:
-
-* Name: Use this name when you configure the JDBC resource later.
-* Resource Type: Specify the appropriate value.
-* Database Vendor: Sybase
-* DataSource Classname: `com.inet.syb.SybDataSource`
-* Properties:
-
-** `serverName` - Specify the host name or IP address of the database
-server.
-
-** `portNumber` - Specify the port number of the database server.
-
-** `databaseName` - Set as appropriate. Do not specify the complete URL,
-only the database name.
-
-** `user` - Set as appropriate.
-
-** `password` - Set as appropriate.
-
-[[beand]][[GSADG00765]][[jconnect-type-4-driver-for-sybase-ase-12.5-database]]
-
-JConnect Type 4 Driver for Sybase ASE 12.5 Database
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The JAR file for the Sybase driver is `jconn4.jar`. Configure the
-connection pool using the following settings:
-
-* Name: Use this name when you configure the JDBC resource later.
-* Resource Type: Specify the appropriate value.
-* Database Vendor: Sybase
-* DataSource Classname: Specify one of the following: +
-[source,oac_no_warn]
-----
-com.sybase.jdbc4.jdbc.SybDataSource
-com.sybase.jdbc4.jdbc.SybXADataSource
-----
-* Properties:
-
-** `serverName` - Specify the host name or IP address of the database
-server.
-
-** `portNumber` - Specify the port number of the database server.
-
-** `databaseName` - Set as appropriate. Do not specify the complete URL,
-only the database name.
-
-** `user` - Set as appropriate.
-
-** `password` - Set as appropriate.
-
-** `BE_AS_JDBC_COMPLIANT_AS_POSSIBLE` - Set to `true`.
-
-** `FAKE_METADATA` - Set to `true`.
-
-
diff --git a/docs/administration-guide/src/main/jbake/content/jms.adoc b/docs/administration-guide/src/main/jbake/content/jms.adoc
deleted file mode 100644
index eea7e00..0000000
--- a/docs/administration-guide/src/main/jbake/content/jms.adoc
+++ /dev/null
@@ -1,2689 +0,0 @@
-type=page
-status=published
-title=Administering the Java Message Service (JMS)
-next=jndi.html
-prev=javamail.html
-~~~~~~
-Administering the Java Message Service (JMS)
-============================================
-
-[[GSADG00020]][[abljw]]
-
-
-[[administering-the-java-message-service-jms]]
-17 Administering the Java Message Service (JMS)
------------------------------------------------
-
-The Java Message Service (JMS) API is a messaging standard that allows
-Java EE applications and components, including message-driven beans
-(MDBs), to create, send, receive, and read messages. It enables
-distributed communication that is loosely coupled, reliable, and
-asynchronous.
-
-GlassFish Server supports JMS messaging by communicating with a JMS
-provider through a Java EE Connector resource adapter. By default,
-GlassFish Server provides JMS messaging through its built-in jmsra
-resource adapter communicating with Open Message Queue, which is
-included with GlassFish Server. This combination, known as the JMS
-Service, is tightly integrated with GlassFish Server, providing a rich
-set of `asadmin` subcommands and Administration Console pages to
-simplify JMS messaging administration tasks.
-
-GlassFish Server also supports the Generic Resource Adapter for JMS
-(GenericJMSRA) for use as a resource adapter to connect to other JMS
-providers. The last section in this chapter, link:#gbtvg[Using the
-Generic Resource Adapter for JMS to Integrate Supported External JMS
-Providers], describes the GenericJMSRA and provides instructions for
-using it to make other supported JMS providers available to GlassFish
-Server.
-
-The following topics are addressed here:
-
-* link:#gipit[About the JMS Service]
-* link:#beaof[Updating the JMS Service Configuration]
-* link:#gipbg[Administering JMS Hosts]
-* link:#ablkb[Administering JMS Connection Factories and Destinations]
-* link:#ablkj[Administering JMS Physical Destinations]
-* link:#gkxgk[Special Situations When Using the JMS Service]
-* link:#gipnh[Troubleshooting the JMS Service]
-* link:#gbtvg[Using the Generic Resource Adapter for JMS to Integrate
-Supported External JMS Providers]
-
-Instructions for accomplishing the task in this chapter by using the
-Administration Console are contained in the Administration Console
-online help.
-
-[[gipit]][[GSADG00595]][[about-the-jms-service]]
-
-About the JMS Service
-~~~~~~~~~~~~~~~~~~~~~
-
-To support JMS messaging, the JMS Service provides the following
-administrative objects:
-
-JMS Service Configuration::
-  The JMS service configuration is part of the overall configuration for
-  a GlassFish standalone instance or cluster. It specifies how the JMS
-  Service is to create and maintain connections with JMS Hosts.
-JMS Hosts::
-  JMS hosts are the message servers that host destinations, store
-  messages, and interact with applications to send and receive messages
-  across connections. In Message Queue, JMS hosts are called brokers. +
-  The JMS service supports these types of JMS hosts: +
-  * Embedded type, in which the JMS host runs in the same JVM as the
-  GlassFish instance; its configuration and lifecycle are managed by the
-  JMS service
-  * Local type, in which the JMS host runs separately on the same host
-  as the GlassFish instance; its configuration and lifecycle are managed
-  by the JMS service
-  * Remote type, in which the JMS host represents a Message Queue broker
-  or broker cluster that is external to the JMS service; its operation
-  is managed using Message Queue administrative tools +
-  For more information about JMS host types, see link:#giplw[About JMS
-  Host Types].
-JMS Connection Factory Resources::
-  JMS connection factory resources house the information that
-  applications use to connect to a JMS provider. For each JMS connection
-  factory, the JMS service automatically maintains a GlassFish connector
-  resource and a GlassFish connector connection pool in order to support
-  connection pooling and failover.
-JMS Destination Resources::
-  JMS destination resources house the information that applications use
-  to specify the target destination of messages they produce and the
-  source destination of messages they consume. For each JMS destination
-  resource, the JMS service automatically maintains a GlassFish
-  administered object.
-JMS Physical Destinations::
-  JMS physical destinations provide a means to create and manage JMS
-  destinations administratively instead of having them created
-  dynamically when needed by an application. While dynamic creation of
-  destinations is often sufficient during application development,
-  administratively created physical destinations are more suitable for
-  production environments.
-
-[[gavqn]][[GSADG00773]][[jms-service-high-availability]]
-
-JMS Service High Availability
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Just as GlassFish Server supports clusters of instances to provide high
-availability, Message Queue supports clusters of brokers to provide
-service availability or service and data availability, depending on the
-type of broker cluster, as described in "link:../../openmq/mq-tech-over/broker-clusters.html#GMTOV00028[Broker
-Clusters]" in Open Message Queue Technical Overview.
-
-The JMS service takes advantage of this Message Queue capability and
-automatically creates and manages a Message Queue broker cluster when a
-GlassFish cluster's configuration specifies Embedded or Local type JMS
-hosts. Additionally, both GlassFish clusters and standalone instances
-can use Message Queue broker clusters as Remote type JMS hosts.
-
-For information about how the JMS service supports GlassFish clusters
-and Message Queue broker clusters, see "link:../ha-administration-guide/jms.html#GSHAG00012[Configuring
-Java Message Service High Availability]" in GlassFish Server Open Source
-Edition High Availability Administration Guide.
-
-[[beaof]][[GSADG00596]][[updating-the-jms-service-configuration]]
-
-Updating the JMS Service Configuration
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Because the JMS service configuration is part of the overall
-configuration for a standalone instance or cluster, it is created when
-the standalone instance or cluster is created. You can then update the
-JMS service configuration by using the Java Message Service page for the
-configuration in the Administration Console, or by using a `set`
-subcommand of the following form:
-
-[source,oac_no_warn]
-----
-set configs.config.config-name.jms-service.attribute-name=attribute-value
-----
-
-The attributes you can set are:
-
-`type`::
-  The JMS host type the service is to use. Available choices are
-  `EMBEDDED`, `LOCAL` and `REMOTE`. See link:#giplw[About JMS Host
-  Types] for more information.
-`init-timeout-in-seconds`::
-  The number of seconds GlassFish Server waits for the JMS service to
-  start before aborting the startup.
-`start-args`::
-  A list of arguments the JMS service passes to Embedded and Local type
-  JMS hosts on startup. Permissible arguments are the options supported
-  by the Message Queue `imqbrokerd` command, as described in
-  "link:../../openmq/mq-admin-guide/command-line-reference.html#GMADG00280[Broker Utility]" in Open Message Queue
-  Administration Guide.
-`default-jms-host`::
-  The name of the default JMS host.
-`reconnect-enabled`::
-  When set to `true`, the JMS service attempts to reconnect to a JMS
-  host (or one of the JMS hosts in the AddressList) when a connection is
-  lost.
-`reconnect-attempts`::
-  The number of attempts to connect (or reconnect) for each JMS host in
-  the AddressList before the JMS service tries the next address in the
-  list. A value of -1 indicates that the number of reconnect attempts is
-  unlimited (the JMS service attempts to connect to the first address
-  until it succeeds).
-`reconnect-interval-in-seconds`::
-  The number of seconds between reconnect attempts. This interval
-  applies for attempts on each JMS host in the AddressList and for
-  successive addresses in the list. If it is too short, this time
-  interval does not give a JMS host time to recover. If it is too long,
-  the reconnect might represent an unacceptable delay.
-`addresslist-behavior`::
-  The order of connection attempts. Available choices are: +
-  `random`;;
-    Select a JMS host from the AddressList randomly. If there are many
-    clients attempting a connection using the same connection factory,
-    specify `random` to prevent them from all being connected to the
-    same JMS host.
-  `priority`;;
-    Always try to connect to the first JMS host in the AddressList and
-    use another one only if the first one is not available.
-`addresslist-iterations`::
-  The number of times the JMS service iterates through the AddressList
-  in an effort to establish (or reestablish) a connection. A value of -1
-  indicates that the number of attempts is unlimited.
-`mq-scheme`::
-`mq-service`::
-  The Message Queue address scheme name and connection service name to
-  use for the AddressList if a non-default scheme or service is to be
-  used. See "link:../../openmq/mq-admin-guide/administered-object-attributes.html#GMADG00622[Connection Handling]" in Open Message
-  Queue Administration Guide for syntax information.
-
-
-[NOTE]
-=======================================================================
-
-After making changes to the JMS service configuration, GlassFish Server
-instances that use the configuration must be restarted in order for the
-changes to be propagated.
-
-=======================================================================
-
-
-[[gkxgf]][[GSADG00774]][[setting-message-queue-broker-properties-in-the-jms-service-configuration]]
-
-Setting Message Queue Broker Properties in the JMS Service Configuration
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can specify any Message Queue broker property in the JMS service
-configuration by adding it by name to the Additional Properties table on
-the Java Message Service page for the configuration in the
-Administration Console, or by using a `set` subcommand of the following
-form:
-
-[source,oac_no_warn]
-----
-set configs.config.config-name.jms-service.property.broker-property-name=value
-----
-
-If the broker property name includes dots, preface the dots with two
-backslashes (`\\`); for example, to set the `imq.system.max_count`
-property, specify `imq\\.system\\.max_count` in the `set` subcommand.
-
-
-[NOTE]
-=======================================================================
-
-You can also set broker properties in the JMS host. If you set the same
-broker property in both the JMS service configuration and the JMS host,
-the value specified in the JMS host is used.
-
-=======================================================================
-
-
-[[gipbg]][[GSADG00597]][[administering-jms-hosts]]
-
-Administering JMS Hosts
-~~~~~~~~~~~~~~~~~~~~~~~
-
-A JMS host represents a Message Queue broker. JMS contains a JMS hosts
-list (the `AddressList` property) that contains all the JMS hosts that
-are used by GlassFish Server. The JMS hosts list is populated with the
-hosts and ports of the specified Message Queue brokers and is updated
-whenever a JMS host configuration changes. When you create JMS resources
-or deploy message driven beans, the resources or beans inherit the JMS
-hosts list.
-
-The following topics are addressed here:
-
-* link:#giplw[About JMS Host Types]
-* link:#gktfb[Configuring Embedded and Local JMS Hosts]
-* link:#gipbh[To Create a JMS Host]
-* link:#gipbz[To List JMS Hosts]
-* link:#givno[To Update a JMS Host]
-* link:#gipbv[To Delete a JMS Host]
-
-For information about administering JMS hosts that are servicing
-GlassFish clusters, see "link:../ha-administration-guide/jms.html#GSHAG00312[Configuring GlassFish Clusters
-to Use Message Queue Broker Clusters]" in GlassFish Server Open Source
-Edition High Availability Administration Guide.
-
-[[giplw]][[GSADG00775]][[about-jms-host-types]]
-
-About JMS Host Types
-^^^^^^^^^^^^^^^^^^^^
-
-The JMS service uses Message Queue (MQ) brokers as JMS hosts,
-integrating them in three ways:
-
-Embedded Type::
-  When the JMS service configuration's `type` attribute is `EMBEDDED`,
-  the MQ broker is co-located in the same JVM as the GlassFish server
-  instance it services. The JMS service starts it in-process and manages
-  its configuration and lifecycle. +
-  For this type, the JMS service uses lazy initialization to start the
-  broker when the first JMS operation is requested instead of
-  immediately when the GlassFish instance is started. If necessary, you
-  can force startup of the broker by using the
-  link:../reference-manual/jms-ping.html#GSRFM00144[`jms-ping`] command. +
-  Additionally, if the GlassFish instance is a standalone instance (not
-  a clustered instance), JMS operations use a Message Queue feature
-  called direct mode to bypass the networking stack, leading to
-  performance optimization.
-Local Type::
-  When the JMS service configuration's `type` attribute is `LOCAL`, the
-  JMS service starts the MQ broker specified in the configuration as the
-  default JMS host in a separate process on the same host as the
-  GlassFish server instance. The JMS service manages its configuration
-  and lifecycle. +
-  For this type, the JMS service starts the broker immediately when the
-  GlassFish instance is started. +
-  The JMS service provides the Message Queue broker an additional port
-  to start the RMI registry. This port number is equal to the broker's
-  JMS port plus 100. For example, if the JMS port number is 37676, then
-  the additional port's number will be 37776. Additionally, the
-  `start-args` property of the JMS service configuration can be used to
-  specify Message Queue broker startup options.
-Remote Type::
-  When the JMS service configuration's `type` attribute is `REMOTE`, the
-  JMS service uses the information defined by the default JMS host to
-  communicate with an MQ broker or broker cluster that has been
-  configured and started using Message Queue tools, as described in the
-  link:../../openmq/mq-admin-guide/toc.html#GMADG[Open Message Queue Administration Guide]. Ongoing
-  administration and tuning of the broker or broker cluster are also
-  performed using Message Queue tools.
-
-[[gktfb]][[GSADG00776]][[configuring-embedded-and-local-jms-hosts]]
-
-Configuring Embedded and Local JMS Hosts
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Because the JMS service, not Message Queue, manages Embedded and Local
-JMS hosts automatically, you should avoid using Message Queue utilities
-to configure them. Instead, specify broker properties in the JMS service
-configuration or in the JMS host.
-
-Should the need to use Message Queue utilities arise, you must use the
-`-varhome` option when running certain Message Queue utilities to
-specify the `IMQ_VARHOME` location of the Embedded or Local JMS host.
-This location depends on which GlassFish instance the JMS host is
-servicing:
-
-* For `server`, the Domain Administration Server (DAS), the
-`IMQ_VARHOME` location is: +
-[source,oac_no_warn]
-----
-domain-root-dir/domain-dir/imq
-----
-* For any other GlassFish instance, the `IMQ_VARHOME` location is: +
-[source,oac_no_warn]
-----
-as-install/nodes/node-name/instance-name/imq
-----
-
-For example, the broker log file for an Embedded or Local JMS host
-servicing the DAS is available at
-domain-root-dir`/`domain-dir`/imq/instances/imqbroker/log/log.txt`, and
-the broker log file for an Embedded or Local JMS host servicing any
-other GlassFish instance is available at
-as-install`/nodes/`node-name`/`instance-name`/imq/instances/`mq-instance-name`/log/log.txt`.
-
-
-[NOTE]
-=======================================================================
-
-When using Message Queue utilities on the Windows platform, you must
-explicitly use the Windows executable (`.exe`) versions of the
-utilities, even when running command shells such as Cygwin. For example,
-instead of running `imqcmd`, you must run `imqcmd.exe`.
-
-=======================================================================
-
-
-[[gipbh]][[GSADG00486]][[to-create-a-jms-host]]
-
-To Create a JMS Host
-^^^^^^^^^^^^^^^^^^^^
-
-The default JMS service configuration includes a JMS host,
-`default_JMS_host`. For most situations, this host is sufficient, so
-replacing it or creating additional JMS hosts is not often necessary and
-is a task for advanced users. Use the `create-jms-host` subcommand in
-remote `asadmin` mode to create an additional JMS host.
-
-1.  Ensure that the server is running. +
-Remote `asadmin` subcommands require a running server.
-2.  Create the JMS host by using the link:../reference-manual/create-jms-host.html#GSRFM00039[`create-jms-host`]
-subcommand: +
-[source,oac_no_warn]
-----
-asadmin> create-jms-host --mqhost hostName --mqport portNumber
---mquser adminUser --mqpassword adminPassword --target glassfishTarget
---property mqBrokerPropList --force trueFalse jms-host-name
-----
-`--mqhost`::
-  The host name of the Message Queue broker.
-`--mqport`::
-  The port number of the Message Queue broker.
-`--mquser`::
-  The user name of the administrative user of the Message Queue broker.
-`--mqpassword`::
-  The password of the administrative user of the Message Queue broker.
-`--target`::
-  The GlassFish Server object for which the JMS host is being created.
-  For details, see link:../reference-manual/create-jms-host.html#GSRFM00039[`create-jms-host`(1)].
-`--property`::
-  A list of one or more Message Queue broker properties to configure the
-  broker. The list is colon-separated (`:`) and has the form: +
-[source,oac_no_warn]
-----
-prop1Name=prop1Value:prop2Name=prop2Value:...
-----
-::
-  If a broker property name includes dots, preface the dots with two
-  backslashes (`\\`); for example, to include the `imq.system.max_count`
-  property, specify `imq\\.system\\.max_count` in the `--property`
-  option. +
-
-[width="100%",cols="100%",]
-|=======================================================================
-a|
-Note:
-
-You can also set broker properties in the JMS service configuration.
-If you set the same broker property in both the JMS host and the JMS
-service configuration, the value specified in the JMS host is used.
-
-|=======================================================================
-
-`--force`::
-  Specifies whether the subcommand overwrites the existing JMS host of
-  the same name. The default value is `false`.
-jms-host-name::
-  The unique name of the JMS host.
-
-[[GSADG00271]][[gipbb]]
-
-
-Example 17-1 Creating a JMS Host
-
-This example creates a JMS host named `MyNewHost`.
-
-[source,oac_no_warn]
-----
-asadmin> create-jms-host --mqhost pigeon --mqport 7677
---mquser admin --mqpassword admin MyNewHost
-Jms Host MyNewHost created.
-Command create-jms-host executed successfully.
-----
-
-[[GSADG1018]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-jms-host` at the command line.
-
-[[gipbz]][[GSADG00487]][[to-list-jms-hosts]]
-
-To List JMS Hosts
-^^^^^^^^^^^^^^^^^
-
-Use the `list-jms-hosts` subcommand in remote `asadmin` mode to list the
-existing JMS hosts.
-
-1.  Ensure that the server is running. +
-Remote `asadmin` subcommands require a running server.
-2.  List the JMS hosts by using the link:../reference-manual/list-jms-hosts.html#GSRFM00176[`list-jms-hosts`]
-subcommand.
-
-[[GSADG00272]][[gipdw]]
-
-
-Example 17-2 Listing JMS Hosts
-
-The following subcommand lists the existing JMS hosts.
-
-[source,oac_no_warn]
-----
-asadmin> list-jms-hosts
-default_JMS_host
-MyNewHost
-Command list-jmsdest executed successfully
-----
-
-[[givno]][[GSADG00488]][[to-update-a-jms-host]]
-
-To Update a JMS Host
-^^^^^^^^^^^^^^^^^^^^
-
-Use the `set` subcommand in remote `asadmin` mode to update an existing
-JMS host.
-
-1.  Ensure that the server is running. +
-Remote `asadmin` subcommands require a running server.
-2.  Use the link:../reference-manual/get.html#GSRFM00139[`get`] subcommand to list the current
-attribute values of the desired JMS host: +
-[source,oac_no_warn]
-----
-asadmin> get configs.config.config-name.jms-service.jms-host.jms-host-name.*
-----
-For information about JMS host attributes, see
-link:../reference-manual/create-jms-host.html#GSRFM00039[`create-jms-host`(1)].
-3.  Use the link:../reference-manual/set.html#GSRFM00226[`set`] subcommand to modify a JMS host
-attribute: +
-[source,oac_no_warn]
-----
-asadmin> set configs.config.config-name.jms-service.jmshost.
-jms-host-name.attribute-name=attribute-value
-----
-The attributes you can set are:::
-`host`::
-  The host name of the Message Queue broker.
-`port`::
-  The port number of the Message Queue broker.
-`admin-user-name`::
-  The user name of the administrative user of the Message Queue broker.
-`admin-password`::
-  The password of the administrative user of the Message Queue broker.
-`property.`broker-property-name::
-  A Message Queue broker property. The property, and the value assigned
-  to it, are used to configure the Message Queue broker. +
-  If the broker property name includes dots, preface the dots with two
-  backslashes (`\\`); for example, to include the `imq.system.max_count`
-  property, specify `imq\\.system\\.max_count` in the `set` subcommand. +
-
-[width="100%",cols="100%",]
-|=======================================================================
-a|
-Note:
-
-You can also set broker properties in the JMS service configuration.
-If you set the same broker property in both the JMS host and the JMS
-service configuration, the value specified in the JMS host is used.
-
-|=======================================================================
-
-
-[[GSADG00273]][[givlz]]
-
-
-Example 17-3 Updating a JMS Host
-
-This example changes the value of the `host` attribute of the JMS host
-`default_JMS_Host`. By default this value is `localhost`.
-
-[source,oac_no_warn]
-----
-asadmin> set configs.config.server-config.jms-service.jms-host.default_JMS_host.host=
-"server1.middleware.example.com"
-----
-
-[[gipbv]][[GSADG00489]][[to-delete-a-jms-host]]
-
-To Delete a JMS Host
-^^^^^^^^^^^^^^^^^^^^
-
-Use the `delete-jms-host` subcommand in remote `asadmin` mode to delete
-a JMS host from the JMS service. If you delete the only JMS host, the
-JMS service will not be able to start until you create a new JMS host.
-
-1.  Ensure that the server is running. +
-Remote `asadmin` subcommands require a running server.
-2.  List the JMS hosts by using the link:../reference-manual/list-jms-hosts.html#GSRFM00176[`list-jms-hosts`]
-subcommand.
-3.  Delete a JMS host by using the link:../reference-manual/delete-jms-host.html#GSRFM00091[`delete-jms-host`]
-subcommand.
-
-[[GSADG00274]][[gipbj]]
-
-
-Example 17-4 Deleting a JMS Host
-
-This example deletes a JMS host named `MyNewHost`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-jms-host MyNewHost
-Command delete-jms-host executed successfully.
-----
-
-[[GSADG1019]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-jms-host` at the command line.
-
-[[ablkb]][[GSADG00598]][[administering-jms-connection-factories-and-destinations]]
-
-Administering JMS Connection Factories and Destinations
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The JMS API uses two kinds of administered objects. Connection factory
-objects allow an application to create other JMS objects
-programmatically. Destination objects serve as repositories for
-messages. How these objects are created is specific to each
-implementation of JMS. In GlassFish Server, JMS is implemented by
-performing the following tasks:
-
-* Creating a connection factory
-* Creating a destination, which requires creating a physical destination
-and a destination resource that refers to the physical destination
-
-JMS applications use the Java Naming and Directory Interface (JNDI) API
-to access the connection factory and destination resources. A JMS
-application normally uses at least one connection factory and at least
-one destination. By studying the application or consulting with the
-application developer, you can determine what resources must be created.
-The order in which the resources are created does not matter.
-
-The Java EE standard specifies that certain default resources be made
-available to applications, and defines specific JNDI names for these
-default resources. GlassFish Server makes these names available through
-the use of logical JNDI names, which map Java EE standard JNDI names to
-specific GlassFish Server resources. For JMS connection factory
-resources, the Java EE standard name
-`java:comp/DefaultJMSConnectionFactory` is mapped to the
-`jms/__defaultConnectionFactory` resource.
-
-GlassFish Server provides the following types of connection factory
-objects:
-
-* `QueueConnectionFactory` objects, used for point-to-point
-communication
-* `TopicConnectionFactory` objects, used for publish-subscribe
-communication
-* `ConnectionFactory` objects, which can be used for both point-to-point
-and publish-subscribe communications (recommended for new applications)
-
-GlassFish Server provides the following types of destination objects:
-
-* `Queue` objects, used for point-to-point communication
-* `Topic` objects, used for publish-subscribe communication
-
-The following topics are addressed here:
-
-* link:#giotd[To Create a Connection Factory or Destination Resource]
-* link:#giosx[To List JMS Resources]
-* link:#giouw[To Delete a Connection Factory or Destination Resource]
-
-The subcommands in this section can be used to administer both the
-connection factory resources and the destination resources. For
-information on JMS service support of connection pooling and failover,
-see "link:../ha-administration-guide/jms.html#GSHAG00213[Connection Failover]" in GlassFish Server Open
-Source Edition High Availability Administration Guide. For instructions
-on administering physical destinations, see link:#ablkj[Administering
-JMS Physical Destinations].
-
-[[giotd]][[GSADG00490]][[to-create-a-connection-factory-or-destination-resource]]
-
-To Create a Connection Factory or Destination Resource
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-For each JMS connection factory that you create, GlassFish Server
-creates a connector connection pool and connector resource. For each JMS
-destination that you create, GlassFish Server creates a connector admin
-object resource. If you delete a JMS resource, GlassFish Server
-automatically deletes the connector resources.
-
-Use the `create-jms-resource` command in remote `asadmin` mode to create
-a JMS connection factory resource or a destination resource.
-
-
-[TIP]
-=======================================================================
-
-To specify the `addresslist` property (in the format
-`host:mqport,host2:mqport,host3:mqport`) for the
-`asadmin create-jms-resource` command, escape the : by using `\\`. For
-example, `host1\\:mqport,host2\\:mqport,host3\\:mpqport`. For more
-information about using escape characters, see the
-olink:GSRFM00263[`asadmin`(1M)] help page.
-
-=======================================================================
-
-
-To update a JMS connection factory, use the `set` subcommand for the
-underlying connector connection pool, See link:connectors.html#gioti[To
-Update a Connector Connection Pool].
-
-To update a destination, use the `set` subcommand for the admin object
-resource. See link:connectors.html#giots[To Update an Administered
-Object].
-
-1.  Ensure that the server is running. +
-Remote `asadmin` subcommands require a running server.
-2.  Create a JMS resource by using the
-link:../reference-manual/create-jms-resource.html#GSRFM00040[`create-jms-resource`] command. +
-Information about the properties for the subcommand is included in this
-help page.
-3.  If needed, restart the server. +
-Some properties require server restart. See
-link:overview.html#ghciy[Configuration Changes That Require Restart]. If
-your server needs to be restarted, see link:domains.html#ginqj[To Restart
-a Domain].
-
-[[GSADG00275]][[giovy]]
-
-
-Example 17-5 Creating a JMS Connection Factory
-
-This example creates a connection factory resource of type
-`jakarta.jms.ConnectionFactory` whose JNDI name is
-`jms/DurableConnectionFactory`. The `ClientId` property sets a client ID
-on the connection factory so that it can be used for durable
-subscriptions. The JNDI name for a JMS resource customarily includes the
-`jms/` naming subcontext.
-
-[source,oac_no_warn]
-----
-asadmin> create-jms-resource --restype jakarta.jms.ConnectionFactory
---description "connection factory for durable subscriptions"
---property ClientId=MyID jms/DurableConnectionFactory
-Command create-jms-resource executed successfully.
-----
-
-[[GSADG00276]][[giovn]]
-
-
-Example 17-6 Creating a JMS Destination
-
-This example creates a destination resource whose JNDI name is
-`jms/MyQueue`.
-
-[source,oac_no_warn]
-----
-asadmin> create-jms-resource --restype jakarta.jms.Queue 
---property Name=PhysicalQueue jms/MyQueue
-Command create-jms-resource executed successfully.
-----
-
-[[GSADG1020]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-jms-resource` at the command line.
-
-[[giosx]][[GSADG00491]][[to-list-jms-resources]]
-
-To List JMS Resources
-^^^^^^^^^^^^^^^^^^^^^
-
-Use the `list-jms-resources` subcommand in remote `asadmin` mode to list
-the existing connection factory and destination resources.
-
-1.  Ensure that the server is running. +
-Remote `asadmin` subcommands require a running server.
-2.  List the existing JMS resources by using the
-link:../reference-manual/list-jms-resources.html#GSRFM00177[`list-jms-resources`] subcommand.
-
-[[GSADG00277]][[giovz]]
-
-
-Example 17-7 Listing All JMS Resources
-
-This example lists all the existing JMS connection factory and
-destination resources.
-
-[source,oac_no_warn]
-----
-asadmin> list-jms-resources
-jms/Queue
-jms/ConnectionFactory
-jms/DurableConnectionFactory
-jms/Topic
-Command list-jms-resources executed successfully
-----
-
-[[GSADG00278]][[giovq]]
-
-
-Example 17-8 Listing a JMS Resources of a Specific Type
-
-This example lists the resources for the resource type `javax`.
-
-[source,oac_no_warn]
-----
-asadmin> list-jms-resources --restype jakarta.jms.TopicConnectionFactory 
-jms/DurableTopicConnectionFactory 
-jms/TopicConnectionFactory 
-Command list-jms-resources executed successfully.
-----
-
-[[GSADG1021]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-jms-resources` at the command line.
-
-[[giouw]][[GSADG00492]][[to-delete-a-connection-factory-or-destination-resource]]
-
-To Delete a Connection Factory or Destination Resource
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `delete-jms-resource` subcommand in remote `asadmin` mode to
-remove the specified connection factory or destination resource.
-
-[[GSADG1022]]
-
-Before You Begin
-
-Ensure that you remove all references to the specified JMS resource
-before running this subcommand.
-
-1.  Ensure that the server is running. +
-Remote `asadmin` subcommands require a running server.
-2.  List the existing JMS resources by using the
-link:../reference-manual/list-jms-resources.html#GSRFM00177[`list-jms-resources`] subcommand.
-3.  Delete the JMS resource by using the
-link:../reference-manual/delete-jms-resource.html#GSRFM00092[`delete-jms-resource`] subcommand.
-
-[[GSADG00279]][[giovi]]
-
-
-Example 17-9 Deleting a JMS Resource
-
-This example deletes the `jms/Queue` resource.
-
-[source,oac_no_warn]
-----
-asadmin> delete-jms-resource jms/Queue
-Command delete-jms-resource executed successfully
-----
-
-[[GSADG1023]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-jms-resource` at the command line.
-
-[[ablkj]][[GSADG00599]][[administering-jms-physical-destinations]]
-
-Administering JMS Physical Destinations
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Messages are delivered for routing and delivery to consumers by using
-physical destinations in the JMS provider. A physical destination is
-identified and encapsulated by an administered object (such as a `Topic`
-or `Queue` destination resource) that an application component uses to
-specify the destination of messages it is producing and the source of
-messages it is consuming. For instructions on configuring a destination
-resource, see link:#giotd[To Create a Connection Factory or Destination
-Resource].
-
-If a message-driven bean is deployed and the physical destination it
-listens to does not exist, GlassFish Server automatically creates the
-physical destination and sets the value of the `maxNumActiveConsumers`
-property to `-1`. However, it is good practice to create the physical
-destination beforehand. The first time that an application accesses a
-destination resource, Message Queue automatically creates the physical
-destination specified by the Name property of the destination resource.
-This automatically created physical destination is temporary and expires
-after a period specified by a Message Queue configuration property,
-provided that there are no messages in it and no message producers or
-consumers connected to it.
-
-The following topics are addressed here:
-
-* link:#gioue[To Create a JMS Physical Destination]
-* link:#gioyp[To List JMS Physical Destinations]
-* link:#giowx[To Purge Messages From a Physical Destination]
-* link:#giouv[To Delete a JMS Physical Destination]
-
-[[gioue]][[GSADG00493]][[to-create-a-jms-physical-destination]]
-
-To Create a JMS Physical Destination
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-For production purposes, always create physical destinations. During the
-development and testing phase, however, this step is not required. Use
-the `create-jmsdest` subcommand in remote `asadmin` mode to create a
-physical destination.
-
-Because a physical destination is actually a Message Queue object rather
-than a server object, you use Message Queue broker commands to update
-properties. For information on Message Queue properties, see the
-link:../../openmq/mq-admin-guide/toc.html#GMADG[Open Message Queue Administration Guide].
-
-1.  Ensure that the server is running. +
-Remote `asadmin` subcommands require a running server.
-2.  Create a JMS physical destination by using the
-link:../reference-manual/create-jmsdest.html#GSRFM00038[`create-jmsdest`] subcommand. +
-Information about the properties for the subcommand is included in this
-help page.
-3.  If needed, restart the server. +
-Some properties require server restart. See
-link:overview.html#ghciy[Configuration Changes That Require Restart]. If
-your server needs to be restarted, see link:domains.html#ginqj[To Restart
-a Domain].
-
-[[GSADG00280]][[gioxt]]
-
-
-Example 17-10 Creating a JMS Physical Destination
-
-This example creates a queue named `PhysicalQueue`.
-
-[source,oac_no_warn]
-----
-asadmin> create-jmsdest --desttype queue --property 
-User=public:Password=public PhysicalQueue
-Command create-jmsdest executed successfully.
-----
-
-[[GSADG1024]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-jmsdest` at the command line.
-
-[[gioyp]][[GSADG00494]][[to-list-jms-physical-destinations]]
-
-To List JMS Physical Destinations
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `list-jmsdest` subcommand in remote `asadmin` mode to list the
-existing JMS physical destinations.
-
-1.  Ensure that the server is running. +
-Remote `asadmin` subcommands require a running server.
-2.  List the existing JMS physical destinations by using the
-link:../reference-manual/list-jmsdest.html#GSRFM00175[`list-jmsdest`] subcommand.
-
-[[GSADG00281]][[gioxo]]
-
-
-Example 17-11 Listing JMS Physical Destinations
-
-This example lists the physical destinations for the default server
-instance.
-
-[source,oac_no_warn]
-----
-asadmin> list-jmsdest
-PhysicalQueue queue {} 
-PhysicalTopic topic {}
-Command list-jmsdest executed successfully.
-----
-
-[[GSADG1025]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-jmsdest` at the command line.
-
-[[giowx]][[GSADG00495]][[to-purge-messages-from-a-physical-destination]]
-
-To Purge Messages From a Physical Destination
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `flush-jmsdest` subcommand in remote `asadmin` mode to purge the
-messages from a physical destination in the specified target's JMS
-service configuration.
-
-1.  Ensure that the server is running. +
-Remote `asadmin` subcommands require a running server.
-2.  Purge messages from the a JMS physical destination by using the
-link:../reference-manual/flush-jmsdest.html#GSRFM00136[`flush-jmsdest`] subcommand.
-3.  If needed, restart the server. +
-Some properties require server restart. See
-link:overview.html#ghciy[Configuration Changes That Require Restart]. If
-your server needs to be restarted, see link:domains.html#ginqj[To Restart
-a Domain].
-
-[[GSADG00282]][[giows]]
-
-
-Example 17-12 Flushing Messages From a JMS Physical Destination
-
-This example purges messages from the queue named `PhysicalQueue`.
-
-[source,oac_no_warn]
-----
-asadmin> flush-jmsdest --desttype queue PhysicalQueue
-Command flush-jmsdest executed successfully
-----
-
-[[GSADG1026]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help flush-jmsdest` at the command line.
-
-[[giouv]][[GSADG00496]][[to-delete-a-jms-physical-destination]]
-
-To Delete a JMS Physical Destination
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `delete-jmsdest` subcommand in remote `asadmin` mode to remove
-the specified JMS physical destination.
-
-1.  Ensure that the server is running. +
-Remote `asadmin` subcommands require a running server.
-2.  List the existing JMS physical destinations by using the
-link:../reference-manual/list-jmsdest.html#GSRFM00175[`list-jmsdest`] subcommand.
-3.  Delete the physical resource by using the
-link:../reference-manual/delete-jmsdest.html#GSRFM00090[`delete-jmsdest`] subcommand.
-
-[[GSADG00283]][[gioxx]]
-
-
-Example 17-13 Deleting a Physical Destination
-
-This example deletes the queue named `PhysicalQueue`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-jmsdest --desttype queue PhysicalQueue
-Command delete-jmsdest executed successfully
-----
-
-[[GSADG1027]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-jmsdest` at the command line.
-
-[[gkxgk]][[GSADG00600]][[special-situations-when-using-the-jms-service]]
-
-Special Situations When Using the JMS Service
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-As mentioned earlier, Message Queue, through the built-in `jmsra`
-resource adapter, is tightly integrated with GlassFish Server to provide
-JMS messaging managed through a rich set of `asadmin` subcommands and
-Administration Console pages to simplify JMS messaging administration
-tasks. In most instances, this tight integration is transparent and
-automatic, requiring no special effort on the part of an administrator.
-In certain special situations, though, an administrator must perform a
-task such a setting a Message Queue broker property or a GlassFish
-object attribute to enable or disable a capability of the integration.
-The topics in this section describe these situations.
-
-Restarting an Embedded or Local Broker That Has Failed::
-  Because the JMS service, not Message Queue, manages the lifecycle of
-  brokers acting as Embedded and Local JMS hosts, do not use the
-  `imqbrokerd` Message Queue utility to start such a broker that has
-  failed. Instead, restart the GlassFish instance that the broker is
-  servicing.
-Changing the Admin User Password for an Embedded or Local Broker::
-  Follow these steps to change the `admin` user password for an Embedded
-  or Local broker: +
-  1.  [[CHDDHDIE]] +
-  Make sure the broker is running.
-  2.  [[CHDHDFAH]] +
-  Use the `imqusermgr` Message Queue utility to change the password of
-  the `admin` user.
-  3.  [[CHDCJEFG]] +
-  Edit the configuration of the JMS host, changing the password of the
-  `admin` user to the new password.
-  4.  [[CHDFJECE]] +
-  Restart the GlassFish instance that the broker is servicing. +
-  When changing the password for the brokers in a broker cluster, first
-  perform steps link:#CHDDHDIE[1] and link:#CHDHDFAH[2] on each broker.
-  Then, perform step link:#CHDCJEFG[3]. Finally, perform
-  step link:#CHDFJECE[4] on each broker.
-Using SSL to Connect to an Oracle Internet Directory (OID) or Oracle
-Virtual Directory (OVD) User Respository::
-  When using SSL to connect to an OID or OVD user repository, you must
-  set the `imq.user_repository.ldap.ssl.socketfactory` Message Queue
-  broker property to
-  `com.sun.enterprise.security.auth.realm.ldap.CustomSocketFactory`.
-
-[[gipnh]][[GSADG00601]][[troubleshooting-the-jms-service]]
-
-Troubleshooting the JMS Service
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-If you encounter problems, consider the following:
-
-* Use the link:../reference-manual/jms-ping.html#GSRFM00144[`jms-ping`] subcommand to confirm that the
-Message Queue broker is running.
-* View the GlassFish Server log file. For `server`, the Domain
-Administrations Server (DAS), the log is available at
-domain-dir`/logs/server.log`; for other GlassFish instances, the log is
-available at
-as-install`/nodes/`node-name`/`instance-name`/logs/server.log`. +
-If the log file indicates that a Message Queue broker acting as a Remote
-JMS host did not respond to a message, stop the broker and then restart
-it.
-* View the broker log. For a broker associated with the Domain
-Administration Server (DAS), the log is available at
-domain-dir`/imq/instances/imqbroker/log/log.txt`; for brokers associated
-with other GlassFish instances, the log is available at
-as-install`/nodes/`node-name`/`instance-name`/imq/instances/`mq-instance-name`/log/log.txt`.
-* For Remote type JMS hosts, be sure to start Message Queue brokers
-first, then GlassFish Server instances.
-* If all Message Queue brokers are down, it can take up to 30 minutes
-for GlassFish Server to go down or up when you are using the default
-values in JMS. You can change the default values for this timeout. For
-example: +
-[source,oac_no_warn]
-----
-asadmin set domain1.jms-service.reconnect-interval-in-seconds=5
-----
-
-[[gbtvg]][[GSADG00602]][[using-the-generic-resource-adapter-for-jms-to-integrate-supported-external-jms-providers]]
-
-Using the Generic Resource Adapter for JMS to Integrate Supported External JMS Providers
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-GlassFish Server supports the integration and use of Oracle WebLogic JMS
-and IBM WebSphere MQ JMS providers through the use of the Generic
-Resource Adapter for JMS (GenericJMSRA). This Java EE connector 1.5
-resource adapter can wrap the JMS client library of Oracle WebLogic JMS
-and IBM WebSphere MQ and make it available for use by GlassFish. The
-adapter is a `.rar` archive that can be deployed and configured using
-GlassFish Server administration tools.
-
-The following topics are addressed here:
-
-* link:#gkkvc[Configuring GenericJMSRA for Supported External JMS
-Providers]
-* link:#gkkuy[Using GenericJMSRA with WebLogic JMS]
-* link:#gkslb[Using GenericJMSRA with IBM WebSphere MQ]
-
-[[gkkvc]][[GSADG00777]][[configuring-genericjmsra-for-supported-external-jms-providers]]
-
-Configuring GenericJMSRA for Supported External JMS Providers
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-GenericJMSRA has three main properties that need to be configured:
-`SupportXA`, `DeliveryType`, and `ProviderIntegrationMode`. The values
-that need to be set for them depends on the capabilities of the JMS
-provider being used, as follows:
-
-* `SupportXA` — indicates whether the JMS provider supports XA or not.
-* `DeliveryType` — indicates whether an MDB should use a
-`ConnectionConsumer` or `Consumer.receive()` when consuming messages.
-* `ProviderIntegrationMode` — indicates what mode of integration is
-required. The available integration modes are jndi and javabean. Some
-JMS providers support only one integration mode while others may offer
-the choice of both
-
-** If jndi is specified, then the resource adapter will obtain JMS
-connection factories and destinations from the JMS provider's JNDI
-repository.
-
-** If javabean is specified then the resource adapter will obtain JMS
-connection factories and destinations by instantiating the appropriate
-classes directly. +
-Which option is specified determines which other properties need to be
-set.
-
-[[giosy]][[GSADG00497]][[to-deploy-and-configure-genericjmsra]]
-
-To Deploy and Configure GenericJMSRA
-++++++++++++++++++++++++++++++++++++
-
-Before deploying GenericJMSRA, JMS client libraries must be made
-available to GlassFish Server. For some JMS providers, client libraries
-might also include native libraries. In such cases, these native
-libraries must be made available to any GlassFish Server JVMs.
-
-1.  Download the `genericra.rar` archive.
-2.  Deploy GenericJMSRA the same way you would deploy a connector
-module. +
-See "link:../application-deployment-guide/deploying-applications.html#GSDPG00069[Deploying a Connector Module]" in GlassFish Server
-Open Source Edition Application Deployment Guide.
-3.  Configure the resource adapter's properties. +
-See link:#gbtvu[GenericJMSRA Configuration Properties].
-4.  Create a connector connection pool. +
-See link:connectors.html#gioce[To Create a Connector Connection Pool].
-5.  Create a connector resource. +
-See link:connectors.html#giogt[To Create a Connector Resource].
-6.  Create an administered object resource. +
-See link:connectors.html#giolr[To Create an Administered Object].
-
-[[gbtvu]][[GSADG00674]][[genericjmsra-configuration-properties]]
-
-GenericJMSRA Configuration Properties
-+++++++++++++++++++++++++++++++++++++
-
-The following table describes the properties that can be set to when
-configuring the resource adapter.
-
-[width="100%",cols="28%,19%,14%,39%",options="header",]
-|=======================================================================
-|Property Name |Valid Values |Default Value |Description
-|`SupportsXA` |`true/false` |false |Specifies whether the JMS client
-supports XA transactions.
-
-|`DeliveryType` a|
-`Synchronous/`
-
-`Asynchronous`
-
- |Asynchronous |Specifies whether an MDB should use a
-`ConnectionConsumer` (Asynchronous) or `consumer.receive()`
-(Synchronous) when consuming messages.
-
-|`QueueConnectionFactoryClassName` |A valid class name |None |Class name
-of `jakarta.jms.QueueConnectionFactory` implementation of the JMS client.
-This class must be made available on the application server classpath.
-Used if `ProviderIntegrationMode` is `javabean`.
-
-|`TopicConnectionFactoryClassName` |A valid class name |None |Class name
-of `jakarta.jms.TopicConnectionFactory` implementation of the JMS client.
-This class must be made available on the application server classpath.
-Used if `ProviderIntegrationMode` is specified as `javabean`.
-
-|`XAConnectionFactoryClassName` |A valid class name |None |Class name of
-`jakarta.jms.ConnectionFactory` implementation of the JMS client. This
-class must be made available on the application server classpath. Used
-if `ProviderIntegrationMode` is specified as `javabean`.
-
-|`XAQueueConnectionFactoryClassName` |A valid class name |None |Class
-name of `jakarta.jms.``XAQueueConnectionFactory` implementation of the JMS
-client. This class must be made available on the application server
-classpath. Used if `ProviderIntegrationMode` is specified as `javabean`.
-
-|`XATopicConnectionFactoryClassName` |A valid class name |None |Class
-name of `jakarta.jms.``XATopicConnectionFactory` implementation of the JMS
-client. This class must be made available on the application server
-classpath. Used if `ProviderIntegrationMode` is `javabean`.
-
-|`TopicClassName` |A valid class name |None |Class Name of
-`jakarta.jms.Topic` implementation of the JMS client. This class must be
-made available on the application server classpath. Used if
-`ProviderIntegrationMode` is `javabean`.
-
-|`QueueClassName` |A valid class name |None |Class Name of
-`jakarta.jms.Queue` implementation of the JMS client. This class must be
-made available on the application server classpath. Used if
-`ProviderIntegrationMode` is specified as a `javabean`.
-
-|`ConnectionFactoryProperties` |Name value pairs separated by comma
-|None |Specifies the `javabean` property names and values of the
-`ConnectionFactory` of the JMS client. Required only if
-`ProviderIntegrationMode` is `javabean`.
-
-|`JndiProperties` |Name value pairs separated by comma |None |Specifies
-the JNDI provider properties to be used for connecting to the JMS
-provider's JNDI. Used only if `ProviderIntegrationMode` is `jndi`.
-
-|`CommonSetterMethodName` |Method name |None |Specifies the common
-setter method name that some JMS vendors use to set the properties on
-their administered objects. Used only if `ProviderIntegrationMode` is
-`javabean`. For example, in the case of Message Queue, this would be
-`setProperty`.
-
-|`UserName` |Name of the JMS user |None |User name to connect to the JMS
-Provider.
-
-|`Password` |Password for the JMS user |None |Password to connect to the
-JMS provider.
-
-|`RMPolicy` |`ProviderManaged` or `OnePerPhysicalConnection`
-|`Provider``Managed` a|
-The `isSameRM` method on an `XAResource` is used by the Transaction
-Manager to determine if the Resource Manager instance represented by two
-`XAResources` are the same. When `RMPolicy` is set to `ProviderManaged`
-(the default value), the JMS provider is responsible for determining the
-`RMPolicy` and the `XAResource` wrappers in GenericJMSRA merely delegate
-the `isSameRM` call to the JMS provider's XA resource implementations.
-This should ideally work for most JMS providers.
-
-Some `XAResource` implementations such as WebSphere MQ rely on a
-resource manager per physical connection and this causes issues when
-there is inbound and outbound communication to the same queue manager in
-a single transaction (for example, when an MDB sends a response to a
-destination). When `RMPolicy` is set to `OnePerPhysicalConnection`, the
-XAResource wrapper implementation's `isSameRM` in GenericJMSRA would
-check if both the `XAResources` use the same physical connection, before
-delegating to the wrapped objects.
-
-|=======================================================================
-
-
-[[gbtwu]][[GSADG00675]][[connection-factory-properties]]
-
-Connection Factory Properties
-+++++++++++++++++++++++++++++
-
-`ManagedConnectionFactory` properties are specified when a
-`connector-connection-pool` is created. All the properties specified
-while creating the resource adapter can be overridden in a
-`ManagedConnectionFactory`. Additional properties available only in
-`ManagedConnectionFactory` are given below.
-
-[width="181%",cols="20%,8%,49%,23%",options="header",]
-|=======================================================================
-|Property Name |Valid Value |Default Value |Description
-|`ClientId` |A valid client ID |None |`ClientID` as specified by JMS 1.1
-specification.
-
-|`ConnectionFactoryJndiName` |JNDI Name |None |JNDI name of the
-connection factory bound in the JNDI tree of the JMS provider. The
-administrator should provide all connection factory properties (except
-`clientID`) in the JMS provider itself. This property name will be used
-only if `ProviderIntegratinMode` is `jndi`.
-
-|`ConnectionValidationEnabled` |true/false |false |If set to true, the
-resource adapter will use an exception listener to catch any connection
-exception and will send a `CONNECTION_ERROR_OCCURED` event to
-application server.
-|=======================================================================
-
-
-[[gbtxa]][[GSADG00676]][[destination-properties]]
-
-Destination Properties
-++++++++++++++++++++++
-
-Properties in this section are specified when a destination (queue or
-topic) is created. All the resource adapter properties can be overridden
-in a destination. Additional properties available only in the
-destination are given below.
-
-[width="100%",cols="31%,14%,11%,44%",options="header",]
-|=======================================================================
-|Property Name |Valid Value |Default Value |Description
-|`DestinationJndiName` |JNDI Name |None |JNDI name of the destination
-bound in the JNDI tree of the JMS provider. The Administrator should
-provide all properties in the JMS provider itself. This property name
-will be used only if `ProviderIntegrationMode` is `jndi`.
-
-|`DestinationProperties` |Name value pairs separated by a comma |None
-|Specifies the `javabean` property names and values of the destination
-of the JMS client. Required only if `ProviderIntegrationMode` is
-`javabean`.
-|=======================================================================
-
-
-[[gbtvf]][[GSADG00677]][[activation-spec-properties]]
-
-Activation Spec Properties
-++++++++++++++++++++++++++
-
-Properties in this section are specified in the GlassFish Server
-`glassfish-ejb-jar.xml` deployment descriptor of an MDB as
-`activation-config-properties`. All the resource adapter properties can
-be overridden in an Activation Spec. Additional properties available
-only in ActivationSpec are given below.
-
-[width="100%",cols="43%,14%,13%,30%",options="header",]
-|=======================================================================
-|Property Name |Valid Value |Default Value |Description
-|`MaxPoolSize` |An integer |8 |Maximum size of server session pool
-internally created by the resource adapter for achieving concurrent
-message delivery. This should be equal to the maximum pool size of MDB
-objects.
-
-|`MaxWaitTime` |An integer |3 |The resource adapter will wait for the
-time in seconds specified by this property to obtain a server session
-from its internal pool. If this limit is exceeded, message delivery will
-fail.
-
-|`SubscriptionDurability` |Durable or Non-Durable |Non-Durable
-|`SubscriptionDurability` as specified by JMS 1.1 specification.
-
-|`SubscriptionName` | + |None |`SubscriptionName` as specified by JMS
-1.1 specification.
-
-|`MessageSelector` |A valid message selector |None |`MessageSelector` as
-specified by JMS 1.1 specification.
-
-|`ClientID` |A valid client ID |None |`ClientID` as specified by JMS 1.1
-specification.
-
-|`ConnectionFactoryJndiName` |A valid JNDI Name |None |JNDI name of
-connection factory created in JMS provider. This connection factory will
-be used by resource adapter to create a connection to receive messages.
-Used only if `ProviderIntegrationMode` is configured as `jndi`.
-
-|`DestinationJndiName` |A valid JNDI Name |None |JNDI name of
-destination created in JMS provider. This destination will be used by
-resource adapter to create a connection to receive messages from. Used
-only if `ProviderIntegrationMode` is configured as `jndi`.
-
-|`DestinationType` |`jakarta.jms.Queue` or `jakarta.jms.Topic` |Null |Type
-of the destination the MDB will listen to.
-
-|`DestinationProperties` |Name-value pairs separated by comma |None
-|Specifies the `javabean` property names and values of the destination
-of the JMS client. Required only if `ProviderIntegrationMode` is
-`javabean`.
-
-|`RedeliveryAttempts` |integer | + |Number of times a message will be
-delivered if a message causes a runtime exception in the MDB.
-
-|`Redelivery``Interval` |time in seconds | + |Interval between repeated
-deliveries, if a message causes a runtime exception in the MDB.
-
-|`SendBadMessagesToDMD` |true/false |False |Indicates whether the
-resource adapter should send the messages to a dead message destination,
-if the number of delivery attempts is exceeded.
-
-|`DeadMessageDestinationJndiName` |a valid JNDI name. |None |JNDI name
-of the destination created in the JMS provider. This is the target
-destination for dead messages. This is used only if
-`ProviderIntegrationMode` is `jndi`.
-
-|`DeadMessageDestinationClassName` |class name of destination object.
-|None |Used if `ProviderIntegrationMode` is `javabean`.
-
-|`DeadMessageDestinationProperties` |Name Value Pairs separated by comma
-|None |Specifies the `javabean` property names and values of the
-destination of the JMS client. This is required only if
-`ProviderIntegrationMode` is `javabean`.
-
-|`DeadMessageConnectionFactoryJndiName` |a valid JNDI name |None |JNDI
-name of the connection factory created in the JMS provider. This is the
-target connection factory for dead messages. This is used only if
-`ProviderIntegrationMode` is `jndi`.
-
-|`DeadMessageDestinationType` |queue or topic destination |None |The
-destination type for dead messages.
-
-|`ReconnectAttempts` |integer |0 |Number of times a reconnect will be
-attempted in case exception listener catches an error on connection.
-
-|`ReconnectInterval` |time in seconds |0 |Interval between reconnects.
-|=======================================================================
-
-
-[[gkkuy]][[GSADG00778]][[using-genericjmsra-with-weblogic-jms]]
-
-Using GenericJMSRA with WebLogic JMS
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can configure GenericJMSRA to enable applications running in
-GlassFish Server to send messages to, and receive messages from, Oracle
-WebLogic JMS.
-
-GenericJMSRA should be used in conjunction with the WebLogic Server Thin
-T3 Client. Due to the nature of this client, messages exchanged between
-GlassFish Server and WebLogic Server cannot be sent or received in XA
-transactions. There is also only limited support for asynchronous
-receipt of messages in an MDB, as described in detail in
-link:#gkkvz[Limitations When Using GenericJMSRA with WebLogic JMS].
-
-The following topics are addressed here:
-
-* link:#gkmeb[Deploy the WebLogic Thin T3 Client JAR in GlassFish
-Server]
-* link:#gkmek[Configure WebLogic JMS Resources for Integration]
-* link:#gkmee[Create a Resource Adapter Configuration for GenericJMSRA
-to Work With WebLogic JMS]
-* link:#gkkxz[Deploy the GenericJMSRA Resource Archive]
-* link:#gkkwq[Configuring an MDB to Receive Messages from WebLogic JMS]
-* link:#gknjj[Accessing Connections and Destinations Directly]
-* link:#gkkvz[Limitations When Using GenericJMSRA with WebLogic JMS]
-* link:#gktfi[Configuration Reference of GenericJMSRA Properties for
-WebLogic JMS]
-
-[[gkmeb]][[GSADG00678]][[deploy-the-weblogic-thin-t3-client-jar-in-glassfish-server]]
-
-Deploy the WebLogic Thin T3 Client JAR in GlassFish Server
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-WebLogic Server provides several different clients for use by standalone
-applications that run outside of WebLogic Server. These client are
-summarized in
-"http://www.oracle.com/pls/as1111/lookup?id=SACLT117[Overview of
-Stand-alone Clients"] in Programming Stand-alone Clients for Oracle
-WebLogic Server. When connecting from GlassFish Server to WebLogic JMS
-resources you must use the WebLogic Thin T3 client,
-`wlthint3client.jar`.
-
-There are a couple of methods to deploy the WebLogic Thin T3 client in
-GlassFish Server and make it available to GenericJMSRA:
-
-* To make the Thin T3 client available to all applications, copy the
-`wlthint3client.jar` to the as-install`/lib` directory under your
-GlassFish Server installation. The Thin T3 client can be found in a
-WebLogic Server installation in a directory similar to
-MW_HOME`/server/lib`.
-* It is also possible to deploy the Thin T3 client in a less global
-manner, so that it is specific to an individual application. For
-information on how to do this, see
-"link:../application-development-guide/class-loaders.html#GSDVG00099[Application-Specific Class Loading]" in GlassFish
-Server Open Source Edition Application Development Guide.
-
-[[gkmek]][[GSADG00679]][[configure-weblogic-jms-resources-for-integration]]
-
-Configure WebLogic JMS Resources for Integration
-++++++++++++++++++++++++++++++++++++++++++++++++
-
-If you need to configure the necessary WebLogic JMS resources on the
-WebLogic Server from which you want to access messages using GlassFish
-Server, then follow the instructions in the WebLogic Server
-documentation for configuring the necessary resources, such as
-destinations, and connection factories.
-
-* JMS System Module Configuration
-* Queue and Topic Destination Configuration
-* Connection Factory Configuration
-
-The example code snippets in this section refer to a WebLogic JMS
-connection factory named `WLoutboundQueueFactory` and queue destination
-named `WLoutboundQueue`. For conceptual overviews on configuring
-WebLogic JMS resources, refer to
-"http://www.oracle.com/pls/as1111/lookup?id=JMSAD123[Understanding JMS
-Resource Configuration]" in Configuring and Managing JMS for Oracle
-WebLogic Server. For detailed instructions on configuring WebLogic JMS
-resources, refer to
-"http://www.oracle.com/pls/as1111/lookup?id=WLACH01854[Configure JMS
-system modules and add JMS resources]" in the WebLogic Administration
-Console Online Help.
-
-[[gkmee]][[GSADG00680]][[create-a-resource-adapter-configuration-for-genericjmsra-to-work-with-weblogic-jms]]
-
-Create a Resource Adapter Configuration for GenericJMSRA to Work With WebLogic JMS
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-When you deploy GenericJMSRA, you also need to create a resource adapter
-configuration in GlassFish Server. You can do this using either the
-Administration Console or the `asadmin` command. If you use
-theAdministration Console then you need deploy the GenericJMSRA resource
-archive first. Here's an example using `asadmin`:
-
-[source,oac_no_warn]
-----
-asadmin create-resource-adapter-config --host localhost --port 4848 --property
-SupportsXA=false:DeliveryType=Synchronous:ProviderIntegrationMode
-                          =jndi:JndiProperties=java.naming.factory.initial\
-                          =weblogic.jndi.WLInitialContextFactory,java.naming.provider.url\
-                          =t3\://localhost\:7001,java.naming.factory.url.pkgs\
-                          =weblogic.corba.client.naming genericra
-----
-
-This creates a resource adapter configuration with the name `genericra`,
-and Oracle recommends not changing the default name. The resource
-adapter configuration is configured with the properties specified using
-the `--properties` argument; multiple properties are configured as a
-colon-separated list of name-value pairs that are entered as a single
-line. You will also need to change the host and port that WebLogic
-Server is running on to suit your installation.
-
-In this example, the following properties are configured:
-
-[width="100%",cols="28%,72%",options="header",]
-|===============================================================
-|Property |Value
-|`SupportsXA` |`false`
-|`DeliveryType` |`Synchronous`
-|`ProviderIntegrationMode` |`jndi`
-|`JndiProperties` a|
-[source,oac_no_warn]
-----
-java.naming.factory.initial
-=weblogic.jndi.WLInitialContextFactory,java.naming.provider.url
-=t3://localhost:7001,java.naming.factory.url.pkgs
-=weblogic.corba.client.naming
-
-(replace "localhost:7001" with the host:port of WebLogic Server)
-----
-
-|===============================================================
-
-
-You must use the same values for `SupportsXA`, `DeliveryType` and
-`ProviderIntegrationMode` as the required values that are used in this
-table. The `JndiProperties` value must be set to a list of JNDI
-properties needed for connecting to WebLogic JNDI.
-
-
-[NOTE]
-=======================================================================
-
-When using `asadmin` you need to escape each `=` and any `:` characters
-by prepending a backward slash `\`. The escape sequence is not necessary
-if the configuration is performed through the Administration Console.
-
-=======================================================================
-
-
-For a description of all the resource adapter properties that are
-relevant for WebLogic JMS, see the link:#gktfi[Configuration Reference
-of GenericJMSRA Properties for WebLogic JMS].
-
-[[gkkxz]][[GSADG00498]][[deploy-the-genericjmsra-resource-archive]]
-
-Deploy the GenericJMSRA Resource Archive
-++++++++++++++++++++++++++++++++++++++++
-
-1.  Download the GenericJMSRA resource archive (genericra.rar).
-2.  Deploy the resource adapter. You can do this using either the
-Administration Console or the `asadmin` deploy command. Here's an
-example using the `asadmin` deploy command: +
-[source,oac_no_warn]
-----
-$ asadmin deploy --user admin --password adminadmin
-  <location of the generic resource adapter rar file>
-----
-If you deploy the resource adapter using the Administration Console,
-then after deployment you need to create a resource adapter
-configuration as described in link:#gkmee[Create a Resource Adapter
-Configuration for GenericJMSRA to Work With WebLogic JMS].
-
-[[gkkwq]][[GSADG00499]][[configuring-an-mdb-to-receive-messages-from-weblogic-jms]]
-
-Configuring an MDB to Receive Messages from WebLogic JMS
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-In this example, all configuration information is defined in two
-deployment descriptor files: `ejb-jar.xml` and the GlassFish Server
-`glassfish-ejb-jar.xml` file. To configure a MDB to receive messages
-from WebLogic JMS, you would configure these deployment descriptor files
-as follows:
-
-1.  Configure the ejb-jar.xml deployment descriptor: +
-[source,oac_no_warn]
-----
-<ejb-jar>
-  <enterprise-beans>
-    <message-driven>
-      <ejb-name>SimpleMessageEJB</ejb-name>
-      <ejb-class>test.simple.queue.ejb.SimpleMessageBean</ejb-class>
-      <transaction-type>Container</transaction-type>
-    </message-driven>
-  </enterprise-beans>
-  <assembly-descriptor>
-    <container-transaction>
-      <method>
-        <ejb-name>SimpleMessageEJB</ejb-name>
-        <method-name>onMessage</method-name>
-        <method-params>
-          <method-param>jakarta.jms.Message</method-param>
-        </method-params>
-      </method>
-      <trans-attribute>NotSupported</trans-attribute>
-    </container-transaction>
-  </assembly-descriptor>
-</ejb-jar>
-----
-::
-
-[NOTE]
-=======================================================================
-
-If container-managed transactions are configured, then the transactional
-attribute must be set to `NotSupported`. For more information, see
-link:#gkkvz[Limitations When Using GenericJMSRA with WebLogic JMS].
-
-=======================================================================
-
-2.  Configure the glassfish-ejb-jar.xml deployment descriptor: +
-[source,oac_no_warn]
-----
-<sun-ejb-jar>
-  <enterprise-beans>
-    <ejb>
-      <ejb-name>SimpleMessageEJB</ejb-name>
-      <mdb-resource-adapter>
-        <resource-adapter-mid>genericra</resource-adapter-mid>
-        <activation-config>
-          <activation-config-property>
-            <activation-config-property-name>
-              ConnectionFactoryJndiName
-            </activation-config-property-name>
-            <activation-config-property-value>
-              jms/WLInboundQueueFactory
-            </activation-config-property-value>
-          </activation-config-property>
-          <activation-config-property>
-            <activation-config-property-name>
-              DestinationJndiName
-            </activation-config-property-name>
-            <activation-config-property-value>
-              jms/WLInboundQueue
-            </activation-config-property-value>
-          </activation-config-property>
-        </activation-config>
-      </mdb-resource-adapter>
-    </ejb>
-  </enterprise-beans>
-</sun-ejb-jar>
-----
-where: +
-The `<resource-adapter-mid>genericra</resource-adapter-mid>` element is
-used to specify the resource adapter and resource adapter configurations
-that was deployed in the link:#gkmee[Create a Resource Adapter
-Configuration for GenericJMSRA to Work With WebLogic JMS] instructions.
-It is recommended you stick to `genericra` as is used here. +
-The `activation-config` element in `glassfish-ejb-jar.xml` is the one
-which defines how and where the MDB receives messages, as follows:
-* The `ConnectionFactoryJndiName` property must be set to the JNDI name
-of the connection factory in the WebLogic JNDI store that will be used
-to receive messages. Therefore, replace `jms/WLInboundQueueFactory` in
-the example above with the JNDI name used in your environment.
-* The `DestinationJndiName` property must be set to the JNDI name of the
-destination (the queue or topic from which messages will be consumed) in
-the WebLogic JNDI store. Therefore, replace `jms/WLInboundQueue` in the
-example above with the JNDI name used in your environment. +
-For a description of all the ActivationSpec properties that are relevant
-for WebLogic JMS, see the link:#gktfi[Configuration Reference of
-GenericJMSRA Properties for WebLogic JMS]. +
-Make sure to use the appropriate WebLogic administration tools, such as
-the WebLogic Administration Console or the WebLogic Scripting Tool
-(WLST). For more information, see
-"http://www.oracle.com/pls/as1111/lookup?id=WLACH01853[Configure
-Messaging]" in WebLogic Server Administration Console Online Help and
-http://www.oracle.com/pls/as1111/lookup?id=WLSTC112[WebLogic Server WLST
-Online and Offline Command Reference].
-
-[[gknjj]][[GSADG00500]][[accessing-connections-and-destinations-directly]]
-
-Accessing Connections and Destinations Directly
-+++++++++++++++++++++++++++++++++++++++++++++++
-
-When configuring a MDB to consume messages from WebLogic JMS your code
-does not need to access the WebLogic JMS connection factory and
-destination directly. You simply define them in the activation
-configuration, as shown in link:#gkkwq[Configuring an MDB to Receive
-Messages from WebLogic JMS]. However when configuring an MDB to send
-messages, or when configuring a EJB, Servlet, or application client to
-either send or receive messages, your code needs to obtain these objects
-using a JNDI lookup.
-
-
-[NOTE]
-=======================================================================
-
-If you want configure connections and destination resources using the
-Administration Console, this is explained in the Administration Console
-online help. When using Administration Console, follow the instructions
-for creating a new Connector Connection Pool and Admin Object Resources,
-and not the instructions for creating a JMS Connection Pool and
-Destination Resources. For more information about using `asadmin` to
-create these resources, see link:connectors.html#gioce[To Create a
-Connector Connection Pool] and link:connectors.html#giogt[To Create a
-Connector Resource].
-
-=======================================================================
-
-
-1.  Looking up the connection factory and destination +
-The following code looks up a connection factory with the JNDI name
-`jms/QCFactory` and a queue with the name`jms/outboundQueue` from the
-GlassFish Server JNDI store: +
-[source,oac_no_warn]
-----
-     Context initialContect  = new InitialContext();
-     QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory) 
-          jndiContext.lookup("java:comp/env/jms/MyQCFactory");
-     Queue queue = (Queue) jndiContext.lookup("java:comp/env/jms/outboundQueue");
-----
-Note that the resources used are GlassFish Server resources, not
-WebLogic JMS resources. For every connection factory or destination that
-you want to use in the WebLogic JMS JNDI store, you need to create a
-corresponding connection factory or destination in the GlassFish Server
-JNDI store and configure the GlassFish Server object to point to the
-corresponding WebLogic JMS object.
-2.  Declaring the connection factory and destination +
-In accordance with standard Java EE requirements, these resources need
-to be declared in the deployment descriptor for the MDB, EJB or other
-component. For example, for a session bean, configure the `ejb-jar.xml`
-with `<resource-env-ref>` elements, as follows: +
-[source,oac_no_warn]
-----
-<ejb-jar>
-  <enterprise-beans>
-    <session>
-      . . .
-      <resource-env-ref>
-        <resource-env-ref-name>jms/QCFactory</resource-env-ref-name>
-        <resource-env-ref-type>jakarta.jms.QueueConnectionFactory</resource-env-ref-type>
-      </resource-env-ref>
-      <resource-env-ref>
-        <resource-env-ref-name>jms/outboundQueue</resource-env-ref-name>
-        <resource-env-ref-type>jakarta.jms.Queue</resource-env-ref-type>
-      </resource-env-ref>
-----
-3.  Create a Connector Connection Pool and Connector Resource by
-entering the following `asadmin` commands, both all in one line: +
-In order to configure a JMS Connection Factory using GenericJMSRA, a
-Connector connection pool and resource need to be created in GlassFish
-Server using names that map to the corresponding connection factory in
-the WebLogic JNDI store. +
-[source,oac_no_warn]
-----
-asadmin create-connector-connection-pool --host localhost --port 4848
-   --raname genericra --connectiondefinition jakarta.jms.QueueConnectionFactory 
-   --target server --transactionsupport LocalTransaction
-   --property ConnectionFactoryJndiName=jms/WLOutboundQueueFactory
-     qcpool
-
-asadmin create-connector-resource --host localhost --port 4848 
-    --poolname qcpool --target server jms/QCFactory
-----
-These `asadmin` commands together creates a connection factory in
-GlassFish Server and its corresponding connection pool.
-* The connection pool has the JNDI name `jms/WLoutboundQueueFactory` and
-obtains connections from a connection pool named `qcpool`.
-* The connection pool `qcpool` uses the resource adapter `genericra` and
-contains objects of type `jakarta.jms.QueueConnectionFactory`.
-* The `transactionsupport` argument is set to `LocalTransaction`, which
-specifies that the connection will be used in local transactions only.
-You can also specify `NoTransaction`. However, the default setting of
-`XATransaction` cannot be used. For more information, see
-link:#gkkvz[Limitations When Using GenericJMSRA with WebLogic JMS].
-* The connection pool is configured with the properties specified using
-the `properties` argument; multiple properties are configured as a
-colon-separated list of name-value pairs. Only one property is
-configured in this example, as follows: +
-[source,oac_no_warn]
-----
-ConnectionFactoryJndiName=jms/WLOutboundQueueFactory
-----
-The `ConnectionFactoryJndiName` property must be set to the JNDI name of
-the corresponding connection factory in the WebLogic JMS JNDI store.
-Therefore, replace `jms/WLOutboundQueueFactory` in the example above
-with the JNDI name used in your environment.
-* For a description of the `ManagedConnectionFactory` properties that
-are relevant for WebLogic JMS, see the link:#gktfi[Configuration
-Reference of GenericJMSRA Properties for WebLogic JMS].
-4.  Create a destination object that refers to a corresponding WebLogic
-JMS destination by entering the following `asadmin` command, all in one
-line: +
-[source,oac_no_warn]
-----
-asadmin create-admin-object --host localhost --port 4848 --target server 
-    --restype jakarta.jms.Queue --property DestinationJndiName=jms/WLOutboundQueue 
-    --raname genericra jms/outboundQueue
-----
-This `asadmin` command creates a destination in GlassFish Server.
-* The destination has the JNDI name `jms/outboundQueue`, uses the
-resource adapter `genericra`, and is of type `jakarta.jms.Queue`.
-* The destination is configured with the properties specified using the
-`properties` argument; multiple properties are configured as a
-colon-separated list of name-value pairs. Only one property is
-configured in this example, as follows: +
-[source,oac_no_warn]
-----
-DestinationJndiName=jms/WLOutboundQueue
-----
-The `DestinationJndiName` property must be set to the JNDI name of the
-corresponding destination in the WebLogic JMS JNDI store. Therefore,
-replace `jms/WLOutboundQueue` in the example above with the JNDI name
-used in your environment.
-* For a description of the destination properties that are relevant for
-WebLogic JMS, see the link:#gktfi[Configuration Reference of
-GenericJMSRA Properties for WebLogic JMS].
-
-[[gkkvz]][[GSADG00681]][[limitations-when-using-genericjmsra-with-weblogic-jms]]
-
-Limitations When Using GenericJMSRA with WebLogic JMS
-+++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-Due to the nature of the WebLogic T3 Thin Client there are a number of
-limitations in the way in which it can be used with GenericJMSRA.
-
-[[gknho]][[GSADG00091]][[no-support-for-xa-transactions]]
-
-No Support for XA Transactions
-
-WebLogic JMS does not support the optional JMS "Chapter 8" interfaces
-for XA transactions in a form suitable for use outside of WebLogic
-Server. Therefore, the GenericJMSRA configuration must have the
-`SupportsXA` property set to `-false`. This has a number of implications
-for the way in which applications may be used, as described in this
-section.
-
-Using a MDB to Receive Messages: Container-managed Transactions (CMT)
-
-* If container-managed transactions are used, the transactional
-attribute of a MDB should be set to `NotSupported`. No transaction will
-be started. Messages will be received in a non-transacted session with
-an acknowledgeMode of `AUTO_ACKNOWLEDGE`.
-* A transactional `Required` attribute should not be used; otherwise,
-MDB activation will fail with an exception:
-`javax.resource.ResourceException: MDB is configured to use container managed transaction. But SupportsXA is configured to false in the resource adapter.`
-
-The remaining transactional attributes are normally considered
-inappropriate for use with a MDB. If used, the following behavior will
-occur:
-
-* If the transactional attribute is `RequiresNew`, then MDB activation
-will fail with an exception:
-`javax.resource.ResourceException: MDB is configured to use container managed transaction But SupportsXA is configured to false in the resource adapter.`
-* If the transactional attribute is `Mandatory`, the MDB can be
-activated but a `TransactionRequiredException` (or similar) will always
-be thrown by the server.
-* If the transactional attribute is `Supports`, then no transaction will
-be started and the MDB will work as if `NotSupported` had been used.
-* If the transactional attribute is `Never`, then no transaction will be
-started and the MDB will work as if `NotSupported` had been used.
-
-Using a MDB to Receive Messages: Bean-managed Transactions (BMT)
-
-* If bean-managed transactions are configured in accordance with the EJB
-specification any `UserTransaction` started by the bean will have no
-effect on the consumption of messages.
-* Messages will be received in a non-transacted session with an
-acknowledgeMode of `AUTO_ACKNOWLEDGE`.
-
-Accessing Connections and Destinations Directly - Container-managed
-Transactions (CMT)
-
-When accessing connections directly (such as when sending messages from
-a MDB or an EJB) and container-managed transactions are being used, the
-connection pool's `transaction-support` property should be set to either
-`LocalTransaction` or `NoTransaction`. If the default value of
-`XATransaction` is used, an exception will be thrown at runtime when
-`createConnection()` is called. This is the case irrespective of the
-transactional attribute of the MDB or EJB. Note that MDBs must have
-their transactional attribute set to `NotSupported` as specified above;
-whereas, an EJB can use any transactional attribute.
-
-If there is no transaction in progress within the bean method (for
-example, `notSupported` is being used) then it does not make any
-difference whether the connection pool's `transaction-support` property
-is set to `LocalTransaction` or `NoTransaction`; the transactional
-behavior will be determined by the arguments to `createSession()`. If
-you want the outbound message to be sent without a transaction, call
-`createSession(false, ...)`. If you want the outbound message to be sent
-in a local transaction call
-`createSession(true, Session.SESSION_TRANSACTED)`, remembering to call
-`session.commit()` or `session.rollback()`after the message is sent.
-
-If there is a transaction in progress within the bean method (which will
-only be possible for EJBs), then setting the connection pool's
-`transaction-support` property to `LocalTransaction` or `NoTransaction`
-gives different results:
-
-* If it is set to `NoTransaction` then a non-transacted session will be
-used.
-* If it is set to `LocalTransaction` then a (local, non-XA) transacted
-session will be used, which will be committed or rolled back when the
-`UserTransaction` is committed or rolled back. In this case, calling
-`session.commit()` or `session.rollback()` will cause an exception.
-
-No Support for Redelivery Limits and Dead Message Queue
-
-Due to the lack of XA support when using WebLogic JMS, there is no
-support for GenericJMSRA's dead message queue feature, in which a
-message that has been redelivered to a MDB a defined number of times is
-sent to a dead message queue.
-
-[[gknft]][[GSADG00092]][[limited-support-for-asynchronous-receipt-of-messages-in-a-mdb]]
-
-Limited Support for Asynchronous Receipt of Messages In a MDB
-
-WebLogic JMS does not support the optional JMS "Chapter 8" interfaces
-for "Concurrent Processing of a Subscription's Messages" (that is,
-`ServerSession`, `ServerSessionPool` and `ConnectionConsumer`) in a form
-suitable for use outside of WebLogic Server. Therefore, the generic
-JMSRA configuration must set the property `DeliveryType` to
-`Synchronous`.
-
-This affects the way in which MDBs consume messages from a queue or
-topic as follows:
-
-* When messages are being received from a queue, each MDB instance will
-have its own session and consumer, and it will consume messages by
-repeatedly calling `receive(timeout)`. This allows the use of a pool of
-MDBs to process messages from the queue.
-* When messages are being received from a topic, only one MDB instance
-will be used irrespective of the configured pool size. This means that a
-pool of multiple MDBs cannot be used to share the load of processing
-messages, which may reduce the rate at which messages can be received
-and processed. +
-This restriction is a consequence of the semantics of synchronously
-consuming messages from topics in JMS: In the case of non-durable topic
-subscriptions, each consumer receives a copy of all the messages on the
-topic, so using multiple consumers would result in multiple copies of
-each message being received rather than allowing the load to be shared
-among the multiple MDBs. In the case of durable topic subscriptions,
-only one active consumer is allowed to exist at a time.
-
-[[gktfi]][[GSADG00682]][[configuration-reference-of-genericjmsra-properties-for-weblogic-jms]]
-
-Configuration Reference of GenericJMSRA Properties for WebLogic JMS
-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-The tables in this section list the properties that need to be set to
-configure the resource adapter and any activation specs, managed
-connections, and other administered objects that are relevant only when
-using GenericJMSRA to communicate with WebLogic JMS. For a complete list
-of properties, see the comprehensive table in link:#gbtvu[GenericJMSRA
-Configuration Properties]
-
-Resource Adapter Properties
-
-These properties are used to configure the resource adapter itself when
-it is deployed, and can be specified using the
-`create-resource-adapter-config` command.
-
-[width="100%",cols="28%,42%,30%",options="header",]
-|=======================================================================
-|Property Name |Required Value |Description
-|`SupportsXA` |`false` a|
-Specifies whether the JMS client supports XA transactions.
-
-Set to `false` for WebLogic JMS.
-
-|`DeliveryType` |`Synchronous` a|
-Specifies whether an MDB should use a `ConnectionConsumer`
-(Asynchronous) or `consumer.receive()` (Synchronous) when consuming
-messages.
-
-Set to `Synchronous` for WebLogic JMS.
-
-|`ProviderIntegrationMode` |`jndi` a|
-Specifies that connection factories and destinations in GlassFish's JNDI
-store are configured to refer to connection factories and destinations
-in WebLogic's JNDI store.
-
-Set to `jndi` for WebLogic JMS.
-
-|`JndiProperties` a|
-[source,oac_no_warn]
-----
-java.naming.factory.initial
-=weblogic.jndi.WLInitialContextFactory,
-java.naming.provider.url
-=t3://localhost:7001,java.naming.factory.url.pkgs
-=weblogic.corba.client.naming
-(replace localhost:7001 with
-the host:port of WebLogic Server)
-----
-
- |JNDI properties for connect to WebLogic JNDI, specified as
-comma-separated list of name=value pairs without spaces.
-
-|`UserName` |`Name of the WebLogic JMS user` |User name to connect to
-WebLogic JMS. The user name can be overridden in `ActivationSpec` and
-`ManagedConnection`. If no user name is specified anonymous connections
-will be used, if permitted.
-
-|`Password` |`Password for the WebLogic JMS user` |Password to connect
-to WebLogic JMS. The password can be overridden in `ActivationSpec` and
-`ManagedConnection`.
-
-|`LogLevel` |`Desired log level of JDK logger` |Used to specify the
-level of logging.
-|=======================================================================
-
-
-Connection Factory Properties
-
-`ManagedConnectionFactory` objects are created in the GlassFish Server
-JNDI store using the Administration Console or the
-`asadmin connector-connection-pool` command. All the properties that can
-be set on a resource adapter configuration can be overridden by setting
-them on a destination object. The properties specific to
-`ManagedConnectionFactory` objects are listed in the following table.
-
-[width="100%",cols="39%,14%,10%,37%",options="header",]
-|=======================================================================
-|Property Name |Valid Value |Default Value |Description
-|`ClientId` |A valid client ID |None |`ClientID` as specified by JMS 1.1
-specification.
-
-|`ConnectionFactoryJndiName` |A valid JNDI Name |None |JNDI name of
-connection factory in the GlassFish Server JNDI store. This connection
-factory should be configured to refer to the physical connection factory
-in the WebLogic JNDI store.
-
-|`ConnectionValidationEnabled` |`true` or `false` |FALSE |If set to
-`true`, the resource adapter will use an exception listener to catch any
-connection exception and will send a `CONNECTION_ERROR_OCCURED` event to
-GlassFish Server.
-|=======================================================================
-
-
-Destination Properties
-
-Destination (queue or topic) objects are created in the GlassFish Server
-JNDI store using the Administration Console or the
-`asadmin connector-admin-object` command. All the properties that can be
-set on a resource adapter configuration can be overridden by setting
-them on a destination object. The properties specific to destination
-objects are listed in the following table.
-
-[width="100%",cols="28%,14%,10%,48%",options="header",]
-|=======================================================================
-|Property Name |Valid Value |Default Value |Description
-|`DestinationJndiName` |A valid JNDI name |None |JNDI name of the
-destination object in the GlassFish Server JNDI store. This destination
-object should be configured to refer to the corresponding physical
-destination in the WebLogic JNDI store.
-|=======================================================================
-
-
-ActivationSpec Properties
-
-An ActivationSpec is a set of properties that configures a MDB. It is
-defined either in the MDB's GlassFish Server deployment descriptor
-`glassfish-ejb-jar.xml` using `activation-config-property` elements or
-in the MDB itself using annotation. All the resource adapter properties
-listed in the table above can be overridden in an ActivationSpec.
-Additional properties available only to a ActivationSpec are given
-below.
-
-[width="100%",cols="30%,19%,14%,37%",options="header",]
-|=======================================================================
-|Property Name |Valid Value |Default Value |Description
-|`MaxPoolSize` |An integer |8 a|
-Maximum size of server session pool internally created by the resource
-adapter for achieving concurrent message delivery. This should be equal
-to the maximum pool size of MDB objects.
-
-Only used for queues; ignored for topics, when a value of 1 is always
-used.
-
-|`SubscriptionDurability` |`Durable` or `Non-Durable` |`Non-Durable`
-|Only used for topics. Specifies whether the subscription is durable or
-non-durable.
-
-|`SubscriptionName` | + |None |Only used for topics when
-`SubscriptionDurability` is `Durable`. Specifies the name of the durable
-subscription.
-
-|`MessageSelector` |A valid message selector |None |JMS message
-selector.
-
-|`ClientID` |A valid client ID |None |JMS ClientID.
-
-|`ConnectionFactoryJndiName` |A valid JNDI Name |None |JNDI name of
-connection factory in the GlassFish Server JNDI store. This connection
-factory should be configured to refer to the physical connection factory
-in the WebLogic JNDI store.
-
-|`DestinationJndiName` |A valid JNDI Name |None |JNDI name of
-destination in the GlassFish Server JNDI store. This destination should
-be configured to refer to the physical destination in the WebLogic JNDI
-store.
-
-|`DestinationType` |`jakarta.jms.Queue` or `jakarta.jms.Topic` |Null
-|Specifies whether the configured `DestinationJndiName` refers to a
-queue or topic.
-
-|`ReconnectAttempts` |integer |0 |Number of times a reconnect will be
-attempted in case exception listener catches an error on connection.
-
-|`ReconnectInterval` |time in seconds |0 |Interval between reconnection
-attempts.
-|=======================================================================
-
-
-[[gkslb]][[GSADG00779]][[using-genericjmsra-with-ibm-websphere-mq]]
-
-Using GenericJMSRA with IBM WebSphere MQ
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can configure GenericJMSRA to enable applications running in
-GlassFish Server to send messages to, and receive messages from, IBM
-WebSphere MQ. GlassFish Serveronly supports using GenericJMSRA with
-WebSphere MQ version 6.0 and WebSphere MQ version 7.0
-
-These instructions assume that the WebSphere MQ broker and GlassFish
-Server are deployed and running on the same physical host/machine. If
-you have the WebSphere MQ broker running on a different machine and need
-to access it remotely, refer to the WebSphere MQ documentation for
-configuration details. The resource adapter configuration and other
-application server related configuration remains unchanged.
-
-The following topics are addressed here:
-
-* link:#gksiw[Preliminary Setup Procedures for WebSphere MQ Integration]
-* link:#gksli[Configure the WebSphere MQ Administered Objects]
-* link:#gksni[Create a Resource Adapter Configuration for GenericJMSRA
-to Work With WebSphere MQ]
-* link:#gksnh[Deploy the GenericJMSRA Archive]
-* link:#gkson[Create the Connection Factories and Administered Objects
-in GlassFish Server]
-* link:#gktmn[Configuring an MDB to Receive Messages from WebSphere MQ]
-
-[[gksiw]][[GSADG00683]][[preliminary-setup-procedures-for-websphere-mq-integration]]
-
-Preliminary Setup Procedures for WebSphere MQ Integration
-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-Before you can configure WebSphere MQ to exchange messages with
-GlassFish Server, you must complete the following tasks:
-
-* The following permissions must be added to the `server.policy` and the
-`client.policy` file to deploy GenericJMSRA and to run the client
-application.
-
-** Use a text editor to modify the `server.policy` file in the
-`${appserver-install-dir}/domains/domain1/config/`directory by adding
-the following line to the default grant block: +
-[source,oac_no_warn]
-----
-permission java.util.logging.LoggingPermission "control";
-permission java.util.PropertyPermission "*", "read,write";
-----
-
-** If you use an application client in your application, edit the
-client's `client.policy` file in the
-`${appserver-install-dir}/lib/appclient/` directory by adding the
-following permission: +
-[source,oac_no_warn]
-----
-permission javax.security.auth.PrivateCredentialPermission
-"javax.resource.spi.security.PasswordCredential * \"*\"","read";
-----
-* To integrate GlassFish Serverwith WebSphere MQ 6.0 or 7.0, copy the
-necessary JAR files to the as-install`/lib` directory:
-
-** For WebSphere MQ 6.0, copy these JAR files to the as-install`/lib`
-directory: +
-[source,oac_no_warn]
-----
-/opt/mqm/java/lib/com.ibm.mq.jar
-/opt/mqm/java/lib/com.ibm.mq.jms.Nojndi.jar
-/opt/mqm/java/lib/com.ibm.mq.soap.jar
-/opt/mqm/java/lib/com.ibm.mqjms.jar
-/opt/mqm/java/lib/com.ibm.mqetclient.jar
-/opt/mqm/java/lib/commonservices.jar
-/opt/mqm/java/lib/dhbcore.jar
-/opt/mqm/java/lib/rmm.jar
-/opt/mqm/java/lib/providerutil.jar
-/opt/mqm/java/lib/CL3Export.jar
-/opt/mqm/java/lib/CL3Nonexport.jar
-----
-where `/opt/mqm` is the location of the WebSphere MQ 6.0 installation.
-
-** For WebSphere MQ 7.0, copy these JAR files to the as-install`/lib`
-directory: +
-[source,oac_no_warn]
-----
-/opt/mqm/java/lib/com.ibm.mq.jar,
-/opt/mqm/java/lib/com.ibm.mq.jms.Nojndi.jar,
-/opt/mqm/java/lib/com.ibm.mq.soap.jar,
-/opt/mqm/java/lib/com.ibm.mqjms.jar,
-/opt/mqm/java/lib/com.ibm.mq.jmqi.jar,
-/opt/mqm/java/lib/com.ibm.mq.commonservices.jar,
-/opt/mqm/java/lib/dhbcore.jar,
-/opt/mqm/java/lib/rmm.jar,
-/opt/mqm/java/lib/providerutil.jar,
-/opt/mqm/java/lib/CL3Export.jar,
-/opt/mqm/java/lib/CL3Nonexport.jar
-----
-where `/opt/mqm` is the location of the WebSphere MQ 7.0 installation.
-* Set the `LD_LIBRARY_PATH` environment variable to the `java/lib`
-directory, and then restart GlassFish Server. For example, in a
-UNIX—based system, with WebSphere MQ installed under `/opt/mqm`, you
-would enter: +
-[source,oac_no_warn]
-----
-$ export LD_LIBRARY_PATH=/opt/mqm/java/lib
-----
-
-[[gksli]][[GSADG00501]][[configure-the-websphere-mq-administered-objects]]
-
-Configure the WebSphere MQ Administered Objects
-+++++++++++++++++++++++++++++++++++++++++++++++
-
-This section provides an example of how you could configure the
-necessary administered objects, such as destinations and connection
-factories, on the WebSphere MQ instance from which you want to access
-messages using GlassFish Server. Therefore, you will need to change the
-administered object names to suit your installation.
-
-[[GSADG1028]]
-
-Before You Begin
-
-If WebSphere MQ created a user and a group named `mqm` during the
-installation, then you must specify a password for the `mqm` user using
-the `$ passwd mqm` command.
-
-image:img/websphere-mq.png[
-"This graphic represents all of the administered objects created in this
-example configuration."]
-
-
-1.  Switch to the `mqm` user: +
-`$ su mqm`
-2.  For Linux, set the following kernel version: +
-`$ export LD_ASSUME_KERNEL=2.2.5`
-3.  Create a new MQ queue manager named "QM1": +
-`$ crtmqm QM1`
-4.  Start the new MQ queue manager. +
-In the image above, `QM1` is associated with the IBM WebSphere MQ
-broker. +
-`$ strmqm QM1`
-5.  Start the MQ listener: +
-`$ runmqlsr -t tcp -m QM1 -p 1414 &`
-6.  Modify the default JMSAdmin console configuration as follows:
-1.  Edit the JMSAdmin script in the `/opt/mqm/java/bin` directory to
-change the JVM to a location of a valid JVM your system.
-2.  Set the relevant environment variable required for JMSAdmin by
-sourcing the `setjmsenv` script located in the `/opt/mqm/java/bin`
-directory. +
-[source,oac_no_warn]
-----
-$ cd /opt/mqm/java/bin
-$ source setjmsenv
-----
-where `/opt/mqm` is the location of the WebSphere MQ installation.
-3.  Change the JMSAdmin.config file to indicate the Initial Context
-Factory you will be using by setting the following name-value pairs and
-commenting out the rest: +
-[source,oac_no_warn]
-----
-INITIAL_CONTEXT_FACTORY=com.sun.jndi.fscontext.RefFSContextFactory
-    PROVIDER_URL=file:/opt/tmp
-----
-7.  Create WebSphere MQ queues using the runmqsc console and
-MQJMS_PSQ.mqsc script. +
-`$ runmqsc QM1 < MQJMS_PSQ.mqsc`
-8.  Create user defined physical queue for your application using
-runmqsc console and an appropriate physical queue name. An example of
-how this could be done is shown below. +
-In the image above, `ORANGE.LOCAL.QUEUE` is associated with `QM1`. +
-[source,oac_no_warn]
-----
-     $ runmqsc QM1
-             > DEFINE QLOCAL(ORANGE.LOCAL.QUEUE)
-             > end
-----
-9.  Start the WebSphere MQ Broker: +
-`$ strmqbrk -m QM1`
-10. In the WebSphere MQ JMSAdmin console, use the following commands to
-create the connection factories, XA connection factories, and
-destinations for your application, as shown in the following sample,
-which lists each of the various JMS administered objects. +
-In the image above, `QCF` (for `QM1`) and `TQueue` (associated with
-`ORANGE.LOCAL.QUEUE`) are defined in the `FileSystem Naming Context`. +
-[source,oac_no_warn]
-----
-$ ./JMSAdmin
-   
-   InitCtx>def qcf<JNDI name to be given to the Queue Connection Factory> 
-     hostname<IBM MQ server hostname> port(1414) channel(SYSTEM.DEF.SVRCONN)
-     transport(CLIENT) qmanager<name of queue manager defined>
-   
-     For example:
-     def qcf(QCF) hostname(localhost) port(1414) channel(SYSTEM.DEF.SVRCONN) 
-      transport(CLIENT) qmanager(QM1)
-   
-   InitCtx%def xaqcf<JNDI name to be given to the XA Queue Connection Factory> 
-     hostname<IBM MQ server hostname> port(1414) channel(SYSTEM.DEF.SVRCONN)
-     transport(CLIENT) qmanager<name of queue manager defined>
-  
-     For example:
-     def xaqcf(XAQCF) hostname(localhost) port(1414) channel(SYSTEM.DEF.SVRCONN) 
-     transport(CLIENT) qmanager(QM1)
-   
-   InitCtx%def q<JNDI Name to be given to the Queue> queue<physical queue name> 
-     qmanager(name of queue manager defined )
-   
-     For example: def q(TQueue) queue(ORANGE.LOCAL.QUEUE) qmanager(QM1)
-   
-   InitCtx%def tcf<JNDI Name to be given to the Topic Connection Factory> 
-     qmanager(name of queue manager defined )
-   
-     For example: def tcf(TCF) qmanager(QM1)
-   
-   InitCtx%def xatcf<JNDI Name to be given to the  XA Topic Connection Factory> 
-     qmanager(name of queue manager defined )
-   
-     For example: def xatcf(XATCF) qmanager(QM1)
-   
-   InitCtx%def t<JNDI Name to be given to the Topic> topic<sample topic name>
-   
-     For example: def t(TTopic) topic(topic)
-----
-
-[[gksni]][[GSADG00684]][[create-a-resource-adapter-configuration-for-genericjmsra-to-work-with-websphere-mq]]
-
-Create a Resource Adapter Configuration for GenericJMSRA to Work With WebSphere MQ
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-Before deploying GenericJMSRA, you need to create a resource adapter
-configuration in GlassFish Server. You can do this using either the
-Administration Console or the `asadmin` command. Use the following
-`asadmin` command to create a resource adapter configuration for
-`genericra` to configure it to work with WebSphere MQ.
-
-[source,oac_no_warn]
-----
-                     asadmin> create-resource-adapter-config
-                       --user <adminname> --password <admin password>
-                       --property SupportsXA=true:ProviderIntegrationMode
-                       =jndi:UserName=mqm:Password=###:RMPolicy
-                       =OnePerPhysicalConnection:JndiProperties
-                       =java.naming.factory.url.pkgs\\
-                       =com.ibm.mq.jms.naming,java.naming.factory.initial\\
-                       =com.sun.jndi.fscontext.RefFSContextFactory,java.naming.provider.url\\
-                       =file\\:\\/\\/opt\\/tmp:LogLevel=finest genericra
-----
-
-
-[NOTE]
-=======================================================================
-
-When using `asadmin` you need to escape each `=` and any `:` characters
-by prepending a backward slash `\`. The escape sequence is not necessary
-if the configuration is performed through the Administration Console.
-Also , ensure that the provider URL is configured correctly depending on
-the platform. For example, on Windows systems it should be
-`file:/C:/opt/tmp` and on UNIX—based systems it is `file://opt/tmp`.
-
-=======================================================================
-
-
-This creates a resource adapter configuration with the name `genericra`,
-and Oracle recommends not changing the default name. The resource
-adapter configuration is configured with the properties specified using
-the `--properties` argument; multiple properties are configured as a
-colon-separated list of name-value pairs that are entered as a single
-line.
-
-In this example, the following properties are configured:
-
-
-[NOTE]
-=======================================================================
-
-The tables in this section describe the GenericJMSRA properties that are
-relevant only when integrating with WebSphere MQ. For a complete list of
-properties, see the comprehensive table in link:#gbtvu[GenericJMSRA
-Configuration Properties].
-
-=======================================================================
-
-
-[width="100%",cols="29%,43%,28%",options="header",]
-|=======================================================================
-|Property Name |Required Value |Description
-|`SupportsXA` |`true` |Set the supports distributed transactions
-attribute to `true`. The level of transactional support the adapter
-provides -- none, local, or XA -- depends on the capabilities of the
-Enterprise Information System (EIS) being adapted. If an adapter
-supports XA transactions and this attribute is XA, the application can
-use distributed transactions to coordinate the EIS resource with JDBC
-and JMS resources.
-
-|`ProviderIntegrationMode` |`jndi` |Specifies that connection factories
-and destinations in GlassFish's JNDI store are configured to refer to
-connection factories and destinations in WebSphere MQ's JNDI store.
-
-|`JndiProperties` a|
-[source,oac_no_warn]
-----
-JndiProperties=
-java.naming.factory.url.pkgs\\
-=com.ibm.mq.jms.naming,java.naming.
-factory.initial\\=com.sun.jndi.fscontext.
-RefFSContextFactory,java.naming.
-provider.url\\
-=file\\:\\/\\/opt\\/tmp:
-LogLevel=finest genericra
-----
-
- |JNDI properties for connecting to WebSphere MQ's JNDI, specified as
-comma-separated list of name=value pairs without spaces.
-
-|`UserName` |`Name of the WebSphere MQ user` a|
-User name to connect to WebSphere MQ.
-
-The user name can be overridden in `ActivationSpec` and
-`ManagedConnection`. If no user name is specified anonymous connections
-will be used, if permitted.
-
-|`Password` |`Password for the WebSphere MQ user` a|
-Password to connect to WebSphere MQ.
-
-The password can be overridden in `ActivationSpec` and
-`ManagedConnection`.
-
-|`RMIPolicy` |`OnePerPhysicalConnection` a|
-Some XAResource implementations, such as WebSphere MQ, rely on a
-Resource Manager per Physical Connection, and this causes issues when
-there is inbound and outbound communication to the same queue manager in
-a single transaction (for example, when an MDB sends a response to a
-destination).
-
-When RMPolicy is set to `OnePerPhysicalConnection`, the XAResource
-wrapper implementation's `isSameRM` in GenericJMSRA would check if both
-the XAResources use the same physical connection, before delegating to
-the wrapped objects. Therefore, ensure that this attribute is set to
-`OnePerPhysicalConnection` if the application uses XA.
-
-|`LogLevel` |`Desired log level of JDK logger` |Used to specify the
-level of logging.
-|=======================================================================
-
-
-
-[NOTE]
-=======================================================================
-
-You must use the values for `SupportsXA`, `RMPolicy` and
-`ProviderIntegrationMode` as the required values that are used in this
-table.
-
-=======================================================================
-
-
-[[gksnh]][[GSADG00685]][[deploy-the-genericjmsra-archive]]
-
-Deploy the GenericJMSRA Archive
-+++++++++++++++++++++++++++++++
-
-For instructions on downloading and deploying GenericJMSRA, see
-link:#gkkxz[Deploy the GenericJMSRA Resource Archive].
-
-[[gkson]][[GSADG00686]][[create-the-connection-factories-and-administered-objects-in-glassfish-server]]
-
-Create the Connection Factories and Administered Objects in GlassFish Server
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-In order to configure a JMS Connection Factory using GenericJMSRA, a
-Connector Connection Pool and resource needs to be created in GlassFish
-Server, as described in this section.
-
-Using the example WebSphere MQ configuration in link:#gksli[Configure
-the WebSphere MQ Administered Objects], you will see `mypool` (pointing
-to `GenericJMSRA` and `QCF`) and `jms/MyQCF` (for `mypool`) created in
-GlassFish Server.
-
-
-[NOTE]
-=======================================================================
-
-If you want configure connections and destination resources using the
-Administration Console, this is explained in the Administration Console
-online help. When using Administration Console, following the,
-instructions for creating a new Connector Connection Pool and Admin
-Object Resources, and not the instructions for creating a JMS Connection
-Pool and Destination Resources. For more information about using
-`asadmin` to create these resources, see link:connectors.html#gioce[To
-Create a Connector Connection Pool] and link:connectors.html#giogt[To
-Create a Connector Resource].
-
-=======================================================================
-
-
-[[gksro]][[GSADG00502]][[creating-connections-and-destinations]]
-
-Creating Connections and Destinations
-
-In order to configure a JMS Connection Factory, using GenericJMSRA, a
-Connector Connection Pool and Destination resources need to be created
-in GlassFish Server using names that map to the corresponding connection
-and destination resources in WebSphere MQ. The connections and
-destination name in these steps map to the example WebSphere MQ
-configuration in link:#gksli[Configure the WebSphere MQ Administered
-Objects].
-
-1.  Create connection pools that point to the connection pools in
-WebSphere MQ. +
-The following `asadmin` command creates a Connection Pool called
-`mypool` and points to the `XAQCF` created in WebSphere MQ: +
-[source,oac_no_warn]
-----
-     asadmin create-connector-connection-pool -- raname genericra connectiondefinition
-            jakarta.jms.QueueConnectionFactory --transactionsupport  XATransaction 
-            --property ConnectionFactoryJndiName=QCF mypool
-----
-The following `asadmin` command creates a Connection Pool called
-`mypool2` and points to the `XATCF` created in WebSphere MQ: +
-[source,oac_no_warn]
-----
-     asadmin create-connector-connection-pool 
-            -- raname genericra connectiondefinition jakarta.jms.TopicConnectionFactory 
-            --transactionsupport  XATransaction
-            --property ConnectionFactoryJndiName=XATCF mypool2
-----
-2.  Create the connector resources. +
-The following `asadmin` command creates a connector resource named
-`jms/MyQCF` and binds this resource to JNDI for applications to use: +
-[source,oac_no_warn]
-----
-     asadmin create-connector-resource --poolname mypool jms/MyQCF
-----
-The following `asadmin` command creates a connector resource named
-`jms/MyTCF` and binds this resource to JNDI for applications to use: +
-[source,oac_no_warn]
-----
-     asadmin create-connector-resource --poolname mypool2 jms/MyTCF
-----
-3.  Create the JMS destination resources as administered objects. +
-In the image above, `jms/MyQueue` (pointing to `GenericJMSRA` and
-`TQueue`) is created in GlassFish Server. +
-The following `asadmin` command creates a `jakarta.jms.Queue` administered
-object and binds it to the GlassFish Server JNDI tree at `jms/MyQueue`
-and points to the `jms/TQueue` created in WebSphere MQ. +
-[source,oac_no_warn]
-----
-     asadmin create-admin-object --raname genericra --restype jakarta.jms.Queue 
-            --property DestinationJndiName=TQueue jms/MyQueue
-----
-The following `asadmin` command creates a `jakarta.jms.Topic` administered
-object and binds it to the GlassFish Server JNDI tree at `jms/MyTopic`
-and points to the `jms/TTopic` created in WebSphere MQ. +
-[source,oac_no_warn]
-----
-     asadmin create-admin-object --raname genericra --restype jakarta.jms.Topic 
-            --property DestinationJndiName=TTopic jms/MyTopic
-----
-
-[[gktmn]][[GSADG00687]][[configuring-an-mdb-to-receive-messages-from-websphere-mq]]
-
-Configuring an MDB to Receive Messages from WebSphere MQ
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-The administered object names in the sample deployment descriptor below
-map to the example WebSphere MQ configuration in link:#gksli[Configure
-the WebSphere MQ Administered Objects]. The deployment descriptors need
-to take into account the resource adapter and the connection resources
-that have been created. A sample `sun-ejb-jar.xml` for a Message Driven
-Bean that listens to a destination called `TQueue` in WebSphere MQ, and
-publishes back reply messages to a destination resource named
-`jms/replyQueue` in GlassFish Server, as shown below.
-
-[source,oac_no_warn]
-----
-       <sun-ejb-jar>
-         <enterprise-beans>
-         <unique-id.1</unique-id>
-         <ejb>
-            <ejb-name>SimpleMessageEJB</ejb-name>
-            <jndi-name>jms/SampleQueue</jndi-name>
-             <!-- QCF used to publish reply messages -->
-            <resource-ref>
-               <res-ref-name>jms/MyQueueConnectionFactory</res-ref-name>
-               <jndi-name>jms/MyQCF</jndi-name>
-               <default-resource-principal>
-                  <name>mqm</name>
-                  <password>mqm</password>
-               </default-resource-principal>
-            </resource-ref>
-            <!-- reply destination resource> Creating of this replyQueue destination resource is not
-                 shown above, but the steps are similar to creating the  "jms/MyQueue" resource -->
-            <resource-env-ref>
-               <resource-env-ref-name>jms/replyQueue</resource-env-ref-name>
-               <jndi-name>jms/replyQueue</jndi-name>
-            </resource-env-ref>
-            
-            <!-- Activation related RA specific configuration for this MDB -->
-            <mdb-resource-adapter>
-            <!-- resource-adapter-mid points to the Generic Resource Adapter for JMS -->
-            <resource-adapter-mid>genericra</resource-adapter-mid>
-            <activation-config>
-               <activation-config-property>
-                  <activation-config-property-name>DestinationType</activation-config-property-name>
-                  <activation-config-property-value>javax>jms>Queue</activation-config-property-value>
-               </activation-config-property>
-               <activation-config-property>
-                  <activation-config-property-name>ConnectionFactoryJndiName</activation-config-property-name>
-                  <activation-config-property-value>QCF</activation-config-property-value>
-               </activation-config-property>
-               <activation-config-property>
-                  <activation-config-property-name>DestinationJndiName</activation-config-property-name>
-                  <activation-config-property-value>TQueue</activation-config-property-value>
-               </activation-config-property>
-               <activation-config-property>
-                  <activation-config-property-name>MaxPoolSize</activation-config-property-name>
-                  <activation-config-property-value>32</activation-config-property-value>
-               </activation-config-property>
-               <activation-config-property>
-                  <activation-config-property-name>RedeliveryAttempts</activation-config-property-name>
-                  <activation-config-property-value>0</activation-config-property-value>
-               </activation-config-property>
-               <activation-config-property>
-                  <activation-config-property-name>ReconnectAttempts</activation-config-property-name>
-                  <activation-config-property-value>4</activation-config-property-value>
-               </activation-config-property>
-               <activation-config-property>
-                  <activation-config-property-name>ReconnectInterval</activation-config-property-name>
-                  <activation-config-property-value>10</activation-config-property-value>
-               </activation-config-property>
-               <activation-config-property>
-                  <activation-config-property-name>RedeliveryInterval</activation-config-property-name>
-                  <activation-config-property-value>1</activation-config-property-value>
-               </activation-config-property>
-               <activation-config-property>
-                  <activation-config-property-name>SendBadMessagesToDMD</activation-config-property-name>
-                  <activation-config-property-value>false</activation-config-property-value>
-               </activation-config-property>
-            </activation-config>
-          </mdb-resource-adapter>
-          </ejb>
-          </enterprise-beans>
-       </sun-ejb-jar>
-----
-
-The business logic encoded in Message Driven Bean could then lookup the
-configured `QueueConnectionFactory/Destination` resource to create a
-connection as shown below.
-
-[source,oac_no_warn]
-----
-             Context context = null;
-             ConnectionFactory connectionFactory = null;
-             logger>info("In PublisherBean>ejbCreate()");
-             try {
-                 context = new InitialContext();
-                 queue = (javax>jms>Queue) context>lookup ("java:comp/env/jms/replyQueue");
-                 connectionFactory = (ConnectionFactory) context>lookup("java:comp/env/jms/MyQueueConnectionFactory");
-                 connection = connectionFactory>createConnection();
-             } catch (Throwable t) {
-                 logger>severe("PublisherBean>ejbCreate:" + "Exception: " +
-                 t>toString());
-             }
-----
-
-
diff --git a/docs/administration-guide/src/main/jbake/content/jndi.adoc b/docs/administration-guide/src/main/jbake/content/jndi.adoc
deleted file mode 100644
index 0495f1d..0000000
--- a/docs/administration-guide/src/main/jbake/content/jndi.adoc
+++ /dev/null
@@ -1,583 +0,0 @@
-type=page
-status=published
-title=Administering the Java Naming and Directory Interface (JNDI) Service
-next=transactions.html
-prev=jms.html
-~~~~~~
-Administering the Java Naming and Directory Interface (JNDI) Service
-====================================================================
-
-[[GSADG00021]][[ablky]]
-
-
-[[administering-the-java-naming-and-directory-interface-jndi-service]]
-18 Administering the Java Naming and Directory Interface (JNDI) Service
------------------------------------------------------------------------
-
-The Java Naming and Directory Interface (JNDI) API is used for accessing
-different kinds of naming and directory services. Java EE components
-locate objects by invoking the JNDI lookup method.
-
-The following topics are addressed here:
-
-* link:#ggjue[About JNDI]
-* link:#gglpq[Administering JNDI Resources]
-
-Instructions for accomplishing the tasks in this chapter by using the
-Administration Console are contained in the Administration Console
-online help.
-
-[[ggjue]][[GSADG00603]][[about-jndi]]
-
-About JNDI
-~~~~~~~~~~
-
-By making calls to the JNDI API, applications locate resources and other
-program objects. A resource is a program object that provides
-connections to systems, such as database servers and messaging systems.
-A JDBC resource is sometimes referred to as a data source. Each resource
-object is identified by a unique, people-friendly name, called the JNDI
-name. A resource object and its JNDI name are bound together by the
-naming and directory service, which is included with the GlassFish
-Server.
-
-When a new name-object binding is entered into the JNDI, a new resource
-is created.
-
-The following topics are addressed here:
-
-* link:#abllb[Java EE Naming Environment]
-* link:#gglpg[How the Naming Environment and the Container Work
-Together]
-* link:#abllc[Naming References and Binding Information]
-
-[[abllb]][[GSADG00780]][[java-ee-naming-environment]]
-
-Java EE Naming Environment
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-JNDI names are bound to their objects by the naming and directory
-service that is provided by a Java EE server. Because Java EE components
-access this service through the JNDI API, the object usually uses its
-JNDI name. For example, the JNDI name of the Apache Derby database is
-`jdbc/_default`. At startup, the GlassFish Server reads information from
-the configuration file and automatically adds JNDI database names to the
-name space, one of which is `jdbc/_default`.
-
-Java EE application clients, enterprise beans, and web components must
-have access to a JNDI naming environment.
-
-The application component's naming environment is the mechanism that
-allows customization of the application component's business logic
-during deployment or assembly. This environment allows you to customize
-the application component without needing to access or change the source
-code off the component. A Java EE container implements the provides the
-environment to the application component instance as a JNDI naming
-context.
-
-[[gglpg]][[GSADG00781]][[how-the-naming-environment-and-the-container-work-together]]
-
-How the Naming Environment and the Container Work Together
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The application component's environment is used as follows:
-
-* The application component's business methods access the environment
-using the JNDI interfaces. In the deployment descriptor, the application
-component provider declares all the environment entries that the
-application component expects to be provided in its environment at
-runtime.
-* The container provides an implementation of the JNDI naming context
-that stores the application component environment. The container also
-provides the tools that allow the deployer to create and manage the
-environment of each application component.
-* A deployer uses the tools provided by the container to initialize the
-environment entries that are declared in the application component's
-deployment descriptor. The deployer sets and modifies the values of the
-environment entries.
-* The container makes the JNDI context available to the application
-component instances at runtime. These instances use the JNDI interfaces
-to obtain the values of the environment entries.
-
-Each application component defines its own set of environment entries.
-All instances of an application component within the same container
-share the same environment entries. Application component instances are
-not allowed to modify the environment at runtime.
-
-[[abllc]][[GSADG00782]][[naming-references-and-binding-information]]
-
-Naming References and Binding Information
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A resource reference is an element in a deployment descriptor that
-identifies the component's coded name for the resource. For example,
-`jdbc/SavingsAccountDB`. More specifically, the coded name references a
-connection factory for the resource.
-
-The JNDI name of a resource and the resource reference name are not the
-same. This approach to naming requires that you map the two names before
-deployment, but it also decouples components from resources. Because of
-this decoupling, if at a later time the component needs to access a
-different resource, the name does not need to change. This flexibility
-makes it easier for you to assemble Java EE applications from
-preexisting components.
-
-The following table lists JNDI lookups and their associated resource
-references for the Java EE resources used by the GlassFish Server.
-
-[[GSADG1029]][[sthref87]][[fxizy]]
-
-
-Table 18-1 JNDI Lookup Names and Their Associated References
-
-[width="100%",cols="38%,62%",options="header",]
-|=======================================================================
-|JNDI Lookup Name |Associated Resource Reference
-|`java:comp/env` |Application environment entries
-
-|`java:comp/env/jdbc` |JDBC DataSource resource manager connection
-factories
-
-|`java:comp/env/ejb` |EJB References
-
-|`java:comp/UserTransaction` |UserTransaction references
-
-|`java:comp/env/mail` |JavaMail Session Connection Factories
-
-|`java:comp/env/url` |URL Connection Factories
-
-|`java:comp/env/jms` |JMS Connection Factories and Destinations
-
-|`java:comp/ORB` |ORB instance shared across application components
-|=======================================================================
-
-
-[[gglpq]][[GSADG00604]][[administering-jndi-resources]]
-
-Administering JNDI Resources
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Within GlassFish Server, you can configure your environment for custom
-and external JNDI resources. A custom resource accesses a local JNDI
-repository; an external resource accesses an external JNDI repository.
-Both types of resources need user-specified factory class elements, JNDI
-name attributes, and so on.
-
-* link:#ablle[Administering Custom JNDI Resources]
-* link:#gitxz[Administering External JNDI Resources]
-
-[[ablle]][[GSADG00783]][[administering-custom-jndi-resources]]
-
-Administering Custom JNDI Resources
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A custom resource specifies a custom server-wide resource object factory
-that implements the `javax.naming.spi.ObjectFactory` interface.
-
-The following topics are addressed here:
-
-* link:#giowe[To Create a Custom JNDI Resource]
-* link:#gioxb[To List Custom JNDI Resources]
-* link:#giwlk[To Update a Custom JNDI Resource]
-* link:#gioxl[To Delete a Custom JNDI Resource]
-
-[[giowe]][[GSADG00503]][[to-create-a-custom-jndi-resource]]
-
-To Create a Custom JNDI Resource
-++++++++++++++++++++++++++++++++
-
-Use the `create-custom-resource` subcommand in remote mode to create a
-custom resource.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Create a custom resource by using the
-link:../reference-manual/create-custom-resource.html#GSRFM00022[`create-custom-resource`] subcommand. +
-Information on properties for the subcommand is contained in this help
-page.
-3.  Restart GlassFish Server. +
-See link:domains.html#ginqj[To Restart a Domain].
-
-[[GSADG00284]][[gioyi]]
-
-
-Example 18-1 Creating a Custom Resource
-
-This example creates a custom resource named `sample-custom-resource`.
-
-[source,oac_no_warn]
-----
-asadmin> create-custom-resource --restype topic --factoryclass com.imq.topic 
-sample_custom_resource
-Command create-custom-resource executed successfully.
-----
-
-[[GSADG1030]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-custom-resource` at the command line.
-
-[[gioxb]][[GSADG00504]][[to-list-custom-jndi-resources]]
-
-To List Custom JNDI Resources
-+++++++++++++++++++++++++++++
-
-Use the `list-custom-resources` subcommand in remote mode to list the
-existing custom resources.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the custom resources by using the
-link:../reference-manual/list-custom-resources.html#GSRFM00162[`list-custom-resources`] subcommand.
-
-[[GSADG00285]][[gioyr]]
-
-
-Example 18-2 Listing Custom Resources
-
-This example lists the existing custom resources.
-
-[source,oac_no_warn]
-----
-asadmin> list-custom-resources
-sample_custom_resource01 
-sample_custom_resource02 
-Command list-custom-resources executed successfully
-----
-
-[[GSADG1031]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-custom-resources` at the command line.
-
-[[giwlk]][[GSADG00505]][[to-update-a-custom-jndi-resource]]
-
-To Update a Custom JNDI Resource
-++++++++++++++++++++++++++++++++
-
-1.  List the custom resources by using the
-link:../reference-manual/list-custom-resources.html#GSRFM00162[`list-custom-resources`] subcommand.
-2.  Use the link:../reference-manual/set.html#GSRFM00226[`set`] subcommand to modify a custom JNDI
-resource.
-
-[[GSADG00286]][[giwkg]]
-
-
-Example 18-3 Updating a Custom JNDI Resource
-
-This example modifies a custom resource.
-
-[source,oac_no_warn]
-----
-asadmin> set server.resources.custom-resource.custom
-/my-custom-resource.property.value=2010server.resources.custom-resource.custom
-/my-custom-resource.property.value=2010
-----
-
-[[gioxl]][[GSADG00506]][[to-delete-a-custom-jndi-resource]]
-
-To Delete a Custom JNDI Resource
-++++++++++++++++++++++++++++++++
-
-Use the `delete-custom-resource` subcommand in remote mode to delete a
-custom resource.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the custom resources by using the
-link:../reference-manual/list-custom-resources.html#GSRFM00162[`list-custom-resources`] subcommand.
-3.  Delete a custom resource by using the
-link:../reference-manual/delete-custom-resource.html#GSRFM00074[`delete-custom-resource`] subcommand.
-
-[[GSADG00287]][[gioxh]]
-
-
-Example 18-4 Deleting a Custom Resource
-
-This example deletes a custom resource named `sample-custom-resource`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-custom-resource sample_custom_resource
-Command delete-custom-resource executed successfully.
-----
-
-[[GSADG1032]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-custom-resource` at the command line.
-
-[[gitxz]][[GSADG00784]][[administering-external-jndi-resources]]
-
-Administering External JNDI Resources
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Applications running on GlassFish Server often require access to
-resources stored in an external JNDI repository. For example, generic
-Java objects might be stored in an LDAP server according to the Java
-schema. External JNDI resource elements let you configure such external
-resource repositories.
-
-The following topics are addressed here:
-
-* link:#gitxn[To Register an External JNDI Resource]
-* link:#gitvj[To List External JNDI Resources]
-* link:#gitwc[To List External JNDI Entries]
-* link:#giwnr[To Update an External JNDI Resource]
-* link:#gitvt[To Delete an External JNDI Resource]
-* link:#abllk[Example of Using an External JNDI Resource]
-* link:#gknaf[To Disable GlassFish Server v2 Vendor-Specific JNDI Names]
-
-[[gitxn]][[GSADG00507]][[to-register-an-external-jndi-resource]]
-
-To Register an External JNDI Resource
-+++++++++++++++++++++++++++++++++++++
-
-Use the `create-jndi-resource` subcommand in remote mode to register an
-external JNDI resource.
-
-[[GSADG1033]]
-
-Before You Begin
-
-The external JNDI factory must implement the
-`javax.naming.spi.InitialContextFactory` interface.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Register an external JNDI resource by using the
-link:../reference-manual/create-jndi-resource.html#GSRFM00041[`create-jndi-resource`] subcommand. +
-Information on properties for the subcommand is contained in this help
-page.
-3.  Restart GlassFish Server. +
-See link:domains.html#ginqj[To Restart a Domain].
-
-[[GSADG00288]][[giwcx]]
-
-
-Example 18-5 Registering an External JNDI Resource
-
-In This example `sample_jndi_resource` is registered.
-
-[source,oac_no_warn]
-----
-asadmin> create-jndi-resource --jndilookupname sample_jndi 
---restype queue --factoryclass sampleClass --description "this is a sample jndi 
-resource" sample_jndi_resource
-Command create-jndi-resource executed successfully
-----
-
-[[GSADG1034]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-jndi-resource` at the command line.
-
-[[gitvj]][[GSADG00508]][[to-list-external-jndi-resources]]
-
-To List External JNDI Resources
-+++++++++++++++++++++++++++++++
-
-Use the `list-jndi-resources` subcommand in remote mode to list all
-existing JNDI resources.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the existing JNDI resources by using
-theolink:GSRFM00179[`list-jndi-resources`] subcommand.
-
-[[GSADG00289]][[giwbe]]
-
-
-Example 18-6 Listing JNDI Resources
-
-This example lists the JNDI resources.
-
-[source,oac_no_warn]
-----
-asadmin> list-jndi-resources
-jndi_resource1
-jndi_resource2
-jndi_resource3
-Command list-jndi-resources executed successfully
-----
-
-[[GSADG1035]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-jndi-resources` at the command line.
-
-[[gitwc]][[GSADG00509]][[to-list-external-jndi-entries]]
-
-To List External JNDI Entries
-+++++++++++++++++++++++++++++
-
-Use the `list-jndi-entries` subcommand in remote mode to browse and list
-the entries in the JNDI tree. You can either list all entries, or you
-can specify the JNDI context or subcontext to list specific entries.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the JNDI entries for a configuration by using the
-link:../reference-manual/list-jndi-entries.html#GSRFM00178[`list-jndi-entries`] subcommand.
-
-[[GSADG00290]][[giwal]]
-
-
-Example 18-7 Listing JNDI Entries
-
-This example lists all the JNDI entries for the naming service.
-
-[source,oac_no_warn]
-----
-asadmin> list-jndi-entries
-jndi_entry03
-jndi_entry72
-jndi_entry76
-Command list-jndi-resources executed successfully
-----
-
-[[GSADG1036]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-jndi-entries` at the command line.
-
-[[giwnr]][[GSADG00510]][[to-update-an-external-jndi-resource]]
-
-To Update an External JNDI Resource
-+++++++++++++++++++++++++++++++++++
-
-1.  List the existing JNDI resources by using
-theolink:GSRFM00179[`list-jndi-resources`] subcommand.
-2.  Use the link:../reference-manual/set.html#GSRFM00226[`set`] subcommand to modify an external
-JNDI resource.
-
-[[GSADG00291]][[giwoa]]
-
-
-Example 18-8 Updating an External JNDI Resource
-
-This example modifies an external resource.
-
-[source,oac_no_warn]
-----
-asadmin> set server.resources.external-jndi-resource.my-jndi-resource.
-jndi-lookup-name=bar server.resources.external-jndi-resource.my-jndi-resource.jndi-lookup-name=bar 
-----
-
-[[gitvt]][[GSADG00511]][[to-delete-an-external-jndi-resource]]
-
-To Delete an External JNDI Resource
-+++++++++++++++++++++++++++++++++++
-
-Use the `delete-jndi-resource` subcommand in remote mode to remove a
-JNDI resource.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Remove an external JNDI entry by using the
-link:../reference-manual/delete-jndi-resource.html#GSRFM00093[`delete-jndi-resource`] subcommand.
-
-[[GSADG00292]][[giwby]]
-
-
-Example 18-9 Deleting an External JNDI Resource
-
-This example deletes an external JNDI resource:
-
-[source,oac_no_warn]
-----
-asadmin> delete-jndi-resource jndi_resource2
-Command delete-jndi-resource executed successfully.
-----
-
-[[GSADG1037]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-jndi-resource` at the command line.
-
-[[abllk]][[GSADG00688]][[example-of-using-an-external-jndi-resource]]
-
-Example of Using an External JNDI Resource
-++++++++++++++++++++++++++++++++++++++++++
-
-[source,oac_no_warn]
-----
-<resources>
- <!-- external-jndi-resource element specifies how to access Java EE resources
- -- stored in an external JNDI repository. This example
- -- illustrates how to access a java object stored in LDAP.
- -- factory-class element specifies the JNDI InitialContext factory that
- -- needs to be used to access the resource factory. property element
- -- corresponds to the environment applicable to the external JNDI context
- -- and jndi-lookup-name refers to the JNDI name to lookup to fetch the
- -- designated (in this case the java) object.
- -->
-  <external-jndi-resource jndi-name="test/myBean"
-      jndi-lookup-name="cn=myBean"
-      res-type="test.myBean"
-      factory-class="com.sun.jndi.ldap.LdapCtxFactory">
-    <property name="PROVIDER-URL" value="ldap://ldapserver:389/o=myObjects" />
-    <property name="SECURITY_AUTHENTICATION" value="simple" />
-    <property name="SECURITY_PRINCIPAL", value="cn=joeSmith, o=Engineering" />
-    <property name="SECURITY_CREDENTIALS" value="changeit" />
-  </external-jndi-resource>
-</resources>
-----
-
-[[gknaf]][[GSADG00512]][[to-disable-glassfish-server-v2-vendor-specific-jndi-names]]
-
-To Disable GlassFish Server v2 Vendor-Specific JNDI Names
-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-The EJB 3.1 specification supported by GlassFish Server 5.0 defines
-portable EJB JNDI names. Because of this, there is less need to continue
-to use older vendor-specific JNDI names.
-
-By default, GlassFish Server v2-specific JNDI names are applied
-automatically by GlassFish Server 5.0 for backward compatibility.
-However, this can lead to some ease-of-use issues. For example,
-deploying two different applications containing a Remote EJB component
-that exposes the same remote interface causes a conflict between the
-default JNDI names.
-
-The default handling of v2-specific JNDI names in GlassFish Server 5.0
-can be managed with the `asadmin` command or with the
-`disable-nonportable-jndi-names` boolean property for the
-`ejb-container` element in `glassfish-ejb-jar.xml`.
-
-Use the `asadmin` command or directly modify the `glassfish-ejb-jar.xml`
-file to set the `disable-nonportable-jndi-names` property.
-
-* Using the `asadmin` command: +
-[source,oac_no_warn]
-----
-asadmin> set server.ejb-container.property.disable-nonportable-jndi-names="true"
-----
-* Directly modifying the `glassfish-ejb-jar.xml` file.
-1.  Add the `disable-nonportable-jndi-names` property to the
-`ejb-container` element in `glassfish-ejb-jar.xml`.
-2.  Set the value of the `disable-nonportable-jndi-names` boolean, as
-desired. +
-`false` - Enables the automatic use of GlassFish Server v2-specific JNDI
-names. This is the default setting. +
-`true` - Disables the automatic use of v2-specific JNDI names. In all
-cases, 5.0-compatible JNDI names will be used.
-3.  Save the `glassfish-ejb-jar.xml` file and restart the GlassFish
-Server domain. +
-This setting applies to all EJBs deployed to the server.
-
-
diff --git a/docs/administration-guide/src/main/jbake/content/jvm.adoc b/docs/administration-guide/src/main/jbake/content/jvm.adoc
deleted file mode 100644
index 1419324..0000000
--- a/docs/administration-guide/src/main/jbake/content/jvm.adoc
+++ /dev/null
@@ -1,349 +0,0 @@
-type=page
-status=published
-title=Administering the Virtual Machine for the Java Platform
-next=threadpools.html
-prev=domains.html
-~~~~~~
-Administering the Virtual Machine for the Java Platform
-=======================================================
-
-[[GSADG00007]][[ablwj]]
-
-
-[[administering-the-virtual-machine-for-the-java-platform]]
-4 Administering the Virtual Machine for the Java Platform
----------------------------------------------------------
-
-This chapter provides procedures for administering the Virtual Machine
-for the Java platform (Java Virtual Machine) or JVM machine) in the
-GlassFish Server Open Source Edition 5.0 environment by using the
-`asadmin` command-line utility.
-
-The following topics are addressed here:
-
-* link:#gepzd[Administering JVM Options]
-* link:#ggnde[Administering the Profiler]
-
-Instructions for accomplishing these tasks by using the Administration
-Console are contained in the Administration Console online help.
-
-[[gepzd]][[GSADG00544]][[administering-jvm-options]]
-
-Administering JVM Options
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The Java Virtual Machine is an interpretive computing engine responsible
-for running the byte codes in a compiled Java program. The virtual
-machine translates the Java byte codes into the native instructions of
-the host machine. GlassFish Server, being a Java process, requires a
-virtual machine to run and support the Java applications running on it.
-JVM settings are part of an GlassFish Server configuration.
-
-The following topics are addressed here:
-
-* link:#ggnes[To Create JVM Options]
-* link:#ggnce[To List JVM Options]
-* link:#ggnfi[To Delete JVM Options]
-* link:#ggnbu[To Generate a JVM Report]
-
-[[ggnes]][[GSADG00359]][[to-create-jvm-options]]
-
-To Create JVM Options
-^^^^^^^^^^^^^^^^^^^^^
-
-Use the `create-jvm-options` subcommand in remote mode to create JVM
-options in the Java configuration or the profiler elements of the
-`domain.xml` file. If JVM options are created for a profiler, these
-options are used to record the settings that initiate the profiler.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Create JVM options by using the
-link:../reference-manual/create-jvm-options.html#GSRFM00042[`create-jvm-options`] subcommand. +
-To create more than one JVM option, use a colon (:) to separate the
-options. If the JVM option itself contains a colon (:), use the
-backslash (\) to offset the colon delimiter. +
-Information about properties for the subcommand is included in this help
-page.
-3.  To apply your changes, restart GlassFish Server. See
-link:domains.html#ginqj[To Restart a Domain].
-
-[[GSADG00154]][[ghqwm]]
-
-
-Example 4-1 Creating JVM Options
-
-This example sets multiple Java system properties.
-
-[source,oac_no_warn]
-----
-asadmin> create-jvm-options -Dunixlocation=/root/example:
--Dvariable=\$HOME:
--Dwindowslocation=d\\:\\\sun\\\appserver:
--Doption1=-value1
-created 4 option(s)
-Command create-jvm-options executed successfully.
-----
-
-[[GSADG847]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-jvm-options` at the command line.
-
-[[ggnce]][[GSADG00360]][[to-list-jvm-options]]
-
-To List JVM Options
-^^^^^^^^^^^^^^^^^^^
-
-Use the `list-jvm-options` subcommand in remote mode to list the
-existing JVM options.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List JVM options by using the link:../reference-manual/list-jvm-options.html#GSRFM00180[`list-jvm-options`]
-subcommand.
-
-[[GSADG00155]][[ggphx]]
-
-
-Example 4-2 Listing JVM Options
-
-This example lists all JVM options.
-
-[source,oac_no_warn]
-----
-asadmin> list-jvm-options
--Djava.security.auth.login.config=${com.sun.aas.instanceRoot}/config/login.conf
--XX: LogVMOutput
--XX: UnlockDiagnosticVMOptions
--Dcom.sun.enterprise.config.config_environment_factory_class=com.sun.enterprise.
-config.serverbeans.AppserverConfigEnvironmentFactory
--Djavax.net.ssl.keyStore=${com.sun.aas.instanceRoot}/config/keystore.jks
--XX:NewRatio=2
--Djava.security.policy=${com.sun.aas.instanceRoot}/config/server.policy
--Djdbc.drivers=org.apache.derby.jdbc.ClientDriver
--Djavax.net.ssl.trustStore=${com.sun.aas.instanceRoot}/config/cacerts.jks
--client
--Djava.ext.dirs=${com.sun.aas.javaRoot}/lib/ext${path.separator}${com.sun.aas.ja
-vaRoot}/jre/lib/ext${path.separator}${com.sun.aas.instanceRoot}/lib/ext${path.se
-parator}${com.sun.aas.derbyRoot}/lib
--Xmx512m
--XX:LogFile=${com.sun.aas.instanceRoot}/logs/jvm.log
-Command list-jvm-options executed successfully.
-----
-
-[[GSADG848]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-jvm-options` at the command line.
-
-[[ggnfi]][[GSADG00361]][[to-delete-jvm-options]]
-
-To Delete JVM Options
-^^^^^^^^^^^^^^^^^^^^^
-
-Use the `delete-jvm-options` subcommand in remote mode to delete JVM
-options from the Java configuration or profiler elements of the
-`domain.xml` file.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List JVM options by using the link:../reference-manual/list-jvm-options.html#GSRFM00180[`list-jvm-options`]
-subcommand.
-3.  If necessary, notify users that the JVM option is being deleted.
-4.  Delete JVM options by using the
-link:../reference-manual/delete-jvm-options.html#GSRFM00094[`delete-jvm-options`] subcommand. +
-To remove more than one JVM option, use a colon (:) to separate the
-options. If the JVM option itself contains a colon, use the backslash
-(\) to offset the colon delimiter.
-5.  To apply your changes, restart GlassFish Server. See
-link:domains.html#ginqj[To Restart a Domain].
-
-[[GSADG00156]][[ggpgz]]
-
-
-Example 4-3 Deleting a JVM Option
-
-This example removes a single JVM option.
-
-[source,oac_no_warn]
-----
-asadmin> delete-jvm-options -Dopt1=A
-
-deleted 1 option(s)
-Command delete-jvm-options executed successfully.
-----
-
-[[GSADG00157]][[ggpkr]]
-
-
-Example 4-4 Deleting Multiple JVM Options
-
-This example removes multiple JVM options.
-
-[source,oac_no_warn]
-----
-asadmin> delete-jvm-options -Doption1=-value1:-Dvariable=\$HOME
-deleted 2 option(s)
-Command delete-jvm-options executed successfully.
-----
-
-[[GSADG849]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-jvm-options` at the command line.
-
-[[ggnbu]][[GSADG00362]][[to-generate-a-jvm-report]]
-
-To Generate a JVM Report
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `generate-jvm-report` subcommand in remote mode to generate a
-JVM report showing the threads (dump of a stack trace), classes, memory,
-and loggers for a specified instance, including the domain
-administration server (DAS). You can generate the following types of
-reports: summary (default), class, thread, log.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Generate the report by using the
-link:../reference-manual/generate-jvm-report.html#GSRFM00138[`generate-jvm-report`] subcommand.
-
-[[GSADG00158]][[ghhkr]]
-
-
-Example 4-5 Generating a JVM Report
-
-This example displays summary information about the threads, classes,
-and memory.
-
-[source,oac_no_warn]
-----
-asadmin> generate-jvm-report --type summary 
-Operating System Information:
-Name of the Operating System: Windows XP
-Binary Architecture name of the Operating System: x86, Version: 5.1
-Number of processors available on the Operating System: 2
-System load on the available processors for the last minute: NOT_AVAILABLE. 
-(Sum of running and queued runnable entities per minute).
-.
-,
-.
-user.home = C:\Documents and Settings\Jennifer
-user.language = en
-user.name = Jennifer
-user.timezone = America/New_York
-user.variant =
-variable = \$HOME
-web.home = C:\Preview\v3_Preview_release\distributions\web\target\
-glassfish\modules\web
-Command generate-jvm-report executed successfully.
-----
-
-[[GSADG850]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help generate-jvm-report` at the command line.
-
-[[ggnde]][[GSADG00545]][[administering-the-profiler]]
-
-Administering the Profiler
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-A profiler generates information used to analyze server performance.
-
-The following topics are addressed here:
-
-* link:#ggneb[To Create a Profiler]
-* link:#ggnem[To Delete a Profiler]
-
-[[ggneb]][[GSADG00363]][[to-create-a-profiler]]
-
-To Create a Profiler
-^^^^^^^^^^^^^^^^^^^^
-
-A server instance is tied to a particular profiler by the profiler
-element in the Java configuration. If JVM options are created for a
-profiler, the options are used to record the settings needed to activate
-a particular profiler. Use the `create-profiler` subcommand in remote
-mode to create the profiler element in the Java configuration.
-
-Only one profiler can exist. If a profiler already exists, you receive
-an error message that directs you to delete the existing profiler before
-creating a new one.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Create a profiler by using the link:../reference-manual/create-profiler.html#GSRFM00050[`create-profiler`]
-subcommand. +
-Information about properties for the subcommand is included in this help
-page.
-3.  To apply your changes, restart GlassFish Server. +
-See link:domains.html#ginqj[To Restart a Domain].
-
-[[GSADG00159]][[ggpla]]
-
-
-Example 4-6 Creating a Profiler
-
-This example creates a profiler named `sample_profiler`.
-
-[source,oac_no_warn]
-----
-asadmin> create-profiler --classpath=/home/appserver/ --nativelibrarypath=/u/home/lib
---enabled=false --property=defaultuser=admin:password=adminadmin sample_profiler
-Command create-profiler executed successfully.
-----
-
-[[GSADG851]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-profiler` at the command line.
-
-[[ggnem]][[GSADG00365]][[to-delete-a-profiler]]
-
-To Delete a Profiler
-^^^^^^^^^^^^^^^^^^^^
-
-Use the `delete-profiler` subcommand in remote mode to delete the
-profiler element from the Java configuration. You can then create a new
-profiler.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Delete the profiler by using the link:../reference-manual/delete-profiler.html#GSRFM00102[`delete-profiler`]
-subcommand.
-3.  To apply your changes, restart GlassFish Server. +
-See link:domains.html#ginqj[To Restart a Domain].
-
-[[GSADG00161]][[ggpkc]]
-
-
-Example 4-7 Deleting a Profiler
-
-This example deletes the profiler named `sample_profiler`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-profiler sample_profiler
-Command delete-profiler executed successfully.
-----
-
-[[GSADG852]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-profiler` at the command line.
-
-
diff --git a/docs/administration-guide/src/main/jbake/content/lifecycle-modules.adoc b/docs/administration-guide/src/main/jbake/content/lifecycle-modules.adoc
deleted file mode 100644
index 3344e0e..0000000
--- a/docs/administration-guide/src/main/jbake/content/lifecycle-modules.adoc
+++ /dev/null
@@ -1,243 +0,0 @@
-type=page
-status=published
-title=Administering Life Cycle Modules
-next=batch.html
-prev=monitoring.html
-~~~~~~
-Administering Life Cycle Modules
-================================
-
-[[GSADG00013]][[giury]]
-
-
-[[administering-life-cycle-modules]]
-9 Administering Life Cycle Modules
-----------------------------------
-
-This chapter provides procedures for administering life cycle modules in
-the GlassFish Server Open Source Edition 5.0 environment.
-
-The following topics are addressed here:
-
-* link:#giuxo[About Life Cycle Modules]
-* link:#giuue[Configuring Life Cycle Modules]
-
-Instructions for accomplishing the tasks in this chapter by using the
-Administration Console are contained in the Administration Console
-online help.
-
-[[giuxo]][[GSADG00566]][[about-life-cycle-modules]]
-
-About Life Cycle Modules
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-Life cycle modules, also known as initialization services, provide a
-means of running short or long duration Java-based tasks within the
-GlassFish Server environment. These modules are automatically initiated
-at server startup and are notified at various phases of the server life
-cycle. Configured properties for a life cycle module are passed as
-properties during server initialization.
-
-All life cycle module classes and interfaces are in the
-as-install`/modules/glassfish-api.jar` file.
-
-A life cycle module listens for and performs its tasks in response to
-the following GlassFish Server sequence of events:
-
-1.  Initialization. The server reads the configuration, initializes
-built-in subsystems (such as security and logging services), and creates
-the containers.
-2.  Startup. The server loads and initializes deployed applications.
-3.  Ready. The server begins servicing requests.
-4.  Shutdown. The server shuts down the applications and stops.
-5.  Termination. The server closes the containers, the built-in
-subsystems, and the server runtime environment.
-
-These events are defined in the `LifecycleEvent` class. For information
-on creating life cycle modules, see "link:../application-development-guide/lifecycle-listeners.html#GSDVG00014[Developing
-Lifecycle Listeners]" in GlassFish Server Open Source Edition
-Application Development Guide.
-
-
-[NOTE]
-=======================================================================
-
-If the `is-failure-fatal` setting is set to true (the default is false),
-life cycle module failure prevents server initialization or startup, but
-not shutdown or termination.
-
-=======================================================================
-
-
-[[giuue]][[GSADG00567]][[configuring-life-cycle-modules]]
-
-Configuring Life Cycle Modules
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following topics are addressed here:
-
-* link:#giuus[To Create a Life Cycle Module]
-* link:#giuvh[To List Life Cycle Modules]
-* link:#giuyh[To Update a Life Cycle Module]
-* link:#giuux[To Delete a Life Cycle Module]
-
-[[giuus]][[GSADG00399]][[to-create-a-life-cycle-module]]
-
-To Create a Life Cycle Module
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `create-lifecycle-module` subcommand in remote mode to create a
-life cycle module.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Create a new life cycle modules by using the
-link:../reference-manual/create-lifecycle-module.html#GSRFM00043[`create-lifecycle-module`] subcommand. +
-Information about options and properties for the subcommand are included
-in this help page.
-3.  Restart the server for your changes to take effect. +
-See link:domains.html#ginqj[To Restart a Domain].
-
-[[GSADG00206]][[giuyo]]
-
-
-Example 9-1 Creating a Life Cycle Module
-
-This example creates the `customSetup` life cycle module :
-
-[source,oac_no_warn]
-----
-asadmin> create-lifecycle-module --classname "com.acme.CustomSetup" 
---classpath "/export/customSetup" --loadorder 1 --failurefatal=true 
---description "this is a sample customSetup" 
---property rmi="Server\=acme1\:7070":timeout=30 customSetup
-Command create-lifecycle-module executed successfully
-----
-
-[[GSADG927]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-lifecycle-module` at the command line.
-
-[[giuvh]][[GSADG00400]][[to-list-life-cycle-modules]]
-
-To List Life Cycle Modules
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `list-lifecycle-modules` subcommand in remote mode to list the
-existing life cycle modules.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List life cycle modules by using the
-link:../reference-manual/list-lifecycle-modules.html#GSRFM00181[`list-lifecycle-modules`] subcommand.
-
-[[GSADG00207]][[giuyr]]
-
-
-Example 9-2 Listing Life Cycle Modules
-
-This example lists the existing life cycle modules.
-
-[source,oac_no_warn]
-----
-asadmin> list-lifecycle-modules
-WSTCPConnectorLCModule
-Command list-lifecycle-modules executed successfully
-----
-
-[[GSADG928]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-lifecycle-modules` at the command line.
-
-[[giuyh]][[GSADG00401]][[to-update-a-life-cycle-module]]
-
-To Update a Life Cycle Module
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `set` subcommand to update an existing life cycle module.
-
-1.  List the properties that can be updated for a life cycle module by
-using the link:../reference-manual/get.html#GSRFM00139[`get`] subcommand. +
-For example (single mode): +
-[source,oac_no_warn]
-----
-asadmin get "*" | grep sampleLCM
-applications.application.sampleLCMmodule.availability-enabled=false
-applications.application.sampleLCMmodule.directory-deployed=false
-applications.application.sampleLCMmodule.enabled=true
-applications.application.sampleLCMmodule.name=sampleLCMmodule
-applications.application.sampleLCMmodule.object-type=user
-applications.application.sampleLCMmodule.property.class-name=example.lc.SampleModule
-applications.application.sampleLCMmodule.property.classpath=/build/lcm.jar
-applications.application.sampleLCMmodule.property.is-failure-fatal=false
-applications.application.sampleLCMmodule.property.isLifecycle=true
-----
-2.  Update a life cycle module by using the olink:GSRFM00226[`set`]
-subcommand.
-3.  Restart the server for your changes to take effect. +
-See link:domains.html#ginqj[To Restart a Domain].
-
-[[GSADG00208]][[giuyq]]
-
-
-Example 9-3 Updating a Life Cycle Module
-
-This example updates the `classpath` property.
-
-[source,oac_no_warn]
-----
-sadmin> set applications.application.sampleLCMmodule.
-property.classpath=/build/lcm_new.jarapplications.application.
-sampleLCMmodule.property.classpath=/build/lcm_new.jar
-Command set executed successfully.
-----
-
-[[GSADG929]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help set` at the command line.
-
-[[giuux]][[GSADG00402]][[to-delete-a-life-cycle-module]]
-
-To Delete a Life Cycle Module
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `delete-lifecycle-module` subcommand in remote mode to delete a
-life cycle module.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the current life cycle modules by using the
-link:../reference-manual/list-lifecycle-modules.html#GSRFM00181[`list-lifecycle-modules`] subcommand.
-3.  Delete a life cycle module by using the
-link:../reference-manual/delete-lifecycle-module.html#GSRFM00095[`delete-lifecycle-module`] subcommand.
-
-[[GSADG00209]][[giuyi]]
-
-
-Example 9-4 Deleting a Life Cycle Module
-
-This example deletes the `customSetup` life cycle module.
-
-[source,oac_no_warn]
-----
-asadmin> delete-lifecycle-module customSetup
-Command delete-lifecycle-module executed successfully
-----
-
-[[GSADG930]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-lifecycle-module` at the command line.
-
-
diff --git a/docs/administration-guide/src/main/jbake/content/loe.adoc b/docs/administration-guide/src/main/jbake/content/loe.adoc
deleted file mode 100644
index e01b741..0000000
--- a/docs/administration-guide/src/main/jbake/content/loe.adoc
+++ /dev/null
@@ -1,282 +0,0 @@
-type=page
-status=published
-title=List of Examples
-next=lof.html
-prev=toc.html
-~~~~~~
-List of Examples
-================
-
-[[list-of-examples]]
-List of Examples
-----------------
-
-* link:overview.html#gkvay[1-1 Determining if the DAS Requires Restart]
-* link:overview.html#gkvba[1-2 Determining if an Instance Requires
-Restart]
-* link:overview.html#sthref5[1-3 Listing Apache Felix Gogo Remote Shell
-Commands]
-* link:overview.html#sthref6[1-4 Running a Remote Shell Command]
-* link:overview.html#gjkrh[1-5 Determining the Services That an OSGi
-Bundle Provides]
-* link:general-administration.html#giwdr[2-1 Running an asadmin Utility
-Subcommand in Single Mode]
-* link:general-administration.html#giwbf[2-2 Specifying an asadmin
-Utility Option With a Subcommand in Single Mode]
-* link:general-administration.html#ghvyk[2-3 Specifying an asadmin
-Utility Option and a Subcommand Option in Single Mode]
-* link:general-administration.html#giwgs[2-4 Displaying Help Information
-for the asadmin Utility]
-* link:general-administration.html#giusg[2-5 Displaying Help Information
-for an asadmin Utility Subcommand]
-* link:general-administration.html#givuq[2-6 Starting a Multimode Session
-With asadmin Utility Options]
-* link:general-administration.html#giwgh[2-7 Starting a Multimode Session
-by Using the multimode Subcommand]
-* link:general-administration.html#ghvzc[2-8 Running a Subcommand in a
-Multimode Session]
-* link:general-administration.html#givul[2-9 Running a Set of asadmin
-Subcommands From a File]
-* link:general-administration.html#sthref7[2-10 Using the --detach Option
-in Single Mode]
-* link:general-administration.html#sthref8[2-11 Using the --detach Option
-in Multimode]
-* link:general-administration.html#sthref9[2-12 Listing Jobs]
-* link:general-administration.html#sthref10[2-13 Attaching to a
-Subcommand and Checking Its Status]
-* link:general-administration.html#sthref11[2-14 Configuring Managed
-Jobs]
-* link:general-administration.html#ggovp[2-15 Creating a System Property]
-* link:general-administration.html#ggopn[2-16 Listing System Properties]
-* link:general-administration.html#ggoph[2-17 Deleting a System Property]
-* link:general-administration.html#sthref12[2-18 Adding Module
-Configuration to domain.xml]
-* link:general-administration.html#sthref13[2-19 Removing Module
-Configuration From domain.xml]
-* link:general-administration.html#sthref14[2-20 Displaying the Current
-Active Configuration of a Module]
-* link:general-administration.html#ggozc[2-21 Adding Resources]
-* link:general-administration.html#ghjnb[2-22 Displaying Version
-Information]
-* link:general-administration.html#ggouk[2-23 Listing Applications]
-* link:general-administration.html#ggown[2-24 Listing Containers]
-* link:general-administration.html#ghlfw[2-25 Listing Modules]
-* link:general-administration.html#ggpdl[2-26 Listing Subcommands]
-* link:general-administration.html#giojj[2-27 Listing Timers]
-* link:general-administration.html#gjhkk[2-28 Showing Status of a
-Component]
-* link:general-administration.html#gjjdi[2-29 Determining the Methods and
-Method Parameters That an Object in the Tree Supports]
-* link:general-administration.html#gjjed[2-30 Retrieving Data for an
-Object in the Tree]
-* link:general-administration.html#gjjen[2-31 Adding an Object to the
-Tree]
-* link:general-administration.html#gjjhd[2-32 Updating an Object in the
-Tree]
-* link:general-administration.html#gjjgp[2-33 Deleting an Object From the
-Tree]
-* link:domains.html#ggoeu[3-1 Creating a Domain]
-* link:domains.html#ggpfv[3-2 Listing Domains]
-* link:domains.html#ghlfx[3-3 Logging In To a Domain on a Remote Machine]
-* link:domains.html#ghldv[3-4 Logging In to a Domain on the Default Port
-of Localhost]
-* link:domains.html#ggoiy[3-5 Deleting a Domain]
-* link:domains.html#ggocw[3-6 Starting a Domain]
-* link:domains.html#gioes[3-7 Stopping a Domain (or Server)]
-* link:domains.html#ggoet[3-8 Restarting a Domain (or Server)]
-* link:domains.html#giupx[3-9 Restarting a Domain in a Browser]
-* link:domains.html#gjzix[3-10 Creating a Service to Restart a DAS
-Automatically on Windows]
-* link:domains.html#gktso[3-11 Querying the Service to Restart a DAS
-Automatically on Windows]
-* link:domains.html#sthref19[3-12 Creating a Service to Restart a DAS
-Automatically on Linux]
-* link:domains.html#giuqp[3-13 Creating a Service to Restart a Domain
-Automatically on Oracle Solaris]
-* link:domains.html#ggoxt[3-14 Backing Up the Default Domain]
-* link:domains.html#ggoys[3-15 Restoring the Default Domain]
-* link:domains.html#ghgsv[3-16 Listing Backups of the Default Domain]
-* link:domains.html#ghlds[3-17 Displaying the DAS Uptime]
-* link:domains.html#gkvkl[3-18 Changing the Administration Port of a
-Domain]
-* link:jvm.html#ghqwm[4-1 Creating JVM Options]
-* link:jvm.html#ggphx[4-2 Listing JVM Options]
-* link:jvm.html#ggpgz[4-3 Deleting a JVM Option]
-* link:jvm.html#ggpkr[4-4 Deleting Multiple JVM Options]
-* link:jvm.html#ghhkr[4-5 Generating a JVM Report]
-* link:jvm.html#ggpla[4-6 Creating a Profiler]
-* link:jvm.html#ggpkc[4-7 Deleting a Profiler]
-* link:threadpools.html#giuez[5-1 Creating a Thread Pool]
-* link:threadpools.html#giugs[5-2 Listing Thread Pools]
-* link:threadpools.html#giuhc[5-3 Updating a Thread Pool]
-* link:threadpools.html#giugt[5-4 Deleting a Thread Pool]
-* link:webapps.html#giyhf[6-1 Invoking a Servlet With a URL]
-* link:webapps.html#giyib[6-2 Invoking a Servlet From Within a JSP File]
-* link:webapps.html#giyis[6-3 Redirecting a URL]
-* link:webapps.html#gixrq[6-4 httpd.conf File for mod_jk]
-* link:webapps.html#gixqt[6-5 workers.properties File for mod_jk]
-* link:webapps.html#gjjzu[6-6 httpd.conf File for Load Balancing]
-* link:webapps.html#gjjzf[6-7 workers.properties File for Load Balancing]
-* link:webapps.html#gjpnc[6-8 http-ssl.conf File for mod_jk Security]
-* link:logging.html#gkmal[7-1 Changing the Name and Location of a
-Cluster's Log File]
-* link:logging.html#gkmgz[7-2 Setting the java.util.logging.config.file
-System Property]
-* link:logging.html#gjiti[7-3 Listing Logger Levels for Modules]
-* link:logging.html#gkkot[7-4 Listing Log Levels for an Instance]
-* link:logging.html#ghmfi[7-5 Changing the Global Log Level for All
-Module Loggers]
-* link:logging.html#ghmev[7-6 Setting the Log Level for a Module Logger]
-* link:logging.html#gjkat[7-7 Setting Log Levels for Multiple Loggers]
-* link:logging.html#sthref23[7-8 Setting the Log File Format using
-set-log-file-format]
-* link:logging.html#sthref24[7-9 Setting the Log File Format using
-set-log-attributes]
-* link:logging.html#sthref25[7-10 Excluding Fields in Log Records]
-* link:logging.html#sthref26[7-11 Setting Multiline Mode]
-* link:logging.html#gkmay[7-12 Changing the Rotation Size]
-* link:logging.html#gkmbc[7-13 Changing the Rotation Interval]
-* link:logging.html#gkmaq[7-14 Changing the Limit Number of Retained
-Files]
-* link:logging.html#gkmav[7-15 Rotating Log Files Manually]
-* link:logging.html#ghphb[7-16 Adding a New Log Handler]
-* link:logging.html#gklap[7-17 Creating a ZIP Archive]
-* link:logging.html#sthref27[7-18 Listing Loggers]
-* link:monitoring.html#gixri[8-1 Enabling the Monitoring Service
-Dynamically]
-* link:monitoring.html#gixre[8-2 Enabling Monitoring for Modules
-Dynamically]
-* link:monitoring.html#gjcmm[8-3 Enabling Monitoring for Modules by Using
-the set Subcommand]
-* link:monitoring.html#gixsc[8-4 Disabling the Monitoring Service
-Dynamically]
-* link:monitoring.html#gjcnw[8-5 Disabling Monitoring for Modules
-Dynamically]
-* link:monitoring.html#gixpg[8-6 Disabling Monitoring by Using the set
-Subcommand]
-* link:monitoring.html#ghljw[8-7 Viewing Common Monitoring Data]
-* link:monitoring.html#ghlre[8-8 Viewing Attributes for a Specific Type]
-* link:monitoring.html#ghbgv[8-9 Viewing Monitorable Applications]
-* link:monitoring.html#ghbfj[8-10 Viewing Attributes for an Application]
-* link:monitoring.html#ghbge[8-11 Viewing a Specific Attribute]
-* link:lifecycle-modules.html#giuyo[9-1 Creating a Life Cycle Module]
-* link:lifecycle-modules.html#giuyr[9-2 Listing Life Cycle Modules]
-* link:lifecycle-modules.html#giuyq[9-3 Updating a Life Cycle Module]
-* link:lifecycle-modules.html#giuyi[9-4 Deleting a Life Cycle Module]
-* link:batch.html#sthref67[10-1 Listing Batch Jobs]
-* link:batch.html#sthref68[10-2 Listing Batch Job Executions]
-* link:batch.html#sthref69[10-3 Listing Batch Job Steps]
-* link:batch.html#sthref70[10-4 Listing the Batch Runtime Configuration]
-* link:batch.html#sthref71[10-5 Configuring the Batch Runtime]
-* link:jdbc.html#ggooc[11-1 Starting a Database]
-* link:jdbc.html#ggorc[11-2 Stopping a Database]
-* link:jdbc.html#ggrgh[11-3 Creating a JDBC Connection Pool]
-* link:jdbc.html#ggpcf[11-4 Listing JDBC Connection Pools]
-* link:jdbc.html#ggpcs[11-5 Contacting a Connection Pool]
-* link:jdbc.html#gjirk[11-6 Resetting (Flushing) a Connection Pool]
-* link:jdbc.html#ggpis[11-7 Deleting a JDBC Connection Pool]
-* link:jdbc.html#ggplj[11-8 Creating a JDBC Resource]
-* link:jdbc.html#ggpgi[11-9 Listing JDBC Resources]
-* link:jdbc.html#gjkrz[11-10 Updating a JDBC Resource]
-* link:jdbc.html#ggpga[11-11 Deleting a JDBC Resource]
-* link:connectors.html#giocc[12-1 Creating a Connector Connection Pool]
-* link:connectors.html#giody[12-2 Listing Connector Connection Pools]
-* link:connectors.html#giohd[12-3 Deleting a Connector Connection Pool]
-* link:connectors.html#giogn[12-4 Creating a Connector Resource]
-* link:connectors.html#gioia[12-5 Listing Connector Resources]
-* link:connectors.html#giokh[12-6 Deleting a Connector Resource]
-* link:connectors.html#gionp[12-7 Creating a Resource Adapter
-Configuration]
-* link:connectors.html#gioof[12-8 Listing Configurations for a Resource
-Adapter]
-* link:connectors.html#giorj[12-9 Deleting a Resource Adapter
-Configuration]
-* link:connectors.html#giuxc[12-10 Creating a Connector Security Map]
-* link:connectors.html#giuwj[12-11 Listing All Connector Security Maps
-for a Connector Connection Pool]
-* link:connectors.html#giuyc[12-12 Listing Principals for a Specific
-Security Map for a Connector Connection Pool]
-* link:connectors.html#giuuf[12-13 Listing Principals of All Connector
-Security Maps for a Connector Connection Pool]
-* link:connectors.html#giuwi[12-14 Updating a Connector Security Map]
-* link:connectors.html#giuvr[12-15 Deleting a Connector Security Map]
-* link:connectors.html#giokw[12-16 Creating Connector Work Security Maps]
-* link:connectors.html#gionj[12-17 Listing the Connector Work Security
-Maps]
-* link:connectors.html#gioll[12-18 Updating a Connector Work Security
-Map]
-* link:connectors.html#giolk[12-19 Deleting a Connector Work Security
-Map]
-* link:connectors.html#giokx[12-20 Creating an Administered Object]
-* link:connectors.html#giokg[12-21 Listing Administered Objects]
-* link:connectors.html#giolc[12-22 Deleting an Administered Object]
-* link:http_https.html#gjhos[13-1 Creating an HTTP Protocol]
-* link:http_https.html#gjhqg[13-2 Listing the Protocols]
-* link:http_https.html#gjhop[13-3 Deleting a Protocol]
-* link:http_https.html#gjhnz[13-4 Creating an HTTP Configuration]
-* link:http_https.html#gjhov[13-5 Deleting an HTTP Configuration]
-* link:http_https.html#gjhpx[13-6 Creating a Transport]
-* link:http_https.html#gjhqj[13-7 Listing HTTP Transports]
-* link:http_https.html#gjhoh[13-8 Deleting a Transport]
-* link:http_https.html#ggpjk[13-9 Creating an HTTP Listener]
-* link:http_https.html#gjimj[13-10 Creating a Network Listener]
-* link:http_https.html#ggpgw[13-11 Listing HTTP Listeners]
-* link:http_https.html#giwiw[13-12 Updating an HTTP Network Listener]
-* link:http_https.html#ggpjr[13-13 Deleting an HTTP Listener]
-* link:http_https.html#ggphv[13-14 Configuring an HTTP Listener for SSL]
-* link:http_https.html#ggpln[13-15 Deleting SSL From an HTTP Listener]
-* link:http_https.html#ggpha[13-16 Creating a Virtual Server]
-* link:http_https.html#ggpgr[13-17 Listing Virtual Servers]
-* link:http_https.html#ggpmd[13-18 Deleting a Virtual Server]
-* link:concurrent.html#sthref74[14-1 Creating a Context Service]
-* link:concurrent.html#sthref75[14-2 Listing Context Services]
-* link:concurrent.html#sthref76[14-3 Deleting a Context Service]
-* link:concurrent.html#sthref77[14-4 Creating a Managed Thread Factory]
-* link:concurrent.html#sthref78[14-5 Listing Managed Thread Factories]
-* link:concurrent.html#sthref79[14-6 Deleting a Managed Thread Factory]
-* link:concurrent.html#sthref80[14-7 Creating a Managed Executor Service]
-* link:concurrent.html#sthref81[14-8 Listing Managed Executor Services]
-* link:concurrent.html#sthref82[14-9 Deleting a Managed Executor Service]
-* link:concurrent.html#sthref83[14-10 Creating a Managed Scheduled
-Executor Service]
-* link:concurrent.html#sthref84[14-11 Listing Managed Scheduled Executor
-Services]
-* link:concurrent.html#sthref85[14-12 Deleting a Managed Scheduled
-Executor Service]
-* link:orb.html#gipfl[15-1 Creating an IIOP Listener]
-* link:orb.html#gipcm[15-2 Listing IIOP Listeners]
-* link:orb.html#giwlj[15-3 Updating an IIOP Listener]
-* link:orb.html#giped[15-4 Deleting an IIOP Listener]
-* link:javamail.html#gipfs[16-1 Creating a JavaMail Resource]
-* link:javamail.html#gipfe[16-2 Listing JavaMail Resources]
-* link:javamail.html#giwjb[16-3 Updating a JavaMail Resource]
-* link:javamail.html#gipcd[16-4 Deleting a JavaMail Resource]
-* link:jms.html#gipbb[17-1 Creating a JMS Host]
-* link:jms.html#gipdw[17-2 Listing JMS Hosts]
-* link:jms.html#givlz[17-3 Updating a JMS Host]
-* link:jms.html#gipbj[17-4 Deleting a JMS Host]
-* link:jms.html#giovy[17-5 Creating a JMS Connection Factory]
-* link:jms.html#giovn[17-6 Creating a JMS Destination]
-* link:jms.html#giovz[17-7 Listing All JMS Resources]
-* link:jms.html#giovq[17-8 Listing a JMS Resources of a Specific Type]
-* link:jms.html#giovi[17-9 Deleting a JMS Resource]
-* link:jms.html#gioxt[17-10 Creating a JMS Physical Destination]
-* link:jms.html#gioxo[17-11 Listing JMS Physical Destinations]
-* link:jms.html#giows[17-12 Flushing Messages From a JMS Physical
-Destination]
-* link:jms.html#gioxx[17-13 Deleting a Physical Destination]
-* link:jndi.html#gioyi[18-1 Creating a Custom Resource]
-* link:jndi.html#gioyr[18-2 Listing Custom Resources]
-* link:jndi.html#giwkg[18-3 Updating a Custom JNDI Resource]
-* link:jndi.html#gioxh[18-4 Deleting a Custom Resource]
-* link:jndi.html#giwcx[18-5 Registering an External JNDI Resource]
-* link:jndi.html#giwbe[18-6 Listing JNDI Resources]
-* link:jndi.html#giwal[18-7 Listing JNDI Entries]
-* link:jndi.html#giwoa[18-8 Updating an External JNDI Resource]
-* link:jndi.html#giwby[18-9 Deleting an External JNDI Resource]
-* link:transactions.html#giufq[19-1 Stopping the Transaction Service]
-* link:transactions.html#giufy[19-2 Rolling Back a Transaction]
-* link:transactions.html#giuef[19-3 Restarting the Transaction Service]
-* link:transactions.html#giugn[19-4 Manually Recovering Transactions]
-
-
diff --git a/docs/administration-guide/src/main/jbake/content/lof.adoc b/docs/administration-guide/src/main/jbake/content/lof.adoc
deleted file mode 100644
index 1ebfb79..0000000
--- a/docs/administration-guide/src/main/jbake/content/lof.adoc
+++ /dev/null
@@ -1,19 +0,0 @@
-type=page
-status=published
-title=List of Figures
-next=lot.html
-prev=loe.html
-~~~~~~
-List of Figures
-===============
-
-[[list-of-figures]]
-List of Figures
----------------
-
-* link:general-administration.html#gjjce[2-1 Web Page for the REST
-Resource for Managing a Domain]
-* link:general-administration.html#gkwku[2-2 Web Page for the REST
-Resource That Provides Class Loader Statistics]
-
-
diff --git a/docs/administration-guide/src/main/jbake/content/logging.adoc b/docs/administration-guide/src/main/jbake/content/logging.adoc
deleted file mode 100644
index 80154c5..0000000
--- a/docs/administration-guide/src/main/jbake/content/logging.adoc
+++ /dev/null
@@ -1,1426 +0,0 @@
-type=page
-status=published
-title=Administering the Logging Service
-next=monitoring.html
-prev=webapps.html
-~~~~~~
-Administering the Logging Service
-=================================
-
-[[GSADG00010]][[abluj]]
-
-
-[[administering-the-logging-service]]
-7 Administering the Logging Service
------------------------------------
-
-This chapter provides instructions on how to configure logging and how
-to view log information in the GlassFish Server Open Source Edition 5.0
-environment.
-
-The following topics are addressed here:
-
-* link:#abluk[About Logging]
-* link:#gklmn[Configuring the Logging Service]
-* link:#gkobx[Viewing Log Records]
-* link:#CEGGHGIJ[Listing Loggers]
-
-Instructions for accomplishing these tasks and editing logging service
-properties in the Administration Console are available from the
-Administration Console online help.
-
-[[abluk]][[GSADG00554]][[about-logging]]
-
-About Logging
-~~~~~~~~~~~~~
-
-Logging is the process by which GlassFish Server Open Source Edition
-captures information about events that occur, such as configuration
-errors, security failures, or server malfunction. This data is recorded
-in log files and is usually the first source of information when
-problems occur. Analyzing the log files can help you to follow events
-that occur in the server runtime and determine the overall health of the
-server.
-
-Although application components can use the Apache Commons Logging
-Library to record messages, the platform standard JSR 47 Logging API is
-recommended for better log configuration. For more information about JSR
-47, see `http://jcp.org/en/jsr/detail?id=47`.
-
-The following topics are addressed here:
-
-* link:#ablul[Log Files]
-* link:#gkres[Logger Namespaces]
-* link:#gkjft[Logging Targets]
-* link:#gkkit[Logging Properties]
-
-[[ablul]][[GSADG00719]][[log-files]]
-
-Log Files
-^^^^^^^^^
-
-GlassFish Server Open Source Edition log records are captured in the
-server log file, which captures information about the operation of a
-server instance running in the domain. Each instance, managed server
-instance (that is, each cluster member), and the domain administration
-server (DAS) has an individual server log file.
-
-The following topics are addressed here:
-
-* link:#gkmep[Log File Names and Locations]
-* link:#gkmex[Log Records]
-* link:#gkmdz[Log Rotation]
-
-[[gkmep]][[GSADG00644]][[log-file-names-and-locations]]
-
-Log File Names and Locations
-++++++++++++++++++++++++++++
-
-In an GlassFish Server Open Source Edition domain, log files have the
-following name and location by default:
-
-[width="100%",cols="27%,73%",options="header",]
-|====================================================
-|Instance |Default Log File Name and Location
-|DAS |domain-dir`/logs/server.log`
-|Each server instance |instance-dir`/logs/server.log`
-|Cluster instance |instance-dir`/logs/server.log`
-|====================================================
-
-
-For example, in a domain hosted on a given machine that includes a
-cluster with two managed servers (`ClusterServer1` and `ClusterServer1`)
-and a standalone instance (`StandaloneServer`), the log files might be
-arranged in the following directory structure. In this directory
-structure, the `server.log` file for the DAS is located in
-domain-dir`/logs`.
-
-[source,oac_no_warn]
-----
-as-install-parent directory
-     glassfish/
-         domains/
-             domain-dir/
-                         logs/
-                            server.log
-         nodes/
-             hostname/
-                         ClusterServer1/
-                                      logs/
-                                         server.log
-                         ClusterServer2/
-                                      logs/
-                                         server.log
-                         StandaloneServer/
-                                      logs/
-                                         server.log
-----
-
-You can change the default name or location of a log file by modifying
-the logging properties file for the corresponding instance, described in
-link:#gkmak[To Change the Name and Location of the Log File].
-
-[[gkmex]][[GSADG00645]][[log-records]]
-
-Log Records
-+++++++++++
-
-GlassFish Server Open Source Edition writes log records in either the
-Oracle Diagnostics Logging (ODL) format or the Uniform Log Formatter
-(ULF) format. The default format is ODL. For information about changing
-the format, see link:#CEGDJEBG[Setting the Log File Format].
-
-A custom formatter can also be used by specifying the fully qualified
-name of a class that extends the `java.util.logging.Formatter` class.
-The custom formatter class can be packaged in a JAR file and placed in
-the domain-dir`/lib/ext` directory, or implemented as a Hundred-Kilobyte
-Kernel (HK2) service and the JAR containing the formatter implementation
-placed in the as-install`/modules` directory.
-
-Log records formatted in the ODL format are displayed as follows:
-
-[source,oac_no_warn]
-----
-[yyyy-mm-ddThh:mm:ss.SSS-Z][ProductName-Version][Log Level]
-[Message ID][LoggerName][Key Value Pairs][[
-  Message]]
-----
-
-* `[` and `]` mark the beginning and end of fields in the record. Some
-fields may be empty.
-* yyyy-mm-dd`T`hh:mm:ss.SSSS-Z represents the date and time that the
-record was created. For example: `2013-04-12T08:08:30.154-0700`
-* ProductName-Version represents the current version of GlassFish Server
-Open Source Edition. For example: `glassfish`
-* Log Level represents the log level. You can set any of the following
-values: `EMERGENCY`, `ALERT`, `SEVERE`, `WARNING`, `INFO`, `CONFIG`,
-`FINE`, `FINER`, and `FINEST`. The default is `INFO`.
-* Message ID consists of a module code that indicates the origin of the
-message and the message number. For example: `AS-WEB-GLUE-00172`
-* LoggerName represents a hierarchical logger namespace that identifies
-the source of the log module. For example: `jakarta.enterprise.web`
-* Key Value Pairs represents pairs of key names and values. For example:
-`timeMillis: 1365779310154`
-* Message represents the text of the log message. For multiline
-messages, `[[` marks the end of the first line, and `]]` marks the end
-of the message. Multiline messages start on a new line after the message
-header and are indented.
-
-The following is an example of a log record formatted in the ODL format:
-
-[source,oac_no_warn]
-----
-[2013-04-12T08:08:30.154-0700] [glassfish 4.0] [INFO] [AS-WEB-GLUE-00172] [jakarta.enterprise.web] [tid: _ThreadID=217 _ThreadName=admin-listener(21)]
-[timeMillis: 1365779310154] [levelValue: 800] [[
-  Loading application [payroll] at [/payroll]]]
-----
-
-Log records formatted in the ULF format are displayed as follows:
-
-[source,oac_no_warn]
-----
-[#|yyyy-mm-ddThh:mm:ss.SSS-Z|Log Level|ProductName-Version|LoggerName|Key Value Pairs|Message|#]
-----
-
-* `[#` and `#]` mark the beginning and end of the record.
-* The vertical bar (`|`) separates the fields of the record.
-* yyyy-mm-dd`T`hh:mm:ss.SSSS-Z represents the date and time that the
-record was created. For example: `2013-04-18T09:27:44.315-0700`
-* Log Level represents the log level. You can set any of the following
-values: `EMERGENCY`, `ALERT`, `SEVERE`, `WARNING`, `INFO`, `CONFIG`,
-`FINE`, `FINER`, and `FINEST`. The default is `INFO`.
-* ProductName-Version represents the current version of GlassFish Server
-Open Source Edition. For example: `glassfish`
-* LoggerName represents a hierarchical logger namespace that identifies
-the source of the log module. For example: `jakarta.enterprise.web.core`
-* Key Value Pairs represents pairs of key names and values and can
-include a message ID. For example: `_MessageID=AS-WEB-CORE-00306`. +
-Message IDs are included for all GlassFish Server Open Source Edition
-`EMERGENCY`, `ALERT`, `SEVERE`, and `WARNING` messages, and for many
-`INFO` messages.
-* Message represents the text of the log message. Multiline messages
-start on a new line after the message header and are indented.
-
-The following is an example of a log record formatted in the ULF format:
-
-[source,oac_no_warn]
-----
-[#|2013-04-18T09:27:44.315-0700|INFO|glassfish 6.0|jakarta.enterprise.web.core|
-_ThreadID=15;_ThreadName=RunLevelControllerThread-1366302462682;_TimeMillis=1366302464315;_LevelValue=800;_MessageID=AS-WEB-CORE-00306;|
-  Setting JAAS app name glassfish-web|#]
-----
-
-The Administration Console presents log records in a more readable
-display. For information about viewing log records using the
-Administration Console, see link:#gkobx[Viewing Log Records].
-
-[[gkmdz]][[GSADG00646]][[log-rotation]]
-
-Log Rotation
-++++++++++++
-
-By default, when a log file grows to 2 MB, GlassFish Server Open Source
-Edition renames (rotates) the file to incorporate a timestamp and
-creates a new log file. The log file is renamed as `server.log_`date,
-where date is the date and time that the file was rotated.
-
-You can configure the logging service to change the default settings for
-log file rotation, as explained in link:#gklni[Setting Log File
-Rotation].
-
-[[gkres]][[GSADG00720]][[logger-namespaces]]
-
-Logger Namespaces
-^^^^^^^^^^^^^^^^^
-
-GlassFish Server Open Source Edition provides a logger for each of its
-modules. The following list is an example of the logger namespaces in a
-server instance as they appear when using the `list-log-levels`
-subcommand.
-
-[source,oac_no_warn]
-----
-java.util.logging.ConsoleHandler     <FINEST>
-jakarta.enterprise.resource.corba     <INFO>
-jakarta.enterprise.resource.javamail  <INFO>
-jakarta.enterprise.resource.jdo       <INFO>
-jakarta.enterprise.resource.jms       <INFO>
-jakarta.enterprise.resource.jta       <INFO>
-jakarta.enterprise.resource.resourceadapter     <INFO>
-jakarta.enterprise.resource.sqltrace  <INFO>
-jakarta.enterprise.resource.webcontainer.jsf.application  <INFO>
-jakarta.enterprise.resource.webcontainer.jsf.config       <INFO>
-jakarta.enterprise.resource.webcontainer.jsf.context      <INFO>
-jakarta.enterprise.resource.webcontainer.jsf.facelets     <INFO>
-jakarta.enterprise.resource.webcontainer.jsf.lifecycle    <INFO>
-jakarta.enterprise.resource.webcontainer.jsf.managedbean  <INFO>
-jakarta.enterprise.resource.webcontainer.jsf.renderkit    <INFO>
-jakarta.enterprise.resource.webcontainer.jsf.resource     <INFO>
-jakarta.enterprise.resource.webcontainer.jsf.taglib       <INFO>
-jakarta.enterprise.resource.webcontainer.jsf.timing       <INFO>
-jakarta.enterprise.system.container.cmp         <INFO>
-jakarta.enterprise.system.container.ejb         <INFO>
-jakarta.enterprise.system.container.ejb.mdb     <INFO>
-jakarta.enterprise.system.container.web         <INFO>
-jakarta.enterprise.system.core.classloading     <INFO>
-jakarta.enterprise.system.core.config   <INFO>
-jakarta.enterprise.system.core.naming   <INFO>
-jakarta.enterprise.system.core.security <INFO>
-jakarta.enterprise.system.core.selfmanagement   <INFO>
-jakarta.enterprise.system.core.transaction      <INFO>
-jakarta.enterprise.system     <INFO>
-jakarta.enterprise.system.tools.admin   <INFO>
-jakarta.enterprise.system.tools.backup  <INFO>
-jakarta.enterprise.system.tools.deployment      <INFO>
-jakarta.enterprise.system.util          <INFO>
-jakarta.enterprise.system.webservices.registry  <INFO>
-jakarta.enterprise.system.webservices.rpc       <INFO>
-jakarta.enterprise.system.webservices.saaj      <INFO>
-javax     <INFO>
-org.apache.catalina    <INFO>
-org.apache.coyote      <INFO>
-org.apache.jasper      <INFO>
-org.jvnet.hk2.osgiadapter   <INFO>
-----
-
-For information about how to display logger namespaces and log levels,
-see link:#gjirr[To List Log Levels]. For information about how to
-display a list of loggers and logger details, see link:#CEGGICGF[To List
-Loggers].
-
-[[gkjft]][[GSADG00721]][[logging-targets]]
-
-Logging Targets
-^^^^^^^^^^^^^^^
-
-Each instance in an GlassFish Server Open Source Edition domain has a
-dedicated log file, and each instance and cluster has its own logging
-properties file. To configure logging for an instance or a cluster,
-GlassFish Server Open Source Edition allows you target specific log
-files or logging properties files when you do the following:
-
-* Set global or module-specific log levels
-* Rotate log files or compress them into a ZIP archive
-* Change logging property attributes
-* List log levels or log attributes
-
-The following subcommands optionally accept a target specification. A
-target can be a configuration name, server name, cluster name, or
-instance name, and is specified as either an operand or as a value
-passed using the `--target` option. If no target is specified when using
-any of these subcommands, the default target is the DAS.
-
-[width="100%",cols="27%,47%,26%",options="header",]
-|=======================================================================
-|Subcommand |Description |Target Specification
-|link:../reference-manual/collect-log-files.html#GSRFM00007[`collect-log-files`] |Collects all available log files
-into a ZIP archive. |`--target``=`target-name
-
-|link:../reference-manual/list-log-attributes.html#GSRFM00182[`list-log-attributes`] |Lists logging attributes in
-the logging properties file. |target-name operand
-
-|link:../reference-manual/list-log-levels.html#GSRFM00183[`list-log-levels`] |Lists the loggers in the logging
-properties file and their log levels. |target-name operand
-
-|link:../reference-manual/rotate-log.html#GSRFM00224[`rotate-log`] |Rotates the log file by renaming it and
-creating a new log file to store new messages. |`--target``=`target-name
-
-|link:../reference-manual/set-log-attributes.html#GSRFM00227[`set-log-attributes`] |Sets the specified logging
-attributes in the logging properties file. |`--target``=`target-name
-
-|link:../reference-manual/set-log-file-format.html#GSRFM879[`set-log-file-format`] |Sets the log file formatter.
-|`--target``=`target-name
-
-|link:../reference-manual/set-log-levels.html#GSRFM00228[`set-log-levels`] |Sets the log level for one or more
-loggers listed in the logging properties file. |`--target``=`target-name
-|=======================================================================
-
-
-[[gkkit]][[GSADG00722]][[logging-properties]]
-
-Logging Properties
-^^^^^^^^^^^^^^^^^^
-
-The DAS as well as each configuration, instance, and cluster has its own
-set of logging properties that are maintained in individual
-configuration files. A logging properties file is named
-`logging.properies` and includes the following information:
-
-* Log file name and location
-* Logger names and levels
-* Properties for custom handlers
-* Log rotation and logger format properties
-
-By default in an GlassFish Server Open Source Edition domain, logging
-properties files are created in the following locations:
-
-[width="100%",cols="18%,82%",options="header",]
-|=======================================================================
-|Target |Default Location of Logging Properties File
-|DAS |domain-dir`/config``/logging.properties`
-
-|A configuration |domain-dir`/config/`config-name`/logging.properties`,
-where config-name represents the name of a configuration that is shared
-by one or more instances or clusters.
-
-|An instance
-|domain-dir`/config``/`instance-name`-config/logging.properties`, where
-instance-name represents the name of the instance.
-
-|A cluster
-|domain-dir`/config/`cluster-name`-config/logging.properties`, where
-cluster-name represents the name of the cluster.
-|=======================================================================
-
-
-For information about configuring logging properties, see
-link:#gklmn[Configuring the Logging Service].
-
-[[gklmn]][[GSADG00555]][[configuring-the-logging-service]]
-
-Configuring the Logging Service
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This section contains the following topics:
-
-* link:#gklmx[Changing the Name and Location of Logging Service Files]
-* link:#gklml[Setting Log Levels]
-* link:#CEGDJEBG[Setting the Log File Format]
-* link:#gklni[Setting Log File Rotation]
-* link:#gklnk[Adding a Custom Logging Handler]
-
-[[gklmx]][[GSADG00723]][[changing-the-name-and-location-of-logging-service-files]]
-
-Changing the Name and Location of Logging Service Files
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This section explains how to change the name and location of the
-following logging service files:
-
-* Log file
-* Logging properties file
-
-[[gkmak]][[GSADG00375]][[to-change-the-name-and-location-of-the-log-file]]
-
-To Change the Name and Location of the Log File
-+++++++++++++++++++++++++++++++++++++++++++++++
-
-To change the name and location of the log file, first use the
-`list-log-attributes` subcommand to obtain the current log attribute
-setting for the log file name and location. Then use the
-`set-log-attributes` subcommand to specify the new name or location. The
-default target for these two subcommands is the DAS. However, you can
-optionally specify one of the following targets:
-
-* Configuration name — to target all instances or clusters that share a
-specific configuration name.
-* Server name — to target only a specific server.
-* Instance name — to target only a specific instance.
-* Cluster name — to target only a specific cluster.
-
-1.  Ensure that the target server or cluster is running. +
-Remote subcommands require a running server.
-2.  Use the link:../reference-manual/list-log-attributes.html#GSRFM00182[`list-log-attributes`] subcommand in remote
-mode to obtain the current log attribute settings. +
-The name and location of the log file is set with the
-`com.sun.enterprise.server.logging.GFFileHandler.file` attribute of the
-logging properties file. Optionally you can target a configuration,
-server, instance, or cluster. If you do not specify a target, the log
-attribute settings for the DAS are displayed.
-3.  Use the link:../reference-manual/set-log-attributes.html#GSRFM00227[`set-log-attributes`] subcommand in remote
-mode to define a custom name or location of the log file. +
-If you do not specify a target, the log file for the DAS is targeted by
-default. If you target a cluster, the name of the cluster log file for
-each member instance can be changed (the server log file name cannot).
-
-[[GSADG00174]][[gkmal]]
-
-
-Example 7-1 Changing the Name and Location of a Cluster's Log File
-
-This example changes the name of the cluster log file for `Cluster1` to
-`cluster1.log`. `Cluster1` has two server instances: `ClusterServer1`
-and `ClusterServer2`.
-
-[source,oac_no_warn]
-----
-asadmin> list-log-attributes Cluster1
-com.sun.enterprise.server.logging.GFFileHandler.alarms <false>
-com.sun.enterprise.server.logging.GFFileHandler.file 
-<${com.sun.aas.instanceRoot}/logs/server.log>
-com.sun.enterprise.server.logging.GFFileHandler.flushFrequency  <1>
-.
-.
-.
-log4j.logger.org.hibernate.validator.util.Version <warn>
-Command list-log-attributes executed successfully.
-asadmin> set-log-attributes --target Cluster1
-com.sun.enterprise.server.logging.GFFileHandler.file=
-${com.sun.aas.instanceRoot}/logs/cluster1.log
-com.sun.enterprise.server.logging.GFFileHandler.file
-logging attribute set with value ${com.sun.aas.instanceRoot}/logs/cluster1.log
-These logging attributes are set for Cluster1.
-ClusterServer1 :
-com.sun.enterprise.server.logging.GFFileHandler.file
-logging attribute set with value ${com.sun.aas.instanceRoot}/logs/cluster1.log
-These logging attributes are set for Cluster1.
-
-ClusterServer2 :
-com.sun.enterprise.server.logging.GFFileHandler.file
-logging attribute set with value ${com.sun.aas.instanceRoot}/logs/cluster1.log
-These logging attributes are set for Cluster1.
-
-Command set-log-attributes executed successfully.
-----
-
-[[GSADG864]]
-
-See Also
-
-You can view the full syntax and options of these subcommands by typing
-`asadmin help list-log-levels` and `asadmin help set-log-attributes` at
-the command line.
-
-[[gkmcz]][[GSADG00376]][[to-change-the-name-and-location-of-the-logging-properties-file]]
-
-To Change the Name and Location of the Logging Properties File
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-You can set the name and location of the logging properties file by
-setting the `java.util.logging.config.file` system property. By setting
-this system property, you can have a single logging properties file that
-is used by all instances running on the same host.
-
-
-[NOTE]
-=======================================================================
-
-Setting the `java.util.logging.config.file` system property causes all
-other GlassFish Server Open Source Edition logging properties files on
-the host to be overridden.
-
-=======================================================================
-
-
-1.  Set the `java.util.logging.config.file` system property. +
-For example, you can use the following `java` command: +
-[source,oac_no_warn]
-----
-java -Djava.util.logging.config.file=properties_file
-----
-Alternatively, you can use the Administration Console to set this system
-property.
-2.  To apply your change, restart GlassFish Server Open Source Edition.
-
-[[GSADG00175]][[gkmgz]]
-
-
-Example 7-2 Setting the `java.util.logging.config.file` System Property
-
-The following example changes the location of the logging properties
-file to `/space/mylogging/logging.properties`:
-
-[source,oac_no_warn]
-----
-java -Djava.util.logging.config.file=/space/mylogging/logging.properties
-----
-
-[[gklml]][[GSADG00724]][[setting-log-levels]]
-
-Setting Log Levels
-^^^^^^^^^^^^^^^^^^
-
-The log level determines the granularity of the message that is logged,
-from error only (`EMERGENCY`) to detailed debug (`FINEST`). The
-following values apply: `EMERGENCY`, `ALERT`, `SEVERE`, `WARNING`,
-`INFO`, `CONFIG`, `FINE`, `FINER`, and `FINEST`. These log levels are
-hierarchically inclusive, which means that if you set a particular log
-level, such as INFO, the messages that have log levels above that level
-(`EMERGENCY`, `ALERT`, `SEVERE`, and `WARNING`,) are also included. If
-you set the log level to the lowest level, `FINEST`, your output
-includes all the messages in the file. The default setting is `INFO`.
-
-You can list current log levels of all loggers specified in the
-`logging properties` file. In some cases, loggers that have not been
-created by the respective containers will also appear in the list.
-
-You can set log levels that are global or logger-specific. When you set
-a global log level, the log level goes into effect for all loggers. If
-you set the log level for a specific logger that is different from the
-global log level, the logger-specific setting takes precedence. In
-addition, when setting log levels, you can target a configuration,
-server, instance, or cluster.
-
-Because setting log levels is a dynamic operation, you do not need to
-restart GlassFish Server Open Source Edition for changes to take effect.
-
-Setting either global or logger-specific log levels is done by using the
-`set-log-levels` subcommand. Listing log levels is done by using the
-`list-log-levels` subcommand.
-
-The following topics are addressed here:
-
-* link:#gjirr[To List Log Levels]
-* link:#ghmep[To Set the Global Log Level]
-* link:#ghmdu[To Set Module Log Levels]
-
-[[gjirr]][[GSADG00377]][[to-list-log-levels]]
-
-To List Log Levels
-++++++++++++++++++
-
-GlassFish Server Open Source Edition provides the means to list all
-loggers and their log levels. Listing the loggers provides a convenient
-means to view current loggers and log levels either prior to or after
-making log level changes.
-
-Use the `list-log-levels` subcommand in remote mode to list the modules
-and their current log levels. The default target for this subcommand is
-the DAS. However, you can optionally specify one of the following
-targets:
-
-* Configuration name — to target all instances or clusters that share a
-specific configuration name.
-* Server name — to target a specific server.
-* Instance name — to target a specific instance.
-* Cluster name — to target a specific cluster.
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  List the existing module loggers and log levels by using the
-link:../reference-manual/list-log-levels.html#GSRFM00183[`list-log-levels`] subcommand.
-
-[[GSADG00176]][[gjiti]]
-
-
-Example 7-3 Listing Logger Levels for Modules
-
-This example shows a partial list of the existing loggers and their log
-levels in the DAS.
-
-[source,oac_no_warn]
-----
-asadmin> list-log-levels 
-jakarta.enterprise.system.container.cmp <INFO>
-jakarta.enterprise.system.tools.admin <INFO>
-java.util.logging.ConsoleHandler <FINEST>
-jakarta.enterprise.system.container.web <INFO>
-jakarta.enterprise.system.util <INFO>
-jakarta.enterprise.resource.webcontainer.jsf.timing <INFO>
-javax <INFO>
-jakarta.enterprise.resource.corba <INFO>
-...
-Command list-log-levels executed successfully.
-----
-
-[[GSADG00177]][[gkkot]]
-
-
-Example 7-4 Listing Log Levels for an Instance
-
-This example shows a partial list of the loggers and log levels for the
-instance `MyServer2`.
-
-[source,oac_no_warn]
-----
-asadmin> list-log-levels MyServer2
-java.util.logging.ConsoleHandler <FINEST>
-jakarta.enterprise.resource.corba  <INFO>
-jakarta.enterprise.resource.javamail   <INFO>
-jakarta.enterprise.resource.jdo <INFO>
-jakarta.enterprise.resource.jms <INFO>
-jakarta.enterprise.resource.jta <INFO>
-jakarta.enterprise.resource.resourceadapter <INFO>
-jakarta.enterprise.resource.sqltrace <FINE>
-...
-Command list-log-levels executed successfully.
-----
-
-[[GSADG865]]
-
-See Also
-
-You can view the full syntax and options of the subcommand by typing
-`asadmin help list-log-levels` at the command line.
-
-[[ghmep]][[GSADG00378]][[to-set-the-global-log-level]]
-
-To Set the Global Log Level
-+++++++++++++++++++++++++++
-
-The global log level specifies the events that are logged across all
-loggers. The default level for messages output to the console is `INFO`
-(which also includes `EMERGENCY`, `ALERT`, `SEVERE`, and `WARNING`
-messages).
-
-Use the `set-log-levels` subcommand in remote mode to set the global log
-level. The default target for this subcommand is the DAS. However, you
-can optionally specify one of the following targets using the `--target`
-option:
-
-* Configuration name — to target all instances or clusters that share a
-specific configuration name.
-* Server name — to target a specific server.
-* Instance name — to target a specific instance.
-* Cluster name — to target a specific cluster.
-
-1.  Ensure that the target server or cluster is running.
-2.  Set the global log level by using the
-link:../reference-manual/set-log-levels.html#GSRFM00228[`set-log-levels`] subcommand, specifying the log level
-of the `java.util.logging.ConsoleHandler` logger. +
-The `ConsoleHandler` has a separate log level setting that limits the
-messages that are displayed. For example: +
-[source,oac_no_warn]
-----
-java.util.logging.ConsoleHandler <FINEST>
-----
-
-[[GSADG00178]][[ghmfi]]
-
-
-Example 7-5 Changing the Global Log Level for All Module Loggers
-
-By setting the log level of the `ConsoleHandler`, you set the global log
-level for all loggers. This example sets the global log level in the DAS
-to `INFO`:
-
-[source,oac_no_warn]
-----
-asadmin> set-log-levels java.util.logging.ConsoleHandler=INFO
-java.util.logging.ConsoleHandler package set with log level INFO.
-These logging levels are set for server.
-
-Command set-log-levels executed successfully.
-----
-
-[[GSADG866]]
-
-See Also
-
-You can view the full syntax and options of the subcommand by typing
-`asadmin help set-log-levels` at the command line.
-
-[[ghmdu]][[GSADG00379]][[to-set-module-log-levels]]
-
-To Set Module Log Levels
-++++++++++++++++++++++++
-
-A module log level specifies the events that are logged for a particular
-logger. The default level for messages output to the console is `INFO`
-(which also includes `EMERGENCY`, `ALERT`, `SEVERE`, and `WARNING`
-messages). The global log level is overridden by a module-specific log
-level.
-
-By default, the module log level is set to `FINE`. The lines for the
-loggers in the logging properties file might look like this (the modules
-are indicated in bold):
-
-[source,oac_no_warn]
-----
-jakarta.enterprise.system.tools.level=FINE
-jakarta.enterprise.system.container.ejb.level=FINE
-jakarta.enterprise.system.core.security.level=FINE
-jakarta.enterprise.system.tools.admin.level=FINE
-jakarta.enterprise.level=FINE
-jakarta.enterprise.system.container.web.level=FINE
-----
-
-Because setting log levels is a dynamic operation, you do not need to
-restart GlassFish Server Open Source Edition for changes to take effect.
-
-1.  Ensure that the target server or cluster is running. +
-Remote subcommands require a running server.
-2.  List the existing module loggers and their log levels by using the
-link:../reference-manual/list-log-levels.html#GSRFM00183[`list-log-levels`] subcommand.
-3.  Set the log level for a module by using the
-link:../reference-manual/set-log-levels.html#GSRFM00228[`set-log-levels`] subcommand. +
-Your choices are `EMERGENCY`, `ALERT`, `SEVERE`, `WARNING`, `INFO`,
-`CONFIG`, `FINE`, `FINER`, and `FINEST`.
-
-[[GSADG00179]][[ghmev]]
-
-
-Example 7-6 Setting the Log Level for a Module Logger
-
-This example sets the log level for the web container logger to WARNING
-on the target instance `ManagedServer1`:
-
-[source,oac_no_warn]
-----
-asadmin> set-log-levels --target ManagedServer1
-jakarta.enterprise.system.container.web=WARNING
-jakarta.enterprise.system.container.web package set with log level WARNING.
-These logging levels are set for ManagedServer1.
-ManagedServer1 :
-jakarta.enterprise.system.container.web package set with log level WARNING.
-These logging levels are set for ManagedServer1.
-
-Command set-log-levels executed successfully.
-----
-
-[[GSADG00180]][[gjkat]]
-
-
-Example 7-7 Setting Log Levels for Multiple Loggers
-
-The following example sets the log level for security and web container
-loggers in the DAS.
-
-[source,oac_no_warn]
-----
-asadmin> set-log-levels jakarta.enterprise.system.core.security=FINE:
-jakarta.enterprise.system.container.web=WARNING
-jakarta.enterprise.system.container.web package set with log level WARNING.
-jakarta.enterprise.system.core.security package set with log level FINE.
-These logging levels are set for server.
-
-Command set-log-levels executed successfully.
-----
-
-[[GSADG867]]
-
-See Also
-
-You can view the full syntax and options of the subcommand by typing
-`asadmin help set-log-levels` at the command line.
-
-[[CEGDJEBG]][[GSADG1062]][[setting-the-log-file-format]]
-
-Setting the Log File Format
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can set the format for log records in log files. The following
-topics are addressed here:
-
-* link:#CEGFFJDG[To Set the Log File Format]
-* link:#CEGGBJCC[To Exclude Fields in Log Records]
-* link:#CEGBBEAH[To Set Multiline Mode]
-
-[[CEGFFJDG]][[GSADG1063]][[to-set-the-log-file-format]]
-
-To Set the Log File Format
-++++++++++++++++++++++++++
-
-Use the `set-log-file-format` subcommand in remote mode to set the
-formatter used by GlassFish Server Open Source Edition to format log
-records in log files. You can also use the `set-log-attributes`
-subcommand. Log formats for all server instances in a cluster will be
-the same. For information about log formats, see link:#gkmex[Log
-Records].
-
-
-[NOTE]
-=======================================================================
-
-Changing the log format forces log rotation to avoid mixed format in the
-same file.
-
-=======================================================================
-
-
-1.  Ensure that the target server or cluster is running. +
-Remote commands require a running server.
-2.  Set the formatter by using the
-link:../reference-manual/redeploy.html#GSRFM00217[`set-log-file-format`] subcommand.
-3.  To apply your change, restart GlassFish Server Open Source Edition.
-
-[[GSADG1064]][[sthref23]]
-
-
-Example 7-8 Setting the Log File Format using `set-log-file-format`
-
-This example sets the log file format to `ULF` for standalone instance
-`ManagedServer1` using the `set-log-file-format` subcommand.
-
-[source,oac_no_warn]
-----
-asadmin> set-log-file-format --target ManagedServer1 ulf
-The log file formatter is set to com.sun.enterprise.server.logging.UniformLogFormatter for instance ManagedServer1.
-Command set-log-file-format executed successfully.
-----
-
-[[GSADG1065]][[sthref24]]
-
-
-Example 7-9 Setting the Log File Format using `set-log-attributes`
-
-This example sets the log file format to `ULF` for standalone instance
-`ManagedServer1` using the `set-log-attributes` subcommand.
-
-[source,oac_no_warn]
-----
-asadmin> set-log-attributes --target ManagedServer1 com.sun.enterprise.server.logging.GFFileHandler.formatter=ulf
-com.sun.enterprise.server.logging.GFFileHandler.formatter logging attribute value set to ulf.
-The logging attributes are saved successfully for ManagedServer1-config.
-Command set-log-attributes executed successfully.
-----
-
-[[GSADG1066]]
-
-See Also
-
-You can view the full syntax and options of the `set-log-file-format`
-subcommand by typing `asadmin help set-log-file-format` at the command
-line. You can view the full syntax and options of the
-`set-log-attributes` subcommand by typing
-`asadmin help set-log-attributes` at the command line.
-
-[[CEGGBJCC]][[GSADG1067]][[to-exclude-fields-in-log-records]]
-
-To Exclude Fields in Log Records
-++++++++++++++++++++++++++++++++
-
-Use the `set-log-attributes` subcommand in remote mode to exclude
-specific name-value fields from log records. If the `excludeFields`
-attribute is not specified, all name-value fields are included. The
-following fields can be excluded:
-
-* `tid`
-* `userId`
-
-* `ecid`
-* `timeMillis`
-* `levelVal`
-
-1.  Ensure that the target server or cluster is running. +
-Remote commands require a running server.
-2.  Exclude fields by using the link:../reference-manual/set-log-attributes.html#GSRFM00227[`set-log-attributes`]
-subcommand, specifying the following attribute and the fields to
-exclude: +
-[source,oac_no_warn]
-----
-com.sun.enterprise.server.logging.GFFileHandler.excludeFields=fields
-----
-where `fields` is a comma-separated list of the name-value fields to
-exclude from the log file.
-3.  To apply your change, restart GlassFish Server Open Source Edition.
-
-[[GSADG1068]][[sthref25]]
-
-
-Example 7-10 Excluding Fields in Log Records
-
-This example excludes the `userId` and `levelVal` name-value fields in
-log records for standalone instance `ManagedServer1`:
-
-[source,oac_no_warn]
-----
-asadmin> set-log-attributes --target ManagedServer1
-com.sun.enterprise.server.logging.GFFileHandler.excludeFields=userId,levelVal
-com.sun.enterprise.server.logging.GFFileHandler.excludeFields logging attribute value set to userId,levelVal.
-The logging attributes are saved successfully for ManagedServer1-config.
-
-Command set-log-attributes executed successfully.
-----
-
-[[GSADG1069]]
-
-See Also
-
-You can view the full syntax and options of the subcommand by typing
-`asadmin help set-log-attributes` at the command line.
-
-[[CEGBBEAH]][[GSADG1070]][[to-set-multiline-mode]]
-
-To Set Multiline Mode
-+++++++++++++++++++++
-
-Use the `set-log-attributes` command in remote mode to set multiline
-mode. When multiline mode is enabled (the default), the body of a log
-message starts on a new line after the message header and is indented.
-
-1.  Ensure that the target server or cluster is running. +
-Remote commands require a running server.
-2.  Set multiline mode by using the
-link:../reference-manual/set-log-attributes.html#GSRFM00227[`set-log-attributes`] subcommand, specifying the
-following attribute and its value (`true` or `false`): +
-[source,oac_no_warn]
-----
-com.sun.enterprise.server.logging.GFFileHandler.multiLineMode=value
-----
-3.  To apply your change, restart GlassFish Server Open Source Edition.
-
-[[GSADG1071]][[sthref26]]
-
-
-Example 7-11 Setting Multiline Mode
-
-Multiline mode is enabled by default. The following example disables
-multiline mode in log files for standalone instance `ManagedServer1`:
-
-[source,oac_no_warn]
-----
-asadmin> set-log-attributes --target ManagedServer1
-com.sun.enterprise.server.logging.GFFileHandler.multiLineMode=false
-com.sun.enterprise.server.logging.GFFileHandler.multiLineMode logging attribute value set to false.
-The logging attributes are saved successfully for ManagedServer1-config.
-
-Command set-log-attributes executed successfully.
-----
-
-[[GSADG1072]]
-
-See Also
-
-You can view the full syntax and options of the subcommand by typing
-`asadmin help set-log-attributes` at the command line.
-
-[[gklni]][[GSADG00725]][[setting-log-file-rotation]]
-
-Setting Log File Rotation
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-As explained in link:#ablul[Log Files], GlassFish Server Open Source
-Edition by default rotates log files when they reach 2 MB in size.
-However, you can change the default rotation settings. For example, you
-can change the file size at which the server rotates the log file or you
-can configure a server to rotate log files based on a time interval. In
-addition to changing when rotation occurs, you can also:
-
-* Specify the maximum number of rotated files that can accumulate. +
-By default, GlassFish Server Open Source Edition does not limit the
-number of rotated log files that are retained. However, you can set a
-limit. After the number of log files reaches this limit, subsequent file
-rotations delete the oldest rotated log file.
-* Rotate the log file manually. +
-A manual rotation forces the immediate rotation of the target log file.
-
-Changing the default log rotation settings is done using the
-`set-log-attributes` subcommand, and rotating log files manually is done
-using the `rotate-log` subcommand, as explained in the following
-sections:
-
-* link:#gkmbh[To Change the Rotation File Size]
-* link:#gkman[To Change the File Rotation Interval]
-* link:#gkmai[To Change the Limit Number of Retained Files]
-* link:#gkmau[To Rotate Log Files Manually]
-
-[[gkmbh]][[GSADG00380]][[to-change-the-rotation-file-size]]
-
-To Change the Rotation File Size
-++++++++++++++++++++++++++++++++
-
-Use the `set-log-attributes` subcommand in remote mode to change the log
-rotation file size. The default target of this subcommand is the DAS.
-Optionally, you can target a configuration, server, instance, or
-cluster. The minimum size that can be set is 500 KB.
-
-1.  Ensure that the target server or cluster is running.
-2.  Change the rotation file size limit by using the
-link:../reference-manual/set-log-attributes.html#GSRFM00227[`set-log-attributes`] subcommand, specifying the
-following attribute and the desired limit in bytes: +
-[source,oac_no_warn]
-----
-com.sun.enterprise.server.logging.GFFileHandler.rotationLimitInBytes=bytes
-----
-3.  To apply your change, restart GlassFish Server Open Source Edition.
-
-[[GSADG00181]][[gkmay]]
-
-
-Example 7-12 Changing the Rotation Size
-
-The following example sets the log file rotation size to 1 MB for the
-standalone instance `ManagedServer1`:
-
-[source,oac_no_warn]
-----
-asadmin> set-log-attributes --target ManagedServer1
-com.sun.enterprise.server.logging.GFFileHandler.rotationLimitInBytes=1000000
-com.sun.enterprise.server.logging.GFFileHandler.rotationLimitInBytes
-logging attribute set with value 1000000.
-These logging attributes are set for ManagedServer1.
-ManagedServer1 :
-com.sun.enterprise.server.logging.GFFileHandler.rotationLimitInBytes 
-logging attribute set with value 1000000.
-These logging attributes are set for ManagedServer1.
-
-Command set-log-attributes executed successfully.
-----
-
-[[GSADG868]]
-
-See Also
-
-You can view the full syntax and options of the subcommand by typing
-`asadmin help set-log-attributes` at the command line.
-
-[[gkman]][[GSADG00381]][[to-change-the-file-rotation-interval]]
-
-To Change the File Rotation Interval
-++++++++++++++++++++++++++++++++++++
-
-Use the `set-log-attributes` subcommand in remote mode to change the log
-file rotation time limit interval. The default target of this subcommand
-is the DAS. Optionally, you can target a configuration, server,
-instance, or cluster. The default value is `0`.
-
-1.  Ensure that the target server or cluster is running.
-2.  Change the rotation time limit by using the
-link:../reference-manual/set-log-attributes.html#GSRFM00227[`set-log-attributes`] subcommand, specifying the
-following attribute and the desired limit in minutes: +
-[source,oac_no_warn]
-----
-com.sun.enterprise.server.logging.GFFileHandler.rotationTimelimitInMinutes=minutes
-----
-3.  To apply your change, restart GlassFish Server Open Source Edition.
-
-[[GSADG00182]][[gkmbc]]
-
-
-Example 7-13 Changing the Rotation Interval
-
-The following example sets the log file rotation time limit for the
-cluster `Cluster1`, which has the instances `ClusterServer1` and
-`ClusterServer2`.
-
-[source,oac_no_warn]
-----
-asadmin> set-log-attributes --target Cluster1
-com.sun.enterprise.server.logging.GFFileHandler.rotationTimelimitInMinutes=10
-com.sun.enterprise.server.logging.GFFileHandler.rotationTimelimitInMinutes
-logging attribute set with value 10.
-These logging attributes are set for Cluster1.
-ClusterServer1 :
-com.sun.enterprise.server.logging.GFFileHandler.rotationTimelimitInMinutes 
-logging attribute set with value 10.
-These logging attributes are set for Cluster1.
-
-ClusterServer2 :
-com.sun.enterprise.server.logging.GFFileHandler.rotationTimelimitInMinutes 
-logging attribute set with value 10.
-These logging attributes are set for Cluster1.
-
-Command set-log-attributes executed successfully.
-----
-
-[[GSADG869]]
-
-See Also
-
-You can view the full syntax and options of the subcommand by typing
-`asadmin help set-log-attributes` at the command line.
-
-[[gkmai]][[GSADG00382]][[to-change-the-limit-number-of-retained-files]]
-
-To Change the Limit Number of Retained Files
-++++++++++++++++++++++++++++++++++++++++++++
-
-Use the `set-log-attributes` subcommand in remote mode to change the
-limit on the number of log files that the server creates to store old
-log messages. The default target of this subcommand is the DAS.
-Optionally, you can target a configuration, server, instance, or
-cluster. The default limit value is `0`, which results in no limit
-placed on the number of rotated log files that are retained.
-
-1.  Ensure that the target server or cluster is running.
-2.  Change the limit number of retained log files by using the
-link:../reference-manual/set-log-attributes.html#GSRFM00227[`set-log-attributes`] subcommand, specifying the
-following attribute and the desired file limit number: +
-[source,oac_no_warn]
-----
-com.sun.enterprise.server.logging.GFFileHandler.maxHistoryFiles=minutes
-----
-The behavior of the
-`com.sun.enterprise.server.logging.GFFileHandler.maxHistoryFiles`
-attribute is as follows:
-* If the property is not set, GlassFish Server Open Source Edition keeps
-a maximum of 10 rotated log files.
-* If the property is set to an invalid number or null, GlassFish Server
-Open Source Edition keeps a maximum of 10 rotated log files.
-* If the property is set to 0, GlassFish Server Open Source Edition
-retains all rotated log files (that is, sets no maximum).
-3.  To apply your change, restart GlassFish Server Open Source Edition.
-
-[[GSADG00183]][[gkmaq]]
-
-
-Example 7-14 Changing the Limit Number of Retained Files
-
-The following example sets the log limit number of retained log files
-for the DAS to `10`.
-
-[source,oac_no_warn]
-----
-asadmin> set-log-attributes
-com.sun.enterprise.server.logging.GFFileHandler.maxHistoryFiles=10
-com.sun.enterprise.server.logging.GFFileHandler.maxHistoryFiles 
-logging attribute set with value 10.
-These logging attributes are set for server.
-Command set-log-attributes executed successfully.
-----
-
-[[GSADG870]]
-
-See Also
-
-You can view the full syntax and options of the subcommand by typing
-`asadmin help set-log-attributes` at the command line.
-
-[[gkmau]][[GSADG00383]][[to-rotate-log-files-manually]]
-
-To Rotate Log Files Manually
-++++++++++++++++++++++++++++
-
-You can rotate log files manually by using the `rotate-log` subcommand
-in remote mode. The default target of this subcommand is the DAS.
-Optionally, you can target a configuration, server, instance, or
-cluster. When you use this subcommand, the target log file is
-immediately moved to a new time-stamped file and a new log file is
-created.
-
-Because log rotation is a dynamic operation, you do not need to restart
-GlassFish Server Open Source Edition for changes to take effect.
-
-1.  Ensure that the target server or cluster is running.
-2.  Rotate log files by using the link:../reference-manual/rotate-log.html#GSRFM00224[`rotate-log`]
-subcommand.
-
-[[GSADG00184]][[gkmav]]
-
-
-Example 7-15 Rotating Log Files Manually
-
-The following example rotates the `server.log` file for `ManagedServer2`
-to `server.log_`yyyy-mm-dd`T`hh-mm-ss, where yyyy-mm-dd`T`hh-mm-ss
-represents the time when the file is rotated, and creates a new
-`server.log` file in the default location.
-
-[source,oac_no_warn]
-----
-asadmin> rotate-log --target ManagedServer2
-Command rotate-log executed successfully.
-----
-
-[[GSADG871]]
-
-See Also
-
-You can view the full syntax and options of the subcommand by typing
-`asadmin help rotate-log` at the command line.
-
-[[gklnk]][[GSADG00726]][[adding-a-custom-logging-handler]]
-
-Adding a Custom Logging Handler
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-By default, GlassFish Server Open Source Edition log records are
-captured in a server log file using the format described in
-link:#gkmex[Log Records]. However, you may find that you want to log
-messages to a different location, such as a database or a remote server,
-or log messages from specific loggers to your own file. This can be done
-by implementing a custom log handler. This section explains how to add a
-custom log handler to the GlassFish Server Open Source Edition logging
-service.
-
-[[ghmen]][[GSADG00384]][[to-add-a-custom-log-handler]]
-
-To Add a Custom Log Handler
-+++++++++++++++++++++++++++
-
-A comma-separated list of log handlers is installed during startup of
-the Java Virtual Machine (JVM) host. The default log handler that is
-provided in the `logging.properties` file, `ConsoleHandler`, is
-configured as follows:
-
-[source,oac_no_warn]
-----
-handlers=java.util.logging.ConsoleHandler
-----
-
-In GlassFish Server Open Source Edition, the best approach to developing
-a custom handler is to define a Hundred-Kilobyte Kernel (HK2) component
-that implements the handler contract. GlassFish Server Open Source
-Edition registers this handler automatically because it is an HK2
-component. There is no task required of the administrator.
-
-
-[NOTE]
-=======================================================================
-
-The custom handler class should be packaged in an OSGi module and the
-JAR file placed in the as-install`/modules` directory.
-
-=======================================================================
-
-
-To configure a custom handler that is not developed as an HK2 component,
-add the new handler to the `logging.properties` file after the developer
-has put the custom handler JAR file into the domain-dir`/lib/ext`
-directory.
-
-[[GSADG872]]
-
-Before You Begin
-
-If you set a handler by setting the handlers attribute in the logging
-properties file, the class that extends `java.util.logging.Handler` must
-be in the server classpath.
-
-1.  Ensure that the target server or cluster is running. +
-Remote subcommands require a running server.
-2.  Use the link:../reference-manual/set-log-attributes.html#GSRFM00227[`set-log-attributes`] subcommand to add the
-handler to the `handlers` attribute. +
-The default target of this subcommand is the DAS. Optionally you can
-target a configuration, server, instance, or cluster.
-3.  To apply your changes, restart GlassFish Server Open Source Edition. +
-See link:domains.html#ginqj[To Restart a Domain].
-
-[[GSADG00185]][[ghphb]]
-
-
-Example 7-16 Adding a New Log Handler
-
-This example adds the custom logger `com.example.logging.MyHandler` to
-the logging properties file of the DAS.
-
-[source,oac_no_warn]
-----
-asadmin> set-log-attributes
-handlers=java.util.logging.ConsoleHandler,com.example.logging.MyHandler
-handlers logging attribute set with value
-java.util.logging.ConsoleHandler,com.example.logging.MyHandler.
-These logging attributes are set for server.
-Command set-log-attributes executed successfully.
-----
-
-[[GSADG873]]
-
-See Also
-
-You can view the full syntax and options of the subcommand by typing
-`asadmin help set-log-attributes` at the command line.
-
-[[gkobx]][[GSADG00556]][[viewing-log-records]]
-
-Viewing Log Records
-~~~~~~~~~~~~~~~~~~~
-
-The recommended means for general viewing of logging information is to
-use the Log Viewer in the Administration Console. The Log Viewer
-simplifies reading, searching, and filtering log file contents. For
-instructions, see the Administration Console online help.
-
-GlassFish Server Open Source Edition also allows you to collect log
-files into a ZIP archive, which provides the means to obtain and view
-log files for an instance or cluster even when it is not currently
-running. The following section explains how to collect all available log
-files for an instance or cluster and compile them into a single ZIP
-archive, which is done by using the `collect-log-files` subcommand.
-
-[[gklbi]][[GSADG00385]][[to-collect-log-files-into-a-zip-archive]]
-
-To Collect Log Files into a ZIP Archive
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `collect-log-files` subcommand in remote mode to collect log
-files into a ZIP archive. The default target of this subcommand is the
-DAS. Optionally you can target a configuration, server, instance, or
-cluster.
-
-1.  Ensure that the target server or cluster is running. +
-Remote subcommands require a running server.
-2.  Use the link:../reference-manual/collect-log-files.html#GSRFM00007[`collect-log-files`] subcommand to create
-the ZIP archive. +
-The default location in which the ZIP archive is created is the
-domain-dir`/collected-logs` directory. The `collect-log-files`
-subcommand allows you to specify a nondefault directory in which the ZIP
-archive is to be created by using the `--retrieve` option set to `true`,
-followed by the directory name. +
-The name of the ZIP file contains the timestamp, as follows: +
-`log_`yyyy-mm-dd_hh-min-sec`.zip`
-
-[[GSADG00186]][[gklap]]
-
-
-Example 7-17 Creating a ZIP Archive
-
-This example shows collecting the log files for the cluster `MyCluster`
-and compiling them into a ZIP archive in the `/space/output` directory.
-
-[source,oac_no_warn]
-----
-asadmin> collect-log-files --target MyCluster
---retrieve true /space/output
-Log files are downloaded for ClusterServer1.
-Log files are downloaded for ClusterServer2.
- Created Zip file under /space/output/log_2011-02-10_13-35-25.zip.
-Command collect-log-files executed successfully.
-----
-
-When the ZIP file created by the preceding command is uncompressed, the
-following directory structure is created:
-
-[source,oac_no_warn]
-----
-as-install-parent/
-       glassfish/
-            domains/
-                domain-dir/
-                       collected_logs/
-                                    logs/
-                                       ClusterServer1/
-                                                    server.log
-                                       ClusterServer2/
-                                                    server.log
-----
-
-[[GSADG874]]
-
-See Also
-
-You can view the full syntax and options of the subcommand by typing
-`asadmin help collect-log-files` at the command line.
-
-[[CEGGHGIJ]][[GSADG1073]][[listing-loggers]]
-
-Listing Loggers
-~~~~~~~~~~~~~~~
-
-You can list and view information about all public loggers in your
-distribution of GlassFish Server Open Source Edition.
-
-[[CEGGICGF]][[GSADG1074]][[to-list-loggers]]
-
-To List Loggers
-^^^^^^^^^^^^^^^
-
-Use the `list-loggers` subcommand in remote mode to list the logger
-name, subsystem, and description of loggers in your distribution of
-GlassFish Server Open Source Edition. Internal loggers are not listed.
-
-1.  Ensure that the target server or cluster is running. +
-Remote commands require a running server.
-2.  List loggers by using the link:../reference-manual/redeploy.html#GSRFM00217[`list-loggers`]
-subcommand.
-
-[[GSADG1075]][[sthref27]]
-
-
-Example 7-18 Listing Loggers
-
-This example lists the logger name, subsystem, and description for each
-logger. Some lines of output are omitted from this example for
-readability.
-
-[source,oac_no_warn]
-----
-asadmin> list-loggers
-Logger Name                            Subsystem         Logger Description
-...
-jakarta.enterprise.monitoring            Monitoring        Monitoring Logger
-jakarta.enterprise.system.core.ee        AS-CORE           Java EE Core Kernel
-jakarta.enterprise.system.jmx            JMX               JMX System Logger
-jakarta.enterprise.system.tools.admin    ADMIN             Administration Services
-...
-Command list-loggers executed successfully.
-----
-
-[[GSADG1076]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-loggers` at the command line.
-
-
diff --git a/docs/administration-guide/src/main/jbake/content/lot.adoc b/docs/administration-guide/src/main/jbake/content/lot.adoc
deleted file mode 100644
index 2a93b43..0000000
--- a/docs/administration-guide/src/main/jbake/content/lot.adoc
+++ /dev/null
@@ -1,78 +0,0 @@
-type=page
-status=published
-title=List of Tables
-next=title.html
-prev=lof.html
-~~~~~~
-List of Tables
-==============
-
-[[list-of-tables]]
-List of Tables
---------------
-
-* link:overview.html#giuad[1-1 Default Administration Values]
-* link:overview.html#gjhfv[1-2 Default Locations]
-* link:general-administration.html#gkame[2-1 REST Resource Methods for
-Administering Monitoring and Configuration Data]
-* link:webapps.html#fvyhk[6-1 URL Fields for Servlets Within an
-Application]
-* link:monitoring.html#ghlta[8-1 HTTP Listener Common Monitoring
-Statistics]
-* link:monitoring.html#ghlsl[8-2 JVM Common Monitoring Statistics]
-* link:monitoring.html#ghqly[8-3 Web Module Common Monitoring Statistics]
-* link:monitoring.html#ggnpb[8-4 Example Resources Level Dotted Names]
-* link:monitoring.html#gelod[8-5 EJB Cache Monitoring Statistics]
-* link:monitoring.html#gelns[8-6 EJB Container Monitoring Statistics]
-* link:monitoring.html#gelnu[8-7 EJB Method Monitoring Statistics]
-* link:monitoring.html#gelpe[8-8 EJB Pool Monitoring Statistics]
-* link:monitoring.html#gelob[8-9 Timer Monitoring Statistics]
-* link:monitoring.html#gelnm[8-10 HTTP Service Virtual Server Monitoring
-Statistics]
-* link:monitoring.html#gjjys[8-11 Jersey Statistics]
-* link:monitoring.html#gelot[8-12 Connector Connection Pool Monitoring
-Statistics (JMS)]
-* link:monitoring.html#gelnz[8-13 Connector Work Management Monitoring
-Statistics (JMS)]
-* link:monitoring.html#gelow[8-14 JVM Monitoring Statistics for Java SE
-Class Loading]
-* link:monitoring.html#geloa[8-15 JVM Monitoring Statistics for Java SE -
-Threads]
-* link:monitoring.html#gelnt[8-16 JVM Monitoring Statistics for Java SE
-Compilation]
-* link:monitoring.html#gelox[8-17 JVM Monitoring Statistics for Java SE
-Garbage Collectors]
-* link:monitoring.html#gelnx[8-18 JVM Monitoring Statistics for Java SE
-Memory]
-* link:monitoring.html#gelog[8-19 JVM Statistics for the Java SE
-Operating System]
-* link:monitoring.html#gelop[8-20 JVM Monitoring Statistics for Java SE
-Runtime]
-* link:monitoring.html#gjirp[8-21 Network Keep Alive Statistics]
-* link:monitoring.html#gjjxc[8-22 Network Connection Queue Statistics]
-* link:monitoring.html#gjjpd[8-23 Network File Cache Statistics]
-* link:monitoring.html#gjjov[8-24 Network Thread Pool Statistics]
-* link:monitoring.html#gelqw[8-25 ORB Monitoring Statistics (Connection
-Manager)]
-* link:monitoring.html#gelqa[8-26 General Resource Monitoring Statistics
-(Connection Pool)]
-* link:monitoring.html#gktcp[8-27 Application Specific Resource
-Monitoring Statistics (Connection Pool)]
-* link:monitoring.html#gjirc[8-28 EJB Security Monitoring Statistics]
-* link:monitoring.html#gjiqv[8-29 Web Security Monitoring Statistics]
-* link:monitoring.html#gjirq[8-30 Realm Security Monitoring Statistics]
-* link:monitoring.html#gelqt[8-31 Thread Pool Monitoring Statistics]
-* link:monitoring.html#geloy[8-32 JVM Monitoring Statistics for Java SE -
-Thread Info]
-* link:monitoring.html#gelpl[8-33 Transaction Service Monitoring
-Statistics]
-* link:monitoring.html#gjkba[8-34 Web Module Servlet Statistics]
-* link:monitoring.html#givgh[8-35 Web JSP Monitoring Statistics]
-* link:monitoring.html#gjisw[8-36 Web Request Monitoring Statistics]
-* link:monitoring.html#ghqiu[8-37 Web Servlet Monitoring Statistics]
-* link:monitoring.html#gellc[8-38 Web Session Monitoring Statistics]
-* link:http_https.html#ggnpj[13-1 Default Ports for Listeners]
-* link:jndi.html#fxizy[18-1 JNDI Lookup Names and Their Associated
-References]
-
-
diff --git a/docs/administration-guide/src/main/jbake/content/monitoring.adoc b/docs/administration-guide/src/main/jbake/content/monitoring.adoc
deleted file mode 100644
index 44c2740..0000000
--- a/docs/administration-guide/src/main/jbake/content/monitoring.adoc
+++ /dev/null
@@ -1,2814 +0,0 @@
-type=page
-status=published
-title=Administering the Monitoring Service
-next=lifecycle-modules.html
-prev=logging.html
-~~~~~~
-Administering the Monitoring Service
-====================================
-
-[[GSADG00011]][[ablur]]
-
-
-[[administering-the-monitoring-service]]
-8 Administering the Monitoring Service
---------------------------------------
-
-This chapter explains how to monitor the GlassFish Server Open Source
-Edition 5.0 components and services by using the `asadmin` command-line
-utility. Instructions for configuring JConsole to monitor GlassFish
-Server resources are also provided.
-
-The following topics are addressed here:
-
-* link:#ablus[About Monitoring]
-* link:#ablvp[Configuring Monitoring]
-* link:#ablvs[Viewing Common Monitoring Data]
-* link:#ghmct[Viewing Comprehensive Monitoring Data]
-* link:#giwqm[Configuring JConsole to View GlassFish Server Monitoring
-Data]
-
-Instructions for monitoring by using the Administration Console are
-contained in the Administration Console online help.
-
-For information on using REST interfaces for monitoring, see
-link:general-administration.html#gjipx[Using REST Interfaces to
-Administer GlassFish Server].
-
-[[ablus]][[GSADG00557]][[about-monitoring]]
-
-About Monitoring
-~~~~~~~~~~~~~~~~
-
-Monitoring is the process of reviewing the statistics of a system to
-improve performance or solve problems. The monitoring service can track
-and display operational statistics, such as the number of requests per
-second, the average response time, and the throughput. By monitoring the
-state of various components and services deployed in GlassFish Server,
-you can identify performance bottlenecks, predict failures, perform root
-cause analysis, and ensure that everything is functioning as expected.
-Data gathered by monitoring can also be useful in performance tuning and
-capacity planning.
-
-For this release of GlassFish Server, monitoring is exposed in a modular
-way so that many client modules can access and display the monitoring
-statistics. These clients include the Administration Console, the
-`asadmin` utility, AMX, and REST interfaces.
-
-The following topics are addressed here:
-
-* link:#ghbaz[How the Monitoring Tree Structure Works]
-* link:#gitkq[About Monitoring for Add-on Components]
-* link:#ghbfq[Tools for Monitoring GlassFish Server]
-
-[[ghbaz]][[GSADG00727]][[how-the-monitoring-tree-structure-works]]
-
-How the Monitoring Tree Structure Works
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A monitorable object is a component, subcomponent, or service that can
-be monitored. GlassFish Server uses a tree structure to track
-monitorable objects. Because the tree is dynamic, the tree changes as
-GlassFish Server components are added or removed.
-
-In the tree, a monitorable object can have child objects (nodes) that
-represent exactly what can be monitored for that object. All child
-objects are addressed using the dot (.) character as a separator. These
-constructed names are referred to as dotted names. Detailed information
-on dotted names is available in the
-link:../reference-manual/dotted-names.html#GSRFM00268[`dotted-names`(5ASC)] help page.
-
-The following command lists the monitorable child objects of the
-instance `server`:
-
-[source,oac_no_warn]
-----
-asadmin> list --monitor "server.*"
-
-server.applications
-server.connector-service
-server.http-service
-server.jms-service
-server.jvm
-server.network
-server.orb
-server.resources 
-server.security
-server.thread-pool
-server.transaction-service
-server.web
-----
-
-Each object is represented by a dotted name. Dotted names can also
-address specific attributes in monitorable objects. For example, the
-`jvm` object has a `memory` attribute with a statistic called
-`maxheapsize`. The following dotted name addresses the attribute:
-
-[source,oac_no_warn]
-----
-server.jvm.memory.maxheapsize
-----
-
-Although an object is monitorable, it is not necessarily being actively
-monitored. For instructions on activating monitoring, see
-link:#ablvp[Configuring Monitoring].
-
-[[abluv]][[GSADG00647]][[tree-structure-of-monitorable-objects]]
-
-Tree Structure of Monitorable Objects
-+++++++++++++++++++++++++++++++++++++
-
-Each monitorable object has a hierarchical tree structure. In the tree,
-a replaceable such as *statistics represents the name of the attribute
-that you can show statistics for.
-
-The following node tree hierarchies are addressed here:
-
-* link:#abluw[Applications Tree Hierarchy]
-* link:#abluz[Connector Service Tree Hierarchy]
-* link:#ghlin[HTTP Service Tree Hierarchy]
-* link:#ablva[JMS/Container Service Tree Hierarchy]
-* link:#ghlic[JVM Tree Hierarchy]
-* link:#giznj[Network Tree Hierarchy]
-* link:#ablvb[ORB Tree Hierarchy]
-* link:#giqdo[Resources Tree Hierarchy]
-* link:#gjios[Security Tree Hierarchy]
-* link:#ablvc[Thread Pool Tree Hierarchy]
-* link:#gitci[Transactions Service Tree Hierarchy]
-* link:#ghlff[Web Tree Hierarchy]
-
-[[abluw]][[GSADG00040]][[applications-tree-hierarchy]]
-
-Applications Tree Hierarchy
-
-The `applications` tree contains the following nodes:
-
-[source,oac_no_warn]
-----
-server.applications
-   |--- application1
-   |    |--- ejb-module-1
-   |    |        |--- ejb1 *
-   |    |                  |--- bean-cache (for entity/sfsb) *
-   |    |                  |--- bean-pool (for slsb/mdb/entity) *
-   |    |                  |--- bean-methods
-   |    |                       |---method1 *
-   |    |                       |---method2 *
-   |    |                  |--- timers (for s1sb/entity/mdb) *
-   |    |--- web-module-1
-   |    |        |--- virtual-server-1 *
-   |    |                       |---servlet1  *
-   |    |                       |---servlet2  *
-   |--- standalone-web-module-1
-   |    |        |----- virtual-server-2 *
-   |    |                       |---servlet3 *
-   |    |                       |---servlet4 *
-   |    |        |----- virtual-server-3 *
-   |    |                       |---servlet3 *(same servlet on different vs)
-   |    |                       |---servlet5 *
-   |--- standalone-ejb-module-1
-   |    |        |--- ejb2 *
-   |    |                  |--- bean-cache (for entity/sfsb) *
-   |    |                  |--- bean-pool (for slsb/mdb/entity) *
-   |    |                  |--- bean-methods
-   |    |                       |--- method1 *
-   |    |                       |--- method2 *
-   |    |                  |--- timers (for s1sb/entity/mdb) *
-   |--- jersey-application-1
-   |    |--- jersey
-   |    |        |--- resources
-                           resource-0
-                               hitcount
-                                    *statistic   
-   |--- application2
-----
-
-An example dotted name might be:
-
-[source,oac_no_warn]
-----
-server.applications.hello.server.request.maxtime
-----
-
-An example dotted name under the EJB `method` node might be:
-
-[source,oac_no_warn]
-----
-server.applications.ejbsfapp1.ejbsfapp1ejbmod1\.jar.SFApp1EJB1
-----
-
-An example Jersey dotted name might be:
-
-[source,oac_no_warn]
-----
-server.applications.helloworld-webapp.jersey.resources.resource-0.hitcount.resourcehitcount-count
-----
-
-For available statistics, see link:#gjkbi[EJB Statistics],
-link:#gjjyb[Jersey Statistics], and link:#ablvf[Web Statistics].
-
-[[abluz]][[GSADG00041]][[connector-service-tree-hierarchy]]
-
-Connector Service Tree Hierarchy
-
-The `connector-service` tree holds monitorable attributes for pools such
-as the connector connection pool. The `connector-service` tree contains
-the following nodes:
-
-[source,oac_no_warn]
-----
-server.connector-service
-        resource-adapter-1
-             connection-pools
-                  pool-1
-             work-management
-----
-
-An example dotted name might be
-`server.connector-service.resource-adapter-1.connection-pools.pool-1`.
-For available statistics, see link:#ablvi[JMS/Connector Service
-Statistics].
-
-[[ghlin]][[GSADG00042]][[http-service-tree-hierarchy]]
-
-HTTP Service Tree Hierarchy
-
-The `http-service` tree contains the following nodes:
-
-[source,oac_no_warn]
-----
-server.http-service
-       virtual-server
-           request
-               *statistic
-       _asadmin
-           request
-               *statistic
-----
-
-An example dotted name under the virutal-server node might be
-`server.http-service.virtual-server1.request.requestcount`. For
-available statistics, see link:#ablvg[HTTP Service Statistics].
-
-[[ablva]][[GSADG00043]][[jmscontainer-service-tree-hierarchy]]
-
-JMS/Container Service Tree Hierarchy
-
-The `jms-service` tree holds monitorable attributes for connection
-factories (connection pools for resource adapters) and work management
-(for Message Queue resource adapters). The `jms-service` tree contains
-the following nodes:
-
-[source,oac_no_warn]
-----
-server.jms-service
-        connection-factories
-             connection-factory-1
-        work-management
-----
-
-An example dotted name under the `connection-factories` node might be
-`server.jms-service.connection-factories.connection-factory-1` which
-shows all the statistics for this connection factory. For available
-statistics, see link:#ablvi[JMS/Connector Service Statistics].
-
-[[ghlic]][[GSADG00044]][[jvm-tree-hierarchy]]
-
-JVM Tree Hierarchy
-
-The `jvm` tree contains the following nodes:
-
-[source,oac_no_warn]
-----
-server.jvm
-           class-loading-system
-           compilation-system
-           garbage-collectors
-           memory
-           operating-system
-           runtime 
-----
-
-An example dotted name under the `memory` node might be
-`server.jvm.memory.maxheapsize`. For available statistics, see
-link:#ablvm[JVM Statistics].
-
-[[giznj]][[GSADG00045]][[network-tree-hierarchy]]
-
-Network Tree Hierarchy
-
-The network statistics apply to the network listener, such as
-`admin-listener`, `http-listener-1`, `ttp-listener-2`. The `network`
-tree contains the following nodes:
-
-[source,oac_no_warn]
-----
-server.network
-          type-of-listener
-              keep-alive
-                    *statistic
-              file-cache
-                    *statistic
-              thread-pool
-                    *statistic
-              connection-queue
-                     *statistic
-----
-
-An example dotted name under the `network` node might be
-`server.network.admin-listener.keep-alive.maxrequests-count`. For
-available statistics, see link:#gjipy[Network Statistics].
-
-[[ablvb]][[GSADG00046]][[orb-tree-hierarchy]]
-
-ORB Tree Hierarchy
-
-The `orb` tree holds monitorable attributes for connection managers. The
-`orb` tree contains the following nodes:
-
-[source,oac_no_warn]
-----
-server.orb
-    transport
-        connectioncache
-            inbound
-                *statistic
-            outbound
-                *statistic
-----
-
-An example dotted name might be
-`server.orb.transport.connectioncache.inbound.connectionsidle-count`.
-For available statistics, see link:#ablvj[ORB Statistics (Connection
-Manager)].
-
-[[giqdo]][[GSADG00047]][[resources-tree-hierarchy]]
-
-Resources Tree Hierarchy
-
-The `resources` tree holds monitorable attributes for pools such as the
-JDBC connection pool and connector connection pool. The `resources` tree
-contains the following nodes:
-
-[source,oac_no_warn]
-----
-server.resources
-       connection-pool
-           request
-               *statistic
-----
-
-An example dotted name might be
-`server.resources.jdbc-connection-pool1.numconnfree.count`. For
-available statistics, see link:#gipzv[Resource Statistics (Connection
-Pool)].
-
-[[gjios]][[GSADG00048]][[security-tree-hierarchy]]
-
-Security Tree Hierarchy
-
-The security tree contains the following nodes:
-
-[source,oac_no_warn]
-----
-server.security
-       ejb
-          *statistic
-       web
-          *statistic
-       realm
-          *statistic
-----
-
-An example dotted name might be
-`server.security.realm.realmcount-starttime`. For available statistics,
-see link:#gjiov[Security Statistics].
-
-[[ablvc]][[GSADG00049]][[thread-pool-tree-hierarchy]]
-
-Thread Pool Tree Hierarchy
-
-The `thread-pool` tree holds monitorable attributes for connection
-managers, and contains the following nodes:
-
-[source,oac_no_warn]
-----
-server.thread-pool
-                orb
-                    threadpool
-                            thread-pool-1
-                                *statistic
-----
-
-An example dotted name might be
-`server.thread-pool.orb.threadpool.thread-pool-1.averagetimeinqueue-current`.
-For available statistics, see link:#ablvk[Thread Pool Statistics].
-
-[[gitci]][[GSADG00050]][[transactions-service-tree-hierarchy]]
-
-Transactions Service Tree Hierarchy
-
-The `transaction-service` tree holds monitorable attributes for the
-transaction subsystem for the purpose of rolling back transactions. The
-`transaction-service` tree contains the following nodes:
-
-[source,oac_no_warn]
-----
-server.transaction-service
-         statistic
-----
-
-An example dotted name might be `server.tranaction-service.activeids`.
-For available statistics, see link:#ablvl[Transaction Service
-Statistics].
-
-[[ghlff]][[GSADG00051]][[web-tree-hierarchy]]
-
-Web Tree Hierarchy
-
-The `web` tree contains the following nodes:
-
-[source,oac_no_warn]
-----
-server.web
-           jsp
-              *statistic
-           servlet
-              *statistic
-           session
-              *statistic
-           request
-              *statistic
-----
-
-An example dotted name for the `servlet` node might be
-`server.web.servlet.activeservletsloadedcount`. For available
-statistics, see link:#ghljx[Web Module Common Statistics].
-
-[[gitkq]][[GSADG00728]][[about-monitoring-for-add-on-components]]
-
-About Monitoring for Add-on Components
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-An add-on component typically generates statistics that GlassFish Server
-can gather at runtime. Adding monitoring capabilities enables an add-on
-component to provide statistics to GlassFish Server in the same way as
-components that are supplied in the GlassFish Server distributions. As a
-result, you can use the same administrative interfaces to monitor
-statistics from any installed GlassFish Server component, regardless of
-the origin of the component.
-
-[[ghbfq]][[GSADG00729]][[tools-for-monitoring-glassfish-server]]
-
-Tools for Monitoring GlassFish Server
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The following `asadmin` subcommands are provided for monitoring the
-services and components of GlassFish Server:
-
-* The `enable-monitoring`, `disable-monitoring`, or the `get` and `set`
-subcommands are used to turn monitoring on or off. For instructions, see
-link:#ablvp[Configuring Monitoring].
-* The `monitor` `type` subcommand is used to display basic data for a
-particular type of monitorable object. For instructions, see
-link:#ablvs[Viewing Common Monitoring Data].
-* The `list` `--monitor` subcommand is used to display the objects that
-can be monitored with the `monitor` subcommand. For guidelines and
-instructions, see link:#ablwh[Guidelines for Using the `list` and `get`
-Subcommands for Monitoring].
-* The `get` subcommand is used to display comprehensive data, such as
-the attributes and values for a dotted name. The `get` subcommand used
-with a wildcard parameter displays all available attributes for any
-monitorable object. For additional information, see
-link:#ablwh[Guidelines for Using the `list` and `get` Subcommands for
-Monitoring].
-
-[[ablvp]][[GSADG00558]][[configuring-monitoring]]
-
-Configuring Monitoring
-~~~~~~~~~~~~~~~~~~~~~~
-
-By default, the monitoring service is enabled for GlassFish Server, but
-monitoring for the individual modules is not. To enable monitoring for a
-module, you change the monitoring level for that module to LOW or HIGH,
-You can choose to leave monitoring OFF for objects that do not need to
-be monitored.
-
-* LOW. Simple statistics, such as create count, byte count, and so on
-* HIGH. Simple statistics plus method statistics, such as method count,
-duration, and so on
-* OFF. No monitoring, no impact on performance
-
-The following tasks are addressed here:
-
-* link:#ablvr[To Enable Monitoring]
-* link:#gglcu[To Disable Monitoring]
-
-[[ablvr]][[GSADG00386]][[to-enable-monitoring]]
-
-To Enable Monitoring
-^^^^^^^^^^^^^^^^^^^^
-
-Use the `enable-monitoring` subcommand to enable the monitoring service
-itself, or to enable monitoring for individual modules. Monitoring is
-immediately activated, without restarting GlassFish Server.
-
-You can also use the link:../reference-manual/set.html#GSRFM00226[`set`] subcommand to enable
-monitoring for a module. Using the `set` command is not a dynamic
-procedure, so you need to restart GlassFish Server for your changes to
-take effect.
-
-1.  Determine which services and components are currently enabled for
-monitoring. +
-[source,oac_no_warn]
-----
-asadmin> get server.monitoring-service.module-monitoring-levels.*
-----
-This example output shows that the HTTP service is not enabled (OFF for
-monitoring), but other objects are enabled: +
-[source,oac_no_warn]
-----
-configs.config.server-config.monitoring-service.module-monitoring-levels.web-container=HIGH
-       configs.config.server-config.monitoring-service.module-monitoring-levels.http-service=OFF
-           configs.config.server-config.monitoring-service.module-monitoring-levels.jvm=HIGH 
-----
-2.  Enable monitoring by using the olink:GSRFM00128[`enable-monitoring`]
-subcommand. +
-Server restart is not required.
-
-[[GSADG00188]][[gixri]]
-
-
-Example 8-1 Enabling the Monitoring Service Dynamically
-
-This example enables the monitoring service without affecting monitoring
-for individual modules.
-
-[source,oac_no_warn]
-----
-asadmin> enable-monitoring
-Command enable-monitoring executed successfully
-----
-
-[[GSADG00189]][[gixre]]
-
-
-Example 8-2 Enabling Monitoring for Modules Dynamically
-
-This example enables monitoring for the `ejb-container` module.
-
-[source,oac_no_warn]
-----
-asadmin> enable-monitoring --level ejb-container=HIGH
-Command enable-monitoring executed successfully
-----
-
-[[GSADG00190]][[gjcmm]]
-
-
-Example 8-3 Enabling Monitoring for Modules by Using the `set`
-Subcommand
-
-This example enables monitoring for the HTTP service by setting the
-monitoring level to HIGH (you must restart the server for changes to
-take effect).
-
-[source,oac_no_warn]
-----
-asadmin> set server.monitoring-service.module-monitoring-levels.http-service=HIGH
-Command set executed successfully
-----
-
-[[GSADG875]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help enable-monitoring` at the command line.
-
-[[gglcu]][[GSADG00387]][[to-disable-monitoring]]
-
-To Disable Monitoring
-^^^^^^^^^^^^^^^^^^^^^
-
-Use the `disable-monitoring` subcommand to disable the monitoring
-service itself, or to disable monitoring for individual modules.
-Monitoring is immediately stopped, without restarting GlassFish Server.
-
-You can also use the link:../reference-manual/set.html#GSRFM00226[`set`] subcommand to disable
-monitoring for a module. Using the `set` command is not a dynamic
-procedure, so you need to restart GlassFish Server for your changes to
-take effect.
-
-1.  Determine which services and components currently are enabled for
-monitoring. +
-[source,oac_no_warn]
-----
-asadmin get server.monitoring-service.module-monitoring-levels.*
-----
-This example output shows that monitoring is enabled for
-`web-container`, `http-service`, and `jvm`: +
-[source,oac_no_warn]
-----
-configs.config.server-config.monitoring-service.module-monitoring-levels.web-container=HIGH
-       configs.config.server-config.monitoring-service.module-monitoring-levels.http-service=HIGH
-              configs.config.server-config.monitoring-service.module-monitoring-levels.jvm=HIGH 
-----
-2.  Disable monitoring for a service or module by using the
-link:../reference-manual/disable-monitoring.html#GSRFM00120[`disable-monitoring`] subcommand. +
-Server restart is not required.
-
-[[GSADG00191]][[gixsc]]
-
-
-Example 8-4 Disabling the Monitoring Service Dynamically
-
-This example disables the monitoring service without changing the
-monitoring levels for individual modules.
-
-[source,oac_no_warn]
-----
-asadmin> disable-monitoring
-Command disable-monitoring executed successfully
-----
-
-[[GSADG00192]][[gjcnw]]
-
-
-Example 8-5 Disabling Monitoring for Modules Dynamically
-
-This example disables monitoring for specific modules. Their monitoring
-levels are set to OFF.
-
-[source,oac_no_warn]
-----
-asadmin> disable-monitoring --modules web-container,ejb-container
-Command disable-monitoring executed successfully
-----
-
-[[GSADG00193]][[gixpg]]
-
-
-Example 8-6 Disabling Monitoring by Using the `set` Subcommand
-
-This example disables monitoring for the HTTP service (you must restart
-the server for changes to take effect).
-
-[source,oac_no_warn]
-----
-asadmin> set server.monitoring-service.module-monitoring-levels.http-service=OFF
-Command set executed successfully
-----
-
-[[GSADG876]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help disable-monitoring` at the command line.
-
-[[ablvs]][[GSADG00559]][[viewing-common-monitoring-data]]
-
-Viewing Common Monitoring Data
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Use the `monitor` subcommand to display basic data on commonly-monitored
-objects.
-
-* link:#gelol[To View Common Monitoring Data]
-* link:#ghmdc[Common Monitoring Statistics]
-
-[[gelol]][[GSADG00388]][[to-view-common-monitoring-data]]
-
-To View Common Monitoring Data
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `--type` option of the `monitor` subcommand to specify the
-object for which you want to display data, such as `httplistener`,
-`jvm`, `webmodule`. If you use the `monitor` subcommand without
-specifying a type, an error message is displayed.
-
-Output from the subcommand is displayed continuously in a tabular
-format. The `--interval` option can be used to display output at a
-particular interval (the default is 30 seconds).
-
-[[GSADG877]]
-
-Before You Begin
-
-A monitorable object must be configured for monitoring before you can
-display data on the object. See link:#ablvr[To Enable Monitoring].
-
-1.  Determine which type of monitorable object you want to monitor. +
-Your choices for 5.0 are `jvm`, `httplistener`, and `webmodule`.
-2.  Request the monitoring data by using the link:../reference-manual/monitor.html#GSRFM00212[`monitor`]
-subcommand.
-
-[[GSADG00194]][[ghljw]]
-
-
-Example 8-7 Viewing Common Monitoring Data
-
-This example requests common data for type `jvm` on instance `server`.
-
-[source,oac_no_warn]
-----
-asadmin> monitor --type jvm server
-
-UpTime(ms)                          Heap and NonHeap Memory(bytes)
-current                   min        max        low        high       count
-
-9437266                   8585216    619642880  0          0          93093888
-9467250                   8585216    619642880  0          0          93093888
-----
-
-[[GSADG878]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help monitor` at the command line.
-
-[[ghmdc]][[GSADG00730]][[common-monitoring-statistics]]
-
-Common Monitoring Statistics
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Common monitoring statistics are described in the following sections:
-
-* link:#ghltk[HTTP Listener Common Statistics]
-* link:#ghlvm[JVM Common Statistics]
-* link:#ghljx[Web Module Common Statistics]
-
-[[ghltk]][[GSADG00648]][[http-listener-common-statistics]]
-
-HTTP Listener Common Statistics
-+++++++++++++++++++++++++++++++
-
-The statistics available for the `httplistener` type are shown in the
-following table.
-
-[[GSADG879]][[sthref28]][[ghlta]]
-
-
-Table 8-1 HTTP Listener Common Monitoring Statistics
-
-[width="100%",cols="17%,83%",options="header",]
-|=======================================================================
-|Statistic |Description
-|`ec` |Error count. Cumulative value of the error count
-
-|`mt` |Maximum time. Longest response time for a request; not a
-cumulative value, but the largest response time from among the response
-times
-
-|`pt` |Processing time. Cumulative value of the times taken to process
-each request, with processing time being the average of request
-processing times over request
-
-|`rc` |Request count. Cumulative number of requests processed so far
-|=======================================================================
-
-
-[[ghlvm]][[GSADG00649]][[jvm-common-statistics]]
-
-JVM Common Statistics
-+++++++++++++++++++++
-
-The statistics available for the `jvm` type are shown in the following
-table.
-
-[[GSADG880]][[sthref29]][[ghlsl]]
-
-
-Table 8-2 JVM Common Monitoring Statistics
-
-[width="100%",cols="19%,81%",options="header",]
-|=======================================================================
-|Statistic |Description
-|`count` |Amount of memory (in bytes) that is guaranteed to be available
-for use by the JVM machine
-
-|`high` |Retained for compatibility with other releases
-
-|`low` |Retained for compatibility with other releases
-
-|`max` |The maximum amount of memory that can be used for memory
-management.
-
-|`min` |Initial amount of memory (in bytes) that the JVM machine
-requests from the operating system for memory management during startup
-
-|`UpTime` |Number of milliseconds that the JVM machine has been running
-since it was last started
-|=======================================================================
-
-
-[[ghljx]][[GSADG00650]][[web-module-common-statistics]]
-
-Web Module Common Statistics
-++++++++++++++++++++++++++++
-
-The statistics available for the `webmodule` type are shown in the
-following table.
-
-[[GSADG881]][[sthref30]][[ghqly]]
-
-
-Table 8-3 Web Module Common Monitoring Statistics
-
-[width="100%",cols="18%,82%",options="header",]
-|=======================================================================
-|Statistic |Description
-|`ajlc` |Number of active JavaServer Pages (JSP) technology pages that
-are loaded
-
-|`asc` |Current active sessions
-
-|`aslc` |Number of active servlets that are loaded
-
-|`ast` |Total active sessions
-
-|`mjlc` |Maximum number of JSP pages that are loaded
-
-|`mslc` |Maximum number of servlets that are loaded
-
-|`rst` |Total rejected sessions
-
-|`st` |Total sessions
-
-|`tjlc` |Total number of JSP pages that are loaded
-
-|`tslc` |Total number of servlets that are loaded
-|=======================================================================
-
-
-[[ghmct]][[GSADG00560]][[viewing-comprehensive-monitoring-data]]
-
-Viewing Comprehensive Monitoring Data
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-By applying the `list` and `get` subcommands against the tree structure
-using dotted names, you can display more comprehensive monitoring data,
-such as a description of each of the statistics and its unit of
-measurement.
-
-The following topics are addressed here:
-
-* link:#ablwh[Guidelines for Using the `list` and `get` Subcommands for
-Monitoring]
-* link:#ablvv[To View Comprehensive Monitoring Data]
-* link:#ghmcn[Comprehensive Monitoring Statistics]
-
-[[ablwh]][[GSADG00731]][[guidelines-for-using-the-list-and-get-subcommands-for-monitoring]]
-
-Guidelines for Using the `list` and `get` Subcommands for Monitoring
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The underlying assumptions for using the `list` and `get` subcommands
-with dotted names are:
-
-* A `list` subcommand that specifies a dotted name that is not followed
-by a wildcard (`*`) lists the current node's immediate children. For
-example, the following subcommand lists all immediate children belonging
-to the `server` node: +
-[source,oac_no_warn]
-----
-list --monitor server
-----
-* A `list` subcommand that specifies a dotted name followed by a
-wildcard of the form `.*` lists a hierarchical tree of child nodes from
-the specified node. For example, the following subcommand lists all
-children of the `applications` node, their subsequent child nodes, and
-so on: +
-[source,oac_no_warn]
-----
-list --monitor server.applications.*
-----
-* A `list` subcommand that specifies a dotted name preceded or followed
-by a wildcard of the form *dottedname or dotted * name or dottedname *
-lists all nodes and their children that match the regular expression
-created by the specified matching pattern.
-* A `get` subcommand followed by a `.*` or a `*` gets the set of
-attributes and their values that belong to the node specified.
-
-For example, the following table explains the output of the `list` and
-`get` subcommands used with the dotted name for the `resources` node.
-
-[[GSADG882]][[sthref31]][[ggnpb]]
-
-
-Table 8-4 Example Resources Level Dotted Names
-
-[width="100%",cols="23%,41%,36%",options="header",]
-|=======================================================================
-|Subcommand |Dotted Name |Output
-|`list --monitor` |`server.resources` |List of pool names.
-
-|`list --monitor` |`server.resources.``connection-pool1` |No attributes,
-but a message saying "Use `get` subcommand with the `--monitor` option
-to view this node's attributes and values."
-
-|`get --monitor` |`server.resources.``connection-pool1.*` |List of
-attributes and values corresponding to connection pool attributes.
-|=======================================================================
-
-
-For detailed information on dotted names, see the
-link:../reference-manual/dotted-names.html#GSRFM00268[`dotted-names`(5ASC)] help page.
-
-[[ablvv]][[GSADG00389]][[to-view-comprehensive-monitoring-data]]
-
-To View Comprehensive Monitoring Data
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Although the `monitor` subcommand is useful in many situations, it does
-not offer the complete list of all monitorable objects. To work with
-comprehensive data for an object type, use the `list` `monitor` and the
-`get` `monitor` subcommands followed by the dotted name of a monitorable
-object.
-
-[[GSADG883]]
-
-Before You Begin
-
-A monitorable object must be configured for monitoring before you can
-display information about the object. See link:#ablvr[To Enable
-Monitoring] if needed.
-
-1.  List the objects that are enabled for monitoring by using the
-link:../reference-manual/list.html#GSRFM00145[`list`] subcommand. +
-For example, the following subcommand lists all components and services
-that have monitoring enabled for instance `server`. +
-[source,oac_no_warn]
-----
-asadmin> list --monitor "*"
-server.web
-server.connector-service 
-server.orb 
-server.jms-serviceserver.jvm
-server.applications
-server.http-service
-server.thread-pools
-----
-2.  Get data for a monitored component or service by using the
-link:../reference-manual/get.html#GSRFM00139[`get`] subcommand.
-
-[[GSADG00195]][[ghlre]]
-
-
-Example 8-8 Viewing Attributes for a Specific Type
-
-This example gets information about all the attributes for object type
-`jvm` on instance `server`.
-
-[source,oac_no_warn]
-----
-asadmin> get --monitor server.jvm.*
-server.jvm.class-loading-system.loadedclasscount = 3715
-server.jvm.class-loading-system.totalloadedclasscount = 3731
-server.jvm.class-loading-system.unloadedclasscount = 16
-server.jvm.compilation-system.name-current = HotSpot Client Compiler
-server.jvm.compilation-system.totalcompilationtime = 769
-server.jvm.garbage-collectors.Copy.collectioncount = 285
-server.jvm.garbage-collectors.Copy.collectiontime = 980
-server.jvm.garbage-collectors.MarkSweepCompact.collectioncount = 2
-server.jvm.garbage-collectors.MarkSweepCompact.collectiontime = 383
-server.jvm.memory.committedheapsize = 23498752
-server.jvm.memory.committednonheapsize = 13598720
-server.jvm.memory.initheapsize = 0
-server.jvm.memory.initnonheapsize = 8585216
-server.jvm.memory.maxheapsize = 66650112
-server.jvm.memory.maxnonheapsize = 100663296
-server.jvm.memory.objectpendingfinalizationcount = 0
-server.jvm.memory.usedheapsize = 19741184
-server.jvm.memory.usednonheapsize = 13398352
-server.jvm.operating-system.arch-current = x86
-server.jvm.operating-system.availableprocessors = 2
-server.jvm.operating-system.name-current = Windows XP
-server.jvm.operating-system.version-current = 5.1
-server.jvm.runtime.classpath-current = glassfish.jar
-server.jvm.runtime.inputarguments-current = []
-server.jvm.runtime.managementspecversion-current = 1.0
-server.jvm.runtime.name-current = 4372@ABBAGANI_WORK
-server.jvm.runtime.specname-current = Java Virtual Machine Specification
-server.jvm.runtime.specvendor-current = Sun Microsystems Inc.
-server.jvm.runtime.specversion-current = 1.0
-server.jvm.runtime.uptime = 84813
-server.jvm.runtime.vmname-current = Java HotSpot(TM) Client VM
-server.jvm.runtime.vmvendor-current = Sun Microsystems Inc.
-server.jvm.runtime.vmversion-current = 1.5.0_11-b03
-----
-
-[[GSADG00196]][[ghbgv]]
-
-
-Example 8-9 Viewing Monitorable Applications
-
-This example lists all the monitorable applications for instance
-`server`.
-
-[source,oac_no_warn]
-----
-asadmin> list --monitor server.applications.*
-server.applications.app1
-server.applications.app2
-server.applications.app1.virtual-server1
-server.applications.app2.virtual-server1 
-----
-
-[[GSADG00197]][[ghbfj]]
-
-
-Example 8-10 Viewing Attributes for an Application
-
-This example gets information about all the attributes for application
-`hello`.
-
-[source,oac_no_warn]
-----
-asadmin> get --monitor server.applications.hello.*
-server.applications.hello.server.activatedsessionstotal = 0
-server.applications.hello.server.activejspsloadedcount = 1
-server.applications.hello.server.activeservletsloadedcount = 1
-server.applications.hello.server.activesessionscurrent = 1
-server.applications.hello.server.activesessionshigh = 1
-server.applications.hello.server.errorcount = 0
-server.applications.hello.server.expiredsessionstotal = 0
-server.applications.hello.server.maxjspsloadedcount = 1
-server.applications.hello.server.maxservletsloadedcount = 0
-server.applications.hello.server.maxtime = 0
-server.applications.hello.server.passivatedsessionstotal = 0
-server.applications.hello.server.persistedsessionstotal = 0
-server.applications.hello.server.processingtime = 0.0
-server.applications.hello.server.rejectedsessionstotal = 0
-server.applications.hello.server.requestcount = 0
-server.applications.hello.server.sessionstotal = 
-server.applications.hello.server.totaljspsloadedcount = 0
-server.applications.hello.server.totalservletsloadedcount = 0
-----
-
-[[GSADG00198]][[ghbge]]
-
-
-Example 8-11 Viewing a Specific Attribute
-
-This example gets information about the `jvm` attribute
-`runtime.vmversion-current` on instance `server`.
-
-[source,oac_no_warn]
-----
-asadmin> get --monitor server.jvm.runtime.vmversion-current
-server.jvm.runtime.vmversion-current = 10.0-b23
-----
-
-[[ghmcn]][[GSADG00732]][[comprehensive-monitoring-statistics]]
-
-Comprehensive Monitoring Statistics
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can get comprehensive monitoring statistics by forming a dotted name
-that specifies the statistic you are looking for. For example, the
-following dotted name will display the cumulative number of requests for
-the HTTP service on `virtual-server1`:
-
-`server.http-service.virtual-server1.request.requestcount`
-
-The tables in the following sections list the statistics that are
-available for each monitorable object:
-
-* link:#gjkbi[EJB Statistics]
-* link:#ablvg[HTTP Service Statistics]
-* link:#gjjyb[Jersey Statistics]
-* link:#ablvi[JMS/Connector Service Statistics]
-* link:#ablvm[JVM Statistics]
-* link:#gjipy[Network Statistics]
-* link:#ablvj[ORB Statistics (Connection Manager)]
-* link:#gipzv[Resource Statistics (Connection Pool)]
-* link:#gjiov[Security Statistics]
-* link:#ablvk[Thread Pool Statistics]
-* link:#ablvl[Transaction Service Statistics]
-* link:#ablvf[Web Statistics]
-
-[[gjkbi]][[GSADG00651]][[ejb-statistics]]
-
-EJB Statistics
-++++++++++++++
-
-EJBs fit into the tree of objects as shown in link:#abluw[Applications
-Tree Hierarchy]. Use the following dotted name pattern to get EJB
-statistics for an application:
-
-[source,oac_no_warn]
-----
-server.applications.appname.ejbmodulename.ejbname.bean-cache.statistic
-----
-
-
-[NOTE]
-=======================================================================
-
-EJB statistics for an application are available after the application is
-executed. If the application is deployed but has not yet been executed,
-all counts will show default values. When the application is undeployed,
-all its monitoring data is lost.
-
-=======================================================================
-
-
-Statistics available for applications are shown in the following
-sections:
-
-* link:#gisyw[EJB Cache Statistics]
-* link:#giszu[EJB Container Statistics]
-* link:#gisyx[EJB Method Statistics]
-* link:#gisza[EJB Pool Statistics]
-* link:#gisyr[Timer Statistics]
-
-[[gisyw]][[GSADG00052]][[ejb-cache-statistics]]
-
-EJB Cache Statistics
-
-Use the following dotted name pattern for EJB cache statistics:
-
-[source,oac_no_warn]
-----
-server.applications.appname.ejbmodulename.bean-cache.ejbname.statistic
-----
-
-The statistics available for EJB caches are listed in the following
-table.
-
-[[GSADG884]][[sthref32]][[gelod]]
-
-
-Table 8-5 EJB Cache Monitoring Statistics
-
-[width="100%",cols="37%,16%,47%",options="header",]
-|=======================================================================
-|Statistic |Data Type |Description
-|`cachemisses` |RangeStatistic |The number of times a user request does
-not find a bean in the cache.
-
-|`cachehits` |RangeStatistic |The number of times a user request found
-an entry in the cache.
-
-|`numbeansincache` |RangeStatistic |The number of beans in the cache.
-This is the current size of the cache.
-
-|`numpassivations` |CountStatistic |Number of passivated beans. Applies
-only to stateful session beans.
-
-|`numpassivationerrors` |CountStatistic |Number of errors during
-passivation. Applies only to stateful session beans.
-
-|`numexpiredsessionsremoved` |CountStatistic |Number of expired sessions
-removed by the cleanup thread. Applies only to stateful session beans.
-
-|`numpassivationsuccess` |CountStatistic |Number of times passivation
-completed successfully. Applies only to stateful session beans.
-|=======================================================================
-
-
-[[giszu]][[GSADG00053]][[ejb-container-statistics]]
-
-EJB Container Statistics
-
-Use the following dotted name pattern for EJB container statistics:
-
-[source,oac_no_warn]
-----
-server.applications.appname.ejbmodulename.container.ejbname
-----
-
-The statistics available for EJB containers are listed in the following
-table.
-
-[[GSADG885]][[sthref33]][[gelns]]
-
-
-Table 8-6 EJB Container Monitoring Statistics
-
-[width="100%",cols="24%,16%,60%",options="header",]
-|=======================================================================
-|Statistic |Data Type |Description
-|`createcount` |CountStatistic |Number of times an EJB's `create` method
-is called.
-
-|`messagecount` |CountStatistic |Number of messages received for a
-message-driven bean.
-
-|`methodreadycount` |RangeStatistic |Number of stateful or stateless
-session beans that are in the `MethodReady` state.
-
-|`passivecount` |RangeStatistic |Number of stateful session beans that
-are in `Passive` state.
-
-|`pooledcount` |RangeStatistic |Number of entity beans in pooled state.
-
-|`readycount` |RangeStatistic |Number of entity beans in ready state.
-
-|`removecount` |CountStatistic |Number of times an EJB's `remove` method
-is called.
-|=======================================================================
-
-
-[[gisyx]][[GSADG00054]][[ejb-method-statistics]]
-
-EJB Method Statistics
-
-Use the following dotted name pattern for EJB method statistics:
-
-[source,oac_no_warn]
-----
-server.applications.appname.ejbmodulename.bean-methods.ejbname.statistic
-----
-
-The statistics available for EJB method invocations are listed in the
-following table.
-
-[[GSADG886]][[sthref34]][[gelnu]]
-
-
-Table 8-7 EJB Method Monitoring Statistics
-
-[width="100%",cols="23%,16%,61%",options="header",]
-|=======================================================================
-|Statistic |Data Type |Description
-|`executiontime` |CountStatistic |Time, in milliseconds, spent executing
-the method for the last successful/unsuccessful attempt to run the
-operation. This is collected for stateless and stateful session beans
-and entity beans if monitoring is enabled on the EJB container.
-
-|`methodstatistic` |TimeStatistic |Number of times an operation is
-called; the total time that is spent during the invocation, and so on.
-
-|`totalnumerrors` |CountStatistic |Number of times the method execution
-resulted in an exception. This is collected for stateless and stateful
-session beans and entity beans if monitoring is enabled for the EJB
-container.
-
-|`totalnumsuccess` |CountStatistic |Number of times the method
-successfully executed. This is collected for stateless and stateful
-session beans and entity beans if monitoring enabled is true for EJB
-container.
-|=======================================================================
-
-
-[[gisza]][[GSADG00055]][[ejb-pool-statistics]]
-
-EJB Pool Statistics
-
-Use the following dotted name pattern for EJB pool statistics:
-
-[source,oac_no_warn]
-----
-server.applications.appname.ejbmodulename.bean-pool.ejbname.statistic
-----
-
-The statistics available for EJB pools are listed in the following
-table.
-
-[[GSADG887]][[sthref35]][[gelpe]]
-
-
-Table 8-8 EJB Pool Monitoring Statistics
-
-[width="100%",cols="28%,16%,56%",options="header",]
-|=======================================================================
-|Statistic |Data Type |Description
-|`jmsmaxmessagesload` |CountStatistic |The maximum number of messages to
-load into a JMS session at one time for a message-driven bean to serve.
-Default is 1. Applies only to pools for message driven beans.
-
-|`numbeansinpool` |RangeStatistic |Number of EJBs in the associated
-pool, providing information about how the pool is changing.
-
-|`numthreadswaiting` |RangeStatistic |Number of threads waiting for free
-beans, giving an indication of possible congestion of requests.
-
-|`totalbeanscreated` |CountStatistic |Number of beans created in
-associated pool since the gathering of data started.
-
-|`totalbeansdestroyed` |CountStatistic |Number of beans destroyed from
-associated pool since the gathering of data started.
-|=======================================================================
-
-
-[[gisyr]][[GSADG00057]][[timer-statistics]]
-
-Timer Statistics
-
-Use the following dotted name pattern for timer statistics:
-
-[source,oac_no_warn]
-----
-server.applications.appname.ejbmodulename.timers.ejbname.statistic
-----
-
-The statistics available for timers are listed in the following table.
-
-[[GSADG889]][[sthref36]][[gelob]]
-
-
-Table 8-9 Timer Monitoring Statistics
-
-[width="100%",cols="28%,16%,56%",options="header",]
-|=======================================================================
-|Statistic |Data Type |Description
-|`numtimerscreated` |CountStatistic |Number of timers created in the
-system.
-
-|`numtimersdelivered` |CountStatistic |Number of timers delivered by the
-system.
-
-|`numtimersremoved` |CountStatistic |Number of timers removed from the
-system.
-|=======================================================================
-
-
-[[ablvg]][[GSADG00652]][[http-service-statistics]]
-
-HTTP Service Statistics
-+++++++++++++++++++++++
-
-The HTTP service fits into the tree of objects as shown in
-link:#ghlin[HTTP Service Tree Hierarchy].
-
-[[ghqdi]][[GSADG00059]][[http-service-virtual-server-statistics]]
-
-HTTP Service Virtual Server Statistics
-
-Use the following dotted name pattern for HTTP service virtual server
-statistics:
-
-[source,oac_no_warn]
-----
-server.http-service.virtual-server.request.statistic
-----
-
-The HTTP service statistics for virtual servers are shown in the
-following table.
-
-[[GSADG891]][[sthref37]][[gelnm]]
-
-
-Table 8-10 HTTP Service Virtual Server Monitoring Statistics
-
-[width="100%",cols="21%,16%,63%",options="header",]
-|=======================================================================
-|Statistic |Data Type |Description
-|`count200` |CountStatistic |Number of responses with a status code
-equal to 200
-
-|`count2xx` |CountStatistic |Number of responses with a status code in
-the 2xx range
-
-|`count302` |CountStatistic |Number of responses with a status code
-equal to 302
-
-|`count304` |CountStatistic |Number of responses with a status code
-equal to 304
-
-|`count3xx` |CountStatistic |Number of responses with a status code
-equal in the 3xx range
-
-|`count400` |CountStatistic |Number of responses with a status code
-equal to 400
-
-|`count401` |CountStatistic |Number of responses with a status code
-equal to 401
-
-|`count403` |CountStatistic |Number of responses with a status code
-equal to 403
-
-|`count404` |CountStatistic |Number of responses with a status code
-equal to 404
-
-|`count4xx` |CountStatistic |Number of responses with a status code
-equal in the 4xx range
-
-|`count503` |CountStatistic |Number of responses with a status code
-equal to 503
-
-|`count5xx` |CountStatistic |Number of responses with a status code
-equal in the 5xx range
-
-|`countother` |CountStatistic |Number of responses with a status code
-outside the 2xx, 3xx, 4xx, and 5xx range
-
-|`errorcount` |CountStatistic |Cumulative value of the error count, with
-error count representing the number of cases where the response code was
-greater than or equal to 400
-
-|`hosts` |StringStatistic |The host (alias) names of the virtual server
-
-|`maxtime` |CountStatistic |Longest response time for a request; not a
-cumulative value, but the largest response time from among the response
-times
-
-|`processingtime` |CountStatistic |Cumulative value of the times taken
-to process each request, with processing time being the average of
-request processing times over the request count
-
-|`requestcount` |CountStatistic |Cumulative number of requests processed
-so far
-
-|`state` |StringStatistic |The state of the virtual server
-|=======================================================================
-
-
-[[gjjyb]][[GSADG00653]][[jersey-statistics]]
-
-Jersey Statistics
-+++++++++++++++++
-
-Jersey fits into the tree of objects as shown in
-link:#abluw[Applications Tree Hierarchy].
-
-Use the following dotted name pattern for Jersey statistics:
-
-[source,oac_no_warn]
-----
-server.applications.jersey-application.jersey.resources.resource-0.hitcount.statistic
-----
-
-The statistics available for Jersey are shown in the following table.
-
-[[GSADG892]][[sthref38]][[gjjys]]
-
-
-Table 8-11 Jersey Statistics
-
-[width="100%",cols="33%,21%,46%",options="header",]
-|=======================================================================
-|Statistic |Data Type |Description
-|`resourcehitcount` |CountStatistic |Number of hits on this resource
-class
-
-|`rootresourcehitcount` |CountStatistic |Number of hits on this root
-resource class
-|=======================================================================
-
-
-[[ablvi]][[GSADG00654]][[jmsconnector-service-statistics]]
-
-JMS/Connector Service Statistics
-++++++++++++++++++++++++++++++++
-
-The JMS/Connector Service fits into the tree of objects as shown in
-link:#ablva[JMS/Container Service Tree Hierarchy].
-
-JMS/Connector Service statistics are shown in the following sections:
-
-* link:#giszy[Connector Connection Pool Statistics (JMS)]
-* link:#giszh[Connector Work Management Statistics (JMS)]
-
-[[giszy]][[GSADG00060]][[connector-connection-pool-statistics-jms]]
-
-Connector Connection Pool Statistics (JMS)
-
-Use the following dotted name pattern for JMS/Connector Service
-connection pool statistics:
-
-[source,oac_no_warn]
-----
-server.connector-service.resource-adapter-1.connection-pool.statistic
-----
-
-JMS/Connector Service statistics available for the connector connection
-pools are shown in the following table.
-
-
-[NOTE]
-=======================================================================
-
-In order to improve system performance, connection pools are initialized
-lazily; that is, a pool is not initialized until an application first
-uses the pool or the pool is explicitly pinged. Monitoring statistics
-for a connection pool are not available until the pool is initialized.
-
-=======================================================================
-
-
-[[GSADG893]][[sthref39]][[gelot]]
-
-
-Table 8-12 Connector Connection Pool Monitoring Statistics (JMS)
-
-[width="100%",cols="37%,16%,47%",options="header",]
-|=======================================================================
-|Statistic |Data Type |Description
-|`averageconnwaittime` |CountStatistic |Average wait time of connections
-before they are serviced by the connection pool.
-
-|`connectionrequestwaittime` |RangeStatistic |The longest and shortest
-wait times of connection requests. The current value indicates the wait
-time of the last request that was serviced by the pool.
-
-|`numconnfailedvalidation` |CountStatistic |Total number of connections
-in the connection pool that failed validation from the start time until
-the last sample time.
-
-|`numconnused` |RangeStatistic |Total number of connections that are
-currently being used, as well as information about the maximum number of
-connections that were used (the high water mark).
-
-|`numconnfree` |RangeStatistic |Total number of free connections in the
-pool as of the last sampling.
-
-|`numconntimedout` |CountStatistic |Total number of connections in the
-pool that timed out between the start time and the last sample time.
-
-|`numconncreated` |CountStatistic |Number of physical connections, in
-milliseconds, that were created since the last reset.
-
-|`numconndestroyed` |CountStatistic |Number of physical connections that
-were destroyed since the last reset.
-
-|`numconnacquired` |CountStatistic |Number of logical connections
-acquired from the pool.
-
-|`numconnreleased` |CountStatistic |Number of logical connections
-released to the pool.
-
-|`waitqueuelenght` |CountStatistic |Number of connection requests in the
-queue waiting to be serviced.
-|=======================================================================
-
-
-[[giszh]][[GSADG00061]][[connector-work-management-statistics-jms]]
-
-Connector Work Management Statistics (JMS)
-
-Use the following dotted name pattern for JMS/Connector Service work
-management statistics:
-
-[source,oac_no_warn]
-----
-server.connector-service.resource-adapter-1.work-management.statistic
-----
-
-JMS/Connector Service statistics available for connector work management
-are listed in the following table.
-
-[[GSADG894]][[sthref40]][[gelnz]]
-
-
-Table 8-13 Connector Work Management Monitoring Statistics (JMS)
-
-[width="100%",cols="28%,16%,56%",options="header",]
-|=======================================================================
-|Statistic |Data Type |Description
-|`activeworkcount` |RangeStatistic |Number of work objects executed by
-the connector.
-
-|`completedworkcount` |CountStatistic |Number of work objects that were
-completed.
-
-|`rejectedworkcount` |CountStatistic |Number of work objects rejected by
-the GlassFish Server.
-
-|`submittedworkcount` |CountStatistic |Number of work objects submitted
-by a connector module.
-
-|`waitqueuelength` |RangeStatistic |Number of work objects waiting in
-the queue before executing.
-
-|`workrequestwaittime` |RangeStatistic |Longest and shortest wait of a
-work object before it gets executed.
-|=======================================================================
-
-
-[[ablvm]][[GSADG00655]][[jvm-statistics]]
-
-JVM Statistics
-++++++++++++++
-
-The JVM fits into the tree of objects as show in link:#ghlic[JVM Tree
-Hierarchy].
-
-The statistics that are available for the Virtual Machine for Java
-platform (Java Virtual Machine) or JVM machine are shown in the
-following sections:
-
-* link:#ablvn[JVM Class Loading System Statistics]
-* link:#ghqfh[JVM Compilation System Statistics]
-* link:#ghqea[JVM Garbage Collectors Statistics]
-* link:#ghqdn[JVM Memory Statistics]
-* link:#ghqec[JVM Operating System Statistics]
-* link:#ghqby[JVM Runtime Statistics]
-
-[[ablvn]][[GSADG00062]][[jvm-class-loading-system-statistics]]
-
-JVM Class Loading System Statistics
-
-Use the following dotted name pattern for JVM class loading system
-statistics:
-
-[source,oac_no_warn]
-----
-server.jvm.class-loading-system.statistic
-----
-
-With Java SE, additional monitoring information can be obtained from the
-JVM. Set the monitoring level to LOW to enable the display of this
-additional information. Set the monitoring level to HIGH to also view
-information pertaining to each live thread in the system. More
-information about the additional monitoring features for Java SE is
-available in
-http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/technotes/guides/management/[Monitoring
-and Management for the Java Platform] .
-
-The Java SE monitoring tools are discussed at
-`http://docs.oracle.com/javase/8/docs/technotes/tools/`.
-
-The statistics that are available for class loading in the JVM for Java
-SE are shown in the following table.
-
-[[GSADG895]][[sthref41]][[gelow]]
-
-
-Table 8-14 JVM Monitoring Statistics for Java SE Class Loading
-
-[width="100%",cols="31%,16%,53%",options="header",]
-|=======================================================================
-|Statistic |Data Type |Description
-|`loadedclasscount` |CountStatistic |Number of classes that are
-currently loaded in the JVM
-
-|`totalloadedclasscount` |CountStatistic |Total number of classes that
-have been loaded since the JVM began execution
-
-|`unloadedclasscount` |CountStatistic |Number of classes that have been
-unloaded from the JVM since the JVM began execution
-|=======================================================================
-
-
-The statistics available for threads in the JVM in Java SE are shown in
-the following table.
-
-[[GSADG896]][[sthref42]][[geloa]]
-
-
-Table 8-15 JVM Monitoring Statistics for Java SE - Threads
-
-[width="100%",cols="35%,16%,49%",options="header",]
-|=======================================================================
-|Statistic |Data Type |Description
-|`allthreadids` |StringStatistic |List of all live thread ids.
-
-|`currentthreadcputime` |CountStatistic |CPU time for the current thread
-(in nanoseconds) if CPU time measurement is enabled. If CPU time
-measurement is disabled, returns -1.
-
-|`daemonthreadcount` |CountStatistic |Current number of live daemon
-threads.
-
-|`monitordeadlockedthreads` |StringStatistic |List of thread ids that
-are monitor deadlocked.
-
-|`peakthreadcount` |CountStatistic |Peak live thread count since the JVM
-started or the peak was reset.
-
-|`threadcount` |CountStatistic |Current number of live daemon and
-non-daemon threads.
-
-|`totalstartedthreadcount` |CountStatistic |Total number of threads
-created and/or started since the JVM started.
-|=======================================================================
-
-
-[[ghqfh]][[GSADG00063]][[jvm-compilation-system-statistics]]
-
-JVM Compilation System Statistics
-
-Use the following dotted name pattern for JVM compilation system
-statistics:
-
-[source,oac_no_warn]
-----
-server.jvm.compilation-system.statistic
-----
-
-The statistics that are available for compilation in the JVM for Java SE
-are shown in the following table.
-
-[[GSADG897]][[sthref43]][[gelnt]]
-
-
-Table 8-16 JVM Monitoring Statistics for Java SE Compilation
-
-[width="100%",cols="34%,20%,46%",options="header",]
-|=======================================================================
-|Statistic |Data Type |Description
-|`name-current` |StringStatistic |Name of the current compiler
-
-|`totalcompilationtime` |CountStatistic |Accumulated time (in
-milliseconds) spent in compilation
-|=======================================================================
-
-
-[[ghqea]][[GSADG00064]][[jvm-garbage-collectors-statistics]]
-
-JVM Garbage Collectors Statistics
-
-Use the following dotted name pattern for JVM garbage collectors
-statistics:
-
-[source,oac_no_warn]
-----
-server.jvm.garbage-collectors.statistic
-----
-
-The statistics that are available for garbage collection in the JVM for
-Java SE are shown in the following table.
-
-[[GSADG898]][[sthref44]][[gelox]]
-
-
-Table 8-17 JVM Monitoring Statistics for Java SE Garbage Collectors
-
-[width="100%",cols="23%,16%,61%",options="header",]
-|=======================================================================
-|Statistic |Data Type |Description
-|`collectioncount` |CountStatistic |Total number of collections that
-have occurred
-
-|`collectiontime` |CountStatistic |Accumulated time (in milliseconds)
-spent in collection
-|=======================================================================
-
-
-[[ghqdn]][[GSADG00065]][[jvm-memory-statistics]]
-
-JVM Memory Statistics
-
-Use the following dotted name pattern for JVM memory statistics:
-
-[source,oac_no_warn]
-----
-server.jvm.memory.statistic
-----
-
-The statistics that are available for memory in the JVM for Java SE are
-shown in the following table.
-
-[[GSADG899]][[sthref45]][[gelnx]]
-
-
-Table 8-18 JVM Monitoring Statistics for Java SE Memory
-
-[width="100%",cols="44%,16%,40%",options="header",]
-|=======================================================================
-|Statistic |Data Type |Description
-|`committedheapsize` |CountStatistic |Amount of heap memory (in bytes)
-that is committed for the JVM to use
-
-|`committednonheapsize` |CountStatistic |Amount of non-heap memory (in
-bytes) that is committed for the JVM to use
-
-|`initheapsize` |CountStatistic |Size of the heap initially requested by
-the JVM
-
-|`initnonheapsize` |CountStatistic |Size of the non-heap area initially
-requested by the JVM
-
-|`maxheapsize` |CountStatistic |Maximum amount of heap memory (in bytes)
-that can be used for memory management
-
-|`maxnonheapsize` |CountStatistic |Maximum amount of non-heap memory (in
-bytes) that can be used for memory management
-
-|`objectpendingfinalizationcount` |CountStatistic |Approximate number of
-objects that are pending finalization
-
-|`usedheapsize` |CountStatistic |Size of the heap currently in use
-
-|`usednonheapsize` |CountStatistic |Size of the non-heap area currently
-in use
-|=======================================================================
-
-
-[[ghqec]][[GSADG00066]][[jvm-operating-system-statistics]]
-
-JVM Operating System Statistics
-
-Use the following dotted name pattern for JVM operating system
-statistics:
-
-[source,oac_no_warn]
-----
-server.jvm.operating-system.statistic
-----
-
-The statistics that are available for the operating system for the JVM
-machine in Java SE are shown in the following table.
-
-[[GSADG900]][[sthref46]][[gelog]]
-
-
-Table 8-19 JVM Statistics for the Java SE Operating System
-
-[width="100%",cols="28%,16%,56%",options="header",]
-|=======================================================================
-|Statistic |Data Type |Description
-|`arch-current` |StringStatistic |Operating system architecture
-
-|`availableprocessors` |CountStatistic |Number of processors available
-to the JVM
-
-|`name-current` |StringStatistic |Operating system name
-
-|`version-current` |StringStatistic |Operating system version
-|=======================================================================
-
-
-[[ghqby]][[GSADG00067]][[jvm-runtime-statistics]]
-
-JVM Runtime Statistics
-
-Use the following dotted name pattern for JVM runtime statistics:
-
-[source,oac_no_warn]
-----
-server.jvm.runtime.statistic
-----
-
-The statistics that are available for the runtime in the JVM runtime for
-Java SE are shown in the following table.
-
-[[GSADG901]][[sthref47]][[gelop]]
-
-
-Table 8-20 JVM Monitoring Statistics for Java SE Runtime
-
-[width="100%",cols="42%,16%,42%",options="header",]
-|=======================================================================
-|Statistic |Data Type |Description
-|`classpath-current` |StringStatistic |Classpath that is used by the
-system class loader to search for class files
-
-|`inputarguments-current` |StringStatistic |Input arguments passed to
-the JVM; not including arguments to the `main` method
-
-|`managementspecversion-current` |StringStatistic |Management
-specification version implemented by the JVM
-
-|`name-current` |StringStatistic |Name representing the running JVM
-
-|`specname-current` |StringStatistic |JVM specification name
-
-|`specvendor-current` |StringStatistic |JVM specification vendor
-
-|`specversion-current` |StringStatistic |JVM specification version
-
-|`uptime` |CountStatistic |Uptime of the JVM (in milliseconds)
-
-|`vmname-current` |StringStatistic |JVM implementation name
-
-|`vmvendor-current` |StringStatistic |JVM implementation vendor
-
-|`vmversion-current` |StringStatistic |JVM implementation version
-
-| | |
-
-| | |
-|=======================================================================
-
-
-[[gjipy]][[GSADG00656]][[network-statistics]]
-
-Network Statistics
-++++++++++++++++++
-
-Network fits into the tree of objects as shown in link:#giznj[Network
-Tree Hierarchy].
-
-Network statistics are described in the following sections:
-
-* link:#gjiqu[Network Keep Alive Statistics]
-* link:#gjjom[Network Connection Queue Statistics]
-* link:#gjjpi[Network File Cache Statistics]
-* link:#gjjpp[Network Thread Pool Statistics]
-
-[[gjiqu]][[GSADG00068]][[network-keep-alive-statistics]]
-
-Network Keep Alive Statistics
-
-Use the following dotted name pattern for network keep alive statistics:
-
-[source,oac_no_warn]
-----
-server.network.type-of-listener.keep-alive.statistic
-----
-
-Statistics available for network keep alive are shown in the following
-table.
-
-[[GSADG902]][[sthref48]][[gjirp]]
-
-
-Table 8-21 Network Keep Alive Statistics
-
-[width="100%",cols="25%,16%,59%",options="header",]
-|=======================================================================
-|Statistic |Data Type |Description
-|`countconnections` |CountStatistic |Number of connections in keep-alive
-mode.
-
-|`counttimeouts` |CountStatistic |Number of keep-alive connections that
-timed out.
-
-|`secondstimeouts` |CountStatistic |Keep-alive timeout value in seconds.
-
-|`maxrequests` |CountStatistic |Maximum number of requests allowed on a
-single keep-alive connection.
-
-|`countflushes` |CountStatistic |Number of keep-alive connections that
-were closed.
-
-|`counthits` |CountStatistic |Number of requests received by connections
-in keep-alive mode.
-
-|`countrefusals` |CountStatistic |Number of keep-alive connections that
-were rejected.
-|=======================================================================
-
-
-[[gjjom]][[GSADG00069]][[network-connection-queue-statistics]]
-
-Network Connection Queue Statistics
-
-Use the following dotted name pattern for network connection queue
-statistics:
-
-[source,oac_no_warn]
-----
-server.network.type-of-listener.connection-queue.statistic
-----
-
-Statistics available for network connection queue are shown in the
-following table.
-
-[[GSADG903]][[sthref49]][[gjjxc]]
-
-
-Table 8-22 Network Connection Queue Statistics
-
-[width="100%",cols="40%,16%,44%",options="header",]
-|=======================================================================
-|Statistic |Data Type |Description
-|`countopenconnections` |CountStatistic |The number of open/active
-connections
-
-|`countoverflows` |CountStatistic |Number of times the queue has been
-too full to accommodate a connection
-
-|`countqueued` |CountStatistic |Number of connections currently in the
-queue
-
-|`countqueued15minutesaverage` |CountStatistic |Average number of
-connections queued in the last 15 minutes
-
-|`countqueued1minuteaverage` |CountStatistic |Average number of
-connections queued in the last 1 minute
-
-|`countqueued5minutesaverage` |CountStatistic |Average number of
-connections queued in the last 5 minutes
-
-|`counttotalconnections` |CountStatistic |Total number of connections
-that have been accepted
-
-|`counttotalqueued` |CountStatistic |Total number of connections that
-have been queued
-
-|`maxqueued` |CountStatistic |Maximum size of the connection queue
-
-|`peakqueued` |CountStatistic |Largest number of connections that were
-in the queue simultaneously
-
-|`tickstotalqueued` |CountStatistic |(Unsupported) Total number of ticks
-that connections have spent in the queue
-|=======================================================================
-
-
-[[gjjpi]][[GSADG00070]][[network-file-cache-statistics]]
-
-Network File Cache Statistics
-
-Use the following dotted name pattern for network file cache statistics:
-
-[source,oac_no_warn]
-----
-server.network.type-of-listener.file-cache.statistic
-----
-
-Statistics available for network file cache are shown in the following
-table.
-
-[[GSADG904]][[sthref50]][[gjjpd]]
-
-
-Table 8-23 Network File Cache Statistics
-
-[width="100%",cols="28%,16%,56%",options="header",]
-|=======================================================================
-|Statistic |Data Type |Description
-|`contenthits` |CountStatistic |Number of hits on cached file content
-
-|`contentmisses` |CountStatistic |Number of misses on cached file
-content
-
-|`heapsize` |CountStatistic |Current cache size in bytes
-
-|`hits` |CountStatistic |Number of cache lookup hits
-
-|`infohits` |CountStatistic |Number of hits on cached file info
-
-|`infomisses` |CountStatistic |Number of misses on cached file info
-
-|`mappedmemorysize` |CountStatistic |Size of mapped memory used for
-caching in bytes
-
-|`maxheapsize` |CountStatistic |Maximum heap space used for cache in
-bytes
-
-|`maxmappedmemorysize` |CountStatistic |Maximum memory map size used for
-caching in bytes
-
-|`misses` |CountStatistic |Number of cache lookup misses data type
-
-|`opencacheentries` |CountStatistic |Number of current open cache
-entries
-|=======================================================================
-
-
-[[gjjpp]][[GSADG00071]][[network-thread-pool-statistics]]
-
-Network Thread Pool Statistics
-
-Use the following dotted name pattern for network thread pool
-statistics:
-
-[source,oac_no_warn]
-----
-server.network.type-of-listener.thread-pool.statistic
-----
-
-Statistics available for network thread pool are shown in the following
-table.
-
-[[GSADG905]][[sthref51]][[gjjov]]
-
-
-Table 8-24 Network Thread Pool Statistics
-
-[width="100%",cols="28%,16%,56%",options="header",]
-|=======================================================================
-|Statistic |Data Type |Description
-|`corethreads` |CountStatistic |Core number of threads in the thread
-pool
-
-|`currentthreadcount` |CountStatistic |Provides the number of request
-processing threads currently in the listener thread pool
-
-|`currentthreadsbusy` |CountStatistic |Provides the number of request
-processing threads currently in use in the listener thread pool serving
-requests
-
-|`maxthreads` |CountStatistic |Maximum number of threads allowed in the
-thread pool
-
-|`totalexecutedtasks` |CountStatistic |Provides the total number of
-tasks, which were executed by the thread pool
-|=======================================================================
-
-
-[[ablvj]][[GSADG00657]][[orb-statistics-connection-manager]]
-
-ORB Statistics (Connection Manager)
-+++++++++++++++++++++++++++++++++++
-
-The ORB fits into the tree of objects as shown in link:#ablvb[ORB Tree
-Hierarchy].
-
-Use the following dotted name patterns for ORB statistics:
-
-[source,oac_no_warn]
-----
-server.orb.transport.connectioncache.inbound.statistic
-server.orb.transport.connectioncache.outbound.statistic
-----
-
-The statistics available for the connection manager in an ORB are listed
-in the following table.
-
-[[GSADG906]][[sthref52]][[gelqw]]
-
-
-Table 8-25 ORB Monitoring Statistics (Connection Manager)
-
-[width="100%",cols="24%,26%,50%",options="header",]
-|=======================================================================
-|Statistic |Data Type |Description
-|`connectionsidle` |CountStatistic |Total number of connections that are
-idle to the ORB
-
-|`connectionsinuse` |CountStatistic |Total number of connections in use
-to the ORB
-
-|`totalconnections` |BoundedRangeStatistic |Total number of connections
-to the ORB
-|=======================================================================
-
-
-[[gipzv]][[GSADG00658]][[resource-statistics-connection-pool]]
-
-Resource Statistics (Connection Pool)
-+++++++++++++++++++++++++++++++++++++
-
-By monitoring connection pool resources you can measure performance and
-capture resource usage at runtime. Connections are expensive and
-frequently cause performance bottlenecks in applications. It is
-important to monitor how a connection pool is releasing and creating new
-connections and how many threads are waiting to retrieve a connection
-from a particular pool.
-
-The connection pool resources fit into the tree of objects as shown in
-link:#giqdo[Resources Tree Hierarchy].
-
-Use the following dotted name pattern for general connection pool
-statistics:
-
-[source,oac_no_warn]
-----
-server.resources.pool-name.statistic
-----
-
-Use the following dotted name pattern for application-scoped connection
-pool statistics:
-
-[source,oac_no_warn]
-----
-server.applications.application-name.resources.pool-name.statistic
-----
-
-Use the following dotted name pattern for module-scoped connection pool
-statistics:
-
-[source,oac_no_warn]
-----
-server.applications.application-name.module-name.resources.pool-name.statistic
-----
-
-The connection pool statistics are shown in the following tables.
-
-
-[NOTE]
-=======================================================================
-
-In order to improve system performance, connection pools are initialized
-lazily; that is, a pool is not initialized until an application first
-uses the pool or the pool is explicitly pinged. Monitoring statistics
-for a connection pool are not available until the pool is initialized.
-
-=======================================================================
-
-
-[[GSADG907]][[sthref53]][[gelqa]]
-
-
-Table 8-26 General Resource Monitoring Statistics (Connection Pool)
-
-[width="100%",cols="43%,16%,41%",options="header",]
-|=======================================================================
-|Statistic |Data Type |Description
-|`averageconnwaittime` |CountStatistic |Average wait-time-duration per
-successful connection request
-
-|`connrequestwaittime` |RangeStatistic |Longest and shortest wait times,
-in milliseconds, of connection requests since the last sampling. current
-value indicates the wait time of the last request that was serviced by
-the pool
-
-|`numconnacquired` |CountStatistic |Number of logical connections
-acquired from the pool since the last sampling
-
-|`numconncreated` |CountStatistic |Number of physical connections that
-were created by the pool since the last reset
-
-|`numconndestroyed` |CountStatistic |Number of physical connections that
-were destroyed since the last reset
-
-|`numconnfailedvalidation` |CountStatistic |Number of connections in the
-connection pool that failed validation from the start time until the
-last sampling time
-
-|`numconnfree` |RangeStatistic |Number of free connections in the pool
-as of the last sampling
-
-|`numconnnotsuccessfullymatched` |CountStatistic |Number of connections
-rejected during matching
-
-|`numconnreleased` |CountStatistic |Number of connections released back
-to the pool since the last sampling
-
-|`numconnsuccessfullymatched` |CountStatistic |Number of connections
-successfully matched
-
-|`numconntimedout` |CountStatistic |Number of connections in the pool
-that timed out between the start time and the last sampling time
-
-|`numconnused` |RangeStatistic |Number of connections that are currently
-being used, as well as information about the maximum number of
-connections that were used (high water mark)
-
-|`frequsedsqlqueries` |StringStatistic |List of the most frequently used
-SQL queries (Available only when SQL Tracing is enabled)
-
-|`numpotentialconnleak` |CountStatistic |Number of potential connection
-leaks
-
-|`numpotentialstatementleak` |CountStatistic |Number of potential
-statement leaks (Available only when Statement Leak Dectection is
-enabled)
-
-|`numstatementcachehit` |CountStatistic |Number of statements that were
-found in the statement cache (Available only when the Statement Cache is
-enabled)
-
-|`numstatementcachemiss` |CountStatistic |Number of statements that were
-not found in the statement cache (Available only when the Statement
-Cache is enabled)
-
-|`waitqueuelength` |CountStatistic |Number of connection requests in the
-queue waiting to be serviced
-|=======================================================================
-
-
-[[GSADG908]][[sthref54]][[gktcp]]
-
-
-Table 8-27 Application Specific Resource Monitoring Statistics
-(Connection Pool)
-
-[width="100%",cols="23%,16%,61%",options="header",]
-|=======================================================================
-|Statistic |Data Type |Description
-|`numconnacquired` |CountStatistic |Number of logical connections
-acquired from the pool since the last sampling
-
-|`numconnreleased` |CountStatistic |Number of connections released back
-to the pool since the last sampling
-
-|`numconnused` |RangeStatistic |Number of connections that are currently
-being used, as well as information about the maximum number of
-connections that were used (high water mark)
-|=======================================================================
-
-
-[[gjiov]][[GSADG00659]][[security-statistics]]
-
-Security Statistics
-+++++++++++++++++++
-
-Security fits into the tree of objects as shown in link:#gjios[Security
-Tree Hierarchy].
-
-Statistics available for security are shown in the following sections:
-
-* link:#gjira[EJB Security Statistics]
-* link:#gjirn[Web Security Statistics]
-* link:#gjirj[Realm Security Statistics]
-
-[[gjira]][[GSADG00072]][[ejb-security-statistics]]
-
-EJB Security Statistics
-
-Use the following dotted name pattern for EJB security statistics:
-
-[source,oac_no_warn]
-----
-server.security.ejb.statistic
-----
-
-The statistics available for EJB security are listed in the following
-table.
-
-[[GSADG909]][[sthref55]][[gjirc]]
-
-
-Table 8-28 EJB Security Monitoring Statistics
-
-[width="100%",cols="40%,18%,42%",options="header",]
-|=======================================================================
-|Statistic |Data Type |Description
-|`policyconfigurationcount` |CountStatistic |Number of policy
-configuration
-
-|`securitymanagercount` |CountStatistic |Number of EJB security managers
-|=======================================================================
-
-
-[[gjirn]][[GSADG00073]][[web-security-statistics]]
-
-Web Security Statistics
-
-Use the following dotted name pattern for web security statistics:
-
-[source,oac_no_warn]
-----
-server.security.web.statistic
-----
-
-The statistics available for web security are listed in the following
-table.
-
-[[GSADG910]][[sthref56]][[gjiqv]]
-
-
-Table 8-29 Web Security Monitoring Statistics
-
-[width="100%",cols="40%,16%,44%",options="header",]
-|=======================================================================
-|Statistic |Data Type |Description
-|`websecuritymanagercount` |CountStatistic |Number of security managers
-
-|`webpolicyconfigurationcount` |CountStatistic |Number of policy
-configuration objects
-|=======================================================================
-
-
-[[gjirj]][[GSADG00074]][[realm-security-statistics]]
-
-Realm Security Statistics
-
-Use the following dotted name pattern for realm security statistics:
-
-[source,oac_no_warn]
-----
-server.security.realm.statistic
-----
-
-The statistics available for realm security are listed in the following
-table.
-
-[[GSADG911]][[sthref57]][[gjirq]]
-
-
-Table 8-30 Realm Security Monitoring Statistics
-
-[width="100%",cols="32%,22%,46%",options="header",]
-|==============================================
-|Statistic |Data Type |Description
-|`realmcount` |CountStatistic |Number of realms
-|==============================================
-
-
-[[ablvk]][[GSADG00660]][[thread-pool-statistics]]
-
-Thread Pool Statistics
-++++++++++++++++++++++
-
-The thread pool fits into the tree of objects as shown in
-link:#ablvc[Thread Pool Tree Hierarchy].
-
-The statistics available for thread pools are shown in the following
-sections:
-
-* link:#gitct[Thread Pool Monitoring Statistics]
-* link:#gitce[JVM Statistics for Java SE-Thread Information]
-
-[[gitct]][[GSADG00075]][[thread-pool-monitoring-statistics]]
-
-Thread Pool Monitoring Statistics
-
-Use the following dotted name pattern for thread pool statistics:
-
-[source,oac_no_warn]
-----
-server.thread-pool.thread-pool.statistic
-----
-
-The statistics available for the thread pool are shown in the following
-table.
-
-[[GSADG912]][[sthref58]][[gelqt]]
-
-
-Table 8-31 Thread Pool Monitoring Statistics
-
-[width="100%",cols="37%,26%,37%",options="header",]
-|=======================================================================
-|Statistic |Data Type |Description
-|`averagetimeinqueue` |BoundedRangeStatistic |Average amount of time (in
-milliseconds) a request waited in the queue before being processed
-
-|`averageworkcompletiontime` |BoundedRangeStatistic |Average amount of
-time (in milliseconds) taken to complete an assignment
-
-|`currentbusythreads` |CountStatistic |Number of busy threads
-
-|`currentnumberofthreads` |BoundedRangeStatistic |Current number of
-request processing threads
-
-|`numberofavailablethreads` |CountStatistic |Number of available threads
-
-|`numberofworkitemsinqueue` |BoundedRangeStatistic |Current number of
-work items waiting in queue
-
-|`totalworkitemsadded` |CountStatistic |Total number of work items added
-to the work queue as of last sampling
-|=======================================================================
-
-
-[[gitce]][[GSADG00076]][[jvm-statistics-for-java-se-thread-information]]
-
-JVM Statistics for Java SE-Thread Information
-
-The statistics available for `ThreadInfo` in the JVM in Java SE are
-shown in the following table.
-
-[[GSADG913]][[sthref59]][[geloy]]
-
-
-Table 8-32 JVM Monitoring Statistics for Java SE - Thread Info
-
-[width="100%",cols="20%,16%,64%",options="header",]
-|=======================================================================
-|Statistic |Data Type |Description
-|`blockedcount` |CountStatistic |Total number of times that the thread
-entered the `BLOCKED` state.
-
-|`blockedtime` |CountStatistic |Time elapsed (in milliseconds) since the
-thread entered the `BLOCKED` state. Returns -1 if thread contention
-monitoring is disabled.
-
-|`lockname` |StringStatistic |String representation of the monitor lock
-that the thread is blocked to enter or waiting to be notified through
-the `Object.wait` method.
-
-|`lockownerid` |CountStatistic |ID of the thread that holds the monitor
-lock of an object on which this thread is blocking.
-
-|`lockownername` |StringStatistic |Name of the thread that holds the
-monitor lock of the object this thread is blocking on.
-
-|`stacktrace` |StringStatistic |Stack trace associated with this thread.
-
-|`threadid` |CountStatistic |ID of the thread.
-
-|`threadname` |StringStatistic |Name of the thread.
-
-|`threadstate` |StringStatistic |State of the thread.
-
-|`waitedtime` |CountStatistic |Elapsed time (in milliseconds) that the
-thread has been in a `WAITING` state. Returns -1 if thread contention
-monitoring is disabled.
-
-|`waitedcount` |CountStatistic |Total number of times the thread was in
-`WAITING` or `TIMED_WAITING` states.
-|=======================================================================
-
-
-[[ablvl]][[GSADG00661]][[transaction-service-statistics]]
-
-Transaction Service Statistics
-++++++++++++++++++++++++++++++
-
-The transaction service allows the client to freeze the transaction
-subsystem in order to roll back transactions and determine which
-transactions are in process at the time of the freeze. The transaction
-service fits into the tree of objects as shown in
-link:#gitci[Transactions Service Tree Hierarchy].
-
-Use the following dotted name pattern for transaction service
-statistics:
-
-[source,oac_no_warn]
-----
-server.transaction-service.statistic
-----
-
-The statistics available for the transaction service are shown in the
-following table.
-
-[[GSADG914]][[sthref60]][[gelpl]]
-
-
-Table 8-33 Transaction Service Monitoring Statistics
-
-[width="100%",cols="23%,16%,61%",options="header",]
-|=======================================================================
-|Statistic |Data Type |Description
-|`activecount` |CountStatistic |Number of transactions currently active.
-
-|`activeids` |StringStatistic |The ID's of the transactions that are
-currently active. Every such transaction can be rolled back after
-freezing the transaction service.
-
-|`committedcount` |CountStatistic |Number of transactions that have been
-committed.
-
-|`rolledbackcount` |CountStatistic |Number of transactions that have
-been rolled back.
-
-|`state` |StringStatistic |Indicates whether or not the transaction has
-been frozen.
-|=======================================================================
-
-
-[[ablvf]][[GSADG00662]][[web-statistics]]
-
-Web Statistics
-++++++++++++++
-
-The web module fits into the tree of objects as shown in link:#ghlff[Web
-Tree Hierarchy].
-
-The available web statistics shown in the following sections:
-
-* link:#gjkaz[Web Module Servlet Statistics]
-* link:#ghqge[Web JSP Statistics]
-* link:#ghqga[Web Request Statistics]
-* link:#ghqfu[Web Servlet Statistics]
-* link:#ghqfr[Web Session Statistics]
-
-[[gjkaz]][[GSADG00077]][[web-module-servlet-statistics]]
-
-Web Module Servlet Statistics
-
-Use the following dotted name pattern for web module servlet statistics:
-
-[source,oac_no_warn]
-----
-server.applications.web-module.virtual-server.servlet.statistic
-server.applications.application.web-module.virtual-server.servlet.statistic
-----
-
-The available web module servlet statistics are shown in the following
-table.
-
-[[GSADG915]][[sthref61]][[gjkba]]
-
-
-Table 8-34 Web Module Servlet Statistics
-
-[width="100%",cols="21%,16%,63%",options="header",]
-|=======================================================================
-|Statistic |Data Type |Description
-|`errorcount` |CountStatistic |Cumulative number of cases where the
-response code is greater than or equal to 400.
-
-|`maxtime` |CountStatistic |Maximum amount of time the web container
-waits for requests.
-
-|`processingtime` |CountStatistic |Cumulative value of the amount of
-time required to process each request. The processing time is the
-average of request processing times divided by the request count.
-
-|`requestcount` |CountStatistic |The total number of requests processed
-so far.
-
-|`servicetime` |CountStatistic |Aggregate response time in milliseconds.
-|=======================================================================
-
-
-[[ghqge]][[GSADG00079]][[web-jsp-statistics]]
-
-Web JSP Statistics
-
-Use the following dotted name pattern for web JSP statistics:
-
-[source,oac_no_warn]
-----
-server.applications.web-module.virtual-server.statistic
-server.applications.application.web-module.virtual-server.statistic
-----
-
-The available web JSP statistics are shown in the following table.
-
-[[GSADG917]][[sthref62]][[givgh]]
-
-
-Table 8-35 Web JSP Monitoring Statistics
-
-[width="100%",cols="24%,16%,60%",options="header",]
-|=======================================================================
-|Statistic |Data Type |Description
-|`jspcount-current` |RangeStatistic |Number of active JSP pages
-
-|`jsperrorcount` |CountStatistic |Total number of errors triggered by
-JSP page invocations
-
-|`jspreloadedcount` |CountStatistic |Total number of JSP pages that were
-reloaded
-
-|`totaljspcount` |CountStatistic |Total number of JSP pages ever loaded
-|=======================================================================
-
-
-[[ghqga]][[GSADG00080]][[web-request-statistics]]
-
-Web Request Statistics
-
-Use the following dotted name pattern for web request statistics:
-
-[source,oac_no_warn]
-----
-server.applications.web-module.virtual-server.statistic
-server.applications.application.web-module.virtual-server.statistic
-----
-
-The available web request statistics are shown in the following table.
-
-[[GSADG918]][[sthref63]][[gjisw]]
-
-
-Table 8-36 Web Request Monitoring Statistics
-
-[width="100%",cols="21%,16%,63%",options="header",]
-|=======================================================================
-|Statistic |Data Type |Description
-|`errorcount` |CountStatistic |Cumulative value of the error count, with
-error count representing the number of cases where the response code was
-greater than or equal to 400
-
-|`maxtime` |CountStatistic |Longest response time for a request; not a
-cumulative value, but the largest response time from among the response
-times
-
-|`processingtime` |CountStatistic |Average request processing time, in
-milliseconds
-
-|`requestcount` |CountStatistic |Cumulative number of the requests
-processed so far
-|=======================================================================
-
-
-[[ghqfu]][[GSADG00081]][[web-servlet-statistics]]
-
-Web Servlet Statistics
-
-Use the following dotted name pattern for web servlet statistics:
-
-[source,oac_no_warn]
-----
-server.applications.web-module.virtual-server.statistic
-server.applications.application.web-module.virtual-server.statistic
-----
-
-The available web servlet statistics are shown in the following table.
-
-[[GSADG919]][[sthref64]][[ghqiu]]
-
-
-Table 8-37 Web Servlet Monitoring Statistics
-
-[width="100%",cols="37%,16%,47%",options="header",]
-|=======================================================================
-|Statistic |Data Type |Description
-|`activeservletsloadedcount` |RangeStatistic |Number of currently loaded
-servlets
-
-|`servletprocessingtimes` |CountStatistic |Cumulative servlet processing
-times , in milliseconds
-
-|`totalservletsloadedcount` |CountStatistic |Cumulative number of
-servlets that have been loaded into the web module
-|=======================================================================
-
-
-[[ghqfr]][[GSADG00082]][[web-session-statistics]]
-
-Web Session Statistics
-
-Use the following dotted name pattern for web session statistics:
-
-[source,oac_no_warn]
-----
-server.applications.web-module.virtual-server.statistic
-server.applications.application.web-module.virtual-server.statistic
-----
-
-The available web session statistics are shown in the following table.
-
-[[GSADG920]][[sthref65]][[gellc]]
-
-
-Table 8-38 Web Session Monitoring Statistics
-
-[width="100%",cols="34%,16%,50%",options="header",]
-|=======================================================================
-|Statistic |Data Type |Description
-|`activatedsessionstotal` |CountStatistic |Total number of activated
-sessions
-
-|`activesessionscurrent` |RangeStatistic |Number of currently active
-sessions
-
-|`activesessionshigh` |CountStatistic |Maximum number of concurrently
-active sessions
-
-|`expiredsessionstotal` |CountStatistic |Total number of expired
-sessions
-
-|`passivatedsessionstotal` |CountStatistic |Total number of passivated
-sessions
-
-|`persistedsessionstotal` |CountStatistic |Total number of persisted
-sessions
-
-|`rejectedsessionstotal` |CountStatistic |Total number of rejected
-sessions
-
-|`sessionstotal` |CountStatistic |Total number of sessions created
-|=======================================================================
-
-
-[[giwqm]][[GSADG00561]][[configuring-jconsole-to-view-glassfish-server-monitoring-data]]
-
-Configuring JConsole to View GlassFish Server Monitoring Data
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Java SE provides tools to connect to an MBean Server and view the MBeans
-registered with the server. JConsole is one such popular JMX Connector
-Client and is available as part of the standard Java SE distribution.
-When you configure JConsole for use with GlassFish Server, GlassFish
-Server becomes the JMX Connector's server end and JConsole becomes the
-JMX connector's client end.
-
-[[ggpfh]][[GSADG00390]][[to-connect-jconsole-to-glassfish-server]]
-
-To Connect JConsole to GlassFish Server
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Java SE 6 enhances management and monitoring of the virtual machine by
-including a Platform MBean Server and by including managed beans
-(MBeans) to configure the virtual machine.
-
-To view all MBeans, GlassFish Server provides a configuration of the
-standard JMX connector server called System JMX Connector Server. As
-part of GlassFish Server startup, an instance of this JMX Connector
-Server is started. Any compliant JMX connector client can connect to the
-server using the JMX Connector Server.
-
-By default, GlassFish Server is configured with a non-secure System JMX
-Connector Server. If this is an issue, the JMX connector can be removed.
-However, access can be restricted to a specific IP address (for example,
-the loopback address) by setting `address` to `locahost`.
-
-1.  Start the domain. +
-For instructions, see link:domains.html#ggoda[To Start a Domain].
-2.  Start JConsole using this format: JDK_HOME`/bin/jconsole` +
-For example: +
-[source,oac_no_warn]
-----
-/usr/java/bin/jconsole
-----
-The JConsole Connect to Agent window is displayed.
-3.  Click the Remote tab and type the host name and port. +
-Always connect remotely with JConsole, otherwise MBeans will not load
-automatically.
-4.  Click Connect.
-5.  In the Remote Process text box, specify the JMX Service URL. +
-For example: +
-[source,oac_no_warn]
-----
-service:jmx:rmi:///jndi/rmi://localhost:8686/jmxrmi 
-----
-The JMX Service URL is emitted by the server at startup, looking
-something like this: +
-[source,oac_no_warn]
-----
-[#|2009-12-03T10:25:17.737-0800|INFO|glassfishv3.0|
-x..system.tools.admin.org.glassfish.server|_ThreadID=20;
-_ThreadName=Thread-26;|JMXStartupService: Started JMXConnector, JMXService 
-URL = service:jmx:rmi://localhost:8686/jndi/rmi://localhost:8686/jmxrmi|#]
-----
-However, in most cases, simply entering `host:port` is fine, such as,
-192.168.1.150:8686. The long Service URL is not needed. +
-
-[NOTE]
-=======================================================================
-
-Another host name can be substituted for `localhost`. The default port
-number (8686) could change if the `jmx-connector` configuration has been
-modified.
-
-=======================================================================
-
-6.  Click Connect. +
-In the JConsole window you will see all your MBeans, JVM information,
-and so on, in various tabs. Most of the useful MBeans are to be found in
-the `amx` and `java.lang` domains.
-
-[[GSADG921]]
-
-See Also
-
-For more information about JConsole, see
-`http://docs.oracle.com/javase/8/docs/technotes/guides/management/jconsole.html`.
-
-
diff --git a/docs/administration-guide/src/main/jbake/content/orb.adoc b/docs/administration-guide/src/main/jbake/content/orb.adoc
deleted file mode 100644
index 911ea88..0000000
--- a/docs/administration-guide/src/main/jbake/content/orb.adoc
+++ /dev/null
@@ -1,223 +0,0 @@
-type=page
-status=published
-title=Administering the Object Request Broker (ORB)
-next=javamail.html
-prev=concurrent.html
-~~~~~~
-Administering the Object Request Broker (ORB)
-=============================================
-
-[[GSADG00018]][[abltr]]
-
-
-[[administering-the-object-request-broker-orb]]
-15 Administering the Object Request Broker (ORB)
-------------------------------------------------
-
-GlassFish Server supports a standard set of protocols and formats that
-ensure interoperability. Among these protocols are those defined by
-CORBA. The Object Request Broker (ORB) is the central component of
-CORBA. The ORB provides the required infrastructure to identify and
-locate objects, handle connection management, deliver data, and request
-communication. This chapter describes how to configure the ORB and the
-IIOP listeners.
-
-The following topics are addressed here:
-
-* link:#ablts[About the ORB]
-* link:#abltw[Configuring the ORB]
-* link:#ablty[Administering IIOP Listeners]
-
-Instructions for accomplishing the tasks in this chapter by using the
-Administration Console are contained in the Administration Console
-online help.
-
-[[ablts]][[GSADG00590]][[about-the-orb]]
-
-About the ORB
-~~~~~~~~~~~~~
-
-The Common Object Request Broker Architecture (CORBA) model is based on
-clients requesting services from distributed objects or servers through
-a well-defined interface by issuing requests to the objects in the form
-of remote method requests. A remote method request carries information
-about the operation that needs to be performed, including the object
-name (called an object reference) of the service provider and
-parameters, if any, for the invoked method. CORBA automatically handles
-network programming tasks such as object registration, object location,
-object activation, request de-multiplexing, error-handling, marshalling,
-and operation dispatching.
-
-[[abltw]][[GSADG00591]][[configuring-the-orb]]
-
-Configuring the ORB
-~~~~~~~~~~~~~~~~~~~
-
-A CORBA object never talks directly with another. Instead, the object
-makes requests through a remote stub to the Internet Inter-Orb Protocol
-(IIOP) running on the local host. The local ORB then passes the request
-to an ORB on the other host using IIOP. The remote ORB then locates the
-appropriate object, processes the request, and returns the results.
-
-IIOP can be used as a Remote Method Invocation (RMI) protocol by
-applications or objects using RMI-IIOP. Remote clients of enterprise
-beans (EJB modules) communicate with GlassFish Server by using RMI-IIOP.
-
-[[ablty]][[GSADG00592]][[administering-iiop-listeners]]
-
-Administering IIOP Listeners
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-An IIOP listener is a listen socket that accepts incoming connections
-from the remote clients of enterprise beans and from other CORBA-based
-clients. Multiple IIOP listeners can be configured for GlassFish Server.
-For each listener, specify a port number (optional; default 1072), a
-network address, and security attributes (optional). If you create
-multiple listeners, you must assign a different port number for each
-listener.
-
-The following topics are addressed here:
-
-* link:#gioyo[To Create an IIOP Listener]
-* link:#giowc[To List IIOP Listeners]
-* link:#giwlq[To Update an IIOP Listener]
-* link:#giowj[To Delete an IIOP Listener]
-
-[[gioyo]][[GSADG00478]][[to-create-an-iiop-listener]]
-
-To Create an IIOP Listener
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `create-iiop-listener` subcommand in remote mode to create an
-IIOP listener.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Create an IIOP listener by using the
-link:../reference-manual/create-iiop-listener.html#GSRFM00032[`create-iiop-listener`] subcommand. +
-Information about the properties for the subcommand is included in this
-help page.
-3.  To apply your changes, restart GlassFish Server. +
-See link:domains.html#ginqj[To Restart a Domain].
-
-[[GSADG00263]][[gipfl]]
-
-
-Example 15-1 Creating an IIOP Listener
-
-This example creates an IIOP listener named `sample_iiop_listener`.
-
-[source,oac_no_warn]
-----
-asadmin> create-iiop-listener --listeneraddress 192.168.1.100
---iiopport 1400 sample_iiop_listener
-Command create-iiop-listener executed successfully.
-----
-
-[[GSADG1011]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-iiop-listener` at the command line.
-
-[[giowc]][[GSADG00479]][[to-list-iiop-listeners]]
-
-To List IIOP Listeners
-^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `list-iiop-listeners` subcommand in remote mode to list the
-existing IIOP listeners.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the IIOP listeners by using the
-link:../reference-manual/list-iiop-listeners.html#GSRFM00169[`list-iiop-listeners`] subcommand.
-
-[[GSADG00264]][[gipcm]]
-
-
-Example 15-2 Listing IIOP Listeners
-
-This example lists all the IIOP listeners for the server instance.
-
-[source,oac_no_warn]
-----
-asadmin> list-iiop-listeners
-orb-listener-1
-SSL
-SSL_MUTUALAUTH
-sample_iiop_listener
-Command list-iiop-listeners executed successfully.
-----
-
-[[GSADG1012]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-iiop-listeners` at the command line.
-
-[[giwlq]][[GSADG00480]][[to-update-an-iiop-listener]]
-
-To Update an IIOP Listener
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-1.  List the IIOP listeners by using the
-link:../reference-manual/list-iiop-listeners.html#GSRFM00169[`list-iiop-listeners`] subcommand.
-2.  Modify the values for the specified IIOP listener by using the
-link:../reference-manual/set.html#GSRFM00226[`set`] subcommand. +
-The listener is identified by its dotted name.
-
-[[GSADG00265]][[giwlj]]
-
-
-Example 15-3 Updating an IIOP Listener
-
-This example changes SSL from enabled to disabled.
-
-[source,oac_no_warn]
-----
-asadmin> set "server.iiop-service.iiop-listener.SSL.enabled"
-server.iiop-service.iiop-listener.SSL.enabled=false
-Command set executed successfully.
-----
-
-[[giowj]][[GSADG00481]][[to-delete-an-iiop-listener]]
-
-To Delete an IIOP Listener
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `delete-iiop-listener` subcommand in remote mode to delete an
-IIOP listener.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the IIOP listeners by using the
-link:../reference-manual/list-iiop-listeners.html#GSRFM00169[`list-iiop-listeners`] subcommand.
-3.  Delete an IIOP listener by using the
-link:../reference-manual/delete-iiop-listener.html#GSRFM00084[`delete-iiop-listener`] subcommand.
-4.  To apply your changes, restart GlassFish Server. +
-See link:domains.html#ginqj[To Restart a Domain].
-
-[[GSADG00266]][[giped]]
-
-
-Example 15-4 Deleting an IIOP Listener
-
-This example deletes the IIOP listener named `sample_iiop_listener`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-iiop-listener sample_iiop_listener
- Command delete-iiop-listener executed successfully.
-----
-
-[[GSADG1013]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-iiop-listener` at the command line.
-
-
diff --git a/docs/administration-guide/src/main/jbake/content/overview.adoc b/docs/administration-guide/src/main/jbake/content/overview.adoc
deleted file mode 100644
index c5c064f..0000000
--- a/docs/administration-guide/src/main/jbake/content/overview.adoc
+++ /dev/null
@@ -1,1091 +0,0 @@
-type=page
-status=published
-title=Overview of GlassFish Server Administration
-next=part-runtime-admin.html
-prev=preface.html
-~~~~~~
-Overview of GlassFish Server Administration
-===========================================
-
-[[GSADG00004]][[ablaq]]
-
-
-[[overview-of-glassfish-server-administration]]
-1 Overview of GlassFish Server Administration
----------------------------------------------
-
-GlassFish Server Open Source Edition provides a server for developing
-and deploying Java Platform Enterprise Edition (Java EE) applications
-and web Java Web Services.
-
-As an administrator ofGlassFish Server, your main responsibilities are
-to establish a secure GlassFish Server environment and to oversee the
-services, resources, and users that participate in that environment.
-Your key tasks include configuring resources and services, managing
-GlassFish Server at runtime, and fixing problems that are associated
-with the server. You might also be involved in installing software,
-integrating add-on components, and deploying applications.
-
-The following topics are addressed here:
-
-* link:#giubb[Default Settings and Locations]
-* link:#ghrcy[Configuration Tasks]
-* link:#ggjxp[Administration Tools]
-* link:#giudo[Instructions for Administering GlassFish Server]
-
-[[giubb]][[GSADG00526]][[default-settings-and-locations]]
-
-Default Settings and Locations
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-After installation, you might need to perform some immediate
-configuration tasks to make your installation function as intended. If
-configuration defaults have been accepted, some features are enabled and
-some not. For an overview of initial configuration tasks for GlassFish
-Server services and resources, see link:#gitwr[Initial Configuration
-Tasks].
-
-In addition, you might want to reset default passwords, change names or
-locations of files, and so on. The following tables list the default
-administration values.
-
-
-[NOTE]
-=======================================================================
-
-For the zip bundle of GlassFish Server 5.0, the default administrator
-login is `admin`, with no password, which means that no login is
-required.
-
-=======================================================================
-
-
-[[GSADG793]][[sthref3]][[giuad]]
-
-
-Table 1-1 Default Administration Values
-
-[width="100%",cols="43%,57%",options="header",]
-|==============================================
-|Item |Default
-|Domain Name |`domain1`
-| |
-| |
-| |
-|Master Password |`changeit`
-|Administration User |`admin`
-|Administration Server Port |4848
-|HTTP Port |8080
-|HTTPS Port |8181
-|Pure JMX Clients Port |8686
-|Message Queue Port |7676
-|IIOP Port |3700
-|IIOP/SSL Port |3820
-|IIOP/SSL Port With Mutual Authentication |3920
-|==============================================
-
-
-[[GSADG794]][[sthref4]][[gjhfv]]
-
-
-Table 1-2 Default Locations
-
-[width="100%",cols="43%,57%",options="header",]
-|====================================================
-|Item |Default
-|Command-line Utility (`asadmin`) |as-install`/bin`
-|Configuration Files |domain-dir`/config`
-|Log Files |domain-dir`/logs`
-|Upgrade Tool (`asupgrade` Command) |as-install`/bin`
-|====================================================
-
-
-For information about replaceable items and default paths and files, see
-link:preface.html#ghpfg[Default Paths and File Names].
-
-[[ghrcy]][[GSADG00527]][[configuration-tasks]]
-
-Configuration Tasks
-~~~~~~~~~~~~~~~~~~~
-
-Some configuration tasks must be performed directly after installation
-for your GlassFish Server environment to work as intended. For example,
-if you are using a database with GlassFish Server, you need to set up
-database connectivity right away.
-
-Some configuration situations are ongoing and will require you to make
-changes many times during the life of your installation. You can use
-either the Administration Console or the `asadmin` utility to modify the
-configuration. Changes are automatically applied to the appropriate
-configuration file.
-
-The following topics are addressed here:
-
-* link:#gitwr[Initial Configuration Tasks]
-* link:#giusb[How Dotted Names Work for Configuration]
-* link:#gjjrl[Configuration Files]
-* link:#gitzw[Impact of Configuration Changes]
-
-[[gitwr]][[GSADG00694]][[initial-configuration-tasks]]
-
-Initial Configuration Tasks
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This section maps the common configuration tasks to the command-line
-procedures in this guide. In some situations, the resource or service is
-automatically enabled and your configuration tasks involve adjusting or
-changing the default settings to suit your specific needs.
-
-The following resources and services frequently require configuration
-immediately after installation:
-
-System Properties::
-  See link:general-administration.html#ghcjc[Administering System
-  Properties].
-Domains::
-  The initial `domain1` is created during installation. Additional
-  configuration tasks might include such tasks as configuring additional
-  domains or setting up automatic restart. See
-  link:domains.html#ggnop[Administering Domains].
-JVM::
-  The initial tasks for configuring the JVM include creating JVM options
-  and profilers. See link:jvm.html#ablwj[Administering the Virtual
-  Machine for the Java Platform].
-Logging::
-  By default, logging is enabled, so basic logging works without
-  additional configuration. However, you might want to change log
-  levels, property values, or the location of log files. See
-  link:logging.html#abluj[Administering the Logging Service].
-Monitoring::
-  By default, the monitoring service is enabled. However, monitoring for
-  the individual modules is not enabled, so your first monitoring task
-  is to enable monitoring for the modules that you want to monitor. See
-  link:monitoring.html#ablur[Administering the Monitoring Service].
-Life Cycle Modules::
-  See link:lifecycle-modules.html#giury[Administering Life Cycle
-  Modules].
-Security::
-  * System Security. Initial configuration tasks might include setting
-  up passwords, audit modules, and certificates. See
-  "link:../security-guide/system-security.html#GSSCG00035[Administering System Security]" in GlassFish Server
-  Open Source Edition Security Guide.
-  * User Security. Initial configuration tasks might include creating
-  authentication realms and file users. See
-  "link:../security-guide/user-security.html#GSSCG00036[Administering User Security]" in GlassFish Server
-  Open Source Edition Security Guide.
-  * Message Security. Initial configuration tasks might include
-  configuring a Java Cryptography Extension (JCE) provider, enabling
-  default and non-default security providers, and configuring message
-  protection policies. See "link:../security-guide/message-security.html#GSSCG00037[Administering Message
-  Security]" in GlassFish Server Open Source Edition Security Guide.
-Database Connectivity::
-  The initial tasks involved in configuring GlassFish Server to connect
-  to the Apache Derby database include creating a Java Database
-  Connectivity (JDBC) connection pool, creating a JDBC resource, and
-  integrating a JDBC driver. See link:jdbc.html#ablih[Administering
-  Database Connectivity].
-EIS Connectivity::
-  The initial tasks involved in configuring GlassFish Server to connect
-  to an enterprise information system (EIS) include creating a connector
-  connection pool, creating a connector resource, editing a resource
-  adapter configuration, creating a connector security map, creating a
-  connector work security map, and creating an administered object (if
-  needed). See link:connectors.html#abllp[Administering EIS
-  Connectivity].
-Internet Connectivity::
-  The initial tasks involved in making deployed web applications
-  accessible by internet clients include creating HTTP network listeners
-  and virtual servers, and configuring the HTTP listeners for SSL (if
-  needed). See link:http_https.html#ablsw[Administering Internet
-  Connectivity].
-Object Request Broker (ORB)::
-  An initial configuration task might involve creating an IIOP listener.
-  See link:orb.html#abltr[Administering the Object Request Broker (ORB)].
-JavaMail Service::
-  An initial configuration task might involve creating a JavaMail
-  resource. See link:javamail.html#ablkr[Administering the JavaMail
-  Service].
-Java Message Service (JMS)::
-  Initial configuration tasks might include creating a physical
-  destination, creating connection factories or destination resources,
-  creating a JMS host (if the default JMS host is not adequate),
-  adjusting connection pool settings (if needed), and configuring
-  resource adapters for JMS. See link:jms.html#abljw[Administering the
-  Java Message Service (JMS)].
-JNDI Service::
-  An initial configuration task might involve creating a JNDI resource.
-  See link:jndi.html#ablky[Administering the Java Naming and Directory
-  Interface (JNDI) Service].
-
-Information and instructions for accomplishing the tasks by using the
-Administration Console are contained in the Administration Console
-online help.
-
-[[giusb]][[GSADG00695]][[how-dotted-names-work-for-configuration]]
-
-How Dotted Names Work for Configuration
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-After the initial configuration is working, you will continue to manage
-ongoing configuration for the life of your GlassFish Server
-installation. You might need to adjust resources to improve
-productivity, or issues might arise that require settings to be modified
-or defaults to be reset. In some situations, an `asadmin` subcommand is
-provided for updating, such as the `update-connector-work-security-map`
-subcommand. However, most updating is done by using the `list`, `get`,
-and `set` subcommands with dotted names. For detailed information about
-dotted names, see the link:../reference-manual/dotted-names.html#GSRFM00268[`dotted-names`(5ASC)] help page.
-
-
-[NOTE]
-=======================================================================
-
-Dotted names also apply to monitoring, but the method is different. For
-information on using dotted names for monitoring, see
-link:monitoring.html#ghbaz[How the Monitoring Tree Structure Works].
-
-=======================================================================
-
-
-The general process for working with configuration changes on the
-command line is as follows:
-
-1.  List the modules for the component of interest. +
-The following single mode example uses the | (pipe) character and the
-`grep` command to narrow the search: +
-[source,oac_no_warn]
-----
-asadmin list "*" | grep http | grep listener
-----
-Information similar to the following is returned: +
-[source,oac_no_warn]
-----
-configs.config.server-config.network-config.network-listeners.network-listener.http-listener-1
-configs.config.server-config.network-config.network-listeners.network-listener.http-listener-2
-configs.config.server-config.network-config.protocols.protocol.admin-listener.http
-configs.config.server-config.network-config.protocols.protocol.admin-listener.http.file-cache
-configs.config.server-config.network-config.protocols.protocol.http-listener-1
-configs.config.server-config.network-config.protocols.protocol.http-listener-1.http
-configs.config.server-config.network-config.protocols.protocol.http-listener-1.http.file-cache
-configs.config.server-config.network-config.protocols.protocol.http-listener-2
-configs.config.server-config.network-config.protocols.protocol.http-listener-2.http
-configs.config.server-config.network-config.protocols.protocol.http-listener-2.http.file-cache
-configs.config.server-config.network-config.protocols.protocol.http-listener-2.ssl
-----
-2.  Get the attributes that apply to the module you are interested in. +
-The following multimode example gets the attributes and values for
-`http-listener-1`: +
-[source,oac_no_warn]
-----
-asadmin> get server-config.network-config.network-listeners.network-listener.http-listener-1.* 
-----
-Information similar to the following is returned: +
-[source,oac_no_warn]
-----
-server.http-service.http-listener.http-listener-1.acceptor-threads = 1
-server.http-service.http-listener.http-listener-1.address = 0.0.0.0
-server.http-service.http-listener.http-listener-1.blocking-enabled = false
-server.http-service.http-listener.http-listener-1.default-virtual-server = server
-server.http-service.http-listener.http-listener-1.enabled = true
-server.http-service.http-listener.http-listener-1.external-port =
-server.http-service.http-listener.http-listener-1.family = inet
-server.http-service.http-listener.http-listener-1.id = http-listener-1
-server.http-service.http-listener.http-listener-1.port = 8080
-server.http-service.http-listener.http-listener-1.redirect-port =
-server.http-service.http-listener.http-listener-1.security-enabled = false
-server.http-service.http-listener.http-listener-1.server-name =
-server.http-service.http-listener.http-listener-1.xpowered-by = true
-----
-3.  Modify an attribute by using the `set` subcommand. +
-This example sets the `security-enabled` attribute of `http-listener-1`
-to true: +
-[source,oac_no_warn]
-----
-asadmin> set server.http-service.http-listener.http-listener-1.security-enabled = true
-----
-
-[[gjjrl]][[GSADG00696]][[configuration-files]]
-
-Configuration Files
-^^^^^^^^^^^^^^^^^^^
-
-The bulk of the configuration information about GlassFish Server
-resources, applications, and instances is stored in the `domain.xml`
-configuration file. This file is the central repository for a given
-administrative domain and contains an XML representation of the
-GlassFish Server domain model. The default location for the `domain.xml`
-file is domain-dir`/config`.
-
-
-[NOTE]
-=======================================================================
-
-GlassFish Server maintains a backup of the `domain.xml` file that is
-named `domain.xml.bak`. The purpose of this file is solely to enable
-GlassFish Server to start a domain if the `domain.xml` file cannot be
-read. Do not modify or delete the `domain.xml.bak` file and do not use
-this file for any other purpose.
-
-=======================================================================
-
-
-The `logging.properties` file is used to configure logging levels for
-individual modules. The default `logging.properties` file is located in
-the same directory as the `domain.xml` file. For further information on
-the `logging.properties` file, see link:logging.html#gkkit[Logging
-Properties].
-
-The `asenv.conf` file is located in the as-install`/config` directory.
-Its purpose is to store the GlassFish Server environment variables, such
-as the installation location of the database, Message Queue, and so on.
-
-
-[NOTE]
-=======================================================================
-
-Changes are automatically applied to the appropriate configuration file.
-Do not edit the configuration files directly. Manual editing is prone to
-error and can have unexpected results.
-
-=======================================================================
-
-
-[[gitzw]][[GSADG00697]][[impact-of-configuration-changes]]
-
-Impact of Configuration Changes
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Some configuration changes require that you restart the DAS or GlassFish
-Server instances for the changes to take effect. Other changes are
-applied dynamically without requiring that the DAS or instances be
-restarted. The procedures in this guide indicate when a restart is
-required. GlassFish Server enables you to determine whether the DAS or
-an instance must be restarted to apply configuration changes.
-
-Some changes to resources or connection pools affect the applications
-that use the resources or connection pools. These changes do not require
-restart. However, any applications that use the resources or connection
-pools must be disabled and re-enabled or redeployed for the change to
-take effect.
-
-The following topics are addressed here:
-
-* link:#gkvaj[To Determine Whether the DAS or an Instance Requires
-Restart]
-* link:#ghciy[Configuration Changes That Require Restart]
-* link:#ghclm[Dynamic Configuration Changes]
-* link:#gkvas[Changes That Affect Applications]
-
-[[gkvaj]][[GSADG00300]][[to-determine-whether-the-das-or-an-instance-requires-restart]]
-
-To Determine Whether the DAS or an Instance Requires Restart
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-1.  Ensure that the DAS is running. +
-To obtain information about the DAS or an instance, a running server is
-required.
-2.  Do one of the following:
-* To determine if the DAS requires restart, list the domains in your
-GlassFish Server installation. +
-Use the link:../reference-manual/list-domains.html#GSRFM00163[`list-domains`] subcommand for this purpose. +
-[source,oac_no_warn]
-----
-asadmin> list-domains [--domaindir domain-root-dir]
-----
-The domain-root-dir is the directory that contains the directories in
-which individual domains' configuration is stored. The default is
-as-install`/domains`, where as-install is the base installation
-directory of the GlassFish Server software. +
-If the DAS requires restart, a statement that restart is required is
-displayed.
-* To determine if an instance requires restart, list information about
-the instance. +
-Use the link:../reference-manual/list-instances.html#GSRFM00170[`list-instances`] subcommand for this purpose. +
-[source,oac_no_warn]
-----
-asadmin> list-instances instance-name
-----
-The instance-name is the name of the instance for which you are listing
-information. +
-If the instance requires restart, one of the following pieces of
-information is displayed: a statement that restart is required, or a
-list of configuration changes that are not yet applied to the instance.
-
-[[GSADG00093]][[gkvay]]
-
-
-Example 1-1 Determining if the DAS Requires Restart
-
-This example determines that the DAS for the domain `domain1` requires
-restart to apply configuration changes.
-
-[source,oac_no_warn]
-----
-asadmin> list-domains
-domain1 running, restart required to apply configuration changes
-Command list-domains executed successfully.
-----
-
-[[GSADG00094]][[gkvba]]
-
-
-Example 1-2 Determining if an Instance Requires Restart
-
-This example determines that the instance `pmd-i1` requires restart to
-apply configuration changes.
-
-[source,oac_no_warn]
-----
-asadmin> list-instances pmd-i1
-pmd-i1   running;  requires restart  
-Command list-instances executed successfully.
-----
-
-[[GSADG795]]
-
-See Also
-
-* link:../reference-manual/list-domains.html#GSRFM00163[`list-domains`(1)]
-* link:../reference-manual/list-instances.html#GSRFM00170[`list-instances`(1)]
-
-You can also view the full syntax and options of the subcommands by
-typing the following commands at the command line.
-
-* `asadmin help list-domains`
-* `asadmin help list-instances`
-
-[[ghciy]][[GSADG00628]][[configuration-changes-that-require-restart]]
-
-Configuration Changes That Require Restart
-++++++++++++++++++++++++++++++++++++++++++
-
-The following configuration changes require restart for the changes to
-take effect:
-
-* Changing JVM options
-* Changing port numbers +
-
-[NOTE]
-=======================================================================
-
-Changes to some port numbers, for example HTTP listener ports, do not
-require restart.
-
-=======================================================================
-
-* Changing log handler elements
-* Configuring certificates
-* Managing HTTP, JMS, IIOP, JNDI services
-* Enabling or disabling secure administration as explained in
-"link:../security-guide/administrative-security.html#GSSCG00165[Running Secure Admin]" in GlassFish Server Open Source
-Edition Security Guide
-
-[[ghclm]][[GSADG00629]][[dynamic-configuration-changes]]
-
-Dynamic Configuration Changes
-+++++++++++++++++++++++++++++
-
-With dynamic configuration, changes take effect while the DAS or
-instance is running. The following configuration changes do not require
-restart:
-
-* Adding or deleting add-on components
-* Adding or removing JDBC, JMS, and connector resources and pools
-(Exception: Some connection pool properties affect applications.)
-* Changing a system property that is not referenced by a JVM option or a
-port
-* Adding file realm users
-* Changing logging levels
-* Enabling and disabling monitoring
-* Changing monitoring levels for modules
-* Enabling and disabling resources and applications
-* Deploying, undeploying, and redeploying applications
-
-[[gkvas]][[GSADG00630]][[changes-that-affect-applications]]
-
-Changes That Affect Applications
-++++++++++++++++++++++++++++++++
-
-Some changes to resources or connection pools affect the applications
-that use the resources or connection pools. These changes do not require
-restart. However, any applications that use the resources or connection
-pools must be disabled and re-enabled or redeployed for the change to
-take effect.
-
-
-[NOTE]
-=======================================================================
-
-If you do not know which applications use the changed resources or
-connection pools, you can apply these changes by restarting the clusters
-orGlassFish Server instances to which applications are deployed.
-However, to minimize the disruption to the services that your
-applications provide, avoid restarting clusters or instances to apply
-these changes if possible.
-
-=======================================================================
-
-
-The following changes affect applications:
-
-* Creating or deleting resources (Exception: Changes to some JDBC, JMS,
-or connector resources do not affect applications.)
-* Modifying the following JDBC connection pool properties:
-
-** `datasource-classname`
-
-** `associate-with-thread`
-
-** `lazy-connection-association`
-
-** `lazy-connection-enlistment`
-
-** JDBC driver vendor-specific properties
-* Modifying the following connector connection pool properties:
-
-** `resource-adapter-name`
-
-** `connection-definition-name`
-
-** `transaction-support`
-
-** `associate-with-thread`
-
-** `lazy-connection-association`
-
-** `lazy-connection-enlistment`
-
-** Vendor-specific properties
-
-[[ggjxp]][[GSADG00528]][[administration-tools]]
-
-Administration Tools
-~~~~~~~~~~~~~~~~~~~~
-
-For the most part, you can perform the same tasks by using either the
-graphical Administration Console or the `asadmin` command-line utility,
-however, there are exceptions.
-
-The following GlassFish Server administration tools are described here:
-
-* link:#ablav[Administration Console]
-* link:#gcocs[`asadmin` Utility]
-* link:#gjjok[REST Interfaces]
-* link:#gjjxt[OSGi Module Management Subsystem]
-* link:#ghcjl[`keytool` Utility]
-* link:#ghrfm[Java Monitoring and Management Console (JConsole)]
-
-[[ablav]][[GSADG00698]][[administration-console]]
-
-Administration Console
-^^^^^^^^^^^^^^^^^^^^^^
-
-The Administration Console is a browser-based utility that features an
-easy-to-navigate graphical interface that includes extensive online help
-for the administrative tasks.
-
-To use the Administration Console, the domain administration server
-(DAS) must be running. Each domain has its own DAS, which has a unique
-port number. When GlassFish Server was installed, you chose a port
-number for the DAS, or used the default port of 4848. You also specified
-a user name and password if you did not accept the default login
-(`admin` with no password).
-
-When specifying the URL for the Administration Console, use the port
-number for the domain to be administered. The format for starting the
-Administration Console in a web browser is `http://`hostname`:`port. For
-example:
-
-[source,oac_no_warn]
-----
-http://kindness.example.com:4848
-----
-
-If the Administration Console is running on the host where GlassFish
-Server was installed, specify `localhost` for the host name. For
-example:
-
-[source,oac_no_warn]
-----
-http://localhost:4848
-----
-
-If the Administration Console is run on a host different from the host
-where GlassFish Server was installed, a secure connection (`https`
-instead of `http`) is used. Some browsers do not display pages on secure
-connections by default and must be configured to permit secure protocols
-(SSL and TLS).
-
-For Microsoft Windows, an alternate way to start the GlassFish Server
-Administration Console is by using the Start menu.
-
-You can display the help material for a page in the Administration
-Console by clicking the Help button on the page. The initial help page
-describes the functions and fields of the page itself. Associated task
-instructions can be accessed on additional pages by clicking a link in
-the See Also list.
-
-
-[NOTE]
-=======================================================================
-
-If you try to use the Administration Console from a system through a
-proxy server on another system back to the original system, while using
-the system's full host name (instead of `localhost` or `127.0.0.1`) you
-are denied access because the request is treated as a remote request,
-which requires that the secure administration feature (secure admin) be
-enabled.
-
-To avoid this situation, do one of the following:
-
-* Do not use a proxy server.
-* Use `localhost` or `127.0.0.1` as the host name.
-* Enable secure admin so that what GlassFish Server interprets as a
-remote request is accepted as such.
-
-To enable secure admin, see "olink:GSSCG00039[Managing Administrative
-Security]" in GlassFish Server Open Source Edition Security Guide.
-
-=======================================================================
-
-
-[[gcocs]][[GSADG00699]][[asadmin-utility]]
-
-`asadmin` Utility
-^^^^^^^^^^^^^^^^^
-
-The `asadmin` utility is a command-line tool that runs subcommands for
-identifying the operation or task that you want to perform. You can run
-`asadmin` subcommands either from a command prompt or from a script.
-Running `asadmin` subcommands from a script is helpful for automating
-repetitive tasks. Basic information about how the `asadmin` utility
-works can be found in the link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] help page. For
-instructions on using the `asadmin` utility, see
-link:general-administration.html#giobi[Using the `asadmin` Utility].
-
-To issue an `asadmin` subcommand in the standard command shell (single
-mode), go to the as-install`/bin` directory and type the `asadmin`
-command followed by a subcommand. For example:
-
-[source,oac_no_warn]
-----
-asadmin list-jdbc-resources
-----
-
-You can invoke multiple command mode (multimode) by typing `asadmin` at
-the command prompt, after which the `asadmin>` prompt is presented. The
-`asadmin` utility continues to accept subcommands until you exit
-multimode and return to the standard command shell. For example:
-
-[source,oac_no_warn]
-----
-asadmin> list-jdbc-resources
-----
-
-You can display a help page for any `asadmin` subcommand by typing
-`help` before the subcommand name. For example:
-
-[source,oac_no_warn]
-----
-asadmin> help restart-domain
-----
-
-or
-
-[source,oac_no_warn]
-----
-asadmin help restart-domain
-----
-
-A collection of the `asadmin` help pages is available in HTML and PDF
-format in the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference
-Manual].
-
-[[gjjok]][[GSADG00700]][[rest-interfaces]]
-
-REST Interfaces
-^^^^^^^^^^^^^^^
-
-GlassFish Server provides representational state transfer (REST)
-interfaces to enable you to access monitoring and configuration data for
-GlassFish Server, including data that is provided by newly installed
-add-on components. For more information, see
-link:general-administration.html#gjipx[Using REST Interfaces to
-Administer GlassFish Server].
-
-[[gjjxt]][[GSADG00702]][[osgi-module-management-subsystem]]
-
-OSGi Module Management Subsystem
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The OSGi module management subsystem that is provided with GlassFish
-Server is the http://felix.apache.org/[Apache Felix OSGi framework] . To
-administer this framework, use the either of the following tools:
-
-* http://felix.apache.org/documentation/subprojects/apache-felix-remote-shell.html[Apache
-Felix Gogo] remote shell. This shell is provided with GlassFish Server.
-The shell uses the Felix Gogo shell service to interact with the OSGi
-module management subsystem.
-* GlassFish OSGi Administration Console. This console is distributed as
-an add-on component for GlassFish Server or as a set of files from the
-Maven GlassFish repository. In both distributions, the GlassFish OSGi
-Web Console is provided as an extension to the Administration Console
-and as a standalone web application. The GlassFish OSGi Administration
-Console is a customized version of the
-http://felix.apache.org/documentation/subprojects/apache-felix-web-console.html[Apache
-Felix Web Console].
-
-These tools enable you to perform administrative tasks on OSGi bundles
-such as:
-
-* Browsing installed OSGi bundles
-* Viewing the headers of installed OSGi bundles
-* Installing OSGi bundles
-* Controlling the life cycle of installed bundles
-
-[[glhdz]][[GSADG00302]][[to-enable-the-apache-felix-gogo-remote-shell]]
-
-To Enable the Apache Felix Gogo Remote Shell
-++++++++++++++++++++++++++++++++++++++++++++
-
-By default, the Apache Felix Gogo remote shell in GlassFish Server is
-disabled. Before using the shell to administer OSGi bundles in GlassFish
-Server, you must enable the shell.
-
-Enabling the Apache Felix Gogo remote shell in GlassFish Server involves
-changing the value of the property `glassfish.osgi.start.level.final`.
-This property controls whether the OSGi start level service enables the
-shell when the DAS or a GlassFish Server instance is started.
-
-1.  Ensure that the DAS is running.
-2.  [[CEGDBDBH]] +
-Change the value of the `glassfish.osgi.start.level.final` property from
-2 to 3. +
-If the domain includes clustered or standalone instances on remote
-hosts, perform this step on each remote host. +
-You can change this value either by creating a Java system property or
-by editing a file.
-* To change this value by creating a Java system property, create the
-Java system property `glassfish.osgi.start.level.final` with a value of
-3. +
-[source,oac_no_warn]
-----
-asadmin> create-jvm-options --target target -Dglassfish.osgi.start.level.final=3
-----
-target::
-  The target for which you are creating the property. +
-  For the DAS, the target is `server`. +
-  For a clustered or standalone instance, the target is the name of the
-  instance.
-* To change this value by editing a file, edit the plain-text file
-as-install`/config/osgi.properties` to change the value of the
-`glassfish.osgi.start.level.final` property from 2 to 3.
-3.  Restart the DAS. +
-For instructions, see link:domains.html#ginqj[To Restart a Domain].
-
-[[CJAGIGII]][[GSADG1050]][[to-run-apache-felix-gogo-remote-shell-commands]]
-
-To Run Apache Felix Gogo Remote Shell Commands
-++++++++++++++++++++++++++++++++++++++++++++++
-
-The Apache Felix Gogo remote shell is integrated with the GlassFish
-Server `asadmin` command line utility. You can use the `asadmin`
-subcommands `osgi` and `osgi-shell` to access the remote shell and run
-OSGi shell commands.
-
-[[GSADG1051]]
-
-To Run Remote Shell Commands Using the `osgi` Subcommand
-
-The `osgi` subcommand delegates the command line to the Apache Felix
-Gogo remote shell for the execution of OSGi shell commands. Commands are
-executed by the remote shell and results are returned by the `asadmin`
-utility. The `osgi` subcommand is supported in remote mode only.
-
-1.  Ensure that the server is running. +
-Remote commands require a running server.
-2.  Access the remote shell by using the link:../reference-manual/redeploy.html#GSRFM00217[`osgi`]
-subcommand. +
-For the full syntax and options for this subcommand, see `osgi`(1).
-
-[[GSADG1052]]
-
-To Run Remote Shell Commands Using the `osgi-shell` Subcommand
-
-The `osgi-shell` subcommand provides interactive access to the Apache
-Felix Gogo remote shell for the execution of OSGi shell commands. OSGi
-shell commands are executed on the server and results are printed on the
-client. You can run multiple commands from a file or run commands
-interactively. The `osgi-shell` subcommand is supported in local mode
-only. Unlike other local subcommands, however, the DAS and the server
-instance whose shell is being accessed must be running.
-
-1.  Ensure that the server is running.
-2.  Access the remote shell by using the link:../reference-manual/redeploy.html#GSRFM00217[`osgi-shell`]
-subcommand. +
-For the full syntax and options for this subcommand, see
-`osgi-shell`(1).
-
-[[GSADG1053]][[sthref5]]
-
-
-Example 1-3 Listing Apache Felix Gogo Remote Shell Commands
-
-This example lists Apache Felix Gogo remote shell commands. Some lines
-of output are omitted from this example for readability.
-
-[source,oac_no_warn]
-----
-asadmin> osgi help
-felix:bundlelevel
-felix:cd
-felix:frameworklevel
-gogo:cat
-gogo:each
-gogo:echo
-...
-asadmin> osgi-shell
-Use "exit" to exit and "help" for online help.
-gogo$ help
-felix:bundlelevel
-felix:cd
-felix:frameworklevel
-gogo:cat
-gogo:each
-gogo:echo
-----
-
-[[GSADG1054]][[sthref6]]
-
-
-Example 1-4 Running a Remote Shell Command
-
-This example runs the Felix Remote Shell Command `lb` without any
-arguments to list all installed OSGi bundles. Some lines of output are
-omitted from this example for readability.
-
-[source,oac_no_warn]
-----
-asadmin> osgi lb
-START LEVEL 2
-ID|State      |Level|Name
- 0|Active     |    0|System Bundle
- 1|Active     |    1|Metro Web Services API OSGi Bundle
- 2|Active     |    1|jakarta.annotation API
-Command osgi executed successfully.
-...
-asadmin> osgi-shell
-Use "exit" to exit and "help" for online help.
-gogo$ lb
-START LEVEL 2
-ID|State      |Level|Name
- 0|Active     |    0|System Bundle
- 1|Active     |    1|Metro Web Services API OSGi Bundle
- 2|Active     |    1|jakarta.annotation API
-gogo$
-----
-
-[[GSADG00097]][[gjkrh]]
-
-
-Example 1-5 Determining the Services That an OSGi Bundle Provides
-
-This example runs the Felix Remote Shell Command `inspect` with the
-`service` option and the `capability` option to determine the services
-that OSGi bundle 251 provides. Some lines of output are omitted from
-this example for readability.
-
-[source,oac_no_warn]
-----
-asadmin> osgi inspect service capability 251
-GlassFish EJB Container for OSGi Enabled EJB Applications (251) provides services:
----------------------------------------------------------------------------
-objectClass = org.glassfish.osgijavaeebase.Extender
-service.id = 68
------
-objectClass = org.glassfish.osgijavaeebase.OSGiDeployer
-service.id = 69
-service.ranking = -2147483648
-Command osgi executed successfully.
-...
-asadmin> osgi -shell
-Use "exit" to exit and "help" for online help.
-gogo$ inspect service capability 251
-GlassFish EJB Container for OSGi Enabled EJB Applications (251) provides services:
----------------------------------------------------------------------------
-objectClass = org.glassfish.osgijavaeebase.Extender
-service.id = 68
-...
-gogo$ 
-----
-
-[[gkwvx]][[GSADG00303]][[to-download-and-install-the-glassfish-osgi-web-console]]
-
-To Download and Install the GlassFish OSGi Web Console
-++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-The GlassFish OSGi Web Console is distributed as follows:
-
-* As an add-on component for GlassFish Server
-* As a set of files from the https://maven.java.net[GlassFish Maven
-repository]
-
-In both distributions, the GlassFish OSGi Web Console is provided as an
-extension to the Administration Console and as a standalone web
-application.
-
-1.  Perform one of the following sets of steps, depending on how you are
-obtaining the GlassFish OSGi Web Console.
-* If you are obtaining the console as an add-on component, install the
-GlassFish OSGi Admin Console component.
-* If you are obtaining the console from the Maven repository, download
-and unzip the required files.
-1.  Download the following files to the parent of the `glassfish3`
-directory of your GlassFish Server installation. +
-http://maven.glassfish.org/content/groups/glassfish/org/glassfish/packager/glassfish-osgi-http/3.1.2/glassfish-osgi-http-3.1.2.zip[`glassfish-osgi-http-3.1.2.zip`] +
-http://maven.glassfish.org/content/groups/glassfish/org/glassfish/packager/glassfish-osgi-gui/3.1.2/glassfish-osgi-gui-3.1.2.zip[`glassfish-osgi-gui-3.1.2.zip`]
-2.  Unzip the files that you downloaded. +
-The contents of the files are added to the
-as-install`/modules/autostart` directory of your GlassFish Server
-installation.
-2.  Restart the DAS. +
-For instructions, see link:domains.html#ginqj[To Restart a Domain].
-
-[[GSADG797]]
-
-Next Steps
-
-After downloading and installing the GlassFish OSGi Web Console, you can
-access the console as explained in the following sections:
-
-* link:#BABIDJHF[To Access the GlassFish OSGi Web Console Through the
-GlassFish Server Administration Console]
-* link:#BABDJHAF[To Access the GlassFish OSGi Web Console as a
-Standalone Web Application]
-
-[[BABIDJHF]][[GSADG798]][[to-access-the-glassfish-osgi-web-console-through-the-glassfish-server-administration-console]]
-
-To Access the GlassFish OSGi Web Console Through the GlassFish Server Administration Console
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-A tab for the GlassFish OSGi Web Console is provided for the DAS and for
-every GlassFish Server instance in a domain.
-
-1.  Ensure that the DAS and the instance for which you want to access
-the GlassFish OSGi Web Console are running.
-2.  Start the GlassFish Server Administration Console. +
-For instructions, see link:#ablav[Administration Console].
-3.  Open the Administration Console page for the DAS or instance for
-which you are accessing the GlassFish OSGi Web Console.
-* For the DAS, in the navigation tree, select the server (Admin Server)
-node.
-* For a standalone instance, perform these steps:
-1.  In the navigation tree, expand the Standalone Instances node.
-2.  Under the Standalone Instances node, select the instance.
-* For a clustered instance, perform these steps:
-1.  In the navigation tree, expand the Clusters node.
-2.  Under the Clusters node, select the cluster that contains the
-instance. +
-The General Information page for the cluster opens.
-3.  In the General Information page for the cluster, click the Instances
-tab. +
-The Clustered Server Instances page for the cluster opens.
-4.  In the Server Instances table on the Clustered Server Instances
-page, select the instance.
-4.  On the Administration Console page for the DAS or instance, click
-the OSGi Console tab. +
-You are prompted for the user name and password of the administrative
-user of the GlassFish OSGi Web Console.
-5.  In response to the prompt, provide the user name and password of the
-administrative user of the GlassFish OSGi Web Console. +
-The user name and password of this user are both preset to `admin`. +
-The GlassFish OSGi Web Console page opens.
-
-[[BABDJHAF]][[GSADG799]][[to-access-the-glassfish-osgi-web-console-as-a-standalone-web-application]]
-
-To Access the GlassFish OSGi Web Console as a Standalone Web Application
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-1.  Ensure that the DAS or the instance for which you want to access the
-GlassFish OSGi Web Console is running.
-2.  In a web browser, open the following location: +
-[source,oac_no_warn]
-----
-http://host:http-port/osgi/system/console/
-----
-host::
-  The host where the DAS or instance is running.
-http-port::
-  The port on which GlassFish Server listens for HTTP requests. The
-  default is 8080. +
-For example, if the DAS is running on the local host and GlassFish
-Server listens for HTTP requests on the default port, open the following
-location: +
-[source,oac_no_warn]
-----
-http://localhost:8080/osgi/system/console/
-----
-3.  When prompted, provide the user name and password of the
-administrative user of the GlassFish OSGi Web Console. +
-The user name and password of this user are both preset to `admin`.
-
-[[ghcjl]][[GSADG00703]][[keytool-utility]]
-
-`keytool` Utility
-^^^^^^^^^^^^^^^^^
-
-The `keytool` utility is used to set up and work with Java Security
-Socket Extension (JSSE) digital certificates. See
-"link:../security-guide/system-security.html#GSSCG00147[Administering JSSE Certificates]" in GlassFish Server
-Open Source Edition Security Guide for instructions on using `keytool`.
-
-[[ghrfm]][[GSADG00704]][[java-monitoring-and-management-console-jconsole]]
-
-Java Monitoring and Management Console (JConsole)
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Java SE provides tools to connect to an MBean server and view the MBeans
-that are registered with the server. JConsole is one such popular JMX
-Connector Client and is available as part of the standard Java SE
-distribution. For instructions on implementing JConsole in the GlassFish
-Server environment, see link:monitoring.html#giwqm[Configuring JConsole
-to View GlassFish Server Monitoring Data].
-
-[[giudo]][[GSADG00529]][[instructions-for-administering-glassfish-server]]
-
-Instructions for Administering GlassFish Server
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Information and instructions on performing most of the administration
-tasks from the command line are provided in this document and in the
-`asadmin` utility help pages. For instructions on accessing `asadmin`
-online help, see link:general-administration.html#givlw[To Display Help
-Information for the `asadmin` Utility or a Subcommand].
-
-Information and instructions for accomplishing the tasks by using the
-Administration Console are contained in the Administration Console
-online help.
-
-
-[NOTE]
-=======================================================================
-
-Instructions written for the GlassFish Server tools use standard UNIX
-forward slashes (/) for directory path separators in commands and file
-names. If you are running GlassFish Server on a Microsoft Windows
-system, use backslashes (\) instead. For example:
-
-* UNIX: as-install`/bin/asadmin`
-* Windows: as-install`\bin\asadmin`
-
-=======================================================================
-
-
-The following additional documents address specific administration
-areas:
-
-* Verifying and deploying applications +
-link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition Application Deployment
-Guide]
-
-
diff --git a/docs/administration-guide/src/main/jbake/content/part-appendixes.adoc b/docs/administration-guide/src/main/jbake/content/part-appendixes.adoc
deleted file mode 100644
index a2ea54a..0000000
--- a/docs/administration-guide/src/main/jbake/content/part-appendixes.adoc
+++ /dev/null
@@ -1,19 +0,0 @@
-type=page
-status=published
-title=Appendixes
-next=asadmin-subcommands.html
-prev=transactions.html
-~~~~~~
-Appendixes
-==========
-
-[[gitym]][[GSADG00299]][[part-iii]]
-
-Part III +
-----------
-
-[[appendixes]]
-Appendixes
-----------
-
-
diff --git a/docs/administration-guide/src/main/jbake/content/part-res-and-svcs-admin.adoc b/docs/administration-guide/src/main/jbake/content/part-res-and-svcs-admin.adoc
deleted file mode 100644
index 1d432df..0000000
--- a/docs/administration-guide/src/main/jbake/content/part-res-and-svcs-admin.adoc
+++ /dev/null
@@ -1,19 +0,0 @@
-type=page
-status=published
-title=Resources and Services Administration
-next=jdbc.html
-prev=batch.html
-~~~~~~
-Resources and Services Administration
-=====================================
-
-[[gitxw]][[GSADG00298]][[part-ii]]
-
-Part II +
----------
-
-[[resources-and-services-administration]]
-Resources and Services Administration
--------------------------------------
-
-
diff --git a/docs/administration-guide/src/main/jbake/content/part-runtime-admin.adoc b/docs/administration-guide/src/main/jbake/content/part-runtime-admin.adoc
deleted file mode 100644
index d85d373..0000000
--- a/docs/administration-guide/src/main/jbake/content/part-runtime-admin.adoc
+++ /dev/null
@@ -1,19 +0,0 @@
-type=page
-status=published
-title=Runtime Administration
-next=general-administration.html
-prev=overview.html
-~~~~~~
-Runtime Administration
-======================
-
-[[gitzg]][[GSADG00297]][[part-i]]
-
-Part I +
---------
-
-[[runtime-administration]]
-Runtime Administration
-----------------------
-
-
diff --git a/docs/administration-guide/src/main/jbake/content/preface.adoc b/docs/administration-guide/src/main/jbake/content/preface.adoc
deleted file mode 100644
index 5b7da7a..0000000
--- a/docs/administration-guide/src/main/jbake/content/preface.adoc
+++ /dev/null
@@ -1,334 +0,0 @@
-type=page
-status=published
-title=Preface
-next=overview.html
-prev=title.html
-~~~~~~
-Preface
-=======
-
-[[GSADG00003]][[gkamj]]
-
-
-[[preface]]
-Preface
--------
-
-[NOTE]
-========================================================================
-
-This documentation is part of the Java Enterprise Edition contribution 
-to the Eclipse Foundation and is not intended for use in relation to 
-Java Enterprise Edition or Orace GlassFish. The documentation is in the 
-process of being revised to reflect the new Jakarta EE branding. 
-Additional changes will be made as requirements and procedures evolve 
-for Jakarta EE. Where applicable, references to Java EE or Java 
-Enterprise Edition should be considered references to Jakarta EE. 
-
-Please see the Title page for additional license information.
-========================================================================
-
-GlassFish Server Open Source Edition 5.0 Administration Guide provides
-instructions for configuring and administering GlassFish Server Open
-Source Edition.
-
-This preface contains information about and conventions for the entire
-GlassFish Server Open Source Edition (GlassFish Server) documentation
-set.
-
-GlassFish Server 5.0 is developed through the GlassFish project
-open-source community at `https://javaee.github.io/glassfish/`. The
-GlassFish project provides a structured process for developing the
-GlassFish Server platform that makes the new features of the Java EE
-platform available faster, while maintaining the most important feature
-of Java EE: compatibility. It enables Java developers to access the
-GlassFish Server source code and to contribute to the development of the
-GlassFish Server. The GlassFish project is designed to encourage
-communication between Oracle engineers and the community.
-
-The following topics are addressed here:
-
-* link:#ghpbz[GlassFish Server Documentation Set]
-* link:#giprl[Related Documentation]
-* link:#fwbkx[Typographic Conventions]
-* link:#fquvc[Symbol Conventions]
-* link:#ghpfg[Default Paths and File Names]
-
-[[GSADG00518]][[ghpbz]]
-
-
-[[glassfish-server-documentation-set]]
-GlassFish Server Documentation Set
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The GlassFish Server documentation set describes deployment planning and
-system installation. For an introduction to GlassFish Server, refer to
-the books in the order in which they are listed in the following table.
-
-[width="100%",cols="30%,70%",options="header",]
-|=======================================================================
-|Book Title |Description
-|link:../release-notes/toc.html#GSRLN[Release Notes] |Provides late-breaking information about
-the software and the documentation and includes a comprehensive,
-table-based summary of the supported hardware, operating system, Java
-Development Kit (JDK), and database drivers.
-
-|link:../quick-start-guide/toc.html#GSQSG[Quick Start Guide] |Explains how to get started with the
-GlassFish Server product.
-
-|link:../installation-guide/toc.html#GSING[Installation Guide] |Explains how to install the software
-and its components.
-
-|link:../upgrade-guide/toc.html#GSUPG[Upgrade Guide] |Explains how to upgrade to the latest
-version of GlassFish Server. This guide also describes differences
-between adjacent product releases and configuration options that can
-result in incompatibility with the product specifications.
-
-|link:../deployment-planning-guide/toc.html#GSPLG[Deployment Planning Guide] |Explains how to build a
-production deployment of GlassFish Server that meets the requirements of
-your system and enterprise.
-
-|link:../administration-guide/toc.html#GSADG[Administration Guide] |Explains how to configure, monitor,
-and manage GlassFish Server subsystems and components from the command
-line by using the link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`] utility. Instructions for
-performing these tasks from the Administration Console are provided in
-the Administration Console online help.
-
-|link:../security-guide/toc.html#GSSCG[Security Guide] |Provides instructions for configuring and
-administering GlassFish Server security.
-
-|link:../application-deployment-guide/toc.html#GSDPG[Application Deployment Guide] |Explains how to assemble and
-deploy applications to the GlassFish Server and provides information
-about deployment descriptors.
-
-|link:../application-development-guide/toc.html#GSDVG[Application Development Guide] |Explains how to create and
-implement Java Platform, Enterprise Edition (Java EE platform)
-applications that are intended to run on the GlassFish Server. These
-applications follow the open Java standards model for Java EE components
-and application programmer interfaces (APIs). This guide provides
-information about developer tools, security, and debugging.
-
-| |
-
-|link:../embedded-server-guide/toc.html#GSESG[Embedded Server Guide] |Explains how to run applications in
-embedded GlassFish Server and to develop applications in which GlassFish
-Server is embedded.
-
-|link:../ha-administration-guide/toc.html#GSHAG[High Availability Administration Guide] |Explains how to
-configure GlassFish Server to provide higher availability and
-scalability through failover and load balancing.
-
-|link:../performance-tuning-guide/toc.html#GSPTG[Performance Tuning Guide] |Explains how to optimize the
-performance of GlassFish Server.
-
-|link:../troubleshooting-guide/toc.html#GSTSG[Troubleshooting Guide] |Describes common problems that you
-might encounter when using GlassFish Server and explains how to solve
-them.
-
-|link:../error-messages-reference/toc.html#GSEMR[Error Message Reference] |Describes error messages that you
-might encounter when using GlassFish Server.
-
-|link:../reference-manual/toc.html#GSRFM[Reference Manual] |Provides reference information in man
-page format for GlassFish Server administration commands, utility
-commands, and related concepts.
-
-|link:../../openmq/mq-release-notes/toc.html#GMRLN[Message Queue Release Notes] |Describes new features,
-compatibility issues, and existing bugs for Open Message Queue.
-
-|link:../../openmq/mq-tech-over/toc.html#GMTOV[Message Queue Technical Overview] |Provides an introduction
-to the technology, concepts, architecture, capabilities, and features of
-the Message Queue messaging service.
-
-|link:../../openmq/mq-admin-guide/toc.html#GMADG[Message Queue Administration Guide] |Explains how to set up
-and manage a Message Queue messaging system.
-
-|link:../../openmq/mq-dev-guide-jmx/toc.html#GMJMG[Message Queue Developer's Guide for JMX Clients] |Describes
-the application programming interface in Message Queue for
-programmatically configuring and monitoring Message Queue resources in
-conformance with the Java Management Extensions (JMX).
-
-|link:../../openmq/mq-dev-guide-java/toc.html#GMJVG[Message Queue Developer's Guide for Java Clients] |Provides
-information about concepts and procedures for developing Java messaging
-applications (Java clients) that work with GlassFish Server.
-
-|link:../../openmq/mq-dev-guide-c/toc.html#GMCCG[Message Queue Developer's Guide for C Clients] |Provides
-programming and reference information for developers working with
-Message Queue who want to use the C language binding to the Message
-Queue messaging service to send, receive, and process Message Queue
-messages.
-|=======================================================================
-
-
-[[GSADG00519]][[giprl]]
-
-
-[[related-documentation]]
-Related Documentation
-~~~~~~~~~~~~~~~~~~~~~
-
-The following tutorials explain how to develop Java EE applications:
-
-* https://javaee.github.io/firstcup/[Your First Cup: An Introduction to
-the Java EE Platform] (`https://javaee.github.io/firstcup/`). For
-beginning Java EE programmers, this short tutorial explains the entire
-process for developing a simple enterprise application. The sample
-application is a web application that consists of a component that is
-based on the Enterprise JavaBeans specification, a JAX-RS web service,
-and a JavaServer Faces component for the web front end.
-* https://javaee.github.io/tutorial/[The Java EE 8 Tutorial]
-(`https://javaee.github.io/tutorial/`). This comprehensive tutorial
-explains how to use Java EE 8 platform technologies and APIs to develop
-Java EE applications.
-
-Javadoc tool reference documentation for packages that are provided with
-GlassFish Server is available as follows.
-
-* The Java EE specifications and API specification for version 8 is
-located at `https://javaee.github.io/javaee-spec/`.
-* The API specification for GlassFish Server 5.0, including Java EE 8
-platform packages and nonplatform packages that are specific to the
-GlassFish Server product, is located at
-`https://javaee.github.io/glassfish/documentation`.
-
-For information about creating enterprise applications in the NetBeans
-Integrated Development Environment (IDE), see the
-http://www.netbeans.org/kb/[NetBeans Documentation, Training & Support
-page] (`http://www.netbeans.org/kb/`).
-
-The Java EE Samples project is a collection of sample applications that
-demonstrate a broad range of Java EE technologies. The Java EE Samples
-are bundled with the Java EE Software Development Kit (SDK) and are also
-available from the repository
-(`https://github.com/javaee/glassfish-samples`).
-
-[[GSADG00520]][[fwbkx]]
-
-
-[[typographic-conventions]]
-Typographic Conventions
-~~~~~~~~~~~~~~~~~~~~~~~
-
-The following table describes the typographic changes that are used in
-this book.
-
-[width="100%",cols="14%,37%,49%",options="header",]
-|=======================================================================
-|Typeface |Meaning |Example
-|`AaBbCc123` |The names of commands, files, and directories, and
-onscreen computer output a|
-Edit your `.login` file.
-
-Use `ls` `a` to list all files.
-
-`machine_name% you have mail.`
-
-|`AaBbCc123` |What you type, contrasted with onscreen computer output a|
-`machine_name%` `su`
-
-`Password:`
-
-|AaBbCc123 |A placeholder to be replaced with a real name or value |The
-command to remove a file is `rm` filename.
-
-|AaBbCc123 |Book titles, new terms, and terms to be emphasized (note
-that some emphasized items appear bold online) a|
-Read Chapter 6 in the User's Guide.
-
-A cache is a copy that is stored locally.
-
-Do not save the file.
-
-|=======================================================================
-
-
-[[GSADG00521]][[fquvc]]
-
-
-[[symbol-conventions]]
-Symbol Conventions
-~~~~~~~~~~~~~~~~~~
-
-The following table explains symbols that might be used in this book.
-
-[width="100%",cols="10%,26%,28%,36%",options="header",]
-|=======================================================================
-|Symbol |Description |Example |Meaning
-|`[ ]` |Contains optional arguments and command options. |`ls [-l]` |The
-`-l` option is not required.
-
-|`{ \| }` |Contains a set of choices for a required command option.
-|`-d {y\|n}` |The `-d` option requires that you use either the `y`
-argument or the `n` argument.
-
-|`${ }` |Indicates a variable reference. |`${com.sun.javaRoot}`
-|References the value of the `com.sun.javaRoot` variable.
-
-|- |Joins simultaneous multiple keystrokes. |Control-A |Press the
-Control key while you press the A key.
-
-|+ + |Joins consecutive multiple keystrokes. |Ctrl+A+N |Press the
-Control key, release it, and then press the subsequent keys.
-
-|> |Indicates menu item selection in a graphical user interface. |File >
-New > Templates |From the File menu, choose New. From the New submenu,
-choose Templates.
-|=======================================================================
-
-
-[[GSADG00522]][[ghpfg]]
-
-
-[[default-paths-and-file-names]]
-Default Paths and File Names
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following table describes the default paths and file names that are
-used in this book.
-
-[width="100%",cols="14%,34%,52%",options="header",]
-|=======================================================================
-|Placeholder |Description |Default Value
-|as-install + a|
-Represents the base installation directory for GlassFish Server.
-
-In configuration files, as-install is represented as follows:
-
-`${com.sun.aas.installRoot}`
-
- a|
-Installations on the Oracle Solaris operating system, Linux operating
-system, and Mac OS operating system:
-
-user's-home-directory`/glassfish3/glassfish`
-
-Installations on the Windows operating system:
-
-SystemDrive`:\glassfish3\glassfish`
-
-|as-install-parent + |Represents the parent of the base installation
-directory for GlassFish Server. a|
-Installations on the Oracle Solaris operating system, Linux operating
-system, and Mac operating system:
-
-user's-home-directory`/glassfish3`
-
-Installations on the Windows operating system:
-
-SystemDrive`:\glassfish3`
-
-|domain-root-dir + |Represents the directory in which a domain is
-created by default. |as-install`/domains/`
-
-|domain-dir + a|
-Represents the directory in which a domain's configuration is stored.
-
-In configuration files, domain-dir is represented as follows:
-
-`${com.sun.aas.instanceRoot}`
-
- |domain-root-dir`/`domain-name
-
-|instance-dir + |Represents the directory for a server instance.
-|domain-dir`/`instance-name
-|=======================================================================
-
diff --git a/docs/administration-guide/src/main/jbake/content/threadpools.adoc b/docs/administration-guide/src/main/jbake/content/threadpools.adoc
deleted file mode 100644
index 228e1fd..0000000
--- a/docs/administration-guide/src/main/jbake/content/threadpools.adoc
+++ /dev/null
@@ -1,246 +0,0 @@
-type=page
-status=published
-title=Administering Thread Pools
-next=webapps.html
-prev=jvm.html
-~~~~~~
-Administering Thread Pools
-==========================
-
-[[GSADG00008]][[abluc]]
-
-
-[[administering-thread-pools]]
-5 Administering Thread Pools
-----------------------------
-
-This chapter provides procedures for administering thread pools in the
-GlassFish Server Open Source Edition 5.0 environment by using the
-`asadmin` command-line utility.
-
-The following topics are addressed here:
-
-* link:#ggjyv[About Thread Pools]
-* link:#ablud[Configuring Thread Pools]
-
-Instructions for accomplishing these tasks by using the Administration
-Console are contained in the Administration Console online help.
-
-[[ggjyv]][[GSADG00546]][[about-thread-pools]]
-
-About Thread Pools
-~~~~~~~~~~~~~~~~~~
-
-The Virtual Machine for the Java platform (Java Virtual Machine) or JVM
-machine) can support many threads of execution simultaneously. To help
-performance, GlassFish Server maintains one or more thread pools. It is
-possible to assign specific thread pools to connector modules, to
-network listeners, or to the Object Request Broker (ORB).
-
-One thread pool can serve multiple connector modules and enterprise
-beans. Request threads handle user requests for application components.
-When GlassFish Server receives a request, it assigns the request to a
-free thread from the thread pool. The thread executes the client's
-requests and returns results. For example, if the request needs to use a
-system resource that is currently busy, the thread waits until that
-resource is free before allowing the request to use that resource.
-
-[[ablud]][[GSADG00547]][[configuring-thread-pools]]
-
-Configuring Thread Pools
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can specify the minimum and maximum number of threads that are
-reserved for requests from applications. The thread pool is dynamically
-adjusted between these two values.
-
-The following topics are addressed here:
-
-* link:#ggkwj[To Create a Thread Pool]
-* link:#giuff[To List Thread Pools]
-* link:#ggkyc[To Update a Thread Pool]
-* link:#ggkwy[To Delete a Thread Pool]
-
-[[ggkwj]][[GSADG00366]][[to-create-a-thread-pool]]
-
-To Create a Thread Pool
-^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `create-threadpool` subcommand in remote mode to create a thread
-pool.
-
-The minimum thread pool size that is specified signals the server to
-allocate at least that many threads in reserve for application requests.
-That number is increased up to the maximum thread pool size that is
-specified. Increasing the number of threads available to a process
-allows the process to respond to more application requests
-simultaneously.
-
-If one resource adapter or application occupies all the GlassFish Server
-threads, thread starvation might occur. You can avoid this by dividing
-the GlassFish Server threads into different thread pools.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Create a new thread pool by using the
-link:../reference-manual/create-threadpool.html#GSRFM00060[`create-threadpool`] subcommand. +
-Information about options for the subcommand is included in this help
-page.
-3.  To apply your changes, restart GlassFish Server. +
-See link:domains.html#ginqj[To Restart a Domain]. +
-
-[NOTE]
-===================================================================
-
-Restart is not necessary for thread pools used by the web container.
-
-===================================================================
-
-
-[[GSADG00162]][[giuez]]
-
-
-Example 5-1 Creating a Thread Pool
-
-This example creates `threadpool-l`.
-
-[source,oac_no_warn]
-----
-asadmin> create-threadpool --maxthreadpoolsize 100 
---minthreadpoolsize 20 --idletimeout 2 --workqueues 100 threadpool-1
-Command create-threadpool executed successfully
-----
-
-[[GSADG853]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-threadpool` at the command line.
-
-[[giuff]][[GSADG00367]][[to-list-thread-pools]]
-
-To List Thread Pools
-^^^^^^^^^^^^^^^^^^^^
-
-Use the `list-threadpools` subcommand in remote mode to list the
-existing thread pools.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the existing thread pools by using the
-link:../reference-manual/list-threadpools.html#GSRFM00204[`list-threadpools`] subcommand.
-
-[[GSADG00163]][[giugs]]
-
-
-Example 5-2 Listing Thread Pools
-
-This example lists the existing thread pools.
-
-[source,oac_no_warn]
-----
-asadmin> list-threadpools
-threadpool-1
-Command list-threadpools executed successfully
-----
-
-[[GSADG854]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-threadpools` at the command line.
-
-[[ggkyc]][[GSADG00368]][[to-update-a-thread-pool]]
-
-To Update a Thread Pool
-^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `set` subcommand to update the values for a specified thread
-pool.
-
-1.  List the existing thread pools by using the
-link:../reference-manual/list-threadpools.html#GSRFM00204[`list-threadpools`] subcommand.
-2.  Modify the values for a thread pool by using the
-link:../reference-manual/set.html#GSRFM00226[`set`] subcommand. +
-The thread pool is identified by its dotted name.
-3.  To apply your changes, restart GlassFish Server. +
-See link:domains.html#ginqj[To Restart a Domain]. +
-
-[NOTE]
-===================================================================
-
-Restart is not necessary for thread pools used by the web container.
-
-===================================================================
-
-
-[[GSADG00164]][[giuhc]]
-
-
-Example 5-3 Updating a Thread Pool
-
-This example sets the `max-thread-pool-size` from its previous value to
-8.
-
-[source,oac_no_warn]
-----
-asadmin> set server.thread-pools.thread-pool.http-thread-pool.max-thread-pool-size=8
-Command set executed successfully
-----
-
-[[GSADG855]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help set` at the command line.
-
-[[ggkwy]][[GSADG00369]][[to-delete-a-thread-pool]]
-
-To Delete a Thread Pool
-^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `delete-threadpool` subcommand in remote mode to delete an
-existing thread pool. Deleting a thread pool will fail if that pool is
-referenced by a network listener.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the existing thread pools by using the
-link:../reference-manual/list-threadpools.html#GSRFM00204[`list-threadpools`] subcommand.
-3.  Delete the specified thread pool by using the
-link:../reference-manual/delete-threadpool.html#GSRFM00111[`delete-threadpool`] subcommand.
-4.  To apply your changes, restart GlassFish Server. +
-See link:domains.html#ginqj[To Restart a Domain]. +
-
-[NOTE]
-===================================================================
-
-Restart is not necessary for thread pools used by the web container.
-
-===================================================================
-
-
-[[GSADG00165]][[giugt]]
-
-
-Example 5-4 Deleting a Thread Pool
-
-This example deletes `threadpool-1`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-threadpool threadpool-1
-Command delete-threadpool executed successfully
-----
-
-[[GSADG856]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-threadpool` at the command line.
-
-
diff --git a/docs/administration-guide/src/main/jbake/content/title.adoc b/docs/administration-guide/src/main/jbake/content/title.adoc
deleted file mode 100644
index b828c0a..0000000
--- a/docs/administration-guide/src/main/jbake/content/title.adoc
+++ /dev/null
@@ -1,46 +0,0 @@
-type=page
-status=published
-title=Eclipse GlassFish Server Administration Guide, Release 5.1
-next=preface.html
-prev=lot.html
-~~~~~~
-= Eclipse GlassFish Server Administration Guide, Release 5.1
-
-
-[[eclipse-glassfish-server]]
-Eclipse GlassFish Server
-------------------------
-
-Administration Guide
-
-Release 5.1
-
-Contributed 2018, 2019
-
-Eclipse GlassFish Server 5.1 Administration Guide provides
-instructions for configuring and administering GlassFish Server Open
-Source Edition.
-
-[[sthref1]]
-
-'''''
-
-Eclipse GlassFish Server Administration Guide, Release 5.1
-
-Copyright © 2013, 2019 Oracle and/or its affiliates. All rights reserved.
-
-This program and the accompanying materials are made available under the 
-terms of the Eclipse Public License v. 2.0, which is available at 
-http://www.eclipse.org/legal/epl-2.0. 
-
-SPDX-License-Identifier: EPL-2.0
-
-Oracle and Java are registered trademarks of Oracle and/or its 
-affiliates. Other names may be trademarks of their respective owners. 
-
-Intel and Intel Xeon are trademarks or registered trademarks of Intel 
-Corporation. All SPARC trademarks are used under license and are 
-trademarks or registered trademarks of SPARC International, Inc. AMD, 
-Opteron, the AMD logo, and the AMD Opteron logo are trademarks or 
-registered trademarks of Advanced Micro Devices. UNIX is a registered 
-trademark of The Open Group. 
diff --git a/docs/administration-guide/src/main/jbake/content/transactions.adoc b/docs/administration-guide/src/main/jbake/content/transactions.adoc
deleted file mode 100644
index bddc4ff..0000000
--- a/docs/administration-guide/src/main/jbake/content/transactions.adoc
+++ /dev/null
@@ -1,830 +0,0 @@
-type=page
-status=published
-title=Administering Transactions
-next=part-appendixes.html
-prev=jndi.html
-~~~~~~
-Administering Transactions
-==========================
-
-[[GSADG00022]][[ablsn]]
-
-
-[[administering-transactions]]
-19 Administering Transactions
------------------------------
-
-This chapter discusses how to manage the transaction service for the
-GlassFish Server Open Source Edition environment by using the `asadmin`
-command-line utility. Instructions for manually recovering transactions
-are also included.
-
-The following topics are addressed here:
-
-* link:#ablso[About Transactions]
-* link:#beanp[Configuring the Transaction Service]
-* link:#giubd[Managing the Transaction Service for Rollbacks]
-* link:#gjjpy[Recovering Transactions]
-* link:#beanq[Transaction Logging]
-
-Instructions for accomplishing the tasks in this chapter by using the
-Administration Console are contained in the Administration Console
-online help.
-
-For more information about the Java Transaction API (JTA) and Java
-Transaction Service (JTS), see the following sites:
-`http://www.oracle.com/technetwork/java/javaee/tech/jta-138684.html` and
-`http://www.oracle.com/technetwork/java/javaee/tech/jts-140022.html`.
-
-You might also want to read
-"https://javaee.github.io/tutorial/transactions.html[Transactions]" in
-The Java EE 8 Tutorial.
-
-[[ablso]][[GSADG00605]][[about-transactions]]
-
-About Transactions
-~~~~~~~~~~~~~~~~~~
-
-A transaction is a series of discreet actions in an application that
-must all complete successfully. By enclosing one or more actions in an
-indivisible unit of work, a transaction ensures data integrity and
-consistency. If all actions do not complete, the changes are rolled
-back.
-
-For example, to transfer funds from a checking account to a savings
-account, the following steps typically occur:
-
-1.  Check to see if the checking account has enough money to cover the
-transfer.
-2.  Debit the amount from the checking account.
-3.  Credit the amount to the savings account.
-4.  Record the transfer to the checking account log.
-5.  Record the transfer to the savings account log.
-
-These steps together are considered a single transaction.
-
-If all the steps complete successfully, the transaction is committed .
-If any step fails, all changes from the preceding steps are rolled back,
-and the checking account and savings account are returned to the states
-they were in before the transaction started. This type of event is
-called a rollback. A normal transaction ends in either a committed state
-or a rolled back state.
-
-The following elements contribute to reliable transaction processing by
-implementing various APIs and functionalities:
-
-* Transaction Manager. Provides the services and management functions
-required to support transaction demarcation, transactional resource
-management, synchronization, and transaction context propagation.
-* GlassFish Server. Provides the infrastructure required to support the
-application runtime environment that includes transaction state
-management.
-* Resource Manager. Through a resource adapter, the resource manager
-provides the application access to resources. The resource manager
-participates in distributed transactions by implementing a transaction
-resource interface used by the transaction manager to communicate
-transaction association, transaction completion, and recovery work. An
-example of such a resource manager is a relational database server.
-* Resource Adapter. A system-level software library is used by GlassFish
-Server or a client to connect to a resource manager. A resource adapter
-is typically specific to a resource manager. The resource adapter is
-available as a library and is used within the address space of the
-client using it. An example of such a resource adapter is a Java
-Database Connectivity (JDBC) driver. For information on supported JDBC
-drivers, see link:jdbc.html#beamw[Configuration Specifics for JDBC
-Drivers].
-* Transactional User Application. In the GlassFish Server environment,
-the transactional user application uses Java Naming and Directory
-Interface (JNDI) to look up transactional data sources and, optionally,
-the user transaction). The application might use declarative transaction
-attribute settings for enterprise beans, or explicit programmatic
-transaction demarcation. For more information, see "link:../application-development-guide/transaction-service.html#GSDVG00191[The
-Transaction Manager, the Transaction Synchronization Registry, and
-UserTransaction]" in GlassFish Server Open Source Edition Application
-Development Guide.
-
-The following topics are addressed here:
-
-* link:#beann[Transaction Resource Managers]
-* link:#beano[Transaction Scope]
-
-[[beann]][[GSADG00785]][[transaction-resource-managers]]
-
-Transaction Resource Managers
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-There are three types of transaction resource managers:
-
-* Databases - Use of transactions prevents databases from being left in
-inconsistent states due to incomplete updates. For information about
-JDBC transaction isolation levels, see "link:../application-development-guide/transaction-service.html#GSDVG00511[Using JDBC
-Transaction Isolation Levels]" in GlassFish Server Open Source Edition
-Application Development Guide. +
-The GlassFish Server supports a variety of JDBC XA drivers. For a list
-of the JDBC drivers currently supported by the GlassFish Server, see the
-link:../release-notes/toc.html#GSRLN[GlassFish Server Open Source Edition Release Notes]. For
-configurations of supported and other drivers, see
-link:jdbc.html#beamw[Configuration Specifics for JDBC Drivers].
-* Java Message Service (JMS) Providers - Use of transactions ensures
-that messages are reliably delivered. The GlassFish Server is integrated
-with Open Message Queue, a fully capable JMS provider. For more
-information about transactions and the JMS API, see
-link:jms.html#abljw[Administering the Java Message Service (JMS)].
-* J2EE Connector Architecture (CA) components - Use of transactions
-prevents legacy EIS systems from being left in inconsistent states due
-to incomplete updates. For more information about connectors, see
-link:connectors.html#abllp[Administering EIS Connectivity].
-
-[[beano]][[GSADG00786]][[transaction-scope]]
-
-Transaction Scope
-^^^^^^^^^^^^^^^^^
-
-A local transaction involves only one non-XA resource and requires that
-all participating application components execute within one process.
-Local transaction optimization is specific to the resource manager and
-is transparent to the Java EE application.
-
-In the GlassFish Server, a JDBC resource is non-XA if it meets either of
-the following criteria:
-
-* In the JDBC connection pool configuration, the DataSource class does
-not implement the javax.sql.XADataSource interface.
-* The Resource Type setting is not set to javax.sql.XADataSource .
-
-A transaction remains local if the following conditions remain true:
-
-* One and only one non-XA resource is used. If any additional non-XA
-resource is used, the transaction is aborted, because the transaction
-manager must use XA protocol to commit two or more resources.
-* No transaction importing or exporting occurs.
-
-Transactions that involve multiple resources or multiple participant
-processes are distributed or global transactions. A global transaction
-can involve one non-XA resource if last agent optimization is enabled.
-Otherwise, all resources must be XA. The `use-last-agent-optimization`
-property is set to `true` by default. For details about how to set this
-property, see link:#beanp[Configuring the Transaction Service].
-
-If only one XA resource is used in a transaction, one-phase commit
-occurs, otherwise the transaction is coordinated with a two-phase commit
-protocol.
-
-A two-phase commit protocol between the transaction manager and all the
-resources enlisted for a transaction ensures that either all the
-resource managers commit the transaction or they all abort. When the
-application requests the commitment of a transaction, the transaction
-manager issues a `PREPARE_TO_COMMIT` request to all the resource
-managers involved. Each of these resources can in turn send a reply
-indicating whether it is ready for commit (`PREPARED`) or not (`NO`).
-Only when all the resource managers are ready for a commit does the
-transaction manager issue a commit request (`COMMIT`) to all the
-resource managers. Otherwise, the transaction manager issues a rollback
-request (`ABORT`) and the transaction is rolled back.
-
-[[beanp]][[GSADG00606]][[configuring-the-transaction-service]]
-
-Configuring the Transaction Service
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can configure the transaction service in the GlassFish Server in the
-following ways:
-
-* To configure the transaction service using the Administration Console,
-open the Transaction Service component under the relevant configuration.
-For details, click the Help button in the Administration Console.
-* To configure the transaction service, use the link:../reference-manual/set.html#GSRFM00226[`set`]
-subcommand to set the following attributes. +
-The following examples show the `server-config` configuration, but
-values for any configuration can be set. For example, if you create a
-cluster named `cluster1` and a configuration named `cluster1-config` is
-automatically created for it, you can use `cluster1-config` in the `set`
-subcommand to get the transaction service settings for that cluster. +
-[source,oac_no_warn]
-----
-server-config.transaction-service.automatic-recovery = false
-server-config.transaction-service.heuristic-decision = rollback
-server-config.transaction-service.keypoint-interval = 2048
-server-config.transaction-service.retry-timeout-in-seconds = 600
-server-config.transaction-service.timeout-in-seconds = 0
-server-config.transaction-service.tx-log-dir = domain-dir/logs
-----
-You can also set these properties: +
-[source,oac_no_warn]
-----
-server-config.transaction-service.property.oracle-xa-recovery-workaround = true
-server-config.transaction-service.property.sybase-xa-recovery-workaround = false
-server-config.transaction-service.property.disable-distributed-transaction-logging = false
-server-config.transaction-service.property.xaresource-txn-timeout = 0
-server-config.transaction-service.property.pending-txn-cleanup-interval = -1
-server-config.transaction-service.property.use-last-agent-optimization = true
-server-config.transaction-service.property.delegated-recovery = false 
-server-config.transaction-service.property.wait-time-before-recovery-insec = 60
-server-config.transaction-service.property.purge-cancelled-transactions-after = 0
-server-config.transaction-service.property.commit-one-phase-during-recovery = false
-server-config.transaction-service.property.add-wait-point-during-recovery = 0
-server-config.transaction-service.property.db-logging-resource = jdbc/TxnDS
-server-config.transaction-service.property.xa-servername = myserver
-----
-Default property values are shown where they exist. For
-`db-logging-resource` and `xa-servername`, typical values are shown.
-Values that are not self-explanatory are as follows:
-
-** The `xaresource-txn-timeout` default of `0` means there is no
-timeout. The units are seconds.
-
-** The `pending-txn-cleanup-interval` default of `-1` means the periodic
-recovery thread doesn't run. The units are seconds.
-
-** The `purge-cancelled-transactions-after` default of `0` means
-cancelled transactions are not purged. The units are the number of
-cancellations in between purging attempts.
-
-** The `add-wait-point-during-recovery` property does not have a default
-value. If this property is unset, recovery does not wait. The units are
-seconds.
-
-** The `db-logging-resource` property does not have a default value. It
-is unset by default. However, if you set `db-logging-resource` to an
-empty value, the value used is `jdbc/TxnDS`.
-
-** The `xa-servername` property does not have a default value. Use this
-property to override server names that can cause errors. +
-You can use the link:../reference-manual/get.html#GSRFM00139[`get`] subcommand to list all the
-transaction service attributes and the properties that have been set.
-For details, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition
-Reference Manual]. +
-Changing `keypoint-interval`, `retry-timeout-in-seconds`, or
-`timeout-in-seconds` does not require a server restart. Changing other
-attributes or properties requires a server restart.
-* You can also set the following system properties: +
-[source,oac_no_warn]
-----
-ALLOW_MULTIPLE_ENLISTS_DELISTS=false
-JTA_RESOURCE_TABLE_MAX_ENTRIES=8192
-JTA_RESOURCE_TABLE_DEFAULT_LOAD_FACTOR=0.75f
-----
-The `JTA_RESOURCE_TABLE_DEFAULT_LOAD_FACTOR` default is the default
-`Map` resizing value.
-
-[[giubd]][[GSADG00607]][[managing-the-transaction-service-for-rollbacks]]
-
-Managing the Transaction Service for Rollbacks
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can roll back a single transaction by using the `asadmin`
-subcommands described in this section. To do so, the transaction service
-must be stopped (and later restarted), allowing you to see the active
-transactions and correctly identify the one that needs to be rolled
-back.
-
-The following topics are addressed here:
-
-* link:#giufn[To Stop the Transaction Service]
-* link:#giugk[To Roll Back a Transaction]
-* link:#giuet[To Restart the Transaction Service]
-* link:#gkrbo[Determining Local Transaction Completion at Shutdown]
-
-[[giufn]][[GSADG00513]][[to-stop-the-transaction-service]]
-
-To Stop the Transaction Service
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `freeze-transaction-service` subcommand in remote mode to stop
-the transaction service. When the transaction service is stopped, all
-in-flight transactions are immediately suspended. You must stop the
-transaction service before rolling back any in-flight transactions.
-
-Running this subcommand on a stopped transaction subsystem has no
-effect. The transaction service remains suspended until you restart it
-by using the `unfreeze-transaction-service` subcommand.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Stop the transaction service by using the
-link:../reference-manual/freeze-transaction-service.html#GSRFM00137[`freeze-transaction-service`] subcommand.
-
-[[GSADG00293]][[giufq]]
-
-
-Example 19-1 Stopping the Transaction Service
-
-This example stops the transaction service.
-
-[source,oac_no_warn]
-----
-asadmin> freeze-transaction-service --target instance1
-Command freeze-transaction-service executed successfully
-----
-
-[[GSADG1038]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help freeze-transaction-service` at the command line.
-
-[[giugk]][[GSADG00514]][[to-roll-back-a-transaction]]
-
-To Roll Back a Transaction
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-In some situations, you might want to roll back a particular
-transaction. Before you can roll back a transaction, you must first stop
-the transaction service so that transaction operations are suspended.
-Use the `rollback-transaction` subcommand in remote mode to roll back a
-specific transaction.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Enable monitoring using the `set` subcommand. For example: +
-[source,oac_no_warn]
-----
-asadmin> set cluster1-config.monitoring-service.module-monitoring-levels.transaction-service=HIGH
-----
-3.  Use the `freeze-transaction-service` subcommand to halt in-process
-transactions. See link:#giufn[To Stop the Transaction Service].
-4.  Identify the ID of the transaction you want to roll back. +
-To see a list of IDs of active transactions, use the `get` subcommand
-with the `--monitor` option to get the monitoring data for the
-`activeids` statistic. See link:monitoring.html#ablvl[Transaction Service
-Statistics]. For example: +
-[source,oac_no_warn]
-----
-asadmin> get --monitor instance1.server.transaction-service.activeids-current
-----
-5.  Roll back the transaction by using the
-link:../reference-manual/rollback-transaction.html#GSRFM00223[`rollback-transaction`] subcommand. +
-The transaction is not rolled back at the time of this command's
-execution, but only marked for rollback. The transaction is rolled back
-when it is completed.
-
-[[GSADG00294]][[giufy]]
-
-
-Example 19-2 Rolling Back a Transaction
-
-This example rolls back the transaction with transaction ID
-`0000000000000001_00`.
-
-[source,oac_no_warn]
-----
-asadmin> rollback-transaction --target instance1 0000000000000001_00
-Command rollback-transaction executed successfully
-----
-
-[[GSADG1039]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help rollback-transaction` at the command line.
-
-[[giuet]][[GSADG00515]][[to-restart-the-transaction-service]]
-
-To Restart the Transaction Service
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `unfreeze-transaction-service` subcommand in remote mote to
-resume all the suspended in-flight transactions. Run this subcommand to
-restart the transaction service after it has been frozen.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Restart the suspended transaction service by using the
-link:../reference-manual/unfreeze-transaction-service.html#GSRFM00245[`unfreeze-transaction-service`] subcommand.
-
-[[GSADG00295]][[giuef]]
-
-
-Example 19-3 Restarting the Transaction Service
-
-This example restarts the transaction service after it has been frozen.
-
-[source,oac_no_warn]
-----
-asadmin> unfreeze-transaction-service --target instance1
-Command unfreeze-transaction-service executed successfully
-----
-
-[[GSADG1040]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help unfreeze-transaction-service` at the command line.
-
-[[gkrbo]][[GSADG00787]][[determining-local-transaction-completion-at-shutdown]]
-
-Determining Local Transaction Completion at Shutdown
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-When you shut down a GlassFish Server instance, all database connections
-are closed. When an Oracle JDBC driver-based database connection is
-closed in the middle of a non-XA transaction, all pending changes are
-committed. Other databases usually roll back pending changes when a
-connection is closed without being explicitly committed. To determine
-the exact behavior for your database, refer to the documentation from
-your JDBC driver vendor.
-
-To explicitly specify whether GlassFish Server commits or rolls back
-non-XA transactions at server shutdown, set the
-`com.sun.enterprise.in-progress-local-transaction.completion-mode` JVM
-option to either `commit` or `rollback` using the
-link:../reference-manual/create-jvm-options.html#GSRFM00042[`create-jvm-options`] subcommand. For example:
-
-[source,oac_no_warn]
-----
-asadmin> create-jvm-options -Dcom.sun.enterprise.in-progress-local-transaction.completion-mode=rollback
-----
-
-[[gjjpy]][[GSADG00608]][[recovering-transactions]]
-
-Recovering Transactions
-~~~~~~~~~~~~~~~~~~~~~~~
-
-There are some situations where the commit or rollback operations might
-be interrupted, typically because the server crashed or a resource
-manager crashed. Crash situations can leave some transactions stranded
-between steps. GlassFish Server is designed to recover from these
-failures. If the failed transaction spans multiple servers, the server
-that started the transaction can contact the other servers to get the
-outcome of the transaction. If the other servers are unreachable, the
-transaction uses heuristic decision information to determine the
-outcome.
-
-The following topics are addressed here:
-
-* link:#gkoen[Automatic Transaction Recovery]
-* link:#giuhe[To Manually Recover Transactions]
-* link:#gaxim[Distributed Transaction Recovery]
-* link:#gaxig[Recovery Workarounds and Limitations]
-
-[[gkoen]][[GSADG00788]][[automatic-transaction-recovery]]
-
-Automatic Transaction Recovery
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-GlassFish Server can perform automatic recovery in these ways:
-
-* Pending transactions are completed upon server startup if
-`automatic-recovery` is set to `true`.
-* Periodic automatic recovery is performed by a background thread if the
-`pending-txn-cleanup-interval` property is set to a positive value.
-
-Changing these settings requires a server restart. For more information
-about how to change these settings, see link:#beanp[Configuring the
-Transaction Service].
-
-If commit fails during recovery, a message is written to the server log.
-
-[[giuhe]][[GSADG00516]][[to-manually-recover-transactions]]
-
-To Manually Recover Transactions
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `recover-transactions` subcommand in remote mode to manually
-recover transactions that were pending when a resource or a server
-instance failed.
-
-For a standalone server, do not use manual transaction recovery to
-recover transactions after a server failure. For a standalone server,
-manual transaction recovery can recover transactions only when a
-resource fails, but the server is still running. If a standalone server
-fails, only the full startup recovery process can recover transactions
-that were pending when the server failed.
-
-For an installation of multiple server instances, you can use manual
-transaction recovery from a surviving server instance to recover
-transactions after a server failure. For manual transaction recovery to
-work properly, transaction logs must be stored on a shared file system
-that is accessible to all server instances. See link:#beanq[Transaction
-Logging].
-
-When you execute `recover-transactions` in non-delegated mode, you can
-recover transactions that didn't complete two-phase commit because of a
-resource crash. To use manual transaction recovery in this way, the
-following conditions must be met:
-
-* The `recover-transactions` command should be executed after the
-resource is restarted.
-* Connection validation should be enabled so the connection pool is
-refreshed when the resource is accessed after the recovery. For more
-information, see "link:../performance-tuning-guide/tuning-glassfish.html#GSPTG00030[Connection Validation Settings]" in
-GlassFish Server Open Source Edition Performance Tuning Guide.
-
-If commit fails during recovery, a message is written to the server log.
-
-
-[NOTE]
-=======================================================================
-
-A JMS resource crash is handled the same way as any other resource.
-
-You can list in-doubt Open Message Queue transactions using the
-`imqcmd list txn` subcommand. For more information, see
-"olink:GMADG00241[Managing Transactions]" in Open Message Queue
-Administration Guide.
-
-=======================================================================
-
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Manually recover transactions by using the
-link:../reference-manual/recover-transactions.html#GSRFM00216[`recover-transactions`] subcommand.
-
-[[GSADG00296]][[giugn]]
-
-
-Example 19-4 Manually Recovering Transactions
-
-This example performs manual recovery of transactions on `instance1`,
-saving them to `instance2`.
-
-[source,oac_no_warn]
-----
-asadmin recover-transactions --target instance2 instance1
-Transaction recovered.
-----
-
-[[GSADG1041]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help recover-transactions` at the command line.
-
-[[gaxim]][[GSADG00789]][[distributed-transaction-recovery]]
-
-Distributed Transaction Recovery
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To enable cluster-wide automatic recovery, you must first facilitate
-storing of transaction logs in a shared file system. See
-link:#beanq[Transaction Logging].
-
-Next, you must set the transaction service's `delegated-recovery`
-property to `true` (the default is `false`). For information about
-setting `tx-log-dir` and `delegated-recovery`, see
-link:#beanp[Configuring the Transaction Service].
-
-[[gaxig]][[GSADG00790]][[recovery-workarounds-and-limitations]]
-
-Recovery Workarounds and Limitations
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The GlassFish Server provides workarounds for some known issues with
-transaction recovery implementations.
-
-
-[NOTE]
-=====================================================================
-
-These workarounds do not imply support for any particular JDBC driver.
-
-=====================================================================
-
-
-[[gknau]][[GSADG00689]][[general-recovery-limitations]]
-
-General Recovery Limitations
-++++++++++++++++++++++++++++
-
-The following general limitations apply to transaction recovery:
-
-* Recovery succeeds if there are no exceptions during the process. This
-is independent of the number of transactions that need to be recovered.
-* Only transactions that did not complete the two-phase commit can be
-recovered (one of the XA resources failed or GlassFish Server crashed
-after resources were prepared).
-* Manual transaction recovery cannot recover transactions after a server
-crash on a standalone server instance. Manual operations are intended
-for cases when a resource dies unexpectedly while the server is running.
-In case of a server crash, only startup recovery can recover in-doubt
-transactions.
-* It is not possible to list transaction IDs for in-doubt transactions.
-* Delegated transaction recovery (by a different server instance in a
-cluster) is not possible if the failed instance used an `EMBEDDED`
-Message Queue broker, or if it used a `LOCAL` or `REMOTE` Message Queue
-broker and the broker also failed. In this case, only automatic recovery
-on server instance restart is possible. This is because for conventional
-Message Queue clustering, state information in a failed broker is not
-available until the broker restarts.
-
-[[gknee]][[GSADG00690]][[oracle-setup-for-transaction-recovery]]
-
-Oracle Setup for Transaction Recovery
-+++++++++++++++++++++++++++++++++++++
-
-You must configure the following `grant` statements in your Oracle
-database to set up transaction recovery:
-
-[source,oac_no_warn]
-----
-grant select on SYS.DBA_PENDING_TRANSACTIONS to user; 
-grant execute on SYS.DBMS_SYSTEM to user; 
-grant select on SYS.PENDING_TRANS$ to user; 
-grant select on SYS.DBA_2PC_NEIGHBORS to user; 
-grant execute on SYS.DBMS_XA to user;
-grant select on SYS.DBA_2PC_PENDING to user;
-----
-
-The user is the database administrator. On some versions of the Oracle
-driver the last `grant execute` fails. You can ignore this.
-
-[[gjiep]][[GSADG00691]][[oracle-thin-driver]]
-
-Oracle Thin Driver
-++++++++++++++++++
-
-In the Oracle thin driver, the `XAResource.recover` method repeatedly
-returns the same set of in-doubt Xids regardless of the input flag.
-According to the XA specifications, the Transaction Manager initially
-calls this method with TMSTARTSCAN and then with TMNOFLAGS repeatedly
-until no Xids are returned. The `XAResource.commit` method also has some
-issues.
-
-To disable the GlassFish Server workaround, set the
-`oracle-xa-recovery-workaround` property value to `false`. For details
-about how to set this property, see link:#beanp[Configuring the
-Transaction Service]. This workaround is used unless explicitly
-disabled.
-
-[[gkneq]][[GSADG00692]][[delegated-recovery-after-server-crash-doesnt-work-on-mysql]]
-
-Delegated Recovery After Server Crash Doesn't Work on MySQL
-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-The MySQL database supports XA transaction recovery only when the
-database crashes. When a GlassFish Server instance crashes, MySQL rolls
-back prepared transactions.
-
-[[glclh]][[GSADG00693]][[call-to-xateminator.recover-during-resourceadapter.start-hangs-if-automatic-recovery-is-enabled]]
-
-Call to `XATeminator.recover()` During `ResourceAdapter.start()` Hangs If Automatic Recovery Is Enabled
-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-Calls to `XATerminator.recover()` from the `ResourceAdapter.start()`
-method never return because GlassFish Server deadlocks. This only occurs
-when automatic recovery is enabled.
-
-It is not advisable to do transactional activities, such as starting a
-transaction or calling `XATerminator.recover()`, during
-`ResourceAdapter.start()`. For more information, see
-`http://markmail.org/message/ogc7qndhaywfkdrp#query:+page:1+mid:kyyzpcexusbnv7ri+state:results`.
-
-[[beanq]][[GSADG00609]][[transaction-logging]]
-
-Transaction Logging
-~~~~~~~~~~~~~~~~~~~
-
-The transaction service writes transactional activity into transaction
-logs so that transactions can be recovered. You can control transaction
-logging in these ways:
-
-* Set the location of the transaction log files in one of these ways:
-
-** Set the GlassFish Server's `log-root` setting to a shared file system
-base directory and set the transaction service's `tx-log-dir` attribute
-to a relative path.
-
-** Set `tx-log-dir` to an absolute path to a shared file system
-directory, in which case `log-root` is ignored for transaction logs.
-
-** Set a system property called `TX-LOG-DIR` to a shared file system
-directory. For example: +
-[source,oac_no_warn]
-----
-asadmin> create-system-properties --target server TX-LOG-DIR=/inst1/logs
-----
-For information about setting `log-root` and other general logging
-settings, see link:logging.html#abluj[Administering the Logging Service].
-* Turn off transaction logging by setting the
-`disable-distributed-transaction-logging` property to `true` and the
-`automatic-recovery` attribute to `false`. Do this only if performance
-is more important than transaction recovery.
-
-
-[NOTE]
-=======================================================================
-
-All instances in a cluster must be owned by the same user (`uid`), and
-read/write permissions for that user must be set on the transaction log
-directories.
-
-Transaction logs should be stored in a high-availability network file
-system (NFS) to avoid a single point of failure.
-
-=======================================================================
-
-
-[[gcmam]][[GSADG00517]][[to-store-transaction-logs-in-a-database]]
-
-To Store Transaction Logs in a Database
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-For multi-core machines, logging transactions to a database may be more
-efficient. Transaction logging is designed to work with any
-JDBC-compliant database. For databases with which transaction logging
-has been tested, see the GlassFish Server Open Source Edition Release
-Notes.
-
-1.  [[CIHDBIJI]] +
-Create a JDBC connection Pool. To use non-transactional connections to
-insert log records, you can either set the
-`non-transactional-connections` attribute to `true` in this step, or you
-can perform step link:#CIHGIHJC[5] later.
-2.  Create a JDBC resource that uses the connection pool and note the
-JNDI name of the JDBC resource.
-3.  Automatic table creation for the transaction logs is done by
-default. However, if you would prefer to create the table manually, name
-it `txn_log_table` with the following schema: +
-[width="100%",cols="50%,50%",options="header",]
-|==========================
-|Column Name |JDBC Type
-|`LOCALTID` |`VARCHAR`
-|`INSTANCENAME` |`VARCHAR`
-|`SERVERNAME` |`VARCHAR(n)`
-|`GTRID` |`VARBINARY`
-|==========================
-
-The size of the `SERVERNAME` column should be at least the length of the
-GlassFish Server host name plus 10 characters. +
-The size of the `GTRID` column should be at least 64 bytes.
-4.  Add the `db-logging-resource` property to the transaction service.
-For example: +
-[source,oac_no_warn]
-----
-asadmin set server-config.transaction-service.property.db-logging-resource="jdbc/TxnDS"
-----
-The property's value should be the JNDI name of the JDBC resource
-configured previously.
-5.  [[CIHGIHJC]] +
-If you didn't set the `non-transactional-connections` attribute to
-`true` in step link:#CIHDBIJI[1] and you want to use non-transactional
-connections to insert log records, use the following
-`asadmin create-jvm-options` command to reference an existing
-transactional resource but use non-transactional connections for the
-`INSERT` statements: +
-[source,oac_no_warn]
-----
-asadmin create-jvm-options -Dcom.sun.jts.dblogging.use.nontx.connection.for.add=true
-----
-6.  To disable file synchronization, use the following
-`asadmin create-jvm-options` command: +
-[source,oac_no_warn]
-----
-asadmin create-jvm-options -Dcom.sun.appserv.transaction.nofdsync
-----
-7.  Restart the server.
-
-[[GSADG1042]]
-
-Next Steps
-
-To define the SQL used by the transaction manager when it is storing its
-transaction logs in the database, use the following flags:
-
-`-Dcom.sun.jts.dblogging.insertquery=sql` statement
-
-`-Dcom.sun.jts.dblogging.deletequery=sql` statement
-
-`-Dcom.sun.jts.dblogging.selectquery=sql` statement
-
-`-Dcom.sun.jts.dblogging.selectservernamequery=sql` statement
-
-The default statements are as follows:
-
-`-Dcom.sun.jts.dblogging.insertquery=insert into txn_log_table values ( ?, ?, ?, ? )`
-
-`-Dcom.sun.jts.dblogging.deletequery=delete from txn_log_table where localtid = ? and servername = ?`
-
-`-Dcom.sun.jts.dblogging.selectquery=select * from txn_log_table where servername = ?`
-
-`-Dcom.sun.jts.dblogging.selectservernamequery=select distinct servername from txn_log_table where instancename = ?`
-
-To set one of these flags using the `asadmin create-jvm-options`
-command, you must quote the statement. For example:
-
-`create-jvm-options '-Dcom.sun.jts.dblogging.deletequery=delete from txn_log_table where gtrid = ?'`
-
-You can also set JVM options in the Administration Console. Select the
-JVM Settings component under the relevant configuration. These flags and
-their statements must also be quoted in the Administration Console. For
-example:
-
-`'-Dcom.sun.jts.dblogging.deletequery=delete from txn_log_table where gtrid = ?'`
-
-[[GSADG1043]]
-
-See Also
-
-For information about JDBC connection pools and resources, see
-link:jdbc.html#ablih[Administering Database Connectivity]. For more
-information about the `asadmin set` and `asadmin create-jvm-options`
-commands, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition
-Reference Manual]. For databases with which transaction logging has been
-tested, see the GlassFish Server Open Source Edition Release Notes.
-
-
diff --git a/docs/administration-guide/src/main/jbake/content/webapps.adoc b/docs/administration-guide/src/main/jbake/content/webapps.adoc
deleted file mode 100644
index 7f83e6c..0000000
--- a/docs/administration-guide/src/main/jbake/content/webapps.adoc
+++ /dev/null
@@ -1,745 +0,0 @@
-type=page
-status=published
-title=Administering Web Applications
-next=logging.html
-prev=threadpools.html
-~~~~~~
-Administering Web Applications
-==============================
-
-[[GSADG00009]][[gbbjk]]
-
-
-[[administering-web-applications]]
-6 Administering Web Applications
---------------------------------
-
-This chapter explains how to administer web applications in the
-GlassFish Server Open Source Edition 5.0 environment.
-
-The following topics are addressed here:
-
-* link:#beagk[Invoking a Servlet by Alternate Means]
-* link:#gixud[Changing Log Output for a Servlet]
-* link:#beagc[Defining Global Features for Web Applications]
-* link:#gixrb[Redirecting a URL]
-* link:#gfaad[Administering `mod_jk`]
-* link:#CIHJDAJD[Administering `mod_proxy_ajp`]
-
-Instructions for accomplishing some of these tasks by using the
-Administration Console are contained in the Administration Console
-online help.
-
-[[beagk]][[GSADG00548]][[invoking-a-servlet-by-alternate-means]]
-
-Invoking a Servlet by Alternate Means
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can call a servlet deployed to GlassFish Server by using a URL in a
-browser or embedded as a link in an HTML or JSP file. The format of a
-servlet invocation URL is as follows:
-
-[source,oac_no_warn]
-----
-http://server:port/context-root/servlet-mapping?name=value
-----
-
-The following table describes each URL section.
-
-[[GSADG857]][[sthref20]][[fvyhk]]
-
-
-Table 6-1 URL Fields for Servlets Within an Application
-
-[width="100%",cols="21%,79%",options="header",]
-|=======================================================================
-|URL element |Description
-|server`:`port a|
-The IP address (or host name) and optional port number.
-
-To access the default web module for a virtual server, specify only this
-URL section. You do not need to specify the context-root or servlet-name
-unless you also wish to specify name-value parameters.
-
-|context-root a|
-For an application, the context root is defined in the `context-root`
-element of the `application.xml`, `sun-application.xml`, or
-`sun-web.xml` file. For an individually deployed web module, the context
-root is specified during deployment.
-
-For both applications and individually deployed web modules, the default
-context root is the name of the WAR file minus the `.war` suffix.
-
-|servlet-mapping |The `servlet-mapping` as configured in the `web.xml`
-file.
-
-|`?`name`=`value`...` |Optional request parameters.
-|=======================================================================
-
-
-[[GSADG00166]][[giyhf]]
-
-
-Example 6-1 Invoking a Servlet With a URL
-
-In this example, `localhost` is the host name, `MortPages` is the
-context root, and `calcMortgage` is the servlet mapping.
-
-[source,oac_no_warn]
-----
-http://localhost:8080/MortPages/calcMortgage?rate=8.0&per=360&bal=180000
-----
-
-[[GSADG00167]][[giyib]]
-
-
-Example 6-2 Invoking a Servlet From Within a JSP File
-
-To invoke a servlet from within a JSP file, you can use a relative path.
-For example:
-
-[source,oac_no_warn]
-----
-<jsp:forward page="TestServlet"/><jsp:include page="TestServlet"/>
-----
-
-[[gixud]][[GSADG00549]][[changing-log-output-for-a-servlet]]
-
-Changing Log Output for a Servlet
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-`ServletContext.log` messages are sent to the server log. By default,
-the `System.out` and `System.err` output of servlets are sent to the
-server log. During startup, server log messages are echoed to the
-`System.err` output. Also by default, there is no Windows-only console
-for the `System.err` output.
-
-You can change these defaults using the Administration Console Write to
-System Log box. If this box is checked, `System.out` output is sent to
-the server log. If it is unchecked, `System.out` output is sent to the
-system default location only.
-
-[[beagc]][[GSADG00550]][[defining-global-features-for-web-applications]]
-
-Defining Global Features for Web Applications
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can use the `default-web.xml` file to define features such as
-filters and security constraints that apply to all web applications.
-
-For example, directory listings are disabled by default for added
-security. To enable directory listings in your domain's
-`default-web.xml` file, search for the definition of the servlet whose
-`servlet-name` is equal to `default`, and set the value of the
-`init-param` named `listings` to `true`. Then restart the server.
-
-[source,oac_no_warn]
-----
-<init-param>
-   <param-name>listings</param-name>
-   <param-value>true</param-value>
-</init-param>
-----
-
-If `listings` is set to `true`, you can also determine how directory
-listings are sorted. Set the value of the `init-param` named `sortedBy`
-to `NAME`, `SIZE`, or `LAST_MODIFIED`. Then restart the server.
-
-[source,oac_no_warn]
-----
-<init-param>
-   <param-name>sortedBy</param-name>
-   <param-value>LAST_MODIFIED</param-value>
-</init-param>
-----
-
-The `mime-mapping` elements in `default-web.xml` are global and
-inherited by all web applications. You can override these mappings or
-define your own using `mime-mapping` elements in your web application's
-`web.xml` file. For more information about `mime-mapping` elements, see
-the Servlet specification.
-
-You can use the Administration Console to edit the `default-web.xml`
-file, or edit the file directly using the following steps.
-
-[[fvymc]][[GSADG00370]][[to-use-the-default-web.xml-file]]
-
-To Use the `default-web.xml` File
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-1.  Place the JAR file for the filter, security constraint, or other
-feature in the domain-dir`/lib` directory.
-2.  Edit the domain-dir`/config/default-web.xml` file to refer to the
-JAR file.
-3.  To apply your changes, restart GlassFish Server. +
-See link:domains.html#ginqj[To Restart a Domain].
-
-[[gixrb]][[GSADG00551]][[redirecting-a-url]]
-
-Redirecting a URL
-~~~~~~~~~~~~~~~~~
-
-You can specify that a request for an old URL be treated as a request
-for a new URL. This is called redirecting a URL.
-
-To specify a redirected URL for a virtual server, use the `redirect_n`
-property, where n is a positive integer that allows specification of
-more than one. Each of these `redirect_n` properties is inherited by all
-web applications deployed on the virtual server.
-
-The value of each `redirect_n` property has two components which can be
-specified in any order:
-
-* The first component, `from`, specifies the prefix of the requested URI
-to match.
-* The second component, `url-prefix`, specifies the new URL prefix to
-return to the client. The from prefix is replaced by this URL prefix.
-
-[[GSADG00168]][[giyis]]
-
-
-Example 6-3 Redirecting a URL
-
-This example redirects `from` `dummy` to `etude`:
-
-[source,oac_no_warn]
-----
-<property name="redirect_1" value="from=/dummy url-prefix=http://etude"/>
-----
-
-[[gfaad]][[GSADG00552]][[administering-mod_jk]]
-
-Administering `mod_jk`
-~~~~~~~~~~~~~~~~~~~~~~
-
-The Apache Tomcat Connector `mod_jk` can be used to connect the web
-container with web servers such as Apache HTTP Server. By using
-`mod_jk`, which comes with GlassFish Server, you can front GlassFish
-Server with Apache HTTP Server.
-
-You can also use `mod_jk` directly at the JSP/servlet engine for load
-balancing. For more information about configuring `mod_jk` and Apache
-HTTP Server for load balancing with GlassFish Server 5.0 refer to
-"link:../ha-administration-guide/http-load-balancing.html#GSHAG00009[Configuring HTTP Load Balancing]" in GlassFish Server
-Open Source Edition High Availability Administration Guide.
-
-The following topics are addressed here:
-
-* link:#gixqw[To Enable `mod_jk`]
-* link:#gixpx[To Load Balance Using `mod_jk` and GlassFish Server]
-* link:#gjpat[To Enable SSL Between the `mod_jk` Load Balancer and the
-Browser]
-* link:#gjpan[To Enable SSL Between the `mod_jk` Load Balancer and
-GlassFish Server]
-
-[[gixqw]][[GSADG00371]][[to-enable-mod_jk]]
-
-To Enable `mod_jk`
-^^^^^^^^^^^^^^^^^^
-
-You can front GlassFish Server with Apache HTTP Server by enabling the
-`mod_jk` protocol for one of GlassFish Server's network listeners, as
-described in this procedure. A typical use for `mod_jk` would be to have
-Apache HTTP Server handle requests for static resources, while having
-requests for dynamic resources, such as servlets and JavaServer Pages
-(JSPs), forwarded to, and handled by the GlassFish Server back-end
-instance.
-
-When you use the `jk-enabled` attribute of the network listener, you do
-not need to copy any additional JAR files into the `/lib` directory. You
-can also create JK connectors under different virtual servers by using
-the network listener attribute `jk-enabled`.
-
-1.  Install Apache HTTP Server and `mod_jk`.
-* For information on installing Apache HTTP Server, see
-`http://httpd.apache.org/docs/2.2/install.html`.
-* For information on installing `mod_jk`, see
-`http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html`.
-2.  Configure the following files:
-* `apache2/conf/httpd.conf`, the main Apache configuration file
-* `apache2/conf/workers.properties` +
-link:#gixrq[Example 6-4] and link:#gixqt[Example 6-5] provide examples
-of configuring these two files.
-3.  Start Apache HTTP Server (`httpd`).
-4.  Start GlassFish Server with at least one web application deployed. +
-In order for the `mod_jk`-enabled network listener to start listening
-for requests, the web container must be started. Normally, this is
-achieved by deploying a web application.
-5.  Create a jk-enabled network listener by using the
-link:../reference-manual/create-network-listener.html#GSRFM00046[`create-network-listener`] subcommand. +
-[source,oac_no_warn]
-----
-asadmin> create-network-listener --protocol http-listener-1 \
---listenerport 8009 --jkenabled true jk-connector
-----
-6.  If you are using the `glassfish-jk.properties` file to use
-non-default values of attributes described at
-`http://tomcat.apache.org/tomcat-5.5-doc/config/ajp.html`), set the
-`jk-configuration-file` property of the network listener to the
-fully-qualified file name of the `glassfish-jk.properties` file. +
-[source,oac_no_warn]
-----
-asadmin> set server-config.network-config.network-listeners.network-listener.\
-jk-connector.jk-configuration-file=domain-dir/config/glassfish-jk.properties
-----
-7.  If you expect to need more than five threads for the listener,
-increase the maximum threads in the `http-thread-pool` pool: +
-[source,oac_no_warn]
-----
-asadmin> set configs.config.server-config.thread-pools.thread-pool.\
-http-thread-pool.max-thread-pool-size=value
-----
-8.  To apply your changes, restart GlassFish Server. +
-See link:domains.html#ginqj[To Restart a Domain].
-
-[[GSADG00169]][[gixrq]]
-
-
-Example 6-4 `httpd.conf` File for `mod_jk`
-
-This example shows an `httpd.conf` file that is set for `mod_jk`. In
-this example, `mod_jk` used as a simple pass-through.
-
-[source,oac_no_warn]
-----
-LoadModule jk_module /usr/lib/httpd/modules/mod_jk.so
-JkWorkersFile /etc/httpd/conf/worker.properties
-# Where to put jk logs
-JkLogFile /var/log/httpd/mod_jk.log
-# Set the jk log level [debug/error/info]
-JkLogLevel debug
-# Select the log format
-JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
-# JkOptions indicate to send SSL KEY SIZE,
-JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
-# JkRequestLogFormat set the request format
-JkRequestLogFormat "%w %V %T"
-# Send all jsp requests to GlassFish
-JkMount /*.jsp worker1
-# Send all glassfish-test requests to GlassFish
-JkMount /glassfish-test/* worker1
-----
-
-[[GSADG00170]][[gixqt]]
-
-
-Example 6-5 `workers.properties` File for `mod_jk`
-
-This example shows a `workers.properties` that is set for `mod_jk`. This
-`workers.properties` file is referenced in the second line of
-link:#gixrq[Example 6-4].
-
-[source,oac_no_warn]
-----
-# Define 1 real worker using ajp13
-worker.list=worker1
-# Set properties for worker1 (ajp13)
-worker.worker1.type=ajp13
-worker.worker1.host=localhost
-worker.worker1.port=8009
-----
-
-[[GSADG858]]
-
-See Also
-
-For more information on Apache, see `http://httpd.apache.org/`.
-
-For more information on Apache Tomcat Connector, see
-`http://tomcat.apache.org/connectors-doc/index.html`.
-
-[[gixpx]][[GSADG00372]][[to-load-balance-using-mod_jk-and-glassfish-server]]
-
-To Load Balance Using `mod_jk` and GlassFish Server
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Load balancing is the process of dividing the amount of work that a
-computer has to do between two or more computers so that more work gets
-done in the same amount of time. Load balancing can be configured with
-or without security.
-
-In order to support stickiness, the Apache `mod_jk` load balancer relies
-on a `jvmRoute` system property that is included in any `JSESSIONID`
-received by the load balancer. This means that every GlassFish Server
-instance that is front-ended by the Apache load balancer must be
-configured with a unique `jvmRoute` system property.
-
-1.  On each of the instances, perform the steps in link:#gixqw[To Enable
-`mod_jk`]. +
-If your instances run on the same machine, you must choose different JK
-ports. The ports must match `worker.worker*.port` in your
-`workers.properties` file. See the properties file in
-link:#gixqt[Example 6-5].
-2.  On each of the instances, create the `jvmRoute` system property of
-GlassFish Server by using the link:../reference-manual/create-jvm-options.html#GSRFM00042[`create-jvm-options`]
-subcommand. +
-Use the following format: +
-[source,oac_no_warn]
-----
-asadmin> create-jvm-options "-DjvmRoute=/instance-worker-name"/
-----
-where instance-worker-name is the name of the worker that you defined to
-represent the instance in the `workers.properties` file.
-3.  To apply your changes, restart Apache HTTP Server and GlassFish
-Server.
-
-[[GSADG00171]][[gjjzu]]
-
-
-Example 6-6 `httpd.conf` File for Load Balancing
-
-This example shows an `httpd.conf` file that is set for load balancing.
-
-[source,oac_no_warn]
-----
-LoadModule jk_module /usr/lib/httpd/modules/mod_jk.so 
-JkWorkersFile /etc/httpd/conf/worker.properties 
-# Where to put jk logs 
-JkLogFile /var/log/httpd/mod_jk.log 
-# Set the jk log level [debug/error/info] 
-JkLogLevel debug 
-# Select the log format 
-JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " 
-# JkOptions indicate to send SSL KEY SIZE, 
-JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories 
-# JkRequestLogFormat set the request format 
-JkRequestLogFormat "%w %V %T" 
-# Send all jsp requests to GlassFish 
-JkMount /*.jsp worker1 
-# Send all glassfish-test requests to GlassFish 
-JkMount /glassfish-test/* loadbalancer
-----
-
-[[GSADG00172]][[gjjzf]]
-
-
-Example 6-7 `workers.properties` File for Load Balancing
-
-This example shows a `workers.properties` or `glassfish-jk.properties`
-file that is set for load balancing. The `worker.worker*.port` should
-match with JK ports you created.
-
-[source,oac_no_warn]
-----
-worker.list=worker1,worker2,loadbalancer
-worker.worker1.type=ajp13
-worker.worker1.host=localhost
-worker.worker1.port=8009
-worker.worker1.lbfactor=1
-worker.worker1.socket_keepalive=1
-worker.worker1.socket_timeout=300
-worker.worker2.type=ajp13
-worker.worker2.host=localhost
-worker.worker2.port=8010
-worker.worker2.lbfactor=1
-worker.worker2.socket_keepalive=1
-worker.worker2.socket_timeout=300
-worker.loadbalancer.type=lb
-worker.loadbalancer.balance_workers=worker1,worker2
-----
-
-[[gjpat]][[GSADG00373]][[to-enable-ssl-between-the-mod_jk-load-balancer-and-the-browser]]
-
-To Enable SSL Between the `mod_jk` Load Balancer and the Browser
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To activate security for `mod_jk` on GlassFish Server, you must first
-generate a Secure Socket Layer (SSL) self-signed certificate on the
-Apache HTTP Server with the `mod_ssl` module. The tasks include
-generating a private key, a Certificate Signing Request (CSR), a
-self-signed certificate, and configuring SSL-enabled virtual hosts.
-
-[[GSADG859]]
-
-Before You Begin
-
-The `mod_jk` connector must be enabled.
-
-1.  Generate the private key as follows: +
-[source,oac_no_warn]
-----
-openssl genrsa -des3 -rand file1:file2:file3:file4:file5 -out server.key 1024
-----
-where `file1:file2:` and so on represents the random compressed files.
-2.  Remove the pass-phrase from the key as follows: +
-[source,oac_no_warn]
-----
-openssl rsa -in server.key -out server.pem 
-----
-3.  Generate the CSR is as follows: +
-[source,oac_no_warn]
-----
-openssl req -new -key server.pem -out server.csr
-----
-Enter the information you are prompted for.
-4.  Generate a temporary certificate as follows: +
-[source,oac_no_warn]
-----
-openssl x509 -req -days 60 -in server.csr -signkey server.pem -out server.crt
-----
-This temporary certificate is good for 60 days.
-5.  Create the `http-ssl.conf` file under the `/etc/apache2/conf.d`
-directory.
-6.  In the `http-ssl.conf` file, add one of the following redirects:
-* Redirect a web application, for example, `JkMount /hello/* worker1`.
-* Redirect all requests, for example, `JkMount /* worker1`. +
-[source,oac_no_warn]
-----
-# Send all jsp requests to GlassFish
-JkMount /*.jsp worker1
-# Send all glassfish-test requests to GlassFish
-JkMount /glassfish-test/* loadbalancer 
-----
-
-[[GSADG00173]][[gjpnc]]
-
-
-Example 6-8 `http-ssl.conf` File for `mod_jk` Security
-
-A basic SSL-enabled virtual host will appear in the `http-ssl.conf`
-file. In this example, all requests are redirected.
-
-[source,oac_no_warn]
-----
-Listen 443
-<VirtualHost _default_:443>
-SSLEngine on
-SSLCipherSuite ALL:!ADH:!EXP56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
-SSLCertificateFile "/etc/apache2/2.2/server.crt"
-SSLCertificateKeyFile "/etc/apache2/2.2/server.pem"
-JkMount /* worker1
-</VirtualHost>
-----
-
-[[gjpan]][[GSADG00374]][[to-enable-ssl-between-the-mod_jk-load-balancer-and-glassfish-server]]
-
-To Enable SSL Between the `mod_jk` Load Balancer and GlassFish Server
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This procedure does not enable SSL transfer between `mod_jk` and
-GlassFish Server. It enables `mod_jk` to forward SSL-encrypted
-information from the browser to GlassFish Server.
-
-[[GSADG860]]
-
-Before You Begin
-
-The self-signed certificate must be configured.
-
-1.  Perform the steps in link:#gixqw[To Enable `mod_jk`].
-2.  Start another GlassFish Server with at least one web application
-deployed. +
-In order for the `mod_jk`-enabled network listener to start listening
-for requests, the web container must be started. Normally, this is
-achieved by deploying a web application.
-3.  Follow instructions from link:http_https.html#ggnbj[To Configure an
-HTTP Listener for SSL] on the `mod_jk` connector. +
-Use the following format: +
-[source,oac_no_warn]
-----
-asadmin> create-ssl --type http-listener --certname sampleCert new-listener
-----
-4.  Add the following directives in the `httpd.conf` file under the
-`/etc/apache2/conf.d` directory: +
-[source,oac_no_warn]
-----
-# Should mod_jk send SSL information (default is On)
-JkExtractSSL On
-# What is the indicator for SSL (default is HTTPS)
-JkHTTPSIndicator HTTPS
-# What is the indicator for SSL session (default is SSL_SESSION_ID)
-JkSESSIONIndicator SSL_SESSION_ID
-# What is the indicator for client SSL cipher suit (default is SSL_CIPHER )
-JkCIPHERIndicator SSL_CIPHER
-# What is the indicator for the client SSL certificated? (default is SSL_CLIENT_CERT )
-JkCERTSIndicator SSL_CLIENT_CERT
-----
-5.  To apply your changes, restart Apache HTTP Server and GlassFish
-Server.
-
-[[CIHJDAJD]][[GSADG861]][[administering-mod_proxy_ajp]]
-
-Administering `mod_proxy_ajp`
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The Apache Connector `mod_proxy_ajp` can be used to connect the web
-container with Apache HTTP Server. By using `mod_proxy_ajp`, you can
-front GlassFish Server with Apache HTTP Server.
-
-[[GSADG862]][[sthref21]]
-
-
-[[to-enable-mod_proxy_ajp]]
-To Enable `mod_proxy_ajp`
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can front GlassFish Server with Apache HTTP Server and its
-`mod_proxy_ajp` connector by enabling the AJP protocol for one of
-GlassFish Server's network listeners, as described in this procedure. A
-typical use for `mod_proxy_ajp` would be to have Apache HTTP Server
-handle requests for static resources, while having requests for dynamic
-resources, such as servlets and JavaServer Pages (JSPs), forwarded to,
-and handled by the GlassFish Server back-end instance.
-
-1.  Install Apache HTTP Server. +
-For information on installing Apache HTTP Server, see
-`http://httpd.apache.org/docs/2.2/install.html`.
-2.  Configure `apache2/conf/httpd.conf`, the main Apache configuration
-file. +
-For example: +
-[source,oac_no_warn]
-----
-LoadModule proxy_module /usr/lib/httpd/modules/mod_proxy.so
-LoadModule proxy_ajp_module /usr/lib/httpd/modules/mod_proxy_ajp.so
- 
-Listen 1979
-NameVirtualHost *:1979
-<VirtualHost *:1979>
-   ServerName localhost
-   ErrorLog /var/log/apache2/ajp.error.log
-   CustomLog /var/log/apache2/ajp.log combined
- 
-   <Proxy *>
-     AddDefaultCharset Off
-     Order deny,allow
-     Allow from all
-   </Proxy>
- 
-   ProxyPass / ajp://localhost:8009/
-   ProxyPassReverse / ajp://localhost:8009/
-</VirtualHost>
-----
-3.  Start Apache HTTP Server (`httpd`).
-4.  Create a jk-enabled network listener by using the
-`create-network-listener` subcommand. +
-[source,oac_no_warn]
-----
-asadmin> create-network-listener --protocol http-listener-1 \
---listenerport 8009 --jkenabled true jk-connector
-----
-5.  If you expect to need more than five threads for the listener,
-increase the maximum threads in the `http-thread-pool` pool: +
-[source,oac_no_warn]
-----
-asadmin> set configs.config.server-config.thread-pools.thread-pool.\
-http-thread-pool.max-thread-pool-size=value
-----
-6.  To apply your changes, restart GlassFish Server. +
-See link:domains.html#ginqj[To Restart a Domain].
-
-[[GSADG863]]
-
-See Also
-
-For more information on Apache, see `http://httpd.apache.org/`.
-
-For more information on the Apache `mod_proxy_ajp` Connector, see
-`http://httpd.apache.org/docs/2.1/mod/mod_proxy.html` and
-`http://httpd.apache.org/docs/2.1/mod/mod_proxy_ajp.html`.
-
-For more information on the AJP protocol, see
-`http://tomcat.apache.org/connectors-doc/ajp/ajpv13a.html`.
-
-[[GSADG1049]][[sthref22]]
-
-
-[[to-load-balance-using-mod_proxy_ajp-and-glassfish-server]]
-To Load Balance Using `mod_proxy_ajp` and GlassFish Server
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Load balancing is the process of dividing the amount of work that a
-computer has to do between two or more computers so that more work gets
-done in the same amount of time. In the GlassFish Server context, load
-balancing is most frequently used to distribute work among the instances
-in a GlassFish Server cluster.
-
-To configure load balancing using `mod_proxy_ajp`, you must use the
-`mod_proxy_balancer` Apache module in addition to `mod_proxy_ajp`.
-
-In order to support stickiness, the `mod_proxy_balancer` load balancer
-relies on a `jvmRoute` system property that is included in any
-`JSESSIONID` received by the load balancer. Consequently, every
-GlassFish Server instance that is front-ended by the Apache load
-balancer must be configured with a unique `jvmRoute` system property.
-
-1.  Install Apache HTTP Server. +
-For information on installing Apache HTTP Server, see
-`http://httpd.apache.org/docs/2.2/install.html`.
-2.  [[BABIFEEC]] +
-Configure `apache2/conf/httpd.conf`, the main Apache configuration file. +
-For example: +
-[source,oac_no_warn]
-----
-LoadModule proxy_module /usr/lib/httpd/modules/mod_proxy.so
-LoadModule proxy_ajp_module /usr/lib/httpd/modules/mod_proxy_ajp.so
-LoadModule proxy_balancer_module /usr/lib/httpd/modules/mod_proxy_balancer.so
- 
-# Forward proxy needs to be turned off
-ProxyRequests Off
-# Keep the original Host Header
-ProxyPreserveHost On
- 
-   <Proxy *>
-      Order deny,allow
-      Deny from all
-      Allow from localhost
-   </Proxy>
- 
-# Each BalancerMember corresponds to an instance in the GlassFish Server
-# cluster. The port specified for each instance must match the ajp port
-# specified for that instance.
-<Proxy balancer://localhost>
-    BalancerMember ajp://localhost:8009
-    BalancerMember ajp://localhost:8010
-    BalancerMember ajp://localhost:8011
-</Proxy>
-----
-3.  Start Apache HTTP Server (`httpd`).
-4.  In GlassFish Server, use the `create-network-listener` subcommand to
-create a jk-enabled network listener targeted to the cluster. +
-For example: +
-[source,oac_no_warn]
-----
-asadmin> create-network-listener --jkenabled true --target cluster1 \
---protocol http-listener-1 --listenerport ${AJP_PORT} jk-listener
-----
-In this example, `cluster1` is the name of the cluster and `jk-listener`
-is the name of the new listener.
-5.  If you expect to need more than five threads for the listener,
-increase the maximum threads in the `http-thread-pool` pool: +
-[source,oac_no_warn]
-----
-asadmin> set configs.config.cluster1-config.thread-pools.thread-pool.\
-http-thread-pool.max-thread-pool-size=value
-----
-6.  Use the `create-jvm-options` subcommand to create the `jvmRoute`
-property targeted to the cluster. +
-For example: +
-[source,oac_no_warn]
-----
-asadmin> create-jvm-options --target cluster1 \
-"-DjvmRoute=\${AJP_INSTANCE_NAME}"
-----
-7.  Use the `create-system-properties` subcommand to define the
-`AJP_PORT` and `AJP_INSTANCE_NAME` properties for each of the instances
-in the cluster, making sure to match the port values you used in
-Step link:#BABIFEEC[2] when specifying the load balancer members. +
-For example: +
-[source,oac_no_warn]
-----
-asadmin> create-system-properties --target instance1 AJP_PORT=8009
-asadmin> create-system-properties --target instance1 \
-AJP_INSTANCE_NAME=instance1
-asadmin> create-system-properties --target instance2 AJP_PORT=8010
-asadmin> create-system-properties --target instance2 \
-AJP_INSTANCE_NAME=instance2
-asadmin> create-system-properties --target instance3 AJP_PORT=8011
-asadmin> create-system-properties --target instance3 \
-AJP_INSTANCE_NAME=instance3
-----
-In this example, `instance1`, `instance2` and `instance3` are the names
-of the GlassFish Server instances in the cluster.
-8.  To apply your changes, restart GlassFish Server. +
-See link:domains.html#ginqj[To Restart a Domain].
-
-
diff --git a/docs/administration-guide/src/main/jbake/jbake.properties b/docs/administration-guide/src/main/jbake/jbake.properties
deleted file mode 100644
index 546d09c..0000000
--- a/docs/administration-guide/src/main/jbake/jbake.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-site.host=http://jbake.org
-render.tags=false
-render.sitemap=false
-render.archive=false
-render.feed=false
-asciidoctor.option.safe=0
-asciidoctor.attributes.export=true
diff --git a/docs/administration-guide/src/main/jbake/templates/footer.ftl b/docs/administration-guide/src/main/jbake/templates/footer.ftl
deleted file mode 100644
index 6f2b09e..0000000
--- a/docs/administration-guide/src/main/jbake/templates/footer.ftl
+++ /dev/null
@@ -1,46 +0,0 @@
-<#-- a footer template fragment included in the page template -->
-<hr />
-
-<table width="90%" id="bottom-nav" cellspacing="0" cellpadding="0">
-	<colgroup>
-		<col width="12%"/>
-		<col width="12%"/>
-		<col width="*"/>
-	</colgroup>
-	<tr>		
-	    <#if content.prev??>
-		<td align="left">
-		<a href="${content.prev}">
-			<span class=" vector-font"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Previous</span>
-		</a>
-		</td>
-		</#if>
-
-		<#if content.next??>
-		<td align="left">
-		<a href="${content.next}">
-			<span class="vector-font"><i class="fa fa-arrow-circle-right vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Next</span>
-		</a>
-		</td>
-		</#if>
-
-		<td align="right">
-		<a href="toc.html">
-			<span class="vector-font"><i class="fa fa-list vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Contents</span>
-		</a>
-		</td>
-	</tr>
-</table>
-
-<span id="copyright">
-        <img src="img/eclipse_foundation_logo_tiny.png" height="20px" alt="Eclipse Foundation Logo" align="top"/>&nbsp;            
-        <span >Copyright&nbsp;&copy;&nbsp;2019,&nbsp;Oracle&nbsp;and/or&nbsp;its&nbsp;affiliates.&nbsp;All&nbsp;rights&nbsp;reserved.</span>
-</span>
-
-<p align="center" class="beta">${config.status!}</p>
-
-</body>
-</html>
diff --git a/docs/administration-guide/src/main/jbake/templates/header.ftl b/docs/administration-guide/src/main/jbake/templates/header.ftl
deleted file mode 100644
index 82ebb36..0000000
--- a/docs/administration-guide/src/main/jbake/templates/header.ftl
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html>
-<#-- a header template fragment included in the page template -->
-<html lang="en">
-  <head>
-    <meta charset="utf-8"/>
-    <title><#if (content.title)??><#escape x as x?xml>${content.title}</#escape></#if></title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <link href="<#if (content.rootpath)??>${content.rootpath}<#else></#if>css/style.css" rel="stylesheet">
-    <script src="https://use.fontawesome.com/96c4d89611.js"></script>
-  </head>
-  <body>
-<table id="doc-title" cellspacing="0" cellpadding="0">
-  <tr>
-  <td align="left" valign="top">
-  <b>${content.title}</b><br />
-      <p class="beta">${config.status!}</p>
-  </td>
-  </tr>
-</table>
-<hr />
-
-<table width="90%" id="top-nav" cellspacing="0" cellpadding="0">
-	<colgroup>
-		<col width="12%"/>
-		<col width="12%"/>
-		<col width="*"/>
-	</colgroup>
-	<tr>
-	    <#if content.prev??>
-		<td align="left">
-		<a href="${content.prev}">
-			<span class="vector-font"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Previous</span>
-		</a>
-		</td>
-	    </#if>
-
-	    <#if content.next??>
-		<td align="left">
-		<a href="${content.next}">
-			<span class=" vector-font"><i class="fa fa-arrow-circle-right vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Next</span>
-		</a>
-		</td>
-	    </#if>
-
-		<td align="right">
-		<a href="toc.html">
-			<span class=" vector-font"><i class="fa fa-list vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Contents</span>
-		</a>
-		</td>
-	</tr>
-</table>
-
diff --git a/docs/administration-guide/src/main/jbake/templates/menu.ftl b/docs/administration-guide/src/main/jbake/templates/menu.ftl
deleted file mode 100644
index 888c03d..0000000
--- a/docs/administration-guide/src/main/jbake/templates/menu.ftl
+++ /dev/null
@@ -1 +0,0 @@
-<#-- a menu bar template fragment included in the page template -->
\ No newline at end of file
diff --git a/docs/administration-guide/src/main/jbake/templates/page.ftl b/docs/administration-guide/src/main/jbake/templates/page.ftl
deleted file mode 100644
index eca51db..0000000
--- a/docs/administration-guide/src/main/jbake/templates/page.ftl
+++ /dev/null
@@ -1,8 +0,0 @@
-<#-- a top level page layout template -->
-
-<#include "header.ftl">
-<#include "menu.ftl">
-
-${content.body}
-
-<#include "footer.ftl">
\ No newline at end of file
diff --git a/docs/application-deployment-guide/README.md b/docs/application-deployment-guide/README.md
deleted file mode 100644
index a3ec2b6..0000000
--- a/docs/application-deployment-guide/README.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# A JBake project template
-
-## About JBake
-
-JBake is a static site generator, it's inspired from jekyll and written
-in java.  The basic idea is to have templates for the structure of the
-page, and the body generated from asciidoc content.
-
-## Pre requisites
-
-- Maven
-- JDK8+
-
-Deploying to Github will require password less authentication.
-
-This is done by exporting your SSH public key into your Github account.
-
-## Build the site locally
-
-The site is generated under target/staging.
-
-Open file:///PATH_TO_PROJECT_DIR/target/staging in a browser to view the site.
-
-```
-mvn generate-resources
-```
-
-Or you can invoke the JBake plugin directly.
-
-```
-mvn jbake:build
-```
-
-### Rebuild the site on changes
-
-```
-mvn jbake:watch
-```
-
-If you keep this command running, changes to the sources will be
-detected and the site will be rendered incrementally.
-
-This is convenient when writing content.
-
-### Serve the site locally
-
-```
-mvn jbake:serve
-```
-
-If a webserver is required (e.g. absolute path are used), this command
-will start a webserver (jetty) at http://localhost:8820.  It will also
-watch for changes and rebuild incrementally.
-
-## Deploy the site to Github Pages
-
-```
-mvn deploy
-```
-
-## Produce a zip file for download
-
-To produce a zip file containing the generated html files, use:
-
-```
-mvn package
-```
-
-When making a release on GitHub, this zip file should be added to the release.
-
-## Links
-
-- [JBake maven plugin documentation](https://github.com/Blazebit/jbake-maven-plugin)
-- [JBake documentation](http://jbake.org/docs/2.5.1)
-- [Freemarker documentation](http://freemarker.org/docs)
-- [AsciiDoc User Guide](http://asciidoc.org/userguide.html)
-- [Asciidoctor quick reference](http://asciidoctor.org/docs/asciidoc-syntax-quick-reference)
diff --git a/docs/application-deployment-guide/pom.xml b/docs/application-deployment-guide/pom.xml
index 9f3bb4d..bc4f138 100644
--- a/docs/application-deployment-guide/pom.xml
+++ b/docs/application-deployment-guide/pom.xml
@@ -22,11 +22,11 @@
     <parent>
         <groupId>org.glassfish.docs</groupId>
         <artifactId>parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../parent</relativePath>
     </parent>
     <groupId>org.glassfish.docs</groupId>
     <artifactId>application-deployment-guide</artifactId>
     <packaging>jar</packaging>
-    <name>Eclipse GlassFish Server Application Deployment Guide, Release 5.1</name>
+    <name>Eclipse GlassFish Server Application Deployment Guide, Release 7</name>
 </project>
diff --git a/docs/application-deployment-guide/src/main/asciidoc/asadmin-deployment-subcommands.adoc b/docs/application-deployment-guide/src/main/asciidoc/asadmin-deployment-subcommands.adoc
new file mode 100644
index 0000000..e8ef8c4
--- /dev/null
+++ b/docs/application-deployment-guide/src/main/asciidoc/asadmin-deployment-subcommands.adoc
@@ -0,0 +1,149 @@
+type=page
+status=published
+title=The asadmin Deployment Subcommands
+next=dd-files.html
+prev=deploying-applications.html
+~~~~~~
+
+= The asadmin Deployment Subcommands
+
+[[GSDPG00005]][[gihzw]]
+
+
+[[a-the-asadmin-deployment-subcommands]]
+== A The `asadmin` Deployment Subcommands
+
+This appendix lists the `asadmin` deployment subcommands that are
+included with this release of the {productName} software. For information on additional `asadmin` subcommands,
+see "link:administration-guide/asadmin-subcommands.html#GSADG00023[Subcommands for the `asadmin` Utility]" in
+{productName} Administration Guide or see the
+link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+link:reference-manual/add-library.html#GSRFM00818[`add-library`]::
+  Adds one or more library JAR files to {productName}. You can
+  specify whether the libraries are added to the Common class loader
+  directory, the Java optional package directory, or the
+  application-specific class loader directory.
+link:reference-manual/create-application-ref.html#GSRFM00013[`create-application-ref`]::
+  Creates a reference from a cluster or an unclustered server instance
+  to a previously deployed Jakarta EE application or module. This
+  effectively results in the application element being deployed and made
+  available on the targeted instance or cluster.
+link:reference-manual/create-lifecycle-module.html#GSRFM00043[`create-lifecycle-module`]::
+  Creates a lifecycle module. A lifecycle module provides a means of
+  running a short or long duration Java-based task at a specific stage
+  in the server life cycle.
+link:reference-manual/delete-application-ref.html#GSRFM00064[`delete-application-ref`]::
+  Removes a reference from a cluster or an unclustered server instance
+  to a previously deployed Jakarta EE application or module. This
+  effectively results in the application element being undeployed on the
+  targeted instance or cluster.
+link:reference-manual/delete-lifecycle-module.html#GSRFM00095[`delete-lifecycle-module`]::
+  Deletes a lifecycle module.
+link:reference-manual/deploy.html#GSRFM00114[`deploy`]::
+  Deploys an enterprise application, web application, EJB module,
+  connector module, or application client module. If the component is
+  already deployed or already exists, you can forcefully redeploy if you
+  set the `--force` option to `true`. A directory can also be deployed.
+  Supported in remote mode only. For usage instructions, see
+  link:deploying-applications.html#gijmq[To Deploy an Application or
+  Module].
+link:reference-manual/deploydir.html#GSRFM00115[`deploydir`]::
+  This subcommand is deprecated. Use the `deploy` subcommand instead.
+link:reference-manual/disable.html#GSRFM00116[`disable`]::
+  Immediately deactivates the named application or module. If the
+  component has not been deployed, an error message is returned.
+  Supported in remote mode only. For usage instructions,
+  seelink:deploying-applications.html#fvyje[To Disable an Application or
+  Module].
+link:reference-manual/enable.html#GSRFM00124[`enable`]::
+  Enables the specified application or module. If the component has not
+  been deployed, an error message is returned. If the component is
+  already enabled, then it is re-enabled. Supported in remote mode only.
+  For usage instructions, see link:deploying-applications.html#gijjy[To
+  Enable an Application or Module].
+link:reference-manual/get-client-stubs.html#GSRFM00140[`get-client-stubs`]::
+  Gets the client stubs JAR file for an application client module or an
+  application containing the application client module, from the server
+  machine to the local directory. For usage instructions, see
+  link:deploying-applications.html#beaek[EJB Module Deployment
+  Guidelines].
+link:reference-manual/list-applications.html#GSRFM00148[`list-applications`]::
+  Lists deployed Jakarta EE applications and modules. Optionally lists
+  subcomponents and scoped resources. If the `--type` option is not
+  specified, all applications and modules are listed. Supported in
+  remote mode only. For usage instructions, see
+  link:deploying-applications.html#giulr[To List Deployed Applications or
+  Modules].
+link:reference-manual/list-application-refs.html#GSRFM00147[`list-application-refs`]::
+  Lists Jakarta EE applications and modules deployed on the specified
+  target server instance or cluster.
+link:reference-manual/list-libraries.html#GSRFM00819[`list-libraries`]::
+  Lists library JAR files that have been added to {productName}. You
+  can specify whether to list libraries in the Common class loader
+  directory, the Java optional package directory, or the
+  application-specific class loader directory.
+link:reference-manual/list-lifecycle-modules.html#GSRFM00181[`list-lifecycle-modules`]::
+  Lists lifecycle modules.
+link:reference-manual/list-components.html#GSRFM00155[`list-components`]::
+  This subcommand is deprecated. Use the `list-applications` subcommand
+  instead.
+link:reference-manual/list-sub-components.html#GSRFM00201[`list-sub-components`]::
+  Lists EJBs or servlets in a deployed module or in a module of the
+  deployed application. If a module is not identified, all modules are
+  listed. To display a specific module in an application, you must
+  specify the module name and the `--appname` option. Supported in
+  remote mode only. For usage instructions, see
+  link:deploying-applications.html#giulr[To List Deployed Applications or
+  Modules].
+link:reference-manual/list-web-context-param.html#GSRFM00208[`list-web-context-param`]::
+  Lists servlet context-initialization parameters of a deployed web
+  application or module. Supported in remote mode only. For usage
+  instructions, see link:deploying-applications.html#giybo[To List Web
+  Context Parameters].
+link:reference-manual/list-web-env-entry.html#GSRFM00209[`list-web-env-entry`]::
+  Lists environment entries for a deployed web application or module.
+  Supported in remote mode only. For usage instructions, see
+  link:deploying-applications.html#giyip[To List Web Environment
+  Entries].
+link:reference-manual/redeploy.html#GSRFM00217[`redeploy`]::
+  Overwrites an application or module that is already deployed.
+  Supported in remote mode only. For usage instructions, see
+  link:deploying-applications.html#gijmb[To Redeploy an Application or
+  Module].
+link:reference-manual/remove-library.html#GSRFM00820[`remove-library`]::
+  Removes one or more library JAR files from {productName}. You can
+  specify whether the libraries are removed from the Common class loader
+  directory, the Java optional package directory, or the
+  application-specific class loader directory.
+link:reference-manual/set-web-context-param.html#GSRFM00230[`set-web-context-param`]::
+  Sets a servlet context-initialization parameter of a deployed web
+  application or module. Supported in remote mode only. For usage
+  instructions, see link:deploying-applications.html#giyce[To Set a Web
+  Context Parameter].
+link:reference-manual/set-web-env-entry.html#GSRFM00231[`set-web-env-entry`]::
+  Sets an environment entry for a deployed web application or module.
+  Supported in remote mode only. For usage instructions, see
+  link:deploying-applications.html#giyhc[To Set a Web Environment Entry].
+link:reference-manual/show-component-status.html#GSRFM00232[`show-component-status`]::
+  Shows the status of a deployed component. The possible statuses
+  include `enabled` or `disabled`. Supported in remote mode only. For
+  usage instructions, see link:deploying-applications.html#giulr[To List
+  Deployed Applications or Modules].
+link:reference-manual/undeploy.html#GSRFM00244[`undeploy`]::
+  Uninstalls the specified deployed application or module. Supported in
+  remote mode only. For usage instructions, see
+  link:deploying-applications.html#gijkl[To Undeploy an Application or
+  Module].
+link:reference-manual/unset-web-context-param.html#GSRFM00248[`unset-web-context-param`]::
+  Unsets a servlet context-initialization parameter of a deployed web
+  application or module. Supported in remote mode only. For usage
+  instructions, see link:deploying-applications.html#giycy[To Unset a Web
+  Context Parameter].
+link:reference-manual/unset-web-env-entry.html#GSRFM00249[`unset-web-env-entry`]::
+  Unsets an environment entry for a deployed web application or module.
+  Supported in remote mode only. For usage instructions, see
+  link:deploying-applications.html#giyjr[To Unset a Web Environment
+  Entry].
+
+
diff --git a/docs/application-deployment-guide/src/main/asciidoc/dd-elements.adoc b/docs/application-deployment-guide/src/main/asciidoc/dd-elements.adoc
new file mode 100644
index 0000000..1c20e5f
--- /dev/null
+++ b/docs/application-deployment-guide/src/main/asciidoc/dd-elements.adoc
@@ -0,0 +1,11409 @@
+type=page
+status=published
+title=Elements of the {productName} Deployment Descriptors
+prev=dd-files.html
+~~~~~~
+
+= Elements of the {productName} Deployment Descriptors
+
+[[GSDPG00007]][[beaqi]]
+
+
+[[c-elements-of-the-glassfish-server-deployment-descriptors]]
+== C Elements of the {productName} Deployment Descriptors
+
+This appendix describes the elements of the {productName}deployment descriptors.
+
+[[beaqs]][[GSDPG00085]][[activation-config]]
+
+=== `activation-config`
+
+Specifies an activation configuration, which includes the runtime
+configuration properties of the message-driven bean in its operational
+environment. For example, this can include information about the name of
+a physical JMS destination. Matches and overrides the
+`activation-config` element in the `ejb-jar.xml` file.
+
+[[fvyoe]][[GSDPG00335]][[superelements]]
+
+==== Superelements
+
+link:#beaus[`mdb-resource-adapter`] (`glassfish-ejb-jar.xml`)
+
+[[fvynj]][[GSDPG00336]][[subelements]]
+
+==== Subelements
+
+The following table describes subelements for the `activation-config`
+element.
+
+[[GSDPG838]][[sthref9]][[fvynw]]
+
+
+Table C-1 `activation-config` subelements
+
+[width="100%",cols="32%,12%,56%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beaso[`description`]
+
+
+ |zero or one |Specifies a text description of the activation
+configuration.
+
+a|
+link:#beaqt[`activation-config-property`]
+
+
+ |one or more |Specifies an activation configuration property.
+|===
+
+
+[[beaqt]][[GSDPG00086]][[activation-config-property]]
+
+=== `activation-config-property`
+
+Specifies the name and value of an activation configuration property.
+
+[[fvyne]][[GSDPG00337]][[superelements-1]]
+
+==== Superelements
+
+link:#beaqs[`activation-config`] (`glassfish-ejb-jar.xml`)
+
+[[fvyns]][[GSDPG00338]][[subelements-1]]
+
+==== Subelements
+
+The following table describes subelements for the
+`activation-config-property` element.
+
+[[GSDPG839]][[sthref10]][[fvynv]]
+
+
+Table C-2 `activation-config-property` subelements
+
+[width="100%",cols="39%,10%,51%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beaqu[`activation-config-property-name`]
+
+
+ |only one |Specifies the name of an activation configuration property.
+a|
+link:#beaqv[`activation-config-property-value`]
+
+
+ |only one |Specifies the value of an activation configuration property.
+|===
+
+
+[[beaqu]][[GSDPG00087]][[activation-config-property-name]]
+
+=== `activation-config-property-name`
+
+Specifies the name of an activation configuration property.
+
+[[fvynm]][[GSDPG00339]][[superelements-2]]
+
+==== Superelements
+
+link:#beaqt[`activation-config-property`] (`glassfish-ejb-jar.xml`)
+
+[[fvyok]][[GSDPG00340]][[subelements-2]]
+
+==== Subelements
+
+none - contains data
+
+[[beaqv]][[GSDPG00088]][[activation-config-property-value]]
+
+=== `activation-config-property-value`
+
+Specifies the value of an activation configuration property.
+
+[[fvyou]][[GSDPG00341]][[superelements-3]]
+
+==== Superelements
+
+link:#beaqt[`activation-config-property`] (`glassfish-ejb-jar.xml`)
+
+[[fvyoz]][[GSDPG00342]][[subelements-3]]
+
+==== Subelements
+
+none - contains data
+
+[[giyhw]][[GSDPG00089]][[admin-object-resource]]
+
+=== `admin-object-resource`
+
+Defines an administered object for an inbound resource adapter.
+
+[[GSDPG840]][[sthref11]]
+
+
+[[superelements-4]]
+==== Superelements
+
+link:#giyiy[`resources`] (`glassfish-resources.xml`)
+
+[[GSDPG841]][[sthref12]]
+
+
+[[subelements-4]]
+==== Subelements
+
+The following table describes subelements for the
+`admin-object-resource` element.
+
+[[GSDPG842]][[sthref13]][[sthref14]]
+
+
+Table C-3 `admin-object-resource` Subelements
+
+[width="100%",cols="25%,12%,63%",options="header",]
+|===
+|Element |Required |Description
+a|link:#beaso[`description`]
+|zero or one
+|Contains a text description of this element.
+
+a|link:#beavx[`property`] (with attributes)
+|zero or more
+|Specifies a property or a variable.
+|===
+
+
+[[GSDPG843]][[sthref15]]
+
+
+[[attributes]]
+==== Attributes
+
+The following table describes attributes for the `admin-object-resource`
+element.
+
+[[GSDPG844]][[sthref16]][[sthref17]]
+
+
+Table C-4 `admin-object-resource` Attributes
+
+[width="172%",cols="9%,46%,45%",options="header",]
+|===
+|Attribute |Default |Description
+|`jndi-name` |none |Specifies the JNDI name for the resource.
+
+|`res-type` |none |Specifies the fully qualified type of the resource.
+
+|`res-adapter` |none |Specifies the name of the inbound resource
+adapter.
+
+|`object-type` |`user` a|
+(optional) Defines the type of the resource. Allowed values are:
+
+* `system-all` - A system resource for all server instances and the
+domain application server.
+* `system-admin` - A system resource only for the domain application
+server.
+* `system-instance` - A system resource for all server instances only.
+* `user` - A user resource.
+
+|`enabled` |`true` |(optional) Determines whether this resource is
+enabled at runtime.
+|===
+
+
+[[GSDPG845]][[sthref18]]
+
+
+[[properties]]
+==== Properties
+
+Properties of the `admin-object-resource` element are the names of
+setter methods of the class referenced by the `adminobject-class` of the
+`ra.xml` file. Some of the property names can be specified in the
+`adminobjectType` element.
+
+[[beaqw]][[GSDPG00090]][[as-context]]
+
+=== `as-context`
+
+Specifies the authentication mechanism used to authenticate the client.
+
+[[fvyos]][[GSDPG00343]][[superelements-5]]
+
+==== Superelements
+
+link:#beato[`ior-security-config`] (`glassfish-ejb-jar.xml`)
+
+[[fvyom]][[GSDPG00344]][[subelements-5]]
+
+==== Subelements
+
+The following table describes subelements for the `as-context` element.
+
+[[GSDPG846]][[sthref19]][[fvyov]]
+
+
+Table C-5 `as-context` Subelements
+
+[width="100%",cols="14%,10%,76%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beaqx[`auth-method`]
+
+
+ |only one |Specifies the authentication method. The only supported
+value is `USERNAME_PASSWORD`.
+
+a|
+link:#beawi[`realm`]
+
+
+ |only one |Specifies the realm in which the user is authenticated.
+
+a|
+link:#beawq[`required`]
+
+
+ |only one |Specifies whether the authentication method specified in the
+`auth-method` element must be used for client authentication.
+|===
+
+
+[[gjizj]][[GSDPG00091]][[archive-name]]
+
+=== `archive-name`
+
+Specifies the name of the archive file. The value of the `archive-name`
+element is used to derive the default application name when
+`display-name` is not present in the `application.xml` file. The default
+application name is the `archive-name` value minus the file extension.
+For example, if `archive-name` is `foo.ear`, the default application
+name is `foo`.
+
+[[gjizb]][[GSDPG00345]][[superelements-6]]
+
+==== Superelements
+
+link:#beaxw[`glassfish-application`] (`glassfish-application.xml`)
+
+[[gjizg]][[GSDPG00346]][[subelements-6]]
+
+==== Subelements
+
+none - contains data
+
+[[beaqx]][[GSDPG00092]][[auth-method]]
+
+=== `auth-method`
+
+Specifies the authentication method.
+
+If the parent element is link:#beaqw[`as-context`], the only supported
+value is `USERNAME_PASSWORD`.
+
+If the parent element is link:#beauk[`login-config`], specifies the
+authentication mechanism for the web service endpoint. As a prerequisite
+to gaining access to any web resources protected by an authorization
+constraint, a user must be authenticated using the configured mechanism.
+
+[[fvyow]][[GSDPG00347]][[superelements-7]]
+
+==== Superelements
+
+link:#beauk[`login-config`] (`glassfish-web.xml`),
+link:#beaqw[`as-context`] (`glassfish-ejb-jar.xml`)
+
+[[fvyop]][[GSDPG00348]][[subelements-7]]
+
+==== Subelements
+
+none - contains data
+
+[[beaqy]][[GSDPG00093]][[auth-realm]]
+
+=== `auth-realm`
+
+JAAS is available on the ACC. Defines the optional configuration for a
+JAAS authentication realm. Authentication realms require
+provider-specific properties, which vary depending on what a particular
+implementation needs. For more information about how to define realms,
+see "link:application-development-guide/securing-apps.html#GSDVG00118[Realm Configuration]" in {productName} Application Development Guide.
+
+[[fvyot]][[GSDPG00349]][[superelements-8]]
+
+==== Superelements
+
+link:#bearr[`client-container`] (`sun-acc.xml`)
+
+[[fvyor]][[GSDPG00350]][[subelements-8]]
+
+==== Subelements
+
+The following table describes subelements for the `auth-realm` element.
+
+[[GSDPG847]][[sthref20]][[fvyol]]
+
+
+Table C-6 `auth-realm` subelement
+
+[width="100%",cols="36%,14%,50%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beavx[`property` (with attributes)]
+
+
+ |zero or more |Specifies a property, which has a name and a value.
+|===
+
+
+[[fvyoy]][[GSDPG00351]][[attributes-1]]
+
+==== `Attributes`
+
+The following table describes attributes for the `auth-realm` element.
+
+[[GSDPG848]][[sthref21]][[fvypa]]
+
+
+Table C-7 `auth-realm` attributes
+
+[width="100%",cols="18%,13%,69%",options="header",]
+|===
+|Attribute |Default |Description
+|`name` |none |Defines the name of this realm.
+|`classname` |none |Defines the Java class which implements this realm.
+|===
+
+
+[[fvyox]][[GSDPG00352]][[example]]
+
+==== Example
+
+Here is an example of the default file realm:
+
+[source,xml]
+----
+<auth-realm name="file"
+   classname="com.sun.enterprise.security.auth.realm.file.FileRealm">
+   <property name="file" value="domain-dir/config/keyfile"/>
+   <property name="jaas-context" value="fileRealm"/>
+</auth-realm>
+----
+
+Which properties an `auth-realm` element uses depends on the value of
+the `auth-realm` element's `name` attribute. The file realm uses `file`
+and `jaas-context` properties. Other realms use different properties.
+See "link:application-development-guide/securing-apps.html#GSDVG00118[Realm Configuration]" in {productName} Application Development Guide.
+
+[[giyjv]][[GSDPG00094]][[backend-principal]]
+
+=== `backend-principal`
+
+Specifies the user name and password required by the Enterprise
+Information System (EIS).
+
+[[GSDPG849]][[sthref22]]
+
+
+[[superelements-9]]
+==== Superelements
+
+link:#giyhy[`security-map`] (`glassfish-resources.xml`)
+
+[[GSDPG850]][[sthref23]]
+
+
+[[subelements-9]]
+==== Subelements
+
+none
+
+[[GSDPG851]][[sthref24]]
+
+
+[[attributes-2]]
+==== Attributes
+
+The following table describes attributes for the `backend-principal`
+element.
+
+[[GSDPG852]][[sthref25]][[sthref26]]
+
+
+Table C-8 `backend-principal` Attributes
+
+[width="100%",cols="26%,17%,57%",options="header",]
+|===
+|Attribute |Default |Description
+|`user-name` |none |Specifies the user name required by the EIS.
+
+|`password` |none |(optional) Specifies the password required by the
+EIS, if any.
+|===
+
+
+[[beara]][[GSDPG00095]][[bean-cache]]
+
+=== `bean-cache`
+
+Specifies the entity bean cache properties. Used for entity beans and
+stateful session beans.
+
+[[fvyoq]][[GSDPG00353]][[superelements-10]]
+
+==== Superelements
+
+link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
+
+[[fvyon]][[GSDPG00354]][[subelements-10]]
+
+==== Subelements
+
+The following table describes subelements for the `bean-cache` element.
+
+[[GSDPG853]][[sthref27]][[fvypb]]
+
+
+Table C-9 `bean-cache` Subelements
+
+[width="100%",cols="35%,11%,54%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beauo[`max-cache-size`]
+
+
+ |zero or one |Specifies the maximum number of beans allowable in cache.
+
+a|
+link:#beatp[`is-cache-overflow-allowed`]
+
+
+ |zero or one |Deprecated.
+
+a|
+link:#bearg[`cache-idle-timeout-in-seconds`]
+
+
+ |zero or one |Specifies the maximum time that a stateful session bean
+or entity bean is allowed to be idle in cache before being passivated.
+Default value is 10 minutes (600 seconds).
+
+a|
+link:#beawl[`removal-timeout-in-seconds`]
+
+
+ |zero or one |Specifies the amount of time a bean remains before being
+removed. If `removal-timeout-in-seconds` is less than `idle-timeout`,
+the bean is removed without being passivated.
+
+a|
+link:#beaws[`resize-quantity`]
+
+
+ |zero or one |Specifies the number of beans to be created if the pool
+is empty (subject to the `max-pool-size` limit). Values are from 0 to
+MAX_INTEGER.
+
+a|
+link:#beayp[`victim-selection-policy`]
+
+
+ |zero or one |Specifies the algorithm that must be used by the
+container to pick victims. Applies only to stateful session beans.
+|===
+
+
+[[fvyoo]][[GSDPG00355]][[example-1]]
+
+==== Example
+
+[source,xml]
+----
+<bean-cache>
+   <max-cache-size>100</max-cache-size>
+   <cache-resize-quantity>10</cache-resize-quantity>
+   <removal-timeout-in-seconds>3600</removal-timeout-in-seconds>
+   <victim-selection-policy>LRU</victim-selection-policy>
+      <cache-idle-timeout-in-seconds>600</cache-idle-timeout-in-seconds>
+   <removal-timeout-in-seconds>5400</removal-timeout-in-seconds>
+</bean-cache>
+----
+
+[[bearb]][[GSDPG00096]][[bean-pool]]
+
+=== `bean-pool`
+
+Specifies the pool properties of stateless session beans, entity beans,
+and message-driven bean.
+
+[[fvypc]][[GSDPG00356]][[superelements-11]]
+
+==== Superelements
+
+link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
+
+[[fvypd]][[GSDPG00357]][[subelements-11]]
+
+==== Subelements
+
+The following table describes subelements for the `bean-pool` element.
+
+[[GSDPG854]][[sthref28]][[fvypg]]
+
+
+Table C-10 `bean-pool` Subelements
+
+[width="100%",cols="34%,11%,55%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beaxt[`steady-pool-size`]
+
+
+ |zero or one |Specifies the initial and minimum number of beans
+maintained in the pool. Default is 32.
+
+a|
+link:#beaws[`resize-quantity`]
+
+
+ |zero or one |Specifies the number of beans to be created if the pool
+is empty (subject to the `max-pool-size` limit). Values are from 0 to
+MAX_INTEGER.
+
+a|
+link:#beaup[`max-pool-size`]
+
+
+ |zero or one |Specifies the maximum number of beans in the pool. Values
+are from 0 to MAX_INTEGER. Default is to the EJB container value or 60.
+
+a|
+link:#beauq[`max-wait-time-in-millis`]
+
+
+ |zero or one |Deprecated.
+
+a|
+link:#beavr[`pool-idle-timeout-in-seconds`]
+
+
+ |zero or one |Specifies the maximum time that a bean is allowed to be
+idle in the pool. After this time, the bean is removed. This is a hint
+to the server. Default time is 600 seconds (10 minutes).
+|===
+
+
+[[fvypf]][[GSDPG00358]][[example-2]]
+
+==== Example
+
+[source,xml]
+----
+<bean-pool>
+   <steady-pool-size>10</steady-pool-size>
+   <resize-quantity>10</resize-quantity>
+   <max-pool-size>100</max-pool-size>
+   <pool-idle-timeout-in-seconds>600</pool-idle-timeout-in-seconds>
+</bean-pool>
+----
+
+[[beard]][[GSDPG00097]][[cache]]
+
+=== `cache`
+
+Configures caching for web application components.
+
+[[fvype]][[GSDPG00359]][[superelements-12]]
+
+==== Superelements
+
+link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`)
+
+[[fvypl]][[GSDPG00360]][[subelements-12]]
+
+==== Subelements
+
+The following table describes subelements for the `cache` element.
+
+[[GSDPG855]][[sthref29]][[fvyrd]]
+
+
+Table C-11 `cache` Subelements
+
+[width="100%",cols="25%,12%,63%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beare[`cache-helper`]
+
+
+ |zero or more |Specifies a custom class that implements the CacheHelper
+interface.
+
+a|
+link:#beasm[`default-helper`]
+
+
+ |zero or one |Allows you to change the properties of the default,
+built-in link:#beare[`cache-helper`] class.
+
+a|
+link:#beavx[`property` (with attributes)]
+
+
+ |zero or more |Specifies a cache property, which has a name and a
+value.
+
+a|
+link:#bearh[`cache-mapping`]
+
+
+ |zero or more |Maps a URL pattern or a servlet name to its cacheability
+constraints.
+|===
+
+
+[[fvypj]][[GSDPG00361]][[attributes-3]]
+
+==== Attributes
+
+The following table describes attributes for the `cache` element.
+
+[[GSDPG856]][[sthref30]][[fvyrt]]
+
+
+Table C-12 `cache` Attributes
+
+[width="172%",cols="14%,46%,40%",options="header",]
+|===
+|Attribute |Default |Description
+|`max-entries` |`4096` |(optional) Specifies the maximum number of
+entries the cache can contain. Must be a positive integer.
+
+|`timeout-in-seconds` |`30` |(optional) Specifies the maximum amount of
+time in seconds that an entry can remain in the cache after it is
+created or refreshed. Can be overridden by a link:#beayg[`timeout`]
+element.
+
+|`enabled` |`true` |(optional) Determines whether servlet and JSP
+caching is enabled.
+|===
+
+
+[[fvypx]][[GSDPG00362]][[properties-1]]
+
+==== Properties
+
+The following table describes properties for the `cache` element.
+
+[[GSDPG857]][[sthref31]][[fvyqr]]
+
+
+Table C-13 `cache` Properties
+
+[width="100%",cols="24%,23%,53%",options="header",]
+|===
+|Property |Default |Description
+|`cacheClassName` |`com.sun.appserv.web.cache.LruCache` |Specifies the
+fully qualified name of the class that implements the cache
+functionality. See link:#fvyrn[Cache Class Names] for possible values.
+
+|`MultiLRUSegmentSize` |`4096` |Specifies the number of entries in a
+segment of the cache table that should have its own LRU (least recently
+used) list. Applicable only if `cacheClassName` is set to
+`com.sun.appserv.web.cache.MultiLruCache`.
+
+|`MaxSize` |unlimited; `Long.MAX_VALUE` |Specifies an upper bound on the
+cache memory size in bytes (KB or MB units). Example values are `32 KB`
+or `2 MB`. Applicable only if `cacheClassName` is set to
+`com.sun.appserv.web.cache.BoundedMultiLruCache`.
+|===
+
+
+[[fvyrn]][[GSDPG00363]][[cache-class-names]]
+
+==== Cache Class Names
+
+The following table lists possible values of the `cacheClassName`
+property.
+
+[[GSDPG858]][[sthref32]][[fvyph]]
+
+
+Table C-14 `cacheClassName` Values
+
+[width="100%",cols="31%,69%",options="header",]
+|===
+|Value |Description
+|`com.sun.appserv.web.cache.LruCache` |A bounded cache with an LRU
+(least recently used) cache replacement policy.
+
+|`com.sun.appserv.web.cache.BaseCache` |An unbounded cache suitable if
+the maximum number of entries is known.
+
+|`com.sun.appserv.web.cache.MultiLruCache` |A cache suitable for a large
+number of entries (>4096). Uses the `MultiLRUSegmentSize` property.
+
+|`com.sun.appserv.web.cache.BoundedMultiLruCache` |A cache suitable for
+limiting the cache size by memory rather than number of entries. Uses
+the `MaxSize` property.
+|===
+
+
+[[beare]][[GSDPG00098]][[cache-helper]]
+
+=== `cache-helper`
+
+Specifies a class that implements the
+com.sun.appserv.web.cache.CacheHelper interface.
+
+[[fvyqy]][[GSDPG00364]][[superelements-13]]
+
+==== Superelements
+
+link:#beard[`cache`] (`glassfish-web.xml`)
+
+[[fvyru]][[GSDPG00365]][[subelements-13]]
+
+==== Subelements
+
+The following table describes subelements for the `cache-helper`
+element.
+
+[[GSDPG859]][[sthref33]][[fvyql]]
+
+
+Table C-15 `cache-helper` Subelements
+
+[width="100%",cols="25%,12%,63%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beavx[`property` (with attributes)]
+
+
+ |zero or more |Specifies a property, which has a name and a value.
+|===
+
+
+[[fvyqu]][[GSDPG00366]][[attributes-4]]
+
+==== Attributes
+
+The following table describes attributes for the `cache-helper` element.
+
+[[GSDPG860]][[sthref34]][[fvyrp]]
+
+
+Table C-16 `cache-helper` Attributes
+
+[width="181%",cols="8%,49%,43%",options="header",]
+|===
+|Attribute |Default |Description
+|`name` |`default` |Specifies a unique name for the helper class, which
+is referenced in the link:#bearh[`cache-mapping`] element.
+
+|`class-name` |none |Specifies the fully qualified class name of the
+cache helper, which must implement the com.sun.appserv.web.CacheHelper
+interface.
+|===
+
+
+[[bearf]][[GSDPG00099]][[cache-helper-ref]]
+
+=== `cache-helper-ref`
+
+Specifies the `name` of the link:#beare[`cache-helper`] used by the
+parent link:#bearh[`cache-mapping`] element.
+
+[[fvypq]][[GSDPG00367]][[superelements-14]]
+
+==== Superelements
+
+link:#bearh[`cache-mapping`] (`glassfish-web.xml`)
+
+[[fvyqs]][[GSDPG00368]][[subelements-14]]
+
+==== Subelements
+
+none - contains data
+
+[[bearg]][[GSDPG00100]][[cache-idle-timeout-in-seconds]]
+
+=== `cache-idle-timeout-in-seconds`
+
+Specifies the maximum time that a bean can remain idle in the cache.
+After this amount of time, the container can passivate this bean. A
+value of `0` specifies that beans never become candidates for
+passivation. Default is 600.
+
+Applies to stateful session beans and entity beans.
+
+[[fvyqc]][[GSDPG00369]][[superelements-15]]
+
+==== Superelements
+
+link:#beara[`bean-cache`] (`glassfish-ejb-jar.xml`)
+
+[[fvyqo]][[GSDPG00370]][[subelements-15]]
+
+==== Subelements
+
+none - contains data
+
+[[bearh]][[GSDPG00101]][[cache-mapping]]
+
+=== `cache-mapping`
+
+Maps a URL pattern or a servlet name to its cacheability constraints.
+
+[[fvyqi]][[GSDPG00371]][[superelements-16]]
+
+==== Superelements
+
+link:#beard[`cache`] (`glassfish-web.xml`)
+
+[[fvyqn]][[GSDPG00372]][[subelements-16]]
+
+==== Subelements
+
+The following table describes subelements for the `cache-mapping`
+element.
+
+[[GSDPG861]][[sthref35]][[fvypt]]
+
+
+Table C-17 `cache-mapping` Subelements
+
+[width="100%",cols="20%,30%,50%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beaxo[`servlet-name`]
+
+
+ |requires one `servlet-name` or `url-pattern` |Contains the name of a
+servlet.
+
+a|
+link:#beayl[`url-pattern`]
+
+
+ |requires one `servlet-name` or `url-pattern` |Contains a servlet URL
+pattern for which caching is enabled.
+
+a|
+link:#bearf[`cache-helper-ref`]
+
+
+ |required if `dispatcher`, `timeout`, `refresh-field`, `http-method`,
+`key-field`, and `constraint-field` are not used |Contains the `name` of
+the link:#beare[`cache-helper`] used by the parent `cache-mapping`
+element.
+
+a|
+link:#beasp[`dispatcher`]
+
+
+ |zero or one if `cache-helper-ref` is not used |Contains a
+comma-separated list of `RequestDispatcher` methods for which caching is
+enabled.
+
+a|
+link:#beayg[`timeout`]
+
+
+ |zero or one if `cache-helper-ref` is not used |Contains the
+link:#bearh[`cache-mapping`] specific maximum amount of time in seconds
+that an entry can remain in the cache after it is created or refreshed.
+
+a|
+link:#beawj[`refresh-field`]
+
+
+ |zero or one if `cache-helper-ref` is not used |Specifies a field that
+gives the application component a programmatic way to refresh a cached
+entry.
+
+a|
+link:#beatk[`http-method`]
+
+
+ |zero or more if `cache-helper-ref` is not used |Contains an HTTP
+method that is eligible for caching.
+
+a|
+link:#beatz[`key-field`]
+
+
+ |zero or more if `cache-helper-ref` is not used |Specifies a component
+of the key used to look up and extract cache entries.
+
+a|
+link:#bease[`constraint-field`]
+
+
+ |zero or more if `cache-helper-ref` is not used |Specifies a
+cacheability constraint for the given `url-pattern` or `servlet-name`.
+|===
+
+
+[[beari]][[GSDPG00102]][[call-property]]
+
+=== `call-property`
+
+Specifies JAX-RPC property values that can be set on a
+`javax.xml.rpc.Call` object before it is returned to the web service
+client. The property names can be any properties supported by the
+JAX-RPC `Call` implementation.
+
+[[fvyri]][[GSDPG00373]][[superelements-17]]
+
+==== Superelements
+
+link:#beavt[`port-info`], link:#beaxk[`service-ref`]
+(`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
+`glassfish-application-client.xml`)
+
+[[fvyqp]][[GSDPG00374]][[subelements-17]]
+
+==== Subelements
+
+The following table describes subelements for the `call-property`
+element.
+
+[[GSDPG862]][[sthref36]][[fvyrw]]
+
+
+Table C-18 `call-property` subelements
+
+[width="100%",cols="24%,12%,64%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beavf[`name`]
+
+
+ |only one |Specifies the name of the entity.
+a|
+link:#beayo[`value`]
+
+
+ |only one |Specifies the value of the entity.
+|===
+
+
+[[bearj]][[GSDPG00103]][[caller-propagation]]
+
+=== `caller-propagation`
+
+Specifies whether the target accepts propagated caller identities. The
+values are `NONE`, `SUPPORTED`, or `REQUIRED`.
+
+[[fvyqj]][[GSDPG00375]][[superelements-18]]
+
+==== Superelements
+
+link:#beaxb[`sas-context`] (`glassfish-ejb-jar.xml`)
+
+[[fvyrb]][[GSDPG00376]][[subelements-18]]
+
+==== Subelements
+
+none - contains data
+
+[[beark]][[GSDPG00104]][[cert-db]]
+
+=== `cert-db`
+
+Not implemented. Included for backward compatibility only. Attribute
+values are ignored.
+
+[[fvyqa]][[GSDPG00377]][[superelements-19]]
+
+==== Superelements
+
+link:#beaxf[`security`] (`sun-acc.xml`)
+
+[[fvyre]][[GSDPG00378]][[subelements-19]]
+
+==== Subelements
+
+none
+
+[[fvyrr]][[GSDPG00379]][[attributes-5]]
+
+==== Attributes
+
+The following table describes attributes for the `cert-db` element.
+
+[[GSDPG863]][[sthref37]][[fvypo]]
+
+
+Table C-19 `cert-db` attributes
+
+[width="100%",cols="14%,11%,75%",options="header",]
+|===
+|Attribute |Default |Description
+|`path` |none |Specifies the absolute path of the certificate database.
+
+|`password` |none |Specifies the password to access the certificate
+database.
+|===
+
+
+[[bearl]][[GSDPG00105]][[check-all-at-commit]]
+
+=== `check-all-at-commit`
+
+This element is not implemented. Do not use.
+
+[[fvyrj]][[GSDPG00380]][[superelements-20]]
+
+==== Superelements
+
+link:#beasd[`consistency`] (`sun-cmp-mappings.xml`)
+
+[[bearm]][[GSDPG00106]][[check-modified-at-commit]]
+
+=== `check-modified-at-commit`
+
+Checks concurrent modification of fields in modified beans at commit
+time.
+
+[[fvyqf]][[GSDPG00381]][[superelements-21]]
+
+==== Superelements
+
+link:#beasd[`consistency`] (`sun-cmp-mappings.xml`)
+
+[[fvyqz]][[GSDPG00382]][[subelements-20]]
+
+==== Subelements
+
+none - element is present or absent
+
+[[bearn]][[GSDPG00107]][[check-version-of-accessed-instances]]
+
+=== `check-version-of-accessed-instances`
+
+Checks the version column of the modified beans.
+
+Version consistency allows the bean state to be cached between
+transactions instead of read from a database. The bean state is verified
+by primary key and version column values. This occurs during a custom
+query (for dirty instances only) or commit (for both clean and dirty
+instances).
+
+The version column must be a numeric type, and must be in the primary
+table. You must provide appropriate update triggers for this column.
+
+[[fvyqt]][[GSDPG00383]][[superelements-22]]
+
+==== Superelements
+
+link:#beasd[`consistency`] (`sun-cmp-mappings.xml`)
+
+[[fvypp]][[GSDPG00384]][[subelements-21]]
+
+==== Subelements
+
+The following table describes subelements for the
+`check-version-of-accessed-instances` element.
+
+[[GSDPG864]][[sthref38]][[fvyrq]]
+
+
+Table C-20 `check-version-of-accessed-instances` Subelements
+
+[width="100%",cols="33%,11%,56%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#bearz[`column-name`]
+
+
+ |only one |Specifies the name of the version column.
+|===
+
+
+[[bearo]][[GSDPG00108]][[checkpoint-at-end-of-method]]
+
+=== `checkpoint-at-end-of-method`
+
+Specifies that the stateful session bean state is checkpointed, or
+persisted, after the specified methods are executed. The
+`availability-enabled` attribute of the parent link:#beass[`ejb`]
+element must be set to `true`.
+
+[[fvypr]][[GSDPG00385]][[superelements-23]]
+
+==== Superelements
+
+link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
+
+[[fvyqe]][[GSDPG00386]][[subelements-22]]
+
+==== Subelements
+
+The following table describes subelements for the
+`checkpoint-at-end-of-method` element.
+
+[[GSDPG865]][[sthref39]][[fvyqx]]
+
+
+Table C-21 `checkpoint-at-end-of-method` Subelements
+
+[width="100%",cols="25%,13%,62%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beauz[`method`]
+
+
+ |one or more |Specifies a bean method.
+|===
+
+
+[[bearp]][[GSDPG00109]][[checkpointed-methods]]
+
+=== `checkpointed-methods`
+
+Deprecated. Supported for backward compatibility. Use
+link:#bearo[`checkpoint-at-end-of-method`] instead.
+
+[[fvyrk]][[GSDPG00387]][[superelements-24]]
+
+==== Superelements
+
+link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
+
+[[bearq]][[GSDPG00110]][[class-loader]]
+
+=== `class-loader`
+
+Configures the class loader for the web module.
+
+[[fvyrv]][[GSDPG00388]][[superelements-25]]
+
+==== Superelements
+
+link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`)
+
+[[fvyrh]][[GSDPG00389]][[subelements-23]]
+
+==== Subelements
+
+The following table describes subelements for the `class-loader`
+element.
+
+[[GSDPG866]][[sthref40]][[fvyqg]]
+
+
+Table C-22 `class-loader` Subelements
+
+[width="100%",cols="25%,12%,63%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beavx[`property` (with attributes)]
+
+
+ |zero or more |Specifies a property, which has a name and a value.
+|===
+
+
+[[fvyrl]][[GSDPG00390]][[attributes-6]]
+
+==== Attributes
+
+The following table describes attributes for the `class-loader` element.
+
+[[GSDPG867]][[sthref41]][[fvyrs]]
+
+
+Table C-23 `class-loader` Attributes
+
+[width="172%",cols="17%,46%,37%",options="header",]
+|===
+|Attribute |Default |Description
+|`extra-class-path` |null a|
+(optional) Specifies a colon or semicolon separated list of additional
+classpaths for this web module. Paths can be absolute or relative to the
+web module's root, for example:
+
+[source]
+----
+extra-class-path="WEB-INF/lib/extra/extra.jar"
+----
+
+|`delegate` |`true` a|
+(optional) If `true`, the web module follows the standard class loader
+delegation model and delegates to its parent class loader first before
+looking in the local class loader. You must set this to `true` for a web
+module that accesses EJB components or that acts as a web service client
+or endpoint.
+
+If `false`, the web module follows the delegation model specified in the
+Servlet specification and looks in its class loader before looking in
+the parent class loader. It's safe to set this to `false` only for a web
+module that does not interact with any other modules.
+
+For a number of packages, including `java.*` and `javax.*`, symbol
+resolution is always delegated to the parent class loader regardless of
+the delegate setting. This prevents applications from overriding core
+Java runtime classes or changing the API versions of specifications that
+are part of the Jakarta EE platform.
+
+|`dynamic-reload-interval` | |(optional) Not implemented. Included
+for backward compatibility with previous Oracle Web Server versions.
+|===
+
+
+
+[NOTE]
+====
+If the `delegate` attribute is set to `false`, the class loader
+delegation behavior complies with the Servlet 2.4 specification, section
+9.7.2. If set to its default value of `true`, classes and resources
+residing in container-wide library JAR files are loaded in preference to
+classes and resources packaged within the WAR file.
+
+Portable programs that use this element should not be packaged with any
+classes or interfaces that are a part of the Jakarta EE specification. The
+behavior of a program that includes such classes or interfaces in its
+WAR file is undefined.
+====
+
+
+[[gcfko]][[GSDPG00391]][[properties-2]]
+
+==== Properties
+
+The following table describes properties for the `class-loader` element.
+
+[[GSDPG868]][[sthref42]][[gcfjs]]
+
+
+Table C-24 `class-loader` Properties
+
+[width="181%",cols="15%,49%,36%",options="header",]
+|===
+|Property |Default |Description
+|`ignoreHiddenJarFiles` |`false` |If `true`, specifies that all JAR and
+ZIP files in the `WEB-INF/lib` directory that start with a period (`.`)
+are ignored by the class loader.
+|===
+
+
+[[bearr]][[GSDPG00111]][[client-container]]
+
+=== `client-container`
+
+Defines the {productName} specific configuration for the application
+client container. This is the root element; there can only be one
+`client-container` element in a `sun-acc.xml` file. See
+link:dd-files.html#beaqp[The sun-acc.xml File].
+
+[[fvypv]][[GSDPG00392]][[superelements-26]]
+
+==== Superelements
+
+none
+
+[[fvypk]][[GSDPG00393]][[subelements-24]]
+
+==== Subelements
+
+The following table describes subelements for the `client-container`
+element.
+
+[[GSDPG869]][[sthref43]][[fvypm]]
+
+
+Table C-25 `client-container` Subelements
+
+[width="100%",cols="28%,12%,60%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beaye[`target-server`]
+
+
+ |one or more a|
+Specifies the IIOP listener for the target server. Also specifies IIOP
+endpoints used for load balancing. If the {productName} instance on
+which the application client is deployed participates in a cluster,
+{productName} finds all currently active IIOP endpoints in the
+cluster automatically. However, a client should have at least two
+endpoints specified for bootstrapping purposes, in case one of the
+endpoints has failed.
+
+A listener or endpoint is in the form host`:`port, where the host is an
+IP address or host name, and the port specifies the port number.
+
+a|
+link:#beaqy[`auth-realm`]
+
+
+ |zero or one |Specifies the optional configuration for JAAS
+authentication realm.
+
+a|
+link:#bears[`client-credential`]
+
+
+ |zero or one |Specifies the default client credential that is sent to
+the server.
+
+a|
+link:#beauj[`log-service`]
+
+
+ |zero or one |Specifies the default log file and the severity level of
+the message.
+
+a|
+link:#beauy[`message-security-config`]
+
+
+ |zero or more |Specifies configurations for message security providers.
+
+a|
+link:#beavx[`property` (with attributes)]
+
+
+ |zero or more |Specifies a property, which has a name and a value.
+|===
+
+
+[[fvyqq]][[GSDPG00394]][[attributes-7]]
+
+==== Attributes
+
+The following table describes attributes for the `client-container`
+element.
+
+[[GSDPG870]][[sthref44]][[fvyqb]]
+
+
+Table C-26 `client-container` Attributes
+
+[width="172%",cols="11%,46%,43%",options="header",]
+|===
+|Attribute |Default |Description
+|`send-password` |`true` |If `true`, specifies that client
+authentication credentials must be sent to the server. Without
+authentication credentials, all access to protected EJB components
+results in exceptions.
+|===
+
+
+[[fvyrm]][[GSDPG00395]][[properties-3]]
+
+==== Properties
+
+The following table describes properties for the `client-container`
+element.
+
+[[GSDPG871]][[sthref45]][[fvyqm]]
+
+
+Table C-27 `client-container` Properties
+
+[width="172%",cols="22%,46%,32%",options="header",]
+|===
+|Property |Default |Description
+|`com.sun.appserv.iiop.endpoints` |none |Specifies a comma-separated
+list of one or more IIOP endpoints used for load balancing. An IIOP
+endpoint is in the form host`:`port, where the host is an IP address or
+host name, and the port specifies the port number. Deprecated. Use
+link:#beaye[`target-server`] elements instead.
+|===
+
+
+[[bears]][[GSDPG00112]][[client-credential]]
+
+=== `client-credential`
+
+Default client credentials that are sent to the server. If this element
+is present, the credentials are automatically sent to the server,
+without prompting the user for the user name and password on the client
+side.
+
+[[fvyqk]][[GSDPG00396]][[superelements-27]]
+
+==== Superelements
+
+link:#bearr[`client-container`] (`sun-acc.xml`)
+
+[[fvyqd]][[GSDPG00397]][[subelements-25]]
+
+==== Subelements
+
+The following table describes subelements for the `client-credential`
+element.
+
+[[GSDPG872]][[sthref46]][[fvyro]]
+
+
+Table C-28 `client-credential` subelement
+
+[width="100%",cols="37%,14%,49%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beavx[`property` (with attributes)]
+
+
+ |zero or more |Specifies a property, which has a name and a value.
+|===
+
+
+[[fvyqv]][[GSDPG00398]][[attributes-8]]
+
+==== Attributes
+
+The following table describes attributes for the `client-credential`
+element.
+
+[[GSDPG873]][[sthref47]][[fvypi]]
+
+
+Table C-29 `client-credential` attributes
+
+[width="100%",cols="12%,14%,74%",options="header",]
+|===
+|Attribute |Default |Description
+|`user-name` |none |The user name used to authenticate the Application
+client container.
+
+|`password` |none |The password used to authenticate the Application
+client container.
+
+|`realm` |default realm for the domain |(optional) The realm (specified
+by name) where credentials are to be resolved.
+|===
+
+
+[[beart]][[GSDPG00113]][[cmp]]
+
+`cmp`
+~~~~~
+
+Describes runtime information for a CMP entity bean object for EJB 1.1
+and EJB 2.1 beans.
+
+[[fvyrg]][[GSDPG00399]][[superelements-28]]
+
+==== Superelements
+
+link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
+
+[[fvyqw]][[GSDPG00400]][[subelements-26]]
+
+==== Subelements
+
+The following table describes subelements for the `cmp` element.
+
+[[GSDPG874]][[sthref48]][[fvypw]]
+
+
+Table C-30 `cmp` Subelements
+
+[width="100%",cols="22%,11%,67%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beaun[`mapping-properties`]
+
+
+ |zero or one |This element is not implemented.
+
+a|
+link:#beatq[`is-one-one-cmp`]
+
+
+ |zero or one |This element is not implemented.
+
+a|
+link:#beavk[`one-one-finders`]
+
+
+ |zero or one |Describes the finders for CMP 1.1 beans.
+
+a|
+link:#beavu[`prefetch-disabled`]
+
+
+ |zero or one |Disables prefetching of entity bean states for the
+specified query methods.
+|===
+
+
+[[bearu]][[GSDPG00114]][[cmp-field-mapping]]
+
+=== `cmp-field-mapping`
+
+The `cmp-field-mapping` element associates a field with one or more
+columns to which it maps. The column can be from a bean's primary table
+or any defined secondary table. If a field is mapped to multiple
+columns, the column listed first in this element is used as a source for
+getting the value from the database. The columns are updated in the
+order they appear. There is one `cmp-field-mapping` element for each
+`cmp-field` element defined in the `ejb-jar.xml` file.
+
+[[fvypy]][[GSDPG00401]][[superelements-29]]
+
+==== Superelements
+
+link:#beasy[`entity-mapping`] (`sun-cmp-mappings.xml`)
+
+[[fvyra]][[GSDPG00402]][[subelements-27]]
+
+==== Subelements
+
+The following table describes subelements for the `cmp-field-mapping`
+element.
+
+[[GSDPG875]][[sthref49]][[fvyqh]]
+
+
+Table C-31 `cmp-field-mapping` Subelements
+
+[width="100%",cols="15%,12%,73%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beatd[`field-name`]
+
+
+ |only one |Specifies the Java identifier of a field. This identifier
+must match the value of the `field-name` subelement of the `cmp-field`
+that is being mapped.
+
+a|
+link:#bearz[`column-name`]
+
+
+ |one or more |Specifies the name of a column from the primary table, or
+the qualified table name (TABLE.COLUMN) of a column from a secondary or
+related table.
+
+a|
+link:#beawh[`read-only`]
+
+
+ |zero or one |Specifies that a field is read-only.
+
+a|
+link:#beatc[`fetched-with`]
+
+
+ |zero or one |Specifies the fetch group for this CMP field's mapping.
+|===
+
+
+[[bearv]][[GSDPG00115]][[cmp-resource]]
+
+=== `cmp-resource`
+
+Specifies the database to be used for storing CMP beans. For more
+information about this element, see "link:application-development-guide/container_managed-persistence.html#GSDVG00154[Configuring the
+CMP Resource]" in {productName} Application
+Development Guide.
+
+[[fvypz]][[GSDPG00403]][[superelements-30]]
+
+==== Superelements
+
+link:#beasx[`enterprise-beans`] (`glassfish-ejb-jar.xml`)
+
+[[fvyrf]][[GSDPG00404]][[subelements-28]]
+
+==== Subelements
+
+The following table describes subelements for the `cmp-resource`
+element.
+
+[[GSDPG876]][[sthref50]][[fvyps]]
+
+
+Table C-32 `cmp-resource` Subelements
+
+[width="100%",cols="33%,12%,55%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beatw[`jndi-name`]
+
+
+ |only one |Specifies the absolute `jndi-name` of a JDBC resource.
+
+a|
+link:#beasn[`default-resource-principal`]
+
+
+ |zero or one |Specifies the default runtime bindings of a resource
+reference.
+
+a|
+link:#beavy[`property` (with subelements)]
+
+
+ |zero or more |Specifies a property name and value. Used to configure
+`PersistenceManagerFactory` properties.
+
+a|
+link:#beasi[`create-tables-at-deploy`]
+
+
+ |zero or one |If `true`, specifies that database tables are created for
+beans that are automatically mapped by the EJB container.
+
+a|
+link:#beasq[`drop-tables-at-undeploy`]
+
+
+ |zero or one |If `true`, specifies that database tables that were
+automatically created when the bean(s) were last deployed are dropped
+when the bean(s) are undeployed.
+
+a|
+link:#beask[`database-vendor-name`]
+
+
+ |zero or one |Specifies the name of the database vendor for which
+tables can be created.
+
+a|
+link:#beaxd[`schema-generator-properties`]
+
+
+ |zero or one |Specifies field-specific type mappings and allows you to
+set the `use-unique-table-names` property.
+|===
+
+
+[[bearw]][[GSDPG00116]][[cmr-field-mapping]]
+
+=== `cmr-field-mapping`
+
+A container-managed relationship field has a name and one or more column
+pairs that define the relationship. There is one `cmr-field-mapping`
+element for each `cmr-field` element in the `ejb-jar.xml` file. A
+relationship can also participate in a fetch group.
+
+[[fvyrc]][[GSDPG00405]][[superelements-31]]
+
+==== Superelements
+
+link:#beasy[`entity-mapping`] (`sun-cmp-mappings.xml`)
+
+[[fvypu]][[GSDPG00406]][[subelements-29]]
+
+==== Subelements
+
+The following table describes subelements for the `cmr-field-mapping`
+element.
+
+[[GSDPG877]][[sthref51]][[fvypn]]
+
+
+Table C-33 `cmr-field-mapping` Subelements
+
+[width="100%",cols="18%,12%,70%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#bearx[`cmr-field-name`]
+
+
+ |only one |Specifies the Java identifier of a field. Must match the
+value of the `cmr-field-name` subelement of the `cmr-field` that is
+being mapped.
+
+a|
+link:#beasa[`column-pair`]
+
+
+ |one or more |Specifies the pair of columns that determine the
+relationship between two database tables.
+
+a|
+link:#beatc[`fetched-with`]
+
+
+ |zero or one |Specifies the fetch group for this CMR field's
+relationship.
+|===
+
+
+[[bearx]][[GSDPG00117]][[cmr-field-name]]
+
+=== `cmr-field-name`
+
+Specifies the Java identifier of a field. Must match the value of the
+`cmr-field-name` subelement of the `cmr-field` element in the
+`ejb-jar.xml` file.
+
+[[fvyrx]][[GSDPG00407]][[superelements-32]]
+
+==== Superelements
+
+link:#bearw[`cmr-field-mapping`] (`sun-cmp-mappings.xml`)
+
+[[fvyry]][[GSDPG00408]][[subelements-30]]
+
+==== Subelements
+
+none - contains data
+
+[[beary]][[GSDPG00118]][[cmt-timeout-in-seconds]]
+
+=== `cmt-timeout-in-seconds`
+
+Overrides the Transaction Timeout setting of the Transaction Service for
+an individual bean. The default value, `0`, specifies that the default
+Transaction Service timeout is used. If positive, this value is used for
+all methods in the bean that start a new container-managed transaction.
+This value is not used if the bean joins a client transaction.
+
+[[fvysf]][[GSDPG00409]][[superelements-33]]
+
+==== Superelements
+
+link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
+
+[[fvysc]][[GSDPG00410]][[subelements-31]]
+
+==== Subelements
+
+none - contains data
+
+[[bearz]][[GSDPG00119]][[column-name]]
+
+=== `column-name`
+
+Specifies the name of a column from the primary table, or the qualified
+table name (TABLE.COLUMN) of a column from a secondary or related table.
+
+[[fvyse]][[GSDPG00411]][[superelements-34]]
+
+==== Superelements
+
+link:#bearn[`check-version-of-accessed-instances`],
+link:#bearu[`cmp-field-mapping`], link:#beasa[`column-pair`]
+(`sun-cmp-mappings.xml`)
+
+[[fvysb]][[GSDPG00412]][[subelements-32]]
+
+==== Subelements
+
+none - contains data
+
+[[beasa]][[GSDPG00120]][[column-pair]]
+
+=== `column-pair`
+
+Specifies the pair of columns that determine the relationship between
+two database tables. Each `column-pair` must contain exactly two
+`column-name` subelements, which specify the column's names. The first
+`column-name` element names the table that this bean is mapped to, and
+the second `column-name` names the column in the related table.
+
+[[fvysa]][[GSDPG00413]][[superelements-35]]
+
+==== Superelements
+
+link:#bearw[`cmr-field-mapping`], link:#beaxe[`secondary-table`]
+(`sun-cmp-mappings.xml`)
+
+[[fvysg]][[GSDPG00414]][[subelements-33]]
+
+==== Subelements
+
+The following table describes subelements for the `column-pair` element.
+
+[[GSDPG878]][[sthref52]][[fvysh]]
+
+
+Table C-34 `column-pair` Subelements
+
+[width="100%",cols="14%,10%,76%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#bearz[`column-name`]
+
+
+ |two |Specifies the name of a column from the primary table, or the
+qualified table name (TABLE.COLUMN) of a column from a secondary or
+related table.
+|===
+
+
+[[beasb]][[GSDPG00121]][[commit-option]]
+
+=== `commit-option`
+
+Specifies the commit option used on transaction completion. Valid values
+for {productName} are `B` or `C`. Default value is `B`. Applies to
+entity beans.
+
+
+[NOTE]
+====
+Commit option A is not supported for this {productName} release.
+====
+
+
+[[fvyrz]][[GSDPG00415]][[superelements-36]]
+
+==== Superelements
+
+link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
+
+[[fvysd]][[GSDPG00416]][[subelements-34]]
+
+==== Subelements
+
+none - contains data
+
+[[gjjak]][[GSDPG00122]][[compatibility]]
+
+=== `compatibility`
+
+Specifies the {productName} release with which to be backward
+compatible in terms of JAR visibility requirements for applications. The
+current allowed value is `v2`, which refers to {productName} version
+2 or {productName} version 9.1 or 9.1.1. Starting in Jakarta EE 6, the
+Jakarta EE specification imposes stricter requirements than Jakarta EE 5 did
+on which JAR files can be visible to various modules within an EAR file.
+Setting this element to `v2` removes these Jakarta EE 6 and later
+restrictions.
+
+[[gjjaf]][[GSDPG00417]][[superelements-37]]
+
+==== Superelements
+
+link:#beaxw[`glassfish-application`] (`glassfish-application.xml`),
+link:#beaya[`glassfish-ejb-jar`] (`glassfish-ejb-jar.xml`)
+
+[[gjjag]][[GSDPG00418]][[subelements-35]]
+
+==== Subelements
+
+none - contains data
+
+[[beasc]][[GSDPG00123]][[confidentiality]]
+
+=== `confidentiality`
+
+Specifies if the target supports privacy-protected messages. The values
+are `NONE`, `SUPPORTED`, or `REQUIRED`.
+
+[[fvysi]][[GSDPG00419]][[superelements-38]]
+
+==== Superelements
+
+link:#beayh[`transport-config`] (`glassfish-ejb-jar.xml`)
+
+[[fvysk]][[GSDPG00420]][[subelements-36]]
+
+==== Subelements
+
+none - contains data
+
+[[giygu]][[GSDPG00124]][[connector-connection-pool]]
+
+=== `connector-connection-pool`
+
+Defines a connector connection pool.
+
+[[GSDPG879]][[sthref53]]
+
+
+[[superelements-39]]
+==== Superelements
+
+link:#giyiy[`resources`] (`glassfish-resources.xml`)
+
+[[GSDPG880]][[sthref54]]
+
+
+[[subelements-37]]
+==== Subelements
+
+The following table describes subelements for the
+`connector-connection-pool` element.
+
+[[GSDPG881]][[sthref55]][[sthref56]]
+
+
+Table C-35 `connector-connection-pool` Subelements
+
+[width="100%",cols="25%,12%,63%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beaso[`description`]
+
+
+ |zero or one |Contains a text description of this element.
+
+a|
+link:#giyhy[`security-map`]
+
+
+ |zero or more |Maps the principal received during servlet or EJB
+authentication to the credentials accepted by the EIS.
+
+a|
+link:#beavx[`property` (with attributes)]
+
+
+ |zero or more |Specifies a property or a variable.
+|===
+
+
+[[GSDPG882]][[sthref57]]
+
+
+[[attributes-9]]
+==== Attributes
+
+The following table describes attributes for the
+`connector-connection-pool` element. Changing the following attributes
+requires a server restart or the redeployment or disabling and
+re-enabling of applications that refer to the resource:
+`resource-adapter-name`, `connection-definition-name`,
+`transaction-support`, `associate-with-thread`,
+`lazy-connection-association`, and `lazy-connection-enlistment`.
+
+[[GSDPG883]][[sthref58]][[sthref59]]
+
+
+Table C-36 `connector-connection-pool` Attributes
+
+[width="172%",cols="25%,46%,29%",options="header",]
+|===
+|Attribute |Default |Description
+|`name` |none |Specifies the name of the connection pool. A
+link:#giyhv[`connector-resource`] element's `pool-name` attribute refers
+to this `name`.
+
+|`resource-adapter-name` |none |Specifies the name of the deployed
+connector module or application. If no name is specified during
+deployment, the name of the `.rar` file is used. If the resource adapter
+is embedded in an application, then it is app_name``#``rar_name.
+
+|`connection-definition-name` |none |Specifies a unique name,
+identifying a resource adapter's `connection-definition` element in the
+`ra.xml` file. This is usually the `connectionfactory-interface` of the
+`connection-definition` element.
+
+|`steady-pool-size` |`8` |(optional) Specifies the initial and minimum
+number of connections maintained in the pool.
+
+|`max-pool-size` |`32` |(optional) Specifies the maximum number of
+connections that can be created to satisfy client requests.
+
+|`max-wait-time-in-millis` |`60000` |(optional) Specifies the amount
+of time, in milliseconds, that the caller is willing to wait for a
+connection. If `0`, the caller is blocked indefinitely until a resource
+is available or an error occurs.
+
+|`pool-resize-quantity` |`2` a|
+(optional) Specifies the number of idle connections to be destroyed if
+the existing number of connections is above the `steady-pool-size`
+(subject to the `max-pool-size` limit).
+
+This is enforced periodically at the `idle-timeout-in-seconds` interval.
+An idle connection is one that has not been used for a period of
+`idle-timeout-in-seconds`. When the pool size reaches
+`steady-pool-size`, connection removal stops.
+
+|`idle-timeout-in-seconds` |`300` |(optional) Specifies the maximum
+time that a connection can remain idle in the pool. After this amount of
+time, the pool can close this connection.
+
+|`fail-all-connections` |`false` |(optional) If `true`, closes all
+connections in the pool if a single validation check fails.
+
+|``transaction``-support` |none a|
+(optional) Specifies the transaction support for this connection pool.
+Overrides the transaction support defined in the resource adapter in a
+downward compatible way: supports a transaction level lower than or
+equal to the resource adapter's, but not higher. Allowed values in
+descending order are:
+
+* `XATransaction` - Supports distributed transactions.
+* `LocalTransaction` - Supports local transactions only.
+* `NoTransaction` - No transaction support.
+
+|`is-connection-validation-required` |`false` |(optional) Specifies
+whether connections have to be validated before being given to the
+application. If a resource's validation fails, it is destroyed, and a
+new resource is created and returned.
+
+|`validate-atmost-once-period-in-seconds` |`0` |Specifies the time
+interval within which a connection is validated at most once. Minimizes
+the number of validation calls. A value of zero allows unlimited
+validation calls.
+
+|`connection-leak-timeout-in-seconds` |`0` |Detects potential
+connection leaks by the application. A connection that is not returned
+back to the pool by the application within the specified period is
+assumed to be potentially leaking, and a stack trace of the caller is
+logged. A zero value disables leak detection. A nonzero value enables
+leak tracing.
+
+|`connection-leak-reclaim` |`false` |If `true`, the pool will reclaim
+a connection after `connection-leak-timeout-in-seconds` occurs.
+
+|`connection-creation-retry-attempts` |`0` |Specifies the number of
+attempts to create a new connection.
+
+|`connection-creation-retry-interval-in-seconds` |`10` |Specifies
+the time interval between attempts to create a connection when
+`connection-creation-retry-attempts` is greater than `0`.
+
+|`lazy-connection-enlistment` |`false` |If `true`, a connection is not
+enlisted in a transaction until it is used. If `false`, any connection
+object available to a transaction is enlisted in the transaction.
+
+|`lazy-connection-association` |`false` |If `true`, a physical
+connection is not associated with a logical connection until it is used.
+If `false`, a physical connection is associated with a logical
+connection even before it is used.
+
+|`associate-with-thread` |`false` a|
+If `true`, allows connections to be saved as `ThreadLocal` in the
+calling thread. Connections get reclaimed only when the calling thread
+dies or when the calling thread is not in use and the pool has run out
+of connections. If `false`, the thread must obtain a connection from the
+pool each time the thread requires a connection.
+
+This attribute associates connections with a thread such that when the
+same thread is in need of connections, it can reuse the connections
+already associated with that thread. In this case, the overhead of
+getting connections from the pool is avoided. However, when this value
+is set to `true`, you should verify that the value of the
+`max-pool-size` attribute is comparable to the `max-thread-pool-size`
+attribute of the associated thread pool. If the `max-thread-pool-size`
+value is much higher than the `max-pool-size` value, a lot of time is
+spent associating connections with a new thread after dissociating them
+from an older one. Use this attribute in cases where the thread pool
+should reuse connections to avoid this overhead.
+
+| | |
+
+|`match-connections` |`true` |If `true`, enables connection matching.
+You can set to `false` if connections are homogeneous.
+
+|`max-connection-usage-count` |`0` |Specifies the number of times a
+connections is reused by the pool, after which it is closed. A zero
+value disables this feature.
+
+|`ping` |`false` |(optional) Specifies whether to ping the pool during
+pool creation or reconfiguration to identify and warn of any erroneous
+attribute values.
+
+|`pooling` |`true` |(optional) If `false`, disables connection pooling.
+|===
+
+
+[[GSDPG884]][[sthref60]]
+
+
+[[properties-4]]
+==== Properties
+
+Most properties of the `connector-connection-pool` element are the names
+of setter methods of the `managedconnectionfactory-class` element in the
+`ra.xml` file. Properties of the `connector-connection-pool` element
+override the `ManagedConnectionFactory` JavaBean configuration settings.
+
+All but the last four properties in the following table are
+`connector-connection-pool` properties of `jmsra`, the resource adapter
+used to communicate with the Open Message Queue software. For a complete
+list of the available properties (called administered object attributes
+in the Message Queue software), see the link:../openmq/mq-admin-guide.html#GMADG[Open Message Queue
+Administration Guide].
+
+Changes to `connector-connection-pool` properties require a server
+restart.
+
+[[GSDPG885]][[sthref61]][[sthref62]]
+
+
+Table C-37 `connector-connection-pool` Properties
+
+[width="100%",cols="26%,11%,63%",options="header",]
+|===
+|Property |Default |Description
+|`AddressList` |none |Specifies a list of host/port combinations of the
+Message Queue software. For JMS resources of the Type
+`jakarta.jms.TopicConnectionFactory` or
+`jakarta.jms.QueueConnectionFactory`.
+
+|`ClientId` |none a|
+Specifies the JMS Client Identifier to be associated with a `Connection`
+created using the `createTopicConnection` method of the
+`TopicConnectionFactory` class. For JMS resources of the Type
+`jakarta.jms.TopicConnectionFactory` .
+
+Durable subscription names are unique and only valid within the scope of
+a client identifier. To create or reactivate a durable subscriber, the
+connection must have a valid client identifier. The JMS specification
+ensures that client identifiers are unique and that a given client
+identifier is allowed to be used by only one active connection at a
+time.
+
+|`UserName` |`guest` |Specifies the user name for connecting to the
+Message Queue software. For JMS resources of the Type
+`jakarta.jms.TopicConnectionFactory` or
+`jakarta.jms.QueueConnectionFactory`.
+
+|`Password` |`guest` |Specifies the password for connecting to the
+Message Queue software. For JMS resources of the Type
+`jakarta.jms.TopicConnectionFactory` or
+`jakarta.jms.QueueConnectionFactory`.
+
+|`ReconnectAttempts` |`6` |Specifies the number of attempts to connect
+(or reconnect) for each address in the `imqAddressList` before the
+client runtime moves on to try the next address in the list. A value of
+`-1` indicates that the number of reconnect attempts is unlimited (the
+client runtime attempts to connect to the first address until it
+succeeds).
+
+|`ReconnectInterval` |`30000` |Specifies the interval between reconnect
+attempts in milliseconds. This applies to attempts on each address in
+the `imqAddressList` and on successive addresses in the list. If too
+short, this time interval does not give a broker time to recover. If too
+long, the reconnect might represent an unacceptable delay.
+
+|`ReconnectEnabled` |`false` |If `true`, specifies that the client
+runtime attempts to reconnect to a message server (or the list of
+addresses in `imqAddressList`) when a connection is lost.
+
+|`AddressListBehavior` |`priority` |Specifies whether connection
+attempts are in the order of addresses in the `imqAddressList` attribute
+(`priority`) or in a random order (`random`). If many clients are
+attempting a connection using the same connection factory, use a random
+order to prevent them from all being connected to the same address.
+
+|`AddressListIterations` |`-1` |Specifies the number of times the client
+runtime iterates through the `imqAddressList` in an effort to establish
+(or reestablish) a connection. A value of `-1` indicates that the number
+of attempts is unlimited.
+|===
+
+
+
+[NOTE]
+====
+All JMS administered object resource properties that worked with version
+7 of the {productName} are supported for backward compatibility.
+====
+
+
+[[giyhv]][[GSDPG00125]][[connector-resource]]
+
+=== `connector-resource`
+
+Defines the connection factory object of a specific connection
+definition in a connector (resource adapter).
+
+[[GSDPG886]][[sthref63]]
+
+
+[[superelements-40]]
+==== Superelements
+
+link:#giyiy[`resources`] (`glassfish-resources.xml`)
+
+[[GSDPG887]][[sthref64]]
+
+
+[[subelements-38]]
+==== Subelements
+
+The following table describes subelements for the `connector-resource`
+element.
+
+[[GSDPG888]][[sthref65]][[sthref66]]
+
+
+Table C-38 `connector-resource` Subelements
+
+[width="100%",cols="25%,12%,63%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beaso[`description`]
+
+
+ |zero or one |Contains a text description of this element.
+a|
+link:#beavx[`property` (with attributes)]
+
+
+ |zero or more |Specifies a property or a variable.
+|===
+
+
+[[GSDPG889]][[sthref67]]
+
+
+[[attributes-10]]
+==== Attributes
+
+The following table describes attributes for the `connector-resource`
+element.
+
+[[GSDPG890]][[sthref68]][[sthref69]]
+
+
+Table C-39 `connector-resource` Attributes
+
+[width="172%",cols="9%,46%,45%",options="header",]
+|===
+|Attribute |Default |Description
+|`jndi-name` |none |Specifies the JNDI name for the resource.
+
+|`pool-name` |none |Specifies the `name` of the associated
+link:#giygu[`connector-connection-pool`].
+
+|`object-type` |`user` a|
+(optional) Defines the type of the resource. Allowed values are:
+
+* `system-all` - A system resource for all server instances and the
+domain application server.
+* `system-admin` - A system resource only for the domain application
+server.
+* `system-instance` - A system resource for all server instances only.
+* `user` - A user resource.
+
+|`enabled` |`true` |(optional) Determines whether this resource is
+enabled at runtime.
+|===
+
+
+[[beasd]][[GSDPG00126]][[consistency]]
+
+=== `consistency`
+
+Specifies container behavior in guaranteeing transactional consistency
+of the data in the bean.
+
+[[fvysj]][[GSDPG00421]][[superelements-41]]
+
+==== Superelements
+
+link:#beasy[`entity-mapping`] (`sun-cmp-mappings.xml`)
+
+[[fvysl]][[GSDPG00422]][[subelements-39]]
+
+==== Subelements
+
+The following table describes subelements for the `consistency` element.
+
+[[GSDPG891]][[sthref70]][[fvysn]]
+
+
+Table C-40 `consistency` Subelements
+
+[width="100%",cols="31%,21%,48%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beavi[`none`]
+
+
+ |exactly one subelement is required |No consistency checking occurs.
+
+a|
+link:#bearm[`check-modified-at-commit`]
+
+
+ |exactly one subelement is required |Checks concurrent modification of
+fields in modified beans at commit time.
+
+a|
+link:#beauh[`lock-when-loaded`]
+
+
+ |exactly one subelement is required |Obtains an exclusive lock when the
+data is loaded.
+
+a|
+link:#bearl[`check-all-at-commit`]
+
+
+ | + |This element is not implemented. Do not use.
+
+a|
+link:#beaui[`lock-when-modified`]
+
+
+ | + |This element is not implemented. Do not use.
+
+a|
+link:#bearn[`check-version-of-accessed-instances`]
+
+
+ |exactly one subelement is required |Checks the version column of the
+modified beans.
+|===
+
+
+[[bease]][[GSDPG00127]][[constraint-field]]
+
+=== `constraint-field`
+
+Specifies a cacheability constraint for the given
+link:#beayl[`url-pattern`] or link:#beaxo[`servlet-name`].
+
+All `constraint-field` constraints must pass for a response to be
+cached. If there are `value` constraints, at least one of them must
+pass.
+
+[[fvysm]][[GSDPG00423]][[superelements-42]]
+
+==== Superelements
+
+link:#bearh[`cache-mapping`] (`glassfish-web.xml`)
+
+[[fvyso]][[GSDPG00424]][[subelements-40]]
+
+==== Subelements
+
+The following table describes subelements for the `constraint-field`
+element.
+
+[[GSDPG892]][[sthref71]][[fvysp]]
+
+
+Table C-41 `constraint-field` Subelements
+
+[width="100%",cols="30%,13%,57%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beasf[`constraint-field-value`]
+
+
+ |zero or more |Contains a value to be matched to the input parameter
+value.
+|===
+
+
+[[fvysq]][[GSDPG00425]][[attributes-11]]
+
+==== Attributes
+
+The following table describes attributes for the `constraint-field`
+element.
+
+[[GSDPG893]][[sthref72]][[fvysr]]
+
+
+Table C-42 `constraint-field` Attributes
+
+[width="100%",cols="18%,21%,61%",options="header",]
+|===
+|Attribute |Default |Description
+|`name` |none |Specifies the input parameter name.
+
+|`scope` |`request.parameter` |(optional) Specifies the scope from which
+the input parameter is retrieved. Allowed values are
+`context.attribute`, `request.header`, `request.parameter`,
+`request.cookie`, `request.attribute`, and `session.attribute`.
+
+|`cache-on-match` |`true` |(optional) If `true`, caches the response if
+matching succeeds. Overrides the same attribute in a
+link:#beasf[`constraint-field-value`] subelement.
+
+|`cache-on-match-failure` |`false` |(optional) If `true`, caches the
+response if matching fails. Overrides the same attribute in a
+link:#beasf[`constraint-field-value`] subelement.
+|===
+
+
+[[beasf]][[GSDPG00128]][[constraint-field-value]]
+
+=== `constraint-field-value`
+
+Specifies a value to be matched to the input parameter value. The
+matching is case sensitive. For example:
+
+[source,xml]
+----
+<value match-expr="in-range">1-60</value>
+----
+
+[[fvyss]][[GSDPG00426]][[superelements-43]]
+
+==== Superelements
+
+link:#bease[`constraint-field`] (`glassfish-web.xml`)
+
+[[fvyst]][[GSDPG00427]][[subelements-41]]
+
+==== Subelements
+
+none - contains data
+
+[[fvysu]][[GSDPG00428]][[attributes-12]]
+
+==== Attributes
+
+The following table describes attributes for the
+`constraint-field-value` element.
+
+[[GSDPG894]][[sthref73]][[fvysv]]
+
+
+Table C-43 `constraint-field-value` Attributes
+
+[width="172%",cols="11%,46%,43%",options="header",]
+|===
+|Attribute |Default |Description
+|`match-expr` |`equals` a|
+(optional) Specifies the type of comparison performed with the value.
+Allowed values are `equals`, `not-equals`, `greater`, `lesser`, and
+`in-range`.
+
+If `match-expr` is `greater` or `lesser`, the value must be a number. If
+`match-expr` is `in-range`, the value must be of the form n1`-`n2, where
+n1 and n2 are numbers.
+
+|`cache-on-match` |`true` |(optional) If `true`, caches the response if
+matching succeeds.
+
+|`cache-on-match-failure` |`false` |(optional) If `true`, caches the
+response if matching fails.
+|===
+
+
+[[beasg]][[GSDPG00129]][[context-root]]
+
+=== `context-root`
+
+Contains the web context root for the application or web application
+that was packaged as a WAR file. Overrides the corresponding element in
+the `application.xml` or `web.xml` file.
+
+If the parent element is `java-web-start-access`, this element contains
+the context root for the Java Web Start enabled application client
+module. If none is specified, a default is generated; see
+link:#gauax[`java-web-start-access`].
+
+If you are setting up load balancing, web module context roots must be
+unique within a server instance. See the link:ha-administration-guide.html#GSHAG[{productName} High Availability Administration Guide] for more
+information about load balancing.
+
+[[fvysx]][[GSDPG00429]][[superelements-44]]
+
+==== Superelements
+
+link:#beayr[`web`] (`glassfish-application.xml`),
+link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`),
+link:#gauax[`java-web-start-access`]
+(`glassfish-application-client.xml`)
+
+[[fvysw]][[GSDPG00430]][[subelements-42]]
+
+==== Subelements
+
+none - contains data
+
+[[beash]][[GSDPG00130]][[cookie-properties]]
+
+=== `cookie-properties`
+
+Specifies session cookie properties.
+
+
+[NOTE]
+====
+If cookie settings are defined declaratively in the `web.xml` file, the
+cookie properties defined here take precedence. If cookie settings are
+defined programmatically using `javax.servlet.SessionCookieConfig`
+methods, those cookie settings take precedence over the cookie
+properties defined here.
+====
+
+
+[[fvysy]][[GSDPG00431]][[superelements-45]]
+
+==== Superelements
+
+link:#beaxp[`session-config`] (`glassfish-web.xml`)
+
+[[fvysz]][[GSDPG00432]][[subelements-43]]
+
+==== Subelements
+
+The following table describes subelements for the `cookie-properties`
+element.
+
+[[GSDPG895]][[sthref74]][[fvytb]]
+
+
+Table C-44 `cookie-properties` Subelements
+
+[width="100%",cols="36%,14%,50%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beavx[`property` (with attributes)]
+
+
+ |zero or more |Specifies a property, which has a name and a value.
+|===
+
+
+[[fvyta]][[GSDPG00433]][[properties-5]]
+
+==== Properties
+
+The following table describes properties for the `cookie-properties`
+element.
+
+[[GSDPG896]][[sthref75]][[fvyte]]
+
+
+Table C-45 `cookie-properties` Properties
+
+[width="100%",cols="24%,13%,63%",options="header",]
+|===
+|Property |Default |Description
+|`cookieName` |none |Specifies the cookie name.
+
+|`cookiePath` |Context path at which the web module is installed.
+|Specifies the pathname that is set when the cookie is created. The
+browser sends the cookie if the pathname for the request contains this
+pathname. If set to `/` (slash), the browser sends cookies to all URLs
+served by {productName}. You can set the path to a narrower mapping
+to limit the request URLs to which the browser sends cookies.
+
+|`cookieMaxAgeSeconds` |none |Specifies the expiration time (in seconds)
+after which the browser expires the cookie. If this is unset, the cookie
+doesn't expire.
+
+|`cookieDomain` |(unset) |Specifies the domain for which the cookie is
+valid.
+
+|`cookieComment` |none |Specifies the comment that identifies the
+session tracking cookie in the cookie file.
+
+|`cookieSecure` |`dynamic` a|
+Sets the `Secure` attribute of any `JSESSIONID` cookies associated with
+the web application. Allowed values are as follows:
+
+* `true` — Sets `Secure` to `true`.
+* `false` — Sets `Secure` to `false`.
+* `dynamic` — The `JSESSIONID` cookie inherits the `Secure` setting of
+the request that initiated the session.
+
+To set the `Secure` attribute of a `JSESSIONIDSSO` cookie, use the
+`ssoCookieSecure` `virtual-server` property. For details, see
+link:reference-manual/create-virtual-server.html#GSRFM00062[`create-virtual-server`(1)].
+
+|`cookieHttpOnly` |none |Specifies that the cookie is marked HTTP only.
+Allowed values are `true` or `false`.
+|===
+
+
+[[beasi]][[GSDPG00131]][[create-tables-at-deploy]]
+
+=== `create-tables-at-deploy`
+
+Specifies whether database tables are created for beans that are
+automatically mapped by the EJB container. If `true`, creates tables in
+the database. If `false` (the default if this element is not present),
+does not create tables.
+
+This element can be overridden during deployment. See
+"link:application-development-guide/container_managed-persistence.html#GSDVG00438[Generation Options for CMP]" in {productName} Application Development Guide.
+
+[[fvytc]][[GSDPG00434]][[superelements-46]]
+
+==== Superelements
+
+link:#bearv[`cmp-resource`] (`glassfish-ejb-jar.xml`)
+
+[[fvytd]][[GSDPG00435]][[subelements-44]]
+
+==== Subelements
+
+none - contains data
+
+[[giyhr]][[GSDPG00132]][[custom-resource]]
+
+=== `custom-resource`
+
+Defines a custom resource, which specifies a custom server-wide resource
+object factory. Such object factories implement the
+javax.naming.spi.ObjectFactory interface.
+
+[[GSDPG897]][[sthref76]]
+
+
+[[superelements-47]]
+==== Superelements
+
+link:#giyiy[`resources`] (`glassfish-resources.xml`)
+
+[[GSDPG898]][[sthref77]]
+
+
+[[subelements-45]]
+==== Subelements
+
+The following table describes subelements for the `custom-resource`
+element.
+
+[[GSDPG899]][[sthref78]][[sthref79]]
+
+
+Table C-46 `custom-resource` Subelements
+
+[width="100%",cols="25%,12%,63%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beaso[`description`]
+
+
+ |zero or one |Contains a text description of this element.
+a|
+link:#beavx[`property` (with attributes)]
+
+
+ |zero or more |Specifies a property or a variable.
+|===
+
+
+[[GSDPG900]][[sthref80]]
+
+
+[[attributes-13]]
+==== Attributes
+
+The following table describes attributes for the `custom-resource`
+element.
+
+[[GSDPG901]][[sthref81]][[sthref82]]
+
+
+Table C-47 `custom-resource` Attributes
+
+[width="172%",cols="11%,46%,43%",options="header",]
+|===
+|Attribute |Default |Description
+|`jndi-name` |none |Specifies the JNDI name for the resource.
+
+|`res-type` |none |Specifies the fully qualified type of the resource.
+
+|`factory-class` |none |Specifies the fully qualified name of the
+user-written factory class, which implements
+javax.naming.spi.ObjectFactory.
+
+|`object-type` |`user` a|
+(optional) Defines the type of the resource. Allowed values are:
+
+* `system-all` - A system resource for all server instances and the
+domain application server.
+* `system-admin` - A system resource only for the domain application
+server.
+* `system-instance` - A system resource for all server instances only.
+* `user` - A user resource.
+
+|`enabled` |`true` |(optional) Determines whether this resource is
+enabled at runtime.
+|===
+
+
+[[beask]][[GSDPG00133]][[database-vendor-name]]
+
+=== `database-vendor-name`
+
+Specifies the name of the database vendor for which tables can be
+created. Allowed values are `javadb`, `db2`, `mssql`, `mysql`, `oracle`,
+`postgresql`, `pointbase`, `derby` (also for CloudScape), and `sybase`,
+case-insensitive.
+
+If no value is specified, a connection is made to the resource specified
+by the link:#beatw[`jndi-name`] subelement of the
+link:#bearv[`cmp-resource`] element, and the database vendor name is
+read. If the connection cannot be established, or if the value is not
+recognized, SQL-92 compliance is presumed.
+
+This element can be overridden during deployment. See
+"link:application-development-guide/container_managed-persistence.html#GSDVG00438[Generation Options for CMP]" in {productName} Application Development Guide.
+
+[[fvytf]][[GSDPG00436]][[superelements-48]]
+
+==== Superelements
+
+link:#bearv[`cmp-resource`] (`glassfish-ejb-jar.xml`)
+
+[[fvyti]][[GSDPG00437]][[subelements-46]]
+
+==== Subelements
+
+none - contains data
+
+[[gaubj]][[GSDPG00134]][[debugging-enabled]]
+
+=== `debugging-enabled`
+
+Specifies whether the debugging servlet is enabled for this web service
+endpoint. Allowed values are `true` (the default) and `false`.
+
+[[gaubf]][[GSDPG00438]][[superelements-49]]
+
+==== Superelements
+
+link:#beayv[`webservice-endpoint`] (`glassfish-web.xml`,
+`glassfish-ejb-jar.xml`)
+
+[[gaube]][[GSDPG00439]][[subelements-47]]
+
+==== Subelements
+
+none - contains data
+
+[[beasl]][[GSDPG00135]][[default]]
+
+=== `default`
+
+Specifies that a field belongs to the default hierarchical fetch group,
+and enables prefetching for a CMR field. To disable prefetching for
+specific query methods, use a link:#beavu[`prefetch-disabled`] element
+in the `glassfish-ejb-jar.xml` file.
+
+[[fvytg]][[GSDPG00440]][[superelements-50]]
+
+==== Superelements
+
+link:#beatc[`fetched-with`] (`sun-cmp-mappings.xml`)
+
+[[fvyth]][[GSDPG00441]][[subelements-48]]
+
+==== Subelements
+
+none - element is present or absent
+
+[[beasm]][[GSDPG00136]][[default-helper]]
+
+=== `default-helper`
+
+Passes property values to the built-in `default`
+link:#beare[`cache-helper`] class.
+
+[[fvytj]][[GSDPG00442]][[superelements-51]]
+
+==== Superelements
+
+link:#beard[`cache`] (`glassfish-web.xml`)
+
+[[fvytk]][[GSDPG00443]][[subelements-49]]
+
+==== Subelements
+
+The following table describes subelements for the `default-helper`
+element.
+
+[[GSDPG902]][[sthref83]][[fvytm]]
+
+
+Table C-48 `default-helper` Subelements
+
+[width="100%",cols="25%,12%,63%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beavx[`property` (with attributes)]
+
+
+ |zero or more |Specifies a property, which has a name and a value.
+|===
+
+
+[[fvytp]][[GSDPG00444]][[properties-6]]
+
+==== Properties
+
+The following table describes properties for the `default-helper`
+element.
+
+[[GSDPG903]][[sthref84]][[fvyto]]
+
+
+Table C-49 `default-helper` Properties
+
+[width="100%",cols="30%,21%,49%",options="header",]
+|===
+|Property |Default |Description
+|`cacheKeyGeneratorAttrName` |Uses the built-in `default`
+link:#beare[`cache-helper`] key generation, which concatenates the
+servlet path with link:#beatz[`key-field`] values, if any. |The caching
+engine looks in the `ServletContext` for an attribute with a name equal
+to the value specified for this property to determine whether a
+customized CacheKeyGenerator implementation is used. An application can
+provide a customized key generator rather than using the `default`
+helper. See "link:application-development-guide/webapps.html#GSDVG00254[The CacheKeyGenerator Interface]" in
+{productName} Application Development Guide.
+|===
+
+
+[[beasn]][[GSDPG00137]][[default-resource-principal]]
+
+=== `default-resource-principal`
+
+Specifies the default principal (user) for the resource.
+
+If this element is used in conjunction with a JMS Connection Factory
+resource, the `name` and `password` subelements must be valid entries in
+the Open Message Queue broker user repository. See
+"link:../openmq/mq-admin-guide/security-services.html#GMADG00040[Configuring and Managing Security Services]" in Open
+Message Queue Administration Guide for details.
+
+[[fvytl]][[GSDPG00445]][[superelements-52]]
+
+==== Superelements
+
+link:#beaww[`resource-ref`] (`glassfish-web.xml`,
+`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`);
+link:#bearv[`cmp-resource`], link:#beaur[`mdb-connection-factory`]
+(`glassfish-ejb-jar.xml`)
+
+[[fvytn]][[GSDPG00446]][[subelements-50]]
+
+==== Subelements
+
+The following table describes subelements for the
+`default-resource-principal` element.
+
+[[GSDPG904]][[sthref85]][[fvytr]]
+
+
+Table C-50 `default-resource-principal` Subelements
+
+[width="100%",cols="11%,10%,79%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beavf[`name`]
+
+
+ |only one |Specifies the default resource principal name used to sign
+on to a resource manager.
+
+a|
+link:#beavp[`password`]
+
+
+ |only one |Specifies password of the default resource principal.
+|===
+
+
+[[beaso]][[GSDPG00138]][[description]]
+
+=== `description`
+
+Specifies a text description of the containing element.
+
+[[fvytq]][[GSDPG00447]][[superelements-53]]
+
+==== Superelements
+
+link:#beavx[`property` (with attributes)], link:#gikqk[`valve`]
+(`glassfish-web.xml`); link:#beaqs[`activation-config`],
+link:#beauz[`method`] (`glassfish-ejb-jar.xml`);
+link:#beaye[`target-server`] (`sun-acc.xml`);
+link:#giyhw[`admin-object-resource`],
+link:#giygu[`connector-connection-pool`],
+link:#giyhv[`connector-resource`], link:#giyhr[`custom-resource`],
+link:#giyin[`external-jndi-resource`],
+link:#giyil[`jdbc-connection-pool`], link:#giyhm[`jdbc-resource`],
+link:#giyik[`mail-resource`], link:#beavx[`property` (with attributes)],
+link:#giyit[`resource-adapter-config`] (`glassfish-resources.xml`)
+
+[[fvyts]][[GSDPG00448]][[subelements-51]]
+
+==== Subelements
+
+none - contains data
+
+[[gkhtw]][[GSDPG00139]][[disable-nonportable-jndi-names]]
+
+=== `disable-nonportable-jndi-names`
+
+Because the EJB 3.1 specification defines portable EJB JNDI names, there
+is less need for {productName} specific JNDI names. By default,
+{productName} specific default JNDI names are applied automatically
+for backward compatibility. To disable {productName} specific JNDI
+names for an EJB module, set the value of this element to `true`. The
+default is `false`.
+
+[[gkhum]][[GSDPG00449]][[superelements-54]]
+
+==== Superelements
+
+link:#beaya[`glassfish-ejb-jar`] (`glassfish-ejb-jar.xml`)
+
+[[gkhug]][[GSDPG00450]][[subelements-52]]
+
+==== Subelements
+
+none - contains data
+
+[[beasp]][[GSDPG00140]][[dispatcher]]
+
+=== `dispatcher`
+
+Specifies a comma-separated list of `RequestDispatcher` methods for
+which caching is enabled on the target resource. Valid values are
+`REQUEST`, `FORWARD`, `INCLUDE`, and `ERROR` . If this element is not
+specified, the default is `REQUEST`. See SRV.6.2.5 of the Servlet 2.4
+specification for more information.
+
+[[fvytt]][[GSDPG00451]][[superelements-55]]
+
+==== Superelements
+
+link:#bearh[`cache-mapping`] (`glassfish-web.xml`)
+
+[[fvytv]][[GSDPG00452]][[subelements-53]]
+
+==== Subelements
+
+none - contains data
+
+[[beasq]][[GSDPG00141]][[drop-tables-at-undeploy]]
+
+=== `drop-tables-at-undeploy`
+
+Specifies whether database tables that were automatically created when
+the bean(s) were last deployed are dropped when the bean(s) are
+undeployed. If `true`, drops tables from the database. If `false` (the
+default if this element is not present), does not drop tables.
+
+This element can be overridden during deployment. See
+"link:application-development-guide/container_managed-persistence.html#GSDVG00438[Generation Options for CMP]" in {productName} Application Development Guide.
+
+[[fvytu]][[GSDPG00453]][[superelements-56]]
+
+==== Superelements
+
+link:#bearv[`cmp-resource`] (`glassfish-ejb-jar.xml`)
+
+[[fvytx]][[GSDPG00454]][[subelements-54]]
+
+==== Subelements
+
+none - contains data
+
+[[beass]][[GSDPG00142]][[ejb]]
+
+`ejb`
+~~~~~
+
+Defines runtime properties for a single enterprise bean within the
+application. The subelements listed below apply to particular enterprise
+beans as follows:
+
+* All types of beans: `ejb-name`, `ejb-ref`, `resource-ref`,
+`resource-env-ref`, `ior-security-config`, `gen-classes`, `jndi-name`,
+`use-thread-pool-id`, `message-destination-ref`, `pass-by-reference`,
+`service-ref`
+* Stateless session beans: `bean-pool`, `webservice-endpoint`
+* Stateful session beans: `bean-cache`, `webservice-endpoint`,
+`checkpoint-at-end-of-method`
+* Entity beans: `commit-option`, `bean-cache`, `bean-pool`, `cmp`,
+`is-read-only-bean`, `refresh-period-in-seconds`,
+`flush-at-end-of-method`
+* Message-driven beans: `mdb-resource-adapter`,
+`mdb-connection-factory`, `jms-durable-subscription-name`,
+`jms-max-messages-load`, `bean-pool`
+
+[[fvyty]][[GSDPG00455]][[superelements-57]]
+
+==== Superelements
+
+link:#beasx[`enterprise-beans`] (`glassfish-ejb-jar.xml`)
+
+[[fvytw]][[GSDPG00456]][[subelements-55]]
+
+==== Subelements
+
+The following table describes subelements for the `ejb` element.
+
+[[GSDPG905]][[sthref86]][[fvyuc]]
+
+
+Table C-51 `ejb` Subelements
+
+[width="100%",cols="35%,12%,53%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beast[`ejb-name`]
+
+
+ |only one |Matches the `ejb-name` in the corresponding `ejb-jar.xml`
+file.
+
+a|
+link:#beatw[`jndi-name`]
+
+
+ |zero or more |Specifies the absolute `jndi-name`.
+
+a|
+link:#beasu[`ejb-ref`]
+
+
+ |zero or more |Maps the absolute JNDI name to the `ejb-ref` element in
+the corresponding Jakarta EE XML file.
+
+a|
+link:#beaww[`resource-ref`]
+
+
+ |zero or more |Maps the absolute JNDI name to the `resource-ref` in the
+corresponding Jakarta EE XML file.
+
+a|
+link:#beawu[`resource-env-ref`]
+
+
+ |zero or more |Maps the absolute JNDI name to the `resource-env-ref` in
+the corresponding Jakarta EE XML file.
+
+a|
+link:#beaxk[`service-ref`]
+
+
+ |zero or more |Specifies runtime settings for a web service reference.
+
+a|
+link:#gauao[`message-destination-ref`]
+
+
+ |zero or more |Specifies the name of a physical message destination.
+
+a|
+link:#beavo[`pass-by-reference`]
+
+
+ |zero or one |Specifies the passing method used by an enterprise bean
+calling a remote interface method in another bean that is colocated
+within the same process.
+
+a|
+link:#beart[`cmp`]
+
+
+ |zero or one |Specifies runtime information for a container-managed
+persistence (CMP) entity bean for EJB 1.1 and EJB 2.1 beans.
+
+a|
+link:#beavv[`principal`]
+
+
+ |zero or one |Specifies the principal (user) name in an enterprise bean
+that has the `run-as` role specified.
+
+a|
+link:#beaur[`mdb-connection-factory`]
+
+
+ |zero or one |Specifies the connection factory associated with a
+message-driven bean.
+
+a|
+link:#beatu[`jms-durable-subscription-name`]
+
+
+ |zero or one |Specifies the durable subscription associated with a
+message-driven bean.
+
+a|
+link:#beatv[`jms-max-messages-load`]
+
+
+ |zero or one |Specifies the maximum number of messages to load into a
+Java Message Service session at one time for a message-driven bean to
+serve. The default is 1.
+
+a|
+link:#beato[`ior-security-config`]
+
+
+ |zero or one |Specifies the security information for the IOR.
+
+a|
+link:#beatr[`is-read-only-bean`]
+
+
+ |zero or one |Specifies that this entity bean is read-only.
+
+a|
+link:#beawk[`refresh-period-in-seconds`]
+
+
+ |zero or one |Specifies the rate at which a read-only-bean must be
+refreshed from the data source.
+
+a|
+link:#beasb[`commit-option`]
+
+
+ |zero or one |Has valid values of B or C. Default value is B.
+
+a|
+link:#beary[`cmt-timeout-in-seconds`]
+
+
+ |zero or one |Overrides the Transaction Timeout setting of the
+Transaction Service for an individual bean.
+
+a|
+link:#beaym[`use-thread-pool-id`]
+
+
+ |zero or one |Specifies the thread pool from which threads are selected
+for remote invocations of this bean.
+
+a|
+link:#beath[`gen-classes`]
+
+
+ |zero or one |Specifies all the generated class names for a bean.
+
+a|
+link:#bearb[`bean-pool`]
+
+
+ |zero or one |Specifies the bean pool properties. Used for stateless
+session beans, entity beans, and message-driven beans.
+
+a|
+link:#beara[`bean-cache`]
+
+
+ |zero or one |Specifies the bean cache properties. Used only for
+stateful session beans and entity beans.
+
+a|
+link:#beaus[`mdb-resource-adapter`]
+
+
+ |zero or one |Specifies runtime configuration information for a
+message-driven bean.
+
+a|
+link:#beayv[`webservice-endpoint`]
+
+
+ |zero or more |Specifies information about a web service endpoint.
+
+a|
+link:#beatf[`flush-at-end-of-method`]
+
+
+ |zero or one |Specifies the methods that force a database flush after
+execution. Used for entity beans.
+
+a|
+link:#bearp[`checkpointed-methods`]
+
+
+ |zero or one |Deprecated. Supported for backward compatibility. Use
+link:#bearo[`checkpoint-at-end-of-method`] instead.
+
+a|
+link:#bearo[`checkpoint-at-end-of-method`]
+
+
+ |zero or one |Specifies that the stateful session bean state is
+checkpointed, or persisted, after the specified methods are executed.
+The `availability-enabled` attribute must be set to `true`.
+
+a|
+link:#gkkia[`per-request-load-balancing`]
+
+
+ |zero or one |Specifies the per-request load balancing behavior of EJB
+2.x and 3.x remote client invocations on a stateless session bean.
+|===
+
+
+[[fvyuf]][[GSDPG00457]][[attributes-14]]
+
+==== Attributes
+
+The following table describes attributes for the `ejb` element.
+
+[[GSDPG906]][[sthref87]][[fvyud]]
+
+
+Table C-52 `ejb` Attributes
+
+[width="181%",cols="16%,49%,35%",options="header",]
+|===
+|Attribute |Default |Description
+|`availability-enabled` |`false` |(optional) If set to `true`, and if
+availability is enabled in the EJB container, high-availability features
+apply to this bean if it is a stateful session bean.
+|===
+
+
+[[fvytz]][[GSDPG00458]][[example-3]]
+
+==== Example
+
+[source,xml]
+----
+<ejb>
+   <ejb-name>CustomerEJB</ejb-name>
+   <jndi-name>customer</jndi-name>
+   <resource-ref>
+      <res-ref-name>jdbc/SimpleBank</res-ref-name>
+      <jndi-name>jdbc/__default</jndi-name>
+   </resource-ref>
+   <is-read-only-bean>false</is-read-only-bean>
+   <commit-option>B</commit-option>
+   <bean-pool>
+      <steady-pool-size>10</steady-pool-size>
+      <resize-quantity>10</resize-quantity>
+      <max-pool-size>100</max-pool-size>
+      <pool-idle-timeout-in-seconds>600</pool-idle-timeout-in-seconds>
+   </bean-pool>
+   <bean-cache>
+      <max-cache-size>100</max-cache-size>
+      <resize-quantity>10</resize-quantity>
+      <removal-timeout-in-seconds>3600</removal-timeout-in-seconds>
+      <victim-selection-policy>LRU</victim-selection-policy>
+   </bean-cache>
+</ejb>
+----
+
+[[beast]][[GSDPG00143]][[ejb-name]]
+
+=== `ejb-name`
+
+In the `glassfish-ejb-jar.xml` file, matches the `ejb-name` in the
+corresponding `ejb-jar.xml` file. The name must be unique among the
+names of the enterprise beans in the same EJB JAR file.
+
+There is no architected relationship between the `ejb-name` in the
+deployment descriptor and the JNDI name that the deployer assigns to the
+EJB component's home.
+
+In the `sun-cmp-mappings.xml` file, specifies the `ejb-name` of the
+entity bean in the `ejb-jar.xml` file to which the container-managed
+persistence (CMP) bean corresponds.
+
+[[fvyug]][[GSDPG00459]][[superelements-58]]
+
+==== Superelements
+
+link:#beass[`ejb`], link:#beauz[`method`] (`glassfish-ejb-jar.xml`);
+link:#beasy[`entity-mapping`] (`sun-cmp-mappings.xml`)
+
+[[fvyue]][[GSDPG00460]][[subelements-56]]
+
+==== Subelements
+
+none - contains data
+
+[[beasu]][[GSDPG00144]][[ejb-ref]]
+
+=== `ejb-ref`
+
+Maps the `ejb-ref-name` in the corresponding Jakarta EE deployment
+descriptor file `ejb-ref` entry to the absolute `jndi-name` of a
+resource.
+
+The `ejb-ref` element is used for the declaration of a reference to an
+EJB's home. Applies to session beans or entity beans.
+
+[[fvyub]][[GSDPG00461]][[superelements-59]]
+
+==== Superelements
+
+link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`),
+link:#beass[`ejb`] (`glassfish-ejb-jar.xml`),
+link:#beaxx[`glassfish-application-client`]
+(`glassfish-application-client.xml`)
+
+[[fvyua]][[GSDPG00462]][[subelements-57]]
+
+==== Subelements
+
+The following table describes subelements for the `ejb-ref` element.
+
+[[GSDPG907]][[sthref88]][[fvyui]]
+
+
+Table C-53 `ejb-ref` Subelements
+
+[width="100%",cols="26%,11%,63%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beasv[`ejb-ref-name`]
+
+
+ |only one |Specifies the `ejb-ref-name` in the corresponding Jakarta EE
+deployment descriptor file `ejb-ref` entry.
+
+a|
+link:#beatw[`jndi-name`]
+
+
+ |only one |Specifies the absolute `jndi-name` of a resource.
+|===
+
+
+[[beasv]][[GSDPG00145]][[ejb-ref-name]]
+
+=== `ejb-ref-name`
+
+Specifies the `ejb-ref-name` in the corresponding Jakarta EE deployment
+descriptor file `ejb-ref` entry.
+
+[[fvyuh]][[GSDPG00463]][[superelements-60]]
+
+==== Superelements
+
+link:#beasu[`ejb-ref`] (`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
+`glassfish-application-client.xml`)
+
+[[fvyuj]][[GSDPG00464]][[subelements-58]]
+
+==== Subelements
+
+none - contains data
+
+[[gaubh]][[GSDPG00146]][[eligible]]
+
+=== `eligible`
+
+Specifies whether the application client module is eligible to be Java
+Web Start enabled. Allowed values are `true` (the default) and `false`.
+
+[[gaubg]][[GSDPG00465]][[superelements-61]]
+
+==== Superelements
+
+link:#gauax[`java-web-start-access`]
+(`glassfish-application-client.xml`)
+
+[[gauaz]][[GSDPG00466]][[subelements-59]]
+
+==== Subelements
+
+none - contains data
+
+[[beasw]][[GSDPG00147]][[endpoint-address-uri]]
+
+=== `endpoint-address-uri`
+
+Specifies the relative path combined with the web server root to form
+the fully qualified endpoint address for a web service endpoint. This is
+a required element for EJB endpoints and an optional element for servlet
+endpoints.
+
+For servlet endpoints, this value is relative to the web application
+context root. For EJB endpoints, the URI is relative to root of the web
+server (the first portion of the URI is a context root). The context
+root portion must not conflict with the context root of any web
+application deployed to the same web server.
+
+In all cases, this value must be a fixed pattern (no "`*`' allowed).
+
+If the web service endpoint is a servlet that implements only a single
+endpoint and has only one `url-pattern`, it is not necessary to set this
+value, because the web container derives it from the `web.xml` file.
+
+[[fvyul]][[GSDPG00467]][[superelements-62]]
+
+==== Superelements
+
+link:#beayv[`webservice-endpoint`] (`glassfish-web.xml`,
+`glassfish-ejb-jar.xml`)
+
+[[fvyum]][[GSDPG00468]][[subelements-60]]
+
+==== Subelements
+
+none - contains data
+
+[[fvyuk]][[GSDPG00469]][[example-4]]
+
+==== Example
+
+If the web server is listening at `http://localhost:8080`, the following
+`endpoint-address-uri`:
+
+[source,xml]
+----
+<endpoint-address-uri>StockQuoteService/StockQuotePort</endpoint-address-uri>
+----
+
+results in the following target endpoint address:
+
+[source]
+----
+http://localhost:8080/StockQuoteService/StockQuotePort
+----
+
+[[beasx]][[GSDPG00148]][[enterprise-beans]]
+
+=== `enterprise-beans`
+
+Specifies all the runtime properties for an EJB JAR file in the
+application.
+
+[[fvyun]][[GSDPG00470]][[superelements-63]]
+
+==== Superelements
+
+link:#beaya[`glassfish-ejb-jar`] (`glassfish-ejb-jar.xml`)
+
+[[fvyuo]][[GSDPG00471]][[subelements-61]]
+
+==== Subelements
+
+The following table describes subelements for the `enterprise-beans`
+element.
+
+[[GSDPG908]][[sthref89]][[fvyut]]
+
+
+Table C-54 `enterprise-beans` Subelements
+
+[width="100%",cols="27%,12%,61%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beavf[`name`]
+
+
+ |zero or one |Specifies the name string.
+
+a|
+link:#beayk[`unique-id`]
+
+
+ |zero or one |Specifies a unique system identifier. This data is
+automatically generated and updated at deployment/redeployment. Do not
+specify or edit this value.
+
+a|
+link:#beass[`ejb`]
+
+
+ |zero or more |Defines runtime properties for a single enterprise bean
+within the application.
+
+a|
+link:#beavq[`pm-descriptors`]
+
+
+ |zero or one |Deprecated.
+
+a|
+link:#bearv[`cmp-resource`]
+
+
+ |zero or one |Specifies the database to be used for storing
+container-managed persistence (CMP) beans in an EJB JAR file.
+
+a|
+link:#beauu[`message-destination`]
+
+
+ |zero or more |Specifies the name of a logical message destination.
+
+a|
+link:#beayt[`webservice-description`]
+
+
+ |zero or more |Specifies a name and optional publish location for a web
+service.
+
+a|
+link:#beavy[`property` (with subelements)]
+
+
+ |zero or more |Specifies a property or a variable.
+|===
+
+
+[[fvyux]][[GSDPG00472]][[example-5]]
+
+==== Example
+
+[source,xml]
+----
+<enterprise-beans>
+ <ejb>
+     <ejb-name>CustomerEJB</ejb-name>
+     <jndi-name>customer</jndi-name>
+     <resource-ref>
+         <res-ref-name>jdbc/SimpleBank</res-ref-name>
+         <jndi-name>jdbc/__default</jndi-name>
+     </resource-ref>
+     <is-read-only-bean>false</is-read-only-bean>
+     <commit-option>B</commit-option>
+     <bean-pool>
+         <steady-pool-size>10</steady-pool-size>
+        <resize-quantity>10</resize-quantity>
+         <max-pool-size>100</max-pool-size>
+         <pool-idle-timeout-in-seconds>600</pool-idle-timeout-in-seconds>
+     </bean-pool>
+     <bean-cache>
+         <max-cache-size>100</max-cache-size>
+         <resize-quantity>10</resize-quantity>
+         <removal-timeout-in-seconds>3600</removal-timeout-in-seconds>
+         <victim-selection-policy>LRU</victim-selection-policy>
+     </bean-cache>
+ </ejb>
+</enterprise-beans>
+----
+
+[[beasy]][[GSDPG00149]][[entity-mapping]]
+
+=== `entity-mapping`
+
+Specifies the mapping a bean to database columns.
+
+[[fvyus]][[GSDPG00473]][[superelements-64]]
+
+==== Superelements
+
+link:#beaxy[`sun-cmp-mapping`] (`sun-cmp-mappings.xml`)
+
+[[fvyur]][[GSDPG00474]][[subelements-62]]
+
+==== Subelements
+
+The following table describes subelements for the `entity-mapping`
+element.
+
+[[GSDPG909]][[sthref90]][[fvyuz]]
+
+
+Table C-55 `entity-mapping` Subelements
+
+[width="100%",cols="21%,12%,67%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beast[`ejb-name`]
+
+
+ |only one |Specifies the name of the entity bean in the `ejb-jar.xml`
+file to which the CMP bean corresponds.
+
+a|
+link:#beayd[`table-name`]
+
+
+ |only one |Specifies the name of a database table. The table must be
+present in the database schema file.
+
+a|
+link:#bearu[`cmp-field-mapping`]
+
+
+ |one or more |Associates a field with one or more columns to which it
+maps.
+
+a|
+link:#bearw[`cmr-field-mapping`]
+
+
+ |zero or more |A container-managed relationship field has a name and
+one or more column pairs that define the relationship.
+
+a|
+link:#beaxe[`secondary-table`]
+
+
+ |zero or more |Describes the relationship between a bean's primary and
+secondary table.
+
+a|
+link:#beasd[`consistency`]
+
+
+ |zero or one |Specifies container behavior in guaranteeing
+transactional consistency of the data in the bean.
+|===
+
+
+[[beasz]][[GSDPG00150]][[establish-trust-in-client]]
+
+=== `establish-trust-in-client`
+
+Specifies if the target is capable of authenticating a client. The
+values are `NONE`, `SUPPORTED`, or `REQUIRED`.
+
+[[fvyuq]][[GSDPG00475]][[superelements-65]]
+
+==== Superelements
+
+link:#beayh[`transport-config`] (`glassfish-ejb-jar.xml`)
+
+[[fvyuy]][[GSDPG00476]][[subelements-63]]
+
+==== Subelements
+
+none - contains data
+
+[[beata]][[GSDPG00151]][[establish-trust-in-target]]
+
+=== `establish-trust-in-target`
+
+Specifies if the target is capable of authenticating to a client. The
+values are `NONE`, `SUPPORTED`, or `REQUIRED`.
+
+[[fvyuu]][[GSDPG00477]][[superelements-66]]
+
+==== Superelements
+
+link:#beayh[`transport-config`] (`glassfish-ejb-jar.xml`)
+
+[[fvyuv]][[GSDPG00478]][[subelements-64]]
+
+==== Subelements
+
+none - contains data
+
+[[giyin]][[GSDPG00152]][[external-jndi-resource]]
+
+=== `external-jndi-resource`
+
+Defines a resource that resides in an external JNDI repository. For
+example, a generic Java object could be stored in an LDAP server. An
+external JNDI factory must implement the
+javax.naming.spi.InitialContextFactory interface.
+
+[[GSDPG910]][[sthref91]]
+
+
+[[superelements-67]]
+==== Superelements
+
+link:#giyiy[`resources`] (`glassfish-resources.xml`)
+
+[[GSDPG911]][[sthref92]]
+
+
+[[subelements-65]]
+==== Subelements
+
+The following table describes subelements for the
+`external-jndi-resource` element.
+
+[[GSDPG912]][[sthref93]][[sthref94]]
+
+
+Table C-56 `external-jndi-resource` Subelements
+
+[width="100%",cols="25%,12%,63%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beaso[`description`]
+
+
+ |zero or one |Contains a text description of this element.
+a|
+link:#beavx[`property` (with attributes)]
+
+
+ |zero or more |Specifies a property or a variable.
+|===
+
+
+[[GSDPG913]][[sthref95]]
+
+
+[[attributes-15]]
+==== Attributes
+
+The following table describes attributes for the
+`external-jndi-resource` element.
+
+[[GSDPG914]][[sthref96]][[sthref97]]
+
+
+Table C-57 `external-jndi-resource` Attributes
+
+[width="172%",cols="13%,46%,41%",options="header",]
+|===
+|Attribute |Default |Description
+|`jndi-name` |none |Specifies the JNDI name for the resource.
+
+|`jndi-lookup-name` |none |Specifies the JNDI lookup name for the
+resource.
+
+|`res-type` |none |Specifies the fully qualified type of the resource.
+
+|`factory-class` |none a|
+Specifies the fully qualified name of the factory class, which
+implements javax.naming.spi.InitialContextFactory .
+
+For more information about JNDI, see the link:application-development-guide.html#GSDVG[{productName} Application Development Guide].
+
+|`object-type` |`user` a|
+(optional) Defines the type of the resource. Allowed values are:
+
+* `system-all` - A system resource for all server instances and the
+domain application server.
+* `system-admin` - A system resource only for the domain application
+server.
+* `system-instance` - A system resource for all server instances only.
+* `user` - A user resource.
+
+|`enabled` |`true` |(optional) Determines whether this resource is
+enabled at runtime.
+|===
+
+
+[[beatc]][[GSDPG00153]][[fetched-with]]
+
+=== `fetched-with`
+
+Specifies the fetch group configuration for fields and relationships.
+The `fetched-with` element has different allowed and default subelements
+based on its parent element and the data types of the fields.
+
+* If there is no `fetched-with` subelement of a
+link:#bearu[`cmp-field-mapping`], and the data type is not BLOB, CLOB,
+VARBINARY, LONGVARBINARY, or OTHER, `fetched-with` can have any valid
+subelement. The default subelement is as follows:
++
+[source,xml]
+----
+<fetched-with><default/></fetched-with>
+----
+* If there is no `fetched-with` subelement of a
+link:#bearu[`cmp-field-mapping`], and the data type is BLOB, CLOB,
+VARBINARY, LONGVARBINARY, or OTHER, `fetched-with` can have any valid
+subelement except `<default/>`. The default subelement is as follows:
++
+[source,xml]
+----
+<fetched-with><none/></fetched-with>
+----
+* If there is no `fetched-with` subelement of a
+link:#bearw[`cmr-field-mapping`], `fetched-with` can have any valid
+subelement. The default subelement is as follows:
++
+[source,xml]
+----
+<fetched-with><none/></fetched-with>
+----
+
+Managed fields are multiple CMP or CMR fields that are mapped to the
+same column. A managed field can have any `fetched-with` subelement
+except `<default/>`. For additional information, see
+"link:application-development-guide/container_managed-persistence.html#GSDVG00306[Managed Fields]" in {productName} Application Development Guide.
+
+[[fvyuw]][[GSDPG00479]][[superelements-68]]
+
+==== Superelements
+
+link:#bearu[`cmp-field-mapping`], link:#bearw[`cmr-field-mapping`]
+(`sun-cmp-mappings.xml`)
+
+[[fvyup]][[GSDPG00480]][[subelements-66]]
+
+==== Subelements
+
+The following table describes subelements for the `fetched-with`
+element.
+
+[[GSDPG915]][[sthref98]][[fvzcz]]
+
+
+Table C-58 `fetched-with` Subelements
+
+[width="100%",cols="14%,21%,65%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beasl[`default`]
+
+
+ |exactly one subelement is required |Specifies that a CMP field belongs
+to the default hierarchical fetch group, which means it is fetched any
+time the bean is loaded from a database. Enables prefetching of a CMR
+field.
+
+a|
+link:#beaub[`level`]
+
+
+ |exactly one subelement is required |Specifies the level number of a
+hierarchical fetch group.
+
+a|
+link:#beavg[`named-group`]
+
+
+ |exactly one subelement is required |Specifies the name of an
+independent fetch group.
+
+a|
+link:#beavi[`none`]
+
+
+ |exactly one subelement is required |Specifies that this field or
+relationship is placed into its own individual fetch group, which means
+it is loaded from a database the first time it is accessed in this
+transaction.
+|===
+
+
+[[beatd]][[GSDPG00154]][[field-name]]
+
+=== `field-name`
+
+Specifies the Java identifier of a field. This identifier must match the
+value of the `field-name` subelement of the `cmp-field` element in the
+`ejb-jar.xml` file.
+
+[[fvzcm]][[GSDPG00481]][[superelements-69]]
+
+==== Superelements
+
+link:#bearu[`cmp-field-mapping`] (`sun-cmp-mappings.xml`)
+
+[[fvyxs]][[GSDPG00482]][[subelements-67]]
+
+==== Subelements
+
+none - contains data
+
+[[beate]][[GSDPG00155]][[finder]]
+
+=== `finder`
+
+Describes the finders for CMP 1.1 with a method name and query.
+
+[[fvzao]][[GSDPG00483]][[superelements-70]]
+
+==== Superelements
+
+link:#beavk[`one-one-finders`] (`glassfish-ejb-jar.xml`)
+
+[[fvzdc]][[GSDPG00484]][[subelements-68]]
+
+==== Subelements
+
+The following table describes subelements for the `finder` element.
+
+[[GSDPG916]][[sthref99]][[fvyzu]]
+
+
+Table C-59 `finder` Subelements
+
+[width="100%",cols="31%,13%,56%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beavb[`method-name`]
+
+
+ |only one |Specifies the method name for the finder.
+
+a|
+link:#beawe[`query-params`]
+
+
+ |zero or one |Specifies the query parameters for the CMP 1.1 finder.
+
+a|
+link:#beawb[`query-filter`]
+
+
+ |zero or one |Specifies the query filter for the CMP 1.1 finder.
+
+a|
+link:#beawf[`query-variables`]
+
+
+ |zero or one |Specifies variables in query expression for the CMP 1.1
+finder.
+
+a|
+link:#beawd[`query-ordering`]
+
+
+ |zero or one |Specifies the query ordering for the CMP 1.1 finder.
+|===
+
+
+[[beatf]][[GSDPG00156]][[flush-at-end-of-method]]
+
+=== `flush-at-end-of-method`
+
+Specifies the methods that force a database flush after execution.
+Applicable to entity beans.
+
+[[fvzcw]][[GSDPG00485]][[superelements-71]]
+
+==== Superelements
+
+link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
+
+[[fvyza]][[GSDPG00486]][[subelements-69]]
+
+==== Subelements
+
+The following table describes subelements for the
+`flush-at-end-of-method` element.
+
+[[GSDPG917]][[sthref100]][[fvzba]]
+
+
+Table C-60 `flush-at-end-of-method` Subelements
+
+[width="100%",cols="26%,18%,56%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beauz[`method`]
+
+
+ |one or more |Specifies a bean method.
+|===
+
+
+[[beath]][[GSDPG00157]][[gen-classes]]
+
+=== `gen-classes`
+
+Specifies all the generated class names for a bean.
+
+
+[NOTE]
+====
+This value is automatically generated by the server at deployment or
+redeployment time. Do not specify it or change it after deployment.
+====
+
+
+[[fvyyh]][[GSDPG00487]][[superelements-72]]
+
+==== Superelements
+
+link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
+
+[[fvzee]][[GSDPG00488]][[subelements-70]]
+
+==== Subelements
+
+The following table describes subelements for the `gen-classes` element.
+
+[[GSDPG918]][[sthref101]][[fvzdo]]
+
+
+Table C-61 `gen-classes` Subelements
+
+[width="100%",cols="20%,11%,69%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beawn[`remote-impl`]
+
+
+ |zero or one |Specifies the fully-qualified class name of the generated
+`EJBObject` impl class.
+
+a|
+link:#beaud[`local-impl`]
+
+
+ |zero or one |Specifies the fully-qualified class name of the generated
+`EJBLocalObject` impl class.
+
+a|
+link:#beawm[`remote-home-impl`]
+
+
+ |zero or one |Specifies the fully-qualified class name of the generated
+`EJBHome` impl class.
+
+a|
+link:#beauc[`local-home-impl`]
+
+
+ |zero or one |Specifies the fully-qualified class name of the generated
+`EJBLocalHome` impl class.
+|===
+
+
+[[beaxw]][[GSDPG00158]][[glassfish-application]]
+
+=== `glassfish-application`
+
+Defines the {productName} specific configuration for an application.
+This is the root element; there can only be one `glassfish-application`
+element in a `glassfish-application.xml` file. See
+link:dd-files.html#beaqk[The glassfish-application.xml File].
+
+[[fvzhn]][[GSDPG00489]][[superelements-73]]
+
+==== Superelements
+
+none
+
+[[fvzgn]][[GSDPG00490]][[subelements-71]]
+
+==== Subelements
+
+The following table describes subelements for the
+`glassfish-application` element.
+
+[[GSDPG919]][[sthref102]][[fvzhl]]
+
+
+Table C-62 `glassfish-application` Subelements
+
+[width="100%",cols="28%,12%,60%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beayr[`web`]
+
+
+ |zero or more |Specifies the application's web tier configuration.
+
+a|
+link:#beavo[`pass-by-reference`]
+
+
+ |zero or one |Determines whether EJB modules use pass-by-value or
+pass-by-reference semantics.
+
+a|
+link:#beayk[`unique-id`]
+
+
+ |zero or one |Contains the unique ID for the application.
+
+a|
+link:#beaxg[`security-role-mapping`]
+
+
+ |zero or more |Maps a role in the corresponding Jakarta EE XML file to a
+user or group.
+
+a|
+link:#beawi[`realm`]
+
+
+ |zero or one |Specifies an authentication realm.
+
+a|
+link:#beasu[`ejb-ref`]
+
+
+ |zero or more |Maps the absolute JNDI name to the `ejb-ref` in the
+corresponding Jakarta EE XML file.
+
+a|
+link:#beaww[`resource-ref`]
+
+
+ |zero or more |Maps the absolute JNDI name to the `resource-ref` in the
+corresponding Jakarta EE XML file.
+
+a|
+link:#beawu[`resource-env-ref`]
+
+
+ |zero or more |Maps the absolute JNDI name to the `resource-env-ref` in
+the corresponding Jakarta EE XML file.
+
+a|
+link:#beaxk[`service-ref`]
+
+
+ |zero or more |Specifies runtime settings for a web service reference.
+
+a|
+link:#gauao[`message-destination-ref`]
+
+
+ |zero or more |Specifies the name of a physical message destination.
+
+a|
+link:#beauu[`message-destination`]
+
+
+ |zero or more |Specifies the name of a logical message destination.
+
+a|
+link:#gjizj[`archive-name`]
+
+
+ |zero or one |Specifies the name of the archive file.
+
+a|
+link:#gjjak[`compatibility`]
+
+
+ |zero or one |Specifies the {productName} release with which to be
+backward compatible in terms of JAR visibility requirements for
+applications.
+
+a|
+link:#gkhtr[`keep-state`]
+
+
+ |zero or one |Retains web sessions, stateful session bean instances,
+and persistently created EJB timers across redeployments.
+
+a|
+link:#gkkfd[`version-identifier`]
+
+
+ |zero or one |Contains version information for an application.
+|===
+
+
+[[beaxx]][[GSDPG00159]][[glassfish-application-client]]
+
+=== `glassfish-application-client`
+
+Defines the {productName} specific configuration for an application
+client. This is the root element; there can only be one
+`glassfish-application-client` element in a
+`glassfish-application-client.xml` file. See link:dd-files.html#beaqo[The
+glassfish-application-client.xml file].
+
+[[fvzgq]][[GSDPG00491]][[superelements-74]]
+
+==== Superelements
+
+none
+
+[[fvzja]][[GSDPG00492]][[subelements-72]]
+
+==== Subelements
+
+The following table describes subelements for the
+`glassfish-application-client` element.
+
+[[GSDPG920]][[sthref103]][[fvzjh]]
+
+
+Table C-63 `glassfish-application-client` subelements
+
+[width="100%",cols="28%,12%,60%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beasu[`ejb-ref`]
+
+
+ |zero or more |Maps the absolute JNDI name to the `ejb-ref` in the
+corresponding Jakarta EE XML file.
+
+a|
+link:#beaww[`resource-ref`]
+
+
+ |zero or more |Maps the absolute JNDI name to the `resource-ref` in the
+corresponding Jakarta EE XML file.
+
+a|
+link:#beawu[`resource-env-ref`]
+
+
+ |zero or more |Maps the absolute JNDI name to the `resource-env-ref` in
+the corresponding Jakarta EE XML file.
+
+a|
+link:#beaxk[`service-ref`]
+
+
+ |zero or more |Specifies runtime settings for a web service reference.
+
+a|
+link:#gauao[`message-destination-ref`]
+
+
+ |zero or more |Specifies the name of a physical message destination.
+
+a|
+link:#beauu[`message-destination`]
+
+
+ |zero or more |Specifies the name of a logical message destination.
+
+a|
+link:#gauax[`java-web-start-access`]
+
+
+ |zero or one |Specifies changes to default Java Web Start parameters.
+
+a|
+link:#gkkfd[`version-identifier`]
+
+
+ |zero or one |Contains version information for an application client.
+|===
+
+
+[[beaya]][[GSDPG00160]][[glassfish-ejb-jar]]
+
+=== `glassfish-ejb-jar`
+
+Defines the {productName} specific configuration for an EJB JAR file.
+This is the root element; there can only be one `glassfish-ejb-jar`
+element in a `glassfish-ejb-jar.xml` file. See
+link:dd-files.html#beaqm[The glassfish-ejb-jar.xml File].
+
+[[fvzhw]][[GSDPG00493]][[superelements-75]]
+
+==== Superelements
+
+none
+
+[[fvzfv]][[GSDPG00494]][[subelements-73]]
+
+==== Subelements
+
+The following table describes subelements for the `glassfish-ejb-jar`
+element.
+
+[[GSDPG921]][[sthref104]][[fvzfu]]
+
+
+Table C-64 `glassfish-ejb-jar` Subelements
+
+[width="100%",cols="36%,12%,52%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beaxg[`security-role-mapping`]
+
+
+ |zero or more |Maps a role in the corresponding Jakarta EE XML file to a
+user or group.
+
+a|
+link:#beasx[`enterprise-beans`]
+
+
+ |only one |Describes all the runtime properties for an EJB JAR file in
+the application.
+
+a|
+link:#gjjak[`compatibility`]
+
+
+ |zero or one |Specifies the {productName} release with which to be
+backward compatible in terms of JAR visibility requirements for
+applications.
+
+a|
+link:#gkhtw[`disable-nonportable-jndi-names`]
+
+
+ |zero or one |Disables {productName} specific JNDI names.
+
+a|
+link:#gkhtr[`keep-state`]
+
+
+ |zero or one |Retains stateful session bean instances and persistently
+created EJB timers across redeployments.
+
+a|
+link:#gkkfd[`version-identifier`]
+
+
+ |zero or one |Contains version information for an EJB module.
+|===
+
+
+[[beayb]][[GSDPG00161]][[glassfish-web-app]]
+
+=== `glassfish-web-app`
+
+Defines {productName} specific configuration for a web module. This
+is the root element; there can only be one `glassfish-web-app` element
+in a `glassfish-web.xml` file. See link:dd-files.html#beaql[The
+glassfish-web.xml File].
+
+[[fvzgj]][[GSDPG00495]][[superelements-76]]
+
+==== Superelements
+
+none
+
+[[fvzhr]][[GSDPG00496]][[subelements-74]]
+
+==== Subelements
+
+The following table describes subelements for the `glassfish-web-app`
+element.
+
+[[GSDPG922]][[sthref105]][[fvzgf]]
+
+
+Table C-65 `glassfish-web-app` Subelements
+
+[width="100%",cols="28%,12%,60%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beasg[`context-root`]
+
+
+ |zero or one |Contains the web context root for the web module.
+
+a|
+link:#beaxg[`security-role-mapping`]
+
+
+ |zero or more |Maps roles to users or groups in the currently active
+realm.
+
+a|
+link:#beaxm[`servlet`]
+
+
+ |zero or more |Specifies a principal name for a servlet, which is used
+for the `run-as` role defined in `web.xml`.
+
+a|
+link:#beatm[`idempotent-url-pattern`]
+
+
+ |zero or more |Specifies a URL pattern for idempotent requests.
+
+a|
+link:#beaxp[`session-config`]
+
+
+ |zero or one |Specifies session manager, session cookie, and other
+session-related information.
+
+a|
+link:#beasu[`ejb-ref`]
+
+
+ |zero or more |Maps the absolute JNDI name to the `ejb-ref` in the
+corresponding Jakarta EE XML file.
+
+a|
+link:#beaww[`resource-ref`]
+
+
+ |zero or more |Maps the absolute JNDI name to the `resource-ref` in the
+corresponding Jakarta EE XML file.
+
+a|
+link:#beawu[`resource-env-ref`]
+
+
+ |zero or more |Maps the absolute JNDI name to the `resource-env-ref` in
+the corresponding Jakarta EE XML file.
+
+a|
+link:#beaxk[`service-ref`]
+
+
+ |zero or more |Specifies runtime settings for a web service reference.
+
+a|
+link:#gauao[`message-destination-ref`]
+
+
+ |zero or more |Specifies the name of a physical message destination.
+
+a|
+link:#beard[`cache`]
+
+
+ |zero or one |Configures caching for web application components.
+
+a|
+link:#bearq[`class-loader`]
+
+
+ |zero or one |Specifies class loader configuration information.
+
+a|
+link:#beatx[`jsp-config`]
+
+
+ |zero or one |Specifies JSP configuration information.
+
+a|
+link:#beaue[`locale-charset-info`]
+
+
+ |zero or one |Deprecated. Use the `parameter-encoding` subelement of
+`glassfish-web-app` instead.
+
+a|
+link:#beavn[`parameter-encoding`]
+
+
+ |zero or one |Determines the default request character encoding and how
+the web container decodes parameters from forms according to a hidden
+field value.
+
+a|
+link:#beavx[`property` (with attributes)]
+
+
+ |zero or more |Specifies a property, which has a name and a value.
+
+a|
+link:#gikqk[`valve`]
+
+
+ |zero or more |Specifies a custom valve.
+
+a|
+link:#beauu[`message-destination`]
+
+
+ |zero or more |Specifies the name of a logical message destination.
+
+a|
+link:#beayt[`webservice-description`]
+
+
+ |zero or more |Specifies a name and optional publish location for a web
+service.
+
+a|
+link:#gkhtr[`keep-state`]
+
+
+ |zero or one |Retains web sessions across redeployments.
+
+a|
+link:#gkkfd[`version-identifier`]
+
+
+ |zero or one |Contains version information for a web application.
+|===
+
+
+[[fvzia]][[GSDPG00497]][[attributes-16]]
+
+==== Attributes
+
+The following table describes attributes for the `glassfish-web-app`
+element.
+
+[[GSDPG923]][[sthref106]][[fvzjf]]
+
+
+Table C-66 `glassfish-web-app` Attributes
+
+[width="172%",cols="17%,46%,37%",options="header",]
+|===
+|Attribute |Default |Description
+|`error-url` |(blank) |(optional) Not implemented. Do not use.
+
+|`httpservlet-``security-``provider` |none |(optional) Specifies the
+`HttpServlet` message layer provider that the web container's servlet
+`auth-constraint` processing calls.
+|===
+
+
+[[fvzgt]][[GSDPG00498]][[properties-7]]
+
+==== Properties
+
+The following table describes properties for the `glassfish-web-app`
+element.
+
+[[GSDPG924]][[sthref107]][[fvzim]]
+
+
+Table C-67 `glassfish-web-app` Properties
+
+[width="100%",cols="35%,23%,42%",options="header",]
+|===
+|Property |Default |Description
+|`allowLinking` |`false` a|
+If `true`, resources in this web application that are symbolic links are
+served. You can also define this property for a virtual server. Web
+applications on the virtual server that do not define this property use
+the virtual server's value. For details, see
+link:reference-manual/create-virtual-server.html#GSRFM00062[`create-virtual-server`(1)].
+
+Caution: Setting this property to `true` on Windows systems exposes JSP
+source code.
+
+|`alternatedocroot_n` |none a|
+Specifies an alternate document root (docroot), where n is a positive
+integer that allows specification of more than one. Alternate docroots
+allow web applications to serve requests for certain resources from
+outside their own docroot, based on whether those requests match one (or
+more) of the URI patterns of the web application's alternate docroots.
+
+If a request matches an alternate docroot's URI pattern, it is mapped to
+the alternate docroot by appending the request URI (minus the web
+application's context root) to the alternate docroot's physical location
+(directory). If a request matches multiple URI patterns, the alternate
+docroot is determined according to the following precedence order:
+
+* Exact match
+* Longest path match
+* Extension match
+
+For example, the following properties specify three alternate docroots.
+The URI pattern of the first alternate docroot uses an exact match,
+whereas the URI patterns of the second and third alternate docroots use
+extension and longest path prefix matches, respectively.
+
+[source,xml]
+----
+<property name="alternatedocroot_1"
+   value="from=/my.jpg dir=/srv/images/jpg"/>
+<property name="alternatedocroot_2"
+   value="from=*.jpg dir=/srv/images/jpg"/>
+<property name="alternatedocroot_3"
+   value="from=/jpg/* dir=/src/images"/>
+----
+
+The `value` of each alternate docroot has two components: The first
+component, `from`, specifies the alternate docroot's URI pattern, and
+the second component, `dir`, specifies the alternate docroot's physical
+location (directory). Spaces are allowed in the `dir` component.
+
+You can set this property for all the web applications on a specific
+virtual server. For details, see
+link:reference-manual/create-virtual-server.html#GSRFM00062[`create-virtual-server`(1)].
+
+|`valve_n` |none a|
+This property is deprecated. Use the link:#gikqk[`valve`] subelement
+instead.
+
+Specifies a fully qualified class name of a custom valve, where n is a
+positive integer that allows specification of more than one. The valve
+class must implement the org.apache.catalina.Valve interface from Tomcat
+or previous {productName} releases, or the
+org.glassfish.web.valve.GlassFishValve interface from the current
+{productName} release. For example:
+
+[source,xml]
+----
+<property name="valve_1"
+   value="org.glassfish.extension.Valve"/>
+----
+
+You can set this property for all the web applications on a specific
+virtual server. For details, see
+link:reference-manual/create-virtual-server.html#GSRFM00062[`create-virtual-server`(1)].
+
+|`listener_n` |none a|
+Specifies a fully qualified class name of a custom Catalina listener,
+where n is a positive integer that allows specification of more than
+one. The listener class must implement the
+org.apache.catalina.ContainerListener,
+org.apache.catalina.LifecycleListener, or
+org.apache.catalina.InstanceListener interface. For example:
+
+[source,xml]
+----
+<property name="listener_1"
+   value="org.glassfish.extension.MyLifecycleListener"/>
+----
+
+You can set this property for all the web applications on a specific
+virtual server. For details, see
+link:reference-manual/create-virtual-server.html#GSRFM00062[`create-virtual-server`(1)].
+
+|`crossContextAllowed` |`true` |If `true`, allows this web application
+to access the contexts of other web applications using the
+`ServletContext.``getContext()`method.
+
+|`relativeRedirectAllowed` |`false` |If `true`, allows this web
+application to send a relative URL to the client using
+`HttpServletResponse.``sendRedirect()`, and instructs the web container
+not to translate any relative URLs to fully qualified ones.
+
+|`reuseSessionID` |`false` |If `true`, sessions generated for this web
+application use the session ID specified in the request.
+
+|`securePagesWithPragma` |`true` a|
+Set this property to `false` to ensure that for this web application
+file downloads using SSL work properly in Internet Explorer.
+
+You can set this property for all the web applications on a specific
+virtual server. For details, see
+link:reference-manual/create-virtual-server.html#GSRFM00062[`create-virtual-server`(1)].
+
+|`singleThreadedServletPoolSize` |`5` |Specifies the maximum number of
+servlet instances allocated for each `SingleThreadModel` servlet in the
+web application.
+
+|`tempdir` a|
+domain-dir`/generated/`app-name
+
+or
+
+domain-dir`/generated/`module-name
+
+ |Specifies a temporary directory for use by this web module. This value
+is used to construct the value of the `javax.servlet.context.``tempdir`
+context attribute. Compiled JSP files are also placed in this directory.
+
+|`useResponseCTForHeaders` |`false` |If `true`, response headers are
+encoded using the response's charset instead of the default (UTF-8).
+|===
+
+
+[[giygy]][[GSDPG00162]][[group-map]]
+
+=== `group-map`
+
+Maps an EIS group to a group defined in the {productName} domain.
+
+[[GSDPG925]][[sthref108]]
+
+
+[[superelements-77]]
+==== Superelements
+
+link:#giyht[`work-security-map`] (`glassfish-resources.xml`)
+
+[[giyid]][[GSDPG00499]][[subelements-75]]
+
+==== Subelements
+
+none
+
+[[GSDPG926]][[sthref109]]
+
+
+[[attributes-17]]
+==== Attributes
+
+The following table describes attributes for the `group-map` element.
+
+[[GSDPG927]][[sthref110]][[sthref111]]
+
+
+Table C-68 `group-map` Attributes
+
+[width="181%",cols="13%,49%,38%",options="header",]
+|===
+|Attribute |Default |Description
+|`eis-group` |none |Specifies an EIS group.
+
+|`mapped-group` |none |Specifies a group defined in the {productName}
+domain.
+|===
+
+
+[[beati]][[GSDPG00163]][[group-name]]
+
+=== `group-name`
+
+Specifies a group name in the current realm.
+
+[[fvzak]][[GSDPG00500]][[superelements-78]]
+
+==== Superelements
+
+link:#beaxg[`security-role-mapping`] (`glassfish-application.xml`,
+`glassfish-web.xml`, `glassfish-ejb-jar.xml`)
+
+[[fvywm]][[GSDPG00501]][[subelements-76]]
+
+==== Subelements
+
+none - contains data
+
+[[beatk]][[GSDPG00502]][[http-method]]
+
+==== `http-method`
+
+Specifies an HTTP method that is eligible for caching. The default is
+`GET`.
+
+[[fvzbq]][[GSDPG00317]][[superelements-79]]
+
+===== Superelements
+
+link:#bearh[`cache-mapping`] (`glassfish-web.xml`)
+
+[[fvyyj]][[GSDPG00318]][[subelements-77]]
+
+===== Subelements
+
+none - contains data
+
+[[beatm]][[GSDPG00164]][[idempotent-url-pattern]]
+
+=== `idempotent-url-pattern`
+
+Specifies a URL pattern for idempotent requests.
+
+[[fvzaj]][[GSDPG00503]][[superelements-80]]
+
+==== Superelements
+
+link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`)
+
+[[fvzea]][[GSDPG00504]][[subelements-78]]
+
+==== Subelements
+
+none
+
+[[fvyxx]][[GSDPG00505]][[attributes-18]]
+
+==== Attributes
+
+The following table describes attributes for the
+`idempotent-url-pattern` element.
+
+[[GSDPG928]][[sthref112]][[fvzca]]
+
+
+Table C-69 `idempotent-url-pattern` Attributes
+
+[width="181%",cols="12%,49%,39%",options="header",]
+|===
+|Attribute |Default |Description
+|`url-pattern`
+|none
+|Specifies a URL pattern, which can contain wildcards.
+The URL pattern must conform to the mappings specified in section SRV 11.2 of the Servlet 2.4 specification.
+
+|`no-of-retries`
+|`-1`
+|(optional) Specifies the number of times the load balancer retries an idempotent request.
+A value of `-1` indicates infinite retries.
+|===
+
+
+[[fvyxy]][[GSDPG00506]][[example-6]]
+
+==== Example
+
+The following example specifies that all requests for the URI
+`sun-java/*` are idempotent.
+
+[source,xml]
+----
+<idempotent-url-pattern url-pattern="sun_java/*" no-of-retries="10"/>
+----
+
+[[beatn]][[GSDPG00165]][[integrity]]
+
+=== `integrity`
+
+Specifies if the target supports integrity-protected messages. The
+values are `NONE`, `SUPPORTED`, or `REQUIRED`.
+
+[[fvzdj]][[GSDPG00507]][[superelements-81]]
+
+==== Superelements
+
+link:#beayh[`transport-config`] (`glassfish-ejb-jar.xml`)
+
+[[fvzdv]][[GSDPG00508]][[subelements-79]]
+
+==== Subelements
+
+none - contains data
+
+[[beato]][[GSDPG00166]][[ior-security-config]]
+
+=== `ior-security-config`
+
+Specifies the security information for the interoperable object
+reference (IOR).
+
+[[fvzbe]][[GSDPG00509]][[superelements-82]]
+
+==== Superelements
+
+link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
+
+[[fvzbv]][[GSDPG00510]][[subelements-80]]
+
+==== Subelements
+
+The following table describes subelements for the `ior-security-config`
+element.
+
+[[GSDPG929]][[sthref113]][[fvyyk]]
+
+
+Table C-70 `ior-security-config` Subelements
+
+[width="100%",cols="20%,11%,69%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beayh[`transport-config`]
+
+
+ |zero or one |Specifies the security information for transport.
+
+a|
+link:#beaqw[`as-context`]
+
+
+ |zero or one |Specifies the authentication mechanism used to
+authenticate the client. If specified, it is `USERNAME_PASSWORD`.
+
+a|
+link:#beaxb[`sas-context`]
+
+
+ |zero or one |Describes the sas-context fields.
+|===
+
+
+[[beatp]][[GSDPG00167]][[is-cache-overflow-allowed]]
+
+=== `is-cache-overflow-allowed`
+
+This element is deprecated. Do not use.
+
+[[fvzcu]][[GSDPG00511]][[superelements-83]]
+
+==== Superelements
+
+link:#beara[`bean-cache`] (`glassfish-ejb-jar.xml`)
+
+[[beatq]][[GSDPG00168]][[is-one-one-cmp]]
+
+=== `is-one-one-cmp`
+
+This element is not used.
+
+[[fvyww]][[GSDPG00512]][[superelements-84]]
+
+==== Superelements
+
+link:#beart[`cmp`] (`glassfish-ejb-jar.xml`)
+
+[[beatr]][[GSDPG00169]][[is-read-only-bean]]
+
+=== `is-read-only-bean`
+
+Specifies that this entity bean is a read-only bean if `true`. If this
+element is absent, the default value of `false` is used.
+
+[[fvzan]][[GSDPG00513]][[superelements-85]]
+
+==== Superelements
+
+link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
+
+[[fvyvx]][[GSDPG00514]][[subelements-81]]
+
+==== Subelements
+
+none - contains data
+
+[[beatt]][[GSDPG00170]][[java-method]]
+
+=== `java-method`
+
+Specifies a method.
+
+[[fvyyw]][[GSDPG00515]][[superelements-86]]
+
+==== Superelements
+
+link:#beaut[`message`] (`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
+`glassfish-application-client.xml`)
+
+[[fvyvo]][[GSDPG00516]][[subelements-82]]
+
+==== Subelements
+
+The following table describes subelements for the `java-method` element.
+
+[[GSDPG930]][[sthref114]][[fvzdu]]
+
+
+Table C-71 `java-method` Subelements
+
+[width="100%",cols="30%,14%,56%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beavb[`method-name`]
+
+
+ |only one |Specifies a method name.
+
+a|
+link:#beavd[`method-params`]
+
+
+ |zero or one |Specifies fully qualified Java type names of method
+parameters.
+|===
+
+
+[[gauax]][[GSDPG00171]][[java-web-start-access]]
+
+=== `java-web-start-access`
+
+Specifies changes to default Java Web Start parameters for an embedded
+or stand-alone application client module.
+
+[[gauba]][[GSDPG00517]][[superelements-87]]
+
+==== Superelements
+
+link:#beaxx[`glassfish-application-client`]
+(`glassfish-application-client.xml`)
+
+[[gauav]][[GSDPG00518]][[subelements-83]]
+
+==== Subelements
+
+The following table describes subelements for the
+`java-web-start-access` element.
+
+[[GSDPG931]][[sthref115]][[gauaw]]
+
+
+Table C-72 `java-web-start-access` subelements
+
+[width="100%",cols="15%,11%,74%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beasg[`context-root`]
+
+
+ |zero or one a|
+Contains the context root for the Java Web Start enabled application
+client module. If none is specified, a default is generated.
+
+The default for a web module is as follows:
+
+[source]
+----
+http://host:port/app-name/relative-URI-to-appclient-jar
+----
+
+The default for a stand-alone application client module is as follows:
+
+[source]
+----
+http://host:port/module-name
+----
+
+If the `module-name` is not specified during deployment, the name of the
+EAR or JAR file without the extension is used. If the web module is not
+in EAR or JAR file format, a name is generated and written to the server
+log.
+
+a|
+link:#gaubh[`eligible`]
+
+
+ |zero or one |Specifies whether the application client module is
+eligible to be Java Web Start enabled. Allowed values are `true` (the
+default) and `false`.
+
+a|
+link:#gbgdw[`vendor`]
+
+
+ |zero or one |Specifies the name of the vendor as it appears in Java
+Web Start download and launch screens. The default value is
+`Application Client`.
+
+a|
+link:#gkhun[`jnlp-doc`]
+
+
+ |zero or one |Specifies the name of a custom JNLP file. If none is
+specified, a default JNLP file is generated.
+|===
+
+
+[[giyil]][[GSDPG00172]][[jdbc-connection-pool]]
+
+=== `jdbc-connection-pool`
+
+Defines the attributes and properties that are required for creating a
+JDBC connection pool.
+
+[[GSDPG932]][[sthref116]]
+
+
+[[superelements-88]]
+==== Superelements
+
+link:#giyiy[`resources`] (`glassfish-resources.xml`)
+
+[[GSDPG933]][[sthref117]]
+
+
+[[subelements-84]]
+==== Subelements
+
+The following table describes subelements for the `jdbc-connection-pool`
+element.
+
+[[GSDPG934]][[sthref118]][[sthref119]]
+
+
+Table C-73 `jdbc-connection-pool` Subelements
+
+[width="100%",cols="25%,12%,63%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beaso[`description`]
+
+
+ |zero or one |Contains a text description of this element.
+a|
+link:#beavx[`property` (with attributes)]
+
+
+ |zero or more |Specifies a property or a variable.
+|===
+
+
+[[GSDPG935]][[sthref120]]
+
+
+[[attributes-19]]
+==== Attributes
+
+The following table describes attributes for the `jdbc-connection-pool`
+element. Changing the following attributes requires a server restart or
+the redeployment or disabling and re-enabling of applications that refer
+to the resource: `datasource-classname`, `associate-with-thread`,
+`lazy-connection-association`, and `lazy-connection-enlistment`.
+
+[[GSDPG936]][[sthref121]][[sthref122]]
+
+
+Table C-74 `jdbc-connection-pool` Attributes
+
+[width="181%",cols="24%,49%,27%",options="header",]
+|===
+|Attribute |Default |Description
+|`name` |none |Specifies the name of the connection pool. A
+link:#giyhm[`jdbc-resource`] element's `pool-name` attribute refers to
+this `name`.
+
+|`datasource-classname` |none |(optional) Specifies the class name of
+the associated vendor-supplied data source. This class must implement
+javax.sql.DataSource, javax.sql.XADataSource ,
+javax.sql.ConnectionPoolDatasource , or a combination.
+
+|`res-type` |none |(optional) Specifies the interface the data source
+class implements. The value of this attribute can be
+javax.sql.DataSource, javax.sql.XADataSource ,
+javax.sql.ConnectionPoolDatasource , or java.sql.Driver. To support
+configuration of JDBC drivers and applications that use java.sql.Driver
+implementations, set this attribute to java.sql.Driver . This attribute
+must be specified to avoid ambiguity when a data source class implements
+two or more of these interfaces or when a `driver-classname` is
+specified. An error occurs if this attribute has a legal value and the
+indicated interface is not implemented by the data source class.
+
+|`driver-classname` |none |(optional) Specifies the vendor-supplied
+JDBC driver class name. This driver must implement the java.sql.Driver
+interface.
+
+|`ping` |`false` |(optional) Specifies whether to ping the pool during
+pool creation or reconfiguration to identify and warn of any erroneous
+attribute values.
+
+|`steady-pool-size` |`8` |(optional) Specifies the initial and minimum
+number of connections maintained in the pool.
+
+|`max-pool-size` |`32` |(optional) Specifies the maximum number of
+connections that can be created to satisfy client requests.
+
+|`max-wait-time-in-millis` |`60000` |(optional) Specifies the amount
+of time, in milliseconds, that the caller is willing to wait for a
+connection. If `0`, the caller is blocked indefinitely until a resource
+is available or an error occurs.
+
+|`pool-resize-quantity` |`2` a|
+(optional) Specifies the number of idle connections to be destroyed if
+the existing number of connections is above the `steady-pool-size`
+(subject to the `max-pool-size` limit).
+
+This is enforced periodically at the `idle-timeout-in-seconds` interval.
+An idle connection is one that has not been used for a period of
+`idle-timeout-in-seconds`. When the pool size reaches
+`steady-pool-size`, connection removal stops.
+
+|`idle-timeout-in-seconds` |`300` a|
+(optional) Specifies the maximum time that a connection can remain idle
+in the pool. After this amount of time, the pool can close this
+connection.
+
+This timeout value must be kept shorter than the server side (database)
+timeout value to prevent the accumulation of unusable connections in the
+application.
+
+|`transaction-isolation-level` |default JDBC driver isolation level a|
+(optional) Specifies the transaction isolation level on the pooled
+database connections. Allowed values are `read-uncommitted`,
+`read-committed` , `repeatable-read`, or `serializable`.
+
+Applications that change the isolation level on a pooled connection
+programmatically risk polluting the pool, which can lead to errors. See
+`is-isolation-level-guaranteed` for more details.
+
+|`is-isolation-level-guaranteed` |`true` |(optional) Applicable only
+when `transaction-``isolation-``level` is explicitly set. If `true`,
+every connection obtained from the pool is guaranteed to have the
+desired isolation level. This might impact performance on some JDBC
+drivers. Only set this attribute to `false` if you are certain that the
+hosted applications do not return connections with altered isolation
+levels.
+
+|`is-connection-validation-required` |`false` |(optional) Specifies
+whether connections have to be validated before being given to the
+application. If a resource's validation fails, it is destroyed, and a
+new resource is created and returned.
+
+|`connection-validation-method` |`table` a|
+(optional) Legal values are as follows:
+
+* `auto-commit`, which uses
+`Connection.``setAutoCommit``(Connection.``getAutoCommit())`
+* `meta-data`, which uses `Connection.getMetaData()`
+* `table`, which performs a query on a table specified in the
+`validation-table-name` attribute
+* `custom-validation`, which uses a user-defined validation mechanism
+specified by the custom implementation class in `validation-classname`.
+
+Because many JDBC drivers cache the results of `auto-commit` and
+`meta-data` calls, they do not always provide reliable validations.
+Check with the driver vendor to determine whether these calls are cached
+or not.
+
+The `table` must exist and be accessible, but it doesn't require any
+rows. Do not use an existing table that has a large number of rows or a
+table that is already frequently accessed.
+
+|`validation-table-name` |none |(optional) Specifies the table name
+to be used to perform a query to validate a connection. This parameter
+is mandatory if and only if `connection-``validation-``method` is set to
+`table`.
+
+|`validation-classname` |none a|
+(optional) Specifies the custom validation implementation class name.
+This parameter is mandatory if `connection-validation-method` is set to
+`custom-validation`. The classname provided must be accessible to the
+{productName}. The specified class must implement the
+org.glassfish.api.jdbc.ConnectionValidation interface.
+
+{productName} provides the following custom validation class
+templates for MSSQL, DB2, and Sybase databases. All of them implement
+the org.glassfish.api.jdbc.ConnectionValidation interface.
+
+* `org.glassfish.api.jdbc.MSSQLConnectionValidation`
+* `org.glassfish.api.jdbc.DB2ConnectionValidation`
+* `org.glassfish.api.jdbc.SybaseConnectionValidation`
+
+|`init-sql` |none |(optional) Specifies an SQL string to be executed
+whenever a connection is created (not reused) in the pool. This
+initializes the state of the connection.
+
+|`fail-all-connections` |`false` |(optional) If `true`, closes all
+connections in the pool if a single validation check fails. This
+parameter is mandatory if and only if
+`is-connection-validation-required` is set to `true`.
+
+|`non-transactional-connections` |`false` |(optional) If `true`,
+non-transactional connections can be made to the JDBC connection pool.
+These connections are not automatically enlisted with the transaction
+manager.
+
+|`allow-non-component-callers` |`false` |(optional) If `true`,
+non-Java-EE components, such as servlet filters, lifecycle modules, and
+third party persistence managers, can use this JDBC connection pool. The
+returned connection is automatically enlisted with the transaction
+context obtained from the transaction manager. Standard Jakarta EE
+components can also use such pools. Connections obtained by
+non-component callers are not automatically closed at the end of a
+transaction by the container. They must be explicitly closed by the
+caller.
+
+|`validate-atmost-once-period-in-seconds` |`0` a|
+(optional) Specifies the time interval within which a connection is
+validated at most once. Minimizes the number of validation calls.
+
+A value of zero implies that {productName} does not attempt to
+minimize the number of validation requests by a connection. That is, a
+value of zero disables this attribute. As a result, the same connection
+is validated every time the application acquires the connection.
+
+|`connection-leak-timeout-in-seconds` |`0` a|
+(optional) Detects potential connection leaks by the application. A
+connection that is not returned back to the pool by the application
+within the specified period is assumed to be potentially leaking, and a
+stack trace of the caller is logged. A zero value disables leak
+detection. A nonzero value enables leak tracing.
+
+Use this attribute along with `connection-leak-reclaim` to avoid
+potential connection leaks from the application.
+
+|`connection-leak-reclaim` |`false` |(optional) If `true`, the pool
+will reclaim a connection after `connection-leak-timeout-in-seconds`
+occurs.
+
+|`connection-creation-retry-attempts` |`0` |(optional) Specifies the
+number of attempts to create a new connection in case of a failure.
+
+|`connection-creation-retry-interval-``in-seconds` |`10` |(optional)
+Specifies the time interval between attempts to create a connection when
+`connection-creation-retry-attempts` is greater than `0`.
+
+|`statement-leak-timeout-in-seconds` |`0` a|
+(optional) Detects potential statement leaks by the application. A
+statement that is not closed by the application within the specified
+period is assumed to be potentially leaking, and a stack trace of the
+caller is logged. A zero value disables leak detection. A nonzero value
+enables leak tracing.
+
+Use this attribute along with `statement-leak-reclaim` to avoid
+potential statement leaks from the application.
+
+|`statement-leak-reclaim` |`false` |(optional) If `true`, the reclaim
+of a statement after `statement-leak-timeout-in-seconds` occurs.
+
+|`statement-timeout-in-seconds` |`-1` a|
+(optional) Sets the query timeout property of a statement to enable
+termination of abnormally long running queries. The default value of
+`-1` disables this feature.
+
+An abnormally long running JDBC query executed by an application may
+leave it in a hanging state unless a timeout is explicitly set on the
+statement. This attribute guarantees that all queries automatically time
+out if not completed within the specified period. When statements are
+created, the `queryTimeout` is set according to the value specified in
+this attribute. This works only when the underlying JDBC driver supports
+`queryTimeout` for `Statement`, `PreparedStatement`,
+`CallableStatement`, and `ResultSet`.
+
+|`lazy-connection-enlistment` |`false` |(optional) If `true`, a
+connection is not enlisted in a transaction until it is used. If
+`false`, any connection object available to a transaction is enlisted in
+the transaction.
+
+|`lazy-connection-association` |`false` |(optional) If `true`, a
+physical connection is not associated with a logical connection until it
+is used. If `false`, a physical connection is associated with a logical
+connection even before it is used.
+
+|`associate-with-thread` |`false` a|
+(optional) Specifies whether connections are associated with the thread
+to enable the thread to reuse the connections. If `true`, allows
+connections to be saved as `ThreadLocal` in the calling thread.
+Connections get reclaimed only when the calling thread dies or when the
+calling thread is not in use and the pool has run out of connections. If
+`false`, the thread must obtain a connection from the pool each time the
+thread requires a connection.
+
+This attribute associates connections with a thread such that when the
+same thread is in need of connections, it can reuse the connections
+already associated with that thread. In this case, the overhead of
+getting connections from the pool is avoided. However, when this value
+is set to `true`, you should verify that the value of the
+`max-pool-size` attribute is comparable to the `max-thread-pool-size`
+attribute of the associated thread pool. If the `max-thread-pool-size`
+value is much higher than the `max-pool-size` value, a lot of time is
+spent associating connections with a new thread after dissociating them
+from an older one. Use this attribute in cases where the thread pool
+should reuse connections to avoid this overhead.
+
+| | |
+
+|`match-connections` |`false` a|
+(optional) Specifies whether a connection that is selected from the pool
+should be matched with the connections with certain credentials. If
+`true`, enables connection matching. You can set to `false` if
+connections are homogeneous.
+
+If the connection pool is used by applications that have multiple user
+credentials, `match-connections` must be `true`. The connection pool
+matches the request's credential with the connections in the pool and
+returns a matched connection for use. For new requests with different
+credentials, unmatched free connections are automatically purged to
+provide new connections to satisfy the new requests. This attribute need
+not be `true` if it is known that there is only one credential used by
+the applications and therefore the pool has homogeneous connections.
+
+|`max-connection-usage-count` |`0` |(optional) Specifies the number of
+times a connections is reused by the pool, after which it is closed. A
+zero value disables this feature. By limiting the maximum number of
+times a connection can be reused, you can avoid statement leaks if the
+application does not close statements.
+
+|`sql-trace-listeners` |none |(optional) Specifies that SQL statements
+executed by applications need to be traced. Helps administrators analyze
+the statements. Expects as a value a comma-separated list of listener
+implementation class names. Enables easy filtering of log messages for
+the SQL statements. SQL trace listeners must implement the
+org.glassfish.api.jdbc.SQLTraceListener interface.
+
+|`statement-cache-size` |`0` |(optional) Specifies the number of
+statements to be cached using the `lru` (Least Recently Used) caching
+mechanism. The default value of `0` disables statement caching.
+
+|`pooling` |`true` |(optional) If `false`, disables connection pooling.
+
+|`wrap-jdbc-objects` |`true` a|
+(optional) If `true`, wrapped JDBC objects are returned for `Statement`,
+`PreparedStatement`, `CallableStatement`, `ResultSet`, and
+`DatabaseMetaData`.
+
+This option ensures that `Statement.getConnection()` is the same as
+`DataSource.getConnection()`. Therefore, this option should be `true`
+when both `Statement.getConnection()` and `DataSource.getConnection()`
+are done. The default is `false` to avoid breaking existing
+applications.
+
+|===
+
+
+[[GSDPG937]][[sthref123]]
+
+
+[[glassfish-server-properties]]
+==== {productName} Properties
+
+The following table describes properties for the `jdbc-connection-pool`
+element that are specific to {productName}.
+
+[[GSDPG938]][[sthref124]][[sthref125]]
+
+
+Table C-75 `jdbc-connection-pool` Database Properties
+
+[width="172%",cols="18%,46%,36%",options="header",]
+|===
+|Property |Default |Description
+|`dynamic-reconfiguration-wait-timeout-in-seconds` |none a|
+Specifies the timeout for dynamic reconfiguration of the pool.
+In-progress connection requests must complete before this timeout
+expires or they must be retried. New connection requests wait for this
+timeout to expire before acquiring connections to the reconfigured pool.
+If this property exists and has a positive value, it is enabled.
+
+If this property is not set and pool reconfiguration results in pool
+recreation, in-progress connection requests must be retried.
+
+|`number-of-top-queries-to-report` |`10` a|
+Specifies the number of most frequently used queries to display. For
+example, the default value of `10` displays the top ten queries.
+
+This property is disabled when `jdbc-connection-pool` monitoring is set
+to `LOW` or `OFF`. It is enabled when `jdbc-connection-pool` monitoring
+is set to `HIGH` and the `sql-trace-listeners` attribute is set.
+
+|`time-to-keep-queries-in-minutes` |`5` a|
+Specifies the time to retain queries in a cache before they are purged.
+
+This property is disabled when `jdbc-connection-pool` monitoring is set
+to `LOW` or `OFF`. It is enabled when `jdbc-connection-pool` monitoring
+is set to `HIGH` and the `sql-trace-listeners` attribute is set.
+
+|===
+
+
+[[GSDPG939]][[sthref126]]
+
+
+[[database-properties]]
+==== Database Properties
+
+Most JDBC drivers allow use of standard property lists to specify the
+user, password, and other resource configuration information. Although
+properties are optional with respect to the {productName}, some
+properties might be necessary for most databases. For details, see the
+JDBC 4.0 Standard Extension API.
+
+When properties are specified, they are passed to the vendor's data
+source class (specified by the `datasource-classname` attribute) as is
+using setName(value) methods.
+
+The `user` and `password` properties are used as the default principal
+if container managed authentication is specified and a
+`default-resource-principal` is not found in the application deployment
+descriptors.
+
+The following table describes some common properties for the
+`jdbc-connection-pool` element.
+
+Changing JDBC driver properties requires a server restart.
+
+[[GSDPG940]][[sthref127]][[sthref128]]
+
+
+Table C-76 `jdbc-connection-pool` Database Properties
+
+[width="100%",cols="19%,81%",options="header",]
+|===
+|Property |Description
+|`user` |Specifies the user name for connecting to the database.
+
+|`password` |Specifies the password for connecting to the database.
+
+|`databaseName` |Specifies the database for this connection pool.
+
+|`serverName` |Specifies the database server for this connection pool.
+
+|`port` |Specifies the port on which the database server listens for
+requests.
+
+|`networkProtocol` |Specifies the communication protocol.
+
+|`roleName` |Specifies the initial SQL role name.
+
+|`datasourceName` |Specifies an underlying XADataSource, or a
+ConnectionPoolDataSource if connection pooling is done.
+
+|`description` |Specifies a text description.
+
+|`url` |Specifies the URL for this connection pool. Although this is not
+a standard property, it is commonly used.
+|===
+
+
+[[giyhm]][[GSDPG00173]][[jdbc-resource]]
+
+=== `jdbc-resource`
+
+Defines a JDBC (javax.sql.DataSource) resource.
+
+[[GSDPG941]][[sthref129]]
+
+
+[[superelements-89]]
+==== Superelements
+
+link:#giyiy[`resources`] (`glassfish-resources.xml`)
+
+[[GSDPG942]][[sthref130]]
+
+
+[[subelements-85]]
+==== Subelements
+
+The following table describes subelements for the `jdbc-resource`
+element.
+
+[[GSDPG943]][[sthref131]][[sthref132]]
+
+
+Table C-77 `jdbc-resource` Subelements
+
+[width="100%",cols="25%,12%,63%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beaso[`description`]
+
+
+ |zero or one |Contains a text description of this element.
+a|
+link:#beavx[`property` (with attributes)]
+
+
+ |zero or more |Specifies a property or a variable.
+|===
+
+
+[[GSDPG944]][[sthref133]]
+
+
+[[attributes-20]]
+==== Attributes
+
+The following table describes attributes for the `jdbc-resource`
+element.
+
+[[GSDPG945]][[sthref134]][[sthref135]]
+
+
+Table C-78 `jdbc-resource` Attributes
+
+[width="172%",cols="9%,46%,45%",options="header",]
+|===
+|Attribute |Default |Description
+|`jndi-name` |none |Specifies the JNDI name for the resource.
+
+|`description` |none |(optional) Specifies a text description of this
+element.
+
+|`pool-name` |none |Specifies the `name` of the associated
+link:#giyil[`jdbc-connection-pool`].
+
+|`object-type` |`user` a|
+(optional) Defines the type of the resource. Allowed values are:
+
+* `system-all` - A system resource for all server instances and the
+domain application server.
+* `system-admin` - A system resource only for the domain application
+server.
+* `system-instance` - A system resource for all server instances only.
+* `user` - A user resource.
+
+|`enabled` |`true` |(optional) Determines whether this resource is
+enabled at runtime.
+|===
+
+
+[[beatu]][[GSDPG00174]][[jms-durable-subscription-name]]
+
+=== `jms-durable-subscription-name`
+
+Specifies the durable subscription associated with a message-driven bean
+class. Only applies to the Java Message Service Topic Destination type,
+and only when the message-driven bean deployment descriptor subscription
+durability is Durable.
+
+[[fvzdb]][[GSDPG00519]][[superelements-90]]
+
+==== Superelements
+
+link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
+
+[[fvzdp]][[GSDPG00520]][[subelements-86]]
+
+==== Subelements
+
+none - contains data
+
+[[beatv]][[GSDPG00175]][[jms-max-messages-load]]
+
+=== `jms-max-messages-load`
+
+Specifies the maximum number of messages to load into a Java Message
+Service session at one time for a message-driven bean to serve. The
+default is 1.
+
+[[fvyzx]][[GSDPG00521]][[superelements-91]]
+
+==== Superelements
+
+link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
+
+[[fvyxq]][[GSDPG00522]][[subelements-87]]
+
+==== Subelements
+
+none - contains data
+
+[[beatw]][[GSDPG00176]][[jndi-name]]
+
+=== `jndi-name`
+
+Specifies the absolute `jndi-name` of a URL resource or a resource.
+
+For entity beans and session beans, this value specifies the global JNDI
+name of the `EJBHome` object. It is only needed if the entity or session
+bean exposes a remote view.
+
+For JMS message-driven beans, this is the JNDI name of the JMS resource
+from which the message-driven bean consumes JMS messages. This
+information is alternatively specified within the
+link:#beaqs[`activation-config`] subelement of the
+link:#beaus[`mdb-resource-adapter`] element. For more information about
+JMS resources, see "link:application-development-guide/jms.html#GSDVG00020[Using the Java Message Service]" in
+{productName} Application Development Guide.
+
+[[fvyyy]][[GSDPG00523]][[superelements-92]]
+
+==== Superelements
+
+link:#beasu[`ejb-ref`], link:#beauu[`message-destination`],
+link:#beawu[`resource-env-ref`], link:#beaww[`resource-ref`]
+(`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
+`glassfish-application-client.xml`); link:#bearv[`cmp-resource`],
+link:#beass[`ejb`], link:#beaur[`mdb-connection-factory`]
+(`glassfish-ejb-jar.xml`)
+
+[[fvywz]][[GSDPG00524]][[subelements-88]]
+
+==== Subelements
+
+none - contains data
+
+[[gkhun]][[GSDPG00177]][[jnlp-doc]]
+
+=== `jnlp-doc`
+
+Contains the name of a custom JNLP file, which modifies the behavior of
+a Java Web Start enabled application client module. If none is
+specified, a default JNLP file is generated.
+
+The value of this element is a relative path with the following format:
+
+[source]
+----
+[path-to-JAR-in-EAR!]path-to-JNLP-in-JAR
+----
+
+The default path-to-JAR-in-EAR is the current application client JAR
+file. For example, if the JNLP file is in the application client JAR
+file at `custom/myInfo.jnlp`, the element value would look like this:
+
+[source,xml]
+----
+<java-web-start-access>
+   <jnlp-doc>custom/myInfo.jnlp</jnlp-doc>
+</java-web-start-access>
+----
+
+If the application client is inside an EAR file, you can place the
+custom JNLP file inside another JAR file in the EAR. For example, if the
+JNLP file is in a JAR file at `other/myLib.jar`, the element value would
+look like this, with an exclamation point (`!`) separating the path to
+the JAR from the path in the JAR:
+
+[source,xml]
+----
+<java-web-start-access>
+   <jnlp-doc>other/myLib.jar!custom/myInfo.jnlp</jnlp-doc>
+</java-web-start-access>
+----
+
+For information about the allowed contents of a custom JNLP file, see
+"link:application-development-guide/java-clients.html#GSDVG00012[Developing Java Clients]" in {productName} Application Development Guide.
+
+[[gkhuj]][[GSDPG00525]][[superelements-93]]
+
+==== Superelements
+
+link:#gauax[`java-web-start-access`]
+(`glassfish-application-client.xml`)
+
+[[gkhtm]][[GSDPG00526]][[subelements-89]]
+
+==== Subelements
+
+none - contains data
+
+[[beatx]][[GSDPG00178]][[jsp-config]]
+
+=== `jsp-config`
+
+Specifies JSP configuration information.
+
+[[fvywi]][[GSDPG00527]][[superelements-94]]
+
+==== Superelements
+
+link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`)
+
+[[fvzcs]][[GSDPG00528]][[subelements-90]]
+
+==== Subelements
+
+The following table describes subelements for the `jsp-config` element.
+
+[[GSDPG946]][[sthref136]][[fvyzp]]
+
+
+Table C-79 `jsp-config` Subelements
+
+[width="100%",cols="37%,14%,49%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beavx[`property` (with attributes)]
+
+
+ |zero or more |Specifies a property, which has a name and a value.
+|===
+
+
+[[fvyzf]][[GSDPG00529]][[properties-8]]
+
+==== Properties
+
+The default property values are tuned for development of JSP files at
+the cost of performance. To maximize performance, set `jsp-config`
+properties to these non-default values:
+
+* `development` - `false` (as an alternative, set to `true` and give
+`modificationTestInterval` a large value)
+* `mappedfile` - `false`
+* `trimSpaces` - `true`
+* `suppressSmap` - `true`
+* `fork` - `false` (on Solaris)
+* `classdebuginfo` - `false`
+
+The following table describes properties for the `jsp-config` element.
+
+[[GSDPG947]][[sthref137]][[fvzde]]
+
+
+Table C-80 `jsp-config` Properties
+
+[width="100%",cols="29%,11%,60%",options="header",]
+|===
+|Property |Default |Description
+|`checkInterval` |`0` |If `development` is set to `false` and
+`checkInterval` is greater than zero, background compilations are
+enabled. The `checkInterval` is the time in seconds between checks to
+see if a JSP file needs to be recompiled.
+
+|`classdebuginfo` |`true` |Specifies whether the generated Java servlets
+are compiled with the debug option set (`-g` for `javac`).
+
+|`classpath` |created dynamically based on the current web application
+|Specifies the classpath to use when compiling generated servlets.
+
+|`compiler` |`javac` a|
+Specifies the compiler Ant uses to compile JSP files. See the Ant
+documentation for more information:
+
+`http://antinstaller.sourceforge.net/manual/manual/`
+
+|`compilerSourceVM` |Depends on {productName}'s Java runtime a|
+Specifies the JDK release with which source compatibility of the
+generated servlets is provided. Same as the `-source` release option of
+`javac`.
+
+For more information, see
+`http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/javac.html#options`.
+
+|`compilerTargetVM` |Depends on {productName}'s Java runtime a|
+Specifies the Virtual Machine for the Java platform (JVM software)
+version for which the servlet class files are generated. Same as the
+`-target` release option of `javac`.
+
+For more information, see
+`http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/javac.html#options`.
+
+|`defaultBufferNone` |`false` |If `true`, the default for the `buffer`
+attribute of the `page` directive is `none`.
+
+|`development` |`true` |If set to `true`, enables development mode,
+which allows JSP files to be checked for modification. Specify the
+frequency at which JSPs are checked using the `modificationTestInterval`
+property.
+
+|`dumpSmap` |`false` |If set to `true`, dumps SMAP information for JSR
+45 debugging to a file. Set to `false` if `suppressSmap` is `true`.
+
+|`enablePooling` |`true` |If set to `true`, tag handler pooling is
+enabled.
+
+|`enableTldValidation` |`false` |If set to `true`, all Tag Library
+Descriptor (TLD) files referenced by the web application are validated
+against their underlying schema or DTD file.
+
+|`errorOnUseBeanInvalidClassAttribute` |`false` |If set to `true`,
+issues an error when the value of the `class` attribute in a `useBean`
+action is not a valid bean class.
+
+|`fork` |`true` |Specifies that Ant forks the compiling of JSP files,
+using a JVM machine separate from the one in which Tomcat is running.
+
+|`genStrAsByteArray` |`true` |If `true`, text strings are generated as
+bytes (encoded with the page encoding), if the page is not buffered.
+
+|`genStrAsCharArray` |`false` |If set to `true`, generates text strings
+as `char` arrays, which improves performance in some cases.
+
+|`httpMethods` |`*` for all methods |Specifies a comma separated list of
+HTTP methods supported by the `JspServlet`.
+
+|`ieClassId` |`clsid:8AD9C840-``044E-11D1-B3E9-``00805F499D93`
+|Specifies the Java plug-in COM class ID for Internet Explorer. Used by
+the `<jsp:plugin>` tags.
+
+|`ignoreJspFragmentErrors` |`false` |If set to `true`, instructs the
+compiler to ignore any JSP precompilation errors pertaining to
+statically included JSP segments that, despite not being top level JSP
+files, use the `.jsp` or `.jspx` extension (instead of the recommended
+`.jspf`).
+
+|`initialCapacity` |`32` |Specifies the initial capacity of the
+`HashMap` that maps JSP files to their corresponding servlets.
+
+|`javaEncoding` |`UTF8` a|
+Specifies the encoding for the generated Java servlet. This encoding is
+passed to the Java compiler that is used to compile the servlet as well.
+By default, the web container tries to use `UTF8`. If that fails, it
+tries to use the `javaEncoding` value.
+
+For encodings, see:
+
+`http://docs.oracle.com/javase/7/docs/technotes/guides/intl/encoding.doc.html`
+
+|`keepgenerated` |`true` with JDK 5 and before and for `jspc`, otherwise
+`false` |If set to `true`, keeps the generated Java files. If `false`,
+deletes the Java files.
+
+|`mappedfile` |`true` |If set to `true`, generates static content with
+one print statement per input line, to ease debugging.
+
+|`modificationTestInterval` |`0` |Specifies the frequency in seconds at
+which JSPs are checked for modification. A value of `0` causes the JSP
+to be checked on every access. Used only if `development` is set to
+`true`.
+
+|`reload-interval` |`0` |Specifies the frequency in seconds at which JSP
+files are checked for modifications. Setting this value to `0` checks
+JSP files for modifications on every request. Setting this value to `-1`
+disables checks for JSP modifications and JSP recompilation.
+
+|`saveBytecode` |`true` for `jspc`, otherwise `false` |If `true`,
+generated byte code is saved to `.class` files? This option is
+meaningful only when the Java compiler API, JSR 199 (available with and
+used as the default on Java 6) is used for `javac` compilations.
+
+|`scratchdir` |The default work directory for the web application
+|Specifies the working directory created for storing all the generated
+code.
+
+|`suppressSmap` |`false` |If set to `true`, generation of SMAP
+information for JSR 45 debugging is suppressed.
+
+|`trimSpaces` |`false` |If set to `true`, trims white spaces in template
+text between actions or directives.
+
+|`usePrecompiled` |`false` a|
+If set to `true`, an accessed JSP file is not compiled. Its precompiled
+servlet class is used instead.
+
+It is assumed that JSP files have been precompiled, and their
+corresponding servlet classes have been bundled in the web application's
+`WEB-INF/lib` or `WEB-INF/classes` directory.
+
+|`xpoweredBy` |`true` |If set to `true`, the X-Powered-By response
+header is added by the generated servlet.
+|===
+
+
+[[gkhtr]][[GSDPG00179]][[keep-state]]
+
+=== `keep-state`
+
+If set to `true`, retains web sessions, stateful session bean instances,
+and persistently created EJB timers across redeployments. The
+`--keepstate` option of the link:reference-manual/redeploy.html#GSRFM00217[`redeploy`] subcommand
+takes precedence. The default for both is `false`.
+
+Some changes to an application between redeployments prevent this
+feature from working properly. For example, do not change the set of
+instance variables in the SFSB bean class.
+
+For web applications, this feature is applicable only if in the
+`glassfish-web-app.xml` file the `persistence-type` attribute of the
+link:#beaxq[`session-manager`] element is `file`.
+
+For stateful session bean instances, the persistence type without high
+availability is set in the server (the `sfsb-persistence-type`
+attribute) and must be set to `file`, which is the default and
+recommended value.
+
+If any active web session, SFSB instance, or EJB timer fails to be
+preserved or restored, none of these will be available when the
+redeployment is complete. However, the redeployment continues and a
+warning is logged.
+
+To preserve active state data, {productName} serializes the data and
+saves it in memory. To restore the data, the class loader of the newly
+redeployed application deserializes the data that was previously saved.
+
+[[gkhto]][[GSDPG00530]][[superelements-95]]
+
+==== Superelements
+
+link:#beaxw[`glassfish-application`] (`glassfish-application.xml`),
+link:#beayb[`glassfish-web-app`] (`glassfish-web-app.xml`),
+link:#beaya[`glassfish-ejb-jar`] (`glassfish-ejb-jar.xml`)
+
+[[gkhuk]][[GSDPG00531]][[subelements-91]]
+
+==== Subelements
+
+none - contains data
+
+[[beatz]][[GSDPG00180]][[key-field]]
+
+=== `key-field`
+
+Specifies a component of the key used to look up and extract cache
+entries. The web container looks for the named parameter, or field, in
+the specified scope.
+
+If this element is not present, the web container uses the Servlet Path
+(the path section that corresponds to the servlet mapping that activated
+the current request). See the Servlet 2.4 specification, section SRV
+4.4, for details on the Servlet Path.
+
+[[fvyvb]][[GSDPG00532]][[superelements-96]]
+
+==== Superelements
+
+link:#bearh[`cache-mapping`] (`glassfish-web.xml`)
+
+[[fvzal]][[GSDPG00533]][[subelements-92]]
+
+==== Subelements
+
+none
+
+[[fvzdn]][[GSDPG00534]][[attributes-21]]
+
+==== Attributes
+
+The following table describes attributes for the `key-field` element.
+
+[[GSDPG948]][[sthref138]][[fvyyi]]
+
+
+Table C-81 `key-field` Attributes
+
+[width="181%",cols="51%,11%,38%",options="header",]
+|===
+|Attribute |Default |Description
+|`name` |none |Specifies the input parameter name.
+
+|`scope` |`request.parameter` |(optional) Specifies the scope from which
+the input parameter is retrieved. Allowed values are
+`context.attribute`, `request.header`, `request.parameter`,
+`request.cookie`, `session.id`, and `session.attribute`.
+|===
+
+
+[[beaub]][[GSDPG00181]][[level]]
+
+=== `level`
+
+Specifies the name of a hierarchical fetch group. The name must be an
+integer. Fields and relationships that belong to a hierarchical fetch
+group of equal (or lesser) value are fetched at the same time. The value
+of level must be greater than zero. Only one is allowed.
+
+[[fvyvf]][[GSDPG00535]][[superelements-97]]
+
+==== Superelements
+
+link:#beatc[`fetched-with`] (`sun-cmp-mappings.xml`)
+
+[[fvywq]][[GSDPG00536]][[subelements-93]]
+
+==== Subelements
+
+none - contains data
+
+[[beauc]][[GSDPG00182]][[local-home-impl]]
+
+=== `local-home-impl`
+
+Specifies the fully-qualified class name of the generated `EJBLocalHome`
+`impl` class.
+
+
+[NOTE]
+====
+This value is automatically generated by the server at deployment or
+redeployment time. Do not specify it or change it after deployment.
+====
+
+
+[[fvyzo]][[GSDPG00537]][[superelements-98]]
+
+==== Superelements
+
+link:#beath[`gen-classes`] (`glassfish-ejb-jar.xml`)
+
+[[fvzah]][[GSDPG00538]][[subelements-94]]
+
+==== Subelements
+
+none - contains data
+
+[[beaud]][[GSDPG00183]][[local-impl]]
+
+=== `local-impl`
+
+Specifies the fully-qualified class name of the generated
+`EJBLocalObject` `impl` class.
+
+
+[NOTE]
+====
+This value is automatically generated by the server at deployment or
+redeployment time. Do not specify it or change it after deployment.
+====
+
+
+[[fvzcr]][[GSDPG00539]][[superelements-99]]
+
+==== Superelements
+
+link:#beath[`gen-classes`] (`glassfish-ejb-jar.xml`)
+
+[[fvzai]][[GSDPG00540]][[subelements-95]]
+
+==== Subelements
+
+none - contains data
+
+[[beaue]][[GSDPG00184]][[locale-charset-info]]
+
+=== `locale-charset-info`
+
+Deprecated. For backward compatibility only. Use the
+link:#beavn[`parameter-encoding`] subelement of
+link:#beayb[`glassfish-web-app`] instead. Specifies information about
+the application's internationalization settings.
+
+[[fvyvm]][[GSDPG00541]][[superelements-100]]
+
+==== Superelements
+
+link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`)
+
+[[fvzbi]][[GSDPG00542]][[subelements-96]]
+
+==== Subelements
+
+The following table describes subelements for the `locale-charset-info`
+element.
+
+[[GSDPG949]][[sthref139]][[fvyzd]]
+
+
+Table C-82 `locale-charset-info` Subelements
+
+[width="100%",cols="22%,12%,66%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beauf[`locale-charset-map`]
+
+
+ |one or more |Maps a locale and an agent to a character encoding.
+Provided for backward compatibility. Used only for request processing,
+and only if no `parameter-encoding` is defined.
+
+a|
+link:#beavn[`parameter-encoding`]
+
+
+ |zero or one |Determines the default request character encoding and how
+the web container decodes parameters from forms according to a hidden
+field value.
+|===
+
+
+[[fvywh]][[GSDPG00543]][[attributes-22]]
+
+==== Attributes
+
+The following table describes attributes for the `locale-charset-info`
+element.
+
+[[GSDPG950]][[sthref140]][[fvzcd]]
+
+
+Table C-83 `locale-charset-info` Attributes
+
+[width="181%",cols="13%,49%,38%",options="header",]
+|===
+|Attribute |Default |Description
+|`default-locale` |none |Although a value is required, the value is
+ignored. Use the `default-charset` attribute of the
+link:#beavn[`parameter-encoding`] element.
+|===
+
+
+[[beauf]][[GSDPG00185]][[locale-charset-map]]
+
+=== `locale-charset-map`
+
+Maps locales and agents to character encodings. Provided for backward
+compatibility. Used only for request processing. Used only if the
+character encoding is not specified in the request and cannot be derived
+from the optional link:#beavn[`parameter-encoding`] element. For
+encodings, see
+`http://docs.oracle.com/javase/7/docs/technotes/guides/intl/encoding.doc.html`.
+
+[[fvzbg]][[GSDPG00544]][[superelements-101]]
+
+==== Superelements
+
+link:#beaue[`locale-charset-info`] (`glassfish-web.xml`)
+
+[[fvywg]][[GSDPG00545]][[subelements-97]]
+
+==== Subelements
+
+The following table describes subelements for the `locale-charset-map`
+element.
+
+[[GSDPG951]][[sthref141]][[fvyvl]]
+
+
+Table C-84 `locale-charset-map` Subelements
+
+[width="100%",cols="25%,14%,61%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beaso[`description`]
+
+
+ |zero or one |Specifies an optional text description of a mapping.
+|===
+
+
+[[fvyzn]][[GSDPG00546]][[attributes-23]]
+
+==== Attributes
+
+The following table describes attributes for the `locale-charset-map`
+element.
+
+[[GSDPG952]][[sthref142]][[fvzbk]]
+
+
+Table C-85 `locale-charset-map` Attributes
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|===
+|Attribute |Default |Description
+|`locale` |none |Specifies the locale name.
+
+|`agent` |none |(optional) Specifies the type of client that interacts
+with the {productName}. For a given locale, different agents can have
+different preferred character encodings. The value of this attribute
+must exactly match the value of the `user-agent` HTTP request header
+sent by the client. See link:#fvzbb[Table C-86] for more information.
+
+|`charset` |none |Specifies the character encoding to which the locale
+maps.
+|===
+
+
+[[fvzct]][[GSDPG00547]][[example-agents]]
+
+==== Example Agents
+
+The following table specifies example `agent` attribute values.
+
+[[GSDPG953]][[sthref143]][[fvzbb]]
+
+
+Table C-86 Example `agent` Attribute Values
+
+[width="100%",cols="38%,62%",options="header",]
+|===
+|Agent |`user-agent` Header and `agent` Attribute Value
+|Internet Explorer 5.00 for Windows 2000
+|`Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)`
+
+|Netscape 4.7.7 for Windows 2000
+|`Mozilla/4.77 [en] (Windows NT 5.0; U)`
+
+|Netscape 4.7 for Solaris |`Mozilla/4.7 [en] (X11; u; Sun OS 5.6 sun4u)`
+|===
+
+
+[[beaug]][[GSDPG00186]][[localpart]]
+
+=== `localpart`
+
+Specifies the local part of a QNAME.
+
+[[fvzad]][[GSDPG00548]][[superelements-102]]
+
+==== Superelements
+
+link:#beaxj[`service-qname`], link:#beayx[`wsdl-port`]
+(`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
+`glassfish-application-client.xml`)
+
+[[fvyzb]][[GSDPG00549]][[subelements-98]]
+
+==== Subelements
+
+none - contains data
+
+[[beauh]][[GSDPG00187]][[lock-when-loaded]]
+
+=== `lock-when-loaded`
+
+Places a database update lock on the rows corresponding to the bean
+whenever the bean is loaded. How the lock is placed is
+database-dependent. The lock is released when the transaction finishes
+(commit or rollback). While the lock is in place, other database users
+have read access to the bean.
+
+[[fvyze]][[GSDPG00550]][[superelements-103]]
+
+==== Superelements
+
+link:#beasd[`consistency`] (`sun-cmp-mappings.xml`)
+
+[[fvyyl]][[GSDPG00551]][[subelements-99]]
+
+==== Subelements
+
+none - element is present or absent
+
+[[beaui]][[GSDPG00188]][[lock-when-modified]]
+
+=== `lock-when-modified`
+
+This element is not implemented. Do not use.
+
+[[fvyyc]][[GSDPG00552]][[superelements-104]]
+
+==== Superelements
+
+link:#beasd[`consistency`] (`sun-cmp-mappings.xml`)
+
+[[beauj]][[GSDPG00189]][[log-service]]
+
+=== `log-service`
+
+Specifies configuration settings for the log file.
+
+[[fvyyv]][[GSDPG00553]][[superelements-105]]
+
+==== Superelements
+
+link:#bearr[`client-container`] (`sun-acc.xml`)
+
+[[fvywo]][[GSDPG00554]][[subelements-100]]
+
+==== Subelements
+
+The following table describes subelements for the `log-service` element.
+
+[[GSDPG954]][[sthref144]][[fvzdx]]
+
+
+Table C-87 `log-service` subelement
+
+[width="100%",cols="37%,15%,48%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beavx[`property` (with attributes)]
+
+
+ |zero or more |Specifies a property, which has a name and a value.
+|===
+
+
+[[fvyzl]][[GSDPG00555]][[attributes-24]]
+
+==== Attributes
+
+The following table describes attributes for the `log-service` element.
+
+[[GSDPG955]][[sthref145]][[fvzbn]]
+
+
+Table C-88 `log-service` attributes
+
+[width="100%",cols="12%,32%,56%",options="header",]
+|===
+|Attribute |Default |Description
+|`log-file` |your-ACC-dir`/logs/client.log` |(optional) Specifies the
+file where the application client container logging information is
+stored.
+
+|`level` |`SEVERE` |(optional) Sets the base level of severity. Messages
+at or above this setting get logged to the log file.
+|===
+
+
+[[beauk]][[GSDPG00190]][[login-config]]
+
+=== `login-config`
+
+Specifies the authentication configuration for an EJB web service
+endpoint. Not needed for servlet web service endpoints. A servlet's
+security configuration is contained in the `web.xml` file.
+
+[[fvywb]][[GSDPG00556]][[superelements-106]]
+
+==== Superelements
+
+link:#beayv[`webservice-endpoint`] (`glassfish-web.xml`,
+`glassfish-ejb-jar.xml`)
+
+[[fvyxg]][[GSDPG00557]][[subelements-101]]
+
+==== Subelements
+
+The following table describes subelements for the `login-config`
+element.
+
+[[GSDPG956]][[sthref146]][[fvzap]]
+
+
+Table C-89 `login-config` subelements
+
+[width="100%",cols="30%,15%,55%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beaqx[`auth-method`]
+
+
+ |only one |Specifies the authentication method.
+
+a|
+link:#beawi[`realm`]
+
+
+ |zero or one |Specifies the name of the realm used to process all
+authentication requests.
+|===
+
+
+[[giyik]][[GSDPG00191]][[mail-resource]]
+
+=== `mail-resource`
+
+Defines a Jakarta Mail (`jakarta.mail.Session`) resource.
+
+[[GSDPG957]][[sthref147]]
+
+
+[[superelements-107]]
+==== Superelements
+
+link:#giyiy[`resources`] (`glassfish-resources.xml`)
+
+[[GSDPG958]][[sthref148]]
+
+
+[[subelements-102]]
+==== Subelements
+
+The following table describes subelements for the `mail-resource`
+element.
+
+[[GSDPG959]][[sthref149]][[sthref150]]
+
+
+Table C-90 `mail-resource` Subelements
+
+[width="100%",cols="25%,12%,63%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beaso[`description`]
+
+
+ |zero or one |Contains a text description of this element.
+a|
+link:#beavx[`property` (with attributes)]
+
+
+ |zero or more |Specifies a property or a variable.
+|===
+
+
+[[GSDPG960]][[sthref151]]
+
+
+[[attributes-25]]
+==== Attributes
+
+The following table describes attributes for the `mail-resource`
+element.
+
+[[GSDPG961]][[sthref152]][[sthref153]]
+
+
+Table C-91 `mail-resource` Attributes
+
+[width="100%",cols="23%,21%,56%",options="header",]
+|===
+|Attribute |Default |Description
+|`jndi-name` |none |Specifies the JNDI name for the resource.
+
+|`store-protocol` |`imap` |(optional) Specifies the storage protocol
+service, which connects to a mail server, retrieves messages, and saves
+messages in folder(s). Allowed values are `imap`, `pop3`, `imaps`, and
+`pop3s` .
+
+|`store-protocol-class` |`com.sun.mail.imap.IMAPStore` a|
+(optional) Specifies the service provider implementation class for
+storage. Allowed values are:
+
+`com.sun.mail.imap.IMAPStore`
+
+`com.sun.mail.pop3.POP3Store`
+
+`com.sun.mail.imap.IMAPSSLStore`
+
+`com.sun.mail.pop3.POP3SSLStore`
+
+|`transport-protocol` |`smtp` |(optional) Specifies the transport
+protocol service, which sends messages. Allowed values are `smtp` and
+`smtps`.
+
+|`transport-protocol-class` |`com.sun.mail.smtp.SMTPTransport` a|
+(optional) Specifies the service provider implementation class for
+transport. Allowed values are:
+
+`com.sun.mail.smtp.SMTPTransport`
+
+`com.sun.mail.smtp.SMTPSSLTransport`
+
+|`host` |none |The mail server host name.
+
+|`user` |none |The mail server user name.
+
+|`from` |none |The email address the mail server uses to indicate the
+message sender.
+
+|`debug` |`false` |(optional) Determines whether debugging for this
+resource is enabled.
+
+|`object-type` |`user` a|
+(optional) Defines the type of the resource. Allowed values are:
+
+* `system-all` - A system resource for all server instances and the
+domain application server.
+* `system-admin` - A system resource only for the domain application
+server.
+* `system-instance` - A system resource for all server instances only.
+* `user` - A user resource.
+
+|`enabled` |`true` |(optional) Determines whether this resource is
+enabled at runtime.
+|===
+
+
+[[GSDPG962]][[sthref154]]
+
+
+[[properties-9]]
+==== Properties
+
+You can set properties for the `mail-resource` element and then get
+these properties in a Jakarta Mail `Session` object later. Every property
+name must start with a `mail-` prefix. The {productName} changes the
+dash (`-`) character to a period (`.`) in the name of the property, then
+saves the property to the `MailConfiguration` and Jakarta Mail `Session`
+objects. If the name of the property doesn't start with `mail-`, the
+property is ignored.
+
+For example, to define the property `mail.password` in a Jakarta Mail
+Session object, first edit `glassfish-resources.xml` as follows:
+
+[source,xml]
+----
+...
+ <mail-resource jndi-name="mail/Session" ...>
+     <property name="mail-password" value="adminadmin"/>
+ </mail-resource>
+ ...
+----
+
+After getting the Jakarta Mail `Session` object, get the `mail.password`
+property to retrieve the value `adminadmin`, as follows:
+
+[source,java]
+----
+String password = session.getProperty("mail.password");
+----
+
+For more information about Jakarta Mail properties, see
+https://jakarta.ee/specifications/mail[Jakarta Mail API
+Documentation] (`https://jakarta.ee/specifications/mail`).
+
+[[beaum]][[GSDPG00192]][[manager-properties]]
+
+=== `manager-properties`
+
+Specifies session manager properties.
+
+[[fvyyu]][[GSDPG00558]][[superelements-108]]
+
+==== Superelements
+
+link:#beaxq[`session-manager`] (`glassfish-web.xml`)
+
+[[fvzcq]][[GSDPG00559]][[subelements-103]]
+
+==== Subelements
+
+The following table describes subelements for the `manager-properties`
+element.
+
+[[GSDPG963]][[sthref155]][[fvyvh]]
+
+
+Table C-92 `manager-properties` Subelements
+
+[width="100%",cols="37%,14%,49%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beavx[`property` (with attributes)]
+
+
+ |zero or more |Specifies a property, which has a name and a value.
+|===
+
+
+[[fvzdg]][[GSDPG00560]][[properties-10]]
+
+==== Properties
+
+The following table describes properties for the `manager-properties`
+element.
+
+[[GSDPG964]][[sthref156]][[fvywk]]
+
+
+Table C-93 `manager-properties` Properties
+
+[width="100%",cols="25%,13%,62%",options="header",]
+|===
+|Property |Default |Description
+|`reapIntervalSeconds` |`60` a|
+Specifies the number of seconds between checks for expired sessions.
+This is also the interval at which sessions are passivated if
+`maxSessions` is exceeded.
+
+If `persistenceFrequency` is set to `time-based`, active sessions are
+stored at this interval.
+
+To prevent data inconsistency, set this value lower than the frequency
+at which session data changes. For example, this value should be as low
+as possible (`1` second) for a hit counter servlet on a frequently
+accessed web site, or the last few hits might be lost each time the
+server is restarted.
+
+Applicable only if the `persistence-type` attribute of the parent
+link:#beaxq[`session-manager`] element is `file` or `replicated`.
+
+|`maxSessions` |`-1` a|
+Specifies the maximum number of sessions that are permitted in the
+cache, or `-1` for no limit. After this, an attempt to create a new
+session causes an `IllegalStateException` to be thrown.
+
+If the `persistence-type` attribute of the parent
+link:#beaxq[`session-manager`] element is `file` or `replicated`, the
+session manager passivates sessions to the persistent store when this
+maximum is reached.
+
+|`sessionFilename` |empty string a|
+Specifies the absolute or relative path to the directory in which the
+session state is preserved between application restarts, if preserving
+the state is possible. A relative path is relative to the temporary
+directory for this web module, one of the following:
+
+domain-dir``/generated/jsp/``module-name
+
+domain-dir``/generated/jsp/``app-name`/``module-name
+
+By default, this property's value is set to an empty string, which
+disables this property and does not preserve the session state.
+
+Applicable only if the `persistence-type` attribute of the parent
+link:#beaxq[`session-manager`] element is `memory`.
+
+|`persistenceFrequency` |`web-method` a|
+Specifies how often the session state is stored. Allowed values are as
+follows:
+
+* `web-method` - The session state is stored at the end of each web
+request prior to sending a response back to the client. This mode
+provides the best guarantee that the session state is fully updated in
+case of failure.
+* `time-based` - The session state is stored in the background at the
+frequency set by `reapIntervalSeconds`. This mode provides less of a
+guarantee that the session state is fully updated. However, it can
+provide a significant performance improvement because the state is not
+stored after each request.
+
+Applicable only if the `persistence-type` attribute of the parent
+link:#beaxq[`session-manager`] element is `replicated`.
+
+|===
+
+
+[[beaun]][[GSDPG00193]][[mapping-properties]]
+
+=== `mapping-properties`
+
+This element is not implemented.
+
+[[fvywv]][[GSDPG00561]][[superelements-109]]
+
+==== Superelements
+
+link:#beart[`cmp`] (`glassfish-ejb-jar.xml`)
+
+[[beauo]][[GSDPG00194]][[max-cache-size]]
+
+=== `max-cache-size`
+
+Specifies the maximum number of beans allowable in cache. A value of
+zero indicates an unbounded cache. In reality, there is no hard limit.
+The max-cache-size limit is just a hint to the cache implementation.
+Default is 512.
+
+Applies to stateful session beans and entity beans.
+
+[[fvyyo]][[GSDPG00562]][[superelements-110]]
+
+==== Superelements
+
+link:#beara[`bean-cache`] (`glassfish-ejb-jar.xml`)
+
+[[fvzbx]][[GSDPG00563]][[subelements-104]]
+
+==== Subelements
+
+none - contains data
+
+[[beaup]][[GSDPG00195]][[max-pool-size]]
+
+=== `max-pool-size`
+
+Specifies the maximum number of bean instances in the pool. Values are
+from 0 (1 for message-driven bean) to MAX_INTEGER. A value of 0 means
+the pool is unbounded. Default is 64.
+
+Applies to all beans.
+
+[[fvzdw]][[GSDPG00564]][[superelements-111]]
+
+==== Superelements
+
+link:#bearb[`bean-pool`] (`glassfish-ejb-jar.xml`)
+
+[[fvyxa]][[GSDPG00565]][[subelements-105]]
+
+==== Subelements
+
+none - contains data
+
+[[beauq]][[GSDPG00196]][[max-wait-time-in-millis]]
+
+=== `max-wait-time-in-millis`
+
+This element is deprecated. Do not use.
+
+[[fvyzg]][[GSDPG00566]][[superelements-112]]
+
+==== Superelements
+
+link:#bearb[`bean-pool`] (`glassfish-ejb-jar.xml`)
+
+[[beaur]][[GSDPG00197]][[mdb-connection-factory]]
+
+=== `mdb-connection-factory`
+
+Specifies the connection factory associated with a message-driven bean.
+Queue or Topic type must be consistent with the Java Message Service
+Destination type associated with the message-driven bean class.
+
+[[fvyzj]][[GSDPG00567]][[superelements-113]]
+
+==== Superelements
+
+link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
+
+[[fvyxt]][[GSDPG00568]][[subelements-106]]
+
+==== Subelements
+
+The following table describes subelements for the
+`mdb-connection-factory` element.
+
+[[GSDPG965]][[sthref157]][[fvyxi]]
+
+
+Table C-94 `mdb-connection-factory` Subelements
+
+[width="100%",cols="38%,14%,48%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beatw[`jndi-name`]
+
+
+ |only one |Specifies the absolute `jndi-name`.
+
+a|
+link:#beasn[`default-resource-principal`]
+
+
+ |zero or one |Specifies the default sign-on (name/password) to the
+resource manager.
+|===
+
+
+[[beaus]][[GSDPG00198]][[mdb-resource-adapter]]
+
+=== `mdb-resource-adapter`
+
+Specifies runtime configuration information for a message-driven bean.
+
+[[fvzdd]][[GSDPG00569]][[superelements-114]]
+
+==== Superelements
+
+link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
+
+[[fvyyx]][[GSDPG00570]][[subelements-107]]
+
+==== Subelements
+
+The following table describes subelements for the `mdb-resource-adapter`
+element.
+
+[[GSDPG966]][[sthref158]][[fvyzh]]
+
+
+Table C-95 `mdb-resource-adapter` subelements
+
+[width="100%",cols="35%,14%,51%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beawt[`resource-adapter-mid`]
+
+
+ |zero or one |Specifies a resource adapter module ID.
+a|
+link:#beaqs[`activation-config`]
+
+
+ |one or more |Specifies an activation configuration.
+|===
+
+
+[[beaut]][[GSDPG00199]][[message]]
+
+=== `message`
+
+Specifies the methods or operations to which message security
+requirements apply.
+
+[[fvzci]][[GSDPG00571]][[superelements-115]]
+
+==== Superelements
+
+link:#beauw[`message-security`] (`glassfish-web.xml`,
+`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)
+
+[[fvyxc]][[GSDPG00572]][[subelements-108]]
+
+==== Subelements
+
+The following table describes subelements for the `message` element.
+
+[[GSDPG967]][[sthref159]][[fvyyd]]
+
+
+Table C-96 `message` Subelements
+
+[width="100%",cols="30%,16%,54%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beatt[`java-method`]
+
+
+ |zero or one |Specifies the methods or operations to which message
+security requirements apply.
+
+a|
+link:#beavl[`operation-name`]
+
+
+ |zero or one |Specifies the WSDL name of an operation of a web service.
+|===
+
+
+[[beauu]][[GSDPG00200]][[message-destination]]
+
+=== `message-destination`
+
+Specifies the name of a logical `message-destination` defined within an
+application. The `message-destination-name` matches the corresponding
+`message-destination-name` in the corresponding Jakarta EE deployment
+descriptor file. Use when the message destination reference in the
+corresponding Jakarta EE deployment descriptor file specifies a
+`message-destination-link` to a logical `message-destination`.
+
+[[fvzaz]][[GSDPG00573]][[superelements-116]]
+
+==== Superelements
+
+link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`),
+link:#beasx[`enterprise-beans`] (`glassfish-ejb-jar.xml`),
+link:#beaxx[`glassfish-application-client`]
+(`glassfish-application-client.xml`)
+
+[[fvyxn]][[GSDPG00574]][[subelements-109]]
+
+==== Subelements
+
+The following table describes subelements for the `message-destination`
+element.
+
+[[GSDPG968]][[sthref160]][[fvyzy]]
+
+
+Table C-97 `message-destination` subelements
+
+[width="100%",cols="29%,10%,61%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beauv[`message-destination-name`]
+
+
+ |only one |Specifies the name of a logical message destination defined
+within the corresponding Jakarta EE deployment descriptor file.
+
+a|
+link:#beatw[`jndi-name`]
+
+
+ |only one |Specifies the `jndi-name` of the associated entity.
+|===
+
+
+[[beauv]][[GSDPG00201]][[message-destination-name]]
+
+=== `message-destination-name`
+
+Specifies the name of a logical message destination defined within the
+corresponding Jakarta EE deployment descriptor file.
+
+[[fvzcj]][[GSDPG00575]][[superelements-117]]
+
+==== Superelements
+
+link:#beauu[`message-destination`] (`glassfish-web.xml`,
+`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)
+
+[[fvzbo]][[GSDPG00576]][[subelements-110]]
+
+==== Subelements
+
+none - contains data
+
+[[gauao]][[GSDPG00202]][[message-destination-ref]]
+
+=== `message-destination-ref`
+
+Directly binds a message destination reference to the JNDI name of a
+`Queue`, `Topic`, or other physical destination. Use only when the
+message destination reference in the corresponding Jakarta EE deployment
+descriptor file does not specify a `message-destination-link` to a
+logical `message-destination`.
+
+[[gauam]][[GSDPG00577]][[superelements-118]]
+
+==== Superelements
+
+link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`),
+link:#beass[`ejb`] (`glassfish-ejb-jar.xml`),
+link:#beaxx[`glassfish-application-client`]
+(`glassfish-application-client.xml`)
+
+[[gaual]][[GSDPG00578]][[subelements-111]]
+
+==== Subelements
+
+The following table describes subelements for the
+`message-destination-ref` element.
+
+[[GSDPG969]][[sthref161]][[gauar]]
+
+
+Table C-98 `message-destination-ref` subelements
+
+[width="100%",cols="34%,10%,56%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#gauat[`message-destination-ref-name`]
+
+
+ |only one |Specifies the name of a physical message destination defined
+within the corresponding Jakarta EE deployment descriptor file.
+
+a|
+link:#beatw[`jndi-name`]
+
+
+ |only one |Specifies the `jndi-name` of the associated entity.
+|===
+
+
+[[gauat]][[GSDPG00203]][[message-destination-ref-name]]
+
+=== `message-destination-ref-name`
+
+Specifies the name of a physical message destination defined within the
+corresponding Jakarta EE deployment descriptor file.
+
+[[gauaj]][[GSDPG00579]][[superelements-119]]
+
+==== Superelements
+
+link:#gauao[`message-destination-ref`] (`glassfish-web.xml`,
+`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)
+
+[[gauas]][[GSDPG00580]][[subelements-112]]
+
+==== Subelements
+
+none - contains data
+
+[[beauw]][[GSDPG00204]][[message-security]]
+
+=== `message-security`
+
+Specifies message security requirements.
+
+* If the grandparent element is link:#beayv[`webservice-endpoint`],
+these requirements pertain to request and response messages of the
+endpoint.
+* If the grandparent element is link:#beavt[`port-info`], these
+requirements pertain to the port of the referenced service.
+
+[[fvzac]][[GSDPG00581]][[superelements-120]]
+
+==== Superelements
+
+link:#beaux[`message-security-binding`] (`glassfish-web.xml`,
+`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)
+
+[[fvyve]][[GSDPG00582]][[subelements-113]]
+
+==== Subelements
+
+The following table describes subelements for the `message-security`
+element.
+
+[[GSDPG970]][[sthref162]][[fvywy]]
+
+
+Table C-99 `message-security` Subelements
+
+[width="100%",cols="24%,12%,64%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beaut[`message`]
+
+
+ |one or more |Specifies the methods or operations to which message
+security requirements apply.
+
+a|
+link:#beawp[`request-protection`]
+
+
+ |zero or one |Defines the authentication policy requirements of the
+application's request processing.
+
+a|
+link:#beawy[`response-protection`]
+
+
+ |zero or one |Defines the authentication policy requirements of the
+application's response processing.
+|===
+
+
+[[beaux]][[GSDPG00205]][[message-security-binding]]
+
+=== `message-security-binding`
+
+Specifies a custom authentication provider binding for a parent
+link:#beayv[`webservice-endpoint`] or link:#beavt[`port-info`] element
+in one or both of these ways:
+
+* By binding to a specific provider
+* By specifying the message security requirements enforced by the
+provider
+
+[[fvzbc]][[GSDPG00583]][[superelements-121]]
+
+==== Superelements
+
+link:#beayv[`webservice-endpoint`], link:#beavt[`port-info`]
+(`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
+`glassfish-application-client.xml`)
+
+[[fvyxv]][[GSDPG00584]][[subelements-114]]
+
+==== Subelements
+
+The following table describes subelements for the
+`message-security-binding` element.
+
+[[GSDPG971]][[sthref163]][[fvzcx]]
+
+
+Table C-100 `message-security-binding` Subelements
+
+[width="100%",cols="34%,15%,51%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beauw[`message-security`]
+
+
+ |zero or more |Specifies message security requirements.
+|===
+
+
+[[fvzbj]][[GSDPG00585]][[attributes-26]]
+
+==== Attributes
+
+The following table describes attributes for the
+`message-security-binding` element.
+
+[[GSDPG972]][[sthref164]][[fvzda]]
+
+
+Table C-101 `message-security-binding` Attributes
+
+[width="172%",cols="9%,46%,45%",options="header",]
+|===
+|Attribute |Default |Description
+|`auth-layer` |none |Specifies the message layer at which authentication
+is performed. The value must be `SOAP`.
+
+|`provider-id` |none a|
+(optional) Specifies the authentication provider used to satisfy
+application-specific message security requirements.
+
+If this attribute is not specified, a default provider is used, if it is
+defined for the message layer.
+
+if no default provider is defined, authentication requirements defined
+in the `message-security-binding` are not enforced.
+
+|===
+
+
+[[beauy]][[GSDPG00206]][[message-security-config]]
+
+=== `message-security-config`
+
+Specifies configurations for message security providers.
+
+[[fvyya]][[GSDPG00586]][[superelements-122]]
+
+==== Superelements
+
+link:#bearr[`client-container`] (`sun-acc.xml`)
+
+[[fvzck]][[GSDPG00587]][[subelements-115]]
+
+==== Subelements
+
+The following table describes subelements for the
+`message-security-config` element.
+
+[[GSDPG973]][[sthref165]][[fvyym]]
+
+
+Table C-102 `message-security-config` Subelements
+
+[width="100%",cols="31%,15%,54%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beavz[`provider-config`]
+
+
+ |one or more |Specifies a configuration for one message security
+provider.
+|===
+
+
+[[fvyvw]][[GSDPG00588]][[attributes-27]]
+
+==== Attributes
+
+The following table describes attributes for the
+`message-security-config` element.
+
+[[GSDPG974]][[sthref166]][[fvzam]]
+
+
+Table C-103 `message-security-config` Attributes
+
+[width="172%",cols="17%,46%,37%",options="header",]
+|===
+|Attribute |Default |Description
+|`auth-layer` |none |Specifies the message layer at which authentication
+is performed. The value must be `SOAP`.
+
+|`default-provider` |none |(optional) Specifies the server provider that
+is invoked for any application not bound to a specific server provider.
+
+|`default-client-provider` |none |(optional) Specifies the client
+provider that is invoked for any application not bound to a specific
+client provider.
+|===
+
+
+[[beauz]][[GSDPG00207]][[method]]
+
+=== `method`
+
+Specifies a bean method.
+
+[[fvzae]][[GSDPG00589]][[superelements-123]]
+
+==== Superelements
+
+link:#bearo[`checkpoint-at-end-of-method`],
+link:#beatf[`flush-at-end-of-method`] (`glassfish-ejb-jar.xml`)
+
+[[fvzay]][[GSDPG00590]][[subelements-116]]
+
+==== Subelements
+
+The following table describes subelements for the `method` element.
+
+[[GSDPG975]][[sthref167]][[fvzch]]
+
+
+Table C-104 `method` Subelements
+
+[width="100%",cols="17%,11%,72%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beaso[`description`]
+
+
+ |zero or one |Specifies an optional text description.
+
+a|
+link:#beast[`ejb-name`]
+
+
+ |zero or one |Matches the `ejb-name` in the corresponding `ejb-jar.xml`
+file.
+
+a|
+link:#beavb[`method-name`]
+
+
+ |only one |Specifies a method name.
+
+a|
+link:#beava[`method-intf`]
+
+
+ |zero or one |Specifies the method interface to distinguish between
+methods with the same name in different interfaces.
+
+a|
+link:#beavd[`method-params`]
+
+
+ |zero or one |Specifies fully qualified Java type names of method
+parameters.
+|===
+
+
+[[beava]][[GSDPG00208]][[method-intf]]
+
+=== `method-intf`
+
+Specifies the method interface to distinguish between methods with the
+same name in different interfaces. Allowed values are `Home`, `Remote`,
+`LocalHome`, and `Local`.
+
+[[fvywj]][[GSDPG00591]][[superelements-124]]
+
+==== Superelements
+
+link:#beauz[`method`] (`glassfish-ejb-jar.xml`)
+
+[[fvyyz]][[GSDPG00592]][[subelements-117]]
+
+==== Subelements
+
+none - contains data
+
+[[beavb]][[GSDPG00209]][[method-name]]
+
+=== `method-name`
+
+Specifies a method name or `*` (an asterisk) for all methods. If a
+method is overloaded, specifies all methods with the same name.
+
+[[fvyvp]][[GSDPG00593]][[superelements-125]]
+
+==== Superelements
+
+link:#beatt[`java-method`] (`glassfish-web.xml`,
+`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`);
+link:#beate[`finder`], link:#beawc[`query-method`] ,
+link:#beauz[`method`] (`glassfish-ejb-jar.xml`)
+
+[[fvzcp]][[GSDPG00594]][[subelements-118]]
+
+==== Subelements
+
+none - contains data
+
+[[fvzdr]][[GSDPG00595]][[examples]]
+
+==== Examples
+
+`<method-name>findTeammates</method-name>`
+
+`<method-name>*</method-name>`
+
+[[beavc]][[GSDPG00210]][[method-param]]
+
+=== `method-param`
+
+Specifies the fully qualified Java type name of a method parameter.
+
+[[fvzdl]][[GSDPG00596]][[superelements-126]]
+
+==== Superelements
+
+link:#beavd[`method-params`] (`glassfish-web.xml`,
+`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)
+
+[[fvyvj]][[GSDPG00597]][[subelements-119]]
+
+==== Subelements
+
+none - contains data
+
+[[beavd]][[GSDPG00211]][[method-params]]
+
+=== `method-params`
+
+Specifies fully qualified Java type names of method parameters.
+
+[[fvzdt]][[GSDPG00598]][[superelements-127]]
+
+==== Superelements
+
+link:#beatt[`java-method`] (`glassfish-web.xml`,
+`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`);
+link:#beawc[`query-method`], link:#beauz[`method`]
+(`glassfish-ejb-jar.xml`)
+
+[[fvyzw]][[GSDPG00599]][[subelements-120]]
+
+==== Subelements
+
+The following table describes subelements for the `method-params`
+element.
+
+[[GSDPG976]][[sthref168]][[fvyzq]]
+
+
+Table C-105 `method-params` Subelements
+
+[width="100%",cols="18%,14%,68%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beavc[`method-param`]
+
+
+ |zero or more |Specifies the fully qualified Java type name of a method
+parameter.
+|===
+
+
+[[beavf]][[GSDPG00212]][[name]]
+
+`name`
+~~~~~~
+
+Specifies the name of the entity.
+
+[[fvyyf]][[GSDPG00600]][[superelements-128]]
+
+==== Superelements
+
+link:#beari[`call-property`], link:#beasn[`default-resource-principal`],
+link:#beaxv[`stub-property`] (`glassfish-web.xml`,
+`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`);
+link:#beasx[`enterprise-beans`], link:#beavv[`principal`],
+link:#beavy[`property` (with subelements)] (`glassfish-ejb-jar.xml`)
+
+[[fvyxe]][[GSDPG00601]][[subelements-121]]
+
+==== Subelements
+
+none - contains data
+
+[[beavg]][[GSDPG00213]][[named-group]]
+
+=== `named-group`
+
+Specifies the name of one independent fetch group. All the fields and
+relationships that are part of a named group are fetched at the same
+time. A field belongs to only one fetch group, regardless of what type
+of fetch group is used.
+
+[[fvzds]][[GSDPG00602]][[superelements-129]]
+
+==== Superelements
+
+link:#beatc[`fetched-with`] (`sun-cmp-mappings.xml`)
+
+[[fvyxr]][[GSDPG00603]][[subelements-122]]
+
+==== Subelements
+
+none - contains data
+
+[[beavh]][[GSDPG00214]][[namespaceuri]]
+
+=== `namespaceURI`
+
+Specifies the namespace URI.
+
+[[fvywa]][[GSDPG00604]][[superelements-130]]
+
+==== Superelements
+
+link:#beaxj[`service-qname`], link:#beayx[`wsdl-port`]
+(`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
+`glassfish-application-client.xml`)
+
+[[fvyzc]][[GSDPG00605]][[subelements-123]]
+
+==== Subelements
+
+none - contains data
+
+[[beavi]][[GSDPG00215]][[none]]
+
+`none`
+~~~~~~
+
+Specifies that this field or relationship is fetched by itself, with no
+other fields or relationships.
+
+[[fvyvv]][[GSDPG00606]][[superelements-131]]
+
+==== Superelements
+
+link:#beasd[`consistency`], link:#beatc[`fetched-with`]
+(`sun-cmp-mappings.xml`)
+
+[[fvzaw]][[GSDPG00607]][[subelements-124]]
+
+==== Subelements
+
+none - element is present or absent
+
+[[beavk]][[GSDPG00216]][[one-one-finders]]
+
+=== `one-one-finders`
+
+Describes the finders for CMP 1.1 beans.
+
+[[fvyvg]][[GSDPG00608]][[superelements-132]]
+
+==== Superelements
+
+link:#beart[`cmp`] (`glassfish-ejb-jar.xml`)
+
+[[fvywp]][[GSDPG00609]][[subelements-125]]
+
+==== Subelements
+
+The following table describes subelements for the `one-one-finders`
+element.
+
+[[GSDPG977]][[sthref169]][[fvyxu]]
+
+
+Table C-106 `one-one-finders` Subelements
+
+[width="100%",cols="23%,15%,62%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beate[`finder`]
+
+
+ |one or more |Describes the finders for CMP 1.1 with a method name and
+query.
+|===
+
+
+[[beavl]][[GSDPG00217]][[operation-name]]
+
+=== `operation-name`
+
+Specifies the WSDL name of an operation of a web service.
+
+[[fvzas]][[GSDPG00610]][[superelements-133]]
+
+==== Superelements
+
+link:#beaut[`message`] (`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
+`glassfish-application-client.xml`)
+
+[[fvyvt]][[GSDPG00611]][[subelements-126]]
+
+==== Subelements
+
+none - contains data
+
+[[beavn]][[GSDPG00218]][[parameter-encoding]]
+
+=== `parameter-encoding`
+
+Specifies the default request character encoding and how the web
+container decodes parameters from forms according to a hidden field
+value.
+
+If both the link:#beayb[`glassfish-web-app`] and
+link:#beaue[`locale-charset-info`] elements have `parameter-encoding`
+subelements, the subelement of `glassfish-web-app` takes precedence. For
+encodings, see
+`http://docs.oracle.com/javase/7/docs/technotes/guides/intl/encoding.doc.html`.
+
+[[fvyzr]][[GSDPG00612]][[superelements-134]]
+
+==== Superelements
+
+link:#beaue[`locale-charset-info`], link:#beayb[`glassfish-web-app`]
+(`glassfish-web.xml`)
+
+[[fvzbf]][[GSDPG00613]][[subelements-127]]
+
+==== Subelements
+
+none
+
+[[fvyxk]][[GSDPG00614]][[attributes-28]]
+
+==== Attributes
+
+The following table describes attributes for the `parameter-encoding`
+element.
+
+[[GSDPG978]][[sthref170]][[fvywn]]
+
+
+Table C-107 `parameter-encoding` Attributes
+
+[width="100%",cols="19%,13%,68%",options="header",]
+|===
+|Attribute |Default |Description
+|`form-hint-field` |none |(optional) The name of the hidden field in the
+form. This field specifies the character encoding the web container uses
+for `request.getParameter` and `request.getReader` calls when the
+charset is not set in the request's `content-type` header.
+
+|`default-charset` |`ISO-8859-1` |(optional) The default request
+character encoding.
+|===
+
+
+[[beavo]][[GSDPG00219]][[pass-by-reference]]
+
+=== `pass-by-reference`
+
+Specifies the passing method used by a servlet or enterprise bean
+calling a remote interface method in another bean that is colocated
+within the same process.
+
+* If `false` (the default if this element is not present), this
+application uses pass-by-value semantics.
+* If `true`, this application uses pass-by-reference semantics.
+
+
+[NOTE]
+====
+The `pass-by-reference` element only applies to remote calls. As defined
+in the EJB 2.1 specification, section 5.4, calls to local interfaces use
+pass-by-reference semantics.
+
+If the `pass-by-reference` element is set to its default value of
+`false`, the passing semantics for calls to remote interfaces comply
+with the EJB 2.1 specification, section 5.4. If set to `true`, remote
+calls involve pass-by-reference semantics instead of pass-by-value
+semantics, contrary to this specification.
+
+Portable programs cannot assume that a copy of the object is made during
+such a call, and thus that it's safe to modify the original. Nor can
+they assume that a copy is not made, and thus that changes to the object
+are visible to both caller and callee. When this element is set to
+`true`, parameters and return values should be considered read-only. The
+behavior of a program that modifies such parameters or return values is
+undefined.
+====
+
+
+When a servlet or enterprise bean calls a remote interface method in
+another bean that is colocated within the same process, by default
+{productName} makes copies of all the call parameters in order to
+preserve the pass-by-value semantics. This increases the call overhead
+and decreases performance.
+
+However, if the calling method does not change the object being passed
+as a parameter, it is safe to pass the object itself without making a
+copy of it. To do this, set the pass-by-reference value to `true`.
+
+The setting of this element in the `glassfish-application.xml` file
+applies to all EJB modules in the application. For an individually
+deployed EJB module, you can set the same element in the
+`glassfish-ejb-jar.xml` file. If `pass-by-reference` is used at both the
+bean and application level, the bean level takes precedence.
+
+[[fvzec]][[GSDPG00615]][[superelements-135]]
+
+==== Superelements
+
+link:#beaxw[`glassfish-application`] (`glassfish-application.xml`),
+link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
+
+[[fvywx]][[GSDPG00616]][[subelements-128]]
+
+==== Subelements
+
+none - contains data
+
+[[beavp]][[GSDPG00220]][[password]]
+
+=== `password`
+
+Specifies the password for the principal.
+
+[[fvyvn]][[GSDPG00617]][[superelements-136]]
+
+==== Superelements
+
+link:#beasn[`default-resource-principal`] (`glassfish-web.xml`,
+`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)
+
+[[fvyvs]][[GSDPG00618]][[subelements-129]]
+
+==== Subelements
+
+none - contains data
+
+[[gkkia]][[GSDPG00221]][[per-request-load-balancing]]
+
+=== `per-request-load-balancing`
+
+Specifies the per-request load balancing behavior of EJB 2.x and 3.x
+remote client invocations on a stateless session bean. If set to `true`,
+per-request load balancing is enabled for the associated stateless
+session bean. If set to `false` or not set, per-request load balancing
+is not enabled. The default is `false`.
+
+[[gkklx]][[GSDPG00619]][[superelements-137]]
+
+==== Superelements
+
+link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
+
+[[gkkmq]][[GSDPG00620]][[subelements-130]]
+
+==== Subelements
+
+none - contains data
+
+[[beavq]][[GSDPG00222]][[pm-descriptors]]
+
+=== `pm-descriptors`
+
+This element and its subelements are deprecated. Do not use.
+
+[[fvzbh]][[GSDPG00621]][[superelements-138]]
+
+==== Superelements
+
+link:#beasx[`enterprise-beans`] (`glassfish-ejb-jar.xml`)
+
+[[beavr]][[GSDPG00223]][[pool-idle-timeout-in-seconds]]
+
+=== `pool-idle-timeout-in-seconds`
+
+Specifies the maximum time, in seconds, that a bean instance is allowed
+to remain idle in the pool. When this timeout expires, the bean instance
+in a pool becomes a candidate for passivation or deletion. This is a
+hint to the server. A value of 0 specifies that idle beans remain in the
+pool indefinitely. Default value is 600.
+
+Applies to stateless session beans, entity beans, and message-driven
+beans.
+
+
+[NOTE]
+====
+For a stateless session bean or a message-driven bean, the bean is
+removed (garbage collected) when the timeout expires.
+====
+
+
+[[fvzbm]][[GSDPG00622]][[superelements-139]]
+
+==== Superelements
+
+link:#bearb[`bean-pool`] (`glassfish-ejb-jar.xml`)
+
+[[fvzbs]][[GSDPG00623]][[subelements-131]]
+
+==== Subelements
+
+none - contains data
+
+[[beavs]][[GSDPG00224]][[port-component-name]]
+
+=== `port-component-name`
+
+Specifies a unique name for a port component within a web or EJB module.
+
+[[fvzbl]][[GSDPG00624]][[superelements-140]]
+
+==== Superelements
+
+link:#beayv[`webservice-endpoint`] (`glassfish-web.xml`,
+`glassfish-ejb-jar.xml`)
+
+[[fvyys]][[GSDPG00625]][[subelements-132]]
+
+==== Subelements
+
+none - contains data
+
+[[beavt]][[GSDPG00225]][[port-info]]
+
+=== `port-info`
+
+Specifies information for a port within a web service reference.
+
+Either a `service-endpoint-interface` or a `wsdl-port` or both must be
+specified. If both are specified, `wsdl-port` specifies the port that
+the container chooses for container-managed port selection.
+
+The same `wsdl-port` value must not appear in more than one `port-info`
+element within the same `service-ref`.
+
+If a `service-endpoint-interface` is using container-managed port
+selection, its value must not appear in more than one `port-info`
+element within the same `service-ref`.
+
+[[fvzdh]][[GSDPG00626]][[superelements-141]]
+
+==== Superelements
+
+link:#beaxk[`service-ref`] (`glassfish-web.xml`,
+`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)
+
+[[fvyva]][[GSDPG00627]][[subelements-133]]
+
+==== Subelements
+
+The following table describes subelements for the `port-info` element.
+
+[[GSDPG979]][[sthref171]][[fvzbr]]
+
+
+Table C-108 `port-info` subelements
+
+[width="100%",cols="32%,12%,56%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beaxh[`service-endpoint-interface`]
+
+
+ |zero or one |Specifies the web service reference name relative to
+`java:comp/env`.
+
+a|
+link:#beayx[`wsdl-port`]
+
+
+ |zero or one |Specifies the WSDL port.
+
+a|
+link:#beaxv[`stub-property`]
+
+
+ |zero or more |Specifies JAX-RPC property values that are set on a
+`javax.xml.rpc.Stub` object before it is returned to the web service
+client.
+
+a|
+link:#beari[`call-property`]
+
+
+ |zero or more |Specifies JAX-RPC property values that are set on a
+`javax.xml.rpc.Call` object before it is returned to the web service
+client.
+
+a|
+link:#beaux[`message-security-binding`]
+
+
+ |zero or one |Specifies a custom authentication provider binding.
+|===
+
+
+[[beavu]][[GSDPG00226]][[prefetch-disabled]]
+
+=== `prefetch-disabled`
+
+Disables prefetching of entity bean states for the specified query
+methods. Container-managed relationship fields are prefetched if their
+link:#beatc[`fetched-with`] element is set to link:#beasl[`default`].
+
+[[fvyxl]][[GSDPG00628]][[superelements-142]]
+
+==== Superelements
+
+link:#beart[`cmp`] (`glassfish-ejb-jar.xml`)
+
+[[fvyyb]][[GSDPG00629]][[subelements-134]]
+
+==== Subelements
+
+The following table describes subelements for the `prefetch-disabled`
+element.
+
+[[GSDPG980]][[sthref172]][[fvyyn]]
+
+
+Table C-109 `prefetch-disabled` Subelements
+
+[width="100%",cols="30%,14%,56%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beawc[`query-method`]
+
+
+ |one or more |Specifies a query method.
+|===
+
+
+[[beavv]][[GSDPG00227]][[principal]]
+
+=== `principal`
+
+Defines a user name on the platform.
+
+[[fvyvy]][[GSDPG00630]][[superelements-143]]
+
+==== Superelements
+
+link:#beass[`ejb`] (`glassfish-ejb-jar.xml`);
+link:#giyhy[`security-map`] (`glassfish-resources.xml`)
+
+[[fvzbt]][[GSDPG00631]][[subelements-135]]
+
+==== Subelements
+
+The following table describes subelements for the `principal` element.
+
+[[GSDPG981]][[sthref173]][[fvzaq]]
+
+
+Table C-110 `principal` Subelements
+
+[width="100%",cols="29%,15%,56%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beavf[`name`]
+
+
+ |only one |Specifies the name of the user.
+|===
+
+
+[[giyif]][[GSDPG00228]][[principal-map]]
+
+=== `principal-map`
+
+Maps an EIS principal to a principal defined in the {productName}
+domain.
+
+[[GSDPG982]][[sthref174]]
+
+
+[[superelements-144]]
+==== Superelements
+
+link:#giyht[`work-security-map`] (`glassfish-resources.xml`)
+
+[[giyjg]][[GSDPG00632]][[subelements-136]]
+
+==== Subelements
+
+none
+
+[[GSDPG983]][[sthref175]]
+
+
+[[attributes-29]]
+==== Attributes
+
+The following table describes attributes for the `principal-map`
+element.
+
+[[GSDPG984]][[sthref176]][[sthref177]]
+
+
+Table C-111 `principal-map` Attributes
+
+[width="181%",cols="13%,49%,38%",options="header",]
+|===
+|Attribute |Default |Description
+|`eis-principal` |none |Specifies an EIS principal.
+
+|`mapped-principal` |none |Specifies a principal defined in the
+{productName} domain.
+|===
+
+
+[[beavw]][[GSDPG00229]][[principal-name]]
+
+=== `principal-name`
+
+Contains the principal (user) name.
+
+In an enterprise bean, specifies the principal (user) name that has the
+`run-as` role specified.
+
+[[fvyws]][[GSDPG00633]][[superelements-145]]
+
+==== Superelements
+
+link:#beaxg[`security-role-mapping`] (`glassfish-application.xml`,
+`glassfish-web.xml`, `glassfish-ejb-jar.xml`), link:#beaxm[`servlet`]
+(`glassfish-web.xml`)
+
+[[fvyxp]][[GSDPG00634]][[subelements-137]]
+
+==== Subelements
+
+none - contains data
+
+[[gatzl]][[GSDPG00635]][[attributes-30]]
+
+==== Attributes
+
+The following table describes attributes for the `principal-name`
+element.
+
+[[GSDPG985]][[sthref178]][[gatyf]]
+
+
+Table C-112 `principal-name` Attributes
+
+[width="100%",cols="13%,36%,51%",options="header",]
+|===
+|Attribute |Default |Description
+|`class-name` |`com.sun.enterprise.deployment.PrincipalImpl` |(optional)
+Specifies the custom principal implementation class corresponding to the
+named principal.
+|===
+
+
+[[beavx]][[GSDPG00230]][[property-with-attributes]]
+
+=== `property` (with attributes)
+
+Specifies the name and value of a property. A property adds
+configuration information to its parent element that is one or both of
+the following:
+
+* Optional with respect to {productName}
+* Needed by a system or object that {productName} doesn't have
+knowledge of, such as an LDAP server or a Java class
+
+[[fvzeb]][[GSDPG00636]][[superelements-146]]
+
+==== Superelements
+
+link:#beard[`cache`], link:#beare[`cache-helper`],
+link:#bearq[`class-loader`], link:#beash[`cookie-properties`],
+link:#beasm[`default-helper`], link:#beaum[`manager-properties`],
+link:#beaxr[`session-properties`], link:#beaxu[`store-properties`],
+link:#beayb[`glassfish-web-app`], link:#gikqk[`valve`],
+link:#beayv[`webservice-endpoint`] (`glassfish-web.xml`);
+link:#beaqy[`auth-realm`], link:#bearr[`client-container`],
+link:#bears[`client-credential`], link:#beauj[`log-service`],
+link:#beavz[`provider-config`] (`sun-acc.xml`);
+link:#giyhw[`admin-object-resource`],
+link:#giygu[`connector-connection-pool`],
+link:#giyhv[`connector-resource`], link:#giyhr[`custom-resource`],
+link:#giyin[`external-jndi-resource`],
+link:#giyil[`jdbc-connection-pool`], link:#giyhm[`jdbc-resource`],
+link:#giyik[`mail-resource`], link:#giyit[`resource-adapter-config`]
+(`glassfish-resources.xml`)
+
+[[fvyzv]][[GSDPG00637]][[subelements-138]]
+
+==== Subelements
+
+The following table describes subelements for the `property` element.
+
+[[GSDPG986]][[sthref179]][[fvzcb]]
+
+
+Table C-113 `property` Subelements
+
+[width="100%",cols="27%,17%,56%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beaso[`description`]
+
+
+ |zero or one |Specifies an optional text description of a property.
+|===
+
+
+
+[NOTE]
+====
+The `property` element in the `sun-acc.xml` file has no subelements.
+====
+
+
+[[fvyvi]][[GSDPG00638]][[attributes-31]]
+
+==== Attributes
+
+The following table describes attributes for the `property` element.
+
+[[GSDPG987]][[sthref180]][[fvzdi]]
+
+
+Table C-114 `property` Attributes
+
+[width="100%",cols="14%,10%,76%",options="header",]
+|===
+|Attribute |Default |Description
+|`name` |none |Specifies the name of the property.
+|`value` |none |Specifies the value of the property.
+|===
+
+
+[[fvzab]][[GSDPG00639]][[example-7]]
+
+==== Example
+
+[source,xml]
+----
+<property name="reapIntervalSeconds" value="20" />
+----
+
+[[beavy]][[GSDPG00231]][[property-with-subelements]]
+
+=== `property` (with subelements)
+
+Specifies the name and value of a property. A property adds
+configuration information to its parent element that is one or both of
+the following:
+
+* Optional with respect to {productName}
+* Needed by a system or object that {productName} doesn't have
+knowledge of, such as an LDAP server or a Java class
+
+[[fvzcl]][[GSDPG00640]][[superelements-147]]
+
+==== Superelements
+
+link:#beasx[`enterprise-beans`], link:#bearv[`cmp-resource`],
+link:#beaxd[`schema-generator-properties`],
+link:#beayv[`webservice-endpoint`] (`glassfish-ejb-jar.xml`)
+
+[[fvzaf]][[GSDPG00641]][[subelements-139]]
+
+==== Subelements
+
+The following table describes subelements for the `property` element.
+
+[[GSDPG988]][[sthref181]][[fvzcc]]
+
+
+Table C-115 `property` subelements
+
+[width="100%",cols="22%,16%,62%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beavf[`name`]
+
+
+ |only one |Specifies the name of the property.
+a|
+link:#beayo[`value`]
+
+
+ |only one |Specifies the value of the property.
+|===
+
+
+[[fvyxz]][[GSDPG00642]][[example-8]]
+
+==== Example
+
+[source,xml]
+----
+<property>
+   <name>use-unique-table-names</name>
+   <value>true</value>
+</property>
+----
+
+[[beavz]][[GSDPG00232]][[provider-config]]
+
+=== `provider-config`
+
+Specifies a configuration for one message security provider.
+
+Although the `request-policy` and `response-policy` subelements are
+optional, the `provider-config` element does nothing if they are not
+specified.
+
+Use property subelements to configure provider-specific properties.
+Property values are passed to the provider when its `initialize` method
+is called.
+
+[[fvzcy]][[GSDPG00643]][[superelements-148]]
+
+==== Superelements
+
+link:#beauy[`message-security-config`] (`sun-acc.xml`)
+
+[[fvyzt]][[GSDPG00644]][[subelements-140]]
+
+==== Subelements
+
+The following table describes subelements for the `provider-config`
+element.
+
+[[GSDPG989]][[sthref182]][[fvyyq]]
+
+
+Table C-116 `provider-config` Subelements
+
+[width="100%",cols="25%,12%,63%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beawo[`request-policy`]
+
+
+ |zero or one |Defines the authentication policy requirements of the
+authentication provider's request processing.
+
+a|
+link:#beawx[`response-policy`]
+
+
+ |zero or one |Defines the authentication policy requirements of the
+authentication provider's response processing.
+
+a|
+link:#beavx[`property` (with attributes)]
+
+
+ |zero or more |Specifies a property, which has a name and a value.
+|===
+
+
+[[fvywu]][[GSDPG00645]][[attributes-32]]
+
+==== Attributes
+
+The following table describes attributes for the `provider-config`
+element.
+
+[[GSDPG990]][[sthref183]][[fvyvz]]
+
+
+Table C-117 `provider-config` Attributes
+
+[width="172%",cols="11%,46%,43%",options="header",]
+|===
+|Attribute |Default |Description
+|`provider-id` |none |Specifies the provider ID.
+
+|`provider-type` |none |Specifies whether the provider is a `client`,
+`server`, or `client-server` authentication provider.
+
+|`class-name` |none |Specifies the Java implementation class of the
+provider. Client authentication providers must implement the
+com.sun.enterprise.security.jauth.ClientAuthModule interface. Server
+authentication providers must implement the
+com.sun.enterprise.security.jauth.ServerAuthModule interface.
+Client-server providers must implement both interfaces.
+|===
+
+
+[[beawb]][[GSDPG00233]][[query-filter]]
+
+=== `query-filter`
+
+Specifies the query filter for the CMP 1.1 finder.
+
+[[fvzdm]][[GSDPG00646]][[superelements-149]]
+
+==== Superelements
+
+link:#beate[`finder`] (`glassfish-ejb-jar.xml`)
+
+[[fvzco]][[GSDPG00647]][[subelements-141]]
+
+==== Subelements
+
+none - contains data
+
+[[beawc]][[GSDPG00234]][[query-method]]
+
+=== `query-method`
+
+Specifies a query method.
+
+[[fvyxo]][[GSDPG00648]][[superelements-150]]
+
+==== Superelements
+
+link:#beavu[`prefetch-disabled`] (`glassfish-ejb-jar.xml`)
+
+[[fvyzm]][[GSDPG00649]][[subelements-142]]
+
+==== Subelements
+
+The following table describes subelements for the `query-method`
+element.
+
+[[GSDPG991]][[sthref184]][[fvywl]]
+
+
+Table C-118 `query-method` Subelements
+
+[width="100%",cols="17%,10%,73%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beavb[`method-name`]
+
+
+ |only one |Specifies a method name.
+
+a|
+link:#beavd[`method-params`]
+
+
+ |only one |Specifies the fully qualified Java type names of method
+parameters.
+|===
+
+
+[[beawd]][[GSDPG00235]][[query-ordering]]
+
+=== `query-ordering`
+
+Specifies the query ordering for the CMP 1.1 finder.
+
+[[fvzef]][[GSDPG00650]][[superelements-151]]
+
+==== Superelements
+
+link:#beate[`finder`] (`glassfish-ejb-jar.xml`)
+
+[[fvywd]][[GSDPG00651]][[subelements-143]]
+
+==== Subelements
+
+none - contains data
+
+[[beawe]][[GSDPG00236]][[query-params]]
+
+=== `query-params`
+
+Specifies the query parameters for the CMP 1.1 finder.
+
+[[fvyvu]][[GSDPG00652]][[superelements-152]]
+
+==== Superelements
+
+link:#beate[`finder`] (`glassfish-ejb-jar.xml`)
+
+[[fvzax]][[GSDPG00653]][[subelements-144]]
+
+==== Subelements
+
+none - contains data
+
+[[beawf]][[GSDPG00237]][[query-variables]]
+
+=== `query-variables`
+
+Specifies variables in the query expression for the CMP 1.1 finder.
+
+[[fvyyg]][[GSDPG00654]][[superelements-153]]
+
+==== Superelements
+
+link:#beate[`finder`] (`glassfish-ejb-jar.xml`)
+
+[[fvzce]][[GSDPG00655]][[subelements-145]]
+
+==== Subelements
+
+none - contains data
+
+[[beawh]][[GSDPG00238]][[read-only]]
+
+=== `read-only`
+
+Specifies that a field is read-only if `true`. If this element is
+absent, the default value is `false` .
+
+[[fvyzs]][[GSDPG00656]][[superelements-154]]
+
+==== Superelements
+
+link:#bearu[`cmp-field-mapping`] (`sun-cmp-mappings.xml`)
+
+[[fvzav]][[GSDPG00657]][[subelements-146]]
+
+==== Subelements
+
+none - contains data
+
+[[beawi]][[GSDPG00239]][[realm]]
+
+=== `realm`
+
+Specifies the name of the realm used to process all authentication
+requests associated with this application. If this element is not
+specified or does not match the name of a configured realm, the default
+realm is used. For more information about realms, see
+"link:application-development-guide/securing-apps.html#GSDVG00118[Realm Configuration]" in {productName} Application Development Guide.
+
+[[fvzaa]][[GSDPG00658]][[superelements-155]]
+
+==== Superelements
+
+link:#beaxw[`glassfish-application`] (`glassfish-application.xml`),
+link:#beaqw[`as-context`], link:#beauk[`login-config`]
+(`glassfish-ejb-jar.xml`)
+
+[[fvzdq]][[GSDPG00659]][[subelements-147]]
+
+==== Subelements
+
+none - contains data
+
+[[beawj]][[GSDPG00240]][[refresh-field]]
+
+=== `refresh-field`
+
+Specifies a field that gives the application component a programmatic
+way to refresh a cached entry.
+
+[[fvywt]][[GSDPG00660]][[superelements-156]]
+
+==== Superelements
+
+link:#bearh[`cache-mapping`] (`glassfish-web.xml`)
+
+[[fvzbw]][[GSDPG00661]][[subelements-148]]
+
+==== Subelements
+
+none
+
+[[fvzbp]][[GSDPG00662]][[attributes-33]]
+
+==== Attributes
+
+The following table describes attributes for the `refresh-field`
+element.
+
+[[GSDPG992]][[sthref185]][[fvzbz]]
+
+
+Table C-119 `refresh-field` Attributes
+
+[width="181%",cols="51%,11%,38%",options="header",]
+|===
+|Attribute |Default |Description
+|`name` |none |Specifies the input parameter name.
+
+|`scope` |`request.parameter` |(optional) Specifies the scope from which
+the input parameter is retrieved. Allowed values are
+`context.attribute`, `request.header`, `request.parameter`,
+`request.cookie`, `session.id`, and `session.attribute`.
+|===
+
+
+[[beawk]][[GSDPG00241]][[refresh-period-in-seconds]]
+
+=== `refresh-period-in-seconds`
+
+Specifies the rate at which a read-only-bean must be refreshed from the
+data source. If the value is less than or equal to zero, the bean is
+never refreshed; if the value is greater than zero, the bean instances
+are refreshed at the specified interval. This rate is just a hint to the
+container. Default is 0 (no refresh).
+
+[[fvzcn]][[GSDPG00663]][[superelements-157]]
+
+==== Superelements
+
+link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
+
+[[fvyxh]][[GSDPG00664]][[subelements-149]]
+
+==== Subelements
+
+none - contains data
+
+[[beawl]][[GSDPG00242]][[removal-timeout-in-seconds]]
+
+=== `removal-timeout-in-seconds`
+
+Specifies the amount of time a bean instance can remain idle in the
+container before it is removed (timeout). A value of 0 specifies that
+the container does not remove inactive beans automatically. The default
+value is 5400.
+
+If `removal-timeout-in-seconds` is less than or equal to
+`cache-idle-timeout-in-seconds`, beans are removed immediately without
+being passivated.
+
+Applies to stateful session beans.
+
+For related information, see
+link:#bearg[`cache-idle-timeout-in-seconds`].
+
+[[fvzat]][[GSDPG00665]][[superelements-158]]
+
+==== Superelements
+
+link:#beara[`bean-cache`] (`glassfish-ejb-jar.xml`)
+
+[[fvzeg]][[GSDPG00666]][[subelements-150]]
+
+==== Subelements
+
+none - contains data
+
+[[beawm]][[GSDPG00243]][[remote-home-impl]]
+
+=== `remote-home-impl`
+
+Specifies the fully-qualified class name of the generated `EJBHome`
+`impl` class.
+
+
+[NOTE]
+====
+This value is automatically generated by the server at deployment or
+redeployment time. Do not specify it or change it after deployment.
+====
+
+
+[[fvywr]][[GSDPG00667]][[superelements-159]]
+
+==== Superelements
+
+link:#beath[`gen-classes`] (`glassfish-ejb-jar.xml`)
+
+[[fvyyt]][[GSDPG00668]][[subelements-151]]
+
+==== Subelements
+
+none - contains data
+
+[[beawn]][[GSDPG00244]][[remote-impl]]
+
+=== `remote-impl`
+
+Specifies the fully-qualified class name of the generated `EJBObject`
+`impl` class.
+
+
+[NOTE]
+====
+This value is automatically generated by the server at deployment or
+redeployment time. Do not specify it or change it after deployment.
+====
+
+
+[[fvyzi]][[GSDPG00669]][[superelements-160]]
+
+==== Superelements
+
+link:#beath[`gen-classes`] (`glassfish-ejb-jar.xml`)
+
+[[fvzag]][[GSDPG00670]][[subelements-152]]
+
+==== Subelements
+
+none - contains data
+
+[[beawo]][[GSDPG00245]][[request-policy]]
+
+=== `request-policy`
+
+Defines the authentication policy requirements of the authentication
+provider's request processing.
+
+[[fvyxw]][[GSDPG00671]][[superelements-161]]
+
+==== Superelements
+
+link:#beavz[`provider-config`] (`sun-acc.xml`)
+
+[[fvzdz]][[GSDPG00672]][[subelements-153]]
+
+==== Subelements
+
+none
+
+[[fvyvq]][[GSDPG00673]][[attributes-34]]
+
+==== Attributes
+
+The following table describes attributes for the `request-policy`
+element.
+
+[[GSDPG993]][[sthref186]][[fvzdy]]
+
+
+Table C-120 `request-policy` Attributes
+
+[width="172%",cols="11%,46%,43%",options="header",]
+|===
+|Attribute |Default |Description
+|`auth-source` |none |Specifies the type of required authentication,
+either `sender` (user name and password) or `content` (digital
+signature).
+
+|`auth-recipient` |none |Specifies whether recipient authentication
+occurs before or after content authentication. Allowed values are
+`before-content` and `after-content`.
+|===
+
+
+[[beawp]][[GSDPG00246]][[request-protection]]
+
+=== `request-protection`
+
+Defines the authentication policy requirements of the application's
+request processing.
+
+[[fvzcv]][[GSDPG00674]][[superelements-162]]
+
+==== Superelements
+
+link:#beauw[`message-security`] (`glassfish-web.xml`,
+`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)
+
+[[fvzby]][[GSDPG00675]][[subelements-154]]
+
+==== Subelements
+
+none
+
+[[fvzar]][[GSDPG00676]][[attributes-35]]
+
+==== Attributes
+
+The following table describes attributes for the `request-protection`
+element.
+
+[[GSDPG994]][[sthref187]][[fvzbu]]
+
+
+Table C-121 `request-protection` Attributes
+
+[width="172%",cols="13%,46%,41%",options="header",]
+|===
+|Attribute |Default |Description
+|`auth-source` |none |Specifies the type of required authentication,
+either `sender` (user name and password) or `content` (digital
+signature).
+
+|`auth-recipient` |none |Specifies whether recipient authentication
+occurs before or after content authentication. Allowed values are
+`before-content` and `after-content`.
+|===
+
+
+[[beawq]][[GSDPG00247]][[required]]
+
+=== `required`
+
+Specifies whether the authentication method specified in the
+link:#beaqx[`auth-method`] element must be used for client
+authentication. The value is `true` or `false` (the default).
+
+[[fvyvc]][[GSDPG00677]][[superelements-163]]
+
+==== Superelements
+
+link:#beaqw[`as-context`] (`glassfish-ejb-jar.xml`)
+
+[[fvywc]][[GSDPG00678]][[subelements-155]]
+
+==== Subelements
+
+none - contains data
+
+[[beawr]][[GSDPG00248]][[res-ref-name]]
+
+=== `res-ref-name`
+
+Specifies the `res-ref-name` in the corresponding Jakarta EE deployment
+descriptor file `resource-ref` entry. The `res-ref-name` element
+specifies the name of a resource manager connection factory reference.
+The name must be unique within an enterprise bean.
+
+[[fvyvk]][[GSDPG00679]][[superelements-164]]
+
+==== Superelements
+
+link:#beaww[`resource-ref`] (`glassfish-web.xml`,
+`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)
+
+[[fvyyp]][[GSDPG00680]][[subelements-156]]
+
+==== Subelements
+
+none - contains data
+
+[[beaws]][[GSDPG00249]][[resize-quantity]]
+
+=== `resize-quantity`
+
+Specifies the number of bean instances to be:
+
+* Created, if a request arrives when the pool has less than
+link:#beaxt[`steady-pool-size`] quantity of beans (applies to pools only
+for creation). If the pool has more than `steady-pool-size` minus
+link:#beaws[`resize-quantity`] of beans, then `resize-quantity` is still
+created.
+* Removed, when the link:#beavr[`pool-idle-timeout-in-seconds`] timer
+expires and a cleaner thread removes any unused instances.
+
+** For caches, when link:#beauo[`max-cache-size`] is reached,
+`resize-quantity` beans are selected for passivation using the
+link:#beayp[`victim-selection-policy`]. In addition, the
+link:#bearg[`cache-idle-timeout-in-seconds`] or
+link:#beawl[`removal-timeout-in-seconds`] timers passivate beans from
+the cache.
+
+** For pools, when the link:#beaup[`max-pool-size`] is reached,
+`resize-quantity` beans are selected for removal. In addition, the
+link:#beavr[`pool-idle-timeout-in-seconds`] timer removes beans until
+`steady-pool-size` is reached.
+
+Values are from 0 to MAX_INTEGER. The pool is not resized below the
+`steady-pool-size`. Default is 16.
+
+Applies to stateless session beans, entity beans, and message-driven
+beans.
+
+For EJB pools, the value can be defined in the EJB container. Default is
+16. For EJB caches, the value can be defined in the EJB container. Default
+is 32.
+
+For message-driven beans, the value can be defined in the EJB container.
+Default is 2.
+
+[[fvyxb]][[GSDPG00681]][[superelements-165]]
+
+==== Superelements
+
+link:#beara[`bean-cache`], link:#bearb[`bean-pool`]
+(`glassfish-ejb-jar.xml`)
+
+[[fvzcf]][[GSDPG00682]][[subelements-157]]
+
+==== Subelements
+
+none - contains data
+
+[[giyit]][[GSDPG00250]][[resource-adapter-config]]
+
+=== `resource-adapter-config`
+
+Defines a connector (resource adapter) configuration. Stores
+configuration information for the resource adapter JavaBean in
+`property` subelements.
+
+[[GSDPG995]][[sthref188]]
+
+
+[[superelements-166]]
+==== Superelements
+
+link:#giyiy[`resources`] (`glassfish-resources.xml`)
+
+[[GSDPG996]][[sthref189]]
+
+
+[[subelements-158]]
+==== Subelements
+
+The following table describes subelements for the
+`resource-adapter-config` element.
+
+[[GSDPG997]][[sthref190]][[sthref191]]
+
+
+Table C-122 `resource-adapter-config` Subelements
+
+[width="100%",cols="25%,12%,63%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beavx[`property` (with attributes)]
+
+
+ |zero or more |Specifies a property or a variable.
+|===
+
+
+[[GSDPG998]][[sthref192]]
+
+
+[[attributes-36]]
+==== Attributes
+
+The following table describes attributes for the
+`resource-adapter-config` element.
+
+[[GSDPG999]][[sthref193]][[sthref194]]
+
+
+Table C-123 `resource-adapter-config` Attributes
+
+[width="172%",cols="16%,46%,38%",options="header",]
+|===
+|Attribute |Default |Description
+|`name` |none |(optional) Not used. See `resource-adapter-name`.
+
+|`thread-pool-ids` |none |(optional) Specifies a comma-separated list of
+the names of thread pools.
+
+|`object-type` |`user` a|
+(optional) Defines the type of the resource. Allowed values are:
+
+* `system-all` - A system resource for all server instances and the
+domain application server.
+* `system-admin` - A system resource only for the domain application
+server.
+* `system-instance` - A system resource for all server instances only.
+* `user` - A user resource.
+
+|`resource-adapter-name` |none |Specifies the name of a deployed
+connector module or application. If the resource adapter is embedded in
+an application, then it is app_name`#`rar_name.
+|===
+
+
+[[GSDPG1000]][[sthref195]]
+
+
+[[properties-11]]
+==== Properties
+
+Properties of the `resource-adapter-config` element are the names of
+setter methods of the `resourceadapter-class` element in the `ra.xml`
+file, which defines the class name of the resource adapter JavaBean. Any
+properties defined here override the default values present in `ra.xml`.
+
+[[beawt]][[GSDPG00251]][[resource-adapter-mid]]
+
+=== `resource-adapter-mid`
+
+Specifies the module ID of the resource adapter that is responsible for
+delivering messages to the message-driven bean.
+
+[[fvyvd]][[GSDPG00683]][[superelements-167]]
+
+==== Superelements
+
+link:#beaus[`mdb-resource-adapter`] (`glassfish-ejb-jar.xml`)
+
+[[fvzed]][[GSDPG00684]][[subelements-159]]
+
+==== Subelements
+
+none - contains data
+
+[[beawu]][[GSDPG00252]][[resource-env-ref]]
+
+=== `resource-env-ref`
+
+Maps the `res-ref-name` in the corresponding Jakarta EE deployment
+descriptor file `resource-env-ref` entry to the absolute `jndi-name` of
+a resource.
+
+[[fvyvr]][[GSDPG00685]][[superelements-168]]
+
+==== Superelements
+
+link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`),
+link:#beass[`ejb`] (`glassfish-ejb-jar.xml`),
+link:#beaxx[`glassfish-application-client`]
+(`glassfish-application-client.xml`)
+
+[[fvywe]][[GSDPG00686]][[subelements-160]]
+
+==== Subelements
+
+The following table describes subelements for the `resource-env-ref`
+element.
+
+[[GSDPG1001]][[sthref196]][[fvyye]]
+
+
+Table C-124 `resource-env-ref` Subelements
+
+[width="100%",cols="26%,10%,64%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beawv[`resource-env-ref-name`]
+
+
+ |only one |Specifies the `res-ref-name` in the corresponding Jakarta EE
+deployment descriptor file `resource-env-ref` entry.
+
+a|
+link:#beatw[`jndi-name`]
+
+
+ |only one |Specifies the absolute `jndi-name` of a resource.
+|===
+
+
+[[fvzdf]][[GSDPG00687]][[example-9]]
+
+==== Example
+
+[source,xml]
+----
+<resource-env-ref>
+   <resource-env-ref-name>jms/StockQueueName</resource-env-ref-name>
+   <jndi-name>jms/StockQueue</jndi-name>
+</resource-env-ref>
+----
+
+[[beawv]][[GSDPG00253]][[resource-env-ref-name]]
+
+=== `resource-env-ref-name`
+
+Specifies the `res-ref-name` in the corresponding Jakarta EE deployment
+descriptor file `resource-env-ref` entry.
+
+[[fvzau]][[GSDPG00688]][[superelements-169]]
+
+==== Superelements
+
+link:#beawu[`resource-env-ref`] (`glassfish-web.xml`,
+`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)
+
+[[fvyxj]][[GSDPG00689]][[subelements-161]]
+
+==== Subelements
+
+none - contains data
+
+[[beaww]][[GSDPG00254]][[resource-ref]]
+
+=== `resource-ref`
+
+Maps the `res-ref-name` in the corresponding Jakarta EE deployment
+descriptor file `resource-ref` entry to the absolute `jndi-name` of a
+resource.
+
+
+[NOTE]
+====
+Connections acquired from JMS connection factories are not shareable in
+the current release of {productName}. The `res-sharing-scope` element
+in the `ejb-jar.xml` file `resource-ref` element is ignored for JMS
+connection factories.
+
+When `resource-ref` specifies a JMS connection factory for the Open
+Message Queue, the `default-resource-principal` (name/password) must
+exist in the Message Queue user repository. Refer to the Security
+Management chapter in the olink:GMADG[Open Message Queue Administration
+Guide] for information on how to manage the Message Queue user
+repository.
+====
+
+
+[[fvywf]][[GSDPG00690]][[superelements-170]]
+
+==== Superelements
+
+link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`),
+link:#beass[`ejb`] (`glassfish-ejb-jar.xml`),
+link:#beaxx[`glassfish-application-client`]
+(`glassfish-application-client.xml`)
+
+[[fvyzz]][[GSDPG00691]][[subelements-162]]
+
+==== Subelements
+
+The following table describes subelements for the `resource-ref`
+element.
+
+[[GSDPG1002]][[sthref197]][[fvzbd]]
+
+
+Table C-125 `resource-ref` Subelements
+
+[width="100%",cols="33%,11%,56%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beawr[`res-ref-name`]
+
+
+ |only one |Specifies the `res-ref-name` in the corresponding Jakarta EE
+deployment descriptor file `resource-ref` entry.
+
+a|
+link:#beatw[`jndi-name`]
+
+
+ |only one |Specifies the absolute `jndi-name` of a resource.
+
+a|
+link:#beasn[`default-resource-principal`]
+
+
+ |zero or one |Specifies the default principal (user) for the resource.
+|===
+
+
+[[fvyzk]][[GSDPG00692]][[example-10]]
+
+==== Example
+
+[source,xml]
+----
+<resource-ref>
+   <res-ref-name>jdbc/EmployeeDBName</res-ref-name>
+   <jndi-name>jdbc/EmployeeDB</jndi-name>
+</resource-ref>
+----
+
+[[giyiy]][[GSDPG00255]][[resources]]
+
+=== `resources`
+
+Defines application-scoped resources for an enterprise application, web
+module, EJB module, connector module, or application client module. This
+is the root element; there can only be one `resources` element in a
+`glassfish-resources.xml` file. See link:dd-files.html#giyhh[The
+glassfish-resources.xml File].
+
+
+[NOTE]
+====
+You must specify a Java Naming and Directory Interface (JNDI) name for
+each resource. To avoid collisions with names of other enterprise
+resources in JNDI, and to avoid portability problems, all names in a
+{productName} application should begin with the string `java:app/`.
+====
+
+
+[[GSDPG1003]][[sthref198]]
+
+
+[[superelements-171]]
+==== Superelements
+
+none
+
+[[GSDPG1004]][[sthref199]]
+
+
+[[subelements-163]]
+==== Subelements
+
+The following table describes subelements for the `resources` element.
+
+[[GSDPG1005]][[sthref200]][[sthref201]]
+
+
+Table C-126 `resources` Subelements
+
+[width="100%",cols="31%,12%,57%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#giyhr[`custom-resource`]
+
+
+ |zero or more |Defines a custom resource.
+
+a|
+link:#giyin[`external-jndi-resource`]
+
+
+ |zero or more |Defines a resource that resides in an external JNDI
+repository.
+
+a|
+link:#giyhm[`jdbc-resource`]
+
+
+ |zero or more |Defines a JDBC (Java Database Connectivity) resource.
+
+a|
+link:#giyik[`mail-resource`]
+
+
+ |zero or more |Defines a Jakarta Mail resource.
+
+a|
+link:#giyhw[`admin-object-resource`]
+
+
+ |zero or more |Defines an administered object for an inbound resource
+adapter.
+
+a|
+link:#giyhv[`connector-resource`]
+
+
+ |zero or more |Defines a connector (resource adapter) resource.
+
+a|
+link:#giyit[`resource-adapter-config`]
+
+
+ |zero or more |Defines a resource adapter configuration.
+
+a|
+link:#giyil[`jdbc-connection-pool`]
+
+
+ |zero or more |Defines the properties that are required for creating a
+JDBC connection pool.
+
+a|
+link:#giygu[`connector-connection-pool`]
+
+
+ |zero or more |Defines the properties that are required for creating a
+connector connection pool.
+
+a|
+link:#giyht[`work-security-map`]
+
+
+ |zero or more |Defines a work security map.
+|===
+
+
+
+[NOTE]
+====
+Subelements of a `resources` element can occur in any order.
+====
+
+
+[[beawx]][[GSDPG00256]][[response-policy]]
+
+=== `response-policy`
+
+Defines the authentication policy requirements of the authentication
+provider's response processing.
+
+[[fvzcg]][[GSDPG00693]][[superelements-172]]
+
+==== Superelements
+
+link:#beavz[`provider-config`] (`sun-acc.xml`)
+
+[[fvyxm]][[GSDPG00694]][[subelements-164]]
+
+==== Subelements
+
+none
+
+[[fvyxf]][[GSDPG00695]][[attributes-37]]
+
+==== Attributes
+
+The following table describes attributes for the `response-policy`
+element.
+
+[[GSDPG1006]][[sthref202]][[fvyyr]]
+
+
+Table C-127 `response-policy` Attributes
+
+[width="172%",cols="13%,46%,41%",options="header",]
+|===
+|Attribute |Default |Description
+|`auth-source` |none |Specifies the type of required authentication,
+either `sender` (user name and password) or `content` (digital
+signature).
+
+|`auth-recipient` |none |Specifies whether recipient authentication
+occurs before or after content authentication. Allowed values are
+`before-content` and `after-content`.
+|===
+
+
+[[beawy]][[GSDPG00257]][[response-protection]]
+
+=== `response-protection`
+
+Defines the authentication policy requirements of the application's
+response processing.
+
+[[fvzdk]][[GSDPG00696]][[superelements-173]]
+
+==== Superelements
+
+link:#beauw[`message-security`] (`glassfish-web.xml`,
+`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)
+
+[[fvyxd]][[GSDPG00697]][[subelements-165]]
+
+==== Subelements
+
+none
+
+[[fvzeh]][[GSDPG00698]][[attributes-38]]
+
+==== Attributes
+
+The following table describes attributes for the `response-protection`
+element.
+
+[[GSDPG1007]][[sthref203]][[fvzej]]
+
+
+Table C-128 `response-protection` Attributes
+
+[width="172%",cols="13%,46%,41%",options="header",]
+|===
+|Attribute |Default |Description
+|`auth-source` |none |Specifies the type of required authentication,
+either `sender` (user name and password) or `content` (digital
+signature).
+
+|`auth-recipient` |none |Specifies whether recipient authentication
+occurs before or after content authentication. Allowed values are
+`before-content` and `after-content`.
+|===
+
+
+[[beawz]][[GSDPG00258]][[role-name]]
+
+=== `role-name`
+
+Contains the `role-name` in the `security-role` element of the
+corresponding Jakarta EE deployment descriptor file.
+
+[[fvzek]][[GSDPG00699]][[superelements-174]]
+
+==== Superelements
+
+link:#beaxg[`security-role-mapping`] (`glassfish-application.xml`,
+`glassfish-web.xml`, `glassfish-ejb-jar.xml`)
+
+[[fvzei]][[GSDPG00700]][[subelements-166]]
+
+==== Subelements
+
+none - contains data
+
+[[beaxb]][[GSDPG00259]][[sas-context]]
+
+=== `sas-context`
+
+Describes the sas-context fields.
+
+[[fvzel]][[GSDPG00701]][[superelements-175]]
+
+==== Superelements
+
+link:#beato[`ior-security-config`] (`glassfish-ejb-jar.xml`)
+
+[[fvzfb]][[GSDPG00702]][[subelements-167]]
+
+==== Subelements
+
+The following table describes subelements for the `sas-context` element.
+
+[[GSDPG1008]][[sthref204]][[fvzey]]
+
+
+Table C-129 `sas-context` Subelements
+
+[width="100%",cols="30%,11%,59%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#bearj[`caller-propagation`]
+
+
+ |only one |Specifies whether the target accepts propagated caller
+identities. The values are NONE, SUPPORTED, or REQUIRED.
+|===
+
+
+[[beaxc]][[GSDPG00260]][[schema]]
+
+=== `schema`
+
+Specifies the file that contains a description of the database schema to
+which the beans in this `sun-cmp-mappings.xml` file are mapped. If this
+element is empty, the database schema file is automatically generated at
+deployment time. Otherwise, the `schema` element names a `.dbschema`
+file with a pathname relative to the directory containing the
+`sun-cmp-mappings.xml` file, but without the `.dbschema` extension. See
+"link:application-development-guide/container_managed-persistence.html#GSDVG00439[Automatic Database Schema Capture]" in {productName} Application Development Guide.
+
+[[fvzfa]][[GSDPG00703]][[superelements-176]]
+
+==== Superelements
+
+link:#beaxy[`sun-cmp-mapping`] (`sun-cmp-mappings.xml`)
+
+[[fvzeq]][[GSDPG00704]][[subelements-168]]
+
+==== Subelements
+
+none - contains data
+
+[[fvzer]][[GSDPG00705]][[examples-1]]
+
+==== Examples
+
+[source,xml]
+----
+<schema/> <!-- use automatic schema generation -->
+
+<schema>CompanySchema</schema> <!-- use "CompanySchema.dbschema" -->
+----
+
+[[beaxd]][[GSDPG00261]][[schema-generator-properties]]
+
+=== `schema-generator-properties`
+
+Specifies field-specific column attributes in `property` subelements.
+
+[[fvzen]][[GSDPG00706]][[superelements-177]]
+
+==== Superelements
+
+link:#bearv[`cmp-resource`] (`glassfish-ejb-jar.xml`)
+
+[[fvzez]][[GSDPG00707]][[subelements-169]]
+
+==== Subelements
+
+The following table describes subelements for the
+`schema-generator-properties` element.
+
+[[GSDPG1009]][[sthref205]][[fvzex]]
+
+
+Table C-130 `schema-generator-properties` Subelements
+
+[width="100%",cols="40%,14%,46%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beavy[`property` (with subelements)]
+
+
+ |zero or more |Specifies a property name and value.
+|===
+
+
+[[fvzew]][[GSDPG00708]][[properties-12]]
+
+==== Properties
+
+The following table describes properties for the
+`schema-generator-properties` element.
+
+[[GSDPG1010]][[sthref206]][[fvzev]]
+
+
+Table C-131 `schema-generator-properties` Properties
+
+[width="172%",cols="17%,46%,37%",options="header",]
+|===
+|Property |Default |Description
+|`use-unique-table-names` |`false` |Specifies that generated table names
+are unique within each {productName} domain. This property can be
+overridden during deployment. See "link:application-development-guide/container_managed-persistence.html#GSDVG00438[Generation Options
+for CMP]" in {productName} Application
+Development Guide.
+
+|bean-name`.`field-name`.`attribute |none |Defines a column attribute.
+For attribute descriptions, see link:#fvymm[Table C-132].
+|===
+
+
+The following table lists the column attributes for properties defined
+in the `schema-generator-properties` element.
+
+[[GSDPG1011]][[sthref207]][[fvymm]]
+
+
+Table C-132 `schema-generator-properties` Column Attributes
+
+[width="100%",cols="24%,76%",options="header",]
+|===
+|Attribute |Description
+|`jdbc-type` |Specifies the JDBC type of the column created for the CMP
+field. The actual SQL type generated is based on this JDBC type but is
+database vendor specific.
+
+|`jdbc-maximum-length` a|
+Specifies the maximum number of characters stored in the column
+corresponding to the CMP field. Applies only when the actual SQL that is
+generated for the column requires a length.
+
+For example, a `jdbc-maximum-length` of `32` on a CMP `String` field
+such as `firstName` normally results in a column definition such as
+VARCHAR(32). But if the `jdbc-type` is `CLOB` and you are deploying on
+Oracle, the resulting column definition is CLOB. No length is given,
+because in an Oracle database, a CLOB has no length.
+
+|`jdbc-precision` |Specifies the maximum number of digits stored in a
+column which represents a numeric type.
+
+|`jdbc-scale` |Specifies the number of digits stored to the right of the
+decimal point in a column that represents a floating point number.
+
+|`jdbc-nullable` |Specifies whether the column generated for the CMP
+field allows null values.
+|===
+
+
+[[fvzem]][[GSDPG00709]][[example-11]]
+
+==== Example
+
+[source,xml]
+----
+<schema-generator-properties>
+   <property>
+         <name>Employee.firstName.jdbc-type</name>
+         <value>char</value>
+   </property>
+   <property>
+         <name>Employee.firstName.jdbc-maximum-length</name>
+         <value>25</value>
+   </property>
+   <property>
+         <name>use-unique-table-names</name>
+         <value>true</value>
+   </property>
+</schema-generator-properties>
+----
+
+[[beaxe]][[GSDPG00262]][[secondary-table]]
+
+=== `secondary-table`
+
+Specifies a bean's secondary table(s).
+
+[[fvzep]][[GSDPG00710]][[superelements-178]]
+
+==== Superelements
+
+link:#beasy[`entity-mapping`] (`sun-cmp-mappings.xml`)
+
+[[fvzeo]][[GSDPG00711]][[subelements-170]]
+
+==== Subelements
+
+The following table describes subelements for the `secondary-table`
+element.
+
+[[GSDPG1012]][[sthref208]][[fvzet]]
+
+
+Table C-133 `secondary table` Subelements
+
+[width="100%",cols="28%,15%,57%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beayd[`table-name`]
+
+
+ |only one |Specifies the name of a database table.
+
+a|
+link:#beasa[`column-pair`]
+
+
+ |one or more |Specifies the pair of columns that determine the
+relationship between two database tables.
+|===
+
+
+[[beaxf]][[GSDPG00263]][[security]]
+
+=== `security`
+
+Defines the SSL security configuration for IIOP/SSL communication with
+the target server.
+
+[[fvzes]][[GSDPG00712]][[superelements-179]]
+
+==== Superelements
+
+link:#beaye[`target-server`] (`sun-acc.xml`)
+
+[[fvzeu]][[GSDPG00713]][[subelements-171]]
+
+==== Subelements
+
+The following table describes subelements for the `security` element.
+
+[[GSDPG1013]][[sthref209]][[fvzfe]]
+
+
+Table C-134 `security` Subelements
+
+[width="100%",cols="20%,12%,68%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beaxs[`ssl`]
+
+
+ |only one |Specifies the SSL processing parameters.
+a|
+link:#beark[`cert-db`]
+
+
+ |only one |Not implemented. Included for backward compatibility only.
+|===
+
+
+[[giyhy]][[GSDPG00264]][[security-map]]
+
+=== `security-map`
+
+Maps the principal received during servlet or EJB authentication to the
+credentials accepted by the EIS. This mapping is optional. It is
+possible to map multiple {productName} principals to the same
+back-end principal.
+
+This is different from a link:#giyht[`work-security-map`], which maps a
+principal associated with an incoming work instance to a principal in
+the {productName}'s security domain.
+
+[[GSDPG1014]][[sthref210]]
+
+
+[[superelements-180]]
+==== Superelements
+
+link:#giygu[`connector-connection-pool`] (`glassfish-resources.xml`)
+
+[[GSDPG1015]][[sthref211]]
+
+
+[[subelements-172]]
+==== Subelements
+
+The following table describes subelements for the `security-map`
+element.
+
+[[GSDPG1016]][[sthref212]][[sthref213]]
+
+
+Table C-135 `security-map` Subelements
+
+[width="100%",cols="21%,12%,67%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beavv[`principal`]
+
+
+ |one or more |Contains the principal of the servlet or EJB client.
+a|
+link:#giyiq[`user-group`]
+
+
+ |one or more |Contains the group to which the principal belongs.
+a|
+link:#giyjv[`backend-principal`]
+
+
+ |only one |Specifies the user name and password required by the EIS.
+|===
+
+
+[[GSDPG1017]][[sthref214]]
+
+
+[[attributes-39]]
+==== Attributes
+
+The following table describes attributes for the `security-map` element.
+
+[[GSDPG1018]][[sthref215]][[sthref216]]
+
+
+Table C-136 `security-map` Attributes
+
+[width="100%",cols="23%,20%,57%",options="header",]
+|===
+|Attribute |Default |Description
+|`name` |none |Specifies a name for the security mapping.
+|===
+
+
+[[beaxg]][[GSDPG00265]][[security-role-mapping]]
+
+=== `security-role-mapping`
+
+Maps roles to users or groups in the currently active realm. See
+"link:application-development-guide/securing-apps.html#GSDVG00118[Realm Configuration]" in {productName} Application Development Guide.
+
+The role mapping element maps a role, as specified in the EJB JAR
+`role-name` entries, to a environment-specific user or group. If it maps
+to a user, it must be a concrete user which exists in the current realm,
+who can log into the server using the current authentication method. If
+it maps to a group, the realm must support groups and the group must be
+a concrete group which exists in the current realm. To be useful, there
+must be at least one user in that realm who belongs to that group.
+
+[[fvzfc]][[GSDPG00714]][[superelements-181]]
+
+==== Superelements
+
+link:#beaxw[`glassfish-application`] (`glassfish-application.xml`),
+link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`),
+link:#beaya[`glassfish-ejb-jar`] (`glassfish-ejb-jar.xml`)
+
+[[fvzfd]][[GSDPG00715]][[subelements-173]]
+
+==== Subelements
+
+The following table describes subelements for the
+`security-role-mapping` element.
+
+[[GSDPG1019]][[sthref217]][[fvzfj]]
+
+
+Table C-137 `security-role-mapping` Subelements
+
+[width="100%",cols="18%,33%,49%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beawz[`role-name`]
+
+
+ |only one |Contains the `role-name` in the `security-role` element of
+the corresponding Jakarta EE deployment descriptor file.
+
+a|
+link:#beavw[`principal-name`]
+
+
+ |one or more if no `group-name`, otherwise zero or more |Contains a
+principal (user) name in the current realm. In an enterprise bean, the
+principal must have the run-as role specified.
+
+a|
+link:#beati[`group-name`]
+
+
+ |one or more if no `principal-name`, otherwise zero or more |Contains a
+group name in the current realm.
+|===
+
+
+[[beaxh]][[GSDPG00266]][[service-endpoint-interface]]
+
+=== `service-endpoint-interface`
+
+Specifies the web service reference name relative to `java:comp/env`.
+
+[[fvzfm]][[GSDPG00716]][[superelements-182]]
+
+==== Superelements
+
+link:#beavt[`port-info`] (`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
+`glassfish-application-client.xml`)
+
+[[fvzfl]][[GSDPG00717]][[subelements-174]]
+
+==== Subelements
+
+none - contains data
+
+[[beaxi]][[GSDPG00267]][[service-impl-class]]
+
+=== `service-impl-class`
+
+Specifies the name of the generated service implementation class.
+
+[[fvzfg]][[GSDPG00718]][[superelements-183]]
+
+==== Superelements
+
+link:#beaxk[`service-ref`] (`glassfish-web.xml`,
+`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)
+
+[[fvzfk]][[GSDPG00719]][[subelements-175]]
+
+==== Subelements
+
+none - contains data
+
+[[beaxj]][[GSDPG00268]][[service-qname]]
+
+=== `service-qname`
+
+Specifies the WSDL service element that is being referred to.
+
+[[fvzfn]][[GSDPG00720]][[superelements-184]]
+
+==== Superelements
+
+link:#beaxk[`service-ref`] (`glassfish-web.xml`,
+`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`);
+link:#beayv[`webservice-endpoint`] (`glassfish-web.xml`,
+`glassfish-ejb-jar.xml`)
+
+[[fvzff]][[GSDPG00721]][[subelements-176]]
+
+==== Subelements
+
+The following table describes subelements for the `service-qname`
+element.
+
+[[GSDPG1020]][[sthref218]][[fvzfi]]
+
+
+Table C-138 `service-qname` subelements
+
+[width="100%",cols="30%,15%,55%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beavh[`namespaceURI`]
+
+
+ |only one |Specifies the namespace URI.
+a|
+link:#beaug[`localpart`]
+
+
+ |only one |Specifies the local part of a QNAME.
+|===
+
+
+[[beaxk]][[GSDPG00269]][[service-ref]]
+
+=== `service-ref`
+
+Specifies runtime settings for a web service reference. Runtime
+information is only needed in the following cases:
+
+* To define the port used to resolve a container-managed port
+* To define the default Stub/Call property settings for Stub objects
+* To define the URL of a final WSDL document to be used instead of the
+one associated with the `service-ref` in the standard Jakarta EE deployment
+descriptor
+
+[[fvzfh]][[GSDPG00722]][[superelements-185]]
+
+==== Superelements
+
+link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`),
+link:#beass[`ejb`] (`glassfish-ejb-jar.xml`),
+link:#beaxx[`glassfish-application-client`]
+(`glassfish-application-client.xml`)
+
+[[fvzhf]][[GSDPG00723]][[subelements-177]]
+
+==== Subelements
+
+The following table describes subelements for the `service-ref` element.
+
+[[GSDPG1021]][[sthref219]][[fvzgc]]
+
+
+Table C-139 `service-ref` subelements
+
+[width="100%",cols="23%,12%,65%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beaxl[`service-ref-name`]
+
+
+ |only one |Specifies the web service reference name relative to
+`java:comp/env`.
+
+a|
+link:#beavt[`port-info`]
+
+
+ |zero or more |Specifies information for a port within a web service
+reference.
+
+a|
+link:#beari[`call-property`]
+
+
+ |zero or more |Specifies JAX-RPC property values that can be set on a
+`javax.xml.rpc.Call` object before it is returned to the web service
+client.
+
+a|
+link:#beayw[`wsdl-override`]
+
+
+ |zero or one |Specifies a valid URL pointing to a final WSDL document.
+
+a|
+link:#beaxi[`service-impl-class`]
+
+
+ |zero or one |Specifies the name of the generated service
+implementation class.
+
+a|
+link:#beaxj[`service-qname`]
+
+
+ |zero or one |Specifies the WSDL service element that is being
+referenced.
+|===
+
+
+[[beaxl]][[GSDPG00270]][[service-ref-name]]
+
+=== `service-ref-name`
+
+Specifies the web service reference name relative to `java:comp/env`.
+
+[[fvzfx]][[GSDPG00724]][[superelements-186]]
+
+==== Superelements
+
+link:#beaxk[`service-ref`] (`glassfish-web.xml`,
+`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)
+
+[[fvzga]][[GSDPG00725]][[subelements-178]]
+
+==== Subelements
+
+none - contains data
+
+[[beaxm]][[GSDPG00271]][[servlet]]
+
+=== `servlet`
+
+Specifies a principal name for a servlet. Used for the `run-as` role
+defined in `web.xml`.
+
+[[fvzgd]][[GSDPG00726]][[superelements-187]]
+
+==== Superelements
+
+link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`)
+
+[[fvzhs]][[GSDPG00727]][[subelements-179]]
+
+==== Subelements
+
+The following table describes subelements for the `servlet` element.
+
+[[GSDPG1022]][[sthref220]][[fvzhy]]
+
+
+Table C-140 `servlet` Subelements
+
+[width="100%",cols="24%,12%,64%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beaxo[`servlet-name`]
+
+
+ |only one |Contains the name of a servlet, which is matched to a
+`servlet-name` in `web.xml`.
+
+a|
+link:#beavw[`principal-name`]
+
+
+ |zero or one |Contains a principal (user) name in the current realm.
+
+a|
+link:#beayv[`webservice-endpoint`]
+
+
+ |zero or more |Specifies information about a web service endpoint.
+|===
+
+
+[[beaxn]][[GSDPG00272]][[servlet-impl-class]]
+
+=== `servlet-impl-class`
+
+Specifies the automatically generated name of the servlet implementation
+class.
+
+[[fvzhx]][[GSDPG00728]][[superelements-188]]
+
+==== Superelements
+
+link:#beayv[`webservice-endpoint`] (`glassfish-web.xml`,
+`glassfish-ejb-jar.xml`)
+
+[[fvzfs]][[GSDPG00729]][[subelements-180]]
+
+==== Subelements
+
+none - contains data
+
+[[beaxo]][[GSDPG00273]][[servlet-name]]
+
+=== `servlet-name`
+
+Specifies the name of a servlet, which is matched to a `servlet-name` in
+`web.xml`. This name must be present in `web.xml`.
+
+[[fvzhj]][[GSDPG00730]][[superelements-189]]
+
+==== Superelements
+
+link:#bearh[`cache-mapping`], link:#beaxm[`servlet`]
+(`glassfish-web.xml`)
+
+[[fvzir]][[GSDPG00731]][[subelements-181]]
+
+==== Subelements
+
+none - contains data
+
+[[beaxp]][[GSDPG00274]][[session-config]]
+
+=== `session-config`
+
+Specifies session configuration information. Overrides the web container
+settings for an individual web module.
+
+[[fvzic]][[GSDPG00732]][[superelements-190]]
+
+==== Superelements
+
+link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`)
+
+[[fvzfy]][[GSDPG00733]][[subelements-182]]
+
+==== Subelements
+
+The following table describes subelements for the `session-config`
+element.
+
+[[GSDPG1023]][[sthref221]][[fvzib]]
+
+
+Table C-141 `session-config` Subelements
+
+[width="100%",cols="31%,16%,53%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beaxq[`session-manager`]
+
+
+ |zero or one |Specifies session manager configuration information.
+a|
+link:#beaxr[`session-properties`]
+
+
+ |zero or one |Specifies session properties.
+a|
+link:#beash[`cookie-properties`]
+
+
+ |zero or one |Specifies session cookie properties.
+|===
+
+
+[[beaxq]][[GSDPG00275]][[session-manager]]
+
+=== `session-manager`
+
+Specifies session manager information.
+
+[[fvzgx]][[GSDPG00734]][[superelements-191]]
+
+==== Superelements
+
+link:#beaxp[`session-config`] (`glassfish-web.xml`)
+
+[[fvzit]][[GSDPG00735]][[subelements-183]]
+
+==== Subelements
+
+The following table describes subelements for the `session-manager`
+element.
+
+[[GSDPG1024]][[sthref222]][[fvzgo]]
+
+
+Table C-142 `session-manager` Subelements
+
+[width="100%",cols="32%,15%,53%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beaum[`manager-properties`]
+
+
+ |zero or one |Specifies session manager properties.
+a|
+link:#beaxu[`store-properties`]
+
+
+ |zero or one |Specifies session persistence (storage) properties.
+|===
+
+
+[[fvzgm]][[GSDPG00736]][[attributes-40]]
+
+==== Attributes
+
+The following table describes attributes for the `session-manager`
+element.
+
+[[GSDPG1025]][[sthref223]][[fvzje]]
+
+
+Table C-143 `session-manager` Attributes
+
+[width="172%",cols="13%,46%,41%",options="header",]
+|===
+|Attribute |Default |Description
+|`persistence-type` |`memory` a|
+(optional) Specifies the session persistence mechanism. Allowed values
+are `memory`, `file`, and `replicated`.
+
+If you have installed and configured Coherence*Web, the `coherence-web`
+persistence type is also available. For more information, see Using
+Coherence*Web with {productName}
+(`http://docs.oracle.com/cd/E18686_01/coh.37/e18690/glassfish.html`).
+
+|===
+
+
+[[beaxr]][[GSDPG00276]][[session-properties]]
+
+=== `session-properties`
+
+Specifies session properties.
+
+[[fvzha]][[GSDPG00737]][[superelements-192]]
+
+==== Superelements
+
+link:#beaxp[`session-config`] (`glassfish-web.xml`)
+
+[[fvzgk]][[GSDPG00738]][[subelements-184]]
+
+==== Subelements
+
+The following table describes subelements for the `session-properties`
+element.
+
+[[GSDPG1026]][[sthref224]][[fvzgv]]
+
+
+Table C-144 `session-properties` Subelements
+
+[width="100%",cols="36%,14%,50%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beavx[`property` (with attributes)]
+
+
+ |zero or more |Specifies a property, which has a name and a value.
+|===
+
+
+[[fvzht]][[GSDPG00739]][[properties-13]]
+
+==== Properties
+
+The following table describes properties for the `session-properties`
+element.
+
+[[GSDPG1027]][[sthref225]][[fvzii]]
+
+
+Table C-145 `session-properties` Properties
+
+[width="172%",cols="14%,46%,40%",options="header",]
+|===
+|Property |Default |Description
+|`timeoutSeconds` |`1800` a|
+Specifies the default maximum inactive interval (in seconds) for all
+sessions created in this web module. If set to `0` or less, sessions in
+this web module never expire.
+
+If a `session-timeout` element is specified in the `web.xml` file, the
+`session-timeout` value overrides any `timeoutSeconds` value. If neither
+`session-timeout` nor `timeoutSeconds` is specified, the
+`timeoutSeconds` default is used.
+
+Note that the `session-timeout` element in `web.xml` is specified in
+minutes, not seconds.
+
+|`enableCookies` |`true` |Uses cookies for session tracking if set to
+`true`.
+
+|`enableURLRewriting` |`true` |Enables URL rewriting. This provides
+session tracking via URL rewriting when the browser does not accept
+cookies. You must also use an `encodeURL` or `encodeRedirectURL` call in
+the servlet or JSP.
+|===
+
+
+[[beaxs]][[GSDPG00277]][[ssl]]
+
+`ssl`
+~~~~~
+
+Defines SSL processing parameters.
+
+[[fvzft]][[GSDPG00740]][[superelements-193]]
+
+==== Superelements
+
+link:#beaxf[`security`] (`sun-acc.xml`)
+
+[[fvzgh]][[GSDPG00741]][[subelements-185]]
+
+==== Subelements
+
+none
+
+[[fvzip]][[GSDPG00742]][[attributes-41]]
+
+==== Attributes
+
+The following table describes attributes for the `SSL` element.
+
+[[GSDPG1028]][[sthref226]][[fvzgb]]
+
+
+Table C-146 `ssl attributes`
+
+[width="172%",cols="16%,46%,38%",options="header",]
+|===
+|Attribute |Default |Description
+|`cert-nickname` |`s1as` |(optional) The nickname of the server
+certificate in the certificate database or the PKCS#11 token. In the
+certificate, the name format is tokenname`:`nickname. Including the
+tokenname`:` part of the name in this attribute is optional.
+
+|`ssl2-enabled` |`false` |(optional) Determines whether SSL2 is enabled.
+
+|`ssl2-ciphers` |none |(optional) A comma-separated list of the SSL2
+ciphers to be used. Ciphers not explicitly listed will be disabled for
+the target, even if those ciphers are available in the particular cipher
+suite you are using. If this option is not used, all supported ciphers
+are assumed to be enabled. Allowed values are `rc4`, `rc4export`, `rc2`,
+`rc2export`, `idea`, `des`, `desede3`.
+
+|`ssl3-enabled` |`true` |(optional) Determines whether SSL3 is enabled.
+
+|`ssl3-tls-ciphers` |none |(optional) A comma-separated list of the
+SSL3 and/or TLS ciphers to be used. Ciphers not explicitly listed will
+be disabled for the target, even if those ciphers are available in the
+particular cipher suite you are using. If this option is not used, all
+supported ciphers are assumed to be enabled. Allowed values are
+`SSL_RSA_WITH_RC4_128_MD5`, `SSL_RSA_WITH_3DES_EDE_CBC_SHA`,
+`SSL_RSA_WITH_DES_CBC_SHA`, `SSL_RSA_EXPORT_WITH_RC4_40_MD5`,
+`SSL_RSA_WITH_NULL_MD5`, `SSL_RSA_WITH_RC4_128_SHA`,
+`SSL_RSA_WITH_NULL_SHA`. Values available in previous releases are
+supported for backward compatibility.
+
+|`tls-enabled` |`true` |(optional) Determines whether TLS is enabled.
+
+|`tls-rollback-enabled` |`true` |(optional) Determines whether TLS
+rollback is enabled. Enable TLS rollback for Microsoft Internet Explorer
+5.0 and 5.5.
+|===
+
+
+[[beaxt]][[GSDPG00278]][[steady-pool-size]]
+
+=== `steady-pool-size`
+
+Specifies the initial and minimum number of bean instances that are
+maintained in the pool. Default is 32. Applies to stateless session
+beans and message-driven beans.
+
+[[fvziq]][[GSDPG00743]][[superelements-194]]
+
+==== Superelements
+
+link:#bearb[`bean-pool`] (`glassfish-ejb-jar.xml`)
+
+[[fvziy]][[GSDPG00744]][[subelements-186]]
+
+==== Subelements
+
+none - contains data
+
+[[beaxu]][[GSDPG00279]][[store-properties]]
+
+=== `store-properties`
+
+Specifies session persistence (storage) properties.
+
+[[fvzie]][[GSDPG00745]][[superelements-195]]
+
+==== Superelements
+
+link:#beaxq[`session-manager`] (`glassfish-web.xml`)
+
+[[fvzid]][[GSDPG00746]][[subelements-187]]
+
+==== Subelements
+
+The following table describes subelements for the `store-properties`
+element.
+
+[[GSDPG1029]][[sthref227]][[fvzif]]
+
+
+Table C-147 `store-properties` Subelements
+
+[width="100%",cols="37%,14%,49%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beavx[`property` (with attributes)]
+
+
+ |zero or more |Specifies a property, which has a name and a value.
+|===
+
+
+[[fvzho]][[GSDPG00747]][[properties-14]]
+
+==== Properties
+
+The following table describes properties for the `store-properties`
+element.
+
+[[GSDPG1030]][[sthref228]][[fvzgr]]
+
+
+Table C-148 `store-properties` Properties
+
+[width="100%",cols="21%,23%,56%",options="header",]
+|===
+|Property |Default |Description
+|`directory` |domain-dir``/generated/jsp/``app-name``/``module-name``_war`` a|
+Specifies the absolute or relative pathname of the directory into which
+individual session files are written. A relative path is relative to the
+temporary work directory for this web module.
+
+Applicable only if the `persistence-type` attribute of the parent
+link:#beaxq[`session-manager`] element is `file`.
+
+|`persistenceScope` |`session` a|
+Specifies how much of the session state is stored. Allowed values are as
+follows:
+
+* `session` - The entire session state is stored every time. This mode
+provides the best guarantee that your session data is correctly stored
+for any distributable web module.
+* `modified-session` - The entire session state is stored if it has been
+modified. A session is considered to have been modified if
+`HttpSession.setAttribute()` or `HttpSession.removeAttribute()` was
+called. You must guarantee that `setAttribute` is called every time an
+attribute is changed. This is not a Jakarta EE specification requirement,
+but it is required for this mode to work properly.
+* `modified-attribute` - Only modified session attributes are stored.
+For this mode to work properly, you must follow some guidelines, which
+are explained immediately following this table.
+
+Applicable only if the `persistence-type` attribute of the parent
+link:#beaxq[`session-manager`] element is `replicated`.
+
+|===
+
+
+If the `persistenceScope` store property is set to `modified-attribute`,
+a web module must follow these guidelines:
+
+* Call `setAttribute` every time the session state is modified.
+* Make sure there are no cross-references between attributes. The object
+graph under each distinct attribute key is serialized and stored
+separately. If there are any object cross references between the objects
+under each separate key, they are not serialized and deserialized
+correctly.
+* Distribute the session state across multiple attributes, or at least
+between a read-only attribute and a modifiable attribute.
+
+[[beaxv]][[GSDPG00280]][[stub-property]]
+
+=== `stub-property`
+
+Specifies JAX-RPC property values that are set on a `javax.xml.rpc.Stub`
+object before it is returned to the web service client. The property
+names can be any properties supported by the JAX-RPC `Stub`
+implementation.
+
+[[fvzgu]][[GSDPG00748]][[superelements-196]]
+
+==== Superelements
+
+link:#beavt[`port-info`] (`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
+`glassfish-application-client.xml`)
+
+[[fvzij]][[GSDPG00749]][[subelements-188]]
+
+==== Subelements
+
+The following table describes subelements for the `stub-property`
+element.
+
+[[GSDPG1031]][[sthref229]][[fvziz]]
+
+
+Table C-149 `stub-property` subelements
+
+[width="100%",cols="23%,13%,64%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beavf[`name`]
+
+
+ |only one |Specifies the name of the entity.
+a|
+link:#beayo[`value`]
+
+
+ |only one |Specifies the value of the entity.
+|===
+
+
+[[gawoa]][[GSDPG00750]][[properties-15]]
+
+==== Properties
+
+The following table describes properties for the `stub-property`
+element.
+
+[[GSDPG1032]][[sthref230]][[gawou]]
+
+
+Table C-150 `stub-property` properties
+
+[width="181%",cols="10%,49%,41%",options="header",]
+|===
+|Property |Default |Description
+|`jbi-enabled` |`true` |Determines whether the visibility of this
+endpoint as a Java Business Integration service is enabled or disabled.
+|===
+
+
+[[fvzji]][[GSDPG00751]][[example-12]]
+
+==== Example
+
+[source,xml]
+----
+<service-ref>
+<service-ref-name>service/FooProxy</service-ref-name>
+  <port-info>
+       <service-endpoint-interface>a.FooPort</service-endpoint-interface>
+       <wsdl-port>
+          <namespaceURI>urn:Foo</namespaceURI>
+          <localpart>FooPort</localpart>
+       </wsdl-port>
+       <stub-property>
+          <name>javax.xml.rpc.service.endpoint.address</name>
+          <value>http://localhost:8080/a/Foo</value>
+       </stub-property>
+  </port-info>
+</service-ref>
+----
+
+[[beaxy]][[GSDPG00281]][[sun-cmp-mapping]]
+
+=== `sun-cmp-mapping`
+
+Specifies beans mapped to a particular database schema.
+
+
+[NOTE]
+====
+A bean cannot be related to a bean that maps to a different database
+schema, even if the beans are deployed in the same EJB JAR file.
+====
+
+
+[[fvzhh]][[GSDPG00752]][[superelements-197]]
+
+==== Superelements
+
+link:#beaxz[`sun-cmp-mappings`] (`sun-cmp-mappings.xml`)
+
+[[fvzjg]][[GSDPG00753]][[subelements-189]]
+
+==== Subelements
+
+The following table describes subelements for the `sun-cmp-mapping`
+element.
+
+[[GSDPG1033]][[sthref231]][[fvzhm]]
+
+
+Table C-151 `sun-cmp-mapping` Subelements
+
+[width="100%",cols="20%,13%,67%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beaxc[`schema`]
+
+
+ |only one |Specifies the file that contains a description of the
+database schema.
+
+a|
+link:#beasy[`entity-mapping`]
+
+
+ |one or more |Specifies the mapping of a bean to database columns.
+|===
+
+
+[[beaxz]][[GSDPG00282]][[sun-cmp-mappings]]
+
+=== `sun-cmp-mappings`
+
+Defines the {productName} specific CMP mapping configuration for an
+EJB JAR file. This is the root element; there can only be one
+`sun-cmp-mappings` element in a `sun-cmp-mappings.xml` file. See
+link:dd-files.html#beaqn[The sun-cmp-mappings.xml File].
+
+[[fvzix]][[GSDPG00754]][[superelements-198]]
+
+==== Superelements
+
+none
+
+[[fvzjj]][[GSDPG00755]][[subelements-190]]
+
+==== Subelements
+
+The following table describes subelements for the `sun-cmp-mappings`
+element.
+
+[[GSDPG1034]][[sthref232]][[fvzin]]
+
+
+Table C-152 `sun-cmp-mappings` Subelements
+
+[width="100%",cols="32%,16%,52%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beaxy[`sun-cmp-mapping`]
+
+
+ |one or more |Specifies beans mapped to a particular database schema.
+|===
+
+
+[[beayd]][[GSDPG00283]][[table-name]]
+
+=== `table-name`
+
+Specifies the name of a database table. The table must be present in the
+database schema file. See "link:application-development-guide/container_managed-persistence.html#GSDVG00439[Automatic Database Schema
+Capture]" in {productName} Application
+Development Guide.
+
+[[fvzis]][[GSDPG00756]][[superelements-199]]
+
+==== Superelements
+
+link:#beasy[`entity-mapping`], link:#beaxe[`secondary-table`]
+(`sun-cmp-mappings.xml`)
+
+[[fvzjk]][[GSDPG00757]][[subelements-191]]
+
+==== Subelements
+
+none - contains data
+
+[[beaye]][[GSDPG00284]][[target-server]]
+
+=== `target-server`
+
+Specifies the IIOP listener for the target server. Also specifies IIOP
+endpoints used for load balancing. If the {productName} instance on
+which the application client is deployed participates in a cluster,
+{productName} finds all currently active IIOP endpoints in the
+cluster automatically. However, a client should have at least two
+endpoints specified for bootstrapping purposes, in case one of the
+endpoints has failed.
+
+A listener or endpoint is in the form host`:`port, where the host is an
+IP address or host name, and the port specifies the port number.
+
+Not used if the deprecated `endpoints` property is defined for load
+balancing. For more information, see link:#bearr[`client-container`].
+
+[[fvzgy]][[GSDPG00758]][[superelements-200]]
+
+==== Superelements
+
+link:#bearr[`client-container`] (`sun-acc.xml`)
+
+[[fvzhi]][[GSDPG00759]][[subelements-192]]
+
+==== Subelements
+
+The following table describes subelements for the `target-server`
+element.
+
+[[GSDPG1035]][[sthref233]][[fvzhg]]
+
+
+Table C-153 `target-server` subelements
+
+[width="100%",cols="23%,14%,63%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beaso[`description`]
+
+
+ |zero or one |Specifies the description of the target server.
+
+a|
+link:#beaxf[`security`]
+
+
+ |zero or one |Specifies the security configuration for the IIOP/SSL
+communication with the target server.
+|===
+
+
+[[fvzfp]][[GSDPG00760]][[attributes-42]]
+
+==== Attributes
+
+The following table describes attributes for the `target-server`
+element.
+
+[[GSDPG1036]][[sthref234]][[fvzgg]]
+
+
+Table C-154 `target-server` attributes
+
+[width="181%",cols="7%,49%,44%",options="header",]
+|===
+|Attribute |Default |Description
+|`name` |none |Specifies the name of the server instance accessed by the
+client container.
+
+|`address` |none |Specifies the host name or IP address (resolvable by
+DNS) of the server to which this client attaches.
+
+|`port` |none a|
+Specifies the naming service port number of the server to which this
+client attaches.
+
+For a new server instance, assign a port number other than 3700. You can
+change the port number in the Administration Console. Click the Help
+button in the Administration Console for more information.
+
+|===
+
+
+[[beayf]][[GSDPG00285]][[tie-class]]
+
+=== `tie-class`
+
+Specifies the automatically generated name of a tie implementation class
+for a port component.
+
+[[fvzgz]][[GSDPG00761]][[superelements-201]]
+
+==== Superelements
+
+link:#beayv[`webservice-endpoint`] (`glassfish-web.xml`,
+`glassfish-ejb-jar.xml`)
+
+[[fvzfq]][[GSDPG00762]][[subelements-193]]
+
+==== Subelements
+
+none - contains data
+
+[[beayg]][[GSDPG00286]][[timeout]]
+
+=== `timeout`
+
+Specifies the link:#bearh[`cache-mapping`] specific maximum amount of
+time in seconds that an entry can remain in the cache after it is
+created or refreshed. If not specified, the default is the value of the
+`timeout` attribute of the link:#beard[`cache`] element.
+
+[[fvzhc]][[GSDPG00763]][[superelements-202]]
+
+==== Superelements
+
+link:#bearh[`cache-mapping`] (`glassfish-web.xml`)
+
+[[fvziv]][[GSDPG00764]][[subelements-194]]
+
+==== Subelements
+
+none - contains data
+
+[[fvzhd]][[GSDPG00765]][[attributes-43]]
+
+==== Attributes
+
+The following table describes attributes for the `timeout` element.
+
+[[GSDPG1037]][[sthref235]][[fvzih]]
+
+
+Table C-155 `timeout` Attributes
+
+[width="181%",cols="51%,11%,38%",options="header",]
+|===
+|Attribute |Default |Description
+|`name` |none |Specifies the timeout input parameter, whose value is
+interpreted in seconds. The field's type must be `java.lang.Long` or
+`java.lang.Integer`.
+
+|`scope` |`request.attribute` |(optional) Specifies the scope from which
+the input parameter is retrieved. Allowed values are
+`context.attribute`, `request.header`, `request.parameter`,
+`request.cookie`, `request.attribute`, and `session.attribute`.
+|===
+
+
+[[beayh]][[GSDPG00287]][[transport-config]]
+
+=== `transport-config`
+
+Specifies the security transport information.
+
+[[fvzfo]][[GSDPG00766]][[superelements-203]]
+
+==== Superelements
+
+link:#beato[`ior-security-config`] (`glassfish-ejb-jar.xml`)
+
+[[fvzhv]][[GSDPG00767]][[subelements-195]]
+
+==== Subelements
+
+The following table describes subelements for the `transport-config`
+element.
+
+[[GSDPG1038]][[sthref236]][[fvziu]]
+
+
+Table C-156 `transport-config` Subelements
+
+[width="100%",cols="30%,10%,60%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beatn[`integrity`]
+
+
+ |only one |Specifies if the target supports integrity-protected
+messages. The values are NONE, SUPPORTED, or REQUIRED.
+
+a|
+link:#beasc[`confidentiality`]
+
+
+ |only one |Specifies if the target supports privacy-protected messages.
+The values are NONE, SUPPORTED, or REQUIRED.
+
+a|
+link:#beata[`establish-trust-in-target`]
+
+
+ |only one |Specifies if the target is capable of authenticating to a
+client. The values are NONE, SUPPORTED, or REQUIRED.
+
+a|
+link:#beasz[`establish-trust-in-client`]
+
+
+ |only one |Specifies if the target is capable of authenticating a
+client. The values are NONE, SUPPORTED, or REQUIRED.
+|===
+
+
+[[beayi]][[GSDPG00288]][[transport-guarantee]]
+
+=== `transport-guarantee`
+
+Specifies that the communication between client and server is `NONE`,
+`INTEGRAL`, or `CONFIDENTIAL`.
+
+* `NONE` means the application does not require any transport
+guarantees.
+* `INTEGRAL` means the application requires that the data sent between
+client and server be sent in such a way that it can't be changed in
+transit.
+* `CONFIDENTIAL` means the application requires that the data be
+transmitted in a fashion that prevents other entities from observing the
+contents of the transmission.
+
+In most cases, a value of `INTEGRAL` or `CONFIDENTIAL` indicates that
+the use of SSL is required.
+
+[[fvzhb]][[GSDPG00768]][[superelements-204]]
+
+==== Superelements
+
+link:#beayv[`webservice-endpoint`] (`glassfish-web.xml`,
+`glassfish-ejb-jar.xml`)
+
+[[fvzgl]][[GSDPG00769]][[subelements-196]]
+
+==== Subelements
+
+none - contains data
+
+[[beayk]][[GSDPG00289]][[unique-id]]
+
+=== `unique-id`
+
+Contains the unique ID for the application. This value is automatically
+updated each time the application is deployed or redeployed. Do not edit
+this value.
+
+[[fvzig]][[GSDPG00770]][[superelements-205]]
+
+==== Superelements
+
+link:#beaxw[`glassfish-application`] (`glassfish-application.xml`),
+link:#beasx[`enterprise-beans`] (`glassfish-ejb-jar.xml`)
+
+[[fvzjc]][[GSDPG00771]][[subelements-197]]
+
+==== Subelements
+
+none - contains data
+
+[[beayl]][[GSDPG00290]][[url-pattern]]
+
+=== `url-pattern`
+
+Specifies a servlet URL pattern for which caching is enabled. See the
+Servlet 2.4 specification section SRV. 11.2 for applicable patterns.
+
+[[fvziw]][[GSDPG00772]][[superelements-206]]
+
+==== Superelements
+
+link:#bearh[`cache-mapping`] (`glassfish-web.xml`)
+
+[[fvzfw]][[GSDPG00773]][[subelements-198]]
+
+==== Subelements
+
+none - contains data
+
+[[giyiq]][[GSDPG00291]][[user-group]]
+
+=== `user-group`
+
+Contains the group to which the principal belongs.
+
+[[GSDPG1039]][[sthref237]]
+
+
+[[superelements-207]]
+==== Superelements
+
+link:#giyhy[`security-map`] (`glassfish-resources.xml`)
+
+[[GSDPG1040]][[sthref238]]
+
+
+[[subelements-199]]
+==== Subelements
+
+none - contains data
+
+[[beaym]][[GSDPG00292]][[use-thread-pool-id]]
+
+=== `use-thread-pool-id`
+
+Specifies the thread pool from which threads are selected for remote
+invocations of this bean.
+
+[[fvzhz]][[GSDPG00774]][[superelements-208]]
+
+==== Superelements
+
+link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
+
+[[fvzhp]][[GSDPG00775]][[subelements-200]]
+
+==== Subelements
+
+none - contains data
+
+[[beayo]][[GSDPG00293]][[value]]
+
+=== `value`
+
+Specifies the value of the entity.
+
+[[fvzhq]][[GSDPG00776]][[superelements-209]]
+
+==== Superelements
+
+link:#beari[`call-property`], link:#beaxv[`stub-property`]
+(`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
+`glassfish-application-client.xml`); link:#beavy[`property` (with
+subelements)] (`glassfish-ejb-jar.xml`)
+
+[[fvzhe]][[GSDPG00777]][[subelements-201]]
+
+==== Subelements
+
+none - contains data
+
+[[gikqk]][[GSDPG00294]][[valve]]
+
+=== `valve`
+
+Specifies a custom valve for this web application. You can define a
+valve for all the web applications on a specific virtual server. For
+details, see link:reference-manual/create-virtual-server.html#GSRFM00062[`create-virtual-server`(1)].
+
+[[giksf]][[GSDPG00778]][[superelements-210]]
+
+==== Superelements
+
+link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`)
+
+[[gikvt]][[GSDPG00779]][[subelements-202]]
+
+==== Subelements
+
+The following table describes subelements for the `valve` element.
+
+[[GSDPG1041]][[sthref239]][[giktu]]
+
+
+Table C-157 `valve` Subelements
+
+[width="100%",cols="25%,12%,63%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beaso[`description`]
+
+
+ |zero or one |Specifies a text description of this element.
+a|
+link:#beavx[`property` (with attributes)]
+
+
+ |zero or more |Specifies a property, which has a name and a value.
+|===
+
+
+[[gikuo]][[GSDPG00780]][[attributes-44]]
+
+==== Attributes
+
+The following table describes attributes for the `valve` element.
+
+[[GSDPG1042]][[sthref240]][[gikqw]]
+
+
+Table C-158 `valve` Attributes
+
+[width="172%",cols="9%,46%,45%",options="header",]
+|===
+|Attribute |Default |Description
+|`name` |none |Specifies a unique name for the valve.
+
+|`class-name` |none |Specifies the fully qualified class name of the
+valve. The valve class must implement the org.apache.catalina.Valve
+interface from Tomcat or previous {productName} releases, or the
+org.glassfish.web.valve.GlassFishValve interface from the current
+{productName} release.
+|===
+
+
+[[giksd]][[GSDPG00781]][[example-13]]
+
+==== Example
+
+[source,xml]
+----
+<valve name="MyValve" classname="org.glassfish.extension.Valve">
+   <property name="MyProperty1" value="MyValue1" />
+   <property name="MyProperty2" value="MyValue2" />
+</valve>
+----
+
+[[gbgdw]][[GSDPG00295]][[vendor]]
+
+=== `vendor`
+
+Specifies a vendor-specific icon, splash screen, text string, or a
+combination of these for Java Web Start download and launch screens. The
+complete format of this element's data is as follows:
+
+[source,xml]
+----
+<vendor>icon-image-URI::splash-screen-image-URI::vendor-text</vendor>
+----
+
+The following example vendor element contains an icon, a splash screen,
+and a text string:
+
+[source,xml]
+----
+<vendor>images/icon.jpg::otherDir/splash.jpg::MyCorp, Inc.</vendor>
+----
+
+The following example vendor element contains an icon and a text string:
+
+[source,xml]
+----
+<vendor>images/icon.jpg::MyCorp, Inc.</vendor>
+----
+
+The following example vendor element contains a splash screen and a text
+string; note the initial double colon:
+
+[source,xml]
+----
+<vendor>::otherDir/splash.jpg::MyCorp, Inc.</vendor>
+----
+
+The following example vendor element contains only a text string:
+
+[source,xml]
+----
+<vendor>MyCorp, Inc.</vendor>
+----
+
+The default value is the text string `Application Client`.
+
+[[gbgdu]][[GSDPG00782]][[superelements-211]]
+
+==== Superelements
+
+link:#gauax[`java-web-start-access`]
+(`glassfish-application-client.xml`)
+
+[[gbgcq]][[GSDPG00783]][[subelements-203]]
+
+==== Subelements
+
+none - contains data
+
+[[gkkfd]][[GSDPG00296]][[version-identifier]]
+
+=== `version-identifier`
+
+Contains version information for an application or module. For more
+information about application versioning, see
+link:overview.html#gkhhv[Module and Application Versions].
+
+[[GSDPG1043]][[sthref241]]
+
+
+[[superelements-212]]
+==== Superelements
+
+link:#beaxw[`glassfish-application`] (`glassfish-application.xml`),
+link:#beayb[`glassfish-web-app`] (`glassfish-web-app.xml`),
+link:#beaya[`glassfish-ejb-jar`] (`glassfish-ejb-jar.xml`),
+link:#beaxx[`glassfish-application-client`]
+(`glassfish-application-client.xml`)
+
+[[GSDPG1044]][[sthref242]]
+
+
+[[subelements-204]]
+==== Subelements
+
+none - contains data
+
+[[beayp]][[GSDPG00297]][[victim-selection-policy]]
+
+=== `victim-selection-policy`
+
+Specifies how stateful session beans are selected for passivation.
+Possible values are First In, First Out (`FIFO`), Least Recently Used
+(`LRU`), Not Recently Used (`NRU`). The default value is `NRU`, which is
+actually pseudo-LRU.
+
+
+[NOTE]
+====
+You cannot plug in your own victim selection algorithm.
+====
+
+
+The victims are generally passivated into a backup store (typically a
+file system or database). This store is cleaned during startup, and also
+by a periodic background process that removes idle entries as specified
+by `removal-timeout-in-seconds`. The backup store is monitored by a
+background thread (or sweeper thread) to remove unwanted entries.
+
+Applies to stateful session beans.
+
+[[fvzhu]][[GSDPG00784]][[superelements-213]]
+
+==== Superelements
+
+link:#beara[`bean-cache`] (`glassfish-ejb-jar.xml`)
+
+[[fvzfr]][[GSDPG00785]][[subelements-205]]
+
+==== Subelements
+
+none - contains data
+
+[[fvzgi]][[GSDPG00786]][[example-14]]
+
+==== Example
+
+[source,xml]
+----
+<victim-selection-policy>LRU</victim-selection-policy>
+----
+
+If both SSL2 and SSL3 are enabled, the server tries SSL3 encryption
+first. If that fails, the server tries SSL2 encryption. If both SSL2 and
+SSL3 are enabled for a virtual server, the server tries SSL3 encryption
+first. If that fails, the server tries SSL2 encryption.
+
+[[beayr]][[GSDPG00298]][[web]]
+
+`web`
+~~~~~
+
+Specifies the application's web tier configuration.
+
+[[fvzil]][[GSDPG00787]][[superelements-214]]
+
+==== Superelements
+
+link:#beaxw[`glassfish-application`] (`glassfish-application.xml`)
+
+[[fvzge]][[GSDPG00788]][[subelements-206]]
+
+==== Subelements
+
+The following table describes subelements for the `web` element.
+
+[[GSDPG1045]][[sthref243]][[fvzfz]]
+
+
+Table C-159 `web` Subelements
+
+[width="100%",cols="24%,11%,65%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beays[`web-uri`]
+
+
+ |only one |Contains the web URI for the application.
+a|
+link:#beasg[`context-root`]
+
+
+ |only one |Contains the web context root for the web module.
+|===
+
+
+[[beays]][[GSDPG00299]][[web-uri]]
+
+=== `web-uri`
+
+Contains the web URI for the application. Must match the corresponding
+element in the `application.xml` file.
+
+[[fvzhk]][[GSDPG00789]][[superelements-215]]
+
+==== Superelements
+
+link:#beayr[`web`] (`glassfish-application.xml`)
+
+[[fvzik]][[GSDPG00790]][[subelements-207]]
+
+==== Subelements
+
+none - contains data
+
+[[beayt]][[GSDPG00300]][[webservice-description]]
+
+=== `webservice-description`
+
+Specifies a name and optional publish location for a web service.
+
+[[fvzjd]][[GSDPG00791]][[superelements-216]]
+
+==== Superelements
+
+link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`),
+link:#beasx[`enterprise-beans`] (`glassfish-ejb-jar.xml`)
+
+[[fvzgs]][[GSDPG00792]][[subelements-208]]
+
+==== Subelements
+
+The following table describes subelements for the
+`webservice-description` element.
+
+[[GSDPG1046]][[sthref244]][[fvzjb]]
+
+
+Table C-160 `webservice-description` subelements
+
+[width="100%",cols="33%,11%,56%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beayu[`webservice-description-name`]
+
+
+ |only one |Specifies a unique name for the web service within a web or
+EJB module.
+
+a|
+link:#beayy[`wsdl-publish-location`]
+
+
+ |zero or one |Specifies the URL of a directory to which a web service's
+WSDL is published during deployment.
+|===
+
+
+[[beayu]][[GSDPG00301]][[webservice-description-name]]
+
+=== `webservice-description-name`
+
+Specifies a unique name for the web service within a web or EJB module.
+
+[[fvzgp]][[GSDPG00793]][[superelements-217]]
+
+==== Superelements
+
+link:#beayt[`webservice-description`] (`glassfish-web.xml`,
+`glassfish-ejb-jar.xml`)
+
+[[fvzgw]][[GSDPG00794]][[subelements-209]]
+
+==== Subelements
+
+none - contains data
+
+[[beayv]][[GSDPG00302]][[webservice-endpoint]]
+
+=== `webservice-endpoint`
+
+Specifies information about a web service endpoint.
+
+[[fvzio]][[GSDPG00795]][[superelements-218]]
+
+==== Superelements
+
+link:#beaxm[`servlet`] (`glassfish-web.xml`), link:#beass[`ejb`]
+(`glassfish-ejb-jar.xml`)
+
+[[fvzjp]][[GSDPG00796]][[subelements-210]]
+
+==== Subelements
+
+The following table describes subelements for the `webservice-endpoint`
+element.
+
+[[GSDPG1047]][[sthref245]][[fvzjs]]
+
+
+Table C-161 `webservice-endpoint` subelements
+
+[width="100%",cols="29%,12%,59%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beavs[`port-component-name`]
+
+
+ |only one |Specifies a unique name for a port component within a web or
+EJB module.
+
+a|
+link:#beasw[`endpoint-address-uri`]
+
+
+ |zero or one |Specifies the automatically generated endpoint address.
+
+a|
+link:#beauk[`login-config`]
+
+
+ |zero or one |Specifies the authentication configuration for an EJB web
+service endpoint.
+
+a|
+link:#beaux[`message-security-binding`]
+
+
+ |zero or one |Specifies a custom authentication provider binding.
+
+a|
+link:#beayi[`transport-guarantee`]
+
+
+ |zero or one |Specifies that the communication between client and
+server is `NONE`, `INTEGRAL`, or `CONFIDENTIAL`.
+
+a|
+link:#beaxj[`service-qname`]
+
+
+ |zero or one |Specifies the WSDL service element that is being
+referenced.
+
+a|
+link:#beayf[`tie-class`]
+
+
+ |zero or one |Specifies the automatically generated name of a tie
+implementation class for a port component.
+
+a|
+link:#beaxn[`servlet-impl-class`]
+
+
+ |zero or one |Specifies the automatically generated name of the
+generated servlet implementation class.
+
+a|
+link:#gaubj[`debugging-enabled`]
+
+
+ |zero or one |Specifies whether the debugging servlet is enabled for
+this web service endpoint. Allowed values are `true` and `false` (the
+default).
+
+a|
+link:#beavx[`property` (with attributes)] (`glassfish-web.xml`)
+
+link:#beavy[`property` (with subelements)] (`glassfish-ejb-jar.xml`)
+
+ |zero or more |Specifies a property, which has a name and a value.
+|===
+
+
+[[giyht]][[GSDPG00303]][[work-security-map]]
+
+=== `work-security-map`
+
+Defines a work security map, which maps a principal associated with an
+incoming work instance to a principal in the {productName}'s security
+domain. It is possible to map multiple EIS group or user principals to
+the same {productName} principal.
+
+This is different from a link:#giyhy[`security-map`], which maps the
+principal received during servlet or EJB authentication to the
+credentials accepted by the EIS.
+
+[[GSDPG1048]][[sthref246]]
+
+
+[[superelements-219]]
+==== Superelements
+
+link:#giyiy[`resources`] (`glassfish-resources.xml`)
+
+[[giyih]][[GSDPG00797]][[subelements-211]]
+
+==== Subelements
+
+The following table describes subelements for the `work-security-map`
+element.
+
+[[GSDPG1049]][[sthref247]][[sthref248]]
+
+
+Table C-162 `work-security-map` Subelements
+
+[width="100%",cols="17%,12%,71%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beaso[`description`]
+
+
+ |zero or one |Contains a text description of this element.
+
+a|
+link:#giyif[`principal-map`]
+
+
+ |zero or more |Maps an EIS principal to a principal defined in the
+{productName} domain.
+
+a|
+link:#giygy[`group-map`]
+
+
+ |zero or more |Maps an EIS group to a group defined in the {productName} domain.
+|===
+
+
+[[GSDPG1050]][[sthref249]]
+
+
+[[attributes-45]]
+==== Attributes
+
+The following table describes attributes for the `work-security-map`
+element.
+
+[[GSDPG1051]][[sthref250]][[sthref251]]
+
+
+Table C-163 `work-security-map` Attributes
+
+[width="181%",cols="13%,49%,38%",options="header",]
+|===
+|Attribute |Default |Description
+|`name` |none |Specifies a unique name for the work security map.
+|`description` |none |Specifies a text description for this element.
+|===
+
+
+[[beayw]][[GSDPG00304]][[wsdl-override]]
+
+=== `wsdl-override`
+
+Specifies a valid URL pointing to a final WSDL document. If not
+specified, the WSDL document associated with the `service-ref` in the
+standard Jakarta EE deployment descriptor is used.
+
+[[fvzjl]][[GSDPG00798]][[superelements-220]]
+
+==== Superelements
+
+link:#beaxk[`service-ref`] (`glassfish-web.xml`,
+`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)
+
+[[fvzjq]][[GSDPG00799]][[subelements-212]]
+
+==== Subelements
+
+none - contains data
+
+[[fvzjt]][[GSDPG00800]][[example-15]]
+
+==== Example
+
+[source,xml]
+----
+// available via HTTP
+<wsdl-override>http://localhost:8000/myservice/myport?WSDL</wsdl-override>
+
+// in a file
+<wsdl-override>file:/home/user1/myfinalwsdl.wsdl</wsdl-override>
+----
+
+[[beayx]][[GSDPG00305]][[wsdl-port]]
+
+=== `wsdl-port`
+
+Specifies the WSDL port.
+
+[[fvzjo]][[GSDPG00801]][[superelements-221]]
+
+==== Superelements
+
+link:#beavt[`port-info`] (`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
+`glassfish-application-client.xml`)
+
+[[fvzjm]][[GSDPG00802]][[subelements-213]]
+
+==== Subelements
+
+The following table describes subelements for the `wsdl-port` element.
+
+[[GSDPG1052]][[sthref252]][[fvzju]]
+
+
+Table C-164 `wsdl-port` subelements
+
+[width="100%",cols="30%,11%,59%",options="header",]
+|===
+|Element |Required |Description
+a|
+link:#beavh[`namespaceURI`]
+
+
+ |only one |Specifies the namespace URI.
+a|
+link:#beaug[`localpart`]
+
+
+ |only one |Specifies the local part of a QNAME.
+|===
+
+
+[[beayy]][[GSDPG00306]][[wsdl-publish-location]]
+
+=== `wsdl-publish-location`
+
+Specifies the URL of a directory to which a web service's WSDL is
+published during deployment. Any required files are published to this
+directory, preserving their location relative to the module-specific
+WSDL directory (`META-INF/wsdl` or `WEB-INF/wsdl`).
+
+[[fvzjw]][[GSDPG00803]][[superelements-222]]
+
+==== Superelements
+
+link:#beayt[`webservice-description`] (`glassfish-web.xml`,
+`glassfish-ejb-jar.xml`)
+
+[[fvzjr]][[GSDPG00804]][[subelements-214]]
+
+==== Subelements
+
+none - contains data
+
+[[fvzjn]][[GSDPG00805]][[example-16]]
+
+==== Example
+
+Suppose you have an `ejb.jar` file whose `webservices.xml` file's
+`wsdl-file` element contains the following reference:
+
+[source]
+----
+META-INF/wsdl/a/Foo.wsdl
+----
+
+Suppose your `glassfish-ejb.jar` file contains the following element:
+
+[source,xml]
+----
+<wsdl-publish-location>file:/home/user1/publish</wsdl-publish-location>
+----
+
+The final WSDL is stored in `/home/user1/publish/a/Foo.wsdl`.
+
+
diff --git a/docs/application-deployment-guide/src/main/asciidoc/dd-files.adoc b/docs/application-deployment-guide/src/main/asciidoc/dd-files.adoc
new file mode 100644
index 0000000..a8ac6ee
--- /dev/null
+++ b/docs/application-deployment-guide/src/main/asciidoc/dd-files.adoc
@@ -0,0 +1,1161 @@
+type=page
+status=published
+title={productName} Deployment Descriptor Files
+next=dd-elements.html
+prev=asadmin-deployment-subcommands.html
+~~~~~~
+
+= {productName} Deployment Descriptor Files
+
+[[GSDPG00006]][[giida]]
+
+
+[[b-glassfish-server-deployment-descriptor-files]]
+== B {productName} Deployment Descriptor Files
+
+This appendix describes the element hierarchies in the {productName}
+deployment descriptors that are included in this release of the
+{productName} software.
+
+The following topics are addressed here:
+
+* link:#giiie[About the {productName} Deployment Descriptors]
+* link:#beaqk[The glassfish-application.xml File]
+* link:#beaql[The glassfish-web.xml File]
+* link:#beaqm[The glassfish-ejb-jar.xml File]
+* link:#beaqn[The sun-cmp-mappings.xml File]
+* link:#beaqo[The glassfish-application-client.xml file]
+* link:#beaqp[The sun-acc.xml File]
+* link:#giyhh[The glassfish-resources.xml File]
+* link:#gkiot[WebLogic Server Deployment Descriptor Support in {productName}]
+
+[[giiie]][[GSDPG00076]][[about-the-glassfish-server-deployment-descriptors]]
+
+=== About the {productName} Deployment Descriptors
+
+Each deployment descriptor XML file has a corresponding Document Type
+Definition (DTD) file, which defines the elements, data, and attributes
+that the deployment descriptor file can contain. For example, the
+`glassfish-application_6_0-1.dtd` file defines the structure of the
+`glassfish-application.xml` file. The DTD files for the {productName}
+deployment descriptors are located in the as-install``/lib/dtds`` directory.
+
+The {productName} deployment descriptor files must be readable and
+writable by the file owners. In each deployment descriptor file,
+subelements must be defined in the order in which they are listed under
+each Subelements heading, unless otherwise noted. For general
+information about DTD files and XML, see the XML specification at
+`http://www.w3.org/TR/REC-xml`.
+
+
+[NOTE]
+====
+Do not edit the DTD files; their contents change only with new versions
+of {productName}.
+====
+
+
+The following table lists the {productName} deployment descriptors
+and their DTD files.
+
+[[GSDPG835]][[sthref6]][[giiht]]
+
+
+Table B-1 {productName} Deployment Descriptors and DTDs
+
+[width="100%",cols="30%,39%,31%",options="header",]
+|===
+|Deployment Descriptor |DTD File |Description
+|`glassfish-application.xml` |`glassfish-application_6_0-1.dtd`
+|Configures an entire Jakarta EE application (EAR file).
+
+|`glassfish-web.xml` |`glassfish-web-app_3_0-1.dtd` |Configures a web
+application (WAR file).
+
+|`glassfish-ejb-jar.xml` |`glassfish-ejb-jar_3_1-1.dtd` |Configures an
+enterprise bean (EJB JAR file).
+
+|`sun-cmp-mappings.xml` |`sun-cmp-mapping_1_2.dtd` |Configures
+container-managed persistence for an EJB 2.0 or 2.1 entity bean.
+
+|`glassfish-application-client.xml`
+|`glassfish-application-client_6_0-1.dtd` |Configures an Application
+Client Container (ACC) client (JAR file).
+
+|`sun-acc.xml` |`sun-application-client-container_1_2.dtd` |Configures
+the Application Client Container. This is more of a configuration file
+than a deployment descriptor. {productName} provides a default file
+in the domain-dir``/config`` directory. Specifying a different file is
+optional.
+
+|`glassfish-resources.xml` |`glassfish-resources_1_5.dtd` |Configures
+application-scoped resources.
+|===
+
+
+
+[NOTE]
+====
+The `sun-application.xml`, `sun-web.xml`, `sun-ejb-jar.xml`,
+`sun-application-client.xml`, and `sun-resources.xml` deployment
+descriptors are supported for backward compatibility.
+====
+
+
+[[beaqk]][[GSDPG00077]][[the-glassfish-application.xml-file]]
+
+=== The glassfish-application.xml File
+
+The `glassfish-application.xml` file configures an entire Jakarta EE
+application (EAR file). The element hierarchy is as follows:
+
+[source]
+----
+glassfish-application
+.  web
+.  .  web-uri
+.  .  context-root
+.  pass-by-reference
+.  unique-id
+.  security-role-mapping
+.  .  role-name
+.  .  principal-name
+.  .  group-name
+.  realm
+.  ejb-ref
+.  .  ejb-ref-name
+.  .  jndi-name
+.  resource-ref
+.  .  res-ref-name
+.  .  jndi-name
+.  .  default-resource-principal
+.  .  .  name
+.  .  .  password
+.  resource-env-ref
+.  .  resource-env-ref-name
+.  .  jndi-name
+.  service-ref
+.  .  service-ref-name
+.  .  port-info
+.  .  .  service-endpoint-interface
+.  .  .  wsdl-port
+.  .  .  .  namespaceURI
+.  .  .  .  localpart
+.  .  .  stub-property
+.  .  .  .  name
+.  .  .  .  value
+.  .  .  call-property
+.  .  .  .  name
+.  .  .  .  value
+.  .  .  message-security-binding
+.  .  .  .  message-security
+.  .  .  .  .  message
+.  .  .  .  .  .  java-method
+.  .  .  .  .  .  .  method-name
+.  .  .  .  .  .  .  method-params
+.  .  .  .  .  .  .  .  method-param
+.  .  .  .  .  .  operation-name
+.  .  .  .  .  request-protection
+.  .  .  .  .  response-protection
+.  .  call-property
+.  .  .  name
+.  .  .  value
+.  .  wsdl-override
+.  .  service-impl-class
+.  .  service-qname
+.  .  .  namespaceURI
+.  .  .  localpart
+.  message-destination-ref
+.  .  message-destination-ref-name
+.  .  jndi-name
+.  message-destination
+.  .  message-destination-name
+.  .  jndi-name
+.  archive-name
+.  compatibility
+.  keep-state
+.  version-identifier
+----
+
+Here is a sample `glassfish-application.xml` file:
+
+[source,xml]
+----
+<!DOCTYPE glassfish-application PUBLIC "-//GlassFish.org//DTD
+GlassFish Application Server 3.1 Jakarta EE Application 6.0//EN"
+"http://glassfish.org/dtds/glassfish-application_6_0-1.dtd">
+<glassfish-application>
+   <unique-id>67488732739338240</unique-id>
+</glassfish-application>
+----
+
+[[beaql]][[GSDPG00078]][[the-glassfish-web.xml-file]]
+
+=== The glassfish-web.xml File
+
+The `glassfish-web.xml` file configures a web application (WAR file).
+The element hierarchy is as follows:
+
+[source]
+----
+glassfish-web-app
+.  context-root
+.  security-role-mapping
+.  .  role-name
+.  .  principal-name
+.  .  group-name
+.  servlet
+.  .  servlet-name
+.  .  principal-name
+.  .  webservice-endpoint
+.  .  .  port-component-name
+.  .  .  endpoint-address-uri
+.  .  .  login-config
+.  .  .  .  auth-method
+.  .  .  message-security-binding
+.  .  .  .  message-security
+.  .  .  .  .  message
+.  .  .  .  .  .  java-method
+.  .  .  .  .  .  .  method-name
+.  .  .  .  .  .  .  method-params
+.  .  .  .  .  .  .  .  method-param
+.  .  .  .  .  .  operation-name
+.  .  .  .  .  request-protection
+.  .  .  .  .  response-protection
+.  .  .  transport-guarantee
+.  .  .  service-qname
+.  .  .  tie-class
+.  .  .  servlet-impl-class
+.  .  .  debugging-enabled
+.  .  .  property (with attributes)
+.  .  .  .  description
+.  idempotent-url-pattern
+.  session-config
+.  .  session-manager
+.  .  .  manager-properties
+.  .  .  .  property (with attributes)
+.  .  .  .  .  description
+.  .  .  store-properties
+.  .  .  .  property (with attributes)
+.  .  .  .  .  description
+.  .  session-properties
+.  .  .  property (with attributes)
+.  .  .  .  description
+.  .  cookie-properties
+.  .  .  property (with attributes)
+.  .  .  .  description
+.  ejb-ref
+.  .  ejb-ref-name
+.  .  jndi-name
+.  resource-ref
+.  .  res-ref-name
+.  .  jndi-name
+.  .  default-resource-principal
+.  .  .  name
+.  .  .  password
+.  resource-env-ref
+.  .  resource-env-ref-name
+.  .  jndi-name
+.  service-ref
+.  .  service-ref-name
+.  .  port-info
+.  .  .  service-endpoint-interface
+.  .  .  wsdl-port
+.  .  .  .  namespaceURI
+.  .  .  .  localpart
+.  .  .  stub-property
+.  .  .  .  name
+.  .  .  .  value
+.  .  .  call-property
+.  .  .  .  name
+.  .  .  .  value
+.  .  .  message-security-binding
+.  .  .  .  message-security
+.  .  .  .  .  message
+.  .  .  .  .  .  java-method
+.  .  .  .  .  .  .  method-name
+.  .  .  .  .  .  .  method-params
+.  .  .  .  .  .  .  .  method-param
+.  .  .  .  .  .  operation-name
+.  .  .  .  .  request-protection
+.  .  .  .  .  response-protection
+.  .  call-property
+.  .  .  name
+.  .  .  value
+.  .  wsdl-override
+.  .  service-impl-class
+.  .  service-qname
+.  .  .  namespaceURI
+.  .  .  localpart
+.  message-destination-ref
+.  .  message-destination-ref-name
+.  .  jndi-name
+.  cache
+.  .  cache-helper
+.  .  .  property (with attributes)
+.  .  .  .  description
+.  .  default-helper
+.  .  .  property (with attributes)
+.  .  .  .  description
+.  .  property (with attributes)
+.  .  .  description
+.  .  cache-mapping
+.  .  .  servlet-name
+.  .  .  url-pattern
+.  .  .  cache-helper-ref
+.  .  .  dispatcher
+.  .  .  timeout
+.  .  .  refresh-field
+.  .  .  http-method
+.  .  .  key-field
+.  .  .  constraint-field
+.  .  .  .  constraint-field-value
+.  class-loader
+.  .  property (with attributes)
+.  .  .  description
+.  jsp-config
+.  locale-charset-info
+.  .  locale-charset-map
+.  .  parameter-encoding
+.  parameter-encoding
+.  property (with attributes)
+.  .  description
+.  valve
+.  message-destination
+.  .  message-destination-name
+.  .  jndi-name
+.  webservice-description
+.  .  webservice-description-name
+.  .  wsdl-publish-location
+.  keep-state
+.  version-identifier
+----
+
+Here is a sample `glassfish-web.xml` file:
+
+[source,xml]
+----
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD
+GlassFish Application Server 3.1 Servlet 3.0//EN"
+"http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app>
+   <session-config>
+      <session-manager/>
+   </session-config>
+   <resource-ref>
+      <res-ref-name>mail/Session</res-ref-name>
+      <jndi-name>mail/Session</jndi-name>
+   </resource-ref>
+   <jsp-config/>
+</glassfish-web-app>
+----
+
+[[beaqm]][[GSDPG00079]][[the-glassfish-ejb-jar.xml-file]]
+
+=== The glassfish-ejb-jar.xml File
+
+The `glassfish-ejb-jar.xml` file configures an enterprise bean (EJB JAR
+file). The element hierarchy is as follows:
+
+[source]
+----
+glassfish-ejb-jar
+.  security-role-mapping
+.  .  role-name
+.  .  principal-name
+.  .  group-name
+.  enterprise-beans
+.  .  name
+.  .  unique-id
+.  .  ejb
+.  .  .  ejb-name
+.  .  .  jndi-name
+.  .  .  ejb-ref
+.  .  .  .  ejb-ref-name
+.  .  .  .  jndi-name
+.  .  .  resource-ref
+.  .  .  .  res-ref-name
+.  .  .  .  jndi-name
+.  .  .  .  default-resource-principal
+.  .  .  .  .  name
+.  .  .  .  .  password
+.  .  .  resource-env-ref
+.  .  .  .  resource-env-ref-name
+.  .  .  .  jndi-name
+.  .  .  service-ref
+.  .  .  .  service-ref-name
+.  .  .  .  port-info
+.  .  .  .  .  service-endpoint-interface
+.  .  .  .  .  wsdl-port
+.  .  .  .  .  .  namespaceURI
+.  .  .  .  .  .  localpart
+.  .  .  .  .  stub-property
+.  .  .  .  .  .  name
+.  .  .  .  .  .  value
+.  .  .  .  .  call-property
+.  .  .  .  .  .  name
+.  .  .  .  .  .  value
+.  .  .  .  .  message-security-binding
+.  .  .  .  .  .  message-security
+.  .  .  .  .  .  .  message
+.  .  .  .  .  .  .  .  java-method
+.  .  .  .  .  .  .  .  .  method-name
+.  .  .  .  .  .  .  .  .  method-params
+.  .  .  .  .  .  .  .  .  .  method-param
+.  .  .  .  .  .  .  .  operation-name
+.  .  .  .  .  .  .  request-protection
+.  .  .  .  .  .  .  response-protection
+.  .  .  .  call-property
+.  .  .  .  .  name
+.  .  .  .  .  value
+.  .  .  .  wsdl-override
+.  .  .  .  service-impl-class
+.  .  .  .  service-qname
+.  .  .  .  .  namespaceURI
+.  .  .  .  .  localpart
+.  .  .  message-destination-ref
+.  .  .  .  message-destination-ref-name
+.  .  .  .  jndi-name
+.  .  .  pass-by-reference
+.  .  .  cmp
+.  .  .  .  mapping-properties
+.  .  .  .  is-one-one-cmp
+.  .  .  .  one-one-finders
+.  .  .  .  .  finder
+.  .  .  .  .  .  method-name
+.  .  .  .  .  .  query-params
+.  .  .  .  .  .  query-filter
+.  .  .  .  .  .  query-variables
+.  .  .  .  .  .  query-ordering
+.  .  .  .  prefetch-disabled
+.  .  .  .  .  query-method
+.  .  .  .  .  .  method-name
+.  .  .  .  .  .  method-params
+.  .  .  .  .  .  .  method-param
+.  .  .  principal
+.  .  .  .  name
+.  .  .  mdb-connection-factory
+.  .  .  .  jndi-name
+.  .  .  .  default-resource-principal
+.  .  .  .  .  name
+.  .  .  .  .  password
+.  .  .  jms-durable-subscription-name
+.  .  .  jms-max-messages-load
+.  .  .  ior-security-config
+.  .  .  .  transport-config
+.  .  .  .  .  integrity
+.  .  .  .  .  confidentiality
+.  .  .  .  .  establish-trust-in-target
+.  .  .  .  .  establish-trust-in-client
+.  .  .  .  as-context
+.  .  .  .  .  auth-method
+.  .  .  .  .  realm
+.  .  .  .  .  required
+.  .  .  .  sas-context
+.  .  .  .  .  caller-propagation
+.  .  .  is-read-only-bean
+.  .  .  refresh-period-in-seconds
+.  .  .  commit-option
+.  .  .  cmt-timeout-in-seconds
+.  .  .  use-thread-pool-id
+.  .  .  gen-classes
+.  .  .  .  remote-impl
+.  .  .  .  local-impl
+.  .  .  .  remote-home-impl
+.  .  .  .  local-home-impl
+.  .  .  bean-pool
+.  .  .  .  steady-pool-size
+.  .  .  .  resize-quantity
+.  .  .  .  max-pool-size
+.  .  .  .  pool-idle-timeout-in-seconds
+.  .  .  .  max-wait-time-in-millis
+.  .  .  bean-cache
+.  .  .  .  max-cache-size
+.  .  .  .  resize-quantity
+.  .  .  .  is-cache-overflow-allowed
+.  .  .  .  cache-idle-timeout-in-seconds
+.  .  .  .  removal-timeout-in-seconds
+.  .  .  .  victim-selection-policy
+.  .  .  mdb-resource-adapter
+.  .  .  .  resource-adapter-mid
+.  .  .  .  activation-config
+.  .  .  .  .  description
+.  .  .  .  .  activation-config-property
+.  .  .  .  .  .  activation-config-property-name
+.  .  .  .  .  .  activation-config-property-value
+.  .  .  webservice-endpoint
+.  .  .  .  port-component-name
+.  .  .  .  endpoint-address-uri
+.  .  .  .  login-config
+.  .  .  .  .  auth-method
+.  .  .  .  .  realm
+.  .  .  .  message-security-binding
+.  .  .  .  .  message-security
+.  .  .  .  .  .  message
+.  .  .  .  .  .  .  java-method
+.  .  .  .  .  .  .  .  method-name
+.  .  .  .  .  .  .  .  method-params
+.  .  .  .  .  .  .  .  .  method-param
+.  .  .  .  .  .  .  operation-name
+.  .  .  .  .  .  request-protection
+.  .  .  .  .  .  response-protection
+.  .  .  .  transport-guarantee
+.  .  .  .  service-qname
+.  .  .  .  tie-class
+.  .  .  .  servlet-impl-class
+.  .  .  .  debugging-enabled
+.  .  .  .  property (with subelements)
+.  .  .  .  .  name
+.  .  .  .  .  value
+.  .  .  flush-at-end-of-method
+.  .  .  .  method
+.  .  .  .  .  description
+.  .  .  .  .  ejb-name
+.  .  .  .  .  method-name
+.  .  .  .  .  method-intf
+.  .  .  .  .  method-params
+.  .  .  .  .  .  method-param
+.  .  .  checkpointed-methods
+.  .  .  checkpoint-at-end-of-method
+.  .  .  .  method
+.  .  .  .  .  description
+.  .  .  .  .  ejb-name
+.  .  .  .  .  method-name
+.  .  .  .  .  method-intf
+.  .  .  .  .  method-params
+.  .  .  .  .  .  method-param
+.  .  .  per-request-load-balancing
+.  .  pm-descriptors
+.  .  cmp-resource
+.  .  .  jndi-name
+.  .  .  default-resource-principal
+.  .  .  .  name
+.  .  .  .  password
+.  .  .  property (with subelements)
+.  .  .  .  name
+.  .  .  .  value
+.  .  .  create-tables-at-deploy
+.  .  .  drop-tables-at-undeploy
+.  .  .  database-vendor-name
+.  .  .  schema-generator-properties
+.  .  .  .  property (with subelements)
+.  .  .  .  .  name
+.  .  .  .  .  value
+.  .  message-destination
+.  .  .  message-destination-name
+.  .  .  jndi-name
+.  .  webservice-description
+.  .  .  webservice-description-name
+.  .  .  wsdl-publish-location
+.  .  property (with subelements)
+.  .  .  name
+.  .  .  value
+.  compatibility
+.  disable-nonportable-jndi-names
+.  keep-state
+.  version-identifier
+----
+
+
+[NOTE]
+====
+If any configuration information for an enterprise bean is not specified
+in the `glassfish-ejb-jar.xml` file, it defaults to a corresponding
+setting in the EJB container if an equivalency exists.
+====
+
+
+Here is a sample `glassfish-ejb-jar.xml` file:
+
+[source,xml]
+----
+<!DOCTYPE glassfish-ejb-jar PUBLIC "-//GlassFish.org//
+DTD GlassFish Application Server 3.1 EJB 3.1//EN"
+"http://glassfish.org/dtds/glassfish-ejb-jar_3_1-1.dtd">
+<glassfish-ejb-jar>
+<display-name>First Module</display-name>
+<enterprise-beans>
+    <ejb>
+        <ejb-name>CustomerEJB</ejb-name>
+        <jndi-name>customer</jndi-name>
+        <bean-pool>
+            <steady-pool-size>10</steady-pool-size>
+            <resize-quantity>10</resize-quantity>
+            <max-pool-size>100</max-pool-size>
+            <pool-idle-timeout-in-seconds>600</pool-idle-timeout-in-seconds>
+        </bean-pool>
+        <bean-cache>
+            <max-cache-size>100</max-cache-size>
+            <resize-quantity>10</resize-quantity>
+            <removal-timeout-in-seconds>3600</removal-timeout-in-seconds>
+            <victim-selection-policy>LRU</victim-selection-policy>
+        </bean-cache>
+    </ejb>
+    <cmp-resource>
+        <jndi-name>jdbc/__default</jndi-name>
+        <create-tables-at-deploy>true</create-tables-at-deploy>
+        <drop-tables-at-undeploy>true</drop-tables-at-undeploy>
+    </cmp-resource>
+</enterprise-beans>
+<keep-state>true</keep-state>
+</glassfish-ejb-jar>
+----
+
+[[beaqn]][[GSDPG00080]][[the-sun-cmp-mappings.xml-file]]
+
+=== The sun-cmp-mappings.xml File
+
+The `sun-cmp-mappings.xml` file configures container-managed persistence
+for an EJB 2.0 or 2.1 entity bean. The element hierarchy is as follows:
+
+[source]
+----
+sun-cmp-mappings
+.  sun-cmp-mapping
+.  .  schema
+.  .  entity-mapping
+.  .  .  ejb-name
+.  .  .  table-name
+.  .  .  cmp-field-mapping
+.  .  .  .  field-name
+.  .  .  .  column-name
+.  .  .  .  read-only
+.  .  .  .  fetched-with
+.  .  .  .  .  default
+.  .  .  .  .  level
+.  .  .  .  .  named-group
+.  .  .  .  .  none
+.  .  .  cmr-field-mapping
+.  .  .  .  cmr-field-name
+.  .  .  .  column-pair
+.  .  .  .  .  column-name
+.  .  .  .  fetched-with
+.  .  .  .  .  default
+.  .  .  .  .  level
+.  .  .  .  .  named-group
+.  .  .  .  .  none
+.  .  .  secondary-table
+.  .  .  .  table-name
+.  .  .  .  column-pair
+.  .  .  .  .  column-name
+.  .  .  consistency
+.  .  .  .  none
+.  .  .  .  check-modified-at-commit
+.  .  .  .  lock-when-loaded
+.  .  .  .  check-all-at-commit
+.  .  .  .  lock-when-modified
+.  .  .  .  check-version-of-accessed-instances
+.  .  .  .  .  column-name
+----
+
+Here is a sample database schema definition:
+
+[source,sql]
+----
+create table TEAMEJB (
+   TEAMID varchar2(256) not null,
+   NAME varchar2(120) null,
+   CITY char(30) not null,
+   LEAGUEEJB_LEAGUEID varchar2(256) null,
+   constraint PK_TEAMEJB primary key (TEAMID)
+)
+create table PLAYEREJB (
+   POSITION varchar2(15) null,
+   PLAYERID varchar2(256) not null,
+   NAME char(64) null,
+   SALARY number(10, 2) not null,
+   constraint PK_PLAYEREJB primary key (PLAYERID)
+)
+create table LEAGUEEJB (
+   LEAGUEID varchar2(256) not null,
+   NAME varchar2(256) null,
+   SPORT varchar2(256) null,
+   constraint PK_LEAGUEEJB primary key (LEAGUEID)
+)
+create table PLAYEREJBTEAMEJB (
+   PLAYEREJB_PLAYERID varchar2(256) null,
+   TEAMEJB_TEAMID varchar2(256) null
+)
+alter table TEAMEJB
+   add constraint FK_LEAGUE foreign key (LEAGUEEJB_LEAGUEID)
+   references LEAGUEEJB (LEAGUEID)
+
+alter table PLAYEREJBTEAMEJB
+   add constraint FK_TEAMS foreign key (PLAYEREJB_PLAYERID)
+   references PLAYEREJB (PLAYERID)
+
+alter table PLAYEREJBTEAMEJB
+   add constraint FK_PLAYERS foreign key (TEAMEJB_TEAMID)
+   references TEAMEJB (TEAMID)
+----
+
+Here is a corresponding sample `sun-cmp-mappings.xml` file:
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<sun-cmp-mappings>
+<sun-cmp-mapping>
+    <schema>Roster</schema>
+    <entity-mapping>
+        <ejb-name>TeamEJB</ejb-name>
+        <table-name>TEAMEJB</table-name>
+        <cmp-field-mapping>
+            <field-name>teamId</field-name>
+            <column-name>TEAMEJB.TEAMID</column-name>
+        </cmp-field-mapping>
+        <cmp-field-mapping>
+            <field-name>name</field-name>
+            <column-name>TEAMEJB.NAME</column-name>
+        </cmp-field-mapping>
+        <cmp-field-mapping>
+            <field-name>city</field-name>
+            <column-name>TEAMEJB.CITY</column-name>
+        </cmp-field-mapping>
+        <cmr-field-mapping>
+            <cmr-field-name>league</cmr-field-name>
+            <column-pair>
+                <column-name>TEAMEJB.LEAGUEEJB_LEAGUEID</column-name>
+                <column-name>LEAGUEEJB.LEAGUEID</column-name>
+            </column-pair>
+            <fetched-with>
+                <none/>
+            </fetched-with>
+        </cmr-field-mapping>
+        <cmr-field-mapping>
+            <cmr-field-name>players</cmr-field-name>
+            <column-pair>
+                <column-name>TEAMEJB.TEAMID</column-name>
+                <column-name>PLAYEREJBTEAMEJB.TEAMEJB_TEAMID</column-name>
+            </column-pair>
+            <column-pair>
+                <column-name>PLAYEREJBTEAMEJB.PLAYEREJB_PLAYERID</column-name>
+                <column-name>PLAYEREJB.PLAYERID</column-name>
+            </column-pair>
+            <fetched-with>
+                <none/>
+            </fetched-with>
+        </cmr-field-mapping>
+    </entity-mapping>
+    <entity-mapping>
+        <ejb-name>PlayerEJB</ejb-name>
+        <table-name>PLAYEREJB</table-name>
+        <cmp-field-mapping>
+            <field-name>position</field-name>
+            <column-name>PLAYEREJB.POSITION</column-name>
+        </cmp-field-mapping>
+        <cmp-field-mapping>
+            <field-name>playerId</field-name>
+            <column-name>PLAYEREJB.PLAYERID</column-name>
+        </cmp-field-mapping>
+        <cmp-field-mapping>
+            <field-name>name</field-name>
+            <column-name>PLAYEREJB.NAME</column-name>
+        </cmp-field-mapping>
+        <cmp-field-mapping>
+            <field-name>salary</field-name>
+            <column-name>PLAYEREJB.SALARY</column-name>
+        </cmp-field-mapping>
+        <cmr-field-mapping>
+            <cmr-field-name>teams</cmr-field-name>
+            <column-pair>
+                <column-name>PLAYEREJB.PLAYERID</column-name>
+                <column-name>PLAYEREJBTEAMEJB.PLAYEREJB_PLAYERID</column-name>
+            </column-pair>
+            <column-pair>
+                <column-name>PLAYEREJBTEAMEJB.TEAMEJB_TEAMID</column-name>
+                <column-name>TEAMEJB.TEAMID</column-name>
+            </column-pair>
+            <fetched-with>
+                <none/>
+            </fetched-with>
+        </cmr-field-mapping>
+    </entity-mapping>
+    <entity-mapping>
+        <ejb-name>LeagueEJB</ejb-name>
+        <table-name>LEAGUEEJB</table-name>
+        <cmp-field-mapping>
+            <field-name>leagueId</field-name>
+            <column-name>LEAGUEEJB.LEAGUEID</column-name>
+        </cmp-field-mapping>
+        <cmp-field-mapping>
+            <field-name>name</field-name>
+            <column-name>LEAGUEEJB.NAME</column-name>
+        </cmp-field-mapping>
+        <cmp-field-mapping>
+            <field-name>sport</field-name>
+            <column-name>LEAGUEEJB.SPORT</column-name>
+        </cmp-field-mapping>
+        <cmr-field-mapping>
+            <cmr-field-name>teams</cmr-field-name>
+            <column-pair>
+                <column-name>LEAGUEEJB.LEAGUEID</column-name>
+                <column-name>TEAMEJB.LEAGUEEJB_LEAGUEID</column-name>
+            </column-pair>
+            <fetched-with>
+                <none/>
+            </fetched-with>
+        </cmr-field-mapping>
+    </entity-mapping>
+</sun-cmp-mapping>
+</sun-cmp-mappings>
+----
+
+[[beaqo]][[GSDPG00081]][[the-glassfish-application-client.xml-file]]
+
+=== The glassfish-application-client.xml file
+
+The `glassfish-application-client.xml` file configures an Application
+Client Container (ACC) client (JAR file). The element hierarchy is as
+follows:
+
+[source]
+----
+glassfish-application-client
+.  ejb-ref
+.  .  ejb-ref-name
+.  .  jndi-name
+.  resource-ref
+.  .  res-ref-name
+.  .  jndi-name
+.  .  default-resource-principal
+.  .  .  name
+.  .  .  password
+.  resource-env-ref
+.  .  resource-env-ref-name
+.  .  jndi-name
+.  service-ref
+.  .  service-ref-name
+.  .  port-info
+.  .  .  service-endpoint-interface
+.  .  .  wsdl-port
+.  .  .  .  namespaceURI
+.  .  .  .  localpart
+.  .  .  stub-property
+.  .  .  .  name
+.  .  .  .  value
+.  .  .  call-property
+.  .  .  .  name
+.  .  .  .  value
+.  .  .  message-security-binding
+.  .  .  .  message-security
+.  .  .  .  .  message
+.  .  .  .  .  .  java-method
+.  .  .  .  .  .  .  method-name
+.  .  .  .  .  .  .  method-params
+.  .  .  .  .  .  .  .  method-param
+.  .  .  .  .  .  operation-name
+.  .  .  .  .  request-protection
+.  .  .  .  .  response-protection
+.  .  call-property
+.  .  .  name
+.  .  .  value
+.  .  wsdl-override
+.  .  service-impl-class
+.  .  service-qname
+.  .  .  namespaceURI
+.  .  .  localpart
+.  message-destination-ref
+.  .  message-destination-ref-name
+.  .  jndi-name
+.  message-destination
+.  .  message-destination-name
+.  .  jndi-name
+.  java-web-start-access
+.  .  context-root
+.  .  eligible
+.  .  vendor
+.  .  jnlp-doc
+.  version-identifier
+----
+
+Here is a sample `glassfish-application-client.xml` file:
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-application-client PUBLIC ""-//GlassFish.org//DTD
+GlassFish Application Server 3.1 Application Client 6.0//EN""
+"http://glassfish.org/dtds/glassfish-application-client_6_0-1.dtd">
+<glassfish-application-client>
+  <message-destination-ref>
+    <message-destination-ref-name>ClientQueue</message-destination-ref-name>
+    <jndi-name>jms/security_mdb_OutQueue</jndi-name>
+  </message-destination-ref>
+</glassfish-application-client>
+----
+
+[[beaqp]][[GSDPG00082]][[the-sun-acc.xml-file]]
+
+=== The sun-acc.xml File
+
+The `sun-acc.xml` file configures the Application Client Container. This
+is more of a configuration file than a deployment descriptor. {productName} provides a default file in the domain-dir``/config`` directory.
+Specifying a different file is optional. The element hierarchy is as
+follows:
+
+[source]
+----
+client-container
+.  target-server
+.  .  description
+.  .  security
+.  .  .  ssl
+.  .  .  cert-db
+.  auth-realm
+.  .  property (with attributes)
+.  client-credential
+.  .  property (with attributes)
+.  log-service
+.  .  property (with attributes)
+.  message-security-config
+.  .  provider-config
+.  .  .  request-policy
+.  .  .  response-policy
+.  .  .  property (with attributes)
+.  property (with attributes)
+----
+
+[[giyhh]][[GSDPG00083]][[the-glassfish-resources.xml-file]]
+
+=== The glassfish-resources.xml File
+
+The `glassfish-resources.xml` file configures application-scoped
+resources. The element hierarchy is as follows:
+
+[source]
+----
+resources
+.  custom-resource
+.  .  description
+.  .  property (with attributes)
+.  .  .  description
+.  external-jndi-resource
+.  .  description
+.  .  property (with attributes)
+.  .  .  description
+.  jdbc-resource
+.  .  description
+.  .  property (with attributes)
+.  .  .  description
+.  mail-resource
+.  .  description
+.  .  property (with attributes)
+.  .  .  description
+.  admin-object-resource
+.  .  description
+.  .  property (with attributes)
+.  .  .  description
+.  connector-resource
+.  .  description
+.  .  property (with attributes)
+.  .  .  description
+.  resource-adapter-config
+.  .  property (with attributes)
+.  .  .  description
+.  jdbc-connection-pool
+.  .  description
+.  .  property (with attributes)
+.  .  .  description
+.  connector-connection-pool
+.  .  description
+.  .  security-map
+.  .  .  principal
+.  .  .  user-group
+.  .  .  backend-principal
+.  .  property (with attributes)
+.  .  .  description
+.  work-security-map
+.  .  description
+.  .  principal-map
+.  .  group-map
+----
+
+[[gkiot]][[GSDPG00084]][[weblogic-server-deployment-descriptor-support-in-glassfish-server]]
+
+=== WebLogic Server Deployment Descriptor Support in {productName}
+
+{productName} offers limited support for the
+`weblogic-application.xml`, `weblogic.xml`, and
+`weblogic-webservices.xml` deployment descriptor files.
+
+The only element in `weblogic-application.xml` that {productName}
+supports is `security`. The equivalent element in the
+`glassfish-application.xml` file is `security-role-mapping`.
+
+The elements of `weblogic.xml` that {productName} supports are
+explained in the following table.
+
+[[GSDPG836]][[sthref7]][[gkinm]]
+
+
+Table B-2 `weblogic.xml` Support in {productName}
+
+[width="100%",cols="43%,57%",options="header",]
+|===
+|`weblogic.xml` Element Name |{productName} Support
+|`role-name` under `security-role-assignment`
+|`role-name` under `security-role-mapping` `glassfish-web.xml` equivalent
+
+|`principal-name` under `security-role-assignment`
+|`principal-name` under `security-role-mapping` `glassfish-web.xml` equivalent
+
+|`resource-description`
+|`resource-ref` `glassfish-web.xml` equivalent, but `resource-link` not supported
+
+|`resource-env-description`
+|`resource-env-ref` `glassfish-web.xml` equivalent, but `resource-link` not supported
+
+|`ejb-reference-description`
+|`ejb-ref` `glassfish-web.xml` equivalent
+
+|`service-reference-description`
+|`service-ref` `glassfish-web.xml` equivalent
+
+|`timeout-secs` under `session-descriptor`
+|`timeoutSeconds` property of `session-properties` `glassfish-web.xml` equivalent
+
+|`invalidation-interval-secs` under `session-descriptor`
+|`reapIntervalSeconds` property of `manager-properties` `glassfish-web.xml` equivalent
+
+|`max-in-memory-sessions` under `session-descriptor`
+|`maxSessions` property of `manager-properties` `glassfish-web.xml` equivalent
+
+|`persistent-store-dir` under `session-descriptor`
+|`directory` property of `store-properties` `glassfish-web.xml` equivalent
+
+|`prefer-web-inf-classes` under `container-descriptor`
+|`delegate` attribute of `class-loader` `glassfish-web.xml` equivalent
+
+|`context-root`
+|`context-root` `glassfish-web.xml` equivalent
+
+|`cookies-enabled` under `session-descriptor`
+|Servlet 3.0
+
+|`cookie-name` under `session-descriptor`
+|Servlet 3.0
+
+|`cookie-path` under `session-descriptor`
+|Servlet 3.0
+
+|`cookie-domain` under `session-descriptor`
+|Servlet 3.0
+
+|`cookie-comment` under `session-descriptor`
+|Servlet 3.0
+
+|`cookie-secure` under `session-descriptor`
+|Servlet 3.0
+
+|`cookie-max-age-secs` under `session-descriptor`
+|Servlet 3.0
+
+|`cookie-http-only` under `session-descriptor`
+|Servlet 3.0
+
+|`url-rewriting-enabled` under `session-descriptor`
+|Servlet 3.0
+
+|`persistent-store-cookie-name` under `session-descriptor`
+|Cookie-based persistence is supported
+
+|`keepgenerated` under `jsp-descriptor`
+|keepgenerated init parameter of `JspServlet`
+
+|`working-dir` under `jsp-descriptor`
+|scratchdir init parameter of `JspServlet`
+
+|`compress-html-template` under `jsp-descriptor`
+|trimSpaces init parameter of `JspServlet`
+
+|`index-directory-enabled` under `container-descriptor`
+|listings init parameter of `DefaultServlet`
+
+|`index-directory-sort-by` under `container-descriptor`
+|sortedBy init parameter of `DefaultServlet`
+
+|`save-sessions-enabled` under `container-descriptor`
+|Same as `asadmin redeploy` `--keepstate=true` or `keep-state` in `glassfish-web.xml`
+
+|`run-as-principal-name` under `servlet-descriptor`
+|`principal-name` under `servlet` `glassfish-web.xml` equivalent
+|===
+
+
+The elements of `weblogic-webservices.xml` that {productName}
+supports are explained in the following table.
+
+[[GSDPG837]][[sthref8]][[gkkht]]
+
+
+Table B-3 `weblogic-webservices.xml` Support in {productName}
+
+[width="100%",cols="34%,66%",options="header",]
+|===
+|`weblogic-webservices.xml` Element Name
+|{productName} Support
+
+|`webservice-type`
+|Possible values are `JAXRPC` or `JAXWS`.
+{productName} does not support JAX-RPC web services with JSR 181 annotations.
+The use of this element is limited, because the container can find out
+if the type is JAX-WS or JAX-RPC based on presence of JSR 181 annotations.
+
+|`wsdl-publish-file`
+|Same as `wsdl-publish-location` in `glassfish-web.xml`
+
+|`service-endpoint-address`
+|Similar to `endpoint-address-uri` in `glassfish-web.xml`,
+except that `webservice-contextpath` and `webservice-serviceuri` are specified separately
+
+|`j2ee:login-config`
+|Same as `login-config` in `glassfish-web.xml`
+
+|`j2ee:transport-guarantee`
+|Same as `transport-guarantee` in `glassfish-web.xml`
+
+|`exposed` under `wsdl`
+|Accepts `true` or `false`, defaults to `true`. Controls the publishing of WSDL to clients.
+
+|`stream-attachments`
+|Accepts `true` or `false`, defaults to `true`.
+Only for JAX-WS web services. Configures the JAX-WS runtime to send
+attachments in streaming fashion.
+
+|`validate-request`
+|Accepts `true` or `false`, defaults to `false`.
+Only for JAX-WS web services. Configures the JAX-WS runtime to validate
+that request messages are as the WSDL definitions specify.
+
+|`http-response-buffersize`
+|Property of `ReliabilityMessagingFeature` configuration, similar to
+`ReliableMessagingFeature.setDestinationBufferQuota()`
+
+|`reliability-config`
+|Partially supported. Subelements map to Metro's `ReliabilityMessagingFeature`.
+
+|`inactivity-timeout` under `reliability-config`
+|Maps to `ReliableMessagingFeature.getSequenceInactivityTimeout()`
+
+|`base-retransmission-interval` under `reliability-config`
+|Maps to `ReliableMessagingFeature.``getMessageRetransmissionInterval()`
+
+|`retransmission-exponential-``backoff` under `reliability-config`
+|Maps to `ReliableMessagingFeature.``getRetransmissionBackoffAlgorithm()`.
+Returns enum values, one of them is `exponential`.
+
+|`acknowledgement-interval` under `reliability-config`
+|Maps to `ReliableMessagingFeature.``getAcknowledgementTransmissionInterval()`
+
+|`sequence-expiration` under `reliability-config`
+|Maps to `ReliableMessagingFeature.``getSequenceInactivityTimeout()`.
+In WebLogic Server this value applies regardless of activity.
+In Metro it applies only to inactive sequences.
+
+|`buffer-retry-count` under `reliability-config`
+|Maps to `ReliableMessagingFeature.``getMaxMessageRetransmissionCount()`
+
+|`buffer-retry-delay` under `reliability-config`
+|Maps to `ReliableMessagingFeature.``getMessageRetransmissionInterval()`
+|===
diff --git a/docs/application-deployment-guide/src/main/asciidoc/deploying-applications.adoc b/docs/application-deployment-guide/src/main/asciidoc/deploying-applications.adoc
new file mode 100644
index 0000000..d9ef0a8
--- /dev/null
+++ b/docs/application-deployment-guide/src/main/asciidoc/deploying-applications.adoc
@@ -0,0 +1,1825 @@
+type=page
+status=published
+title=Deploying Applications
+next=asadmin-deployment-subcommands.html
+prev=overview.html
+~~~~~~
+
+= Deploying Applications
+
+[[GSDPG00004]][[beact]]
+
+
+[[deploying-applications]]
+== 2 Deploying Applications
+
+This chapter provides procedures and guidelines for deploying
+applications and modules in the {productName}environment by using the `asadmin` command-line utility.
+
+The following topics are addressed here:
+
+* link:#gilfm[Deploying Applications and Modules]
+* link:#gjiwk[Modifying the Configuration of a Web Application or
+Module]
+* link:#beaej[Web Module Deployment Guidelines]
+* link:#beaek[EJB Module Deployment Guidelines]
+* link:#gilxc[Deploying a Connector Module]
+* link:#beaem[Assembling and Deploying an Application Client Module]
+* link:#beael[Lifecycle Module Deployment Guidelines]
+* link:#gbiye[Web Service Deployment Guidelines]
+* link:#gkkmb[OSGi Bundle Deployment Guidelines]
+* link:#gkoif[Transparent JDBC Connection Pool Reconfiguration]
+* link:#giydj[Application-Scoped Resources]
+
+Instructions for accomplishing these tasks by using the Administration
+Console are contained in the Administration Console online help.
+
+[[gilfm]][[GSDPG00065]][[deploying-applications-and-modules]]
+
+=== Deploying Applications and Modules
+
+Application deployment is a dynamic process, which means that deployed
+applications and modules become available without requiring you to
+restart the server instance. Dynamic deployment can be useful in
+production environments to bring new applications and modules online
+easily. If you do restart the server, all deployed components are still
+deployed and available.
+
+The following topics are addressed here:
+
+* link:#gijmq[To Deploy an Application or Module]
+* link:#gijrc[To Change Targets for a Deployed Application or Module]
+* link:#giulr[To List Deployed Applications or Modules]
+* link:#gijmb[To Redeploy an Application or Module]
+* link:#fvyje[To Disable an Application or Module]
+* link:#gijjy[To Enable an Application or Module]
+* link:#gijkl[To Undeploy an Application or Module]
+* link:#fwakh[To Reload Changes to Applications or Modules Dynamically]
+* link:#fvxze[To Deploy an Application or Module Automatically]
+* link:#gijyb[To Deploy an Application or Module by Using a Deployment
+Plan]
+* link:#gilcn[To Deploy an Application or Module in a Directory Format]
+
+Instructions for accomplishing these tasks by using the Administration
+Console are contained in the Administration Console online help.
+
+[[gijmq]][[GSDPG00033]][[to-deploy-an-application-or-module]]
+
+==== To Deploy an Application or Module
+
+Use the `deploy` subcommand in remote mode to deploy an assembled
+application or module to {productName}. If an error occurs during
+deployment, the application or module is not deployed. If a module
+within an application contains an error, the entire application is not
+deployed. These failures prevent a partial deployment that could leave
+the server in an inconsistent state.
+
+By default, the deployment target is the default server instance,
+`server`. To deploy only to the default server instance, specify no
+target. If you deploy the application or module only to the domain
+target, it exists in the domain central repository, but no server
+instances or clusters can reference the component unless you add
+references.
+
+You can also deploy a component to a specific stand-alone server
+instance or cluster. When you deploy to server instances or clusters,
+the application or module exists in the domain's central repository and
+is referenced by any clusters or server instances that you deployed to.
+For a cluster, the preselected deployment target is `server`.
+
+If the component is already deployed or already exists, you can
+forcefully redeploy if you set the `--force` option of the `deploy`
+subcommand to true. The `redeploy` subcommand also accomplishes this.
+See link:#gikiw[Example 2-10]. You can see the enabled or disabled
+status of an application or module by using the
+link:reference-manual/show-component-status.html#GSRFM00232[`show-component-status`] subcommand.
+
+For information about how the application or module name is derived, see
+link:overview.html#gihzk[Naming Standards].
+
+Use the `--altdd` or `--runtimealtdd` options of the `deploy` (and
+`redeploy`) subcommand to deploy an application or module using a
+top-level alternate deployment descriptor. The `--altdd` option
+specifies a top-level alternate Jakarta EE standard deployment descriptor.
+The `--runtimealtdd` option specifies a top-level alternate {productName} runtime deployment descriptor. See link:#CHDFHDGD[Example 2-3].
+For more information about deployment descriptors associated with
+{productName}, see link:overview.html#gihzc[Deployment Descriptors and
+Annotations].
+
+You can also specify the deployment order of an application by using the
+`--deploymentorder` option of the `deploy` (and `redeploy`) subcommand.
+This is useful for applications that must be loaded in a certain order
+at server startup. Applications with lower deployment order numbers are
+loaded first. See link:#CHDJFAIJ[Example 2-4]. If a deployment order is
+not specified at the time an application is deployed, the default
+deployment order of 100 is assigned. If two applications have the same
+deployment order, the application that was deployed first is loaded
+first at server startup.
+
+1. Ensure that the server is running.
++
+Remote commands require a running server.
+2. List deployed applications by using the
+link:reference-manual/list-applications.html#GSRFM00148[`list-applications`] subcommand.
+3. Deploy the application or module by using the
+link:reference-manual/deploy.html#GSRFM00114[`deploy`] subcommand.
++
+Information about the options and properties of the subcommand is
+included in this help page.
+4. If needed, fix issues and rerun the `deploy` subcommand.
+
+[[GSDPG00008]][[gijlo]]
+Example 2-1 Deploying an Enterprise Application
+
+This example deploys `newApp.ear` to the default server, `server`.
+
+[source]
+----
+asadmin> deploy Cart.ear
+Application deployed successfully with name Cart.
+Command deploy executed successfully
+----
+
+[[GSDPG00009]][[gilcq]]
+Example 2-2 Deploying a Connector Module
+
+This example deploys a connector module that is packaged in an RAR file.
+
+[source]
+----
+asadmin> deploy jdbcra.rar
+Application deployed successfully with name jdbcra.
+Command deploy executed successfully
+----
+
+[[GSDPG809]][[CHDFHDGD]]
+Example 2-3 Using an Alternate Jakarta EE Standard Deployment Descriptor
+
+This example deploys an application using an alternate Jakarta EE standard
+deployment descriptor file that resides outside of an application
+archive. Specify an absolute path or a relative path to the alternate
+deployment descriptor file.
+
+[source]
+----
+asadmin> deploy --altdd path_to_alternate_descriptor cart.ear
+Application deployed successfully with name cart.
+Command deploy executed successfully
+----
+
+[[GSDPG810]][[CHDJFAIJ]]
+Example 2-4 Specifying the Deployment Order of an Application
+
+This example specifies the deployment order of two applications. The
+`cart` application is loaded before the `horse` application at server
+startup.
+
+Some lines of output are omitted from this example for readability.
+
+[source]
+----
+asadmin> deploy --deploymentorder 102 --name cart cart.war
+...
+asadmin> deploy --deploymentorder 110 --name horse horse.war
+...
+----
+
+[[GSDPG811]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help deploy` at the command line.
+
+[[gijrc]][[GSDPG00034]][[to-change-targets-for-a-deployed-application-or-module]]
+
+==== To Change Targets for a Deployed Application or Module
+
+After deployment, the deployed application or module exists in the
+central repository and can be referenced by the server instances or
+clusters that you deployed to as targets. The
+`asadmin create-application-ref` and `asadmin delete-application-ref`
+subcommands enable you to add or delete targets for a deployed
+component. Because the application or module itself is stored in the
+central repository, adding or deleting targets adds or deletes the same
+version of the component on different targets.
+
+1. Ensure that the server is running.
++
+Remote commands require a running server.
+2. Add and remove targets by using the
+link:reference-manual/create-application-ref.html#GSRFM00013[`create-application-ref`] and
+link:reference-manual/delete-application-ref.html#GSRFM00064[`delete-application-ref`] subcommands.
+
+[[GSDPG812]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-application-ref` or
+`asadmin help delete-application-ref` at the command line.
+
+[[giulr]][[GSDPG00035]][[to-list-deployed-applications-or-modules]]
+
+==== To List Deployed Applications or Modules
+
+There are a number of commands that can be used to list deployed
+applications or modules and their subcomponents. Use the commands in
+this section in remote mode.
+
+1. Ensure that the server is running.
++
+Remote commands require a running server.
+2. List the desired applications by using the
+link:reference-manual/list-applications.html#GSRFM00148[`list-applications`] subcommand or the
+link:reference-manual/list-sub-components.html#GSRFM00201[`list-sub-components`] subcommand.
++
+Information about these commands is included in these help pages.
+3. Show the status of a deployed component by using the
+link:reference-manual/show-component-status.html#GSRFM00232[`show-component-status`] subcommand.
+
+[[GSDPG00010]][[giumj]]
+Example 2-5 Listing Applications
+
+The `list-applications` subcommand lists all deployed Jakarta EE
+applications or modules. If the `--type` option is not specified, all
+components are listed. This example lists deployed applications.
+
+[source]
+----
+asadmin> list-applications --type web
+hellojsp <web>
+Command list-applications executed successfully
+----
+
+[[GSDPG00011]][[giuot]]
+Example 2-6 Listing Subcomponents
+
+The `list-sub-components` subcommand lists EJBs or servlets in a
+deployed module or in a module of the deployed application. If a module
+is not identified, all modules are listed. The `--appname` option
+functions only when the given module is standalone. To display a
+specific module in an application, you must specify the module name and
+the `--appname` option. This example gets the subcomponents of module
+`mejb.jar` within application `MEjbApp`.
+
+[source]
+----
+asadmin> list-sub-components --appname MEjbApp mejb.jar
+MEJBBean <StatelessSessionBean>
+Command list-sub-components executed successfully
+----
+
+[[GSDPG00012]][[giunl]]
+Example 2-7 Showing Status of a Deployed Component
+
+The `show-component-status` subcommand gets the status (enabled or
+disabled) of the deployed component. This example gets the status of the
+`MEjbApp` component.
+
+[source]
+----
+asadmin show-component-status MEjbApp
+Status of MEjbApp is enabled
+Command show-component-status executed successfully
+----
+
+[[gijmb]][[GSDPG00036]][[to-redeploy-an-application-or-module]]
+
+==== To Redeploy an Application or Module
+
+Use the `redeploy` subcommand in remote mode to overwrite a
+previously-deployed application or module. You can also accomplish this
+task by using the `--force` option of the `deploy` subcommand. Whenever
+a redeployment is done, the HTTP and SFSB sessions in transit at that
+time, and the EJB timers, become invalid unless you use the
+`--keepstate=true` option of the `redeploy` subcommand.
+
+[[GSDPG813]]
+
+Before You Begin
+
+You must remove a preconfigured resource before it can be updated.
+
+1. Ensure that the server is running.
++
+Remote commands require a running server.
+2. Redeploy an application or module by using the
+link:reference-manual/redeploy.html#GSRFM00217[`redeploy`] subcommand or the
+link:reference-manual/deploy.html#GSRFM00114[`deploy`] subcommand with the `--force` option.
++
+Information about the options and properties of these commands is
+included in these help pages.
+
+[[GSDPG00013]][[gijzm]]
+Example 2-8 Retaining HTTP Session State During Redeployment
+
+This example redeploys the `hello` web application. In a production
+environment, you usually want to retain sessions. If you use the
+`--keepstate` option, active sessions of the application are retained
+and restored when redeployment is complete.
+
+[source]
+----
+asadmin> redeploy --name hello --keepstate=true hello.war
+Application deployed successfully with name hello.
+Command redeploy executed successfully.
+----
+
+Keep State is a checkbox option when you redeploy using the
+Administration Console. For instructions, see the Administration Console
+online help.
+
+[[GSDPG00014]][[gijkr]]
+Example 2-9 Redeploying a Web Application That Was Deployed From a
+Directory
+
+This example redeploys the `hello` web application, which was originally
+deployed from the `hellodir` directory.
+
+[source]
+----
+asadmin>redeploy --name hellodir
+Application deployed successfully with name hellodir.
+Command redeploy executed successfully.
+----
+
+[[GSDPG00015]][[gikiw]]
+Example 2-10 Redeploying an Application by Using `asadmin deploy`
+`--force`
+
+The `--force` option is set to `false` by default. This example
+redeploys `newApp.ear` even if has been deployed or already exists.
+
+[source]
+----
+asadmin> deploy --force=true newApp.ear
+Application deployed successfully with name newApp.
+Command deploy executed successfully.
+----
+
+[[GSDPG814]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help redeploy` at the command line.
+
+[[fvyje]][[GSDPG00037]][[to-disable-an-application-or-module]]
+
+==== To Disable an Application or Module
+
+Use the `disable` subcommand in remote mode to immediately deactivate a
+deployed application or module without removing it from the server.
+Disabling a component makes the component inaccessible to clients.
+However, the component is not overwritten or uninstalled, and can be
+enabled by using the `asadmin enable` subcommand.
+
+An application or module is enabled by default.
+
+1. Ensure that the server is running.
++
+Remote commands require a running server.
+2. Obtain the exact name of the application or module that you are
+disabling.
++
+To list deployed applications or modules, use the
+link:reference-manual/list-applications.html#GSRFM00148[`list-applications`] subcommand. If you do not specify
+a type, all deployed applications and modules are listed. For example,
+valid types can be `web`, `ejb`, `connector`, `application`, and
+`webservice`.
++
+To see the status of deployed components, use the
+link:reference-manual/show-component-status.html#GSRFM00232[`show-component-status`] subcommand.
+3. Deactivate the application or module by using the
+link:reference-manual/disable.html#GSRFM00116[`disable`] subcommand.
++
+Information about the options and properties of the subcommand is
+included in this help page.
+
+[[GSDPG00016]][[gijkp]]
+Example 2-11 Listing Deployed Web Applications
+
+This example lists all deployed web applications.
+
+[source]
+----
+asadmin> list-applications --type web
+hellojsp <web>
+Command list-applications executed successfully.
+----
+
+[[GSDPG00017]][[gikvy]]
+Example 2-12 Disabling a Web Application
+
+This example disables the `hellojsp` application.
+
+[source]
+----
+asadmin> disable hellojsp
+Command disable executed successfully.
+----
+
+[[GSDPG815]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help disable` at the command line.
+
+[[gijjy]][[GSDPG00038]][[to-enable-an-application-or-module]]
+
+==== To Enable an Application or Module
+
+An enabled application or module is runnable and can be accessed by
+clients if it has been deployed to an accessible server instance or
+cluster. An application or module is enabled by default. Use the
+`enable` subcommand in remote mode to enable an application or module
+that has been disabled.
+
+An application or module that is deployed to more than one target can be
+enabled on one target and disabled on another. If a component is
+referenced by a target, it is not available to users unless it is
+enabled on that target.
+
+1. Ensure that the server is running.
++
+Remote commands require a running server.
+2. Enable the application or module by using the
+link:reference-manual/enable.html#GSRFM00124[`enable`] subcommand.
++
+If the component has not been deployed, an error message is displayed.
+If the component is already enabled, it is re-enabled. To see the status
+of deployed components, use the
+link:reference-manual/show-component-status.html#GSRFM00232[`show-component-status`] subcommand.
++
+Information about the options and properties of the subcommand is
+included in this help page.
+
+[[GSDPG00018]][[gijxl]]
+Example 2-13 Enabling an Application
+
+This example enables the `sampleApp` application.
+
+[source]
+----
+asadmin> enable sampleApp
+Command enable executed successfully.
+----
+
+[[GSDPG816]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help enable` at the command line.
+
+[[gijkl]][[GSDPG00039]][[to-undeploy-an-application-or-module]]
+
+==== To Undeploy an Application or Module
+
+Use the `undeploy` subcommand in remote mode to uninstall a deployed
+application or module and remove it from the repository. To reinstate
+the component, you must deploy the component again using the `deploy`
+subcommand.
+
+1. Ensure that the server is running.
++
+Remote commands require a running server.
+2. Obtain the exact name of the application or module you are
+undeploying.
++
+To list deployed applications or modules, use the
+link:reference-manual/list-applications.html#GSRFM00148[`list-applications`] subcommand. If you do not specify
+a type, all deployed applications and modules are listed. For example,
+valid types can be `web`, `ejb`, `connector`, `application`, and
+`webservice`.
++
+To see the status of deployed components, use the
+link:reference-manual/show-component-status.html#GSRFM00232[`show-component-status`] subcommand.
+3. Undeploy the application or module by using the
+link:reference-manual/undeploy.html#GSRFM00244[`undeploy`] subcommand.
++
+Information about the options and properties of the subcommand is
+included in this help page.
+
+[[GSDPG00019]][[gikag]]
+Example 2-14 Listing Deployed Applications or Modules
+
+This example lists all applications of type `web`.
+
+[source]
+----
+asadmin> list-applications --type web
+hellojsp <web>
+Command list-applications executed successfully.
+----
+
+[[GSDPG00020]][[gikun]]
+Example 2-15 Undeploying an Application
+
+This example uninstalls the `hellojsp` application.
+
+[source]
+----
+asadmin> undeploy hellojsp
+hellojsp <web>
+Command undeploy executed successfully.
+----
+
+[[GSDPG817]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help undeploy` at the command line.
+
+[[fwakh]][[GSDPG00040]][[to-reload-changes-to-applications-or-modules-dynamically]]
+
+==== To Reload Changes to Applications or Modules Dynamically
+
+Dynamic reloading enables you to change the code or deployment
+descriptors of an application or module without needing to perform an
+explicit redeployment. Instead, you can copy the changed class files or
+descriptors into the deployment directory for the application or module.
+The server checks for changes periodically and automatically redeploys
+the changes if the timestamp of the `.reload` file in the root directory
+for the application or module has changed.
+
+Dynamic reloading is enabled by default, and is available only on the
+default server instance.
+
+1. Go to the root directory of the deployed application or module.
++
+For an application:
++
+[source]
+----
+domain-dir/applications/app-name
+----
+For an individually deployed module:
++
+[source]
+----
+domain-dir/applications/module-name
+----
++
+[NOTE]
+====
+Deployment directories might change between {productName} releases.
+====
+
+2. Create or update the timestamp of the `.reload` file to load the changes.
++
+* For UNIX: `touch .reload`
+* For Windows: `echo> .reload`
++
+If the `.reload` file doesn't exist, the `touch` or `echo` command
+creates it.
+
+[[fvxze]][[GSDPG00041]][[to-deploy-an-application-or-module-automatically]]
+
+==== To Deploy an Application or Module Automatically
+
+[NOTE]
+====
+This task is best suited for use in a development environment.
+====
+
+Automatic deployment involves copying an archive file into a special
+autodeploy directory where the archive is automatically deployed by
+{productName} at predefined intervals. This method is useful in a
+development environment because it allows new code to be tested quickly.
+Automatic deployment is enabled by default, and is available only on the
+default server instance.
+
+1. Use the link:reference-manual/set.html#GSRFM00226[`set`] subcommand to adjust the
+autodeployment interval.
++
+This sets the interval at which applications and modules are checked for
+code changes and dynamically reloaded. The default is `2`.
+2. Use the link:reference-manual/set.html#GSRFM00226[`set`] subcommand to enable JSP
+precompilation.
+3. Copy your archive file to the autodeploy directory.
++
+The default location is domain-dir``/autodeploy``. The application will be
+deployed at the next interval.
++
+To undeploy an automatically deployed application or module, remove its
+archive file from the autodeploy directory.
++
+[NOTE]
+====
+Deployment directories might change between {productName} releases.
+====
+
+[[GSDPG00021]][[giqrk]]
+Example 2-16 Setting the Autodeployment Interval
+
+This example sets the autodeployment inverval to 3 seconds (default is
+2).
+
+[source]
+----
+asadmin> set server.admin-service.das-config.autodeploy-polling-interval-in-seconds=3
+Command set executed successfully.
+----
+
+[[GSDPG00022]][[giqtm]]
+Example 2-17 Setting JSP Precompilation
+
+This example enables JSP precompilation (default is false).
+
+[source]
+----
+asadmin>
+set server.admin-service.das-config.autodeploy-jsp-precompilation-enabled=true
+Command set executed successfully.
+----
+
+[[GSDPG819]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin set --help` at the command line.
+
+[[gijyb]][[GSDPG00042]][[to-deploy-an-application-or-module-by-using-a-deployment-plan]]
+
+==== To Deploy an Application or Module by Using a Deployment Plan
+
+In the deployment plan for an EAR file, the `glassfish-application.xml`
+file is located at the root. The deployment descriptor for each module
+is stored according to this syntax: module-name.gf-dd-name, where the
+gf-dd-name depends on the module type. If a module named `MyModule`
+contains a CMP mappings file, the file is named
+`MyModule.sun-cmp-mappings.xml`. A `.dbschema` file is stored at the
+root level. Each `/` (forward slash) is replaced by a `#` (pound sign).
+
+1. Ensure that the server is running.
++
+Remote commands require a running server.
+2. Deploy the application or module by using the
+link:reference-manual/deploy.html#GSRFM00114[`deploy`] subcommand with the `--deploymentplan`
+option.
++
+
+[NOTE]
+====
+Deployment directories might change between {productName} releases.
+====
+
+
+[[GSDPG00023]][[gijvy]]
+Example 2-18 Deploying by Using a Deployment Plan
+
+This example deploys the application in the `myrostapp.ear` file
+according to the plan specified by the `mydeployplan.jar` file.
+
+[source]
+----
+asadmin>deploy --deploymentplan mydeployplan.jar myrostapp.ear
+Application deployed successfully with name myrostapp.
+Command deploy executed successfully.
+----
+
+[[GSDPG00024]][[gijyn]]
+Example 2-19 Deployment Plan Structure for an Enterprise Application
+
+This listing shows the structure of the deployment plan JAR file for an
+EAR file.
+
+[source]
+----
+$ jar -tvf mydeployplan.jar
+420 Thu Mar 13 15:37:48 PST 2003 glassfish-application.xml
+370 Thu Mar 13 15:37:48 PST 2003 RosterClient.war.glassfish-web.xml
+418 Thu Mar 13 15:37:48 PST 2003 roster-ac.jar.glassfish-application-client.xml
+1281 Thu Mar 13 15:37:48 PST 2003 roster-ejb.jar.glassfish-ejb-jar.xml
+2317 Thu Mar 13 15:37:48 PST 2003 team-ejb.jar.glassfish-ejb-jar.xml
+3432 Thu Mar 13 15:37:48 PST 2003 team-ejb.jar.sun-cmp-mappings.xml
+84805 Thu Mar 13 15:37:48 PST 2003 team-ejb.jar.RosterSchema.dbschema
+----
+
+[[GSDPG00025]][[gijwk]]
+Example 2-20 Deployment Plan Structure for an EJB Module
+
+In the deployment plan for an EJB module, the deployment descriptor that
+is specific to {productName} is at the root level. If a standalone
+EJB module contains a CMP bean, the deployment plan includes the
+`sun-cmp-mappings.xml` and `.dbschema` files at the root level. In the
+following listing, the deployment plan describes a CMP bean:
+
+[source]
+----
+$ jar r -tvf myotherplan.jar
+3603 Thu Mar 13 15:24:20 PST 2003 glassfish-ejb-jar.xml
+3432 Thu Mar 13 15:24:20 PST 2003 sun-cmp-mappings.xml
+84805 Thu Mar 13 15:24:20 PST 2003 RosterSchema.dbschema
+----
+
+[[GSDPG820]]
+
+See Also
+
+The deployment plan is part of the implementation of JSR 88. For more
+information about JSR 88, see link:overview.html#giiel[JSR 88 Naming] and
+the JSR 88 page at `http://jcp.org/en/jsr/detail?id=88`.
+
+[[gilcn]][[GSDPG00043]][[to-deploy-an-application-or-module-in-a-directory-format]]
+
+==== To Deploy an Application or Module in a Directory Format
+
+
+[NOTE]
+====
+This task is best suited for use in a development environment.
+====
+
+
+An expanded directory, also known as an exploded directory, contains an
+unassembled (unpackaged) application or module. To deploy a directory
+format instead of an archive, file, use the `asadmin deploy` subcommand
+in remote mode and specify a path to a directory instead of to an
+archive file. The contents of the directory must be the same as the
+contents of a corresponding archive file, with one exception. An
+application archive file contains archive files for its modules, for
+example `myUI.war` and `myEJB.jar`. The expanded application directory
+contains expanded directories for the modules, for example `myUI_war`
+and `myEJB_jar`, instead. .
+
+You can change deployment descriptor files directly in the expanded
+directory.
+
+If your environment is configured to use dynamic reloading, you can also
+dynamically reload applications or modules that are deployed from the
+directory. For instructions, see link:#fwakh[To Reload Changes to
+Applications or Modules Dynamically].
+
+Unlike archive file deployment, directory deployment does not copy the
+directory contents to the remote hosts. This means that for deployment
+to a cluster, the directory path may exist for both the DAS and the
+remote server instances but may not actually correspond to the same
+physical location. If any target server instance cannot see the deployed
+directory, or finds that it contains different files from those detected
+by the DAS, deployment fails.
+
+Integrated development environments (IDEs) typically use directory
+deployment, so you do not need to deal directly with the expanded
+format.
+
+[[GSDPG821]]
+
+Before You Begin
+
+On each cluster or stand-alone server instance to which the application
+or module is deployed, the directory must be accessible and must contain
+the same files as found by the DAS.
+
+On Windows, if you are deploying a directory on a mapped drive, you must
+be running {productName} as the same user to which the mapped drive
+is assigned. This enables {productName} to access the directory.
+
+1. Ensure that the server is running.
++
+Remote commands require a running server.
+2. Verify that the expanded directory contents match the archive file.
++
+For information about the required directory contents, see the
+appropriate specifications.
+3. Deploy the directory by using the link:reference-manual/deploy.html#GSRFM00114[`deploy`]
+subcommand and specifying the path to the expanded directory.
++
+
+[NOTE]
+====
+Deployment directories might change between {productName} releases.
+====
+
+
+[[GSDPG00026]][[gilaz]]
+Example 2-21 Deploying an Application From a Directory
+
+This example deploys the expanded directory `/apps/MyApp` for the
+`hello` application.
+
+[source]
+----
+asadmin> deploy --name hello /apps/MyApp
+Application deployed successfully with name hello.
+Command deploy executed successfully.
+----
+
+[[GSDPG822]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help deploy` at the command line.
+
+[[gjiwk]][[GSDPG00066]][[modifying-the-configuration-of-a-web-application-or-module]]
+
+=== Modifying the Configuration of a Web Application or Module
+
+You can modify the configuration of a web application or a module by
+modifying the deployment descriptors and then repackaging and
+redeploying the application.
+
+The instructions in this section enable you to change the configuration
+of a deployed application without the need to modify the application's
+deployment descriptors and repackage and redeploy the application. If
+the application or module entry is unset, its value reverts to the
+value, if any, that is set in the application's deployment descriptor.
+
+The following topics are addressed here:
+
+* link:#giyce[To Set a Web Context Parameter]
+* link:#giycy[To Unset a Web Context Parameter]
+* link:#giybo[To List Web Context Parameters]
+* link:#giyhc[To Set a Web Environment Entry]
+* link:#giyjr[To Unset a Web Environment Entry]
+* link:#giyip[To List Web Environment Entries]
+
+[[giyce]][[GSDPG00044]][[to-set-a-web-context-parameter]]
+
+==== To Set a Web Context Parameter
+
+Use the `set-web-context-param` subcommand in remote mode to change the
+configuration of a deployed application without the need to modify the
+application's deployment descriptors and repackage and redeploy the
+application. By using this subcommand, you are either adding a new
+parameter that did not appear in the original web module's descriptor,
+or overriding the descriptor's setting of the parameter.
+
+If the `--ignoreDescriptorItem` option is set to `true`, then the server
+ignores any setting for that context parameter in the descriptor, which
+means you do not need to specify an overriding value on the
+`set-web-context-param` subcommand. The server behaves as if the
+descriptor had never contained a setting for that context parameter.
+
+This subcommand sets a servlet context-initialization parameter of one
+of the following items:
+
+* A deployed web application
+* A web module in a deployed Java Platform, Enterprise Edition (Jakarta EE)
+application
+
+[[GSDPG823]]
+
+Before You Begin
+
+The application must already be deployed. Otherwise, an error occurs.
+
+1. Ensure that the server is running.
++
+Remote commands require a running server.
+2. Set a servlet context-initialization parameter by using the
+link:reference-manual/set-web-context-param.html#GSRFM00230[`set-web-context-param`] subcommand.
++
+Information about the options for the subcommand is included in this
+help page.
+
+[[GSDPG00027]][[gjivx]]
+Example 2-22 Setting a Servlet Context-Initialization Parameter for a
+Web Application
+
+This example sets the servlet context-initialization parameter
+javax.faces.STATE_SAVING_METHOD of the web application `basic-ezcomp` to
+client.
+
+[source]
+----
+asadmin> set-web-context-param --name=javax.faces.STATE_SAVING_METHOD
+--description="The location where the application?s state is preserved"
+--value=client basic-ezcomp
+Command set-web-context-param executed successfully.
+----
+
+[[GSDPG824]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help set-web-context-param` at the command line.
+
+[[giycy]][[GSDPG00045]][[to-unset-a-web-context-parameter]]
+
+==== To Unset a Web Context Parameter
+
+Use the `unset-web-context-param` subcommand in remote mode to unset an
+environment entry for a deployed web application or module that has been
+set by using the `set-web-env-entry` subcommand. There is no need to
+modify the application's deployment descriptors and repackage and
+redeploy the application.
+
+This subcommand unsets an environment entry for one of the following
+items:
+
+* A deployed web application
+* A web module in a deployed Java Platform, Enterprise Edition (Jakarta EE)
+application
+
+When an entry is unset, its value reverts to the value, if any, that is
+set in the application's deployment descriptor. This subcommand cannot
+be used to change the value of an environment entry that is set in an
+application's deployment descriptor. Instead, use the
+link:reference-manual/set-web-context-param.html#GSRFM00230[`set-web-context-param`] subcommand for this purpose.
+
+[[GSDPG825]]
+
+Before You Begin
+
+The application must already be deployed, and the entry must have
+previously been set by using the `set-web-env-entry` subcommand.
+Otherwise, an error occurs.
+
+1. Ensure that the server is running.
++
+Remote commands require a running server.
+2. Unset an environment entry by using the
+link:reference-manual/unset-web-context-param.html#GSRFM00248[`unset-web-context-param`] subcommand.
++
+Information about the options for the subcommand is included in this
+help page.
+
+[[GSDPG00028]][[gjivv]]
+Example 2-23 Unsetting a Servlet Context-Initialization Parameter for a
+Web Application
+
+This example unsets the servlet context-initialization parameter
+javax.faces.STATE_SAVING_METHOD of the web application `basic-ezcomp`.
+
+[source]
+----
+asadmin> unset-web-context-param
+--name=javax.faces.STATE_SAVING_METHOD basic-ezcomp
+Command unset-web-context-param executed successfully.
+----
+
+[[GSDPG826]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help unset-web-context-param` at the command line.
+
+[[giybo]][[GSDPG00046]][[to-list-web-context-parameters]]
+
+==== To List Web Context Parameters
+
+Use the `list-web-context-param` subcommand in remote mode to list the
+parameters that have previously been set by using the
+link:reference-manual/set-web-context-param.html#GSRFM00230[`set-web-context-param`] subcommand. The subcommand
+does not list parameters that are set only in the application's
+deployment descriptor. For each parameter, the following information is
+displayed:
+
+* The name of the parameter
+* The value to which the parameter is set
+* The value of the `--ignoreDescriptorItem` option of the
+`set-web-context-param` subcommand that was specified when the parameter
+was set
+* The description of the parameter or `null` if no description was
+specified when the parameter was set
+
+1. Ensure that the server is running.
++
+Remote commands require a running server.
+2. List servlet context-initialization parameters by using the
+link:reference-manual/list-web-context-param.html#GSRFM00208[`list-web-context-param`] subcommand.
+
+[[GSDPG00029]][[gjixd]]
+Example 2-24 Listing Servlet Context-Initialization Parameters for a Web
+Application
+
+This example lists all servlet context-initialization parameters of the
+web application `basic-ezcomp` that have been set by using the
+`set-web-context-param` subcommand. Because no description was specified
+when the javax.faces.PROJECT_STAGE parameter was set, null is displayed
+instead of a description for this parameter.
+
+[source]
+----
+asadmin> list-web-context-param basic-ezcomp
+javax.faces.STATE_SAVING_METHOD = client ignoreDescriptorItem=false
+//The location where the application's state is preserved
+javax.faces.PROJECT_STAGE = null ignoreDescriptorItem=true //null
+Command list-web-context-param executed successfully.
+----
+
+[[GSDPG827]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-web-context-param` at the command line.
+
+[[giyhc]][[GSDPG00047]][[to-set-a-web-environment-entry]]
+
+==== To Set a Web Environment Entry
+
+An application uses the values of environment entries to customize its
+behavior or presentation. Use the `set-web-env-entry` subcommand in
+remote mode to change the configuration of a deployed application
+without the need to modify the application's deployment descriptors and
+repackage and redeploy the application. By using this subcommand, you
+are either adding a new parameter that did not appear in the original
+web module's descriptor, or overriding the descriptor's setting of the
+parameter.
+
+If you the `--ignoreDescriptorItem` option is set to `true`, then the
+server ignores any setting for that environment entry in the descriptor,
+which means you do not need to specify an overriding value on the
+`set-web-env-entry` subcommand. The server behaves as if the descriptor
+had never contained a setting for that environment entry.
+
+This subcommand sets an environment entry for one of the following
+items:
+
+* A deployed web application
+* A web module in a deployed Java Platform, Enterprise Edition (Jakarta EE)
+application
+
+[[GSDPG828]]
+
+Before You Begin
+
+The application must already be deployed. Otherwise, an error occurs.
+
+1. Ensure that the server is running.
++
+Remote commands require a running server.
+2. Set an environment entry for a deployed web application or module by
+using the link:reference-manual/set-web-env-entry.html#GSRFM00231[`set-web-env-entry`] subcommand.
++
+Information about the options for the subcommand is included in this
+help page.
+
+[[GSDPG00030]][[gjiwe]]
+Example 2-25 Setting an Environment Entry for a Web Application
+
+This example sets the environment entry `Hello User` of the application
+hello to `techscribe`. The Java type of this entry is
+`java.lang.String`.
+
+[source]
+----
+asadmin> set-web-env-entry --name="Hello User"
+--type=java.lang.String --value=techscribe
+--description="User authentication for Hello appplication" hello
+Command set-web-env-entry executed successfully
+----
+
+[[GSDPG829]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help set-web-env-entry` at the command line.
+
+[[giyjr]][[GSDPG00048]][[to-unset-a-web-environment-entry]]
+
+==== To Unset a Web Environment Entry
+
+Use the `unset-web-env-entry` subcommand in remote mode to unset an
+environment entry for a deployed web application or module.
+
+1. Ensure that the server is running.
++
+Remote commands require a running server.
+2. Unset a web environment entry by using the
+link:reference-manual/unset-web-env-entry.html#GSRFM00249[`unset-web-env-entry`] subcommand.
++
+Information about the options for the subcommand is included in this
+help page.
+
+[[GSDPG00031]][[gjivj]]
+Example 2-26 Unsetting an Environment Entry for a Web Application
+
+This example unsets the environment entry `Hello User` of the web
+application `hello`.
+
+[source]
+----
+asadmin> unset-web-env-entry --name="Hello User" hello
+Command unset-web-env-entry executed successfully.
+----
+
+[[GSDPG830]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help unset-web-env-entry` at the command line.
+
+[[giyip]][[GSDPG00049]][[to-list-web-environment-entries]]
+
+==== To List Web Environment Entries
+
+Use the `list-web-env-entry` subcommand to list environment entries for
+a deployed web application or module. For each entry, the following
+information is displayed:
+
+* The name of the entry
+* The Java type of the entry
+* The value to which the entry is set
+* The description of the entry or null if no description was specified
+when the entry was set
+* The value of the `--ignoreDescriptorItem` option of the
+`set-web-env-entry` subcommand that was specified when the entry was set
+
+1. Ensure that the server is running.
++
+Remote commands require a running server.
+2. List the environment entries by using
+theolink:GSRFM00209[`list-web-env-entry`] subcommand.
+
+[[GSDPG00032]][[gjiws]]
+Example 2-27 Listing Environment Entries for a Web Application
+
+This example lists all environment entries that have been set for the
+web application `hello` by using the `set-web-env-entry` subcommand.
+
+[source]
+----
+asadmin> list-web-env-entry hello
+Hello User (java.lang.String) = techscribe ignoreDescriptorItem=false
+//User authentication for Hello appplication
+Hello Port (java.lang.Integer) = null ignoreDescriptorItem=true //null
+Command list-web-env-entry executed successfully.
+----
+
+[[GSDPG831]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-web-env-entry` at the command line.
+
+[[beaej]][[GSDPG00067]][[web-module-deployment-guidelines]]
+
+=== Web Module Deployment Guidelines
+
+The following guidelines apply to deploying a web module in {productName}:
+
+* Context Root. When you deploy a web module, if you do not specify a
+context root, the default is the name of the WAR file without the `.war`
+extension. The web module context root must be unique within the server
+instance.
++
+The domain administration server (DAS) in {productName} versions
+2.1.1 and later supports the deployment of multiple web applications
+using the same web context root as long as those applications are
+deployed to different {productName} stand-alone instances. Deploying
+multiple applications using the same context root within a single
+instance produces an error.
+* Data Source. If a web application accesses a `DataSource` that is not
+specified in a `resource-ref` in `glassfish-web.xml`, or there is no
+`glassfish-web.xml` file, the `resource-ref-name` defined in `web.xml`
+is used. A warning message is logged, recording the JNDI name that was
+used to look up the resource.
+* Virtual Servers. If you deploy a web application and do not specify
+any assigned virtual servers, the web application is assigned to all
+currently-defined virtual servers with the exception of the virtual
+server with ID `__asadmin`, which is reserved for administrative
+purposes. If you then create additional virtual servers and want to
+assign existing web applications to them, you must redeploy the web
+applications.
+* HTTP Sessions. If a web application is undeployed, all its HTTP
+sessions will be invalidated and removed, unless the application is
+being undeployed as part of a redeployment and the `--keepstate`
+deployment option was set to true. This option is not supported and
+ignored in a clustered environment. See link:#gijzm[Example 2-8].
++
+For information about HTTP session persistence, see the
+link:ha-administration-guide.html#GSHAG[{productName} High Availability
+Administration Guide].
+* Load Balancing. See the link:ha-administration-guide.html#GSHAG[{productName} High Availability Administration Guide] for information about
+load balancing.
+* JSP Precompilation. You can precompile JSP files during deployment by
+checking the appropriate box in the Administration Console, or by using
+the `--precompilejsp` option of the `deploy` subcommand.
++
+You can keep the generated source for JSP files by adding the
+`keepgenerated` flag to the `jsp-config` element in `glassfish-web.xml`.
+For example:
++
+[source,xml]
+----
+<glassfish-web-app>
+   ...
+   <jsp-config>
+      <property name=keepgenerated value=true />
+   </jsp-config>
+</glassfish-web-app>
+----
+If you include this property when you deploy the WAR file, the generated
+source is kept in domain-dir``/generated/jsp/``app-name``/``module-name for
+an application, or domain-dir``/generated/jsp/``module-name for an
+individually-deployed web module.
++
+For more information about JSP precompilation, see
+link:dd-elements.html#beatx[`jsp-config`].
+* Web Context Parameters. You can set web context parameters after
+deployment. See the following sections:
+
+** link:#giyce[To Set a Web Context Parameter]
+
+** link:#giycy[To Unset a Web Context Parameter]
+
+** link:#giybo[To List Web Context Parameters]
+* Web Environment Entries. You can set web environment entries after
+deployment. See the following sections:
+
+** link:#giyhc[To Set a Web Environment Entry]
+
+** link:#giyjr[To Unset a Web Environment Entry]
+
+** link:#giyip[To List Web Environment Entries]
+
+[[beaek]][[GSDPG00068]][[ejb-module-deployment-guidelines]]
+
+=== EJB Module Deployment Guidelines
+
+
+[NOTE]
+====
+The {productName} Web Profile supports the EJB 3.1 Lite
+specification, which allows enterprise beans within web applications,
+among other features. The {productName} Full Platform Profile
+supports the entire EJB 3.1 specification. For details, see
+http://jcp.org/en/jsr/detail?id=318[JSR 318]
+====
+
+
+The following guidelines apply to deploying an EJB module in {productName}:
+
+* JNDI Name. — If no JNDI name for the EJB JAR module is specified in
+the `jndi-name` element immediately under the `ejb` element in
+`glassfish-ejb-jar.xml`, or there is no `glassfish-ejb-jar.xml` file, a
+default, non-clashing JNDI name is derived. A warning message is logged,
+recording the JNDI name used to look up the EJB JAR module.
++
+Because the EJB 3.1 specification defines portable EJB JNDI names, there
+is less need for {productName} specific JNDI names. By default,
+{productName} specific default JNDI names are applied automatically
+for backward compatibility. To disable {productName} specific JNDI
+names for an EJB module, set the value of the
+`<disable-nonportable-jndi-names>` element in the
+`glassfish-ejb-jar.xml` file to `true`. The default is `false`.
+* Stateful Session Bean and Timer State. — Use the `--keepstate` option
+of the link:reference-manual/redeploy.html#GSRFM00217[`redeploy`] subcommand or the `<keepstate>`
+element in the `glassfish-ejb-jar.xml` file to retain stateful session
+bean instances and persistently created EJB timers across redeployments.
+The `--keepstate` option of the `redeploy` subcommand takes precedence.
+The default for both is `false`. This option is not supported and
+ignored in a clustered environment.
++
+Some changes to an application between redeployments can prevent this
+feature from working properly. For example, do not change the set of
+instance variables in the SFSB bean class. Other examples would be
+changes to EJB names, or adding or removing EJBs to or from an
+application.
+* EJB Singletons. — EJB Singletons are created for each server instance
+in a cluster, and not once per cluster.
+* Stubs and Ties. — Use the link:reference-manual/get-client-stubs.html#GSRFM00140[`get-client-stubs`]
+subcommand in remote mode to retrieve stubs and ties.
+* Compatibility of JAR Visibility Requirements. — Use the
+`compatibility` element of the `glassfish-application.xml` or
+`glassfish-ejb-jar.xml` file to specify the {productName} release
+with which to be backward compatible in terms of JAR visibility
+requirements for applications. The current allowed value is `v2`, which
+refers to {productName} version 2 or {productName} version 9.1 or
+9.1.1. Starting in Jakarta EE 6, the Jakarta EE specification imposes stricter
+requirements than Jakarta EE 5 did on which JAR files can be visible to
+various modules within an EAR file. Setting this element to `v2` removes
+these Jakarta EE 6 and later restrictions.
+
+[[gilxc]][[GSDPG00069]][[deploying-a-connector-module]]
+
+=== Deploying a Connector Module
+
+Deploying a stand-alone connector module allows multiple deployed Java
+EE applications to share the connector module. A resource adapter
+configuration is automatically created for the connector module.
+
+The following topics are addressed here:
+
+* link:#fvynl[To Deploy and Configure a Stand-Alone Connector Module]
+* link:#bealp[Redeploying a Stand-Alone Connector Module]
+* link:#bealq[Deploying and Configuring an Embedded Resource Adapter]
+
+[[fvynl]][[GSDPG00050]][[to-deploy-and-configure-a-stand-alone-connector-module]]
+
+==== To Deploy and Configure a Stand-Alone Connector Module
+
+As an alternative to Step link:#gkojp[3] through Step link:#gkohy[6],
+you can define application-scoped resources in the
+`glassfish-resources.xml` deployment descriptor. For more information,
+see link:#giydj[Application-Scoped Resources].
+
+1. Ensure that the server is running. Remote commands require a running server.
+
+2. Deploy the connector module by using the link:reference-manual/deploy.html#GSRFM00114[`deploy`]
+subcommand.
+
+3. [[gkojp]]
+Configure connector connection pools for the deployed connector module.
++
+Use the `create-connector-connection-pool` subcommand. For procedures,
+see "link:administration-guide/connectors.html#GSADG00431[To Create a Connector Connection Pool]" in
+{productName} Administration Guide.
+
+4. Configure connector resources for the connector connection pools.
++
+Use the `create-resource-adapter-config` subcommand. For procedures, see
+"link:administration-guide/connectors.html#GSADG00440[To Create Configuration Information for a Resource
+Adapter]" in {productName} Administration Guide.
+If needed, you can override the default configuration properties of a
+resource adapter.
++
+This step associates a connector resource with a JNDI name.
+
+5. Configure a resource adapter.
++
+Use the `create-resource-adapter-config` subcommand. For procedures, see
+"link:administration-guide/connectors.html#GSADG00440[To Create Configuration Information for a Resource
+Adapter]" in {productName} Administration Guide.
+If needed, you can override the default configuration properties of a
+resource adapter.
+
+6. [[gkohy]]
+If needed, create an administered object for an inbound resource adapter.
++
+Use the `create-admin-object` subcommand. For procedures, see
+"link:administration-guide/connectors.html#GSADG00452[To Create an Administered Object]" in {productName} Administration Guide.
+
+[[bealp]][[GSDPG00332]][[redeploying-a-stand-alone-connector-module]]
+
+==== Redeploying a Stand-Alone Connector Module
+
+Redeployment of a connector module maintains all connector connection
+pools, connector resources, and administered objects defined for the
+previously deployed connector module. You do not need to reconfigure any
+of these resources.
+
+However, you should redeploy any dependent modules. A dependent module
+uses or refers to a connector resource of the redeployed connector
+module. Redeployment of a connector module results in the shared class
+loader reloading the new classes. Other modules that refer to the old
+resource adapter classes must be redeployed to gain access to the new
+classes. For more information about class loaders, see
+"link:application-development-guide/class-loaders.html#GSDVG00003[Class Loaders]" in {productName} Application Development Guide.
+
+During connector module redeployment, the server log provides a warning
+indicating that all dependent applications should be redeployed. Client
+applications or application components using the connector module's
+resources may throw class cast exceptions if dependent applications are
+not redeployed after connector module redeployment.
+
+To disable automatic redeployment, set the `--force` option to `false`.
+In this case, if the connector module has already been deployed,
+{productName} provides an error message.
+
+[[bealq]][[GSDPG00333]][[deploying-and-configuring-an-embedded-resource-adapter]]
+
+==== Deploying and Configuring an Embedded Resource Adapter
+
+A connector module can be deployed as a Jakarta EE component in a Jakarta EE
+application. Such connectors are only visible to components residing in
+the same Jakarta EE application. Deploy this application as you would any
+other Jakarta EE application.
+
+You can create new connector connection pools and connector resources
+for a connector module embedded within a Jakarta EE application by
+prefixing the connector name with app-name`#`. For example, if an
+application `appX.ear` has `jdbcra.rar` embedded within it, the
+connector connection pools and connector resources refer to the
+connector module as `appX#jdbcra`.
+
+An embedded connector module cannot be undeployed using the name
+app-name`#`connector-name. To undeploy the connector module, you must
+undeploy the application in which it is embedded.
+
+The association between the physical JNDI name for the connector module
+in {productName} and the logical JNDI name used in the application
+component is specified in the {productName}-specific XML descriptor
+`glassfish-ejb-jar.xml`.
+
+[[beaem]][[GSDPG00070]][[assembling-and-deploying-an-application-client-module]]
+
+=== Assembling and Deploying an Application Client Module
+
+Deployment is necessary for application clients that communicate with
+EJB components or that use Java Web Start launch support. Java Web Start
+is supported for application clients and for applications that contain
+application clients. By default, Java Web Start is enabled in
+application clients and in {productName}.
+
+
+[NOTE]
+====
+The Application Client Container is supported only in the {productName} Full Platform Profile, not in the Web Profile.
+====
+
+
+The following topics are addressed here:
+
+* link:#fvyal[To Assemble and Deploy an Application Client]
+* link:#fwahd[To Prepare Another Machine for Running an Application
+Client]
+* link:#gavpv[To Undeploy an Application Client]
+
+[[fvyal]][[GSDPG00051]][[to-assemble-and-deploy-an-application-client]]
+
+==== To Assemble and Deploy an Application Client
+
+1. Assemble the necessary client components.
++
+The client JAR file is created.
+2. Assemble the EJB components that are to be accessed by the client.
++
+The EJB JAR file is created.
+3. Assemble the client and EJB JAR files together in an EAR.
++
+An EAR file contains all the components of the application.
+4. Deploy the application.
++
+Instructions are contained in link:#gijmq[To Deploy an Application or
+Module].
+5. If you are using the `appclient` script to run the application
+client, retrieve the client files.
++
+The client artifacts contain the ties and necessary classes for the
+application client. In this release of {productName}, the client
+artifacts include multiple files. You can use either the
+`get-client-stubs` subcommand or the `--retrieve` option of the `deploy`
+subcommand, but you do not need to use both.
+* Use the link:reference-manual/deploy.html#GSRFM00114[`deploy`] subcommand with the `--retrieve`
+option to retrieve the client files as part of deploying the
+application.
+* Use the link:reference-manual/get-client-stubs.html#GSRFM00140[`get-client-stubs`] subcommand to retrieve
+client files for a previously-deployed application.
+6. Test the client on the {productName} machine in one of the
+following ways:
+* If Java Web Start is enabled for the application client, use the
+Launch link on the Application Client Modules.
+* Run an application client by using the `appclient` script.
++
+The `appclient` script is located in the as-install``/bin`` directory.
++
+If you are using the default server instance, the only required option
+is `-client`, which points to the client JAR file. For example:
++
+[source]
+----
+appclient -client converterClient.jar
+----
+The -xml parameter, which specifies the location of the `sun-acc.xml`
+file, is also required if you are not using the default instance.
+
+[[GSDPG832]]
+
+See Also
+
+For more detailed information about the `appclient` script, see
+link:reference-manual/appclient.html#GSRFM00262[`appclient`(1M)].
+
+For more detailed information about creating application clients, see
+"link:application-development-guide/java-clients.html#GSDVG00012[Developing Java Clients]" in {productName} Application Development Guide. This chapter includes
+information on the following topics:
+
+* Accessing EJB components and JMS resources from application clients
+* Connecting to a remote EJB module through a firewall
+* Using Java Web Start and creating a custom JNLP file
+* Using libraries with application clients
+* Specifying a splash screen, login retries, and other customizations
+
+[[fwahd]][[GSDPG00052]][[to-prepare-another-machine-for-running-an-application-client]]
+
+==== To Prepare Another Machine for Running an Application Client
+
+If Java Web Start is enabled, the default URL format for an application
+is ``http://`host:port``/``context-root. For example:
+
+[source]
+----
+http://localhost:80/myapp
+----
+
+The default URL format for a standalone application client module is
+``http://``host:port``/``module-id. For example:
+
+[source]
+----
+http://localhost:80/myclient
+----
+
+To set a different URL for an application client, set the `context-root`
+subelement of the link:dd-elements.html#gauax[`java-web-start-access`]
+element in the `glassfish-application-client.xml` file.
+
+If the context-root or module-id is not specified during deployment, the
+name of the EAR or JAR file without the `.ear` or `.jar` extension is
+used. For an application, the relative path to the application client
+JAR file is also included. If the application or module is not in EAR or
+JAR file format, a context-root or module-id is generated. Regardless of
+how the context-root or module-id is determined, it is written to the
+server log. For details about naming, see link:overview.html#gihzk[Naming
+Standards].
+
+[[GSDPG833]]
+
+Before You Begin
+
+This task applies if you want to use the `appclient` script to run the
+application client on a system other than where the server runs.
+
+1. Create the application client package JAR file.
++
+Use the `package-appclient` script in the as-install``/bin`` directory.
+This JAR file is created in the as-install``/lib/appclient`` directory.
+2. Copy the application client package JAR file to the client machine.
+3. Extract the contents of the JAR file.
++
+For example: `jar xf` filename`.jar`
+4. Configure the `sun-acc.xml` file.
++
+If you used the `package-appclient` script, this file is located in the
+`appclient/appserv/lib/appclient` directory by default.
+5. Configure the `asenv.conf` (`asenv.bat` on Windows) file.
++
+This file is located in `appclient/appserv/bin` by default if you used
+the `package-appclient` script.
+6. Copy the client JAR file to the client machine.
++
+You are now ready to run the client.
+
+[[GSDPG834]]
+
+See Also
+
+For more detailed information about Java Web Start and the
+`package-appclient` script, see link:reference-manual/appclient.html#GSRFM00262[`appclient`(1M)].
+
+[[gavpv]][[GSDPG00334]][[to-undeploy-an-application-client]]
+
+==== To Undeploy an Application Client
+
+After application clients are downloaded, they remain on the client
+until they are manually removed. Use the Java Web Start control panel to
+discard downloaded application clients that used Java Web Start.
+
+If you undeploy an application client, you can no longer use Java Web
+Start, or any other mechanism, to download that application client
+because it might be in an inconsistent state. If you try to launch an
+application client that was previously downloaded (even though the
+server side of the application client is no longer present), the results
+are unpredictable unless the application client has been written to
+tolerate such situations.
+
+You can write your application client so that it detects failures in
+contacting server-side components, but continues running. In this case,
+Java Web Start can run an undeployed application client while the client
+is cached locally. For example, your application client can be written
+to detect and then recover from `javax.naming.NamingException` when
+locating a resource, or from `java.rmi.RemoteException` when referring
+to a previously-located resource that becomes inaccessible.
+
+[[beael]][[GSDPG00071]][[lifecycle-module-deployment-guidelines]]
+
+=== Lifecycle Module Deployment Guidelines
+
+A lifecycle module, also called a lifecycle listener module, provides a
+means of running long or short Java-based tasks within the {productName} environment, such as instantiation of singletons or RMI servers.
+Lifecycle modules are automatically initiated at server startup and are
+notified at various phases of the server life cycle. All lifecycle
+module interfaces are in the as-install``/modules/glassfish-api.jar``
+file.
+
+For general information about lifecycle modules, see
+"link:application-development-guide/lifecycle-listeners.html#GSDVG00014[Developing Lifecycle Listeners]" in {productName} Application Development Guide.
+
+You can deploy a lifecycle module using the `create-lifecycle-module`
+subcommand. Do not use `asadmin deploy` or related commands.
+
+You do not need to specify a classpath for the lifecycle module if you
+place it in the domain-dir``/lib`` or domain-dir`/lib/classes` directory
+for the Domain Administration Server (DAS). Do not place it in the `lib`
+directory for a particular server instance, or it will be deleted when
+that instance synchronizes with the {productName}.
+
+After you deploy a lifecycle module, you must restart the server. During
+server initialization, the server instantiates the module and registers
+it as a lifecycle event listener.
+
+
+[NOTE]
+====
+If the `--failurefatal` option of `create-lifecycle-module` is set to
+`true` (the default is `false`), lifecycle module failure prevents
+server initialization or startup, but not shutdown or termination.
+====
+
+
+[[gbiye]][[GSDPG00072]][[web-service-deployment-guidelines]]
+
+=== Web Service Deployment Guidelines
+
+
+[NOTE]
+====
+If you installed the Web Profile, web services are not supported unless
+the optional Metro Web Services Stack add-on component is downloaded.
+Without the Metro add-on component, a servlet or EJB component cannot be
+a web service endpoint, and the `glassfish-web.xml` and
+`glassfish-ejb-jar.xml` elements related to web services are ignored.
+====
+
+
+The following guidelines apply when deploying a web service in {productName}:
+
+* Web Service Endpoint. Deploy a web service endpoint to {productName} as you would any servlet or stateless session bean. If the
+deployed application or module has a web service endpoint, the endpoint
+is detected automatically during deployment. The {productName}
+-specific deployment descriptor files, `glassfish-web.xml` and
+`glassfish-ejb-jar.xml`, provide optional web service enhancements in
+their link:dd-elements.html#beayv[`webservice-endpoint`] and
+link:dd-elements.html#beayt[`webservice-description`] elements.
+* Web Service Management. Web service management is fully supported in
+the Administration Console. After the application or module is deployed,
+click the Web Service component. The table in the right frame lists
+deployed web service endpoints.
+
+For more information about web services, see
+"link:application-development-guide/webservices.html#GSDVG00007[Developing Web Services]" in {productName} Application Development Guide.
+
+[[gkkmb]][[GSDPG00073]][[osgi-bundle-deployment-guidelines]]
+
+=== OSGi Bundle Deployment Guidelines
+
+To deploy an OSGi bundle using the Administration Console, select Other
+from the Type drop-down list and check the OSGI Type checkbox.
+
+To deploy an OSGi bundle using the `asadmin deploy` command, set the
+`--type` option to the value `osgi`. For example:
+
+[source]
+----
+asadmin> deploy --type=osgi MyBundle.jar
+----
+
+To automatically deploy an OSGi bundle, copy the bundle archive to the
+domain-dir`/autodeploy/bundles` directory.
+
+
+[NOTE]
+====
+For components packaged as OSGi bundles (`--type=osgi`), the `deploy`
+subcommand accepts properties arguments to wrap a WAR file as a WAB (Web
+Application Bundle) at the time of deployment. The subcommand looks for
+a key named `UriScheme` and, if present, uses the key as a URL stream
+handler to decorate the input stream. Other properties are used in the
+decoration process. For example, the {productName} OSGi web container
+registers a URL stream handler named `webbundle`, which is used to wrap
+a plain WAR file as a WAB.
+====
+
+
+[[gkoif]][[GSDPG00074]][[transparent-jdbc-connection-pool-reconfiguration]]
+
+=== Transparent JDBC Connection Pool Reconfiguration
+
+In this {productName} release, reconfiguration of a JDBC connection
+pool due to attribute or property changes can be transparent to the
+applications or modules that use the pool, even if pool reconfiguration
+results in pool recreation. You do not need to redeploy the application
+or module.
+
+To enable transparent pool reconfiguration, set the
+`dynamic-reconfiguration-wait-timeout-in-seconds` property. This
+property specifies the timeout for dynamic reconfiguration of the pool.
+In-progress connection requests must complete before this timeout
+expires or they must be retried. New connection requests wait for this
+timeout to expire before acquiring connections to the reconfigured pool.
+If this property exists and has a positive value, it is enabled.
+
+You can set this property in the `glassfish-resources.xml` file. For
+more information, see the property descriptions under
+link:dd-elements.html#giyil[`jdbc-connection-pool`].
+
+For JDBC connection pools that are not application-scoped, use the `set`
+subcommand to set this property. For example, to configure `mypool` on
+`myserver`, type the following all on one line:
+
+[source]
+----
+asadmin> set myserver.resources.jdbc-connection-pool.mypool.property.
+dynamic-reconfiguration-wait-timeout-in-seconds=30
+----
+
+[[giydj]][[GSDPG00075]][[application-scoped-resources]]
+
+=== Application-Scoped Resources
+
+You can define an application-scoped JDBC resource or other resource for
+an enterprise application, web module, EJB module, connector module, or
+application client module. This allows single-step deployment for
+resource-dependent modules and applications. An application-scoped
+resource has the following characteristics:
+
+* It is available only to the module or application that defines it.
+* It cannot be referenced or looked up by other modules or applications.
+* It is created during deployment, destroyed during undeployment, and
+recreated during redeployment.
+* It is free from unexpected resource starvation or delay in acquiring
+connections because no other application or module competes for accesses
+to it.
+
+The following resource types can be application-scoped:
+
+* JDBC connection pools
+* JDBC resources
+* Connector connection pools
+* Connector resources
+* Resource adapters
+* External JNDI resources
+* Custom resources
+* Admin object resources
+* JavaMail resources
+
+Deployment Descriptor. An application-scoped resource is defined in the
+`glassfish-resources.xml` deployment descriptor file. This file is
+placed in the `META-INF` directory of the module or application archive.
+For web applications or modules, this file is placed in the `WEB-INF`
+directory. If any submodule archives of an enterprise application
+archive have their own `glassfish-resources.xml` files, the resource
+definitions are scoped to those modules only. For more information about
+the `glassfish-resources.xml` file, see
+link:dd-files.html#giida[{productName} Deployment Descriptor Files]
+and link:dd-elements.html#beaqi[Elements of the {productName}
+Deployment Descriptors].
+
+Naming. Application-scoped resource JNDI names begin with `java:app` or
+`java:module`. If one of these prefixes is not specified in the JNDI
+name, it is added. For example, application-scoped databases have JNDI
+names in the following format: `java:app/jdbc/`DataSourceName or
+`java:module/jdbc/`DataSourceName. This is in accordance with the naming
+scopes introduced in the Jakarta EE 6 Specification.
+
+Errors. Application-scoped resource definitions with same resource name,
+resource type, attributes, and properties are duplicates. These generate
+`WARNING` level log messages and deployment continues. Definitions with
+the same resource name and type but different attributes or properties
+are conflicts and cause deployment failure. When an application or
+module tries to look up a scoped resource that does not belong to it, a
+naming exception is thrown.
+
+Redeployment. When an application or module is undeployed, its scoped
+resources are deleted. During redeployment, resources are destroyed and
+recreated based on changes in the `glassfish-resources.xml` file. To
+preserve old resource definitions during redeployment, use the
+`preserveAppScopedResources` property of the `redeploy` (or `deploy`
+`--force=true`) subcommand. For example:
+
+[source]
+----
+asadmin> redeploy --property preserveAppScopedResources=true MyApp.ear
+
+asadmin> deploy --force=true --property preserveAppScopedResources=true MyApp.ear
+----
+
+For more information, see link:reference-manual/redeploy.html#GSRFM00217[`redeploy`(1)] and
+link:reference-manual/deploy.html#GSRFM00114[`deploy`(1)].
+
+Listing. Use the `--resources` option of the `list-applications`
+subcommand to list application-scoped resources. Use the
+`--subcomponents` option in addition to list scoped resources for
+enterprise application modules or for module subcomponents. To list
+scoped resources for subcomponents only, use the `--resources` option of
+the `list-subcomponents` subcommand
+
+For more information, see link:reference-manual/list-applications.html#GSRFM00148[`list-applications`(1)] and
+link:reference-manual/list-sub-components.html#GSRFM00201[`list-sub-components`(1)].
+
+Restrictions. Use of application-scoped resources is subject to the
+following restrictions:
+
+* `resource-adapter-config` and `connector-work-security-map` — These
+can only be specified in the `glassfish-resources.xml` file of the
+corresponding connector module. In an enterprise application, the
+`resource-adapter-config` or `connector-work-security-map` for an
+embedded connector module must be specified in the
+`glassfish-resources.xml` file of the connector module. You cannot
+specify a `resource-adapter-config` or `connector-work-security-map` in
+an application for a connector module that is not part of the
+application.
+* Resource to connection pool cross references — A module-level
+`jdbc-resource` cannot reference an application-level
+`jdbc-connection-pool`. Likewise, a module-level `connector-resource`
+cannot reference an application-level `connector-connection-pool`.
+* Global resources — Defining `java:global` JNDI names is not supported.
+* Cross definitions — Defining `java:app` JNDI names at the module level
+is not supported.
+
+
diff --git a/docs/application-deployment-guide/src/main/jbake/assets/img/dgdeploy3.png b/docs/application-deployment-guide/src/main/asciidoc/img/dgdeploy3.png
similarity index 100%
rename from docs/application-deployment-guide/src/main/jbake/assets/img/dgdeploy3.png
rename to docs/application-deployment-guide/src/main/asciidoc/img/dgdeploy3.png
Binary files differ
diff --git a/docs/application-deployment-guide/src/main/jbake/assets/img/dgdeploya.png b/docs/application-deployment-guide/src/main/asciidoc/img/dgdeploya.png
similarity index 100%
rename from docs/application-deployment-guide/src/main/jbake/assets/img/dgdeploya.png
rename to docs/application-deployment-guide/src/main/asciidoc/img/dgdeploya.png
Binary files differ
diff --git a/docs/application-deployment-guide/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png b/docs/application-deployment-guide/src/main/asciidoc/img/eclipse_foundation_logo_tiny.png
similarity index 100%
rename from docs/application-deployment-guide/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png
rename to docs/application-deployment-guide/src/main/asciidoc/img/eclipse_foundation_logo_tiny.png
Binary files differ
diff --git a/docs/application-deployment-guide/src/main/asciidoc/loe.adoc b/docs/application-deployment-guide/src/main/asciidoc/loe.adoc
new file mode 100644
index 0000000..0b9e6c3
--- /dev/null
+++ b/docs/application-deployment-guide/src/main/asciidoc/loe.adoc
@@ -0,0 +1,63 @@
+type=page
+status=published
+title=List of Examples
+next=lof.html
+prev=toc.html
+~~~~~~
+
+= List of Examples
+
+[[list-of-examples]]
+== List of Examples
+
+* link:deploying-applications.html#gijlo[2-1 Deploying an Enterprise
+Application]
+* link:deploying-applications.html#gilcq[2-2 Deploying a Connector
+Module]
+* link:deploying-applications.html#CHDFHDGD[2-3 Using an Alternate Java
+EE Standard Deployment Descriptor]
+* link:deploying-applications.html#CHDJFAIJ[2-4 Specifying the Deployment
+Order of an Application]
+* link:deploying-applications.html#giumj[2-5 Listing Applications]
+* link:deploying-applications.html#giuot[2-6 Listing Subcomponents]
+* link:deploying-applications.html#giunl[2-7 Showing Status of a Deployed
+Component]
+* link:deploying-applications.html#gijzm[2-8 Retaining HTTP Session State
+During Redeployment]
+* link:deploying-applications.html#gijkr[2-9 Redeploying a Web
+Application That Was Deployed From a Directory]
+* link:deploying-applications.html#gikiw[2-10 Redeploying an Application
+by Using asadmin deploy --force]
+* link:deploying-applications.html#gijkp[2-11 Listing Deployed Web
+Applications]
+* link:deploying-applications.html#gikvy[2-12 Disabling a Web
+Application]
+* link:deploying-applications.html#gijxl[2-13 Enabling an Application]
+* link:deploying-applications.html#gikag[2-14 Listing Deployed
+Applications or Modules]
+* link:deploying-applications.html#gikun[2-15 Undeploying an Application]
+* link:deploying-applications.html#giqrk[2-16 Setting the Autodeployment
+Interval]
+* link:deploying-applications.html#giqtm[2-17 Setting JSP Precompilation]
+* link:deploying-applications.html#gijvy[2-18 Deploying by Using a
+Deployment Plan]
+* link:deploying-applications.html#gijyn[2-19 Deployment Plan Structure
+for an Enterprise Application]
+* link:deploying-applications.html#gijwk[2-20 Deployment Plan Structure
+for an EJB Module]
+* link:deploying-applications.html#gilaz[2-21 Deploying an Application
+From a Directory]
+* link:deploying-applications.html#gjivx[2-22 Setting a Servlet
+Context-Initialization Parameter for a Web Application]
+* link:deploying-applications.html#gjivv[2-23 Unsetting a Servlet
+Context-Initialization Parameter for a Web Application]
+* link:deploying-applications.html#gjixd[2-24 Listing Servlet
+Context-Initialization Parameters for a Web Application]
+* link:deploying-applications.html#gjiwe[2-25 Setting an Environment
+Entry for a Web Application]
+* link:deploying-applications.html#gjivj[2-26 Unsetting an Environment
+Entry for a Web Application]
+* link:deploying-applications.html#gjiws[2-27 Listing Environment Entries
+for a Web Application]
+
+
diff --git a/docs/application-deployment-guide/src/main/asciidoc/lof.adoc b/docs/application-deployment-guide/src/main/asciidoc/lof.adoc
new file mode 100644
index 0000000..7b865b8
--- /dev/null
+++ b/docs/application-deployment-guide/src/main/asciidoc/lof.adoc
@@ -0,0 +1,16 @@
+type=page
+status=published
+title=List of Figures
+next=lot.html
+prev=loe.html
+~~~~~~
+
+= List of Figures
+
+[[list-of-figures]]
+== List of Figures
+
+* link:overview.html#fwfdj[1-1 Module-Based Assembly and Deployment]
+* link:overview.html#fvyip[1-2 Application-Based Assembly and Deployment]
+
+
diff --git a/docs/application-deployment-guide/src/main/asciidoc/lot.adoc b/docs/application-deployment-guide/src/main/asciidoc/lot.adoc
new file mode 100644
index 0000000..b244311
--- /dev/null
+++ b/docs/application-deployment-guide/src/main/asciidoc/lot.adoc
@@ -0,0 +1,197 @@
+type=page
+status=published
+title=List of Tables
+next=title.html
+prev=lof.html
+~~~~~~
+
+= List of Tables
+
+[[list-of-tables]]
+== List of Tables
+
+* link:dd-files.html#giiht[B-1 {productName} Deployment Descriptors
+and DTDs]
+* link:dd-files.html#gkinm[B-2 weblogic.xml Support in {productName}]
+* link:dd-files.html#gkkht[B-3 weblogic-webservices.xml Support in
+{productName}]
+* link:dd-elements.html#fvynw[C-1 activation-config subelements]
+* link:dd-elements.html#fvynv[C-2 activation-config-property subelements]
+* link:dd-elements.html#sthref14[C-3 admin-object-resource Subelements]
+* link:dd-elements.html#sthref17[C-4 admin-object-resource Attributes]
+* link:dd-elements.html#fvyov[C-5 as-context Subelements]
+* link:dd-elements.html#fvyol[C-6 auth-realm subelement]
+* link:dd-elements.html#fvypa[C-7 auth-realm attributes]
+* link:dd-elements.html#sthref26[C-8 backend-principal Attributes]
+* link:dd-elements.html#fvypb[C-9 bean-cache Subelements]
+* link:dd-elements.html#fvypg[C-10 bean-pool Subelements]
+* link:dd-elements.html#fvyrd[C-11 cache Subelements]
+* link:dd-elements.html#fvyrt[C-12 cache Attributes]
+* link:dd-elements.html#fvyqr[C-13 cache Properties]
+* link:dd-elements.html#fvyph[C-14 cacheClassName Values]
+* link:dd-elements.html#fvyql[C-15 cache-helper Subelements]
+* link:dd-elements.html#fvyrp[C-16 cache-helper Attributes]
+* link:dd-elements.html#fvypt[C-17 cache-mapping Subelements]
+* link:dd-elements.html#fvyrw[C-18 call-property subelements]
+* link:dd-elements.html#fvypo[C-19 cert-db attributes]
+* link:dd-elements.html#fvyrq[C-20 check-version-of-accessed-instances
+Subelements]
+* link:dd-elements.html#fvyqx[C-21 checkpoint-at-end-of-method
+Subelements]
+* link:dd-elements.html#fvyqg[C-22 class-loader Subelements]
+* link:dd-elements.html#fvyrs[C-23 class-loader Attributes]
+* link:dd-elements.html#gcfjs[C-24 class-loader Properties]
+* link:dd-elements.html#fvypm[C-25 client-container Subelements]
+* link:dd-elements.html#fvyqb[C-26 client-container Attributes]
+* link:dd-elements.html#fvyqm[C-27 client-container Properties]
+* link:dd-elements.html#fvyro[C-28 client-credential subelement]
+* link:dd-elements.html#fvypi[C-29 client-credential attributes]
+* link:dd-elements.html#fvypw[C-30 cmp Subelements]
+* link:dd-elements.html#fvyqh[C-31 cmp-field-mapping Subelements]
+* link:dd-elements.html#fvyps[C-32 cmp-resource Subelements]
+* link:dd-elements.html#fvypn[C-33 cmr-field-mapping Subelements]
+* link:dd-elements.html#fvysh[C-34 column-pair Subelements]
+* link:dd-elements.html#sthref56[C-35 connector-connection-pool
+Subelements]
+* link:dd-elements.html#sthref59[C-36 connector-connection-pool
+Attributes]
+* link:dd-elements.html#sthref62[C-37 connector-connection-pool
+Properties]
+* link:dd-elements.html#sthref66[C-38 connector-resource Subelements]
+* link:dd-elements.html#sthref69[C-39 connector-resource Attributes]
+* link:dd-elements.html#fvysn[C-40 consistency Subelements]
+* link:dd-elements.html#fvysp[C-41 constraint-field Subelements]
+* link:dd-elements.html#fvysr[C-42 constraint-field Attributes]
+* link:dd-elements.html#fvysv[C-43 constraint-field-value Attributes]
+* link:dd-elements.html#fvytb[C-44 cookie-properties Subelements]
+* link:dd-elements.html#fvyte[C-45 cookie-properties Properties]
+* link:dd-elements.html#sthref79[C-46 custom-resource Subelements]
+* link:dd-elements.html#sthref82[C-47 custom-resource Attributes]
+* link:dd-elements.html#fvytm[C-48 default-helper Subelements]
+* link:dd-elements.html#fvyto[C-49 default-helper Properties]
+* link:dd-elements.html#fvytr[C-50 default-resource-principal
+Subelements]
+* link:dd-elements.html#fvyuc[C-51 ejb Subelements]
+* link:dd-elements.html#fvyud[C-52 ejb Attributes]
+* link:dd-elements.html#fvyui[C-53 ejb-ref Subelements]
+* link:dd-elements.html#fvyut[C-54 enterprise-beans Subelements]
+* link:dd-elements.html#fvyuz[C-55 entity-mapping Subelements]
+* link:dd-elements.html#sthref94[C-56 external-jndi-resource Subelements]
+* link:dd-elements.html#sthref97[C-57 external-jndi-resource Attributes]
+* link:dd-elements.html#fvzcz[C-58 fetched-with Subelements]
+* link:dd-elements.html#fvyzu[C-59 finder Subelements]
+* link:dd-elements.html#fvzba[C-60 flush-at-end-of-method Subelements]
+* link:dd-elements.html#fvzdo[C-61 gen-classes Subelements]
+* link:dd-elements.html#fvzhl[C-62 glassfish-application Subelements]
+* link:dd-elements.html#fvzjh[C-63 glassfish-application-client
+subelements]
+* link:dd-elements.html#fvzfu[C-64 glassfish-ejb-jar Subelements]
+* link:dd-elements.html#fvzgf[C-65 glassfish-web-app Subelements]
+* link:dd-elements.html#fvzjf[C-66 glassfish-web-app Attributes]
+* link:dd-elements.html#fvzim[C-67 glassfish-web-app Properties]
+* link:dd-elements.html#sthref111[C-68 group-map Attributes]
+* link:dd-elements.html#fvzca[C-69 idempotent-url-pattern Attributes]
+* link:dd-elements.html#fvyyk[C-70 ior-security-config Subelements]
+* link:dd-elements.html#fvzdu[C-71 java-method Subelements]
+* link:dd-elements.html#gauaw[C-72 java-web-start-access subelements]
+* link:dd-elements.html#sthref119[C-73 jdbc-connection-pool Subelements]
+* link:dd-elements.html#sthref122[C-74 jdbc-connection-pool Attributes]
+* link:dd-elements.html#sthref125[C-75 jdbc-connection-pool Database
+Properties]
+* link:dd-elements.html#sthref128[C-76 jdbc-connection-pool Database
+Properties]
+* link:dd-elements.html#sthref132[C-77 jdbc-resource Subelements]
+* link:dd-elements.html#sthref135[C-78 jdbc-resource Attributes]
+* link:dd-elements.html#fvyzp[C-79 jsp-config Subelements]
+* link:dd-elements.html#fvzde[C-80 jsp-config Properties]
+* link:dd-elements.html#fvyyi[C-81 key-field Attributes]
+* link:dd-elements.html#fvyzd[C-82 locale-charset-info Subelements]
+* link:dd-elements.html#fvzcd[C-83 locale-charset-info Attributes]
+* link:dd-elements.html#fvyvl[C-84 locale-charset-map Subelements]
+* link:dd-elements.html#fvzbk[C-85 locale-charset-map Attributes]
+* link:dd-elements.html#fvzbb[C-86 Example agent Attribute Values]
+* link:dd-elements.html#fvzdx[C-87 log-service subelement]
+* link:dd-elements.html#fvzbn[C-88 log-service attributes]
+* link:dd-elements.html#fvzap[C-89 login-config subelements]
+* link:dd-elements.html#sthref150[C-90 mail-resource Subelements]
+* link:dd-elements.html#sthref153[C-91 mail-resource Attributes]
+* link:dd-elements.html#fvyvh[C-92 manager-properties Subelements]
+* link:dd-elements.html#fvywk[C-93 manager-properties Properties]
+* link:dd-elements.html#fvyxi[C-94 mdb-connection-factory Subelements]
+* link:dd-elements.html#fvyzh[C-95 mdb-resource-adapter subelements]
+* link:dd-elements.html#fvyyd[C-96 message Subelements]
+* link:dd-elements.html#fvyzy[C-97 message-destination subelements]
+* link:dd-elements.html#gauar[C-98 message-destination-ref subelements]
+* link:dd-elements.html#fvywy[C-99 message-security Subelements]
+* link:dd-elements.html#fvzcx[C-100 message-security-binding Subelements]
+* link:dd-elements.html#fvzda[C-101 message-security-binding Attributes]
+* link:dd-elements.html#fvyym[C-102 message-security-config Subelements]
+* link:dd-elements.html#fvzam[C-103 message-security-config Attributes]
+* link:dd-elements.html#fvzch[C-104 method Subelements]
+* link:dd-elements.html#fvyzq[C-105 method-params Subelements]
+* link:dd-elements.html#fvyxu[C-106 one-one-finders Subelements]
+* link:dd-elements.html#fvywn[C-107 parameter-encoding Attributes]
+* link:dd-elements.html#fvzbr[C-108 port-info subelements]
+* link:dd-elements.html#fvyyn[C-109 prefetch-disabled Subelements]
+* link:dd-elements.html#fvzaq[C-110 principal Subelements]
+* link:dd-elements.html#sthref177[C-111 principal-map Attributes]
+* link:dd-elements.html#gatyf[C-112 principal-name Attributes]
+* link:dd-elements.html#fvzcb[C-113 property Subelements]
+* link:dd-elements.html#fvzdi[C-114 property Attributes]
+* link:dd-elements.html#fvzcc[C-115 property subelements]
+* link:dd-elements.html#fvyyq[C-116 provider-config Subelements]
+* link:dd-elements.html#fvyvz[C-117 provider-config Attributes]
+* link:dd-elements.html#fvywl[C-118 query-method Subelements]
+* link:dd-elements.html#fvzbz[C-119 refresh-field Attributes]
+* link:dd-elements.html#fvzdy[C-120 request-policy Attributes]
+* link:dd-elements.html#fvzbu[C-121 request-protection Attributes]
+* link:dd-elements.html#sthref191[C-122 resource-adapter-config
+Subelements]
+* link:dd-elements.html#sthref194[C-123 resource-adapter-config
+Attributes]
+* link:dd-elements.html#fvyye[C-124 resource-env-ref Subelements]
+* link:dd-elements.html#fvzbd[C-125 resource-ref Subelements]
+* link:dd-elements.html#sthref201[C-126 resources Subelements]
+* link:dd-elements.html#fvyyr[C-127 response-policy Attributes]
+* link:dd-elements.html#fvzej[C-128 response-protection Attributes]
+* link:dd-elements.html#fvzey[C-129 sas-context Subelements]
+* link:dd-elements.html#fvzex[C-130 schema-generator-properties
+Subelements]
+* link:dd-elements.html#fvzev[C-131 schema-generator-properties
+Properties]
+* link:dd-elements.html#fvymm[C-132 schema-generator-properties Column
+Attributes]
+* link:dd-elements.html#fvzet[C-133 secondary table Subelements]
+* link:dd-elements.html#fvzfe[C-134 security Subelements]
+* link:dd-elements.html#sthref213[C-135 security-map Subelements]
+* link:dd-elements.html#sthref216[C-136 security-map Attributes]
+* link:dd-elements.html#fvzfj[C-137 security-role-mapping Subelements]
+* link:dd-elements.html#fvzfi[C-138 service-qname subelements]
+* link:dd-elements.html#fvzgc[C-139 service-ref subelements]
+* link:dd-elements.html#fvzhy[C-140 servlet Subelements]
+* link:dd-elements.html#fvzib[C-141 session-config Subelements]
+* link:dd-elements.html#fvzgo[C-142 session-manager Subelements]
+* link:dd-elements.html#fvzje[C-143 session-manager Attributes]
+* link:dd-elements.html#fvzgv[C-144 session-properties Subelements]
+* link:dd-elements.html#fvzii[C-145 session-properties Properties]
+* link:dd-elements.html#fvzgb[C-146 ssl attributes]
+* link:dd-elements.html#fvzif[C-147 store-properties Subelements]
+* link:dd-elements.html#fvzgr[C-148 store-properties Properties]
+* link:dd-elements.html#fvziz[C-149 stub-property subelements]
+* link:dd-elements.html#gawou[C-150 stub-property properties]
+* link:dd-elements.html#fvzhm[C-151 sun-cmp-mapping Subelements]
+* link:dd-elements.html#fvzin[C-152 sun-cmp-mappings Subelements]
+* link:dd-elements.html#fvzhg[C-153 target-server subelements]
+* link:dd-elements.html#fvzgg[C-154 target-server attributes]
+* link:dd-elements.html#fvzih[C-155 timeout Attributes]
+* link:dd-elements.html#fvziu[C-156 transport-config Subelements]
+* link:dd-elements.html#giktu[C-157 valve Subelements]
+* link:dd-elements.html#gikqw[C-158 valve Attributes]
+* link:dd-elements.html#fvzfz[C-159 web Subelements]
+* link:dd-elements.html#fvzjb[C-160 webservice-description subelements]
+* link:dd-elements.html#fvzjs[C-161 webservice-endpoint subelements]
+* link:dd-elements.html#sthref248[C-162 work-security-map Subelements]
+* link:dd-elements.html#sthref251[C-163 work-security-map Attributes]
+* link:dd-elements.html#fvzju[C-164 wsdl-port subelements]
+
+
diff --git a/docs/application-deployment-guide/src/main/asciidoc/overview.adoc b/docs/application-deployment-guide/src/main/asciidoc/overview.adoc
new file mode 100644
index 0000000..0efb429
--- /dev/null
+++ b/docs/application-deployment-guide/src/main/asciidoc/overview.adoc
@@ -0,0 +1,764 @@
+type=page
+status=published
+title=Overview of {productName} 7 Application Deployment
+next=deploying-applications.html
+prev=preface.html
+~~~~~~
+
+= Overview of {productName} 7 Application Deployment
+
+[[GSDPG00003]][[gihxo]]
+
+
+[[overview-of-glassfish-server-open-source-edition-5.0-application-deployment]]
+== 1 Overview of {productName} 7 Application Deployment
+
+{productName} 7 provides an environment for
+developing and deploying Java applications and web services. {productName} applications include Java Platform, Enterprise Edition (Jakarta EE
+platform) standard features as well as features specific to {productName}. This guide explains the tools and processes used for deploying
+applications and modules in the {productName} environment. Only
+{productName} features are described in detail in this document.
+
+The following topics are addressed here:
+
+* link:#gihzx[About Application Deployment]
+* link:#giphm[About Assembly and Deployment Events]
+* link:#giifh[About Deployment Tools]
+* link:#gipud[Additional Information on Application Deployment]
+
+Information and instructions on deploying from the command line are
+provided in this document. Information and instructions for
+accomplishing the deployment tasks by using the Administration Console
+are contained in the Administration Console online help.
+
+[[gihzx]][[GSDPG00061]][[about-application-deployment]]
+
+=== About Application Deployment
+
+Assembly, also known as packaging, is the process of combining discrete
+components of an application or module into a single unit that can be
+installed on an application server. The {productName} assembly
+process conforms to the customary Jakarta EE specifications. The only
+difference is that when you assemble applications or modules in
+{productName}, you can include optional {productName} deployment
+descriptors that enhance functionality.
+
+Deployment is the process of installing an application or module on
+{productName}, optionally specifying location-specific information,
+such as a list of local users that can access the application, or the
+name of the local database. {productName} deployment tools expand the
+archive file into an open directory structure that is ready for users.
+{productName} deployment tools are described in link:#giifh[About
+Deployment Tools].
+
+The following topics are addressed here:
+
+* link:#giptw[General Deployment Functionality]
+* link:#gihzc[Deployment Descriptors and Annotations]
+* link:#gikhs[Modules and Applications]
+* link:#gijla[Access to Shared Framework Classes]
+* link:#gihzk[Naming Standards]
+* link:#gkhhv[Module and Application Versions]
+
+[[giptw]][[GSDPG00319]][[general-deployment-functionality]]
+
+==== General Deployment Functionality
+
+Various Jakarta EE module types, such as connector module, web module, EJB
+module, application client module, can be deployed in the following
+ways:
+
+* Archive Deployment. Deploys the application as an archive file. For
+instructions, see link:deploying-applications.html#gijmq[To Deploy an
+Application or Module].
+* Dynamic Reloading. Redeploys the application by creating or modifying
+a special `.reload` file in the applications repository. For
+instructions, see link:deploying-applications.html#fwakh[To Reload
+Changes to Applications or Modules Dynamically].
+* Automatic Deployment. Deploys the application archive that is placed
+in the autodeployment directory. For instructions, see
+link:deploying-applications.html#fvxze[To Deploy an Application or Module
+Automatically].
+* Directory Deployment. Deploys the application in a directory format.
+For instructions, see link:deploying-applications.html#gilcn[To Deploy an
+Application or Module in a Directory Format].
+* JSR 88 Deployment. A deployment mechanism implemented based on the JSR
+88 standard from `jcp.org`. It delivers vendor neutral deployment
+options. See link:#beaee[JSR 88 Client] and link:#giiel[JSR 88 Naming].
+
+A deployment plan, which deploys a portable archive along with a
+deployment plan containing {productName} deployment descriptors, can
+apply to any of these deployment techniques. For instructions, see
+link:deploying-applications.html#gijyb[To Deploy an Application or Module
+by Using a Deployment Plan].
+
+There are two work situations that require different safeguards and
+processes:
+
+* A development environment provides a loose set of tools and work
+spaces for a relatively small number of developers who are creating and
+testing applications and modules.
+* A production environment provides a stable, protected environment
+where applications are tuned to maximum efficiency for business use
+rather than for development.
+
+Some deployment methods that are used effectively in a development
+environment should not be used in production. In addition, whenever a
+reload is done, the sessions that are in transit become invalid, which
+might not be a concern for development, but can be a serious matter in
+production. The client must restart the session, another negative in a
+production environment.
+
+For production environments, any upgrade should be performed as a
+rolling upgrade, which upgrades applications and modules without
+interruption in service. For more information, see
+link:ha-administration-guide/rolling-upgrade.html#GSHAG00010[Upgrading Applications Without Loss of Availability] in
+{productName} High Availability Administration
+Guide.
+
+[[gihzc]][[GSDPG00320]][[deployment-descriptors-and-annotations]]
+
+==== Deployment Descriptors and Annotations
+
+A deployment descriptor is an XML file that describes how a Jakarta EE
+application or module should be deployed. Each deployment descriptor XML
+file has a corresponding Document Type Definition (DTD) file or schema
+(XSD) file, which defines the elements, data, and attributes that the
+deployment descriptor file can contain. The deployment descriptor
+directs a deployment tool to deploy a module or application with
+specific container options, and also describes specific configuration
+requirements that you must resolve.
+
+Because the information in a deployment descriptor is declarative, it
+can be changed without requiring modifications to source code. During
+deployment, {productName} reads the information in the deployment
+descriptor and deploys the application or module as directed.
+
+The following types of deployment descriptors are associated with
+{productName}:
+
+* Jakarta EE Standard Descriptors.
+Jakarta EE standard deployment descriptors are described
+in the Jakarta EE specification. You can find the
+specification at `https://jakarta.ee/specifications/`.
+Information about the XML schemas that define Jakarta EE standard
+deployment descriptors is available at
+`https://jakarta.ee/xml/ns/jakartaee/`.
++
+The Jakarta EE specification permits the use of alternate top-level
+standard deployment descriptors that reside outside of the application
+archive using the `alt-dd` mechanism (alternate module-level deployment
+descriptors were permitted prior to Jakarta EE 7). Alternate deployment
+descriptors are described in the Jakarta EE 7 specification. You can find
+the specification at
+`http://www.oracle.com/technetwork/java/javaee/tech/`. Alternate
+deployment descriptors override the top-level deployment descriptors
+packaged in an application archive. For example, for EAR files, an
+alternate deployment descriptor overrides `application.xml`. For
+standalone modules, an alternate deployment descriptor overrides the
+top-level module descriptor, such as `web.xml`.
+* {productName} Descriptors. {productName} provides optional
+deployment descriptors for configuring features that are specific to
+{productName}. For example, when you assemble an EJB module, you
+annotate or create two {productName} deployment descriptor files with
+these names: `ejb-jar.xml` and `glassfish-ejb-jar.xml`. If the EJB
+component is an entity bean with container-managed persistence (CMP),
+you can also create a `.dbschema` file and a `sun-cmp-mapping.xml` file.
+For complete descriptions of these files and their elements, see
+link:dd-files.html#giida[{productName} Deployment Descriptor Files]
+and link:dd-elements.html#beaqi[Elements of the {productName}
+Deployment Descriptors].
++
+{productName} also permits the use of alternate top-level {productName} runtime deployment descriptors that reside outside of an
+application archive. Alternate {productName} deployment descriptors
+override the top-level deployment descriptors packaged in the archive.
+For example, for EAR files, an alternate {productName} deployment
+descriptor overrides `glassfish-application.xml`. For standalone
+modules, an alternate {productName} deployment descriptor overrides
+the top-level module descriptor, such as `glassfish-web.xml`. The name
+of the {productName} alternate deployment descriptor file must begin
+with `glassfish-`. Alternate deployment descriptors do not apply to
+`sun-*.xml` deployment descriptors.
++
+Unless otherwise stated, settings in the {productName} deployment
+descriptors override corresponding settings in the Jakarta EE standard
+descriptors and in the {productName} configuration.
+
+An annotation, also called metadata, enables a declarative style of
+programming. You can specify information within a class file by using
+annotations. When the application or module is deployed, the information
+can either be used or overridden by the deployment descriptor. {productName} supports annotation according to the following specifications:
+
+* http://www.jcp.org/en/jsr/detail?id=250[JSR 250 Common Annotation
+Specification]
+* http://www.jcp.org/en/jsr/detail?id=181[JSR 181 Annotation for Web
+Services Specification]
+* http://www.jcp.org/en/jsr/detail?id=318[EJB 3.1 Specification]
+
+The following annotation and deployment descriptor combinations are
+supported:
+
+* Jakarta EE applications or modules can be packaged with full Jakarta EE
+compliant standard and runtime deployment descriptors. If the standard
+deployment descriptors have specified the `metadata-complete` attribute,
+annotations in the application or module are ignored.
+* Jakarta EE applications or modules can be fully annotated with metadata
+defined by the listed specifications. Annotation eliminates the need for
+Jakarta EE standard deployment descriptors. In most cases, the {productName} deployment descriptors are also not needed.
+* Jakarta EE applications or modules can be partially annotated with some
+deployment information in standard deployment descriptors. In case of
+conflicts, deployment descriptor values supersede the annotated
+metadata, and a warning message is logged.
+
+[[gikhs]][[GSDPG00321]][[modules-and-applications]]
+
+==== Modules and Applications
+
+An application is a logical collection of one or more modules joined by
+application annotations or deployment descriptors. You assemble
+components into JAR, WAR, or RAR files, then combine these files and,
+optionally, deployment descriptors into an Enterprise archive (EAR) file
+which is deployed.
+
+A module is a collection of one or more Jakarta EE components that run in
+the same container type, such as a web container or EJB container. The
+module uses annotations or deployment descriptors of that container
+type. You can deploy a module alone or as part of an application.
+
+The following topics are addressed here:
+
+* link:#beacv[Types of Modules]
+* link:#beacu[Module-Based Deployment]
+* link:#beacw[Application-Based Deployment]
+
+[[beacv]][[GSDPG00307]][[types-of-modules]]
+
+===== Types of Modules
+
+{productName} supports the following types of modules:
+
+* Web Module. A web module, also known as a web application, is a
+collection of servlets, EJBs, HTML pages, classes, and other resources
+that you can bundle and deploy to several Jakarta EE application servers. A
+web application archive (WAR) file is the standard format for assembling
+web applications. A WAR file can consist of the following items:
+servlets, JavaServer Pages (JSP) files, JSP tag libraries, utility
+classes, static pages, client-side applets, beans, bean classes,
+enterprise bean classes, plus annotations or web deployment descriptors
+(`web.xml` and `glassfish-web.xml`).
+* EJB Module. An EJB module is a deployable software unit that consists
+of one or more enterprise beans, plus an EJB deployment descriptor. A
+Java archive (JAR) file is the standard format for assembling enterprise
+beans. An EJB JAR file contains the bean classes (home, remote, local,
+and implementation), all of the utility classes, and annotations or
+deployment descriptors (`ejb-jar.xml` and `glassfish-ejb-jar.xml`). If
+the EJB component is a version 2.1 or earlier entity bean with container
+managed persistence (CMP), you can also include a `.dbschema` file and a
+CMP mapping descriptor (`sun-cmp-mapping.xml`).
+* Connector Module. A connector module, also known as a resource adapter
+module, is a deployable software unit that provides a portable way for
+EJB components to access foreign enterprise information system (EIS)
+data. A connector module consists of all Java interfaces, classes, and
+native libraries for implementing a resource module, plus a resource
+deployment descriptor. A resource adapter archive (RAR) is the standard
+format for assembling connector modules. Each {productName} connector
+has annotations or a deployment descriptor file (`ra.xml`).
++
+After deploying a J2EE connector module, you must configure it as
+described in link:application-development-guide/connectors.html#GSDVG00013[Developing Connectors] in {productName} Application Development Guide.
+* Application Client Module. An application client module is a
+deployable software unit that consists of one or more classes, and
+application client deployment descriptors (`application-client.xml` and
+`glassfish-application-client.xml`). An application client JAR file
+applies to a {productName} type of Jakarta EE client. An application
+client supports the standard Jakarta EE Application Client specifications.
+* Lifecycle Module. A lifecycle module provides a means of running
+short-duration or long-duration Java-based tasks within the {productName} environment. Lifecycle modules are not Jakarta EE standard modules.
+See link:application-development-guide/lifecycle-listeners.html#GSDVG00014[Developing Lifecycle Listeners] in {productName} Application Development Guide for more information.
+
+[[beacu]][[GSDPG00308]][[module-based-deployment]]
+
+===== Module-Based Deployment
+
+You can deploy web, EJB, and application client modules separately,
+outside of any application. Module-based deployment is appropriate when
+components need to be accessed by other modules, applications, or
+application clients. Module-based deployment allows shared access to a
+bean from a web, EJB, or application client component.
+
+The following figure shows separately-deployed EJB, web, and application
+client modules.
+
+[[GSDPG00001]][[fwfdj]]
+
+
+.*Figure 1-1 Module-Based Assembly and Deployment*
+image:img/dgdeploy3.png[
+"Figure shows EJB, web, and application client module assembly and
+deployment."]
+
+
+[[beacw]][[GSDPG00309]][[application-based-deployment]]
+
+===== Application-Based Deployment
+
+Application-based deployment is appropriate when components need to work
+together as one unit.
+
+The following figure shows EJB, web, application client, and connector
+modules assembled into a Jakarta EE application.
+
+[[GSDPG00002]][[fvyip]]
+
+
+.*Figure 1-2 Application-Based Assembly and Deployment*
+image:img/dgdeploya.png[
+"Figure shows Jakarta EE application assembly and deployment."]
+
+
+[[gijla]][[GSDPG00322]][[access-to-shared-framework-classes]]
+
+==== Access to Shared Framework Classes
+
+If you assemble a large, shared library into every module that uses it,
+the result is a huge file that takes too long to register with the
+server. In addition, several versions of the same class could exist in
+different class loaders, which is a waste of resources. When Jakarta EE
+applications and modules use shared framework classes (such as utility
+classes and libraries), the classes can be put in the path for the
+common class loader or an application-specific class loader rather than
+in an application or module.
+
+To specify an application-specific library file during deployment, use
+the `--libraries` option of the `deploy` or `redeploy` subcommand of the
+`asadmin` command. To add a library JAR file to the Common class loader
+directory, the Java optional package directory, or the
+application-specific class loader directory, use the `add-library`
+subcommand. You can then list the libraries with `list-libraries` and
+remove the libraries with `remove-library`. For more information about
+all these commands, see the {productName}
+Reference Manual.
+
+For more information about class loaders, see link:application-development-guide/class-loaders.html#GSDVG00003[Class
+Loaders] in {productName} Application Development
+Guide.
+
+
+[NOTE]
+====
+According to the Jakarta EE specification, section 8.1.1.2, "Dependencies,"
+you cannot package utility classes within an individually-deployed EJB
+module. Instead, you must package the EJB module and utility JAR within
+an application using the JAR Extension Mechanism Architecture.
+====
+
+
+[[gihzk]][[GSDPG00323]][[naming-standards]]
+
+==== Naming Standards
+
+Names of applications and individually-deployed modules must be unique
+within a {productName} domain. Modules within an application must
+have unique names. In addition, for enterprise beans that use
+container-managed persistence (CMP), the `.dbschema` file names must be
+unique within an application.
+
+You should use a hierarchical naming scheme for module file names, EAR
+file names, module names as found in the `module-name` portion of the
+`ejb-jar.xml` files, and EJB names as found in the `ejb-name` portion of
+the `ejb-jar.xml` files. This hierarchical naming scheme ensures that
+name collisions do not occur. The benefits of this naming practice apply
+not only to {productName}, but to other Jakarta EE application servers
+as well.
+
+The following topics are addressed here:
+
+* link:#gjjfg[Portable Naming]
+* link:#giidg[JNDI Naming]
+* link:#beada[Directory Structure]
+* link:#giiel[JSR 88 Naming]
+
+[[gjjfg]][[GSDPG00310]][[portable-naming]]
+
+===== Portable Naming
+
+Starting in Jakarta EE 6, the Jakarta EE specification defines the portable
+`application-name`, which allows you to specify an application name in
+the `application.xml` file. For example:
+
+[source,xml]
+----
+<application-name>xyz</application-name>
+----
+
+The Jakarta EE specification also defines the portable `module-name`
+element in the module standard deployment descriptors.
+
+{productName} determines the application registration name according
+to the following order of precedence:
+
+1. The name specified at deployment time in the Administration Console
+or in the `--name` option of the `asadmin deploy` command is used.
+2. If no name is specified at deployment time, the portable
+`application-name` or `module-name` in the Jakarta EE deployment descriptor
+is used.
+3. If no name is specified at deployment time or in the deployment
+descriptors, the archive name, minus the file type suffix, is used.
+
+[[giidg]][[GSDPG00311]][[jndi-naming]]
+
+===== JNDI Naming
+
+Java Naming and Directory Interface (JNDI) lookup names for EJB
+components must also be unique. Establishing a consistent naming
+convention can help. For example, appending the application name and the
+module name to the EJB name is a way to guarantee unique names, such as,
+`jms/qConnPool`.
+
+[[beada]][[GSDPG00312]][[directory-structure]]
+
+===== Directory Structure
+
+Application and module directory structures must follow the structure
+outlined in the Jakarta EE specification. During deployment, the
+application or module is expanded from the archive file to an open
+directory structure. The directories that hold the individual modules
+are named with `_jar`, `_rar`, and `_war` suffixes.
+
+If you deploy a directory instead of an EAR file, your directory
+structure must follow this same convention. For instructions on
+performing directory deployment, see
+link:deploying-applications.html#gilcn[To Deploy an Application or Module
+in a Directory Format].
+
+
+[[gkhhv]][[GSDPG00324]][[module-and-application-versions]]
+
+==== Module and Application Versions
+
+Application and module versioning allows multiple versions of the same
+application to exist in a {productName} domain, which simplifies
+upgrade and rollback tasks. At most one version of an application or
+module can be enabled on a server any given time. Versioning provides
+extensions to tools for deploying, viewing, and managing multiple
+versions of modules and applications, including the Administration
+Console and deployment-related `asadmin` subcommands. Different versions
+of the same module or application can have the same context root or JNDI
+name. Use of versioning is optional.
+
+The following topics are addressed here:
+
+* link:#gkhmg[Version Identifiers and Expressions]
+* link:#gkhmm[Choosing the Enabled Version]
+* link:#gkhob[Versioning Restrictions and Limitations]
+
+[[gkhmg]][[GSDPG00314]][[version-identifiers-and-expressions]]
+
+===== Version Identifiers and Expressions
+
+The version identifier is a suffix to the module or application name. It
+is separated from the name by a colon (`:`). It must begin with a letter
+or number. It can contain alphanumeric characters plus underscore (`_`),
+dash (`-`), and period (`.`) characters. The following examples show
+valid version identifiers for the `foo` application:
+
+[source]
+----
+foo:1
+foo:BETA-2e
+foo:3.8
+foo:patch39875
+----
+
+A module or application without a version identifier is called the
+untagged version. This version can coexist with other versions of the
+same module or application that have version identifiers.
+
+In some deployment-related `asadmin` commands, you can use an asterisk
+(`*`) as a wildcard character to specify a version expression, which
+selects multiple version identifiers. Using the asterisk by itself after
+the colon selects all versions of a module or application, including the
+untagged version. The following table shows example version expressions
+and the versions they select.
+
+[width="100%",cols="33%,67%",options="header",]
+|===
+|Version Expression |Selected Versions
+|`foo:*` |All versions of `foo`, including the untagged version
+|`foo:BETA*` |All `BETA` versions of `foo`
+|`foo:3.*` |All `3.`x versions of `foo`
+|`foo:patch*` |All `patch` versions of `foo`
+|===
+
+
+The following table summarizes which `asadmin` subcommands are
+identifier-aware or expression-aware. All expression-aware subcommands
+are also identifier-aware.
+
+[width="100%",cols="50%,50%",options="header",]
+|===
+|Identifier-Aware Subcommands |Expression-Aware Subcommands
+|`deploy`, `deploydir`, `redeploy` |`undeploy`
+|`enable` |`disable`
+|`list-sub-components` |`show-component-status`
+|`get-client-stubs` |`create-application-ref`, `delete-application-ref`
+|===
+
+
+The `create-application-ref` subcommand is expression-aware only if the
+`--enabled` option is set to `false`. Because the `--enabled` option is
+set to `true` by default, the `create-application-ref` subcommand is
+identifier-aware by default.
+
+The `list-applications` and `list-application-refs` subcommands display
+information about all deployed versions of a module or application. To
+find out which version is enabled, use the `--long` option.
+
+[[gkhmm]][[GSDPG00315]][[choosing-the-enabled-version]]
+
+===== Choosing the Enabled Version
+
+At most one version of a module or application can be enabled on a
+server instance. All other versions are disabled. Enabling one version
+automatically disables all others. You can disable all versions of a
+module or application, leaving none enabled.
+
+The `--enabled` option of the `deploy` and `redeploy` subcommands is set
+to `true` by default. Therefore, simply deploying or redeploying a
+module or application with a new version identifier enables the new
+version and disables all others. To deploy a new version in a disabled
+state, set the `--enabled` option to `false`.
+
+To enable a version that has been deployed previously, use the `enable`
+subcommand.
+
+[[gkhob]][[GSDPG00316]][[versioning-restrictions-and-limitations]]
+
+===== Versioning Restrictions and Limitations
+
+Module and application versioning in {productName} is subject to the
+following restrictions and limitations:
+
+* Use of the `--name` option is mandatory for modules and applications
+that use versioning. There is no automatic version identifier
+generation.
+* {productName} does not recognize any relationship between versions
+such as previous or later versions. All version relationships must be
+tracked manually.
+* There is no limit to the number of versions you can deploy except what
+is imposed by disk space limits.
+* A module or application in a directory should not be deployed twice
+with a different version identifier. To redeploy a module or application
+from a directory with a new version, you must use the `--force` option
+of the `deploy` subcommand.
+* Database tables created or deleted as part of deployment and
+undeployment are global resources and cannot be qualified by an
+application version. Be very careful when using global resources among
+versions of the same application.
+* Web sessions are preserved during redeployment of a new version.
+However, preserving sessions among different versions of the same module
+or application is complex, because the key used for session variables is
+the same for the old and new versions.
+* Resources are created with reference to a resource-adapter's module or
+application name. This means that an older version's resources do not
+automatically refer to a newer version of the module or application.
+Therefore, you must explicitly create resources for a newer version of a
+module or application. {productName} ignores duplicate exported
+global resources and lets deployment succeed.
+* OSGi already has its own versioning system. Therefore, when you deploy
+an OSGi bundle, {productName} ignores any version information
+provided with the name but permits the deployment to succeed with
+warnings.
+
+[[giphm]][[GSDPG00062]][[about-assembly-and-deployment-events]]
+
+=== About Assembly and Deployment Events
+
+The deployment tools that are provided by {productName} can be used
+by any user authorized as an administrator to deploy applications and
+modules into any {productName} environment. However, effective
+application deployment requires planning and care. Only the developer
+knows exactly what is required by an application, so the developer is
+responsible for initial assembly and deployment.
+
+1. Deployment Descriptor or Annotation Creation. The developer creates
+the deployment descriptors or equivalent annotations using Java
+standards and tools.
++
+Details of the {productName} deployment descriptors are contained in
+link:dd-files.html#giida[{productName} Deployment Descriptor Files]
+and link:dd-elements.html#beaqi[Elements of the {productName}
+Deployment Descriptors]. The {productName} sample applications
+contain deployment descriptors that can be used as templates for
+developing deployment descriptors.
+2. Assembly. The developer assembles the archive file(s) using Java
+standards and tools, such as the `jar` command. The application or
+module is packaged into a JAR, WAR, RAR, or EAR file. For guidelines on
+naming, see link:#gihzk[Naming Standards].
++
+There are no {productName} issues to consider.
+3. Test Deployment. The developer performs a test deployment of the
+archive. For instructions, see link:deploying-applications.html#gijmq[To
+Deploy an Application or Module].
+4. Archive Submission. The developer submits the verified archive to
+the administrator for deployment into a production environment. The
+developer includes instructions for any additional deployment tasks that
+the administrator must perform. For an example of such additional
+instructions, see link:#gijla[Access to Shared Framework Classes].
+5. Configuration. The administrator applies additional deployment
+specifics. Sometimes the developer has indicated additional deployment
+needs, such as specifying the production database. In this case, the
+administrator edits and reassembles the archive.
+6. Production Deployment. The administrator deploys the archive to
+production. See link:deploying-applications.html#gijmq[To Deploy an
+Application or Module].
+7. Troubleshooting. If deployment fails, the administrator returns the
+archive to the developer. The developer fixes the problem and resubmits
+the archive to the administrator. Sometimes the administrator resolves
+the problem, depending on what the problem is.
+
+[[giifh]][[GSDPG00063]][[about-deployment-tools]]
+
+=== About Deployment Tools
+
+{productName} provides tools for assembling and deploying a module or
+application.
+
+The following topics are addressed here:
+
+* link:#giijz[Administration Console]
+* link:#giijf[The `asadmin` Utility]
+* link:#giijq[NetBeans IDE]
+* link:#gikwq[Eclipse IDE]
+* link:#beaee[JSR 88 Client]
+
+[[giijz]][[GSDPG00325]][[administration-console]]
+
+==== Administration Console
+
+The {productName} Administration Console is a browser-based utility
+that features a graphical interface that includes extensive online help
+for the administrative tasks. The format for starting the Administration
+Console in a web browser is `http://`hostname`:`port. For example:
+
+[source]
+----
+http://localhost:4848
+----
+
+Step-by-step instructions for using the Administration Console for
+deployment are provided in the Administration Console online help. You
+can display the help material for a page by clicking the Help button.
+The initial help page describes the functions and fields of the page
+itself. To find instructions for performing associated tasks, click a
+link in the See Also list.
+
+[[giijf]][[GSDPG00326]][[the-asadmin-utility]]
+
+==== The `asadmin` Utility
+
+The {productName} `asadmin` utility is a command-line tool that
+invokes subcommands for identifying the operation or task that you want
+to perform. You can run `asadmin` commands either from a command prompt
+or from a script. The format for starting the `asadmin` utility on the
+command line is as-install``/bin/asadmin`` subcommand --option. For
+example:
+
+[source]
+----
+asadmin list-applications --type web
+----
+
+Application deployment commands are listed in
+link:asadmin-deployment-subcommands.html#gihzw[The `asadmin` Deployment
+Subcommands]. All {productName} `asadmin` subcommands are documented
+in the link:reference-manual.html#GSRFM[{productName} Reference
+Manual].
+
+For the most part, you can perform the same administrative tasks by
+using either the graphical Administration Console or the `asadmin`
+command-line utility, however, there are exceptions. Procedures for
+using the command-line utilities are provided in this guide and in the
+command-line help pages, which are similar to man pages. You can display
+the help material for a command by typing help followed by the
+subcommand. For example:
+
+[source]
+----
+asadmin help list-applications
+----
+
+For additional information on the `asadmin` utility, see
+"link:administration-guide/general-administration.html#GSADG00530[Using the `asadmin` Utility]" in {productName} Administration Guide and the
+link:reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] help page.
+
+[[giijq]][[GSDPG00329]][[netbeans-ide]]
+
+==== NetBeans IDE
+
+You can use the NetBeans Integrated Development Environment (IDE), or
+another IDE, to assemble Jakarta EE applications and modules. The NetBeans
+IDE is included in the tools bundle of the Jakarta EE Software Development
+Kit (SDK). To download, see
+`http://www.oracle.com/technetwork/java/javaee/downloads/index.html`.
+For additional information, see `http://www.netbeans.org`.
+
+[[gikwq]][[GSDPG00330]][[eclipse-ide]]
+
+==== Eclipse IDE
+
+In addition to the bundled NetBeans IDE, a plug-in for the Eclipse IDE
+extends GlassFish to the Eclipse community.
+
+[[beaee]][[GSDPG00331]][[jsr-88-client]]
+
+==== JSR 88 Client
+
+The syntax of the URI entry for the `getDeploymentManager` method is as
+follows:
+
+[source]
+----
+deployer:Sun:AppServer::admin-host:admin-port[:https]
+----
+
+For example:
+
+[source]
+----
+deployer:Sun:AppServer::localhost:4848:https
+----
+
+[[gipud]][[GSDPG00064]][[additional-information-on-application-deployment]]
+
+=== Additional Information on Application Deployment
+
+As specified from Jakarta EE specifications, the relevant specifications
+are the following:
+
+* Jakarta EE Platform, Enterprise Edition 10 Specification +
+`https://jakarta.ee/specifications/platform/`
+* Jakarta EE Application Deployment JSR 88 Specification +
+`http://jcp.org/en/jsr/detail?id=88`
+* Common Annotations for the Java Platform 1.6 Specification +
+`http://jcp.org/en/jsr/detail?id=250`
+* Java Servlet 3.0 Specification +
+`http://jcp.org/en/jsr/detail?id=315`
+* Enterprise JavaBeans 3.1 Specification +
+`http://jcp.org/en/jsr/detail?id=318`
+* Jakarta EE Connector Architecture 1.6 Specification +
+`http://jcp.org/en/jsr/detail?id=322`
+
+The following product documentation might be relevant to some aspects of
+application deployment:
+
+* link:application-development-guide.html#GSDVG[
+{productName} Application Development Guide]
+* link:administration-guide.html#GSADG[
+{productName} Administration Guide]
+* link:add-on-component-development-guide.html#GSACG[
+{productName} Add-On Component Development Guide]
+* link:reference-manual.html#GSRFM[
+{productName} Reference Manual]
+* {productName} Administration Console online help
+
diff --git a/docs/application-deployment-guide/src/main/asciidoc/preface.adoc b/docs/application-deployment-guide/src/main/asciidoc/preface.adoc
new file mode 100644
index 0000000..444baaa
--- /dev/null
+++ b/docs/application-deployment-guide/src/main/asciidoc/preface.adoc
@@ -0,0 +1,334 @@
+type=page
+status=published
+title=Preface
+next=overview.html
+prev=title.html
+~~~~~~
+
+= Preface
+
+[[GSDPG806]][[sthref2]]
+[[preface]]
+== Preface
+
+[NOTE]
+====
+This documentation is part of the Java Enterprise Edition contribution
+to the Eclipse Foundation and is not intended for use in relation to
+Java Enterprise Edition or Orace GlassFish. The documentation is in the
+process of being revised to reflect the new Jakarta EE branding.
+Additional changes will be made as requirements and procedures evolve
+for Jakarta EE. Where applicable, references to Jakarta EE or Java
+Enterprise Edition should be considered references to Jakarta EE.
+
+Please see the Title page for additional license information.
+====
+
+This Application Deployment Guide describes deployment of applications
+and application components to {productName}, and
+includes information about deployment descriptors.
+
+This preface contains information about and conventions for the entire
+{productName} ({productName}) documentation set.
+
+{productName} 7 is developed through the GlassFish project
+open-source community at https://github.com/eclipse-ee4j/glassfish.
+The GlassFish project provides a structured process for developing the
+{productName} platform that makes the new features of the Jakarta EE
+platform available faster, while maintaining the most important feature
+of Jakarta EE: compatibility. It enables Java developers to access the
+{productName} source code and to contribute to the development of the
+{productName}.
+
+The following topics are addressed here:
+
+* link:#ghpbz[{productName} Documentation Set]
+* link:#giprl[Related Documentation]
+* link:#fwbkx[Typographic Conventions]
+* link:#fquvc[Symbol Conventions]
+* link:#ghpfg[Default Paths and File Names]
+
+[[GSDPG00053]][[ghpbz]]
+
+
+[[glassfish-server-documentation-set]]
+=== {productName} Documentation Set
+
+The {productName} documentation set describes deployment planning and
+system installation. For an introduction to {productName}, refer to
+the books in the order in which they are listed in the following table.
+
+[width="100%",cols="<30%,<70%",options="header",]
+|===
+|Book Title |Description
+|link:release-notes.html#GSRLN[Release Notes] |Provides late-breaking information about
+the software and the documentation and includes a comprehensive,
+table-based summary of the supported hardware, operating system, Java
+Development Kit (JDK), and database drivers.
+
+|link:quick-start-guide.html#GSQSG[Quick Start Guide]
+|Explains how to get started with the {productName} product.
+
+|link:installation-guide.html#GSING[Installation Guide]
+|Explains how to install the software and its components.
+
+|link:upgrade-guide.html#GSUPG[Upgrade Guide]
+|Explains how to upgrade to the latest version of {productName}.
+This guide also describes differences between adjacent product releases and configuration
+options that can result in incompatibility with the product specifications.
+
+|link:deployment-planning-guide.html#GSPLG[Deployment Planning Guide]
+|Explains how to build a production deployment of {productName} that meets the requirements of
+your system and enterprise.
+
+|link:administration-guide.html#GSADG[Administration Guide]
+|Explains how to configure, monitor, and manage {productName} subsystems and components
+from the command line by using the link:reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] utility.
+Instructions for performing these tasks from the Administration Console are provided
+in the Administration Console online help.
+
+|link:security-guide.html#GSSCG[Security Guide]
+|Provides instructions for configuring and administering {productName} security.
+
+|link:application-deployment-guide.html#GSDPG[Application Deployment Guide]
+|Explains how to assemble and deploy applications to the {productName} and provides information
+about deployment descriptors.
+
+|link:application-development-guide.html#GSDVG[Application Development Guide]
+|Explains how to create and implement Java Platform, Enterprise Edition (Jakarta EE platform)
+applications that are intended to run on the {productName}.
+These applications follow the open Java standards model for Jakarta EE components
+and application programmer interfaces (APIs).
+This guide provides information about developer tools, security, and debugging.
+
+|link:add-on-component-development-guide.html#GSACG[Add-On Component Development Guide]
+|Explains how to use published interfaces of {productName} to develop add-on components
+for {productName}.
+This document explains how to perform only those tasks that ensure that the add-on component
+is suitable for {productName}.
+
+|link:embedded-server-guide.html#GSESG[Embedded Server Guide]
+|Explains how to run applications in embedded {productName} and to develop applications
+in which {productName} is embedded.
+
+|link:ha-administration-guide.html#GSHAG[High Availability Administration Guide]
+|Explains how to configure {productName} to provide higher availability and
+scalability through failover and load balancing.
+
+|link:performance-tuning-guide.html#GSPTG[Performance Tuning Guide]
+|Explains how to optimize the performance of {productName}.
+
+|link:troubleshooting-guide.html#GSTSG[Troubleshooting Guide]
+|Describes common problems that you might encounter when using {productName} and explains how to solve them.
+
+|link:error-messages-reference.html#GSEMR[Error Message Reference]
+|Describes error messages that you might encounter when using {productName}.
+
+|link:reference-manual.html#GSRFM[Reference Manual]
+|Provides reference information in man page format for {productName} administration commands, utility
+commands, and related concepts.
+
+|link:../openmq/mq-release-notes.html#GMRLN[Message Queue Release Notes]
+|Describes new features, compatibility issues, and existing bugs for Open Message Queue.
+
+|link:../openmq/mq-tech-over.html#GMTOV[Message Queue Technical Overview]
+|Provides an introduction to the technology, concepts, architecture, capabilities, and features of
+the Message Queue messaging service.
+
+|link:../openmq/mq-admin-guide.html#GMADG[Message Queue Administration Guide]
+|Explains how to set up and manage a Message Queue messaging system.
+
+|link:../openmq/mq-dev-guide-jmx.html#GMJMG[Message Queue Developer's Guide for JMX Clients]
+|Describes the application programming interface in Message Queue for
+programmatically configuring and monitoring Message Queue resources in
+conformance with the Java Management Extensions (JMX).
+
+|link:../openmq/mq-dev-guide-java.html#GMJVG[Message Queue Developer's Guide for Java Clients]
+|Provides information about concepts and procedures for developing Java messaging
+applications (Java clients) that work with {productName}.
+
+|link:../openmq/mq-dev-guide-c.html#GMCCG[Message Queue Developer's Guide for C Clients]
+|Provides programming and reference information for developers working with
+Message Queue who want to use the C language binding to the Message
+Queue messaging service to send, receive, and process Message Queue messages.
+|===
+
+
+[[GSDPG00054]][[giprl]]
+
+[[related-documentation]]
+=== Related Documentation
+
+The following tutorials explain how to develop Jakarta EE applications:
+
+* https://github.com/eclipse-ee4j/jakartaee-firstcup-examples[
+Your First Cup: An Introduction to the Jakarta EE Platform].
+For beginning Jakarta EE programmers, this short tutorial explains the entire
+process for developing a simple enterprise application.
+The sample application is a web application that consists of a component that is
+based on the Enterprise JavaBeans specification, a JAX-RS web service,
+and a JavaServer Faces component for the web front end.
+
+* https://eclipse-ee4j.github.io/jakartaee-tutorial[The Jakarta EE Tutorial].
+This comprehensive tutorial explains how to use Jakarta EE platform technologies
+and APIs to develop Jakarta EE applications.
+
+Javadoc tool reference documentation for packages that are provided with
+{productName} is available as follows.
+
+* The Jakarta EE specifications and API specification is
+located at https://jakarta.ee/specifications/.
+
+* The API specification for {productName} 7, including Jakarta EE
+platform packages and nonplatform packages that are specific to the
+{productName} product, is located at
+https://glassfish.org/docs/.
+
+For information about creating enterprise applications in the NetBeans
+Integrated Development Environment (IDE), see the
+https://netbeans.apache.org/kb/docs/java-ee.html[
+NetBeans Documentation, Training & Support page].
+
+For information about the Derby database for use with
+the {productName}, see the https://db.apache.org/derby/index.html[Derby page].
+
+The Jakarta EE Samples project is a collection of sample applications that
+demonstrate a broad range of Jakarta EE technologies. The Jakarta EE Samples
+are bundled with the Jakarta EE Software Development Kit (SDK) and are also
+available from the repository
+(`https://github.com/eclipse-ee4j/glassfish-samples`).
+
+[[GSDPG00055]][[fwbkx]]
+
+[[typographic-conventions]]
+=== Typographic Conventions
+
+The following table describes the typographic changes that are used in
+this book.
+
+[width="100%",cols="<14%,<37%,<49%",options="header",]
+|===
+|Typeface |Meaning |Example
+
+|`AaBbCc123`
+|The names of commands, files, and directories, and onscreen computer output
+|Edit your `.login` file.
+
+Use `ls` `a` to list all files.
+
+`machine_name% you have mail.`
+
+|`AaBbCc123`
+|What you type, contrasted with onscreen computer output
+|`machine_name%` `su`
+
+`Password:`
+
+|AaBbCc123
+|A placeholder to be replaced with a real name or value
+|The command to remove a file is `rm` filename.
+
+|AaBbCc123
+|Book titles, new terms, and terms to be emphasized (note that some emphasized items appear bold online)
+|Read Chapter 6 in the User's Guide.
+
+A cache is a copy that is stored locally.
+
+Do not save the file.
+|===
+
+
+[[GSDPG00056]][[fquvc]]
+
+[[symbol-conventions]]
+=== Symbol Conventions
+
+The following table explains symbols that might be used in this book.
+
+[width="100%",cols="<10%,<26%,<28%,<36%",options="header",]
+|===
+|Symbol |Description |Example |Meaning
+
+|`[ ]`
+|Contains optional arguments and command options.
+|`ls [-l]`
+|The `-l` option is not required.
+
+|`{ \| }`
+|Contains a set of choices for a required command option.
+|`-d {y\|n}`
+|The `-d` option requires that you use either the `y` argument or the `n` argument.
+
+|`${ }`
+|Indicates a variable reference.
+|`${com.sun.javaRoot}`
+|References the value of the `com.sun.javaRoot` variable.
+
+|`-`
+|Joins simultaneous multiple keystrokes.
+|Control-A
+|Press the Control key while you press the A key.
+
+|`+`
+|Joins consecutive multiple keystrokes.
+|Ctrl+A+N
+|Press the Control key, release it, and then press the subsequent keys.
+
+|`>`
+|Indicates menu item selection in a graphical user interface.
+|File > New > Templates
+|From the File menu, choose New. From the New submenu, choose Templates.
+|===
+
+
+[[GSDPG00057]][[ghpfg]]
+
+[[default-paths-and-file-names]]
+=== Default Paths and File Names
+
+The following table describes the default paths and file names that are
+used in this book.
+
+[%autowidth.stretch,options="header",]
+|===
+|Placeholder |Description |Default Value
+
+|as-install
+a|Represents the base installation directory for {productName}.
+In configuration files, as-install is represented as follows:
+`${com.sun.aas.installRoot}`
+a|* Installations on the Oracle Solaris operating system, Linux operating
+system, and Mac OS operating system:
++
+user's-home-directory``/glassfish7/glassfish``
++
+* Installations on the Windows operating system:
++
+SystemDrive``:\glassfish7\glassfish``
+
+|as-install-parent
+|Represents the parent of the base installation directory for {productName}.
+a|* Installations on the Oracle Solaris operating system, Linux operating
+system, and Mac operating system:
++
+user's-home-directory``/glassfish7``
++
+* Installations on the Windows operating system:
++
+SystemDrive``:\glassfish7``
+
+|domain-root-dir
+|Represents the directory in which a domain is created by default.
+|as-install``/domains/``
+
+|domain-dir
+|Represents the directory in which a domain's configuration is stored.
+In configuration files, domain-dir is represented as follows:
+`${com.sun.aas.instanceRoot}`
+|domain-root-dir/domain-name
+
+|instance-dir
+|Represents the directory for a server instance.
+|domain-dir/instance-name
+|===
+
diff --git a/docs/application-deployment-guide/src/main/asciidoc/title.adoc b/docs/application-deployment-guide/src/main/asciidoc/title.adoc
new file mode 100644
index 0000000..b5bd3c9
--- /dev/null
+++ b/docs/application-deployment-guide/src/main/asciidoc/title.adoc
@@ -0,0 +1,48 @@
+type=page
+status=published
+title={productName} Application Deployment Guide, Release 7
+next=preface.html
+prev=lot.html
+~~~~~~
+
+= {productName} Application Deployment Guide, Release 7
+
+[[eclipse-glassfish-server]]
+== {productName}
+
+Application Deployment Guide
+
+Release 7
+
+Contributed 2018 - 2022
+
+This Application Deployment Guide describes deployment of applications
+and application components to {productName}, and
+includes information about deployment descriptors.
+
+[[sthref1]]
+
+'''''
+
+{productName} Application Deployment Guide,
+Release 7
+
+Copyright © 2013, 2019 Oracle and/or its affiliates. All rights reserved.
+
+This program and the accompanying materials are made available under the
+terms of the Eclipse Public License v. 2.0, which is available at
+http://www.eclipse.org/legal/epl-2.0.
+
+SPDX-License-Identifier: EPL-2.0
+
+Oracle and Java are registered trademarks of Oracle and/or its
+affiliates. Other names may be trademarks of their respective owners.
+
+Intel and Intel Xeon are trademarks or registered trademarks of Intel
+Corporation. All SPARC trademarks are used under license and are
+trademarks or registered trademarks of SPARC International, Inc. AMD,
+Opteron, the AMD logo, and the AMD Opteron logo are trademarks or
+registered trademarks of Advanced Micro Devices. UNIX is a registered
+trademark of The Open Group.
+
+image:img/eclipse_foundation_logo_tiny.png["Eclipse Logo"]
diff --git a/docs/application-deployment-guide/src/main/jbake/assets/css/style.css b/docs/application-deployment-guide/src/main/jbake/assets/css/style.css
deleted file mode 100644
index 25a16e4..0000000
--- a/docs/application-deployment-guide/src/main/jbake/assets/css/style.css
+++ /dev/null
@@ -1,315 +0,0 @@
-/* CSS */
-/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
-/** 1. Set default font family to sans-serif. 2. Prevent iOS text size adjust after orientation change, without disabling user zoom. */
-html { font-family: sans-serif; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ }
-
-/* HTML5 display definitions ========================================================================== */
-/** Correct `block` display not defined for any HTML5 element in IE 8/9. Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox. Correct `block` display not defined for `main` in IE 11. */
-article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { display: block; }
-
-/** 1. Correct `inline-block` display not defined in IE 8/9. 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. */
-audio, canvas, progress, video { display: inline-block; /* 1 */ vertical-align: baseline; /* 2 */ }
-
-/** Prevent modern browsers from displaying `audio` without controls. Remove excess height in iOS 5 devices. */
-audio:not([controls]) { display: none; height: 0; }
-
-/** Address `[hidden]` styling not present in IE 8/9/10. Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. */
-[hidden], template { display: none; }
-
-/* Links ========================================================================== */
-/** Remove the gray background color from active links in IE 10. */
-a { background-color: transparent; }
-
-/** Improve readability when focused and also mouse hovered in all browsers. */
-a:active, a:hover { outline: 0; }
-
-/* Text-level semantics ========================================================================== */
-/** Address styling not present in IE 8/9/10/11, Safari, and Chrome. */
-abbr[title] { border-bottom: 1px dotted; }
-
-/** Address style set to `bolder` in Firefox 4+, Safari, and Chrome. */
-b, strong { font-weight: bold; }
-
-/** Address styling not present in Safari and Chrome. */
-dfn { font-style: italic; }
-
-/** Address variable `h1` font-size and margin within `section` and `article` contexts in Firefox 4+, Safari, and Chrome. */
-h1 { font-size: 2em; margin: 0.67em 0; }
-
-/** Address styling not present in IE 8/9. */
-mark { background: #ff0; color: #000; }
-
-/** Address inconsistent and variable font size in all browsers. */
-small { font-size: 80%; }
-
-/** Prevent `sub` and `sup` affecting `line-height` in all browsers. */
-sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }
-
-sup { top: -0.5em; }
-
-sub { bottom: -0.25em; }
-
-/* Embedded content ========================================================================== */
-/** Remove border when inside `a` element in IE 8/9/10. */
-img { border: 0; }
-
-/** Correct overflow not hidden in IE 9/10/11. */
-svg:not(:root) { overflow: hidden; }
-
-/* Grouping content ========================================================================== */
-/** Address margin not present in IE 8/9 and Safari. */
-figure { margin: 1em 40px; }
-
-/** Address differences between Firefox and other browsers. */
-hr { box-sizing: content-box; height: 0; }
-
-/** Contain overflow in all browsers. */
-pre { overflow: auto; }
-
-/** Address odd `em`-unit font size rendering in all browsers. */
-code, kbd, pre, samp { font-family: monospace, monospace; font-size: 1em; }
-
-/* Forms ========================================================================== */
-/** Known limitation: by default, Chrome and Safari on OS X allow very limited styling of `select`, unless a `border` property is set. */
-/** 1. Correct color not being inherited. Known issue: affects color of disabled elements. 2. Correct font properties not being inherited. 3. Address margins set differently in Firefox 4+, Safari, and Chrome. */
-button, input, optgroup, select, textarea { color: inherit; /* 1 */ font: inherit; /* 2 */ margin: 0; /* 3 */ }
-
-/** Address `overflow` set to `hidden` in IE 8/9/10/11. */
-button { overflow: visible; }
-
-/** Address inconsistent `text-transform` inheritance for `button` and `select`. All other form control elements do not inherit `text-transform` values. Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. Correct `select` style inheritance in Firefox. */
-button, select { text-transform: none; }
-
-/** 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls. 2. Correct inability to style clickable `input` types in iOS. 3. Improve usability and consistency of cursor style between image-type `input` and others. */
-button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ }
-
-/** Re-set default cursor for disabled elements. */
-button[disabled], html input[disabled] { cursor: default; }
-
-/** Remove inner padding and border in Firefox 4+. */
-button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; }
-
-/** Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet. */
-input { line-height: normal; }
-
-/** It's recommended that you don't attempt to style these elements. Firefox's implementation doesn't respect box-sizing, padding, or width.  1. Address box sizing set to `content-box` in IE 8/9/10. 2. Remove excess padding in IE 8/9/10. */
-input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ }
-
-/** Fix the cursor style for Chrome's increment/decrement buttons. For certain `font-size` values of the `input`, it causes the cursor style of the decrement button to change from `default` to `text`. */
-input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { height: auto; }
-
-/** 1. Address `appearance` set to `searchfield` in Safari and Chrome. 2. Address `box-sizing` set to `border-box` in Safari and Chrome (include `-moz` to future-proof). */
-input[type="search"] { -webkit-appearance: textfield; /* 1 */ /* 2 */ box-sizing: content-box; }
-
-/** Remove inner padding and search cancel button in Safari and Chrome on OS X. Safari (but not Chrome) clips the cancel button when the search input has padding (and `textfield` appearance). */
-input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; }
-
-/** Define consistent border, margin, and padding. */
-fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; }
-
-/** 1. Correct `color` not being inherited in IE 8/9/10/11. 2. Remove padding so people aren't caught out if they zero out fieldsets. */
-legend { border: 0; /* 1 */ padding: 0; /* 2 */ }
-
-/** Remove default vertical scrollbar in IE 8/9/10/11. */
-textarea { overflow: auto; }
-
-/** Don't inherit the `font-weight` (applied by a rule above). NOTE: the default cannot safely be changed in Chrome and Safari on OS X. */
-optgroup { font-weight: bold; }
-
-/* Tables ========================================================================== */
-/** Remove most spacing between table cells. */
-table { border-collapse: collapse; border-spacing: 0; }
-
-td, th { padding: 0; }
-
-/* LAYOUT STYLES */
-
-p { margin-top: 0; }
-
-code, pre { margin-bottom: 30px; font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace; font-size: 13px; color: #222; }
-
-code { padding: 0 3px; background-color: #f2f8fc; border: solid 1px #dbe7f3; }
-
-pre { padding: 20px; overflow: auto; text-shadow: none; background: #fff; border: solid 1px #f2f2f2; }
-
-pre code { padding: 0; color: #2879d0; background-color: #fff; border: none; }
-
-ul, ol, dl { margin-bottom: 20px; }
-
-/* COMMON STYLES */
-
-td.halign-right { text-align: right; } 
-
-td.halign-center { text-align: center; } 
-
-form { padding: 20px; background: #f2f2f2; }
-
-h2 { 
-   font-size: 2em;
-   line-height: 1.2em;
-   font-weight: 200;
-   letter-spacing: 0;
-}
-
-h3 { 
-   font-size: 1.4em;
-   line-height: 1.2em;
-   font-weight: normal;
-   letter-spacing: 0;
-}
-
-.sect1 {
-   margin-left: 4%;
-   margin-right: 4%;
-   font: 13px/20px Arial, Helvetica, sans-serif  
-}
-
-a:link {
-   text-decoration: none;
-   color: #09569d;
-}
-
-#preamble hr{
-   margin-left: 0%;
-   margin-right: 0%;
-}
-
-#preamble .sectionbody table  {
-   font-weight: 200;
-   margin-left: 4%;
-   margin-right: 4%;
-}
-
-hr {
-   margin-bottom: 12px;
-}
-
-table.tableblock.frame-all.grid-all.spread {
-   font-size: 12px;
-}
-
-code {
-   font-size:.9em;
-   border: 1px solid #eaeaea;
-   background-color: #f6f6f6;
-   border-radius: 3px;
-   padding: 1px;
-   padding-left:2px;
-   padding-right:2px;
-}
-
-pre.prettyprint.highlight {
-   border: 1px solid #eaeaea;
-   background-color: #f6f6f6;
-   border-radius: 4px;
-   padding: 8px;
-   padding-top:4px;
-   padding-bottom:4px;
-}
-
-.language-oac_no_warn {
-   font-size:.9em;
-   color:#222;
-   background-color: transparent;
-}
-
-#doc-title {
-   margin-left: 4%;
-}
-
-#top-nav {
-   margin-left: 4%;
-   font-size: 12px;
-}
-
-#bottom-nav {
-   margin-left: 4%;
-   font-size: 12px;
-}
-
-.vector-font {
-   color:grey; 
-   font-size: 20px;
-}
-
-#copyright {
-   padding-top: 10px;
-   padding-bottom: 4px;
-   display: table;
-   margin:0 auto;
-   color: grey;
-   font-size: 12px;
-   vertical-align: middle;
-}
-
-.beta {color: #FF0000}
-
-/* GENERAL ELEMENT TYPE STYLES */
-
-/* #Media Queries
-================================================== */
-/* Smaller than standard 960 (devices and browsers) */
-/* Tablet Portrait size to standard 960 (devices and browsers) */
-@media only screen and (min-width: 768px) and (max-width: 959px) { .inner { width: 740px; }
-  header h1, header h2 { width: 340px; }
-  header h1 { font-size: 60px; }
-  header h2 { font-size: 30px; }
-}
-/* All Mobile Sizes (devices and browser) */
-@media only screen and (max-width: 767px) { .inner { width: 93%; }
-  header { padding: 20px 0; }
-  header .inner { position: relative; }
-  header h1, header h2 { width: 100%; }
-  header h1 { font-size: 48px; }
-  header h2 { font-size: 24px; }
-  header a.button { position: relative; display: inline-block; width: auto; height: auto; padding: 5px 10px; margin-top: 15px; font-size: 13px; line-height: 1; color: #2879d0; text-align: center; background-color: #9ddcff; background-image: none; border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; }
-  header a.button small { display: inline; font-size: 13px; }
-}
-/* Mobile Landscape Size to Tablet Portrait (devices and browsers) */
-/* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */
-
-header h1 { padding-top: 14px; font-size: 2em; font-weight: 200; line-height: 1.4; color: #FFFFFF; letter-spacing: 0px; border-bottom: 0px; }
-
-header h2 { font-size: 1.2em; margin-top: 0; margin-bottom: 0; font-weight: 200; line-height: .8; color: #ec7D11; letter-spacing: 0; }
-
-/*
-header a.button { background: transparent url(../images/logo.png) 0 0 no-repeat; padding-left: 32px; }
-*/
-
-header a:hover { text-decoration: none; }
-
-/* Admonition (Note) block */
-.admonitionblock > table {
-  border: 0;
-  background: none;
-  width: 100%;
-  table-layout: auto;
-  margin-bottom: 10.5px;
-}
-.admonitionblock > table td.icon {
-  text-align: center;
-  width: 60px;
-}
-.admonitionblock > table td.icon img {
-  max-width: none;
-}
-.admonitionblock > table td.icon .title {
-  text-transform: uppercase;
-}
-.admonitionblock > table td.content {
-  padding-left: 1em;
-  padding-right: 1em;
-  border-left: 3px solid #ddd;
-}
-.admonitionblock > table td.content > :last-child > :last-child {
-  margin-bottom: 0;
-}
-.admonitionblock td.icon [class^="fa icon-"]:before {
-  font-size: 2.5em;
-  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
-  cursor: default;
-}
-.admonitionblock td.icon .icon-note:before {
-  content: "\f05a";
-  color: #5bc0de;
-}
diff --git a/docs/application-deployment-guide/src/main/jbake/content/asadmin-deployment-subcommands.adoc b/docs/application-deployment-guide/src/main/jbake/content/asadmin-deployment-subcommands.adoc
deleted file mode 100644
index 1943f39..0000000
--- a/docs/application-deployment-guide/src/main/jbake/content/asadmin-deployment-subcommands.adoc
+++ /dev/null
@@ -1,151 +0,0 @@
-type=page
-status=published
-title=The asadmin Deployment Subcommands
-next=dd-files.html
-prev=deploying-applications.html
-~~~~~~
-The asadmin Deployment Subcommands
-==================================
-
-[[GSDPG00005]][[gihzw]]
-
-
-[[a-the-asadmin-deployment-subcommands]]
-A The `asadmin` Deployment Subcommands
---------------------------------------
-
-This appendix lists the `asadmin` deployment subcommands that are
-included with this release of the GlassFish Server Open Source
-Editionsoftware. For information on additional `asadmin` subcommands,
-see "link:../administration-guide/asadmin-subcommands.html#GSADG00023[Subcommands for the `asadmin` Utility]" in
-GlassFish Server Open Source Edition Administration Guide or see the
-link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-
-link:../reference-manual/add-library.html#GSRFM00818[`add-library`]::
-  Adds one or more library JAR files to GlassFish Server. You can
-  specify whether the libraries are added to the Common class loader
-  directory, the Java optional package directory, or the
-  application-specific class loader directory.
-link:../reference-manual/create-application-ref.html#GSRFM00013[`create-application-ref`]::
-  Creates a reference from a cluster or an unclustered server instance
-  to a previously deployed Java EE application or module. This
-  effectively results in the application element being deployed and made
-  available on the targeted instance or cluster.
-link:../reference-manual/create-lifecycle-module.html#GSRFM00043[`create-lifecycle-module`]::
-  Creates a lifecycle module. A lifecycle module provides a means of
-  running a short or long duration Java-based task at a specific stage
-  in the server life cycle.
-link:../reference-manual/delete-application-ref.html#GSRFM00064[`delete-application-ref`]::
-  Removes a reference from a cluster or an unclustered server instance
-  to a previously deployed Java EE application or module. This
-  effectively results in the application element being undeployed on the
-  targeted instance or cluster.
-link:../reference-manual/delete-lifecycle-module.html#GSRFM00095[`delete-lifecycle-module`]::
-  Deletes a lifecycle module.
-link:../reference-manual/deploy.html#GSRFM00114[`deploy`]::
-  Deploys an enterprise application, web application, EJB module,
-  connector module, or application client module. If the component is
-  already deployed or already exists, you can forcefully redeploy if you
-  set the `--force` option to `true`. A directory can also be deployed.
-  Supported in remote mode only. For usage instructions, see
-  link:deploying-applications.html#gijmq[To Deploy an Application or
-  Module].
-link:../reference-manual/deploydir.html#GSRFM00115[`deploydir`]::
-  This subcommand is deprecated. Use the `deploy` subcommand instead.
-link:../reference-manual/disable.html#GSRFM00116[`disable`]::
-  Immediately deactivates the named application or module. If the
-  component has not been deployed, an error message is returned.
-  Supported in remote mode only. For usage instructions,
-  seelink:deploying-applications.html#fvyje[To Disable an Application or
-  Module].
-link:../reference-manual/enable.html#GSRFM00124[`enable`]::
-  Enables the specified application or module. If the component has not
-  been deployed, an error message is returned. If the component is
-  already enabled, then it is re-enabled. Supported in remote mode only.
-  For usage instructions, see link:deploying-applications.html#gijjy[To
-  Enable an Application or Module].
-link:../reference-manual/get-client-stubs.html#GSRFM00140[`get-client-stubs`]::
-  Gets the client stubs JAR file for an application client module or an
-  application containing the application client module, from the server
-  machine to the local directory. For usage instructions, see
-  link:deploying-applications.html#beaek[EJB Module Deployment
-  Guidelines].
-link:../reference-manual/list-applications.html#GSRFM00148[`list-applications`]::
-  Lists deployed Java EE applications and modules. Optionally lists
-  subcomponents and scoped resources. If the `--type` option is not
-  specified, all applications and modules are listed. Supported in
-  remote mode only. For usage instructions, see
-  link:deploying-applications.html#giulr[To List Deployed Applications or
-  Modules].
-link:../reference-manual/list-application-refs.html#GSRFM00147[`list-application-refs`]::
-  Lists Java EE applications and modules deployed on the specified
-  target server instance or cluster.
-link:../reference-manual/list-libraries.html#GSRFM00819[`list-libraries`]::
-  Lists library JAR files that have been added to GlassFish Server. You
-  can specify whether to list libraries in the Common class loader
-  directory, the Java optional package directory, or the
-  application-specific class loader directory.
-link:../reference-manual/list-lifecycle-modules.html#GSRFM00181[`list-lifecycle-modules`]::
-  Lists lifecycle modules.
-link:../reference-manual/list-components.html#GSRFM00155[`list-components`]::
-  This subcommand is deprecated. Use the `list-applications` subcommand
-  instead.
-link:../reference-manual/list-sub-components.html#GSRFM00201[`list-sub-components`]::
-  Lists EJBs or servlets in a deployed module or in a module of the
-  deployed application. If a module is not identified, all modules are
-  listed. To display a specific module in an application, you must
-  specify the module name and the `--appname` option. Supported in
-  remote mode only. For usage instructions, see
-  link:deploying-applications.html#giulr[To List Deployed Applications or
-  Modules].
-link:../reference-manual/list-web-context-param.html#GSRFM00208[`list-web-context-param`]::
-  Lists servlet context-initialization parameters of a deployed web
-  application or module. Supported in remote mode only. For usage
-  instructions, see link:deploying-applications.html#giybo[To List Web
-  Context Parameters].
-link:../reference-manual/list-web-env-entry.html#GSRFM00209[`list-web-env-entry`]::
-  Lists environment entries for a deployed web application or module.
-  Supported in remote mode only. For usage instructions, see
-  link:deploying-applications.html#giyip[To List Web Environment
-  Entries].
-link:../reference-manual/redeploy.html#GSRFM00217[`redeploy`]::
-  Overwrites an application or module that is already deployed.
-  Supported in remote mode only. For usage instructions, see
-  link:deploying-applications.html#gijmb[To Redeploy an Application or
-  Module].
-link:../reference-manual/remove-library.html#GSRFM00820[`remove-library`]::
-  Removes one or more library JAR files from GlassFish Server. You can
-  specify whether the libraries are removed from the Common class loader
-  directory, the Java optional package directory, or the
-  application-specific class loader directory.
-link:../reference-manual/set-web-context-param.html#GSRFM00230[`set-web-context-param`]::
-  Sets a servlet context-initialization parameter of a deployed web
-  application or module. Supported in remote mode only. For usage
-  instructions, see link:deploying-applications.html#giyce[To Set a Web
-  Context Parameter].
-link:../reference-manual/set-web-env-entry.html#GSRFM00231[`set-web-env-entry`]::
-  Sets an environment entry for a deployed web application or module.
-  Supported in remote mode only. For usage instructions, see
-  link:deploying-applications.html#giyhc[To Set a Web Environment Entry].
-link:../reference-manual/show-component-status.html#GSRFM00232[`show-component-status`]::
-  Shows the status of a deployed component. The possible statuses
-  include `enabled` or `disabled`. Supported in remote mode only. For
-  usage instructions, see link:deploying-applications.html#giulr[To List
-  Deployed Applications or Modules].
-link:../reference-manual/undeploy.html#GSRFM00244[`undeploy`]::
-  Uninstalls the specified deployed application or module. Supported in
-  remote mode only. For usage instructions, see
-  link:deploying-applications.html#gijkl[To Undeploy an Application or
-  Module].
-link:../reference-manual/unset-web-context-param.html#GSRFM00248[`unset-web-context-param`]::
-  Unsets a servlet context-initialization parameter of a deployed web
-  application or module. Supported in remote mode only. For usage
-  instructions, see link:deploying-applications.html#giycy[To Unset a Web
-  Context Parameter].
-link:../reference-manual/unset-web-env-entry.html#GSRFM00249[`unset-web-env-entry`]::
-  Unsets an environment entry for a deployed web application or module.
-  Supported in remote mode only. For usage instructions, see
-  link:deploying-applications.html#giyjr[To Unset a Web Environment
-  Entry].
-
-
diff --git a/docs/application-deployment-guide/src/main/jbake/content/dd-elements.adoc b/docs/application-deployment-guide/src/main/jbake/content/dd-elements.adoc
deleted file mode 100644
index 370230d..0000000
--- a/docs/application-deployment-guide/src/main/jbake/content/dd-elements.adoc
+++ /dev/null
@@ -1,12198 +0,0 @@
-type=page
-status=published
-title=Elements of the GlassFish Server Deployment Descriptors
-prev=dd-files.html
-~~~~~~
-Elements of the GlassFish Server Deployment Descriptors
-=======================================================
-
-[[GSDPG00007]][[beaqi]]
-
-
-[[c-elements-of-the-glassfish-server-deployment-descriptors]]
-C Elements of the GlassFish Server Deployment Descriptors
----------------------------------------------------------
-
-This appendix describes the elements of the GlassFish Server Open Source
-Editiondeployment descriptors.
-
-[[beaqs]][[GSDPG00085]][[activation-config]]
-
-`activation-config`
-~~~~~~~~~~~~~~~~~~~
-
-Specifies an activation configuration, which includes the runtime
-configuration properties of the message-driven bean in its operational
-environment. For example, this can include information about the name of
-a physical JMS destination. Matches and overrides the
-`activation-config` element in the `ejb-jar.xml` file.
-
-[[fvyoe]][[GSDPG00335]][[superelements]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaus[`mdb-resource-adapter`] (`glassfish-ejb-jar.xml`)
-
-[[fvynj]][[GSDPG00336]][[subelements]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `activation-config`
-element.
-
-[[GSDPG838]][[sthref9]][[fvynw]]
-
-
-Table C-1 `activation-config` subelements
-
-[width="100%",cols="32%,12%,56%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beaso[`description`]
-
-
- |zero or one |Specifies a text description of the activation
-configuration.
-
-a|
-link:#beaqt[`activation-config-property`]
-
-
- |one or more |Specifies an activation configuration property.
-|=======================================================================
-
-
-[[beaqt]][[GSDPG00086]][[activation-config-property]]
-
-`activation-config-property`
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies the name and value of an activation configuration property.
-
-[[fvyne]][[GSDPG00337]][[superelements-1]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaqs[`activation-config`] (`glassfish-ejb-jar.xml`)
-
-[[fvyns]][[GSDPG00338]][[subelements-1]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the
-`activation-config-property` element.
-
-[[GSDPG839]][[sthref10]][[fvynv]]
-
-
-Table C-2 `activation-config-property` subelements
-
-[width="100%",cols="39%,10%,51%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beaqu[`activation-config-property-name`]
-
-
- |only one |Specifies the name of an activation configuration property.
-a|
-link:#beaqv[`activation-config-property-value`]
-
-
- |only one |Specifies the value of an activation configuration property.
-|=======================================================================
-
-
-[[beaqu]][[GSDPG00087]][[activation-config-property-name]]
-
-`activation-config-property-name`
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies the name of an activation configuration property.
-
-[[fvynm]][[GSDPG00339]][[superelements-2]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaqt[`activation-config-property`] (`glassfish-ejb-jar.xml`)
-
-[[fvyok]][[GSDPG00340]][[subelements-2]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beaqv]][[GSDPG00088]][[activation-config-property-value]]
-
-`activation-config-property-value`
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies the value of an activation configuration property.
-
-[[fvyou]][[GSDPG00341]][[superelements-3]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaqt[`activation-config-property`] (`glassfish-ejb-jar.xml`)
-
-[[fvyoz]][[GSDPG00342]][[subelements-3]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[giyhw]][[GSDPG00089]][[admin-object-resource]]
-
-`admin-object-resource`
-~~~~~~~~~~~~~~~~~~~~~~~
-
-Defines an administered object for an inbound resource adapter.
-
-[[GSDPG840]][[sthref11]]
-
-
-[[superelements-4]]
-Superelements
-^^^^^^^^^^^^^
-
-link:#giyiy[`resources`] (`glassfish-resources.xml`)
-
-[[GSDPG841]][[sthref12]]
-
-
-[[subelements-4]]
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the
-`admin-object-resource` element.
-
-[[GSDPG842]][[sthref13]][[sthref14]]
-
-
-Table C-3 `admin-object-resource` Subelements
-
-[width="100%",cols="25%,12%,63%",options="header",]
-|==========================================================
-|Element |Required |Description
-a|
-link:#beaso[`description`]
-
-
- |zero or one |Contains a text description of this element.
-a|
-link:#beavx[`property` (with attributes)]
-
-
- |zero or more |Specifies a property or a variable.
-|==========================================================
-
-
-[[GSDPG843]][[sthref15]]
-
-
-[[attributes]]
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `admin-object-resource`
-element.
-
-[[GSDPG844]][[sthref16]][[sthref17]]
-
-
-Table C-4 `admin-object-resource` Attributes
-
-[width="172%",cols="9%,46%,45%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`jndi-name` |none |Specifies the JNDI name for the resource.
-
-|`res-type` |none |Specifies the fully qualified type of the resource.
-
-|`res-adapter` |none |Specifies the name of the inbound resource
-adapter.
-
-|`object-type` |`user` a|
-(optional) Defines the type of the resource. Allowed values are:
-
-* `system-all` - A system resource for all server instances and the
-domain application server.
-* `system-admin` - A system resource only for the domain application
-server.
-* `system-instance` - A system resource for all server instances only.
-* `user` - A user resource.
-
-|`enabled` |`true` |(optional) Determines whether this resource is
-enabled at runtime.
-|=======================================================================
-
-
-[[GSDPG845]][[sthref18]]
-
-
-[[properties]]
-Properties
-^^^^^^^^^^
-
-Properties of the `admin-object-resource` element are the names of
-setter methods of the class referenced by the `adminobject-class` of the
-`ra.xml` file. Some of the property names can be specified in the
-`adminobjectType` element.
-
-[[beaqw]][[GSDPG00090]][[as-context]]
-
-`as-context`
-~~~~~~~~~~~~
-
-Specifies the authentication mechanism used to authenticate the client.
-
-[[fvyos]][[GSDPG00343]][[superelements-5]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beato[`ior-security-config`] (`glassfish-ejb-jar.xml`)
-
-[[fvyom]][[GSDPG00344]][[subelements-5]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `as-context` element.
-
-[[GSDPG846]][[sthref19]][[fvyov]]
-
-
-Table C-5 `as-context` Subelements
-
-[width="100%",cols="14%,10%,76%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beaqx[`auth-method`]
-
-
- |only one |Specifies the authentication method. The only supported
-value is `USERNAME_PASSWORD`.
-
-a|
-link:#beawi[`realm`]
-
-
- |only one |Specifies the realm in which the user is authenticated.
-
-a|
-link:#beawq[`required`]
-
-
- |only one |Specifies whether the authentication method specified in the
-`auth-method` element must be used for client authentication.
-|=======================================================================
-
-
-[[gjizj]][[GSDPG00091]][[archive-name]]
-
-`archive-name`
-~~~~~~~~~~~~~~
-
-Specifies the name of the archive file. The value of the `archive-name`
-element is used to derive the default application name when
-`display-name` is not present in the `application.xml` file. The default
-application name is the `archive-name` value minus the file extension.
-For example, if `archive-name` is `foo.ear`, the default application
-name is `foo`.
-
-[[gjizb]][[GSDPG00345]][[superelements-6]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaxw[`glassfish-application`] (`glassfish-application.xml`)
-
-[[gjizg]][[GSDPG00346]][[subelements-6]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beaqx]][[GSDPG00092]][[auth-method]]
-
-`auth-method`
-~~~~~~~~~~~~~
-
-Specifies the authentication method.
-
-If the parent element is link:#beaqw[`as-context`], the only supported
-value is `USERNAME_PASSWORD`.
-
-If the parent element is link:#beauk[`login-config`], specifies the
-authentication mechanism for the web service endpoint. As a prerequisite
-to gaining access to any web resources protected by an authorization
-constraint, a user must be authenticated using the configured mechanism.
-
-[[fvyow]][[GSDPG00347]][[superelements-7]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beauk[`login-config`] (`glassfish-web.xml`),
-link:#beaqw[`as-context`] (`glassfish-ejb-jar.xml`)
-
-[[fvyop]][[GSDPG00348]][[subelements-7]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beaqy]][[GSDPG00093]][[auth-realm]]
-
-`auth-realm`
-~~~~~~~~~~~~
-
-JAAS is available on the ACC. Defines the optional configuration for a
-JAAS authentication realm. Authentication realms require
-provider-specific properties, which vary depending on what a particular
-implementation needs. For more information about how to define realms,
-see "link:../application-development-guide/securing-apps.html#GSDVG00118[Realm Configuration]" in GlassFish Server Open
-Source Edition Application Development Guide.
-
-[[fvyot]][[GSDPG00349]][[superelements-8]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#bearr[`client-container`] (`sun-acc.xml`)
-
-[[fvyor]][[GSDPG00350]][[subelements-8]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `auth-realm` element.
-
-[[GSDPG847]][[sthref20]][[fvyol]]
-
-
-Table C-6 `auth-realm` subelement
-
-[width="100%",cols="36%,14%,50%",options="header",]
-|==================================================================
-|Element |Required |Description
-a|
-link:#beavx[`property` (with attributes)]
-
-
- |zero or more |Specifies a property, which has a name and a value.
-|==================================================================
-
-
-[[fvyoy]][[GSDPG00351]][[attributes-1]]
-
-`Attributes`
-^^^^^^^^^^^^
-
-The following table describes attributes for the `auth-realm` element.
-
-[[GSDPG848]][[sthref21]][[fvypa]]
-
-
-Table C-7 `auth-realm` attributes
-
-[width="100%",cols="18%,13%,69%",options="header",]
-|======================================================================
-|Attribute |Default |Description
-|`name` |none |Defines the name of this realm.
-|`classname` |none |Defines the Java class which implements this realm.
-|======================================================================
-
-
-[[fvyox]][[GSDPG00352]][[example]]
-
-Example
-^^^^^^^
-
-Here is an example of the default file realm:
-
-[source,oac_no_warn]
-----
-<auth-realm name="file"
-   classname="com.sun.enterprise.security.auth.realm.file.FileRealm">
-   <property name="file" value="domain-dir/config/keyfile"/>
-   <property name="jaas-context" value="fileRealm"/>
-</auth-realm>
-----
-
-Which properties an `auth-realm` element uses depends on the value of
-the `auth-realm` element's `name` attribute. The file realm uses `file`
-and `jaas-context` properties. Other realms use different properties.
-See "link:../application-development-guide/securing-apps.html#GSDVG00118[Realm Configuration]" in GlassFish Server Open
-Source Edition Application Development Guide.
-
-[[giyjv]][[GSDPG00094]][[backend-principal]]
-
-`backend-principal`
-~~~~~~~~~~~~~~~~~~~
-
-Specifies the user name and password required by the Enterprise
-Information System (EIS).
-
-[[GSDPG849]][[sthref22]]
-
-
-[[superelements-9]]
-Superelements
-^^^^^^^^^^^^^
-
-link:#giyhy[`security-map`] (`glassfish-resources.xml`)
-
-[[GSDPG850]][[sthref23]]
-
-
-[[subelements-9]]
-Subelements
-^^^^^^^^^^^
-
-none
-
-[[GSDPG851]][[sthref24]]
-
-
-[[attributes-2]]
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `backend-principal`
-element.
-
-[[GSDPG852]][[sthref25]][[sthref26]]
-
-
-Table C-8 `backend-principal` Attributes
-
-[width="100%",cols="26%,17%,57%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`user-name` |none |Specifies the user name required by the EIS.
-
-|`password` |none |(optional) Specifies the password required by the
-EIS, if any.
-|=======================================================================
-
-
-[[beara]][[GSDPG00095]][[bean-cache]]
-
-`bean-cache`
-~~~~~~~~~~~~
-
-Specifies the entity bean cache properties. Used for entity beans and
-stateful session beans.
-
-[[fvyoq]][[GSDPG00353]][[superelements-10]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
-
-[[fvyon]][[GSDPG00354]][[subelements-10]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `bean-cache` element.
-
-[[GSDPG853]][[sthref27]][[fvypb]]
-
-
-Table C-9 `bean-cache` Subelements
-
-[width="100%",cols="35%,11%,54%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beauo[`max-cache-size`]
-
-
- |zero or one |Specifies the maximum number of beans allowable in cache.
-
-a|
-link:#beatp[`is-cache-overflow-allowed`]
-
-
- |zero or one |Deprecated.
-
-a|
-link:#bearg[`cache-idle-timeout-in-seconds`]
-
-
- |zero or one |Specifies the maximum time that a stateful session bean
-or entity bean is allowed to be idle in cache before being passivated.
-Default value is 10 minutes (600 seconds).
-
-a|
-link:#beawl[`removal-timeout-in-seconds`]
-
-
- |zero or one |Specifies the amount of time a bean remains before being
-removed. If `removal-timeout-in-seconds` is less than `idle-timeout`,
-the bean is removed without being passivated.
-
-a|
-link:#beaws[`resize-quantity`]
-
-
- |zero or one |Specifies the number of beans to be created if the pool
-is empty (subject to the `max-pool-size` limit). Values are from 0 to
-MAX_INTEGER.
-
-a|
-link:#beayp[`victim-selection-policy`]
-
-
- |zero or one |Specifies the algorithm that must be used by the
-container to pick victims. Applies only to stateful session beans.
-|=======================================================================
-
-
-[[fvyoo]][[GSDPG00355]][[example-1]]
-
-Example
-^^^^^^^
-
-[source,oac_no_warn]
-----
-<bean-cache>
-   <max-cache-size>100</max-cache-size>
-   <cache-resize-quantity>10</cache-resize-quantity>
-   <removal-timeout-in-seconds>3600</removal-timeout-in-seconds>
-   <victim-selection-policy>LRU</victim-selection-policy>
-      <cache-idle-timeout-in-seconds>600</cache-idle-timeout-in-seconds>
-   <removal-timeout-in-seconds>5400</removal-timeout-in-seconds>
-</bean-cache>
-----
-
-[[bearb]][[GSDPG00096]][[bean-pool]]
-
-`bean-pool`
-~~~~~~~~~~~
-
-Specifies the pool properties of stateless session beans, entity beans,
-and message-driven bean.
-
-[[fvypc]][[GSDPG00356]][[superelements-11]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
-
-[[fvypd]][[GSDPG00357]][[subelements-11]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `bean-pool` element.
-
-[[GSDPG854]][[sthref28]][[fvypg]]
-
-
-Table C-10 `bean-pool` Subelements
-
-[width="100%",cols="34%,11%,55%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beaxt[`steady-pool-size`]
-
-
- |zero or one |Specifies the initial and minimum number of beans
-maintained in the pool. Default is 32.
-
-a|
-link:#beaws[`resize-quantity`]
-
-
- |zero or one |Specifies the number of beans to be created if the pool
-is empty (subject to the `max-pool-size` limit). Values are from 0 to
-MAX_INTEGER.
-
-a|
-link:#beaup[`max-pool-size`]
-
-
- |zero or one |Specifies the maximum number of beans in the pool. Values
-are from 0 to MAX_INTEGER. Default is to the EJB container value or 60.
-
-a|
-link:#beauq[`max-wait-time-in-millis`]
-
-
- |zero or one |Deprecated.
-
-a|
-link:#beavr[`pool-idle-timeout-in-seconds`]
-
-
- |zero or one |Specifies the maximum time that a bean is allowed to be
-idle in the pool. After this time, the bean is removed. This is a hint
-to the server. Default time is 600 seconds (10 minutes).
-|=======================================================================
-
-
-[[fvypf]][[GSDPG00358]][[example-2]]
-
-Example
-^^^^^^^
-
-[source,oac_no_warn]
-----
-<bean-pool>
-   <steady-pool-size>10</steady-pool-size>
-   <resize-quantity>10</resize-quantity>
-   <max-pool-size>100</max-pool-size>
-   <pool-idle-timeout-in-seconds>600</pool-idle-timeout-in-seconds>
-</bean-pool>
-----
-
-[[beard]][[GSDPG00097]][[cache]]
-
-`cache`
-~~~~~~~
-
-Configures caching for web application components.
-
-[[fvype]][[GSDPG00359]][[superelements-12]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`)
-
-[[fvypl]][[GSDPG00360]][[subelements-12]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `cache` element.
-
-[[GSDPG855]][[sthref29]][[fvyrd]]
-
-
-Table C-11 `cache` Subelements
-
-[width="100%",cols="25%,12%,63%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beare[`cache-helper`]
-
-
- |zero or more |Specifies a custom class that implements the CacheHelper
-interface.
-
-a|
-link:#beasm[`default-helper`]
-
-
- |zero or one |Allows you to change the properties of the default,
-built-in link:#beare[`cache-helper`] class.
-
-a|
-link:#beavx[`property` (with attributes)]
-
-
- |zero or more |Specifies a cache property, which has a name and a
-value.
-
-a|
-link:#bearh[`cache-mapping`]
-
-
- |zero or more |Maps a URL pattern or a servlet name to its cacheability
-constraints.
-|=======================================================================
-
-
-[[fvypj]][[GSDPG00361]][[attributes-3]]
-
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `cache` element.
-
-[[GSDPG856]][[sthref30]][[fvyrt]]
-
-
-Table C-12 `cache` Attributes
-
-[width="172%",cols="14%,46%,40%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`max-entries` |`4096` |(optional) Specifies the maximum number of
-entries the cache can contain. Must be a positive integer.
-
-|`timeout-in-seconds` |`30` |(optional) Specifies the maximum amount of
-time in seconds that an entry can remain in the cache after it is
-created or refreshed. Can be overridden by a link:#beayg[`timeout`]
-element.
-
-|`enabled` |`true` |(optional) Determines whether servlet and JSP
-caching is enabled.
-|=======================================================================
-
-
-[[fvypx]][[GSDPG00362]][[properties-1]]
-
-Properties
-^^^^^^^^^^
-
-The following table describes properties for the `cache` element.
-
-[[GSDPG857]][[sthref31]][[fvyqr]]
-
-
-Table C-13 `cache` Properties
-
-[width="100%",cols="24%,23%,53%",options="header",]
-|=======================================================================
-|Property |Default |Description
-|`cacheClassName` |`com.sun.appserv.web.cache.LruCache` |Specifies the
-fully qualified name of the class that implements the cache
-functionality. See link:#fvyrn[Cache Class Names] for possible values.
-
-|`MultiLRUSegmentSize` |`4096` |Specifies the number of entries in a
-segment of the cache table that should have its own LRU (least recently
-used) list. Applicable only if `cacheClassName` is set to
-`com.sun.appserv.web.cache.MultiLruCache`.
-
-|`MaxSize` |unlimited; `Long.MAX_VALUE` |Specifies an upper bound on the
-cache memory size in bytes (KB or MB units). Example values are `32 KB`
-or `2 MB`. Applicable only if `cacheClassName` is set to
-`com.sun.appserv.web.cache.BoundedMultiLruCache`.
-|=======================================================================
-
-
-[[fvyrn]][[GSDPG00363]][[cache-class-names]]
-
-Cache Class Names
-^^^^^^^^^^^^^^^^^
-
-The following table lists possible values of the `cacheClassName`
-property.
-
-[[GSDPG858]][[sthref32]][[fvyph]]
-
-
-Table C-14 `cacheClassName` Values
-
-[width="100%",cols="31%,69%",options="header",]
-|=======================================================================
-|Value |Description
-|`com.sun.appserv.web.cache.LruCache` |A bounded cache with an LRU
-(least recently used) cache replacement policy.
-
-|`com.sun.appserv.web.cache.BaseCache` |An unbounded cache suitable if
-the maximum number of entries is known.
-
-|`com.sun.appserv.web.cache.MultiLruCache` |A cache suitable for a large
-number of entries (>4096). Uses the `MultiLRUSegmentSize` property.
-
-|`com.sun.appserv.web.cache.BoundedMultiLruCache` |A cache suitable for
-limiting the cache size by memory rather than number of entries. Uses
-the `MaxSize` property.
-|=======================================================================
-
-
-[[beare]][[GSDPG00098]][[cache-helper]]
-
-`cache-helper`
-~~~~~~~~~~~~~~
-
-Specifies a class that implements the
-com.sun.appserv.web.cache.CacheHelper interface.
-
-[[fvyqy]][[GSDPG00364]][[superelements-13]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beard[`cache`] (`glassfish-web.xml`)
-
-[[fvyru]][[GSDPG00365]][[subelements-13]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `cache-helper`
-element.
-
-[[GSDPG859]][[sthref33]][[fvyql]]
-
-
-Table C-15 `cache-helper` Subelements
-
-[width="100%",cols="25%,12%,63%",options="header",]
-|==================================================================
-|Element |Required |Description
-a|
-link:#beavx[`property` (with attributes)]
-
-
- |zero or more |Specifies a property, which has a name and a value.
-|==================================================================
-
-
-[[fvyqu]][[GSDPG00366]][[attributes-4]]
-
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `cache-helper` element.
-
-[[GSDPG860]][[sthref34]][[fvyrp]]
-
-
-Table C-16 `cache-helper` Attributes
-
-[width="181%",cols="8%,49%,43%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`name` |`default` |Specifies a unique name for the helper class, which
-is referenced in the link:#bearh[`cache-mapping`] element.
-
-|`class-name` |none |Specifies the fully qualified class name of the
-cache helper, which must implement the com.sun.appserv.web.CacheHelper
-interface.
-|=======================================================================
-
-
-[[bearf]][[GSDPG00099]][[cache-helper-ref]]
-
-`cache-helper-ref`
-~~~~~~~~~~~~~~~~~~
-
-Specifies the `name` of the link:#beare[`cache-helper`] used by the
-parent link:#bearh[`cache-mapping`] element.
-
-[[fvypq]][[GSDPG00367]][[superelements-14]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#bearh[`cache-mapping`] (`glassfish-web.xml`)
-
-[[fvyqs]][[GSDPG00368]][[subelements-14]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[bearg]][[GSDPG00100]][[cache-idle-timeout-in-seconds]]
-
-`cache-idle-timeout-in-seconds`
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies the maximum time that a bean can remain idle in the cache.
-After this amount of time, the container can passivate this bean. A
-value of `0` specifies that beans never become candidates for
-passivation. Default is 600.
-
-Applies to stateful session beans and entity beans.
-
-[[fvyqc]][[GSDPG00369]][[superelements-15]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beara[`bean-cache`] (`glassfish-ejb-jar.xml`)
-
-[[fvyqo]][[GSDPG00370]][[subelements-15]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[bearh]][[GSDPG00101]][[cache-mapping]]
-
-`cache-mapping`
-~~~~~~~~~~~~~~~
-
-Maps a URL pattern or a servlet name to its cacheability constraints.
-
-[[fvyqi]][[GSDPG00371]][[superelements-16]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beard[`cache`] (`glassfish-web.xml`)
-
-[[fvyqn]][[GSDPG00372]][[subelements-16]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `cache-mapping`
-element.
-
-[[GSDPG861]][[sthref35]][[fvypt]]
-
-
-Table C-17 `cache-mapping` Subelements
-
-[width="100%",cols="20%,30%,50%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beaxo[`servlet-name`]
-
-
- |requires one `servlet-name` or `url-pattern` |Contains the name of a
-servlet.
-
-a|
-link:#beayl[`url-pattern`]
-
-
- |requires one `servlet-name` or `url-pattern` |Contains a servlet URL
-pattern for which caching is enabled.
-
-a|
-link:#bearf[`cache-helper-ref`]
-
-
- |required if `dispatcher`, `timeout`, `refresh-field`, `http-method`,
-`key-field`, and `constraint-field` are not used |Contains the `name` of
-the link:#beare[`cache-helper`] used by the parent `cache-mapping`
-element.
-
-a|
-link:#beasp[`dispatcher`]
-
-
- |zero or one if `cache-helper-ref` is not used |Contains a
-comma-separated list of `RequestDispatcher` methods for which caching is
-enabled.
-
-a|
-link:#beayg[`timeout`]
-
-
- |zero or one if `cache-helper-ref` is not used |Contains the
-link:#bearh[`cache-mapping`] specific maximum amount of time in seconds
-that an entry can remain in the cache after it is created or refreshed.
-
-a|
-link:#beawj[`refresh-field`]
-
-
- |zero or one if `cache-helper-ref` is not used |Specifies a field that
-gives the application component a programmatic way to refresh a cached
-entry.
-
-a|
-link:#beatk[`http-method`]
-
-
- |zero or more if `cache-helper-ref` is not used |Contains an HTTP
-method that is eligible for caching.
-
-a|
-link:#beatz[`key-field`]
-
-
- |zero or more if `cache-helper-ref` is not used |Specifies a component
-of the key used to look up and extract cache entries.
-
-a|
-link:#bease[`constraint-field`]
-
-
- |zero or more if `cache-helper-ref` is not used |Specifies a
-cacheability constraint for the given `url-pattern` or `servlet-name`.
-|=======================================================================
-
-
-[[beari]][[GSDPG00102]][[call-property]]
-
-`call-property`
-~~~~~~~~~~~~~~~
-
-Specifies JAX-RPC property values that can be set on a
-`javax.xml.rpc.Call` object before it is returned to the web service
-client. The property names can be any properties supported by the
-JAX-RPC `Call` implementation.
-
-[[fvyri]][[GSDPG00373]][[superelements-17]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beavt[`port-info`], link:#beaxk[`service-ref`]
-(`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
-`glassfish-application-client.xml`)
-
-[[fvyqp]][[GSDPG00374]][[subelements-17]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `call-property`
-element.
-
-[[GSDPG862]][[sthref36]][[fvyrw]]
-
-
-Table C-18 `call-property` subelements
-
-[width="100%",cols="24%,12%,64%",options="header",]
-|=============================================
-|Element |Required |Description
-a|
-link:#beavf[`name`]
-
-
- |only one |Specifies the name of the entity.
-a|
-link:#beayo[`value`]
-
-
- |only one |Specifies the value of the entity.
-|=============================================
-
-
-[[bearj]][[GSDPG00103]][[caller-propagation]]
-
-`caller-propagation`
-~~~~~~~~~~~~~~~~~~~~
-
-Specifies whether the target accepts propagated caller identities. The
-values are `NONE`, `SUPPORTED`, or `REQUIRED`.
-
-[[fvyqj]][[GSDPG00375]][[superelements-18]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaxb[`sas-context`] (`glassfish-ejb-jar.xml`)
-
-[[fvyrb]][[GSDPG00376]][[subelements-18]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beark]][[GSDPG00104]][[cert-db]]
-
-`cert-db`
-~~~~~~~~~
-
-Not implemented. Included for backward compatibility only. Attribute
-values are ignored.
-
-[[fvyqa]][[GSDPG00377]][[superelements-19]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaxf[`security`] (`sun-acc.xml`)
-
-[[fvyre]][[GSDPG00378]][[subelements-19]]
-
-Subelements
-^^^^^^^^^^^
-
-none
-
-[[fvyrr]][[GSDPG00379]][[attributes-5]]
-
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `cert-db` element.
-
-[[GSDPG863]][[sthref37]][[fvypo]]
-
-
-Table C-19 `cert-db` attributes
-
-[width="100%",cols="14%,11%,75%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`path` |none |Specifies the absolute path of the certificate database.
-
-|`password` |none |Specifies the password to access the certificate
-database.
-|=======================================================================
-
-
-[[bearl]][[GSDPG00105]][[check-all-at-commit]]
-
-`check-all-at-commit`
-~~~~~~~~~~~~~~~~~~~~~
-
-This element is not implemented. Do not use.
-
-[[fvyrj]][[GSDPG00380]][[superelements-20]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beasd[`consistency`] (`sun-cmp-mappings.xml`)
-
-[[bearm]][[GSDPG00106]][[check-modified-at-commit]]
-
-`check-modified-at-commit`
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Checks concurrent modification of fields in modified beans at commit
-time.
-
-[[fvyqf]][[GSDPG00381]][[superelements-21]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beasd[`consistency`] (`sun-cmp-mappings.xml`)
-
-[[fvyqz]][[GSDPG00382]][[subelements-20]]
-
-Subelements
-^^^^^^^^^^^
-
-none - element is present or absent
-
-[[bearn]][[GSDPG00107]][[check-version-of-accessed-instances]]
-
-`check-version-of-accessed-instances`
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Checks the version column of the modified beans.
-
-Version consistency allows the bean state to be cached between
-transactions instead of read from a database. The bean state is verified
-by primary key and version column values. This occurs during a custom
-query (for dirty instances only) or commit (for both clean and dirty
-instances).
-
-The version column must be a numeric type, and must be in the primary
-table. You must provide appropriate update triggers for this column.
-
-[[fvyqt]][[GSDPG00383]][[superelements-22]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beasd[`consistency`] (`sun-cmp-mappings.xml`)
-
-[[fvypp]][[GSDPG00384]][[subelements-21]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the
-`check-version-of-accessed-instances` element.
-
-[[GSDPG864]][[sthref38]][[fvyrq]]
-
-
-Table C-20 `check-version-of-accessed-instances` Subelements
-
-[width="100%",cols="33%,11%,56%",options="header",]
-|====================================================
-|Element |Required |Description
-a|
-link:#bearz[`column-name`]
-
-
- |only one |Specifies the name of the version column.
-|====================================================
-
-
-[[bearo]][[GSDPG00108]][[checkpoint-at-end-of-method]]
-
-`checkpoint-at-end-of-method`
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies that the stateful session bean state is checkpointed, or
-persisted, after the specified methods are executed. The
-`availability-enabled` attribute of the parent link:#beass[`ejb`]
-element must be set to `true`.
-
-[[fvypr]][[GSDPG00385]][[superelements-23]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
-
-[[fvyqe]][[GSDPG00386]][[subelements-22]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the
-`checkpoint-at-end-of-method` element.
-
-[[GSDPG865]][[sthref39]][[fvyqx]]
-
-
-Table C-21 `checkpoint-at-end-of-method` Subelements
-
-[width="100%",cols="25%,13%,62%",options="header",]
-|======================================
-|Element |Required |Description
-a|
-link:#beauz[`method`]
-
-
- |one or more |Specifies a bean method.
-|======================================
-
-
-[[bearp]][[GSDPG00109]][[checkpointed-methods]]
-
-`checkpointed-methods`
-~~~~~~~~~~~~~~~~~~~~~~
-
-Deprecated. Supported for backward compatibility. Use
-link:#bearo[`checkpoint-at-end-of-method`] instead.
-
-[[fvyrk]][[GSDPG00387]][[superelements-24]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
-
-[[bearq]][[GSDPG00110]][[class-loader]]
-
-`class-loader`
-~~~~~~~~~~~~~~
-
-Configures the class loader for the web module.
-
-[[fvyrv]][[GSDPG00388]][[superelements-25]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`)
-
-[[fvyrh]][[GSDPG00389]][[subelements-23]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `class-loader`
-element.
-
-[[GSDPG866]][[sthref40]][[fvyqg]]
-
-
-Table C-22 `class-loader` Subelements
-
-[width="100%",cols="25%,12%,63%",options="header",]
-|==================================================================
-|Element |Required |Description
-a|
-link:#beavx[`property` (with attributes)]
-
-
- |zero or more |Specifies a property, which has a name and a value.
-|==================================================================
-
-
-[[fvyrl]][[GSDPG00390]][[attributes-6]]
-
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `class-loader` element.
-
-[[GSDPG867]][[sthref41]][[fvyrs]]
-
-
-Table C-23 `class-loader` Attributes
-
-[width="172%",cols="17%,46%,37%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`extra-class-path` |null a|
-(optional) Specifies a colon or semicolon separated list of additional
-classpaths for this web module. Paths can be absolute or relative to the
-web module's root, for example:
-
-[source,oac_no_warn]
-----
-extra-class-path="WEB-INF/lib/extra/extra.jar"
-----
-
-|`delegate` |`true` a|
-(optional) If `true`, the web module follows the standard class loader
-delegation model and delegates to its parent class loader first before
-looking in the local class loader. You must set this to `true` for a web
-module that accesses EJB components or that acts as a web service client
-or endpoint.
-
-If `false`, the web module follows the delegation model specified in the
-Servlet specification and looks in its class loader before looking in
-the parent class loader. It's safe to set this to `false` only for a web
-module that does not interact with any other modules.
-
-For a number of packages, including `java.*` and `javax.*`, symbol
-resolution is always delegated to the parent class loader regardless of
-the delegate setting. This prevents applications from overriding core
-Java runtime classes or changing the API versions of specifications that
-are part of the Java EE platform.
-
-|`dynamic-reload-``interval` | + |(optional) Not implemented. Included
-for backward compatibility with previous Oracle Web Server versions.
-|=======================================================================
-
-
-
-[NOTE]
-=======================================================================
-
-If the `delegate` attribute is set to `false`, the class loader
-delegation behavior complies with the Servlet 2.4 specification, section
-9.7.2. If set to its default value of `true`, classes and resources
-residing in container-wide library JAR files are loaded in preference to
-classes and resources packaged within the WAR file.
-
-Portable programs that use this element should not be packaged with any
-classes or interfaces that are a part of the Java EE specification. The
-behavior of a program that includes such classes or interfaces in its
-WAR file is undefined.
-
-=======================================================================
-
-
-[[gcfko]][[GSDPG00391]][[properties-2]]
-
-Properties
-^^^^^^^^^^
-
-The following table describes properties for the `class-loader` element.
-
-[[GSDPG868]][[sthref42]][[gcfjs]]
-
-
-Table C-24 `class-loader` Properties
-
-[width="181%",cols="15%,49%,36%",options="header",]
-|=======================================================================
-|Property |Default |Description
-|`ignoreHiddenJarFiles` |`false` |If `true`, specifies that all JAR and
-ZIP files in the `WEB-INF/lib` directory that start with a period (`.`)
-are ignored by the class loader.
-|=======================================================================
-
-
-[[bearr]][[GSDPG00111]][[client-container]]
-
-`client-container`
-~~~~~~~~~~~~~~~~~~
-
-Defines the GlassFish Server specific configuration for the application
-client container. This is the root element; there can only be one
-`client-container` element in a `sun-acc.xml` file. See
-link:dd-files.html#beaqp[The sun-acc.xml File].
-
-[[fvypv]][[GSDPG00392]][[superelements-26]]
-
-Superelements
-^^^^^^^^^^^^^
-
-none
-
-[[fvypk]][[GSDPG00393]][[subelements-24]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `client-container`
-element.
-
-[[GSDPG869]][[sthref43]][[fvypm]]
-
-
-Table C-25 `client-container` Subelements
-
-[width="100%",cols="28%,12%,60%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beaye[`target-server`]
-
-
- |one or more a|
-Specifies the IIOP listener for the target server. Also specifies IIOP
-endpoints used for load balancing. If the GlassFish Server instance on
-which the application client is deployed participates in a cluster,
-GlassFish Server finds all currently active IIOP endpoints in the
-cluster automatically. However, a client should have at least two
-endpoints specified for bootstrapping purposes, in case one of the
-endpoints has failed.
-
-A listener or endpoint is in the form host`:`port, where the host is an
-IP address or host name, and the port specifies the port number.
-
-a|
-link:#beaqy[`auth-realm`]
-
-
- |zero or one |Specifies the optional configuration for JAAS
-authentication realm.
-
-a|
-link:#bears[`client-credential`]
-
-
- |zero or one |Specifies the default client credential that is sent to
-the server.
-
-a|
-link:#beauj[`log-service`]
-
-
- |zero or one |Specifies the default log file and the severity level of
-the message.
-
-a|
-link:#beauy[`message-security-config`]
-
-
- |zero or more |Specifies configurations for message security providers.
-
-a|
-link:#beavx[`property` (with attributes)]
-
-
- |zero or more |Specifies a property, which has a name and a value.
-|=======================================================================
-
-
-[[fvyqq]][[GSDPG00394]][[attributes-7]]
-
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `client-container`
-element.
-
-[[GSDPG870]][[sthref44]][[fvyqb]]
-
-
-Table C-26 `client-container` Attributes
-
-[width="172%",cols="11%,46%,43%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`send-password` |`true` |If `true`, specifies that client
-authentication credentials must be sent to the server. Without
-authentication credentials, all access to protected EJB components
-results in exceptions.
-|=======================================================================
-
-
-[[fvyrm]][[GSDPG00395]][[properties-3]]
-
-Properties
-^^^^^^^^^^
-
-The following table describes properties for the `client-container`
-element.
-
-[[GSDPG871]][[sthref45]][[fvyqm]]
-
-
-Table C-27 `client-container` Properties
-
-[width="172%",cols="22%,46%,32%",options="header",]
-|=======================================================================
-|Property |Default |Description
-|`com.sun.appserv.iiop.endpoints` |none |Specifies a comma-separated
-list of one or more IIOP endpoints used for load balancing. An IIOP
-endpoint is in the form host`:`port, where the host is an IP address or
-host name, and the port specifies the port number. Deprecated. Use
-link:#beaye[`target-server`] elements instead.
-|=======================================================================
-
-
-[[bears]][[GSDPG00112]][[client-credential]]
-
-`client-credential`
-~~~~~~~~~~~~~~~~~~~
-
-Default client credentials that are sent to the server. If this element
-is present, the credentials are automatically sent to the server,
-without prompting the user for the user name and password on the client
-side.
-
-[[fvyqk]][[GSDPG00396]][[superelements-27]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#bearr[`client-container`] (`sun-acc.xml`)
-
-[[fvyqd]][[GSDPG00397]][[subelements-25]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `client-credential`
-element.
-
-[[GSDPG872]][[sthref46]][[fvyro]]
-
-
-Table C-28 `client-credential` subelement
-
-[width="100%",cols="37%,14%,49%",options="header",]
-|==================================================================
-|Element |Required |Description
-a|
-link:#beavx[`property` (with attributes)]
-
-
- |zero or more |Specifies a property, which has a name and a value.
-|==================================================================
-
-
-[[fvyqv]][[GSDPG00398]][[attributes-8]]
-
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `client-credential`
-element.
-
-[[GSDPG873]][[sthref47]][[fvypi]]
-
-
-Table C-29 `client-credential` attributes
-
-[width="100%",cols="12%,14%,74%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`user-name` |none |The user name used to authenticate the Application
-client container.
-
-|`password` |none |The password used to authenticate the Application
-client container.
-
-|`realm` |default realm for the domain |(optional) The realm (specified
-by name) where credentials are to be resolved.
-|=======================================================================
-
-
-[[beart]][[GSDPG00113]][[cmp]]
-
-`cmp`
-~~~~~
-
-Describes runtime information for a CMP entity bean object for EJB 1.1
-and EJB 2.1 beans.
-
-[[fvyrg]][[GSDPG00399]][[superelements-28]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
-
-[[fvyqw]][[GSDPG00400]][[subelements-26]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `cmp` element.
-
-[[GSDPG874]][[sthref48]][[fvypw]]
-
-
-Table C-30 `cmp` Subelements
-
-[width="100%",cols="22%,11%,67%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beaun[`mapping-properties`]
-
-
- |zero or one |This element is not implemented.
-
-a|
-link:#beatq[`is-one-one-cmp`]
-
-
- |zero or one |This element is not implemented.
-
-a|
-link:#beavk[`one-one-finders`]
-
-
- |zero or one |Describes the finders for CMP 1.1 beans.
-
-a|
-link:#beavu[`prefetch-disabled`]
-
-
- |zero or one |Disables prefetching of entity bean states for the
-specified query methods.
-|=======================================================================
-
-
-[[bearu]][[GSDPG00114]][[cmp-field-mapping]]
-
-`cmp-field-mapping`
-~~~~~~~~~~~~~~~~~~~
-
-The `cmp-field-mapping` element associates a field with one or more
-columns to which it maps. The column can be from a bean's primary table
-or any defined secondary table. If a field is mapped to multiple
-columns, the column listed first in this element is used as a source for
-getting the value from the database. The columns are updated in the
-order they appear. There is one `cmp-field-mapping` element for each
-`cmp-field` element defined in the `ejb-jar.xml` file.
-
-[[fvypy]][[GSDPG00401]][[superelements-29]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beasy[`entity-mapping`] (`sun-cmp-mappings.xml`)
-
-[[fvyra]][[GSDPG00402]][[subelements-27]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `cmp-field-mapping`
-element.
-
-[[GSDPG875]][[sthref49]][[fvyqh]]
-
-
-Table C-31 `cmp-field-mapping` Subelements
-
-[width="100%",cols="15%,12%,73%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beatd[`field-name`]
-
-
- |only one |Specifies the Java identifier of a field. This identifier
-must match the value of the `field-name` subelement of the `cmp-field`
-that is being mapped.
-
-a|
-link:#bearz[`column-name`]
-
-
- |one or more |Specifies the name of a column from the primary table, or
-the qualified table name (TABLE.COLUMN) of a column from a secondary or
-related table.
-
-a|
-link:#beawh[`read-only`]
-
-
- |zero or one |Specifies that a field is read-only.
-
-a|
-link:#beatc[`fetched-with`]
-
-
- |zero or one |Specifies the fetch group for this CMP field's mapping.
-|=======================================================================
-
-
-[[bearv]][[GSDPG00115]][[cmp-resource]]
-
-`cmp-resource`
-~~~~~~~~~~~~~~
-
-Specifies the database to be used for storing CMP beans. For more
-information about this element, see "link:../application-development-guide/container_managed-persistence.html#GSDVG00154[Configuring the
-CMP Resource]" in GlassFish Server Open Source Edition Application
-Development Guide.
-
-[[fvypz]][[GSDPG00403]][[superelements-30]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beasx[`enterprise-beans`] (`glassfish-ejb-jar.xml`)
-
-[[fvyrf]][[GSDPG00404]][[subelements-28]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `cmp-resource`
-element.
-
-[[GSDPG876]][[sthref50]][[fvyps]]
-
-
-Table C-32 `cmp-resource` Subelements
-
-[width="100%",cols="33%,12%,55%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beatw[`jndi-name`]
-
-
- |only one |Specifies the absolute `jndi-name` of a JDBC resource.
-
-a|
-link:#beasn[`default-resource-principal`]
-
-
- |zero or one |Specifies the default runtime bindings of a resource
-reference.
-
-a|
-link:#beavy[`property` (with subelements)]
-
-
- |zero or more |Specifies a property name and value. Used to configure
-`PersistenceManagerFactory` properties.
-
-a|
-link:#beasi[`create-tables-at-deploy`]
-
-
- |zero or one |If `true`, specifies that database tables are created for
-beans that are automatically mapped by the EJB container.
-
-a|
-link:#beasq[`drop-tables-at-undeploy`]
-
-
- |zero or one |If `true`, specifies that database tables that were
-automatically created when the bean(s) were last deployed are dropped
-when the bean(s) are undeployed.
-
-a|
-link:#beask[`database-vendor-name`]
-
-
- |zero or one |Specifies the name of the database vendor for which
-tables can be created.
-
-a|
-link:#beaxd[`schema-generator-properties`]
-
-
- |zero or one |Specifies field-specific type mappings and allows you to
-set the `use-unique-table-names` property.
-|=======================================================================
-
-
-[[bearw]][[GSDPG00116]][[cmr-field-mapping]]
-
-`cmr-field-mapping`
-~~~~~~~~~~~~~~~~~~~
-
-A container-managed relationship field has a name and one or more column
-pairs that define the relationship. There is one `cmr-field-mapping`
-element for each `cmr-field` element in the `ejb-jar.xml` file. A
-relationship can also participate in a fetch group.
-
-[[fvyrc]][[GSDPG00405]][[superelements-31]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beasy[`entity-mapping`] (`sun-cmp-mappings.xml`)
-
-[[fvypu]][[GSDPG00406]][[subelements-29]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `cmr-field-mapping`
-element.
-
-[[GSDPG877]][[sthref51]][[fvypn]]
-
-
-Table C-33 `cmr-field-mapping` Subelements
-
-[width="100%",cols="18%,12%,70%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#bearx[`cmr-field-name`]
-
-
- |only one |Specifies the Java identifier of a field. Must match the
-value of the `cmr-field-name` subelement of the `cmr-field` that is
-being mapped.
-
-a|
-link:#beasa[`column-pair`]
-
-
- |one or more |Specifies the pair of columns that determine the
-relationship between two database tables.
-
-a|
-link:#beatc[`fetched-with`]
-
-
- |zero or one |Specifies the fetch group for this CMR field's
-relationship.
-|=======================================================================
-
-
-[[bearx]][[GSDPG00117]][[cmr-field-name]]
-
-`cmr-field-name`
-~~~~~~~~~~~~~~~~
-
-Specifies the Java identifier of a field. Must match the value of the
-`cmr-field-name` subelement of the `cmr-field` element in the
-`ejb-jar.xml` file.
-
-[[fvyrx]][[GSDPG00407]][[superelements-32]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#bearw[`cmr-field-mapping`] (`sun-cmp-mappings.xml`)
-
-[[fvyry]][[GSDPG00408]][[subelements-30]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beary]][[GSDPG00118]][[cmt-timeout-in-seconds]]
-
-`cmt-timeout-in-seconds`
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-Overrides the Transaction Timeout setting of the Transaction Service for
-an individual bean. The default value, `0`, specifies that the default
-Transaction Service timeout is used. If positive, this value is used for
-all methods in the bean that start a new container-managed transaction.
-This value is not used if the bean joins a client transaction.
-
-[[fvysf]][[GSDPG00409]][[superelements-33]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
-
-[[fvysc]][[GSDPG00410]][[subelements-31]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[bearz]][[GSDPG00119]][[column-name]]
-
-`column-name`
-~~~~~~~~~~~~~
-
-Specifies the name of a column from the primary table, or the qualified
-table name (TABLE.COLUMN) of a column from a secondary or related table.
-
-[[fvyse]][[GSDPG00411]][[superelements-34]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#bearn[`check-version-of-accessed-instances`],
-link:#bearu[`cmp-field-mapping`], link:#beasa[`column-pair`]
-(`sun-cmp-mappings.xml`)
-
-[[fvysb]][[GSDPG00412]][[subelements-32]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beasa]][[GSDPG00120]][[column-pair]]
-
-`column-pair`
-~~~~~~~~~~~~~
-
-Specifies the pair of columns that determine the relationship between
-two database tables. Each `column-pair` must contain exactly two
-`column-name` subelements, which specify the column's names. The first
-`column-name` element names the table that this bean is mapped to, and
-the second `column-name` names the column in the related table.
-
-[[fvysa]][[GSDPG00413]][[superelements-35]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#bearw[`cmr-field-mapping`], link:#beaxe[`secondary-table`]
-(`sun-cmp-mappings.xml`)
-
-[[fvysg]][[GSDPG00414]][[subelements-33]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `column-pair` element.
-
-[[GSDPG878]][[sthref52]][[fvysh]]
-
-
-Table C-34 `column-pair` Subelements
-
-[width="100%",cols="14%,10%,76%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#bearz[`column-name`]
-
-
- |two |Specifies the name of a column from the primary table, or the
-qualified table name (TABLE.COLUMN) of a column from a secondary or
-related table.
-|=======================================================================
-
-
-[[beasb]][[GSDPG00121]][[commit-option]]
-
-`commit-option`
-~~~~~~~~~~~~~~~
-
-Specifies the commit option used on transaction completion. Valid values
-for GlassFish Server are `B` or `C`. Default value is `B`. Applies to
-entity beans.
-
-
-[NOTE]
-==================================================================
-
-Commit option A is not supported for this GlassFish Server release.
-
-==================================================================
-
-
-[[fvyrz]][[GSDPG00415]][[superelements-36]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
-
-[[fvysd]][[GSDPG00416]][[subelements-34]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[gjjak]][[GSDPG00122]][[compatibility]]
-
-`compatibility`
-~~~~~~~~~~~~~~~
-
-Specifies the GlassFish Server release with which to be backward
-compatible in terms of JAR visibility requirements for applications. The
-current allowed value is `v2`, which refers to GlassFish Server version
-2 or GlassFish Server version 9.1 or 9.1.1. Starting in Java EE 6, the
-Java EE specification imposes stricter requirements than Java EE 5 did
-on which JAR files can be visible to various modules within an EAR file.
-Setting this element to `v2` removes these Java EE 6 and later
-restrictions.
-
-[[gjjaf]][[GSDPG00417]][[superelements-37]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaxw[`glassfish-application`] (`glassfish-application.xml`),
-link:#beaya[`glassfish-ejb-jar`] (`glassfish-ejb-jar.xml`)
-
-[[gjjag]][[GSDPG00418]][[subelements-35]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beasc]][[GSDPG00123]][[confidentiality]]
-
-`confidentiality`
-~~~~~~~~~~~~~~~~~
-
-Specifies if the target supports privacy-protected messages. The values
-are `NONE`, `SUPPORTED`, or `REQUIRED`.
-
-[[fvysi]][[GSDPG00419]][[superelements-38]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beayh[`transport-config`] (`glassfish-ejb-jar.xml`)
-
-[[fvysk]][[GSDPG00420]][[subelements-36]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[giygu]][[GSDPG00124]][[connector-connection-pool]]
-
-`connector-connection-pool`
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Defines a connector connection pool.
-
-[[GSDPG879]][[sthref53]]
-
-
-[[superelements-39]]
-Superelements
-^^^^^^^^^^^^^
-
-link:#giyiy[`resources`] (`glassfish-resources.xml`)
-
-[[GSDPG880]][[sthref54]]
-
-
-[[subelements-37]]
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the
-`connector-connection-pool` element.
-
-[[GSDPG881]][[sthref55]][[sthref56]]
-
-
-Table C-35 `connector-connection-pool` Subelements
-
-[width="100%",cols="25%,12%,63%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beaso[`description`]
-
-
- |zero or one |Contains a text description of this element.
-
-a|
-link:#giyhy[`security-map`]
-
-
- |zero or more |Maps the principal received during servlet or EJB
-authentication to the credentials accepted by the EIS.
-
-a|
-link:#beavx[`property` (with attributes)]
-
-
- |zero or more |Specifies a property or a variable.
-|=======================================================================
-
-
-[[GSDPG882]][[sthref57]]
-
-
-[[attributes-9]]
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the
-`connector-connection-pool` element. Changing the following attributes
-requires a server restart or the redeployment or disabling and
-re-enabling of applications that refer to the resource:
-`resource-adapter-name`, `connection-definition-name`,
-`transaction-support`, `associate-with-thread`,
-`lazy-connection-association`, and `lazy-connection-enlistment`.
-
-[[GSDPG883]][[sthref58]][[sthref59]]
-
-
-Table C-36 `connector-connection-pool` Attributes
-
-[width="172%",cols="25%,46%,29%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`name` |none |Specifies the name of the connection pool. A
-link:#giyhv[`connector-resource`] element's `pool-name` attribute refers
-to this `name`.
-
-|`resource``-adapter``-name` |none |Specifies the name of the deployed
-connector module or application. If no name is specified during
-deployment, the name of the `.rar` file is used. If the resource adapter
-is embedded in an application, then it is app_name`#`rar_name.
-
-|`connection``-definition``-name` |none |Specifies a unique name,
-identifying a resource adapter's `connection-definition` element in the
-`ra.xml` file. This is usually the `connectionfactory-interface` of the
-`connection-definition` element.
-
-|`steady-pool``-size` |`8` |(optional) Specifies the initial and minimum
-number of connections maintained in the pool.
-
-|`max-pool-size` |`32` |(optional) Specifies the maximum number of
-connections that can be created to satisfy client requests.
-
-|`max-wait-time-in``-millis` |`60000` |(optional) Specifies the amount
-of time, in milliseconds, that the caller is willing to wait for a
-connection. If `0`, the caller is blocked indefinitely until a resource
-is available or an error occurs.
-
-|`pool-resize``-quantity` |`2` a|
-(optional) Specifies the number of idle connections to be destroyed if
-the existing number of connections is above the `steady-pool-size`
-(subject to the `max-pool-size` limit).
-
-This is enforced periodically at the `idle-timeout-in-seconds` interval.
-An idle connection is one that has not been used for a period of
-`idle-timeout-in-seconds`. When the pool size reaches
-`steady-pool-size`, connection removal stops.
-
-|`idle-timeout``-in-seconds` |`300` |(optional) Specifies the maximum
-time that a connection can remain idle in the pool. After this amount of
-time, the pool can close this connection.
-
-|`fail-all-``connections` |`false` |(optional) If `true`, closes all
-connections in the pool if a single validation check fails.
-
-|`transaction``-support` |none a|
-(optional) Specifies the transaction support for this connection pool.
-Overrides the transaction support defined in the resource adapter in a
-downward compatible way: supports a transaction level lower than or
-equal to the resource adapter's, but not higher. Allowed values in
-descending order are:
-
-* `XATransaction` - Supports distributed transactions.
-* `LocalTransaction` - Supports local transactions only.
-* `NoTransaction` - No transaction support.
-
-|`is-connection-``validation-``required` |`false` |(optional) Specifies
-whether connections have to be validated before being given to the
-application. If a resource's validation fails, it is destroyed, and a
-new resource is created and returned.
-
-|`validate-atmost-once-``period-in-seconds` |`0` |Specifies the time
-interval within which a connection is validated at most once. Minimizes
-the number of validation calls. A value of zero allows unlimited
-validation calls.
-
-|`connection-``leak-timeout-``in-seconds` |`0` |Detects potential
-connection leaks by the application. A connection that is not returned
-back to the pool by the application within the specified period is
-assumed to be potentially leaking, and a stack trace of the caller is
-logged. A zero value disables leak detection. A nonzero value enables
-leak tracing.
-
-|`connection-leak-``reclaim` |`false` |If `true`, the pool will reclaim
-a connection after `connection-leak-timeout-in-seconds` occurs.
-
-|`connection-creation-``retry-attempts` |`0` |Specifies the number of
-attempts to create a new connection.
-
-|`connection-creation-``retry-interval-``in-seconds` |`10` |Specifies
-the time interval between attempts to create a connection when
-`connection-creation-retry-attempts` is greater than `0`.
-
-|`lazy-connection-``enlistment` |`false` |If `true`, a connection is not
-enlisted in a transaction until it is used. If `false`, any connection
-object available to a transaction is enlisted in the transaction.
-
-|`lazy-connection-``association` |`false` |If `true`, a physical
-connection is not associated with a logical connection until it is used.
-If `false`, a physical connection is associated with a logical
-connection even before it is used.
-
-|`associate-with-thread` |`false` a|
-If `true`, allows connections to be saved as `ThreadLocal` in the
-calling thread. Connections get reclaimed only when the calling thread
-dies or when the calling thread is not in use and the pool has run out
-of connections. If `false`, the thread must obtain a connection from the
-pool each time the thread requires a connection.
-
-This attribute associates connections with a thread such that when the
-same thread is in need of connections, it can reuse the connections
-already associated with that thread. In this case, the overhead of
-getting connections from the pool is avoided. However, when this value
-is set to `true`, you should verify that the value of the
-`max-pool-size` attribute is comparable to the `max-thread-pool-size`
-attribute of the associated thread pool. If the `max-thread-pool-size`
-value is much higher than the `max-pool-size` value, a lot of time is
-spent associating connections with a new thread after dissociating them
-from an older one. Use this attribute in cases where the thread pool
-should reuse connections to avoid this overhead.
-
-| | |
-
-|`match-connections` |`true` |If `true`, enables connection matching.
-You can set to `false` if connections are homogeneous.
-
-|`max-connection-``usage-count` |`0` |Specifies the number of times a
-connections is reused by the pool, after which it is closed. A zero
-value disables this feature.
-
-|`ping` |`false` |(optional) Specifies whether to ping the pool during
-pool creation or reconfiguration to identify and warn of any erroneous
-attribute values.
-
-|`pooling` |`true` |(optional) If `false`, disables connection pooling.
-|=======================================================================
-
-
-[[GSDPG884]][[sthref60]]
-
-
-[[properties-4]]
-Properties
-^^^^^^^^^^
-
-Most properties of the `connector-connection-pool` element are the names
-of setter methods of the `managedconnectionfactory-class` element in the
-`ra.xml` file. Properties of the `connector-connection-pool` element
-override the `ManagedConnectionFactory` JavaBean configuration settings.
-
-All but the last four properties in the following table are
-`connector-connection-pool` properties of `jmsra`, the resource adapter
-used to communicate with the Open Message Queue software. For a complete
-list of the available properties (called administered object attributes
-in the Message Queue software), see the link:../../openmq/mq-admin-guide/toc.html#GMADG[Open Message Queue
-Administration Guide].
-
-Changes to `connector-connection-pool` properties require a server
-restart.
-
-[[GSDPG885]][[sthref61]][[sthref62]]
-
-
-Table C-37 `connector-connection-pool` Properties
-
-[width="100%",cols="26%,11%,63%",options="header",]
-|=======================================================================
-|Property |Default |Description
-|`AddressList` |none |Specifies a list of host/port combinations of the
-Message Queue software. For JMS resources of the Type
-`jakarta.jms.TopicConnectionFactory` or
-`jakarta.jms.QueueConnectionFactory`.
-
-|`ClientId` |none a|
-Specifies the JMS Client Identifier to be associated with a `Connection`
-created using the `createTopicConnection` method of the
-`TopicConnectionFactory` class. For JMS resources of the Type
-`jakarta.jms.TopicConnectionFactory` .
-
-Durable subscription names are unique and only valid within the scope of
-a client identifier. To create or reactivate a durable subscriber, the
-connection must have a valid client identifier. The JMS specification
-ensures that client identifiers are unique and that a given client
-identifier is allowed to be used by only one active connection at a
-time.
-
-|`UserName` |`guest` |Specifies the user name for connecting to the
-Message Queue software. For JMS resources of the Type
-`jakarta.jms.TopicConnectionFactory` or
-`jakarta.jms.QueueConnectionFactory`.
-
-|`Password` |`guest` |Specifies the password for connecting to the
-Message Queue software. For JMS resources of the Type
-`jakarta.jms.TopicConnectionFactory` or
-`jakarta.jms.QueueConnectionFactory`.
-
-|`ReconnectAttempts` |`6` |Specifies the number of attempts to connect
-(or reconnect) for each address in the `imqAddressList` before the
-client runtime moves on to try the next address in the list. A value of
-`-1` indicates that the number of reconnect attempts is unlimited (the
-client runtime attempts to connect to the first address until it
-succeeds).
-
-|`ReconnectInterval` |`30000` |Specifies the interval between reconnect
-attempts in milliseconds. This applies to attempts on each address in
-the `imqAddressList` and on successive addresses in the list. If too
-short, this time interval does not give a broker time to recover. If too
-long, the reconnect might represent an unacceptable delay.
-
-|`ReconnectEnabled` |`false` |If `true`, specifies that the client
-runtime attempts to reconnect to a message server (or the list of
-addresses in `imqAddressList`) when a connection is lost.
-
-|`AddressListBehavior` |`priority` |Specifies whether connection
-attempts are in the order of addresses in the `imqAddressList` attribute
-(`priority`) or in a random order (`random`). If many clients are
-attempting a connection using the same connection factory, use a random
-order to prevent them from all being connected to the same address.
-
-|`AddressListIterations` |`-1` |Specifies the number of times the client
-runtime iterates through the `imqAddressList` in an effort to establish
-(or reestablish) a connection. A value of `-1` indicates that the number
-of attempts is unlimited.
-|=======================================================================
-
-
-
-[NOTE]
-=======================================================================
-
-All JMS administered object resource properties that worked with version
-7 of the GlassFish Server are supported for backward compatibility.
-
-=======================================================================
-
-
-[[giyhv]][[GSDPG00125]][[connector-resource]]
-
-`connector-resource`
-~~~~~~~~~~~~~~~~~~~~
-
-Defines the connection factory object of a specific connection
-definition in a connector (resource adapter).
-
-[[GSDPG886]][[sthref63]]
-
-
-[[superelements-40]]
-Superelements
-^^^^^^^^^^^^^
-
-link:#giyiy[`resources`] (`glassfish-resources.xml`)
-
-[[GSDPG887]][[sthref64]]
-
-
-[[subelements-38]]
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `connector-resource`
-element.
-
-[[GSDPG888]][[sthref65]][[sthref66]]
-
-
-Table C-38 `connector-resource` Subelements
-
-[width="100%",cols="25%,12%,63%",options="header",]
-|==========================================================
-|Element |Required |Description
-a|
-link:#beaso[`description`]
-
-
- |zero or one |Contains a text description of this element.
-a|
-link:#beavx[`property` (with attributes)]
-
-
- |zero or more |Specifies a property or a variable.
-|==========================================================
-
-
-[[GSDPG889]][[sthref67]]
-
-
-[[attributes-10]]
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `connector-resource`
-element.
-
-[[GSDPG890]][[sthref68]][[sthref69]]
-
-
-Table C-39 `connector-resource` Attributes
-
-[width="172%",cols="9%,46%,45%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`jndi-name` |none |Specifies the JNDI name for the resource.
-
-|`pool-name` |none |Specifies the `name` of the associated
-link:#giygu[`connector-connection-pool`].
-
-|`object-type` |`user` a|
-(optional) Defines the type of the resource. Allowed values are:
-
-* `system-all` - A system resource for all server instances and the
-domain application server.
-* `system-admin` - A system resource only for the domain application
-server.
-* `system-instance` - A system resource for all server instances only.
-* `user` - A user resource.
-
-|`enabled` |`true` |(optional) Determines whether this resource is
-enabled at runtime.
-|=======================================================================
-
-
-[[beasd]][[GSDPG00126]][[consistency]]
-
-`consistency`
-~~~~~~~~~~~~~
-
-Specifies container behavior in guaranteeing transactional consistency
-of the data in the bean.
-
-[[fvysj]][[GSDPG00421]][[superelements-41]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beasy[`entity-mapping`] (`sun-cmp-mappings.xml`)
-
-[[fvysl]][[GSDPG00422]][[subelements-39]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `consistency` element.
-
-[[GSDPG891]][[sthref70]][[fvysn]]
-
-
-Table C-40 `consistency` Subelements
-
-[width="100%",cols="31%,21%,48%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beavi[`none`]
-
-
- |exactly one subelement is required |No consistency checking occurs.
-
-a|
-link:#bearm[`check-modified-at-commit`]
-
-
- |exactly one subelement is required |Checks concurrent modification of
-fields in modified beans at commit time.
-
-a|
-link:#beauh[`lock-when-loaded`]
-
-
- |exactly one subelement is required |Obtains an exclusive lock when the
-data is loaded.
-
-a|
-link:#bearl[`check-all-at-commit`]
-
-
- | + |This element is not implemented. Do not use.
-
-a|
-link:#beaui[`lock-when-modified`]
-
-
- | + |This element is not implemented. Do not use.
-
-a|
-link:#bearn[`check-version-of-accessed-instances`]
-
-
- |exactly one subelement is required |Checks the version column of the
-modified beans.
-|=======================================================================
-
-
-[[bease]][[GSDPG00127]][[constraint-field]]
-
-`constraint-field`
-~~~~~~~~~~~~~~~~~~
-
-Specifies a cacheability constraint for the given
-link:#beayl[`url-pattern`] or link:#beaxo[`servlet-name`].
-
-All `constraint-field` constraints must pass for a response to be
-cached. If there are `value` constraints, at least one of them must
-pass.
-
-[[fvysm]][[GSDPG00423]][[superelements-42]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#bearh[`cache-mapping`] (`glassfish-web.xml`)
-
-[[fvyso]][[GSDPG00424]][[subelements-40]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `constraint-field`
-element.
-
-[[GSDPG892]][[sthref71]][[fvysp]]
-
-
-Table C-41 `constraint-field` Subelements
-
-[width="100%",cols="30%,13%,57%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beasf[`constraint-field-value`]
-
-
- |zero or more |Contains a value to be matched to the input parameter
-value.
-|=======================================================================
-
-
-[[fvysq]][[GSDPG00425]][[attributes-11]]
-
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `constraint-field`
-element.
-
-[[GSDPG893]][[sthref72]][[fvysr]]
-
-
-Table C-42 `constraint-field` Attributes
-
-[width="100%",cols="18%,21%,61%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`name` |none |Specifies the input parameter name.
-
-|`scope` |`request.parameter` |(optional) Specifies the scope from which
-the input parameter is retrieved. Allowed values are
-`context.attribute`, `request.header`, `request.parameter`,
-`request.cookie`, `request.attribute`, and `session.attribute`.
-
-|`cache-on-match` |`true` |(optional) If `true`, caches the response if
-matching succeeds. Overrides the same attribute in a
-link:#beasf[`constraint-field-value`] subelement.
-
-|`cache-on-match``-failure` |`false` |(optional) If `true`, caches the
-response if matching fails. Overrides the same attribute in a
-link:#beasf[`constraint-field-value`] subelement.
-|=======================================================================
-
-
-[[beasf]][[GSDPG00128]][[constraint-field-value]]
-
-`constraint-field-value`
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies a value to be matched to the input parameter value. The
-matching is case sensitive. For example:
-
-[source,oac_no_warn]
-----
-<value match-expr="in-range">1-60</value>
-----
-
-[[fvyss]][[GSDPG00426]][[superelements-43]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#bease[`constraint-field`] (`glassfish-web.xml`)
-
-[[fvyst]][[GSDPG00427]][[subelements-41]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[fvysu]][[GSDPG00428]][[attributes-12]]
-
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the
-`constraint-field-value` element.
-
-[[GSDPG894]][[sthref73]][[fvysv]]
-
-
-Table C-43 `constraint-field-value` Attributes
-
-[width="172%",cols="11%,46%,43%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`match-expr` |`equals` a|
-(optional) Specifies the type of comparison performed with the value.
-Allowed values are `equals`, `not-equals`, `greater`, `lesser`, and
-`in-range`.
-
-If `match-expr` is `greater` or `lesser`, the value must be a number. If
-`match-expr` is `in-range`, the value must be of the form n1`-`n2, where
-n1 and n2 are numbers.
-
-|`cache-on-match` |`true` |(optional) If `true`, caches the response if
-matching succeeds.
-
-|`cache-on-match``-failure` |`false` |(optional) If `true`, caches the
-response if matching fails.
-|=======================================================================
-
-
-[[beasg]][[GSDPG00129]][[context-root]]
-
-`context-root`
-~~~~~~~~~~~~~~
-
-Contains the web context root for the application or web application
-that was packaged as a WAR file. Overrides the corresponding element in
-the `application.xml` or `web.xml` file.
-
-If the parent element is `java-web-start-access`, this element contains
-the context root for the Java Web Start enabled application client
-module. If none is specified, a default is generated; see
-link:#gauax[`java-web-start-access`].
-
-If you are setting up load balancing, web module context roots must be
-unique within a server instance. See the link:../ha-administration-guide/toc.html#GSHAG[GlassFish Server
-Open Source Edition High Availability Administration Guide] for more
-information about load balancing.
-
-[[fvysx]][[GSDPG00429]][[superelements-44]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beayr[`web`] (`glassfish-application.xml`),
-link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`),
-link:#gauax[`java-web-start-access`]
-(`glassfish-application-client.xml`)
-
-[[fvysw]][[GSDPG00430]][[subelements-42]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beash]][[GSDPG00130]][[cookie-properties]]
-
-`cookie-properties`
-~~~~~~~~~~~~~~~~~~~
-
-Specifies session cookie properties.
-
-
-[NOTE]
-=======================================================================
-
-If cookie settings are defined declaratively in the `web.xml` file, the
-cookie properties defined here take precedence. If cookie settings are
-defined programmatically using `javax.servlet.SessionCookieConfig`
-methods, those cookie settings take precedence over the cookie
-properties defined here.
-
-=======================================================================
-
-
-[[fvysy]][[GSDPG00431]][[superelements-45]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaxp[`session-config`] (`glassfish-web.xml`)
-
-[[fvysz]][[GSDPG00432]][[subelements-43]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `cookie-properties`
-element.
-
-[[GSDPG895]][[sthref74]][[fvytb]]
-
-
-Table C-44 `cookie-properties` Subelements
-
-[width="100%",cols="36%,14%,50%",options="header",]
-|==================================================================
-|Element |Required |Description
-a|
-link:#beavx[`property` (with attributes)]
-
-
- |zero or more |Specifies a property, which has a name and a value.
-|==================================================================
-
-
-[[fvyta]][[GSDPG00433]][[properties-5]]
-
-Properties
-^^^^^^^^^^
-
-The following table describes properties for the `cookie-properties`
-element.
-
-[[GSDPG896]][[sthref75]][[fvyte]]
-
-
-Table C-45 `cookie-properties` Properties
-
-[width="100%",cols="24%,13%,63%",options="header",]
-|=======================================================================
-|Property |Default |Description
-|`cookieName` |none |Specifies the cookie name.
-
-|`cookiePath` |Context path at which the web module is installed.
-|Specifies the pathname that is set when the cookie is created. The
-browser sends the cookie if the pathname for the request contains this
-pathname. If set to `/` (slash), the browser sends cookies to all URLs
-served by GlassFish Server. You can set the path to a narrower mapping
-to limit the request URLs to which the browser sends cookies.
-
-|`cookieMaxAgeSeconds` |none |Specifies the expiration time (in seconds)
-after which the browser expires the cookie. If this is unset, the cookie
-doesn't expire.
-
-|`cookieDomain` |(unset) |Specifies the domain for which the cookie is
-valid.
-
-|`cookieComment` |none |Specifies the comment that identifies the
-session tracking cookie in the cookie file.
-
-|`cookieSecure` |`dynamic` a|
-Sets the `Secure` attribute of any `JSESSIONID` cookies associated with
-the web application. Allowed values are as follows:
-
-* `true` — Sets `Secure` to `true`.
-* `false` — Sets `Secure` to `false`.
-* `dynamic` — The `JSESSIONID` cookie inherits the `Secure` setting of
-the request that initiated the session.
-
-To set the `Secure` attribute of a `JSESSIONIDSSO` cookie, use the
-`ssoCookieSecure` `virtual-server` property. For details, see
-link:../reference-manual/create-virtual-server.html#GSRFM00062[`create-virtual-server`(1)].
-
-|`cookieHttpOnly` |none |Specifies that the cookie is marked HTTP only.
-Allowed values are `true` or `false`.
-|=======================================================================
-
-
-[[beasi]][[GSDPG00131]][[create-tables-at-deploy]]
-
-`create-tables-at-deploy`
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies whether database tables are created for beans that are
-automatically mapped by the EJB container. If `true`, creates tables in
-the database. If `false` (the default if this element is not present),
-does not create tables.
-
-This element can be overridden during deployment. See
-"link:../application-development-guide/container_managed-persistence.html#GSDVG00438[Generation Options for CMP]" in GlassFish Server Open
-Source Edition Application Development Guide.
-
-[[fvytc]][[GSDPG00434]][[superelements-46]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#bearv[`cmp-resource`] (`glassfish-ejb-jar.xml`)
-
-[[fvytd]][[GSDPG00435]][[subelements-44]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[giyhr]][[GSDPG00132]][[custom-resource]]
-
-`custom-resource`
-~~~~~~~~~~~~~~~~~
-
-Defines a custom resource, which specifies a custom server-wide resource
-object factory. Such object factories implement the
-javax.naming.spi.ObjectFactory interface.
-
-[[GSDPG897]][[sthref76]]
-
-
-[[superelements-47]]
-Superelements
-^^^^^^^^^^^^^
-
-link:#giyiy[`resources`] (`glassfish-resources.xml`)
-
-[[GSDPG898]][[sthref77]]
-
-
-[[subelements-45]]
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `custom-resource`
-element.
-
-[[GSDPG899]][[sthref78]][[sthref79]]
-
-
-Table C-46 `custom-resource` Subelements
-
-[width="100%",cols="25%,12%,63%",options="header",]
-|==========================================================
-|Element |Required |Description
-a|
-link:#beaso[`description`]
-
-
- |zero or one |Contains a text description of this element.
-a|
-link:#beavx[`property` (with attributes)]
-
-
- |zero or more |Specifies a property or a variable.
-|==========================================================
-
-
-[[GSDPG900]][[sthref80]]
-
-
-[[attributes-13]]
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `custom-resource`
-element.
-
-[[GSDPG901]][[sthref81]][[sthref82]]
-
-
-Table C-47 `custom-resource` Attributes
-
-[width="172%",cols="11%,46%,43%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`jndi-name` |none |Specifies the JNDI name for the resource.
-
-|`res-type` |none |Specifies the fully qualified type of the resource.
-
-|`factory-class` |none |Specifies the fully qualified name of the
-user-written factory class, which implements
-javax.naming.spi.ObjectFactory.
-
-|`object-type` |`user` a|
-(optional) Defines the type of the resource. Allowed values are:
-
-* `system-all` - A system resource for all server instances and the
-domain application server.
-* `system-admin` - A system resource only for the domain application
-server.
-* `system-instance` - A system resource for all server instances only.
-* `user` - A user resource.
-
-|`enabled` |`true` |(optional) Determines whether this resource is
-enabled at runtime.
-|=======================================================================
-
-
-[[beask]][[GSDPG00133]][[database-vendor-name]]
-
-`database-vendor-name`
-~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies the name of the database vendor for which tables can be
-created. Allowed values are `javadb`, `db2`, `mssql`, `mysql`, `oracle`,
-`postgresql`, `pointbase`, `derby` (also for CloudScape), and `sybase`,
-case-insensitive.
-
-If no value is specified, a connection is made to the resource specified
-by the link:#beatw[`jndi-name`] subelement of the
-link:#bearv[`cmp-resource`] element, and the database vendor name is
-read. If the connection cannot be established, or if the value is not
-recognized, SQL-92 compliance is presumed.
-
-This element can be overridden during deployment. See
-"link:../application-development-guide/container_managed-persistence.html#GSDVG00438[Generation Options for CMP]" in GlassFish Server Open
-Source Edition Application Development Guide.
-
-[[fvytf]][[GSDPG00436]][[superelements-48]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#bearv[`cmp-resource`] (`glassfish-ejb-jar.xml`)
-
-[[fvyti]][[GSDPG00437]][[subelements-46]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[gaubj]][[GSDPG00134]][[debugging-enabled]]
-
-`debugging-enabled`
-~~~~~~~~~~~~~~~~~~~
-
-Specifies whether the debugging servlet is enabled for this web service
-endpoint. Allowed values are `true` (the default) and `false`.
-
-[[gaubf]][[GSDPG00438]][[superelements-49]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beayv[`webservice-endpoint`] (`glassfish-web.xml`,
-`glassfish-ejb-jar.xml`)
-
-[[gaube]][[GSDPG00439]][[subelements-47]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beasl]][[GSDPG00135]][[default]]
-
-`default`
-~~~~~~~~~
-
-Specifies that a field belongs to the default hierarchical fetch group,
-and enables prefetching for a CMR field. To disable prefetching for
-specific query methods, use a link:#beavu[`prefetch-disabled`] element
-in the `glassfish-ejb-jar.xml` file.
-
-[[fvytg]][[GSDPG00440]][[superelements-50]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beatc[`fetched-with`] (`sun-cmp-mappings.xml`)
-
-[[fvyth]][[GSDPG00441]][[subelements-48]]
-
-Subelements
-^^^^^^^^^^^
-
-none - element is present or absent
-
-[[beasm]][[GSDPG00136]][[default-helper]]
-
-`default-helper`
-~~~~~~~~~~~~~~~~
-
-Passes property values to the built-in `default`
-link:#beare[`cache-helper`] class.
-
-[[fvytj]][[GSDPG00442]][[superelements-51]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beard[`cache`] (`glassfish-web.xml`)
-
-[[fvytk]][[GSDPG00443]][[subelements-49]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `default-helper`
-element.
-
-[[GSDPG902]][[sthref83]][[fvytm]]
-
-
-Table C-48 `default-helper` Subelements
-
-[width="100%",cols="25%,12%,63%",options="header",]
-|==================================================================
-|Element |Required |Description
-a|
-link:#beavx[`property` (with attributes)]
-
-
- |zero or more |Specifies a property, which has a name and a value.
-|==================================================================
-
-
-[[fvytp]][[GSDPG00444]][[properties-6]]
-
-Properties
-^^^^^^^^^^
-
-The following table describes properties for the `default-helper`
-element.
-
-[[GSDPG903]][[sthref84]][[fvyto]]
-
-
-Table C-49 `default-helper` Properties
-
-[width="100%",cols="30%,21%,49%",options="header",]
-|=======================================================================
-|Property |Default |Description
-|`cacheKeyGeneratorAttrName` |Uses the built-in `default`
-link:#beare[`cache-helper`] key generation, which concatenates the
-servlet path with link:#beatz[`key-field`] values, if any. |The caching
-engine looks in the `ServletContext` for an attribute with a name equal
-to the value specified for this property to determine whether a
-customized CacheKeyGenerator implementation is used. An application can
-provide a customized key generator rather than using the `default`
-helper. See "link:../application-development-guide/webapps.html#GSDVG00254[The CacheKeyGenerator Interface]" in
-GlassFish Server Open Source Edition Application Development Guide.
-|=======================================================================
-
-
-[[beasn]][[GSDPG00137]][[default-resource-principal]]
-
-`default-resource-principal`
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies the default principal (user) for the resource.
-
-If this element is used in conjunction with a JMS Connection Factory
-resource, the `name` and `password` subelements must be valid entries in
-the Open Message Queue broker user repository. See
-"link:../../openmq/mq-admin-guide/security-services.html#GMADG00040[Configuring and Managing Security Services]" in Open
-Message Queue Administration Guide for details.
-
-[[fvytl]][[GSDPG00445]][[superelements-52]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaww[`resource-ref`] (`glassfish-web.xml`,
-`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`);
-link:#bearv[`cmp-resource`], link:#beaur[`mdb-connection-factory`]
-(`glassfish-ejb-jar.xml`)
-
-[[fvytn]][[GSDPG00446]][[subelements-50]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the
-`default-resource-principal` element.
-
-[[GSDPG904]][[sthref85]][[fvytr]]
-
-
-Table C-50 `default-resource-principal` Subelements
-
-[width="100%",cols="11%,10%,79%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beavf[`name`]
-
-
- |only one |Specifies the default resource principal name used to sign
-on to a resource manager.
-
-a|
-link:#beavp[`password`]
-
-
- |only one |Specifies password of the default resource principal.
-|=======================================================================
-
-
-[[beaso]][[GSDPG00138]][[description]]
-
-`description`
-~~~~~~~~~~~~~
-
-Specifies a text description of the containing element.
-
-[[fvytq]][[GSDPG00447]][[superelements-53]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beavx[`property` (with attributes)], link:#gikqk[`valve`]
-(`glassfish-web.xml`); link:#beaqs[`activation-config`],
-link:#beauz[`method`] (`glassfish-ejb-jar.xml`);
-link:#beaye[`target-server`] (`sun-acc.xml`);
-link:#giyhw[`admin-object-resource`],
-link:#giygu[`connector-connection-pool`],
-link:#giyhv[`connector-resource`], link:#giyhr[`custom-resource`],
-link:#giyin[`external-jndi-resource`],
-link:#giyil[`jdbc-connection-pool`], link:#giyhm[`jdbc-resource`],
-link:#giyik[`mail-resource`], link:#beavx[`property` (with attributes)],
-link:#giyit[`resource-adapter-config`] (`glassfish-resources.xml`)
-
-[[fvyts]][[GSDPG00448]][[subelements-51]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[gkhtw]][[GSDPG00139]][[disable-nonportable-jndi-names]]
-
-`disable-nonportable-jndi-names`
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Because the EJB 3.1 specification defines portable EJB JNDI names, there
-is less need for GlassFish Server specific JNDI names. By default,
-GlassFish Server specific default JNDI names are applied automatically
-for backward compatibility. To disable GlassFish Server specific JNDI
-names for an EJB module, set the value of this element to `true`. The
-default is `false`.
-
-[[gkhum]][[GSDPG00449]][[superelements-54]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaya[`glassfish-ejb-jar`] (`glassfish-ejb-jar.xml`)
-
-[[gkhug]][[GSDPG00450]][[subelements-52]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beasp]][[GSDPG00140]][[dispatcher]]
-
-`dispatcher`
-~~~~~~~~~~~~
-
-Specifies a comma-separated list of `RequestDispatcher` methods for
-which caching is enabled on the target resource. Valid values are
-`REQUEST`, `FORWARD`, `INCLUDE`, and `ERROR` . If this element is not
-specified, the default is `REQUEST`. See SRV.6.2.5 of the Servlet 2.4
-specification for more information.
-
-[[fvytt]][[GSDPG00451]][[superelements-55]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#bearh[`cache-mapping`] (`glassfish-web.xml`)
-
-[[fvytv]][[GSDPG00452]][[subelements-53]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beasq]][[GSDPG00141]][[drop-tables-at-undeploy]]
-
-`drop-tables-at-undeploy`
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies whether database tables that were automatically created when
-the bean(s) were last deployed are dropped when the bean(s) are
-undeployed. If `true`, drops tables from the database. If `false` (the
-default if this element is not present), does not drop tables.
-
-This element can be overridden during deployment. See
-"link:../application-development-guide/container_managed-persistence.html#GSDVG00438[Generation Options for CMP]" in GlassFish Server Open
-Source Edition Application Development Guide.
-
-[[fvytu]][[GSDPG00453]][[superelements-56]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#bearv[`cmp-resource`] (`glassfish-ejb-jar.xml`)
-
-[[fvytx]][[GSDPG00454]][[subelements-54]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beass]][[GSDPG00142]][[ejb]]
-
-`ejb`
-~~~~~
-
-Defines runtime properties for a single enterprise bean within the
-application. The subelements listed below apply to particular enterprise
-beans as follows:
-
-* All types of beans: `ejb-name`, `ejb-ref`, `resource-ref`,
-`resource-env-ref`, `ior-security-config`, `gen-classes`, `jndi-name`,
-`use-thread-pool-id`, `message-destination-ref`, `pass-by-reference`,
-`service-ref`
-* Stateless session beans: `bean-pool`, `webservice-endpoint`
-* Stateful session beans: `bean-cache`, `webservice-endpoint`,
-`checkpoint-at-end-of-method`
-* Entity beans: `commit-option`, `bean-cache`, `bean-pool`, `cmp`,
-`is-read-only-bean`, `refresh-period-in-seconds`,
-`flush-at-end-of-method`
-* Message-driven beans: `mdb-resource-adapter`,
-`mdb-connection-factory`, `jms-durable-subscription-name`,
-`jms-max-messages-load`, `bean-pool`
-
-[[fvyty]][[GSDPG00455]][[superelements-57]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beasx[`enterprise-beans`] (`glassfish-ejb-jar.xml`)
-
-[[fvytw]][[GSDPG00456]][[subelements-55]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `ejb` element.
-
-[[GSDPG905]][[sthref86]][[fvyuc]]
-
-
-Table C-51 `ejb` Subelements
-
-[width="100%",cols="35%,12%,53%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beast[`ejb-name`]
-
-
- |only one |Matches the `ejb-name` in the corresponding `ejb-jar.xml`
-file.
-
-a|
-link:#beatw[`jndi-name`]
-
-
- |zero or more |Specifies the absolute `jndi-name`.
-
-a|
-link:#beasu[`ejb-ref`]
-
-
- |zero or more |Maps the absolute JNDI name to the `ejb-ref` element in
-the corresponding Java EE XML file.
-
-a|
-link:#beaww[`resource-ref`]
-
-
- |zero or more |Maps the absolute JNDI name to the `resource-ref` in the
-corresponding Java EE XML file.
-
-a|
-link:#beawu[`resource-env-ref`]
-
-
- |zero or more |Maps the absolute JNDI name to the `resource-env-ref` in
-the corresponding Java EE XML file.
-
-a|
-link:#beaxk[`service-ref`]
-
-
- |zero or more |Specifies runtime settings for a web service reference.
-
-a|
-link:#gauao[`message-destination-ref`]
-
-
- |zero or more |Specifies the name of a physical message destination.
-
-a|
-link:#beavo[`pass-by-reference`]
-
-
- |zero or one |Specifies the passing method used by an enterprise bean
-calling a remote interface method in another bean that is colocated
-within the same process.
-
-a|
-link:#beart[`cmp`]
-
-
- |zero or one |Specifies runtime information for a container-managed
-persistence (CMP) entity bean for EJB 1.1 and EJB 2.1 beans.
-
-a|
-link:#beavv[`principal`]
-
-
- |zero or one |Specifies the principal (user) name in an enterprise bean
-that has the `run-as` role specified.
-
-a|
-link:#beaur[`mdb-connection-factory`]
-
-
- |zero or one |Specifies the connection factory associated with a
-message-driven bean.
-
-a|
-link:#beatu[`jms-durable-subscription-name`]
-
-
- |zero or one |Specifies the durable subscription associated with a
-message-driven bean.
-
-a|
-link:#beatv[`jms-max-messages-load`]
-
-
- |zero or one |Specifies the maximum number of messages to load into a
-Java Message Service session at one time for a message-driven bean to
-serve. The default is 1.
-
-a|
-link:#beato[`ior-security-config`]
-
-
- |zero or one |Specifies the security information for the IOR.
-
-a|
-link:#beatr[`is-read-only-bean`]
-
-
- |zero or one |Specifies that this entity bean is read-only.
-
-a|
-link:#beawk[`refresh-period-in-seconds`]
-
-
- |zero or one |Specifies the rate at which a read-only-bean must be
-refreshed from the data source.
-
-a|
-link:#beasb[`commit-option`]
-
-
- |zero or one |Has valid values of B or C. Default value is B.
-
-a|
-link:#beary[`cmt-timeout-in-seconds`]
-
-
- |zero or one |Overrides the Transaction Timeout setting of the
-Transaction Service for an individual bean.
-
-a|
-link:#beaym[`use-thread-pool-id`]
-
-
- |zero or one |Specifies the thread pool from which threads are selected
-for remote invocations of this bean.
-
-a|
-link:#beath[`gen-classes`]
-
-
- |zero or one |Specifies all the generated class names for a bean.
-
-a|
-link:#bearb[`bean-pool`]
-
-
- |zero or one |Specifies the bean pool properties. Used for stateless
-session beans, entity beans, and message-driven beans.
-
-a|
-link:#beara[`bean-cache`]
-
-
- |zero or one |Specifies the bean cache properties. Used only for
-stateful session beans and entity beans.
-
-a|
-link:#beaus[`mdb-resource-adapter`]
-
-
- |zero or one |Specifies runtime configuration information for a
-message-driven bean.
-
-a|
-link:#beayv[`webservice-endpoint`]
-
-
- |zero or more |Specifies information about a web service endpoint.
-
-a|
-link:#beatf[`flush-at-end-of-method`]
-
-
- |zero or one |Specifies the methods that force a database flush after
-execution. Used for entity beans.
-
-a|
-link:#bearp[`checkpointed-methods`]
-
-
- |zero or one |Deprecated. Supported for backward compatibility. Use
-link:#bearo[`checkpoint-at-end-of-method`] instead.
-
-a|
-link:#bearo[`checkpoint-at-end-of-method`]
-
-
- |zero or one |Specifies that the stateful session bean state is
-checkpointed, or persisted, after the specified methods are executed.
-The `availability-enabled` attribute must be set to `true`.
-
-a|
-link:#gkkia[`per-request-load-balancing`]
-
-
- |zero or one |Specifies the per-request load balancing behavior of EJB
-2.x and 3.x remote client invocations on a stateless session bean.
-|=======================================================================
-
-
-[[fvyuf]][[GSDPG00457]][[attributes-14]]
-
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `ejb` element.
-
-[[GSDPG906]][[sthref87]][[fvyud]]
-
-
-Table C-52 `ejb` Attributes
-
-[width="181%",cols="16%,49%,35%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`availability-enabled` |`false` |(optional) If set to `true`, and if
-availability is enabled in the EJB container, high-availability features
-apply to this bean if it is a stateful session bean.
-|=======================================================================
-
-
-[[fvytz]][[GSDPG00458]][[example-3]]
-
-Example
-^^^^^^^
-
-[source,oac_no_warn]
-----
-<ejb>
-   <ejb-name>CustomerEJB</ejb-name>
-   <jndi-name>customer</jndi-name>
-   <resource-ref>
-      <res-ref-name>jdbc/SimpleBank</res-ref-name>
-      <jndi-name>jdbc/__default</jndi-name>
-   </resource-ref>
-   <is-read-only-bean>false</is-read-only-bean>
-   <commit-option>B</commit-option>
-   <bean-pool>
-      <steady-pool-size>10</steady-pool-size>
-      <resize-quantity>10</resize-quantity>
-      <max-pool-size>100</max-pool-size>
-      <pool-idle-timeout-in-seconds>600</pool-idle-timeout-in-seconds>
-   </bean-pool>
-   <bean-cache>
-      <max-cache-size>100</max-cache-size>
-      <resize-quantity>10</resize-quantity>
-      <removal-timeout-in-seconds>3600</removal-timeout-in-seconds>
-      <victim-selection-policy>LRU</victim-selection-policy>
-   </bean-cache>
-</ejb>
-----
-
-[[beast]][[GSDPG00143]][[ejb-name]]
-
-`ejb-name`
-~~~~~~~~~~
-
-In the `glassfish-ejb-jar.xml` file, matches the `ejb-name` in the
-corresponding `ejb-jar.xml` file. The name must be unique among the
-names of the enterprise beans in the same EJB JAR file.
-
-There is no architected relationship between the `ejb-name` in the
-deployment descriptor and the JNDI name that the deployer assigns to the
-EJB component's home.
-
-In the `sun-cmp-mappings.xml` file, specifies the `ejb-name` of the
-entity bean in the `ejb-jar.xml` file to which the container-managed
-persistence (CMP) bean corresponds.
-
-[[fvyug]][[GSDPG00459]][[superelements-58]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beass[`ejb`], link:#beauz[`method`] (`glassfish-ejb-jar.xml`);
-link:#beasy[`entity-mapping`] (`sun-cmp-mappings.xml`)
-
-[[fvyue]][[GSDPG00460]][[subelements-56]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beasu]][[GSDPG00144]][[ejb-ref]]
-
-`ejb-ref`
-~~~~~~~~~
-
-Maps the `ejb-ref-name` in the corresponding Java EE deployment
-descriptor file `ejb-ref` entry to the absolute `jndi-name` of a
-resource.
-
-The `ejb-ref` element is used for the declaration of a reference to an
-EJB's home. Applies to session beans or entity beans.
-
-[[fvyub]][[GSDPG00461]][[superelements-59]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`),
-link:#beass[`ejb`] (`glassfish-ejb-jar.xml`),
-link:#beaxx[`glassfish-application-client`]
-(`glassfish-application-client.xml`)
-
-[[fvyua]][[GSDPG00462]][[subelements-57]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `ejb-ref` element.
-
-[[GSDPG907]][[sthref88]][[fvyui]]
-
-
-Table C-53 `ejb-ref` Subelements
-
-[width="100%",cols="26%,11%,63%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beasv[`ejb-ref-name`]
-
-
- |only one |Specifies the `ejb-ref-name` in the corresponding Java EE
-deployment descriptor file `ejb-ref` entry.
-
-a|
-link:#beatw[`jndi-name`]
-
-
- |only one |Specifies the absolute `jndi-name` of a resource.
-|=======================================================================
-
-
-[[beasv]][[GSDPG00145]][[ejb-ref-name]]
-
-`ejb-ref-name`
-~~~~~~~~~~~~~~
-
-Specifies the `ejb-ref-name` in the corresponding Java EE deployment
-descriptor file `ejb-ref` entry.
-
-[[fvyuh]][[GSDPG00463]][[superelements-60]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beasu[`ejb-ref`] (`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
-`glassfish-application-client.xml`)
-
-[[fvyuj]][[GSDPG00464]][[subelements-58]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[gaubh]][[GSDPG00146]][[eligible]]
-
-`eligible`
-~~~~~~~~~~
-
-Specifies whether the application client module is eligible to be Java
-Web Start enabled. Allowed values are `true` (the default) and `false`.
-
-[[gaubg]][[GSDPG00465]][[superelements-61]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#gauax[`java-web-start-access`]
-(`glassfish-application-client.xml`)
-
-[[gauaz]][[GSDPG00466]][[subelements-59]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beasw]][[GSDPG00147]][[endpoint-address-uri]]
-
-`endpoint-address-uri`
-~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies the relative path combined with the web server root to form
-the fully qualified endpoint address for a web service endpoint. This is
-a required element for EJB endpoints and an optional element for servlet
-endpoints.
-
-For servlet endpoints, this value is relative to the web application
-context root. For EJB endpoints, the URI is relative to root of the web
-server (the first portion of the URI is a context root). The context
-root portion must not conflict with the context root of any web
-application deployed to the same web server.
-
-In all cases, this value must be a fixed pattern (no "`*`' allowed).
-
-If the web service endpoint is a servlet that implements only a single
-endpoint and has only one `url-pattern`, it is not necessary to set this
-value, because the web container derives it from the `web.xml` file.
-
-[[fvyul]][[GSDPG00467]][[superelements-62]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beayv[`webservice-endpoint`] (`glassfish-web.xml`,
-`glassfish-ejb-jar.xml`)
-
-[[fvyum]][[GSDPG00468]][[subelements-60]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[fvyuk]][[GSDPG00469]][[example-4]]
-
-Example
-^^^^^^^
-
-If the web server is listening at `http://localhost:8080`, the following
-`endpoint-address-uri`:
-
-[source,oac_no_warn]
-----
-<endpoint-address-uri>StockQuoteService/StockQuotePort</endpoint-address-uri>
-----
-
-results in the following target endpoint address:
-
-[source,oac_no_warn]
-----
-http://localhost:8080/StockQuoteService/StockQuotePort
-----
-
-[[beasx]][[GSDPG00148]][[enterprise-beans]]
-
-`enterprise-beans`
-~~~~~~~~~~~~~~~~~~
-
-Specifies all the runtime properties for an EJB JAR file in the
-application.
-
-[[fvyun]][[GSDPG00470]][[superelements-63]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaya[`glassfish-ejb-jar`] (`glassfish-ejb-jar.xml`)
-
-[[fvyuo]][[GSDPG00471]][[subelements-61]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `enterprise-beans`
-element.
-
-[[GSDPG908]][[sthref89]][[fvyut]]
-
-
-Table C-54 `enterprise-beans` Subelements
-
-[width="100%",cols="27%,12%,61%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beavf[`name`]
-
-
- |zero or one |Specifies the name string.
-
-a|
-link:#beayk[`unique-id`]
-
-
- |zero or one |Specifies a unique system identifier. This data is
-automatically generated and updated at deployment/redeployment. Do not
-specify or edit this value.
-
-a|
-link:#beass[`ejb`]
-
-
- |zero or more |Defines runtime properties for a single enterprise bean
-within the application.
-
-a|
-link:#beavq[`pm-descriptors`]
-
-
- |zero or one |Deprecated.
-
-a|
-link:#bearv[`cmp-resource`]
-
-
- |zero or one |Specifies the database to be used for storing
-container-managed persistence (CMP) beans in an EJB JAR file.
-
-a|
-link:#beauu[`message-destination`]
-
-
- |zero or more |Specifies the name of a logical message destination.
-
-a|
-link:#beayt[`webservice-description`]
-
-
- |zero or more |Specifies a name and optional publish location for a web
-service.
-
-a|
-link:#beavy[`property` (with subelements)]
-
-
- |zero or more |Specifies a property or a variable.
-|=======================================================================
-
-
-[[fvyux]][[GSDPG00472]][[example-5]]
-
-Example
-^^^^^^^
-
-[source,oac_no_warn]
-----
-<enterprise-beans>
- <ejb>
-     <ejb-name>CustomerEJB</ejb-name>
-     <jndi-name>customer</jndi-name>
-     <resource-ref>
-         <res-ref-name>jdbc/SimpleBank</res-ref-name>
-         <jndi-name>jdbc/__default</jndi-name>
-     </resource-ref>
-     <is-read-only-bean>false</is-read-only-bean>
-     <commit-option>B</commit-option>
-     <bean-pool>
-         <steady-pool-size>10</steady-pool-size>
-        <resize-quantity>10</resize-quantity>
-         <max-pool-size>100</max-pool-size>
-         <pool-idle-timeout-in-seconds>600</pool-idle-timeout-in-seconds>
-     </bean-pool>
-     <bean-cache>
-         <max-cache-size>100</max-cache-size>
-         <resize-quantity>10</resize-quantity>
-         <removal-timeout-in-seconds>3600</removal-timeout-in-seconds>
-         <victim-selection-policy>LRU</victim-selection-policy>
-     </bean-cache>
- </ejb>
-</enterprise-beans>
-----
-
-[[beasy]][[GSDPG00149]][[entity-mapping]]
-
-`entity-mapping`
-~~~~~~~~~~~~~~~~
-
-Specifies the mapping a bean to database columns.
-
-[[fvyus]][[GSDPG00473]][[superelements-64]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaxy[`sun-cmp-mapping`] (`sun-cmp-mappings.xml`)
-
-[[fvyur]][[GSDPG00474]][[subelements-62]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `entity-mapping`
-element.
-
-[[GSDPG909]][[sthref90]][[fvyuz]]
-
-
-Table C-55 `entity-mapping` Subelements
-
-[width="100%",cols="21%,12%,67%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beast[`ejb-name`]
-
-
- |only one |Specifies the name of the entity bean in the `ejb-jar.xml`
-file to which the CMP bean corresponds.
-
-a|
-link:#beayd[`table-name`]
-
-
- |only one |Specifies the name of a database table. The table must be
-present in the database schema file.
-
-a|
-link:#bearu[`cmp-field-mapping`]
-
-
- |one or more |Associates a field with one or more columns to which it
-maps.
-
-a|
-link:#bearw[`cmr-field-mapping`]
-
-
- |zero or more |A container-managed relationship field has a name and
-one or more column pairs that define the relationship.
-
-a|
-link:#beaxe[`secondary-table`]
-
-
- |zero or more |Describes the relationship between a bean's primary and
-secondary table.
-
-a|
-link:#beasd[`consistency`]
-
-
- |zero or one |Specifies container behavior in guaranteeing
-transactional consistency of the data in the bean.
-|=======================================================================
-
-
-[[beasz]][[GSDPG00150]][[establish-trust-in-client]]
-
-`establish-trust-in-client`
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies if the target is capable of authenticating a client. The
-values are `NONE`, `SUPPORTED`, or `REQUIRED`.
-
-[[fvyuq]][[GSDPG00475]][[superelements-65]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beayh[`transport-config`] (`glassfish-ejb-jar.xml`)
-
-[[fvyuy]][[GSDPG00476]][[subelements-63]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beata]][[GSDPG00151]][[establish-trust-in-target]]
-
-`establish-trust-in-target`
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies if the target is capable of authenticating to a client. The
-values are `NONE`, `SUPPORTED`, or `REQUIRED`.
-
-[[fvyuu]][[GSDPG00477]][[superelements-66]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beayh[`transport-config`] (`glassfish-ejb-jar.xml`)
-
-[[fvyuv]][[GSDPG00478]][[subelements-64]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[giyin]][[GSDPG00152]][[external-jndi-resource]]
-
-`external-jndi-resource`
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-Defines a resource that resides in an external JNDI repository. For
-example, a generic Java object could be stored in an LDAP server. An
-external JNDI factory must implement the
-javax.naming.spi.InitialContextFactory interface.
-
-[[GSDPG910]][[sthref91]]
-
-
-[[superelements-67]]
-Superelements
-^^^^^^^^^^^^^
-
-link:#giyiy[`resources`] (`glassfish-resources.xml`)
-
-[[GSDPG911]][[sthref92]]
-
-
-[[subelements-65]]
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the
-`external-jndi-resource` element.
-
-[[GSDPG912]][[sthref93]][[sthref94]]
-
-
-Table C-56 `external-jndi-resource` Subelements
-
-[width="100%",cols="25%,12%,63%",options="header",]
-|==========================================================
-|Element |Required |Description
-a|
-link:#beaso[`description`]
-
-
- |zero or one |Contains a text description of this element.
-a|
-link:#beavx[`property` (with attributes)]
-
-
- |zero or more |Specifies a property or a variable.
-|==========================================================
-
-
-[[GSDPG913]][[sthref95]]
-
-
-[[attributes-15]]
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the
-`external-jndi-resource` element.
-
-[[GSDPG914]][[sthref96]][[sthref97]]
-
-
-Table C-57 `external-jndi-resource` Attributes
-
-[width="172%",cols="13%,46%,41%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`jndi-name` |none |Specifies the JNDI name for the resource.
-
-|`jndi-lookup-name` |none |Specifies the JNDI lookup name for the
-resource.
-
-|`res-type` |none |Specifies the fully qualified type of the resource.
-
-|`factory-class` |none a|
-Specifies the fully qualified name of the factory class, which
-implements javax.naming.spi.InitialContextFactory .
-
-For more information about JNDI, see the link:../application-development-guide/toc.html#GSDVG[GlassFish Server
-Open Source Edition Application Development Guide].
-
-|`object-type` |`user` a|
-(optional) Defines the type of the resource. Allowed values are:
-
-* `system-all` - A system resource for all server instances and the
-domain application server.
-* `system-admin` - A system resource only for the domain application
-server.
-* `system-instance` - A system resource for all server instances only.
-* `user` - A user resource.
-
-|`enabled` |`true` |(optional) Determines whether this resource is
-enabled at runtime.
-|=======================================================================
-
-
-[[beatc]][[GSDPG00153]][[fetched-with]]
-
-`fetched-with`
-~~~~~~~~~~~~~~
-
-Specifies the fetch group configuration for fields and relationships.
-The `fetched-with` element has different allowed and default subelements
-based on its parent element and the data types of the fields.
-
-* If there is no `fetched-with` subelement of a
-link:#bearu[`cmp-field-mapping`], and the data type is not BLOB, CLOB,
-VARBINARY, LONGVARBINARY, or OTHER, `fetched-with` can have any valid
-subelement. The default subelement is as follows: +
-[source,oac_no_warn]
-----
-<fetched-with><default/></fetched-with>
-----
-* If there is no `fetched-with` subelement of a
-link:#bearu[`cmp-field-mapping`], and the data type is BLOB, CLOB,
-VARBINARY, LONGVARBINARY, or OTHER, `fetched-with` can have any valid
-subelement except `<default/>`. The default subelement is as follows: +
-[source,oac_no_warn]
-----
-<fetched-with><none/></fetched-with>
-----
-* If there is no `fetched-with` subelement of a
-link:#bearw[`cmr-field-mapping`], `fetched-with` can have any valid
-subelement. The default subelement is as follows: +
-[source,oac_no_warn]
-----
-<fetched-with><none/></fetched-with>
-----
-
-Managed fields are multiple CMP or CMR fields that are mapped to the
-same column. A managed field can have any `fetched-with` subelement
-except `<default/>`. For additional information, see
-"link:../application-development-guide/container_managed-persistence.html#GSDVG00306[Managed Fields]" in GlassFish Server Open Source
-Edition Application Development Guide.
-
-[[fvyuw]][[GSDPG00479]][[superelements-68]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#bearu[`cmp-field-mapping`], link:#bearw[`cmr-field-mapping`]
-(`sun-cmp-mappings.xml`)
-
-[[fvyup]][[GSDPG00480]][[subelements-66]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `fetched-with`
-element.
-
-[[GSDPG915]][[sthref98]][[fvzcz]]
-
-
-Table C-58 `fetched-with` Subelements
-
-[width="100%",cols="14%,21%,65%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beasl[`default`]
-
-
- |exactly one subelement is required |Specifies that a CMP field belongs
-to the default hierarchical fetch group, which means it is fetched any
-time the bean is loaded from a database. Enables prefetching of a CMR
-field.
-
-a|
-link:#beaub[`level`]
-
-
- |exactly one subelement is required |Specifies the level number of a
-hierarchical fetch group.
-
-a|
-link:#beavg[`named-group`]
-
-
- |exactly one subelement is required |Specifies the name of an
-independent fetch group.
-
-a|
-link:#beavi[`none`]
-
-
- |exactly one subelement is required |Specifies that this field or
-relationship is placed into its own individual fetch group, which means
-it is loaded from a database the first time it is accessed in this
-transaction.
-|=======================================================================
-
-
-[[beatd]][[GSDPG00154]][[field-name]]
-
-`field-name`
-~~~~~~~~~~~~
-
-Specifies the Java identifier of a field. This identifier must match the
-value of the `field-name` subelement of the `cmp-field` element in the
-`ejb-jar.xml` file.
-
-[[fvzcm]][[GSDPG00481]][[superelements-69]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#bearu[`cmp-field-mapping`] (`sun-cmp-mappings.xml`)
-
-[[fvyxs]][[GSDPG00482]][[subelements-67]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beate]][[GSDPG00155]][[finder]]
-
-`finder`
-~~~~~~~~
-
-Describes the finders for CMP 1.1 with a method name and query.
-
-[[fvzao]][[GSDPG00483]][[superelements-70]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beavk[`one-one-finders`] (`glassfish-ejb-jar.xml`)
-
-[[fvzdc]][[GSDPG00484]][[subelements-68]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `finder` element.
-
-[[GSDPG916]][[sthref99]][[fvyzu]]
-
-
-Table C-59 `finder` Subelements
-
-[width="100%",cols="31%,13%,56%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beavb[`method-name`]
-
-
- |only one |Specifies the method name for the finder.
-
-a|
-link:#beawe[`query-params`]
-
-
- |zero or one |Specifies the query parameters for the CMP 1.1 finder.
-
-a|
-link:#beawb[`query-filter`]
-
-
- |zero or one |Specifies the query filter for the CMP 1.1 finder.
-
-a|
-link:#beawf[`query-variables`]
-
-
- |zero or one |Specifies variables in query expression for the CMP 1.1
-finder.
-
-a|
-link:#beawd[`query-ordering`]
-
-
- |zero or one |Specifies the query ordering for the CMP 1.1 finder.
-|=======================================================================
-
-
-[[beatf]][[GSDPG00156]][[flush-at-end-of-method]]
-
-`flush-at-end-of-method`
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies the methods that force a database flush after execution.
-Applicable to entity beans.
-
-[[fvzcw]][[GSDPG00485]][[superelements-71]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
-
-[[fvyza]][[GSDPG00486]][[subelements-69]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the
-`flush-at-end-of-method` element.
-
-[[GSDPG917]][[sthref100]][[fvzba]]
-
-
-Table C-60 `flush-at-end-of-method` Subelements
-
-[width="100%",cols="26%,18%,56%",options="header",]
-|======================================
-|Element |Required |Description
-a|
-link:#beauz[`method`]
-
-
- |one or more |Specifies a bean method.
-|======================================
-
-
-[[beath]][[GSDPG00157]][[gen-classes]]
-
-`gen-classes`
-~~~~~~~~~~~~~
-
-Specifies all the generated class names for a bean.
-
-
-[NOTE]
-=======================================================================
-
-This value is automatically generated by the server at deployment or
-redeployment time. Do not specify it or change it after deployment.
-
-=======================================================================
-
-
-[[fvyyh]][[GSDPG00487]][[superelements-72]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
-
-[[fvzee]][[GSDPG00488]][[subelements-70]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `gen-classes` element.
-
-[[GSDPG918]][[sthref101]][[fvzdo]]
-
-
-Table C-61 `gen-classes` Subelements
-
-[width="100%",cols="20%,11%,69%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beawn[`remote-impl`]
-
-
- |zero or one |Specifies the fully-qualified class name of the generated
-`EJBObject` impl class.
-
-a|
-link:#beaud[`local-impl`]
-
-
- |zero or one |Specifies the fully-qualified class name of the generated
-`EJBLocalObject` impl class.
-
-a|
-link:#beawm[`remote-home-impl`]
-
-
- |zero or one |Specifies the fully-qualified class name of the generated
-`EJBHome` impl class.
-
-a|
-link:#beauc[`local-home-impl`]
-
-
- |zero or one |Specifies the fully-qualified class name of the generated
-`EJBLocalHome` impl class.
-|=======================================================================
-
-
-[[beaxw]][[GSDPG00158]][[glassfish-application]]
-
-`glassfish-application`
-~~~~~~~~~~~~~~~~~~~~~~~
-
-Defines the GlassFish Server specific configuration for an application.
-This is the root element; there can only be one `glassfish-application`
-element in a `glassfish-application.xml` file. See
-link:dd-files.html#beaqk[The glassfish-application.xml File].
-
-[[fvzhn]][[GSDPG00489]][[superelements-73]]
-
-Superelements
-^^^^^^^^^^^^^
-
-none
-
-[[fvzgn]][[GSDPG00490]][[subelements-71]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the
-`glassfish-application` element.
-
-[[GSDPG919]][[sthref102]][[fvzhl]]
-
-
-Table C-62 `glassfish-application` Subelements
-
-[width="100%",cols="28%,12%,60%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beayr[`web`]
-
-
- |zero or more |Specifies the application's web tier configuration.
-
-a|
-link:#beavo[`pass-by-reference`]
-
-
- |zero or one |Determines whether EJB modules use pass-by-value or
-pass-by-reference semantics.
-
-a|
-link:#beayk[`unique-id`]
-
-
- |zero or one |Contains the unique ID for the application.
-
-a|
-link:#beaxg[`security-role-mapping`]
-
-
- |zero or more |Maps a role in the corresponding Java EE XML file to a
-user or group.
-
-a|
-link:#beawi[`realm`]
-
-
- |zero or one |Specifies an authentication realm.
-
-a|
-link:#beasu[`ejb-ref`]
-
-
- |zero or more |Maps the absolute JNDI name to the `ejb-ref` in the
-corresponding Java EE XML file.
-
-a|
-link:#beaww[`resource-ref`]
-
-
- |zero or more |Maps the absolute JNDI name to the `resource-ref` in the
-corresponding Java EE XML file.
-
-a|
-link:#beawu[`resource-env-ref`]
-
-
- |zero or more |Maps the absolute JNDI name to the `resource-env-ref` in
-the corresponding Java EE XML file.
-
-a|
-link:#beaxk[`service-ref`]
-
-
- |zero or more |Specifies runtime settings for a web service reference.
-
-a|
-link:#gauao[`message-destination-ref`]
-
-
- |zero or more |Specifies the name of a physical message destination.
-
-a|
-link:#beauu[`message-destination`]
-
-
- |zero or more |Specifies the name of a logical message destination.
-
-a|
-link:#gjizj[`archive-name`]
-
-
- |zero or one |Specifies the name of the archive file.
-
-a|
-link:#gjjak[`compatibility`]
-
-
- |zero or one |Specifies the GlassFish Server release with which to be
-backward compatible in terms of JAR visibility requirements for
-applications.
-
-a|
-link:#gkhtr[`keep-state`]
-
-
- |zero or one |Retains web sessions, stateful session bean instances,
-and persistently created EJB timers across redeployments.
-
-a|
-link:#gkkfd[`version-identifier`]
-
-
- |zero or one |Contains version information for an application.
-|=======================================================================
-
-
-[[beaxx]][[GSDPG00159]][[glassfish-application-client]]
-
-`glassfish-application-client`
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Defines the GlassFish Server specific configuration for an application
-client. This is the root element; there can only be one
-`glassfish-application-client` element in a
-`glassfish-application-client.xml` file. See link:dd-files.html#beaqo[The
-glassfish-application-client.xml file].
-
-[[fvzgq]][[GSDPG00491]][[superelements-74]]
-
-Superelements
-^^^^^^^^^^^^^
-
-none
-
-[[fvzja]][[GSDPG00492]][[subelements-72]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the
-`glassfish-application-client` element.
-
-[[GSDPG920]][[sthref103]][[fvzjh]]
-
-
-Table C-63 `glassfish-application-client` subelements
-
-[width="100%",cols="28%,12%,60%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beasu[`ejb-ref`]
-
-
- |zero or more |Maps the absolute JNDI name to the `ejb-ref` in the
-corresponding Java EE XML file.
-
-a|
-link:#beaww[`resource-ref`]
-
-
- |zero or more |Maps the absolute JNDI name to the `resource-ref` in the
-corresponding Java EE XML file.
-
-a|
-link:#beawu[`resource-env-ref`]
-
-
- |zero or more |Maps the absolute JNDI name to the `resource-env-ref` in
-the corresponding Java EE XML file.
-
-a|
-link:#beaxk[`service-ref`]
-
-
- |zero or more |Specifies runtime settings for a web service reference.
-
-a|
-link:#gauao[`message-destination-ref`]
-
-
- |zero or more |Specifies the name of a physical message destination.
-
-a|
-link:#beauu[`message-destination`]
-
-
- |zero or more |Specifies the name of a logical message destination.
-
-a|
-link:#gauax[`java-web-start-access`]
-
-
- |zero or one |Specifies changes to default Java Web Start parameters.
-
-a|
-link:#gkkfd[`version-identifier`]
-
-
- |zero or one |Contains version information for an application client.
-|=======================================================================
-
-
-[[beaya]][[GSDPG00160]][[glassfish-ejb-jar]]
-
-`glassfish-ejb-jar`
-~~~~~~~~~~~~~~~~~~~
-
-Defines the GlassFish Server specific configuration for an EJB JAR file.
-This is the root element; there can only be one `glassfish-ejb-jar`
-element in a `glassfish-ejb-jar.xml` file. See
-link:dd-files.html#beaqm[The glassfish-ejb-jar.xml File].
-
-[[fvzhw]][[GSDPG00493]][[superelements-75]]
-
-Superelements
-^^^^^^^^^^^^^
-
-none
-
-[[fvzfv]][[GSDPG00494]][[subelements-73]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `glassfish-ejb-jar`
-element.
-
-[[GSDPG921]][[sthref104]][[fvzfu]]
-
-
-Table C-64 `glassfish-ejb-jar` Subelements
-
-[width="100%",cols="36%,12%,52%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beaxg[`security-role-mapping`]
-
-
- |zero or more |Maps a role in the corresponding Java EE XML file to a
-user or group.
-
-a|
-link:#beasx[`enterprise-beans`]
-
-
- |only one |Describes all the runtime properties for an EJB JAR file in
-the application.
-
-a|
-link:#gjjak[`compatibility`]
-
-
- |zero or one |Specifies the GlassFish Server release with which to be
-backward compatible in terms of JAR visibility requirements for
-applications.
-
-a|
-link:#gkhtw[`disable-nonportable-jndi-names`]
-
-
- |zero or one |Disables GlassFish Server specific JNDI names.
-
-a|
-link:#gkhtr[`keep-state`]
-
-
- |zero or one |Retains stateful session bean instances and persistently
-created EJB timers across redeployments.
-
-a|
-link:#gkkfd[`version-identifier`]
-
-
- |zero or one |Contains version information for an EJB module.
-|=======================================================================
-
-
-[[beayb]][[GSDPG00161]][[glassfish-web-app]]
-
-`glassfish-web-app`
-~~~~~~~~~~~~~~~~~~~
-
-Defines GlassFish Server specific configuration for a web module. This
-is the root element; there can only be one `glassfish-web-app` element
-in a `glassfish-web.xml` file. See link:dd-files.html#beaql[The
-glassfish-web.xml File].
-
-[[fvzgj]][[GSDPG00495]][[superelements-76]]
-
-Superelements
-^^^^^^^^^^^^^
-
-none
-
-[[fvzhr]][[GSDPG00496]][[subelements-74]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `glassfish-web-app`
-element.
-
-[[GSDPG922]][[sthref105]][[fvzgf]]
-
-
-Table C-65 `glassfish-web-app` Subelements
-
-[width="100%",cols="28%,12%,60%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beasg[`context-root`]
-
-
- |zero or one |Contains the web context root for the web module.
-
-a|
-link:#beaxg[`security-role-mapping`]
-
-
- |zero or more |Maps roles to users or groups in the currently active
-realm.
-
-a|
-link:#beaxm[`servlet`]
-
-
- |zero or more |Specifies a principal name for a servlet, which is used
-for the `run-as` role defined in `web.xml`.
-
-a|
-link:#beatm[`idempotent-url-pattern`]
-
-
- |zero or more |Specifies a URL pattern for idempotent requests.
-
-a|
-link:#beaxp[`session-config`]
-
-
- |zero or one |Specifies session manager, session cookie, and other
-session-related information.
-
-a|
-link:#beasu[`ejb-ref`]
-
-
- |zero or more |Maps the absolute JNDI name to the `ejb-ref` in the
-corresponding Java EE XML file.
-
-a|
-link:#beaww[`resource-ref`]
-
-
- |zero or more |Maps the absolute JNDI name to the `resource-ref` in the
-corresponding Java EE XML file.
-
-a|
-link:#beawu[`resource-env-ref`]
-
-
- |zero or more |Maps the absolute JNDI name to the `resource-env-ref` in
-the corresponding Java EE XML file.
-
-a|
-link:#beaxk[`service-ref`]
-
-
- |zero or more |Specifies runtime settings for a web service reference.
-
-a|
-link:#gauao[`message-destination-ref`]
-
-
- |zero or more |Specifies the name of a physical message destination.
-
-a|
-link:#beard[`cache`]
-
-
- |zero or one |Configures caching for web application components.
-
-a|
-link:#bearq[`class-loader`]
-
-
- |zero or one |Specifies class loader configuration information.
-
-a|
-link:#beatx[`jsp-config`]
-
-
- |zero or one |Specifies JSP configuration information.
-
-a|
-link:#beaue[`locale-charset-info`]
-
-
- |zero or one |Deprecated. Use the `parameter-encoding` subelement of
-`glassfish-web-app` instead.
-
-a|
-link:#beavn[`parameter-encoding`]
-
-
- |zero or one |Determines the default request character encoding and how
-the web container decodes parameters from forms according to a hidden
-field value.
-
-a|
-link:#beavx[`property` (with attributes)]
-
-
- |zero or more |Specifies a property, which has a name and a value.
-
-a|
-link:#gikqk[`valve`]
-
-
- |zero or more |Specifies a custom valve.
-
-a|
-link:#beauu[`message-destination`]
-
-
- |zero or more |Specifies the name of a logical message destination.
-
-a|
-link:#beayt[`webservice-description`]
-
-
- |zero or more |Specifies a name and optional publish location for a web
-service.
-
-a|
-link:#gkhtr[`keep-state`]
-
-
- |zero or one |Retains web sessions across redeployments.
-
-a|
-link:#gkkfd[`version-identifier`]
-
-
- |zero or one |Contains version information for a web application.
-|=======================================================================
-
-
-[[fvzia]][[GSDPG00497]][[attributes-16]]
-
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `glassfish-web-app`
-element.
-
-[[GSDPG923]][[sthref106]][[fvzjf]]
-
-
-Table C-66 `glassfish-web-app` Attributes
-
-[width="172%",cols="17%,46%,37%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`error-url` |(blank) |(optional) Not implemented. Do not use.
-
-|`httpservlet-``security-``provider` |none |(optional) Specifies the
-`HttpServlet` message layer provider that the web container's servlet
-`auth-constraint` processing calls.
-|=======================================================================
-
-
-[[fvzgt]][[GSDPG00498]][[properties-7]]
-
-Properties
-^^^^^^^^^^
-
-The following table describes properties for the `glassfish-web-app`
-element.
-
-[[GSDPG924]][[sthref107]][[fvzim]]
-
-
-Table C-67 `glassfish-web-app` Properties
-
-[width="100%",cols="35%,23%,42%",options="header",]
-|=======================================================================
-|Property |Default |Description
-|`allowLinking` |`false` a|
-If `true`, resources in this web application that are symbolic links are
-served. You can also define this property for a virtual server. Web
-applications on the virtual server that do not define this property use
-the virtual server's value. For details, see
-link:../reference-manual/create-virtual-server.html#GSRFM00062[`create-virtual-server`(1)].
-
-Caution: Setting this property to `true` on Windows systems exposes JSP
-source code.
-
-|`alternatedocroot_n` |none a|
-Specifies an alternate document root (docroot), where n is a positive
-integer that allows specification of more than one. Alternate docroots
-allow web applications to serve requests for certain resources from
-outside their own docroot, based on whether those requests match one (or
-more) of the URI patterns of the web application's alternate docroots.
-
-If a request matches an alternate docroot's URI pattern, it is mapped to
-the alternate docroot by appending the request URI (minus the web
-application's context root) to the alternate docroot's physical location
-(directory). If a request matches multiple URI patterns, the alternate
-docroot is determined according to the following precedence order:
-
-* Exact match
-* Longest path match
-* Extension match
-
-For example, the following properties specify three alternate docroots.
-The URI pattern of the first alternate docroot uses an exact match,
-whereas the URI patterns of the second and third alternate docroots use
-extension and longest path prefix matches, respectively.
-
-[source,oac_no_warn]
-----
-<property name="alternatedocroot_1" 
-   value="from=/my.jpg dir=/srv/images/jpg"/>
-<property name="alternatedocroot_2" 
-   value="from=*.jpg dir=/srv/images/jpg"/>
-<property name="alternatedocroot_3" 
-   value="from=/jpg/* dir=/src/images"/>
-----
-
-The `value` of each alternate docroot has two components: The first
-component, `from`, specifies the alternate docroot's URI pattern, and
-the second component, `dir`, specifies the alternate docroot's physical
-location (directory). Spaces are allowed in the `dir` component.
-
-You can set this property for all the web applications on a specific
-virtual server. For details, see
-link:../reference-manual/create-virtual-server.html#GSRFM00062[`create-virtual-server`(1)].
-
-|`valve_n` |none a|
-This property is deprecated. Use the link:#gikqk[`valve`] subelement
-instead.
-
-Specifies a fully qualified class name of a custom valve, where n is a
-positive integer that allows specification of more than one. The valve
-class must implement the org.apache.catalina.Valve interface from Tomcat
-or previous GlassFish Server releases, or the
-org.glassfish.web.valve.GlassFishValve interface from the current
-GlassFish Server release. For example:
-
-[source,oac_no_warn]
-----
-<property name="valve_1" 
-   value="org.glassfish.extension.Valve"/>
-----
-
-You can set this property for all the web applications on a specific
-virtual server. For details, see
-link:../reference-manual/create-virtual-server.html#GSRFM00062[`create-virtual-server`(1)].
-
-|`listener_n` |none a|
-Specifies a fully qualified class name of a custom Catalina listener,
-where n is a positive integer that allows specification of more than
-one. The listener class must implement the
-org.apache.catalina.ContainerListener,
-org.apache.catalina.LifecycleListener, or
-org.apache.catalina.InstanceListener interface. For example:
-
-[source,oac_no_warn]
-----
-<property name="listener_1" 
-   value="org.glassfish.extension.MyLifecycleListener"/>
-----
-
-You can set this property for all the web applications on a specific
-virtual server. For details, see
-link:../reference-manual/create-virtual-server.html#GSRFM00062[`create-virtual-server`(1)].
-
-|`crossContextAllowed` |`true` |If `true`, allows this web application
-to access the contexts of other web applications using the
-`ServletContext.``getContext()`method.
-
-|`relativeRedirectAllowed` |`false` |If `true`, allows this web
-application to send a relative URL to the client using
-`HttpServletResponse.``sendRedirect()`, and instructs the web container
-not to translate any relative URLs to fully qualified ones.
-
-|`reuseSessionID` |`false` |If `true`, sessions generated for this web
-application use the session ID specified in the request.
-
-|`securePagesWithPragma` |`true` a|
-Set this property to `false` to ensure that for this web application
-file downloads using SSL work properly in Internet Explorer.
-
-You can set this property for all the web applications on a specific
-virtual server. For details, see
-link:../reference-manual/create-virtual-server.html#GSRFM00062[`create-virtual-server`(1)].
-
-|`singleThreadedServletPoolSize` |`5` |Specifies the maximum number of
-servlet instances allocated for each `SingleThreadModel` servlet in the
-web application.
-
-|`tempdir` a|
-domain-dir`/generated/`app-name
-
-or
-
-domain-dir`/generated/`module-name
-
- |Specifies a temporary directory for use by this web module. This value
-is used to construct the value of the `javax.servlet.context.``tempdir`
-context attribute. Compiled JSP files are also placed in this directory.
-
-|`useResponseCTForHeaders` |`false` |If `true`, response headers are
-encoded using the response's charset instead of the default (UTF-8).
-|=======================================================================
-
-
-[[giygy]][[GSDPG00162]][[group-map]]
-
-`group-map`
-~~~~~~~~~~~
-
-Maps an EIS group to a group defined in the GlassFish Server domain.
-
-[[GSDPG925]][[sthref108]]
-
-
-[[superelements-77]]
-Superelements
-^^^^^^^^^^^^^
-
-link:#giyht[`work-security-map`] (`glassfish-resources.xml`)
-
-[[giyid]][[GSDPG00499]][[subelements-75]]
-
-Subelements
-^^^^^^^^^^^
-
-none
-
-[[GSDPG926]][[sthref109]]
-
-
-[[attributes-17]]
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `group-map` element.
-
-[[GSDPG927]][[sthref110]][[sthref111]]
-
-
-Table C-68 `group-map` Attributes
-
-[width="181%",cols="13%,49%,38%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`eis-group` |none |Specifies an EIS group.
-
-|`mapped-group` |none |Specifies a group defined in the GlassFish Server
-domain.
-|=======================================================================
-
-
-[[beati]][[GSDPG00163]][[group-name]]
-
-`group-name`
-~~~~~~~~~~~~
-
-Specifies a group name in the current realm.
-
-[[fvzak]][[GSDPG00500]][[superelements-78]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaxg[`security-role-mapping`] (`glassfish-application.xml`,
-`glassfish-web.xml`, `glassfish-ejb-jar.xml`)
-
-[[fvywm]][[GSDPG00501]][[subelements-76]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beatk]][[GSDPG00502]][[http-method]]
-
-`http-method`
-^^^^^^^^^^^^^
-
-Specifies an HTTP method that is eligible for caching. The default is
-`GET`.
-
-[[fvzbq]][[GSDPG00317]][[superelements-79]]
-
-Superelements
-+++++++++++++
-
-link:#bearh[`cache-mapping`] (`glassfish-web.xml`)
-
-[[fvyyj]][[GSDPG00318]][[subelements-77]]
-
-Subelements
-+++++++++++
-
-none - contains data
-
-[[beatm]][[GSDPG00164]][[idempotent-url-pattern]]
-
-`idempotent-url-pattern`
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies a URL pattern for idempotent requests.
-
-[[fvzaj]][[GSDPG00503]][[superelements-80]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`)
-
-[[fvzea]][[GSDPG00504]][[subelements-78]]
-
-Subelements
-^^^^^^^^^^^
-
-none
-
-[[fvyxx]][[GSDPG00505]][[attributes-18]]
-
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the
-`idempotent-url-pattern` element.
-
-[[GSDPG928]][[sthref112]][[fvzca]]
-
-
-Table C-69 `idempotent-url-pattern` Attributes
-
-[width="181%",cols="12%,49%,39%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`url-pattern` |none |Specifies a URL pattern, which can contain
-wildcards. The URL pattern must conform to the mappings specified in
-section SRV 11.2 of the Servlet 2.4 specification.
-
-|`no-of-retries` |`-1` |(optional) Specifies the number of times the
-load balancer retries an idempotent request. A value of `-1` indicates
-infinite retries.
-|=======================================================================
-
-
-[[fvyxy]][[GSDPG00506]][[example-6]]
-
-Example
-^^^^^^^
-
-The following example specifies that all requests for the URI
-`sun-java/*` are idempotent.
-
-[source,oac_no_warn]
-----
-<idempotent-url-pattern url-pattern="sun_java/*" no-of-retries="10"/>
-----
-
-[[beatn]][[GSDPG00165]][[integrity]]
-
-`integrity`
-~~~~~~~~~~~
-
-Specifies if the target supports integrity-protected messages. The
-values are `NONE`, `SUPPORTED`, or `REQUIRED`.
-
-[[fvzdj]][[GSDPG00507]][[superelements-81]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beayh[`transport-config`] (`glassfish-ejb-jar.xml`)
-
-[[fvzdv]][[GSDPG00508]][[subelements-79]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beato]][[GSDPG00166]][[ior-security-config]]
-
-`ior-security-config`
-~~~~~~~~~~~~~~~~~~~~~
-
-Specifies the security information for the interoperable object
-reference (IOR).
-
-[[fvzbe]][[GSDPG00509]][[superelements-82]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
-
-[[fvzbv]][[GSDPG00510]][[subelements-80]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `ior-security-config`
-element.
-
-[[GSDPG929]][[sthref113]][[fvyyk]]
-
-
-Table C-70 `ior-security-config` Subelements
-
-[width="100%",cols="20%,11%,69%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beayh[`transport-config`]
-
-
- |zero or one |Specifies the security information for transport.
-
-a|
-link:#beaqw[`as-context`]
-
-
- |zero or one |Specifies the authentication mechanism used to
-authenticate the client. If specified, it is `USERNAME_PASSWORD`.
-
-a|
-link:#beaxb[`sas-context`]
-
-
- |zero or one |Describes the sas-context fields.
-|=======================================================================
-
-
-[[beatp]][[GSDPG00167]][[is-cache-overflow-allowed]]
-
-`is-cache-overflow-allowed`
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This element is deprecated. Do not use.
-
-[[fvzcu]][[GSDPG00511]][[superelements-83]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beara[`bean-cache`] (`glassfish-ejb-jar.xml`)
-
-[[beatq]][[GSDPG00168]][[is-one-one-cmp]]
-
-`is-one-one-cmp`
-~~~~~~~~~~~~~~~~
-
-This element is not used.
-
-[[fvyww]][[GSDPG00512]][[superelements-84]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beart[`cmp`] (`glassfish-ejb-jar.xml`)
-
-[[beatr]][[GSDPG00169]][[is-read-only-bean]]
-
-`is-read-only-bean`
-~~~~~~~~~~~~~~~~~~~
-
-Specifies that this entity bean is a read-only bean if `true`. If this
-element is absent, the default value of `false` is used.
-
-[[fvzan]][[GSDPG00513]][[superelements-85]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
-
-[[fvyvx]][[GSDPG00514]][[subelements-81]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beatt]][[GSDPG00170]][[java-method]]
-
-`java-method`
-~~~~~~~~~~~~~
-
-Specifies a method.
-
-[[fvyyw]][[GSDPG00515]][[superelements-86]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaut[`message`] (`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
-`glassfish-application-client.xml`)
-
-[[fvyvo]][[GSDPG00516]][[subelements-82]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `java-method` element.
-
-[[GSDPG930]][[sthref114]][[fvzdu]]
-
-
-Table C-71 `java-method` Subelements
-
-[width="100%",cols="30%,14%,56%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beavb[`method-name`]
-
-
- |only one |Specifies a method name.
-
-a|
-link:#beavd[`method-params`]
-
-
- |zero or one |Specifies fully qualified Java type names of method
-parameters.
-|=======================================================================
-
-
-[[gauax]][[GSDPG00171]][[java-web-start-access]]
-
-`java-web-start-access`
-~~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies changes to default Java Web Start parameters for an embedded
-or stand-alone application client module.
-
-[[gauba]][[GSDPG00517]][[superelements-87]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaxx[`glassfish-application-client`]
-(`glassfish-application-client.xml`)
-
-[[gauav]][[GSDPG00518]][[subelements-83]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the
-`java-web-start-access` element.
-
-[[GSDPG931]][[sthref115]][[gauaw]]
-
-
-Table C-72 `java-web-start-access` subelements
-
-[width="100%",cols="15%,11%,74%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beasg[`context-root`]
-
-
- |zero or one a|
-Contains the context root for the Java Web Start enabled application
-client module. If none is specified, a default is generated.
-
-The default for a web module is as follows:
-
-[source,oac_no_warn]
-----
-http://host:port/app-name/relative-URI-to-appclient-jar
-----
-
-The default for a stand-alone application client module is as follows:
-
-[source,oac_no_warn]
-----
-http://host:port/module-name
-----
-
-If the `module-name` is not specified during deployment, the name of the
-EAR or JAR file without the extension is used. If the web module is not
-in EAR or JAR file format, a name is generated and written to the server
-log.
-
-a|
-link:#gaubh[`eligible`]
-
-
- |zero or one |Specifies whether the application client module is
-eligible to be Java Web Start enabled. Allowed values are `true` (the
-default) and `false`.
-
-a|
-link:#gbgdw[`vendor`]
-
-
- |zero or one |Specifies the name of the vendor as it appears in Java
-Web Start download and launch screens. The default value is
-`Application Client`.
-
-a|
-link:#gkhun[`jnlp-doc`]
-
-
- |zero or one |Specifies the name of a custom JNLP file. If none is
-specified, a default JNLP file is generated.
-|=======================================================================
-
-
-[[giyil]][[GSDPG00172]][[jdbc-connection-pool]]
-
-`jdbc-connection-pool`
-~~~~~~~~~~~~~~~~~~~~~~
-
-Defines the attributes and properties that are required for creating a
-JDBC connection pool.
-
-[[GSDPG932]][[sthref116]]
-
-
-[[superelements-88]]
-Superelements
-^^^^^^^^^^^^^
-
-link:#giyiy[`resources`] (`glassfish-resources.xml`)
-
-[[GSDPG933]][[sthref117]]
-
-
-[[subelements-84]]
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `jdbc-connection-pool`
-element.
-
-[[GSDPG934]][[sthref118]][[sthref119]]
-
-
-Table C-73 `jdbc-connection-pool` Subelements
-
-[width="100%",cols="25%,12%,63%",options="header",]
-|==========================================================
-|Element |Required |Description
-a|
-link:#beaso[`description`]
-
-
- |zero or one |Contains a text description of this element.
-a|
-link:#beavx[`property` (with attributes)]
-
-
- |zero or more |Specifies a property or a variable.
-|==========================================================
-
-
-[[GSDPG935]][[sthref120]]
-
-
-[[attributes-19]]
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `jdbc-connection-pool`
-element. Changing the following attributes requires a server restart or
-the redeployment or disabling and re-enabling of applications that refer
-to the resource: `datasource-classname`, `associate-with-thread`,
-`lazy-connection-association`, and `lazy-connection-enlistment`.
-
-[[GSDPG936]][[sthref121]][[sthref122]]
-
-
-Table C-74 `jdbc-connection-pool` Attributes
-
-[width="181%",cols="24%,49%,27%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`name` |none |Specifies the name of the connection pool. A
-link:#giyhm[`jdbc-resource`] element's `pool-name` attribute refers to
-this `name`.
-
-|`datasource-``classname` |none |(optional) Specifies the class name of
-the associated vendor-supplied data source. This class must implement
-javax.sql.DataSource, javax.sql.XADataSource ,
-javax.sql.ConnectionPoolDatasource , or a combination.
-
-|`res-type` |none |(optional) Specifies the interface the data source
-class implements. The value of this attribute can be
-javax.sql.DataSource, javax.sql.XADataSource ,
-javax.sql.ConnectionPoolDatasource , or java.sql.Driver. To support
-configuration of JDBC drivers and applications that use java.sql.Driver
-implementations, set this attribute to java.sql.Driver . This attribute
-must be specified to avoid ambiguity when a data source class implements
-two or more of these interfaces or when a `driver-classname` is
-specified. An error occurs if this attribute has a legal value and the
-indicated interface is not implemented by the data source class.
-
-|`driver-``classname` |none |(optional) Specifies the vendor-supplied
-JDBC driver class name. This driver must implement the java.sql.Driver
-interface.
-
-|`ping` |`false` |(optional) Specifies whether to ping the pool during
-pool creation or reconfiguration to identify and warn of any erroneous
-attribute values.
-
-|`steady-pool-size` |`8` |(optional) Specifies the initial and minimum
-number of connections maintained in the pool.
-
-|`max-pool-size` |`32` |(optional) Specifies the maximum number of
-connections that can be created to satisfy client requests.
-
-|`max-wait-time-``in-millis` |`60000` |(optional) Specifies the amount
-of time, in milliseconds, that the caller is willing to wait for a
-connection. If `0`, the caller is blocked indefinitely until a resource
-is available or an error occurs.
-
-|`pool-resize-``quantity` |`2` a|
-(optional) Specifies the number of idle connections to be destroyed if
-the existing number of connections is above the `steady-pool-size`
-(subject to the `max-pool-size` limit).
-
-This is enforced periodically at the `idle-timeout-in-seconds` interval.
-An idle connection is one that has not been used for a period of
-`idle-timeout-in-seconds`. When the pool size reaches
-`steady-pool-size`, connection removal stops.
-
-|`idle-timeout-``in-seconds` |`300` a|
-(optional) Specifies the maximum time that a connection can remain idle
-in the pool. After this amount of time, the pool can close this
-connection.
-
-This timeout value must be kept shorter than the server side (database)
-timeout value to prevent the accumulation of unusable connections in the
-application.
-
-|`transaction-``isolation-level` |default JDBC driver isolation level a|
-(optional) Specifies the transaction isolation level on the pooled
-database connections. Allowed values are `read-uncommitted`,
-`read-committed` , `repeatable-read`, or `serializable`.
-
-Applications that change the isolation level on a pooled connection
-programmatically risk polluting the pool, which can lead to errors. See
-`is-isolation-``level-``guaranteed` for more details.
-
-|`is-isolation-``level-guaranteed` |`true` |(optional) Applicable only
-when `transaction-``isolation-``level` is explicitly set. If `true`,
-every connection obtained from the pool is guaranteed to have the
-desired isolation level. This might impact performance on some JDBC
-drivers. Only set this attribute to `false` if you are certain that the
-hosted applications do not return connections with altered isolation
-levels.
-
-|`is-connection-``validation-``required` |`false` |(optional) Specifies
-whether connections have to be validated before being given to the
-application. If a resource's validation fails, it is destroyed, and a
-new resource is created and returned.
-
-|`connection-``validation-``method` |`table` a|
-(optional) Legal values are as follows:
-
-* `auto-commit`, which uses
-`Connection.``setAutoCommit``(Connection.``getAutoCommit())`
-* `meta-data`, which uses `Connection.getMetaData()`
-* `table`, which performs a query on a table specified in the
-`validation-table-name` attribute
-* `custom-validation`, which uses a user-defined validation mechanism
-specified by the custom implementation class in `validation-classname`.
-
-Because many JDBC drivers cache the results of `auto-commit` and
-`meta-data` calls, they do not always provide reliable validations.
-Check with the driver vendor to determine whether these calls are cached
-or not.
-
-The `table` must exist and be accessible, but it doesn't require any
-rows. Do not use an existing table that has a large number of rows or a
-table that is already frequently accessed.
-
-|`validation-``table-``name` |none |(optional) Specifies the table name
-to be used to perform a query to validate a connection. This parameter
-is mandatory if and only if `connection-``validation-``method` is set to
-`table`.
-
-|`validation-``classname` |none a|
-(optional) Specifies the custom validation implementation class name.
-This parameter is mandatory if `connection-validation-method` is set to
-`custom-validation`. The classname provided must be accessible to the
-GlassFish Server. The specified class must implement the
-org.glassfish.api.jdbc.ConnectionValidation interface.
-
-GlassFish Server provides the following custom validation class
-templates for MSSQL, DB2, and Sybase databases. All of them implement
-the org.glassfish.api.jdbc.ConnectionValidation interface.
-
-* `org.glassfish.api.jdbc.MSSQLConnectionValidation`
-* `org.glassfish.api.jdbc.DB2ConnectionValidation`
-* `org.glassfish.api.jdbc.SybaseConnectionValidation`
-
-|`init-sql` |none |(optional) Specifies an SQL string to be executed
-whenever a connection is created (not reused) in the pool. This
-initializes the state of the connection.
-
-|`fail-all-``connections` |`false` |(optional) If `true`, closes all
-connections in the pool if a single validation check fails. This
-parameter is mandatory if and only if
-`is-connection-``validation-``required` is set to `true`.
-
-|`non-transactional-``connections` |`false` |(optional) If `true`,
-non-transactional connections can be made to the JDBC connection pool.
-These connections are not automatically enlisted with the transaction
-manager.
-
-|`allow-non-``component-``callers` |`false` |(optional) If `true`,
-non-Java-EE components, such as servlet filters, lifecycle modules, and
-third party persistence managers, can use this JDBC connection pool. The
-returned connection is automatically enlisted with the transaction
-context obtained from the transaction manager. Standard Java EE
-components can also use such pools. Connections obtained by
-non-component callers are not automatically closed at the end of a
-transaction by the container. They must be explicitly closed by the
-caller.
-
-|`validate-atmost-``once-period-``in-``seconds` |`0` a|
-(optional) Specifies the time interval within which a connection is
-validated at most once. Minimizes the number of validation calls.
-
-A value of zero implies that GlassFish Server does not attempt to
-minimize the number of validation requests by a connection. That is, a
-value of zero disables this attribute. As a result, the same connection
-is validated every time the application acquires the connection.
-
-|`connection-``leak-timeout-``in-seconds` |`0` a|
-(optional) Detects potential connection leaks by the application. A
-connection that is not returned back to the pool by the application
-within the specified period is assumed to be potentially leaking, and a
-stack trace of the caller is logged. A zero value disables leak
-detection. A nonzero value enables leak tracing.
-
-Use this attribute along with `connection-leak-reclaim` to avoid
-potential connection leaks from the application.
-
-|`connection-leak-``reclaim` |`false` |(optional) If `true`, the pool
-will reclaim a connection after `connection-leak-timeout-in-seconds`
-occurs.
-
-|`connection-creation-``retry-attempts` |`0` |(optional) Specifies the
-number of attempts to create a new connection in case of a failure.
-
-|`connection-creation-``retry-interval-``in-seconds` |`10` |(optional)
-Specifies the time interval between attempts to create a connection when
-`connection-creation-retry-attempts` is greater than `0`.
-
-|`statement-leak-``timeout-``in-seconds` |`0` a|
-(optional) Detects potential statement leaks by the application. A
-statement that is not closed by the application within the specified
-period is assumed to be potentially leaking, and a stack trace of the
-caller is logged. A zero value disables leak detection. A nonzero value
-enables leak tracing.
-
-Use this attribute along with `statement-leak-reclaim` to avoid
-potential statement leaks from the application.
-
-|`statement-leak-``reclaim` |`false` |(optional) If `true`, the reclaim
-of a statement after `statement-leak-timeout-in-seconds` occurs.
-
-|`statement-timeout-``in-seconds` |`-1` a|
-(optional) Sets the query timeout property of a statement to enable
-termination of abnormally long running queries. The default value of
-`-1` disables this feature.
-
-An abnormally long running JDBC query executed by an application may
-leave it in a hanging state unless a timeout is explicitly set on the
-statement. This attribute guarantees that all queries automatically time
-out if not completed within the specified period. When statements are
-created, the `queryTimeout` is set according to the value specified in
-this attribute. This works only when the underlying JDBC driver supports
-`queryTimeout` for `Statement`, `PreparedStatement`,
-`CallableStatement`, and `ResultSet`.
-
-|`lazy-connection-``enlistment` |`false` |(optional) If `true`, a
-connection is not enlisted in a transaction until it is used. If
-`false`, any connection object available to a transaction is enlisted in
-the transaction.
-
-|`lazy-connection-``association` |`false` |(optional) If `true`, a
-physical connection is not associated with a logical connection until it
-is used. If `false`, a physical connection is associated with a logical
-connection even before it is used.
-
-|`associate-with-``thread` |`false` a|
-(optional) Specifies whether connections are associated with the thread
-to enable the thread to reuse the connections. If `true`, allows
-connections to be saved as `ThreadLocal` in the calling thread.
-Connections get reclaimed only when the calling thread dies or when the
-calling thread is not in use and the pool has run out of connections. If
-`false`, the thread must obtain a connection from the pool each time the
-thread requires a connection.
-
-This attribute associates connections with a thread such that when the
-same thread is in need of connections, it can reuse the connections
-already associated with that thread. In this case, the overhead of
-getting connections from the pool is avoided. However, when this value
-is set to `true`, you should verify that the value of the
-`max-pool-size` attribute is comparable to the `max-thread-pool-size`
-attribute of the associated thread pool. If the `max-thread-pool-size`
-value is much higher than the `max-pool-size` value, a lot of time is
-spent associating connections with a new thread after dissociating them
-from an older one. Use this attribute in cases where the thread pool
-should reuse connections to avoid this overhead.
-
-| | |
-
-|`match-connections` |`false` a|
-(optional) Specifies whether a connection that is selected from the pool
-should be matched with the connections with certain credentials. If
-`true`, enables connection matching. You can set to `false` if
-connections are homogeneous.
-
-If the connection pool is used by applications that have multiple user
-credentials, `match-connections` must be `true`. The connection pool
-matches the request's credential with the connections in the pool and
-returns a matched connection for use. For new requests with different
-credentials, unmatched free connections are automatically purged to
-provide new connections to satisfy the new requests. This attribute need
-not be `true` if it is known that there is only one credential used by
-the applications and therefore the pool has homogeneous connections.
-
-|`max-connection-``usage-count` |`0` |(optional) Specifies the number of
-times a connections is reused by the pool, after which it is closed. A
-zero value disables this feature. By limiting the maximum number of
-times a connection can be reused, you can avoid statement leaks if the
-application does not close statements.
-
-|`sql-trace-``listeners` |none |(optional) Specifies that SQL statements
-executed by applications need to be traced. Helps administrators analyze
-the statements. Expects as a value a comma-separated list of listener
-implementation class names. Enables easy filtering of log messages for
-the SQL statements. SQL trace listeners must implement the
-org.glassfish.api.jdbc.SQLTraceListener interface.
-
-|`statement-``cache-size` |`0` |(optional) Specifies the number of
-statements to be cached using the `lru` (Least Recently Used) caching
-mechanism. The default value of `0` disables statement caching.
-
-|`pooling` |`true` |(optional) If `false`, disables connection pooling.
-
-|`wrap-jdbc-objects` |`true` a|
-(optional) If `true`, wrapped JDBC objects are returned for `Statement`,
-`PreparedStatement`, `CallableStatement`, `ResultSet`, and
-`DatabaseMetaData`.
-
-This option ensures that `Statement.getConnection()` is the same as
-`DataSource.getConnection()`. Therefore, this option should be `true`
-when both `Statement.getConnection()` and `DataSource.getConnection()`
-are done. The default is `false` to avoid breaking existing
-applications.
-
-|=======================================================================
-
-
-[[GSDPG937]][[sthref123]]
-
-
-[[glassfish-server-properties]]
-GlassFish Server Properties
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The following table describes properties for the `jdbc-connection-pool`
-element that are specific to GlassFish Server.
-
-[[GSDPG938]][[sthref124]][[sthref125]]
-
-
-Table C-75 `jdbc-connection-pool` Database Properties
-
-[width="172%",cols="18%,46%,36%",options="header",]
-|=======================================================================
-|Property |Default |Description
-|`dynamic-reconfiguration-wait-timeout-in-seconds` |none a|
-Specifies the timeout for dynamic reconfiguration of the pool.
-In-progress connection requests must complete before this timeout
-expires or they must be retried. New connection requests wait for this
-timeout to expire before acquiring connections to the reconfigured pool.
-If this property exists and has a positive value, it is enabled.
-
-If this property is not set and pool reconfiguration results in pool
-recreation, in-progress connection requests must be retried.
-
-|`number-of-top-queries-to-report` |`10` a|
-Specifies the number of most frequently used queries to display. For
-example, the default value of `10` displays the top ten queries.
-
-This property is disabled when `jdbc-connection-pool` monitoring is set
-to `LOW` or `OFF`. It is enabled when `jdbc-connection-pool` monitoring
-is set to `HIGH` and the `sql-trace-listeners` attribute is set.
-
-|`time-to-keep-queries-in-minutes` |`5` a|
-Specifies the time to retain queries in a cache before they are purged.
-
-This property is disabled when `jdbc-connection-pool` monitoring is set
-to `LOW` or `OFF`. It is enabled when `jdbc-connection-pool` monitoring
-is set to `HIGH` and the `sql-trace-listeners` attribute is set.
-
-|=======================================================================
-
-
-[[GSDPG939]][[sthref126]]
-
-
-[[database-properties]]
-Database Properties
-^^^^^^^^^^^^^^^^^^^
-
-Most JDBC drivers allow use of standard property lists to specify the
-user, password, and other resource configuration information. Although
-properties are optional with respect to the GlassFish Server, some
-properties might be necessary for most databases. For details, see the
-JDBC 4.0 Standard Extension API.
-
-When properties are specified, they are passed to the vendor's data
-source class (specified by the `datasource-classname` attribute) as is
-using setName(value) methods.
-
-The `user` and `password` properties are used as the default principal
-if container managed authentication is specified and a
-`default-resource-principal` is not found in the application deployment
-descriptors.
-
-The following table describes some common properties for the
-`jdbc-connection-pool` element.
-
-Changing JDBC driver properties requires a server restart.
-
-[[GSDPG940]][[sthref127]][[sthref128]]
-
-
-Table C-76 `jdbc-connection-pool` Database Properties
-
-[width="100%",cols="19%,81%",options="header",]
-|=======================================================================
-|Property |Description
-|`user` |Specifies the user name for connecting to the database.
-
-|`password` |Specifies the password for connecting to the database.
-
-|`databaseName` |Specifies the database for this connection pool.
-
-|`serverName` |Specifies the database server for this connection pool.
-
-|`port` |Specifies the port on which the database server listens for
-requests.
-
-|`networkProtocol` |Specifies the communication protocol.
-
-|`roleName` |Specifies the initial SQL role name.
-
-|`datasourceName` |Specifies an underlying XADataSource, or a
-ConnectionPoolDataSource if connection pooling is done.
-
-|`description` |Specifies a text description.
-
-|`url` |Specifies the URL for this connection pool. Although this is not
-a standard property, it is commonly used.
-|=======================================================================
-
-
-[[giyhm]][[GSDPG00173]][[jdbc-resource]]
-
-`jdbc-resource`
-~~~~~~~~~~~~~~~
-
-Defines a JDBC (javax.sql.DataSource) resource.
-
-[[GSDPG941]][[sthref129]]
-
-
-[[superelements-89]]
-Superelements
-^^^^^^^^^^^^^
-
-link:#giyiy[`resources`] (`glassfish-resources.xml`)
-
-[[GSDPG942]][[sthref130]]
-
-
-[[subelements-85]]
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `jdbc-resource`
-element.
-
-[[GSDPG943]][[sthref131]][[sthref132]]
-
-
-Table C-77 `jdbc-resource` Subelements
-
-[width="100%",cols="25%,12%,63%",options="header",]
-|==========================================================
-|Element |Required |Description
-a|
-link:#beaso[`description`]
-
-
- |zero or one |Contains a text description of this element.
-a|
-link:#beavx[`property` (with attributes)]
-
-
- |zero or more |Specifies a property or a variable.
-|==========================================================
-
-
-[[GSDPG944]][[sthref133]]
-
-
-[[attributes-20]]
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `jdbc-resource`
-element.
-
-[[GSDPG945]][[sthref134]][[sthref135]]
-
-
-Table C-78 `jdbc-resource` Attributes
-
-[width="172%",cols="9%,46%,45%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`jndi-name` |none |Specifies the JNDI name for the resource.
-
-|`description` |none |(optional) Specifies a text description of this
-element.
-
-|`pool-name` |none |Specifies the `name` of the associated
-link:#giyil[`jdbc-connection-pool`].
-
-|`object-type` |`user` a|
-(optional) Defines the type of the resource. Allowed values are:
-
-* `system-all` - A system resource for all server instances and the
-domain application server.
-* `system-admin` - A system resource only for the domain application
-server.
-* `system-instance` - A system resource for all server instances only.
-* `user` - A user resource.
-
-|`enabled` |`true` |(optional) Determines whether this resource is
-enabled at runtime.
-|=======================================================================
-
-
-[[beatu]][[GSDPG00174]][[jms-durable-subscription-name]]
-
-`jms-durable-subscription-name`
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies the durable subscription associated with a message-driven bean
-class. Only applies to the Java Message Service Topic Destination type,
-and only when the message-driven bean deployment descriptor subscription
-durability is Durable.
-
-[[fvzdb]][[GSDPG00519]][[superelements-90]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
-
-[[fvzdp]][[GSDPG00520]][[subelements-86]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beatv]][[GSDPG00175]][[jms-max-messages-load]]
-
-`jms-max-messages-load`
-~~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies the maximum number of messages to load into a Java Message
-Service session at one time for a message-driven bean to serve. The
-default is 1.
-
-[[fvyzx]][[GSDPG00521]][[superelements-91]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
-
-[[fvyxq]][[GSDPG00522]][[subelements-87]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beatw]][[GSDPG00176]][[jndi-name]]
-
-`jndi-name`
-~~~~~~~~~~~
-
-Specifies the absolute `jndi-name` of a URL resource or a resource.
-
-For entity beans and session beans, this value specifies the global JNDI
-name of the `EJBHome` object. It is only needed if the entity or session
-bean exposes a remote view.
-
-For JMS message-driven beans, this is the JNDI name of the JMS resource
-from which the message-driven bean consumes JMS messages. This
-information is alternatively specified within the
-link:#beaqs[`activation-config`] subelement of the
-link:#beaus[`mdb-resource-adapter`] element. For more information about
-JMS resources, see "link:../application-development-guide/jms.html#GSDVG00020[Using the Java Message Service]" in
-GlassFish Server Open Source Edition Application Development Guide.
-
-[[fvyyy]][[GSDPG00523]][[superelements-92]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beasu[`ejb-ref`], link:#beauu[`message-destination`],
-link:#beawu[`resource-env-ref`], link:#beaww[`resource-ref`]
-(`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
-`glassfish-application-client.xml`); link:#bearv[`cmp-resource`],
-link:#beass[`ejb`], link:#beaur[`mdb-connection-factory`]
-(`glassfish-ejb-jar.xml`)
-
-[[fvywz]][[GSDPG00524]][[subelements-88]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[gkhun]][[GSDPG00177]][[jnlp-doc]]
-
-`jnlp-doc`
-~~~~~~~~~~
-
-Contains the name of a custom JNLP file, which modifies the behavior of
-a Java Web Start enabled application client module. If none is
-specified, a default JNLP file is generated.
-
-The value of this element is a relative path with the following format:
-
-[source,oac_no_warn]
-----
-[path-to-JAR-in-EAR!]path-to-JNLP-in-JAR
-----
-
-The default path-to-JAR-in-EAR is the current application client JAR
-file. For example, if the JNLP file is in the application client JAR
-file at `custom/myInfo.jnlp`, the element value would look like this:
-
-[source,oac_no_warn]
-----
-<java-web-start-access>
-   <jnlp-doc>custom/myInfo.jnlp</jnlp-doc>
-</java-web-start-access>
-----
-
-If the application client is inside an EAR file, you can place the
-custom JNLP file inside another JAR file in the EAR. For example, if the
-JNLP file is in a JAR file at `other/myLib.jar`, the element value would
-look like this, with an exclamation point (`!`) separating the path to
-the JAR from the path in the JAR:
-
-[source,oac_no_warn]
-----
-<java-web-start-access>
-   <jnlp-doc>other/myLib.jar!custom/myInfo.jnlp</jnlp-doc>
-</java-web-start-access>
-----
-
-For information about the allowed contents of a custom JNLP file, see
-"link:../application-development-guide/java-clients.html#GSDVG00012[Developing Java Clients]" in GlassFish Server Open
-Source Edition Application Development Guide.
-
-[[gkhuj]][[GSDPG00525]][[superelements-93]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#gauax[`java-web-start-access`]
-(`glassfish-application-client.xml`)
-
-[[gkhtm]][[GSDPG00526]][[subelements-89]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beatx]][[GSDPG00178]][[jsp-config]]
-
-`jsp-config`
-~~~~~~~~~~~~
-
-Specifies JSP configuration information.
-
-[[fvywi]][[GSDPG00527]][[superelements-94]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`)
-
-[[fvzcs]][[GSDPG00528]][[subelements-90]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `jsp-config` element.
-
-[[GSDPG946]][[sthref136]][[fvyzp]]
-
-
-Table C-79 `jsp-config` Subelements
-
-[width="100%",cols="37%,14%,49%",options="header",]
-|==================================================================
-|Element |Required |Description
-a|
-link:#beavx[`property` (with attributes)]
-
-
- |zero or more |Specifies a property, which has a name and a value.
-|==================================================================
-
-
-[[fvyzf]][[GSDPG00529]][[properties-8]]
-
-Properties
-^^^^^^^^^^
-
-The default property values are tuned for development of JSP files at
-the cost of performance. To maximize performance, set `jsp-config`
-properties to these non-default values:
-
-* `development` - `false` (as an alternative, set to `true` and give
-`modificationTestInterval` a large value)
-* `mappedfile` - `false`
-* `trimSpaces` - `true`
-* `suppressSmap` - `true`
-* `fork` - `false` (on Solaris)
-* `classdebuginfo` - `false`
-
-The following table describes properties for the `jsp-config` element.
-
-[[GSDPG947]][[sthref137]][[fvzde]]
-
-
-Table C-80 `jsp-config` Properties
-
-[width="100%",cols="29%,11%,60%",options="header",]
-|=======================================================================
-|Property |Default |Description
-|`checkInterval` |`0` |If `development` is set to `false` and
-`checkInterval` is greater than zero, background compilations are
-enabled. The `checkInterval` is the time in seconds between checks to
-see if a JSP file needs to be recompiled.
-
-|`classdebuginfo` |`true` |Specifies whether the generated Java servlets
-are compiled with the debug option set (`-g` for `javac`).
-
-|`classpath` |created dynamically based on the current web application
-|Specifies the classpath to use when compiling generated servlets.
-
-|`compiler` |`javac` a|
-Specifies the compiler Ant uses to compile JSP files. See the Ant
-documentation for more information:
-
-`http://antinstaller.sourceforge.net/manual/manual/`
-
-|`compilerSourceVM` |Depends on GlassFish Server's Java runtime a|
-Specifies the JDK release with which source compatibility of the
-generated servlets is provided. Same as the `-source` release option of
-`javac`.
-
-For more information, see
-`http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/javac.html#options`.
-
-|`compilerTargetVM` |Depends on GlassFish Server's Java runtime a|
-Specifies the Virtual Machine for the Java platform (JVM software)
-version for which the servlet class files are generated. Same as the
-`-target` release option of `javac`.
-
-For more information, see
-`http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/javac.html#options`.
-
-|`defaultBufferNone` |`false` |If `true`, the default for the `buffer`
-attribute of the `page` directive is `none`.
-
-|`development` |`true` |If set to `true`, enables development mode,
-which allows JSP files to be checked for modification. Specify the
-frequency at which JSPs are checked using the `modificationTestInterval`
-property.
-
-|`dumpSmap` |`false` |If set to `true`, dumps SMAP information for JSR
-45 debugging to a file. Set to `false` if `suppressSmap` is `true`.
-
-|`enablePooling` |`true` |If set to `true`, tag handler pooling is
-enabled.
-
-|`enableTldValidation` |`false` |If set to `true`, all Tag Library
-Descriptor (TLD) files referenced by the web application are validated
-against their underlying schema or DTD file.
-
-|`errorOnUseBeanInvalidClassAttribute` |`false` |If set to `true`,
-issues an error when the value of the `class` attribute in a `useBean`
-action is not a valid bean class.
-
-|`fork` |`true` |Specifies that Ant forks the compiling of JSP files,
-using a JVM machine separate from the one in which Tomcat is running.
-
-|`genStrAsByteArray` |`true` |If `true`, text strings are generated as
-bytes (encoded with the page encoding), if the page is not buffered.
-
-|`genStrAsCharArray` |`false` |If set to `true`, generates text strings
-as `char` arrays, which improves performance in some cases.
-
-|`httpMethods` |`*` for all methods |Specifies a comma separated list of
-HTTP methods supported by the `JspServlet`.
-
-|`ieClassId` |`clsid:8AD9C840-``044E-11D1-B3E9-``00805F499D93`
-|Specifies the Java plug-in COM class ID for Internet Explorer. Used by
-the `<jsp:plugin>` tags.
-
-|`ignoreJspFragmentErrors` |`false` |If set to `true`, instructs the
-compiler to ignore any JSP precompilation errors pertaining to
-statically included JSP segments that, despite not being top level JSP
-files, use the `.jsp` or `.jspx` extension (instead of the recommended
-`.jspf`).
-
-|`initialCapacity` |`32` |Specifies the initial capacity of the
-`HashMap` that maps JSP files to their corresponding servlets.
-
-|`javaEncoding` |`UTF8` a|
-Specifies the encoding for the generated Java servlet. This encoding is
-passed to the Java compiler that is used to compile the servlet as well.
-By default, the web container tries to use `UTF8`. If that fails, it
-tries to use the `javaEncoding` value.
-
-For encodings, see:
-
-`http://docs.oracle.com/javase/7/docs/technotes/guides/intl/encoding.doc.html`
-
-|`keepgenerated` |`true` with JDK 5 and before and for `jspc`, otherwise
-`false` |If set to `true`, keeps the generated Java files. If `false`,
-deletes the Java files.
-
-|`mappedfile` |`true` |If set to `true`, generates static content with
-one print statement per input line, to ease debugging.
-
-|`modificationTestInterval` |`0` |Specifies the frequency in seconds at
-which JSPs are checked for modification. A value of `0` causes the JSP
-to be checked on every access. Used only if `development` is set to
-`true`.
-
-|`reload-interval` |`0` |Specifies the frequency in seconds at which JSP
-files are checked for modifications. Setting this value to `0` checks
-JSP files for modifications on every request. Setting this value to `-1`
-disables checks for JSP modifications and JSP recompilation.
-
-|`saveBytecode` |`true` for `jspc`, otherwise `false` |If `true`,
-generated byte code is saved to `.class` files? This option is
-meaningful only when the Java compiler API, JSR 199 (available with and
-used as the default on Java 6) is used for `javac` compilations.
-
-|`scratchdir` |The default work directory for the web application
-|Specifies the working directory created for storing all the generated
-code.
-
-|`suppressSmap` |`false` |If set to `true`, generation of SMAP
-information for JSR 45 debugging is suppressed.
-
-|`trimSpaces` |`false` |If set to `true`, trims white spaces in template
-text between actions or directives.
-
-|`usePrecompiled` |`false` a|
-If set to `true`, an accessed JSP file is not compiled. Its precompiled
-servlet class is used instead.
-
-It is assumed that JSP files have been precompiled, and their
-corresponding servlet classes have been bundled in the web application's
-`WEB-INF/lib` or `WEB-INF/classes` directory.
-
-|`xpoweredBy` |`true` |If set to `true`, the X-Powered-By response
-header is added by the generated servlet.
-|=======================================================================
-
-
-[[gkhtr]][[GSDPG00179]][[keep-state]]
-
-`keep-state`
-~~~~~~~~~~~~
-
-If set to `true`, retains web sessions, stateful session bean instances,
-and persistently created EJB timers across redeployments. The
-`--keepstate` option of the link:../reference-manual/redeploy.html#GSRFM00217[`redeploy`] subcommand
-takes precedence. The default for both is `false`.
-
-Some changes to an application between redeployments prevent this
-feature from working properly. For example, do not change the set of
-instance variables in the SFSB bean class.
-
-For web applications, this feature is applicable only if in the
-`glassfish-web-app.xml` file the `persistence-type` attribute of the
-link:#beaxq[`session-manager`] element is `file`.
-
-For stateful session bean instances, the persistence type without high
-availability is set in the server (the `sfsb-persistence-type`
-attribute) and must be set to `file`, which is the default and
-recommended value.
-
-If any active web session, SFSB instance, or EJB timer fails to be
-preserved or restored, none of these will be available when the
-redeployment is complete. However, the redeployment continues and a
-warning is logged.
-
-To preserve active state data, GlassFish Server serializes the data and
-saves it in memory. To restore the data, the class loader of the newly
-redeployed application deserializes the data that was previously saved.
-
-[[gkhto]][[GSDPG00530]][[superelements-95]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaxw[`glassfish-application`] (`glassfish-application.xml`),
-link:#beayb[`glassfish-web-app`] (`glassfish-web-app.xml`),
-link:#beaya[`glassfish-ejb-jar`] (`glassfish-ejb-jar.xml`)
-
-[[gkhuk]][[GSDPG00531]][[subelements-91]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beatz]][[GSDPG00180]][[key-field]]
-
-`key-field`
-~~~~~~~~~~~
-
-Specifies a component of the key used to look up and extract cache
-entries. The web container looks for the named parameter, or field, in
-the specified scope.
-
-If this element is not present, the web container uses the Servlet Path
-(the path section that corresponds to the servlet mapping that activated
-the current request). See the Servlet 2.4 specification, section SRV
-4.4, for details on the Servlet Path.
-
-[[fvyvb]][[GSDPG00532]][[superelements-96]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#bearh[`cache-mapping`] (`glassfish-web.xml`)
-
-[[fvzal]][[GSDPG00533]][[subelements-92]]
-
-Subelements
-^^^^^^^^^^^
-
-none
-
-[[fvzdn]][[GSDPG00534]][[attributes-21]]
-
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `key-field` element.
-
-[[GSDPG948]][[sthref138]][[fvyyi]]
-
-
-Table C-81 `key-field` Attributes
-
-[width="181%",cols="51%,11%,38%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`name` |none |Specifies the input parameter name.
-
-|`scope` |`request.parameter` |(optional) Specifies the scope from which
-the input parameter is retrieved. Allowed values are
-`context.attribute`, `request.header`, `request.parameter`,
-`request.cookie`, `session.id`, and `session.attribute`.
-|=======================================================================
-
-
-[[beaub]][[GSDPG00181]][[level]]
-
-`level`
-~~~~~~~
-
-Specifies the name of a hierarchical fetch group. The name must be an
-integer. Fields and relationships that belong to a hierarchical fetch
-group of equal (or lesser) value are fetched at the same time. The value
-of level must be greater than zero. Only one is allowed.
-
-[[fvyvf]][[GSDPG00535]][[superelements-97]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beatc[`fetched-with`] (`sun-cmp-mappings.xml`)
-
-[[fvywq]][[GSDPG00536]][[subelements-93]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beauc]][[GSDPG00182]][[local-home-impl]]
-
-`local-home-impl`
-~~~~~~~~~~~~~~~~~
-
-Specifies the fully-qualified class name of the generated `EJBLocalHome`
-`impl` class.
-
-
-[NOTE]
-=======================================================================
-
-This value is automatically generated by the server at deployment or
-redeployment time. Do not specify it or change it after deployment.
-
-=======================================================================
-
-
-[[fvyzo]][[GSDPG00537]][[superelements-98]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beath[`gen-classes`] (`glassfish-ejb-jar.xml`)
-
-[[fvzah]][[GSDPG00538]][[subelements-94]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beaud]][[GSDPG00183]][[local-impl]]
-
-`local-impl`
-~~~~~~~~~~~~
-
-Specifies the fully-qualified class name of the generated
-`EJBLocalObject` `impl` class.
-
-
-[NOTE]
-=======================================================================
-
-This value is automatically generated by the server at deployment or
-redeployment time. Do not specify it or change it after deployment.
-
-=======================================================================
-
-
-[[fvzcr]][[GSDPG00539]][[superelements-99]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beath[`gen-classes`] (`glassfish-ejb-jar.xml`)
-
-[[fvzai]][[GSDPG00540]][[subelements-95]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beaue]][[GSDPG00184]][[locale-charset-info]]
-
-`locale-charset-info`
-~~~~~~~~~~~~~~~~~~~~~
-
-Deprecated. For backward compatibility only. Use the
-link:#beavn[`parameter-encoding`] subelement of
-link:#beayb[`glassfish-web-app`] instead. Specifies information about
-the application's internationalization settings.
-
-[[fvyvm]][[GSDPG00541]][[superelements-100]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`)
-
-[[fvzbi]][[GSDPG00542]][[subelements-96]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `locale-charset-info`
-element.
-
-[[GSDPG949]][[sthref139]][[fvyzd]]
-
-
-Table C-82 `locale-charset-info` Subelements
-
-[width="100%",cols="22%,12%,66%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beauf[`locale-charset-map`]
-
-
- |one or more |Maps a locale and an agent to a character encoding.
-Provided for backward compatibility. Used only for request processing,
-and only if no `parameter-encoding` is defined.
-
-a|
-link:#beavn[`parameter-encoding`]
-
-
- |zero or one |Determines the default request character encoding and how
-the web container decodes parameters from forms according to a hidden
-field value.
-|=======================================================================
-
-
-[[fvywh]][[GSDPG00543]][[attributes-22]]
-
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `locale-charset-info`
-element.
-
-[[GSDPG950]][[sthref140]][[fvzcd]]
-
-
-Table C-83 `locale-charset-info` Attributes
-
-[width="181%",cols="13%,49%,38%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`default-locale` |none |Although a value is required, the value is
-ignored. Use the `default-charset` attribute of the
-link:#beavn[`parameter-encoding`] element.
-|=======================================================================
-
-
-[[beauf]][[GSDPG00185]][[locale-charset-map]]
-
-`locale-charset-map`
-~~~~~~~~~~~~~~~~~~~~
-
-Maps locales and agents to character encodings. Provided for backward
-compatibility. Used only for request processing. Used only if the
-character encoding is not specified in the request and cannot be derived
-from the optional link:#beavn[`parameter-encoding`] element. For
-encodings, see
-`http://docs.oracle.com/javase/7/docs/technotes/guides/intl/encoding.doc.html`.
-
-[[fvzbg]][[GSDPG00544]][[superelements-101]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaue[`locale-charset-info`] (`glassfish-web.xml`)
-
-[[fvywg]][[GSDPG00545]][[subelements-97]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `locale-charset-map`
-element.
-
-[[GSDPG951]][[sthref141]][[fvyvl]]
-
-
-Table C-84 `locale-charset-map` Subelements
-
-[width="100%",cols="25%,14%,61%",options="header",]
-|==================================================================
-|Element |Required |Description
-a|
-link:#beaso[`description`]
-
-
- |zero or one |Specifies an optional text description of a mapping.
-|==================================================================
-
-
-[[fvyzn]][[GSDPG00546]][[attributes-23]]
-
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `locale-charset-map`
-element.
-
-[[GSDPG952]][[sthref142]][[fvzbk]]
-
-
-Table C-85 `locale-charset-map` Attributes
-
-[width="100%",cols="10%,10%,80%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`locale` |none |Specifies the locale name.
-
-|`agent` |none |(optional) Specifies the type of client that interacts
-with the GlassFish Server. For a given locale, different agents can have
-different preferred character encodings. The value of this attribute
-must exactly match the value of the `user-agent` HTTP request header
-sent by the client. See link:#fvzbb[Table C-86] for more information.
-
-|`charset` |none |Specifies the character encoding to which the locale
-maps.
-|=======================================================================
-
-
-[[fvzct]][[GSDPG00547]][[example-agents]]
-
-Example Agents
-^^^^^^^^^^^^^^
-
-The following table specifies example `agent` attribute values.
-
-[[GSDPG953]][[sthref143]][[fvzbb]]
-
-
-Table C-86 Example `agent` Attribute Values
-
-[width="100%",cols="38%,62%",options="header",]
-|=======================================================================
-|Agent |`user-agent` Header and `agent` Attribute Value
-|Internet Explorer 5.00 for Windows 2000
-|`Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)`
-
-|Netscape 4.7.7 for Windows 2000
-|`Mozilla/4.77 [en] (Windows NT 5.0; U)`
-
-|Netscape 4.7 for Solaris |`Mozilla/4.7 [en] (X11; u; Sun OS 5.6 sun4u)`
-|=======================================================================
-
-
-[[beaug]][[GSDPG00186]][[localpart]]
-
-`localpart`
-~~~~~~~~~~~
-
-Specifies the local part of a QNAME.
-
-[[fvzad]][[GSDPG00548]][[superelements-102]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaxj[`service-qname`], link:#beayx[`wsdl-port`]
-(`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
-`glassfish-application-client.xml`)
-
-[[fvyzb]][[GSDPG00549]][[subelements-98]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beauh]][[GSDPG00187]][[lock-when-loaded]]
-
-`lock-when-loaded`
-~~~~~~~~~~~~~~~~~~
-
-Places a database update lock on the rows corresponding to the bean
-whenever the bean is loaded. How the lock is placed is
-database-dependent. The lock is released when the transaction finishes
-(commit or rollback). While the lock is in place, other database users
-have read access to the bean.
-
-[[fvyze]][[GSDPG00550]][[superelements-103]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beasd[`consistency`] (`sun-cmp-mappings.xml`)
-
-[[fvyyl]][[GSDPG00551]][[subelements-99]]
-
-Subelements
-^^^^^^^^^^^
-
-none - element is present or absent
-
-[[beaui]][[GSDPG00188]][[lock-when-modified]]
-
-`lock-when-modified`
-~~~~~~~~~~~~~~~~~~~~
-
-This element is not implemented. Do not use.
-
-[[fvyyc]][[GSDPG00552]][[superelements-104]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beasd[`consistency`] (`sun-cmp-mappings.xml`)
-
-[[beauj]][[GSDPG00189]][[log-service]]
-
-`log-service`
-~~~~~~~~~~~~~
-
-Specifies configuration settings for the log file.
-
-[[fvyyv]][[GSDPG00553]][[superelements-105]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#bearr[`client-container`] (`sun-acc.xml`)
-
-[[fvywo]][[GSDPG00554]][[subelements-100]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `log-service` element.
-
-[[GSDPG954]][[sthref144]][[fvzdx]]
-
-
-Table C-87 `log-service` subelement
-
-[width="100%",cols="37%,15%,48%",options="header",]
-|==================================================================
-|Element |Required |Description
-a|
-link:#beavx[`property` (with attributes)]
-
-
- |zero or more |Specifies a property, which has a name and a value.
-|==================================================================
-
-
-[[fvyzl]][[GSDPG00555]][[attributes-24]]
-
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `log-service` element.
-
-[[GSDPG955]][[sthref145]][[fvzbn]]
-
-
-Table C-88 `log-service` attributes
-
-[width="100%",cols="12%,32%,56%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`log-file` |your-ACC-dir`/logs/client.log` |(optional) Specifies the
-file where the application client container logging information is
-stored.
-
-|`level` |`SEVERE` |(optional) Sets the base level of severity. Messages
-at or above this setting get logged to the log file.
-|=======================================================================
-
-
-[[beauk]][[GSDPG00190]][[login-config]]
-
-`login-config`
-~~~~~~~~~~~~~~
-
-Specifies the authentication configuration for an EJB web service
-endpoint. Not needed for servlet web service endpoints. A servlet's
-security configuration is contained in the `web.xml` file.
-
-[[fvywb]][[GSDPG00556]][[superelements-106]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beayv[`webservice-endpoint`] (`glassfish-web.xml`,
-`glassfish-ejb-jar.xml`)
-
-[[fvyxg]][[GSDPG00557]][[subelements-101]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `login-config`
-element.
-
-[[GSDPG956]][[sthref146]][[fvzap]]
-
-
-Table C-89 `login-config` subelements
-
-[width="100%",cols="30%,15%,55%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beaqx[`auth-method`]
-
-
- |only one |Specifies the authentication method.
-
-a|
-link:#beawi[`realm`]
-
-
- |zero or one |Specifies the name of the realm used to process all
-authentication requests.
-|=======================================================================
-
-
-[[giyik]][[GSDPG00191]][[mail-resource]]
-
-`mail-resource`
-~~~~~~~~~~~~~~~
-
-Defines a Jakarta Mail (`jakarta.mail.Session`) resource.
-
-[[GSDPG957]][[sthref147]]
-
-
-[[superelements-107]]
-Superelements
-^^^^^^^^^^^^^
-
-link:#giyiy[`resources`] (`glassfish-resources.xml`)
-
-[[GSDPG958]][[sthref148]]
-
-
-[[subelements-102]]
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `mail-resource`
-element.
-
-[[GSDPG959]][[sthref149]][[sthref150]]
-
-
-Table C-90 `mail-resource` Subelements
-
-[width="100%",cols="25%,12%,63%",options="header",]
-|==========================================================
-|Element |Required |Description
-a|
-link:#beaso[`description`]
-
-
- |zero or one |Contains a text description of this element.
-a|
-link:#beavx[`property` (with attributes)]
-
-
- |zero or more |Specifies a property or a variable.
-|==========================================================
-
-
-[[GSDPG960]][[sthref151]]
-
-
-[[attributes-25]]
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `mail-resource`
-element.
-
-[[GSDPG961]][[sthref152]][[sthref153]]
-
-
-Table C-91 `mail-resource` Attributes
-
-[width="100%",cols="23%,21%,56%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`jndi-name` |none |Specifies the JNDI name for the resource.
-
-|`store-protocol` |`imap` |(optional) Specifies the storage protocol
-service, which connects to a mail server, retrieves messages, and saves
-messages in folder(s). Allowed values are `imap`, `pop3`, `imaps`, and
-`pop3s` .
-
-|`store-protocol-` `class` |`com.sun.mail.imap.IMAPStore` a|
-(optional) Specifies the service provider implementation class for
-storage. Allowed values are:
-
-`com.sun.mail.imap.IMAPStore`
-
-`com.sun.mail.pop3.POP3Store`
-
-`com.sun.mail.imap.IMAPSSLStore`
-
-`com.sun.mail.pop3.POP3SSLStore`
-
-|`transport-``protocol` |`smtp` |(optional) Specifies the transport
-protocol service, which sends messages. Allowed values are `smtp` and
-`smtps`.
-
-|`transport-``protocol-``class` |`com.sun.mail.smtp.SMTPTransport` a|
-(optional) Specifies the service provider implementation class for
-transport. Allowed values are:
-
-`com.sun.mail.smtp.SMTPTransport`
-
-`com.sun.mail.smtp.SMTPSSLTransport`
-
-|`host` |none |The mail server host name.
-
-|`user` |none |The mail server user name.
-
-|`from` |none |The email address the mail server uses to indicate the
-message sender.
-
-|`debug` |`false` |(optional) Determines whether debugging for this
-resource is enabled.
-
-|`object-type` |`user` a|
-(optional) Defines the type of the resource. Allowed values are:
-
-* `system-all` - A system resource for all server instances and the
-domain application server.
-* `system-admin` - A system resource only for the domain application
-server.
-* `system-instance` - A system resource for all server instances only.
-* `user` - A user resource.
-
-|`enabled` |`true` |(optional) Determines whether this resource is
-enabled at runtime.
-|=======================================================================
-
-
-[[GSDPG962]][[sthref154]]
-
-
-[[properties-9]]
-Properties
-^^^^^^^^^^
-
-You can set properties for the `mail-resource` element and then get
-these properties in a Jakarta Mail `Session` object later. Every property
-name must start with a `mail-` prefix. The GlassFish Server changes the
-dash (`-`) character to a period (`.`) in the name of the property, then
-saves the property to the `MailConfiguration` and Jakarta Mail `Session`
-objects. If the name of the property doesn't start with `mail-`, the
-property is ignored.
-
-For example, to define the property `mail.password` in a Jakarta Mail
-Session object, first edit `glassfish-resources.xml` as follows:
-
-[source,oac_no_warn]
-----
-...
- <mail-resource jndi-name="mail/Session" ...>
-     <property name="mail-password" value="adminadmin"/>
- </mail-resource>
- ...
-----
-
-After getting the Jakarta Mail `Session` object, get the `mail.password`
-property to retrieve the value `adminadmin`, as follows:
-
-[source,oac_no_warn]
-----
-String password = session.getProperty("mail.password");
-----
-
-For more information about Jakarta Mail properties, see
-https://jakarta.ee/specifications/mail[Jakarta Mail API
-Documentation] (`https://jakarta.ee/specifications/mail`).
-
-[[beaum]][[GSDPG00192]][[manager-properties]]
-
-`manager-properties`
-~~~~~~~~~~~~~~~~~~~~
-
-Specifies session manager properties.
-
-[[fvyyu]][[GSDPG00558]][[superelements-108]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaxq[`session-manager`] (`glassfish-web.xml`)
-
-[[fvzcq]][[GSDPG00559]][[subelements-103]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `manager-properties`
-element.
-
-[[GSDPG963]][[sthref155]][[fvyvh]]
-
-
-Table C-92 `manager-properties` Subelements
-
-[width="100%",cols="37%,14%,49%",options="header",]
-|==================================================================
-|Element |Required |Description
-a|
-link:#beavx[`property` (with attributes)]
-
-
- |zero or more |Specifies a property, which has a name and a value.
-|==================================================================
-
-
-[[fvzdg]][[GSDPG00560]][[properties-10]]
-
-Properties
-^^^^^^^^^^
-
-The following table describes properties for the `manager-properties`
-element.
-
-[[GSDPG964]][[sthref156]][[fvywk]]
-
-
-Table C-93 `manager-properties` Properties
-
-[width="100%",cols="25%,13%,62%",options="header",]
-|=======================================================================
-|Property |Default |Description
-|`reapIntervalSeconds` |`60` a|
-Specifies the number of seconds between checks for expired sessions.
-This is also the interval at which sessions are passivated if
-`maxSessions` is exceeded.
-
-If `persistenceFrequency` is set to `time-based`, active sessions are
-stored at this interval.
-
-To prevent data inconsistency, set this value lower than the frequency
-at which session data changes. For example, this value should be as low
-as possible (`1` second) for a hit counter servlet on a frequently
-accessed web site, or the last few hits might be lost each time the
-server is restarted.
-
-Applicable only if the `persistence-type` attribute of the parent
-link:#beaxq[`session-manager`] element is `file` or `replicated`.
-
-|`maxSessions` |`-1` a|
-Specifies the maximum number of sessions that are permitted in the
-cache, or `-1` for no limit. After this, an attempt to create a new
-session causes an `IllegalStateException` to be thrown.
-
-If the `persistence-type` attribute of the parent
-link:#beaxq[`session-manager`] element is `file` or `replicated`, the
-session manager passivates sessions to the persistent store when this
-maximum is reached.
-
-|`sessionFilename` |empty string a|
-Specifies the absolute or relative path to the directory in which the
-session state is preserved between application restarts, if preserving
-the state is possible. A relative path is relative to the temporary
-directory for this web module, one of the following:
-
-domain-dir`/generated/jsp/`module-name
-
-domain-dir`/generated/jsp/`app-name`/`module-name
-
-By default, this property's value is set to an empty string, which
-disables this property and does not preserve the session state.
-
-Applicable only if the `persistence-type` attribute of the parent
-link:#beaxq[`session-manager`] element is `memory`.
-
-|`persistenceFrequency` |`web-method` a|
-Specifies how often the session state is stored. Allowed values are as
-follows:
-
-* `web-method` - The session state is stored at the end of each web
-request prior to sending a response back to the client. This mode
-provides the best guarantee that the session state is fully updated in
-case of failure.
-* `time-based` - The session state is stored in the background at the
-frequency set by `reapIntervalSeconds`. This mode provides less of a
-guarantee that the session state is fully updated. However, it can
-provide a significant performance improvement because the state is not
-stored after each request.
-
-Applicable only if the `persistence-type` attribute of the parent
-link:#beaxq[`session-manager`] element is `replicated`.
-
-|=======================================================================
-
-
-[[beaun]][[GSDPG00193]][[mapping-properties]]
-
-`mapping-properties`
-~~~~~~~~~~~~~~~~~~~~
-
-This element is not implemented.
-
-[[fvywv]][[GSDPG00561]][[superelements-109]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beart[`cmp`] (`glassfish-ejb-jar.xml`)
-
-[[beauo]][[GSDPG00194]][[max-cache-size]]
-
-`max-cache-size`
-~~~~~~~~~~~~~~~~
-
-Specifies the maximum number of beans allowable in cache. A value of
-zero indicates an unbounded cache. In reality, there is no hard limit.
-The max-cache-size limit is just a hint to the cache implementation.
-Default is 512.
-
-Applies to stateful session beans and entity beans.
-
-[[fvyyo]][[GSDPG00562]][[superelements-110]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beara[`bean-cache`] (`glassfish-ejb-jar.xml`)
-
-[[fvzbx]][[GSDPG00563]][[subelements-104]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beaup]][[GSDPG00195]][[max-pool-size]]
-
-`max-pool-size`
-~~~~~~~~~~~~~~~
-
-Specifies the maximum number of bean instances in the pool. Values are
-from 0 (1 for message-driven bean) to MAX_INTEGER. A value of 0 means
-the pool is unbounded. Default is 64.
-
-Applies to all beans.
-
-[[fvzdw]][[GSDPG00564]][[superelements-111]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#bearb[`bean-pool`] (`glassfish-ejb-jar.xml`)
-
-[[fvyxa]][[GSDPG00565]][[subelements-105]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beauq]][[GSDPG00196]][[max-wait-time-in-millis]]
-
-`max-wait-time-in-millis`
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This element is deprecated. Do not use.
-
-[[fvyzg]][[GSDPG00566]][[superelements-112]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#bearb[`bean-pool`] (`glassfish-ejb-jar.xml`)
-
-[[beaur]][[GSDPG00197]][[mdb-connection-factory]]
-
-`mdb-connection-factory`
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies the connection factory associated with a message-driven bean.
-Queue or Topic type must be consistent with the Java Message Service
-Destination type associated with the message-driven bean class.
-
-[[fvyzj]][[GSDPG00567]][[superelements-113]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
-
-[[fvyxt]][[GSDPG00568]][[subelements-106]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the
-`mdb-connection-factory` element.
-
-[[GSDPG965]][[sthref157]][[fvyxi]]
-
-
-Table C-94 `mdb-connection-factory` Subelements
-
-[width="100%",cols="38%,14%,48%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beatw[`jndi-name`]
-
-
- |only one |Specifies the absolute `jndi-name`.
-
-a|
-link:#beasn[`default-resource-principal`]
-
-
- |zero or one |Specifies the default sign-on (name/password) to the
-resource manager.
-|=======================================================================
-
-
-[[beaus]][[GSDPG00198]][[mdb-resource-adapter]]
-
-`mdb-resource-adapter`
-~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies runtime configuration information for a message-driven bean.
-
-[[fvzdd]][[GSDPG00569]][[superelements-114]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
-
-[[fvyyx]][[GSDPG00570]][[subelements-107]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `mdb-resource-adapter`
-element.
-
-[[GSDPG966]][[sthref158]][[fvyzh]]
-
-
-Table C-95 `mdb-resource-adapter` subelements
-
-[width="100%",cols="35%,14%,51%",options="header",]
-|=====================================================
-|Element |Required |Description
-a|
-link:#beawt[`resource-adapter-mid`]
-
-
- |zero or one |Specifies a resource adapter module ID.
-a|
-link:#beaqs[`activation-config`]
-
-
- |one or more |Specifies an activation configuration.
-|=====================================================
-
-
-[[beaut]][[GSDPG00199]][[message]]
-
-`message`
-~~~~~~~~~
-
-Specifies the methods or operations to which message security
-requirements apply.
-
-[[fvzci]][[GSDPG00571]][[superelements-115]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beauw[`message-security`] (`glassfish-web.xml`,
-`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)
-
-[[fvyxc]][[GSDPG00572]][[subelements-108]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `message` element.
-
-[[GSDPG967]][[sthref159]][[fvyyd]]
-
-
-Table C-96 `message` Subelements
-
-[width="100%",cols="30%,16%,54%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beatt[`java-method`]
-
-
- |zero or one |Specifies the methods or operations to which message
-security requirements apply.
-
-a|
-link:#beavl[`operation-name`]
-
-
- |zero or one |Specifies the WSDL name of an operation of a web service.
-|=======================================================================
-
-
-[[beauu]][[GSDPG00200]][[message-destination]]
-
-`message-destination`
-~~~~~~~~~~~~~~~~~~~~~
-
-Specifies the name of a logical `message-destination` defined within an
-application. The `message-destination-name` matches the corresponding
-`message-destination-name` in the corresponding Java EE deployment
-descriptor file. Use when the message destination reference in the
-corresponding Java EE deployment descriptor file specifies a
-`message-destination-link` to a logical `message-destination`.
-
-[[fvzaz]][[GSDPG00573]][[superelements-116]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`),
-link:#beasx[`enterprise-beans`] (`glassfish-ejb-jar.xml`),
-link:#beaxx[`glassfish-application-client`]
-(`glassfish-application-client.xml`)
-
-[[fvyxn]][[GSDPG00574]][[subelements-109]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `message-destination`
-element.
-
-[[GSDPG968]][[sthref160]][[fvyzy]]
-
-
-Table C-97 `message-destination` subelements
-
-[width="100%",cols="29%,10%,61%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beauv[`message-destination-name`]
-
-
- |only one |Specifies the name of a logical message destination defined
-within the corresponding Java EE deployment descriptor file.
-
-a|
-link:#beatw[`jndi-name`]
-
-
- |only one |Specifies the `jndi-name` of the associated entity.
-|=======================================================================
-
-
-[[beauv]][[GSDPG00201]][[message-destination-name]]
-
-`message-destination-name`
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies the name of a logical message destination defined within the
-corresponding Java EE deployment descriptor file.
-
-[[fvzcj]][[GSDPG00575]][[superelements-117]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beauu[`message-destination`] (`glassfish-web.xml`,
-`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)
-
-[[fvzbo]][[GSDPG00576]][[subelements-110]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[gauao]][[GSDPG00202]][[message-destination-ref]]
-
-`message-destination-ref`
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Directly binds a message destination reference to the JNDI name of a
-`Queue`, `Topic`, or other physical destination. Use only when the
-message destination reference in the corresponding Java EE deployment
-descriptor file does not specify a `message-destination-link` to a
-logical `message-destination`.
-
-[[gauam]][[GSDPG00577]][[superelements-118]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`),
-link:#beass[`ejb`] (`glassfish-ejb-jar.xml`),
-link:#beaxx[`glassfish-application-client`]
-(`glassfish-application-client.xml`)
-
-[[gaual]][[GSDPG00578]][[subelements-111]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the
-`message-destination-ref` element.
-
-[[GSDPG969]][[sthref161]][[gauar]]
-
-
-Table C-98 `message-destination-ref` subelements
-
-[width="100%",cols="34%,10%,56%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#gauat[`message-destination-ref-name`]
-
-
- |only one |Specifies the name of a physical message destination defined
-within the corresponding Java EE deployment descriptor file.
-
-a|
-link:#beatw[`jndi-name`]
-
-
- |only one |Specifies the `jndi-name` of the associated entity.
-|=======================================================================
-
-
-[[gauat]][[GSDPG00203]][[message-destination-ref-name]]
-
-`message-destination-ref-name`
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies the name of a physical message destination defined within the
-corresponding Java EE deployment descriptor file.
-
-[[gauaj]][[GSDPG00579]][[superelements-119]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#gauao[`message-destination-ref`] (`glassfish-web.xml`,
-`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)
-
-[[gauas]][[GSDPG00580]][[subelements-112]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beauw]][[GSDPG00204]][[message-security]]
-
-`message-security`
-~~~~~~~~~~~~~~~~~~
-
-Specifies message security requirements.
-
-* If the grandparent element is link:#beayv[`webservice-endpoint`],
-these requirements pertain to request and response messages of the
-endpoint.
-* If the grandparent element is link:#beavt[`port-info`], these
-requirements pertain to the port of the referenced service.
-
-[[fvzac]][[GSDPG00581]][[superelements-120]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaux[`message-security-binding`] (`glassfish-web.xml`,
-`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)
-
-[[fvyve]][[GSDPG00582]][[subelements-113]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `message-security`
-element.
-
-[[GSDPG970]][[sthref162]][[fvywy]]
-
-
-Table C-99 `message-security` Subelements
-
-[width="100%",cols="24%,12%,64%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beaut[`message`]
-
-
- |one or more |Specifies the methods or operations to which message
-security requirements apply.
-
-a|
-link:#beawp[`request-protection`]
-
-
- |zero or one |Defines the authentication policy requirements of the
-application's request processing.
-
-a|
-link:#beawy[`response-protection`]
-
-
- |zero or one |Defines the authentication policy requirements of the
-application's response processing.
-|=======================================================================
-
-
-[[beaux]][[GSDPG00205]][[message-security-binding]]
-
-`message-security-binding`
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies a custom authentication provider binding for a parent
-link:#beayv[`webservice-endpoint`] or link:#beavt[`port-info`] element
-in one or both of these ways:
-
-* By binding to a specific provider
-* By specifying the message security requirements enforced by the
-provider
-
-[[fvzbc]][[GSDPG00583]][[superelements-121]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beayv[`webservice-endpoint`], link:#beavt[`port-info`]
-(`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
-`glassfish-application-client.xml`)
-
-[[fvyxv]][[GSDPG00584]][[subelements-114]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the
-`message-security-binding` element.
-
-[[GSDPG971]][[sthref163]][[fvzcx]]
-
-
-Table C-100 `message-security-binding` Subelements
-
-[width="100%",cols="34%,15%,51%",options="header",]
-|=======================================================
-|Element |Required |Description
-a|
-link:#beauw[`message-security`]
-
-
- |zero or more |Specifies message security requirements.
-|=======================================================
-
-
-[[fvzbj]][[GSDPG00585]][[attributes-26]]
-
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the
-`message-security-binding` element.
-
-[[GSDPG972]][[sthref164]][[fvzda]]
-
-
-Table C-101 `message-security-binding` Attributes
-
-[width="172%",cols="9%,46%,45%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`auth-layer` |none |Specifies the message layer at which authentication
-is performed. The value must be `SOAP`.
-
-|`provider-id` |none a|
-(optional) Specifies the authentication provider used to satisfy
-application-specific message security requirements.
-
-If this attribute is not specified, a default provider is used, if it is
-defined for the message layer.
-
-if no default provider is defined, authentication requirements defined
-in the `message-security-binding` are not enforced.
-
-|=======================================================================
-
-
-[[beauy]][[GSDPG00206]][[message-security-config]]
-
-`message-security-config`
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies configurations for message security providers.
-
-[[fvyya]][[GSDPG00586]][[superelements-122]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#bearr[`client-container`] (`sun-acc.xml`)
-
-[[fvzck]][[GSDPG00587]][[subelements-115]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the
-`message-security-config` element.
-
-[[GSDPG973]][[sthref165]][[fvyym]]
-
-
-Table C-102 `message-security-config` Subelements
-
-[width="100%",cols="31%,15%,54%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beavz[`provider-config`]
-
-
- |one or more |Specifies a configuration for one message security
-provider.
-|=======================================================================
-
-
-[[fvyvw]][[GSDPG00588]][[attributes-27]]
-
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the
-`message-security-config` element.
-
-[[GSDPG974]][[sthref166]][[fvzam]]
-
-
-Table C-103 `message-security-config` Attributes
-
-[width="172%",cols="17%,46%,37%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`auth-layer` |none |Specifies the message layer at which authentication
-is performed. The value must be `SOAP`.
-
-|`default-provider` |none |(optional) Specifies the server provider that
-is invoked for any application not bound to a specific server provider.
-
-|`default-client-``provider` |none |(optional) Specifies the client
-provider that is invoked for any application not bound to a specific
-client provider.
-|=======================================================================
-
-
-[[beauz]][[GSDPG00207]][[method]]
-
-`method`
-~~~~~~~~
-
-Specifies a bean method.
-
-[[fvzae]][[GSDPG00589]][[superelements-123]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#bearo[`checkpoint-at-end-of-method`],
-link:#beatf[`flush-at-end-of-method`] (`glassfish-ejb-jar.xml`)
-
-[[fvzay]][[GSDPG00590]][[subelements-116]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `method` element.
-
-[[GSDPG975]][[sthref167]][[fvzch]]
-
-
-Table C-104 `method` Subelements
-
-[width="100%",cols="17%,11%,72%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beaso[`description`]
-
-
- |zero or one |Specifies an optional text description.
-
-a|
-link:#beast[`ejb-name`]
-
-
- |zero or one |Matches the `ejb-name` in the corresponding `ejb-jar.xml`
-file.
-
-a|
-link:#beavb[`method-name`]
-
-
- |only one |Specifies a method name.
-
-a|
-link:#beava[`method-intf`]
-
-
- |zero or one |Specifies the method interface to distinguish between
-methods with the same name in different interfaces.
-
-a|
-link:#beavd[`method-params`]
-
-
- |zero or one |Specifies fully qualified Java type names of method
-parameters.
-|=======================================================================
-
-
-[[beava]][[GSDPG00208]][[method-intf]]
-
-`method-intf`
-~~~~~~~~~~~~~
-
-Specifies the method interface to distinguish between methods with the
-same name in different interfaces. Allowed values are `Home`, `Remote`,
-`LocalHome`, and `Local`.
-
-[[fvywj]][[GSDPG00591]][[superelements-124]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beauz[`method`] (`glassfish-ejb-jar.xml`)
-
-[[fvyyz]][[GSDPG00592]][[subelements-117]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beavb]][[GSDPG00209]][[method-name]]
-
-`method-name`
-~~~~~~~~~~~~~
-
-Specifies a method name or `*` (an asterisk) for all methods. If a
-method is overloaded, specifies all methods with the same name.
-
-[[fvyvp]][[GSDPG00593]][[superelements-125]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beatt[`java-method`] (`glassfish-web.xml`,
-`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`);
-link:#beate[`finder`], link:#beawc[`query-method`] ,
-link:#beauz[`method`] (`glassfish-ejb-jar.xml`)
-
-[[fvzcp]][[GSDPG00594]][[subelements-118]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[fvzdr]][[GSDPG00595]][[examples]]
-
-Examples
-^^^^^^^^
-
-`<method-name>findTeammates</method-name>`
-
-`<method-name>*</method-name>`
-
-[[beavc]][[GSDPG00210]][[method-param]]
-
-`method-param`
-~~~~~~~~~~~~~~
-
-Specifies the fully qualified Java type name of a method parameter.
-
-[[fvzdl]][[GSDPG00596]][[superelements-126]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beavd[`method-params`] (`glassfish-web.xml`,
-`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)
-
-[[fvyvj]][[GSDPG00597]][[subelements-119]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beavd]][[GSDPG00211]][[method-params]]
-
-`method-params`
-~~~~~~~~~~~~~~~
-
-Specifies fully qualified Java type names of method parameters.
-
-[[fvzdt]][[GSDPG00598]][[superelements-127]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beatt[`java-method`] (`glassfish-web.xml`,
-`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`);
-link:#beawc[`query-method`], link:#beauz[`method`]
-(`glassfish-ejb-jar.xml`)
-
-[[fvyzw]][[GSDPG00599]][[subelements-120]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `method-params`
-element.
-
-[[GSDPG976]][[sthref168]][[fvyzq]]
-
-
-Table C-105 `method-params` Subelements
-
-[width="100%",cols="18%,14%,68%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beavc[`method-param`]
-
-
- |zero or more |Specifies the fully qualified Java type name of a method
-parameter.
-|=======================================================================
-
-
-[[beavf]][[GSDPG00212]][[name]]
-
-`name`
-~~~~~~
-
-Specifies the name of the entity.
-
-[[fvyyf]][[GSDPG00600]][[superelements-128]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beari[`call-property`], link:#beasn[`default-resource-principal`],
-link:#beaxv[`stub-property`] (`glassfish-web.xml`,
-`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`);
-link:#beasx[`enterprise-beans`], link:#beavv[`principal`],
-link:#beavy[`property` (with subelements)] (`glassfish-ejb-jar.xml`)
-
-[[fvyxe]][[GSDPG00601]][[subelements-121]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beavg]][[GSDPG00213]][[named-group]]
-
-`named-group`
-~~~~~~~~~~~~~
-
-Specifies the name of one independent fetch group. All the fields and
-relationships that are part of a named group are fetched at the same
-time. A field belongs to only one fetch group, regardless of what type
-of fetch group is used.
-
-[[fvzds]][[GSDPG00602]][[superelements-129]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beatc[`fetched-with`] (`sun-cmp-mappings.xml`)
-
-[[fvyxr]][[GSDPG00603]][[subelements-122]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beavh]][[GSDPG00214]][[namespaceuri]]
-
-`namespaceURI`
-~~~~~~~~~~~~~~
-
-Specifies the namespace URI.
-
-[[fvywa]][[GSDPG00604]][[superelements-130]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaxj[`service-qname`], link:#beayx[`wsdl-port`]
-(`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
-`glassfish-application-client.xml`)
-
-[[fvyzc]][[GSDPG00605]][[subelements-123]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beavi]][[GSDPG00215]][[none]]
-
-`none`
-~~~~~~
-
-Specifies that this field or relationship is fetched by itself, with no
-other fields or relationships.
-
-[[fvyvv]][[GSDPG00606]][[superelements-131]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beasd[`consistency`], link:#beatc[`fetched-with`]
-(`sun-cmp-mappings.xml`)
-
-[[fvzaw]][[GSDPG00607]][[subelements-124]]
-
-Subelements
-^^^^^^^^^^^
-
-none - element is present or absent
-
-[[beavk]][[GSDPG00216]][[one-one-finders]]
-
-`one-one-finders`
-~~~~~~~~~~~~~~~~~
-
-Describes the finders for CMP 1.1 beans.
-
-[[fvyvg]][[GSDPG00608]][[superelements-132]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beart[`cmp`] (`glassfish-ejb-jar.xml`)
-
-[[fvywp]][[GSDPG00609]][[subelements-125]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `one-one-finders`
-element.
-
-[[GSDPG977]][[sthref169]][[fvyxu]]
-
-
-Table C-106 `one-one-finders` Subelements
-
-[width="100%",cols="23%,15%,62%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beate[`finder`]
-
-
- |one or more |Describes the finders for CMP 1.1 with a method name and
-query.
-|=======================================================================
-
-
-[[beavl]][[GSDPG00217]][[operation-name]]
-
-`operation-name`
-~~~~~~~~~~~~~~~~
-
-Specifies the WSDL name of an operation of a web service.
-
-[[fvzas]][[GSDPG00610]][[superelements-133]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaut[`message`] (`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
-`glassfish-application-client.xml`)
-
-[[fvyvt]][[GSDPG00611]][[subelements-126]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beavn]][[GSDPG00218]][[parameter-encoding]]
-
-`parameter-encoding`
-~~~~~~~~~~~~~~~~~~~~
-
-Specifies the default request character encoding and how the web
-container decodes parameters from forms according to a hidden field
-value.
-
-If both the link:#beayb[`glassfish-web-app`] and
-link:#beaue[`locale-charset-info`] elements have `parameter-encoding`
-subelements, the subelement of `glassfish-web-app` takes precedence. For
-encodings, see
-`http://docs.oracle.com/javase/7/docs/technotes/guides/intl/encoding.doc.html`.
-
-[[fvyzr]][[GSDPG00612]][[superelements-134]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaue[`locale-charset-info`], link:#beayb[`glassfish-web-app`]
-(`glassfish-web.xml`)
-
-[[fvzbf]][[GSDPG00613]][[subelements-127]]
-
-Subelements
-^^^^^^^^^^^
-
-none
-
-[[fvyxk]][[GSDPG00614]][[attributes-28]]
-
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `parameter-encoding`
-element.
-
-[[GSDPG978]][[sthref170]][[fvywn]]
-
-
-Table C-107 `parameter-encoding` Attributes
-
-[width="100%",cols="19%,13%,68%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`form-hint-field` |none |(optional) The name of the hidden field in the
-form. This field specifies the character encoding the web container uses
-for `request.getParameter` and `request.getReader` calls when the
-charset is not set in the request's `content-type` header.
-
-|`default-charset` |`ISO-8859-1` |(optional) The default request
-character encoding.
-|=======================================================================
-
-
-[[beavo]][[GSDPG00219]][[pass-by-reference]]
-
-`pass-by-reference`
-~~~~~~~~~~~~~~~~~~~
-
-Specifies the passing method used by a servlet or enterprise bean
-calling a remote interface method in another bean that is colocated
-within the same process.
-
-* If `false` (the default if this element is not present), this
-application uses pass-by-value semantics.
-* If `true`, this application uses pass-by-reference semantics.
-
-
-[NOTE]
-=======================================================================
-
-The `pass-by-reference` element only applies to remote calls. As defined
-in the EJB 2.1 specification, section 5.4, calls to local interfaces use
-pass-by-reference semantics.
-
-If the `pass-by-reference` element is set to its default value of
-`false`, the passing semantics for calls to remote interfaces comply
-with the EJB 2.1 specification, section 5.4. If set to `true`, remote
-calls involve pass-by-reference semantics instead of pass-by-value
-semantics, contrary to this specification.
-
-Portable programs cannot assume that a copy of the object is made during
-such a call, and thus that it's safe to modify the original. Nor can
-they assume that a copy is not made, and thus that changes to the object
-are visible to both caller and callee. When this element is set to
-`true`, parameters and return values should be considered read-only. The
-behavior of a program that modifies such parameters or return values is
-undefined.
-
-=======================================================================
-
-
-When a servlet or enterprise bean calls a remote interface method in
-another bean that is colocated within the same process, by default
-GlassFish Server makes copies of all the call parameters in order to
-preserve the pass-by-value semantics. This increases the call overhead
-and decreases performance.
-
-However, if the calling method does not change the object being passed
-as a parameter, it is safe to pass the object itself without making a
-copy of it. To do this, set the pass-by-reference value to `true`.
-
-The setting of this element in the `glassfish-application.xml` file
-applies to all EJB modules in the application. For an individually
-deployed EJB module, you can set the same element in the
-`glassfish-ejb-jar.xml` file. If `pass-by-reference` is used at both the
-bean and application level, the bean level takes precedence.
-
-[[fvzec]][[GSDPG00615]][[superelements-135]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaxw[`glassfish-application`] (`glassfish-application.xml`),
-link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
-
-[[fvywx]][[GSDPG00616]][[subelements-128]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beavp]][[GSDPG00220]][[password]]
-
-`password`
-~~~~~~~~~~
-
-Specifies the password for the principal.
-
-[[fvyvn]][[GSDPG00617]][[superelements-136]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beasn[`default-resource-principal`] (`glassfish-web.xml`,
-`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)
-
-[[fvyvs]][[GSDPG00618]][[subelements-129]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[gkkia]][[GSDPG00221]][[per-request-load-balancing]]
-
-`per-request-load-balancing`
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies the per-request load balancing behavior of EJB 2.x and 3.x
-remote client invocations on a stateless session bean. If set to `true`,
-per-request load balancing is enabled for the associated stateless
-session bean. If set to `false` or not set, per-request load balancing
-is not enabled. The default is `false`.
-
-[[gkklx]][[GSDPG00619]][[superelements-137]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
-
-[[gkkmq]][[GSDPG00620]][[subelements-130]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beavq]][[GSDPG00222]][[pm-descriptors]]
-
-`pm-descriptors`
-~~~~~~~~~~~~~~~~
-
-This element and its subelements are deprecated. Do not use.
-
-[[fvzbh]][[GSDPG00621]][[superelements-138]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beasx[`enterprise-beans`] (`glassfish-ejb-jar.xml`)
-
-[[beavr]][[GSDPG00223]][[pool-idle-timeout-in-seconds]]
-
-`pool-idle-timeout-in-seconds`
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies the maximum time, in seconds, that a bean instance is allowed
-to remain idle in the pool. When this timeout expires, the bean instance
-in a pool becomes a candidate for passivation or deletion. This is a
-hint to the server. A value of 0 specifies that idle beans remain in the
-pool indefinitely. Default value is 600.
-
-Applies to stateless session beans, entity beans, and message-driven
-beans.
-
-
-[NOTE]
-=======================================================================
-
-For a stateless session bean or a message-driven bean, the bean is
-removed (garbage collected) when the timeout expires.
-
-=======================================================================
-
-
-[[fvzbm]][[GSDPG00622]][[superelements-139]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#bearb[`bean-pool`] (`glassfish-ejb-jar.xml`)
-
-[[fvzbs]][[GSDPG00623]][[subelements-131]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beavs]][[GSDPG00224]][[port-component-name]]
-
-`port-component-name`
-~~~~~~~~~~~~~~~~~~~~~
-
-Specifies a unique name for a port component within a web or EJB module.
-
-[[fvzbl]][[GSDPG00624]][[superelements-140]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beayv[`webservice-endpoint`] (`glassfish-web.xml`,
-`glassfish-ejb-jar.xml`)
-
-[[fvyys]][[GSDPG00625]][[subelements-132]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beavt]][[GSDPG00225]][[port-info]]
-
-`port-info`
-~~~~~~~~~~~
-
-Specifies information for a port within a web service reference.
-
-Either a `service-endpoint-interface` or a `wsdl-port` or both must be
-specified. If both are specified, `wsdl-port` specifies the port that
-the container chooses for container-managed port selection.
-
-The same `wsdl-port` value must not appear in more than one `port-info`
-element within the same `service-ref`.
-
-If a `service-endpoint-interface` is using container-managed port
-selection, its value must not appear in more than one `port-info`
-element within the same `service-ref`.
-
-[[fvzdh]][[GSDPG00626]][[superelements-141]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaxk[`service-ref`] (`glassfish-web.xml`,
-`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)
-
-[[fvyva]][[GSDPG00627]][[subelements-133]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `port-info` element.
-
-[[GSDPG979]][[sthref171]][[fvzbr]]
-
-
-Table C-108 `port-info` subelements
-
-[width="100%",cols="32%,12%,56%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beaxh[`service-endpoint-interface`]
-
-
- |zero or one |Specifies the web service reference name relative to
-`java:comp/env`.
-
-a|
-link:#beayx[`wsdl-port`]
-
-
- |zero or one |Specifies the WSDL port.
-
-a|
-link:#beaxv[`stub-property`]
-
-
- |zero or more |Specifies JAX-RPC property values that are set on a
-`javax.xml.rpc.Stub` object before it is returned to the web service
-client.
-
-a|
-link:#beari[`call-property`]
-
-
- |zero or more |Specifies JAX-RPC property values that are set on a
-`javax.xml.rpc.Call` object before it is returned to the web service
-client.
-
-a|
-link:#beaux[`message-security-binding`]
-
-
- |zero or one |Specifies a custom authentication provider binding.
-|=======================================================================
-
-
-[[beavu]][[GSDPG00226]][[prefetch-disabled]]
-
-`prefetch-disabled`
-~~~~~~~~~~~~~~~~~~~
-
-Disables prefetching of entity bean states for the specified query
-methods. Container-managed relationship fields are prefetched if their
-link:#beatc[`fetched-with`] element is set to link:#beasl[`default`].
-
-[[fvyxl]][[GSDPG00628]][[superelements-142]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beart[`cmp`] (`glassfish-ejb-jar.xml`)
-
-[[fvyyb]][[GSDPG00629]][[subelements-134]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `prefetch-disabled`
-element.
-
-[[GSDPG980]][[sthref172]][[fvyyn]]
-
-
-Table C-109 `prefetch-disabled` Subelements
-
-[width="100%",cols="30%,14%,56%",options="header",]
-|=======================================
-|Element |Required |Description
-a|
-link:#beawc[`query-method`]
-
-
- |one or more |Specifies a query method.
-|=======================================
-
-
-[[beavv]][[GSDPG00227]][[principal]]
-
-`principal`
-~~~~~~~~~~~
-
-Defines a user name on the platform.
-
-[[fvyvy]][[GSDPG00630]][[superelements-143]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beass[`ejb`] (`glassfish-ejb-jar.xml`);
-link:#giyhy[`security-map`] (`glassfish-resources.xml`)
-
-[[fvzbt]][[GSDPG00631]][[subelements-135]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `principal` element.
-
-[[GSDPG981]][[sthref173]][[fvzaq]]
-
-
-Table C-110 `principal` Subelements
-
-[width="100%",cols="29%,15%,56%",options="header",]
-|==========================================
-|Element |Required |Description
-a|
-link:#beavf[`name`]
-
-
- |only one |Specifies the name of the user.
-|==========================================
-
-
-[[giyif]][[GSDPG00228]][[principal-map]]
-
-`principal-map`
-~~~~~~~~~~~~~~~
-
-Maps an EIS principal to a principal defined in the GlassFish Server
-domain.
-
-[[GSDPG982]][[sthref174]]
-
-
-[[superelements-144]]
-Superelements
-^^^^^^^^^^^^^
-
-link:#giyht[`work-security-map`] (`glassfish-resources.xml`)
-
-[[giyjg]][[GSDPG00632]][[subelements-136]]
-
-Subelements
-^^^^^^^^^^^
-
-none
-
-[[GSDPG983]][[sthref175]]
-
-
-[[attributes-29]]
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `principal-map`
-element.
-
-[[GSDPG984]][[sthref176]][[sthref177]]
-
-
-Table C-111 `principal-map` Attributes
-
-[width="181%",cols="13%,49%,38%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`eis-principal` |none |Specifies an EIS principal.
-
-|`mapped-principal` |none |Specifies a principal defined in the
-GlassFish Server domain.
-|=======================================================================
-
-
-[[beavw]][[GSDPG00229]][[principal-name]]
-
-`principal-name`
-~~~~~~~~~~~~~~~~
-
-Contains the principal (user) name.
-
-In an enterprise bean, specifies the principal (user) name that has the
-`run-as` role specified.
-
-[[fvyws]][[GSDPG00633]][[superelements-145]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaxg[`security-role-mapping`] (`glassfish-application.xml`,
-`glassfish-web.xml`, `glassfish-ejb-jar.xml`), link:#beaxm[`servlet`]
-(`glassfish-web.xml`)
-
-[[fvyxp]][[GSDPG00634]][[subelements-137]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[gatzl]][[GSDPG00635]][[attributes-30]]
-
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `principal-name`
-element.
-
-[[GSDPG985]][[sthref178]][[gatyf]]
-
-
-Table C-112 `principal-name` Attributes
-
-[width="100%",cols="13%,36%,51%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`class-name` |`com.sun.enterprise.deployment.PrincipalImpl` |(optional)
-Specifies the custom principal implementation class corresponding to the
-named principal.
-|=======================================================================
-
-
-[[beavx]][[GSDPG00230]][[property-with-attributes]]
-
-`property` (with attributes)
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies the name and value of a property. A property adds
-configuration information to its parent element that is one or both of
-the following:
-
-* Optional with respect to GlassFish Server
-* Needed by a system or object that GlassFish Server doesn't have
-knowledge of, such as an LDAP server or a Java class
-
-[[fvzeb]][[GSDPG00636]][[superelements-146]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beard[`cache`], link:#beare[`cache-helper`],
-link:#bearq[`class-loader`], link:#beash[`cookie-properties`],
-link:#beasm[`default-helper`], link:#beaum[`manager-properties`],
-link:#beaxr[`session-properties`], link:#beaxu[`store-properties`],
-link:#beayb[`glassfish-web-app`], link:#gikqk[`valve`],
-link:#beayv[`webservice-endpoint`] (`glassfish-web.xml`);
-link:#beaqy[`auth-realm`], link:#bearr[`client-container`],
-link:#bears[`client-credential`], link:#beauj[`log-service`],
-link:#beavz[`provider-config`] (`sun-acc.xml`);
-link:#giyhw[`admin-object-resource`],
-link:#giygu[`connector-connection-pool`],
-link:#giyhv[`connector-resource`], link:#giyhr[`custom-resource`],
-link:#giyin[`external-jndi-resource`],
-link:#giyil[`jdbc-connection-pool`], link:#giyhm[`jdbc-resource`],
-link:#giyik[`mail-resource`], link:#giyit[`resource-adapter-config`]
-(`glassfish-resources.xml`)
-
-[[fvyzv]][[GSDPG00637]][[subelements-138]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `property` element.
-
-[[GSDPG986]][[sthref179]][[fvzcb]]
-
-
-Table C-113 `property` Subelements
-
-[width="100%",cols="27%,17%,56%",options="header",]
-|===================================================================
-|Element |Required |Description
-a|
-link:#beaso[`description`]
-
-
- |zero or one |Specifies an optional text description of a property.
-|===================================================================
-
-
-
-[NOTE]
-===================================================================
-
-The `property` element in the `sun-acc.xml` file has no subelements.
-
-===================================================================
-
-
-[[fvyvi]][[GSDPG00638]][[attributes-31]]
-
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `property` element.
-
-[[GSDPG987]][[sthref180]][[fvzdi]]
-
-
-Table C-114 `property` Attributes
-
-[width="100%",cols="14%,10%,76%",options="header",]
-|===================================================
-|Attribute |Default |Description
-|`name` |none |Specifies the name of the property.
-|`value` |none |Specifies the value of the property.
-|===================================================
-
-
-[[fvzab]][[GSDPG00639]][[example-7]]
-
-Example
-^^^^^^^
-
-[source,oac_no_warn]
-----
-<property name="reapIntervalSeconds" value="20" />
-----
-
-[[beavy]][[GSDPG00231]][[property-with-subelements]]
-
-`property` (with subelements)
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies the name and value of a property. A property adds
-configuration information to its parent element that is one or both of
-the following:
-
-* Optional with respect to GlassFish Server
-* Needed by a system or object that GlassFish Server doesn't have
-knowledge of, such as an LDAP server or a Java class
-
-[[fvzcl]][[GSDPG00640]][[superelements-147]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beasx[`enterprise-beans`], link:#bearv[`cmp-resource`],
-link:#beaxd[`schema-generator-properties`],
-link:#beayv[`webservice-endpoint`] (`glassfish-ejb-jar.xml`)
-
-[[fvzaf]][[GSDPG00641]][[subelements-139]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `property` element.
-
-[[GSDPG988]][[sthref181]][[fvzcc]]
-
-
-Table C-115 `property` subelements
-
-[width="100%",cols="22%,16%,62%",options="header",]
-|===============================================
-|Element |Required |Description
-a|
-link:#beavf[`name`]
-
-
- |only one |Specifies the name of the property.
-a|
-link:#beayo[`value`]
-
-
- |only one |Specifies the value of the property.
-|===============================================
-
-
-[[fvyxz]][[GSDPG00642]][[example-8]]
-
-Example
-^^^^^^^
-
-[source,oac_no_warn]
-----
-<property>
-   <name>use-unique-table-names</name>
-   <value>true</value>
-</property>
-----
-
-[[beavz]][[GSDPG00232]][[provider-config]]
-
-`provider-config`
-~~~~~~~~~~~~~~~~~
-
-Specifies a configuration for one message security provider.
-
-Although the `request-policy` and `response-policy` subelements are
-optional, the `provider-config` element does nothing if they are not
-specified.
-
-Use property subelements to configure provider-specific properties.
-Property values are passed to the provider when its `initialize` method
-is called.
-
-[[fvzcy]][[GSDPG00643]][[superelements-148]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beauy[`message-security-config`] (`sun-acc.xml`)
-
-[[fvyzt]][[GSDPG00644]][[subelements-140]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `provider-config`
-element.
-
-[[GSDPG989]][[sthref182]][[fvyyq]]
-
-
-Table C-116 `provider-config` Subelements
-
-[width="100%",cols="25%,12%,63%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beawo[`request-policy`]
-
-
- |zero or one |Defines the authentication policy requirements of the
-authentication provider's request processing.
-
-a|
-link:#beawx[`response-policy`]
-
-
- |zero or one |Defines the authentication policy requirements of the
-authentication provider's response processing.
-
-a|
-link:#beavx[`property` (with attributes)]
-
-
- |zero or more |Specifies a property, which has a name and a value.
-|=======================================================================
-
-
-[[fvywu]][[GSDPG00645]][[attributes-32]]
-
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `provider-config`
-element.
-
-[[GSDPG990]][[sthref183]][[fvyvz]]
-
-
-Table C-117 `provider-config` Attributes
-
-[width="172%",cols="11%,46%,43%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`provider-id` |none |Specifies the provider ID.
-
-|`provider-type` |none |Specifies whether the provider is a `client`,
-`server`, or `client-server` authentication provider.
-
-|`class-name` |none |Specifies the Java implementation class of the
-provider. Client authentication providers must implement the
-com.sun.enterprise.security.jauth.ClientAuthModule interface. Server
-authentication providers must implement the
-com.sun.enterprise.security.jauth.ServerAuthModule interface.
-Client-server providers must implement both interfaces.
-|=======================================================================
-
-
-[[beawb]][[GSDPG00233]][[query-filter]]
-
-`query-filter`
-~~~~~~~~~~~~~~
-
-Specifies the query filter for the CMP 1.1 finder.
-
-[[fvzdm]][[GSDPG00646]][[superelements-149]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beate[`finder`] (`glassfish-ejb-jar.xml`)
-
-[[fvzco]][[GSDPG00647]][[subelements-141]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beawc]][[GSDPG00234]][[query-method]]
-
-`query-method`
-~~~~~~~~~~~~~~
-
-Specifies a query method.
-
-[[fvyxo]][[GSDPG00648]][[superelements-150]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beavu[`prefetch-disabled`] (`glassfish-ejb-jar.xml`)
-
-[[fvyzm]][[GSDPG00649]][[subelements-142]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `query-method`
-element.
-
-[[GSDPG991]][[sthref184]][[fvywl]]
-
-
-Table C-118 `query-method` Subelements
-
-[width="100%",cols="17%,10%,73%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beavb[`method-name`]
-
-
- |only one |Specifies a method name.
-
-a|
-link:#beavd[`method-params`]
-
-
- |only one |Specifies the fully qualified Java type names of method
-parameters.
-|=======================================================================
-
-
-[[beawd]][[GSDPG00235]][[query-ordering]]
-
-`query-ordering`
-~~~~~~~~~~~~~~~~
-
-Specifies the query ordering for the CMP 1.1 finder.
-
-[[fvzef]][[GSDPG00650]][[superelements-151]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beate[`finder`] (`glassfish-ejb-jar.xml`)
-
-[[fvywd]][[GSDPG00651]][[subelements-143]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beawe]][[GSDPG00236]][[query-params]]
-
-`query-params`
-~~~~~~~~~~~~~~
-
-Specifies the query parameters for the CMP 1.1 finder.
-
-[[fvyvu]][[GSDPG00652]][[superelements-152]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beate[`finder`] (`glassfish-ejb-jar.xml`)
-
-[[fvzax]][[GSDPG00653]][[subelements-144]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beawf]][[GSDPG00237]][[query-variables]]
-
-`query-variables`
-~~~~~~~~~~~~~~~~~
-
-Specifies variables in the query expression for the CMP 1.1 finder.
-
-[[fvyyg]][[GSDPG00654]][[superelements-153]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beate[`finder`] (`glassfish-ejb-jar.xml`)
-
-[[fvzce]][[GSDPG00655]][[subelements-145]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beawh]][[GSDPG00238]][[read-only]]
-
-`read-only`
-~~~~~~~~~~~
-
-Specifies that a field is read-only if `true`. If this element is
-absent, the default value is `false` .
-
-[[fvyzs]][[GSDPG00656]][[superelements-154]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#bearu[`cmp-field-mapping`] (`sun-cmp-mappings.xml`)
-
-[[fvzav]][[GSDPG00657]][[subelements-146]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beawi]][[GSDPG00239]][[realm]]
-
-`realm`
-~~~~~~~
-
-Specifies the name of the realm used to process all authentication
-requests associated with this application. If this element is not
-specified or does not match the name of a configured realm, the default
-realm is used. For more information about realms, see
-"link:../application-development-guide/securing-apps.html#GSDVG00118[Realm Configuration]" in GlassFish Server Open Source
-Edition Application Development Guide.
-
-[[fvzaa]][[GSDPG00658]][[superelements-155]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaxw[`glassfish-application`] (`glassfish-application.xml`),
-link:#beaqw[`as-context`], link:#beauk[`login-config`]
-(`glassfish-ejb-jar.xml`)
-
-[[fvzdq]][[GSDPG00659]][[subelements-147]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beawj]][[GSDPG00240]][[refresh-field]]
-
-`refresh-field`
-~~~~~~~~~~~~~~~
-
-Specifies a field that gives the application component a programmatic
-way to refresh a cached entry.
-
-[[fvywt]][[GSDPG00660]][[superelements-156]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#bearh[`cache-mapping`] (`glassfish-web.xml`)
-
-[[fvzbw]][[GSDPG00661]][[subelements-148]]
-
-Subelements
-^^^^^^^^^^^
-
-none
-
-[[fvzbp]][[GSDPG00662]][[attributes-33]]
-
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `refresh-field`
-element.
-
-[[GSDPG992]][[sthref185]][[fvzbz]]
-
-
-Table C-119 `refresh-field` Attributes
-
-[width="181%",cols="51%,11%,38%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`name` |none |Specifies the input parameter name.
-
-|`scope` |`request.parameter` |(optional) Specifies the scope from which
-the input parameter is retrieved. Allowed values are
-`context.attribute`, `request.header`, `request.parameter`,
-`request.cookie`, `session.id`, and `session.attribute`.
-|=======================================================================
-
-
-[[beawk]][[GSDPG00241]][[refresh-period-in-seconds]]
-
-`refresh-period-in-seconds`
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies the rate at which a read-only-bean must be refreshed from the
-data source. If the value is less than or equal to zero, the bean is
-never refreshed; if the value is greater than zero, the bean instances
-are refreshed at the specified interval. This rate is just a hint to the
-container. Default is 0 (no refresh).
-
-[[fvzcn]][[GSDPG00663]][[superelements-157]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
-
-[[fvyxh]][[GSDPG00664]][[subelements-149]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beawl]][[GSDPG00242]][[removal-timeout-in-seconds]]
-
-`removal-timeout-in-seconds`
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies the amount of time a bean instance can remain idle in the
-container before it is removed (timeout). A value of 0 specifies that
-the container does not remove inactive beans automatically. The default
-value is 5400.
-
-If `removal-timeout-in-seconds` is less than or equal to
-`cache-idle-timeout-in-seconds`, beans are removed immediately without
-being passivated.
-
-Applies to stateful session beans.
-
-For related information, see
-link:#bearg[`cache-idle-timeout-in-seconds`].
-
-[[fvzat]][[GSDPG00665]][[superelements-158]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beara[`bean-cache`] (`glassfish-ejb-jar.xml`)
-
-[[fvzeg]][[GSDPG00666]][[subelements-150]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beawm]][[GSDPG00243]][[remote-home-impl]]
-
-`remote-home-impl`
-~~~~~~~~~~~~~~~~~~
-
-Specifies the fully-qualified class name of the generated `EJBHome`
-`impl` class.
-
-
-[NOTE]
-=======================================================================
-
-This value is automatically generated by the server at deployment or
-redeployment time. Do not specify it or change it after deployment.
-
-=======================================================================
-
-
-[[fvywr]][[GSDPG00667]][[superelements-159]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beath[`gen-classes`] (`glassfish-ejb-jar.xml`)
-
-[[fvyyt]][[GSDPG00668]][[subelements-151]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beawn]][[GSDPG00244]][[remote-impl]]
-
-`remote-impl`
-~~~~~~~~~~~~~
-
-Specifies the fully-qualified class name of the generated `EJBObject`
-`impl` class.
-
-
-[NOTE]
-=======================================================================
-
-This value is automatically generated by the server at deployment or
-redeployment time. Do not specify it or change it after deployment.
-
-=======================================================================
-
-
-[[fvyzi]][[GSDPG00669]][[superelements-160]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beath[`gen-classes`] (`glassfish-ejb-jar.xml`)
-
-[[fvzag]][[GSDPG00670]][[subelements-152]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beawo]][[GSDPG00245]][[request-policy]]
-
-`request-policy`
-~~~~~~~~~~~~~~~~
-
-Defines the authentication policy requirements of the authentication
-provider's request processing.
-
-[[fvyxw]][[GSDPG00671]][[superelements-161]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beavz[`provider-config`] (`sun-acc.xml`)
-
-[[fvzdz]][[GSDPG00672]][[subelements-153]]
-
-Subelements
-^^^^^^^^^^^
-
-none
-
-[[fvyvq]][[GSDPG00673]][[attributes-34]]
-
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `request-policy`
-element.
-
-[[GSDPG993]][[sthref186]][[fvzdy]]
-
-
-Table C-120 `request-policy` Attributes
-
-[width="172%",cols="11%,46%,43%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`auth-source` |none |Specifies the type of required authentication,
-either `sender` (user name and password) or `content` (digital
-signature).
-
-|`auth-recipient` |none |Specifies whether recipient authentication
-occurs before or after content authentication. Allowed values are
-`before-content` and `after-content`.
-|=======================================================================
-
-
-[[beawp]][[GSDPG00246]][[request-protection]]
-
-`request-protection`
-~~~~~~~~~~~~~~~~~~~~
-
-Defines the authentication policy requirements of the application's
-request processing.
-
-[[fvzcv]][[GSDPG00674]][[superelements-162]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beauw[`message-security`] (`glassfish-web.xml`,
-`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)
-
-[[fvzby]][[GSDPG00675]][[subelements-154]]
-
-Subelements
-^^^^^^^^^^^
-
-none
-
-[[fvzar]][[GSDPG00676]][[attributes-35]]
-
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `request-protection`
-element.
-
-[[GSDPG994]][[sthref187]][[fvzbu]]
-
-
-Table C-121 `request-protection` Attributes
-
-[width="172%",cols="13%,46%,41%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`auth-source` |none |Specifies the type of required authentication,
-either `sender` (user name and password) or `content` (digital
-signature).
-
-|`auth-recipient` |none |Specifies whether recipient authentication
-occurs before or after content authentication. Allowed values are
-`before-content` and `after-content`.
-|=======================================================================
-
-
-[[beawq]][[GSDPG00247]][[required]]
-
-`required`
-~~~~~~~~~~
-
-Specifies whether the authentication method specified in the
-link:#beaqx[`auth-method`] element must be used for client
-authentication. The value is `true` or `false` (the default).
-
-[[fvyvc]][[GSDPG00677]][[superelements-163]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaqw[`as-context`] (`glassfish-ejb-jar.xml`)
-
-[[fvywc]][[GSDPG00678]][[subelements-155]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beawr]][[GSDPG00248]][[res-ref-name]]
-
-`res-ref-name`
-~~~~~~~~~~~~~~
-
-Specifies the `res-ref-name` in the corresponding Java EE deployment
-descriptor file `resource-ref` entry. The `res-ref-name` element
-specifies the name of a resource manager connection factory reference.
-The name must be unique within an enterprise bean.
-
-[[fvyvk]][[GSDPG00679]][[superelements-164]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaww[`resource-ref`] (`glassfish-web.xml`,
-`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)
-
-[[fvyyp]][[GSDPG00680]][[subelements-156]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beaws]][[GSDPG00249]][[resize-quantity]]
-
-`resize-quantity`
-~~~~~~~~~~~~~~~~~
-
-Specifies the number of bean instances to be:
-
-* Created, if a request arrives when the pool has less than
-link:#beaxt[`steady-pool-size`] quantity of beans (applies to pools only
-for creation). If the pool has more than `steady-pool-size` minus
-link:#beaws[`resize-quantity`] of beans, then `resize-quantity` is still
-created.
-* Removed, when the link:#beavr[`pool-idle-timeout-in-seconds`] timer
-expires and a cleaner thread removes any unused instances.
-
-** For caches, when link:#beauo[`max-cache-size`] is reached,
-`resize-quantity` beans are selected for passivation using the
-link:#beayp[`victim-selection-policy`]. In addition, the
-link:#bearg[`cache-idle-timeout-in-seconds`] or
-link:#beawl[`removal-timeout-in-seconds`] timers passivate beans from
-the cache.
-
-** For pools, when the link:#beaup[`max-pool-size`] is reached,
-`resize-quantity` beans are selected for removal. In addition, the
-link:#beavr[`pool-idle-timeout-in-seconds`] timer removes beans until
-`steady-pool-size` is reached.
-
-Values are from 0 to MAX_INTEGER. The pool is not resized below the
-`steady-pool-size`. Default is 16.
-
-Applies to stateless session beans, entity beans, and message-driven
-beans.
-
-For EJB pools, the value can be defined in the EJB container. Default is
-16.
-
-For EJB caches, the value can be defined in the EJB container. Default
-is 32.
-
-For message-driven beans, the value can be defined in the EJB container.
-Default is 2.
-
-[[fvyxb]][[GSDPG00681]][[superelements-165]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beara[`bean-cache`], link:#bearb[`bean-pool`]
-(`glassfish-ejb-jar.xml`)
-
-[[fvzcf]][[GSDPG00682]][[subelements-157]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[giyit]][[GSDPG00250]][[resource-adapter-config]]
-
-`resource-adapter-config`
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Defines a connector (resource adapter) configuration. Stores
-configuration information for the resource adapter JavaBean in
-`property` subelements.
-
-[[GSDPG995]][[sthref188]]
-
-
-[[superelements-166]]
-Superelements
-^^^^^^^^^^^^^
-
-link:#giyiy[`resources`] (`glassfish-resources.xml`)
-
-[[GSDPG996]][[sthref189]]
-
-
-[[subelements-158]]
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the
-`resource-adapter-config` element.
-
-[[GSDPG997]][[sthref190]][[sthref191]]
-
-
-Table C-122 `resource-adapter-config` Subelements
-
-[width="100%",cols="25%,12%,63%",options="header",]
-|==================================================
-|Element |Required |Description
-a|
-link:#beavx[`property` (with attributes)]
-
-
- |zero or more |Specifies a property or a variable.
-|==================================================
-
-
-[[GSDPG998]][[sthref192]]
-
-
-[[attributes-36]]
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the
-`resource-adapter-config` element.
-
-[[GSDPG999]][[sthref193]][[sthref194]]
-
-
-Table C-123 `resource-adapter-config` Attributes
-
-[width="172%",cols="16%,46%,38%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`name` |none |(optional) Not used. See `resource-adapter-name`.
-
-|`thread-pool-ids` |none |(optional) Specifies a comma-separated list of
-the names of thread pools.
-
-|`object-type` |`user` a|
-(optional) Defines the type of the resource. Allowed values are:
-
-* `system-all` - A system resource for all server instances and the
-domain application server.
-* `system-admin` - A system resource only for the domain application
-server.
-* `system-instance` - A system resource for all server instances only.
-* `user` - A user resource.
-
-|`resource-``adapter-name` |none |Specifies the name of a deployed
-connector module or application. If the resource adapter is embedded in
-an application, then it is app_name`#`rar_name.
-|=======================================================================
-
-
-[[GSDPG1000]][[sthref195]]
-
-
-[[properties-11]]
-Properties
-^^^^^^^^^^
-
-Properties of the `resource-adapter-config` element are the names of
-setter methods of the `resourceadapter-class` element in the `ra.xml`
-file, which defines the class name of the resource adapter JavaBean. Any
-properties defined here override the default values present in `ra.xml`.
-
-[[beawt]][[GSDPG00251]][[resource-adapter-mid]]
-
-`resource-adapter-mid`
-~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies the module ID of the resource adapter that is responsible for
-delivering messages to the message-driven bean.
-
-[[fvyvd]][[GSDPG00683]][[superelements-167]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaus[`mdb-resource-adapter`] (`glassfish-ejb-jar.xml`)
-
-[[fvzed]][[GSDPG00684]][[subelements-159]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beawu]][[GSDPG00252]][[resource-env-ref]]
-
-`resource-env-ref`
-~~~~~~~~~~~~~~~~~~
-
-Maps the `res-ref-name` in the corresponding Java EE deployment
-descriptor file `resource-env-ref` entry to the absolute `jndi-name` of
-a resource.
-
-[[fvyvr]][[GSDPG00685]][[superelements-168]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`),
-link:#beass[`ejb`] (`glassfish-ejb-jar.xml`),
-link:#beaxx[`glassfish-application-client`]
-(`glassfish-application-client.xml`)
-
-[[fvywe]][[GSDPG00686]][[subelements-160]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `resource-env-ref`
-element.
-
-[[GSDPG1001]][[sthref196]][[fvyye]]
-
-
-Table C-124 `resource-env-ref` Subelements
-
-[width="100%",cols="26%,10%,64%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beawv[`resource-env-ref-name`]
-
-
- |only one |Specifies the `res-ref-name` in the corresponding Java EE
-deployment descriptor file `resource-env-ref` entry.
-
-a|
-link:#beatw[`jndi-name`]
-
-
- |only one |Specifies the absolute `jndi-name` of a resource.
-|=======================================================================
-
-
-[[fvzdf]][[GSDPG00687]][[example-9]]
-
-Example
-^^^^^^^
-
-[source,oac_no_warn]
-----
-<resource-env-ref>
-   <resource-env-ref-name>jms/StockQueueName</resource-env-ref-name>
-   <jndi-name>jms/StockQueue</jndi-name>
-</resource-env-ref>
-----
-
-[[beawv]][[GSDPG00253]][[resource-env-ref-name]]
-
-`resource-env-ref-name`
-~~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies the `res-ref-name` in the corresponding Java EE deployment
-descriptor file `resource-env-ref` entry.
-
-[[fvzau]][[GSDPG00688]][[superelements-169]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beawu[`resource-env-ref`] (`glassfish-web.xml`,
-`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)
-
-[[fvyxj]][[GSDPG00689]][[subelements-161]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beaww]][[GSDPG00254]][[resource-ref]]
-
-`resource-ref`
-~~~~~~~~~~~~~~
-
-Maps the `res-ref-name` in the corresponding Java EE deployment
-descriptor file `resource-ref` entry to the absolute `jndi-name` of a
-resource.
-
-
-[NOTE]
-=======================================================================
-
-Connections acquired from JMS connection factories are not shareable in
-the current release of GlassFish Server. The `res-sharing-scope` element
-in the `ejb-jar.xml` file `resource-ref` element is ignored for JMS
-connection factories.
-
-When `resource-ref` specifies a JMS connection factory for the Open
-Message Queue, the `default-resource-principal` (name/password) must
-exist in the Message Queue user repository. Refer to the Security
-Management chapter in the olink:GMADG[Open Message Queue Administration
-Guide] for information on how to manage the Message Queue user
-repository.
-
-=======================================================================
-
-
-[[fvywf]][[GSDPG00690]][[superelements-170]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`),
-link:#beass[`ejb`] (`glassfish-ejb-jar.xml`),
-link:#beaxx[`glassfish-application-client`]
-(`glassfish-application-client.xml`)
-
-[[fvyzz]][[GSDPG00691]][[subelements-162]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `resource-ref`
-element.
-
-[[GSDPG1002]][[sthref197]][[fvzbd]]
-
-
-Table C-125 `resource-ref` Subelements
-
-[width="100%",cols="33%,11%,56%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beawr[`res-ref-name`]
-
-
- |only one |Specifies the `res-ref-name` in the corresponding Java EE
-deployment descriptor file `resource-ref` entry.
-
-a|
-link:#beatw[`jndi-name`]
-
-
- |only one |Specifies the absolute `jndi-name` of a resource.
-
-a|
-link:#beasn[`default-resource-principal`]
-
-
- |zero or one |Specifies the default principal (user) for the resource.
-|=======================================================================
-
-
-[[fvyzk]][[GSDPG00692]][[example-10]]
-
-Example
-^^^^^^^
-
-[source,oac_no_warn]
-----
-<resource-ref>
-   <res-ref-name>jdbc/EmployeeDBName</res-ref-name>
-   <jndi-name>jdbc/EmployeeDB</jndi-name>
-</resource-ref>
-----
-
-[[giyiy]][[GSDPG00255]][[resources]]
-
-`resources`
-~~~~~~~~~~~
-
-Defines application-scoped resources for an enterprise application, web
-module, EJB module, connector module, or application client module. This
-is the root element; there can only be one `resources` element in a
-`glassfish-resources.xml` file. See link:dd-files.html#giyhh[The
-glassfish-resources.xml File].
-
-
-[NOTE]
-=======================================================================
-
-You must specify a Java Naming and Directory Interface (JNDI) name for
-each resource. To avoid collisions with names of other enterprise
-resources in JNDI, and to avoid portability problems, all names in a
-GlassFish Server application should begin with the string `java:app/`.
-
-=======================================================================
-
-
-[[GSDPG1003]][[sthref198]]
-
-
-[[superelements-171]]
-Superelements
-^^^^^^^^^^^^^
-
-none
-
-[[GSDPG1004]][[sthref199]]
-
-
-[[subelements-163]]
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `resources` element.
-
-[[GSDPG1005]][[sthref200]][[sthref201]]
-
-
-Table C-126 `resources` Subelements
-
-[width="100%",cols="31%,12%,57%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#giyhr[`custom-resource`]
-
-
- |zero or more |Defines a custom resource.
-
-a|
-link:#giyin[`external-jndi-resource`]
-
-
- |zero or more |Defines a resource that resides in an external JNDI
-repository.
-
-a|
-link:#giyhm[`jdbc-resource`]
-
-
- |zero or more |Defines a JDBC (Java Database Connectivity) resource.
-
-a|
-link:#giyik[`mail-resource`]
-
-
- |zero or more |Defines a Jakarta Mail resource.
-
-a|
-link:#giyhw[`admin-object-resource`]
-
-
- |zero or more |Defines an administered object for an inbound resource
-adapter.
-
-a|
-link:#giyhv[`connector-resource`]
-
-
- |zero or more |Defines a connector (resource adapter) resource.
-
-a|
-link:#giyit[`resource-adapter-config`]
-
-
- |zero or more |Defines a resource adapter configuration.
-
-a|
-link:#giyil[`jdbc-connection-pool`]
-
-
- |zero or more |Defines the properties that are required for creating a
-JDBC connection pool.
-
-a|
-link:#giygu[`connector-connection-pool`]
-
-
- |zero or more |Defines the properties that are required for creating a
-connector connection pool.
-
-a|
-link:#giyht[`work-security-map`]
-
-
- |zero or more |Defines a work security map.
-|=======================================================================
-
-
-
-[NOTE]
-===========================================================
-
-Subelements of a `resources` element can occur in any order.
-
-===========================================================
-
-
-[[beawx]][[GSDPG00256]][[response-policy]]
-
-`response-policy`
-~~~~~~~~~~~~~~~~~
-
-Defines the authentication policy requirements of the authentication
-provider's response processing.
-
-[[fvzcg]][[GSDPG00693]][[superelements-172]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beavz[`provider-config`] (`sun-acc.xml`)
-
-[[fvyxm]][[GSDPG00694]][[subelements-164]]
-
-Subelements
-^^^^^^^^^^^
-
-none
-
-[[fvyxf]][[GSDPG00695]][[attributes-37]]
-
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `response-policy`
-element.
-
-[[GSDPG1006]][[sthref202]][[fvyyr]]
-
-
-Table C-127 `response-policy` Attributes
-
-[width="172%",cols="13%,46%,41%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`auth-source` |none |Specifies the type of required authentication,
-either `sender` (user name and password) or `content` (digital
-signature).
-
-|`auth-recipient` |none |Specifies whether recipient authentication
-occurs before or after content authentication. Allowed values are
-`before-content` and `after-content`.
-|=======================================================================
-
-
-[[beawy]][[GSDPG00257]][[response-protection]]
-
-`response-protection`
-~~~~~~~~~~~~~~~~~~~~~
-
-Defines the authentication policy requirements of the application's
-response processing.
-
-[[fvzdk]][[GSDPG00696]][[superelements-173]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beauw[`message-security`] (`glassfish-web.xml`,
-`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)
-
-[[fvyxd]][[GSDPG00697]][[subelements-165]]
-
-Subelements
-^^^^^^^^^^^
-
-none
-
-[[fvzeh]][[GSDPG00698]][[attributes-38]]
-
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `response-protection`
-element.
-
-[[GSDPG1007]][[sthref203]][[fvzej]]
-
-
-Table C-128 `response-protection` Attributes
-
-[width="172%",cols="13%,46%,41%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`auth-source` |none |Specifies the type of required authentication,
-either `sender` (user name and password) or `content` (digital
-signature).
-
-|`auth-recipient` |none |Specifies whether recipient authentication
-occurs before or after content authentication. Allowed values are
-`before-content` and `after-content`.
-|=======================================================================
-
-
-[[beawz]][[GSDPG00258]][[role-name]]
-
-`role-name`
-~~~~~~~~~~~
-
-Contains the `role-name` in the `security-role` element of the
-corresponding Java EE deployment descriptor file.
-
-[[fvzek]][[GSDPG00699]][[superelements-174]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaxg[`security-role-mapping`] (`glassfish-application.xml`,
-`glassfish-web.xml`, `glassfish-ejb-jar.xml`)
-
-[[fvzei]][[GSDPG00700]][[subelements-166]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beaxb]][[GSDPG00259]][[sas-context]]
-
-`sas-context`
-~~~~~~~~~~~~~
-
-Describes the sas-context fields.
-
-[[fvzel]][[GSDPG00701]][[superelements-175]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beato[`ior-security-config`] (`glassfish-ejb-jar.xml`)
-
-[[fvzfb]][[GSDPG00702]][[subelements-167]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `sas-context` element.
-
-[[GSDPG1008]][[sthref204]][[fvzey]]
-
-
-Table C-129 `sas-context` Subelements
-
-[width="100%",cols="30%,11%,59%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#bearj[`caller-propagation`]
-
-
- |only one |Specifies whether the target accepts propagated caller
-identities. The values are NONE, SUPPORTED, or REQUIRED.
-|=======================================================================
-
-
-[[beaxc]][[GSDPG00260]][[schema]]
-
-`schema`
-~~~~~~~~
-
-Specifies the file that contains a description of the database schema to
-which the beans in this `sun-cmp-mappings.xml` file are mapped. If this
-element is empty, the database schema file is automatically generated at
-deployment time. Otherwise, the `schema` element names a `.dbschema`
-file with a pathname relative to the directory containing the
-`sun-cmp-mappings.xml` file, but without the `.dbschema` extension. See
-"link:../application-development-guide/container_managed-persistence.html#GSDVG00439[Automatic Database Schema Capture]" in GlassFish
-Server Open Source Edition Application Development Guide.
-
-[[fvzfa]][[GSDPG00703]][[superelements-176]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaxy[`sun-cmp-mapping`] (`sun-cmp-mappings.xml`)
-
-[[fvzeq]][[GSDPG00704]][[subelements-168]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[fvzer]][[GSDPG00705]][[examples-1]]
-
-Examples
-^^^^^^^^
-
-[source,oac_no_warn]
-----
-<schema/> <!-- use automatic schema generation -->
-
-<schema>CompanySchema</schema> <!-- use "CompanySchema.dbschema" -->
-----
-
-[[beaxd]][[GSDPG00261]][[schema-generator-properties]]
-
-`schema-generator-properties`
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies field-specific column attributes in `property` subelements.
-
-[[fvzen]][[GSDPG00706]][[superelements-177]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#bearv[`cmp-resource`] (`glassfish-ejb-jar.xml`)
-
-[[fvzez]][[GSDPG00707]][[subelements-169]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the
-`schema-generator-properties` element.
-
-[[GSDPG1009]][[sthref205]][[fvzex]]
-
-
-Table C-130 `schema-generator-properties` Subelements
-
-[width="100%",cols="40%,14%,46%",options="header",]
-|===================================================
-|Element |Required |Description
-a|
-link:#beavy[`property` (with subelements)]
-
-
- |zero or more |Specifies a property name and value.
-|===================================================
-
-
-[[fvzew]][[GSDPG00708]][[properties-12]]
-
-Properties
-^^^^^^^^^^
-
-The following table describes properties for the
-`schema-generator-properties` element.
-
-[[GSDPG1010]][[sthref206]][[fvzev]]
-
-
-Table C-131 `schema-generator-properties` Properties
-
-[width="172%",cols="17%,46%,37%",options="header",]
-|=======================================================================
-|Property |Default |Description
-|`use-unique-table-names` |`false` |Specifies that generated table names
-are unique within each GlassFish Server domain. This property can be
-overridden during deployment. See "link:../application-development-guide/container_managed-persistence.html#GSDVG00438[Generation Options
-for CMP]" in GlassFish Server Open Source Edition Application
-Development Guide.
-
-|bean-name`.`field-name`.`attribute |none |Defines a column attribute.
-For attribute descriptions, see link:#fvymm[Table C-132].
-|=======================================================================
-
-
-The following table lists the column attributes for properties defined
-in the `schema-generator-properties` element.
-
-[[GSDPG1011]][[sthref207]][[fvymm]]
-
-
-Table C-132 `schema-generator-properties` Column Attributes
-
-[width="100%",cols="24%,76%",options="header",]
-|=======================================================================
-|Attribute |Description
-|`jdbc-type` |Specifies the JDBC type of the column created for the CMP
-field. The actual SQL type generated is based on this JDBC type but is
-database vendor specific.
-
-|`jdbc-maximum-``length` a|
-Specifies the maximum number of characters stored in the column
-corresponding to the CMP field. Applies only when the actual SQL that is
-generated for the column requires a length.
-
-For example, a `jdbc-maximum-length` of `32` on a CMP `String` field
-such as `firstName` normally results in a column definition such as
-VARCHAR(32). But if the `jdbc-type` is `CLOB` and you are deploying on
-Oracle, the resulting column definition is CLOB. No length is given,
-because in an Oracle database, a CLOB has no length.
-
-|`jdbc-precision` |Specifies the maximum number of digits stored in a
-column which represents a numeric type.
-
-|`jdbc-scale` |Specifies the number of digits stored to the right of the
-decimal point in a column that represents a floating point number.
-
-|`jdbc-nullable` |Specifies whether the column generated for the CMP
-field allows null values.
-|=======================================================================
-
-
-[[fvzem]][[GSDPG00709]][[example-11]]
-
-Example
-^^^^^^^
-
-[source,oac_no_warn]
-----
-<schema-generator-properties>
-   <property>
-         <name>Employee.firstName.jdbc-type</name>
-         <value>char</value>
-   </property>
-   <property>
-         <name>Employee.firstName.jdbc-maximum-length</name>
-         <value>25</value>
-   </property>
-   <property>
-         <name>use-unique-table-names</name>
-         <value>true</value>
-   </property>
-</schema-generator-properties>
-----
-
-[[beaxe]][[GSDPG00262]][[secondary-table]]
-
-`secondary-table`
-~~~~~~~~~~~~~~~~~
-
-Specifies a bean's secondary table(s).
-
-[[fvzep]][[GSDPG00710]][[superelements-178]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beasy[`entity-mapping`] (`sun-cmp-mappings.xml`)
-
-[[fvzeo]][[GSDPG00711]][[subelements-170]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `secondary-table`
-element.
-
-[[GSDPG1012]][[sthref208]][[fvzet]]
-
-
-Table C-133 `secondary table` Subelements
-
-[width="100%",cols="28%,15%,57%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beayd[`table-name`]
-
-
- |only one |Specifies the name of a database table.
-
-a|
-link:#beasa[`column-pair`]
-
-
- |one or more |Specifies the pair of columns that determine the
-relationship between two database tables.
-|=======================================================================
-
-
-[[beaxf]][[GSDPG00263]][[security]]
-
-`security`
-~~~~~~~~~~
-
-Defines the SSL security configuration for IIOP/SSL communication with
-the target server.
-
-[[fvzes]][[GSDPG00712]][[superelements-179]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaye[`target-server`] (`sun-acc.xml`)
-
-[[fvzeu]][[GSDPG00713]][[subelements-171]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `security` element.
-
-[[GSDPG1013]][[sthref209]][[fvzfe]]
-
-
-Table C-134 `security` Subelements
-
-[width="100%",cols="20%,12%,68%",options="header",]
-|=====================================================================
-|Element |Required |Description
-a|
-link:#beaxs[`ssl`]
-
-
- |only one |Specifies the SSL processing parameters.
-a|
-link:#beark[`cert-db`]
-
-
- |only one |Not implemented. Included for backward compatibility only.
-|=====================================================================
-
-
-[[giyhy]][[GSDPG00264]][[security-map]]
-
-`security-map`
-~~~~~~~~~~~~~~
-
-Maps the principal received during servlet or EJB authentication to the
-credentials accepted by the EIS. This mapping is optional. It is
-possible to map multiple GlassFish Server principals to the same
-back-end principal.
-
-This is different from a link:#giyht[`work-security-map`], which maps a
-principal associated with an incoming work instance to a principal in
-the GlassFish Server's security domain.
-
-[[GSDPG1014]][[sthref210]]
-
-
-[[superelements-180]]
-Superelements
-^^^^^^^^^^^^^
-
-link:#giygu[`connector-connection-pool`] (`glassfish-resources.xml`)
-
-[[GSDPG1015]][[sthref211]]
-
-
-[[subelements-172]]
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `security-map`
-element.
-
-[[GSDPG1016]][[sthref212]][[sthref213]]
-
-
-Table C-135 `security-map` Subelements
-
-[width="100%",cols="21%,12%,67%",options="header",]
-|====================================================================
-|Element |Required |Description
-a|
-link:#beavv[`principal`]
-
-
- |one or more |Contains the principal of the servlet or EJB client.
-a|
-link:#giyiq[`user-group`]
-
-
- |one or more |Contains the group to which the principal belongs.
-a|
-link:#giyjv[`backend-principal`]
-
-
- |only one |Specifies the user name and password required by the EIS.
-|====================================================================
-
-
-[[GSDPG1017]][[sthref214]]
-
-
-[[attributes-39]]
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `security-map` element.
-
-[[GSDPG1018]][[sthref215]][[sthref216]]
-
-
-Table C-136 `security-map` Attributes
-
-[width="100%",cols="23%,20%,57%",options="header",]
-|========================================================
-|Attribute |Default |Description
-|`name` |none |Specifies a name for the security mapping.
-|========================================================
-
-
-[[beaxg]][[GSDPG00265]][[security-role-mapping]]
-
-`security-role-mapping`
-~~~~~~~~~~~~~~~~~~~~~~~
-
-Maps roles to users or groups in the currently active realm. See
-"link:../application-development-guide/securing-apps.html#GSDVG00118[Realm Configuration]" in GlassFish Server Open Source
-Edition Application Development Guide.
-
-The role mapping element maps a role, as specified in the EJB JAR
-`role-name` entries, to a environment-specific user or group. If it maps
-to a user, it must be a concrete user which exists in the current realm,
-who can log into the server using the current authentication method. If
-it maps to a group, the realm must support groups and the group must be
-a concrete group which exists in the current realm. To be useful, there
-must be at least one user in that realm who belongs to that group.
-
-[[fvzfc]][[GSDPG00714]][[superelements-181]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaxw[`glassfish-application`] (`glassfish-application.xml`),
-link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`),
-link:#beaya[`glassfish-ejb-jar`] (`glassfish-ejb-jar.xml`)
-
-[[fvzfd]][[GSDPG00715]][[subelements-173]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the
-`security-role-mapping` element.
-
-[[GSDPG1019]][[sthref217]][[fvzfj]]
-
-
-Table C-137 `security-role-mapping` Subelements
-
-[width="100%",cols="18%,33%,49%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beawz[`role-name`]
-
-
- |only one |Contains the `role-name` in the `security-role` element of
-the corresponding Java EE deployment descriptor file.
-
-a|
-link:#beavw[`principal-name`]
-
-
- |one or more if no `group-name`, otherwise zero or more |Contains a
-principal (user) name in the current realm. In an enterprise bean, the
-principal must have the run-as role specified.
-
-a|
-link:#beati[`group-name`]
-
-
- |one or more if no `principal-name`, otherwise zero or more |Contains a
-group name in the current realm.
-|=======================================================================
-
-
-[[beaxh]][[GSDPG00266]][[service-endpoint-interface]]
-
-`service-endpoint-interface`
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies the web service reference name relative to `java:comp/env`.
-
-[[fvzfm]][[GSDPG00716]][[superelements-182]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beavt[`port-info`] (`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
-`glassfish-application-client.xml`)
-
-[[fvzfl]][[GSDPG00717]][[subelements-174]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beaxi]][[GSDPG00267]][[service-impl-class]]
-
-`service-impl-class`
-~~~~~~~~~~~~~~~~~~~~
-
-Specifies the name of the generated service implementation class.
-
-[[fvzfg]][[GSDPG00718]][[superelements-183]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaxk[`service-ref`] (`glassfish-web.xml`,
-`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)
-
-[[fvzfk]][[GSDPG00719]][[subelements-175]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beaxj]][[GSDPG00268]][[service-qname]]
-
-`service-qname`
-~~~~~~~~~~~~~~~
-
-Specifies the WSDL service element that is being referred to.
-
-[[fvzfn]][[GSDPG00720]][[superelements-184]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaxk[`service-ref`] (`glassfish-web.xml`,
-`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`);
-link:#beayv[`webservice-endpoint`] (`glassfish-web.xml`,
-`glassfish-ejb-jar.xml`)
-
-[[fvzff]][[GSDPG00721]][[subelements-176]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `service-qname`
-element.
-
-[[GSDPG1020]][[sthref218]][[fvzfi]]
-
-
-Table C-138 `service-qname` subelements
-
-[width="100%",cols="30%,15%,55%",options="header",]
-|===============================================
-|Element |Required |Description
-a|
-link:#beavh[`namespaceURI`]
-
-
- |only one |Specifies the namespace URI.
-a|
-link:#beaug[`localpart`]
-
-
- |only one |Specifies the local part of a QNAME.
-|===============================================
-
-
-[[beaxk]][[GSDPG00269]][[service-ref]]
-
-`service-ref`
-~~~~~~~~~~~~~
-
-Specifies runtime settings for a web service reference. Runtime
-information is only needed in the following cases:
-
-* To define the port used to resolve a container-managed port
-* To define the default Stub/Call property settings for Stub objects
-* To define the URL of a final WSDL document to be used instead of the
-one associated with the `service-ref` in the standard Java EE deployment
-descriptor
-
-[[fvzfh]][[GSDPG00722]][[superelements-185]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`),
-link:#beass[`ejb`] (`glassfish-ejb-jar.xml`),
-link:#beaxx[`glassfish-application-client`]
-(`glassfish-application-client.xml`)
-
-[[fvzhf]][[GSDPG00723]][[subelements-177]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `service-ref` element.
-
-[[GSDPG1021]][[sthref219]][[fvzgc]]
-
-
-Table C-139 `service-ref` subelements
-
-[width="100%",cols="23%,12%,65%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beaxl[`service-ref-name`]
-
-
- |only one |Specifies the web service reference name relative to
-`java:comp/env`.
-
-a|
-link:#beavt[`port-info`]
-
-
- |zero or more |Specifies information for a port within a web service
-reference.
-
-a|
-link:#beari[`call-property`]
-
-
- |zero or more |Specifies JAX-RPC property values that can be set on a
-`javax.xml.rpc.Call` object before it is returned to the web service
-client.
-
-a|
-link:#beayw[`wsdl-override`]
-
-
- |zero or one |Specifies a valid URL pointing to a final WSDL document.
-
-a|
-link:#beaxi[`service-impl-class`]
-
-
- |zero or one |Specifies the name of the generated service
-implementation class.
-
-a|
-link:#beaxj[`service-qname`]
-
-
- |zero or one |Specifies the WSDL service element that is being
-referenced.
-|=======================================================================
-
-
-[[beaxl]][[GSDPG00270]][[service-ref-name]]
-
-`service-ref-name`
-~~~~~~~~~~~~~~~~~~
-
-Specifies the web service reference name relative to `java:comp/env`.
-
-[[fvzfx]][[GSDPG00724]][[superelements-186]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaxk[`service-ref`] (`glassfish-web.xml`,
-`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)
-
-[[fvzga]][[GSDPG00725]][[subelements-178]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beaxm]][[GSDPG00271]][[servlet]]
-
-`servlet`
-~~~~~~~~~
-
-Specifies a principal name for a servlet. Used for the `run-as` role
-defined in `web.xml`.
-
-[[fvzgd]][[GSDPG00726]][[superelements-187]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`)
-
-[[fvzhs]][[GSDPG00727]][[subelements-179]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `servlet` element.
-
-[[GSDPG1022]][[sthref220]][[fvzhy]]
-
-
-Table C-140 `servlet` Subelements
-
-[width="100%",cols="24%,12%,64%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beaxo[`servlet-name`]
-
-
- |only one |Contains the name of a servlet, which is matched to a
-`servlet-name` in `web.xml`.
-
-a|
-link:#beavw[`principal-name`]
-
-
- |zero or one |Contains a principal (user) name in the current realm.
-
-a|
-link:#beayv[`webservice-endpoint`]
-
-
- |zero or more |Specifies information about a web service endpoint.
-|=======================================================================
-
-
-[[beaxn]][[GSDPG00272]][[servlet-impl-class]]
-
-`servlet-impl-class`
-~~~~~~~~~~~~~~~~~~~~
-
-Specifies the automatically generated name of the servlet implementation
-class.
-
-[[fvzhx]][[GSDPG00728]][[superelements-188]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beayv[`webservice-endpoint`] (`glassfish-web.xml`,
-`glassfish-ejb-jar.xml`)
-
-[[fvzfs]][[GSDPG00729]][[subelements-180]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beaxo]][[GSDPG00273]][[servlet-name]]
-
-`servlet-name`
-~~~~~~~~~~~~~~
-
-Specifies the name of a servlet, which is matched to a `servlet-name` in
-`web.xml`. This name must be present in `web.xml`.
-
-[[fvzhj]][[GSDPG00730]][[superelements-189]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#bearh[`cache-mapping`], link:#beaxm[`servlet`]
-(`glassfish-web.xml`)
-
-[[fvzir]][[GSDPG00731]][[subelements-181]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beaxp]][[GSDPG00274]][[session-config]]
-
-`session-config`
-~~~~~~~~~~~~~~~~
-
-Specifies session configuration information. Overrides the web container
-settings for an individual web module.
-
-[[fvzic]][[GSDPG00732]][[superelements-190]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`)
-
-[[fvzfy]][[GSDPG00733]][[subelements-182]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `session-config`
-element.
-
-[[GSDPG1023]][[sthref221]][[fvzib]]
-
-
-Table C-141 `session-config` Subelements
-
-[width="100%",cols="31%,16%,53%",options="header",]
-|==================================================================
-|Element |Required |Description
-a|
-link:#beaxq[`session-manager`]
-
-
- |zero or one |Specifies session manager configuration information.
-a|
-link:#beaxr[`session-properties`]
-
-
- |zero or one |Specifies session properties.
-a|
-link:#beash[`cookie-properties`]
-
-
- |zero or one |Specifies session cookie properties.
-|==================================================================
-
-
-[[beaxq]][[GSDPG00275]][[session-manager]]
-
-`session-manager`
-~~~~~~~~~~~~~~~~~
-
-Specifies session manager information.
-
-[[fvzgx]][[GSDPG00734]][[superelements-191]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaxp[`session-config`] (`glassfish-web.xml`)
-
-[[fvzit]][[GSDPG00735]][[subelements-183]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `session-manager`
-element.
-
-[[GSDPG1024]][[sthref222]][[fvzgo]]
-
-
-Table C-142 `session-manager` Subelements
-
-[width="100%",cols="32%,15%,53%",options="header",]
-|=================================================================
-|Element |Required |Description
-a|
-link:#beaum[`manager-properties`]
-
-
- |zero or one |Specifies session manager properties.
-a|
-link:#beaxu[`store-properties`]
-
-
- |zero or one |Specifies session persistence (storage) properties.
-|=================================================================
-
-
-[[fvzgm]][[GSDPG00736]][[attributes-40]]
-
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `session-manager`
-element.
-
-[[GSDPG1025]][[sthref223]][[fvzje]]
-
-
-Table C-143 `session-manager` Attributes
-
-[width="172%",cols="13%,46%,41%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`persistence-type` |`memory` a|
-(optional) Specifies the session persistence mechanism. Allowed values
-are `memory`, `file`, and `replicated`.
-
-If you have installed and configured Coherence*Web, the `coherence-web`
-persistence type is also available. For more information, see Using
-Coherence*Web with GlassFish Server
-(`http://docs.oracle.com/cd/E18686_01/coh.37/e18690/glassfish.html`).
-
-|=======================================================================
-
-
-[[beaxr]][[GSDPG00276]][[session-properties]]
-
-`session-properties`
-~~~~~~~~~~~~~~~~~~~~
-
-Specifies session properties.
-
-[[fvzha]][[GSDPG00737]][[superelements-192]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaxp[`session-config`] (`glassfish-web.xml`)
-
-[[fvzgk]][[GSDPG00738]][[subelements-184]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `session-properties`
-element.
-
-[[GSDPG1026]][[sthref224]][[fvzgv]]
-
-
-Table C-144 `session-properties` Subelements
-
-[width="100%",cols="36%,14%,50%",options="header",]
-|==================================================================
-|Element |Required |Description
-a|
-link:#beavx[`property` (with attributes)]
-
-
- |zero or more |Specifies a property, which has a name and a value.
-|==================================================================
-
-
-[[fvzht]][[GSDPG00739]][[properties-13]]
-
-Properties
-^^^^^^^^^^
-
-The following table describes properties for the `session-properties`
-element.
-
-[[GSDPG1027]][[sthref225]][[fvzii]]
-
-
-Table C-145 `session-properties` Properties
-
-[width="172%",cols="14%,46%,40%",options="header",]
-|=======================================================================
-|Property |Default |Description
-|`timeoutSeconds` |`1800` a|
-Specifies the default maximum inactive interval (in seconds) for all
-sessions created in this web module. If set to `0` or less, sessions in
-this web module never expire.
-
-If a `session-timeout` element is specified in the `web.xml` file, the
-`session-timeout` value overrides any `timeoutSeconds` value. If neither
-`session-timeout` nor `timeoutSeconds` is specified, the
-`timeoutSeconds` default is used.
-
-Note that the `session-timeout` element in `web.xml` is specified in
-minutes, not seconds.
-
-|`enableCookies` |`true` |Uses cookies for session tracking if set to
-`true`.
-
-|`enableURLRewriting` |`true` |Enables URL rewriting. This provides
-session tracking via URL rewriting when the browser does not accept
-cookies. You must also use an `encodeURL` or `encodeRedirectURL` call in
-the servlet or JSP.
-|=======================================================================
-
-
-[[beaxs]][[GSDPG00277]][[ssl]]
-
-`ssl`
-~~~~~
-
-Defines SSL processing parameters.
-
-[[fvzft]][[GSDPG00740]][[superelements-193]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaxf[`security`] (`sun-acc.xml`)
-
-[[fvzgh]][[GSDPG00741]][[subelements-185]]
-
-Subelements
-^^^^^^^^^^^
-
-none
-
-[[fvzip]][[GSDPG00742]][[attributes-41]]
-
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `SSL` element.
-
-[[GSDPG1028]][[sthref226]][[fvzgb]]
-
-
-Table C-146 `ssl attributes`
-
-[width="172%",cols="16%,46%,38%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`cert-nickname` |`s1as` |(optional) The nickname of the server
-certificate in the certificate database or the PKCS#11 token. In the
-certificate, the name format is tokenname`:`nickname. Including the
-tokenname`:` part of the name in this attribute is optional.
-
-|`ssl2-enabled` |`false` |(optional) Determines whether SSL2 is enabled.
-
-|`ssl2-ciphers` |none |(optional) A comma-separated list of the SSL2
-ciphers to be used. Ciphers not explicitly listed will be disabled for
-the target, even if those ciphers are available in the particular cipher
-suite you are using. If this option is not used, all supported ciphers
-are assumed to be enabled. Allowed values are `rc4`, `rc4export`, `rc2`,
-`rc2export`, `idea`, `des`, `desede3`.
-
-|`ssl3-enabled` |`true` |(optional) Determines whether SSL3 is enabled.
-
-|`ssl3-tls-``ciphers` |none |(optional) A comma-separated list of the
-SSL3 and/or TLS ciphers to be used. Ciphers not explicitly listed will
-be disabled for the target, even if those ciphers are available in the
-particular cipher suite you are using. If this option is not used, all
-supported ciphers are assumed to be enabled. Allowed values are
-`SSL_RSA_WITH_RC4_128_MD5`, `SSL_RSA_WITH_3DES_EDE_CBC_SHA`,
-`SSL_RSA_WITH_DES_CBC_SHA`, `SSL_RSA_EXPORT_WITH_RC4_40_MD5`,
-`SSL_RSA_WITH_NULL_MD5`, `SSL_RSA_WITH_RC4_128_SHA`,
-`SSL_RSA_WITH_NULL_SHA`. Values available in previous releases are
-supported for backward compatibility.
-
-|`tls-enabled` |`true` |(optional) Determines whether TLS is enabled.
-
-|`tls-rollback-``enabled` |`true` |(optional) Determines whether TLS
-rollback is enabled. Enable TLS rollback for Microsoft Internet Explorer
-5.0 and 5.5.
-|=======================================================================
-
-
-[[beaxt]][[GSDPG00278]][[steady-pool-size]]
-
-`steady-pool-size`
-~~~~~~~~~~~~~~~~~~
-
-Specifies the initial and minimum number of bean instances that are
-maintained in the pool. Default is 32. Applies to stateless session
-beans and message-driven beans.
-
-[[fvziq]][[GSDPG00743]][[superelements-194]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#bearb[`bean-pool`] (`glassfish-ejb-jar.xml`)
-
-[[fvziy]][[GSDPG00744]][[subelements-186]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beaxu]][[GSDPG00279]][[store-properties]]
-
-`store-properties`
-~~~~~~~~~~~~~~~~~~
-
-Specifies session persistence (storage) properties.
-
-[[fvzie]][[GSDPG00745]][[superelements-195]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaxq[`session-manager`] (`glassfish-web.xml`)
-
-[[fvzid]][[GSDPG00746]][[subelements-187]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `store-properties`
-element.
-
-[[GSDPG1029]][[sthref227]][[fvzif]]
-
-
-Table C-147 `store-properties` Subelements
-
-[width="100%",cols="37%,14%,49%",options="header",]
-|==================================================================
-|Element |Required |Description
-a|
-link:#beavx[`property` (with attributes)]
-
-
- |zero or more |Specifies a property, which has a name and a value.
-|==================================================================
-
-
-[[fvzho]][[GSDPG00747]][[properties-14]]
-
-Properties
-^^^^^^^^^^
-
-The following table describes properties for the `store-properties`
-element.
-
-[[GSDPG1030]][[sthref228]][[fvzgr]]
-
-
-Table C-148 `store-properties` Properties
-
-[width="100%",cols="21%,23%,56%",options="header",]
-|=======================================================================
-|Property |Default |Description
-|`directory` |domain-dir`/generated/jsp/`app-name`/`module-name`_war` a|
-Specifies the absolute or relative pathname of the directory into which
-individual session files are written. A relative path is relative to the
-temporary work directory for this web module.
-
-Applicable only if the `persistence-type` attribute of the parent
-link:#beaxq[`session-manager`] element is `file`.
-
-|`persistenceScope` |`session` a|
-Specifies how much of the session state is stored. Allowed values are as
-follows:
-
-* `session` - The entire session state is stored every time. This mode
-provides the best guarantee that your session data is correctly stored
-for any distributable web module.
-* `modified-session` - The entire session state is stored if it has been
-modified. A session is considered to have been modified if
-`HttpSession.setAttribute()` or `HttpSession.removeAttribute()` was
-called. You must guarantee that `setAttribute` is called every time an
-attribute is changed. This is not a Java EE specification requirement,
-but it is required for this mode to work properly.
-* `modified-attribute` - Only modified session attributes are stored.
-For this mode to work properly, you must follow some guidelines, which
-are explained immediately following this table.
-
-Applicable only if the `persistence-type` attribute of the parent
-link:#beaxq[`session-manager`] element is `replicated`.
-
-|=======================================================================
-
-
-If the `persistenceScope` store property is set to `modified-attribute`,
-a web module must follow these guidelines:
-
-* Call `setAttribute` every time the session state is modified.
-* Make sure there are no cross-references between attributes. The object
-graph under each distinct attribute key is serialized and stored
-separately. If there are any object cross references between the objects
-under each separate key, they are not serialized and deserialized
-correctly.
-* Distribute the session state across multiple attributes, or at least
-between a read-only attribute and a modifiable attribute.
-
-[[beaxv]][[GSDPG00280]][[stub-property]]
-
-`stub-property`
-~~~~~~~~~~~~~~~
-
-Specifies JAX-RPC property values that are set on a `javax.xml.rpc.Stub`
-object before it is returned to the web service client. The property
-names can be any properties supported by the JAX-RPC `Stub`
-implementation.
-
-[[fvzgu]][[GSDPG00748]][[superelements-196]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beavt[`port-info`] (`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
-`glassfish-application-client.xml`)
-
-[[fvzij]][[GSDPG00749]][[subelements-188]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `stub-property`
-element.
-
-[[GSDPG1031]][[sthref229]][[fvziz]]
-
-
-Table C-149 `stub-property` subelements
-
-[width="100%",cols="23%,13%,64%",options="header",]
-|=============================================
-|Element |Required |Description
-a|
-link:#beavf[`name`]
-
-
- |only one |Specifies the name of the entity.
-a|
-link:#beayo[`value`]
-
-
- |only one |Specifies the value of the entity.
-|=============================================
-
-
-[[gawoa]][[GSDPG00750]][[properties-15]]
-
-Properties
-^^^^^^^^^^
-
-The following table describes properties for the `stub-property`
-element.
-
-[[GSDPG1032]][[sthref230]][[gawou]]
-
-
-Table C-150 `stub-property` properties
-
-[width="181%",cols="10%,49%,41%",options="header",]
-|=======================================================================
-|Property |Default |Description
-|`jbi-enabled` |`true` |Determines whether the visibility of this
-endpoint as a Java Business Integration service is enabled or disabled.
-|=======================================================================
-
-
-[[fvzji]][[GSDPG00751]][[example-12]]
-
-Example
-^^^^^^^
-
-[source,oac_no_warn]
-----
-<service-ref>
-<service-ref-name>service/FooProxy</service-ref-name>
-  <port-info>
-       <service-endpoint-interface>a.FooPort</service-endpoint-interface>
-       <wsdl-port>
-          <namespaceURI>urn:Foo</namespaceURI>
-          <localpart>FooPort</localpart>
-       </wsdl-port>
-       <stub-property>
-          <name>javax.xml.rpc.service.endpoint.address</name>
-          <value>http://localhost:8080/a/Foo</value>
-       </stub-property>
-  </port-info>
-</service-ref>
-----
-
-[[beaxy]][[GSDPG00281]][[sun-cmp-mapping]]
-
-`sun-cmp-mapping`
-~~~~~~~~~~~~~~~~~
-
-Specifies beans mapped to a particular database schema.
-
-
-[NOTE]
-=======================================================================
-
-A bean cannot be related to a bean that maps to a different database
-schema, even if the beans are deployed in the same EJB JAR file.
-
-=======================================================================
-
-
-[[fvzhh]][[GSDPG00752]][[superelements-197]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaxz[`sun-cmp-mappings`] (`sun-cmp-mappings.xml`)
-
-[[fvzjg]][[GSDPG00753]][[subelements-189]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `sun-cmp-mapping`
-element.
-
-[[GSDPG1033]][[sthref231]][[fvzhm]]
-
-
-Table C-151 `sun-cmp-mapping` Subelements
-
-[width="100%",cols="20%,13%,67%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beaxc[`schema`]
-
-
- |only one |Specifies the file that contains a description of the
-database schema.
-
-a|
-link:#beasy[`entity-mapping`]
-
-
- |one or more |Specifies the mapping of a bean to database columns.
-|=======================================================================
-
-
-[[beaxz]][[GSDPG00282]][[sun-cmp-mappings]]
-
-`sun-cmp-mappings`
-~~~~~~~~~~~~~~~~~~
-
-Defines the GlassFish Server specific CMP mapping configuration for an
-EJB JAR file. This is the root element; there can only be one
-`sun-cmp-mappings` element in a `sun-cmp-mappings.xml` file. See
-link:dd-files.html#beaqn[The sun-cmp-mappings.xml File].
-
-[[fvzix]][[GSDPG00754]][[superelements-198]]
-
-Superelements
-^^^^^^^^^^^^^
-
-none
-
-[[fvzjj]][[GSDPG00755]][[subelements-190]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `sun-cmp-mappings`
-element.
-
-[[GSDPG1034]][[sthref232]][[fvzin]]
-
-
-Table C-152 `sun-cmp-mappings` Subelements
-
-[width="100%",cols="32%,16%,52%",options="header",]
-|=====================================================================
-|Element |Required |Description
-a|
-link:#beaxy[`sun-cmp-mapping`]
-
-
- |one or more |Specifies beans mapped to a particular database schema.
-|=====================================================================
-
-
-[[beayd]][[GSDPG00283]][[table-name]]
-
-`table-name`
-~~~~~~~~~~~~
-
-Specifies the name of a database table. The table must be present in the
-database schema file. See "link:../application-development-guide/container_managed-persistence.html#GSDVG00439[Automatic Database Schema
-Capture]" in GlassFish Server Open Source Edition Application
-Development Guide.
-
-[[fvzis]][[GSDPG00756]][[superelements-199]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beasy[`entity-mapping`], link:#beaxe[`secondary-table`]
-(`sun-cmp-mappings.xml`)
-
-[[fvzjk]][[GSDPG00757]][[subelements-191]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beaye]][[GSDPG00284]][[target-server]]
-
-`target-server`
-~~~~~~~~~~~~~~~
-
-Specifies the IIOP listener for the target server. Also specifies IIOP
-endpoints used for load balancing. If the GlassFish Server instance on
-which the application client is deployed participates in a cluster,
-GlassFish Server finds all currently active IIOP endpoints in the
-cluster automatically. However, a client should have at least two
-endpoints specified for bootstrapping purposes, in case one of the
-endpoints has failed.
-
-A listener or endpoint is in the form host`:`port, where the host is an
-IP address or host name, and the port specifies the port number.
-
-Not used if the deprecated `endpoints` property is defined for load
-balancing. For more information, see link:#bearr[`client-container`].
-
-[[fvzgy]][[GSDPG00758]][[superelements-200]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#bearr[`client-container`] (`sun-acc.xml`)
-
-[[fvzhi]][[GSDPG00759]][[subelements-192]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `target-server`
-element.
-
-[[GSDPG1035]][[sthref233]][[fvzhg]]
-
-
-Table C-153 `target-server` subelements
-
-[width="100%",cols="23%,14%,63%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beaso[`description`]
-
-
- |zero or one |Specifies the description of the target server.
-
-a|
-link:#beaxf[`security`]
-
-
- |zero or one |Specifies the security configuration for the IIOP/SSL
-communication with the target server.
-|=======================================================================
-
-
-[[fvzfp]][[GSDPG00760]][[attributes-42]]
-
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `target-server`
-element.
-
-[[GSDPG1036]][[sthref234]][[fvzgg]]
-
-
-Table C-154 `target-server` attributes
-
-[width="181%",cols="7%,49%,44%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`name` |none |Specifies the name of the server instance accessed by the
-client container.
-
-|`address` |none |Specifies the host name or IP address (resolvable by
-DNS) of the server to which this client attaches.
-
-|`port` |none a|
-Specifies the naming service port number of the server to which this
-client attaches.
-
-For a new server instance, assign a port number other than 3700. You can
-change the port number in the Administration Console. Click the Help
-button in the Administration Console for more information.
-
-|=======================================================================
-
-
-[[beayf]][[GSDPG00285]][[tie-class]]
-
-`tie-class`
-~~~~~~~~~~~
-
-Specifies the automatically generated name of a tie implementation class
-for a port component.
-
-[[fvzgz]][[GSDPG00761]][[superelements-201]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beayv[`webservice-endpoint`] (`glassfish-web.xml`,
-`glassfish-ejb-jar.xml`)
-
-[[fvzfq]][[GSDPG00762]][[subelements-193]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beayg]][[GSDPG00286]][[timeout]]
-
-`timeout`
-~~~~~~~~~
-
-Specifies the link:#bearh[`cache-mapping`] specific maximum amount of
-time in seconds that an entry can remain in the cache after it is
-created or refreshed. If not specified, the default is the value of the
-`timeout` attribute of the link:#beard[`cache`] element.
-
-[[fvzhc]][[GSDPG00763]][[superelements-202]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#bearh[`cache-mapping`] (`glassfish-web.xml`)
-
-[[fvziv]][[GSDPG00764]][[subelements-194]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[fvzhd]][[GSDPG00765]][[attributes-43]]
-
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `timeout` element.
-
-[[GSDPG1037]][[sthref235]][[fvzih]]
-
-
-Table C-155 `timeout` Attributes
-
-[width="181%",cols="51%,11%,38%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`name` |none |Specifies the timeout input parameter, whose value is
-interpreted in seconds. The field's type must be `java.lang.Long` or
-`java.lang.Integer`.
-
-|`scope` |`request.attribute` |(optional) Specifies the scope from which
-the input parameter is retrieved. Allowed values are
-`context.attribute`, `request.header`, `request.parameter`,
-`request.cookie`, `request.attribute`, and `session.attribute`.
-|=======================================================================
-
-
-[[beayh]][[GSDPG00287]][[transport-config]]
-
-`transport-config`
-~~~~~~~~~~~~~~~~~~
-
-Specifies the security transport information.
-
-[[fvzfo]][[GSDPG00766]][[superelements-203]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beato[`ior-security-config`] (`glassfish-ejb-jar.xml`)
-
-[[fvzhv]][[GSDPG00767]][[subelements-195]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `transport-config`
-element.
-
-[[GSDPG1038]][[sthref236]][[fvziu]]
-
-
-Table C-156 `transport-config` Subelements
-
-[width="100%",cols="30%,10%,60%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beatn[`integrity`]
-
-
- |only one |Specifies if the target supports integrity-protected
-messages. The values are NONE, SUPPORTED, or REQUIRED.
-
-a|
-link:#beasc[`confidentiality`]
-
-
- |only one |Specifies if the target supports privacy-protected messages.
-The values are NONE, SUPPORTED, or REQUIRED.
-
-a|
-link:#beata[`establish-trust-in-target`]
-
-
- |only one |Specifies if the target is capable of authenticating to a
-client. The values are NONE, SUPPORTED, or REQUIRED.
-
-a|
-link:#beasz[`establish-trust-in-client`]
-
-
- |only one |Specifies if the target is capable of authenticating a
-client. The values are NONE, SUPPORTED, or REQUIRED.
-|=======================================================================
-
-
-[[beayi]][[GSDPG00288]][[transport-guarantee]]
-
-`transport-guarantee`
-~~~~~~~~~~~~~~~~~~~~~
-
-Specifies that the communication between client and server is `NONE`,
-`INTEGRAL`, or `CONFIDENTIAL`.
-
-* `NONE` means the application does not require any transport
-guarantees.
-* `INTEGRAL` means the application requires that the data sent between
-client and server be sent in such a way that it can't be changed in
-transit.
-* `CONFIDENTIAL` means the application requires that the data be
-transmitted in a fashion that prevents other entities from observing the
-contents of the transmission.
-
-In most cases, a value of `INTEGRAL` or `CONFIDENTIAL` indicates that
-the use of SSL is required.
-
-[[fvzhb]][[GSDPG00768]][[superelements-204]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beayv[`webservice-endpoint`] (`glassfish-web.xml`,
-`glassfish-ejb-jar.xml`)
-
-[[fvzgl]][[GSDPG00769]][[subelements-196]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beayk]][[GSDPG00289]][[unique-id]]
-
-`unique-id`
-~~~~~~~~~~~
-
-Contains the unique ID for the application. This value is automatically
-updated each time the application is deployed or redeployed. Do not edit
-this value.
-
-[[fvzig]][[GSDPG00770]][[superelements-205]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaxw[`glassfish-application`] (`glassfish-application.xml`),
-link:#beasx[`enterprise-beans`] (`glassfish-ejb-jar.xml`)
-
-[[fvzjc]][[GSDPG00771]][[subelements-197]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beayl]][[GSDPG00290]][[url-pattern]]
-
-`url-pattern`
-~~~~~~~~~~~~~
-
-Specifies a servlet URL pattern for which caching is enabled. See the
-Servlet 2.4 specification section SRV. 11.2 for applicable patterns.
-
-[[fvziw]][[GSDPG00772]][[superelements-206]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#bearh[`cache-mapping`] (`glassfish-web.xml`)
-
-[[fvzfw]][[GSDPG00773]][[subelements-198]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[giyiq]][[GSDPG00291]][[user-group]]
-
-`user-group`
-~~~~~~~~~~~~
-
-Contains the group to which the principal belongs.
-
-[[GSDPG1039]][[sthref237]]
-
-
-[[superelements-207]]
-Superelements
-^^^^^^^^^^^^^
-
-link:#giyhy[`security-map`] (`glassfish-resources.xml`)
-
-[[GSDPG1040]][[sthref238]]
-
-
-[[subelements-199]]
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beaym]][[GSDPG00292]][[use-thread-pool-id]]
-
-`use-thread-pool-id`
-~~~~~~~~~~~~~~~~~~~~
-
-Specifies the thread pool from which threads are selected for remote
-invocations of this bean.
-
-[[fvzhz]][[GSDPG00774]][[superelements-208]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)
-
-[[fvzhp]][[GSDPG00775]][[subelements-200]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beayo]][[GSDPG00293]][[value]]
-
-`value`
-~~~~~~~
-
-Specifies the value of the entity.
-
-[[fvzhq]][[GSDPG00776]][[superelements-209]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beari[`call-property`], link:#beaxv[`stub-property`]
-(`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
-`glassfish-application-client.xml`); link:#beavy[`property` (with
-subelements)] (`glassfish-ejb-jar.xml`)
-
-[[fvzhe]][[GSDPG00777]][[subelements-201]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[gikqk]][[GSDPG00294]][[valve]]
-
-`valve`
-~~~~~~~
-
-Specifies a custom valve for this web application. You can define a
-valve for all the web applications on a specific virtual server. For
-details, see link:../reference-manual/create-virtual-server.html#GSRFM00062[`create-virtual-server`(1)].
-
-[[giksf]][[GSDPG00778]][[superelements-210]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`)
-
-[[gikvt]][[GSDPG00779]][[subelements-202]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `valve` element.
-
-[[GSDPG1041]][[sthref239]][[giktu]]
-
-
-Table C-157 `valve` Subelements
-
-[width="100%",cols="25%,12%,63%",options="header",]
-|==================================================================
-|Element |Required |Description
-a|
-link:#beaso[`description`]
-
-
- |zero or one |Specifies a text description of this element.
-a|
-link:#beavx[`property` (with attributes)]
-
-
- |zero or more |Specifies a property, which has a name and a value.
-|==================================================================
-
-
-[[gikuo]][[GSDPG00780]][[attributes-44]]
-
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `valve` element.
-
-[[GSDPG1042]][[sthref240]][[gikqw]]
-
-
-Table C-158 `valve` Attributes
-
-[width="172%",cols="9%,46%,45%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`name` |none |Specifies a unique name for the valve.
-
-|`class-name` |none |Specifies the fully qualified class name of the
-valve. The valve class must implement the org.apache.catalina.Valve
-interface from Tomcat or previous GlassFish Server releases, or the
-org.glassfish.web.valve.GlassFishValve interface from the current
-GlassFish Server release.
-|=======================================================================
-
-
-[[giksd]][[GSDPG00781]][[example-13]]
-
-Example
-^^^^^^^
-
-[source,oac_no_warn]
-----
-><valve name="MyValve" classname="org.glassfish.extension.Valve">
-   <property name="MyProperty1" value="MyValue1" />
-   <property name="MyProperty2" value="MyValue2" />
-</valve> 
-----
-
-[[gbgdw]][[GSDPG00295]][[vendor]]
-
-`vendor`
-~~~~~~~~
-
-Specifies a vendor-specific icon, splash screen, text string, or a
-combination of these for Java Web Start download and launch screens. The
-complete format of this element's data is as follows:
-
-[source,oac_no_warn]
-----
-<vendor>icon-image-URI::splash-screen-image-URI::vendor-text</vendor>
-----
-
-The following example vendor element contains an icon, a splash screen,
-and a text string:
-
-[source,oac_no_warn]
-----
-<vendor>images/icon.jpg::otherDir/splash.jpg::MyCorp, Inc.</vendor>
-----
-
-The following example vendor element contains an icon and a text string:
-
-[source,oac_no_warn]
-----
-<vendor>images/icon.jpg::MyCorp, Inc.</vendor>
-----
-
-The following example vendor element contains a splash screen and a text
-string; note the initial double colon:
-
-[source,oac_no_warn]
-----
-<vendor>::otherDir/splash.jpg::MyCorp, Inc.</vendor>
-----
-
-The following example vendor element contains only a text string:
-
-[source,oac_no_warn]
-----
-<vendor>MyCorp, Inc.</vendor>
-----
-
-The default value is the text string `Application Client`.
-
-[[gbgdu]][[GSDPG00782]][[superelements-211]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#gauax[`java-web-start-access`]
-(`glassfish-application-client.xml`)
-
-[[gbgcq]][[GSDPG00783]][[subelements-203]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[gkkfd]][[GSDPG00296]][[version-identifier]]
-
-`version-identifier`
-~~~~~~~~~~~~~~~~~~~~
-
-Contains version information for an application or module. For more
-information about application versioning, see
-link:overview.html#gkhhv[Module and Application Versions].
-
-[[GSDPG1043]][[sthref241]]
-
-
-[[superelements-212]]
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaxw[`glassfish-application`] (`glassfish-application.xml`),
-link:#beayb[`glassfish-web-app`] (`glassfish-web-app.xml`),
-link:#beaya[`glassfish-ejb-jar`] (`glassfish-ejb-jar.xml`),
-link:#beaxx[`glassfish-application-client`]
-(`glassfish-application-client.xml`)
-
-[[GSDPG1044]][[sthref242]]
-
-
-[[subelements-204]]
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beayp]][[GSDPG00297]][[victim-selection-policy]]
-
-`victim-selection-policy`
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies how stateful session beans are selected for passivation.
-Possible values are First In, First Out (`FIFO`), Least Recently Used
-(`LRU`), Not Recently Used (`NRU`). The default value is `NRU`, which is
-actually pseudo-LRU.
-
-
-[NOTE]
-======================================================
-
-You cannot plug in your own victim selection algorithm.
-
-======================================================
-
-
-The victims are generally passivated into a backup store (typically a
-file system or database). This store is cleaned during startup, and also
-by a periodic background process that removes idle entries as specified
-by `removal-timeout-in-seconds`. The backup store is monitored by a
-background thread (or sweeper thread) to remove unwanted entries.
-
-Applies to stateful session beans.
-
-[[fvzhu]][[GSDPG00784]][[superelements-213]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beara[`bean-cache`] (`glassfish-ejb-jar.xml`)
-
-[[fvzfr]][[GSDPG00785]][[subelements-205]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[fvzgi]][[GSDPG00786]][[example-14]]
-
-Example
-^^^^^^^
-
-[source,oac_no_warn]
-----
-<victim-selection-policy>LRU</victim-selection-policy>
-----
-
-If both SSL2 and SSL3 are enabled, the server tries SSL3 encryption
-first. If that fails, the server tries SSL2 encryption. If both SSL2 and
-SSL3 are enabled for a virtual server, the server tries SSL3 encryption
-first. If that fails, the server tries SSL2 encryption.
-
-[[beayr]][[GSDPG00298]][[web]]
-
-`web`
-~~~~~
-
-Specifies the application's web tier configuration.
-
-[[fvzil]][[GSDPG00787]][[superelements-214]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaxw[`glassfish-application`] (`glassfish-application.xml`)
-
-[[fvzge]][[GSDPG00788]][[subelements-206]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `web` element.
-
-[[GSDPG1045]][[sthref243]][[fvzfz]]
-
-
-Table C-159 `web` Subelements
-
-[width="100%",cols="24%,11%,65%",options="header",]
-|============================================================
-|Element |Required |Description
-a|
-link:#beays[`web-uri`]
-
-
- |only one |Contains the web URI for the application.
-a|
-link:#beasg[`context-root`]
-
-
- |only one |Contains the web context root for the web module.
-|============================================================
-
-
-[[beays]][[GSDPG00299]][[web-uri]]
-
-`web-uri`
-~~~~~~~~~
-
-Contains the web URI for the application. Must match the corresponding
-element in the `application.xml` file.
-
-[[fvzhk]][[GSDPG00789]][[superelements-215]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beayr[`web`] (`glassfish-application.xml`)
-
-[[fvzik]][[GSDPG00790]][[subelements-207]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beayt]][[GSDPG00300]][[webservice-description]]
-
-`webservice-description`
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies a name and optional publish location for a web service.
-
-[[fvzjd]][[GSDPG00791]][[superelements-216]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`),
-link:#beasx[`enterprise-beans`] (`glassfish-ejb-jar.xml`)
-
-[[fvzgs]][[GSDPG00792]][[subelements-208]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the
-`webservice-description` element.
-
-[[GSDPG1046]][[sthref244]][[fvzjb]]
-
-
-Table C-160 `webservice-description` subelements
-
-[width="100%",cols="33%,11%,56%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beayu[`webservice-description-name`]
-
-
- |only one |Specifies a unique name for the web service within a web or
-EJB module.
-
-a|
-link:#beayy[`wsdl-publish-location`]
-
-
- |zero or one |Specifies the URL of a directory to which a web service's
-WSDL is published during deployment.
-|=======================================================================
-
-
-[[beayu]][[GSDPG00301]][[webservice-description-name]]
-
-`webservice-description-name`
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies a unique name for the web service within a web or EJB module.
-
-[[fvzgp]][[GSDPG00793]][[superelements-217]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beayt[`webservice-description`] (`glassfish-web.xml`,
-`glassfish-ejb-jar.xml`)
-
-[[fvzgw]][[GSDPG00794]][[subelements-209]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[beayv]][[GSDPG00302]][[webservice-endpoint]]
-
-`webservice-endpoint`
-~~~~~~~~~~~~~~~~~~~~~
-
-Specifies information about a web service endpoint.
-
-[[fvzio]][[GSDPG00795]][[superelements-218]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaxm[`servlet`] (`glassfish-web.xml`), link:#beass[`ejb`]
-(`glassfish-ejb-jar.xml`)
-
-[[fvzjp]][[GSDPG00796]][[subelements-210]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `webservice-endpoint`
-element.
-
-[[GSDPG1047]][[sthref245]][[fvzjs]]
-
-
-Table C-161 `webservice-endpoint` subelements
-
-[width="100%",cols="29%,12%,59%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beavs[`port-component-name`]
-
-
- |only one |Specifies a unique name for a port component within a web or
-EJB module.
-
-a|
-link:#beasw[`endpoint-address-uri`]
-
-
- |zero or one |Specifies the automatically generated endpoint address.
-
-a|
-link:#beauk[`login-config`]
-
-
- |zero or one |Specifies the authentication configuration for an EJB web
-service endpoint.
-
-a|
-link:#beaux[`message-security-binding`]
-
-
- |zero or one |Specifies a custom authentication provider binding.
-
-a|
-link:#beayi[`transport-guarantee`]
-
-
- |zero or one |Specifies that the communication between client and
-server is `NONE`, `INTEGRAL`, or `CONFIDENTIAL`.
-
-a|
-link:#beaxj[`service-qname`]
-
-
- |zero or one |Specifies the WSDL service element that is being
-referenced.
-
-a|
-link:#beayf[`tie-class`]
-
-
- |zero or one |Specifies the automatically generated name of a tie
-implementation class for a port component.
-
-a|
-link:#beaxn[`servlet-impl-class`]
-
-
- |zero or one |Specifies the automatically generated name of the
-generated servlet implementation class.
-
-a|
-link:#gaubj[`debugging-enabled`]
-
-
- |zero or one |Specifies whether the debugging servlet is enabled for
-this web service endpoint. Allowed values are `true` and `false` (the
-default).
-
-a|
-link:#beavx[`property` (with attributes)] (`glassfish-web.xml`)
-
-link:#beavy[`property` (with subelements)] (`glassfish-ejb-jar.xml`)
-
- |zero or more |Specifies a property, which has a name and a value.
-|=======================================================================
-
-
-[[giyht]][[GSDPG00303]][[work-security-map]]
-
-`work-security-map`
-~~~~~~~~~~~~~~~~~~~
-
-Defines a work security map, which maps a principal associated with an
-incoming work instance to a principal in the GlassFish Server's security
-domain. It is possible to map multiple EIS group or user principals to
-the same GlassFish Server principal.
-
-This is different from a link:#giyhy[`security-map`], which maps the
-principal received during servlet or EJB authentication to the
-credentials accepted by the EIS.
-
-[[GSDPG1048]][[sthref246]]
-
-
-[[superelements-219]]
-Superelements
-^^^^^^^^^^^^^
-
-link:#giyiy[`resources`] (`glassfish-resources.xml`)
-
-[[giyih]][[GSDPG00797]][[subelements-211]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `work-security-map`
-element.
-
-[[GSDPG1049]][[sthref247]][[sthref248]]
-
-
-Table C-162 `work-security-map` Subelements
-
-[width="100%",cols="17%,12%,71%",options="header",]
-|=======================================================================
-|Element |Required |Description
-a|
-link:#beaso[`description`]
-
-
- |zero or one |Contains a text description of this element.
-
-a|
-link:#giyif[`principal-map`]
-
-
- |zero or more |Maps an EIS principal to a principal defined in the
-GlassFish Server domain.
-
-a|
-link:#giygy[`group-map`]
-
-
- |zero or more |Maps an EIS group to a group defined in the GlassFish
-Server domain.
-|=======================================================================
-
-
-[[GSDPG1050]][[sthref249]]
-
-
-[[attributes-45]]
-Attributes
-^^^^^^^^^^
-
-The following table describes attributes for the `work-security-map`
-element.
-
-[[GSDPG1051]][[sthref250]][[sthref251]]
-
-
-Table C-163 `work-security-map` Attributes
-
-[width="181%",cols="13%,49%,38%",options="header",]
-|===================================================================
-|Attribute |Default |Description
-|`name` |none |Specifies a unique name for the work security map.
-|`description` |none |Specifies a text description for this element.
-|===================================================================
-
-
-[[beayw]][[GSDPG00304]][[wsdl-override]]
-
-`wsdl-override`
-~~~~~~~~~~~~~~~
-
-Specifies a valid URL pointing to a final WSDL document. If not
-specified, the WSDL document associated with the `service-ref` in the
-standard Java EE deployment descriptor is used.
-
-[[fvzjl]][[GSDPG00798]][[superelements-220]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beaxk[`service-ref`] (`glassfish-web.xml`,
-`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)
-
-[[fvzjq]][[GSDPG00799]][[subelements-212]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[fvzjt]][[GSDPG00800]][[example-15]]
-
-Example
-^^^^^^^
-
-[source,oac_no_warn]
-----
-// available via HTTP
-<wsdl-override>http://localhost:8000/myservice/myport?WSDL</wsdl-override>
-
-// in a file
-<wsdl-override>file:/home/user1/myfinalwsdl.wsdl</wsdl-override>
-----
-
-[[beayx]][[GSDPG00305]][[wsdl-port]]
-
-`wsdl-port`
-~~~~~~~~~~~
-
-Specifies the WSDL port.
-
-[[fvzjo]][[GSDPG00801]][[superelements-221]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beavt[`port-info`] (`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
-`glassfish-application-client.xml`)
-
-[[fvzjm]][[GSDPG00802]][[subelements-213]]
-
-Subelements
-^^^^^^^^^^^
-
-The following table describes subelements for the `wsdl-port` element.
-
-[[GSDPG1052]][[sthref252]][[fvzju]]
-
-
-Table C-164 `wsdl-port` subelements
-
-[width="100%",cols="30%,11%,59%",options="header",]
-|===============================================
-|Element |Required |Description
-a|
-link:#beavh[`namespaceURI`]
-
-
- |only one |Specifies the namespace URI.
-a|
-link:#beaug[`localpart`]
-
-
- |only one |Specifies the local part of a QNAME.
-|===============================================
-
-
-[[beayy]][[GSDPG00306]][[wsdl-publish-location]]
-
-`wsdl-publish-location`
-~~~~~~~~~~~~~~~~~~~~~~~
-
-Specifies the URL of a directory to which a web service's WSDL is
-published during deployment. Any required files are published to this
-directory, preserving their location relative to the module-specific
-WSDL directory (`META-INF/wsdl` or `WEB-INF/wsdl`).
-
-[[fvzjw]][[GSDPG00803]][[superelements-222]]
-
-Superelements
-^^^^^^^^^^^^^
-
-link:#beayt[`webservice-description`] (`glassfish-web.xml`,
-`glassfish-ejb-jar.xml`)
-
-[[fvzjr]][[GSDPG00804]][[subelements-214]]
-
-Subelements
-^^^^^^^^^^^
-
-none - contains data
-
-[[fvzjn]][[GSDPG00805]][[example-16]]
-
-Example
-^^^^^^^
-
-Suppose you have an `ejb.jar` file whose `webservices.xml` file's
-`wsdl-file` element contains the following reference:
-
-[source,oac_no_warn]
-----
-META-INF/wsdl/a/Foo.wsdl
-----
-
-Suppose your `glassfish-ejb.jar` file contains the following element:
-
-[source,oac_no_warn]
-----
-<wsdl-publish-location>file:/home/user1/publish</wsdl-publish-location>
-----
-
-The final WSDL is stored in `/home/user1/publish/a/Foo.wsdl`.
-
-
diff --git a/docs/application-deployment-guide/src/main/jbake/content/dd-files.adoc b/docs/application-deployment-guide/src/main/jbake/content/dd-files.adoc
deleted file mode 100644
index a056054..0000000
--- a/docs/application-deployment-guide/src/main/jbake/content/dd-files.adoc
+++ /dev/null
@@ -1,1169 +0,0 @@
-type=page
-status=published
-title=GlassFish Server Deployment Descriptor Files
-next=dd-elements.html
-prev=asadmin-deployment-subcommands.html
-~~~~~~
-GlassFish Server Deployment Descriptor Files
-============================================
-
-[[GSDPG00006]][[giida]]
-
-
-[[b-glassfish-server-deployment-descriptor-files]]
-B GlassFish Server Deployment Descriptor Files
-----------------------------------------------
-
-This appendix describes the element hierarchies in the GlassFish Server
-deployment descriptors that are included in this release of the
-GlassFish Server Open Source Edition software.
-
-The following topics are addressed here:
-
-* link:#giiie[About the GlassFish Server Deployment Descriptors]
-* link:#beaqk[The glassfish-application.xml File]
-* link:#beaql[The glassfish-web.xml File]
-* link:#beaqm[The glassfish-ejb-jar.xml File]
-* link:#beaqn[The sun-cmp-mappings.xml File]
-* link:#beaqo[The glassfish-application-client.xml file]
-* link:#beaqp[The sun-acc.xml File]
-* link:#giyhh[The glassfish-resources.xml File]
-* link:#gkiot[WebLogic Server Deployment Descriptor Support in GlassFish
-Server]
-
-[[giiie]][[GSDPG00076]][[about-the-glassfish-server-deployment-descriptors]]
-
-About the GlassFish Server Deployment Descriptors
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Each deployment descriptor XML file has a corresponding Document Type
-Definition (DTD) file, which defines the elements, data, and attributes
-that the deployment descriptor file can contain. For example, the
-`glassfish-application_6_0-1.dtd` file defines the structure of the
-`glassfish-application.xml` file. The DTD files for the GlassFish Server
-deployment descriptors are located in the as-install`/lib/dtds`
-directory.
-
-The GlassFish Server deployment descriptor files must be readable and
-writable by the file owners. In each deployment descriptor file,
-subelements must be defined in the order in which they are listed under
-each Subelements heading, unless otherwise noted. For general
-information about DTD files and XML, see the XML specification at
-`http://www.w3.org/TR/REC-xml`.
-
-
-[NOTE]
-=======================================================================
-
-Do not edit the DTD files; their contents change only with new versions
-of GlassFish Server.
-
-=======================================================================
-
-
-The following table lists the GlassFish Server deployment descriptors
-and their DTD files.
-
-[[GSDPG835]][[sthref6]][[giiht]]
-
-
-Table B-1 GlassFish Server Deployment Descriptors and DTDs
-
-[width="100%",cols="30%,39%,31%",options="header",]
-|=======================================================================
-|Deployment Descriptor |DTD File |Description
-|`glassfish-application.xml` |`glassfish-application_6_0-1.dtd`
-|Configures an entire Java EE application (EAR file).
-
-|`glassfish-web.xml` |`glassfish-web-app_3_0-1.dtd` |Configures a web
-application (WAR file).
-
-|`glassfish-ejb-jar.xml` |`glassfish-ejb-jar_3_1-1.dtd` |Configures an
-enterprise bean (EJB JAR file).
-
-|`sun-cmp-mappings.xml` |`sun-cmp-mapping_1_2.dtd` |Configures
-container-managed persistence for an EJB 2.0 or 2.1 entity bean.
-
-|`glassfish-application-client.xml`
-|`glassfish-application-client_6_0-1.dtd` |Configures an Application
-Client Container (ACC) client (JAR file).
-
-|`sun-acc.xml` |`sun-application-client-container_1_2.dtd` |Configures
-the Application Client Container. This is more of a configuration file
-than a deployment descriptor. GlassFish Server provides a default file
-in the domain-dir`/config` directory. Specifying a different file is
-optional.
-
-|`glassfish-resources.xml` |`glassfish-resources_1_5.dtd` |Configures
-application-scoped resources.
-|=======================================================================
-
-
-
-[NOTE]
-=======================================================================
-
-The `sun-application.xml`, `sun-web.xml`, `sun-ejb-jar.xml`,
-`sun-application-client.xml`, and `sun-resources.xml` deployment
-descriptors are supported for backward compatibility.
-
-=======================================================================
-
-
-[[beaqk]][[GSDPG00077]][[the-glassfish-application.xml-file]]
-
-The glassfish-application.xml File
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The `glassfish-application.xml` file configures an entire Java EE
-application (EAR file). The element hierarchy is as follows:
-
-[source,oac_no_warn]
-----
-glassfish-application
-.  web
-.  .  web-uri
-.  .  context-root
-.  pass-by-reference
-.  unique-id
-.  security-role-mapping
-.  .  role-name
-.  .  principal-name
-.  .  group-name
-.  realm
-.  ejb-ref
-.  .  ejb-ref-name
-.  .  jndi-name
-.  resource-ref
-.  .  res-ref-name
-.  .  jndi-name
-.  .  default-resource-principal
-.  .  .  name
-.  .  .  password
-.  resource-env-ref
-.  .  resource-env-ref-name
-.  .  jndi-name
-.  service-ref
-.  .  service-ref-name
-.  .  port-info
-.  .  .  service-endpoint-interface
-.  .  .  wsdl-port
-.  .  .  .  namespaceURI
-.  .  .  .  localpart
-.  .  .  stub-property
-.  .  .  .  name
-.  .  .  .  value
-.  .  .  call-property
-.  .  .  .  name
-.  .  .  .  value
-.  .  .  message-security-binding
-.  .  .  .  message-security
-.  .  .  .  .  message
-.  .  .  .  .  .  java-method
-.  .  .  .  .  .  .  method-name
-.  .  .  .  .  .  .  method-params
-.  .  .  .  .  .  .  .  method-param
-.  .  .  .  .  .  operation-name
-.  .  .  .  .  request-protection
-.  .  .  .  .  response-protection
-.  .  call-property
-.  .  .  name
-.  .  .  value
-.  .  wsdl-override
-.  .  service-impl-class
-.  .  service-qname
-.  .  .  namespaceURI
-.  .  .  localpart
-.  message-destination-ref
-.  .  message-destination-ref-name
-.  .  jndi-name
-.  message-destination
-.  .  message-destination-name
-.  .  jndi-name
-.  archive-name
-.  compatibility
-.  keep-state
-.  version-identifier
-----
-
-Here is a sample `glassfish-application.xml` file:
-
-[source,oac_no_warn]
-----
-<!DOCTYPE glassfish-application PUBLIC "-//GlassFish.org//DTD 
-GlassFish Application Server 3.1 Java EE Application 6.0//EN" 
-"http://glassfish.org/dtds/glassfish-application_6_0-1.dtd">
-<glassfish-application>
-   <unique-id>67488732739338240</unique-id>
-</glassfish-application>
-----
-
-[[beaql]][[GSDPG00078]][[the-glassfish-web.xml-file]]
-
-The glassfish-web.xml File
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The `glassfish-web.xml` file configures a web application (WAR file).
-The element hierarchy is as follows:
-
-[source,oac_no_warn]
-----
-glassfish-web-app
-.  context-root
-.  security-role-mapping
-.  .  role-name
-.  .  principal-name
-.  .  group-name
-.  servlet
-.  .  servlet-name
-.  .  principal-name
-.  .  webservice-endpoint
-.  .  .  port-component-name
-.  .  .  endpoint-address-uri
-.  .  .  login-config
-.  .  .  .  auth-method
-.  .  .  message-security-binding
-.  .  .  .  message-security
-.  .  .  .  .  message
-.  .  .  .  .  .  java-method
-.  .  .  .  .  .  .  method-name
-.  .  .  .  .  .  .  method-params
-.  .  .  .  .  .  .  .  method-param
-.  .  .  .  .  .  operation-name
-.  .  .  .  .  request-protection
-.  .  .  .  .  response-protection
-.  .  .  transport-guarantee
-.  .  .  service-qname
-.  .  .  tie-class
-.  .  .  servlet-impl-class
-.  .  .  debugging-enabled
-.  .  .  property (with attributes)
-.  .  .  .  description
-.  idempotent-url-pattern
-.  session-config
-.  .  session-manager
-.  .  .  manager-properties
-.  .  .  .  property (with attributes)
-.  .  .  .  .  description
-.  .  .  store-properties
-.  .  .  .  property (with attributes)
-.  .  .  .  .  description
-.  .  session-properties
-.  .  .  property (with attributes)
-.  .  .  .  description
-.  .  cookie-properties
-.  .  .  property (with attributes)
-.  .  .  .  description
-.  ejb-ref
-.  .  ejb-ref-name
-.  .  jndi-name
-.  resource-ref
-.  .  res-ref-name
-.  .  jndi-name
-.  .  default-resource-principal
-.  .  .  name
-.  .  .  password
-.  resource-env-ref
-.  .  resource-env-ref-name
-.  .  jndi-name
-.  service-ref
-.  .  service-ref-name
-.  .  port-info
-.  .  .  service-endpoint-interface
-.  .  .  wsdl-port
-.  .  .  .  namespaceURI
-.  .  .  .  localpart
-.  .  .  stub-property
-.  .  .  .  name
-.  .  .  .  value
-.  .  .  call-property
-.  .  .  .  name
-.  .  .  .  value
-.  .  .  message-security-binding
-.  .  .  .  message-security
-.  .  .  .  .  message
-.  .  .  .  .  .  java-method
-.  .  .  .  .  .  .  method-name
-.  .  .  .  .  .  .  method-params
-.  .  .  .  .  .  .  .  method-param
-.  .  .  .  .  .  operation-name
-.  .  .  .  .  request-protection
-.  .  .  .  .  response-protection
-.  .  call-property
-.  .  .  name
-.  .  .  value
-.  .  wsdl-override
-.  .  service-impl-class
-.  .  service-qname
-.  .  .  namespaceURI
-.  .  .  localpart
-.  message-destination-ref
-.  .  message-destination-ref-name
-.  .  jndi-name
-.  cache
-.  .  cache-helper
-.  .  .  property (with attributes)
-.  .  .  .  description
-.  .  default-helper
-.  .  .  property (with attributes)
-.  .  .  .  description
-.  .  property (with attributes)
-.  .  .  description
-.  .  cache-mapping
-.  .  .  servlet-name
-.  .  .  url-pattern
-.  .  .  cache-helper-ref
-.  .  .  dispatcher
-.  .  .  timeout
-.  .  .  refresh-field
-.  .  .  http-method
-.  .  .  key-field
-.  .  .  constraint-field
-.  .  .  .  constraint-field-value
-.  class-loader
-.  .  property (with attributes)
-.  .  .  description
-.  jsp-config
-.  locale-charset-info
-.  .  locale-charset-map
-.  .  parameter-encoding
-.  parameter-encoding
-.  property (with attributes)
-.  .  description
-.  valve
-.  message-destination
-.  .  message-destination-name
-.  .  jndi-name
-.  webservice-description
-.  .  webservice-description-name
-.  .  wsdl-publish-location
-.  keep-state
-.  version-identifier
-----
-
-Here is a sample `glassfish-web.xml` file:
-
-[source,oac_no_warn]
-----
-<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD 
-GlassFish Application Server 3.1 Servlet 3.0//EN" 
-"http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
-<glassfish-web-app>
-   <session-config>
-      <session-manager/>
-   </session-config>
-   <resource-ref>
-      <res-ref-name>mail/Session</res-ref-name>
-      <jndi-name>mail/Session</jndi-name>
-   </resource-ref>
-   <jsp-config/>
-</glassfish-web-app>
-----
-
-[[beaqm]][[GSDPG00079]][[the-glassfish-ejb-jar.xml-file]]
-
-The glassfish-ejb-jar.xml File
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The `glassfish-ejb-jar.xml` file configures an enterprise bean (EJB JAR
-file). The element hierarchy is as follows:
-
-[source,oac_no_warn]
-----
-glassfish-ejb-jar
-.  security-role-mapping
-.  .  role-name
-.  .  principal-name
-.  .  group-name
-.  enterprise-beans
-.  .  name
-.  .  unique-id
-.  .  ejb
-.  .  .  ejb-name
-.  .  .  jndi-name
-.  .  .  ejb-ref
-.  .  .  .  ejb-ref-name
-.  .  .  .  jndi-name
-.  .  .  resource-ref
-.  .  .  .  res-ref-name
-.  .  .  .  jndi-name
-.  .  .  .  default-resource-principal
-.  .  .  .  .  name
-.  .  .  .  .  password
-.  .  .  resource-env-ref
-.  .  .  .  resource-env-ref-name
-.  .  .  .  jndi-name
-.  .  .  service-ref
-.  .  .  .  service-ref-name
-.  .  .  .  port-info
-.  .  .  .  .  service-endpoint-interface
-.  .  .  .  .  wsdl-port
-.  .  .  .  .  .  namespaceURI
-.  .  .  .  .  .  localpart
-.  .  .  .  .  stub-property
-.  .  .  .  .  .  name
-.  .  .  .  .  .  value
-.  .  .  .  .  call-property
-.  .  .  .  .  .  name
-.  .  .  .  .  .  value
-.  .  .  .  .  message-security-binding
-.  .  .  .  .  .  message-security
-.  .  .  .  .  .  .  message
-.  .  .  .  .  .  .  .  java-method
-.  .  .  .  .  .  .  .  .  method-name
-.  .  .  .  .  .  .  .  .  method-params
-.  .  .  .  .  .  .  .  .  .  method-param
-.  .  .  .  .  .  .  .  operation-name
-.  .  .  .  .  .  .  request-protection
-.  .  .  .  .  .  .  response-protection
-.  .  .  .  call-property
-.  .  .  .  .  name
-.  .  .  .  .  value
-.  .  .  .  wsdl-override
-.  .  .  .  service-impl-class
-.  .  .  .  service-qname
-.  .  .  .  .  namespaceURI
-.  .  .  .  .  localpart
-.  .  .  message-destination-ref
-.  .  .  .  message-destination-ref-name
-.  .  .  .  jndi-name
-.  .  .  pass-by-reference
-.  .  .  cmp
-.  .  .  .  mapping-properties
-.  .  .  .  is-one-one-cmp
-.  .  .  .  one-one-finders
-.  .  .  .  .  finder
-.  .  .  .  .  .  method-name
-.  .  .  .  .  .  query-params
-.  .  .  .  .  .  query-filter
-.  .  .  .  .  .  query-variables
-.  .  .  .  .  .  query-ordering
-.  .  .  .  prefetch-disabled
-.  .  .  .  .  query-method
-.  .  .  .  .  .  method-name
-.  .  .  .  .  .  method-params
-.  .  .  .  .  .  .  method-param
-.  .  .  principal
-.  .  .  .  name
-.  .  .  mdb-connection-factory
-.  .  .  .  jndi-name
-.  .  .  .  default-resource-principal
-.  .  .  .  .  name
-.  .  .  .  .  password
-.  .  .  jms-durable-subscription-name
-.  .  .  jms-max-messages-load
-.  .  .  ior-security-config
-.  .  .  .  transport-config
-.  .  .  .  .  integrity
-.  .  .  .  .  confidentiality
-.  .  .  .  .  establish-trust-in-target
-.  .  .  .  .  establish-trust-in-client
-.  .  .  .  as-context
-.  .  .  .  .  auth-method
-.  .  .  .  .  realm
-.  .  .  .  .  required
-.  .  .  .  sas-context
-.  .  .  .  .  caller-propagation
-.  .  .  is-read-only-bean
-.  .  .  refresh-period-in-seconds
-.  .  .  commit-option
-.  .  .  cmt-timeout-in-seconds
-.  .  .  use-thread-pool-id
-.  .  .  gen-classes
-.  .  .  .  remote-impl
-.  .  .  .  local-impl
-.  .  .  .  remote-home-impl
-.  .  .  .  local-home-impl
-.  .  .  bean-pool
-.  .  .  .  steady-pool-size
-.  .  .  .  resize-quantity
-.  .  .  .  max-pool-size
-.  .  .  .  pool-idle-timeout-in-seconds
-.  .  .  .  max-wait-time-in-millis
-.  .  .  bean-cache
-.  .  .  .  max-cache-size
-.  .  .  .  resize-quantity
-.  .  .  .  is-cache-overflow-allowed
-.  .  .  .  cache-idle-timeout-in-seconds
-.  .  .  .  removal-timeout-in-seconds
-.  .  .  .  victim-selection-policy
-.  .  .  mdb-resource-adapter
-.  .  .  .  resource-adapter-mid
-.  .  .  .  activation-config
-.  .  .  .  .  description
-.  .  .  .  .  activation-config-property
-.  .  .  .  .  .  activation-config-property-name
-.  .  .  .  .  .  activation-config-property-value
-.  .  .  webservice-endpoint
-.  .  .  .  port-component-name
-.  .  .  .  endpoint-address-uri
-.  .  .  .  login-config
-.  .  .  .  .  auth-method
-.  .  .  .  .  realm
-.  .  .  .  message-security-binding
-.  .  .  .  .  message-security
-.  .  .  .  .  .  message
-.  .  .  .  .  .  .  java-method
-.  .  .  .  .  .  .  .  method-name
-.  .  .  .  .  .  .  .  method-params
-.  .  .  .  .  .  .  .  .  method-param
-.  .  .  .  .  .  .  operation-name
-.  .  .  .  .  .  request-protection
-.  .  .  .  .  .  response-protection
-.  .  .  .  transport-guarantee
-.  .  .  .  service-qname
-.  .  .  .  tie-class
-.  .  .  .  servlet-impl-class
-.  .  .  .  debugging-enabled
-.  .  .  .  property (with subelements)
-.  .  .  .  .  name
-.  .  .  .  .  value
-.  .  .  flush-at-end-of-method
-.  .  .  .  method
-.  .  .  .  .  description
-.  .  .  .  .  ejb-name
-.  .  .  .  .  method-name
-.  .  .  .  .  method-intf
-.  .  .  .  .  method-params
-.  .  .  .  .  .  method-param
-.  .  .  checkpointed-methods
-.  .  .  checkpoint-at-end-of-method
-.  .  .  .  method
-.  .  .  .  .  description
-.  .  .  .  .  ejb-name
-.  .  .  .  .  method-name
-.  .  .  .  .  method-intf
-.  .  .  .  .  method-params
-.  .  .  .  .  .  method-param
-.  .  .  per-request-load-balancing
-.  .  pm-descriptors
-.  .  cmp-resource
-.  .  .  jndi-name
-.  .  .  default-resource-principal
-.  .  .  .  name
-.  .  .  .  password
-.  .  .  property (with subelements)
-.  .  .  .  name
-.  .  .  .  value
-.  .  .  create-tables-at-deploy
-.  .  .  drop-tables-at-undeploy
-.  .  .  database-vendor-name
-.  .  .  schema-generator-properties
-.  .  .  .  property (with subelements)
-.  .  .  .  .  name
-.  .  .  .  .  value
-.  .  message-destination
-.  .  .  message-destination-name
-.  .  .  jndi-name
-.  .  webservice-description
-.  .  .  webservice-description-name
-.  .  .  wsdl-publish-location
-.  .  property (with subelements)
-.  .  .  name
-.  .  .  value
-.  compatibility
-.  disable-nonportable-jndi-names
-.  keep-state
-.  version-identifier
-----
-
-
-[NOTE]
-=======================================================================
-
-If any configuration information for an enterprise bean is not specified
-in the `glassfish-ejb-jar.xml` file, it defaults to a corresponding
-setting in the EJB container if an equivalency exists.
-
-=======================================================================
-
-
-Here is a sample `glassfish-ejb-jar.xml` file:
-
-[source,oac_no_warn]
-----
-<!DOCTYPE glassfish-ejb-jar PUBLIC "-//GlassFish.org//
-DTD GlassFish Application Server 3.1 EJB 3.1//EN" 
-"http://glassfish.org/dtds/glassfish-ejb-jar_3_1-1.dtd">
-<glassfish-ejb-jar>
-<display-name>First Module</display-name>
-<enterprise-beans>
-    <ejb>
-        <ejb-name>CustomerEJB</ejb-name>
-        <jndi-name>customer</jndi-name>
-        <bean-pool>
-            <steady-pool-size>10</steady-pool-size>
-            <resize-quantity>10</resize-quantity>
-            <max-pool-size>100</max-pool-size>
-            <pool-idle-timeout-in-seconds>600</pool-idle-timeout-in-seconds>
-        </bean-pool>
-        <bean-cache>
-            <max-cache-size>100</max-cache-size>
-            <resize-quantity>10</resize-quantity>
-            <removal-timeout-in-seconds>3600</removal-timeout-in-seconds>
-            <victim-selection-policy>LRU</victim-selection-policy>
-        </bean-cache>
-    </ejb>
-    <cmp-resource>
-        <jndi-name>jdbc/__default</jndi-name>
-        <create-tables-at-deploy>true</create-tables-at-deploy>
-        <drop-tables-at-undeploy>true</drop-tables-at-undeploy>
-    </cmp-resource>
-</enterprise-beans>
-<keep-state>true</keep-state>
-</glassfish-ejb-jar>
-----
-
-[[beaqn]][[GSDPG00080]][[the-sun-cmp-mappings.xml-file]]
-
-The sun-cmp-mappings.xml File
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The `sun-cmp-mappings.xml` file configures container-managed persistence
-for an EJB 2.0 or 2.1 entity bean. The element hierarchy is as follows:
-
-[source,oac_no_warn]
-----
-sun-cmp-mappings
-.  sun-cmp-mapping
-.  .  schema
-.  .  entity-mapping
-.  .  .  ejb-name
-.  .  .  table-name
-.  .  .  cmp-field-mapping
-.  .  .  .  field-name
-.  .  .  .  column-name
-.  .  .  .  read-only
-.  .  .  .  fetched-with
-.  .  .  .  .  default
-.  .  .  .  .  level
-.  .  .  .  .  named-group
-.  .  .  .  .  none
-.  .  .  cmr-field-mapping
-.  .  .  .  cmr-field-name
-.  .  .  .  column-pair
-.  .  .  .  .  column-name
-.  .  .  .  fetched-with
-.  .  .  .  .  default
-.  .  .  .  .  level
-.  .  .  .  .  named-group
-.  .  .  .  .  none
-.  .  .  secondary-table
-.  .  .  .  table-name
-.  .  .  .  column-pair
-.  .  .  .  .  column-name
-.  .  .  consistency
-.  .  .  .  none
-.  .  .  .  check-modified-at-commit
-.  .  .  .  lock-when-loaded
-.  .  .  .  check-all-at-commit
-.  .  .  .  lock-when-modified
-.  .  .  .  check-version-of-accessed-instances
-.  .  .  .  .  column-name
-----
-
-Here is a sample database schema definition:
-
-[source,oac_no_warn]
-----
-create table TEAMEJB (
-   TEAMID varchar2(256) not null,
-   NAME varchar2(120) null,
-   CITY char(30) not null,
-   LEAGUEEJB_LEAGUEID varchar2(256) null,
-   constraint PK_TEAMEJB primary key (TEAMID)
-)
-create table PLAYEREJB (
-   POSITION varchar2(15) null,
-   PLAYERID varchar2(256) not null,
-   NAME char(64) null,
-   SALARY number(10, 2) not null,
-   constraint PK_PLAYEREJB primary key (PLAYERID)
-)
-create table LEAGUEEJB (
-   LEAGUEID varchar2(256) not null,
-   NAME varchar2(256) null,
-   SPORT varchar2(256) null,
-   constraint PK_LEAGUEEJB primary key (LEAGUEID)
-)
-create table PLAYEREJBTEAMEJB (
-   PLAYEREJB_PLAYERID varchar2(256) null,
-   TEAMEJB_TEAMID varchar2(256) null
-)
-alter table TEAMEJB
-   add constraint FK_LEAGUE foreign key (LEAGUEEJB_LEAGUEID)
-   references LEAGUEEJB (LEAGUEID)
-
-alter table PLAYEREJBTEAMEJB
-   add constraint FK_TEAMS foreign key (PLAYEREJB_PLAYERID)
-   references PLAYEREJB (PLAYERID)
-
-alter table PLAYEREJBTEAMEJB
-   add constraint FK_PLAYERS foreign key (TEAMEJB_TEAMID)
-   references TEAMEJB (TEAMID)
-----
-
-Here is a corresponding sample `sun-cmp-mappings.xml` file:
-
-[source,oac_no_warn]
-----
-<?xml version="1.0" encoding="UTF-8"?>
-<sun-cmp-mappings>
-<sun-cmp-mapping>
-    <schema>Roster</schema>
-    <entity-mapping>
-        <ejb-name>TeamEJB</ejb-name>
-        <table-name>TEAMEJB</table-name>
-        <cmp-field-mapping>
-            <field-name>teamId</field-name>
-            <column-name>TEAMEJB.TEAMID</column-name>
-        </cmp-field-mapping>
-        <cmp-field-mapping>
-            <field-name>name</field-name>
-            <column-name>TEAMEJB.NAME</column-name>
-        </cmp-field-mapping>
-        <cmp-field-mapping>
-            <field-name>city</field-name>
-            <column-name>TEAMEJB.CITY</column-name>
-        </cmp-field-mapping>
-        <cmr-field-mapping>
-            <cmr-field-name>league</cmr-field-name>
-            <column-pair>
-                <column-name>TEAMEJB.LEAGUEEJB_LEAGUEID</column-name>
-                <column-name>LEAGUEEJB.LEAGUEID</column-name>
-            </column-pair>
-            <fetched-with>
-                <none/>
-            </fetched-with>
-        </cmr-field-mapping>
-        <cmr-field-mapping>
-            <cmr-field-name>players</cmr-field-name>
-            <column-pair>
-                <column-name>TEAMEJB.TEAMID</column-name>
-                <column-name>PLAYEREJBTEAMEJB.TEAMEJB_TEAMID</column-name>
-            </column-pair>
-            <column-pair>
-                <column-name>PLAYEREJBTEAMEJB.PLAYEREJB_PLAYERID</column-name>
-                <column-name>PLAYEREJB.PLAYERID</column-name>
-            </column-pair>
-            <fetched-with>
-                <none/>
-            </fetched-with>
-        </cmr-field-mapping>
-    </entity-mapping>
-    <entity-mapping>
-        <ejb-name>PlayerEJB</ejb-name>
-        <table-name>PLAYEREJB</table-name>
-        <cmp-field-mapping>
-            <field-name>position</field-name>
-            <column-name>PLAYEREJB.POSITION</column-name>
-        </cmp-field-mapping>
-        <cmp-field-mapping>
-            <field-name>playerId</field-name>
-            <column-name>PLAYEREJB.PLAYERID</column-name>
-        </cmp-field-mapping>
-        <cmp-field-mapping>
-            <field-name>name</field-name>
-            <column-name>PLAYEREJB.NAME</column-name>
-        </cmp-field-mapping>
-        <cmp-field-mapping>
-            <field-name>salary</field-name>
-            <column-name>PLAYEREJB.SALARY</column-name>
-        </cmp-field-mapping>
-        <cmr-field-mapping>
-            <cmr-field-name>teams</cmr-field-name>
-            <column-pair>
-                <column-name>PLAYEREJB.PLAYERID</column-name>
-                <column-name>PLAYEREJBTEAMEJB.PLAYEREJB_PLAYERID</column-name>
-            </column-pair>
-            <column-pair>
-                <column-name>PLAYEREJBTEAMEJB.TEAMEJB_TEAMID</column-name>
-                <column-name>TEAMEJB.TEAMID</column-name>
-            </column-pair>
-            <fetched-with>
-                <none/>
-            </fetched-with>
-        </cmr-field-mapping>
-    </entity-mapping>
-    <entity-mapping>
-        <ejb-name>LeagueEJB</ejb-name>
-        <table-name>LEAGUEEJB</table-name>
-        <cmp-field-mapping>
-            <field-name>leagueId</field-name>
-            <column-name>LEAGUEEJB.LEAGUEID</column-name>
-        </cmp-field-mapping>
-        <cmp-field-mapping>
-            <field-name>name</field-name>
-            <column-name>LEAGUEEJB.NAME</column-name>
-        </cmp-field-mapping>
-        <cmp-field-mapping>
-            <field-name>sport</field-name>
-            <column-name>LEAGUEEJB.SPORT</column-name>
-        </cmp-field-mapping>
-        <cmr-field-mapping>
-            <cmr-field-name>teams</cmr-field-name>
-            <column-pair>
-                <column-name>LEAGUEEJB.LEAGUEID</column-name>
-                <column-name>TEAMEJB.LEAGUEEJB_LEAGUEID</column-name>
-            </column-pair>
-            <fetched-with>
-                <none/>
-            </fetched-with>
-        </cmr-field-mapping>
-    </entity-mapping>
-</sun-cmp-mapping>
-</sun-cmp-mappings>
-----
-
-[[beaqo]][[GSDPG00081]][[the-glassfish-application-client.xml-file]]
-
-The glassfish-application-client.xml file
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The `glassfish-application-client.xml` file configures an Application
-Client Container (ACC) client (JAR file). The element hierarchy is as
-follows:
-
-[source,oac_no_warn]
-----
-glassfish-application-client
-.  ejb-ref
-.  .  ejb-ref-name
-.  .  jndi-name
-.  resource-ref
-.  .  res-ref-name
-.  .  jndi-name
-.  .  default-resource-principal
-.  .  .  name
-.  .  .  password
-.  resource-env-ref
-.  .  resource-env-ref-name
-.  .  jndi-name
-.  service-ref
-.  .  service-ref-name
-.  .  port-info
-.  .  .  service-endpoint-interface
-.  .  .  wsdl-port
-.  .  .  .  namespaceURI
-.  .  .  .  localpart
-.  .  .  stub-property
-.  .  .  .  name
-.  .  .  .  value
-.  .  .  call-property
-.  .  .  .  name
-.  .  .  .  value
-.  .  .  message-security-binding
-.  .  .  .  message-security
-.  .  .  .  .  message
-.  .  .  .  .  .  java-method
-.  .  .  .  .  .  .  method-name
-.  .  .  .  .  .  .  method-params
-.  .  .  .  .  .  .  .  method-param
-.  .  .  .  .  .  operation-name
-.  .  .  .  .  request-protection
-.  .  .  .  .  response-protection
-.  .  call-property
-.  .  .  name
-.  .  .  value
-.  .  wsdl-override
-.  .  service-impl-class
-.  .  service-qname
-.  .  .  namespaceURI
-.  .  .  localpart
-.  message-destination-ref
-.  .  message-destination-ref-name
-.  .  jndi-name
-.  message-destination
-.  .  message-destination-name
-.  .  jndi-name
-.  java-web-start-access
-.  .  context-root
-.  .  eligible
-.  .  vendor
-.  .  jnlp-doc
-.  version-identifier
-----
-
-Here is a sample `glassfish-application-client.xml` file:
-
-[source,oac_no_warn]
-----
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE glassfish-application-client PUBLIC ""-//GlassFish.org//DTD 
-GlassFish Application Server 3.1 Application Client 6.0//EN"" 
-"http://glassfish.org/dtds/glassfish-application-client_6_0-1.dtd">
-<glassfish-application-client>
-  <message-destination-ref>
-    <message-destination-ref-name>ClientQueue</message-destination-ref-name>
-    <jndi-name>jms/security_mdb_OutQueue</jndi-name>
-  </message-destination-ref>
-</glassfish-application-client>
-----
-
-[[beaqp]][[GSDPG00082]][[the-sun-acc.xml-file]]
-
-The sun-acc.xml File
-~~~~~~~~~~~~~~~~~~~~
-
-The `sun-acc.xml` file configures the Application Client Container. This
-is more of a configuration file than a deployment descriptor. GlassFish
-Server provides a default file in the domain-dir`/config` directory.
-Specifying a different file is optional. The element hierarchy is as
-follows:
-
-[source,oac_no_warn]
-----
-client-container
-.  target-server
-.  .  description
-.  .  security
-.  .  .  ssl
-.  .  .  cert-db
-.  auth-realm
-.  .  property (with attributes)
-.  client-credential
-.  .  property (with attributes)
-.  log-service
-.  .  property (with attributes)
-.  message-security-config
-.  .  provider-config
-.  .  .  request-policy
-.  .  .  response-policy
-.  .  .  property (with attributes)
-.  property (with attributes) 
-----
-
-[[giyhh]][[GSDPG00083]][[the-glassfish-resources.xml-file]]
-
-The glassfish-resources.xml File
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The `glassfish-resources.xml` file configures application-scoped
-resources. The element hierarchy is as follows:
-
-[source,oac_no_warn]
-----
-resources
-.  custom-resource
-.  .  description
-.  .  property (with attributes)
-.  .  .  description
-.  external-jndi-resource
-.  .  description
-.  .  property (with attributes)
-.  .  .  description
-.  jdbc-resource
-.  .  description
-.  .  property (with attributes)
-.  .  .  description
-.  mail-resource
-.  .  description
-.  .  property (with attributes)
-.  .  .  description
-.  admin-object-resource
-.  .  description
-.  .  property (with attributes)
-.  .  .  description
-.  connector-resource
-.  .  description
-.  .  property (with attributes)
-.  .  .  description
-.  resource-adapter-config
-.  .  property (with attributes)
-.  .  .  description
-.  jdbc-connection-pool
-.  .  description
-.  .  property (with attributes)
-.  .  .  description
-.  connector-connection-pool
-.  .  description
-.  .  security-map
-.  .  .  principal
-.  .  .  user-group
-.  .  .  backend-principal
-.  .  property (with attributes)
-.  .  .  description
-.  work-security-map
-.  .  description
-.  .  principal-map
-.  .  group-map
-----
-
-[[gkiot]][[GSDPG00084]][[weblogic-server-deployment-descriptor-support-in-glassfish-server]]
-
-WebLogic Server Deployment Descriptor Support in GlassFish Server
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-GlassFish Server offers limited support for the
-`weblogic-application.xml`, `weblogic.xml`, and
-`weblogic-webservices.xml` deployment descriptor files.
-
-The only element in `weblogic-application.xml` that GlassFish Server
-supports is `security`. The equivalent element in the
-`glassfish-application.xml` file is `security-role-mapping`.
-
-The elements of `weblogic.xml` that GlassFish Server supports are
-explained in the following table.
-
-[[GSDPG836]][[sthref7]][[gkinm]]
-
-
-Table B-2 `weblogic.xml` Support in GlassFish Server
-
-[width="100%",cols="43%,57%",options="header",]
-|=======================================================================
-|`weblogic.xml` Element Name |GlassFish Server Support
-|`role-name` under `security-role-assignment` |`role-name` under
-`security-role-mapping` `glassfish-web.xml` equivalent
-
-|`principal-name` under `security-role-assignment` |`principal-name`
-under `security-role-mapping` `glassfish-web.xml` equivalent
-
-|`resource-description` |`resource-ref` `glassfish-web.xml` equivalent,
-but `resource-link` not supported
-
-|`resource-env-description` |`resource-env-ref` `glassfish-web.xml`
-equivalent, but `resource-link` not supported
-
-|`ejb-reference-description` |`ejb-ref` `glassfish-web.xml` equivalent
-
-|`service-reference-description` |`service-ref` `glassfish-web.xml`
-equivalent
-
-|`timeout-secs` under `session-descriptor` |`timeoutSeconds` property of
-`session-properties` `glassfish-web.xml` equivalent
-
-|`invalidation-interval-secs` under `session-descriptor`
-|`reapIntervalSeconds` property of `manager-properties`
-`glassfish-web.xml` equivalent
-
-|`max-in-memory-sessions` under `session-descriptor` |`maxSessions`
-property of `manager-properties` `glassfish-web.xml` equivalent
-
-|`persistent-store-dir` under `session-descriptor` |`directory` property
-of `store-properties` `glassfish-web.xml` equivalent
-
-|`prefer-web-inf-classes` under `container-descriptor` |`delegate`
-attribute of `class-loader` `glassfish-web.xml` equivalent
-
-|`context-root` |`context-root` `glassfish-web.xml` equivalent
-
-|`cookies-enabled` under `session-descriptor` |Servlet 3.0
-
-|`cookie-name` under `session-descriptor` |Servlet 3.0
-
-|`cookie-path` under `session-descriptor` |Servlet 3.0
-
-|`cookie-domain` under `session-descriptor` |Servlet 3.0
-
-|`cookie-comment` under `session-descriptor` |Servlet 3.0
-
-|`cookie-secure` under `session-descriptor` |Servlet 3.0
-
-|`cookie-max-age-secs` under `session-descriptor` |Servlet 3.0
-
-|`cookie-http-only` under `session-descriptor` |Servlet 3.0
-
-|`url-rewriting-enabled` under `session-descriptor` |Servlet 3.0
-
-|`persistent-store-cookie-name` under `session-descriptor` |Cookie-based
-persistence is supported
-
-|`keepgenerated` under `jsp-descriptor` |keepgenerated init parameter of
-`JspServlet`
-
-|`working-dir` under `jsp-descriptor` |scratchdir init parameter of
-`JspServlet`
-
-|`compress-html-template` under `jsp-descriptor` |trimSpaces init
-parameter of `JspServlet`
-
-|`index-directory-enabled` under `container-descriptor` |listings init
-parameter of `DefaultServlet`
-
-|`index-directory-sort-by` under `container-descriptor` |sortedBy init
-parameter of `DefaultServlet`
-
-|`save-sessions-enabled` under `container-descriptor` |Same as
-`asadmin redeploy` `--keepstate=true` or `keep-state` in
-`glassfish-web.xml`
-
-|`run-as-principal-name` under `servlet-descriptor` |`principal-name`
-under `servlet` `glassfish-web.xml` equivalent
-|=======================================================================
-
-
-The elements of `weblogic-webservices.xml` that GlassFish Server
-supports are explained in the following table.
-
-[[GSDPG837]][[sthref8]][[gkkht]]
-
-
-Table B-3 `weblogic-webservices.xml` Support in GlassFish Server
-
-[width="100%",cols="34%,66%",options="header",]
-|=======================================================================
-|`weblogic-webservices.xml` Element Name |GlassFish Server Support
-|`webservice-type` |Possible values are `JAXRPC` or `JAXWS`. GlassFish
-Server does not support JAX-RPC web services with JSR 181 annotations.
-The use of this element is limited, because the container can find out
-if the type is JAX-WS or JAX-RPC based on presence of JSR 181
-annotations.
-
-|`wsdl-publish-file` |Same as `wsdl-publish-location` in
-`glassfish-web.xml`
-
-|`service-endpoint-address` |Similar to `endpoint-address-uri` in
-`glassfish-web.xml`, except that `webservice-contextpath` and
-`webservice-serviceuri` are specified separately
-
-|`j2ee:login-config` |Same as `login-config` in `glassfish-web.xml`
-
-|`j2ee:transport-guarantee` |Same as `transport-guarantee` in
-`glassfish-web.xml`
-
-|`exposed` under `wsdl` |Accepts `true` or `false`, defaults to `true`.
-Controls the publishing of WSDL to clients.
-
-|`stream-attachments` |Accepts `true` or `false`, defaults to `true`.
-Only for JAX-WS web services. Configures the JAX-WS runtime to send
-attachments in streaming fashion.
-
-|`validate-request` |Accepts `true` or `false`, defaults to `false`.
-Only for JAX-WS web services. Configures the JAX-WS runtime to validate
-that request messages are as the WSDL definitions specify.
-
-|`http-response-buffersize` |Property of `ReliabilityMessagingFeature`
-configuration, similar to
-`ReliableMessagingFeature.setDestinationBufferQuota()`
-
-|`reliability-config` |Partially supported. Subelements map to Metro's
-`ReliabilityMessagingFeature`.
-
-|`inactivity-timeout` under `reliability-config` |Maps to
-`ReliableMessagingFeature.getSequenceInactivityTimeout()`
-
-|`base-retransmission-interval` under `reliability-config` |Maps to
-`ReliableMessagingFeature.``getMessageRetransmissionInterval()`
-
-|`retransmission-exponential-``backoff` under `reliability-config` |Maps
-to `ReliableMessagingFeature.``getRetransmissionBackoffAlgorithm()`.
-Returns enum values, one of them is `exponential`.
-
-|`acknowledgement-interval` under `reliability-config` |Maps to
-`ReliableMessagingFeature.``getAcknowledgementTransmissionInterval()`
-
-|`sequence-expiration` under `reliability-config` |Maps to
-`ReliableMessagingFeature.``getSequenceInactivityTimeout()`. In WebLogic
-Server this value applies regardless of activity. In Metro it applies
-only to inactive sequences.
-
-|`buffer-retry-count` under `reliability-config` |Maps to
-`ReliableMessagingFeature.``getMaxMessageRetransmissionCount()`
-
-|`buffer-retry-delay` under `reliability-config` |Maps to
-`ReliableMessagingFeature.``getMessageRetransmissionInterval()`
-|=======================================================================
-
-
-
diff --git a/docs/application-deployment-guide/src/main/jbake/content/deploying-applications.adoc b/docs/application-deployment-guide/src/main/jbake/content/deploying-applications.adoc
deleted file mode 100644
index e088b41..0000000
--- a/docs/application-deployment-guide/src/main/jbake/content/deploying-applications.adoc
+++ /dev/null
@@ -1,1886 +0,0 @@
-type=page
-status=published
-title=Deploying Applications
-next=asadmin-deployment-subcommands.html
-prev=overview.html
-~~~~~~
-Deploying Applications
-======================
-
-[[GSDPG00004]][[beact]]
-
-
-[[deploying-applications]]
-2 Deploying Applications
-------------------------
-
-This chapter provides procedures and guidelines for deploying
-applications and modules in the GlassFish Server Open Source
-Editionenvironment by using the `asadmin` command-line utility.
-
-The following topics are addressed here:
-
-* link:#gilfm[Deploying Applications and Modules]
-* link:#gjiwk[Modifying the Configuration of a Web Application or
-Module]
-* link:#beaej[Web Module Deployment Guidelines]
-* link:#beaek[EJB Module Deployment Guidelines]
-* link:#gilxc[Deploying a Connector Module]
-* link:#beaem[Assembling and Deploying an Application Client Module]
-* link:#beael[Lifecycle Module Deployment Guidelines]
-* link:#gbiye[Web Service Deployment Guidelines]
-* link:#gkkmb[OSGi Bundle Deployment Guidelines]
-* link:#gkoif[Transparent JDBC Connection Pool Reconfiguration]
-* link:#giydj[Application-Scoped Resources]
-
-Instructions for accomplishing these tasks by using the Administration
-Console are contained in the Administration Console online help.
-
-[[gilfm]][[GSDPG00065]][[deploying-applications-and-modules]]
-
-Deploying Applications and Modules
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Application deployment is a dynamic process, which means that deployed
-applications and modules become available without requiring you to
-restart the server instance. Dynamic deployment can be useful in
-production environments to bring new applications and modules online
-easily. If you do restart the server, all deployed components are still
-deployed and available.
-
-The following topics are addressed here:
-
-* link:#gijmq[To Deploy an Application or Module]
-* link:#gijrc[To Change Targets for a Deployed Application or Module]
-* link:#giulr[To List Deployed Applications or Modules]
-* link:#gijmb[To Redeploy an Application or Module]
-* link:#fvyje[To Disable an Application or Module]
-* link:#gijjy[To Enable an Application or Module]
-* link:#gijkl[To Undeploy an Application or Module]
-* link:#fwakh[To Reload Changes to Applications or Modules Dynamically]
-* link:#fvxze[To Deploy an Application or Module Automatically]
-* link:#gijyb[To Deploy an Application or Module by Using a Deployment
-Plan]
-* link:#gilcn[To Deploy an Application or Module in a Directory Format]
-
-Instructions for accomplishing these tasks by using the Administration
-Console are contained in the Administration Console online help.
-
-[[gijmq]][[GSDPG00033]][[to-deploy-an-application-or-module]]
-
-To Deploy an Application or Module
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `deploy` subcommand in remote mode to deploy an assembled
-application or module to GlassFish Server. If an error occurs during
-deployment, the application or module is not deployed. If a module
-within an application contains an error, the entire application is not
-deployed. These failures prevent a partial deployment that could leave
-the server in an inconsistent state.
-
-By default, the deployment target is the default server instance,
-`server`. To deploy only to the default server instance, specify no
-target. If you deploy the application or module only to the domain
-target, it exists in the domain central repository, but no server
-instances or clusters can reference the component unless you add
-references.
-
-You can also deploy a component to a specific stand-alone server
-instance or cluster. When you deploy to server instances or clusters,
-the application or module exists in the domain's central repository and
-is referenced by any clusters or server instances that you deployed to.
-For a cluster, the preselected deployment target is `server`.
-
-If the component is already deployed or already exists, you can
-forcefully redeploy if you set the `--force` option of the `deploy`
-subcommand to true. The `redeploy` subcommand also accomplishes this.
-See link:#gikiw[Example 2-10]. You can see the enabled or disabled
-status of an application or module by using the
-link:../reference-manual/show-component-status.html#GSRFM00232[`show-component-status`] subcommand.
-
-For information about how the application or module name is derived, see
-link:overview.html#gihzk[Naming Standards].
-
-Use the `--altdd` or `--runtimealtdd` options of the `deploy` (and
-`redeploy`) subcommand to deploy an application or module using a
-top-level alternate deployment descriptor. The `--altdd` option
-specifies a top-level alternate Java EE standard deployment descriptor.
-The `--runtimealtdd` option specifies a top-level alternate GlassFish
-Server runtime deployment descriptor. See link:#CHDFHDGD[Example 2-3].
-For more information about deployment descriptors associated with
-GlassFish Server, see link:overview.html#gihzc[Deployment Descriptors and
-Annotations].
-
-You can also specify the deployment order of an application by using the
-`--deploymentorder` option of the `deploy` (and `redeploy`) subcommand.
-This is useful for applications that must be loaded in a certain order
-at server startup. Applications with lower deployment order numbers are
-loaded first. See link:#CHDJFAIJ[Example 2-4]. If a deployment order is
-not specified at the time an application is deployed, the default
-deployment order of 100 is assigned. If two applications have the same
-deployment order, the application that was deployed first is loaded
-first at server startup.
-
-1.  Ensure that the server is running. +
-Remote commands require a running server.
-2.  List deployed applications by using the
-link:../reference-manual/list-applications.html#GSRFM00148[`list-applications`] subcommand.
-3.  Deploy the application or module by using the
-link:../reference-manual/deploy.html#GSRFM00114[`deploy`] subcommand. +
-Information about the options and properties of the subcommand is
-included in this help page.
-4.  If needed, fix issues and rerun the `deploy` subcommand.
-
-[[GSDPG00008]][[gijlo]]
-
-
-Example 2-1 Deploying an Enterprise Application
-
-This example deploys `newApp.ear` to the default server, `server`.
-
-[source,oac_no_warn]
-----
-asadmin> deploy Cart.ear
-Application deployed successfully with name Cart.
-Command deploy executed successfully
-----
-
-[[GSDPG00009]][[gilcq]]
-
-
-Example 2-2 Deploying a Connector Module
-
-This example deploys a connector module that is packaged in an RAR file.
-
-[source,oac_no_warn]
-----
-asadmin> deploy jdbcra.rar
-Application deployed successfully with name jdbcra.
-Command deploy executed successfully
-----
-
-[[GSDPG809]][[CHDFHDGD]]
-
-
-Example 2-3 Using an Alternate Java EE Standard Deployment Descriptor
-
-This example deploys an application using an alternate Java EE standard
-deployment descriptor file that resides outside of an application
-archive. Specify an absolute path or a relative path to the alternate
-deployment descriptor file.
-
-[source,oac_no_warn]
-----
-asadmin> deploy --altdd path_to_alternate_descriptor cart.ear
-Application deployed successfully with name cart.
-Command deploy executed successfully
-----
-
-[[GSDPG810]][[CHDJFAIJ]]
-
-
-Example 2-4 Specifying the Deployment Order of an Application
-
-This example specifies the deployment order of two applications. The
-`cart` application is loaded before the `horse` application at server
-startup.
-
-Some lines of output are omitted from this example for readability.
-
-[source,oac_no_warn]
-----
-asadmin> deploy --deploymentorder 102 --name cart cart.war
-...
-asadmin> deploy --deploymentorder 110 --name horse horse.war
-...
-----
-
-[[GSDPG811]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help deploy` at the command line.
-
-[[gijrc]][[GSDPG00034]][[to-change-targets-for-a-deployed-application-or-module]]
-
-To Change Targets for a Deployed Application or Module
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-After deployment, the deployed application or module exists in the
-central repository and can be referenced by the server instances or
-clusters that you deployed to as targets. The
-`asadmin create-application-ref` and `asadmin delete-application-ref`
-subcommands enable you to add or delete targets for a deployed
-component. Because the application or module itself is stored in the
-central repository, adding or deleting targets adds or deletes the same
-version of the component on different targets.
-
-1.  Ensure that the server is running. +
-Remote commands require a running server.
-2.  Add and remove targets by using the
-link:../reference-manual/create-application-ref.html#GSRFM00013[`create-application-ref`] and
-link:../reference-manual/delete-application-ref.html#GSRFM00064[`delete-application-ref`] subcommands.
-
-[[GSDPG812]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing`asadmin help create-application-ref` or
-`asadmin help delete-application-ref` at the command line.
-
-[[giulr]][[GSDPG00035]][[to-list-deployed-applications-or-modules]]
-
-To List Deployed Applications or Modules
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-There are a number of commands that can be used to list deployed
-applications or modules and their subcomponents. Use the commands in
-this section in remote mode.
-
-1.  Ensure that the server is running. +
-Remote commands require a running server.
-2.  List the desired applications by using the
-link:../reference-manual/list-applications.html#GSRFM00148[`list-applications`] subcommand or the
-link:../reference-manual/list-sub-components.html#GSRFM00201[`list-sub-components`] subcommand. +
-Information about these commands is included in these help pages.
-3.  Show the status of a deployed component by using the
-link:../reference-manual/show-component-status.html#GSRFM00232[`show-component-status`] subcommand.
-
-[[GSDPG00010]][[giumj]]
-
-
-Example 2-5 Listing Applications
-
-The `list-applications` subcommand lists all deployed Java EE
-applications or modules. If the `--type` option is not specified, all
-components are listed. This example lists deployed applications.
-
-[source,oac_no_warn]
-----
-asadmin> list-applications --type web
-hellojsp <web>
-Command list-applications executed successfully
-----
-
-[[GSDPG00011]][[giuot]]
-
-
-Example 2-6 Listing Subcomponents
-
-The `list-sub-components` subcommand lists EJBs or servlets in a
-deployed module or in a module of the deployed application. If a module
-is not identified, all modules are listed. The `--appname` option
-functions only when the given module is standalone. To display a
-specific module in an application, you must specify the module name and
-the `--appname` option. This example gets the subcomponents of module
-`mejb.jar` within application `MEjbApp`.
-
-[source,oac_no_warn]
-----
-asadmin> list-sub-components --appname MEjbApp mejb.jar
-MEJBBean <StatelessSessionBean>
-Command list-sub-components executed successfully
-----
-
-[[GSDPG00012]][[giunl]]
-
-
-Example 2-7 Showing Status of a Deployed Component
-
-The `show-component-status` subcommand gets the status (enabled or
-disabled) of the deployed component. This example gets the status of the
-`MEjbApp` component.
-
-[source,oac_no_warn]
-----
-asadmin show-component-status MEjbApp
-Status of MEjbApp is enabled
-Command show-component-status executed successfully
-----
-
-[[gijmb]][[GSDPG00036]][[to-redeploy-an-application-or-module]]
-
-To Redeploy an Application or Module
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `redeploy` subcommand in remote mode to overwrite a
-previously-deployed application or module. You can also accomplish this
-task by using the `--force` option of the `deploy` subcommand. Whenever
-a redeployment is done, the HTTP and SFSB sessions in transit at that
-time, and the EJB timers, become invalid unless you use the
-`--keepstate=true` option of the `redeploy` subcommand.
-
-[[GSDPG813]]
-
-Before You Begin
-
-You must remove a preconfigured resource before it can be updated.
-
-1.  Ensure that the server is running. +
-Remote commands require a running server.
-2.  Redeploy an application or module by using the
-link:../reference-manual/redeploy.html#GSRFM00217[`redeploy`] subcommand or the
-link:../reference-manual/deploy.html#GSRFM00114[`deploy`] subcommand with the `--force` option. +
-Information about the options and properties of these commands is
-included in these help pages.
-
-[[GSDPG00013]][[gijzm]]
-
-
-Example 2-8 Retaining HTTP Session State During Redeployment
-
-This example redeploys the `hello` web application. In a production
-environment, you usually want to retain sessions. If you use the
-`--keepstate` option, active sessions of the application are retained
-and restored when redeployment is complete.
-
-[source,oac_no_warn]
-----
-asadmin> redeploy --name hello --keepstate=true hello.war
-Application deployed successfully with name hello.
-Command redeploy executed successfully.
-----
-
-Keep State is a checkbox option when you redeploy using the
-Administration Console. For instructions, see the Administration Console
-online help.
-
-[[GSDPG00014]][[gijkr]]
-
-
-Example 2-9 Redeploying a Web Application That Was Deployed From a
-Directory
-
-This example redeploys the `hello` web application, which was originally
-deployed from the `hellodir` directory.
-
-[source,oac_no_warn]
-----
-asadmin>redeploy --name hellodir
-Application deployed successfully with name hellodir.
-Command redeploy executed successfully.
-----
-
-[[GSDPG00015]][[gikiw]]
-
-
-Example 2-10 Redeploying an Application by Using `asadmin deploy`
-`--force`
-
-The `--force` option is set to `false` by default. This example
-redeploys `newApp.ear` even if has been deployed or already exists.
-
-[source,oac_no_warn]
-----
-asadmin> deploy --force=true newApp.ear
-Application deployed successfully with name newApp.
-Command deploy executed successfully.
-----
-
-[[GSDPG814]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help redeploy` at the command line.
-
-[[fvyje]][[GSDPG00037]][[to-disable-an-application-or-module]]
-
-To Disable an Application or Module
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `disable` subcommand in remote mode to immediately deactivate a
-deployed application or module without removing it from the server.
-Disabling a component makes the component inaccessible to clients.
-However, the component is not overwritten or uninstalled, and can be
-enabled by using the `asadmin enable` subcommand.
-
-An application or module is enabled by default.
-
-1.  Ensure that the server is running. +
-Remote commands require a running server.
-2.  Obtain the exact name of the application or module that you are
-disabling. +
-To list deployed applications or modules, use the
-link:../reference-manual/list-applications.html#GSRFM00148[`list-applications`] subcommand. If you do not specify
-a type, all deployed applications and modules are listed. For example,
-valid types can be `web`, `ejb`, `connector`, `application`, and
-`webservice`. +
-To see the status of deployed components, use the
-link:../reference-manual/show-component-status.html#GSRFM00232[`show-component-status`] subcommand.
-3.  Deactivate the application or module by using the
-link:../reference-manual/disable.html#GSRFM00116[`disable`] subcommand. +
-Information about the options and properties of the subcommand is
-included in this help page.
-
-[[GSDPG00016]][[gijkp]]
-
-
-Example 2-11 Listing Deployed Web Applications
-
-This example lists all deployed web applications.
-
-[source,oac_no_warn]
-----
-asadmin> list-applications --type web
-hellojsp <web>
-Command list-applications executed successfully.
-----
-
-[[GSDPG00017]][[gikvy]]
-
-
-Example 2-12 Disabling a Web Application
-
-This example disables the `hellojsp` application.
-
-[source,oac_no_warn]
-----
-asadmin> disable hellojsp
-Command disable executed successfully.
-----
-
-[[GSDPG815]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help disable` at the command line.
-
-[[gijjy]][[GSDPG00038]][[to-enable-an-application-or-module]]
-
-To Enable an Application or Module
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-An enabled application or module is runnable and can be accessed by
-clients if it has been deployed to an accessible server instance or
-cluster. An application or module is enabled by default. Use the
-`enable` subcommand in remote mode to enable an application or module
-that has been disabled.
-
-An application or module that is deployed to more than one target can be
-enabled on one target and disabled on another. If a component is
-referenced by a target, it is not available to users unless it is
-enabled on that target.
-
-1.  Ensure that the server is running. +
-Remote commands require a running server.
-2.  Enable the application or module by using the
-link:../reference-manual/enable.html#GSRFM00124[`enable`] subcommand. +
-If the component has not been deployed, an error message is displayed.
-If the component is already enabled, it is re-enabled. To see the status
-of deployed components, use the
-link:../reference-manual/show-component-status.html#GSRFM00232[`show-component-status`] subcommand. +
-Information about the options and properties of the subcommand is
-included in this help page.
-
-[[GSDPG00018]][[gijxl]]
-
-
-Example 2-13 Enabling an Application
-
-This example enables the `sampleApp` application.
-
-[source,oac_no_warn]
-----
-asadmin> enable sampleApp
-Command enable executed successfully.
-----
-
-[[GSDPG816]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help enable` at the command line.
-
-[[gijkl]][[GSDPG00039]][[to-undeploy-an-application-or-module]]
-
-To Undeploy an Application or Module
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `undeploy` subcommand in remote mode to uninstall a deployed
-application or module and remove it from the repository. To reinstate
-the component, you must deploy the component again using the `deploy`
-subcommand.
-
-1.  Ensure that the server is running. +
-Remote commands require a running server.
-2.  Obtain the exact name of the application or module you are
-undeploying. +
-To list deployed applications or modules, use the
-link:../reference-manual/list-applications.html#GSRFM00148[`list-applications`] subcommand. If you do not specify
-a type, all deployed applications and modules are listed. For example,
-valid types can be `web`, `ejb`, `connector`, `application`, and
-`webservice`. +
-To see the status of deployed components, use the
-link:../reference-manual/show-component-status.html#GSRFM00232[`show-component-status`] subcommand.
-3.  Undeploy the application or module by using the
-link:../reference-manual/undeploy.html#GSRFM00244[`undeploy`] subcommand. +
-Information about the options and properties of the subcommand is
-included in this help page.
-
-[[GSDPG00019]][[gikag]]
-
-
-Example 2-14 Listing Deployed Applications or Modules
-
-This example lists all applications of type `web`.
-
-[source,oac_no_warn]
-----
-asadmin> list-applications --type web
-hellojsp <web>
-Command list-applications executed successfully.
-----
-
-[[GSDPG00020]][[gikun]]
-
-
-Example 2-15 Undeploying an Application
-
-This example uninstalls the `hellojsp` application.
-
-[source,oac_no_warn]
-----
-asadmin> undeploy hellojsp
-hellojsp <web>
-Command undeploy executed successfully.
-----
-
-[[GSDPG817]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help undeploy` at the command line.
-
-[[fwakh]][[GSDPG00040]][[to-reload-changes-to-applications-or-modules-dynamically]]
-
-To Reload Changes to Applications or Modules Dynamically
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Dynamic reloading enables you to change the code or deployment
-descriptors of an application or module without needing to perform an
-explicit redeployment. Instead, you can copy the changed class files or
-descriptors into the deployment directory for the application or module.
-The server checks for changes periodically and automatically redeploys
-the changes if the timestamp of the `.reload` file in the root directory
-for the application or module has changed.
-
-Dynamic reloading is enabled by default, and is available only on the
-default server instance.
-
-1.  Go to the root directory of the deployed application or module. +
-For an application: +
-[source,oac_no_warn]
-----
-domain-dir/applications/app-name
-----
-For an individually deployed module: +
-[source,oac_no_warn]
-----
-domain-dir/applications/module-name
-----
-::
-
-[NOTE]
-=====================================================================
-
-Deployment directories might change between GlassFish Server releases.
-
-=====================================================================
-
-2.  Create or update the timestamp of the `.reload` file to load the
-changes. +
-For UNIX: `touch .reload` +
-For Windows: `echo> .reload` +
-If the `.reload` file doesn't exist, the `touch` or `echo` command
-creates it.
-
-[[fvxze]][[GSDPG00041]][[to-deploy-an-application-or-module-automatically]]
-
-To Deploy an Application or Module Automatically
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-
-[NOTE]
-=============================================================
-
-This task is best suited for use in a development environment.
-
-=============================================================
-
-
-Automatic deployment involves copying an archive file into a special
-autodeploy directory where the archive is automatically deployed by
-GlassFish Server at predefined intervals. This method is useful in a
-development environment because it allows new code to be tested quickly.
-Automatic deployment is enabled by default, and is available only on the
-default server instance.
-
-1.  Use the link:../reference-manual/set.html#GSRFM00226[`set`] subcommand to adjust the
-autodeployment interval. +
-This sets the interval at which applications and modules are checked for
-code changes and dynamically reloaded. The default is `2`.
-2.  Use the link:../reference-manual/set.html#GSRFM00226[`set`] subcommand to enable JSP
-precompilation.
-3.  Copy your archive file to the autodeploy directory. +
-The default location is domain-dir`/autodeploy`. The application will be
-deployed at the next interval. +
-To undeploy an automatically deployed application or module, remove its
-archive file from the autodeploy directory. +
-
-[NOTE]
-=====================================================================
-
-Deployment directories might change between GlassFish Server releases.
-
-=====================================================================
-
-
-[[GSDPG00021]][[giqrk]]
-
-
-Example 2-16 Setting the Autodeployment Interval
-
-This example sets the autodeployment inverval to 3 seconds (default is
-2).
-
-[source,oac_no_warn]
-----
-asadmin> set server.admin-service.das-config.autodeploy-polling-interval-in-seconds=3
-Command set executed successfully.
-----
-
-[[GSDPG00022]][[giqtm]]
-
-
-Example 2-17 Setting JSP Precompilation
-
-This example enables JSP precompilation (default is false).
-
-[source,oac_no_warn]
-----
-asadmin> 
-set server.admin-service.das-config.autodeploy-jsp-precompilation-enabled=true
-Command set executed successfully.
-----
-
-[[GSDPG819]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin set --help` at the command line.
-
-[[gijyb]][[GSDPG00042]][[to-deploy-an-application-or-module-by-using-a-deployment-plan]]
-
-To Deploy an Application or Module by Using a Deployment Plan
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-In the deployment plan for an EAR file, the `glassfish-application.xml`
-file is located at the root. The deployment descriptor for each module
-is stored according to this syntax: module-name.gf-dd-name, where the
-gf-dd-name depends on the module type. If a module named `MyModule`
-contains a CMP mappings file, the file is named
-`MyModule.sun-cmp-mappings.xml`. A `.dbschema` file is stored at the
-root level. Each `/` (forward slash) is replaced by a `#` (pound sign).
-
-1.  Ensure that the server is running. +
-Remote commands require a running server.
-2.  Deploy the application or module by using the
-link:../reference-manual/deploy.html#GSRFM00114[`deploy`] subcommand with the `--deploymentplan`
-option. +
-
-[NOTE]
-=====================================================================
-
-Deployment directories might change between GlassFish Server releases.
-
-=====================================================================
-
-
-[[GSDPG00023]][[gijvy]]
-
-
-Example 2-18 Deploying by Using a Deployment Plan
-
-This example deploys the application in the `myrostapp.ear` file
-according to the plan specified by the `mydeployplan.jar` file.
-
-[source,oac_no_warn]
-----
-asadmin>deploy --deploymentplan mydeployplan.jar myrostapp.ear
-Application deployed successfully with name myrostapp.
-Command deploy executed successfully.
-----
-
-[[GSDPG00024]][[gijyn]]
-
-
-Example 2-19 Deployment Plan Structure for an Enterprise Application
-
-This listing shows the structure of the deployment plan JAR file for an
-EAR file.
-
-[source,oac_no_warn]
-----
-$ jar -tvf mydeployplan.jar
-420 Thu Mar 13 15:37:48 PST 2003 glassfish-application.xml
-370 Thu Mar 13 15:37:48 PST 2003 RosterClient.war.glassfish-web.xml
-418 Thu Mar 13 15:37:48 PST 2003 roster-ac.jar.glassfish-application-client.xml
-1281 Thu Mar 13 15:37:48 PST 2003 roster-ejb.jar.glassfish-ejb-jar.xml
-2317 Thu Mar 13 15:37:48 PST 2003 team-ejb.jar.glassfish-ejb-jar.xml
-3432 Thu Mar 13 15:37:48 PST 2003 team-ejb.jar.sun-cmp-mappings.xml
-84805 Thu Mar 13 15:37:48 PST 2003 team-ejb.jar.RosterSchema.dbschema
-----
-
-[[GSDPG00025]][[gijwk]]
-
-
-Example 2-20 Deployment Plan Structure for an EJB Module
-
-In the deployment plan for an EJB module, the deployment descriptor that
-is specific to GlassFish Server is at the root level. If a standalone
-EJB module contains a CMP bean, the deployment plan includes the
-`sun-cmp-mappings.xml` and `.dbschema` files at the root level. In the
-following listing, the deployment plan describes a CMP bean:
-
-[source,oac_no_warn]
-----
-$ jar r -tvf myotherplan.jar
-3603 Thu Mar 13 15:24:20 PST 2003 glassfish-ejb-jar.xml
-3432 Thu Mar 13 15:24:20 PST 2003 sun-cmp-mappings.xml
-84805 Thu Mar 13 15:24:20 PST 2003 RosterSchema.dbschema
-----
-
-[[GSDPG820]]
-
-See Also
-
-The deployment plan is part of the implementation of JSR 88. For more
-information about JSR 88, see link:overview.html#giiel[JSR 88 Naming] and
-the JSR 88 page at `http://jcp.org/en/jsr/detail?id=88`.
-
-[[gilcn]][[GSDPG00043]][[to-deploy-an-application-or-module-in-a-directory-format]]
-
-To Deploy an Application or Module in a Directory Format
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-
-[NOTE]
-=============================================================
-
-This task is best suited for use in a development environment.
-
-=============================================================
-
-
-An expanded directory, also known as an exploded directory, contains an
-unassembled (unpackaged) application or module. To deploy a directory
-format instead of an archive, file, use the `asadmin deploy` subcommand
-in remote mode and specify a path to a directory instead of to an
-archive file. The contents of the directory must be the same as the
-contents of a corresponding archive file, with one exception. An
-application archive file contains archive files for its modules, for
-example `myUI.war` and `myEJB.jar`. The expanded application directory
-contains expanded directories for the modules, for example `myUI_war`
-and `myEJB_jar`, instead. .
-
-You can change deployment descriptor files directly in the expanded
-directory.
-
-If your environment is configured to use dynamic reloading, you can also
-dynamically reload applications or modules that are deployed from the
-directory. For instructions, see link:#fwakh[To Reload Changes to
-Applications or Modules Dynamically].
-
-Unlike archive file deployment, directory deployment does not copy the
-directory contents to the remote hosts. This means that for deployment
-to a cluster, the directory path may exist for both the DAS and the
-remote server instances but may not actually correspond to the same
-physical location. If any target server instance cannot see the deployed
-directory, or finds that it contains different files from those detected
-by the DAS, deployment fails.
-
-Integrated development environments (IDEs) typically use directory
-deployment, so you do not need to deal directly with the expanded
-format.
-
-[[GSDPG821]]
-
-Before You Begin
-
-On each cluster or stand-alone server instance to which the application
-or module is deployed, the directory must be accessible and must contain
-the same files as found by the DAS.
-
-On Windows, if you are deploying a directory on a mapped drive, you must
-be running GlassFish Server as the same user to which the mapped drive
-is assigned. This enables GlassFish Server to access the directory.
-
-1.  Ensure that the server is running. +
-Remote commands require a running server.
-2.  Verify that the expanded directory contents match the archive file. +
-For information about the required directory contents, see the
-appropriate specifications.
-3.  Deploy the directory by using the link:../reference-manual/deploy.html#GSRFM00114[`deploy`]
-subcommand and specifying the path to the expanded directory. +
-
-[NOTE]
-=====================================================================
-
-Deployment directories might change between GlassFish Server releases.
-
-=====================================================================
-
-
-[[GSDPG00026]][[gilaz]]
-
-
-Example 2-21 Deploying an Application From a Directory
-
-This example deploys the expanded directory `/apps/MyApp` for the
-`hello` application.
-
-[source,oac_no_warn]
-----
-asadmin> deploy --name hello /apps/MyApp
-Application deployed successfully with name hello.
-Command deploy executed successfully.
-----
-
-[[GSDPG822]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help deploy` at the command line.
-
-[[gjiwk]][[GSDPG00066]][[modifying-the-configuration-of-a-web-application-or-module]]
-
-Modifying the Configuration of a Web Application or Module
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can modify the configuration of a web application or a module by
-modifying the deployment descriptors and then repackaging and
-redeploying the application.
-
-The instructions in this section enable you to change the configuration
-of a deployed application without the need to modify the application's
-deployment descriptors and repackage and redeploy the application. If
-the application or module entry is unset, its value reverts to the
-value, if any, that is set in the application's deployment descriptor.
-
-The following topics are addressed here:
-
-* link:#giyce[To Set a Web Context Parameter]
-* link:#giycy[To Unset a Web Context Parameter]
-* link:#giybo[To List Web Context Parameters]
-* link:#giyhc[To Set a Web Environment Entry]
-* link:#giyjr[To Unset a Web Environment Entry]
-* link:#giyip[To List Web Environment Entries]
-
-[[giyce]][[GSDPG00044]][[to-set-a-web-context-parameter]]
-
-To Set a Web Context Parameter
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `set-web-context-param` subcommand in remote mode to change the
-configuration of a deployed application without the need to modify the
-application's deployment descriptors and repackage and redeploy the
-application. By using this subcommand, you are either adding a new
-parameter that did not appear in the original web module's descriptor,
-or overriding the descriptor's setting of the parameter.
-
-If the `--ignoreDescriptorItem` option is set to `true`, then the server
-ignores any setting for that context parameter in the descriptor, which
-means you do not need to specify an overriding value on the
-`set-web-context-param` subcommand. The server behaves as if the
-descriptor had never contained a setting for that context parameter.
-
-This subcommand sets a servlet context-initialization parameter of one
-of the following items:
-
-* A deployed web application
-* A web module in a deployed Java Platform, Enterprise Edition (Java EE)
-application
-
-[[GSDPG823]]
-
-Before You Begin
-
-The application must already be deployed. Otherwise, an error occurs.
-
-1.  Ensure that the server is running. +
-Remote commands require a running server.
-2.  Set a servlet context-initialization parameter by using the
-link:../reference-manual/set-web-context-param.html#GSRFM00230[`set-web-context-param`] subcommand. +
-Information about the options for the subcommand is included in this
-help page.
-
-[[GSDPG00027]][[gjivx]]
-
-
-Example 2-22 Setting a Servlet Context-Initialization Parameter for a
-Web Application
-
-This example sets the servlet context-initialization parameter
-javax.faces.STATE_SAVING_METHOD of the web application `basic-ezcomp` to
-client.
-
-[source,oac_no_warn]
-----
-asadmin> set-web-context-param --name=javax.faces.STATE_SAVING_METHOD
---description="The location where the application?s state is preserved"
---value=client basic-ezcomp
-Command set-web-context-param executed successfully.
-----
-
-[[GSDPG824]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help set-web-context-param` at the command line.
-
-[[giycy]][[GSDPG00045]][[to-unset-a-web-context-parameter]]
-
-To Unset a Web Context Parameter
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `unset-web-context-param` subcommand in remote mode to unset an
-environment entry for a deployed web application or module that has been
-set by using the `set-web-env-entry` subcommand. There is no need to
-modify the application's deployment descriptors and repackage and
-redeploy the application.
-
-This subcommand unsets an environment entry for one of the following
-items:
-
-* A deployed web application
-* A web module in a deployed Java Platform, Enterprise Edition (Java EE)
-application
-
-When an entry is unset, its value reverts to the value, if any, that is
-set in the application's deployment descriptor. This subcommand cannot
-be used to change the value of an environment entry that is set in an
-application's deployment descriptor. Instead, use the
-link:../reference-manual/set-web-context-param.html#GSRFM00230[`set-web-context-param`] subcommand for this purpose.
-
-[[GSDPG825]]
-
-Before You Begin
-
-The application must already be deployed, and the entry must have
-previously been set by using the `set-web-env-entry` subcommand.
-Otherwise, an error occurs.
-
-1.  Ensure that the server is running. +
-Remote commands require a running server.
-2.  Unset an environment entry by using the
-link:../reference-manual/unset-web-context-param.html#GSRFM00248[`unset-web-context-param`] subcommand. +
-Information about the options for the subcommand is included in this
-help page.
-
-[[GSDPG00028]][[gjivv]]
-
-
-Example 2-23 Unsetting a Servlet Context-Initialization Parameter for a
-Web Application
-
-This example unsets the servlet context-initialization parameter
-javax.faces.STATE_SAVING_METHOD of the web application `basic-ezcomp`.
-
-[source,oac_no_warn]
-----
-asadmin> unset-web-context-param
---name=javax.faces.STATE_SAVING_METHOD basic-ezcomp
-Command unset-web-context-param executed successfully.
-----
-
-[[GSDPG826]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help unset-web-context-param` at the command line.
-
-[[giybo]][[GSDPG00046]][[to-list-web-context-parameters]]
-
-To List Web Context Parameters
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `list-web-context-param` subcommand in remote mode to list the
-parameters that have previously been set by using the
-link:../reference-manual/set-web-context-param.html#GSRFM00230[`set-web-context-param`] subcommand. The subcommand
-does not list parameters that are set only in the application's
-deployment descriptor. For each parameter, the following information is
-displayed:
-
-* The name of the parameter
-* The value to which the parameter is set
-* The value of the `--ignoreDescriptorItem` option of the
-`set-web-context-param` subcommand that was specified when the parameter
-was set
-* The description of the parameter or `null` if no description was
-specified when the parameter was set
-
-1.  Ensure that the server is running. +
-Remote commands require a running server.
-2.  List servlet context-initialization parameters by using the
-link:../reference-manual/list-web-context-param.html#GSRFM00208[`list-web-context-param`] subcommand.
-
-[[GSDPG00029]][[gjixd]]
-
-
-Example 2-24 Listing Servlet Context-Initialization Parameters for a Web
-Application
-
-This example lists all servlet context-initialization parameters of the
-web application `basic-ezcomp` that have been set by using the
-`set-web-context-param` subcommand. Because no description was specified
-when the javax.faces.PROJECT_STAGE parameter was set, null is displayed
-instead of a description for this parameter.
-
-[source,oac_no_warn]
-----
-asadmin> list-web-context-param basic-ezcomp
-javax.faces.STATE_SAVING_METHOD = client ignoreDescriptorItem=false
-//The location where the application's state is preserved
-javax.faces.PROJECT_STAGE = null ignoreDescriptorItem=true //null
-Command list-web-context-param executed successfully.
-----
-
-[[GSDPG827]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-web-context-param` at the command line.
-
-[[giyhc]][[GSDPG00047]][[to-set-a-web-environment-entry]]
-
-To Set a Web Environment Entry
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-An application uses the values of environment entries to customize its
-behavior or presentation. Use the `set-web-env-entry` subcommand in
-remote mode to change the configuration of a deployed application
-without the need to modify the application's deployment descriptors and
-repackage and redeploy the application. By using this subcommand, you
-are either adding a new parameter that did not appear in the original
-web module's descriptor, or overriding the descriptor's setting of the
-parameter.
-
-If you the `--ignoreDescriptorItem` option is set to `true`, then the
-server ignores any setting for that environment entry in the descriptor,
-which means you do not need to specify an overriding value on the
-`set-web-env-entry` subcommand. The server behaves as if the descriptor
-had never contained a setting for that environment entry.
-
-This subcommand sets an environment entry for one of the following
-items:
-
-* A deployed web application
-* A web module in a deployed Java Platform, Enterprise Edition (Java EE)
-application
-
-[[GSDPG828]]
-
-Before You Begin
-
-The application must already be deployed. Otherwise, an error occurs.
-
-1.  Ensure that the server is running. +
-Remote commands require a running server.
-2.  Set an environment entry for a deployed web application or module by
-using the link:../reference-manual/set-web-env-entry.html#GSRFM00231[`set-web-env-entry`] subcommand. +
-Information about the options for the subcommand is included in this
-help page.
-
-[[GSDPG00030]][[gjiwe]]
-
-
-Example 2-25 Setting an Environment Entry for a Web Application
-
-This example sets the environment entry `Hello User` of the application
-hello to `techscribe`. The Java type of this entry is
-`java.lang.String`.
-
-[source,oac_no_warn]
-----
-asadmin> set-web-env-entry --name="Hello User"
---type=java.lang.String --value=techscribe
---description="User authentication for Hello appplication" hello
-Command set-web-env-entry executed successfully
-----
-
-[[GSDPG829]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help set-web-env-entry` at the command line.
-
-[[giyjr]][[GSDPG00048]][[to-unset-a-web-environment-entry]]
-
-To Unset a Web Environment Entry
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `unset-web-env-entry` subcommand in remote mode to unset an
-environment entry for a deployed web application or module.
-
-1.  Ensure that the server is running. +
-Remote commands require a running server.
-2.  Unset a web environment entry by using the
-link:../reference-manual/unset-web-env-entry.html#GSRFM00249[`unset-web-env-entry`] subcommand. +
-Information about the options for the subcommand is included in this
-help page.
-
-[[GSDPG00031]][[gjivj]]
-
-
-Example 2-26 Unsetting an Environment Entry for a Web Application
-
-This example unsets the environment entry `Hello User` of the web
-application `hello`.
-
-[source,oac_no_warn]
-----
-asadmin> unset-web-env-entry --name="Hello User" hello
-Command unset-web-env-entry executed successfully.
-----
-
-[[GSDPG830]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help unset-web-env-entry` at the command line.
-
-[[giyip]][[GSDPG00049]][[to-list-web-environment-entries]]
-
-To List Web Environment Entries
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `list-web-env-entry` subcommand to list environment entries for
-a deployed web application or module. For each entry, the following
-information is displayed:
-
-* The name of the entry
-* The Java type of the entry
-* The value to which the entry is set
-* The description of the entry or null if no description was specified
-when the entry was set
-* The value of the `--ignoreDescriptorItem` option of the
-`set-web-env-entry` subcommand that was specified when the entry was set
-
-1.  Ensure that the server is running. +
-Remote commands require a running server.
-2.  List the environment entries by using
-theolink:GSRFM00209[`list-web-env-entry`] subcommand.
-
-[[GSDPG00032]][[gjiws]]
-
-
-Example 2-27 Listing Environment Entries for a Web Application
-
-This example lists all environment entries that have been set for the
-web application `hello` by using the `set-web-env-entry` subcommand.
-
-[source,oac_no_warn]
-----
-asadmin> list-web-env-entry hello
-Hello User (java.lang.String) = techscribe ignoreDescriptorItem=false
-//User authentication for Hello appplication
-Hello Port (java.lang.Integer) = null ignoreDescriptorItem=true //null
-Command list-web-env-entry executed successfully.
-----
-
-[[GSDPG831]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-web-env-entry` at the command line.
-
-[[beaej]][[GSDPG00067]][[web-module-deployment-guidelines]]
-
-Web Module Deployment Guidelines
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following guidelines apply to deploying a web module in GlassFish
-Server:
-
-* Context Root. When you deploy a web module, if you do not specify a
-context root, the default is the name of the WAR file without the `.war`
-extension. The web module context root must be unique within the server
-instance. +
-The domain administration server (DAS) in GlassFish Server versions
-2.1.1 and later supports the deployment of multiple web applications
-using the same web context root as long as those applications are
-deployed to different GlassFish Server stand-alone instances. Deploying
-multiple applications using the same context root within a single
-instance produces an error.
-* Data Source. If a web application accesses a `DataSource` that is not
-specified in a `resource-ref` in `glassfish-web.xml`, or there is no
-`glassfish-web.xml` file, the `resource-ref-name` defined in `web.xml`
-is used. A warning message is logged, recording the JNDI name that was
-used to look up the resource.
-* Virtual Servers. If you deploy a web application and do not specify
-any assigned virtual servers, the web application is assigned to all
-currently-defined virtual servers with the exception of the virtual
-server with ID `__asadmin`, which is reserved for administrative
-purposes. If you then create additional virtual servers and want to
-assign existing web applications to them, you must redeploy the web
-applications.
-* HTTP Sessions. If a web application is undeployed, all its HTTP
-sessions will be invalidated and removed, unless the application is
-being undeployed as part of a redeployment and the `--keepstate`
-deployment option was set to true. This option is not supported and
-ignored in a clustered environment. See link:#gijzm[Example 2-8]. +
-For information about HTTP session persistence, see the
-link:../ha-administration-guide/toc.html#GSHAG[GlassFish Server Open Source Edition High Availability
-Administration Guide].
-* Load Balancing. See the link:../ha-administration-guide/toc.html#GSHAG[GlassFish Server Open Source
-Edition High Availability Administration Guide] for information about
-load balancing.
-* JSP Precompilation. You can precompile JSP files during deployment by
-checking the appropriate box in the Administration Console, or by using
-the `--precompilejsp` option of the `deploy` subcommand. +
-You can keep the generated source for JSP files by adding the
-`keepgenerated` flag to the `jsp-config` element in `glassfish-web.xml`.
-For example: +
-[source,oac_no_warn]
-----
-<glassfish-web-app>
-   ...
-   <jsp-config>
-      <property name=keepgenerated value=true />
-   </jsp-config>
-</glassfish-web-app>
-----
-If you include this property when you deploy the WAR file, the generated
-source is kept in domain-dir`/generated/jsp/`app-name`/`module-name for
-an application, or domain-dir`/generated/jsp/`module-name for an
-individually-deployed web module. +
-For more information about JSP precompilation, see
-link:dd-elements.html#beatx[`jsp-config`].
-* Web Context Parameters. You can set web context parameters after
-deployment. See the following sections:
-
-** link:#giyce[To Set a Web Context Parameter]
-
-** link:#giycy[To Unset a Web Context Parameter]
-
-** link:#giybo[To List Web Context Parameters]
-* Web Environment Entries. You can set web environment entries after
-deployment. See the following sections:
-
-** link:#giyhc[To Set a Web Environment Entry]
-
-** link:#giyjr[To Unset a Web Environment Entry]
-
-** link:#giyip[To List Web Environment Entries]
-
-[[beaek]][[GSDPG00068]][[ejb-module-deployment-guidelines]]
-
-EJB Module Deployment Guidelines
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-
-[NOTE]
-=======================================================================
-
-The GlassFish Server Web Profile supports the EJB 3.1 Lite
-specification, which allows enterprise beans within web applications,
-among other features. The GlassFish Server Full Platform Profile
-supports the entire EJB 3.1 specification. For details, see
-http://jcp.org/en/jsr/detail?id=318[JSR 318]
-
-=======================================================================
-
-
-The following guidelines apply to deploying an EJB module in GlassFish
-Server:
-
-* JNDI Name. — If no JNDI name for the EJB JAR module is specified in
-the `jndi-name` element immediately under the `ejb` element in
-`glassfish-ejb-jar.xml`, or there is no `glassfish-ejb-jar.xml` file, a
-default, non-clashing JNDI name is derived. A warning message is logged,
-recording the JNDI name used to look up the EJB JAR module. +
-Because the EJB 3.1 specification defines portable EJB JNDI names, there
-is less need for GlassFish Server specific JNDI names. By default,
-GlassFish Server specific default JNDI names are applied automatically
-for backward compatibility. To disable GlassFish Server specific JNDI
-names for an EJB module, set the value of the
-`<disable-nonportable-jndi-names>` element in the
-`glassfish-ejb-jar.xml` file to `true`. The default is `false`.
-* Stateful Session Bean and Timer State. — Use the `--keepstate` option
-of the link:../reference-manual/redeploy.html#GSRFM00217[`redeploy`] subcommand or the `<keepstate>`
-element in the `glassfish-ejb-jar.xml` file to retain stateful session
-bean instances and persistently created EJB timers across redeployments.
-The `--keepstate` option of the `redeploy` subcommand takes precedence.
-The default for both is `false`. This option is not supported and
-ignored in a clustered environment. +
-Some changes to an application between redeployments can prevent this
-feature from working properly. For example, do not change the set of
-instance variables in the SFSB bean class. Other examples would be
-changes to EJB names, or adding or removing EJBs to or from an
-application.
-* EJB Singletons. — EJB Singletons are created for each server instance
-in a cluster, and not once per cluster.
-* Stubs and Ties. — Use the link:../reference-manual/get-client-stubs.html#GSRFM00140[`get-client-stubs`]
-subcommand in remote mode to retrieve stubs and ties.
-* Compatibility of JAR Visibility Requirements. — Use the
-`compatibility` element of the `glassfish-application.xml` or
-`glassfish-ejb-jar.xml` file to specify the GlassFish Server release
-with which to be backward compatible in terms of JAR visibility
-requirements for applications. The current allowed value is `v2`, which
-refers to GlassFish Server version 2 or GlassFish Server version 9.1 or
-9.1.1. Starting in Java EE 6, the Java EE specification imposes stricter
-requirements than Java EE 5 did on which JAR files can be visible to
-various modules within an EAR file. Setting this element to `v2` removes
-these Java EE 6 and later restrictions.
-
-[[gilxc]][[GSDPG00069]][[deploying-a-connector-module]]
-
-Deploying a Connector Module
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Deploying a stand-alone connector module allows multiple deployed Java
-EE applications to share the connector module. A resource adapter
-configuration is automatically created for the connector module.
-
-The following topics are addressed here:
-
-* link:#fvynl[To Deploy and Configure a Stand-Alone Connector Module]
-* link:#bealp[Redeploying a Stand-Alone Connector Module]
-* link:#bealq[Deploying and Configuring an Embedded Resource Adapter]
-
-[[fvynl]][[GSDPG00050]][[to-deploy-and-configure-a-stand-alone-connector-module]]
-
-To Deploy and Configure a Stand-Alone Connector Module
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-As an alternative to Step link:#gkojp[3] through Step link:#gkohy[6],
-you can define application-scoped resources in the
-`glassfish-resources.xml` deployment descriptor. For more information,
-see link:#giydj[Application-Scoped Resources].
-
-1.  Ensure that the server is running. +
-Remote commands require a running server.
-2.  Deploy the connector module by using the link:../reference-manual/deploy.html#GSRFM00114[`deploy`]
-subcommand.
-3.  [[gkojp]] +
-Configure connector connection pools for the deployed connector module. +
-Use the `create-connector-connection-pool` subcommand. For procedures,
-see "link:../administration-guide/connectors.html#GSADG00431[To Create a Connector Connection Pool]" in
-GlassFish Server Open Source Edition Administration Guide.
-4.  Configure connector resources for the connector connection pools. +
-Use the `create-resource-adapter-config` subcommand. For procedures, see
-"link:../administration-guide/connectors.html#GSADG00440[To Create Configuration Information for a Resource
-Adapter]" in GlassFish Server Open Source Edition Administration Guide.
-If needed, you can override the default configuration properties of a
-resource adapter. +
-This step associates a connector resource with a JNDI name.
-5.  Configure a resource adapter. +
-Use the `create-resource-adapter-config` subcommand. For procedures, see
-"link:../administration-guide/connectors.html#GSADG00440[To Create Configuration Information for a Resource
-Adapter]" in GlassFish Server Open Source Edition Administration Guide.
-If needed, you can override the default configuration properties of a
-resource adapter.
-6.  [[gkohy]] +
-If needed, create an administered object for an inbound resource
-adapter. +
-Use the `create-admin-object` subcommand. For procedures, see
-"link:../administration-guide/connectors.html#GSADG00452[To Create an Administered Object]" in GlassFish Server
-Open Source Edition Administration Guide.
-
-[[bealp]][[GSDPG00332]][[redeploying-a-stand-alone-connector-module]]
-
-Redeploying a Stand-Alone Connector Module
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Redeployment of a connector module maintains all connector connection
-pools, connector resources, and administered objects defined for the
-previously deployed connector module. You do not need to reconfigure any
-of these resources.
-
-However, you should redeploy any dependent modules. A dependent module
-uses or refers to a connector resource of the redeployed connector
-module. Redeployment of a connector module results in the shared class
-loader reloading the new classes. Other modules that refer to the old
-resource adapter classes must be redeployed to gain access to the new
-classes. For more information about class loaders, see
-"link:../application-development-guide/class-loaders.html#GSDVG00003[Class Loaders]" in GlassFish Server Open Source
-Edition Application Development Guide.
-
-During connector module redeployment, the server log provides a warning
-indicating that all dependent applications should be redeployed. Client
-applications or application components using the connector module's
-resources may throw class cast exceptions if dependent applications are
-not redeployed after connector module redeployment.
-
-To disable automatic redeployment, set the `--force` option to `false`.
-In this case, if the connector module has already been deployed,
-GlassFish Server provides an error message.
-
-[[bealq]][[GSDPG00333]][[deploying-and-configuring-an-embedded-resource-adapter]]
-
-Deploying and Configuring an Embedded Resource Adapter
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A connector module can be deployed as a Java EE component in a Java EE
-application. Such connectors are only visible to components residing in
-the same Java EE application. Deploy this application as you would any
-other Java EE application.
-
-You can create new connector connection pools and connector resources
-for a connector module embedded within a Java EE application by
-prefixing the connector name with app-name`#`. For example, if an
-application `appX.ear` has `jdbcra.rar` embedded within it, the
-connector connection pools and connector resources refer to the
-connector module as `appX#jdbcra`.
-
-An embedded connector module cannot be undeployed using the name
-app-name`#`connector-name. To undeploy the connector module, you must
-undeploy the application in which it is embedded.
-
-The association between the physical JNDI name for the connector module
-in GlassFish Server and the logical JNDI name used in the application
-component is specified in the GlassFish Server-specific XML descriptor
-`glassfish-ejb-jar.xml`.
-
-[[beaem]][[GSDPG00070]][[assembling-and-deploying-an-application-client-module]]
-
-Assembling and Deploying an Application Client Module
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Deployment is necessary for application clients that communicate with
-EJB components or that use Java Web Start launch support. Java Web Start
-is supported for application clients and for applications that contain
-application clients. By default, Java Web Start is enabled in
-application clients and in GlassFish Server.
-
-
-[NOTE]
-=======================================================================
-
-The Application Client Container is supported only in the GlassFish
-Server Full Platform Profile, not in the Web Profile.
-
-=======================================================================
-
-
-The following topics are addressed here:
-
-* link:#fvyal[To Assemble and Deploy an Application Client]
-* link:#fwahd[To Prepare Another Machine for Running an Application
-Client]
-* link:#gavpv[To Undeploy an Application Client]
-
-[[fvyal]][[GSDPG00051]][[to-assemble-and-deploy-an-application-client]]
-
-To Assemble and Deploy an Application Client
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-1.  Assemble the necessary client components. +
-The client JAR file is created.
-2.  Assemble the EJB components that are to be accessed by the client. +
-The EJB JAR file is created.
-3.  Assemble the client and EJB JAR files together in an EAR. +
-An EAR file contains all the components of the application.
-4.  Deploy the application. +
-Instructions are contained in link:#gijmq[To Deploy an Application or
-Module].
-5.  If you are using the `appclient` script to run the application
-client, retrieve the client files. +
-The client artifacts contain the ties and necessary classes for the
-application client. In this release of GlassFish Server, the client
-artifacts include multiple files. You can use either the
-`get-client-stubs` subcommand or the `--retrieve` option of the `deploy`
-subcommand, but you do not need to use both.
-* Use the link:../reference-manual/deploy.html#GSRFM00114[`deploy`] subcommand with the `--retrieve`
-option to retrieve the client files as part of deploying the
-application.
-* Use the link:../reference-manual/get-client-stubs.html#GSRFM00140[`get-client-stubs`] subcommand to retrieve
-client files for a previously-deployed application.
-6.  Test the client on the GlassFish Server machine in one of the
-following ways:
-* If Java Web Start is enabled for the application client, use the
-Launch link on the Application Client Modules.
-* Run an application client by using the `appclient` script. +
-The `appclient` script is located in the as-install`/bin` directory. +
-If you are using the default server instance, the only required option
-is `-client`, which points to the client JAR file. For example: +
-[source,oac_no_warn]
-----
-appclient -client converterClient.jar
-----
-The -xml parameter, which specifies the location of the `sun-acc.xml`
-file, is also required if you are not using the default instance.
-
-[[GSDPG832]]
-
-See Also
-
-For more detailed information about the `appclient` script, see
-link:../reference-manual/appclient.html#GSRFM00262[`appclient`(1M)].
-
-For more detailed information about creating application clients, see
-"link:../application-development-guide/java-clients.html#GSDVG00012[Developing Java Clients]" in GlassFish Server Open
-Source Edition Application Development Guide. This chapter includes
-information on the following topics:
-
-* Accessing EJB components and JMS resources from application clients
-* Connecting to a remote EJB module through a firewall
-* Using Java Web Start and creating a custom JNLP file
-* Using libraries with application clients
-* Specifying a splash screen, login retries, and other customizations
-
-[[fwahd]][[GSDPG00052]][[to-prepare-another-machine-for-running-an-application-client]]
-
-To Prepare Another Machine for Running an Application Client
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-If Java Web Start is enabled, the default URL format for an application
-is `http://`host:port`/`context-root. For example:
-
-[source,oac_no_warn]
-----
-http://localhost:80/myapp
-----
-
-The default URL format for a standalone application client module is
-`http://`host:port`/`module-id. For example:
-
-[source,oac_no_warn]
-----
-http://localhost:80/myclient
-----
-
-To set a different URL for an application client, set the `context-root`
-subelement of the link:dd-elements.html#gauax[`java-web-start-access`]
-element in the `glassfish-application-client.xml` file.
-
-If the context-root or module-id is not specified during deployment, the
-name of the EAR or JAR file without the `.ear` or `.jar` extension is
-used. For an application, the relative path to the application client
-JAR file is also included. If the application or module is not in EAR or
-JAR file format, a context-root or module-id is generated. Regardless of
-how the context-root or module-id is determined, it is written to the
-server log. For details about naming, see link:overview.html#gihzk[Naming
-Standards].
-
-[[GSDPG833]]
-
-Before You Begin
-
-This task applies if you want to use the `appclient` script to run the
-application client on a system other than where the server runs.
-
-1.  Create the application client package JAR file. +
-Use the `package-appclient` script in the as-install`/bin` directory.
-This JAR file is created in the as-install`/lib/appclient` directory.
-2.  Copy the application client package JAR file to the client machine.
-3.  Extract the contents of the JAR file. +
-For example: `jar xf` filename`.jar`
-4.  Configure the `sun-acc.xml` file. +
-If you used the `package-appclient` script, this file is located in the
-`appclient/appserv/lib/appclient` directory by default.
-5.  Configure the `asenv.conf` (`asenv.bat` on Windows) file. +
-This file is located in `appclient/appserv/bin` by default if you used
-the `package-appclient` script.
-6.  Copy the client JAR file to the client machine. +
-You are now ready to run the client.
-
-[[GSDPG834]]
-
-See Also
-
-For more detailed information about Java Web Start and the
-`package-appclient` script, see link:../reference-manual/appclient.html#GSRFM00262[`appclient`(1M)].
-
-[[gavpv]][[GSDPG00334]][[to-undeploy-an-application-client]]
-
-To Undeploy an Application Client
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-After application clients are downloaded, they remain on the client
-until they are manually removed. Use the Java Web Start control panel to
-discard downloaded application clients that used Java Web Start.
-
-If you undeploy an application client, you can no longer use Java Web
-Start, or any other mechanism, to download that application client
-because it might be in an inconsistent state. If you try to launch an
-application client that was previously downloaded (even though the
-server side of the application client is no longer present), the results
-are unpredictable unless the application client has been written to
-tolerate such situations.
-
-You can write your application client so that it detects failures in
-contacting server-side components, but continues running. In this case,
-Java Web Start can run an undeployed application client while the client
-is cached locally. For example, your application client can be written
-to detect and then recover from `javax.naming.NamingException` when
-locating a resource, or from `java.rmi.RemoteException` when referring
-to a previously-located resource that becomes inaccessible.
-
-[[beael]][[GSDPG00071]][[lifecycle-module-deployment-guidelines]]
-
-Lifecycle Module Deployment Guidelines
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-A lifecycle module, also called a lifecycle listener module, provides a
-means of running long or short Java-based tasks within the GlassFish
-Server environment, such as instantiation of singletons or RMI servers.
-Lifecycle modules are automatically initiated at server startup and are
-notified at various phases of the server life cycle. All lifecycle
-module interfaces are in the as-install`/modules/glassfish-api.jar`
-file.
-
-For general information about lifecycle modules, see
-"link:../application-development-guide/lifecycle-listeners.html#GSDVG00014[Developing Lifecycle Listeners]" in GlassFish Server
-Open Source Edition Application Development Guide.
-
-You can deploy a lifecycle module using the `create-lifecycle-module`
-subcommand. Do not use `asadmin deploy` or related commands.
-
-You do not need to specify a classpath for the lifecycle module if you
-place it in the domain-dir`/lib` or domain-dir`/lib/classes` directory
-for the Domain Administration Server (DAS). Do not place it in the `lib`
-directory for a particular server instance, or it will be deleted when
-that instance synchronizes with the GlassFish Server.
-
-After you deploy a lifecycle module, you must restart the server. During
-server initialization, the server instantiates the module and registers
-it as a lifecycle event listener.
-
-
-[NOTE]
-=======================================================================
-
-If the `--failurefatal` option of `create-lifecycle-module` is set to
-`true` (the default is `false`), lifecycle module failure prevents
-server initialization or startup, but not shutdown or termination.
-
-=======================================================================
-
-
-[[gbiye]][[GSDPG00072]][[web-service-deployment-guidelines]]
-
-Web Service Deployment Guidelines
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-
-[NOTE]
-=======================================================================
-
-If you installed the Web Profile, web services are not supported unless
-the optional Metro Web Services Stack add-on component is downloaded.
-Without the Metro add-on component, a servlet or EJB component cannot be
-a web service endpoint, and the `glassfish-web.xml` and
-`glassfish-ejb-jar.xml` elements related to web services are ignored.
-
-=======================================================================
-
-
-The following guidelines apply when deploying a web service in GlassFish
-Server:
-
-* Web Service Endpoint. Deploy a web service endpoint to GlassFish
-Server as you would any servlet or stateless session bean. If the
-deployed application or module has a web service endpoint, the endpoint
-is detected automatically during deployment. The GlassFish Server
--specific deployment descriptor files, `glassfish-web.xml` and
-`glassfish-ejb-jar.xml`, provide optional web service enhancements in
-their link:dd-elements.html#beayv[`webservice-endpoint`] and
-link:dd-elements.html#beayt[`webservice-description`] elements.
-* Web Service Management. Web service management is fully supported in
-the Administration Console. After the application or module is deployed,
-click the Web Service component. The table in the right frame lists
-deployed web service endpoints.
-
-For more information about web services, see
-"link:../application-development-guide/webservices.html#GSDVG00007[Developing Web Services]" in GlassFish Server Open
-Source Edition Application Development Guide.
-
-[[gkkmb]][[GSDPG00073]][[osgi-bundle-deployment-guidelines]]
-
-OSGi Bundle Deployment Guidelines
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-To deploy an OSGi bundle using the Administration Console, select Other
-from the Type drop-down list and check the OSGI Type checkbox.
-
-To deploy an OSGi bundle using the `asadmin deploy` command, set the
-`--type` option to the value `osgi`. For example:
-
-[source,oac_no_warn]
-----
-asadmin> deploy --type=osgi MyBundle.jar
-----
-
-To automatically deploy an OSGi bundle, copy the bundle archive to the
-domain-dir`/autodeploy/bundles` directory.
-
-
-[NOTE]
-=======================================================================
-
-For components packaged as OSGi bundles (`--type=osgi`), the `deploy`
-subcommand accepts properties arguments to wrap a WAR file as a WAB (Web
-Application Bundle) at the time of deployment. The subcommand looks for
-a key named `UriScheme` and, if present, uses the key as a URL stream
-handler to decorate the input stream. Other properties are used in the
-decoration process. For example, the GlassFish Server OSGi web container
-registers a URL stream handler named `webbundle`, which is used to wrap
-a plain WAR file as a WAB.
-
-=======================================================================
-
-
-[[gkoif]][[GSDPG00074]][[transparent-jdbc-connection-pool-reconfiguration]]
-
-Transparent JDBC Connection Pool Reconfiguration
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-In this GlassFish Server release, reconfiguration of a JDBC connection
-pool due to attribute or property changes can be transparent to the
-applications or modules that use the pool, even if pool reconfiguration
-results in pool recreation. You do not need to redeploy the application
-or module.
-
-To enable transparent pool reconfiguration, set the
-`dynamic-reconfiguration-wait-timeout-in-seconds` property. This
-property specifies the timeout for dynamic reconfiguration of the pool.
-In-progress connection requests must complete before this timeout
-expires or they must be retried. New connection requests wait for this
-timeout to expire before acquiring connections to the reconfigured pool.
-If this property exists and has a positive value, it is enabled.
-
-You can set this property in the `glassfish-resources.xml` file. For
-more information, see the property descriptions under
-link:dd-elements.html#giyil[`jdbc-connection-pool`].
-
-For JDBC connection pools that are not application-scoped, use the `set`
-subcommand to set this property. For example, to configure `mypool` on
-`myserver`, type the following all on one line:
-
-[source,oac_no_warn]
-----
-asadmin> set myserver.resources.jdbc-connection-pool.mypool.property.
-dynamic-reconfiguration-wait-timeout-in-seconds=30
-----
-
-[[giydj]][[GSDPG00075]][[application-scoped-resources]]
-
-Application-Scoped Resources
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can define an application-scoped JDBC resource or other resource for
-an enterprise application, web module, EJB module, connector module, or
-application client module. This allows single-step deployment for
-resource-dependent modules and applications. An application-scoped
-resource has the following characteristics:
-
-* It is available only to the module or application that defines it.
-* It cannot be referenced or looked up by other modules or applications.
-* It is created during deployment, destroyed during undeployment, and
-recreated during redeployment.
-* It is free from unexpected resource starvation or delay in acquiring
-connections because no other application or module competes for accesses
-to it.
-
-The following resource types can be application-scoped:
-
-* JDBC connection pools
-* JDBC resources
-* Connector connection pools
-* Connector resources
-* Resource adapters
-* External JNDI resources
-* Custom resources
-* Admin object resources
-* JavaMail resources
-
-Deployment Descriptor. An application-scoped resource is defined in the
-`glassfish-resources.xml` deployment descriptor file. This file is
-placed in the `META-INF` directory of the module or application archive.
-For web applications or modules, this file is placed in the `WEB-INF`
-directory. If any submodule archives of an enterprise application
-archive have their own `glassfish-resources.xml` files, the resource
-definitions are scoped to those modules only. For more information about
-the `glassfish-resources.xml` file, see
-link:dd-files.html#giida[GlassFish Server Deployment Descriptor Files]
-and link:dd-elements.html#beaqi[Elements of the GlassFish Server
-Deployment Descriptors].
-
-Naming. Application-scoped resource JNDI names begin with `java:app` or
-`java:module`. If one of these prefixes is not specified in the JNDI
-name, it is added. For example, application-scoped databases have JNDI
-names in the following format: `java:app/jdbc/`DataSourceName or
-`java:module/jdbc/`DataSourceName. This is in accordance with the naming
-scopes introduced in the Java EE 6 Specification.
-
-Errors. Application-scoped resource definitions with same resource name,
-resource type, attributes, and properties are duplicates. These generate
-`WARNING` level log messages and deployment continues. Definitions with
-the same resource name and type but different attributes or properties
-are conflicts and cause deployment failure. When an application or
-module tries to look up a scoped resource that does not belong to it, a
-naming exception is thrown.
-
-Redeployment. When an application or module is undeployed, its scoped
-resources are deleted. During redeployment, resources are destroyed and
-recreated based on changes in the `glassfish-resources.xml` file. To
-preserve old resource definitions during redeployment, use the
-`preserveAppScopedResources` property of the `redeploy` (or `deploy`
-`--force=true`) subcommand. For example:
-
-[source,oac_no_warn]
-----
-asadmin> redeploy --property preserveAppScopedResources=true MyApp.ear
-
-asadmin> deploy --force=true --property preserveAppScopedResources=true MyApp.ear
-----
-
-For more information, see link:../reference-manual/redeploy.html#GSRFM00217[`redeploy`(1)] and
-link:../reference-manual/deploy.html#GSRFM00114[`deploy`(1)].
-
-Listing. Use the `--resources` option of the `list-applications`
-subcommand to list application-scoped resources. Use the
-`--subcomponents` option in addition to list scoped resources for
-enterprise application modules or for module subcomponents. To list
-scoped resources for subcomponents only, use the `--resources` option of
-the `list-subcomponents` subcommand
-
-For more information, see link:../reference-manual/list-applications.html#GSRFM00148[`list-applications`(1)] and
-link:../reference-manual/list-sub-components.html#GSRFM00201[`list-sub-components`(1)].
-
-Restrictions. Use of application-scoped resources is subject to the
-following restrictions:
-
-* `resource-adapter-config` and `connector-work-security-map` — These
-can only be specified in the `glassfish-resources.xml` file of the
-corresponding connector module. In an enterprise application, the
-`resource-adapter-config` or `connector-work-security-map` for an
-embedded connector module must be specified in the
-`glassfish-resources.xml` file of the connector module. You cannot
-specify a `resource-adapter-config` or `connector-work-security-map` in
-an application for a connector module that is not part of the
-application.
-* Resource to connection pool cross references — A module-level
-`jdbc-resource` cannot reference an application-level
-`jdbc-connection-pool`. Likewise, a module-level `connector-resource`
-cannot reference an application-level `connector-connection-pool`.
-* Global resources — Defining `java:global` JNDI names is not supported.
-* Cross definitions — Defining `java:app` JNDI names at the module level
-is not supported.
-
-
diff --git a/docs/application-deployment-guide/src/main/jbake/content/loe.adoc b/docs/application-deployment-guide/src/main/jbake/content/loe.adoc
deleted file mode 100644
index 329bedb..0000000
--- a/docs/application-deployment-guide/src/main/jbake/content/loe.adoc
+++ /dev/null
@@ -1,64 +0,0 @@
-type=page
-status=published
-title=List of Examples
-next=lof.html
-prev=toc.html
-~~~~~~
-List of Examples
-================
-
-[[list-of-examples]]
-List of Examples
-----------------
-
-* link:deploying-applications.html#gijlo[2-1 Deploying an Enterprise
-Application]
-* link:deploying-applications.html#gilcq[2-2 Deploying a Connector
-Module]
-* link:deploying-applications.html#CHDFHDGD[2-3 Using an Alternate Java
-EE Standard Deployment Descriptor]
-* link:deploying-applications.html#CHDJFAIJ[2-4 Specifying the Deployment
-Order of an Application]
-* link:deploying-applications.html#giumj[2-5 Listing Applications]
-* link:deploying-applications.html#giuot[2-6 Listing Subcomponents]
-* link:deploying-applications.html#giunl[2-7 Showing Status of a Deployed
-Component]
-* link:deploying-applications.html#gijzm[2-8 Retaining HTTP Session State
-During Redeployment]
-* link:deploying-applications.html#gijkr[2-9 Redeploying a Web
-Application That Was Deployed From a Directory]
-* link:deploying-applications.html#gikiw[2-10 Redeploying an Application
-by Using asadmin deploy --force]
-* link:deploying-applications.html#gijkp[2-11 Listing Deployed Web
-Applications]
-* link:deploying-applications.html#gikvy[2-12 Disabling a Web
-Application]
-* link:deploying-applications.html#gijxl[2-13 Enabling an Application]
-* link:deploying-applications.html#gikag[2-14 Listing Deployed
-Applications or Modules]
-* link:deploying-applications.html#gikun[2-15 Undeploying an Application]
-* link:deploying-applications.html#giqrk[2-16 Setting the Autodeployment
-Interval]
-* link:deploying-applications.html#giqtm[2-17 Setting JSP Precompilation]
-* link:deploying-applications.html#gijvy[2-18 Deploying by Using a
-Deployment Plan]
-* link:deploying-applications.html#gijyn[2-19 Deployment Plan Structure
-for an Enterprise Application]
-* link:deploying-applications.html#gijwk[2-20 Deployment Plan Structure
-for an EJB Module]
-* link:deploying-applications.html#gilaz[2-21 Deploying an Application
-From a Directory]
-* link:deploying-applications.html#gjivx[2-22 Setting a Servlet
-Context-Initialization Parameter for a Web Application]
-* link:deploying-applications.html#gjivv[2-23 Unsetting a Servlet
-Context-Initialization Parameter for a Web Application]
-* link:deploying-applications.html#gjixd[2-24 Listing Servlet
-Context-Initialization Parameters for a Web Application]
-* link:deploying-applications.html#gjiwe[2-25 Setting an Environment
-Entry for a Web Application]
-* link:deploying-applications.html#gjivj[2-26 Unsetting an Environment
-Entry for a Web Application]
-* link:deploying-applications.html#gjiws[2-27 Listing Environment Entries
-for a Web Application]
-
-
diff --git a/docs/application-deployment-guide/src/main/jbake/content/lof.adoc b/docs/application-deployment-guide/src/main/jbake/content/lof.adoc
deleted file mode 100644
index 19971bc..0000000
--- a/docs/application-deployment-guide/src/main/jbake/content/lof.adoc
+++ /dev/null
@@ -1,17 +0,0 @@
-type=page
-status=published
-title=List of Figures
-next=lot.html
-prev=loe.html
-~~~~~~
-List of Figures
-===============
-
-[[list-of-figures]]
-List of Figures
----------------
-
-* link:overview.html#fwfdj[1-1 Module-Based Assembly and Deployment]
-* link:overview.html#fvyip[1-2 Application-Based Assembly and Deployment]
-
-
diff --git a/docs/application-deployment-guide/src/main/jbake/content/lot.adoc b/docs/application-deployment-guide/src/main/jbake/content/lot.adoc
deleted file mode 100644
index adbc2fb..0000000
--- a/docs/application-deployment-guide/src/main/jbake/content/lot.adoc
+++ /dev/null
@@ -1,198 +0,0 @@
-type=page
-status=published
-title=List of Tables
-next=title.html
-prev=lof.html
-~~~~~~
-List of Tables
-==============
-
-[[list-of-tables]]
-List of Tables
---------------
-
-* link:dd-files.html#giiht[B-1 GlassFish Server Deployment Descriptors
-and DTDs]
-* link:dd-files.html#gkinm[B-2 weblogic.xml Support in GlassFish Server]
-* link:dd-files.html#gkkht[B-3 weblogic-webservices.xml Support in
-GlassFish Server]
-* link:dd-elements.html#fvynw[C-1 activation-config subelements]
-* link:dd-elements.html#fvynv[C-2 activation-config-property subelements]
-* link:dd-elements.html#sthref14[C-3 admin-object-resource Subelements]
-* link:dd-elements.html#sthref17[C-4 admin-object-resource Attributes]
-* link:dd-elements.html#fvyov[C-5 as-context Subelements]
-* link:dd-elements.html#fvyol[C-6 auth-realm subelement]
-* link:dd-elements.html#fvypa[C-7 auth-realm attributes]
-* link:dd-elements.html#sthref26[C-8 backend-principal Attributes]
-* link:dd-elements.html#fvypb[C-9 bean-cache Subelements]
-* link:dd-elements.html#fvypg[C-10 bean-pool Subelements]
-* link:dd-elements.html#fvyrd[C-11 cache Subelements]
-* link:dd-elements.html#fvyrt[C-12 cache Attributes]
-* link:dd-elements.html#fvyqr[C-13 cache Properties]
-* link:dd-elements.html#fvyph[C-14 cacheClassName Values]
-* link:dd-elements.html#fvyql[C-15 cache-helper Subelements]
-* link:dd-elements.html#fvyrp[C-16 cache-helper Attributes]
-* link:dd-elements.html#fvypt[C-17 cache-mapping Subelements]
-* link:dd-elements.html#fvyrw[C-18 call-property subelements]
-* link:dd-elements.html#fvypo[C-19 cert-db attributes]
-* link:dd-elements.html#fvyrq[C-20 check-version-of-accessed-instances
-Subelements]
-* link:dd-elements.html#fvyqx[C-21 checkpoint-at-end-of-method
-Subelements]
-* link:dd-elements.html#fvyqg[C-22 class-loader Subelements]
-* link:dd-elements.html#fvyrs[C-23 class-loader Attributes]
-* link:dd-elements.html#gcfjs[C-24 class-loader Properties]
-* link:dd-elements.html#fvypm[C-25 client-container Subelements]
-* link:dd-elements.html#fvyqb[C-26 client-container Attributes]
-* link:dd-elements.html#fvyqm[C-27 client-container Properties]
-* link:dd-elements.html#fvyro[C-28 client-credential subelement]
-* link:dd-elements.html#fvypi[C-29 client-credential attributes]
-* link:dd-elements.html#fvypw[C-30 cmp Subelements]
-* link:dd-elements.html#fvyqh[C-31 cmp-field-mapping Subelements]
-* link:dd-elements.html#fvyps[C-32 cmp-resource Subelements]
-* link:dd-elements.html#fvypn[C-33 cmr-field-mapping Subelements]
-* link:dd-elements.html#fvysh[C-34 column-pair Subelements]
-* link:dd-elements.html#sthref56[C-35 connector-connection-pool
-Subelements]
-* link:dd-elements.html#sthref59[C-36 connector-connection-pool
-Attributes]
-* link:dd-elements.html#sthref62[C-37 connector-connection-pool
-Properties]
-* link:dd-elements.html#sthref66[C-38 connector-resource Subelements]
-* link:dd-elements.html#sthref69[C-39 connector-resource Attributes]
-* link:dd-elements.html#fvysn[C-40 consistency Subelements]
-* link:dd-elements.html#fvysp[C-41 constraint-field Subelements]
-* link:dd-elements.html#fvysr[C-42 constraint-field Attributes]
-* link:dd-elements.html#fvysv[C-43 constraint-field-value Attributes]
-* link:dd-elements.html#fvytb[C-44 cookie-properties Subelements]
-* link:dd-elements.html#fvyte[C-45 cookie-properties Properties]
-* link:dd-elements.html#sthref79[C-46 custom-resource Subelements]
-* link:dd-elements.html#sthref82[C-47 custom-resource Attributes]
-* link:dd-elements.html#fvytm[C-48 default-helper Subelements]
-* link:dd-elements.html#fvyto[C-49 default-helper Properties]
-* link:dd-elements.html#fvytr[C-50 default-resource-principal
-Subelements]
-* link:dd-elements.html#fvyuc[C-51 ejb Subelements]
-* link:dd-elements.html#fvyud[C-52 ejb Attributes]
-* link:dd-elements.html#fvyui[C-53 ejb-ref Subelements]
-* link:dd-elements.html#fvyut[C-54 enterprise-beans Subelements]
-* link:dd-elements.html#fvyuz[C-55 entity-mapping Subelements]
-* link:dd-elements.html#sthref94[C-56 external-jndi-resource Subelements]
-* link:dd-elements.html#sthref97[C-57 external-jndi-resource Attributes]
-* link:dd-elements.html#fvzcz[C-58 fetched-with Subelements]
-* link:dd-elements.html#fvyzu[C-59 finder Subelements]
-* link:dd-elements.html#fvzba[C-60 flush-at-end-of-method Subelements]
-* link:dd-elements.html#fvzdo[C-61 gen-classes Subelements]
-* link:dd-elements.html#fvzhl[C-62 glassfish-application Subelements]
-* link:dd-elements.html#fvzjh[C-63 glassfish-application-client
-subelements]
-* link:dd-elements.html#fvzfu[C-64 glassfish-ejb-jar Subelements]
-* link:dd-elements.html#fvzgf[C-65 glassfish-web-app Subelements]
-* link:dd-elements.html#fvzjf[C-66 glassfish-web-app Attributes]
-* link:dd-elements.html#fvzim[C-67 glassfish-web-app Properties]
-* link:dd-elements.html#sthref111[C-68 group-map Attributes]
-* link:dd-elements.html#fvzca[C-69 idempotent-url-pattern Attributes]
-* link:dd-elements.html#fvyyk[C-70 ior-security-config Subelements]
-* link:dd-elements.html#fvzdu[C-71 java-method Subelements]
-* link:dd-elements.html#gauaw[C-72 java-web-start-access subelements]
-* link:dd-elements.html#sthref119[C-73 jdbc-connection-pool Subelements]
-* link:dd-elements.html#sthref122[C-74 jdbc-connection-pool Attributes]
-* link:dd-elements.html#sthref125[C-75 jdbc-connection-pool Database
-Properties]
-* link:dd-elements.html#sthref128[C-76 jdbc-connection-pool Database
-Properties]
-* link:dd-elements.html#sthref132[C-77 jdbc-resource Subelements]
-* link:dd-elements.html#sthref135[C-78 jdbc-resource Attributes]
-* link:dd-elements.html#fvyzp[C-79 jsp-config Subelements]
-* link:dd-elements.html#fvzde[C-80 jsp-config Properties]
-* link:dd-elements.html#fvyyi[C-81 key-field Attributes]
-* link:dd-elements.html#fvyzd[C-82 locale-charset-info Subelements]
-* link:dd-elements.html#fvzcd[C-83 locale-charset-info Attributes]
-* link:dd-elements.html#fvyvl[C-84 locale-charset-map Subelements]
-* link:dd-elements.html#fvzbk[C-85 locale-charset-map Attributes]
-* link:dd-elements.html#fvzbb[C-86 Example agent Attribute Values]
-* link:dd-elements.html#fvzdx[C-87 log-service subelement]
-* link:dd-elements.html#fvzbn[C-88 log-service attributes]
-* link:dd-elements.html#fvzap[C-89 login-config subelements]
-* link:dd-elements.html#sthref150[C-90 mail-resource Subelements]
-* link:dd-elements.html#sthref153[C-91 mail-resource Attributes]
-* link:dd-elements.html#fvyvh[C-92 manager-properties Subelements]
-* link:dd-elements.html#fvywk[C-93 manager-properties Properties]
-* link:dd-elements.html#fvyxi[C-94 mdb-connection-factory Subelements]
-* link:dd-elements.html#fvyzh[C-95 mdb-resource-adapter subelements]
-* link:dd-elements.html#fvyyd[C-96 message Subelements]
-* link:dd-elements.html#fvyzy[C-97 message-destination subelements]
-* link:dd-elements.html#gauar[C-98 message-destination-ref subelements]
-* link:dd-elements.html#fvywy[C-99 message-security Subelements]
-* link:dd-elements.html#fvzcx[C-100 message-security-binding Subelements]
-* link:dd-elements.html#fvzda[C-101 message-security-binding Attributes]
-* link:dd-elements.html#fvyym[C-102 message-security-config Subelements]
-* link:dd-elements.html#fvzam[C-103 message-security-config Attributes]
-* link:dd-elements.html#fvzch[C-104 method Subelements]
-* link:dd-elements.html#fvyzq[C-105 method-params Subelements]
-* link:dd-elements.html#fvyxu[C-106 one-one-finders Subelements]
-* link:dd-elements.html#fvywn[C-107 parameter-encoding Attributes]
-* link:dd-elements.html#fvzbr[C-108 port-info subelements]
-* link:dd-elements.html#fvyyn[C-109 prefetch-disabled Subelements]
-* link:dd-elements.html#fvzaq[C-110 principal Subelements]
-* link:dd-elements.html#sthref177[C-111 principal-map Attributes]
-* link:dd-elements.html#gatyf[C-112 principal-name Attributes]
-* link:dd-elements.html#fvzcb[C-113 property Subelements]
-* link:dd-elements.html#fvzdi[C-114 property Attributes]
-* link:dd-elements.html#fvzcc[C-115 property subelements]
-* link:dd-elements.html#fvyyq[C-116 provider-config Subelements]
-* link:dd-elements.html#fvyvz[C-117 provider-config Attributes]
-* link:dd-elements.html#fvywl[C-118 query-method Subelements]
-* link:dd-elements.html#fvzbz[C-119 refresh-field Attributes]
-* link:dd-elements.html#fvzdy[C-120 request-policy Attributes]
-* link:dd-elements.html#fvzbu[C-121 request-protection Attributes]
-* link:dd-elements.html#sthref191[C-122 resource-adapter-config
-Subelements]
-* link:dd-elements.html#sthref194[C-123 resource-adapter-config
-Attributes]
-* link:dd-elements.html#fvyye[C-124 resource-env-ref Subelements]
-* link:dd-elements.html#fvzbd[C-125 resource-ref Subelements]
-* link:dd-elements.html#sthref201[C-126 resources Subelements]
-* link:dd-elements.html#fvyyr[C-127 response-policy Attributes]
-* link:dd-elements.html#fvzej[C-128 response-protection Attributes]
-* link:dd-elements.html#fvzey[C-129 sas-context Subelements]
-* link:dd-elements.html#fvzex[C-130 schema-generator-properties
-Subelements]
-* link:dd-elements.html#fvzev[C-131 schema-generator-properties
-Properties]
-* link:dd-elements.html#fvymm[C-132 schema-generator-properties Column
-Attributes]
-* link:dd-elements.html#fvzet[C-133 secondary table Subelements]
-* link:dd-elements.html#fvzfe[C-134 security Subelements]
-* link:dd-elements.html#sthref213[C-135 security-map Subelements]
-* link:dd-elements.html#sthref216[C-136 security-map Attributes]
-* link:dd-elements.html#fvzfj[C-137 security-role-mapping Subelements]
-* link:dd-elements.html#fvzfi[C-138 service-qname subelements]
-* link:dd-elements.html#fvzgc[C-139 service-ref subelements]
-* link:dd-elements.html#fvzhy[C-140 servlet Subelements]
-* link:dd-elements.html#fvzib[C-141 session-config Subelements]
-* link:dd-elements.html#fvzgo[C-142 session-manager Subelements]
-* link:dd-elements.html#fvzje[C-143 session-manager Attributes]
-* link:dd-elements.html#fvzgv[C-144 session-properties Subelements]
-* link:dd-elements.html#fvzii[C-145 session-properties Properties]
-* link:dd-elements.html#fvzgb[C-146 ssl attributes]
-* link:dd-elements.html#fvzif[C-147 store-properties Subelements]
-* link:dd-elements.html#fvzgr[C-148 store-properties Properties]
-* link:dd-elements.html#fvziz[C-149 stub-property subelements]
-* link:dd-elements.html#gawou[C-150 stub-property properties]
-* link:dd-elements.html#fvzhm[C-151 sun-cmp-mapping Subelements]
-* link:dd-elements.html#fvzin[C-152 sun-cmp-mappings Subelements]
-* link:dd-elements.html#fvzhg[C-153 target-server subelements]
-* link:dd-elements.html#fvzgg[C-154 target-server attributes]
-* link:dd-elements.html#fvzih[C-155 timeout Attributes]
-* link:dd-elements.html#fvziu[C-156 transport-config Subelements]
-* link:dd-elements.html#giktu[C-157 valve Subelements]
-* link:dd-elements.html#gikqw[C-158 valve Attributes]
-* link:dd-elements.html#fvzfz[C-159 web Subelements]
-* link:dd-elements.html#fvzjb[C-160 webservice-description subelements]
-* link:dd-elements.html#fvzjs[C-161 webservice-endpoint subelements]
-* link:dd-elements.html#sthref248[C-162 work-security-map Subelements]
-* link:dd-elements.html#sthref251[C-163 work-security-map Attributes]
-* link:dd-elements.html#fvzju[C-164 wsdl-port subelements]
-
-
diff --git a/docs/application-deployment-guide/src/main/jbake/content/overview.adoc b/docs/application-deployment-guide/src/main/jbake/content/overview.adoc
deleted file mode 100644
index 02ec354..0000000
--- a/docs/application-deployment-guide/src/main/jbake/content/overview.adoc
+++ /dev/null
@@ -1,792 +0,0 @@
-type=page
-status=published
-title=Overview of GlassFish Server Open Source Edition 5.0 Application Deployment
-next=deploying-applications.html
-prev=preface.html
-~~~~~~
-Overview of GlassFish Server Open Source Edition 5.0 Application Deployment
-===========================================================================
-
-[[GSDPG00003]][[gihxo]]
-
-
-[[overview-of-glassfish-server-open-source-edition-5.0-application-deployment]]
-1 Overview of GlassFish Server Open Source Edition 5.0 Application Deployment
------------------------------------------------------------------------------
-
-GlassFish Server Open Source Edition 5.0 provides an environment for
-developing and deploying Java applications and web services. GlassFish
-Server applications include Java Platform, Enterprise Edition (Java EE
-platform) standard features as well as features specific to GlassFish
-Server. This guide explains the tools and processes used for deploying
-applications and modules in the GlassFish Server environment. Only
-GlassFish Server features are described in detail in this document.
-
-The following topics are addressed here:
-
-* link:#gihzx[About Application Deployment]
-* link:#giphm[About Assembly and Deployment Events]
-* link:#giifh[About Deployment Tools]
-* link:#gipud[Additional Information on Application Deployment]
-
-Information and instructions on deploying from the command line are
-provided in this document. Information and instructions for
-accomplishing the deployment tasks by using the Administration Console
-are contained in the Administration Console online help.
-
-[[gihzx]][[GSDPG00061]][[about-application-deployment]]
-
-About Application Deployment
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Assembly, also known as packaging, is the process of combining discrete
-components of an application or module into a single unit that can be
-installed on an application server. The GlassFish Server assembly
-process conforms to the customary Java EE specifications. The only
-difference is that when you assemble applications or modules in
-GlassFish Server, you can include optional GlassFish Server deployment
-descriptors that enhance functionality.
-
-Deployment is the process of installing an application or module on
-GlassFish Server, optionally specifying location-specific information,
-such as a list of local users that can access the application, or the
-name of the local database. GlassFish Server deployment tools expand the
-archive file into an open directory structure that is ready for users.
-GlassFish Server deployment tools are described in link:#giifh[About
-Deployment Tools].
-
-The following topics are addressed here:
-
-* link:#giptw[General Deployment Functionality]
-* link:#gihzc[Deployment Descriptors and Annotations]
-* link:#gikhs[Modules and Applications]
-* link:#gijla[Access to Shared Framework Classes]
-* link:#gihzk[Naming Standards]
-* link:#gkhhv[Module and Application Versions]
-
-[[giptw]][[GSDPG00319]][[general-deployment-functionality]]
-
-General Deployment Functionality
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Various Java EE module types, such as connector module, web module, EJB
-module, application client module, can be deployed in the following
-ways:
-
-* Archive Deployment. Deploys the application as an archive file. For
-instructions, see link:deploying-applications.html#gijmq[To Deploy an
-Application or Module].
-* Dynamic Reloading. Redeploys the application by creating or modifying
-a special `.reload` file in the applications repository. For
-instructions, see link:deploying-applications.html#fwakh[To Reload
-Changes to Applications or Modules Dynamically].
-* Automatic Deployment. Deploys the application archive that is placed
-in the autodeployment directory. For instructions, see
-link:deploying-applications.html#fvxze[To Deploy an Application or Module
-Automatically].
-* Directory Deployment. Deploys the application in a directory format.
-For instructions, see link:deploying-applications.html#gilcn[To Deploy an
-Application or Module in a Directory Format].
-* JSR 88 Deployment. A deployment mechanism implemented based on the JSR
-88 standard from `jcp.org`. It delivers vendor neutral deployment
-options. See link:#beaee[JSR 88 Client] and link:#giiel[JSR 88 Naming].
-
-A deployment plan, which deploys a portable archive along with a
-deployment plan containing GlassFish Server deployment descriptors, can
-apply to any of these deployment techniques. For instructions, see
-link:deploying-applications.html#gijyb[To Deploy an Application or Module
-by Using a Deployment Plan].
-
-There are two work situations that require different safeguards and
-processes:
-
-* A development environment provides a loose set of tools and work
-spaces for a relatively small number of developers who are creating and
-testing applications and modules.
-* A production environment provides a stable, protected environment
-where applications are tuned to maximum efficiency for business use
-rather than for development.
-
-Some deployment methods that are used effectively in a development
-environment should not be used in production. In addition, whenever a
-reload is done, the sessions that are in transit become invalid, which
-might not be a concern for development, but can be a serious matter in
-production. The client must restart the session, another negative in a
-production environment.
-
-For production environments, any upgrade should be performed as a
-rolling upgrade, which upgrades applications and modules without
-interruption in service. For more information, see
-link:../ha-administration-guide/rolling-upgrade.html#GSHAG00010[Upgrading Applications Without Loss of Availability] in
-GlassFish Server Open Source Edition High Availability Administration
-Guide.
-
-[[gihzc]][[GSDPG00320]][[deployment-descriptors-and-annotations]]
-
-Deployment Descriptors and Annotations
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A deployment descriptor is an XML file that describes how a Java EE
-application or module should be deployed. Each deployment descriptor XML
-file has a corresponding Document Type Definition (DTD) file or schema
-(XSD) file, which defines the elements, data, and attributes that the
-deployment descriptor file can contain. The deployment descriptor
-directs a deployment tool to deploy a module or application with
-specific container options, and also describes specific configuration
-requirements that you must resolve.
-
-Because the information in a deployment descriptor is declarative, it
-can be changed without requiring modifications to source code. During
-deployment, GlassFish Server reads the information in the deployment
-descriptor and deploys the application or module as directed.
-
-The following types of deployment descriptors are associated with
-GlassFish Server:
-
-* Java EE Standard Descriptors. Java EE standard deployment descriptors
-are described in the Java EE 8 specification. You can find the
-specification at `http://www.oracle.com/technetwork/java/javaee/tech/`.
-Information about the XML schemas that define Java EE standard
-deployment descriptors is available at
-`http://xmlns.jcp.org/xml/ns/javaee/`. +
-The Java EE 8 specification permits the use of alternate top-level
-standard deployment descriptors that reside outside of the application
-archive using the `alt-dd` mechanism (alternate module-level deployment
-descriptors were permitted prior to Java EE 7). Alternate deployment
-descriptors are described in the Java EE 7 specification. You can find
-the specification at
-`http://www.oracle.com/technetwork/java/javaee/tech/`. Alternate
-deployment descriptors override the top-level deployment descriptors
-packaged in an application archive. For example, for EAR files, an
-alternate deployment descriptor overrides `application.xml`. For
-standalone modules, an alternate deployment descriptor overrides the
-top-level module descriptor, such as `web.xml`.
-* GlassFish Server Descriptors. GlassFish Server provides optional
-deployment descriptors for configuring features that are specific to
-GlassFish Server. For example, when you assemble an EJB module, you
-annotate or create two GlassFish Server deployment descriptor files with
-these names: `ejb-jar.xml` and `glassfish-ejb-jar.xml`. If the EJB
-component is an entity bean with container-managed persistence (CMP),
-you can also create a `.dbschema` file and a `sun-cmp-mapping.xml` file.
-For complete descriptions of these files and their elements, see
-link:dd-files.html#giida[GlassFish Server Deployment Descriptor Files]
-and link:dd-elements.html#beaqi[Elements of the GlassFish Server
-Deployment Descriptors]. +
-GlassFish Server also permits the use of alternate top-level GlassFish
-Server runtime deployment descriptors that reside outside of an
-application archive. Alternate GlassFish Server deployment descriptors
-override the top-level deployment descriptors packaged in the archive.
-For example, for EAR files, an alternate GlassFish Server deployment
-descriptor overrides `glassfish-application.xml`. For standalone
-modules, an alternate GlassFish Server deployment descriptor overrides
-the top-level module descriptor, such as `glassfish-web.xml`. The name
-of the GlassFish Server alternate deployment descriptor file must begin
-with `glassfish-`. Alternate deployment descriptors do not apply to
-`sun-*.xml` deployment descriptors. +
-Unless otherwise stated, settings in the GlassFish Server deployment
-descriptors override corresponding settings in the Java EE standard
-descriptors and in the GlassFish Server configuration.
-
-An annotation, also called metadata, enables a declarative style of
-programming. You can specify information within a class file by using
-annotations. When the application or module is deployed, the information
-can either be used or overridden by the deployment descriptor. GlassFish
-Server supports annotation according to the following specifications:
-
-* http://www.jcp.org/en/jsr/detail?id=250[JSR 250 Common Annotation
-Specification]
-* http://www.jcp.org/en/jsr/detail?id=181[JSR 181 Annotation for Web
-Services Specification]
-* http://www.jcp.org/en/jsr/detail?id=318[EJB 3.1 Specification]
-
-The following annotation and deployment descriptor combinations are
-supported:
-
-* Java EE applications or modules can be packaged with full Java EE
-compliant standard and runtime deployment descriptors. If the standard
-deployment descriptors have specified the `metadata-complete` attribute,
-annotations in the application or module are ignored.
-* Java EE applications or modules can be fully annotated with metadata
-defined by the listed specifications. Annotation eliminates the need for
-Java EE standard deployment descriptors. In most cases, the GlassFish
-Server deployment descriptors are also not needed.
-* Java EE applications or modules can be partially annotated with some
-deployment information in standard deployment descriptors. In case of
-conflicts, deployment descriptor values supersede the annotated
-metadata, and a warning message is logged.
-
-[[gikhs]][[GSDPG00321]][[modules-and-applications]]
-
-Modules and Applications
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-An application is a logical collection of one or more modules joined by
-application annotations or deployment descriptors. You assemble
-components into JAR, WAR, or RAR files, then combine these files and,
-optionally, deployment descriptors into an Enterprise archive (EAR) file
-which is deployed.
-
-A module is a collection of one or more Java EE components that run in
-the same container type, such as a web container or EJB container. The
-module uses annotations or deployment descriptors of that container
-type. You can deploy a module alone or as part of an application.
-
-The following topics are addressed here:
-
-* link:#beacv[Types of Modules]
-* link:#beacu[Module-Based Deployment]
-* link:#beacw[Application-Based Deployment]
-
-[[beacv]][[GSDPG00307]][[types-of-modules]]
-
-Types of Modules
-++++++++++++++++
-
-GlassFish Server supports the following types of modules:
-
-* Web Module. A web module, also known as a web application, is a
-collection of servlets, EJBs, HTML pages, classes, and other resources
-that you can bundle and deploy to several Java EE application servers. A
-web application archive (WAR) file is the standard format for assembling
-web applications. A WAR file can consist of the following items:
-servlets, JavaServer Pages (JSP) files, JSP tag libraries, utility
-classes, static pages, client-side applets, beans, bean classes,
-enterprise bean classes, plus annotations or web deployment descriptors
-(`web.xml` and `glassfish-web.xml`).
-* EJB Module. An EJB module is a deployable software unit that consists
-of one or more enterprise beans, plus an EJB deployment descriptor. A
-Java archive (JAR) file is the standard format for assembling enterprise
-beans. An EJB JAR file contains the bean classes (home, remote, local,
-and implementation), all of the utility classes, and annotations or
-deployment descriptors (`ejb-jar.xml` and `glassfish-ejb-jar.xml`). If
-the EJB component is a version 2.1 or earlier entity bean with container
-managed persistence (CMP), you can also include a `.dbschema` file and a
-CMP mapping descriptor (`sun-cmp-mapping.xml`).
-* Connector Module. A connector module, also known as a resource adapter
-module, is a deployable software unit that provides a portable way for
-EJB components to access foreign enterprise information system (EIS)
-data. A connector module consists of all Java interfaces, classes, and
-native libraries for implementing a resource module, plus a resource
-deployment descriptor. A resource adapter archive (RAR) is the standard
-format for assembling connector modules. Each GlassFish Server connector
-has annotations or a deployment descriptor file (`ra.xml`). +
-After deploying a J2EE connector module, you must configure it as
-described in link:../application-development-guide/connectors.html#GSDVG00013[Developing Connectors] in GlassFish Server
-Open Source Edition Application Development Guide.
-* Application Client Module. An application client module is a
-deployable software unit that consists of one or more classes, and
-application client deployment descriptors (`application-client.xml` and
-`glassfish-application-client.xml`). An application client JAR file
-applies to a GlassFish Server type of Java EE client. An application
-client supports the standard Java EE Application Client specifications.
-* Lifecycle Module. A lifecycle module provides a means of running
-short-duration or long-duration Java-based tasks within the GlassFish
-Server environment. Lifecycle modules are not Java EE standard modules.
-See link:../application-development-guide/lifecycle-listeners.html#GSDVG00014[Developing Lifecycle Listeners] in GlassFish Server
-Open Source Edition Application Development Guide for more information.
-
-[[beacu]][[GSDPG00308]][[module-based-deployment]]
-
-Module-Based Deployment
-+++++++++++++++++++++++
-
-You can deploy web, EJB, and application client modules separately,
-outside of any application. Module-based deployment is appropriate when
-components need to be accessed by other modules, applications, or
-application clients. Module-based deployment allows shared access to a
-bean from a web, EJB, or application client component.
-
-The following figure shows separately-deployed EJB, web, and application
-client modules.
-
-[[GSDPG00001]][[fwfdj]]
-
-
-.*Figure 1-1 Module-Based Assembly and Deployment*
-image:img/dgdeploy3.png[
-"Figure shows EJB, web, and application client module assembly and
-deployment."]
-
-
-[[beacw]][[GSDPG00309]][[application-based-deployment]]
-
-Application-Based Deployment
-++++++++++++++++++++++++++++
-
-Application-based deployment is appropriate when components need to work
-together as one unit.
-
-The following figure shows EJB, web, application client, and connector
-modules assembled into a Java EE application.
-
-[[GSDPG00002]][[fvyip]]
-
-
-.*Figure 1-2 Application-Based Assembly and Deployment*
-image:img/dgdeploya.png[
-"Figure shows Java EE application assembly and deployment."]
-
-
-[[gijla]][[GSDPG00322]][[access-to-shared-framework-classes]]
-
-Access to Shared Framework Classes
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-If you assemble a large, shared library into every module that uses it,
-the result is a huge file that takes too long to register with the
-server. In addition, several versions of the same class could exist in
-different class loaders, which is a waste of resources. When Java EE
-applications and modules use shared framework classes (such as utility
-classes and libraries), the classes can be put in the path for the
-common class loader or an application-specific class loader rather than
-in an application or module.
-
-To specify an application-specific library file during deployment, use
-the `--libraries` option of the `deploy` or `redeploy` subcommand of the
-`asadmin` command. To add a library JAR file to the Common class loader
-directory, the Java optional package directory, or the
-application-specific class loader directory, use the `add-library`
-subcommand. You can then list the libraries with `list-libraries` and
-remove the libraries with `remove-library`. For more information about
-all these commands, see the GlassFish Server Open Source Edition
-Reference Manual.
-
-For more information about class loaders, see link:../application-development-guide/class-loaders.html#GSDVG00003[Class
-Loaders] in GlassFish Server Open Source Edition Application Development
-Guide.
-
-
-[NOTE]
-=======================================================================
-
-According to the Java EE specification, section 8.1.1.2, "Dependencies,"
-you cannot package utility classes within an individually-deployed EJB
-module. Instead, you must package the EJB module and utility JAR within
-an application using the JAR Extension Mechanism Architecture.
-
-=======================================================================
-
-
-[[gihzk]][[GSDPG00323]][[naming-standards]]
-
-Naming Standards
-^^^^^^^^^^^^^^^^
-
-Names of applications and individually-deployed modules must be unique
-within a GlassFish Server domain. Modules within an application must
-have unique names. In addition, for enterprise beans that use
-container-managed persistence (CMP), the `.dbschema` file names must be
-unique within an application.
-
-You should use a hierarchical naming scheme for module file names, EAR
-file names, module names as found in the `module-name` portion of the
-`ejb-jar.xml` files, and EJB names as found in the `ejb-name` portion of
-the `ejb-jar.xml` files. This hierarchical naming scheme ensures that
-name collisions do not occur. The benefits of this naming practice apply
-not only to GlassFish Server, but to other Java EE application servers
-as well.
-
-The following topics are addressed here:
-
-* link:#gjjfg[Portable Naming]
-* link:#giidg[JNDI Naming]
-* link:#beada[Directory Structure]
-* link:#giiel[JSR 88 Naming]
-
-[[gjjfg]][[GSDPG00310]][[portable-naming]]
-
-Portable Naming
-+++++++++++++++
-
-Starting in Java EE 6, the Java EE specification defines the portable
-`application-name`, which allows you to specify an application name in
-the `application.xml` file. For example:
-
-[source,oac_no_warn]
-----
-<application-name>xyz</application-name>
-----
-
-The Java EE specification also defines the portable `module-name`
-element in the module standard deployment descriptors.
-
-GlassFish Server determines the application registration name according
-to the following order of precedence:
-
-1.  The name specified at deployment time in the Administration Console
-or in the `--name` option of the `asadmin deploy` command is used.
-2.  If no name is specified at deployment time, the portable
-`application-name` or `module-name` in the Java EE deployment descriptor
-is used.
-3.  If no name is specified at deployment time or in the deployment
-descriptors, the archive name, minus the file type suffix, is used.
-
-[[giidg]][[GSDPG00311]][[jndi-naming]]
-
-JNDI Naming
-+++++++++++
-
-Java Naming and Directory Interface (JNDI) lookup names for EJB
-components must also be unique. Establishing a consistent naming
-convention can help. For example, appending the application name and the
-module name to the EJB name is a way to guarantee unique names, such as,
-`jms/qConnPool`.
-
-[[beada]][[GSDPG00312]][[directory-structure]]
-
-Directory Structure
-+++++++++++++++++++
-
-Application and module directory structures must follow the structure
-outlined in the Java EE specification. During deployment, the
-application or module is expanded from the archive file to an open
-directory structure. The directories that hold the individual modules
-are named with `_jar`, `_rar`, and `_war` suffixes.
-
-If you deploy a directory instead of an EAR file, your directory
-structure must follow this same convention. For instructions on
-performing directory deployment, see
-link:deploying-applications.html#gilcn[To Deploy an Application or Module
-in a Directory Format].
-
-
-[[gkhhv]][[GSDPG00324]][[module-and-application-versions]]
-
-Module and Application Versions
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Application and module versioning allows multiple versions of the same
-application to exist in a GlassFish Server domain, which simplifies
-upgrade and rollback tasks. At most one version of an application or
-module can be enabled on a server any given time. Versioning provides
-extensions to tools for deploying, viewing, and managing multiple
-versions of modules and applications, including the Administration
-Console and deployment-related `asadmin` subcommands. Different versions
-of the same module or application can have the same context root or JNDI
-name. Use of versioning is optional.
-
-The following topics are addressed here:
-
-* link:#gkhmg[Version Identifiers and Expressions]
-* link:#gkhmm[Choosing the Enabled Version]
-* link:#gkhob[Versioning Restrictions and Limitations]
-
-[[gkhmg]][[GSDPG00314]][[version-identifiers-and-expressions]]
-
-Version Identifiers and Expressions
-+++++++++++++++++++++++++++++++++++
-
-The version identifier is a suffix to the module or application name. It
-is separated from the name by a colon (`:`). It must begin with a letter
-or number. It can contain alphanumeric characters plus underscore (`_`),
-dash (`-`), and period (`.`) characters. The following examples show
-valid version identifiers for the `foo` application:
-
-[source,oac_no_warn]
-----
-foo:1
-foo:BETA-2e
-foo:3.8
-foo:patch39875
-----
-
-A module or application without a version identifier is called the
-untagged version. This version can coexist with other versions of the
-same module or application that have version identifiers.
-
-In some deployment-related `asadmin` commands, you can use an asterisk
-(`*`) as a wildcard character to specify a version expression, which
-selects multiple version identifiers. Using the asterisk by itself after
-the colon selects all versions of a module or application, including the
-untagged version. The following table shows example version expressions
-and the versions they select.
-
-[width="100%",cols="33%,67%",options="header",]
-|==============================================================
-|Version Expression |Selected Versions
-|`foo:*` |All versions of `foo`, including the untagged version
-|`foo:BETA*` |All `BETA` versions of `foo`
-|`foo:3.*` |All `3.`x versions of `foo`
-|`foo:patch*` |All `patch` versions of `foo`
-|==============================================================
-
-
-The following table summarizes which `asadmin` subcommands are
-identifier-aware or expression-aware. All expression-aware subcommands
-are also identifier-aware.
-
-[width="100%",cols="50%,50%",options="header",]
-|======================================================================
-|Identifier-Aware Subcommands |Expression-Aware Subcommands
-|`deploy`, `deploydir`, `redeploy` |`undeploy`
-|`enable` |`disable`
-|`list-sub-components` |`show-component-status`
-|`get-client-stubs` |`create-application-ref`, `delete-application-ref`
-|======================================================================
-
-
-The `create-application-ref` subcommand is expression-aware only if the
-`--enabled` option is set to `false`. Because the `--enabled` option is
-set to `true` by default, the `create-application-ref` subcommand is
-identifier-aware by default.
-
-The `list-applications` and `list-application-refs` subcommands display
-information about all deployed versions of a module or application. To
-find out which version is enabled, use the `--long` option.
-
-[[gkhmm]][[GSDPG00315]][[choosing-the-enabled-version]]
-
-Choosing the Enabled Version
-++++++++++++++++++++++++++++
-
-At most one version of a module or application can be enabled on a
-server instance. All other versions are disabled. Enabling one version
-automatically disables all others. You can disable all versions of a
-module or application, leaving none enabled.
-
-The `--enabled` option of the `deploy` and `redeploy` subcommands is set
-to `true` by default. Therefore, simply deploying or redeploying a
-module or application with a new version identifier enables the new
-version and disables all others. To deploy a new version in a disabled
-state, set the `--enabled` option to `false`.
-
-To enable a version that has been deployed previously, use the `enable`
-subcommand.
-
-[[gkhob]][[GSDPG00316]][[versioning-restrictions-and-limitations]]
-
-Versioning Restrictions and Limitations
-+++++++++++++++++++++++++++++++++++++++
-
-Module and application versioning in GlassFish Server is subject to the
-following restrictions and limitations:
-
-* Use of the `--name` option is mandatory for modules and applications
-that use versioning. There is no automatic version identifier
-generation.
-* GlassFish Server does not recognize any relationship between versions
-such as previous or later versions. All version relationships must be
-tracked manually.
-* There is no limit to the number of versions you can deploy except what
-is imposed by disk space limits.
-* A module or application in a directory should not be deployed twice
-with a different version identifier. To redeploy a module or application
-from a directory with a new version, you must use the `--force` option
-of the `deploy` subcommand.
-* Database tables created or deleted as part of deployment and
-undeployment are global resources and cannot be qualified by an
-application version. Be very careful when using global resources among
-versions of the same application.
-* Web sessions are preserved during redeployment of a new version.
-However, preserving sessions among different versions of the same module
-or application is complex, because the key used for session variables is
-the same for the old and new versions.
-* Resources are created with reference to a resource-adapter's module or
-application name. This means that an older version's resources do not
-automatically refer to a newer version of the module or application.
-Therefore, you must explicitly create resources for a newer version of a
-module or application. GlassFish Server ignores duplicate exported
-global resources and lets deployment succeed.
-* OSGi already has its own versioning system. Therefore, when you deploy
-an OSGi bundle, GlassFish Server ignores any version information
-provided with the name but permits the deployment to succeed with
-warnings.
-
-[[giphm]][[GSDPG00062]][[about-assembly-and-deployment-events]]
-
-About Assembly and Deployment Events
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The deployment tools that are provided by GlassFish Server can be used
-by any user authorized as an administrator to deploy applications and
-modules into any GlassFish Server environment. However, effective
-application deployment requires planning and care. Only the developer
-knows exactly what is required by an application, so the developer is
-responsible for initial assembly and deployment.
-
-1.  Deployment Descriptor or Annotation Creation. The developer creates
-the deployment descriptors or equivalent annotations using Java
-standards and tools. +
-Details of the GlassFish Server deployment descriptors are contained in
-link:dd-files.html#giida[GlassFish Server Deployment Descriptor Files]
-and link:dd-elements.html#beaqi[Elements of the GlassFish Server
-Deployment Descriptors]. The GlassFish Server sample applications
-contain deployment descriptors that can be used as templates for
-developing deployment descriptors.
-2.  Assembly. The developer assembles the archive file(s) using Java
-standards and tools, such as the `jar` command. The application or
-module is packaged into a JAR, WAR, RAR, or EAR file. For guidelines on
-naming, see link:#gihzk[Naming Standards]. +
-There are no GlassFish Server issues to consider.
-3.  Test Deployment. The developer performs a test deployment of the
-archive. For instructions, see link:deploying-applications.html#gijmq[To
-Deploy an Application or Module].
-4.  Archive Submission. The developer submits the verified archive to
-the administrator for deployment into a production environment. The
-developer includes instructions for any additional deployment tasks that
-the administrator must perform. For an example of such additional
-instructions, see link:#gijla[Access to Shared Framework Classes].
-5.  Configuration. The administrator applies additional deployment
-specifics. Sometimes the developer has indicated additional deployment
-needs, such as specifying the production database. In this case, the
-administrator edits and reassembles the archive.
-6.  Production Deployment. The administrator deploys the archive to
-production. See link:deploying-applications.html#gijmq[To Deploy an
-Application or Module].
-7.  Troubleshooting. If deployment fails, the administrator returns the
-archive to the developer. The developer fixes the problem and resubmits
-the archive to the administrator. Sometimes the administrator resolves
-the problem, depending on what the problem is.
-
-[[giifh]][[GSDPG00063]][[about-deployment-tools]]
-
-About Deployment Tools
-~~~~~~~~~~~~~~~~~~~~~~
-
-GlassFish Server provides tools for assembling and deploying a module or
-application.
-
-The following topics are addressed here:
-
-* link:#giijz[Administration Console]
-* link:#giijf[The `asadmin` Utility]
-* link:#giijq[NetBeans IDE]
-* link:#gikwq[Eclipse IDE]
-* link:#beaee[JSR 88 Client]
-
-[[giijz]][[GSDPG00325]][[administration-console]]
-
-Administration Console
-^^^^^^^^^^^^^^^^^^^^^^
-
-The GlassFish Server Administration Console is a browser-based utility
-that features a graphical interface that includes extensive online help
-for the administrative tasks. The format for starting the Administration
-Console in a web browser is `http://`hostname`:`port. For example:
-
-[source,oac_no_warn]
-----
-http://localhost:4848
-----
-
-Step-by-step instructions for using the Administration Console for
-deployment are provided in the Administration Console online help. You
-can display the help material for a page by clicking the Help button.
-The initial help page describes the functions and fields of the page
-itself. To find instructions for performing associated tasks, click a
-link in the See Also list.
-
-[[giijf]][[GSDPG00326]][[the-asadmin-utility]]
-
-The `asadmin` Utility
-^^^^^^^^^^^^^^^^^^^^^
-
-The GlassFish Server `asadmin` utility is a command-line tool that
-invokes subcommands for identifying the operation or task that you want
-to perform. You can run `asadmin` commands either from a command prompt
-or from a script. The format for starting the `asadmin` utility on the
-command line is as-install`/bin/asadmin` subcommand --option. For
-example:
-
-[source,oac_no_warn]
-----
-asadmin list-applications --type web
-----
-
-Application deployment commands are listed in
-link:asadmin-deployment-subcommands.html#gihzw[The `asadmin` Deployment
-Subcommands]. All GlassFish Server `asadmin` subcommands are documented
-in the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference
-Manual].
-
-For the most part, you can perform the same administrative tasks by
-using either the graphical Administration Console or the `asadmin`
-command-line utility, however, there are exceptions. Procedures for
-using the command-line utilities are provided in this guide and in the
-command-line help pages, which are similar to man pages. You can display
-the help material for a command by typing help followed by the
-subcommand. For example:
-
-[source,oac_no_warn]
-----
-asadmin help list-applications
-----
-
-For additional information on the `asadmin` utility, see
-"link:../administration-guide/general-administration.html#GSADG00530[Using the `asadmin` Utility]" in GlassFish Server Open
-Source Edition Administration Guide and the
-link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] help page.
-
-[[giijq]][[GSDPG00329]][[netbeans-ide]]
-
-NetBeans IDE
-^^^^^^^^^^^^
-
-You can use the NetBeans Integrated Development Environment (IDE), or
-another IDE, to assemble Java EE applications and modules. The NetBeans
-IDE is included in the tools bundle of the Java EE Software Development
-Kit (SDK). To download, see
-`http://www.oracle.com/technetwork/java/javaee/downloads/index.html`.
-For additional information, see `http://www.netbeans.org`.
-
-[[gikwq]][[GSDPG00330]][[eclipse-ide]]
-
-Eclipse IDE
-^^^^^^^^^^^
-
-In addition to the bundled NetBeans IDE, a plug-in for the Eclipse IDE
-extends GlassFish to the Eclipse community.
-
-[[beaee]][[GSDPG00331]][[jsr-88-client]]
-
-JSR 88 Client
-^^^^^^^^^^^^^
-
-The syntax of the URI entry for the `getDeploymentManager` method is as
-follows:
-
-[source,oac_no_warn]
-----
-deployer:Sun:AppServer::admin-host:admin-port[:https]
-----
-
-For example:
-
-[source,oac_no_warn]
-----
-deployer:Sun:AppServer::localhost:4848:https
-----
-
-[[gipud]][[GSDPG00064]][[additional-information-on-application-deployment]]
-
-Additional Information on Application Deployment
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-As specified from Java EE 8 specifications, the relevant specifications
-are the following:
-
-* Java Platform, Enterprise Edition 8 Specification +
-`https://jcp.org/en/jsr/detail?id=366`
-* Java EE Application Deployment JSR 88 Specification +
-`http://jcp.org/en/jsr/detail?id=88`
-* Common Annotations for the Java Platform 1.6 Specification +
-`http://jcp.org/en/jsr/detail?id=250`
-* Java Servlet 3.0 Specification +
-`http://jcp.org/en/jsr/detail?id=315`
-* Enterprise JavaBeans 3.1 Specification +
-`http://jcp.org/en/jsr/detail?id=318`
-* Java EE Connector Architecture 1.6 Specification +
-`http://jcp.org/en/jsr/detail?id=322`
-
-The following product documentation might be relevant to some aspects of
-application deployment:
-
-* link:../application-development-guide/toc.html#GSDVG[GlassFish Server Open Source Edition Application
-Development Guide]
-* link:../administration-guide/toc.html#GSADG[GlassFish Server Open Source Edition Administration Guide]
-* link:../add-on-component-development-guide/toc.html#GSACG[GlassFish Server Open Source Edition Add-On Component
-Development Guide]
-* link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual]
-* GlassFish Server Administration Console online help
-
-
diff --git a/docs/application-deployment-guide/src/main/jbake/content/preface.adoc b/docs/application-deployment-guide/src/main/jbake/content/preface.adoc
deleted file mode 100644
index d80420d..0000000
--- a/docs/application-deployment-guide/src/main/jbake/content/preface.adoc
+++ /dev/null
@@ -1,292 +0,0 @@
-type=page
-status=published
-title=Preface
-next=overview.html
-prev=title.html
-~~~~~~
-Preface
-=======
-
-[[GSDPG806]][[sthref2]]
-
-
-[[preface]]
-Preface
--------
-
-[NOTE]
-========================================================================
-
-This documentation is part of the Java Enterprise Edition contribution 
-to the Eclipse Foundation and is not intended for use in relation to 
-Java Enterprise Edition or Orace GlassFish. The documentation is in the 
-process of being revised to reflect the new Jakarta EE branding. 
-Additional changes will be made as requirements and procedures evolve 
-for Jakarta EE. Where applicable, references to Java EE or Java 
-Enterprise Edition should be considered references to Jakarta EE. 
-
-Please see the Title page for additional license information.
-========================================================================
-
-This Application Deployment Guide describes deployment of applications
-and application components to GlassFish Server Open Source Edition, and
-includes information about deployment descriptors.
-
-This preface contains information about and conventions for the entire
-GlassFish Server Open Source Edition (GlassFish Server) documentation
-set.
-
-GlassFish Server 5.0 is developed through the GlassFish project
-open-source community at `https://github.com/javaee/glassfish`. The
-GlassFish project provides a structured process for developing the
-GlassFish Server platform that makes the new features of the Java EE
-platform available faster, while maintaining the most important feature
-of Java EE: compatibility. It enables Java developers to access the
-GlassFish Server source code and to contribute to the development of the
-GlassFish Server. The GlassFish project is designed to encourage
-communication between Oracle engineers and the community.
-
-* link:#ghpbz[GlassFish Server Documentation Set]
-* link:#giprl[Related Documentation]
-* link:#fwbkx[Typographic Conventions]
-* link:#fquvc[Symbol Conventions]
-* link:#ghpfg[Default Paths and File Names]
-
-[[GSDPG00053]][[ghpbz]]
-
-
-[[glassfish-server-documentation-set]]
-GlassFish Server Documentation Set
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The GlassFish Server documentation set describes deployment planning and
-system installation. For an introduction to GlassFish Server, refer to
-the books in the order in which they are listed in the following table.
-
-[width="100%",cols="30%,70%",options="header",]
-|=======================================================================
-|Book Title |Description
-|link:../release-notes/toc.html#GSRLN[Release Notes] |Provides late-breaking information about
-the software and the documentation and includes a comprehensive,
-table-based summary of the supported hardware, operating system, Java
-Development Kit (JDK), and database drivers.
-
-|link:../quick-start-guide/toc.html#GSQSG[Quick Start Guide] |Explains how to get started with the
-GlassFish Server product.
-
-|link:../installation-guide/toc.html#GSING[Installation Guide] |Explains how to install the software
-and its components.
-
-|link:../administration-guide/toc.html#GSADG[Administration Guide] |Explains how to configure, monitor,
-and manage GlassFish Server subsystems and components from the command
-line by using the link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`] utility. Instructions for
-performing these tasks from the Administration Console are provided in
-the Administration Console online help.
-
-|link:../security-guide/toc.html#GSSCG[Security Guide] |Provides instructions for configuring and
-administering GlassFish Server security.
-
-|link:../application-deployment-guide/toc.html#GSDPG[Application Deployment Guide] |Explains how to assemble and
-deploy applications to the GlassFish Server and provides information
-about deployment descriptors.
-
-|link:../application-development-guide/toc.html#GSDVG[Application Development Guide] |Explains how to create and
-implement Java Platform, Enterprise Edition (Java EE platform)
-applications that are intended to run on the GlassFish Server. These
-applications follow the open Java standards model for Java EE components
-and application programmer interfaces (APIs). This guide provides
-information about developer tools, security, and debugging.
-
-| |
-
-|link:../error-messages-reference/toc.html#GSEMR[Error Message Reference] |Describes error messages that you
-might encounter when using GlassFish Server.
-
-|link:../reference-manual/toc.html#GSRFM[Reference Manual] |Provides reference information in man
-page format for GlassFish Server administration commands, utility
-commands, and related concepts.
-
-|link:../../openmq/mq-release-notes/toc.html#GMRLN[Message Queue Release Notes] |Describes new features,
-compatibility issues, and existing bugs for Open Message Queue.
-|=======================================================================
-
-
-[[GSDPG00054]][[giprl]]
-
-
-[[related-documentation]]
-Related Documentation
-~~~~~~~~~~~~~~~~~~~~~
-
-The following tutorials explain how to develop Java EE applications:
-
-* https://javaee.github.io/firstcup/[Your First Cup: An Introduction to
-the Java EE Platform] (`https://javaee.github.io/firstcup/`). For
-beginning Java EE programmers, this short tutorial explains the entire
-process for developing a simple enterprise application. The sample
-application is a web application that consists of a component that is
-based on the Enterprise JavaBeans specification, a JAX-RS web service,
-and a JavaServer Faces component for the web front end.
-* https://javaee.github.io/tutorial/[The Java EE 8 Tutorial]
-(`https://javaee.github.io/tutorial/`). This comprehensive tutorial
-explains how to use Java EE 8 platform technologies and APIs to develop
-Java EE applications.
-
-Javadoc tool reference documentation for packages that are provided with
-GlassFish Server is available as follows.
-
-* The API specification for version 8 of Java EE is located at
-`https://javaee.github.io/javaee-spec/`.
-* The API specification for GlassFish Server 5.0, including Java EE 8
-platform packages and nonplatform packages that are specific to the
-GlassFish Server product, is located at
-`https://javaee.github.io/glassfish/documentation`.
-
-For information about creating enterprise applications in the NetBeans
-Integrated Development Environment (IDE), see the
-http://www.netbeans.org/kb/[NetBeans Documentation, Training & Support
-page] (`http://www.netbeans.org/kb/`).
-
-For information about the Apache Derby database for use with the
-GlassFish Server, see the
-http://www.oracle.com/technetwork/java/javadb/overview/index.html[Apache
-Derby product page] (`http://db.apache.org/derby/`).
-
-The Java EE Samples project is a collection of sample applications that
-demonstrate a broad range of Java EE technologies. The Java EE Samples
-are bundled with the Java EE Software Development Kit (SDK) and are also
-available from the https://github.com/javaee/glassfish-samples[Java EE
-Samples project page] (`https://github.com/javaee/glassfish-samples`).
-
-[[GSDPG00055]][[fwbkx]]
-
-
-[[typographic-conventions]]
-Typographic Conventions
-~~~~~~~~~~~~~~~~~~~~~~~
-
-The following table describes the typographic changes that are used in
-this book.
-
-[width="100%",cols="14%,37%,49%",options="header",]
-|=======================================================================
-|Typeface |Meaning |Example
-|`AaBbCc123` |The names of commands, files, and directories, and
-onscreen computer output a|
-Edit your `.login` file.
-
-Use `ls` `a` to list all files.
-
-`machine_name% you have mail.`
-
-|`AaBbCc123` |What you type, contrasted with onscreen computer output a|
-`machine_name%` `su`
-
-`Password:`
-
-|AaBbCc123 |A placeholder to be replaced with a real name or value |The
-command to remove a file is `rm` filename.
-
-|AaBbCc123 |Book titles, new terms, and terms to be emphasized (note
-that some emphasized items appear bold online) a|
-Read Chapter 6 in the User's Guide.
-
-A cache is a copy that is stored locally.
-
-Do not save the file.
-
-|=======================================================================
-
-
-[[GSDPG00056]][[fquvc]]
-
-
-[[symbol-conventions]]
-Symbol Conventions
-~~~~~~~~~~~~~~~~~~
-
-The following table explains symbols that might be used in this book.
-
-[width="100%",cols="10%,26%,28%,36%",options="header",]
-|=======================================================================
-|Symbol |Description |Example |Meaning
-|`[ ]` |Contains optional arguments and command options. |`ls [-l]` |The
-`-l` option is not required.
-
-|`{ \| }` |Contains a set of choices for a required command option.
-|`-d {y\|n}` |The `-d` option requires that you use either the `y`
-argument or the `n` argument.
-
-|`${ }` |Indicates a variable reference. |`${com.sun.javaRoot}`
-|References the value of the `com.sun.javaRoot` variable.
-
-|- |Joins simultaneous multiple keystrokes. |Control-A |Press the
-Control key while you press the A key.
-
-|+ + |Joins consecutive multiple keystrokes. |Ctrl+A+N |Press the
-Control key, release it, and then press the subsequent keys.
-
-|> |Indicates menu item selection in a graphical user interface. |File >
-New > Templates |From the File menu, choose New. From the New submenu,
-choose Templates.
-|=======================================================================
-
-
-[[GSDPG00057]][[ghpfg]]
-
-
-[[default-paths-and-file-names]]
-Default Paths and File Names
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following table describes the default paths and file names that are
-used in this book.
-
-[width="100%",cols="14%,34%,52%",options="header",]
-|=======================================================================
-|Placeholder |Description |Default Value
-|as-install + a|
-Represents the base installation directory for GlassFish Server.
-
-In configuration files, as-install is represented as follows:
-
-`${com.sun.aas.installRoot}`
-
- a|
-Installations on the Oracle Solaris operating system, Linux operating
-system, and Mac OS operating system:
-
-user's-home-directory`/glassfish3/glassfish`
-
-Installations on the Windows operating system:
-
-SystemDrive`:\glassfish3\glassfish`
-
-|as-install-parent + |Represents the parent of the base installation
-directory for GlassFish Server. a|
-Installations on the Oracle Solaris operating system, Linux operating
-system, and Mac operating system:
-
-user's-home-directory`/glassfish3`
-
-Installations on the Windows operating system:
-
-SystemDrive`:\glassfish3`
-
-|domain-root-dir + |Represents the directory in which a domain is
-created by default. |as-install`/domains/`
-
-|domain-dir + a|
-Represents the directory in which a domain's configuration is stored.
-
-In configuration files, domain-dir is represented as follows:
-
-`${com.sun.aas.instanceRoot}`
-
- |domain-root-dir`/`domain-name
-
-|instance-dir + |Represents the directory for a server instance.
-|domain-dir`/`instance-name
-|=======================================================================
-
-
diff --git a/docs/application-deployment-guide/src/main/jbake/content/title.adoc b/docs/application-deployment-guide/src/main/jbake/content/title.adoc
deleted file mode 100644
index 4aaf46e..0000000
--- a/docs/application-deployment-guide/src/main/jbake/content/title.adoc
+++ /dev/null
@@ -1,47 +0,0 @@
-type=page
-status=published
-title=Eclipse GlassFish Server Application Deployment Guide, Release 5.1
-next=preface.html
-prev=lot.html
-~~~~~~
-Eclipse GlassFish Server Application Deployment Guide, Release 5.1
-==================================================================
-
-[[eclipse-glassfish-server]]
-Eclipse GlassFish Server
-------------------------
-
-Application Deployment Guide
-
-Release 5.1
-
-Contributed 2018, 2019
-
-This Application Deployment Guide describes deployment of applications
-and application components to Eclipse GlassFish Server, and
-includes information about deployment descriptors.
-
-[[sthref1]]
-
-'''''
-
-Eclipse GlassFish Server Application Deployment Guide,
-Release 5.1
-
-Copyright © 2013, 2019 Oracle and/or its affiliates. All rights reserved.
-
-This program and the accompanying materials are made available under the 
-terms of the Eclipse Public License v. 2.0, which is available at 
-http://www.eclipse.org/legal/epl-2.0. 
-
-SPDX-License-Identifier: EPL-2.0
-
-Oracle and Java are registered trademarks of Oracle and/or its 
-affiliates. Other names may be trademarks of their respective owners. 
-
-Intel and Intel Xeon are trademarks or registered trademarks of Intel 
-Corporation. All SPARC trademarks are used under license and are 
-trademarks or registered trademarks of SPARC International, Inc. AMD, 
-Opteron, the AMD logo, and the AMD Opteron logo are trademarks or 
-registered trademarks of Advanced Micro Devices. UNIX is a registered 
-trademark of The Open Group. 
diff --git a/docs/application-deployment-guide/src/main/jbake/jbake.properties b/docs/application-deployment-guide/src/main/jbake/jbake.properties
deleted file mode 100644
index 546d09c..0000000
--- a/docs/application-deployment-guide/src/main/jbake/jbake.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-site.host=http://jbake.org
-render.tags=false
-render.sitemap=false
-render.archive=false
-render.feed=false
-asciidoctor.option.safe=0
-asciidoctor.attributes.export=true
diff --git a/docs/application-deployment-guide/src/main/jbake/templates/footer.ftl b/docs/application-deployment-guide/src/main/jbake/templates/footer.ftl
deleted file mode 100644
index 6f2b09e..0000000
--- a/docs/application-deployment-guide/src/main/jbake/templates/footer.ftl
+++ /dev/null
@@ -1,46 +0,0 @@
-<#-- a footer template fragment included in the page template -->
-<hr />
-
-<table width="90%" id="bottom-nav" cellspacing="0" cellpadding="0">
-	<colgroup>
-		<col width="12%"/>
-		<col width="12%"/>
-		<col width="*"/>
-	</colgroup>
-	<tr>		
-	    <#if content.prev??>
-		<td align="left">
-		<a href="${content.prev}">
-			<span class=" vector-font"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Previous</span>
-		</a>
-		</td>
-		</#if>
-
-		<#if content.next??>
-		<td align="left">
-		<a href="${content.next}">
-			<span class="vector-font"><i class="fa fa-arrow-circle-right vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Next</span>
-		</a>
-		</td>
-		</#if>
-
-		<td align="right">
-		<a href="toc.html">
-			<span class="vector-font"><i class="fa fa-list vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Contents</span>
-		</a>
-		</td>
-	</tr>
-</table>
-
-<span id="copyright">
-        <img src="img/eclipse_foundation_logo_tiny.png" height="20px" alt="Eclipse Foundation Logo" align="top"/>&nbsp;            
-        <span >Copyright&nbsp;&copy;&nbsp;2019,&nbsp;Oracle&nbsp;and/or&nbsp;its&nbsp;affiliates.&nbsp;All&nbsp;rights&nbsp;reserved.</span>
-</span>
-
-<p align="center" class="beta">${config.status!}</p>
-
-</body>
-</html>
diff --git a/docs/application-deployment-guide/src/main/jbake/templates/header.ftl b/docs/application-deployment-guide/src/main/jbake/templates/header.ftl
deleted file mode 100644
index 82ebb36..0000000
--- a/docs/application-deployment-guide/src/main/jbake/templates/header.ftl
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html>
-<#-- a header template fragment included in the page template -->
-<html lang="en">
-  <head>
-    <meta charset="utf-8"/>
-    <title><#if (content.title)??><#escape x as x?xml>${content.title}</#escape></#if></title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <link href="<#if (content.rootpath)??>${content.rootpath}<#else></#if>css/style.css" rel="stylesheet">
-    <script src="https://use.fontawesome.com/96c4d89611.js"></script>
-  </head>
-  <body>
-<table id="doc-title" cellspacing="0" cellpadding="0">
-  <tr>
-  <td align="left" valign="top">
-  <b>${content.title}</b><br />
-      <p class="beta">${config.status!}</p>
-  </td>
-  </tr>
-</table>
-<hr />
-
-<table width="90%" id="top-nav" cellspacing="0" cellpadding="0">
-	<colgroup>
-		<col width="12%"/>
-		<col width="12%"/>
-		<col width="*"/>
-	</colgroup>
-	<tr>
-	    <#if content.prev??>
-		<td align="left">
-		<a href="${content.prev}">
-			<span class="vector-font"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Previous</span>
-		</a>
-		</td>
-	    </#if>
-
-	    <#if content.next??>
-		<td align="left">
-		<a href="${content.next}">
-			<span class=" vector-font"><i class="fa fa-arrow-circle-right vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Next</span>
-		</a>
-		</td>
-	    </#if>
-
-		<td align="right">
-		<a href="toc.html">
-			<span class=" vector-font"><i class="fa fa-list vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Contents</span>
-		</a>
-		</td>
-	</tr>
-</table>
-
diff --git a/docs/application-deployment-guide/src/main/jbake/templates/menu.ftl b/docs/application-deployment-guide/src/main/jbake/templates/menu.ftl
deleted file mode 100644
index 888c03d..0000000
--- a/docs/application-deployment-guide/src/main/jbake/templates/menu.ftl
+++ /dev/null
@@ -1 +0,0 @@
-<#-- a menu bar template fragment included in the page template -->
\ No newline at end of file
diff --git a/docs/application-deployment-guide/src/main/jbake/templates/page.ftl b/docs/application-deployment-guide/src/main/jbake/templates/page.ftl
deleted file mode 100644
index eca51db..0000000
--- a/docs/application-deployment-guide/src/main/jbake/templates/page.ftl
+++ /dev/null
@@ -1,8 +0,0 @@
-<#-- a top level page layout template -->
-
-<#include "header.ftl">
-<#include "menu.ftl">
-
-${content.body}
-
-<#include "footer.ftl">
\ No newline at end of file
diff --git a/docs/application-development-guide/README.md b/docs/application-development-guide/README.md
deleted file mode 100644
index a3ec2b6..0000000
--- a/docs/application-development-guide/README.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# A JBake project template
-
-## About JBake
-
-JBake is a static site generator, it's inspired from jekyll and written
-in java.  The basic idea is to have templates for the structure of the
-page, and the body generated from asciidoc content.
-
-## Pre requisites
-
-- Maven
-- JDK8+
-
-Deploying to Github will require password less authentication.
-
-This is done by exporting your SSH public key into your Github account.
-
-## Build the site locally
-
-The site is generated under target/staging.
-
-Open file:///PATH_TO_PROJECT_DIR/target/staging in a browser to view the site.
-
-```
-mvn generate-resources
-```
-
-Or you can invoke the JBake plugin directly.
-
-```
-mvn jbake:build
-```
-
-### Rebuild the site on changes
-
-```
-mvn jbake:watch
-```
-
-If you keep this command running, changes to the sources will be
-detected and the site will be rendered incrementally.
-
-This is convenient when writing content.
-
-### Serve the site locally
-
-```
-mvn jbake:serve
-```
-
-If a webserver is required (e.g. absolute path are used), this command
-will start a webserver (jetty) at http://localhost:8820.  It will also
-watch for changes and rebuild incrementally.
-
-## Deploy the site to Github Pages
-
-```
-mvn deploy
-```
-
-## Produce a zip file for download
-
-To produce a zip file containing the generated html files, use:
-
-```
-mvn package
-```
-
-When making a release on GitHub, this zip file should be added to the release.
-
-## Links
-
-- [JBake maven plugin documentation](https://github.com/Blazebit/jbake-maven-plugin)
-- [JBake documentation](http://jbake.org/docs/2.5.1)
-- [Freemarker documentation](http://freemarker.org/docs)
-- [AsciiDoc User Guide](http://asciidoc.org/userguide.html)
-- [Asciidoctor quick reference](http://asciidoctor.org/docs/asciidoc-syntax-quick-reference)
diff --git a/docs/application-development-guide/pom.xml b/docs/application-development-guide/pom.xml
index c60bea6..579d2ae 100644
--- a/docs/application-development-guide/pom.xml
+++ b/docs/application-development-guide/pom.xml
@@ -22,11 +22,10 @@
     <parent>
         <groupId>org.glassfish.docs</groupId>
         <artifactId>parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../parent</relativePath>
     </parent>
-    <groupId>org.glassfish.docs</groupId>
     <artifactId>application-development-guide</artifactId>
     <packaging>jar</packaging>
-    <name>Eclipse GlassFish Server Application Development Guide, Release 5.1</name>
+    <name>Eclipse GlassFish Server Application Development Guide, Release 7</name>
 </project>
diff --git a/docs/application-development-guide/src/main/asciidoc/class-loaders.adoc b/docs/application-development-guide/src/main/asciidoc/class-loaders.adoc
new file mode 100644
index 0000000..03f3503
--- /dev/null
+++ b/docs/application-development-guide/src/main/asciidoc/class-loaders.adoc
@@ -0,0 +1,412 @@
+type=page
+status=published
+title=Class Loaders
+next=debugging-apps.html
+prev=setting-up-dev-env.html
+~~~~~~
+
+= Class Loaders
+
+[[GSDVG00003]][[beade]]
+
+
+[[class-loaders]]
+== 2 Class Loaders
+
+Understanding {productName} class loaders can help you
+determine where to place supporting JAR and resource files for your
+modules and applications.
+
+In a JVM implementation, the class loaders dynamically load a specific
+Java class file needed for resolving a dependency. For example, when an
+instance of `java.util.Enumeration` needs to be created, one of the
+class loaders loads the relevant class into the environment.
+
+The following topics are addressed here:
+
+* link:#beadf[The Class Loader Hierarchy]
+* link:#gfqpi[Delegation]
+* link:#beadk[Using the Java Optional Package Mechanism]
+* link:#beadg[Class Loader Universes]
+* link:#gatej[Application-Specific Class Loading]
+* link:#beadh[Circumventing Class Loader Isolation]
+
+
+[NOTE]
+====
+The Web Profile of the {productName} supports the EJB 3.1 Lite
+specification, which allows enterprise beans within web applications,
+among other features. The full {productName} supports the entire EJB
+3.1 specification. For details, see
+http://jcp.org/en/jsr/detail?id=318[JSR 318]
+(`http://jcp.org/en/jsr/detail?id=318`).
+====
+
+
+For information about class loader debugging, see
+link:debugging-apps.html#gkpdk[Class Loader Debugging].
+
+[[beadf]][[GSDVG00094]][[the-class-loader-hierarchy]]
+
+=== The Class Loader Hierarchy
+
+Class loaders in the {productName} runtime follow a delegation
+hierarchy that is illustrated in the following figure and fully
+described in link:#fvxzq[Table 2-1].
+
+The following table describes the class loaders in the {productName}.
+
+[[GSDVG531]][[sthref4]][[fvxzq]]
+
+
+Table 2-1 {productName} Class Loaders
+
+[width="100%",cols="20%,80%",options="header",]
+|===
+|Class Loader |Description
+|Bootstrap |The Bootstrap class loader loads the basic runtime classes
+provided by the JVM software.
+
+|Extension |The Extension class loader loads classes from JAR files
+present in the system extensions directory, domain-dir``/lib/ext``. It is
+parent to the Public API class loader. See link:#beadk[Using the Java
+Optional Package Mechanism].
+
+|Public API |The Public API class loader makes available all classes
+specifically exported by the {productName} runtime for use by
+deployed applications. This includes, but is not limited to, Jakarta EE
+APIs and other Oracle APIs. It is parent to the Common class loader.
+
+|Common |The Common class loader loads JAR files in the as-install``/lib``
+directory, followed by JAR files in the domain-dir``/lib`` directory.
+Using domain-dir``/lib`` is recommended whenever possible, and required
+for custom login modules and realms. It is parent to the Connector class
+loader. See link:#beadj[Using the Common Class Loader].
+
+|Connector |The Connector class loader is a single class loader instance
+that loads individually deployed connector modules, which are shared
+across all applications. It is parent to the Applib class loader and the
+LifeCycleModule class loader.
+
+|LifeCycleModule |The LifeCycleModule class loader is created once per
+lifecycle module. Each lifecycle module's classpath is used to construct
+its own class loader. For more information on lifecycle modules, see
+link:lifecycle-listeners.html#beamc[Developing Lifecycle Listeners].
+
+|Applib a|
+The Applib class loader loads the library classes, specified during
+deployment, for a specific enabled module or Jakarta EE application; see
+link:#gatej[Application-Specific Class Loading]. One instance of this
+class loader is present in each class loader universe; see
+link:#beadg[Class Loader Universes]. It is parent to the Archive class loader.
+
+When multiple deployed applications use the same library, they share the
+same instance of the library. One library cannot reference classes from
+another library.
+
+|Archive |The Archive class loader loads classes from the WAR, EAR, and
+JAR files or directories (for directory deployment) of applications or
+modules deployed to the {productName}. This class loader also loads
+any application-specific classes generated by the {productName}
+runtime, such as stub classes or servlets generated by JSP pages.
+|===
+
+
+In previous {productName} versions, the JVM options provided
+`classpath-prefix` and `classpath-suffix` attributes that made it
+possible to add JAR files or directories either in front of, or after
+the application server's system `classpath`. These options are not
+present in {productName} 6.0.
+
+The `classpath-prefix` was typically used to substitute another package
+for one of the {productName} packages, for example if a newer one was
+available. This same result can be achieved on a per-application basis with the
+`--libraries` option for the `deploy` subcommand. For more information,
+see the link:reference-manual/deploy.html#GSRFM00114[`deploy`(1)] help page.
+The Java Optional Package Mechanism does what `classpath-suffix` used to do. For more
+information, see link:#beadk[Using the Java Optional Package Mechanism].
+
+[[gfqpi]][[GSDVG00095]][[delegation]]
+
+=== Delegation
+
+Note that the class loader hierarchy is not a Java inheritance
+hierarchy, but a delegation hierarchy. In the delegation design, a class
+loader delegates class loading to its parent before attempting to load a
+class itself. If the parent class loader cannot load a class, the class
+loader attempts to load the class itself. In effect, a class loader is
+responsible for loading only the classes not available to the parent.
+Classes loaded by a class loader higher in the hierarchy cannot refer to
+classes available lower in the hierarchy.
+
+The Java Servlet specification recommends that a web module's class
+loader look in the local class loader before delegating to its parent.
+You can make this class loader follow the delegation inversion model in
+the Servlet specification by setting `delegate="false"` in the
+`class-loader` element of the `glassfish-web.xml` file. It is safe to do
+this only for a web module that does not interact with any other
+modules. For details, see "link:application-deployment-guide/dd-elements.html#GSDPG00110[class-loader]" in {productName} Application Deployment Guide.
+
+The default value is `delegate="true"`, which causes a web module's
+class loader to delegate in the same manner as the other class loaders.
+You must use `delegate="true"` for a web application that accesses EJB
+components or that acts as a web service client or endpoint. For details
+about `glassfish-web.xml`, see the link:application-deployment-guide.html#GSDPG[{productName} Application Deployment Guide].
+
+For a number of packages, including `java.*` and `javax.*`, symbol
+resolution is always delegated to the parent class loader regardless of
+the `delegate` setting. This prevents applications from overriding core
+Java runtime classes or changing the API versions of specifications that
+are part of the Jakarta EE platform.
+
+[[beadk]][[GSDVG00096]][[using-the-java-optional-package-mechanism]]
+
+=== Using the Java Optional Package Mechanism
+
+Optional packages are packages of Java classes and associated native
+code that application developers can use to extend the functionality of
+the core platform.
+
+To use the Java optional package mechanism, copy the JAR files into the
+domain-dir``/lib/ext`` directory, or use the `asadmin add-library` command
+with the `--type ext` option, then restart the server. For more
+information about the `asadmin add-library` command, see the {productName} Reference Manual.
+
+For more information, see
+http://docs.oracle.com/javase/8/docs/technotes/guides/extensions/extensions.html[Optional
+Packages - An Overview]
+(`http://docs.oracle.com/javase/8/docs/technotes/guides/extensions/extensions.html`)
+and
+http://download.oracle.com/javase/tutorial/ext/basics/load.html[Understanding
+Extension Class Loading]
+(`http://docs.oracle.com/javase/tutorial/ext/basics/load.html`).
+
+[[gchif]][[GSDVG00097]][[using-the-endorsed-standards-override-mechanism]]
+
+=== Using the Endorsed Standards Override Mechanism
+
+Endorsed standards handle changes to classes and APIs that are bundled
+in the JDK but are subject to change by external bodies.
+
+To use the endorsed standards override mechanism, copy the JAR files
+into the domain-dir`/lib/endorsed` directory, then restart the server.
+
+For more information and the list of packages that can be overridden,
+see
+http://docs.oracle.com/javase/8/docs/technotes/guides/standards/[Endorsed
+Standards Override Mechanism]
+(`http://docs.oracle.com/javase/8/docs/technotes/guides/standards/`).
+
+[[beadg]][[GSDVG00098]][[class-loader-universes]]
+
+=== Class Loader Universes
+
+Access to components within applications and modules installed on the
+server occurs within the context of isolated class loader universes,
+each of which has its own Applib and Archive class loaders.
+
+* Application Universe - Each Jakarta EE application has its own class
+loader universe, which loads the classes in all the modules in the
+application.
+* Individually Deployed Module Universe - Each individually deployed EJB
+JAR or web WAR has its own class loader universe, which loads the
+classes in the module.
+
+A resource such as a file that is accessed by a servlet, JSP, or EJB
+component must be in one of the following locations:
+
+* A directory pointed to by the Libraries field or `--libraries` option
+used during deployment
+* A directory pointed to by the `library-directory` element in the
+`application.xml` deployment descriptor
+* A directory pointed to by the application or module's classpath; for
+example, a web module's classpath includes these directories:
++
+[source]
+----
+module-name/WEB-INF/classes
+module-name/WEB-INF/lib
+----
+
+[[gatej]][[GSDVG00099]][[application-specific-class-loading]]
+
+=== Application-Specific Class Loading
+
+You can specify module- or application-specific library classes in one
+of the following ways:
+
+* Use the Administration Console. Open the Applications component, then
+go to the page for the type of application or module. Select the Deploy
+button. Type the comma-separated paths in the Libraries field. For
+details, click the Help button in the Administration Console.
+* Use the `asadmin deploy` command with the `--libraries` option and
+specify comma-separated paths. For details, see the
+link:reference-manual.html#GSRFM[{productName} Reference Manual].
+* Use the `asadmin add-library` command with the `--type app` option,
+then restart the server. For details, see the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+
+[NOTE]
+====
+None of these alternatives apply to application clients. For more
+information, see link:java-clients.html#gjpjt[Using Libraries with
+Application Clients].
+====
+
+
+You can update a library JAR file using dynamic reloading or by
+restarting (disabling and re-enabling) a module or application. To add
+or remove library JAR files, you can redeploy the module or application.
+
+Application libraries are included in the Applib class loader. Paths to
+libraries can be relative or absolute. A relative path is relative to
+domain-dir`/lib/applibs`. If the path is absolute, the path must be
+accessible to the domain administration server (DAS). The {productName} automatically synchronizes these libraries to all remote cluster
+instances when the cluster is restarted. However, libraries specified by
+absolute paths are not guaranteed to be synchronized.
+
+
+[TIP]
+====
+You can use application-specific class loading to specify a different
+XML parser than the default {productName} XML parser.
+
+You can also use application-specific class loading to access different
+versions of a library from different applications.
+====
+
+
+If multiple applications or modules refer to the same libraries, classes
+in those libraries are automatically shared. This can reduce the memory
+footprint and allow sharing of static information. However, applications
+or modules using application-specific libraries are not portable. Other
+ways to make libraries available are described in
+link:#beadh[Circumventing Class Loader Isolation].
+
+One library cannot reference classes from another library.
+
+For general information about deployment, including dynamic reloading,
+see the link:application-deployment-guide.html#GSDPG[{productName} Application
+Deployment Guide].
+
+
+[NOTE]
+====
+If you see an access control error message when you try to use a
+library, you may need to grant permission to the library in the
+`server.policy` file. For more information, see
+link:securing-apps.html#beabz[Changing Permissions for an Application].
+====
+
+
+[[beadh]][[GSDVG00100]][[circumventing-class-loader-isolation]]
+
+=== Circumventing Class Loader Isolation
+
+Since each application or individually deployed module class loader
+universe is isolated, an application or module cannot load classes from
+another application or module. This prevents two similarly named classes
+in different applications or modules from interfering with each other.
+
+To circumvent this limitation for libraries, utility classes, or
+individually deployed modules accessed by more than one application, you
+can include the relevant path to the required classes in one of these
+ways:
+
+* link:#beadj[Using the Common Class Loader]
+* link:#gcrnt[Sharing Libraries Across a Cluster]
+* link:#beadl[Packaging the Client JAR for One Application in Another
+Application]
+
+[[beadj]][[GSDVG00342]][[using-the-common-class-loader]]
+
+==== Using the Common Class Loader
+
+To use the Common class loader, copy the JAR files into the
+domain-dir``/lib`` or as-install``/lib`` directory, or use the
+`asadmin add-library` command with the `--type common` option, then
+restart the server. For more information about the `asadmin add-library`
+command, see the {productName} Reference Manual.
+
+Using the Common class loader makes an application or module accessible
+to all applications or modules deployed on servers that share the same
+configuration. However, this accessibility does not extend to
+application clients. For more information, see
+link:java-clients.html#gjpjt[Using Libraries with Application Clients].
+
+For example, using the Common class loader is the recommended way of
+adding JDBC drivers to the {productName}. For a list of the JDBC
+drivers currently supported by the {productName}, see the
+link:release-notes.html#GSRLN[{productName} Release Notes]. For
+configurations of supported and other drivers, see
+"link:administration-guide/jdbc.html#GSADG00579[Configuration Specifics for JDBC Drivers]" in
+{productName} Administration Guide.
+
+To activate custom login modules and realms, place the JAR files in the
+domain-dir``/lib`` directory, then restart the server.
+
+[[gcrnt]][[GSDVG00343]][[sharing-libraries-across-a-cluster]]
+
+==== Sharing Libraries Across a Cluster
+
+To share libraries across a specific cluster, copy the JAR files to the
+domain-dir``/config/``cluster-config-name``/lib`` directory.
+
+[[beadl]][[GSDVG00344]][[packaging-the-client-jar-for-one-application-in-another-application]]
+
+==== Packaging the Client JAR for One Application in Another Application
+
+By packaging the client JAR for one application in a second application,
+you allow an EJB or web component in the second application to call an
+EJB component in the first (dependent) application, without making
+either of them accessible to any other application or module.
+
+As an alternative for a production environment, you can have the Common
+class loader load the client JAR of the dependent application as
+described in link:#beadj[Using the Common Class Loader]. Restart the
+server to make the dependent application accessible to all applications
+or modules deployed on servers that share the same configuration.
+
+[[fvyab]][[GSDVG00048]][[to-package-the-client-jar-for-one-application-in-another-application]]
+
+==== To Package the Client JAR for One Application in Another Application
+
+1. Deploy the dependent application.
+2. Add the dependent application's client JAR file to the calling
+application.
+* For a calling EJB component, add the client JAR file at the same level
+as the EJB component. Then add a `Class-Path` entry to the `MANIFEST.MF`
+file of the calling EJB component. The `Class-Path` entry has this
+syntax:
++
+[source]
+----
+Class-Path: filepath1.jar filepath2.jar ...
+----
+Each filepath is relative to the directory or JAR file containing the
+`MANIFEST.MF` file. For details, see the Jakarta EE specification.
+* For a calling web component, add the client JAR file under the
+`WEB-INF/lib` directory.
+3. If you need to package the client JAR with both the EJB and web
+components, set `delegate="true"` in the `class-loader` element of the
+`glassfish-web.xml` file.
++
+This changes the Web class loader so that it follows the standard class
+loader delegation model and delegates to its parent before attempting to
+load a class itself.
++
+For most applications, packaging the client JAR file with the calling
+EJB component is sufficient. You do not need to package the client JAR
+file with both the EJB and web components unless the web component is
+directly calling the EJB component in the dependent application.
+4. Deploy the calling application.
++
+The calling EJB or web component must specify in its
+`glassfish-ejb-jar.xml` or `glassfish-web.xml` file the JNDI name of the
+EJB component in the dependent application. Using an `ejb-link` mapping
+does not work when the EJB component being called resides in another
+application.
++
+You do not need to restart the server.
+
+
diff --git a/docs/application-development-guide/src/main/asciidoc/connectors.adoc b/docs/application-development-guide/src/main/asciidoc/connectors.adoc
new file mode 100644
index 0000000..837bf0b
--- /dev/null
+++ b/docs/application-development-guide/src/main/asciidoc/connectors.adoc
@@ -0,0 +1,651 @@
+type=page
+status=published
+title=Developing Connectors
+next=lifecycle-listeners.html
+prev=java-clients.html
+~~~~~~
+
+= Developing Connectors
+
+[[GSDVG00013]][[bealk]]
+
+
+[[developing-connectors]]
+== 11 Developing Connectors
+
+This chapter describes {productName} support for the Jakarta EE
+Connector Architecture, also known as
+http://jcp.org/en/jsr/detail?id=322[JSR 322]
+(`http://jcp.org/en/jsr/detail?id=322`).
+
+The Jakarta EE Connector Architecture provides a Java solution to the
+problem of connectivity between multiple application servers and
+existing enterprise information systems (EISs). By using the Jakarta EE
+Connector architecture, EIS vendors no longer need to customize their
+product for each application server. Application server vendors who
+conform to the Jakarta EE Connector architecture do not need to write
+custom code to add connectivity to a new EIS.
+
+This chapter uses the terms connector and resource adapter
+interchangeably. Both terms refer to a resource adapter module that is
+developed in conformance with the Jakarta EE Connector Architecture
+Specification.
+
+[NOTE]
+====
+If you installed the Web Profile, connector modules that use only
+outbound communication features and work-management that does not
+involve inbound communication features are supported. Other connector
+features are supported only in the full {productName}.
+====
+For more information about connectors, see
+https://eclipse-ee4j.github.io/jakartaee-tutorial/#resource-adapters-and-contracts[
+Resource Adapters and Contracts] in The Jakarta EE Tutorial.
+
+For information about deploying a connector to the {productName}, see
+the link:application-deployment-guide.html#GSDPG[
+{productName} Application Deployment Guide].
+
+The following topics are addressed here:
+
+* link:#beall[Connector Support in the {productName}]
+* link:#bealr[Advanced Connector Configuration Options]
+* link:#bealz[Inbound Communication Support]
+* link:#gizdm[Outbound Communication Support]
+* link:#beama[Configuring a Message Driven Bean to Use a Resource Adapter]
+
+[[beall]][[GSDVG00162]][[connector-support-in-the-glassfish-server]]
+
+=== Connector Support in the {productName}
+
+The {productName} supports the development and deployment of resource
+adapters that are compatible with the Connector 1.6 specification (and,
+for backward compatibility, the Connector 1.0 and 1.5 specifications).
+
+The Connector 1.0 specification defines the outbound connectivity system
+contracts between the resource adapter and the {productName}. The
+Connector 1.5 specification introduces major additions in defining
+system level contracts between the {productName} and the resource
+adapter with respect to inbound connectivity, life cycle management, and
+thread management. The Connector 1.6 specification introduces further
+additions in defining system level contracts between the {productName} and the resource adapter with respect to the following:
+
+* Generic work context contract — A generic contract that enables a
+resource adapter to control the execution context of a `Work` instance
+that it has submitted to the {productName} for execution. The
+`Generic` work contract provides the mechanism for a resource adapter to
+augment the runtime context of a `Work` instance with additional
+contextual information flown-in from the EIS. This contract enables a
+resource adapter to control, in a more flexible manner, the contexts in
+which the `Work` instances submitted by it are executed by the
+application server's `WorkManager`.
+* Security work context — A standard contract that enables a resource
+adapter to establish security information while submitting a `Work`
+instance for execution to a `WorkManager` and while delivering
+messages-to-message endpoints residing in the {productName}. This
+contract provides a mechanism to support the execution of a `Work`
+instance in the context of an established identity. It also supports the
+propagation of user information or Principal information from an EIS to
+a `MessageEndpoint` during message inflow.
+* Transaction context — The transaction context contract between the
+resource adapter and the application server leverages the Generic Work
+Context mechanism by describing a standard `WorkContext`, the
+`TransactionContext`. It represents the standard interface a resource
+adapter can use to propagate transaction context information from the
+EIS to the application server.
+
+[[bealm]][[GSDVG00474]][[connector-architecture-for-jms-and-jdbc]]
+
+==== Connector Architecture for JMS and JDBC
+
+In the Administration Console, connector, JMS, and JDBC resources are
+handled differently, but they use the same underlying Connector
+architecture. In the {productName}, all communication to an EIS,
+whether to a message provider or an RDBMS, happens through the Connector
+architecture. To provide JMS infrastructure to clients, the {productName} uses the Open Message Queue software. To provide JDBC
+infrastructure to clients, the {productName} uses its own JDBC system
+resource adapters. The {productName} automatically makes these system
+resource adapters available to any client that requires them.
+
+For more information about JMS in the {productName}, see
+link:jms.html#beaob[Using the Java Message Service]. For more information
+about JDBC in the {productName}, see link:jdbc.html#beamj[Using the
+JDBC API for Database Access].
+
+[[bealn]][[GSDVG00475]][[connector-configuration]]
+
+==== Connector Configuration
+
+The {productName} does not need to use `sun-ra.xml`, which previous
+{productName} versions used, to store server-specific deployment
+information inside a Resource Adapter Archive (RAR) file. (However, the
+`sun-ra.xml` file is still supported for backward compatibility.)
+Instead, the information is stored in the server configuration. As a
+result, you can create multiple connector connection pools for a
+connection definition in a functional resource adapter instance, and you
+can create multiple user-accessible connector resources (that is,
+registering a resource with a JNDI name) for a connector connection
+pool. In addition, dynamic changes can be made to connector connection
+pools and the connector resource properties without restarting the
+{productName}.
+
+[[bealr]][[GSDVG00163]][[advanced-connector-configuration-options]]
+
+=== Advanced Connector Configuration Options
+
+The following topics are addressed here:
+
+* link:#beals[Thread Associations]
+* link:#bealt[Security Maps]
+* link:#giqgt[Work Security Maps]
+* link:#bealu[Overriding Configuration Properties]
+* link:#bealv[Testing a Connector Connection Pool]
+* link:#gizcv[Flushing a Connector Connection Pool]
+* link:#bealw[Handling Invalid Connections]
+* link:#bealx[Setting the Shutdown Timeout]
+* link:#gjjyy[Specifying the Class Loading Policy]
+* link:#bealy[Using Last Agent Optimization of Transactions]
+* link:#gizba[Disabling Pooling for a Connection]
+* link:#gizcs[Using Application-Scoped Connectors]
+
+[[beals]][[GSDVG00476]][[thread-associations]]
+
+==== Thread Associations
+
+Connectors can submit work instances to the {productName} for
+execution. By default, the {productName} services work requests for
+all connectors from its default thread pool. However, you can associate
+a specific user-created thread pool to service work requests from a
+connector. A thread pool can service work requests from multiple
+resource adapters. To create a thread pool:
+
+* In the Administration Console, select Thread Pools under the relevant
+configuration. For details, click the Help button in the Administration
+Console.
+* Use the `asadmin create-threadpool` command. For details, see the
+link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+To associate a connector with a thread pool:
+
+* In the Administration Console, open the Applications component and
+select Resource Adapter Configs. Specify the name of the thread pool in
+the Thread Pool ID field. For details, click the Help button in the
+Administration Console.
+* Use the `--threadpoolid` option of the
+`asadmin create-resource-adapter-config` command. For details, see the
+link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+If you create a resource adapter configuration for a connector module
+that is already deployed, the connector module deployment is restarted
+with the new configuration properties.
+
+[[bealt]][[GSDVG00477]][[security-maps]]
+
+==== Security Maps
+
+Create a security map for a connector connection pool to map an
+application principal or a user group to a back end EIS principal. The
+security map is usually used in situations where one or more EIS back
+end principals are used to execute operations (on the EIS) initiated by
+various principals or user groups in the application.
+
+To create or update security maps for a connector connection pool:
+
+* In the Administration Console, open the Resources component, select
+Connectors, select Connector Connection Pools, and select the Security
+Maps tab. For details, click the Help button in the Administration
+Console.
+* Use the `asadmin create-connector-security-map` command. For details,
+see the link:reference-manual.html#GSRFM[{productName} Reference
+Manual].
+
+If a security map already exists for a connector connection pool, the
+new security map is appended to the previous one. The connector security
+map configuration supports the use of the wildcard asterisk (`*`) to
+indicate all users or all user groups.
+
+When an application principal initiates a request to an EIS, the
+{productName} first checks for an exact match to a mapped back end
+EIS principal using the security map defined for the connector
+connection pool. If there is no exact match, the {productName} uses
+the wild card character specification, if any, to determined the mapped
+back end EIS principal.
+
+[[giqgt]][[GSDVG00478]][[work-security-maps]]
+
+==== Work Security Maps
+
+A work security map for a resource adapter maps an EIS principal or
+group to a application principal or group. A work security map is useful
+in situations where one or more application principals execute
+operations initiated by principals or user groups in the EIS. A resource
+adapter can have multiple work security maps. A work security map can
+map either principals or groups, but not both.
+
+To create a work security map, use the
+`asadmin create-connector-work-security-map` command. For details, see
+the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+The work security map configuration supports the wildcard asterisk (`*`)
+character to indicate all users or all user groups. When an EIS
+principal sends a request to the {productName}, the {productName}
+first checks for an exact match to a mapped application principal using
+the work security map defined for the resource adapter. If there is no
+exact match, the {productName} uses the wild card character
+specification, if any, to determine the application principal.
+
+[[bealu]][[GSDVG00479]][[overriding-configuration-properties]]
+
+==== Overriding Configuration Properties
+
+You can override the properties (`config-property` elements) specified
+in the `ra.xml` file of a resource adapter:
+
+* In the Administration Console, open the Resources component and select
+Resource Adapter Configs. Create a new resource adapter configuration or
+select an existing one to edit. Then enter property names and values in
+the Additional Properties table. For details, click the Help button in
+the Administration Console.
+* Use the `asadmin create-resource-adapter-config` command to create a
+configuration for a resource adapter. Use this command's `--property`
+option to specify a name-value pair for a resource adapter property. For
+details, see the link:reference-manual.html#GSRFM[{productName}
+Reference Manual].
+
+You can specify configuration properties either before or after resource
+adapter deployment. If you specify properties after deploying the
+resource adapter, the existing resource adapter is restarted with the
+new properties.
+
+You can also use token replacement for overriding resource adapter
+configuration properties in individual server instances when the
+resource adapter is deployed to a cluster. For example, for a property
+called `inboundPort`, you can assign the value `${inboundPort}`. You can
+then assign a different value to this property for each server instance.
+Changes to system properties take effect upon server restart.
+
+[[bealv]][[GSDVG00480]][[testing-a-connector-connection-pool]]
+
+==== Testing a Connector Connection Pool
+
+You can test a connector connection pool for usability in one of these
+ways:
+
+* In the Administration Console, open the Resources component, open the
+Connector component, select Connection Pools, and select the connection
+pool you want to test. Then select the Ping button in the top right
+corner of the page. For details, click the Help button in the
+Administration Console.
+* Use the `asadmin ping-connection-pool` command. For details, see the
+link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+Both these commands fail and display an error message unless they
+successfully connect to the connection pool.
+
+You can also specify that a connection pool is automatically tested when
+created or reconfigured by setting the Ping attribute to `true` (the
+default is `false`) in one of the following ways:
+
+* Enter a Ping value in the Connector Connection Pools page in the
+Administration Console. For more information, click the Help button in
+the Administration Console.
+* Specify the `--ping` option in the
+`asadmin create-connector-connection-pool` command. For more
+information, see the link:reference-manual.html#GSRFM[{productName}
+Reference Manual].
+
+[[gizcv]][[GSDVG00481]][[flushing-a-connector-connection-pool]]
+
+==== Flushing a Connector Connection Pool
+
+Flushing a connector connection pool recreates all the connections in
+the pool and brings the pool to the steady pool size without the need
+for reconfiguring the pool. Connection pool reconfiguration can result
+in application redeployment, which is a time-consuming operation.
+Flushing destroys existing connections, and any existing transactions
+are lost and must be retired.
+
+You can flush a connector connection pool in one of these ways:
+
+* In the Administration Console, open the Resources component, open the
+Connector component, select Connection Pools, and select the connection
+pool you want to flush. Then select the Flush button in the top right
+corner of the page. For details, click the Help button in the
+Administration Console.
+* Use the `asadmin flush-connection-pool` command. For details, see the
+link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+[[bealw]][[GSDVG00482]][[handling-invalid-connections]]
+
+==== Handling Invalid Connections
+
+If a resource adapter generates a `ConnectionErrorOccured` event, the
+{productName} considers the connection invalid and removes the
+connection from the connection pool. Typically, a resource adapter
+generates a `ConnectionErrorOccured` event when it finds a
+`ManagedConnection` object unusable. Reasons can be network failure with
+the EIS, EIS failure, fatal problems with the resource adapter, and so
+on.
+
+If the `fail-all-connections` setting in the connection pool
+configuration is set to `true`, and a single connection fails, all
+connections are closed and recreated. If this setting is `false`,
+individual connections are recreated only when they are used. The
+default is `false`.
+
+The `is-connection-validation-required` setting specifies whether
+connections have to be validated before being given to the application.
+If a resource's validation fails, it is destroyed, and a new resource is
+created and returned. The default is `false`.
+
+The `prefer-validate-over-recreate` property specifies that validating
+idle connections is preferable to closing them. This property has no
+effect on non-idle connections. If set to `true`, idle connections are
+validated during pool resizing, and only those found to be invalid are
+destroyed and recreated. If `false`, all idle connections are destroyed
+and recreated during pool resizing. The default is `false`.
+
+You can set the `fail-all-connections`,
+`is-connection-validation-required`, and `prefer-validate-over-recreate`
+configuration settings during creation of a connector connection pool.
+Or, you can use the `asadmin set` command to dynamically reconfigure a
+setting. For example:
+
+[source]
+----
+asadmin set server.resources.connector-connection-pool.CCP1.fail-all-connections="true"
+asadmin set server.resources.connector-connection-pool.CCP1.is-connection-validation-required="true"
+asadmin set server.resources.connector-connection-pool.CCP1.property.prefer-validate-over-recreate="true"
+----
+
+For details, see the link:reference-manual.html#GSRFM[{productName}
+Reference Manual].
+
+The interface ValidatingManagedConnectionFactory exposes the method
+`getInvalidConnections` to allow retrieval of the invalid connections.
+The {productName} checks if the resource adapter implements this
+interface, and if it does, invalid connections are removed when the
+connection pool is resized.
+
+[[bealx]][[GSDVG00483]][[setting-the-shutdown-timeout]]
+
+==== Setting the Shutdown Timeout
+
+According to the Connector specification, while an application server
+shuts down, all resource adapters should be stopped. A resource adapter
+might hang during shutdown, since shutdown is typically a resource
+intensive operation. To avoid such a situation, you can set a timeout
+that aborts resource adapter shutdown if exceeded. The default timeout
+is 30 seconds per resource adapter module. To configure this timeout:
+
+* In the Administration Console, select Connector Service under the
+relevant configuration and edit the shutdown Timeout field. For details,
+click the Help button in the Administration Console.
+* Use the following `asadmin set` command:
++
+[source]
+----
+asadmin set server.connector-service.shutdown-timeout-in-seconds="num-secs"
+----
+For details, see the link:reference-manual.html#GSRFM[{productName}
+Reference Manual].
+
+The {productName} deactivates all message-driven bean deployments
+before stopping a resource adapter.
+
+[[gjjyy]][[GSDVG00484]][[specifying-the-class-loading-policy]]
+
+==== Specifying the Class Loading Policy
+
+Use the `class-loading-policy` setting to determine which resource
+adapters accessible to applications. Allowed values are:
+
+* `derived` — Applications access resource adapters based on references
+in their deployment descriptors. These references can be `resource-ref`,
+`resource-env-ref`, `resource-adapter-mid`, or equivalent annotations.
+* `global` — All stand-alone resource adapters are available to all
+applications.
+
+To configure this setting, use the `asadmin set` command. For example:
+
+[source]
+----
+asadmin set server.connector-service.class-loading-policy="global"
+----
+
+For details, see the link:reference-manual.html#GSRFM[{productName}
+Reference Manual].
+
+[[bealy]][[GSDVG00485]][[using-last-agent-optimization-of-transactions]]
+
+==== Using Last Agent Optimization of Transactions
+
+Transactions that involve multiple resources or multiple participant
+processes are distributed or global transactions. A global transaction
+can involve one non-XA resource if last agent optimization is enabled.
+Otherwise, all resources must be XA. For more information about
+transactions in the {productName}, see
+link:transaction-service.html#beanm[Using the Transaction Service].
+
+The Connector specification requires that if a resource adapter supports
+`XATransaction`, the `ManagedConnection` created from that resource
+adapter must support both distributed and local transactions. Therefore,
+even if a resource adapter supports `XATransaction`, you can configure
+its connector connection pools as non-XA or without transaction support
+for better performance. A non-XA resource adapter becomes the last agent
+in the transactions in which it participates.
+
+The value of the connection pool configuration property
+`transaction-support` defaults to the value of the `transaction-support`
+property in the `ra.xml` file. The connection pool configuration
+property can override the `ra.xml` file property if the transaction
+level in the connection pool configuration property is lower. If the
+value in the connection pool configuration property is higher, it is
+ignored.
+
+[[gizba]][[GSDVG00486]][[disabling-pooling-for-a-connection]]
+
+==== Disabling Pooling for a Connection
+
+To disable connection pooling, set the Pooling attribute to false. The
+default is true. You can enable or disable connection pooling in one of
+the following ways:
+
+* Enter a Pooling value in the Connector Connection Pools page in the
+Administration Console. For more information, click the Help button in
+the Administration Console.
+* Specify the `--pooling` option in the
+`asadmin create-connector-connection-pool` command. For more
+information, see the link:reference-manual.html#GSRFM[{productName}
+Reference Manual].
+
+[[gizcs]][[GSDVG00487]][[using-application-scoped-connectors]]
+
+==== Using Application-Scoped Connectors
+
+You can define an application-scoped connector or other resource for an
+enterprise application, web module, EJB module, connector module, or
+application client module by supplying a `glassfish-resources.xml`
+deployment descriptor file. For details, see
+"link:application-deployment-guide/deploying-applications.html#GSDPG00075[Application-Scoped Resources]" in {productName} Application Deployment Guide.
+
+[[bealz]][[GSDVG00164]][[inbound-communication-support]]
+
+=== Inbound Communication Support
+
+The Connector specification defines the transaction and message inflow
+system contracts for achieving inbound connectivity from an EIS. The
+message inflow contract also serves as a standard message provider
+pluggability contract, thereby allowing various message providers to
+seamlessly plug in their products with any application server that
+supports the message inflow contract. In the inbound communication
+model, the EIS initiates all communication to an application. An
+application can be composed of enterprise beans (session, entity, or
+message-driven beans), which reside in an EJB container.
+
+Incoming messages are received through a message endpoint, which is a
+message-driven bean. This message-driven bean asynchronously consumes
+messages from a message provider. An application can also synchronously
+send and receive messages directly using messaging style APIs.
+
+A resource adapter supporting inbound communication provides an instance
+of an `ActivationSpec` JavaBean class for each supported message
+listener type. Each class contains a set of configurable properties that
+specify endpoint activation configuration information during
+message-driven bean deployment. The required `config-property` element
+in the `ra.xml` file provides a list of configuration property names
+required for each activation specification. An endpoint activation fails
+if the required property values are not specified. Values for the
+properties that are overridden in the message-driven bean's deployment
+descriptor are applied to the `ActivationSpec` JavaBean when the
+message-driven bean is deployed.
+
+Administered objects can also be specified for a resource adapter, and
+these JavaBeans are specific to a messaging style or message provider.
+For example, some messaging styles may need applications to use special
+administered objects (such as Queue and Topic objects in JMS).
+Applications use these objects to send and synchronously receive
+messages using connection objects using messaging style APIs. For more
+information about administered objects, see link:jms.html#beaob[Using the
+Java Message Service].
+
+[[gizdm]][[GSDVG00165]][[outbound-communication-support]]
+
+=== Outbound Communication Support
+
+The Connector specification defines the system contracts for achieving
+outbound connectivity from an EIS. A resource adapter supporting
+outbound communication provides an instance of a
+`ManagedConnectionFactory` JavaBean class. A `ManagedConnectionFactory`
+JavaBean represents outbound connectivity information to an EIS instance
+from an application.
+
+The 1.6 Connector specification introduces a mechanism through which the
+transaction level of a `ManagedConnectionFactory` can be detected at
+runtime. During the configuration of a `ManagedConnectionFactory` in the
+Connector Connection Pools page in the Administration Console, the
+Administration Console can instantiate the `ManagedConnectionFactory`
+and show the level of transaction support. The three levels are `no-tx`,
+`local-tx`, `xa-tx`. If a `ManagedConnectionFactory` returns `local-tx`
+as the level it can support, it is assumed that `xa-tx` is not
+supported, and the Administration Console shows only `no-tx` and
+`local-tx` as the available support levels.
+
+For more information, click the Help button in the Administration
+Console.
+
+[[beama]][[GSDVG00166]][[configuring-a-message-driven-bean-to-use-a-resource-adapter]]
+
+=== Configuring a Message Driven Bean to Use a Resource Adapter
+
+The Connectors specification's message inflow contract provides a
+generic mechanism to plug in a wide-range of message providers,
+including JMS, into a Java-EE-compatible application server. Message
+providers use a resource adapter and dispatch messages to message
+endpoints, which are implemented as message-driven beans.
+
+The message-driven bean developer provides activation configuration
+information in the message-driven bean's `ejb-jar.xml` file.
+Configuration information includes messaging-style-specific
+configuration details, and possibly message-provider-specific details as
+well. The message-driven bean deployer uses this configuration
+information to set up the activation specification JavaBean. The
+activation configuration properties specified in `ejb-jar.xml` override
+configuration properties in the activation specification definition in
+the `ra.xml` file.
+
+According to the EJB specification, the messaging-style-specific
+descriptor elements contained within the activation configuration
+element are not specified because they are specific to a messaging
+provider. In the following sample message-driven bean `ejb-jar.xml`, a
+message-driven bean has the following activation configuration property
+names: `destinationType`, `SubscriptionDurability`, and
+`MessageSelector`.
+
+[source,xml]
+----
+<!--  A sample MDB that listens to a JMS Topic -->
+<!-- message-driven bean deployment descriptor -->
+...
+ <activation-config>
+   <activation-config-property>
+     <activation-config-property-name>
+       destinationType
+     </activation-config-property-name>
+     <activation-config-property-value>
+       jakarta.jms.Topic
+     </activation-config-property-value>
+  </activation-config-property>
+  <activation-config-property>
+     <activation-config-property-name>
+       SubscriptionDurability
+     </activation-config-property-name>
+     <activation-config-property-value>
+       Durable
+     </activation-config-property-value>
+  </activation-config-property>
+  <activation-config-property>
+     <activation-config-property-name>
+       MessageSelector
+     </activation-config-property-name>
+     <activation-config-property-value>
+       JMSType = 'car' AND color = 'blue'
+     </activation-config-property-value>
+  </activation-config-property>
+ ...
+ </activation-config>
+...
+----
+
+When the message-driven bean is deployed, the value for the
+`resource-adapter-mid` element in the `glassfish-ejb-jar.xml` file is
+set to the resource adapter module name that delivers messages to the
+message endpoint (to the message-driven bean). In the following example,
+the `jmsra` JMS resource adapter, which is the bundled resource adapter
+for the Message Queue message provider, is specified as the resource
+adapter module identifier for the `SampleMDB` bean.
+
+[source,xml]
+----
+<glassfish-ejb-jar>
+<enterprise-beans>
+    <unique-id>1</unique-id>
+    <ejb>
+       <ejb-name>SampleMDB</ejb-name>
+       <jndi-name>SampleQueue</jndi-name>
+    <!-- JNDI name of the destination from which messages would be
+         delivered from MDB needs to listen to -->
+    ...
+    <mdb-resource-adapter>
+       <resource-adapter-mid>jmsra</resource-adapter-mid>
+       <!-- Resource Adapter Module Id that would deliver messages to
+            this message endpoint -->
+       </mdb-resource-adapter>
+    ...
+ </ejb>
+ ...
+</enterprise-beans>
+...
+</glassfish-ejb-jar>
+----
+
+When the message-driven bean is deployed, the {productName} uses the
+`resourceadapter-mid` setting to associate the resource adapter with a
+message endpoint through the message inflow contract. This message
+inflow contract with the {productName} gives the resource adapter a
+handle to the `MessageEndpointFactory` and the `ActivationSpec`
+JavaBean, and the adapter uses this handle to deliver messages to the
+message endpoint instances (which are created by the
+`MessageEndpointFactory`).
+
+When a message-driven bean first created for use on the {productName}
+7 is deployed, the Connector runtime transparently transforms the
+previous deployment style to the current connector-based deployment
+style. If the deployer specifies neither a `resource-adapter-mid`
+element nor the Message Queue resource adapter's activation
+configuration properties, the Connector runtime maps the message-driven
+bean to the `jmsra` system resource adapter and converts the
+JMS-specific configuration to the Message Queue resource adapter's
+activation configuration properties.
+
+
diff --git a/docs/application-development-guide/src/main/asciidoc/container_managed-persistence.adoc b/docs/application-development-guide/src/main/asciidoc/container_managed-persistence.adoc
new file mode 100644
index 0000000..38f5551
--- /dev/null
+++ b/docs/application-development-guide/src/main/asciidoc/container_managed-persistence.adoc
@@ -0,0 +1,1498 @@
+type=page
+status=published
+title=Using Container-Managed Persistence
+next=java-clients.html
+prev=ejb.html
+~~~~~~
+
+= Using Container-Managed Persistence
+
+[[GSDVG00011]][[beajj]]
+
+
+[[using-container-managed-persistence]]
+== 9 Using Container-Managed Persistence
+
+This chapter contains information on how EJB 2.1 container-managed
+persistence (CMP) works in {productName}.
+
+The following topics are addressed here:
+
+* link:#beajk[{productName} Support for CMP]
+* link:#beajl[CMP Mapping]
+* link:#beajv[Automatic Schema Generation for CMP]
+* link:#beajy[Schema Capture]
+* link:#beakb[Configuring the CMP Resource]
+* link:#beaki[Performance-Related Features]
+* link:#beakc[Configuring Queries for 1.1 Finders]
+* link:#beakm[CMP Restrictions and Optimizations]
+
+
+[NOTE]
+====
+The Web Profile of the {productName} supports the EJB 3.1 Lite
+specification, which allows enterprise beans within web applications,
+among other features. The full {productName} supports the entire EJB
+3.1 specification. For details, see
+http://jcp.org/en/jsr/detail?id=318[JSR 318]
+(`http://jcp.org/en/jsr/detail?id=318`).
+====
+
+
+[[beajk]][[GSDVG00150]][[glassfish-server-support-for-cmp]]
+
+=== {productName} Support for CMP
+
+{productName} support for EJB 2.1 CMP beans includes:
+
+* Full support for the J2EE v1.4 specification's CMP model. Extensive
+information on CMP is contained in chapters 10, 11, and 14 of the
+Enterprise JavaBeans Specification, v2.1. This includes the following:
+
+** Support for commit options B and C for transactions.
+   See link:transaction-service.html#beajh[Commit Options].
+** The primary key class must be a subclass of `java.lang.Object`.
+   This ensures portability, and is noted because some vendors allow primitive
+   types (such as `int`) to be used as the primary key class.
+
+* The {productName} CMP implementation, which provides the following:
+** An Object/Relational (O/R) mapping tool that creates XML deployment
+   descriptors for EJB JAR files that contain beans that use CMP.
+** Support for compound (multi-column) primary keys.
+** Support for sophisticated custom finder methods.
+** Standards-based query language (EJB QL).
+** CMP runtime support. See link:#beakb[Configuring the CMP Resource].
+
+* {productName} performance-related features, including the following:
+** Version column consistency checking
+** Relationship prefetching
+** Read-Only Beans
+
++
+For details, see link:#beaki[Performance-Related Features].
+
+[[beajl]][[GSDVG00151]][[cmp-mapping]]
+
+=== CMP Mapping
+
+Implementation for entity beans that use CMP is mostly a matter of
+mapping CMP fields and CMR fields (relationships) to the database.
+
+The following topics are addressed here:
+
+* link:#beajm[Mapping Capabilities]
+* link:#beajn[The Mapping Deployment Descriptor File]
+* link:#beajo[Mapping Considerations]
+
+[[beajm]][[GSDVG00434]][[mapping-capabilities]]
+
+==== Mapping Capabilities
+
+Mapping refers to the ability to tie an object-based model to a
+relational model of data, usually the schema of a relational database.
+The CMP implementation provides the ability to tie a set of interrelated
+beans containing data and associated behaviors to the schema. This
+object representation of the database becomes part of the Java
+application. You can also customize this mapping to optimize these beans
+for the particular needs of an application. The result is a single data
+model through which both persistent database information and regular
+transient program data are accessed.
+
+The mapping capabilities provided by the {productName} include:
+
+* Mapping a CMP bean to one or more tables
+* Mapping CMP fields to one or more columns
+* Mapping CMP fields to different column types
+* Mapping tables with compound primary keys
+* Mapping tables with unknown primary keys
+* Mapping CMP relationships to foreign keys
+* Mapping tables with overlapping primary and foreign keys
+
+[[beajn]][[GSDVG00435]][[the-mapping-deployment-descriptor-file]]
+
+==== The Mapping Deployment Descriptor File
+
+Each module with CMP beans must have the following files:
+
+* `ejb-jar.xml` - The J2EE standard file for assembling enterprise
+beans. For a detailed description, see the Enterprise JavaBeans
+Specification, v2.1.
+* `glassfish-ejb-jar.xml` - The {productName} standard file for
+assembling enterprise beans. For a detailed description, see
+"link:application-deployment-guide/dd-files.html#GSDPG00079[The glassfish-ejb-jar.xml File]" in {productName} Application Deployment Guide.
+* `sun-cmp-mappings.xml` - The mapping deployment descriptor file, which
+describes the mapping of CMP beans to tables in a database. For a
+detailed description, see "link:application-deployment-guide/dd-files.html#GSDPG00080[The sun-cmp-mappings.xml
+File]" in {productName} Application Deployment
+Guide.
+
+The `sun-cmp-mappings.xml` file can be automatically generated and does
+not have to exist prior to deployment. For details, see
+link:#beajx[Generation Options for CMP].
+
+The `sun-cmp-mappings.xml` file maps CMP fields and CMR fields
+(relationships) to the database. A primary table must be selected for
+each CMP bean, and optionally, multiple secondary tables. CMP fields are
+mapped to columns in either the primary or secondary table(s). CMR
+fields are mapped to pairs of column lists (normally, column lists are
+the lists of columns associated with primary and foreign keys).
+
+
+[NOTE]
+====
+Table names in databases can be case-sensitive. Make sure that the table
+names in the `sun-cmp-mappings.xml` file match the names in the
+database.
+
+Relationships should always be mapped to the primary key field(s) of the
+related table.
+====
+
+
+The `sun-cmp-mappings.xml` file conforms to the
+`sun-cmp-mapping_1_2.dtd` file and is packaged with the user-defined
+bean classes in the EJB JAR file under the `META-INF` directory.
+
+The {productName} creates the mappings in the `sun-cmp-mappings.xml`
+file automatically during deployment if the file is not present.
+
+To map the fields and relationships of your entity beans manually, edit
+the `sun-cmp-mappings.xml` deployment descriptor. Only do this if you
+are proficient in editing XML.
+
+The mapping information is developed in conjunction with the database
+schema (`.dbschema`) file, which can be automatically captured when you
+deploy the bean (see link:#beajz[Automatic Database Schema Capture]).
+You can manually generate the schema using the `capture-schema` utility
+(link:#beaka[Using the `capture-schema` Utility]).
+
+[[beajo]][[GSDVG00436]][[mapping-considerations]]
+
+==== Mapping Considerations
+
+The following topics are addressed here:
+
+* link:#beajp[Join Tables and Relationships]
+* link:#beajq[Automatic Primary Key Generation]
+* link:#beajr[Fixed Length CHAR Primary Keys]
+* link:#beajs[Managed Fields]
+* link:#beajt[BLOB Support]
+* link:#beaju[CLOB Support]
+
+The data types used in automatic schema generation are also suggested
+for manual mapping. These data types are described in
+link:#beajw[Supported Data Types for CMP].
+
+[[beajp]][[GSDVG00303]][[join-tables-and-relationships]]
+
+===== Join Tables and Relationships
+
+Use of join tables in the database schema is supported for all types of
+relationships, not just many-to-many relationships. For general
+information about relationships, see section 10.3.7 of the Enterprise
+JavaBeans Specification, v2.1.
+
+[[beajq]][[GSDVG00304]][[automatic-primary-key-generation]]
+
+===== Automatic Primary Key Generation
+
+The {productName} supports automatic primary key generation for EJB
+1.1, 2.0, and 2.1 CMP beans. To specify automatic primary key
+generation, give the `prim-key-class` element in the `ejb-jar.xml` file
+the value `java.lang.Object`. CMP beans with automatically generated
+primary keys can participate in relationships with other CMP beans. The
+{productName} does not support database-generated primary key values.
+
+If the database schema is created during deployment, the {productName} creates the schema with the primary key column, then generates
+unique values for the primary key column at runtime.
+
+If the database schema is not created during deployment, the primary key
+column in the mapped table must be of type `NUMERIC` with a precision of
+19 or more, and must not be mapped to any CMP field. The {productName} generates unique values for the primary key column at runtime.
+
+[[beajr]][[GSDVG00305]][[fixed-length-char-primary-keys]]
+
+===== Fixed Length CHAR Primary Keys
+
+If an existing database table has a primary key column in which the
+values vary in length, but the type is `CHAR` instead of `VARCHAR`, the
+{productName} automatically trims any extra spaces when retrieving
+primary key values. It is not a good practice to use a fixed length
+`CHAR` column as a primary key. Use this feature with schemas that
+cannot be changed, such as a schema inherited from a legacy application.
+
+[[beajs]][[GSDVG00306]][[managed-fields]]
+
+===== Managed Fields
+
+A managed field is a CMP or CMR field that is mapped to the same
+database column as another CMP or CMR field. CMP fields mapped to the
+same column and CMR fields mapped to exactly the same column lists
+always have the same value in memory. For CMR fields that share only a
+subset of their mapped columns, changes to the columns affect the
+relationship fields in memory differently. Basically, the {productName} always tries to keep the state of the objects in memory
+synchronized with the database.
+
+A managed field can have any `fetched-with` subelement. If the
+`fetched-with` subelement is `<default/>`, the
+`-DAllowManagedFieldsInDefaultFetchGroup` flag must be set to `true`.
+See link:#gemln[Default Fetch Group Flags] and
+"link:application-deployment-guide/dd-elements.html#GSDPG00153[fetched-with]" in {productName}
+Application Deployment Guide.
+
+[[beajt]][[GSDVG00307]][[blob-support]]
+
+===== BLOB Support
+
+Binary Large Object (BLOB) is a data type used to store values that do
+not correspond to other types such as numbers, strings, or dates. Java
+fields whose types implement java.io.Serializable or are represented as
+`byte[]` can be stored as BLOBs.
+
+If a CMP field is defined as Serializable, it is serialized into a
+`byte[]` before being stored in the database. Similarly, the value
+fetched from the database is deserialized. However, if a CMP field is
+defined as `byte[]`, it is stored directly instead of being serialized
+and deserialized when stored and fetched, respectively.
+
+To enable BLOB support in the {productName} environment, define a CMP
+field of type `byte[]` or a user-defined type that implements the
+java.io.Serializable interface. If you map the CMP bean to an existing
+database schema, map the field to a column of type BLOB.
+
+To use BLOB or CLOB data types larger than 4 KB for CMP using the Inet
+Oraxo JDBC Driver for Oracle Databases, you must set the `streamstolob`
+property value to `true`.
+
+For a list of the JDBC drivers currently supported by the {productName}, see the link:release-notes.html#GSRLN[{productName} Release
+Notes]. For configurations of supported and other drivers, see
+"link:administration-guide/jdbc.html#GSADG00579[Configuration Specifics for JDBC Drivers]" in
+{productName} Administration Guide.
+
+For automatic mapping, you might need to change the default BLOB column
+length for the generated schema using the `schema-generator-properties`
+element in `glassfish-ejb-jar.xml`. See your database vendor
+documentation to determine whether you need to specify the length. For
+example:
+
+[source,xml]
+----
+<schema-generator-properties>
+   <property>
+      <name>Employee.voiceGreeting.jdbc-type</name>
+      <value>BLOB</value>
+   </property>
+   <property>
+      <name>Employee.voiceGreeting.jdbc-maximum-length</name>
+      <value>10240</value>
+   </property>
+   ...
+</schema-generator-properties>
+----
+
+[[beaju]][[GSDVG00308]][[clob-support]]
+
+===== CLOB Support
+
+Character Large Object (CLOB) is a data type used to store and retrieve
+very long text fields. CLOBs translate into long strings.
+
+To enable CLOB support in the {productName} environment, define a CMP
+field of type `java.lang.String`. If you map the CMP bean to an existing
+database schema, map the field to a column of type CLOB.
+
+To use BLOB or CLOB data types larger than 4 KB for CMP using the Inet
+Oraxo JDBC Driver for Oracle Databases, you must set the `streamstolob`
+property value to `true`.
+
+For a list of the JDBC drivers currently supported by the {productName}, see the link:release-notes.html#GSRLN[{productName} Release
+Notes]. For configurations of supported and other drivers, see
+"link:administration-guide/jdbc.html#GSADG00579[Configuration Specifics for JDBC Drivers]" in
+{productName} Administration Guide.
+
+For automatic mapping, you might need to change the default CLOB column
+length for the generated schema using the `schema-generator-properties`
+element in `glassfish-ejb-jar.xml`. See your database vendor
+documentation to determine whether you need to specify the length. For
+example:
+
+[source,xml]
+----
+<schema-generator-properties>
+   <property>
+      <name>Employee.resume.jdbc-type</name>
+      <value>CLOB</value>
+   </property>
+   <property>
+      <name>Employee.resume.jdbc-maximum-length</name>
+      <value>10240</value>
+   </property>
+   ...
+</schema-generator-properties>
+----
+
+[[beajv]][[GSDVG00152]][[automatic-schema-generation-for-cmp]]
+
+=== Automatic Schema Generation for CMP
+
+The automatic schema generation feature provided in the {productName}
+defines database tables based on the fields in entity beans and the
+relationships between the fields. This insulates developers from many of
+the database related aspects of development, allowing them to focus on
+entity bean development. The resulting schema is usable as-is or can be
+given to a database administrator for tuning with respect to
+performance, security, and so on.
+
+The following topics are addressed here:
+
+* link:#beajw[Supported Data Types for CMP]
+* link:#beajx[Generation Options for CMP]
+
+
+[NOTE]
+====
+Automatic schema generation is supported on an all-or-none basis: it
+expects that no tables exist in the database before it is executed. It
+is not intended to be used as a tool to generate extra tables or
+constraints.
+
+Deployment won't fail if all tables are not created, and undeployment
+won't fail if not all tables are dropped. This is done to allow you to
+investigate the problem and fix it manually. You should not rely on the
+partially created database schema to be correct for running the
+application.
+====
+
+
+[[beajw]][[GSDVG00437]][[supported-data-types-for-cmp]]
+
+==== Supported Data Types for CMP
+
+CMP supports a set of JDBC data types that are used in mapping Java data
+fields to SQL types. Supported JDBC data types are as follows: BIGINT,
+BIT, BLOB, CHAR, CLOB, DATE, DECIMAL, DOUBLE, FLOAT, INTEGER, NUMERIC,
+REAL, SMALLINT, TIME, TIMESTAMP, TINYINT, VARCHAR.
+
+The following table contains the mappings of Java types to JDBC types
+when automatic mapping is used.
+
+[[GSDVG550]][[sthref19]][[fvyaq]]
+
+
+Table 9-1 Java Type to JDBC Type Mappings for CMP
+
+[width="100%",cols="39%,40%,21%",options="header",]
+|===
+|Java Type |JDBC Type |Nullability
+|`boolean` |`BIT` |No
+|`java.lang.Boolean` |`BIT` |Yes
+|`byte` |`TINYINT` |No
+|`java.lang.Byte` |`TINYINT` |Yes
+|`double` |`DOUBLE` |No
+|`java.lang.Double` |`DOUBLE` |Yes
+|`float` |`REAL` |No
+|`java.lang.Float` |`REAL` |Yes
+|`int` |`INTEGER` |No
+|`java.lang.Integer` |`INTEGER` |Yes
+|`long` |`BIGINT` |No
+|`java.lang.Long` |`BIGINT` |Yes
+|`short` |`SMALLINT` |No
+|`java.lang.Short` |`SMALLINT` |Yes
+|`java.math.BigDecimal` |`DECIMAL` |Yes
+|`java.math.BigInteger` |`DECIMAL` |Yes
+|`char` |`CHAR` |No
+|`java.lang.Character` |`CHAR` |Yes
+|`java.lang.String` |`VARCHAR` or `CLOB` |Yes
+|Serializable |`BLOB` |Yes
+|`byte[]` |`BLOB` |Yes
+|`java.util.Date` a|
+`DATE` (Oracle only)
+
+`TIMESTAMP` (all other databases)
+
+ |Yes
+|`java.sql.Date` |`DATE` |Yes
+|`java.sql.Time` |`TIME` |Yes
+|`java.sql.Timestamp` |`TIMESTAMP` |Yes
+|===
+
+
+
+[NOTE]
+====
+Java types assigned to CMP fields must be restricted to Java primitive
+types, Java Serializable types, `java.util.Date`, `java.sql.Date`,
+`java.sql.Time`, or `java.sql.Timestamp`. An entity bean local interface
+type (or a collection of such) can be the type of a CMR field.
+====
+
+
+The following table contains the mappings of JDBC types to database
+vendor-specific types when automatic mapping is used. For a list of the
+JDBC drivers currently supported by the {productName}, see the
+link:release-notes.html#GSRLN[{productName} Release Notes]. For
+configurations of supported and other drivers, see
+"link:administration-guide/jdbc.html#GSADG00579[Configuration Specifics for JDBC Drivers]" in
+{productName} Administration Guide.
+
+[[GSDVG551]][[sthref20]][[fvymp]]
+
+
+Table 9-2 Mappings of JDBC Types to Database Vendor Specific Types for
+CMP
+
+[width="100%",cols="15%,17%,17%,17%,17%,17%",options="header",]
+|===
+|JDBC Type |Apache Derby, CloudScape |Oracle |DB2 |Sybase ASE 12.5
+|MS-SQL Server
+|`BIT` |`SMALLINT` |`SMALLINT` |`SMALLINT` |`TINYINT` |`BIT`
+
+|`TINYINT` |`SMALLINT` |`SMALLINT` |`SMALLINT` |`TINYINT` |`TINYINT`
+
+|`SMALLINT` |`SMALLINT` |`SMALLINT` |`SMALLINT` |`SMALLINT` |`SMALLINT`
+
+|`INTEGER` |`INTEGER` |`INTEGER` |`INTEGER` |`INTEGER` |`INTEGER`
+
+|`BIGINT` |`BIGINT` |`NUMBER` |`BIGINT` |`NUMERIC` |`NUMERIC`
+
+|`REAL` |`REAL` |`REAL` |`FLOAT` |`FLOAT` |`REAL`
+
+|`DOUBLE` |`DOUBLE PRECISION` |`DOUBLE PRECISION` |`DOUBLE`
+|`DOUBLE PRECISION` |`FLOAT`
+
+|`DECIMAL(p,s)` |`DECIMAL(p,s)` |`NUMBER(p,s)` |`DECIMAL(p,s)`
+|`DECIMAL(p,s)` |`DECIMAL(p,s)`
+
+|`VARCHAR` |`VARCHAR` |`VARCHAR2` |`VARCHAR` |`VARCHAR` |`VARCHAR`
+
+|`DATE` |`DATE` |`DATE` |`DATE` |`DATETIME` |`DATETIME`
+
+|`TIME` |`TIME` |`DATE` |`TIME` |`DATETIME` |`DATETIME`
+
+|`TIMESTAMP` |`TIMESTAMP` |`TIMESTAMP(9)` |`TIMESTAMP` |`DATETIME`
+|`DATETIME`
+
+|`BLOB` |`BLOB` |`BLOB` |`BLOB` |`IMAGE` |`IMAGE`
+
+|`CLOB` |`CLOB` |`CLOB` |`CLOB` |`TEXT` |`NTEXT`
+|===
+
+
+[[beajx]][[GSDVG00438]][[generation-options-for-cmp]]
+
+==== Generation Options for CMP
+
+Deployment descriptor elements or `asadmin` command line options can
+control automatic schema generation by the following:
+
+* Creating tables during deployment
+* Dropping tables during undeployment
+* Dropping and creating tables during redeployment
+* Specifying the database vendor
+* Specifying that table names are unique
+* Specifying type mappings for individual CMP fields
+
+
+[NOTE]
+====
+Before using these options, make sure you have a properly configured CMP
+resource. See link:#beakb[Configuring the CMP Resource].
+
+For a read-only bean, do not create the database schema during
+deployment. Instead, work with your database administrator to populate
+the data into the tables. See link:ejb.html#beail[Using Read-Only Beans].
+
+Automatic schema generation is not supported for beans with version
+column consistency checking. Instead, work with your database
+administrator to create the schema and add the required triggers. See
+link:#beakj[Version Column Consistency Checking].
+====
+
+
+The following optional data subelements of the `cmp-resource` element in
+the `glassfish-ejb-jar.xml` file control the automatic creation of
+database tables at deployment. For more information about the
+`cmp-resource` element, see "link:application-deployment-guide/dd-elements.html#GSDPG00115[cmp-resource]" in
+{productName} Application Deployment Guide and
+link:#beakb[Configuring the CMP Resource].
+
+[[GSDVG552]][[sthref21]][[fvymo]]
+
+
+Table 9-3 The `glassfish-ejb-jar.xml` Generation Elements
+
+[width="172%",cols="20%,46%,34%",options="header",]
+|===
+|Element |Default |Description
+|link:application-deployment-guide/dd-elements.html#GSDPG00131[`create-tables-at-deploy`] |`false` |If `true`, causes
+database tables to be created for beans that are automatically mapped by
+the EJB container. No unique constraints are created. If `false`, does
+not create tables.
+
+|link:application-deployment-guide/dd-elements.html#GSDPG00141[`drop-tables-at-undeploy`] |`false` |If `true`, causes
+database tables that were automatically created when the bean(s) were
+last deployed to be dropped when the bean(s) are undeployed. If `false`,
+does not drop tables.
+
+|link:application-deployment-guide/dd-elements.html#GSDPG00133[`database-vendor-name`] |none a|
+Specifies the name of the database vendor for which tables are created.
+Allowed values are `javadb`, `db2`, `mssql`, `mysql`, `oracle`,
+`postgresql`, `pointbase`, `derby` (also for CloudScape), and `sybase`,
+case-insensitive.
+
+If no value is specified, a connection is made to the resource specified
+by the `jndi-name` subelement of the `cmp-resource` element in the
+`glassfish-ejb-jar.xml` file, and the database vendor name is read. If
+the connection cannot be established, or if the value is not recognized,
+SQL-92 compliance is presumed.
+
+|link:application-deployment-guide/dd-elements.html#GSDPG00261[`schema-generator-properties`] |none a|
+Specifies field-specific column attributes in `property` subelements.
+Each property name is of the following format:
+
+bean-name`.`field-name`.`attribute
+
+For example:
+
+`Employee.firstName.jdbc-type`
+
+Also allows you to set the `use-unique-table-names` property. If `true`,
+this property specifies that generated table names are unique within
+each {productName} domain. The default is `false`.
+
+For further information and an example, see
+"link:application-deployment-guide/dd-elements.html#GSDPG00261[schema-generator-properties]" in {productName} Application Deployment Guide.
+
+|===
+
+
+The following options of the `asadmin deploy` or `asadmin deploydir`
+command control the automatic creation of database tables at deployment.
+
+[[GSDVG553]][[sthref22]][[fvymn]]
+
+
+Table 9-4 The `asadmin deploy` and `asadmin deploydir` Generation
+Options for CMP
+
+[width="172%",cols="16%,46%,38%",options="header",]
+|===
+|Option |Default |Description
+|`--createtables` |none |If `true`, causes database tables to be created
+for beans that need them. No unique constraints are created. If `false`,
+does not create tables. If not specified, the value of the
+`create-tables-at-deploy` attribute in `glassfish-ejb-jar.xml` is used.
+
+|`--dropandcreatetables` |none a|
+If `true`, and if tables were automatically created when this
+application was last deployed, tables from the earlier deployment are
+dropped and fresh ones are created.
+
+If `true`, and if tables were not automatically created when this
+application was last deployed, no attempt is made to drop any tables. If
+tables with the same names as those that would have been automatically
+created are found, the deployment proceeds, but a warning indicates that
+tables could not be created.
+
+If `false`, settings of `create-tables-at-deploy` or
+`drop-tables-at-undeploy` in the `glassfish-ejb-jar.xml` file are
+overridden.
+
+|`--uniquetablenames` |none |If `true`, specifies that table names are
+unique within each {productName} domain. If not specified, the value
+of the `use-unique-table-names` property in `glassfish-ejb-jar.xml` is
+used.
+
+|`--dbvendorname` |none a|
+Specifies the name of the database vendor for which tables are created.
+Allowed values are `javadb`, `db2`, `mssql`, `oracle`, `postgresql`,
+`pointbase`, `derby` (also for CloudScape), and `sybase`,
+case-insensitive.
+
+If not specified, the value of the `database-vendor-name` attribute in
+`glassfish-ejb-jar.xml` is used.
+
+If no value is specified, a connection is made to the resource specified
+by the `jndi-name` subelement of the `cmp-resource` element in the
+`glassfish-ejb-jar.xml` file, and the database vendor name is read. If
+the connection cannot be established, or if the value is not recognized,
+SQL-92 compliance is presumed.
+
+|===
+
+
+If one or more of the beans in the module are manually mapped and you
+use any of the `asadmin deploy` or `asadmin deploydir` options, the
+deployment is not harmed in any way, but the options have no effect, and
+a warning is written to the server log.
+
+The following options of the `asadmin undeploy` command control the
+automatic removal of database tables at undeployment.
+
+[[GSDVG554]][[sthref23]][[fvymt]]
+
+
+Table 9-5 The `asadmin undeploy` Generation Options for CMP
+
+[width="172%",cols="10%,46%,44%",options="header",]
+|===
+|Option |Default |Description
+|`--droptables` |none a|
+If `true`, causes database tables that were automatically created when
+the bean(s) were last deployed to be dropped when the bean(s) are
+undeployed. If `false`, does not drop tables.
+
+If not specified, the value of the `drop-tables-at-undeploy` attribute
+in `glassfish-ejb-jar.xml` is used.
+
+|===
+
+
+For more information about the `asadmin deploy`, `asadmin deploydir`,
+and `asadmin undeploy` commands, see the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+When command line and `glassfish-ejb-jar.xml` options are both
+specified, the `asadmin` options take precedence.
+
+[[beajy]][[GSDVG00153]][[schema-capture]]
+
+=== Schema Capture
+
+The following topics are addressed here:
+
+* link:#beajz[Automatic Database Schema Capture]
+* link:#beaka[Using the `capture-schema` Utility]
+
+[[beajz]][[GSDVG00439]][[automatic-database-schema-capture]]
+
+==== Automatic Database Schema Capture
+
+You can configure a CMP bean in {productName} to automatically
+capture the database metadata and save it in a `.dbschema` file during
+deployment. If the `sun-cmp-mappings.xml` file contains an empty
+`<schema/>` entry, the `cmp-resource` entry in the
+`glassfish-ejb-jar.xml` file is used to get a connection to the
+database, and automatic generation of the schema is performed.
+
+
+[NOTE]
+====
+Before capturing the database schema automatically, make sure you have a
+properly configured CMP resource. See link:#beakb[Configuring the CMP
+Resource].
+====
+
+
+[[beaka]][[GSDVG00440]][[using-the-capture-schema-utility]]
+
+==== Using the `capture-schema` Utility
+
+You can use the `capture-schema` command to manually generate the
+database metadata (`.dbschema`) file. For details, see the
+link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+The `capture-schema` utility does not modify the schema in any way. Its
+only purpose is to provide the persistence engine with information about
+the structure of the database (the schema).
+
+Keep the following in mind when using the `capture-schema` command:
+
+* The name of a `.dbschema` file must be unique across all deployed
+modules in a domain.
+* If more than one schema is accessible for the schema user, more than
+one table with the same name might be captured if the `-schemaname`
+option of `capture-schema` is not set.
+* The schema name must be upper case.
+* Table names in databases are case-sensitive. Make sure that the table
+name matches the name in the database.
+* PostgreSQL databases internally convert all names to lower case.
+Before running the `capture-schema` command on a PostgreSQL database,
+make sure table and column names are lower case in the
+`sun-cmp-mappings.xml` file.
+* An Oracle database user running the `capture-schema` command needs
+ANALYZE ANY TABLE privileges if that user does not own the schema. These
+privileges are granted to the user by the database administrator.
+
+[[beakb]][[GSDVG00154]][[configuring-the-cmp-resource]]
+
+=== Configuring the CMP Resource
+
+An EJB module that contains CMP beans requires the JNDI name of a JDBC
+resource in the `jndi-name` subelement of the `cmp-resource` element in
+the `glassfish-ejb-jar.xml` file. Set `PersistenceManagerFactory`
+properties as properties of the `cmp-resource` element in the
+`glassfish-ejb-jar.xml` file. See "link:application-deployment-guide/dd-elements.html#GSDPG00115[cmp-resource]" in
+{productName} Application Deployment Guide.
+
+In the Administration Console, open the Resources component, then select
+JDBC. Click the Help button in the Administration Console for
+information on creating a new JDBC resource.
+
+For a list of the JDBC drivers currently supported by the {productName}, see the link:release-notes.html#GSRLN[{productName} Release
+Notes]. For configurations of supported and other drivers, see
+"link:administration-guide/jdbc.html#GSADG00579[Configuration Specifics for JDBC Drivers]" in
+{productName} Administration Guide.
+
+For example, if the JDBC resource has the JNDI name `jdbc/MyDatabase`,
+set the CMP resource in the `glassfish-ejb-jar.xml` file as follows:
+
+[source,xml]
+----
+<cmp-resource>
+   <jndi-name>jdbc/MyDatabase</jndi-name>
+</cmp-resource>
+----
+
+[[beaki]][[GSDVG00155]][[performance-related-features]]
+
+=== Performance-Related Features
+
+The {productName} provides the following features to enhance
+performance or allow more fine-grained data checking. These features are
+supported only for entity beans with container managed persistence.
+
+The following topics are addressed here:
+
+* link:#beakj[Version Column Consistency Checking]
+* link:#beakk[Relationship Prefetching]
+* link:#beakl[Read-Only Beans]
+* link:#gemln[Default Fetch Group Flags]
+
+
+[NOTE]
+====
+Use of any of these features results in a non-portable application.
+====
+
+
+[[beakj]][[GSDVG00441]][[version-column-consistency-checking]]
+
+==== Version Column Consistency Checking
+
+The version consistency feature saves the bean state at first
+transactional access and caches it between transactions. The state is
+copied from the cache instead of being read from the database. The bean
+state is verified by primary key and version column values at flush for
+custom queries (for dirty instances only) and at commit (for clean and
+dirty instances).
+
+[[fwbei]][[GSDVG00071]][[to-use-version-consistency]]
+
+===== To Use Version Consistency
+
+1. Create the version column in the primary table.
+2. Give the version column a numeric data type.
+3. Provide appropriate update triggers on the version column. +
+These triggers must increment the version column on each update of the
+specified row.
+4. Specify the version column. +
+This is specified in the `check-version-of-accessed-instances`
+subelement of the `consistency` element in the `sun-cmp-mappings.xml`
+file. See "link:application-deployment-guide/dd-elements.html#GSDPG00126[consistency]" in {productName} Application Deployment Guide.
+5. Map the CMP bean to an existing schema.
++
+Automatic schema generation is not supported for beans with version
+column consistency checking. Instead, work with your database
+administrator to create the schema and add the required triggers.
+
+[[beakk]][[GSDVG00442]][[relationship-prefetching]]
+
+==== Relationship Prefetching
+
+In many cases when an entity bean's state is fetched from the database,
+its relationship fields are always accessed in the same transaction.
+Relationship prefetching saves database round trips by fetching data for
+an entity bean and those beans referenced by its CMR fields in a single
+database round trip.
+
+To enable relationship prefetching for a CMR field, use the `default`
+subelement of the `fetched-with` element in the `sun-cmp-mappings.xml`
+file. By default, these CMR fields are prefetched whenever
+`findByPrimaryKey` or a custom finder is executed for the entity, or
+when the entity is navigated to from a relationship. (Recursive
+prefetching is not supported, because it does not usually enhance
+performance.) See "link:application-deployment-guide/dd-elements.html#GSDPG00153[fetched-with]" in {productName} Application Deployment Guide.
+
+To disable prefetching for specific custom finders, use the
+`prefetch-disabled` element in the `glassfish-ejb-jar.xml` file. See
+"link:application-deployment-guide/dd-elements.html#GSDPG00226[prefetch-disabled]" in {productName} Application Deployment Guide.
+
+Multilevel relationship prefetching is supported for CMP 2.1 entity
+beans. To enable multilevel relationship prefetching, set the following
+property using the `asadmin create-jvm-options` command:
+
+[source]
+----
+asadmin create-jvm-options -Dcom.sun.jdo.spi.persistence.support.sqlstore.MULTILEVEL_PREFETCH=true
+----
+
+[[beakl]][[GSDVG00443]][[read-only-beans]]
+
+==== Read-Only Beans
+
+Another feature that the {productName} provides is the read-only
+bean, an entity bean that is never modified by an EJB client. Read-only
+beans avoid database updates completely.
+
+
+[NOTE]
+====
+Read-only beans are specific to the {productName} and are not part of
+the Enterprise JavaBeans Specification, v2.1. Use of this feature for an
+EJB 2.1 bean results in a non-portable application.
+====
+
+
+A read-only bean can be used to cache a database entry that is
+frequently accessed but rarely updated (externally by other beans). When
+the data that is cached by a read-only bean is updated by another bean,
+the read-only bean can be notified to refresh its cached data.
+
+The {productName} provides a number of ways by which a read-only
+bean's state can be refreshed. By setting the
+`refresh-period-in-seconds` element in the `glassfish-ejb-jar.xml` file
+and the `trans-attribute` element (or `@TransactionAttribute`
+annotation) in the `ejb-jar.xml` file, it is easy to configure a
+read-only bean that is one of the following:
+
+* Always refreshed
+* Periodically refreshed
+* Never refreshed
+* Programmatically refreshed
+
+Access to CMR fields of read-only beans is not supported. Deployment
+will succeed, but an exception will be thrown at runtime if a get or set
+method is invoked.
+
+Read-only beans are best suited for situations where the underlying data
+never changes, or changes infrequently. For further information and
+usage guidelines, see link:ejb.html#beail[Using Read-Only Beans].
+
+[[gemln]][[GSDVG00156]][[default-fetch-group-flags]]
+
+=== Default Fetch Group Flags
+
+Using the following flags can improve performance.
+
+Setting `-DAllowManagedFieldsInDefaultFetchGroup=true` allows CMP fields
+that by default cannot be placed into the default fetch group to be
+loaded along with all other fields that are fetched when the CMP state
+is loaded into memory. These could be multiple fields mapped to the same
+column in the database table, for example, an instance field and a CMR.
+By default this flag is set to `false`.
+
+For additional information, see "link:application-deployment-guide/dd-elements.html#GSDPG00181[level]" in {productName} Application Deployment Guide.
+
+Setting `-DAllowMediatedWriteInDefaultFetchGroup` specifies how updated
+CMP fields are written back to the database. If the flag is `false`, all
+fields in the CMP bean are written back to the database if at least one
+field in the default fetch group has been changed in a transaction. If
+the flag is `true`, only fields modified by the bean are written back to
+the database. Specifying `true` can improve performance, particularly on
+database tables with many columns that have not been updated. By default
+this flag is set to `false`.
+
+To set one of these flags, use the `asadmin create-jvm-options` command.
+For example:
+
+[source]
+----
+asadmin create-jvm-options -DAllowManagedFieldsInDefaultFetchGroup=true
+----
+
+[[beakc]][[GSDVG00157]][[configuring-queries-for-1.1-finders]]
+
+=== Configuring Queries for 1.1 Finders
+
+The following topics are addressed here:
+
+* link:#ganjq[About JDOQL Queries]
+* link:#gankm[Query Filter Expression]
+* link:#ganjt[Query Parameters]
+* link:#ganky[Query Variables]
+* link:#ganla[JDOQL Examples]
+
+[[ganjq]][[GSDVG00444]][[about-jdoql-queries]]
+
+==== About JDOQL Queries
+
+The Enterprise JavaBeans Specification, v1.1 does not specify the format
+of the finder method description. The {productName} uses an extension
+of Java Data Objects Query Language (JDOQL) queries to implement finder
+and selector methods. You can specify the following elements of the
+underlying JDOQL query:
+
+* Filter expression - A Java-like expression that specifies a condition
+that each object returned by the query must satisfy. Corresponds to the
+WHERE clause in EJB QL.
+* Query parameter declaration - Specifies the name and the type of one
+or more query input parameters. Follows the syntax for formal parameters
+in the Java language.
+* Query variable declaration - Specifies the name and type of one or
+more query variables. Follows the syntax for local variables in the Java
+language. A query filter might use query variables to implement joins.
+* Query ordering declaration - Specifies the ordering expression of the
+query. Corresponds to the ORDER BY clause of EJB QL.
+
+The {productName} specific deployment descriptor
+(`glassfish-ejb-jar.xml`) provides the following elements to store the
+EJB 1.1 finder method settings:
+
+[source]
+----
+query-filter
+query-params
+query-variables
+query-ordering
+----
+
+The bean developer uses these elements to construct a query. When the
+finder method that uses these elements executes, the values of these
+elements are used to execute a query in the database. The objects from
+the JDOQL query result set are converted into primary key instances to
+be returned by the EJB 1.1 `ejbFind` method.
+
+The JDO specification, http://jcp.org/en/jsr/detail?id=12[JSR 12]
+(`http://jcp.org/en/jsr/detail?id=12`), provides a comprehensive
+description of JDOQL. The following information summarizes the elements
+used to define EJB 1.1 finders.
+
+[[gankm]][[GSDVG00445]][[query-filter-expression]]
+
+==== Query Filter Expression
+
+The filter expression is a String containing a Boolean expression
+evaluated for each instance of the candidate class. If the filter is not
+specified, it defaults to true. Rules for constructing valid expressions
+follow the Java language, with the following differences:
+
+* Equality and ordering comparisons between primitives and instances of
+wrapper classes are valid.
+* Equality and ordering comparisons of Date fields and Date parameters
+are valid.
+* Equality and ordering comparisons of String fields and String
+parameters are valid.
+* White space (non-printing characters space, tab, carriage return, and
+line feed) is a separator and is otherwise ignored.
+* The following assignment operators are not supported.
+
+** Comparison operators such as =, +=, and so on
+
+** Pre- and post-increment
+
+** Pre- and post-decrement
+* Methods, including object construction, are not supported, except for
+these methods.
++
+[source,java]
+----
+Collection.contains(Object o)
+Collection.isEmpty()
+String.startsWith(String s)
+String.endsWith(String e)
+----
+In addition, the {productName} supports the following nonstandard
+JDOQL methods.
++
+[source,java]
+----
+String.like(String pattern)
+String.like(String pattern, char escape)
+String.substring(int start, int length)
+String.indexOf(String str)
+String.indexOf(String str, int start)
+String.length()
+Math.abs(numeric n)
+Math.sqrt(double d)
+----
+* Navigation through a null-valued field, which throws a
+`NullPointerException`, is treated as if the sub-expression returned
+`false`.
+
+
+[NOTE]
+====
+Comparisons between floating point values are by nature inexact.
+Therefore, equality comparisons (== and !=) with floating point values
+should be used with caution. Identifiers in the expression are
+considered to be in the name space of the candidate class, with the
+addition of declared parameters and variables. As in the Java language,
+`this` is a reserved word, and refers to the current instance being
+evaluated.
+====
+
+
+The following expressions are supported.
+
+* Relational operators (==, !=,>, <,>=, <=)
+* Boolean operators (&, &&, |, ||, ~, !)
+* Arithmetic operators (+, -, *, /)
+* String concatenation, only for String + String
+* Parentheses to explicitly mark operator precedence
+* Cast operator
+* Promotion of numeric operands for comparisons and arithmetic
+operations
+
+The rules for promotion follow the Java rules extended by BigDecimal,
+BigInteger, and numeric wrapper classes. See the numeric promotions of
+the Java language specification.
+
+[[ganjt]][[GSDVG00446]][[query-parameters]]
+
+==== Query Parameters
+
+The parameter declaration is a String containing one or more parameter
+type declarations separated by commas. This follows the Java syntax for
+method signatures.
+
+[[ganky]][[GSDVG00447]][[query-variables]]
+
+==== Query Variables
+
+The type declarations follow the Java syntax for local variable
+declarations.
+
+[[ganla]][[GSDVG00448]][[jdoql-examples]]
+
+==== JDOQL Examples
+
+This section provides a few query examples.
+
+[[gankk]][[GSDVG00309]][[example-1]]
+
+===== Example 1
+
+The following query returns all players called Michael. It defines a
+filter that compares the name field with a string literal:
+
+[source,java]
+----
+name == "Michael"
+----
+
+The `finder` element of the `glassfish-ejb-jar.xml` file looks like
+this:
+
+[source,xml]
+----
+<finder>
+   <method-name>findPlayerByName</method-name>
+   <query-filter>name == "Michael"</query-filter>
+</finder>
+----
+
+[[ganjz]][[GSDVG00310]][[example-2]]
+
+===== Example 2
+
+This query returns all products in a specified price range. It defines
+two query parameters which are the lower and upper bound for the price:
+double low, double high. The filter compares the query parameters with
+the price field:
+
+[source,java]
+----
+low < price && price < high
+----
+
+Query ordering is set to `price ascending`.
+
+The `finder` element of the `glassfish-ejb-jar.xml` file looks like
+this:
+
+[source,xml]
+----
+<finder>
+   <method-name>findInRange</method-name>
+   <query-params>double low, double high</query-params>
+   <query-filter>low &lt; price &amp;&amp; price &lt high</query-filter>
+   <query-ordering>price ascending</query-ordering>
+</finder>
+----
+
+[[gankz]][[GSDVG00311]][[example-3]]
+
+===== Example 3
+
+This query returns all players having a higher salary than the player
+with the specified name. It defines a query parameter for the name
+`java.lang.String name`. Furthermore, it defines a variable to which the
+player's salary is compared. It has the type of the persistence capable
+class that corresponds to the bean:
+
+[source]
+----
+    mypackage.PlayerEJB_170160966_JDOState player
+----
+
+The filter compares the salary of the current player denoted by the
+`this` keyword with the salary of the player with the specified name:
+
+[source,java]
+----
+    (this.salary> player.salary) && (player.name == name)
+----
+
+The `finder` element of the `glassfish-ejb-jar.xml` file looks like
+this:
+
+[source,xml]
+----
+<finder>
+   <method-name>findByHigherSalary</method-name>
+   <query-params>java.lang.String name</query-params>
+   <query-filter>
+      (this.salary &gt; player.salary) &amp;&amp; (player.name == name)
+   </query-filter>
+   <query-variables>
+      mypackage.PlayerEJB_170160966_JDOState player
+   </query-variables>
+</finder>
+----
+
+[[beakm]][[GSDVG00158]][[cmp-restrictions-and-optimizations]]
+
+=== CMP Restrictions and Optimizations
+
+This section discusses restrictions and performance optimizations that
+pertain to using CMP.
+
+The following topics are addressed here:
+
+* link:#gdtfj[Disabling ORDER BY Validation]
+* link:#geprt[Setting the Heap Size on DB2]
+* link:#beakn[Eager Loading of Field State]
+* link:#beako[Restrictions on Remote Interfaces]
+* link:#gcnto[PostgreSQL Case Insensitivity]
+* link:#beakr[No Support for `lock-when-loaded` on Sybase]
+* link:#beakp[Sybase Finder Limitation]
+* link:#beakq[Date and Time Fields]
+* link:#beaks[Set `RECURSIVE_TRIGGERS` to `false` on MSSQL]
+* link:#gbhbr[MySQL Database Restrictions]
+
+[[gdtfj]][[GSDVG00449]][[disabling-order-by-validation]]
+
+==== Disabling ORDER BY Validation
+
+EJB QL as defined in the EJB 2.1 Specification defines certain
+restrictions for the SELECT clause of an ORDER BY query (see section
+11.2.8 ORDER BY Clause). This ensures that a query does not order by a
+field that is not returned by the query. By default, the EJB QL compiler
+checks the above restriction and throws an exception if the query does
+not conform.
+
+However, some databases support SQL statements with an ORDER BY column
+that is not included in the SELECT clause. To disable the validation of
+the ORDER BY clause against the SELECT clause, set the
+`DISABLE_ORDERBY_VALIDATION` JVM option as follows:
+
+[source]
+----
+asadmin create-jvm-options
+-Dcom.sun.jdo.spi.persistence.support.ejb.ejbqlc.DISABLE_ORDERBY_VALIDATION=true
+----
+
+The `DISABLE_ORDERBY_VALIDATION` option is set to `false` by default.
+Setting it to `true` results in a non-portable module or application.
+
+[[geprt]][[GSDVG00450]][[setting-the-heap-size-on-db2]]
+
+==== Setting the Heap Size on DB2
+
+On DB2, the database configuration parameter `APPLHEAPSZ` determines the
+heap size. If you are using the Oracle or DataDirect database driver,
+set this parameter to at least `2048` for CMP. For more information, see
+`http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/opt/tsbp2024.html`.
+
+[[beakn]][[GSDVG00451]][[eager-loading-of-field-state]]
+
+==== Eager Loading of Field State
+
+By default, the EJB container loads the state for all persistent fields
+(excluding relationship, BLOB, and CLOB fields) before invoking the
+`ejbLoad` method of the abstract bean. This approach might not be
+optimal for entity objects with large state if most business methods
+require access to only parts of the state.
+
+Use the `fetched-with` element in `sun-cmp-mappings.xml` for fields that
+are used infrequently. See "link:application-deployment-guide/dd-elements.html#GSDPG00153[fetched-with]" in {productName} Application Deployment Guide.
+
+[[beako]][[GSDVG00452]][[restrictions-on-remote-interfaces]]
+
+==== Restrictions on Remote Interfaces
+
+The following restrictions apply to the remote interface of an EJB 2.1
+bean that uses CMP:
+
+* Do not expose the `get` and `set` methods for CMR fields or the
+persistence collection classes that are used in container-managed
+relationships through the remote interface of the bean.
++
+However, you are free to expose the `get` and `set` methods that
+correspond to the CMP fields of the entity bean through the bean's
+remote interface.
+* Do not expose the container-managed collection classes that are used
+for relationships through the remote interface of the bean.
+* Do not expose local interface types or local home interface types
+through the remote interface or remote home interface of the bean.
+
+Dependent value classes can be exposed in the remote interface or remote
+home interface, and can be included in the client EJB JAR file.
+
+[[gcnto]][[GSDVG00453]][[postgresql-case-insensitivity]]
+
+==== PostgreSQL Case Insensitivity
+
+Case-sensitive behavior cannot be achieved for PostgreSQL databases.
+PostgreSQL databases internally convert all names to lower case, which
+makes the following workarounds necessary:
+
+* In the CMP 2.1 runtime, PostgreSQL table and column names are not
+quoted, which makes these names case insensitive.
+* Before running the `capture-schema` command on a PostgreSQL database,
+make sure table and column names are lower case in the
+`sun-cmp-mappings.xml` file.
+
+[[beakr]][[GSDVG00454]][[no-support-for-lock-when-loaded-on-sybase]]
+
+==== No Support for `lock-when-loaded` on Sybase
+
+For EJB 2.1 beans, the `lock-when-loaded` consistency level is
+implemented by placing update locks on the data corresponding to a bean
+when the data is loaded from the database. There is no suitable
+mechanism available on Sybase databases to implement this feature.
+Therefore, the `lock-when-loaded` consistency level is not supported on
+Sybase databases. See "link:application-deployment-guide/dd-elements.html#GSDPG00126[consistency]" in {productName} Application Deployment Guide.
+
+[[beakp]][[GSDVG00455]][[sybase-finder-limitation]]
+
+==== Sybase Finder Limitation
+
+If a finder method with an input greater than 255 characters is executed
+and the primary key column is mapped to a VARCHAR column, Sybase
+attempts to convert type VARCHAR to type TEXT and generates the
+following error:
+
+[source]
+----
+com.sybase.jdbc2.jdbc.SybSQLException: Implicit conversion from datatype
+'TEXT' to 'VARCHAR' is not allowed. Use the CONVERT function to run this query.
+----
+
+To avoid this error, make sure the finder method input is less than 255
+characters.
+
+[[beakq]][[GSDVG00456]][[date-and-time-fields]]
+
+==== Date and Time Fields
+
+If a field type is a Java date or time type (`java.util.Date`,
+`java.sql.Date`, `java.sql.Time`, `java.sql.Timestamp`), make sure that
+the field value exactly matches the value in the database.
+
+For example, the following code uses a `java.sql.Date` type as a primary
+key field:
+
+[source,java]
+----
+java.sql.Date myDate = new java.sql.Date(System.currentTimeMillis())
+BeanA.create(myDate, ...);
+----
+
+For some databases, this code results in only the year, month, and date
+portion of the field value being stored in the database. Later if the
+client tries to find this bean by primary key as follows, the bean is
+not found in the database because the value does not match the one that
+is stored in the database.
+
+[source,java]
+----
+myBean = BeanA.findByPrimaryKey(myDate);
+----
+
+Similar problems can happen if the database truncates the timestamp
+value while storing it, or if a custom query has a date or time value
+comparison in its WHERE clause.
+
+For automatic mapping to an Oracle database, fields of type
+`java.util.Date`, `java.sql.Date`, and `java.sql.Time` are mapped to
+Oracle's DATE data type. Fields of type `java.sql.Timestamp` are mapped
+to Oracle's `TIMESTAMP(9)` data type.
+
+[[beaks]][[GSDVG00457]][[set-recursive_triggers-to-false-on-mssql]]
+
+==== Set `RECURSIVE_TRIGGERS` to `false` on MSSQL
+
+For version consistency triggers on MSSQL, the property
+`RECURSIVE_TRIGGERS` must be set to `false`, which is the default. If
+set to `true`, triggers throw a `java.sql.SQLException`.
+
+Set this property as follows:
+
+[source,sql]
+----
+EXEC sp_dboption 'database-name', 'recursive triggers', 'FALSE'
+go
+----
+
+You can test this property as follows:
+
+[source,sql]
+----
+SELECT DATABASEPROPERTYEX('database-name', 'IsRecursiveTriggersEnabled')
+go
+----
+
+[[gbhbr]][[GSDVG00458]][[mysql-database-restrictions]]
+
+==== MySQL Database Restrictions
+
+The following restrictions apply when you use a MySQL database with the
+{productName} for persistence.
+
+* MySQL treats `int1` and `int2` as reserved words. If you want to
+define `int1` and `int2` as fields in your table, use `\`int1\`` and
+`\`int2\`` field names in your SQL file.
+* When `VARCHAR` fields get truncated, a warning is displayed instead of
+an error. To get an error message, start the MySQL database in strict
+SQL mode.
+* The order of fields in a foreign key index must match the order in the
+explicitly created index on the primary table.
+* The `CREATE TABLE` syntax in the SQL file must end with the following
+line.
++
+[source,sql]
+----
+)  Engine=InnoDB;
+----
+`InnoDB` provides MySQL with a transaction-safe (ACID compliant) storage
+engine having commit, rollback, and crash recovery capabilities.
+* For a `FLOAT` type field, the correct precision must be defined. By
+default, MySQL uses four bytes to store a `FLOAT` type that does not
+have an explicit precision definition. For example, this causes a number
+such as 12345.67890123 to be rounded off to 12345.7 during an `INSERT`.
+To prevent this, specify `FLOAT(10,2)` in the DDL file, which forces the
+database to use an eight-byte double-precision column. For more
+information, see `http://dev.mysql.com/doc/mysql/en/numeric-types.html`.
+* To use `||` as the string concatenation symbol, start the MySQL server
+with the `--sql-mode="PIPES_AS_CONCAT"` option. For more information,
+see `http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html` and
+`http://dev.mysql.com/doc/mysql/en/ansi-mode.html`.
+* MySQL always starts a new connection when `autoCommit==true` is set.
+This ensures that each SQL statement forms a single transaction on its
+own. If you try to rollback or commit an SQL statement, you get an error
+message.
++
+[source]
+----
+javax.transaction.SystemException: java.sql.SQLException:
+Can't call rollback when autocommit=true
+
+javax.transaction.SystemException: java.sql.SQLException:
+Error open transaction is not closed
+----
+To resolve this issue, add `relaxAutoCommit=true` to the JDBC URL. For
+more information, see `http://forums.mysql.com/read.php?39,31326,31404`.
+* Change the trigger create format from the following:
++
+[source,sql]
+----
+CREATE TRIGGER T_UNKNOWNPKVC1
+BEFORE UPDATE ON UNKNOWNPKVC1
+FOR EACH ROW
+        WHEN (NEW.VERSION = OLD.VERSION)
+BEGIN
+        :NEW.VERSION := :OLD.VERSION + 1;
+END;
+/
+----
+To the following:
++
+[source,sql]
+----
+DELIMITER |
+CREATE TRIGGER T_UNKNOWNPKVC1
+BEFORE UPDATE ON UNKNOWNPKVC1
+FOR EACH ROW
+        WHEN (NEW.VERSION = OLD.VERSION)
+BEGIN
+        :NEW.VERSION := :OLD.VERSION + 1;
+END
+|
+DELIMITER ;
+----
+For more information, see
+`http://dev.mysql.com/doc/mysql/en/create-trigger.html`.
+* MySQL does not allow a `DELETE` on a row that contains a reference to
+itself. Here is an example that illustrates the issue.
++
+[source,sql]
+----
+create table EMPLOYEE (
+        empId   int         NOT NULL,
+        salary  float(25,2) NULL,
+        mgrId   int         NULL,
+        PRIMARY KEY (empId),
+        FOREIGN KEY (mgrId) REFERENCES EMPLOYEE (empId)
+        ) ENGINE=InnoDB;
+
+        insert into Employee values (1, 1234.34, 1);
+        delete from Employee where empId = 1;
+----
+This example fails with the following error message.
++
+[source]
+----
+ERROR 1217 (23000): Cannot delete or update a parent row:
+a foreign key constraint fails
+----
+To resolve this issue, change the table creation script to the
+following:
++
+[source,sql]
+----
+create table EMPLOYEE (
+        empId   int         NOT NULL,
+        salary  float(25,2) NULL,
+        mgrId   int         NULL,
+        PRIMARY KEY (empId),
+        FOREIGN KEY (mgrId) REFERENCES EMPLOYEE (empId)
+        ON DELETE SET NULL
+        ) ENGINE=InnoDB;
+
+        insert into Employee values (1, 1234.34, 1);
+        delete from Employee where empId = 1;
+----
+This can be done only if the foreign key field is allowed to be null.
+For more information, see
+`http://dev.mysql.com/doc/mysql/en/innodb-foreign-key-constraints.html`.
+* When an SQL script has foreign key constraints defined,
+`capture-schema` fails to capture the table information correctly. To
+work around the problem, remove the constraints and then run
+`capture-schema`. Here is an example that illustrates the issue.
++
+[source,sql]
+----
+CREATE TABLE ADDRESSBOOKBEANTABLE (ADDRESSBOOKNAME VARCHAR(255)
+    NOT NULL PRIMARY KEY,
+CONNECTEDUSERS              BLOB NULL,
+OWNER                       VARCHAR(256),
+FK_FOR_ACCESSPRIVILEGES     VARCHAR(256),
+CONSTRAINT FK_ACCESSPRIVILEGE FOREIGN KEY (FK_FOR_ACCESSPRIVILEGES)
+    REFERENCES ACCESSPRIVILEGESBEANTABLE (ROOT)
+) ENGINE=InnoDB;
+----
+To resolve this issue, change the table creation script to the
+following:
++
+[source,sql]
+----
+CREATE TABLE ADDRESSBOOKBEANTABLE (ADDRESSBOOKNAME VARCHAR(255)
+    NOT NULL PRIMARY KEY,
+CONNECTEDUSERS              BLOB NULL,
+OWNER                       VARCHAR(256),
+FK_FOR_ACCESSPRIVILEGES     VARCHAR(256)
+) ENGINE=InnoDB;
+----
+
+
diff --git a/docs/application-development-guide/src/main/asciidoc/debugging-apps.adoc b/docs/application-development-guide/src/main/asciidoc/debugging-apps.adoc
new file mode 100644
index 0000000..0ad1c70
--- /dev/null
+++ b/docs/application-development-guide/src/main/asciidoc/debugging-apps.adoc
@@ -0,0 +1,439 @@
+type=page
+status=published
+title=Debugging Applications
+next=part-apps-and-app-comps.html
+prev=class-loaders.html
+~~~~~~
+
+= Debugging Applications
+
+[[GSDVG00004]][[beafc]]
+
+
+[[debugging-applications]]
+== 3 Debugging Applications
+
+This chapter gives guidelines for debugging applications in the {productName}.
+
+The following topics are addressed here:
+
+* link:#beafd[Enabling Debugging]
+* link:#beafe[JPDA Options]
+* link:#beaff[Generating a Stack Trace for Debugging]
+* link:#gekvq[Application Client Debugging]
+* link:#beafk[Open Message Queue Debugging]
+* link:#beafl[Enabling Verbose Mode]
+* link:#gkpdk[Class Loader Debugging]
+* link:#beafm[{productName} Logging]
+* link:#beafn[Profiling Tools]
+
+[[beafd]][[GSDVG00101]][[enabling-debugging]]
+
+=== Enabling Debugging
+
+When you enable debugging, you enable both local and remote debugging.
+To start the server in debug mode, use the `--debug` option as follows:
+
+[source]
+----
+asadmin start-domain --debug [domain-name]
+----
+
+You can then attach to the server from the Java Debugger (`jdb`) at its
+default Java Platform Debugger Architecture (JPDA) port, which is 9009.
+For example, for UNIX systems:
+
+[source]
+----
+jdb -attach 9009
+----
+
+For Windows:
+
+[source]
+----
+jdb -connect com.sun.jdi.SocketAttach:port=9009
+----
+
+For more information about the `jdb` debugger, see the following links:
+
+* Java Platform Debugger Architecture - The Java Debugger:
+`http://java.sun.com/javase/technologies/core/toolsapis/jpda/`
+* Java Platform Debugger Architecture - Connecting with JDB:
+`http://java.sun.com/javase/technologies/core/toolsapis/jpda/`
+
+{productName} debugging is based on the JPDA. For more information,
+see link:#beafe[JPDA Options].
+
+You can attach to the {productName} using any JPDA compliant
+debugger, including that of http://www.netbeans.org[NetBeans]
+(`http://www.netbeans.org`), Java Studio Enterprise, JBuilder, Eclipse,
+and so on.
+
+You can enable debugging even when the {productName} is started
+without the `--debug` option. This is useful if you start the {productName} from the Windows Start Menu, or if you want to make sure that
+debugging is always turned on.
+
+[[fvyit]][[GSDVG00049]][[to-set-the-server-to-automatically-start-up-in-debug-mode]]
+
+==== To Set the Server to Automatically Start Up in Debug Mode
+
+1. Use the Administration Console. Select the JVM Settings component
+under the relevant configuration.
+2. Check the Debug Enabled box.
+3. To specify a different port (from 9009, the default) to use when
+attaching the JVM software to a debugger, specify ``address=``port-number
+in the Debug Options field.
+4. To add JPDA options, add any desired JPDA debugging options in Debug
+Options. See link:#beafe[JPDA Options].
+
+[[GSDVG532]]
+
+See Also
+
+For details, click the Help button in the Administration Console from
+the JVM Settings page.
+
+[[beafe]][[GSDVG00102]][[jpda-options]]
+
+=== JPDA Options
+
+The default JPDA options in {productName} are as follows:
+
+[source]
+----
+-Xdebug -agentlib:transport=dt_socket,server=y,suspend=n,address=9009
+----
+
+For Windows, you can change `dt_socket` to `dt_shmem`.
+
+If you substitute `suspend=y`, the JVM software starts in suspended mode
+and stays suspended until a debugger attaches to it. This is helpful if
+you want to start debugging as soon as the JVM software starts.
+
+To specify a different port (from 9009, the default) to use when
+attaching the JVM software to a debugger, specify `address=`port-number.
+
+You can include additional options. A list of JPDA debugging options is
+available at
+`http://java.sun.com/javase/technologies/core/toolsapis/jpda/`.
+
+[[beaff]][[GSDVG00103]][[generating-a-stack-trace-for-debugging]]
+
+=== Generating a Stack Trace for Debugging
+
+To generate a Java stack trace for debugging, use the
+`asadmin generate-jvm-report --type=thread` command. The stack trace
+goes to the domain-dir`/logs/server.log` file and also appears on the
+command prompt screen. For more information about the
+`asadmin generate-jvm-report` command, see the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+[[gekvq]][[GSDVG00104]][[application-client-debugging]]
+
+=== Application Client Debugging
+
+When the `appclient` script executes the `java` command to run the
+Application Client Container (ACC), which in turn runs the client, it
+includes on the command line the value of the `VMARGS` environment
+variable. You can set this variable to any suitable value. For example:
+
+[source]
+----
+VMARGS=-agentlib:transport=dt_socket,server=y,suspend=y,address=8118
+----
+
+For debugging an application client, you should set suspend to `y` so
+you can connect the debugger to the client before any code has actually
+executed. Otherwise, the client may start running and execute past the
+point you want to examine.
+
+You should use different ports for the server and client if you are
+debugging both concurrently. For details about setting the port, see
+link:#beafe[JPDA Options].
+
+You can also include JVM options in the `appclient` script directly. For
+information about the `appclient` script, see the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+
+[NOTE]
+====
+The Application Client Container is supported only in the full {productName}, not in the Web Profile. See
+link:java-clients.html#beakt[Developing Java Clients].
+====
+
+
+[[beafk]][[GSDVG00105]][[open-message-queue-debugging]]
+
+=== Open Message Queue Debugging
+
+Open Message Queue has a broker logger, which can be useful for
+debugging Java Message Service (JMS) applications, including
+message-driven bean applications. You can adjust the logger's verbosity,
+and you can send the logger output to the broker's console using the
+broker's `-tty` option. For more information, see the link:../openmq/mq-admin-guide.html#GMADG[Open
+Message Queue Administration Guide].
+
+
+[NOTE]
+====
+JMS resources are supported only in the full {productName}, not in
+the Web Profile. See link:jms.html#beaob[Using the Java Message Service].
+====
+
+
+[[beafl]][[GSDVG00106]][[enabling-verbose-mode]]
+
+=== Enabling Verbose Mode
+
+To have the server logs and messages printed to `System.out` on your
+command prompt screen, you can start the server in verbose mode. This
+makes it easy to do simple debugging using print statements, without
+having to view the `server.log` file every time.
+
+To start the server in verbose mode, use the `--verbose` option as
+follows:
+
+[source]
+----
+asadmin start-domain --verbose [domain-name]
+----
+
+When the server is in verbose mode, messages are logged to the console
+or terminal window in addition to the log file. In addition, pressing
+Ctrl-C stops the server and pressing Ctrl-\ (on UNIX platforms) or
+Ctrl-Break (on Windows platforms) prints a thread dump. On UNIX
+platforms, you can also print a thread dump using the `jstack` command
+(see
+`http://docs.oracle.com/javase/8/docs/technotes/tools/share/jstack.html`)
+or the command `kill -QUIT` process_id.
+
+[[gkpdk]][[GSDVG00107]][[class-loader-debugging]]
+
+=== Class Loader Debugging
+
+To generate class loading messages, use the following
+`asadmin create-jvm-options` command:
+
+[source]
+----
+asadmin create-jvm-options -verbose\:class
+----
+
+To send the JVM messages to a special JVM log file instead of `stdout`,
+use the following `asadmin create-jvm-options` commands:
+
+[source]
+----
+asadmin create-jvm-options -XX\:+LogVMOutput
+asadmin create-jvm-options -XX\:LogFile=${com.sun.aas.instanceRoot}/logs/jvm.log
+----
+
+
+[NOTE]
+====
+These `-XX` options are specific to the OpenJDK (or Hotspot) JVM and do
+not work with the JRockit JVM.
+====
+
+
+To send the {productName} messages to the Administration Console
+instead of `stderr`, start the domain in verbose mode as described in
+link:#beafl[Enabling Verbose Mode].
+
+[[beafm]][[GSDVG00108]][[glassfish-server-logging]]
+
+=== {productName} Logging
+
+You can use the {productName}'s log files to help debug your
+applications. Use the Administration Console. Select the Stand-Alone
+Instances component, select the instance from the table, then click the
+View Log Files button in the General Information page. Or select the
+Cluster component, select the cluster from the table, select the
+Instances tab, select the instance from the table, then click the View
+Log Files button in the General Information page.
+
+To change logging settings, select Logger Settings under the relevant configuration.
+
+For details about logging, click the Help button in the Administration Console.
+
+[[beafn]][[GSDVG00109]][[profiling-tools]]
+
+=== Profiling Tools
+
+You can use a profiler to perform remote profiling on the {productName} to discover bottlenecks in server-side performance. This section
+describes how to configure profilers for use with {productName}.
+
+The following topics are addressed here:
+
+* link:#gcicc[The NetBeans Profiler]
+* link:#beafo[The HPROF Profiler]
+* link:#beafr[The JProbe Profiler]
+
+Information about comprehensive monitoring and management support in the
+Java 2 Platform, Standard Edition ( J2SE platform) is available at
+`http://docs.oracle.com/javase/8/docs/technotes/guides/management/index.html`.
+
+[[gcicc]][[GSDVG00345]][[the-netbeans-profiler]]
+
+==== The NetBeans Profiler
+
+For information on how to use the NetBeans profiler, see
+`http://profiler.netbeans.org/index.html`.
+
+[[beafo]][[GSDVG00346]][[the-hprof-profiler]]
+
+==== The HPROF Profiler
+
+The Heap and CPU Profiling Agent (HPROF) is a simple profiler agent
+shipped with the Java 2 SDK. It is a dynamically linked library that
+interacts with the Java Virtual Machine Profiler Interface (JVMPI) and
+writes out profiling information either to a file or to a socket in
+ASCII or binary format.
+
+HPROF can monitor CPU usage, heap allocation statistics, and contention
+profiles. In addition, it can also report complete heap dumps and states
+of all the monitors and threads in the Java virtual machine. For more
+details on the HPROF profiler, see the technical article at
+`http://java.sun.com/developer/technicalArticles/Programming/HPROF.html`.
+
+After HPROF is enabled using the following instructions, its libraries
+are loaded into the server process.
+
+[[fvylg]][[GSDVG00050]][[to-use-hprof-profiling-on-unix]]
+
+===== To Use HPROF Profiling on UNIX
+
+1. Use the Administration Console. Select the JVM Settings component
+under the relevant configuration. Then select the Profiler tab.
+2. Edit the following fields:
+* Profiler Name - `hprof`
+* Profiler Enabled - `true`
+* Classpath - (leave blank)
+* Native Library Path - (leave blank)
+* JVM Option - Select Add, type the HPROF JVM option in the Value field,
+then check its box. The syntax of the HPROF JVM option is as follows:
++
+[source]
+----
+-Xrunhprof[:help]|[:param=value,param2=value2, ...]
+----
+Here is an example of params you can use:
++
+[source]
+----
+-Xrunhprof:file=log.txt,thread=y,depth=3
+----
+The file parameter determines where the stack dump is written.
++
+Using help lists parameters that can be passed to HPROF. The output is
+as follows:
++
+[source]
+----
+Hprof usage: -Xrunhprof[:help]|[:<option>=<value>, ...]
+
+== Option Name and Value   Description             Default   -----------             -------
+heap=dump|sites|all     heap profiling          all
+cpu=samples|old         CPU usage               off
+format=a|b              ascii or binary output  a
+file=<file>             write data to file      java.hprof
+                               (.txt for ascii)
+net=<host>:<port>       send data over a socket write to file
+depth=<size>            stack trace depth       4
+cutoff=<value>          output cutoff point     0.0001
+lineno=y|n              line number in traces?  y
+thread=y|n              thread in traces?       n
+doe=y|n                 dump on exit?           y
+----
++
+[NOTE]
+====
+Do not use help in the JVM Option field. This parameter prints text to
+the standard output and then exits.
+
+The help output refers to the parameters as options, but they are not
+the same thing as JVM options.
+====
+
+3. [[hprofstp2]]
+Restart the {productName}.
++
+This writes an HPROF stack dump to the file you specified using the file
+HPROF parameter.
+
+[[beafr]][[GSDVG00347]][[the-jprobe-profiler]]
+
+==== The JProbe Profiler
+
+Information about JProbe from Sitraka is available at
+`http://www.quest.com/jprobe/`.
+
+After JProbe is installed using the following instructions, its
+libraries are loaded into the server process.
+
+[[fvymj]][[GSDVG00051]][[to-enable-remote-profiling-with-jprobe]]
+
+===== To Enable Remote Profiling With JProbe
+
+1. Install JProbe 3.0.1.1. For details, see the JProbe documentation.
+
+2. Configure {productName} using the Administration Console:
+[arabic]
+.. Select the JVM Settings component under the relevant configuration.
+.. Then select the Profiler tab.
+.. Edit the following fields before selecting Save and restarting the server: +
+Profiler Name - `jprobe` +
+Profiler Enabled - `true` +
+Classpath - (leave blank) +
+Native Library Path - JProbe-dir``/profiler`` +
+JVM Option - For each of these options, select Add, type the option in
+the Value field, then check its box:
++
+[source]
+----
+    -Xbootclasspath/p:JProbe-dir/profiler/jpagent.jar
+    -Xrunjprobeagent
+    -Xnoclassgc
+----
++
+[NOTE]
+====
+If any of the configuration options are missing or incorrect, the
+profiler might experience problems that affect the performance of the
+{productName}.
+====
++
+When the server starts up with this configuration, you can attach the
+profiler.
+
+3. Set the following environment variable:
++
+[source]
+----
+JPROBE_ARGS_0=-jp_input=JPL-file-path
+----
+See Step link:#jprbstp6[6] for instructions on how to create the JPL
+file.
+4. Start the server instance.
+
+5. Launch the `jpprofiler` and attach to Remote Session.
+The default port is `4444`.
+
+6. [[jprbstp6]]
+Create the JPL file using the *JProbe Launch Pad*. Here are the required settings: +
+[arabic]
+.. Select Server Side for the type of application.
+.. On the Program tab, provide the following details: +
+Target Server - other-server +
+Server home Directory - as-install +
+Server class File - `com.sun.enterprise.server.J2EERunner` +
+Working Directory - as-install +
+Classpath - as-install``/lib/appserv-rt.jar`` +
+Source File Path - source-code-dir (in case you want to get the line level details) +
+Server class arguments - (optional) +
+Main Package - `com.sun.enterprise.server` +
+You must also set VM, Attach, and Coverage tabs appropriately. +
+For further details, see the JProbe documentation. +
+After you have created the JPL file, use this an input to `JPROBE_ARGS_0`.
+
+
diff --git a/docs/application-development-guide/src/main/asciidoc/ejb.adoc b/docs/application-development-guide/src/main/asciidoc/ejb.adoc
new file mode 100644
index 0000000..25f20e5
--- /dev/null
+++ b/docs/application-development-guide/src/main/asciidoc/ejb.adoc
@@ -0,0 +1,1301 @@
+type=page
+status=published
+title=Using Enterprise JavaBeans Technology
+next=container_managed-persistence.html
+prev=webapps.html
+~~~~~~
+
+= Using Enterprise JavaBeans Technology
+
+[[GSDVG00010]][[beahl]]
+
+
+[[using-enterprise-javabeans-technology]]
+== 8 Using Enterprise JavaBeans Technology
+
+This chapter describes how Enterprise JavaBeans ( EJB) technology is
+supported in the {productName}.
+
+The following topics are addressed here:
+
+* link:#beahn[Value Added Features]
+* link:#beahw[EJB Timer Service]
+* link:#beahx[Using Session Beans]
+* link:#beail[Using Read-Only Beans]
+* link:#beait[Using Message-Driven Beans]
+
+For general information about enterprise beans, see
+https://eclipse-ee4j.github.io/jakartaee-tutorial/#enterprise-beans[Enterprise Beans]
+in The Jakarta EE Tutorial.
+
+
+[NOTE]
+====
+The Web Profile of the {productName} supports the EJB 3.1 Lite
+specification, which allows enterprise beans within web applications,
+among other features. The full {productName} supports the entire EJB
+3.1 specification. For details, see
+http://jcp.org/en/jsr/detail?id=318[JSR 318]
+(`http://jcp.org/en/jsr/detail?id=318`).
+
+The {productName} is backward compatible with 1.1, 2.0, 2.1, and 3.0
+enterprise beans. However, to take advantage of version 3.1 features,
+you should develop new beans as 3.1 enterprise beans.
+====
+
+
+[[beahn]][[GSDVG00145]][[value-added-features]]
+
+=== Value Added Features
+
+The {productName} provides a number of value additions that relate to
+EJB development. References to more in-depth material are included.
+
+The following topics are addressed here:
+
+* link:#beaho[Read-Only Beans]
+* link:#beahp[The `pass-by-reference` Element]
+* link:#beahq[Pooling and Caching]
+* link:#beahu[Priority Based Scheduling of Remote Bean Invocations]
+* link:#beahv[Immediate Flushing]
+
+[[beaho]][[GSDVG00420]][[read-only-beans]]
+
+==== Read-Only Beans
+
+Another feature that the {productName} provides is the read-only
+bean, an EJB 2.1 entity bean that is never modified by an EJB client.
+Read-only beans avoid database updates completely.
+
+
+[NOTE]
+====
+Read-only beans are specific to the {productName} and are not part of
+the Enterprise JavaBeans Specification, v2.1. Use of this feature for an
+EJB 2.1 bean results in a non-portable application.
+
+To make an EJB 3.0 entity read-only, use `@Column` annotations to mark
+its columns `insertable=false` and `updatable=false`.
+====
+
+
+A read-only bean can be used to cache a database entry that is
+frequently accessed but rarely updated (externally by other beans). When
+the data that is cached by a read-only bean is updated by another bean,
+the read-only bean can be notified to refresh its cached data.
+
+The {productName} provides a number of ways by which a read-only
+bean's state can be refreshed. By setting the
+`refresh-period-in-seconds` element in the `glassfish-ejb-jar.xml` file
+and the `trans-attribute` element (or `@TransactionAttribute`
+annotation) in the `ejb-jar.xml` file, it is easy to configure a
+read-only bean that is one of the following:
+
+* Always refreshed
+* Periodically refreshed
+* Never refreshed
+* Programmatically refreshed
+
+Read-only beans are best suited for situations where the underlying data
+never changes, or changes infrequently. For further information and
+usage guidelines, see link:#beail[Using Read-Only Beans].
+
+[[beahp]][[GSDVG00421]][[the-pass-by-reference-element]]
+
+==== The `pass-by-reference` Element
+
+The `pass-by-reference` element in the `glassfish-ejb-jar.xml` file
+allows you to specify the parameter passing semantics for colocated
+remote EJB invocations. This is an opportunity to improve performance.
+However, use of this feature results in non-portable applications. See
+"link:application-deployment-guide/dd-elements.html#GSDPG00219[pass-by-reference]" in {productName} Application Deployment Guide.
+
+[[beahq]][[GSDVG00422]][[pooling-and-caching]]
+
+==== Pooling and Caching
+
+The EJB container of the {productName} pools anonymous instances
+(message-driven beans, stateless session beans, and entity beans) to
+reduce the overhead of creating and destroying objects. The EJB
+container maintains the free pool for each bean that is deployed. Bean
+instances in the free pool have no identity (that is, no primary key
+associated) and are used to serve method calls. The free beans are also
+used to serve all methods for stateless session beans.
+
+Bean instances in the free pool transition from a Pooled state to a
+Cached state after `ejbCreate` and the business methods run. The size
+and behavior of each pool is controlled using pool-related properties in
+the EJB container or the `glassfish-ejb-jar.xml` file.
+
+In addition, the {productName} supports a number of tunable
+parameters that can control the number of "stateful" instances (stateful
+session beans and entity beans) cached as well as the duration they are
+cached. Multiple bean instances that refer to the same database row in a
+table can be cached. The EJB container maintains a cache for each bean
+that is deployed.
+
+To achieve scalability, the container selectively evicts some bean
+instances from the cache, usually when cache overflows. These evicted
+bean instances return to the free bean pool. The size and behavior of
+each cache can be controlled using the cache-related properties in the
+EJB container or the `glassfish-ejb-jar.xml` file.
+
+Pooling and caching parameters for the `glassfish-ejb-jar.xml` file are
+described in "link:application-deployment-guide/dd-elements.html#GSDPG00095[bean-cache]" in {productName} Application Deployment Guide.
+
+[[beahr]][[GSDVG00285]][[pooling-parameters]]
+
+===== Pooling Parameters
+
+One of the most important parameters for {productName} pooling is
+`steady-pool-size`. When `steady-pool-size` is set to a value greater
+than 0, the container not only pre-populates the bean pool with the
+specified number of beans, but also attempts to ensure that this number
+of beans is always available in the free pool. This ensures that there
+are enough beans in the ready-to-serve state to process user requests.
+
+Note that the `steady-pool-size` and `max-pool-size` parameters only
+govern the number of instances that are pooled over a long period of
+time. They do not necessarily guarantee that the number of instances
+that may exist in the JVM at a given time will not exceed the value
+specified by `max-pool-size`. For example, suppose an idle stateless
+session container has a fully-populated pool with a `steady-pool-size`
+of 10. If 20 concurrent requests arrive for the EJB component, the
+container creates 10 additional instances to satisfy the burst of
+requests. The advantage of this is that it prevents the container from
+blocking any of the incoming requests. However, if the activity dies
+down to 10 or fewer concurrent requests, the additional 10 instances are
+discarded.
+
+Another parameter, `pool-idle-timeout-in-seconds`, allows the
+administrator to specify the amount of time a bean instance can be idle
+in the pool. When `pool-idle-timeout-in-seconds` is set to greater than
+0, the container removes or destroys any bean instance that is idle for
+this specified duration.
+
+[[beahs]][[GSDVG00286]][[caching-parameters]]
+
+===== Caching Parameters
+
+{productName} provides a way that completely avoids caching of entity
+beans, using commit option C. Commit option C is particularly useful if
+beans are accessed in large number but very rarely reused. For
+additional information, refer to
+link:transaction-service.html#beajh[Commit Options].
+
+The {productName} caches can be either bounded or unbounded. Bounded
+caches have limits on the number of beans that they can hold beyond
+which beans are passivated. For stateful session beans, there are three
+ways (LRU, NRU and FIFO) of picking victim beans when cache overflow
+occurs. Caches can also passivate beans that are idle (not accessed for
+a specified duration).
+
+[[beahu]][[GSDVG00423]][[priority-based-scheduling-of-remote-bean-invocations]]
+
+==== Priority Based Scheduling of Remote Bean Invocations
+
+You can create multiple thread pools, each having its own work queues.
+An optional element in the `glassfish-ejb-jar.xml` file,
+`use-thread-pool-id`, specifies the thread pool that processes the
+requests for the bean. The bean must have a remote interface, or
+`use-thread-pool-id` is ignored. You can create different thread pools
+and specify the appropriate thread pool ID for a bean that requires a
+quick response time. If there is no such thread pool configured or if
+the element is absent, the default thread pool is used.
+
+[[beahv]][[GSDVG00424]][[immediate-flushing]]
+
+==== Immediate Flushing
+
+Normally, all entity bean updates within a transaction are batched and
+executed at the end of the transaction. The only exception is the
+database flush that precedes execution of a finder or select query.
+
+Since a transaction often spans many method calls, you might want to
+find out if the updates made by a method succeeded or failed immediately
+after method execution. To force a flush at the end of a method's
+execution, use the `flush-at-end-of-method` element in the
+`glassfish-ejb-jar.xml` file. Only non-finder methods in an entity bean
+can be flush-enabled. (For an EJB 2.1 bean, these methods must be in the
+Local, Local Home, Remote, or Remote Home interface.) See
+"link:application-deployment-guide/dd-elements.html#GSDPG00156[flush-at-end-of-method]" in {productName} Application Deployment Guide.
+
+Upon completion of the method, the EJB container updates the database.
+Any exception thrown by the underlying data store is wrapped as follows:
+
+* If the method that triggered the flush is a `create` method, the
+exception is wrapped with `CreateException`.
+* If the method that triggered the flush is a `remove` method, the
+exception is wrapped with `RemoveException`.
+* For all other methods, the exception is wrapped with `EJBException`.
+
+All normal end-of-transaction database synchronization steps occur
+regardless of whether the database has been flushed during the
+transaction.
+
+[[beahw]][[GSDVG00146]][[ejb-timer-service]]
+
+=== EJB Timer Service
+
+The EJB Timer Service uses a database to store persistent information
+about EJB timers. The EJB Timer Service in {productName} is
+preconfigured to use an embedded version of the Apache Derby database.
+
+The EJB Timer Service configuration can store persistent timer
+information in any database supported by the {productName} for
+persistence. For a list of the JDBC drivers currently supported by the
+{productName}, see the link:release-notes.html#GSRLN[{productName} Release Notes]. For configurations of supported and other
+drivers, see "link:administration-guide/jdbc.html#GSADG00579[Configuration Specifics for JDBC
+Drivers]" in {productName} Administration Guide.
+
+The timer service is automatically enabled when you deploy an
+application or module that uses it. You can verify that the timer
+service is running by accessing the following URL:
+
+[source]
+----
+http://localhost:8080/ejb-timer-service-app/timer
+----
+
+To change the database used by the EJB Timer Service, set the EJB Timer
+Service's Timer DataSource setting to a valid JDBC resource. If the EJB
+Timer Service has already been started in a server instance, you must
+also create the timer database table. DDL files are located in
+as-install``/lib/install/databases``.
+
+Using the EJB Timer Service is equivalent to interacting with a single
+JDBC resource manager. If an EJB component or application accesses a
+database either directly through JDBC or indirectly (for example,
+through an entity bean's persistence mechanism), and also interacts with
+the EJB Timer Service, its data source must be configured with an XA
+JDBC driver.
+
+You can change the following EJB Timer Service settings. You must
+restart the server for the changes to take effect.
+
+Minimum Delivery Interval::
+  Specifies the minimum time in milliseconds before an expiration for a
+  particular timer can occur. This guards against extremely small timer
+  increments that can overload the server. The default is `1000`.
+Maximum Redeliveries::
+  Specifies the maximum number of times the EJB timer service attempts
+  to redeliver a timer expiration after an exception or rollback of a
+  container-managed transaction. The default is `1`.
+Redelivery Interval::
+  Specifies how long in milliseconds the EJB timer service waits after a
+  failed `ejbTimeout` delivery before attempting a redelivery. The
+  default is `5000`.
+Timer DataSource::
+  Specifies the database used by the EJB Timer Service. The default is
+  `jdbc/__TimerPool`.
+
++
+[CAUTION]
+====
+Do not use the `jdbc/\__TimerPool` resource for timers in clustered
+{productName} environments.
+You must instead use a custom JDBC resource or the `jdbc/__default` resource.
+See the instructions below, in link:#gktqo[To Deploy an EJB Timer to a Cluster].
+Also refer to
+"link:administration-guide/jdbc.html#GSADG00747[Enabling the jdbc/__default Resource in a Clustered Environment]"
+in {productName} Administration Guide.
+====
+
+
+For information about the `asadmin list-timers` and
+`asadmin migrate-timers` subcommands, see the link:reference-manual.html#GSRFM[{productName} Reference Manual]. For information about
+migrating EJB timers, see "link:ha-administration-guide/instances.html#GSHAG00190[Migrating EJB Timers]" in
+{productName} High Availability Administration
+Guide.
+
+You can use the `--keepstate` option of the `asadmin redeploy` command
+to retain EJB timers between redeployments.
+
+The default for `--keepstate` is false. This option is supported only on
+the default server instance, named `server`. It is not supported and
+ignored for any other target.
+
+When the `--keepstate` is set to true, each application that uses an EJB
+timer is assigned an ID in the timer database. The EJB object that is
+associated with a given application is assigned an ID that is
+constructed from the application ID and a numerical suffix. To preserve
+active timer data, {productName} stores the application ID and the
+EJB ID in the timer database. To restore the data, the class loader of
+the newly redeployed application retrieves the EJB timers that
+correspond to these IDs from the timer database.
+
+For more information about the `asadmin redeploy` command, see the
+link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+[[gktqo]][[GSDVG00070]][[to-deploy-an-ejb-timer-to-a-cluster]]
+
+==== To Deploy an EJB Timer to a Cluster
+
+This procedure explains how to deploy an EJB timer to a cluster.
+
+By default, the {productName} 7 timer service points to the
+preconfigured `jdbc/__TimerPool` resource, which uses an embedded Apache
+Derby database configuration that will not work in clustered
+environments.
+
+The problem is that embedded Apache Derby database runs in the {productName} Java VM, so when you use the `jdbc/__TimerPool` resource, each
+DAS and each clustered server instance will have its own database table.
+Because of this, clustered server instances will not be able to find the
+database table on the DAS, and the DAS will not be able to find the
+tables on the clustered server instances.
+
+The solution is to use either a custom JDBC resource or the
+`jdbc/__default` resource that is preconfigured but not enabled by
+default in {productName}. The `jdbc/__default` resource does not use
+the embedded Apache Derby database by default.
+
+[[GSDVG547]]
+
+Before You Begin
+
+If creating a new timer resource, the resource should be created before
+deploying applications that will use the timer.
+
+
+[CAUTION]
+====
+Do not use the `jdbc/\__TimerPool` resource for timers in clustered
+{productName} environments.
+You must instead use a custom JDBC resource or the `jdbc/__default` resource.
+See "link:GSADG00747[Enabling the jdbc/__default Resource in a Clustered Environment]"
+in {productName} Administration Guide.
+====
+
+
+1. Execute the following command:
++
+[source]
+----
+asadmin set configs.config.cluster_name-config.ejb-container.ejb-timer-service.timer-
+datasource=jdbc/my-timer-resource
+----
+2. Restart the DAS and the target cluster(s).
++
+[source]
+----
+asadmin stop-cluster cluster-name
+asadmin stop-domain domain-name
+asadmin start-domain domain-name
+asadmin start-cluster cluster-name
+----
+
+[[GSDVG548]]
+
+Troubleshooting
+
+If you inadvertently used the `jdbc/__TimerPool` resource for your EJB
+timer in a clustered {productName} environment, the DAS and the
+clustered server instances will be using separate Apache Derby database
+tables that are running in individual Java VMs. For timers to work in a
+clustered environment, the DAS and the clustered server instances must
+share a common database table.
+
+If you attempt to deploy an application with EJB timers without setting
+the timer resource correctly, the startup will fail, and you will be
+left with a marker file, named `ejb-timer-service-app`, on the DAS that
+will prevent the Timer Service from correctly creating the database
+table.
+
+The solution is to remove the marker file on the DAS, restart the DAS
+and the clusters, and then redploy any applications that rely on the
+offending EJB timer. The marker file is located on the DAS in
+domain-dir`/generated/ejb/``ejb-timer-service-app`.
+
+[[beahx]][[GSDVG00147]][[using-session-beans]]
+
+=== Using Session Beans
+
+This section provides guidelines for creating session beans in the
+{productName} environment.
+
+The following topics are addressed here:
+
+* link:#beahy[About the Session Bean Containers]
+* link:#beaib[Stateful Session Bean Failover]
+* link:#beaii[Session Bean Restrictions and Optimizations]
+
+Information on session beans is contained in the Enterprise JavaBeans
+Specification, v3.1.
+
+[[beahy]][[GSDVG00425]][[about-the-session-bean-containers]]
+
+==== About the Session Bean Containers
+
+Like an entity bean, a session bean can access a database through Java
+Database Connectivity (JDBC) calls. A session bean can also provide
+transaction settings. These transaction settings and JDBC calls are
+referenced by the session bean's container, allowing it to participate
+in transactions managed by the container.
+
+A container managing stateless session beans has a different charter
+from a container managing stateful session beans.
+
+The following topics are addressed here:
+
+* link:#beahz[Stateless Container]
+* link:#beaia[Stateful Container]
+
+[[beahz]][[GSDVG00287]][[stateless-container]]
+
+===== Stateless Container
+
+The stateless container manages stateless session beans, which, by
+definition, do not carry client-specific states. All session beans (of a
+particular type) are considered equal.
+
+A stateless session bean container uses a bean pool to service requests.
+The {productName} specific deployment descriptor file,
+`glassfish-ejb-jar.xml`, contains the properties that define the pool:
+
+* `steady-pool-size`
+* `resize-quantity`
+* `max-pool-size`
+* `pool-idle-timeout-in-seconds`
+
+For more information about `glassfish-ejb-jar.xml`, see
+"link:application-deployment-guide/dd-files.html#GSDPG00079[The glassfish-ejb-jar.xml File]" in {productName} Application Deployment Guide.
+
+The {productName} provides the `wscompile` and `wsdeploy` tools to
+help you implement a web service endpoint as a stateless session bean.
+For more information about these tools, see the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+[[beaia]][[GSDVG00288]][[stateful-container]]
+
+===== Stateful Container
+
+The stateful container manages the stateful session beans, which, by
+definition, carry the client-specific state. There is a one-to-one
+relationship between the client and the stateful session beans. At
+creation, each stateful session bean (SFSB) is given a unique session ID
+that is used to access the session bean so that an instance of a
+stateful session bean is accessed by a single client only.
+
+Stateful session beans are managed using cache. The size and behavior of
+stateful session beans cache are controlled by specifying the following
+`glassfish-ejb-jar.xml` parameters:
+
+* `max-cache-size`
+* `resize-quantity`
+* `cache-idle-timeout-in-seconds`
+* `removal-timeout-in-seconds`
+* `victim-selection-policy`
+
+The `max-cache-size` element specifies the maximum number of session
+beans that are held in cache. If the cache overflows (when the number of
+beans exceeds `max-cache-size`), the container then passivates some
+beans or writes out the serialized state of the bean into a file. The
+directory in which the file is created is obtained from the EJB
+container using the configuration APIs.
+
+For more information about `glassfish-ejb-jar.xml`, see
+"link:application-deployment-guide/dd-files.html#GSDPG00079[The glassfish-ejb-jar.xml File]" in {productName} Application Deployment Guide.
+
+The passivated beans are stored on the file system. The Session Store
+Location setting in the EJB container allows the administrator to
+specify the directory where passivated beans are stored. By default,
+passivated stateful session beans are stored in application-specific
+subdirectories created under domain-dir`/session-store`.
+
+
+[NOTE]
+====
+Make sure the `delete` option is set in the `server.policy` file, or
+expired file-based sessions might not be deleted properly. For more
+information about `server.policy`, see link:securing-apps.html#beabx[The
+`server.policy` File].
+====
+
+
+The Session Store Location setting also determines where the session
+state is persisted if it is not highly available; see
+link:#beaic[Choosing a Persistence Store].
+
+[[beaib]][[GSDVG00426]][[stateful-session-bean-failover]]
+
+==== Stateful Session Bean Failover
+
+An SFSB's state can be saved in a persistent store in case a server
+instance fails. The state of an SFSB is saved to the persistent store at
+predefined points in its life cycle. This is called checkpointing. If
+SFSB checkpointing is enabled, checkpointing generally occurs after any
+transaction involving the SFSB is completed, even if the transaction
+rolls back.
+
+However, if an SFSB participates in a bean-managed transaction, the
+transaction might be committed in the middle of the execution of a bean
+method. Since the bean's state might be undergoing transition as a
+result of the method invocation, this is not an appropriate instant to
+checkpoint the bean's state. In this case, the EJB container checkpoints
+the bean's state at the end of the corresponding method, provided the
+bean is not in the scope of another transaction when that method ends.
+If a bean-managed transaction spans across multiple methods,
+checkpointing is delayed until there is no active transaction at the end
+of a subsequent method.
+
+The state of an SFSB is not necessarily transactional and might be
+significantly modified as a result of non-transactional business
+methods. If this is the case for an SFSB, you can specify a list of
+checkpointed methods. If SFSB checkpointing is enabled, checkpointing
+occurs after any checkpointed methods are completed.
+
+The following table lists the types of references that SFSB failover
+supports. All objects bound into an SFSB must be one of the supported
+types. In the table, No indicates that failover for the object type
+might not work in all cases and that no failover support is provided.
+However, failover might work in some cases for that object type. For
+example, failover might work because the class implementing that type is
+serializable.
+
+[[GSDVG549]][[sthref18]][[fvyed]]
+
+Table 8-1 Object Types Supported for Jakarta EE Stateful Session Bean State
+Failover
+
+[width="100%",cols="45%,55%",options="header",]
+|===
+|Java Object Type |Failover Support
+
+|Colocated or distributed stateless session, stateful session, or entity bean reference
+|Yes
+
+|JNDI context
+|Yes, `InitialContext` and `java:comp/env`
+
+|UserTransaction
+|Yes, but if the instance that fails is never
+restarted, any prepared global transactions are lost and might not be
+correctly rolled back or committed.
+
+|JDBC DataSource
+|No
+
+|Java Message Service (JMS) ConnectionFactory, Destination
+|No
+
+|JavaMail Session
+|No
+
+|Connection Factory
+|No
+
+|Administered Object
+|No
+
+|Web service reference
+|No
+
+|Serializable Java types
+|Yes
+
+|Extended persistence context
+|No
+|===
+
+
+For more information about the `InitialContext`, see
+link:jndi.html#beans[Accessing the Naming Context]. For more information
+about transaction recovery, see link:transaction-service.html#beanm[Using
+the Transaction Service]. For more information about Administered
+Objects, see "link:administration-guide/jms.html#GSADG00599[Administering JMS Physical Destinations]"
+in {productName} Administration Guide.
+
+
+[NOTE]
+====
+Idempotent URLs are supported along the HTTP path, but not the RMI-IIOP
+path. For more information, see link:webapps.html#beage[Configuring
+Idempotent URL Requests].
+
+If a server instance to which an RMI-IIOP client request is sent crashes
+during the request processing (before the response is prepared and sent
+back to the client), an error is sent to the client. The client must
+retry the request explicitly. When the client retries the request, the
+request is sent to another server instance in the cluster, which
+retrieves session state information for this client.
+
+HTTP sessions can also be saved in a persistent store in case a server
+instance fails. In addition, if a distributable web application
+references an SFSB, and the web application's session fails over, the
+EJB reference is also failed over. For more information, see
+link:webapps.html#beahe[Distributed Sessions and Persistence].
+
+If an SFSB that uses session persistence is undeployed while the
+{productName} instance is stopped, the session data in the
+persistence store might not be cleared. To prevent this, undeploy the
+SFSB while the {productName} instance is running.
+====
+
+
+Configure SFSB failover by:
+
+* link:#beaic[Choosing a Persistence Store]
+* link:#beaid[Enabling Checkpointing]
+* link:#beaih[Specifying Methods to Be Checkpointed]
+
+[[beaic]][[GSDVG00289]][[choosing-a-persistence-store]]
+
+===== Choosing a Persistence Store
+
+The following types of persistent storage are supported for passivation
+and checkpointing of the SFSB state:
+
+* The local file system - Allows a single server instance to recover the
+SFSB state after a failure and restart. This store also provides
+passivation and activation of the state to help control the amount of
+memory used. This option is not supported in a production environment
+that requires SFSB state persistence. This is the default storage
+mechanism if availability is not enabled.
+* Other servers - Uses other server instances in the cluster for session
+persistence. Clustered server instances replicate session state. Each
+backup instance stores the replicated data in memory. This is the
+default storage mechanism if availability is enabled.
+
+Choose the persistence store in one of the following ways:
+
+* To use the local file system, first disable availability. Select the
+Availability Service component under the relevant configuration in the
+Administration Console. Uncheck the Availability Service box. Then
+select the EJB Container component and edit the Session Store Location
+value. The default is domain-dir`/session-store`.
+* To use other servers, select the Availability Service component under
+the relevant configuration in the Administration Console. Check the
+Availability Service box. To enable availability for the EJB container,
+select the EJB Container Availability tab, then check the Availability
+Service box. All instances in an {productName} cluster should have
+the same availability settings to ensure consistent behavior.
+
+For more information about SFSB state persistence, see the
+link:ha-administration-guide.html#GSHAG[{productName} High Availability
+Administration Guide].
+
+[[gkpdg]][[GSDVG00033]][[using-the---keepstate-option]]
+
+Using the `--keepstate` Option
+
+If you are using the file system for persistence, you can use the
+`--keepstate` option of the `asadmin redeploy` command to retain the
+SFSB state between redeployments.
+
+The default for `--keepstate` is false. This option is supported only on
+the default server instance, named `server`. It is not supported and
+ignored for any other target.
+
+Some changes to an application between redeployments prevent this
+feature from working properly. For example, do not change the set of
+instance variables in the SFSB bean class.
+
+If any active SFSB instance fails to be preserved or restored, none of
+the SFSB instances will be available when the redeployment is complete.
+However, the redeployment continues and a warning is logged.
+
+To preserve active state data, {productName} serializes the data and
+saves it in memory. To restore the data, the class loader of the newly
+redeployed application deserializes the data that was previously saved.
+
+For more information about the `asadmin redeploy` command, see the
+link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+[[gkpef]][[GSDVG00034]][[using-the---asyncreplication-option]]
+
+Using the `--asyncreplication` Option
+
+If you are using replication on other servers for persistence, you can
+use the `--asyncreplication` option of the `asadmin deploy` command to
+specify that SFSB states are first buffered and then replicated using a
+separate asynchronous thread. If `--asyncreplication` is set to true
+(default), performance is improved but availability is reduced. If the
+instance where states are buffered but not yet replicated fails, the
+states are lost. If set to false, performance is reduced but
+availability is guaranteed. States are not buffered but immediately
+transmitted to other instances in the cluster.
+
+For more information about the `asadmin deploy` command, see the
+link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+[[beaid]][[GSDVG00290]][[enabling-checkpointing]]
+
+===== Enabling Checkpointing
+
+The following sections describe how to enable SFSB checkpointing:
+
+* link:#beaie[Server Instance and EJB Container Levels]
+* link:#beaif[Application and EJB Module Levels]
+* link:#beaig[SFSB Level]
+
+[[beaie]][[GSDVG00035]][[server-instance-and-ejb-container-levels]]
+
+Server Instance and EJB Container Levels
+
+To enable SFSB checkpointing at the server instance or EJB container
+level, see link:#beaic[Choosing a Persistence Store].
+
+[[beaif]][[GSDVG00036]][[application-and-ejb-module-levels]]
+
+Application and EJB Module Levels
+
+To enable SFSB checkpointing at the application or EJB module level
+during deployment, use the `asadmin deploy` or `asadmin deploydir`
+command with the `--availabilityenabled` option set to `true`. For
+details, see the link:reference-manual.html#GSRFM[{productName}
+Reference Manual].
+
+[[beaig]][[GSDVG00037]][[sfsb-level]]
+
+SFSB Level
+
+To enable SFSB checkpointing at the SFSB level, set
+`availability-enabled="true"` in the `ejb` element of the SFSB's
+`glassfish-ejb-jar.xml` file as follows:
+
+[source,xml]
+----
+<glassfish-ejb-jar>
+   ...
+   <enterprise-beans>
+      ...
+      <ejb availability-enabled="true">
+         <ejb-name>MySFSB</ejb-name>
+      </ejb>
+   ...
+   </enterprise-beans>
+</glassfish-ejb-jar>
+----
+
+[[beaih]][[GSDVG00291]][[specifying-methods-to-be-checkpointed]]
+
+===== Specifying Methods to Be Checkpointed
+
+If SFSB checkpointing is enabled, checkpointing generally occurs after
+any transaction involving the SFSB is completed, even if the transaction
+rolls back.
+
+To specify additional optional checkpointing of SFSBs at the end of
+non-transactional business methods that cause important modifications to
+the bean's state, use the `checkpoint-at-end-of-method` element within
+the `ejb` element in `glassfish-ejb-jar.xml`.
+
+For example:
+
+[source,xml]
+----
+<glassfish-ejb-jar>
+   ...
+   <enterprise-beans>
+      ...
+      <ejb availability-enabled="true">
+         <ejb-name>ShoppingCartEJB</ejb-name>
+         <checkpoint-at-end-of-method>
+            <method>
+               <method-name>addToCart</method-name>
+            </method>
+         </checkpoint-at-end-of-method>
+      </ejb>
+      ...
+   </enterprise-beans>
+</glassfish-ejb-jar>
+----
+
+For details, see "link:application-deployment-guide/dd-elements.html#GSDPG00108[checkpoint-at-end-of-method]" in
+{productName} Application Deployment Guide.
+
+The non-transactional methods in the `checkpoint-at-end-of-method`
+element can be the following:
+
+* `create` methods defined in the home or business interface of the
+SFSB, if you want to checkpoint the initial state of the SFSB
+immediately after creation
+* For SFSBs using container managed transactions only, methods in the
+remote interface of the bean marked with the transaction attribute
+TX_NOT_SUPPORTED or TX_NEVER
+* For SFSBs using bean managed transactions only, methods in which a
+bean managed transaction is neither started nor committed
+
+Any other methods mentioned in this list are ignored. At the end of
+invocation of each of these methods, the EJB container saves the state
+of the SFSB to persistent store.
+
+
+[NOTE]
+====
+If an SFSB does not participate in any transaction, and if none of its
+methods are explicitly specified in the `checkpoint-at-end-of-method`
+element, the bean's state is not checkpointed at all even if
+`availability-enabled="true"` for this bean.
+
+For better performance, specify a small subset of methods. The methods
+chosen should accomplish a significant amount of work in the context of
+the Jakarta EE application or should result in some important modification
+to the bean's state.
+====
+
+
+[[beaii]][[GSDVG00427]][[session-bean-restrictions-and-optimizations]]
+
+==== Session Bean Restrictions and Optimizations
+
+This section discusses restrictions on developing session beans and
+provides some optimization guidelines.
+
+* link:#beaij[Optimizing Session Bean Performance]
+* link:#beaik[Restricting Transactions]
+* link:#glanq[EJB Singletons]
+
+[[beaij]][[GSDVG00292]][[optimizing-session-bean-performance]]
+
+===== Optimizing Session Bean Performance
+
+For stateful session beans, colocating the stateful beans with their
+clients so that the client and bean are executing in the same process
+address space improves performance.
+
+[[beaik]][[GSDVG00293]][[restricting-transactions]]
+
+===== Restricting Transactions
+
+The following restrictions on transactions are enforced by the container
+and must be observed as session beans are developed:
+
+* A session bean can participate in, at most, a single transaction at a
+time.
+* If a session bean is participating in a transaction, a client cannot
+invoke a method on the bean such that the `trans-attribute` element (or
+`@TransactionAttribute` annotation) in the `ejb-jar.xml` file would
+cause the container to execute the method in a different or unspecified
+transaction context or an exception is thrown.
+* If a session bean instance is participating in a transaction, a client
+cannot invoke the `remove` method on the session object's home or
+business interface object, or an exception is thrown.
+
+[[glanq]][[GSDVG00294]][[ejb-singletons]]
+
+===== EJB Singletons
+
+EJB Singletons are created for each server instance in a cluster, and
+not once per cluster.
+
+[[beail]][[GSDVG00148]][[using-read-only-beans]]
+
+=== Using Read-Only Beans
+
+A read-only bean is an EJB 2.1 entity bean that is never modified by an
+EJB client. The data that a read-only bean represents can be updated
+externally by other enterprise beans, or by other means, such as direct
+database updates.
+
+
+[NOTE]
+====
+Read-only beans are specific to the {productName} and are not part of
+the Enterprise JavaBeans Specification, v2.1. Use of this feature for an
+EJB 2.1 bean results in a non-portable application.
+
+To make an EJB 3.0 entity bean read-only, use `@Column` annotations to
+mark its columns `insertable=false` and `updatable=false`.
+====
+
+
+Read-only beans are best suited for situations where the underlying data
+never changes, or changes infrequently.
+
+The following topics are addressed here:
+
+* link:#beaim[Read-Only Bean Characteristics and Life Cycle]
+* link:#beain[Read-Only Bean Good Practices]
+* link:#beaio[Refreshing Read-Only Beans]
+* link:#beais[Deploying Read-Only Beans]
+
+[[beaim]][[GSDVG00428]][[read-only-bean-characteristics-and-life-cycle]]
+
+==== Read-Only Bean Characteristics and Life Cycle
+
+Read-only beans are best suited for situations where the underlying data
+never changes, or changes infrequently. For example, a read-only bean
+can be used to represent a stock quote for a particular company, which
+is updated externally. In such a case, using a regular entity bean might
+incur the burden of calling `ejbStore`, which can be avoided by using a
+read-only bean.
+
+Read-only beans have the following characteristics:
+
+* Only entity beans can be read-only beans.
+* Either bean-managed persistence (BMP) or container-managed persistence
+(CMP) is allowed. If CMP is used, do not create the database schema
+during deployment. Instead, work with your database administrator to
+populate the data into the tables. See
+link:container_managed-persistence.html#beajj[Using Container-Managed
+Persistence].
+* Only container-managed transactions are allowed; read-only beans
+cannot start their own transactions.
+* Read-only beans don't update any bean state.
+* `ejbStore` is never called by the container.
+* `ejbLoad` is called only when a transactional method is called or when
+the bean is initially created (in the cache), or at regular intervals
+controlled by the bean's `refresh-period-in-seconds` element in the
+`glassfish-ejb-jar.xml` file.
+* The home interface can have any number of find methods. The return
+type of the find methods must be the primary key for the same bean type
+(or a collection of primary keys).
+* If the data that the bean represents can change, then
+`refresh-period-in-seconds` must be set to refresh the beans at regular
+intervals. `ejbLoad` is called at this regular interval.
+
+A read-only bean comes into existence using the appropriate find
+methods.
+
+Read-only beans are cached and have the same cache properties as entity
+beans. When a read-only bean is selected as a victim to make room in the
+cache, `ejbPassivate` is called and the bean is returned to the free
+pool. When in the free pool, the bean has no identity and is used only
+to serve any finder requests.
+
+Read-only beans are bound to the naming service like regular read-write
+entity beans, and clients can look up read-only beans the same way
+read-write entity beans are looked up.
+
+[[beain]][[GSDVG00429]][[read-only-bean-good-practices]]
+
+==== Read-Only Bean Good Practices
+
+For best results, follow these guidelines when developing read-only
+beans:
+
+* Avoid having any `create` or `remove` methods in the home interface.
+* Use any of the valid EJB 2.1 transaction attributes for the
+`trans-attribute` element.
++
+The reason for having `TX_SUPPORTED` is to allow reading uncommitted
+data in the same transaction. Also, the transaction attributes can be
+used to force `ejbLoad`.
+
+[[beaio]][[GSDVG00430]][[refreshing-read-only-beans]]
+
+==== Refreshing Read-Only Beans
+
+There are several ways of refreshing read-only beans, as addressed in
+the following sections:
+
+* link:#beaip[Invoking a Transactional Method]
+* link:#beaiq[Refreshing Periodically]
+* link:#beair[Refreshing Programmatically]
+
+[[beaip]][[GSDVG00295]][[invoking-a-transactional-method]]
+
+===== Invoking a Transactional Method
+
+Invoking any transactional method invokes `ejbLoad`.
+
+[[beaiq]][[GSDVG00296]][[refreshing-periodically]]
+
+===== Refreshing Periodically
+
+Use the `refresh-period-in-seconds` element in the
+`glassfish-ejb-jar.xml` file to refresh a read-only bean periodically.
+
+* If the value specified in `refresh-period-in-seconds` is zero or not
+specified, which is the default, the bean is never refreshed (unless a
+transactional method is accessed).
+* If the value is greater than zero, the bean is refreshed at the rate
+specified.
+
+
+[NOTE]
+====
+This is the only way to refresh the bean state if the data can be
+modified external to the {productName}.
+====
+
+
+By default, a single timer is used for all instances of a read-only
+bean. When that timer fires, all bean instances are marked as expired
+and are refreshed from the database the next time they are used.
+
+Use the `-Dcom.sun.ejb.containers.readonly.relative.refresh.mode=true`
+flag to refresh each bean instance independently upon access if its
+refresh period has expired. The default is `false`. Note that each
+instance still has the same refresh period. This additional level of
+granularity can improve the performance of read-only beans that do not
+need to be refreshed at the same time.
+
+To set this flag, use the `asadmin create-jvm-options` command. For
+example:
+
+[source]
+----
+asadmin create-jvm-options -Dcom.sun.ejb.containers.readonly.relative.refresh.mode=true
+----
+
+[[beair]][[GSDVG00297]][[refreshing-programmatically]]
+
+===== Refreshing Programmatically
+
+Typically, beans that update any data that is cached by read-only beans
+need to notify the read-only beans to refresh their state. Use
+ReadOnlyBeanNotifier to force the refresh of read-only beans.
+
+To do this, invoke the following methods on the ReadOnlyBeanNotifier
+bean:
+
+[source,java]
+----
+public interface ReadOnlyBeanNotifier extends java.rmi.Remote {
+   refresh(Object PrimaryKey) throws RemoteException;
+ }
+----
+
+The implementation of the ReadOnlyBeanNotifier interface is provided by
+the container. The bean looks up ReadOnlyBeanNotifier using a fragment
+of code such as the following example:
+
+[source,java]
+----
+com.sun.appserv.ejb.ReadOnlyBeanHelper helper =
+  new com.sun.appserv.ejb.ReadOnlyBeanHelper();
+com.sun.appserv.ejb.ReadOnlyBeanNotifier notifier =
+  helper.getReadOnlyBeanNotifier("java:comp/env/ejb/ReadOnlyCustomer");
+notifier.refresh(PrimaryKey);
+----
+
+For a local read-only bean notifier, the lookup has this modification:
+
+[source,java]
+----
+helper.getReadOnlyBeanLocalNotifier("java:comp/env/ejb/LocalReadOnlyCustomer");
+----
+
+Beans that update any data that is cached by read-only beans need to
+call the `refresh` methods. The next (non-transactional) call to the
+read-only bean invokes `ejbLoad`.
+
+For Javadoc tool pages relevant to read-only beans, go to
+`http://glassfish.java.net/nonav/docs/v3/api/` and click on the
+`com.sun.appserv.ejb` package.
+
+[[beais]][[GSDVG00431]][[deploying-read-only-beans]]
+
+==== Deploying Read-Only Beans
+
+Read-only beans are deployed in the same manner as other entity beans.
+However, in the entry for the bean in the `glassfish-ejb-jar.xml` file,
+the `is-read-only-bean` element must be set to true. That is:
+
+`<is-read-only-bean>true</is-read-only-bean>`
+
+Also, the `refresh-period-in-seconds` element in the
+`glassfish-ejb-jar.xml` file can be set to some value that specifies the
+rate at which the bean is refreshed. If this element is missing, no
+refresh occurs.
+
+All requests in the same transaction context are routed to the same
+read-only bean instance. Set the `allow-concurrent-access` element to
+either `true` (to allow concurrent accesses) or `false` (to serialize
+concurrent access to the same read-only bean). The default is `false`.
+
+For further information on these elements, refer to
+"link:application-deployment-guide/dd-files.html#GSDPG00079[The glassfish-ejb-jar.xml File]" in {productName} Application Deployment Guide.
+
+[[beait]][[GSDVG00149]][[using-message-driven-beans]]
+
+=== Using Message-Driven Beans
+
+This section describes message-driven beans and explains the
+requirements for creating them in the {productName} environment.
+
+The following topics are addressed here:
+
+* link:#beaiu[Message-Driven Bean Configuration]
+* link:#beaiy[Message-Driven Bean Restrictions and Optimizations]
+
+[[beaiu]][[GSDVG00432]][[message-driven-bean-configuration]]
+
+==== Message-Driven Bean Configuration
+
+The following topics are addressed here:
+
+* link:#beaiv[Connection Factory and Destination]
+* link:#beaiw[Message-Driven Bean Pool]
+* link:#beaix[Domain-Level Settings]
+
+For information about setting up load balancing for message-driven
+beans, see link:jms.html#beaop[Load-Balanced Message Inflow].
+
+[[beaiv]][[GSDVG00298]][[connection-factory-and-destination]]
+
+===== Connection Factory and Destination
+
+A message-driven bean is a client to a Connector inbound resource
+adapter. The message-driven bean container uses the JMS service
+integrated into the {productName} for message-driven beans that are
+JMS clients. JMS clients use JMS Connection Factory- and
+Destination-administered objects. A JMS Connection Factory administered
+object is a resource manager Connection Factory object that is used to
+create connections to the JMS provider.
+
+The `mdb-connection-factory` element in the `glassfish-ejb-jar.xml` file
+for a message-driven bean specifies the connection factory that creates
+the container connection to the JMS provider.
+
+The `jndi-name` element of the `ejb` element in the
+`glassfish-ejb-jar.xml` file specifies the JNDI name of the administered
+object for the JMS Queue or Topic destination that is associated with
+the message-driven bean.
+
+[[beaiw]][[GSDVG00299]][[message-driven-bean-pool]]
+
+===== Message-Driven Bean Pool
+
+The container manages a pool of message-driven beans for the concurrent
+processing of a stream of messages. The `glassfish-ejb-jar.xml` file
+contains the elements that define the pool (that is, the `bean-pool`
+element):
+
+* `steady-pool-size`
+* `resize-quantity`
+* `max-pool-size`
+* `pool-idle-timeout-in-seconds`
+
+For more information about `glassfish-ejb-jar.xml`, see
+"link:application-deployment-guide/dd-files.html#GSDPG00079[The glassfish-ejb-jar.xml File]" in {productName} Application Deployment Guide.
+
+[[beaix]][[GSDVG00300]][[domain-level-settings]]
+
+===== Domain-Level Settings
+
+You can control the following domain-level message-driven bean settings
+in the EJB container:
+
+Initial and Minimum Pool Size::
+  Specifies the initial and minimum number of beans maintained in the
+  pool. The default is `0`.
+Maximum Pool Size::
+  Specifies the maximum number of beans that can be created to satisfy
+  client requests. The default is `2`.
+Pool Resize Quantity::
+  Specifies the number of beans to be created if a request arrives when
+  the pool is empty (subject to the Initial and Minimum Pool Size), or
+  the number of beans to remove if idle for more than the Idle Timeout.
+  The default is `8`.
+Idle Timeout::
+  Specifies the maximum time in seconds that a bean can remain idle in
+  the pool. After this amount of time, the bean is destroyed. The
+  default is `600` (10 minutes). A value of `0` means a bean can remain
+  idle indefinitely.
+
+For information on monitoring message-driven beans, click the Help
+button in the Administration Console. Select the Stand-Alone Instances
+component, select the instance from the table, and select the Monitor
+tab. Or select the Clusters component, select the cluster from the
+table, select the Instances tab, select the instance from the table, and
+select the Monitor tab.
+
+
+[NOTE]
+====
+Running monitoring when it is not needed might impact performance, so
+you might choose to turn monitoring off when it is not in use. For
+details, see "olink:GSADG00011[Administering the Monitoring Service]" in
+{productName} Administration Guide.
+====
+
+
+[[beaiy]][[GSDVG00433]][[message-driven-bean-restrictions-and-optimizations]]
+
+==== Message-Driven Bean Restrictions and Optimizations
+
+This section discusses the following restrictions and performance
+optimizations that pertain to developing message-driven beans:
+
+* link:#beaiz[Pool Tuning and Monitoring]
+* link:#beaja[The `onMessage` Runtime Exception]
+
+[[beaiz]][[GSDVG00301]][[pool-tuning-and-monitoring]]
+
+===== Pool Tuning and Monitoring
+
+The message-driven bean pool is also a pool of threads, with each
+message-driven bean instance in the pool associating with a server
+session, and each server session associating with a thread. Therefore, a
+large pool size also means a high number of threads, which impacts
+performance and server resources.
+
+When configuring message-driven bean pool properties, make sure to
+consider factors such as message arrival rate and pattern, `onMessage`
+method processing time, overall server resources (threads, memory, and
+so on), and any concurrency requirements and limitations from other
+resources that the message-driven bean accesses.
+
+When tuning performance and resource usage, make sure to consider
+potential JMS provider properties for the connection factory used by the
+container (the `mdb-connection-factory` element in the
+`glassfish-ejb-jar.xml` file). For example, you can tune the Open
+Message Queue flow control related properties for connection factory in
+situations where the message incoming rate is much higher than
+`max-pool-size` can handle.
+
+Refer to "link:administration-guide/monitoring.html#GSADG00011[Administering the Monitoring Service]" in
+{productName} Administration Guide for
+information on how to get message-driven bean pool statistics.
+
+[[beaja]][[GSDVG00302]][[the-onmessage-runtime-exception]]
+
+===== The `onMessage` Runtime Exception
+
+Message-driven beans, like other well-behaved MessageListeners, should
+not, in general, throw runtime exceptions. If a message-driven bean's
+`onMessage` method encounters a system-level exception or error that
+does not allow the method to successfully complete, the Enterprise
+JavaBeans Specification, v3.0 provides the following guidelines:
+
+* If the bean method encounters a runtime exception or error, it should
+simply propagate the error from the bean method to the container.
+* If the bean method performs an operation that results in a checked
+exception that the bean method cannot recover, the bean method should
+throw the `javax.ejb.EJBException` that wraps the original exception.
+* Any other unexpected error conditions should be reported using
+`javax.ejb.EJBException` (`javax.ejb.EJBException` is a subclass of
+`java.lang.RuntimeException`).
+
+Under container-managed transaction demarcation, upon receiving a
+runtime exception from a message-driven bean's `onMessage` method, the
+container rolls back the container-started transaction and the message
+is redelivered. This is because the message delivery itself is part of
+the container-started transaction. By default, the {productName}
+container closes the container's connection to the JMS provider when the
+first runtime exception is received from a message-driven bean
+instance's `onMessage` method. This avoids potential message redelivery
+looping and protects server resources if the message-driven bean's
+`onMessage` method continues misbehaving. To change this default
+container behavior, use the `cmt-max-runtime-exceptions` property of the
+MDB container. Here is an example `asadmin set` command that sets this
+property:
+
+[source]
+----
+asadmin set server-config.mdb-container.property.cmt-max-runtime-exceptions="5"
+----
+
+For more information about the `asadmin set` command, see the
+link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+The `cmt-max-runtime-exceptions` property specifies the maximum number
+of runtime exceptions allowed from a message-driven bean's `onMessage`
+method before the container starts to close the container's connection
+to the message source. By default this value is 1; -1 disables this
+container protection.
+
+A message-driven bean's `onMessage` method can use the
+`jakarta.jms.Message.getJMSRedelivered` method to check whether a received
+message is a redelivered message.
+
+
+[NOTE]
+====
+The `cmt-max-runtime-exceptions` property is deprecated.
+====
+
+
+
diff --git a/docs/application-development-guide/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png b/docs/application-development-guide/src/main/asciidoc/img/eclipse_foundation_logo_tiny.png
similarity index 100%
rename from docs/application-development-guide/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png
rename to docs/application-development-guide/src/main/asciidoc/img/eclipse_foundation_logo_tiny.png
Binary files differ
diff --git a/docs/application-development-guide/src/main/asciidoc/java-clients.adoc b/docs/application-development-guide/src/main/asciidoc/java-clients.adoc
new file mode 100644
index 0000000..44f542c
--- /dev/null
+++ b/docs/application-development-guide/src/main/asciidoc/java-clients.adoc
@@ -0,0 +1,1651 @@
+type=page
+status=published
+title=Developing Java Clients
+next=connectors.html
+prev=container_managed-persistence.html
+~~~~~~
+
+= Developing Java Clients
+
+[[GSDVG00012]][[beakt]]
+
+
+[[developing-java-clients]]
+== 10 Developing Java Clients
+
+This chapter describes how to develop, assemble, and deploy Java
+clients.
+
+The following topics are addressed here:
+
+* link:#beaku[Introducing the Application Client Container]
+* link:#beakv[Developing Clients Using the ACC]
+* link:#gkusn[Developing Clients Without the ACC]
+
+
+[NOTE]
+====
+The Web Profile of the Oracle{productName} supports the EJB 3.1 Lite
+specification, which allows enterprise beans within web applications,
+among other features. The full {productName} supports the entire EJB
+3.1 specification. For details, see
+http://jcp.org/en/jsr/detail?id=318[JSR 318].
+
+Accordingly, the Application Client Container is supported only in the
+full {productName}, not in the Web Profile.
+
+JMS resources are supported only in the full {productName}, not in
+the Web Profile. See link:jms.html#beaob[Using the Java Message Service].
+====
+
+
+[[beaku]][[GSDVG00159]][[introducing-the-application-client-container]]
+
+=== Introducing the Application Client Container
+
+The Application Client Container (ACC) includes a set of Java classes,
+libraries, and other files that are required for and distributed with
+Java client programs that execute in their own Java Virtual Machine
+(JVM). The ACC manages the execution of Jakarta EE application client
+components (application clients), which are used to access a variety of
+Jakarta EE services (such as JMS resources, EJB components, web services,
+security, and so on.) from a JVM outside the {productName}.
+
+The ACC communicates with the {productName} using RMI-IIOP protocol
+and manages the details of RMI-IIOP communication using the client ORB
+that is bundled with it. Compared to other Jakarta EE containers, the ACC
+is lightweight.
+
+For information about debugging application clients, see
+link:debugging-apps.html#gekvq[Application Client Debugging].
+
+
+[NOTE]
+====
+Interoperability between application clients and {productName}s
+running under different major versions is not supported.
+====
+
+
+[[fvymq]][[GSDVG00459]][[acc-security]]
+
+==== ACC Security
+
+The ACC determines when authentication is needed. This typically occurs
+when the client refers to an EJB component that requires authorization
+or when annotations in the client's `main` class trigger injection
+which, in turn, requires contact with the {productName}'s naming
+service. To authenticate the end user, the ACC prompts for any required
+information, such as a username and password. The ACC itself provides a
+very simple dialog box to prompt for and read these values.
+
+The ACC integrates with the {productName}'s authentication system. It
+also supports SSL (Secure Socket Layer)/IIOP if configured and when
+necessary; see link:#gckgn[Using RMI/IIOP Over SSL].
+
+You can provide an alternate implementation to gather authentication
+information, tailored to the needs of the application client. To do so,
+include the class to perform these duties in the application client and
+identify the fully-qualified name of this class in the
+`callback-handler` element of the `application-client.xml` descriptor
+for the client. The ACC uses this class instead of its default class for
+asking for and reading the authentication information. The class must
+implement the javax.security.auth.callback.CallbackHandler interface.
+See the Jakarta EE specification, section 9.2, Application Clients:
+Security, for more details.
+
+Application clients can use link:securing-apps.html#beacm[Programmatic
+Login Using the ProgrammaticLogin Class].
+
+[[fvymv]][[GSDVG00460]][[acc-naming]]
+
+==== ACC Naming
+
+The client container enables the application clients to use the Java
+Naming and Directory Interface (JNDI) to look up Jakarta EE services (such
+as JMS resources, EJB components, web services, security, and so on.)
+and to reference configurable parameters set at the time of deployment.
+
+[[gbgfe]][[GSDVG00461]][[application-client-annotation]]
+
+==== Application Client Annotation
+
+Annotation is supported for the main class and the optional callback
+handler class in application clients. For more information, see
+"link:application-deployment-guide/overview.html#GSDPG00320[Deployment Descriptors and Annotations]" in {productName} Application Deployment Guide.
+
+[[gavkg]][[GSDVG00462]][[java-web-start]]
+
+==== Java Web Start
+
+Java Web Start allows your application client to be easily launched and
+automatically downloaded and updated. It is enabled for all application
+clients by default. For more information, see link:#gavmf[Using Java Web
+Start].
+
+[[gipjj]][[GSDVG00463]][[application-client-jar-file]]
+
+==== Application Client JAR File
+
+In {productName} 7, the downloaded appclient JAR file is smaller
+than in previous releases, with dependent classes in separate JAR files.
+When copying the downloaded appclient to another location, make sure to
+include the JAR files containing the dependent classes as well. You can
+also use the `asadmin get-client-stubs` command to retrieve the
+appclient and all associated application JAR files and place them in
+another location.
+
+[[beakv]][[GSDVG00160]][[developing-clients-using-the-acc]]
+
+=== Developing Clients Using the ACC
+
+This section describes the procedure to develop, assemble, and deploy
+client applications using the ACC.
+
+The following topics are addressed here:
+
+* link:#beakw[To Access an EJB Component From an Application Client]
+* link:#beakx[To Access a JMS Resource From an Application Client]
+* link:#gavmf[Using Java Web Start]
+* link:#gipkt[Using the Embeddable ACC]
+* link:#beaky[Running an Application Client Using the `appclient`
+Script]
+* link:#beakz[Using the `package-appclient` Script]
+* link:#fvymy[The `client.policy` File]
+* link:#gckgn[Using RMI/IIOP Over SSL]
+* link:#ghbpc[Connecting to a Remote EJB Module Through a Firewall]
+* link:#gipkj[Specifying a Splash Screen]
+* link:#gjiec[Setting Login Retries]
+* link:#gjpjt[Using Libraries with Application Clients]
+
+[[beakw]][[GSDVG00072]][[to-access-an-ejb-component-from-an-application-client]]
+
+==== To Access an EJB Component From an Application Client
+
+1. In your client code, reference the EJB component by using an `@EJB`
+annotation or by looking up the JNDI name as defined in the `ejb-jar.xml` file. +
+For more information about naming and lookups, see
+link:jndi.html#beans[Accessing the Naming Context]. +
+If load balancing is enabled as in Step link:#accejb8[7] and the EJB
+components being accessed are in a different cluster, the endpoint list
+must be included in the lookup, as follows:
++
+[source]
+----
+corbaname:host1:port1,host2:port2,.../NameService#ejb/jndi-name
+----
+
+2. Define the `@EJB` annotations or the `ejb-ref` elements in the
+`application-client.xml` file. Define the corresponding `ejb-ref`
+elements in the `glassfish-application-client.xml` file. +
+For more information on the `glassfish-application-client.xml` file, see
+"link:application-deployment-guide/dd-files.html#GSDPG00081[The glassfish-application-client.xml file]" in
+{productName} Application Deployment Guide.
+For a general explanation of how to map JNDI names using reference elements,
+see link:jndi.html#beaoa[Mapping References].
+
+3. Deploy the application client and EJB component together in an application. +
+For more information on deployment, see the
+link:application-deployment-guide.html#GSDPG[{productName} Application Deployment Guide].
+To get the client JAR file, use the `--retrieve` option of the `asadmin deploy` command. +
+To retrieve the stubs and ties generated during deployment, use the
+`asadmin get-client-stubs` command. +
+For details, see the
+link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+4. Ensure that the client JAR file includes the following files:
+* A Java class to access the bean.
+* `application-client.xml` - (optional) Jakarta EE application client
+deployment descriptor.
+* `glassfish-application-client.xml` - (optional) {productName}
+specific client deployment descriptor. For information on the
+`glassfish-application-client.xml` file, see "link:application-deployment-guide/dd-files.html#GSDPG00081[The
+glassfish-application-client.xml file]" in {productName} Application Deployment Guide.
+* The `MANIFEST.MF` file. This file contains a reference to the `main`
+class, which states the complete package prefix and class name of the
+Java client.
+
+5. Prepare the client machine. +
+This step is not needed for Java Web Start. This step is not needed if
+the client and server machines are the same. +
+If you are using the `appclient` script, package the {productName}
+system files required to launch application clients on remote systems
+using the `package-appclient` script, then retrieve the application
+client itself using the `asadmin get-client-stubs` command. +
+For more information, see link:#beakz[Using the `package-appclient` Script]
+and the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+6. To access EJB components that are residing in a remote system, make
+the following changes to the `sun-acc.xml` file or the `appclient`
+script. This step is not needed for Java Web Start.
+* Define the `target-server` element's `address` and `port` attributes
+to reference the remote server machine and its ORB port. See
+"link:application-deployment-guide/dd-elements.html#GSDPG00284[target-server]" in {productName} Application Deployment Guide.
+* Use the `-targetserver` option of the appclient script to reference
+the remote server machine and its ORB port. For more information, see
+link:#beaky[Running an Application Client Using the `appclient` Script].
++
+To determine the ORB port on the remote server, use the `asadmin get` command. For example:
++
+[source]
+----
+asadmin --host rmtsrv get server-config.iiop-service.iiop-listener.iiop-listener1.port
+----
+For more information about the `asadmin get` command, see the
+link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+7. [[accejb8]]
+To set up load balancing and failover of remote EJB references, define
+at least two `target-server` elements in the `sun-acc.xml` file or the
+`appclient` script. This step is not needed for Java Web Start. +
+If the {productName} instance on which the application client is
+deployed participates in a cluster, the ACC finds all currently active
+IIOP endpoints in the cluster automatically. However, a client should
+have at least two endpoints specified for bootstrapping purposes, in
+case one of the endpoints has failed. +
+The `target-server` elements in the `sun-acc.xml` file specify one or
+more IIOP endpoints used for load balancing. The `address` attribute is
+an IPv4 address or host name, and the `port` attribute specifies the
+port number. See "link:application-deployment-guide/dd-elements.html#GSDPG00111[client-container]" in {productName} Application Deployment Guide. +
+The `--targetserver` option of the appclient script specifies one or
+more IIOP endpoints used for load balancing. For more information, see
+link:#beaky[Running an Application Client Using the `appclient` Script].
+
+[[GSDVG555]]
+
+Next Steps
+
+* For instructions on running the application client, see
+link:#gavmf[Using Java Web Start] or link:#beaky[Running an Application
+Client Using the `appclient` Script].
+* For more information about RMI-IIOP load balancing and failover, see
+"link:ha-administration-guide/rmi-iiop.html#GSHAG00013[RMI-IIOP Load Balancing and Failover]" in {productName} High Availability Administration Guide.
+
+[[beakx]][[GSDVG00073]][[to-access-a-jms-resource-from-an-application-client]]
+
+==== To Access a JMS Resource From an Application Client
+
+1. Create a JMS client.
++
+For detailed instructions on developing a JMS client, see
+https://eclipse-ee4j.github.io/jakartaee-tutorial/#jakarta-messaging-examples[
+Java Message Service Examples]" in The Jakarta EE Tutorial.
+2. Next, configure a JMS resource on the {productName}.
++
+For information on configuring JMS resources, see
+"link:administration-guide/jms.html#GSADG00598[Administering JMS Connection Factories and
+Destinations]" in {productName} Administration
+Guide.
+3. Define the `@Resource` or `@Resources` annotations or the
+`resource-ref` elements in the `application-client.xml` file. Define the
+corresponding `resource-ref` elements in the
+`glassfish-application-client.xml` file.
++
+For more information on the `glassfish-application-client.xml` file, see
+"link:application-deployment-guide/dd-files.html#GSDPG00081[The glassfish-application-client.xml file]" in
+{productName} Application Deployment Guide. For a
+general explanation of how to map JNDI names using reference elements,
+see link:jndi.html#beaoa[Mapping References].
+4. Ensure that the client JAR file includes the following files:
+* A Java class to access the resource.
+* `application-client.xml` - (optional) Jakarta EE application client
+deployment descriptor.
+* `glassfish-application-client.xml` - (optional) {productName}
+specific client deployment descriptor. For information on the
+`glassfish-application-client.xml` file, see "link:application-deployment-guide/dd-files.html#GSDPG00081[The
+glassfish-application-client.xml file]" in {productName} Application Deployment Guide.
+* The `MANIFEST.MF` file. This file contains a reference to the `main`
+class, which states the complete package prefix and class name of the
+Java client.
+5. Prepare the client machine.
++
+This step is not needed for Java Web Start. This step is not needed if
+the client and server machines are the same.
++
+If you are using the `appclient` script, package the {productName}
+system files required to launch application clients on remote systems
+using the `package-appclient` script, then retrieve the application
+client itself using the `asadmin get-client-stubs` command.
++
+For more information, see link:#beakz[Using the `package-appclient`
+Script] and the link:reference-manual.html#GSRFM[{productName}
+Reference Manual].
+6. Run the application client.
++
+See link:#gavmf[Using Java Web Start] or link:#beaky[Running an
+Application Client Using the `appclient` Script].
+
+[[gavmf]][[GSDVG00464]][[using-java-web-start]]
+
+==== Using Java Web Start
+
+Java Web Start allows your application client to be easily launched and
+automatically downloaded and updated. General information about Java Web
+Start is available at
+`http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136112.html`.
+
+The following topics are addressed here:
+
+* link:#gavqb[Enabling and Disabling Java Web Start]
+* link:#gavmk[Downloading and Launching an Application Client]
+* link:#gavor[The Application Client URL]
+* link:#gcjlg[Signing JAR Files Used in Java Web Start]
+* link:#geqxg[Error Handling]
+* link:#geqwd[Vendor Icon, Splash Screen, and Text]
+* link:#gkmbs[Creating a Custom JNLP File]
+
+[[gavqb]][[GSDVG00312]][[enabling-and-disabling-java-web-start]]
+
+===== Enabling and Disabling Java Web Start
+
+Java Web Start is enabled for all application clients by default.
+
+The application developer or deployer can specify that Java Web Start is
+always disabled for an application client by setting the value of the
+`eligible` element to `false` in the `glassfish-application-client.xml`
+file. See the link:application-deployment-guide.html#GSDPG[{productName}
+Application Deployment Guide].
+
+The {productName} administrator can disable Java Web Start for a
+previously deployed eligible application client using the `asadmin set`
+command.
+
+To disable Java Web Start for all eligible application clients in an
+application, use the following command:
+
+[source]
+----
+asadmin set applications.application.app-name.property.java-web-start-enabled="false"
+----
+
+To disable Java Web Start for a stand-alone eligible application client,
+use the following command:
+
+[source]
+----
+asadmin set applications.application.module-name.property.java-web-start-enabled="false"
+----
+
+Setting `java-web-start-enabled="true"` re-enables Java Web Start for an
+eligible application client. For more information about the
+`asadmin set` command, see the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+[[gavmk]][[GSDVG00313]][[downloading-and-launching-an-application-client]]
+
+===== Downloading and Launching an Application Client
+
+If Java Web Start is enabled for your deployed application client, you
+can launch it for testing. Simply click on the Launch button next to the
+application client or application's listing on the App Client Modules
+page in the Administration Console.
+
+On other machines, you can download and launch the application client
+using Java Web Start in the following ways:
+
+* Using a web browser, directly enter the URL for the application
+client. See link:#gavor[The Application Client URL].
+* Click on a link to the application client from a web page.
+* Use the Java Web Start command `javaws`, specifying the URL of the
+application client as a command line argument.
+* If the application has previously been downloaded using Java Web
+Start, you have additional alternatives.
+
+** Use the desktop icon that Java Web Start created for the application
+client. When Java Web Start downloads an application client for the
+first time it asks you if such an icon should be created.
+
+** Use the Java Web Start control panel to launch the application
+client.
+
+When you launch an application client, Java Web Start contacts the
+server to see if a newer client version is available. This means you can
+redeploy an application client without having to worry about whether
+client machines have the latest version.
+
+[[gavor]][[GSDVG00314]][[the-application-client-url]]
+
+===== The Application Client URL
+
+The default URL for an application or module generally is as follows:
+
+[source]
+----
+http://host:port/context-root
+----
+
+The default URL for a stand-alone application client module is as
+follows:
+
+[source]
+----
+http://host:port/appclient-module-id
+----
+
+The default URL for an application client module embedded within an
+application is as follows. Note that the relative path to the
+application client JAR file is included.
+
+[source]
+----
+http://host:port/application-id/appclient-path
+----
+
+If the context-root, appclient-module-id, or application-id is not
+specified during deployment, the name of the JAR or EAR file without the
+extension is used. If the application client module or application is
+not in JAR or EAR file format, an appclient-module-id or application-id
+is generated.
+
+Regardless of how the context-root or id is determined, it is written to
+the server log when you deploy the application. For details about
+naming, see "link:application-deployment-guide/overview.html#GSDPG00323[Naming Standards]" in {productName} Application Deployment Guide.
+
+To set a different URL for an application client, use the `context-root`
+subelement of the `java-web-start-access` element in the
+`glassfish-application-client.xml` file. This overrides the
+appclient-module-id or application-id. See the link:application-deployment-guide.html#GSDPG[{productName} Application Deployment Guide].
+
+You can also pass arguments to the ACC or to the application client's
+`main` method as query parameters in the URL. If multiple application
+client arguments are specified, they are passed in the order specified.
+
+A question mark separates the context root from the arguments.
+Ampersands (`&`) separate the arguments and their values. Each argument
+and each value must begin with `arg=`. Here is an example URL with a
+`-color` argument for a stand-alone application client. The `-color`
+argument is passed to the application client's `main` method.
+
+[source]
+----
+http://localhost:8080/testClient?arg=-color&arg=red
+----
+
+
+[NOTE]
+====
+If you are using the `javaws` URL command to launch Java Web Start with
+a URL that contains arguments, enclose the URL in double quotes (`"`) to
+avoid breaking the URL at the ampersand (`&`) symbol.
+====
+
+
+Ideally, you should build your production application clients with
+user-friendly interfaces that collect information which might otherwise
+be gathered as command-line arguments. This minimizes the degree to
+which users must customize the URLs that launch application clients
+using Java Web Start. Command-line argument support is useful in a
+development environment and for existing application clients that depend
+on it.
+
+[[gcjlg]][[GSDVG00315]][[signing-jar-files-used-in-java-web-start]]
+
+===== Signing JAR Files Used in Java Web Start
+
+Java Web Start enforces a security sandbox. By default it grants any
+application, including application clients, only minimal privileges.
+Because Java Web Start applications can be so easily downloaded, Java
+Web Start provides protection from potentially harmful programs that
+might be accessible over the network. If an application requires a
+higher privilege level than the sandbox permits, the code that needs
+privileges must be in a JAR file that was signed.
+
+When Java Web Start downloads such a signed JAR file, it displays
+information about the certificate that was used to sign the JAR if that
+certificate is not trusted. It then asks you whether you want to trust
+that signed code. If you agree, the code receives elevated permissions
+and runs. If you reject the signed code, Java Web Start does not start
+the downloaded application.
+
+Your first Java Web Start launch of an application client is likely to
+involve this prompting because by default {productName} uses a
+self-signed certificate that is not linked to a trusted authority.
+
+The {productName} serves two types of signed JAR files in response to
+Java Web Start requests. One type is a JAR file installed as part of the
+{productName}, which starts an application client during a Java Web
+Start launch: as-install``/lib/gf-client.jar``.
+
+The other type is a generated application client JAR file. As part of
+deployment, the {productName} generates a new application client JAR
+file that contains classes, resources, and descriptors needed to run the
+application client on end-user systems. When you deploy an application
+with the `asadmin deploy` command's `--retrieve` option, use the
+`asadmin get-client-stubs` command, or select the Generate RMIStubs
+option from the EJB Modules deployment page in the Administration
+Console, this is one of the JAR files retrieved to your system. Because
+application clients need access beyond the minimal sandbox permissions
+to work in the Java Web Start environment, the generated application
+client JAR file must be signed before it can be downloaded to and
+executed on an end-user system.
+
+A JAR file can be signed automatically or manually.
+
+The following topics are addressed here:
+
+* link:#gcjmd[Automatically Signing JAR Files]
+* link:#gcjlr[Using the `jar-signing-alias` Deployment Property]
+
+[[gcjmd]][[GSDVG00038]][[automatically-signing-jar-files]]
+
+Automatically Signing JAR Files
+
+The {productName} automatically creates a signed version of the
+required JAR file if none exists. When a Java Web Start request for the
+`gf-client.jar` file arrives, the {productName} looks for
+domain-dir`/java-web-start/gf-client.jar`. When a request for an
+application's generated application client JAR file arrives, the
+{productName} looks in the directory
+domain-dir`/java-web-start/`app-name for a file with the same name as
+the generated JAR file created during deployment.
+
+In either case, if the requested signed JAR file is absent or older than
+its unsigned counterpart, the {productName} creates a signed version
+of the JAR file automatically and deposits it in the relevant directory.
+Whether the {productName} just signed the JAR file or not, it serves
+the file from the domain-dir`/java-web-start` directory tree in response
+to the Java Web Start request.
+
+To sign these JAR files, by default the {productName} uses its
+self-signed certificate. When you create a new domain, either by
+installing the {productName} or by using the `asadmin create-domain`
+command, the {productName} creates a self-signed certificate and adds
+it to the domain's key store.
+
+A self-signed certificate is generally untrustworthy because no
+certification authority vouches for its authenticity. The automatic
+signing feature uses the same certificate to create all required signed
+JAR files.
+
+Starting with Java SE 7 Update 21, stricter security is enforced for
+applications launched using Java Web Start. Application users will see
+various security messages, depending on their Java security settings. If
+Java security is set to Very High on their systems, users will not be
+able to launch application clients signed using the {productName}
+self-signed certificate.
+
+To minimize impacts to application users, all Java Web Start
+applications should be signed with a trusted certificate instead of the
+{productName} self-signed certificate. If you use the {productName} Java Web Start feature or deploy applications that provide their
+own Java Web Start applications, perform the following steps:
+
+1. Obtain a trusted certificate from a certification authority if your
+organization does not already have one.
+
+2. Stop {productName}.
+
+3. Replace the {productName} self-signed certificate with the
+trusted certificate by importing the trusted certificate into the
+{productName} keystore using the `s1as` alias. By default, the
+keystore is located at domain-dir`/config/keystore.jks`.
++
+For more information about importing a trusted certificate into the
+domain keystore, see "link:security-guide/system-security.html#GSSCG00147[Administering JSSE Certificates]"
+in {productName} Security Guide.
+
+4. Delete any signed JARs already generated by {productName}:
+.. At the command prompt, type: +
+``rm -rf`` domain-dir``/java_web_start``
+.. For each application that contains an application client launched
+using Java Web Start, type: +
+``rm -rf`` domain-dir``/generated/xml/``app-name``/signed``
+.. Restart {productName}.
+
+5. Ensure that the Java security setting on user systems is set to Very High.
+
+After you perform these steps, the first time a user launches an
+application client on their system, Java Web Start detects that the
+server's signed JARs are newer than those cached on the user's system
+and downloads them again. This happens on the first launch only,
+regardless of the client. Even though the application client is now
+signed using a trusted certificate, users will again be asked whether to
+trust the downloaded application and can choose to skip that prompt for
+future launches.
+
+[[gcjlr]][[GSDVG00039]][[using-the-jar-signing-alias-deployment-property]]
+
+Using the `jar-signing-alias` Deployment Property
+
+The `asadmin deploy` command property `jar-signing-alias` specifies the
+alias for the security certificate with which the application client
+container JAR file is signed.
+
+Java Web Start won't execute code requiring elevated permissions unless
+it resides in a JAR file signed with a certificate that the user's
+system trusts. For your convenience, {productName} signs the JAR file
+automatically using the self-signed certificate from the domain, `s1as`.
+Java Web Start then asks the user whether to trust the code and displays
+the {productName} certificate information.
+
+To sign this JAR file with a different certificate, first add the
+certificate to the domain keystore. You can use a certificate from a
+trusted authority, which avoids the Java Web Start prompt. To add a
+certificate to the domain keystore, see "link:security-guide/system-security.html#GSSCG00147[Administering
+JSSE Certificates]" in {productName} Security
+Guide.
+
+Next, deploy your application using the `jar-signing-alias` property.
+For example:
+
+[source]
+----
+asadmin deploy --property jar-signing-alias=MyAlias MyApp.ear
+----
+
+For more information about the `asadmin deploy` command, see the
+link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+[[geqxg]][[GSDVG00316]][[error-handling]]
+
+===== Error Handling
+
+When an application client is launched using Java Web Start, any error
+that the application client logic does not catch and handle is written
+to `System.err` and displayed in a dialog box. This display appears if
+an error occurs even before the application client logic receives
+control. It also appears if the application client code does not catch
+and handle errors itself.
+
+[[geqwd]][[GSDVG00317]][[vendor-icon-splash-screen-and-text]]
+
+===== Vendor Icon, Splash Screen, and Text
+
+To specify a vendor-specific icon, splash screen, text string, or a
+combination of these for Java Web Start download and launch screens, use
+the `vendor` element in the `glassfish-application-client.xml` file. The
+complete format of this element's data is as follows:
+
+[source,xml]
+----
+<vendor>icon-image-URI::splash-screen-image-URI::vendor-text</vendor>
+----
+
+The following example vendor element contains an icon, a splash screen,
+and a text string:
+
+[source,xml]
+----
+<vendor>images/icon.jpg::otherDir/splash.jpg::MyCorp, Inc.</vendor>
+----
+
+The following example vendor element contains an icon and a text string:
+
+[source,xml]
+----
+<vendor>images/icon.jpg::MyCorp, Inc.</vendor>
+----
+
+The following example vendor element contains a splash screen and a text
+string; note the initial double colon:
+
+[source,xml]
+----
+<vendor>::otherDir/splash.jpg::MyCorp, Inc.</vendor>
+----
+
+The following example vendor element contains only a text string:
+
+[source,xml]
+----
+<vendor>MyCorp, Inc.</vendor>
+----
+
+The default value is the text string `Application Client`.
+
+For more information about the `glassfish-application-client.xml` file,
+see the link:application-deployment-guide.html#GSDPG[{productName} Application
+Deployment Guide].
+
+You can also specify a vendor-specific icon, splash screen, text string,
+or a combination by using a custom JNLP file; see link:#gkmbs[Creating a
+Custom JNLP File].
+
+[[gkmbs]][[GSDVG00318]][[creating-a-custom-jnlp-file]]
+
+===== Creating a Custom JNLP File
+
+You can partially customize the Java Network Launching Protocol (JNLP)
+file that {productName} uses for Java Web Start.
+
+The following topics are addressed here:
+
+* link:#gkmco[Specifying the JNLP File in the Deployment Descriptor]
+* link:#gkmbq[Referring to JAR Files from the JNLP File]
+* link:#gkmbt[Referring to Other JNLP Files]
+* link:#gkmbr[Combining Custom and Automatically Generated Content]
+
+For more information about JNLP, see the
+http://java.sun.com/javase/technologies/desktop/javawebstart/download-spec.html[Java
+Web Start Architecture JNLP Specification and API Documentation]
+(`http://java.sun.com/javase/technologies/desktop/javawebstart/download-spec.html`).
+
+[[gkmco]][[GSDVG00040]][[specifying-the-jnlp-file-in-the-deployment-descriptor]]
+
+Specifying the JNLP File in the Deployment Descriptor
+
+To specify a custom JNLP file for Java Web Start, use the `jnlp-doc`
+element in the `glassfish-application-client.xml` file. If none is
+specified, a default JNLP file is generated.
+
+The value of the `jnlp-doc` element is a relative path with the
+following format:
+
+[source]
+----
+[path-to-JAR-in-EAR!]path-to-JNLP-in-JAR
+----
+
+The default path-to-JAR-in-EAR is the current application client JAR
+file. For example, if the JNLP file is in the application client JAR
+file at `custom/myInfo.jnlp`, the element value would look like this:
+
+[source,xml]
+----
+<java-web-start-access>
+   <jnlp-doc>custom/myInfo.jnlp</jnlp-doc>
+</java-web-start-access>
+----
+
+If the application client is inside an EAR file, you can place the
+custom JNLP file inside another JAR file in the EAR. For example, if the
+JNLP file is in a JAR file at `other/myLib.jar`, the element value would
+look like this, with an exclamation point (`!`) separating the path to
+the JAR from the path in the JAR:
+
+[source,xml]
+----
+<java-web-start-access>
+   <jnlp-doc>other/myLib.jar!custom/myInfo.jnlp</jnlp-doc>
+</java-web-start-access>
+----
+
+For more information about the `glassfish-application-client.xml` file,
+see the {productName} Application Deployment
+Guide.
+
+[[gkmbq]][[GSDVG00041]][[referring-to-jar-files-from-the-jnlp-file]]
+
+Referring to JAR Files from the JNLP File
+
+As with any JNLP document, the custom JNLP file can refer to JAR files
+the application client requires.
+
+Do not specify every JAR on which the client depends. {productName}
+automatically handles JAR files that the Jakarta EE specification requires
+to be available to the application client. This includes JAR files
+listed in the application client JAR file's manifest `Class-Path` and
+JAR files in the EAR file's library directory (if any) and their
+transitive closures. The custom JNLP file should specify only those JAR
+files the client needs that {productName} would not otherwise
+include.
+
+Package these JAR files in the EAR file, as with any JAR file required
+by an application client. Use relative URIs in the `<jar href="...">`
+and `<nativelib href="...">` elements to point to the JAR files. The
+codebase that {productName} assigns for the final client JNLP file
+corresponds to the top level of the EAR file. Therefore, relative `href`
+references correspond directly to the relative path to the JAR files
+within the EAR file.
+
+Neither the Jakarta EE specification nor {productName} supports
+packaging JAR files inside the application client JAR file itself.
+Nothing prevents this, but {productName} does no special processing
+of such JAR files. They do not appear in the runtime class path and they
+cannot be referenced from the custom JNLP file.
+
+[[gkmbt]][[GSDVG00042]][[referring-to-other-jnlp-files]]
+
+Referring to Other JNLP Files
+
+The JNLP file can also refer to other custom JNLP files using
+`<extension href="..."/>` elements. To be consistent with relative
+`href` references to JAR files, the relative `href` references to JNLP
+files are resolved within the EAR file. You can place these JNLP files
+directly in the EAR file or inside JAR files that the EAR file contains.
+Use one of these formats for these `href` references:
+
+[source]
+----
+[path-to-JAR-in-EAR!]path-to-JNLP-in-JAR
+
+path-to-JNLP-in-EAR
+----
+
+Note that these formats are not equivalent to the format of the
+`jnlp-doc` element in the `glassfish-application-client.xml` file.
+
+These formats follow the standard entry-within-a-JAR URI syntax and
+semantics. Support for this syntax comes from the automated Java Web
+Start support in {productName}. This is not a feature of Java Web
+Start or the JNLP standard.
+
+[[gkmbr]][[GSDVG00043]][[combining-custom-and-automatically-generated-content]]
+
+Combining Custom and Automatically Generated Content
+
+{productName} recognizes these types of content in the JNLP file:
+
+* Owned — {productName} owns the content and ignores any custom
+content
+* Merged — Automatically generated content and custom content are merged
+* Defaulted — Custom content is used if present, otherwise default
+content is provided
+
+You can compose a complete JNLP file and package it with the application
+client. {productName} then combines it with its automatically
+generated JNLP file. You can also provide content that only adds to or
+replaces what {productName} generates. The custom content must
+conform to the general structure of the JNLP format so that {productName} can properly place it in the final JNLP file.
+
+For example, to specify a single native library to be included only for
+Windows systems, the new element to add might be as follows:
+
+[source,xml]
+----
+<nativelib href="windows/myLib.jar"/>
+----
+
+However, you must indicate where in the overall document this element
+belongs. The actual custom JNLP file should look like this:
+
+[source,xml]
+----
+<jnlp>
+   <resources os="Windows">
+      <nativelib href="windows/myLib.jar"/>
+   </resources>
+</jnlp>
+----
+
+{productName} provides default `<information>` and `<resources>`
+elements, without specifying attributes such as `os`, `arch`,
+`platform`, or `locale`. {productName} merges its own content within
+those elements with custom content under those elements. Further, you
+can provide your own `<information>` and `<resources>` elements (and
+fragments within them) that specify at least one of these attributes.
+
+In general, you can perform the following customizations:
+
+* Override the {productName} defaults for the child elements of
+`<information>` elements that have no attribute settings for `os`,
+`arch`, `platform`, and `locale`. Among these child elements are
+`<title>`, `<vendor>`, `<description>`, `<icon>`, and so on.
+* Add `<information>` elements with `os`, `arch`, `platform`, or
+`locale` settings. You can also add child elements.
+* Add child elements of `<resources>` elements that have no attribute
+settings for `os`, `arch`, or `locale`. Among these child elements are
+`<jar>`, `<property>`, `<nativelib>`, and so on. You can also customize
+attributes of the `<java>` child element.
+* Add `<resources>` elements that specify at least one of `os`, `arch`,
+or `locale`. You can also add child elements.
+
+This flexibility allows you to add JAR files to the application
+(including platform-specific native libraries) and set properties to
+control the behavior of your application clients.
+
+The following tables provide more detail about what parts of the JNLP
+file you can add to and modify.
+
+[[GSDVG556]][[sthref24]][[gkmbk]]
+
+
+Table 10-1 Owned JNLP File Content
+
+[width="100%",cols="32%,68%",options="header",]
+|===
+|JNLP File Fragment |Description
+a|
+[source,xml]
+----
+<jnlp codebase="xxx" ...>
+----
+
+ |{productName} controls this content for application clients
+packaged in EAR files. The developer controls this content for
+application clients packaged in WAR files.
+
+a|
+[source,xml]
+----
+<jnlp href="xxx" ...>
+----
+
+ |{productName} controls this content for application clients
+packaged in EAR files. The developer controls this content for
+application clients packaged in WAR files.
+
+a|
+[source,xml]
+----
+<jnlp>
+  <security>
+----
+
+ |{productName} must control the permissions requested for each JNLP
+file. All permissions are needed for the main file, which launches the
+ACC. The permissions requested for other JNLP documents depend on
+whether the JAR files referenced in those documents are signed.
+
+a|
+[source,xml]
+----
+<jnlp>
+  <application-desc>
+    <argument> ...
+----
+
+ |{productName} sets the `main-class` and the arguments to be passed
+to the client.
+|===
+
+
+[[GSDVG557]][[sthref25]][[gkmci]]
+
+
+Table 10-2 Defaulted JNLP File Content
+
+[width="100%",cols="39%,61%",options="header",]
+|===
+|JNLP File Fragment |Description
+a|
+[source,xml]
+----
+<jnlp spec="xxx" ...>
+----
+
+ |Specifies the JNLP specification version.
+
+a|
+[source,xml]
+----
+<jnlp>
+  <information [no-attributes]>
+----
+
+ |Specifies the application title, vendor, home page, various
+description text values, icon images, and whether offline execution is
+allowed.
+
+a|
+[source,xml]
+----
+<jnlp>
+  <resources [no-attributes]>
+    <java version="xxx"
+        java-vm-args="yyy" ...>
+----
+
+ |Specifies the Java SE version or selected VM parameter settings.
+|===
+
+
+[[GSDVG558]][[sthref26]][[gkmcc]]
+
+
+Table 10-3 Merged JNLP File Content
+
+[width="100%",cols="37%,63%",options="header",]
+|===
+|JNLP File Fragment |Description
+a|
+[source,xml]
+----
+<jnlp>
+  <information [attributes]>
+----
+
+ |You can specify one or more of the `os`, `arch`, `platform`, and
+`locale` attributes for the `<information>` element. You can also
+specify child elements; {productName} provides no default children.
+
+a|
+[source,xml]
+----
+<jnlp>
+  <resources [attributes]>
+----
+
+ |You can specify one or more of the `os`, `arch`, `platform`, and
+`locale` attributes for the `<resources>` element. You can also specify
+child elements; {productName} provides no default children.
+
+a|
+[source,xml]
+----
+<jnlp>
+  <resources [no-attributes]>
+    <jar ...>
+----
+
+ |Adds JAR files to be included in the application to the JAR files
+provided by {productName}.
+
+a|
+[source,xml]
+----
+<jnlp>
+  <resources [no-attributes]>
+    <nativelib ...>
+----
+
+ |Adds native libraries to be included in the application. Each entry in
+a JAR listed in a `<nativelib>` element must be a native library for the
+correct platform. The full syntax of the `<nativelib>` element lets the
+developer specify the platform for that native library.
+
+a|
+[source,xml]
+----
+<jnlp>
+  <resources [no-attributes]>
+    <property ...>
+----
+
+ |Adds system properties to be included in the application to the system
+properties defined by {productName}.
+
+a|
+[source,xml]
+----
+<jnlp>
+  <resources [no-attributes]>
+    <extension ...>
+----
+
+ |Specifies another custom JNLP file.
+
+a|
+[source,xml]
+----
+<jnlp>
+  <component-desc ...>
+----
+
+ |Includes another custom JNLP file that specifies a component
+extension.
+
+a|
+[source,xml]
+----
+<jnlp>
+  <installer-desc ...>
+----
+
+ |Includes another custom JNLP file that specifies an installer
+extension.
+|===
+
+
+[[gipkt]][[GSDVG00465]][[using-the-embeddable-acc]]
+
+==== Using the Embeddable ACC
+
+You can embed the ACC into your application client. If you place the
+as-install``/lib/gf-client.jar`` file in your runtime classpath, your
+application creates the ACC after your application code has started,
+then requests that the ACC start the application client portion. The
+basic model for coding is as follows:
+
+1. Create a builder object.
+2. Operate on the builder to configure the ACC.
+3. Obtain a new ACC instance from the builder.
+4. Present a client archive or class to the ACC instance.
+5. Start the client running within the newly created ACC instance.
+
+Your code should follow this general pattern:
+
+[source,java]
+----
+// one TargetServer for each ORB endpoint for bootstrapping
+TargetServer[] servers = ...;
+
+// Get a builder to set up the ACC
+AppClientContainer.Builder builder = AppClientContainer.newBuilder(servers);
+
+// Fine-tune the ACC's configuration. Note ability to "chain" invocations.
+builder.callbackHandler("com.acme.MyHandler").authRealm("myRealm"); // Modify config
+
+// Get a container for a client.
+URI clientURI = ...; // URI to the client JAR
+AppClientContainer acc = builder.newContainer(clientURI);
+
+or
+
+Class mainClass = ...;
+AppClientContainer acc = builder.newContainer(mainClass);
+
+// In either case, start the client running.
+String[] appArgs = ...;
+acc.startClient(appArgs); // Start the client
+
+...
+
+acc.close(); // close the ACC(optional)
+----
+
+The ACC loads the application client's `main` class, performs any
+required injection, and transfers control to the `static main` method.
+The ACC's `run` method returns to the calling application as soon as the
+client's `main` method returns to the ACC.
+
+If the application client's `main` method starts any asynchronous
+activity, that work continues after the ACC returns. The ACC has no
+knowledge of whether the client's `main` method triggers asynchronous
+work. Therefore, if the client causes work on threads other than the
+calling thread, and if the embedding application needs to know when the
+client's asynchronous work completes, the embedding application and the
+client must agree on how this happens.
+
+The ACC's shutdown handling is invoked from the ACC's `close` method.
+The calling application can invoke `acc.close()` to close down any
+services started by the ACC. If the application client code started any
+asynchronous activity that might still depend on ACC services, invoking
+`close` before that asynchronous activity completes could cause
+unpredictable and undesirable results. The shutdown handling is also run
+automatically at VM shutdown if the code has not invoked `close` before
+then.
+
+The ACC does not prevent the calling application from creating or
+running more than one ACC instance during a single execution of the
+application either serially or concurrently. However, other services
+used by the ACC (transaction manager, security, ORB, and so on) might or
+might not support such serial or concurrent reuse.
+
+[[beaky]][[GSDVG00466]][[running-an-application-client-using-the-appclient-script]]
+
+==== Running an Application Client Using the `appclient` Script
+
+To run an application client, you can launch the ACC using the
+`appclient` script, whether or not Java Web Start is enabled. This is
+optional. This script is located in the as-install``/bin`` directory. For
+details, see the link:reference-manual.html#GSRFM[{productName}
+Reference Manual].
+
+[[beakz]][[GSDVG00467]][[using-the-package-appclient-script]]
+
+==== Using the `package-appclient` Script
+
+You can package the {productName} system files required to launch
+application clients on remote systems into a single JAR file using the
+`package-appclient` script. This is optional. This script is located in
+the as-install``/bin`` directory. For details, see the
+link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+[[fvymy]][[GSDVG00468]][[the-client.policy-file]]
+
+==== The `client.policy` File
+
+The `client.policy` file is the J2SE policy file used by the application
+client. Each application client has a `client.policy` file. The default
+policy file limits the permissions of Jakarta EE deployed application
+clients to the minimal set of permissions required for these
+applications to operate correctly. If an application client requires
+more than this default set of permissions, edit the `client.policy` file
+to add the custom permissions that your application client needs. Use
+the J2SE standard policy tool or any text editor to edit this file.
+
+For more information on using the J2SE policy tool, see
+`http://docs.oracle.com/javase/tutorial/security/tour2/index.html`.
+
+For more information about the permissions you can set in the
+`client.policy` file, see
+`http://docs.oracle.com/javase/7/docs/technotes/guides/security/permissions.html`.
+
+[[gckgn]][[GSDVG00469]][[using-rmiiiop-over-ssl]]
+
+==== Using RMI/IIOP Over SSL
+
+You can configure RMI/IIOP over SSL in two ways: using a username and
+password, or using a client certificate.
+
+To use a username and password, configure the `ior-security-config`
+element in the `glassfish-ejb-jar.xml` file. The following configuration
+establishes SSL between an application client and an EJB component using
+a username and password. The user has to login to the ACC using either
+the `sun-acc.xml` mechanism or the
+link:securing-apps.html#beacm[Programmatic Login Using the
+ProgrammaticLogin Class] mechanism.
+
+[source,xml]
+----
+<ior-security-config>
+  <transport-config>
+    <integrity>required</integrity>
+    <confidentiality>required</confidentiality>
+    <establish-trust-in-target>supported</establish-trust-in-target>
+    <establish-trust-in-client>none</establish-trust-in-client>
+  </transport-config>
+  <as-context>
+    <auth-method>username_password</auth-method>
+    <realm>default</realm>
+    <required>true</required>
+  </as-context>
+ <sas-context>
+    <caller-propagation>none</caller-propagation>
+ </sas-context>
+</ior-security-config>
+----
+
+For more information about the `glassfish-ejb-jar.xml` and `sun-acc.xml`
+files, see the link:application-deployment-guide.html#GSDPG[{productName}
+Application Deployment Guide].
+
+To use a client certificate, configure the `ior-security-config` element
+in the `glassfish-ejb-jar.xml` file. The following configuration
+establishes SSL between an application client and an EJB component using
+a client certificate.
+
+[source,xml]
+----
+<ior-security-config>
+  <transport-config>
+    <integrity>required</integrity>
+    <confidentiality>required</confidentiality>
+    <establish-trust-in-target>supported</establish-trust-in-target>
+    <establish-trust-in-client>required</establish-trust-in-client>
+  </transport-config>
+  <as-context>
+    <auth-method>none</auth-method>
+    <realm>default</realm>
+    <required>false</required>
+  </as-context>
+  <sas-context>
+    <caller-propagation>none</caller-propagation>
+  </sas-context>
+</ior-security-config>
+----
+
+To use a client certificate, you must also specify the system properties
+for the keystore and truststore to be used in establishing SSL. To use
+SSL with the Application Client Container (ACC), you need to set these
+system properties in one of the following ways:
+
+* Use the new syntax of the `appclient` script and specify the system
+properties as JVM options. See link:#beaky[Running an Application Client
+Using the `appclient` Script].
+* Set the environment variable `VMARGS` in the shell. For example, in
+the `ksh` or `bash` shell, the command to set this environment variable
+would be as follows:
++
+[source]
+----
+export VMARGS="-Djavax.net.ssl.keyStore=${keystore.db.file}
+-Djavax.net.ssl.trustStore=${truststore.db.file}
+-Djavax.net.ssl.keyStorePass word=${ssl.password}
+-Djavax.net.ssl.trustStorePassword=${ssl.password}"
+----
+* Optionally, you can set the `env` element using Ant. For example:
++
+[source,xml]
+----
+<target name="runclient">
+  <exec executable="${S1AS_HOME}/bin/appclient">
+    <env key="VMARGS" value=" -Djavax.net.ssl.keyStore=${keystore.db.file}
+      -Djavax.net.ssl.trustStore=${truststore.db.file}
+      -Djavax.net.ssl.keyStorePasword=${ssl.password}
+      -Djavax.net.ssl.trustStorePassword=${ssl.password}"/>
+    <arg value="-client"/>
+    <arg value="${appClient.jar}"/>
+  </exec>
+</target>
+----
+
+[[ghbpc]][[GSDVG00470]][[connecting-to-a-remote-ejb-module-through-a-firewall]]
+
+==== Connecting to a Remote EJB Module Through a Firewall
+
+To deploy and run an application client that connects to an EJB module
+on a {productName} instance that is behind a firewall, you must set
+ORB Virtual Address Agent Implementation (ORBVAA) options. Use the
+`asadmin create-jvm-options` command as follows:
+
+[source]
+----
+asadmin create-jvm-options -Dcom.sun.corba.ee.ORBVAAHost=public-IP-adress
+asadmin create-jvm-options -Dcom.sun.corba.ee.ORBVAAPort=public-port
+asadmin create-jvm-options
+-Dcom.sun.corba.ee.ORBUserConfigurators.com.sun.corba.ee.impl.plugin.hwlb.VirtualAddressAgentImpl=x
+----
+
+Set the `ORBVAAHost` and `ORBVAAPort` options to the host and port of
+the public address. The `ORBUserConfigurators` option tells the ORB to
+create an instance of the `VirtualAddressAgentImpl` class and invoke the
+`configure` method on the resulting object, which must implement the
+com.sun.corba.ee.spi.orb.ORBConfigurator interface. The
+`ORBUserConfigurators` value doesn't matter. Together, these options
+create an ORB that in turn creates `Object` references (the underlying
+implementation of remote EJB references) containing the public address,
+while the ORB listens on the private address specified for the IIOP port
+in the {productName} configuration.
+
+[[gipkj]][[GSDVG00471]][[specifying-a-splash-screen]]
+
+==== Specifying a Splash Screen
+
+Java SE 6 offers splash screen support, either through a Java
+command-line option or a manifest entry in the application's JAR file.
+To take advantage of this Java SE feature in your application client,
+you can do one of the following:
+
+* Create the appclient JAR file so that its manifest contains a
+`SplashScreen-Image` entry that specifies the path to the image in the
+client. The `java` command displays the splash screen before starting
+the ACC or your client, just as with any Java application.
+* Use the new `appclient ... -jar` launch format, using the `-splash`
+command-line option at runtime or the `SplashScreen-Image` manifest
+entry at development time. See link:#beaky[Running an Application Client
+Using the `appclient` Script].
+* In the environment that runs the `appclient` script, set the `VMOPTS`
+environment variable to include the `-splash` option before invoking the
+`appclient` script to launch the client.
+* Build an application client that uses the embeddable ACC feature and
+specify the splash screen image using one of the following:
+
+** The `-splash` option of the `java` command
+
+** `SplashScreen-Image` in the manifest for your program (not the
+manifest for the application client)
++
+See link:#gipkt[Using the Embeddable ACC].
+
+During application (EAR file) deployment, the {productName} generates
+façade JAR files, one for the application and one for each application
+client in the application. During application client module deployment,
+the {productName} generates a single facade JAR for the application
+client. The `appclient` script supports splash screens inside the
+application client JAR only if you launch an application client facade
+or appclient client JAR. If you launch the facade for an application or
+the undeployed application itself, the `appclient` script cannot take
+advantage of the Java SE 6 splash screen feature.
+
+[[gjiec]][[GSDVG00472]][[setting-login-retries]]
+
+==== Setting Login Retries
+
+You can set a JVM option using the `appclient` script that determines
+the number of login retries allowed. This option is
+`-Dorg.glassfish.appclient.acc.maxLoginRetries=`n where n is a positive
+integer. The default number of retries is 3.
+
+This retry loop happens when the ACC attempts to perform injection if
+you annotated the client's `main` class (for example, using
+`@Resource`). If instead of annotations your client uses the
+`InitialContext` explicitly to look up remote resources, the retry loop
+does not apply. In this case, you could write logic to catch an
+exception around the lookup and retry explicitly.
+
+For details about the `appclient` script syntax, see the
+link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+[[gjpjt]][[GSDVG00473]][[using-libraries-with-application-clients]]
+
+==== Using Libraries with Application Clients
+
+The Libraries field in the Administration Console's deployment page and
+the `--libraries` option of the `asadmin deploy` command do not apply to
+application clients. Neither do the as-install``/lib``, domain-dir``/lib``,
+and domain-dir`/lib/classes` directories comprising the Common Class
+Loader. These apply only to applications and modules deployed to the
+server. For more information, see link:class-loaders.html#beade[Class
+Loaders].
+
+To use libraries with an application client, package the application
+client in an application (EAR file). Then, either place the libraries in
+the ``/lib`` directory of the EAR file or specify their location in the
+application client JAR file's manifest `Class-Path`.
+
+[[gkusn]][[GSDVG00161]][[developing-clients-without-the-acc]]
+
+=== Developing Clients Without the ACC
+
+This section describes the procedure to create, assemble, and deploy a
+Java-based client that is not packaged using the Application Client
+Container (ACC).
+
+The following topics are addressed here:
+
+* link:#gkusp[To access an EJB component from a stand-alone client]
+* link:#gkutw[To access an EJB component from a server-side module]
+* link:#gkuqa[To access a JMS resource from a stand-alone client]
+
+For information about using the ACC, see link:#beakv[Developing Clients
+Using the ACC].
+
+[[gkusp]][[GSDVG00074]][[to-access-an-ejb-component-from-a-stand-alone-client]]
+
+==== To access an EJB component from a stand-alone client
+
+1. In your client code, instantiate the `InitialContext`:
++
+[source,java]
+----
+InitialContext ctx = new InitialContext();
+----
+It is not necessary to explicitly instantiate a naming context that
+points to the CosNaming service.
+2. In the client code, look up the home object by specifying the JNDI
+name of the home object.
++
+Here is an EJB 2.x example:
++
+[source,java]
+----
+Object ref = ctx.lookup("jndi-name");
+BeanAHome = (BeanAHome)PortableRemoteObject.narrow(ref,BeanAHome.class);
+----
+Here is an EJB 3.x example:
++
+[source,java]
+----
+BeanRemoteBusiness bean =(BeanRemoteBusiness) ctx.lookup("com.acme.BeanRemoteBusiness");
+----
+If load balancing is enabled as in Step link:#CIHJADHD[6] and the EJB
+components being accessed are in a different cluster, the endpoint list
+must be included in the lookup, as follows:
++
+[source]
+----
+corbaname:host1:port1,host2:port2,.../NameService#ejb/jndi-name
+----
+For more information about naming and lookups, see
+link:jndi.html#beans[Accessing the Naming Context].
+3. Deploy the EJB component to be accessed.
++
+For more information on deployment, see "link:application-deployment-guide/overview.html#GSDPG00063[About
+Deployment Tools]" in {productName} Application
+Deployment Guide.
+4. Copy the as-install``/lib/gf-client.jar`` file to the client machine
+and include it in the classpath on the client side.
++
+The `gf-client.jar` file references {productName} JAR files in its
+`MANIFEST.MF` file. If there is no {productName} installation on the
+client machine, you must also copy the as-install``/modules`` directory to
+the client machine and maintain its directory structure relative to the
+as-install``/lib/gf-client.jar`` file. Or you can use the
+`package-appclient` script; see link:#beakz[Using the
+`package-appclient` Script].
+5. To access EJB components that are residing in a remote system, set
+the following system properties for the Java Virtual Machine startup
+options:
++
+[source]
+----
+-Dorg.omg.CORBA.ORBInitialHost=${ORBhost}
+-Dorg.omg.CORBA.ORBInitialPort=${ORBport}
+----
+Here ORBhost is the {productName} hostname and ORBport is the ORB
+port number (default is `3700` for the default server instance, named
+`server`).
++
+You can use the `asadmin get` command to get the IIOP port numbers. For
+example:
++
+[source]
+----
+asadmin get "configs.config.server-config.iiop-service.iiop-listener.orb-listener-1.*"
+----
+6. [[CIHJADHD]]
++
+To set up load balancing and remote EJB reference failover, define the
+`endpoints` property as follows:
++
+[source]
+----
+-Dcom.sun.appserv.iiop.endpoints=host1:port1,host2:port2,...
+----
+The `endpoints` property specifies a comma-separated list of one or more
+IIOP endpoints used for load balancing. An IIOP endpoint is in the form
+host`:`port, where the host is an IPv4 address or host name, and the
+port specifies the port number.
++
+If the `endpoints` list is changed dynamically in the code, the new list
+is used only if a new `InitialContext` is created.
+7. Make sure the `etc/hosts` file on the client machine maps the
+{productName} hostname and external IP address.
+8. Run the stand-alone client.
++
+As long as the client environment is set appropriately and the JVM is
+compatible, you merely need to run the `main` class.
+
+[[gkutw]][[GSDVG00075]][[to-access-an-ejb-component-from-a-server-side-module]]
+
+==== To access an EJB component from a server-side module
+
+A server-side module can be a servlet, another EJB component, or another
+type of module.
+
+1. [[CIHFIJDC]]
++
+In your module code, instantiate the `InitialContext`:
++
+[source,java]
+----
+InitialContext ctx = new InitialContext();
+----
+It is not necessary to explicitly instantiate a naming context that
+points to the CosNaming service.
++
+To set up load balancing and remote EJB reference failover, define the
+`endpoints` property as follows:
++
+[source,java]
+----
+Hashtable env = new Hashtable();
+env.put("com.sun.appserv.iiop.endpoints","host1:port1,host2:port2,...");
+InitialContext ctx = new InitialConext(env);
+----
+The `endpoints` property specifies a comma-separated list of one or more
+IIOP endpoints used for load balancing. An IIOP endpoint is in the form
+host`:`port, where the host is an IPv4 address or host name, and the
+port specifies the port number.
++
+You can use the `asadmin get` command to get the IIOP port numbers. For
+example:
++
+[source]
+----
+asadmin get "configs.config.server-config.iiop-service.iiop-listener.orb-listener-1.*"
+----
+If the `endpoints` list is changed dynamically in the code, the new list
+is used only if a new `InitialContext` is created.
+2. In the module code, look up the home object by specifying the JNDI
+name of the home object.
++
+Here is an EJB 2.x example:
++
+[source,java]
+----
+Object ref = ctx.lookup("jndi-name");
+BeanAHome = (BeanAHome)PortableRemoteObject.narrow(ref,BeanAHome.class);
+----
+Here is an EJB 3.x example:
++
+[source,java]
+----
+BeanRemoteBusiness bean =(BeanRemoteBusiness) ctx.lookup("com.acme.BeanRemoteBusiness");
+----
+If load balancing is enabled as in Step link:#CIHFIJDC[1] and the EJB
+components being accessed are in a different cluster, the endpoint list
+must be included in the lookup, as follows:
++
+[source]
+----
+corbaname:host1:port1,host2:port2,.../NameService#ejb/jndi-name
+----
+For more information about naming and lookups, see
+link:jndi.html#beans[Accessing the Naming Context].
+3. Deploy the EJB component to be accessed.
++
+For more information on deployment, see "link:application-deployment-guide/overview.html#GSDPG00063[About
+Deployment Tools]" in {productName} Application
+Deployment Guide.
+4. To access EJB components that are residing in a remote system, set
+the following system properties for the Java Virtual Machine startup
+options:
++
+[source]
+----
+-Dorg.omg.CORBA.ORBInitialHost=${ORBhost}
+-Dorg.omg.CORBA.ORBInitialPort=${ORBport}
+----
+Here ORBhost is the Application Server hostname and ORBport is the ORB
+port number (default is `3700` for the default server instance, named `server`).
+5. Deploy the module.
++
+For more information on deployment, see "link:application-deployment-guide/overview.html#GSDPG00063[About
+Deployment Tools]" in {productName} Application
+Deployment Guide.
+
+[[gkuqa]][[GSDVG00076]][[to-access-a-jms-resource-from-a-stand-alone-client]]
+
+==== To access a JMS resource from a stand-alone client
+
+1. Create a JMS client.
++
+For detailed instructions on developing a JMS client, see
+https://eclipse-ee4j.github.io/jakartaee-tutorial/#jakarta-messaging-examples[
+Java Message Service Examples] in The Jakarta EE Tutorial.
+2. Configure a JMS resource on {productName}.
++
+For information on configuring JMS resources, see
+"link:administration-guide/jms.html#GSADG00598[
+Administering JMS Connection Factories and Destinations]"
+in {productName} Administration Guide.
+3. Copy the following JAR files to the client machine and include them
+in the classpath on the client side:
+* `gf-client.jar` - available at as-install``/lib``
+* `imqjmsra.jar` - available at
+as-install``/lib/install/aplications/jmsra``
++
+The `gf-client.jar` file references {productName} JAR files in its
+`MANIFEST.MF` file. If there is no {productName} installation on the
+client machine, you must also copy the as-install``/modules`` directory to
+the client machine and maintain its directory structure relative to the
+as-install``/lib/gf-client.jar`` file. Or you can use the
+`package-appclient` script; see link:#beakz[Using the
+`package-appclient` Script].
+4. To access EJB components that are residing in a remote system, set
+the following system properties for the Java Virtual Machine startup
+options:
++
+[source]
+----
+-Dorg.omg.CORBA.ORBInitialHost=${ORBhost}
+-Dorg.omg.CORBA.ORBInitialPort=${ORBport}
+----
+Here ORBhost is the Application Server hostname and ORBport is the ORB
+port number (default is `3700` for the default server instance, named
+`server`).
++
+You can use the `asadmin get` command to get the IIOP port numbers. For
+example:
++
+[source]
+----
+asadmin get "configs.config.server-config.iiop-service.iiop-listener.orb-listener-1.*"
+----
+5. Run the stand-alone client.
++
+As long as the client environment is set appropriately and the JVM is
+compatible, you merely need to run the `main` class.
+
+
diff --git a/docs/application-development-guide/src/main/asciidoc/jdbc.adoc b/docs/application-development-guide/src/main/asciidoc/jdbc.adoc
new file mode 100644
index 0000000..1338b88
--- /dev/null
+++ b/docs/application-development-guide/src/main/asciidoc/jdbc.adoc
@@ -0,0 +1,693 @@
+type=page
+status=published
+title=Using the JDBC API for Database Access
+next=transaction-service.html
+prev=part-services-and-apis.html
+~~~~~~
+
+= Using the JDBC API for Database Access
+
+[[GSDVG00017]][[beamj]]
+
+
+[[using-the-jdbc-api-for-database-access]]
+== 14 Using the JDBC API for Database Access
+
+This chapter describes how to use the Java Database Connectivity (JDBC)
+API for database access with the {productName}. This chapter
+also provides high level JDBC implementation instructions for servlets
+and EJB components using the {productName}.
+
+The JDBC specifications are available at
+`http://www.oracle.com/technetwork/java/javase/jdbc/index.html`.
+
+A useful JDBC tutorial is located at
+`http://docs.oracle.com/javase/tutorial/jdbc/index.html`.
+
+
+[NOTE]
+====
+The {productName} does not support connection pooling or transactions
+for an application's database access if it does not use standard Jakarta EE
+`DataSource` objects.
+====
+
+
+The following topics are addressed here:
+
+* link:#giyck[Statements]
+* link:#giyeq[Connections]
+* link:#giyde[Connection Wrapping]
+* link:#gavro[Allowing Non-Component Callers]
+* link:#giydx[Using Application-Scoped Resources]
+* link:#geqvg[Restrictions and Optimizations]
+
+[[giyck]][[GSDVG00182]][[statements]]
+
+=== Statements
+
+The following topics are addressed here:
+
+* link:#giyfu[Using an Initialization Statement]
+* link:#ghqrx[Setting a Statement Timeout]
+* link:#gktbf[Statement Leak Detection and Leaked Statement Reclamation]
+* link:#giyci[Statement Caching]
+* link:#giygg[Statement Tracing]
+
+[[giyfu]][[GSDVG00495]][[using-an-initialization-statement]]
+
+==== Using an Initialization Statement
+
+You can specify a statement that executes each time a physical
+connection to the database is created (not reused) from a JDBC
+connection pool. This is useful for setting request or session specific
+properties and is suited for homogeneous requests in a single
+application. Set the Init SQL attribute of the JDBC connection pool to
+the SQL string to be executed in one of the following ways:
+
+* Enter an Init SQL value in the Edit Connection Pool Advanced
+Attributes page in the Administration Console. For more information,
+click the Help button in the Administration Console.
+* Specify the `--initsql` option in the
+`asadmin create-jdbc-connection-pool` command. For more information, see
+the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+* Specify the `init-sql` option in the `asadmin set` command. For
+example:
++
+[source]
+----
+asadmin set domain1.resources.jdbc-connection-pool.DerbyPool.init-sql="sql-string"
+----
+For more information, see the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+[[ghqrx]][[GSDVG00496]][[setting-a-statement-timeout]]
+
+==== Setting a Statement Timeout
+
+An abnormally long running JDBC query executed by an application may
+leave it in a hanging state unless a timeout is explicitly set on the
+statement. Setting a statement timeout guarantees that all queries
+automatically time out if not completed within the specified period.
+When statements are created, the `queryTimeout` is set according to the
+statement timeout setting. This works only when the underlying JDBC
+driver supports `queryTimeout` for `Statement`, `PreparedStatement`,
+`CallableStatement`, and `ResultSet`.
+
+You can specify a statement timeout in the following ways:
+
+* Enter a Statement Timeout value in the Edit Connection Pool Advanced
+Attributes page in the Administration Console. For more information,
+click the Help button in the Administration Console.
+* Specify the `--statementtimeout` option in the
+`asadmin create-jdbc-connection-pool` command. For more information, see
+the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+[[gktbf]][[GSDVG00497]][[statement-leak-detection-and-leaked-statement-reclamation]]
+
+==== Statement Leak Detection and Leaked Statement Reclamation
+
+If statements are not closed by an application after use, it is possible
+for the application to run out of cursors. Enabling statement leak
+detection causes statements to be considered as leaked if they are not
+closed within a specified period. Additionally, leaked statements can
+reclaimed automatically.
+
+To enable statement leak detection, set Statement Leak Timeout In
+Seconds for the JDBC connection pool to a positive, nonzero value in one
+of the following ways:
+
+* Specify the `--statementleaktimeout` option in the
+`create-jdbc-connection-pool` subcommand. For more information, see
+link:reference-manual/create-jdbc-connection-pool.html#GSRFM00036[`create-jdbc-connection-pool`(1)].
+* Specify the `statement-leak-timeout-in-seconds` option in the `set`
+subcommand. For example:
++
+[source]
+----
+asadmin set resources.jdbc-connection-pool.pool-name.statement-leak-timeout-in-seconds=300
+----
+
+When selecting a value for Statement Leak Timeout In Seconds, make sure
+that:
+
+* It is less than the Connection Leak Timeout; otherwise, the connection
+could be closed before the statement leak is recognized.
+* It is greater than the Statement Timeout; otherwise, a long running
+query could be mistaken as a statement leak.
+
+After enabling statement leak detection, enable leaked statement
+reclamation by setting Reclaim Leaked Statements for the JDBC connection
+pool to a `true` value in one of the following ways:
+
+* Specify the `--statementleakreclaim=true` option in the
+`create-jdbc-connection-pool` subcommand. For more information, see
+link:reference-manual/create-jdbc-connection-pool.html#GSRFM00036[`create-jdbc-connection-pool`(1)].
+* Specify the `statement-leak-reclaim` option in the `set` subcommand.
+For example:
++
+[source]
+----
+asadmin set resources.jdbc-connection-pool.pool-name.statement-leak-reclaim=true
+----
+
+[[giyci]][[GSDVG00498]][[statement-caching]]
+
+==== Statement Caching
+
+Statement caching stores statements, prepared statements, and callable
+statements that are executed repeatedly by applications in a cache,
+thereby improving performance. Instead of the statement being prepared
+each time, the cache is searched for a match. The overhead of parsing
+and creating new statements each time is eliminated.
+
+Statement caching is usually a feature of the JDBC driver. The {productName} provides caching for drivers that do not support caching. To
+enable this feature, set the Statement Cache Size for the JDBC
+connection pool in one of the following ways:
+
+* Enter a Statement Cache Size value in the Edit Connection Pool
+Advanced Attributes page in the Administration Console. For more
+information, click the Help button in the Administration Console.
+* Specify the `--statementcachesize` option in the
+`asadmin create-jdbc-connection-pool` command. For more information, see
+the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+* Specify the `statement-cache-size` option in the `asadmin set`
+command. For example:
++
+[source]
+----
+asadmin set domain1.resources.jdbc-connection-pool.DerbyPool.statement-cache-size=10
+----
+For more information, see the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+By default, this attribute is set to zero and the statement caching is
+turned off. To enable statement caching, you can set any positive
+nonzero value. The built-in cache eviction strategy is LRU-based (Least
+Recently Used). When a connection pool is flushed, the connections in
+the statement cache are recreated.
+
+[[giygg]][[GSDVG00499]][[statement-tracing]]
+
+==== Statement Tracing
+
+You can trace the SQL statements executed by applications that use a
+JDBC connection pool. Set the SQL Trace Listeners attribute to a
+comma-separated list of trace listener implementation classes in one of
+the following ways:
+
+* Enter an SQL Trace Listeners value in the Edit Connection Pool
+Advanced Attributes page in the Administration Console. For more
+information, click the Help button in the Administration Console.
+* Specify the `--sqltracelisteners` option in the
+`asadmin create-jdbc-connection-pool` command. For more information, see
+the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+* Specify the `sql-trace-listeners` option in the `asadmin set` command.
+For example:
++
+[source]
+----
+asadmin set domain1.resources.jdbc-connection-pool.DerbyPool.sql-trace-listeners=listeners
+----
+For more information, see the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+The {productName} provides a public interface,
+org.glassfish.api.jdbc.SQLTraceListener , that implements a means of
+recording `SQLTraceRecord` objects. To make custom implementations of
+this interface available to the {productName}, place the
+implementation classes in as-install``/lib``.
+
+The {productName} provides an SQL tracing logger to log the SQL
+operations in the form of `SQLTraceRecord` objects in the `server.log`
+file. The module name under which the SQL operation is logged is
+`jakarta.enterprise.resource.sqltrace`. SQL traces are logged as FINE
+messages along with the module name to enable easy filtering of the SQL
+logs. A sample SQL trace record looks like this:
+
+[source]
+----
+[#|2009-11-27T15:46:52.202+0530|FINE|glassfish 6.0|jakarta.enterprise.resource.sqltrace.com.sun.gjc.util
+|_ThreadID=29;_ThreadName=Thread-1;ClassName=com.sun.gjc.util.SQLTraceLogger;MethodName=sqlTrace;
+|ThreadID=77 | ThreadName=p: thread-pool-1; w: 6 | TimeStamp=1259317012202
+| ClassName=com.sun.gjc.spi.jdbc40.PreparedStatementWrapper40 | MethodName=executeUpdate
+| arg[0]=insert into table1(colName) values(100) | arg[1]=columnNames | |#]
+----
+
+This trace shows that an `executeUpdate(String sql, String columnNames)`
+operation is being done.
+
+When SQL statement tracing is enabled and JDBC connection pool
+monitoring is enabled, {productName} maintains a tracing cache of
+recent queries and their frequency of use. The following JDBC connection
+pool properties can be configured to control this cache and the
+monitoring statistics available from it:
+
+`time-to-keep-queries-in-minutes`::
+  Specifies how long in minutes to keep a query in the tracing cache,
+  tracking its frequency of use. The default value is 5 minutes.
+`number-of-top-queries-to-report`::
+  Specifies how many of the most used queries, in frequency order, are
+  listed the monitoring report. The default value is 10 queries.
+
+Set these parameters in one of the following ways:
+
+* Add them as properties in the Edit JDBC Connection Pool Properties
+page in the Administration Console. For more information, click the Help
+button in the Administration Console.
+* Specify them using the `--property` option in the
+`create-jdbc-connection-pool` subcommand. For more information, see
+link:reference-manual/create-jdbc-connection-pool.html#GSRFM00036[`create-jdbc-connection-pool`(1)].
+* Set them using the `set` subcommand. For example:
++
+[source]
+----
+asadmin set resources.jdbc-connection-pool.pool-name.property.time-to-keep-queries-in-minutes=10
+----
+
+[[giyeq]][[GSDVG00183]][[connections]]
+
+=== Connections
+
+The following topics are addressed here:
+
+* link:#gktas[Transparent Pool Reconfiguration]
+* link:#giygl[Disabling Pooling]
+* link:#giydr[Associating Connections with Threads]
+* link:#giyfg[Custom Connection Validation]
+* link:#beams[Sharing Connections]
+* link:#gezfh[Marking Bad Connections]
+* link:#gipzl[Handling Invalid Connections]
+
+[[gktas]][[GSDVG00500]][[transparent-pool-reconfiguration]]
+
+==== Transparent Pool Reconfiguration
+
+When the properties or attributes of a JDBC connection pool are changed,
+the connection pool is destroyed and re-created. Normally, applications
+using the connection pool must be redeployed as a consequence. This
+restriction can be avoided by enabling transparent JDBC connection pool
+reconfiguration. When this feature is enabled, applications do not need
+to be redeployed. Instead, requests for a new connections are blocked
+until the reconfiguration operation completes. Connection requests from
+any in-flight transactions are served using the old pool configuration
+so as to complete the transaction. Then, connections are created using
+the pool's new configuration, and any blocked connection requests are
+served with connections from the re-created pool..
+
+To enable transparent JDBC connection pool reconfiguration, set the
+`dynamic-reconfiguration-wait-timeout-in-seconds` property of the JDBC
+connection pool to a positive, nonzero value in one of the following
+ways:
+
+* Add it as a property in the Edit JDBC Connection Pool Properties page
+in the Administration Console. For more information, click the Help
+button in the Administration Console.
+* Specify it using the `--property` option in the
+`create-jdbc-connection-pool` subcommand. For more information, see
+link:reference-manual/create-jdbc-connection-pool.html#GSRFM00036[`create-jdbc-connection-pool`(1)].
+* Set it using the `set` subcommand. For example:
++
+[source]
+----
+asadmin set resources.jdbc-connection-pool.pool-name.property.dynamic-reconfiguration-wait-timeout-in-seconds=15
+----
+
+This property specifies the time in seconds to wait for in-use
+connections to close and in-flight transactions to complete. Any
+connections in use or transaction in flight past this time must be
+retried.
+
+[[giygl]][[GSDVG00501]][[disabling-pooling]]
+
+==== Disabling Pooling
+
+To disable connection pooling, set the Pooling attribute to false. The
+default is true. You can enable or disable connection pooling in one of
+the following ways:
+
+* Enter a Pooling value in the Edit Connection Pool Advanced Attributes
+page in the Administration Console. For more information, click the Help
+button in the Administration Console.
+* Specify the `--pooling` option in the
+`asadmin create-jdbc-connection-pool` command. For more information, see
+the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+* Specify the `pooling` option in the `asadmin set` command. For
+example:
++
+[source]
+----
+asadmin set domain1.resources.jdbc-connection-pool.DerbyPool.pooling=false
+----
+For more information, see the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+The `pooling` option and the system property
+`com.sun.enterprise.connectors.SwitchoffACCConnectionPooling`, which
+turns off connection pooling in the Application Client Container, do not
+affect each other.
+
+An exception is thrown if `associate-with-thread` is set to `true` and
+pooling is disabled. An exception is thrown if you attempt to flush a
+connection pool when pooling is disabled. A warning is logged if the
+following attributes are used, because they are useful only in a pooled
+environment:
+
+* `connection-validation`
+* `validate-atmost-once-period`
+* `match-connections`
+* `max-connection-usage`
+* `idle-timeout`
+
+[[giydr]][[GSDVG00502]][[associating-connections-with-threads]]
+
+==== Associating Connections with Threads
+
+To associate connections with a thread, set the Associate With Thread
+attribute to `true`. The default is `false`. A `true` setting allows
+connections to be saved as `ThreadLocal` in the calling thread.
+Connections get reclaimed only when the calling thread dies or when the
+calling thread is not in use and the pool has run out of connections. If
+the setting is `false`, the thread must obtain a connection from the
+pool each time the thread requires a connection.
+
+The Associate With Thread attribute associates connections with a thread
+such that when the same thread is in need of connections, it can reuse
+the connections already associated with that thread. In this case, the
+overhead of getting connections from the pool is avoided. However, when
+this value is set to `true`, you should verify that the value of the Max
+Pool Size attribute is comparable to the Max Thread Pool Size attribute
+of the thread pool. If the Max Thread Pool Size value is much higher
+than the Max Pool Size value, a lot of time is spent associating
+connections with a new thread after dissociating them from an older one.
+Use this attribute in cases where the thread pool should reuse
+connections to avoid this overhead.
+
+You can set the Associate With Thread attribute in the following ways:
+
+* Enter an Associate With Thread value in the Edit Connection Pool
+Advanced Attributes page in the Administration Console. For more
+information, click the Help button in the Administration Console.
+* Specify the `--associatewiththread` option in the
+`asadmin create-jdbc-connection-pool` command. For more information, see
+the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+* Specify the `associate-with-thread` option in the `asadmin set`
+command. For example:
++
+[source]
+----
+asadmin set domain1.resources.jdbc-connection-pool.DerbyPool.associate-with-thread=true
+----
+For more information, see the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+[[giyfg]][[GSDVG00503]][[custom-connection-validation]]
+
+==== Custom Connection Validation
+
+You can specify a custom implementation for Connection Validation that
+is faster or optimized for a specific database. Set the Validation
+Method attribute to the value `custom-validation`. (Other validation
+methods available are `table` (the default), `auto-commit`, and
+`meta-data`.) The {productName} provides a public interface,
+org.glassfish.api.jdbc.ConnectionValidation, which you can implement to
+plug in your implementation. A new attribute, Validation Classname,
+specifies the fully qualified name of the class that implements the
+ConnectionValidation interface. The Validation Classname attribute is
+required if Connection Validation is enabled and Validation Method is
+set to Custom Validation.
+
+To enable this feature, set Connection Validation, Validation Method,
+and Validation Classname for the JDBC connection pool in one of the
+following ways:
+
+* Enter Connection Validation, Validation Method, and Validation
+Classname values in the Edit Connection Pool Advanced Attributes page in
+the Administration Console. You can select from among validation class
+names for common databases in the Validation Classname field. For more
+information, click the Help button in the Administration Console.
+* Specify the `--isconnectionvalidatereq`, `--validationmethod`, and
+`--validationclassname` options in the
+`asadmin create-jdbc-connection-pool` command. For more information, see
+the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+* Specify the `is-connection-validation-required`,
+`connection-validation-method`, and `validation-classname` options in
+the `asadmin set` command. For example:
++
+[source]
+----
+asadmin set domain1.resources.jdbc-connection-pool.MyPool.is-connection-validation-required=true
+asadmin set domain1.resources.jdbc-connection-pool.MyPool.connection-validation-method=custom-validation
+asadmin set domain1.resources.jdbc-connection-pool.MyPool.validation-classname=impl-class
+----
+For more information, see the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+By default, optimized validation mechanisms are provided for DB2, Apache
+Derby, MSSQL, MySQL, Oracle, PostgreSQL and Sybase databases.
+Additionally, for JDBC 4.0 compliant database drivers, a validation
+mechanism is provided that uses the `Connection.isValid(0)`
+implementation.
+
+[[beams]][[GSDVG00504]][[sharing-connections]]
+
+==== Sharing Connections
+
+When multiple connections acquired by an application use the same JDBC
+resource, the connection pool provides connection sharing within the
+same transaction scope. For example, suppose Bean A starts a transaction
+and obtains a connection, then calls a method in Bean B. If Bean B
+acquires a connection to the same JDBC resource with the same sign-on
+information, and if Bean A completes the transaction, the connection can
+be shared.
+
+Connections obtained through a resource are shared only if the resource
+reference declared by the Jakarta EE component allows it to be shareable.
+This is specified in a component's deployment descriptor by setting the
+`res-sharing-scope` element to `Shareable` for the particular resource
+reference. To turn off connection sharing, set `res-sharing-scope` to
+`Unshareable`.
+
+For general information about connections and JDBC URLs, see
+"link:administration-guide/jdbc.html#GSADG00015[Administering Database Connectivity]" in {productName} Administration Guide.
+
+[[gezfh]][[GSDVG00505]][[marking-bad-connections]]
+
+==== Marking Bad Connections
+
+The `DataSource` implementation in the {productName} provides a
+`markConnectionAsBad` method. A marked bad connection is removed from
+its connection pool when it is closed. The method signature is as
+follows:
+
+[source,java]
+----
+public void markConnectionAsBad(java.sql.Connection con)
+----
+
+For example:
+
+[source,java]
+----
+com.sun.appserv.jdbc.DataSource ds=
+   (com.sun.appserv.jdbc.DataSource)context.lookup("dataSource");
+Connection con = ds.getConnection();
+Statement stmt = null;
+try{
+   stmt = con.createStatement();
+   stmt.executeUpdate("Update");
+}
+catch (BadConnectionException e){
+   ds.markConnectionAsBad(con) //marking it as bad for removal
+}
+finally{
+   stmt.close();
+   con.close(); //Connection will be destroyed during close.
+}
+----
+
+[[gipzl]][[GSDVG00506]][[handling-invalid-connections]]
+
+==== Handling Invalid Connections
+
+If a `ConnectionErrorOccured` event occurs, the {productName}
+considers the connection invalid and removes the connection from the
+connection pool. Typically, a JDBC driver generates a
+`ConnectionErrorOccured` event when it finds a `ManagedConnection`
+object unusable. Reasons can be database failure, network failure with
+the database, fatal problems with the connection pool, and so on.
+
+If the `fail-all-connections` setting in the connection pool
+configuration is set to `true`, and a single connection fails, all
+connections are closed and recreated. If this setting is `false`,
+individual connections are recreated only when they are used. The
+default is `false`.
+
+The `is-connection-validation-required` setting specifies whether
+connections have to be validated before being given to the application.
+If a resource's validation fails, it is destroyed, and a new resource is
+created and returned. The default is `false`.
+
+The `prefer-validate-over-recreate` property specifies that validating
+idle connections is preferable to closing them. This property has no
+effect on non-idle connections. If set to `true`, idle connections are
+validated during pool resizing, and only those found to be invalid are
+destroyed and recreated. If `false`, all idle connections are destroyed
+and recreated during pool resizing. The default is `false`.
+
+You can set the `fail-all-connections`,
+`is-connection-validation-required`, and `prefer-validate-over-recreate`
+configuration settings during creation of a JDBC connection pool. Or,
+you can use the `asadmin set` command to dynamically reconfigure a
+setting. For example:
+
+[source]
+----
+asadmin set server.resources.jdbc-connection-pool.JCPool1.fail-all-connections="true"
+asadmin set server.resources.jdbc-connection-pool.JCPool1.is-connection-validation-required="true"
+asadmin set server.resources.jdbc-connection-pool.JCPool1.property.prefer-validate-over-recreate="true"
+----
+
+For details, see the link:reference-manual.html#GSRFM[{productName}
+Reference Manual].
+
+The interface ValidatingManagedConnectionFactory exposes the method
+`getInvalidConnections` to allow retrieval of the invalid connections.
+The {productName} checks if the JDBC driver implements this
+interface, and if it does, invalid connections are removed when the
+connection pool is resized.
+
+[[giyde]][[GSDVG00184]][[connection-wrapping]]
+
+=== Connection Wrapping
+
+The following topics are addressed here:
+
+* link:#ghqxi[Wrapping Connections]
+* link:#beamt[Obtaining a Physical Connection From a Wrapped Connection]
+* link:#ggrum[Using the `Connection.unwrap()` Method]
+
+[[ghqxi]][[GSDVG00507]][[wrapping-connections]]
+
+==== Wrapping Connections
+
+If the Wrap JDBC Objects option is `true` (the default), wrapped JDBC
+objects are returned for `Statement`, `PreparedStatement`,
+`CallableStatement`, `ResultSet`, and `DatabaseMetaData`.
+
+This option ensures that `Statement.getConnection()` is the same as
+`DataSource.getConnection()`. Therefore, this option should be `true`
+when both `Statement.getConnection()` and `DataSource.getConnection()`
+are done.
+
+You can specify the Wrap JDBC Objects option in the following ways:
+
+* Check or uncheck the Wrap JDBC Objects box on the Edit Connection Pool
+Advanced Attributes page in the Administration Console. For more
+information, click the Help button in the Administration Console.
+* Specify the `--wrapjdbcobjects` option in the
+`asadmin create-jdbc-connection-pool` command. For more information, see
+the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+[[beamt]][[GSDVG00508]][[obtaining-a-physical-connection-from-a-wrapped-connection]]
+
+==== Obtaining a Physical Connection From a Wrapped Connection
+
+The `DataSource` implementation in the {productName} provides a
+`getConnection` method that retrieves the JDBC driver's `SQLConnection`
+from the {productName}'s `Connection` wrapper. The method signature
+is as follows:
+
+[source,java]
+----
+public java.sql.Connection getConnection(java.sql.Connection con)
+throws java.sql.SQLException
+----
+
+For example:
+
+[source,java]
+----
+InitialContext ctx = new InitialContext();
+com.sun.appserv.jdbc.DataSource ds = (com.sun.appserv.jdbc.DataSource)
+   ctx.lookup("jdbc/MyBase");
+Connection con = ds.getConnection();
+Connection drivercon = ds.getConnection(con); //get physical connection from wrapper
+// Do db operations.
+// Do not close driver connection.
+con.close(); // return wrapped connection to pool.
+----
+
+[[ggrum]][[GSDVG00509]][[using-the-connection.unwrap-method]]
+
+==== Using the `Connection.unwrap()` Method
+
+Using the `Connection.unwrap()` method on a vendor-provided interface
+returns an object or a wrapper object implementing the vendor-provided
+interface, which the application can make use of to do vendor-specific
+database operations. Use the `Connection.isWrapperFor()` method on a
+vendor-provided interface to check whether the connection can provide an
+implementation of the vendor-provided interface. Check the JDBC driver
+vendor's documentation for information on these interfaces.
+
+[[gavro]][[GSDVG00185]][[allowing-non-component-callers]]
+
+=== Allowing Non-Component Callers
+
+You can allow non-Java-EE components, such as servlet filters, lifecycle
+modules, and third party persistence managers, to use this JDBC
+connection pool. The returned connection is automatically enlisted with
+the transaction context obtained from the transaction manager. Standard
+Jakarta EE components can also use such pools. Connections obtained by
+non-component callers are not automatically closed at the end of a
+transaction by the container. They must be explicitly closed by the
+caller.
+
+You can enable non-component callers in the following ways:
+
+* Check the Allow Non Component Callers box on the Edit Connection Pool
+Advanced Attributes page in the Administration Console. The default is
+`false`. For more information, click the Help button in the
+Administration Console.
+* Specify the `--allownoncomponentcallers` option in the
+`asadmin create-jdbc-connection-pool` command. For more information, see
+the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+* Specify the `allow-non-component-callers` option in the `asadmin set`
+command. For example:
++
+[source]
+----
+asadmin set domain1.resources.jdbc-connection-pool.DerbyPool.allow-non-component-callers=true
+----
+For more information, see the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+* Create a JDBC resource with a `__pm` suffix.
+
+Accessing a `DataSource` using the `Synchronization.beforeCompletion()`
+method requires setting Allow Non Component Callers to `true`. For more
+information about the Transaction Synchronization Registry, see
+link:transaction-service.html#gaxit[The Transaction Manager, the
+Transaction Synchronization Registry, and `UserTransaction`].
+
+[[giydx]][[GSDVG00186]][[using-application-scoped-resources]]
+
+=== Using Application-Scoped Resources
+
+You can define an application-scoped database or other resource for an
+enterprise application, web module, EJB module, connector module, or
+application client module by supplying a `glassfish-resources.xml`
+deployment descriptor file. For details, see
+"link:application-deployment-guide/deploying-applications.html#GSDPG00075[Application-Scoped Resources]" in {productName} Application Deployment Guide.
+
+[[geqvg]][[GSDVG00187]][[restrictions-and-optimizations]]
+
+=== Restrictions and Optimizations
+
+This section discusses restrictions and performance optimizations that
+affect using the JDBC API.
+
+[[geqvy]][[GSDVG00510]][[disabling-stored-procedure-creation-on-sybase]]
+
+==== Disabling Stored Procedure Creation on Sybase
+
+By default, DataDirect and Oracle JDBC drivers for Sybase databases
+create a stored procedure for each parameterized `PreparedStatement`. On
+the {productName}, exceptions are thrown when primary key identity
+generation is attempted. To disable the creation of these stored
+procedures, set the property `PrepareMethod=direct` for the JDBC
+connection pool.
+
+
diff --git a/docs/application-development-guide/src/main/asciidoc/jms.adoc b/docs/application-development-guide/src/main/asciidoc/jms.adoc
new file mode 100644
index 0000000..edd4c48
--- /dev/null
+++ b/docs/application-development-guide/src/main/asciidoc/jms.adoc
@@ -0,0 +1,243 @@
+type=page
+status=published
+title=Using the Java Message Service
+next=mail.html
+prev=jndi.html
+~~~~~~
+
+= Using the Java Message Service
+
+[[GSDVG00020]][[beaob]]
+
+
+[[using-the-java-message-service]]
+== 17 Using the Java Message Service
+
+This chapter describes how to use the Java Message Service (JMS) API.
+The {productName} has a fully integrated JMS provider: the
+Open Message Queue software.
+
+
+[NOTE]
+====
+JMS resources are supported only in the full {productName}, not in
+the Web Profile.
+====
+
+
+For information about the JMS, see
+https://eclipse-ee4j.github.io/jakartaee-tutorial/#messaging[Messaging]
+in The Jakarta EE Tutorial.
+
+For detailed information about JMS concepts and JMS support in the
+{productName}, see "link:administration-guide/jms.html#GSADG00020[Administering the Java Message
+Service (JMS)]" in {productName} Administration
+Guide.
+
+The following topics are addressed here:
+
+* link:#gkpcz[Using Application-Scoped JMS Resources]
+* link:#beaop[Load-Balanced Message Inflow]
+* link:#beaor[Authentication With `ConnectionFactory`]
+* link:#beaot[Delivering SOAP Messages Using the JMS API]
+
+[[gkpcz]][[GSDVG00196]][[using-application-scoped-jms-resources]]
+
+=== Using Application-Scoped JMS Resources
+
+You can define an application-scoped JMS or other resource for an
+enterprise application, web module, EJB module, connector module, or
+application client module by supplying a `glassfish-resources.xml`
+deployment descriptor file. For details, see
+"link:application-deployment-guide/deploying-applications.html#GSDPG00075[Application-Scoped Resources]" in {productName} Application Deployment Guide.
+
+[[beaop]][[GSDVG00197]][[load-balanced-message-inflow]]
+
+=== Load-Balanced Message Inflow
+
+You can configure `ActivationSpec` properties of the `jmsra` resource
+adapter in the `glassfish-ejb-jar.xml` file for a message-driven bean
+using `activation-config-property` elements. Whenever a message-driven
+bean (`EndPointFactory`) is deployed, the connector runtime engine finds
+these properties and configures them accordingly in the resource
+adapter. See "link:application-deployment-guide/dd-elements.html#GSDPG00086[activation-config-property]" in {productName} Application Deployment Guide.
+
+The {productName} transparently enables messages to be delivered in
+random fashion to message-driven beans having same `ClientID`. The
+`ClientID` is required for durable subscribers.
+
+For nondurable subscribers in which the `ClientID` is not configured,
+all instances of a specific message-driven bean that subscribe to same
+topic are considered equal. When a message-driven bean is deployed to
+multiple instances of the {productName}, only one of the
+message-driven beans receives the message. If multiple distinct
+message-driven beans subscribe to same topic, one instance of each
+message-driven bean receives a copy of the message.
+
+To support multiple consumers using the same queue, set the
+`maxNumActiveConsumers` property of the physical destination to a large
+value. If this property is set, the Oracle Message Queue software allows
+multiple message-driven beans to consume messages from same queue. The
+message is delivered randomly to the message-driven beans. If
+`maxNumActiveConsumers` is set to `-1`, there is no limit to the number
+of consumers.
+
+To ensure that local delivery is preferred, set `addresslist-behavior`
+to `priority`. This setting specifies that the first broker in the
+`AddressList` is selected first. This first broker is the local
+colocated Message Queue instance. If this broker is unavailable,
+connection attempts are made to brokers in the order in which they are
+listed in the `AddressList`. This setting is the default for {productName} instances that belong to a cluster.
+
+[[beaor]][[GSDVG00198]][[authentication-with-connectionfactory]]
+
+=== Authentication With `ConnectionFactory`
+
+If your web, EJB, or client module has `res-auth` set to `Container`,
+but you use the `ConnectionFactory.createConnection("user","password")`
+method to get a connection, the {productName} searches the container
+for authentication information before using the supplied user and
+password. Version 7 of the {productName} threw an exception in this
+situation.
+
+[[beaot]][[GSDVG00199]][[delivering-soap-messages-using-the-jms-api]]
+
+=== Delivering SOAP Messages Using the JMS API
+
+Web service clients use the Simple Object Access Protocol (SOAP) to
+communicate with web services. SOAP uses a combination of XML-based data
+structuring and Hyper Text Transfer Protocol (HTTP) to define a
+standardized way of invoking methods in objects distributed in diverse
+operating environments across the Internet.
+
+For more information about SOAP, see the Apache SOAP web site at
+`http://xml.apache.org/soap/index.html`.
+
+You can take advantage of the JMS provider's reliable messaging when
+delivering SOAP messages. You can convert a SOAP message into a JMS
+message, send the JMS message, then convert the JMS message back into a
+SOAP message.
+
+The following topics are addressed here:
+
+* link:#beaou[To Send SOAP Messages Using the JMS API]
+* link:#beaov[To Receive SOAP Messages Using the JMS API]
+
+[[beaou]][[GSDVG00077]][[to-send-soap-messages-using-the-jms-api]]
+
+==== To Send SOAP Messages Using the JMS API
+
+1. Import the `MessageTransformer` library.
++
+[source,java]
+----
+import com.sun.messaging.xml.MessageTransformer;
+----
+This is the utility whose methods you use to convert SOAP messages to
+JMS messages and the reverse. You can then send a JMS message containing
+a SOAP payload as if it were a normal JMS message.
+2. Initialize the `TopicConnectionFactory`, `TopicConnection`,
+`TopicSession`, and publisher.
++
+[source,java]
+----
+tcf = new TopicConnectionFactory();
+tc = tcf.createTopicConnection();
+session = tc.createTopicSession(false,Session.AUTO_ACKNOWLEDGE);
+topic = session.createTopic(topicName);
+publisher = session.createPublisher(topic);
+----
+3. Construct a SOAP message using the SOAP with Attachments API for
+Java (SAAJ).
++
+[source,java]
+----
+/*construct a default soap MessageFactory */
+MessageFactory mf = MessageFactory.newInstance();
+* Create a SOAP message object.*/
+SOAPMessage soapMessage = mf.createMessage();
+/** Get SOAP part.*/
+SOAPPart soapPart = soapMessage.getSOAPPart();
+/* Get SOAP envelope. */
+SOAPEnvelope soapEnvelope = soapPart.getEnvelope();
+/* Get SOAP body.*/
+SOAPBody soapBody = soapEnvelope.getBody();
+/* Create a name object. with name space */
+/* http://www.sun.com/imq. */
+Name name = soapEnvelope.createName("HelloWorld", "hw",
+ "http://www.sun.com/imq");
+* Add child element with the above name. */
+SOAPElement element = soapBody.addChildElement(name)
+/* Add another child element.*/
+element.addTextNode( "Welcome to GlassFish Web Services." );
+/* Create an atachment with activation API.*/
+URL url = new URL ("http://java.sun.com/webservices/");
+DataHandler dh = new DataHandler (url);
+AttachmentPart ap = soapMessage.createAttachmentPart(dh);
+/*set content type/ID. */
+ap.setContentType("text/html");
+ap.setContentId("cid-001");
+/** add the attachment to the SOAP message.*/
+soapMessage.addAttachmentPart(ap);
+soapMessage.saveChanges();
+----
+4. Convert the SOAP message to a JMS message by calling the
+`MessageTransformer.SOAPMessageintoJMSMessage()` method.
++
+[source,java]
+----
+Message m = MessageTransformer.SOAPMessageIntoJMSMessage (soapMessage, session );
+----
+5. Publish the JMS message.
++
+[source,java]
+----
+publisher.publish(m);
+----
+6. Close the JMS connection.
++
+[source,java]
+----
+tc.close();
+----
+
+[[beaov]][[GSDVG00078]][[to-receive-soap-messages-using-the-jms-api]]
+
+==== To Receive SOAP Messages Using the JMS API
+
+1. Import the `MessageTransformer` library.
++
+[source,java]
+----
+import com.sun.messaging.xml.MessageTransformer;
+----
+This is the utility whose methods you use to convert SOAP messages to
+JMS messages and the reverse. The JMS message containing the SOAP
+payload is received as if it were a normal JMS message.
+2. Initialize the `TopicConnectionFactory`, `TopicConnection`,
+`TopicSession`, `TopicSubscriber`, and Topic.
++
+[source,java]
+----
+messageFactory = MessageFactory.newInstance();
+tcf = new com.sun.messaging.TopicConnectionFactory();
+tc = tcf.createTopicConnection();
+session = tc.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
+topic = session.createTopic(topicName);
+subscriber = session.createSubscriber(topic);
+subscriber.setMessageListener(this);
+tc.start();
+----
+3. Use the `OnMessage` method to receive the message. Use the
+`SOAPMessageFromJMSMessage` method to convert the JMS message to a SOAP
+message.
++
+[source,java]
+----
+public void onMessage (Message message) {
+SOAPMessage soapMessage = MessageTransformer.SOAPMessageFromJMSMessage(message, messageFactory );
+}
+----
+4. Retrieve the content of the SOAP message.
+
+
diff --git a/docs/application-development-guide/src/main/asciidoc/jndi.adoc b/docs/application-development-guide/src/main/asciidoc/jndi.adoc
new file mode 100644
index 0000000..85c2379
--- /dev/null
+++ b/docs/application-development-guide/src/main/asciidoc/jndi.adoc
@@ -0,0 +1,556 @@
+type=page
+status=published
+title=Using the Java Naming and Directory Interface
+next=jms.html
+prev=transaction-service.html
+~~~~~~
+
+= Using the Java Naming and Directory Interface
+
+[[GSDVG00019]][[beanr]]
+
+
+[[using-the-java-naming-and-directory-interface]]
+== 16 Using the Java Naming and Directory Interface
+
+A naming service maintains a set of bindings, which relate names to
+objects. The Jakarta EE naming service is based on the Java Naming and
+Directory Interface (JNDI) API. The JNDI API allows application
+components and clients to look up distributed resources, services, and
+EJB components. For general information about the JNDI API, see
+`http://www.oracle.com/technetwork/java/jndi/index.html`. You can also
+see the JNDI tutorial at `http://docs.oracle.com/javase/jndi/tutorial/`.
+
+The following topics are addressed here:
+
+* link:#beans[Accessing the Naming Context]
+* link:#beanx[Configuring Resources]
+* link:#gcpge[Using a Custom `jndi.properties` File]
+* link:#beaoa[Mapping References]
+
+
+[NOTE]
+====
+The Web Profile of the {productName} supports the EJB 3.1 Lite
+specification, which allows enterprise beans within web applications,
+among other features. The full {productName} supports the entire EJB
+3.1 specification. For details, see
+http://jcp.org/en/jsr/detail?id=318[JSR 318]
+(`http://jcp.org/en/jsr/detail?id=318`).
+====
+
+
+[[beans]][[GSDVG00192]][[accessing-the-naming-context]]
+
+=== Accessing the Naming Context
+
+The {productName} provides a naming environment, or context,
+which is compliant with standard Jakarta EE requirements. A `Context`
+object provides the methods for binding names to objects, unbinding
+names from objects, renaming objects, and listing the bindings. The
+`InitialContext` is the handle to the Jakarta EE naming service that
+application components and clients use for lookups.
+
+The JNDI API also provides subcontext functionality. Much like a
+directory in a file system, a subcontext is a context within a context.
+This hierarchical structure permits better organization of information.
+For naming services that support subcontexts, the `Context` class also
+provides methods for creating and destroying subcontexts.
+
+The following topics are addressed here:
+
+* link:#BGBJGGAD[Portable Global JNDI Names]
+* link:#gcjkd[{productName} V2 Vendor-Specific Global JNDI Names]
+* link:#gkndi[Disabling {productName} V2 JNDI Names]
+* link:#beanu[Accessing EJB Components Using the `CosNaming` Naming
+Context]
+* link:#beanv[Accessing EJB Components in a Remote {productName}]
+* link:#beanw[Naming Environment for Lifecycle Modules]
+
+
+[NOTE]
+====
+Each resource within a server instance must have a unique name. However,
+two resources in different server instances or different domains can
+have the same name.
+====
+
+
+[[BGBJGGAD]][[GSDVG560]][[portable-global-jndi-names]]
+
+==== Portable Global JNDI Names
+
+If an EJB component is a kind of session bean and it is deployed to any
+implementation supporting the EJB 3.1specification (for example,
+{productName} 7), it automatically has one or more portable JNDI
+names defined based on the syntax in the specification. Note that this
+is true of existing EJB 3.0 and 2.x applications that are deployed to an
+implementation supporting EJB 3.1. No code changes are required to the
+bean class itself in order to have the portable global JNDI name
+automatically assigned when deployed to an EJB 3.1 container.
+
+For more information, see the Jakarta EE Platform Specification, section
+EE.5.2.2, "Application Component Environment Namespaces"
+(`http://jcp.org/en/jsr/detail?id=366`),
+and the EJB 3.1 Specification, section 4.4, "Global JNDI Access"
+(`http://jcp.org/en/jsr/detail?id=318`).
+
+If the `disable-nonportable-jndi-names` property is set to false (the
+default), a {productName} V2-specific JNDI name is assigned in
+addition to a portable global JNDI name. For more information, see
+link:#gcjkd[{productName} V2 Vendor-Specific Global JNDI Names] and
+link:#gkndi[Disabling {productName} V2 JNDI Names].
+
+[[gcjkd]][[GSDVG00519]][[glassfish-server-v2-vendor-specific-global-jndi-names]]
+
+==== {productName} V2 Vendor-Specific Global JNDI Names
+
+{productName} v2 vendor-specific global JNDI names are assigned
+according to the following precedence rules:
+
+1. A global JNDI name assigned in the `glassfish-ejb-jar.xml`,
+`glassfish-web.xml`, or `glassfish-application-client.xml` deployment
+descriptor file has the highest precedence. See link:#beaoa[Mapping
+References].
+2. A global JNDI name assigned in a `mapped-name` element in the
+`ejb-jar.xml`, `web.xml`, or `application-client.xml` deployment
+descriptor file has the second highest precedence. The following
+elements have `mapped-name` subelements: `resource-ref`,
+`resource-env-ref`, `ejb-ref`, `message-destination`,
+`message-destination-ref`, `session`, `message-driven`, and `entity`.
+3. A global JNDI name assigned in a `mappedName` attribute of an
+annotation has the third highest precedence. The following annotations
+have `mappedName` attributes: `@jakarta.annotation.Resource`,
+`@javax.ejb.EJB`, `@javax.ejb.Stateless`, `@javax.ejb.Singleton`,
+`@javax.ejb.Stateful`, and `@javax.ejb.MessageDriven`.
+4. In most cases, a default global JNDI name is assigned (and recorded
+in the server log) if no name is assigned in deployment descriptors or
+annotations.
+* For a session or entity bean, a {productName} V2-specific JNDI name
+is assigned as follows:
+
+** For an EJB 2.x dependency or a session or entity bean with a remote
+interface, the default is the fully qualified name of the home
+interface.
+
+** For an EJB 3.0 dependency or a session bean with a remote interface,
+the default is the fully qualified name of the remote business
+interface.
+
+** If both EJB 2.x and EJB 3.0 remote interfaces are specified, or if
+more than one 3.0 remote interface is specified, there is no {productName} V2-specific default. For an entity bean, a global JNDI name must
+be assigned.
+* For all other component dependencies that must be mapped to global
+JNDI names, the default is the name of the dependency relative to
+`java:comp/env`. For example, in the
+`@Resource(name="jdbc/Foo") DataSource ds;` annotation, the global JNDI
+name is `jdbc/Foo`.
+
+[[gkndi]][[GSDVG00526]][[disabling-glassfish-server-v2-jndi-names]]
+
+==== Disabling {productName} V2 JNDI Names
+
+The EJB 3.1 specification supported by {productName} 7 defines
+portable EJB JNDI names for session beans. Because of this, there is
+less need to continue to use older vendor-specific JNDI names.
+
+By default, {productName} V2-specific JNDI names are applied
+automatically by {productName} 7 for backward compatibility.
+However, this can lead to some ease-of-use issues. For example,
+deploying two different applications containing a remote EJB component
+that exposes the same remote interface causes a conflict between the
+default JNDI names.
+
+The default handling of V2-specific JNDI names in {productName} 7
+can be managed by using the `asadmin` command:
+
+[source]
+----
+asadmin> set server.ejb-container.property.disable-nonportable-jndi-names="true"
+----
+
+The `disable-nonportable-jndi-names` property is a boolean flag that can
+take the following values:
+
+`false`::
+  Enables the automatic use of {productName} V2-specific JNDI names
+  in addition to portable global JNDI names. This is the default
+  setting.
+`true`::
+  Disables the automatic use of V2-specific JNDI names. In all cases,
+  only portable global JNDI names are used.
+
+Note that this setting applies to all session beans deployed to the
+server.
+
+[[beanu]][[GSDVG00520]][[accessing-ejb-components-using-the-cosnaming-naming-context]]
+
+==== Accessing EJB Components Using the `CosNaming` Naming Context
+
+The preferred way of accessing the naming service, even in code that
+runs outside of a Jakarta EE container, is to use the no-argument
+`InitialContext` constructor. However, if EJB client code explicitly
+instantiates an `InitialContext` that points to the `CosNaming` naming
+service, it is necessary to set the `java.naming.factory.initial`
+property to `org.glassfish.jndi.cosnaming.CNCtxFactory` in the client JVM
+software when accessing EJB components. You can set this property using
+the `asadmin create-jvm-options` command, as follows:
+
+[source]
+----
+asadmin> create-jvm-options -Djava.naming.factory.initial=org.glassfish.jndi.cosnaming.CNCtxFactory
+----
+
+For details about `asadmin create-jvm-options`, see the
+link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+Or you can set this property in the code, as follows:
+
+[source,java]
+----
+Properties properties = null;
+      try {
+            properties = new Properties();
+            properties.put("java.naming.factory.initial",
+                  "org.glassfish.jndi.cosnaming.CNCtxFactory");
+            ...
+          }
+      ...
+----
+
+The `java.naming.factory.initial` property applies to only one instance.
+The property is not cluster-aware.
+
+[[beanv]][[GSDVG00521]][[accessing-ejb-components-in-a-remote-glassfish-server]]
+
+==== Accessing EJB Components in a Remote {productName}
+
+The recommended approach for looking up an EJB component in a remote
+{productName} from a client that is a servlet or EJB component is to
+use the Interoperable Naming Service syntax. Host and port information
+is prepended to any global JNDI names and is automatically resolved
+during the lookup. The syntax for an interoperable global name is as
+follows:
+
+[source]
+----
+corbaname:iiop:host:port#a/b/name
+----
+
+This makes the programming model for accessing EJB components in another
+{productName} exactly the same as accessing them in the same server.
+The deployer can change the way the EJB components are physically
+distributed without having to change the code.
+
+For Jakarta EE components, the code still performs a `java:comp/env` lookup
+on an EJB reference. The only difference is that the deployer maps the
+`ejb-ref` element to an interoperable name in a {productName}
+deployment descriptor file instead of to a simple global JNDI name.
+
+For example, suppose a servlet looks up an EJB reference using
+`java:comp/env/ejb/Foo`, and the target EJB component has a global JNDI
+name of `a/b/Foo`.
+
+The `ejb-ref` element in `glassfish-web.xml` looks like this:
+
+[source,xml]
+----
+<ejb-ref>
+   <ejb-ref-name>ejb/Foo</ejb-ref-name>
+   <jndi-name>corbaname:iiop:host:port#a/b/Foo</jndi-name>
+</ejb-ref>
+----
+
+The code looks like this:
+
+[source,java]
+----
+Context ic = new InitialContext();
+Object o = ic.lookup("java:comp/env/ejb/Foo");
+----
+
+For a client that doesn't run within a Jakarta EE container, the code just
+uses the interoperable global name instead of the simple global JNDI
+name. For example:
+
+[source,java]
+----
+Context ic = new InitialContext();
+Object o = ic.lookup("corbaname:iiop:host:port#a/b/Foo");
+----
+
+Objects stored in the interoperable naming context and
+component-specific (`java:comp/env`) naming contexts are transient. On
+each server startup or application reloading, all relevant objects are
+re-bound to the namespace.
+
+[[beanw]][[GSDVG00522]][[naming-environment-for-lifecycle-modules]]
+
+==== Naming Environment for Lifecycle Modules
+
+Lifecycle listener modules provide a means of running short or long
+duration tasks based on Java technology within the {productName}
+environment, such as instantiation of singletons or RMI servers. These
+modules are automatically initiated at server startup and are notified
+at various phases of the server life cycle. For details about lifecycle
+modules, see link:lifecycle-listeners.html#beamc[Developing Lifecycle
+Listeners].
+
+The configured properties for a lifecycle module are passed as
+properties during server initialization (the `INIT_EVENT`). The initial
+JNDI naming context is not available until server initialization is
+complete. A lifecycle module can get the `InitialContext` for lookups
+using the method `LifecycleEventContext.getInitialContext()` during, and
+only during, the `STARTUP_EVENT`, `READY_EVENT`, or `SHUTDOWN_EVENT`
+server life cycle events.
+
+[[beanx]][[GSDVG00193]][[configuring-resources]]
+
+=== Configuring Resources
+
+The {productName} exposes special resources in the naming
+environment.
+
+* link:#beany[External JNDI Resources]
+* link:#beanz[Custom Resources]
+* link:#giyvw[Built-in Factories for Custom Resources]
+* link:#gkpdn[Using Application-Scoped Resources]
+
+[[beany]][[GSDVG00523]][[external-jndi-resources]]
+
+==== External JNDI Resources
+
+An external JNDI resource defines custom JNDI contexts and implements
+the javax.naming.spi.InitialContextFactory interface. There is no
+specific JNDI parent context for external JNDI resources, except for the
+standard `java:comp/env/`.
+
+Create an external JNDI resource in one of these ways:
+
+* To create an external JNDI resource using the Administration Console,
+open the Resources component, open the JNDI component, and select
+External Resources. For details, click the Help button in the
+Administration Console.
+* To create an external JNDI resource, use the
+`asadmin create-jndi-resource` command. For details, see the
+link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+[[beanz]][[GSDVG00524]][[custom-resources]]
+
+==== Custom Resources
+
+A custom resource specifies a custom server-wide resource object factory
+that implements the javax.naming.spi.ObjectFactory interface. There is
+no specific JNDI parent context for external JNDI resources, except for
+the standard `java:comp/env/`.
+
+Create a custom resource in one of these ways:
+
+* To create a custom resource using the Administration Console, open the
+Resources component, open the JNDI component, and select Custom
+Resources. For details, click the Help button in the Administration
+Console.
+* To create a custom resource, use the `asadmin create-custom-resource`
+command. For details, see the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+[[giyvw]][[GSDVG00525]][[built-in-factories-for-custom-resources]]
+
+==== Built-in Factories for Custom Resources
+
+The {productName} provides built-in factories for the following types
+of custom resources:
+
+* link:#giywi[JavaBeanFactory]
+* link:#giysn[PropertiesFactory]
+* link:#giytz[PrimitivesAndStringFactory]
+* link:#giywh[URLFactory]
+
+Template `glassfish-resources.xml` files for these built-in factories
+and a `README` file are available at
+as-install``/lib/install/templates/resources/custom/``. For more
+information about the `glassfish-resources.xml` file, see the
+link:application-deployment-guide.html#GSDPG[{productName} Application Deployment
+Guide].
+
+[[giywi]][[GSDVG00329]][[javabeanfactory]]
+
+===== JavaBeanFactory
+
+To create a custom resource that provides instances of a JavaBean class,
+follow these steps:
+
+1. Set the custom resource's factory class to
+`org.glassfish.resources.custom.factory.JavaBeanFactory`.
+2. Create a property in the custom resource for each setter method in
+the JavaBean class.
++
+For example, if the JavaBean class has a method named `setAccount`,
+specify a property named `account` and give it a value.
+3. Make sure the JavaBean class is accessible to the {productName}.
++
+For example, you can place the JavaBean class in the as-install``/lib``
+directory.
+
+[[giysn]][[GSDVG00330]][[propertiesfactory]]
+
+===== PropertiesFactory
+
+To create a custom resource that provides properties to applications,
+set the custom resource's factory class to
+`org.glassfish.resources.custom.factory.PropertiesFactory`, then specify
+one or both of the following:
+
+* Create a property in the custom resource named
+`org.glassfish.resources.custom.factory.PropertiesFactory.fileName` and
+specify as its value the path to a properties file or an XML file.
++
+The path can be absolute or relative to as-install. The file must be
+accessible to the {productName}.
++
+If an XML file is specified, it must match the document type definition
+(DTD) specified in the API definition of
+http://download.oracle.com/javase/8/docs/api/java/util/Properties.html[java.util.Properties]
+(`http://docs.oracle.com/javase/8/docs/api/java/util/Properties.html`).
+* Create the desired properties directly as properties of the custom
+resource.
++
+If both the `fileName` property and other properties are specified, the
+resulting property set is the union. If the same property is defined in
+the file and directly in the custom resource, the value of the latter
+takes precedence.
+
+[[giytz]][[GSDVG00331]][[primitivesandstringfactory]]
+
+===== PrimitivesAndStringFactory
+
+To create a custom resource that provides Java primitives to
+applications, follow these steps:
+
+1. Set the custom resource's factory class to
+`org.glassfish.resources.custom.factory.PrimitivesAndStringFactory`.
+2. Set the custom resource's resource type to one of the following or
+its fully qualified wrapper class name equivalent:
+* `int`
+* `long`
+* `double`
+* `float`
+* `char`
+* `short`
+* `byte`
+* `boolean`
+* `String`
+3. Create a property in the custom resource named `value` and give it
+the value needed by the application.
++
+For example, If the application requires a `double` of value `22.1`,
+create a property with the name `value` and the value `22.1`.
+
+[[giywh]][[GSDVG00332]][[urlfactory]]
+
+===== URLFactory
+
+To create a custom resource that provides URL instances to applications,
+follow these steps:
+
+1. Set the custom resource's factory class to
+`org.glassfish.resources.custom.factory.URLObjectFactory`.
+2. Choose which of the following constructors to use:
+* `URL(protocol, host, port, file)`
+* `URL(protocol, host, file)`
+* `URL(spec)`
+3. Define properties according to the chosen constructor.
++
+For example, for the first constructor, define properties named
+`protocol`, `host`, `port`, and `file`. Example values might be `http`,
+`localhost`, `8085`, and `index.html`, respectively.
++
+For the third constructor, define a property named `spec` and assign it
+the value of the entire URL.
+
+[[gkpdn]][[GSDVG00527]][[using-application-scoped-resources]]
+
+==== Using Application-Scoped Resources
+
+You can define an application-scoped JNDI or other resource for an
+enterprise application, web module, EJB module, connector module, or
+application client module by supplying a `glassfish-resources.xml`
+deployment descriptor file. For details, see
+"link:application-deployment-guide/deploying-applications.html#GSDPG00075[Application-Scoped Resources]" in {productName} Application Deployment Guide.
+
+[[gcpge]][[GSDVG00194]][[using-a-custom-jndi.properties-file]]
+
+=== Using a Custom `jndi.properties` File
+
+To use a custom `jndi.properties` file, JAR it and place it in the
+domain-dir``/lib`` directory. This adds the custom `jndi.properties` file
+to the Common class loader. For more information about class loading,
+see link:class-loaders.html#beade[Class Loaders].
+
+For each property found in more than one `jndi.properties` file, the
+Jakarta EE naming service either uses the first value found or concatenates
+all of the values, whichever makes sense.
+
+[[beaoa]][[GSDVG00195]][[mapping-references]]
+
+=== Mapping References
+
+The following XML elements in the {productName} deployment
+descriptors map resource references in application client, EJB, and web
+application components to JNDI names configured in {productName}:
+
+* `resource-env-ref` - Maps the `@Resource` or `@Resources` annotation
+(or the `resource-env-ref` element in the corresponding Jakarta EE XML
+file) to the absolute JNDI name configured in {productName}.
+* `resource-ref` - Maps the `@Resource` or `@Resources` annotation (or
+the `resource-ref` element in the corresponding Jakarta EE XML file) to the
+absolute JNDI name configured in {productName}.
+* `ejb-ref` - Maps the `@EJB` annotation (or the `ejb-ref` element in
+the corresponding Jakarta EE XML file) to the absolute JNDI name configured
+in {productName}.
++
+JNDI names for EJB components must be unique. For example, appending the
+application name and the module name to the EJB name is one way to
+guarantee unique names. In this case, `mycompany.pkging.pkgingEJB.MyEJB`
+would be the JNDI name for an EJB in the module `pkgingEJB.jar`, which
+is packaged in the `pkging.ear` application.
+
+These elements are part of the `glassfish-web.xml`,
+`glassfish-application-client.xml`, `glassfish-ejb-jar.xml`, and
+`glassfish-application.xml` deployment descriptor files. For more
+information about how these elements behave in each of the deployment
+descriptor files, see "link:application-deployment-guide/dd-elements.html#GSDPG00007[Elements of the {productName}
+Deployment Descriptors]" in {productName}
+Application Deployment Guide.
+
+The rest of this section uses an example of a JDBC resource lookup to
+describe how to reference resource factories. The same principle is
+applicable to all resources (such as JMS destinations, JavaMail
+sessions, and so on).
+
+The `@Resource` annotation in the application code looks like this:
+
+[source,java]
+----
+@Resource(name="jdbc/helloDbDs") javax.sql.DataSource ds;
+----
+
+This references a resource with the JNDI name of `java:jdbc/helloDbDs`.
+If this is the JNDI name of the JDBC resource configured in the
+{productName}, the annotation alone is enough to reference the
+resource.
+
+However, you can use a {productName} specific deployment descriptor
+to override the annotation. For example, the `resource-ref` element in
+the `glassfish-web.xml` file maps the `res-ref-name` (the name specified
+in the annotation) to the JNDI name of another JDBC resource configured
+in {productName}.
+
+[source,xml]
+----
+<resource-ref>
+   <res-ref-name>jdbc/helloDbDs</res-ref-name>
+   <jndi-name>jdbc/helloDbDataSource</jndi-name>
+</resource-ref>
+----
+
+
diff --git a/docs/application-development-guide/src/main/asciidoc/jpa.adoc b/docs/application-development-guide/src/main/asciidoc/jpa.adoc
new file mode 100644
index 0000000..e27a06f
--- /dev/null
+++ b/docs/application-development-guide/src/main/asciidoc/jpa.adoc
@@ -0,0 +1,778 @@
+type=page
+status=published
+title=Configuring the Java Persistence Provider
+next=webapps.html
+prev=webservices.html
+~~~~~~
+
+= Configuring the Java Persistence Provider
+
+[[GSDVG00008]][[gbxjk]]
+
+
+[[configuring-the-java-persistence-provider]]
+== 6 Configuring the Java Persistence Provider
+
+This chapter describes Oracle TopLink, the default persistence provider
+in {productName}, and introduces how to use it.
+This chapter also tells how to set the default persistence provider in
+{productName} and how to use persistence-related features specific to
+{productName} such as automatic schema generation.
+
+The following topics are addressed here:
+
+* link:#CHDJJAEI[Overview of Oracle TopLink]
+* link:#CHDHDABJ[Using Oracle TopLink in {productName}]
+* link:#gbwmj[Specifying the Database for an Application]
+* link:#gdkwf[Specifying the Persistence Provider for an Application]
+* link:#gescc[Primary Key Generation Defaults]
+* link:#gbwlh[Automatic Schema Generation]
+* link:#gbxjh[Restrictions and Optimizations]
+
+[[CHDJJAEI]][[GSDVG537]][[overview-of-oracle-toplink]]
+
+=== Overview of Oracle TopLink
+
+Oracle TopLink is the default persistence provider in {productName}. It is a comprehensive standards-based object-persistence and
+object-transformation framework that provides APIs, schemas, and
+run-time services for the persistence layer of an application.
+
+TopLink includes all of EclipseLink, from the Eclipse Foundation.
+EclipseLink is the default persistence provider in {productName}. EclipseLink is the open source implementation of the
+development framework and the runtime provided in TopLink. EclipseLink
+implements the following specifications, plus value-added extensions:
+
+* Java Persistence Architecture (JPA) 2.0.
++
+JPA 2.0 is part of Java Platform, Enterprise Edition 6 (Jakarta EE 6). It
+includes improvements and enhancements to domain modeling,
+object/relational mapping, `EntityManager` and `Query` interfaces, and
+the Java Persistence Query Language (JPQL). It includes an API for
+criteria queries, a metamodel API, and support for validation. The Java
+Persistence API can be used with non-EJB components outside the EJB
+container.
++
+For the JPA 2.0 Specification, see
+http://jcp.org/aboutJava/communityprocess/pfd/jsr317/index.html[Java
+Specification Request (JSR) 317]. For basic information about the Java
+Persistence API, see
+https://eclipse-ee4j.github.io/jakartaee-tutorial/#persistence[Persistence]
+in The Jakarta EE Tutorial.
+* Java Architecture for XML Binding (JAXB) 2.0. The EclipseLink JAXB
+implementation, plus EclipseLink extensions, is called MOXy. The
+`org.eclipse.persistence.moxy.jar` file is bundled with {productName}. For more information about MOXy support in {productName}, see
+link:webservices.html#CHDEBBCH[The Databinding Provider].
++
+For the JAXB 2.0 specification, see
+http://jcp.org/aboutJava/communityprocess/pfd/jsr222/index.html[Java
+Specification Request (JSR) 222].
+* EclipseLink utilities are not included but can be used with {productName}. Download the EclipseLink zip file at
+`http://www.eclipse.org/eclipselink/downloads/` and unzip it. The
+utility files are located here:
++
+[source]
+----
+bin/jaxb-compiler.cmd
+bin/jaxb-compiler.sh
+----
+
+In addition to all of EclipseLink, Oracle TopLink includes TopLink Grid,
+an integration between TopLink and Oracle Coherence that allows TopLink
+to use Oracle Coherence as a level 2 (L2) cache and persistence layer
+for entities. The `toplink-grid.jar` file is bundled with {productName}.
+
+
+[NOTE]
+====
+You must have a license for Oracle Coherence to be able to use TopLink
+Grid.
+====
+
+
+For information about developing, deploying, and configuring Oracle
+TopLink, EclipseLink, and TopLink Grid applications, see the following:
+
+* http://docs.oracle.com/html/E25034_01.html[Oracle Fusion Middleware
+Solution Guide for Oracle TopLink]
+* EclipseLink project home at `http://wiki.eclipse.org/EclipseLink`
+* EclipseLink Documentation Center at
+`http://wiki.eclipse.org/EclipseLink/UserGuide`
+* Java API Reference for EclipseLink at
+`http://www.eclipse.org/eclipselink/api/latest/index.html`
+* EclipseLink examples at `http://wiki.eclipse.org/EclipseLink/Examples`
+* http://docs.oracle.com/cd/E18686_01/coh.37/e18677.html[Oracle
+Coherence Developer's Guide]
+* http://docs.oracle.com/cd/E17904_01/doc.1111/e16596.html[Oracle
+Fusion Middleware Integration Guide for Oracle TopLink with Coherence
+Grid]
+
+[[CHDHDABJ]][[GSDVG538]][[using-oracle-toplink-in-glassfish-server]]
+
+=== Using Oracle TopLink in {productName}
+
+To run TopLink JPA applications in {productName}, you must configure
+the server and coordinate certain server and application settings. These
+are described in the following steps. For a summary of these steps, see
+"http://docs.oracle.com/html/E25034_01/tlandgs.html#CIHDDACF[Using
+TopLink with WebLogic Server]" in Oracle Fusion Middleware Solution
+Guide for Oracle TopLink. For more detailed explanations of these steps,
+see the links in the steps.
+
+1. Set up the datasource. See "link:administration-guide/jdbc.html#GSADG00015[
+Administering Database Connectivity]"
+in {productName} Administration Guide.
+2. Create the application. For guidance in writing your application,
+see https://eclipse-ee4j.github.io/jakartaee-tutorial/#persistence[Persistence]
+in The Jakarta EE Tutorial.
+3. Create the `persistence.xml` file. See link:#gbwmj[Specifying the
+Database for an Application] for considerations specific to {productName}.
++
+If you are using the Java Persistence API by calling
+`Persistence.createEMF()`, see link:#gdkwf[Specifying the Persistence
+Provider for an Application].
+4. If the security manager is enabled and you are using the Java
+Persistence API by calling `Persistence.createEMF()`, see
+link:securing-apps.html#gbyah[Enabling and Disabling the Security
+Manager].
+5. Deploy the application. See the {productName}
+Application Deployment Guide.
+6. Run the application. See "Application Client Launch" and "To Launch
+an Application" in Administration Console online help.
+7. Monitor the application. See "link:administration-guide/monitoring.html#GSADG00011[
+Administering the Monitoring Service]"
+in {productName} Administration Guide.
+
+[[gbwmj]][[GSDVG00130]][[specifying-the-database-for-an-application]]
+
+=== Specifying the Database for an Application
+
+{productName} uses the bundled Apache Derby database by default,
+named `jdbc/__default`. If the `transaction-type` element is omitted or
+specified as `JTA` and both the `jta-data-source` and
+`non-jta-data-source` elements are omitted in the `persistence.xml`
+file, Apache Derby is used as a JTA data source. If `transaction-type`
+is specified as `RESOURCE_LOCAL` and both `jta-data-source` and
+`non-jta-data-source` are omitted, Apache Derby is used as a non-JTA
+data source.
+
+To use a non-default database, either specify a value for the
+`jta-data-source` element, or set the `transaction-type` element to
+`RESOURCE_LOCAL` and specify a value for the `non-jta-data-source`
+element.
+
+If you are using the default persistence provider, the provider attempts
+to automatically detect the database type based on the connection
+metadata. This database type is used to issue SQL statements specific to
+the detected database type's dialect. You can specify the optional
+`eclipselink.target-database` property to guarantee that the database
+type is correct. For example:
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+    <persistence xmlns="http://java.sun.com/xml/ns/persistence">
+        <persistence-unit name ="em1">
+            <jta-data-source>jdbc/MyDB2DB</jta-data-source>
+            <properties>
+                <property name="eclipselink.target-database"
+                    value="DB2"/>
+            </properties>
+        </persistence-unit>
+    </persistence>
+----
+
+The following `eclipselink.target-database` property values are allowed.
+Supported platforms have been tested with the {productName} and are
+found to be Jakarta EE compatible.
+
+[source]
+----
+//Supported platforms
+JavaDB
+Derby
+Oracle
+MySQL4
+//Others available
+SQLServer
+DB2
+Sybase
+PostgreSQL
+Informix
+TimesTen
+Attunity
+HSQL
+SQLAnyWhere
+DBase
+DB2Mainframe
+Cloudscape
+PointBase
+----
+
+For more information about the `eclipselink.target-database` property,
+see
+http://wiki.eclipse.org/Using_EclipseLink_JPA_Extensions_(ELUG)#Using_EclipseLink_JPA_Extensions_for_Session.2C_Target_Database_and_Target_Application_Server[Using
+EclipseLink JPA Extensions for Session, Target Database and Target
+Application Server]
+(`http://wiki.eclipse.org/Using_EclipseLink_JPA_Extensions_(ELUG)#Using_EclipseLink_JPA_Extensions_for_Session.2C_Target_Database_and_Target_Application_Server`).
+
+If you are using the Java Persistence API by calling
+`Persistence.createEMF()`, do not specify the `jta-data-source` or
+`non-jta-data-source` elements. Instead, specify the `provider` element
+and any additional properties required by the JDBC driver or the
+database. For example:
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+    <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
+        <persistence-unit name ="em2">
+            <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
+            <class>ejb3.war.servlet.JpaBean</class>
+            <properties>
+                <property name="eclipselink.target-database"
+                    value="Derby"/>
+                <!-- JDBC connection properties -->
+                <property name="eclipselink.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/>
+                <property name="eclipselink.jdbc.url"
+value="jdbc:derby://localhost:1527/testdb;retrieveMessagesFromServerOnGetMessage=true;create=true;"/>
+                <property name="eclipselink.jdbc.user" value="APP"/>
+                <property name="eclipselink.jdbc.password" value="APP"/>
+            </properties>
+        </persistence-unit>
+    </persistence>
+----
+
+For a list of the JDBC drivers currently supported by the {productName}, see the link:release-notes.html#GSRLN[{productName} Release
+Notes]. For configurations of supported and other drivers, see
+"link:administration-guide/jdbc.html#GSADG00579[Configuration Specifics for JDBC Drivers]" in
+{productName} Administration Guide.
+
+[[gdkwf]][[GSDVG00138]][[specifying-the-persistence-provider-for-an-application]]
+
+=== Specifying the Persistence Provider for an Application
+
+If you are using the default persistence provider in an application that
+uses the Java Persistence API by injecting or looking up an entity
+manager or entity manager factory, you do not need to specify the
+provider.
+
+If you are using the Java Persistence API by calling
+`Persistence.createEMF()`, you should always specify the persistence
+provider for specification compliance. To specify the default provider,
+set the `provider` element of the `persistence.xml` file to
+`org.eclipse.persistence.jpa.PersistenceProvider`.
+
+You can specify a non-default persistence provider for an application in
+the manner described in the Java Persistence API Specification:
+
+1. Install the provider. Copy the provider JAR files to the
+domain-dir``/lib`` directory, and restart the {productName}. For more
+information about the domain-dir``/lib`` directory, see
+link:class-loaders.html#beadj[Using the Common Class Loader]. The new
+persistence provider is now available to all modules and applications
+deployed on servers that share the same configuration.
++
+However, the default provider remains the same, Oracle TopLink or
+EclipseLink.
+2. In your persistence unit, specify the provider and any properties
+the provider requires in the `persistence.xml` file. For example:
++
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+    <persistence xmlns="http://java.sun.com/xml/ns/persistence">
+        <persistence-unit name ="em3">
+            <provider>com.company22.persistence.PersistenceProviderImpl</provider>
+            <properties>
+                <property name="company22.database.name" value="MyDB"/>
+            </properties>
+        </persistence-unit>
+    </persistence>
+----
+
+To specify the provider programmatically instead of in the
+`persistence.xml` file, set the `javax.persistence.provider` property
+and pass it to the `Map` parameter of the following method:
+
+[source,java]
+----
+javax.persistence.Persistence.createEntityManagerFactory(String, Map)
+----
+
+[[gescc]][[GSDVG00135]][[primary-key-generation-defaults]]
+
+=== Primary Key Generation Defaults
+
+In the descriptions of the `@GeneratedValue`, `@SequenceGenerator`, and
+`@TableGenerator` annotations in the Java Persistence Specification,
+certain defaults are noted as specific to the persistence provider. The
+default persistence provider's primary key generation defaults are
+listed here.
+
+`@GeneratedValue` defaults are as follows:
+
+* Using `strategy=AUTO` (or no `strategy`) creates a `@TableGenerator`
+named `SEQ_GEN` with default settings. Specifying a `generator` has no
+effect.
+* Using `strategy=TABLE` without specifying a `generator` creates a
+`@TableGenerator` named `SEQ_GEN_TABLE` with default settings.
+Specifying a `generator` but no `@TableGenerator` creates and names a
+`@TableGenerator` with default settings.
+* Using `strategy=IDENTITY` or `strategy=SEQUENCE` produces the same
+results, which are database-specific.
+
+** For Oracle databases, not specifying a `generator` creates a
+`@SequenceGenerator` named `SEQ_GEN_SEQUENCE` with default settings.
+Specifying a `generator` but no `@SequenceGenerator` creates and names a
+`@SequenceGenerator` with default settings.
+
+** For PostgreSQL databases, a `SERIAL` column named
+entity-table`_`pk-column`_SEQ` is created.
+
+** For MySQL databases, an `AUTO_INCREMENT` column is created.
+
+** For other supported databases, an `IDENTITY` column is created.
+
+The `@SequenceGenerator` annotation has one default specific to the
+default provider. The default `sequenceName` is the specified `name`.
+
+`@TableGenerator` defaults are as follows:
+
+* The default `table` is `SEQUENCE`.
+* The default `pkColumnName` is `SEQ_NAME`.
+* The default `valueColumnName` is `SEQ_COUNT`.
+* The default `pkColumnValue` is the specified `name`, or the default
+`name` if no `name` is specified.
+
+[[gbwlh]][[GSDVG00136]][[automatic-schema-generation]]
+
+=== Automatic Schema Generation
+
+The automatic schema generation feature of the {productName} defines
+database tables based on the fields or properties in entities and the
+relationships between the fields or properties. This insulates
+developers from many of the database related aspects of development,
+allowing them to focus on entity development. The resulting schema is
+usable as-is or can be given to a database administrator for tuning with
+respect to performance, security, and so on.
+
+The following topics are addressed here:
+
+* link:#gcjgl[Annotations]
+* link:#gbwmk[Generation Options]
+
+
+[NOTE]
+====
+Automatic schema generation is supported on an all-or-none basis: it
+expects that no tables exist in the database before it is executed. It
+is not intended to be used as a tool to generate extra tables or
+constraints.
+
+Deployment won't fail if all tables are not created, and undeployment
+won't fail if not all tables are dropped. Instead, an error is written
+to the server log. This is done to allow you to investigate the problem
+and fix it manually. You should not rely on the partially created
+database schema to be correct for running the application.
+====
+
+
+[[gcjgl]][[GSDVG00388]][[annotations]]
+
+==== Annotations
+
+The following annotations are used in automatic schema generation:
+`@AssociationOverride`, `@AssociationOverrides`, `@AttributeOverride`,
+`@AttributeOverrides`, `@Column`, `@DiscriminatorColumn`,
+`@DiscriminatorValue`, `@Embedded`, `@EmbeddedId`, `@GeneratedValue`,
+`@Id`, `@IdClass`, `@JoinColumn`, `@JoinColumns`, `@JoinTable`, `@Lob`,
+`@ManyToMany`, `@ManyToOne`, `@OneToMany`, `@OneToOne`,
+`@PrimaryKeyJoinColumn`, `@PrimaryKeyJoinColumns`, `@SecondaryTable`,
+`@SecondaryTables`, `@SequenceGenerator`, `@Table`, `@TableGenerator`,
+`@UniqueConstraint`, and `@Version`. For information about these
+annotations, see the Java Persistence Specification.
+
+For `@Column` annotations, the `insertable` and `updatable` elements are
+not used in automatic schema generation.
+
+For `@OneToMany` and `@ManyToOne` annotations, no `ForeignKeyConstraint`
+is created in the resulting DDL files.
+
+[[gbwmk]][[GSDVG00389]][[generation-options]]
+
+==== Generation Options
+
+Schema generation properties or `asadmin` command line options can
+control automatic schema generation by the following:
+
+* Creating tables during deployment
+* Dropping tables during undeployment
+* Dropping and creating tables during redeployment
+* Generating the DDL files
+
+
+[NOTE]
+====
+Before using these options, make sure you have a properly configured
+database. See link:#gbwmj[Specifying the Database for an Application].
+====
+
+
+Optional schema generation properties control the automatic creation of
+database tables. You can specify them in the `persistence.xml` file. For
+more information, see
+http://wiki.eclipse.org/Using_EclipseLink_JPA_Extensions_(ELUG)#Using_EclipseLink_JPA_Extensions_for_Schema_Generation[Using
+EclipseLink JPA Extensions for Schema Generation]
+(`http://wiki.eclipse.org/Using_EclipseLink_JPA_Extensions_(ELUG)#Using_EclipseLink_JPA_Extensions_for_Schema_Generation`).
+
+The following options of the `asadmin deploy` or `asadmin deploydir`
+command control the automatic creation of database tables at deployment.
+
+[[GSDVG539]][[sthref11]][[gbwlr]]
+
+
+Table 6-1 The `asadmin deploy` and `asadmin deploydir` Generation
+Options
+
+[width="181%",cols="14%,49%,37%",options="header",]
+|===
+|Option |Default |Description
+|`--createtables` |none |If `true`, causes database tables to be created
+for entities that need them. No unique constraints are created. If
+`false`, does not create tables. If not specified, the value of the
+`eclipselink.ddl-generation` property in `persistence.xml` is used.
+
+|`--dropandcreatetables` |none a|
+If `true`, and if tables were automatically created when this
+application was last deployed, tables from the earlier deployment are
+dropped and fresh ones are created.
+
+If `true`, and if tables were not automatically created when this
+application was last deployed, no attempt is made to drop any tables. If
+tables with the same names as those that would have been automatically
+created are found, the deployment proceeds, but a warning is thrown to
+indicate that tables could not be created.
+
+If `false`, the `eclipselink.ddl-generation` property setting in
+`persistence.xml` is overridden.
+
+|===
+
+
+The following options of the `asadmin undeploy` command control the
+automatic removal of database tables at undeployment.
+
+[[GSDVG540]][[sthref12]][[gbwmm]]
+
+
+Table 6-2 The `asadmin undeploy` Generation Options
+
+[width="181%",cols="9%,49%,42%",options="header",]
+|===
+|Option |Default |Description
+|`--droptables` |none a|
+If `true`, causes database tables that were automatically created when
+the entities were last deployed to be dropped when the entities are
+undeployed. If `false`, does not drop tables.
+
+If not specified, tables are dropped only if the
+`eclipselink.ddl-generation` property setting in `persistence.xml` is
+`drop-and-create-tables`.
+
+|===
+
+
+For more information about the `asadmin deploy`, `asadmin deploydir`,
+and `asadmin undeploy` commands, see the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+When `asadmin` deployment options and `persistence.xml` options are both
+specified, the `asadmin` deployment options take precedence.
+
+[[gbxjh]][[GSDVG00139]][[restrictions-and-optimizations]]
+
+=== Restrictions and Optimizations
+
+This section discusses restrictions and performance optimizations that
+affect using the Java Persistence API.
+
+The following topics are addressed here:
+
+* link:#giqbi[Oracle Database Enhancements]
+* link:#ghdtr[Extended Persistence Context]
+* link:#gezxw[Using @OrderBy with a Shared Session Cache]
+* link:#gdwqi[Using BLOB or CLOB Types with the Inet Oraxo JDBC Driver]
+* link:#geqvh[Database Case Sensitivity]
+* link:#gbxjg[Sybase Finder Limitation]
+* link:#gbxjp[MySQL Database Restrictions]
+
+[[giqbi]][[GSDVG00390]][[oracle-database-enhancements]]
+
+==== Oracle Database Enhancements
+
+EclipseLink features a number of enhancements for use with Oracle
+databases. These enhancements require classes from the Oracle JDBC
+driver JAR files to be visible to EclipseLink at runtime. If you place
+the JDBC driver JAR files in domain-dir``/lib``, the classes are not
+visible to {productName} components, including EclipseLink.
+
+If you are using an Oracle database, put JDBC driver JAR files in
+domain-dir``/lib/ext`` instead. This ensures that the JDBC driver classes
+are visible to EclipseLink.
+
+If you do not want to take advantage of Oracle-specific extensions from
+EclipseLink or you cannot put JDBC driver JAR files in
+domain-dir``/lib/ext``, set the `eclipselink.target-database` property to
+the value `org.eclipse.persistence.platform.database.OraclePlatform`.
+For more information about the `eclipselink.target-database` property,
+see link:#gbwmj[Specifying the Database for an Application].
+
+[[ghdtr]][[GSDVG00391]][[extended-persistence-context]]
+
+==== Extended Persistence Context
+
+The Java Persistence API specification does not specify how the
+container and persistence provider should work together to serialize an
+extended persistence context. This also prevents successful
+serialization of a reference to an extended persistence context in a
+stateful session bean.
+
+Even in a single-instance environment, if a stateful session bean is
+passivated, its extended persistence context could be lost when the
+stateful session bean is activated.
+
+Therefore, in {productName}, a stateful session bean with an extended
+persistence context is never passivated and cannot be failed over.
+
+[[gezxw]][[GSDVG00392]][[using-orderby-with-a-shared-session-cache]]
+
+==== Using @OrderBy with a Shared Session Cache
+
+Setting `@OrderBy` on a `ManyToMany` or `OneToMany` relationship field
+in which a `List` represents the Many side doesn't work if the session
+cache is shared. Use one of the following workarounds:
+
+* Have the application maintain the order so the `List` is cached
+properly.
+* Refresh the session cache using `EntityManager.refresh()` if you don't
+want to maintain the order during creation or modification of the
+`List`.
+* Disable session cache sharing in `persistence.xml` as follows:
++
+[source,xml]
+----
+<property name="eclipselink.cache.shared.default" value="false"/>
+----
+
+[[gdwqi]][[GSDVG00393]][[using-blob-or-clob-types-with-the-inet-oraxo-jdbc-driver]]
+
+==== Using BLOB or CLOB Types with the Inet Oraxo JDBC Driver
+
+To use BLOB or CLOB data types larger than 4 KB for persistence using
+the Inet Oraxo JDBC Driver for Oracle Databases, you must set the
+database's `streamstolob` property value to `true`.
+
+[[geqvh]][[GSDVG00394]][[database-case-sensitivity]]
+
+==== Database Case Sensitivity
+
+Mapping references to column or table names must be in accordance with
+the expected column or table name case, and ensuring this is the
+programmer's responsibility. If column or table names are not explicitly
+specified for a field or entity, the {productName} uses upper case
+column names by default, so any mapping references to the column or
+table names must be in upper case. If column or table names are
+explicitly specified, the case of all mapping references to the column
+or table names must be in accordance with the case used in the specified
+names.
+
+The following are examples of how case sensitivity affects mapping
+elements that refer to columns or tables. Keep case sensitivity in mind
+when writing these mappings.
+
+[[geqvc]][[GSDVG00246]][[unique-constraints]]
+
+===== Unique Constraints
+
+If column names are not explicitly specified on a field, unique
+constraints and foreign key mappings must be specified using uppercase
+references. For example:
+
+[source,java]
+----
+@Table(name="Department", uniqueConstraints={ @UniqueConstraint ( columnNames= { "DEPTNAME" } ) } )
+----
+
+The other way to handle this is by specifying explicit column names for
+each field with the required case. For example:
+
+[source,java]
+----
+@Table(name="Department", uniqueConstraints={ @UniqueConstraint ( columnNames= { "deptName" } ) } )
+public class Department{ @Column(name="deptName") private String deptName; }
+----
+
+Otherwise, the `ALTER TABLE` statement generated by the {productName}
+uses the incorrect case, and the creation of the unique constraint
+fails.
+
+[[geqvk]][[GSDVG00247]][[foreign-key-mapping]]
+
+===== Foreign Key Mapping
+
+Use `@OneToMany(mappedBy="COMPANY")` or specify an explicit column name
+for the `Company` field on the `Many` side of the relationship.
+
+[[geqvi]][[GSDVG00248]][[sql-result-set-mapping]]
+
+===== SQL Result Set Mapping
+
+Use the following elements:
+
+[source,xml]
+----
+<sql-result-set-mapping name="SRSMName">
+   <entity-result entity-class="entities.someEntity" />
+   <column-result name="UPPERCASECOLUMNNAME" />
+</sql-result-set-mapping>
+----
+
+Or specify an explicit column name for the `upperCaseColumnName` field.
+
+[[geqvo]][[GSDVG00249]][[named-native-queries-and-jdbc-queries]]
+
+===== Named Native Queries and JDBC Queries
+
+Column or table names specified in SQL queries must be in accordance
+with the expected case. For example, MySQL requires column names in the
+`SELECT` clause of JDBC queries to be uppercase, while PostgreSQL and
+Sybase require table names to be uppercase in all JDBC queries.
+
+[[geqxc]][[GSDVG00250]][[postgresql-case-sensitivity]]
+
+===== PostgreSQL Case Sensitivity
+
+PostgreSQL stores column and table names in lower case. JDBC queries on
+PostgreSQL retrieve column or table names in lowercase unless the names
+are quoted. For example:
+
+[source,sql]
+----
+use aliases Select m.ID AS \"ID\" from Department m
+----
+
+Use the backslash as an escape character in the class file, but not in
+the `persistence.xml` file.
+
+[[gbxjg]][[GSDVG00395]][[sybase-finder-limitation]]
+
+==== Sybase Finder Limitation
+
+If a finder method with an input greater than 255 characters is executed
+and the primary key column is mapped to a VARCHAR column, Sybase
+attempts to convert type VARCHAR to type TEXT and generates the
+following error:
+
+[source]
+----
+com.sybase.jdbc2.jdbc.SybSQLException: Implicit conversion from datatype
+'TEXT' to 'VARCHAR' is not allowed. Use the CONVERT function to run this query.
+----
+
+To avoid this error, make sure the finder method input is less than 255
+characters.
+
+[[gbxjp]][[GSDVG00396]][[mysql-database-restrictions]]
+
+==== MySQL Database Restrictions
+
+The following restrictions apply when you use a MySQL database with the
+{productName} for persistence.
+
+* MySQL treats `int1` and `int2` as reserved words. If you want to
+define `int1` and `int2` as fields in your table, use `\`int1\`` and
+`\`int2\`` field names in your SQL file.
+* When `VARCHAR` fields get truncated, a warning is displayed instead of
+an error. To get an error message, start the MySQL database in strict
+SQL mode.
+* The order of fields in a foreign key index must match the order in the
+explicitly created index on the primary table.
+* The `CREATE TABLE` syntax in the SQL file must end with the following
+line.
++
+[source,sql]
+----
+)  Engine=InnoDB;
+----
+`InnoDB` provides MySQL with a transaction-safe (ACID compliant) storage
+engine having commit, rollback, and crash recovery capabilities.
+* For a `FLOAT` type field, the correct precision must be defined. By
+default, MySQL uses four bytes to store a `FLOAT` type that does not
+have an explicit precision definition. For example, this causes a number
+such as 12345.67890123 to be rounded off to 12345.7 during an `INSERT`.
+To prevent this, specify `FLOAT(10,2)` in the DDL file, which forces the
+database to use an eight-byte double-precision column. For more
+information, see `http://dev.mysql.com/doc/mysql/en/numeric-types.html`.
+* To use `||` as the string concatenation symbol, start the MySQL server
+with the `--sql-mode="PIPES_AS_CONCAT"` option. For more information,
+see `http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html` and
+`http://dev.mysql.com/doc/mysql/en/ansi-mode.html`.
+* MySQL always starts a new connection when `autoCommit==true` is set.
+This ensures that each SQL statement forms a single transaction on its
+own. If you try to rollback or commit an SQL statement, you get an error
+message.
++
+[source]
+----
+javax.transaction.SystemException: java.sql.SQLException:
+Can't call rollback when autocommit=true
+
+javax.transaction.SystemException: java.sql.SQLException:
+Error open transaction is not closed
+----
+To resolve this issue, add `relaxAutoCommit=true` to the JDBC URL. For
+more information, see `http://forums.mysql.com/read.php?39,31326,31404`.
+* MySQL does not allow a `DELETE` on a row that contains a reference to
+itself. Here is an example that illustrates the issue.
++
+[source,sql]
+----
+create table EMPLOYEE (
+        empId   int         NOT NULL,
+        salary  float(25,2) NULL,
+        mgrId   int         NULL,
+        PRIMARY KEY (empId),
+        FOREIGN KEY (mgrId) REFERENCES EMPLOYEE (empId)
+        ) ENGINE=InnoDB;
+
+        insert into Employee values (1, 1234.34, 1);
+        delete from Employee where empId = 1;
+----
+This example fails with the following error message.
++
+[source,java]
+----
+ERROR 1217 (23000): Cannot delete or update a parent row:
+a foreign key constraint fails
+----
+To resolve this issue, change the table creation script to the
+following:
++
+[source,java]
+----
+create table EMPLOYEE (
+        empId   int         NOT NULL,
+        salary  float(25,2) NULL,
+        mgrId   int         NULL,
+        PRIMARY KEY (empId),
+        FOREIGN KEY (mgrId) REFERENCES EMPLOYEE (empId)
+        ON DELETE SET NULL
+        ) ENGINE=InnoDB;
+
+        insert into Employee values (1, 1234.34, 1);
+        delete from Employee where empId = 1;
+----
+This can be done only if the foreign key field is allowed to be null.
+For more information, see
+`http://dev.mysql.com/doc/mysql/en/innodb-foreign-key-constraints.html`.
+
+
diff --git a/docs/application-development-guide/src/main/asciidoc/lifecycle-listeners.adoc b/docs/application-development-guide/src/main/asciidoc/lifecycle-listeners.adoc
new file mode 100644
index 0000000..1828332
--- /dev/null
+++ b/docs/application-development-guide/src/main/asciidoc/lifecycle-listeners.adoc
@@ -0,0 +1,188 @@
+type=page
+status=published
+title=Developing Lifecycle Listeners
+next=osgi.html
+prev=connectors.html
+~~~~~~
+
+= Developing Lifecycle Listeners
+
+[[GSDVG00014]][[beamc]]
+
+
+[[developing-lifecycle-listeners]]
+== 12 Developing Lifecycle Listeners
+
+Lifecycle listener modules provide a means of running short or long
+duration Java-based tasks within the {productName}
+environment, such as instantiation of singletons or RMI servers. These
+modules are automatically initiated at server startup and are notified
+at various phases of the server life cycle.
+
+
+[NOTE]
+====
+Lifecycle listener modules are deprecated. Support for them is included
+for backward compatibility. Implementing the org.glassfish.api.Startup
+interface instead is recommended.
+====
+
+
+All lifecycle module classes and interfaces are in the
+as-install``/modules/``glassfish-api.jar`` file.
+
+For Javadoc tool pages relevant to lifecycle modules, see the
+`com.sun.appserv.server` package.
+
+The following topics are addressed here:
+
+* link:#beamd[Server Life Cycle Events]
+* link:#beame[The LifecycleListener Interface]
+* link:#beamf[The `LifecycleEvent` Class]
+* link:#beamg[The Server Lifecycle Event Context]
+* link:#beamh[Deploying a Lifecycle Module]
+* link:#beami[Considerations for Lifecycle Modules]
+
+[[beamd]][[GSDVG00167]][[server-life-cycle-events]]
+
+=== Server Life Cycle Events
+
+A lifecycle module listens for and performs its tasks in response to the
+following events in the server life cycle:
+
+* After the `INIT_EVENT`, the server reads the configuration,
+initializes built-in subsystems (such as security and logging services),
+and creates the containers.
+* After the `STARTUP_EVENT`, the server loads and initializes deployed
+applications.
+* After the `READY_EVENT`, the server is ready to service requests.
+* After the `SHUTDOWN_EVENT`, the server destroys loaded applications
+and stops.
+* After the `TERMINATION_EVENT`, the server closes the containers, the
+built-in subsystems, and the server runtime environment.
+
+These events are defined in the `LifecycleEvent` class.
+
+The lifecycle modules that listen for these events implement the
+LifecycleListener interface.
+
+[[beame]][[GSDVG00168]][[the-lifecyclelistener-interface]]
+
+=== The LifecycleListener Interface
+
+To create a lifecycle module is to configure a customized class that
+implements the com.sun.appserv.server.LifecycleListener interface. You
+can create and simultaneously execute multiple lifecycle modules.
+
+The LifecycleListener interface defines this method:
+
+[source,java]
+----
+public void handleEvent(com.sun.appserv.server.LifecycleEvent event)
+throws ServerLifecycleException
+----
+
+This method responds to a lifecycle event and throws a
+`com.sun.appserv.server.ServerLifecycleException` if an error occurs.
+
+A sample implementation of the LifecycleListener interface is the
+`LifecycleListenerImpl.java` file, which you can use for testing
+lifecycle events.
+
+[[beamf]][[GSDVG00169]][[the-lifecycleevent-class]]
+
+=== The `LifecycleEvent` Class
+
+The `com.sun.appserv.server.LifecycleEvent` class defines a server life
+cycle event. The following methods are associated with the event:
+
+* `public java.lang.Object.getData()`
++
+This method returns an instance of `java.util.Properties` that contains
+the properties defined for the lifecycle module.
+* `public int getEventType()`
++
+This method returns the type of the last event, which is `INIT_EVENT`,
+`STARTUP_EVENT`, `READY_EVENT`, `SHUTDOWN_EVENT`, or
+`TERMINATION_EVENT`.
+* `public com.sun.appserv.server.LifecycleEventContext.getLifecycleEventContext()`
++
+This method returns the lifecycle event context, described next.
+
+A `LifecycleEvent` instance is passed to the
+`LifecycleListener.handleEvent` method.
+
+[[beamg]][[GSDVG00170]][[the-server-lifecycle-event-context]]
+
+=== The Server Lifecycle Event Context
+
+The com.sun.appserv.server.LifecycleEventContext interface exposes
+runtime information about the server. The lifecycle event context is
+created when the `LifecycleEvent` class is instantiated at server
+initialization. The LifecycleEventContext interface defines these
+methods:
+
+* `public java.lang.String[].getCmdLineArgs()`
++
+This method returns the server startup command-line arguments.
+* `public java.lang.String.getInstallRoot()`
++
+This method returns the server installation root directory.
+* `public java.lang.String.getInstanceName()`
++
+This method returns the server instance name.
+* `public javax.naming.InitialContext.getInitialContext()`
++
+This method returns the initial JNDI naming context. The naming
+environment for lifecycle modules is installed after the
+`STARTUP_EVENT`. A lifecycle module can look up any resource by its
+`jndi-name` attribute after the `READY_EVENT`.
+
+If a lifecycle module needs to look up resources, it can do so after the
+`READY_EVENT`. It can use the `getInitialContext` method to get the
+initial context to which all the resources are bound.
+
+[[beamh]][[GSDVG00171]][[deploying-a-lifecycle-module]]
+
+=== Deploying a Lifecycle Module
+
+For instructions on how to deploy a lifecycle module, see the
+link:application-deployment-guide.html#GSDPG[{productName} Application Deployment
+Guide], or see the `asadmin create-lifecycle-module` command in the
+link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+You do not need to specify a classpath for the lifecycle module if you
+place it in the domain-dir``/lib`` or domain-dir`/lib/classes` directory
+for the Domain Administration Server. Do not place it in the lib
+directory for a particular instance, or it will be deleted when that
+instance synchronizes with the Domain Administration Server.
+
+[[beami]][[GSDVG00172]][[considerations-for-lifecycle-modules]]
+
+=== Considerations for Lifecycle Modules
+
+The resources allocated at initialization or startup should be freed at
+shutdown or termination. The lifecycle module classes are called
+synchronously from the main server thread, therefore it is important to
+ensure that these classes don't block the server. Lifecycle modules can
+create threads if appropriate, but these threads must be stopped in the
+shutdown and termination phases.
+
+The LifeCycleModule class loader is the parent class loader for
+lifecycle modules. Each lifecycle module's classpath is used to
+construct its class loader. All the support classes needed by a
+lifecycle module must be available to the LifeCycleModule class loader
+or its parent, the Connector class loader.
+
+You must ensure that the `server.policy` file is appropriately set up,
+or a lifecycle module trying to perform a `System.exec()` might cause a
+security access violation. For details, see
+link:securing-apps.html#beabx[The `server.policy` File].
+
+The configured properties for a lifecycle module are passed as
+properties after the `INIT_EVENT`. The JNDI naming context is not
+available before the `STARTUP_EVENT`. If a lifecycle module requires the
+naming context, it can get this after the `STARTUP_EVENT`,
+`READY_EVENT`, or `SHUTDOWN_EVENT`.
+
+
diff --git a/docs/application-development-guide/src/main/asciidoc/loe.adoc b/docs/application-development-guide/src/main/asciidoc/loe.adoc
new file mode 100644
index 0000000..79bf1a6
--- /dev/null
+++ b/docs/application-development-guide/src/main/asciidoc/loe.adoc
@@ -0,0 +1,15 @@
+type=page
+status=published
+title=List of Examples
+next=lot.html
+prev=toc.html
+~~~~~~
+
+= List of Examples
+
+[[list-of-examples]]
+== List of Examples
+
+* link:osgi.html#gkvbk[13-1 Example of a WAB Using CDI]
+
+
diff --git a/docs/application-development-guide/src/main/asciidoc/lot.adoc b/docs/application-development-guide/src/main/asciidoc/lot.adoc
new file mode 100644
index 0000000..0f2c686
--- /dev/null
+++ b/docs/application-development-guide/src/main/asciidoc/lot.adoc
@@ -0,0 +1,44 @@
+type=page
+status=published
+title=List of Tables
+next=title.html
+prev=loe.html
+~~~~~~
+
+= List of Tables
+
+[[list-of-tables]]
+== List of Tables
+
+* link:class-loaders.html#fvxzq[2-1 {productName} Class
+Loaders]
+* link:securing-apps.html#sthref6[4-1 Predefined System Properties]
+* link:securing-apps.html#sthref8[4-2 Message Security Provider
+Properties]
+* link:jpa.html#gbwlr[6-1 The asadmin deploy and asadmin deploydir
+Generation Options]
+* link:jpa.html#gbwmm[6-2 The asadmin undeploy Generation Options]
+* link:webapps.html#fvygg[7-1 The cache Attributes]
+* link:webapps.html#fvyep[7-2 The flush Attributes]
+* link:webapps.html#fvyem[7-3 Object Types Supported for Jakarta EE Web
+Application Session State Failover]
+* link:webapps.html#gheoy[7-4 SSIServlet init-param Values]
+* link:webapps.html#ghern[7-5 CGIServlet init-param Values]
+* link:ejb.html#fvyed[8-1 Object Types Supported for Jakarta EE Stateful
+Session Bean State Failover]
+* link:container_managed-persistence.html#fvyaq[9-1 Java Type to JDBC
+Type Mappings for CMP]
+* link:container_managed-persistence.html#fvymp[9-2 Mappings of JDBC
+Types to Database Vendor Specific Types for CMP]
+* link:container_managed-persistence.html#fvymo[9-3 The
+glassfish-ejb-jar.xml Generation Elements]
+* link:container_managed-persistence.html#fvymn[9-4 The asadmin deploy
+and asadmin deploydir Generation Options for CMP]
+* link:container_managed-persistence.html#fvymt[9-5 The asadmin undeploy
+Generation Options for CMP]
+* link:java-clients.html#gkmbk[10-1 Owned JNLP File Content]
+* link:java-clients.html#gkmci[10-2 Defaulted JNLP File Content]
+* link:java-clients.html#gkmcc[10-3 Merged JNLP File Content]
+* link:transaction-service.html#fvyoi[15-1 Transaction Isolation Levels]
+
+
diff --git a/docs/application-development-guide/src/main/asciidoc/mail.adoc b/docs/application-development-guide/src/main/asciidoc/mail.adoc
new file mode 100644
index 0000000..3ed14ac
--- /dev/null
+++ b/docs/application-development-guide/src/main/asciidoc/mail.adoc
@@ -0,0 +1,249 @@
+type=page
+status=published
+title=Using the Jakarta Mail API
+prev=jms.html
+~~~~~~
+
+= Using the Jakarta Mail API
+
+[[GSDVG00021]][[beaow]]
+
+
+[[using-the-jakarta-mail-api]]
+== 18 Using the Jakarta Mail API
+
+This chapter describes how to use the Jakarta Mail API, which provides a set
+of abstract classes defining objects that comprise a mail system.
+
+The following topics are addressed here:
+
+* link:#beaox[Introducing Jakarta Mail]
+* link:#beaoy[Creating a Jakarta Mail Session]
+* link:#beaoz[Jakarta Mail Session Properties]
+* link:#beapa[Looking Up a Jakarta Mail Session]
+* link:#fwfiy[Sending and Reading Messages Using Jakarta Mail]
+* link:#gkpfg[Using Application-Scoped Jakarta Mail Resources]
+
+
+[NOTE]
+====
+Jakarta Mail resources are supported only in the full {productName}, not in the Web Profile.
+====
+
+
+[[beaox]][[GSDVG00200]][[introducing-jakarta-mail]]
+
+=== Introducing Jakarta Mail
+
+The Jakarta Mail API defines classes such as `Message`, `Store`, and
+`Transport`. The API can be extended and can be subclassed to provide
+new protocols and to add functionality when necessary. In addition, the
+API provides concrete subclasses of the abstract classes. These
+subclasses, including `MimeMessage` and `MimeBodyPart`, implement widely
+used Internet mail protocols and conform to the RFC822 and RFC2045
+specifications. The Jakarta Mail API includes support for the IMAP4, POP3,
+and SMTP protocols.
+
+The Jakarta Mail architectural components are as follows:
+
+* The abstract layer declares classes, interfaces, and abstract methods
+intended to support mail handling functions that all mail systems
+support.
+* The internet implementation layer implements part of the abstract
+layer using the RFC822 and MIME internet standards.
+* Jakarta Mail uses the JavaBeans Activation Framework (JAF) to encapsulate
+message data and to handle commands intended to interact with that data.
+
+For more information, see
+"link:administration-guide/mail.html#GSADG00019[Administering the Jakarta Mail Service]"
+in {productName} Administration Guide
+and the Jakarta Mail specification at
+`https://jakarta.ee/specifications/mail`.
+
+[[beaoy]][[GSDVG00201]][[creating-a-jakarta-mail-session]]
+
+=== Creating a Jakarta Mail Session
+
+You can create a Jakarta Mail session in the following ways:
+
+* In the Administration Console, open the Resources component and select
+Jakarta Mail Sessions. For details, click the Help button in the
+Administration Console.
+* Use the `asadmin create-mail-resource` command. For details, see
+the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+[[beaoz]][[GSDVG00202]][[jakarta-mail-session-properties]]
+
+=== Jakarta Mail Session Properties
+
+You can set properties for a Jakarta Mail `Session` object. Every property
+name must start with a `mail-` prefix. The {productName} changes the
+dash (`-`) character to a period (`.`) in the name of the property and
+saves the property to the `MailConfiguration` and Jakarta Mail `Session`
+objects. If the name of the property doesn't start with `mail-`, the
+property is ignored.
+
+For example, if you want to define the property `mail.from` in a
+Jakarta Mail `Session` object, first define the property as follows:
+
+* Name - `mail-from`
+* Value - `john.doe@sun.com`
+
+[[beapa]][[GSDVG00203]][[looking-up-a-jakarta-mail-session]]
+
+=== Looking Up a Jakarta Mail Session
+
+The standard Java Naming and Directory Interface (JNDI) subcontext for
+Jakarta Mail sessions is `java:comp/env/mail`.
+
+Registering Jakarta Mail sessions in the `mail` naming subcontext of a JNDI
+namespace, or in one of its child subcontexts, is standard. The JNDI
+namespace is hierarchical, like a file system's directory structure, so
+it is easy to find and nest references. A Jakarta Mail session is bound to a
+logical JNDI name. The name identifies a subcontext, `mail`, of the root
+context, and a logical name. To change the Jakarta Mail session, you can
+change its entry in the JNDI namespace without having to modify the
+application.
+
+The resource lookup in the application code looks like this:
+
+[source,java]
+----
+InitialContext ic = new InitialContext();
+String snName = "java:comp/env/mail/MyMailSession";
+Session session = (Session)ic.lookup(snName);
+----
+
+For more information about the JNDI API, see link:jndi.html#beanr[Using
+the Java Naming and Directory Interface].
+
+[[fwfiy]][[GSDVG00204]][[sending-and-reading-messages-using-jakarta-mail]]
+
+=== Sending and Reading Messages Using Jakarta Mail
+
+The following topics are addressed here:
+
+* link:#beapb[To Send a Message Using Jakarta Mail]
+* link:#beapc[To Read a Message Using Jakarta Mail]
+
+[[beapb]][[GSDVG00079]][[to-send-a-message-using-jakarta-mail]]
+
+==== To Send a Message Using Jakarta Mail
+
+1. Import the packages that you need.
++
+[source,java]
+----
+import java.util.*;
+import jakarta.activation.*;
+import jakarta.mail.*;
+import jakarta.mail.internet.*;
+import javax.naming.*;
+----
+2. Look up the Jakarta Mail session.
++
+[source,java]
+----
+InitialContext ic = new InitialContext();
+String snName = "java:comp/env/mail/MyMailSession";
+Session session = (Session)ic.lookup(snName);
+----
+For more information, see link:#beapa[Looking Up a Jakarta Mail Session].
+3. Override the Jakarta Mail session properties if necessary.
++
+For example:
++
+[source,java]
+----
+Properties props = session.getProperties();
+props.put("mail.from", "user2@mailserver.com");
+----
+4. Create a `MimeMessage`.
++
+The msgRecipient, msgSubject, and msgTxt variables in the following
+example contain input from the user:
++
+[source,java]
+----
+Message msg = new MimeMessage(session);
+msg.setSubject(msgSubject);
+msg.setSentDate(new Date());
+msg.setFrom();
+msg.setRecipients(Message.RecipientType.TO,
+   InternetAddress.parse(msgRecipient, false));
+msg.setText(msgTxt);
+----
+5. Send the message.
++
+[source,java]
+----
+Transport.send(msg);
+----
+
+[[beapc]][[GSDVG00080]][[to-read-a-message-using-jakarta-mail]]
+
+==== To Read a Message Using Jakarta Mail
+
+1. Import the packages that you need.
++
+[source,java]
+----
+import java.util.*;
+import jakarta.activation.*;
+import jakarta.mail.*;
+import jakarta.mail.internet.*;
+import javax.naming.*;
+----
+2. Look up the Jakarta Mail session.
++
+[source,java]
+----
+InitialContext ic = new InitialContext();
+String snName = "java:comp/env/mail/MyMailSession";
+Session session = (jakarta.mail.Session)ic.lookup(snName);
+----
+For more information, see link:#beapa[Looking Up a Jakarta Mail Session].
+3. Override the Jakarta Mail session properties if necessary.
++
+For example:
++
+[source,java]
+----
+Properties props = session.getProperties();
+props.put("mail.from", "user2@mailserver.com");
+----
+4. Get a `Store` object from the `Session`, then connect to the mail
+server using the Store object's `connect` method.
++
+You must supply a mail server name, a mail user name, and a password.
++
+[source,java]
+----
+Store store = session.getStore();
+store.connect("MailServer", "MailUser", "secret");
+----
+5. Get the INBOX folder.
++
+[source,java]
+----
+Folder folder = store.getFolder("INBOX");
+----
+6. It is efficient to read the `Message` objects (which represent
+messages on the server) into an array.
++
+[source,java]
+----
+Message[] messages = folder.getMessages();
+----
+
+[[gkpfg]][[GSDVG00205]][[using-application-scoped-jakarta-mail-resources]]
+
+=== Using Application-Scoped Jakarta Mail Resources
+
+You can define an application-scoped Jakarta Mail or other resource for an
+enterprise application, web module, EJB module, connector module, or
+application client module by supplying a `glassfish-resources.xml`
+deployment descriptor file. For details, see
+"link:application-deployment-guide/deploying-applications.html#GSDPG00075[Application-Scoped Resources]" in {productName} Application Deployment Guide.
+
+
diff --git a/docs/application-development-guide/src/main/asciidoc/osgi.adoc b/docs/application-development-guide/src/main/asciidoc/osgi.adoc
new file mode 100644
index 0000000..aa254ce
--- /dev/null
+++ b/docs/application-development-guide/src/main/asciidoc/osgi.adoc
@@ -0,0 +1,548 @@
+type=page
+status=published
+title=Developing OSGi-enabled Jakarta EE Applications
+next=part-services-and-apis.html
+prev=lifecycle-listeners.html
+~~~~~~
+
+= Developing OSGi-enabled Jakarta EE Applications
+
+[[GSDVG00015]][[gkpch]]
+
+[[developing-osgi-enabled-java-ee-applications]]
+== 13 Developing OSGi-enabled Jakarta EE Applications
+
+This chapter describes the features and interfaces that {productName}
+provides to develop OSGi-enabled enterprise applications. This chapter
+includes the following sections:
+
+* link:#gkpay[Overview of OSGi Application and {productName}]
+* link:#gkqff[Developing OSGi Application Bundles for {productName}]
+* link:#gkveh[Deploying OSGi Bundles in {productName}]
+
+[[gkpay]][[GSDVG00173]][[overview-of-osgi-application-and-glassfish-server]]
+
+=== Overview of OSGi Application and {productName}
+
+{productName} is fully-compliant with Jakarta EE 10, so it provides the
+latest Jakarta EE APIs and frameworks. It is built using OSGi technology,
+and includes as its OSGi module management subsystem the
+http://felix.apache.org[Apache Felix OSGi framework]
+(`http://felix.apache.org`), which is a fully-compliant implementation
+of the OSGi Service Platform R4 Version 4.3 specification. {productName} supports deployment of OSGi-based applications using this
+framework. OSGi applications can make use of core as well as enterprise
+OSGi features. {productName} makes available many of its Jakarta EE
+platform services, such as the transaction service, HTTP service, JDBC
+Service and JMS, as OSGi services. It also enables use of Jakarta EE
+programming model in OSGi applications, so enterprise Java application
+developers can continue to leverage their existing skills in OSGi-based
+applications. See link:#glhek[Benefits of Using OSGi in Enterprise Java
+Applications] for more information.
+
+OSGi applications are deployed as one or more OSGi bundles, and the
+{productName} deployment and administration infrastructure enables
+you to deploy and manage your OSGi bundles. This chapter classifies OSGi
+bundles into two categories based on the features they use:
+
+* Plain OSGi Application Bundles - bundles that do not contain any Java
+EE components. See link:#gkupd[Developing Plain OSGi Bundles].
+* Hybrid Application Bundles - bundles that are an OSGi bundle as wells
+as a Jakarta EE module. At runtime, such modules have both an OSGi bundle
+context and a Jakarta EE context. {productName} supports the following
+hybrid application bundles:
+
+** Web Application Bundles (or WABs) , see link:#gkunr[Developing Web
+Application Bundles].
+
+** EJB Application Bundles, see link:#gkunh[Developing EJB Application
+Bundles].
+
+[[glhek]][[GSDVG00488]][[benefits-of-using-osgi-in-enterprise-java-applications]]
+
+==== Benefits of Using OSGi in Enterprise Java Applications
+
+Enterprise applications typically need transactional, secured access to
+data stores, messaging systems and other such enterprise information
+systems, and have to cater to a wide variety of clients such as web
+browsers and desktop applications, and so on. Jakarta EE makes development
+of such applications easier with a rich set of APIs and frameworks. It
+also provides a scalable, reliable and easy to administer runtime to
+host such applications.
+
+The OSGi platform complements these features with modularity. It enables
+applications to be separated into smaller, reusable modules with a well
+defined and robust dependency specification. A module explicitly
+specifies its capabilities and requirements. This explicit dependency
+specification encourages developers to visualize dependencies among
+their modules and help them make their modules highly cohesive and less
+coupled. The OSGi module system is dynamic: it allows modules to be
+added and removed at runtime. OSGi has very good support for versioning:
+it supports package versioning as well module versioning. In fact, it
+allows multiple versions of the same package to coexist in the same
+runtime, thus allowing greater flexibility to deployers. The service
+layer of the OSGi platform encourages a more service-oriented approach
+to build a system. The service-oriented approach and dynamic module
+system used together allow a system to be more agile during development
+as well as in production. It makes them better suited to run in an
+Platform-as-a-Service (PaaS) environment.
+
+With {productName}, you do not have to chose one of the two
+platforms. A hybrid approach like OSGi enabling your Jakarta EE
+applications allows new capabilities to applications hitherto
+unavailable to applications built using just one of the two platforms.
+
+[[gkqff]][[GSDVG00174]][[developing-osgi-application-bundles-for-glassfish-server]]
+
+=== Developing OSGi Application Bundles for {productName}
+
+{productName} enables interaction between OSGi components and Jakarta EE
+components. OSGi services managed by the OSGi framework can invoke Java
+EE components managed by the Jakarta EE container and vice versa. For
+example, developers can declaratively export EJBs as OSGi services
+without having to write any OSGi code. This allows any plain OSGi
+component, which is running without the Jakarta EE context, to discover the
+EJB and invoke it. Similarly, Jakarta EE components can locate OSGi
+services provided by plain OSGi bundles and use them as well. {productName} extends the Jakarta EE Context and Dependency Injection (CDI)
+framework to make it easier for Jakarta EE components to consume dynamic
+OSGi services in a type-safe manner.
+
+* link:#gkupd[Developing Plain OSGi Bundles]
+* link:#gkunr[Developing Web Application Bundles]
+* link:#gkunh[Developing EJB Application Bundles]
+
+[[gkupd]][[GSDVG00489]][[developing-plain-osgi-bundles]]
+
+==== Developing Plain OSGi Bundles
+
+Jakarta EE components (like an EJB or Servlet) can look up Jakarta EE platform
+services using JNDI names in the associated Jakarta EE naming context. Such
+code can rely on the Jakarta EE container to inject the required services
+as well. Unfortunately, neither of them works when the code runs outside
+a Jakarta EE context. An example of such code is the `BundleActivator` of
+an OSGi bundle. For such code to access Jakarta EE platform services,
+{productName} makes key services and resources of the underlying Java
+EE platform available as OSGi services. Thus, an OSGi bundle deployed in
+{productName} can access these services using OSGi Service look-up
+APIs or by using a white board pattern. The following Jakarta EE services
+are available as OSGi services:
+
+* link:#gkunk[HTTP Service]
+* link:#gkunn[Transaction Service]
+* link:#gkuof[JDBC Data Source Service]
+* link:#gkuoq[JMS Resource Service]
+
+[[gkunk]][[GSDVG00319]][[http-service]]
+
+===== HTTP Service
+
+The {productName} web container is made available as a service for
+OSGi users who do not use OSGi Web Application Bundles (WABs). This
+service is made available using the standard OSGi/HTTP service
+specification, which is a light API that predates the concept of a web
+application as we know it today. This simple API allows users to
+register servlets and static resources dynamically and draw a boundary
+around them in the form of a `HttpContext`. This simple API can be used
+to build feature-rich web application, such as the Felix Web Console for
+example.
+
+The {productName} web container has one or more virtual servers. A
+virtual server has one or more web application deployed in it. Each web
+application has a distinct context path. Each virtual server has a set
+of HTTP listeners. Each HTTP listener listens on a particular port. When
+multiple virtual servers are present, one of them is treated as the
+default virtual server. Every virtual server comes configured with a
+default web application. The default web application is used to serve
+static content from the `docroot` of {productName}. This default web
+application uses `/` as the context path. A web application contains
+static and dynamic resources. Each virtual server is mapped to an
+`org.osgi.services.http.HttpService` instance. When there are multiple
+virtual servers present, there will be multiple occurrences of
+`HttpService` registered in the service registry. In order to
+distinguish one service from another, each service is registered with a
+service property named `VirtualServer`, whose value is the name of the
+virtual server. The service corresponding to default virtual server has
+the highest ranking, so when looking up a service of type `HttpService`
+without any additional criteria returns the `HttpService` corresponding
+to the default virtual server. In a typical {productName}
+installation, the default virtual server is configured to listen on port
+8080 for the HTTP protocol and port 8181 for the HTTPS protocol.
+
+The context path `/` is reserved for the default web application. Every
+resource and servlet registered using the `registerResource()` and
+`registerServlet()` methods of `HttpService` are made available under a
+special context path named ``/osgi`` in the virtual server. The ``/osgi``
+context path can be changed to some other value by setting an
+appropriate value in the OSGi configuration property or in a system
+property called `org.glassfish.osgihttp.ContextPath`.
+
+For example, HelloWorldServlet will be available at
+`http://localhost:8080/osgi/helloworld` when the following code is
+executed:
+
+[source,java]
+----
+
+HttpService httpService = getHttpService(); // Obtain HttpService
+httpService.registerServlet(httpService.registerServlet("/helloworld",
+new HelloWorldServlet(), null, ctx);
+----
+
+[[gkunn]][[GSDVG00320]][[transaction-service]]
+
+===== Transaction Service
+
+The Java Transaction API (JTA) defines three interfaces to interact with
+the transaction management system: `UserTransaction`,
+`TransactionManager`, and `TransactionSynchronizationRegistry`. They all
+belong to the javax.transaction package. `TransactionManager` and
+`TransactionSynchronizationRegistry` are intended for system level code,
+such as a persistence provider. Whereas, `UserTransaction` is the entity
+that you should use to control transactions. All the objects of the
+underlying JTA layer are made available in the OSGi service registry
+using the following service interfaces:
+
+* `javax.transaction.UserTransaction`
+* `javax.transaction.TransactionManager`
+* `javax.transaction.TransactionSynchronisationRegistry`
+
+There is no additional service property associated with them. Although
+`UserTransaction` appears to be a singleton, in reality any call to it
+gets rerouted to the actual transaction associated with the calling
+thread. Code that runs in the context of a Jakarta EE component typically
+gets a handle on `UserTransaction` by doing a JNDI lookup in the
+component naming context or by using injection, as shown here:
+
+[source,java]
+----
+(UserTransaction)(new InitialContext().lookup("java:comp/UserTransaction"));
+----
+
+or
+
+[source,java]
+----
+@Resource UserTransaction utx;
+----
+
+When certain code (such as an OSGi Bundle Activator), which does not
+have a Jakarta EE component context, wants to get hold of
+`UserTransaction`, or any of the other JTA artifacts, then they can look
+it up in the service registry. Here is an example of such code:
+
+[source,java]
+----
+
+BundleContext context;
+ServiceReference txRef =
+    context.getServiceReference(UserTransaction.class.getName());
+UserTransaction utx = (UserTransaction);
+context.getService(txRef);
+----
+
+[[gkuof]][[GSDVG00321]][[jdbc-data-source-service]]
+
+===== JDBC Data Source Service
+
+Any JDBC data source created in {productName} is automatically made
+available as an OSGi Service; therefore, OSGi bundles can track
+availability of JDBC data sources using the `ServiceTracking` facility
+of the OSGi platform. The life of the OSGi service matches that of the
+underlying data source created in {productName}. For instructions on
+administering JDBC resources in {productName}, see the
+link:administration-guide.html#GSADG[{productName} Administration Guide].
+
+{productName} registers each JDBC data source as an OSGi service with
+`objectClass = "javax.sql.DataSource"` and a service property called
+`jndi-name`, which is set to the JNDI name of the data source. Here is a
+code sample that looks up a data source service:
+
+[source,java]
+----
+  @Inject
+  @OSGiService(true, "(jndi-name=jdbc/MyDS)")
+  private DataSource ds;
+----
+
+[[gkuoq]][[GSDVG00322]][[jms-resource-service]]
+
+===== JMS Resource Service
+
+Like JDBC data sources, JMS administered objects, such as destinations
+and connection factories, are also automatically made available as OSGi
+services. Their service mappings are as follows.
+
+[width="100%",cols="12%,39%,12%,37%",options="header",]
+|===
+|JMS Object |Service Interface |Service Properties |Comments
+|JMS Queue destination
+|`jakarta.jms.Queue`
+|`jndi-name`
+|`jndi-name` is set to the JNDI name of the queue
+
+|JMS Topic destination
+|`jakarta.jms.Topic`
+|`jndi-name`
+|`jndi-name` is set to the JNDI name of the topic
+
+|JMS connection factory
+|`jakarta.jms.QueueConnectionFactory` +
+or +
+`jakarta.jms.TopicConnectionFactory` +
+or +
+`jakarta.jms.ConnectionFactory`
+|`jndi-name`
+|`jndi-name` is set to the JNDI name of the topic. +
+The actual service interface depends on which type of connection factory
+was created.
+|===
+
+
+[[gkunr]][[GSDVG00490]][[developing-web-application-bundles]]
+
+==== Developing Web Application Bundles
+
+When a web application is packaged and deployed as an OSGi bundle, it is
+called a Web Application Bundle (WAB). WAB support is based on the OSGi
+Web Application specification , which is part of the OSGi Service
+Platform, Enterprise Specification, Release 4, Version 4.3. A WAB is
+packaged as an OSGi bundle, so all the OSGi packaging rules apply to WAB
+packaging. When a WAB is not packaged like a WAR, the OSGi Web Container
+of {productName} maps the WAB to the hierarchical structure of web
+application using the following rules:
+
+* The root of the WAB corresponds to the `docroot` of the web
+application.
+* Every JAR in the Bundle-ClassPath of the WAB is treated like a JAR in
+`WEB-INF/lib/.`
+* Every directory except "." in Bundle-ClassPath of the WAB is treated
+like `WEB-INF/classes/.`
+* Bundle-ClassPath entry of type "." is treated as if the entire WAB is
+a JAR in `WEB-INF/lib/.`
+* Bundle-ClassPath includes the Bundle-ClassPath entries of any attached
+fragment bundles.
+
+The simplest way to avoid knowing these mapping rules is to avoid the
+problem in the first place. Moreover, there are many packaging tools and
+development time tools that understand WAR structure. Therefore, we
+strongly recommend that you package the WAB exactly like a WAR, with
+only additional OSGi metadata.
+
+[[gkvau]][[GSDVG00323]][[required-wab-metadata]]
+
+===== Required WAB Metadata
+
+In addition to the standard OSGi metadata, the main attributes of
+`META-INF/MANIFEST.MF` of the WAB must have an additional attribute
+called `Web-ContextPath`. The `Web-ContextPath` attribute specifies the
+value of the context path of the web application. Since the root of a
+WAB is mapped to the `docroot` of the web application, it should not be
+used in the `Bundle-ClassPath`. Moreover, `WEB-INF/classes/` should be
+specified ahead of `WEB-INF/lib/` in the `Bundle-ClassPath` in order to
+be compliant with the search order used for traditional WAR files.
+
+Assuming the WAB is structured as follows:
+
+[source]
+----
+
+  foo.war/
+       index.html
+       foo.jsp
+       WEB-INF/classes/
+                      foo/BarServlet.class
+       WEB-INF/lib/lib1.jar
+       WEB-INF/lib/lib2.jar
+----
+
+Then the OSGi metadata for the WAB as specified in
+`META-INF/MANIFEST.MF` of the WAB would appear as follows:
+
+[source]
+----
+
+  MANIFEST.MF:Manifest-Version: 1.0
+  Bundle-ManifestVersion: 2
+  Bundle-SymbolicName: com.acme.foo
+  Bundle-Version: 1.0
+  Bundle-Name: Foo Web Application Bundle Version 1.0
+  Import-Package: javax.servlet; javax.servlet.http, version=[3.0, 4.0, 5.0)
+  Bundle-ClassPath: WEB-INF/classes, WEB-INF/lib/lib1.jar, WEB-INF/lib/lib2.jar
+  Web-ContextPath: /foo
+----
+
+[[gkvat]][[GSDVG00324]][[how-wabs-consume-osgi-services]]
+
+===== How WABs Consume OSGi Services
+
+Since a WAB has a valid `Bundle-Context`, it can consume OSGi services.
+Although you are free to use any OSGi API to locate OSGi services,
+{productName} makes it easy for WAB users to use OSGi services by
+virtue of extending the Context and Dependency Injection (CDI)
+framework. Here's an example of the injection of an OSGi Service into a
+Servlet:
+
+[source,java]
+----
+
+  @WebServlet
+  public class MyServlet extends HttpServlet {
+    @Inject @OSGiService(dynamic=true)
+    FooService fooService;
+  }
+----
+
+To learn more about this feature, refer to link:#gkvbi[OSGi CDI
+Extension for WABs].
+
+[[gkvbi]][[GSDVG00325]][[osgi-cdi-extension-for-wabs]]
+
+===== OSGi CDI Extension for WABs
+
+{productName} includes a CDI extension that enables web applications,
+such as servlets, that are part of WABs to express a type-safe
+dependency on an OSGi service using CDI APIs. An OSGi service can be
+provided by any OSGi bundle without any knowledge of Jakarta EE/CDI, and
+they are allowed to be injected transparently in a type-safe manner into
+a web application.
+
+A custom CDI Qualifier, `@org.glassfish.osgicdi.OSGiService`, is used by
+the component to represent dependency on an OSGi service. The qualifier
+has additional metadata to customize the service discovery and injection
+behavior. The following `@OsgiService` attributes are currently
+available:
+
+* `serviceCriteria` — An LDAP filter query used for service selection in
+the OSGi service registry.
+* `waitTimeout` — Waits the specified duration for a service that
+matches the criteria specified to appear in the OSGi service registry.
+* `dynamic` — Dynamically obtain a service reference (true/false).
++
+Since OSGi services are dynamic, they may not match the life cycle of
+the application component that has injected a reference to the service.
+Through this attribute, you could indicate that a service reference can
+be obtained dynamically or not. For stateless or idempotent services, a
+dynamic reference to a service implementation would be useful. The
+container then injects a proxy to the service and dynamically switches
+to an available implementation when the current service reference is
+invalid.
+
+[[GSDVG00044]][[gkvbk]]
+Example 13-1 Example of a WAB Using CDI
+
+In this example, Bundle B0 defines a service contract called
+`com.acme.Foo` and exports the `com.acme` package for use by other
+bundles. Bundle B1 in turn provides a service implementation, FooImpl,
+of the `com.acme.Foo` interface. It then registers the service FooImpl
+service with the OSGi service registry with `com.acme.Foo` as the
+service interface.
+
+Bundle B2 is a hybrid application bundle that imports the `com.acme`
+package. It has a component called BarServlet that expresses a
+dependency to `com.acme.Foo` by adding a field/setter method and
+qualifies that injection point with `@OsgiService`. For instance,
+BarServlet could look like:
+
+[source,java]
+----
+
+  @Servlet
+  public void BarServlet extends HttpServlet{
+      @Inject @OSGiService(dynamic=true)
+      private com.acme.Foo f;
+  }
+----
+
+[[gkunh]][[GSDVG00491]][[developing-ejb-application-bundles]]
+
+==== Developing EJB Application Bundles
+
+Another type of hybrid application bundle is the EJB Application Bundle.
+When an EJB Jar is packaged with additional OSGi metadata and deployed
+as an OSGi bundle it is called an EJB Application Bundle. {productName}supports only packaging the OSGi bundle as a simple JAR file with
+required OSGi metadata, just as you would package an `ejb-jar` file.
+
+[[gkvck]][[GSDVG00326]][[required-ejb-metadata]]
+
+===== Required EJB Metadata
+
+An EJB Application Bundle must have a manifest metadata called
+Export-EJB in order to be considered as an EJB Bundle. For syntax of
+Export-EJB header, please refer to the Publishing EJB as OSGi Service
+section. Here's an example of an EJB Application Bundle with its
+metadata:
+
+[source]
+----
+  myEjb.jar/
+           com/acme/Foo
+           com/acme/impl/FooEJB
+           META-INF/MANIFEST.MF
+----
+MANIFEST.MF:
+[source]
+----
+  Manifest-Version: 1.0
+  Bundle-ManifestVersion: 2
+  Bundle-SymbolicName: com.acme.foo EJB bundle
+  Bundle-Version: 1.0.0.BETA
+  Bundle-Name: com.acme.foo EJB bundle version 1.0.0.BETA
+  Export-EJB: ALL
+  Export-Package: com.acme; version=1.0
+  Import-Package: javax.ejb; version=[3.0, 4.0), com.acme; version=[1.0, 1.1)
+----
+
+[[gkvcj]][[GSDVG00327]][[how-ejb-bundles-consume-osgi-services]]
+
+===== How EJB Bundles Consume OSGi Services
+
+Since an EJB has a valid Bundle-Context, it can consume OSGi services.
+Although you are free to use any OSGi API to locate OSGi services,
+{productName} makes it easy to use OSGi services by virtue of
+extending the Context and Dependency Injection (CDI) framework. Here's
+an example of injection of an OSGi Service into a servlet:
+
+[source,java]
+----
+
+  @Stateless
+  public class MyEJB {
+    @Inject @OSGiService(dynamic=true)
+    Foo foo;
+    ...
+  }
+----
+
+To learn more about this feature, refer to link:#gkvbj[Using the OSGi
+CDI Extension With EJB Bundles].
+
+[[gkvbj]][[GSDVG00328]][[using-the-osgi-cdi-extension-with-ejb-bundles]]
+
+===== Using the OSGi CDI Extension With EJB Bundles
+
+{productName} includes a CDI extension that enables EJB application
+bundles to express a type-safe dependency on an OSGi Service using CDI
+APIs. An OSGi service can be provided by any OSGi bundle without any
+knowledge of Jakarta EE/CDI, and they are allowed to be injected
+transparently in a type-safe manner into an EJB bundle.
+
+A custom CDI Qualifier, `@org.glassfish.osgicdi.OSGiService`, is used by
+the component to represent dependency on an OSGi service. The qualifier
+has additional metadata to customize the service discovery and injection
+behavior. The following `@OsgiService` attributes are currently
+available:
+
+* `dynamic` — Dynamically obtain a service reference (true/false).
+* `waitTimeout` — Waits for specified duration for a service to appear
+in the OSGi service registry.
+* `serviceCriteria` — An LDAP filter query used for service selection.
+
+[[gkveh]][[GSDVG00175]][[deploying-osgi-bundles-in-glassfish-server]]
+
+=== Deploying OSGi Bundles in {productName}
+
+For instruction on deploying OSGi bundle, see
+"link:application-deployment-guide/deploying-applications.html#GSDPG00073[
+OSGi Bundle Deployment Guidelines]"
+in {productName} Application Deployment Guide.
+
+
diff --git a/docs/application-development-guide/src/main/asciidoc/part-apps-and-app-comps.adoc b/docs/application-development-guide/src/main/asciidoc/part-apps-and-app-comps.adoc
new file mode 100644
index 0000000..966e5d5
--- /dev/null
+++ b/docs/application-development-guide/src/main/asciidoc/part-apps-and-app-comps.adoc
@@ -0,0 +1,17 @@
+type=page
+status=published
+title=Developing Applications and Application Components
+next=securing-apps.html
+prev=debugging-apps.html
+~~~~~~
+
+= Developing Applications and Application Components
+
+[[fvyme]][[GSDVG00046]][[part-ii]]
+
+== Part II
+
+[[developing-applications-and-application-components]]
+== Developing Applications and Application Components
+
+
diff --git a/docs/application-development-guide/src/main/asciidoc/part-services-and-apis.adoc b/docs/application-development-guide/src/main/asciidoc/part-services-and-apis.adoc
new file mode 100644
index 0000000..372c437
--- /dev/null
+++ b/docs/application-development-guide/src/main/asciidoc/part-services-and-apis.adoc
@@ -0,0 +1,16 @@
+type=page
+status=published
+title=Using Services and APIs
+next=jdbc.html
+prev=osgi.html
+~~~~~~
+
+= Using Services and APIs
+
+[[fvyam]][[GSDVG00047]][[part-iii]]
+
+== Part III
+
+[[using-services-and-apis]]
+== Using Services and APIs
+
diff --git a/docs/application-development-guide/src/main/asciidoc/part-tasks-and-tools.adoc b/docs/application-development-guide/src/main/asciidoc/part-tasks-and-tools.adoc
new file mode 100644
index 0000000..97cfe03
--- /dev/null
+++ b/docs/application-development-guide/src/main/asciidoc/part-tasks-and-tools.adoc
@@ -0,0 +1,16 @@
+type=page
+status=published
+title=Development Tasks and Tools
+next=setting-up-dev-env.html
+prev=preface.html
+~~~~~~
+
+= Development Tasks and Tools
+
+[[fvxzc]][[GSDVG00045]][[part-i]]
+
+== Part I
+
+[[development-tasks-and-tools]]
+== Development Tasks and Tools
+
diff --git a/docs/application-development-guide/src/main/asciidoc/preface.adoc b/docs/application-development-guide/src/main/asciidoc/preface.adoc
new file mode 100644
index 0000000..d293ebb
--- /dev/null
+++ b/docs/application-development-guide/src/main/asciidoc/preface.adoc
@@ -0,0 +1,339 @@
+type=page
+status=published
+title=Preface
+next=part-tasks-and-tools.html
+prev=title.html
+~~~~~~
+
+= Preface
+
+[[GSDVG528]][[sthref2]]
+
+
+[[preface]]
+== Preface
+
+[NOTE]
+====
+This documentation is part of the Java Enterprise Edition contribution
+to the Eclipse Foundation and is not intended for use in relation to
+Java Enterprise Edition or Orace GlassFish. The documentation is in the
+process of being revised to reflect the new Jakarta EE branding.
+Additional changes will be made as requirements and procedures evolve
+for Jakarta EE. Where applicable, references to Jakarta EE or Java
+Enterprise Edition should be considered references to Jakarta EE.
+
+Please see the Title page for additional license information.
+====
+
+This Application Development Guide describes how to create and run Java
+Platform, Enterprise Edition (Jakarta EE platform) applications that follow
+the open Java standards model for Jakarta EE components and APIs in the
+{productName} environment.
+Topics include developer tools, security, and debugging.
+This book is intended for use by software developers who create, assemble,
+and deploy Jakarta EE applications using {productName}s.
+
+This preface contains information about and conventions for the entire
+{productName} ({productName}) documentation set.
+
+{productName} 7 is developed through the GlassFish project
+open-source community at https://github.com/eclipse-ee4j/glassfish.
+The GlassFish project provides a structured process for developing the
+{productName} platform that makes the new features of the Jakarta EE
+platform available faster, while maintaining the most important feature
+of Jakarta EE: compatibility. It enables Java developers to access the
+{productName} source code and to contribute to the development of the
+{productName}.
+
+The following topics are addressed here:
+
+* link:#ghpbz[{productName} Documentation Set]
+* link:#giprl[Related Documentation]
+* link:#fwbkx[Typographic Conventions]
+* link:#fquvc[Symbol Conventions]
+* link:#ghpfg[Default Paths and File Names]
+
+[[GSDVG00082]][[ghpbz]]
+
+[[glassfish-server-documentation-set]]
+=== {productName} Documentation Set
+
+The {productName} documentation set describes deployment planning and
+system installation. For an introduction to {productName}, refer to
+the books in the order in which they are listed in the following table.
+
+[width="100%",cols="<30%,<70%",options="header",]
+|===
+|Book Title |Description
+|link:release-notes.html#GSRLN[Release Notes] |Provides late-breaking information about
+the software and the documentation and includes a comprehensive,
+table-based summary of the supported hardware, operating system, Java
+Development Kit (JDK), and database drivers.
+
+|link:quick-start-guide.html#GSQSG[Quick Start Guide]
+|Explains how to get started with the {productName} product.
+
+|link:installation-guide.html#GSING[Installation Guide]
+|Explains how to install the software and its components.
+
+|link:upgrade-guide.html#GSUPG[Upgrade Guide]
+|Explains how to upgrade to the latest version of {productName}.
+This guide also describes differences between adjacent product releases and configuration
+options that can result in incompatibility with the product specifications.
+
+|link:deployment-planning-guide.html#GSPLG[Deployment Planning Guide]
+|Explains how to build a production deployment of {productName} that meets the requirements of
+your system and enterprise.
+
+|link:administration-guide.html#GSADG[Administration Guide]
+|Explains how to configure, monitor, and manage {productName} subsystems and components
+from the command line by using the link:reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] utility.
+Instructions for performing these tasks from the Administration Console are provided
+in the Administration Console online help.
+
+|link:security-guide.html#GSSCG[Security Guide]
+|Provides instructions for configuring and administering {productName} security.
+
+|link:application-deployment-guide.html#GSDPG[Application Deployment Guide]
+|Explains how to assemble and deploy applications to the {productName} and provides information
+about deployment descriptors.
+
+|link:application-development-guide.html#GSDVG[Application Development Guide]
+|Explains how to create and implement Java Platform, Enterprise Edition (Jakarta EE platform)
+applications that are intended to run on the {productName}.
+These applications follow the open Java standards model for Jakarta EE components
+and application programmer interfaces (APIs).
+This guide provides information about developer tools, security, and debugging.
+
+|link:add-on-component-development-guide.html#GSACG[Add-On Component Development Guide]
+|Explains how to use published interfaces of {productName} to develop add-on components
+for {productName}.
+This document explains how to perform only those tasks that ensure that the add-on component
+is suitable for {productName}.
+
+|link:embedded-server-guide.html#GSESG[Embedded Server Guide]
+|Explains how to run applications in embedded {productName} and to develop applications
+in which {productName} is embedded.
+
+|link:ha-administration-guide.html#GSHAG[High Availability Administration Guide]
+|Explains how to configure {productName} to provide higher availability and
+scalability through failover and load balancing.
+
+|link:performance-tuning-guide.html#GSPTG[Performance Tuning Guide]
+|Explains how to optimize the performance of {productName}.
+
+|link:troubleshooting-guide.html#GSTSG[Troubleshooting Guide]
+|Describes common problems that you might encounter when using {productName} and explains how to solve them.
+
+|link:error-messages-reference.html#GSEMR[Error Message Reference]
+|Describes error messages that you might encounter when using {productName}.
+
+|link:reference-manual.html#GSRFM[Reference Manual]
+|Provides reference information in man page format for {productName} administration commands, utility
+commands, and related concepts.
+
+|link:../openmq/mq-release-notes.html#GMRLN[Message Queue Release Notes]
+|Describes new features, compatibility issues, and existing bugs for Open Message Queue.
+
+|link:../openmq/mq-tech-over.html#GMTOV[Message Queue Technical Overview]
+|Provides an introduction to the technology, concepts, architecture, capabilities, and features of
+the Message Queue messaging service.
+
+|link:../openmq/mq-admin-guide.html#GMADG[Message Queue Administration Guide]
+|Explains how to set up and manage a Message Queue messaging system.
+
+|link:../openmq/mq-dev-guide-jmx.html#GMJMG[Message Queue Developer's Guide for JMX Clients]
+|Describes the application programming interface in Message Queue for
+programmatically configuring and monitoring Message Queue resources in
+conformance with the Java Management Extensions (JMX).
+
+|link:../openmq/mq-dev-guide-java.html#GMJVG[Message Queue Developer's Guide for Java Clients]
+|Provides information about concepts and procedures for developing Java messaging
+applications (Java clients) that work with {productName}.
+
+|link:../openmq/mq-dev-guide-c.html#GMCCG[Message Queue Developer's Guide for C Clients]
+|Provides programming and reference information for developers working with
+Message Queue who want to use the C language binding to the Message
+Queue messaging service to send, receive, and process Message Queue messages.
+|===
+
+
+[[GSDVG00083]][[giprl]]
+
+[[related-documentation]]
+=== Related Documentation
+
+The following tutorials explain how to develop Jakarta EE applications:
+
+* https://github.com/eclipse-ee4j/jakartaee-firstcup-examples[
+Your First Cup: An Introduction to the Jakarta EE Platform].
+For beginning Jakarta EE programmers, this short tutorial explains the entire
+process for developing a simple enterprise application.
+The sample application is a web application that consists of a component that is
+based on the Enterprise JavaBeans specification, a JAX-RS web service,
+and a JavaServer Faces component for the web front end.
+
+* https://eclipse-ee4j.github.io/jakartaee-tutorial[The Jakarta EE Tutorial].
+This comprehensive tutorial explains how to use Jakarta EE platform technologies
+and APIs to develop Jakarta EE applications.
+
+Javadoc tool reference documentation for packages that are provided with
+{productName} is available as follows.
+
+* The Jakarta EE specifications and API specification is
+located at https://jakarta.ee/specifications/.
+
+* The API specification for {productName} 7, including Jakarta EE
+platform packages and nonplatform packages that are specific to the
+{productName} product, is located at
+https://glassfish.org/docs/.
+
+For information about creating enterprise applications in the NetBeans
+Integrated Development Environment (IDE), see the
+https://netbeans.apache.org/kb/docs/java-ee.html[
+NetBeans Documentation, Training & Support page].
+
+For information about the Derby database for use with
+the {productName}, see the https://db.apache.org/derby/index.html[Derby page].
+
+The Jakarta EE Samples project is a collection of sample applications that
+demonstrate a broad range of Jakarta EE technologies. The Jakarta EE Samples
+are bundled with the Jakarta EE Software Development Kit (SDK) and are also
+available from the repository
+(`https://github.com/eclipse-ee4j/glassfish-samples`).
+
+[[GSDVG00084]][[fwbkx]]
+
+[[typographic-conventions]]
+=== Typographic Conventions
+
+The following table describes the typographic changes that are used in
+this book.
+
+[width="100%",cols="<14%,<37%,<49%",options="header",]
+|===
+|Typeface |Meaning |Example
+
+|`AaBbCc123`
+|The names of commands, files, and directories, and onscreen computer output
+|Edit your `.login` file.
+
+Use `ls` `a` to list all files.
+
+`machine_name% you have mail.`
+
+|`AaBbCc123`
+|What you type, contrasted with onscreen computer output
+|`machine_name%` `su`
+
+`Password:`
+
+|AaBbCc123
+|A placeholder to be replaced with a real name or value
+|The command to remove a file is `rm` filename.
+
+|AaBbCc123
+|Book titles, new terms, and terms to be emphasized (note that some emphasized items appear bold online)
+|Read Chapter 6 in the User's Guide.
+
+A cache is a copy that is stored locally.
+
+Do not save the file.
+|===
+
+
+[[GSDVG00085]][[fquvc]]
+
+[[symbol-conventions]]
+=== Symbol Conventions
+
+The following table explains symbols that might be used in this book.
+
+[width="100%",cols="<10%,<26%,<28%,<36%",options="header",]
+|===
+|Symbol |Description |Example |Meaning
+
+|`[ ]`
+|Contains optional arguments and command options.
+|`ls [-l]`
+|The `-l` option is not required.
+
+|`{ \| }`
+|Contains a set of choices for a required command option.
+|`-d {y\|n}`
+|The `-d` option requires that you use either the `y` argument or the `n` argument.
+
+|`${ }`
+|Indicates a variable reference.
+|`${com.sun.javaRoot}`
+|References the value of the `com.sun.javaRoot` variable.
+
+|`-`
+|Joins simultaneous multiple keystrokes.
+|Control-A
+|Press the Control key while you press the A key.
+
+|`+`
+|Joins consecutive multiple keystrokes.
+|Ctrl+A+N
+|Press the Control key, release it, and then press the subsequent keys.
+
+|`>`
+|Indicates menu item selection in a graphical user interface.
+|File > New > Templates
+|From the File menu, choose New. From the New submenu, choose Templates.
+|===
+
+
+[[GSDVG00086]][[ghpfg]]
+
+[[default-paths-and-file-names]]
+=== Default Paths and File Names
+
+The following table describes the default paths and file names that are
+used in this book.
+
+[%autowidth.stretch,options="header",]
+|===
+|Placeholder |Description |Default Value
+
+|as-install
+a|Represents the base installation directory for {productName}.
+In configuration files, as-install is represented as follows:
+`${com.sun.aas.installRoot}`
+a|* Installations on the Oracle Solaris operating system, Linux operating
+system, and Mac OS operating system:
++
+user's-home-directory``/glassfish7/glassfish``
++
+* Installations on the Windows operating system:
++
+SystemDrive``:\glassfish7\glassfish``
+
+|as-install-parent
+|Represents the parent of the base installation directory for {productName}.
+a|* Installations on the Oracle Solaris operating system, Linux operating
+system, and Mac operating system:
++
+user's-home-directory``/glassfish7``
++
+* Installations on the Windows operating system:
++
+SystemDrive``:\glassfish7``
+
+|domain-root-dir
+|Represents the directory in which a domain is created by default.
+|as-install``/domains/``
+
+|domain-dir
+|Represents the directory in which a domain's configuration is stored.
+In configuration files, domain-dir is represented as follows:
+`${com.sun.aas.instanceRoot}`
+|domain-root-dir/domain-name
+
+|instance-dir
+|Represents the directory for a server instance.
+|domain-dir/instance-name
+|===
+
diff --git a/docs/application-development-guide/src/main/asciidoc/securing-apps.adoc b/docs/application-development-guide/src/main/asciidoc/securing-apps.adoc
new file mode 100644
index 0000000..5608cfd
--- /dev/null
+++ b/docs/application-development-guide/src/main/asciidoc/securing-apps.adoc
@@ -0,0 +1,2530 @@
+type=page
+status=published
+title=Securing Applications
+next=webservices.html
+prev=part-apps-and-app-comps.html
+~~~~~~
+
+= Securing Applications
+
+[[GSDVG00006]][[beabg]]
+
+
+[[securing-applications]]
+== 4 Securing Applications
+
+This chapter describes how to write secure Jakarta EE applications, which
+contain components that perform user authentication and access
+authorization for the business logic of Jakarta EE components.
+
+For information about administrative security for the {productName}, see the link:security-guide.html#GSSCG[{productName}
+Security Guide].
+
+For general information about Jakarta EE security, see
+https://eclipse-ee4j.github.io/jakartaee-tutorial/#security-2[Security]
+in The Jakarta EE Tutorial.
+
+The following topics are addressed here:
+
+* link:#beabh[Security Goals]
+* link:#beabi[{productName} Specific Security Features]
+* link:#beabj[Container Security]
+* link:#beacr[Roles, Principals, and Principal to Role Mapping]
+* link:#beabo[Realm Configuration]
+* link:#BACDEIHB[Jakarta EE Security API Support]
+* link:#beabt[JACC Support]
+* link:#beabu[Pluggable Audit Module Support]
+* link:#beabx[The `server.policy` File]
+* link:#beaca[Configuring Message Security for Web Services]
+* link:#beacm[Programmatic Login Using the ProgrammaticLogin Class]
+* link:#beacq[User Authentication for Single Sign-on]
+* link:#gizel[Adding Authentication Mechanisms to the Servlet Container]
+
+
+[NOTE]
+====
+The Web Profile of the {productName} supports the EJB 3.1 Lite
+specification, which allows enterprise beans within web applications,
+among other features. The full {productName} supports the entire EJB
+3.1 specification. For details, see
+http://jcp.org/en/jsr/detail?id=318[JSR 318]
+(`http://jcp.org/en/jsr/detail?id=318`).
+====
+
+
+[[beabh]][[GSDVG00114]][[security-goals]]
+
+=== Security Goals
+
+In an enterprise computing environment, there are many security risks.
+The goal of the {productName} is to provide highly secure,
+interoperable, and distributed component computing based on the Jakarta EE
+security model. Security goals include:
+
+* Full compliance with the Jakarta EE security model. This includes EJB and
+servlet role-based authorization.
+* Support for single sign-on across all {productName} applications
+within a single security domain.
+* Support for web services message security.
+* Security support for application clients.
+* Support for several underlying authentication realms, such as simple
+file and Lightweight Directory Access Protocol (LDAP). Certificate
+authentication is also supported for Secure Socket Layer (SSL) client
+authentication. For Solaris, OS platform authentication is supported in
+addition to these.
+* Support for declarative security through {productName} specific
+XML-based role mapping.
+* Support for Java Authorization Contract for Containers (JACC)
+pluggable authorization as included in the Jakarta EE specification and
+defined by http://www.jcp.org/en/jsr/detail?id=115[Java Specification
+Request (JSR) 115] (`http://www.jcp.org/en/jsr/detail?id=115`).
+* Support for Java Authentication Service Provider Interface for
+Containers as included in the Jakarta EE specification and defined by
+http://www.jcp.org/en/jsr/detail?id=196[JSR 196]
+(`http://www.jcp.org/en/jsr/detail?id=196`).
+* Support for Web Services Interoperability Technologies (WSIT) as described in
+https://eclipse-ee4j.github.io/jakartaee-tutorial/#web-services-interoperability-and-jakarta-xml-web-services[
+Jakarta EE Tutorial].
+* Support for the Jakarta EE Security API as included in the Jakarta EE
+specification and defined by https://jcp.org/en/jsr/detail?id=375[JSR
+375] (`https://jcp.org/en/jsr/detail?id=375`)
+
+[[beabi]][[GSDVG00115]][[glassfish-server-specific-security-features]]
+
+=== {productName} Specific Security Features
+
+The {productName} supports the Jakarta EE security model, as well as the
+following features which are specific to the {productName}:
+
+* Message security; see link:#beaca[Configuring Message Security for Web
+Services]
+* Single sign-on across all {productName} applications within a
+single security domain; see link:#beacq[User Authentication for Single
+Sign-on]
+* Programmatic login; see link:#beacm[Programmatic Login Using the
+ProgrammaticLogin Class]
+
+[[beabj]][[GSDVG00116]][[container-security]]
+
+=== Container Security
+
+The component containers are responsible for providing Jakarta EE
+application security. The container provides two security forms:
+
+* link:#beabl[Declarative Security]
+* link:#beabk[Programmatic Security]
+
+Annotations (also called metadata) enable a declarative style of
+programming, and so encompass both the declarative and programmatic
+security concepts. Users can specify information about security within a
+class file using annotations. When the application is deployed, this
+information can either be used by or overridden by the application or
+module deployment descriptor.
+
+[[beabl]][[GSDVG00362]][[declarative-security]]
+
+==== Declarative Security
+
+Declarative security means that the security mechanism for an
+application is declared and handled externally to the application.
+Deployment descriptors describe the Jakarta EE application's security
+structure, including security roles, access control, and authentication
+requirements.
+
+The {productName} supports the deployment descriptors specified by
+Jakarta EE and has additional security elements included in its own
+deployment descriptors. Declarative security is the application
+deployer's responsibility. For more information about {productName}
+deployment descriptors, see the link:application-deployment-guide.html#GSDPG[{productName} Application Deployment Guide].
+
+There are two levels of declarative security, as follows:
+
+* link:#beabm[Application Level Security]
+* link:#beabn[Component Level Security]
+
+[[beabm]][[GSDVG00239]][[application-level-security]]
+
+===== Application Level Security
+
+For an application, roles used by any application must be defined in
+`@DeclareRoles` annotations in the code or `role-name` elements in the
+application deployment descriptor (`application.xml`). Those role names
+are scoped to the EJB XML deployment descriptors (`ejb-jar.xml` and
+`glassfish-ejb-jar.xml` files) and to the servlet XML deployment
+descriptors (`web.xml` and `glassfish-web.xml` files). For an
+individually deployed web or EJB module, you define roles using
+`@DeclareRoles` annotations or `role-name` elements in the Jakarta EE
+deployment descriptor files `web.xml` or `ejb-jar.xml`.
+
+To map roles to principals and groups, define matching
+`security-role-mapping` elements in the `glassfish-application.xml`,
+`glassfish-ejb-jar.xml`, or `glassfish-web.xml` file for each
+`role-name` used by the application. By default, group principal names
+are mapped to roles of the same name. Accordingly, the Default Principal
+To Role Mapping setting is enabled by default on the Security page of
+the {productName} Administration Console. This default role mapping
+definition is in effect if you do not define your own mapping in the
+deployment descriptor for your application as described in this section.
+For more information, see link:#beacr[Roles, Principals, and Principal
+to Role Mapping].
+
+[[beabn]][[GSDVG00240]][[component-level-security]]
+
+===== Component Level Security
+
+Component level security encompasses web components and EJB components.
+
+A secure web container authenticates users and authorizes access to a
+servlet or JSP by using the security policy laid out in the servlet XML
+deployment descriptors (`web.xml` and `glassfish-web.xml` files).
+
+The EJB container is responsible for authorizing access to a bean method
+by using the security policy laid out in the EJB XML deployment
+descriptors (`ejb-jar.xml` and `glassfish-ejb-jar.xml` files).
+
+[[beabk]][[GSDVG00363]][[programmatic-security]]
+
+==== Programmatic Security
+
+Programmatic security involves an EJB component or servlet using method
+calls to the security API, as specified by the Jakarta EE security model,
+to make business logic decisions based on the caller or remote user's
+security role. Programmatic security should only be used when
+declarative security alone is insufficient to meet the application's
+security model.
+
+The API for programmatic security consists of methods of the Jakarta EE
+Security API `SecurityContext` interface, and methods of the EJB
+`EJBContext` interface and the servlet `HttpServletRequest` interface.
+The {productName} supports these interfaces as specified in the Java
+EE specification.
+
+There is also a proprietary Glassfish API for programmatic login. See
+link:#beacm[Programmatic Login Using the ProgrammaticLogin Class].
+
+For more information about programmatic security, see
+https://eclipse-ee4j.github.io/jakartaee-tutorial/#using-programmatic-security-with-web-applications[
+Using Programmatic Security] in the The Jakarta EE Tutorial.
+
+[[beacr]][[GSDVG00117]][[roles-principals-and-principal-to-role-mapping]]
+
+=== Roles, Principals, and Principal to Role Mapping
+
+By default, any groups that an authenticated user belongs to will be
+mapped to roles with the same names. Therefore, the Default Principal To
+Role Mapping setting is enabled by default on the Security page of the
+GlassFish Administration Console. To change the default mapping you can
+clear this setting. For applications, you define roles in
+`@DeclareRoles` annotations or the Jakarta EE deployment descriptor file
+`application.xml`. You define the corresponding role mappings in the
+{productName} deployment descriptor file `glassfish-application.xml`.
+For individually deployed web or EJB modules, you define roles in
+`@DeclareRoles` annotations or the Jakarta EE deployment descriptor files
+`web.xml` or `ejb-jar.xml`. You define the corresponding role mappings
+in the {productName} deployment descriptor files `glassfish-web.xml`
+or `glassfish-ejb-jar.xml`.
+
+For more information regarding Jakarta EE deployment descriptors, see the
+Jakarta EE Specification. For more information regarding {productName}
+deployment descriptors, see "link:application-deployment-guide/dd-elements.html#GSDPG00007[Elements of the {productName} Deployment Descriptors]" in {productName}
+Application Deployment Guide.
+
+Each `security-role-mapping` element in the `glassfish-application.xml`,
+`glassfish-web.xml`, or `glassfish-ejb-jar.xml` file maps a role name
+permitted by the application or module to principals and groups. For
+example, a `glassfish-web.xml` file for an individually deployed web
+module might contain the following:
+
+[source,xml]
+----
+<glassfish-web-app>
+    <security-role-mapping>
+        <role-name>manager</role-name>
+        <principal-name>jgarcia</principal-name>
+        <principal-name>mwebster</principal-name>
+        <group-name>team-leads</group-name>
+    </security-role-mapping>
+    <security-role-mapping>
+        <role-name>administrator</role-name>
+        <principal-name>dsmith</principal-name>
+    </security-role-mapping>
+</glassfish-web-app>
+----
+
+A role can be mapped to either specific principals or to groups (or
+both). The principal or group names used must be valid principals or
+groups in the realm for the application or module. Note that the
+`role-name` in this example must match the `@DeclareRoles` annotations
+or the `role-name` in the `security-role` element of the corresponding
+`web.xml` file.
+
+You can also specify a custom principal implementation class. This
+provides more flexibility in how principals can be assigned to roles. A
+user's JAAS login module now can authenticate its custom principal, and
+the authenticated custom principal can further participate in the
+{productName} authorization process. For example:
+
+[source,xml]
+----
+<security-role-mapping>
+    <role-name>administrator</role-name>
+    <principal-name class-name="CustomPrincipalImplClass">
+        dsmith
+    </principal-name>
+</security-role-mapping>
+----
+
+You can specify a default principal and a default principal to role
+mapping, each of which applies to the entire {productName} instance.
+The default principal to role mapping maps group principals to the same
+named roles. Web modules that omit the `run-as` element in `web.xml` use
+the default principal. Applications and modules that omit the
+`security-role-mapping` element use the default principal to role
+mapping. These defaults are part of the Security Service, which you can
+access in the following ways:
+
+* In the Administration Console, select the Security component under the
+relevant configuration. For details, click the Help button in the
+Administration Console.
+* Use the `asadmin set` command. For details, see the
+link:reference-manual.html#GSRFM[{productName} Reference Manual]. For
+example, you can set the default principal as follows.
++
+[source]
+----
+asadmin set server-config.security-service.default-principal=dsmith
+asadmin set server-config.security-service.default-principal-password=secret
+----
+You can set the default principal to role mapping as follows.
++
+[source]
+----
+asadmin set server-config.security-service.activate-default-principal-to-role-mapping=true
+asadmin set server-config.security-service.mapped-principal-class=CustomPrincipalImplClass
+----
+Default principal to role mapping is enabled by default. To disable it,
+set the default principal to role mapping property to false.
+
+[[beabo]][[GSDVG00118]][[realm-configuration]]
+
+=== Realm Configuration
+
+The following topics are addressed here:
+
+* link:#beabp[Supported Realms]
+* link:#beabq[How to Configure a Realm]
+* link:#beabr[How to Set a Realm for an Application or Module]
+* link:#beabs[Creating a Custom Realm]
+
+[[beabp]][[GSDVG00364]][[supported-realms]]
+
+==== Supported Realms
+
+The following realms are supported in the current release of the
+{productName}:
+
+* `file` - Stores user information in a file. This is the default realm
+when you first install the {productName}.
+* `ldap` - Stores user information in an LDAP directory.
+* `jdbc` - Stores user information in a database.
++
+In the JDBC realm, the server gets user credentials from a database. The
+{productName} uses the database information and the enabled JDBC
+realm option in the configuration file. For digest authentication, a
+JDBC realm should be created with `jdbcDigestRealm` as the JAAS context.
+* `certificate` - Sets up the user identity in the {productName}
+security context, and populates it with user data obtained from
+cryptographically verified client certificates.
+* `solaris` - Allows authentication using Solaris `username+password`
+data. This realm is only supported on the Solaris operating system,
+version 9 and above.
+
+For information about configuring realms, see link:#beabq[How to
+Configure a Realm].
+
+[[beabq]][[GSDVG00365]][[how-to-configure-a-realm]]
+
+==== How to Configure a Realm
+
+You can configure a realm in one of these ways:
+
+* In the Administration Console, open the Security component under the
+relevant configuration and go to the Realms page. For details, click the
+Help button in the Administration Console.
+* Use the `asadmin create-auth-realm` command to configure realms on
+local servers. For details, see the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+[[beabr]][[GSDVG00366]][[how-to-set-a-realm-for-an-application-or-module]]
+
+==== How to Set a Realm for an Application or Module
+
+The following deployment descriptor elements have optional `realm` or
+`realm-name` data subelements or attributes that override the domain's
+default realm:
+
+* `glassfish-application` element in `glassfish-application.xml`
+* `web-app` element in `web.xml`
+* `as-context` element in `glassfish-ejb-jar.xml`
+* `client-container` element in `sun-acc.xml`
+* `client-credential` element in `sun-acc.xml`
+
+If modules within an application specify realms, these are ignored. If
+present, the realm defined in `glassfish-application.xml` is used,
+otherwise the domain's default realm is used.
+
+For example, a realm is specified in `glassfish-application.xml` as
+follows:
+
+[source,xml]
+----
+<glassfish-application>
+    ...
+    <realm>ldap</realm>
+</glassfish-application>
+----
+
+For more information about the deployment descriptor files and elements,
+see "link:application-deployment-guide/dd-elements.html#GSDPG00007[Elements of the {productName} Deployment
+Descriptors]" in {productName} Application
+Deployment Guide.
+
+[[beabs]][[GSDVG00367]][[creating-a-custom-realm]]
+
+==== Creating a Custom Realm
+
+You can create a custom realm by providing a custom Java Authentication
+and Authorization Service (JAAS) login module class and a custom realm
+class. Note that client-side JAAS login modules are not suitable for use
+with the {productName}.
+
+To activate the custom login modules and realms, place the JAR files in
+the domain-dir``/lib`` directory or the class files in the
+domain-dir`/lib/classes` directory. For more information about class
+loading in the {productName}, see link:class-loaders.html#beade[Class
+Loaders].
+
+JAAS is a set of APIs that enable services to authenticate and enforce
+access controls upon users. JAAS provides a pluggable and extensible
+framework for programmatic user authentication and authorization. JAAS
+is a core API and an underlying technology for Jakarta EE security
+mechanisms. For more information about JAAS, refer to the JAAS
+specification for Java SDK, available at
+`http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136007.html`.
+
+For general information about realms and login modules, see the section
+about working with realms, users, groups, and roles in
+https://eclipse-ee4j.github.io/jakartaee-tutorial/#security-2[
+Introduction to Security in the Jakarta EE Platform]
+in The Jakarta EE Tutorial.
+
+For Javadoc tool pages relevant to custom realms, see the
+`com.sun.appserv.security` package.
+
+Custom login modules must extend the
+`com.sun.appserv.security.AppservPasswordLoginModule` class. This class
+implements javax.security.auth.spi.LoginModule. Custom login modules
+must not implement LoginModule directly.
+
+Custom login modules must provide an implementation for one abstract
+method defined in `AppservPasswordLoginModule`:
+
+[source,java]
+----
+abstract protected void authenticateUser() throws LoginException
+----
+
+This method performs the actual authentication. The custom login module
+must not implement any of the other methods, such as `login`, `logout`,
+`abort`, `commit`, or `initialize`. Default implementations are provided
+in `AppservPasswordLoginModule` which hook into the {productName}
+infrastructure.
+
+The custom login module can access the following protected object
+fields, which it inherits from `AppservPasswordLoginModule`. These
+contain the user name and password of the user to be authenticated:
+
+[source,java]
+----
+protected String _username;
+protected String _password;
+----
+
+The `authenticateUser` method must end with the following sequence:
+
+[source,java]
+----
+String[] grpList;
+// populate grpList with the set of groups to which
+// _username belongs in this realm, if any
+commitUserAuthentication(grpList);
+----
+
+Custom realms must extend the `com.sun.appserv.security.AppservRealm`
+class and implement the following methods:
+
+[source,java]
+----
+public void init(Properties props) throws BadRealmException, NoSuchRealmException
+----
+
+This method is invoked during server startup when the realm is initially
+loaded. The `props` argument contains the properties defined for this
+realm. The realm can do any initialization it needs in this method. If
+the method returns without throwing an exception, the {productName}
+assumes that the realm is ready to service authentication requests. If
+an exception is thrown, the realm is disabled.
+
+[source,java]
+----
+public String getAuthType()
+----
+
+This method returns a descriptive string representing the type of
+authentication done by this realm.
+
+[source,java]
+----
+public abstract Enumeration getGroupNames(String username) throws
+    InvalidOperationException, NoSuchUserException
+----
+
+This method returns an `Enumeration` (of `String` objects) enumerating
+the groups (if any) to which the given `username` belongs in this realm.
+
+Custom realms that manage users must implement the following additional
+methods:
+
+[source,java]
+----
+public abstract boolean supportsUserManagement();
+----
+
+This method returns `true` if the realm supports user management.
+
+[source,java]
+----
+public abstract Enumeration getGroupNames() throws BadRealmException;
+----
+
+This method returns an `Enumeration` of all group names.
+
+[source,java]
+----
+public abstract Enumeration getUserNames() throws BadRealmException;
+----
+
+This method returns an `Enumeration` of all user names.
+
+[source,java]
+----
+public abstract void refresh() throws BadRealmException;
+----
+
+This method refreshes the realm data so that new users and groups are
+visible.
+
+[source,java]
+----
+public abstract void persist() throws BadRealmException;
+----
+
+This method persists the realm data to permanent storage.
+
+[source,java]
+----
+public abstract User getUser(String name) throws NoSuchUserException,
+BadRealmException;
+----
+
+This method returns the information recorded about a particular named
+user.
+
+[source,java]
+----
+public abstract void addUser(String name, String password, String[] groupList) throws
+BadRealmException, IASSecurityException;
+----
+
+This method adds a new user, who cannot already exist.
+
+[source,java]
+----
+public abstract void removeUser(String name) throws NoSuchUserException,
+BadRealmException;
+----
+
+This method removes a user, who must exist.
+
+[source,java]
+----
+public abstract void updateUser(String name, String newName, String password,
+String[] groups) throws NoSuchUserException, BadRealmException, IASSecurityException;
+----
+
+This method updates data for a user, who must exist.
+
+
+[NOTE]
+====
+The array passed to the `commitUseAuthentication` method should be newly
+created and otherwise unreferenced. This is because the group name array
+elements are set to null after authentication as part of cleanup. So the
+second time your custom realm executes it returns an array with null
+elements.
+
+Ideally, your custom realm should not return member variables from the
+`authenticate` method. It should return local variables as the default
+`JDBCRealm` does. Your custom realm can create a local `String` array in
+its `authenticate` method, copy the values from the member variables,
+and return the `String` array. Or it can use `clone` on the member
+variables.
+====
+
+
+[[BACDEIHB]][[GSDVG563]][[java-ee-security-api-support]]
+
+=== Jakarta EE Security API Support
+
+JSR-375 defines several authentication-related plugin SPIs, such as,
+`HttpAuthenticationMechanism` interface, the `IdentityStore` and
+`IdentityStoreHandler` interfaces:
+
+* `HttpAuthenticationMechanism`: An interface for modules that
+authenticate callers to a web application. An application can supply its
+own `HttpAuthenticationMechanism`, or use one of the default
+implementations provided by the container.
+* `IdentityStore`: This interface defines methods for validating a
+caller's credentials (such as user name and password) and returning
+group membership information. An application can provide its own
+IdentityStore, or use the built in LDAP or Database store.
+* `RememberMeIdentityStore`: This interface is a variation on the
+`IdentityStore` interface, intended to address cases where an
+authenticated user's identity should be remembered for an extended
+period of time, so that the caller can return to the application
+periodically without needing to present primary authentication
+credentials each time.
+
+In addition to these authentication plugin SPIs, the Jakarta EE Security
+API specification defines the `SecurityContext` API for use by
+application code to query and interact with the current security
+context. The `SecurityContext` interface defines methods that allow an
+application to access security information about a caller, authenticate
+a caller, and authorize a caller. These methods include
+`getCallerPrincipal()`, `getPrincipalsByType()`, `isCallerInRole()`,
+`authenticate()`, and `hasAccessToWebResource()`.
+
+[[beabt]][[GSDVG00119]][[jacc-support]]
+
+=== JACC Support
+
+JACC (Java Authorization Contract for Containers) is part of the Jakarta EE
+specification and defined by http://www.jcp.org/en/jsr/detail?id=115[JSR
+115] (`http://www.jcp.org/en/jsr/detail?id=115`). JACC defines an
+interface for pluggable authorization providers. Specifically, JACC is
+used to plug in the Java policy provider used by the container to
+perform Jakarta EE caller access decisions. The Java policy provider
+performs Java policy decisions during application execution. This
+provides third parties with a mechanism to develop and plug in modules
+that are responsible for answering authorization decisions during Java
+EE application execution. The interfaces and rules used for developing
+JACC providers are defined in the JACC 1.0 specification.
+
+The {productName} provides a simple file-based JACC-compliant
+authorization engine as a default JACC provider, named `default`. An
+alternate provider named `simple` is also provided. To configure an
+alternate provider using the Administration Console, open the Security
+component under the relevant configuration, and select the JACC
+Providers component. For details, click the Help button in the
+Administration Console.
+
+[[beabu]][[GSDVG00120]][[pluggable-audit-module-support]]
+
+=== Pluggable Audit Module Support
+
+Audit modules collect and store information on incoming requests
+(servlets, EJB components) and outgoing responses. You can create a
+custom audit module.
+
+The following topics are addressed here:
+
+* link:#beabv[Configuring an Audit Module]
+* link:#beabw[The `AuditModule` Class]
+
+[[beabv]][[GSDVG00368]][[configuring-an-audit-module]]
+
+==== Configuring an Audit Module
+
+To configure an audit module, you can perform one of the following
+tasks:
+
+* To specify an audit module using the Administration Console, open the
+Security component under the relevant configuration, and select the
+Audit Modules component. For details, click the Help button in the
+Administration Console.
+* You can use the `asadmin create-audit-module` command to configure an
+audit module. For details, see the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+[[beabw]][[GSDVG00369]][[the-auditmodule-class]]
+
+==== The `AuditModule` Class
+
+You can create a custom audit module by implementing a class that
+extends `com.sun.enterprise.security.audit.AuditModule`.
+
+For Javadoc tool pages relevant to audit modules, see the
+`com.sun.enterprise.security.audit` package.
+
+The `AuditModule` class provides default "no-op" implementations for
+each of the following methods, which your custom class can override.
+
+[source,java]
+----
+public void init(Properties props)
+----
+
+The preceding method is invoked during server startup when the audit
+module is initially loaded. The `props` argument contains the properties
+defined for this module. The module can do any initialization it needs
+in this method. If the method returns without throwing an exception, the
+{productName} assumes the module realm is ready to service audit
+requests. If an exception is thrown, the module is disabled.
+
+[source,java]
+----
+public void authentication(String user, String realm, boolean success)
+----
+
+This method is invoked when an authentication request has been processed
+by a realm for the given user. The `success` flag indicates whether the
+authorization was granted or denied.
+
+[source,java]
+----
+public void webInvocation(String user, HttpServletRequest req, String type, boolean success)
+----
+
+This method is invoked when a web container call has been processed by
+authorization. The `success` flag indicates whether the authorization
+was granted or denied. The `req` object is the standard
+`HttpServletRequest` object for this request. The `type` string is one
+of `hasUserDataPermission` or `hasResourcePermission` (see
+http://www.jcp.org/en/jsr/detail?id=115[JSR 115]
+(`http://www.jcp.org/en/jsr/detail?id=115`)).
+
+[source,java]
+----
+public void ejbInvocation(String user, String ejb, String method, boolean success)
+----
+
+This method is invoked when an EJB container call has been processed by
+authorization. The `success` flag indicates whether the authorization
+was granted or denied. The `ejb` and `method` strings describe the EJB
+component and its method that is being invoked.
+
+[source,java]
+----
+public void webServiceInvocation(String uri, String endpoint, boolean success)
+----
+
+This method is invoked during validation of a web service request in
+which the endpoint is a servlet. The `uri` is the URL representation of
+the web service endpoint. The `endpoint` is the name of the endpoint
+representation. The `success` flag indicates whether the authorization
+was granted or denied.
+
+[source,java]
+----
+public void ejbAsWebServiceInvocation(String endpoint, boolean success)
+----
+
+This method is invoked during validation of a web service request in
+which the endpoint is a stateless session bean. The `endpoint` is the
+name of the endpoint representation. The `success` flag indicates
+whether the authorization was granted or denied.
+
+[[beabx]][[GSDVG00121]][[the-server.policy-file]]
+
+=== The `server.policy` File
+
+Each {productName} domain has its own global J2SE policy file,
+located in domain-dir``/config``. The file is named `server.policy`.
+
+The {productName} is a Jakarta EE compliant application server. As such,
+it follows the requirements of the Jakarta EE specification, including the
+presence of the security manager (the Java component that enforces the
+policy) and a limited permission set for Jakarta EE application code.
+
+The following topics are addressed here:
+
+* link:#beaby[Default Permissions]
+* link:#gilzz[System Properties]
+* link:#beabz[Changing Permissions for an Application]
+* link:#gbyah[Enabling and Disabling the Security Manager]
+
+[[beaby]][[GSDVG00370]][[default-permissions]]
+
+==== Default Permissions
+
+Internal server code is granted all permissions. These are covered by
+the `AllPermission` grant blocks to various parts of the server
+infrastructure code. Do not modify these entries.
+
+Application permissions are granted in the default grant block. These
+permissions apply to all code not part of the internal server code
+listed previously. The {productName} does not distinguish between EJB
+and web module permissions. All code is granted the minimal set of web
+component permissions (which is a superset of the EJB minimal set). Do
+not modify these entries.
+
+A few permissions above the minimal set are also granted in the default
+`server.policy` file. These are necessary due to various internal
+dependencies of the server implementation. Jakarta EE application
+developers must not rely on these additional permissions. In some cases,
+deleting these permissions might be appropriate. For example, one
+additional permission is granted specifically for using connectors. If
+connectors are not used in a particular domain, you should remove this
+permission, because it is not otherwise necessary.
+
+[[gilzz]][[GSDVG00371]][[system-properties]]
+
+==== System Properties
+
+The following predefined system properties, also called variables, are
+available for use in the `server.policy` file. The system property most
+frequently used in `server.policy` is `${com.sun.aas.instanceRoot}`. For
+more information about system properties, see the
+`asadmin create-system-properties` command in the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+[[GSDVG533]][[sthref5]][[sthref6]]
+
+
+Table 4-1 Predefined System Properties
+
+[width="100%",cols="29%,17%,54%",options="header",]
+|===
+|Property |Default |Description
+|`com.sun.aas.installRoot` |depends on operating system |Specifies the
+directory where the {productName} is installed.
+
+|`com.sun.aas.instanceRoot` |depends on operating system |Specifies the
+top level directory for a server instance.
+
+|`com.sun.aas.hostName` |none |Specifies the name of the host (machine).
+
+|`com.sun.aas.javaRoot` |depends on operating system |Specifies the
+installation directory for the Java runtime.
+
+|`com.sun.aas.imqLib` |depends on operating system |Specifies the
+library directory for the Open Message Queue software.
+
+|`com.sun.aas.configName` |`server-config` |Specifies the name of the
+configuration used by a server instance.
+
+|`com.sun.aas.instanceName` |`server1` |Specifies the name of the server
+instance. This property is not used in the default configuration, but
+can be used to customize configuration.
+
+|`com.sun.aas.clusterName` |`cluster1` |Specifies the name of the
+cluster. This property is only set on clustered server instances. This
+property is not used in the default configuration, but can be used to
+customize configuration.
+
+|`com.sun.aas.domainName` |`domain1` |Specifies the name of the domain.
+This property is not used in the default configuration, but can be used
+to customize configuration.
+|===
+
+
+[[beabz]][[GSDVG00372]][[changing-permissions-for-an-application]]
+
+==== Changing Permissions for an Application
+
+The default policy for each domain limits the permissions of Jakarta EE
+deployed applications to the minimal set of permissions required for
+these applications to operate correctly. Do not add extra permissions to
+the default set (the grant block with no codebase, which applies to all
+code). Instead, add a new grant block with a codebase specific to the
+applications requiring the extra permissions, and only add the minimally
+necessary permissions in that block.
+
+If you develop multiple applications that require more than this default
+set of permissions, you can add the custom permissions that your
+applications need. The `com.sun.aas.instanceRoot` variable refers to the
+domain-dir. For example:
+
+[source]
+----
+grant codeBase "file:${com.sun.aas.instanceRoot}/applications/-" {
+...
+}
+----
+
+You can add permissions to stub code with the following grant block:
+
+[source]
+----
+grant codeBase "file:${com.sun.aas.instanceRoot}/generated/-" {
+...
+}
+----
+
+In general, you should add extra permissions only to the applications or
+modules that require them, not to all applications deployed to a domain.
+For example:
+
+[source]
+----
+grant codeBase "file:${com.sun.aas.instanceRoot}/applications/MyApp/-" {
+...
+}
+----
+
+For a module:
+
+[source]
+----
+grant codeBase "file:${com.sun.aas.instanceRoot}/applications/MyModule/-" {
+...
+}
+----
+
+
+[NOTE]
+====
+Deployment directories may change between {productName} releases.
+====
+
+
+An alternative way to add permissions to a specific application or
+module is to edit the `granted.policy` file for that application or
+module. The `granted.policy` file is located in the
+domain-dir`/generated/policy/`app-or-module-name directory. In this
+case, you add permissions to the default grant block. Do not delete
+permissions from this file.
+
+When the {productName} policy subsystem determines that a permission
+should not be granted, it logs a `server.policy` message specifying the
+permission that was not granted and the protection domains, with
+indicated code source and principals that failed the protection check.
+For example, here is the first part of a typical message:
+
+[source]
+----
+[#|2005-12-17T16:16:32.671-0200|INFO|sun-appserver-pe9.1|
+javax.enterprise.system.core.security|_ThreadID=14;_ThreadName=Thread-31;|
+JACC Policy Provider: PolicyWrapper.implies, context(null)-
+permission((java.util.PropertyPermission java.security.manager write))
+domain that failed(ProtectionDomain
+(file:/E:/glassfish/domains/domain1/applications/cejug-clfds/ ... )
+...
+----
+
+Granting the following permission eliminates the message:
+
+[source]
+----
+grant codeBase "file:${com.sun.aas.instanceRoot}/applications/cejug-clfds/-" {
+    permission java.util.PropertyPermission "java.security.manager", "write";
+}
+----
+
+
+[NOTE]
+====
+Do not add `java.security.AllPermission` to the `server.policy` file for
+application code. Doing so completely defeats the purpose of the
+security manager, yet you still get the performance overhead associated
+with it.
+====
+
+
+As noted in the Jakarta EE specification, an application should provide
+documentation of the additional permissions it needs. If an application
+requires extra permissions but does not document the set it needs,
+contact the application author for details.
+
+As a last resort, you can iteratively determine the permission set an
+application needs by observing `AccessControlException` occurrences in
+the server log.
+
+If this is not sufficient, you can add the
+`-Djava.security.debug=failure` JVM option to the domain. Use the
+following `asadmin create-jvm-options` command, then restart the server:
+
+[source]
+----
+asadmin create-jvm-options -Djava.security.debug=failure
+----
+
+For more information about the `asadmin create-jvm-options` command, see
+the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+You can use the J2SE standard `policytool` or any text editor to edit
+the `server.policy` file. For more information, see
+`http://docs.oracle.com/javase/tutorial/security/tour2/index.html`.
+
+For detailed information about policy file syntax, see
+`http://docs.oracle.com/javase/8/docs/technotes/guides/security/PolicyFiles.html`.
+
+For information about using system properties in the `server.policy`
+file, see
+`http://docs.oracle.com/javase/8/docs/technotes/guides/security/PolicyFiles.html`.
+
+For detailed information about the permissions you can set in the
+`server.policy` file, see
+`http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html`.
+
+The Javadoc for the `Permission` class is at
+`http://docs.oracle.com/javase/8/docs/api/java/security/Permission.html`.
+
+[[gbyah]][[GSDVG00373]][[enabling-and-disabling-the-security-manager]]
+
+==== Enabling and Disabling the Security Manager
+
+The security manager is disabled by default.
+
+In a production environment, you may be able to safely disable the
+security manager if all of the following are true:
+
+* Performance is critical
+* Deployment to the production server is carefully controlled
+* Only trusted applications are deployed
+* Applications don't need policy enforcement
+
+Disabling the security manager may improve performance significantly for
+some types of applications.
+
+To enable the security manager, do one of the following:
+
+* To use the Administration Console, open the Security component under
+the relevant configuration, and check the Security Manager Enabled box.
+Then restart the server. For details, click the Help button in the
+Administration Console.
+* Use the following `asadmin create-jvm-options` command, then restart
+the server:
++
+[source]
+----
+asadmin create-jvm-options -Djava.security.manager
+----
+
+To disable the security manager, uncheck the Security Manager Enabled
+box or use the corresponding `asadmin delete-jvm-options` command. For
+more information about `create-jvm-options` and `delete-jvm-options`,
+see the link:reference-manual.html#GSRFM[{productName} Reference
+Manual].
+
+If the security manager is enabled and you are using the Java
+Persistence API by calling `Persistence.createEMF()`, the EclipseLink
+persistence provider requires that you set the
+`eclipselink.security.usedoprivileged` JVM option to `true` as follows:
+
+[source]
+----
+asadmin create-jvm-options -Declipselink.security.usedoprivileged=true
+----
+
+If the security manager is enabled and you are using the Java
+Persistence API by injecting or looking up an entity manager or entity
+manager factory, the EJB container sets this JVM option for you.
+
+You must grant additional permissions to CDI-enabled Jakarta EE
+applications that are deployed in a {productName} 7 domain or
+cluster for which security manager is enabled. These additional
+permissions are not required when security manager is disabled.
+
+To deploy CDI-enabled Jakarta EE applications in a {productName} 7
+domain or cluster for which security manager is enabled, add the
+following permissions to the applications:
+
+[source]
+----
+grant codeBase "file:${com.sun.aas.instanceRoot}/applications/[ApplicationName]" {
+ permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
+};
+----
+
+For example, for a CDI application named `foo.war`, add the following
+permissions to the `server.policy` file, restart the domain or cluster,
+and then deploy and use the application.
+
+[source]
+----
+grant codeBase "file:${com.sun.aas.instanceRoot}/applications/foo" {
+ permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
+};
+----
+
+For more information about modifying application permissions, see
+link:#beabz[Changing Permissions for an Application].
+
+[[beaca]][[GSDVG00122]][[configuring-message-security-for-web-services]]
+
+=== Configuring Message Security for Web Services
+
+In message security, security information is applied at the message
+layer and travels along with the web services message. Web Services
+Security (WSS) is the use of XML Encryption and XML Digital Signatures
+to secure messages. WSS profiles the use of various security tokens
+including X.509 certificates, Security Assertion Markup Language (SAML)
+assertions, and username/password tokens to achieve this.
+
+Message layer security differs from transport layer security in that it
+can be used to decouple message protection from message transport so
+that messages remain protected after transmission, regardless of how
+many hops they travel.
+
+
+[NOTE]
+====
+Message security (JSR 196) is supported only in the full {productName}, not in the Web Profile.
+====
+
+
+
+[NOTE]
+====
+In this release of the {productName}, message layer annotations are
+not supported.
+====
+
+
+For more information about web services, see
+link:webservices.html#gaszn[Developing Web Services].
+
+For more information about message security, see the following:
+
+* "https://eclipse-ee4j.github.io/jakartaee-tutorial/#security-2[Introduction to
+Security in the Jakarta EE Platform]" in The Jakarta EE Tutorial
+* link:security-guide.html#GSSCG[{productName} Security Guide]
+* http://www.jcp.org/en/jsr/detail?id=196[JSR 196]
+(`http://www.jcp.org/en/jsr/detail?id=196`), Java Authentication Service
+Provider Interface for Containers
+* The Liberty Alliance Project specifications at
+`http://www.projectliberty.org/resources/specifications.php/?f=resources/specifications.php`
+* The Oasis Web Services Security (WSS) specification at
+`http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf`
+* The Web Services Interoperability Organization (WS-I) Basic Security
+Profile (BSP) specification at
+`http://www.ws-i.org/Profiles/BasicSecurityProfile-1.0.html`
+* The XML and Web Services Security page at `http://xwss.java.net/`
+* The WSIT page at `http://wsit.java.net/`
+
+The following topics are addressed here:
+
+* link:#gbjxw[Message Security Providers]
+* link:#beacb[Message Security Responsibilities]
+* link:#beacf[Application-Specific Message Protection]
+* link:#beaci[Understanding and Running the Sample Application]
+
+[[gbjxw]][[GSDVG00374]][[message-security-providers]]
+
+==== Message Security Providers
+
+When you first install the {productName}, the providers
+`XWS_ClientProvider` and `XWS_ServerProvider` are configured but
+disabled. You can enable them in one of the following ways:
+
+* To enable the message security providers using the Administration
+Console, open the Security component under the relevant configuration,
+select the Message Security component, and select SOAP. Then select
+`XWS_ServerProvider` from the Default Provider list and
+`XWS_ClientProvider` from the Default Client Provider list. For details,
+click the Help button in the Administration Console.
+* You can enable the message security providers using the following
+commands.
++
+[source]
+----
+asadmin set
+server-config.security-service.message-security-config.SOAP.default_provider=XWS_ServerProvider
+asadmin set
+server-config.security-service.message-security-config.SOAP.default_client_provider=XWS_ClientProvider
+----
+For more information about the `asadmin set` command, see the
+link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+The example described in link:#beaci[Understanding and Running the
+Sample Application] uses the `ClientProvider` and `ServerProvider`
+providers, which are enabled when the Ant targets are run. You don't
+need to enable these on the {productName} prior to running the
+example.
+
+If you install the OpenSSO, you have these additional provider choices:
+
+* `AMClientProvider` and `AMServerProvider` - These providers secure web
+services and Simple Object Access Protocol (SOAP) messages using either
+WS-I BSP or Liberty ID-WSF tokens. These providers are used
+automatically if they are configured as the default providers. If you
+wish to override any provider settings, you can configure these
+providers in `message-security-binding` elements in the
+`glassfish-web.xml`, `glassfish-ejb-jar.xml`, and
+`glassfish-application-client.xml` deployment descriptor files.
+* `AMHttpProvider` - This provider handles the initial end user
+authentication for securing web services using Liberty ID-WSF tokens and
+redirects requests to the OpenSSO for single sign-on. To use this
+provider, specify it in the `httpservlet-security-provider` attribute of
+the `glassfish-web-app` element in the `glassfish-web.xml` file.
+
+Liberty specifications can be viewed at
+`http://www.projectliberty.org/resources/specifications.php/?f=resources/specifications.php`.
+The WS-I BSP specification can be viewed at
+`http://www.ws-i.org/Profiles/BasicSecurityProfile-1.0.html`.
+
+For more information about the {productName} deployment descriptor
+files, see the link:application-deployment-guide.html#GSDPG[{productName}
+Application Deployment Guide].
+
+For information about configuring these providers in the {productName}, see the link:security-guide.html#GSSCG[{productName}
+Security Guide]. For additional information about overriding provider
+settings, see link:#beacf[Application-Specific Message Protection].
+
+You can create new message security providers in one of the following
+ways:
+
+* To create a message security provider using the Administration
+Console, open the Security component under the relevant configuration,
+and select the Message Security component. For details, click the Help
+button in the Administration Console.
+* You can use the `asadmin create-message-security-provider` command to
+create a message security provider. For details, see the
+link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+In addition, you can set a few optional provider properties using the
+`asadmin set` command. For example:
+
+[source]
+----
+asadmin set server-config.security-service.message-security-config.provider-config.property.debug=true
+----
+
+The following table describes these message security provider
+properties.
+
+[[GSDVG534]][[sthref7]][[sthref8]]
+
+
+Table 4-2 Message Security Provider Properties
+
+[width="100%",cols="30%,24%,46%",options="header",]
+|===
+|Property |Default |Description
+|`security.config`
+|domain-dir`/``config/``wss-server-``config-1.0.xml`
+a|Specifies the location of the message security configuration file. To
+point to a configuration file in the domain-dir``/config`` directory, use
+the system property `${com.sun.aas.instanceRoot}/``config/`, for
+example:
+
+`${com.sun.aas.instanceRoot}/config/``wss-server-config-1.0.xml`
+
+See link:#gilzz[System Properties].
+
+|`debug`
+|`false`
+|If `true`, enables dumping of server provider debug messages to the server log.
+
+|`dynamic.username.password`
+|`false`
+|If `true`, signals the provider runtime to collect the user name and password from the `CallbackHandler`
+for each request.
+If `false`, the user name and password for `wsse:UsernameToken(s)` is collected once, during module initialization.
+This property is only applicable for a `ClientAuthModule`.
+
+|`encryption.key.alias`
+|`s1as`
+|Specifies the encryption key used by the provider. The key is identified by its `keystore` alias.
+
+|`signature.key.alias`
+|`s1as`
+|Specifies the signature key used by the provider. The key is identified by its `keystore` alias.
+|===
+
+
+[[beacb]][[GSDVG00375]][[message-security-responsibilities]]
+
+==== Message Security Responsibilities
+
+In the {productName}, the system administrator and application
+deployer roles are expected to take primary responsibility for
+configuring message security. In some situations, the application
+developer may also contribute, although in the typical case either of
+the other roles may secure an existing application without changing its
+implementation and without involving the developer.
+
+The following topics are addressed here:
+
+* link:#beacc[Application Developer Responsibilities]
+* link:#beacd[Application Deployer Responsibilities]
+* link:#beace[System Administrator Responsibilities]
+
+[[beacc]][[GSDVG00241]][[application-developer-responsibilities]]
+
+===== Application Developer Responsibilities
+
+The application developer can turn on message security, but is not
+responsible for doing so. Message security can be set up by the system
+administrator so that all web services are secured, or set up by the
+application deployer when the provider or protection policy bound to the
+application must be different from that bound to the container.
+
+The application developer is responsible for the following:
+
+* Determining if an application-specific message protection policy is
+required by the application. If so, ensuring that the required policy is
+specified at application assembly which may be accomplished by
+communicating with the application deployer.
+* Determining if message security is necessary at the {productName}
+level. If so, ensuring that this need is communicated to the system
+administrator, or taking care of implementing message security at the
+{productName} level.
+
+[[beacd]][[GSDVG00242]][[application-deployer-responsibilities]]
+
+===== Application Deployer Responsibilities
+
+The application deployer is responsible for the following:
+
+* Specifying (at application assembly) any required application-specific
+message protection policies if such policies have not already been
+specified by upstream roles (the developer or assembler)
+* Modifying {productName} deployment descriptors to specify
+application-specific message protection policies information
+(message-security-binding elements) to web service endpoint and service
+references
+
+These security tasks are discussed in link:#beacf[Application-Specific
+Message Protection]. A sample application using message security is
+discussed in link:#beaci[Understanding and Running the Sample
+Application].
+
+[[beace]][[GSDVG00243]][[system-administrator-responsibilities]]
+
+===== System Administrator Responsibilities
+
+The system administrator is responsible for the following:
+
+* Configuring message security providers on the {productName}.
+* Managing user databases.
+* Managing keystore and truststore files.
+* Installing the sample. This is only done if the `xms` sample
+application is used to demonstrate the use of message layer web services
+security.
+
+A system administrator uses the Administration Console to manage server
+security settings and uses a command line tool to manage certificate
+databases. Certificates and private keys are stored in key stores and
+are managed with `keytool`. If Network Security Services (NSS) is
+installed, certificates and private keys are stored in an NSS database,
+where they are managed using `certutil`. System administrator tasks are
+discussed in the link:security-guide.html#GSSCG[{productName}
+Security Guide].
+
+[[beacf]][[GSDVG00376]][[application-specific-message-protection]]
+
+==== Application-Specific Message Protection
+
+When the {productName} provided configuration is insufficient for
+your security needs, and you want to override the default protection,
+you can apply application-specific message security to a web service.
+
+Application-specific security is implemented by adding the message
+security binding to the web service endpoint, whether it is an EJB or
+servlet web service endpoint. Modify {productName} XML files to add
+the message binding information.
+
+Message security can also be specified using a WSIT security policy in
+the WSDL file. For details, see the WSIT page at
+`http://wsit.java.net/`.
+
+For more information about message security providers, see
+link:#gbjxw[Message Security Providers].
+
+For more details on message security binding for EJB web services,
+servlet web services, and clients, see the XML file descriptions in
+"link:application-deployment-guide/dd-elements.html#GSDPG00007[Elements of the {productName} Deployment
+Descriptors]" in {productName} Application
+Deployment Guide.
+
+* For `glassfish-ejb-jar.xml`, see "link:application-deployment-guide/dd-files.html#GSDPG00079[The
+glassfish-ejb-jar.xml File]" in {productName}
+Application Deployment Guide.
+* For `glassfish-web.xml`, see "link:application-deployment-guide/dd-files.html#GSDPG00078[The glassfish-web.xml
+File]" in {productName} Application Deployment
+Guide.
+* For `glassfish-application-client.xml`, see "link:application-deployment-guide/dd-files.html#GSDPG00081[The
+glassfish-application-client.xml file]" in {productName} Application Deployment Guide.
+
+The following topics are addressed here:
+
+* link:#beacg[Using a Signature to Enable Message Protection for All
+Methods]
+* link:#beach[Configuring Message Protection for a Specific Method Based
+on Digital Signatures]
+
+[[beacg]][[GSDVG00244]][[using-a-signature-to-enable-message-protection-for-all-methods]]
+
+===== Using a Signature to Enable Message Protection for All Methods
+
+To enable message protection for all methods using digital signature,
+update the `message-security-binding` element for the EJB web service
+endpoint in the application's `glassfish-ejb-jar.xml` file. In this
+file, add `request-protection` and `response-protection` elements, which
+are analogous to the `request-policy` and `response-policy` elements
+discussed in the link:security-guide.html#GSSCG[{productName}
+Security Guide]. To apply the same protection mechanisms for all
+methods, leave the method-name element blank. link:#beach[Configuring
+Message Protection for a Specific Method Based on Digital Signatures]
+discusses listing specific methods or using wildcard characters.
+
+This section uses the sample application discussed in
+link:#beaci[Understanding and Running the Sample Application] to apply
+application-level message security to show only the differences
+necessary for protecting web services using various mechanisms.
+
+[[fvyag]][[GSDVG00052]][[to-enable-message-protection-for-all-methods-using-digital-signature]]
+
+To Enable Message Protection for All Methods Using Digital Signature
+
+Follow this procedure.
+
+1. In a text editor, open the application's `glassfish-ejb-jar.xml`
+file.
++
+For the `xms` example, this file is located in the directory
+app-dir`/xms-ejb/src/conf`, where app-dir is defined in link:#beacj[To
+Set Up the Sample Application].
+2. Modify the `glassfish-ejb-jar.xml` file by adding the
+`message-security-binding` element as shown:
++
+[source,xml]
+----
+<glassfish-ejb-jar>
+  <enterprise-beans>
+    <unique-id>1</unique-id>
+    <ejb>
+      <ejb-name>HelloWorld</ejb-name>
+      <jndi-name>HelloWorld</jndi-name>
+      <webservice-endpoint>
+        <port-component-name>HelloIF</port-component-name>
+        <endpoint-address-uri>service/HelloWorld</endpoint-address-uri>
+        <message-security-binding auth-layer="SOAP">
+          <message-security>
+            <request-protection auth-source="content" />
+            <response-protection auth-source="content"/>
+          </message-security>
+        </message-security-binding>
+      </webservice-endpoint>
+    </ejb>
+  </enterprise-beans>
+</glassfish-ejb-jar>
+----
+3. Compile, deploy, and run the application as described in
+link:#beack[To Run the Sample Application].
+
+[[beach]][[GSDVG00245]][[configuring-message-protection-for-a-specific-method-based-on-digital-signatures]]
+
+===== Configuring Message Protection for a Specific Method Based on Digital Signatures
+
+To enable message protection for a specific method, or for a set of
+methods that can be identified using a wildcard value, follow these
+steps. As in the example discussed in link:#beacg[Using a Signature to
+Enable Message Protection for All Methods], to enable message protection
+for a specific method, update the `message-security-binding` element for
+the EJB web service endpoint in the application's
+`glassfish-ejb-jar.xml` file. To this file, add `request-protection` and
+`response-protection` elements, which are analogous to the
+`request-policy` and `response-policy` elements discussed in the
+link:security-guide.html#GSSCG[{productName} Security Guide]. The
+administration guide includes a table listing the set and order of
+security operations for different request and response policy
+configurations.
+
+This section uses the sample application discussed in
+link:#beaci[Understanding and Running the Sample Application] to apply
+application-level message security to show only the differences
+necessary for protecting web services using various mechanisms.
+
+[[fvybb]][[GSDVG00053]][[to-enable-message-protection-for-a-particular-method-or-set-of-methods-using-digital-signature]]
+
+To Enable Message Protection for a Particular Method or Set of Methods
+Using Digital Signature
+
+Follow this procedure.
+
+1. In a text editor, open the application's `glassfish-ejb-jar.xml`
+file.
++
+For the `xms` example, this file is located in the directory
+app-dir`/xms-ejb/src/conf`, where app-dir is defined in link:#beacj[To
+Set Up the Sample Application].
+2. Modify the `glassfish-ejb-jar.xml` file by adding the
+`message-security-binding` element as shown:
++
+[source,xml]
+----
+<glassfish-ejb-jar>
+  <enterprise-beans>
+  <unique-id>1</unique-id>
+    <ejb>
+      <ejb-name>HelloWorld</ejb-name>
+      <jndi-name>HelloWorld</jndi-name>
+      <webservice-endpoint>
+        <port-component-name>HelloIF</port-component-name>
+        <endpoint-address-uri>service/HelloWorld</endpoint-address-uri>
+        <message-security-binding auth-layer="SOAP">
+          <message-security>
+            <message>
+              <java-method>
+                <method-name>ejbCreate</method-name>
+              </java-method>
+            </message>
+            <message>
+              <java-method>
+                <method-name>sayHello</method-name>
+              </java-method>
+            </message>
+            <request-protection auth-source="content" />
+            <response-protection auth-source="content"/>
+          </message-security>
+        </message-security-binding>
+      </webservice-endpoint>
+    </ejb>
+  </enterprise-beans>
+</glassfish-ejb-jar>
+----
+3. Compile, deploy, and run the application as described in
+link:#beack[To Run the Sample Application].
+
+[[beaci]][[GSDVG00377]][[understanding-and-running-the-sample-application]]
+
+==== Understanding and Running the Sample Application
+
+This section discusses the WSS sample application. This sample
+application is installed on your system only if you installed the J2EE
+1.4 samples. If you have not installed these samples, see link:#beacj[To
+Set Up the Sample Application].
+
+The objective of this sample application is to demonstrate how a web
+service can be secured with WSS. The web service in the `xms` example is
+a simple web service implemented using a Jakarta EE EJB endpoint and a web
+service endpoint implemented using a servlet. In this example, a service
+endpoint interface is defined with one operation, `sayHello`, which
+takes a string then sends a response with `Hello` prefixed to the given
+string. You can view the WSDL file for the service endpoint interface at
+app-dir`/xms-ejb/src/``conf/HelloWorld.wsdl`, where app-dir is defined
+in link:#beacj[To Set Up the Sample Application].
+
+In this application, the client looks up the service using the JNDI name
+`java:comp/env/service/HelloWorld` and gets the port information using a
+static stub to invoke the operation using a given name. For the name
+Duke, the client gets the response `Hello Duke!`
+
+This example shows how to use message security for web services at the
+{productName} level. For information about using message security at
+the application level, see link:#beacf[Application-Specific Message
+Protection]. The WSS message security mechanisms implement message-level
+authentication (for example, XML digital signature and encryption) of
+SOAP web services invocations using the X.509 and username/password
+profiles of the OASIS WS-Security standard, which can be viewed from the
+following URL:
+`http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf`.
+
+The following topics are addressed here:
+
+* link:#beacj[To Set Up the Sample Application]
+* link:#beack[To Run the Sample Application]
+
+[[beacj]][[GSDVG00054]][[to-set-up-the-sample-application]]
+
+===== To Set Up the Sample Application
+
+[[GSDVG535]]
+
+Before You Begin
+
+To have access to this sample application, you must have previously
+installed the J2EE 1.4 samples. If the samples are not installed, follow
+the steps in the following section.
+
+After you follow these steps, the sample application is located in the
+directory
+as-install``/j2ee14-samples/samples/webservices/security/ejb/apps/xms/``
+or in a directory of your choice. For easy reference throughout the rest
+of this section, this directory is referred to as simply app-dir.
+
+1. Go to the
+http://www.oracle.com/technetwork/java/javaee/download-141771.html[J2EE
+1.4 download URL]
+(`http://www.oracle.com/technetwork/java/javaee/download-141771.html`)
+in your browser.
+2. Click on the Download button for the Samples Bundle.
+3. Click on Accept License Agreement.
+4. Click on the J2EE SDK Samples link.
+5. Choose a location for the `j2eesdk-1_4_03-samples.zip` file.
++
+Saving the file to as-install is recommended.
+6. Unzip the file.
++
+Unzipping to the as-install``/j2ee14-samples`` directory is recommended.
+For example, you can use the following command.
++
+[source]
+----
+unzip j2eesdk-1_4_03-samples.zip -d j2ee14-samples
+----
+
+[[beack]][[GSDVG00055]][[to-run-the-sample-application]]
+
+===== To Run the Sample Application
+
+1. Make sure that the {productName} is running. +
+Message security providers are set up when the Ant targets are run, so
+you do not need to configure these on the {productName} prior to
+running this example.
+
+2. If you are not running HTTP on the default port of 8080, change the
+WSDL file for the example to reflect the change, and change the
+`common.properties` file to reflect the change as well. +
+The WSDL file for this example is located at
+app-dir`/xms-ejb/``src/conf/HelloWorld.wsdl`. The port number is in the
+following section:
++
+[source,xml]
+----
+<service name="HelloWorld">
+  <port name="HelloIFPort" binding="tns:HelloIFBinding">
+    <soap:address location="http://localhost:8080/service/HelloWorld"/>
+  </port>
+</service>
+----
+Verify that the properties in the as-install``/samples/common.properties`
+file are set properly for your installation and environment. If you need
+a more detailed description of this file, refer to the "Configuration"
+section for the web services security applications at
+as-install``/j2ee14-samples/samples/webservices/security/docs/common.html#Logging`.
+
+3. Change to the app-dir directory.
+
+4. Run the following Ant targets to compile, deploy, and run the
+example application:
+[arabic]
+.. To compile samples: `ant`
+.. To deploy samples: `ant deploy`
+.. To run samples: `ant run`
+
++
+If the sample has compiled and deployed properly, you see the following
+response on your screen after the application has run: +
+`run:[echo] Running the xms program:[exec] Established message level security : Hello Duke!`
+
+5. To undeploy the sample, run the following Ant target:
++
+[source]
+----
+ant undeploy
+----
+
+All of the web services security examples use the same web service name
+(`HelloWorld`) and web service ports. These examples show only the
+differences necessary for protecting web services using various
+mechanisms. Make sure to undeploy an application when you have completed
+running it. If you do not, you receive an `Already in Use` error and
+deployment failures when you try to deploy another web services example
+application.
+
+[[beacm]][[GSDVG00123]][[programmatic-login-using-the-programmaticlogin-class]]
+
+=== Programmatic Login Using the ProgrammaticLogin Class
+
+Programmatic login allows a deployed Jakarta EE application or module to
+invoke a login method. If the login is successful, a `SecurityContext`
+is established as if the client had authenticated using any of the
+conventional Jakarta EE mechanisms. Programmatic login is supported for
+servlet and EJB components on the server side, and for stand-alone or
+application clients on the client side. Programmatic login is useful for
+an application having special needs that cannot be accommodated by any
+of the Jakarta EE standard authentication mechanisms.
+
+This section describes a proprietary GlassFish mechanism, but see also
+the standard security APIs in the Jakarta EE tutorial.
+
+
+[NOTE]
+====
+The `com.sun.appserv.security.ProgrammaticLogin` class in {productName} is not a Jakarta EE API; therefore, it is not portable to other
+application servers.
+====
+
+
+The following topics are addressed here:
+
+* link:#beacn[Programmatic Login Precautions]
+* link:#beaco[Granting Programmatic Login Permission]
+* link:#beacp[The `ProgrammaticLogin` Class]
+
+[[beacn]][[GSDVG00378]][[programmatic-login-precautions]]
+
+==== Programmatic Login Precautions
+
+The {productName} is not involved in how the login information
+(`user`, `password`) is obtained by the deployed application.
+Programmatic login places the burden on the application developer with
+respect to assuring that the resulting system meets security
+requirements. If the application code reads the authentication
+information across the network, the application determines whether to
+trust the user.
+
+Programmatic login allows the application developer to bypass the
+{productName}-supported authentication mechanisms and feed
+authentication data directly to the security service. While flexible,
+this capability should not be used without some understanding of
+security issues.
+
+Since this mechanism bypasses the container-managed authentication
+process and sequence, the application developer must be very careful in
+making sure that authentication is established before accessing any
+restricted resources or methods. It is also the application developer's
+responsibility to verify the status of the login attempt and to alter
+the behavior of the application accordingly.
+
+The programmatic login state does not necessarily persist in sessions or
+participate in single sign-on.
+
+Lazy authentication is not supported for programmatic login. If an
+access check is reached and the deployed application has not properly
+authenticated using the programmatic login method, access is denied
+immediately and the application might fail if not coded to account for
+this occurrence. One way to account for this occurrence is to catch the
+access control or security exception, perform a programmatic login, and
+repeat the request.
+
+[[beaco]][[GSDVG00379]][[granting-programmatic-login-permission]]
+
+==== Granting Programmatic Login Permission
+
+The `ProgrammaticLoginPermission` permission is required to invoke the
+programmatic login mechanism for an application if the security manager
+is enabled. For information about the security manager, see
+link:#beabx[The `server.policy` File]. This permission is not granted by
+default to deployed applications because this is not a standard Jakarta EE
+mechanism.
+
+To grant the required permission to the application, add the following
+to the domain-dir`/config/server.policy` file:
+
+[source]
+----
+grant codeBase "file:jar-file-path" {
+     permission com.sun.appserv.security.ProgrammaticLoginPermission
+     "login";
+ };
+----
+
+The jar-file-path is the path to the application's JAR file.
+
+[[beacp]][[GSDVG00380]][[the-programmaticlogin-class]]
+
+==== The `ProgrammaticLogin` Class
+
+The `com.sun.appserv.security.ProgrammaticLogin` class enables a user to
+perform login programmatically.
+
+For Javadoc tool pages relevant to programmatic login, see the
+`com.sun.appserv.security` package.
+
+The `ProgrammaticLogin` class has four `login` methods, two for servlets
+or JSP files and two for EJB components.
+
+The login methods for servlets or JSP files have the following
+signatures:
+
+[source,java]
+----
+public java.lang.Boolean login(String user, String password,
+    javax.servlet.http.HttpServletRequest request,
+    javax.servlet.http.HttpServletResponse response)
+
+public java.lang.Boolean login(String user, String password,
+    String realm, javax.servlet.http.HttpServletRequest request,
+    javax.servlet.http.HttpServletResponse response, boolean errors)
+    throws java.lang.Exception
+----
+
+The login methods for EJB components have the following signatures:
+
+[source,java]
+----
+public java.lang.Boolean login(String user, String password)
+
+public java.lang.Boolean login(String user, String password,
+    String realm, boolean errors) throws java.lang.Exception
+----
+
+All of these `login` methods accomplish the following:
+
+* Perform the authentication
+* Return `true` if login succeeded, `false` if login failed
+
+The login occurs on the realm specified unless it is null, in which case
+the domain's default realm is used. The methods with no realm parameter
+use the domain's default realm.
+
+If the errors flag is set to `true`, any exceptions encountered during
+the login are propagated to the caller. If set to `false`, exceptions
+are thrown.
+
+On the client side, realm and errors parameters are ignored and the
+actual login does not occur until a resource requiring a login is
+accessed. A `java.rmi.AccessException` with `COBRA NO_PERMISSION` occurs
+if the actual login fails.
+
+The logout methods for servlets or JSP files have the following
+signatures:
+
+[source,java]
+----
+public java.lang.Boolean logout(HttpServletRequest request,
+    HttpServletResponse response)
+
+public java.lang.Boolean logout(HttpServletRequest request,
+    HttpServletResponse response, boolean errors)
+    throws java.lang.Exception
+----
+
+The logout methods for EJB components have the following signatures:
+
+[source,java]
+----
+public java.lang.Boolean logout()
+
+public java.lang.Boolean logout(boolean errors)
+    throws java.lang.Exception
+----
+
+All of these `logout` methods return `true` if logout succeeded, `false`
+if logout failed.
+
+If the errors flag is set to `true`, any exceptions encountered during
+the logout are propagated to the caller. If set to `false`, exceptions
+are thrown.
+
+[[beacq]][[GSDVG00124]][[user-authentication-for-single-sign-on]]
+
+=== User Authentication for Single Sign-on
+
+The single sign-on feature of the {productName} allows multiple web
+applications deployed to the same virtual server to share the user
+authentication state. With single sign-on enabled, users who log in to
+one web application become implicitly logged into other web applications
+on the same virtual server that require the same authentication
+information. Otherwise, users would have to log in separately to each
+web application whose protected resources they tried to access.
+
+A sample application using the single sign-on scenario could be a
+consolidated airline booking service that searches all airlines and
+provides links to different airline web sites. After the user signs on
+to the consolidated booking service, the user information can be used by
+each individual airline site without requiring another sign-on.
+
+Single sign-on operates according to the following rules:
+
+* Single sign-on applies to web applications configured for the same
+realm and virtual server. The realm is defined by the `realm-name`
+element in the `web.xml` file. For information about virtual servers,
+see "link:administration-guide/http_https.html#GSADG00017[Administering Internet Connectivity]" in {productName} Administration Guide.
+* As long as users access only unprotected resources in any of the web
+applications on a virtual server, they are not challenged to
+authenticate themselves.
+* As soon as a user accesses a protected resource in any web application
+associated with a virtual server, the user is challenged to authenticate
+himself or herself, using the login method defined for the web
+application currently being accessed.
+* After authentication, the roles associated with this user are used for
+access control decisions across all associated web applications, without
+challenging the user to authenticate to each application individually.
+* When the user logs out of one web application (for example, by
+invalidating the corresponding session), the user's sessions in all web
+applications are invalidated. Any subsequent attempt to access a
+protected resource in any application requires the user to authenticate
+again.
+
+The single sign-on feature utilizes HTTP cookies to transmit a token
+that associates each request with the saved user identity, so it can
+only be used in client environments that support cookies.
+
+To configure single sign-on, set the following virtual server
+properties:
+
+* `sso-enabled` - If `false`, single sign-on is disabled for this
+virtual server, and users must authenticate separately to every
+application on the virtual server. The default is `false`.
+* `sso-max-inactive-seconds` - Specifies the time after which a user's
+single sign-on record becomes eligible for purging if no client activity
+is received. Since single sign-on applies across several applications on
+the same virtual server, access to any of the applications keeps the
+single sign-on record active. The default value is 5 minutes (`300`
+seconds). Higher values provide longer single sign-on persistence for
+the users at the expense of more memory use on the server.
+* `sso-reap-interval-seconds` - Specifies the interval between purges of
+expired single sign-on records. The default value is `60`.
+
+Here are example `asadmin set` commands with default values:
+
+[source]
+----
+asadmin set server-config.http-service.virtual-server.vsrv1.property.sso-enabled="true"
+asadmin set server-config.http-service.virtual-server.vsrv1.property.sso-max-inactive-seconds="300"
+asadmin set server-config.http-service.virtual-server.vsrv1.property.sso-reap-interval-seconds="60"
+----
+
+For more information about the `asadmin set` command, see the
+link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+[[gizel]][[GSDVG00125]][[adding-authentication-mechanisms-to-the-servlet-container]]
+
+=== Adding Authentication Mechanisms to the Servlet Container
+
+You can use JSR 196 in the web tier to facilitate the injection of
+pluggable authentication modules within the servlet constraint
+processing engine. The {productName} includes implementations of a
+number of HTTP layer authentication mechanisms such as basic, form, and
+digest authentication. You can add alternative implementations of the
+included mechanisms or implementations of new mechanisms such as HTTP
+Negotiate/SPNEGO, OpenID, or CAS.
+
+The following topics are addressed here:
+
+* link:#BACCFGBF[The {productName} and JSR-375]
+* link:#gizfz[The {productName} and JSR 196]
+* link:#gizdx[Writing a Server Authentication Module]
+* link:#gizeb[Sample Server Authentication Module]
+* link:#gizfa[Compiling and Installing a Server Authentication Module]
+* link:#gizfe[Configuring a Server Authentication Module]
+* link:#gizfm[Binding a Server Authentication Module to Your
+Application]
+
+[[BACCFGBF]][[GSDVG564]][[the-glassfish-server-and-jsr-375]]
+
+==== The {productName} and JSR-375
+
+The {productName} implements JSR-375 to provide built-in support for
+BASIC, FORM and Custom FORM authentication mechanisms. JSR-375 also
+defines plug-in interfaces for authentication and identity stores, that
+is, the `HttpAuthenticationMechanism` interface and the `IdentityStore`
+interface, respectively. Though `HttpAuthenticationMechanism`
+implementations can authenticate users in any manner they choose, the
+`IdentityStore` interface provides a convenient mechanism. A significant
+advantage of using `HttpAuthenticationMechanism` and `IdentityStore`
+over the declarative mechanisms defined by the Servlet specification is
+that it allows an application to control the identity stores that it
+authenticates against, in a standard, portable way. You can use the
+built-in implementations of these APIs, or define custom
+implementations.
+
+Jakarta EE Security API defines several annotations, with names that end
+with Definition, which when used makes the corresponding built-in
+mechanism available as a CDI bean. Jakarta EE Security API also supports
+the use of Expression Language 3.0 in these annotations to allow dynamic
+configuration.
+
+[[GSDVG565]][[sthref9]]
+
+
+[[built-in-authentication-mechanisms]]
+===== Built-in Authentication Mechanisms
+
+An application packages its own `HttpAuthenticationMechanism` by
+including in a bean archive that is a part of the application.
+Alternatively, it may select and configure one of the container's
+built-in mechanisms using the corresponding annotation, as listed below:
+
+* `BasicAuthenticationMechanismDefintion`—implements BASIC
+authentication that conforms to the behavior of the servlet container
+when BASIC <auth-method> is declared in web.xml.
+* `CustomFormAuthenticationMechanismDefinition`—implements FORM
+authentication that conforms to the behavior of the servlet container
+when the FORM <auth-method> is declared in web.xml.
+* `FormAuthenticationMechanismDefinition`—implements a modified version
+of FORM authentication in which custom handling replaces the POST to
+j_security_check.
+
+In {productName}, all built-in authentication mechanisms need to be
+authenticated using an identity store. The `IdentityStore` interface,
+included in the Jakarta EE Security API, defines an SPI for interacting
+with identity stores, which are directories or databases containing user
+account information. The `IdentityStore` interface has four methods:
+`validate(Credential)`, `getCallerGroups(CredentialValidationResult)`,
+`validationTypes()` and `priority()`.Developers can provide their own
+implementation of this interface, or use one of the built-in Identity
+Stores. The `RememberMeIdentityStore` interface, which is a variation on
+the IdentityStore interface, can be used when an application wants to
+"remember" a user's authenticated session for an extended period, so
+that the caller can return to the application periodically without
+needing to present primary authentication credentials each time.
+
+There are two built-in implementations of `IdentityStore`: an LDAP
+identity store, and a Database identity store. The following snippet
+shows the usage of `DatabaseIdentityStoreDefinition`, which makes
+`DatabaseIdentityStore` available as CDI bean.
+
+[source,java]
+----
+@DatabaseIdentityStoreDefinition(
+    callerQuery = "#{'select password from caller where name = ?'}",
+    groupsQuery = "select group_name from caller_groups where caller_name = ?",
+    hashAlgorithm = Pbkdf2PasswordHash.class,
+    priorityExpression = "#{100}",
+    hashAlgorithmParameters = {
+        "Pbkdf2PasswordHash.Iterations=3072",
+        "${applicationConfig.dyna}"
+    }
+)
+----
+
+Since Jakarta EE Security API provides support for Expression Langauge 3.0,
+regular expressions can be used to set value of annotation attributes.
+
+The {productName} provides out of the box implementation of
+`Pbkdf2PasswordHash` that supports PBKDF2 password hashing. It is
+suggested that you use `Pbkdf2PasswordHash` for generating and
+validating passwords, unless there are specific requirements which
+cannot be met any other way.
+
+[[GSDVG566]][[sthref10]]
+
+
+[[custom-authentication-mechanism]]
+===== Custom Authentication Mechanism
+
+An application provider can choose to provide its own custom
+authentication mechanism, apart from built-in authentication mechanism.
+
+A custom authentication mechanism implements the
+`HttpAuthenticationMechanism` interface, introduced in Jakarta EE Security
+API. This interface defines the following three methods.
+
+[source,java]
+----
+AuthenticationStatus validateRequest(HttpServletRequest request,
+                                     HttpServletResponse response,
+                                     HttpMessageContext httpMessageContext
+                                    ) throws AuthenticationException;
+
+AuthenticationStatus secureResponse(HttpServletRequest request,
+                                    HttpServletResponse response,
+                                    HttpMessageContext httpMessageContext
+                                    ) throws AuthenticationException;
+
+void cleanSubject(HttpServletRequest request,
+                  HttpServletResponse response,
+                  HttpMessageContext   httpMessageContext);
+----
+
+`HttpAuthenticationMechanism` returns `AuthenticationStatus` to indicate
+the status of authentication request. Internally, it gets translated to
+corresponding JASPIC `AuthStatus` as shown below:
+
+* `AuthenticationStatus.NOT_DONE` to `AuthStatus.SUCCESS`
+* `AuthenticationStatus.SEND_CONTINUE` to `AuthStatus.SEND_CONTINUE`
+* `AuthenticationStatus.SUCCESS` to `AuthStatus.SUCCESS`
+* `AuthenticationStatus.SEND_FAILURE` to `AuthStatus.SEND_FAILURE`
+
+Each method of the `HttpAuthenticationMechanism` interface performs the
+same function as the corresponding `ServerAuth` methods. Unlike JASPIC,
+`HttpAuthenticationMechanism` is specified for the servlet container
+only. Only the `validateRequest()` must be implemented, for other two
+methods, default behaviors are specified.
+
+`validateRequest` allows a caller to authenticate. The request gets
+inspected inside `validateRequest` to read credential or any other
+information, or it can write to standard response with status of the
+authentication request or redirect the caller to an OAuth provider. Once
+the credential is validated, the result of the validation is
+communicated to the container using the `HttpMessageContext` parameter.
+
+[[GSDVG567]]
+
+Sample Http Authentication Mechanism
+
+The class `MyAuthenticationMechanism.java` is a sample
+`HttpAuthenticationMechanism` implementation. Note that only
+`validateRequest` method has been implemented, since Jakarta EE Security
+API provides default implementation of other two methods. An application
+provider may choose to override the default implementation depending on
+the requirement.
+
+[source,java]
+----
+import javax.enterprise.context.RequestScoped;
+import javax.inject.Inject;
+import javax.security.enterprise.AuthenticationException;
+import javax.security.enterprise.AuthenticationStatus;
+import javax.security.enterprise.authentication.mechanism.http.HttpAuthenticationMechanism;
+import javax.security.enterprise.authentication.mechanism.http.HttpMessageContext;
+import javax.security.enterprise.credential.UsernamePasswordCredential;
+import javax.security.enterprise.identitystore.CredentialValidationResult;
+import javax.security.enterprise.identitystore.IdentityStoreHandler;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import static javax.security.enterprise.identitystore.CredentialValidationResult.Status.VALID;
+
+@RequestScoped
+public class MyAuthenticationMechanism implements HttpAuthenticationMechanism {
+
+    @Inject
+    private IdentityStoreHandler identityStoreHandler;
+
+    @Override
+    public AuthenticationStatus validateRequest(HttpServletRequest request, HttpServletResponse response, HttpMessageContext httpMessageContext) throws AuthenticationException {
+
+          // Get the (caller) name and password from the request
+        // NOTE: This is for the smallest possible example only. In practice
+        // putting the password in a request query parameter is highly
+        // insecure and is discouraged.
+        String name = request.getParameter("name");
+        String password = request.getParameter("password");
+
+        if (name != null && password != null) {
+
+            // Delegate the {credentials in -> identity data out} function to
+            // the Identity Store
+            CredentialValidationResult result = identityStoreHandler.validate(
+                new UsernamePasswordCredential(name, password));
+
+            if (result.getStatus() == VALID) {
+                // Communicate the details of the authenticated user to the
+                // container.
+                response.addHeader("Authentication Mechanism", "MyAuthenticationMechanism");
+                return httpMessageContext.notifyContainerAboutLogin(
+                    result.getCallerPrincipal(), result.getCallerGroups());
+            } else {
+                return httpMessageContext.responseUnauthorized();
+            }
+        }
+
+        return httpMessageContext.doNothing();
+    }
+
+}
+----
+
+[[gizfz]][[GSDVG00381]][[the-glassfish-server-and-jsr-196]]
+
+==== The {productName} and JSR 196
+
+The {productName} implements the Servlet Container Profile of JSR
+196, Java Authentication Service Provider Interface for Containers. JSR
+196 defines a standard service provider interface (SPI) that extends the
+concepts of the Java Authentication and Authorization Service (JAAS) to
+enable pluggability of message authentication modules in message
+processing runtimes. The JSR 196 standard defines profiles that
+establish contracts for the use of the SPI in specific contexts. The
+Servlet Container Profile of JSR 196 defines the use of the SPI by a
+Servlet container such that:
+
+* The resulting container can be configured with new authentication
+mechanisms.
+* The container employs the configured mechanisms in its enforcement of
+the declarative servlet security model (declared in a `web.xml` file
+using `security-constraint` elements).
+
+The JSR 196 specification defines a simple message processing model
+composed of four interaction points:
+
+1. `secureRequest` on the client
+2. `validateRequest` on the server
+3. `secureResponse` on the server
+4. `validateResponse` on the client
+
+A message processing runtime uses the SPI at these interaction points to
+delegate the corresponding message security processing to authentication
+providers, also called authentication modules, integrated into the
+runtime by way of the SPI.
+
+A compatible server-side message processing runtime, such as the
+{productName} servlet container, supports the `validateRequest` and
+`secureResponse` interaction points of the message processing model. The
+servlet container uses the SPI at these interaction points to delegate
+the corresponding message security processing to a server authentication
+module (SAM), integrated by the SPI into the container.
+
+[[gizdx]][[GSDVG00382]][[writing-a-server-authentication-module]]
+
+==== Writing a Server Authentication Module
+
+A key step in adding an authentication mechanism to a compatible
+server-side message processing runtime such as the {productName}
+servlet container is acquiring a SAM that implements the desired
+authentication mechanism. One way to do that is to write the SAM
+yourself.
+
+A SAM implements the javax.security.auth.message.module.ServerAuthModule
+interface as defined by JSR 196. A SAM is invoked indirectly by the
+message processing runtime at the `validateRequest` and `secureResponse`
+interaction points. A SAM must implement the five methods of the
+ServerAuthModule interface:
+
+* `getSupportedMessageTypes` — An array of `Class` objects where each
+element defines a message type supported by the SAM. For a SAM to be
+compatible with the Servlet Container Profile, the returned array must
+include the `HttpServletRequest.class` and `HttpServletResponse.class`
+objects.
+* `initialize(MessagePolicy requestPolicy, MessagePolicy responsePolicy, CallbackHandler Map options)`
+— The container calls this method to provide the SAM with configuration
+values and with a `CallbackHandler`. The configuration values are
+returned in the policy arguments and in the options `Map`. The SAM uses
+`CallbackHandler` to access services, such as password validation,
+provided by the container.
+* `AuthStatus validateRequest(MessageInfo messageInfo, Subject clientSubject, Subject serviceSubject)`
+— The container calls this method to process each received
+`HttpServletRequest`. The request and its associated
+`HttpServletResponse` are passed by the container to the SAM in the
+`messageInfo` argument. The SAM processes the request and may establish
+the response to be returned by the container. The SAM uses the provided
+`Subject` arguments to convey its authentication results. The SAM
+returns different status values to control the container's invocation
+processing. The status values and the circumstances under which they are
+returned are as follows:
+
+** `AuthStatus.SUCCESS` is returned when the application request message
+is successfully validated. The container responds to this status value
+by using the returned client `Subject` to invoke the target of the
+request. When this value is returned, the SAM (provided a custom
+`AuthConfigProvider` is not being used) must use its `CallbackHandler`
+to handle a `CallerPrincipalCallback` using the `clientSubject` as an
+argument to the callback.
+
+** `AuthStatus.SEND_CONTINUE` indicates that message validation is
+incomplete and that the SAM has established a preliminary response as
+the response message in `messageInfo`. The container responds to this
+status value by sending the response to the client.
+
+** `AuthStatus.SEND_FAILURE` indicates that message validation failed
+and that the SAM has established an appropriate failure response message
+in `messageInfo`. The container responds to this status value by sending
+the response to the client.
+
+** `AuthStatus.SEND_SUCCESS` is not typically returned. This status
+value indicates the end of a multi-message security dialog originating
+after the service interaction and during the processing of the
+application response. The container responds to this status value by
+sending the response to the client.
++
+The `validateRequest` method may also throw an `AuthException` to
+indicate that the message processing by the SAM failed without
+establishing a failure response message in `messageInfo`.
+* `secureResponse(MessageInfo messageInfo, Subject serviceSubject)` —
+The container calls this method before sending a response, resulting
+from an application invocation, to the client. The response is passed to
+the SAM in the `messageInfo` argument. In most cases, this method should
+just return the `SEND_SUCCESS` status.
+* `cleanSubject(MessageInfo messageInfo, Subject subject)` — This method
+removes the mechanism-specific principals, credentials, or both from the
+subject. This method is not currently called by the container. A
+legitimate implementation could remove all the principals from the
+argument subject.
+
+See the Servlet Container Profile section in the JSR 196 specification
+for additional background and details.
+
+[[gizeb]][[GSDVG00383]][[sample-server-authentication-module]]
+
+==== Sample Server Authentication Module
+
+The class `MySam.java` is a sample SAM implementation. Notice that the
+sample implements the five methods of the ServerAuthModule interface.
+This SAM implements an approximation of HTTP basic authentication.
+
+[source,java]
+----
+package tip.sam;
+
+   import java.io.IOException;
+   import java.util.Map;
+   import javax.security.auth.Subject;
+   import javax.security.auth.callback.Callback;
+   import javax.security.auth.callback.CallbackHandler;
+   import javax.security.auth.callback.UnsupportedCallbackException;
+   import javax.security.auth.message.AuthException;
+   import javax.security.auth.message.AuthStatus;
+   import javax.security.auth.message.MessageInfo;
+   import javax.security.auth.message.MessagePolicy;
+   import javax.security.auth.message.callback.CallerPrincipalCallback;
+   import javax.security.auth.message.callback.GroupPrincipalCallback;
+   import javax.security.auth.message.callback.PasswordValidationCallback;
+   import javax.security.auth.message.module.ServerAuthModule;
+   import javax.servlet.http.HttpServletRequest;
+   import javax.servlet.http.HttpServletResponse;
+   import org.apache.catalina.util.Base64;
+
+   public class MySam implements ServerAuthModule {
+
+      protected static final Class[]
+        supportedMessageTypes = new Class[]{
+          HttpServletRequest.class,
+          HttpServletResponse.class
+      };
+
+      private MessagePolicy requestPolicy;
+      private MessagePolicy responsePolicy;
+      private CallbackHandler handler;
+      private Map options;
+      private String realmName = null;
+      private String defaultGroup[] = null;
+      privte static final String REALM_PROPERTY_NAME =
+          "realm.name";
+      private static final String GROUP_PROPERTY_NAME =
+          "group.name";
+      private static final String BASIC = "Basic";
+      static final String AUTHORIZATION_HEADER =
+          "authorization";
+      static final String AUTHENTICATION_HEADER =
+          "WWW-Authenticate";
+
+      public void initialize(MessagePolicy reqPolicy,
+              MessagePolicy resPolicy,
+              CallbackHandler cBH, Map opts)
+              throws AuthException {
+          requestPolicy = reqPolicy;
+          responsePolicy = resPolicy;
+          handler = cBH;
+          options = opts;
+          if (options != null) {
+              realmName = (String)
+                  options.get(REALM_PROPERTY_NAME);
+              if (options.containsKey(GROUP_PROPERTY_NAME)) {
+                  defaultGroup = new String[]{(String)
+                      options.get(GROUP_PROPERTY_NAME)};
+              }
+          }
+      }
+
+      public Class[] getSupportedMessageTypes() {
+          return supportedMessageTypes;
+      }
+
+      public AuthStatus validateRequest(
+              MessageInfo msgInfo, Subject client,
+              Subject server) throws AuthException {
+          try {
+
+              String username =
+                  processAuthorizationToken(msgInfo, client);
+              if (username ==
+                  null && requestPolicy.isMandatory()) {
+                  return sendAuthenticateChallenge(msgInfo);
+              }
+
+             setAuthenticationResult(
+                 username, client, msgInfo);
+             return AuthStatus.SUCCESS;
+
+          } catch (Exception e) {
+              AuthException ae = new AuthException();
+              ae.initCause(e);
+              throw ae;
+          }
+      }
+
+      private String processAuthorizationToken(
+              MessageInfo msgInfo, Subject s)
+              throws AuthException {
+
+          HttpServletRequest request =
+                  (HttpServletRequest)
+                  msgInfo.getRequestMessage();
+
+          String token =
+                  request.getHeader(AUTHORIZATION_HEADER);
+
+          if (token != null && token.startsWith(BASIC + " ")) {
+
+              token = token.substring(6).trim();
+
+              // Decode and parse the authorization token
+              String decoded =
+                  new String(Base64.decode(token.getBytes()));
+
+              int colon = decoded.indexOf(':');
+              if (colon <= 0 || colon == decoded.length() - 1) {
+                  return (null);
+              }
+
+              String username = decoded.substring(0, colon);
+
+             // use the callback to ask the container to
+             // validate the password
+            PasswordValidationCallback pVC =
+                    new PasswordValidationCallback(s, username,
+                    decoded.substring(colon + 1).toCharArray());
+            try {
+                handler.handle(new Callback[]{pVC});
+                pVC.clearPassword();
+            } catch (Exception e) {
+                AuthException ae = new AuthException();
+                ae.initCause(e);
+                throw ae;
+            }
+
+            if (pVC.getResult()) {
+                return username;
+            }
+      }
+      return null;
+   }
+
+   private AuthStatus sendAuthenticateChallenge(
+           MessageInfo msgInfo) {
+
+       String realm = realmName;
+         // if the realm property is set use it,
+         // otherwise use the name of the server
+         // as the realm name.
+         if (realm == null) {
+
+          HttpServletRequest request =
+                  (HttpServletRequest)
+                  msgInfo.getRequestMessage();
+
+          realm = request.getServerName();
+        }
+
+       HttpServletResponse response =
+               (HttpServletResponse)
+               msgInfo.getResponseMessage();
+
+       String header = BASIC + " realm=\"" + realm + "\"";
+       response.setHeader(AUTHENTICATION_HEADER, header);
+       response.setStatus(
+               HttpServletResponse.SC_UNAUTHORIZED);
+       return AuthStatus.SEND_CONTINUE;
+   }
+
+   public AuthStatus secureResponse(
+           MessageInfo msgInfo, Subject service)
+           throws AuthException {
+       return AuthStatus.SEND_SUCCESS;
+   }
+
+   public void cleanSubject(MessageInfo msgInfo,
+           Subject subject)
+           throws AuthException {
+      if (subject != null) {
+          subject.getPrincipals().clear();
+      }
+   }
+
+   private static final String AUTH_TYPE_INFO_KEY =
+           "javax.servlet.http.authType";
+
+   // distinguish the caller principal
+   // and assign default groups
+   private void setAuthenticationResult(String name,
+           Subject s, MessageInfo m)
+           throws IOException,
+           UnsupportedCallbackException {
+       handler.handle(new Callback[]{
+           new CallerPrincipalCallback(s, name)
+       });
+       if (name != null) {
+         // add the default group if the property is set
+           if (defaultGroup != null) {
+               handler.handle(new Callback[]{
+                   new GroupPrincipalCallback(s, defaultGroup)
+               });
+           }
+           m.getMap().put(AUTH_TYPE_INFO_KEY, ""MySAM");
+       }
+   }
+  }
+----
+
+Note that the `initialize` method looks for the `group.name` and
+`realm.name` properties. The `group.name` property configures the
+default group assigned as a result of any successful authentication. The
+`realm.name` property defines the realm value sent back to the browser
+in the `WWW-Authenticate` challenge.
+
+[[gizfa]][[GSDVG00384]][[compiling-and-installing-a-server-authentication-module]]
+
+==== Compiling and Installing a Server Authentication Module
+
+Before you can use the sample SAM, you need to compile, install, and
+configure it. Then you can bind it to an application.
+
+To compile the SAM, include the SPI in your classpath. When the
+{productName} is installed, the JAR file containing the SPI,
+`jmac-api.jar`, is installed in the as-install``/lib`` directory. After
+you compile the SAM, install it by copying a JAR file containing the
+compiled SAM to the as-install``/lib`` directory.
+
+[[gizfe]][[GSDVG00385]][[configuring-a-server-authentication-module]]
+
+==== Configuring a Server Authentication Module
+
+You can configure a SAM in one of these ways:
+
+* In the Administration Console, open the Security component under the
+relevant configuration and go to the Message Security page. Set the
+following options:
+
+** Authentication Layer — `HttpServlet`
+
+** Provider Type — `server` or `client-server`
+
+** Provider ID — Specify a unique name for the SAM, for example `MySAM`
+
+** Class Name — Specify the fully qualified class name, for example
+`tip.sam.MySam`
+
+** Additional Property — Name: `group-name` Value: `user`
+
+** Additional Property — Name: `realm-name` Value: `Sam`
++
+For details, click the Help button in the Administration Console.
+* Use the `asadmin create-message-security-provider` command to
+configure a SAM. Set the following options:
+
+** `--layer HttpServlet`
+
+** `--providertype server` or `--providertype client-server`
+
+** `--classname tip.sam.MySam`
+
+** `--property group-name=user:realm-name=Sam`
+
+** Provider name operand — Specify a unique name for the SAM, for
+example `MySAM`
++
+For details, see the link:reference-manual.html#GSRFM[{productName}
+Reference Manual].
+
+[[gizfm]][[GSDVG00386]][[binding-a-server-authentication-module-to-your-application]]
+
+==== Binding a Server Authentication Module to Your Application
+
+After you install and configure the SAM, you can bind it for use by the
+container on behalf of one or more of your applications. You have two
+options in how you bind the SAM, depending on whether you are willing to
+repackage and redeploy your application:
+
+* If you are willing to repackage and redeploy, you can bind the SAM
+using the `glassfish-web.xml` file. Set the value of the
+`httpservlet-security-provider` attribute of the `glassfish-web-app`
+element to the SAM's configured provider ID, for example, `MySAM`. For
+more information about the `glassfish-web.xml` file, see the
+link:application-deployment-guide.html#GSDPG[{productName} Application Deployment
+Guide]. This option leverages the native `AuthConfigProvider`
+implementation that ships with the {productName}.
+* Another approach is to develop your own `AuthConfigProvider` and
+register it with the {productName} `AuthConfigFactory` for use on
+behalf of your applications. For example, a simple `AuthConfigProvider`
+can obtain, through its initialization properties, the classname of a
+SAM to configure on behalf of the applications for which the provider is
+registered. You can find a description of the functionality of an
+`AuthConfigProvider` and of the registration facilities provided by an
+`AuthConfigFactory` in the JSR 196 specification.
+
+
diff --git a/docs/application-development-guide/src/main/asciidoc/setting-up-dev-env.adoc b/docs/application-development-guide/src/main/asciidoc/setting-up-dev-env.adoc
new file mode 100644
index 0000000..d9fdd8a
--- /dev/null
+++ b/docs/application-development-guide/src/main/asciidoc/setting-up-dev-env.adoc
@@ -0,0 +1,186 @@
+type=page
+status=published
+title=Setting Up a Development Environment
+next=class-loaders.html
+prev=part-tasks-and-tools.html
+~~~~~~
+
+= Setting Up a Development Environment
+
+[[GSDVG00002]][[beaaq]]
+
+
+[[setting-up-a-development-environment]]
+== 1 Setting Up a Development Environment
+
+This chapter gives guidelines for setting up an application development
+environment in the {productName}. Setting up an environment
+for creating, assembling, deploying, and debugging your code involves
+installing the mainstream version of the {productName} and making use
+of development tools. In addition, sample applications are available.
+
+The following topics are addressed here:
+
+* link:#beaar[Installing and Preparing the Server for Development]
+* link:#beaas[High Availability Features]
+* link:#beaat[Development Tools]
+* link:#beabf[Sample Applications]
+
+[[beaar]][[GSDVG00090]][[installing-and-preparing-the-server-for-development]]
+
+=== Installing and Preparing the Server for Development
+
+For more information about {productName} installation, see the
+link:installation-guide.html#GSING[
+{productName} Installation Guide].
+
+The following components are included in the full installation.
+
+* JDK
+* {productName} core
+
+** Java Platform, Standard Edition (Java SE) 11
+** Jakarta EE 10 compliant application server
+** Administration Console
+** `asadmin` utility
+** Other development and deployment tools
+** Open Message Queue software
+** Apache http://db.apache.org/derby/manuals[Derby database]
+** Load balancer plug-ins for web servers
+
+The NetBeans Integrated Development Environment (IDE) bundles the
+GlassFish edition of the {productName}, so information about this IDE
+is provided as well.
+
+After you have installed {productName}, you can further optimize the
+server for development in these ways:
+
+* Locate utility classes and libraries so they can be accessed by the
+proper class loaders. For more information, see
+link:class-loaders.html#beadj[Using the Common Class Loader].
+* Set up debugging. For more information, see
+link:debugging-apps.html#beafc[Debugging Applications].
+* Configure the Virtual Machine for the Java platform (JVM software).
+For more information, see "link:administration-guide/jvm.html#GSADG00007[
+Administering the Virtual Machine for the Java Platform]"
+in {productName} Administration Guide.
+
+[[beaas]][[GSDVG00091]][[high-availability-features]]
+
+=== High Availability Features
+
+High availability features such as load balancing and session failover
+are discussed in detail in the link:ha-administration-guide.html#GSHAG[{productName} High Availability Administration Guide]. This book describes the
+following features in the following sections:
+
+* For information about HTTP session persistence, see
+link:webapps.html#beahe[Distributed Sessions and Persistence].
+* For information about checkpointing of the stateful session bean
+state, see link:ejb.html#beaib[Stateful Session Bean Failover].
+* For information about failover and load balancing for Java clients,
+see link:java-clients.html#beakt[Developing Java Clients].
+* For information about load balancing for message-driven beans, see
+link:jms.html#beaop[Load-Balanced Message Inflow].
+
+[[beaat]][[GSDVG00092]][[development-tools]]
+
+=== Development Tools
+
+The following general tools are provided with the {productName}:
+
+* link:#beaau[The `asadmin` Command]
+* link:#beaav[The Administration Console]
+
+The following development tools are provided with the {productName}
+or downloadable from Oracle:
+
+* link:#beaba[The Migration Tool]
+* link:#beaaw[The NetBeans IDE]
+
+The following third-party tools might also be useful:
+
+* link:#beabb[Debugging Tools]
+* link:#beabc[Profiling Tools]
+
+[[beaau]][[GSDVG00333]][[the-asadmin-command]]
+
+==== The `asadmin` Command
+
+The `asadmin` command allows you to configure a local or remote server
+and perform both administrative and development tasks at the command
+line. For general information about `asadmin`, see the
+link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+The `asadmin` command is located in the as-install``/bin`` directory. Type
+`asadmin help` for a list of subcommands.
+
+[[beaav]][[GSDVG00334]][[the-administration-console]]
+
+==== The Administration Console
+
+The Administration Console lets you configure the server and perform
+both administrative and development tasks using a web browser. For
+general information about the Administration Console, click the Help
+button in the Administration Console. This displays the {productName}
+online help.
+
+To access the Administration Console, type `http://`host`:4848` in your
+browser. The host is the name of the machine on which the {productName} is running. By default, the host is `localhost`. For example:
+
+[source]
+----
+http://localhost:4848
+----
+
+[[beaba]][[GSDVG00337]][[the-migration-tool]]
+
+==== The Migration Tool
+
+The Migration Tool converts and reassembles Jakarta EE applications and
+modules developed on other application servers. This tool also generates
+a report listing how many files are successfully and unsuccessfully
+migrated, with reasons for migration failure. For more information and
+to download the Migration Tool, see
+`http://java.sun.com/j2ee/tools/migration/index.html`.
+
+[[beaaw]][[GSDVG00338]][[the-netbeans-ide]]
+
+==== The NetBeans IDE
+
+The NetBeans IDE allows you to create, assemble, and debug code from a
+single, easy-to-use interface. The GlassFish edition of the {productName} is bundled with the NetBeans 6.1 IDE. To download the NetBeans
+IDE, see `http://www.netbeans.org`. This site also provides
+documentation on how to use the NetBeans IDE with the bundled GlassFish
+edition of the {productName}.
+
+You can also use the {productName} with the Java Studio Enterprise
+software, which is built on the NetBeans IDE. For more information, see
+`http://developers.sun.com/jsenterprise/`.
+
+[[beabb]][[GSDVG00340]][[debugging-tools]]
+
+==== Debugging Tools
+
+You can use several debugging tools with the {productName}. For more
+information, see link:debugging-apps.html#beafc[Debugging Applications].
+
+[[beabc]][[GSDVG00341]][[profiling-tools]]
+
+==== Profiling Tools
+
+You can use several profilers with the {productName}. For more
+information, see link:debugging-apps.html#beafn[Profiling Tools].
+
+[[beabf]][[GSDVG00093]][[sample-applications]]
+
+=== Sample Applications
+
+The samples are available from `https://github.com/eclipse-ee4j/glassfish-samples`.
+
+Most {productName} samples have the following directory structure:
+
+* The `docs` directory contains instructions for how to use the sample.
+* The `pom.xml` file defines Maven targets for the sample.
+* The `src/` directory contains source code for the sample.
+
+
diff --git a/docs/application-development-guide/src/main/asciidoc/title.adoc b/docs/application-development-guide/src/main/asciidoc/title.adoc
new file mode 100644
index 0000000..f7531c6
--- /dev/null
+++ b/docs/application-development-guide/src/main/asciidoc/title.adoc
@@ -0,0 +1,52 @@
+type=page
+status=published
+title={productName} Application Development Guide, Release 7
+next=preface.html
+prev=lot.html
+~~~~~~
+
+= {productName} Application Development Guide, Release 7
+
+[[eclipse-glassfish-server]]
+== {productName}
+
+Application Development Guide
+
+Release 7
+
+Contributed 2018 - 2022
+
+This Application Development Guide describes how to create and run Java
+Platform, Enterprise Edition (Jakarta EE platform) applications that follow
+the open Java standards model for Jakarta EE components and APIs in the
+{productName} environment. Topics include
+developer tools, security, and debugging. This book is intended for use
+by software developers who create, assemble, and deploy Jakarta EE
+applications using Oracle servers and software.
+
+[[sthref1]]
+
+'''''
+
+{productName} Application Development Guide,
+Release 7
+
+Copyright © 2013, 2019 Oracle and/or its affiliates. All rights reserved.
+
+This program and the accompanying materials are made available under the
+terms of the Eclipse Public License v. 2.0, which is available at
+http://www.eclipse.org/legal/epl-2.0.
+
+SPDX-License-Identifier: EPL-2.0
+
+Oracle and Java are registered trademarks of Oracle and/or its
+affiliates. Other names may be trademarks of their respective owners.
+
+Intel and Intel Xeon are trademarks or registered trademarks of Intel
+Corporation. All SPARC trademarks are used under license and are
+trademarks or registered trademarks of SPARC International, Inc. AMD,
+Opteron, the AMD logo, and the AMD Opteron logo are trademarks or
+registered trademarks of Advanced Micro Devices. UNIX is a registered
+trademark of The Open Group.
+
+image:img/eclipse_foundation_logo_tiny.png["Eclipse Logo"]
diff --git a/docs/application-development-guide/src/main/asciidoc/transaction-service.adoc b/docs/application-development-guide/src/main/asciidoc/transaction-service.adoc
new file mode 100644
index 0000000..65b4762
--- /dev/null
+++ b/docs/application-development-guide/src/main/asciidoc/transaction-service.adoc
@@ -0,0 +1,395 @@
+type=page
+status=published
+title=Using the Transaction Service
+next=jndi.html
+prev=jdbc.html
+~~~~~~
+
+= Using the Transaction Service
+
+[[GSDVG00018]][[beanm]]
+
+
+[[using-the-transaction-service]]
+== 15 Using the Transaction Service
+
+The Jakarta EE platform provides several abstractions that simplify
+development of dependable transaction processing for applications. This
+chapter discusses Jakarta EE transactions and transaction support in the
+{productName}.
+
+The following topics are addressed here:
+
+* link:#giybi[Handling Transactions with Databases]
+* link:#beaje[Handling Transactions with Enterprise Beans]
+* link:#gknrh[Handling Transactions with the Java Message Service]
+* link:#gaxit[The Transaction Manager, the Transaction Synchronization
+Registry, and `UserTransaction`]
+
+For more information about the Java Transaction API (JTA) and Java
+Transaction Service (JTS), see "link:administration-guide/transactions.html#GSADG00022[Administering
+Transactions]" in {productName} Administration
+Guide and the following sites:
+`http://www.oracle.com/technetwork/java/javaee/jta/index.html` and
+`http://www.oracle.com/technetwork/java/javaee/tech/index.html`.
+
+You might also want to read
+"https://eclipse-ee4j.github.io/jakartaee-tutorial/#transactions[Transactions]"
+in The Jakarta EE Tutorial.
+
+[[giybi]][[GSDVG00188]][[handling-transactions-with-databases]]
+
+=== Handling Transactions with Databases
+
+The following topics are addressed here:
+
+* link:#beamv[Using JDBC Transaction Isolation Levels]
+* link:#beamu[Using Non-Transactional Connections]
+
+[[beamv]][[GSDVG00511]][[using-jdbc-transaction-isolation-levels]]
+
+==== Using JDBC Transaction Isolation Levels
+
+Not all database vendors support all transaction isolation levels
+available in the JDBC API. The {productName} permits specifying any
+isolation level your database supports. The following table defines
+transaction isolation levels.
+
+[[GSDVG559]][[sthref27]][[fvyoi]]
+
+
+Table 15-1 Transaction Isolation Levels
+
+[width="100%",cols="27%,28%,45%",options="header",]
+|===
+|Transaction Isolation Level |`getTransactionIsolation` Return Value
+|Description
+|`read-uncommitted` |`1` |Dirty reads, non-repeatable reads, and phantom
+reads can occur.
+
+|`read-committed` |`2` |Dirty reads are prevented; non-repeatable reads
+and phantom reads can occur.
+
+|`repeatable-read` |`4` |Dirty reads and non-repeatable reads are
+prevented; phantom reads can occur.
+
+|`serializable` |`8` |Dirty reads, non-repeatable reads and phantom
+reads are prevented.
+|===
+
+
+By default, the transaction isolation level is undefined (empty), and
+the JDBC driver's default isolation level is used. You can specify the
+transaction isolation level in the following ways:
+
+* Select the value from the Transaction Isolation drop-down list on the
+New JDBC Connection Pool or Edit Connection Pool page in the
+Administration Console. For more information, click the Help button in
+the Administration Console.
+* Specify the `--isolationlevel` option in the
+`asadmin create-jdbc-connection-pool` command. For more information, see
+the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+* Specify the `transaction-isolation-level` option in the `asadmin set`
+command. For example:
++
+[source]
+----
+asadmin set domain1.resources.jdbc-connection-pool.DerbyPool.transaction-isolation-level=serializable
+----
+For more information, see the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+Note that you cannot call `setTransactionIsolation` during a
+transaction.
+
+You can set the default transaction isolation level for a JDBC
+connection pool. For details, see "link:administration-guide/jdbc.html#GSADG00420[To Create a JDBC
+Connection Pool]" in {productName} Administration
+Guide.
+
+To verify that a level is supported by your database management system,
+test your database programmatically using the
+`supportsTransactionIsolationLevel` method in
+`java.sql.DatabaseMetaData`, as shown in the following example:
+
+[source,java]
+----
+InitialContext ctx = new InitialContext();
+DataSource ds = (DataSource)
+ctx.lookup("jdbc/MyBase");
+Connection con = ds.getConnection();
+DatabaseMetaData dbmd = con.getMetaData();
+if (dbmd.supportsTransactionIsolationLevel(TRANSACTION_SERIALIZABLE)
+{ Connection.setTransactionIsolation(TRANSACTION_SERIALIZABLE); }
+----
+
+For more information about these isolation levels and what they mean,
+see the JDBC API specification.
+
+Setting or resetting the transaction isolation level for every
+`getConnection` call can degrade performance. So by default the
+isolation level is not guaranteed.
+
+Applications that change the transaction isolation level on a pooled
+connection programmatically risk polluting the JDBC connection pool,
+which can lead to errors. If an application changes the isolation level,
+enabling the `is-isolation-level-guaranteed` setting in the pool can
+minimize such errors.
+
+You can guarantee the transaction isolation level in the following ways:
+
+* Check the Isolation Level Guaranteed box on the New JDBC Connection
+Pool or Edit Connection Pool page in the Administration Console. For
+more information, click the Help button in the Administration Console.
+* Specify the `--isisolationguaranteed` option in the
+`asadmin create-jdbc-connection-pool` command. For more information, see
+the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+* Specify the `is-isolation-level-guaranteed` option in the
+`asadmin set` command. For example:
++
+[source]
+----
+asadmin set domain1.resources.jdbc-connection-pool.DerbyPool.is-isolation-level-guaranteed=true
+----
+For more information, see the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+[[beamu]][[GSDVG00512]][[using-non-transactional-connections]]
+
+==== Using Non-Transactional Connections
+
+You can specify a non-transactional database connection in any of these
+ways:
+
+* Check the Non-Transactional Connections box on the New JDBC Connection
+Pool or Edit Connection Pool page in the Administration Console. The
+default is unchecked. For more information, click the Help button in the
+Administration Console.
+* Specify the `--nontransactionalconnections` option in the
+`asadmin create-jdbc-connection-pool` command. For more information, see
+the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+* Specify the `non-transactional-connections` option in the
+`asadmin set` command. For example:
++
+[source]
+----
+asadmin set domain1.resources.jdbc-connection-pool.DerbyPool.non-transactional-connections=true
+----
+For more information, see the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+* Use the `DataSource` implementation in the {productName}, which
+provides a `getNonTxConnection` method. This method retrieves a JDBC
+connection that is not in the scope of any transaction. There are two
+variants.
++
+[source,java]
+----
+public java.sql.Connection getNonTxConnection() throws java.sql.SQLException
+
+public java.sql.Connection getNonTxConnection(String user, String password)
+   throws java.sql.SQLException
+----
+* Create a resource with the JNDI name ending in `__nontx`. This forces
+all connections looked up using this resource to be non transactional.
+
+Typically, a connection is enlisted in the context of the transaction in
+which a `getConnection` call is invoked. However, a non-transactional
+connection is not enlisted in a transaction context even if a
+transaction is in progress.
+
+The main advantage of using non-transactional connections is that the
+overhead incurred in enlisting and delisting connections in transaction
+contexts is avoided. However, use such connections carefully. For
+example, if a non-transactional connection is used to query the database
+while a transaction is in progress that modifies the database, the query
+retrieves the unmodified data in the database. This is because the
+in-progress transaction hasn't committed. For another example, if a
+non-transactional connection modifies the database and a transaction
+that is running simultaneously rolls back, the changes made by the
+non-transactional connection are not rolled back.
+
+Here is a typical use case for a non-transactional connection: a
+component that is updating a database in a transaction context spanning
+over several iterations of a loop can refresh cached data by using a
+non-transactional connection to read data before the transaction
+commits.
+
+[[beaje]][[GSDVG00189]][[handling-transactions-with-enterprise-beans]]
+
+=== Handling Transactions with Enterprise Beans
+
+This section describes the transaction support built into the Enterprise
+JavaBeans programming model for the {productName}.
+
+As a developer, you can write an application that updates data in
+multiple databases distributed across multiple sites. The site might use
+EJB servers from different vendors.
+
+The following topics are addressed here:
+
+* link:#beajf[Flat Transactions]
+* link:#beajg[Global and Local Transactions]
+* link:#beajh[Commit Options]
+* link:#beaht[Bean-Level Container-Managed Transaction Timeouts]
+
+[[beajf]][[GSDVG00513]][[flat-transactions]]
+
+==== Flat Transactions
+
+The Enterprise JavaBeans Specification, v3.0 requires support for flat
+(as opposed to nested) transactions. In a flat transaction, each
+transaction is decoupled from and independent of other transactions in
+the system. Another transaction cannot start in the same thread until
+the current transaction ends.
+
+Flat transactions are the most prevalent model and are supported by most
+commercial database systems. Although nested transactions offer a finer
+granularity of control over transactions, they are supported by far
+fewer commercial database systems.
+
+[[beajg]][[GSDVG00514]][[global-and-local-transactions]]
+
+==== Global and Local Transactions
+
+Both local and global transactions are demarcated using the
+javax.transaction.UserTransaction interface, which the client must use.
+Local transactions bypass the XA commit protocol and are faster. For
+more information, see link:#gaxit[The Transaction Manager, the
+Transaction Synchronization Registry, and `UserTransaction`].
+
+[[beajh]][[GSDVG00515]][[commit-options]]
+
+==== Commit Options
+
+The EJB protocol is designed to give the container the flexibility to
+select the disposition of the instance state at the time a transaction
+is committed. This allows the container to best manage caching an entity
+object's state and associating an entity object identity with the EJB
+instances.
+
+There are three commit-time options:
+
+* Option A - The container caches a ready instance between transactions.
+The container ensures that the instance has exclusive access to the
+state of the object in persistent storage.
++
+In this case, the container does not have to synchronize the instance's
+state from the persistent storage at the beginning of the next
+transaction.
++
+
+[NOTE]
+====
+Commit option A is not supported for this {productName} release.
+====
+
+* Option B - The container caches a ready instance between transactions,
+but the container does not ensure that the instance has exclusive access
+to the state of the object in persistent storage. This is the default.
++
+In this case, the container must synchronize the instance's state by
+invoking `ejbLoad` from persistent storage at the beginning of the next
+transaction.
+* Option C - The container does not cache a ready instance between
+transactions, but instead returns the instance to the pool of available
+instances after a transaction has completed.
++
+The life cycle for every business method invocation under commit option
+C looks like this.
++
+[source]
+----
+ejbActivate   ejbLoad   business method   ejbStore   ejbPassivate
+----
+If there is more than one transactional client concurrently accessing
+the same entity, the first client gets the ready instance and subsequent
+concurrent clients get new instances from the pool.
+
+The `glassfish-ejb-jar.xml` deployment descriptor has an element,
+`commit-option`, that specifies the commit option to be used. Based on
+the specified commit option, the appropriate handler is instantiated.
+
+[[beaht]][[GSDVG00516]][[bean-level-container-managed-transaction-timeouts]]
+
+==== Bean-Level Container-Managed Transaction Timeouts
+
+The transaction timeout for the domain is specified using the
+Transaction Timeout setting of the Transaction Service. A transaction
+started by the container must commit (or rollback) within this time,
+regardless of whether the transaction is suspended (and resumed), or the
+transaction is marked for rollback. The default value, `0`, specifies
+that the server waits indefinitely for a transaction to complete.
+
+To override this timeout for an individual bean, use the optional
+`cmt-timeout-in-seconds` element in `glassfish-ejb-jar.xml`. The default
+value, `0`, specifies that the Transaction Service timeout is used. The
+value of `cmt-timeout-in-seconds` is used for all methods in the bean
+that start a new container-managed transaction. This value is not used
+if the bean joins a client transaction.
+
+[[gknrh]][[GSDVG00190]][[handling-transactions-with-the-java-message-service]]
+
+=== Handling Transactions with the Java Message Service
+
+The following topics are addressed here:
+
+* link:#beaoq[Transactions and Non-Persistent Messages]
+* link:#gdyya[Using the ConfigurableTransactionSupport Interface]
+
+[[beaoq]][[GSDVG00517]][[transactions-and-non-persistent-messages]]
+
+==== Transactions and Non-Persistent Messages
+
+During transaction recovery, non-persistent messages might be lost. If
+the broker fails between the transaction manager's prepare and commit
+operations, any non-persistent message in the transaction is lost and
+cannot be delivered. A message that is not saved to a persistent store
+is not available for transaction recovery.
+
+[[gdyya]][[GSDVG00518]][[using-the-configurabletransactionsupport-interface]]
+
+==== Using the ConfigurableTransactionSupport Interface
+
+The Jakarta EE Connector 1.6 specification allows a resource adapter to use
+the `transaction-support` attribute to specify the level of transaction
+support that the resource adapter handles. However, the resource adapter
+vendor does not have a mechanism to figure out the current transactional
+context in which a `ManagedConnectionFactory` is used.
+
+If a `ManagedConnectionFactory` implements an optional interface called
+com.sun.appserv.connectors.spi.ConfigurableTransactionSupport , the
+{productName} notifies the `ManagedConnectionFactory` of the
+`transaction-support` configured for the connector connection pool when
+the `ManagedConnectionFactory` instance is created for the pool.
+Connections obtained from the pool can then be used with a transaction
+level at or lower than the configured value. For example, a connection
+obtained from a pool that is set to `XA_TRANSACTION` could be used as a
+LOCAL resource in a last-agent-optimized transaction or in a
+non-transactional context.
+
+[[gaxit]][[GSDVG00191]][[the-transaction-manager-the-transaction-synchronization-registry-and-usertransaction]]
+
+=== The Transaction Manager, the Transaction Synchronization Registry, and `UserTransaction`
+
+To access a `UserTransaction` instance, you can either look it up using
+the `java:comp/``UserTransaction` JNDI name or inject it using the
+`@Resource` annotation.
+
+Accessing a `DataSource` using the `Synchronization.beforeCompletion()`
+method requires setting Allow Non Component Callers to `true`. The
+default is `false`. For more information about non-component callers,
+see link:jdbc.html#gavro[Allowing Non-Component Callers].
+
+If possible, you should use the
+javax.transaction.TransactionSynchronizationRegistry interface instead
+of javax.transaction.TransactionManager , for portability. You can look
+up the implementation of this interface by using the JNDI name
+`java:comp/``TransactionSynchronizationRegistry`. For details, see the
+https://jakarta.ee/specifications/transactions/2.0/apidocs/jakarta/transaction/transactionsynchronizationregistry[`TransactionSynchronizationRegistryInterface`]
+API documentation and
+http://www.jcp.org/en/jsr/detail?id=907[Java Specification Request (JSR) 907]
+
+If accessing the javax.transaction.TransactionManager implementation is
+absolutely necessary, you can look up the {productName}
+implementation of this interface using the JNDI name
+java:appserver/TransactionManager . This lookup should not be used by
+the application code.
+
+
diff --git a/docs/application-development-guide/src/main/asciidoc/webapps.adoc b/docs/application-development-guide/src/main/asciidoc/webapps.adoc
new file mode 100644
index 0000000..8d37e9d
--- /dev/null
+++ b/docs/application-development-guide/src/main/asciidoc/webapps.adoc
@@ -0,0 +1,2126 @@
+type=page
+status=published
+title=Developing Web Applications
+next=ejb.html
+prev=jpa.html
+~~~~~~
+
+= Developing Web Applications
+
+[[GSDVG00009]][[beafs]]
+
+
+[[developing-web-applications]]
+== 7 Developing Web Applications
+
+This chapter describes how web applications are supported in the {productName}.
+
+The following topics are addressed here:
+
+* link:#beagj[Using Servlets]
+* link:#beagu[Using JavaServer Pages]
+* link:#beaha[Creating and Managing Sessions]
+* link:#ggrgt[Using Comet]
+* link:#beaft[Advanced Web Application Features]
+
+For general information about web applications, see
+"https://eclipse-ee4j.github.io/jakartaee-tutorial/#getting-started-with-web-applications[
+The Web Tier]" in The Jakarta EE Tutorial.
+
+
+[NOTE]
+====
+The Web Profile of the {productName} supports the EJB 3.1 Lite
+specification, which allows enterprise beans within web applications,
+among other features. The full {productName} supports the entire EJB
+3.1 specification. For details, see
+http://jcp.org/en/jsr/detail?id=318[JSR 318]
+(`http://jcp.org/en/jsr/detail?id=318`).
+====
+
+
+[[beagj]][[GSDVG00140]][[using-servlets]]
+
+=== Using Servlets
+
+{productName} supports the Java Servlet Specification version 4.0.
+
+
+[NOTE]
+====
+Servlet API version 4.0 is fully backward compatible with versions 3.0,
+2.3, 2.4, and 2.5, so all existing servlets should work without
+modification or recompilation.
+====
+
+
+To develop servlets, use the Java Servlet API. For information about
+using the Java Servlet API, see the documentation at
+`http://www.oracle.com/technetwork/java/javaee/servlet/index.html`.
+
+The {productName} provides the `wscompile` and `wsdeploy` tools to
+help you implement a web service endpoint as a servlet. For more
+information about these tools, see the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+This section describes how to create effective servlets to control
+application interactions running on a {productName}, including
+standard-based servlets. In addition, this section describes the
+{productName} features to use to augment the standards.
+
+The following topics are addressed here:
+
+* link:#beagm[Caching Servlet Results]
+* link:#beagr[About the Servlet Engine]
+
+[[beagm]][[GSDVG00397]][[caching-servlet-results]]
+
+==== Caching Servlet Results
+
+The {productName} can cache the results of invoking a servlet, a JSP,
+or any URL pattern to make subsequent invocations of the same servlet,
+JSP, or URL pattern faster. The {productName} caches the request
+results for a specific amount of time. In this way, if another data call
+occurs, the {productName} can return the cached data instead of
+performing the operation again. For example, if your servlet returns a
+stock quote that updates every 5 minutes, you set the cache to expire
+after 300 seconds.
+
+Whether to cache results and how to cache them depends on the data
+involved. For example, it makes no sense to cache the results of a quiz
+submission, because the input to the servlet is different each time.
+However, it makes sense to cache a high level report showing demographic
+data taken from quiz results that is updated once an hour.
+
+To define how a {productName} web application handles response
+caching, you edit specific fields in the `glassfish-web.xml` file.
+
+
+[NOTE]
+====
+A servlet that uses caching is not portable.
+====
+
+
+For Javadoc tool pages relevant to caching servlet results, see the
+`com.sun.appserv.web.cache` package.
+
+For information about JSP caching, see link:#beagw[JSP Caching].
+
+The following topics are addressed here:
+
+* link:#beagn[Caching Features]
+* link:#beago[Default Cache Configuration]
+* link:#beagp[Caching Example]
+* link:#beagq[The CacheKeyGenerator Interface]
+
+[[beagn]][[GSDVG00251]][[caching-features]]
+
+===== Caching Features
+
+The {productName} has the following web application response caching
+capabilities:
+
+* Caching is configurable based on the servlet name or the URI.
+* When caching is based on the URI, this includes user specified
+parameters in the query string. For example, a response from
+`/garden/catalog?category=roses` is different from a response from
+`/garden/catalog?category=lilies`. These responses are stored under
+different keys in the cache.
+* Cache size, entry timeout, and other caching behaviors are
+configurable.
+* Entry timeout is measured from the time an entry is created or
+refreshed. To override this timeout for an individual cache mapping,
+specify the `cache-mapping` subelement `timeout`.
+* To determine caching criteria programmatically, write a class that
+implements the com.sun.appserv.web.cache.CacheHelper interface. For
+example, if only a servlet knows when a back end data source was last
+modified, you can write a helper class to retrieve the last modified
+timestamp from the data source and decide whether to cache the response
+based on that timestamp.
+* To determine cache key generation programmatically, write a class that
+implements the com.sun.appserv.web.cache.CacheKeyGenerator interface.
+See link:#beagq[The CacheKeyGenerator Interface].
+* All non-ASCII request parameter values specified in cache key elements
+must be URL encoded. The caching subsystem attempts to match the raw
+parameter values in the request query string.
+* Since newly updated classes impact what gets cached, the web container
+clears the cache during dynamic deployment or reloading of classes.
+* The following `HttpServletRequest` request attributes are exposed.
+
+** `com.sun.appserv.web.cachedServletName`, the cached servlet target
+
+** `com.sun.appserv.web.cachedURLPattern`, the URL pattern being cached
+* Results produced by resources that are the target of a
+`RequestDispatcher.include()` or `RequestDispatcher.forward()` call are
+cached if caching has been enabled for those resources. For details, see
+"link:application-deployment-guide/dd-elements.html#GSDPG00101[cache-mapping]" in {productName} Application Deployment Guide and "link:../application-deployment-guide/dd-elements.html#GSDPG00140[dispatcher]"
+in {productName} Application Deployment Guide.
+These are elements in the `glassfish-web.xml` file.
+
+[[beago]][[GSDVG00252]][[default-cache-configuration]]
+
+===== Default Cache Configuration
+
+If you enable caching but do not provide any special configuration for a
+servlet or JSP, the default cache configuration is as follows:
+
+* The default cache timeout is 30 seconds.
+* Only the HTTP GET method is eligible for caching.
+* HTTP requests with cookies or sessions automatically disable caching.
+* No special consideration is given to `Pragma:`, `Cache-control:`, or
+`Vary:` headers.
+* The default key consists of the Servlet Path (minus `pathInfo` and the
+query string).
+* A "least recently used" list is maintained to evict cache entries if
+the maximum cache size is exceeded.
+* Key generation concatenates the servlet path with key field values, if
+any are specified.
+* Results produced by resources that are the target of a
+`RequestDispatcher.include()` or `RequestDispatcher.forward()` call are
+never cached.
+
+[[beagp]][[GSDVG00253]][[caching-example]]
+
+===== Caching Example
+
+Here is an example cache element in the `glassfish-web.xml` file:
+
+[source,xml]
+----
+<cache max-capacity="8192" timeout="60">
+<cache-helper name="myHelper" class-name="MyCacheHelper"/>
+<cache-mapping>
+    <servlet-name>myservlet</servlet-name>
+    <timeout name="timefield">120</timeout>
+    <http-method>GET</http-method>
+    <http-method>POST</http-method>
+</cache-mapping>
+<cache-mapping>
+    <url-pattern> /catalog/* </url-pattern>
+    <!-- cache the best selling category; cache the responses to
+       -- this resource only when the given parameters exist. Cache
+       -- only when the catalog parameter has 'lilies' or 'roses'
+       -- but no other catalog varieties:
+      -- /orchard/catalog?best&category='lilies'
+      -- /orchard/catalog?best&category='roses'
+      -- but not the result of
+       -- /orchard/catalog?best&category='wild'
+    -->
+    <constraint-field name='best' scope='request.parameter'/>
+    <constraint-field name='category' scope='request.parameter'>
+        <value> roses </value>
+        <value> lilies </value>
+    </constraint-field>
+     <!-- Specify that a particular field is of given range but the
+       -- field doesn't need to be present in all the requests -->
+    <constraint-field name='SKUnum' scope='request.parameter'>
+        <value match-expr='in-range'> 1000 - 2000 </value>
+    </constraint-field>
+    <!-- cache when the category matches with any value other than
+       -- a specific value -->
+    <constraint-field name="category" scope="request.parameter>
+        <value match-expr="equals" cache-on-match-failure="true">
+       bogus
+        </value>
+    </constraint-field>
+</cache-mapping>
+<cache-mapping>
+    <servlet-name> InfoServlet </servlet-name>
+    <cache-helper-ref>myHelper</cache-helper-ref>
+</cache-mapping>
+</cache>
+----
+
+For more information about the `glassfish-web.xml` caching settings, see
+"link:application-deployment-guide/dd-elements.html#GSDPG00097[cache]" in {productName}
+Application Deployment Guide.
+
+[[beagq]][[GSDVG00254]][[the-cachekeygenerator-interface]]
+
+===== The CacheKeyGenerator Interface
+
+The built-in default CacheHelper implementation allows web applications
+to customize the key generation. An application component (in a servlet
+or JSP) can set up a custom CacheKeyGenerator implementation as an
+attribute in the `ServletContext`.
+
+The name of the context attribute is configurable as the `value` of the
+`cacheKeyGeneratorAttrName` property in the `default-helper` element of
+the `glassfish-web.xml` deployment descriptor. For more information, see
+"link:application-deployment-guide/dd-elements.html#GSDPG00136[default-helper]" in {productName} Application Deployment Guide.
+
+[[beagr]][[GSDVG00398]][[about-the-servlet-engine]]
+
+==== About the Servlet Engine
+
+Servlets exist in and are managed by the servlet engine in the {productName}. The servlet engine is an internal object that handles all
+servlet meta functions. These functions include instantiation,
+initialization, destruction, access from other components, and
+configuration management.
+
+The following topics are addressed here:
+
+* link:#beags[Instantiating and Removing Servlets]
+* link:#beagt[Request Handling]
+
+[[beags]][[GSDVG00255]][[instantiating-and-removing-servlets]]
+
+===== Instantiating and Removing Servlets
+
+After the servlet engine instantiates the servlet, the servlet engine
+calls the servlet's `init` method to perform any necessary
+initialization. You can override this method to perform an
+initialization function for the servlet's life, such as initializing a
+counter.
+
+When a servlet is removed from service, the servlet engine calls the
+`destroy` method in the servlet so that the servlet can perform any
+final tasks and deallocate resources. You can override this method to
+write log messages or clean up any lingering connections that won't be
+caught in garbage collection.
+
+[[beagt]][[GSDVG00256]][[request-handling]]
+
+===== Request Handling
+
+When a request is made, the {productName} hands the incoming data to
+the servlet engine. The servlet engine processes the request's input
+data, such as form data, cookies, session information, and URL
+name-value pairs, into an `HttpServletRequest` request object type.
+
+The servlet engine also creates an `HttpServletResponse` response object
+type. The engine then passes both as parameters to the servlet's
+`service` method.
+
+In an HTTP servlet, the default `service` method routes requests to
+another method based on the HTTP transfer method: `POST`, `GET`,
+`DELETE`, `HEAD`, `OPTIONS`, `PUT`, or `TRACE`. For example, HTTP `POST`
+requests are sent to the `doPost` method, HTTP `GET` requests are sent
+to the `doGet` method, and so on. This enables the servlet to process
+request data differently, depending on which transfer method is used.
+Since the routing takes place in the service method, you generally do
+not override `service` in an HTTP servlet. Instead, override `doGet`,
+`doPost`, and so on, depending on the request type you expect.
+
+To perform the tasks to answer a request, override the `service` method
+for generic servlets, and the `doGet` or `doPost` methods for HTTP
+servlets. Very often, this means accessing EJB components to perform
+business transactions, then collating the information in the request
+object or in a JDBC `ResultSet` object.
+
+[[beagu]][[GSDVG00141]][[using-javaserver-pages]]
+
+=== Using JavaServer Pages
+
+The {productName} supports the following JSP features:
+
+* JavaServer Pages (JSP) Specification
+* Precompilation of JSP files, which is especially useful for production
+servers
+* JSP tag libraries and standard portable tags
+
+For information about creating JSP files, see the JavaServer Pages web
+site at `http://www.oracle.com/technetwork/java/javaee/jsp/index.html`.
+
+For information about Java Beans, see the JavaBeans web page at
+`http://www.oracle.com/technetwork/java/javase/tech/index-jsp-138795.html`.
+
+This section describes how to use JavaServer Pages (JSP files) as page
+templates in a {productName} web application.
+
+The following topics are addressed here:
+
+* link:#beagv[JSP Tag Libraries and Standard Portable Tags]
+* link:#beagw[JSP Caching]
+* link:#beagz[Options for Compiling JSP Files]
+
+[[beagv]][[GSDVG00399]][[jsp-tag-libraries-and-standard-portable-tags]]
+
+==== JSP Tag Libraries and Standard Portable Tags
+
+{productName} supports tag libraries and standard portable tags. For
+more information, see the JavaServer Pages Standard Tag Library (JSTL)
+page at `http://www.oracle.com/technetwork/java/index-jsp-135995.html`.
+
+Web applications don't need to bundle copies of the `jsf-impl.jar` or
+`appserv-jstl.jar` JSP tag libraries (in as-install``/lib``) to use
+JavaServer Faces technology or JSTL, respectively. These tag libraries
+are automatically available to all web applications.
+
+However, the as-install``/lib/jspcachtags.jar`` tag library for JSP
+caching is not automatically available to web applications. See
+link:#beagw[JSP Caching], next.
+
+[[beagw]][[GSDVG00400]][[jsp-caching]]
+
+==== JSP Caching
+
+JSP caching lets you cache tag invocation results within the Java
+engine. Each can be cached using different cache criteria. For example,
+suppose you have invocations to view stock quotes, weather information,
+and so on. The stock quote result can be cached for 10 minutes, the
+weather report result for 30 minutes, and so on.
+
+The following topics are addressed here:
+
+* link:#gaxbq[Enabling JSP Caching]
+* link:#gaxcr[Caching Scope]
+* link:#beagx[The `cache` Tag]
+* link:#beagy[The `flush` Tag]
+
+For more information about response caching as it pertains to servlets,
+see link:#beagm[Caching Servlet Results].
+
+[[gaxbq]][[GSDVG00257]][[enabling-jsp-caching]]
+
+===== Enabling JSP Caching
+
+To globally enable JSP caching, set the `jspCachingEnabled` property to
+`true`. The default is `false`. For example:
+
+[source]
+----
+asadmin set server-config.web-container.property.jspCachingEnabled="true"
+----
+
+For more information about the `asadmin set` command, see the
+link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+To enable JSP caching for a single web application, follow these steps:
+
+1. Extract the `META-INF/jspcachtags.tld` file from the
+as-install``/modules/web-glue.jar`` file.
+2. Create a new JAR file (for example, `jspcachtags.jar`) containing
+just the `META-INF/jspcachtags.tld` file previously extracted.
+3. Bundle this new JAR file in the `WEB-INF/lib` directory of your web
+application.
+
+
+[NOTE]
+====
+Web applications that use JSP caching without bundling the tag library
+are not portable.
+====
+
+
+Refer to {productName} tags in JSP files as follows:
+
+[source,xml]
+----
+<%@ taglib prefix="prefix" uri="http://glassfish.org/taglibs/cache" %>
+----
+
+Subsequently, the cache tags are available as `<`prefix`:cache>` and
+`<`prefix`:flush>`. For example, if your prefix is `mypfx`, the cache
+tags are available as `<mypfx:cache>` and `<mypfx:flush>`.
+
+[[gaxcr]][[GSDVG00258]][[caching-scope]]
+
+===== Caching Scope
+
+JSP caching is available in three different scopes: `request`,
+`session`, and `application`. The default is `application`. To use a
+cache in `request` scope, a web application must specify the
+`com.sun.appserv.web.taglibs.cache.CacheRequestListener` in its
+`web.xml` deployment descriptor, as follows:
+
+[source,xml]
+----
+<listener>
+   <listener-class>
+      com.sun.appserv.web.taglibs.cache.CacheRequestListener
+   </listener-class>
+</listener>
+----
+
+Likewise, for a web application to utilize a cache in `session` scope,
+it must specify the
+`com.sun.appserv.web.taglibs.cache.CacheSessionListener` in its
+`web.xml` deployment descriptor, as follows:
+
+[source,xml]
+----
+<listener>
+   <listener-class>
+      com.sun.appserv.web.taglibs.cache.CacheSessionListener
+   </listener-class>
+</listener>
+----
+
+To utilize a cache in `application` scope, a web application need not
+specify any listener. The
+`com.sun.appserv.web.taglibs.cache.CacheContextListener` is already
+specified in the `jspcachtags.tld` file.
+
+[[beagx]][[GSDVG00259]][[the-cache-tag]]
+
+===== The `cache` Tag
+
+The cache tag caches the body between the beginning and ending tags
+according to the attributes specified. The first time the tag is
+encountered, the body content is executed and cached. Each subsequent
+time it is run, the cached content is checked to see if it needs to be
+refreshed and if so, it is executed again, and the cached data is
+refreshed. Otherwise, the cached data is served.
+
+[[fvyfx]][[GSDVG00023]][[attributes-of-cache]]
+
+Attributes of `cache`
+
+The following table describes attributes for the `cache` tag.
+
+[[GSDVG541]][[sthref13]][[fvygg]]
+
+
+Table 7-1 The `cache` Attributes
+
+[width="100%",cols="10%,16%,74%",options="header",]
+|===
+|Attribute |Default |Description
+|`key` |ServletPath`_`Suffix |(optional) The name used by the container
+to access the cached entry. The cache key is suffixed to the servlet
+path to generate a key to access the cached entry. If no key is
+specified, a number is generated according to the position of the tag in
+the page.
+
+|`timeout` |`60s` |(optional) The time in seconds after which the body
+of the tag is executed and the cache is refreshed. By default, this
+value is interpreted in seconds. To specify a different unit of time,
+add a suffix to the timeout value as follows: `s` for seconds, `m` for
+minutes, `h` for hours, `d` for days. For example, `2h` specifies two
+hours.
+
+|`nocache` |`false` |(optional) If set to `true`, the body content is
+executed and served as if there were no `cache` tag. This offers a way
+to programmatically decide whether the cached response is sent or
+whether the body has to be executed, though the response is not cached.
+
+|`refresh` |`false` |(optional) If set to `true`, the body content is
+executed and the response is cached again. This lets you
+programmatically refresh the cache immediately regardless of the
+`timeout` setting.
+
+|`scope` |`application` |(optional) The scope of the cache. Can be
+`request`, `session`, or `application`. See link:#gaxcr[Caching Scope].
+|===
+
+
+[[fvyeh]][[GSDVG00024]][[example-of-cache]]
+
+Example of `cache`
+
+The following example represents a cached JSP file:
+
+[source,xml]
+----
+<%@ taglib prefix="mypfx" uri="http://glassfish.org/taglibs/cache" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<mypfx:cache                 key="${sessionScope.loginId}"
+            nocache="${param.nocache}"
+            refresh="${param.refresh}"
+            timeout="10m">
+<c:choose>
+    <c:when test="${param.page == 'frontPage'}">
+        <%-- get headlines from database --%>
+    </c:when>
+    <c:otherwise>
+        ...
+    </c:otherwise>
+</c:choose>
+</mypfx:cache>
+<mypfx:cache timeout="1h">
+<h2> Local News </h2>
+    <%-- get the headline news and cache them --%>
+</mypfx:cache>
+----
+
+[[beagy]][[GSDVG00260]][[the-flush-tag]]
+
+===== The `flush` Tag
+
+Forces the cache to be flushed. If a `key` is specified, only the entry
+with that key is flushed. If no key is specified, the entire cache is
+flushed.
+
+[[fvykp]][[GSDVG00025]][[attributes-of-flush]]
+
+Attributes of `flush`
+
+The following table describes attributes for the `flush` tag.
+
+[[GSDVG542]][[sthref14]][[fvyep]]
+
+
+Table 7-2 The `flush` Attributes
+
+[width="100%",cols="11%,20%,69%",options="header",]
+|===
+|Attribute |Default |Description
+|`key` |ServletPath`_`Suffix |(optional) The name used by the container
+to access the cached entry. The cache key is suffixed to the servlet
+path to generate a key to access the cached entry. If no key is
+specified, a number is generated according to the position of the tag in
+the page.
+
+|`scope` |`application` |(optional) The scope of the cache. Can be
+`request`, `session`, or `application`. See link:#gaxcr[Caching Scope].
+|===
+
+
+[[fvyle]][[GSDVG00026]][[examples-of-flush]]
+
+Examples of `flush`
+
+To flush the entry with `key="foobar"`:
+
+[source,xml]
+----
+<mypfx:flush key="foobar"/>
+----
+
+To flush the entire cache:
+
+[source,xml]
+----
+<c:if test="${empty sessionScope.clearCache}">
+   <mypfx:flush />
+</c:if>
+----
+
+[[beagz]][[GSDVG00401]][[options-for-compiling-jsp-files]]
+
+==== Options for Compiling JSP Files
+
+{productName} provides the following ways of compiling JSP source
+files into servlets:
+
+* JSP files are automatically compiled at runtime.
+* The `asadmin deploy` command has a `--precompilejsp` option. For
+details, see the link:reference-manual.html#GSRFM[{productName}
+Reference Manual].
+* The `jspc` command line tool allows you to precompile JSP files at the
+command line. For details, see the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+[[beaha]][[GSDVG00142]][[creating-and-managing-sessions]]
+
+=== Creating and Managing Sessions
+
+This section describes how to create and manage HTTP sessions that
+allows users and transaction information to persist between
+interactions.
+
+The following topics are addressed here:
+
+* link:#beahb[Configuring Sessions]
+* link:#beahf[Session Managers]
+
+[[beahb]][[GSDVG00402]][[configuring-sessions]]
+
+==== Configuring Sessions
+
+The following topics are addressed here:
+
+* link:#beahc[HTTP Sessions, Cookies, and URL Rewriting]
+* link:#beahd[Coordinating Session Access]
+* link:#ghmih[Saving Sessions During Redeployment]
+* link:#gixeb[Logging Session Attributes]
+* link:#beahe[Distributed Sessions and Persistence]
+
+[[beahc]][[GSDVG00261]][[http-sessions-cookies-and-url-rewriting]]
+
+===== HTTP Sessions, Cookies, and URL Rewriting
+
+To configure whether and how HTTP sessions use cookies and URL
+rewriting, edit the `session-properties` and `cookie-properties`
+elements in the `glassfish-web.xml` file for an individual web
+application. For more about the properties you can configure, see
+"link:application-deployment-guide/dd-elements.html#GSDPG00276[session-properties]" in {productName} Application Deployment Guide and
+"link:application-deployment-guide/dd-elements.html#GSDPG00130[cookie-properties]" in {productName} Application Deployment Guide.
+
+For information about configuring default session properties for the
+entire web container, see link:#beagc[Using the `default-web.xml` File]
+and the link:ha-administration-guide.html#GSHAG[{productName} High
+Availability Administration Guide].
+
+[[beahd]][[GSDVG00262]][[coordinating-session-access]]
+
+===== Coordinating Session Access
+
+Make sure that multiple threads don't simultaneously modify the same
+session object in conflicting ways. If the persistence type is
+`replicated` (see link:#gdshu[The `replicated` Persistence Type]), the
+following message in the log file indicates that this might be
+happening:
+
+[source]
+----
+Primary Key Constraint violation while saving session session_id
+----
+
+This is especially likely to occur in web applications that use HTML
+frames where multiple servlets are executing simultaneously on behalf of
+the same client. A good solution is to ensure that one of the servlets
+modifies the session and the others have read-only access.
+
+[[ghmih]][[GSDVG00263]][[saving-sessions-during-redeployment]]
+
+===== Saving Sessions During Redeployment
+
+Whenever a redeployment is done, the sessions at that transit time
+become invalid unless you use the `--keepstate=true` option of the
+`asadmin redeploy` command. For example:
+
+[source]
+----
+asadmin redeploy --keepstate=true --name hello.war
+----
+
+For details, see the link:reference-manual.html#GSRFM[{productName}
+Reference Manual].
+
+The default for `--keepstate` is false. This option is supported only on
+the default server instance, named `server`. It is not supported and
+ignored for any other target.
+
+For web applications, this feature is applicable only if in the
+`glassfish-web-app.xml` file the `persistence-type` attribute of the
+`session-manager` element is `file`.
+
+If any active web session fails to be preserved or restored, none of the
+sessions will be available when the redeployment is complete. However,
+the redeployment continues and a warning is logged.
+
+The new class loader of the redeployed application is used to
+deserialize any sessions previously saved. The usual restrictions about
+serialization and deserialization apply. For example, any
+application-specific class referenced by a session attribute may evolve
+only in a backward-compatible fashion. For more information about class
+loaders, see link:class-loaders.html#beade[Class Loaders].
+
+[[gixeb]][[GSDVG00264]][[logging-session-attributes]]
+
+===== Logging Session Attributes
+
+You can write session attribute values to an access log. The access log
+format token ``%session.``name``%`` logs one of the following:
+
+* The value of the session attribute with the name name
+* ``NULL-SESSION-ATTRIBUTE-``name if the named attribute does not exist in the session
+* `NULL-SESSION` if no session exists
+
+For more information about access logging and format tokens, see online
+help for the Access Log tab of the HTTP Service page in the
+Administration Console.
+
+[[beahe]][[GSDVG00265]][[distributed-sessions-and-persistence]]
+
+===== Distributed Sessions and Persistence
+
+A distributed HTTP session can run in multiple {productName}
+instances, provided the following criteria are met:
+
+* Each server instance has the same distributable web application
+deployed to it. The `web-app` element of the `web.xml` deployment
+descriptor file must have the `distributable` subelement specified.
+* The web application uses high-availability session persistence. If a
+non-distributable web application is configured to use high-availability
+session persistence, a warning is written to the server log, and the
+session persistence type reverts to `memory`. See link:#gdshu[The
+`replicated` Persistence Type].
+* All objects bound into a distributed session must be of the types
+listed in link:#fvyem[Table 7-3].
+* The web application must be deployed using the `deploy` or `deploydir`
+command with the `--availabilityenabled` option set to `true`. See the
+link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+
+[NOTE]
+====
+Contrary to the Servlet 5.0 specification, {productName} does not
+throw an `IllegalArgumentException` if an object type not supported for
+failover is bound into a distributed session.
+
+Keep the distributed session size as small as possible. Session size has
+a direct impact on overall system throughput.
+====
+
+
+In the event of an instance or hardware failure, another server instance
+can take over a distributed session, with the following limitations:
+
+* If a distributable web application references a Jakarta EE component or
+resource, the reference might be lost. See link:#fvyem[Table 7-3] for a
+list of the types of references that `HTTPSession` failover supports.
+* References to open files or network connections are lost.
+
+For information about how to work around these limitations, see the
+link:deployment-planning-guide.html#GSPLG[{productName} Deployment Planning
+Guide].
+
+In the following table, No indicates that failover for the object type
+might not work in all cases and that no failover support is provided.
+However, failover might work in some cases for that object type. For
+example, failover might work because the class implementing that type is
+serializable.
+
+For more information about the `InitialContext`, see
+link:jndi.html#beans[Accessing the Naming Context]. For more information
+about transaction recovery, see link:transaction-service.html#beanm[Using
+the Transaction Service]. For more information about Administered
+Objects, see "link:administration-guide/jms.html#GSADG00599[Administering JMS Physical Destinations]"
+in {productName} Administration Guide.
+
+[[GSDVG543]][[sthref15]][[fvyem]]
+
+
+Table 7-3 Object Types Supported for Jakarta EE Web Application Session
+State Failover
+
+[width="100%",cols="45%,55%",options="header",]
+|===
+|Java Object Type |Failover Support
+|Colocated or distributed stateless session, stateful session, or entity
+bean reference |Yes
+
+|JNDI context |Yes, `InitialContext` and `java:comp/env`
+
+|UserTransaction |Yes, but if the instance that fails is never
+restarted, any prepared global transactions are lost and might not be
+correctly rolled back or committed.
+
+|JDBC DataSource |No
+
+|Java Message Service (JMS) ConnectionFactory, Destination |No
+
+|JavaMail Session |No
+
+|Connection Factory |No
+
+|Administered Object |No
+
+|Web service reference |No
+
+|Serializable Java types |Yes
+
+|Extended persistence context |No
+|===
+
+
+[[beahf]][[GSDVG00403]][[session-managers]]
+
+==== Session Managers
+
+A session manager automatically creates new session objects whenever a
+new session starts. In some circumstances, clients do not join the
+session, for example, if the session manager uses cookies and the client
+does not accept cookies.
+
+{productName} offers these session management options, determined by
+the `session-manager` element's `persistence-type` attribute in the
+`glassfish-web.xml` file:
+
+* link:#beahg[The `memory` Persistence Type], the default
+* link:#beahh[The `file` Persistence Type], which uses a file to store
+session data
+* link:#gdshu[The `replicated` Persistence Type], which uses other
+servers in the cluster for session persistence
+
+
+[NOTE]
+====
+If the session manager configuration contains an error, the error is
+written to the server log and the default (`memory`) configuration is
+used.
+====
+
+
+For more information, see "link:application-deployment-guide/dd-elements.html#GSDPG00275[session-manager]" in
+{productName} Application Deployment Guide.
+
+[[beahg]][[GSDVG00266]][[the-memory-persistence-type]]
+
+===== The `memory` Persistence Type
+
+This persistence type is not designed for a production environment that
+requires session persistence. It provides no session persistence.
+However, you can configure it so that the session state in memory is
+written to the file system prior to server shutdown.
+
+To specify the `memory` persistence type for a specific web application,
+edit the `glassfish-web.xml` file as in the following example. The
+`persistence-type` attribute is optional, but must be set to `memory` if
+included. This overrides the web container availability settings for the
+web application.
+
+[source,xml]
+----
+<glassfish-web-app>
+...
+
+<session-config>
+    <session-manager persistence-type="memory" />
+        <manager-properties>
+            <property name="sessionFilename" value="sessionstate" />
+        </manager-properties>
+    </session-manager>
+    ...
+</session-config>
+...
+</glassfish-web-app>
+----
+
+The only manager property that the `memory` persistence type supports is
+`sessionFilename`, which is listed under
+"link:application-deployment-guide/dd-elements.html#GSDPG00192[manager-properties]" in {productName} Application Deployment Guide. The `sessionFilename` property
+specifies the name of the file where sessions are serialized and
+persisted if the web application or the server is stopped. To disable
+this behavior, specify an empty string as the value of
+`sessionFilename`. The default value is an empty string.
+
+For more information about the `glassfish-web.xml` file, see the
+link:application-deployment-guide.html#GSDPG[{productName} Application Deployment
+Guide].
+
+[[beahh]][[GSDVG00267]][[the-file-persistence-type]]
+
+===== The `file` Persistence Type
+
+This persistence type provides session persistence to the local file
+system, and allows a single server domain to recover the session state
+after a failure and restart. The session state is persisted in the
+background, and the rate at which this occurs is configurable. The store
+also provides passivation and activation of the session state to help
+control the amount of memory used. This option is not supported in a
+production environment. However, it is useful for a development system
+with a single server instance.
+
+
+[NOTE]
+====
+Make sure the `delete` option is set in the `server.policy` file, or
+expired file-based sessions might not be deleted properly. For more
+information about `server.policy`, see link:securing-apps.html#beabx[The
+`server.policy` File].
+====
+
+
+To specify the `file` persistence type for a specific web application,
+edit the `glassfish-web.xml` file as in the following example. Note that
+`persistence-type` must be set to `file`. This overrides the web
+container availability settings for the web application.
+
+[source,xml]
+----
+<glassfish-web-app>
+...
+<session-config>
+    <session-manager persistence-type="file">
+        <store-properties>
+            <property name="directory" value="sessiondir" />
+        </store-properties>
+    </session-manager>
+    ...
+</session-config>
+...
+</glassfish-web-app>
+----
+
+The `file` persistence type supports all the manager properties listed
+under "link:application-deployment-guide/dd-elements.html#GSDPG00192[manager-properties]" in {productName} Application Deployment Guide except `sessionFilename`,
+and supports the `directory` store property listed under
+"link:application-deployment-guide/dd-elements.html#GSDPG00279[store-properties]" in {productName} Application Deployment Guide.
+
+For more information about the `glassfish-web.xml` file, see the
+link:application-deployment-guide.html#GSDPG[{productName} Application Deployment
+Guide].
+
+[[gdshu]][[GSDVG00268]][[the-replicated-persistence-type]]
+
+===== The `replicated` Persistence Type
+
+The replicated persistence type uses other servers in the cluster for
+session persistence. Clustered server instances replicate session state.
+Each backup instance stores the replicated data in memory. This allows
+sessions to be distributed. For details, see link:#beahe[Distributed
+Sessions and Persistence]. In addition, you can configure the frequency
+and scope of session persistence. The other servers are also used as the
+passivation and activation store. Use this option in a production
+environment that requires session persistence.
+
+To use the replicated persistence type, you must enable availability.
+Select the Availability Service component under the relevant
+configuration in the Administration Console. Check the Availability
+Service box. To enable availability for the web container, select the
+Web Container Availability tab, then check the Availability Service box.
+All instances in an {productName} cluster should have the same
+availability settings to ensure consistent behavior. For details, see
+the link:ha-administration-guide.html#GSHAG[{productName} High Availability
+Administration Guide].
+
+To change settings such as persistence frequency and persistence scope
+for the entire web container, use the Persistence Frequency and
+Persistence Scope drop-down lists on the Web Container Availability tab
+in the Administration Console, or use the `asadmin set` command. For
+example:
+
+[source]
+----
+asadmin set
+server-config.availability-service.web-container-availability.persistence-frequency=time-based
+----
+
+For more information, see the description of the `asadmin set` command
+in the link:reference-manual.html#GSRFM[{productName} Reference
+Manual].
+
+To specify the `replicated` persistence type for a specific web
+application, edit the `glassfish-web.xml` file as in the following
+example. Note that `persistence-type` must be set to `replicated`. This
+overrides the web container availability settings for the web
+application.
+
+[source,xml]
+----
+<glassfish-web-app>
+...
+<session-config>
+    <session-manager persistence-type="replicated">
+        <manager-properties>
+            <property name="persistenceFrequency" value="web-method" />
+        </manager-properties>
+        <store-properties>
+            <property name="persistenceScope" value="session" />
+        </store-properties>
+    </session-manager>
+    ...
+</session-config>
+...
+</glassfish-web-app>
+----
+
+The `replicated` persistence type supports all the manager properties
+listed under "link:application-deployment-guide/dd-elements.html#GSDPG00192[manager-properties]" in {productName} Application Deployment Guide except
+`sessionFilename`, and supports the `persistenceScope` store property
+listed under "link:application-deployment-guide/dd-elements.html#GSDPG00279[store-properties]" in {productName} Application Deployment Guide.
+
+For more information about the `glassfish-web.xml` file, see the
+link:application-deployment-guide.html#GSDPG[{productName} Application Deployment
+Guide].
+
+To specify that web sessions for which high availability is enabled are
+first buffered and then replicated using a separate asynchronous thread,
+use the `--asyncreplication=true` option of the `asadmin deploy`
+command. For example:
+
+[source]
+----
+asadmin deploy --availabilityenabled=true --asyncreplication=true --name hello.war
+----
+
+If `--asyncreplication` is set to true (the default), performance is
+improved but availability is reduced. If the instance where states are
+buffered but not yet replicated fails, the states are lost. If set to
+false, performance is reduced but availability is guaranteed. States are
+not buffered but immediately transmitted to other instances in the
+cluster.
+
+[[ggrgt]][[GSDVG00143]][[using-comet]]
+
+=== Using Comet
+
+This section explains the Comet programming technique and how to create
+and deploy a Comet-enabled application with the {productName}.
+
+The following topics are addressed here:
+
+* link:#ggrgy[Introduction to Comet]
+* link:#ghgxk[Grizzly Comet]
+* link:#ghgxn[Bayeux Protocol]
+
+[[ggrgy]][[GSDVG00404]][[introduction-to-comet]]
+
+==== Introduction to Comet
+
+Comet is a programming technique that allows a web server to send
+updates to clients without requiring the clients to explicitly request
+them.
+
+This kind of programming technique is called server push, which means
+that the server pushes data to the client. The opposite style is client
+pull, which means that the client must pull the data from the server,
+usually through a user-initiated event, such as a button click.
+
+Web applications that use the Comet technique can deliver updates to
+clients in a more timely manner than those that use the client-pull
+style while avoiding the latency that results from clients frequently
+polling the server.
+
+One of the many use cases for Comet is a chat room application. When the
+server receives a message from one of the chat clients, it needs to send
+the message to the other clients without requiring them to ask for it.
+With Comet, the server can deliver messages to the clients as they are
+posted rather than expecting the clients to poll the server for new
+messages.
+
+To accomplish this scenario, a Comet application establishes a
+long-lived HTTP connection. This connection is suspended on the server
+side, waiting for an event to happen before resuming. This kind of
+connection remains open, allowing an application that uses the Comet
+technique to send updates to clients when they are available rather than
+expecting clients to reopen the connection to poll the server for
+updates.
+
+[[ggrib]][[GSDVG00270]][[the-grizzly-implementation-of-comet]]
+
+===== The Grizzly Implementation of Comet
+
+A limitation of the Comet technique is that you must use it with a web
+server that supports non-blocking connections to avoid poor performance.
+Non-blocking connections are those that do not need to allocate one
+thread for each request. If the web server were to use blocking
+connections then it might end up holding many thousands of threads,
+thereby hindering its scalability.
+
+The {productName} includes the Grizzly HTTP Engine, which enables
+asynchronous request processing (ARP) by avoiding blocking connections.
+Grizzly's ARP implementation accomplishes this by using the Java NIO
+API.
+
+With Java NIO, Grizzly enables greater performance and scalability by
+avoiding the limitations experienced by traditional web servers that
+must run a thread for each request. Instead, Grizzly's ARP mechanism
+makes efficient use of a thread pool system and also keeps the state of
+requests so that it can keep requests alive without holding a single
+thread for each of them.
+
+Grizzly supports two different implementations of Comet:
+
+* link:#ghgxk[Grizzly Comet] — Based on ARP, this includes a set of APIs
+that you use from a web component to enable Comet functionality in your
+web application. Grizzly Comet is specific to the {productName}.
+* link:#ghgxn[Bayeux Protocol] — Often referred to as `Cometd`, it
+consists of the JSON-based Bayeux message protocol, a set of Dojo or
+Ajax libraries, and an event handler. The Bayeux protocol uses a
+publish/subscribe model for server/client communication. The Bayeux
+protocol is portable, but it is container dependent if you want to
+invoke it from an Enterprise Java Beans (EJB ) component. The Grizzly
+implementation of `Cometd` consists of a servlet that you reference from
+your web application.
+
+[[ggrim]][[GSDVG00271]][[client-technologies-to-use-with-comet]]
+
+===== Client Technologies to Use With Comet
+
+In addition to creating a web component that uses the Comet APIs, you
+need to enable your client to accept asynchronous updates from the web
+component. To accomplish this, you can use JavaScript, IFrames, or a
+framework, such as http://dojotoolkit.org[Dojo]
+(`http://dojotoolkit.org`).
+
+An IFrame is an HTML element that allows you to include other content in
+an HTML page. As a result, the client can embed updated content in the
+IFrame without having to reload the page.
+
+The example in this tutorial employs a combination of JavaScript and
+IFrames to allow the client to accept asynchronous updates. A servlet
+included in the example writes out JavaScript code to one of the
+IFrames. The JavaScript code contains the updated content and invokes a
+function in the page that updates the appropriate elements in the page
+with the new content.
+
+The next section explains the two kinds of connections that you can make
+to the server. While you can use any of the client technologies listed
+in this section with either kind of connection, it is more difficult to
+use JavaScript with an HTTP-streaming connection.
+
+[[ggrgo]][[GSDVG00272]][[types-of-comet-connections]]
+
+===== Types of Comet Connections
+
+When working with Comet, as implemented in Grizzly, you have two
+different ways to handle client connections to the server:
+
+* HTTP Streaming
+* Long Polling
+
+[[ggriu]][[GSDVG00027]][[http-streaming]]
+
+HTTP Streaming
+
+The HTTP Streaming technique keeps a connection open indefinitely. It
+never closes, even after the server pushes data to the client.
+
+In the case of HTTP streaming, the application sends a single request
+and receives responses as they come, reusing the same connection
+forever. This technique significantly reduces the network latency
+because the client and the server don't need to open and close the
+connection.
+
+The basic life cycle of an application using HTTP-streaming is:
+
+request > suspend > data available > write response > data available >
+write response
+
+The client makes an initial request and then suspends the request,
+meaning that it waits for a response. Whenever data is available, the
+server writes it to the response.
+
+[[ggrhv]][[GSDVG00028]][[long-polling]]
+
+Long Polling
+
+The long-polling technique is a combination of server-push and
+client-pull because the client needs to resume the connection after a
+certain amount of time or after the server pushes an update to the
+client.
+
+The basic life cycle of an application using long-polling is:
+
+request > suspend > data available > write response > resume
+
+The client makes an initial request and then suspends the request. When
+an update is available, the server writes it to the response. The
+connection closes, and the client optionally resumes the connection.
+
+[[ggtjb]][[GSDVG00029]][[how-to-choose-the-type-of-connection]]
+
+How to Choose the Type of Connection
+
+If you anticipate that your web application will need to send frequent
+updates to the client, you should use the HTTP-streaming connection so
+that the client does not have to frequently reestablish a connection. If
+you anticipate less frequent updates, you should use the long-polling
+connection so that the web server does not need to keep a connection
+open when no updates are occurring. One caveat to using the
+HTTP-streaming connection is that if you are streaming through a proxy,
+the proxy can buffer the response from the server. So, be sure to test
+your application if you plan to use HTTP-streaming behind a proxy.
+
+[[ghgxk]][[GSDVG00405]][[grizzly-comet]]
+
+==== Grizzly Comet
+
+For details on using Grizzly Comet including a sample application, refer
+to the https://eclipse-ee4j.github.io/grizzly/comet.html[Grizzly Comet documentation].
+
+Grizzly's support for Comet includes a small set of APIs that make it
+easy to add Comet functionality to your web applications. The Grizzly
+Comet APIs that developers use most often are the following:
+
+* `CometContext`: A Comet context, which is a shareable space to which
+applications subscribe to receive updates.
+* `CometEngine`: The entry point to any component using Comet.
+Components can be servlets, JavaServer Pages ( JSP), JavaServer Faces
+components, or pure Java classes.
+* `CometEvent`: Contains the state of the `CometContext` object
+* `CometHandler`: The interface an application implements to be part of
+one or more Comet contexts.
+
+The way a developer would use this API in a web component is to perform
+the following tasks:
+
+1. Register the context path of the application with the `CometContext`
+object:
++
+[source,java]
+----
+CometEngine cometEngine = CometEngine.getEngine();
+CometContext cometContext = cometEngine.register(contextPath)
+----
+2. Register the CometHandler implementation with the `CometContext`
+object:
++
+[source,java]
+----
+cometContext.addCometHandler(handler)
+----
+3. Notify one or more CometHandler implementations when an event
+happens:
++
+[source,java]
+----
+cometContext.notify((Object)(handler))
+----
+
+[[ghgxn]][[GSDVG00406]][[bayeux-protocol]]
+
+==== Bayeux Protocol
+
+The Bayeux protocol, often referred to as `Cometd`, greatly simplifies
+the use of Comet. No server-side coding is needed for servers such as
+{productName} that support the Bayeux protocol. Just enable Comet and
+the Bayeux protocol, then write and deploy the client.
+
+The following topics are addressed here:
+
+* link:#ghhaw[Enabling Comet]
+* link:#ghhap[To Configure the `web.xml` File]
+* link:#ghhtv[To Write, Deploy, and Run the Client]
+
+[[ghhaw]][[GSDVG00280]][[enabling-comet]]
+
+===== Enabling Comet
+
+Before running a Comet-enabled application, you need to enable Comet in
+the HTTP listener for your application by setting a special attribute in
+the associated protocol configuration. The following example shows the
+`asadmin set` command that adds this attribute:
+
+[source]
+----
+asadmin set server-config.network-config.protocols.protocol.http-1.http.comet-support-enabled="true"
+----
+
+Substitute the name of the protocol for `http-1`.
+
+[[ghhap]][[GSDVG00067]][[to-configure-the-web.xml-file]]
+
+===== To Configure the `web.xml` File
+
+To enable the Bayeux protocol on the {productName}, you must
+reference the `CometdServlet` in your web application's `web.xml` file.
+In addition, if your web application includes a servlet, set the
+`load-on-startup` value for your servlet to `0` (zero) so that it will
+not load until the client makes a request to it.
+
+1. Open the `web.xml` file for your web application in a text editor.
+2. Add the following XML code to the `web.xml` file:
++
+[source,xml]
+----
+<servlet>
+   <servlet-name>Grizzly Cometd Servlet</servlet-name>
+   <servlet-class>
+      com.sun.grizzly.cometd.servlet.CometdServlet
+   </servlet-class>
+   <init-param>
+      <description>
+         expirationDelay is the long delay before a request is
+         resumed. -1 means never.
+      </description>
+      <param-name>expirationDelay</param-name>
+      <param-value>-1</param-value>
+   </init-param>
+   <load-on-startup>1</load-on-startup>
+</servlet>
+<servlet-mapping>
+   <servlet-name>Grizzly Cometd Servlet</servlet-name>
+   <url-pattern>/cometd/*</url-pattern>
+</servlet-mapping>
+----
+Note that the `load-on-startup` value for the `CometdServlet` is `1`.
+3. If your web application includes a servlet, set the
+`load-on-startup` value to `0` for your servlet (not the
+`CometdServlet`) as follows:
++
+[source,xml]
+----
+<servlet>
+   ...
+   <load-on-startup>0</load-on-startup>
+</servlet>
+----
+4. Save the `web.xml` file.
+
+[[ghhtv]][[GSDVG00068]][[to-write-deploy-and-run-the-client]]
+
+===== To Write, Deploy, and Run the Client
+
+1. Add script tags to the HTML page. For example:
++
+[source,xml]
+----
+<script type="text/javascript" src="chat.js"></script>
+----
+2. In the script, call the needed libraries. For example:
++
+[source]
+----
+dojo.require("dojo.io.cometd");
+----
+3. In the script, use `publish` and `subscribe` methods to send and
+receive messages. For example:
++
+[source]
+----
+cometd.subscribe("/chat/demo", false, room, "_chat");
+cometd.publish("/chat/demo", { user: room._username, chat: text});
+----
+4. Deploy the web application as you would any other web application.
+For example:
++
+[source]
+----
+asadmin deploy cometd-example.war
+----
+5. Run the application as you would any other web application.
++
+The context root for the example chat application is ``/cometd`` and the
+HTML page is `index.html`. So the URL might look like this:
++
+[source]
+----
+http://localhost:8080/cometd/index.html
+----
+
+[[GSDVG544]]
+
+See Also
+
+For more information about deployment in the {productName}, see the
+link:application-deployment-guide.html#GSDPG[{productName} Application Deployment
+Guide].
+
+For more information about the Bayeux protocol, see
+https://docs.cometd.org/current/reference/#_bayeux[Bayeux Protocol]
+(`https://docs.cometd.org/current/reference/#_bayeux`).
+
+For more information about the Dojo toolkit, see
+`http://dojotoolkit.org/`.
+
+[[beaft]][[GSDVG00144]][[advanced-web-application-features]]
+
+=== Advanced Web Application Features
+
+The following topics are addressed here:
+
+* link:#beafu[Internationalization Issues]
+* link:#gilyj[Virtual Server Properties]
+* link:#beagb[Class Loader Delegation]
+* link:#beagc[Using the `default-web.xml` File]
+* link:#beagd[Configuring Logging and Monitoring in the Web Container]
+* link:#beage[Configuring Idempotent URL Requests]
+* link:#beagi[Header Management]
+* link:#geqrh[Configuring Valves and Catalina Listeners]
+* link:#geqpl[Alternate Document Roots]
+* link:#geurd[Using a context.xml File]
+* link:#gezcx[Enabling WebDav]
+* link:#ghepd[Using SSI]
+* link:#ghepi[Using CGI]
+
+[[beafu]][[GSDVG00407]][[internationalization-issues]]
+
+==== Internationalization Issues
+
+The following topics are addressed here:
+
+* link:#beafv[The Server's Default Locale]
+* link:#beafw[Servlet Character Encoding]
+
+[[beafv]][[GSDVG00281]][[the-servers-default-locale]]
+
+===== The Server's Default Locale
+
+To set the default locale of the entire {productName}, which
+determines the locale of the Administration Console, the logs, and so
+on, use the Administration Console. Select the domain component. Then
+type a value in the Locale field. For details, click the Help button in
+the Administration Console.
+
+[[beafw]][[GSDVG00282]][[servlet-character-encoding]]
+
+===== Servlet Character Encoding
+
+This section explains how the {productName} determines the character
+encoding for the servlet request and the servlet response. For encodings
+you can use, see
+`http://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html`.
+
+[[beafx]][[GSDVG00031]][[servlet-request]]
+
+Servlet Request
+
+When processing a servlet request, the server uses the following order
+of precedence, first to last, to determine the request character
+encoding:
+
+* The `getCharacterEncoding` method
+* A hidden field in the form, specified by the `form-hint-field`
+attribute of the `parameter-encoding` element in the `glassfish-web.xml`
+file
+* The `default-charset` attribute of the `parameter-encoding` element in
+the `glassfish-web.xml` file
+* The default, which is `ISO-8859-1`
+
+For details about the `parameter-encoding` element, see
+"link:application-deployment-guide/dd-elements.html#GSDPG00218[parameter-encoding]" in {productName} Application Deployment Guide.
+
+[[beafy]][[GSDVG00032]][[servlet-response]]
+
+Servlet Response
+
+When processing a servlet response, the server uses the following order
+of precedence, first to last, to determine the response character
+encoding:
+
+* The `setCharacterEncoding` or `setContentType` method
+* The `setLocale` method
+* The default, which is `ISO-8859-1`
+
+[[gilyj]][[GSDVG00408]][[virtual-server-properties]]
+
+==== Virtual Server Properties
+
+You can set virtual server properties in the following ways:
+
+* You can define virtual server properties using the
+`asadmin create-virtual-server` command. For example:
++
+[source]
+----
+asadmin create-virtual-server --hosts localhost --property authRealm=ldap MyVS
+----
+For details and a complete list of virtual server properties, see
+link:reference-manual/create-virtual-server.html#GSRFM00062[`create-virtual-server`(1)].
+* You can define virtual server properties using the `asadmin set`
+command. For example:
++
+[source]
+----
+asadmin set server-config.http-service.virtual-server.MyVS.property.authRealm="ldap"
+----
+For details, see link:reference-manual/set.html#GSRFM00226[`set`(1)].
+* You can define virtual server properties using the Administration
+Console. Select the HTTP Service component under the relevant
+configuration, select Virtual Servers, and select the desired virtual
+server. Select Add Property, enter the property name and value, check
+the enable box, and select Save. For details and a complete list of
+virtual server properties, click the Help button in the Administration
+Console.
+
+Some virtual server properties can be set for a specific web
+application. For details, see "link:application-deployment-guide/dd-elements.html#GSDPG00161[glassfish-web-app]" in
+{productName} Application Deployment Guide.
+
+[[beagb]][[GSDVG00409]][[class-loader-delegation]]
+
+==== Class Loader Delegation
+
+The Servlet specification recommends that a web application class loader
+look in the local class loader before delegating to its parent. To make
+the web application class loader follow the delegation model in the
+Servlet specification, set `delegate="false"` in the `class-loader`
+element of the `glassfish-web.xml` file. It's safe to do this only for a
+web module that does not interact with any other modules.
+
+The default value is `delegate="true"`, which causes the web application
+class loader to delegate in the same manner as the other class loaders.
+Use `delegate="true"` for a web application that accesses EJB components
+or that acts as a web service client or endpoint. For details about
+`glassfish-web.xml`, see the link:application-deployment-guide.html#GSDPG[{productName} Application Deployment Guide].
+
+For a number of packages, including `java.*` and `javax.*`, symbol
+resolution is always delegated to the parent class loader regardless of
+the `delegate` setting. This prevents applications from overriding core
+Java runtime classes or changing the API versions of specifications that
+are part of the Jakarta EE platform.
+
+For general information about class loaders, see
+link:class-loaders.html#beade[Class Loaders].
+
+[[beagc]][[GSDVG00410]][[using-the-default-web.xml-file]]
+
+==== Using the `default-web.xml` File
+
+You can use the `default-web.xml` file to define features such as
+filters and security constraints that apply to all web applications.
+
+For example, directory listings are disabled by default for added
+security. To enable directory listings, in your domain's
+`default-web.xml` file, search for the definition of the servlet whose
+`servlet-name` is equal to `default`, and set the value of the
+`init-param` named `listings` to `true`. Then redeploy your web
+application if it has already been deployed, or restart the server.
+
+[source,xml]
+----
+<init-param>
+   <param-name>listings</param-name>
+   <param-value>true</param-value>
+</init-param>
+----
+
+If `listings` is set to `true`, you can also determine how directory
+listings are sorted. Set the value of the `init-param` named `sortedBy`
+to `NAME`, `SIZE`, or `LAST_MODIFIED`. Then redeploy your web
+application if it has already been deployed, or restart the server.
+
+[source,xml]
+----
+<init-param>
+   <param-name>sortedBy</param-name>
+   <param-value>LAST_MODIFIED</param-value>
+</init-param>
+----
+
+The `mime-mapping` elements in `default-web.xml` are global and
+inherited by all web applications. You can override these mappings or
+define your own using `mime-mapping` elements in your web application's
+`web.xml` file. For more information about `mime-mapping` elements, see
+the Servlet specification.
+
+You can use the Administration Console to edit the `default-web.xml`
+file. For details, click the Help button in the Administration Console.
+As an alternative, you can edit the file directly using the following
+steps.
+
+[[fvymc]][[GSDVG00069]][[to-use-the-default-web.xml-file]]
+
+===== To Use the `default-web.xml` File
+
+1. Place the JAR file for the filter, security constraint, or other
+feature in the domain-dir``/lib`` directory.
+2. Edit the domain-dir``/config/default-web.xml`` file to refer to the
+JAR file.
+3. Restart the server.
+
+[[beagd]][[GSDVG00411]][[configuring-logging-and-monitoring-in-the-web-container]]
+
+==== Configuring Logging and Monitoring in the Web Container
+
+For information about configuring logging and monitoring in the web
+container using the Administration Console, click the Help button in the
+Administration Console. Select Logger Settings under the relevant
+configuration, or select the Stand-Alone Instances component, select the
+instance from the table, and select the Monitor tab.
+
+[[beage]][[GSDVG00412]][[configuring-idempotent-url-requests]]
+
+==== Configuring Idempotent URL Requests
+
+An idempotent request is one that does not cause any change or
+inconsistency in an application when retried. To enhance the
+availability of your applications deployed on an {productName}
+cluster, configure the load balancer to retry failed idempotent HTTP
+requests on all the {productName} instances in a cluster. This option
+can be used for read-only requests, for example, to retry a search
+request.
+
+The following topics are addressed here:
+
+* link:#beagf[Specifying an Idempotent URL]
+* link:#beagg[Characteristics of an Idempotent URL]
+
+[[beagf]][[GSDVG00283]][[specifying-an-idempotent-url]]
+
+===== Specifying an Idempotent URL
+
+To configure idempotent URL response, specify the URLs that can be
+safely retried in `idempotent-url-pattern` elements in the
+`glassfish-web.xml` file. For example:
+
+[source,xml]
+----
+<idempotent-url-pattern url-pattern="sun_java/*" no-of-retries="10"/>
+----
+
+For details, see "link:application-deployment-guide/dd-elements.html#GSDPG00164[idempotent-url-pattern]" in {productName} Application Deployment Guide.
+
+If none of the server instances can successfully serve the request, an
+error page is returned.
+
+[[beagg]][[GSDVG00284]][[characteristics-of-an-idempotent-url]]
+
+===== Characteristics of an Idempotent URL
+
+Since all requests for a given session are sent to the same application
+server instance, and if that {productName} instance is unreachable,
+the load balancer returns an error message. Normally, the request is not
+retried on another {productName} instance. However, if the URL
+pattern matches that specified in the `glassfish-web.xml` file, the
+request is implicitly retried on another {productName} instance in
+the cluster.
+
+In HTTP, some methods (such as GET) are idempotent, while other methods
+(such as POST) are not. In effect, retrying an idempotent URL should not
+cause values to change on the server or in the database. The only
+difference should be a change in the response received by the user.
+
+Examples of idempotent requests include search engine queries and
+database queries. The underlying principle is that the retry does not
+cause an update or modification of data.
+
+A search engine, for example, sends HTTP requests with the same URL
+pattern to the load balancer. Specifying the URL pattern of the search
+request to the load balancer ensures that HTTP requests with the
+specified URL pattern are implicitly retried on another {productName}
+instance.
+
+For example, if the request URL sent to the {productName} is of the
+type ``/search/``something``.html``, then the URL pattern can be specified
+as ``/search/*``.
+
+Examples of non-idempotent requests include banking transactions and
+online shopping. If you retry such requests, money might be transferred
+twice from your account.
+
+[[beagi]][[GSDVG00413]][[header-management]]
+
+==== Header Management
+
+In all Editions of the {productName}, the `Enumeration` from
+`request.getHeaders()` contains multiple elements (one element per
+request header) instead of a single, aggregated value.
+
+The header names used in ``HttpServletResponse.add``XXX``Header()`` and
+``HttpServletResponse.set``XXX``Header()`` are returned as they were
+created.
+
+[[geqrh]][[GSDVG00414]][[configuring-valves-and-catalina-listeners]]
+
+==== Configuring Valves and Catalina Listeners
+
+You can configure custom valves and Catalina listeners for web modules
+or virtual servers by defining properties. A valve class must implement
+the org.apache.catalina.Valve interface from Tomcat or previous
+{productName} releases, or the org.glassfish.web.valve.GlassFishValve
+interface from the current {productName} release. A listener class
+for a virtual server must implement the
+org.apache.catalina.ContainerListener or
+org.apache.catalina.LifecycleListener interface. A listener class for a
+web module must implement the org.apache.catalina.ContainerListener ,
+org.apache.catalina.LifecycleListener, or
+org.apache.catalina.InstanceListener interface.
+
+In the `glassfish-web.xml` file, valve and listener properties for a web
+module look like this:
+
+[source,xml]
+----
+<glassfish-web-app ...>
+   ...
+   <property name="valve_1" value="org.glassfish.extension.Valve"/>
+   <property name="listener_1" value="org.glassfish.extension.MyLifecycleListener"/>
+</glassfish-web-app>
+----
+
+You can define these same properties for a virtual server. For more
+information, see link:#gilyj[Virtual Server Properties].
+
+[[geqpl]][[GSDVG00415]][[alternate-document-roots]]
+
+==== Alternate Document Roots
+
+An alternate document root (docroot) allows a web application to serve
+requests for certain resources from outside its own docroot, based on
+whether those requests match one (or more) of the URI patterns of the
+web application's alternate docroots.
+
+To specify an alternate docroot for a web application or a virtual
+server, use the `alternatedocroot_n` property, where n is a positive
+integer that allows specification of more than one. This property can be
+a subelement of a `glassfish-web-app` element in the `glassfish-web.xml`
+file or a virtual server property. For more information about these
+elements, see "link:application-deployment-guide/dd-elements.html#GSDPG00161[glassfish-web-app]" in {productName} Application Deployment Guide.
+
+A virtual server's alternate docroots are considered only if a request
+does not map to any of the web modules deployed on that virtual server.
+A web module's alternate docroots are considered only once a request has
+been mapped to that web module.
+
+If a request matches an alternate docroot's URI pattern, it is mapped to
+the alternate docroot by appending the request URI (minus the web
+application's context root) to the alternate docroot's physical location
+(directory). If a request matches multiple URI patterns, the alternate
+docroot is determined according to the following precedence order:
+
+* Exact match
+* Longest path match
+* Extension match
+
+For example, the following properties specify three `glassfish-web.xml`
+docroots. The URI pattern of the first alternate docroot uses an exact
+match, whereas the URI patterns of the second and third alternate
+docroots use extension and longest path prefix matches, respectively.
+
+[source,xml]
+----
+<property name="alternatedocroot_1" value="from=/my.jpg dir=/srv/images/jpg"/>
+<property name="alternatedocroot_2" value="from=*.jpg dir=/srv/images/jpg"/>
+<property name="alternatedocroot_3" value="from=/jpg/* dir=/src/images"/>
+----
+
+The `value` of each alternate docroot has two components: The first
+component, `from`, specifies the alternate docroot's URI pattern, and
+the second component, `dir`, specifies the alternate docroot's physical
+location (directory).
+
+Suppose the above examples belong to a web application deployed at
+`http://company22.com/myapp`. The first alternate docroot maps any
+requests with this URL:
+
+[source]
+----
+http://company22.com/myapp/my.jpg
+----
+
+To this resource:
+
+[source]
+----
+/svr/images/jpg/my.jpg
+----
+
+The second alternate docroot maps any requests with a `*.jpg` suffix,
+such as:
+
+[source]
+----
+http://company22.com/myapp/*.jpg
+----
+
+To this physical location:
+
+[source]
+----
+/svr/images/jpg
+----
+
+The third alternate docroot maps any requests whose URI starts with
+`/myapp/jpg/`, such as:
+
+[source]
+----
+http://company22.com/myapp/jpg/*
+----
+
+To the same directory as the second alternate docroot.
+
+For example, the second alternate docroot maps this request:
+
+[source]
+----
+http://company22.com/myapp/abc/def/my.jpg
+----
+
+To:
+
+[source]
+----
+/srv/images/jpg/abc/def/my.jpg
+----
+
+The third alternate docroot maps:
+
+[source]
+----
+http://company22.com/myapp/jpg/abc/resource
+----
+
+To:
+
+[source]
+----
+/srv/images/jpg/abc/resource
+----
+
+If a request does not match any of the target web application's
+alternate docroots, or if the target web application does not specify
+any alternate docroots, the request is served from the web application's
+standard docroot, as usual.
+
+[[geurd]][[GSDVG00416]][[using-a-context.xml-file]]
+
+==== Using a context.xml File
+
+You can define a `context.xml` file for all web applications, for web
+applications assigned to a specific virtual server, or for a specific
+web application.
+
+To define a global `context.xml` file, place the file in the
+domain-dir``/config`` directory and name it `context.xml`.
+
+Use the `contextXmlDefault` property to specify the name and the
+location, relative to domain-dir, of the `context.xml` file for a
+specific virtual server. Specify this property in one of the following
+ways:
+
+* In the Administration Console, open the HTTP Service component under
+the relevant configuration. Open the Virtual Servers component and
+scroll down to the bottom of the page. Enter `contextXmlDefault` as the
+property name and the path and file name relative to domain-dir as the
+property value.
+* Use the `asadmin create-virtual-server` command. For example:
++
+[source]
+----
+asadmin create-virtual-server --property contextXmlDefault=config/vs1ctx.xml vs1
+----
+* Use the `asadmin set` command for an existing virtual server. For
+example:
++
+[source]
+----
+asadmin set server-config.http-service.virtual-server.vs1.property.contextXmlDefault=config/myctx.xml
+----
+
+To define a `context.xml` file for a specific web application, place the
+file in the `META-INF` directory and name it `context.xml`.
+
+For more information about virtual server properties, see
+link:#gilyj[Virtual Server Properties]. For more information about the
+`context.xml` file, see
+http://tomcat.apache.org/tomcat-5.5-doc/config/context.html[The Context
+Container]
+(`http://tomcat.apache.org/tomcat-5.5-doc/config/context.html`). Context
+parameters, environment entries, and resource definitions in
+`context.xml` are supported in the {productName}.
+
+[[gezcx]][[GSDVG00417]][[enabling-webdav]]
+
+==== Enabling WebDav
+
+To enable WebDav in the {productName}, you edit the `web.xml` and
+`glassfish-web.xml` files as follows.
+
+First, enable the WebDav servlet in your `web.xml` file:
+
+[source,xml]
+----
+<servlet>
+   <servlet-name>webdav</servlet-name>
+   <servlet-class>org.apache.catalina.servlets.WebdavServlet</servlet-class>
+   <init-param>
+      <param-name>debug</param-name>
+      <param-value>0</param-value>
+   </init-param>
+   <init-param>
+      <param-name>listings</param-name>
+      <param-value>true</param-value>
+   </init-param>
+   <init-param>
+      <param-name>readonly</param-name>
+      <param-value>false</param-value>
+   </init-param>
+</servlet>
+----
+
+Then define the servlet mapping associated with your WebDav servlet in
+your `web.xml` file:
+
+[source,xml]
+----
+<servlet-mapping>
+   <servlet-name>webdav</servlet-name>
+   <url-pattern>/webdav/*</url-pattern>
+</servlet-mapping>
+----
+
+To protect the WebDav servlet so other users can't modify it, add a
+security constraint in your `web.xml` file:
+
+[source,xml]
+----
+<security-constraint>
+   <web-resource-collection>
+      <web-resource-name>Login Resources</web-resource-name>
+      <url-pattern>/webdav/*</url-pattern>
+   </web-resource-collection>
+   <auth-constraint>
+      <role-name>Admin</role-name>
+   </auth-constraint>
+   <user-data-constraint>
+      <transport-guarantee>NONE</transport-guarantee>
+   </user-data-constraint>
+   <login-config>
+      <auth-method>BASIC</auth-method>
+      <realm-name>default</realm-name>
+   </login-config>
+   <security-role>
+      <role-name>Admin</role-name>
+   </security-role>
+</security-constraint>
+----
+
+Then define a security role mapping in your `glassfish-web.xml` file:
+
+[source,xml]
+----
+<security-role-mapping>
+   <role-name>Admin</role-name>
+   <group-name>Admin</group-name>
+</security-role-mapping>
+----
+
+If you are using the `file` realm, create a user and password. For
+example:
+
+[source]
+----
+asadmin create-file-user --groups Admin --authrealmname default admin
+----
+
+Enable the security manager as described in
+link:securing-apps.html#gbyah[Enabling and Disabling the Security
+Manager].
+
+You can now use any WebDav client by connecting to the WebDav servlet
+URL, which has this format:
+
+[source]
+----
+http://host:port/context-root/webdav/file
+----
+
+For example:
+
+[source]
+----
+http://localhost:80/glassfish-webdav/webdav/index.html
+----
+
+You can add the WebDav servlet to your `default-web.xml` file to enable
+it for all applications, but you can't set up a security role mapping to
+protect it.
+
+[[ghepd]][[GSDVG00418]][[using-ssi]]
+
+==== Using SSI
+
+To enable SSI (server-side includes) processing for a specific web
+module, add the `SSIServlet` to your `web.xml` file as follows:
+
+[source,xml]
+----
+<web-app>
+   <servlet>
+      <servlet-name>ssi</servlet-name>
+      <servlet-class>org.apache.catalina.ssi.SSIServlet</servlet-class>
+   </servlet>
+   ...
+   <servlet-mapping>
+      <servlet-name>ssi</servlet-name>
+      <url-pattern>*.shtml</url-pattern>
+   </servlet-mapping>
+   ...
+   <mime-mapping>
+      <extension>shtml</extension>
+      <mime-type>text/html</mime-type>
+   </mime-mapping>
+</web-app>
+----
+
+To enable SSI processing for all web modules, un-comment the
+corresponding sections in the `default-web.xml` file.
+
+If the `mime-mapping` is not specified in `web.xml`, {productName}
+attempts to determine the MIME type from `default-web.xml` or the
+operating system default.
+
+You can configure the following `init-param` values for the
+`SSIServlet`.
+
+[[GSDVG545]][[sthref16]][[gheoy]]
+
+
+Table 7-4 `SSIServlet` `init-param` Values
+
+[width="100%",cols="28%,11%,20%,41%",options="header",]
+|===
+|init-param |Type |Default |Description
+|buffered |`boolean` |`false` |Specifies whether the output should be
+buffered.
+
+|debug |`int` |`0` (for no debugging) |Specifies the debugging level.
+
+|expires |`Long` |`Expires` header in HTTP response not set |Specifies
+the expiration time in seconds.
+
+|inputEncoding |`String` |operating system encoding |Specifies encoding
+for the SSI input if there is no URL content encoding specified.
+
+|isVirtualWebappRelative |`boolean` |`false` (relative to the given SSI
+file) |Specifies whether the virtual path of the `#include` directive is
+relative to the `content-root`.
+
+|outputEncoding |`String` |UTF-8 |Specifies encoding for the SSI output.
+|===
+
+
+For more information about SSI, see
+`http://httpd.apache.org/docs/2.2/mod/mod_include.html`.
+
+[[ghepi]][[GSDVG00419]][[using-cgi]]
+
+==== Using CGI
+
+To enable CGI (common gateway interface) processing for a specific web
+module, add the `CGIServlet` to your `web.xml` file as follows:
+
+[source,xml]
+----
+<web-app>
+   <servlet>
+      <servlet-name>cgi</servlet-name>
+      <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
+   </servlet>
+   ...
+   <servlet-mapping>
+      <servlet-name>cgi</servlet-name>
+      <url-pattern>/cgi-bin/*</url-pattern>
+   </servlet-mapping>
+</web-app>
+----
+
+To enable CGI processing for all web modules, un-comment the
+corresponding sections in the `default-web.xml` file.
+
+Package the CGI program under the `cgiPathPrefix`. The default
+`cgiPathPrefix` is `WEB-INF/cgi`. For security, it is highly recommended
+that the contents and binaries of CGI programs be prohibited from direct
+viewing or download. For information about hiding directory listings,
+see link:#beagc[Using the `default-web.xml` File].
+
+Invoke the CGI program using a URL of the following format:
+
+[source]
+----
+http://host:8080/context-root/cgi-bin/cgi-name
+----
+
+For example:
+
+[source]
+----
+http://localhost:8080/mycontext/cgi-bin/hello
+----
+
+You can configure the following `init-param` values for the
+`CGIServlet`.
+
+[[GSDVG546]][[sthref17]][[ghern]]
+
+
+Table 7-5 `CGIServlet` `init-param` Values
+
+[width="100%",cols="25%,11%,27%,37%",options="header",]
+|===
+|init-param |Type |Default |Description
+|cgiPathPrefix |`String` |`WEB-INF/cgi` |Specifies the subdirectory
+containing the CGI programs.
+
+|debug |`int` |`0` (for no debugging) |Specifies the debugging level.
+
+|executable |`String` |`perl` |Specifies the executable for running the
+CGI script.
+
+|parameterEncoding |`String` |`System.getProperty``("file.encoding",`
+`"UTF-8")` |Specifies the parameter's encoding.
+
+|passShellEnvironment |`boolean` |`false` |Specifies whether to pass
+shell environment properties to the CGI program.
+|===
+
+
+To work with a native executable, do the following:
+
+1. Set the value of the `init-param` named executable to an empty
+`String` in the `web.xml` file.
+2. Make sure the executable has its executable bits set correctly.
+3. Use directory deployment to deploy the web module. Do not deploy it
+as a WAR file, because the executable bit information is lost during the
+process of `jar` and `unjar`. For more information about directory
+deployment, see the link:application-deployment-guide.html#GSDPG[{productName}
+Application Deployment Guide].
+
+
diff --git a/docs/application-development-guide/src/main/asciidoc/webservices.adoc b/docs/application-development-guide/src/main/asciidoc/webservices.adoc
new file mode 100644
index 0000000..9b5dd2b
--- /dev/null
+++ b/docs/application-development-guide/src/main/asciidoc/webservices.adoc
@@ -0,0 +1,341 @@
+type=page
+status=published
+title=Developing Web Services
+next=jpa.html
+prev=securing-apps.html
+~~~~~~
+
+= Developing Web Services
+
+[[GSDVG00007]][[gaszn]]
+
+
+[[developing-web-services]]
+== 5 Developing Web Services
+
+This chapter describes {productName} support for web services.
+The following topics are addressed here:
+
+* link:#gbizi[Creating Portable Web Service Artifacts]
+* link:#gbixz[Deploying a Web Service]
+* link:#gbiyw[The Web Service URI, WSDL File, and Test Page]
+* link:#CHDEBBCH[The Databinding Provider]
+* link:#gcgzz[GlassFish Jakarta EE Service Engine]
+
+
+[NOTE]
+====
+If you installed the Web Profile, web services are not supported unless
+the optional Metro Web Services Stack add-on component is downloaded
+from the Update Tool. Without the Metro add-on component, a servlet or
+EJB component cannot be a web service endpoint, and the
+`glassfish-web.xml` and `glassfish-ejb-jar.xml` elements related to web
+services are ignored. For information about the Update Tool, see
+"olink:GSADG00701[Update Tool]" in {productName}
+Administration Guide.
+
+In addition, the as-install``/modules/webservices-osgi.jar`` and
+as-install``/modules/webservices-api-osgi.jar`` files must be in
+the classpath of your web services application. IDEs such as NetBeans
+and Eclipse do this automatically.
+====
+
+
+"https://eclipse-ee4j.github.io/jakartaee-tutorial/#web-services[Web Services]"
+in The Jakarta EE Tutorial shows how to deploy simple web services to
+{productName}.
+
+For additional information about JAXB (Java Architecture for XML Binding), see
+http://jcp.org/aboutJava/communityprocess/pfd/jsr222/index.html[Java
+Specification Request (JSR) 222] and link:#CHDEBBCH[The Databinding Provider].
+
+For additional information about JAX-WS (Java API for XML-Based Web Services), see
+http://jcp.org/aboutJava/communityprocess/pfd/jsr224/index.html[Java
+Specification Request (JSR) 224] and
+http://jcp.org/en/jsr/detail?id=109[Java Specification Request (JSR) 109].
+
+For information about web services security, see
+link:securing-apps.html#beaca[Configuring Message Security for Web Services].
+
+The Fast Infoset standard specifies a binary format based on the XML Information Set.
+This format is an efficient alternative to XML.
+For more information about using Fast Infoset,
+see the https://eclipse-ee4j.github.io/metro-wsit/3.0.0/guide/ch02.html#using-fastinfoset[
+Metro WSIT Guide]
+
+
+[[gbizi]][[GSDVG00126]][[creating-portable-web-service-artifacts]]
+
+=== Creating Portable Web Service Artifacts
+
+For a tutorial that shows how to use the `wsimport` and `wsgen`
+commands, see "https://eclipse-ee4j.github.io/jakartaee-tutorial/#web-services[
+Web Services]" in The Jakarta EE Tutorial.
+
+[[gbixz]][[GSDVG00127]][[deploying-a-web-service]]
+
+=== Deploying a Web Service
+
+You deploy a web service endpoint to the {productName} just as you
+would any servlet, stateless session bean (SLSB), or application.
+
+
+[NOTE]
+====
+For complex services with dependent classes, user specified WSDL files,
+or other advanced features, autodeployment of an annotated file is not
+sufficient.
+====
+
+
+The {productName} deployment descriptor files `glassfish-web.xml` and
+`glassfish-ejb-jar.xml` provide optional web service enhancements in the
+`webservice-endpoint` and `webservice-description` elements, including a
+`debugging-enabled` subelement that enables the creation of a test page.
+The test page feature is enabled by default and described in
+link:#gbiyw[The Web Service URI, WSDL File, and Test Page].
+
+For more information about deployment, autodeployment, and deployment
+descriptors, see the link:application-deployment-guide.html#GSDPG[
+{productName} Application Deployment Guide].
+For more information about the
+`asadmin deploy` command, see the link:reference-manual.html#GSRFM[
+{productName} Reference Manual].
+
+[[gbiyw]][[GSDVG00128]][[the-web-service-uri-wsdl-file-and-test-page]]
+
+=== The Web Service URI, WSDL File, and Test Page
+
+Clients can run a deployed web service by accessing its service endpoint
+address URI, which has the following format:
+
+[source]
+----
+http://host:port/context-root/servlet-mapping-url-pattern
+----
+
+The context-root is defined in the `application.xml` or `web.xml` file,
+and can be overridden in the `glassfish-application.xml` or
+`glassfish-web.xml` file. The servlet-mapping-url-pattern is defined in
+the `web.xml` file.
+
+In the following example, the context-root is `my-ws` and the
+servlet-mapping-url-pattern is `/simple`:
+
+[source]
+----
+http://localhost:8080/my-ws/simple
+----
+
+You can view the WSDL file of the deployed service in a browser by
+adding `?WSDL` to the end of the URI. For example:
+
+[source]
+----
+http://localhost:8080/my-ws/simple?WSDL
+----
+
+For debugging, you can run a test page for the deployed service in a
+browser by adding `?Tester` to the end of the URL. For example:
+
+[source]
+----
+http://localhost:8080/my-ws/simple?Tester
+----
+
+You can also test a service using the Administration Console. Open the
+Web Services component, select the web service in the listing on the
+General tab, and select Test. For details, click the Help button in the
+Administration Console.
+
+
+[NOTE]
+====
+The test page works only for WS-I compliant web services. This means
+that the tester servlet does not work for services with WSDL files that
+use RPC/encoded binding.
+====
+
+
+Generation of the test page is enabled by default. You can disable the
+test page for a web service by setting the value of the
+`debugging-enabled` element in the `glassfish-web.xml` and
+`glassfish-ejb-jar.xml` deployment descriptor to `false`. For more
+information, see the link:application-deployment-guide.html#GSDPG[{productName}
+Application Deployment Guide].
+
+[[CHDEBBCH]][[GSDVG536]][[the-databinding-provider]]
+
+=== The Databinding Provider
+
+The JAX-WS reference implementation (RI) used to be dependent on the
+JAXB RI for databinding. JAXB and JAX-WS implementations have been
+decoupled, and databinding is modular. JAXB and JAX-WS are no longer
+Jakarta EE APIs.
+
+The EclipseLink JAXB implementation, plus EclipseLink extensions, is
+called MOXy. The `org.eclipse.persistence.moxy.jar` file is bundled with
+{productName}, which supports the JAXB RI and MOXy as databinding
+providers.
+
+To specify the databinding provider for the JVM, set the
+`com.sun.xml.ws.spi.db.BindingContextFactory` JVM property to one of the
+following values:
+
+com.sun.xml.ws.db.glassfish.JAXBRIContextFactory::
+  Specifies the JAXB reference implementation. This is the default.
+com.sun.xml.ws.db.toplink.JAXBContextFactory::
+  Specifies Eclipselink MOXy JAXB binding.
+
+For example:
+
+[source]
+----
+asadmin create-jvm-options -Dcom.sun.xml.ws.spi.db.BindingContextFactory=com.sun.xml.ws.db.toplink.JAXBContextFactory
+----
+
+To specify the databinding provider for a web service endpoint:
+
+* Set the `org.jvnet.ws.databinding.DatabindingModeFeature` feature
+during `WebServiceFeature` initialization or using the `add` method.
+Allowed values are as follows:::
+org.jvnet.ws.databinding.DatabindingModeFeature.GLASSFISH_JAXB::
+  Specifies the JAXB reference implementation. This is the default.
+com.sun.xml.ws.db.toplink.JAXBContextFactory.ECLIPSELINK_JAXB::
+  Specifies Eclipselink MOXy JAXB binding.
++
+For example:
++
+[source,java]
+----
+import jakarta.xml.ws.WebServiceFeature;
+import org.jvnet.ws.databinding.DatabindingModeFeature;
+import com.sun.xml.ws.db.toplink.JAXBContextFactory;
+...
+WebServiceFeature[] features = {new DatabindingModeFeature(JAXBContextFactory.ECLIPSELINK_JAXB)};
+...
+----
+* Set the `org.jvnet.ws.databinding.DatabindingModeFeature` feature
+using the `@DatabindingMode` annotation. For example:
++
+[source,java]
+----
+import jakarta.jws.WebService;
+import org.jvnet.ws.databinding.DatabindingMode;
+import com.sun.xml.ws.db.toplink.JAXBContextFactory;
+...
+@WebService()
+@DatabindingMode(JAXBContextFactory.ECLIPSELINK_JAXB);
+...
+----
+* Set the `databinding` attribute of the `endpoint` element in the
+`sun-jaxws.xml` file. Allowed values are `glassfish.jaxb` or
+`eclipselink.jaxb`. For example:
++
+[source,xml]
+----
+<endpoint name='hello'
+  implementation='hello.HelloImpl'
+  url-pattern='/hello'
+  databinding='eclipselink.jaxb'
+/>
+----
+
+The EclipseLink JAXB compiler is not included but can be used with
+{productName}. Download the EclipseLink zip file at
+`http://www.eclipse.org/eclipselink/downloads/` and unzip it. The
+compiler files are located here:
+
+[source]
+----
+bin/jaxb-compiler.cmd
+bin/jaxb-compiler.sh
+----
+
+[[gcgzz]][[GSDVG00129]][[glassfish-java-ee-service-engine]]
+
+=== GlassFish Jakarta EE Service Engine
+
+{productName} 7 provides the GlassFish Jakarta EE Service Engine, a
+JSR 208 compliant Java Business Integration (JBI) runtime component that
+connects Jakarta EE web services to JBI components. The Jakarta EE Service
+Engine is installed as an add-on component using the Update Tool. Look
+for the JBI component named Jakarta EE Service Engine. A JBI runtime is not
+installed with or integrated into {productName} 7 and must be
+obtained separately. For more information about using the Update Tool to
+obtain the Jakarta EE Service Engine and other add-on components, see
+"link:administration-guide.html#GSADG00701[Update Tool]" in {productName}
+Administration Guide.
+
+The Jakarta EE Service Engine acts as a bridge between the Jakarta EE and JBI
+runtime environments for web service providers and web service
+consumers. The Jakarta EE Service Engine provides better performance than a
+SOAP over HTTP binding component due to in-process communication between
+components and additional protocols provided by JBI binding components
+such as JMS, SMTP, and File.
+
+The http://jcp.org/en/jsr/detail?id=208[JSR 208]
+(`http://jcp.org/en/jsr/detail?id=208`) specification allows
+transactions to be propagated to other components using a message
+exchange property specified in the `JTA_TRANSACTION_PROPERTY_NAME`
+field. The Jakarta EE Service Engine uses this property to set and get a
+transaction object from the JBI message exchange. It then uses the
+transaction object to take part in a transaction. This means a Jakarta EE
+application or module can take part in a transaction started by a JBI
+application. Conversely, a JBI application can take part in a
+transaction started by a Jakarta EE application or module.
+
+Similarly, the JSR 208 specification allows a security subject to be
+propagated as a message exchange property named
+`javax.jbi.security.subject`. Thus a security subject can be propagated
+from a Jakarta EE application or module to a JBI application or the
+reverse.
+
+To deploy a Jakarta EE application or module as a JBI service unit, use the
+`asadmin deploy` command, or autodeployment. For more information about
+the `asadmin deploy` command, see the link:reference-manual.html#GSRFM[
+{productName} Reference Manual].
+For more information about autodeployment, see
+"link:application-deployment-guide/deploying-applications.html#GSDPG00041[
+To Deploy an Application or Module Automatically]"
+in {productName} Application Deployment Guide.
+
+[[gelxr]][[GSDVG00387]][[using-the-jbi.xml-file]]
+
+==== Using the `jbi.xml` File
+
+Section 6.3.1 of the JSR 208 specification describes the `jbi.xml` file.
+This is a deployment descriptor, located in the `META-INF` directory. To
+deploy a Jakarta EE application or module as a JBI service unit, you need
+only specify a small subset of elements in the `jbi.xml` file. Here is
+an example provider:
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<jbi version="1.0" xmlns="http://java.sun.com/xml/ns/jbi" xmlns:ns0="http://ejbws.jbi.misc/">
+  <services binding-component="false">
+    <provides endpoint-name="MiscPort" interface-name="ns0:Misc" service-name="ns0:MiscService"/>
+  </services>
+</jbi>
+----
+
+Here is an example consumer:
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<jbi version="1.0" xmlns="http://java.sun.com/xml/ns/jbi" xmlns:ns0="http://message.hello.jbi/">
+  <services binding-component="false">
+    <consumes endpoint-name="MsgPort" interface-name="ns0:Msg" service-name="ns0:MsgService"/>
+  </services>
+</jbi>
+----
+
+The Jakarta EE Service Engine enables the endpoints described in the
+`provides` section of the `jbi.xml` file in the JBI runtime. Similarly,
+the Jakarta EE Service Engine routes invocations of the endpoints described
+in the `consumes` section from the Jakarta EE web service consumer to the
+JBI runtime.
+
+
diff --git a/docs/application-development-guide/src/main/jbake/assets/css/style.css b/docs/application-development-guide/src/main/jbake/assets/css/style.css
deleted file mode 100644
index 25a16e4..0000000
--- a/docs/application-development-guide/src/main/jbake/assets/css/style.css
+++ /dev/null
@@ -1,315 +0,0 @@
-/* CSS */
-/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
-/** 1. Set default font family to sans-serif. 2. Prevent iOS text size adjust after orientation change, without disabling user zoom. */
-html { font-family: sans-serif; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ }
-
-/* HTML5 display definitions ========================================================================== */
-/** Correct `block` display not defined for any HTML5 element in IE 8/9. Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox. Correct `block` display not defined for `main` in IE 11. */
-article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { display: block; }
-
-/** 1. Correct `inline-block` display not defined in IE 8/9. 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. */
-audio, canvas, progress, video { display: inline-block; /* 1 */ vertical-align: baseline; /* 2 */ }
-
-/** Prevent modern browsers from displaying `audio` without controls. Remove excess height in iOS 5 devices. */
-audio:not([controls]) { display: none; height: 0; }
-
-/** Address `[hidden]` styling not present in IE 8/9/10. Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. */
-[hidden], template { display: none; }
-
-/* Links ========================================================================== */
-/** Remove the gray background color from active links in IE 10. */
-a { background-color: transparent; }
-
-/** Improve readability when focused and also mouse hovered in all browsers. */
-a:active, a:hover { outline: 0; }
-
-/* Text-level semantics ========================================================================== */
-/** Address styling not present in IE 8/9/10/11, Safari, and Chrome. */
-abbr[title] { border-bottom: 1px dotted; }
-
-/** Address style set to `bolder` in Firefox 4+, Safari, and Chrome. */
-b, strong { font-weight: bold; }
-
-/** Address styling not present in Safari and Chrome. */
-dfn { font-style: italic; }
-
-/** Address variable `h1` font-size and margin within `section` and `article` contexts in Firefox 4+, Safari, and Chrome. */
-h1 { font-size: 2em; margin: 0.67em 0; }
-
-/** Address styling not present in IE 8/9. */
-mark { background: #ff0; color: #000; }
-
-/** Address inconsistent and variable font size in all browsers. */
-small { font-size: 80%; }
-
-/** Prevent `sub` and `sup` affecting `line-height` in all browsers. */
-sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }
-
-sup { top: -0.5em; }
-
-sub { bottom: -0.25em; }
-
-/* Embedded content ========================================================================== */
-/** Remove border when inside `a` element in IE 8/9/10. */
-img { border: 0; }
-
-/** Correct overflow not hidden in IE 9/10/11. */
-svg:not(:root) { overflow: hidden; }
-
-/* Grouping content ========================================================================== */
-/** Address margin not present in IE 8/9 and Safari. */
-figure { margin: 1em 40px; }
-
-/** Address differences between Firefox and other browsers. */
-hr { box-sizing: content-box; height: 0; }
-
-/** Contain overflow in all browsers. */
-pre { overflow: auto; }
-
-/** Address odd `em`-unit font size rendering in all browsers. */
-code, kbd, pre, samp { font-family: monospace, monospace; font-size: 1em; }
-
-/* Forms ========================================================================== */
-/** Known limitation: by default, Chrome and Safari on OS X allow very limited styling of `select`, unless a `border` property is set. */
-/** 1. Correct color not being inherited. Known issue: affects color of disabled elements. 2. Correct font properties not being inherited. 3. Address margins set differently in Firefox 4+, Safari, and Chrome. */
-button, input, optgroup, select, textarea { color: inherit; /* 1 */ font: inherit; /* 2 */ margin: 0; /* 3 */ }
-
-/** Address `overflow` set to `hidden` in IE 8/9/10/11. */
-button { overflow: visible; }
-
-/** Address inconsistent `text-transform` inheritance for `button` and `select`. All other form control elements do not inherit `text-transform` values. Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. Correct `select` style inheritance in Firefox. */
-button, select { text-transform: none; }
-
-/** 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls. 2. Correct inability to style clickable `input` types in iOS. 3. Improve usability and consistency of cursor style between image-type `input` and others. */
-button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ }
-
-/** Re-set default cursor for disabled elements. */
-button[disabled], html input[disabled] { cursor: default; }
-
-/** Remove inner padding and border in Firefox 4+. */
-button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; }
-
-/** Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet. */
-input { line-height: normal; }
-
-/** It's recommended that you don't attempt to style these elements. Firefox's implementation doesn't respect box-sizing, padding, or width.  1. Address box sizing set to `content-box` in IE 8/9/10. 2. Remove excess padding in IE 8/9/10. */
-input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ }
-
-/** Fix the cursor style for Chrome's increment/decrement buttons. For certain `font-size` values of the `input`, it causes the cursor style of the decrement button to change from `default` to `text`. */
-input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { height: auto; }
-
-/** 1. Address `appearance` set to `searchfield` in Safari and Chrome. 2. Address `box-sizing` set to `border-box` in Safari and Chrome (include `-moz` to future-proof). */
-input[type="search"] { -webkit-appearance: textfield; /* 1 */ /* 2 */ box-sizing: content-box; }
-
-/** Remove inner padding and search cancel button in Safari and Chrome on OS X. Safari (but not Chrome) clips the cancel button when the search input has padding (and `textfield` appearance). */
-input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; }
-
-/** Define consistent border, margin, and padding. */
-fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; }
-
-/** 1. Correct `color` not being inherited in IE 8/9/10/11. 2. Remove padding so people aren't caught out if they zero out fieldsets. */
-legend { border: 0; /* 1 */ padding: 0; /* 2 */ }
-
-/** Remove default vertical scrollbar in IE 8/9/10/11. */
-textarea { overflow: auto; }
-
-/** Don't inherit the `font-weight` (applied by a rule above). NOTE: the default cannot safely be changed in Chrome and Safari on OS X. */
-optgroup { font-weight: bold; }
-
-/* Tables ========================================================================== */
-/** Remove most spacing between table cells. */
-table { border-collapse: collapse; border-spacing: 0; }
-
-td, th { padding: 0; }
-
-/* LAYOUT STYLES */
-
-p { margin-top: 0; }
-
-code, pre { margin-bottom: 30px; font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace; font-size: 13px; color: #222; }
-
-code { padding: 0 3px; background-color: #f2f8fc; border: solid 1px #dbe7f3; }
-
-pre { padding: 20px; overflow: auto; text-shadow: none; background: #fff; border: solid 1px #f2f2f2; }
-
-pre code { padding: 0; color: #2879d0; background-color: #fff; border: none; }
-
-ul, ol, dl { margin-bottom: 20px; }
-
-/* COMMON STYLES */
-
-td.halign-right { text-align: right; } 
-
-td.halign-center { text-align: center; } 
-
-form { padding: 20px; background: #f2f2f2; }
-
-h2 { 
-   font-size: 2em;
-   line-height: 1.2em;
-   font-weight: 200;
-   letter-spacing: 0;
-}
-
-h3 { 
-   font-size: 1.4em;
-   line-height: 1.2em;
-   font-weight: normal;
-   letter-spacing: 0;
-}
-
-.sect1 {
-   margin-left: 4%;
-   margin-right: 4%;
-   font: 13px/20px Arial, Helvetica, sans-serif  
-}
-
-a:link {
-   text-decoration: none;
-   color: #09569d;
-}
-
-#preamble hr{
-   margin-left: 0%;
-   margin-right: 0%;
-}
-
-#preamble .sectionbody table  {
-   font-weight: 200;
-   margin-left: 4%;
-   margin-right: 4%;
-}
-
-hr {
-   margin-bottom: 12px;
-}
-
-table.tableblock.frame-all.grid-all.spread {
-   font-size: 12px;
-}
-
-code {
-   font-size:.9em;
-   border: 1px solid #eaeaea;
-   background-color: #f6f6f6;
-   border-radius: 3px;
-   padding: 1px;
-   padding-left:2px;
-   padding-right:2px;
-}
-
-pre.prettyprint.highlight {
-   border: 1px solid #eaeaea;
-   background-color: #f6f6f6;
-   border-radius: 4px;
-   padding: 8px;
-   padding-top:4px;
-   padding-bottom:4px;
-}
-
-.language-oac_no_warn {
-   font-size:.9em;
-   color:#222;
-   background-color: transparent;
-}
-
-#doc-title {
-   margin-left: 4%;
-}
-
-#top-nav {
-   margin-left: 4%;
-   font-size: 12px;
-}
-
-#bottom-nav {
-   margin-left: 4%;
-   font-size: 12px;
-}
-
-.vector-font {
-   color:grey; 
-   font-size: 20px;
-}
-
-#copyright {
-   padding-top: 10px;
-   padding-bottom: 4px;
-   display: table;
-   margin:0 auto;
-   color: grey;
-   font-size: 12px;
-   vertical-align: middle;
-}
-
-.beta {color: #FF0000}
-
-/* GENERAL ELEMENT TYPE STYLES */
-
-/* #Media Queries
-================================================== */
-/* Smaller than standard 960 (devices and browsers) */
-/* Tablet Portrait size to standard 960 (devices and browsers) */
-@media only screen and (min-width: 768px) and (max-width: 959px) { .inner { width: 740px; }
-  header h1, header h2 { width: 340px; }
-  header h1 { font-size: 60px; }
-  header h2 { font-size: 30px; }
-}
-/* All Mobile Sizes (devices and browser) */
-@media only screen and (max-width: 767px) { .inner { width: 93%; }
-  header { padding: 20px 0; }
-  header .inner { position: relative; }
-  header h1, header h2 { width: 100%; }
-  header h1 { font-size: 48px; }
-  header h2 { font-size: 24px; }
-  header a.button { position: relative; display: inline-block; width: auto; height: auto; padding: 5px 10px; margin-top: 15px; font-size: 13px; line-height: 1; color: #2879d0; text-align: center; background-color: #9ddcff; background-image: none; border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; }
-  header a.button small { display: inline; font-size: 13px; }
-}
-/* Mobile Landscape Size to Tablet Portrait (devices and browsers) */
-/* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */
-
-header h1 { padding-top: 14px; font-size: 2em; font-weight: 200; line-height: 1.4; color: #FFFFFF; letter-spacing: 0px; border-bottom: 0px; }
-
-header h2 { font-size: 1.2em; margin-top: 0; margin-bottom: 0; font-weight: 200; line-height: .8; color: #ec7D11; letter-spacing: 0; }
-
-/*
-header a.button { background: transparent url(../images/logo.png) 0 0 no-repeat; padding-left: 32px; }
-*/
-
-header a:hover { text-decoration: none; }
-
-/* Admonition (Note) block */
-.admonitionblock > table {
-  border: 0;
-  background: none;
-  width: 100%;
-  table-layout: auto;
-  margin-bottom: 10.5px;
-}
-.admonitionblock > table td.icon {
-  text-align: center;
-  width: 60px;
-}
-.admonitionblock > table td.icon img {
-  max-width: none;
-}
-.admonitionblock > table td.icon .title {
-  text-transform: uppercase;
-}
-.admonitionblock > table td.content {
-  padding-left: 1em;
-  padding-right: 1em;
-  border-left: 3px solid #ddd;
-}
-.admonitionblock > table td.content > :last-child > :last-child {
-  margin-bottom: 0;
-}
-.admonitionblock td.icon [class^="fa icon-"]:before {
-  font-size: 2.5em;
-  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
-  cursor: default;
-}
-.admonitionblock td.icon .icon-note:before {
-  content: "\f05a";
-  color: #5bc0de;
-}
diff --git a/docs/application-development-guide/src/main/jbake/content/class-loaders.adoc b/docs/application-development-guide/src/main/jbake/content/class-loaders.adoc
deleted file mode 100644
index 39121c0..0000000
--- a/docs/application-development-guide/src/main/jbake/content/class-loaders.adoc
+++ /dev/null
@@ -1,434 +0,0 @@
-type=page
-status=published
-title=Class Loaders
-next=debugging-apps.html
-prev=setting-up-dev-env.html
-~~~~~~
-Class Loaders
-=============
-
-[[GSDVG00003]][[beade]]
-
-
-[[class-loaders]]
-2 Class Loaders
----------------
-
-Understanding Oracle GlassFish Server class loaders can help you
-determine where to place supporting JAR and resource files for your
-modules and applications.
-
-In a JVM implementation, the class loaders dynamically load a specific
-Java class file needed for resolving a dependency. For example, when an
-instance of `java.util.Enumeration` needs to be created, one of the
-class loaders loads the relevant class into the environment.
-
-The following topics are addressed here:
-
-* link:#beadf[The Class Loader Hierarchy]
-* link:#gfqpi[Delegation]
-* link:#beadk[Using the Java Optional Package Mechanism]
-* link:#beadg[Class Loader Universes]
-* link:#gatej[Application-Specific Class Loading]
-* link:#beadh[Circumventing Class Loader Isolation]
-
-
-[NOTE]
-=======================================================================
-
-The Web Profile of the GlassFish Server supports the EJB 3.1 Lite
-specification, which allows enterprise beans within web applications,
-among other features. The full GlassFish Server supports the entire EJB
-3.1 specification. For details, see
-http://jcp.org/en/jsr/detail?id=318[JSR 318]
-(`http://jcp.org/en/jsr/detail?id=318`).
-
-=======================================================================
-
-
-For information about class loader debugging, see
-link:debugging-apps.html#gkpdk[Class Loader Debugging].
-
-[[beadf]][[GSDVG00094]][[the-class-loader-hierarchy]]
-
-The Class Loader Hierarchy
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Class loaders in the GlassFish Server runtime follow a delegation
-hierarchy that is illustrated in the following figure and fully
-described in link:#fvxzq[Table 2-1].
-
-The following table describes the class loaders in the GlassFish Server.
-
-[[GSDVG531]][[sthref4]][[fvxzq]]
-
-
-Table 2-1 Oracle GlassFish Server Class Loaders
-
-[width="100%",cols="20%,80%",options="header",]
-|=======================================================================
-|Class Loader |Description
-|Bootstrap |The Bootstrap class loader loads the basic runtime classes
-provided by the JVM software.
-
-|Extension |The Extension class loader loads classes from JAR files
-present in the system extensions directory, domain-dir`/lib/ext`. It is
-parent to the Public API class loader. See link:#beadk[Using the Java
-Optional Package Mechanism].
-
-|Public API |The Public API class loader makes available all classes
-specifically exported by the GlassFish Server runtime for use by
-deployed applications. This includes, but is not limited to, Java EE
-APIs and other Oracle APIs. It is parent to the Common class loader.
-
-|Common |The Common class loader loads JAR files in the as-install`/lib`
-directory, followed by JAR files in the domain-dir`/lib` directory.
-Using domain-dir`/lib` is recommended whenever possible, and required
-for custom login modules and realms. It is parent to the Connector class
-loader. See link:#beadj[Using the Common Class Loader].
-
-|Connector |The Connector class loader is a single class loader instance
-that loads individually deployed connector modules, which are shared
-across all applications. It is parent to the Applib class loader and the
-LifeCycleModule class loader.
-
-|LifeCycleModule |The LifeCycleModule class loader is created once per
-lifecycle module. Each lifecycle module's classpath is used to construct
-its own class loader. For more information on lifecycle modules, see
-link:lifecycle-listeners.html#beamc[Developing Lifecycle Listeners].
-
-|Applib a|
-The Applib class loader loads the library classes, specified during
-deployment, for a specific enabled module or Java EE application; see
-link:#gatej[Application-Specific Class Loading]. One instance of this
-class loader is present in each class loader universe; see
-link:#beadg[Class Loader Universes]. It is parent to the Archive class
-loader.
-
-When multiple deployed applications use the same library, they share the
-same instance of the library. One library cannot reference classes from
-another library.
-
-| |
-
-|Archive |The Archive class loader loads classes from the WAR, EAR, and
-JAR files or directories (for directory deployment) of applications or
-modules deployed to the GlassFish Server. This class loader also loads
-any application-specific classes generated by the GlassFish Server
-runtime, such as stub classes or servlets generated by JSP pages.
-|=======================================================================
-
-
-In previous GlassFish Server versions, the JVM options provided
-`classpath-prefix` and `classpath-suffix` attributes that made it
-possible to add JAR files or directories either in front of, or after
-the application server's system `classpath`. These options are not
-present in GlassFish Server 6.0.
-
-The `classpath-prefix` was typically used to substitute another package
-for one of the GlassFish Server packages, for example if a newer one was
-available. This same result can be achieved on a per-application basis with the
-`--libraries` option for the `deploy` subcommand. For more information,
-see the link:../reference-manual/deploy.html#GSRFM00114[`deploy`(1)] help page. 
-The Java Optional Package Mechanism does what `classpath-suffix` used to do. For more
-information, see link:#beadk[Using the Java Optional Package Mechanism].
-
-[[gfqpi]][[GSDVG00095]][[delegation]]
-
-Delegation
-~~~~~~~~~~
-
-Note that the class loader hierarchy is not a Java inheritance
-hierarchy, but a delegation hierarchy. In the delegation design, a class
-loader delegates class loading to its parent before attempting to load a
-class itself. If the parent class loader cannot load a class, the class
-loader attempts to load the class itself. In effect, a class loader is
-responsible for loading only the classes not available to the parent.
-Classes loaded by a class loader higher in the hierarchy cannot refer to
-classes available lower in the hierarchy.
-
-The Java Servlet specification recommends that a web module's class
-loader look in the local class loader before delegating to its parent.
-You can make this class loader follow the delegation inversion model in
-the Servlet specification by setting `delegate="false"` in the
-`class-loader` element of the `glassfish-web.xml` file. It is safe to do
-this only for a web module that does not interact with any other
-modules. For details, see "link:../application-deployment-guide/dd-elements.html#GSDPG00110[class-loader]" in GlassFish
-Server Open Source Edition Application Deployment Guide.
-
-The default value is `delegate="true"`, which causes a web module's
-class loader to delegate in the same manner as the other class loaders.
-You must use `delegate="true"` for a web application that accesses EJB
-components or that acts as a web service client or endpoint. For details
-about `glassfish-web.xml`, see the link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open
-Source Edition Application Deployment Guide].
-
-For a number of packages, including `java.*` and `javax.*`, symbol
-resolution is always delegated to the parent class loader regardless of
-the `delegate` setting. This prevents applications from overriding core
-Java runtime classes or changing the API versions of specifications that
-are part of the Java EE platform.
-
-[[beadk]][[GSDVG00096]][[using-the-java-optional-package-mechanism]]
-
-Using the Java Optional Package Mechanism
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Optional packages are packages of Java classes and associated native
-code that application developers can use to extend the functionality of
-the core platform.
-
-To use the Java optional package mechanism, copy the JAR files into the
-domain-dir`/lib/ext` directory, or use the `asadmin add-library` command
-with the `--type ext` option, then restart the server. For more
-information about the `asadmin add-library` command, see the GlassFish
-Server Open Source Edition Reference Manual.
-
-For more information, see
-http://docs.oracle.com/javase/8/docs/technotes/guides/extensions/extensions.html[Optional
-Packages - An Overview]
-(`http://docs.oracle.com/javase/8/docs/technotes/guides/extensions/extensions.html`)
-and
-http://download.oracle.com/javase/tutorial/ext/basics/load.html[Understanding
-Extension Class Loading]
-(`http://docs.oracle.com/javase/tutorial/ext/basics/load.html`).
-
-[[gchif]][[GSDVG00097]][[using-the-endorsed-standards-override-mechanism]]
-
-Using the Endorsed Standards Override Mechanism
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Endorsed standards handle changes to classes and APIs that are bundled
-in the JDK but are subject to change by external bodies.
-
-To use the endorsed standards override mechanism, copy the JAR files
-into the domain-dir`/lib/endorsed` directory, then restart the server.
-
-For more information and the list of packages that can be overridden,
-see
-http://docs.oracle.com/javase/8/docs/technotes/guides/standards/[Endorsed
-Standards Override Mechanism]
-(`http://docs.oracle.com/javase/8/docs/technotes/guides/standards/`).
-
-[[beadg]][[GSDVG00098]][[class-loader-universes]]
-
-Class Loader Universes
-~~~~~~~~~~~~~~~~~~~~~~
-
-Access to components within applications and modules installed on the
-server occurs within the context of isolated class loader universes,
-each of which has its own Applib and Archive class loaders.
-
-* Application Universe - Each Java EE application has its own class
-loader universe, which loads the classes in all the modules in the
-application.
-* Individually Deployed Module Universe - Each individually deployed EJB
-JAR or web WAR has its own class loader universe, which loads the
-classes in the module.
-
-A resource such as a file that is accessed by a servlet, JSP, or EJB
-component must be in one of the following locations:
-
-* A directory pointed to by the Libraries field or `--libraries` option
-used during deployment
-* A directory pointed to by the `library-directory` element in the
-`application.xml` deployment descriptor
-* A directory pointed to by the application or module's classpath; for
-example, a web module's classpath includes these directories: +
-[source,oac_no_warn]
-----
-module-name/WEB-INF/classes
-module-name/WEB-INF/lib
-----
-
-[[gatej]][[GSDVG00099]][[application-specific-class-loading]]
-
-Application-Specific Class Loading
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can specify module- or application-specific library classes in one
-of the following ways:
-
-* Use the Administration Console. Open the Applications component, then
-go to the page for the type of application or module. Select the Deploy
-button. Type the comma-separated paths in the Libraries field. For
-details, click the Help button in the Administration Console.
-* Use the `asadmin deploy` command with the `--libraries` option and
-specify comma-separated paths. For details, see the
-link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-* Use the `asadmin add-library` command with the `--type app` option,
-then restart the server. For details, see the link:../reference-manual/toc.html#GSRFM[GlassFish
-Server Open Source Edition Reference Manual].
-
-
-[NOTE]
-=======================================================================
-
-None of these alternatives apply to application clients. For more
-information, see link:java-clients.html#gjpjt[Using Libraries with
-Application Clients].
-
-=======================================================================
-
-
-You can update a library JAR file using dynamic reloading or by
-restarting (disabling and re-enabling) a module or application. To add
-or remove library JAR files, you can redeploy the module or application.
-
-Application libraries are included in the Applib class loader. Paths to
-libraries can be relative or absolute. A relative path is relative to
-domain-dir`/lib/applibs`. If the path is absolute, the path must be
-accessible to the domain administration server (DAS). The GlassFish
-Server automatically synchronizes these libraries to all remote cluster
-instances when the cluster is restarted. However, libraries specified by
-absolute paths are not guaranteed to be synchronized.
-
-
-[TIP]
-=======================================================================
-
-You can use application-specific class loading to specify a different
-XML parser than the default GlassFish Server XML parser.
-
-You can also use application-specific class loading to access different
-versions of a library from different applications.
-
-=======================================================================
-
-
-If multiple applications or modules refer to the same libraries, classes
-in those libraries are automatically shared. This can reduce the memory
-footprint and allow sharing of static information. However, applications
-or modules using application-specific libraries are not portable. Other
-ways to make libraries available are described in
-link:#beadh[Circumventing Class Loader Isolation].
-
-One library cannot reference classes from another library.
-
-For general information about deployment, including dynamic reloading,
-see the link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition Application
-Deployment Guide].
-
-
-[NOTE]
-=======================================================================
-
-If you see an access control error message when you try to use a
-library, you may need to grant permission to the library in the
-`server.policy` file. For more information, see
-link:securing-apps.html#beabz[Changing Permissions for an Application].
-
-=======================================================================
-
-
-[[beadh]][[GSDVG00100]][[circumventing-class-loader-isolation]]
-
-Circumventing Class Loader Isolation
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Since each application or individually deployed module class loader
-universe is isolated, an application or module cannot load classes from
-another application or module. This prevents two similarly named classes
-in different applications or modules from interfering with each other.
-
-To circumvent this limitation for libraries, utility classes, or
-individually deployed modules accessed by more than one application, you
-can include the relevant path to the required classes in one of these
-ways:
-
-* link:#beadj[Using the Common Class Loader]
-* link:#gcrnt[Sharing Libraries Across a Cluster]
-* link:#beadl[Packaging the Client JAR for One Application in Another
-Application]
-
-[[beadj]][[GSDVG00342]][[using-the-common-class-loader]]
-
-Using the Common Class Loader
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To use the Common class loader, copy the JAR files into the
-domain-dir`/lib` or as-install`/lib` directory, or use the
-`asadmin add-library` command with the `--type common` option, then
-restart the server. For more information about the `asadmin add-library`
-command, see the GlassFish Server Open Source Edition Reference Manual.
-
-Using the Common class loader makes an application or module accessible
-to all applications or modules deployed on servers that share the same
-configuration. However, this accessibility does not extend to
-application clients. For more information, see
-link:java-clients.html#gjpjt[Using Libraries with Application Clients].
-
-For example, using the Common class loader is the recommended way of
-adding JDBC drivers to the GlassFish Server. For a list of the JDBC
-drivers currently supported by the GlassFish Server, see the
-link:../release-notes/toc.html#GSRLN[GlassFish Server Open Source Edition Release Notes]. For
-configurations of supported and other drivers, see
-"link:../administration-guide/jdbc.html#GSADG00579[Configuration Specifics for JDBC Drivers]" in
-GlassFish Server Open Source Edition Administration Guide.
-
-To activate custom login modules and realms, place the JAR files in the
-domain-dir`/lib` directory, then restart the server.
-
-[[gcrnt]][[GSDVG00343]][[sharing-libraries-across-a-cluster]]
-
-Sharing Libraries Across a Cluster
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To share libraries across a specific cluster, copy the JAR files to the
-domain-dir`/config/`cluster-config-name`/lib` directory.
-
-[[beadl]][[GSDVG00344]][[packaging-the-client-jar-for-one-application-in-another-application]]
-
-Packaging the Client JAR for One Application in Another Application
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-By packaging the client JAR for one application in a second application,
-you allow an EJB or web component in the second application to call an
-EJB component in the first (dependent) application, without making
-either of them accessible to any other application or module.
-
-As an alternative for a production environment, you can have the Common
-class loader load the client JAR of the dependent application as
-described in link:#beadj[Using the Common Class Loader]. Restart the
-server to make the dependent application accessible to all applications
-or modules deployed on servers that share the same configuration.
-
-[[fvyab]][[GSDVG00048]][[to-package-the-client-jar-for-one-application-in-another-application]]
-
-To Package the Client JAR for One Application in Another Application
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-1.  Deploy the dependent application.
-2.  Add the dependent application's client JAR file to the calling
-application.
-* For a calling EJB component, add the client JAR file at the same level
-as the EJB component. Then add a `Class-Path` entry to the `MANIFEST.MF`
-file of the calling EJB component. The `Class-Path` entry has this
-syntax: +
-[source,oac_no_warn]
-----
-Class-Path: filepath1.jar filepath2.jar ...
-----
-Each filepath is relative to the directory or JAR file containing the
-`MANIFEST.MF` file. For details, see the Java EE specification.
-* For a calling web component, add the client JAR file under the
-`WEB-INF/lib` directory.
-3.  If you need to package the client JAR with both the EJB and web
-components, set `delegate="true"` in the `class-loader` element of the
-`glassfish-web.xml` file. +
-This changes the Web class loader so that it follows the standard class
-loader delegation model and delegates to its parent before attempting to
-load a class itself. +
-For most applications, packaging the client JAR file with the calling
-EJB component is sufficient. You do not need to package the client JAR
-file with both the EJB and web components unless the web component is
-directly calling the EJB component in the dependent application.
-4.  Deploy the calling application. +
-The calling EJB or web component must specify in its
-`glassfish-ejb-jar.xml` or `glassfish-web.xml` file the JNDI name of the
-EJB component in the dependent application. Using an `ejb-link` mapping
-does not work when the EJB component being called resides in another
-application. +
-You do not need to restart the server.
-
-
diff --git a/docs/application-development-guide/src/main/jbake/content/connectors.adoc b/docs/application-development-guide/src/main/jbake/content/connectors.adoc
deleted file mode 100644
index f188911..0000000
--- a/docs/application-development-guide/src/main/jbake/content/connectors.adoc
+++ /dev/null
@@ -1,679 +0,0 @@
-type=page
-status=published
-title=Developing Connectors
-next=lifecycle-listeners.html
-prev=java-clients.html
-~~~~~~
-Developing Connectors
-=====================
-
-[[GSDVG00013]][[bealk]]
-
-
-[[developing-connectors]]
-11 Developing Connectors
-------------------------
-
-This chapter describes Oracle GlassFish Server support for the Java EE
-Connector Architecture, also known as
-http://jcp.org/en/jsr/detail?id=322[JSR 322]
-(`http://jcp.org/en/jsr/detail?id=322`).
-
-The Java EE Connector Architecture provides a Java solution to the
-problem of connectivity between multiple application servers and
-existing enterprise information systems (EISs). By using the Java EE
-Connector architecture, EIS vendors no longer need to customize their
-product for each application server. Application server vendors who
-conform to the Java EE Connector architecture do not need to write
-custom code to add connectivity to a new EIS.
-
-This chapter uses the terms connector and resource adapter
-interchangeably. Both terms refer to a resource adapter module that is
-developed in conformance with the Java EE Connector Architecture
-Specification.
-
-
-[NOTE]
-=======================================================================
-
-If you installed the Web Profile, connector modules that use only
-outbound communication features and work-management that does not
-involve inbound communication features are supported. Other connector
-features are supported only in the full GlassFish Server.
-
-=======================================================================
-
-
-For more information about connectors, see
-"https://javaee.github.io/tutorial/resources.html[Resource Adapters and
-Contracts]" in The Java EE 8 Tutorial.
-
-For information about deploying a connector to the GlassFish Server, see
-the link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition Application
-Deployment Guide].
-
-The following topics are addressed here:
-
-* link:#beall[Connector Support in the GlassFish Server]
-* link:#bealr[Advanced Connector Configuration Options]
-* link:#bealz[Inbound Communication Support]
-* link:#gizdm[Outbound Communication Support]
-* link:#beama[Configuring a Message Driven Bean to Use a Resource
-Adapter]
-
-[[beall]][[GSDVG00162]][[connector-support-in-the-glassfish-server]]
-
-Connector Support in the GlassFish Server
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The GlassFish Server supports the development and deployment of resource
-adapters that are compatible with the Connector 1.6 specification (and,
-for backward compatibility, the Connector 1.0 and 1.5 specifications).
-
-The Connector 1.0 specification defines the outbound connectivity system
-contracts between the resource adapter and the GlassFish Server. The
-Connector 1.5 specification introduces major additions in defining
-system level contracts between the GlassFish Server and the resource
-adapter with respect to inbound connectivity, life cycle management, and
-thread management. The Connector 1.6 specification introduces further
-additions in defining system level contracts between the GlassFish
-Server and the resource adapter with respect to the following:
-
-* Generic work context contract — A generic contract that enables a
-resource adapter to control the execution context of a `Work` instance
-that it has submitted to the GlassFish Server for execution. The
-`Generic` work contract provides the mechanism for a resource adapter to
-augment the runtime context of a `Work` instance with additional
-contextual information flown-in from the EIS. This contract enables a
-resource adapter to control, in a more flexible manner, the contexts in
-which the `Work` instances submitted by it are executed by the
-application server's `WorkManager`.
-* Security work context — A standard contract that enables a resource
-adapter to establish security information while submitting a `Work`
-instance for execution to a `WorkManager` and while delivering
-messages-to-message endpoints residing in the GlassFish Server. This
-contract provides a mechanism to support the execution of a `Work`
-instance in the context of an established identity. It also supports the
-propagation of user information or Principal information from an EIS to
-a `MessageEndpoint` during message inflow.
-* Transaction context — The transaction context contract between the
-resource adapter and the application server leverages the Generic Work
-Context mechanism by describing a standard `WorkContext`, the
-`TransactionContext`. It represents the standard interface a resource
-adapter can use to propagate transaction context information from the
-EIS to the application server.
-
-[[bealm]][[GSDVG00474]][[connector-architecture-for-jms-and-jdbc]]
-
-Connector Architecture for JMS and JDBC
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-In the Administration Console, connector, JMS, and JDBC resources are
-handled differently, but they use the same underlying Connector
-architecture. In the GlassFish Server, all communication to an EIS,
-whether to a message provider or an RDBMS, happens through the Connector
-architecture. To provide JMS infrastructure to clients, the GlassFish
-Server uses the Open Message Queue software. To provide JDBC
-infrastructure to clients, the GlassFish Server uses its own JDBC system
-resource adapters. The GlassFish Server automatically makes these system
-resource adapters available to any client that requires them.
-
-For more information about JMS in the GlassFish Server, see
-link:jms.html#beaob[Using the Java Message Service]. For more information
-about JDBC in the GlassFish Server, see link:jdbc.html#beamj[Using the
-JDBC API for Database Access].
-
-[[bealn]][[GSDVG00475]][[connector-configuration]]
-
-Connector Configuration
-^^^^^^^^^^^^^^^^^^^^^^^
-
-The GlassFish Server does not need to use `sun-ra.xml`, which previous
-GlassFish Server versions used, to store server-specific deployment
-information inside a Resource Adapter Archive (RAR) file. (However, the
-`sun-ra.xml` file is still supported for backward compatibility.)
-Instead, the information is stored in the server configuration. As a
-result, you can create multiple connector connection pools for a
-connection definition in a functional resource adapter instance, and you
-can create multiple user-accessible connector resources (that is,
-registering a resource with a JNDI name) for a connector connection
-pool. In addition, dynamic changes can be made to connector connection
-pools and the connector resource properties without restarting the
-GlassFish Server.
-
-[[bealr]][[GSDVG00163]][[advanced-connector-configuration-options]]
-
-Advanced Connector Configuration Options
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following topics are addressed here:
-
-* link:#beals[Thread Associations]
-* link:#bealt[Security Maps]
-* link:#giqgt[Work Security Maps]
-* link:#bealu[Overriding Configuration Properties]
-* link:#bealv[Testing a Connector Connection Pool]
-* link:#gizcv[Flushing a Connector Connection Pool]
-* link:#bealw[Handling Invalid Connections]
-* link:#bealx[Setting the Shutdown Timeout]
-* link:#gjjyy[Specifying the Class Loading Policy]
-* link:#bealy[Using Last Agent Optimization of Transactions]
-* link:#gizba[Disabling Pooling for a Connection]
-* link:#gizcs[Using Application-Scoped Connectors]
-
-[[beals]][[GSDVG00476]][[thread-associations]]
-
-Thread Associations
-^^^^^^^^^^^^^^^^^^^
-
-Connectors can submit work instances to the GlassFish Server for
-execution. By default, the GlassFish Server services work requests for
-all connectors from its default thread pool. However, you can associate
-a specific user-created thread pool to service work requests from a
-connector. A thread pool can service work requests from multiple
-resource adapters. To create a thread pool:
-
-* In the Administration Console, select Thread Pools under the relevant
-configuration. For details, click the Help button in the Administration
-Console.
-* Use the `asadmin create-threadpool` command. For details, see the
-link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-
-To associate a connector with a thread pool:
-
-* In the Administration Console, open the Applications component and
-select Resource Adapter Configs. Specify the name of the thread pool in
-the Thread Pool ID field. For details, click the Help button in the
-Administration Console.
-* Use the `--threadpoolid` option of the
-`asadmin create-resource-adapter-config` command. For details, see the
-link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-
-If you create a resource adapter configuration for a connector module
-that is already deployed, the connector module deployment is restarted
-with the new configuration properties.
-
-[[bealt]][[GSDVG00477]][[security-maps]]
-
-Security Maps
-^^^^^^^^^^^^^
-
-Create a security map for a connector connection pool to map an
-application principal or a user group to a back end EIS principal. The
-security map is usually used in situations where one or more EIS back
-end principals are used to execute operations (on the EIS) initiated by
-various principals or user groups in the application.
-
-To create or update security maps for a connector connection pool:
-
-* In the Administration Console, open the Resources component, select
-Connectors, select Connector Connection Pools, and select the Security
-Maps tab. For details, click the Help button in the Administration
-Console.
-* Use the `asadmin create-connector-security-map` command. For details,
-see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference
-Manual].
-
-If a security map already exists for a connector connection pool, the
-new security map is appended to the previous one. The connector security
-map configuration supports the use of the wildcard asterisk (`*`) to
-indicate all users or all user groups.
-
-When an application principal initiates a request to an EIS, the
-GlassFish Server first checks for an exact match to a mapped back end
-EIS principal using the security map defined for the connector
-connection pool. If there is no exact match, the GlassFish Server uses
-the wild card character specification, if any, to determined the mapped
-back end EIS principal.
-
-[[giqgt]][[GSDVG00478]][[work-security-maps]]
-
-Work Security Maps
-^^^^^^^^^^^^^^^^^^
-
-A work security map for a resource adapter maps an EIS principal or
-group to a application principal or group. A work security map is useful
-in situations where one or more application principals execute
-operations initiated by principals or user groups in the EIS. A resource
-adapter can have multiple work security maps. A work security map can
-map either principals or groups, but not both.
-
-To create a work security map, use the
-`asadmin create-connector-work-security-map` command. For details, see
-the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-
-The work security map configuration supports the wildcard asterisk (`*`)
-character to indicate all users or all user groups. When an EIS
-principal sends a request to the GlassFish Server, the GlassFish Server
-first checks for an exact match to a mapped application principal using
-the work security map defined for the resource adapter. If there is no
-exact match, the GlassFish Server uses the wild card character
-specification, if any, to determine the application principal.
-
-[[bealu]][[GSDVG00479]][[overriding-configuration-properties]]
-
-Overriding Configuration Properties
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can override the properties (`config-property` elements) specified
-in the `ra.xml` file of a resource adapter:
-
-* In the Administration Console, open the Resources component and select
-Resource Adapter Configs. Create a new resource adapter configuration or
-select an existing one to edit. Then enter property names and values in
-the Additional Properties table. For details, click the Help button in
-the Administration Console.
-* Use the `asadmin create-resource-adapter-config` command to create a
-configuration for a resource adapter. Use this command's `--property`
-option to specify a name-value pair for a resource adapter property. For
-details, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition
-Reference Manual].
-
-You can specify configuration properties either before or after resource
-adapter deployment. If you specify properties after deploying the
-resource adapter, the existing resource adapter is restarted with the
-new properties.
-
-You can also use token replacement for overriding resource adapter
-configuration properties in individual server instances when the
-resource adapter is deployed to a cluster. For example, for a property
-called `inboundPort`, you can assign the value `${inboundPort}`. You can
-then assign a different value to this property for each server instance.
-Changes to system properties take effect upon server restart.
-
-[[bealv]][[GSDVG00480]][[testing-a-connector-connection-pool]]
-
-Testing a Connector Connection Pool
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can test a connector connection pool for usability in one of these
-ways:
-
-* In the Administration Console, open the Resources component, open the
-Connector component, select Connection Pools, and select the connection
-pool you want to test. Then select the Ping button in the top right
-corner of the page. For details, click the Help button in the
-Administration Console.
-* Use the `asadmin ping-connection-pool` command. For details, see the
-link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-
-Both these commands fail and display an error message unless they
-successfully connect to the connection pool.
-
-You can also specify that a connection pool is automatically tested when
-created or reconfigured by setting the Ping attribute to `true` (the
-default is `false`) in one of the following ways:
-
-* Enter a Ping value in the Connector Connection Pools page in the
-Administration Console. For more information, click the Help button in
-the Administration Console.
-* Specify the `--ping` option in the
-`asadmin create-connector-connection-pool` command. For more
-information, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition
-Reference Manual].
-
-[[gizcv]][[GSDVG00481]][[flushing-a-connector-connection-pool]]
-
-Flushing a Connector Connection Pool
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Flushing a connector connection pool recreates all the connections in
-the pool and brings the pool to the steady pool size without the need
-for reconfiguring the pool. Connection pool reconfiguration can result
-in application redeployment, which is a time-consuming operation.
-Flushing destroys existing connections, and any existing transactions
-are lost and must be retired.
-
-You can flush a connector connection pool in one of these ways:
-
-* In the Administration Console, open the Resources component, open the
-Connector component, select Connection Pools, and select the connection
-pool you want to flush. Then select the Flush button in the top right
-corner of the page. For details, click the Help button in the
-Administration Console.
-* Use the `asadmin flush-connection-pool` command. For details, see the
-link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-
-[[bealw]][[GSDVG00482]][[handling-invalid-connections]]
-
-Handling Invalid Connections
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-If a resource adapter generates a `ConnectionErrorOccured` event, the
-GlassFish Server considers the connection invalid and removes the
-connection from the connection pool. Typically, a resource adapter
-generates a `ConnectionErrorOccured` event when it finds a
-`ManagedConnection` object unusable. Reasons can be network failure with
-the EIS, EIS failure, fatal problems with the resource adapter, and so
-on.
-
-If the `fail-all-connections` setting in the connection pool
-configuration is set to `true`, and a single connection fails, all
-connections are closed and recreated. If this setting is `false`,
-individual connections are recreated only when they are used. The
-default is `false`.
-
-The `is-connection-validation-required` setting specifies whether
-connections have to be validated before being given to the application.
-If a resource's validation fails, it is destroyed, and a new resource is
-created and returned. The default is `false`.
-
-The `prefer-validate-over-recreate` property specifies that validating
-idle connections is preferable to closing them. This property has no
-effect on non-idle connections. If set to `true`, idle connections are
-validated during pool resizing, and only those found to be invalid are
-destroyed and recreated. If `false`, all idle connections are destroyed
-and recreated during pool resizing. The default is `false`.
-
-You can set the `fail-all-connections`,
-`is-connection-validation-required`, and `prefer-validate-over-recreate`
-configuration settings during creation of a connector connection pool.
-Or, you can use the `asadmin set` command to dynamically reconfigure a
-setting. For example:
-
-[source,oac_no_warn]
-----
-asadmin set server.resources.connector-connection-pool.CCP1.fail-all-connections="true"
-asadmin set server.resources.connector-connection-pool.CCP1.is-connection-validation-required="true"
-asadmin set server.resources.connector-connection-pool.CCP1.property.prefer-validate-over-recreate="true"
-----
-
-For details, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition
-Reference Manual].
-
-The interface ValidatingManagedConnectionFactory exposes the method
-`getInvalidConnections` to allow retrieval of the invalid connections.
-The GlassFish Server checks if the resource adapter implements this
-interface, and if it does, invalid connections are removed when the
-connection pool is resized.
-
-[[bealx]][[GSDVG00483]][[setting-the-shutdown-timeout]]
-
-Setting the Shutdown Timeout
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-According to the Connector specification, while an application server
-shuts down, all resource adapters should be stopped. A resource adapter
-might hang during shutdown, since shutdown is typically a resource
-intensive operation. To avoid such a situation, you can set a timeout
-that aborts resource adapter shutdown if exceeded. The default timeout
-is 30 seconds per resource adapter module. To configure this timeout:
-
-* In the Administration Console, select Connector Service under the
-relevant configuration and edit the shutdown Timeout field. For details,
-click the Help button in the Administration Console.
-* Use the following `asadmin set` command: +
-[source,oac_no_warn]
-----
-asadmin set server.connector-service.shutdown-timeout-in-seconds="num-secs"
-----
-For details, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition
-Reference Manual].
-
-The GlassFish Server deactivates all message-driven bean deployments
-before stopping a resource adapter.
-
-[[gjjyy]][[GSDVG00484]][[specifying-the-class-loading-policy]]
-
-Specifying the Class Loading Policy
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `class-loading-policy` setting to determine which resource
-adapters accessible to applications. Allowed values are:
-
-* `derived` — Applications access resource adapters based on references
-in their deployment descriptors. These references can be `resource-ref`,
-`resource-env-ref`, `resource-adapter-mid`, or equivalent annotations.
-* `global` — All stand-alone resource adapters are available to all
-applications.
-
-To configure this setting, use the `asadmin set` command. For example:
-
-[source,oac_no_warn]
-----
-asadmin set server.connector-service.class-loading-policy="global"
-----
-
-For details, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition
-Reference Manual].
-
-[[bealy]][[GSDVG00485]][[using-last-agent-optimization-of-transactions]]
-
-Using Last Agent Optimization of Transactions
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Transactions that involve multiple resources or multiple participant
-processes are distributed or global transactions. A global transaction
-can involve one non-XA resource if last agent optimization is enabled.
-Otherwise, all resources must be XA. For more information about
-transactions in the GlassFish Server, see
-link:transaction-service.html#beanm[Using the Transaction Service].
-
-The Connector specification requires that if a resource adapter supports
-`XATransaction`, the `ManagedConnection` created from that resource
-adapter must support both distributed and local transactions. Therefore,
-even if a resource adapter supports `XATransaction`, you can configure
-its connector connection pools as non-XA or without transaction support
-for better performance. A non-XA resource adapter becomes the last agent
-in the transactions in which it participates.
-
-The value of the connection pool configuration property
-`transaction-support` defaults to the value of the `transaction-support`
-property in the `ra.xml` file. The connection pool configuration
-property can override the `ra.xml` file property if the transaction
-level in the connection pool configuration property is lower. If the
-value in the connection pool configuration property is higher, it is
-ignored.
-
-[[gizba]][[GSDVG00486]][[disabling-pooling-for-a-connection]]
-
-Disabling Pooling for a Connection
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To disable connection pooling, set the Pooling attribute to false. The
-default is true. You can enable or disable connection pooling in one of
-the following ways:
-
-* Enter a Pooling value in the Connector Connection Pools page in the
-Administration Console. For more information, click the Help button in
-the Administration Console.
-* Specify the `--pooling` option in the
-`asadmin create-connector-connection-pool` command. For more
-information, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition
-Reference Manual].
-
-[[gizcs]][[GSDVG00487]][[using-application-scoped-connectors]]
-
-Using Application-Scoped Connectors
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can define an application-scoped connector or other resource for an
-enterprise application, web module, EJB module, connector module, or
-application client module by supplying a `glassfish-resources.xml`
-deployment descriptor file. For details, see
-"link:../application-deployment-guide/deploying-applications.html#GSDPG00075[Application-Scoped Resources]" in GlassFish Server
-Open Source Edition Application Deployment Guide.
-
-[[bealz]][[GSDVG00164]][[inbound-communication-support]]
-
-Inbound Communication Support
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The Connector specification defines the transaction and message inflow
-system contracts for achieving inbound connectivity from an EIS. The
-message inflow contract also serves as a standard message provider
-pluggability contract, thereby allowing various message providers to
-seamlessly plug in their products with any application server that
-supports the message inflow contract. In the inbound communication
-model, the EIS initiates all communication to an application. An
-application can be composed of enterprise beans (session, entity, or
-message-driven beans), which reside in an EJB container.
-
-Incoming messages are received through a message endpoint, which is a
-message-driven bean. This message-driven bean asynchronously consumes
-messages from a message provider. An application can also synchronously
-send and receive messages directly using messaging style APIs.
-
-A resource adapter supporting inbound communication provides an instance
-of an `ActivationSpec` JavaBean class for each supported message
-listener type. Each class contains a set of configurable properties that
-specify endpoint activation configuration information during
-message-driven bean deployment. The required `config-property` element
-in the `ra.xml` file provides a list of configuration property names
-required for each activation specification. An endpoint activation fails
-if the required property values are not specified. Values for the
-properties that are overridden in the message-driven bean's deployment
-descriptor are applied to the `ActivationSpec` JavaBean when the
-message-driven bean is deployed.
-
-Administered objects can also be specified for a resource adapter, and
-these JavaBeans are specific to a messaging style or message provider.
-For example, some messaging styles may need applications to use special
-administered objects (such as Queue and Topic objects in JMS).
-Applications use these objects to send and synchronously receive
-messages using connection objects using messaging style APIs. For more
-information about administered objects, see link:jms.html#beaob[Using the
-Java Message Service].
-
-[[gizdm]][[GSDVG00165]][[outbound-communication-support]]
-
-Outbound Communication Support
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The Connector specification defines the system contracts for achieving
-outbound connectivity from an EIS. A resource adapter supporting
-outbound communication provides an instance of a
-`ManagedConnectionFactory` JavaBean class. A `ManagedConnectionFactory`
-JavaBean represents outbound connectivity information to an EIS instance
-from an application.
-
-The 1.6 Connector specification introduces a mechanism through which the
-transaction level of a `ManagedConnectionFactory` can be detected at
-runtime. During the configuration of a `ManagedConnectionFactory` in the
-Connector Connection Pools page in the Administration Console, the
-Administration Console can instantiate the `ManagedConnectionFactory`
-and show the level of transaction support. The three levels are `no-tx`,
-`local-tx`, `xa-tx`. If a `ManagedConnectionFactory` returns `local-tx`
-as the level it can support, it is assumed that `xa-tx` is not
-supported, and the Administration Console shows only `no-tx` and
-`local-tx` as the available support levels.
-
-For more information, click the Help button in the Administration
-Console.
-
-[[beama]][[GSDVG00166]][[configuring-a-message-driven-bean-to-use-a-resource-adapter]]
-
-Configuring a Message Driven Bean to Use a Resource Adapter
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The Connectors specification's message inflow contract provides a
-generic mechanism to plug in a wide-range of message providers,
-including JMS, into a Java-EE-compatible application server. Message
-providers use a resource adapter and dispatch messages to message
-endpoints, which are implemented as message-driven beans.
-
-The message-driven bean developer provides activation configuration
-information in the message-driven bean's `ejb-jar.xml` file.
-Configuration information includes messaging-style-specific
-configuration details, and possibly message-provider-specific details as
-well. The message-driven bean deployer uses this configuration
-information to set up the activation specification JavaBean. The
-activation configuration properties specified in `ejb-jar.xml` override
-configuration properties in the activation specification definition in
-the `ra.xml` file.
-
-According to the EJB specification, the messaging-style-specific
-descriptor elements contained within the activation configuration
-element are not specified because they are specific to a messaging
-provider. In the following sample message-driven bean `ejb-jar.xml`, a
-message-driven bean has the following activation configuration property
-names: `destinationType`, `SubscriptionDurability`, and
-`MessageSelector`.
-
-[source,oac_no_warn]
-----
-<!--  A sample MDB that listens to a JMS Topic -->
-<!-- message-driven bean deployment descriptor -->
-...
- <activation-config>
-   <activation-config-property>
-     <activation-config-property-name>
-       destinationType
-     </activation-config-property-name>
-     <activation-config-property-value>
-       jakarta.jms.Topic
-     </activation-config-property-value>
-  </activation-config-property>
-  <activation-config-property>
-     <activation-config-property-name>
-       SubscriptionDurability
-     </activation-config-property-name>
-     <activation-config-property-value>
-       Durable
-     </activation-config-property-value>
-  </activation-config-property>
-  <activation-config-property>
-     <activation-config-property-name>
-       MessageSelector
-     </activation-config-property-name>
-     <activation-config-property-value>
-       JMSType = 'car' AND color = 'blue'
-     </activation-config-property-value>
-  </activation-config-property>
- ...
- </activation-config>
-...
-----
-
-When the message-driven bean is deployed, the value for the
-`resource-adapter-mid` element in the `glassfish-ejb-jar.xml` file is
-set to the resource adapter module name that delivers messages to the
-message endpoint (to the message-driven bean). In the following example,
-the `jmsra` JMS resource adapter, which is the bundled resource adapter
-for the Message Queue message provider, is specified as the resource
-adapter module identifier for the `SampleMDB` bean.
-
-[source,oac_no_warn]
-----
-<glassfish-ejb-jar>
-<enterprise-beans>
-    <unique-id>1</unique-id>
-    <ejb>
-       <ejb-name>SampleMDB</ejb-name>
-       <jndi-name>SampleQueue</jndi-name>
-    <!-- JNDI name of the destination from which messages would be 
-         delivered from MDB needs to listen to -->
-    ...
-    <mdb-resource-adapter>
-       <resource-adapter-mid>jmsra</resource-adapter-mid>
-       <!-- Resource Adapter Module Id that would deliver messages to 
-            this message endpoint -->
-       </mdb-resource-adapter>
-    ...
- </ejb>
- ...
-</enterprise-beans>
-...
-</glassfish-ejb-jar>
-----
-
-When the message-driven bean is deployed, the GlassFish Server uses the
-`resourceadapter-mid` setting to associate the resource adapter with a
-message endpoint through the message inflow contract. This message
-inflow contract with the GlassFish Server gives the resource adapter a
-handle to the `MessageEndpointFactory` and the `ActivationSpec`
-JavaBean, and the adapter uses this handle to deliver messages to the
-message endpoint instances (which are created by the
-`MessageEndpointFactory`).
-
-When a message-driven bean first created for use on the GlassFish Server
-7 is deployed, the Connector runtime transparently transforms the
-previous deployment style to the current connector-based deployment
-style. If the deployer specifies neither a `resource-adapter-mid`
-element nor the Message Queue resource adapter's activation
-configuration properties, the Connector runtime maps the message-driven
-bean to the `jmsra` system resource adapter and converts the
-JMS-specific configuration to the Message Queue resource adapter's
-activation configuration properties.
-
-
diff --git a/docs/application-development-guide/src/main/jbake/content/container_managed-persistence.adoc b/docs/application-development-guide/src/main/jbake/content/container_managed-persistence.adoc
deleted file mode 100644
index 534ff59..0000000
--- a/docs/application-development-guide/src/main/jbake/content/container_managed-persistence.adoc
+++ /dev/null
@@ -1,1569 +0,0 @@
-type=page
-status=published
-title=Using Container-Managed Persistence
-next=java-clients.html
-prev=ejb.html
-~~~~~~
-Using Container-Managed Persistence
-===================================
-
-[[GSDVG00011]][[beajj]]
-
-
-[[using-container-managed-persistence]]
-9 Using Container-Managed Persistence
--------------------------------------
-
-This chapter contains information on how EJB 2.1 container-managed
-persistence (CMP) works in Oracle GlassFish Server.
-
-The following topics are addressed here:
-
-* link:#beajk[GlassFish Server Support for CMP]
-* link:#beajl[CMP Mapping]
-* link:#beajv[Automatic Schema Generation for CMP]
-* link:#beajy[Schema Capture]
-* link:#beakb[Configuring the CMP Resource]
-* link:#beaki[Performance-Related Features]
-* link:#beakc[Configuring Queries for 1.1 Finders]
-* link:#beakm[CMP Restrictions and Optimizations]
-
-
-[NOTE]
-=======================================================================
-
-The Web Profile of the GlassFish Server supports the EJB 3.1 Lite
-specification, which allows enterprise beans within web applications,
-among other features. The full GlassFish Server supports the entire EJB
-3.1 specification. For details, see
-http://jcp.org/en/jsr/detail?id=318[JSR 318]
-(`http://jcp.org/en/jsr/detail?id=318`).
-
-=======================================================================
-
-
-[[beajk]][[GSDVG00150]][[glassfish-server-support-for-cmp]]
-
-GlassFish Server Support for CMP
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-GlassFish Server support for EJB 2.1 CMP beans includes:
-
-* Full support for the J2EE v1.4 specification's CMP model. Extensive
-information on CMP is contained in chapters 10, 11, and 14 of the
-Enterprise JavaBeans Specification, v2.1. This includes the following:
-
-** Support for commit options B and C for transactions. See
-link:transaction-service.html#beajh[Commit Options].
-
-** The primary key class must be a subclass of `java.lang.Object`. This
-ensures portability, and is noted because some vendors allow primitive
-types (such as `int`) to be used as the primary key class.
-* The GlassFish Server CMP implementation, which provides the following:
-
-** An Object/Relational (O/R) mapping tool that creates XML deployment
-descriptors for EJB JAR files that contain beans that use CMP.
-
-** Support for compound (multi-column) primary keys.
-
-** Support for sophisticated custom finder methods.
-
-** Standards-based query language (EJB QL).
-
-** CMP runtime support. See link:#beakb[Configuring the CMP Resource].
-* GlassFish Server performance-related features, including the
-following:
-
-** Version column consistency checking
-
-** Relationship prefetching
-
-** Read-Only Beans +
-For details, see link:#beaki[Performance-Related Features].
-
-[[beajl]][[GSDVG00151]][[cmp-mapping]]
-
-CMP Mapping
-~~~~~~~~~~~
-
-Implementation for entity beans that use CMP is mostly a matter of
-mapping CMP fields and CMR fields (relationships) to the database.
-
-The following topics are addressed here:
-
-* link:#beajm[Mapping Capabilities]
-* link:#beajn[The Mapping Deployment Descriptor File]
-* link:#beajo[Mapping Considerations]
-
-[[beajm]][[GSDVG00434]][[mapping-capabilities]]
-
-Mapping Capabilities
-^^^^^^^^^^^^^^^^^^^^
-
-Mapping refers to the ability to tie an object-based model to a
-relational model of data, usually the schema of a relational database.
-The CMP implementation provides the ability to tie a set of interrelated
-beans containing data and associated behaviors to the schema. This
-object representation of the database becomes part of the Java
-application. You can also customize this mapping to optimize these beans
-for the particular needs of an application. The result is a single data
-model through which both persistent database information and regular
-transient program data are accessed.
-
-The mapping capabilities provided by the GlassFish Server include:
-
-* Mapping a CMP bean to one or more tables
-* Mapping CMP fields to one or more columns
-* Mapping CMP fields to different column types
-* Mapping tables with compound primary keys
-* Mapping tables with unknown primary keys
-* Mapping CMP relationships to foreign keys
-* Mapping tables with overlapping primary and foreign keys
-
-[[beajn]][[GSDVG00435]][[the-mapping-deployment-descriptor-file]]
-
-The Mapping Deployment Descriptor File
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Each module with CMP beans must have the following files:
-
-* `ejb-jar.xml` - The J2EE standard file for assembling enterprise
-beans. For a detailed description, see the Enterprise JavaBeans
-Specification, v2.1.
-* `glassfish-ejb-jar.xml` - The GlassFish Server standard file for
-assembling enterprise beans. For a detailed description, see
-"link:../application-deployment-guide/dd-files.html#GSDPG00079[The glassfish-ejb-jar.xml File]" in GlassFish Server
-Open Source Edition Application Deployment Guide.
-* `sun-cmp-mappings.xml` - The mapping deployment descriptor file, which
-describes the mapping of CMP beans to tables in a database. For a
-detailed description, see "link:../application-deployment-guide/dd-files.html#GSDPG00080[The sun-cmp-mappings.xml
-File]" in GlassFish Server Open Source Edition Application Deployment
-Guide.
-
-The `sun-cmp-mappings.xml` file can be automatically generated and does
-not have to exist prior to deployment. For details, see
-link:#beajx[Generation Options for CMP].
-
-The `sun-cmp-mappings.xml` file maps CMP fields and CMR fields
-(relationships) to the database. A primary table must be selected for
-each CMP bean, and optionally, multiple secondary tables. CMP fields are
-mapped to columns in either the primary or secondary table(s). CMR
-fields are mapped to pairs of column lists (normally, column lists are
-the lists of columns associated with primary and foreign keys).
-
-
-[NOTE]
-=======================================================================
-
-Table names in databases can be case-sensitive. Make sure that the table
-names in the `sun-cmp-mappings.xml` file match the names in the
-database.
-
-Relationships should always be mapped to the primary key field(s) of the
-related table.
-
-=======================================================================
-
-
-The `sun-cmp-mappings.xml` file conforms to the
-`sun-cmp-mapping_1_2.dtd` file and is packaged with the user-defined
-bean classes in the EJB JAR file under the `META-INF` directory.
-
-The GlassFish Server creates the mappings in the `sun-cmp-mappings.xml`
-file automatically during deployment if the file is not present.
-
-To map the fields and relationships of your entity beans manually, edit
-the `sun-cmp-mappings.xml` deployment descriptor. Only do this if you
-are proficient in editing XML.
-
-The mapping information is developed in conjunction with the database
-schema (`.dbschema`) file, which can be automatically captured when you
-deploy the bean (see link:#beajz[Automatic Database Schema Capture]).
-You can manually generate the schema using the `capture-schema` utility
-(link:#beaka[Using the `capture-schema` Utility]).
-
-[[beajo]][[GSDVG00436]][[mapping-considerations]]
-
-Mapping Considerations
-^^^^^^^^^^^^^^^^^^^^^^
-
-The following topics are addressed here:
-
-* link:#beajp[Join Tables and Relationships]
-* link:#beajq[Automatic Primary Key Generation]
-* link:#beajr[Fixed Length CHAR Primary Keys]
-* link:#beajs[Managed Fields]
-* link:#beajt[BLOB Support]
-* link:#beaju[CLOB Support]
-
-The data types used in automatic schema generation are also suggested
-for manual mapping. These data types are described in
-link:#beajw[Supported Data Types for CMP].
-
-[[beajp]][[GSDVG00303]][[join-tables-and-relationships]]
-
-Join Tables and Relationships
-+++++++++++++++++++++++++++++
-
-Use of join tables in the database schema is supported for all types of
-relationships, not just many-to-many relationships. For general
-information about relationships, see section 10.3.7 of the Enterprise
-JavaBeans Specification, v2.1.
-
-[[beajq]][[GSDVG00304]][[automatic-primary-key-generation]]
-
-Automatic Primary Key Generation
-++++++++++++++++++++++++++++++++
-
-The GlassFish Server supports automatic primary key generation for EJB
-1.1, 2.0, and 2.1 CMP beans. To specify automatic primary key
-generation, give the `prim-key-class` element in the `ejb-jar.xml` file
-the value `java.lang.Object`. CMP beans with automatically generated
-primary keys can participate in relationships with other CMP beans. The
-GlassFish Server does not support database-generated primary key values.
-
-If the database schema is created during deployment, the GlassFish
-Server creates the schema with the primary key column, then generates
-unique values for the primary key column at runtime.
-
-If the database schema is not created during deployment, the primary key
-column in the mapped table must be of type `NUMERIC` with a precision of
-19 or more, and must not be mapped to any CMP field. The GlassFish
-Server generates unique values for the primary key column at runtime.
-
-[[beajr]][[GSDVG00305]][[fixed-length-char-primary-keys]]
-
-Fixed Length CHAR Primary Keys
-++++++++++++++++++++++++++++++
-
-If an existing database table has a primary key column in which the
-values vary in length, but the type is `CHAR` instead of `VARCHAR`, the
-GlassFish Server automatically trims any extra spaces when retrieving
-primary key values. It is not a good practice to use a fixed length
-`CHAR` column as a primary key. Use this feature with schemas that
-cannot be changed, such as a schema inherited from a legacy application.
-
-[[beajs]][[GSDVG00306]][[managed-fields]]
-
-Managed Fields
-++++++++++++++
-
-A managed field is a CMP or CMR field that is mapped to the same
-database column as another CMP or CMR field. CMP fields mapped to the
-same column and CMR fields mapped to exactly the same column lists
-always have the same value in memory. For CMR fields that share only a
-subset of their mapped columns, changes to the columns affect the
-relationship fields in memory differently. Basically, the GlassFish
-Server always tries to keep the state of the objects in memory
-synchronized with the database.
-
-A managed field can have any `fetched-with` subelement. If the
-`fetched-with` subelement is `<default/>`, the
-`-DAllowManagedFieldsInDefaultFetchGroup` flag must be set to `true`.
-See link:#gemln[Default Fetch Group Flags] and
-"link:../application-deployment-guide/dd-elements.html#GSDPG00153[fetched-with]" in GlassFish Server Open Source Edition
-Application Deployment Guide.
-
-[[beajt]][[GSDVG00307]][[blob-support]]
-
-BLOB Support
-++++++++++++
-
-Binary Large Object (BLOB) is a data type used to store values that do
-not correspond to other types such as numbers, strings, or dates. Java
-fields whose types implement java.io.Serializable or are represented as
-`byte[]` can be stored as BLOBs.
-
-If a CMP field is defined as Serializable, it is serialized into a
-`byte[]` before being stored in the database. Similarly, the value
-fetched from the database is deserialized. However, if a CMP field is
-defined as `byte[]`, it is stored directly instead of being serialized
-and deserialized when stored and fetched, respectively.
-
-To enable BLOB support in the GlassFish Server environment, define a CMP
-field of type `byte[]` or a user-defined type that implements the
-java.io.Serializable interface. If you map the CMP bean to an existing
-database schema, map the field to a column of type BLOB.
-
-To use BLOB or CLOB data types larger than 4 KB for CMP using the Inet
-Oraxo JDBC Driver for Oracle Databases, you must set the `streamstolob`
-property value to `true`.
-
-For a list of the JDBC drivers currently supported by the GlassFish
-Server, see the link:../release-notes/toc.html#GSRLN[GlassFish Server Open Source Edition Release
-Notes]. For configurations of supported and other drivers, see
-"link:../administration-guide/jdbc.html#GSADG00579[Configuration Specifics for JDBC Drivers]" in
-GlassFish Server Open Source Edition Administration Guide.
-
-For automatic mapping, you might need to change the default BLOB column
-length for the generated schema using the `schema-generator-properties`
-element in `glassfish-ejb-jar.xml`. See your database vendor
-documentation to determine whether you need to specify the length. For
-example:
-
-[source,oac_no_warn]
-----
-<schema-generator-properties>
-   <property>
-      <name>Employee.voiceGreeting.jdbc-type</name>
-      <value>BLOB</value>
-   </property>
-   <property>
-      <name>Employee.voiceGreeting.jdbc-maximum-length</name>
-      <value>10240</value>
-   </property>
-   ...
-</schema-generator-properties>
-----
-
-[[beaju]][[GSDVG00308]][[clob-support]]
-
-CLOB Support
-++++++++++++
-
-Character Large Object (CLOB) is a data type used to store and retrieve
-very long text fields. CLOBs translate into long strings.
-
-To enable CLOB support in the GlassFish Server environment, define a CMP
-field of type `java.lang.String`. If you map the CMP bean to an existing
-database schema, map the field to a column of type CLOB.
-
-To use BLOB or CLOB data types larger than 4 KB for CMP using the Inet
-Oraxo JDBC Driver for Oracle Databases, you must set the `streamstolob`
-property value to `true`.
-
-For a list of the JDBC drivers currently supported by the GlassFish
-Server, see the link:../release-notes/toc.html#GSRLN[GlassFish Server Open Source Edition Release
-Notes]. For configurations of supported and other drivers, see
-"link:../administration-guide/jdbc.html#GSADG00579[Configuration Specifics for JDBC Drivers]" in
-GlassFish Server Open Source Edition Administration Guide.
-
-For automatic mapping, you might need to change the default CLOB column
-length for the generated schema using the `schema-generator-properties`
-element in `glassfish-ejb-jar.xml`. See your database vendor
-documentation to determine whether you need to specify the length. For
-example:
-
-[source,oac_no_warn]
-----
-<schema-generator-properties>
-   <property>
-      <name>Employee.resume.jdbc-type</name>
-      <value>CLOB</value>
-   </property>
-   <property>
-      <name>Employee.resume.jdbc-maximum-length</name>
-      <value>10240</value>
-   </property>
-   ...
-</schema-generator-properties>
-----
-
-[[beajv]][[GSDVG00152]][[automatic-schema-generation-for-cmp]]
-
-Automatic Schema Generation for CMP
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The automatic schema generation feature provided in the GlassFish Server
-defines database tables based on the fields in entity beans and the
-relationships between the fields. This insulates developers from many of
-the database related aspects of development, allowing them to focus on
-entity bean development. The resulting schema is usable as-is or can be
-given to a database administrator for tuning with respect to
-performance, security, and so on.
-
-The following topics are addressed here:
-
-* link:#beajw[Supported Data Types for CMP]
-* link:#beajx[Generation Options for CMP]
-
-
-[NOTE]
-=======================================================================
-
-Automatic schema generation is supported on an all-or-none basis: it
-expects that no tables exist in the database before it is executed. It
-is not intended to be used as a tool to generate extra tables or
-constraints.
-
-Deployment won't fail if all tables are not created, and undeployment
-won't fail if not all tables are dropped. This is done to allow you to
-investigate the problem and fix it manually. You should not rely on the
-partially created database schema to be correct for running the
-application.
-
-=======================================================================
-
-
-[[beajw]][[GSDVG00437]][[supported-data-types-for-cmp]]
-
-Supported Data Types for CMP
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-CMP supports a set of JDBC data types that are used in mapping Java data
-fields to SQL types. Supported JDBC data types are as follows: BIGINT,
-BIT, BLOB, CHAR, CLOB, DATE, DECIMAL, DOUBLE, FLOAT, INTEGER, NUMERIC,
-REAL, SMALLINT, TIME, TIMESTAMP, TINYINT, VARCHAR.
-
-The following table contains the mappings of Java types to JDBC types
-when automatic mapping is used.
-
-[[GSDVG550]][[sthref19]][[fvyaq]]
-
-
-Table 9-1 Java Type to JDBC Type Mappings for CMP
-
-[width="100%",cols="39%,40%,21%",options="header",]
-|============================================
-|Java Type |JDBC Type |Nullability
-|`boolean` |`BIT` |No
-|`java.lang.Boolean` |`BIT` |Yes
-|`byte` |`TINYINT` |No
-|`java.lang.Byte` |`TINYINT` |Yes
-|`double` |`DOUBLE` |No
-|`java.lang.Double` |`DOUBLE` |Yes
-|`float` |`REAL` |No
-|`java.lang.Float` |`REAL` |Yes
-|`int` |`INTEGER` |No
-|`java.lang.Integer` |`INTEGER` |Yes
-|`long` |`BIGINT` |No
-|`java.lang.Long` |`BIGINT` |Yes
-|`short` |`SMALLINT` |No
-|`java.lang.Short` |`SMALLINT` |Yes
-|`java.math.BigDecimal` |`DECIMAL` |Yes
-|`java.math.BigInteger` |`DECIMAL` |Yes
-|`char` |`CHAR` |No
-|`java.lang.Character` |`CHAR` |Yes
-|`java.lang.String` |`VARCHAR` or `CLOB` |Yes
-|Serializable |`BLOB` |Yes
-|`byte[]` |`BLOB` |Yes
-|`java.util.Date` a|
-`DATE` (Oracle only)
-
-`TIMESTAMP` (all other databases)
-
- |Yes
-|`java.sql.Date` |`DATE` |Yes
-|`java.sql.Time` |`TIME` |Yes
-|`java.sql.Timestamp` |`TIMESTAMP` |Yes
-|============================================
-
-
-
-[NOTE]
-=======================================================================
-
-Java types assigned to CMP fields must be restricted to Java primitive
-types, Java Serializable types, `java.util.Date`, `java.sql.Date`,
-`java.sql.Time`, or `java.sql.Timestamp`. An entity bean local interface
-type (or a collection of such) can be the type of a CMR field.
-
-=======================================================================
-
-
-The following table contains the mappings of JDBC types to database
-vendor-specific types when automatic mapping is used. For a list of the
-JDBC drivers currently supported by the GlassFish Server, see the
-link:../release-notes/toc.html#GSRLN[GlassFish Server Open Source Edition Release Notes]. For
-configurations of supported and other drivers, see
-"link:../administration-guide/jdbc.html#GSADG00579[Configuration Specifics for JDBC Drivers]" in
-GlassFish Server Open Source Edition Administration Guide.
-
-[[GSDVG551]][[sthref20]][[fvymp]]
-
-
-Table 9-2 Mappings of JDBC Types to Database Vendor Specific Types for
-CMP
-
-[width="100%",cols="15%,17%,17%,17%,17%,17%",options="header",]
-|=======================================================================
-|JDBC Type |Apache Derby, CloudScape |Oracle |DB2 |Sybase ASE 12.5
-|MS-SQL Server
-|`BIT` |`SMALLINT` |`SMALLINT` |`SMALLINT` |`TINYINT` |`BIT`
-
-|`TINYINT` |`SMALLINT` |`SMALLINT` |`SMALLINT` |`TINYINT` |`TINYINT`
-
-|`SMALLINT` |`SMALLINT` |`SMALLINT` |`SMALLINT` |`SMALLINT` |`SMALLINT`
-
-|`INTEGER` |`INTEGER` |`INTEGER` |`INTEGER` |`INTEGER` |`INTEGER`
-
-|`BIGINT` |`BIGINT` |`NUMBER` |`BIGINT` |`NUMERIC` |`NUMERIC`
-
-|`REAL` |`REAL` |`REAL` |`FLOAT` |`FLOAT` |`REAL`
-
-|`DOUBLE` |`DOUBLE PRECISION` |`DOUBLE PRECISION` |`DOUBLE`
-|`DOUBLE PRECISION` |`FLOAT`
-
-|`DECIMAL(p,s)` |`DECIMAL(p,s)` |`NUMBER(p,s)` |`DECIMAL(p,s)`
-|`DECIMAL(p,s)` |`DECIMAL(p,s)`
-
-|`VARCHAR` |`VARCHAR` |`VARCHAR2` |`VARCHAR` |`VARCHAR` |`VARCHAR`
-
-|`DATE` |`DATE` |`DATE` |`DATE` |`DATETIME` |`DATETIME`
-
-|`TIME` |`TIME` |`DATE` |`TIME` |`DATETIME` |`DATETIME`
-
-|`TIMESTAMP` |`TIMESTAMP` |`TIMESTAMP(9)` |`TIMESTAMP` |`DATETIME`
-|`DATETIME`
-
-|`BLOB` |`BLOB` |`BLOB` |`BLOB` |`IMAGE` |`IMAGE`
-
-|`CLOB` |`CLOB` |`CLOB` |`CLOB` |`TEXT` |`NTEXT`
-|=======================================================================
-
-
-[[beajx]][[GSDVG00438]][[generation-options-for-cmp]]
-
-Generation Options for CMP
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Deployment descriptor elements or `asadmin` command line options can
-control automatic schema generation by the following:
-
-* Creating tables during deployment
-* Dropping tables during undeployment
-* Dropping and creating tables during redeployment
-* Specifying the database vendor
-* Specifying that table names are unique
-* Specifying type mappings for individual CMP fields
-
-
-[NOTE]
-=======================================================================
-
-Before using these options, make sure you have a properly configured CMP
-resource. See link:#beakb[Configuring the CMP Resource].
-
-For a read-only bean, do not create the database schema during
-deployment. Instead, work with your database administrator to populate
-the data into the tables. See link:ejb.html#beail[Using Read-Only Beans].
-
-Automatic schema generation is not supported for beans with version
-column consistency checking. Instead, work with your database
-administrator to create the schema and add the required triggers. See
-link:#beakj[Version Column Consistency Checking].
-
-=======================================================================
-
-
-The following optional data subelements of the `cmp-resource` element in
-the `glassfish-ejb-jar.xml` file control the automatic creation of
-database tables at deployment. For more information about the
-`cmp-resource` element, see "link:../application-deployment-guide/dd-elements.html#GSDPG00115[cmp-resource]" in
-GlassFish Server Open Source Edition Application Deployment Guide and
-link:#beakb[Configuring the CMP Resource].
-
-[[GSDVG552]][[sthref21]][[fvymo]]
-
-
-Table 9-3 The `glassfish-ejb-jar.xml` Generation Elements
-
-[width="172%",cols="20%,46%,34%",options="header",]
-|=======================================================================
-|Element |Default |Description
-|link:../application-deployment-guide/dd-elements.html#GSDPG00131[`create-tables-at-deploy`] |`false` |If `true`, causes
-database tables to be created for beans that are automatically mapped by
-the EJB container. No unique constraints are created. If `false`, does
-not create tables.
-
-|link:../application-deployment-guide/dd-elements.html#GSDPG00141[`drop-tables-at-undeploy`] |`false` |If `true`, causes
-database tables that were automatically created when the bean(s) were
-last deployed to be dropped when the bean(s) are undeployed. If `false`,
-does not drop tables.
-
-|link:../application-deployment-guide/dd-elements.html#GSDPG00133[`database-vendor-name`] |none a|
-Specifies the name of the database vendor for which tables are created.
-Allowed values are `javadb`, `db2`, `mssql`, `mysql`, `oracle`,
-`postgresql`, `pointbase`, `derby` (also for CloudScape), and `sybase`,
-case-insensitive.
-
-If no value is specified, a connection is made to the resource specified
-by the `jndi-name` subelement of the `cmp-resource` element in the
-`glassfish-ejb-jar.xml` file, and the database vendor name is read. If
-the connection cannot be established, or if the value is not recognized,
-SQL-92 compliance is presumed.
-
-|link:../application-deployment-guide/dd-elements.html#GSDPG00261[`schema-generator-properties`] |none a|
-Specifies field-specific column attributes in `property` subelements.
-Each property name is of the following format:
-
-bean-name`.`field-name`.`attribute
-
-For example:
-
-`Employee.firstName.jdbc-type`
-
-Also allows you to set the `use-unique-table-names` property. If `true`,
-this property specifies that generated table names are unique within
-each GlassFish Server domain. The default is `false`.
-
-For further information and an example, see
-"link:../application-deployment-guide/dd-elements.html#GSDPG00261[schema-generator-properties]" in GlassFish Server Open
-Source Edition Application Deployment Guide.
-
-|=======================================================================
-
-
-The following options of the `asadmin deploy` or `asadmin deploydir`
-command control the automatic creation of database tables at deployment.
-
-[[GSDVG553]][[sthref22]][[fvymn]]
-
-
-Table 9-4 The `asadmin deploy` and `asadmin deploydir` Generation
-Options for CMP
-
-[width="172%",cols="16%,46%,38%",options="header",]
-|=======================================================================
-|Option |Default |Description
-|`--createtables` |none |If `true`, causes database tables to be created
-for beans that need them. No unique constraints are created. If `false`,
-does not create tables. If not specified, the value of the
-`create-tables-at-deploy` attribute in `glassfish-ejb-jar.xml` is used.
-
-|`--dropandcreatetables` |none a|
-If `true`, and if tables were automatically created when this
-application was last deployed, tables from the earlier deployment are
-dropped and fresh ones are created.
-
-If `true`, and if tables were not automatically created when this
-application was last deployed, no attempt is made to drop any tables. If
-tables with the same names as those that would have been automatically
-created are found, the deployment proceeds, but a warning indicates that
-tables could not be created.
-
-If `false`, settings of `create-tables-at-deploy` or
-`drop-tables-at-undeploy` in the `glassfish-ejb-jar.xml` file are
-overridden.
-
-|`--uniquetablenames` |none |If `true`, specifies that table names are
-unique within each GlassFish Server domain. If not specified, the value
-of the `use-unique-table-names` property in `glassfish-ejb-jar.xml` is
-used.
-
-|`--dbvendorname` |none a|
-Specifies the name of the database vendor for which tables are created.
-Allowed values are `javadb`, `db2`, `mssql`, `oracle`, `postgresql`,
-`pointbase`, `derby` (also for CloudScape), and `sybase`,
-case-insensitive.
-
-If not specified, the value of the `database-vendor-name` attribute in
-`glassfish-ejb-jar.xml` is used.
-
-If no value is specified, a connection is made to the resource specified
-by the `jndi-name` subelement of the `cmp-resource` element in the
-`glassfish-ejb-jar.xml` file, and the database vendor name is read. If
-the connection cannot be established, or if the value is not recognized,
-SQL-92 compliance is presumed.
-
-|=======================================================================
-
-
-If one or more of the beans in the module are manually mapped and you
-use any of the `asadmin deploy` or `asadmin deploydir` options, the
-deployment is not harmed in any way, but the options have no effect, and
-a warning is written to the server log.
-
-The following options of the `asadmin undeploy` command control the
-automatic removal of database tables at undeployment.
-
-[[GSDVG554]][[sthref23]][[fvymt]]
-
-
-Table 9-5 The `asadmin undeploy` Generation Options for CMP
-
-[width="172%",cols="10%,46%,44%",options="header",]
-|=======================================================================
-|Option |Default |Description
-|`--droptables` |none a|
-If `true`, causes database tables that were automatically created when
-the bean(s) were last deployed to be dropped when the bean(s) are
-undeployed. If `false`, does not drop tables.
-
-If not specified, the value of the `drop-tables-at-undeploy` attribute
-in `glassfish-ejb-jar.xml` is used.
-
-|=======================================================================
-
-
-For more information about the `asadmin deploy`, `asadmin deploydir`,
-and `asadmin undeploy` commands, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server
-Open Source Edition Reference Manual].
-
-When command line and `glassfish-ejb-jar.xml` options are both
-specified, the `asadmin` options take precedence.
-
-[[beajy]][[GSDVG00153]][[schema-capture]]
-
-Schema Capture
-~~~~~~~~~~~~~~
-
-The following topics are addressed here:
-
-* link:#beajz[Automatic Database Schema Capture]
-* link:#beaka[Using the `capture-schema` Utility]
-
-[[beajz]][[GSDVG00439]][[automatic-database-schema-capture]]
-
-Automatic Database Schema Capture
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can configure a CMP bean in GlassFish Server to automatically
-capture the database metadata and save it in a `.dbschema` file during
-deployment. If the `sun-cmp-mappings.xml` file contains an empty
-`<schema/>` entry, the `cmp-resource` entry in the
-`glassfish-ejb-jar.xml` file is used to get a connection to the
-database, and automatic generation of the schema is performed.
-
-
-[NOTE]
-=======================================================================
-
-Before capturing the database schema automatically, make sure you have a
-properly configured CMP resource. See link:#beakb[Configuring the CMP
-Resource].
-
-=======================================================================
-
-
-[[beaka]][[GSDVG00440]][[using-the-capture-schema-utility]]
-
-Using the `capture-schema` Utility
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can use the `capture-schema` command to manually generate the
-database metadata (`.dbschema`) file. For details, see the
-link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-
-The `capture-schema` utility does not modify the schema in any way. Its
-only purpose is to provide the persistence engine with information about
-the structure of the database (the schema).
-
-Keep the following in mind when using the `capture-schema` command:
-
-* The name of a `.dbschema` file must be unique across all deployed
-modules in a domain.
-* If more than one schema is accessible for the schema user, more than
-one table with the same name might be captured if the `-schemaname`
-option of `capture-schema` is not set.
-* The schema name must be upper case.
-* Table names in databases are case-sensitive. Make sure that the table
-name matches the name in the database.
-* PostgreSQL databases internally convert all names to lower case.
-Before running the `capture-schema` command on a PostgreSQL database,
-make sure table and column names are lower case in the
-`sun-cmp-mappings.xml` file.
-* An Oracle database user running the `capture-schema` command needs
-ANALYZE ANY TABLE privileges if that user does not own the schema. These
-privileges are granted to the user by the database administrator.
-
-[[beakb]][[GSDVG00154]][[configuring-the-cmp-resource]]
-
-Configuring the CMP Resource
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-An EJB module that contains CMP beans requires the JNDI name of a JDBC
-resource in the `jndi-name` subelement of the `cmp-resource` element in
-the `glassfish-ejb-jar.xml` file. Set `PersistenceManagerFactory`
-properties as properties of the `cmp-resource` element in the
-`glassfish-ejb-jar.xml` file. See "link:../application-deployment-guide/dd-elements.html#GSDPG00115[cmp-resource]" in
-GlassFish Server Open Source Edition Application Deployment Guide.
-
-In the Administration Console, open the Resources component, then select
-JDBC. Click the Help button in the Administration Console for
-information on creating a new JDBC resource.
-
-For a list of the JDBC drivers currently supported by the GlassFish
-Server, see the link:../release-notes/toc.html#GSRLN[GlassFish Server Open Source Edition Release
-Notes]. For configurations of supported and other drivers, see
-"link:../administration-guide/jdbc.html#GSADG00579[Configuration Specifics for JDBC Drivers]" in
-GlassFish Server Open Source Edition Administration Guide.
-
-For example, if the JDBC resource has the JNDI name `jdbc/MyDatabase`,
-set the CMP resource in the `glassfish-ejb-jar.xml` file as follows:
-
-[source,oac_no_warn]
-----
-<cmp-resource>
-   <jndi-name>jdbc/MyDatabase</jndi-name>
-</cmp-resource>
-----
-
-[[beaki]][[GSDVG00155]][[performance-related-features]]
-
-Performance-Related Features
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The GlassFish Server provides the following features to enhance
-performance or allow more fine-grained data checking. These features are
-supported only for entity beans with container managed persistence.
-
-The following topics are addressed here:
-
-* link:#beakj[Version Column Consistency Checking]
-* link:#beakk[Relationship Prefetching]
-* link:#beakl[Read-Only Beans]
-* link:#gemln[Default Fetch Group Flags]
-
-
-[NOTE]
-==================================================================
-
-Use of any of these features results in a non-portable application.
-
-==================================================================
-
-
-[[beakj]][[GSDVG00441]][[version-column-consistency-checking]]
-
-Version Column Consistency Checking
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The version consistency feature saves the bean state at first
-transactional access and caches it between transactions. The state is
-copied from the cache instead of being read from the database. The bean
-state is verified by primary key and version column values at flush for
-custom queries (for dirty instances only) and at commit (for clean and
-dirty instances).
-
-[[fwbei]][[GSDVG00071]][[to-use-version-consistency]]
-
-To Use Version Consistency
-++++++++++++++++++++++++++
-
-1.  Create the version column in the primary table.
-2.  Give the version column a numeric data type.
-3.  Provide appropriate update triggers on the version column. +
-These triggers must increment the version column on each update of the
-specified row.
-4.  Specify the version column. +
-This is specified in the `check-version-of-accessed-instances`
-subelement of the `consistency` element in the `sun-cmp-mappings.xml`
-file. See "link:../application-deployment-guide/dd-elements.html#GSDPG00126[consistency]" in GlassFish Server Open
-Source Edition Application Deployment Guide.
-5.  Map the CMP bean to an existing schema. +
-Automatic schema generation is not supported for beans with version
-column consistency checking. Instead, work with your database
-administrator to create the schema and add the required triggers.
-
-[[beakk]][[GSDVG00442]][[relationship-prefetching]]
-
-Relationship Prefetching
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-In many cases when an entity bean's state is fetched from the database,
-its relationship fields are always accessed in the same transaction.
-Relationship prefetching saves database round trips by fetching data for
-an entity bean and those beans referenced by its CMR fields in a single
-database round trip.
-
-To enable relationship prefetching for a CMR field, use the `default`
-subelement of the `fetched-with` element in the `sun-cmp-mappings.xml`
-file. By default, these CMR fields are prefetched whenever
-`findByPrimaryKey` or a custom finder is executed for the entity, or
-when the entity is navigated to from a relationship. (Recursive
-prefetching is not supported, because it does not usually enhance
-performance.) See "link:../application-deployment-guide/dd-elements.html#GSDPG00153[fetched-with]" in GlassFish Server
-Open Source Edition Application Deployment Guide.
-
-To disable prefetching for specific custom finders, use the
-`prefetch-disabled` element in the `glassfish-ejb-jar.xml` file. See
-"link:../application-deployment-guide/dd-elements.html#GSDPG00226[prefetch-disabled]" in GlassFish Server Open Source
-Edition Application Deployment Guide.
-
-Multilevel relationship prefetching is supported for CMP 2.1 entity
-beans. To enable multilevel relationship prefetching, set the following
-property using the `asadmin create-jvm-options` command:
-
-[source,oac_no_warn]
-----
-asadmin create-jvm-options -Dcom.sun.jdo.spi.persistence.support.sqlstore.MULTILEVEL_PREFETCH=true
-----
-
-[[beakl]][[GSDVG00443]][[read-only-beans]]
-
-Read-Only Beans
-^^^^^^^^^^^^^^^
-
-Another feature that the GlassFish Server provides is the read-only
-bean, an entity bean that is never modified by an EJB client. Read-only
-beans avoid database updates completely.
-
-
-[NOTE]
-=======================================================================
-
-Read-only beans are specific to the GlassFish Server and are not part of
-the Enterprise JavaBeans Specification, v2.1. Use of this feature for an
-EJB 2.1 bean results in a non-portable application.
-
-=======================================================================
-
-
-A read-only bean can be used to cache a database entry that is
-frequently accessed but rarely updated (externally by other beans). When
-the data that is cached by a read-only bean is updated by another bean,
-the read-only bean can be notified to refresh its cached data.
-
-The GlassFish Server provides a number of ways by which a read-only
-bean's state can be refreshed. By setting the
-`refresh-period-in-seconds` element in the `glassfish-ejb-jar.xml` file
-and the `trans-attribute` element (or `@TransactionAttribute`
-annotation) in the `ejb-jar.xml` file, it is easy to configure a
-read-only bean that is one of the following:
-
-* Always refreshed
-* Periodically refreshed
-* Never refreshed
-* Programmatically refreshed
-
-Access to CMR fields of read-only beans is not supported. Deployment
-will succeed, but an exception will be thrown at runtime if a get or set
-method is invoked.
-
-Read-only beans are best suited for situations where the underlying data
-never changes, or changes infrequently. For further information and
-usage guidelines, see link:ejb.html#beail[Using Read-Only Beans].
-
-[[gemln]][[GSDVG00156]][[default-fetch-group-flags]]
-
-Default Fetch Group Flags
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Using the following flags can improve performance.
-
-Setting `-DAllowManagedFieldsInDefaultFetchGroup=true` allows CMP fields
-that by default cannot be placed into the default fetch group to be
-loaded along with all other fields that are fetched when the CMP state
-is loaded into memory. These could be multiple fields mapped to the same
-column in the database table, for example, an instance field and a CMR.
-By default this flag is set to `false`.
-
-For additional information, see "link:../application-deployment-guide/dd-elements.html#GSDPG00181[level]" in GlassFish
-Server Open Source Edition Application Deployment Guide.
-
-Setting `-DAllowMediatedWriteInDefaultFetchGroup` specifies how updated
-CMP fields are written back to the database. If the flag is `false`, all
-fields in the CMP bean are written back to the database if at least one
-field in the default fetch group has been changed in a transaction. If
-the flag is `true`, only fields modified by the bean are written back to
-the database. Specifying `true` can improve performance, particularly on
-database tables with many columns that have not been updated. By default
-this flag is set to `false`.
-
-To set one of these flags, use the `asadmin create-jvm-options` command.
-For example:
-
-[source,oac_no_warn]
-----
-asadmin create-jvm-options -DAllowManagedFieldsInDefaultFetchGroup=true
-----
-
-[[beakc]][[GSDVG00157]][[configuring-queries-for-1.1-finders]]
-
-Configuring Queries for 1.1 Finders
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following topics are addressed here:
-
-* link:#ganjq[About JDOQL Queries]
-* link:#gankm[Query Filter Expression]
-* link:#ganjt[Query Parameters]
-* link:#ganky[Query Variables]
-* link:#ganla[JDOQL Examples]
-
-[[ganjq]][[GSDVG00444]][[about-jdoql-queries]]
-
-About JDOQL Queries
-^^^^^^^^^^^^^^^^^^^
-
-The Enterprise JavaBeans Specification, v1.1 does not specify the format
-of the finder method description. The GlassFish Server uses an extension
-of Java Data Objects Query Language (JDOQL) queries to implement finder
-and selector methods. You can specify the following elements of the
-underlying JDOQL query:
-
-* Filter expression - A Java-like expression that specifies a condition
-that each object returned by the query must satisfy. Corresponds to the
-WHERE clause in EJB QL.
-* Query parameter declaration - Specifies the name and the type of one
-or more query input parameters. Follows the syntax for formal parameters
-in the Java language.
-* Query variable declaration - Specifies the name and type of one or
-more query variables. Follows the syntax for local variables in the Java
-language. A query filter might use query variables to implement joins.
-* Query ordering declaration - Specifies the ordering expression of the
-query. Corresponds to the ORDER BY clause of EJB QL.
-
-The GlassFish Server specific deployment descriptor
-(`glassfish-ejb-jar.xml`) provides the following elements to store the
-EJB 1.1 finder method settings:
-
-[source,oac_no_warn]
-----
-query-filter
-query-params
-query-variables
-query-ordering
-----
-
-The bean developer uses these elements to construct a query. When the
-finder method that uses these elements executes, the values of these
-elements are used to execute a query in the database. The objects from
-the JDOQL query result set are converted into primary key instances to
-be returned by the EJB 1.1 `ejbFind` method.
-
-The JDO specification, http://jcp.org/en/jsr/detail?id=12[JSR 12]
-(`http://jcp.org/en/jsr/detail?id=12`), provides a comprehensive
-description of JDOQL. The following information summarizes the elements
-used to define EJB 1.1 finders.
-
-[[gankm]][[GSDVG00445]][[query-filter-expression]]
-
-Query Filter Expression
-^^^^^^^^^^^^^^^^^^^^^^^
-
-The filter expression is a String containing a Boolean expression
-evaluated for each instance of the candidate class. If the filter is not
-specified, it defaults to true. Rules for constructing valid expressions
-follow the Java language, with the following differences:
-
-* Equality and ordering comparisons between primitives and instances of
-wrapper classes are valid.
-* Equality and ordering comparisons of Date fields and Date parameters
-are valid.
-* Equality and ordering comparisons of String fields and String
-parameters are valid.
-* White space (non-printing characters space, tab, carriage return, and
-line feed) is a separator and is otherwise ignored.
-* The following assignment operators are not supported.
-
-** Comparison operators such as =, +=, and so on
-
-** Pre- and post-increment
-
-** Pre- and post-decrement
-* Methods, including object construction, are not supported, except for
-these methods. +
-[source,oac_no_warn]
-----
-Collection.contains(Object o)
-Collection.isEmpty()
-String.startsWith(String s)
-String.endsWith(String e)
-----
-In addition, the GlassFish Server supports the following nonstandard
-JDOQL methods. +
-[source,oac_no_warn]
-----
-String.like(String pattern)
-String.like(String pattern, char escape)
-String.substring(int start, int length)
-String.indexOf(String str)
-String.indexOf(String str, int start)
-String.length()
-Math.abs(numeric n)
-Math.sqrt(double d)
-----
-* Navigation through a null-valued field, which throws a
-`NullPointerException`, is treated as if the sub-expression returned
-`false`.
-
-
-[NOTE]
-=======================================================================
-
-Comparisons between floating point values are by nature inexact.
-Therefore, equality comparisons (== and !=) with floating point values
-should be used with caution. Identifiers in the expression are
-considered to be in the name space of the candidate class, with the
-addition of declared parameters and variables. As in the Java language,
-`this` is a reserved word, and refers to the current instance being
-evaluated.
-
-=======================================================================
-
-
-The following expressions are supported.
-
-* Relational operators (==, !=,>, <,>=, <=)
-* Boolean operators (&, &&, |, ||, ~, !)
-* Arithmetic operators (+, -, *, /)
-* String concatenation, only for String + String
-* Parentheses to explicitly mark operator precedence
-* Cast operator
-* Promotion of numeric operands for comparisons and arithmetic
-operations
-
-The rules for promotion follow the Java rules extended by BigDecimal,
-BigInteger, and numeric wrapper classes. See the numeric promotions of
-the Java language specification.
-
-[[ganjt]][[GSDVG00446]][[query-parameters]]
-
-Query Parameters
-^^^^^^^^^^^^^^^^
-
-The parameter declaration is a String containing one or more parameter
-type declarations separated by commas. This follows the Java syntax for
-method signatures.
-
-[[ganky]][[GSDVG00447]][[query-variables]]
-
-Query Variables
-^^^^^^^^^^^^^^^
-
-The type declarations follow the Java syntax for local variable
-declarations.
-
-[[ganla]][[GSDVG00448]][[jdoql-examples]]
-
-JDOQL Examples
-^^^^^^^^^^^^^^
-
-This section provides a few query examples.
-
-[[gankk]][[GSDVG00309]][[example-1]]
-
-Example 1
-+++++++++
-
-The following query returns all players called Michael. It defines a
-filter that compares the name field with a string literal:
-
-[source,oac_no_warn]
-----
-name == "Michael"
-----
-
-The `finder` element of the `glassfish-ejb-jar.xml` file looks like
-this:
-
-[source,oac_no_warn]
-----
-<finder>
-   <method-name>findPlayerByName</method-name>
-   <query-filter>name == "Michael"</query-filter>
-</finder>
-----
-
-[[ganjz]][[GSDVG00310]][[example-2]]
-
-Example 2
-+++++++++
-
-This query returns all products in a specified price range. It defines
-two query parameters which are the lower and upper bound for the price:
-double low, double high. The filter compares the query parameters with
-the price field:
-
-[source,oac_no_warn]
-----
-low < price && price < high
-----
-
-Query ordering is set to `price ascending`.
-
-The `finder` element of the `glassfish-ejb-jar.xml` file looks like
-this:
-
-[source,oac_no_warn]
-----
-<finder>
-   <method-name>findInRange</method-name>
-   <query-params>double low, double high</query-params>
-   <query-filter>low &lt; price &amp;&amp; price &lt high</query-filter>
-   <query-ordering>price ascending</query-ordering>
-</finder>
-----
-
-[[gankz]][[GSDVG00311]][[example-3]]
-
-Example 3
-+++++++++
-
-This query returns all players having a higher salary than the player
-with the specified name. It defines a query parameter for the name
-`java.lang.String name`. Furthermore, it defines a variable to which the
-player's salary is compared. It has the type of the persistence capable
-class that corresponds to the bean:
-
-[source,oac_no_warn]
-----
-    mypackage.PlayerEJB_170160966_JDOState player
-----
-
-The filter compares the salary of the current player denoted by the
-`this` keyword with the salary of the player with the specified name:
-
-[source,oac_no_warn]
-----
-    (this.salary> player.salary) && (player.name == name)
-----
-
-The `finder` element of the `glassfish-ejb-jar.xml` file looks like
-this:
-
-[source,oac_no_warn]
-----
-<finder>
-   <method-name>findByHigherSalary</method-name>
-   <query-params>java.lang.String name</query-params>
-   <query-filter>
-      (this.salary &gt; player.salary) &amp;&amp; (player.name == name)
-   </query-filter>
-   <query-variables>
-      mypackage.PlayerEJB_170160966_JDOState player
-   </query-variables>
-</finder>
-----
-
-[[beakm]][[GSDVG00158]][[cmp-restrictions-and-optimizations]]
-
-CMP Restrictions and Optimizations
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This section discusses restrictions and performance optimizations that
-pertain to using CMP.
-
-The following topics are addressed here:
-
-* link:#gdtfj[Disabling ORDER BY Validation]
-* link:#geprt[Setting the Heap Size on DB2]
-* link:#beakn[Eager Loading of Field State]
-* link:#beako[Restrictions on Remote Interfaces]
-* link:#gcnto[PostgreSQL Case Insensitivity]
-* link:#beakr[No Support for `lock-when-loaded` on Sybase]
-* link:#beakp[Sybase Finder Limitation]
-* link:#beakq[Date and Time Fields]
-* link:#beaks[Set `RECURSIVE_TRIGGERS` to `false` on MSSQL]
-* link:#gbhbr[MySQL Database Restrictions]
-
-[[gdtfj]][[GSDVG00449]][[disabling-order-by-validation]]
-
-Disabling ORDER BY Validation
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-EJB QL as defined in the EJB 2.1 Specification defines certain
-restrictions for the SELECT clause of an ORDER BY query (see section
-11.2.8 ORDER BY Clause). This ensures that a query does not order by a
-field that is not returned by the query. By default, the EJB QL compiler
-checks the above restriction and throws an exception if the query does
-not conform.
-
-However, some databases support SQL statements with an ORDER BY column
-that is not included in the SELECT clause. To disable the validation of
-the ORDER BY clause against the SELECT clause, set the
-`DISABLE_ORDERBY_VALIDATION` JVM option as follows:
-
-[source,oac_no_warn]
-----
-asadmin create-jvm-options 
--Dcom.sun.jdo.spi.persistence.support.ejb.ejbqlc.DISABLE_ORDERBY_VALIDATION=true
-----
-
-The `DISABLE_ORDERBY_VALIDATION` option is set to `false` by default.
-Setting it to `true` results in a non-portable module or application.
-
-[[geprt]][[GSDVG00450]][[setting-the-heap-size-on-db2]]
-
-Setting the Heap Size on DB2
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-On DB2, the database configuration parameter `APPLHEAPSZ` determines the
-heap size. If you are using the Oracle or DataDirect database driver,
-set this parameter to at least `2048` for CMP. For more information, see
-`http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/opt/tsbp2024.html`.
-
-[[beakn]][[GSDVG00451]][[eager-loading-of-field-state]]
-
-Eager Loading of Field State
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-By default, the EJB container loads the state for all persistent fields
-(excluding relationship, BLOB, and CLOB fields) before invoking the
-`ejbLoad` method of the abstract bean. This approach might not be
-optimal for entity objects with large state if most business methods
-require access to only parts of the state.
-
-Use the `fetched-with` element in `sun-cmp-mappings.xml` for fields that
-are used infrequently. See "link:../application-deployment-guide/dd-elements.html#GSDPG00153[fetched-with]" in GlassFish
-Server Open Source Edition Application Deployment Guide.
-
-[[beako]][[GSDVG00452]][[restrictions-on-remote-interfaces]]
-
-Restrictions on Remote Interfaces
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The following restrictions apply to the remote interface of an EJB 2.1
-bean that uses CMP:
-
-* Do not expose the `get` and `set` methods for CMR fields or the
-persistence collection classes that are used in container-managed
-relationships through the remote interface of the bean. +
-However, you are free to expose the `get` and `set` methods that
-correspond to the CMP fields of the entity bean through the bean's
-remote interface.
-* Do not expose the container-managed collection classes that are used
-for relationships through the remote interface of the bean.
-* Do not expose local interface types or local home interface types
-through the remote interface or remote home interface of the bean.
-
-Dependent value classes can be exposed in the remote interface or remote
-home interface, and can be included in the client EJB JAR file.
-
-[[gcnto]][[GSDVG00453]][[postgresql-case-insensitivity]]
-
-PostgreSQL Case Insensitivity
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Case-sensitive behavior cannot be achieved for PostgreSQL databases.
-PostgreSQL databases internally convert all names to lower case, which
-makes the following workarounds necessary:
-
-* In the CMP 2.1 runtime, PostgreSQL table and column names are not
-quoted, which makes these names case insensitive.
-* Before running the `capture-schema` command on a PostgreSQL database,
-make sure table and column names are lower case in the
-`sun-cmp-mappings.xml` file.
-
-[[beakr]][[GSDVG00454]][[no-support-for-lock-when-loaded-on-sybase]]
-
-No Support for `lock-when-loaded` on Sybase
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-For EJB 2.1 beans, the `lock-when-loaded` consistency level is
-implemented by placing update locks on the data corresponding to a bean
-when the data is loaded from the database. There is no suitable
-mechanism available on Sybase databases to implement this feature.
-Therefore, the `lock-when-loaded` consistency level is not supported on
-Sybase databases. See "link:../application-deployment-guide/dd-elements.html#GSDPG00126[consistency]" in GlassFish
-Server Open Source Edition Application Deployment Guide.
-
-[[beakp]][[GSDVG00455]][[sybase-finder-limitation]]
-
-Sybase Finder Limitation
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-If a finder method with an input greater than 255 characters is executed
-and the primary key column is mapped to a VARCHAR column, Sybase
-attempts to convert type VARCHAR to type TEXT and generates the
-following error:
-
-[source,oac_no_warn]
-----
-com.sybase.jdbc2.jdbc.SybSQLException: Implicit conversion from datatype 
-'TEXT' to 'VARCHAR' is not allowed. Use the CONVERT function to run this query. 
-----
-
-To avoid this error, make sure the finder method input is less than 255
-characters.
-
-[[beakq]][[GSDVG00456]][[date-and-time-fields]]
-
-Date and Time Fields
-^^^^^^^^^^^^^^^^^^^^
-
-If a field type is a Java date or time type (`java.util.Date`,
-`java.sql.Date`, `java.sql.Time`, `java.sql.Timestamp`), make sure that
-the field value exactly matches the value in the database.
-
-For example, the following code uses a `java.sql.Date` type as a primary
-key field:
-
-[source,oac_no_warn]
-----
-java.sql.Date myDate = new java.sql.Date(System.currentTimeMillis())
-BeanA.create(myDate, ...);
-----
-
-For some databases, this code results in only the year, month, and date
-portion of the field value being stored in the database. Later if the
-client tries to find this bean by primary key as follows, the bean is
-not found in the database because the value does not match the one that
-is stored in the database.
-
-[source,oac_no_warn]
-----
-myBean = BeanA.findByPrimaryKey(myDate);
-----
-
-Similar problems can happen if the database truncates the timestamp
-value while storing it, or if a custom query has a date or time value
-comparison in its WHERE clause.
-
-For automatic mapping to an Oracle database, fields of type
-`java.util.Date`, `java.sql.Date`, and `java.sql.Time` are mapped to
-Oracle's DATE data type. Fields of type `java.sql.Timestamp` are mapped
-to Oracle's `TIMESTAMP(9)` data type.
-
-[[beaks]][[GSDVG00457]][[set-recursive_triggers-to-false-on-mssql]]
-
-Set `RECURSIVE_TRIGGERS` to `false` on MSSQL
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-For version consistency triggers on MSSQL, the property
-`RECURSIVE_TRIGGERS` must be set to `false`, which is the default. If
-set to `true`, triggers throw a `java.sql.SQLException`.
-
-Set this property as follows:
-
-[source,oac_no_warn]
-----
-EXEC sp_dboption 'database-name', 'recursive triggers', 'FALSE'
-go
-----
-
-You can test this property as follows:
-
-[source,oac_no_warn]
-----
-SELECT DATABASEPROPERTYEX('database-name', 'IsRecursiveTriggersEnabled')
-go
-----
-
-[[gbhbr]][[GSDVG00458]][[mysql-database-restrictions]]
-
-MySQL Database Restrictions
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The following restrictions apply when you use a MySQL database with the
-GlassFish Server for persistence.
-
-* MySQL treats `int1` and `int2` as reserved words. If you want to
-define `int1` and `int2` as fields in your table, use `\`int1\`` and
-`\`int2\`` field names in your SQL file.
-* When `VARCHAR` fields get truncated, a warning is displayed instead of
-an error. To get an error message, start the MySQL database in strict
-SQL mode.
-* The order of fields in a foreign key index must match the order in the
-explicitly created index on the primary table.
-* The `CREATE TABLE` syntax in the SQL file must end with the following
-line. +
-[source,oac_no_warn]
-----
-)  Engine=InnoDB;
-----
-`InnoDB` provides MySQL with a transaction-safe (ACID compliant) storage
-engine having commit, rollback, and crash recovery capabilities.
-* For a `FLOAT` type field, the correct precision must be defined. By
-default, MySQL uses four bytes to store a `FLOAT` type that does not
-have an explicit precision definition. For example, this causes a number
-such as 12345.67890123 to be rounded off to 12345.7 during an `INSERT`.
-To prevent this, specify `FLOAT(10,2)` in the DDL file, which forces the
-database to use an eight-byte double-precision column. For more
-information, see `http://dev.mysql.com/doc/mysql/en/numeric-types.html`.
-* To use `||` as the string concatenation symbol, start the MySQL server
-with the `--sql-mode="PIPES_AS_CONCAT"` option. For more information,
-see `http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html` and
-`http://dev.mysql.com/doc/mysql/en/ansi-mode.html`.
-* MySQL always starts a new connection when `autoCommit==true` is set.
-This ensures that each SQL statement forms a single transaction on its
-own. If you try to rollback or commit an SQL statement, you get an error
-message. +
-[source,oac_no_warn]
-----
-javax.transaction.SystemException: java.sql.SQLException: 
-Can't call rollback when autocommit=true
-
-javax.transaction.SystemException: java.sql.SQLException: 
-Error open transaction is not closed
-----
-To resolve this issue, add `relaxAutoCommit=true` to the JDBC URL. For
-more information, see `http://forums.mysql.com/read.php?39,31326,31404`.
-* Change the trigger create format from the following: +
-[source,oac_no_warn]
-----
-CREATE TRIGGER T_UNKNOWNPKVC1 
-BEFORE UPDATE ON UNKNOWNPKVC1
-FOR EACH ROW
-        WHEN (NEW.VERSION = OLD.VERSION)
-BEGIN
-        :NEW.VERSION := :OLD.VERSION + 1;
-END;
-/
-----
-To the following: +
-[source,oac_no_warn]
-----
-DELIMITER |
-CREATE TRIGGER T_UNKNOWNPKVC1
-BEFORE UPDATE ON UNKNOWNPKVC1
-FOR EACH ROW
-        WHEN (NEW.VERSION = OLD.VERSION)
-BEGIN
-        :NEW.VERSION := :OLD.VERSION + 1;
-END
-|
-DELIMITER ;
-----
-For more information, see
-`http://dev.mysql.com/doc/mysql/en/create-trigger.html`.
-* MySQL does not allow a `DELETE` on a row that contains a reference to
-itself. Here is an example that illustrates the issue. +
-[source,oac_no_warn]
-----
-create table EMPLOYEE (
-        empId   int         NOT NULL,
-        salary  float(25,2) NULL,
-        mgrId   int         NULL,
-        PRIMARY KEY (empId),
-        FOREIGN KEY (mgrId) REFERENCES EMPLOYEE (empId)
-        ) ENGINE=InnoDB;
-
-        insert into Employee values (1, 1234.34, 1);
-        delete from Employee where empId = 1;
-----
-This example fails with the following error message. +
-[source,oac_no_warn]
-----
-ERROR 1217 (23000): Cannot delete or update a parent row: 
-a foreign key constraint fails
-----
-To resolve this issue, change the table creation script to the
-following: +
-[source,oac_no_warn]
-----
-create table EMPLOYEE (
-        empId   int         NOT NULL,
-        salary  float(25,2) NULL,
-        mgrId   int         NULL,
-        PRIMARY KEY (empId),
-        FOREIGN KEY (mgrId) REFERENCES EMPLOYEE (empId)
-        ON DELETE SET NULL
-        ) ENGINE=InnoDB;
-
-        insert into Employee values (1, 1234.34, 1);
-        delete from Employee where empId = 1;
-----
-This can be done only if the foreign key field is allowed to be null.
-For more information, see
-`http://dev.mysql.com/doc/mysql/en/innodb-foreign-key-constraints.html`.
-* When an SQL script has foreign key constraints defined,
-`capture-schema` fails to capture the table information correctly. To
-work around the problem, remove the constraints and then run
-`capture-schema`. Here is an example that illustrates the issue. +
-[source,oac_no_warn]
-----
-CREATE TABLE ADDRESSBOOKBEANTABLE (ADDRESSBOOKNAME VARCHAR(255) 
-    NOT NULL PRIMARY KEY, 
-CONNECTEDUSERS              BLOB NULL, 
-OWNER                       VARCHAR(256), 
-FK_FOR_ACCESSPRIVILEGES     VARCHAR(256), 
-CONSTRAINT FK_ACCESSPRIVILEGE FOREIGN KEY (FK_FOR_ACCESSPRIVILEGES) 
-    REFERENCES ACCESSPRIVILEGESBEANTABLE (ROOT) 
-) ENGINE=InnoDB;  
-----
-To resolve this issue, change the table creation script to the
-following: +
-[source,oac_no_warn]
-----
-CREATE TABLE ADDRESSBOOKBEANTABLE (ADDRESSBOOKNAME VARCHAR(255) 
-    NOT NULL PRIMARY KEY, 
-CONNECTEDUSERS              BLOB NULL, 
-OWNER                       VARCHAR(256), 
-FK_FOR_ACCESSPRIVILEGES     VARCHAR(256) 
-) ENGINE=InnoDB;
-----
-
-
diff --git a/docs/application-development-guide/src/main/jbake/content/debugging-apps.adoc b/docs/application-development-guide/src/main/jbake/content/debugging-apps.adoc
deleted file mode 100644
index af555a7..0000000
--- a/docs/application-development-guide/src/main/jbake/content/debugging-apps.adoc
+++ /dev/null
@@ -1,467 +0,0 @@
-type=page
-status=published
-title=Debugging Applications
-next=part-apps-and-app-comps.html
-prev=class-loaders.html
-~~~~~~
-Debugging Applications
-======================
-
-[[GSDVG00004]][[beafc]]
-
-
-[[debugging-applications]]
-3 Debugging Applications
-------------------------
-
-This chapter gives guidelines for debugging applications in the Oracle
-GlassFish Server.
-
-The following topics are addressed here:
-
-* link:#beafd[Enabling Debugging]
-* link:#beafe[JPDA Options]
-* link:#beaff[Generating a Stack Trace for Debugging]
-* link:#gekvq[Application Client Debugging]
-* link:#beafk[Open Message Queue Debugging]
-* link:#beafl[Enabling Verbose Mode]
-* link:#gkpdk[Class Loader Debugging]
-* link:#beafm[GlassFish Server Logging]
-* link:#beafn[Profiling Tools]
-
-[[beafd]][[GSDVG00101]][[enabling-debugging]]
-
-Enabling Debugging
-~~~~~~~~~~~~~~~~~~
-
-When you enable debugging, you enable both local and remote debugging.
-To start the server in debug mode, use the `--debug` option as follows:
-
-[source,oac_no_warn]
-----
-asadmin start-domain --debug [domain-name]
-----
-
-You can then attach to the server from the Java Debugger (`jdb`) at its
-default Java Platform Debugger Architecture (JPDA) port, which is 9009.
-For example, for UNIX systems:
-
-[source,oac_no_warn]
-----
-jdb -attach 9009
-----
-
-For Windows:
-
-[source,oac_no_warn]
-----
-jdb -connect com.sun.jdi.SocketAttach:port=9009
-----
-
-For more information about the `jdb` debugger, see the following links:
-
-* Java Platform Debugger Architecture - The Java Debugger:
-`http://java.sun.com/javase/technologies/core/toolsapis/jpda/`
-* Java Platform Debugger Architecture - Connecting with JDB:
-`http://java.sun.com/javase/technologies/core/toolsapis/jpda/`
-
-GlassFish Server debugging is based on the JPDA. For more information,
-see link:#beafe[JPDA Options].
-
-You can attach to the GlassFish Server using any JPDA compliant
-debugger, including that of http://www.netbeans.org[NetBeans]
-(`http://www.netbeans.org`), Java Studio Enterprise, JBuilder, Eclipse,
-and so on.
-
-You can enable debugging even when the GlassFish Server is started
-without the `--debug` option. This is useful if you start the GlassFish
-Server from the Windows Start Menu, or if you want to make sure that
-debugging is always turned on.
-
-[[fvyit]][[GSDVG00049]][[to-set-the-server-to-automatically-start-up-in-debug-mode]]
-
-To Set the Server to Automatically Start Up in Debug Mode
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-1.  Use the Administration Console. Select the JVM Settings component
-under the relevant configuration.
-2.  Check the Debug Enabled box.
-3.  To specify a different port (from 9009, the default) to use when
-attaching the JVM software to a debugger, specify `address=` port-number
-in the Debug Options field.
-4.  To add JPDA options, add any desired JPDA debugging options in Debug
-Options. See link:#beafe[JPDA Options].
-
-[[GSDVG532]]
-
-See Also
-
-For details, click the Help button in the Administration Console from
-the JVM Settings page.
-
-[[beafe]][[GSDVG00102]][[jpda-options]]
-
-JPDA Options
-~~~~~~~~~~~~
-
-The default JPDA options in GlassFish Server are as follows:
-
-[source,oac_no_warn]
-----
--Xdebug -agentlib:transport=dt_socket,server=y,suspend=n,address=9009
-----
-
-For Windows, you can change `dt_socket` to `dt_shmem`.
-
-If you substitute `suspend=y`, the JVM software starts in suspended mode
-and stays suspended until a debugger attaches to it. This is helpful if
-you want to start debugging as soon as the JVM software starts.
-
-To specify a different port (from 9009, the default) to use when
-attaching the JVM software to a debugger, specify `address=`port-number.
-
-You can include additional options. A list of JPDA debugging options is
-available at
-`http://java.sun.com/javase/technologies/core/toolsapis/jpda/`.
-
-[[beaff]][[GSDVG00103]][[generating-a-stack-trace-for-debugging]]
-
-Generating a Stack Trace for Debugging
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-To generate a Java stack trace for debugging, use the
-`asadmin generate-jvm-report --type=thread` command. The stack trace
-goes to the domain-dir`/logs/server.log` file and also appears on the
-command prompt screen. For more information about the
-`asadmin generate-jvm-report` command, see the link:../reference-manual/toc.html#GSRFM[GlassFish
-Server Open Source Edition Reference Manual].
-
-[[gekvq]][[GSDVG00104]][[application-client-debugging]]
-
-Application Client Debugging
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-When the `appclient` script executes the `java` command to run the
-Application Client Container (ACC), which in turn runs the client, it
-includes on the command line the value of the `VMARGS` environment
-variable. You can set this variable to any suitable value. For example:
-
-[source,oac_no_warn]
-----
-VMARGS=-agentlib:transport=dt_socket,server=y,suspend=y,address=8118
-----
-
-For debugging an application client, you should set suspend to `y` so
-you can connect the debugger to the client before any code has actually
-executed. Otherwise, the client may start running and execute past the
-point you want to examine.
-
-You should use different ports for the server and client if you are
-debugging both concurrently. For details about setting the port, see
-link:#beafe[JPDA Options].
-
-You can also include JVM options in the `appclient` script directly. For
-information about the `appclient` script, see the link:../reference-manual/toc.html#GSRFM[GlassFish
-Server Open Source Edition Reference Manual].
-
-
-[NOTE]
-=======================================================================
-
-The Application Client Container is supported only in the full GlassFish
-Server, not in the Web Profile. See
-link:java-clients.html#beakt[Developing Java Clients].
-
-=======================================================================
-
-
-[[beafk]][[GSDVG00105]][[open-message-queue-debugging]]
-
-Open Message Queue Debugging
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Open Message Queue has a broker logger, which can be useful for
-debugging Java Message Service (JMS) applications, including
-message-driven bean applications. You can adjust the logger's verbosity,
-and you can send the logger output to the broker's console using the
-broker's `-tty` option. For more information, see the link:../../openmq/mq-admin-guide/toc.html#GMADG[Open
-Message Queue Administration Guide].
-
-
-[NOTE]
-=======================================================================
-
-JMS resources are supported only in the full GlassFish Server, not in
-the Web Profile. See link:jms.html#beaob[Using the Java Message Service].
-
-=======================================================================
-
-
-[[beafl]][[GSDVG00106]][[enabling-verbose-mode]]
-
-Enabling Verbose Mode
-~~~~~~~~~~~~~~~~~~~~~
-
-To have the server logs and messages printed to `System.out` on your
-command prompt screen, you can start the server in verbose mode. This
-makes it easy to do simple debugging using print statements, without
-having to view the `server.log` file every time.
-
-To start the server in verbose mode, use the `--verbose` option as
-follows:
-
-[source,oac_no_warn]
-----
-asadmin start-domain --verbose [domain-name]
-----
-
-When the server is in verbose mode, messages are logged to the console
-or terminal window in addition to the log file. In addition, pressing
-Ctrl-C stops the server and pressing Ctrl-\ (on UNIX platforms) or
-Ctrl-Break (on Windows platforms) prints a thread dump. On UNIX
-platforms, you can also print a thread dump using the `jstack` command
-(see
-`http://docs.oracle.com/javase/8/docs/technotes/tools/share/jstack.html`)
-or the command `kill -QUIT` process_id.
-
-[[gkpdk]][[GSDVG00107]][[class-loader-debugging]]
-
-Class Loader Debugging
-~~~~~~~~~~~~~~~~~~~~~~
-
-To generate class loading messages, use the following
-`asadmin create-jvm-options` command:
-
-[source,oac_no_warn]
-----
-asadmin create-jvm-options -verbose\:class
-----
-
-To send the JVM messages to a special JVM log file instead of `stdout`,
-use the following `asadmin create-jvm-options` commands:
-
-[source,oac_no_warn]
-----
-asadmin create-jvm-options -XX\:+LogVMOutput
-asadmin create-jvm-options -XX\:LogFile=${com.sun.aas.instanceRoot}/logs/jvm.log
-----
-
-
-[NOTE]
-=======================================================================
-
-These `-XX` options are specific to the OpenJDK (or Hotspot) JVM and do
-not work with the JRockit JVM.
-
-=======================================================================
-
-
-To send the GlassFish Server messages to the Administration Console
-instead of `stderr`, start the domain in verbose mode as described in
-link:#beafl[Enabling Verbose Mode].
-
-[[beafm]][[GSDVG00108]][[glassfish-server-logging]]
-
-GlassFish Server Logging
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can use the GlassFish Server's log files to help debug your
-applications. Use the Administration Console. Select the Stand-Alone
-Instances component, select the instance from the table, then click the
-View Log Files button in the General Information page. Or select the
-Cluster component, select the cluster from the table, select the
-Instances tab, select the instance from the table, then click the View
-Log Files button in the General Information page.
-
-To change logging settings, select Logger Settings under the relevant
-configuration.
-
-For details about logging, click the Help button in the Administration
-Console.
-
-[[beafn]][[GSDVG00109]][[profiling-tools]]
-
-Profiling Tools
-~~~~~~~~~~~~~~~
-
-You can use a profiler to perform remote profiling on the GlassFish
-Server to discover bottlenecks in server-side performance. This section
-describes how to configure profilers for use with GlassFish Server.
-
-The following topics are addressed here:
-
-* link:#gcicc[The NetBeans Profiler]
-* link:#beafo[The HPROF Profiler]
-* link:#beafr[The JProbe Profiler]
-
-Information about comprehensive monitoring and management support in the
-Java 2 Platform, Standard Edition ( J2SE platform) is available at
-`http://docs.oracle.com/javase/8/docs/technotes/guides/management/index.html`.
-
-[[gcicc]][[GSDVG00345]][[the-netbeans-profiler]]
-
-The NetBeans Profiler
-^^^^^^^^^^^^^^^^^^^^^
-
-For information on how to use the NetBeans profiler, see
-`http://profiler.netbeans.org/index.html`.
-
-[[beafo]][[GSDVG00346]][[the-hprof-profiler]]
-
-The HPROF Profiler
-^^^^^^^^^^^^^^^^^^
-
-The Heap and CPU Profiling Agent (HPROF) is a simple profiler agent
-shipped with the Java 2 SDK. It is a dynamically linked library that
-interacts with the Java Virtual Machine Profiler Interface (JVMPI) and
-writes out profiling information either to a file or to a socket in
-ASCII or binary format.
-
-HPROF can monitor CPU usage, heap allocation statistics, and contention
-profiles. In addition, it can also report complete heap dumps and states
-of all the monitors and threads in the Java virtual machine. For more
-details on the HPROF profiler, see the technical article at
-`http://java.sun.com/developer/technicalArticles/Programming/HPROF.html`.
-
-After HPROF is enabled using the following instructions, its libraries
-are loaded into the server process.
-
-[[fvylg]][[GSDVG00050]][[to-use-hprof-profiling-on-unix]]
-
-To Use HPROF Profiling on UNIX
-++++++++++++++++++++++++++++++
-
-1.  Use the Administration Console. Select the JVM Settings component
-under the relevant configuration. Then select the Profiler tab.
-2.  Edit the following fields:
-* Profiler Name - `hprof`
-* Profiler Enabled - `true`
-* Classpath - (leave blank)
-* Native Library Path - (leave blank)
-* JVM Option - Select Add, type the HPROF JVM option in the Value field,
-then check its box. The syntax of the HPROF JVM option is as follows: +
-[source,oac_no_warn]
-----
--Xrunhprof[:help]|[:param=value,param2=value2, ...]
-----
-Here is an example of params you can use: +
-[source,oac_no_warn]
-----
--Xrunhprof:file=log.txt,thread=y,depth=3
-----
-The file parameter determines where the stack dump is written. +
-Using help lists parameters that can be passed to HPROF. The output is
-as follows: +
-[source,oac_no_warn]
-----
-Hprof usage: -Xrunhprof[:help]|[:<option>=<value>, ...]
-
-Option Name and Value   Description             Default
----------------------   -----------             -------
-heap=dump|sites|all     heap profiling          all
-cpu=samples|old         CPU usage               off
-format=a|b              ascii or binary output  a
-file=<file>             write data to file      java.hprof
-                               (.txt for ascii)
-net=<host>:<port>       send data over a socket write to file
-depth=<size>            stack trace depth       4
-cutoff=<value>          output cutoff point     0.0001
-lineno=y|n              line number in traces?  y
-thread=y|n              thread in traces?       n
-doe=y|n                 dump on exit?           y
-----
-::
-
-[NOTE]
-=======================================================================
-
-Do not use help in the JVM Option field. This parameter prints text to
-the standard output and then exits.
-
-The help output refers to the parameters as options, but they are not
-the same thing as JVM options.
-
-=======================================================================
-
-3.  [[hprofstp2]] +
-Restart the GlassFish Server. +
-This writes an HPROF stack dump to the file you specified using the file
-HPROF parameter.
-
-[[beafr]][[GSDVG00347]][[the-jprobe-profiler]]
-
-The JProbe Profiler
-^^^^^^^^^^^^^^^^^^^
-
-Information about JProbe from Sitraka is available at
-`http://www.quest.com/jprobe/`.
-
-After JProbe is installed using the following instructions, its
-libraries are loaded into the server process.
-
-[[fvymj]][[GSDVG00051]][[to-enable-remote-profiling-with-jprobe]]
-
-To Enable Remote Profiling With JProbe
-++++++++++++++++++++++++++++++++++++++
-
-1.  Install JProbe 3.0.1.1. +
-For details, see the JProbe documentation.
-2.  Configure GlassFish Server using the Administration Console:
-1.  Select the JVM Settings component under the relevant configuration.
-Then select the Profiler tab.
-2.  Edit the following fields before selecting Save and restarting the
-server: +
-Profiler Name - `jprobe` +
-Profiler Enabled - `true` +
-Classpath - (leave blank) +
-Native Library Path - JProbe-dir`/profiler` +
-JVM Option - For each of these options, select Add, type the option in
-the Value field, then check its box: +
-[source,oac_no_warn]
-----
-    -Xbootclasspath/p:JProbe-dir/profiler/jpagent.jar
-    -Xrunjprobeagent
-    -Xnoclassgc
-----
-::
-
-[NOTE]
-=======================================================================
-
-If any of the configuration options are missing or incorrect, the
-profiler might experience problems that affect the performance of the
-GlassFish Server.
-
-=======================================================================
-
-When the server starts up with this configuration, you can attach the
-profiler.
-3.  Set the following environment variable: +
-[source,oac_no_warn]
-----
-JPROBE_ARGS_0=-jp_input=JPL-file-path
-----
-See Step link:#jprbstp6[6] for instructions on how to create the JPL
-file.
-4.  Start the server instance.
-5.  Launch the `jpprofiler` and attach to Remote Session. The default
-port is `4444`.
-6.  [[jprbstp6]] +
-Create the JPL file using the JProbe Launch Pad. Here are the required
-settings:
-1.  Select Server Side for the type of application.
-2.  On the Program tab, provide the following details: +
-Target Server - other-server +
-Server home Directory - as-install +
-Server class File - `com.sun.enterprise.server.J2EERunner` +
-Working Directory - as-install +
-Classpath - as-install`/lib/appserv-rt.jar` +
-Source File Path - source-code-dir (in case you want to get the line
-level details) +
-Server class arguments - (optional) +
-Main Package - `com.sun.enterprise.server` +
-You must also set VM, Attach, and Coverage tabs appropriately. For
-further details, see the JProbe documentation. After you have created
-the JPL file, use this an input to `JPROBE_ARGS_0`.
-
-
diff --git a/docs/application-development-guide/src/main/jbake/content/ejb.adoc b/docs/application-development-guide/src/main/jbake/content/ejb.adoc
deleted file mode 100644
index e98191b..0000000
--- a/docs/application-development-guide/src/main/jbake/content/ejb.adoc
+++ /dev/null
@@ -1,1362 +0,0 @@
-type=page
-status=published
-title=Using Enterprise JavaBeans Technology
-next=container_managed-persistence.html
-prev=webapps.html
-~~~~~~
-Using Enterprise JavaBeans Technology
-=====================================
-
-[[GSDVG00010]][[beahl]]
-
-
-[[using-enterprise-javabeans-technology]]
-8 Using Enterprise JavaBeans Technology
----------------------------------------
-
-This chapter describes how Enterprise JavaBeans ( EJB) technology is
-supported in the Oracle GlassFish Server.
-
-The following topics are addressed here:
-
-* link:#beahn[Value Added Features]
-* link:#beahw[EJB Timer Service]
-* link:#beahx[Using Session Beans]
-* link:#beail[Using Read-Only Beans]
-* link:#beait[Using Message-Driven Beans]
-
-For general information about enterprise beans, see
-"https://javaee.github.io/tutorial/partentbeans.html[Enterprise Beans]"
-in The Java EE 8 Tutorial.
-
-
-[NOTE]
-=======================================================================
-
-The Web Profile of the GlassFish Server supports the EJB 3.1 Lite
-specification, which allows enterprise beans within web applications,
-among other features. The full GlassFish Server supports the entire EJB
-3.1 specification. For details, see
-http://jcp.org/en/jsr/detail?id=318[JSR 318]
-(`http://jcp.org/en/jsr/detail?id=318`).
-
-The GlassFish Server is backward compatible with 1.1, 2.0, 2.1, and 3.0
-enterprise beans. However, to take advantage of version 3.1 features,
-you should develop new beans as 3.1 enterprise beans.
-
-=======================================================================
-
-
-[[beahn]][[GSDVG00145]][[value-added-features]]
-
-Value Added Features
-~~~~~~~~~~~~~~~~~~~~
-
-The GlassFish Server provides a number of value additions that relate to
-EJB development. References to more in-depth material are included.
-
-The following topics are addressed here:
-
-* link:#beaho[Read-Only Beans]
-* link:#beahp[The `pass-by-reference` Element]
-* link:#beahq[Pooling and Caching]
-* link:#beahu[Priority Based Scheduling of Remote Bean Invocations]
-* link:#beahv[Immediate Flushing]
-
-[[beaho]][[GSDVG00420]][[read-only-beans]]
-
-Read-Only Beans
-^^^^^^^^^^^^^^^
-
-Another feature that the GlassFish Server provides is the read-only
-bean, an EJB 2.1 entity bean that is never modified by an EJB client.
-Read-only beans avoid database updates completely.
-
-
-[NOTE]
-=======================================================================
-
-Read-only beans are specific to the GlassFish Server and are not part of
-the Enterprise JavaBeans Specification, v2.1. Use of this feature for an
-EJB 2.1 bean results in a non-portable application.
-
-To make an EJB 3.0 entity read-only, use `@Column` annotations to mark
-its columns `insertable=false` and `updatable=false`.
-
-=======================================================================
-
-
-A read-only bean can be used to cache a database entry that is
-frequently accessed but rarely updated (externally by other beans). When
-the data that is cached by a read-only bean is updated by another bean,
-the read-only bean can be notified to refresh its cached data.
-
-The GlassFish Server provides a number of ways by which a read-only
-bean's state can be refreshed. By setting the
-`refresh-period-in-seconds` element in the `glassfish-ejb-jar.xml` file
-and the `trans-attribute` element (or `@TransactionAttribute`
-annotation) in the `ejb-jar.xml` file, it is easy to configure a
-read-only bean that is one of the following:
-
-* Always refreshed
-* Periodically refreshed
-* Never refreshed
-* Programmatically refreshed
-
-Read-only beans are best suited for situations where the underlying data
-never changes, or changes infrequently. For further information and
-usage guidelines, see link:#beail[Using Read-Only Beans].
-
-[[beahp]][[GSDVG00421]][[the-pass-by-reference-element]]
-
-The `pass-by-reference` Element
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The `pass-by-reference` element in the `glassfish-ejb-jar.xml` file
-allows you to specify the parameter passing semantics for colocated
-remote EJB invocations. This is an opportunity to improve performance.
-However, use of this feature results in non-portable applications. See
-"link:../application-deployment-guide/dd-elements.html#GSDPG00219[pass-by-reference]" in GlassFish Server Open Source
-Edition Application Deployment Guide.
-
-[[beahq]][[GSDVG00422]][[pooling-and-caching]]
-
-Pooling and Caching
-^^^^^^^^^^^^^^^^^^^
-
-The EJB container of the GlassFish Server pools anonymous instances
-(message-driven beans, stateless session beans, and entity beans) to
-reduce the overhead of creating and destroying objects. The EJB
-container maintains the free pool for each bean that is deployed. Bean
-instances in the free pool have no identity (that is, no primary key
-associated) and are used to serve method calls. The free beans are also
-used to serve all methods for stateless session beans.
-
-Bean instances in the free pool transition from a Pooled state to a
-Cached state after `ejbCreate` and the business methods run. The size
-and behavior of each pool is controlled using pool-related properties in
-the EJB container or the `glassfish-ejb-jar.xml` file.
-
-In addition, the GlassFish Server supports a number of tunable
-parameters that can control the number of "stateful" instances (stateful
-session beans and entity beans) cached as well as the duration they are
-cached. Multiple bean instances that refer to the same database row in a
-table can be cached. The EJB container maintains a cache for each bean
-that is deployed.
-
-To achieve scalability, the container selectively evicts some bean
-instances from the cache, usually when cache overflows. These evicted
-bean instances return to the free bean pool. The size and behavior of
-each cache can be controlled using the cache-related properties in the
-EJB container or the `glassfish-ejb-jar.xml` file.
-
-Pooling and caching parameters for the `glassfish-ejb-jar.xml` file are
-described in "link:../application-deployment-guide/dd-elements.html#GSDPG00095[bean-cache]" in GlassFish Server Open
-Source Edition Application Deployment Guide.
-
-[[beahr]][[GSDVG00285]][[pooling-parameters]]
-
-Pooling Parameters
-++++++++++++++++++
-
-One of the most important parameters for GlassFish Server pooling is
-`steady-pool-size`. When `steady-pool-size` is set to a value greater
-than 0, the container not only pre-populates the bean pool with the
-specified number of beans, but also attempts to ensure that this number
-of beans is always available in the free pool. This ensures that there
-are enough beans in the ready-to-serve state to process user requests.
-
-Note that the `steady-pool-size` and `max-pool-size` parameters only
-govern the number of instances that are pooled over a long period of
-time. They do not necessarily guarantee that the number of instances
-that may exist in the JVM at a given time will not exceed the value
-specified by `max-pool-size`. For example, suppose an idle stateless
-session container has a fully-populated pool with a `steady-pool-size`
-of 10. If 20 concurrent requests arrive for the EJB component, the
-container creates 10 additional instances to satisfy the burst of
-requests. The advantage of this is that it prevents the container from
-blocking any of the incoming requests. However, if the activity dies
-down to 10 or fewer concurrent requests, the additional 10 instances are
-discarded.
-
-Another parameter, `pool-idle-timeout-in-seconds`, allows the
-administrator to specify the amount of time a bean instance can be idle
-in the pool. When `pool-idle-timeout-in-seconds` is set to greater than
-0, the container removes or destroys any bean instance that is idle for
-this specified duration.
-
-[[beahs]][[GSDVG00286]][[caching-parameters]]
-
-Caching Parameters
-++++++++++++++++++
-
-GlassFish Server provides a way that completely avoids caching of entity
-beans, using commit option C. Commit option C is particularly useful if
-beans are accessed in large number but very rarely reused. For
-additional information, refer to
-link:transaction-service.html#beajh[Commit Options].
-
-The GlassFish Server caches can be either bounded or unbounded. Bounded
-caches have limits on the number of beans that they can hold beyond
-which beans are passivated. For stateful session beans, there are three
-ways (LRU, NRU and FIFO) of picking victim beans when cache overflow
-occurs. Caches can also passivate beans that are idle (not accessed for
-a specified duration).
-
-[[beahu]][[GSDVG00423]][[priority-based-scheduling-of-remote-bean-invocations]]
-
-Priority Based Scheduling of Remote Bean Invocations
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can create multiple thread pools, each having its own work queues.
-An optional element in the `glassfish-ejb-jar.xml` file,
-`use-thread-pool-id`, specifies the thread pool that processes the
-requests for the bean. The bean must have a remote interface, or
-`use-thread-pool-id` is ignored. You can create different thread pools
-and specify the appropriate thread pool ID for a bean that requires a
-quick response time. If there is no such thread pool configured or if
-the element is absent, the default thread pool is used.
-
-[[beahv]][[GSDVG00424]][[immediate-flushing]]
-
-Immediate Flushing
-^^^^^^^^^^^^^^^^^^
-
-Normally, all entity bean updates within a transaction are batched and
-executed at the end of the transaction. The only exception is the
-database flush that precedes execution of a finder or select query.
-
-Since a transaction often spans many method calls, you might want to
-find out if the updates made by a method succeeded or failed immediately
-after method execution. To force a flush at the end of a method's
-execution, use the `flush-at-end-of-method` element in the
-`glassfish-ejb-jar.xml` file. Only non-finder methods in an entity bean
-can be flush-enabled. (For an EJB 2.1 bean, these methods must be in the
-Local, Local Home, Remote, or Remote Home interface.) See
-"link:../application-deployment-guide/dd-elements.html#GSDPG00156[flush-at-end-of-method]" in GlassFish Server Open
-Source Edition Application Deployment Guide.
-
-Upon completion of the method, the EJB container updates the database.
-Any exception thrown by the underlying data store is wrapped as follows:
-
-* If the method that triggered the flush is a `create` method, the
-exception is wrapped with `CreateException`.
-* If the method that triggered the flush is a `remove` method, the
-exception is wrapped with `RemoveException`.
-* For all other methods, the exception is wrapped with `EJBException`.
-
-All normal end-of-transaction database synchronization steps occur
-regardless of whether the database has been flushed during the
-transaction.
-
-[[beahw]][[GSDVG00146]][[ejb-timer-service]]
-
-EJB Timer Service
-~~~~~~~~~~~~~~~~~
-
-The EJB Timer Service uses a database to store persistent information
-about EJB timers. The EJB Timer Service in GlassFish Server is
-preconfigured to use an embedded version of the Apache Derby database.
-
-The EJB Timer Service configuration can store persistent timer
-information in any database supported by the GlassFish Server for
-persistence. For a list of the JDBC drivers currently supported by the
-GlassFish Server, see the link:../release-notes/toc.html#GSRLN[GlassFish Server Open Source
-Edition Release Notes]. For configurations of supported and other
-drivers, see "link:../administration-guide/jdbc.html#GSADG00579[Configuration Specifics for JDBC
-Drivers]" in GlassFish Server Open Source Edition Administration Guide.
-
-The timer service is automatically enabled when you deploy an
-application or module that uses it. You can verify that the timer
-service is running by accessing the following URL:
-
-[source,oac_no_warn]
-----
-http://localhost:8080/ejb-timer-service-app/timer
-----
-
-To change the database used by the EJB Timer Service, set the EJB Timer
-Service's Timer DataSource setting to a valid JDBC resource. If the EJB
-Timer Service has already been started in a server instance, you must
-also create the timer database table. DDL files are located in
-as-install`/lib/install/databases`.
-
-Using the EJB Timer Service is equivalent to interacting with a single
-JDBC resource manager. If an EJB component or application accesses a
-database either directly through JDBC or indirectly (for example,
-through an entity bean's persistence mechanism), and also interacts with
-the EJB Timer Service, its data source must be configured with an XA
-JDBC driver.
-
-You can change the following EJB Timer Service settings. You must
-restart the server for the changes to take effect.
-
-Minimum Delivery Interval::
-  Specifies the minimum time in milliseconds before an expiration for a
-  particular timer can occur. This guards against extremely small timer
-  increments that can overload the server. The default is `1000`.
-Maximum Redeliveries::
-  Specifies the maximum number of times the EJB timer service attempts
-  to redeliver a timer expiration after an exception or rollback of a
-  container-managed transaction. The default is `1`.
-Redelivery Interval::
-  Specifies how long in milliseconds the EJB timer service waits after a
-  failed `ejbTimeout` delivery before attempting a redelivery. The
-  default is `5000`.
-Timer DataSource::
-  Specifies the database used by the EJB Timer Service. The default is
-  `jdbc/__TimerPool`. +
-
-[width="100%",cols="100%",]
-|=======================================================================
-a|
-Caution:
-
-Do not use the `jdbc/__TimerPool` resource for timers in clustered
-GlassFish Server environments. You must instead use a custom JDBC
-resource or the `jdbc/__default` resource. See the instructions below,
-in link:#gktqo[To Deploy an EJB Timer to a Cluster]. Also refer to
-"link:../administration-guide/jdbc.html#GSADG00747[Enabling the jdbc/__default Resource in a Clustered
-Environment]" in GlassFish Server Open Source Edition Administration
-Guide.
-
-|=======================================================================
-
-
-For information about the `asadmin list-timers` and
-`asadmin migrate-timers` subcommands, see the link:../reference-manual/toc.html#GSRFM[GlassFish
-Server Open Source Edition Reference Manual]. For information about
-migrating EJB timers, see "link:../ha-administration-guide/instances.html#GSHAG00190[Migrating EJB Timers]" in
-GlassFish Server Open Source Edition High Availability Administration
-Guide.
-
-You can use the `--keepstate` option of the `asadmin redeploy` command
-to retain EJB timers between redeployments.
-
-The default for `--keepstate` is false. This option is supported only on
-the default server instance, named `server`. It is not supported and
-ignored for any other target.
-
-When the `--keepstate` is set to true, each application that uses an EJB
-timer is assigned an ID in the timer database. The EJB object that is
-associated with a given application is assigned an ID that is
-constructed from the application ID and a numerical suffix. To preserve
-active timer data, GlassFish Server stores the application ID and the
-EJB ID in the timer database. To restore the data, the class loader of
-the newly redeployed application retrieves the EJB timers that
-correspond to these IDs from the timer database.
-
-For more information about the `asadmin redeploy` command, see the
-link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-
-[[gktqo]][[GSDVG00070]][[to-deploy-an-ejb-timer-to-a-cluster]]
-
-To Deploy an EJB Timer to a Cluster
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This procedure explains how to deploy an EJB timer to a cluster.
-
-By default, the GlassFish Server 5.0 timer service points to the
-preconfigured `jdbc/__TimerPool` resource, which uses an embedded Apache
-Derby database configuration that will not work in clustered
-environments.
-
-The problem is that embedded Apache Derby database runs in the GlassFish
-Server Java VM, so when you use the `jdbc/__TimerPool` resource, each
-DAS and each clustered server instance will have its own database table.
-Because of this, clustered server instances will not be able to find the
-database table on the DAS, and the DAS will not be able to find the
-tables on the clustered server instances.
-
-The solution is to use either a custom JDBC resource or the
-`jdbc/__default` resource that is preconfigured but not enabled by
-default in GlassFish Server. The `jdbc/__default` resource does not use
-the embedded Apache Derby database by default.
-
-[[GSDVG547]]
-
-Before You Begin
-
-If creating a new timer resource, the resource should be created before
-deploying applications that will use the timer.
-
-
-[CAUTION]
-=======================================================================
-
-Do not use the `jdbc/__TimerPool` resource for timers in clustered
-GlassFish Server environments. You must instead use a custom JDBC
-resource or the `jdbc/__default` resource. See
-"olink:GSADG00747[Enabling the jdbc/__default Resource in a Clustered
-Environment]" in GlassFish Server Open Source Edition Administration
-Guide.
-
-=======================================================================
-
-
-1.  Execute the following command: +
-[source,oac_no_warn]
-----
-asadmin set configs.config.cluster_name-config.ejb-container.ejb-timer-service.timer-
-datasource=jdbc/my-timer-resource
-----
-2.  Restart the DAS and the target cluster(s). +
-[source,oac_no_warn]
-----
-asadmin stop-cluster cluster-name
-asadmin stop-domain domain-name
-asadmin start-domain domain-name
-asadmin start-cluster cluster-name
-----
-
-[[GSDVG548]]
-
-Troubleshooting
-
-If you inadvertently used the `jdbc/__TimerPool` resource for your EJB
-timer in a clustered GlassFish Server environment, the DAS and the
-clustered server instances will be using separate Apache Derby database
-tables that are running in individual Java VMs. For timers to work in a
-clustered environment, the DAS and the clustered server instances must
-share a common database table.
-
-If you attempt to deploy an application with EJB timers without setting
-the timer resource correctly, the startup will fail, and you will be
-left with a marker file, named `ejb-timer-service-app`, on the DAS that
-will prevent the Timer Service from correctly creating the database
-table.
-
-The solution is to remove the marker file on the DAS, restart the DAS
-and the clusters, and then redploy any applications that rely on the
-offending EJB timer. The marker file is located on the DAS in
-domain-dir`/generated/ejb/``ejb-timer-service-app`.
-
-[[beahx]][[GSDVG00147]][[using-session-beans]]
-
-Using Session Beans
-~~~~~~~~~~~~~~~~~~~
-
-This section provides guidelines for creating session beans in the
-GlassFish Server environment.
-
-The following topics are addressed here:
-
-* link:#beahy[About the Session Bean Containers]
-* link:#beaib[Stateful Session Bean Failover]
-* link:#beaii[Session Bean Restrictions and Optimizations]
-
-Information on session beans is contained in the Enterprise JavaBeans
-Specification, v3.1.
-
-[[beahy]][[GSDVG00425]][[about-the-session-bean-containers]]
-
-About the Session Bean Containers
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Like an entity bean, a session bean can access a database through Java
-Database Connectivity (JDBC) calls. A session bean can also provide
-transaction settings. These transaction settings and JDBC calls are
-referenced by the session bean's container, allowing it to participate
-in transactions managed by the container.
-
-A container managing stateless session beans has a different charter
-from a container managing stateful session beans.
-
-The following topics are addressed here:
-
-* link:#beahz[Stateless Container]
-* link:#beaia[Stateful Container]
-
-[[beahz]][[GSDVG00287]][[stateless-container]]
-
-Stateless Container
-+++++++++++++++++++
-
-The stateless container manages stateless session beans, which, by
-definition, do not carry client-specific states. All session beans (of a
-particular type) are considered equal.
-
-A stateless session bean container uses a bean pool to service requests.
-The GlassFish Server specific deployment descriptor file,
-`glassfish-ejb-jar.xml`, contains the properties that define the pool:
-
-* `steady-pool-size`
-* `resize-quantity`
-* `max-pool-size`
-* `pool-idle-timeout-in-seconds`
-
-For more information about `glassfish-ejb-jar.xml`, see
-"link:../application-deployment-guide/dd-files.html#GSDPG00079[The glassfish-ejb-jar.xml File]" in GlassFish Server
-Open Source Edition Application Deployment Guide.
-
-The GlassFish Server provides the `wscompile` and `wsdeploy` tools to
-help you implement a web service endpoint as a stateless session bean.
-For more information about these tools, see the link:../reference-manual/toc.html#GSRFM[GlassFish
-Server Open Source Edition Reference Manual].
-
-[[beaia]][[GSDVG00288]][[stateful-container]]
-
-Stateful Container
-++++++++++++++++++
-
-The stateful container manages the stateful session beans, which, by
-definition, carry the client-specific state. There is a one-to-one
-relationship between the client and the stateful session beans. At
-creation, each stateful session bean (SFSB) is given a unique session ID
-that is used to access the session bean so that an instance of a
-stateful session bean is accessed by a single client only.
-
-Stateful session beans are managed using cache. The size and behavior of
-stateful session beans cache are controlled by specifying the following
-`glassfish-ejb-jar.xml` parameters:
-
-* `max-cache-size`
-* `resize-quantity`
-* `cache-idle-timeout-in-seconds`
-* `removal-timeout-in-seconds`
-* `victim-selection-policy`
-
-The `max-cache-size` element specifies the maximum number of session
-beans that are held in cache. If the cache overflows (when the number of
-beans exceeds `max-cache-size`), the container then passivates some
-beans or writes out the serialized state of the bean into a file. The
-directory in which the file is created is obtained from the EJB
-container using the configuration APIs.
-
-For more information about `glassfish-ejb-jar.xml`, see
-"link:../application-deployment-guide/dd-files.html#GSDPG00079[The glassfish-ejb-jar.xml File]" in GlassFish Server
-Open Source Edition Application Deployment Guide.
-
-The passivated beans are stored on the file system. The Session Store
-Location setting in the EJB container allows the administrator to
-specify the directory where passivated beans are stored. By default,
-passivated stateful session beans are stored in application-specific
-subdirectories created under domain-dir`/session-store`.
-
-
-[NOTE]
-=======================================================================
-
-Make sure the `delete` option is set in the `server.policy` file, or
-expired file-based sessions might not be deleted properly. For more
-information about `server.policy`, see link:securing-apps.html#beabx[The
-`server.policy` File].
-
-=======================================================================
-
-
-The Session Store Location setting also determines where the session
-state is persisted if it is not highly available; see
-link:#beaic[Choosing a Persistence Store].
-
-[[beaib]][[GSDVG00426]][[stateful-session-bean-failover]]
-
-Stateful Session Bean Failover
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-An SFSB's state can be saved in a persistent store in case a server
-instance fails. The state of an SFSB is saved to the persistent store at
-predefined points in its life cycle. This is called checkpointing. If
-SFSB checkpointing is enabled, checkpointing generally occurs after any
-transaction involving the SFSB is completed, even if the transaction
-rolls back.
-
-However, if an SFSB participates in a bean-managed transaction, the
-transaction might be committed in the middle of the execution of a bean
-method. Since the bean's state might be undergoing transition as a
-result of the method invocation, this is not an appropriate instant to
-checkpoint the bean's state. In this case, the EJB container checkpoints
-the bean's state at the end of the corresponding method, provided the
-bean is not in the scope of another transaction when that method ends.
-If a bean-managed transaction spans across multiple methods,
-checkpointing is delayed until there is no active transaction at the end
-of a subsequent method.
-
-The state of an SFSB is not necessarily transactional and might be
-significantly modified as a result of non-transactional business
-methods. If this is the case for an SFSB, you can specify a list of
-checkpointed methods. If SFSB checkpointing is enabled, checkpointing
-occurs after any checkpointed methods are completed.
-
-The following table lists the types of references that SFSB failover
-supports. All objects bound into an SFSB must be one of the supported
-types. In the table, No indicates that failover for the object type
-might not work in all cases and that no failover support is provided.
-However, failover might work in some cases for that object type. For
-example, failover might work because the class implementing that type is
-serializable.
-
-[[GSDVG549]][[sthref18]][[fvyed]]
-
-
-Table 8-1 Object Types Supported for Java EE Stateful Session Bean State
-Failover
-
-[width="100%",cols="45%,55%",options="header",]
-|=======================================================================
-|Java Object Type |Failover Support
-|Colocated or distributed stateless session, stateful session, or entity
-bean reference |Yes
-
-|JNDI context |Yes, `InitialContext` and `java:comp/env`
-
-|UserTransaction |Yes, but if the instance that fails is never
-restarted, any prepared global transactions are lost and might not be
-correctly rolled back or committed.
-
-|JDBC DataSource |No
-
-|Java Message Service (JMS) ConnectionFactory, Destination |No
-
-|JavaMail Session |No
-
-|Connection Factory |No
-
-|Administered Object |No
-
-|Web service reference |No
-
-|Serializable Java types |Yes
-
-|Extended persistence context |No
-|=======================================================================
-
-
-For more information about the `InitialContext`, see
-link:jndi.html#beans[Accessing the Naming Context]. For more information
-about transaction recovery, see link:transaction-service.html#beanm[Using
-the Transaction Service]. For more information about Administered
-Objects, see "link:../administration-guide/jms.html#GSADG00599[Administering JMS Physical Destinations]"
-in GlassFish Server Open Source Edition Administration Guide.
-
-
-[NOTE]
-=======================================================================
-
-Idempotent URLs are supported along the HTTP path, but not the RMI-IIOP
-path. For more information, see link:webapps.html#beage[Configuring
-Idempotent URL Requests].
-
-If a server instance to which an RMI-IIOP client request is sent crashes
-during the request processing (before the response is prepared and sent
-back to the client), an error is sent to the client. The client must
-retry the request explicitly. When the client retries the request, the
-request is sent to another server instance in the cluster, which
-retrieves session state information for this client.
-
-HTTP sessions can also be saved in a persistent store in case a server
-instance fails. In addition, if a distributable web application
-references an SFSB, and the web application's session fails over, the
-EJB reference is also failed over. For more information, see
-link:webapps.html#beahe[Distributed Sessions and Persistence].
-
-If an SFSB that uses session persistence is undeployed while the
-GlassFish Server instance is stopped, the session data in the
-persistence store might not be cleared. To prevent this, undeploy the
-SFSB while the GlassFish Server instance is running.
-
-=======================================================================
-
-
-Configure SFSB failover by:
-
-* link:#beaic[Choosing a Persistence Store]
-* link:#beaid[Enabling Checkpointing]
-* link:#beaih[Specifying Methods to Be Checkpointed]
-
-[[beaic]][[GSDVG00289]][[choosing-a-persistence-store]]
-
-Choosing a Persistence Store
-++++++++++++++++++++++++++++
-
-The following types of persistent storage are supported for passivation
-and checkpointing of the SFSB state:
-
-* The local file system - Allows a single server instance to recover the
-SFSB state after a failure and restart. This store also provides
-passivation and activation of the state to help control the amount of
-memory used. This option is not supported in a production environment
-that requires SFSB state persistence. This is the default storage
-mechanism if availability is not enabled.
-* Other servers - Uses other server instances in the cluster for session
-persistence. Clustered server instances replicate session state. Each
-backup instance stores the replicated data in memory. This is the
-default storage mechanism if availability is enabled.
-
-Choose the persistence store in one of the following ways:
-
-* To use the local file system, first disable availability. Select the
-Availability Service component under the relevant configuration in the
-Administration Console. Uncheck the Availability Service box. Then
-select the EJB Container component and edit the Session Store Location
-value. The default is domain-dir`/session-store`.
-* To use other servers, select the Availability Service component under
-the relevant configuration in the Administration Console. Check the
-Availability Service box. To enable availability for the EJB container,
-select the EJB Container Availability tab, then check the Availability
-Service box. All instances in an GlassFish Server cluster should have
-the same availability settings to ensure consistent behavior.
-
-For more information about SFSB state persistence, see the
-link:../ha-administration-guide/toc.html#GSHAG[GlassFish Server Open Source Edition High Availability
-Administration Guide].
-
-[[gkpdg]][[GSDVG00033]][[using-the---keepstate-option]]
-
-Using the `--keepstate` Option
-
-If you are using the file system for persistence, you can use the
-`--keepstate` option of the `asadmin redeploy` command to retain the
-SFSB state between redeployments.
-
-The default for `--keepstate` is false. This option is supported only on
-the default server instance, named `server`. It is not supported and
-ignored for any other target.
-
-Some changes to an application between redeployments prevent this
-feature from working properly. For example, do not change the set of
-instance variables in the SFSB bean class.
-
-If any active SFSB instance fails to be preserved or restored, none of
-the SFSB instances will be available when the redeployment is complete.
-However, the redeployment continues and a warning is logged.
-
-To preserve active state data, GlassFish Server serializes the data and
-saves it in memory. To restore the data, the class loader of the newly
-redeployed application deserializes the data that was previously saved.
-
-For more information about the `asadmin redeploy` command, see the
-link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-
-[[gkpef]][[GSDVG00034]][[using-the---asyncreplication-option]]
-
-Using the `--asyncreplication` Option
-
-If you are using replication on other servers for persistence, you can
-use the `--asyncreplication` option of the `asadmin deploy` command to
-specify that SFSB states are first buffered and then replicated using a
-separate asynchronous thread. If `--asyncreplication` is set to true
-(default), performance is improved but availability is reduced. If the
-instance where states are buffered but not yet replicated fails, the
-states are lost. If set to false, performance is reduced but
-availability is guaranteed. States are not buffered but immediately
-transmitted to other instances in the cluster.
-
-For more information about the `asadmin deploy` command, see the
-link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-
-[[beaid]][[GSDVG00290]][[enabling-checkpointing]]
-
-Enabling Checkpointing
-++++++++++++++++++++++
-
-The following sections describe how to enable SFSB checkpointing:
-
-* link:#beaie[Server Instance and EJB Container Levels]
-* link:#beaif[Application and EJB Module Levels]
-* link:#beaig[SFSB Level]
-
-[[beaie]][[GSDVG00035]][[server-instance-and-ejb-container-levels]]
-
-Server Instance and EJB Container Levels
-
-To enable SFSB checkpointing at the server instance or EJB container
-level, see link:#beaic[Choosing a Persistence Store].
-
-[[beaif]][[GSDVG00036]][[application-and-ejb-module-levels]]
-
-Application and EJB Module Levels
-
-To enable SFSB checkpointing at the application or EJB module level
-during deployment, use the `asadmin deploy` or `asadmin deploydir`
-command with the `--availabilityenabled` option set to `true`. For
-details, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition
-Reference Manual].
-
-[[beaig]][[GSDVG00037]][[sfsb-level]]
-
-SFSB Level
-
-To enable SFSB checkpointing at the SFSB level, set
-`availability-enabled="true"` in the `ejb` element of the SFSB's
-`glassfish-ejb-jar.xml` file as follows:
-
-[source,oac_no_warn]
-----
-<glassfish-ejb-jar>
-   ...
-   <enterprise-beans>
-      ...
-      <ejb availability-enabled="true">
-         <ejb-name>MySFSB</ejb-name>
-      </ejb>
-   ...
-   </enterprise-beans>
-</glassfish-ejb-jar>
-----
-
-[[beaih]][[GSDVG00291]][[specifying-methods-to-be-checkpointed]]
-
-Specifying Methods to Be Checkpointed
-+++++++++++++++++++++++++++++++++++++
-
-If SFSB checkpointing is enabled, checkpointing generally occurs after
-any transaction involving the SFSB is completed, even if the transaction
-rolls back.
-
-To specify additional optional checkpointing of SFSBs at the end of
-non-transactional business methods that cause important modifications to
-the bean's state, use the `checkpoint-at-end-of-method` element within
-the `ejb` element in `glassfish-ejb-jar.xml`.
-
-For example:
-
-[source,oac_no_warn]
-----
-<glassfish-ejb-jar>
-   ...
-   <enterprise-beans>
-      ...
-      <ejb availability-enabled="true">
-         <ejb-name>ShoppingCartEJB</ejb-name>
-         <checkpoint-at-end-of-method>
-            <method>
-               <method-name>addToCart</method-name>
-            </method>
-         </checkpoint-at-end-of-method>
-      </ejb>
-      ...
-   </enterprise-beans>
-</glassfish-ejb-jar>
-----
-
-For details, see "link:../application-deployment-guide/dd-elements.html#GSDPG00108[checkpoint-at-end-of-method]" in
-GlassFish Server Open Source Edition Application Deployment Guide.
-
-The non-transactional methods in the `checkpoint-at-end-of-method`
-element can be the following:
-
-* `create` methods defined in the home or business interface of the
-SFSB, if you want to checkpoint the initial state of the SFSB
-immediately after creation
-* For SFSBs using container managed transactions only, methods in the
-remote interface of the bean marked with the transaction attribute
-TX_NOT_SUPPORTED or TX_NEVER
-* For SFSBs using bean managed transactions only, methods in which a
-bean managed transaction is neither started nor committed
-
-Any other methods mentioned in this list are ignored. At the end of
-invocation of each of these methods, the EJB container saves the state
-of the SFSB to persistent store.
-
-
-[NOTE]
-=======================================================================
-
-If an SFSB does not participate in any transaction, and if none of its
-methods are explicitly specified in the `checkpoint-at-end-of-method`
-element, the bean's state is not checkpointed at all even if
-`availability-enabled="true"` for this bean.
-
-For better performance, specify a small subset of methods. The methods
-chosen should accomplish a significant amount of work in the context of
-the Java EE application or should result in some important modification
-to the bean's state.
-
-=======================================================================
-
-
-[[beaii]][[GSDVG00427]][[session-bean-restrictions-and-optimizations]]
-
-Session Bean Restrictions and Optimizations
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This section discusses restrictions on developing session beans and
-provides some optimization guidelines.
-
-* link:#beaij[Optimizing Session Bean Performance]
-* link:#beaik[Restricting Transactions]
-* link:#glanq[EJB Singletons]
-
-[[beaij]][[GSDVG00292]][[optimizing-session-bean-performance]]
-
-Optimizing Session Bean Performance
-+++++++++++++++++++++++++++++++++++
-
-For stateful session beans, colocating the stateful beans with their
-clients so that the client and bean are executing in the same process
-address space improves performance.
-
-[[beaik]][[GSDVG00293]][[restricting-transactions]]
-
-Restricting Transactions
-++++++++++++++++++++++++
-
-The following restrictions on transactions are enforced by the container
-and must be observed as session beans are developed:
-
-* A session bean can participate in, at most, a single transaction at a
-time.
-* If a session bean is participating in a transaction, a client cannot
-invoke a method on the bean such that the `trans-attribute` element (or
-`@TransactionAttribute` annotation) in the `ejb-jar.xml` file would
-cause the container to execute the method in a different or unspecified
-transaction context or an exception is thrown.
-* If a session bean instance is participating in a transaction, a client
-cannot invoke the `remove` method on the session object's home or
-business interface object, or an exception is thrown.
-
-[[glanq]][[GSDVG00294]][[ejb-singletons]]
-
-EJB Singletons
-++++++++++++++
-
-EJB Singletons are created for each server instance in a cluster, and
-not once per cluster.
-
-[[beail]][[GSDVG00148]][[using-read-only-beans]]
-
-Using Read-Only Beans
-~~~~~~~~~~~~~~~~~~~~~
-
-A read-only bean is an EJB 2.1 entity bean that is never modified by an
-EJB client. The data that a read-only bean represents can be updated
-externally by other enterprise beans, or by other means, such as direct
-database updates.
-
-
-[NOTE]
-=======================================================================
-
-Read-only beans are specific to the GlassFish Server and are not part of
-the Enterprise JavaBeans Specification, v2.1. Use of this feature for an
-EJB 2.1 bean results in a non-portable application.
-
-To make an EJB 3.0 entity bean read-only, use `@Column` annotations to
-mark its columns `insertable=false` and `updatable=false`.
-
-=======================================================================
-
-
-Read-only beans are best suited for situations where the underlying data
-never changes, or changes infrequently.
-
-The following topics are addressed here:
-
-* link:#beaim[Read-Only Bean Characteristics and Life Cycle]
-* link:#beain[Read-Only Bean Good Practices]
-* link:#beaio[Refreshing Read-Only Beans]
-* link:#beais[Deploying Read-Only Beans]
-
-[[beaim]][[GSDVG00428]][[read-only-bean-characteristics-and-life-cycle]]
-
-Read-Only Bean Characteristics and Life Cycle
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Read-only beans are best suited for situations where the underlying data
-never changes, or changes infrequently. For example, a read-only bean
-can be used to represent a stock quote for a particular company, which
-is updated externally. In such a case, using a regular entity bean might
-incur the burden of calling `ejbStore`, which can be avoided by using a
-read-only bean.
-
-Read-only beans have the following characteristics:
-
-* Only entity beans can be read-only beans.
-* Either bean-managed persistence (BMP) or container-managed persistence
-(CMP) is allowed. If CMP is used, do not create the database schema
-during deployment. Instead, work with your database administrator to
-populate the data into the tables. See
-link:container_managed-persistence.html#beajj[Using Container-Managed
-Persistence].
-* Only container-managed transactions are allowed; read-only beans
-cannot start their own transactions.
-* Read-only beans don't update any bean state.
-* `ejbStore` is never called by the container.
-* `ejbLoad` is called only when a transactional method is called or when
-the bean is initially created (in the cache), or at regular intervals
-controlled by the bean's `refresh-period-in-seconds` element in the
-`glassfish-ejb-jar.xml` file.
-* The home interface can have any number of find methods. The return
-type of the find methods must be the primary key for the same bean type
-(or a collection of primary keys).
-* If the data that the bean represents can change, then
-`refresh-period-in-seconds` must be set to refresh the beans at regular
-intervals. `ejbLoad` is called at this regular interval.
-
-A read-only bean comes into existence using the appropriate find
-methods.
-
-Read-only beans are cached and have the same cache properties as entity
-beans. When a read-only bean is selected as a victim to make room in the
-cache, `ejbPassivate` is called and the bean is returned to the free
-pool. When in the free pool, the bean has no identity and is used only
-to serve any finder requests.
-
-Read-only beans are bound to the naming service like regular read-write
-entity beans, and clients can look up read-only beans the same way
-read-write entity beans are looked up.
-
-[[beain]][[GSDVG00429]][[read-only-bean-good-practices]]
-
-Read-Only Bean Good Practices
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-For best results, follow these guidelines when developing read-only
-beans:
-
-* Avoid having any `create` or `remove` methods in the home interface.
-* Use any of the valid EJB 2.1 transaction attributes for the
-`trans-attribute` element. +
-The reason for having `TX_SUPPORTED` is to allow reading uncommitted
-data in the same transaction. Also, the transaction attributes can be
-used to force `ejbLoad`.
-
-[[beaio]][[GSDVG00430]][[refreshing-read-only-beans]]
-
-Refreshing Read-Only Beans
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-There are several ways of refreshing read-only beans, as addressed in
-the following sections:
-
-* link:#beaip[Invoking a Transactional Method]
-* link:#beaiq[Refreshing Periodically]
-* link:#beair[Refreshing Programmatically]
-
-[[beaip]][[GSDVG00295]][[invoking-a-transactional-method]]
-
-Invoking a Transactional Method
-+++++++++++++++++++++++++++++++
-
-Invoking any transactional method invokes `ejbLoad`.
-
-[[beaiq]][[GSDVG00296]][[refreshing-periodically]]
-
-Refreshing Periodically
-+++++++++++++++++++++++
-
-Use the `refresh-period-in-seconds` element in the
-`glassfish-ejb-jar.xml` file to refresh a read-only bean periodically.
-
-* If the value specified in `refresh-period-in-seconds` is zero or not
-specified, which is the default, the bean is never refreshed (unless a
-transactional method is accessed).
-* If the value is greater than zero, the bean is refreshed at the rate
-specified.
-
-
-[NOTE]
-=======================================================================
-
-This is the only way to refresh the bean state if the data can be
-modified external to the GlassFish Server.
-
-=======================================================================
-
-
-By default, a single timer is used for all instances of a read-only
-bean. When that timer fires, all bean instances are marked as expired
-and are refreshed from the database the next time they are used.
-
-Use the `-Dcom.sun.ejb.containers.readonly.relative.refresh.mode=true`
-flag to refresh each bean instance independently upon access if its
-refresh period has expired. The default is `false`. Note that each
-instance still has the same refresh period. This additional level of
-granularity can improve the performance of read-only beans that do not
-need to be refreshed at the same time.
-
-To set this flag, use the `asadmin create-jvm-options` command. For
-example:
-
-[source,oac_no_warn]
-----
-asadmin create-jvm-options -Dcom.sun.ejb.containers.readonly.relative.refresh.mode=true
-----
-
-[[beair]][[GSDVG00297]][[refreshing-programmatically]]
-
-Refreshing Programmatically
-+++++++++++++++++++++++++++
-
-Typically, beans that update any data that is cached by read-only beans
-need to notify the read-only beans to refresh their state. Use
-ReadOnlyBeanNotifier to force the refresh of read-only beans.
-
-To do this, invoke the following methods on the ReadOnlyBeanNotifier
-bean:
-
-[source,oac_no_warn]
-----
-public interface ReadOnlyBeanNotifier extends java.rmi.Remote {
-   refresh(Object PrimaryKey) throws RemoteException;
- }
-----
-
-The implementation of the ReadOnlyBeanNotifier interface is provided by
-the container. The bean looks up ReadOnlyBeanNotifier using a fragment
-of code such as the following example:
-
-[source,oac_no_warn]
-----
-com.sun.appserv.ejb.ReadOnlyBeanHelper helper = 
-  new com.sun.appserv.ejb.ReadOnlyBeanHelper();
-com.sun.appserv.ejb.ReadOnlyBeanNotifier notifier = 
-  helper.getReadOnlyBeanNotifier("java:comp/env/ejb/ReadOnlyCustomer");
-notifier.refresh(PrimaryKey);
-----
-
-For a local read-only bean notifier, the lookup has this modification:
-
-[source,oac_no_warn]
-----
-helper.getReadOnlyBeanLocalNotifier("java:comp/env/ejb/LocalReadOnlyCustomer");
-----
-
-Beans that update any data that is cached by read-only beans need to
-call the `refresh` methods. The next (non-transactional) call to the
-read-only bean invokes `ejbLoad`.
-
-For Javadoc tool pages relevant to read-only beans, go to
-`http://glassfish.java.net/nonav/docs/v3/api/` and click on the
-`com.sun.appserv.ejb` package.
-
-[[beais]][[GSDVG00431]][[deploying-read-only-beans]]
-
-Deploying Read-Only Beans
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Read-only beans are deployed in the same manner as other entity beans.
-However, in the entry for the bean in the `glassfish-ejb-jar.xml` file,
-the `is-read-only-bean` element must be set to true. That is:
-
-`<is-read-only-bean>true</is-read-only-bean>`
-
-Also, the `refresh-period-in-seconds` element in the
-`glassfish-ejb-jar.xml` file can be set to some value that specifies the
-rate at which the bean is refreshed. If this element is missing, no
-refresh occurs.
-
-All requests in the same transaction context are routed to the same
-read-only bean instance. Set the `allow-concurrent-access` element to
-either `true` (to allow concurrent accesses) or `false` (to serialize
-concurrent access to the same read-only bean). The default is `false`.
-
-For further information on these elements, refer to
-"link:../application-deployment-guide/dd-files.html#GSDPG00079[The glassfish-ejb-jar.xml File]" in GlassFish Server
-Open Source Edition Application Deployment Guide.
-
-[[beait]][[GSDVG00149]][[using-message-driven-beans]]
-
-Using Message-Driven Beans
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This section describes message-driven beans and explains the
-requirements for creating them in the GlassFish Server environment.
-
-The following topics are addressed here:
-
-* link:#beaiu[Message-Driven Bean Configuration]
-* link:#beaiy[Message-Driven Bean Restrictions and Optimizations]
-
-[[beaiu]][[GSDVG00432]][[message-driven-bean-configuration]]
-
-Message-Driven Bean Configuration
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The following topics are addressed here:
-
-* link:#beaiv[Connection Factory and Destination]
-* link:#beaiw[Message-Driven Bean Pool]
-* link:#beaix[Domain-Level Settings]
-
-For information about setting up load balancing for message-driven
-beans, see link:jms.html#beaop[Load-Balanced Message Inflow].
-
-[[beaiv]][[GSDVG00298]][[connection-factory-and-destination]]
-
-Connection Factory and Destination
-++++++++++++++++++++++++++++++++++
-
-A message-driven bean is a client to a Connector inbound resource
-adapter. The message-driven bean container uses the JMS service
-integrated into the GlassFish Server for message-driven beans that are
-JMS clients. JMS clients use JMS Connection Factory- and
-Destination-administered objects. A JMS Connection Factory administered
-object is a resource manager Connection Factory object that is used to
-create connections to the JMS provider.
-
-The `mdb-connection-factory` element in the `glassfish-ejb-jar.xml` file
-for a message-driven bean specifies the connection factory that creates
-the container connection to the JMS provider.
-
-The `jndi-name` element of the `ejb` element in the
-`glassfish-ejb-jar.xml` file specifies the JNDI name of the administered
-object for the JMS Queue or Topic destination that is associated with
-the message-driven bean.
-
-[[beaiw]][[GSDVG00299]][[message-driven-bean-pool]]
-
-Message-Driven Bean Pool
-++++++++++++++++++++++++
-
-The container manages a pool of message-driven beans for the concurrent
-processing of a stream of messages. The `glassfish-ejb-jar.xml` file
-contains the elements that define the pool (that is, the `bean-pool`
-element):
-
-* `steady-pool-size`
-* `resize-quantity`
-* `max-pool-size`
-* `pool-idle-timeout-in-seconds`
-
-For more information about `glassfish-ejb-jar.xml`, see
-"link:../application-deployment-guide/dd-files.html#GSDPG00079[The glassfish-ejb-jar.xml File]" in GlassFish Server
-Open Source Edition Application Deployment Guide.
-
-[[beaix]][[GSDVG00300]][[domain-level-settings]]
-
-Domain-Level Settings
-+++++++++++++++++++++
-
-You can control the following domain-level message-driven bean settings
-in the EJB container:
-
-Initial and Minimum Pool Size::
-  Specifies the initial and minimum number of beans maintained in the
-  pool. The default is `0`.
-Maximum Pool Size::
-  Specifies the maximum number of beans that can be created to satisfy
-  client requests. The default is 3`2`.
-Pool Resize Quantity::
-  Specifies the number of beans to be created if a request arrives when
-  the pool is empty (subject to the Initial and Minimum Pool Size), or
-  the number of beans to remove if idle for more than the Idle Timeout.
-  The default is `8`.
-Idle Timeout::
-  Specifies the maximum time in seconds that a bean can remain idle in
-  the pool. After this amount of time, the bean is destroyed. The
-  default is `600` (10 minutes). A value of `0` means a bean can remain
-  idle indefinitely.
-
-For information on monitoring message-driven beans, click the Help
-button in the Administration Console. Select the Stand-Alone Instances
-component, select the instance from the table, and select the Monitor
-tab. Or select the Clusters component, select the cluster from the
-table, select the Instances tab, select the instance from the table, and
-select the Monitor tab.
-
-
-[NOTE]
-=======================================================================
-
-Running monitoring when it is not needed might impact performance, so
-you might choose to turn monitoring off when it is not in use. For
-details, see "olink:GSADG00011[Administering the Monitoring Service]" in
-GlassFish Server Open Source Edition Administration Guide.
-
-=======================================================================
-
-
-[[beaiy]][[GSDVG00433]][[message-driven-bean-restrictions-and-optimizations]]
-
-Message-Driven Bean Restrictions and Optimizations
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This section discusses the following restrictions and performance
-optimizations that pertain to developing message-driven beans:
-
-* link:#beaiz[Pool Tuning and Monitoring]
-* link:#beaja[The `onMessage` Runtime Exception]
-
-[[beaiz]][[GSDVG00301]][[pool-tuning-and-monitoring]]
-
-Pool Tuning and Monitoring
-++++++++++++++++++++++++++
-
-The message-driven bean pool is also a pool of threads, with each
-message-driven bean instance in the pool associating with a server
-session, and each server session associating with a thread. Therefore, a
-large pool size also means a high number of threads, which impacts
-performance and server resources.
-
-When configuring message-driven bean pool properties, make sure to
-consider factors such as message arrival rate and pattern, `onMessage`
-method processing time, overall server resources (threads, memory, and
-so on), and any concurrency requirements and limitations from other
-resources that the message-driven bean accesses.
-
-When tuning performance and resource usage, make sure to consider
-potential JMS provider properties for the connection factory used by the
-container (the `mdb-connection-factory` element in the
-`glassfish-ejb-jar.xml` file). For example, you can tune the Open
-Message Queue flow control related properties for connection factory in
-situations where the message incoming rate is much higher than
-`max-pool-size` can handle.
-
-Refer to "link:../administration-guide/monitoring.html#GSADG00011[Administering the Monitoring Service]" in
-GlassFish Server Open Source Edition Administration Guide for
-information on how to get message-driven bean pool statistics.
-
-[[beaja]][[GSDVG00302]][[the-onmessage-runtime-exception]]
-
-The `onMessage` Runtime Exception
-+++++++++++++++++++++++++++++++++
-
-Message-driven beans, like other well-behaved MessageListeners, should
-not, in general, throw runtime exceptions. If a message-driven bean's
-`onMessage` method encounters a system-level exception or error that
-does not allow the method to successfully complete, the Enterprise
-JavaBeans Specification, v3.0 provides the following guidelines:
-
-* If the bean method encounters a runtime exception or error, it should
-simply propagate the error from the bean method to the container.
-* If the bean method performs an operation that results in a checked
-exception that the bean method cannot recover, the bean method should
-throw the `javax.ejb.EJBException` that wraps the original exception.
-* Any other unexpected error conditions should be reported using
-`javax.ejb.EJBException` (`javax.ejb.EJBException` is a subclass of
-`java.lang.RuntimeException`).
-
-Under container-managed transaction demarcation, upon receiving a
-runtime exception from a message-driven bean's `onMessage` method, the
-container rolls back the container-started transaction and the message
-is redelivered. This is because the message delivery itself is part of
-the container-started transaction. By default, the GlassFish Server
-container closes the container's connection to the JMS provider when the
-first runtime exception is received from a message-driven bean
-instance's `onMessage` method. This avoids potential message redelivery
-looping and protects server resources if the message-driven bean's
-`onMessage` method continues misbehaving. To change this default
-container behavior, use the `cmt-max-runtime-exceptions` property of the
-MDB container. Here is an example `asadmin set` command that sets this
-property:
-
-[source,oac_no_warn]
-----
-asadmin set server-config.mdb-container.property.cmt-max-runtime-exceptions="5"
-----
-
-For more information about the `asadmin set` command, see the
-link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-
-The `cmt-max-runtime-exceptions` property specifies the maximum number
-of runtime exceptions allowed from a message-driven bean's `onMessage`
-method before the container starts to close the container's connection
-to the message source. By default this value is 1; -1 disables this
-container protection.
-
-A message-driven bean's `onMessage` method can use the
-`jakarta.jms.Message.getJMSRedelivered` method to check whether a received
-message is a redelivered message.
-
-
-[NOTE]
-=======================================================
-
-The `cmt-max-runtime-exceptions` property is deprecated.
-
-=======================================================
-
-
-
diff --git a/docs/application-development-guide/src/main/jbake/content/java-clients.adoc b/docs/application-development-guide/src/main/jbake/content/java-clients.adoc
deleted file mode 100644
index 6dba942..0000000
--- a/docs/application-development-guide/src/main/jbake/content/java-clients.adoc
+++ /dev/null
@@ -1,1647 +0,0 @@
-type=page
-status=published
-title=Developing Java Clients
-next=connectors.html
-prev=container_managed-persistence.html
-~~~~~~
-Developing Java Clients
-=======================
-
-[[GSDVG00012]][[beakt]]
-
-
-[[developing-java-clients]]
-10 Developing Java Clients
---------------------------
-
-This chapter describes how to develop, assemble, and deploy Java
-clients.
-
-The following topics are addressed here:
-
-* link:#beaku[Introducing the Application Client Container]
-* link:#beakv[Developing Clients Using the ACC]
-* link:#gkusn[Developing Clients Without the ACC]
-
-
-[NOTE]
-=======================================================================
-
-The Web Profile of the OracleGlassFish Server supports the EJB 3.1 Lite
-specification, which allows enterprise beans within web applications,
-among other features. The full GlassFish Server supports the entire EJB
-3.1 specification. For details, see
-http://jcp.org/en/jsr/detail?id=318[JSR 318]
-(`http://jcp.org/en/jsr/detail?id=318`).
-
-Accordingly, the Application Client Container is supported only in the
-full GlassFish Server, not in the Web Profile.
-
-JMS resources are supported only in the full GlassFish Server, not in
-the Web Profile. See link:jms.html#beaob[Using the Java Message Service].
-
-=======================================================================
-
-
-[[beaku]][[GSDVG00159]][[introducing-the-application-client-container]]
-
-Introducing the Application Client Container
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The Application Client Container (ACC) includes a set of Java classes,
-libraries, and other files that are required for and distributed with
-Java client programs that execute in their own Java Virtual Machine
-(JVM). The ACC manages the execution of Java EE application client
-components (application clients), which are used to access a variety of
-Java EE services (such as JMS resources, EJB components, web services,
-security, and so on.) from a JVM outside the Oracle GlassFish Server.
-
-The ACC communicates with the GlassFish Server using RMI-IIOP protocol
-and manages the details of RMI-IIOP communication using the client ORB
-that is bundled with it. Compared to other Java EE containers, the ACC
-is lightweight.
-
-For information about debugging application clients, see
-link:debugging-apps.html#gekvq[Application Client Debugging].
-
-
-[NOTE]
-=======================================================================
-
-Interoperability between application clients and GlassFish Servers
-running under different major versions is not supported.
-
-=======================================================================
-
-
-[[fvymq]][[GSDVG00459]][[acc-security]]
-
-ACC Security
-^^^^^^^^^^^^
-
-The ACC determines when authentication is needed. This typically occurs
-when the client refers to an EJB component that requires authorization
-or when annotations in the client's `main` class trigger injection
-which, in turn, requires contact with the GlassFish Server's naming
-service. To authenticate the end user, the ACC prompts for any required
-information, such as a username and password. The ACC itself provides a
-very simple dialog box to prompt for and read these values.
-
-The ACC integrates with the GlassFish Server's authentication system. It
-also supports SSL (Secure Socket Layer)/IIOP if configured and when
-necessary; see link:#gckgn[Using RMI/IIOP Over SSL].
-
-You can provide an alternate implementation to gather authentication
-information, tailored to the needs of the application client. To do so,
-include the class to perform these duties in the application client and
-identify the fully-qualified name of this class in the
-`callback-handler` element of the `application-client.xml` descriptor
-for the client. The ACC uses this class instead of its default class for
-asking for and reading the authentication information. The class must
-implement the javax.security.auth.callback.CallbackHandler interface.
-See the Java EE specification, section 9.2, Application Clients:
-Security, for more details.
-
-Application clients can use link:securing-apps.html#beacm[Programmatic
-Login Using the ProgrammaticLogin Class].
-
-[[fvymv]][[GSDVG00460]][[acc-naming]]
-
-ACC Naming
-^^^^^^^^^^
-
-The client container enables the application clients to use the Java
-Naming and Directory Interface (JNDI) to look up Java EE services (such
-as JMS resources, EJB components, web services, security, and so on.)
-and to reference configurable parameters set at the time of deployment.
-
-[[gbgfe]][[GSDVG00461]][[application-client-annotation]]
-
-Application Client Annotation
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Annotation is supported for the main class and the optional callback
-handler class in application clients. For more information, see
-"link:../application-deployment-guide/overview.html#GSDPG00320[Deployment Descriptors and Annotations]" in GlassFish
-Server Open Source Edition Application Deployment Guide.
-
-[[gavkg]][[GSDVG00462]][[java-web-start]]
-
-Java Web Start
-^^^^^^^^^^^^^^
-
-Java Web Start allows your application client to be easily launched and
-automatically downloaded and updated. It is enabled for all application
-clients by default. For more information, see link:#gavmf[Using Java Web
-Start].
-
-[[gipjj]][[GSDVG00463]][[application-client-jar-file]]
-
-Application Client JAR File
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-In GlassFish Server 5.0, the downloaded appclient JAR file is smaller
-than in previous releases, with dependent classes in separate JAR files.
-When copying the downloaded appclient to another location, make sure to
-include the JAR files containing the dependent classes as well. You can
-also use the `asadmin get-client-stubs` command to retrieve the
-appclient and all associated application JAR files and place them in
-another location.
-
-[[beakv]][[GSDVG00160]][[developing-clients-using-the-acc]]
-
-Developing Clients Using the ACC
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This section describes the procedure to develop, assemble, and deploy
-client applications using the ACC.
-
-The following topics are addressed here:
-
-* link:#beakw[To Access an EJB Component From an Application Client]
-* link:#beakx[To Access a JMS Resource From an Application Client]
-* link:#gavmf[Using Java Web Start]
-* link:#gipkt[Using the Embeddable ACC]
-* link:#beaky[Running an Application Client Using the `appclient`
-Script]
-* link:#beakz[Using the `package-appclient` Script]
-* link:#fvymy[The `client.policy` File]
-* link:#gckgn[Using RMI/IIOP Over SSL]
-* link:#ghbpc[Connecting to a Remote EJB Module Through a Firewall]
-* link:#gipkj[Specifying a Splash Screen]
-* link:#gjiec[Setting Login Retries]
-* link:#gjpjt[Using Libraries with Application Clients]
-
-[[beakw]][[GSDVG00072]][[to-access-an-ejb-component-from-an-application-client]]
-
-To Access an EJB Component From an Application Client
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-1.  In your client code, reference the EJB component by using an `@EJB`
-annotation or by looking up the JNDI name as defined in the
-`ejb-jar.xml` file. +
-For more information about naming and lookups, see
-link:jndi.html#beans[Accessing the Naming Context]. +
-If load balancing is enabled as in Step link:#accejb8[7] and the EJB
-components being accessed are in a different cluster, the endpoint list
-must be included in the lookup, as follows: +
-[source,oac_no_warn]
-----
-corbaname:host1:port1,host2:port2,.../NameService#ejb/jndi-name
-----
-2.  Define the `@EJB` annotations or the `ejb-ref` elements in the
-`application-client.xml` file. Define the corresponding `ejb-ref`
-elements in the `glassfish-application-client.xml` file. +
-For more information on the `glassfish-application-client.xml` file, see
-"link:../application-deployment-guide/dd-files.html#GSDPG00081[The glassfish-application-client.xml file]" in
-GlassFish Server Open Source Edition Application Deployment Guide. For a
-general explanation of how to map JNDI names using reference elements,
-see link:jndi.html#beaoa[Mapping References].
-3.  Deploy the application client and EJB component together in an
-application. +
-For more information on deployment, see the link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server
-Open Source Edition Application Deployment Guide]. To get the client JAR
-file, use the `--retrieve` option of the `asadmin deploy` command. +
-To retrieve the stubs and ties generated during deployment, use the
-`asadmin get-client-stubs` command. For details, see the
-link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-4.  Ensure that the client JAR file includes the following files:
-* A Java class to access the bean.
-* `application-client.xml` - (optional) Java EE application client
-deployment descriptor.
-* `glassfish-application-client.xml` - (optional) GlassFish Server
-specific client deployment descriptor. For information on the
-`glassfish-application-client.xml` file, see "link:../application-deployment-guide/dd-files.html#GSDPG00081[The
-glassfish-application-client.xml file]" in GlassFish Server Open Source
-Edition Application Deployment Guide.
-* The `MANIFEST.MF` file. This file contains a reference to the `main`
-class, which states the complete package prefix and class name of the
-Java client.
-5.  Prepare the client machine. +
-This step is not needed for Java Web Start. This step is not needed if
-the client and server machines are the same. +
-If you are using the `appclient` script, package the GlassFish Server
-system files required to launch application clients on remote systems
-using the `package-appclient` script, then retrieve the application
-client itself using the `asadmin get-client-stubs` command. +
-For more information, see link:#beakz[Using the `package-appclient`
-Script] and the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition
-Reference Manual].
-6.  To access EJB components that are residing in a remote system, make
-the following changes to the `sun-acc.xml` file or the `appclient`
-script. This step is not needed for Java Web Start.
-* Define the `target-server` element's `address` and `port` attributes
-to reference the remote server machine and its ORB port. See
-"link:../application-deployment-guide/dd-elements.html#GSDPG00284[target-server]" in GlassFish Server Open Source
-Edition Application Deployment Guide.
-* Use the `-targetserver` option of the appclient script to reference
-the remote server machine and its ORB port. For more information, see
-link:#beaky[Running an Application Client Using the `appclient` Script]. +
-To determine the ORB port on the remote server, use the `asadmin get`
-command. For example: +
-[source,oac_no_warn]
-----
-asadmin --host rmtsrv get server-config.iiop-service.iiop-listener.iiop-listener1.port
-----
-For more information about the `asadmin get` command, see the
-link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-7.  [[accejb8]] +
-To set up load balancing and failover of remote EJB references, define
-at least two `target-server` elements in the `sun-acc.xml` file or the
-`appclient` script. This step is not needed for Java Web Start. +
-If the GlassFish Server instance on which the application client is
-deployed participates in a cluster, the ACC finds all currently active
-IIOP endpoints in the cluster automatically. However, a client should
-have at least two endpoints specified for bootstrapping purposes, in
-case one of the endpoints has failed. +
-The `target-server` elements in the `sun-acc.xml` file specify one or
-more IIOP endpoints used for load balancing. The `address` attribute is
-an IPv4 address or host name, and the `port` attribute specifies the
-port number. See "link:../application-deployment-guide/dd-elements.html#GSDPG00111[client-container]" in GlassFish
-Server Open Source Edition Application Deployment Guide. +
-The `--targetserver` option of the appclient script specifies one or
-more IIOP endpoints used for load balancing. For more information, see
-link:#beaky[Running an Application Client Using the `appclient` Script].
-
-[[GSDVG555]]
-
-Next Steps
-
-* For instructions on running the application client, see
-link:#gavmf[Using Java Web Start] or link:#beaky[Running an Application
-Client Using the `appclient` Script].
-* For more information about RMI-IIOP load balancing and failover, see
-"link:../ha-administration-guide/rmi-iiop.html#GSHAG00013[RMI-IIOP Load Balancing and Failover]" in GlassFish
-Server Open Source Edition High Availability Administration Guide.
-
-[[beakx]][[GSDVG00073]][[to-access-a-jms-resource-from-an-application-client]]
-
-To Access a JMS Resource From an Application Client
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-1.  Create a JMS client. +
-For detailed instructions on developing a JMS client, see
-"https://javaee.github.io/tutorial/jms-examples.html[Java Message
-Service Examples]" in The Java EE 8 Tutorial.
-2.  Next, configure a JMS resource on the GlassFish Server. +
-For information on configuring JMS resources, see
-"link:../administration-guide/jms.html#GSADG00598[Administering JMS Connection Factories and
-Destinations]" in GlassFish Server Open Source Edition Administration
-Guide.
-3.  Define the `@Resource` or `@Resources` annotations or the
-`resource-ref` elements in the `application-client.xml` file. Define the
-corresponding `resource-ref` elements in the
-`glassfish-application-client.xml` file. +
-For more information on the `glassfish-application-client.xml` file, see
-"link:../application-deployment-guide/dd-files.html#GSDPG00081[The glassfish-application-client.xml file]" in
-GlassFish Server Open Source Edition Application Deployment Guide. For a
-general explanation of how to map JNDI names using reference elements,
-see link:jndi.html#beaoa[Mapping References].
-4.  Ensure that the client JAR file includes the following files:
-* A Java class to access the resource.
-* `application-client.xml` - (optional) Java EE application client
-deployment descriptor.
-* `glassfish-application-client.xml` - (optional) GlassFish Server
-specific client deployment descriptor. For information on the
-`glassfish-application-client.xml` file, see "link:../application-deployment-guide/dd-files.html#GSDPG00081[The
-glassfish-application-client.xml file]" in GlassFish Server Open Source
-Edition Application Deployment Guide.
-* The `MANIFEST.MF` file. This file contains a reference to the `main`
-class, which states the complete package prefix and class name of the
-Java client.
-5.  Prepare the client machine. +
-This step is not needed for Java Web Start. This step is not needed if
-the client and server machines are the same. +
-If you are using the `appclient` script, package the GlassFish Server
-system files required to launch application clients on remote systems
-using the `package-appclient` script, then retrieve the application
-client itself using the `asadmin get-client-stubs` command. +
-For more information, see link:#beakz[Using the `package-appclient`
-Script] and the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition
-Reference Manual].
-6.  Run the application client. +
-See link:#gavmf[Using Java Web Start] or link:#beaky[Running an
-Application Client Using the `appclient` Script].
-
-[[gavmf]][[GSDVG00464]][[using-java-web-start]]
-
-Using Java Web Start
-^^^^^^^^^^^^^^^^^^^^
-
-Java Web Start allows your application client to be easily launched and
-automatically downloaded and updated. General information about Java Web
-Start is available at
-`http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136112.html`.
-
-The following topics are addressed here:
-
-* link:#gavqb[Enabling and Disabling Java Web Start]
-* link:#gavmk[Downloading and Launching an Application Client]
-* link:#gavor[The Application Client URL]
-* link:#gcjlg[Signing JAR Files Used in Java Web Start]
-* link:#geqxg[Error Handling]
-* link:#geqwd[Vendor Icon, Splash Screen, and Text]
-* link:#gkmbs[Creating a Custom JNLP File]
-
-[[gavqb]][[GSDVG00312]][[enabling-and-disabling-java-web-start]]
-
-Enabling and Disabling Java Web Start
-+++++++++++++++++++++++++++++++++++++
-
-Java Web Start is enabled for all application clients by default.
-
-The application developer or deployer can specify that Java Web Start is
-always disabled for an application client by setting the value of the
-`eligible` element to `false` in the `glassfish-application-client.xml`
-file. See the link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition
-Application Deployment Guide].
-
-The GlassFish Server administrator can disable Java Web Start for a
-previously deployed eligible application client using the `asadmin set`
-command.
-
-To disable Java Web Start for all eligible application clients in an
-application, use the following command:
-
-[source,oac_no_warn]
-----
-asadmin set applications.application.app-name.property.java-web-start-enabled="false"
-----
-
-To disable Java Web Start for a stand-alone eligible application client,
-use the following command:
-
-[source,oac_no_warn]
-----
-asadmin set applications.application.module-name.property.java-web-start-enabled="false"
-----
-
-Setting `java-web-start-enabled="true"` re-enables Java Web Start for an
-eligible application client. For more information about the
-`asadmin set` command, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source
-Edition Reference Manual].
-
-[[gavmk]][[GSDVG00313]][[downloading-and-launching-an-application-client]]
-
-Downloading and Launching an Application Client
-+++++++++++++++++++++++++++++++++++++++++++++++
-
-If Java Web Start is enabled for your deployed application client, you
-can launch it for testing. Simply click on the Launch button next to the
-application client or application's listing on the App Client Modules
-page in the Administration Console.
-
-On other machines, you can download and launch the application client
-using Java Web Start in the following ways:
-
-* Using a web browser, directly enter the URL for the application
-client. See link:#gavor[The Application Client URL].
-* Click on a link to the application client from a web page.
-* Use the Java Web Start command `javaws`, specifying the URL of the
-application client as a command line argument.
-* If the application has previously been downloaded using Java Web
-Start, you have additional alternatives.
-
-** Use the desktop icon that Java Web Start created for the application
-client. When Java Web Start downloads an application client for the
-first time it asks you if such an icon should be created.
-
-** Use the Java Web Start control panel to launch the application
-client.
-
-When you launch an application client, Java Web Start contacts the
-server to see if a newer client version is available. This means you can
-redeploy an application client without having to worry about whether
-client machines have the latest version.
-
-[[gavor]][[GSDVG00314]][[the-application-client-url]]
-
-The Application Client URL
-++++++++++++++++++++++++++
-
-The default URL for an application or module generally is as follows:
-
-[source,oac_no_warn]
-----
-http://host:port/context-root
-----
-
-The default URL for a stand-alone application client module is as
-follows:
-
-[source,oac_no_warn]
-----
-http://host:port/appclient-module-id
-----
-
-The default URL for an application client module embedded within an
-application is as follows. Note that the relative path to the
-application client JAR file is included.
-
-[source,oac_no_warn]
-----
-http://host:port/application-id/appclient-path
-----
-
-If the context-root, appclient-module-id, or application-id is not
-specified during deployment, the name of the JAR or EAR file without the
-extension is used. If the application client module or application is
-not in JAR or EAR file format, an appclient-module-id or application-id
-is generated.
-
-Regardless of how the context-root or id is determined, it is written to
-the server log when you deploy the application. For details about
-naming, see "link:../application-deployment-guide/overview.html#GSDPG00323[Naming Standards]" in GlassFish Server
-Open Source Edition Application Deployment Guide.
-
-To set a different URL for an application client, use the `context-root`
-subelement of the `java-web-start-access` element in the
-`glassfish-application-client.xml` file. This overrides the
-appclient-module-id or application-id. See the link:../application-deployment-guide/toc.html#GSDPG[GlassFish
-Server Open Source Edition Application Deployment Guide].
-
-You can also pass arguments to the ACC or to the application client's
-`main` method as query parameters in the URL. If multiple application
-client arguments are specified, they are passed in the order specified.
-
-A question mark separates the context root from the arguments.
-Ampersands (`&`) separate the arguments and their values. Each argument
-and each value must begin with `arg=`. Here is an example URL with a
-`-color` argument for a stand-alone application client. The `-color`
-argument is passed to the application client's `main` method.
-
-[source,oac_no_warn]
-----
-http://localhost:8080/testClient?arg=-color&arg=red
-----
-
-
-[NOTE]
-=======================================================================
-
-If you are using the `javaws` URL command to launch Java Web Start with
-a URL that contains arguments, enclose the URL in double quotes (`"`) to
-avoid breaking the URL at the ampersand (`&`) symbol.
-
-=======================================================================
-
-
-Ideally, you should build your production application clients with
-user-friendly interfaces that collect information which might otherwise
-be gathered as command-line arguments. This minimizes the degree to
-which users must customize the URLs that launch application clients
-using Java Web Start. Command-line argument support is useful in a
-development environment and for existing application clients that depend
-on it.
-
-[[gcjlg]][[GSDVG00315]][[signing-jar-files-used-in-java-web-start]]
-
-Signing JAR Files Used in Java Web Start
-++++++++++++++++++++++++++++++++++++++++
-
-Java Web Start enforces a security sandbox. By default it grants any
-application, including application clients, only minimal privileges.
-Because Java Web Start applications can be so easily downloaded, Java
-Web Start provides protection from potentially harmful programs that
-might be accessible over the network. If an application requires a
-higher privilege level than the sandbox permits, the code that needs
-privileges must be in a JAR file that was signed.
-
-When Java Web Start downloads such a signed JAR file, it displays
-information about the certificate that was used to sign the JAR if that
-certificate is not trusted. It then asks you whether you want to trust
-that signed code. If you agree, the code receives elevated permissions
-and runs. If you reject the signed code, Java Web Start does not start
-the downloaded application.
-
-Your first Java Web Start launch of an application client is likely to
-involve this prompting because by default GlassFish Server uses a
-self-signed certificate that is not linked to a trusted authority.
-
-The GlassFish Server serves two types of signed JAR files in response to
-Java Web Start requests. One type is a JAR file installed as part of the
-GlassFish Server, which starts an application client during a Java Web
-Start launch: as-install`/lib/gf-client.jar`.
-
-The other type is a generated application client JAR file. As part of
-deployment, the GlassFish Server generates a new application client JAR
-file that contains classes, resources, and descriptors needed to run the
-application client on end-user systems. When you deploy an application
-with the `asadmin deploy` command's `--retrieve` option, use the
-`asadmin get-client-stubs` command, or select the Generate RMIStubs
-option from the EJB Modules deployment page in the Administration
-Console, this is one of the JAR files retrieved to your system. Because
-application clients need access beyond the minimal sandbox permissions
-to work in the Java Web Start environment, the generated application
-client JAR file must be signed before it can be downloaded to and
-executed on an end-user system.
-
-A JAR file can be signed automatically or manually.
-
-The following topics are addressed here:
-
-* link:#gcjmd[Automatically Signing JAR Files]
-* link:#gcjlr[Using the `jar-signing-alias` Deployment Property]
-
-[[gcjmd]][[GSDVG00038]][[automatically-signing-jar-files]]
-
-Automatically Signing JAR Files
-
-The GlassFish Server automatically creates a signed version of the
-required JAR file if none exists. When a Java Web Start request for the
-`gf-client.jar` file arrives, the GlassFish Server looks for
-domain-dir`/java-web-start/gf-client.jar`. When a request for an
-application's generated application client JAR file arrives, the
-GlassFish Server looks in the directory
-domain-dir`/java-web-start/`app-name for a file with the same name as
-the generated JAR file created during deployment.
-
-In either case, if the requested signed JAR file is absent or older than
-its unsigned counterpart, the GlassFish Server creates a signed version
-of the JAR file automatically and deposits it in the relevant directory.
-Whether the GlassFish Server just signed the JAR file or not, it serves
-the file from the domain-dir`/java-web-start` directory tree in response
-to the Java Web Start request.
-
-To sign these JAR files, by default the GlassFish Server uses its
-self-signed certificate. When you create a new domain, either by
-installing the GlassFish Server or by using the `asadmin create-domain`
-command, the GlassFish Server creates a self-signed certificate and adds
-it to the domain's key store.
-
-A self-signed certificate is generally untrustworthy because no
-certification authority vouches for its authenticity. The automatic
-signing feature uses the same certificate to create all required signed
-JAR files.
-
-Starting with Java SE 7 Update 21, stricter security is enforced for
-applications launched using Java Web Start. Application users will see
-various security messages, depending on their Java security settings. If
-Java security is set to Very High on their systems, users will not be
-able to launch application clients signed using the GlassFish Server
-self-signed certificate.
-
-To minimize impacts to application users, all Java Web Start
-applications should be signed with a trusted certificate instead of the
-GlassFish Server self-signed certificate. If you use the GlassFish
-Server Java Web Start feature or deploy applications that provide their
-own Java Web Start applications, perform the following steps:
-
-1.  Obtain a trusted certificate from a certification authority if your
-organization does not already have one.
-2.  Stop GlassFish Server.
-3.  Replace the GlassFish Server self-signed certificate with the
-trusted certificate by importing the trusted certificate into the
-GlassFish Server keystore using the `s1as` alias. By default, the
-keystore is located at domain-dir`/config/keystore.jks`. +
-For more information about importing a trusted certificate into the
-domain keystore, see "link:../security-guide/system-security.html#GSSCG00147[Administering JSSE Certificates]"
-in GlassFish Server Open Source Edition Security Guide.
-4.  Delete any signed JARs already generated by GlassFish Server:
-1.  At the command prompt, type: +
-`rm -rf` domain-dir`/java_web_start`
-2.  For each application that contains an application client launched
-using Java Web Start, type: +
-`rm -rf` domain-dir`/generated/xml/`app-name`/signed`
-3.  Restart GlassFish Server.
-5.  Ensure that the Java security setting on user systems is set to Very
-High.
-
-After you perform these steps, the first time a user launches an
-application client on their system, Java Web Start detects that the
-server's signed JARs are newer than those cached on the user's system
-and downloads them again. This happens on the first launch only,
-regardless of the client. Even though the application client is now
-signed using a trusted certificate, users will again be asked whether to
-trust the downloaded application and can choose to skip that prompt for
-future launches.
-
-[[gcjlr]][[GSDVG00039]][[using-the-jar-signing-alias-deployment-property]]
-
-Using the `jar-signing-alias` Deployment Property
-
-The `asadmin deploy` command property `jar-signing-alias` specifies the
-alias for the security certificate with which the application client
-container JAR file is signed.
-
-Java Web Start won't execute code requiring elevated permissions unless
-it resides in a JAR file signed with a certificate that the user's
-system trusts. For your convenience, GlassFish Server signs the JAR file
-automatically using the self-signed certificate from the domain, `s1as`.
-Java Web Start then asks the user whether to trust the code and displays
-the GlassFish Server certificate information.
-
-To sign this JAR file with a different certificate, first add the
-certificate to the domain keystore. You can use a certificate from a
-trusted authority, which avoids the Java Web Start prompt. To add a
-certificate to the domain keystore, see "link:../security-guide/system-security.html#GSSCG00147[Administering
-JSSE Certificates]" in GlassFish Server Open Source Edition Security
-Guide.
-
-Next, deploy your application using the `jar-signing-alias` property.
-For example:
-
-[source,oac_no_warn]
-----
-asadmin deploy --property jar-signing-alias=MyAlias MyApp.ear
-----
-
-For more information about the `asadmin deploy` command, see the
-link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-
-[[geqxg]][[GSDVG00316]][[error-handling]]
-
-Error Handling
-++++++++++++++
-
-When an application client is launched using Java Web Start, any error
-that the application client logic does not catch and handle is written
-to `System.err` and displayed in a dialog box. This display appears if
-an error occurs even before the application client logic receives
-control. It also appears if the application client code does not catch
-and handle errors itself.
-
-[[geqwd]][[GSDVG00317]][[vendor-icon-splash-screen-and-text]]
-
-Vendor Icon, Splash Screen, and Text
-++++++++++++++++++++++++++++++++++++
-
-To specify a vendor-specific icon, splash screen, text string, or a
-combination of these for Java Web Start download and launch screens, use
-the `vendor` element in the `glassfish-application-client.xml` file. The
-complete format of this element's data is as follows:
-
-[source,oac_no_warn]
-----
-<vendor>icon-image-URI::splash-screen-image-URI::vendor-text</vendor>
-----
-
-The following example vendor element contains an icon, a splash screen,
-and a text string:
-
-[source,oac_no_warn]
-----
-<vendor>images/icon.jpg::otherDir/splash.jpg::MyCorp, Inc.</vendor>
-----
-
-The following example vendor element contains an icon and a text string:
-
-[source,oac_no_warn]
-----
-<vendor>images/icon.jpg::MyCorp, Inc.</vendor>
-----
-
-The following example vendor element contains a splash screen and a text
-string; note the initial double colon:
-
-[source,oac_no_warn]
-----
-<vendor>::otherDir/splash.jpg::MyCorp, Inc.</vendor>
-----
-
-The following example vendor element contains only a text string:
-
-[source,oac_no_warn]
-----
-<vendor>MyCorp, Inc.</vendor>
-----
-
-The default value is the text string `Application Client`.
-
-For more information about the `glassfish-application-client.xml` file,
-see the link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition Application
-Deployment Guide].
-
-You can also specify a vendor-specific icon, splash screen, text string,
-or a combination by using a custom JNLP file; see link:#gkmbs[Creating a
-Custom JNLP File].
-
-[[gkmbs]][[GSDVG00318]][[creating-a-custom-jnlp-file]]
-
-Creating a Custom JNLP File
-+++++++++++++++++++++++++++
-
-You can partially customize the Java Network Launching Protocol (JNLP)
-file that GlassFish Server uses for Java Web Start.
-
-The following topics are addressed here:
-
-* link:#gkmco[Specifying the JNLP File in the Deployment Descriptor]
-* link:#gkmbq[Referring to JAR Files from the JNLP File]
-* link:#gkmbt[Referring to Other JNLP Files]
-* link:#gkmbr[Combining Custom and Automatically Generated Content]
-
-For more information about JNLP, see the
-http://java.sun.com/javase/technologies/desktop/javawebstart/download-spec.html[Java
-Web Start Architecture JNLP Specification and API Documentation]
-(`http://java.sun.com/javase/technologies/desktop/javawebstart/download-spec.html`).
-
-[[gkmco]][[GSDVG00040]][[specifying-the-jnlp-file-in-the-deployment-descriptor]]
-
-Specifying the JNLP File in the Deployment Descriptor
-
-To specify a custom JNLP file for Java Web Start, use the `jnlp-doc`
-element in the `glassfish-application-client.xml` file. If none is
-specified, a default JNLP file is generated.
-
-The value of the `jnlp-doc` element is a relative path with the
-following format:
-
-[source,oac_no_warn]
-----
-[path-to-JAR-in-EAR!]path-to-JNLP-in-JAR
-----
-
-The default path-to-JAR-in-EAR is the current application client JAR
-file. For example, if the JNLP file is in the application client JAR
-file at `custom/myInfo.jnlp`, the element value would look like this:
-
-[source,oac_no_warn]
-----
-<java-web-start-access>
-   <jnlp-doc>custom/myInfo.jnlp</jnlp-doc>
-</java-web-start-access>
-----
-
-If the application client is inside an EAR file, you can place the
-custom JNLP file inside another JAR file in the EAR. For example, if the
-JNLP file is in a JAR file at `other/myLib.jar`, the element value would
-look like this, with an exclamation point (`!`) separating the path to
-the JAR from the path in the JAR:
-
-[source,oac_no_warn]
-----
-<java-web-start-access>
-   <jnlp-doc>other/myLib.jar!custom/myInfo.jnlp</jnlp-doc>
-</java-web-start-access>
-----
-
-For more information about the `glassfish-application-client.xml` file,
-see the GlassFish Server Open Source Edition Application Deployment
-Guide.
-
-[[gkmbq]][[GSDVG00041]][[referring-to-jar-files-from-the-jnlp-file]]
-
-Referring to JAR Files from the JNLP File
-
-As with any JNLP document, the custom JNLP file can refer to JAR files
-the application client requires.
-
-Do not specify every JAR on which the client depends. GlassFish Server
-automatically handles JAR files that the Java EE specification requires
-to be available to the application client. This includes JAR files
-listed in the application client JAR file's manifest `Class-Path` and
-JAR files in the EAR file's library directory (if any) and their
-transitive closures. The custom JNLP file should specify only those JAR
-files the client needs that GlassFish Server would not otherwise
-include.
-
-Package these JAR files in the EAR file, as with any JAR file required
-by an application client. Use relative URIs in the `<jar href="...">`
-and `<nativelib href="...">` elements to point to the JAR files. The
-codebase that GlassFish Server assigns for the final client JNLP file
-corresponds to the top level of the EAR file. Therefore, relative `href`
-references correspond directly to the relative path to the JAR files
-within the EAR file.
-
-Neither the Java EE specification nor GlassFish Server supports
-packaging JAR files inside the application client JAR file itself.
-Nothing prevents this, but GlassFish Server does no special processing
-of such JAR files. They do not appear in the runtime class path and they
-cannot be referenced from the custom JNLP file.
-
-[[gkmbt]][[GSDVG00042]][[referring-to-other-jnlp-files]]
-
-Referring to Other JNLP Files
-
-The JNLP file can also refer to other custom JNLP files using
-`<extension href="..."/>` elements. To be consistent with relative
-`href` references to JAR files, the relative `href` references to JNLP
-files are resolved within the EAR file. You can place these JNLP files
-directly in the EAR file or inside JAR files that the EAR file contains.
-Use one of these formats for these `href` references:
-
-[source,oac_no_warn]
-----
-[path-to-JAR-in-EAR!]path-to-JNLP-in-JAR
-
-path-to-JNLP-in-EAR
-----
-
-Note that these formats are not equivalent to the format of the
-`jnlp-doc` element in the `glassfish-application-client.xml` file.
-
-These formats follow the standard entry-within-a-JAR URI syntax and
-semantics. Support for this syntax comes from the automated Java Web
-Start support in GlassFish Server. This is not a feature of Java Web
-Start or the JNLP standard.
-
-[[gkmbr]][[GSDVG00043]][[combining-custom-and-automatically-generated-content]]
-
-Combining Custom and Automatically Generated Content
-
-GlassFish Server recognizes these types of content in the JNLP file:
-
-* Owned — GlassFish Server owns the content and ignores any custom
-content
-* Merged — Automatically generated content and custom content are merged
-* Defaulted — Custom content is used if present, otherwise default
-content is provided
-
-You can compose a complete JNLP file and package it with the application
-client. GlassFish Server then combines it with its automatically
-generated JNLP file. You can also provide content that only adds to or
-replaces what GlassFish Server generates. The custom content must
-conform to the general structure of the JNLP format so that GlassFish
-Server can properly place it in the final JNLP file.
-
-For example, to specify a single native library to be included only for
-Windows systems, the new element to add might be as follows:
-
-[source,oac_no_warn]
-----
-<nativelib href="windows/myLib.jar"/>
-----
-
-However, you must indicate where in the overall document this element
-belongs. The actual custom JNLP file should look like this:
-
-[source,oac_no_warn]
-----
-<jnlp>
-   <resources os="Windows">
-      <nativelib href="windows/myLib.jar"/>
-   </resources>
-</jnlp>
-----
-
-GlassFish Server provides default `<information>` and `<resources>`
-elements, without specifying attributes such as `os`, `arch`,
-`platform`, or `locale`. GlassFish Server merges its own content within
-those elements with custom content under those elements. Further, you
-can provide your own `<information>` and `<resources>` elements (and
-fragments within them) that specify at least one of these attributes.
-
-In general, you can perform the following customizations:
-
-* Override the GlassFish Server defaults for the child elements of
-`<information>` elements that have no attribute settings for `os`,
-`arch`, `platform`, and `locale`. Among these child elements are
-`<title>`, `<vendor>`, `<description>`, `<icon>`, and so on.
-* Add `<information>` elements with `os`, `arch`, `platform`, or
-`locale` settings. You can also add child elements.
-* Add child elements of `<resources>` elements that have no attribute
-settings for `os`, `arch`, or `locale`. Among these child elements are
-`<jar>`, `<property>`, `<nativelib>`, and so on. You can also customize
-attributes of the `<java>` child element.
-* Add `<resources>` elements that specify at least one of `os`, `arch`,
-or `locale`. You can also add child elements.
-
-This flexibility allows you to add JAR files to the application
-(including platform-specific native libraries) and set properties to
-control the behavior of your application clients.
-
-The following tables provide more detail about what parts of the JNLP
-file you can add to and modify.
-
-[[GSDVG556]][[sthref24]][[gkmbk]]
-
-
-Table 10-1 Owned JNLP File Content
-
-[width="100%",cols="32%,68%",options="header",]
-|=======================================================================
-|JNLP File Fragment |Description
-a|
-[source,oac_no_warn]
-----
-<jnlp codebase="xxx" ...>
-----
-
- |GlassFish Server controls this content for application clients
-packaged in EAR files. The developer controls this content for
-application clients packaged in WAR files.
-
-a|
-[source,oac_no_warn]
-----
-<jnlp href="xxx" ...>
-----
-
- |GlassFish Server controls this content for application clients
-packaged in EAR files. The developer controls this content for
-application clients packaged in WAR files.
-
-a|
-[source,oac_no_warn]
-----
-<jnlp>
-  <security>
-----
-
- |GlassFish Server must control the permissions requested for each JNLP
-file. All permissions are needed for the main file, which launches the
-ACC. The permissions requested for other JNLP documents depend on
-whether the JAR files referenced in those documents are signed.
-
-a|
-[source,oac_no_warn]
-----
-<jnlp>
-  <application-desc>
-    <argument> ...
-----
-
- |GlassFish Server sets the `main-class` and the arguments to be passed
-to the client.
-|=======================================================================
-
-
-[[GSDVG557]][[sthref25]][[gkmci]]
-
-
-Table 10-2 Defaulted JNLP File Content
-
-[width="100%",cols="39%,61%",options="header",]
-|=======================================================================
-|JNLP File Fragment |Description
-a|
-[source,oac_no_warn]
-----
-<jnlp spec="xxx" ...>
-----
-
- |Specifies the JNLP specification version.
-
-a|
-[source,oac_no_warn]
-----
-<jnlp>
-  <information [no-attributes]>
-----
-
- |Specifies the application title, vendor, home page, various
-description text values, icon images, and whether offline execution is
-allowed.
-
-a|
-[source,oac_no_warn]
-----
-<jnlp>
-  <resources [no-attributes]>
-    <java version="xxx" 
-        java-vm-args="yyy" ...>
-----
-
- |Specifies the Java SE version or selected VM parameter settings.
-|=======================================================================
-
-
-[[GSDVG558]][[sthref26]][[gkmcc]]
-
-
-Table 10-3 Merged JNLP File Content
-
-[width="100%",cols="37%,63%",options="header",]
-|=======================================================================
-|JNLP File Fragment |Description
-a|
-[source,oac_no_warn]
-----
-<jnlp>
-  <information [attributes]>
-----
-
- |You can specify one or more of the `os`, `arch`, `platform`, and
-`locale` attributes for the `<information>` element. You can also
-specify child elements; GlassFish Server provides no default children.
-
-a|
-[source,oac_no_warn]
-----
-<jnlp>
-  <resources [attributes]>
-----
-
- |You can specify one or more of the `os`, `arch`, `platform`, and
-`locale` attributes for the `<resources>` element. You can also specify
-child elements; GlassFish Server provides no default children.
-
-a|
-[source,oac_no_warn]
-----
-<jnlp>
-  <resources [no-attributes]>
-    <jar ...>
-----
-
- |Adds JAR files to be included in the application to the JAR files
-provided by GlassFish Server.
-
-a|
-[source,oac_no_warn]
-----
-<jnlp>
-  <resources [no-attributes]>
-    <nativelib ...>
-----
-
- |Adds native libraries to be included in the application. Each entry in
-a JAR listed in a `<nativelib>` element must be a native library for the
-correct platform. The full syntax of the `<nativelib>` element lets the
-developer specify the platform for that native library.
-
-a|
-[source,oac_no_warn]
-----
-<jnlp>
-  <resources [no-attributes]>
-    <property ...>
-----
-
- |Adds system properties to be included in the application to the system
-properties defined by GlassFish Server.
-
-a|
-[source,oac_no_warn]
-----
-<jnlp>
-  <resources [no-attributes]>
-    <extension ...>
-----
-
- |Specifies another custom JNLP file.
-
-a|
-[source,oac_no_warn]
-----
-<jnlp>
-  <component-desc ...>
-----
-
- |Includes another custom JNLP file that specifies a component
-extension.
-
-a|
-[source,oac_no_warn]
-----
-<jnlp>
-  <installer-desc ...>
-----
-
- |Includes another custom JNLP file that specifies an installer
-extension.
-|=======================================================================
-
-
-[[gipkt]][[GSDVG00465]][[using-the-embeddable-acc]]
-
-Using the Embeddable ACC
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can embed the ACC into your application client. If you place the
-as-install`/lib/gf-client.jar` file in your runtime classpath, your
-application creates the ACC after your application code has started,
-then requests that the ACC start the application client portion. The
-basic model for coding is as follows:
-
-1.  Create a builder object.
-2.  Operate on the builder to configure the ACC.
-3.  Obtain a new ACC instance from the builder.
-4.  Present a client archive or class to the ACC instance.
-5.  Start the client running within the newly created ACC instance.
-
-Your code should follow this general pattern:
-
-[source,oac_no_warn]
-----
-// one TargetServer for each ORB endpoint for bootstrapping
-TargetServer[] servers = ...;
-
-// Get a builder to set up the ACC
-AppClientContainer.Builder builder = AppClientContainer.newBuilder(servers);
-
-// Fine-tune the ACC's configuration. Note ability to "chain" invocations.
-builder.callbackHandler("com.acme.MyHandler").authRealm("myRealm"); // Modify config
-
-// Get a container for a client.
-URI clientURI = ...; // URI to the client JAR
-AppClientContainer acc = builder.newContainer(clientURI);
-
-or
-
-Class mainClass = ...;
-AppClientContainer acc = builder.newContainer(mainClass);
-
-// In either case, start the client running.
-String[] appArgs = ...;
-acc.startClient(appArgs); // Start the client
-
-...
-
-acc.close(); // close the ACC(optional)
-----
-
-The ACC loads the application client's `main` class, performs any
-required injection, and transfers control to the `static main` method.
-The ACC's `run` method returns to the calling application as soon as the
-client's `main` method returns to the ACC.
-
-If the application client's `main` method starts any asynchronous
-activity, that work continues after the ACC returns. The ACC has no
-knowledge of whether the client's `main` method triggers asynchronous
-work. Therefore, if the client causes work on threads other than the
-calling thread, and if the embedding application needs to know when the
-client's asynchronous work completes, the embedding application and the
-client must agree on how this happens.
-
-The ACC's shutdown handling is invoked from the ACC's `close` method.
-The calling application can invoke `acc.close()` to close down any
-services started by the ACC. If the application client code started any
-asynchronous activity that might still depend on ACC services, invoking
-`close` before that asynchronous activity completes could cause
-unpredictable and undesirable results. The shutdown handling is also run
-automatically at VM shutdown if the code has not invoked `close` before
-then.
-
-The ACC does not prevent the calling application from creating or
-running more than one ACC instance during a single execution of the
-application either serially or concurrently. However, other services
-used by the ACC (transaction manager, security, ORB, and so on) might or
-might not support such serial or concurrent reuse.
-
-[[beaky]][[GSDVG00466]][[running-an-application-client-using-the-appclient-script]]
-
-Running an Application Client Using the `appclient` Script
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To run an application client, you can launch the ACC using the
-`appclient` script, whether or not Java Web Start is enabled. This is
-optional. This script is located in the as-install`/bin` directory. For
-details, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition
-Reference Manual].
-
-[[beakz]][[GSDVG00467]][[using-the-package-appclient-script]]
-
-Using the `package-appclient` Script
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can package the GlassFish Server system files required to launch
-application clients on remote systems into a single JAR file using the
-`package-appclient` script. This is optional. This script is located in
-the as-install`/bin` directory. For details, see the
-link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-
-[[fvymy]][[GSDVG00468]][[the-client.policy-file]]
-
-The `client.policy` File
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-The `client.policy` file is the J2SE policy file used by the application
-client. Each application client has a `client.policy` file. The default
-policy file limits the permissions of Java EE deployed application
-clients to the minimal set of permissions required for these
-applications to operate correctly. If an application client requires
-more than this default set of permissions, edit the `client.policy` file
-to add the custom permissions that your application client needs. Use
-the J2SE standard policy tool or any text editor to edit this file.
-
-For more information on using the J2SE policy tool, see
-`http://docs.oracle.com/javase/tutorial/security/tour2/index.html`.
-
-For more information about the permissions you can set in the
-`client.policy` file, see
-`http://docs.oracle.com/javase/7/docs/technotes/guides/security/permissions.html`.
-
-[[gckgn]][[GSDVG00469]][[using-rmiiiop-over-ssl]]
-
-Using RMI/IIOP Over SSL
-^^^^^^^^^^^^^^^^^^^^^^^
-
-You can configure RMI/IIOP over SSL in two ways: using a username and
-password, or using a client certificate.
-
-To use a username and password, configure the `ior-security-config`
-element in the `glassfish-ejb-jar.xml` file. The following configuration
-establishes SSL between an application client and an EJB component using
-a username and password. The user has to login to the ACC using either
-the `sun-acc.xml` mechanism or the
-link:securing-apps.html#beacm[Programmatic Login Using the
-ProgrammaticLogin Class] mechanism.
-
-[source,oac_no_warn]
-----
-<ior-security-config>
-  <transport-config>
-    <integrity>required</integrity>
-    <confidentiality>required</confidentiality>
-    <establish-trust-in-target>supported</establish-trust-in-target>
-    <establish-trust-in-client>none</establish-trust-in-client>
-  </transport-config>
-  <as-context>
-    <auth-method>username_password</auth-method>
-    <realm>default</realm>
-    <required>true</required>
-  </as-context>
- <sas-context>
-    <caller-propagation>none</caller-propagation>
- </sas-context>
-</ior-security-config>
-----
-
-For more information about the `glassfish-ejb-jar.xml` and `sun-acc.xml`
-files, see the link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition
-Application Deployment Guide].
-
-To use a client certificate, configure the `ior-security-config` element
-in the `glassfish-ejb-jar.xml` file. The following configuration
-establishes SSL between an application client and an EJB component using
-a client certificate.
-
-[source,oac_no_warn]
-----
-<ior-security-config>
-  <transport-config>
-    <integrity>required</integrity>
-    <confidentiality>required</confidentiality>
-    <establish-trust-in-target>supported</establish-trust-in-target>
-    <establish-trust-in-client>required</establish-trust-in-client>
-  </transport-config>
-  <as-context>
-    <auth-method>none</auth-method>
-    <realm>default</realm>
-    <required>false</required>
-  </as-context>
-  <sas-context>
-    <caller-propagation>none</caller-propagation>
-  </sas-context>
-</ior-security-config>
-----
-
-To use a client certificate, you must also specify the system properties
-for the keystore and truststore to be used in establishing SSL. To use
-SSL with the Application Client Container (ACC), you need to set these
-system properties in one of the following ways:
-
-* Use the new syntax of the `appclient` script and specify the system
-properties as JVM options. See link:#beaky[Running an Application Client
-Using the `appclient` Script].
-* Set the environment variable `VMARGS` in the shell. For example, in
-the `ksh` or `bash` shell, the command to set this environment variable
-would be as follows: +
-[source,oac_no_warn]
-----
-export VMARGS="-Djavax.net.ssl.keyStore=${keystore.db.file} 
--Djavax.net.ssl.trustStore=${truststore.db.file} 
--Djavax.net.ssl.keyStorePass word=${ssl.password} 
--Djavax.net.ssl.trustStorePassword=${ssl.password}"
-----
-* Optionally, you can set the `env` element using Ant. For example: +
-[source,oac_no_warn]
-----
-<target name="runclient">
-  <exec executable="${S1AS_HOME}/bin/appclient">
-    <env key="VMARGS" value=" -Djavax.net.ssl.keyStore=${keystore.db.file} 
-      -Djavax.net.ssl.trustStore=${truststore.db.file} 
-      -Djavax.net.ssl.keyStorePasword=${ssl.password} 
-      -Djavax.net.ssl.trustStorePassword=${ssl.password}"/>
-    <arg value="-client"/>
-    <arg value="${appClient.jar}"/>
-  </exec>
-</target>
-----
-
-[[ghbpc]][[GSDVG00470]][[connecting-to-a-remote-ejb-module-through-a-firewall]]
-
-Connecting to a Remote EJB Module Through a Firewall
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To deploy and run an application client that connects to an EJB module
-on a GlassFish Server instance that is behind a firewall, you must set
-ORB Virtual Address Agent Implementation (ORBVAA) options. Use the
-`asadmin create-jvm-options` command as follows:
-
-[source,oac_no_warn]
-----
-asadmin create-jvm-options -Dcom.sun.corba.ee.ORBVAAHost=public-IP-adress
-asadmin create-jvm-options -Dcom.sun.corba.ee.ORBVAAPort=public-port
-asadmin create-jvm-options 
--Dcom.sun.corba.ee.ORBUserConfigurators.com.sun.corba.ee.impl.plugin.hwlb.VirtualAddressAgentImpl=x
-----
-
-Set the `ORBVAAHost` and `ORBVAAPort` options to the host and port of
-the public address. The `ORBUserConfigurators` option tells the ORB to
-create an instance of the `VirtualAddressAgentImpl` class and invoke the
-`configure` method on the resulting object, which must implement the
-com.sun.corba.ee.spi.orb.ORBConfigurator interface. The
-`ORBUserConfigurators` value doesn't matter. Together, these options
-create an ORB that in turn creates `Object` references (the underlying
-implementation of remote EJB references) containing the public address,
-while the ORB listens on the private address specified for the IIOP port
-in the GlassFish Server configuration.
-
-[[gipkj]][[GSDVG00471]][[specifying-a-splash-screen]]
-
-Specifying a Splash Screen
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Java SE 6 offers splash screen support, either through a Java
-command-line option or a manifest entry in the application's JAR file.
-To take advantage of this Java SE feature in your application client,
-you can do one of the following:
-
-* Create the appclient JAR file so that its manifest contains a
-`SplashScreen-Image` entry that specifies the path to the image in the
-client. The `java` command displays the splash screen before starting
-the ACC or your client, just as with any Java application.
-* Use the new `appclient ... -jar` launch format, using the `-splash`
-command-line option at runtime or the `SplashScreen-Image` manifest
-entry at development time. See link:#beaky[Running an Application Client
-Using the `appclient` Script].
-* In the environment that runs the `appclient` script, set the `VMOPTS`
-environment variable to include the `-splash` option before invoking the
-`appclient` script to launch the client.
-* Build an application client that uses the embeddable ACC feature and
-specify the splash screen image using one of the following:
-
-** The `-splash` option of the `java` command
-
-** `SplashScreen-Image` in the manifest for your program (not the
-manifest for the application client) +
-See link:#gipkt[Using the Embeddable ACC].
-
-During application (EAR file) deployment, the GlassFish Server generates
-façade JAR files, one for the application and one for each application
-client in the application. During application client module deployment,
-the GlassFish Server generates a single facade JAR for the application
-client. The `appclient` script supports splash screens inside the
-application client JAR only if you launch an application client facade
-or appclient client JAR. If you launch the facade for an application or
-the undeployed application itself, the `appclient` script cannot take
-advantage of the Java SE 6 splash screen feature.
-
-[[gjiec]][[GSDVG00472]][[setting-login-retries]]
-
-Setting Login Retries
-^^^^^^^^^^^^^^^^^^^^^
-
-You can set a JVM option using the `appclient` script that determines
-the number of login retries allowed. This option is
-`-Dorg.glassfish.appclient.acc.maxLoginRetries=`n where n is a positive
-integer. The default number of retries is 3.
-
-This retry loop happens when the ACC attempts to perform injection if
-you annotated the client's `main` class (for example, using
-`@Resource`). If instead of annotations your client uses the
-`InitialContext` explicitly to look up remote resources, the retry loop
-does not apply. In this case, you could write logic to catch an
-exception around the lookup and retry explicitly.
-
-For details about the `appclient` script syntax, see the
-link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-
-[[gjpjt]][[GSDVG00473]][[using-libraries-with-application-clients]]
-
-Using Libraries with Application Clients
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The Libraries field in the Administration Console's deployment page and
-the `--libraries` option of the `asadmin deploy` command do not apply to
-application clients. Neither do the as-install`/lib`, domain-dir`/lib`,
-and domain-dir`/lib/classes` directories comprising the Common Class
-Loader. These apply only to applications and modules deployed to the
-server. For more information, see link:class-loaders.html#beade[Class
-Loaders].
-
-To use libraries with an application client, package the application
-client in an application (EAR file). Then, either place the libraries in
-the `/lib` directory of the EAR file or specify their location in the
-application client JAR file's manifest `Class-Path`.
-
-[[gkusn]][[GSDVG00161]][[developing-clients-without-the-acc]]
-
-Developing Clients Without the ACC
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This section describes the procedure to create, assemble, and deploy a
-Java-based client that is not packaged using the Application Client
-Container (ACC).
-
-The following topics are addressed here:
-
-* link:#gkusp[To access an EJB component from a stand-alone client]
-* link:#gkutw[To access an EJB component from a server-side module]
-* link:#gkuqa[To access a JMS resource from a stand-alone client]
-
-For information about using the ACC, see link:#beakv[Developing Clients
-Using the ACC].
-
-[[gkusp]][[GSDVG00074]][[to-access-an-ejb-component-from-a-stand-alone-client]]
-
-To access an EJB component from a stand-alone client
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-1.  In your client code, instantiate the `InitialContext`: +
-[source,oac_no_warn]
-----
-InitialContext ctx = new InitialContext();
-----
-It is not necessary to explicitly instantiate a naming context that
-points to the CosNaming service.
-2.  In the client code, look up the home object by specifying the JNDI
-name of the home object. +
-Here is an EJB 2.x example: +
-[source,oac_no_warn]
-----
-Object ref = ctx.lookup("jndi-name");
-BeanAHome = (BeanAHome)PortableRemoteObject.narrow(ref,BeanAHome.class);
-----
-Here is an EJB 3.x example: +
-[source,oac_no_warn]
-----
-BeanRemoteBusiness bean =(BeanRemoteBusiness) ctx.lookup("com.acme.BeanRemoteBusiness");
-----
-If load balancing is enabled as in Step link:#CIHJADHD[6] and the EJB
-components being accessed are in a different cluster, the endpoint list
-must be included in the lookup, as follows: +
-[source,oac_no_warn]
-----
-corbaname:host1:port1,host2:port2,.../NameService#ejb/jndi-name
-----
-For more information about naming and lookups, see
-link:jndi.html#beans[Accessing the Naming Context].
-3.  Deploy the EJB component to be accessed. +
-For more information on deployment, see "link:../application-deployment-guide/overview.html#GSDPG00063[About
-Deployment Tools]" in GlassFish Server Open Source Edition Application
-Deployment Guide.
-4.  Copy the as-install`/lib/gf-client.jar` file to the client machine
-and include it in the classpath on the client side. +
-The `gf-client.jar` file references GlassFish Server JAR files in its
-`MANIFEST.MF` file. If there is no GlassFish Server installation on the
-client machine, you must also copy the as-install`/modules` directory to
-the client machine and maintain its directory structure relative to the
-as-install`/lib/gf-client.jar` file. Or you can use the
-`package-appclient` script; see link:#beakz[Using the
-`package-appclient` Script].
-5.  To access EJB components that are residing in a remote system, set
-the following system properties for the Java Virtual Machine startup
-options: +
-[source,oac_no_warn]
-----
--Dorg.omg.CORBA.ORBInitialHost=${ORBhost}
--Dorg.omg.CORBA.ORBInitialPort=${ORBport}
-----
-Here ORBhost is the GlassFish Server hostname and ORBport is the ORB
-port number (default is `3700` for the default server instance, named
-`server`). +
-You can use the `asadmin get` command to get the IIOP port numbers. For
-example: +
-[source,oac_no_warn]
-----
-asadmin get "configs.config.server-config.iiop-service.iiop-listener.orb-listener-1.*"
-----
-6.  [[CIHJADHD]] +
-To set up load balancing and remote EJB reference failover, define the
-`endpoints` property as follows: +
-[source,oac_no_warn]
-----
--Dcom.sun.appserv.iiop.endpoints=host1:port1,host2:port2,...
-----
-The `endpoints` property specifies a comma-separated list of one or more
-IIOP endpoints used for load balancing. An IIOP endpoint is in the form
-host`:`port, where the host is an IPv4 address or host name, and the
-port specifies the port number. +
-If the `endpoints` list is changed dynamically in the code, the new list
-is used only if a new `InitialContext` is created.
-7.  Make sure the `etc/hosts` file on the client machine maps the
-GlassFish Server hostname and external IP address.
-8.  Run the stand-alone client. +
-As long as the client environment is set appropriately and the JVM is
-compatible, you merely need to run the `main` class.
-
-[[gkutw]][[GSDVG00075]][[to-access-an-ejb-component-from-a-server-side-module]]
-
-To access an EJB component from a server-side module
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A server-side module can be a servlet, another EJB component, or another
-type of module.
-
-1.  [[CIHFIJDC]] +
-In your module code, instantiate the `InitialContext`: +
-[source,oac_no_warn]
-----
-InitialContext ctx = new InitialContext();
-----
-It is not necessary to explicitly instantiate a naming context that
-points to the CosNaming service. +
-To set up load balancing and remote EJB reference failover, define the
-`endpoints` property as follows: +
-[source,oac_no_warn]
-----
-Hashtable env = new Hashtable();
-env.put("com.sun.appserv.iiop.endpoints","host1:port1,host2:port2,...");
-InitialContext ctx = new InitialConext(env);
-----
-The `endpoints` property specifies a comma-separated list of one or more
-IIOP endpoints used for load balancing. An IIOP endpoint is in the form
-host`:`port, where the host is an IPv4 address or host name, and the
-port specifies the port number. +
-You can use the `asadmin get` command to get the IIOP port numbers. For
-example: +
-[source,oac_no_warn]
-----
-asadmin get "configs.config.server-config.iiop-service.iiop-listener.orb-listener-1.*"
-----
-If the `endpoints` list is changed dynamically in the code, the new list
-is used only if a new `InitialContext` is created.
-2.  In the module code, look up the home object by specifying the JNDI
-name of the home object. +
-Here is an EJB 2.x example: +
-[source,oac_no_warn]
-----
-Object ref = ctx.lookup("jndi-name");
-BeanAHome = (BeanAHome)PortableRemoteObject.narrow(ref,BeanAHome.class);
-----
-Here is an EJB 3.x example: +
-[source,oac_no_warn]
-----
-BeanRemoteBusiness bean =(BeanRemoteBusiness) ctx.lookup("com.acme.BeanRemoteBusiness");
-----
-If load balancing is enabled as in Step link:#CIHFIJDC[1] and the EJB
-components being accessed are in a different cluster, the endpoint list
-must be included in the lookup, as follows: +
-[source,oac_no_warn]
-----
-corbaname:host1:port1,host2:port2,.../NameService#ejb/jndi-name
-----
-For more information about naming and lookups, see
-link:jndi.html#beans[Accessing the Naming Context].
-3.  Deploy the EJB component to be accessed. +
-For more information on deployment, see "link:../application-deployment-guide/overview.html#GSDPG00063[About
-Deployment Tools]" in GlassFish Server Open Source Edition Application
-Deployment Guide.
-4.  To access EJB components that are residing in a remote system, set
-the following system properties for the Java Virtual Machine startup
-options: +
-[source,oac_no_warn]
-----
--Dorg.omg.CORBA.ORBInitialHost=${ORBhost}
--Dorg.omg.CORBA.ORBInitialPort=${ORBport}
-----
-Here ORBhost is the Application Server hostname and ORBport is the ORB
-port number (default is `3700` for the default server instance, named
-`server`).
-5.  Deploy the module. +
-For more information on deployment, see "link:../application-deployment-guide/overview.html#GSDPG00063[About
-Deployment Tools]" in GlassFish Server Open Source Edition Application
-Deployment Guide.
-
-[[gkuqa]][[GSDVG00076]][[to-access-a-jms-resource-from-a-stand-alone-client]]
-
-To access a JMS resource from a stand-alone client
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-1.  Create a JMS client. +
-For detailed instructions on developing a JMS client, see
-"https://javaee.github.io/tutorial/jms-examples.html[Java Message
-Service Examples]" in The Java EE 8 Tutorial.
-2.  Configure a JMS resource on GlassFish Server. +
-For information on configuring JMS resources, see
-"link:../administration-guide/jms.html#GSADG00598[Administering JMS Connection Factories and
-Destinations]" in GlassFish Server Open Source Edition Administration
-Guide.
-3.  Copy the following JAR files to the client machine and include them
-in the classpath on the client side:
-* `gf-client.jar` - available at as-install`/lib`
-* `imqjmsra.jar` - available at
-as-install`/lib/install/aplications/jmsra` +
-The `gf-client.jar` file references GlassFish Server JAR files in its
-`MANIFEST.MF` file. If there is no GlassFish Server installation on the
-client machine, you must also copy the as-install`/modules` directory to
-the client machine and maintain its directory structure relative to the
-as-install`/lib/gf-client.jar` file. Or you can use the
-`package-appclient` script; see link:#beakz[Using the
-`package-appclient` Script].
-4.  To access EJB components that are residing in a remote system, set
-the following system properties for the Java Virtual Machine startup
-options: +
-[source,oac_no_warn]
-----
--Dorg.omg.CORBA.ORBInitialHost=${ORBhost}
--Dorg.omg.CORBA.ORBInitialPort=${ORBport}
-----
-Here ORBhost is the Application Server hostname and ORBport is the ORB
-port number (default is `3700` for the default server instance, named
-`server`). +
-You can use the `asadmin get` command to get the IIOP port numbers. For
-example: +
-[source,oac_no_warn]
-----
-asadmin get "configs.config.server-config.iiop-service.iiop-listener.orb-listener-1.*"
-----
-5.  Run the stand-alone client. +
-As long as the client environment is set appropriately and the JVM is
-compatible, you merely need to run the `main` class.
-
-
diff --git a/docs/application-development-guide/src/main/jbake/content/jdbc.adoc b/docs/application-development-guide/src/main/jbake/content/jdbc.adoc
deleted file mode 100644
index 0520bd3..0000000
--- a/docs/application-development-guide/src/main/jbake/content/jdbc.adoc
+++ /dev/null
@@ -1,717 +0,0 @@
-type=page
-status=published
-title=Using the JDBC API for Database Access
-next=transaction-service.html
-prev=part-services-and-apis.html
-~~~~~~
-Using the JDBC API for Database Access
-======================================
-
-[[GSDVG00017]][[beamj]]
-
-
-[[using-the-jdbc-api-for-database-access]]
-14 Using the JDBC API for Database Access
------------------------------------------
-
-This chapter describes how to use the Java Database Connectivity (JDBC)
-API for database access with the Oracle GlassFish Server. This chapter
-also provides high level JDBC implementation instructions for servlets
-and EJB components using the GlassFish Server.
-
-The JDBC specifications are available at
-`http://www.oracle.com/technetwork/java/javase/jdbc/index.html`.
-
-A useful JDBC tutorial is located at
-`http://docs.oracle.com/javase/tutorial/jdbc/index.html`.
-
-
-[NOTE]
-=======================================================================
-
-The GlassFish Server does not support connection pooling or transactions
-for an application's database access if it does not use standard Java EE
-`DataSource` objects.
-
-=======================================================================
-
-
-The following topics are addressed here:
-
-* link:#giyck[Statements]
-* link:#giyeq[Connections]
-* link:#giyde[Connection Wrapping]
-* link:#gavro[Allowing Non-Component Callers]
-* link:#giydx[Using Application-Scoped Resources]
-* link:#geqvg[Restrictions and Optimizations]
-
-[[giyck]][[GSDVG00182]][[statements]]
-
-Statements
-~~~~~~~~~~
-
-The following topics are addressed here:
-
-* link:#giyfu[Using an Initialization Statement]
-* link:#ghqrx[Setting a Statement Timeout]
-* link:#gktbf[Statement Leak Detection and Leaked Statement Reclamation]
-* link:#giyci[Statement Caching]
-* link:#giygg[Statement Tracing]
-
-[[giyfu]][[GSDVG00495]][[using-an-initialization-statement]]
-
-Using an Initialization Statement
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can specify a statement that executes each time a physical
-connection to the database is created (not reused) from a JDBC
-connection pool. This is useful for setting request or session specific
-properties and is suited for homogeneous requests in a single
-application. Set the Init SQL attribute of the JDBC connection pool to
-the SQL string to be executed in one of the following ways:
-
-* Enter an Init SQL value in the Edit Connection Pool Advanced
-Attributes page in the Administration Console. For more information,
-click the Help button in the Administration Console.
-* Specify the `--initsql` option in the
-`asadmin create-jdbc-connection-pool` command. For more information, see
-the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-* Specify the `init-sql` option in the `asadmin set` command. For
-example: +
-[source,oac_no_warn]
-----
-asadmin set domain1.resources.jdbc-connection-pool.DerbyPool.init-sql="sql-string"
-----
-For more information, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source
-Edition Reference Manual].
-
-[[ghqrx]][[GSDVG00496]][[setting-a-statement-timeout]]
-
-Setting a Statement Timeout
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-An abnormally long running JDBC query executed by an application may
-leave it in a hanging state unless a timeout is explicitly set on the
-statement. Setting a statement timeout guarantees that all queries
-automatically time out if not completed within the specified period.
-When statements are created, the `queryTimeout` is set according to the
-statement timeout setting. This works only when the underlying JDBC
-driver supports `queryTimeout` for `Statement`, `PreparedStatement`,
-`CallableStatement`, and `ResultSet`.
-
-You can specify a statement timeout in the following ways:
-
-* Enter a Statement Timeout value in the Edit Connection Pool Advanced
-Attributes page in the Administration Console. For more information,
-click the Help button in the Administration Console.
-* Specify the `--statementtimeout` option in the
-`asadmin create-jdbc-connection-pool` command. For more information, see
-the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-
-[[gktbf]][[GSDVG00497]][[statement-leak-detection-and-leaked-statement-reclamation]]
-
-Statement Leak Detection and Leaked Statement Reclamation
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-If statements are not closed by an application after use, it is possible
-for the application to run out of cursors. Enabling statement leak
-detection causes statements to be considered as leaked if they are not
-closed within a specified period. Additionally, leaked statements can
-reclaimed automatically.
-
-To enable statement leak detection, set Statement Leak Timeout In
-Seconds for the JDBC connection pool to a positive, nonzero value in one
-of the following ways:
-
-* Specify the `--statementleaktimeout` option in the
-`create-jdbc-connection-pool` subcommand. For more information, see
-link:../reference-manual/create-jdbc-connection-pool.html#GSRFM00036[`create-jdbc-connection-pool`(1)].
-* Specify the `statement-leak-timeout-in-seconds` option in the `set`
-subcommand. For example: +
-[source,oac_no_warn]
-----
-asadmin set resources.jdbc-connection-pool.pool-name.statement-leak-timeout-in-seconds=300
-----
-
-When selecting a value for Statement Leak Timeout In Seconds, make sure
-that:
-
-* It is less than the Connection Leak Timeout; otherwise, the connection
-could be closed before the statement leak is recognized.
-* It is greater than the Statement Timeout; otherwise, a long running
-query could be mistaken as a statement leak.
-
-After enabling statement leak detection, enable leaked statement
-reclamation by setting Reclaim Leaked Statements for the JDBC connection
-pool to a `true` value in one of the following ways:
-
-* Specify the `--statementleakreclaim=true` option in the
-`create-jdbc-connection-pool` subcommand. For more information, see
-link:../reference-manual/create-jdbc-connection-pool.html#GSRFM00036[`create-jdbc-connection-pool`(1)].
-* Specify the `statement-leak-reclaim` option in the `set` subcommand.
-For example: +
-[source,oac_no_warn]
-----
-asadmin set resources.jdbc-connection-pool.pool-name.statement-leak-reclaim=true
-----
-
-[[giyci]][[GSDVG00498]][[statement-caching]]
-
-Statement Caching
-^^^^^^^^^^^^^^^^^
-
-Statement caching stores statements, prepared statements, and callable
-statements that are executed repeatedly by applications in a cache,
-thereby improving performance. Instead of the statement being prepared
-each time, the cache is searched for a match. The overhead of parsing
-and creating new statements each time is eliminated.
-
-Statement caching is usually a feature of the JDBC driver. The GlassFish
-Server provides caching for drivers that do not support caching. To
-enable this feature, set the Statement Cache Size for the JDBC
-connection pool in one of the following ways:
-
-* Enter a Statement Cache Size value in the Edit Connection Pool
-Advanced Attributes page in the Administration Console. For more
-information, click the Help button in the Administration Console.
-* Specify the `--statementcachesize` option in the
-`asadmin create-jdbc-connection-pool` command. For more information, see
-the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-* Specify the `statement-cache-size` option in the `asadmin set`
-command. For example: +
-[source,oac_no_warn]
-----
-asadmin set domain1.resources.jdbc-connection-pool.DerbyPool.statement-cache-size=10
-----
-For more information, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source
-Edition Reference Manual].
-
-By default, this attribute is set to zero and the statement caching is
-turned off. To enable statement caching, you can set any positive
-nonzero value. The built-in cache eviction strategy is LRU-based (Least
-Recently Used). When a connection pool is flushed, the connections in
-the statement cache are recreated.
-
-[[giygg]][[GSDVG00499]][[statement-tracing]]
-
-Statement Tracing
-^^^^^^^^^^^^^^^^^
-
-You can trace the SQL statements executed by applications that use a
-JDBC connection pool. Set the SQL Trace Listeners attribute to a
-comma-separated list of trace listener implementation classes in one of
-the following ways:
-
-* Enter an SQL Trace Listeners value in the Edit Connection Pool
-Advanced Attributes page in the Administration Console. For more
-information, click the Help button in the Administration Console.
-* Specify the `--sqltracelisteners` option in the
-`asadmin create-jdbc-connection-pool` command. For more information, see
-the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-* Specify the `sql-trace-listeners` option in the `asadmin set` command.
-For example: +
-[source,oac_no_warn]
-----
-asadmin set domain1.resources.jdbc-connection-pool.DerbyPool.sql-trace-listeners=listeners
-----
-For more information, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source
-Edition Reference Manual].
-
-The GlassFish Server provides a public interface,
-org.glassfish.api.jdbc.SQLTraceListener , that implements a means of
-recording `SQLTraceRecord` objects. To make custom implementations of
-this interface available to the GlassFish Server, place the
-implementation classes in as-install`/lib`.
-
-The GlassFish Server provides an SQL tracing logger to log the SQL
-operations in the form of `SQLTraceRecord` objects in the `server.log`
-file. The module name under which the SQL operation is logged is
-`jakarta.enterprise.resource.sqltrace`. SQL traces are logged as FINE
-messages along with the module name to enable easy filtering of the SQL
-logs. A sample SQL trace record looks like this:
-
-[source,oac_no_warn]
-----
-[#|2009-11-27T15:46:52.202+0530|FINE|glassfish 6.0|jakarta.enterprise.resource.sqltrace.com.sun.gjc.util
-|_ThreadID=29;_ThreadName=Thread-1;ClassName=com.sun.gjc.util.SQLTraceLogger;MethodName=sqlTrace;
-|ThreadID=77 | ThreadName=p: thread-pool-1; w: 6 | TimeStamp=1259317012202 
-| ClassName=com.sun.gjc.spi.jdbc40.PreparedStatementWrapper40 | MethodName=executeUpdate 
-| arg[0]=insert into table1(colName) values(100) | arg[1]=columnNames | |#]
-----
-
-This trace shows that an `executeUpdate(String sql, String columnNames)`
-operation is being done.
-
-When SQL statement tracing is enabled and JDBC connection pool
-monitoring is enabled, GlassFish Server maintains a tracing cache of
-recent queries and their frequency of use. The following JDBC connection
-pool properties can be configured to control this cache and the
-monitoring statistics available from it:
-
-`time-to-keep-queries-in-minutes`::
-  Specifies how long in minutes to keep a query in the tracing cache,
-  tracking its frequency of use. The default value is 5 minutes.
-`number-of-top-queries-to-report`::
-  Specifies how many of the most used queries, in frequency order, are
-  listed the monitoring report. The default value is 10 queries.
-
-Set these parameters in one of the following ways:
-
-* Add them as properties in the Edit JDBC Connection Pool Properties
-page in the Administration Console. For more information, click the Help
-button in the Administration Console.
-* Specify them using the `--property` option in the
-`create-jdbc-connection-pool` subcommand. For more information, see
-link:../reference-manual/create-jdbc-connection-pool.html#GSRFM00036[`create-jdbc-connection-pool`(1)].
-* Set them using the `set` subcommand. For example: +
-[source,oac_no_warn]
-----
-asadmin set resources.jdbc-connection-pool.pool-name.property.time-to-keep-queries-in-minutes=10
-----
-
-[[giyeq]][[GSDVG00183]][[connections]]
-
-Connections
-~~~~~~~~~~~
-
-The following topics are addressed here:
-
-* link:#gktas[Transparent Pool Reconfiguration]
-* link:#giygl[Disabling Pooling]
-* link:#giydr[Associating Connections with Threads]
-* link:#giyfg[Custom Connection Validation]
-* link:#beams[Sharing Connections]
-* link:#gezfh[Marking Bad Connections]
-* link:#gipzl[Handling Invalid Connections]
-
-[[gktas]][[GSDVG00500]][[transparent-pool-reconfiguration]]
-
-Transparent Pool Reconfiguration
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-When the properties or attributes of a JDBC connection pool are changed,
-the connection pool is destroyed and re-created. Normally, applications
-using the connection pool must be redeployed as a consequence. This
-restriction can be avoided by enabling transparent JDBC connection pool
-reconfiguration. When this feature is enabled, applications do not need
-to be redeployed. Instead, requests for a new connections are blocked
-until the reconfiguration operation completes. Connection requests from
-any in-flight transactions are served using the old pool configuration
-so as to complete the transaction. Then, connections are created using
-the pool's new configuration, and any blocked connection requests are
-served with connections from the re-created pool..
-
-To enable transparent JDBC connection pool reconfiguration, set the
-`dynamic-reconfiguration-wait-timeout-in-seconds` property of the JDBC
-connection pool to a positive, nonzero value in one of the following
-ways:
-
-* Add it as a property in the Edit JDBC Connection Pool Properties page
-in the Administration Console. For more information, click the Help
-button in the Administration Console.
-* Specify it using the `--property` option in the
-`create-jdbc-connection-pool` subcommand. For more information, see
-link:../reference-manual/create-jdbc-connection-pool.html#GSRFM00036[`create-jdbc-connection-pool`(1)].
-* Set it using the `set` subcommand. For example: +
-[source,oac_no_warn]
-----
-asadmin set resources.jdbc-connection-pool.pool-name.property.dynamic-reconfiguration-wait-timeout-in-seconds=15
-----
-
-This property specifies the time in seconds to wait for in-use
-connections to close and in-flight transactions to complete. Any
-connections in use or transaction in flight past this time must be
-retried.
-
-[[giygl]][[GSDVG00501]][[disabling-pooling]]
-
-Disabling Pooling
-^^^^^^^^^^^^^^^^^
-
-To disable connection pooling, set the Pooling attribute to false. The
-default is true. You can enable or disable connection pooling in one of
-the following ways:
-
-* Enter a Pooling value in the Edit Connection Pool Advanced Attributes
-page in the Administration Console. For more information, click the Help
-button in the Administration Console.
-* Specify the `--pooling` option in the
-`asadmin create-jdbc-connection-pool` command. For more information, see
-the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-* Specify the `pooling` option in the `asadmin set` command. For
-example: +
-[source,oac_no_warn]
-----
-asadmin set domain1.resources.jdbc-connection-pool.DerbyPool.pooling=false
-----
-For more information, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source
-Edition Reference Manual].
-
-The `pooling` option and the system property
-`com.sun.enterprise.connectors.SwitchoffACCConnectionPooling`, which
-turns off connection pooling in the Application Client Container, do not
-affect each other.
-
-An exception is thrown if `associate-with-thread` is set to `true` and
-pooling is disabled. An exception is thrown if you attempt to flush a
-connection pool when pooling is disabled. A warning is logged if the
-following attributes are used, because they are useful only in a pooled
-environment:
-
-* `connection-validation`
-* `validate-atmost-once-period`
-* `match-connections`
-* `max-connection-usage`
-* `idle-timeout`
-
-[[giydr]][[GSDVG00502]][[associating-connections-with-threads]]
-
-Associating Connections with Threads
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To associate connections with a thread, set the Associate With Thread
-attribute to `true`. The default is `false`. A `true` setting allows
-connections to be saved as `ThreadLocal` in the calling thread.
-Connections get reclaimed only when the calling thread dies or when the
-calling thread is not in use and the pool has run out of connections. If
-the setting is `false`, the thread must obtain a connection from the
-pool each time the thread requires a connection.
-
-The Associate With Thread attribute associates connections with a thread
-such that when the same thread is in need of connections, it can reuse
-the connections already associated with that thread. In this case, the
-overhead of getting connections from the pool is avoided. However, when
-this value is set to `true`, you should verify that the value of the Max
-Pool Size attribute is comparable to the Max Thread Pool Size attribute
-of the thread pool. If the Max Thread Pool Size value is much higher
-than the Max Pool Size value, a lot of time is spent associating
-connections with a new thread after dissociating them from an older one.
-Use this attribute in cases where the thread pool should reuse
-connections to avoid this overhead.
-
-You can set the Associate With Thread attribute in the following ways:
-
-* Enter an Associate With Thread value in the Edit Connection Pool
-Advanced Attributes page in the Administration Console. For more
-information, click the Help button in the Administration Console.
-* Specify the `--associatewiththread` option in the
-`asadmin create-jdbc-connection-pool` command. For more information, see
-the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-* Specify the `associate-with-thread` option in the `asadmin set`
-command. For example: +
-[source,oac_no_warn]
-----
-asadmin set domain1.resources.jdbc-connection-pool.DerbyPool.associate-with-thread=true
-----
-For more information, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source
-Edition Reference Manual].
-
-[[giyfg]][[GSDVG00503]][[custom-connection-validation]]
-
-Custom Connection Validation
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can specify a custom implementation for Connection Validation that
-is faster or optimized for a specific database. Set the Validation
-Method attribute to the value `custom-validation`. (Other validation
-methods available are `table` (the default), `auto-commit`, and
-`meta-data`.) The GlassFish Server provides a public interface,
-org.glassfish.api.jdbc.ConnectionValidation, which you can implement to
-plug in your implementation. A new attribute, Validation Classname,
-specifies the fully qualified name of the class that implements the
-ConnectionValidation interface. The Validation Classname attribute is
-required if Connection Validation is enabled and Validation Method is
-set to Custom Validation.
-
-To enable this feature, set Connection Validation, Validation Method,
-and Validation Classname for the JDBC connection pool in one of the
-following ways:
-
-* Enter Connection Validation, Validation Method, and Validation
-Classname values in the Edit Connection Pool Advanced Attributes page in
-the Administration Console. You can select from among validation class
-names for common databases in the Validation Classname field. For more
-information, click the Help button in the Administration Console.
-* Specify the `--isconnectionvalidatereq`, `--validationmethod`, and
-`--validationclassname` options in the
-`asadmin create-jdbc-connection-pool` command. For more information, see
-the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-* Specify the `is-connection-validation-required`,
-`connection-validation-method`, and `validation-classname` options in
-the `asadmin set` command. For example: +
-[source,oac_no_warn]
-----
-asadmin set domain1.resources.jdbc-connection-pool.MyPool.is-connection-validation-required=true
-asadmin set domain1.resources.jdbc-connection-pool.MyPool.connection-validation-method=custom-validation
-asadmin set domain1.resources.jdbc-connection-pool.MyPool.validation-classname=impl-class
-----
-For more information, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source
-Edition Reference Manual].
-
-By default, optimized validation mechanisms are provided for DB2, Apache
-Derby, MSSQL, MySQL, Oracle, PostgreSQL and Sybase databases.
-Additionally, for JDBC 4.0 compliant database drivers, a validation
-mechanism is provided that uses the `Connection.isValid(0)`
-implementation.
-
-[[beams]][[GSDVG00504]][[sharing-connections]]
-
-Sharing Connections
-^^^^^^^^^^^^^^^^^^^
-
-When multiple connections acquired by an application use the same JDBC
-resource, the connection pool provides connection sharing within the
-same transaction scope. For example, suppose Bean A starts a transaction
-and obtains a connection, then calls a method in Bean B. If Bean B
-acquires a connection to the same JDBC resource with the same sign-on
-information, and if Bean A completes the transaction, the connection can
-be shared.
-
-Connections obtained through a resource are shared only if the resource
-reference declared by the Java EE component allows it to be shareable.
-This is specified in a component's deployment descriptor by setting the
-`res-sharing-scope` element to `Shareable` for the particular resource
-reference. To turn off connection sharing, set `res-sharing-scope` to
-`Unshareable`.
-
-For general information about connections and JDBC URLs, see
-"link:../administration-guide/jdbc.html#GSADG00015[Administering Database Connectivity]" in GlassFish
-Server Open Source Edition Administration Guide.
-
-[[gezfh]][[GSDVG00505]][[marking-bad-connections]]
-
-Marking Bad Connections
-^^^^^^^^^^^^^^^^^^^^^^^
-
-The `DataSource` implementation in the GlassFish Server provides a
-`markConnectionAsBad` method. A marked bad connection is removed from
-its connection pool when it is closed. The method signature is as
-follows:
-
-[source,oac_no_warn]
-----
-public void markConnectionAsBad(java.sql.Connection con)
-----
-
-For example:
-
-[source,oac_no_warn]
-----
-com.sun.appserv.jdbc.DataSource ds=
-   (com.sun.appserv.jdbc.DataSource)context.lookup("dataSource");
-Connection con = ds.getConnection();
-Statement stmt = null;
-try{
-   stmt = con.createStatement();
-   stmt.executeUpdate("Update");
-}
-catch (BadConnectionException e){
-   ds.markConnectionAsBad(con) //marking it as bad for removal
-}
-finally{
-   stmt.close();    
-   con.close(); //Connection will be destroyed during close.
-}
-----
-
-[[gipzl]][[GSDVG00506]][[handling-invalid-connections]]
-
-Handling Invalid Connections
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-If a `ConnectionErrorOccured` event occurs, the GlassFish Server
-considers the connection invalid and removes the connection from the
-connection pool. Typically, a JDBC driver generates a
-`ConnectionErrorOccured` event when it finds a `ManagedConnection`
-object unusable. Reasons can be database failure, network failure with
-the database, fatal problems with the connection pool, and so on.
-
-If the `fail-all-connections` setting in the connection pool
-configuration is set to `true`, and a single connection fails, all
-connections are closed and recreated. If this setting is `false`,
-individual connections are recreated only when they are used. The
-default is `false`.
-
-The `is-connection-validation-required` setting specifies whether
-connections have to be validated before being given to the application.
-If a resource's validation fails, it is destroyed, and a new resource is
-created and returned. The default is `false`.
-
-The `prefer-validate-over-recreate` property specifies that validating
-idle connections is preferable to closing them. This property has no
-effect on non-idle connections. If set to `true`, idle connections are
-validated during pool resizing, and only those found to be invalid are
-destroyed and recreated. If `false`, all idle connections are destroyed
-and recreated during pool resizing. The default is `false`.
-
-You can set the `fail-all-connections`,
-`is-connection-validation-required`, and `prefer-validate-over-recreate`
-configuration settings during creation of a JDBC connection pool. Or,
-you can use the `asadmin set` command to dynamically reconfigure a
-setting. For example:
-
-[source,oac_no_warn]
-----
-asadmin set server.resources.jdbc-connection-pool.JCPool1.fail-all-connections="true"
-asadmin set server.resources.jdbc-connection-pool.JCPool1.is-connection-validation-required="true"
-asadmin set server.resources.jdbc-connection-pool.JCPool1.property.prefer-validate-over-recreate="true"
-----
-
-For details, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition
-Reference Manual].
-
-The interface ValidatingManagedConnectionFactory exposes the method
-`getInvalidConnections` to allow retrieval of the invalid connections.
-The GlassFish Server checks if the JDBC driver implements this
-interface, and if it does, invalid connections are removed when the
-connection pool is resized.
-
-[[giyde]][[GSDVG00184]][[connection-wrapping]]
-
-Connection Wrapping
-~~~~~~~~~~~~~~~~~~~
-
-The following topics are addressed here:
-
-* link:#ghqxi[Wrapping Connections]
-* link:#beamt[Obtaining a Physical Connection From a Wrapped Connection]
-* link:#ggrum[Using the `Connection.unwrap()` Method]
-
-[[ghqxi]][[GSDVG00507]][[wrapping-connections]]
-
-Wrapping Connections
-^^^^^^^^^^^^^^^^^^^^
-
-If the Wrap JDBC Objects option is `true` (the default), wrapped JDBC
-objects are returned for `Statement`, `PreparedStatement`,
-`CallableStatement`, `ResultSet`, and `DatabaseMetaData`.
-
-This option ensures that `Statement.getConnection()` is the same as
-`DataSource.getConnection()`. Therefore, this option should be `true`
-when both `Statement.getConnection()` and `DataSource.getConnection()`
-are done.
-
-You can specify the Wrap JDBC Objects option in the following ways:
-
-* Check or uncheck the Wrap JDBC Objects box on the Edit Connection Pool
-Advanced Attributes page in the Administration Console. For more
-information, click the Help button in the Administration Console.
-* Specify the `--wrapjdbcobjects` option in the
-`asadmin create-jdbc-connection-pool` command. For more information, see
-the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-
-[[beamt]][[GSDVG00508]][[obtaining-a-physical-connection-from-a-wrapped-connection]]
-
-Obtaining a Physical Connection From a Wrapped Connection
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The `DataSource` implementation in the GlassFish Server provides a
-`getConnection` method that retrieves the JDBC driver's `SQLConnection`
-from the GlassFish Server's `Connection` wrapper. The method signature
-is as follows:
-
-[source,oac_no_warn]
-----
-public java.sql.Connection getConnection(java.sql.Connection con) 
-throws java.sql.SQLException
-----
-
-For example:
-
-[source,oac_no_warn]
-----
-InitialContext ctx = new InitialContext();
-com.sun.appserv.jdbc.DataSource ds = (com.sun.appserv.jdbc.DataSource) 
-   ctx.lookup("jdbc/MyBase");
-Connection con = ds.getConnection();
-Connection drivercon = ds.getConnection(con); //get physical connection from wrapper
-// Do db operations.
-// Do not close driver connection.
-con.close(); // return wrapped connection to pool.
-----
-
-[[ggrum]][[GSDVG00509]][[using-the-connection.unwrap-method]]
-
-Using the `Connection.unwrap()` Method
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Using the `Connection.unwrap()` method on a vendor-provided interface
-returns an object or a wrapper object implementing the vendor-provided
-interface, which the application can make use of to do vendor-specific
-database operations. Use the `Connection.isWrapperFor()` method on a
-vendor-provided interface to check whether the connection can provide an
-implementation of the vendor-provided interface. Check the JDBC driver
-vendor's documentation for information on these interfaces.
-
-[[gavro]][[GSDVG00185]][[allowing-non-component-callers]]
-
-Allowing Non-Component Callers
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can allow non-Java-EE components, such as servlet filters, lifecycle
-modules, and third party persistence managers, to use this JDBC
-connection pool. The returned connection is automatically enlisted with
-the transaction context obtained from the transaction manager. Standard
-Java EE components can also use such pools. Connections obtained by
-non-component callers are not automatically closed at the end of a
-transaction by the container. They must be explicitly closed by the
-caller.
-
-You can enable non-component callers in the following ways:
-
-* Check the Allow Non Component Callers box on the Edit Connection Pool
-Advanced Attributes page in the Administration Console. The default is
-`false`. For more information, click the Help button in the
-Administration Console.
-* Specify the `--allownoncomponentcallers` option in the
-`asadmin create-jdbc-connection-pool` command. For more information, see
-the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-* Specify the `allow-non-component-callers` option in the `asadmin set`
-command. For example: +
-[source,oac_no_warn]
-----
-asadmin set domain1.resources.jdbc-connection-pool.DerbyPool.allow-non-component-callers=true
-----
-For more information, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source
-Edition Reference Manual].
-* Create a JDBC resource with a `__pm` suffix.
-
-Accessing a `DataSource` using the `Synchronization.beforeCompletion()`
-method requires setting Allow Non Component Callers to `true`. For more
-information about the Transaction Synchronization Registry, see
-link:transaction-service.html#gaxit[The Transaction Manager, the
-Transaction Synchronization Registry, and `UserTransaction`].
-
-[[giydx]][[GSDVG00186]][[using-application-scoped-resources]]
-
-Using Application-Scoped Resources
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can define an application-scoped database or other resource for an
-enterprise application, web module, EJB module, connector module, or
-application client module by supplying a `glassfish-resources.xml`
-deployment descriptor file. For details, see
-"link:../application-deployment-guide/deploying-applications.html#GSDPG00075[Application-Scoped Resources]" in GlassFish Server
-Open Source Edition Application Deployment Guide.
-
-[[geqvg]][[GSDVG00187]][[restrictions-and-optimizations]]
-
-Restrictions and Optimizations
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This section discusses restrictions and performance optimizations that
-affect using the JDBC API.
-
-[[geqvy]][[GSDVG00510]][[disabling-stored-procedure-creation-on-sybase]]
-
-Disabling Stored Procedure Creation on Sybase
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-By default, DataDirect and Oracle JDBC drivers for Sybase databases
-create a stored procedure for each parameterized `PreparedStatement`. On
-the GlassFish Server, exceptions are thrown when primary key identity
-generation is attempted. To disable the creation of these stored
-procedures, set the property `PrepareMethod=direct` for the JDBC
-connection pool.
-
-
diff --git a/docs/application-development-guide/src/main/jbake/content/jms.adoc b/docs/application-development-guide/src/main/jbake/content/jms.adoc
deleted file mode 100644
index 201cf3a..0000000
--- a/docs/application-development-guide/src/main/jbake/content/jms.adoc
+++ /dev/null
@@ -1,248 +0,0 @@
-type=page
-status=published
-title=Using the Java Message Service
-next=mail.html
-prev=jndi.html
-~~~~~~
-Using the Java Message Service
-==============================
-
-[[GSDVG00020]][[beaob]]
-
-
-[[using-the-java-message-service]]
-17 Using the Java Message Service
----------------------------------
-
-This chapter describes how to use the Java Message Service (JMS) API.
-The Oracle GlassFish Server has a fully integrated JMS provider: the
-Open Message Queue software.
-
-
-[NOTE]
-=======================================================================
-
-JMS resources are supported only in the full GlassFish Server, not in
-the Web Profile.
-
-=======================================================================
-
-
-For information about the JMS, see
-"https://javaee.github.io/tutorial/partmessaging.html[Messaging]" in The
-Java EE 8 Tutorial.
-
-For detailed information about JMS concepts and JMS support in the
-GlassFish Server, see "link:../administration-guide/jms.html#GSADG00020[Administering the Java Message
-Service (JMS)]" in GlassFish Server Open Source Edition Administration
-Guide.
-
-The following topics are addressed here:
-
-* link:#gkpcz[Using Application-Scoped JMS Resources]
-* link:#beaop[Load-Balanced Message Inflow]
-* link:#beaor[Authentication With `ConnectionFactory`]
-* link:#beaot[Delivering SOAP Messages Using the JMS API]
-
-[[gkpcz]][[GSDVG00196]][[using-application-scoped-jms-resources]]
-
-Using Application-Scoped JMS Resources
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can define an application-scoped JMS or other resource for an
-enterprise application, web module, EJB module, connector module, or
-application client module by supplying a `glassfish-resources.xml`
-deployment descriptor file. For details, see
-"link:../application-deployment-guide/deploying-applications.html#GSDPG00075[Application-Scoped Resources]" in GlassFish Server
-Open Source Edition Application Deployment Guide.
-
-[[beaop]][[GSDVG00197]][[load-balanced-message-inflow]]
-
-Load-Balanced Message Inflow
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can configure `ActivationSpec` properties of the `jmsra` resource
-adapter in the `glassfish-ejb-jar.xml` file for a message-driven bean
-using `activation-config-property` elements. Whenever a message-driven
-bean (`EndPointFactory`) is deployed, the connector runtime engine finds
-these properties and configures them accordingly in the resource
-adapter. See "link:../application-deployment-guide/dd-elements.html#GSDPG00086[activation-config-property]" in GlassFish
-Server Open Source Edition Application Deployment Guide.
-
-The GlassFish Server transparently enables messages to be delivered in
-random fashion to message-driven beans having same `ClientID`. The
-`ClientID` is required for durable subscribers.
-
-For nondurable subscribers in which the `ClientID` is not configured,
-all instances of a specific message-driven bean that subscribe to same
-topic are considered equal. When a message-driven bean is deployed to
-multiple instances of the GlassFish Server, only one of the
-message-driven beans receives the message. If multiple distinct
-message-driven beans subscribe to same topic, one instance of each
-message-driven bean receives a copy of the message.
-
-To support multiple consumers using the same queue, set the
-`maxNumActiveConsumers` property of the physical destination to a large
-value. If this property is set, the Oracle Message Queue software allows
-multiple message-driven beans to consume messages from same queue. The
-message is delivered randomly to the message-driven beans. If
-`maxNumActiveConsumers` is set to `-1`, there is no limit to the number
-of consumers.
-
-To ensure that local delivery is preferred, set `addresslist-behavior`
-to `priority`. This setting specifies that the first broker in the
-`AddressList` is selected first. This first broker is the local
-colocated Message Queue instance. If this broker is unavailable,
-connection attempts are made to brokers in the order in which they are
-listed in the `AddressList`. This setting is the default for GlassFish
-Server instances that belong to a cluster.
-
-[[beaor]][[GSDVG00198]][[authentication-with-connectionfactory]]
-
-Authentication With `ConnectionFactory`
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-If your web, EJB, or client module has `res-auth` set to `Container`,
-but you use the `ConnectionFactory.createConnection("user","password")`
-method to get a connection, the GlassFish Server searches the container
-for authentication information before using the supplied user and
-password. Version 7 of the GlassFish Server threw an exception in this
-situation.
-
-[[beaot]][[GSDVG00199]][[delivering-soap-messages-using-the-jms-api]]
-
-Delivering SOAP Messages Using the JMS API
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Web service clients use the Simple Object Access Protocol (SOAP) to
-communicate with web services. SOAP uses a combination of XML-based data
-structuring and Hyper Text Transfer Protocol (HTTP) to define a
-standardized way of invoking methods in objects distributed in diverse
-operating environments across the Internet.
-
-For more information about SOAP, see the Apache SOAP web site at
-`http://xml.apache.org/soap/index.html`.
-
-You can take advantage of the JMS provider's reliable messaging when
-delivering SOAP messages. You can convert a SOAP message into a JMS
-message, send the JMS message, then convert the JMS message back into a
-SOAP message.
-
-The following topics are addressed here:
-
-* link:#beaou[To Send SOAP Messages Using the JMS API]
-* link:#beaov[To Receive SOAP Messages Using the JMS API]
-
-[[beaou]][[GSDVG00077]][[to-send-soap-messages-using-the-jms-api]]
-
-To Send SOAP Messages Using the JMS API
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-1.  Import the `MessageTransformer` library. +
-[source,oac_no_warn]
-----
-import com.sun.messaging.xml.MessageTransformer;
-----
-This is the utility whose methods you use to convert SOAP messages to
-JMS messages and the reverse. You can then send a JMS message containing
-a SOAP payload as if it were a normal JMS message.
-2.  Initialize the `TopicConnectionFactory`, `TopicConnection`,
-`TopicSession`, and publisher. +
-[source,oac_no_warn]
-----
-tcf = new TopicConnectionFactory();
-tc = tcf.createTopicConnection();
-session = tc.createTopicSession(false,Session.AUTO_ACKNOWLEDGE);
-topic = session.createTopic(topicName);
-publisher = session.createPublisher(topic);
-----
-3.  Construct a SOAP message using the SOAP with Attachments API for
-Java (SAAJ). +
-[source,oac_no_warn]
-----
-/*construct a default soap MessageFactory */
-MessageFactory mf = MessageFactory.newInstance();
-* Create a SOAP message object.*/
-SOAPMessage soapMessage = mf.createMessage();
-/** Get SOAP part.*/
-SOAPPart soapPart = soapMessage.getSOAPPart();
-/* Get SOAP envelope. */
-SOAPEnvelope soapEnvelope = soapPart.getEnvelope();
-/* Get SOAP body.*/
-SOAPBody soapBody = soapEnvelope.getBody();
-/* Create a name object. with name space */
-/* http://www.sun.com/imq. */
-Name name = soapEnvelope.createName("HelloWorld", "hw",
- "http://www.sun.com/imq");
-* Add child element with the above name. */
-SOAPElement element = soapBody.addChildElement(name)
-/* Add another child element.*/
-element.addTextNode( "Welcome to GlassFish Web Services." );
-/* Create an atachment with activation API.*/
-URL url = new URL ("http://java.sun.com/webservices/");
-DataHandler dh = new DataHandler (url);
-AttachmentPart ap = soapMessage.createAttachmentPart(dh);
-/*set content type/ID. */
-ap.setContentType("text/html");
-ap.setContentId("cid-001");
-/** add the attachment to the SOAP message.*/
-soapMessage.addAttachmentPart(ap);
-soapMessage.saveChanges();
-----
-4.  Convert the SOAP message to a JMS message by calling the
-`MessageTransformer.SOAPMessageintoJMSMessage()` method. +
-[source,oac_no_warn]
-----
-Message m = MessageTransformer.SOAPMessageIntoJMSMessage (soapMessage, 
-session );
-----
-5.  Publish the JMS message. +
-[source,oac_no_warn]
-----
-publisher.publish(m);
-----
-6.  Close the JMS connection. +
-[source,oac_no_warn]
-----
-tc.close();
-----
-
-[[beaov]][[GSDVG00078]][[to-receive-soap-messages-using-the-jms-api]]
-
-To Receive SOAP Messages Using the JMS API
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-1.  Import the `MessageTransformer` library. +
-[source,oac_no_warn]
-----
-import com.sun.messaging.xml.MessageTransformer;
-----
-This is the utility whose methods you use to convert SOAP messages to
-JMS messages and the reverse. The JMS message containing the SOAP
-payload is received as if it were a normal JMS message.
-2.  Initialize the `TopicConnectionFactory`, `TopicConnection`,
-`TopicSession`, `TopicSubscriber`, and Topic. +
-[source,oac_no_warn]
-----
-messageFactory = MessageFactory.newInstance();
-tcf = new com.sun.messaging.TopicConnectionFactory();
-tc = tcf.createTopicConnection();
-session = tc.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
-topic = session.createTopic(topicName);
-subscriber = session.createSubscriber(topic);
-subscriber.setMessageListener(this);
-tc.start();
-----
-3.  Use the `OnMessage` method to receive the message. Use the
-`SOAPMessageFromJMSMessage` method to convert the JMS message to a SOAP
-message. +
-[source,oac_no_warn]
-----
-public void onMessage (Message message) {
-SOAPMessage soapMessage =
- MessageTransformer.SOAPMessageFromJMSMessage( message,
- messageFactory ); }
-----
-4.  Retrieve the content of the SOAP message.
-
-
diff --git a/docs/application-development-guide/src/main/jbake/content/jndi.adoc b/docs/application-development-guide/src/main/jbake/content/jndi.adoc
deleted file mode 100644
index 39f2d8f..0000000
--- a/docs/application-development-guide/src/main/jbake/content/jndi.adoc
+++ /dev/null
@@ -1,573 +0,0 @@
-type=page
-status=published
-title=Using the Java Naming and Directory Interface
-next=jms.html
-prev=transaction-service.html
-~~~~~~
-Using the Java Naming and Directory Interface
-=============================================
-
-[[GSDVG00019]][[beanr]]
-
-
-[[using-the-java-naming-and-directory-interface]]
-16 Using the Java Naming and Directory Interface
-------------------------------------------------
-
-A naming service maintains a set of bindings, which relate names to
-objects. The Java EE naming service is based on the Java Naming and
-Directory Interface (JNDI) API. The JNDI API allows application
-components and clients to look up distributed resources, services, and
-EJB components. For general information about the JNDI API, see
-`http://www.oracle.com/technetwork/java/jndi/index.html`. You can also
-see the JNDI tutorial at `http://docs.oracle.com/javase/jndi/tutorial/`.
-
-The following topics are addressed here:
-
-* link:#beans[Accessing the Naming Context]
-* link:#beanx[Configuring Resources]
-* link:#gcpge[Using a Custom `jndi.properties` File]
-* link:#beaoa[Mapping References]
-
-
-[NOTE]
-=======================================================================
-
-The Web Profile of the GlassFish Server supports the EJB 3.1 Lite
-specification, which allows enterprise beans within web applications,
-among other features. The full GlassFish Server supports the entire EJB
-3.1 specification. For details, see
-http://jcp.org/en/jsr/detail?id=318[JSR 318]
-(`http://jcp.org/en/jsr/detail?id=318`).
-
-=======================================================================
-
-
-[[beans]][[GSDVG00192]][[accessing-the-naming-context]]
-
-Accessing the Naming Context
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The Oracle GlassFish Server provides a naming environment, or context,
-which is compliant with standard Java EE requirements. A `Context`
-object provides the methods for binding names to objects, unbinding
-names from objects, renaming objects, and listing the bindings. The
-`InitialContext` is the handle to the Java EE naming service that
-application components and clients use for lookups.
-
-The JNDI API also provides subcontext functionality. Much like a
-directory in a file system, a subcontext is a context within a context.
-This hierarchical structure permits better organization of information.
-For naming services that support subcontexts, the `Context` class also
-provides methods for creating and destroying subcontexts.
-
-The following topics are addressed here:
-
-* link:#BGBJGGAD[Portable Global JNDI Names]
-* link:#gcjkd[GlassFish Server V2 Vendor-Specific Global JNDI Names]
-* link:#gkndi[Disabling GlassFish Server V2 JNDI Names]
-* link:#beanu[Accessing EJB Components Using the `CosNaming` Naming
-Context]
-* link:#beanv[Accessing EJB Components in a Remote GlassFish Server]
-* link:#beanw[Naming Environment for Lifecycle Modules]
-
-
-[NOTE]
-=======================================================================
-
-Each resource within a server instance must have a unique name. However,
-two resources in different server instances or different domains can
-have the same name.
-
-=======================================================================
-
-
-[[BGBJGGAD]][[GSDVG560]][[portable-global-jndi-names]]
-
-Portable Global JNDI Names
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-If an EJB component is a kind of session bean and it is deployed to any
-implementation supporting the EJB 3.1specification (for example,
-GlassFish Server 5.0), it automatically has one or more portable JNDI
-names defined based on the syntax in the specification. Note that this
-is true of existing EJB 3.0 and 2.x applications that are deployed to an
-implementation supporting EJB 3.1. No code changes are required to the
-bean class itself in order to have the portable global JNDI name
-automatically assigned when deployed to an EJB 3.1 container.
-
-For more information, see the Java EE 8 Platform Specification, section
-EE.5.2.2, "Application Component Environment Namespaces"
-(`http://jcp.org/en/jsr/detail?id=366`), and the EJB 3.1 Specification,
-section 4.4, "Global JNDI Access"
-(`http://jcp.org/en/jsr/detail?id=318`).
-
-If the `disable-nonportable-jndi-names` property is set to false (the
-default), a GlassFish Server V2-specific JNDI name is assigned in
-addition to a portable global JNDI name. For more information, see
-link:#gcjkd[GlassFish Server V2 Vendor-Specific Global JNDI Names] and
-link:#gkndi[Disabling GlassFish Server V2 JNDI Names].
-
-[[gcjkd]][[GSDVG00519]][[glassfish-server-v2-vendor-specific-global-jndi-names]]
-
-GlassFish Server V2 Vendor-Specific Global JNDI Names
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-GlassFish Server v2 vendor-specific global JNDI names are assigned
-according to the following precedence rules:
-
-1.  A global JNDI name assigned in the `glassfish-ejb-jar.xml`,
-`glassfish-web.xml`, or `glassfish-application-client.xml` deployment
-descriptor file has the highest precedence. See link:#beaoa[Mapping
-References].
-2.  A global JNDI name assigned in a `mapped-name` element in the
-`ejb-jar.xml`, `web.xml`, or `application-client.xml` deployment
-descriptor file has the second highest precedence. The following
-elements have `mapped-name` subelements: `resource-ref`,
-`resource-env-ref`, `ejb-ref`, `message-destination`,
-`message-destination-ref`, `session`, `message-driven`, and `entity`.
-3.  A global JNDI name assigned in a `mappedName` attribute of an
-annotation has the third highest precedence. The following annotations
-have `mappedName` attributes: `@jakarta.annotation.Resource`,
-`@javax.ejb.EJB`, `@javax.ejb.Stateless`, `@javax.ejb.Singleton`,
-`@javax.ejb.Stateful`, and `@javax.ejb.MessageDriven`.
-4.  In most cases, a default global JNDI name is assigned (and recorded
-in the server log) if no name is assigned in deployment descriptors or
-annotations.
-* For a session or entity bean, a GlassFish Server V2-specific JNDI name
-is assigned as follows:
-
-** For an EJB 2.x dependency or a session or entity bean with a remote
-interface, the default is the fully qualified name of the home
-interface.
-
-** For an EJB 3.0 dependency or a session bean with a remote interface,
-the default is the fully qualified name of the remote business
-interface.
-
-** If both EJB 2.x and EJB 3.0 remote interfaces are specified, or if
-more than one 3.0 remote interface is specified, there is no GlassFish
-Server V2-specific default. For an entity bean, a global JNDI name must
-be assigned.
-* For all other component dependencies that must be mapped to global
-JNDI names, the default is the name of the dependency relative to
-`java:comp/env`. For example, in the
-`@Resource(name="jdbc/Foo") DataSource ds;` annotation, the global JNDI
-name is `jdbc/Foo`.
-
-[[gkndi]][[GSDVG00526]][[disabling-glassfish-server-v2-jndi-names]]
-
-Disabling GlassFish Server V2 JNDI Names
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The EJB 3.1 specification supported by GlassFish Server 5.0 defines
-portable EJB JNDI names for session beans. Because of this, there is
-less need to continue to use older vendor-specific JNDI names.
-
-By default, GlassFish Server V2-specific JNDI names are applied
-automatically by GlassFish Server 5.0 for backward compatibility.
-However, this can lead to some ease-of-use issues. For example,
-deploying two different applications containing a remote EJB component
-that exposes the same remote interface causes a conflict between the
-default JNDI names.
-
-The default handling of V2-specific JNDI names in GlassFish Server 5.0
-can be managed by using the `asadmin` command:
-
-[source,oac_no_warn]
-----
-asadmin> set server.ejb-container.property.disable-nonportable-jndi-names="true"
-----
-
-The `disable-nonportable-jndi-names` property is a boolean flag that can
-take the following values:
-
-`false`::
-  Enables the automatic use of GlassFish Server V2-specific JNDI names
-  in addition to portable global JNDI names. This is the default
-  setting.
-`true`::
-  Disables the automatic use of V2-specific JNDI names. In all cases,
-  only portable global JNDI names are used.
-
-Note that this setting applies to all session beans deployed to the
-server.
-
-[[beanu]][[GSDVG00520]][[accessing-ejb-components-using-the-cosnaming-naming-context]]
-
-Accessing EJB Components Using the `CosNaming` Naming Context
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The preferred way of accessing the naming service, even in code that
-runs outside of a Java EE container, is to use the no-argument
-`InitialContext` constructor. However, if EJB client code explicitly
-instantiates an `InitialContext` that points to the `CosNaming` naming
-service, it is necessary to set the `java.naming.factory.initial`
-property to `org.glassfish.jndi.cosnaming.CNCtxFactory` in the client JVM
-software when accessing EJB components. You can set this property using
-the `asadmin create-jvm-options` command, as follows:
-
-[source,oac_no_warn]
-----
-asadmin> create-jvm-options -Djava.naming.factory.initial=org.glassfish.jndi.cosnaming.CNCtxFactory
-----
-
-For details about `asadmin create-jvm-options`, see the
-link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-
-Or you can set this property in the code, as follows:
-
-[source,oac_no_warn]
-----
-Properties properties = null;
-      try {
-            properties = new Properties();
-            properties.put("java.naming.factory.initial",
-                  "org.glassfish.jndi.cosnaming.CNCtxFactory");
-            ...
-          }
-      ...
-----
-
-The `java.naming.factory.initial` property applies to only one instance.
-The property is not cluster-aware.
-
-[[beanv]][[GSDVG00521]][[accessing-ejb-components-in-a-remote-glassfish-server]]
-
-Accessing EJB Components in a Remote GlassFish Server
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The recommended approach for looking up an EJB component in a remote
-GlassFish Server from a client that is a servlet or EJB component is to
-use the Interoperable Naming Service syntax. Host and port information
-is prepended to any global JNDI names and is automatically resolved
-during the lookup. The syntax for an interoperable global name is as
-follows:
-
-[source,oac_no_warn]
-----
-corbaname:iiop:host:port#a/b/name
-----
-
-This makes the programming model for accessing EJB components in another
-GlassFish Server exactly the same as accessing them in the same server.
-The deployer can change the way the EJB components are physically
-distributed without having to change the code.
-
-For Java EE components, the code still performs a `java:comp/env` lookup
-on an EJB reference. The only difference is that the deployer maps the
-`ejb-ref` element to an interoperable name in a GlassFish Server
-deployment descriptor file instead of to a simple global JNDI name.
-
-For example, suppose a servlet looks up an EJB reference using
-`java:comp/env/ejb/Foo`, and the target EJB component has a global JNDI
-name of `a/b/Foo`.
-
-The `ejb-ref` element in `glassfish-web.xml` looks like this:
-
-[source,oac_no_warn]
-----
-<ejb-ref>
-   <ejb-ref-name>ejb/Foo</ejb-ref-name>
-   <jndi-name>corbaname:iiop:host:port#a/b/Foo</jndi-name>
-</ejb-ref>
-----
-
-The code looks like this:
-
-[source,oac_no_warn]
-----
-Context ic = new InitialContext();
-Object o = ic.lookup("java:comp/env/ejb/Foo");
-----
-
-For a client that doesn't run within a Java EE container, the code just
-uses the interoperable global name instead of the simple global JNDI
-name. For example:
-
-[source,oac_no_warn]
-----
-Context ic = new InitialContext();
-Object o = ic.lookup("corbaname:iiop:host:port#a/b/Foo");
-----
-
-Objects stored in the interoperable naming context and
-component-specific (`java:comp/env`) naming contexts are transient. On
-each server startup or application reloading, all relevant objects are
-re-bound to the namespace.
-
-[[beanw]][[GSDVG00522]][[naming-environment-for-lifecycle-modules]]
-
-Naming Environment for Lifecycle Modules
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Lifecycle listener modules provide a means of running short or long
-duration tasks based on Java technology within the GlassFish Server
-environment, such as instantiation of singletons or RMI servers. These
-modules are automatically initiated at server startup and are notified
-at various phases of the server life cycle. For details about lifecycle
-modules, see link:lifecycle-listeners.html#beamc[Developing Lifecycle
-Listeners].
-
-The configured properties for a lifecycle module are passed as
-properties during server initialization (the `INIT_EVENT`). The initial
-JNDI naming context is not available until server initialization is
-complete. A lifecycle module can get the `InitialContext` for lookups
-using the method `LifecycleEventContext.getInitialContext()` during, and
-only during, the `STARTUP_EVENT`, `READY_EVENT`, or `SHUTDOWN_EVENT`
-server life cycle events.
-
-[[beanx]][[GSDVG00193]][[configuring-resources]]
-
-Configuring Resources
-~~~~~~~~~~~~~~~~~~~~~
-
-The GlassFish Server exposes special resources in the naming
-environment.
-
-* link:#beany[External JNDI Resources]
-* link:#beanz[Custom Resources]
-* link:#giyvw[Built-in Factories for Custom Resources]
-* link:#gkpdn[Using Application-Scoped Resources]
-
-[[beany]][[GSDVG00523]][[external-jndi-resources]]
-
-External JNDI Resources
-^^^^^^^^^^^^^^^^^^^^^^^
-
-An external JNDI resource defines custom JNDI contexts and implements
-the javax.naming.spi.InitialContextFactory interface. There is no
-specific JNDI parent context for external JNDI resources, except for the
-standard `java:comp/env/`.
-
-Create an external JNDI resource in one of these ways:
-
-* To create an external JNDI resource using the Administration Console,
-open the Resources component, open the JNDI component, and select
-External Resources. For details, click the Help button in the
-Administration Console.
-* To create an external JNDI resource, use the
-`asadmin create-jndi-resource` command. For details, see the
-link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-
-[[beanz]][[GSDVG00524]][[custom-resources]]
-
-Custom Resources
-^^^^^^^^^^^^^^^^
-
-A custom resource specifies a custom server-wide resource object factory
-that implements the javax.naming.spi.ObjectFactory interface. There is
-no specific JNDI parent context for external JNDI resources, except for
-the standard `java:comp/env/`.
-
-Create a custom resource in one of these ways:
-
-* To create a custom resource using the Administration Console, open the
-Resources component, open the JNDI component, and select Custom
-Resources. For details, click the Help button in the Administration
-Console.
-* To create a custom resource, use the `asadmin create-custom-resource`
-command. For details, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source
-Edition Reference Manual].
-
-[[giyvw]][[GSDVG00525]][[built-in-factories-for-custom-resources]]
-
-Built-in Factories for Custom Resources
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The GlassFish Server provides built-in factories for the following types
-of custom resources:
-
-* link:#giywi[JavaBeanFactory]
-* link:#giysn[PropertiesFactory]
-* link:#giytz[PrimitivesAndStringFactory]
-* link:#giywh[URLFactory]
-
-Template `glassfish-resources.xml` files for these built-in factories
-and a `README` file are available at
-as-install`/lib/install/templates/resources/custom/`. For more
-information about the `glassfish-resources.xml` file, see the
-link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition Application Deployment
-Guide].
-
-[[giywi]][[GSDVG00329]][[javabeanfactory]]
-
-JavaBeanFactory
-+++++++++++++++
-
-To create a custom resource that provides instances of a JavaBean class,
-follow these steps:
-
-1.  Set the custom resource's factory class to
-`org.glassfish.resources.custom.factory.JavaBeanFactory`.
-2.  Create a property in the custom resource for each setter method in
-the JavaBean class. +
-For example, if the JavaBean class has a method named `setAccount`,
-specify a property named `account` and give it a value.
-3.  Make sure the JavaBean class is accessible to the GlassFish Server. +
-For example, you can place the JavaBean class in the as-install`/lib`
-directory.
-
-[[giysn]][[GSDVG00330]][[propertiesfactory]]
-
-PropertiesFactory
-+++++++++++++++++
-
-To create a custom resource that provides properties to applications,
-set the custom resource's factory class to
-`org.glassfish.resources.custom.factory.PropertiesFactory`, then specify
-one or both of the following:
-
-* Create a property in the custom resource named
-`org.glassfish.resources.custom.factory.PropertiesFactory.fileName` and
-specify as its value the path to a properties file or an XML file. +
-The path can be absolute or relative to as-install. The file must be
-accessible to the GlassFish Server. +
-If an XML file is specified, it must match the document type definition
-(DTD) specified in the API definition of
-http://download.oracle.com/javase/8/docs/api/java/util/Properties.html[java.util.Properties]
-(`http://docs.oracle.com/javase/8/docs/api/java/util/Properties.html`).
-* Create the desired properties directly as properties of the custom
-resource. +
-If both the `fileName` property and other properties are specified, the
-resulting property set is the union. If the same property is defined in
-the file and directly in the custom resource, the value of the latter
-takes precedence.
-
-[[giytz]][[GSDVG00331]][[primitivesandstringfactory]]
-
-PrimitivesAndStringFactory
-++++++++++++++++++++++++++
-
-To create a custom resource that provides Java primitives to
-applications, follow these steps:
-
-1.  Set the custom resource's factory class to
-`org.glassfish.resources.custom.factory.PrimitivesAndStringFactory`.
-2.  Set the custom resource's resource type to one of the following or
-its fully qualified wrapper class name equivalent:
-* `int`
-* `long`
-* `double`
-* `float`
-* `char`
-* `short`
-* `byte`
-* `boolean`
-* `String`
-3.  Create a property in the custom resource named `value` and give it
-the value needed by the application. +
-For example, If the application requires a `double` of value `22.1`,
-create a property with the name `value` and the value `22.1`.
-
-[[giywh]][[GSDVG00332]][[urlfactory]]
-
-URLFactory
-++++++++++
-
-To create a custom resource that provides URL instances to applications,
-follow these steps:
-
-1.  Set the custom resource's factory class to
-`org.glassfish.resources.custom.factory.URLObjectFactory`.
-2.  Choose which of the following constructors to use:
-* `URL(protocol, host, port, file)`
-* `URL(protocol, host, file)`
-* `URL(spec)`
-3.  Define properties according to the chosen constructor. +
-For example, for the first constructor, define properties named
-`protocol`, `host`, `port`, and `file`. Example values might be `http`,
-`localhost`, `8085`, and `index.html`, respectively. +
-For the third constructor, define a property named `spec` and assign it
-the value of the entire URL.
-
-[[gkpdn]][[GSDVG00527]][[using-application-scoped-resources]]
-
-Using Application-Scoped Resources
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can define an application-scoped JNDI or other resource for an
-enterprise application, web module, EJB module, connector module, or
-application client module by supplying a `glassfish-resources.xml`
-deployment descriptor file. For details, see
-"link:../application-deployment-guide/deploying-applications.html#GSDPG00075[Application-Scoped Resources]" in GlassFish Server
-Open Source Edition Application Deployment Guide.
-
-[[gcpge]][[GSDVG00194]][[using-a-custom-jndi.properties-file]]
-
-Using a Custom `jndi.properties` File
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-To use a custom `jndi.properties` file, JAR it and place it in the
-domain-dir`/lib` directory. This adds the custom `jndi.properties` file
-to the Common class loader. For more information about class loading,
-see link:class-loaders.html#beade[Class Loaders].
-
-For each property found in more than one `jndi.properties` file, the
-Java EE naming service either uses the first value found or concatenates
-all of the values, whichever makes sense.
-
-[[beaoa]][[GSDVG00195]][[mapping-references]]
-
-Mapping References
-~~~~~~~~~~~~~~~~~~
-
-The following XML elements in the GlassFish Server deployment
-descriptors map resource references in application client, EJB, and web
-application components to JNDI names configured in GlassFish Server:
-
-* `resource-env-ref` - Maps the `@Resource` or `@Resources` annotation
-(or the `resource-env-ref` element in the corresponding Java EE XML
-file) to the absolute JNDI name configured in GlassFish Server.
-* `resource-ref` - Maps the `@Resource` or `@Resources` annotation (or
-the `resource-ref` element in the corresponding Java EE XML file) to the
-absolute JNDI name configured in GlassFish Server.
-* `ejb-ref` - Maps the `@EJB` annotation (or the `ejb-ref` element in
-the corresponding Java EE XML file) to the absolute JNDI name configured
-in GlassFish Server. +
-JNDI names for EJB components must be unique. For example, appending the
-application name and the module name to the EJB name is one way to
-guarantee unique names. In this case, `mycompany.pkging.pkgingEJB.MyEJB`
-would be the JNDI name for an EJB in the module `pkgingEJB.jar`, which
-is packaged in the `pkging.ear` application.
-
-These elements are part of the `glassfish-web.xml`,
-`glassfish-application-client.xml`, `glassfish-ejb-jar.xml`, and
-`glassfish-application.xml` deployment descriptor files. For more
-information about how these elements behave in each of the deployment
-descriptor files, see "link:../application-deployment-guide/dd-elements.html#GSDPG00007[Elements of the GlassFish Server
-Deployment Descriptors]" in GlassFish Server Open Source Edition
-Application Deployment Guide.
-
-The rest of this section uses an example of a JDBC resource lookup to
-describe how to reference resource factories. The same principle is
-applicable to all resources (such as JMS destinations, JavaMail
-sessions, and so on).
-
-The `@Resource` annotation in the application code looks like this:
-
-[source,oac_no_warn]
-----
-@Resource(name="jdbc/helloDbDs") javax.sql.DataSource ds;
-----
-
-This references a resource with the JNDI name of `java:jdbc/helloDbDs`.
-If this is the JNDI name of the JDBC resource configured in the
-GlassFish Server, the annotation alone is enough to reference the
-resource.
-
-However, you can use a GlassFish Server specific deployment descriptor
-to override the annotation. For example, the `resource-ref` element in
-the `glassfish-web.xml` file maps the `res-ref-name` (the name specified
-in the annotation) to the JNDI name of another JDBC resource configured
-in GlassFish Server.
-
-[source,oac_no_warn]
-----
-<resource-ref>
-   <res-ref-name>jdbc/helloDbDs</res-ref-name>
-   <jndi-name>jdbc/helloDbDataSource</jndi-name>
-</resource-ref>
-----
-
-
diff --git a/docs/application-development-guide/src/main/jbake/content/jpa.adoc b/docs/application-development-guide/src/main/jbake/content/jpa.adoc
deleted file mode 100644
index 8c928fa..0000000
--- a/docs/application-development-guide/src/main/jbake/content/jpa.adoc
+++ /dev/null
@@ -1,801 +0,0 @@
-type=page
-status=published
-title=Configuring the Java Persistence Provider
-next=webapps.html
-prev=webservices.html
-~~~~~~
-Configuring the Java Persistence Provider
-=========================================
-
-[[GSDVG00008]][[gbxjk]]
-
-
-[[configuring-the-java-persistence-provider]]
-6 Configuring the Java Persistence Provider
--------------------------------------------
-
-This chapter describes Oracle TopLink, the default persistence provider
-in GlassFish Server Open Source Edition, and introduces how to use it.
-This chapter also tells how to set the default persistence provider in
-GlassFish Server and how to use persistence-related features specific to
-GlassFish Server such as automatic schema generation.
-
-The following topics are addressed here:
-
-* link:#CHDJJAEI[Overview of Oracle TopLink]
-* link:#CHDHDABJ[Using Oracle TopLink in GlassFish Server]
-* link:#gbwmj[Specifying the Database for an Application]
-* link:#gdkwf[Specifying the Persistence Provider for an Application]
-* link:#gescc[Primary Key Generation Defaults]
-* link:#gbwlh[Automatic Schema Generation]
-* link:#gbxjh[Restrictions and Optimizations]
-
-[[CHDJJAEI]][[GSDVG537]][[overview-of-oracle-toplink]]
-
-Overview of Oracle TopLink
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Oracle TopLink is the default persistence provider in Oracle GlassFish
-Server. It is a comprehensive standards-based object-persistence and
-object-transformation framework that provides APIs, schemas, and
-run-time services for the persistence layer of an application.
-
-TopLink includes all of EclipseLink, from the Eclipse Foundation.
-EclipseLink is the default persistence provider in GlassFish Server Open
-Source Edition. EclipseLink is the open source implementation of the
-development framework and the runtime provided in TopLink. EclipseLink
-implements the following specifications, plus value-added extensions:
-
-* Java Persistence Architecture (JPA) 2.0. +
-JPA 2.0 is part of Java Platform, Enterprise Edition 6 (Java EE 6). It
-includes improvements and enhancements to domain modeling,
-object/relational mapping, `EntityManager` and `Query` interfaces, and
-the Java Persistence Query Language (JPQL). It includes an API for
-criteria queries, a metamodel API, and support for validation. The Java
-Persistence API can be used with non-EJB components outside the EJB
-container. +
-For the JPA 2.0 Specification, see
-http://jcp.org/aboutJava/communityprocess/pfd/jsr317/index.html[Java
-Specification Request (JSR) 317]. For basic information about the Java
-Persistence API, see
-"https://javaee.github.io/tutorial/partpersist.html[Persistence]" in The
-Java EE 8 Tutorial.
-* Java Architecture for XML Binding (JAXB) 2.0. The EclipseLink JAXB
-implementation, plus EclipseLink extensions, is called MOXy. The
-`org.eclipse.persistence.moxy.jar` file is bundled with GlassFish
-Server. For more information about MOXy support in GlassFish Server, see
-link:webservices.html#CHDEBBCH[The Databinding Provider]. +
-For the JAXB 2.0 specification, see
-http://jcp.org/aboutJava/communityprocess/pfd/jsr222/index.html[Java
-Specification Request (JSR) 222].
-* EclipseLink utilities are not included but can be used with GlassFish
-Server. Download the EclipseLink zip file at
-`http://www.eclipse.org/eclipselink/downloads/` and unzip it. The
-utility files are located here: +
-[source,oac_no_warn]
-----
-bin/jaxb-compiler.cmd
-bin/jaxb-compiler.sh
-----
-
-In addition to all of EclipseLink, Oracle TopLink includes TopLink Grid,
-an integration between TopLink and Oracle Coherence that allows TopLink
-to use Oracle Coherence as a level 2 (L2) cache and persistence layer
-for entities. The `toplink-grid.jar` file is bundled with Oracle
-GlassFish Server.
-
-
-[NOTE]
-=======================================================================
-
-You must have a license for Oracle Coherence to be able to use TopLink
-Grid.
-
-=======================================================================
-
-
-For information about developing, deploying, and configuring Oracle
-TopLink, EclipseLink, and TopLink Grid applications, see the following:
-
-* http://docs.oracle.com/html/E25034_01/toc.html[Oracle Fusion Middleware
-Solution Guide for Oracle TopLink]
-* EclipseLink project home at `http://wiki.eclipse.org/EclipseLink`
-* EclipseLink Documentation Center at
-`http://wiki.eclipse.org/EclipseLink/UserGuide`
-* Java API Reference for EclipseLink at
-`http://www.eclipse.org/eclipselink/api/latest/index.html`
-* EclipseLink examples at `http://wiki.eclipse.org/EclipseLink/Examples`
-* http://docs.oracle.com/cd/E18686_01/coh.37/e18677/toc.html[Oracle
-Coherence Developer's Guide]
-* http://docs.oracle.com/cd/E17904_01/doc.1111/e16596/toc.html[Oracle
-Fusion Middleware Integration Guide for Oracle TopLink with Coherence
-Grid]
-
-[[CHDHDABJ]][[GSDVG538]][[using-oracle-toplink-in-glassfish-server]]
-
-Using Oracle TopLink in GlassFish Server
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-To run TopLink JPA applications in GlassFish Server, you must configure
-the server and coordinate certain server and application settings. These
-are described in the following steps. For a summary of these steps, see
-"http://docs.oracle.com/html/E25034_01/tlandgs.html#CIHDDACF[Using
-TopLink with WebLogic Server]" in Oracle Fusion Middleware Solution
-Guide for Oracle TopLink. For more detailed explanations of these steps,
-see the links in the steps.
-
-1.  Set up the datasource. See "link:../administration-guide/jdbc.html#GSADG00015[Administering Database
-Connectivity]" in GlassFish Server Open Source Edition Administration
-Guide.
-2.  Create the application. For guidance in writing your application,
-see "https://javaee.github.io/tutorial/partpersist.html[Persistence]" in
-The Java EE 8 Tutorial.
-3.  Create the `persistence.xml` file. See link:#gbwmj[Specifying the
-Database for an Application] for considerations specific to GlassFish
-Server. +
-If you are using the Java Persistence API by calling
-`Persistence.createEMF()`, see link:#gdkwf[Specifying the Persistence
-Provider for an Application].
-4.  If the security manager is enabled and you are using the Java
-Persistence API by calling `Persistence.createEMF()`, see
-link:securing-apps.html#gbyah[Enabling and Disabling the Security
-Manager].
-5.  Deploy the application. See the GlassFish Server Open Source Edition
-Application Deployment Guide.
-6.  Run the application. See "Application Client Launch" and "To Launch
-an Application" in Administration Console online help.
-7.  Monitor the application. See "link:../administration-guide/monitoring.html#GSADG00011[Administering the
-Monitoring Service]" in GlassFish Server Open Source Edition
-Administration Guide.
-
-[[gbwmj]][[GSDVG00130]][[specifying-the-database-for-an-application]]
-
-Specifying the Database for an Application
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-GlassFish Server uses the bundled Apache Derby database by default,
-named `jdbc/__default`. If the `transaction-type` element is omitted or
-specified as `JTA` and both the `jta-data-source` and
-`non-jta-data-source` elements are omitted in the `persistence.xml`
-file, Apache Derby is used as a JTA data source. If `transaction-type`
-is specified as `RESOURCE_LOCAL` and both `jta-data-source` and
-`non-jta-data-source` are omitted, Apache Derby is used as a non-JTA
-data source.
-
-To use a non-default database, either specify a value for the
-`jta-data-source` element, or set the `transaction-type` element to
-`RESOURCE_LOCAL` and specify a value for the `non-jta-data-source`
-element.
-
-If you are using the default persistence provider, the provider attempts
-to automatically detect the database type based on the connection
-metadata. This database type is used to issue SQL statements specific to
-the detected database type's dialect. You can specify the optional
-`eclipselink.target-database` property to guarantee that the database
-type is correct. For example:
-
-[source,oac_no_warn]
-----
-<?xml version="1.0" encoding="UTF-8"?>
-    <persistence xmlns="http://java.sun.com/xml/ns/persistence">
-        <persistence-unit name ="em1">
-            <jta-data-source>jdbc/MyDB2DB</jta-data-source>
-            <properties>
-                <property name="eclipselink.target-database" 
-                    value="DB2"/>
-            </properties>
-        </persistence-unit>
-    </persistence>
-----
-
-The following `eclipselink.target-database` property values are allowed.
-Supported platforms have been tested with the GlassFish Server and are
-found to be Java EE compatible.
-
-[source,oac_no_warn]
-----
-//Supported platforms
-JavaDB
-Derby
-Oracle
-MySQL4
-//Others available
-SQLServer
-DB2
-Sybase
-PostgreSQL
-Informix
-TimesTen
-Attunity
-HSQL
-SQLAnyWhere
-DBase
-DB2Mainframe
-Cloudscape
-PointBase
-----
-
-For more information about the `eclipselink.target-database` property,
-see
-http://wiki.eclipse.org/Using_EclipseLink_JPA_Extensions_(ELUG)#Using_EclipseLink_JPA_Extensions_for_Session.2C_Target_Database_and_Target_Application_Server[Using
-EclipseLink JPA Extensions for Session, Target Database and Target
-Application Server]
-(`http://wiki.eclipse.org/Using_EclipseLink_JPA_Extensions_(ELUG)#Using_EclipseLink_JPA_Extensions_for_Session.2C_Target_Database_and_Target_Application_Server`).
-
-If you are using the Java Persistence API by calling
-`Persistence.createEMF()`, do not specify the `jta-data-source` or
-`non-jta-data-source` elements. Instead, specify the `provider` element
-and any additional properties required by the JDBC driver or the
-database. For example:
-
-[source,oac_no_warn]
-----
-<?xml version="1.0" encoding="UTF-8"?>
-    <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
-        <persistence-unit name ="em2">
-            <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
-            <class>ejb3.war.servlet.JpaBean</class>
-            <properties>
-                <property name="eclipselink.target-database"
-                    value="Derby"/>
-                <!-- JDBC connection properties -->
-                <property name="eclipselink.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/>
-                <property name="eclipselink.jdbc.url" 
-value="jdbc:derby://localhost:1527/testdb;retrieveMessagesFromServerOnGetMessage=true;create=true;"/>
-                <property name="eclipselink.jdbc.user" value="APP"/>
-                <property name="eclipselink.jdbc.password" value="APP"/>
-            </properties>
-        </persistence-unit>
-    </persistence>
-----
-
-For a list of the JDBC drivers currently supported by the GlassFish
-Server, see the link:../release-notes/toc.html#GSRLN[GlassFish Server Open Source Edition Release
-Notes]. For configurations of supported and other drivers, see
-"link:../administration-guide/jdbc.html#GSADG00579[Configuration Specifics for JDBC Drivers]" in
-GlassFish Server Open Source Edition Administration Guide.
-
-[[gdkwf]][[GSDVG00138]][[specifying-the-persistence-provider-for-an-application]]
-
-Specifying the Persistence Provider for an Application
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-If you are using the default persistence provider in an application that
-uses the Java Persistence API by injecting or looking up an entity
-manager or entity manager factory, you do not need to specify the
-provider.
-
-If you are using the Java Persistence API by calling
-`Persistence.createEMF()`, you should always specify the persistence
-provider for specification compliance. To specify the default provider,
-set the `provider` element of the `persistence.xml` file to
-`org.eclipse.persistence.jpa.PersistenceProvider`.
-
-You can specify a non-default persistence provider for an application in
-the manner described in the Java Persistence API Specification:
-
-1.  Install the provider. Copy the provider JAR files to the
-domain-dir`/lib` directory, and restart the GlassFish Server. For more
-information about the domain-dir`/lib` directory, see
-link:class-loaders.html#beadj[Using the Common Class Loader]. The new
-persistence provider is now available to all modules and applications
-deployed on servers that share the same configuration. +
-However, the default provider remains the same, Oracle TopLink or
-EclipseLink.
-2.  In your persistence unit, specify the provider and any properties
-the provider requires in the `persistence.xml` file. For example: +
-[source,oac_no_warn]
-----
-<?xml version="1.0" encoding="UTF-8"?>
-    <persistence xmlns="http://java.sun.com/xml/ns/persistence">
-        <persistence-unit name ="em3">
-            <provider>com.company22.persistence.PersistenceProviderImpl</provider>
-            <properties>
-                <property name="company22.database.name" value="MyDB"/>
-            </properties>
-        </persistence-unit>
-    </persistence>
-----
-
-To specify the provider programmatically instead of in the
-`persistence.xml` file, set the `javax.persistence.provider` property
-and pass it to the `Map` parameter of the following method:
-
-[source,oac_no_warn]
-----
-javax.persistence.Persistence.createEntityManagerFactory(String, Map)
-----
-
-[[gescc]][[GSDVG00135]][[primary-key-generation-defaults]]
-
-Primary Key Generation Defaults
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-In the descriptions of the `@GeneratedValue`, `@SequenceGenerator`, and
-`@TableGenerator` annotations in the Java Persistence Specification,
-certain defaults are noted as specific to the persistence provider. The
-default persistence provider's primary key generation defaults are
-listed here.
-
-`@GeneratedValue` defaults are as follows:
-
-* Using `strategy=AUTO` (or no `strategy`) creates a `@TableGenerator`
-named `SEQ_GEN` with default settings. Specifying a `generator` has no
-effect.
-* Using `strategy=TABLE` without specifying a `generator` creates a
-`@TableGenerator` named `SEQ_GEN_TABLE` with default settings.
-Specifying a `generator` but no `@TableGenerator` creates and names a
-`@TableGenerator` with default settings.
-* Using `strategy=IDENTITY` or `strategy=SEQUENCE` produces the same
-results, which are database-specific.
-
-** For Oracle databases, not specifying a `generator` creates a
-`@SequenceGenerator` named `SEQ_GEN_SEQUENCE` with default settings.
-Specifying a `generator` but no `@SequenceGenerator` creates and names a
-`@SequenceGenerator` with default settings.
-
-** For PostgreSQL databases, a `SERIAL` column named
-entity-table`_`pk-column`_SEQ` is created.
-
-** For MySQL databases, an `AUTO_INCREMENT` column is created.
-
-** For other supported databases, an `IDENTITY` column is created.
-
-The `@SequenceGenerator` annotation has one default specific to the
-default provider. The default `sequenceName` is the specified `name`.
-
-`@TableGenerator` defaults are as follows:
-
-* The default `table` is `SEQUENCE`.
-* The default `pkColumnName` is `SEQ_NAME`.
-* The default `valueColumnName` is `SEQ_COUNT`.
-* The default `pkColumnValue` is the specified `name`, or the default
-`name` if no `name` is specified.
-
-[[gbwlh]][[GSDVG00136]][[automatic-schema-generation]]
-
-Automatic Schema Generation
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The automatic schema generation feature of the GlassFish Server defines
-database tables based on the fields or properties in entities and the
-relationships between the fields or properties. This insulates
-developers from many of the database related aspects of development,
-allowing them to focus on entity development. The resulting schema is
-usable as-is or can be given to a database administrator for tuning with
-respect to performance, security, and so on.
-
-The following topics are addressed here:
-
-* link:#gcjgl[Annotations]
-* link:#gbwmk[Generation Options]
-
-
-[NOTE]
-=======================================================================
-
-Automatic schema generation is supported on an all-or-none basis: it
-expects that no tables exist in the database before it is executed. It
-is not intended to be used as a tool to generate extra tables or
-constraints.
-
-Deployment won't fail if all tables are not created, and undeployment
-won't fail if not all tables are dropped. Instead, an error is written
-to the server log. This is done to allow you to investigate the problem
-and fix it manually. You should not rely on the partially created
-database schema to be correct for running the application.
-
-=======================================================================
-
-
-[[gcjgl]][[GSDVG00388]][[annotations]]
-
-Annotations
-^^^^^^^^^^^
-
-The following annotations are used in automatic schema generation:
-`@AssociationOverride`, `@AssociationOverrides`, `@AttributeOverride`,
-`@AttributeOverrides`, `@Column`, `@DiscriminatorColumn`,
-`@DiscriminatorValue`, `@Embedded`, `@EmbeddedId`, `@GeneratedValue`,
-`@Id`, `@IdClass`, `@JoinColumn`, `@JoinColumns`, `@JoinTable`, `@Lob`,
-`@ManyToMany`, `@ManyToOne`, `@OneToMany`, `@OneToOne`,
-`@PrimaryKeyJoinColumn`, `@PrimaryKeyJoinColumns`, `@SecondaryTable`,
-`@SecondaryTables`, `@SequenceGenerator`, `@Table`, `@TableGenerator`,
-`@UniqueConstraint`, and `@Version`. For information about these
-annotations, see the Java Persistence Specification.
-
-For `@Column` annotations, the `insertable` and `updatable` elements are
-not used in automatic schema generation.
-
-For `@OneToMany` and `@ManyToOne` annotations, no `ForeignKeyConstraint`
-is created in the resulting DDL files.
-
-[[gbwmk]][[GSDVG00389]][[generation-options]]
-
-Generation Options
-^^^^^^^^^^^^^^^^^^
-
-Schema generation properties or `asadmin` command line options can
-control automatic schema generation by the following:
-
-* Creating tables during deployment
-* Dropping tables during undeployment
-* Dropping and creating tables during redeployment
-* Generating the DDL files
-
-
-[NOTE]
-=======================================================================
-
-Before using these options, make sure you have a properly configured
-database. See link:#gbwmj[Specifying the Database for an Application].
-
-=======================================================================
-
-
-Optional schema generation properties control the automatic creation of
-database tables. You can specify them in the `persistence.xml` file. For
-more information, see
-http://wiki.eclipse.org/Using_EclipseLink_JPA_Extensions_(ELUG)#Using_EclipseLink_JPA_Extensions_for_Schema_Generation[Using
-EclipseLink JPA Extensions for Schema Generation]
-(`http://wiki.eclipse.org/Using_EclipseLink_JPA_Extensions_(ELUG)#Using_EclipseLink_JPA_Extensions_for_Schema_Generation`).
-
-The following options of the `asadmin deploy` or `asadmin deploydir`
-command control the automatic creation of database tables at deployment.
-
-[[GSDVG539]][[sthref11]][[gbwlr]]
-
-
-Table 6-1 The `asadmin deploy` and `asadmin deploydir` Generation
-Options
-
-[width="181%",cols="14%,49%,37%",options="header",]
-|=======================================================================
-|Option |Default |Description
-|`--createtables` |none |If `true`, causes database tables to be created
-for entities that need them. No unique constraints are created. If
-`false`, does not create tables. If not specified, the value of the
-`eclipselink.ddl-generation` property in `persistence.xml` is used.
-
-|`--dropandcreatetables` |none a|
-If `true`, and if tables were automatically created when this
-application was last deployed, tables from the earlier deployment are
-dropped and fresh ones are created.
-
-If `true`, and if tables were not automatically created when this
-application was last deployed, no attempt is made to drop any tables. If
-tables with the same names as those that would have been automatically
-created are found, the deployment proceeds, but a warning is thrown to
-indicate that tables could not be created.
-
-If `false`, the `eclipselink.ddl-generation` property setting in
-`persistence.xml` is overridden.
-
-|=======================================================================
-
-
-The following options of the `asadmin undeploy` command control the
-automatic removal of database tables at undeployment.
-
-[[GSDVG540]][[sthref12]][[gbwmm]]
-
-
-Table 6-2 The `asadmin undeploy` Generation Options
-
-[width="181%",cols="9%,49%,42%",options="header",]
-|=======================================================================
-|Option |Default |Description
-|`--droptables` |none a|
-If `true`, causes database tables that were automatically created when
-the entities were last deployed to be dropped when the entities are
-undeployed. If `false`, does not drop tables.
-
-If not specified, tables are dropped only if the
-`eclipselink.ddl-generation` property setting in `persistence.xml` is
-`drop-and-create-tables`.
-
-|=======================================================================
-
-
-For more information about the `asadmin deploy`, `asadmin deploydir`,
-and `asadmin undeploy` commands, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server
-Open Source Edition Reference Manual].
-
-When `asadmin` deployment options and `persistence.xml` options are both
-specified, the `asadmin` deployment options take precedence.
-
-[[gbxjh]][[GSDVG00139]][[restrictions-and-optimizations]]
-
-Restrictions and Optimizations
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This section discusses restrictions and performance optimizations that
-affect using the Java Persistence API.
-
-The following topics are addressed here:
-
-* link:#giqbi[Oracle Database Enhancements]
-* link:#ghdtr[Extended Persistence Context]
-* link:#gezxw[Using @OrderBy with a Shared Session Cache]
-* link:#gdwqi[Using BLOB or CLOB Types with the Inet Oraxo JDBC Driver]
-* link:#geqvh[Database Case Sensitivity]
-* link:#gbxjg[Sybase Finder Limitation]
-* link:#gbxjp[MySQL Database Restrictions]
-
-[[giqbi]][[GSDVG00390]][[oracle-database-enhancements]]
-
-Oracle Database Enhancements
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-EclipseLink features a number of enhancements for use with Oracle
-databases. These enhancements require classes from the Oracle JDBC
-driver JAR files to be visible to EclipseLink at runtime. If you place
-the JDBC driver JAR files in domain-dir`/lib`, the classes are not
-visible to GlassFish Server components, including EclipseLink.
-
-If you are using an Oracle database, put JDBC driver JAR files in
-domain-dir`/lib/ext` instead. This ensures that the JDBC driver classes
-are visible to EclipseLink.
-
-If you do not want to take advantage of Oracle-specific extensions from
-EclipseLink or you cannot put JDBC driver JAR files in
-domain-dir`/lib/ext`, set the `eclipselink.target-database` property to
-the value `org.eclipse.persistence.platform.database.OraclePlatform`.
-For more information about the `eclipselink.target-database` property,
-see link:#gbwmj[Specifying the Database for an Application].
-
-[[ghdtr]][[GSDVG00391]][[extended-persistence-context]]
-
-Extended Persistence Context
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The Java Persistence API specification does not specify how the
-container and persistence provider should work together to serialize an
-extended persistence context. This also prevents successful
-serialization of a reference to an extended persistence context in a
-stateful session bean.
-
-Even in a single-instance environment, if a stateful session bean is
-passivated, its extended persistence context could be lost when the
-stateful session bean is activated.
-
-Therefore, in GlassFish Server, a stateful session bean with an extended
-persistence context is never passivated and cannot be failed over.
-
-[[gezxw]][[GSDVG00392]][[using-orderby-with-a-shared-session-cache]]
-
-Using @OrderBy with a Shared Session Cache
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Setting `@OrderBy` on a `ManyToMany` or `OneToMany` relationship field
-in which a `List` represents the Many side doesn't work if the session
-cache is shared. Use one of the following workarounds:
-
-* Have the application maintain the order so the `List` is cached
-properly.
-* Refresh the session cache using `EntityManager.refresh()` if you don't
-want to maintain the order during creation or modification of the
-`List`.
-* Disable session cache sharing in `persistence.xml` as follows: +
-[source,oac_no_warn]
-----
-<property name="eclipselink.cache.shared.default" value="false"/>
-----
-
-[[gdwqi]][[GSDVG00393]][[using-blob-or-clob-types-with-the-inet-oraxo-jdbc-driver]]
-
-Using BLOB or CLOB Types with the Inet Oraxo JDBC Driver
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To use BLOB or CLOB data types larger than 4 KB for persistence using
-the Inet Oraxo JDBC Driver for Oracle Databases, you must set the
-database's `streamstolob` property value to `true`.
-
-[[geqvh]][[GSDVG00394]][[database-case-sensitivity]]
-
-Database Case Sensitivity
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Mapping references to column or table names must be in accordance with
-the expected column or table name case, and ensuring this is the
-programmer's responsibility. If column or table names are not explicitly
-specified for a field or entity, the GlassFish Server uses upper case
-column names by default, so any mapping references to the column or
-table names must be in upper case. If column or table names are
-explicitly specified, the case of all mapping references to the column
-or table names must be in accordance with the case used in the specified
-names.
-
-The following are examples of how case sensitivity affects mapping
-elements that refer to columns or tables. Keep case sensitivity in mind
-when writing these mappings.
-
-[[geqvc]][[GSDVG00246]][[unique-constraints]]
-
-Unique Constraints
-++++++++++++++++++
-
-If column names are not explicitly specified on a field, unique
-constraints and foreign key mappings must be specified using uppercase
-references. For example:
-
-[source,oac_no_warn]
-----
-@Table(name="Department", uniqueConstraints={ @UniqueConstraint ( columnNames= { "DEPTNAME" } ) } )
-----
-
-The other way to handle this is by specifying explicit column names for
-each field with the required case. For example:
-
-[source,oac_no_warn]
-----
-@Table(name="Department", uniqueConstraints={ @UniqueConstraint ( columnNames= { "deptName" } ) } )
-public class Department{ @Column(name="deptName") private String deptName; }
-----
-
-Otherwise, the `ALTER TABLE` statement generated by the GlassFish Server
-uses the incorrect case, and the creation of the unique constraint
-fails.
-
-[[geqvk]][[GSDVG00247]][[foreign-key-mapping]]
-
-Foreign Key Mapping
-+++++++++++++++++++
-
-Use `@OneToMany(mappedBy="COMPANY")` or specify an explicit column name
-for the `Company` field on the `Many` side of the relationship.
-
-[[geqvi]][[GSDVG00248]][[sql-result-set-mapping]]
-
-SQL Result Set Mapping
-++++++++++++++++++++++
-
-Use the following elements:
-
-[source,oac_no_warn]
-----
-<sql-result-set-mapping name="SRSMName">
-   <entity-result entity-class="entities.someEntity" />
-   <column-result name="UPPERCASECOLUMNNAME" />
-</sql-result-set-mapping>
-----
-
-Or specify an explicit column name for the `upperCaseColumnName` field.
-
-[[geqvo]][[GSDVG00249]][[named-native-queries-and-jdbc-queries]]
-
-Named Native Queries and JDBC Queries
-+++++++++++++++++++++++++++++++++++++
-
-Column or table names specified in SQL queries must be in accordance
-with the expected case. For example, MySQL requires column names in the
-`SELECT` clause of JDBC queries to be uppercase, while PostgreSQL and
-Sybase require table names to be uppercase in all JDBC queries.
-
-[[geqxc]][[GSDVG00250]][[postgresql-case-sensitivity]]
-
-PostgreSQL Case Sensitivity
-+++++++++++++++++++++++++++
-
-PostgreSQL stores column and table names in lower case. JDBC queries on
-PostgreSQL retrieve column or table names in lowercase unless the names
-are quoted. For example:
-
-[source,oac_no_warn]
-----
-use aliases Select m.ID AS \"ID\" from Department m
-----
-
-Use the backslash as an escape character in the class file, but not in
-the `persistence.xml` file.
-
-[[gbxjg]][[GSDVG00395]][[sybase-finder-limitation]]
-
-Sybase Finder Limitation
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-If a finder method with an input greater than 255 characters is executed
-and the primary key column is mapped to a VARCHAR column, Sybase
-attempts to convert type VARCHAR to type TEXT and generates the
-following error:
-
-[source,oac_no_warn]
-----
-com.sybase.jdbc2.jdbc.SybSQLException: Implicit conversion from datatype 
-'TEXT' to 'VARCHAR' is not allowed. Use the CONVERT function to run this query.
-----
-
-To avoid this error, make sure the finder method input is less than 255
-characters.
-
-[[gbxjp]][[GSDVG00396]][[mysql-database-restrictions]]
-
-MySQL Database Restrictions
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The following restrictions apply when you use a MySQL database with the
-GlassFish Server for persistence.
-
-* MySQL treats `int1` and `int2` as reserved words. If you want to
-define `int1` and `int2` as fields in your table, use `\`int1\`` and
-`\`int2\`` field names in your SQL file.
-* When `VARCHAR` fields get truncated, a warning is displayed instead of
-an error. To get an error message, start the MySQL database in strict
-SQL mode.
-* The order of fields in a foreign key index must match the order in the
-explicitly created index on the primary table.
-* The `CREATE TABLE` syntax in the SQL file must end with the following
-line. +
-[source,oac_no_warn]
-----
-)  Engine=InnoDB;
-----
-`InnoDB` provides MySQL with a transaction-safe (ACID compliant) storage
-engine having commit, rollback, and crash recovery capabilities.
-* For a `FLOAT` type field, the correct precision must be defined. By
-default, MySQL uses four bytes to store a `FLOAT` type that does not
-have an explicit precision definition. For example, this causes a number
-such as 12345.67890123 to be rounded off to 12345.7 during an `INSERT`.
-To prevent this, specify `FLOAT(10,2)` in the DDL file, which forces the
-database to use an eight-byte double-precision column. For more
-information, see `http://dev.mysql.com/doc/mysql/en/numeric-types.html`.
-* To use `||` as the string concatenation symbol, start the MySQL server
-with the `--sql-mode="PIPES_AS_CONCAT"` option. For more information,
-see `http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html` and
-`http://dev.mysql.com/doc/mysql/en/ansi-mode.html`.
-* MySQL always starts a new connection when `autoCommit==true` is set.
-This ensures that each SQL statement forms a single transaction on its
-own. If you try to rollback or commit an SQL statement, you get an error
-message. +
-[source,oac_no_warn]
-----
-javax.transaction.SystemException: java.sql.SQLException: 
-Can't call rollback when autocommit=true
-
-javax.transaction.SystemException: java.sql.SQLException: 
-Error open transaction is not closed
-----
-To resolve this issue, add `relaxAutoCommit=true` to the JDBC URL. For
-more information, see `http://forums.mysql.com/read.php?39,31326,31404`.
-* MySQL does not allow a `DELETE` on a row that contains a reference to
-itself. Here is an example that illustrates the issue. +
-[source,oac_no_warn]
-----
-create table EMPLOYEE (
-        empId   int         NOT NULL,
-        salary  float(25,2) NULL,
-        mgrId   int         NULL,
-        PRIMARY KEY (empId),
-        FOREIGN KEY (mgrId) REFERENCES EMPLOYEE (empId)
-        ) ENGINE=InnoDB;
-
-        insert into Employee values (1, 1234.34, 1);
-        delete from Employee where empId = 1;
-----
-This example fails with the following error message. +
-[source,oac_no_warn]
-----
-ERROR 1217 (23000): Cannot delete or update a parent row: 
-a foreign key constraint fails
-----
-To resolve this issue, change the table creation script to the
-following: +
-[source,oac_no_warn]
-----
-create table EMPLOYEE (
-        empId   int         NOT NULL,
-        salary  float(25,2) NULL,
-        mgrId   int         NULL,
-        PRIMARY KEY (empId),
-        FOREIGN KEY (mgrId) REFERENCES EMPLOYEE (empId)
-        ON DELETE SET NULL
-        ) ENGINE=InnoDB;
-
-        insert into Employee values (1, 1234.34, 1);
-        delete from Employee where empId = 1;
-----
-This can be done only if the foreign key field is allowed to be null.
-For more information, see
-`http://dev.mysql.com/doc/mysql/en/innodb-foreign-key-constraints.html`.
-
-
diff --git a/docs/application-development-guide/src/main/jbake/content/lifecycle-listeners.adoc b/docs/application-development-guide/src/main/jbake/content/lifecycle-listeners.adoc
deleted file mode 100644
index ca750cd..0000000
--- a/docs/application-development-guide/src/main/jbake/content/lifecycle-listeners.adoc
+++ /dev/null
@@ -1,190 +0,0 @@
-type=page
-status=published
-title=Developing Lifecycle Listeners
-next=osgi.html
-prev=connectors.html
-~~~~~~
-Developing Lifecycle Listeners
-==============================
-
-[[GSDVG00014]][[beamc]]
-
-
-[[developing-lifecycle-listeners]]
-12 Developing Lifecycle Listeners
----------------------------------
-
-Lifecycle listener modules provide a means of running short or long
-duration Java-based tasks within the Oracle GlassFish Server
-environment, such as instantiation of singletons or RMI servers. These
-modules are automatically initiated at server startup and are notified
-at various phases of the server life cycle.
-
-
-[NOTE]
-=======================================================================
-
-Lifecycle listener modules are deprecated. Support for them is included
-for backward compatibility. Implementing the org.glassfish.api.Startup
-interface instead is recommended.
-
-=======================================================================
-
-
-All lifecycle module classes and interfaces are in the
-as-install`/modules/``glassfish-api.jar` file.
-
-For Javadoc tool pages relevant to lifecycle modules, see the
-`com.sun.appserv.server` package.
-
-The following topics are addressed here:
-
-* link:#beamd[Server Life Cycle Events]
-* link:#beame[The LifecycleListener Interface]
-* link:#beamf[The `LifecycleEvent` Class]
-* link:#beamg[The Server Lifecycle Event Context]
-* link:#beamh[Deploying a Lifecycle Module]
-* link:#beami[Considerations for Lifecycle Modules]
-
-[[beamd]][[GSDVG00167]][[server-life-cycle-events]]
-
-Server Life Cycle Events
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-A lifecycle module listens for and performs its tasks in response to the
-following events in the server life cycle:
-
-* After the `INIT_EVENT`, the server reads the configuration,
-initializes built-in subsystems (such as security and logging services),
-and creates the containers.
-* After the `STARTUP_EVENT`, the server loads and initializes deployed
-applications.
-* After the `READY_EVENT`, the server is ready to service requests.
-* After the `SHUTDOWN_EVENT`, the server destroys loaded applications
-and stops.
-* After the `TERMINATION_EVENT`, the server closes the containers, the
-built-in subsystems, and the server runtime environment.
-
-These events are defined in the `LifecycleEvent` class.
-
-The lifecycle modules that listen for these events implement the
-LifecycleListener interface.
-
-[[beame]][[GSDVG00168]][[the-lifecyclelistener-interface]]
-
-The LifecycleListener Interface
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-To create a lifecycle module is to configure a customized class that
-implements the com.sun.appserv.server.LifecycleListener interface. You
-can create and simultaneously execute multiple lifecycle modules.
-
-The LifecycleListener interface defines this method:
-
-[source,oac_no_warn]
-----
-public void handleEvent(com.sun.appserv.server.LifecycleEvent event) 
-throws ServerLifecycleException
-----
-
-This method responds to a lifecycle event and throws a
-`com.sun.appserv.server.ServerLifecycleException` if an error occurs.
-
-A sample implementation of the LifecycleListener interface is the
-`LifecycleListenerImpl.java` file, which you can use for testing
-lifecycle events.
-
-[[beamf]][[GSDVG00169]][[the-lifecycleevent-class]]
-
-The `LifecycleEvent` Class
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The `com.sun.appserv.server.LifecycleEvent` class defines a server life
-cycle event. The following methods are associated with the event:
-
-* `public java.lang.Object.getData()` +
-This method returns an instance of `java.util.Properties` that contains
-the properties defined for the lifecycle module.
-* `public int getEventType()` +
-This method returns the type of the last event, which is `INIT_EVENT`,
-`STARTUP_EVENT`, `READY_EVENT`, `SHUTDOWN_EVENT`, or
-`TERMINATION_EVENT`.
-* `public com.sun.appserv.server.LifecycleEventContext.getLifecycleEventContext()` +
-This method returns the lifecycle event context, described next.
-
-A `LifecycleEvent` instance is passed to the
-`LifecycleListener.handleEvent` method.
-
-[[beamg]][[GSDVG00170]][[the-server-lifecycle-event-context]]
-
-The Server Lifecycle Event Context
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The com.sun.appserv.server.LifecycleEventContext interface exposes
-runtime information about the server. The lifecycle event context is
-created when the `LifecycleEvent` class is instantiated at server
-initialization. The LifecycleEventContext interface defines these
-methods:
-
-* `public java.lang.String[].getCmdLineArgs()` +
-This method returns the server startup command-line arguments.
-* `public java.lang.String.getInstallRoot()` +
-This method returns the server installation root directory.
-* `public java.lang.String.getInstanceName()` +
-This method returns the server instance name.
-* `public javax.naming.InitialContext.getInitialContext()` +
-This method returns the initial JNDI naming context. The naming
-environment for lifecycle modules is installed after the
-`STARTUP_EVENT`. A lifecycle module can look up any resource by its
-`jndi-name` attribute after the `READY_EVENT`.
-
-If a lifecycle module needs to look up resources, it can do so after the
-`READY_EVENT`. It can use the `getInitialContext` method to get the
-initial context to which all the resources are bound.
-
-[[beamh]][[GSDVG00171]][[deploying-a-lifecycle-module]]
-
-Deploying a Lifecycle Module
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-For instructions on how to deploy a lifecycle module, see the
-link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition Application Deployment
-Guide], or see the `asadmin create-lifecycle-module` command in the
-link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-
-You do not need to specify a classpath for the lifecycle module if you
-place it in the domain-dir`/lib` or domain-dir`/lib/classes` directory
-for the Domain Administration Server. Do not place it in the lib
-directory for a particular instance, or it will be deleted when that
-instance synchronizes with the Domain Administration Server.
-
-[[beami]][[GSDVG00172]][[considerations-for-lifecycle-modules]]
-
-Considerations for Lifecycle Modules
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The resources allocated at initialization or startup should be freed at
-shutdown or termination. The lifecycle module classes are called
-synchronously from the main server thread, therefore it is important to
-ensure that these classes don't block the server. Lifecycle modules can
-create threads if appropriate, but these threads must be stopped in the
-shutdown and termination phases.
-
-The LifeCycleModule class loader is the parent class loader for
-lifecycle modules. Each lifecycle module's classpath is used to
-construct its class loader. All the support classes needed by a
-lifecycle module must be available to the LifeCycleModule class loader
-or its parent, the Connector class loader.
-
-You must ensure that the `server.policy` file is appropriately set up,
-or a lifecycle module trying to perform a `System.exec()` might cause a
-security access violation. For details, see
-link:securing-apps.html#beabx[The `server.policy` File].
-
-The configured properties for a lifecycle module are passed as
-properties after the `INIT_EVENT`. The JNDI naming context is not
-available before the `STARTUP_EVENT`. If a lifecycle module requires the
-naming context, it can get this after the `STARTUP_EVENT`,
-`READY_EVENT`, or `SHUTDOWN_EVENT`.
-
-
diff --git a/docs/application-development-guide/src/main/jbake/content/loe.adoc b/docs/application-development-guide/src/main/jbake/content/loe.adoc
deleted file mode 100644
index abd7b27..0000000
--- a/docs/application-development-guide/src/main/jbake/content/loe.adoc
+++ /dev/null
@@ -1,16 +0,0 @@
-type=page
-status=published
-title=List of Examples
-next=lot.html
-prev=toc.html
-~~~~~~
-List of Examples
-================
-
-[[list-of-examples]]
-List of Examples
-----------------
-
-* link:osgi.html#gkvbk[13-1 Example of a WAB Using CDI]
-
-
diff --git a/docs/application-development-guide/src/main/jbake/content/lot.adoc b/docs/application-development-guide/src/main/jbake/content/lot.adoc
deleted file mode 100644
index 0bdbb91..0000000
--- a/docs/application-development-guide/src/main/jbake/content/lot.adoc
+++ /dev/null
@@ -1,45 +0,0 @@
-type=page
-status=published
-title=List of Tables
-next=title.html
-prev=loe.html
-~~~~~~
-List of Tables
-==============
-
-[[list-of-tables]]
-List of Tables
---------------
-
-* link:class-loaders.html#fvxzq[2-1 Oracle GlassFish Server Class
-Loaders]
-* link:securing-apps.html#sthref6[4-1 Predefined System Properties]
-* link:securing-apps.html#sthref8[4-2 Message Security Provider
-Properties]
-* link:jpa.html#gbwlr[6-1 The asadmin deploy and asadmin deploydir
-Generation Options]
-* link:jpa.html#gbwmm[6-2 The asadmin undeploy Generation Options]
-* link:webapps.html#fvygg[7-1 The cache Attributes]
-* link:webapps.html#fvyep[7-2 The flush Attributes]
-* link:webapps.html#fvyem[7-3 Object Types Supported for Java EE Web
-Application Session State Failover]
-* link:webapps.html#gheoy[7-4 SSIServlet init-param Values]
-* link:webapps.html#ghern[7-5 CGIServlet init-param Values]
-* link:ejb.html#fvyed[8-1 Object Types Supported for Java EE Stateful
-Session Bean State Failover]
-* link:container_managed-persistence.html#fvyaq[9-1 Java Type to JDBC
-Type Mappings for CMP]
-* link:container_managed-persistence.html#fvymp[9-2 Mappings of JDBC
-Types to Database Vendor Specific Types for CMP]
-* link:container_managed-persistence.html#fvymo[9-3 The
-glassfish-ejb-jar.xml Generation Elements]
-* link:container_managed-persistence.html#fvymn[9-4 The asadmin deploy
-and asadmin deploydir Generation Options for CMP]
-* link:container_managed-persistence.html#fvymt[9-5 The asadmin undeploy
-Generation Options for CMP]
-* link:java-clients.html#gkmbk[10-1 Owned JNLP File Content]
-* link:java-clients.html#gkmci[10-2 Defaulted JNLP File Content]
-* link:java-clients.html#gkmcc[10-3 Merged JNLP File Content]
-* link:transaction-service.html#fvyoi[15-1 Transaction Isolation Levels]
-
-
diff --git a/docs/application-development-guide/src/main/jbake/content/mail.adoc b/docs/application-development-guide/src/main/jbake/content/mail.adoc
deleted file mode 100644
index a4781c2..0000000
--- a/docs/application-development-guide/src/main/jbake/content/mail.adoc
+++ /dev/null
@@ -1,247 +0,0 @@
-type=page
-status=published
-title=Using the Jakarta Mail API
-prev=jms.html
-~~~~~~
-Using the Jakarta Mail API
-==========================
-
-[[GSDVG00021]][[beaow]]
-
-
-[[using-the-jakarta-mail-api]]
-18 Using the Jakarta Mail API
------------------------------
-
-This chapter describes how to use the Jakarta Mail API, which provides a set
-of abstract classes defining objects that comprise a mail system.
-
-The following topics are addressed here:
-
-* link:#beaox[Introducing Jakarta Mail]
-* link:#beaoy[Creating a Jakarta Mail Session]
-* link:#beaoz[Jakarta Mail Session Properties]
-* link:#beapa[Looking Up a Jakarta Mail Session]
-* link:#fwfiy[Sending and Reading Messages Using Jakarta Mail]
-* link:#gkpfg[Using Application-Scoped Jakarta Mail Resources]
-
-
-[NOTE]
-=======================================================================
-
-Jakarta Mail resources are supported only in the full Eclipse GlassFish
-Server, not in the Web Profile.
-
-=======================================================================
-
-
-[[beaox]][[GSDVG00200]][[introducing-jakarta-mail]]
-
-Introducing Jakarta Mail
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-The Jakarta Mail API defines classes such as `Message`, `Store`, and
-`Transport`. The API can be extended and can be subclassed to provide
-new protocols and to add functionality when necessary. In addition, the
-API provides concrete subclasses of the abstract classes. These
-subclasses, including `MimeMessage` and `MimeBodyPart`, implement widely
-used Internet mail protocols and conform to the RFC822 and RFC2045
-specifications. The Jakarta Mail API includes support for the IMAP4, POP3,
-and SMTP protocols.
-
-The Jakarta Mail architectural components are as follows:
-
-* The abstract layer declares classes, interfaces, and abstract methods
-intended to support mail handling functions that all mail systems
-support.
-* The internet implementation layer implements part of the abstract
-layer using the RFC822 and MIME internet standards.
-* Jakarta Mail uses the JavaBeans Activation Framework (JAF) to encapsulate
-message data and to handle commands intended to interact with that data.
-
-For more information, see
-"link:../administration-guide/mail.html#GSADG00019[Administering the Jakarta Mail Service]"
-in GlassFish Server Administration Guide
-and the Jakarta Mail specification at
-`https://jakarta.ee/specifications/mail`.
-
-[[beaoy]][[GSDVG00201]][[creating-a-jakarta-mail-session]]
-
-Creating a Jakarta Mail Session
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can create a Jakarta Mail session in the following ways:
-
-* In the Administration Console, open the Resources component and select
-Jakarta Mail Sessions. For details, click the Help button in the
-Administration Console.
-* Use the `asadmin create-mail-resource` command. For details, see
-the link:../reference-manual/toc.html#GSRFM[GlassFish Server Reference Manual].
-
-[[beaoz]][[GSDVG00202]][[jakarta-mail-session-properties]]
-
-Jakarta Mail Session Properties
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can set properties for a Jakarta Mail `Session` object. Every property
-name must start with a `mail-` prefix. The GlassFish Server changes the
-dash (`-`) character to a period (`.`) in the name of the property and
-saves the property to the `MailConfiguration` and Jakarta Mail `Session`
-objects. If the name of the property doesn't start with `mail-`, the
-property is ignored.
-
-For example, if you want to define the property `mail.from` in a
-Jakarta Mail `Session` object, first define the property as follows:
-
-* Name - `mail-from`
-* Value - `john.doe@sun.com`
-
-[[beapa]][[GSDVG00203]][[looking-up-a-jakarta-mail-session]]
-
-Looking Up a Jakarta Mail Session
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The standard Java Naming and Directory Interface (JNDI) subcontext for
-Jakarta Mail sessions is `java:comp/env/mail`.
-
-Registering Jakarta Mail sessions in the `mail` naming subcontext of a JNDI
-namespace, or in one of its child subcontexts, is standard. The JNDI
-namespace is hierarchical, like a file system's directory structure, so
-it is easy to find and nest references. A Jakarta Mail session is bound to a
-logical JNDI name. The name identifies a subcontext, `mail`, of the root
-context, and a logical name. To change the Jakarta Mail session, you can
-change its entry in the JNDI namespace without having to modify the
-application.
-
-The resource lookup in the application code looks like this:
-
-[source,oac_no_warn]
-----
-InitialContext ic = new InitialContext();
-String snName = "java:comp/env/mail/MyMailSession";
-Session session = (Session)ic.lookup(snName);
-----
-
-For more information about the JNDI API, see link:jndi.html#beanr[Using
-the Java Naming and Directory Interface].
-
-[[fwfiy]][[GSDVG00204]][[sending-and-reading-messages-using-jakarta-mail]]
-
-Sending and Reading Messages Using Jakarta Mail
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following topics are addressed here:
-
-* link:#beapb[To Send a Message Using Jakarta Mail]
-* link:#beapc[To Read a Message Using Jakarta Mail]
-
-[[beapb]][[GSDVG00079]][[to-send-a-message-using-jakarta-mail]]
-
-To Send a Message Using Jakarta Mail
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-1.  Import the packages that you need. +
-[source,oac_no_warn]
-----
-import java.util.*;
-import jakarta.activation.*;
-import jakarta.mail.*;
-import jakarta.mail.internet.*;
-import javax.naming.*;
-----
-2.  Look up the Jakarta Mail session. +
-[source,oac_no_warn]
-----
-InitialContext ic = new InitialContext();
-String snName = "java:comp/env/mail/MyMailSession";
-Session session = (Session)ic.lookup(snName);
-----
-For more information, see link:#beapa[Looking Up a Jakarta Mail Session].
-3.  Override the Jakarta Mail session properties if necessary. +
-For example: +
-[source,oac_no_warn]
-----
-Properties props = session.getProperties();
-props.put("mail.from", "user2@mailserver.com");
-----
-4.  Create a `MimeMessage`. +
-The msgRecipient, msgSubject, and msgTxt variables in the following
-example contain input from the user: +
-[source,oac_no_warn]
-----
-Message msg = new MimeMessage(session);
-msg.setSubject(msgSubject);
-msg.setSentDate(new Date());
-msg.setFrom();
-msg.setRecipients(Message.RecipientType.TO, 
-   InternetAddress.parse(msgRecipient, false));
-msg.setText(msgTxt);
-----
-5.  Send the message. +
-[source,oac_no_warn]
-----
-Transport.send(msg);
-----
-
-[[beapc]][[GSDVG00080]][[to-read-a-message-using-jakarta-mail]]
-
-To Read a Message Using Jakarta Mail
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-1.  Import the packages that you need. +
-[source,oac_no_warn]
-----
-import java.util.*;
-import jakarta.activation.*;
-import jakarta.mail.*;
-import jakarta.mail.internet.*;
-import javax.naming.*;
-----
-2.  Look up the Jakarta Mail session. +
-[source,oac_no_warn]
-----
-InitialContext ic = new InitialContext();
-String snName = "java:comp/env/mail/MyMailSession";
-Session session = (jakarta.mail.Session)ic.lookup(snName);
-----
-For more information, see link:#beapa[Looking Up a Jakarta Mail Session].
-3.  Override the Jakarta Mail session properties if necessary. +
-For example: +
-[source,oac_no_warn]
-----
-Properties props = session.getProperties();
-props.put("mail.from", "user2@mailserver.com");
-----
-4.  Get a `Store` object from the `Session`, then connect to the mail
-server using the Store object's `connect` method. +
-You must supply a mail server name, a mail user name, and a password. +
-[source,oac_no_warn]
-----
-Store store = session.getStore();
-store.connect("MailServer", "MailUser", "secret");
-----
-5.  Get the INBOX folder. +
-[source,oac_no_warn]
-----
-Folder folder = store.getFolder("INBOX");
-----
-6.  It is efficient to read the `Message` objects (which represent
-messages on the server) into an array. +
-[source,oac_no_warn]
-----
-Message[] messages = folder.getMessages();
-----
-
-[[gkpfg]][[GSDVG00205]][[using-application-scoped-jakarta-mail-resources]]
-
-Using Application-Scoped Jakarta Mail Resources
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can define an application-scoped Jakarta Mail or other resource for an
-enterprise application, web module, EJB module, connector module, or
-application client module by supplying a `glassfish-resources.xml`
-deployment descriptor file. For details, see
-"link:../application-deployment-guide/deploying-applications.html#GSDPG00075[Application-Scoped Resources]" in GlassFish Server
-Open Source Edition Application Deployment Guide.
-
-
diff --git a/docs/application-development-guide/src/main/jbake/content/osgi.adoc b/docs/application-development-guide/src/main/jbake/content/osgi.adoc
deleted file mode 100644
index 8d40538..0000000
--- a/docs/application-development-guide/src/main/jbake/content/osgi.adoc
+++ /dev/null
@@ -1,575 +0,0 @@
-type=page
-status=published
-title=Developing OSGi-enabled Java EE Applications
-next=part-services-and-apis.html
-prev=lifecycle-listeners.html
-~~~~~~
-Developing OSGi-enabled Java EE Applications
-============================================
-
-[[GSDVG00015]][[gkpch]]
-
-
-[[developing-osgi-enabled-java-ee-applications]]
-13 Developing OSGi-enabled Java EE Applications
------------------------------------------------
-
-This chapter describes the features and interfaces that GlassFish Server
-provides to develop OSGi-enabled enterprise applications. This chapter
-includes the following sections:
-
-* link:#gkpay[Overview of OSGi Application and GlassFish Server]
-* link:#gkqff[Developing OSGi Application Bundles for GlassFish Server]
-* link:#gkveh[Deploying OSGi Bundles in GlassFish Server]
-
-
-[NOTE]
-=======================================================================
-
-Many of the features and interfaces presented in this chapter are
-demonstrated in samples and video clips available from the OSGi section
-of the GlassFish Server wiki. See
-`http://wikis.sun.com/display/GlassFish/Osgi` for more information.
-
-=======================================================================
-
-
-[[gkpay]][[GSDVG00173]][[overview-of-osgi-application-and-glassfish-server]]
-
-Overview of OSGi Application and GlassFish Server
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-GlassFish Server is fully-compliant with Java EE 8, so it provides the
-latest Java EE APIs and frameworks. It is built using OSGi technology,
-and includes as its OSGi module management subsystem the
-http://felix.apache.org[Apache Felix OSGi framework]
-(`http://felix.apache.org`), which is a fully-compliant implementation
-of the OSGi Service Platform R4 Version 4.3 specification. GlassFish
-Server supports deployment of OSGi-based applications using this
-framework. OSGi applications can make use of core as well as enterprise
-OSGi features. GlassFish Server makes available many of its Java EE
-platform services, such as the transaction service, HTTP service, JDBC
-Service and JMS, as OSGi services. It also enables use of Java EE
-programming model in OSGi applications, so enterprise Java application
-developers can continue to leverage their existing skills in OSGi-based
-applications. See link:#glhek[Benefits of Using OSGi in Enterprise Java
-Applications] for more information.
-
-OSGi applications are deployed as one or more OSGi bundles, and the
-GlassFish Server deployment and administration infrastructure enables
-you to deploy and manage your OSGi bundles. This chapter classifies OSGi
-bundles into two categories based on the features they use:
-
-* Plain OSGi Application Bundles - bundles that do not contain any Java
-EE components. See link:#gkupd[Developing Plain OSGi Bundles].
-* Hybrid Application Bundles - bundles that are an OSGi bundle as wells
-as a Java EE module. At runtime, such modules have both an OSGi bundle
-context and a Java EE context. GlassFish Server supports the following
-hybrid application bundles:
-
-** Web Application Bundles (or WABs) , see link:#gkunr[Developing Web
-Application Bundles].
-
-** EJB Application Bundles, see link:#gkunh[Developing EJB Application
-Bundles].
-
-[[glhek]][[GSDVG00488]][[benefits-of-using-osgi-in-enterprise-java-applications]]
-
-Benefits of Using OSGi in Enterprise Java Applications
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Enterprise applications typically need transactional, secured access to
-data stores, messaging systems and other such enterprise information
-systems, and have to cater to a wide variety of clients such as web
-browsers and desktop applications, and so on. Java EE makes development
-of such applications easier with a rich set of APIs and frameworks. It
-also provides a scalable, reliable and easy to administer runtime to
-host such applications.
-
-The OSGi platform complements these features with modularity. It enables
-applications to be separated into smaller, reusable modules with a well
-defined and robust dependency specification. A module explicitly
-specifies its capabilities and requirements. This explicit dependency
-specification encourages developers to visualize dependencies among
-their modules and help them make their modules highly cohesive and less
-coupled. The OSGi module system is dynamic: it allows modules to be
-added and removed at runtime. OSGi has very good support for versioning:
-it supports package versioning as well module versioning. In fact, it
-allows multiple versions of the same package to coexist in the same
-runtime, thus allowing greater flexibility to deployers. The service
-layer of the OSGi platform encourages a more service-oriented approach
-to build a system. The service-oriented approach and dynamic module
-system used together allow a system to be more agile during development
-as well as in production. It makes them better suited to run in an
-Platform-as-a-Service (PaaS) environment.
-
-With GlassFish Server, you do not have to chose one of the two
-platforms. A hybrid approach like OSGi enabling your Java EE
-applications allows new capabilities to applications hitherto
-unavailable to applications built using just one of the two platforms.
-
-[[gkqff]][[GSDVG00174]][[developing-osgi-application-bundles-for-glassfish-server]]
-
-Developing OSGi Application Bundles for GlassFish Server
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-GlassFish Server enables interaction between OSGi components and Java EE
-components. OSGi services managed by the OSGi framework can invoke Java
-EE components managed by the Java EE container and vice versa. For
-example, developers can declaratively export EJBs as OSGi services
-without having to write any OSGi code. This allows any plain OSGi
-component, which is running without the Java EE context, to discover the
-EJB and invoke it. Similarly, Java EE components can locate OSGi
-services provided by plain OSGi bundles and use them as well. GlassFish
-Server extends the Java EE Context and Dependency Injection (CDI)
-framework to make it easier for Java EE components to consume dynamic
-OSGi services in a type-safe manner.
-
-* link:#gkupd[Developing Plain OSGi Bundles]
-* link:#gkunr[Developing Web Application Bundles]
-* link:#gkunh[Developing EJB Application Bundles]
-
-[[gkupd]][[GSDVG00489]][[developing-plain-osgi-bundles]]
-
-Developing Plain OSGi Bundles
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Java EE components (like an EJB or Servlet) can look up Java EE platform
-services using JNDI names in the associated Java EE naming context. Such
-code can rely on the Java EE container to inject the required services
-as well. Unfortunately, neither of them works when the code runs outside
-a Java EE context. An example of such code is the `BundleActivator` of
-an OSGi bundle. For such code to access Java EE platform services,
-GlassFish Server makes key services and resources of the underlying Java
-EE platform available as OSGi services. Thus, an OSGi bundle deployed in
-GlassFish Server can access these services using OSGi Service look-up
-APIs or by using a white board pattern. The following Java EE services
-are available as OSGi services:
-
-* link:#gkunk[HTTP Service]
-* link:#gkunn[Transaction Service]
-* link:#gkuof[JDBC Data Source Service]
-* link:#gkuoq[JMS Resource Service]
-
-[[gkunk]][[GSDVG00319]][[http-service]]
-
-HTTP Service
-++++++++++++
-
-The GlassFish Server web container is made available as a service for
-OSGi users who do not use OSGi Web Application Bundles (WABs). This
-service is made available using the standard OSGi/HTTP service
-specification, which is a light API that predates the concept of a web
-application as we know it today. This simple API allows users to
-register servlets and static resources dynamically and draw a boundary
-around them in the form of a `HttpContext`. This simple API can be used
-to build feature-rich web application, such as the Felix Web Console for
-example.
-
-The GlassFish Server web container has one or more virtual servers. A
-virtual server has one or more web application deployed in it. Each web
-application has a distinct context path. Each virtual server has a set
-of HTTP listeners. Each HTTP listener listens on a particular port. When
-multiple virtual servers are present, one of them is treated as the
-default virtual server. Every virtual server comes configured with a
-default web application. The default web application is used to serve
-static content from the `docroot` of GlassFish Server. This default web
-application uses `/` as the context path. A web application contains
-static and dynamic resources. Each virtual server is mapped to an
-`org.osgi.services.http.HttpService` instance. When there are multiple
-virtual servers present, there will be multiple occurrences of
-`HttpService` registered in the service registry. In order to
-distinguish one service from another, each service is registered with a
-service property named `VirtualServer`, whose value is the name of the
-virtual server. The service corresponding to default virtual server has
-the highest ranking, so when looking up a service of type `HttpService`
-without any additional criteria returns the `HttpService` corresponding
-to the default virtual server. In a typical GlassFish Server
-installation, the default virtual server is configured to listen on port
-8080 for the HTTP protocol and port 8181 for the HTTPS protocol.
-
-The context path `/` is reserved for the default web application. Every
-resource and servlet registered using the `registerResource()` and
-`registerServlet()` methods of `HttpService` are made available under a
-special context path named `/osgi` in the virtual server. The `/osgi`
-context path can be changed to some other value by setting an
-appropriate value in the OSGi configuration property or in a system
-property called `org.glassfish.osgihttp.ContextPath`.
-
-For example, HelloWorldServlet will be available at
-`http://localhost:8080/osgi/helloworld` when the following code is
-executed:
-
-[source,oac_no_warn]
-----
-
-HttpService httpService = getHttpService(); // Obtain HttpService
-httpService.registerServlet(httpService.registerServlet("/helloworld", 
-new HelloWorldServlet(), null, ctx);
-----
-
-[[gkunn]][[GSDVG00320]][[transaction-service]]
-
-Transaction Service
-+++++++++++++++++++
-
-The Java Transaction API (JTA) defines three interfaces to interact with
-the transaction management system: `UserTransaction`,
-`TransactionManager`, and `TransactionSynchronizationRegistry`. They all
-belong to the javax.transaction package. `TransactionManager`and
-`TransactionSynchronizationRegistry` are intended for system level code,
-such as a persistence provider. Whereas, `UserTransaction` is the entity
-that you should use to control transactions. All the objects of the
-underlying JTA layer are made available in the OSGi service registry
-using the following service interfaces:
-
-* `javax.transaction.UserTransaction`
-* `javax.transaction.TransactionManager`
-* `javax.transaction.TransactionSynchronisationRegistry`
-
-There is no additional service property associated with them. Although
-`UserTransaction` appears to be a singleton, in reality any call to it
-gets rerouted to the actual transaction associated with the calling
-thread. Code that runs in the context of a Java EE component typically
-gets a handle on `UserTransaction` by doing a JNDI lookup in the
-component naming context or by using injection, as shown here:
-
-[source,oac_no_warn]
-----
-(UserTransaction)(new InitialContext().lookup("java:comp/UserTransaction")); 
-----
-
-or
-
-[source,oac_no_warn]
-----
-@Resource UserTransaction utx;
-----
-
-When certain code (such as an OSGi Bundle Activator), which does not
-have a Java EE component context, wants to get hold of
-`UserTransaction`, or any of the other JTA artifacts, then they can look
-it up in the service registry. Here is an example of such code:
-
-[source,oac_no_warn]
-----
-
-BundleContext context;
-ServiceReference txRef =
-    context.getServiceReference(UserTransaction.class.getName());
-UserTransaction utx = (UserTransaction);
-context.getService(txRef);
-----
-
-[[gkuof]][[GSDVG00321]][[jdbc-data-source-service]]
-
-JDBC Data Source Service
-++++++++++++++++++++++++
-
-Any JDBC data source created in GlassFish Server is automatically made
-available as an OSGi Service; therefore, OSGi bundles can track
-availability of JDBC data sources using the `ServiceTracking` facility
-of the OSGi platform. The life of the OSGi service matches that of the
-underlying data source created in GlassFish Server. For instructions on
-administering JDBC resources in GlassFish Server, see the
-link:../administration-guide/toc.html#GSADG[GlassFish Server Open Source Edition Administration Guide].
-
-GlassFish Server registers each JDBC data source as an OSGi service with
-`objectClass = "javax.sql.DataSource"` and a service property called
-`jndi-name`, which is set to the JNDI name of the data source. Here is a
-code sample that looks up a data source service:
-
-[source,oac_no_warn]
-----
-  @Inject
-  @OSGiService(true,
-         "(jndi-name=jdbc/MyDS)") 
-  private DataSource ds;
-----
-
-[[gkuoq]][[GSDVG00322]][[jms-resource-service]]
-
-JMS Resource Service
-++++++++++++++++++++
-
-Like JDBC data sources, JMS administered objects, such as destinations
-and connection factories, are also automatically made available as OSGi
-services. Their service mappings are as follows.
-
-[width="100%",cols="12%,39%,12%,37%",options="header",]
-|=======================================================================
-|JMS Object |Service Interface |Service Properties |Comments
-|JMS Queue destination |`jakarta.jms.Queue` |`jndi-name` |`jndi-name` is
-set to the JNDI name of the queue
-
-|JMS Topic destination |`jakarta.jms.Topic` |`jndi-name` |`jndi-name` is
-set to the JNDI name of the topic
-
-|JMS connection factory |`jakarta.jms.QueueConnectionFactory` or
-`jakarta.jms.TopicConnectionFactory` or `jakarta.jms.ConnectionFactory`
-|`jndi-name` a|
-`jndi-name` is set to the JNDI name of the topic.
-
-The actual service interface depends on which type of connection factory
-was created.
-
-|=======================================================================
-
-
-[[gkunr]][[GSDVG00490]][[developing-web-application-bundles]]
-
-Developing Web Application Bundles
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-When a web application is packaged and deployed as an OSGi bundle, it is
-called a Web Application Bundle (WAB). WAB support is based on the OSGi
-Web Application specification , which is part of the OSGi Service
-Platform, Enterprise Specification, Release 4, Version 4.3. A WAB is
-packaged as an OSGi bundle, so all the OSGi packaging rules apply to WAB
-packaging. When a WAB is not packaged like a WAR, the OSGi Web Container
-of GlassFish Server maps the WAB to the hierarchical structure of web
-application using the following rules:
-
-* The root of the WAB corresponds to the `docroot` of the web
-application.
-* Every JAR in the Bundle-ClassPath of the WAB is treated like a JAR in
-`WEB-INF/lib/.`
-* Every directory except "." in Bundle-ClassPath of the WAB is treated
-like `WEB-INF/classes/.`
-* Bundle-ClassPath entry of type "." is treated as if the entire WAB is
-a JAR in `WEB-INF/lib/.`
-* Bundle-ClassPath includes the Bundle-ClassPath entries of any attached
-fragment bundles.
-
-The simplest way to avoid knowing these mapping rules is to avoid the
-problem in the first place. Moreover, there are many packaging tools and
-development time tools that understand WAR structure. Therefore, we
-strongly recommend that you package the WAB exactly like a WAR, with
-only additional OSGi metadata.
-
-[[gkvau]][[GSDVG00323]][[required-wab-metadata]]
-
-Required WAB Metadata
-+++++++++++++++++++++
-
-In addition to the standard OSGi metadata, the main attributes of
-`META-INF/MANIFEST.MF` of the WAB must have an additional attribute
-called `Web-ContextPath`. The `Web-ContextPath` attribute specifies the
-value of the context path of the web application. Since the root of a
-WAB is mapped to the `docroot` of the web application, it should not be
-used in the `Bundle-ClassPath`. Moreover, `WEB-INF/classes/` should be
-specified ahead of `WEB-INF/lib/` in the `Bundle-ClassPath` in order to
-be compliant with the search order used for traditional WAR files.
-
-Assuming the WAB is structured as follows:
-
-[source,oac_no_warn]
-----
-
-  foo.war/
-       index.html
-       foo.jsp
-       WEB-INF/classes/
-                      foo/BarServlet.class
-       WEB-INF/lib/lib1.jar
-       WEB-INF/lib/lib2.jar
-----
-
-Then the OSGi metadata for the WAB as specified in
-`META-INF/MANIFEST.MF` of the WAB would appear as follows:
-
-[source,oac_no_warn]
-----
-
-  MANIFEST.MF:Manifest-Version: 1.0 
-  Bundle-ManifestVersion: 2
-  Bundle-SymbolicName: com.acme.foo
-  Bundle-Version: 1.0
-  Bundle-Name: Foo Web Application Bundle Version 1.0
-  Import-Package: javax.servlet; javax.servlet.http, version=[3.0, 4.0, 5.0)
-  Bundle-ClassPath: WEB-INF/classes, WEB-INF/lib/lib1.jar, WEB-INF/lib/lib2.jar
-  Web-ContextPath: /foo
-----
-
-[[gkvat]][[GSDVG00324]][[how-wabs-consume-osgi-services]]
-
-How WABs Consume OSGi Services
-++++++++++++++++++++++++++++++
-
-Since a WAB has a valid `Bundle-Context`, it can consume OSGi services.
-Although you are free to use any OSGi API to locate OSGi services,
-GlassFish Server makes it easy for WAB users to use OSGi services by
-virtue of extending the Context and Dependency Injection (CDI)
-framework. Here's an example of the injection of an OSGi Service into a
-Servlet:
-
-[source,oac_no_warn]
-----
-
-  @WebServlet 
-  public class MyServlet extends HttpServlet {   
-    @Inject @OSGiService(dynamic=true)
-    FooService fooService; 
-  }
-----
-
-To learn more about this feature, refer to link:#gkvbi[OSGi CDI
-Extension for WABs].
-
-[[gkvbi]][[GSDVG00325]][[osgi-cdi-extension-for-wabs]]
-
-OSGi CDI Extension for WABs
-+++++++++++++++++++++++++++
-
-GlassFish Server includes a CDI extension that enables web applications,
-such as servlets, that are part of WABs to express a type-safe
-dependency on an OSGi service using CDI APIs. An OSGi service can be
-provided by any OSGi bundle without any knowledge of Java EE/CDI, and
-they are allowed to be injected transparently in a type-safe manner into
-a web application.
-
-A custom CDI Qualifier, `@org.glassfish.osgicdi.OSGiService`, is used by
-the component to represent dependency on an OSGi service. The qualifier
-has additional metadata to customize the service discovery and injection
-behavior. The following `@OsgiService` attributes are currently
-available:
-
-* `serviceCriteria` — An LDAP filter query used for service selection in
-the OSGi service registry.
-* `waitTimeout` — Waits the specified duration for a service that
-matches the criteria specified to appear in the OSGi service registry.
-* `dynamic` — Dynamically obtain a service reference (true/false). +
-Since OSGi services are dynamic, they may not match the life cycle of
-the application component that has injected a reference to the service.
-Through this attribute, you could indicate that a service reference can
-be obtained dynamically or not. For stateless or idempotent services, a
-dynamic reference to a service implementation would be useful. The
-container then injects a proxy to the service and dynamically switches
-to an available implementation when the current service reference is
-invalid.
-
-[[GSDVG00044]][[gkvbk]]
-
-
-Example 13-1 Example of a WAB Using CDI
-
-In this example, Bundle B0 defines a service contract called
-`com.acme.Foo` and exports the `com.acme` package for use by other
-bundles. Bundle B1 in turn provides a service implementation, FooImpl,
-of the `com.acme.Foo` interface. It then registers the service FooImpl
-service with the OSGi service registry with `com.acme.Foo` as the
-service interface.
-
-Bundle B2 is a hybrid application bundle that imports the `com.acme`
-package. It has a component called BarServlet that expresses a
-dependency to `com.acme.Foo` by adding a field/setter method and
-qualifies that injection point with `@OsgiService`. For instance,
-BarServlet could look like:
-
-[source,oac_no_warn]
-----
-
-  @Servlet
-  public void BarServlet extends HttpServlet{
-      @Inject @OSGiService(dynamic=true)
-      private com.acme.Foo f;
-  }
-----
-
-[[gkunh]][[GSDVG00491]][[developing-ejb-application-bundles]]
-
-Developing EJB Application Bundles
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Another type of hybrid application bundle is the EJB Application Bundle.
-When an EJB Jar is packaged with additional OSGi metadata and deployed
-as an OSGi bundle it is called an EJB Application Bundle. GlassFish
-Serversupports only packaging the OSGi bundle as a simple JAR file with
-required OSGi metadata, just as you would package an `ejb-jar` file.
-
-[[gkvck]][[GSDVG00326]][[required-ejb-metadata]]
-
-Required EJB Metadata
-+++++++++++++++++++++
-
-An EJB Application Bundle must have a manifest metadata called
-Export-EJB in order to be considered as an EJB Bundle. For syntax of
-Export-EJB header, please refer to the Publishing EJB as OSGi Service
-section. Here's an example of an EJB Application Bundle with its
-metadata:
-
-[source,oac_no_warn]
-----
-
-  myEjb.jar/
-           com/acme/Foo
-           com/acme/impl/FooEJB
-           META-INF/MANIFEST.MF
-  MANIFEST.MF: 
-  Manifest-Version: 1.0 
-  Bundle-ManifestVersion: 2 
-  Bundle-SymbolicName: com.acme.foo EJB bundle 
-  Bundle-Version: 1.0.0.BETA 
-  Bundle-Name: com.acme.foo EJB bundle version 1.0.0.BETA 
-  Export-EJB: ALL 
-  Export-Package: com.acme; version=1.0 
-  Import-Package: javax.ejb; version=[3.0, 4.0), com.acme; version=[1.0, 1.1)
-----
-
-[[gkvcj]][[GSDVG00327]][[how-ejb-bundles-consume-osgi-services]]
-
-How EJB Bundles Consume OSGi Services
-+++++++++++++++++++++++++++++++++++++
-
-Since an EJB has a valid Bundle-Context, it can consume OSGi services.
-Although you are free to use any OSGi API to locate OSGi services,
-GlassFish Server makes it easy to use OSGi services by virtue of
-extending the Context and Dependency Injection (CDI) framework. Here's
-an example of injection of an OSGi Service into a servlet:
-
-[source,oac_no_warn]
-----
-
-  @Stateless 
-  public class MyEJB {   
-    @Inject @OSGiService(dynamic=true)
-    Foo foo;
-    ...
-  }
-----
-
-To learn more about this feature, refer to link:#gkvbj[Using the OSGi
-CDI Extension With EJB Bundles].
-
-[[gkvbj]][[GSDVG00328]][[using-the-osgi-cdi-extension-with-ejb-bundles]]
-
-Using the OSGi CDI Extension With EJB Bundles
-+++++++++++++++++++++++++++++++++++++++++++++
-
-GlassFish Server includes a CDI extension that enables EJB application
-bundles to express a type-safe dependency on an OSGi Service using CDI
-APIs. An OSGi service can be provided by any OSGi bundle without any
-knowledge of Java EE/CDI, and they are allowed to be injected
-transparently in a type-safe manner into an EJB bundle.
-
-A custom CDI Qualifier, `@org.glassfish.osgicdi.OSGiService`, is used by
-the component to represent dependency on an OSGi service. The qualifier
-has additional metadata to customize the service discovery and injection
-behavior. The following `@OsgiService` attributes are currently
-available:
-
-* `dynamic` — Dynamically obtain a service reference (true/false).
-* `waitTimeout` — Waits for specified duration for a service to appear
-in the OSGi service registry.
-* `serviceCriteria` — An LDAP filter query used for service selection.
-
-[[gkveh]][[GSDVG00175]][[deploying-osgi-bundles-in-glassfish-server]]
-
-Deploying OSGi Bundles in GlassFish Server
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-For instruction on deploying OSGi bundle, see "link:../application-deployment-guide/deploying-applications.html#GSDPG00073[OSGi
-Bundle Deployment Guidelines]" in GlassFish Server Open Source Edition
-Application Deployment Guide.
-
-
diff --git a/docs/application-development-guide/src/main/jbake/content/part-apps-and-app-comps.adoc b/docs/application-development-guide/src/main/jbake/content/part-apps-and-app-comps.adoc
deleted file mode 100644
index d48093a..0000000
--- a/docs/application-development-guide/src/main/jbake/content/part-apps-and-app-comps.adoc
+++ /dev/null
@@ -1,19 +0,0 @@
-type=page
-status=published
-title=Developing Applications and Application Components
-next=securing-apps.html
-prev=debugging-apps.html
-~~~~~~
-Developing Applications and Application Components
-==================================================
-
-[[fvyme]][[GSDVG00046]][[part-ii]]
-
-Part II +
----------
-
-[[developing-applications-and-application-components]]
-Developing Applications and Application Components
---------------------------------------------------
-
-
diff --git a/docs/application-development-guide/src/main/jbake/content/part-services-and-apis.adoc b/docs/application-development-guide/src/main/jbake/content/part-services-and-apis.adoc
deleted file mode 100644
index b92afff..0000000
--- a/docs/application-development-guide/src/main/jbake/content/part-services-and-apis.adoc
+++ /dev/null
@@ -1,19 +0,0 @@
-type=page
-status=published
-title=Using Services and APIs
-next=jdbc.html
-prev=osgi.html
-~~~~~~
-Using Services and APIs
-=======================
-
-[[fvyam]][[GSDVG00047]][[part-iii]]
-
-Part III +
-----------
-
-[[using-services-and-apis]]
-Using Services and APIs
------------------------
-
-
diff --git a/docs/application-development-guide/src/main/jbake/content/part-tasks-and-tools.adoc b/docs/application-development-guide/src/main/jbake/content/part-tasks-and-tools.adoc
deleted file mode 100644
index 53dec18..0000000
--- a/docs/application-development-guide/src/main/jbake/content/part-tasks-and-tools.adoc
+++ /dev/null
@@ -1,19 +0,0 @@
-type=page
-status=published
-title=Development Tasks and Tools
-next=setting-up-dev-env.html
-prev=preface.html
-~~~~~~
-Development Tasks and Tools
-===========================
-
-[[fvxzc]][[GSDVG00045]][[part-i]]
-
-Part I +
---------
-
-[[development-tasks-and-tools]]
-Development Tasks and Tools
----------------------------
-
-
diff --git a/docs/application-development-guide/src/main/jbake/content/preface.adoc b/docs/application-development-guide/src/main/jbake/content/preface.adoc
deleted file mode 100644
index bd70b46..0000000
--- a/docs/application-development-guide/src/main/jbake/content/preface.adoc
+++ /dev/null
@@ -1,299 +0,0 @@
-type=page
-status=published
-title=Preface
-next=part-tasks-and-tools.html
-prev=title.html
-~~~~~~
-Preface
-=======
-
-[[GSDVG528]][[sthref2]]
-
-
-[[preface]]
-Preface
--------
-
-[NOTE]
-========================================================================
-
-This documentation is part of the Java Enterprise Edition contribution 
-to the Eclipse Foundation and is not intended for use in relation to 
-Java Enterprise Edition or Orace GlassFish. The documentation is in the 
-process of being revised to reflect the new Jakarta EE branding. 
-Additional changes will be made as requirements and procedures evolve 
-for Jakarta EE. Where applicable, references to Java EE or Java 
-Enterprise Edition should be considered references to Jakarta EE. 
-
-Please see the Title page for additional license information.
-========================================================================
-
-This Application Development Guide describes how to create and run Java
-Platform, Enterprise Edition (Java EE platform) applications that follow
-the open Java standards model for Java EE components and APIs in the
-Oracle GlassFish Server environment. Topics include developer tools,
-security, and debugging. This book is intended for use by software
-developers who create, assemble, and deploy Java EE applications using
-Oracle servers and software.
-
-This preface contains information about and conventions for the entire
-GlassFish Server Open Source Edition (GlassFish Server) documentation
-set.
-
-GlassFish Server 5.0 is developed through the GlassFish project
-open-source community at `https://javaee.github.io/glassfish/`. The
-GlassFish project provides a structured process for developing the
-GlassFish Server platform that makes the new features of the Java EE
-platform available faster, while maintaining the most important feature
-of Java EE: compatibility. It enables Java developers to access the
-GlassFish Server source code and to contribute to the development of the
-GlassFish Server. The GlassFish project is designed to encourage
-communication between Oracle engineers and the community.
-
-The following topics are addressed here:
-
-* link:#ghpbz[GlassFish Server Documentation Set]
-* link:#giprl[Related Documentation]
-* link:#fwbkx[Typographic Conventions]
-* link:#fquvc[Symbol Conventions]
-* link:#ghpfg[Default Paths and File Names]
-
-
-[[GSDVG00082]][[ghpbz]]
-
-
-[[glassfish-server-documentation-set]]
-GlassFish Server Documentation Set
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The GlassFish Server documentation set describes deployment planning and
-system installation. For an introduction to GlassFish Server, refer to
-the books in the order in which they are listed in the following table.
-
-[width="100%",cols="30%,70%",options="header",]
-|=======================================================================
-|Book Title |Description
-|link:../release-notes/toc.html#GSRLN[Release Notes] |Provides late-breaking information about
-the software and the documentation and includes a comprehensive,
-table-based summary of the supported hardware, operating system, Java
-Development Kit (JDK), and database drivers.
-
-|link:../quick-start-guide/toc.html#GSQSG[Quick Start Guide] |Explains how to get started with the
-GlassFish Server product.
-
-|link:../installation-guide/toc.html#GSING[Installation Guide] |Explains how to install the software
-and its components.
-
-|link:../administration-guide/toc.html#GSADG[Administration Guide] |Explains how to configure, monitor,
-and manage GlassFish Server subsystems and components from the command
-line by using the link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`] utility. Instructions for
-performing these tasks from the Administration Console are provided in
-the Administration Console online help.
-
-|link:../security-guide/toc.html#GSSCG[Security Guide] |Provides instructions for configuring and
-administering GlassFish Server security.
-
-|link:../application-deployment-guide/toc.html#GSDPG[Application Deployment Guide] |Explains how to assemble and
-deploy applications to the GlassFish Server and provides information
-about deployment descriptors.
-
-|link:../application-development-guide/toc.html#GSDVG[Application Development Guide] |Explains how to create and
-implement Java Platform, Enterprise Edition (Java EE platform)
-applications that are intended to run on the GlassFish Server. These
-applications follow the open Java standards model for Java EE components
-and application programmer interfaces (APIs). This guide provides
-information about developer tools, security, and debugging.
-
-| |
-
-|link:../error-messages-reference/toc.html#GSEMR[Error Message Reference] |Describes error messages that you
-might encounter when using GlassFish Server.
-
-|link:../reference-manual/toc.html#GSRFM[Reference Manual] |Provides reference information in man
-page format for GlassFish Server administration commands, utility
-commands, and related concepts.
-
-|link:../../openmq/mq-release-notes/toc.html#GMRLN[Message Queue Release Notes] |Describes new features,
-compatibility issues, and existing bugs for Open Message Queue.
-|=======================================================================
-
-
-[[GSDVG00083]][[giprl]]
-
-
-[[related-documentation]]
-Related Documentation
-~~~~~~~~~~~~~~~~~~~~~
-
-The following tutorials explain how to develop Java EE applications:
-
-* https://javaee.github.io/firstcup/[Your First Cup: An Introduction to
-the Java EE Platform] (`https://javaee.github.io/firstcup/`). For
-beginning Java EE programmers, this short tutorial explains the entire
-process for developing a simple enterprise application. The sample
-application is a web application that consists of a component that is
-based on the Enterprise JavaBeans specification, a JAX-RS web service,
-and a JavaServer Faces component for the web front end.
-* https://javaee.github.io/tutorial/[The Java EE 8 Tutorial]
-(`https://javaee.github.io/tutorial/`). This comprehensive tutorial
-explains how to use Java EE 8 platform technologies and APIs to develop
-Java EE applications.
-
-Javadoc tool reference documentation for packages that are provided with
-GlassFish Server is available as follows.
-
-* The Java EE specifications and API specification for version 8 is
-located at `https://javaee.github.io/javaee-spec/`.
-* The API specification for GlassFish Server 5.0, including Java EE 8
-platform packages and nonplatform packages that are specific to the
-GlassFish Server product, is located at
-`https://javaee.github.io/glassfish/documentation`.
-
-For information about creating enterprise applications in the NetBeans
-Integrated Development Environment (IDE), see the
-http://www.netbeans.org/kb/[NetBeans Documentation, Training & Support
-page] (`http://www.netbeans.org/kb/`).
-
-For information about the Apache Derby database for use with the
-GlassFish Server, see:
-(`http://www.oracle.com/technetwork/java/javadb/overview/index.html`).
-
-The Java EE Samples project is a collection of sample applications that
-demonstrate a broad range of Java EE technologies. The Java EE Samples
-are bundled with the Java EE Software Development Kit (SDK) and are also
-available from the repository
-(`https://github.com/javaee/glassfish-samples`).
-
-[[GSDVG00084]][[fwbkx]]
-
-
-[[typographic-conventions]]
-Typographic Conventions
-~~~~~~~~~~~~~~~~~~~~~~~
-
-The following table describes the typographic changes that are used in
-this book.
-
-[width="100%",cols="14%,37%,49%",options="header",]
-|=======================================================================
-|Typeface |Meaning |Example
-|`AaBbCc123` |The names of commands, files, and directories, and
-onscreen computer output a|
-Edit your `.login` file.
-
-Use `ls` `a` to list all files.
-
-`machine_name% you have mail.`
-
-|`AaBbCc123` |What you type, contrasted with onscreen computer output a|
-`machine_name%` `su`
-
-`Password:`
-
-|AaBbCc123 |A placeholder to be replaced with a real name or value |The
-command to remove a file is `rm` filename.
-
-|AaBbCc123 |Book titles, new terms, and terms to be emphasized (note
-that some emphasized items appear bold online) a|
-Read Chapter 6 in the User's Guide.
-
-A cache is a copy that is stored locally.
-
-Do not save the file.
-
-|=======================================================================
-
-
-[[GSDVG00085]][[fquvc]]
-
-
-[[symbol-conventions]]
-Symbol Conventions
-~~~~~~~~~~~~~~~~~~
-
-The following table explains symbols that might be used in this book.
-
-[width="100%",cols="10%,26%,28%,36%",options="header",]
-|=======================================================================
-|Symbol |Description |Example |Meaning
-|`[ ]` |Contains optional arguments and command options. |`ls [-l]` |The
-`-l` option is not required.
-
-|`{ \| }` |Contains a set of choices for a required command option.
-|`-d {y\|n}` |The `-d` option requires that you use either the `y`
-argument or the `n` argument.
-
-|`${ }` |Indicates a variable reference. |`${com.sun.javaRoot}`
-|References the value of the `com.sun.javaRoot` variable.
-
-|- |Joins simultaneous multiple keystrokes. |Control-A |Press the
-Control key while you press the A key.
-
-|+ + |Joins consecutive multiple keystrokes. |Ctrl+A+N |Press the
-Control key, release it, and then press the subsequent keys.
-
-|> |Indicates menu item selection in a graphical user interface. |File >
-New > Templates |From the File menu, choose New. From the New submenu,
-choose Templates.
-|=======================================================================
-
-
-[[GSDVG00086]][[ghpfg]]
-
-
-[[default-paths-and-file-names]]
-Default Paths and File Names
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following table describes the default paths and file names that are
-used in this book.
-
-[width="100%",cols="14%,34%,52%",options="header",]
-|=======================================================================
-|Placeholder |Description |Default Value
-|as-install + a|
-Represents the base installation directory for GlassFish Server.
-
-In configuration files, as-install is represented as follows:
-
-`${com.sun.aas.installRoot}`
-
- a|
-Installations on the Oracle Solaris operating system, Linux operating
-system, and Mac OS operating system:
-
-user's-home-directory`/glassfish3/glassfish`
-
-Installations on the Windows operating system:
-
-SystemDrive`:\glassfish3\glassfish`
-
-|as-install-parent + |Represents the parent of the base installation
-directory for GlassFish Server. a|
-Installations on the Oracle Solaris operating system, Linux operating
-system, and Mac operating system:
-
-user's-home-directory`/glassfish3`
-
-Installations on the Windows operating system:
-
-SystemDrive`:\glassfish3`
-
-|domain-root-dir + |Represents the directory in which a domain is
-created by default. |as-install`/domains/`
-
-|domain-dir + a|
-Represents the directory in which a domain's configuration is stored.
-
-In configuration files, domain-dir is represented as follows:
-
-`${com.sun.aas.instanceRoot}`
-
- |domain-root-dir`/`domain-name
-
-|instance-dir + |Represents the directory for a server instance.
-|domain-dir`/`instance-name
-|=======================================================================
-
-
-
diff --git a/docs/application-development-guide/src/main/jbake/content/securing-apps.adoc b/docs/application-development-guide/src/main/jbake/content/securing-apps.adoc
deleted file mode 100644
index 12cc7b9..0000000
--- a/docs/application-development-guide/src/main/jbake/content/securing-apps.adoc
+++ /dev/null
@@ -1,2581 +0,0 @@
-type=page
-status=published
-title=Securing Applications
-next=webservices.html
-prev=part-apps-and-app-comps.html
-~~~~~~
-Securing Applications
-=====================
-
-[[GSDVG00006]][[beabg]]
-
-
-[[securing-applications]]
-4 Securing Applications
------------------------
-
-This chapter describes how to write secure Java EE applications, which
-contain components that perform user authentication and access
-authorization for the business logic of Java EE components.
-
-For information about administrative security for the Oracle GlassFish
-Server, see the link:../security-guide/toc.html#GSSCG[GlassFish Server Open Source Edition
-Security Guide].
-
-For general information about Java EE security, see
-https://javaee.github.io/tutorial/partsecurity.html[Security] in The
-Java EE 8 Tutorial.
-
-The following topics are addressed here:
-
-* link:#beabh[Security Goals]
-* link:#beabi[GlassFish Server Specific Security Features]
-* link:#beabj[Container Security]
-* link:#beacr[Roles, Principals, and Principal to Role Mapping]
-* link:#beabo[Realm Configuration]
-* link:#BACDEIHB[Java EE Security API Support]
-* link:#beabt[JACC Support]
-* link:#beabu[Pluggable Audit Module Support]
-* link:#beabx[The `server.policy` File]
-* link:#beaca[Configuring Message Security for Web Services]
-* link:#beacm[Programmatic Login Using the ProgrammaticLogin Class]
-* link:#beacq[User Authentication for Single Sign-on]
-* link:#gizel[Adding Authentication Mechanisms to the Servlet Container]
-
-
-[NOTE]
-=======================================================================
-
-The Web Profile of the GlassFish Server supports the EJB 3.1 Lite
-specification, which allows enterprise beans within web applications,
-among other features. The full GlassFish Server supports the entire EJB
-3.1 specification. For details, see
-http://jcp.org/en/jsr/detail?id=318[JSR 318]
-(`http://jcp.org/en/jsr/detail?id=318`).
-
-=======================================================================
-
-
-[[beabh]][[GSDVG00114]][[security-goals]]
-
-Security Goals
-~~~~~~~~~~~~~~
-
-In an enterprise computing environment, there are many security risks.
-The goal of the GlassFish Server is to provide highly secure,
-interoperable, and distributed component computing based on the Java EE
-security model. Security goals include:
-
-* Full compliance with the Java EE security model. This includes EJB and
-servlet role-based authorization.
-* Support for single sign-on across all GlassFish Server applications
-within a single security domain.
-* Support for web services message security.
-* Security support for application clients.
-* Support for several underlying authentication realms, such as simple
-file and Lightweight Directory Access Protocol (LDAP). Certificate
-authentication is also supported for Secure Socket Layer (SSL) client
-authentication. For Solaris, OS platform authentication is supported in
-addition to these.
-* Support for declarative security through GlassFish Server specific
-XML-based role mapping.
-* Support for Java Authorization Contract for Containers (JACC)
-pluggable authorization as included in the Java EE specification and
-defined by http://www.jcp.org/en/jsr/detail?id=115[Java Specification
-Request (JSR) 115] (`http://www.jcp.org/en/jsr/detail?id=115`).
-* Support for Java Authentication Service Provider Interface for
-Containers as included in the Java EE specification and defined by
-http://www.jcp.org/en/jsr/detail?id=196[JSR 196]
-(`http://www.jcp.org/en/jsr/detail?id=196`).
-* Support for Web Services Interoperability Technologies (WSIT) as
-described in
-https://javaee.github.io/metro/doc/user-guide/index.html[Metro Users
-Guide] (`https://javaee.github.io/metro/doc/user-guide/index.html`).
-* Support for the Java EE Security API as included in the Java EE
-specification and defined by https://jcp.org/en/jsr/detail?id=375[JSR
-375] (`https://jcp.org/en/jsr/detail?id=375`)
-
-[[beabi]][[GSDVG00115]][[glassfish-server-specific-security-features]]
-
-GlassFish Server Specific Security Features
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The GlassFish Server supports the Java EE security model, as well as the
-following features which are specific to the GlassFish Server:
-
-* Message security; see link:#beaca[Configuring Message Security for Web
-Services]
-* Single sign-on across all GlassFish Server applications within a
-single security domain; see link:#beacq[User Authentication for Single
-Sign-on]
-* Programmatic login; see link:#beacm[Programmatic Login Using the
-ProgrammaticLogin Class]
-
-[[beabj]][[GSDVG00116]][[container-security]]
-
-Container Security
-~~~~~~~~~~~~~~~~~~
-
-The component containers are responsible for providing Java EE
-application security. The container provides two security forms:
-
-* link:#beabl[Declarative Security]
-* link:#beabk[Programmatic Security]
-
-Annotations (also called metadata) enable a declarative style of
-programming, and so encompass both the declarative and programmatic
-security concepts. Users can specify information about security within a
-class file using annotations. When the application is deployed, this
-information can either be used by or overridden by the application or
-module deployment descriptor.
-
-[[beabl]][[GSDVG00362]][[declarative-security]]
-
-Declarative Security
-^^^^^^^^^^^^^^^^^^^^
-
-Declarative security means that the security mechanism for an
-application is declared and handled externally to the application.
-Deployment descriptors describe the Java EE application's security
-structure, including security roles, access control, and authentication
-requirements.
-
-The GlassFish Server supports the deployment descriptors specified by
-Java EE and has additional security elements included in its own
-deployment descriptors. Declarative security is the application
-deployer's responsibility. For more information about GlassFish Server
-deployment descriptors, see the link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source
-Edition Application Deployment Guide].
-
-There are two levels of declarative security, as follows:
-
-* link:#beabm[Application Level Security]
-* link:#beabn[Component Level Security]
-
-[[beabm]][[GSDVG00239]][[application-level-security]]
-
-Application Level Security
-++++++++++++++++++++++++++
-
-For an application, roles used by any application must be defined in
-`@DeclareRoles` annotations in the code or `role-name` elements in the
-application deployment descriptor (`application.xml`). Those role names
-are scoped to the EJB XML deployment descriptors (`ejb-jar.xml` and
-`glassfish-ejb-jar.xml` files) and to the servlet XML deployment
-descriptors (`web.xml` and `glassfish-web.xml` files). For an
-individually deployed web or EJB module, you define roles using
-`@DeclareRoles` annotations or `role-name` elements in the Java EE
-deployment descriptor files `web.xml` or `ejb-jar.xml`.
-
-To map roles to principals and groups, define matching
-`security-role-mapping` elements in the `glassfish-application.xml`,
-`glassfish-ejb-jar.xml`, or `glassfish-web.xml` file for each
-`role-name` used by the application. By default, group principal names
-are mapped to roles of the same name. Accordingly, the Default Principal
-To Role Mapping setting is enabled by default on the Security page of
-the GlassFish Server Administration Console. This default role mapping
-definition is in effect if you do not define your own mapping in the
-deployment descriptor for your application as described in this section.
-For more information, see link:#beacr[Roles, Principals, and Principal
-to Role Mapping].
-
-[[beabn]][[GSDVG00240]][[component-level-security]]
-
-Component Level Security
-++++++++++++++++++++++++
-
-Component level security encompasses web components and EJB components.
-
-A secure web container authenticates users and authorizes access to a
-servlet or JSP by using the security policy laid out in the servlet XML
-deployment descriptors (`web.xml` and `glassfish-web.xml` files).
-
-The EJB container is responsible for authorizing access to a bean method
-by using the security policy laid out in the EJB XML deployment
-descriptors (`ejb-jar.xml` and `glassfish-ejb-jar.xml` files).
-
-[[beabk]][[GSDVG00363]][[programmatic-security]]
-
-Programmatic Security
-^^^^^^^^^^^^^^^^^^^^^
-
-Programmatic security involves an EJB component or servlet using method
-calls to the security API, as specified by the Java EE security model,
-to make business logic decisions based on the caller or remote user's
-security role. Programmatic security should only be used when
-declarative security alone is insufficient to meet the application's
-security model.
-
-The API for programmatic security consists of methods of the Java EE
-Security API `SecurityContext` interface, and methods of the EJB
-`EJBContext` interface and the servlet `HttpServletRequest` interface.
-The GlassFish Server supports these interfaces as specified in the Java
-EE specification.
-
-There is also a proprietary Glassfish API for programmatic login. See
-link:#beacm[Programmatic Login Using the ProgrammaticLogin Class].
-
-For more information about programmatic security, see
-https://javaee.github.io/tutorial/security-intro003.html#using-programmatic-security[Using
-Programmatic Security] in the The Java EE Tutorial.
-
-[[beacr]][[GSDVG00117]][[roles-principals-and-principal-to-role-mapping]]
-
-Roles, Principals, and Principal to Role Mapping
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-By default, any groups that an authenticated user belongs to will be
-mapped to roles with the same names. Therefore, the Default Principal To
-Role Mapping setting is enabled by default on the Security page of the
-GlassFish Administration Console. To change the default mapping you can
-clear this setting. For applications, you define roles in
-`@DeclareRoles` annotations or the Java EE deployment descriptor file
-`application.xml`. You define the corresponding role mappings in the
-GlassFish Server deployment descriptor file `glassfish-application.xml`.
-For individually deployed web or EJB modules, you define roles in
-`@DeclareRoles` annotations or the Java EE deployment descriptor files
-`web.xml` or `ejb-jar.xml`. You define the corresponding role mappings
-in the GlassFish Server deployment descriptor files `glassfish-web.xml`
-or `glassfish-ejb-jar.xml`.
-
-For more information regarding Java EE deployment descriptors, see the
-Java EE Specification. For more information regarding GlassFish Server
-deployment descriptors, see "link:../application-deployment-guide/dd-elements.html#GSDPG00007[Elements of the GlassFish
-Server Deployment Descriptors]" in GlassFish Server Open Source Edition
-Application Deployment Guide.
-
-Each `security-role-mapping` element in the `glassfish-application.xml`,
-`glassfish-web.xml`, or `glassfish-ejb-jar.xml` file maps a role name
-permitted by the application or module to principals and groups. For
-example, a `glassfish-web.xml` file for an individually deployed web
-module might contain the following:
-
-[source,oac_no_warn]
-----
-<glassfish-web-app>
-    <security-role-mapping>
-        <role-name>manager</role-name>
-        <principal-name>jgarcia</principal-name>
-        <principal-name>mwebster</principal-name>
-        <group-name>team-leads</group-name>
-    </security-role-mapping>
-    <security-role-mapping>
-        <role-name>administrator</role-name>
-        <principal-name>dsmith</principal-name>
-    </security-role-mapping>
-</glassfish-web-app>
-----
-
-A role can be mapped to either specific principals or to groups (or
-both). The principal or group names used must be valid principals or
-groups in the realm for the application or module. Note that the
-`role-name` in this example must match the `@DeclareRoles` annotations
-or the `role-name` in the `security-role` element of the corresponding
-`web.xml` file.
-
-You can also specify a custom principal implementation class. This
-provides more flexibility in how principals can be assigned to roles. A
-user's JAAS login module now can authenticate its custom principal, and
-the authenticated custom principal can further participate in the
-GlassFish Server authorization process. For example:
-
-[source,oac_no_warn]
-----
-<security-role-mapping>
-    <role-name>administrator</role-name>
-    <principal-name class-name="CustomPrincipalImplClass">
-        dsmith
-    </principal-name>
-</security-role-mapping>
-----
-
-You can specify a default principal and a default principal to role
-mapping, each of which applies to the entire GlassFish Server instance.
-The default principal to role mapping maps group principals to the same
-named roles. Web modules that omit the `run-as` element in `web.xml` use
-the default principal. Applications and modules that omit the
-`security-role-mapping` element use the default principal to role
-mapping. These defaults are part of the Security Service, which you can
-access in the following ways:
-
-* In the Administration Console, select the Security component under the
-relevant configuration. For details, click the Help button in the
-Administration Console.
-* Use the `asadmin set` command. For details, see the
-link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual]. For
-example, you can set the default principal as follows. +
-[source,oac_no_warn]
-----
-asadmin set server-config.security-service.default-principal=dsmith
-asadmin set server-config.security-service.default-principal-password=secret
-----
-You can set the default principal to role mapping as follows. +
-[source,oac_no_warn]
-----
-asadmin set server-config.security-service.activate-default-principal-to-role-mapping=true
-asadmin set server-config.security-service.mapped-principal-class=CustomPrincipalImplClass
-----
-Default principal to role mapping is enabled by default. To disable it,
-set the default principal to role mapping property to false.
-
-[[beabo]][[GSDVG00118]][[realm-configuration]]
-
-Realm Configuration
-~~~~~~~~~~~~~~~~~~~
-
-The following topics are addressed here:
-
-* link:#beabp[Supported Realms]
-* link:#beabq[How to Configure a Realm]
-* link:#beabr[How to Set a Realm for an Application or Module]
-* link:#beabs[Creating a Custom Realm]
-
-[[beabp]][[GSDVG00364]][[supported-realms]]
-
-Supported Realms
-^^^^^^^^^^^^^^^^
-
-The following realms are supported in the current release of the
-GlassFish Server:
-
-* `file` - Stores user information in a file. This is the default realm
-when you first install the GlassFish Server.
-* `ldap` - Stores user information in an LDAP directory.
-* `jdbc` - Stores user information in a database. +
-In the JDBC realm, the server gets user credentials from a database. The
-GlassFish Server uses the database information and the enabled JDBC
-realm option in the configuration file. For digest authentication, a
-JDBC realm should be created with `jdbcDigestRealm` as the JAAS context.
-* `certificate` - Sets up the user identity in the GlassFish Server
-security context, and populates it with user data obtained from
-cryptographically verified client certificates.
-* `solaris` - Allows authentication using Solaris `username+password`
-data. This realm is only supported on the Solaris operating system,
-version 9 and above.
-
-For information about configuring realms, see link:#beabq[How to
-Configure a Realm].
-
-[[beabq]][[GSDVG00365]][[how-to-configure-a-realm]]
-
-How to Configure a Realm
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can configure a realm in one of these ways:
-
-* In the Administration Console, open the Security component under the
-relevant configuration and go to the Realms page. For details, click the
-Help button in the Administration Console.
-* Use the `asadmin create-auth-realm` command to configure realms on
-local servers. For details, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open
-Source Edition Reference Manual].
-
-[[beabr]][[GSDVG00366]][[how-to-set-a-realm-for-an-application-or-module]]
-
-How to Set a Realm for an Application or Module
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The following deployment descriptor elements have optional `realm` or
-`realm-name` data subelements or attributes that override the domain's
-default realm:
-
-* `glassfish-application` element in `glassfish-application.xml`
-* `web-app` element in `web.xml`
-* `as-context` element in `glassfish-ejb-jar.xml`
-* `client-container` element in `sun-acc.xml`
-* `client-credential` element in `sun-acc.xml`
-
-If modules within an application specify realms, these are ignored. If
-present, the realm defined in `glassfish-application.xml` is used,
-otherwise the domain's default realm is used.
-
-For example, a realm is specified in `glassfish-application.xml` as
-follows:
-
-[source,oac_no_warn]
-----
-<glassfish-application>
-    ...
-    <realm>ldap</realm>
-</glassfish-application>
-----
-
-For more information about the deployment descriptor files and elements,
-see "link:../application-deployment-guide/dd-elements.html#GSDPG00007[Elements of the GlassFish Server Deployment
-Descriptors]" in GlassFish Server Open Source Edition Application
-Deployment Guide.
-
-[[beabs]][[GSDVG00367]][[creating-a-custom-realm]]
-
-Creating a Custom Realm
-^^^^^^^^^^^^^^^^^^^^^^^
-
-You can create a custom realm by providing a custom Java Authentication
-and Authorization Service (JAAS) login module class and a custom realm
-class. Note that client-side JAAS login modules are not suitable for use
-with the GlassFish Server.
-
-To activate the custom login modules and realms, place the JAR files in
-the domain-dir`/lib` directory or the class files in the
-domain-dir`/lib/classes` directory. For more information about class
-loading in the GlassFish Server, see link:class-loaders.html#beade[Class
-Loaders].
-
-JAAS is a set of APIs that enable services to authenticate and enforce
-access controls upon users. JAAS provides a pluggable and extensible
-framework for programmatic user authentication and authorization. JAAS
-is a core API and an underlying technology for Java EE security
-mechanisms. For more information about JAAS, refer to the JAAS
-specification for Java SDK, available at
-`http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136007.html`.
-
-For general information about realms and login modules, see the section
-about working with realms, users, groups, and roles in
-"https://javaee.github.io/tutorial/security-intro.html[Introduction to
-Security in the Java EE Platform]" in The Java EE 8 Tutorial.
-
-For Javadoc tool pages relevant to custom realms, see the
-`com.sun.appserv.security` package.
-
-Custom login modules must extend the
-`com.sun.appserv.security.AppservPasswordLoginModule` class. This class
-implements javax.security.auth.spi.LoginModule. Custom login modules
-must not implement LoginModule directly.
-
-Custom login modules must provide an implementation for one abstract
-method defined in `AppservPasswordLoginModule`:
-
-[source,oac_no_warn]
-----
-abstract protected void authenticateUser() throws LoginException
-----
-
-This method performs the actual authentication. The custom login module
-must not implement any of the other methods, such as `login`, `logout`,
-`abort`, `commit`, or `initialize`. Default implementations are provided
-in `AppservPasswordLoginModule` which hook into the GlassFish Server
-infrastructure.
-
-The custom login module can access the following protected object
-fields, which it inherits from `AppservPasswordLoginModule`. These
-contain the user name and password of the user to be authenticated:
-
-[source,oac_no_warn]
-----
-protected String _username;
-protected String _password;
-----
-
-The `authenticateUser` method must end with the following sequence:
-
-[source,oac_no_warn]
-----
-String[] grpList;
-// populate grpList with the set of groups to which
-// _username belongs in this realm, if any
-commitUserAuthentication(grpList);
-----
-
-Custom realms must extend the `com.sun.appserv.security.AppservRealm`
-class and implement the following methods:
-
-[source,oac_no_warn]
-----
-public void init(Properties props) throws BadRealmException, 
-    NoSuchRealmException
-----
-
-This method is invoked during server startup when the realm is initially
-loaded. The `props` argument contains the properties defined for this
-realm. The realm can do any initialization it needs in this method. If
-the method returns without throwing an exception, the GlassFish Server
-assumes that the realm is ready to service authentication requests. If
-an exception is thrown, the realm is disabled.
-
-[source,oac_no_warn]
-----
-public String getAuthType()
-----
-
-This method returns a descriptive string representing the type of
-authentication done by this realm.
-
-[source,oac_no_warn]
-----
-public abstract Enumeration getGroupNames(String username) throws 
-    InvalidOperationException, NoSuchUserException
-----
-
-This method returns an `Enumeration` (of `String` objects) enumerating
-the groups (if any) to which the given `username` belongs in this realm.
-
-Custom realms that manage users must implement the following additional
-methods:
-
-[source,oac_no_warn]
-----
-public abstract boolean supportsUserManagement();
-----
-
-This method returns `true` if the realm supports user management.
-
-[source,oac_no_warn]
-----
-public abstract Enumeration getGroupNames() throws BadRealmException;
-----
-
-This method returns an `Enumeration` of all group names.
-
-[source,oac_no_warn]
-----
-public abstract Enumeration getUserNames() throws BadRealmException;
-----
-
-This method returns an `Enumeration` of all user names.
-
-[source,oac_no_warn]
-----
-public abstract void refresh() throws BadRealmException;
-----
-
-This method refreshes the realm data so that new users and groups are
-visible.
-
-[source,oac_no_warn]
-----
-public abstract void persist() throws BadRealmException;
-----
-
-This method persists the realm data to permanent storage.
-
-[source,oac_no_warn]
-----
-public abstract User getUser(String name) throws NoSuchUserException, 
-BadRealmException;
-----
-
-This method returns the information recorded about a particular named
-user.
-
-[source,oac_no_warn]
-----
-public abstract void addUser(String name, String password, String[] groupList) throws 
-BadRealmException, IASSecurityException;
-----
-
-This method adds a new user, who cannot already exist.
-
-[source,oac_no_warn]
-----
-public abstract void removeUser(String name) throws NoSuchUserException, 
-BadRealmException;
-----
-
-This method removes a user, who must exist.
-
-[source,oac_no_warn]
-----
-public abstract void updateUser(String name, String newName, String password, 
-String[] groups) throws NoSuchUserException, BadRealmException, IASSecurityException;
-----
-
-This method updates data for a user, who must exist.
-
-
-[NOTE]
-=======================================================================
-
-The array passed to the `commitUseAuthentication` method should be newly
-created and otherwise unreferenced. This is because the group name array
-elements are set to null after authentication as part of cleanup. So the
-second time your custom realm executes it returns an array with null
-elements.
-
-Ideally, your custom realm should not return member variables from the
-`authenticate` method. It should return local variables as the default
-`JDBCRealm` does. Your custom realm can create a local `String` array in
-its `authenticate` method, copy the values from the member variables,
-and return the `String` array. Or it can use `clone` on the member
-variables.
-
-=======================================================================
-
-
-[[BACDEIHB]][[GSDVG563]][[java-ee-security-api-support]]
-
-Java EE Security API Support
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-JSR-375 defines several authentication-related plugin SPIs, such as,
-`HttpAuthenticationMechanism` interface, the `IdentityStore` and
-`IdentityStoreHandler` interfaces:
-
-* `HttpAuthenticationMechanism`: An interface for modules that
-authenticate callers to a web application. An application can supply its
-own `HttpAuthenticationMechanism`, or use one of the default
-implementations provided by the container.
-* `IdentityStore`: This interface defines methods for validating a
-caller's credentials (such as user name and password) and returning
-group membership information. An application can provide its own
-IdentityStore, or use the built in LDAP or Database store.
-* `RememberMeIdentityStore`: This interface is a variation on the
-`IdentityStore` interface, intended to address cases where an
-authenticated user's identity should be remembered for an extended
-period of time, so that the caller can return to the application
-periodically without needing to present primary authentication
-credentials each time.
-
-In addition to these authentication plugin SPIs, the Java EE Security
-API specification defines the `SecurityContext` API for use by
-application code to query and interact with the current security
-context. The `SecurityContext` interface defines methods that allow an
-application to access security information about a caller, authenticate
-a caller, and authorize a caller. These methods include
-`getCallerPrincipal()`, `getPrincipalsByType()`, `isCallerInRole()`,
-`authenticate()`, and `hasAccessToWebResource()`.
-
-[[beabt]][[GSDVG00119]][[jacc-support]]
-
-JACC Support
-~~~~~~~~~~~~
-
-JACC (Java Authorization Contract for Containers) is part of the Java EE
-specification and defined by http://www.jcp.org/en/jsr/detail?id=115[JSR
-115] (`http://www.jcp.org/en/jsr/detail?id=115`). JACC defines an
-interface for pluggable authorization providers. Specifically, JACC is
-used to plug in the Java policy provider used by the container to
-perform Java EE caller access decisions. The Java policy provider
-performs Java policy decisions during application execution. This
-provides third parties with a mechanism to develop and plug in modules
-that are responsible for answering authorization decisions during Java
-EE application execution. The interfaces and rules used for developing
-JACC providers are defined in the JACC 1.0 specification.
-
-The GlassFish Server provides a simple file-based JACC-compliant
-authorization engine as a default JACC provider, named `default`. An
-alternate provider named `simple` is also provided. To configure an
-alternate provider using the Administration Console, open the Security
-component under the relevant configuration, and select the JACC
-Providers component. For details, click the Help button in the
-Administration Console.
-
-[[beabu]][[GSDVG00120]][[pluggable-audit-module-support]]
-
-Pluggable Audit Module Support
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Audit modules collect and store information on incoming requests
-(servlets, EJB components) and outgoing responses. You can create a
-custom audit module.
-
-The following topics are addressed here:
-
-* link:#beabv[Configuring an Audit Module]
-* link:#beabw[The `AuditModule` Class]
-
-[[beabv]][[GSDVG00368]][[configuring-an-audit-module]]
-
-Configuring an Audit Module
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To configure an audit module, you can perform one of the following
-tasks:
-
-* To specify an audit module using the Administration Console, open the
-Security component under the relevant configuration, and select the
-Audit Modules component. For details, click the Help button in the
-Administration Console.
-* You can use the `asadmin create-audit-module` command to configure an
-audit module. For details, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open
-Source Edition Reference Manual].
-
-[[beabw]][[GSDVG00369]][[the-auditmodule-class]]
-
-The `AuditModule` Class
-^^^^^^^^^^^^^^^^^^^^^^^
-
-You can create a custom audit module by implementing a class that
-extends `com.sun.enterprise.security.audit.AuditModule`.
-
-For Javadoc tool pages relevant to audit modules, see the
-`com.sun.enterprise.security.audit` package.
-
-The `AuditModule` class provides default "no-op" implementations for
-each of the following methods, which your custom class can override.
-
-[source,oac_no_warn]
-----
-public void init(Properties props)
-----
-
-The preceding method is invoked during server startup when the audit
-module is initially loaded. The `props` argument contains the properties
-defined for this module. The module can do any initialization it needs
-in this method. If the method returns without throwing an exception, the
-GlassFish Server assumes the module realm is ready to service audit
-requests. If an exception is thrown, the module is disabled.
-
-[source,oac_no_warn]
-----
-public void authentication(String user, String realm, boolean success)
-----
-
-This method is invoked when an authentication request has been processed
-by a realm for the given user. The `success` flag indicates whether the
-authorization was granted or denied.
-
-[source,oac_no_warn]
-----
-public void webInvocation(String user, HttpServletRequest req, String type, boolean success)
-----
-
-This method is invoked when a web container call has been processed by
-authorization. The `success` flag indicates whether the authorization
-was granted or denied. The `req` object is the standard
-`HttpServletRequest` object for this request. The `type` string is one
-of `hasUserDataPermission` or `hasResourcePermission` (see
-http://www.jcp.org/en/jsr/detail?id=115[JSR 115]
-(`http://www.jcp.org/en/jsr/detail?id=115`)).
-
-[source,oac_no_warn]
-----
-public void ejbInvocation(String user, String ejb, String method, boolean success)
-----
-
-This method is invoked when an EJB container call has been processed by
-authorization. The `success` flag indicates whether the authorization
-was granted or denied. The `ejb` and `method` strings describe the EJB
-component and its method that is being invoked.
-
-[source,oac_no_warn]
-----
-public void webServiceInvocation(String uri, String endpoint, boolean success)
-----
-
-This method is invoked during validation of a web service request in
-which the endpoint is a servlet. The `uri` is the URL representation of
-the web service endpoint. The `endpoint` is the name of the endpoint
-representation. The `success` flag indicates whether the authorization
-was granted or denied.
-
-[source,oac_no_warn]
-----
-public void ejbAsWebServiceInvocation(String endpoint, boolean success)
-----
-
-This method is invoked during validation of a web service request in
-which the endpoint is a stateless session bean. The `endpoint` is the
-name of the endpoint representation. The `success` flag indicates
-whether the authorization was granted or denied.
-
-[[beabx]][[GSDVG00121]][[the-server.policy-file]]
-
-The `server.policy` File
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-Each GlassFish Server domain has its own global J2SE policy file,
-located in domain-dir`/config`. The file is named `server.policy`.
-
-The GlassFish Server is a Java EE compliant application server. As such,
-it follows the requirements of the Java EE specification, including the
-presence of the security manager (the Java component that enforces the
-policy) and a limited permission set for Java EE application code.
-
-The following topics are addressed here:
-
-* link:#beaby[Default Permissions]
-* link:#gilzz[System Properties]
-* link:#beabz[Changing Permissions for an Application]
-* link:#gbyah[Enabling and Disabling the Security Manager]
-
-[[beaby]][[GSDVG00370]][[default-permissions]]
-
-Default Permissions
-^^^^^^^^^^^^^^^^^^^
-
-Internal server code is granted all permissions. These are covered by
-the `AllPermission` grant blocks to various parts of the server
-infrastructure code. Do not modify these entries.
-
-Application permissions are granted in the default grant block. These
-permissions apply to all code not part of the internal server code
-listed previously. The GlassFish Server does not distinguish between EJB
-and web module permissions. All code is granted the minimal set of web
-component permissions (which is a superset of the EJB minimal set). Do
-not modify these entries.
-
-A few permissions above the minimal set are also granted in the default
-`server.policy` file. These are necessary due to various internal
-dependencies of the server implementation. Java EE application
-developers must not rely on these additional permissions. In some cases,
-deleting these permissions might be appropriate. For example, one
-additional permission is granted specifically for using connectors. If
-connectors are not used in a particular domain, you should remove this
-permission, because it is not otherwise necessary.
-
-[[gilzz]][[GSDVG00371]][[system-properties]]
-
-System Properties
-^^^^^^^^^^^^^^^^^
-
-The following predefined system properties, also called variables, are
-available for use in the `server.policy` file. The system property most
-frequently used in `server.policy` is `${com.sun.aas.instanceRoot}`. For
-more information about system properties, see the
-`asadmin create-system-properties` command in the link:../reference-manual/toc.html#GSRFM[GlassFish
-Server Open Source Edition Reference Manual].
-
-[[GSDVG533]][[sthref5]][[sthref6]]
-
-
-Table 4-1 Predefined System Properties
-
-[width="100%",cols="29%,17%,54%",options="header",]
-|=======================================================================
-|Property |Default |Description
-|`com.sun.aas.installRoot` |depends on operating system |Specifies the
-directory where the GlassFish Server is installed.
-
-|`com.sun.aas.instanceRoot` |depends on operating system |Specifies the
-top level directory for a server instance.
-
-|`com.sun.aas.hostName` |none |Specifies the name of the host (machine).
-
-|`com.sun.aas.javaRoot` |depends on operating system |Specifies the
-installation directory for the Java runtime.
-
-|`com.sun.aas.imqLib` |depends on operating system |Specifies the
-library directory for the Open Message Queue software.
-
-|`com.sun.aas.configName` |`server-config` |Specifies the name of the
-configuration used by a server instance.
-
-|`com.sun.aas.instanceName` |`server1` |Specifies the name of the server
-instance. This property is not used in the default configuration, but
-can be used to customize configuration.
-
-|`com.sun.aas.clusterName` |`cluster1` |Specifies the name of the
-cluster. This property is only set on clustered server instances. This
-property is not used in the default configuration, but can be used to
-customize configuration.
-
-|`com.sun.aas.domainName` |`domain1` |Specifies the name of the domain.
-This property is not used in the default configuration, but can be used
-to customize configuration.
-|=======================================================================
-
-
-[[beabz]][[GSDVG00372]][[changing-permissions-for-an-application]]
-
-Changing Permissions for an Application
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The default policy for each domain limits the permissions of Java EE
-deployed applications to the minimal set of permissions required for
-these applications to operate correctly. Do not add extra permissions to
-the default set (the grant block with no codebase, which applies to all
-code). Instead, add a new grant block with a codebase specific to the
-applications requiring the extra permissions, and only add the minimally
-necessary permissions in that block.
-
-If you develop multiple applications that require more than this default
-set of permissions, you can add the custom permissions that your
-applications need. The `com.sun.aas.instanceRoot` variable refers to the
-domain-dir. For example:
-
-[source,oac_no_warn]
-----
-grant codeBase "file:${com.sun.aas.instanceRoot}/applications/-" {
-...
-}
-----
-
-You can add permissions to stub code with the following grant block:
-
-[source,oac_no_warn]
-----
-grant codeBase "file:${com.sun.aas.instanceRoot}/generated/-" {
-...
-}
-----
-
-In general, you should add extra permissions only to the applications or
-modules that require them, not to all applications deployed to a domain.
-For example:
-
-[source,oac_no_warn]
-----
-grant codeBase "file:${com.sun.aas.instanceRoot}/applications/MyApp/-" {
-...
-}
-----
-
-For a module:
-
-[source,oac_no_warn]
-----
-grant codeBase "file:${com.sun.aas.instanceRoot}/applications/MyModule/-" {
-...
-}
-----
-
-
-[NOTE]
-===================================================================
-
-Deployment directories may change between GlassFish Server releases.
-
-===================================================================
-
-
-An alternative way to add permissions to a specific application or
-module is to edit the `granted.policy` file for that application or
-module. The `granted.policy` file is located in the
-domain-dir`/generated/policy/`app-or-module-name directory. In this
-case, you add permissions to the default grant block. Do not delete
-permissions from this file.
-
-When the GlassFish Server policy subsystem determines that a permission
-should not be granted, it logs a `server.policy` message specifying the
-permission that was not granted and the protection domains, with
-indicated code source and principals that failed the protection check.
-For example, here is the first part of a typical message:
-
-[source,oac_no_warn]
-----
-[#|2005-12-17T16:16:32.671-0200|INFO|sun-appserver-pe9.1|
-javax.enterprise.system.core.security|_ThreadID=14;_ThreadName=Thread-31;|
-JACC Policy Provider: PolicyWrapper.implies, context(null)- 
-permission((java.util.PropertyPermission java.security.manager write)) 
-domain that failed(ProtectionDomain
-(file:/E:/glassfish/domains/domain1/applications/cejug-clfds/ ... )
-...
-----
-
-Granting the following permission eliminates the message:
-
-[source,oac_no_warn]
-----
-grant codeBase "file:${com.sun.aas.instanceRoot}/applications/cejug-clfds/-" {
-    permission java.util.PropertyPermission "java.security.manager", "write";
-}
-----
-
-
-[NOTE]
-=======================================================================
-
-Do not add `java.security.AllPermission` to the `server.policy` file for
-application code. Doing so completely defeats the purpose of the
-security manager, yet you still get the performance overhead associated
-with it.
-
-=======================================================================
-
-
-As noted in the Java EE specification, an application should provide
-documentation of the additional permissions it needs. If an application
-requires extra permissions but does not document the set it needs,
-contact the application author for details.
-
-As a last resort, you can iteratively determine the permission set an
-application needs by observing `AccessControlException` occurrences in
-the server log.
-
-If this is not sufficient, you can add the
-`-Djava.security.debug=failure` JVM option to the domain. Use the
-following `asadmin create-jvm-options` command, then restart the server:
-
-[source,oac_no_warn]
-----
-asadmin create-jvm-options -Djava.security.debug=failure
-----
-
-For more information about the `asadmin create-jvm-options` command, see
-the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-
-You can use the J2SE standard `policytool` or any text editor to edit
-the `server.policy` file. For more information, see
-`http://docs.oracle.com/javase/tutorial/security/tour2/index.html`.
-
-For detailed information about policy file syntax, see
-`http://docs.oracle.com/javase/8/docs/technotes/guides/security/PolicyFiles.html`.
-
-For information about using system properties in the `server.policy`
-file, see
-`http://docs.oracle.com/javase/8/docs/technotes/guides/security/PolicyFiles.html`.
-
-For detailed information about the permissions you can set in the
-`server.policy` file, see
-`http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html`.
-
-The Javadoc for the `Permission` class is at
-`http://docs.oracle.com/javase/8/docs/api/java/security/Permission.html`.
-
-[[gbyah]][[GSDVG00373]][[enabling-and-disabling-the-security-manager]]
-
-Enabling and Disabling the Security Manager
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The security manager is disabled by default.
-
-In a production environment, you may be able to safely disable the
-security manager if all of the following are true:
-
-* Performance is critical
-* Deployment to the production server is carefully controlled
-* Only trusted applications are deployed
-* Applications don't need policy enforcement
-
-Disabling the security manager may improve performance significantly for
-some types of applications.
-
-To enable the security manager, do one of the following:
-
-* To use the Administration Console, open the Security component under
-the relevant configuration, and check the Security Manager Enabled box.
-Then restart the server. For details, click the Help button in the
-Administration Console.
-* Use the following `asadmin create-jvm-options` command, then restart
-the server: +
-[source,oac_no_warn]
-----
-asadmin create-jvm-options -Djava.security.manager
-----
-
-To disable the security manager, uncheck the Security Manager Enabled
-box or use the corresponding `asadmin delete-jvm-options` command. For
-more information about `create-jvm-options` and `delete-jvm-options`,
-see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference
-Manual].
-
-If the security manager is enabled and you are using the Java
-Persistence API by calling `Persistence.createEMF()`, the EclipseLink
-persistence provider requires that you set the
-`eclipselink.security.usedoprivileged` JVM option to `true` as follows:
-
-[source,oac_no_warn]
-----
-asadmin create-jvm-options -Declipselink.security.usedoprivileged=true
-----
-
-If the security manager is enabled and you are using the Java
-Persistence API by injecting or looking up an entity manager or entity
-manager factory, the EJB container sets this JVM option for you.
-
-You must grant additional permissions to CDI-enabled Java EE
-applications that are deployed in a GlassFish Server 5.0 domain or
-cluster for which security manager is enabled. These additional
-permissions are not required when security manager is disabled.
-
-To deploy CDI-enabled Java EE applications in a GlassFish Server 5.0
-domain or cluster for which security manager is enabled, add the
-following permissions to the applications:
-
-[source,oac_no_warn]
-----
-grant codeBase "file:${com.sun.aas.instanceRoot}/applications/[ApplicationName]" {
- permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
-};
-----
-
-For example, for a CDI application named `foo.war`, add the following
-permissions to the `server.policy` file, restart the domain or cluster,
-and then deploy and use the application.
-
-[source,oac_no_warn]
-----
-grant codeBase "file:${com.sun.aas.instanceRoot}/applications/foo" {
- permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
-}; 
-----
-
-For more information about modifying application permissions, see
-link:#beabz[Changing Permissions for an Application].
-
-[[beaca]][[GSDVG00122]][[configuring-message-security-for-web-services]]
-
-Configuring Message Security for Web Services
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-In message security, security information is applied at the message
-layer and travels along with the web services message. Web Services
-Security (WSS) is the use of XML Encryption and XML Digital Signatures
-to secure messages. WSS profiles the use of various security tokens
-including X.509 certificates, Security Assertion Markup Language (SAML)
-assertions, and username/password tokens to achieve this.
-
-Message layer security differs from transport layer security in that it
-can be used to decouple message protection from message transport so
-that messages remain protected after transmission, regardless of how
-many hops they travel.
-
-
-[NOTE]
-=======================================================================
-
-Message security (JSR 196) is supported only in the full GlassFish
-Server, not in the Web Profile.
-
-=======================================================================
-
-
-
-[NOTE]
-=======================================================================
-
-In this release of the GlassFish Server, message layer annotations are
-not supported.
-
-=======================================================================
-
-
-For more information about web services, see
-link:webservices.html#gaszn[Developing Web Services].
-
-For more information about message security, see the following:
-
-* "https://javaee.github.io/tutorial/security-intro.html[Introduction to
-Security in the Java EE Platform]" in The Java EE 8 Tutorial
-* link:../security-guide/toc.html#GSSCG[GlassFish Server Open Source Edition Security Guide]
-* http://www.jcp.org/en/jsr/detail?id=196[JSR 196]
-(`http://www.jcp.org/en/jsr/detail?id=196`), Java Authentication Service
-Provider Interface for Containers
-* The Liberty Alliance Project specifications at
-`http://www.projectliberty.org/resources/specifications.php/?f=resources/specifications.php`
-* The Oasis Web Services Security (WSS) specification at
-`http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf`
-* The Web Services Interoperability Organization (WS-I) Basic Security
-Profile (BSP) specification at
-`http://www.ws-i.org/Profiles/BasicSecurityProfile-1.0.html`
-* The XML and Web Services Security page at `http://xwss.java.net/`
-* The WSIT page at `http://wsit.java.net/`
-
-The following topics are addressed here:
-
-* link:#gbjxw[Message Security Providers]
-* link:#beacb[Message Security Responsibilities]
-* link:#beacf[Application-Specific Message Protection]
-* link:#beaci[Understanding and Running the Sample Application]
-
-[[gbjxw]][[GSDVG00374]][[message-security-providers]]
-
-Message Security Providers
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-When you first install the GlassFish Server, the providers
-`XWS_ClientProvider` and `XWS_ServerProvider` are configured but
-disabled. You can enable them in one of the following ways:
-
-* To enable the message security providers using the Administration
-Console, open the Security component under the relevant configuration,
-select the Message Security component, and select SOAP. Then select
-`XWS_ServerProvider` from the Default Provider list and
-`XWS_ClientProvider` from the Default Client Provider list. For details,
-click the Help button in the Administration Console.
-* You can enable the message security providers using the following
-commands. +
-[source,oac_no_warn]
-----
-asadmin set 
-server-config.security-service.message-security-config.SOAP.default_provider=XWS_ServerProvider
-asadmin set 
-server-config.security-service.message-security-config.SOAP.default_client_provider=XWS_ClientProvider
-----
-For more information about the `asadmin set` command, see the
-link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-
-The example described in link:#beaci[Understanding and Running the
-Sample Application] uses the `ClientProvider` and `ServerProvider`
-providers, which are enabled when the Ant targets are run. You don't
-need to enable these on the GlassFish Server prior to running the
-example.
-
-If you install the OpenSSO, you have these additional provider choices:
-
-* `AMClientProvider` and `AMServerProvider` - These providers secure web
-services and Simple Object Access Protocol (SOAP) messages using either
-WS-I BSP or Liberty ID-WSF tokens. These providers are used
-automatically if they are configured as the default providers. If you
-wish to override any provider settings, you can configure these
-providers in `message-security-binding` elements in the
-`glassfish-web.xml`, `glassfish-ejb-jar.xml`, and
-`glassfish-application-client.xml` deployment descriptor files.
-* `AMHttpProvider` - This provider handles the initial end user
-authentication for securing web services using Liberty ID-WSF tokens and
-redirects requests to the OpenSSO for single sign-on. To use this
-provider, specify it in the `httpservlet-security-provider` attribute of
-the `glassfish-web-app` element in the `glassfish-web.xml` file.
-
-Liberty specifications can be viewed at
-`http://www.projectliberty.org/resources/specifications.php/?f=resources/specifications.php`.
-The WS-I BSP specification can be viewed at
-`http://www.ws-i.org/Profiles/BasicSecurityProfile-1.0.html`.
-
-For more information about the GlassFish Server deployment descriptor
-files, see the link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition
-Application Deployment Guide].
-
-For information about configuring these providers in the GlassFish
-Server, see the link:../security-guide/toc.html#GSSCG[GlassFish Server Open Source Edition
-Security Guide]. For additional information about overriding provider
-settings, see link:#beacf[Application-Specific Message Protection].
-
-You can create new message security providers in one of the following
-ways:
-
-* To create a message security provider using the Administration
-Console, open the Security component under the relevant configuration,
-and select the Message Security component. For details, click the Help
-button in the Administration Console.
-* You can use the `asadmin create-message-security-provider` command to
-create a message security provider. For details, see the
-link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-
-In addition, you can set a few optional provider properties using the
-`asadmin set` command. For example:
-
-[source,oac_no_warn]
-----
-asadmin set server-config.security-service.message-security-config.provider-config.property.debug=true
-----
-
-The following table describes these message security provider
-properties.
-
-[[GSDVG534]][[sthref7]][[sthref8]]
-
-
-Table 4-2 Message Security Provider Properties
-
-[width="100%",cols="30%,24%,46%",options="header",]
-|=======================================================================
-|Property |Default |Description
-|`security.config` |domain-dir`/``config/``wss-server-``config-1.0.xml`
-a|
-Specifies the location of the message security configuration file. To
-point to a configuration file in the domain-dir`/config` directory, use
-the system property `${com.sun.aas.instanceRoot}/``config/`, for
-example:
-
-`${com.sun.aas.instanceRoot}/config/``wss-server-config-1.0.xml`
-
-See link:#gilzz[System Properties].
-
-|`debug` |`false` |If `true`, enables dumping of server provider debug
-messages to the server log.
-
-|`dynamic.username.password` |`false` |If `true`, signals the provider
-runtime to collect the user name and password from the `CallbackHandler`
-for each request. If `false`, the user name and password for
-`wsse:UsernameToken(s)` is collected once, during module initialization.
-This property is only applicable for a `ClientAuthModule`.
-
-|`encryption.key.alias` |`s1as` |Specifies the encryption key used by
-the provider. The key is identified by its `keystore` alias.
-
-|`signature.key.alias` |`s1as` |Specifies the signature key used by the
-provider. The key is identified by its `keystore` alias.
-|=======================================================================
-
-
-[[beacb]][[GSDVG00375]][[message-security-responsibilities]]
-
-Message Security Responsibilities
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-In the GlassFish Server, the system administrator and application
-deployer roles are expected to take primary responsibility for
-configuring message security. In some situations, the application
-developer may also contribute, although in the typical case either of
-the other roles may secure an existing application without changing its
-implementation and without involving the developer.
-
-The following topics are addressed here:
-
-* link:#beacc[Application Developer Responsibilities]
-* link:#beacd[Application Deployer Responsibilities]
-* link:#beace[System Administrator Responsibilities]
-
-[[beacc]][[GSDVG00241]][[application-developer-responsibilities]]
-
-Application Developer Responsibilities
-++++++++++++++++++++++++++++++++++++++
-
-The application developer can turn on message security, but is not
-responsible for doing so. Message security can be set up by the system
-administrator so that all web services are secured, or set up by the
-application deployer when the provider or protection policy bound to the
-application must be different from that bound to the container.
-
-The application developer is responsible for the following:
-
-* Determining if an application-specific message protection policy is
-required by the application. If so, ensuring that the required policy is
-specified at application assembly which may be accomplished by
-communicating with the application deployer.
-* Determining if message security is necessary at the GlassFish Server
-level. If so, ensuring that this need is communicated to the system
-administrator, or taking care of implementing message security at the
-GlassFish Server level.
-
-[[beacd]][[GSDVG00242]][[application-deployer-responsibilities]]
-
-Application Deployer Responsibilities
-+++++++++++++++++++++++++++++++++++++
-
-The application deployer is responsible for the following:
-
-* Specifying (at application assembly) any required application-specific
-message protection policies if such policies have not already been
-specified by upstream roles (the developer or assembler)
-* Modifying GlassFish Server deployment descriptors to specify
-application-specific message protection policies information
-(message-security-binding elements) to web service endpoint and service
-references
-
-These security tasks are discussed in link:#beacf[Application-Specific
-Message Protection]. A sample application using message security is
-discussed in link:#beaci[Understanding and Running the Sample
-Application].
-
-[[beace]][[GSDVG00243]][[system-administrator-responsibilities]]
-
-System Administrator Responsibilities
-+++++++++++++++++++++++++++++++++++++
-
-The system administrator is responsible for the following:
-
-* Configuring message security providers on the GlassFish Server.
-* Managing user databases.
-* Managing keystore and truststore files.
-* Installing the sample. This is only done if the `xms` sample
-application is used to demonstrate the use of message layer web services
-security.
-
-A system administrator uses the Administration Console to manage server
-security settings and uses a command line tool to manage certificate
-databases. Certificates and private keys are stored in key stores and
-are managed with `keytool`. If Network Security Services (NSS) is
-installed, certificates and private keys are stored in an NSS database,
-where they are managed using `certutil`. System administrator tasks are
-discussed in the link:../security-guide/toc.html#GSSCG[GlassFish Server Open Source Edition
-Security Guide].
-
-[[beacf]][[GSDVG00376]][[application-specific-message-protection]]
-
-Application-Specific Message Protection
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-When the GlassFish Server provided configuration is insufficient for
-your security needs, and you want to override the default protection,
-you can apply application-specific message security to a web service.
-
-Application-specific security is implemented by adding the message
-security binding to the web service endpoint, whether it is an EJB or
-servlet web service endpoint. Modify GlassFish Server XML files to add
-the message binding information.
-
-Message security can also be specified using a WSIT security policy in
-the WSDL file. For details, see the WSIT page at
-`http://wsit.java.net/`.
-
-For more information about message security providers, see
-link:#gbjxw[Message Security Providers].
-
-For more details on message security binding for EJB web services,
-servlet web services, and clients, see the XML file descriptions in
-"link:../application-deployment-guide/dd-elements.html#GSDPG00007[Elements of the GlassFish Server Deployment
-Descriptors]" in GlassFish Server Open Source Edition Application
-Deployment Guide.
-
-* For `glassfish-ejb-jar.xml`, see "link:../application-deployment-guide/dd-files.html#GSDPG00079[The
-glassfish-ejb-jar.xml File]" in GlassFish Server Open Source Edition
-Application Deployment Guide.
-* For `glassfish-web.xml`, see "link:../application-deployment-guide/dd-files.html#GSDPG00078[The glassfish-web.xml
-File]" in GlassFish Server Open Source Edition Application Deployment
-Guide.
-* For `glassfish-application-client.xml`, see "link:../application-deployment-guide/dd-files.html#GSDPG00081[The
-glassfish-application-client.xml file]" in GlassFish Server Open Source
-Edition Application Deployment Guide.
-
-The following topics are addressed here:
-
-* link:#beacg[Using a Signature to Enable Message Protection for All
-Methods]
-* link:#beach[Configuring Message Protection for a Specific Method Based
-on Digital Signatures]
-
-[[beacg]][[GSDVG00244]][[using-a-signature-to-enable-message-protection-for-all-methods]]
-
-Using a Signature to Enable Message Protection for All Methods
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-To enable message protection for all methods using digital signature,
-update the `message-security-binding` element for the EJB web service
-endpoint in the application's `glassfish-ejb-jar.xml` file. In this
-file, add `request-protection` and `response-protection` elements, which
-are analogous to the `request-policy` and `response-policy` elements
-discussed in the link:../security-guide/toc.html#GSSCG[GlassFish Server Open Source Edition
-Security Guide]. To apply the same protection mechanisms for all
-methods, leave the method-name element blank. link:#beach[Configuring
-Message Protection for a Specific Method Based on Digital Signatures]
-discusses listing specific methods or using wildcard characters.
-
-This section uses the sample application discussed in
-link:#beaci[Understanding and Running the Sample Application] to apply
-application-level message security to show only the differences
-necessary for protecting web services using various mechanisms.
-
-[[fvyag]][[GSDVG00052]][[to-enable-message-protection-for-all-methods-using-digital-signature]]
-
-To Enable Message Protection for All Methods Using Digital Signature
-
-Follow this procedure.
-
-1.  In a text editor, open the application's `glassfish-ejb-jar.xml`
-file. +
-For the `xms` example, this file is located in the directory
-app-dir`/xms-ejb/src/conf`, where app-dir is defined in link:#beacj[To
-Set Up the Sample Application].
-2.  Modify the `glassfish-ejb-jar.xml` file by adding the
-`message-security-binding` element as shown: +
-[source,oac_no_warn]
-----
-<glassfish-ejb-jar>
-  <enterprise-beans>
-    <unique-id>1</unique-id>
-    <ejb>
-      <ejb-name>HelloWorld</ejb-name>
-      <jndi-name>HelloWorld</jndi-name>
-      <webservice-endpoint>
-        <port-component-name>HelloIF</port-component-name>
-        <endpoint-address-uri>service/HelloWorld</endpoint-address-uri>
-        <message-security-binding auth-layer="SOAP">
-          <message-security>
-            <request-protection auth-source="content" />
-            <response-protection auth-source="content"/>
-          </message-security>
-        </message-security-binding>
-      </webservice-endpoint>
-    </ejb>
-  </enterprise-beans>
-</glassfish-ejb-jar>
-----
-3.  Compile, deploy, and run the application as described in
-link:#beack[To Run the Sample Application].
-
-[[beach]][[GSDVG00245]][[configuring-message-protection-for-a-specific-method-based-on-digital-signatures]]
-
-Configuring Message Protection for a Specific Method Based on Digital Signatures
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-To enable message protection for a specific method, or for a set of
-methods that can be identified using a wildcard value, follow these
-steps. As in the example discussed in link:#beacg[Using a Signature to
-Enable Message Protection for All Methods], to enable message protection
-for a specific method, update the `message-security-binding` element for
-the EJB web service endpoint in the application's
-`glassfish-ejb-jar.xml` file. To this file, add `request-protection` and
-`response-protection` elements, which are analogous to the
-`request-policy` and `response-policy` elements discussed in the
-link:../security-guide/toc.html#GSSCG[GlassFish Server Open Source Edition Security Guide]. The
-administration guide includes a table listing the set and order of
-security operations for different request and response policy
-configurations.
-
-This section uses the sample application discussed in
-link:#beaci[Understanding and Running the Sample Application] to apply
-application-level message security to show only the differences
-necessary for protecting web services using various mechanisms.
-
-[[fvybb]][[GSDVG00053]][[to-enable-message-protection-for-a-particular-method-or-set-of-methods-using-digital-signature]]
-
-To Enable Message Protection for a Particular Method or Set of Methods
-Using Digital Signature
-
-Follow this procedure.
-
-1.  In a text editor, open the application's `glassfish-ejb-jar.xml`
-file. +
-For the `xms` example, this file is located in the directory
-app-dir`/xms-ejb/src/conf`, where app-dir is defined in link:#beacj[To
-Set Up the Sample Application].
-2.  Modify the `glassfish-ejb-jar.xml` file by adding the
-`message-security-binding` element as shown: +
-[source,oac_no_warn]
-----
-<glassfish-ejb-jar>
-  <enterprise-beans>
-  <unique-id>1</unique-id>
-    <ejb>
-      <ejb-name>HelloWorld</ejb-name>
-      <jndi-name>HelloWorld</jndi-name>
-      <webservice-endpoint>
-        <port-component-name>HelloIF</port-component-name>
-        <endpoint-address-uri>service/HelloWorld</endpoint-address-uri>
-        <message-security-binding auth-layer="SOAP">
-          <message-security>
-            <message>
-              <java-method>
-                <method-name>ejbCreate</method-name>
-              </java-method>
-            </message>
-            <message>
-              <java-method>
-                <method-name>sayHello</method-name>
-              </java-method>
-            </message>
-            <request-protection auth-source="content" />
-            <response-protection auth-source="content"/>
-          </message-security>
-        </message-security-binding>
-      </webservice-endpoint>
-    </ejb>
-  </enterprise-beans>
-</glassfish-ejb-jar>
-----
-3.  Compile, deploy, and run the application as described in
-link:#beack[To Run the Sample Application].
-
-[[beaci]][[GSDVG00377]][[understanding-and-running-the-sample-application]]
-
-Understanding and Running the Sample Application
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This section discusses the WSS sample application. This sample
-application is installed on your system only if you installed the J2EE
-1.4 samples. If you have not installed these samples, see link:#beacj[To
-Set Up the Sample Application].
-
-The objective of this sample application is to demonstrate how a web
-service can be secured with WSS. The web service in the `xms` example is
-a simple web service implemented using a Java EE EJB endpoint and a web
-service endpoint implemented using a servlet. In this example, a service
-endpoint interface is defined with one operation, `sayHello`, which
-takes a string then sends a response with `Hello` prefixed to the given
-string. You can view the WSDL file for the service endpoint interface at
-app-dir`/xms-ejb/src/``conf/HelloWorld.wsdl`, where app-dir is defined
-in link:#beacj[To Set Up the Sample Application].
-
-In this application, the client looks up the service using the JNDI name
-`java:comp/env/service/HelloWorld` and gets the port information using a
-static stub to invoke the operation using a given name. For the name
-Duke, the client gets the response `Hello Duke!`
-
-This example shows how to use message security for web services at the
-GlassFish Server level. For information about using message security at
-the application level, see link:#beacf[Application-Specific Message
-Protection]. The WSS message security mechanisms implement message-level
-authentication (for example, XML digital signature and encryption) of
-SOAP web services invocations using the X.509 and username/password
-profiles of the OASIS WS-Security standard, which can be viewed from the
-following URL:
-`http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf`.
-
-The following topics are addressed here:
-
-* link:#beacj[To Set Up the Sample Application]
-* link:#beack[To Run the Sample Application]
-
-[[beacj]][[GSDVG00054]][[to-set-up-the-sample-application]]
-
-To Set Up the Sample Application
-++++++++++++++++++++++++++++++++
-
-[[GSDVG535]]
-
-Before You Begin
-
-To have access to this sample application, you must have previously
-installed the J2EE 1.4 samples. If the samples are not installed, follow
-the steps in the following section.
-
-After you follow these steps, the sample application is located in the
-directory
-as-install`/j2ee14-samples/samples/webservices/security/ejb/apps/xms/`
-or in a directory of your choice. For easy reference throughout the rest
-of this section, this directory is referred to as simply app-dir.
-
-1.  Go to the
-http://www.oracle.com/technetwork/java/javaee/download-141771.html[J2EE
-1.4 download URL]
-(`http://www.oracle.com/technetwork/java/javaee/download-141771.html`)
-in your browser.
-2.  Click on the Download button for the Samples Bundle.
-3.  Click on Accept License Agreement.
-4.  Click on the J2EE SDK Samples link.
-5.  Choose a location for the `j2eesdk-1_4_03-samples.zip` file. +
-Saving the file to as-install is recommended.
-6.  Unzip the file. +
-Unzipping to the as-install`/j2ee14-samples` directory is recommended.
-For example, you can use the following command. +
-[source,oac_no_warn]
-----
-unzip j2eesdk-1_4_03-samples.zip -d j2ee14-samples
-----
-
-[[beack]][[GSDVG00055]][[to-run-the-sample-application]]
-
-To Run the Sample Application
-+++++++++++++++++++++++++++++
-
-1.  Make sure that the GlassFish Server is running. +
-Message security providers are set up when the Ant targets are run, so
-you do not need to configure these on the GlassFish Server prior to
-running this example.
-2.  If you are not running HTTP on the default port of 8080, change the
-WSDL file for the example to reflect the change, and change the
-`common.properties` file to reflect the change as well. +
-The WSDL file for this example is located at
-app-dir`/xms-ejb/``src/conf/HelloWorld.wsdl`. The port number is in the
-following section: +
-[source,oac_no_warn]
-----
-<service name="HelloWorld">
-  <port name="HelloIFPort" binding="tns:HelloIFBinding">
-    <soap:address location="http://localhost:8080/service/HelloWorld"/>
-  </port>
-</service>
-----
-Verify that the properties in the as-install`/samples/common.properties`
-file are set properly for your installation and environment. If you need
-a more detailed description of this file, refer to the "Configuration"
-section for the web services security applications at
-as-install`/j2ee14-samples/samples/webservices/security/docs/common.html#Logging`.
-3.  Change to the app-dir directory.
-4.  Run the following Ant targets to compile, deploy, and run the
-example application:
-1.  To compile samples: +
-`ant`
-2.  To deploy samples: +
-`ant deploy`
-3.  To run samples: +
-`ant run` +
-If the sample has compiled and deployed properly, you see the following
-response on your screen after the application has run: +
-`run:[echo] Running the xms program:[exec] Established message level security : Hello Duke!`
-5.  To undeploy the sample, run the following Ant target: +
-[source,oac_no_warn]
-----
-ant undeploy
-----
-All of the web services security examples use the same web service name
-(`HelloWorld`) and web service ports. These examples show only the
-differences necessary for protecting web services using various
-mechanisms. Make sure to undeploy an application when you have completed
-running it. If you do not, you receive an `Already in Use` error and
-deployment failures when you try to deploy another web services example
-application.
-
-[[beacm]][[GSDVG00123]][[programmatic-login-using-the-programmaticlogin-class]]
-
-Programmatic Login Using the ProgrammaticLogin Class
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Programmatic login allows a deployed Java EE application or module to
-invoke a login method. If the login is successful, a `SecurityContext`
-is established as if the client had authenticated using any of the
-conventional Java EE mechanisms. Programmatic login is supported for
-servlet and EJB components on the server side, and for stand-alone or
-application clients on the client side. Programmatic login is useful for
-an application having special needs that cannot be accommodated by any
-of the Java EE standard authentication mechanisms.
-
-This section describes a proprietary GlassFish mechanism, but see also
-the standard security APIs in the Java EE tutorial.
-
-
-[NOTE]
-=======================================================================
-
-The `com.sun.appserv.security.ProgrammaticLogin` class in GlassFish
-Server is not a Java EE API; therefore, it is not portable to other
-application servers.
-
-=======================================================================
-
-
-The following topics are addressed here:
-
-* link:#beacn[Programmatic Login Precautions]
-* link:#beaco[Granting Programmatic Login Permission]
-* link:#beacp[The `ProgrammaticLogin` Class]
-
-[[beacn]][[GSDVG00378]][[programmatic-login-precautions]]
-
-Programmatic Login Precautions
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The GlassFish Server is not involved in how the login information
-(`user`, `password`) is obtained by the deployed application.
-Programmatic login places the burden on the application developer with
-respect to assuring that the resulting system meets security
-requirements. If the application code reads the authentication
-information across the network, the application determines whether to
-trust the user.
-
-Programmatic login allows the application developer to bypass the
-GlassFish Server-supported authentication mechanisms and feed
-authentication data directly to the security service. While flexible,
-this capability should not be used without some understanding of
-security issues.
-
-Since this mechanism bypasses the container-managed authentication
-process and sequence, the application developer must be very careful in
-making sure that authentication is established before accessing any
-restricted resources or methods. It is also the application developer's
-responsibility to verify the status of the login attempt and to alter
-the behavior of the application accordingly.
-
-The programmatic login state does not necessarily persist in sessions or
-participate in single sign-on.
-
-Lazy authentication is not supported for programmatic login. If an
-access check is reached and the deployed application has not properly
-authenticated using the programmatic login method, access is denied
-immediately and the application might fail if not coded to account for
-this occurrence. One way to account for this occurrence is to catch the
-access control or security exception, perform a programmatic login, and
-repeat the request.
-
-[[beaco]][[GSDVG00379]][[granting-programmatic-login-permission]]
-
-Granting Programmatic Login Permission
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The `ProgrammaticLoginPermission` permission is required to invoke the
-programmatic login mechanism for an application if the security manager
-is enabled. For information about the security manager, see
-link:#beabx[The `server.policy` File]. This permission is not granted by
-default to deployed applications because this is not a standard Java EE
-mechanism.
-
-To grant the required permission to the application, add the following
-to the domain-dir`/config/server.policy` file:
-
-[source,oac_no_warn]
-----
-grant codeBase "file:jar-file-path" {
-     permission com.sun.appserv.security.ProgrammaticLoginPermission
-     "login";
- };
-----
-
-The jar-file-path is the path to the application's JAR file.
-
-[[beacp]][[GSDVG00380]][[the-programmaticlogin-class]]
-
-The `ProgrammaticLogin` Class
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The `com.sun.appserv.security.ProgrammaticLogin` class enables a user to
-perform login programmatically.
-
-For Javadoc tool pages relevant to programmatic login, see the
-`com.sun.appserv.security` package.
-
-The `ProgrammaticLogin` class has four `login` methods, two for servlets
-or JSP files and two for EJB components.
-
-The login methods for servlets or JSP files have the following
-signatures:
-
-[source,oac_no_warn]
-----
-public java.lang.Boolean login(String user, String password, 
-    javax.servlet.http.HttpServletRequest request, 
-    javax.servlet.http.HttpServletResponse response)
-
-public java.lang.Boolean login(String user, String password, 
-    String realm, javax.servlet.http.HttpServletRequest request, 
-    javax.servlet.http.HttpServletResponse response, boolean errors) 
-    throws java.lang.Exception
-----
-
-The login methods for EJB components have the following signatures:
-
-[source,oac_no_warn]
-----
-public java.lang.Boolean login(String user, String password)
-
-public java.lang.Boolean login(String user, String password, 
-    String realm, boolean errors) throws java.lang.Exception
-----
-
-All of these `login` methods accomplish the following:
-
-* Perform the authentication
-* Return `true` if login succeeded, `false` if login failed
-
-The login occurs on the realm specified unless it is null, in which case
-the domain's default realm is used. The methods with no realm parameter
-use the domain's default realm.
-
-If the errors flag is set to `true`, any exceptions encountered during
-the login are propagated to the caller. If set to `false`, exceptions
-are thrown.
-
-On the client side, realm and errors parameters are ignored and the
-actual login does not occur until a resource requiring a login is
-accessed. A `java.rmi.AccessException` with `COBRA NO_PERMISSION` occurs
-if the actual login fails.
-
-The logout methods for servlets or JSP files have the following
-signatures:
-
-[source,oac_no_warn]
-----
-public java.lang.Boolean logout(HttpServletRequest request, 
-    HttpServletResponse response)
-
-public java.lang.Boolean logout(HttpServletRequest request, 
-    HttpServletResponse response, boolean errors) 
-    throws java.lang.Exception
-----
-
-The logout methods for EJB components have the following signatures:
-
-[source,oac_no_warn]
-----
-public java.lang.Boolean logout()
-
-public java.lang.Boolean logout(boolean errors) 
-    throws java.lang.Exception
-----
-
-All of these `logout` methods return `true` if logout succeeded, `false`
-if logout failed.
-
-If the errors flag is set to `true`, any exceptions encountered during
-the logout are propagated to the caller. If set to `false`, exceptions
-are thrown.
-
-[[beacq]][[GSDVG00124]][[user-authentication-for-single-sign-on]]
-
-User Authentication for Single Sign-on
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The single sign-on feature of the GlassFish Server allows multiple web
-applications deployed to the same virtual server to share the user
-authentication state. With single sign-on enabled, users who log in to
-one web application become implicitly logged into other web applications
-on the same virtual server that require the same authentication
-information. Otherwise, users would have to log in separately to each
-web application whose protected resources they tried to access.
-
-A sample application using the single sign-on scenario could be a
-consolidated airline booking service that searches all airlines and
-provides links to different airline web sites. After the user signs on
-to the consolidated booking service, the user information can be used by
-each individual airline site without requiring another sign-on.
-
-Single sign-on operates according to the following rules:
-
-* Single sign-on applies to web applications configured for the same
-realm and virtual server. The realm is defined by the `realm-name`
-element in the `web.xml` file. For information about virtual servers,
-see "link:../administration-guide/http_https.html#GSADG00017[Administering Internet Connectivity]" in GlassFish
-Server Open Source Edition Administration Guide.
-* As long as users access only unprotected resources in any of the web
-applications on a virtual server, they are not challenged to
-authenticate themselves.
-* As soon as a user accesses a protected resource in any web application
-associated with a virtual server, the user is challenged to authenticate
-himself or herself, using the login method defined for the web
-application currently being accessed.
-* After authentication, the roles associated with this user are used for
-access control decisions across all associated web applications, without
-challenging the user to authenticate to each application individually.
-* When the user logs out of one web application (for example, by
-invalidating the corresponding session), the user's sessions in all web
-applications are invalidated. Any subsequent attempt to access a
-protected resource in any application requires the user to authenticate
-again.
-
-The single sign-on feature utilizes HTTP cookies to transmit a token
-that associates each request with the saved user identity, so it can
-only be used in client environments that support cookies.
-
-To configure single sign-on, set the following virtual server
-properties:
-
-* `sso-enabled` - If `false`, single sign-on is disabled for this
-virtual server, and users must authenticate separately to every
-application on the virtual server. The default is `false`.
-* `sso-max-inactive-seconds` - Specifies the time after which a user's
-single sign-on record becomes eligible for purging if no client activity
-is received. Since single sign-on applies across several applications on
-the same virtual server, access to any of the applications keeps the
-single sign-on record active. The default value is 5 minutes (`300`
-seconds). Higher values provide longer single sign-on persistence for
-the users at the expense of more memory use on the server.
-* `sso-reap-interval-seconds` - Specifies the interval between purges of
-expired single sign-on records. The default value is `60`.
-
-Here are example `asadmin set` commands with default values:
-
-[source,oac_no_warn]
-----
-asadmin set server-config.http-service.virtual-server.vsrv1.property.sso-enabled="true"
-asadmin set server-config.http-service.virtual-server.vsrv1.property.sso-max-inactive-seconds="300"
-asadmin set server-config.http-service.virtual-server.vsrv1.property.sso-reap-interval-seconds="60"
-----
-
-For more information about the `asadmin set` command, see the
-link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-
-[[gizel]][[GSDVG00125]][[adding-authentication-mechanisms-to-the-servlet-container]]
-
-Adding Authentication Mechanisms to the Servlet Container
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can use JSR 196 in the web tier to facilitate the injection of
-pluggable authentication modules within the servlet constraint
-processing engine. The GlassFish Server includes implementations of a
-number of HTTP layer authentication mechanisms such as basic, form, and
-digest authentication. You can add alternative implementations of the
-included mechanisms or implementations of new mechanisms such as HTTP
-Negotiate/SPNEGO, OpenID, or CAS.
-
-The following topics are addressed here:
-
-* link:#BACCFGBF[The GlassFish Server and JSR-375]
-* link:#gizfz[The GlassFish Server and JSR 196]
-* link:#gizdx[Writing a Server Authentication Module]
-* link:#gizeb[Sample Server Authentication Module]
-* link:#gizfa[Compiling and Installing a Server Authentication Module]
-* link:#gizfe[Configuring a Server Authentication Module]
-* link:#gizfm[Binding a Server Authentication Module to Your
-Application]
-
-[[BACCFGBF]][[GSDVG564]][[the-glassfish-server-and-jsr-375]]
-
-The GlassFish Server and JSR-375
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The Glassfish Server implements JSR-375 to provide built-in support for
-BASIC, FORM and Custom FORM authentication mechanisms. JSR-375 also
-defines plug-in interfaces for authentication and identity stores, that
-is, the `HttpAuthenticationMechanism` interface and the `IdentityStore`
-interface, respectively. Though `HttpAuthenticationMechanism`
-implementations can authenticate users in any manner they choose, the
-`IdentityStore` interface provides a convenient mechanism. A significant
-advantage of using `HttpAuthenticationMechanism` and `IdentityStore`
-over the declarative mechanisms defined by the Servlet specification is
-that it allows an application to control the identity stores that it
-authenticates against, in a standard, portable way. You can use the
-built-in implementations of these APIs, or define custom
-implementations.
-
-Java EE Security API defines several annotations, with names that end
-with Definition, which when used makes the corresponding built-in
-mechanism available as a CDI bean. Java EE Security API also supports
-the use of Expression Language 3.0 in these annotations to allow dynamic
-configuration.
-
-[[GSDVG565]][[sthref9]]
-
-
-[[built-in-authentication-mechanisms]]
-Built-in Authentication Mechanisms
-++++++++++++++++++++++++++++++++++
-
-An application packages its own `HttpAuthenticationMechanism` by
-including in a bean archive that is a part of the application.
-Alternatively, it may select and configure one of the container's
-built-in mechanisms using the corresponding annotation, as listed below:
-
-* `BasicAuthenticationMechanismDefintion`—implements BASIC
-authentication that conforms to the behavior of the servlet container
-when BASIC <auth-method> is declared in web.xml.
-* `CustomFormAuthenticationMechanismDefinition`—implements FORM
-authentication that conforms to the behavior of the servlet container
-when the FORM <auth-method> is declared in web.xml.
-* `FormAuthenticationMechanismDefinition`—implements a modified version
-of FORM authentication in which custom handling replaces the POST to
-j_security_check.
-
-In GlassFish Server, all built-in authentication mechanisms need to be
-authenticated using an identity store. The `IdentityStore` interface,
-included in the Java EE Security API, defines an SPI for interacting
-with identity stores, which are directories or databases containing user
-account information. The `IdentityStore` interface has four methods:
-`validate(Credential)`, `getCallerGroups(CredentialValidationResult)`,
-`validationTypes()` and `priority()`.Developers can provide their own
-implementation of this interface, or use one of the built-in Identity
-Stores. The `RememberMeIdentityStore` interface, which is a variation on
-the IdentityStore interface, can be used when an application wants to
-"remember" a user's authenticated session for an extended period, so
-that the caller can return to the application periodically without
-needing to present primary authentication credentials each time.
-
-There are two built-in implementations of `IdentityStore`: an LDAP
-identity store, and a Database identity store. The following snippet
-shows the usage of `DatabaseIdentityStoreDefinition`, which makes
-`DatabaseIdentityStore` available as CDI bean.
-
-[source,oac_no_warn]
-----
-@DatabaseIdentityStoreDefinition(
-    callerQuery = "#{'select password from caller where name = ?'}",
-    groupsQuery = "select group_name from caller_groups where caller_name = ?",
-    hashAlgorithm = Pbkdf2PasswordHash.class,
-    priorityExpression = "#{100}",
-    hashAlgorithmParameters = {
-        "Pbkdf2PasswordHash.Iterations=3072",
-        "${applicationConfig.dyna}"
-    }   
-)
-----
-
-Since Java EE Security API provides support for Expression Langauge 3.0,
-regular expressions can be used to set value of annotation attributes.
-
-The GlassFish Server provides out of the box implementation of
-`Pbkdf2PasswordHash` that supports PBKDF2 password hashing. It is
-suggested that you use `Pbkdf2PasswordHash` for generating and
-validating passwords, unless there are specific requirements which
-cannot be met any other way.
-
-[[GSDVG566]][[sthref10]]
-
-
-[[custom-authentication-mechanism]]
-Custom Authentication Mechanism
-+++++++++++++++++++++++++++++++
-
-An application provider can choose to provide its own custom
-authentication mechanism, apart from built-in authentication mechanism.
-
-A custom authentication mechanism implements the
-`HttpAuthenticationMechanism` interface, introduced in Java EE Security
-API. This interface defines the following three methods.
-
-[source,oac_no_warn]
-----
-AuthenticationStatus validateRequest(HttpServletRequest request,
-                                     HttpServletResponse response,
-                                     HttpMessageContext httpMessageContext
-                                    ) throws AuthenticationException;
- 
-AuthenticationStatus secureResponse(HttpServletRequest request,
-                                    HttpServletResponse response,
-                                    HttpMessageContext httpMessageContext
-                                    ) throws AuthenticationException;
- 
-void cleanSubject(HttpServletRequest request,
-                  HttpServletResponse response,
-                  HttpMessageContext   httpMessageContext);
-----
-
-`HttpAuthenticationMechanism` returns `AuthenticationStatus` to indicate
-the status of authentication request. Internally, it gets translated to
-corresponding JASPIC `AuthStatus` as shown below:
-
-* `AuthenticationStatus.NOT_DONE` to `AuthStatus.SUCCESS`
-* `AuthenticationStatus.SEND_CONTINUE` to `AuthStatus.SEND_CONTINUE`
-* `AuthenticationStatus.SUCCESS` to `AuthStatus.SUCCESS`
-* `AuthenticationStatus.SEND_FAILURE` to `AuthStatus.SEND_FAILURE`
-
-Each method of the `HttpAuthenticationMechanism` interface performs the
-same function as the corresponding `ServerAuth` methods. Unlike JASPIC,
-`HttpAuthenticationMechanism` is specified for the servlet container
-only. Only the `validateRequest()` must be implemented, for other two
-methods, default behaviors are specified.
-
-`validateRequest` allows a caller to authenticate. The request gets
-inspected inside `validateRequest` to read credential or any other
-information, or it can write to standard response with status of the
-authentication request or redirect the caller to an OAuth provider. Once
-the credential is validated, the result of the validation is
-communicated to the container using the `HttpMessageContext` parameter.
-
-[[GSDVG567]]
-
-Sample Http Authentication Mechanism
-
-The class `MyAuthenticationMechanism.java` is a sample
-`HttpAuthenticationMechanism` implementation. Note that only
-`validateRequest` method has been implemented, since Java EE Security
-API provides default implementation of other two methods. An application
-provider may choose to override the default implementation depending on
-the requirement.
-
-[source,oac_no_warn]
-----
-import javax.enterprise.context.RequestScoped;
-import javax.inject.Inject;
-import javax.security.enterprise.AuthenticationException;
-import javax.security.enterprise.AuthenticationStatus;
-import javax.security.enterprise.authentication.mechanism.http.HttpAuthenticationMechanism;
-import javax.security.enterprise.authentication.mechanism.http.HttpMessageContext;
-import javax.security.enterprise.credential.UsernamePasswordCredential;
-import javax.security.enterprise.identitystore.CredentialValidationResult;
-import javax.security.enterprise.identitystore.IdentityStoreHandler;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
- 
-import static javax.security.enterprise.identitystore.CredentialValidationResult.Status.VALID;
- 
-@RequestScoped
-public class MyAuthenticationMechanism implements HttpAuthenticationMechanism {
- 
-    @Inject
-    private IdentityStoreHandler identityStoreHandler;
- 
-    @Override
-    public AuthenticationStatus validateRequest(HttpServletRequest request, HttpServletResponse response, HttpMessageContext httpMessageContext) throws AuthenticationException {
- 
-          // Get the (caller) name and password from the request 
-        // NOTE: This is for the smallest possible example only. In practice 
-        // putting the password in a request query parameter is highly 
-        // insecure and is discouraged. 
-        String name = request.getParameter("name");
-        String password = request.getParameter("password");
- 
-        if (name != null && password != null) {
- 
-            // Delegate the {credentials in -> identity data out} function to 
-            // the Identity Store 
-            CredentialValidationResult result = identityStoreHandler.validate(
-                new UsernamePasswordCredential(name, password));
- 
-            if (result.getStatus() == VALID) {
-                // Communicate the details of the authenticated user to the 
-                // container. 
-                response.addHeader("Authentication Mechanism", "MyAuthenticationMechanism");
-                return httpMessageContext.notifyContainerAboutLogin(
-                    result.getCallerPrincipal(), result.getCallerGroups());
-            } else {
-                return httpMessageContext.responseUnauthorized();
-            }
-        }
- 
-        return httpMessageContext.doNothing();
-    }
- 
-}
-----
-
-[[gizfz]][[GSDVG00381]][[the-glassfish-server-and-jsr-196]]
-
-The GlassFish Server and JSR 196
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The GlassFish Server implements the Servlet Container Profile of JSR
-196, Java Authentication Service Provider Interface for Containers. JSR
-196 defines a standard service provider interface (SPI) that extends the
-concepts of the Java Authentication and Authorization Service (JAAS) to
-enable pluggability of message authentication modules in message
-processing runtimes. The JSR 196 standard defines profiles that
-establish contracts for the use of the SPI in specific contexts. The
-Servlet Container Profile of JSR 196 defines the use of the SPI by a
-Servlet container such that:
-
-* The resulting container can be configured with new authentication
-mechanisms.
-* The container employs the configured mechanisms in its enforcement of
-the declarative servlet security model (declared in a `web.xml` file
-using `security-constraint` elements).
-
-The JSR 196 specification defines a simple message processing model
-composed of four interaction points:
-
-1.  `secureRequest` on the client
-2.  `validateRequest` on the server
-3.  `secureResponse` on the server
-4.  `validateResponse` on the client
-
-A message processing runtime uses the SPI at these interaction points to
-delegate the corresponding message security processing to authentication
-providers, also called authentication modules, integrated into the
-runtime by way of the SPI.
-
-A compatible server-side message processing runtime, such as the
-GlassFish Server servlet container, supports the `validateRequest` and
-`secureResponse` interaction points of the message processing model. The
-servlet container uses the SPI at these interaction points to delegate
-the corresponding message security processing to a server authentication
-module (SAM), integrated by the SPI into the container.
-
-[[gizdx]][[GSDVG00382]][[writing-a-server-authentication-module]]
-
-Writing a Server Authentication Module
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A key step in adding an authentication mechanism to a compatible
-server-side message processing runtime such as the GlassFish Server
-servlet container is acquiring a SAM that implements the desired
-authentication mechanism. One way to do that is to write the SAM
-yourself.
-
-A SAM implements the javax.security.auth.message.module.ServerAuthModule
-interface as defined by JSR 196. A SAM is invoked indirectly by the
-message processing runtime at the `validateRequest` and `secureResponse`
-interaction points. A SAM must implement the five methods of the
-ServerAuthModule interface:
-
-* `getSupportedMessageTypes` — An array of `Class` objects where each
-element defines a message type supported by the SAM. For a SAM to be
-compatible with the Servlet Container Profile, the returned array must
-include the `HttpServletRequest.class` and `HttpServletResponse.class`
-objects.
-* `initialize(MessagePolicy requestPolicy, MessagePolicy responsePolicy, CallbackHandler Map options)`
-— The container calls this method to provide the SAM with configuration
-values and with a `CallbackHandler`. The configuration values are
-returned in the policy arguments and in the options `Map`. The SAM uses
-`CallbackHandler` to access services, such as password validation,
-provided by the container.
-* `AuthStatus validateRequest(MessageInfo messageInfo, Subject clientSubject, Subject serviceSubject)`
-— The container calls this method to process each received
-`HttpServletRequest`. The request and its associated
-`HttpServletResponse` are passed by the container to the SAM in the
-`messageInfo` argument. The SAM processes the request and may establish
-the response to be returned by the container. The SAM uses the provided
-`Subject` arguments to convey its authentication results. The SAM
-returns different status values to control the container's invocation
-processing. The status values and the circumstances under which they are
-returned are as follows:
-
-** `AuthStatus.SUCCESS` is returned when the application request message
-is successfully validated. The container responds to this status value
-by using the returned client `Subject` to invoke the target of the
-request. When this value is returned, the SAM (provided a custom
-`AuthConfigProvider` is not being used) must use its `CallbackHandler`
-to handle a `CallerPrincipalCallback` using the `clientSubject` as an
-argument to the callback.
-
-** `AuthStatus.SEND_CONTINUE` indicates that message validation is
-incomplete and that the SAM has established a preliminary response as
-the response message in `messageInfo`. The container responds to this
-status value by sending the response to the client.
-
-** `AuthStatus.SEND_FAILURE` indicates that message validation failed
-and that the SAM has established an appropriate failure response message
-in `messageInfo`. The container responds to this status value by sending
-the response to the client.
-
-** `AuthStatus.SEND_SUCCESS` is not typically returned. This status
-value indicates the end of a multi-message security dialog originating
-after the service interaction and during the processing of the
-application response. The container responds to this status value by
-sending the response to the client. +
-The `validateRequest` method may also throw an `AuthException` to
-indicate that the message processing by the SAM failed without
-establishing a failure response message in `messageInfo`.
-* `secureResponse(MessageInfo messageInfo, Subject serviceSubject)` —
-The container calls this method before sending a response, resulting
-from an application invocation, to the client. The response is passed to
-the SAM in the `messageInfo` argument. In most cases, this method should
-just return the `SEND_SUCCESS` status.
-* `cleanSubject(MessageInfo messageInfo, Subject subject)` — This method
-removes the mechanism-specific principals, credentials, or both from the
-subject. This method is not currently called by the container. A
-legitimate implementation could remove all the principals from the
-argument subject.
-
-See the Servlet Container Profile section in the JSR 196 specification
-for additional background and details.
-
-[[gizeb]][[GSDVG00383]][[sample-server-authentication-module]]
-
-Sample Server Authentication Module
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The class `MySam.java` is a sample SAM implementation. Notice that the
-sample implements the five methods of the ServerAuthModule interface.
-This SAM implements an approximation of HTTP basic authentication.
-
-[source,oac_no_warn]
-----
-package tip.sam;
-
-   import java.io.IOException;
-   import java.util.Map;
-   import javax.security.auth.Subject;
-   import javax.security.auth.callback.Callback;
-   import javax.security.auth.callback.CallbackHandler;
-   import javax.security.auth.callback.UnsupportedCallbackException;
-   import javax.security.auth.message.AuthException;
-   import javax.security.auth.message.AuthStatus;
-   import javax.security.auth.message.MessageInfo;
-   import javax.security.auth.message.MessagePolicy;
-   import javax.security.auth.message.callback.CallerPrincipalCallback;
-   import javax.security.auth.message.callback.GroupPrincipalCallback;
-   import javax.security.auth.message.callback.PasswordValidationCallback;
-   import javax.security.auth.message.module.ServerAuthModule;
-   import javax.servlet.http.HttpServletRequest;
-   import javax.servlet.http.HttpServletResponse;
-   import org.apache.catalina.util.Base64;
-
-   public class MySam implements ServerAuthModule {
-
-      protected static final Class[]
-        supportedMessageTypes = new Class[]{
-          HttpServletRequest.class,
-          HttpServletResponse.class
-      };
-
-      private MessagePolicy requestPolicy;
-      private MessagePolicy responsePolicy;
-      private CallbackHandler handler;
-      private Map options;
-      private String realmName = null;
-      private String defaultGroup[] = null;
-      privte static final String REALM_PROPERTY_NAME =
-          "realm.name";
-      private static final String GROUP_PROPERTY_NAME =
-          "group.name";
-      private static final String BASIC = "Basic";
-      static final String AUTHORIZATION_HEADER =
-          "authorization";
-      static final String AUTHENTICATION_HEADER =
-          "WWW-Authenticate";
-
-      public void initialize(MessagePolicy reqPolicy,
-              MessagePolicy resPolicy,
-              CallbackHandler cBH, Map opts)
-              throws AuthException {
-          requestPolicy = reqPolicy;
-          responsePolicy = resPolicy;
-          handler = cBH;
-          options = opts;
-          if (options != null) {
-              realmName = (String)
-                  options.get(REALM_PROPERTY_NAME);
-              if (options.containsKey(GROUP_PROPERTY_NAME)) {
-                  defaultGroup = new String[]{(String)
-                      options.get(GROUP_PROPERTY_NAME)};
-              }
-          }
-      }
-
-      public Class[] getSupportedMessageTypes() {
-          return supportedMessageTypes;
-      }
-
-      public AuthStatus validateRequest(
-              MessageInfo msgInfo, Subject client,
-              Subject server) throws AuthException {
-          try {
-
-              String username =
-                  processAuthorizationToken(msgInfo, client);
-              if (username ==
-                  null && requestPolicy.isMandatory()) {
-                  return sendAuthenticateChallenge(msgInfo);
-              }
-
-             setAuthenticationResult(
-                 username, client, msgInfo);
-             return AuthStatus.SUCCESS;
-
-          } catch (Exception e) {
-              AuthException ae = new AuthException();
-              ae.initCause(e);
-              throw ae;
-          }
-      }
-
-      private String processAuthorizationToken(
-              MessageInfo msgInfo, Subject s)
-              throws AuthException {
-
-          HttpServletRequest request =
-                  (HttpServletRequest)
-                  msgInfo.getRequestMessage();
-
-          String token =
-                  request.getHeader(AUTHORIZATION_HEADER);
-
-          if (token != null && token.startsWith(BASIC + " ")) {
-
-              token = token.substring(6).trim();
-
-              // Decode and parse the authorization token
-              String decoded =
-                  new String(Base64.decode(token.getBytes()));
-
-              int colon = decoded.indexOf(':');
-              if (colon <= 0 || colon == decoded.length() - 1) {
-                  return (null);
-              }
-
-              String username = decoded.substring(0, colon);
-
-             // use the callback to ask the container to
-             // validate the password
-            PasswordValidationCallback pVC =
-                    new PasswordValidationCallback(s, username,
-                    decoded.substring(colon + 1).toCharArray());
-            try {
-                handler.handle(new Callback[]{pVC});
-                pVC.clearPassword();
-            } catch (Exception e) {
-                AuthException ae = new AuthException();
-                ae.initCause(e);
-                throw ae;
-            }
-
-            if (pVC.getResult()) {
-                return username;
-            }
-      }
-      return null;
-   }
-
-   private AuthStatus sendAuthenticateChallenge(
-           MessageInfo msgInfo) {
-
-       String realm = realmName;
-         // if the realm property is set use it,
-         // otherwise use the name of the server
-         // as the realm name.
-         if (realm == null) {
-
-          HttpServletRequest request =
-                  (HttpServletRequest)
-                  msgInfo.getRequestMessage();
-
-          realm = request.getServerName();
-        }
-
-       HttpServletResponse response =
-               (HttpServletResponse)
-               msgInfo.getResponseMessage();
-
-       String header = BASIC + " realm=\"" + realm + "\"";
-       response.setHeader(AUTHENTICATION_HEADER, header);
-       response.setStatus(
-               HttpServletResponse.SC_UNAUTHORIZED);
-       return AuthStatus.SEND_CONTINUE;
-   }
-
-   public AuthStatus secureResponse(
-           MessageInfo msgInfo, Subject service)
-           throws AuthException {
-       return AuthStatus.SEND_SUCCESS;
-   }
-
-   public void cleanSubject(MessageInfo msgInfo,
-           Subject subject)
-           throws AuthException {
-      if (subject != null) {
-          subject.getPrincipals().clear();
-      }
-   }
-
-   private static final String AUTH_TYPE_INFO_KEY =
-           "javax.servlet.http.authType";
-
-   // distinguish the caller principal
-   // and assign default groups
-   private void setAuthenticationResult(String name,
-           Subject s, MessageInfo m)
-           throws IOException,
-           UnsupportedCallbackException {
-       handler.handle(new Callback[]{
-           new CallerPrincipalCallback(s, name)
-       });
-       if (name != null) {
-         // add the default group if the property is set
-           if (defaultGroup != null) {
-               handler.handle(new Callback[]{
-                   new GroupPrincipalCallback(s, defaultGroup)
-               });
-           }
-           m.getMap().put(AUTH_TYPE_INFO_KEY, ""MySAM");
-       }
-   }
-  }
-----
-
-Note that the `initialize` method looks for the `group.name` and
-`realm.name` properties. The `group.name` property configures the
-default group assigned as a result of any successful authentication. The
-`realm.name` property defines the realm value sent back to the browser
-in the `WWW-Authenticate` challenge.
-
-[[gizfa]][[GSDVG00384]][[compiling-and-installing-a-server-authentication-module]]
-
-Compiling and Installing a Server Authentication Module
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Before you can use the sample SAM, you need to compile, install, and
-configure it. Then you can bind it to an application.
-
-To compile the SAM, include the SPI in your classpath. When the
-GlassFish Server is installed, the JAR file containing the SPI,
-`jmac-api.jar`, is installed in the as-install`/lib` directory. After
-you compile the SAM, install it by copying a JAR file containing the
-compiled SAM to the as-install`/lib` directory.
-
-[[gizfe]][[GSDVG00385]][[configuring-a-server-authentication-module]]
-
-Configuring a Server Authentication Module
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can configure a SAM in one of these ways:
-
-* In the Administration Console, open the Security component under the
-relevant configuration and go to the Message Security page. Set the
-following options:
-
-** Authentication Layer — `HttpServlet`
-
-** Provider Type — `server` or `client-server`
-
-** Provider ID — Specify a unique name for the SAM, for example `MySAM`
-
-** Class Name — Specify the fully qualified class name, for example
-`tip.sam.MySam`
-
-** Additional Property — Name: `group-name` Value: `user`
-
-** Additional Property — Name: `realm-name` Value: `Sam` +
-For details, click the Help button in the Administration Console.
-* Use the `asadmin create-message-security-provider` command to
-configure a SAM. Set the following options:
-
-** `--layer HttpServlet`
-
-** `--providertype server` or `--providertype client-server`
-
-** `--classname tip.sam.MySam`
-
-** `--property group-name=user:realm-name=Sam`
-
-** Provider name operand — Specify a unique name for the SAM, for
-example `MySAM` +
-For details, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition
-Reference Manual].
-
-[[gizfm]][[GSDVG00386]][[binding-a-server-authentication-module-to-your-application]]
-
-Binding a Server Authentication Module to Your Application
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-After you install and configure the SAM, you can bind it for use by the
-container on behalf of one or more of your applications. You have two
-options in how you bind the SAM, depending on whether you are willing to
-repackage and redeploy your application:
-
-* If you are willing to repackage and redeploy, you can bind the SAM
-using the `glassfish-web.xml` file. Set the value of the
-`httpservlet-security-provider` attribute of the `glassfish-web-app`
-element to the SAM's configured provider ID, for example, `MySAM`. For
-more information about the `glassfish-web.xml` file, see the
-link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition Application Deployment
-Guide]. This option leverages the native `AuthConfigProvider`
-implementation that ships with the GlassFish Server.
-* Another approach is to develop your own `AuthConfigProvider` and
-register it with the GlassFish Server `AuthConfigFactory` for use on
-behalf of your applications. For example, a simple `AuthConfigProvider`
-can obtain, through its initialization properties, the classname of a
-SAM to configure on behalf of the applications for which the provider is
-registered. You can find a description of the functionality of an
-`AuthConfigProvider` and of the registration facilities provided by an
-`AuthConfigFactory` in the JSR 196 specification.
-
-
diff --git a/docs/application-development-guide/src/main/jbake/content/setting-up-dev-env.adoc b/docs/application-development-guide/src/main/jbake/content/setting-up-dev-env.adoc
deleted file mode 100644
index 2364c49..0000000
--- a/docs/application-development-guide/src/main/jbake/content/setting-up-dev-env.adoc
+++ /dev/null
@@ -1,208 +0,0 @@
-type=page
-status=published
-title=Setting Up a Development Environment
-next=class-loaders.html
-prev=part-tasks-and-tools.html
-~~~~~~
-Setting Up a Development Environment
-====================================
-
-[[GSDVG00002]][[beaaq]]
-
-
-[[setting-up-a-development-environment]]
-1 Setting Up a Development Environment
---------------------------------------
-
-This chapter gives guidelines for setting up an application development
-environment in the Oracle GlassFish Server. Setting up an environment
-for creating, assembling, deploying, and debugging your code involves
-installing the mainstream version of the GlassFish Server and making use
-of development tools. In addition, sample applications are available.
-
-The following topics are addressed here:
-
-* link:#beaar[Installing and Preparing the Server for Development]
-* link:#beaas[High Availability Features]
-* link:#beaat[Development Tools]
-* link:#beabf[Sample Applications]
-
-[[beaar]][[GSDVG00090]][[installing-and-preparing-the-server-for-development]]
-
-Installing and Preparing the Server for Development
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-For more information about GlassFish Server installation, see the
-link:../installation-guide/toc.html#GSING[GlassFish Server Open Source Edition Installation Guide].
-
-The following components are included in the full installation.
-
-* JDK
-* GlassFish Server core
-
-** Java Platform, Standard Edition (Java SE) 8
-
-** Java EE 8 compliant application server
-
-** Administration Console
-
-** `asadmin` utility
-
-** Other development and deployment tools
-
-** Open Message Queue software
-
-** Apache http://db.apache.org/derby/manuals[Derby database]
-
-** Load balancer plug-ins for web servers
-
-The NetBeans Integrated Development Environment (IDE) bundles the
-GlassFish edition of the GlassFish Server, so information about this IDE
-is provided as well.
-
-After you have installed GlassFish Server, you can further optimize the
-server for development in these ways:
-
-* Locate utility classes and libraries so they can be accessed by the
-proper class loaders. For more information, see
-link:class-loaders.html#beadj[Using the Common Class Loader].
-* Set up debugging. For more information, see
-link:debugging-apps.html#beafc[Debugging Applications].
-* Configure the Virtual Machine for the Java platform (JVM software).
-For more information, see "link:../administration-guide/jvm.html#GSADG00007[Administering the Virtual
-Machine for the Java Platform]" in GlassFish Server Open Source Edition
-Administration Guide.
-
-[[beaas]][[GSDVG00091]][[high-availability-features]]
-
-High Availability Features
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-High availability features such as load balancing and session failover
-are discussed in detail in the link:../ha-administration-guide/toc.html#GSHAG[GlassFish Server Open Source
-Edition High Availability Administration Guide]. This book describes the
-following features in the following sections:
-
-* For information about HTTP session persistence, see
-link:webapps.html#beahe[Distributed Sessions and Persistence].
-* For information about checkpointing of the stateful session bean
-state, see link:ejb.html#beaib[Stateful Session Bean Failover].
-* For information about failover and load balancing for Java clients,
-see link:java-clients.html#beakt[Developing Java Clients].
-* For information about load balancing for message-driven beans, see
-link:jms.html#beaop[Load-Balanced Message Inflow].
-
-[[beaat]][[GSDVG00092]][[development-tools]]
-
-Development Tools
-~~~~~~~~~~~~~~~~~
-
-The following general tools are provided with the GlassFish Server:
-
-* link:#beaau[The `asadmin` Command]
-* link:#beaav[The Administration Console]
-
-The following development tools are provided with the GlassFish Server
-or downloadable from Oracle:
-
-* link:#beaba[The Migration Tool]
-* link:#beaaw[The NetBeans IDE]
-
-The following third-party tools might also be useful:
-
-* link:#beabb[Debugging Tools]
-* link:#beabc[Profiling Tools]
-
-[[beaau]][[GSDVG00333]][[the-asadmin-command]]
-
-The `asadmin` Command
-^^^^^^^^^^^^^^^^^^^^^
-
-The `asadmin` command allows you to configure a local or remote server
-and perform both administrative and development tasks at the command
-line. For general information about `asadmin`, see the
-link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-
-The `asadmin` command is located in the as-install`/bin` directory. Type
-`asadmin help` for a list of subcommands.
-
-[[beaav]][[GSDVG00334]][[the-administration-console]]
-
-The Administration Console
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The Administration Console lets you configure the server and perform
-both administrative and development tasks using a web browser. For
-general information about the Administration Console, click the Help
-button in the Administration Console. This displays the GlassFish Server
-online help.
-
-To access the Administration Console, type `http://`host`:4848` in your
-browser. The host is the name of the machine on which the GlassFish
-Server is running. By default, the host is `localhost`. For example:
-
-[source,oac_no_warn]
-----
-http://localhost:4848
-----
-
-[[beaba]][[GSDVG00337]][[the-migration-tool]]
-
-The Migration Tool
-^^^^^^^^^^^^^^^^^^
-
-The Migration Tool converts and reassembles Java EE applications and
-modules developed on other application servers. This tool also generates
-a report listing how many files are successfully and unsuccessfully
-migrated, with reasons for migration failure. For more information and
-to download the Migration Tool, see
-`http://java.sun.com/j2ee/tools/migration/index.html`.
-
-[[beaaw]][[GSDVG00338]][[the-netbeans-ide]]
-
-The NetBeans IDE
-^^^^^^^^^^^^^^^^
-
-The NetBeans IDE allows you to create, assemble, and debug code from a
-single, easy-to-use interface. The GlassFish edition of the GlassFish
-Server is bundled with the NetBeans 6.1 IDE. To download the NetBeans
-IDE, see `http://www.netbeans.org`. This site also provides
-documentation on how to use the NetBeans IDE with the bundled GlassFish
-edition of the GlassFish Server.
-
-You can also use the GlassFish Server with the Java Studio Enterprise
-software, which is built on the NetBeans IDE. For more information, see
-`http://developers.sun.com/jsenterprise/`.
-
-[[beabb]][[GSDVG00340]][[debugging-tools]]
-
-Debugging Tools
-^^^^^^^^^^^^^^^
-
-You can use several debugging tools with the GlassFish Server. For more
-information, see link:debugging-apps.html#beafc[Debugging Applications].
-
-[[beabc]][[GSDVG00341]][[profiling-tools]]
-
-Profiling Tools
-^^^^^^^^^^^^^^^
-
-You can use several profilers with the GlassFish Server. For more
-information, see link:debugging-apps.html#beafn[Profiling Tools].
-
-[[beabf]][[GSDVG00093]][[sample-applications]]
-
-Sample Applications
-~~~~~~~~~~~~~~~~~~~
-
-Sample applications that you can examine and deploy to the GlassFish
-Server are included as part of the Java EE 8 SDK bundle. The samples are
-also available from `https://github.com/javaee/glassfish-samples`.
-
-Most GlassFish Server samples have the following directory structure:
-
-* The `docs` directory contains instructions for how to use the sample.
-* The `pom.xml` file defines Maven targets for the sample.
-* The `src/` directory contains source code for the sample.
-
-
diff --git a/docs/application-development-guide/src/main/jbake/content/title.adoc b/docs/application-development-guide/src/main/jbake/content/title.adoc
deleted file mode 100644
index 5e9fbf4..0000000
--- a/docs/application-development-guide/src/main/jbake/content/title.adoc
+++ /dev/null
@@ -1,51 +0,0 @@
-type=page
-status=published
-title=Eclipse GlassFish Server Application Development Guide, Release 5.1
-next=preface.html
-prev=lot.html
-~~~~~~
-Eclipse GlassFish Server Application Development Guide, Release 5.1
-===================================================================
-
-[[eclipse-glassfish-server]]
-Eclipse GlassFish Server
-------------------------
-
-Application Development Guide
-
-Release 5.1
-
-Contributed 2018, 2019
-
-This Application Development Guide describes how to create and run Java
-Platform, Enterprise Edition (Java EE platform) applications that follow
-the open Java standards model for Java EE components and APIs in the
-Eclipse GlassFish Server environment. Topics include
-developer tools, security, and debugging. This book is intended for use
-by software developers who create, assemble, and deploy Java EE
-applications using Oracle servers and software.
-
-[[sthref1]]
-
-'''''
-
-Eclipse GlassFish Server Application Development Guide,
-Release 5.1
-
-Copyright © 2013, 2019 Oracle and/or its affiliates. All rights reserved.
-
-This program and the accompanying materials are made available under the 
-terms of the Eclipse Public License v. 2.0, which is available at 
-http://www.eclipse.org/legal/epl-2.0. 
-
-SPDX-License-Identifier: EPL-2.0
-
-Oracle and Java are registered trademarks of Oracle and/or its 
-affiliates. Other names may be trademarks of their respective owners. 
-
-Intel and Intel Xeon are trademarks or registered trademarks of Intel 
-Corporation. All SPARC trademarks are used under license and are 
-trademarks or registered trademarks of SPARC International, Inc. AMD, 
-Opteron, the AMD logo, and the AMD Opteron logo are trademarks or 
-registered trademarks of Advanced Micro Devices. UNIX is a registered 
-trademark of The Open Group. 
diff --git a/docs/application-development-guide/src/main/jbake/content/transaction-service.adoc b/docs/application-development-guide/src/main/jbake/content/transaction-service.adoc
deleted file mode 100644
index 98bc617..0000000
--- a/docs/application-development-guide/src/main/jbake/content/transaction-service.adoc
+++ /dev/null
@@ -1,405 +0,0 @@
-type=page
-status=published
-title=Using the Transaction Service
-next=jndi.html
-prev=jdbc.html
-~~~~~~
-Using the Transaction Service
-=============================
-
-[[GSDVG00018]][[beanm]]
-
-
-[[using-the-transaction-service]]
-15 Using the Transaction Service
---------------------------------
-
-The Java EE platform provides several abstractions that simplify
-development of dependable transaction processing for applications. This
-chapter discusses Java EE transactions and transaction support in the
-Oracle GlassFish Server.
-
-The following topics are addressed here:
-
-* link:#giybi[Handling Transactions with Databases]
-* link:#beaje[Handling Transactions with Enterprise Beans]
-* link:#gknrh[Handling Transactions with the Java Message Service]
-* link:#gaxit[The Transaction Manager, the Transaction Synchronization
-Registry, and `UserTransaction`]
-
-For more information about the Java Transaction API (JTA) and Java
-Transaction Service (JTS), see "link:../administration-guide/transactions.html#GSADG00022[Administering
-Transactions]" in GlassFish Server Open Source Edition Administration
-Guide and the following sites:
-`http://www.oracle.com/technetwork/java/javaee/jta/index.html` and
-`http://www.oracle.com/technetwork/java/javaee/tech/index.html`.
-
-You might also want to read
-"https://javaee.github.io/tutorial/transactions.html[Transactions]" in
-The Java EE 8 Tutorial.
-
-[[giybi]][[GSDVG00188]][[handling-transactions-with-databases]]
-
-Handling Transactions with Databases
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following topics are addressed here:
-
-* link:#beamv[Using JDBC Transaction Isolation Levels]
-* link:#beamu[Using Non-Transactional Connections]
-
-[[beamv]][[GSDVG00511]][[using-jdbc-transaction-isolation-levels]]
-
-Using JDBC Transaction Isolation Levels
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Not all database vendors support all transaction isolation levels
-available in the JDBC API. The GlassFish Server permits specifying any
-isolation level your database supports. The following table defines
-transaction isolation levels.
-
-[[GSDVG559]][[sthref27]][[fvyoi]]
-
-
-Table 15-1 Transaction Isolation Levels
-
-[width="100%",cols="27%,28%,45%",options="header",]
-|=======================================================================
-|Transaction Isolation Level |`getTransactionIsolation` Return Value
-|Description
-|`read-uncommitted` |`1` |Dirty reads, non-repeatable reads, and phantom
-reads can occur.
-
-|`read-committed` |`2` |Dirty reads are prevented; non-repeatable reads
-and phantom reads can occur.
-
-|`repeatable-read` |`4` |Dirty reads and non-repeatable reads are
-prevented; phantom reads can occur.
-
-|`serializable` |`8` |Dirty reads, non-repeatable reads and phantom
-reads are prevented.
-|=======================================================================
-
-
-By default, the transaction isolation level is undefined (empty), and
-the JDBC driver's default isolation level is used. You can specify the
-transaction isolation level in the following ways:
-
-* Select the value from the Transaction Isolation drop-down list on the
-New JDBC Connection Pool or Edit Connection Pool page in the
-Administration Console. For more information, click the Help button in
-the Administration Console.
-* Specify the `--isolationlevel` option in the
-`asadmin create-jdbc-connection-pool` command. For more information, see
-the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-* Specify the `transaction-isolation-level` option in the `asadmin set`
-command. For example: +
-[source,oac_no_warn]
-----
-asadmin set domain1.resources.jdbc-connection-pool.DerbyPool.transaction-isolation-level=serializable
-----
-For more information, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source
-Edition Reference Manual].
-
-Note that you cannot call `setTransactionIsolation` during a
-transaction.
-
-You can set the default transaction isolation level for a JDBC
-connection pool. For details, see "link:../administration-guide/jdbc.html#GSADG00420[To Create a JDBC
-Connection Pool]" in GlassFish Server Open Source Edition Administration
-Guide.
-
-To verify that a level is supported by your database management system,
-test your database programmatically using the
-`supportsTransactionIsolationLevel` method in
-`java.sql.DatabaseMetaData`, as shown in the following example:
-
-[source,oac_no_warn]
-----
-InitialContext ctx = new InitialContext();
-DataSource ds = (DataSource)
-ctx.lookup("jdbc/MyBase");
-Connection con = ds.getConnection();
-DatabaseMetaData dbmd = con.getMetaData();
-if (dbmd.supportsTransactionIsolationLevel(TRANSACTION_SERIALIZABLE)
-{ Connection.setTransactionIsolation(TRANSACTION_SERIALIZABLE); }
-----
-
-For more information about these isolation levels and what they mean,
-see the JDBC API specification.
-
-Setting or resetting the transaction isolation level for every
-`getConnection` call can degrade performance. So by default the
-isolation level is not guaranteed.
-
-Applications that change the transaction isolation level on a pooled
-connection programmatically risk polluting the JDBC connection pool,
-which can lead to errors. If an application changes the isolation level,
-enabling the `is-isolation-level-guaranteed` setting in the pool can
-minimize such errors.
-
-You can guarantee the transaction isolation level in the following ways:
-
-* Check the Isolation Level Guaranteed box on the New JDBC Connection
-Pool or Edit Connection Pool page in the Administration Console. For
-more information, click the Help button in the Administration Console.
-* Specify the `--isisolationguaranteed` option in the
-`asadmin create-jdbc-connection-pool` command. For more information, see
-the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-* Specify the `is-isolation-level-guaranteed` option in the
-`asadmin set` command. For example: +
-[source,oac_no_warn]
-----
-asadmin set domain1.resources.jdbc-connection-pool.DerbyPool.is-isolation-level-guaranteed=true
-----
-For more information, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source
-Edition Reference Manual].
-
-[[beamu]][[GSDVG00512]][[using-non-transactional-connections]]
-
-Using Non-Transactional Connections
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can specify a non-transactional database connection in any of these
-ways:
-
-* Check the Non-Transactional Connections box on the New JDBC Connection
-Pool or Edit Connection Pool page in the Administration Console. The
-default is unchecked. For more information, click the Help button in the
-Administration Console.
-* Specify the `--nontransactionalconnections` option in the
-`asadmin create-jdbc-connection-pool` command. For more information, see
-the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-* Specify the `non-transactional-connections` option in the
-`asadmin set` command. For example: +
-[source,oac_no_warn]
-----
-asadmin set domain1.resources.jdbc-connection-pool.DerbyPool.non-transactional-connections=true
-----
-For more information, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source
-Edition Reference Manual].
-* Use the `DataSource` implementation in the GlassFish Server, which
-provides a `getNonTxConnection` method. This method retrieves a JDBC
-connection that is not in the scope of any transaction. There are two
-variants. +
-[source,oac_no_warn]
-----
-public java.sql.Connection getNonTxConnection() throws java.sql.SQLException
-
-public java.sql.Connection getNonTxConnection(String user, String password) 
-   throws java.sql.SQLException
-----
-* Create a resource with the JNDI name ending in `__nontx`. This forces
-all connections looked up using this resource to be non transactional.
-
-Typically, a connection is enlisted in the context of the transaction in
-which a `getConnection` call is invoked. However, a non-transactional
-connection is not enlisted in a transaction context even if a
-transaction is in progress.
-
-The main advantage of using non-transactional connections is that the
-overhead incurred in enlisting and delisting connections in transaction
-contexts is avoided. However, use such connections carefully. For
-example, if a non-transactional connection is used to query the database
-while a transaction is in progress that modifies the database, the query
-retrieves the unmodified data in the database. This is because the
-in-progress transaction hasn't committed. For another example, if a
-non-transactional connection modifies the database and a transaction
-that is running simultaneously rolls back, the changes made by the
-non-transactional connection are not rolled back.
-
-Here is a typical use case for a non-transactional connection: a
-component that is updating a database in a transaction context spanning
-over several iterations of a loop can refresh cached data by using a
-non-transactional connection to read data before the transaction
-commits.
-
-[[beaje]][[GSDVG00189]][[handling-transactions-with-enterprise-beans]]
-
-Handling Transactions with Enterprise Beans
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This section describes the transaction support built into the Enterprise
-JavaBeans programming model for the GlassFish Server.
-
-As a developer, you can write an application that updates data in
-multiple databases distributed across multiple sites. The site might use
-EJB servers from different vendors.
-
-The following topics are addressed here:
-
-* link:#beajf[Flat Transactions]
-* link:#beajg[Global and Local Transactions]
-* link:#beajh[Commit Options]
-* link:#beaht[Bean-Level Container-Managed Transaction Timeouts]
-
-[[beajf]][[GSDVG00513]][[flat-transactions]]
-
-Flat Transactions
-^^^^^^^^^^^^^^^^^
-
-The Enterprise JavaBeans Specification, v3.0 requires support for flat
-(as opposed to nested) transactions. In a flat transaction, each
-transaction is decoupled from and independent of other transactions in
-the system. Another transaction cannot start in the same thread until
-the current transaction ends.
-
-Flat transactions are the most prevalent model and are supported by most
-commercial database systems. Although nested transactions offer a finer
-granularity of control over transactions, they are supported by far
-fewer commercial database systems.
-
-[[beajg]][[GSDVG00514]][[global-and-local-transactions]]
-
-Global and Local Transactions
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Both local and global transactions are demarcated using the
-javax.transaction.UserTransaction interface, which the client must use.
-Local transactions bypass the XA commit protocol and are faster. For
-more information, see link:#gaxit[The Transaction Manager, the
-Transaction Synchronization Registry, and `UserTransaction`].
-
-[[beajh]][[GSDVG00515]][[commit-options]]
-
-Commit Options
-^^^^^^^^^^^^^^
-
-The EJB protocol is designed to give the container the flexibility to
-select the disposition of the instance state at the time a transaction
-is committed. This allows the container to best manage caching an entity
-object's state and associating an entity object identity with the EJB
-instances.
-
-There are three commit-time options:
-
-* Option A - The container caches a ready instance between transactions.
-The container ensures that the instance has exclusive access to the
-state of the object in persistent storage. +
-In this case, the container does not have to synchronize the instance's
-state from the persistent storage at the beginning of the next
-transaction. +
-
-[NOTE]
-==================================================================
-
-Commit option A is not supported for this GlassFish Server release.
-
-==================================================================
-
-* Option B - The container caches a ready instance between transactions,
-but the container does not ensure that the instance has exclusive access
-to the state of the object in persistent storage. This is the default. +
-In this case, the container must synchronize the instance's state by
-invoking `ejbLoad` from persistent storage at the beginning of the next
-transaction.
-* Option C - The container does not cache a ready instance between
-transactions, but instead returns the instance to the pool of available
-instances after a transaction has completed. +
-The life cycle for every business method invocation under commit option
-C looks like this. +
-[source,oac_no_warn]
-----
-ejbActivate   ejbLoad   business method   ejbStore   ejbPassivate
-----
-If there is more than one transactional client concurrently accessing
-the same entity, the first client gets the ready instance and subsequent
-concurrent clients get new instances from the pool.
-
-The `glassfish-ejb-jar.xml` deployment descriptor has an element,
-`commit-option`, that specifies the commit option to be used. Based on
-the specified commit option, the appropriate handler is instantiated.
-
-[[beaht]][[GSDVG00516]][[bean-level-container-managed-transaction-timeouts]]
-
-Bean-Level Container-Managed Transaction Timeouts
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The transaction timeout for the domain is specified using the
-Transaction Timeout setting of the Transaction Service. A transaction
-started by the container must commit (or rollback) within this time,
-regardless of whether the transaction is suspended (and resumed), or the
-transaction is marked for rollback. The default value, `0`, specifies
-that the server waits indefinitely for a transaction to complete.
-
-To override this timeout for an individual bean, use the optional
-`cmt-timeout-in-seconds` element in `glassfish-ejb-jar.xml`. The default
-value, `0`, specifies that the Transaction Service timeout is used. The
-value of `cmt-timeout-in-seconds` is used for all methods in the bean
-that start a new container-managed transaction. This value is not used
-if the bean joins a client transaction.
-
-[[gknrh]][[GSDVG00190]][[handling-transactions-with-the-java-message-service]]
-
-Handling Transactions with the Java Message Service
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following topics are addressed here:
-
-* link:#beaoq[Transactions and Non-Persistent Messages]
-* link:#gdyya[Using the ConfigurableTransactionSupport Interface]
-
-[[beaoq]][[GSDVG00517]][[transactions-and-non-persistent-messages]]
-
-Transactions and Non-Persistent Messages
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-During transaction recovery, non-persistent messages might be lost. If
-the broker fails between the transaction manager's prepare and commit
-operations, any non-persistent message in the transaction is lost and
-cannot be delivered. A message that is not saved to a persistent store
-is not available for transaction recovery.
-
-[[gdyya]][[GSDVG00518]][[using-the-configurabletransactionsupport-interface]]
-
-Using the ConfigurableTransactionSupport Interface
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The Java EE Connector 1.6 specification allows a resource adapter to use
-the `transaction-support` attribute to specify the level of transaction
-support that the resource adapter handles. However, the resource adapter
-vendor does not have a mechanism to figure out the current transactional
-context in which a `ManagedConnectionFactory` is used.
-
-If a `ManagedConnectionFactory` implements an optional interface called
-com.sun.appserv.connectors.spi.ConfigurableTransactionSupport , the
-GlassFish Server notifies the `ManagedConnectionFactory` of the
-`transaction-support` configured for the connector connection pool when
-the `ManagedConnectionFactory` instance is created for the pool.
-Connections obtained from the pool can then be used with a transaction
-level at or lower than the configured value. For example, a connection
-obtained from a pool that is set to `XA_TRANSACTION` could be used as a
-LOCAL resource in a last-agent-optimized transaction or in a
-non-transactional context.
-
-[[gaxit]][[GSDVG00191]][[the-transaction-manager-the-transaction-synchronization-registry-and-usertransaction]]
-
-The Transaction Manager, the Transaction Synchronization Registry, and `UserTransaction`
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-To access a `UserTransaction` instance, you can either look it up using
-the `java:comp/``UserTransaction` JNDI name or inject it using the
-`@Resource` annotation.
-
-Accessing a `DataSource` using the `Synchronization.beforeCompletion()`
-method requires setting Allow Non Component Callers to `true`. The
-default is `false`. For more information about non-component callers,
-see link:jdbc.html#gavro[Allowing Non-Component Callers].
-
-If possible, you should use the
-javax.transaction.TransactionSynchronizationRegistry interface instead
-of javax.transaction.TransactionManager , for portability. You can look
-up the implementation of this interface by using the JNDI name
-`java:comp/``TransactionSynchronizationRegistry`. For details, see the
-https://javaee.github.io/javaee-spec/javadocs/[`TransactionSynchronizationRegistryInterface`]
-API documentation (`https://javaee.github.io/javaee-spec/javadocs/`) and
-http://www.jcp.org/en/jsr/detail?id=907[Java Specification Request (JSR)
-907] (`http://www.jcp.org/en/jsr/detail?id=907`).
-
-If accessing the javax.transaction.TransactionManager implementation is
-absolutely necessary, you can look up the GlassFish Server
-implementation of this interface using the JNDI name
-java:appserver/TransactionManager . This lookup should not be used by
-the application code.
-
-
diff --git a/docs/application-development-guide/src/main/jbake/content/webapps.adoc b/docs/application-development-guide/src/main/jbake/content/webapps.adoc
deleted file mode 100644
index a5045b5..0000000
--- a/docs/application-development-guide/src/main/jbake/content/webapps.adoc
+++ /dev/null
@@ -1,2205 +0,0 @@
-type=page
-status=published
-title=Developing Web Applications
-next=ejb.html
-prev=jpa.html
-~~~~~~
-Developing Web Applications
-===========================
-
-[[GSDVG00009]][[beafs]]
-
-
-[[developing-web-applications]]
-7 Developing Web Applications
------------------------------
-
-This chapter describes how web applications are supported in the Oracle
-GlassFish Server.
-
-The following topics are addressed here:
-
-* link:#beagj[Using Servlets]
-* link:#beagu[Using JavaServer Pages]
-* link:#beaha[Creating and Managing Sessions]
-* link:#ggrgt[Using Comet]
-* link:#beaft[Advanced Web Application Features]
-
-For general information about web applications, see
-"https://javaee.github.io/tutorial/partwebtier.html[The Web Tier]" in
-The Java EE 8 Tutorial.
-
-
-[NOTE]
-=======================================================================
-
-The Web Profile of the GlassFish Server supports the EJB 3.1 Lite
-specification, which allows enterprise beans within web applications,
-among other features. The full GlassFish Server supports the entire EJB
-3.1 specification. For details, see
-http://jcp.org/en/jsr/detail?id=318[JSR 318]
-(`http://jcp.org/en/jsr/detail?id=318`).
-
-=======================================================================
-
-
-[[beagj]][[GSDVG00140]][[using-servlets]]
-
-Using Servlets
-~~~~~~~~~~~~~~
-
-GlassFish Server supports the Java Servlet Specification version 4.0.
-
-
-[NOTE]
-=======================================================================
-
-Servlet API version 4.0 is fully backward compatible with versions 3.0,
-2.3, 2.4, and 2.5, so all existing servlets should work without
-modification or recompilation.
-
-=======================================================================
-
-
-To develop servlets, use the Java Servlet API. For information about
-using the Java Servlet API, see the documentation at
-`http://www.oracle.com/technetwork/java/javaee/servlet/index.html`.
-
-The GlassFish Server provides the `wscompile` and `wsdeploy` tools to
-help you implement a web service endpoint as a servlet. For more
-information about these tools, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open
-Source Edition Reference Manual].
-
-This section describes how to create effective servlets to control
-application interactions running on a GlassFish Server, including
-standard-based servlets. In addition, this section describes the
-GlassFish Server features to use to augment the standards.
-
-The following topics are addressed here:
-
-* link:#beagm[Caching Servlet Results]
-* link:#beagr[About the Servlet Engine]
-
-[[beagm]][[GSDVG00397]][[caching-servlet-results]]
-
-Caching Servlet Results
-^^^^^^^^^^^^^^^^^^^^^^^
-
-The GlassFish Server can cache the results of invoking a servlet, a JSP,
-or any URL pattern to make subsequent invocations of the same servlet,
-JSP, or URL pattern faster. The GlassFish Server caches the request
-results for a specific amount of time. In this way, if another data call
-occurs, the GlassFish Server can return the cached data instead of
-performing the operation again. For example, if your servlet returns a
-stock quote that updates every 5 minutes, you set the cache to expire
-after 300 seconds.
-
-Whether to cache results and how to cache them depends on the data
-involved. For example, it makes no sense to cache the results of a quiz
-submission, because the input to the servlet is different each time.
-However, it makes sense to cache a high level report showing demographic
-data taken from quiz results that is updated once an hour.
-
-To define how a GlassFish Server web application handles response
-caching, you edit specific fields in the `glassfish-web.xml` file.
-
-
-[NOTE]
-===========================================
-
-A servlet that uses caching is not portable.
-
-===========================================
-
-
-For Javadoc tool pages relevant to caching servlet results, see the
-`com.sun.appserv.web.cache` package.
-
-For information about JSP caching, see link:#beagw[JSP Caching].
-
-The following topics are addressed here:
-
-* link:#beagn[Caching Features]
-* link:#beago[Default Cache Configuration]
-* link:#beagp[Caching Example]
-* link:#beagq[The CacheKeyGenerator Interface]
-
-[[beagn]][[GSDVG00251]][[caching-features]]
-
-Caching Features
-++++++++++++++++
-
-The GlassFish Server has the following web application response caching
-capabilities:
-
-* Caching is configurable based on the servlet name or the URI.
-* When caching is based on the URI, this includes user specified
-parameters in the query string. For example, a response from
-`/garden/catalog?category=roses` is different from a response from
-`/garden/catalog?category=lilies`. These responses are stored under
-different keys in the cache.
-* Cache size, entry timeout, and other caching behaviors are
-configurable.
-* Entry timeout is measured from the time an entry is created or
-refreshed. To override this timeout for an individual cache mapping,
-specify the `cache-mapping` subelement `timeout`.
-* To determine caching criteria programmatically, write a class that
-implements the com.sun.appserv.web.cache.CacheHelper interface. For
-example, if only a servlet knows when a back end data source was last
-modified, you can write a helper class to retrieve the last modified
-timestamp from the data source and decide whether to cache the response
-based on that timestamp.
-* To determine cache key generation programmatically, write a class that
-implements the com.sun.appserv.web.cache.CacheKeyGenerator interface.
-See link:#beagq[The CacheKeyGenerator Interface].
-* All non-ASCII request parameter values specified in cache key elements
-must be URL encoded. The caching subsystem attempts to match the raw
-parameter values in the request query string.
-* Since newly updated classes impact what gets cached, the web container
-clears the cache during dynamic deployment or reloading of classes.
-* The following `HttpServletRequest` request attributes are exposed.
-
-** `com.sun.appserv.web.cachedServletName`, the cached servlet target
-
-** `com.sun.appserv.web.cachedURLPattern`, the URL pattern being cached
-* Results produced by resources that are the target of a
-`RequestDispatcher.include()` or `RequestDispatcher.forward()` call are
-cached if caching has been enabled for those resources. For details, see
-"link:../application-deployment-guide/dd-elements.html#GSDPG00101[cache-mapping]" in GlassFish Server Open Source
-Edition Application Deployment Guide and "link:../application-deployment-guide/dd-elements.html#GSDPG00140[dispatcher]"
-in GlassFish Server Open Source Edition Application Deployment Guide.
-These are elements in the `glassfish-web.xml` file.
-
-[[beago]][[GSDVG00252]][[default-cache-configuration]]
-
-Default Cache Configuration
-+++++++++++++++++++++++++++
-
-If you enable caching but do not provide any special configuration for a
-servlet or JSP, the default cache configuration is as follows:
-
-* The default cache timeout is 30 seconds.
-* Only the HTTP GET method is eligible for caching.
-* HTTP requests with cookies or sessions automatically disable caching.
-* No special consideration is given to `Pragma:`, `Cache-control:`, or
-`Vary:` headers.
-* The default key consists of the Servlet Path (minus `pathInfo` and the
-query string).
-* A "least recently used" list is maintained to evict cache entries if
-the maximum cache size is exceeded.
-* Key generation concatenates the servlet path with key field values, if
-any are specified.
-* Results produced by resources that are the target of a
-`RequestDispatcher.include()` or `RequestDispatcher.forward()` call are
-never cached.
-
-[[beagp]][[GSDVG00253]][[caching-example]]
-
-Caching Example
-+++++++++++++++
-
-Here is an example cache element in the `glassfish-web.xml` file:
-
-[source,oac_no_warn]
-----
-<cache max-capacity="8192" timeout="60">
-<cache-helper name="myHelper" class-name="MyCacheHelper"/>
-<cache-mapping>
-    <servlet-name>myservlet</servlet-name>
-    <timeout name="timefield">120</timeout>
-    <http-method>GET</http-method>
-    <http-method>POST</http-method>
-</cache-mapping>
-<cache-mapping>
-    <url-pattern> /catalog/* </url-pattern>
-    <!-- cache the best selling category; cache the responses to
-       -- this resource only when the given parameters exist. Cache
-       -- only when the catalog parameter has 'lilies' or 'roses'
-       -- but no other catalog varieties:
-      -- /orchard/catalog?best&category='lilies'
-      -- /orchard/catalog?best&category='roses'
-      -- but not the result of
-       -- /orchard/catalog?best&category='wild'
-    -->
-    <constraint-field name='best' scope='request.parameter'/>
-    <constraint-field name='category' scope='request.parameter'>
-        <value> roses </value>
-        <value> lilies </value>
-    </constraint-field>
-     <!-- Specify that a particular field is of given range but the
-       -- field doesn't need to be present in all the requests -->
-    <constraint-field name='SKUnum' scope='request.parameter'>
-        <value match-expr='in-range'> 1000 - 2000 </value>
-    </constraint-field>
-    <!-- cache when the category matches with any value other than
-       -- a specific value -->
-    <constraint-field name="category" scope="request.parameter>
-        <value match-expr="equals" cache-on-match-failure="true">
-       bogus
-        </value>
-    </constraint-field>
-</cache-mapping>
-<cache-mapping>
-    <servlet-name> InfoServlet </servlet-name>
-    <cache-helper-ref>myHelper</cache-helper-ref>
-</cache-mapping>
-</cache>
-----
-
-For more information about the `glassfish-web.xml` caching settings, see
-"link:../application-deployment-guide/dd-elements.html#GSDPG00097[cache]" in GlassFish Server Open Source Edition
-Application Deployment Guide.
-
-[[beagq]][[GSDVG00254]][[the-cachekeygenerator-interface]]
-
-The CacheKeyGenerator Interface
-+++++++++++++++++++++++++++++++
-
-The built-in default CacheHelper implementation allows web applications
-to customize the key generation. An application component (in a servlet
-or JSP) can set up a custom CacheKeyGenerator implementation as an
-attribute in the `ServletContext`.
-
-The name of the context attribute is configurable as the `value` of the
-`cacheKeyGeneratorAttrName` property in the `default-helper` element of
-the `glassfish-web.xml` deployment descriptor. For more information, see
-"link:../application-deployment-guide/dd-elements.html#GSDPG00136[default-helper]" in GlassFish Server Open Source
-Edition Application Deployment Guide.
-
-[[beagr]][[GSDVG00398]][[about-the-servlet-engine]]
-
-About the Servlet Engine
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-Servlets exist in and are managed by the servlet engine in the GlassFish
-Server. The servlet engine is an internal object that handles all
-servlet meta functions. These functions include instantiation,
-initialization, destruction, access from other components, and
-configuration management.
-
-The following topics are addressed here:
-
-* link:#beags[Instantiating and Removing Servlets]
-* link:#beagt[Request Handling]
-
-[[beags]][[GSDVG00255]][[instantiating-and-removing-servlets]]
-
-Instantiating and Removing Servlets
-+++++++++++++++++++++++++++++++++++
-
-After the servlet engine instantiates the servlet, the servlet engine
-calls the servlet's `init` method to perform any necessary
-initialization. You can override this method to perform an
-initialization function for the servlet's life, such as initializing a
-counter.
-
-When a servlet is removed from service, the servlet engine calls the
-`destroy` method in the servlet so that the servlet can perform any
-final tasks and deallocate resources. You can override this method to
-write log messages or clean up any lingering connections that won't be
-caught in garbage collection.
-
-[[beagt]][[GSDVG00256]][[request-handling]]
-
-Request Handling
-++++++++++++++++
-
-When a request is made, the GlassFish Server hands the incoming data to
-the servlet engine. The servlet engine processes the request's input
-data, such as form data, cookies, session information, and URL
-name-value pairs, into an `HttpServletRequest` request object type.
-
-The servlet engine also creates an `HttpServletResponse` response object
-type. The engine then passes both as parameters to the servlet's
-`service` method.
-
-In an HTTP servlet, the default `service` method routes requests to
-another method based on the HTTP transfer method: `POST`, `GET`,
-`DELETE`, `HEAD`, `OPTIONS`, `PUT`, or `TRACE`. For example, HTTP `POST`
-requests are sent to the `doPost` method, HTTP `GET` requests are sent
-to the `doGet` method, and so on. This enables the servlet to process
-request data differently, depending on which transfer method is used.
-Since the routing takes place in the service method, you generally do
-not override `service` in an HTTP servlet. Instead, override `doGet`,
-`doPost`, and so on, depending on the request type you expect.
-
-To perform the tasks to answer a request, override the `service` method
-for generic servlets, and the `doGet` or `doPost` methods for HTTP
-servlets. Very often, this means accessing EJB components to perform
-business transactions, then collating the information in the request
-object or in a JDBC `ResultSet` object.
-
-[[beagu]][[GSDVG00141]][[using-javaserver-pages]]
-
-Using JavaServer Pages
-~~~~~~~~~~~~~~~~~~~~~~
-
-The GlassFish Server supports the following JSP features:
-
-* JavaServer Pages (JSP) Specification
-* Precompilation of JSP files, which is especially useful for production
-servers
-* JSP tag libraries and standard portable tags
-
-For information about creating JSP files, see the JavaServer Pages web
-site at `http://www.oracle.com/technetwork/java/javaee/jsp/index.html`.
-
-For information about Java Beans, see the JavaBeans web page at
-`http://www.oracle.com/technetwork/java/javase/tech/index-jsp-138795.html`.
-
-This section describes how to use JavaServer Pages (JSP files) as page
-templates in a GlassFish Server web application.
-
-The following topics are addressed here:
-
-* link:#beagv[JSP Tag Libraries and Standard Portable Tags]
-* link:#beagw[JSP Caching]
-* link:#beagz[Options for Compiling JSP Files]
-
-[[beagv]][[GSDVG00399]][[jsp-tag-libraries-and-standard-portable-tags]]
-
-JSP Tag Libraries and Standard Portable Tags
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-GlassFish Server supports tag libraries and standard portable tags. For
-more information, see the JavaServer Pages Standard Tag Library (JSTL)
-page at `http://www.oracle.com/technetwork/java/index-jsp-135995.html`.
-
-Web applications don't need to bundle copies of the `jsf-impl.jar` or
-`appserv-jstl.jar` JSP tag libraries (in as-install`/lib`) to use
-JavaServer Faces technology or JSTL, respectively. These tag libraries
-are automatically available to all web applications.
-
-However, the as-install`/lib/jspcachtags.jar` tag library for JSP
-caching is not automatically available to web applications. See
-link:#beagw[JSP Caching], next.
-
-[[beagw]][[GSDVG00400]][[jsp-caching]]
-
-JSP Caching
-^^^^^^^^^^^
-
-JSP caching lets you cache tag invocation results within the Java
-engine. Each can be cached using different cache criteria. For example,
-suppose you have invocations to view stock quotes, weather information,
-and so on. The stock quote result can be cached for 10 minutes, the
-weather report result for 30 minutes, and so on.
-
-The following topics are addressed here:
-
-* link:#gaxbq[Enabling JSP Caching]
-* link:#gaxcr[Caching Scope]
-* link:#beagx[The `cache` Tag]
-* link:#beagy[The `flush` Tag]
-
-For more information about response caching as it pertains to servlets,
-see link:#beagm[Caching Servlet Results].
-
-[[gaxbq]][[GSDVG00257]][[enabling-jsp-caching]]
-
-Enabling JSP Caching
-++++++++++++++++++++
-
-To globally enable JSP caching, set the `jspCachingEnabled` property to
-`true`. The default is `false`. For example:
-
-[source,oac_no_warn]
-----
-asadmin set server-config.web-container.property.jspCachingEnabled="true"
-----
-
-For more information about the `asadmin set` command, see the
-link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-
-To enable JSP caching for a single web application, follow these steps:
-
-1.  Extract the `META-INF/jspcachtags.tld` file from the
-as-install`/modules/web-glue.jar` file.
-2.  Create a new JAR file (for example, `jspcachtags.jar`) containing
-just the `META-INF/jspcachtags.tld` file previously extracted.
-3.  Bundle this new JAR file in the `WEB-INF/lib` directory of your web
-application.
-
-
-[NOTE]
-=======================================================================
-
-Web applications that use JSP caching without bundling the tag library
-are not portable.
-
-=======================================================================
-
-
-Refer to GlassFish Server tags in JSP files as follows:
-
-[source,oac_no_warn]
-----
-<%@ taglib prefix="prefix" uri="http://glassfish.org/taglibs/cache" %>
-----
-
-Subsequently, the cache tags are available as `<`prefix`:cache>` and
-`<`prefix`:flush>`. For example, if your prefix is `mypfx`, the cache
-tags are available as `<mypfx:cache>` and `<mypfx:flush>`.
-
-[[gaxcr]][[GSDVG00258]][[caching-scope]]
-
-Caching Scope
-+++++++++++++
-
-JSP caching is available in three different scopes: `request`,
-`session`, and `application`. The default is `application`. To use a
-cache in `request` scope, a web application must specify the
-`com.sun.appserv.web.taglibs.cache.CacheRequestListener` in its
-`web.xml` deployment descriptor, as follows:
-
-[source,oac_no_warn]
-----
-<listener>
-   <listener-class>
-      com.sun.appserv.web.taglibs.cache.CacheRequestListener
-   </listener-class>
-</listener>
-----
-
-Likewise, for a web application to utilize a cache in `session` scope,
-it must specify the
-`com.sun.appserv.web.taglibs.cache.CacheSessionListener` in its
-`web.xml` deployment descriptor, as follows:
-
-[source,oac_no_warn]
-----
-<listener>
-   <listener-class>
-      com.sun.appserv.web.taglibs.cache.CacheSessionListener
-   </listener-class>
-</listener>
-----
-
-To utilize a cache in `application` scope, a web application need not
-specify any listener. The
-`com.sun.appserv.web.taglibs.cache.CacheContextListener` is already
-specified in the `jspcachtags.tld` file.
-
-[[beagx]][[GSDVG00259]][[the-cache-tag]]
-
-The `cache` Tag
-+++++++++++++++
-
-The cache tag caches the body between the beginning and ending tags
-according to the attributes specified. The first time the tag is
-encountered, the body content is executed and cached. Each subsequent
-time it is run, the cached content is checked to see if it needs to be
-refreshed and if so, it is executed again, and the cached data is
-refreshed. Otherwise, the cached data is served.
-
-[[fvyfx]][[GSDVG00023]][[attributes-of-cache]]
-
-Attributes of `cache`
-
-The following table describes attributes for the `cache` tag.
-
-[[GSDVG541]][[sthref13]][[fvygg]]
-
-
-Table 7-1 The `cache` Attributes
-
-[width="100%",cols="10%,16%,74%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`key` |ServletPath`_`Suffix |(optional) The name used by the container
-to access the cached entry. The cache key is suffixed to the servlet
-path to generate a key to access the cached entry. If no key is
-specified, a number is generated according to the position of the tag in
-the page.
-
-|`timeout` |`60s` |(optional) The time in seconds after which the body
-of the tag is executed and the cache is refreshed. By default, this
-value is interpreted in seconds. To specify a different unit of time,
-add a suffix to the timeout value as follows: `s` for seconds, `m` for
-minutes, `h` for hours, `d` for days. For example, `2h` specifies two
-hours.
-
-|`nocache` |`false` |(optional) If set to `true`, the body content is
-executed and served as if there were no `cache` tag. This offers a way
-to programmatically decide whether the cached response is sent or
-whether the body has to be executed, though the response is not cached.
-
-|`refresh` |`false` |(optional) If set to `true`, the body content is
-executed and the response is cached again. This lets you
-programmatically refresh the cache immediately regardless of the
-`timeout` setting.
-
-|`scope` |`application` |(optional) The scope of the cache. Can be
-`request`, `session`, or `application`. See link:#gaxcr[Caching Scope].
-|=======================================================================
-
-
-[[fvyeh]][[GSDVG00024]][[example-of-cache]]
-
-Example of `cache`
-
-The following example represents a cached JSP file:
-
-[source,oac_no_warn]
-----
-<%@ taglib prefix="mypfx" uri="http://glassfish.org/taglibs/cache" %>
-<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
-<mypfx:cache                 key="${sessionScope.loginId}"
-            nocache="${param.nocache}"
-            refresh="${param.refresh}"
-            timeout="10m">
-<c:choose>
-    <c:when test="${param.page == 'frontPage'}">
-        <%-- get headlines from database --%>
-    </c:when>
-    <c:otherwise>
-        ...
-    </c:otherwise>
-</c:choose>
-</mypfx:cache>
-<mypfx:cache timeout="1h">
-<h2> Local News </h2>
-    <%-- get the headline news and cache them --%>
-</mypfx:cache>
-----
-
-[[beagy]][[GSDVG00260]][[the-flush-tag]]
-
-The `flush` Tag
-+++++++++++++++
-
-Forces the cache to be flushed. If a `key` is specified, only the entry
-with that key is flushed. If no key is specified, the entire cache is
-flushed.
-
-[[fvykp]][[GSDVG00025]][[attributes-of-flush]]
-
-Attributes of `flush`
-
-The following table describes attributes for the `flush` tag.
-
-[[GSDVG542]][[sthref14]][[fvyep]]
-
-
-Table 7-2 The `flush` Attributes
-
-[width="100%",cols="11%,20%,69%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`key` |ServletPath`_`Suffix |(optional) The name used by the container
-to access the cached entry. The cache key is suffixed to the servlet
-path to generate a key to access the cached entry. If no key is
-specified, a number is generated according to the position of the tag in
-the page.
-
-|`scope` |`application` |(optional) The scope of the cache. Can be
-`request`, `session`, or `application`. See link:#gaxcr[Caching Scope].
-|=======================================================================
-
-
-[[fvyle]][[GSDVG00026]][[examples-of-flush]]
-
-Examples of `flush`
-
-To flush the entry with `key="foobar"`:
-
-[source,oac_no_warn]
-----
-<mypfx:flush key="foobar"/>
-----
-
-To flush the entire cache:
-
-[source,oac_no_warn]
-----
-<c:if test="${empty sessionScope.clearCache}">
-   <mypfx:flush />
-</c:if>
-----
-
-[[beagz]][[GSDVG00401]][[options-for-compiling-jsp-files]]
-
-Options for Compiling JSP Files
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-GlassFish Server provides the following ways of compiling JSP source
-files into servlets:
-
-* JSP files are automatically compiled at runtime.
-* The `asadmin deploy` command has a `--precompilejsp` option. For
-details, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition
-Reference Manual].
-* The `jspc` command line tool allows you to precompile JSP files at the
-command line. For details, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open
-Source Edition Reference Manual].
-
-[[beaha]][[GSDVG00142]][[creating-and-managing-sessions]]
-
-Creating and Managing Sessions
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This section describes how to create and manage HTTP sessions that
-allows users and transaction information to persist between
-interactions.
-
-The following topics are addressed here:
-
-* link:#beahb[Configuring Sessions]
-* link:#beahf[Session Managers]
-
-[[beahb]][[GSDVG00402]][[configuring-sessions]]
-
-Configuring Sessions
-^^^^^^^^^^^^^^^^^^^^
-
-The following topics are addressed here:
-
-* link:#beahc[HTTP Sessions, Cookies, and URL Rewriting]
-* link:#beahd[Coordinating Session Access]
-* link:#ghmih[Saving Sessions During Redeployment]
-* link:#gixeb[Logging Session Attributes]
-* link:#beahe[Distributed Sessions and Persistence]
-
-[[beahc]][[GSDVG00261]][[http-sessions-cookies-and-url-rewriting]]
-
-HTTP Sessions, Cookies, and URL Rewriting
-+++++++++++++++++++++++++++++++++++++++++
-
-To configure whether and how HTTP sessions use cookies and URL
-rewriting, edit the `session-properties` and `cookie-properties`
-elements in the `glassfish-web.xml` file for an individual web
-application. For more about the properties you can configure, see
-"link:../application-deployment-guide/dd-elements.html#GSDPG00276[session-properties]" in GlassFish Server Open Source
-Edition Application Deployment Guide and
-"link:../application-deployment-guide/dd-elements.html#GSDPG00130[cookie-properties]" in GlassFish Server Open Source
-Edition Application Deployment Guide.
-
-For information about configuring default session properties for the
-entire web container, see link:#beagc[Using the `default-web.xml` File]
-and the link:../ha-administration-guide/toc.html#GSHAG[GlassFish Server Open Source Edition High
-Availability Administration Guide].
-
-[[beahd]][[GSDVG00262]][[coordinating-session-access]]
-
-Coordinating Session Access
-+++++++++++++++++++++++++++
-
-Make sure that multiple threads don't simultaneously modify the same
-session object in conflicting ways. If the persistence type is
-`replicated` (see link:#gdshu[The `replicated` Persistence Type]), the
-following message in the log file indicates that this might be
-happening:
-
-[source,oac_no_warn]
-----
-Primary Key Constraint violation while saving session session_id
-----
-
-This is especially likely to occur in web applications that use HTML
-frames where multiple servlets are executing simultaneously on behalf of
-the same client. A good solution is to ensure that one of the servlets
-modifies the session and the others have read-only access.
-
-[[ghmih]][[GSDVG00263]][[saving-sessions-during-redeployment]]
-
-Saving Sessions During Redeployment
-+++++++++++++++++++++++++++++++++++
-
-Whenever a redeployment is done, the sessions at that transit time
-become invalid unless you use the `--keepstate=true` option of the
-`asadmin redeploy` command. For example:
-
-[source,oac_no_warn]
-----
-asadmin redeploy --keepstate=true --name hello.war
-----
-
-For details, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition
-Reference Manual].
-
-The default for `--keepstate` is false. This option is supported only on
-the default server instance, named `server`. It is not supported and
-ignored for any other target.
-
-For web applications, this feature is applicable only if in the
-`glassfish-web-app.xml` file the `persistence-type` attribute of the
-`session-manager` element is `file`.
-
-If any active web session fails to be preserved or restored, none of the
-sessions will be available when the redeployment is complete. However,
-the redeployment continues and a warning is logged.
-
-The new class loader of the redeployed application is used to
-deserialize any sessions previously saved. The usual restrictions about
-serialization and deserialization apply. For example, any
-application-specific class referenced by a session attribute may evolve
-only in a backward-compatible fashion. For more information about class
-loaders, see link:class-loaders.html#beade[Class Loaders].
-
-[[gixeb]][[GSDVG00264]][[logging-session-attributes]]
-
-Logging Session Attributes
-++++++++++++++++++++++++++
-
-You can write session attribute values to an access log. The access log
-format token `%session.`name`%` logs one of the following:
-
-* The value of the session attribute with the name name
-* `NULL-SESSION-ATTRIBUTE-`name if the named attribute does not exist in
-the session
-* `NULL-SESSION` if no session exists
-
-For more information about access logging and format tokens, see online
-help for the Access Log tab of the HTTP Service page in the
-Administration Console.
-
-[[beahe]][[GSDVG00265]][[distributed-sessions-and-persistence]]
-
-Distributed Sessions and Persistence
-++++++++++++++++++++++++++++++++++++
-
-A distributed HTTP session can run in multiple GlassFish Server
-instances, provided the following criteria are met:
-
-* Each server instance has the same distributable web application
-deployed to it. The `web-app` element of the `web.xml` deployment
-descriptor file must have the `distributable` subelement specified.
-* The web application uses high-availability session persistence. If a
-non-distributable web application is configured to use high-availability
-session persistence, a warning is written to the server log, and the
-session persistence type reverts to `memory`. See link:#gdshu[The
-`replicated` Persistence Type].
-* All objects bound into a distributed session must be of the types
-listed in link:#fvyem[Table 7-3].
-* The web application must be deployed using the `deploy` or `deploydir`
-command with the `--availabilityenabled` option set to `true`. See the
-link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-
-
-[NOTE]
-=======================================================================
-
-Contrary to the Servlet 5.0 specification, GlassFish Server does not
-throw an `IllegalArgumentException` if an object type not supported for
-failover is bound into a distributed session.
-
-Keep the distributed session size as small as possible. Session size has
-a direct impact on overall system throughput.
-
-=======================================================================
-
-
-In the event of an instance or hardware failure, another server instance
-can take over a distributed session, with the following limitations:
-
-* If a distributable web application references a Java EE component or
-resource, the reference might be lost. See link:#fvyem[Table 7-3] for a
-list of the types of references that `HTTPSession` failover supports.
-* References to open files or network connections are lost.
-
-For information about how to work around these limitations, see the
-link:../deployment-planning-guide/toc.html#GSPLG[GlassFish Server Open Source Edition Deployment Planning
-Guide].
-
-In the following table, No indicates that failover for the object type
-might not work in all cases and that no failover support is provided.
-However, failover might work in some cases for that object type. For
-example, failover might work because the class implementing that type is
-serializable.
-
-For more information about the `InitialContext`, see
-link:jndi.html#beans[Accessing the Naming Context]. For more information
-about transaction recovery, see link:transaction-service.html#beanm[Using
-the Transaction Service]. For more information about Administered
-Objects, see "link:../administration-guide/jms.html#GSADG00599[Administering JMS Physical Destinations]"
-in GlassFish Server Open Source Edition Administration Guide.
-
-[[GSDVG543]][[sthref15]][[fvyem]]
-
-
-Table 7-3 Object Types Supported for Java EE Web Application Session
-State Failover
-
-[width="100%",cols="45%,55%",options="header",]
-|=======================================================================
-|Java Object Type |Failover Support
-|Colocated or distributed stateless session, stateful session, or entity
-bean reference |Yes
-
-|JNDI context |Yes, `InitialContext` and `java:comp/env`
-
-|UserTransaction |Yes, but if the instance that fails is never
-restarted, any prepared global transactions are lost and might not be
-correctly rolled back or committed.
-
-|JDBC DataSource |No
-
-|Java Message Service (JMS) ConnectionFactory, Destination |No
-
-|JavaMail Session |No
-
-|Connection Factory |No
-
-|Administered Object |No
-
-|Web service reference |No
-
-|Serializable Java types |Yes
-
-|Extended persistence context |No
-|=======================================================================
-
-
-[[beahf]][[GSDVG00403]][[session-managers]]
-
-Session Managers
-^^^^^^^^^^^^^^^^
-
-A session manager automatically creates new session objects whenever a
-new session starts. In some circumstances, clients do not join the
-session, for example, if the session manager uses cookies and the client
-does not accept cookies.
-
-GlassFish Server offers these session management options, determined by
-the `session-manager` element's `persistence-type` attribute in the
-`glassfish-web.xml` file:
-
-* link:#beahg[The `memory` Persistence Type], the default
-* link:#beahh[The `file` Persistence Type], which uses a file to store
-session data
-* link:#gdshu[The `replicated` Persistence Type], which uses other
-servers in the cluster for session persistence
-
-
-[NOTE]
-=======================================================================
-
-If the session manager configuration contains an error, the error is
-written to the server log and the default (`memory`) configuration is
-used.
-
-=======================================================================
-
-
-For more information, see "link:../application-deployment-guide/dd-elements.html#GSDPG00275[session-manager]" in
-GlassFish Server Open Source Edition Application Deployment Guide.
-
-[[beahg]][[GSDVG00266]][[the-memory-persistence-type]]
-
-The `memory` Persistence Type
-+++++++++++++++++++++++++++++
-
-This persistence type is not designed for a production environment that
-requires session persistence. It provides no session persistence.
-However, you can configure it so that the session state in memory is
-written to the file system prior to server shutdown.
-
-To specify the `memory` persistence type for a specific web application,
-edit the `glassfish-web.xml` file as in the following example. The
-`persistence-type` attribute is optional, but must be set to `memory` if
-included. This overrides the web container availability settings for the
-web application.
-
-[source,oac_no_warn]
-----
-<glassfish-web-app>
-...
-
-<session-config>
-    <session-manager persistence-type="memory" />
-        <manager-properties>
-            <property name="sessionFilename" value="sessionstate" />
-        </manager-properties>
-    </session-manager>
-    ...
-</session-config>
-...
-</glassfish-web-app>
-----
-
-The only manager property that the `memory` persistence type supports is
-`sessionFilename`, which is listed under
-"link:../application-deployment-guide/dd-elements.html#GSDPG00192[manager-properties]" in GlassFish Server Open Source
-Edition Application Deployment Guide. The `sessionFilename` property
-specifies the name of the file where sessions are serialized and
-persisted if the web application or the server is stopped. To disable
-this behavior, specify an empty string as the value of
-`sessionFilename`. The default value is an empty string.
-
-For more information about the `glassfish-web.xml` file, see the
-link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition Application Deployment
-Guide].
-
-[[beahh]][[GSDVG00267]][[the-file-persistence-type]]
-
-The `file` Persistence Type
-+++++++++++++++++++++++++++
-
-This persistence type provides session persistence to the local file
-system, and allows a single server domain to recover the session state
-after a failure and restart. The session state is persisted in the
-background, and the rate at which this occurs is configurable. The store
-also provides passivation and activation of the session state to help
-control the amount of memory used. This option is not supported in a
-production environment. However, it is useful for a development system
-with a single server instance.
-
-
-[NOTE]
-=======================================================================
-
-Make sure the `delete` option is set in the `server.policy` file, or
-expired file-based sessions might not be deleted properly. For more
-information about `server.policy`, see link:securing-apps.html#beabx[The
-`server.policy` File].
-
-=======================================================================
-
-
-To specify the `file` persistence type for a specific web application,
-edit the `glassfish-web.xml` file as in the following example. Note that
-`persistence-type` must be set to `file`. This overrides the web
-container availability settings for the web application.
-
-[source,oac_no_warn]
-----
-<glassfish-web-app>
-...
-<session-config>
-    <session-manager persistence-type="file">
-        <store-properties>
-            <property name="directory" value="sessiondir" />
-        </store-properties>
-    </session-manager>
-    ...
-</session-config>
-...
-</glassfish-web-app>
-----
-
-The `file` persistence type supports all the manager properties listed
-under "link:../application-deployment-guide/dd-elements.html#GSDPG00192[manager-properties]" in GlassFish Server Open
-Source Edition Application Deployment Guide except `sessionFilename`,
-and supports the `directory` store property listed under
-"link:../application-deployment-guide/dd-elements.html#GSDPG00279[store-properties]" in GlassFish Server Open Source
-Edition Application Deployment Guide.
-
-For more information about the `glassfish-web.xml` file, see the
-link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition Application Deployment
-Guide].
-
-[[gdshu]][[GSDVG00268]][[the-replicated-persistence-type]]
-
-The `replicated` Persistence Type
-+++++++++++++++++++++++++++++++++
-
-The replicated persistence type uses other servers in the cluster for
-session persistence. Clustered server instances replicate session state.
-Each backup instance stores the replicated data in memory. This allows
-sessions to be distributed. For details, see link:#beahe[Distributed
-Sessions and Persistence]. In addition, you can configure the frequency
-and scope of session persistence. The other servers are also used as the
-passivation and activation store. Use this option in a production
-environment that requires session persistence.
-
-To use the replicated persistence type, you must enable availability.
-Select the Availability Service component under the relevant
-configuration in the Administration Console. Check the Availability
-Service box. To enable availability for the web container, select the
-Web Container Availability tab, then check the Availability Service box.
-All instances in an GlassFish Server cluster should have the same
-availability settings to ensure consistent behavior. For details, see
-the link:../ha-administration-guide/toc.html#GSHAG[GlassFish Server Open Source Edition High Availability
-Administration Guide].
-
-To change settings such as persistence frequency and persistence scope
-for the entire web container, use the Persistence Frequency and
-Persistence Scope drop-down lists on the Web Container Availability tab
-in the Administration Console, or use the `asadmin set` command. For
-example:
-
-[source,oac_no_warn]
-----
-asadmin set 
-server-config.availability-service.web-container-availability.persistence-frequency=time-based
-----
-
-For more information, see the description of the `asadmin set` command
-in the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference
-Manual].
-
-To specify the `replicated` persistence type for a specific web
-application, edit the `glassfish-web.xml` file as in the following
-example. Note that `persistence-type` must be set to `replicated`. This
-overrides the web container availability settings for the web
-application.
-
-[source,oac_no_warn]
-----
-<glassfish-web-app>
-...
-<session-config>
-    <session-manager persistence-type="replicated">
-        <manager-properties>
-            <property name="persistenceFrequency" value="web-method" />
-        </manager-properties>
-        <store-properties>
-            <property name="persistenceScope" value="session" />
-        </store-properties>
-    </session-manager>
-    ...
-</session-config>
-...
-</glassfish-web-app>
-----
-
-The `replicated` persistence type supports all the manager properties
-listed under "link:../application-deployment-guide/dd-elements.html#GSDPG00192[manager-properties]" in GlassFish Server
-Open Source Edition Application Deployment Guide except
-`sessionFilename`, and supports the `persistenceScope` store property
-listed under "link:../application-deployment-guide/dd-elements.html#GSDPG00279[store-properties]" in GlassFish Server
-Open Source Edition Application Deployment Guide.
-
-For more information about the `glassfish-web.xml` file, see the
-link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition Application Deployment
-Guide].
-
-To specify that web sessions for which high availability is enabled are
-first buffered and then replicated using a separate asynchronous thread,
-use the `--asyncreplication=true` option of the `asadmin deploy`
-command. For example:
-
-[source,oac_no_warn]
-----
-asadmin deploy --availabilityenabled=true --asyncreplication=true --name hello.war
-----
-
-If `--asyncreplication` is set to true (the default), performance is
-improved but availability is reduced. If the instance where states are
-buffered but not yet replicated fails, the states are lost. If set to
-false, performance is reduced but availability is guaranteed. States are
-not buffered but immediately transmitted to other instances in the
-cluster.
-
-[[ggrgt]][[GSDVG00143]][[using-comet]]
-
-Using Comet
-~~~~~~~~~~~
-
-This section explains the Comet programming technique and how to create
-and deploy a Comet-enabled application with the Oracle GlassFish Server.
-
-The following topics are addressed here:
-
-* link:#ggrgy[Introduction to Comet]
-* link:#ghgxk[Grizzly Comet]
-* link:#ghgxn[Bayeux Protocol]
-
-[[ggrgy]][[GSDVG00404]][[introduction-to-comet]]
-
-Introduction to Comet
-^^^^^^^^^^^^^^^^^^^^^
-
-Comet is a programming technique that allows a web server to send
-updates to clients without requiring the clients to explicitly request
-them.
-
-This kind of programming technique is called server push, which means
-that the server pushes data to the client. The opposite style is client
-pull, which means that the client must pull the data from the server,
-usually through a user-initiated event, such as a button click.
-
-Web applications that use the Comet technique can deliver updates to
-clients in a more timely manner than those that use the client-pull
-style while avoiding the latency that results from clients frequently
-polling the server.
-
-One of the many use cases for Comet is a chat room application. When the
-server receives a message from one of the chat clients, it needs to send
-the message to the other clients without requiring them to ask for it.
-With Comet, the server can deliver messages to the clients as they are
-posted rather than expecting the clients to poll the server for new
-messages.
-
-To accomplish this scenario, a Comet application establishes a
-long-lived HTTP connection. This connection is suspended on the server
-side, waiting for an event to happen before resuming. This kind of
-connection remains open, allowing an application that uses the Comet
-technique to send updates to clients when they are available rather than
-expecting clients to reopen the connection to poll the server for
-updates.
-
-[[ggrib]][[GSDVG00270]][[the-grizzly-implementation-of-comet]]
-
-The Grizzly Implementation of Comet
-+++++++++++++++++++++++++++++++++++
-
-A limitation of the Comet technique is that you must use it with a web
-server that supports non-blocking connections to avoid poor performance.
-Non-blocking connections are those that do not need to allocate one
-thread for each request. If the web server were to use blocking
-connections then it might end up holding many thousands of threads,
-thereby hindering its scalability.
-
-The GlassFish server includes the Grizzly HTTP Engine, which enables
-asynchronous request processing (ARP) by avoiding blocking connections.
-Grizzly's ARP implementation accomplishes this by using the Java NIO
-API.
-
-With Java NIO, Grizzly enables greater performance and scalability by
-avoiding the limitations experienced by traditional web servers that
-must run a thread for each request. Instead, Grizzly's ARP mechanism
-makes efficient use of a thread pool system and also keeps the state of
-requests so that it can keep requests alive without holding a single
-thread for each of them.
-
-Grizzly supports two different implementations of Comet:
-
-* link:#ghgxk[Grizzly Comet] — Based on ARP, this includes a set of APIs
-that you use from a web component to enable Comet functionality in your
-web application. Grizzly Comet is specific to the Oracle GlassFish
-Server.
-* link:#ghgxn[Bayeux Protocol] — Often referred to as `Cometd`, it
-consists of the JSON-based Bayeux message protocol, a set of Dojo or
-Ajax libraries, and an event handler. The Bayeux protocol uses a
-publish/subscribe model for server/client communication. The Bayeux
-protocol is portable, but it is container dependent if you want to
-invoke it from an Enterprise Java Beans (EJB ) component. The Grizzly
-implementation of `Cometd` consists of a servlet that you reference from
-your web application.
-
-[[ggrim]][[GSDVG00271]][[client-technologies-to-use-with-comet]]
-
-Client Technologies to Use With Comet
-+++++++++++++++++++++++++++++++++++++
-
-In addition to creating a web component that uses the Comet APIs, you
-need to enable your client to accept asynchronous updates from the web
-component. To accomplish this, you can use JavaScript, IFrames, or a
-framework, such as http://dojotoolkit.org[Dojo]
-(`http://dojotoolkit.org`).
-
-An IFrame is an HTML element that allows you to include other content in
-an HTML page. As a result, the client can embed updated content in the
-IFrame without having to reload the page.
-
-The example in this tutorial employs a combination of JavaScript and
-IFrames to allow the client to accept asynchronous updates. A servlet
-included in the example writes out JavaScript code to one of the
-IFrames. The JavaScript code contains the updated content and invokes a
-function in the page that updates the appropriate elements in the page
-with the new content.
-
-The next section explains the two kinds of connections that you can make
-to the server. While you can use any of the client technologies listed
-in this section with either kind of connection, it is more difficult to
-use JavaScript with an HTTP-streaming connection.
-
-[[ggrgo]][[GSDVG00272]][[types-of-comet-connections]]
-
-Types of Comet Connections
-++++++++++++++++++++++++++
-
-When working with Comet, as implemented in Grizzly, you have two
-different ways to handle client connections to the server:
-
-* HTTP Streaming
-* Long Polling
-
-[[ggriu]][[GSDVG00027]][[http-streaming]]
-
-HTTP Streaming
-
-The HTTP Streaming technique keeps a connection open indefinitely. It
-never closes, even after the server pushes data to the client.
-
-In the case of HTTP streaming, the application sends a single request
-and receives responses as they come, reusing the same connection
-forever. This technique significantly reduces the network latency
-because the client and the server don't need to open and close the
-connection.
-
-The basic life cycle of an application using HTTP-streaming is:
-
-request > suspend > data available > write response > data available >
-write response
-
-The client makes an initial request and then suspends the request,
-meaning that it waits for a response. Whenever data is available, the
-server writes it to the response.
-
-[[ggrhv]][[GSDVG00028]][[long-polling]]
-
-Long Polling
-
-The long-polling technique is a combination of server-push and
-client-pull because the client needs to resume the connection after a
-certain amount of time or after the server pushes an update to the
-client.
-
-The basic life cycle of an application using long-polling is:
-
-request > suspend > data available > write response > resume
-
-The client makes an initial request and then suspends the request. When
-an update is available, the server writes it to the response. The
-connection closes, and the client optionally resumes the connection.
-
-[[ggtjb]][[GSDVG00029]][[how-to-choose-the-type-of-connection]]
-
-How to Choose the Type of Connection
-
-If you anticipate that your web application will need to send frequent
-updates to the client, you should use the HTTP-streaming connection so
-that the client does not have to frequently reestablish a connection. If
-you anticipate less frequent updates, you should use the long-polling
-connection so that the web server does not need to keep a connection
-open when no updates are occurring. One caveat to using the
-HTTP-streaming connection is that if you are streaming through a proxy,
-the proxy can buffer the response from the server. So, be sure to test
-your application if you plan to use HTTP-streaming behind a proxy.
-
-[[ghgxk]][[GSDVG00405]][[grizzly-comet]]
-
-Grizzly Comet
-^^^^^^^^^^^^^
-
-For details on using Grizzly Comet including a sample application, refer
-to the Grizzly Comet documentation on GitHub
-(`https://javaee.github.io/grizzly/comet.html`).
-
-Grizzly's support for Comet includes a small set of APIs that make it
-easy to add Comet functionality to your web applications. The Grizzly
-Comet APIs that developers use most often are the following:
-
-* `CometContext`: A Comet context, which is a shareable space to which
-applications subscribe to receive updates.
-* `CometEngine`: The entry point to any component using Comet.
-Components can be servlets, JavaServer Pages ( JSP), JavaServer Faces
-components, or pure Java classes.
-* `CometEvent`: Contains the state of the `CometContext` object
-* `CometHandler`: The interface an application implements to be part of
-one or more Comet contexts.
-
-The way a developer would use this API in a web component is to perform
-the following tasks:
-
-1.  Register the context path of the application with the `CometContext`
-object: +
-[source,oac_no_warn]
-----
-CometEngine cometEngine = 
-    CometEngine.getEngine();
-CometContext cometContext = 
-    cometEngine.register(contextPath) 
-----
-2.  Register the CometHandler implementation with the `CometContext`
-object: +
-[source,oac_no_warn]
-----
-cometContext.addCometHandler(handler)
-----
-3.  Notify one or more CometHandler implementations when an event
-happens: +
-[source,oac_no_warn]
-----
-cometContext.notify((Object)(handler))
-----
-
-[[ghgxn]][[GSDVG00406]][[bayeux-protocol]]
-
-Bayeux Protocol
-^^^^^^^^^^^^^^^
-
-The Bayeux protocol, often referred to as `Cometd`, greatly simplifies
-the use of Comet. No server-side coding is needed for servers such as
-GlassFish Server that support the Bayeux protocol. Just enable Comet and
-the Bayeux protocol, then write and deploy the client.
-
-The following topics are addressed here:
-
-* link:#ghhaw[Enabling Comet]
-* link:#ghhap[To Configure the `web.xml` File]
-* link:#ghhtv[To Write, Deploy, and Run the Client]
-
-[[ghhaw]][[GSDVG00280]][[enabling-comet]]
-
-Enabling Comet
-++++++++++++++
-
-Before running a Comet-enabled application, you need to enable Comet in
-the HTTP listener for your application by setting a special attribute in
-the associated protocol configuration. The following example shows the
-`asadmin set` command that adds this attribute:
-
-[source,oac_no_warn]
-----
-asadmin set server-config.network-config.protocols.protocol.http-1.http.comet-support-enabled="true"
-----
-
-Substitute the name of the protocol for `http-1`.
-
-[[ghhap]][[GSDVG00067]][[to-configure-the-web.xml-file]]
-
-To Configure the `web.xml` File
-+++++++++++++++++++++++++++++++
-
-To enable the Bayeux protocol on the GlassFish Server, you must
-reference the `CometdServlet` in your web application's `web.xml` file.
-In addition, if your web application includes a servlet, set the
-`load-on-startup` value for your servlet to `0` (zero) so that it will
-not load until the client makes a request to it.
-
-1.  Open the `web.xml` file for your web application in a text editor.
-2.  Add the following XML code to the `web.xml` file: +
-[source,oac_no_warn]
-----
-<servlet>
-   <servlet-name>Grizzly Cometd Servlet</servlet-name>
-   <servlet-class>
-      com.sun.grizzly.cometd.servlet.CometdServlet
-   </servlet-class>
-   <init-param>
-      <description>
-         expirationDelay is the long delay before a request is
-         resumed. -1 means never.
-      </description>
-      <param-name>expirationDelay</param-name>
-      <param-value>-1</param-value>
-   </init-param>
-   <load-on-startup>1</load-on-startup>
-</servlet>
-<servlet-mapping>
-   <servlet-name>Grizzly Cometd Servlet</servlet-name>
-   <url-pattern>/cometd/*</url-pattern>
-</servlet-mapping>
-----
-Note that the `load-on-startup` value for the `CometdServlet` is `1`.
-3.  If your web application includes a servlet, set the
-`load-on-startup` value to `0` for your servlet (not the
-`CometdServlet`) as follows: +
-[source,oac_no_warn]
-----
-<servlet>
-   ...
-   <load-on-startup>0</load-on-startup>
-</servlet>
-----
-4.  Save the `web.xml` file.
-
-[[ghhtv]][[GSDVG00068]][[to-write-deploy-and-run-the-client]]
-
-To Write, Deploy, and Run the Client
-++++++++++++++++++++++++++++++++++++
-
-1.  Add script tags to the HTML page. For example: +
-[source,oac_no_warn]
-----
-<script type="text/javascript" src="chat.js"></script>
-----
-2.  In the script, call the needed libraries. For example: +
-[source,oac_no_warn]
-----
-dojo.require("dojo.io.cometd");
-----
-3.  In the script, use `publish` and `subscribe` methods to send and
-receive messages. For example: +
-[source,oac_no_warn]
-----
-cometd.subscribe("/chat/demo", false, room, "_chat");
-cometd.publish("/chat/demo", { user: room._username, chat: text});
-----
-4.  Deploy the web application as you would any other web application.
-For example: +
-[source,oac_no_warn]
-----
-asadmin deploy cometd-example.war
-----
-5.  Run the application as you would any other web application. +
-The context root for the example chat application is `/cometd` and the
-HTML page is `index.html`. So the URL might look like this: +
-[source,oac_no_warn]
-----
-http://localhost:8080/cometd/index.html
-----
-
-[[GSDVG544]]
-
-See Also
-
-For more information about deployment in the GlassFish Server, see the
-link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition Application Deployment
-Guide].
-
-For more information about the Bayeux protocol, see
-https://docs.cometd.org/current/reference/#_bayeux[Bayeux Protocol]
-(`https://docs.cometd.org/current/reference/#_bayeux`).
-
-For more information about the Dojo toolkit, see
-`http://dojotoolkit.org/`.
-
-[[beaft]][[GSDVG00144]][[advanced-web-application-features]]
-
-Advanced Web Application Features
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following topics are addressed here:
-
-* link:#beafu[Internationalization Issues]
-* link:#gilyj[Virtual Server Properties]
-* link:#beagb[Class Loader Delegation]
-* link:#beagc[Using the `default-web.xml` File]
-* link:#beagd[Configuring Logging and Monitoring in the Web Container]
-* link:#beage[Configuring Idempotent URL Requests]
-* link:#beagi[Header Management]
-* link:#geqrh[Configuring Valves and Catalina Listeners]
-* link:#geqpl[Alternate Document Roots]
-* link:#geurd[Using a context.xml File]
-* link:#gezcx[Enabling WebDav]
-* link:#ghepd[Using SSI]
-* link:#ghepi[Using CGI]
-
-[[beafu]][[GSDVG00407]][[internationalization-issues]]
-
-Internationalization Issues
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The following topics are addressed here:
-
-* link:#beafv[The Server's Default Locale]
-* link:#beafw[Servlet Character Encoding]
-
-[[beafv]][[GSDVG00281]][[the-servers-default-locale]]
-
-The Server's Default Locale
-+++++++++++++++++++++++++++
-
-To set the default locale of the entire GlassFish Server, which
-determines the locale of the Administration Console, the logs, and so
-on, use the Administration Console. Select the domain component. Then
-type a value in the Locale field. For details, click the Help button in
-the Administration Console.
-
-[[beafw]][[GSDVG00282]][[servlet-character-encoding]]
-
-Servlet Character Encoding
-++++++++++++++++++++++++++
-
-This section explains how the GlassFish Server determines the character
-encoding for the servlet request and the servlet response. For encodings
-you can use, see
-`http://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html`.
-
-[[beafx]][[GSDVG00031]][[servlet-request]]
-
-Servlet Request
-
-When processing a servlet request, the server uses the following order
-of precedence, first to last, to determine the request character
-encoding:
-
-* The `getCharacterEncoding` method
-* A hidden field in the form, specified by the `form-hint-field`
-attribute of the `parameter-encoding` element in the `glassfish-web.xml`
-file
-* The `default-charset` attribute of the `parameter-encoding` element in
-the `glassfish-web.xml` file
-* The default, which is `ISO-8859-1`
-
-For details about the `parameter-encoding` element, see
-"link:../application-deployment-guide/dd-elements.html#GSDPG00218[parameter-encoding]" in GlassFish Server Open Source
-Edition Application Deployment Guide.
-
-[[beafy]][[GSDVG00032]][[servlet-response]]
-
-Servlet Response
-
-When processing a servlet response, the server uses the following order
-of precedence, first to last, to determine the response character
-encoding:
-
-* The `setCharacterEncoding` or `setContentType` method
-* The `setLocale` method
-* The default, which is `ISO-8859-1`
-
-[[gilyj]][[GSDVG00408]][[virtual-server-properties]]
-
-Virtual Server Properties
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can set virtual server properties in the following ways:
-
-* You can define virtual server properties using the
-`asadmin create-virtual-server` command. For example: +
-[source,oac_no_warn]
-----
-asadmin create-virtual-server --hosts localhost --property authRealm=ldap MyVS
-----
-For details and a complete list of virtual server properties, see
-link:../reference-manual/create-virtual-server.html#GSRFM00062[`create-virtual-server`(1)].
-* You can define virtual server properties using the `asadmin set`
-command. For example: +
-[source,oac_no_warn]
-----
-asadmin set server-config.http-service.virtual-server.MyVS.property.authRealm="ldap"
-----
-For details, see link:../reference-manual/set.html#GSRFM00226[`set`(1)].
-* You can define virtual server properties using the Administration
-Console. Select the HTTP Service component under the relevant
-configuration, select Virtual Servers, and select the desired virtual
-server. Select Add Property, enter the property name and value, check
-the enable box, and select Save. For details and a complete list of
-virtual server properties, click the Help button in the Administration
-Console.
-
-Some virtual server properties can be set for a specific web
-application. For details, see "link:../application-deployment-guide/dd-elements.html#GSDPG00161[glassfish-web-app]" in
-GlassFish Server Open Source Edition Application Deployment Guide.
-
-[[beagb]][[GSDVG00409]][[class-loader-delegation]]
-
-Class Loader Delegation
-^^^^^^^^^^^^^^^^^^^^^^^
-
-The Servlet specification recommends that a web application class loader
-look in the local class loader before delegating to its parent. To make
-the web application class loader follow the delegation model in the
-Servlet specification, set `delegate="false"` in the `class-loader`
-element of the `glassfish-web.xml` file. It's safe to do this only for a
-web module that does not interact with any other modules.
-
-The default value is `delegate="true"`, which causes the web application
-class loader to delegate in the same manner as the other class loaders.
-Use `delegate="true"` for a web application that accesses EJB components
-or that acts as a web service client or endpoint. For details about
-`glassfish-web.xml`, see the link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source
-Edition Application Deployment Guide].
-
-For a number of packages, including `java.*` and `javax.*`, symbol
-resolution is always delegated to the parent class loader regardless of
-the `delegate` setting. This prevents applications from overriding core
-Java runtime classes or changing the API versions of specifications that
-are part of the Java EE platform.
-
-For general information about class loaders, see
-link:class-loaders.html#beade[Class Loaders].
-
-[[beagc]][[GSDVG00410]][[using-the-default-web.xml-file]]
-
-Using the `default-web.xml` File
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can use the `default-web.xml` file to define features such as
-filters and security constraints that apply to all web applications.
-
-For example, directory listings are disabled by default for added
-security. To enable directory listings, in your domain's
-`default-web.xml` file, search for the definition of the servlet whose
-`servlet-name` is equal to `default`, and set the value of the
-`init-param` named `listings` to `true`. Then redeploy your web
-application if it has already been deployed, or restart the server.
-
-[source,oac_no_warn]
-----
-<init-param>
-   <param-name>listings</param-name>
-   <param-value>true</param-value>
-</init-param>
-----
-
-If `listings` is set to `true`, you can also determine how directory
-listings are sorted. Set the value of the `init-param` named `sortedBy`
-to `NAME`, `SIZE`, or `LAST_MODIFIED`. Then redeploy your web
-application if it has already been deployed, or restart the server.
-
-[source,oac_no_warn]
-----
-<init-param>
-   <param-name>sortedBy</param-name>
-   <param-value>LAST_MODIFIED</param-value>
-</init-param>
-----
-
-The `mime-mapping` elements in `default-web.xml` are global and
-inherited by all web applications. You can override these mappings or
-define your own using `mime-mapping` elements in your web application's
-`web.xml` file. For more information about `mime-mapping` elements, see
-the Servlet specification.
-
-You can use the Administration Console to edit the `default-web.xml`
-file. For details, click the Help button in the Administration Console.
-As an alternative, you can edit the file directly using the following
-steps.
-
-[[fvymc]][[GSDVG00069]][[to-use-the-default-web.xml-file]]
-
-To Use the `default-web.xml` File
-+++++++++++++++++++++++++++++++++
-
-1.  Place the JAR file for the filter, security constraint, or other
-feature in the domain-dir`/lib` directory.
-2.  Edit the domain-dir`/config/default-web.xml` file to refer to the
-JAR file.
-3.  Restart the server.
-
-[[beagd]][[GSDVG00411]][[configuring-logging-and-monitoring-in-the-web-container]]
-
-Configuring Logging and Monitoring in the Web Container
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-For information about configuring logging and monitoring in the web
-container using the Administration Console, click the Help button in the
-Administration Console. Select Logger Settings under the relevant
-configuration, or select the Stand-Alone Instances component, select the
-instance from the table, and select the Monitor tab.
-
-[[beage]][[GSDVG00412]][[configuring-idempotent-url-requests]]
-
-Configuring Idempotent URL Requests
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-An idempotent request is one that does not cause any change or
-inconsistency in an application when retried. To enhance the
-availability of your applications deployed on an GlassFish Server
-cluster, configure the load balancer to retry failed idempotent HTTP
-requests on all the GlassFish Server instances in a cluster. This option
-can be used for read-only requests, for example, to retry a search
-request.
-
-The following topics are addressed here:
-
-* link:#beagf[Specifying an Idempotent URL]
-* link:#beagg[Characteristics of an Idempotent URL]
-
-[[beagf]][[GSDVG00283]][[specifying-an-idempotent-url]]
-
-Specifying an Idempotent URL
-++++++++++++++++++++++++++++
-
-To configure idempotent URL response, specify the URLs that can be
-safely retried in `idempotent-url-pattern` elements in the
-`glassfish-web.xml` file. For example:
-
-[source,oac_no_warn]
-----
-<idempotent-url-pattern url-pattern="sun_java/*" no-of-retries="10"/>
-----
-
-For details, see "link:../application-deployment-guide/dd-elements.html#GSDPG00164[idempotent-url-pattern]" in GlassFish
-Server Open Source Edition Application Deployment Guide.
-
-If none of the server instances can successfully serve the request, an
-error page is returned.
-
-[[beagg]][[GSDVG00284]][[characteristics-of-an-idempotent-url]]
-
-Characteristics of an Idempotent URL
-++++++++++++++++++++++++++++++++++++
-
-Since all requests for a given session are sent to the same application
-server instance, and if that GlassFish Server instance is unreachable,
-the load balancer returns an error message. Normally, the request is not
-retried on another GlassFish Server instance. However, if the URL
-pattern matches that specified in the `glassfish-web.xml` file, the
-request is implicitly retried on another GlassFish Server instance in
-the cluster.
-
-In HTTP, some methods (such as GET) are idempotent, while other methods
-(such as POST) are not. In effect, retrying an idempotent URL should not
-cause values to change on the server or in the database. The only
-difference should be a change in the response received by the user.
-
-Examples of idempotent requests include search engine queries and
-database queries. The underlying principle is that the retry does not
-cause an update or modification of data.
-
-A search engine, for example, sends HTTP requests with the same URL
-pattern to the load balancer. Specifying the URL pattern of the search
-request to the load balancer ensures that HTTP requests with the
-specified URL pattern are implicitly retried on another GlassFish Server
-instance.
-
-For example, if the request URL sent to the GlassFish Server is of the
-type `/search/`something`.html`, then the URL pattern can be specified
-as `/search/*`.
-
-Examples of non-idempotent requests include banking transactions and
-online shopping. If you retry such requests, money might be transferred
-twice from your account.
-
-[[beagi]][[GSDVG00413]][[header-management]]
-
-Header Management
-^^^^^^^^^^^^^^^^^
-
-In all Editions of the GlassFish Server, the `Enumeration` from
-`request.getHeaders()` contains multiple elements (one element per
-request header) instead of a single, aggregated value.
-
-The header names used in `HttpServletResponse.add`XXX`Header()` and
-`HttpServletResponse.set`XXX`Header()` are returned as they were
-created.
-
-[[geqrh]][[GSDVG00414]][[configuring-valves-and-catalina-listeners]]
-
-Configuring Valves and Catalina Listeners
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can configure custom valves and Catalina listeners for web modules
-or virtual servers by defining properties. A valve class must implement
-the org.apache.catalina.Valve interface from Tomcat or previous
-GlassFish Server releases, or the org.glassfish.web.valve.GlassFishValve
-interface from the current GlassFish Server release. A listener class
-for a virtual server must implement the
-org.apache.catalina.ContainerListener or
-org.apache.catalina.LifecycleListener interface. A listener class for a
-web module must implement the org.apache.catalina.ContainerListener ,
-org.apache.catalina.LifecycleListener, or
-org.apache.catalina.InstanceListener interface.
-
-In the `glassfish-web.xml` file, valve and listener properties for a web
-module look like this:
-
-[source,oac_no_warn]
-----
-<glassfish-web-app ...>
-   ...
-   <property name="valve_1" value="org.glassfish.extension.Valve"/>
-   <property name="listener_1" value="org.glassfish.extension.MyLifecycleListener"/>
-</glassfish-web-app>
-----
-
-You can define these same properties for a virtual server. For more
-information, see link:#gilyj[Virtual Server Properties].
-
-[[geqpl]][[GSDVG00415]][[alternate-document-roots]]
-
-Alternate Document Roots
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-An alternate document root (docroot) allows a web application to serve
-requests for certain resources from outside its own docroot, based on
-whether those requests match one (or more) of the URI patterns of the
-web application's alternate docroots.
-
-To specify an alternate docroot for a web application or a virtual
-server, use the `alternatedocroot_n` property, where n is a positive
-integer that allows specification of more than one. This property can be
-a subelement of a `glassfish-web-app` element in the `glassfish-web.xml`
-file or a virtual server property. For more information about these
-elements, see "link:../application-deployment-guide/dd-elements.html#GSDPG00161[glassfish-web-app]" in GlassFish Server
-Open Source Edition Application Deployment Guide.
-
-A virtual server's alternate docroots are considered only if a request
-does not map to any of the web modules deployed on that virtual server.
-A web module's alternate docroots are considered only once a request has
-been mapped to that web module.
-
-If a request matches an alternate docroot's URI pattern, it is mapped to
-the alternate docroot by appending the request URI (minus the web
-application's context root) to the alternate docroot's physical location
-(directory). If a request matches multiple URI patterns, the alternate
-docroot is determined according to the following precedence order:
-
-* Exact match
-* Longest path match
-* Extension match
-
-For example, the following properties specify three `glassfish-web.xml`
-docroots. The URI pattern of the first alternate docroot uses an exact
-match, whereas the URI patterns of the second and third alternate
-docroots use extension and longest path prefix matches, respectively.
-
-[source,oac_no_warn]
-----
-<property name="alternatedocroot_1" value="from=/my.jpg dir=/srv/images/jpg"/>
-<property name="alternatedocroot_2" value="from=*.jpg dir=/srv/images/jpg"/>
-<property name="alternatedocroot_3" value="from=/jpg/* dir=/src/images"/>
-----
-
-The `value` of each alternate docroot has two components: The first
-component, `from`, specifies the alternate docroot's URI pattern, and
-the second component, `dir`, specifies the alternate docroot's physical
-location (directory).
-
-Suppose the above examples belong to a web application deployed at
-`http://company22.com/myapp`. The first alternate docroot maps any
-requests with this URL:
-
-[source,oac_no_warn]
-----
-http://company22.com/myapp/my.jpg
-----
-
-To this resource:
-
-[source,oac_no_warn]
-----
-/svr/images/jpg/my.jpg
-----
-
-The second alternate docroot maps any requests with a `*.jpg` suffix,
-such as:
-
-[source,oac_no_warn]
-----
-http://company22.com/myapp/*.jpg
-----
-
-To this physical location:
-
-[source,oac_no_warn]
-----
-/svr/images/jpg
-----
-
-The third alternate docroot maps any requests whose URI starts with
-`/myapp/jpg/`, such as:
-
-[source,oac_no_warn]
-----
-http://company22.com/myapp/jpg/*
-----
-
-To the same directory as the second alternate docroot.
-
-For example, the second alternate docroot maps this request:
-
-[source,oac_no_warn]
-----
-http://company22.com/myapp/abc/def/my.jpg
-----
-
-To:
-
-[source,oac_no_warn]
-----
-/srv/images/jpg/abc/def/my.jpg
-----
-
-The third alternate docroot maps:
-
-[source,oac_no_warn]
-----
-http://company22.com/myapp/jpg/abc/resource
-----
-
-To:
-
-[source,oac_no_warn]
-----
-/srv/images/jpg/abc/resource
-----
-
-If a request does not match any of the target web application's
-alternate docroots, or if the target web application does not specify
-any alternate docroots, the request is served from the web application's
-standard docroot, as usual.
-
-[[geurd]][[GSDVG00416]][[using-a-context.xml-file]]
-
-Using a context.xml File
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can define a `context.xml` file for all web applications, for web
-applications assigned to a specific virtual server, or for a specific
-web application.
-
-To define a global `context.xml` file, place the file in the
-domain-dir`/config` directory and name it `context.xml`.
-
-Use the `contextXmlDefault` property to specify the name and the
-location, relative to domain-dir, of the `context.xml` file for a
-specific virtual server. Specify this property in one of the following
-ways:
-
-* In the Administration Console, open the HTTP Service component under
-the relevant configuration. Open the Virtual Servers component and
-scroll down to the bottom of the page. Enter `contextXmlDefault` as the
-property name and the path and file name relative to domain-dir as the
-property value.
-* Use the `asadmin create-virtual-server` command. For example: +
-[source,oac_no_warn]
-----
-asadmin create-virtual-server --property contextXmlDefault=config/vs1ctx.xml vs1
-----
-* Use the `asadmin set` command for an existing virtual server. For
-example: +
-[source,oac_no_warn]
-----
-asadmin set server-config.http-service.virtual-server.vs1.property.contextXmlDefault=config/myctx.xml
-----
-
-To define a `context.xml` file for a specific web application, place the
-file in the `META-INF` directory and name it `context.xml`.
-
-For more information about virtual server properties, see
-link:#gilyj[Virtual Server Properties]. For more information about the
-`context.xml` file, see
-http://tomcat.apache.org/tomcat-5.5-doc/config/context.html[The Context
-Container]
-(`http://tomcat.apache.org/tomcat-5.5-doc/config/context.html`). Context
-parameters, environment entries, and resource definitions in
-`context.xml` are supported in the GlassFish Server.
-
-[[gezcx]][[GSDVG00417]][[enabling-webdav]]
-
-Enabling WebDav
-^^^^^^^^^^^^^^^
-
-To enable WebDav in the GlassFish Server, you edit the `web.xml` and
-`glassfish-web.xml` files as follows.
-
-First, enable the WebDav servlet in your `web.xml` file:
-
-[source,oac_no_warn]
-----
-<servlet>
-   <servlet-name>webdav</servlet-name>
-   <servlet-class>org.apache.catalina.servlets.WebdavServlet</servlet-class>
-   <init-param>
-      <param-name>debug</param-name>
-      <param-value>0</param-value>
-   </init-param>
-   <init-param>
-      <param-name>listings</param-name>
-      <param-value>true</param-value>
-   </init-param>
-   <init-param>
-      <param-name>readonly</param-name>
-      <param-value>false</param-value>
-   </init-param>
-</servlet>
-----
-
-Then define the servlet mapping associated with your WebDav servlet in
-your `web.xml` file:
-
-[source,oac_no_warn]
-----
-<servlet-mapping>
-   <servlet-name>webdav</servlet-name>
-   <url-pattern>/webdav/*</url-pattern>
-</servlet-mapping>
-----
-
-To protect the WebDav servlet so other users can't modify it, add a
-security constraint in your `web.xml` file:
-
-[source,oac_no_warn]
-----
-<security-constraint>
-   <web-resource-collection>
-      <web-resource-name>Login Resources</web-resource-name>
-      <url-pattern>/webdav/*</url-pattern>
-   </web-resource-collection>
-   <auth-constraint>
-      <role-name>Admin</role-name>
-   </auth-constraint>
-   <user-data-constraint>
-      <transport-guarantee>NONE</transport-guarantee>
-   </user-data-constraint>
-   <login-config>
-      <auth-method>BASIC</auth-method>
-      <realm-name>default</realm-name>
-   </login-config>
-   <security-role>
-      <role-name>Admin</role-name>
-   </security-role>
-</security-constraint>
-----
-
-Then define a security role mapping in your `glassfish-web.xml` file:
-
-[source,oac_no_warn]
-----
-<security-role-mapping>
-   <role-name>Admin</role-name>
-   <group-name>Admin</group-name>
-</security-role-mapping>
-----
-
-If you are using the `file` realm, create a user and password. For
-example:
-
-[source,oac_no_warn]
-----
-asadmin create-file-user --groups Admin --authrealmname default admin
-----
-
-Enable the security manager as described in
-link:securing-apps.html#gbyah[Enabling and Disabling the Security
-Manager].
-
-You can now use any WebDav client by connecting to the WebDav servlet
-URL, which has this format:
-
-[source,oac_no_warn]
-----
-http://host:port/context-root/webdav/file
-----
-
-For example:
-
-[source,oac_no_warn]
-----
-http://localhost:80/glassfish-webdav/webdav/index.html
-----
-
-You can add the WebDav servlet to your `default-web.xml` file to enable
-it for all applications, but you can't set up a security role mapping to
-protect it.
-
-[[ghepd]][[GSDVG00418]][[using-ssi]]
-
-Using SSI
-^^^^^^^^^
-
-To enable SSI (server-side includes) processing for a specific web
-module, add the `SSIServlet` to your `web.xml` file as follows:
-
-[source,oac_no_warn]
-----
-<web-app>
-   <servlet>
-      <servlet-name>ssi</servlet-name>
-      <servlet-class>org.apache.catalina.ssi.SSIServlet</servlet-class>
-   </servlet>
-   ...
-   <servlet-mapping>
-      <servlet-name>ssi</servlet-name>
-      <url-pattern>*.shtml</url-pattern>
-   </servlet-mapping>
-   ...
-   <mime-mapping>
-      <extension>shtml</extension>
-      <mime-type>text/html</mime-type>
-   </mime-mapping>
-</web-app>
-----
-
-To enable SSI processing for all web modules, un-comment the
-corresponding sections in the `default-web.xml` file.
-
-If the `mime-mapping` is not specified in `web.xml`, GlassFish Server
-attempts to determine the MIME type from `default-web.xml` or the
-operating system default.
-
-You can configure the following `init-param` values for the
-`SSIServlet`.
-
-[[GSDVG545]][[sthref16]][[gheoy]]
-
-
-Table 7-4 `SSIServlet` `init-param` Values
-
-[width="100%",cols="28%,11%,20%,41%",options="header",]
-|=======================================================================
-|init-param |Type |Default |Description
-|buffered |`boolean` |`false` |Specifies whether the output should be
-buffered.
-
-|debug |`int` |`0` (for no debugging) |Specifies the debugging level.
-
-|expires |`Long` |`Expires` header in HTTP response not set |Specifies
-the expiration time in seconds.
-
-|inputEncoding |`String` |operating system encoding |Specifies encoding
-for the SSI input if there is no URL content encoding specified.
-
-|isVirtualWebappRelative |`boolean` |`false` (relative to the given SSI
-file) |Specifies whether the virtual path of the `#include` directive is
-relative to the `content-root`.
-
-|outputEncoding |`String` |UTF-8 |Specifies encoding for the SSI output.
-|=======================================================================
-
-
-For more information about SSI, see
-`http://httpd.apache.org/docs/2.2/mod/mod_include.html`.
-
-[[ghepi]][[GSDVG00419]][[using-cgi]]
-
-Using CGI
-^^^^^^^^^
-
-To enable CGI (common gateway interface) processing for a specific web
-module, add the `CGIServlet` to your `web.xml` file as follows:
-
-[source,oac_no_warn]
-----
-<web-app>
-   <servlet>
-      <servlet-name>cgi</servlet-name>
-      <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
-   </servlet>
-   ...
-   <servlet-mapping>
-      <servlet-name>cgi</servlet-name>
-      <url-pattern>/cgi-bin/*</url-pattern>
-   </servlet-mapping>
-</web-app>
-----
-
-To enable CGI processing for all web modules, un-comment the
-corresponding sections in the `default-web.xml` file.
-
-Package the CGI program under the `cgiPathPrefix`. The default
-`cgiPathPrefix` is `WEB-INF/cgi`. For security, it is highly recommended
-that the contents and binaries of CGI programs be prohibited from direct
-viewing or download. For information about hiding directory listings,
-see link:#beagc[Using the `default-web.xml` File].
-
-Invoke the CGI program using a URL of the following format:
-
-[source,oac_no_warn]
-----
-http://host:8080/context-root/cgi-bin/cgi-name
-----
-
-For example:
-
-[source,oac_no_warn]
-----
-http://localhost:8080/mycontext/cgi-bin/hello
-----
-
-You can configure the following `init-param` values for the
-`CGIServlet`.
-
-[[GSDVG546]][[sthref17]][[ghern]]
-
-
-Table 7-5 `CGIServlet` `init-param` Values
-
-[width="100%",cols="25%,11%,27%,37%",options="header",]
-|=======================================================================
-|init-param |Type |Default |Description
-|cgiPathPrefix |`String` |`WEB-INF/cgi` |Specifies the subdirectory
-containing the CGI programs.
-
-|debug |`int` |`0` (for no debugging) |Specifies the debugging level.
-
-|executable |`String` |`perl` |Specifies the executable for running the
-CGI script.
-
-|parameterEncoding |`String` |`System.getProperty``("file.encoding",`
-`"UTF-8")` |Specifies the parameter's encoding.
-
-|passShellEnvironment |`boolean` |`false` |Specifies whether to pass
-shell environment properties to the CGI program.
-|=======================================================================
-
-
-To work with a native executable, do the following:
-
-1.  Set the value of the `init-param` named executable to an empty
-`String` in the `web.xml` file.
-2.  Make sure the executable has its executable bits set correctly.
-3.  Use directory deployment to deploy the web module. Do not deploy it
-as a WAR file, because the executable bit information is lost during the
-process of `jar` and `unjar`. For more information about directory
-deployment, see the link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition
-Application Deployment Guide].
-
-
diff --git a/docs/application-development-guide/src/main/jbake/content/webservices.adoc b/docs/application-development-guide/src/main/jbake/content/webservices.adoc
deleted file mode 100644
index 00a2aa1..0000000
--- a/docs/application-development-guide/src/main/jbake/content/webservices.adoc
+++ /dev/null
@@ -1,357 +0,0 @@
-type=page
-status=published
-title=Developing Web Services
-next=jpa.html
-prev=securing-apps.html
-~~~~~~
-Developing Web Services
-=======================
-
-[[GSDVG00007]][[gaszn]]
-
-
-[[developing-web-services]]
-5 Developing Web Services
--------------------------
-
-This chapter describes Oracle GlassFish Server support for web services.
-The following topics are addressed here:
-
-* link:#gbizi[Creating Portable Web Service Artifacts]
-* link:#gbixz[Deploying a Web Service]
-* link:#gbiyw[The Web Service URI, WSDL File, and Test Page]
-* link:#CHDEBBCH[The Databinding Provider]
-* link:#gcgzz[GlassFish Java EE Service Engine]
-
-
-[NOTE]
-=======================================================================
-
-If you installed the Web Profile, web services are not supported unless
-the optional Metro Web Services Stack add-on component is downloaded
-from the Update Tool. Without the Metro add-on component, a servlet or
-EJB component cannot be a web service endpoint, and the
-`glassfish-web.xml` and `glassfish-ejb-jar.xml` elements related to web
-services are ignored. For information about the Update Tool, see
-"olink:GSADG00701[Update Tool]" in GlassFish Server Open Source Edition
-Administration Guide.
-
-In addition, the as-install`/modules/webservices-osgi.jar` and
-as-install`/modules/webservices-api-osgi.jar` files must be in
-the classpath of your web services application. IDEs such as NetBeans
-and Eclipse do this automatically.
-
-=======================================================================
-
-
-"https://javaee.github.io/tutorial/partwebsvcs.html[Web Services]" in
-The Java EE 8 Tutorial shows how to deploy simple web services to
-GlassFish Server.
-
-For additional information about JAXB (Java Architecture for XML
-Binding), see
-http://jcp.org/aboutJava/communityprocess/pfd/jsr222/index.html[Java
-Specification Request (JSR) 222] and link:#CHDEBBCH[The Databinding
-Provider].
-
-For additional information about JAX-WS (Java API for XML-Based Web
-Services), see
-http://jcp.org/aboutJava/communityprocess/pfd/jsr224/index.html[Java
-Specification Request (JSR) 224] and
-http://jcp.org/en/jsr/detail?id=109[Java Specification Request (JSR)
-109].
-
-For information about web services security, see
-link:securing-apps.html#beaca[Configuring Message Security for Web
-Services].
-
-The Fast Infoset standard specifies a binary format based on the XML
-Information Set. This format is an efficient alternative to XML. For
-information about using Fast Infoset, see the following links:
-
-* http://download.oracle.com/docs/cd/E17802_01/webservices/webservices/docs/1.6/ReleaseNotes.html[Java
-Web Services Developer Pack 1.6 Release Notes]
-* http://download.oracle.com/docs/cd/E17802_01/webservices/webservices/docs/1.6/jaxrpc/fastinfoset/manual.html[Fast
-Infoset in Java Web Services Developer Pack, Version 1.6]
-* https://javaee.github.io/metro-fi/[Fast Infoset Project]
-(`https://javaee.github.io/metro-fi/`
-
-[[gbizi]][[GSDVG00126]][[creating-portable-web-service-artifacts]]
-
-Creating Portable Web Service Artifacts
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-For a tutorial that shows how to use the `wsimport` and `wsgen`
-commands, see "https://javaee.github.io/tutorial/partwebsvcs.html[Web
-Services]" in The Java EE 8 Tutorial.
-
-[[gbixz]][[GSDVG00127]][[deploying-a-web-service]]
-
-Deploying a Web Service
-~~~~~~~~~~~~~~~~~~~~~~~
-
-You deploy a web service endpoint to the GlassFish Server just as you
-would any servlet, stateless session bean (SLSB), or application.
-
-
-[NOTE]
-=======================================================================
-
-For complex services with dependent classes, user specified WSDL files,
-or other advanced features, autodeployment of an annotated file is not
-sufficient.
-
-=======================================================================
-
-
-The GlassFish Server deployment descriptor files `glassfish-web.xml` and
-`glassfish-ejb-jar.xml` provide optional web service enhancements in the
-`webservice-endpoint` and `webservice-description` elements, including a
-`debugging-enabled` subelement that enables the creation of a test page.
-The test page feature is enabled by default and described in
-link:#gbiyw[The Web Service URI, WSDL File, and Test Page].
-
-For more information about deployment, autodeployment, and deployment
-descriptors, see the link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition
-Application Deployment Guide]. For more information about the
-`asadmin deploy` command, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open
-Source Edition Reference Manual].
-
-[[gbiyw]][[GSDVG00128]][[the-web-service-uri-wsdl-file-and-test-page]]
-
-The Web Service URI, WSDL File, and Test Page
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Clients can run a deployed web service by accessing its service endpoint
-address URI, which has the following format:
-
-[source,oac_no_warn]
-----
-http://host:port/context-root/servlet-mapping-url-pattern
-----
-
-The context-root is defined in the `application.xml` or `web.xml` file,
-and can be overridden in the `glassfish-application.xml` or
-`glassfish-web.xml` file. The servlet-mapping-url-pattern is defined in
-the `web.xml` file.
-
-In the following example, the context-root is `my-ws` and the
-servlet-mapping-url-pattern is `/simple`:
-
-[source,oac_no_warn]
-----
-http://localhost:8080/my-ws/simple
-----
-
-You can view the WSDL file of the deployed service in a browser by
-adding `?WSDL` to the end of the URI. For example:
-
-[source,oac_no_warn]
-----
-http://localhost:8080/my-ws/simple?WSDL
-----
-
-For debugging, you can run a test page for the deployed service in a
-browser by adding `?Tester` to the end of the URL. For example:
-
-[source,oac_no_warn]
-----
-http://localhost:8080/my-ws/simple?Tester
-----
-
-You can also test a service using the Administration Console. Open the
-Web Services component, select the web service in the listing on the
-General tab, and select Test. For details, click the Help button in the
-Administration Console.
-
-
-[NOTE]
-=======================================================================
-
-The test page works only for WS-I compliant web services. This means
-that the tester servlet does not work for services with WSDL files that
-use RPC/encoded binding.
-
-=======================================================================
-
-
-Generation of the test page is enabled by default. You can disable the
-test page for a web service by setting the value of the
-`debugging-enabled` element in the `glassfish-web.xml` and
-`glassfish-ejb-jar.xml` deployment descriptor to `false`. For more
-information, see the link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition
-Application Deployment Guide].
-
-[[CHDEBBCH]][[GSDVG536]][[the-databinding-provider]]
-
-The Databinding Provider
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-The JAX-WS reference implementation (RI) used to be dependent on the
-JAXB RI for databinding. JAXB and JAX-WS implementations have been
-decoupled, and databinding is modular. JAXB and JAX-WS are no longer
-Java EE APIs.
-
-The EclipseLink JAXB implementation, plus EclipseLink extensions, is
-called MOXy. The `org.eclipse.persistence.moxy.jar` file is bundled with
-GlassFish Server, which supports the JAXB RI and MOXy as databinding
-providers.
-
-To specify the databinding provider for the JVM, set the
-`com.sun.xml.ws.spi.db.BindingContextFactory` JVM property to one of the
-following values:
-
-com.sun.xml.ws.db.glassfish.JAXBRIContextFactory::
-  Specifies the JAXB reference implementation. This is the default.
-com.sun.xml.ws.db.toplink.JAXBContextFactory::
-  Specifies Eclipselink MOXy JAXB binding.
-
-For example:
-
-[source,oac_no_warn]
-----
-asadmin create-jvm-options -Dcom.sun.xml.ws.spi.db.BindingContextFactory=com.sun.xml.ws.db.toplink.JAXBContextFactory
-----
-
-To specify the databinding provider for a web service endpoint:
-
-* Set the `org.jvnet.ws.databinding.DatabindingModeFeature` feature
-during `WebServiceFeature` initialization or using the `add` method.
-Allowed values are as follows:::
-org.jvnet.ws.databinding.DatabindingModeFeature.GLASSFISH_JAXB::
-  Specifies the JAXB reference implementation. This is the default.
-com.sun.xml.ws.db.toplink.JAXBContextFactory.ECLIPSELINK_JAXB::
-  Specifies Eclipselink MOXy JAXB binding. +
-For example: +
-[source,oac_no_warn]
-----
-import jakarta.xml.ws.WebServiceFeature;
-import org.jvnet.ws.databinding.DatabindingModeFeature;
-import com.sun.xml.ws.db.toplink.JAXBContextFactory;
-...
-WebServiceFeature[] features = {new DatabindingModeFeature(JAXBContextFactory.ECLIPSELINK_JAXB)};
-...
-----
-* Set the `org.jvnet.ws.databinding.DatabindingModeFeature` feature
-using the `@DatabindingMode` annotation. For example: +
-[source,oac_no_warn]
-----
-import jakarta.jws.WebService;
-import org.jvnet.ws.databinding.DatabindingMode;
-import com.sun.xml.ws.db.toplink.JAXBContextFactory;
-...
-@WebService()
-@DatabindingMode(JAXBContextFactory.ECLIPSELINK_JAXB);
-...
-----
-* Set the `databinding` attribute of the `endpoint` element in the
-`sun-jaxws.xml` file. Allowed values are `glassfish.jaxb` or
-`eclipselink.jaxb`. For example: +
-[source,oac_no_warn]
-----
-<endpoint
-name='hello'
-implementation='hello.HelloImpl'
-url-pattern='/hello'
-databinding='eclipselink.jaxb'/>
-----
-
-The EclipseLink JAXB compiler is not included but can be used with
-GlassFish Server. Download the EclipseLink zip file at
-`http://www.eclipse.org/eclipselink/downloads/` and unzip it. The
-compiler files are located here:
-
-[source,oac_no_warn]
-----
-bin/jaxb-compiler.cmd
-bin/jaxb-compiler.sh
-----
-
-[[gcgzz]][[GSDVG00129]][[glassfish-java-ee-service-engine]]
-
-GlassFish Java EE Service Engine
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-GlassFish Server 5.0 provides the GlassFish Java EE Service Engine, a
-JSR 208 compliant Java Business Integration (JBI) runtime component that
-connects Java EE web services to JBI components. The Java EE Service
-Engine is installed as an add-on component using the Update Tool. Look
-for the JBI component named Java EE Service Engine. A JBI runtime is not
-installed with or integrated into GlassFish Server 5.0 and must be
-obtained separately. For more information about using the Update Tool to
-obtain the Java EE Service Engine and other add-on components, see
-"link:../administration-guide/toc.html#GSADG00701[Update Tool]" in GlassFish Server Open Source Edition
-Administration Guide.
-
-The Java EE Service Engine acts as a bridge between the Java EE and JBI
-runtime environments for web service providers and web service
-consumers. The Java EE Service Engine provides better performance than a
-SOAP over HTTP binding component due to in-process communication between
-components and additional protocols provided by JBI binding components
-such as JMS, SMTP, and File.
-
-The http://jcp.org/en/jsr/detail?id=208[JSR 208]
-(`http://jcp.org/en/jsr/detail?id=208`) specification allows
-transactions to be propagated to other components using a message
-exchange property specified in the `JTA_TRANSACTION_PROPERTY_NAME`
-field. The Java EE Service Engine uses this property to set and get a
-transaction object from the JBI message exchange. It then uses the
-transaction object to take part in a transaction. This means a Java EE
-application or module can take part in a transaction started by a JBI
-application. Conversely, a JBI application can take part in a
-transaction started by a Java EE application or module.
-
-Similarly, the JSR 208 specification allows a security subject to be
-propagated as a message exchange property named
-`javax.jbi.security.subject`. Thus a security subject can be propagated
-from a Java EE application or module to a JBI application or the
-reverse.
-
-To deploy a Java EE application or module as a JBI service unit, use the
-`asadmin deploy` command, or autodeployment. For more information about
-the `asadmin deploy` command, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open
-Source Edition Reference Manual]. For more information about
-autodeployment, see "link:../application-deployment-guide/deploying-applications.html#GSDPG00041[To Deploy an Application or Module
-Automatically]" in GlassFish Server Open Source Edition Application
-Deployment Guide.
-
-[[gelxr]][[GSDVG00387]][[using-the-jbi.xml-file]]
-
-Using the `jbi.xml` File
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-Section 6.3.1 of the JSR 208 specification describes the `jbi.xml` file.
-This is a deployment descriptor, located in the `META-INF` directory. To
-deploy a Java EE application or module as a JBI service unit, you need
-only specify a small subset of elements in the `jbi.xml` file. Here is
-an example provider:
-
-[source,oac_no_warn]
-----
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<jbi version="1.0" xmlns="http://java.sun.com/xml/ns/jbi" xmlns:ns0="http://ejbws.jbi.misc/">
-  <services binding-component="false">
-    <provides endpoint-name="MiscPort" interface-name="ns0:Misc" service-name="ns0:MiscService"/>
-  </services>
-</jbi>
-----
-
-Here is an example consumer:
-
-[source,oac_no_warn]
-----
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<jbi version="1.0" xmlns="http://java.sun.com/xml/ns/jbi" xmlns:ns0="http://message.hello.jbi/">
-  <services binding-component="false">
-    <consumes endpoint-name="MsgPort" interface-name="ns0:Msg" service-name="ns0:MsgService"/>
-  </services>
-</jbi>
-----
-
-The Java EE Service Engine enables the endpoints described in the
-`provides` section of the `jbi.xml` file in the JBI runtime. Similarly,
-the Java EE Service Engine routes invocations of the endpoints described
-in the `consumes` section from the Java EE web service consumer to the
-JBI runtime.
-
-
diff --git a/docs/application-development-guide/src/main/jbake/jbake.properties b/docs/application-development-guide/src/main/jbake/jbake.properties
deleted file mode 100644
index 546d09c..0000000
--- a/docs/application-development-guide/src/main/jbake/jbake.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-site.host=http://jbake.org
-render.tags=false
-render.sitemap=false
-render.archive=false
-render.feed=false
-asciidoctor.option.safe=0
-asciidoctor.attributes.export=true
diff --git a/docs/application-development-guide/src/main/jbake/templates/footer.ftl b/docs/application-development-guide/src/main/jbake/templates/footer.ftl
deleted file mode 100644
index 6f2b09e..0000000
--- a/docs/application-development-guide/src/main/jbake/templates/footer.ftl
+++ /dev/null
@@ -1,46 +0,0 @@
-<#-- a footer template fragment included in the page template -->
-<hr />
-
-<table width="90%" id="bottom-nav" cellspacing="0" cellpadding="0">
-	<colgroup>
-		<col width="12%"/>
-		<col width="12%"/>
-		<col width="*"/>
-	</colgroup>
-	<tr>		
-	    <#if content.prev??>
-		<td align="left">
-		<a href="${content.prev}">
-			<span class=" vector-font"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Previous</span>
-		</a>
-		</td>
-		</#if>
-
-		<#if content.next??>
-		<td align="left">
-		<a href="${content.next}">
-			<span class="vector-font"><i class="fa fa-arrow-circle-right vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Next</span>
-		</a>
-		</td>
-		</#if>
-
-		<td align="right">
-		<a href="toc.html">
-			<span class="vector-font"><i class="fa fa-list vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Contents</span>
-		</a>
-		</td>
-	</tr>
-</table>
-
-<span id="copyright">
-        <img src="img/eclipse_foundation_logo_tiny.png" height="20px" alt="Eclipse Foundation Logo" align="top"/>&nbsp;            
-        <span >Copyright&nbsp;&copy;&nbsp;2019,&nbsp;Oracle&nbsp;and/or&nbsp;its&nbsp;affiliates.&nbsp;All&nbsp;rights&nbsp;reserved.</span>
-</span>
-
-<p align="center" class="beta">${config.status!}</p>
-
-</body>
-</html>
diff --git a/docs/application-development-guide/src/main/jbake/templates/header.ftl b/docs/application-development-guide/src/main/jbake/templates/header.ftl
deleted file mode 100644
index 82ebb36..0000000
--- a/docs/application-development-guide/src/main/jbake/templates/header.ftl
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html>
-<#-- a header template fragment included in the page template -->
-<html lang="en">
-  <head>
-    <meta charset="utf-8"/>
-    <title><#if (content.title)??><#escape x as x?xml>${content.title}</#escape></#if></title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <link href="<#if (content.rootpath)??>${content.rootpath}<#else></#if>css/style.css" rel="stylesheet">
-    <script src="https://use.fontawesome.com/96c4d89611.js"></script>
-  </head>
-  <body>
-<table id="doc-title" cellspacing="0" cellpadding="0">
-  <tr>
-  <td align="left" valign="top">
-  <b>${content.title}</b><br />
-      <p class="beta">${config.status!}</p>
-  </td>
-  </tr>
-</table>
-<hr />
-
-<table width="90%" id="top-nav" cellspacing="0" cellpadding="0">
-	<colgroup>
-		<col width="12%"/>
-		<col width="12%"/>
-		<col width="*"/>
-	</colgroup>
-	<tr>
-	    <#if content.prev??>
-		<td align="left">
-		<a href="${content.prev}">
-			<span class="vector-font"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Previous</span>
-		</a>
-		</td>
-	    </#if>
-
-	    <#if content.next??>
-		<td align="left">
-		<a href="${content.next}">
-			<span class=" vector-font"><i class="fa fa-arrow-circle-right vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Next</span>
-		</a>
-		</td>
-	    </#if>
-
-		<td align="right">
-		<a href="toc.html">
-			<span class=" vector-font"><i class="fa fa-list vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Contents</span>
-		</a>
-		</td>
-	</tr>
-</table>
-
diff --git a/docs/application-development-guide/src/main/jbake/templates/menu.ftl b/docs/application-development-guide/src/main/jbake/templates/menu.ftl
deleted file mode 100644
index 888c03d..0000000
--- a/docs/application-development-guide/src/main/jbake/templates/menu.ftl
+++ /dev/null
@@ -1 +0,0 @@
-<#-- a menu bar template fragment included in the page template -->
\ No newline at end of file
diff --git a/docs/application-development-guide/src/main/jbake/templates/page.ftl b/docs/application-development-guide/src/main/jbake/templates/page.ftl
deleted file mode 100644
index eca51db..0000000
--- a/docs/application-development-guide/src/main/jbake/templates/page.ftl
+++ /dev/null
@@ -1,8 +0,0 @@
-<#-- a top level page layout template -->
-
-<#include "header.ftl">
-<#include "menu.ftl">
-
-${content.body}
-
-<#include "footer.ftl">
\ No newline at end of file
diff --git a/docs/deployment-planning-guide/README.md b/docs/deployment-planning-guide/README.md
deleted file mode 100644
index a3ec2b6..0000000
--- a/docs/deployment-planning-guide/README.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# A JBake project template
-
-## About JBake
-
-JBake is a static site generator, it's inspired from jekyll and written
-in java.  The basic idea is to have templates for the structure of the
-page, and the body generated from asciidoc content.
-
-## Pre requisites
-
-- Maven
-- JDK8+
-
-Deploying to Github will require password less authentication.
-
-This is done by exporting your SSH public key into your Github account.
-
-## Build the site locally
-
-The site is generated under target/staging.
-
-Open file:///PATH_TO_PROJECT_DIR/target/staging in a browser to view the site.
-
-```
-mvn generate-resources
-```
-
-Or you can invoke the JBake plugin directly.
-
-```
-mvn jbake:build
-```
-
-### Rebuild the site on changes
-
-```
-mvn jbake:watch
-```
-
-If you keep this command running, changes to the sources will be
-detected and the site will be rendered incrementally.
-
-This is convenient when writing content.
-
-### Serve the site locally
-
-```
-mvn jbake:serve
-```
-
-If a webserver is required (e.g. absolute path are used), this command
-will start a webserver (jetty) at http://localhost:8820.  It will also
-watch for changes and rebuild incrementally.
-
-## Deploy the site to Github Pages
-
-```
-mvn deploy
-```
-
-## Produce a zip file for download
-
-To produce a zip file containing the generated html files, use:
-
-```
-mvn package
-```
-
-When making a release on GitHub, this zip file should be added to the release.
-
-## Links
-
-- [JBake maven plugin documentation](https://github.com/Blazebit/jbake-maven-plugin)
-- [JBake documentation](http://jbake.org/docs/2.5.1)
-- [Freemarker documentation](http://freemarker.org/docs)
-- [AsciiDoc User Guide](http://asciidoc.org/userguide.html)
-- [Asciidoctor quick reference](http://asciidoctor.org/docs/asciidoc-syntax-quick-reference)
diff --git a/docs/deployment-planning-guide/pom.xml b/docs/deployment-planning-guide/pom.xml
index 3c09b11..375e4a6 100644
--- a/docs/deployment-planning-guide/pom.xml
+++ b/docs/deployment-planning-guide/pom.xml
@@ -22,11 +22,10 @@
     <parent>
         <groupId>org.glassfish.docs</groupId>
         <artifactId>parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../parent</relativePath>
     </parent>
-    <groupId>org.glassfish.docs</groupId>
     <artifactId>deployment-planning-guide</artifactId>
     <packaging>jar</packaging>
-    <name>Eclipse GlassFish Server Deployment Planning Guide, Release 5.1</name>
+    <name>Eclipse GlassFish Server Deployment Planning Guide, Release 7</name>
 </project>
diff --git a/docs/deployment-planning-guide/src/main/asciidoc/checklist.adoc b/docs/deployment-planning-guide/src/main/asciidoc/checklist.adoc
new file mode 100644
index 0000000..4f4b04f
--- /dev/null
+++ b/docs/deployment-planning-guide/src/main/asciidoc/checklist.adoc
@@ -0,0 +1,165 @@
+type=page
+status=published
+title=Checklist for Deployment
+prev=planning.html
+~~~~~~
+
+= Checklist for Deployment
+
+[[GSPLG00003]][[abfeq]]
+
+
+[[checklist-for-deployment]]
+== 3 Checklist for Deployment
+
+This appendix provides a checklist to get started on evaluation and
+production with the {productName}.
+
+[[sthref7]][[checklist]]
+
+=== Checklist
+
+[[sthref8]][[sthref9]]
+
+Table 3-1 Checklist
+
+[width="100%",cols="<23%,<77%",options="header",]
+|===
+|Component/Feature |Description
+|Application
+a|Determine the following requirements for the application to be deployed.
+
+* Required/acceptable response time.
+* Peak load characteristics.
+* Necessary persistence scope and frequency.
+* Session timeout in `web.xml`.
+* Failover and availability requirements.
+
+For more information see the link:performance-tuning-guide.html#GSPTG[
+{productName} Performance Tuning Guide].
+
+|Hardware
+a|
+* Have necessary amounts of hard disk space and memory installed.
+* Use the sizing exercise to identify the requirements for deployment.
+
+For more information see the link:release-notes.html#GSRLN[{productName} Release Notes]
+
+|Operating System
+a|
+* Ensure that the product is installed on a supported platform.
+* Ensure that the patch levels are up-to-date and accurate.
+
+For more information see the link:release-notes.html#GSRLN[{productName} Release Notes]
+
+|Network Infrastructure
+a|
+* Identify single points of failures and address them.
+* Make sure that the NICs and other network components are correctly configured.
+* Run `ttcp` benchmark test to determine if the throughput meets the requirements/expected result.
+* Setup `ssh` based your preference.
+
+For more information see the link:installation-guide.html#GSING[{productName} Installation Guide].
+
+|Back-ends and other external data sources
+|Check with the domain expert or vendor to ensure that these data sources
+are configured appropriately.
+
+|System Changes/Configuration
+a|
+* Make sure that changes to `/etc/system` and its equivalent on Linux
+  are completed before running any performance/stress tests.
+* Make sure the changes to the TCP/IP settings are complete.
+* By default, the system comes with lots of services pre-configured. Not
+  all of them are required to be running. Turn off services that are not
+  needed to conserve system resources.
+* On Solaris, use `Setoolkit` to determine the behavior of the system.
+  Resolve any flags that show up.
+
+For more information see the link:performance-tuning-guide.html#GSPTG[{productName} Performance Tuning Guide].
+
+|Installation
+a|
+* Ensure that these servers are not installed on NFS mounted volumes.
+* Check for enough disk space and RAM when installing {productName}.
+
+|{productName} Configuration
+a|
+* Logging: Enable access log rotation.
+* Choose the right logging level. WARNING is usually appropriate.
+* Configure Jakarta EE containers using the Administration Console.
+* Configure HTTP listeners using the Administration Console.
+* Configure ORB threadpool using the Administration Console.
+* If using Type2 drivers or calls involving native code, ensure that
+  mtmalloc.so is specified in the LD_LIBRARY_PATH.
+* Ensure that the appropriate persistence scope and frequency are used
+  and they are not overridden underneath in the individual Web/EJB modules.
+* Ensure that only critical methods in the SFSB are checkpointed.
+
+For more information on tuning, see the link:performance-tuning-guide.html#GSPTG[{productName} Performance Tuning Guide].
+
+For more information on configuration, see the link:administration-guide.html#GSADG[{productName} Administration Guide].
+
+|Load balancer Configuration
+a|
+* Make sure the Web Server is installed.
+* Make sure the load balancer plug-in into the Web Server is installed.
+* Make sure patch checks is disabled.
+* Lower the value of the `KeepAliveQuery` parameter. The lower the
+  value, the lower the latency is on lightly loaded systems. The higher
+  the value, the higher the throughput is on highly loaded systems.
+
+|Java Virtual Machine Configuration
+a|
+* Initially set the minimum and maximum heap sizes to be the same, and
+  at least one GB for each instance.
+* See http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html[
+  Java Hotspot VM Options]
+(`http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html`)
+  for more information.
+* When running multiple instances of {productName}, consider creating
+  a processor set and bind {productName} to it. This helps in cases
+  where the CMS collector is used to sweep the old generation.
+
+|Configuring time-outs in the load balancer
+a|
+* Response-time-out-in-seconds - How long the load balancer waits before
+  declaring a {productName} instance unhealthy. Set this value based on
+  the response time of the application. If set too high, the Web Server
+  and load balancer plug-in wait a long time before marking a {productName} instance as unhealthy. If set too low and {productName}'s
+  response time crosses this threshold, the instance will be incorrectly
+  marked as unhealthy.
+* Interval-in-seconds - Time in seconds after which unhealthy instances
+  are checked to find out if they have returned to a healthy state. Too
+  low a value generates extra traffic from the load balancer plug-in to
+  {productName} instances and too high a value delays the routing of
+  requests to the instance that has turned healthy.
+* Timeout-in-seconds - Duration for a response to be obtained for a
+  health check request. Adjust this value based on the traffic among the
+  systems in the cluster to ensure that the health check succeeds.
+
+|Configuring time-outs in {productName}
+a|
+* Max-wait-time-millis - Wait time to get a connection from the pool
+  before throwing an exception. Default is 6 s. Consider changing this
+  value for highly loaded systems where the size of the data being
+  persisted is greater than 50 KB.
+* Cache-idle-timeout-in-seconds - Time an EJB is allowed to be idle in
+  the cache before it gets passivated. Applies only to entity beans and
+  stateful session beans.
+* Removal-timeout-in-seconds - Time that an EJB remains passivated (idle
+  in the backup store). Default value is 60 minutes. Adjust this value
+  based on the need for SFSB failover.
+
+|Tune VM Garbage Collection (GC)
+a| Garbage collection pauses of four seconds or more can cause intermittent
+problems in persisting session state. To avoid this problem, tune the VM
+heap. In cases where even a single failure to persist data is
+unacceptable or when the system is not fully loaded, use the CMS
+collector or the throughput collector.
+
+These can be enabled by adding: +
+`<jvm-options>-XX:+UseConcMarkSweepGC</jvm-options>`
+
+This option may decrease throughput.
+|===
diff --git a/docs/deployment-planning-guide/src/main/asciidoc/concepts.adoc b/docs/deployment-planning-guide/src/main/asciidoc/concepts.adoc
new file mode 100644
index 0000000..57b9b66
--- /dev/null
+++ b/docs/deployment-planning-guide/src/main/asciidoc/concepts.adoc
@@ -0,0 +1,570 @@
+type=page
+status=published
+title=Product Concepts
+next=planning.html
+prev=preface.html
+~~~~~~
+
+= Product Concepts
+
+[[GSPLG00001]][[abfaq]]
+
+
+[[product-concepts]]
+== 1 Product Concepts
+
+{productName} provides a robust platform for the
+development, deployment, and management of Jakarta EE applications. Key
+features include scalable transaction management, web services
+performance, clustering, security, and integration capabilities.
+
+The following topics are addressed here:
+
+* link:#abfar[Jakarta EE Platform Overview]
+* link:#abfay[{productName} Components]
+* link:#abfca[Configuration Roadmap for High Availability of {productName}]
+
+[[abfar]][[GSPLG00016]][[java-ee-platform-overview]]
+
+=== Jakarta EE Platform Overview
+
+{productName} implements Java platform, Enterprise Edition (Jakarta EE)
+7 technology. The Jakarta EE platform is a set of standard specifications
+that describe application components, APIs, and the runtime containers
+and services of an application server.
+
+[[abfas]][[GSPLG00040]][[java-ee-applications]]
+
+==== Jakarta EE Applications
+
+Jakarta EE applications are made up of components such as JavaServer Pages
+(JSP), Java servlets, and Enterprise JavaBeans (EJB) modules. These
+components enable software developers to build large-scale, distributed
+applications. Developers package Jakarta EE applications in Java Archive
+(JAR) files (similar to zip files), which can be distributed to
+production sites. Administrators install Jakarta EE applications onto
+{productName} by deploying Jakarta EE JAR files onto one or more server
+instances (or clusters of instances).
+
+[[abfat]][[GSPLG00041]][[containers]]
+
+==== Containers
+
+Each server instance includes two containers: web and EJB. A container
+is a runtime environment that provides services such as security and
+transaction management to Jakarta EE components. Web components, such as
+Java Server Pages and servlets, run within the web container. Enterprise
+JavaBeans run within the EJB container.
+
+[[abfau]][[GSPLG00042]][[java-ee-services]]
+
+==== Jakarta EE Services
+
+The Jakarta EE platform provides services for applications, including:
+
+* Naming - A naming and directory service binds objects to names. A Java
+EE application can locate an object by looking up its Java Naming and
+Directory Interface (JNDI) name.
+* Security - The Java Authorization Contract for Containers (JACC) is a
+set of security contracts defined for the Jakarta EE containers. Based on
+the client's identity, containers can restrict access to the container's
+resources and services.
+* Transaction management - A transaction is an indivisible unit of work.
+For example, transferring funds between bank accounts is a transaction.
+A transaction management service ensures that a transaction is either
+completed, or is rolled back.
+* Message Service - Applications hosted on separate systems can
+communicate with each other by exchanging messages using the Java
+Message Service (JMS). JMS is an integral part of the Jakarta EE platform
+and simplifies the task of integrating heterogeneous enterprise
+applications.
+
+[[abfav]][[GSPLG00043]][[web-services]]
+
+==== Web Services
+
+Clients can access a Jakarta EE application as a remote web service in
+addition to accessing it through HTTP, RMI/IIOP, and JMS. Web services
+are implemented using the Java API for XML-based web services (JAX-WS).
+A Jakarta EE application can also act as a client to web services, which
+would be typical in network applications.
+
+Web Services Description Language (WSDL) is an XML format that describes
+web service interfaces. Web service consumers can dynamically parse a
+WSDL document to determine the operations a web service provides and how
+to execute them. {productName} distributes web services interface
+descriptions using a registry that other applications can access through
+the Java API for XML Registries (JAXR).
+
+[[abfaw]][[GSPLG00044]][[client-access]]
+
+==== Client Access
+
+Clients can access Jakarta EE applications in several ways. Browser clients
+access web applications using hypertext transfer protocol (HTTP). For
+secure communication, browsers use the HTTP secure (HTTPS) protocol that
+uses secure sockets layer (SSL).
+
+Rich client applications running in the Application Client Container can
+directly lookup and access Enterprise JavaBeans using an Object Request
+Broker (ORB), Remote Method Invocation (RMI) and the internet inter-ORB
+protocol (IIOP), or IIOP/SSL (secure IIOP). They can access applications
+and web services using HTTP/HTTPS, JMS, and JAX-WS. They can use JMS to
+send messages to and receive messages from applications and
+message-driven beans.
+
+Clients that conform to the Web Services-Interoperability (WS-I) Basic
+Profile can access Jakarta EE web services. WS-I is an integral part of the
+Jakarta EE standard and defines interoperable web services. It enables
+clients written in any supporting language to access web services
+deployed to {productName}.
+
+The best access mechanism depends on the specific application and the
+anticipated volume of traffic. {productName} supports separately
+configurable listeners for HTTP, HTTPS, JMS, IIOP, and IIOP/SSL. You can
+set up multiple listeners for each protocol for increased scalability
+and reliability.
+
+Jakarta EE applications can also act as clients of Jakarta EE components such
+as Enterprise JavaBeans modules deployed on other servers, and can use
+any of these access mechanisms.
+
+[[abfax]][[GSPLG00045]][[external-systems-and-resources]]
+
+==== External Systems and Resources
+
+On the Jakarta EE platform, an external system is called a resource. For
+example, a database management system is a JDBC resource. Each resource
+is uniquely identified and by its Java Naming and Directory Interface
+(JNDI) name. Applications access external systems through the following
+APIs and components:
+
+* Java Database Connectivity (JDBC) - A database management system
+(DBMS) provides facilities for storing, organizing, and retrieving data.
+Most business applications store data in relational databases, which
+applications access via JDBC. {productName} includes the Java DB
+database for use sample applications and application development and
+prototyping, though it is not suitable for deployment. {productName}
+provides certified JDBC drivers for connecting to major relational
+databases. These drivers are suitable for deployment.
+* Java Message Service - Messaging is a method of communication between
+software components or applications. A messaging client sends messages
+to, and receives messages from, any other client via a messaging
+provider that implements the Java Messaging Service (JMS) API. {productName} includes a high-performance JMS broker, Open Message Queue.
+* Jakarta EE Connectors - The Jakarta EE Connector architecture enables
+integrating Jakarta EE applications and existing Enterprise Information
+Systems (EIS). An application accesses an EIS through a portable Jakarta EE
+component called a connector or resource adapter, analogous to using
+JDBC driver to access an RDBMS. Resource adapters are distributed as
+standalone Resource Adapter Archive (RAR) modules or included in Jakarta EE
+application archives. As RARs, they are deployed like other Jakarta EE
+components. {productName} includes evaluation resource adapters that
+integrate with popular EIS.
+* JavaMail - Through the JavaMail API, applications can connect to a
+Simple Mail Transport Protocol (SMTP) server to send email and to an
+IMAP or POP3 server to receive email.
+
+[[abfay]][[GSPLG00017]][[glassfish-server-components]]
+
+=== {productName} Components
+
+This section describes the components in {productName}.
+
+The following topics are addressed here:
+
+* link:#abfaz[Server Instances]
+* link:#abfba[Administrative Domains]
+* link:#abfbc[Clusters]
+* link:#abfbe[Named Configurations]
+* link:#abfbf[HTTP Load Balancer Plug-in]
+* link:#abfbh[IIOP Load Balancing in a Cluster]
+* link:#abfbi[Message Queue and JMS Resources]
+
+The administration tools, such as the browser-based Administration
+Console, communicate with the domain administration server (DAS), which
+in turn communicates with the server instances.
+
+[[abfaz]][[GSPLG00046]][[server-instances]]
+
+==== Server Instances
+
+A server instance is a {productName} running in a single
+Java Virtual Machine (JVM) process.
+{productName} is certified with Java platform, Standard Edition (Java SE) 11.
+
+It is usually sufficient to create a single server instance on a
+machine, since {productName} and accompanying JVM are both designed
+to scale to multiple processors. However, it can be beneficial to create
+multiple instances on one machine for application isolation and rolling
+upgrades. In some cases, a large server with multiple instances can be
+used in more than one administrative domain. The administration tools
+makes it easy to create, delete, and manage server instances across
+multiple machines.
+
+[[abfba]][[GSPLG00047]][[administrative-domains]]
+
+==== Administrative Domains
+
+An administrative domain (or simply domain) is a group of server
+instances that are administered together. A server instance belongs to a
+single administrative domain. The instances in a domain can run on
+different physical hosts.
+
+You can create multiple domains from one installation of {productName}. By grouping server instances into domains, different
+organizations and administrators can share a single {productName}
+installation. Each domain has its own configuration, log files, and
+application deployment areas that are independent of other domains.
+Changing the configuration of one domain does not affect the
+configurations of other domains. Likewise, deploying an application on
+one domain does not deploy it or make it visible to any other domain.
+
+
+[NOTE]
+====
+All hosts in a domain on which the DAS and {productName} instances
+are running must have the same operating system.
+====
+
+
+[[abfbb]][[GSPLG00024]][[domain-administration-server-das]]
+
+===== Domain Administration Server (DAS)
+
+A domain has one Domain Administration Server (DAS), a specially
+designated {productName} instance that hosts the administrative
+applications. The DAS authenticates the administrator, accepts requests
+from administration tools, and communicates with server instances in the
+domain to carry out the requests.
+
+The administration tools are the `asadmin` command-line tool and the
+browser-based Administration Console. {productName} also provides a
+RESTful API for server administration. The administrator can view and
+manage a single domain at a time, thus enforcing secure separation.
+
+The DAS is also sometimes referred to as the admin server or default
+server. It is referred to as the default server because it is the
+default target for some administrative operations.
+
+Since the DAS is a {productName} instance, it can also host Jakarta EE
+applications for testing purposes. However, do not use it to host
+production applications. You might want to deploy applications to the
+DAS, for example, if the clusters and instances that will host the
+production application have not yet been created.
+
+The DAS keeps a repository containing the configuration of its domain
+and all the deployed applications. If the DAS is inactive or down, there
+is no impact on the performance or availability of active server
+instances, however administrative changes cannot be made. In certain
+cases, for security purposes, it may be useful to intentionally stop the
+DAS process, for example to reboot the host operating system to install
+a kernel patch or a hardware upgrade.
+
+Administrative commands are provided to backup and restore the domain
+configuration and applications. With the standard backup and restore
+procedures, you can quickly restore working configurations. If the DAS
+host fails, you must create a new DAS installation to restore the
+previous domain configuration. For instructions, see
+"link:administration-guide/domains.html#GSADG00006[Administering Domains]" in {productName} Administration Guide.
+
+[[abfbc]][[GSPLG00048]][[clusters]]
+
+==== Clusters
+
+A cluster is a named collection of server instances that share the same
+applications, resources, and configuration information. You can group
+server instances on different machines into one logical cluster and
+administer them as one unit. You can easily control the lifecycle of a
+multi-machine cluster with the DAS.
+
+Clusters enable horizontal scalability, load balancing, and failover
+protection. By definition, all the instances in a cluster have the same
+resource and application configuration. When a server instance or a
+machine in a cluster fails, the load balancer detects the failure,
+redirects traffic from the failed instance to other instances in the
+cluster, and recovers the user session state. Since the same
+applications and resources are on all instances in the cluster, an
+instance can failover to any other instance in the cluster.
+
+
+[NOTE]
+====
+All hosts in a cluster on which the DAS and {productName} instances
+are running must have the same operating system.
+====
+
+
+Clusters, domains, and instances are related as follows:
+
+* An administrative domain can have zero or more clusters.
+* A cluster has one or more server instances.
+* A cluster belongs to a single domain.
+
+[[abfbe]][[GSPLG00049]][[named-configurations]]
+
+==== Named Configurations
+
+A named configuration is an abstraction that encapsulates {productName} property settings. Clusters and stand-alone server instances
+reference a named configuration to get their property settings. With
+named configurations, Jakarta EE containers' configurations are independent
+of the physical machine on which they reside, except for particulars
+such as IP address, port number, and amount of heap memory. Using named
+configurations provides power and flexibility to {productName}
+administration.
+
+To apply configuration changes, you simply change the property settings
+of the named configuration, and all the clusters and stand-alone
+instances that reference it pick up the changes. You can only delete a
+named configuration when all references to it have been removed. A
+domain can contain multiple named configurations.
+
+{productName} comes with a default configuration, called
+default-config. The default configuration is optimized for developer
+productivity.
+
+You can create your own named configuration based on the default
+configuration that you can customize for your own purposes. Use the
+Administration Console and `asadmin` command line utility to create and
+manage named configurations.
+
+[[abfbf]][[GSPLG00050]][[http-load-balancer-plug-in]]
+
+==== HTTP Load Balancer Plug-in
+
+The load balancer distributes the workload among multiple physical
+machines, thereby increasing the overall throughput of the system. The
+{productName} includes the load balancer plug-ins for Oracle iPlanet
+Web Server, Oracle HTTP Server, Apache Web Server, and Microsoft
+Internet Information Server.
+
+The load balancer plug-in accepts HTTP and HTTPS requests and forwards
+them to one of the {productName} instances in the cluster. Should an
+instance fail, become unavailable (due to network faults), or become
+unresponsive, requests are redirected to existing, available machines.
+The load balancer can also recognize when a failed instance has
+recovered and redistribute the load accordingly.
+
+For simple stateless applications, a load-balanced cluster may be
+sufficient. However, for mission-critical applications with session
+state, use load balanced clusters with replicated session persistence.
+
+To setup a system with load balancing, in addition to {productName},
+you must install a web server and the load-balancer plug-in. Then you
+must:
+
+* Create {productName} clusters that you want to participate in load
+balancing.
+* Deploy applications to these load-balanced clusters.
+
+Server instances and clusters participating in load balancing have a
+homogenous environment. Usually that means that the server instances
+reference the same server configuration, can access the same physical
+resources, and have the same applications deployed to them. Homogeneity
+enables configuration consistency, and improves the ability to support a
+production deployment.
+
+Use the `asadmin` command-line tool to create a load balancer
+configuration, add references to clusters and server instances to it,
+enable the clusters for reference by the load balancer, enable
+applications for load balancing, optionally create a health checker,
+generate the load balancer configuration file, and finally copy the load
+balancer configuration file to your web server `config` directory. An
+administrator can create a script to automate this entire process.
+
+For more details and complete configuration instructions, see
+"link:ha-administration-guide/http-load-balancing.html#GSHAG00009[Configuring HTTP Load Balancing]" in {productName} High Availability Administration Guide.
+
+[[abfbg]][[GSPLG00051]][[session-persistence]]
+
+==== Session Persistence
+
+Jakarta EE applications typically have significant amounts of session state
+data. A web shopping cart is the classic example of a session state.
+Also, an application can cache frequently-needed data in the session
+object. In fact, almost all applications with significant user
+interactions need to maintain a session state. Both HTTP sessions and
+stateful session beans (SFSBs) have session state data.
+
+While the session state is not as important as the transactional state
+stored in a database, preserving the session state across server
+failures can be important to end users. {productName} provides the
+capability to save, or persist, this session state in a repository. If
+the {productName} instance that is hosting the user session
+experiences a failure, the session state can be recovered. The session
+can continue without loss of information.
+
+{productName} supports the following session persistence types:
+
+* Memory
+* Replicated
+* File
+* Coherence
+* Web
+
+With memory persistence, the state is always kept in memory and does not
+survive failure. With replicated persistence, {productName} uses
+other server instances in the cluster as the persistence store for both
+HTTP and SFSB sessions. With file persistence, {productName}
+serializes session objects and stores them to the file system location
+specified by session manager properties. For SFSBs, if replicated
+persistence is not specified, {productName} stores state information
+in the session-store subdirectory of this location. For more information
+about Coherence*Web, see
+http://download.oracle.com/docs/cd/E18686_01/coh.37/e18690/glassfish.html[Using
+Coherence*Web with {productName}]
+(`http://docs.oracle.com/cd/E18686_01/coh.37/e18690/glassfish.html`).
+
+Checking an SFSB's state for changes that need to be saved is called
+checkpointing. When enabled, checkpointing generally occurs after any
+transaction involving the SFSB is completed, even if the transaction
+rolls back. For more information on developing stateful session beans,
+see "link:application-development-guide/ejb.html#GSDVG00147[Using Session Beans]" in {productName} Application Development Guide. For more information on
+enabling SFSB failover, see "link:ha-administration-guide/session-persistence-and-failover.html#GSHAG00211[Stateful Session Bean
+Failover]" in {productName} High Availability
+Administration Guide.
+
+Apart from the number of requests being served by {productName}, the
+session persistence configuration settings also affect the session
+information in each request.
+
+For more information on configuring session persistence, see
+"link:ha-administration-guide/session-persistence-and-failover.html#GSHAG00011[Configuring High Availability Session Persistence and
+Failover]" in {productName} High Availability
+Administration Guide.
+
+[[abfbh]][[GSPLG00052]][[iiop-load-balancing-in-a-cluster]]
+
+==== IIOP Load Balancing in a Cluster
+
+With IIOP load balancing, IIOP client requests are distributed to
+different server instances or name servers. The goal is to spread the
+load evenly across the cluster, thus providing scalability. IIOP load
+balancing combined with EJB clustering and availability features in
+{productName} provides not only load balancing but also EJB failover.
+
+There are two steps to IIOP failover and load balancing. The first step,
+bootstrapping, is the process by which the client sets up the initial
+naming context with one ORB in the cluster. The client attempts to
+connect to one of the IIOP endpoints. When launching an application
+client using the `appclient` script, you specify these endpoints using
+the `-targetserver` option on the command line or `target-server`
+elements in the `sun-acc.xml` configuration file. The client randomly
+chooses one of these endpoints and tries to connect to it, trying other
+endpoints if needed until one works.
+
+The second step concerns sending messages to a specific EJB. By default,
+all naming look-ups, and therefore all EJB accesses, use the cluster
+instance chosen during bootstrapping. The client exchanges messages with
+an EJB through the client ORB and server ORB. As this happens, the
+server ORB updates the client ORB as servers enter and leave the
+cluster. Later, if the client loses its connection to the server from
+the previous step, the client fails over to some other server using its
+list of currently active members. In particular, this cluster member
+might have joined the cluster after the client made the initial
+connection.
+
+When a client performs a JNDI lookup for an object, the Naming Service
+creates an `InitialContext` (IC) object associated with a particular
+server instance. From then on, all lookup requests made using that IC
+object are sent to the same server instance. All `EJBHome` objects
+looked up with that `InitialContext` are hosted on the same target
+server. Any bean references obtained henceforth are also created on the
+same target host. This effectively provides load balancing, since all
+clients randomize the list of live target servers when creating
+`InitialContext` objects. If the target server instance goes down, the
+lookup or EJB method invocation will failover to another server
+instance.
+
+Adding or deleting new instances to the cluster does not update the
+existing client's view of the cluster. You must manually update the
+endpoints list on the client side.
+
+[[abfbi]][[GSPLG00053]][[message-queue-and-jms-resources]]
+
+==== Message Queue and JMS Resources
+
+The Open Message Queue (Message Queue) provides reliable, asynchronous
+messaging for distributed applications. Message Queue is an enterprise
+messaging system that implements the Java Message Service (JMS)
+standard. Message Queue provides messaging for Jakarta EE application
+components such as message-driven beans (MDBs).
+
+{productName} implements the Java Message Service (JMS) API by
+integrating Message Queue into {productName}. {productName}
+includes the Enterprise version of Message Queue which has failover,
+clustering and load balancing features.
+
+For basic JMS administration tasks, use the {productName}
+Administration Console and `asadmin` command-line utility.
+
+For advanced tasks, including administering a Message Queue cluster, use
+the tools provided in the as-install``/mq/bin`` directory. For details
+about administering Message Queue, see the link:../openmq/mq-admin-guide.html#GMADG[Open Message
+Queue Administration Guide].
+
+For information on deploying JMS applications and Message Queue
+clustering for message failover, see link:planning.html#abfdn[Planning
+Message Queue Broker Deployment].
+
+[[abfca]][[GSPLG00018]][[configuration-roadmap-for-high-availability-of-glassfish-server]]
+
+=== Configuration Roadmap for High Availability of {productName}
+
+The following procedure lists the major tasks for configuring {productName} for high availability. The procedure also provides
+cross-references to detailed instructions for performing each task.
+
+[[sthref6]][[to-configure-glassfish-server-for-high-availability]]
+
+==== To Configure {productName} for High Availability
+
+1. Determine your requirements and goals for performance and QoS. +
+For more information, see the following documentation:
+* link:planning.html#abfcc[Establishing Performance Goals]
+* link:planning.html#abfcp[Planning the Network Configuration]
+* link:planning.html#abfcy[Planning for Availability]
+
+2. Size your system. +
+For more information, see link:planning.html#abfdg[Design Decisions].
+
+3. Install {productName} and related subcomponents such as a web server. +
+For more information, see the following documentation:
+* link:installation-guide.html#GSING[{productName} Installation Guide]
+* Installation guides for related subcomponents, for example, Oracle
+iPlanet Web Server 7.0.9 Installation and Migration Guide
+(`http://docs.oracle.com/cd/E19146-01/821-1832/index.html`)
+
+4. If you plan to administer your clusters centrally, set up secure
+shell (SSH) for centralized administration. +
+For more information, see "link:ha-administration-guide/ssh-setup.html#GSHAG00003[
+Setting Up SSH for Centralized Administration]" in {productName}
+High Availability Administration Guide.
+
+5. Configure domains, nodes, clusters, {productName} instances, and
+virtual servers as required. +
+For more information, see the following documentation:
+* "link:administration-guide/domains.html#GSADG00006[Administering Domains]" in {productName} Administration Guide
+* "link:ha-administration-guide/nodes.html#GSHAG00004[Administering {productName} Nodes]" in {productName} High Availability Administration Guide
+* "link:ha-administration-guide/clusters.html#GSHAG00005[Administering {productName} Clusters]" in
+{productName} High Availability Administration Guide
+* "link:ha-administration-guide/instances.html#GSHAG00006[Administering {productName} Instances]" in
+{productName} High Availability Administration Guide
+* "link:administration-guide/http_https.html#GSADG00589[Administering Virtual Servers]" in {productName} Administration Guide
+
+6. Configure your load balancer. +
+For more information, see "link:administration-guide/webapps.html#GSADG00552[Administering mod_jk]" in
+{productName} Administration Guide.
+
+7. Configure the web container and EJB container for replicated session persistence. +
+For more information, see "link:ha-administration-guide/session-persistence-and-failover.html#GSHAG00011[Configuring High
+Availability Session Persistence and Failover]" in {productName} High Availability Administration Guide.
+
+8. If you are using messaging extensively, configure Java Message
+Service (JMS) clusters for failover . +
+For more information, see the following documentation:
+* link:planning.html#abfdn[Planning Message Queue Broker Deployment]
+* "link:ha-administration-guide/jms.html#GSHAG00012[Configuring Java Message Service High Availability]"
+in {productName} High Availability Administration
+Guide
+* link:../openmq/mq-admin-guide.html#GMADG[Open Message Queue Administration Guide]
+
+9. Deploy applications and configure them for high availability and session failover. +
+For more information, see the link:application-deployment-guide.html#GSDPG[{productName} Application Deployment Guide].
diff --git a/docs/deployment-planning-guide/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png b/docs/deployment-planning-guide/src/main/asciidoc/img/eclipse_foundation_logo_tiny.png
similarity index 100%
rename from docs/deployment-planning-guide/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png
rename to docs/deployment-planning-guide/src/main/asciidoc/img/eclipse_foundation_logo_tiny.png
Binary files differ
diff --git a/docs/deployment-planning-guide/src/main/asciidoc/loe.adoc b/docs/deployment-planning-guide/src/main/asciidoc/loe.adoc
new file mode 100644
index 0000000..b66d3ce
--- /dev/null
+++ b/docs/deployment-planning-guide/src/main/asciidoc/loe.adoc
@@ -0,0 +1,16 @@
+type=page
+status=published
+title=List of Examples
+next=lot.html
+prev=toc.html
+~~~~~~
+
+= List of Examples
+
+[[list-of-examples]]
+== List of Examples
+
+* link:planning.html#fygam[2-1 Calculation of Response Time]
+* link:planning.html#fygaj[2-2 Calculation of Requests Per Second]
+* link:planning.html#fygad[2-3 Calculation of Bandwidth Required]
+* link:planning.html#fygai[2-4 Calculation of Peak Load]
diff --git a/docs/deployment-planning-guide/src/main/asciidoc/lot.adoc b/docs/deployment-planning-guide/src/main/asciidoc/lot.adoc
new file mode 100644
index 0000000..daf8bff
--- /dev/null
+++ b/docs/deployment-planning-guide/src/main/asciidoc/lot.adoc
@@ -0,0 +1,13 @@
+type=page
+status=published
+title=List of Tables
+next=title.html
+prev=loe.html
+~~~~~~
+
+= List of Tables
+
+[[list-of-tables]]
+== List of Tables
+
+* link:checklist.html#sthref9[3-1 Checklist]
diff --git a/docs/deployment-planning-guide/src/main/asciidoc/planning.adoc b/docs/deployment-planning-guide/src/main/asciidoc/planning.adoc
new file mode 100644
index 0000000..bf7a07b
--- /dev/null
+++ b/docs/deployment-planning-guide/src/main/asciidoc/planning.adoc
@@ -0,0 +1,897 @@
+type=page
+status=published
+title=Planning your Deployment
+next=checklist.html
+prev=concepts.html
+~~~~~~
+
+= Planning your Deployment
+
+[[GSPLG00002]][[abfcb]]
+
+
+[[planning-your-deployment]]
+== 2 Planning your Deployment
+
+Before deploying {productName}, first determine the performance and
+availability goals, and then make decisions about the hardware, network,
+and storage requirements accordingly.
+
+The following topics are addressed here:
+
+* link:#abfcc[Establishing Performance Goals]
+* link:#abfcp[Planning the Network Configuration]
+* link:#abfcy[Planning for Availability]
+* link:#abfdg[Design Decisions]
+* link:#abfdn[Planning Message Queue Broker Deployment]
+
+[[abfcc]][[GSPLG00019]][[establishing-performance-goals]]
+
+=== Establishing Performance Goals
+
+At its simplest, high performance means maximizing throughput and
+reducing response time. Beyond these basic goals, you can establish
+specific goals by determining the following:
+
+* What types of applications and services are deployed, and how do
+clients access them?
+* Which applications and services need to be highly available?
+* Do the applications have session state or are they stateless?
+* What request capacity or throughput must the system support?
+* How many concurrent users must the system support?
+* What is an acceptable average response time for user requests?
+* What is the average think time between requests?
+
+You can calculate some of these metrics using a remote browser emulator
+(RBE) tool, or web site performance and benchmarking software that
+simulates expected application activity. Typically, RBE and benchmarking
+products generate concurrent HTTP requests and then report the response
+time for a given number of requests per minute. You can then use these
+figures to calculate server activity.
+
+The results of the calculations described in this chapter are not
+absolute. Treat them as reference points to work against, as you
+fine-tune the performance of {productName} and your applications.
+
+The following topics are addressed here:
+
+* link:#abfcd[Estimating Throughput]
+* link:#abfce[Estimating Load on {productName} Instances]
+* link:#abfcq[Estimating Bandwidth Requirements]
+* link:#abfct[Estimating Peak Load]
+
+[[abfcd]][[GSPLG00054]][[estimating-throughput]]
+
+==== Estimating Throughput
+
+In broad terms, throughput measures the amount of work performed by
+{productName}. For {productName}, throughput can be defined as the
+number of requests processed per minute per server instance.
+
+As described in the next section, {productName} throughput is a
+function of many factors, including the nature and size of user
+requests, number of users, and performance of {productName} instances
+and back-end databases. You can estimate throughput on a single machine
+by benchmarking with simulated workloads.
+
+High availability applications incur additional overhead because they
+periodically save session data. The amount of overhead depends on the
+amount of data, how frequently it changes, and how often it is saved.
+The first two factors depend on the application in question; the latter
+is also affected by server settings.
+
+[[abfce]][[GSPLG00055]][[estimating-load-on-glassfish-server-instances]]
+
+==== Estimating Load on {productName} Instances
+
+Consider the following factors to estimate the load on {productName}
+instances.
+
+The following topics are addressed here:
+
+* link:#abfcf[Maximum Number of Concurrent Users]
+* link:#abfcg[Think Time]
+* link:#abfch[Average Response Time]
+* link:#abfcj[Requests Per Minute]
+
+[[abfcf]][[GSPLG00025]][[maximum-number-of-concurrent-users]]
+
+===== Maximum Number of Concurrent Users
+
+Users interact with an application through a client, such as a web
+browser or Java program. Based on the user's actions, the client
+periodically sends requests to the {productName}. A user is
+considered active as long as the user's session has neither expired nor
+been terminated. When estimating the number of concurrent users, include
+all active users.
+
+Initially, as the number of users increases, throughput increases
+correspondingly. However, as the number of concurrent requests
+increases, server performance begins to saturate, and throughput begins
+to decline.
+
+Identify the point at which adding concurrent users reduces the number
+of requests that can be processed per minute. This point indicates when
+optimal performance is reached and beyond which throughput start to
+degrade. Generally, strive to operate the system at optimal throughput
+as much as possible. You might need to add processing power to handle
+additional load and increase throughput.
+
+[[abfcg]][[GSPLG00026]][[think-time]]
+
+===== Think Time
+
+A user does not submit requests continuously. A user submits a request,
+the server receives and processes the request, and then returns a
+result, at which point the user spends some time before submitting a new
+request. The time between one request and the next is called think time.
+
+Think times are dependent on the type of users. For example,
+machine-to-machine interaction such as for a web service typically has a
+lower think time than that of a human user. You may have to consider a
+mix of machine and human interactions to estimate think time.
+
+Determining the average think time is important. You can use this
+duration to calculate the number of requests that need to be completed
+per minute, as well as the number of concurrent users the system can
+support.
+
+[[abfch]][[GSPLG00027]][[average-response-time]]
+
+===== Average Response Time
+
+Response time refers to the amount of time {productName} takes to
+return the results of a request to the user. The response time is
+affected by factors such as network bandwidth, number of users, number
+and type of requests submitted, and average think time.
+
+In this section, response time refers to the mean, or average, response
+time. Each type of request has its own minimal response time. However,
+when evaluating system performance, base the analysis on the average
+response time of all requests.
+
+The faster the response time, the more requests per minute are being
+processed. However, as the number of users on the system increases, the
+response time starts to increase as well, even though the number of
+requests per minute declines.
+
+A system performance graph indicates that after a certain point,
+requests per minute are inversely proportional to response time. The
+sharper the decline in requests per minute, the steeper the increase in
+response time.
+
+The point of the peak load is the point at which requests per minute
+start to decline. Prior to this point, response time calculations are
+not necessarily accurate because they do not use peak numbers in the
+formula. After this point, (because of the inversely proportional
+relationship between requests per minute and response time), the
+administrator can more accurately calculate response time using maximum
+number of users and requests per minute.
+
+Use the following formula to determine T~response~, the response time
+(in seconds) at peak load:
+
+T~response~ = n/r - T~think~
+
+where
+
+* n is the number of concurrent users
+* r is the number requests per second the server receives
+* T~think~ is the average think time (in seconds)
++
+To obtain an accurate response time result, always include think time in
+the equation.
+
+[[GSPLG00007]][[fygam]]
+Example 2-1 Calculation of Response Time
+
+If the following conditions exist:
+
+* Maximum number of concurrent users, n, that the system can support at
+peak load is 5,000.
+* Maximum number of requests, r, the system can process at peak load is
+1,000 per second.
+
+Average think time, T~think~, is three seconds per request.
+
+Thus, the calculation of response time is:
+
+T~response~ = n/r - T~think~ = (5000/ 1000) - 3 sec. = 5 - 3 sec.
+
+Therefore, the response time is two seconds.
+
+After the system's response time has been calculated, particularly at
+peak load, compare it to the acceptable response time for the
+application. Response time, along with throughput, is one of the main
+factors critical to {productName} performance.
+
+[[abfcj]][[GSPLG00028]][[requests-per-minute]]
+
+===== Requests Per Minute
+
+If you know the number of concurrent users at any given time, the
+response time of their requests, and the average user think time, then
+you can calculate the number of requests per minute. Typically, start by
+estimating the number of concurrent users that are on the system.
+
+For example, after running web site performance software, the
+administrator concludes that the average number of concurrent users
+submitting requests on an online banking web site is 3,000. This number
+depends on the number of users who have signed up to be members of the
+online bank, their banking transaction behavior, the time of the day or
+week they choose to submit requests, and so on.
+
+Therefore, knowing this information enables you to use the requests per
+minute formula described in this section to calculate how many requests
+per minute your system can handle for this user base. Since requests per
+minute and response time become inversely proportional at peak load,
+decide if fewer requests per minute is acceptable as a trade-off for
+better response time, or alternatively, if a slower response time is
+acceptable as a trade-off for more requests per minute.
+
+Experiment with the requests per minute and response time thresholds
+that are acceptable as a starting point for fine-tuning system
+performance. Thereafter, decide which areas of the system require
+adjustment.
+
+Solving for r in the equation in the previous section gives:
+
+r = n/(T~response~ + T~think~)
+
+[[GSPLG00008]][[fygaj]]
+Example 2-2 Calculation of Requests Per Second
+
+For the values:
+
+* n = 2,800 concurrent users
+* T~response~ = 1 (one second per request average response time)
+* T~think~ = 3, (three seconds average think time)
+
+The calculation for the number of requests per second is:
+
+[source]
+----
+r = 2800 / (1+3) = 700
+----
+
+Therefore, the number of requests per second is 700 and the number of
+requests per minute is 42000.
+
+[[abfcp]][[GSPLG00020]][[planning-the-network-configuration]]
+
+=== Planning the Network Configuration
+
+When planning how to integrate the {productName} into the network,
+estimate the bandwidth requirements and plan the network in such a way
+that it can meet users' performance requirements.
+
+The following topics are addressed here:
+
+* link:#gkvdm[Setting Up Traffic Separation]
+* link:#abfcq[Estimating Bandwidth Requirements]
+* link:#abfcr[Calculating Bandwidth Required]
+* link:#abfct[Estimating Peak Load]
+* link:#abfcw[Choosing Network Cards]
+* link:#abfdc[Identifying Failure Classes]
+
+[[gkvdm]][[GSPLG00056]][[setting-up-traffic-separation]]
+
+==== Setting Up Traffic Separation
+
+You can separate external traffic, such as client requests, from the
+internal traffic, such as session state failover, database transactions,
+and messaging. Traffic separation enables you to plan a network better
+and augment certain parts of the network, as required.
+
+To separate the traffic, run each server instance on a multi-homed
+machine. A multi-homed machine has two IP addresses belonging to
+different networks, an external IP and an internal IP. The objective is
+to expose only the external IP to user requests. The internal IP is used
+only by the cluster instances for internal communication. For details,
+see "link:ha-administration-guide/clusters.html#GSHAG00266[Using the Multi-Homing Feature With GMS]" in
+{productName} High Availability Administration
+Guide.
+
+To plan for traffic on both networks, see link:#abfcq[Estimating
+Bandwidth Requirements]. For external networks, follow the guidelines in
+link:#abfcr[Calculating Bandwidth Required] and link:#abfct[Estimating
+Peak Load]. To size the interfaces for internal networks, see
+link:#abfcw[Choosing Network Cards].
+
+[[abfcq]][[GSPLG00057]][[estimating-bandwidth-requirements]]
+
+==== Estimating Bandwidth Requirements
+
+To decide on the desired size and bandwidth of the network, first
+determine the network traffic and identify its peak. Check if there is a
+particular hour, day of the week, or day of the month when overall
+volume peaks, and then determine the duration of that peak.
+
+During peak load times, the number of packets in the network is at its
+highest level. In general, if you design for peak load, scale your
+system with the goal of handling 100 percent of peak volume. Bear in
+mind, however, that any network behaves unpredictably and that despite
+your scaling efforts, it might not always be able handle 100 percent of
+peak volume.
+
+For example, assume that at peak load, five percent of users
+occasionally do not have immediate network access when accessing
+applications deployed on {productName}. Of that five percent,
+estimate how many users retry access after the first attempt. Again, not
+all of those users might get through, and of that unsuccessful portion,
+another percentage will retry. As a result, the peak appears longer
+because peak use is spread out over time as users continue to attempt
+access.
+
+[[abfcr]][[GSPLG00058]][[calculating-bandwidth-required]]
+
+==== Calculating Bandwidth Required
+
+Based on the calculations made in link:#abfcc[Establishing Performance
+Goals], determine the additional bandwidth required for deploying
+{productName} at your site.
+
+Depending on the method of access (T-1 lines, ADSL, cable modem, and so
+on), calculate the amount of increased bandwidth required to handle your
+estimated load. For example, suppose your site uses T-1 or higher-speed
+T-3 lines. Given their bandwidth, estimate how many lines are needed on
+the network, based on the average number of requests generated per
+second at your site and the maximum peak load. Calculate these figures
+using a web site analysis and monitoring tool.
+
+[[GSPLG00009]][[fygad]]
+Example 2-3 Calculation of Bandwidth Required
+
+A single T-1 line can handle 1.544 Mbps. Therefore, a network of four
+T-1 lines can handle approximately 6 Mbps of data. Assuming that the
+average HTML page sent back to a client is 30 kilobytes (KB), this
+network of four T-1 lines can handle the following traffic per second:
+
+6,176,000 bits/10 bits = 772,000 bytes per second
+
+772,000 bytes per second/30 KB = approximately 25 concurrent response
+pages per second.
+
+With traffic of 25 pages per second, this system can handle 90,000 pages
+per hour (25 x 60 seconds x 60 minutes), and therefore 2,160,000 pages
+per day maximum, assuming an even load throughout the day. If the
+maximum peak load is greater than this, increase the bandwidth
+accordingly.
+
+[[abfct]][[GSPLG00059]][[estimating-peak-load]]
+
+==== Estimating Peak Load
+
+Having an even load throughout the day is probably not realistic. You
+need to determine when the peak load occurs, how long it lasts, and what
+percentage of the total load is the peak load.
+
+[[GSPLG00010]][[fygai]]
+Example 2-4 Calculation of Peak Load
+
+If the peak load lasts for two hours and takes up 30 percent of the
+total load of 2,160,000 pages, this implies that 648,000 pages must be
+carried over the T-1 lines during two hours of the day.
+
+Therefore, to accommodate peak load during those two hours, increase the
+number of T-1 lines according to the following calculations:
+
+648,000 pages/120 minutes = 5,400 pages per minute
+
+5,400 pages per minute/60 seconds = 90 pages per second
+
+If four lines can handle 25 pages per second, then approximately four
+times that many pages requires four times that many lines, in this case
+16 lines. The 16 lines are meant for handling the realistic maximum of a
+30 percent peak load. Obviously, the other 70 percent of the load can be
+handled throughout the rest of the day by these many lines.
+
+[[abfcw]][[GSPLG00060]][[choosing-network-cards]]
+
+==== Choosing Network Cards
+
+For greater bandwidth and optimal network performance, use at least 100
+Mbps Ethernet cards or, preferably, 1 Gbps Ethernet cards between
+servers hosting {productName}.
+
+[[abfcy]][[GSPLG00021]][[planning-for-availability]]
+
+=== Planning for Availability
+
+The following topics are addressed here:
+
+* link:#abfcz[Rightsizing Availability]
+* link:#abfda[Using Clusters to Improve Availability]
+* link:#abfdb[Adding Redundancy to the System]
+
+[[abfcz]][[GSPLG00061]][[rightsizing-availability]]
+
+==== Rightsizing Availability
+
+To plan availability of systems and applications, assess the
+availability needs of the user groups that access different
+applications. For example, external fee-paying users and business
+partners often have higher quality of service (QoS) expectations than
+internal users. Thus, it may be more acceptable to internal users for an
+application feature, application, or server to be unavailable than it
+would be for paying external customers.
+
+There is an increasing cost and complexity to mitigating against
+decreasingly probable events. At one end of the continuum, a simple
+load-balanced cluster can tolerate localized application, middleware,
+and hardware failures. At the other end of the scale, geographically
+distinct clusters can mitigate against major catastrophes affecting the
+entire data center.
+
+To realize a good return on investment, it often makes sense to identify
+availability requirements of features within an application. For
+example, it may not be acceptable for an insurance quotation system to
+be unavailable (potentially turning away new business), but brief
+unavailability of the account management function (where existing
+customers can view their current coverage) is unlikely to turn away
+existing customers.
+
+[[abfda]][[GSPLG00062]][[using-clusters-to-improve-availability]]
+
+==== Using Clusters to Improve Availability
+
+At the most basic level, a cluster is a group of {productName}
+instances—often hosted on multiple physical servers—that appear to
+clients as a single instance. This provides horizontal scalability as
+well as higher availability than a single instance on a single machine.
+This basic level of clustering works in conjunction with the HTTP load
+balancer plug-in, which accepts HTTP and HTTPS requests and forwards
+them to one of the instances in the cluster. The ORB and integrated JMS
+brokers also perform load balancing to {productName} clusters. If an
+instance fails, becomes unavailable (due to network faults), or becomes
+unresponsive, requests are redirected only to existing, available
+machines. The load balancer can also recognize when a failed instance
+has recovered and redistribute load accordingly.
+
+[[abfdb]][[GSPLG00063]][[adding-redundancy-to-the-system]]
+
+==== Adding Redundancy to the System
+
+One way to achieve high availability is to add hardware and software
+redundancy to the system. When one unit fails, the redundant unit takes
+over. This is also referred to as fault tolerance. In general, to
+maximize high availability, determine and remove every possible point of
+failure in the system.
+
+[[abfdc]][[GSPLG00029]][[identifying-failure-classes]]
+
+===== Identifying Failure Classes
+
+The level of redundancy is determined by the failure classes (types of
+failure) that the system needs to tolerate. Some examples of failure
+classes are:
+
+* System process
+* Machine
+* Power supply
+* Disk
+* Network failures
+* Building fires or other preventable disasters
+* Unpredictable natural catastrophes
+
+Duplicated system processes tolerate single system process failures, as
+well as single machine failures. Attaching the duplicated mirrored
+(paired) machines to different power supplies tolerates single power
+failures. By keeping the mirrored machines in separate buildings, a
+single-building fire can be tolerated. By keeping them in separate
+geographical locations, natural catastrophes like earthquakes can be
+tolerated.
+
+[[abfdf]][[GSPLG00030]][[planning-failover-capacity]]
+
+===== Planning Failover Capacity
+
+Failover capacity planning implies deciding how many additional servers
+and processes you need to add to the {productName} deployment so that
+in the event of a server or process failure, the system can seamlessly
+recover data and continue processing. If your system gets overloaded, a
+process or server failure might result, causing response time
+degradation or even total loss of service. Preparing for such an
+occurrence is critical to successful deployment.
+
+To maintain capacity, especially at peak loads, add spare machines
+running {productName} instances to the existing deployment.
+
+For example, consider a system with two machines running one {productName} instance each. Together, these machines handle a peak load of 300
+requests per second. If one of these machines becomes unavailable, the
+system will be able to handle only 150 requests, assuming an even load
+distribution between the machines. Therefore, half the requests during
+peak load will not be served.
+
+[[abfdg]][[GSPLG00022]][[design-decisions]]
+
+=== Design Decisions
+
+Design decisions include whether you are designing the system for peak
+or steady-state load, the number of machines in various roles and their
+sizes, and the size of the administration thread pool.
+
+The following topics are addressed here:
+
+* link:#abfdh[Designing for Peak or Steady State Load]
+* link:#abfdi[System Sizing]
+* link:#gkvcu[Sizing the Administration Thread Pool]
+
+[[abfdh]][[GSPLG00064]][[designing-for-peak-or-steady-state-load]]
+
+==== Designing for Peak or Steady State Load
+
+In a typical deployment, there is a difference between steady state and
+peak workloads:
+
+* If the system is designed to handle peak load, it can sustain the
+expected maximum load of users and requests without degrading response
+time. This implies that the system can handle extreme cases of expected
+system load. If the difference between peak load and steady state load
+is substantial, designing for peak loads can mean spending money on
+resources that are often idle.
+* If the system is designed to handle steady state load, it does not
+have all the resources required to handle the expected peak load. Thus,
+the system has a slower response time when peak load occurs.
+
+How often the system is expected to handle peak load will determine
+whether you want to design for peak load or for steady state.
+
+If peak load occurs often—say, several times per day—it may be
+worthwhile to expand capacity to handle it. If the system operates at
+steady state 90 percent of the time, and at peak only 10 percent of the
+time, then it may be preferable to deploy a system designed around
+steady state load. This implies that the system's response time will be
+slower only 10 percent of the time. Decide if the frequency or duration
+of time that the system operates at peak justifies the need to add
+resources to the system.
+
+[[abfdi]][[GSPLG00065]][[system-sizing]]
+
+==== System Sizing
+
+Based on the load on the {productName} instances and failover
+requirements, you can determine the number of applications server
+instances (hosts) needed. Evaluate your environment on the basis of the
+factors explained in link:#abfce[Estimating Load on {productName}
+Instances] to each {productName} instance, although each instance can
+use more than one Central Processing Unit (CPU).
+
+[[gkvcu]][[GSPLG00066]][[sizing-the-administration-thread-pool]]
+
+==== Sizing the Administration Thread Pool
+
+The default `admin-thread-pool` size of 50 should be adequate for most
+cluster deployments. If you have unusually large clusters, you may need
+to increase this thread pool size. In this case, set the
+`max-thread-pool-size` attribute to the number of instances in your
+largest cluster, but not larger than the number of incoming
+synchronization requests that the DAS can handle.
+
+[[abfdn]][[GSPLG00023]][[planning-message-queue-broker-deployment]]
+
+=== Planning Message Queue Broker Deployment
+
+The Java Message Service (JMS) API is a messaging standard that allows
+Jakarta EE applications and components to create, send, receive, and read
+messages. It enables distributed communication that is loosely coupled,
+reliable, and asynchronous. Message Queue, which implements JMS, is
+integrated with {productName}, enabling you to create components that
+send and receive JMS messages, including message-driven beans (MDBs).
+
+Message Queue is integrated with {productName} using a resource
+adapter also known as a connector module. A resource adapter is a Java
+EE component defined according to the Jakarta EE Connector Architecture
+(JCA) Specification. This specification defines a standardized way in
+which application servers such as {productName} can integrate with
+enterprise information systems such as JMS providers. {productName}
+includes a resource adapter that integrates with its own JMS provider,
+Message Queue. To use a different JMS provider, you must obtain and
+deploy a suitable resource adapter that is designed to integrate with
+it.
+
+Creating a JMS resource in {productName} using the Administration
+Console creates a preconfigured connector resource that uses the Message
+Queue resource adapter. To create JMS Resources that use any other
+resource adapter (including `GenericJMSRA`), you must create them under
+the Connectors node in the Administration Console.
+
+In addition to using resource adapter APIs, {productName} uses
+additional Message Queue APIs to provide better integration with Message
+Queue. This tight integration enables features such as connector
+failover, load balancing of outbound connections, and load balancing of
+inbound messages to MDBs. These features enable you to make messaging
+traffic fault-tolerant and highly available.
+
+The following topics are addressed here:
+
+* link:#abfdo[Multi-Broker Clusters]
+* link:#abfdq[Configuring {productName} to Use Message Queue Brokers]
+* link:#abfdx[Example Deployment Scenarios]
+
+[[abfdo]][[GSPLG00067]][[multi-broker-clusters]]
+
+==== Multi-Broker Clusters
+
+Message Queue supports using multiple interconnected broker instances
+known as a broker cluster. With broker clusters, client connections are
+distributed across all the brokers in the cluster. Clustering provides
+horizontal scalability and improves availability.
+
+A single message broker scales to about eight CPUs and provides
+sufficient throughput for typical applications. If a broker process
+fails, it is automatically restarted. However, as the number of clients
+connected to a broker increases, and as the number of messages being
+delivered increases, a broker will eventually exceed limitations such as
+number of file descriptors and memory.
+
+Having multiple brokers in a cluster rather than a single broker enables
+you to:
+
+* Provide messaging services despite hardware failures on a single machine.
+* Minimize downtime while performing system maintenance.
+* Accommodate workgroups having different user repositories.
+* Deal with firewall restrictions.
+
+Message Queue allows you to create conventional or enhanced broker
+clusters. Conventional broker clusters offer service availability.
+Enhanced broker clusters offer both service and data availability. For
+more information, see "link:../openmq/mq-admin-guide/broker-clusters.html#GMADG00041[Configuring and Managing Broker
+Clusters]" in Open Message Queue Administration Guide.
+
+In a conventional cluster, having multiple brokers does not ensure that
+transactions in progress at the time of a broker failure will continue
+on the alternate broker. Although Message Queue reestablishes a failed
+connection with a different broker in a cluster, transactions owned by
+the failed broker are not available until it restarts. Except for failed
+in-progress transactions, user applications can continue on the
+failed-over connection. Service failover is thus ensured.
+
+In an enhanced cluster, transactions and persistent messages owned by
+the failed broker are taken over by another running broker in the
+cluster and non-prepared transactions are rolled back. Data failover is
+ensured for prepared transactions and persisted messages.
+
+[[abfdp]][[GSPLG00031]][[master-broker-and-client-synchronization-for-conventional-clusters]]
+
+===== Master Broker and Client Synchronization for Conventional Clusters
+
+In a configuration for a conventional broker cluster, each destination
+is replicated on all of the brokers in a cluster. Each broker knows
+about message consumers that are registered for destinations on all
+other brokers. Each broker can therefore route messages from its own
+directly-connected message producers to remote message consumers, and
+deliver messages from remote producers to its own directly-connected consumers.
+
+In a cluster configuration, the broker to which each message producer is
+directly connected performs the routing for messages sent to it by that
+producer. Hence, a persistent message is both stored and routed by the
+message's home broker.
+
+Whenever an administrator creates or destroys a destination on a broker,
+this information is automatically propagated to all other brokers in a
+cluster. Similarly, whenever a message consumer is registered with its
+home broker, or whenever a consumer is disconnected from its home
+broker—either explicitly or because of a client or network failure, or
+because its home broker goes down—the relevant information about the
+consumer is propagated throughout the cluster. In a similar fashion,
+information about durable subscriptions is also propagated to all
+brokers in a cluster.
+
+A shared database of cluster change records can be configured as an
+alternative to using a master broker. For more information, see
+"link:../openmq/mq-admin-guide/broker-clusters.html#GMADG00041[Configuring and Managing Broker Clusters]" in Open
+Message Queue Administration Guide and "link:ha-administration-guide/jms.html#GSHAG00212[Using Message
+Queue Broker Clusters With {productName}]" in {productName} High Availability Administration Guide.
+
+[[abfdq]][[GSPLG00068]][[configuring-glassfish-server-to-use-message-queue-brokers]]
+
+==== Configuring {productName} to Use Message Queue Brokers
+
+By default, Message Queue brokers (JMS hosts) run in the same JVM as the
+{productName} process. However, Message Queue brokers (JMS hosts) can
+be configured to run in a separate JVM from the {productName}
+process. This allows multiple {productName} instances or clusters to
+share the same set of Message Queue brokers.
+
+The {productName}'s Java Message Service represents the connector
+module (resource adapter) for Message Queue. You can manage the Java
+Message Service through the Administration Console or the `asadmin`
+command-line utility.
+
+In {productName}, a JMS host refers to a Message Queue broker. The
+{productName}'s Java Message Service configuration contains a JMS
+Host List (also called AddressList) that contains all the JMS hosts that
+will be used.
+
+[[abfdt]][[GSPLG00032]][[java-message-service-type]]
+
+===== Java Message Service Type
+
+There are three types of integration between {productName} and
+Message Queue brokers: embedded, local, and remote. You can set this
+type attribute on the Administration Console's Java Message Service page.
+
+[[gktcw]][[GSPLG00004]][[embedded-java-message-service]]
+
+Embedded Java Message Service
+
+If the Type attribute is EMBEDDED, {productName} and the JMS broker
+are colocated in the same virtual machine. The JMS Service is started
+in-process and managed by {productName}. In EMBEDDED mode, JMS
+operations on stand-alone server instances bypass the networking stack,
+which leads to performance optimization. The EMBEDDED type is most
+suitable for stand-alone {productName} instances. EMBEDDED mode is
+not supported for enhanced broker clusters.
+
+With the EMBEDDED type, use the Start Arguments attribute to specify
+Message Queue broker startup parameters.
+
+With the EMBEDDED type, make sure the Java heap size is large enough to
+allow {productName} and Message Queue to run in the same virtual machine.
+
+[[abfdu]][[GSPLG00005]][[local-java-message-service]]
+
+Local Java Message Service
+
+If the Type attribute is LOCAL, {productName} starts and stops the
+Message Queue broker. When {productName} starts up, it starts the
+Message Queue broker specified as the Default JMS host. Likewise, when
+the {productName} instance shuts down, it shuts down the Message
+Queue broker. The LOCAL type is most suitable for use with enhanced
+broker clusters, and for other cases where the administrator prefers the
+use of separate JVMs.
+
+With the LOCAL type, use the Start Arguments attribute to specify
+Message Queue broker startup parameters.
+
+[[abfdv]][[GSPLG00006]][[remote-java-message-service]]
+
+Remote Java Message Service
+
+If the Type attribute is REMOTE, {productName} uses an externally
+configured broker or broker cluster. In this case, you must start and
+stop Message Queue brokers separately from {productName}, and use
+Message Queue tools to configure and tune the broker or broker cluster.
+The REMOTE type is most suitable for brokers running on different
+machines from the server instances (to share the load among more
+machines or for higher availability), or for using a different number of
+brokers and server instances.
+
+With the REMOTE type, you must specify Message Queue broker startup
+parameters using Message Queue tools. The Start Arguments attribute is ignored.
+
+[[abfdr]][[GSPLG00033]][[managing-jms-with-the-administration-console]]
+
+===== Managing JMS with the Administration Console
+
+In the Administration Console, you can set JMS properties using the Java
+Message Service node for a particular configuration. You can set
+properties such as Reconnect Interval and Reconnect Attempts. For more
+information, see "link:administration-guide/jms.html#GSADG00020[Administering the Java Message
+Service (JMS)]" in {productName} Administration
+Guide.
+
+The JMS Hosts node under the Java Message Service node contains a list
+of JMS hosts. You can add and remove hosts from the list. For each host,
+you can set the host name, port number, and the administration user name
+and password. By default, the JMS Hosts list contains one Message Queue
+broker, called "default_JMS_host," that represents the local Message
+Queue broker integrated with {productName}.
+
+In REMOTE mode, configure the JMS Hosts list to contain all the Message
+Queue brokers in the cluster. For example, to set up a cluster
+containing three Message Queue brokers, add a JMS host within the Java
+Message Service for each one. Message Queue clients use the
+configuration information in the Java Message Service to communicate
+with Message Queue broker.
+
+[[abfds]][[GSPLG00034]][[managing-jms-with-asadmin]]
+
+===== Managing JMS with asadmin
+
+In addition to the Administration Console, you can use the `asadmin`
+command-line utility to manage the Java Message Service and JMS hosts.
+Use the following `asadmin` commands:
+
+* Configuring Java Message Service attributes: `asadmin set`
+
+* Managing JMS hosts:
+** `asadmin create-jms-host`
+** `asadmin delete-jms-host`
+** `asadmin list-jms-hosts`
+
+* Managing JMS resources:
+** `asadmin create-jms-resource`
+** `asadmin delete-jms-resource`
+** `asadmin list-jms-resources`
+
++
+For more information on these commands, see the link:reference-manual.html#GSRFM[{productName} Reference Manual] or the corresponding man pages.
+
+[[abfdw]][[GSPLG00035]][[default-jms-host]]
+
+===== Default JMS Host
+
+You can specify the default JMS Host in the Administration Console Java
+Message Service page. If the Java Message Service type is LOCAL,
+{productName} starts the default JMS host when the {productName}
+instance starts. If the Java Message Service type is EMBEDDED, the
+default JMS host is started lazily when needed.
+
+In REMOTE mode, to use a Message Queue broker cluster, delete the
+default JMS host, then add all the Message Queue brokers in the cluster
+as JMS hosts. In this case, the default JMS host becomes the first JMS
+host in the JMS host list.
+
+You can also explicitly set the default JMS host to one of the JMS
+hosts. When the {productName} uses a Message Queue cluster, the
+default JMS host executes Message Queue-specific commands. For example,
+when a physical destination is created for a Message Queue broker
+cluster, the default JMS host executes the command to create the
+physical destinations, but all brokers in the cluster use the physical destination.
+
+[[abfdx]][[GSPLG00069]][[example-deployment-scenarios]]
+
+==== Example Deployment Scenarios
+
+To accommodate your messaging needs, modify the Java Message Service and
+JMS host list to suit your deployment, performance, and availability needs.
+The following sections describe some typical scenarios.
+
+For best availability, deploy Message Queue brokers and {productName}s on different machines, if messaging needs are not just with
+{productName}. Another option is to run a {productName} instance
+and a Message Queue broker instance on each machine until there is
+sufficient messaging capacity.
+
+[[abfdy]][[GSPLG00036]][[default-deployment]]
+
+===== Default Deployment
+
+Installing the {productName} automatically creates a domain
+administration server (DAS). By default, the Java Message Service type
+for the DAS is EMBEDDED. So, starting the DAS also starts its default
+Message Queue broker.
+
+Creating a new domain also creates a new broker. By default, when you
+add a stand-alone server instance or a cluster to the domain, its Java
+Message Service is configured as EMBEDDED and its default JMS host is
+the broker started by the DAS.
+
+[[abfdz]][[GSPLG00037]][[using-a-message-queue-broker-cluster-with-a-glassfish-server-cluster]]
+
+===== Using a Message Queue Broker Cluster with a {productName} Cluster
+
+In EMBEDDED or LOCAL mode, when a {productName} is configured, a
+Message Queue broker cluster is auto-configured with each {productName} instance associated with a Message Queue broker instance.
+
+In REMOTE mode, to configure a {productName} cluster to use a Message
+Queue broker cluster, add all the Message Queue brokers as JMS hosts in
+the {productName}'s Java Message Service. Any JMS connection
+factories created and MDBs deployed then uses the JMS configuration specified.
+
+[[abfeb]][[GSPLG00038]][[specifying-an-application-specific-message-queue-broker-cluster]]
+
+===== Specifying an Application-Specific Message Queue Broker Cluster
+
+In some cases, an application may need to use a different Message Queue
+broker cluster than the one used by the {productName} cluster. To do
+so, use the `AddressList` property of a JMS connection factory or the
+`activation-config` element in an MDB deployment descriptor to specify
+the Message Queue broker cluster.
+
+For more information about configuring connection factories, see
+"link:administration-guide/jms.html#GSADG00598[Administering JMS Connection Factories and
+Destinations]" in {productName} Administration
+Guide. For more information about MDBs, see "link:application-development-guide/ejb.html#GSDVG00149[Using
+Message-Driven Beans]" in {productName}
+Application Development Guide.
+
+[[abfec]][[GSPLG00039]][[application-clients]]
+
+===== Application Clients
+
+When an application client or standalone application accesses a JMS
+administered object for the first time, the client JVM retrieves the
+Java Message Service configuration from the server. Further changes to
+the JMS service will not be available to the client JVM until it is restarted.
diff --git a/docs/deployment-planning-guide/src/main/asciidoc/preface.adoc b/docs/deployment-planning-guide/src/main/asciidoc/preface.adoc
new file mode 100644
index 0000000..a6aaf26
--- /dev/null
+++ b/docs/deployment-planning-guide/src/main/asciidoc/preface.adoc
@@ -0,0 +1,323 @@
+type=page
+status=published
+title=Preface
+next=concepts.html
+prev=title.html
+~~~~~~
+
+= Preface
+
+[[sthref2]]
+[[preface]]
+== Preface
+
+[NOTE]
+====
+This documentation is part of the Java Enterprise Edition contribution
+to the Eclipse Foundation and is not intended for use in relation to
+Java Enterprise Edition or Orace GlassFish. The documentation is in the
+process of being revised to reflect the new Jakarta EE branding.
+Additional changes will be made as requirements and procedures evolve
+for Jakarta EE. Where applicable, references to Jakarta EE or Java
+Enterprise Edition should be considered references to Jakarta EE.
+
+Please see the Title page for additional license information.
+====
+
+The Deployment Planning Guide explains how to build a production
+deployment of {productName}.
+
+This preface contains information about and conventions for the entire
+{productName} ({productName}) documentation set.
+
+{productName} 7 is developed through the GlassFish project
+open-source community at https://github.com/eclipse-ee4j/glassfish.
+The GlassFish project provides a structured process for developing the
+{productName} platform that makes the new features of the Jakarta EE
+platform available faster, while maintaining the most important feature
+of Jakarta EE: compatibility. It enables Java developers to access the
+{productName} source code and to contribute to the development of the
+{productName}.
+
+[[sthref3]][[glassfish-server-documentation-set]]
+
+=== {productName} Documentation Set
+
+The {productName} documentation set describes deployment planning and
+system installation. For an introduction to {productName}, refer to
+the books in the order in which they are listed in the following table.
+
+[width="100%",cols="<30%,<70%",options="header",]
+|===
+|Book Title |Description
+|link:release-notes.html#GSRLN[Release Notes] |Provides late-breaking information about
+the software and the documentation and includes a comprehensive,
+table-based summary of the supported hardware, operating system, Java
+Development Kit (JDK), and database drivers.
+
+|link:quick-start-guide.html#GSQSG[Quick Start Guide]
+|Explains how to get started with the {productName} product.
+
+|link:installation-guide.html#GSING[Installation Guide]
+|Explains how to install the software and its components.
+
+|link:upgrade-guide.html#GSUPG[Upgrade Guide]
+|Explains how to upgrade to the latest version of {productName}.
+This guide also describes differences between adjacent product releases and configuration
+options that can result in incompatibility with the product specifications.
+
+|link:deployment-planning-guide.html#GSPLG[Deployment Planning Guide]
+|Explains how to build a production deployment of {productName} that meets the requirements of
+your system and enterprise.
+
+|link:administration-guide.html#GSADG[Administration Guide]
+|Explains how to configure, monitor, and manage {productName} subsystems and components
+from the command line by using the link:reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] utility.
+Instructions for performing these tasks from the Administration Console are provided
+in the Administration Console online help.
+
+|link:security-guide.html#GSSCG[Security Guide]
+|Provides instructions for configuring and administering {productName} security.
+
+|link:application-deployment-guide.html#GSDPG[Application Deployment Guide]
+|Explains how to assemble and deploy applications to the {productName} and provides information
+about deployment descriptors.
+
+|link:application-development-guide.html#GSDVG[Application Development Guide]
+|Explains how to create and implement Java Platform, Enterprise Edition (Jakarta EE platform)
+applications that are intended to run on the {productName}.
+These applications follow the open Java standards model for Jakarta EE components
+and application programmer interfaces (APIs).
+This guide provides information about developer tools, security, and debugging.
+
+|link:add-on-component-development-guide.html#GSACG[Add-On Component Development Guide]
+|Explains how to use published interfaces of {productName} to develop add-on components
+for {productName}.
+This document explains how to perform only those tasks that ensure that the add-on component
+is suitable for {productName}.
+
+|link:embedded-server-guide.html#GSESG[Embedded Server Guide]
+|Explains how to run applications in embedded {productName} and to develop applications
+in which {productName} is embedded.
+
+|link:ha-administration-guide.html#GSHAG[High Availability Administration Guide]
+|Explains how to configure {productName} to provide higher availability and
+scalability through failover and load balancing.
+
+|link:performance-tuning-guide.html#GSPTG[Performance Tuning Guide]
+|Explains how to optimize the performance of {productName}.
+
+|link:troubleshooting-guide.html#GSTSG[Troubleshooting Guide]
+|Describes common problems that you might encounter when using {productName} and explains how to solve them.
+
+|link:error-messages-reference.html#GSEMR[Error Message Reference]
+|Describes error messages that you might encounter when using {productName}.
+
+|link:reference-manual.html#GSRFM[Reference Manual]
+|Provides reference information in man page format for {productName} administration commands, utility
+commands, and related concepts.
+
+|link:../openmq/mq-release-notes.html#GMRLN[Message Queue Release Notes]
+|Describes new features, compatibility issues, and existing bugs for Open Message Queue.
+
+|link:../openmq/mq-tech-over.html#GMTOV[Message Queue Technical Overview]
+|Provides an introduction to the technology, concepts, architecture, capabilities, and features of
+the Message Queue messaging service.
+
+|link:../openmq/mq-admin-guide.html#GMADG[Message Queue Administration Guide]
+|Explains how to set up and manage a Message Queue messaging system.
+
+|link:../openmq/mq-dev-guide-jmx.html#GMJMG[Message Queue Developer's Guide for JMX Clients]
+|Describes the application programming interface in Message Queue for
+programmatically configuring and monitoring Message Queue resources in
+conformance with the Java Management Extensions (JMX).
+
+|link:../openmq/mq-dev-guide-java.html#GMJVG[Message Queue Developer's Guide for Java Clients]
+|Provides information about concepts and procedures for developing Java messaging
+applications (Java clients) that work with {productName}.
+
+|link:../openmq/mq-dev-guide-c.html#GMCCG[Message Queue Developer's Guide for C Clients]
+|Provides programming and reference information for developers working with
+Message Queue who want to use the C language binding to the Message
+Queue messaging service to send, receive, and process Message Queue messages.
+|===
+
+
+[[GSPLG00011]][[giprl]]
+
+[[related-documentation]]
+=== Related Documentation
+
+The following tutorials explain how to develop Jakarta EE applications:
+
+* https://github.com/eclipse-ee4j/jakartaee-firstcup-examples[
+Your First Cup: An Introduction to the Jakarta EE Platform].
+For beginning Jakarta EE programmers, this short tutorial explains the entire
+process for developing a simple enterprise application.
+The sample application is a web application that consists of a component that is
+based on the Enterprise JavaBeans specification, a JAX-RS web service,
+and a JavaServer Faces component for the web front end.
+
+* https://eclipse-ee4j.github.io/jakartaee-tutorial[The Jakarta EE Tutorial].
+This comprehensive tutorial explains how to use Jakarta EE platform technologies
+and APIs to develop Jakarta EE applications.
+
+Javadoc tool reference documentation for packages that are provided with
+{productName} is available as follows.
+
+* The Jakarta EE specifications and API specification is
+located at https://jakarta.ee/specifications/.
+
+* The API specification for {productName} 7, including Jakarta EE
+platform packages and nonplatform packages that are specific to the
+{productName} product, is located at
+https://glassfish.org/docs/.
+
+For information about creating enterprise applications in the NetBeans
+Integrated Development Environment (IDE), see the
+https://netbeans.apache.org/kb/docs/java-ee.html[
+NetBeans Documentation, Training & Support page].
+
+For information about the Derby database for use with
+the {productName}, see the https://db.apache.org/derby/index.html[Derby page].
+
+The Jakarta EE Samples project is a collection of sample applications that
+demonstrate a broad range of Jakarta EE technologies. The Jakarta EE Samples
+are bundled with the Jakarta EE Software Development Kit (SDK) and are also
+available from the repository
+(`https://github.com/eclipse-ee4j/glassfish-samples`).
+
+[[GSPLG00013]][[fwbkx]]
+
+[[typographic-conventions]]
+=== Typographic Conventions
+
+The following table describes the typographic changes that are used in
+this book.
+
+[width="100%",cols="<14%,<37%,<49%",options="header",]
+|===
+|Typeface |Meaning |Example
+
+|`AaBbCc123`
+|The names of commands, files, and directories, and onscreen computer output
+|Edit your `.login` file.
+
+Use `ls` `a` to list all files.
+
+`machine_name% you have mail.`
+
+|`AaBbCc123`
+|What you type, contrasted with onscreen computer output
+|`machine_name%` `su`
+
+`Password:`
+
+|AaBbCc123
+|A placeholder to be replaced with a real name or value
+|The command to remove a file is `rm` filename.
+
+|AaBbCc123
+|Book titles, new terms, and terms to be emphasized (note that some emphasized items appear bold online)
+|Read Chapter 6 in the User's Guide.
+
+A cache is a copy that is stored locally.
+
+Do not save the file.
+|===
+
+
+[[GSPLG00014]][[fquvc]]
+
+[[symbol-conventions]]
+=== Symbol Conventions
+
+The following table explains symbols that might be used in this book.
+
+[width="100%",cols="<10%,<26%,<28%,<36%",options="header",]
+|===
+|Symbol |Description |Example |Meaning
+
+|`[ ]`
+|Contains optional arguments and command options.
+|`ls [-l]`
+|The `-l` option is not required.
+
+|`{ \| }`
+|Contains a set of choices for a required command option.
+|`-d {y\|n}`
+|The `-d` option requires that you use either the `y` argument or the `n` argument.
+
+|`${ }`
+|Indicates a variable reference.
+|`${com.sun.javaRoot}`
+|References the value of the `com.sun.javaRoot` variable.
+
+|`-`
+|Joins simultaneous multiple keystrokes.
+|Control-A
+|Press the Control key while you press the A key.
+
+|`+`
+|Joins consecutive multiple keystrokes.
+|Ctrl+A+N
+|Press the Control key, release it, and then press the subsequent keys.
+
+|`>`
+|Indicates menu item selection in a graphical user interface.
+|File > New > Templates
+|From the File menu, choose New. From the New submenu, choose Templates.
+|===
+
+
+[[GSPLG00012]][[ghpfg]]
+
+[[default-paths-and-file-names]]
+=== Default Paths and File Names
+
+The following table describes the default paths and file names that are
+used in this book.
+
+[%autowidth.stretch,options="header",]
+|===
+|Placeholder |Description |Default Value
+
+|as-install
+a|Represents the base installation directory for {productName}.
+In configuration files, as-install is represented as follows:
+`${com.sun.aas.installRoot}`
+a|* Installations on the Oracle Solaris operating system, Linux operating
+system, and Mac OS operating system:
++
+user's-home-directory``/glassfish7/glassfish``
++
+* Installations on the Windows operating system:
++
+SystemDrive``:\glassfish7\glassfish``
+
+|as-install-parent
+|Represents the parent of the base installation directory for {productName}.
+a|* Installations on the Oracle Solaris operating system, Linux operating
+system, and Mac operating system:
++
+user's-home-directory``/glassfish7``
++
+* Installations on the Windows operating system:
++
+SystemDrive``:\glassfish7``
+
+|domain-root-dir
+|Represents the directory in which a domain is created by default.
+|as-install``/domains/``
+
+|domain-dir
+|Represents the directory in which a domain's configuration is stored.
+In configuration files, domain-dir is represented as follows:
+`${com.sun.aas.instanceRoot}`
+|domain-root-dir/domain-name
+
+|instance-dir
+|Represents the directory for a server instance.
+|domain-dir/instance-name
+|===
+
diff --git a/docs/deployment-planning-guide/src/main/asciidoc/title.adoc b/docs/deployment-planning-guide/src/main/asciidoc/title.adoc
new file mode 100644
index 0000000..ae57f3c
--- /dev/null
+++ b/docs/deployment-planning-guide/src/main/asciidoc/title.adoc
@@ -0,0 +1,45 @@
+type=page
+status=published
+title={productName} Deployment Planning Guide, Release 7
+next=preface.html
+prev=lot.html
+~~~~~~
+
+= {productName} Deployment Planning Guide, Release 7
+
+[[eclipse-glassfish-server]]
+== {productName}
+
+Deployment Planning Guide
+
+Release 7
+
+Contributed 2018 - 2022
+
+This book explains how to build a production deployment of {productName}.
+
+[[sthref1]]
+
+'''''
+
+{productName} Deployment Planning Guide, Release 7
+
+Copyright © 2013, 2019 Oracle and/or its affiliates. All rights reserved.
+
+This program and the accompanying materials are made available under the
+terms of the Eclipse Public License v. 2.0, which is available at
+http://www.eclipse.org/legal/epl-2.0.
+
+SPDX-License-Identifier: EPL-2.0
+
+Oracle and Java are registered trademarks of Oracle and/or its
+affiliates. Other names may be trademarks of their respective owners.
+
+Intel and Intel Xeon are trademarks or registered trademarks of Intel
+Corporation. All SPARC trademarks are used under license and are
+trademarks or registered trademarks of SPARC International, Inc. AMD,
+Opteron, the AMD logo, and the AMD Opteron logo are trademarks or
+registered trademarks of Advanced Micro Devices. UNIX is a registered
+trademark of The Open Group.
+
+image:img/eclipse_foundation_logo_tiny.png["Eclipse Logo"]
diff --git a/docs/deployment-planning-guide/src/main/jbake/assets/css/style.css b/docs/deployment-planning-guide/src/main/jbake/assets/css/style.css
deleted file mode 100644
index 25a16e4..0000000
--- a/docs/deployment-planning-guide/src/main/jbake/assets/css/style.css
+++ /dev/null
@@ -1,315 +0,0 @@
-/* CSS */
-/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
-/** 1. Set default font family to sans-serif. 2. Prevent iOS text size adjust after orientation change, without disabling user zoom. */
-html { font-family: sans-serif; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ }
-
-/* HTML5 display definitions ========================================================================== */
-/** Correct `block` display not defined for any HTML5 element in IE 8/9. Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox. Correct `block` display not defined for `main` in IE 11. */
-article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { display: block; }
-
-/** 1. Correct `inline-block` display not defined in IE 8/9. 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. */
-audio, canvas, progress, video { display: inline-block; /* 1 */ vertical-align: baseline; /* 2 */ }
-
-/** Prevent modern browsers from displaying `audio` without controls. Remove excess height in iOS 5 devices. */
-audio:not([controls]) { display: none; height: 0; }
-
-/** Address `[hidden]` styling not present in IE 8/9/10. Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. */
-[hidden], template { display: none; }
-
-/* Links ========================================================================== */
-/** Remove the gray background color from active links in IE 10. */
-a { background-color: transparent; }
-
-/** Improve readability when focused and also mouse hovered in all browsers. */
-a:active, a:hover { outline: 0; }
-
-/* Text-level semantics ========================================================================== */
-/** Address styling not present in IE 8/9/10/11, Safari, and Chrome. */
-abbr[title] { border-bottom: 1px dotted; }
-
-/** Address style set to `bolder` in Firefox 4+, Safari, and Chrome. */
-b, strong { font-weight: bold; }
-
-/** Address styling not present in Safari and Chrome. */
-dfn { font-style: italic; }
-
-/** Address variable `h1` font-size and margin within `section` and `article` contexts in Firefox 4+, Safari, and Chrome. */
-h1 { font-size: 2em; margin: 0.67em 0; }
-
-/** Address styling not present in IE 8/9. */
-mark { background: #ff0; color: #000; }
-
-/** Address inconsistent and variable font size in all browsers. */
-small { font-size: 80%; }
-
-/** Prevent `sub` and `sup` affecting `line-height` in all browsers. */
-sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }
-
-sup { top: -0.5em; }
-
-sub { bottom: -0.25em; }
-
-/* Embedded content ========================================================================== */
-/** Remove border when inside `a` element in IE 8/9/10. */
-img { border: 0; }
-
-/** Correct overflow not hidden in IE 9/10/11. */
-svg:not(:root) { overflow: hidden; }
-
-/* Grouping content ========================================================================== */
-/** Address margin not present in IE 8/9 and Safari. */
-figure { margin: 1em 40px; }
-
-/** Address differences between Firefox and other browsers. */
-hr { box-sizing: content-box; height: 0; }
-
-/** Contain overflow in all browsers. */
-pre { overflow: auto; }
-
-/** Address odd `em`-unit font size rendering in all browsers. */
-code, kbd, pre, samp { font-family: monospace, monospace; font-size: 1em; }
-
-/* Forms ========================================================================== */
-/** Known limitation: by default, Chrome and Safari on OS X allow very limited styling of `select`, unless a `border` property is set. */
-/** 1. Correct color not being inherited. Known issue: affects color of disabled elements. 2. Correct font properties not being inherited. 3. Address margins set differently in Firefox 4+, Safari, and Chrome. */
-button, input, optgroup, select, textarea { color: inherit; /* 1 */ font: inherit; /* 2 */ margin: 0; /* 3 */ }
-
-/** Address `overflow` set to `hidden` in IE 8/9/10/11. */
-button { overflow: visible; }
-
-/** Address inconsistent `text-transform` inheritance for `button` and `select`. All other form control elements do not inherit `text-transform` values. Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. Correct `select` style inheritance in Firefox. */
-button, select { text-transform: none; }
-
-/** 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls. 2. Correct inability to style clickable `input` types in iOS. 3. Improve usability and consistency of cursor style between image-type `input` and others. */
-button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ }
-
-/** Re-set default cursor for disabled elements. */
-button[disabled], html input[disabled] { cursor: default; }
-
-/** Remove inner padding and border in Firefox 4+. */
-button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; }
-
-/** Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet. */
-input { line-height: normal; }
-
-/** It's recommended that you don't attempt to style these elements. Firefox's implementation doesn't respect box-sizing, padding, or width.  1. Address box sizing set to `content-box` in IE 8/9/10. 2. Remove excess padding in IE 8/9/10. */
-input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ }
-
-/** Fix the cursor style for Chrome's increment/decrement buttons. For certain `font-size` values of the `input`, it causes the cursor style of the decrement button to change from `default` to `text`. */
-input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { height: auto; }
-
-/** 1. Address `appearance` set to `searchfield` in Safari and Chrome. 2. Address `box-sizing` set to `border-box` in Safari and Chrome (include `-moz` to future-proof). */
-input[type="search"] { -webkit-appearance: textfield; /* 1 */ /* 2 */ box-sizing: content-box; }
-
-/** Remove inner padding and search cancel button in Safari and Chrome on OS X. Safari (but not Chrome) clips the cancel button when the search input has padding (and `textfield` appearance). */
-input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; }
-
-/** Define consistent border, margin, and padding. */
-fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; }
-
-/** 1. Correct `color` not being inherited in IE 8/9/10/11. 2. Remove padding so people aren't caught out if they zero out fieldsets. */
-legend { border: 0; /* 1 */ padding: 0; /* 2 */ }
-
-/** Remove default vertical scrollbar in IE 8/9/10/11. */
-textarea { overflow: auto; }
-
-/** Don't inherit the `font-weight` (applied by a rule above). NOTE: the default cannot safely be changed in Chrome and Safari on OS X. */
-optgroup { font-weight: bold; }
-
-/* Tables ========================================================================== */
-/** Remove most spacing between table cells. */
-table { border-collapse: collapse; border-spacing: 0; }
-
-td, th { padding: 0; }
-
-/* LAYOUT STYLES */
-
-p { margin-top: 0; }
-
-code, pre { margin-bottom: 30px; font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace; font-size: 13px; color: #222; }
-
-code { padding: 0 3px; background-color: #f2f8fc; border: solid 1px #dbe7f3; }
-
-pre { padding: 20px; overflow: auto; text-shadow: none; background: #fff; border: solid 1px #f2f2f2; }
-
-pre code { padding: 0; color: #2879d0; background-color: #fff; border: none; }
-
-ul, ol, dl { margin-bottom: 20px; }
-
-/* COMMON STYLES */
-
-td.halign-right { text-align: right; } 
-
-td.halign-center { text-align: center; } 
-
-form { padding: 20px; background: #f2f2f2; }
-
-h2 { 
-   font-size: 2em;
-   line-height: 1.2em;
-   font-weight: 200;
-   letter-spacing: 0;
-}
-
-h3 { 
-   font-size: 1.4em;
-   line-height: 1.2em;
-   font-weight: normal;
-   letter-spacing: 0;
-}
-
-.sect1 {
-   margin-left: 4%;
-   margin-right: 4%;
-   font: 13px/20px Arial, Helvetica, sans-serif  
-}
-
-a:link {
-   text-decoration: none;
-   color: #09569d;
-}
-
-#preamble hr{
-   margin-left: 0%;
-   margin-right: 0%;
-}
-
-#preamble .sectionbody table  {
-   font-weight: 200;
-   margin-left: 4%;
-   margin-right: 4%;
-}
-
-hr {
-   margin-bottom: 12px;
-}
-
-table.tableblock.frame-all.grid-all.spread {
-   font-size: 12px;
-}
-
-code {
-   font-size:.9em;
-   border: 1px solid #eaeaea;
-   background-color: #f6f6f6;
-   border-radius: 3px;
-   padding: 1px;
-   padding-left:2px;
-   padding-right:2px;
-}
-
-pre.prettyprint.highlight {
-   border: 1px solid #eaeaea;
-   background-color: #f6f6f6;
-   border-radius: 4px;
-   padding: 8px;
-   padding-top:4px;
-   padding-bottom:4px;
-}
-
-.language-oac_no_warn {
-   font-size:.9em;
-   color:#222;
-   background-color: transparent;
-}
-
-#doc-title {
-   margin-left: 4%;
-}
-
-#top-nav {
-   margin-left: 4%;
-   font-size: 12px;
-}
-
-#bottom-nav {
-   margin-left: 4%;
-   font-size: 12px;
-}
-
-.vector-font {
-   color:grey; 
-   font-size: 20px;
-}
-
-#copyright {
-   padding-top: 10px;
-   padding-bottom: 4px;
-   display: table;
-   margin:0 auto;
-   color: grey;
-   font-size: 12px;
-   vertical-align: middle;
-}
-
-.beta {color: #FF0000}
-
-/* GENERAL ELEMENT TYPE STYLES */
-
-/* #Media Queries
-================================================== */
-/* Smaller than standard 960 (devices and browsers) */
-/* Tablet Portrait size to standard 960 (devices and browsers) */
-@media only screen and (min-width: 768px) and (max-width: 959px) { .inner { width: 740px; }
-  header h1, header h2 { width: 340px; }
-  header h1 { font-size: 60px; }
-  header h2 { font-size: 30px; }
-}
-/* All Mobile Sizes (devices and browser) */
-@media only screen and (max-width: 767px) { .inner { width: 93%; }
-  header { padding: 20px 0; }
-  header .inner { position: relative; }
-  header h1, header h2 { width: 100%; }
-  header h1 { font-size: 48px; }
-  header h2 { font-size: 24px; }
-  header a.button { position: relative; display: inline-block; width: auto; height: auto; padding: 5px 10px; margin-top: 15px; font-size: 13px; line-height: 1; color: #2879d0; text-align: center; background-color: #9ddcff; background-image: none; border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; }
-  header a.button small { display: inline; font-size: 13px; }
-}
-/* Mobile Landscape Size to Tablet Portrait (devices and browsers) */
-/* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */
-
-header h1 { padding-top: 14px; font-size: 2em; font-weight: 200; line-height: 1.4; color: #FFFFFF; letter-spacing: 0px; border-bottom: 0px; }
-
-header h2 { font-size: 1.2em; margin-top: 0; margin-bottom: 0; font-weight: 200; line-height: .8; color: #ec7D11; letter-spacing: 0; }
-
-/*
-header a.button { background: transparent url(../images/logo.png) 0 0 no-repeat; padding-left: 32px; }
-*/
-
-header a:hover { text-decoration: none; }
-
-/* Admonition (Note) block */
-.admonitionblock > table {
-  border: 0;
-  background: none;
-  width: 100%;
-  table-layout: auto;
-  margin-bottom: 10.5px;
-}
-.admonitionblock > table td.icon {
-  text-align: center;
-  width: 60px;
-}
-.admonitionblock > table td.icon img {
-  max-width: none;
-}
-.admonitionblock > table td.icon .title {
-  text-transform: uppercase;
-}
-.admonitionblock > table td.content {
-  padding-left: 1em;
-  padding-right: 1em;
-  border-left: 3px solid #ddd;
-}
-.admonitionblock > table td.content > :last-child > :last-child {
-  margin-bottom: 0;
-}
-.admonitionblock td.icon [class^="fa icon-"]:before {
-  font-size: 2.5em;
-  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
-  cursor: default;
-}
-.admonitionblock td.icon .icon-note:before {
-  content: "\f05a";
-  color: #5bc0de;
-}
diff --git a/docs/deployment-planning-guide/src/main/jbake/content/checklist.adoc b/docs/deployment-planning-guide/src/main/jbake/content/checklist.adoc
deleted file mode 100644
index 387ff40..0000000
--- a/docs/deployment-planning-guide/src/main/jbake/content/checklist.adoc
+++ /dev/null
@@ -1,161 +0,0 @@
-type=page
-status=published
-title=Checklist for Deployment
-prev=planning.html
-~~~~~~
-Checklist for Deployment
-========================
-
-[[GSPLG00003]][[abfeq]]
-
-
-[[checklist-for-deployment]]
-3 Checklist for Deployment
---------------------------
-
-This appendix provides a checklist to get started on evaluation and
-production with the GlassFish Server.
-
-[[sthref7]][[checklist]]
-
-Checklist
-~~~~~~~~~
-
-[[sthref8]][[sthref9]]
-
-Table 3-1 Checklist
-
-[width="100%",cols="<23%,<77%",options="header",]
-|=======================================================================
-|Component/Feature |Description
-|Application a|
-Determine the following requirements for the application to be deployed.
-
-* Required/acceptable response time.
-* Peak load characteristics.
-* Necessary persistence scope and frequency.
-* Session timeout in `web.xml`.
-* Failover and availability requirements. +
-For more information see the link:../performance-tuning-guide/toc.html#GSPTG[GlassFish Server Open Source
-Edition Performance Tuning Guide].
-
-|Hardware a|
-* Have necessary amounts of hard disk space and memory installed.
-* Use the sizing exercise to identify the requirements for deployment. +
-For more information see the link:../release-notes/toc.html#GSRLN[GlassFish Server Open Source
-Edition Release Notes]
-
-|Operating System a|
-* Ensure that the product is installed on a supported platform.
-* Ensure that the patch levels are up-to-date and accurate. +
-For more information see the link:../release-notes/toc.html#GSRLN[GlassFish Server Open Source
-Edition Release Notes]
-
-|Network Infrastructure a|
-* Identify single points of failures and address them.
-* Make sure that the NICs and other network components are correctly
-configured.
-* Run `ttcp` benchmark test to determine if the throughput meets the
-requirements/expected result.
-* Setup `ssh` based your preference. +
-For more information see the link:../installation-guide/toc.html#GSING[GlassFish Server Open Source
-Edition Installation Guide].
-
-|Back-ends and other external data sources |Check with the domain expert
-or vendor to ensure that these data sources are configured
-appropriately.
-
-|System Changes/Configuration a|
-* Make sure that changes to `/etc/system` and its equivalent on Linux
-are completed before running any performance/stress tests.
-* Make sure the changes to the TCP/IP settings are complete.
-* By default, the system comes with lots of services pre-configured. Not
-all of them are required to be running. Turn off services that are not
-needed to conserve system resources.
-* On Solaris, use `Setoolkit` to determine the behavior of the system.
-Resolve any flags that show up. +
-For more information see the link:../performance-tuning-guide/toc.html#GSPTG[GlassFish Server Open Source
-Edition Performance Tuning Guide].
-
-|Installation a|
-* Ensure that these servers are not installed on NFS mounted volumes.
-* Check for enough disk space and RAM when installing GlassFish Server.
-
-|GlassFish Server Configuration a|
-* Logging: Enable access log rotation.
-* Choose the right logging level. WARNING is usually appropriate.
-* Configure Java EE containers using the Administration Console.
-* Configure HTTP listeners using the Administration Console.
-* Configure ORB threadpool using the Administration Console.
-* If using Type2 drivers or calls involving native code, ensure that
-mtmalloc.so is specified in the LD_LIBRARY_PATH.
-* Ensure that the appropriate persistence scope and frequency are used
-and they are not overridden underneath in the individual Web/EJB
-modules.
-* Ensure that only critical methods in the SFSB are checkpointed. +
-For more information on tuning, see the link:../performance-tuning-guide/toc.html#GSPTG[GlassFish Server
-Open Source Edition Performance Tuning Guide]. +
-For more information on configuration, see the link:../administration-guide/toc.html#GSADG[GlassFish
-Server Open Source Edition Administration Guide].
-
-|Load balancer Configuration a|
-* Make sure the Web Server is installed.
-* Make sure the load balancer plug-in into the Web Server is installed.
-* Make sure patch checks is disabled.
-* Lower the value of the `KeepAliveQuery` parameter. The lower the
-value, the lower the latency is on lightly loaded systems. The higher
-the value, the higher the throughput is on highly loaded systems.
-
-|Java Virtual Machine Configuration a|
-* Initially set the minimum and maximum heap sizes to be the same, and
-at least one GB for each instance.
-* See
-http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html[Java
-Hotspot VM Options]
-(`http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html`)
-for more information.
-* When running multiple instances of GlassFish Server, consider creating
-a processor set and bind GlassFish Server to it. This helps in cases
-where the CMS collector is used to sweep the old generation.
-
-|Configuring time-outs in the load balancer a|
-* Response-time-out-in-seconds - How long the load balancer waits before
-declaring a GlassFish Server instance unhealthy. Set this value based on
-the response time of the application. If set too high, the Web Server
-and load balancer plug-in wait a long time before marking a GlassFish
-Server instance as unhealthy. If set too low and GlassFish Server's
-response time crosses this threshold, the instance will be incorrectly
-marked as unhealthy.
-* Interval-in-seconds - Time in seconds after which unhealthy instances
-are checked to find out if they have returned to a healthy state. Too
-low a value generates extra traffic from the load balancer plug-in to
-GlassFish Server instances and too high a value delays the routing of
-requests to the instance that has turned healthy.
-* Timeout-in-seconds - Duration for a response to be obtained for a
-health check request. Adjust this value based on the traffic among the
-systems in the cluster to ensure that the health check succeeds.
-
-|Configuring time-outs in GlassFish Server a|
-* Max-wait-time-millis - Wait time to get a connection from the pool
-before throwing an exception. Default is 6 s. Consider changing this
-value for highly loaded systems where the size of the data being
-persisted is greater than 50 KB.
-* Cache-idle-timeout-in-seconds - Time an EJB is allowed to be idle in
-the cache before it gets passivated. Applies only to entity beans and
-stateful session beans.
-* Removal-timeout-in-seconds - Time that an EJB remains passivated (idle
-in the backup store). Default value is 60 minutes. Adjust this value
-based on the need for SFSB failover.
-
-|Tune VM Garbage Collection (GC) a|
-Garbage collection pauses of four seconds or more can cause intermittent
-problems in persisting session state. To avoid this problem, tune the VM
-heap. In cases where even a single failure to persist data is
-unacceptable or when the system is not fully loaded, use the CMS
-collector or the throughput collector.
-
-These can be enabled by adding:
-
-`<jvm-options>-XX:+UseConcMarkSweepGC</jvm-options>`
-
-This option may decrease throughput.
diff --git a/docs/deployment-planning-guide/src/main/jbake/content/concepts.adoc b/docs/deployment-planning-guide/src/main/jbake/content/concepts.adoc
deleted file mode 100644
index 45c15d5..0000000
--- a/docs/deployment-planning-guide/src/main/jbake/content/concepts.adoc
+++ /dev/null
@@ -1,607 +0,0 @@
-type=page
-status=published
-title=Product Concepts
-next=planning.html
-prev=preface.html
-~~~~~~
-Product Concepts
-================
-
-[[GSPLG00001]][[abfaq]]
-
-
-[[product-concepts]]
-1 Product Concepts
-------------------
-
-GlassFish Server Open Source Edition provides a robust platform for the
-development, deployment, and management of Java EE applications. Key
-features include scalable transaction management, web services
-performance, clustering, security, and integration capabilities.
-
-The following topics are addressed here:
-
-* link:#abfar[Java EE Platform Overview]
-* link:#abfay[GlassFish Server Components]
-* link:#abfca[Configuration Roadmap for High Availability of GlassFish
-Server]
-
-[[abfar]][[GSPLG00016]][[java-ee-platform-overview]]
-
-Java EE Platform Overview
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-GlassFish Server implements Java platform, Enterprise Edition (Java EE)
-7 technology. The Java EE platform is a set of standard specifications
-that describe application components, APIs, and the runtime containers
-and services of an application server.
-
-[[abfas]][[GSPLG00040]][[java-ee-applications]]
-
-Java EE Applications
-^^^^^^^^^^^^^^^^^^^^
-
-Java EE applications are made up of components such as JavaServer Pages
-(JSP), Java servlets, and Enterprise JavaBeans (EJB) modules. These
-components enable software developers to build large-scale, distributed
-applications. Developers package Java EE applications in Java Archive
-(JAR) files (similar to zip files), which can be distributed to
-production sites. Administrators install Java EE applications onto
-GlassFish Server by deploying Java EE JAR files onto one or more server
-instances (or clusters of instances).
-
-[[abfat]][[GSPLG00041]][[containers]]
-
-Containers
-^^^^^^^^^^
-
-Each server instance includes two containers: web and EJB. A container
-is a runtime environment that provides services such as security and
-transaction management to Java EE components. Web components, such as
-Java Server Pages and servlets, run within the web container. Enterprise
-JavaBeans run within the EJB container.
-
-[[abfau]][[GSPLG00042]][[java-ee-services]]
-
-Java EE Services
-^^^^^^^^^^^^^^^^
-
-The Java EE platform provides services for applications, including:
-
-* Naming - A naming and directory service binds objects to names. A Java
-EE application can locate an object by looking up its Java Naming and
-Directory Interface (JNDI) name.
-* Security - The Java Authorization Contract for Containers (JACC) is a
-set of security contracts defined for the Java EE containers. Based on
-the client's identity, containers can restrict access to the container's
-resources and services.
-* Transaction management - A transaction is an indivisible unit of work.
-For example, transferring funds between bank accounts is a transaction.
-A transaction management service ensures that a transaction is either
-completed, or is rolled back.
-* Message Service - Applications hosted on separate systems can
-communicate with each other by exchanging messages using the Java
-Message Service (JMS). JMS is an integral part of the Java EE platform
-and simplifies the task of integrating heterogeneous enterprise
-applications.
-
-[[abfav]][[GSPLG00043]][[web-services]]
-
-Web Services
-^^^^^^^^^^^^
-
-Clients can access a Java EE application as a remote web service in
-addition to accessing it through HTTP, RMI/IIOP, and JMS. Web services
-are implemented using the Java API for XML-based web services (JAX-WS).
-A Java EE application can also act as a client to web services, which
-would be typical in network applications.
-
-Web Services Description Language (WSDL) is an XML format that describes
-web service interfaces. Web service consumers can dynamically parse a
-WSDL document to determine the operations a web service provides and how
-to execute them. GlassFish Server distributes web services interface
-descriptions using a registry that other applications can access through
-the Java API for XML Registries (JAXR).
-
-[[abfaw]][[GSPLG00044]][[client-access]]
-
-Client Access
-^^^^^^^^^^^^^
-
-Clients can access Java EE applications in several ways. Browser clients
-access web applications using hypertext transfer protocol (HTTP). For
-secure communication, browsers use the HTTP secure (HTTPS) protocol that
-uses secure sockets layer (SSL).
-
-Rich client applications running in the Application Client Container can
-directly lookup and access Enterprise JavaBeans using an Object Request
-Broker (ORB), Remote Method Invocation (RMI) and the internet inter-ORB
-protocol (IIOP), or IIOP/SSL (secure IIOP). They can access applications
-and web services using HTTP/HTTPS, JMS, and JAX-WS. They can use JMS to
-send messages to and receive messages from applications and
-message-driven beans.
-
-Clients that conform to the Web Services-Interoperability (WS-I) Basic
-Profile can access Java EE web services. WS-I is an integral part of the
-Java EE standard and defines interoperable web services. It enables
-clients written in any supporting language to access web services
-deployed to GlassFish Server.
-
-The best access mechanism depends on the specific application and the
-anticipated volume of traffic. GlassFish Server supports separately
-configurable listeners for HTTP, HTTPS, JMS, IIOP, and IIOP/SSL. You can
-set up multiple listeners for each protocol for increased scalability
-and reliability.
-
-Java EE applications can also act as clients of Java EE components such
-as Enterprise JavaBeans modules deployed on other servers, and can use
-any of these access mechanisms.
-
-[[abfax]][[GSPLG00045]][[external-systems-and-resources]]
-
-External Systems and Resources
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-On the Java EE platform, an external system is called a resource. For
-example, a database management system is a JDBC resource. Each resource
-is uniquely identified and by its Java Naming and Directory Interface
-(JNDI) name. Applications access external systems through the following
-APIs and components:
-
-* Java Database Connectivity (JDBC) - A database management system
-(DBMS) provides facilities for storing, organizing, and retrieving data.
-Most business applications store data in relational databases, which
-applications access via JDBC. GlassFish Server includes the Java DB
-database for use sample applications and application development and
-prototyping, though it is not suitable for deployment. GlassFish Server
-provides certified JDBC drivers for connecting to major relational
-databases. These drivers are suitable for deployment.
-* Java Message Service - Messaging is a method of communication between
-software components or applications. A messaging client sends messages
-to, and receives messages from, any other client via a messaging
-provider that implements the Java Messaging Service (JMS) API. GlassFish
-Server includes a high-performance JMS broker, Open Message Queue.
-* Java EE Connectors - The Java EE Connector architecture enables
-integrating Java EE applications and existing Enterprise Information
-Systems (EIS). An application accesses an EIS through a portable Java EE
-component called a connector or resource adapter, analogous to using
-JDBC driver to access an RDBMS. Resource adapters are distributed as
-standalone Resource Adapter Archive (RAR) modules or included in Java EE
-application archives. As RARs, they are deployed like other Java EE
-components. GlassFish Server includes evaluation resource adapters that
-integrate with popular EIS.
-* JavaMail - Through the JavaMail API, applications can connect to a
-Simple Mail Transport Protocol (SMTP) server to send email and to an
-IMAP or POP3 server to receive email.
-
-[[abfay]][[GSPLG00017]][[glassfish-server-components]]
-
-GlassFish Server Components
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This section describes the components in GlassFish Server.
-
-The following topics are addressed here:
-
-* link:#abfaz[Server Instances]
-* link:#abfba[Administrative Domains]
-* link:#abfbc[Clusters]
-* link:#abfbe[Named Configurations]
-* link:#abfbf[HTTP Load Balancer Plug-in]
-* link:#abfbh[IIOP Load Balancing in a Cluster]
-* link:#abfbi[Message Queue and JMS Resources]
-
-The administration tools, such as the browser-based Administration
-Console, communicate with the domain administration server (DAS), which
-in turn communicates with the server instances.
-
-[[abfaz]][[GSPLG00046]][[server-instances]]
-
-Server Instances
-^^^^^^^^^^^^^^^^
-
-A server instance is a GlassFish Server running in a single Java Virtual
-Machine (JVM) process. GlassFish Server is certified with Java platform,
-Standard Edition (Java SE) 7.
-
-It is usually sufficient to create a single server instance on a
-machine, since GlassFish Server and accompanying JVM are both designed
-to scale to multiple processors. However, it can be beneficial to create
-multiple instances on one machine for application isolation and rolling
-upgrades. In some cases, a large server with multiple instances can be
-used in more than one administrative domain. The administration tools
-makes it easy to create, delete, and manage server instances across
-multiple machines.
-
-[[abfba]][[GSPLG00047]][[administrative-domains]]
-
-Administrative Domains
-^^^^^^^^^^^^^^^^^^^^^^
-
-An administrative domain (or simply domain) is a group of server
-instances that are administered together. A server instance belongs to a
-single administrative domain. The instances in a domain can run on
-different physical hosts.
-
-You can create multiple domains from one installation of GlassFish
-Server. By grouping server instances into domains, different
-organizations and administrators can share a single GlassFish Server
-installation. Each domain has its own configuration, log files, and
-application deployment areas that are independent of other domains.
-Changing the configuration of one domain does not affect the
-configurations of other domains. Likewise, deploying an application on
-one domain does not deploy it or make it visible to any other domain.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-All hosts in a domain on which the DAS and GlassFish Server instances
-are running must have the same operating system.
-
-|=======================================================================
-
-
-[[abfbb]][[GSPLG00024]][[domain-administration-server-das]]
-
-Domain Administration Server (DAS)
-++++++++++++++++++++++++++++++++++
-
-A domain has one Domain Administration Server (DAS), a specially
-designated GlassFish Server instance that hosts the administrative
-applications. The DAS authenticates the administrator, accepts requests
-from administration tools, and communicates with server instances in the
-domain to carry out the requests.
-
-The administration tools are the `asadmin` command-line tool and the
-browser-based Administration Console. GlassFish Server also provides a
-RESTful API for server administration. The administrator can view and
-manage a single domain at a time, thus enforcing secure separation.
-
-The DAS is also sometimes referred to as the admin server or default
-server. It is referred to as the default server because it is the
-default target for some administrative operations.
-
-Since the DAS is a GlassFish Server instance, it can also host Java EE
-applications for testing purposes. However, do not use it to host
-production applications. You might want to deploy applications to the
-DAS, for example, if the clusters and instances that will host the
-production application have not yet been created.
-
-The DAS keeps a repository containing the configuration of its domain
-and all the deployed applications. If the DAS is inactive or down, there
-is no impact on the performance or availability of active server
-instances, however administrative changes cannot be made. In certain
-cases, for security purposes, it may be useful to intentionally stop the
-DAS process, for example to reboot the host operating system to install
-a kernel patch or a hardware upgrade.
-
-Administrative commands are provided to backup and restore the domain
-configuration and applications. With the standard backup and restore
-procedures, you can quickly restore working configurations. If the DAS
-host fails, you must create a new DAS installation to restore the
-previous domain configuration. For instructions, see
-"link:../administration-guide/domains.html#GSADG00006[Administering Domains]" in GlassFish Server Open
-Source Edition Administration Guide.
-
-[[abfbc]][[GSPLG00048]][[clusters]]
-
-Clusters
-^^^^^^^^
-
-A cluster is a named collection of server instances that share the same
-applications, resources, and configuration information. You can group
-server instances on different machines into one logical cluster and
-administer them as one unit. You can easily control the lifecycle of a
-multi-machine cluster with the DAS.
-
-Clusters enable horizontal scalability, load balancing, and failover
-protection. By definition, all the instances in a cluster have the same
-resource and application configuration. When a server instance or a
-machine in a cluster fails, the load balancer detects the failure,
-redirects traffic from the failed instance to other instances in the
-cluster, and recovers the user session state. Since the same
-applications and resources are on all instances in the cluster, an
-instance can failover to any other instance in the cluster.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-All hosts in a cluster on which the DAS and GlassFish Server instances
-are running must have the same operating system.
-
-|=======================================================================
-
-
-Clusters, domains, and instances are related as follows:
-
-* An administrative domain can have zero or more clusters.
-* A cluster has one or more server instances.
-* A cluster belongs to a single domain.
-
-[[abfbe]][[GSPLG00049]][[named-configurations]]
-
-Named Configurations
-^^^^^^^^^^^^^^^^^^^^
-
-A named configuration is an abstraction that encapsulates GlassFish
-Server property settings. Clusters and stand-alone server instances
-reference a named configuration to get their property settings. With
-named configurations, Java EE containers' configurations are independent
-of the physical machine on which they reside, except for particulars
-such as IP address, port number, and amount of heap memory. Using named
-configurations provides power and flexibility to GlassFish Server
-administration.
-
-To apply configuration changes, you simply change the property settings
-of the named configuration, and all the clusters and stand-alone
-instances that reference it pick up the changes. You can only delete a
-named configuration when all references to it have been removed. A
-domain can contain multiple named configurations.
-
-GlassFish Server comes with a default configuration, called
-default-config. The default configuration is optimized for developer
-productivity.
-
-You can create your own named configuration based on the default
-configuration that you can customize for your own purposes. Use the
-Administration Console and `asadmin` command line utility to create and
-manage named configurations.
-
-[[abfbf]][[GSPLG00050]][[http-load-balancer-plug-in]]
-
-HTTP Load Balancer Plug-in
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The load balancer distributes the workload among multiple physical
-machines, thereby increasing the overall throughput of the system. The
-GlassFish Server includes the load balancer plug-ins for Oracle iPlanet
-Web Server, Oracle HTTP Server, Apache Web Server, and Microsoft
-Internet Information Server.
-
-The load balancer plug-in accepts HTTP and HTTPS requests and forwards
-them to one of the GlassFish Server instances in the cluster. Should an
-instance fail, become unavailable (due to network faults), or become
-unresponsive, requests are redirected to existing, available machines.
-The load balancer can also recognize when a failed instance has
-recovered and redistribute the load accordingly.
-
-For simple stateless applications, a load-balanced cluster may be
-sufficient. However, for mission-critical applications with session
-state, use load balanced clusters with replicated session persistence.
-
-To setup a system with load balancing, in addition to GlassFish Server,
-you must install a web server and the load-balancer plug-in. Then you
-must:
-
-* Create GlassFish Server clusters that you want to participate in load
-balancing.
-* Deploy applications to these load-balanced clusters.
-
-Server instances and clusters participating in load balancing have a
-homogenous environment. Usually that means that the server instances
-reference the same server configuration, can access the same physical
-resources, and have the same applications deployed to them. Homogeneity
-enables configuration consistency, and improves the ability to support a
-production deployment.
-
-Use the `asadmin` command-line tool to create a load balancer
-configuration, add references to clusters and server instances to it,
-enable the clusters for reference by the load balancer, enable
-applications for load balancing, optionally create a health checker,
-generate the load balancer configuration file, and finally copy the load
-balancer configuration file to your web server `config` directory. An
-administrator can create a script to automate this entire process.
-
-For more details and complete configuration instructions, see
-"link:../ha-administration-guide/http-load-balancing.html#GSHAG00009[Configuring HTTP Load Balancing]" in GlassFish Server
-Open Source Edition High Availability Administration Guide.
-
-[[abfbg]][[GSPLG00051]][[session-persistence]]
-
-Session Persistence
-^^^^^^^^^^^^^^^^^^^
-
-Java EE applications typically have significant amounts of session state
-data. A web shopping cart is the classic example of a session state.
-Also, an application can cache frequently-needed data in the session
-object. In fact, almost all applications with significant user
-interactions need to maintain a session state. Both HTTP sessions and
-stateful session beans (SFSBs) have session state data.
-
-While the session state is not as important as the transactional state
-stored in a database, preserving the session state across server
-failures can be important to end users. GlassFish Server provides the
-capability to save, or persist, this session state in a repository. If
-the GlassFish Server instance that is hosting the user session
-experiences a failure, the session state can be recovered. The session
-can continue without loss of information.
-
-GlassFish Server supports the following session persistence types:
-
-* Memory
-* Replicated
-* File
-* Coherence*Web
-
-With memory persistence, the state is always kept in memory and does not
-survive failure. With replicated persistence, GlassFish Server uses
-other server instances in the cluster as the persistence store for both
-HTTP and SFSB sessions. With file persistence, GlassFish Server
-serializes session objects and stores them to the file system location
-specified by session manager properties. For SFSBs, if replicated
-persistence is not specified, GlassFish Server stores state information
-in the session-store subdirectory of this location. For more information
-about Coherence*Web, see
-http://download.oracle.com/docs/cd/E18686_01/coh.37/e18690/glassfish.html[Using
-Coherence*Web with GlassFish Server]
-(`http://docs.oracle.com/cd/E18686_01/coh.37/e18690/glassfish.html`).
-
-Checking an SFSB's state for changes that need to be saved is called
-checkpointing. When enabled, checkpointing generally occurs after any
-transaction involving the SFSB is completed, even if the transaction
-rolls back. For more information on developing stateful session beans,
-see "link:../application-development-guide/ejb.html#GSDVG00147[Using Session Beans]" in GlassFish Server Open
-Source Edition Application Development Guide. For more information on
-enabling SFSB failover, see "link:../ha-administration-guide/session-persistence-and-failover.html#GSHAG00211[Stateful Session Bean
-Failover]" in GlassFish Server Open Source Edition High Availability
-Administration Guide.
-
-Apart from the number of requests being served by GlassFish Server, the
-session persistence configuration settings also affect the session
-information in each request.
-
-For more information on configuring session persistence, see
-"link:../ha-administration-guide/session-persistence-and-failover.html#GSHAG00011[Configuring High Availability Session Persistence and
-Failover]" in GlassFish Server Open Source Edition High Availability
-Administration Guide.
-
-[[abfbh]][[GSPLG00052]][[iiop-load-balancing-in-a-cluster]]
-
-IIOP Load Balancing in a Cluster
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-With IIOP load balancing, IIOP client requests are distributed to
-different server instances or name servers. The goal is to spread the
-load evenly across the cluster, thus providing scalability. IIOP load
-balancing combined with EJB clustering and availability features in
-GlassFish Server provides not only load balancing but also EJB failover.
-
-There are two steps to IIOP failover and load balancing. The first step,
-bootstrapping, is the process by which the client sets up the initial
-naming context with one ORB in the cluster. The client attempts to
-connect to one of the IIOP endpoints. When launching an application
-client using the `appclient` script, you specify these endpoints using
-the `-targetserver` option on the command line or `target-server`
-elements in the `sun-acc.xml` configuration file. The client randomly
-chooses one of these endpoints and tries to connect to it, trying other
-endpoints if needed until one works.
-
-The second step concerns sending messages to a specific EJB. By default,
-all naming look-ups, and therefore all EJB accesses, use the cluster
-instance chosen during bootstrapping. The client exchanges messages with
-an EJB through the client ORB and server ORB. As this happens, the
-server ORB updates the client ORB as servers enter and leave the
-cluster. Later, if the client loses its connection to the server from
-the previous step, the client fails over to some other server using its
-list of currently active members. In particular, this cluster member
-might have joined the cluster after the client made the initial
-connection.
-
-When a client performs a JNDI lookup for an object, the Naming Service
-creates an `InitialContext` (IC) object associated with a particular
-server instance. From then on, all lookup requests made using that IC
-object are sent to the same server instance. All `EJBHome` objects
-looked up with that `InitialContext` are hosted on the same target
-server. Any bean references obtained henceforth are also created on the
-same target host. This effectively provides load balancing, since all
-clients randomize the list of live target servers when creating
-`InitialContext` objects. If the target server instance goes down, the
-lookup or EJB method invocation will failover to another server
-instance.
-
-Adding or deleting new instances to the cluster does not update the
-existing client's view of the cluster. You must manually update the
-endpoints list on the client side.
-
-[[abfbi]][[GSPLG00053]][[message-queue-and-jms-resources]]
-
-Message Queue and JMS Resources
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The Open Message Queue (Message Queue) provides reliable, asynchronous
-messaging for distributed applications. Message Queue is an enterprise
-messaging system that implements the Java Message Service (JMS)
-standard. Message Queue provides messaging for Java EE application
-components such as message-driven beans (MDBs).
-
-GlassFish Server implements the Java Message Service (JMS) API by
-integrating Message Queue into GlassFish Server. GlassFish Server
-includes the Enterprise version of Message Queue which has failover,
-clustering and load balancing features.
-
-For basic JMS administration tasks, use the GlassFish Server
-Administration Console and `asadmin` command-line utility.
-
-For advanced tasks, including administering a Message Queue cluster, use
-the tools provided in the as-install`/mq/bin` directory. For details
-about administering Message Queue, see the link:../../openmq/mq-admin-guide/toc.html#GMADG[Open Message
-Queue Administration Guide].
-
-For information on deploying JMS applications and Message Queue
-clustering for message failover, see link:planning.html#abfdn[Planning
-Message Queue Broker Deployment].
-
-[[abfca]][[GSPLG00018]][[configuration-roadmap-for-high-availability-of-glassfish-server]]
-
-Configuration Roadmap for High Availability of GlassFish Server
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following procedure lists the major tasks for configuring GlassFish
-Server for high availability. The procedure also provides
-cross-references to detailed instructions for performing each task.
-
-[[sthref6]][[to-configure-glassfish-server-for-high-availability]]
-
-To Configure GlassFish Server for High Availability
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-1.  Determine your requirements and goals for performance and QoS. +
-For more information, see the following documentation:
-* link:planning.html#abfcc[Establishing Performance Goals]
-* link:planning.html#abfcp[Planning the Network Configuration]
-* link:planning.html#abfcy[Planning for Availability]
-2.  Size your system. +
-For more information, see link:planning.html#abfdg[Design Decisions].
-3.  Install GlassFish Server and related subcomponents such as a web
-server. +
-For more information, see the following documentation:
-* link:../installation-guide/toc.html#GSING[GlassFish Server Open Source Edition Installation Guide]
-* Installation guides for related subcomponents, for example, Oracle
-iPlanet Web Server 7.0.9 Installation and Migration Guide
-(`http://docs.oracle.com/cd/E19146-01/821-1832/index.html`)
-4.  If you plan to administer your clusters centrally, set up secure
-shell (SSH) for centralized administration. +
-For more information, see "link:../ha-administration-guide/ssh-setup.html#GSHAG00003[Setting Up SSH for
-Centralized Administration]" in GlassFish Server Open Source Edition
-High Availability Administration Guide.
-5.  Configure domains, nodes, clusters, GlassFish Server instances, and
-virtual servers as required. +
-For more information, see the following documentation:
-* "link:../administration-guide/domains.html#GSADG00006[Administering Domains]" in GlassFish Server Open
-Source Edition Administration Guide
-* "link:../ha-administration-guide/nodes.html#GSHAG00004[Administering GlassFish Server Nodes]" in GlassFish
-Server Open Source Edition High Availability Administration Guide
-* "link:../ha-administration-guide/clusters.html#GSHAG00005[Administering GlassFish Server Clusters]" in
-GlassFish Server Open Source Edition High Availability Administration
-Guide
-* "link:../ha-administration-guide/instances.html#GSHAG00006[Administering GlassFish Server Instances]" in
-GlassFish Server Open Source Edition High Availability Administration
-Guide
-* "link:../administration-guide/http_https.html#GSADG00589[Administering Virtual Servers]" in GlassFish Server
-Open Source Edition Administration Guide
-6.  Configure your load balancer. +
-For more information, see "link:../administration-guide/webapps.html#GSADG00552[Administering mod_jk]" in
-GlassFish Server Open Source Edition Administration Guide.
-7.  Configure the web container and EJB container for replicated session
-persistence. +
-For more information, see "link:../ha-administration-guide/session-persistence-and-failover.html#GSHAG00011[Configuring High
-Availability Session Persistence and Failover]" in GlassFish Server Open
-Source Edition High Availability Administration Guide.
-8.  If you are using messaging extensively, configure Java Message
-Service (JMS) clusters for failover . +
-For more information, see the following documentation:
-* link:planning.html#abfdn[Planning Message Queue Broker Deployment]
-* "link:../ha-administration-guide/jms.html#GSHAG00012[Configuring Java Message Service High Availability]"
-in GlassFish Server Open Source Edition High Availability Administration
-Guide
-* link:../../openmq/mq-admin-guide/toc.html#GMADG[Open Message Queue Administration Guide]
-9.  Deploy applications and configure them for high availability and
-session failover. +
-For more information, see the link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source
-Edition Application Deployment Guide].
diff --git a/docs/deployment-planning-guide/src/main/jbake/content/loe.adoc b/docs/deployment-planning-guide/src/main/jbake/content/loe.adoc
deleted file mode 100644
index f876140..0000000
--- a/docs/deployment-planning-guide/src/main/jbake/content/loe.adoc
+++ /dev/null
@@ -1,17 +0,0 @@
-type=page
-status=published
-title=List of Examples
-next=lot.html
-prev=toc.html
-~~~~~~
-List of Examples
-================
-
-[[list-of-examples]]
-List of Examples
-----------------
-
-* link:planning.html#fygam[2-1 Calculation of Response Time]
-* link:planning.html#fygaj[2-2 Calculation of Requests Per Second]
-* link:planning.html#fygad[2-3 Calculation of Bandwidth Required]
-* link:planning.html#fygai[2-4 Calculation of Peak Load]
diff --git a/docs/deployment-planning-guide/src/main/jbake/content/lot.adoc b/docs/deployment-planning-guide/src/main/jbake/content/lot.adoc
deleted file mode 100644
index 656eabd..0000000
--- a/docs/deployment-planning-guide/src/main/jbake/content/lot.adoc
+++ /dev/null
@@ -1,14 +0,0 @@
-type=page
-status=published
-title=List of Tables
-next=title.html
-prev=loe.html
-~~~~~~
-List of Tables
-==============
-
-[[list-of-tables]]
-List of Tables
---------------
-
-* link:checklist.html#sthref9[3-1 Checklist]
diff --git a/docs/deployment-planning-guide/src/main/jbake/content/planning.adoc b/docs/deployment-planning-guide/src/main/jbake/content/planning.adoc
deleted file mode 100644
index 4c8de00..0000000
--- a/docs/deployment-planning-guide/src/main/jbake/content/planning.adoc
+++ /dev/null
@@ -1,957 +0,0 @@
-type=page
-status=published
-title=Planning your Deployment
-next=checklist.html
-prev=concepts.html
-~~~~~~
-Planning your Deployment
-========================
-
-[[GSPLG00002]][[abfcb]]
-
-
-[[planning-your-deployment]]
-2 Planning your Deployment
---------------------------
-
-Before deploying GlassFish Server, first determine the performance and
-availability goals, and then make decisions about the hardware, network,
-and storage requirements accordingly.
-
-The following topics are addressed here:
-
-* link:#abfcc[Establishing Performance Goals]
-* link:#abfcp[Planning the Network Configuration]
-* link:#abfcy[Planning for Availability]
-* link:#abfdg[Design Decisions]
-* link:#abfdn[Planning Message Queue Broker Deployment]
-
-[[abfcc]][[GSPLG00019]][[establishing-performance-goals]]
-
-Establishing Performance Goals
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-At its simplest, high performance means maximizing throughput and
-reducing response time. Beyond these basic goals, you can establish
-specific goals by determining the following:
-
-* What types of applications and services are deployed, and how do
-clients access them?
-* Which applications and services need to be highly available?
-* Do the applications have session state or are they stateless?
-* What request capacity or throughput must the system support?
-* How many concurrent users must the system support?
-* What is an acceptable average response time for user requests?
-* What is the average think time between requests?
-
-You can calculate some of these metrics using a remote browser emulator
-(RBE) tool, or web site performance and benchmarking software that
-simulates expected application activity. Typically, RBE and benchmarking
-products generate concurrent HTTP requests and then report the response
-time for a given number of requests per minute. You can then use these
-figures to calculate server activity.
-
-The results of the calculations described in this chapter are not
-absolute. Treat them as reference points to work against, as you
-fine-tune the performance of GlassFish Server and your applications.
-
-The following topics are addressed here:
-
-* link:#abfcd[Estimating Throughput]
-* link:#abfce[Estimating Load on GlassFish Server Instances]
-* link:#abfcq[Estimating Bandwidth Requirements]
-* link:#abfct[Estimating Peak Load]
-
-[[abfcd]][[GSPLG00054]][[estimating-throughput]]
-
-Estimating Throughput
-^^^^^^^^^^^^^^^^^^^^^
-
-In broad terms, throughput measures the amount of work performed by
-GlassFish Server. For GlassFish Server, throughput can be defined as the
-number of requests processed per minute per server instance.
-
-As described in the next section, GlassFish Server throughput is a
-function of many factors, including the nature and size of user
-requests, number of users, and performance of GlassFish Server instances
-and back-end databases. You can estimate throughput on a single machine
-by benchmarking with simulated workloads.
-
-High availability applications incur additional overhead because they
-periodically save session data. The amount of overhead depends on the
-amount of data, how frequently it changes, and how often it is saved.
-The first two factors depend on the application in question; the latter
-is also affected by server settings.
-
-[[abfce]][[GSPLG00055]][[estimating-load-on-glassfish-server-instances]]
-
-Estimating Load on GlassFish Server Instances
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Consider the following factors to estimate the load on GlassFish Server
-instances.
-
-The following topics are addressed here:
-
-* link:#abfcf[Maximum Number of Concurrent Users]
-* link:#abfcg[Think Time]
-* link:#abfch[Average Response Time]
-* link:#abfcj[Requests Per Minute]
-
-[[abfcf]][[GSPLG00025]][[maximum-number-of-concurrent-users]]
-
-Maximum Number of Concurrent Users
-++++++++++++++++++++++++++++++++++
-
-Users interact with an application through a client, such as a web
-browser or Java program. Based on the user's actions, the client
-periodically sends requests to the GlassFish Server. A user is
-considered active as long as the user's session has neither expired nor
-been terminated. When estimating the number of concurrent users, include
-all active users.
-
-Initially, as the number of users increases, throughput increases
-correspondingly. However, as the number of concurrent requests
-increases, server performance begins to saturate, and throughput begins
-to decline.
-
-Identify the point at which adding concurrent users reduces the number
-of requests that can be processed per minute. This point indicates when
-optimal performance is reached and beyond which throughput start to
-degrade. Generally, strive to operate the system at optimal throughput
-as much as possible. You might need to add processing power to handle
-additional load and increase throughput.
-
-[[abfcg]][[GSPLG00026]][[think-time]]
-
-Think Time
-++++++++++
-
-A user does not submit requests continuously. A user submits a request,
-the server receives and processes the request, and then returns a
-result, at which point the user spends some time before submitting a new
-request. The time between one request and the next is called think time.
-
-Think times are dependent on the type of users. For example,
-machine-to-machine interaction such as for a web service typically has a
-lower think time than that of a human user. You may have to consider a
-mix of machine and human interactions to estimate think time.
-
-Determining the average think time is important. You can use this
-duration to calculate the number of requests that need to be completed
-per minute, as well as the number of concurrent users the system can
-support.
-
-[[abfch]][[GSPLG00027]][[average-response-time]]
-
-Average Response Time
-+++++++++++++++++++++
-
-Response time refers to the amount of time GlassFish Server takes to
-return the results of a request to the user. The response time is
-affected by factors such as network bandwidth, number of users, number
-and type of requests submitted, and average think time.
-
-In this section, response time refers to the mean, or average, response
-time. Each type of request has its own minimal response time. However,
-when evaluating system performance, base the analysis on the average
-response time of all requests.
-
-The faster the response time, the more requests per minute are being
-processed. However, as the number of users on the system increases, the
-response time starts to increase as well, even though the number of
-requests per minute declines.
-
-A system performance graph indicates that after a certain point,
-requests per minute are inversely proportional to response time. The
-sharper the decline in requests per minute, the steeper the increase in
-response time.
-
-The point of the peak load is the point at which requests per minute
-start to decline. Prior to this point, response time calculations are
-not necessarily accurate because they do not use peak numbers in the
-formula. After this point, (because of the inversely proportional
-relationship between requests per minute and response time), the
-administrator can more accurately calculate response time using maximum
-number of users and requests per minute.
-
-Use the following formula to determine T~response~, the response time
-(in seconds) at peak load:
-
-T~response~ = n/r - T~think~
-
-where
-
-* n is the number of concurrent users
-* r is the number requests per second the server receives
-* T~think~ is the average think time (in seconds) +
-To obtain an accurate response time result, always include think time in
-the equation.
-
-[[GSPLG00007]][[fygam]]
-
-
-Example 2-1 Calculation of Response Time
-
-If the following conditions exist:
-
-* Maximum number of concurrent users, n, that the system can support at
-peak load is 5,000.
-* Maximum number of requests, r, the system can process at peak load is
-1,000 per second.
-
-Average think time, T~think~, is three seconds per request.
-
-Thus, the calculation of response time is:
-
-T~response~ = n/r - T~think~ = (5000/ 1000) - 3 sec. = 5 - 3 sec.
-
-Therefore, the response time is two seconds.
-
-After the system's response time has been calculated, particularly at
-peak load, compare it to the acceptable response time for the
-application. Response time, along with throughput, is one of the main
-factors critical to GlassFish Server performance.
-
-[[abfcj]][[GSPLG00028]][[requests-per-minute]]
-
-Requests Per Minute
-+++++++++++++++++++
-
-If you know the number of concurrent users at any given time, the
-response time of their requests, and the average user think time, then
-you can calculate the number of requests per minute. Typically, start by
-estimating the number of concurrent users that are on the system.
-
-For example, after running web site performance software, the
-administrator concludes that the average number of concurrent users
-submitting requests on an online banking web site is 3,000. This number
-depends on the number of users who have signed up to be members of the
-online bank, their banking transaction behavior, the time of the day or
-week they choose to submit requests, and so on.
-
-Therefore, knowing this information enables you to use the requests per
-minute formula described in this section to calculate how many requests
-per minute your system can handle for this user base. Since requests per
-minute and response time become inversely proportional at peak load,
-decide if fewer requests per minute is acceptable as a trade-off for
-better response time, or alternatively, if a slower response time is
-acceptable as a trade-off for more requests per minute.
-
-Experiment with the requests per minute and response time thresholds
-that are acceptable as a starting point for fine-tuning system
-performance. Thereafter, decide which areas of the system require
-adjustment.
-
-Solving for r in the equation in the previous section gives:
-
-r = n/(T~response~ + T~think~)
-
-[[GSPLG00008]][[fygaj]]
-
-
-Example 2-2 Calculation of Requests Per Second
-
-For the values:
-
-* n = 2,800 concurrent users
-* T~response~ = 1 (one second per request average response time)
-* T~think~ = 3, (three seconds average think time)
-
-The calculation for the number of requests per second is:
-
-[source,oac_no_warn]
-----
-r = 2800 / (1+3) = 700
-----
-
-Therefore, the number of requests per second is 700 and the number of
-requests per minute is 42000.
-
-[[abfcp]][[GSPLG00020]][[planning-the-network-configuration]]
-
-Planning the Network Configuration
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-When planning how to integrate the GlassFish Server into the network,
-estimate the bandwidth requirements and plan the network in such a way
-that it can meet users' performance requirements.
-
-The following topics are addressed here:
-
-* link:#gkvdm[Setting Up Traffic Separation]
-* link:#abfcq[Estimating Bandwidth Requirements]
-* link:#abfcr[Calculating Bandwidth Required]
-* link:#abfct[Estimating Peak Load]
-* link:#abfcw[Choosing Network Cards]
-* link:#abfdc[Identifying Failure Classes]
-
-[[gkvdm]][[GSPLG00056]][[setting-up-traffic-separation]]
-
-Setting Up Traffic Separation
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can separate external traffic, such as client requests, from the
-internal traffic, such as session state failover, database transactions,
-and messaging. Traffic separation enables you to plan a network better
-and augment certain parts of the network, as required.
-
-To separate the traffic, run each server instance on a multi-homed
-machine. A multi-homed machine has two IP addresses belonging to
-different networks, an external IP and an internal IP. The objective is
-to expose only the external IP to user requests. The internal IP is used
-only by the cluster instances for internal communication. For details,
-see "link:../ha-administration-guide/clusters.html#GSHAG00266[Using the Multi-Homing Feature With GMS]" in
-GlassFish Server Open Source Edition High Availability Administration
-Guide.
-
-To plan for traffic on both networks, see link:#abfcq[Estimating
-Bandwidth Requirements]. For external networks, follow the guidelines in
-link:#abfcr[Calculating Bandwidth Required] and link:#abfct[Estimating
-Peak Load]. To size the interfaces for internal networks, see
-link:#abfcw[Choosing Network Cards].
-
-[[abfcq]][[GSPLG00057]][[estimating-bandwidth-requirements]]
-
-Estimating Bandwidth Requirements
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To decide on the desired size and bandwidth of the network, first
-determine the network traffic and identify its peak. Check if there is a
-particular hour, day of the week, or day of the month when overall
-volume peaks, and then determine the duration of that peak.
-
-During peak load times, the number of packets in the network is at its
-highest level. In general, if you design for peak load, scale your
-system with the goal of handling 100 percent of peak volume. Bear in
-mind, however, that any network behaves unpredictably and that despite
-your scaling efforts, it might not always be able handle 100 percent of
-peak volume.
-
-For example, assume that at peak load, five percent of users
-occasionally do not have immediate network access when accessing
-applications deployed on GlassFish Server. Of that five percent,
-estimate how many users retry access after the first attempt. Again, not
-all of those users might get through, and of that unsuccessful portion,
-another percentage will retry. As a result, the peak appears longer
-because peak use is spread out over time as users continue to attempt
-access.
-
-[[abfcr]][[GSPLG00058]][[calculating-bandwidth-required]]
-
-Calculating Bandwidth Required
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Based on the calculations made in link:#abfcc[Establishing Performance
-Goals], determine the additional bandwidth required for deploying
-GlassFish Server at your site.
-
-Depending on the method of access (T-1 lines, ADSL, cable modem, and so
-on), calculate the amount of increased bandwidth required to handle your
-estimated load. For example, suppose your site uses T-1 or higher-speed
-T-3 lines. Given their bandwidth, estimate how many lines are needed on
-the network, based on the average number of requests generated per
-second at your site and the maximum peak load. Calculate these figures
-using a web site analysis and monitoring tool.
-
-[[GSPLG00009]][[fygad]]
-
-
-Example 2-3 Calculation of Bandwidth Required
-
-A single T-1 line can handle 1.544 Mbps. Therefore, a network of four
-T-1 lines can handle approximately 6 Mbps of data. Assuming that the
-average HTML page sent back to a client is 30 kilobytes (KB), this
-network of four T-1 lines can handle the following traffic per second:
-
-6,176,000 bits/10 bits = 772,000 bytes per second
-
-772,000 bytes per second/30 KB = approximately 25 concurrent response
-pages per second.
-
-With traffic of 25 pages per second, this system can handle 90,000 pages
-per hour (25 x 60 seconds x 60 minutes), and therefore 2,160,000 pages
-per day maximum, assuming an even load throughout the day. If the
-maximum peak load is greater than this, increase the bandwidth
-accordingly.
-
-[[abfct]][[GSPLG00059]][[estimating-peak-load]]
-
-Estimating Peak Load
-^^^^^^^^^^^^^^^^^^^^
-
-Having an even load throughout the day is probably not realistic. You
-need to determine when the peak load occurs, how long it lasts, and what
-percentage of the total load is the peak load.
-
-[[GSPLG00010]][[fygai]]
-
-
-Example 2-4 Calculation of Peak Load
-
-If the peak load lasts for two hours and takes up 30 percent of the
-total load of 2,160,000 pages, this implies that 648,000 pages must be
-carried over the T-1 lines during two hours of the day.
-
-Therefore, to accommodate peak load during those two hours, increase the
-number of T-1 lines according to the following calculations:
-
-648,000 pages/120 minutes = 5,400 pages per minute
-
-5,400 pages per minute/60 seconds = 90 pages per second
-
-If four lines can handle 25 pages per second, then approximately four
-times that many pages requires four times that many lines, in this case
-16 lines. The 16 lines are meant for handling the realistic maximum of a
-30 percent peak load. Obviously, the other 70 percent of the load can be
-handled throughout the rest of the day by these many lines.
-
-[[abfcw]][[GSPLG00060]][[choosing-network-cards]]
-
-Choosing Network Cards
-^^^^^^^^^^^^^^^^^^^^^^
-
-For greater bandwidth and optimal network performance, use at least 100
-Mbps Ethernet cards or, preferably, 1 Gbps Ethernet cards between
-servers hosting GlassFish Server.
-
-[[abfcy]][[GSPLG00021]][[planning-for-availability]]
-
-Planning for Availability
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following topics are addressed here:
-
-* link:#abfcz[Rightsizing Availability]
-* link:#abfda[Using Clusters to Improve Availability]
-* link:#abfdb[Adding Redundancy to the System]
-
-[[abfcz]][[GSPLG00061]][[rightsizing-availability]]
-
-Rightsizing Availability
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-To plan availability of systems and applications, assess the
-availability needs of the user groups that access different
-applications. For example, external fee-paying users and business
-partners often have higher quality of service (QoS) expectations than
-internal users. Thus, it may be more acceptable to internal users for an
-application feature, application, or server to be unavailable than it
-would be for paying external customers.
-
-There is an increasing cost and complexity to mitigating against
-decreasingly probable events. At one end of the continuum, a simple
-load-balanced cluster can tolerate localized application, middleware,
-and hardware failures. At the other end of the scale, geographically
-distinct clusters can mitigate against major catastrophes affecting the
-entire data center.
-
-To realize a good return on investment, it often makes sense to identify
-availability requirements of features within an application. For
-example, it may not be acceptable for an insurance quotation system to
-be unavailable (potentially turning away new business), but brief
-unavailability of the account management function (where existing
-customers can view their current coverage) is unlikely to turn away
-existing customers.
-
-[[abfda]][[GSPLG00062]][[using-clusters-to-improve-availability]]
-
-Using Clusters to Improve Availability
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-At the most basic level, a cluster is a group of GlassFish Server
-instances—often hosted on multiple physical servers—that appear to
-clients as a single instance. This provides horizontal scalability as
-well as higher availability than a single instance on a single machine.
-This basic level of clustering works in conjunction with the HTTP load
-balancer plug-in, which accepts HTTP and HTTPS requests and forwards
-them to one of the instances in the cluster. The ORB and integrated JMS
-brokers also perform load balancing to GlassFish Server clusters. If an
-instance fails, becomes unavailable (due to network faults), or becomes
-unresponsive, requests are redirected only to existing, available
-machines. The load balancer can also recognize when a failed instance
-has recovered and redistribute load accordingly.
-
-[[abfdb]][[GSPLG00063]][[adding-redundancy-to-the-system]]
-
-Adding Redundancy to the System
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-One way to achieve high availability is to add hardware and software
-redundancy to the system. When one unit fails, the redundant unit takes
-over. This is also referred to as fault tolerance. In general, to
-maximize high availability, determine and remove every possible point of
-failure in the system.
-
-[[abfdc]][[GSPLG00029]][[identifying-failure-classes]]
-
-Identifying Failure Classes
-+++++++++++++++++++++++++++
-
-The level of redundancy is determined by the failure classes (types of
-failure) that the system needs to tolerate. Some examples of failure
-classes are:
-
-* System process
-* Machine
-* Power supply
-* Disk
-* Network failures
-* Building fires or other preventable disasters
-* Unpredictable natural catastrophes
-
-Duplicated system processes tolerate single system process failures, as
-well as single machine failures. Attaching the duplicated mirrored
-(paired) machines to different power supplies tolerates single power
-failures. By keeping the mirrored machines in separate buildings, a
-single-building fire can be tolerated. By keeping them in separate
-geographical locations, natural catastrophes like earthquakes can be
-tolerated.
-
-[[abfdf]][[GSPLG00030]][[planning-failover-capacity]]
-
-Planning Failover Capacity
-++++++++++++++++++++++++++
-
-Failover capacity planning implies deciding how many additional servers
-and processes you need to add to the GlassFish Server deployment so that
-in the event of a server or process failure, the system can seamlessly
-recover data and continue processing. If your system gets overloaded, a
-process or server failure might result, causing response time
-degradation or even total loss of service. Preparing for such an
-occurrence is critical to successful deployment.
-
-To maintain capacity, especially at peak loads, add spare machines
-running GlassFish Server instances to the existing deployment.
-
-For example, consider a system with two machines running one GlassFish
-Server instance each. Together, these machines handle a peak load of 300
-requests per second. If one of these machines becomes unavailable, the
-system will be able to handle only 150 requests, assuming an even load
-distribution between the machines. Therefore, half the requests during
-peak load will not be served.
-
-[[abfdg]][[GSPLG00022]][[design-decisions]]
-
-Design Decisions
-~~~~~~~~~~~~~~~~
-
-Design decisions include whether you are designing the system for peak
-or steady-state load, the number of machines in various roles and their
-sizes, and the size of the administration thread pool.
-
-The following topics are addressed here:
-
-* link:#abfdh[Designing for Peak or Steady State Load]
-* link:#abfdi[System Sizing]
-* link:#gkvcu[Sizing the Administration Thread Pool]
-
-[[abfdh]][[GSPLG00064]][[designing-for-peak-or-steady-state-load]]
-
-Designing for Peak or Steady State Load
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-In a typical deployment, there is a difference between steady state and
-peak workloads:
-
-* If the system is designed to handle peak load, it can sustain the
-expected maximum load of users and requests without degrading response
-time. This implies that the system can handle extreme cases of expected
-system load. If the difference between peak load and steady state load
-is substantial, designing for peak loads can mean spending money on
-resources that are often idle.
-* If the system is designed to handle steady state load, it does not
-have all the resources required to handle the expected peak load. Thus,
-the system has a slower response time when peak load occurs.
-
-How often the system is expected to handle peak load will determine
-whether you want to design for peak load or for steady state.
-
-If peak load occurs often—say, several times per day—it may be
-worthwhile to expand capacity to handle it. If the system operates at
-steady state 90 percent of the time, and at peak only 10 percent of the
-time, then it may be preferable to deploy a system designed around
-steady state load. This implies that the system's response time will be
-slower only 10 percent of the time. Decide if the frequency or duration
-of time that the system operates at peak justifies the need to add
-resources to the system.
-
-[[abfdi]][[GSPLG00065]][[system-sizing]]
-
-System Sizing
-^^^^^^^^^^^^^
-
-Based on the load on the GlassFish Server instances and failover
-requirements, you can determine the number of applications server
-instances (hosts) needed. Evaluate your environment on the basis of the
-factors explained in link:#abfce[Estimating Load on GlassFish Server
-Instances] to each GlassFish Server instance, although each instance can
-use more than one Central Processing Unit (CPU).
-
-[[gkvcu]][[GSPLG00066]][[sizing-the-administration-thread-pool]]
-
-Sizing the Administration Thread Pool
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The default `admin-thread-pool` size of 50 should be adequate for most
-cluster deployments. If you have unusually large clusters, you may need
-to increase this thread pool size. In this case, set the
-`max-thread-pool-size` attribute to the number of instances in your
-largest cluster, but not larger than the number of incoming
-synchronization requests that the DAS can handle.
-
-[[abfdn]][[GSPLG00023]][[planning-message-queue-broker-deployment]]
-
-Planning Message Queue Broker Deployment
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The Java Message Service (JMS) API is a messaging standard that allows
-Java EE applications and components to create, send, receive, and read
-messages. It enables distributed communication that is loosely coupled,
-reliable, and asynchronous. Message Queue, which implements JMS, is
-integrated with GlassFish Server, enabling you to create components that
-send and receive JMS messages, including message-driven beans (MDBs).
-
-Message Queue is integrated with GlassFish Server using a resource
-adapter also known as a connector module. A resource adapter is a Java
-EE component defined according to the Java EE Connector Architecture
-(JCA) Specification. This specification defines a standardized way in
-which application servers such as GlassFish Server can integrate with
-enterprise information systems such as JMS providers. GlassFish Server
-includes a resource adapter that integrates with its own JMS provider,
-Message Queue. To use a different JMS provider, you must obtain and
-deploy a suitable resource adapter that is designed to integrate with
-it.
-
-Creating a JMS resource in GlassFish Server using the Administration
-Console creates a preconfigured connector resource that uses the Message
-Queue resource adapter. To create JMS Resources that use any other
-resource adapter (including `GenericJMSRA`), you must create them under
-the Connectors node in the Administration Console.
-
-In addition to using resource adapter APIs, GlassFish Server uses
-additional Message Queue APIs to provide better integration with Message
-Queue. This tight integration enables features such as connector
-failover, load balancing of outbound connections, and load balancing of
-inbound messages to MDBs. These features enable you to make messaging
-traffic fault-tolerant and highly available.
-
-The following topics are addressed here:
-
-* link:#abfdo[Multi-Broker Clusters]
-* link:#abfdq[Configuring GlassFish Server to Use Message Queue Brokers]
-* link:#abfdx[Example Deployment Scenarios]
-
-[[abfdo]][[GSPLG00067]][[multi-broker-clusters]]
-
-Multi-Broker Clusters
-^^^^^^^^^^^^^^^^^^^^^
-
-Message Queue supports using multiple interconnected broker instances
-known as a broker cluster. With broker clusters, client connections are
-distributed across all the brokers in the cluster. Clustering provides
-horizontal scalability and improves availability.
-
-A single message broker scales to about eight CPUs and provides
-sufficient throughput for typical applications. If a broker process
-fails, it is automatically restarted. However, as the number of clients
-connected to a broker increases, and as the number of messages being
-delivered increases, a broker will eventually exceed limitations such as
-number of file descriptors and memory.
-
-Having multiple brokers in a cluster rather than a single broker enables
-you to:
-
-* Provide messaging services despite hardware failures on a single
-machine.
-* Minimize downtime while performing system maintenance.
-* Accommodate workgroups having different user repositories.
-* Deal with firewall restrictions.
-
-Message Queue allows you to create conventional or enhanced broker
-clusters. Conventional broker clusters offer service availability.
-Enhanced broker clusters offer both service and data availability. For
-more information, see "link:../../openmq/mq-admin-guide/broker-clusters.html#GMADG00041[Configuring and Managing Broker
-Clusters]" in Open Message Queue Administration Guide.
-
-In a conventional cluster, having multiple brokers does not ensure that
-transactions in progress at the time of a broker failure will continue
-on the alternate broker. Although Message Queue reestablishes a failed
-connection with a different broker in a cluster, transactions owned by
-the failed broker are not available until it restarts. Except for failed
-in-progress transactions, user applications can continue on the
-failed-over connection. Service failover is thus ensured.
-
-In an enhanced cluster, transactions and persistent messages owned by
-the failed broker are taken over by another running broker in the
-cluster and non-prepared transactions are rolled back. Data failover is
-ensured for prepared transactions and persisted messages.
-
-[[abfdp]][[GSPLG00031]][[master-broker-and-client-synchronization-for-conventional-clusters]]
-
-Master Broker and Client Synchronization for Conventional Clusters
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-In a configuration for a conventional broker cluster, each destination
-is replicated on all of the brokers in a cluster. Each broker knows
-about message consumers that are registered for destinations on all
-other brokers. Each broker can therefore route messages from its own
-directly-connected message producers to remote message consumers, and
-deliver messages from remote producers to its own directly-connected
-consumers.
-
-In a cluster configuration, the broker to which each message producer is
-directly connected performs the routing for messages sent to it by that
-producer. Hence, a persistent message is both stored and routed by the
-message's home broker.
-
-Whenever an administrator creates or destroys a destination on a broker,
-this information is automatically propagated to all other brokers in a
-cluster. Similarly, whenever a message consumer is registered with its
-home broker, or whenever a consumer is disconnected from its home
-broker—either explicitly or because of a client or network failure, or
-because its home broker goes down—the relevant information about the
-consumer is propagated throughout the cluster. In a similar fashion,
-information about durable subscriptions is also propagated to all
-brokers in a cluster.
-
-A shared database of cluster change records can be configured as an
-alternative to using a master broker. For more information, see
-"link:../../openmq/mq-admin-guide/broker-clusters.html#GMADG00041[Configuring and Managing Broker Clusters]" in Open
-Message Queue Administration Guide and "link:../ha-administration-guide/jms.html#GSHAG00212[Using Message
-Queue Broker Clusters With GlassFish Server]" in GlassFish Server Open
-Source Edition High Availability Administration Guide.
-
-[[abfdq]][[GSPLG00068]][[configuring-glassfish-server-to-use-message-queue-brokers]]
-
-Configuring GlassFish Server to Use Message Queue Brokers
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-By default, Message Queue brokers (JMS hosts) run in the same JVM as the
-GlassFish Server process. However, Message Queue brokers (JMS hosts) can
-be configured to run in a separate JVM from the GlassFish Server
-process. This allows multiple GlassFish Server instances or clusters to
-share the same set of Message Queue brokers.
-
-The GlassFish Server's Java Message Service represents the connector
-module (resource adapter) for Message Queue. You can manage the Java
-Message Service through the Administration Console or the `asadmin`
-command-line utility.
-
-In GlassFish Server, a JMS host refers to a Message Queue broker. The
-GlassFish Server's Java Message Service configuration contains a JMS
-Host List (also called AddressList) that contains all the JMS hosts that
-will be used.
-
-[[abfdt]][[GSPLG00032]][[java-message-service-type]]
-
-Java Message Service Type
-+++++++++++++++++++++++++
-
-There are three types of integration between GlassFish Server and
-Message Queue brokers: embedded, local, and remote. You can set this
-type attribute on the Administration Console's Java Message Service
-page.
-
-[[gktcw]][[GSPLG00004]][[embedded-java-message-service]]
-
-Embedded Java Message Service
-
-If the Type attribute is EMBEDDED, GlassFish Server and the JMS broker
-are colocated in the same virtual machine. The JMS Service is started
-in-process and managed by GlassFish Server. In EMBEDDED mode, JMS
-operations on stand-alone server instances bypass the networking stack,
-which leads to performance optimization. The EMBEDDED type is most
-suitable for stand-alone GlassFish Server instances. EMBEDDED mode is
-not supported for enhanced broker clusters.
-
-With the EMBEDDED type, use the Start Arguments attribute to specify
-Message Queue broker startup parameters.
-
-With the EMBEDDED type, make sure the Java heap size is large enough to
-allow GlassFish Server and Message Queue to run in the same virtual
-machine.
-
-[[abfdu]][[GSPLG00005]][[local-java-message-service]]
-
-Local Java Message Service
-
-If the Type attribute is LOCAL, GlassFish Server starts and stops the
-Message Queue broker. When GlassFish Server starts up, it starts the
-Message Queue broker specified as the Default JMS host. Likewise, when
-the GlassFish Server instance shuts down, it shuts down the Message
-Queue broker. The LOCAL type is most suitable for use with enhanced
-broker clusters, and for other cases where the administrator prefers the
-use of separate JVMs.
-
-With the LOCAL type, use the Start Arguments attribute to specify
-Message Queue broker startup parameters.
-
-[[abfdv]][[GSPLG00006]][[remote-java-message-service]]
-
-Remote Java Message Service
-
-If the Type attribute is REMOTE, GlassFish Server uses an externally
-configured broker or broker cluster. In this case, you must start and
-stop Message Queue brokers separately from GlassFish Server, and use
-Message Queue tools to configure and tune the broker or broker cluster.
-The REMOTE type is most suitable for brokers running on different
-machines from the server instances (to share the load among more
-machines or for higher availability), or for using a different number of
-brokers and server instances.
-
-With the REMOTE type, you must specify Message Queue broker startup
-parameters using Message Queue tools. The Start Arguments attribute is
-ignored.
-
-[[abfdr]][[GSPLG00033]][[managing-jms-with-the-administration-console]]
-
-Managing JMS with the Administration Console
-++++++++++++++++++++++++++++++++++++++++++++
-
-In the Administration Console, you can set JMS properties using the Java
-Message Service node for a particular configuration. You can set
-properties such as Reconnect Interval and Reconnect Attempts. For more
-information, see "link:../administration-guide/jms.html#GSADG00020[Administering the Java Message
-Service (JMS)]" in GlassFish Server Open Source Edition Administration
-Guide.
-
-The JMS Hosts node under the Java Message Service node contains a list
-of JMS hosts. You can add and remove hosts from the list. For each host,
-you can set the host name, port number, and the administration user name
-and password. By default, the JMS Hosts list contains one Message Queue
-broker, called "default_JMS_host," that represents the local Message
-Queue broker integrated with GlassFish Server.
-
-In REMOTE mode, configure the JMS Hosts list to contain all the Message
-Queue brokers in the cluster. For example, to set up a cluster
-containing three Message Queue brokers, add a JMS host within the Java
-Message Service for each one. Message Queue clients use the
-configuration information in the Java Message Service to communicate
-with Message Queue broker.
-
-[[abfds]][[GSPLG00034]][[managing-jms-with-asadmin]]
-
-Managing JMS with asadmin
-+++++++++++++++++++++++++
-
-In addition to the Administration Console, you can use the `asadmin`
-command-line utility to manage the Java Message Service and JMS hosts.
-Use the following `asadmin` commands:
-
-* Configuring Java Message Service attributes: `asadmin set`
-* Managing JMS hosts:
-
-** `asadmin create-jms-host`
-
-** `asadmin delete-jms-host`
-
-** `asadmin list-jms-hosts`
-* Managing JMS resources:
-
-** `asadmin create-jms-resource`
-
-** `asadmin delete-jms-resource`
-
-** `asadmin list-jms-resources` +
-For more information on these commands, see the link:../reference-manual/toc.html#GSRFM[GlassFish
-Server Open Source Edition Reference Manual] or the corresponding man
-pages.
-
-[[abfdw]][[GSPLG00035]][[default-jms-host]]
-
-Default JMS Host
-++++++++++++++++
-
-You can specify the default JMS Host in the Administration Console Java
-Message Service page. If the Java Message Service type is LOCAL,
-GlassFish Server starts the default JMS host when the GlassFish Server
-instance starts. If the Java Message Service type is EMBEDDED, the
-default JMS host is started lazily when needed.
-
-In REMOTE mode, to use a Message Queue broker cluster, delete the
-default JMS host, then add all the Message Queue brokers in the cluster
-as JMS hosts. In this case, the default JMS host becomes the first JMS
-host in the JMS host list.
-
-You can also explicitly set the default JMS host to one of the JMS
-hosts. When the GlassFish Server uses a Message Queue cluster, the
-default JMS host executes Message Queue-specific commands. For example,
-when a physical destination is created for a Message Queue broker
-cluster, the default JMS host executes the command to create the
-physical destinations, but all brokers in the cluster use the physical
-destination.
-
-[[abfdx]][[GSPLG00069]][[example-deployment-scenarios]]
-
-Example Deployment Scenarios
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To accommodate your messaging needs, modify the Java Message Service and
-JMS host list to suit your deployment, performance, and availability
-needs. The following sections describe some typical scenarios.
-
-For best availability, deploy Message Queue brokers and GlassFish
-Servers on different machines, if messaging needs are not just with
-GlassFish Server. Another option is to run a GlassFish Server instance
-and a Message Queue broker instance on each machine until there is
-sufficient messaging capacity.
-
-[[abfdy]][[GSPLG00036]][[default-deployment]]
-
-Default Deployment
-++++++++++++++++++
-
-Installing the GlassFish Server automatically creates a domain
-administration server (DAS). By default, the Java Message Service type
-for the DAS is EMBEDDED. So, starting the DAS also starts its default
-Message Queue broker.
-
-Creating a new domain also creates a new broker. By default, when you
-add a stand-alone server instance or a cluster to the domain, its Java
-Message Service is configured as EMBEDDED and its default JMS host is
-the broker started by the DAS.
-
-[[abfdz]][[GSPLG00037]][[using-a-message-queue-broker-cluster-with-a-glassfish-server-cluster]]
-
-Using a Message Queue Broker Cluster with a GlassFish Server Cluster
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-In EMBEDDED or LOCAL mode, when a GlassFish Server is configured, a
-Message Queue broker cluster is auto-configured with each GlassFish
-Server instance associated with a Message Queue broker instance.
-
-In REMOTE mode, to configure a GlassFish Server cluster to use a Message
-Queue broker cluster, add all the Message Queue brokers as JMS hosts in
-the GlassFish Server's Java Message Service. Any JMS connection
-factories created and MDBs deployed then uses the JMS configuration
-specified.
-
-[[abfeb]][[GSPLG00038]][[specifying-an-application-specific-message-queue-broker-cluster]]
-
-Specifying an Application-Specific Message Queue Broker Cluster
-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-In some cases, an application may need to use a different Message Queue
-broker cluster than the one used by the GlassFish Server cluster. To do
-so, use the `AddressList` property of a JMS connection factory or the
-`activation-config` element in an MDB deployment descriptor to specify
-the Message Queue broker cluster.
-
-For more information about configuring connection factories, see
-"link:../administration-guide/jms.html#GSADG00598[Administering JMS Connection Factories and
-Destinations]" in GlassFish Server Open Source Edition Administration
-Guide. For more information about MDBs, see "link:../application-development-guide/ejb.html#GSDVG00149[Using
-Message-Driven Beans]" in GlassFish Server Open Source Edition
-Application Development Guide.
-
-[[abfec]][[GSPLG00039]][[application-clients]]
-
-Application Clients
-+++++++++++++++++++
-
-When an application client or standalone application accesses a JMS
-administered object for the first time, the client JVM retrieves the
-Java Message Service configuration from the server. Further changes to
-the JMS service will not be available to the client JVM until it is
-restarted.
diff --git a/docs/deployment-planning-guide/src/main/jbake/content/preface.adoc b/docs/deployment-planning-guide/src/main/jbake/content/preface.adoc
deleted file mode 100644
index a1ab707..0000000
--- a/docs/deployment-planning-guide/src/main/jbake/content/preface.adoc
+++ /dev/null
@@ -1,331 +0,0 @@
-type=page
-status=published
-title=Preface
-next=concepts.html
-prev=title.html
-~~~~~~
-Preface
-=======
-
-[[sthref2]][[preface]]
-
-Preface
--------
-
-[NOTE]
-========================================================================
-
-This documentation is part of the Java Enterprise Edition contribution 
-to the Eclipse Foundation and is not intended for use in relation to 
-Java Enterprise Edition or Orace GlassFish. The documentation is in the 
-process of being revised to reflect the new Jakarta EE branding. 
-Additional changes will be made as requirements and procedures evolve 
-for Jakarta EE. Where applicable, references to Java EE or Java 
-Enterprise Edition should be considered references to Jakarta EE. 
-
-Please see the Title page for additional license information.
-========================================================================
-
-The Deployment Planning Guide explains how to build a production
-deployment of GlassFish Server Open Source Edition.
-
-This preface contains information about and conventions for the entire
-GlassFish Server Open Source Edition (GlassFish Server) documentation
-set.
-
-GlassFish Server 4.0 is developed through the GlassFish project
-open-source community at `http://glassfish.java.net/`. The GlassFish
-project provides a structured process for developing the GlassFish
-Server platform that makes the new features of the Java EE platform
-available faster, while maintaining the most important feature of Java
-EE: compatibility. It enables Java developers to access the GlassFish
-Server source code and to contribute to the development of the GlassFish
-Server. The GlassFish project is designed to encourage communication
-between Oracle engineers and the community.
-
-[[sthref3]][[glassfish-server-documentation-set]]
-
-GlassFish Server Documentation Set
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The GlassFish Server documentation set describes deployment planning and
-system installation. For an introduction to GlassFish Server, refer to
-the books in the order in which they are listed in the following table.
-
-[width="100%",cols="<30%,<70%",options="header",]
-|=======================================================================
-|Book Title |Description
-|link:../release-notes/toc.html#GSRLN[Release Notes] |Provides late-breaking information about
-the software and the documentation and includes a comprehensive,
-table-based summary of the supported hardware, operating system, Java
-Development Kit (JDK), and database drivers.
-
-|link:../quick-start-guide/toc.html#GSQSG[Quick Start Guide] |Explains how to get started with the
-GlassFish Server product.
-
-|link:../installation-guide/toc.html#GSING[Installation Guide] |Explains how to install the software
-and its components.
-
-|link:../upgrade-guide/toc.html#GSUPG[Upgrade Guide] |Explains how to upgrade to the latest
-version of GlassFish Server. This guide also describes differences
-between adjacent product releases and configuration options that can
-result in incompatibility with the product specifications.
-
-|link:../deployment-planning-guide/toc.html#GSPLG[Deployment Planning Guide] |Explains how to build a
-production deployment of GlassFish Server that meets the requirements of
-your system and enterprise.
-
-|link:../administration-guide/toc.html#GSADG[Administration Guide] |Explains how to configure, monitor,
-and manage GlassFish Server subsystems and components from the command
-line by using the link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`] utility. Instructions for
-performing these tasks from the Administration Console are provided in
-the Administration Console online help.
-
-|link:../security-guide/toc.html#GSSCG[Security Guide] |Provides instructions for configuring and
-administering GlassFish Server security.
-
-|link:../application-deployment-guide/toc.html#GSDPG[Application Deployment Guide] |Explains how to assemble and
-deploy applications to the GlassFish Server and provides information
-about deployment descriptors.
-
-|link:../application-development-guide/toc.html#GSDVG[Application Development Guide] |Explains how to create and
-implement Java Platform, Enterprise Edition (Java EE platform)
-applications that are intended to run on the GlassFish Server. These
-applications follow the open Java standards model for Java EE components
-and application programmer interfaces (APIs). This guide provides
-information about developer tools, security, and debugging.
-
-|link:../embedded-server-guide/toc.html#GSESG[Embedded Server Guide] |Explains how to run applications in
-embedded GlassFish Server and to develop applications in which GlassFish
-Server is embedded.
-
-|link:../ha-administration-guide/toc.html#GSHAG[High Availability Administration Guide] |Explains how to
-configure GlassFish Server to provide higher availability and
-scalability through failover and load balancing.
-
-|link:../performance-tuning-guide/toc.html#GSPTG[Performance Tuning Guide] |Explains how to optimize the
-performance of GlassFish Server.
-
-|link:../troubleshooting-guide/toc.html#GSTSG[Troubleshooting Guide] |Describes common problems that you
-might encounter when using GlassFish Server and explains how to solve
-them.
-
-|link:../error-messages-reference/toc.html#GSEMR[Error Message Reference] |Describes error messages that you
-might encounter when using GlassFish Server.
-
-|link:../reference-manual/toc.html#GSRFM[Reference Manual] |Provides reference information in man
-page format for GlassFish Server administration commands, utility
-commands, and related concepts.
-
-|link:../../openmq/mq-release-notes/toc.html#GMRLN[Message Queue Release Notes] |Describes new features,
-compatibility issues, and existing bugs for Open Message Queue.
-
-|link:../../openmq/mq-tech-over/toc.html#GMTOV[Message Queue Technical Overview] |Provides an introduction
-to the technology, concepts, architecture, capabilities, and features of
-the Message Queue messaging service.
-
-|link:../../openmq/mq-admin-guide/toc.html#GMADG[Message Queue Administration Guide] |Explains how to set up
-and manage a Message Queue messaging system.
-
-|link:../../openmq/mq-dev-guide-jmx/toc.html#GMJMG[Message Queue Developer's Guide for JMX Clients] |Describes
-the application programming interface in Message Queue for
-programmatically configuring and monitoring Message Queue resources in
-conformance with the Java Management Extensions (JMX).
-
-|link:../../openmq/mq-dev-guide-java/toc.html#GMJVG[Message Queue Developer's Guide for Java Clients] |Provides
-information about concepts and procedures for developing Java messaging
-applications (Java clients) that work with GlassFish Server.
-
-|link:../../openmq/mq-dev-guide-c/toc.html#GMCCG[Message Queue Developer's Guide for C Clients] |Provides
-programming and reference information for developers working with
-Message Queue who want to use the C language binding to the Message
-Queue messaging service to send, receive, and process Message Queue
-messages.
-|=======================================================================
-
-
-[[GSPLG00011]][[giprl]]
-
-
-[[related-documentation]]
-Related Documentation
-~~~~~~~~~~~~~~~~~~~~~
-
-The following tutorials explain how to develop Java EE applications:
-
-* http://docs.oracle.com/javaee/7/firstcup/doc/home.html[Your First Cup:
-An Introduction to the Java EE Platform]
-(`http://docs.oracle.com/javaee/7/firstcup/doc/home.html`). For beginning
-Java EE programmers, this short tutorial explains the entire process for
-developing a simple enterprise application. The sample application is a
-web application that consists of a component that is based on the
-Enterprise JavaBeans specification, a JAX-RS web service, and a
-JavaServer Faces component for the web front end.
-* http://docs.oracle.com/javaee/7/tutorial/doc/home.html[The Java EE 7
-Tutorial] (`http://docs.oracle.com/javaee/7/tutorial/doc/home.html`).
-This comprehensive tutorial explains how to use Java EE 7 platform
-technologies and APIs to develop Java EE applications.
-
-Javadoc tool reference documentation for packages that are provided with
-GlassFish Server is available as follows.
-
-* The API specification for version 7 of Java EE is located at
-`http://docs.oracle.com/javaee/7/api/`.
-* The API specification for GlassFish Server 4.0, including Java EE 7
-platform packages and nonplatform packages that are specific to the
-GlassFish Server product, is located at
-`http://glassfish.java.net/nonav/docs/v3/api/`.
-
-Additionally, the
-http://www.oracle.com/technetwork/java/javaee/tech/index.html[Java EE
-Specifications]
-(`http://www.oracle.com/technetwork/java/javaee/tech/index.html`) might
-be useful.
-
-For information about creating enterprise applications in the NetBeans
-Integrated Development Environment (IDE), see the
-http://www.netbeans.org/kb/[NetBeans Documentation, Training & Support
-page] (`http://www.netbeans.org/kb/`).
-
-For information about the Java DB database for use with the GlassFish
-Server, see the
-http://www.oracle.com/technetwork/java/javadb/overview/index.html[Java
-DB product page]
-(`http://www.oracle.com/technetwork/java/javadb/overview/index.html`).
-
-The Java EE Samples project is a collection of sample applications that
-demonstrate a broad range of Java EE technologies. The Java EE Samples
-are bundled with the Java EE Software Development Kit (SDK) and are also
-available from the http://glassfish-samples.java.net/[Java EE Samples
-project page] (`http://glassfish-samples.java.net/`).
-
-[[GSPLG00013]][[fwbkx]]
-
-
-[[typographic-conventions]]
-Typographic Conventions
-~~~~~~~~~~~~~~~~~~~~~~~
-
-The following table describes the typographic changes that are used in
-this book.
-
-[width="100%",cols="<14%,<37%,<49%",options="header",]
-|=======================================================================
-|Typeface |Meaning |Example
-|`AaBbCc123` |The names of commands, files, and directories, and
-onscreen computer output a|
-Edit your `.login` file.
-
-Use `ls` `a` to list all files.
-
-`machine_name% you have mail.`
-
-|`AaBbCc123` |What you type, contrasted with onscreen computer output a|
-`machine_name%` `su`
-
-`Password:`
-
-|AaBbCc123 |A placeholder to be replaced with a real name or value |The
-command to remove a file is `rm` filename.
-
-|AaBbCc123 |Book titles, new terms, and terms to be emphasized (note
-that some emphasized items appear bold online) a|
-Read Chapter 6 in the User's Guide.
-
-A cache is a copy that is stored locally.
-
-Do not save the file.
-
-|=======================================================================
-
-
-[[GSPLG00014]][[fquvc]]
-
-
-[[symbol-conventions]]
-Symbol Conventions
-~~~~~~~~~~~~~~~~~~
-
-The following table explains symbols that might be used in this book.
-
-[width="100%",cols="<10%,<26%,<28%,<36%",options="header",]
-|=======================================================================
-|Symbol |Description |Example |Meaning
-|`[ ]` |Contains optional arguments and command options. |`ls [-l]` |The
-`-l` option is not required.
-
-|`{ \| }` |Contains a set of choices for a required command option.
-|`-d {y\|n}` |The `-d` option requires that you use either the `y`
-argument or the `n` argument.
-
-|`${ }` |Indicates a variable reference. |`${com.sun.javaRoot}`
-|References the value of the `com.sun.javaRoot` variable.
-
-|- |Joins simultaneous multiple keystrokes. |Control-A |Press the
-Control key while you press the A key.
-
-|+ + |Joins consecutive multiple keystrokes. |Ctrl+A+N |Press the
-Control key, release it, and then press the subsequent keys.
-
-|> |Indicates menu item selection in a graphical user interface. |File >
-New > Templates |From the File menu, choose New. From the New submenu,
-choose Templates.
-|=======================================================================
-
-
-[[GSPLG00012]][[ghpfg]]
-
-
-[[default-paths-and-file-names]]
-Default Paths and File Names
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following table describes the default paths and file names that are
-used in this book.
-
-[width="100%",cols="<14%,<34%,<52%",options="header",]
-|=======================================================================
-|Placeholder |Description |Default Value
-|as-install + a|
-Represents the base installation directory for GlassFish Server.
-
-In configuration files, as-install is represented as follows:
-
-`${com.sun.aas.installRoot}`
-
- a|
-Installations on the Oracle Solaris operating system, Linux operating
-system, and Mac OS operating system:
-
-user's-home-directory`/glassfish3/glassfish`
-
-Installations on the Windows operating system:
-
-SystemDrive`:\glassfish3\glassfish`
-
-|as-install-parent + |Represents the parent of the base installation
-directory for GlassFish Server. a|
-Installations on the Oracle Solaris operating system, Linux operating
-system, and Mac operating system:
-
-user's-home-directory`/glassfish3`
-
-Installations on the Windows operating system:
-
-SystemDrive`:\glassfish3`
-
-|domain-root-dir + |Represents the directory in which a domain is
-created by default. |as-install`/domains/`
-
-|domain-dir + a|
-Represents the directory in which a domain's configuration is stored.
-
-In configuration files, domain-dir is represented as follows:
-
-`${com.sun.aas.instanceRoot}`
-
- |domain-root-dir`/`domain-name
-
-|instance-dir + |Represents the directory for a server instance.
-|domain-dir`/`instance-name
-|=======================================================================
diff --git a/docs/deployment-planning-guide/src/main/jbake/content/title.adoc b/docs/deployment-planning-guide/src/main/jbake/content/title.adoc
deleted file mode 100644
index 29b0091..0000000
--- a/docs/deployment-planning-guide/src/main/jbake/content/title.adoc
+++ /dev/null
@@ -1,46 +0,0 @@
-type=page
-status=published
-title=Eclipse GlassFish Server Deployment Planning Guide, Release 5.1
-next=preface.html
-prev=lot.html
-~~~~~~
-Eclipse GlassFish Server Deployment Planning Guide, Release 5.1
-===============================================================
-
-[[eclipse-glassfish-server]]
-Eclipse GlassFish Server
-------------------------
-
-Deployment Planning Guide
-
-Release 5.1
-
-Contributed 2018, 2019
-
-This book explains how to build a production deployment of GlassFish
-Server Open Source Edition.
-
-[[sthref1]]
-
-'''''
-
-Eclipse GlassFish Server Deployment Planning Guide, Release
-5.1
-
-Copyright © 2013, 2019 Oracle and/or its affiliates. All rights reserved.
-
-This program and the accompanying materials are made available under the 
-terms of the Eclipse Public License v. 2.0, which is available at 
-http://www.eclipse.org/legal/epl-2.0. 
-
-SPDX-License-Identifier: EPL-2.0
-
-Oracle and Java are registered trademarks of Oracle and/or its 
-affiliates. Other names may be trademarks of their respective owners. 
-
-Intel and Intel Xeon are trademarks or registered trademarks of Intel 
-Corporation. All SPARC trademarks are used under license and are 
-trademarks or registered trademarks of SPARC International, Inc. AMD, 
-Opteron, the AMD logo, and the AMD Opteron logo are trademarks or 
-registered trademarks of Advanced Micro Devices. UNIX is a registered 
-trademark of The Open Group. 
diff --git a/docs/deployment-planning-guide/src/main/jbake/jbake.properties b/docs/deployment-planning-guide/src/main/jbake/jbake.properties
deleted file mode 100644
index 546d09c..0000000
--- a/docs/deployment-planning-guide/src/main/jbake/jbake.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-site.host=http://jbake.org
-render.tags=false
-render.sitemap=false
-render.archive=false
-render.feed=false
-asciidoctor.option.safe=0
-asciidoctor.attributes.export=true
diff --git a/docs/deployment-planning-guide/src/main/jbake/templates/footer.ftl b/docs/deployment-planning-guide/src/main/jbake/templates/footer.ftl
deleted file mode 100644
index 6f2b09e..0000000
--- a/docs/deployment-planning-guide/src/main/jbake/templates/footer.ftl
+++ /dev/null
@@ -1,46 +0,0 @@
-<#-- a footer template fragment included in the page template -->
-<hr />
-
-<table width="90%" id="bottom-nav" cellspacing="0" cellpadding="0">
-	<colgroup>
-		<col width="12%"/>
-		<col width="12%"/>
-		<col width="*"/>
-	</colgroup>
-	<tr>		
-	    <#if content.prev??>
-		<td align="left">
-		<a href="${content.prev}">
-			<span class=" vector-font"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Previous</span>
-		</a>
-		</td>
-		</#if>
-
-		<#if content.next??>
-		<td align="left">
-		<a href="${content.next}">
-			<span class="vector-font"><i class="fa fa-arrow-circle-right vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Next</span>
-		</a>
-		</td>
-		</#if>
-
-		<td align="right">
-		<a href="toc.html">
-			<span class="vector-font"><i class="fa fa-list vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Contents</span>
-		</a>
-		</td>
-	</tr>
-</table>
-
-<span id="copyright">
-        <img src="img/eclipse_foundation_logo_tiny.png" height="20px" alt="Eclipse Foundation Logo" align="top"/>&nbsp;            
-        <span >Copyright&nbsp;&copy;&nbsp;2019,&nbsp;Oracle&nbsp;and/or&nbsp;its&nbsp;affiliates.&nbsp;All&nbsp;rights&nbsp;reserved.</span>
-</span>
-
-<p align="center" class="beta">${config.status!}</p>
-
-</body>
-</html>
diff --git a/docs/deployment-planning-guide/src/main/jbake/templates/header.ftl b/docs/deployment-planning-guide/src/main/jbake/templates/header.ftl
deleted file mode 100644
index 82ebb36..0000000
--- a/docs/deployment-planning-guide/src/main/jbake/templates/header.ftl
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html>
-<#-- a header template fragment included in the page template -->
-<html lang="en">
-  <head>
-    <meta charset="utf-8"/>
-    <title><#if (content.title)??><#escape x as x?xml>${content.title}</#escape></#if></title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <link href="<#if (content.rootpath)??>${content.rootpath}<#else></#if>css/style.css" rel="stylesheet">
-    <script src="https://use.fontawesome.com/96c4d89611.js"></script>
-  </head>
-  <body>
-<table id="doc-title" cellspacing="0" cellpadding="0">
-  <tr>
-  <td align="left" valign="top">
-  <b>${content.title}</b><br />
-      <p class="beta">${config.status!}</p>
-  </td>
-  </tr>
-</table>
-<hr />
-
-<table width="90%" id="top-nav" cellspacing="0" cellpadding="0">
-	<colgroup>
-		<col width="12%"/>
-		<col width="12%"/>
-		<col width="*"/>
-	</colgroup>
-	<tr>
-	    <#if content.prev??>
-		<td align="left">
-		<a href="${content.prev}">
-			<span class="vector-font"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Previous</span>
-		</a>
-		</td>
-	    </#if>
-
-	    <#if content.next??>
-		<td align="left">
-		<a href="${content.next}">
-			<span class=" vector-font"><i class="fa fa-arrow-circle-right vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Next</span>
-		</a>
-		</td>
-	    </#if>
-
-		<td align="right">
-		<a href="toc.html">
-			<span class=" vector-font"><i class="fa fa-list vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Contents</span>
-		</a>
-		</td>
-	</tr>
-</table>
-
diff --git a/docs/deployment-planning-guide/src/main/jbake/templates/menu.ftl b/docs/deployment-planning-guide/src/main/jbake/templates/menu.ftl
deleted file mode 100644
index 888c03d..0000000
--- a/docs/deployment-planning-guide/src/main/jbake/templates/menu.ftl
+++ /dev/null
@@ -1 +0,0 @@
-<#-- a menu bar template fragment included in the page template -->
\ No newline at end of file
diff --git a/docs/deployment-planning-guide/src/main/jbake/templates/page.ftl b/docs/deployment-planning-guide/src/main/jbake/templates/page.ftl
deleted file mode 100644
index eca51db..0000000
--- a/docs/deployment-planning-guide/src/main/jbake/templates/page.ftl
+++ /dev/null
@@ -1,8 +0,0 @@
-<#-- a top level page layout template -->
-
-<#include "header.ftl">
-<#include "menu.ftl">
-
-${content.body}
-
-<#include "footer.ftl">
\ No newline at end of file
diff --git a/docs/distribution/pom.xml b/docs/distribution/pom.xml
index a42e34b..6cc42a8 100644
--- a/docs/distribution/pom.xml
+++ b/docs/distribution/pom.xml
@@ -22,9 +22,8 @@
     <parent>
         <groupId>org.glassfish.docs</groupId>
         <artifactId>docs</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
-    <groupId>org.glassfish.docs</groupId>
     <artifactId>distribution</artifactId>
     <packaging>jar</packaging>
     <name>Eclipse GlassFish Documentation Distribution</name>
@@ -49,14 +48,10 @@
                             <goal>unpack-dependencies</goal>
                         </goals>
                         <configuration>
-                            <includeGroupIds>
-                                org.glassfish.docs
-                            </includeGroupIds>
+                            <includeGroupIds>org.glassfish.docs</includeGroupIds>
                             <includeTypes>jar</includeTypes>
                             <excludes>META-INF/**</excludes>
-                            <outputDirectory>
-                                ${project.build.directory}/classes
-                            </outputDirectory>
+                            <outputDirectory>${project.build.directory}/classes</outputDirectory>
                         </configuration>
                     </execution>
                     <execution>
@@ -66,13 +61,9 @@
                             <goal>copy-dependencies</goal>
                         </goals>
                         <configuration>
-                            <includeGroupIds>
-                                org.glassfish.docs
-                            </includeGroupIds>
+                            <includeGroupIds>org.glassfish.docs</includeGroupIds>
                             <includeTypes>pdf</includeTypes>
-                            <outputDirectory>
-                                ${project.build.directory}/classes
-                            </outputDirectory>
+                            <outputDirectory>${project.build.directory}/classes</outputDirectory>
                             <stripVersion>true</stripVersion>
                         </configuration>
                     </execution>
diff --git a/docs/embedded-server-guide/README.md b/docs/embedded-server-guide/README.md
deleted file mode 100644
index a3ec2b6..0000000
--- a/docs/embedded-server-guide/README.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# A JBake project template
-
-## About JBake
-
-JBake is a static site generator, it's inspired from jekyll and written
-in java.  The basic idea is to have templates for the structure of the
-page, and the body generated from asciidoc content.
-
-## Pre requisites
-
-- Maven
-- JDK8+
-
-Deploying to Github will require password less authentication.
-
-This is done by exporting your SSH public key into your Github account.
-
-## Build the site locally
-
-The site is generated under target/staging.
-
-Open file:///PATH_TO_PROJECT_DIR/target/staging in a browser to view the site.
-
-```
-mvn generate-resources
-```
-
-Or you can invoke the JBake plugin directly.
-
-```
-mvn jbake:build
-```
-
-### Rebuild the site on changes
-
-```
-mvn jbake:watch
-```
-
-If you keep this command running, changes to the sources will be
-detected and the site will be rendered incrementally.
-
-This is convenient when writing content.
-
-### Serve the site locally
-
-```
-mvn jbake:serve
-```
-
-If a webserver is required (e.g. absolute path are used), this command
-will start a webserver (jetty) at http://localhost:8820.  It will also
-watch for changes and rebuild incrementally.
-
-## Deploy the site to Github Pages
-
-```
-mvn deploy
-```
-
-## Produce a zip file for download
-
-To produce a zip file containing the generated html files, use:
-
-```
-mvn package
-```
-
-When making a release on GitHub, this zip file should be added to the release.
-
-## Links
-
-- [JBake maven plugin documentation](https://github.com/Blazebit/jbake-maven-plugin)
-- [JBake documentation](http://jbake.org/docs/2.5.1)
-- [Freemarker documentation](http://freemarker.org/docs)
-- [AsciiDoc User Guide](http://asciidoc.org/userguide.html)
-- [Asciidoctor quick reference](http://asciidoctor.org/docs/asciidoc-syntax-quick-reference)
diff --git a/docs/embedded-server-guide/pom.xml b/docs/embedded-server-guide/pom.xml
index e39a27a..7132bcf 100644
--- a/docs/embedded-server-guide/pom.xml
+++ b/docs/embedded-server-guide/pom.xml
@@ -22,11 +22,10 @@
     <parent>
         <groupId>org.glassfish.docs</groupId>
         <artifactId>parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../parent</relativePath>
     </parent>
-    <groupId>org.glassfish.docs</groupId>
     <artifactId>embedded-server-guide</artifactId>
     <packaging>jar</packaging>
-    <name>Eclipse GlassFish Server Embedded Server Guide, Release 5.1</name>
+    <name>Eclipse GlassFish Server Embedded Server Guide, Release 7</name>
 </project>
diff --git a/docs/embedded-server-guide/src/main/asciidoc/embedded-server-guide.adoc b/docs/embedded-server-guide/src/main/asciidoc/embedded-server-guide.adoc
new file mode 100644
index 0000000..679f1f5
--- /dev/null
+++ b/docs/embedded-server-guide/src/main/asciidoc/embedded-server-guide.adoc
@@ -0,0 +1,1988 @@
+type=page
+status=published
+title={productName} 7 Embedded Server Guide
+prev=preface.html
+~~~~~~
+
+= {productName} 7 Embedded Server Guide
+
+[[GSESG00001]][[gjldt]]
+
+
+[[glassfish-server-open-source-edition-embedded-server-guide]]
+== 1 {productName} 7 Embedded Server Guide
+
+This document explains how to run applications in embedded {productName} and to develop applications in which
+{productName} is embedded. This document is for software developers
+who are developing applications to run in embedded {productName}. The
+ability to program in the Java language is assumed.
+
+The following topics are addressed here:
+
+* link:#giidt[Introduction to Embedded {productName}]
+* link:#gkubb[Embedded {productName} File System]
+* link:#giijw[Including the {productName} Embedded Server API in Applications]
+* link:#gijhs[Testing Applications with the Maven Plug-in for Embedded {productName}]
+* link:#gjlde[Using the EJB 3.1 Embeddable API with Embedded {productName}]
+* link:#gjlfe[Changing Log Levels in Embedded {productName}]
+* link:#gksmw[Default Java Persistence Data Source for Embedded {productName}]
+* link:#gihxf[Restrictions for Embedded {productName}]
+
+[[giidt]][[GSESG00035]][[introduction-to-embedded-glassfish-server]]
+
+=== Introduction to Embedded {productName}
+
+Embedded {productName} enables you to use
+{productName} as a library. Embedded {productName} also enables
+you to run {productName} inside any Virtual Machine for the Java
+platform (Java Virtual Machine or JVMmachine).
+
+No installation or configuration of embedded {productName} is
+required. The ability to run {productName} inside applications
+without installation or configuration simplifies the process of bundling
+{productName} with applications.
+
+
+[NOTE]
+====
+Embedded {productName} does not run on the Java Platform, Micro Edition (Java ME platform).
+====
+
+You can use embedded {productName} in the following ways:
+
+* With the Embedded Server API (see link:#giijw[Including the {productName} Embedded Server API in Applications])
+* With the Maven Plug-in (see link:#gijhs[Testing Applications with the
+Maven Plug-in for Embedded {productName}])
+* With the EJB 3.1 Embeddable API (see link:#gjlde[Using the EJB 3.1
+Embeddable API with Embedded {productName}])
+
+Embedded {productName} provides a plug-in for
+http://maven.apache.org/[Apache Maven] (`http://maven.apache.org/`).
+This plug-in simplifies the testing of applications by enabling you to
+build an application and run it with {productName} on a single
+system. Testing and debugging are simplified because the need for an
+installed and configured {productName} is eliminated. Therefore, you
+can run unit tests automatically in every build.
+
+
+[NOTE]
+====
+For information on how to embed {productName} in an OSGi environment,
+see the link:add-on-component-development-guide.html#GSACG[{productName} Add-On
+Component Development Guide].
+====
+
+
+[[gkubb]][[GSESG00036]][[embedded-glassfish-server-file-system]]
+
+=== Embedded {productName} File System
+
+The following Embedded {productName} directories and files are
+important if you are referencing a nonembedded installation of {productName}:
+
+* link:#gikqf[Installation Root Directory]
+* link:#gikvf[Instance Root Directory]
+* link:#giiak[The `domain.xml` File]
+
+[[gikqf]][[GSESG00054]][[installation-root-directory]]
+
+==== Installation Root Directory
+
+The installation root directory, represented as as-install, is the
+parent of the directory that embedded {productName} uses for
+configuration files. This directory corresponds to the base directory
+for an installation of {productName}. Configuration files are
+contained in the following directories in the base directory for an
+installation of {productName}:
+
+* `domains`
+* `lib`
+
+Specify the installation root directory only if you have a valid
+nonembedded {productName} installation and are using
+`glassfish-embedded-static-shell.jar`.
+
+[[gikvf]][[GSESG00055]][[instance-root-directory]]
+
+==== Instance Root Directory
+
+The instance root directory, represented as domain-dir, is the parent
+directory of a server instance directory. Embedded {productName} uses the server instance directory for domain
+configuration files.
+
+Specify the instance root directory only if you have a valid nonembedded
+{productName} domain directory and are using
+`glassfish-embedded-static-shell.jar`.
+
+
+[NOTE]
+====
+If you have valid nonembedded {productName} as-install and domain-dir
+directories, specify both in the `BootstrapProperties` and
+`GlassFishProperties` classes respectively as described in
+link:#gihyr[Creating and Configuring an Embedded {productName}].
+====
+
+
+If domain-dir is not specified, {productName} creates a directory
+named ``gfembed``random-number``tmp`` in a temporary directory, where
+random-number is a randomly generated 19-digit number. {productName}
+then copies configuration files into this directory. The temporary
+directory is the value of the system property `java.io.tmpdir`. You can
+override this value by specifying the `glassfish.embedded.tmpdir`
+property in the `GlassFishProperties` class or as a system property.
+
+[[giiak]][[GSESG00056]][[the-domain.xml-file]]
+
+==== The `domain.xml` File
+
+Using an existing `domain.xml` file avoids the need to configure
+embedded {productName} programmatically in your application. Your
+application obtains domain configuration data from an existing
+`domain.xml` file. You can create this file by using the administrative
+interfaces of an installation of nonembedded {productName}. To
+specify an existing `domain.xml` file, invoke the `setConfigFileURI`
+method of the `GlassFishProperties` class as described in
+link:#gihyr[Creating and Configuring an Embedded {productName}].
+
+
+[NOTE]
+====
+The built-in `domain.xml` file used by default by Embedded {productName} can be downloaded from
+`http://embedded-glassfish.java.net/domain.xml`. You can customize this
+file and pass it in using the `setConfigFileURI` method while creating
+an Embedded {productName}.
+====
+
+
+[[giijw]][[GSESG00037]][[including-the-glassfish-server-embedded-server-api-in-applications]]
+
+=== Including the {productName} Embedded Server API in Applications
+
+{productName} provides an application programming
+interface (API) for developing applications in which {productName} is
+embedded. For details, see the `org.glassfish.embeddable` packages at
+`http://embedded-glassfish.java.net/nonav/apidocs/`.
+
+The following topics are addressed here:
+
+* link:#giide[Setting the Class Path]
+* link:#giiky[Creating, Starting, and Stopping Embedded {productName}]
+* link:#giigc[Deploying and Undeploying an Application in an Embedded
+{productName}]
+* link:#gjldy[Running `asadmin` Commands Using the {productName}
+Embedded Server API]
+* link:#gikrt[Sample Applications]
+
+[[giide]][[GSESG00057]][[setting-the-class-path]]
+
+==== Setting the Class Path
+
+To enable your applications to locate the class libraries for embedded
+{productName}, add one of the following JAR files to your class path:
+
+`glassfish-embedded-nucleus.jar`::
+  Corresponds to the nucleus distribution. Download this file from
+  `http://download.java.net/maven/glassfish/org/glassfish/extras/glassfish-embedded-nucleus/`.
+`glassfish-embedded-web.jar`::
+  Contains classes needed for deploying Jakarta EE web applications.
+  Download this file from
+  `http://download.java.net/maven/glassfish/org/glassfish/extras/glassfish-embedded-web/`.
+`glassfish-embedded-all.jar`::
+  Contains classes needed for deploying all Jakarta EE application types.
+  Download this file from
+  `http://download.java.net/maven/glassfish/org/glassfish/extras/glassfish-embedded-all/`.
+`glassfish-embedded-static-shell.jar`::
+  Contains references to classes needed for deploying all Jakarta EE
+  application types. Must be used with a nonembedded installation of
+  {productName}. Reference this file from the
+  as-install``/lib/embedded`` directory of a nonembedded {productName}
+  installation. Do not move this file or it will not work. For an
+  explanation of as-install, see link:#gikqf[Installation Root
+  Directory].
+
+
+[NOTE]
+====
+{productName} only supports use of the
+`glassfish-embedded-static-shell.jar` file. The other files are part of
+{productName} and are offered without official support.
+====
+
+
+In addition, add to the class path any other JAR files or classes upon
+which your applications depend. For example, if an application uses a
+database other than Java DB, include the Java DataBase Connectivity
+(JDBC) driver JAR files in the class path.
+
+[[giiky]][[GSESG00058]][[creating-starting-and-stopping-embedded-glassfish-server]]
+
+==== Creating, Starting, and Stopping Embedded {productName}
+
+Before you can run applications, you must set up and run the embedded
+{productName}.
+
+The following topics are addressed here:
+
+* link:#gihyr[Creating and Configuring an Embedded {productName}]
+* link:#gihyz[Running an Embedded {productName}]
+
+[[gihyr]][[GSESG00043]][[creating-and-configuring-an-embedded-glassfish-server]]
+
+===== Creating and Configuring an Embedded {productName}
+
+To create and configure an embedded {productName}, perform these
+tasks:
+
+1. Instantiate the `org.glassfish.embeddable.BootstrapProperties`
+class.
+2. Invoke any methods for configuration settings that you require. This
+is optional.
+3. Invoke the `GlassFishRuntime.bootstrap()` or
+`GlassFishRuntime.bootstrap(BootstrapProperties)` method to create a
+`GlassFishRuntime` object.
+4. Instantiate the `org.glassfish.embeddable.GlassFishProperties`
+class.
+5. Invoke any methods for configuration settings that you require. This
+is optional.
+6. Invoke the `glassfishRuntime.newGlassFish(GlassFishProperties)`
+method to create a `GlassFish` object.
+
+The methods of the `BootstrapProperties` class for setting the server
+configuration are listed in the following table. The default value of
+each configuration setting is also listed.
+
+[[sthref4]][[gksir]]
+
+Table 1-1 Methods of the `BootstrapProperties` Class
+
+[width="100%",cols="<29%,<33%,<38%",options="header",]
+|===
+|Purpose |Method |Default Value
+|References an existing link:#gikqf[Installation Root Directory], also called as-install
+a|[source]
+----
+setInstallRoot(String as-install)
+----
+
+|None. If `glassfish-embedded-static-shell.jar` is used, the
+link:#gikqf[Installation Root Directory] is automatically determined and
+need not be specified.
+|===
+
+
+The methods of the `GlassFishProperties` class for setting the server
+configuration are listed in the following table. The default value of
+each configuration setting is also listed.
+
+[[sthref5]][[gkskl]]
+
+Table 1-2 Methods of the `GlassFishProperties` Class
+
+[width="100%",cols="<24%,<37%,<39%",options="header",]
+|===
+|Purpose |Method |Default Value
+|References an existing link:#gikvf[Instance Root Directory], also
+called domain-dir
+a|
+[source]
+----
+setInstanceRoot(String domain-dir)
+----
+
+a|
+In order of precedence:
+
+* `glassfish.embedded.tmpdir` property value specified in `GlassFishProperties` object
+* `glassfish.embedded.tmpdir` system property value
+* `java.io.tmp` system property value
+* as-install``/domains/domain1`` if a nonembedded installation is referenced
+
+|Creates a new or references an existing configuration file
+a|
+[source]
+----
+setConfigFileURI(String configFileURI)
+----
+a|In order of precedence:
+
+* domain-dir``/config/domain.xml`` if domain-dir was set using `setInstanceRoot`
+* built-in embedded `domain.xml`
+
+|Specifies whether the configuration file is read-only
+a|
+[source]
+----
+setConfigFileReadOnly(boolean readOnly)
+----
+|`true`
+
+|Sets the port on which Embedded {productName} listens.
+|`setPort`(String networkListener, int port)
+|none
+|===
+
+[NOTE]
+====
+Do not use `setPort` if you are using `setInstanceRoot` or `setConfigFileURI`.
+====
+
+
+[[GSESG00005]][[gikmz]]
+Example 1-1 Creating an Embedded {productName}
+
+This example shows code for creating an Embedded {productName}.
+
+[source,java]
+----
+...
+import org.glassfish.embeddable.*;
+...
+    GlassFish glassfish = GlassFishRuntime.bootstrap().newGlassFish();
+    glassfish.start();
+...
+----
+
+[[GSESG00006]][[gksjo]]
+Example 1-2 Creating an Embedded {productName} with configuration
+customizations
+
+This example shows code for creating an Embedded {productName} using
+the existing domain-dir
+`C:\samples\test\applicationserver\domains\domain1`.
+
+[source,java]
+----
+// ...
+import org.glassfish.embeddable.*;
+    // ...
+    BootstrapProperties bootstrapProperties = new BootstrapProperties();
+    bootstrapProperties.setInstallRoot("C:\\samples\\test\\applicationserver");
+    GlassFishRuntime glassfishRuntime = GlassFishRuntime.bootstrap(bootstrapProperties);
+
+    GlassFishProperties glassfishProperties = new GlassFishProperties();
+    glassfishProperties.setInstanceRoot("C:\\samples\\test\\applicationserver\\domains\\domain1");
+    GlassFish glassfish = glassfishRuntime.newGlassFish(glassfishProperties);
+
+    glassfish.start();
+    // ...
+----
+
+[[gihyz]][[GSESG00044]][[running-an-embedded-glassfish-server]]
+
+===== Running an Embedded {productName}
+
+After you create an embedded {productName} as described in
+link:#gihyr[Creating and Configuring an Embedded {productName}], you
+can perform operations such as:
+
+* link:#gjkxx[Setting the Port of an Embedded {productName} From an Application]
+* link:#gihzg[Starting an Embedded {productName} From an Application]
+* link:#gihzy[Stopping an Embedded {productName} From an Application]
+
+[[gjkxx]][[GSESG00002]][[setting-the-port-of-an-embedded-glassfish-server-from-an-application]]
+
+Setting the Port of an Embedded {productName} From an Application
+
+You must set the server's HTTP or HTTPS port. If you do not set the
+port, your application fails to start and throws an exception. You can
+set the port directly or indirectly.
+
+[NOTE]
+====
+Do not use `setPort` if you are using `setInstanceRoot` or
+`setConfigFileURI`. These methods set the port indirectly.
+====
+
+
+* To set the port directly, invoke the `setPort` method of the
+`GlassFishProperties` object.
+* To set the port indirectly, use a `domain.xml` file that sets the
+port. For more information, see link:#giiak[The `domain.xml` File].
+
+[[GSESG00007]][[gjkxc]]
+Example 1-3 Setting the port of an Embedded {productName}
+
+This example shows code for setting the port of an embedded {productName}.
+
+[source,java]
+----
+...
+import org.glassfish.embeddable.*;
+...
+    GlassFishProperties glassfishProperties = new GlassFishProperties();
+    glassfishProperties.setPort("http-listener", 8080);
+    glassfishProperties.setPort("https-listener", 8181);
+...
+----
+
+[[gihzg]][[GSESG00003]][[starting-an-embedded-glassfish-server-from-an-application]]
+
+Starting an Embedded {productName} From an Application
+
+To start an embedded {productName}, invoke the `start` method of the
+`GlassFish` object.
+
+[[GSESG00008]][[gilry]]
+Example 1-4 Starting an Embedded {productName}
+
+This example shows code for setting the port and starting an embedded
+{productName}. This example also includes the code from
+link:#gikmz[Example 1-1] for creating a `GlassFish` object.
+
+[source,java]
+----
+...
+import org.glassfish.embeddable.*;
+...
+    GlassFishProperties glassfishProperties = new GlassFishProperties();
+    glassfishProperties.setPort("http-listener", 8080);
+    glassfishProperties.setPort("https-listener", 8181);
+    ...
+    GlassFish glassfish = GlassFishRuntime.bootstrap().newGlassFish(glassfishProperties);
+    glassfish.start();
+...
+----
+
+[[gihzy]][[GSESG00004]][[stopping-an-embedded-glassfish-server-from-an-application]]
+
+Stopping an Embedded {productName} From an Application
+
+The API for embedded {productName} provides a method for stopping an
+embedded server. Using this method enables your application to stop the
+server in an orderly fashion by performing any necessary cleanup steps
+before stopping the server, for example:
+
+* Undeploying deployed applications
+* Releasing any resources that your application uses
+
+To stop an embedded {productName}, invoke the `stop` method of an
+existing `GlassFish` object.
+
+[[GSESG00009]][[gilnz]]
+Example 1-5 Stopping an Embedded {productName}
+
+This example shows code for prompting the user to press the Enter key to
+stop an embedded {productName}. Code for creating a `GlassFish`
+object is not shown in this example. For an example of code for creating
+a `GlassFish` object, see link:#gikmz[Example 1-1].
+
+[source,java]
+----
+...
+import java.io.BufferedReader;
+...
+import org.glassfish.embeddable.*;
+...
+    System.out.println("Press Enter to stop server");
+        // wait for Enter
+    glassfish.stop(); // Stop Embedded GlassFish
+...
+----
+
+As an alternative, you can use the `dispose` method to stop an embedded
+{productName} and dispose of the temporary file system.
+
+[[giigc]][[GSESG00059]][[deploying-and-undeploying-an-application-in-an-embedded-glassfish-server]]
+
+==== Deploying and Undeploying an Application in an Embedded {productName}
+
+Deploying an application installs the files that comprise the
+application into Embedded {productName} and makes the application
+ready to run. By default, an application is enabled when it is deployed.
+
+The following topics are addressed here:
+
+* link:#gilrf[To Deploy an Application From an Archive File or a Directory]
+* link:#gilpm[Undeploying an Application]
+* link:#gjrcs[Creating a Scattered Archive]
+* link:#gkvgc[Creating a Scattered Enterprise Archive]
+
+For general information about deploying applications in {productName}, see the link:application-deployment-guide.html#GSDPG[{productName}
+Application Deployment Guide].
+
+[[gilrf]][[GSESG00021]][[to-deploy-an-application-from-an-archive-file-or-a-directory]]
+
+===== To Deploy an Application From an Archive File or a Directory
+
+An archive file contains the resources, deployment descriptor, and
+classes of an application. The content of the file must be organized in
+the directory structure that the Jakarta EE specifications define for the
+type of archive that the file contains. For more information, see
+"link:application-deployment-guide/deploying-applications.html#GSDPG00004[Deploying Applications]" in {productName} Application Deployment Guide.
+
+Deploying an application from a directory enables you to deploy an
+application without the need to package the application in an archive
+file. The contents of the directory must match the contents of the
+expanded Jakarta EE archive file as laid out by the {productName}. The
+directory must be accessible to the machine on which the deploying
+application runs. For more information about the requirements for
+deploying an application from a directory, see "link:application-deployment-guide/deploying-applications.html#GSDPG00043[To
+Deploy an Application or Module in a Directory Format]" in {productName} Application Deployment Guide.
+
+If some of the resources needed by an application are not under the
+application's directory, see link:#gjrcs[Creating a Scattered Archive].
+
+1. Instantiate the `java.io.File` class to represent the archive file or directory.
+
+2. Invoke the `getDeployer` method of the `GlassFish` object to get an
+instance of the `org.glassfish.embeddable.Deployer` class.
+
+3. Invoke the `deploy(File archive, String... params)` method of the
+instance of the `Deployer` object. +
+Specify the `java.io.File` class instance you created previously as the
+first method parameter. +
+For information about optional parameters you can set, see the
+descriptions of the
+link:reference-manual/deploy.html#GSRFM00114[`deploy`(1)] subcommand parameters.
+Simply quote each parameter in the method, for example `"--force=true"`.
+
+[[GSESG00010]][[gioph]]
+Example 1-6 Deploying an Application From an Archive File
+
+This example shows code for deploying an application from the archive
+file `c:\samples\simple.war` and setting the name, contextroot, and
+force parameters. This example also includes the code from
+link:#gikmz[Example 1-1] for creating `GlassFishProperties` and
+`GlassFish` objects.
+
+[source,java]
+----
+...
+import java.io.File;
+...
+import org.glassfish.embeddable.*;
+...
+    GlassFishProperties glassfishProperties = new GlassFishProperties();
+    glassfishProperties.setPort("http-listener", 8080);
+    glassfishProperties.setPort("https-listener", 8181);
+    ...
+    GlassFish glassfish = GlassFishRuntime.bootstrap().newGlassFish(glassfishProperties);
+    glassfish.start();
+    File war = new File("c:\\samples\\simple.war");
+    Deployer deployer = glassfish.getDeployer();
+    deployer.deploy(war, "--name=simple", "--contextroot=simple", "--force=true");
+    // deployer.deploy(war) can be invoked instead. Other parameters are optional.
+...
+----
+
+[[gilpm]][[GSESG00045]][[undeploying-an-application]]
+
+===== Undeploying an Application
+
+Undeploy an application when the application is no longer required to
+run in {productName}. For example, before stopping {productName},
+undeploy all applications that are running in {productName}.
+
+
+[NOTE]
+====
+If you reference a nonembedded {productName} installation using the
+`glassfish-embedded-static-shell.jar` file and do not undeploy your
+applications in the same server life cycle in which you deployed them,
+expanded archives for these applications remain under the
+domain-dir``/applications`` directory.
+====
+
+
+To undeploy an application, invoke the `undeploy` method of an existing
+`Deployer` object. In the method invocation, pass the name of the
+application as a parameter. This name is specified when the application
+is deployed.
+
+For information about optional parameters you can set, see the
+descriptions of the
+link:reference-manual/deploy.html#GSRFM00114[`deploy`(1)] command parameters.
+Simply quote each parameter in the method, for example
+`"--cascade=true"`.
+
+To undeploy all deployed applications, invoke the `undeployAll` method
+of an existing `EmbeddedDeployer` object. This method takes no
+parameters.
+
+[[GSESG00011]][[gilwu]]
+Example 1-7 Undeploying an Application
+
+This example shows code for undeploying the application that was
+deployed in link:#gioph[Example 1-6].
+
+[source,java]
+----
+...
+import org.glassfish.embeddable.*;
+...
+    deployer.undeploy(war, "--droptables=true", "--cascade=true");
+...
+----
+
+[[gjrcs]][[GSESG00046]][[creating-a-scattered-archive]]
+
+===== Creating a Scattered Archive
+
+Deploying a module from a scattered archive (WAR or JAR) enables you to
+deploy an unpackaged module whose resources, deployment descriptor, and
+classes are in any location. Deploying a module from a scattered archive
+simplifies the testing of a module during development, especially if all
+the items that the module requires are not available to be packaged.
+
+In a scattered archive, these items are not required to be organized in
+a specific directory structure. Therefore, you must specify the location
+of the module's resources, deployment descriptor, and classes when
+deploying the module.
+
+To create a scattered archive, perform these tasks:
+
+1. Instantiate the `org.glassfish.embeddable.archive.ScatteredArchive` class.
+2. Invoke the `addClassPath` and `addMetadata` methods if you require them.
+3. Invoke the `toURI` method to deploy the scattered archive.
+
+The methods of this class for setting the scattered archive
+configuration are listed in the following table. The default value of
+each configuration setting is also listed.
+
+[[sthref6]][[gjrdg]]
+
+Table 1-3 Constructors and Methods of the `ScatteredArchive` Class
+
+[width="100%",cols="<52%,<38%,<10%",options="header",]
+|===
+|Purpose |Method |Default Value
+|Creates and names a scattered archive
+a|[source,java]
+----
+ScatteredArchive(String name, ScatteredArchive.Type type)
+----
+
+|None
+
+|Creates and names a scattered archive based on a top-level directory.
+If the entire module is organized under the topDir, this is the only
+method necessary. The topDir can be null if other methods specify the
+remaining parts of the module.
+a|[source,java]
+----
+ScatteredArchive(String name, ScatteredArchive.Type type, File topDir)
+----
+
+|None
+
+|Adds a directory to the classes classpath
+a|[source,java]
+----
+addClassPath(File path)
+----
+
+|None
+
+|Adds a metadata locator
+a|[source,java]
+----
+addMetaData(File path)
+----
+
+|None
+
+|Adds and names a metadata locator
+a|[source,java]
+----
+addMetaData(File path, String name)
+----
+
+|None
+
+|Gets the deployable URI for this scattered archive a|
+[source,java]
+----
+toURI()
+----
+
+|None
+|===
+
+
+[[GSESG00012]][[gjrfq]]
+Example 1-8 Deploying an Application From a Scattered Archive
+
+This example shows code for creating a WAR file and using the
+`addClassPath` and `addMetadata` methods. This example also includes the
+code from link:#gioph[Example 1-6] for deploying an application from an
+archive file.
+
+[source,java]
+----
+...
+import java.io.File;
+...
+import org.glassfish.embeddable.*;
+...
+    GlassFishProperties glassfishProperties = new GlassFishProperties();
+    glassfishProperties.setPort("http-listener", 9090);
+    GlassFish glassfish = GlassFishRuntime.bootstrap().newGlassFish(glassfishProperties);
+    glassfish.start();
+    Deployer deployer = glassfish.getDeployer();
+    ScatteredArchive archive = new ScatteredArchive("testapp", ScatteredArchive.Type.WAR);
+    // target/classes directory contains complied servlets
+    archive.addClassPath(new File("target", "classes"));
+    // resources/sun-web.xml is the WEB-INF/sun-web.xml
+    archive.addMetadata(new File("resources", "sun-web.xml"));
+    // resources/web.xml is the WEB-INF/web.xml
+    archive.addMetadata(new File("resources", "web.xml"));
+    // Deploy the scattered web archive.
+    String appName = deployer.deploy(archive.toURI(), "--contextroot=hello");
+
+    deployer.undeploy(appName);
+    glassfish.stop();
+    glassfish.dispose();
+...
+----
+
+[[gkvgc]][[GSESG00047]][[creating-a-scattered-enterprise-archive]]
+
+===== Creating a Scattered Enterprise Archive
+
+Deploying an application from a scattered enterprise archive (EAR)
+enables you to deploy an unpackaged application whose resources,
+deployment descriptor, and classes are in any location. Deploying an
+application from a scattered archive simplifies the testing of an
+application during development, especially if all the items that the
+application requires are not available to be packaged.
+
+In a scattered archive, these items are not required to be organized in
+a specific directory structure. Therefore, you must specify the location
+of the application's resources, deployment descriptor, and classes when
+deploying the application.
+
+To create a scattered enterprise archive, perform these tasks:
+
+1. Instantiate the
+`org.glassfish.embeddable.archive.ScatteredEnterpriseArchive` class.
+2. Invoke the `addArchive` and `addMetadata` methods if you require
+them.
+3. Invoke the `toURI` method to deploy the scattered enterprise
+archive.
+
+The methods of this class for setting the scattered enterprise archive
+configuration are listed in the following table. The default value of
+each configuration setting is also listed.
+
+[[sthref7]][[gkvgb]]
+
+Table 1-4 Constructors and Methods of the `ScatteredEnterpriseArchive`
+Class
+
+[width="99%",cols="<42%,<48%,<10%",options="header",]
+|===
+|Purpose |Method |Default Value
+|Creates and names a scattered enterprise archive a|
+[source,java]
+----
+ScatteredEnterpriseArchive(String name)
+----
+
+ |None
+|Adds a module or library a|
+[source,java]
+----
+addArchive(File archive)
+----
+
+ |None
+|Adds a module or library a|
+[source,java]
+----
+addArchive(File archive, String name)
+----
+
+ |None
+|Adds a module or library a|
+[source,java]
+----
+addArchive(URI URI)
+----
+
+ |None
+|Adds a module or library a|
+[source,java]
+----
+addArchive(URI URI, String name)
+----
+
+ |None
+|Adds a metadata locator a|
+[source,java]
+----
+addMetaData(File path)
+----
+
+ |None
+|Adds and names a metadata locator a|
+[source,java]
+----
+addMetaData(File path, String name)
+----
+
+ |None
+|Gets the deployable URI for this scattered archive a|
+[source,java]
+----
+toURI()
+----
+
+ |None
+|===
+
+
+[[GSESG00013]][[gkvga]]
+Example 1-9 Deploying an Application From a Scattered Enterprise Archive
+
+This example shows code for creating an EAR file and using the
+`addArchive` and `addMetadata` methods. This example also includes code
+similar tolink:#gjrfq[Example 1-8] for creating a scattered archive.
+
+[source,java]
+----
+...
+import java.io.File;
+...
+import org.glassfish.embeddable.*;
+...
+    GlassFishProperties glassfishProperties = new GlassFishProperties();
+    glassfishProperties.setPort("http-listener", 9090);
+    GlassFish glassfish = GlassFishRuntime.bootstrap().newGlassFish(glassfishProperties);
+    glassfish.start();
+    Deployer deployer = glassfish.getDeployer();
+
+    // Create a scattered web application.
+    ScatteredArchive webmodule = new ScatteredArchive("testweb", ScatteredArchive.Type.WAR);
+    // target/classes directory contains my complied servlets
+    webmodule.addClassPath(new File("target", "classes"));
+    // resources/sun-web.xml is my WEB-INF/sun-web.xml
+    webmodule.addMetadata(new File("resources", "sun-web.xml"));
+
+    // Create a scattered enterprise archive.
+    ScatteredEnterpriseArchive archive = new ScatteredEnterpriseArchive("testapp");
+    // src/application.xml is my META-INF/application.xml
+    archive.addMetadata(new File("src", "application.xml"));
+    // Add scattered web module to the scattered enterprise archive.
+    // src/application.xml references Web module as "scattered.war".
+    //Hence specify the name while adding the archive.
+    archive.addArchive(webmodule.toURI(), "scattered.war");
+    // lib/mylibrary.jar is a library JAR file.
+    archive.addArchive(new File("lib", "mylibrary.jar"));
+    // target/ejbclasses contain my compiled EJB module.
+    // src/application.xml references EJB module as "ejb.jar".
+    //Hence specify the name while adding the archive.
+    archive.addArchive(new File("target", "ejbclasses"), "ejb.jar");
+
+    // Deploy the scattered enterprise archive.
+    String appName = deployer.deploy(archive.toURI());
+
+    deployer.undeploy(appName);
+    glassfish.stop();
+    glassfish.dispose();
+...
+----
+
+[[gjldy]][[GSESG00060]][[running-asadmin-commands-using-the-glassfish-server-embedded-server-api]]
+
+Running `asadmin` Commands Using the {productName} Embedded Server
+==== API
+
+Running link:reference-manual/asadmin.html#GSRFM00263[`asadmin`] commands from an application enables
+the application to configure the embedded {productName} to suit the
+application's requirements. For example, an application can run the
+required `asadmin` commands to create a JDBC technology connection to a
+database.
+
+For more information about configuring embedded {productName}, see
+the link:administration-guide.html#GSADG[{productName} Administration
+Guide]. For detailed information about `asadmin` commands, see Section 1
+of the link:reference-manual.html#GSRFM[{productName} Reference
+Manual].
+
+
+[NOTE]
+====
+Ensure that your application has started an embedded {productName}
+before the application attempts to run `asadmin` commands. For more
+information, see link:#gihyz[Running an Embedded {productName}].
+====
+
+
+The `org.glassfish.embeddable` package contains classes that you can use
+to run `asadmin` commands. Use the following code examples as templates
+and change the command name, parameter names, and parameter values as
+needed.
+
+[[GSESG00014]][[gjldj]]
+Example 1-10 Running an `asadmin create-jdbc-resource` Command
+
+This example shows code for running an `asadmin create-jdbc-resource`
+command. Code for creating and starting the server is not shown in this
+example. For an example of code for creating and starting the server,
+see link:#gilry[Example 1-4].
+
+[source,java]
+----
+...
+import org.glassfish.embeddable.*;
+...
+    String command = "create-jdbc-resource";
+    String poolid = "--connectionpoolid=DerbyPool";
+    String dbname = "jdbc/DerbyPool";
+    CommandRunner commandRunner = glassfish.getCommandRunner();
+    CommandResult commandResult = commandRunner.run(command, poolid, dbname);
+...
+----
+
+[[GSESG00015]][[gjlfm]]
+Example 1-11 Running an `asadmin set-log-level` Command
+
+This example shows code for running an `asadmin set-log-level` command.
+Code for creating and starting the server is not shown in this example.
+For an example of code for creating and starting the server, see
+link:#gilry[Example 1-4].
+
+[source,java]
+----
+...
+import org.glassfish.embeddable.*;
+...
+    String command = "set-log-level";
+    String weblevel = "jakarta.enterprise.system.container.web=FINE";
+    CommandRunner commandRunner = glassfish.getCommandRunner();
+    CommandResult commandResult = commandRunner.run(command, weblevel);
+...
+----
+
+For another way to change log levels, see link:#gjlfe[Changing Log
+Levels in Embedded {productName}].
+
+[[gikrt]][[GSESG00061]][[sample-applications]]
+
+==== Sample Applications
+
+[[GSESG00016]][[gionq]]
+Example 1-12 Using an Existing `domain.xml` File and Deploying an
+Application From an Archive File
+
+This example shows code for the following:
+
+* Using the existing file
+`c:\myapp\embeddedserver\domains\domain1\config\domain.xml` and
+preserving this file when the application is stopped.
+* Deploying an application from the archive file
+`c:\samples\simple.war`.
+
+[source,java]
+----
+import java.io.File;
+import java.io.BufferedReader;
+import org.glassfish.embeddable.*;
+
+public class Main {
+
+     /**
+     * @param args the command line arguments
+     */
+    public static void main(String[] args) {
+        File configFile = new File ("c:\\myapp\\embeddedserver\\domains\\domain1\\config\\domain.xml");
+        File war = new File("c:\\samples\\simple.war");
+        try {
+            GlassFishRuntime glassfishRuntime = GlassFishRuntime.bootstrap();
+            ...
+            GlassFishProperties glassfishProperties = new GlassFishProperties();
+            glassfishProperties.setConfigFileURI(configFile.toURI());
+            glassfishProperties.setConfigFileReadOnly(false);
+            ...
+            GlassFish glassfish = glassfishRuntime.newGlassFish(glassfishProperties);
+            glassfish.start();
+
+            Deployer deployer = glassfish.getDeployer();
+            deployer.deploy(war, "--force=true");
+        }
+        catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        System.out.println("Press Enter to stop server");
+        // wait for Enter
+        new BufferedReader(new java.io.InputStreamReader(System.in)).readLine();
+        try {
+            glassfish.dispose();
+            glassfishRuntime.shutdown();
+        }
+        catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}
+----
+
+[[gijhs]][[GSESG00038]][[testing-applications-with-the-maven-plug-in-for-embedded-glassfish-server]]
+
+=== Testing Applications with the Maven Plug-in for Embedded {productName}
+
+If you are using http://maven.apache.org/[Apache Maven]
+(`http://maven.apache.org/`), the plug-in for embedded {productName}
+simplifies the testing of applications. This plug-in enables you to
+build and start an unpackaged application with a single Maven goal.
+
+The following topics are addressed here:
+
+* link:#gihus[To Set Up Your Maven Environment]
+* link:#giivt[To Build and Start an Application From Maven]
+* link:#gijly[To Stop Embedded {productName}]
+* link:#gijjn[To Redeploy an Application That Was Built and Started From Maven]
+* link:#gjkps[Maven Goals for Embedded {productName}]
+
+Predefined Maven goals for embedded {productName} are described in
+link:#gjkps[Maven Goals for Embedded {productName}].
+
+To use Maven with Embedded {productName} and the EJB 3.1 Embeddable
+API, see link:#gjxff[Using Maven with the EJB 3.1 Embeddable API and
+Embedded {productName}].
+
+[[gihus]][[GSESG00022]][[to-set-up-your-maven-environment]]
+
+==== To Set Up Your Maven Environment
+
+Setting up your Maven environment enables Maven to download the required
+embedded {productName} distribution file when you build your project.
+Setting up your Maven environment also identifies the plug-in that
+enables you to build and start an unpackaged application with a single
+Maven goal.
+
+[[sthref8]]
+
+Before You Begin
+
+Ensure that http://maven.apache.org/[Apache Maven]
+(`http://maven.apache.org/`) is installed.
+
+1. Identify the Maven plug-in for embedded {productName}.
++
+Add the following `plugin` element to your POM file:
++
+[source,xml]
+----
+...
+        ...
+        <plugins>
+            ...
+            <plugin>
+                <groupId>org.glassfish</groupId>
+                <artifactId>maven-embedded-glassfish-plugin</artifactId>
+                <version>version</version>
+            </plugin>
+            ...
+        </plugins>
+...
+----
+version::
+  The version to use. The version of the final promoted build for this
+  release is `3.1.1`. The Maven plug-in is not bound to a specific version
+  of {productName}. You can specify the version you want to use. If
+  no version is specified, a default version is used.
+
+2. Configure the `embedded-glassfish` goal prefix, the application
+name, and other standard settings.
++
+Add the following `configuration` element to your POM file:
++
+[source,xml]
+----
+...
+        <plugins>
+            ...
+            <plugin>
+                ...
+                <configuration>
+                    <goalPrefix>embedded-glassfish</goalPrefix>
+                    ...
+                    <app>target/test.war</app>
+                    <port>8080</port>
+                    <contextRoot>test</contextRoot>
+                    <autoDelete>true</autoDelete>
+                    ...
+                </configuration>
+                ...
+            </plugin>
+            ...
+        </plugins>
+...
+----
+app::
+  In the app parameter, substitute the archive file or directory for your
+  application. The optional port, contextRoot, and autoDelete parameters
+  show example values. For details, see link:#gjkps[Maven Goals for
+  Embedded {productName}].
+
+3. Perform advanced plug-in configuration. This step is optional.
+Add the following `configuration` element to your POM file:
++
+[source,xml]
+----
+...
+        <plugins>
+            ...
+            <plugin>
+                ...
+                <configuration>
+                    <goalPrefix>embedded-glassfish</goalPrefix>
+                    <app>target/test.war</app>
+                    <name>test</name>
+                    <contextRoot>test</contextRoot>
+                    <ports>
+                        <http-listener>8080</http-listener>
+                        <https-listener>8181</https-listener>
+                    </ports>
+                    <bootstrapProperties>
+                        <property>test_key=test_value</property>
+                    </bootstrapProperties>
+                    <bootstrapPropertiesFile>bootstrap.properties</bootstrapPropertiesFile>
+                    <glassfishProperties>
+<property>embedded-glassfish-config.server.jms-service.jms-host.default_JMS_host.port=17676</property>
+                    </glassfishProperties>
+                    <glassfishPropertiesFile>glassfish.properties</glassfishPropertiesFile>
+                    <systemProperties>
+                        <property>ANTLR_USE_DIRECT_CLASS_LOADING=true</property>
+                    </systemProperties>
+                    <systemPropertiesFile>system.properties</systemPropertiesFile>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>start</goal>
+                            <goal>deploy</goal>
+                            <goal>undeploy</goal>
+                            <goal>stop</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            ...
+        </plugins>
+...
+----
+
+4. Configure Maven goals.
+Add `execution` elements to your POM file:
++
+[source,xml]
+----
+...
+        <plugins>
+            ...
+            <plugin>
+                ...
+                <executions>
+                    <execution>
+                        <phase>install</phase>
+                        <goals>
+                                <goal>goal</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                ...
+            </plugin>
+            ...
+        </plugins>
+...
+----
+goal::
+  The goal to use. See link:#gjkps[Maven Goals for Embedded {productName}].
+
+5. Configure the repository.
+Add the following `repository` element to your POM file:
++
+[source,xml]
+----
+<pluginRepositories>
+    <pluginRepository>
+        <id>maven2-repository.dev.java.net</id>
+        <name>Java.net Repository for Maven</name>
+        <url>http://download.java.net/maven/glassfish/</url>
+    </pluginRepository>
+</pluginRepositories>
+----
+
+[[GSESG00017]][[gjkod]]
+Example 1-13 POM File for Configuring Maven to Use Embedded {productName}
+
+This example shows a POM file for configuring Maven to use embedded {productName}.
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Line breaks in the following element are for readability purposes only
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+http://maven.apache.org/maven-v4_0_0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.glassfish</groupId>
+  <artifactId>maven-glassfish-plugin-tester</artifactId>
+  <version>3.1</version>
+  <name>Maven test</name>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.glassfish</groupId>
+        <artifactId>maven-embedded-glassfish-plugin</artifactId>
+        <version>3.1</version>
+        <configuration>
+          <goalPrefix>embedded-glassfish</goalPrefix>
+          <app>target/test.war</app>
+          <port>8080</port>
+          <contextRoot>test</contextRoot>
+          <autoDelete>true</autoDelete>
+       </configuration>
+       <executions>
+          <execution>
+             <phase>install</phase>
+             <goals>
+                   <goal>run</goal>
+             </goals>
+          </execution>
+       </executions>
+     </plugin>
+    </plugins>
+  </build>
+  <pluginRepositories>
+      <pluginRepository>
+          <id>maven2-repository.dev.java.net</id>
+          <name>Java.net Repository for Maven</name>
+          <url>http://download.java.net/maven/glassfish/</url>
+      </pluginRepository>
+  </pluginRepositories>
+</project>
+----
+
+[[giivt]][[GSESG00023]][[to-build-and-start-an-application-from-maven]]
+
+==== To Build and Start an Application From Maven
+
+If you are using Maven to manage the development of your application,
+you can use a Maven goal to build and start the application in embedded
+{productName}.
+
+[[sthref9]]
+
+Before You Begin
+
+Ensure that your Maven environment is configured, as described in
+link:#gihus[To Set Up Your Maven Environment].
+
+1. Include the path to the Maven executable file `mvn` in your path
+statement.
+2. Ensure that the `JAVA_HOME` environment variable is defined.
+3. Create a directory for the Maven project for your application.
+4. Copy to your project directory the POM file that you created in
+link:#gihus[To Set Up Your Maven Environment].
+5. Run the following command in your project directory:
++
+[source]
+----
+mvn install
+----
+This command performs the following actions:
+* Installs the Maven repository in a directory named `.m2` under your
+home directory.
+* Starts Embedded {productName}.
+* Deploys your application.
++
+The application continues to run in Embedded {productName} until
+Embedded {productName} is stopped.
+
+[[gijly]][[GSESG00024]][[to-stop-embedded-glassfish-server]]
+
+==== To Stop Embedded {productName}
+
+1. Change to the root directory of the Maven project for your
+application.
+2. Run the Maven goal to stop the application in embedded {productName}.
++
+[source]
+----
+mvn embedded-glassfish:stop
+----
+This runs the `stop` method of the `GlassFish` object and any other
+methods that are required to shut down the server in an orderly fashion.
+See link:#gihzy[Stopping an Embedded {productName} From an
+Application].
+
+[[gijjn]][[GSESG00025]][[to-redeploy-an-application-that-was-built-and-started-from-maven]]
+
+==== To Redeploy an Application That Was Built and Started From Maven
+
+An application that was built and started from Maven continues to run in
+Embedded {productName} until Embedded {productName} is stopped.
+While the application is running, you can test changes to the
+application by redeploying it.
+
+To redeploy, in the window from where the application was built and
+started from Maven, press Enter.
+
+[[gjkps]][[GSESG00062]][[maven-goals-for-embedded-glassfish-server]]
+
+==== Maven Goals for Embedded {productName}
+
+You can use the following Maven goals to test your applications with
+embedded {productName}:
+
+* link:#gjkxo[`embedded-glassfish:run` Goal]
+* link:#gjkwy[`embedded-glassfish:start` Goal]
+* link:#gjkvc[`embedded-glassfish:deploy` Goal]
+* link:#gjkvg[`embedded-glassfish:undeploy` Goal]
+* link:#gjkyl[`embedded-glassfish:stop` Goal]
+* link:#gjkxq[`embedded-glassfish:admin` Goal]
+
+[[gjkxo]][[GSESG00048]][[embedded-glassfishrun-goal]]
+
+===== `embedded-glassfish:run` Goal
+
+This goal starts the server and deploys an application. You can redeploy
+if you change the application. The application can be a packaged archive
+or a directory that contains an exploded application. You can set the
+parameters described in the following table.
+
+[[sthref10]][[gjkws]]
+
+Table 1-5 `embedded-glassfish:run` Parameters
+
+[width="100%",cols="<18%,<42%,<40%",options="header",]
+|===
+|Parameter |Default |Description
+|app |None |The archive file or directory for the application to be deployed.
+
+|serverID |`maven` |(optional) The ID of the server to start.
+
+|containerType |`all` |(optional) The container to start: `web`, `ejb`, `jpa`, or `all`.
+
+|installRoot |None |(optional) The link:#gikqf[Installation Root Directory].
+
+|instanceRoot a|
+In order of precedence:
+
+* `glassfish.embedded.tmpdir` property value specified in `GlassFishProperties` object
+* `glassfish.embedded.tmpdir` system property value
+* `java.io.tmp` system property value
+* as-install``/domains/domain1`` if a nonembedded installation is referenced
+
+ |(optional) The link:#gikvf[Instance Root Directory]
+
+|configFile |domain-dir``/config/domain.xml`` |(optional) The
+configuration file.
+
+|port |None. Must be set explicitly or defined in the configuration
+file. |The HTTP or HTTPS port.
+
+|name a|
+In order of precedence:
+
+* The `application-name` or `module-name` in the deployment descriptor.
+* The name of the archive file without the extension or the directory name.
+
+For more information, see "link:application-deployment-guide/overview.html#GSDPG00323[Naming Standards]" in
+{productName} Application Deployment Guide.
+
+ |(optional) The name of the application.
+
+|contextRoot |The name of the application. |(optional) The context root
+of the application.
+
+|precompileJsp |`false` |(optional) If `true`, JSP pages are precompiled
+during deployment.
+
+|dbVendorName |None |(optional) The name of the database vendor for
+which tables can be created. Allowed values are `javadb`, `db2`,
+`mssql`, `mysql`, `oracle`, `postgresql`, `pointbase`, `derby` (also for
+CloudScape), and `sybase`, case-insensitive.
+
+|createTables |Value of the `create-tables-at-deploy` attribute in
+`sun-ejb-jar.xml`. |(optional) If `true`, creates database tables during
+deployment for beans that are automatically mapped by the EJB container.
+
+|dropTables |Value of the `drop-tables-at-undeploy` attribute in
+`sun-ejb-jar.xml`. a|
+(optional) If `true`, and deployment and undeployment occur in the same
+JVM session, database tables that were automatically created when the
+bean(s) were deployed are dropped when the bean(s) are undeployed.
+
+If `true`, the name parameter must be specified or tables may not be
+dropped.
+
+|autoDelete |`false` a|
+(optional) If `true`, deletes the contents of the link:#gikvf[Instance
+Root Directory] when the server is stopped.
+
+Caution: Do not set `autoDelete` to `true` if you are using
+`installRoot` to refer to a preexisting {productName} installation.
+
+|===
+
+
+[[gjkwy]][[GSESG00049]][[embedded-glassfishstart-goal]]
+
+===== `embedded-glassfish:start` Goal
+
+This goal starts the server. You can set the parameters described in the
+following table.
+
+[[sthref11]][[gjkye]]
+
+Table 1-6 `embedded-glassfish:start` Parameters
+
+[width="100%",cols="<17%,<38%,<45%",options="header",]
+|===
+|Parameter |Default |Description
+|serverID |`maven` |(optional) The ID of the server to start.
+
+|containerType |`all` |(optional) The container to start: `web`, `ejb`,
+`jpa`, or `all`.
+
+|installRoot |None |(optional) The link:#gikqf[Installation Root
+Directory].
+
+|instanceRoot a|
+In order of precedence:
+
+* `glassfish.embedded.tmpdir` system property value
+* `java.io.tmpdir` system property value
+* as-install``/domains/domain1``
+
+ |(optional) The link:#gikvf[Instance Root Directory]
+
+|configFile |domain-dir`/config/domain.xml` |(optional) The
+configuration file.
+
+|port |None. Must be set explicitly or defined in the configuration
+file. |The HTTP or HTTPS port.
+
+|autoDelete |`false` a|
+(optional) If `true`, deletes the contents of the link:#gikvf[Instance
+Root Directory] when the server is stopped.
+
+Caution: Do not set `autoDelete` to `true` if you are using
+`installRoot` to refer to a preexisting {productName} installation.
+
+|===
+
+
+[[gjkvc]][[GSESG00050]][[embedded-glassfishdeploy-goal]]
+
+===== `embedded-glassfish:deploy` Goal
+
+This goal deploys an application. You can redeploy if you change the
+application. The application can be a packaged archive or a directory
+that contains an exploded application. You can set the parameters
+described in the following table.
+
+[[sthref12]][[gjkvv]]
+
+Table 1-7 `embedded-glassfish:deploy` Parameters
+
+[width="100%",cols="<18%,<39%,<43%",options="header",]
+|===
+|Parameter |Default |Description
+|app |None |The archive file or directory for the application to be
+deployed.
+
+|serverID |`maven` |(optional) The ID of the server to start.
+
+|name a|
+In order of precedence:
+
+* The `application-name` or `module-name` in the deployment descriptor.
+* The name of the archive file without the extension or the directory
+name.
+
+For more information, see "link:application-deployment-guide/overview.html#GSDPG00323[Naming Standards]" in
+{productName} Application Deployment Guide.
+
+ |(optional) The name of the application.
+
+|contextRoot |The name of the application. |(optional) The context root
+of the application.
+
+|precompileJsp |`false` |(optional) If `true`, JSP pages are precompiled
+during deployment.
+
+|dbVendorName |None |(optional) The name of the database vendor for
+which tables can be created. Allowed values are `javadb`, `db2`,
+`mssql`, `oracle`, `postgresql`, `pointbase`, `derby` (also for
+CloudScape), and `sybase`, case-insensitive.
+
+|createTables |Value of the `create-tables-at-deploy` attribute in
+`sun-ejb-jar.xml`. |(optional) If `true`, creates database tables during
+deployment for beans that are automatically mapped by the EJB container.
+|===
+
+
+[[gjkvg]][[GSESG00051]][[embedded-glassfishundeploy-goal]]
+
+===== `embedded-glassfish:undeploy` Goal
+
+
+[NOTE]
+====
+If you reference a nonembedded {productName} installation using the
+`glassfish-embedded-static-shell.jar` file and do not undeploy your
+applications in the same server life cycle in which you deployed them,
+expanded archives for these applications remain under the
+domain-dir``/applications`` directory.
+====
+
+
+This goal undeploys an application. You can set the parameters described
+in the following table.
+
+[[sthref13]][[gjkxf]]
+
+Table 1-8 `embedded-glassfish:undeploy` Parameters
+
+[width="100%",cols="<14%,<34%,<52%",options="header",]
+|===
+|Parameter |Default |Description
+|name |If the name is omitted, all applications are undeployed. |The
+name of the application.
+
+|serverID |`maven` |(optional) The ID of the server to start.
+
+|dropTables |Value of the `drop-tables-at-undeploy` attribute in
+`sun-ejb-jar.xml`. a|
+(optional) If `true`, and deployment and undeployment occur in the same
+JVM session, database tables that were automatically created when the
+bean(s) were deployed are dropped when the bean(s) are undeployed.
+
+If `true`, the name parameter must be specified or tables may not be
+dropped.
+
+|cascade |`false` a|
+(optional) If `true`, deletes all connection pools and connector
+resources associated with the resource adapter being undeployed.
+
+If `false`, undeployment fails if any pools or resources are still
+associated with the resource adapter.
+
+This attribute is applicable to connectors (resource adapters) and
+applications with connector modules.
+
+|===
+
+
+[[gjkyl]][[GSESG00052]][[embedded-glassfishstop-goal]]
+
+===== `embedded-glassfish:stop` Goal
+
+This goal stops the server. You can set the parameters described in the
+following table.
+
+[[sthref14]][[gjkwm]]
+
+Table 1-9 `embedded-glassfish:stop` Parameters
+
+[width="100%",cols="<16%,<17%,<67%",options="header",]
+|===
+|Parameter |Default |Description
+|serverID |`maven` |(optional) The ID of the server to stop.
+|===
+
+
+[[gjkxq]][[GSESG00053]][[embedded-glassfishadmin-goal]]
+
+===== `embedded-glassfish:admin` Goal
+
+This goal runs a {productName} administration command. You must use
+either the command and commandParameters parameters in combination or
+the commandLine parameter. For more information about administration
+commands, see the link:reference-manual.html#GSRFM[{productName}
+Reference Manual]. You can set the parameters described in the following
+table.
+
+[[sthref15]][[gjkwe]]
+
+Table 1-10 `embedded-glassfish:start` Parameters
+
+[width="100%",cols="<24%,<10%,<66%",options="header",]
+|===
+|Parameter |Default |Description
+|serverID |`maven` |(optional) The ID of the server on which to run the
+command.
+
+|command |None |The name of the command, for example
+`createJdbcResource`.
+
+|commandParameters |None |A map of the command parameters. See the
+`org.glassfish.embeddable.admin.CommandParameters` class at
+`http://glassfish.java.net/nonav/docs/v3/api/`.
+
+|commandLine |None |The full `asadmin` syntax of the command.
+|===
+
+
+[[gjlde]][[GSESG00039]][[using-the-ejb-3.1-embeddable-api-with-embedded-glassfish-server]]
+
+=== Using the EJB 3.1 Embeddable API with Embedded {productName}
+
+The EJB 3.1 Embeddable API is designed for unit testing of EJB modules.
+You must use this API with a pre-installed, nonembedded {productName}
+instance. However, you can take advantage of Embedded {productName}'s
+ease of use by referencing the nonembedded {productName} instance
+with the `glassfish-embedded-static-shell.jar` file.
+
+Embedded {productName} is not related to the EJB 3.1 Embeddable API,
+but you can use these APIs together.
+
+The Maven plug-in does not apply to embeddable EJB applications.
+However, you can use Maven with the POM file shown in link:#gjxff[Using
+Maven with the EJB 3.1 Embeddable API and Embedded {productName}].
+
+The EJB 3.1 Embeddable API is described in
+http://jcp.org/en/jsr/detail?id=318[Java Specification Request (JSR)
+318] (`http://jcp.org/en/jsr/detail?id=318`). An `ejb-embedded` sample
+is included in the samples available at
+http://www.oracle.com/technetwork/java/javaee/downloads/index.html[Java
+EE 7 Downloads]
+(`http://www.oracle.com/technetwork/java/javaee/downloads/index.html`)
+or
+http://www.oracle.com/technetwork/java/javaee/documentation/index.html[Code
+Samples]
+(`http://www.oracle.com/technetwork/java/javaee/documentation/index.html`).
+
+The EJB 3.1 Embeddable API supports all EJB 3.1 Lite features with
+addition of the EJB timer service and testing of EJB modules packaged in
+a WAR file.
+
+For EJB modules in a WAR file (or an exploded directory), if a web
+application has one EJB module, and there are no other EJB modules in
+the classpath, those entries (libraries) are ignored. If there are other
+EJB modules, a temporary EAR file is created. For EJB modules in a WAR
+file to be tested, the client code must use EJB modules with interfaces
+or without annotations. Those EJB modules are not part of the classpath
+and can't be loaded by the client class loader.
+
+The following topics are addressed here:
+
+* link:#gjlcr[To Use the EJB 3.1 Embeddable API with Embedded {productName}]
+* link:#gksnv[EJB 3.1 Embeddable API Properties]
+* link:#gjxff[Using Maven with the EJB 3.1 Embeddable API and Embedded
+{productName}]
+
+[[gjlcr]][[GSESG00026]][[to-use-the-ejb-3.1-embeddable-api-with-embedded-glassfish-server]]
+
+==== To Use the EJB 3.1 Embeddable API with Embedded {productName}
+
+1. To specify {productName} as the Container Provider, include
+`glassfish-embedded-static-shell.jar` or `glassfish-embedded-all.jar` in
+the class path of your embeddable EJB application.
++
+Reference the `glassfish-embedded-static-shell.jar` file from the
+as-install``/lib/embedded`` directory of a {productName} installation.
+Do not move this file or it will not work.
++
+See link:#giide[Setting the Class Path] and Section 22.3.3 of the EJB
+3.1 Specification, Embeddable Container Bootstrapping.
+2. Configure any required resources.
++
+For more information about configuring resources, see the Administration
+Console Online Help or "link:administration-guide.html#GSADG00298[Resources and Services
+Administration]" in {productName} Administration
+Guide. The `jdbc/__default` Java DB database is preconfigured with all
+distributions of {productName}. However, if you are using
+`glassfish-embedded-static-shell.jar`, you must start the database
+manually.
++
+If your embeddable EJB application uses Java Persistence, you do not
+need to specify a JDBC resource. See link:#gksmw[Default Java
+Persistence Data Source for Embedded {productName}].
+3. Invoke one of the `createEJBContainer` methods.
++
+
+[NOTE]
+====
+Do not deploy your embeddable EJB application or any of its dependent
+Jakarta EE modules before invoking one of the `createEJBContainer` methods.
+These methods perform deployment in the background and do not load
+previously deployed applications or modules.
+====
+
+4. To change the link:#gikvf[Instance Root Directory], set the
+`org.glassfish.ejb.embedded.glassfish.instance.root` system property
+value by using the `createEJBContainer``(Map<?, ?> properties)` method.
++
+The default link:#gikvf[Instance Root Directory] location is
+as-install``/domains/domain1`` if a nonembedded installation is
+referenced. This system property applies only to embeddable EJB
+applications used with nonembedded {productName}.
+5. Close the EJB container properly to release all acquired resources
+and threads.
+
+[[gksnv]][[GSESG00063]][[ejb-3.1-embeddable-api-properties]]
+
+==== EJB 3.1 Embeddable API Properties
+
+Properties that can be passed to the
+`EJBContainer#createEJBContainer(Properties)` method are summarized in
+the following table. All properties are in the
+`org.glassfish.ejb.embedded.glassfish` package. For example, the full
+name of the `installation.root` property is
+`org.glassfish.ejb.embedded.glassfish.installation.root`.
+
+[[sthref16]][[gksop]]
+
+Table 1-11 EJB 3.1 Embeddable API Properties
+
+[width="100%",cols="<30%,<39%,<31%",options="header",]
+|===
+|Property |Default |Description
+|`installation.root` |{productName} installation location from which
+`glassfish-embedded-static-shell.jar` is referenced |The
+link:#gikqf[Installation Root Directory].
+
+|`instance.root` a|
+In order of precedence:
+
+* `glassfish.embedded.tmpdir` property value specified in
+`GlassFishProperties` object
+* `glassfish.embedded.tmpdir` system property value
+* `java.io.tmp` system property value
+* as-install``/domains/domain1`` if a nonembedded installation is referenced
+
+ |The link:#gikvf[Instance Root Directory].
+
+|`configuration.file` |domain-dir`/config/domain.xml` |The configuration
+file.
+
+|`keep-temporary-files` |`false` |If `true`, keeps temporary files
+(exploded EAR file and configuration file) created by the embedded EJB
+container when Embedded {productName} is stopped.
+
+|`web.http.port` |None |Enables the web container if set. Needed for
+testing web services in a WAR file. The value is ignored and can be an
+empty string.
+
+|`instance.reuse` |`false` |If `true`, no changes are made to the
+existing configuration file, and a temporary server instance is not
+created for the embedded run. Instead, execution happens against the
+existing server instance. Do not use this option if the reused server
+instance could be in use by the running nonembedded {productName}.
+
+|`skip-client-modules` |`false` |If `true`, omits modules from the
+classpath if they are not specified using `EJBContainer.MODULES` and
+have a manifest file with a `Main-Class` attribute.
+|===
+
+
+[[gjxff]][[GSESG00064]][[using-maven-with-the-ejb-3.1-embeddable-api-and-embedded-glassfish-server]]
+
+==== Using Maven with the EJB 3.1 Embeddable API and Embedded {productName}
+
+When using Maven with the EJB 3.1 Embeddable API and Embedded {productName}, you cannot use the features of the Maven plug-in. You must start
+and stop Embedded {productName} manually or programmatically outside
+of Maven.
+
+[[GSESG00018]][[gjxds]]
+Example 1-14 Maven POM File for Using the EJB 3.1 Embeddable API with
+Embedded {productName}
+
+This example shows a POM file for configuring Maven to use the EJB 3.1
+Embeddable API with Embedded {productName}.
+
+[source,xml]
+----
+<!--
+Line breaks in the following element are for readability purposes only
+-->
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.glassfish</groupId>
+    <artifactId>my-ejb-app-tester</artifactId>
+    <version>3.1</version>
+    <name>Maven test</name>
+    <dependencies>
+        <dependency>
+            <groupId>org.glassfish.extras</groupId>
+            <artifactId>glassfish-embedded-static-shell</artifactId>
+            <version>${project.version}</version>
+            <scope>system</scope>
+            <systemPath>
+                ${env.S1AS_HOME}/lib/embedded/glassfish-embedded-static-shell.jar
+            </systemPath>
+        </dependency>
+<!--
+        The javaee-api is stripped of any code and is just used to compile your
+        application. The scope provided in Maven means that it is used for compiling,
+        but is also available when testing. For this reason, the javaee-api needs to
+        be below the embedded Glassfish dependency. The javaee-api can actually be
+        omitted when the embedded Glassfish dependency is included, but to keep your
+        project Java-EE 6 rather than GlassFish 3, specification is important.
+-->
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+    <pluginRepositories>
+        <pluginRepository>
+            <id>maven2-repository.dev.java.net</id>
+            <name>Java.net Repository for Maven</name>
+            <url>http://download.java.net/maven/glassfish/</url>
+        </pluginRepository>
+    </pluginRepositories>
+</project>
+----
+
+If you are using `glassfish-embedded-static-shell.jar`, you can omit the
+`dependency` element with the `javaee-api` `artifactId` and the
+`pluginRepositories` element.
+
+Set the `S1AS_HOME` environment variable to the installation root
+directory before running the `mvn clean verify` command.
+
+[[gjlfe]][[GSESG00040]][[changing-log-levels-in-embedded-glassfish-server]]
+
+=== Changing Log Levels in Embedded {productName}
+
+To change log levels in Embedded {productName}, you can follow the
+steps in this section or you can use the Embedded Server API as shown in
+link:#gjlfm[Example 1-11]. For more information about {productName}
+logging, see "link:administration-guide/logging.html#GSADG00010[Administering the Logging Service]" in
+{productName} Administration Guide.
+
+You can change log levels in Embedded {productName} in either of the
+following ways:
+
+* Using the {productName} Embedded Server API
+* Creating a custom logging configuration file
+
+Both these ways use logger names. For a list of logger names, use the
+link:reference-manual/list-log-levels.html#GSRFM00183[`list-log-levels`] subcommand.
+
+[[GSESG00019]][[gkrhh]]
+Example 1-15 Using the {productName} Embedded Server API
+
+This example shows how to set log levels using the `getLogger` method in
+the API.
+
+[source,java]
+----
+import org.glassfish.embeddable.*;
+
+// Create Embedded GlassFish
+GlassFish glassfish = GlassFishRuntime.bootstrap().newGlassFish();
+
+// Set the log levels. For example, set 'deployment' and 'server' log levels to FINEST
+Logger.getLogger("").getHandlers()[0].setLevel(Level.FINEST);
+Logger.getLogger("jakarta.enterprise.system.tools.deployment").setLevel(Level.FINEST);
+Logger.getLogger("jakarta.enterprise.system").setLevel(Level.FINEST);
+
+// Start Embedded GlassFish and deploy an application.
+// You will see all the FINEST logs printed on the console.
+glassfish.start();
+glassfish.getDeployer().deploy(new File("sample.war"));
+
+// Dispose Embedded GlassFish
+glassfish.dispose();
+----
+
+[[GSESG00020]][[gkrgw]]
+Example 1-16 Creating a Custom Logging Configuration File
+
+This example shows the contents of a custom logging configuration file,
+`customlogging.properties`.
+
+[source]
+----
+handlers= java.util.logging.ConsoleHandler
+java.util.logging.ConsoleHandler.level = FINEST
+jakarta.enterprise.system.tools.deployment.level = FINEST
+jakarta.enterprise.system.level = FINEST
+----
+
+Pass the name of this custom logging configuration file to the `java`
+command when you invoke Embedded {productName}. For example:
+
+[source]
+----
+java -Djava.util.logging.config.file=customlogging.properties MyEmbeddedGlassFish
+----
+
+[[gksmw]][[GSESG00041]][[default-java-persistence-data-source-for-embedded-glassfish-server]]
+
+=== Default Java Persistence Data Source for Embedded {productName}
+
+The `jdbc/__default` Java DB database is preconfigured with Embedded
+{productName}. It is used when an application is deployed in Embedded
+{productName} that uses Java Persistence but doesn't specify a data
+source. Embedded {productName} uses the embedded Java DB database
+created in a temporary domain that is destroyed when Embedded {productName} is stopped. You can use a Java DB database configured with
+nonembedded {productName} if you explicitly specify the instance root
+directory or the configuration file.
+
+By default, weaving is enabled when the {productName} Embedded Server
+API is used. To disable weaving, set the
+`org.glassfish.persistence.embedded.weaving.enabled` property to
+`false`.
+
+[[gihxf]][[GSESG00042]][[restrictions-for-embedded-glassfish-server]]
+
+=== Restrictions for Embedded {productName}
+
+The `glassfish-embedded-web.jar` file for embedded {productName}
+supports only these features of nonembedded {productName}:
+
+* The following web technologies of the Jakarta EE platform:
+
+** Java Servlet API
+
+** JavaServer Pages (JSP) technology
+
+** JavaServer Faces technology
+* JDBC-technology connection pooling
+* Java Persistence API
+* Java Transaction API
+* Java Transaction Service
+
+The `glassfish-embedded-all.jar` and
+`glassfish-embedded-static-shell.jar` files support all features of
+nonembedded {productName} with these exceptions:
+
+* Installers
+* Administration Console
+* Update Tool
+* Apache Felix OSGi framework
+* The Maven plug-in for embedded {productName} does not support
+application clients.
+* Applications that require ports for communication, such as remote EJB
+components, do not work with the EJB 3.1 Embeddable API running with
+embedded {productName} if a nonembedded {productName} is running
+in parallel.
+
+Embedded {productName} requires no installation or configuration. As
+a result, the following files and directories are absent from the file
+system until embedded {productName} is started:
+
+* `default-web.xml` file
+* `domain.xml` file
+* Applications directory
+* Instance root directory
+
+When embedded {productName} is started, the base installation
+directory that {productName} uses depends on the options with which
+{productName} is started. If necessary, embedded {productName}
+creates a base installation directory. Embedded {productName} then
+copies the following directories and their contents from the Java
+archive (JAR) file in which embedded {productName} is distributed:
+
+* `domains`
+* `lib`
+
+If necessary, {productName} also creates an instance root directory.
diff --git a/docs/embedded-server-guide/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png b/docs/embedded-server-guide/src/main/asciidoc/img/eclipse_foundation_logo_tiny.png
similarity index 100%
rename from docs/embedded-server-guide/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png
rename to docs/embedded-server-guide/src/main/asciidoc/img/eclipse_foundation_logo_tiny.png
Binary files differ
diff --git a/docs/embedded-server-guide/src/main/asciidoc/loe.adoc b/docs/embedded-server-guide/src/main/asciidoc/loe.adoc
new file mode 100644
index 0000000..ce9d2f7
--- /dev/null
+++ b/docs/embedded-server-guide/src/main/asciidoc/loe.adoc
@@ -0,0 +1,43 @@
+type=page
+status=published
+title=List of Examples
+next=lot.html
+prev=toc.html
+~~~~~~
+
+= List of Examples
+
+[[list-of-examples]]
+== List of Examples
+
+* link:embedded-server-guide.html#gikmz[1-1 Creating an Embedded
+{productName}]
+* link:embedded-server-guide.html#gksjo[1-2 Creating an Embedded
+{productName} with configuration customizations]
+* link:embedded-server-guide.html#gjkxc[1-3 Setting the port of an
+Embedded {productName}]
+* link:embedded-server-guide.html#gilry[1-4 Starting an Embedded
+{productName}]
+* link:embedded-server-guide.html#gilnz[1-5 Stopping an Embedded
+{productName}]
+* link:embedded-server-guide.html#gioph[1-6 Deploying an Application From
+an Archive File]
+* link:embedded-server-guide.html#gilwu[1-7 Undeploying an Application]
+* link:embedded-server-guide.html#gjrfq[1-8 Deploying an Application From
+a Scattered Archive]
+* link:embedded-server-guide.html#gkvga[1-9 Deploying an Application From
+a Scattered Enterprise Archive]
+* link:embedded-server-guide.html#gjldj[1-10 Running an asadmin
+create-jdbc-resource Command]
+* link:embedded-server-guide.html#gjlfm[1-11 Running an asadmin
+set-log-level Command]
+* link:embedded-server-guide.html#gionq[1-12 Using an Existing domain.xml
+File and Deploying an Application From an Archive File]
+* link:embedded-server-guide.html#gjkod[1-13 POM File for Configuring
+Maven to Use Embedded {productName}]
+* link:embedded-server-guide.html#gjxds[1-14 Maven POM File for Using the
+EJB 3.1 Embeddable API with Embedded {productName}]
+* link:embedded-server-guide.html#gkrhh[1-15 Using the {productName}
+Embedded Server API]
+* link:embedded-server-guide.html#gkrgw[1-16 Creating a Custom Logging
+Configuration File]
diff --git a/docs/embedded-server-guide/src/main/asciidoc/lot.adoc b/docs/embedded-server-guide/src/main/asciidoc/lot.adoc
new file mode 100644
index 0000000..103c307
--- /dev/null
+++ b/docs/embedded-server-guide/src/main/asciidoc/lot.adoc
@@ -0,0 +1,34 @@
+type=page
+status=published
+title=List of Tables
+next=title.html
+prev=loe.html
+~~~~~~
+
+= List of Tables
+
+[[list-of-tables]]
+== List of Tables
+
+* link:embedded-server-guide.html#gksir[1-1 Methods of the
+BootstrapProperties Class]
+* link:embedded-server-guide.html#gkskl[1-2 Methods of the
+GlassFishProperties Class]
+* link:embedded-server-guide.html#gjrdg[1-3 Constructors and Methods of
+the ScatteredArchive Class]
+* link:embedded-server-guide.html#gkvgb[1-4 Constructors and Methods of
+the ScatteredEnterpriseArchive Class]
+* link:embedded-server-guide.html#gjkws[1-5 embedded-glassfish:run
+Parameters]
+* link:embedded-server-guide.html#gjkye[1-6 embedded-glassfish:start
+Parameters]
+* link:embedded-server-guide.html#gjkvv[1-7 embedded-glassfish:deploy
+Parameters]
+* link:embedded-server-guide.html#gjkxf[1-8 embedded-glassfish:undeploy
+Parameters]
+* link:embedded-server-guide.html#gjkwm[1-9 embedded-glassfish:stop
+Parameters]
+* link:embedded-server-guide.html#gjkwe[1-10 embedded-glassfish:start
+Parameters]
+* link:embedded-server-guide.html#gksop[1-11 EJB 3.1 Embeddable API
+Properties]
diff --git a/docs/embedded-server-guide/src/main/asciidoc/preface.adoc b/docs/embedded-server-guide/src/main/asciidoc/preface.adoc
new file mode 100644
index 0000000..48bec14
--- /dev/null
+++ b/docs/embedded-server-guide/src/main/asciidoc/preface.adoc
@@ -0,0 +1,335 @@
+type=page
+status=published
+title=Preface
+next=embedded-server-guide.html
+prev=title.html
+~~~~~~
+
+= Preface
+
+[[sthref2]]
+[[preface]]
+== Preface
+
+[NOTE]
+====
+This documentation is part of the Java Enterprise Edition contribution
+to the Eclipse Foundation and is not intended for use in relation to
+Java Enterprise Edition or Orace GlassFish. The documentation is in the
+process of being revised to reflect the new Jakarta EE branding.
+Additional changes will be made as requirements and procedures evolve
+for Jakarta EE. Where applicable, references to Jakarta EE or Java
+Enterprise Edition should be considered references to Jakarta EE.
+
+Please see the Title page for additional license information.
+====
+
+This document explains how to run applications in embedded
+{productName} and to develop applications in which
+{productName} is embedded. This document is for software developers
+who are developing applications to run in embedded {productName}.
+The ability to program in the Java language is assumed.
+
+This preface contains information about and conventions for the entire
+{productName} ({productName}) documentation set.
+
+{productName} 7 is developed through the GlassFish project
+open-source community at https://github.com/eclipse-ee4j/glassfish.
+The GlassFish project provides a structured process for developing the
+{productName} platform that makes the new features of the Jakarta EE
+platform available faster, while maintaining the most important feature
+of Jakarta EE: compatibility. It enables Java developers to access the
+{productName} source code and to contribute to the development of the
+{productName}.
+
+The following topics are addressed here:
+
+* link:#ghpbz[{productName} Documentation Set]
+* link:#giprl[Related Documentation]
+* link:#fwbkx[Typographic Conventions]
+* link:#fquvc[Symbol Conventions]
+* link:#ghpfg[Default Paths and File Names]
+
+[[GSESG00027]][[ghpbz]]
+
+[[glassfish-server-documentation-set]]
+=== {productName} Documentation Set
+
+The {productName} documentation set describes deployment planning and
+system installation. For an introduction to {productName}, refer to
+the books in the order in which they are listed in the following table.
+
+[width="100%",cols="<30%,<70%",options="header",]
+|===
+|Book Title |Description
+|link:release-notes.html#GSRLN[Release Notes] |Provides late-breaking information about
+the software and the documentation and includes a comprehensive,
+table-based summary of the supported hardware, operating system, Java
+Development Kit (JDK), and database drivers.
+
+|link:quick-start-guide.html#GSQSG[Quick Start Guide]
+|Explains how to get started with the {productName} product.
+
+|link:installation-guide.html#GSING[Installation Guide]
+|Explains how to install the software and its components.
+
+|link:upgrade-guide.html#GSUPG[Upgrade Guide]
+|Explains how to upgrade to the latest version of {productName}.
+This guide also describes differences between adjacent product releases and configuration
+options that can result in incompatibility with the product specifications.
+
+|link:deployment-planning-guide.html#GSPLG[Deployment Planning Guide]
+|Explains how to build a production deployment of {productName} that meets the requirements of
+your system and enterprise.
+
+|link:administration-guide.html#GSADG[Administration Guide]
+|Explains how to configure, monitor, and manage {productName} subsystems and components
+from the command line by using the link:reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] utility.
+Instructions for performing these tasks from the Administration Console are provided
+in the Administration Console online help.
+
+|link:security-guide.html#GSSCG[Security Guide]
+|Provides instructions for configuring and administering {productName} security.
+
+|link:application-deployment-guide.html#GSDPG[Application Deployment Guide]
+|Explains how to assemble and deploy applications to the {productName} and provides information
+about deployment descriptors.
+
+|link:application-development-guide.html#GSDVG[Application Development Guide]
+|Explains how to create and implement Java Platform, Enterprise Edition (Jakarta EE platform)
+applications that are intended to run on the {productName}.
+These applications follow the open Java standards model for Jakarta EE components
+and application programmer interfaces (APIs).
+This guide provides information about developer tools, security, and debugging.
+
+|link:add-on-component-development-guide.html#GSACG[Add-On Component Development Guide]
+|Explains how to use published interfaces of {productName} to develop add-on components
+for {productName}.
+This document explains how to perform only those tasks that ensure that the add-on component
+is suitable for {productName}.
+
+|link:embedded-server-guide.html#GSESG[Embedded Server Guide]
+|Explains how to run applications in embedded {productName} and to develop applications
+in which {productName} is embedded.
+
+|link:ha-administration-guide.html#GSHAG[High Availability Administration Guide]
+|Explains how to configure {productName} to provide higher availability and
+scalability through failover and load balancing.
+
+|link:performance-tuning-guide.html#GSPTG[Performance Tuning Guide]
+|Explains how to optimize the performance of {productName}.
+
+|link:troubleshooting-guide.html#GSTSG[Troubleshooting Guide]
+|Describes common problems that you might encounter when using {productName} and explains how to solve them.
+
+|link:error-messages-reference.html#GSEMR[Error Message Reference]
+|Describes error messages that you might encounter when using {productName}.
+
+|link:reference-manual.html#GSRFM[Reference Manual]
+|Provides reference information in man page format for {productName} administration commands, utility
+commands, and related concepts.
+
+|link:../openmq/mq-release-notes.html#GMRLN[Message Queue Release Notes]
+|Describes new features, compatibility issues, and existing bugs for Open Message Queue.
+
+|link:../openmq/mq-tech-over.html#GMTOV[Message Queue Technical Overview]
+|Provides an introduction to the technology, concepts, architecture, capabilities, and features of
+the Message Queue messaging service.
+
+|link:../openmq/mq-admin-guide.html#GMADG[Message Queue Administration Guide]
+|Explains how to set up and manage a Message Queue messaging system.
+
+|link:../openmq/mq-dev-guide-jmx.html#GMJMG[Message Queue Developer's Guide for JMX Clients]
+|Describes the application programming interface in Message Queue for
+programmatically configuring and monitoring Message Queue resources in
+conformance with the Java Management Extensions (JMX).
+
+|link:../openmq/mq-dev-guide-java.html#GMJVG[Message Queue Developer's Guide for Java Clients]
+|Provides information about concepts and procedures for developing Java messaging
+applications (Java clients) that work with {productName}.
+
+|link:../openmq/mq-dev-guide-c.html#GMCCG[Message Queue Developer's Guide for C Clients]
+|Provides programming and reference information for developers working with
+Message Queue who want to use the C language binding to the Message
+Queue messaging service to send, receive, and process Message Queue messages.
+|===
+
+
+[[GSESG00028]][[giprl]]
+
+[[related-documentation]]
+=== Related Documentation
+
+The following tutorials explain how to develop Jakarta EE applications:
+
+* https://github.com/eclipse-ee4j/jakartaee-firstcup-examples[
+Your First Cup: An Introduction to the Jakarta EE Platform].
+For beginning Jakarta EE programmers, this short tutorial explains the entire
+process for developing a simple enterprise application.
+The sample application is a web application that consists of a component that is
+based on the Enterprise JavaBeans specification, a JAX-RS web service,
+and a JavaServer Faces component for the web front end.
+
+* https://eclipse-ee4j.github.io/jakartaee-tutorial[The Jakarta EE Tutorial].
+This comprehensive tutorial explains how to use Jakarta EE platform technologies
+and APIs to develop Jakarta EE applications.
+
+Javadoc tool reference documentation for packages that are provided with
+{productName} is available as follows.
+
+* The Jakarta EE specifications and API specification is
+located at https://jakarta.ee/specifications/.
+
+* The API specification for {productName} 7, including Jakarta EE
+platform packages and nonplatform packages that are specific to the
+{productName} product, is located at
+https://glassfish.org/docs/.
+
+For information about creating enterprise applications in the NetBeans
+Integrated Development Environment (IDE), see the
+https://netbeans.apache.org/kb/docs/java-ee.html[
+NetBeans Documentation, Training & Support page].
+
+For information about the Derby database for use with
+the {productName}, see the https://db.apache.org/derby/index.html[Derby page].
+
+The Jakarta EE Samples project is a collection of sample applications that
+demonstrate a broad range of Jakarta EE technologies. The Jakarta EE Samples
+are bundled with the Jakarta EE Software Development Kit (SDK) and are also
+available from the repository
+(`https://github.com/eclipse-ee4j/glassfish-samples`).
+
+[[GSESG00029]][[fwbkx]]
+
+[[typographic-conventions]]
+=== Typographic Conventions
+
+The following table describes the typographic changes that are used in
+this book.
+
+[width="100%",cols="<14%,<37%,<49%",options="header",]
+|===
+|Typeface |Meaning |Example
+
+|`AaBbCc123`
+|The names of commands, files, and directories, and onscreen computer output
+|Edit your `.login` file.
+
+Use `ls` `a` to list all files.
+
+`machine_name% you have mail.`
+
+|`AaBbCc123`
+|What you type, contrasted with onscreen computer output
+|`machine_name%` `su`
+
+`Password:`
+
+|AaBbCc123
+|A placeholder to be replaced with a real name or value
+|The command to remove a file is `rm` filename.
+
+|AaBbCc123
+|Book titles, new terms, and terms to be emphasized (note that some emphasized items appear bold online)
+|Read Chapter 6 in the User's Guide.
+
+A cache is a copy that is stored locally.
+
+Do not save the file.
+|===
+
+
+[[GSESG00030]][[fquvc]]
+
+[[symbol-conventions]]
+=== Symbol Conventions
+
+The following table explains symbols that might be used in this book.
+
+[width="100%",cols="<10%,<26%,<28%,<36%",options="header",]
+|===
+|Symbol |Description |Example |Meaning
+
+|`[ ]`
+|Contains optional arguments and command options.
+|`ls [-l]`
+|The `-l` option is not required.
+
+|`{ \| }`
+|Contains a set of choices for a required command option.
+|`-d {y\|n}`
+|The `-d` option requires that you use either the `y` argument or the `n` argument.
+
+|`${ }`
+|Indicates a variable reference.
+|`${com.sun.javaRoot}`
+|References the value of the `com.sun.javaRoot` variable.
+
+|`-`
+|Joins simultaneous multiple keystrokes.
+|Control-A
+|Press the Control key while you press the A key.
+
+|`+`
+|Joins consecutive multiple keystrokes.
+|Ctrl+A+N
+|Press the Control key, release it, and then press the subsequent keys.
+
+|`>`
+|Indicates menu item selection in a graphical user interface.
+|File > New > Templates
+|From the File menu, choose New. From the New submenu, choose Templates.
+|===
+
+
+[[GSESG00031]][[ghpfg]]
+
+[[default-paths-and-file-names]]
+=== Default Paths and File Names
+
+The following table describes the default paths and file names that are
+used in this book.
+
+[%autowidth.stretch,options="header",]
+|===
+|Placeholder |Description |Default Value
+
+|as-install
+a|Represents the base installation directory for {productName}.
+In configuration files, as-install is represented as follows:
+`${com.sun.aas.installRoot}`
+a|* Installations on the Oracle Solaris operating system, Linux operating
+system, and Mac OS operating system:
++
+user's-home-directory``/glassfish7/glassfish``
++
+* Installations on the Windows operating system:
++
+SystemDrive``:\glassfish7\glassfish``
+
+|as-install-parent
+|Represents the parent of the base installation directory for {productName}.
+a|* Installations on the Oracle Solaris operating system, Linux operating
+system, and Mac operating system:
++
+user's-home-directory``/glassfish7``
++
+* Installations on the Windows operating system:
++
+SystemDrive``:\glassfish7``
+
+|domain-root-dir
+|Represents the directory in which a domain is created by default.
+|as-install``/domains/``
+
+|domain-dir
+|Represents the directory in which a domain's configuration is stored.
+In configuration files, domain-dir is represented as follows:
+`${com.sun.aas.instanceRoot}`
+|domain-root-dir/domain-name
+
+|instance-dir
+|Represents the directory for a server instance.
+|domain-dir/instance-name
+|===
+
diff --git a/docs/embedded-server-guide/src/main/asciidoc/title.adoc b/docs/embedded-server-guide/src/main/asciidoc/title.adoc
new file mode 100644
index 0000000..d1bde27
--- /dev/null
+++ b/docs/embedded-server-guide/src/main/asciidoc/title.adoc
@@ -0,0 +1,56 @@
+type=page
+status=published
+title={productName} Embedded Server Guide, Release 7
+next=preface.html
+prev=lot.html
+~~~~~~
+
+= {productName} Embedded Server Guide, Release 7
+
+[[eclipse-glassfish-server]]
+== {productName}
+
+Embedded Server Guide
+
+Release 7
+
+Contributed 2018 - 2022
+
+This document explains how to run applications in embedded {productName} and to develop applications in which
+{productName} is embedded. This document is for software developers
+who are developing applications to run in embedded {productName}. The
+ability to program in the Java language is assumed.
+
+Note: The main thrust of the {productName} 7
+release is to provide an application server for developers to explore
+and begin exploiting the new and updated technologies in the Jakarta EE 10
+platform. Thus, the embedded server feature of {productName} was not
+a focus of this release. This feature is included in the release, but it
+may not function properly with some of the new features added in support
+of the Jakarta EE 10 platform.
+
+[[sthref1]]
+
+'''''
+
+{productName} Embedded Server Guide, Release 7
+
+Copyright © 2013, 2019 Oracle and/or its affiliates. All rights reserved.
+
+This program and the accompanying materials are made available under the
+terms of the Eclipse Public License v. 2.0, which is available at
+http://www.eclipse.org/legal/epl-2.0.
+
+SPDX-License-Identifier: EPL-2.0
+
+Oracle and Java are registered trademarks of Oracle and/or its
+affiliates. Other names may be trademarks of their respective owners.
+
+Intel and Intel Xeon are trademarks or registered trademarks of Intel
+Corporation. All SPARC trademarks are used under license and are
+trademarks or registered trademarks of SPARC International, Inc. AMD,
+Opteron, the AMD logo, and the AMD Opteron logo are trademarks or
+registered trademarks of Advanced Micro Devices. UNIX is a registered
+trademark of The Open Group.
+
+image:img/eclipse_foundation_logo_tiny.png["Eclipse Logo"]
diff --git a/docs/embedded-server-guide/src/main/jbake/assets/css/style.css b/docs/embedded-server-guide/src/main/jbake/assets/css/style.css
deleted file mode 100644
index 25a16e4..0000000
--- a/docs/embedded-server-guide/src/main/jbake/assets/css/style.css
+++ /dev/null
@@ -1,315 +0,0 @@
-/* CSS */
-/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
-/** 1. Set default font family to sans-serif. 2. Prevent iOS text size adjust after orientation change, without disabling user zoom. */
-html { font-family: sans-serif; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ }
-
-/* HTML5 display definitions ========================================================================== */
-/** Correct `block` display not defined for any HTML5 element in IE 8/9. Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox. Correct `block` display not defined for `main` in IE 11. */
-article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { display: block; }
-
-/** 1. Correct `inline-block` display not defined in IE 8/9. 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. */
-audio, canvas, progress, video { display: inline-block; /* 1 */ vertical-align: baseline; /* 2 */ }
-
-/** Prevent modern browsers from displaying `audio` without controls. Remove excess height in iOS 5 devices. */
-audio:not([controls]) { display: none; height: 0; }
-
-/** Address `[hidden]` styling not present in IE 8/9/10. Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. */
-[hidden], template { display: none; }
-
-/* Links ========================================================================== */
-/** Remove the gray background color from active links in IE 10. */
-a { background-color: transparent; }
-
-/** Improve readability when focused and also mouse hovered in all browsers. */
-a:active, a:hover { outline: 0; }
-
-/* Text-level semantics ========================================================================== */
-/** Address styling not present in IE 8/9/10/11, Safari, and Chrome. */
-abbr[title] { border-bottom: 1px dotted; }
-
-/** Address style set to `bolder` in Firefox 4+, Safari, and Chrome. */
-b, strong { font-weight: bold; }
-
-/** Address styling not present in Safari and Chrome. */
-dfn { font-style: italic; }
-
-/** Address variable `h1` font-size and margin within `section` and `article` contexts in Firefox 4+, Safari, and Chrome. */
-h1 { font-size: 2em; margin: 0.67em 0; }
-
-/** Address styling not present in IE 8/9. */
-mark { background: #ff0; color: #000; }
-
-/** Address inconsistent and variable font size in all browsers. */
-small { font-size: 80%; }
-
-/** Prevent `sub` and `sup` affecting `line-height` in all browsers. */
-sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }
-
-sup { top: -0.5em; }
-
-sub { bottom: -0.25em; }
-
-/* Embedded content ========================================================================== */
-/** Remove border when inside `a` element in IE 8/9/10. */
-img { border: 0; }
-
-/** Correct overflow not hidden in IE 9/10/11. */
-svg:not(:root) { overflow: hidden; }
-
-/* Grouping content ========================================================================== */
-/** Address margin not present in IE 8/9 and Safari. */
-figure { margin: 1em 40px; }
-
-/** Address differences between Firefox and other browsers. */
-hr { box-sizing: content-box; height: 0; }
-
-/** Contain overflow in all browsers. */
-pre { overflow: auto; }
-
-/** Address odd `em`-unit font size rendering in all browsers. */
-code, kbd, pre, samp { font-family: monospace, monospace; font-size: 1em; }
-
-/* Forms ========================================================================== */
-/** Known limitation: by default, Chrome and Safari on OS X allow very limited styling of `select`, unless a `border` property is set. */
-/** 1. Correct color not being inherited. Known issue: affects color of disabled elements. 2. Correct font properties not being inherited. 3. Address margins set differently in Firefox 4+, Safari, and Chrome. */
-button, input, optgroup, select, textarea { color: inherit; /* 1 */ font: inherit; /* 2 */ margin: 0; /* 3 */ }
-
-/** Address `overflow` set to `hidden` in IE 8/9/10/11. */
-button { overflow: visible; }
-
-/** Address inconsistent `text-transform` inheritance for `button` and `select`. All other form control elements do not inherit `text-transform` values. Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. Correct `select` style inheritance in Firefox. */
-button, select { text-transform: none; }
-
-/** 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls. 2. Correct inability to style clickable `input` types in iOS. 3. Improve usability and consistency of cursor style between image-type `input` and others. */
-button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ }
-
-/** Re-set default cursor for disabled elements. */
-button[disabled], html input[disabled] { cursor: default; }
-
-/** Remove inner padding and border in Firefox 4+. */
-button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; }
-
-/** Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet. */
-input { line-height: normal; }
-
-/** It's recommended that you don't attempt to style these elements. Firefox's implementation doesn't respect box-sizing, padding, or width.  1. Address box sizing set to `content-box` in IE 8/9/10. 2. Remove excess padding in IE 8/9/10. */
-input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ }
-
-/** Fix the cursor style for Chrome's increment/decrement buttons. For certain `font-size` values of the `input`, it causes the cursor style of the decrement button to change from `default` to `text`. */
-input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { height: auto; }
-
-/** 1. Address `appearance` set to `searchfield` in Safari and Chrome. 2. Address `box-sizing` set to `border-box` in Safari and Chrome (include `-moz` to future-proof). */
-input[type="search"] { -webkit-appearance: textfield; /* 1 */ /* 2 */ box-sizing: content-box; }
-
-/** Remove inner padding and search cancel button in Safari and Chrome on OS X. Safari (but not Chrome) clips the cancel button when the search input has padding (and `textfield` appearance). */
-input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; }
-
-/** Define consistent border, margin, and padding. */
-fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; }
-
-/** 1. Correct `color` not being inherited in IE 8/9/10/11. 2. Remove padding so people aren't caught out if they zero out fieldsets. */
-legend { border: 0; /* 1 */ padding: 0; /* 2 */ }
-
-/** Remove default vertical scrollbar in IE 8/9/10/11. */
-textarea { overflow: auto; }
-
-/** Don't inherit the `font-weight` (applied by a rule above). NOTE: the default cannot safely be changed in Chrome and Safari on OS X. */
-optgroup { font-weight: bold; }
-
-/* Tables ========================================================================== */
-/** Remove most spacing between table cells. */
-table { border-collapse: collapse; border-spacing: 0; }
-
-td, th { padding: 0; }
-
-/* LAYOUT STYLES */
-
-p { margin-top: 0; }
-
-code, pre { margin-bottom: 30px; font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace; font-size: 13px; color: #222; }
-
-code { padding: 0 3px; background-color: #f2f8fc; border: solid 1px #dbe7f3; }
-
-pre { padding: 20px; overflow: auto; text-shadow: none; background: #fff; border: solid 1px #f2f2f2; }
-
-pre code { padding: 0; color: #2879d0; background-color: #fff; border: none; }
-
-ul, ol, dl { margin-bottom: 20px; }
-
-/* COMMON STYLES */
-
-td.halign-right { text-align: right; } 
-
-td.halign-center { text-align: center; } 
-
-form { padding: 20px; background: #f2f2f2; }
-
-h2 { 
-   font-size: 2em;
-   line-height: 1.2em;
-   font-weight: 200;
-   letter-spacing: 0;
-}
-
-h3 { 
-   font-size: 1.4em;
-   line-height: 1.2em;
-   font-weight: normal;
-   letter-spacing: 0;
-}
-
-.sect1 {
-   margin-left: 4%;
-   margin-right: 4%;
-   font: 13px/20px Arial, Helvetica, sans-serif  
-}
-
-a:link {
-   text-decoration: none;
-   color: #09569d;
-}
-
-#preamble hr{
-   margin-left: 0%;
-   margin-right: 0%;
-}
-
-#preamble .sectionbody table  {
-   font-weight: 200;
-   margin-left: 4%;
-   margin-right: 4%;
-}
-
-hr {
-   margin-bottom: 12px;
-}
-
-table.tableblock.frame-all.grid-all.spread {
-   font-size: 12px;
-}
-
-code {
-   font-size:.9em;
-   border: 1px solid #eaeaea;
-   background-color: #f6f6f6;
-   border-radius: 3px;
-   padding: 1px;
-   padding-left:2px;
-   padding-right:2px;
-}
-
-pre.prettyprint.highlight {
-   border: 1px solid #eaeaea;
-   background-color: #f6f6f6;
-   border-radius: 4px;
-   padding: 8px;
-   padding-top:4px;
-   padding-bottom:4px;
-}
-
-.language-oac_no_warn {
-   font-size:.9em;
-   color:#222;
-   background-color: transparent;
-}
-
-#doc-title {
-   margin-left: 4%;
-}
-
-#top-nav {
-   margin-left: 4%;
-   font-size: 12px;
-}
-
-#bottom-nav {
-   margin-left: 4%;
-   font-size: 12px;
-}
-
-.vector-font {
-   color:grey; 
-   font-size: 20px;
-}
-
-#copyright {
-   padding-top: 10px;
-   padding-bottom: 4px;
-   display: table;
-   margin:0 auto;
-   color: grey;
-   font-size: 12px;
-   vertical-align: middle;
-}
-
-.beta {color: #FF0000}
-
-/* GENERAL ELEMENT TYPE STYLES */
-
-/* #Media Queries
-================================================== */
-/* Smaller than standard 960 (devices and browsers) */
-/* Tablet Portrait size to standard 960 (devices and browsers) */
-@media only screen and (min-width: 768px) and (max-width: 959px) { .inner { width: 740px; }
-  header h1, header h2 { width: 340px; }
-  header h1 { font-size: 60px; }
-  header h2 { font-size: 30px; }
-}
-/* All Mobile Sizes (devices and browser) */
-@media only screen and (max-width: 767px) { .inner { width: 93%; }
-  header { padding: 20px 0; }
-  header .inner { position: relative; }
-  header h1, header h2 { width: 100%; }
-  header h1 { font-size: 48px; }
-  header h2 { font-size: 24px; }
-  header a.button { position: relative; display: inline-block; width: auto; height: auto; padding: 5px 10px; margin-top: 15px; font-size: 13px; line-height: 1; color: #2879d0; text-align: center; background-color: #9ddcff; background-image: none; border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; }
-  header a.button small { display: inline; font-size: 13px; }
-}
-/* Mobile Landscape Size to Tablet Portrait (devices and browsers) */
-/* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */
-
-header h1 { padding-top: 14px; font-size: 2em; font-weight: 200; line-height: 1.4; color: #FFFFFF; letter-spacing: 0px; border-bottom: 0px; }
-
-header h2 { font-size: 1.2em; margin-top: 0; margin-bottom: 0; font-weight: 200; line-height: .8; color: #ec7D11; letter-spacing: 0; }
-
-/*
-header a.button { background: transparent url(../images/logo.png) 0 0 no-repeat; padding-left: 32px; }
-*/
-
-header a:hover { text-decoration: none; }
-
-/* Admonition (Note) block */
-.admonitionblock > table {
-  border: 0;
-  background: none;
-  width: 100%;
-  table-layout: auto;
-  margin-bottom: 10.5px;
-}
-.admonitionblock > table td.icon {
-  text-align: center;
-  width: 60px;
-}
-.admonitionblock > table td.icon img {
-  max-width: none;
-}
-.admonitionblock > table td.icon .title {
-  text-transform: uppercase;
-}
-.admonitionblock > table td.content {
-  padding-left: 1em;
-  padding-right: 1em;
-  border-left: 3px solid #ddd;
-}
-.admonitionblock > table td.content > :last-child > :last-child {
-  margin-bottom: 0;
-}
-.admonitionblock td.icon [class^="fa icon-"]:before {
-  font-size: 2.5em;
-  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
-  cursor: default;
-}
-.admonitionblock td.icon .icon-note:before {
-  content: "\f05a";
-  color: #5bc0de;
-}
diff --git a/docs/embedded-server-guide/src/main/jbake/content/embedded-server-guide.adoc b/docs/embedded-server-guide/src/main/jbake/content/embedded-server-guide.adoc
deleted file mode 100644
index 03c9ead..0000000
--- a/docs/embedded-server-guide/src/main/jbake/content/embedded-server-guide.adoc
+++ /dev/null
@@ -1,2131 +0,0 @@
-type=page
-status=published
-title=Eclipse GlassFish Server 5.1 Embedded Server Guide
-prev=preface.html
-~~~~~~
-Eclipse GlassFish Server 5.1 Embedded Server Guide
-==================================================
-
-[[GSESG00001]][[gjldt]]
-
-
-[[glassfish-server-open-source-edition-4.0-embedded-server-guide]]
-1 Eclipse GlassFish Server 5.1 Embedded Server Guide
-----------------------------------------------------
-
-This document explains how to run applications in embedded GlassFish
-Server Open Source Edition and to develop applications in which
-GlassFish Server is embedded. This document is for software developers
-who are developing applications to run in embedded GlassFish Server. The
-ability to program in the Java language is assumed.
-
-The following topics are addressed here:
-
-* link:#giidt[Introduction to Embedded GlassFish Server]
-* link:#gkubb[Embedded GlassFish Server File System]
-* link:#giijw[Including the GlassFish Server Embedded Server API in
-Applications]
-* link:#gijhs[Testing Applications with the Maven Plug-in for Embedded
-GlassFish Server]
-* link:#gjlde[Using the EJB 3.1 Embeddable API with Embedded GlassFish
-Server]
-* link:#gjlfe[Changing Log Levels in Embedded GlassFish Server]
-* link:#gksmw[Default Java Persistence Data Source for Embedded
-GlassFish Server]
-* link:#gihxf[Restrictions for Embedded GlassFish Server]
-
-[[giidt]][[GSESG00035]][[introduction-to-embedded-glassfish-server]]
-
-Introduction to Embedded GlassFish Server
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Embedded Eclipse GlassFish Server enables you to use
-GlassFish Server as a library. Embedded GlassFish Server also enables
-you to run GlassFish Server inside any Virtual Machine for the Java
-platform (Java Virtual Machine or JVMmachine).
-
-No installation or configuration of embedded GlassFish Server is
-required. The ability to run GlassFish Server inside applications
-without installation or configuration simplifies the process of bundling
-GlassFish Server with applications.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Embedded GlassFish Server does not run on the Java Platform, Micro
-Edition (Java ME platform).
-
-|=======================================================================
-
-
-You can use embedded GlassFish Server in the following ways:
-
-* With the Embedded Server API (see link:#giijw[Including the GlassFish
-Server Embedded Server API in Applications])
-* With the Maven Plug-in (see link:#gijhs[Testing Applications with the
-Maven Plug-in for Embedded GlassFish Server])
-* With the EJB 3.1 Embeddable API (see link:#gjlde[Using the EJB 3.1
-Embeddable API with Embedded GlassFish Server])
-
-Embedded GlassFish Server provides a plug-in for
-http://maven.apache.org/[Apache Maven] (`http://maven.apache.org/`).
-This plug-in simplifies the testing of applications by enabling you to
-build an application and run it with GlassFish Server on a single
-system. Testing and debugging are simplified because the need for an
-installed and configured GlassFish Server is eliminated. Therefore, you
-can run unit tests automatically in every build.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-For information on how to embed GlassFish Server in an OSGi environment,
-see the link:../add-on-component-development-guide/toc.html#GSACG[GlassFish Server Open Source Edition Add-On
-Component Development Guide].
-
-|=======================================================================
-
-
-[[gkubb]][[GSESG00036]][[embedded-glassfish-server-file-system]]
-
-Embedded GlassFish Server File System
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following Embedded GlassFish Server directories and files are
-important if you are referencing a nonembedded installation of GlassFish
-Server:
-
-* link:#gikqf[Installation Root Directory]
-* link:#gikvf[Instance Root Directory]
-* link:#giiak[The `domain.xml` File]
-
-[[gikqf]][[GSESG00054]][[installation-root-directory]]
-
-Installation Root Directory
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The installation root directory, represented as as-install, is the
-parent of the directory that embedded GlassFish Server uses for
-configuration files. This directory corresponds to the base directory
-for an installation of GlassFish Server. Configuration files are
-contained in the following directories in the base directory for an
-installation of GlassFish Server:
-
-* `domains`
-* `lib`
-
-Specify the installation root directory only if you have a valid
-nonembedded GlassFish Server installation and are using
-`glassfish-embedded-static-shell.jar`.
-
-[[gikvf]][[GSESG00055]][[instance-root-directory]]
-
-Instance Root Directory
-^^^^^^^^^^^^^^^^^^^^^^^
-
-The instance root directory, represented as domain-dir, is the parent
-directory of a server instance directory. Embedded GlassFish Server Open
-Source Edition uses the server instance directory for domain
-configuration files.
-
-Specify the instance root directory only if you have a valid nonembedded
-GlassFish Server domain directory and are using
-`glassfish-embedded-static-shell.jar`.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-If you have valid nonembedded GlassFish Server as-install and domain-dir
-directories, specify both in the `BootstrapProperties` and
-`GlassFishProperties` classes respectively as described in
-link:#gihyr[Creating and Configuring an Embedded GlassFish Server].
-
-|=======================================================================
-
-
-If domain-dir is not specified, GlassFish Server creates a directory
-named `gfembed`random-number`tmp` in a temporary directory, where
-random-number is a randomly generated 19-digit number. GlassFish Server
-then copies configuration files into this directory. The temporary
-directory is the value of the system property `java.io.tmpdir`. You can
-override this value by specifying the `glassfish.embedded.tmpdir`
-property in the `GlassFishProperties` class or as a system property.
-
-[[giiak]][[GSESG00056]][[the-domain.xml-file]]
-
-The `domain.xml` File
-^^^^^^^^^^^^^^^^^^^^^
-
-Using an existing `domain.xml` file avoids the need to configure
-embedded GlassFish Server programmatically in your application. Your
-application obtains domain configuration data from an existing
-`domain.xml` file. You can create this file by using the administrative
-interfaces of an installation of nonembedded GlassFish Server. To
-specify an existing `domain.xml` file, invoke the `setConfigFileURI`
-method of the `GlassFishProperties` class as described in
-link:#gihyr[Creating and Configuring an Embedded GlassFish Server].
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-The built-in `domain.xml` file used by default by Embedded GlassFish
-Server can be downloaded from
-`http://embedded-glassfish.java.net/domain.xml`. You can customize this
-file and pass it in using the `setConfigFileURI` method while creating
-an Embedded GlassFish Server.
-
-|=======================================================================
-
-
-[[giijw]][[GSESG00037]][[including-the-glassfish-server-embedded-server-api-in-applications]]
-
-Including the GlassFish Server Embedded Server API in Applications
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Eclipse GlassFish Server provides an application programming
-interface (API) for developing applications in which GlassFish Server is
-embedded. For details, see the `org.glassfish.embeddable` packages at
-`http://embedded-glassfish.java.net/nonav/apidocs/`.
-
-The following topics are addressed here:
-
-* link:#giide[Setting the Class Path]
-* link:#giiky[Creating, Starting, and Stopping Embedded GlassFish
-Server]
-* link:#giigc[Deploying and Undeploying an Application in an Embedded
-GlassFish Server]
-* link:#gjldy[Running `asadmin` Commands Using the GlassFish Server
-Embedded Server API]
-* link:#gikrt[Sample Applications]
-
-[[giide]][[GSESG00057]][[setting-the-class-path]]
-
-Setting the Class Path
-^^^^^^^^^^^^^^^^^^^^^^
-
-To enable your applications to locate the class libraries for embedded
-GlassFish Server, add one of the following JAR files to your class path:
-
-`glassfish-embedded-nucleus.jar`::
-  Corresponds to the nucleus distribution. Download this file from
-  `http://download.java.net/maven/glassfish/org/glassfish/extras/glassfish-embedded-nucleus/`.
-`glassfish-embedded-web.jar`::
-  Contains classes needed for deploying Java EE web applications.
-  Download this file from
-  `http://download.java.net/maven/glassfish/org/glassfish/extras/glassfish-embedded-web/`.
-`glassfish-embedded-all.jar`::
-  Contains classes needed for deploying all Java EE application types.
-  Download this file from
-  `http://download.java.net/maven/glassfish/org/glassfish/extras/glassfish-embedded-all/`.
-`glassfish-embedded-static-shell.jar`::
-  Contains references to classes needed for deploying all Java EE
-  application types. Must be used with a nonembedded installation of
-  GlassFish Server. Reference this file from the
-  as-install`/lib/embedded` directory of a nonembedded GlassFish Server
-  installation. Do not move this file or it will not work. For an
-  explanation of as-install, see link:#gikqf[Installation Root
-  Directory].
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Oracle GlassFish Server only supports use of the
-`glassfish-embedded-static-shell.jar` file. The other files are part of
-Eclipse GlassFish Server and are offered without official
-support.
-
-|=======================================================================
-
-
-In addition, add to the class path any other JAR files or classes upon
-which your applications depend. For example, if an application uses a
-database other than Java DB, include the Java DataBase Connectivity
-(JDBC) driver JAR files in the class path.
-
-[[giiky]][[GSESG00058]][[creating-starting-and-stopping-embedded-glassfish-server]]
-
-Creating, Starting, and Stopping Embedded GlassFish Server
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Before you can run applications, you must set up and run the embedded
-GlassFish Server.
-
-The following topics are addressed here:
-
-* link:#gihyr[Creating and Configuring an Embedded GlassFish Server]
-* link:#gihyz[Running an Embedded GlassFish Server]
-
-[[gihyr]][[GSESG00043]][[creating-and-configuring-an-embedded-glassfish-server]]
-
-Creating and Configuring an Embedded GlassFish Server
-+++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-To create and configure an embedded GlassFish Server, perform these
-tasks:
-
-1.  Instantiate the `org.glassfish.embeddable.BootstrapProperties`
-class.
-2.  Invoke any methods for configuration settings that you require. This
-is optional.
-3.  Invoke the `GlassFishRuntime.bootstrap()` or
-`GlassFishRuntime.bootstrap(BootstrapProperties)` method to create a
-`GlassFishRuntime` object.
-4.  Instantiate the `org.glassfish.embeddable.GlassFishProperties`
-class.
-5.  Invoke any methods for configuration settings that you require. This
-is optional.
-6.  Invoke the `glassfishRuntime.newGlassFish(GlassFishProperties)`
-method to create a `GlassFish` object.
-
-The methods of the `BootstrapProperties` class for setting the server
-configuration are listed in the following table. The default value of
-each configuration setting is also listed.
-
-[[sthref4]][[gksir]]
-
-Table 1-1 Methods of the `BootstrapProperties` Class
-
-[width="100%",cols="<29%,<33%,<38%",options="header",]
-|=======================================================================
-|Purpose |Method |Default Value
-|References an existing link:#gikqf[Installation Root Directory], also
-called as-install a|
-[source,oac_no_warn]
-----
-setInstallRoot(String as-install)
-----
-
- |None. If `glassfish-embedded-static-shell.jar` is used, the
-link:#gikqf[Installation Root Directory] is automatically determined and
-need not be specified.
-|=======================================================================
-
-
-The methods of the `GlassFishProperties` class for setting the server
-configuration are listed in the following table. The default value of
-each configuration setting is also listed.
-
-[[sthref5]][[gkskl]]
-
-Table 1-2 Methods of the `GlassFishProperties` Class
-
-[width="100%",cols="<24%,<37%,<39%",options="header",]
-|=======================================================================
-|Purpose |Method |Default Value
-|References an existing link:#gikvf[Instance Root Directory], also
-called domain-dir a|
-[source,oac_no_warn]
-----
-setInstanceRoot(String domain-dir)
-----
-
- a|
-In order of precedence:
-
-* `glassfish.embedded.tmpdir` property value specified in
-`GlassFishProperties` object
-* `glassfish.embedded.tmpdir` system property value
-* `java.io.tmp` system property value
-* as-install`/domains/domain1` if a nonembedded installation is
-referenced
-
-|Creates a new or references an existing configuration file a|
-[source,oac_no_warn]
-----
-setConfigFileURI(String configFileURI)
-----
-
- a|
-In order of precedence:
-
-* domain-dir`/config/domain.xml` if domain-dir was set using
-`setInstanceRoot`
-* built-in embedded `domain.xml`
-
-|Specifies whether the configuration file is read-only a|
-[source,oac_no_warn]
-----
-setConfigFileReadOnly(boolean readOnly)
-----
-
- |`true`
-
-|Sets the port on which Embedded GlassFish Server listens.
-|`setPort`(String networkListener, int port) |none
-|=======================================================================
-
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Do not use `setPort` if you are using `setInstanceRoot` or
-`setConfigFileURI`.
-
-|=======================================================================
-
-
-[[GSESG00005]][[gikmz]]
-
-
-Example 1-1 Creating an Embedded GlassFish Server
-
-This example shows code for creating an Embedded GlassFish Server.
-
-[source,oac_no_warn]
-----
-...
-import org.glassfish.embeddable.*;
-...
-    GlassFish glassfish = GlassFishRuntime.bootstrap().newGlassFish();
-    glassfish.start();
-...
-----
-
-[[GSESG00006]][[gksjo]]
-
-
-Example 1-2 Creating an Embedded GlassFish Server with configuration
-customizations
-
-This example shows code for creating an Embedded GlassFish Server using
-the existing domain-dir
-`C:\samples\test\applicationserver\domains\domain1`.
-
-[source,oac_no_warn]
-----
-...
-import org.glassfish.embeddable.*;
-...
-    BootstrapProperties bootstrapProperties = new BootstrapProperties();
-    bootstrapProperties.setInstallRoot("C:\\samples\\test\\applicationserver");
-    GlassFishRuntime glassfishRuntime = GlassFishRuntime.bootstrap(bootstrapProperties);
-
-    GlassFishProperties glassfishProperties = new GlassFishProperties();
-    glassfishProperties.setInstanceRoot("C:\\samples\\test\\applicationserver\\domains\\domain1");
-    GlassFish glassfish = glassfishRuntime.newGlassFish(glassfishProperties);
-
-    glassfish.start();
-
-...
-----
-
-[[gihyz]][[GSESG00044]][[running-an-embedded-glassfish-server]]
-
-Running an Embedded GlassFish Server
-++++++++++++++++++++++++++++++++++++
-
-After you create an embedded GlassFish Server as described in
-link:#gihyr[Creating and Configuring an Embedded GlassFish Server], you
-can perform operations such as:
-
-* link:#gjkxx[Setting the Port of an Embedded GlassFish Server From an
-Application]
-* link:#gihzg[Starting an Embedded GlassFish Server From an Application]
-* link:#gihzy[Stopping an Embedded GlassFish Server From an Application]
-
-[[gjkxx]][[GSESG00002]][[setting-the-port-of-an-embedded-glassfish-server-from-an-application]]
-
-Setting the Port of an Embedded GlassFish Server From an Application
-
-You must set the server's HTTP or HTTPS port. If you do not set the
-port, your application fails to start and throws an exception. You can
-set the port directly or indirectly.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Do not use `setPort` if you are using `setInstanceRoot` or
-`setConfigFileURI`. These methods set the port indirectly.
-
-|=======================================================================
-
-
-* To set the port directly, invoke the `setPort` method of the
-`GlassFishProperties` object.
-* To set the port indirectly, use a `domain.xml` file that sets the
-port. For more information, see link:#giiak[The `domain.xml` File].
-
-[[GSESG00007]][[gjkxc]]
-
-
-Example 1-3 Setting the port of an Embedded GlassFish Server
-
-This example shows code for setting the port of an embedded GlassFish
-Server.
-
-[source,oac_no_warn]
-----
-...
-import org.glassfish.embeddable.*;
-...
-    GlassFishProperties glassfishProperties = new GlassFishProperties();
-    glassfishProperties.setPort("http-listener", 8080);
-    glassfishProperties.setPort("https-listener", 8181);
-...
-----
-
-[[gihzg]][[GSESG00003]][[starting-an-embedded-glassfish-server-from-an-application]]
-
-Starting an Embedded GlassFish Server From an Application
-
-To start an embedded GlassFish Server, invoke the `start` method of the
-`GlassFish` object.
-
-[[GSESG00008]][[gilry]]
-
-
-Example 1-4 Starting an Embedded GlassFish Server
-
-This example shows code for setting the port and starting an embedded
-GlassFish Server. This example also includes the code from
-link:#gikmz[Example 1-1] for creating a `GlassFish` object.
-
-[source,oac_no_warn]
-----
-...
-import org.glassfish.embeddable.*;
-...
-    GlassFishProperties glassfishProperties = new GlassFishProperties();
-    glassfishProperties.setPort("http-listener", 8080);
-    glassfishProperties.setPort("https-listener", 8181);
-    ...
-    GlassFish glassfish = GlassFishRuntime.bootstrap().newGlassFish(glassfishProperties);
-    glassfish.start();
-...
-----
-
-[[gihzy]][[GSESG00004]][[stopping-an-embedded-glassfish-server-from-an-application]]
-
-Stopping an Embedded GlassFish Server From an Application
-
-The API for embedded GlassFish Server provides a method for stopping an
-embedded server. Using this method enables your application to stop the
-server in an orderly fashion by performing any necessary cleanup steps
-before stopping the server, for example:
-
-* Undeploying deployed applications
-* Releasing any resources that your application uses
-
-To stop an embedded GlassFish Server, invoke the `stop` method of an
-existing `GlassFish` object.
-
-[[GSESG00009]][[gilnz]]
-
-
-Example 1-5 Stopping an Embedded GlassFish Server
-
-This example shows code for prompting the user to press the Enter key to
-stop an embedded GlassFish Server. Code for creating a `GlassFish`
-object is not shown in this example. For an example of code for creating
-a `GlassFish` object, see link:#gikmz[Example 1-1].
-
-[source,oac_no_warn]
-----
-...
-import java.io.BufferedReader;
-...
-import org.glassfish.embeddable.*;
-...
-    System.out.println("Press Enter to stop server");
-        // wait for Enter
-    glassfish.stop(); // Stop Embedded GlassFish Server
-...
-----
-
-As an alternative, you can use the `dispose` method to stop an embedded
-GlassFish Server and dispose of the temporary file system.
-
-[[giigc]][[GSESG00059]][[deploying-and-undeploying-an-application-in-an-embedded-glassfish-server]]
-
-Deploying and Undeploying an Application in an Embedded GlassFish Server
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Deploying an application installs the files that comprise the
-application into Embedded GlassFish Server and makes the application
-ready to run. By default, an application is enabled when it is deployed.
-
-The following topics are addressed here:
-
-* link:#gilrf[To Deploy an Application From an Archive File or a
-Directory]
-* link:#gilpm[Undeploying an Application]
-* link:#gjrcs[Creating a Scattered Archive]
-* link:#gkvgc[Creating a Scattered Enterprise Archive]
-
-For general information about deploying applications in GlassFish
-Server, see the link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition
-Application Deployment Guide].
-
-[[gilrf]][[GSESG00021]][[to-deploy-an-application-from-an-archive-file-or-a-directory]]
-
-To Deploy an Application From an Archive File or a Directory
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-An archive file contains the resources, deployment descriptor, and
-classes of an application. The content of the file must be organized in
-the directory structure that the Java EE specifications define for the
-type of archive that the file contains. For more information, see
-"link:../application-deployment-guide/deploying-applications.html#GSDPG00004[Deploying Applications]" in GlassFish Server Open
-Source Edition Application Deployment Guide.
-
-Deploying an application from a directory enables you to deploy an
-application without the need to package the application in an archive
-file. The contents of the directory must match the contents of the
-expanded Java EE archive file as laid out by the GlassFish Server. The
-directory must be accessible to the machine on which the deploying
-application runs. For more information about the requirements for
-deploying an application from a directory, see "link:../application-deployment-guide/deploying-applications.html#GSDPG00043[To
-Deploy an Application or Module in a Directory Format]" in GlassFish
-Server Open Source Edition Application Deployment Guide.
-
-If some of the resources needed by an application are not under the
-application's directory, see link:#gjrcs[Creating a Scattered Archive].
-
-1.  Instantiate the `java.io.File` class to represent the archive file
-or directory.
-2.  Invoke the `getDeployer` method of the `GlassFish` object to get an
-instance of the `org.glassfish.embeddable.Deployer` class.
-3.  Invoke the `deploy``(File` archive`,` params`)` method of the
-instance of the `Deployer` object. +
-Specify the `java.io.File` class instance you created previously as the
-first method parameter. +
-For information about optional parameters you can set, see the
-descriptions of the link:../reference-manual/deploy.html#GSRFM00114[`deploy`(1)] subcommand parameters.
-Simply quote each parameter in the method, for example `"--force=true"`.
-
-[[GSESG00010]][[gioph]]
-
-
-Example 1-6 Deploying an Application From an Archive File
-
-This example shows code for deploying an application from the archive
-file `c:\samples\simple.war` and setting the name, contextroot, and
-force parameters. This example also includes the code from
-link:#gikmz[Example 1-1] for creating `GlassFishProperties` and
-`GlassFish` objects.
-
-[source,oac_no_warn]
-----
-...
-import java.io.File;
-...
-import org.glassfish.embeddable.*;
-...
-    GlassFishProperties glassfishProperties = new GlassFishProperties();
-    glassfishProperties.setPort("http-listener", 8080);
-    glassfishProperties.setPort("https-listener", 8181);
-    ...
-    GlassFish glassfish = GlassFishRuntime.bootstrap().newGlassFish(glassfishProperties);
-    glassfish.start();
-    File war = new File("c:\\samples\\simple.war");
-    Deployer deployer = glassfish.getDeployer();
-    deployer.deploy(war, "--name=simple", "--contextroot=simple", "--force=true");
-    // deployer.deploy(war) can be invoked instead. Other parameters are optional.
-...
-----
-
-[[gilpm]][[GSESG00045]][[undeploying-an-application]]
-
-Undeploying an Application
-++++++++++++++++++++++++++
-
-Undeploy an application when the application is no longer required to
-run in GlassFish Server. For example, before stopping GlassFish Server,
-undeploy all applications that are running in GlassFish Server.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-If you reference a nonembedded GlassFish Server installation using the
-`glassfish-embedded-static-shell.jar` file and do not undeploy your
-applications in the same server life cycle in which you deployed them,
-expanded archives for these applications remain under the
-domain-dir`/applications` directory.
-
-|=======================================================================
-
-
-To undeploy an application, invoke the `undeploy` method of an existing
-`Deployer` object. In the method invocation, pass the name of the
-application as a parameter. This name is specified when the application
-is deployed.
-
-For information about optional parameters you can set, see the
-descriptions of the link:../reference-manual/deploy.html#GSRFM00114[`deploy`(1)] command parameters.
-Simply quote each parameter in the method, for example
-`"--cascade=true"`.
-
-To undeploy all deployed applications, invoke the `undeployAll` method
-of an existing `EmbeddedDeployer` object. This method takes no
-parameters.
-
-[[GSESG00011]][[gilwu]]
-
-
-Example 1-7 Undeploying an Application
-
-This example shows code for undeploying the application that was
-deployed in link:#gioph[Example 1-6].
-
-[source,oac_no_warn]
-----
-...
-import org.glassfish.embeddable.*;
-...
-    deployer.undeploy(war, "--droptables=true", "--cascade=true");
-...
-----
-
-[[gjrcs]][[GSESG00046]][[creating-a-scattered-archive]]
-
-Creating a Scattered Archive
-++++++++++++++++++++++++++++
-
-Deploying a module from a scattered archive (WAR or JAR) enables you to
-deploy an unpackaged module whose resources, deployment descriptor, and
-classes are in any location. Deploying a module from a scattered archive
-simplifies the testing of a module during development, especially if all
-the items that the module requires are not available to be packaged.
-
-In a scattered archive, these items are not required to be organized in
-a specific directory structure. Therefore, you must specify the location
-of the module's resources, deployment descriptor, and classes when
-deploying the module.
-
-To create a scattered archive, perform these tasks:
-
-1.  Instantiate the `org.glassfish.embeddable.archive.ScatteredArchive`
-class.
-2.  Invoke the `addClassPath` and `addMetadata` methods if you require
-them.
-3.  Invoke the `toURI` method to deploy the scattered archive.
-
-The methods of this class for setting the scattered archive
-configuration are listed in the following table. The default value of
-each configuration setting is also listed.
-
-[[sthref6]][[gjrdg]]
-
-Table 1-3 Constructors and Methods of the `ScatteredArchive` Class
-
-[width="100%",cols="<52%,<38%,<10%",options="header",]
-|=======================================================================
-|Purpose |Method |Default Value
-|Creates and names a scattered archive a|
-[source,oac_no_warn]
-----
-ScatteredArchive(String name,
-ScatteredArchive.Type type)
-----
-
- |None
-
-|Creates and names a scattered archive based on a top-level directory.
-If the entire module is organized under the topDir, this is the only
-method necessary. The topDir can be null if other methods specify the
-remaining parts of the module. a|
-[source,oac_no_warn]
-----
-ScatteredArchive(String name,
-ScatteredArchive.Type type,
-File topDir)
-----
-
- |None
-
-|Adds a directory to the classes classpath a|
-[source,oac_no_warn]
-----
-addClassPath(File path)
-----
-
- |None
-
-|Adds a metadata locator a|
-[source,oac_no_warn]
-----
-addMetaData(File path)
-----
-
- |None
-
-|Adds and names a metadata locator a|
-[source,oac_no_warn]
-----
-addMetaData(File path,
-String name)
-----
-
- |None
-
-|Gets the deployable URI for this scattered archive a|
-[source,oac_no_warn]
-----
-toURI()
-----
-
- |None
-|=======================================================================
-
-
-[[GSESG00012]][[gjrfq]]
-
-
-Example 1-8 Deploying an Application From a Scattered Archive
-
-This example shows code for creating a WAR file and using the
-`addClassPath` and `addMetadata` methods. This example also includes the
-code from link:#gioph[Example 1-6] for deploying an application from an
-archive file.
-
-[source,oac_no_warn]
-----
-...
-import java.io.File;
-...
-import org.glassfish.embeddable.*;
-...
-    GlassFishProperties glassfishProperties = new GlassFishProperties();
-    glassfishProperties.setPort("http-listener", 9090);
-    GlassFish glassfish = GlassFishRuntime.bootstrap().newGlassFish(glassfishProperties);
-    glassfish.start();
-    Deployer deployer = glassfish.getDeployer();
-    ScatteredArchive archive = new ScatteredArchive("testapp", ScatteredArchive.Type.WAR);
-    // target/classes directory contains complied servlets
-    archive.addClassPath(new File("target", "classes"));
-    // resources/sun-web.xml is the WEB-INF/sun-web.xml
-    archive.addMetadata(new File("resources", "sun-web.xml"));
-    // resources/web.xml is the WEB-INF/web.xml
-    archive.addMetadata(new File("resources", "web.xml"));
-    // Deploy the scattered web archive.
-    String appName = deployer.deploy(archive.toURI(), "--contextroot=hello");
-
-    deployer.undeploy(appName);
-    glassfish.stop();
-    glassfish.dispose();
-...
-----
-
-[[gkvgc]][[GSESG00047]][[creating-a-scattered-enterprise-archive]]
-
-Creating a Scattered Enterprise Archive
-+++++++++++++++++++++++++++++++++++++++
-
-Deploying an application from a scattered enterprise archive (EAR)
-enables you to deploy an unpackaged application whose resources,
-deployment descriptor, and classes are in any location. Deploying an
-application from a scattered archive simplifies the testing of an
-application during development, especially if all the items that the
-application requires are not available to be packaged.
-
-In a scattered archive, these items are not required to be organized in
-a specific directory structure. Therefore, you must specify the location
-of the application's resources, deployment descriptor, and classes when
-deploying the application.
-
-To create a scattered enterprise archive, perform these tasks:
-
-1.  Instantiate the
-`org.glassfish.embeddable.archive.ScatteredEnterpriseArchive` class.
-2.  Invoke the `addArchive` and `addMetadata` methods if you require
-them.
-3.  Invoke the `toURI` method to deploy the scattered enterprise
-archive.
-
-The methods of this class for setting the scattered enterprise archive
-configuration are listed in the following table. The default value of
-each configuration setting is also listed.
-
-[[sthref7]][[gkvgb]]
-
-Table 1-4 Constructors and Methods of the `ScatteredEnterpriseArchive`
-Class
-
-[width="99%",cols="<42%,<48%,<10%",options="header",]
-|=====================================================
-|Purpose |Method |Default Value
-|Creates and names a scattered enterprise archive a|
-[source,oac_no_warn]
-----
-ScatteredEnterpriseArchive(String name)
-----
-
- |None
-|Adds a module or library a|
-[source,oac_no_warn]
-----
-addArchive(File archive)
-----
-
- |None
-|Adds a module or library a|
-[source,oac_no_warn]
-----
-addArchive(File archive,
-String name)
-----
-
- |None
-|Adds a module or library a|
-[source,oac_no_warn]
-----
-addArchive(URI URI)
-----
-
- |None
-|Adds a module or library a|
-[source,oac_no_warn]
-----
-addArchive(URI URI,
-String name)
-----
-
- |None
-|Adds a metadata locator a|
-[source,oac_no_warn]
-----
-addMetaData(File path)
-----
-
- |None
-|Adds and names a metadata locator a|
-[source,oac_no_warn]
-----
-addMetaData(File path,
-String name)
-----
-
- |None
-|Gets the deployable URI for this scattered archive a|
-[source,oac_no_warn]
-----
-toURI()
-----
-
- |None
-|=====================================================
-
-
-[[GSESG00013]][[gkvga]]
-
-
-Example 1-9 Deploying an Application From a Scattered Enterprise Archive
-
-This example shows code for creating an EAR file and using the
-`addArchive` and `addMetadata` methods. This example also includes code
-similar tolink:#gjrfq[Example 1-8] for creating a scattered archive.
-
-[source,oac_no_warn]
-----
-...
-import java.io.File;
-...
-import org.glassfish.embeddable.*;
-...
-    GlassFishProperties glassfishProperties = new GlassFishProperties();
-    glassfishProperties.setPort("http-listener", 9090);
-    GlassFish glassfish = GlassFishRuntime.bootstrap().newGlassFish(glassfishProperties);
-    glassfish.start();
-    Deployer deployer = glassfish.getDeployer();
-
-    // Create a scattered web application.
-    ScatteredArchive webmodule = new ScatteredArchive("testweb", ScatteredArchive.Type.WAR);
-    // target/classes directory contains my complied servlets
-    webmodule.addClassPath(new File("target", "classes"));
-    // resources/sun-web.xml is my WEB-INF/sun-web.xml
-    webmodule.addMetadata(new File("resources", "sun-web.xml"));
-
-    // Create a scattered enterprise archive.
-    ScatteredEnterpriseArchive archive = new ScatteredEnterpriseArchive("testapp");
-    // src/application.xml is my META-INF/application.xml
-    archive.addMetadata(new File("src", "application.xml"));
-    // Add scattered web module to the scattered enterprise archive.
-    // src/application.xml references Web module as "scattered.war".
-    //Hence specify the name while adding the archive.
-    archive.addArchive(webmodule.toURI(), "scattered.war");
-    // lib/mylibrary.jar is a library JAR file.
-    archive.addArchive(new File("lib", "mylibrary.jar"));
-    // target/ejbclasses contain my compiled EJB module.
-    // src/application.xml references EJB module as "ejb.jar".
-    //Hence specify the name while adding the archive.
-    archive.addArchive(new File("target", "ejbclasses"), "ejb.jar");
-
-    // Deploy the scattered enterprise archive.
-    String appName = deployer.deploy(archive.toURI());
-
-    deployer.undeploy(appName);
-    glassfish.stop();
-    glassfish.dispose();
-...
-----
-
-[[gjldy]][[GSESG00060]][[running-asadmin-commands-using-the-glassfish-server-embedded-server-api]]
-
-Running `asadmin` Commands Using the GlassFish Server Embedded Server
-API
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Running link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`] commands from an application enables
-the application to configure the embedded GlassFish Server to suit the
-application's requirements. For example, an application can run the
-required `asadmin` commands to create a JDBC technology connection to a
-database.
-
-For more information about configuring embedded GlassFish Server, see
-the link:../administration-guide/toc.html#GSADG[GlassFish Server Open Source Edition Administration
-Guide]. For detailed information about `asadmin` commands, see Section 1
-of the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference
-Manual].
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Ensure that your application has started an embedded GlassFish Server
-before the application attempts to run `asadmin` commands. For more
-information, see link:#gihyz[Running an Embedded GlassFish Server].
-
-|=======================================================================
-
-
-The `org.glassfish.embeddable` package contains classes that you can use
-to run `asadmin` commands. Use the following code examples as templates
-and change the command name, parameter names, and parameter values as
-needed.
-
-[[GSESG00014]][[gjldj]]
-
-
-Example 1-10 Running an `asadmin create-jdbc-resource` Command
-
-This example shows code for running an `asadmin create-jdbc-resource`
-command. Code for creating and starting the server is not shown in this
-example. For an example of code for creating and starting the server,
-see link:#gilry[Example 1-4].
-
-[source,oac_no_warn]
-----
-...
-import org.glassfish.embeddable.*;
-...
-    String command = "create-jdbc-resource";
-    String poolid = "--connectionpoolid=DerbyPool";
-    String dbname = "jdbc/DerbyPool";
-    CommandRunner commandRunner = glassfish.getCommandRunner();
-    CommandResult commandResult = commandRunner.run(command, poolid, dbname);
-...
-----
-
-[[GSESG00015]][[gjlfm]]
-
-
-Example 1-11 Running an `asadmin set-log-level` Command
-
-This example shows code for running an `asadmin set-log-level` command.
-Code for creating and starting the server is not shown in this example.
-For an example of code for creating and starting the server, see
-link:#gilry[Example 1-4].
-
-[source,oac_no_warn]
-----
-...
-import org.glassfish.embeddable.*;
-...
-    String command = "set-log-level";
-    String weblevel = "jakarta.enterprise.system.container.web=FINE";
-    CommandRunner commandRunner = glassfish.getCommandRunner();
-    CommandResult commandResult = commandRunner.run(command, weblevel);
-...
-----
-
-For another way to change log levels, see link:#gjlfe[Changing Log
-Levels in Embedded GlassFish Server].
-
-[[gikrt]][[GSESG00061]][[sample-applications]]
-
-Sample Applications
-^^^^^^^^^^^^^^^^^^^
-
-[[GSESG00016]][[gionq]]
-
-
-Example 1-12 Using an Existing `domain.xml` File and Deploying an
-Application From an Archive File
-
-This example shows code for the following:
-
-* Using the existing file
-`c:\myapp\embeddedserver\domains\domain1\config\domain.xml` and
-preserving this file when the application is stopped.
-* Deploying an application from the archive file
-`c:\samples\simple.war`.
-
-[source,oac_no_warn]
-----
-import java.io.File;
-import java.io.BufferedReader;
-import org.glassfish.embeddable.*;
-
-public class Main {
-
-     /**
-     * @param args the command line arguments
-     */
-
-    public static void main(String[] args) {
-        File configFile = new File ("c:\\myapp\\embeddedserver\\domains\\domain1\\config\\domain.xml");
-        File war = new File("c:\\samples\\simple.war");
-        try {
-            GlassFishRuntime glassfishRuntime = GlassFishRuntime.bootstrap();
-            ...
-            GlassFishProperties glassfishProperties = new GlassFishProperties();
-            glassfishProperties.setConfigFileURI(configFile.toURI());
-            glassfishProperties.setConfigFileReadOnly(false);
-            ...
-            GlassFish glassfish = glassfishRuntime.newGlassFish(glassfishProperties);
-            glassfish.start();
-
-            Deployer deployer = glassfish.getDeployer();
-            deployer.deploy(war, "--force=true");
-        }
-        catch (Exception e) {
-            e.printStackTrace();
-        }
-
-        System.out.println("Press Enter to stop server");
-        // wait for Enter
-        new BufferedReader(new java.io.InputStreamReader(System.in)).readLine();
-        try {
-            glassfish.dispose();
-            glassfishRuntime.shutdown();
-        }
-        catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-}
-----
-
-[[gijhs]][[GSESG00038]][[testing-applications-with-the-maven-plug-in-for-embedded-glassfish-server]]
-
-Testing Applications with the Maven Plug-in for Embedded GlassFish Server
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-If you are using http://maven.apache.org/[Apache Maven]
-(`http://maven.apache.org/`), the plug-in for embedded GlassFish Server
-simplifies the testing of applications. This plug-in enables you to
-build and start an unpackaged application with a single Maven goal.
-
-The following topics are addressed here:
-
-* link:#gihus[To Set Up Your Maven Environment]
-* link:#giivt[To Build and Start an Application From Maven]
-* link:#gijly[To Stop Embedded GlassFish Server]
-* link:#gijjn[To Redeploy an Application That Was Built and Started From
-Maven]
-* link:#gjkps[Maven Goals for Embedded GlassFish Server]
-
-Predefined Maven goals for embedded GlassFish Server are described in
-link:#gjkps[Maven Goals for Embedded GlassFish Server].
-
-To use Maven with Embedded GlassFish Server and the EJB 3.1 Embeddable
-API, see link:#gjxff[Using Maven with the EJB 3.1 Embeddable API and
-Embedded GlassFish Server].
-
-[[gihus]][[GSESG00022]][[to-set-up-your-maven-environment]]
-
-To Set Up Your Maven Environment
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Setting up your Maven environment enables Maven to download the required
-embedded GlassFish Server distribution file when you build your project.
-Setting up your Maven environment also identifies the plug-in that
-enables you to build and start an unpackaged application with a single
-Maven goal.
-
-[[sthref8]]
-
-Before You Begin
-
-Ensure that http://maven.apache.org/[Apache Maven]
-(`http://maven.apache.org/`) is installed.
-
-1.  Identify the Maven plug-in for embedded GlassFish Server. +
-Add the following `plugin` element to your POM file: +
-[source,oac_no_warn]
-----
-...
-        ...
-        <plugins>
-            ...
-            <plugin>
-                <groupId>org.glassfish</groupId>
-                <artifactId>maven-embedded-glassfish-plugin</artifactId>
-                <version>version</version>
-            </plugin>
-            ...
-        </plugins>
-...
-----
-version::
-  The version to use. The version of the final promoted build for this
-  release is `3.1`. The Maven plug-in is not bound to a specific version
-  of GlassFish Server. You can specify the version you want to use. If
-  no version is specified, a default version, 3.1 for this release, is
-  used.
-2.  Configure the `embedded-glassfish` goal prefix, the application
-name, and other standard settings. +
-Add the following `configuration` element to your POM file: +
-[source,oac_no_warn]
-----
-...
-        <plugins>
-            ...
-            <plugin>
-                ...
-                <configuration>
-                    <goalPrefix>embedded-glassfish</goalPrefix>
-                    ...
-                    <app>target/test.war</app>
-                    <port>8080</port>
-                    <contextRoot>test</contextRoot>
-                    <autoDelete>true</autoDelete>
-                    ...
-                </configuration>
-                ...
-            </plugin>
-            ...
-        </plugins>
-...
-----
-In the app parameter, substitute the archive file or directory for your
-application. The optional port, contextRoot, and autoDelete parameters
-show example values. For details, see link:#gjkps[Maven Goals for
-Embedded GlassFish Server].
-3.  Perform advanced plug-in configuration. This step is optional. +
-Add the following `configuration` element to your POM file: +
-[source,oac_no_warn]
-----
-...
-        <plugins>
-            ...
-            <plugin>
-                ...
-                <configuration>
-                    <goalPrefix>embedded-glassfish</goalPrefix>
-                    <app>target/test.war</app>
-                    <name>test</name>
-                    <contextRoot>test</contextRoot>
-                    <ports>
-                        <http-listener>8080</http-listener>
-                        <https-listener>8181</https-listener>
-                    </ports>
-                    <bootstrapProperties>
-                        <property>test_key=test_value</property>
-                    </bootstrapProperties>
-                    <bootstrapPropertiesFile>bootstrap.properties</bootstrapPropertiesFile>
-                    <glassfishProperties>
-<property>embedded-glassfish-config.server.jms-service.jms-host.default_JMS_host.port=17676</property>
-                    </glassfishProperties>
-                    <glassfishPropertiesFile>glassfish.properties</glassfishPropertiesFile>
-                    <systemProperties>
-                        <property>ANTLR_USE_DIRECT_CLASS_LOADING=true</property>
-                    </systemProperties>
-                    <systemPropertiesFile>system.properties</systemPropertiesFile>
-                </configuration>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>start</goal>
-                            <goal>deploy</goal>
-                            <goal>undeploy</goal>
-                            <goal>stop</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            ...
-        </plugins>
-...
-----
-4.  Configure Maven goals. +
-Add `execution` elements to your POM file: +
-[source,oac_no_warn]
-----
-...
-        <plugins>
-            ...
-            <plugin>
-                ...
-                <executions>
-                    <execution>
-                        <phase>install</phase>
-                        <goals>
-                                <goal>goal</goal>
-                        </goals>
-                    </execution>
-                </executions>
-                ...
-            </plugin>
-            ...
-        </plugins>
-...
-----
-goal::
-  The goal to use. See link:#gjkps[Maven Goals for Embedded GlassFish
-  Server].
-5.  Configure the repository. +
-Add the following `repository` element to your POM file: +
-[source,oac_no_warn]
-----
-<pluginRepositories>
-    <pluginRepository>
-        <id>maven2-repository.dev.java.net</id>
-        <name>Java.net Repository for Maven</name>
-        <url>http://download.java.net/maven/glassfish/</url>
-    </pluginRepository>
-</pluginRepositories>
-----
-
-[[GSESG00017]][[gjkod]]
-
-
-Example 1-13 POM File for Configuring Maven to Use Embedded GlassFish
-Server
-
-This example shows a POM file for configuring Maven to use embedded
-GlassFish Server.
-
-[source,oac_no_warn]
-----
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-Line breaks in the following element are for readability purposes only
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
-http://maven.apache.org/maven-v4_0_0.xsd">
-
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>org.glassfish</groupId>
-  <artifactId>maven-glassfish-plugin-tester</artifactId>
-  <version>3.1</version>
-  <name>Maven test</name>
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.glassfish</groupId>
-        <artifactId>maven-embedded-glassfish-plugin</artifactId>
-        <version>3.1</version>
-        <configuration>
-          <goalPrefix>embedded-glassfish</goalPrefix>
-          <app>target/test.war</app>
-          <port>8080</port>
-          <contextRoot>test</contextRoot>
-          <autoDelete>true</autoDelete>
-       </configuration>
-       <executions>
-          <execution>
-             <phase>install</phase>
-             <goals>
-                   <goal>run</goal>
-             </goals>
-          </execution>
-       </executions>
-     </plugin>
-    </plugins>
-  </build>
-  <pluginRepositories>
-      <pluginRepository>
-          <id>maven2-repository.dev.java.net</id>
-          <name>Java.net Repository for Maven</name>
-          <url>http://download.java.net/maven/glassfish/</url>
-      </pluginRepository>
-  </pluginRepositories>
-</project>
-----
-
-[[giivt]][[GSESG00023]][[to-build-and-start-an-application-from-maven]]
-
-To Build and Start an Application From Maven
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-If you are using Maven to manage the development of your application,
-you can use a Maven goal to build and start the application in embedded
-GlassFish Server.
-
-[[sthref9]]
-
-Before You Begin
-
-Ensure that your Maven environment is configured, as described in
-link:#gihus[To Set Up Your Maven Environment].
-
-1.  Include the path to the Maven executable file `mvn` in your path
-statement.
-2.  Ensure that the `JAVA_HOME` environment variable is defined.
-3.  Create a directory for the Maven project for your application.
-4.  Copy to your project directory the POM file that you created in
-link:#gihus[To Set Up Your Maven Environment].
-5.  Run the following command in your project directory: +
-[source,oac_no_warn]
-----
-mvn install
-----
-This command performs the following actions:
-* Installs the Maven repository in a directory named `.m2` under your
-home directory.
-* Starts Embedded GlassFish Server.
-* Deploys your application. +
-The application continues to run in Embedded GlassFish Server until
-Embedded GlassFish Server is stopped.
-
-[[gijly]][[GSESG00024]][[to-stop-embedded-glassfish-server]]
-
-To Stop Embedded GlassFish Server
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-1.  Change to the root directory of the Maven project for your
-application.
-2.  Run the Maven goal to stop the application in embedded GlassFish
-Server. +
-[source,oac_no_warn]
-----
-mvn embedded-glassfish:stop
-----
-This runs the `stop` method of the `GlassFish` object and any other
-methods that are required to shut down the server in an orderly fashion.
-See link:#gihzy[Stopping an Embedded GlassFish Server From an
-Application].
-
-[[gijjn]][[GSESG00025]][[to-redeploy-an-application-that-was-built-and-started-from-maven]]
-
-To Redeploy an Application That Was Built and Started From Maven
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-An application that was built and started from Maven continues to run in
-Embedded GlassFish Server until Embedded GlassFish Server is stopped.
-While the application is running, you can test changes to the
-application by redeploying it.
-
-To redeploy, in the window from where the application was built and
-started from Maven, press Enter.
-
-[[gjkps]][[GSESG00062]][[maven-goals-for-embedded-glassfish-server]]
-
-Maven Goals for Embedded GlassFish Server
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can use the following Maven goals to test your applications with
-embedded GlassFish Server:
-
-* link:#gjkxo[`embedded-glassfish:run` Goal]
-* link:#gjkwy[`embedded-glassfish:start` Goal]
-* link:#gjkvc[`embedded-glassfish:deploy` Goal]
-* link:#gjkvg[`embedded-glassfish:undeploy` Goal]
-* link:#gjkyl[`embedded-glassfish:stop` Goal]
-* link:#gjkxq[`embedded-glassfish:admin` Goal]
-
-[[gjkxo]][[GSESG00048]][[embedded-glassfishrun-goal]]
-
-`embedded-glassfish:run` Goal
-+++++++++++++++++++++++++++++
-
-This goal starts the server and deploys an application. You can redeploy
-if you change the application. The application can be a packaged archive
-or a directory that contains an exploded application. You can set the
-parameters described in the following table.
-
-[[sthref10]][[gjkws]]
-
-Table 1-5 `embedded-glassfish:run` Parameters
-
-[width="100%",cols="<18%,<42%,<40%",options="header",]
-|=======================================================================
-|Parameter |Default |Description
-|app |None |The archive file or directory for the application to be
-deployed.
-
-|serverID |`maven` |(optional) The ID of the server to start.
-
-|containerType |`all` |(optional) The container to start: `web`, `ejb`,
-`jpa`, or `all`.
-
-|installRoot |None |(optional) The link:#gikqf[Installation Root
-Directory].
-
-|instanceRoot a|
-In order of precedence:
-
-* `glassfish.embedded.tmpdir` property value specified in
-`GlassFishProperties` object
-* `glassfish.embedded.tmpdir` system property value
-* `java.io.tmp` system property value
-* as-install`/domains/domain1` if a nonembedded installation is
-referenced
-
- |(optional) The link:#gikvf[Instance Root Directory]
-
-|configFile |domain-dir`/config/domain.xml` |(optional) The
-configuration file.
-
-|port |None. Must be set explicitly or defined in the configuration
-file. |The HTTP or HTTPS port.
-
-|name a|
-In order of precedence:
-
-* The `application-name` or `module-name` in the deployment descriptor.
-* The name of the archive file without the extension or the directory
-name.
-
-For more information, see "link:../application-deployment-guide/overview.html#GSDPG00323[Naming Standards]" in
-Eclipse GlassFish Server Application Deployment Guide.
-
- |(optional) The name of the application.
-
-|contextRoot |The name of the application. |(optional) The context root
-of the application.
-
-|precompileJsp |`false` |(optional) If `true`, JSP pages are precompiled
-during deployment.
-
-|dbVendorName |None |(optional) The name of the database vendor for
-which tables can be created. Allowed values are `javadb`, `db2`,
-`mssql`, `mysql`, `oracle`, `postgresql`, `pointbase`, `derby` (also for
-CloudScape), and `sybase`, case-insensitive.
-
-|createTables |Value of the `create-tables-at-deploy` attribute in
-`sun-ejb-jar.xml`. |(optional) If `true`, creates database tables during
-deployment for beans that are automatically mapped by the EJB container.
-
-|dropTables |Value of the `drop-tables-at-undeploy` attribute in
-`sun-ejb-jar.xml`. a|
-(optional) If `true`, and deployment and undeployment occur in the same
-JVM session, database tables that were automatically created when the
-bean(s) were deployed are dropped when the bean(s) are undeployed.
-
-If `true`, the name parameter must be specified or tables may not be
-dropped.
-
-|autoDelete |`false` a|
-(optional) If `true`, deletes the contents of the link:#gikvf[Instance
-Root Directory] when the server is stopped.
-
-Caution: Do not set `autoDelete` to `true` if you are using
-`installRoot` to refer to a preexisting GlassFish Server installation.
-
-|=======================================================================
-
-
-[[gjkwy]][[GSESG00049]][[embedded-glassfishstart-goal]]
-
-`embedded-glassfish:start` Goal
-+++++++++++++++++++++++++++++++
-
-This goal starts the server. You can set the parameters described in the
-following table.
-
-[[sthref11]][[gjkye]]
-
-Table 1-6 `embedded-glassfish:start` Parameters
-
-[width="100%",cols="<17%,<38%,<45%",options="header",]
-|=======================================================================
-|Parameter |Default |Description
-|serverID |`maven` |(optional) The ID of the server to start.
-
-|containerType |`all` |(optional) The container to start: `web`, `ejb`,
-`jpa`, or `all`.
-
-|installRoot |None |(optional) The link:#gikqf[Installation Root
-Directory].
-
-|instanceRoot a|
-In order of precedence:
-
-* `glassfish.embedded.tmpdir` system property value
-* `java.io.tmpdir` system property value
-* as-install`/domains/domain1`
-
- |(optional) The link:#gikvf[Instance Root Directory]
-
-|configFile |domain-dir`/config/domain.xml` |(optional) The
-configuration file.
-
-|port |None. Must be set explicitly or defined in the configuration
-file. |The HTTP or HTTPS port.
-
-|autoDelete |`false` a|
-(optional) If `true`, deletes the contents of the link:#gikvf[Instance
-Root Directory] when the server is stopped.
-
-Caution: Do not set `autoDelete` to `true` if you are using
-`installRoot` to refer to a preexisting GlassFish Server installation.
-
-|=======================================================================
-
-
-[[gjkvc]][[GSESG00050]][[embedded-glassfishdeploy-goal]]
-
-`embedded-glassfish:deploy` Goal
-++++++++++++++++++++++++++++++++
-
-This goal deploys an application. You can redeploy if you change the
-application. The application can be a packaged archive or a directory
-that contains an exploded application. You can set the parameters
-described in the following table.
-
-[[sthref12]][[gjkvv]]
-
-Table 1-7 `embedded-glassfish:deploy` Parameters
-
-[width="100%",cols="<18%,<39%,<43%",options="header",]
-|=======================================================================
-|Parameter |Default |Description
-|app |None |The archive file or directory for the application to be
-deployed.
-
-|serverID |`maven` |(optional) The ID of the server to start.
-
-|name a|
-In order of precedence:
-
-* The `application-name` or `module-name` in the deployment descriptor.
-* The name of the archive file without the extension or the directory
-name.
-
-For more information, see "link:../application-deployment-guide/overview.html#GSDPG00323[Naming Standards]" in
-Eclipse GlassFish Server Application Deployment Guide.
-
- |(optional) The name of the application.
-
-|contextRoot |The name of the application. |(optional) The context root
-of the application.
-
-|precompileJsp |`false` |(optional) If `true`, JSP pages are precompiled
-during deployment.
-
-|dbVendorName |None |(optional) The name of the database vendor for
-which tables can be created. Allowed values are `javadb`, `db2`,
-`mssql`, `oracle`, `postgresql`, `pointbase`, `derby` (also for
-CloudScape), and `sybase`, case-insensitive.
-
-|createTables |Value of the `create-tables-at-deploy` attribute in
-`sun-ejb-jar.xml`. |(optional) If `true`, creates database tables during
-deployment for beans that are automatically mapped by the EJB container.
-|=======================================================================
-
-
-[[gjkvg]][[GSESG00051]][[embedded-glassfishundeploy-goal]]
-
-`embedded-glassfish:undeploy` Goal
-++++++++++++++++++++++++++++++++++
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-If you reference a nonembedded GlassFish Server installation using the
-`glassfish-embedded-static-shell.jar` file and do not undeploy your
-applications in the same server life cycle in which you deployed them,
-expanded archives for these applications remain under the
-domain-dir`/applications` directory.
-
-|=======================================================================
-
-
-This goal undeploys an application. You can set the parameters described
-in the following table.
-
-[[sthref13]][[gjkxf]]
-
-Table 1-8 `embedded-glassfish:undeploy` Parameters
-
-[width="100%",cols="<14%,<34%,<52%",options="header",]
-|=======================================================================
-|Parameter |Default |Description
-|name |If the name is omitted, all applications are undeployed. |The
-name of the application.
-
-|serverID |`maven` |(optional) The ID of the server to start.
-
-|dropTables |Value of the `drop-tables-at-undeploy` attribute in
-`sun-ejb-jar.xml`. a|
-(optional) If `true`, and deployment and undeployment occur in the same
-JVM session, database tables that were automatically created when the
-bean(s) were deployed are dropped when the bean(s) are undeployed.
-
-If `true`, the name parameter must be specified or tables may not be
-dropped.
-
-|cascade |`false` a|
-(optional) If `true`, deletes all connection pools and connector
-resources associated with the resource adapter being undeployed.
-
-If `false`, undeployment fails if any pools or resources are still
-associated with the resource adapter.
-
-This attribute is applicable to connectors (resource adapters) and
-applications with connector modules.
-
-|=======================================================================
-
-
-[[gjkyl]][[GSESG00052]][[embedded-glassfishstop-goal]]
-
-`embedded-glassfish:stop` Goal
-++++++++++++++++++++++++++++++
-
-This goal stops the server. You can set the parameters described in the
-following table.
-
-[[sthref14]][[gjkwm]]
-
-Table 1-9 `embedded-glassfish:stop` Parameters
-
-[width="100%",cols="<16%,<17%,<67%",options="header",]
-|===========================================================
-|Parameter |Default |Description
-|serverID |`maven` |(optional) The ID of the server to stop.
-|===========================================================
-
-
-[[gjkxq]][[GSESG00053]][[embedded-glassfishadmin-goal]]
-
-`embedded-glassfish:admin` Goal
-+++++++++++++++++++++++++++++++
-
-This goal runs a GlassFish Server administration command. You must use
-either the command and commandParameters parameters in combination or
-the commandLine parameter. For more information about administration
-commands, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition
-Reference Manual]. You can set the parameters described in the following
-table.
-
-[[sthref15]][[gjkwe]]
-
-Table 1-10 `embedded-glassfish:start` Parameters
-
-[width="100%",cols="<24%,<10%,<66%",options="header",]
-|=======================================================================
-|Parameter |Default |Description
-|serverID |`maven` |(optional) The ID of the server on which to run the
-command.
-
-|command |None |The name of the command, for example
-`createJdbcResource`.
-
-|commandParameters |None |A map of the command parameters. See the
-`org.glassfish.embeddable.admin.CommandParameters` class at
-`http://glassfish.java.net/nonav/docs/v3/api/`.
-
-|commandLine |None |The full `asadmin` syntax of the command.
-|=======================================================================
-
-
-[[gjlde]][[GSESG00039]][[using-the-ejb-3.1-embeddable-api-with-embedded-glassfish-server]]
-
-Using the EJB 3.1 Embeddable API with Embedded GlassFish Server
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The EJB 3.1 Embeddable API is designed for unit testing of EJB modules.
-You must use this API with a pre-installed, nonembedded GlassFish Server
-instance. However, you can take advantage of Embedded GlassFish Server's
-ease of use by referencing the nonembedded GlassFish Server instance
-with the `glassfish-embedded-static-shell.jar` file.
-
-Embedded GlassFish Server is not related to the EJB 3.1 Embeddable API,
-but you can use these APIs together.
-
-The Maven plug-in does not apply to embeddable EJB applications.
-However, you can use Maven with the POM file shown in link:#gjxff[Using
-Maven with the EJB 3.1 Embeddable API and Embedded GlassFish Server].
-
-The EJB 3.1 Embeddable API is described in
-http://jcp.org/en/jsr/detail?id=318[Java Specification Request (JSR)
-318] (`http://jcp.org/en/jsr/detail?id=318`). An `ejb-embedded` sample
-is included in the samples available at
-http://www.oracle.com/technetwork/java/javaee/downloads/index.html[Java
-EE 7 Downloads]
-(`http://www.oracle.com/technetwork/java/javaee/downloads/index.html`)
-or
-http://www.oracle.com/technetwork/java/javaee/documentation/index.html[Code
-Samples]
-(`http://www.oracle.com/technetwork/java/javaee/documentation/index.html`).
-
-The EJB 3.1 Embeddable API supports all EJB 3.1 Lite features with
-addition of the EJB timer service and testing of EJB modules packaged in
-a WAR file.
-
-For EJB modules in a WAR file (or an exploded directory), if a web
-application has one EJB module, and there are no other EJB modules in
-the classpath, those entries (libraries) are ignored. If there are other
-EJB modules, a temporary EAR file is created. For EJB modules in a WAR
-file to be tested, the client code must use EJB modules with interfaces
-or without annotations. Those EJB modules are not part of the classpath
-and can't be loaded by the client class loader.
-
-The following topics are addressed here:
-
-* link:#gjlcr[To Use the EJB 3.1 Embeddable API with Embedded GlassFish
-Server]
-* link:#gksnv[EJB 3.1 Embeddable API Properties]
-* link:#gjxff[Using Maven with the EJB 3.1 Embeddable API and Embedded
-GlassFish Server]
-
-[[gjlcr]][[GSESG00026]][[to-use-the-ejb-3.1-embeddable-api-with-embedded-glassfish-server]]
-
-To Use the EJB 3.1 Embeddable API with Embedded GlassFish Server
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-1.  To specify GlassFish Server as the Container Provider, include
-`glassfish-embedded-static-shell.jar` or `glassfish-embedded-all.jar` in
-the class path of your embeddable EJB application. +
-Reference the `glassfish-embedded-static-shell.jar` file from the
-as-install`/lib/embedded` directory of a GlassFish Server installation.
-Do not move this file or it will not work. +
-See link:#giide[Setting the Class Path] and Section 22.3.3 of the EJB
-3.1 Specification, Embeddable Container Bootstrapping.
-2.  Configure any required resources. +
-For more information about configuring resources, see the Administration
-Console Online Help or "link:../administration-guide/toc.html#GSADG00298[Resources and Services
-Administration]" in Eclipse GlassFish Server Administration
-Guide. The `jdbc/__default` Java DB database is preconfigured with all
-distributions of GlassFish Server. However, if you are using
-`glassfish-embedded-static-shell.jar`, you must start the database
-manually. +
-If your embeddable EJB application uses Java Persistence, you do not
-need to specify a JDBC resource. See link:#gksmw[Default Java
-Persistence Data Source for Embedded GlassFish Server].
-3.  Invoke one of the `createEJBContainer` methods. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Do not deploy your embeddable EJB application or any of its dependent
-Java EE modules before invoking one of the `createEJBContainer` methods.
-These methods perform deployment in the background and do not load
-previously deployed applications or modules.
-
-|=======================================================================
-
-4.  To change the link:#gikvf[Instance Root Directory], set the
-`org.glassfish.ejb.embedded.glassfish.instance.root` system property
-value by using the `createEJBContainer``(Map<?, ?> properties)` method. +
-The default link:#gikvf[Instance Root Directory] location is
-as-install`/domains/domain1` if a nonembedded installation is
-referenced. This system property applies only to embeddable EJB
-applications used with nonembedded GlassFish Server.
-5.  Close the EJB container properly to release all acquired resources
-and threads.
-
-[[gksnv]][[GSESG00063]][[ejb-3.1-embeddable-api-properties]]
-
-EJB 3.1 Embeddable API Properties
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Properties that can be passed to the
-`EJBContainer#createEJBContainer(Properties)` method are summarized in
-the following table. All properties are in the
-`org.glassfish.ejb.embedded.glassfish` package. For example, the full
-name of the `installation.root` property is
-`org.glassfish.ejb.embedded.glassfish.installation.root`.
-
-[[sthref16]][[gksop]]
-
-Table 1-11 EJB 3.1 Embeddable API Properties
-
-[width="100%",cols="<30%,<39%,<31%",options="header",]
-|=======================================================================
-|Property |Default |Description
-|`installation.root` |GlassFish Server installation location from which
-`glassfish-embedded-static-shell.jar` is referenced |The
-link:#gikqf[Installation Root Directory].
-
-|`instance.root` a|
-In order of precedence:
-
-* `glassfish.embedded.tmpdir` property value specified in
-`GlassFishProperties` object
-* `glassfish.embedded.tmpdir` system property value
-* `java.io.tmp` system property value
-* as-install`/domains/domain1` if a nonembedded installation is
-referenced
-
- |The link:#gikvf[Instance Root Directory].
-
-|`configuration.file` |domain-dir`/config/domain.xml` |The configuration
-file.
-
-|`keep-temporary-files` |`false` |If `true`, keeps temporary files
-(exploded EAR file and configuration file) created by the embedded EJB
-container when Embedded GlassFish Server is stopped.
-
-|`web.http.port` |None |Enables the web container if set. Needed for
-testing web services in a WAR file. The value is ignored and can be an
-empty string.
-
-|`instance.reuse` |`false` |If `true`, no changes are made to the
-existing configuration file, and a temporary server instance is not
-created for the embedded run. Instead, execution happens against the
-existing server instance. Do not use this option if the reused server
-instance could be in use by the running nonembedded GlassFish Server.
-
-|`skip-client-modules` |`false` |If `true`, omits modules from the
-classpath if they are not specified using `EJBContainer.MODULES` and
-have a manifest file with a `Main-Class` attribute.
-|=======================================================================
-
-
-[[gjxff]][[GSESG00064]][[using-maven-with-the-ejb-3.1-embeddable-api-and-embedded-glassfish-server]]
-
-Using Maven with the EJB 3.1 Embeddable API and Embedded GlassFish
-Server
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-When using Maven with the EJB 3.1 Embeddable API and Embedded GlassFish
-Server, you cannot use the features of the Maven plug-in. You must start
-and stop Embedded GlassFish Server manually or programmatically outside
-of Maven.
-
-[[GSESG00018]][[gjxds]]
-
-
-Example 1-14 Maven POM File for Using the EJB 3.1 Embeddable API with
-Embedded GlassFish Server
-
-This example shows a POM file for configuring Maven to use the EJB 3.1
-Embeddable API with Embedded GlassFish Server.
-
-[source,oac_no_warn]
-----
-<!--
-Line breaks in the following element are for readability purposes only
--->
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
-http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>org.glassfish</groupId>
-    <artifactId>my-ejb-app-tester</artifactId>
-    <version>3.1</version>
-    <name>Maven test</name>
-    <dependencies>
-        <dependency>
-            <groupId>org.glassfish.extras</groupId>
-            <artifactId>glassfish-embedded-static-shell</artifactId>
-            <version>${project.version}</version>
-            <scope>system</scope>
-            <systemPath>
-                ${env.S1AS_HOME}/lib/embedded/glassfish-embedded-static-shell.jar
-            </systemPath>
-        </dependency>
-<!--
-        The javaee-api is stripped of any code and is just used to compile your
-        application. The scope provided in Maven means that it is used for compiling,
-        but is also available when testing. For this reason, the javaee-api needs to
-        be below the embedded Glassfish dependency. The javaee-api can actually be
-        omitted when the embedded Glassfish dependency is included, but to keep your
-        project Java-EE 6 rather than GlassFish 3, specification is important.
--->
-        <dependency>
-            <groupId>javax</groupId>
-            <artifactId>javaee-api</artifactId>
-            <version>6.0</version>
-            <scope>provided</scope>
-        </dependency>
-    </dependencies>
-    <pluginRepositories>
-        <pluginRepository>
-            <id>maven2-repository.dev.java.net</id>
-            <name>Java.net Repository for Maven</name>
-            <url>http://download.java.net/maven/glassfish/</url>
-        </pluginRepository>
-    </pluginRepositories>
-</project>
-----
-
-If you are using `glassfish-embedded-static-shell.jar`, you can omit the
-`dependency` element with the `javaee-api` `artifactId` and the
-`pluginRepositories` element.
-
-Set the `S1AS_HOME` environment variable to the installation root
-directory before running the `mvn clean verify` command.
-
-[[gjlfe]][[GSESG00040]][[changing-log-levels-in-embedded-glassfish-server]]
-
-Changing Log Levels in Embedded GlassFish Server
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-To change log levels in Embedded GlassFish Server, you can follow the
-steps in this section or you can use the Embedded Server API as shown in
-link:#gjlfm[Example 1-11]. For more information about GlassFish Server
-logging, see "link:../administration-guide/logging.html#GSADG00010[Administering the Logging Service]" in
-Eclipse GlassFish Server Administration Guide.
-
-You can change log levels in Embedded GlassFish Server in either of the
-following ways:
-
-* Using the GlassFish Server Embedded Server API
-* Creating a custom logging configuration file
-
-Both these ways use logger names. For a list of logger names, use the
-link:../reference-manual/list-log-levels.html#GSRFM00183[`list-log-levels`] subcommand.
-
-[[GSESG00019]][[gkrhh]]
-
-
-Example 1-15 Using the GlassFish Server Embedded Server API
-
-This example shows how to set log levels using the `getLogger` method in
-the API.
-
-[source,oac_no_warn]
-----
-import org.glassfish.embeddable.*;
-
-// Create Embedded GlassFish
-GlassFish glassfish = GlassFishRuntime.bootstrap().newGlassFish();
-
-// Set the log levels. For example, set 'deployment' and 'server' log levels to FINEST
-Logger.getLogger("").getHandlers()[0].setLevel(Level.FINEST);
-Logger.getLogger("jakarta.enterprise.system.tools.deployment").setLevel(Level.FINEST);
-Logger.getLogger("jakarta.enterprise.system").setLevel(Level.FINEST);
-
-// Start Embedded GlassFish and deploy an application.
-// You will see all the FINEST logs printed on the console.
-glassfish.start();
-glassfish.getDeployer().deploy(new File("sample.war"));
-
-// Dispose Embedded GlassFish
-glassfish.dispose();
-----
-
-[[GSESG00020]][[gkrgw]]
-
-
-Example 1-16 Creating a Custom Logging Configuration File
-
-This example shows the contents of a custom logging configuration file,
-`customlogging.properties`.
-
-[source,oac_no_warn]
-----
-handlers= java.util.logging.ConsoleHandler
-java.util.logging.ConsoleHandler.level = FINEST
-jakarta.enterprise.system.tools.deployment.level = FINEST
-jakarta.enterprise.system.level = FINEST
-----
-
-Pass the name of this custom logging configuration file to the `java`
-command when you invoke Embedded GlassFish Server. For example:
-
-[source,oac_no_warn]
-----
-java -Djava.util.logging.config.file=customlogging.properties MyEmbeddedGlassFish
-----
-
-[[gksmw]][[GSESG00041]][[default-java-persistence-data-source-for-embedded-glassfish-server]]
-
-Default Java Persistence Data Source for Embedded GlassFish Server
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The `jdbc/__default` Java DB database is preconfigured with Embedded
-GlassFish Server. It is used when an application is deployed in Embedded
-GlassFish Server that uses Java Persistence but doesn't specify a data
-source. Embedded GlassFish Server uses the embedded Java DB database
-created in a temporary domain that is destroyed when Embedded GlassFish
-Server is stopped. You can use a Java DB database configured with
-nonembedded GlassFish Server if you explicitly specify the instance root
-directory or the configuration file.
-
-By default, weaving is enabled when the GlassFish Server Embedded Server
-API is used. To disable weaving, set the
-`org.glassfish.persistence.embedded.weaving.enabled` property to
-`false`.
-
-[[gihxf]][[GSESG00042]][[restrictions-for-embedded-glassfish-server]]
-
-Restrictions for Embedded GlassFish Server
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The `glassfish-embedded-web.jar` file for embedded GlassFish Server
-supports only these features of nonembedded GlassFish Server:
-
-* The following web technologies of the Java EE platform:
-
-** Java Servlet API
-
-** JavaServer Pages (JSP) technology
-
-** JavaServer Faces technology
-* JDBC-technology connection pooling
-* Java Persistence API
-* Java Transaction API
-* Java Transaction Service
-
-The `glassfish-embedded-all.jar` and
-`glassfish-embedded-static-shell.jar` files support all features of
-nonembedded GlassFish Server with these exceptions:
-
-* Installers
-* Administration Console
-* Update Tool
-* Apache Felix OSGi framework
-* The Maven plug-in for embedded GlassFish Server does not support
-application clients.
-* Applications that require ports for communication, such as remote EJB
-components, do not work with the EJB 3.1 Embeddable API running with
-embedded GlassFish Server if a nonembedded GlassFish Server is running
-in parallel.
-
-Embedded GlassFish Server requires no installation or configuration. As
-a result, the following files and directories are absent from the file
-system until embedded GlassFish Server is started:
-
-* `default-web.xml` file
-* `domain.xml` file
-* Applications directory
-* Instance root directory
-
-When embedded GlassFish Server is started, the base installation
-directory that GlassFish Server uses depends on the options with which
-GlassFish Server is started. If necessary, embedded GlassFish Server
-creates a base installation directory. Embedded GlassFish Server then
-copies the following directories and their contents from the Java
-archive (JAR) file in which embedded GlassFish Server is distributed:
-
-* `domains`
-* `lib`
-
-If necessary, GlassFish Server also creates an instance root directory.
diff --git a/docs/embedded-server-guide/src/main/jbake/content/loe.adoc b/docs/embedded-server-guide/src/main/jbake/content/loe.adoc
deleted file mode 100644
index 0006c91..0000000
--- a/docs/embedded-server-guide/src/main/jbake/content/loe.adoc
+++ /dev/null
@@ -1,44 +0,0 @@
-type=page
-status=published
-title=List of Examples
-next=lot.html
-prev=toc.html
-~~~~~~
-List of Examples
-================
-
-[[list-of-examples]]
-List of Examples
-----------------
-
-* link:embedded-server-guide.html#gikmz[1-1 Creating an Embedded
-GlassFish Server]
-* link:embedded-server-guide.html#gksjo[1-2 Creating an Embedded
-GlassFish Server with configuration customizations]
-* link:embedded-server-guide.html#gjkxc[1-3 Setting the port of an
-Embedded GlassFish Server]
-* link:embedded-server-guide.html#gilry[1-4 Starting an Embedded
-GlassFish Server]
-* link:embedded-server-guide.html#gilnz[1-5 Stopping an Embedded
-GlassFish Server]
-* link:embedded-server-guide.html#gioph[1-6 Deploying an Application From
-an Archive File]
-* link:embedded-server-guide.html#gilwu[1-7 Undeploying an Application]
-* link:embedded-server-guide.html#gjrfq[1-8 Deploying an Application From
-a Scattered Archive]
-* link:embedded-server-guide.html#gkvga[1-9 Deploying an Application From
-a Scattered Enterprise Archive]
-* link:embedded-server-guide.html#gjldj[1-10 Running an asadmin
-create-jdbc-resource Command]
-* link:embedded-server-guide.html#gjlfm[1-11 Running an asadmin
-set-log-level Command]
-* link:embedded-server-guide.html#gionq[1-12 Using an Existing domain.xml
-File and Deploying an Application From an Archive File]
-* link:embedded-server-guide.html#gjkod[1-13 POM File for Configuring
-Maven to Use Embedded GlassFish Server]
-* link:embedded-server-guide.html#gjxds[1-14 Maven POM File for Using the
-EJB 3.1 Embeddable API with Embedded GlassFish Server]
-* link:embedded-server-guide.html#gkrhh[1-15 Using the GlassFish Server
-Embedded Server API]
-* link:embedded-server-guide.html#gkrgw[1-16 Creating a Custom Logging
-Configuration File]
diff --git a/docs/embedded-server-guide/src/main/jbake/content/lot.adoc b/docs/embedded-server-guide/src/main/jbake/content/lot.adoc
deleted file mode 100644
index 4c31217..0000000
--- a/docs/embedded-server-guide/src/main/jbake/content/lot.adoc
+++ /dev/null
@@ -1,35 +0,0 @@
-type=page
-status=published
-title=List of Tables
-next=title.html
-prev=loe.html
-~~~~~~
-List of Tables
-==============
-
-[[list-of-tables]]
-List of Tables
---------------
-
-* link:embedded-server-guide.html#gksir[1-1 Methods of the
-BootstrapProperties Class]
-* link:embedded-server-guide.html#gkskl[1-2 Methods of the
-GlassFishProperties Class]
-* link:embedded-server-guide.html#gjrdg[1-3 Constructors and Methods of
-the ScatteredArchive Class]
-* link:embedded-server-guide.html#gkvgb[1-4 Constructors and Methods of
-the ScatteredEnterpriseArchive Class]
-* link:embedded-server-guide.html#gjkws[1-5 embedded-glassfish:run
-Parameters]
-* link:embedded-server-guide.html#gjkye[1-6 embedded-glassfish:start
-Parameters]
-* link:embedded-server-guide.html#gjkvv[1-7 embedded-glassfish:deploy
-Parameters]
-* link:embedded-server-guide.html#gjkxf[1-8 embedded-glassfish:undeploy
-Parameters]
-* link:embedded-server-guide.html#gjkwm[1-9 embedded-glassfish:stop
-Parameters]
-* link:embedded-server-guide.html#gjkwe[1-10 embedded-glassfish:start
-Parameters]
-* link:embedded-server-guide.html#gksop[1-11 EJB 3.1 Embeddable API
-Properties]
diff --git a/docs/embedded-server-guide/src/main/jbake/content/preface.adoc b/docs/embedded-server-guide/src/main/jbake/content/preface.adoc
deleted file mode 100644
index 3388db6..0000000
--- a/docs/embedded-server-guide/src/main/jbake/content/preface.adoc
+++ /dev/null
@@ -1,362 +0,0 @@
-type=page
-status=published
-title=Preface
-next=embedded-server-guide.html
-prev=title.html
-~~~~~~
-Preface
-=======
-
-[[sthref2]][[preface]]
-
-Preface
--------
-
-[NOTE]
-========================================================================
-
-This documentation is part of the Java Enterprise Edition contribution 
-to the Eclipse Foundation and is not intended for use in relation to 
-Java Enterprise Edition or Orace GlassFish. The documentation is in the 
-process of being revised to reflect the new Jakarta EE branding. 
-Additional changes will be made as requirements and procedures evolve 
-for Jakarta EE. Where applicable, references to Java EE or Java 
-Enterprise Edition should be considered references to Jakarta EE. 
-
-Please see the Title page for additional license information.
-========================================================================
-
-This document explains how to run applications in embedded GlassFish
-Server Open Source Edition and to develop applications in which
-GlassFish Server is embedded. This document is for software developers
-who are developing applications to run in embedded GlassFish Server. The
-ability to program in the Java language is assumed.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-The main thrust of the GlassFish Server Open Source Edition 4.0 release
-is to provide an application server for developers to explore and begin
-exploiting the new and updated technologies in the Java EE 7 platform.
-Thus, the embedded server feature of GlassFish Server was not a focus of
-this release. This feature is included in the release, but it may not
-function properly with some of the new features added in support of the
-Java EE 7 platform.
-
-|=======================================================================
-
-
-This preface contains information about and conventions for the entire
-GlassFish Server Open Source Edition (GlassFish Server) documentation
-set.
-
-GlassFish Server 4.0 is developed through the GlassFish project
-open-source community at `http://glassfish.java.net/`. The GlassFish
-project provides a structured process for developing the GlassFish
-Server platform that makes the new features of the Java EE platform
-available faster, while maintaining the most important feature of Java
-EE: compatibility. It enables Java developers to access the GlassFish
-Server source code and to contribute to the development of the GlassFish
-Server. The GlassFish project is designed to encourage communication
-between Oracle engineers and the community.
-
-* link:#ghpbz[GlassFish Server Documentation Set]
-* link:#giprl[Related Documentation]
-* link:#fwbkx[Typographic Conventions]
-* link:#fquvc[Symbol Conventions]
-* link:#ghpfg[Default Paths and File Names]
-
-[[GSESG00027]][[ghpbz]]
-
-
-[[glassfish-server-documentation-set]]
-GlassFish Server Documentation Set
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The GlassFish Server documentation set describes deployment planning and
-system installation. For an introduction to GlassFish Server, refer to
-the books in the order in which they are listed in the following table.
-
-[width="100%",cols="<30%,<70%",options="header",]
-|=======================================================================
-|Book Title |Description
-|link:../release-notes/toc.html#GSRLN[Release Notes] |Provides late-breaking information about
-the software and the documentation and includes a comprehensive,
-table-based summary of the supported hardware, operating system, Java
-Development Kit (JDK), and database drivers.
-
-|link:../quick-start-guide/toc.html#GSQSG[Quick Start Guide] |Explains how to get started with the
-GlassFish Server product.
-
-|link:../installation-guide/toc.html#GSING[Installation Guide] |Explains how to install the software
-and its components.
-
-|link:../upgrade-guide/toc.html#GSUPG[Upgrade Guide] |Explains how to upgrade to the latest
-version of GlassFish Server. This guide also describes differences
-between adjacent product releases and configuration options that can
-result in incompatibility with the product specifications.
-
-|link:../deployment-planning-guide/toc.html#GSPLG[Deployment Planning Guide] |Explains how to build a
-production deployment of GlassFish Server that meets the requirements of
-your system and enterprise.
-
-|link:../administration-guide/toc.html#GSADG[Administration Guide] |Explains how to configure, monitor,
-and manage GlassFish Server subsystems and components from the command
-line by using the link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`] utility. Instructions for
-performing these tasks from the Administration Console are provided in
-the Administration Console online help.
-
-|link:../security-guide/toc.html#GSSCG[Security Guide] |Provides instructions for configuring and
-administering GlassFish Server security.
-
-|link:../application-deployment-guide/toc.html#GSDPG[Application Deployment Guide] |Explains how to assemble and
-deploy applications to the GlassFish Server and provides information
-about deployment descriptors.
-
-|link:../application-development-guide/toc.html#GSDVG[Application Development Guide] |Explains how to create and
-implement Java Platform, Enterprise Edition (Java EE platform)
-applications that are intended to run on the GlassFish Server. These
-applications follow the open Java standards model for Java EE components
-and application programmer interfaces (APIs). This guide provides
-information about developer tools, security, and debugging.
-
-|link:../embedded-server-guide/toc.html#GSESG[Embedded Server Guide] |Explains how to run applications in
-embedded GlassFish Server and to develop applications in which GlassFish
-Server is embedded.
-
-|link:../ha-administration-guide/toc.html#GSHAG[High Availability Administration Guide] |Explains how to
-configure GlassFish Server to provide higher availability and
-scalability through failover and load balancing.
-
-|link:../performance-tuning-guide/toc.html#GSPTG[Performance Tuning Guide] |Explains how to optimize the
-performance of GlassFish Server.
-
-|link:../troubleshooting-guide/toc.html#GSTSG[Troubleshooting Guide] |Describes common problems that you
-might encounter when using GlassFish Server and explains how to solve
-them.
-
-|link:../error-messages-reference/toc.html#GSEMR[Error Message Reference] |Describes error messages that you
-might encounter when using GlassFish Server.
-
-|link:../reference-manual/toc.html#GSRFM[Reference Manual] |Provides reference information in man
-page format for GlassFish Server administration commands, utility
-commands, and related concepts.
-
-|link:../../openmq/mq-release-notes/toc.html#GMRLN[Message Queue Release Notes] |Describes new features,
-compatibility issues, and existing bugs for Open Message Queue.
-
-|link:../../openmq/mq-tech-over/toc.html#GMTOV[Message Queue Technical Overview] |Provides an introduction
-to the technology, concepts, architecture, capabilities, and features of
-the Message Queue messaging service.
-
-|link:../../openmq/mq-admin-guide/toc.html#GMADG[Message Queue Administration Guide] |Explains how to set up
-and manage a Message Queue messaging system.
-
-|link:../../openmq/mq-dev-guide-jmx/toc.html#GMJMG[Message Queue Developer's Guide for JMX Clients] |Describes
-the application programming interface in Message Queue for
-programmatically configuring and monitoring Message Queue resources in
-conformance with the Java Management Extensions (JMX).
-
-|link:../../openmq/mq-dev-guide-java/toc.html#GMJVG[Message Queue Developer's Guide for Java Clients] |Provides
-information about concepts and procedures for developing Java messaging
-applications (Java clients) that work with GlassFish Server.
-
-|link:../../openmq/mq-dev-guide-c/toc.html#GMCCG[Message Queue Developer's Guide for C Clients] |Provides
-programming and reference information for developers working with
-Message Queue who want to use the C language binding to the Message
-Queue messaging service to send, receive, and process Message Queue
-messages.
-|=======================================================================
-
-
-[[GSESG00028]][[giprl]]
-
-
-[[related-documentation]]
-Related Documentation
-~~~~~~~~~~~~~~~~~~~~~
-
-The following tutorials explain how to develop Java EE applications:
-
-* http://docs.oracle.com/javaee/7/firstcup/doc/home.html[Your First Cup:
-An Introduction to the Java EE Platform]
-(`http://docs.oracle.com/javaee/7/firstcup/doc/home.html`). For beginning
-Java EE programmers, this short tutorial explains the entire process for
-developing a simple enterprise application. The sample application is a
-web application that consists of a component that is based on the
-Enterprise JavaBeans specification, a JAX-RS web service, and a
-JavaServer Faces component for the web front end.
-* http://docs.oracle.com/javaee/7/tutorial/doc/home.html[The Java EE 7
-Tutorial] (`http://docs.oracle.com/javaee/7/tutorial/doc/home.html`).
-This comprehensive tutorial explains how to use Java EE 7 platform
-technologies and APIs to develop Java EE applications.
-
-Javadoc tool reference documentation for packages that are provided with
-GlassFish Server is available as follows.
-
-* The API specification for version 7 of Java EE is located at
-`http://docs.oracle.com/javaee/7/api/`.
-* The API specification for GlassFish Server 4.0, including Java EE 7
-platform packages and nonplatform packages that are specific to the
-GlassFish Server product, is located at
-`http://glassfish.java.net/nonav/docs/v3/api/`.
-
-Additionally, the
-http://www.oracle.com/technetwork/java/javaee/tech/index.html[Java EE
-Specifications]
-(`http://www.oracle.com/technetwork/java/javaee/tech/index.html`) might
-be useful.
-
-For information about creating enterprise applications in the NetBeans
-Integrated Development Environment (IDE), see the
-http://www.netbeans.org/kb/[NetBeans Documentation, Training & Support
-page] (`http://www.netbeans.org/kb/`).
-
-For information about the Java DB database for use with the GlassFish
-Server, see the
-http://www.oracle.com/technetwork/java/javadb/overview/index.html[Java
-DB product page]
-(`http://www.oracle.com/technetwork/java/javadb/overview/index.html`).
-
-The Java EE Samples project is a collection of sample applications that
-demonstrate a broad range of Java EE technologies. The Java EE Samples
-are bundled with the Java EE Software Development Kit (SDK) and are also
-available from the http://glassfish-samples.java.net/[Java EE Samples
-project page] (`http://glassfish-samples.java.net/`).
-
-[[GSESG00029]][[fwbkx]]
-
-
-[[typographic-conventions]]
-Typographic Conventions
-~~~~~~~~~~~~~~~~~~~~~~~
-
-The following table describes the typographic changes that are used in
-this book.
-
-[width="100%",cols="<14%,<37%,<49%",options="header",]
-|=======================================================================
-|Typeface |Meaning |Example
-|`AaBbCc123` |The names of commands, files, and directories, and
-onscreen computer output a|
-Edit your `.login` file.
-
-Use `ls` `a` to list all files.
-
-`machine_name% you have mail.`
-
-|`AaBbCc123` |What you type, contrasted with onscreen computer output a|
-`machine_name%` `su`
-
-`Password:`
-
-|AaBbCc123 |A placeholder to be replaced with a real name or value |The
-command to remove a file is `rm` filename.
-
-|AaBbCc123 |Book titles, new terms, and terms to be emphasized (note
-that some emphasized items appear bold online) a|
-Read Chapter 6 in the User's Guide.
-
-A cache is a copy that is stored locally.
-
-Do not save the file.
-
-|=======================================================================
-
-
-[[GSESG00030]][[fquvc]]
-
-
-[[symbol-conventions]]
-Symbol Conventions
-~~~~~~~~~~~~~~~~~~
-
-The following table explains symbols that might be used in this book.
-
-[width="100%",cols="<10%,<26%,<28%,<36%",options="header",]
-|=======================================================================
-|Symbol |Description |Example |Meaning
-|`[ ]` |Contains optional arguments and command options. |`ls [-l]` |The
-`-l` option is not required.
-
-|`{ \| }` |Contains a set of choices for a required command option.
-|`-d {y\|n}` |The `-d` option requires that you use either the `y`
-argument or the `n` argument.
-
-|`${ }` |Indicates a variable reference. |`${com.sun.javaRoot}`
-|References the value of the `com.sun.javaRoot` variable.
-
-|- |Joins simultaneous multiple keystrokes. |Control-A |Press the
-Control key while you press the A key.
-
-|+ + |Joins consecutive multiple keystrokes. |Ctrl+A+N |Press the
-Control key, release it, and then press the subsequent keys.
-
-|> |Indicates menu item selection in a graphical user interface. |File >
-New > Templates |From the File menu, choose New. From the New submenu,
-choose Templates.
-|=======================================================================
-
-
-[[GSESG00031]][[ghpfg]]
-
-
-[[default-paths-and-file-names]]
-Default Paths and File Names
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following table describes the default paths and file names that are
-used in this book.
-
-[width="100%",cols="<14%,<34%,<52%",options="header",]
-|=======================================================================
-|Placeholder |Description |Default Value
-|as-install + a|
-Represents the base installation directory for GlassFish Server.
-
-In configuration files, as-install is represented as follows:
-
-`${com.sun.aas.installRoot}`
-
- a|
-Installations on the Oracle Solaris operating system, Linux operating
-system, and Mac OS operating system:
-
-user's-home-directory`/glassfish3/glassfish`
-
-Installations on the Windows operating system:
-
-SystemDrive`:\glassfish3\glassfish`
-
-|as-install-parent + |Represents the parent of the base installation
-directory for GlassFish Server. a|
-Installations on the Oracle Solaris operating system, Linux operating
-system, and Mac operating system:
-
-user's-home-directory`/glassfish3`
-
-Installations on the Windows operating system:
-
-SystemDrive`:\glassfish3`
-
-|domain-root-dir + |Represents the directory in which a domain is
-created by default. |as-install`/domains/`
-
-|domain-dir + a|
-Represents the directory in which a domain's configuration is stored.
-
-In configuration files, domain-dir is represented as follows:
-
-`${com.sun.aas.instanceRoot}`
-
- |domain-root-dir`/`domain-name
-
-|instance-dir + |Represents the directory for a server instance.
-|domain-dir`/`instance-name
-|=======================================================================
-
-
-
diff --git a/docs/embedded-server-guide/src/main/jbake/content/title.adoc b/docs/embedded-server-guide/src/main/jbake/content/title.adoc
deleted file mode 100644
index a6d97d1..0000000
--- a/docs/embedded-server-guide/src/main/jbake/content/title.adoc
+++ /dev/null
@@ -1,56 +0,0 @@
-type=page
-status=published
-title=Eclipse GlassFish Server Embedded Server Guide, Release 5.1
-next=preface.html
-prev=lot.html
-~~~~~~
-Eclipse GlassFish Server Embedded Server Guide, Release 5.1
-===========================================================
-
-[[eclipse-glassfish-server]]
-Eclipse GlassFish Server
-------------------------
-
-Embedded Server Guide
-
-Release 5.1
-
-Contributed 2018, 2019
-
-This document explains how to run applications in embedded GlassFish
-Server Open Source Edition and to develop applications in which
-GlassFish Server is embedded. This document is for software developers
-who are developing applications to run in embedded GlassFish Server. The
-ability to program in the Java language is assumed.
-
-Note: The main thrust of the Eclipse GlassFish Server 5.1
-release is to provide an application server for developers to explore
-and begin exploiting the new and updated technologies in the Java EE 7
-platform. Thus, the embedded server feature of GlassFish Server was not
-a focus of this release. This feature is included in the release, but it
-may not function properly with some of the new features added in support
-of the Java EE 7 platform.
-
-[[sthref1]]
-
-'''''
-
-Eclipse GlassFish Server Embedded Server Guide, Release 5.1
-
-Copyright © 2013, 2019 Oracle and/or its affiliates. All rights reserved.
-
-This program and the accompanying materials are made available under the 
-terms of the Eclipse Public License v. 2.0, which is available at 
-http://www.eclipse.org/legal/epl-2.0. 
-
-SPDX-License-Identifier: EPL-2.0
-
-Oracle and Java are registered trademarks of Oracle and/or its 
-affiliates. Other names may be trademarks of their respective owners. 
-
-Intel and Intel Xeon are trademarks or registered trademarks of Intel 
-Corporation. All SPARC trademarks are used under license and are 
-trademarks or registered trademarks of SPARC International, Inc. AMD, 
-Opteron, the AMD logo, and the AMD Opteron logo are trademarks or 
-registered trademarks of Advanced Micro Devices. UNIX is a registered 
-trademark of The Open Group. 
diff --git a/docs/embedded-server-guide/src/main/jbake/jbake.properties b/docs/embedded-server-guide/src/main/jbake/jbake.properties
deleted file mode 100644
index 546d09c..0000000
--- a/docs/embedded-server-guide/src/main/jbake/jbake.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-site.host=http://jbake.org
-render.tags=false
-render.sitemap=false
-render.archive=false
-render.feed=false
-asciidoctor.option.safe=0
-asciidoctor.attributes.export=true
diff --git a/docs/embedded-server-guide/src/main/jbake/templates/footer.ftl b/docs/embedded-server-guide/src/main/jbake/templates/footer.ftl
deleted file mode 100644
index 6f2b09e..0000000
--- a/docs/embedded-server-guide/src/main/jbake/templates/footer.ftl
+++ /dev/null
@@ -1,46 +0,0 @@
-<#-- a footer template fragment included in the page template -->
-<hr />
-
-<table width="90%" id="bottom-nav" cellspacing="0" cellpadding="0">
-	<colgroup>
-		<col width="12%"/>
-		<col width="12%"/>
-		<col width="*"/>
-	</colgroup>
-	<tr>		
-	    <#if content.prev??>
-		<td align="left">
-		<a href="${content.prev}">
-			<span class=" vector-font"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Previous</span>
-		</a>
-		</td>
-		</#if>
-
-		<#if content.next??>
-		<td align="left">
-		<a href="${content.next}">
-			<span class="vector-font"><i class="fa fa-arrow-circle-right vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Next</span>
-		</a>
-		</td>
-		</#if>
-
-		<td align="right">
-		<a href="toc.html">
-			<span class="vector-font"><i class="fa fa-list vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Contents</span>
-		</a>
-		</td>
-	</tr>
-</table>
-
-<span id="copyright">
-        <img src="img/eclipse_foundation_logo_tiny.png" height="20px" alt="Eclipse Foundation Logo" align="top"/>&nbsp;            
-        <span >Copyright&nbsp;&copy;&nbsp;2019,&nbsp;Oracle&nbsp;and/or&nbsp;its&nbsp;affiliates.&nbsp;All&nbsp;rights&nbsp;reserved.</span>
-</span>
-
-<p align="center" class="beta">${config.status!}</p>
-
-</body>
-</html>
diff --git a/docs/embedded-server-guide/src/main/jbake/templates/header.ftl b/docs/embedded-server-guide/src/main/jbake/templates/header.ftl
deleted file mode 100644
index 82ebb36..0000000
--- a/docs/embedded-server-guide/src/main/jbake/templates/header.ftl
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html>
-<#-- a header template fragment included in the page template -->
-<html lang="en">
-  <head>
-    <meta charset="utf-8"/>
-    <title><#if (content.title)??><#escape x as x?xml>${content.title}</#escape></#if></title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <link href="<#if (content.rootpath)??>${content.rootpath}<#else></#if>css/style.css" rel="stylesheet">
-    <script src="https://use.fontawesome.com/96c4d89611.js"></script>
-  </head>
-  <body>
-<table id="doc-title" cellspacing="0" cellpadding="0">
-  <tr>
-  <td align="left" valign="top">
-  <b>${content.title}</b><br />
-      <p class="beta">${config.status!}</p>
-  </td>
-  </tr>
-</table>
-<hr />
-
-<table width="90%" id="top-nav" cellspacing="0" cellpadding="0">
-	<colgroup>
-		<col width="12%"/>
-		<col width="12%"/>
-		<col width="*"/>
-	</colgroup>
-	<tr>
-	    <#if content.prev??>
-		<td align="left">
-		<a href="${content.prev}">
-			<span class="vector-font"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Previous</span>
-		</a>
-		</td>
-	    </#if>
-
-	    <#if content.next??>
-		<td align="left">
-		<a href="${content.next}">
-			<span class=" vector-font"><i class="fa fa-arrow-circle-right vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Next</span>
-		</a>
-		</td>
-	    </#if>
-
-		<td align="right">
-		<a href="toc.html">
-			<span class=" vector-font"><i class="fa fa-list vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Contents</span>
-		</a>
-		</td>
-	</tr>
-</table>
-
diff --git a/docs/embedded-server-guide/src/main/jbake/templates/menu.ftl b/docs/embedded-server-guide/src/main/jbake/templates/menu.ftl
deleted file mode 100644
index 888c03d..0000000
--- a/docs/embedded-server-guide/src/main/jbake/templates/menu.ftl
+++ /dev/null
@@ -1 +0,0 @@
-<#-- a menu bar template fragment included in the page template -->
\ No newline at end of file
diff --git a/docs/embedded-server-guide/src/main/jbake/templates/page.ftl b/docs/embedded-server-guide/src/main/jbake/templates/page.ftl
deleted file mode 100644
index eca51db..0000000
--- a/docs/embedded-server-guide/src/main/jbake/templates/page.ftl
+++ /dev/null
@@ -1,8 +0,0 @@
-<#-- a top level page layout template -->
-
-<#include "header.ftl">
-<#include "menu.ftl">
-
-${content.body}
-
-<#include "footer.ftl">
\ No newline at end of file
diff --git a/docs/error-messages-reference/README.md b/docs/error-messages-reference/README.md
deleted file mode 100644
index a3ec2b6..0000000
--- a/docs/error-messages-reference/README.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# A JBake project template
-
-## About JBake
-
-JBake is a static site generator, it's inspired from jekyll and written
-in java.  The basic idea is to have templates for the structure of the
-page, and the body generated from asciidoc content.
-
-## Pre requisites
-
-- Maven
-- JDK8+
-
-Deploying to Github will require password less authentication.
-
-This is done by exporting your SSH public key into your Github account.
-
-## Build the site locally
-
-The site is generated under target/staging.
-
-Open file:///PATH_TO_PROJECT_DIR/target/staging in a browser to view the site.
-
-```
-mvn generate-resources
-```
-
-Or you can invoke the JBake plugin directly.
-
-```
-mvn jbake:build
-```
-
-### Rebuild the site on changes
-
-```
-mvn jbake:watch
-```
-
-If you keep this command running, changes to the sources will be
-detected and the site will be rendered incrementally.
-
-This is convenient when writing content.
-
-### Serve the site locally
-
-```
-mvn jbake:serve
-```
-
-If a webserver is required (e.g. absolute path are used), this command
-will start a webserver (jetty) at http://localhost:8820.  It will also
-watch for changes and rebuild incrementally.
-
-## Deploy the site to Github Pages
-
-```
-mvn deploy
-```
-
-## Produce a zip file for download
-
-To produce a zip file containing the generated html files, use:
-
-```
-mvn package
-```
-
-When making a release on GitHub, this zip file should be added to the release.
-
-## Links
-
-- [JBake maven plugin documentation](https://github.com/Blazebit/jbake-maven-plugin)
-- [JBake documentation](http://jbake.org/docs/2.5.1)
-- [Freemarker documentation](http://freemarker.org/docs)
-- [AsciiDoc User Guide](http://asciidoc.org/userguide.html)
-- [Asciidoctor quick reference](http://asciidoctor.org/docs/asciidoc-syntax-quick-reference)
diff --git a/docs/error-messages-reference/pom.xml b/docs/error-messages-reference/pom.xml
index 058420d..2d0a349 100644
--- a/docs/error-messages-reference/pom.xml
+++ b/docs/error-messages-reference/pom.xml
@@ -22,11 +22,10 @@
     <parent>
         <groupId>org.glassfish.docs</groupId>
         <artifactId>parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../parent</relativePath>
     </parent>
-    <groupId>org.glassfish.docs</groupId>
     <artifactId>error-messages-reference</artifactId>
     <packaging>jar</packaging>
-    <name>Eclipse GlassFish Server Error Message Reference, Release 5.1</name>
+    <name>Eclipse GlassFish Server Error Message Reference, Release 7</name>
 </project>
diff --git a/docs/error-messages-reference/src/main/asciidoc/error-messages.adoc b/docs/error-messages-reference/src/main/asciidoc/error-messages.adoc
new file mode 100644
index 0000000..38535ac
--- /dev/null
+++ b/docs/error-messages-reference/src/main/asciidoc/error-messages.adoc
@@ -0,0 +1,9998 @@
+type=page
+status=published
+title={productName} Error Messages
+prev=preface.html
+~~~~~~
+
+= {productName} Error Messages
+
+[[sthref2]][[glassfish-server-open-source-edition-error-messages]]
+
+== 1 {productName} Error Messages
+
+This chapter provides a compilation of error messages that you might
+encounter when using {productName}.
+
+Error messages provide information about events that occur during
+{productName} operation, such as configuration errors, security
+failures, or server malfunction. These messages often include diagnostic
+and troubleshooting information.
+
+Error messages can also be viewed in the Administration Console Log
+Viewer. For more information about logging, see
+”link:administration-guide/logging.html#GSADG00010[Administering the Logging Service”] in {productName} Administration Guide.
+
+For additional troubleshooting information, see the
+link:troubleshooting-guide.html#GSTSG[{productName} Troubleshooting Guide].
+
+Error messages in this chapter are listed in alphabetic and numeric
+order by message ID. The text is as it appears in the actual error
+message.
+
+[[sthref3]]AS-ACDEPL-00103 Java Web Start services started for the app client \{0} (contextRoot: \{1}) ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref4]]AS-ACDEPL-00105 Error starting the adapter to serve static system-level content ::
+  Cause: An unexpected internal system error occurred
++
+  Action: Please consult the exception stack trace
+
+[[sthref5]]AS-ACDEPL-00108 Config file for client JNLP not found: \{0} ::
+  Cause: The config file does not exist.
++
+  Action: The file is part of the installation so this might be an
+  internal error. Make sure you have not accidentally removed or renamed
+  the config file. If not, please file an error with a reproducible test
+  case.
+
+[[sthref6]]AS-ACDEPL-00109 The config file for client JNLP \{0} exists but could not be read. ::
+  Cause: The config file might be protected from reading.
++
+  Action: Make sure the config file protection settings permit the
+  server to read it.
+
+[[sthref7]]AS-ACDEPL-00111 Client JNLP document \{0} refers to the static resource \{1} that does not exist or is not readable. ::
+  Cause: The developer-provided JNLP content refers to a file as if the
+  file is in the application but the server could not find the file.
++
+  Action: Make sure the file is packaged in the application and that the
+  reference to the file is correct. Then rebuild and redeploy the
+  application.
+
+[[sthref8]]AS-ACDEPL-00112 The following extensions or libraries are referenced from the manifest of \{0} but were not found where indicated: \{1}; ignoring and continuing ::
+  Cause: The server could not open the JAR file(s) or process the
+  extension(s) listed in its manifest.
++
+  Action: Make sure the manifest of the JAR file correctly lists the
+  relative paths of library JARs and the extensions on which the JAR
+  depends.
+
+[[sthref9]]AS-ACDEPL-00114 The ApplicationSignedJARManager for a nested app client deployer helper is unexpectedly null. ::
+  Cause: During deployment of nested app clients (those inside EARs),
+  the system should use an ApplicationSignedJARManager but it is null.
++
+  Action: This is a system error. Please report this as a bug.
+
+[[sthref10]]AS-ACDEPL-00115 Tbe custom JNLP document \{0} in a stand-alone app client incorrectly refers to a JAR \{1} ::
+  Cause: The app client includes a custom JNLP document which refers to
+  a JAR. Stand-alone app clients cannot refer to other JARs because they
+  are self-contained deployment units.
++
+  Action: Remove references to JAR from the custom JNLP document or
+  package the app client inside an EAR that also contains the referenced
+  JAR.
+
+[[sthref11]]AS_ACDEPL-00101 Java Web Start services not started for the app client \{0}; its developer has marked it as ineligible ::
+  Cause: The developer's glassfish-application-client.xml file marks the
+  app client as ineligible for Java Web Start support.
++
+  Action: If users should be able to launch this client using Java Web
+  Start, change the <java-web-start-support> 'enabled' attribute.
+
+[[sthref12]]AS_ACDEPL-00104 Java Web Start services stopped for the app client \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref13]]AS_ACDEPL_00102 Java Web Start services not started for the app client \{0}; the administrator has disabled Java Web Start support for it ::
+  Cause: The administrator disabled Java Web Start launches for the app
+  client, either using '--properties java-web-start-enabled=false'
+  during deployment or changing the properties afterwards.
++
+  Action: If users should be able to launch this client using Java Web
+  Start, either deploy the application again without --properties or
+  adjust the configuration using the admin console or the asadmin 'set'
+  command
+
+[[sthref14]]AS-NAMING-00001 Failed to load \{0} using CommonClassLoader ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref15]]AS-NAMING-00002 Exception during name lookup : \{0} ::
+  Cause: App Server may not be running at port intended, or possible
+  Network Error.
++
+  Action: Check to see if the AppServer is up and running on the port
+  intended. The problem could be because of incorrect port. Check to see
+  if you can access the host on which the AppServer running.
+
+[[sthref16]]AS-NAMING-00003 Exception occurred when instantiating LocalSerialContextProviderImpl: \{0} ::
+  Cause: java.rmi.RemoteException
++
+  Action: Check server.log for details
+
+[[sthref17]]AS-NAMING-00004 Error during CosNaming.unbind for name \{0}: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref18]]AS-NAMING-00005 Naming binding already exists for \{0} in namespace \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref19]]AS-NAMING-00006 Exception in NamingManagerImpl copyMutableObject(): \{0} ::
+  Cause: Problem with serializing or de serializing of the object
++
+  Action: Check the class hierarchy to see if all the classes are
+  serializable.
+
+[[sthref20]]AS-NAMING-00008 Fall back to INITIAL_CONTEXT_FACTORY \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref21]]AS-CONCURRENT-00001 Task [\{0}] has been running on thread [\{1}] for \{2} seconds, which is more than the configured hung task threshold of \{3} seconds in [\{4}]. ::
+  Cause: A task has been running for longer time than the configured
+  hung task threshold setting.
++
+  Action: Monitor the task to find out why it is running for a long
+  time. If this is normal, consider setting a higher hung task threshold
+  or setting the "Long-Running Tasks" configuration attribute to true.
+
+[[sthref22]]AS-CONCURRENT-00002 Unable to setup or reset runtime context for a task because an invalid context handle is being passed. ::
+  Cause: An invalid context handle is being passed.
++
+  Action: Contact GlassFish support.
+
+[[sthref23]]AS-CONCURRENT-00003 Unable to bind \{0} to JNDI location [\{1}]. ::
+  Cause: An unexpected exception occurred when trying to bind a managed
+  object to JNDI namespace
++
+  Action: Review the exception message to determine the cause of the
+  failure and take appropriate action.
+
+[[sthref24]]AS-CONCURRENT-00004 Unable to deploy \{0}. ::
+  Cause: No configuration information is provided when trying to deploy
+  a managed object.
++
+  Action: Contact GlassFish support.
+
+[[sthref25]]AS-RAR-05001 Failed to get the thread-pool [ \{0} ] for resource adapter [ \{1} ]. ::
+  Cause: Could not find a thread pool according to the pool ID.
++
+  Action: Check the thread-pool-id property in Resource Adapter Config.
+
+[[sthref26]]AS-RAR-05002 Failed to get the default thread-pool for resource adapter [ \{0} ]. ::
+  Cause: Could not find the default thread pool for resource adatper.
++
+  Action: Check the thread-pool-id property in Resource Adapter Config.
+
+[[sthref27]]AS-RAR-05003 An error occurred during instantiation of the Work Manager class [ \{0} ] for resource adapter [ \{1} ]. ::
+  Cause: Can not initiate the Work Manager class.
++
+  Action: Check the Work Manager class type.
+
+[[sthref28]]AS-RAR-05004 The Work named [ \{0} ], progress [ \{1} ]. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref29]]AS-RAR-05005 Resource adapter association failed. ::
+  Cause: Resource Adapter throws exception during
+  ManagedConnectionFactory.setResourceAdapter().
++
+  Action: [1] If you are using third party resource adapter, contact
+  resource adapter vendor.[2] If you are a resource adapter developer,
+  please check the resource adapter code.
+
+[[sthref30]]AS-RAR-05006 Unable to load Work Context class \{0}. ::
+  Cause: Work Context class is not available to application server.
++
+  Action: Make sure that the Work Context class is available to server.
+
+[[sthref31]]AS-RAR-05007 Cannot specify both Execution Context [\{0}] as well Transaction Context [\{1}] for Work [\{2}] execution. Only one can be specified. ::
+  Cause: Submitted Work has Transaction Context as well it is a Work
+  Context Provider which is specification violation.
++
+  Action: Make sure that either Execution Context or Work Context
+  Provider with Transaction Context is passed, but not both.
+
+[[sthref32]]AS-RAR-05008 Duplicate Work Context for type [ \{0} ]. ::
+  Cause: Multiple Work Contexts of same type submitted.
++
+  Action: Make sure that same context type is not submitted multiple
+  times in the Work Context.
+
+[[sthref33]]AS-RAR-05009 Application server cannot handle the following Work Context : \{0}. ::
+  Cause: Work Context in question is not supported by application
+  server.
++
+  Action: Check the application server documentation for supported Work
+  Contexts.
+
+[[sthref34]]AS-RAR-05010 Setting custom Work Context class [ \{0} ] using most specific supportted Work Context class [ \{1} ]. ::
+  Cause: Requested Work Context is not supported, but a super type of
+  the context is supported.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref35]]AS-RAR-05011 Unable to set Security Context. ::
+  Cause: Unable to set Security Context.
++
+  Action: Check the server.log for exceptions
+
+[[sthref36]]AS-RAR-05012 Unsupported callback \{0} during credential mapping. ::
+  Cause: Resource adapter has used a callback that is not supported by
+  application server.
++
+  Action: Check whether the callback in question is supported by
+  application server.
+
+[[sthref37]]AS-CORE-JAVAEE-0001 Web Container not installed ::
+  Cause: The web container does not install properly.
++
+  Action: Please check the web container libraries are installed
+  properly.
+
+[[sthref38]]AS-CORE-JAVAEE-0002 Done with starting \{0} container. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref39]]AS-CORE-JAVAEE-0003 Unable to start container (no exception provided) ::
+  Cause: The web container does not start properly.
++
+  Action: Please check the web container libraries are installed
+  properly.
+
+[[sthref40]]AS-CORE-JAVAEE-0004 Unable to start container \{0} ::
+  Cause: The web container does not start properly. Most probably, there
+  is a class loading issue.
++
+  Action: Please resolve issues mentioned in the stack trace.
+
+[[sthref41]]AS-DEPLOYMENT-04017 Error in deleting file \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref42]]AS-DEPLOYMENT-04018 Deployment manager load failure. Unable to find \{0} ::
+  Cause: A deployment manager is not available.
++
+  Action: Correct the reference to the deployment manager.
+
+[[sthref43]]AS-DEPLOYMENT-04019 Deployment manager load failure. Unable to find \{0} ::
+  Cause: A deployment manager is not available.
++
+  Action: Correct the reference to the deployment manager.
+
+[[sthref44]]AS-DEPLOYMENT-00001 Ignore \{0} in archive \{1}, as WLS counterpart runtime xml \{2} is present in the same archive. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref45]]AS-DEPLOYMENT-00002 Exception caught: \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref46]]AS-DEPLOYMENT-00003 \{0} module [\{1}] contains characteristics of other module type: \{2}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref47]]AS-DEPLOYMENT-00004 Exception caught: \{0} for the subarchve indicated by the path: \{1}. ::
+  Cause: An exception was caught when the sub archive was opened because
+  the sub archive was not present.
++
+  Action: Correct the archive so that the sub archive is present.
+
+[[sthref48]]AS-DEPLOYMENT-00005 Exception caught during annotation scanning. ::
+  Cause: An exception was caught that indicates that the annotation is
+  incorrect.
++
+  Action: Correct the annotation.
+
+[[sthref49]]AS-DEPLOYMENT-00006 Adding \{0} since \{1} is annotated with \{2}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref50]]AS-DEPLOYMENT-00007 Adding \{0} since it is implementing \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref51]]AS-DEPLOYMENT-00008 Inconsistent type definition. \{0} is neither an annotation nor an interface. ::
+  Cause: The annotation is incorrect.
++
+  Action: Correct the annotation.
+
+[[sthref52]]AS-DEPLOYMENT-00009 The exception \{0} occurred while examining the jar at file path: \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref53]]AS-DEPLOYMENT-00010 No classloader can be found to use ::
+  Cause: The archive being processed is not correct.
++
+  Action: Examine the archive to determine what is incorrect.
+
+[[sthref54]]AS-DEPLOYMENT-00011 Error in annotation processing: \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref55]]AS-DEPLOYMENT-00012 Cannot load \{0} reason : \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref56]]AS-DEPLOYMENT-00013 An exception was caught during library jar processing: \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref57]]AS-DEPLOYMENT-00014 Could not load \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref58]]AS-DEPLOYMENT-00015 Unsupported deployment descriptors element \{0} value \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref59]]AS-DEPLOYMENT-00016 Unknown port-component-name \{0} port, all sub elements will be ignored. ::
+  Cause: Used port-component-name does not exists.
++
+  Action: Use the name of existing web service endpoint
+
+[[sthref60]]AS-DEPLOYMENT-00017 DOLUtils: converting EJB to web bundle id \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref61]]AS-DEPLOYMENT-00020 Application validation failed for application: \{0}, jndi-name: \{1}, resource adapter name: \{2} is wrong. ::
+  Cause: For embedded resource adapter, its name should begin with '#'
+  symbol
++
+  Action: Remove application name before the '#' symbol in the resource
+  adapter name.
+
+[[sthref62]]AS-DEPLOYMENT-00022 For administered-object resource: \{0}, there is no application part in its resource adapter name: \{1}. ::
+  Cause: For embedded resource adapter, its internal format of resource
+  adapter name should contains application name.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref63]]AS-DEPLOYMENT-00023 For connection-factory resource: \{0}, there is no application part in its resource adapter name: \{1}. ::
+  Cause: For embedded resource adapter, its internal format of resource
+  adapter name should contains application name.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref64]]AS-DEPLOYMENT-00024 For jms-connection-factory resource: \{0}, there is no application part in its resource adapter name: \{1}. ::
+  Cause: For embedded resource adapter, its internal format of resource
+  adapter name should contains application name.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref65]]AS-DEPLOYMENT-00025 For jms-destination resource: \{0}, there is no application part in its resource adapter name: \{1}. ::
+  Cause: For embedded resource adapter, its internal format of resource
+  adapter name should contains application name.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref66]]AS-DEPLOYMENT-00026 JNDI lookup failed for the resource: Name: \{0}, Lookup: \{1}, Type: \{2}. ::
+  Cause: JNDI lookup for the specified resource failed.
++
+  Action: Configure the required resources before deploying the
+  application.
+
+[[sthref67]]AS-DEPLOYMENT-00027 Resource Adapter not present: RA Name: \{0}, Type: \{1}. ::
+  Cause: Resource adapter specified is invalid.
++
+  Action: Configure the required resource adapter.
+
+[[sthref68]]AS-DEPLOYMENT-00028 Skipping resource validation ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref69]]AS-DEPLOYMENT-02015 Skipped processing for module \{0} as its module type was not recognized ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref70]]AS-DEPLOYMENT-02016 Error occurred ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref71]]AS-EJB-00001 [\{0}]: trimLru(), resetting head and tail ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref72]]AS-EJB-00002 [\{0}]: Exception in backingStore.remove([\{1}]) ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref73]]AS-EJB-00003 [\{0}]: passivateEJB(), Exception caught -> ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref74]]AS-EJB-00004 [\{0}]: Cannot load from BACKUPSTORE FOR Key: [\{1}] ::
+  Cause: Didn't find the data related with the given session key.
++
+  Action: Check if the session bean already timed out.
+
+[[sthref75]]AS-EJB-00005 [\{0}]: Exception while loading from backup session: [\{1}] ::
+  Cause: Session store exception or de serialization exception happened.
++
+  Action: Check error message and exception stack.
+
+[[sthref76]]AS-EJB-00006 [\{0}]: Error while loading from backup session: [\{1}] ::
+  Cause: Session store error or de serialization error happened.
++
+  Action: Check error message and exception stack.
+
+[[sthref77]]AS-EJB-00007 [\{0}]: Exception during backingStore.passivateSave([\{1}]) ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref78]]AS-EJB-00008 [\{0}]: Iterator(), resetting head.lPrev ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref79]]AS-EJB-00009 [\{0}]: Exiting TrimTimedoutBeans() because current cache state: [\{1}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref80]]AS-EJB-00010 [\{0}]: TrimTimedoutBeans(), resetting head.lPrev ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref81]]AS-EJB-00011 [\{0}]: Exiting TrimUnSortedTimedoutBeans() because current cache state: [\{1}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref82]]AS-EJB-00012 [SFSBContainer] Exception while initializing SessionSynchronization methods ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref83]]AS-EJB-00013 [SFSBContainer] Exception while loading checkpoint info ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref84]]AS-EJB-00014 Exception creating ejb object : [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref85]]AS-EJB-00015 Exception creating ejb local object [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref86]]AS-EJB-00016 Couldn't update timestamp for: [\{0}]; Exception: [\{1}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref87]]AS-EJB-00017 Cannot register bean for checkpointing ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref88]]AS-EJB-00018 Error during checkpoint ([\{0}]. Key: [\{1}]) [\{2}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref89]]AS-EJB-00019 sfsb checkpoint error. Name: [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref90]]AS-EJB-00020 sfsb checkpoint error. Key: [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref91]]AS-EJB-00021 Exception in afterCompletion : [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref92]]AS-EJB-00022 1. passivateEJB() returning because containerState: [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref93]]AS-EJB-00023 Extended EM not serializable. Exception: [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref94]]AS-EJB-00024 Error during passivation: [\{0}]; [\{1}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref95]]AS-EJB-00025 Error during passivation of [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref96]]AS-EJB-00026 sfsb passivation error. Key: [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref97]]AS-EJB-00028 Error during Stateful Session Bean activation for key [\{0}] ::
+  Cause: A problem occurred while the container was activating a
+  stateful session bean. One possible cause is that the bean code threw
+  a system exception from its ejbActivate method.
++
+  Action: Check the stack trace to see whether the exception was thrown
+  from the ejbActivate method and if so double-check the application
+  code to determine what caused the exception.
+
+[[sthref98]]AS-EJB-00029 [\{0}]: Error during backingStore.shutdown() ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref99]]AS-EJB-00030 [\{0}]: Error during onShutdown() ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref100]]AS-EJB-00031 [\{0}]: Error while undeploying ctx. Key: [\{1}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref101]]AS-EJB-00032 Cannot add idle bean cleanup task ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref102]]AS-EJB-00033 Got exception during removeExpiredSessions (but the reaper thread is still alive) ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref103]]AS-EJB-00034 Error during checkpoint(, but session not destroyed) ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref104]]AS-EJB-00035 Error during checkpoint ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref105]]AS-EJB-00036 TopLevel AvailabilityService.getAvailabilityEnabled: [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref106]]AS-EJB-00037 TopLevel EjbAvailabilityService.getAvailabilityEnabled: [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref107]]AS-EJB-00038 Global AvailabilityEnabled: [\{0}], application AvailabilityEnabled: [\{1}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref108]]AS-EJB-00039 Exception while trying to determine availability-enabled settings for this app ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref109]]AS-EJB-00040 StatefulContainerBuilder AvailabilityEnabled [\{0}] for this application ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref110]]AS-EJB-00041 StatefulContainerBuilder.buildStoreManager() storeName: [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref111]]AS-EJB-00042 Could not instantiate backing store for type [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref112]]AS-EJB-00043 StatefulContainerbuilder instantiated store: \{0}, with ha-enabled [\{1}], and backing store configuration: \{2} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref113]]AS-EJB-00044 Error while adding idle bean passivator task ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref114]]AS-EJB-00045 Error while adding idle bean removal task ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref115]]AS-EJB-00046 Error while removing idle beans for [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref116]]AS-EJB-00047 Error while removing expired beans for [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref117]]AS-EJB-00048 Passivation-capable value of stateful session bean [\{0}] is false, it should not have any PrePassivate nor PostActivate configuration, but you have configuration at [\{1}]. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref118]]AS-EJB-00049 Cannot find stateful session bean [\{0}] in memory, and will not read it from disk because current stateful session bean passivation-capable value is false ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref119]]AS-EJB-00050 Cache is shutting down, \{0} stateful session beans will not be restored after restarting since passivation is disabled ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref120]]AS-EJB-00051 Disabling high availability for the stateful session bean \{0}, as its marked non passivatable ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref121]]AS-EJB-00052 Internal Error ::
+  Cause: Error during invoke the ejb application
++
+  Action: Trying to invoke the ejb application
+
+[[sthref122]]AS-EJB-00053 The feature \{0} requires Full Jakarta EE Profile to be supported ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref123]]AS-EJB-00054 Portable JNDI names for EJB \{0}: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref124]]AS-EJB-00055 GlassFish-specific (Non-portable) JNDI names for EJB \{0}: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref125]]AS-EJB-00056 A system exception occurred during an invocation on EJB \{0}, method: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref126]]AS-EJB-00057 Error while creating enterprise bean context for \{0} during jacc callback ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref127]]AS-EJB-00058 Attempt to override reserved ejb interface method [\{0}] in [\{1}]. Override will be ignored. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref128]]AS-EJB-00059 Bean class for ejb [\{0}] does not define a method corresponding to [\{1}] interface method [\{2}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref129]]AS-EJB-00060 keepstate is true and will not create new auto timers during deployment. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref130]]AS-EJB-00061 Failed to initialize the interceptor ::
+  Cause: Error during initializing the interceptor
++
+  Action: Try to restart the server
+
+[[sthref131]]AS-EJB-00062 [**BaseContainer**] Could not create MonitorRegistryMediator. [\{0}] ::
+  Cause: Fail to create MonitorRegistryMediator
++
+  Action: Check the exception stack
+
+[[sthref132]]AS-EJB-00063 Exception in backingStore.size() ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref133]]AS-JMS-CORE-00001 JMS Service Connection URL is : \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref134]]AS-JMS-CORE-00002 ADDRESSLIST in setJmsServiceProvider : \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref135]]AS-JMS-CORE-00003 Addresslist : \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref136]]AS-JMS-CORE-00004 End point determines destination name, Res name: \{0}, JNDI name: \{1} descriptor name : \{2} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref137]]AS-JMS-CORE-00005 Successfully set Master broker on JMSRA to \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref138]]AS-JMS-CORE-00006 Failed to set Master broker on JMSRA to \{0} cause \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref139]]AS-JMS-CORE-00007 Successfully set Cluster brokerlist to \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref140]]AS-JMS-CORE-00008 Failed to set Cluster brokerlist to \{0} cause \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref141]]AS-JMS-CORE-00009 Failed to shut down Grizzly NetworkListener : \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref142]]AS-JMS-CORE-00010 Error occurs when shutting down JMSRA : \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref143]]AS-JMS-CORE-00011 Invalid RMI registry port ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref144]]AS-JMS-CORE-00012 No such method \{0} in the class \{1} ::
+  Cause: The method setProperty is not defined in the class
++
+  Action: Define the appropriate method
+
+[[sthref145]]AS-JMS-CORE-00013 Connector Resource could not be closed ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref146]]AS-JMS-CORE-00014 rardeployment.mcfcreation_error \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref147]]AS-JMS-CORE-00015 Exception while getting configured RMI port : \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref148]]AS-JMS-CORE-00016 Failed to start Grizlly proxy for MQ broker ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref149]]AS-JMS-CORE-00017 Failed to create addresslist due to the exception : \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref150]]AS-JMS-CORE-00018 Error executing method \{0} of the class \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref151]]AS-JMS-CORE-00019 MDB destination not specified ::
+  Cause: Missing destination JNDI name
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref152]]AS-JMS-CORE-00020 Failed to validate endpoint ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref153]]AS-JMS-CORE-00021 Cannot obtain master broker ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref154]]AS-JMS-CORE-00022 Error while loading connector resources during recovery : \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref155]]AS-JMS-CORE-00023 Exception in reading mdb-container configuration : [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref156]]AS-JMS-CORE-00024 MQ Resource adapter upgrade started. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref157]]AS-JMS-CORE-00025 MQ Resource adapter upgrade completed. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref158]]AS-JMS-CORE-00026 Upgrading a MQ resource adapter failed : \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref159]]AS-JMS-CORE-00027 Check for a new version of MQ installation failed : \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref160]]AS-ORB-00001 Exception occurred when resolving \{0} ::
+  Cause: org.omg.CORBA.ORBPackage.InvalidName when trying to resolve
+  GroupInfoService
++
+  Action: Check server.log for details
+
+[[sthref161]]AS-ORB-00002 No Endpoints selected in com.sun.appserv.iiop.endpoints property. Using \{0}:\{1} instead ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref162]]AS-ORB-00003 Problem with membership change notification. Exception occurred : \{0} ::
+  Cause: check server.log for details
++
+  Action: check network configuration and cluster setup
+
+[[sthref163]]AS-ORB-00004 Could not find an endpoint to send request to. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref164]]AS-ORB-00005 Unknown host: \{0} Exception thrown : \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref165]]AS-ORB-00006 No Endpoints selected in com.sun.appserv.iiop.endpoints property. Using JNDI Provider URL \{0} instead ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref166]]AS-ORB-00007 Exception : \{0} thrown for bad provider URL String: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref167]]AS-WSSECURITY-00001 Request processing failed. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref168]]AS-WSSECURITY-00002 SEC2002: Container-auth: wss: Error validating request. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref169]]AS-WSSECURITY-00003 SEC2003: Container-auth: wss: Error securing response. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref170]]AS-WSSECURITY-00004 SEC2004: Container-auth: wss: Error securing request. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref171]]AS-WSSECURITY-00005 SEC2005: Container-auth: wss: Error validating response. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref172]]AS-WSSECURITY-00006 SEC2006: Container-auth: wss: Not a SOAP message context. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref173]]AS-WSSECURITY-00007 EJB Webservice security configuration Failure. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref174]]AS-WSSECURITY-00008 Servlet Webservice security configuration Failure ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref175]]AS-WSSECURITY-00009 BASIC AUTH username/password http header parsing error for \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref176]]AS-WSSECURITY-00010 Servlet Webservice security configuration Failure ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref177]]AS-WSSECURITY-00011 Following exception was thrown: ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref178]]AS-WEB-ADMIN-00001 Unable to register StatsProvider \{0} with Monitoring Infrastructure. No monitoring data will be collected for \{1} and \{2} ::
+  Cause: Current server config is null
++
+  Action: Verify if the server instance is started correctly
+
+[[sthref179]]AS-WEB-ADMIN-00002 Current server config is null ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref180]]AS-WEB-ADMIN-00003 The acceptor threads must be at least 1 ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref181]]AS-WEB-ADMIN-00004 Listener \{0} could not be created, actual reason: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref182]]AS-WEB-ADMIN-00005 A default virtual server is required. Please use --default-virtual-server to specify this value. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref183]]AS-WEB-ADMIN-00006 --defaultVS and --default-virtual-server conflict. Please use only --default-virtual-server to specify this value. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref184]]AS-WEB-ADMIN-00007 Attribute value (default-virtual-server = \{0}) is not found in list of virtual servers defined in config. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref185]]AS-WEB-ADMIN-00008 Http Listener named \{0} already exists. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref186]]AS-WEB-ADMIN-00009 Port [\{0}] is already taken for address [\{1}], please choose another port. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref187]]AS-WEB-ADMIN-00010 Network Listener named \{0} already exists. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref188]]AS-WEB-ADMIN-00011 Protocol \{0} has neither a protocol nor a port-unification configured. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref189]]AS-WEB-ADMIN-00012 \{0} create failed: ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref190]]AS-WEB-ADMIN-00013 The specified protocol \{0} is not yet configured. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref191]]AS-WEB-ADMIN-00014 Failed to create http-redirect for \{0}: \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref192]]AS-WEB-ADMIN-00015 An http element for \{0} already exists. Cannot add duplicate http. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref193]]AS-WEB-ADMIN-00016 An http-redirect element for \{0} already exists. Cannot add duplicate http-redirect. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref194]]AS-WEB-ADMIN-00017 \{0} protocol already exists. Cannot add duplicate protocol. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref195]]AS-WEB-ADMIN-00018 Failed to create protocol \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref196]]AS-WEB-ADMIN-00019 \{0} create failed: \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref197]]AS-WEB-ADMIN-00020 \{0} create failed. Given class is not a ProtocolFilter: \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref198]]AS-WEB-ADMIN-00021 \{0} create failed. Given class is not a ProtocolFinder: \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref199]]AS-WEB-ADMIN-00022 \{0} transport already exists. Cannot add duplicate transport. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref200]]AS-WEB-ADMIN-00023 Failed to create transport \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref201]]AS-WEB-ADMIN-00024 Please use only networklisteners. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref202]]AS-WEB-ADMIN-00025 Virtual Server named \{0} already exists. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref203]]AS-WEB-ADMIN-00026 \{0} create failed. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref204]]AS-WEB-ADMIN-00028 Specified http listener, \{0}, doesn''t exist. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref205]]AS-WEB-ADMIN-00029 \{0} delete failed. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref206]]AS-WEB-ADMIN-00030 \{0} Network Listener doesn't exist. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref207]]AS-WEB-ADMIN-00031 Deletion of NetworkListener \{0} failed. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref208]]AS-WEB-ADMIN-00032 \{0} http-redirect doesn't exist. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref209]]AS-WEB-ADMIN-00033 Deletion of http \{0} failed. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref210]]AS-WEB-ADMIN-00034 Deletion of http-redirect \{0} failed. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref211]]AS-WEB-ADMIN-00035 \{0} protocol doesn't exist. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref212]]AS-WEB-ADMIN-00036 \{0} protocol is being used in the network listener \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref213]]AS-WEB-ADMIN-00037 Deletion of Protocol \{0} failed. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref214]]AS-WEB-ADMIN-00038 \{0} delete failed: \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref215]]AS-WEB-ADMIN-00039 No \{0} element found with the name \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref216]]AS-WEB-ADMIN-00040 \{0} transport is being used in the network listener \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref217]]AS-WEB-ADMIN-00041 Deletion of Transport \{0} failed. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref218]]AS-WEB-ADMIN-00042 \{0} transport doesn''t exist. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref219]]AS-WEB-ADMIN-00043 \{0} delete failed. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref220]]AS-WEB-ADMIN-00044 Specified virtual server, \{0}, doesn''t exist. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref221]]AS-WEB-ADMIN-00045 Specified virtual server, \{0}, can not be deleted because it is referenced from http listener, \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref222]]AS-WEB-ADMIN-00046 Monitoring Registry does not exist. Possible causes are 1) Monitoring is not turned on or at a lower level 2) The corresponding container (web, ejb, etc.) is not loaded yet ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref223]]AS-WEB-UTIL-00001 Resource ''\{0}'' is missing ::
+  Cause: A naming exception is encountered
++
+  Action: Check the list of resources
+
+[[sthref224]]AS-WEB-UTIL-00002 Failed tracking modifications of ''\{0}'' : \{1} ::
+  Cause: A ClassCastException is encountered
++
+  Action: Check if the object is an instance of the class
+
+[[sthref225]]AS-WEB-UTIL-00003 WebappClassLoader.findClassInternal(\{0}) security exception: \{1} ::
+  Cause: An AccessControlException is encountered
++
+  Action: Check if the resource is accessible
+
+[[sthref226]]AS-WEB-UTIL-00004 Security Violation, attempt to use Restricted Class: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref227]]AS-WEB-UTIL-00005 Class \{0} has unsupported major or minor version numbers, which are greater than those found in the Java Runtime Environment version \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref228]]AS-WEB-UTIL-00006 Unable to load class with name [\{0}], reason: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref229]]AS-WEB-UTIL-00007 The web application [\{0}] registered the
+JDBC driver [\{1}] but failed to unregister it when the web application
+was stopped. To prevent a memory leak, the JDBC Driver has been forcibly
+unregistered. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref230]]AS-WEB-UTIL-00008 JDBC driver de-registration failed for web application [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref231]]AS-WEB-UTIL-00009 Exception closing input stream during JDBC driver de-registration for web application [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref232]]AS-WEB-UTIL-00010 This web container has not yet been started ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref233]]AS-WEB-UTIL-00011 Failed to check for ThreadLocal references for web application [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref234]]AS-WEB-UTIL-00012 Unable to determine string representation of key of type [\{0}] ::
+  Cause: An Exception occurred
++
+  Action: Check the exception for error
+
+[[sthref235]]AS-WEB-UTIL-00013 Unknown ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref236]]AS-WEB-UTIL-00014 Unable to determine string representation of value of type [\{0}] ::
+  Cause: An Exception occurred
++
+  Action: Check the exception for error
+
+[[sthref237]]AS-WEB-UTIL-00015 The web application [\{0}] created a ThreadLocal with key of type [\{1}] (value [\{2}]). The ThreadLocal has been correctly set to null and the key will be removed by GC. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref238]]AS-WEB-UTIL-00016 The web application [\{0}] created a
+ThreadLocal with key of type [\{1}] (value [\{2}]) and a value of type
+[\{3}] (value [\{4}]) but failed to remove it when the web application
+was stopped. Threads are going to be renewed over time to try and avoid
+a probable memory leak. ::
+  Cause: Failed to remove a ThreadLocal when the web application was
+  stopped
++
+  Action: Threads are going to be renewed over time to try and avoid a
+  probable memory leak.
+
+[[sthref239]]AS-WEB-UTIL-00017 Failed to find class sun.rmi.transport.Target to clear context class loader for web application [\{0}]. This is expected on non-Sun JVMs. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref240]]AS-WEB-UTIL-00018 Failed to clear context class loader referenced from sun.rmi.transport.Target for web application [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref241]]AS-WEB-UTIL-00019 Removed [\{0}] ResourceBundle references from the cache for web application [\{1}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref242]]AS-WEB-UTIL-00020 Failed to clear ResourceBundle references for web application [\{0}] ::
+  Cause: An Exception occurred
++
+  Action: Check the exception for error
+
+[[sthref243]]AS-WEB-UTIL-00021 Illegal JAR entry detected with name \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref244]]AS-WEB-UTIL-00022 Unable to validate JAR entry with name \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref245]]AS-WEB-UTIL-00023 Unable to create \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref246]]AS-WEB-UTIL-00024 Unable to delete \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref247]]AS-WEB-UTIL-00025 Unable to read data for class with name [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref248]]AS-WEB-UTIL-00026 Unable to purge bean classes from BeanELResolver ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref249]]AS-WEB-UTIL-00027 extra-class-path component [\{0}] is not a valid pathname ::
+  Cause: A naming exception is encountered
++
+  Action: Check the list of resources
+
+[[sthref250]]AS-WEB-UTIL-00028 The clearReferencesStatic is not consistent in context.xml for virtual servers ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref251]]AS-WEB-UTIL-00029 class-loader attribute dynamic-reload-interval in sun-web.xml not supported ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref252]]AS-WEB-UTIL-00030 Property element in sun-web.xml has null 'name' or 'value' ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref253]]AS-WEB-UTIL-00031 Ignoring invalid property [\{0}] = [\{1}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref254]]AS-WEB-UTIL-00032 The xml element should be [\{0}] rather than [\{1}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref255]]AS-WEB-UTIL-00033 This is an unexpected end of document ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref256]]AS-WEB-UTIL-00034 Unexpected type of ClassLoader. Expected: java.net.URLClassLoader, got: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref257]]AS-WEB-UTIL-00035 Unable to load class \{0}, reason: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref258]]AS-WEB-UTIL-00036 Invalid URLClassLoader path component: [\{0}] is neither a JAR file nor a directory ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref259]]AS-WEB-UTIL-00037 Error trying to scan the classes at \{0} for annotations in which a ServletContainerInitializer has expressed interest ::
+  Cause: An IOException is encountered
++
+  Action: Verify if the path is correct
+
+[[sthref260]]AS-WEB-UTIL-00038 Ignoring [\{0}] during Tag Library Descriptor (TLD) processing ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref261]]AS-WEB-UTIL-00039 Unable to determine TLD resources for [\{0}] tag library, because class loader [\{1}] for [\{2}] is not an instance of java.net.URLClassLoader ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref262]]AS-WEB-CORE-00001 Configuration error: Must be attached to a Context ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref263]]AS-WEB-CORE-00002 Authenticator[\{0}]: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref264]]AS-WEB-CORE-00003 Exception getting debug value ::
+  Cause: Could not get the method or invoke underlying method
++
+  Action: Verify the existence of such method and access permission
+
+[[sthref265]]AS-WEB-CORE-00004 Unexpected error forwarding or redirecting to login page ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref266]]AS-WEB-CORE-00005 Started ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref267]]AS-WEB-CORE-00006 Stopped ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref268]]AS-WEB-CORE-00007 Process session destroyed on \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref269]]AS-WEB-CORE-00008 Process request for ''\{0}'' ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref270]]AS-WEB-CORE-00009 Principal \{0} has already been authenticated ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref271]]AS-WEB-CORE-00010 Checking for SSO cookie ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref272]]AS-WEB-CORE-00011 SSO cookie is not present ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref273]]AS-WEB-CORE-00012 Checking for cached principal for \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref274]]AS-WEB-CORE-00013 Found cached principal \{0} with auth type \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref275]]AS-WEB-CORE-00014 No cached principal found, erasing SSO cookie ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref276]]AS-WEB-CORE-00015 Associate sso id \{0} with session \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref277]]AS-WEB-CORE-00016 Registering sso id \{0} for user \{1} with auth type \{2} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref278]]AS-WEB-CORE-00017 Looking up certificates ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref279]]AS-WEB-CORE-00018 No certificates included with this request ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref280]]AS-WEB-CORE-00019 No client certificate chain in this request ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref281]]AS-WEB-CORE-00020 Cannot authenticate with the provided credentials ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref282]]AS-WEB-CORE-00021 Unable to determine target of zero-arg dispatcher ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref283]]AS-WEB-CORE-00022 Unable to acquire RequestDispatcher for \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref284]]AS-WEB-CORE-00023 Unable to acquire RequestDispatcher for \{0} in servlet context \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref285]]AS-WEB-CORE-00024 Error invoking AsyncListener ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref286]]AS-WEB-CORE-00025 Asynchronous dispatch already in progress, must call ServletRequest.startAsync first ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref287]]AS-WEB-CORE-00026 Must not call AsyncContext.addListener after the container-initiated dispatch during which ServletRequest.startAsync was called has returned to the container ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref288]]AS-WEB-CORE-00027 Must not call AsyncContext.setTimeout after the container-initiated dispatch during which ServletRequest.startAsync was called has returned to the container ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref289]]AS-WEB-CORE-00028 The connector has already been initialized ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref290]]AS-WEB-CORE-00029 Error registering connector ::
+  Cause: Could not register connector
++
+  Action: Verify domain name and type
+
+[[sthref291]]AS-WEB-CORE-00030 Failed to instanciate HttpHandler ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref292]]AS-WEB-CORE-00031 mod_jk invalid Adapter implementation: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref293]]AS-WEB-CORE-00032 Protocol handler instantiation failed: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref294]]AS-WEB-CORE-00033 The connector has already been started ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref295]]AS-WEB-CORE-00034 Protocol handler start failed: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref296]]AS-WEB-CORE-00035 Coyote connector has not been started ::
+  Cause: Could not stop processing requests via this Connector
++
+  Action: Verify if the connector has not been started
+
+[[sthref297]]AS-WEB-CORE-00036 Protocol handler destroy failed: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref298]]AS-WEB-CORE-00037 An exception or error occurred in the container during the request processing ::
+  Cause: Could not process the request in the container
++
+  Action: Verify certificate chain retrieved from the request header and
+  the correctness of request
+
+[[sthref299]]AS-WEB-CORE-00038 HTTP listener on port \{0} has been disabled ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref300]]AS-WEB-CORE-00039 Error parsing client cert chain into array of java.security.cert.X509Certificate instances ::
+  Cause: Could not get the SSL client certificate chain
++
+  Action: Verify certificate chain and the request
+
+[[sthref301]]AS-WEB-CORE-00040 No Host matches server name \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref302]]AS-WEB-CORE-00041 Cannot use this object outside a servlet's service method or outside a filter's doFilter method ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref303]]AS-WEB-CORE-00042 Cannot set a null ReadListener object ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref304]]AS-WEB-CORE-00043 Cannot set a null WriteListener object ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref305]]AS-WEB-CORE-00044 Failed to skip \{0} characters in the underlying buffer of CoyoteReader on readLine(). ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref306]]AS-WEB-CORE-00045 Stream closed ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref307]]AS-WEB-CORE-00046 Already set read listener ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref308]]AS-WEB-CORE-00047 Cannot set ReaderListener for non-async or non-upgrade request ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref309]]AS-WEB-CORE-00048 Error in invoking ReadListener.onDataAvailable ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref310]]AS-WEB-CORE-00049 The WriteListener has already been set. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref311]]AS-WEB-CORE-00050 Cannot set WriteListener for non-async or non-upgrade request ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref312]]AS-WEB-CORE-00051 Error in invoking WriteListener.onWritePossible ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref313]]AS-WEB-CORE-00052 getReader() has already been called for this request ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref314]]AS-WEB-CORE-00053 getInputStream() has already been called for this request ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref315]]AS-WEB-CORE-00054 Unable to determine client remote address from proxy (returns null) ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref316]]AS-WEB-CORE-00055 Unable to resolve IP address \{0} into host name ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref317]]AS-WEB-CORE-00056 Exception thrown by attributes event listener ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref318]]AS-WEB-CORE-00057 Cannot call setAttribute with a null name ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref319]]AS-WEB-CORE-00058 Unable to determine canonical name of file [\{0}] specified for use with sendfile ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref320]]AS-WEB-CORE-00059 Unable to set request character encoding to \{0} from context \{1}, because request parameters have already been read, or ServletRequest.getReader() has already been called ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref321]]AS-WEB-CORE-00060 Attempt to re-login while the user identity already exists ::
+  Cause: Could not re-login
++
+  Action: Verify if user has already login
+
+[[sthref322]]AS-WEB-CORE-00061 changeSessionId has been called without a session ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref323]]AS-WEB-CORE-00062 Cannot create a session after the response has been committed ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref324]]AS-WEB-CORE-00063 Invalid URI encoding; using HTTP default ::
+  Cause: Could not set URI converter
++
+  Action: Verify URI encoding, using HTTP default
+
+[[sthref325]]AS-WEB-CORE-00064 Invalid URI character encoding; trying ascii ::
+  Cause: Could not encode URI character
++
+  Action: Verify URI encoding, trying ascii
+
+[[sthref326]]AS-WEB-CORE-00065 Request is within the scope of a filter or servlet that does not support asynchronous operations ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref327]]AS-WEB-CORE-00066 ServletRequest.startAsync called again without any asynchronous dispatch, or called outside the scope of any such dispatch, or called again within the scope of the same dispatch ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref328]]AS-WEB-CORE-00067 Response already closed ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref329]]AS-WEB-CORE-00068 ServletRequest.startAsync called outside the scope of an async dispatch ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref330]]AS-WEB-CORE-00069 The request has not been put into asynchronous mode, must call ServletRequest.startAsync first ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref331]]AS-WEB-CORE-00070 Request already released from asynchronous mode ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref332]]AS-WEB-CORE-00071 Unable to perform error dispatch ::
+  Cause: Could not perform post-request processing as required by this
+  Valve
++
+  Action: Verify if I/O exception or servlet exception occur
+
+[[sthref333]]AS-WEB-CORE-00072 Request.\{0} is called without multipart configuration. Either add a @MultipartConfig to the servlet, or a multipart-config element to web.xml ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref334]]AS-WEB-CORE-00073 This should not happen-breaking background lock: sess = \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref335]]AS-WEB-CORE-00074 Must not use request object outside the scope of a servlet's service or a filter's doFilter method ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref336]]AS-WEB-CORE-00075 Error during finishResponse ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref337]]AS-WEB-CORE-00076 getWriter() has already been called for this response ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref338]]AS-WEB-CORE-00077 getOutputStream() has already been called for this response ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref339]]AS-WEB-CORE-00078 Cannot reset buffer after response has been committed ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref340]]AS-WEB-CORE-00079 Cannot change buffer size after data has been written ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref341]]AS-WEB-CORE-00080 Cannot call sendError() after the response has been committed ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref342]]AS-WEB-CORE-00081 Cannot call sendRedirect() after the response has been committed ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref343]]AS-WEB-CORE-00082 Null response object ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref344]]AS-WEB-CORE-00083 Not allowed to call this
+javax.servlet.ServletContext method from a ServletContextListener that
+was neither declared in the application's deployment descriptor nor
+annotated with WebListener ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref345]]AS-WEB-CORE-00084 Exception thrown by attributes event listener ::
+  Cause: Could not modify attribute
++
+  Action: Verify name and value from Servlet Context
+
+[[sthref346]]AS-WEB-CORE-00085 Name cannot be null ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref347]]AS-WEB-CORE-00086 Cannot forward after response has been committed ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref348]]AS-WEB-CORE-00087 Servlet \{0} is currently unavailable ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref349]]AS-WEB-CORE-00088 Allocate exception for servlet \{0} ::
+  Cause: Could not allocate servlet instance
++
+  Action: Verify the configuration of wrapper
+
+[[sthref350]]AS-WEB-CORE-00089 Exceeded maximum depth for nested request dispatches: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref351]]AS-WEB-CORE-00090 Servlet.service() for servlet \{0} threw exception ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref352]]AS-WEB-CORE-00091 Release filters exception for servlet \{0} ::
+  Cause: Could not release filter chain
++
+  Action: Verify the availability of current filter chain
+
+[[sthref353]]AS-WEB-CORE-00092 Deallocate exception for servlet \{0} ::
+  Cause: Could not deallocate the allocated servlet instance
++
+  Action: Verify the availability of servlet instance
+
+[[sthref354]]AS-WEB-CORE-00093 ApplicationDispatcher[\{0}]: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref355]]AS-WEB-CORE-00094 ApplicationDispatcher[\{0}]: \{1} ::
+  Cause: Could not get logger from parent context
++
+  Action: Verify if logger is null
+
+[[sthref356]]AS-WEB-CORE-00095 Exception processing \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref357]]AS-WEB-CORE-00096 Exception sending default error page ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref358]]AS-WEB-CORE-00097 Filter execution threw an exception ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref359]]AS-WEB-CORE-00098 ApplicationFilterConfig.doAsPrivilege ::
+  Cause: Could not release allocated filter instance
++
+  Action: Verify the privilege
+
+[[sthref360]]AS-WEB-CORE-00099 ContainerBase.setLoader: stop: ::
+  Cause: Could not stop previous loader
++
+  Action: Verify previous loader
+
+[[sthref361]]AS-WEB-CORE-00100 ContainerBase.setLoader: start: ::
+  Cause: Could not start new loader
++
+  Action: Verify the configuration of container
+
+[[sthref362]]AS-WEB-CORE-00101 ContainerBase.setLogger: stop: ::
+  Cause: Could not stop previous logger
++
+  Action: Verify previous logger
+
+[[sthref363]]AS-WEB-CORE-00102 ContainerBase.setLogger: start: ::
+  Cause: Could not start new logger
++
+  Action: Verify the configuration of container
+
+[[sthref364]]AS-WEB-CORE-00103 ContainerBase.setManager: stop: ::
+  Cause: Could not stop previous manager
++
+  Action: Verify previous manager
+
+[[sthref365]]AS-WEB-CORE-00104 ContainerBase.setManager: start: ::
+  Cause: Could not start new manager
++
+  Action: Verify the configuration of container
+
+[[sthref366]]AS-WEB-CORE-00105 ContainerBase.setRealm: stop: ::
+  Cause: Could not stop previous realm
++
+  Action: Verify previous realm
+
+[[sthref367]]AS-WEB-CORE-00106 ContainerBase.setRealm: start: ::
+  Cause: Could not start new realm
++
+  Action: Verify the configuration of container
+
+[[sthref368]]AS-WEB-CORE-00107 addChild: Child name \{0} is not unique ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref369]]AS-WEB-CORE-00108 ContainerBase.addChild: start: ::
+  Cause: Could not start new child container
++
+  Action: Verify the configuration of parent container
+
+[[sthref370]]AS-WEB-CORE-00109 ContainerBase.removeChild: stop: ::
+  Cause: Could not stop existing child container
++
+  Action: Verify existing child container
+
+[[sthref371]]AS-WEB-CORE-00110 Container \{0} has already been started ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref372]]AS-WEB-CORE-00111 Container \{0} has not been started ::
+  Cause: Current container has not been started
++
+  Action: Verify the current container
+
+[[sthref373]]AS-WEB-CORE-00112 Error stopping container \{0} ::
+  Cause: Could not stop child container
++
+  Action: Verify the existence of current child container
+
+[[sthref374]]AS-WEB-CORE-00113 Error unregistering ::
+  Cause: Could not unregister current container
++
+  Action: Verify if the container has been registered
+
+[[sthref375]]AS-WEB-CORE-00114 Exception invoking periodic operation: ::
+  Cause: Could not set the context ClassLoader
++
+  Action: Verify the security permission
+
+[[sthref376]]AS-WEB-CORE-00115 Unable to configure \{0} for filter \{1} of servlet context \{2}, because this servlet context has already been initialized ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref377]]AS-WEB-CORE-00116 Unable to configure \{0} for servlet \{1} of servlet context \{2}, because this servlet context has already been initialized ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref378]]AS-WEB-CORE-00117 Unable to configure \{0} for filter \{1} of servlet context \{2}, because this servlet context has already been initialized ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref379]]AS-WEB-CORE-00118 Unable to configure mapping for filter \{0} of servlet context \{1}, because servlet names are null or empty ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref380]]AS-WEB-CORE-00119 Unable to configure mapping for filter \{0} of servlet context \{1}, because URL patterns are null or empty ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref381]]AS-WEB-CORE-00120 Creation of the naming context failed: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref382]]AS-WEB-CORE-00121 Failed to bind object: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref383]]AS-WEB-CORE-00122 Environment entry \{0} has an invalid type ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref384]]AS-WEB-CORE-00123 Environment entry \{0} has an invalid value ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref385]]AS-WEB-CORE-00124 Failed to unbind object: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref386]]AS-WEB-CORE-00125 Must not use request object outside the scope of a servlet's service or a filter's doFilter method ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref387]]AS-WEB-CORE-00126 Null response object ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref388]]AS-WEB-CORE-00127 Unable to configure \{0} for servlet \{1} of servlet context \{2}, because this servlet context has already been initialized ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref389]]AS-WEB-CORE-00128 Unable to configure mapping for servlet \{0} of servlet context \{1}, because URL patterns are null or empty ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref390]]AS-WEB-CORE-00129 Unable to configure \{0} session tracking cookie property for servlet context \{1}, because this servlet context has already been initialized ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref391]]AS-WEB-CORE-00130 Missing alternate docbase URL pattern or directory location ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref392]]AS-WEB-CORE-00131 LoginConfig cannot be null ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref393]]AS-WEB-CORE-00132 Form login page \{0} must start with a ''/'' ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref394]]AS-WEB-CORE-00133 Form error page \{0} must start with a ''/'' ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref395]]AS-WEB-CORE-00134 Child of a Context must be a Wrapper ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref396]]AS-WEB-CORE-00135 JSP file \{0} must start with a ''/'' ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref397]]AS-WEB-CORE-00136 Invalid <url-pattern> \{0} in security constraint ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref398]]AS-WEB-CORE-00137 ErrorPage cannot be null ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref399]]AS-WEB-CORE-00138 Error page location \{0} must start with a ''/'' ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref400]]AS-WEB-CORE-00139 Invalid status code \{0} for error-page mapping. HTTP error codes are defined in the range from 400-600 ::
+  Cause: Invalid error page code
++
+  Action: Verify the error code
+
+[[sthref401]]AS-WEB-CORE-00140 Filter mapping specifies an unknown filter name \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref402]]AS-WEB-CORE-00141 Filter mapping must specify either a <url-pattern> or a <servlet-name> ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref403]]AS-WEB-CORE-00142 Invalid <url-pattern> \{0} in filter mapping ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref404]]AS-WEB-CORE-00143 Unable to call method \{0} on servlet context \{1}, because this servlet context has already been initialized ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref405]]AS-WEB-CORE-00144 Filter name is null or an empty String ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref406]]AS-WEB-CORE-00145 Unable to set \{0} session tracking mode on servlet context \{1}, because it is not supported ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref407]]AS-WEB-CORE-00146 Unable to add listener of type: \{0},
+because it does not implement any of the required
+ServletContextListener, ServletContextAttributeListener,
+ServletRequestListener, ServletRequestAttributeListener,
+HttpSessionListener, or HttpSessionAttributeListener interfaces ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref408]]AS-WEB-CORE-00147 Both parameter name and parameter value are required, parameter name is \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref409]]AS-WEB-CORE-00148 Duplicate context initialization parameter \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref410]]AS-WEB-CORE-00149 Invalid <url-pattern> \{0} in servlet mapping ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref411]]AS-WEB-CORE-00150 Servlet mapping specifies an unknown servlet name \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref412]]AS-WEB-CORE-00151 Unable to map Servlet [\{0}] to URL pattern [\{1}], because Servlet [\{2}] is already mapped to it ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref413]]AS-WEB-CORE-00152 Error creating instance listener \{0} ::
+  Cause: Could not create new instance
++
+  Action: Verify the configuration of Wrapper and InstanceListener
+
+[[sthref414]]AS-WEB-CORE-00153 Error creating lifecycle listener \{0} ::
+  Cause: Could not create new instance for life cycle listener
++
+  Action: Verify the permit of current class to access newInstance()
+
+[[sthref415]]AS-WEB-CORE-00154 Error creating container listener \{0} ::
+  Cause: Could not create new instance for container listener
++
+  Action: Verify the permit of current class to access newInstance()
+
+[[sthref416]]AS-WEB-CORE-00155 Reloading this Context has started ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref417]]AS-WEB-CORE-00156 Error stopping context \{0} ::
+  Cause: Could not stop context component
++
+  Action: Verify stop() to guarantee the whole domain is being stopped
+  correctly
+
+[[sthref418]]AS-WEB-CORE-00157 Error starting context \{0} ::
+  Cause: Could not start context component
++
+  Action: Verify start() to guarantee the context component is being
+  started correctly
+
+[[sthref419]]AS-WEB-CORE-00158 Error invoking requestInitialized method on ServletRequestListener \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref420]]AS-WEB-CORE-00159 Error invoking requestDestroyed method on ServletRequestListener \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref421]]AS-WEB-CORE-00160 Exception starting filter \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref422]]AS-WEB-CORE-00161 Servlet with name \{0} does not have any servlet-class or jsp-file configured ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref423]]AS-WEB-CORE-00162 Filter with name \{0} does not have any class configured ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref424]]AS-WEB-CORE-00163 Exception sending context destroyed event to listener instance of class \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref425]]AS-WEB-CORE-00164 Error starting resources in context \{0} ::
+  Cause: Could not get the proxy directory context
++
+  Action: Verify the existence of the context
+
+[[sthref426]]AS-WEB-CORE-00165 Error stopping static resources ::
+  Cause: Could not deallocate resource and destroy proxy
++
+  Action: Verify if a fatal error that prevents this component from
+  being used
+
+[[sthref427]]AS-WEB-CORE-00166 Current container has already been started with a DirContext object ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref428]]AS-WEB-CORE-00167 Error starting resources in context \{0} with Exception message: \{1} ::
+  Cause: Could not get the proxy directory context
++
+  Action: Verify the existence of the context
+
+[[sthref429]]AS-WEB-CORE-00168 Form login page \{0} must start with a ''/'' in Servlet 2.4 ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref430]]AS-WEB-CORE-00169 Form error page \{0} must start with a ''/'' in Servlet 2.4 ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref431]]AS-WEB-CORE-00170 JSP file \{0} must start with a ''/'' in Servlet 2.4 ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref432]]AS-WEB-CORE-00171 Container \{0} has already been started ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref433]]AS-WEB-CORE-00172 Error initialzing resources\{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref434]]AS-WEB-CORE-00173 Error in dependency check for standard context \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref435]]AS-WEB-CORE-00174 Startup of context \{0} failed due to previous errors ::
+  Cause: Could not startup servlet
++
+  Action: Verify the initialization process
+
+[[sthref436]]AS-WEB-CORE-00175 Exception during cleanup after start failed ::
+  Cause: Stop staring up failed
++
+  Action: Verify configurations to stop starting up
+
+[[sthref437]]AS-WEB-CORE-00176 Error invoking ServletContainerInitializer \{0} ::
+  Cause: Could not instantiate servlet container initializer
++
+  Action: Verify the access permission of current class loader
+
+[[sthref438]]AS-WEB-CORE-00177 Error resetting context \{0} ::
+  Cause: Could not restore original state
++
+  Action: Verify if extend 'this' method, and make sure to clean up
+
+[[sthref439]]AS-WEB-CORE-00178 URL pattern \{0} must start with a ''/'' in Servlet 2.4 ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref440]]AS-WEB-CORE-00179 Failed to create work directory \{0} ::
+  Cause: Could not create work directory
++
+  Action: Verify the directory name, and access permission
+
+[[sthref441]]AS-WEB-CORE-00180 The URL pattern \{0} contains a CR or LF and so can never be matched ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref442]]AS-WEB-CORE-00181 Missing name attribute in \{0} ::
+  Cause: Could not get the attribute
++
+  Action: Verify the existence of the value associated with the key
+
+[[sthref443]]AS-WEB-CORE-00182 Malformed name \{0}, value of name attribute does not start with ''//'' ::
+  Cause: Illegal path name
++
+  Action: Verify path name
+
+[[sthref444]]AS-WEB-CORE-00183 Path \{0} does not start with ''/'' ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref445]]AS-WEB-CORE-00184 Path \{0} does not start with ''/'' and is not empty ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref446]]AS-WEB-CORE-00185 Error during mapping ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref447]]AS-WEB-CORE-00186 Unable to create custom ObjectInputStream ::
+  Cause: Could not create custom ObjectInputStream
++
+  Action: Verify input stream and class loader
+
+[[sthref448]]AS-WEB-CORE-00187 Error during bindThread ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref449]]AS-WEB-CORE-00188 Servlet \{0} threw load() exception ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref450]]AS-WEB-CORE-00189 Error updating ctx with jmx \{0} \{1} \{2} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref451]]AS-WEB-CORE-00190 Error registering wrapper with jmx \{0} \{1} \{2} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref452]]AS-WEB-CORE-00191 Null filter instance ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref453]]AS-WEB-CORE-00192 Servlet name is null or an empty String ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref454]]AS-WEB-CORE-00193 Null servlet instance ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref455]]AS-WEB-CORE-00194 Child of an Engine must be a Host ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref456]]AS-WEB-CORE-00195 Engine cannot have a parent Container ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref457]]AS-WEB-CORE-00196 Error registering ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref458]]AS-WEB-CORE-00197 No Host matches server name \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref459]]AS-WEB-CORE-00198 Host name is required ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref460]]AS-WEB-CORE-00199 Child of a Host must be a Context ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref461]]AS-WEB-CORE-00200 MAPPING configuration error for request URI \{0} ::
+  Cause: No context has been selected
++
+  Action: Verify the uri or default context
+
+[[sthref462]]AS-WEB-CORE-00201 ErrorPage must not be null ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref463]]AS-WEB-CORE-00202 XML validation enabled ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref464]]AS-WEB-CORE-00203 Create Host deployer for direct deployment ( non-jmx ) ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref465]]AS-WEB-CORE-00204 Error creating deployer ::
+  Cause: Could not instantiate deployer
++
+  Action: Verify access permission
+
+[[sthref466]]AS-WEB-CORE-00205 Error registering host \{0} ::
+  Cause: Initialization failed
++
+  Action: Verify domain and host name
+
+[[sthref467]]AS-WEB-CORE-00206 Couldn't load specified error report valve class: \{0} ::
+  Cause: Could not load instance of host valve
++
+  Action: Verify access permission
+
+[[sthref468]]AS-WEB-CORE-00207 Context path is required ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref469]]AS-WEB-CORE-00208 Invalid context path: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref470]]AS-WEB-CORE-00209 Context path \{0} is already in use ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref471]]AS-WEB-CORE-00210 URL to web application archive is required ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref472]]AS-WEB-CORE-00211 Installing web application at context path \{0} from URL \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref473]]AS-WEB-CORE-00212 Invalid URL for web application archive: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref474]]AS-WEB-CORE-00213 Only web applications in the Host web application directory can be installed, invalid URL: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref475]]AS-WEB-CORE-00214 Context path \{0} must match the directory or WAR file name: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref476]]AS-WEB-CORE-00215 Error installing ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref477]]AS-WEB-CORE-00216 Error deploying application at context path \{0} ::
+  Cause: Could not initiate life cycle listener
++
+  Action: Verify the access permission
+
+[[sthref478]]AS-WEB-CORE-00217 URL to configuration file is required ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref479]]AS-WEB-CORE-00218 Use of configuration file is not allowed ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref480]]AS-WEB-CORE-00219 Processing Context configuration file URL \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref481]]AS-WEB-CORE-00220 Installing web application from URL \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref482]]AS-WEB-CORE-00221 Context path \{0} is not currently in use ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref483]]AS-WEB-CORE-00222 Removing web application at context path \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref484]]AS-WEB-CORE-00223 Error removing application at context path \{0} ::
+  Cause: Could not remove an existing child Container
++
+  Action: Verify if there are any I/O errors
+
+[[sthref485]]AS-WEB-CORE-00224 Starting web application at context path \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref486]]AS-WEB-CORE-00225 Starting web application at context path \{0} failed ::
+  Cause: Could not start web application at current context path
++
+  Action: Verify if start() is called before any of the public methods
+  of this component are utilized, and it should send START_EVENT to any
+  registered listeners
+
+[[sthref487]]AS-WEB-CORE-00226 Stopping web application at context path \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref488]]AS-WEB-CORE-00227 Stopping web application at context path \{0} failed ::
+  Cause: Could not terminate the active use of the public methods of
+  this component
++
+  Action: Verify if stop() is the last one called on a given instance of
+  this component, and it should send STOP_EVENT to any registered
+  listeners
+
+[[sthref489]]AS-WEB-CORE-00228 Failed to remove file \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref490]]AS-WEB-CORE-00229 Remote Client Aborted Request, IOException: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref491]]AS-WEB-CORE-00230 The error-page \{0} or \{1} does not exist ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref492]]AS-WEB-CORE-00231 No Context configured to process this request ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref493]]AS-WEB-CORE-00232 Pipeline has already been started ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref494]]AS-WEB-CORE-00233 Pipeline has not been started ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref495]]AS-WEB-CORE-00234 Exception occurred when stopping GlassFishValve in StandardPipeline.setBasic ::
+  Cause: Could not terminate the active use of the public methods of
+  this component
++
+  Action: Verify if stop() is the last one called on a given instance of
+  this component, and it should send STOP_EVENT to any registered
+  listeners
+
+[[sthref496]]AS-WEB-CORE-00235 Exception occurred when starting GlassFishValve in StandardPipeline.setBasic ::
+  Cause: Could not prepare for the beginning of active use of the public
+  methods of this component
++
+  Action: Verify if start() is called before any of the public methods
+  of this component are utilized, and it should send START_EVENT to any
+  registered listeners
+
+[[sthref497]]AS-WEB-CORE-00236 Exception occurred when starting GlassFishValve in StandardPipline.addValve ::
+  Cause: Specific valve could not be associated with current container
++
+  Action: Verify the availability of current valve
+
+[[sthref498]]AS-WEB-CORE-00237 Unable to add valve \{0} ::
+  Cause: Could not add tomcat-style valve
++
+  Action: Verify if this is a GlassFish-style valve that was compiled
+  against the old org.apache.catalina.Valve interface
+
+[[sthref499]]AS-WEB-CORE-00238 No more Valves in the Pipeline processing this request ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref500]]AS-WEB-CORE-00239 HttpUpgradeHandler handler cannot be null ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref501]]AS-WEB-CORE-00240 Exception occurred when stopping GlassFishValve in StandardPipeline.removeValve ::
+  Cause: Could not terminate the active use of the public methods of
+  this component
++
+  Action: Verify if stop() is the last one called on a given instance of
+  this component, and it should send STOP_EVENT to any registered
+  listeners
+
+[[sthref502]]AS-WEB-CORE-00241 StandardPipeline[\{0}]: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref503]]AS-WEB-CORE-00242 StandardPipeline[null]: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref504]]AS-WEB-CORE-00243 LifecycleException occurred during service initialization: \{0} ::
+  Cause: This service was already initialized
++
+  Action: Verify if the service is not already initialized
+
+[[sthref505]]AS-WEB-CORE-00244 Exception StandardServer.await: create[\{0}] ::
+  Cause: An I/O error occurred when opening the socket
++
+  Action: Verify the port number and try again
+
+[[sthref506]]AS-WEB-CORE-00245 StandardServer.accept security exception: \{0} ::
+  Cause: Could not get connection
++
+  Action: Verify the connection settings and try again
+
+[[sthref507]]AS-WEB-CORE-00246 StandardServer.await: accept: \{0} ::
+  Cause: Could not get input stream
++
+  Action: Verify the input stream and try again
+
+[[sthref508]]AS-WEB-CORE-00247 StandardServer.await: read: \{0} ::
+  Cause: Could not read from input stream
++
+  Action: Verify the input stream and try again
+
+[[sthref509]]AS-WEB-CORE-00248 StandardServer.await: Invalid command \{0} received ::
+  Cause: Invalid command
++
+  Action: Verify the command
+
+[[sthref510]]AS-WEB-CORE-00249 This service has already been initialized ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref511]]AS-WEB-CORE-00250 Error registering: \{0} ::
+  Cause: Could not register ObjectName: "Catalina:type=Server"
++
+  Action: Verify the configuration and try again
+
+[[sthref512]]AS-WEB-CORE-00251 This service has already been started ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref513]]AS-WEB-CORE-00252 Starting service \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref514]]AS-WEB-CORE-00253 Stopping service \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref515]]AS-WEB-CORE-00254 This service has already been initialized ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref516]]AS-WEB-CORE-00255 Error registering Service at domain \{0} ::
+  Cause: Could not register service
++
+  Action: Verify the domain name and service name
+
+[[sthref517]]AS-WEB-CORE-00256 Service initializing at \{0} failed ::
+  Cause: Could not pre-startup initialization
++
+  Action: Verify if server was already initialized
+
+[[sthref518]]AS-WEB-CORE-00257 Parent container of a Wrapper must be a Context ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref519]]AS-WEB-CORE-00258 Wrapper container may not have child containers ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref520]]AS-WEB-CORE-00259 Cannot allocate servlet \{0} because it is being unloaded ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref521]]AS-WEB-CORE-00260 Error allocating a servlet instance ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref522]]AS-WEB-CORE-00261 Class \{0} is not a Servlet ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref523]]AS-WEB-CORE-00262 Error instantiating servlet class \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref524]]AS-WEB-CORE-00263 Servlet of class \{0} is privileged and cannot be loaded by this web application ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref525]]AS-WEB-CORE-00264 No servlet class has been specified for servlet \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref526]]AS-WEB-CORE-00265 Wrapper cannot find Loader for servlet \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref527]]AS-WEB-CORE-00266 Wrapper cannot find servlet class \{0} or a class it depends on ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref528]]AS-WEB-CORE-00267 Servlet.init() for servlet \{0} threw exception ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref529]]AS-WEB-CORE-00268 Servlet execution threw an exception ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref530]]AS-WEB-CORE-00269 Marking servlet \{0} as unavailable ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref531]]AS-WEB-CORE-00270 Waiting for \{0} instance(s) of \{1} to be deallocated ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref532]]AS-WEB-CORE-00271 Servlet.destroy() for servlet \{0} threw exception ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref533]]AS-WEB-CORE-00272 Servlet \{0} threw unload() exception ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref534]]AS-WEB-CORE-00273 Error loading \{0} \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref535]]AS-WEB-CORE-00274 This application is not currently available ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref536]]AS-WEB-CORE-00275 Servlet \{0} is currently unavailable ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref537]]AS-WEB-CORE-00276 Servlet \{0} is not available ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref538]]AS-WEB-CORE-00277 Allocate exception for servlet \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref539]]AS-WEB-CORE-00278 Exception for sending acknowledgment of a request: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref540]]AS-WEB-CORE-00280 Release filters exception for servlet \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref541]]AS-WEB-CORE-00281 Deallocate exception for servlet \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref542]]AS-WEB-CORE-00283 StandardWrapperValve[\{0}]: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref543]]AS-WEB-CORE-00284 Failed to skip \{0} bytes in the underlying buffer of MultipartStream on close(). ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref544]]AS-WEB-CORE-00285 file data is empty. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref545]]AS-WEB-CORE-00286 Unable to create Random source using class [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref546]]AS-WEB-CORE-00287 The property "\{0}" is not defined for filters of type "\{1}" ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref547]]AS-WEB-CORE-00288 Error registering loader ::
+  Cause: Could not register loader
++
+  Action: Verify Object name
+
+[[sthref548]]AS-WEB-CORE-00289 Error registering jndi stream handler ::
+  Cause: Could not register jndi stream handler
++
+  Action: Verify if the application has already set a factory, if a
+  security manager exists and itscheckSetFactory method does not allow
+  the operation
+
+[[sthref549]]AS-WEB-CORE-00290 Loader has already been started ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref550]]AS-WEB-CORE-00291 No resources for \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref551]]AS-WEB-CORE-00292 LifecycleException ::
+  Cause: Could not construct a class loader
++
+  Action: Verify if there is any life cycle exception
+
+[[sthref552]]AS-WEB-CORE-00293 Loader has not yet been started ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref553]]AS-WEB-CORE-00294 Cannot set reloadable property to \{0} ::
+  Cause: Could not set reloadable property
++
+  Action: Verify the value for the property
+
+[[sthref554]]AS-WEB-CORE-00295 WebappLoader[\{0}]: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref555]]AS-WEB-CORE-00296 No work dir for \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref556]]AS-WEB-CORE-00297 Failed to create destination directory to copy resources ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref557]]AS-WEB-CORE-00298 Failed to copy resources ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref558]]AS-WEB-CORE-00299 Failed to create work directory to \{0} ::
+  Cause: Could not create work directory
++
+  Action: Verify the PATH
+
+[[sthref559]]AS-WEB-CORE-00300 File Logger has already been started ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref560]]AS-WEB-CORE-00301 File Logger has not yet been started ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref561]]AS-WEB-CORE-00302 Unknown container \{0} ::
+  Cause: Unknown container for implementation of StandardEngine
+  interface
++
+  Action: Verify the current container
+
+[[sthref562]]AS-WEB-CORE-00303 Null engine !! \{0} ::
+  Cause: Could not get engine
++
+  Action: Verify current container
+
+[[sthref563]]AS-WEB-CORE-00304 Unable to create javax.management.ObjectName for Logger ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref564]]AS-WEB-CORE-00305 Can't register logger \{0} ::
+  Cause: Could not register logger
++
+  Action: Verify registration is called after configure()
+
+[[sthref565]]AS-WEB-CORE-00306 Setting JAAS app name \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref566]]AS-WEB-CORE-00307 Login exception authenticating username \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref567]]AS-WEB-CORE-00308 Username \{0} NOT authenticated due to failed login ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref568]]AS-WEB-CORE-00309 Username \{0} NOT authenticated due to expired account ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref569]]AS-WEB-CORE-00310 Username \{0} NOT authenticated due to expired credential ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref570]]AS-WEB-CORE-00311 error ::
+  Cause: Could not authenticate by using the current username
++
+  Action: Verify the username and credential
+
+[[sthref571]]AS-WEB-CORE-00312 Illegal digestEncoding: \{0} ::
+  Cause: Could not convert the char array to byte array with respect to
+  given charset
++
+  Action: Verify the current charset
+
+[[sthref572]]AS-WEB-CORE-00313 Access to the requested resource has been denied ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref573]]AS-WEB-CORE-00314 Configuration error: Cannot perform access control without an authenticated principal ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref574]]AS-WEB-CORE-00315 Username \{0} has role \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref575]]AS-WEB-CORE-00316 Username \{0} does NOT have role \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref576]]AS-WEB-CORE-00317 This Realm has already been started ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref577]]AS-WEB-CORE-00318 Invalid message digest algorithm \{0} specified ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref578]]AS-WEB-CORE-00319 This Realm has not yet been started ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref579]]AS-WEB-CORE-00320 Error digesting user credentials ::
+  Cause: Could not digest user credentials
++
+  Action: Verify the current credential
+
+[[sthref580]]AS-WEB-CORE-00321 Couldn't get MD5 digest ::
+  Cause: Could not get instance of MessageDigest based on MD5
++
+  Action: Verify if it supports a MessageDigestSpi implementation for
+  the specified algorithm
+
+[[sthref581]]AS-WEB-CORE-00322 An exception occurs when running the PrivilegedExceptionAction block. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref582]]AS-WEB-CORE-00323 Only skipped [\{0}] bytes when [\{1}] were requested ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref583]]AS-WEB-CORE-00324 Directory Listing For \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref584]]AS-WEB-CORE-00325 Up To \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref585]]AS-WEB-CORE-00326 Filename ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref586]]AS-WEB-CORE-00327 Size ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref587]]AS-WEB-CORE-00328 Last Modified ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref588]]AS-WEB-CORE-00329 Container has not called setWrapper() for this servlet ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref589]]AS-WEB-CORE-00330 Cannot call invoker servlet with a named dispatcher ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref590]]AS-WEB-CORE-00331 No servlet name or class was specified in path \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref591]]AS-WEB-CORE-00332 Cannot create servlet wrapper for path \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref592]]AS-WEB-CORE-00333 Cannot allocate servlet instance for path \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref593]]AS-WEB-CORE-00334 Cannot deallocate servlet instance for path \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref594]]AS-WEB-CORE-00335 JAXP initialization failed ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref595]]AS-WEB-CORE-00336 Ignored external entity, publicID: \{0}, systemID: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref596]]AS-WEB-CORE-00337 setAttribute: Session attribute with name \{0} has value that is not of type String (required for cookie-based persistence) ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref597]]AS-WEB-CORE-00338 Loading Session \{0} from file \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref598]]AS-WEB-CORE-00339 Removing Session \{0} at file \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref599]]AS-WEB-CORE-00340 Saving Session \{0} to file \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref600]]AS-WEB-CORE-00341 Unable to delete file [\{0}] which is preventing the creation of the session storage location ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref601]]AS-WEB-CORE-00342 Unable to create directory [\{0}] for the storage of session data ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref602]]AS-WEB-CORE-00343 SQL Error \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref603]]AS-WEB-CORE-00344 Loading Session \{0} from database \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref604]]AS-WEB-CORE-00345 Removing Session \{0} at database \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref605]]AS-WEB-CORE-00346 Saving Session \{0} to database \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref606]]AS-WEB-CORE-00347 The database connection is null or was found to be closed. Trying to re-open it. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref607]]AS-WEB-CORE-00348 The re-open on the database failed. The database could be down. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref608]]AS-WEB-CORE-00349 A SQL exception occurred \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref609]]AS-WEB-CORE-00350 JDBC driver class not found \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref610]]AS-WEB-CORE-00351 Exception initializing random number generator of class \{0} ::
+  Cause: Could not construct and seed a new random number generator
++
+  Action: Verify if the current random number generator class is
+
+[[sthref611]]AS-WEB-CORE-00352 Seeding random number generator class \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref612]]AS-WEB-CORE-00353 Failed to close randomIS. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref613]]AS-WEB-CORE-00354 Error registering ::
+  Cause: Could not construct an object name
++
+  Action: Verify the format of domain, path, host. And make sure they
+  are no null
+
+[[sthref614]]AS-WEB-CORE-00355 setAttribute: Non-serializable attribute with name \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref615]]AS-WEB-CORE-00356 Session not found \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref616]]AS-WEB-CORE-00357 Checking isLoaded for id, \{0}, \{1} ::
+  Cause: Could not find session associated with given ID
++
+  Action: Verify the session ID
+
+[[sthref617]]AS-WEB-CORE-00358 Exception clearing the Store ::
+  Cause: Could not instantiate PrivilegedStoreClear()
++
+  Action: Verify if specified action's run() could remove all sessions
+  from store
+
+[[sthref618]]AS-WEB-CORE-00359 createSession: Too many active sessions ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref619]]AS-WEB-CORE-00360 Exception in the Store during load ::
+  Cause: Could not instantiate PrivilegedStoreKeys()
++
+  Action: Verify if specified action's run() does not throw exception
+
+[[sthref620]]AS-WEB-CORE-00361 Loading \{0} persisted sessions ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref621]]AS-WEB-CORE-00362 Failed load session from store ::
+  Cause: Could not restore sessions from store to manager's list
++
+  Action: Verify if the sessions are valid
+
+[[sthref622]]AS-WEB-CORE-00363 Can't load sessions from store ::
+  Cause: Could not load sessions from store
++
+  Action: Verify if there is no exception to get the array containing
+  the session identifiers of all Sessions currently saved in this Store
+
+[[sthref623]]AS-WEB-CORE-00364 Exception in the Store during removeSession ::
+  Cause: Could not instantiate PrivilegedStoreRemove()
++
+  Action: Verify if the specified action's run() could remove the
+  session with the specified session identifier from this Store
+
+[[sthref624]]AS-WEB-CORE-00365 Exception removing session ::
+  Cause: Could not remove specified session identifier from store
++
+  Action: Verify if there is no I/O error occur
+
+[[sthref625]]AS-WEB-CORE-00366 Saving \{0} persisted sessions ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref626]]AS-WEB-CORE-00367 Exception in the Store during swapIn ::
+  Cause: Could not instantiate PrivilegedStoreLoad
++
+  Action: Verify if action's run() can load and return the Session
+  associated with the specified session identifier from this Store,
+  without removing it
+
+[[sthref627]]AS-WEB-CORE-00368 Error deserializing Session \{0}: \{1} ::
+  Cause: De serialization error occur, and could not load and return the
+  session associated with the specified session identifier from this
+  Store
++
+  Action: Verify if ClassNotFoundException occur
+
+[[sthref628]]AS-WEB-CORE-00369 Session swapped in is invalid or expired ::
+  Cause: Session swapped in is invalid or expired
++
+  Action: Verify if current session is valid
+
+[[sthref629]]AS-WEB-CORE-00370 Swapping session \{0} in from Store ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref630]]AS-WEB-CORE-00371 Exception in the Store during writeSession ::
+  Cause: Could not write the provided session to the Store
++
+  Action: Verify if there are any I/O errors occur
+
+[[sthref631]]AS-WEB-CORE-00372 Error serializing Session \{0}: \{1} ::
+  Cause: Could not save the specified Session into this Store
++
+  Action: Verify if there are any I/O errors occur
+
+[[sthref632]]AS-WEB-CORE-00373 Manager has already been started ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref633]]AS-WEB-CORE-00374 No Store configured, persistence disabled ::
+  Cause: Could not prepare for the beginning of active use of the public
+  methods of this component
++
+  Action: Verify if Store has been configured
+
+[[sthref634]]AS-WEB-CORE-00375 Manager has not yet been started ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref635]]AS-WEB-CORE-00376 Invalid session timeout setting \{0} ::
+  Cause: Could not set session timeout from given parameter
++
+  Action: Verify the number format for session timeout setting
+
+[[sthref636]]AS-WEB-CORE-00377 Swapping session \{0} to Store, idle for \{1} seconds ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref637]]AS-WEB-CORE-00378 Too many active sessions, \{0}, looking for idle sessions to swap out ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref638]]AS-WEB-CORE-00379 Swapping out session \{0}, idle for \{1} seconds too many sessions active ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref639]]AS-WEB-CORE-00380 Backing up session \{0} to Store, idle for \{1} seconds ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref640]]AS-WEB-CORE-00381 createSession: Too many active sessions ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref641]]AS-WEB-CORE-00382 Loading persisted sessions from \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref642]]AS-WEB-CORE-00383 IOException while loading persisted sessions: \{0} ::
+  Cause: Could not creates an ObjectInputStream
++
+  Action: Verify if there are IO exceptions
+
+[[sthref643]]AS-WEB-CORE-00384 ClassNotFoundException while loading persisted sessions: \{0} ::
+  Cause: Could not deserialize and create StandardSession instance
++
+  Action: Verify the class for an object being restored can be found
+
+[[sthref644]]AS-WEB-CORE-00385 Saving persisted sessions to \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref645]]AS-WEB-CORE-00386 IOException while saving persisted sessions: \{0} ::
+  Cause: Could not creates an ObjectOutputStream instance
++
+  Action: Verify if there are any I/O exceptions
+
+[[sthref646]]AS-WEB-CORE-00387 Exception loading sessions from persistent storage ::
+  Cause: Could not load any currently active sessions
++
+  Action: Verify if the serialized class is valid and if there are any
+  I/O exceptions
+
+[[sthref647]]AS-WEB-CORE-00388 Exception unloading sessions to persistent storage ::
+  Cause: Could not save any currently active sessions
++
+  Action: Verify if there are any I/O exceptions
+
+[[sthref648]]AS-WEB-CORE-00389 Session id change event listener threw exception ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref649]]AS-WEB-CORE-00390 Session event listener threw exception ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref650]]AS-WEB-CORE-00391 Session already invalidated ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref651]]AS-WEB-CORE-00392 Session attribute event listener threw exception ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref652]]AS-WEB-CORE-00393 setAttribute: name parameter cannot be null ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref653]]AS-WEB-CORE-00394 Session binding event listener threw exception ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref654]]AS-WEB-CORE-00395 Cannot serialize session attribute \{0} for session \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref655]]AS-WEB-CORE-00396 StoreBase has already been started ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref656]]AS-WEB-CORE-00397 StoreBase has not been started ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref657]]AS-WEB-CORE-00398 Class loader creation threw exception ::
+  Cause: Could not create class loader
++
+  Action: Verify the availability of current repository
+
+[[sthref658]]AS-WEB-CORE-00399 Error processing command line arguments ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref659]]AS-WEB-CORE-00400 Catalina.stop: ::
+  Cause: Could not stop server
++
+  Action: Verify if the input file exist or if there are any I/O
+  exceptions, parsing exceptions
+
+[[sthref660]]AS-WEB-CORE-00401 Can't load server.xml from \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref661]]AS-WEB-CORE-00402 Catalina.start: ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref662]]AS-WEB-CORE-00403 Catalina.start: ::
+  Cause: Could not initialize the server
++
+  Action: Verify if the server has already been initialized
+
+[[sthref663]]AS-WEB-CORE-00404 Initialization processed in \{0} ms ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref664]]AS-WEB-CORE-00405 Error loading configuration ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref665]]AS-WEB-CORE-00406 Server startup in \{0} ms ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref666]]AS-WEB-CORE-00407 Failed to load catalina.properties ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref667]]AS-WEB-CORE-00408 Lifecycle event data object \{0} is not a Context ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref668]]AS-WEB-CORE-00409 alt-dd file \{0} not found ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref669]]AS-WEB-CORE-00410 Missing application web.xml, using defaults only \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref670]]AS-WEB-CORE-00411 Parse error in application web.xml at line \{0} and column \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref671]]AS-WEB-CORE-00412 Parse error in application web.xml ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref672]]AS-WEB-CORE-00413 Error closing application web.xml ::
+  Cause: Could not close this input stream and releases any system
+  resources associated with the stream.
++
+  Action: Verify if any I/O errors occur
+
+[[sthref673]]AS-WEB-CORE-00414 No Realm has been configured to authenticate against ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref674]]AS-WEB-CORE-00415 Cannot configure an authenticator for method \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref675]]AS-WEB-CORE-00416 Cannot instantiate an authenticator of class \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref676]]AS-WEB-CORE-00417 Configured an authenticator for method \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref677]]AS-WEB-CORE-00418 No default web.xml ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref678]]AS-WEB-CORE-00419 Missing default web.xml, using application web.xml only \{0} \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref679]]AS-WEB-CORE-00420 Parse error in default web.xml at line \{0} and column \{1} ::
+  Cause: Could not parse the content of the specified input source using
+  this Digester
++
+  Action: Verify the input parameter, if any I/O errors occur
+
+[[sthref680]]AS-WEB-CORE-00421 Parse error in default web.xml ::
+  Cause: Could not parse the content of the specified input source using
+  this Digester
++
+  Action: Verify the input parameter, if any I/O errors occur
+
+[[sthref681]]AS-WEB-CORE-00422 Error closing default web.xml ::
+  Cause: Could not close this input stream and releases any system
+  resources associated with the stream.
++
+  Action: Verify if any I/O errors occur
+
+[[sthref682]]AS-WEB-CORE-00423 ContextConfig: Initializing ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref683]]AS-WEB-CORE-00424 Exception fixing docBase ::
+  Cause: Could not adjust docBase
++
+  Action: Verify if any I/O errors occur
+
+[[sthref684]]AS-WEB-CORE-00425 ContextConfig: Processing START ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref685]]AS-WEB-CORE-00426 ContextConfig: Processing STOP ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref686]]AS-WEB-CORE-00427 Security role name \{0} used in an <auth-constraint> without being defined in a <security-role> in context [\{1}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref687]]AS-WEB-CORE-00428 Security role name \{0} used in a <run-as> without being defined in a <security-role> in context [\{1}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref688]]AS-WEB-CORE-00429 Security role name \{0} used in a <role-link> without being defined in a <security-role> in context [\{1}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref689]]AS-WEB-CORE-00430 No web.xml, using defaults \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref690]]AS-WEB-CORE-00431 No engines have been defined yet ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref691]]AS-WEB-CORE-00432 Engine.start exception ::
+  Cause: Could not prepare for the beginning of active use of the public
+  methods of this component.
++
+  Action: Verify if start() be called before any of the public methods
+  of this component are utilized
+
+[[sthref692]]AS-WEB-CORE-00433 Couldn't load SSL server socket factory. ::
+  Cause: Could not instantiate ServerSocketFactory
++
+  Action: Verify access permission to this class
+
+[[sthref693]]AS-WEB-CORE-00434 Couldn't create connector. ::
+  Cause: Could not instantiate connector
++
+  Action: Verify access permission to this class
+
+[[sthref694]]AS-WEB-CORE-00435 Connector.stop ::
+  Cause: Could not remove the specified Connector from the set
+  associated from this Service
++
+  Action: Verify if connector has already been stopped or removed
+
+[[sthref695]]AS-WEB-CORE-00436 Engine.stop exception ::
+  Cause: Could not terminate the active use of the public methods of
+  this component
++
+  Action: Verify if stop() is the last one called on a given instance of
+  this component
+
+[[sthref696]]AS-WEB-CORE-00437 Specified Authenticator is not a Valve ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref697]]AS-WEB-CORE-00438 Embedded service has already been started ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref698]]AS-WEB-CORE-00439 Embedded service has not yet been started ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref699]]AS-WEB-CORE-00440 Lifecycle event data object \{0} is not an Engine ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref700]]AS-WEB-CORE-00441 EngineConfig: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref701]]AS-WEB-CORE-00442 EngineConfig: Processing START ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref702]]AS-WEB-CORE-00443 EngineConfig: Processing STOP ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref703]]AS-WEB-CORE-00444 Application base directory \{0} does not exist ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref704]]AS-WEB-CORE-00445 Unable to create the directory [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref705]]AS-WEB-CORE-00446 The archive [\{0}] is malformed and will be ignored: an entry contains an illegal path [\{1}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref706]]AS-WEB-CORE-00447 Failed to set last-modified time of the file \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref707]]AS-WEB-CORE-00448 Error copying \{0} to \{1} ::
+  Cause: Could not copy file
++
+  Action: Verify if channel is not available for file transfer
+
+[[sthref708]]AS-WEB-CORE-00449 [\{0}] could not be completely deleted. The presence of the remaining files may cause problems ::
+  Cause: Could not completely delete specified directory
++
+  Action: Verify the access permission to specified directory
+
+[[sthref709]]AS-WEB-CORE-00450 Lifecycle event data object \{0} is not a Host ::
+  Cause: Could not process the START event for an associated Host
++
+  Action: Verify life cycle event data object
+
+[[sthref710]]AS-WEB-CORE-00451 Deploying configuration descriptor \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref711]]AS-WEB-CORE-00452 Error deploying configuration descriptor \{0} ::
+  Cause: Could not deploy configuration descriptor
++
+  Action: Verify the URL that points to context configuration file and
+  the context path
+
+[[sthref712]]AS-WEB-CORE-00453 The war name [\{0}] is invalid. The archive will be ignored. ::
+  Cause: Could not deploy war file
++
+  Action: Verify the name war file
+
+[[sthref713]]AS-WEB-CORE-00454 Expanding web application archive \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref714]]AS-WEB-CORE-00455 Exception while expanding web application archive \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref715]]AS-WEB-CORE-00456 Exception while expanding web application archive \{0} ::
+  Cause: Could not expand web application archive
++
+  Action: Verify the URL, and if any I/O errors orrur
+
+[[sthref716]]AS-WEB-CORE-00457 Deploying web application archive \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref717]]AS-WEB-CORE-00458 Error deploying web application archive \{0} ::
+  Cause: Could not deploy web application archive
++
+  Action: Verify the context path and if specified context path is
+  already attached to an existing web application
+
+[[sthref718]]AS-WEB-CORE-00459 Deploying web application directory \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref719]]AS-WEB-CORE-00460 Error deploying web application directory \{0} ::
+  Cause: Could not deploy web application directory
++
+  Action: Verify the context path and if specified context path is
+  already attached to an existing web application
+
+[[sthref720]]AS-WEB-CORE-00461 Error undeploying Jar file \{0} ::
+  Cause: Could not remove an existing web application, attached to the
+  specified context path
++
+  Action: Verify the context path of the application
+
+[[sthref721]]AS-WEB-CORE-00462 HostConfig: restartContext [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref722]]AS-WEB-CORE-00463 Error during context [\{0}] stop ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref723]]AS-WEB-CORE-00464 Error during context [\{0}] restart ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref724]]AS-WEB-CORE-00465 HostConfig: Processing START ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref725]]AS-WEB-CORE-00466 HostConfig: Processing STOP ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref726]]AS-WEB-CORE-00467 Undeploying deployed web applications ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref727]]AS-WEB-CORE-00468 Undeploying context [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref728]]AS-WEB-CORE-00469 Error undeploying web application at context path \{0} ::
+  Cause: Could not remove an existing web application, attached to the
+  specified context path
++
+  Action: Verify the context path of the application
+
+[[sthref729]]AS-WEB-CORE-00470 Must set 'catalina.home' system property ::
+  Cause: Did not set 'catalina.home'
++
+  Action: Verify that 'catalina.home' was passed
+
+[[sthref730]]AS-WEB-CORE-00472 Exception creating instance of \{0} ::
+  Cause: Could not load application class
++
+  Action: Verify the class name
+
+[[sthref731]]AS-WEB-CORE-00473 Exception locating main() method ::
+  Cause: Could not locate the static main() method of the application
+  class
++
+  Action: Verify the access permission
+
+[[sthref732]]AS-WEB-CORE-00474 Exception calling main() method ::
+  Cause: Could not invoke main() method
++
+  Action: Verify the underlying method is inaccessible, and parameter
+  values
+
+[[sthref733]]AS-WEB-CORE-00475 Usage: java org.apache.catalina.startup.Tool [<options>] <class> [<arguments>] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref734]]AS-WEB-CORE-00476 Deploying user web applications ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref735]]AS-WEB-CORE-00477 Exception loading user database ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref736]]AS-WEB-CORE-00478 Deploying web application for user \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref737]]AS-WEB-CORE-00479 Error deploying web application for user \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref738]]AS-WEB-CORE-00480 UserConfig[\{0}]: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref739]]AS-WEB-CORE-00481 UserConfig[null]: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref740]]AS-WEB-CORE-00482 UserConfig: Processing START ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref741]]AS-WEB-CORE-00483 UserConfig: Processing STOP ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref742]]AS-WEB-CORE-00484 Failed to load manifest resources \{0} ::
+  Cause: Could not find MANIFEST from JAR file
++
+  Action: Verify the JAR file
+
+[[sthref743]]AS-WEB-CORE-00485 ExtensionValidator[\{0}][\{1}]: Required extension "\{2}" not found. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref744]]AS-WEB-CORE-00486 ExtensionValidator[\{0}]: Failure to find \{1} required extension(s). ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref745]]AS-WEB-CORE-00487 Odd number of hexadecimal digits ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref746]]AS-WEB-CORE-00488 Bad hexadecimal digit ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref747]]AS-WEB-CORE-00489 Map is currently locked ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref748]]AS-WEB-CORE-00490 UTF8 not supported ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref749]]AS-WEB-CORE-00491 Could not create a new directory: \{0} ::
+  Cause: Could not create a new directory
++
+  Action: Verify if file is directory, and access permission
+
+[[sthref750]]AS-WEB-CORE-00492 status.setContentType ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref751]]AS-WEB-CORE-00493 Internal Error ::
+  Cause: Error during invoke the servlet application
++
+  Action: Trying to invoke the servlet application
+
+[[sthref752]]AS-WEB-CORE-00494 Failed to initialize the interceptor ::
+  Cause: Error in initializing the servlet application
++
+  Action: initialize the servlet interceptor
+
+[[sthref753]]AS-WEB-CORE-00503 Failed to rename log file to \{0} for rotate logs ::
+  Cause: Could not rename log file
++
+  Action: Verify access permission and new file name
+
+[[sthref754]]AS-WEB-CORE-00504 at least this wasn't swallowed ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref755]]AS-WEB-CORE-00505 Failed to create directory \{0} ::
+  Cause: Could not create directory
++
+  Action: Verify access permission
+
+[[sthref756]]AS-WEB-CORE-00506 fields was just empty or whitespace ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref757]]AS-WEB-CORE-00507 unable to decode with rest of chars being: \{0} ::
+  Cause: Could not decode rest of chars
++
+  Action: Verify the current pattern
+
+[[sthref758]]AS-WEB-CORE-00508 No closing ) found for in decode ::
+  Cause: could not find closing bracket
++
+  Action: Verify if the parameter includes closing bracket
+
+[[sthref759]]AS-WEB-CORE-00509 The next characters couldn't be decoded: \{0} ::
+  Cause: Could not decode characters
++
+  Action: Verify the pattern
+
+[[sthref760]]AS-WEB-CORE-00510 End of line reached before decoding x- param ::
+  Cause: Could not decode, since end of line reached
++
+  Action: Verify the String index
+
+[[sthref761]]AS-WEB-CORE-00511 x param in wrong format. Needs to be 'x-#(...)' read the docs! ::
+  Cause: Could not decode, since x param in wrong format
++
+  Action: Verify the format of parameter
+
+[[sthref762]]AS-WEB-CORE-00512 x param in wrong format. No closing ')'! ::
+  Cause: Could not decode, since x param has no closing bracket
++
+  Action: Verify the format of parameter
+
+[[sthref763]]AS-WEB-CORE-00513 x param for servlet request, couldn't decode value: \{0} ::
+  Cause: Could not decode value, since no x param type matched
++
+  Action: Verify the current field info
+
+[[sthref764]]AS-WEB-CORE-00514 No Context configured to process this request ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref765]]AS-WEB-CORE-00515 Syntax error in request filter pattern \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref766]]AS-WEB-CORE-00516 Cannot process the error page: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref767]]AS-WEB-CORE-00517 Digester.getParser: ::
+  Cause: Could not create new SAXParser
++
+  Action: Verify the parser configuration and if SAXParser is supported
+
+[[sthref768]]AS-WEB-CORE-00518 Cannot get XMLReader ::
+  Cause: Could not get XML Reader
++
+  Action: Verify if there are XML Readers can be instantiated
+
+[[sthref769]]AS-WEB-CORE-00519 Finish event threw exception ::
+  Cause: Rules could not remove data
++
+  Action: Verify if finish() is called after all parsing methods have
+  been called
+
+[[sthref770]]AS-WEB-CORE-00520 Finish event threw error ::
+  Cause: Rules could not remove data
++
+  Action: Verify if finish() is called after all parsing methods have
+  been called
+
+[[sthref771]]AS-WEB-CORE-00521 Body event threw exception ::
+  Cause: Could not fire body()
++
+  Action: Verify if the current rule has body
+
+[[sthref772]]AS-WEB-CORE-00522 Body event threw error ::
+  Cause: Could not fire body()
++
+  Action: Verify if the current rule has body
+
+[[sthref773]]AS-WEB-CORE-00523 No rules found matching \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref774]]AS-WEB-CORE-00524 End event threw exception ::
+  Cause: Could not call end()
++
+  Action: Verify if this method is called when the end of a matching XML
+  element is encountered
+
+[[sthref775]]AS-WEB-CORE-00525 End event threw error ::
+  Cause: Could not call end()
++
+  Action: Verify if this method is called when the end of a matching XML
+  element is encountered
+
+[[sthref776]]AS-WEB-CORE-00526 Begin event threw exception ::
+  Cause: Could not call begin()
++
+  Action: Verify if this method is called when the beginning of a
+  matching XML element is encountered
+
+[[sthref777]]AS-WEB-CORE-00527 Begin event threw error ::
+  Cause: Could not call begin()
++
+  Action: Verify if this method is called when the beginning of a
+  matching XML element is encountered
+
+[[sthref778]]AS-WEB-CORE-00528 Parse Error at line \{0} column \{1}: \{2} ::
+  Cause: Parsing error occurs
++
+  Action: Verify if there are any parsing errors occur
+
+[[sthref779]]AS-WEB-CORE-00529 Parse Fatal Error at line \{0} column \{1}: \{2} ::
+  Cause: Parsing error occurs
++
+  Action: Verify if there are any parsing errors occur
+
+[[sthref780]]AS-WEB-CORE-00530 Parse Warning Error at line \{0} column \{1}: \{2} ::
+  Cause: Parsing error occurs
++
+  Action: Verify if there are any parsing errors occur
+
+[[sthref781]]AS-WEB-CORE-00531 Empty stack (returning null) ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref782]]AS-WEB-CORE-00532 No Locator! ::
+  Cause: There is no document locator
++
+  Action: Verify if document locator has been set
+
+[[sthref783]]AS-WEB-CORE-00533 [SetPropertiesRule]\{0} Setting property \{1} to \{2} did not find a matching property. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref784]]AS-WEB-CORE-00534 [SetPropertyRule]\{0} Setting property \{1} to \{2} did not find a matching property. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref785]]AS-WEB-CORE-00535 Login failed ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref786]]AS-WEB-CORE-00536 This is request has already been authenticated ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref787]]AS-WEB-CORE-00537 No authenticator ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref788]]AS-WEB-CORE-00538 Invalid call to login while pluggable authentication method is configured ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref789]]AS-WEB-CORE-00539 Internal logout error ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref790]]AS-WEB-CORE-00540 Blocked access to external entity with publicId [\{0}] and systemId [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref791]]AS-WEB-CORE-00541 Blocked access to external entity with name [\{0}], publicId [\{1}], baseURI [\{2}] and systemId [\{3}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref792]]AS-WEB-CORE-00542 Blocked access to external subset with name [\{0}] and baseURI [\{1}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref793]]AS-WEB-CORE-00543 Fail to read file [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref794]]AS-WEB-CORE-00544 Unable to find the underlying Coyote request object (which is required to create a push request) from the request of type [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref795]]AS-WEB-CORE-00545 It is illegal to call push() before setting a path ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref796]]AS-WEB-CORE-00546 The push method should not be null ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref797]]AS-WEB-CORE-00547 The push method should not be an empty String ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref798]]AS-WEB-CORE-00548 The push method ''\{0}'' is not cacheable or safe ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref799]]AS-WEB-CORE-00549 The repository '\{0}' is not a directory ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref800]]AS-WEB-CORE-00550 The repository '\{0}' contains a null character ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref801]]AS-WEB-GLUE-00001 Exception in creating cache ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref802]]AS-WEB-GLUE-00002 Exception initializing cache-helper \{0}; please check your helper class implementation ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref803]]AS-WEB-GLUE-00003 Illegal CacheKeyGenerator ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref804]]AS-WEB-GLUE-00004 DefaultCacheHelper: cannot find all the required key fields in the request \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref805]]AS-WEB-GLUE-00005 CachingFilter \{0} ready; isEnabled = \{1} manager = \{2} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref806]]AS-WEB-GLUE-00006 CachingFilter \{0} request is cacheable; key \{1} index = \{2} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref807]]AS-WEB-GLUE-00007 CachingFilter \{0} request needs a refresh; key \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref808]]AS-WEB-GLUE-00008 CachingFilter \{0} serving response from the cache \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref809]]AS-WEB-GLUE-00009 CachingFilter \{0} pass thru; isEnabled = \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref810]]AS-WEB-GLUE-00010 CachingFilter \{0} received cacheManager enabled event ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref811]]AS-WEB-GLUE-00011 CachingFilter \{0} received cacheManager disabled event ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref812]]AS-WEB-GLUE-00012 The constraint field \{0} is not found in the scope \{1}; returning cache-on-match-failure: \{2} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref813]]AS-WEB-GLUE-00013 The constraint field \{0} value = \{1} is found in scope \{2}; returning cache-on-match: \{3} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref814]]AS-WEB-GLUE-00014 The constraint field \{0} value = \{1} is found in scope \{2}; and matches with a value \{3}; returning cache-on-match: \{4} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref815]]AS-WEB-GLUE-00015 The constraint field \{0} value = \{1} is found in scope \{2}; but didn't match any of the value constraints; returning cache-on-match-failure = \{3} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref816]]AS-WEB-GLUE-00016 Incorrect scope value [\{0}] for web application cache field name [\{1}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref817]]AS-WEB-GLUE-00017 ''greater'' expression requires a numeric value; please check your value \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref818]]AS-WEB-GLUE-00018 ''lesser'' expression requires a numeric value; please check your value [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref819]]AS-WEB-GLUE-00019 illegal value [\{0}] expr [\{1}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref820]]AS-WEB-GLUE-00020 illegal in-range constraint; specify a valid range (xxx-yyy) value [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref821]]AS-WEB-GLUE-00021 missing separator in the ''in-range'' constraint; [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref822]]AS-WEB-GLUE-00022 ''in-range'' constraint requires numeric values for the lower bound [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref823]]AS-WEB-GLUE-00023 ''in-range'' constraint requires a value for the upper bound of the range; check your value [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref824]]AS-WEB-GLUE-00024 ''in-range'' constraint requires numeric values for the upper bound [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref825]]AS-WEB-GLUE-00025 CacheTag[\{0}]: Timeout = \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref826]]AS-WEB-GLUE-00026 Cache not found in the specified scope ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref827]]AS-WEB-GLUE-00027 Illegal value ([\{0}]) for scope attribute of cache tag ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref828]]AS-WEB-GLUE-00028 FlushTag: clear [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref829]]AS-WEB-GLUE-00029 FlushTag: clear cache ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref830]]AS-WEB-GLUE-00030 Process session destroyed on \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref831]]AS-WEB-GLUE-00031 Process request for ''\{0}'' ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref832]]AS-WEB-GLUE-00032 Principal ''\{0}'' has already been authenticated ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref833]]AS-WEB-GLUE-00033 Checking for SSO cookie ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref834]]AS-WEB-GLUE-00034 SSO cookie is not present ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref835]]AS-WEB-GLUE-00035 No realm configured for this application, SSO does not apply ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref836]]AS-WEB-GLUE-00036 This application uses realm ''\{0}'' ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref837]]AS-WEB-GLUE-00037 Checking for cached principal for \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref838]]AS-WEB-GLUE-00038 Found cached principal ''\{0}'' with auth type ''\{1}'' in realm ''\{2}'' ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref839]]AS-WEB-GLUE-00039 Ignoring SSO entry which does not match application realm ''\{0}'' ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref840]]AS-WEB-GLUE-00040 No cached principal found, erasing SSO cookie ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref841]]AS-WEB-GLUE-00041 Deregistering sso id ''\{0}'' ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref842]]AS-WEB-GLUE-00042 SSO expiration started. Current entries: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref843]]AS-WEB-GLUE-00043 SSO cache will expire \{0} entries ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref844]]AS-WEB-GLUE-00044 SSO expiration removing entry: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref845]]AS-WEB-GLUE-00045 Caught exception during SingleSignOn expiration ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref846]]AS-WEB-GLUE-00046 Removing session \{0} from sso id \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref847]]AS-WEB-GLUE-00047 Illegal access log pattern [\{0}], is not a valid nickname and does not contain any ''%'' ::
+  Cause: The pattern is either null or does not contain '%'
++
+  Action: Check the pattern for validity
+
+[[sthref848]]AS-WEB-GLUE-00048 Missing end delimiter in access log pattern: \{0} ::
+  Cause: An end delimiter ismissing in the access log pattern
++
+  Action: Check the pattern for validity
+
+[[sthref849]]AS-WEB-GLUE-00049 Invalid component: \{0} in access log pattern: \{1} ::
+  Cause: Access log pattern containds invalid component
++
+  Action: Check the pattern for validity
+
+[[sthref850]]AS-WEB-GLUE-00050 Error processing request received on ad-hoc path \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref851]]AS-WEB-GLUE-00051 No ad-hoc servlet configured to process ad-hoc path \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref852]]AS-WEB-GLUE-00052 mgr reapInterval set = \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref853]]AS-WEB-GLUE-00053 no instance level value set for mgr reapInterval ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref854]]AS-WEB-GLUE-00054 maxSessions set = \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref855]]AS-WEB-GLUE-00055 no instance level value set for maxSessions ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref856]]AS-WEB-GLUE-00056 sessionFilename set = \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref857]]AS-WEB-GLUE-00057 sessionIdGeneratorClassname set = \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref858]]AS-WEB-GLUE-00058 storeReapInterval set = \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref859]]AS-WEB-GLUE-00059 directory set = \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref860]]AS-WEB-GLUE-00060 sessionMaxInactiveInterval set = \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref861]]AS-WEB-GLUE-00061 no instance level value set for sessionMaxInactiveInterval ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref862]]AS-WEB-GLUE-00062 Configuring cache for web application ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref863]]AS-WEB-GLUE-00063 Added a caching filter for servlet-name = \{0} url-pattern = \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref864]]AS-WEB-GLUE-00064 Added a key-field : name = \{0} scope = \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref865]]AS-WEB-GLUE-00065 Added a constraint: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref866]]AS-WEB-GLUE-00066 Added a constraint-field name = \{0} scope = \{1} cache-on-match = \{2} cache-on-match-failure = \{3} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref867]]AS-WEB-GLUE-00067 Invalid max-pending-count attribute value [\{0}], using default [\{1}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref868]]AS-WEB-GLUE-00068 Unable to parse proxy port component (\{0}) of server-name attribute of network-listener \{1} ::
+  Cause: The String does not contain a parsable integer
++
+  Action: Check the proxy port string
+
+[[sthref869]]AS-WEB-GLUE-00069 Unable to parse redirect-port (\{0}) attribute of network-listener \{1}, using default: \{2} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref870]]AS-WEB-GLUE-00070 Unable to parse acceptor-threads attribute (\{0}) of network-listener \{1}, using default: \{2} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref871]]AS-WEB-GLUE-00071 The jk properties configuration file is not defined ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref872]]AS-WEB-GLUE-00072 JK properties file \{0} does not exist ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref873]]AS-WEB-GLUE-00073 Loading glassfish-jk.properties from \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref874]]AS-WEB-GLUE-00074 Unable to configure JK properties \{0} for connector listening to \{1} ::
+  Cause: Failed to load JK properties file
++
+  Action: Check if the properties file exists and is readable
+
+[[sthref875]]AS-WEB-GLUE-00075 Invalid attribute [\{0}] in thread-pool configuration ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref876]]AS-WEB-GLUE-00076 Unable to load ProxyHandler implementation class \{0} ::
+  Cause: An exception occurred during creating a new instance
++
+  Action: Check the exception for the error
+
+[[sthref877]]AS-WEB-GLUE-00077 \{0} not an instance of com.sun.appserv.ProxyHandler ::
+  Cause: Invalid proxy handler
++
+  Action: Check to see if the proxy handler is an instance of
+  com.sun.appserv.ProxyHandler
+
+[[sthref878]]AS-WEB-GLUE-00078 All SSL protocol variants disabled for network-listener \{0}, using SSL implementation specific defaults ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref879]]AS-WEB-GLUE-00079 All SSL cipher suites disabled for network-listener(s) \{0}. Using SSL implementation specific defaults ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref880]]AS-WEB-GLUE-00080 Unrecognized cipher: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref881]]AS-WEB-GLUE-00081 Exception when initializing monitoring for network-listener [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref882]]AS-WEB-GLUE-00082 InvokeGrizzly method=\{0} objectName=\{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref883]]AS-WEB-GLUE-00083 Exception while invoking mebean server operation [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref884]]AS-WEB-GLUE-00084 Cannot find WebContainer implementation ::
+  Cause: Web container is null
++
+  Action: Check if the mapper listener is initialized correctly
+
+[[sthref885]]AS-WEB-GLUE-00085 Cannot find Engine implementation ::
+  Cause: Engine is null
++
+  Action: Check if the mapper listener is initialized correctly
+
+[[sthref886]]AS-WEB-GLUE-00086 Error registering contexts ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref887]]AS-WEB-GLUE-00087 HTTP listener with network listener name
+\{0} ignoring registration of host with object name \{1}, because none
+of the host's associated HTTP listeners matches this network listener
+name ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref888]]AS-WEB-GLUE-00088 Register Context \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref889]]AS-WEB-GLUE-00089 Unregister Context \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref890]]AS-WEB-GLUE-00090 Register Wrapper \{0} in Context \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref891]]AS-WEB-GLUE-00091 Unable to instantiate ContainerListener of type \{0} ::
+  Cause: An exception occurred during instantiation of ContainerListener
+  of type \{0}
++
+  Action: Check the Exception for error
+
+[[sthref892]]AS-WEB-GLUE-00092 Creating connector for address=''\{0}'' port=''\{1}'' protocol=''\{2}'' ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref893]]AS-WEB-GLUE-00093 Enabling file-based persistence for web module [\{0}]''s sessions ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref894]]AS-WEB-GLUE-00094 Exception during invocation of PreDestroy-annotated method on JSP tag handler [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref895]]AS-WEB-GLUE-00095 ServerContext is null for ResourceInjector ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref896]]AS-WEB-GLUE-00096 Enabling no persistence for web module [\{0}]''s sessions: persistence-type = [\{1}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref897]]AS-WEB-GLUE-00097 Unable to load session uuid generator [\{0}] ::
+  Cause: An exception occurred during loading session uuid generator
++
+  Action: Check the Exception for the error
+
+[[sthref898]]AS-WEB-GLUE-00098 Unable to write access log file \{0} ::
+  Cause: An exception occurred writing to access log file
++
+  Action: Check the exception for the error
+
+[[sthref899]]AS-WEB-GLUE-00099 Setting accesslog directory for virtual server ''\{0}'' to \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref900]]AS-WEB-GLUE-00100 Invalid accessLogWriterInterval value [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref901]]AS-WEB-GLUE-00101 Invalid accessLogBufferSize value [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref902]]AS-WEB-GLUE-00102 Unable to parse max-history-files access log configuration [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref903]]AS-WEB-GLUE-00103 Unable to create \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref904]]AS-WEB-GLUE-00104 Unable to rename access log file \{0} to \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref905]]AS-WEB-GLUE-00105 Unable to remove access log file \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref906]]AS-WEB-GLUE-00106 Access logger has already been started ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref907]]AS-WEB-GLUE-00107 Access logger has not yet been started ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref908]]AS-WEB-GLUE-00108
+PersistenceStrategyBuilderFactory>>createPersistenceStrategyBuilder:
+resolvedPersistenceType = \{0}, resolvedPersistenceFrequency = \{1}
+resolvedPersistenceScope = \{2} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref909]]AS-WEB-GLUE-00109 Could not find PersistentStrategyBuilder for persistenceType \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref910]]AS-WEB-GLUE-00110 PersistenceStrategyBuilderFactory>>createPersistenceStrategyBuilder: CandidateBuilderClassName = \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref911]]AS-WEB-GLUE-00112 Unable to set request encoding [\{0}] determined from sun-web.xml deployment descriptor of web application [\{1}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref912]]AS-WEB-GLUE-00113 POST data too large ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref913]]AS-WEB-GLUE-00114 Web container config changed \{0} \{1} \{2} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref914]]AS-WEB-GLUE-00115 Exception processing HttpService configuration change ::
+  Cause: An exception occurred during configuration change
++
+  Action: Check the exception for error
+
+[[sthref915]]AS-WEB-GLUE-00116 AvailabilityService was not defined - check domain.xml ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref916]]AS-WEB-GLUE-00117 WebContainerAvailability not defined - check domain.xml ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref917]]AS-WEB-GLUE-00118 globalAvailability = \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref918]]AS-WEB-GLUE-00119 webContainerAvailability = \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref919]]AS-WEB-GLUE-00120 webModuleAvailability = \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref920]]AS-WEB-GLUE-00121 SERVER.XML persistenceType= \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref921]]AS-WEB-GLUE-00122 SERVER.XML persistenceType missing ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref922]]AS-WEB-GLUE-00123 Web App Distributable \{0}: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref923]]AS-WEB-GLUE-00124 AvailabilityGloballyEnabled = \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref924]]AS-WEB-GLUE-00125 instance-level persistence-type = \{0} instance-level persistenceFrequency = \{1} instance-level persistenceScope = \{2} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref925]]AS-WEB-GLUE-00126 webAppLevelPersistenceType = \{0} webAppLevelPersistenceFrequency = \{1} webAppLevelPersistenceScope = \{2} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref926]]AS-WEB-GLUE-00127 IN WebContainer>>ConfigureSessionManager
+after web level check AFTER_WEB_PERSISTENCE-TYPE IS = \{0}
+AFTER_WEB_PERSISTENCE_FREQUENCY IS = \{1} AFTER_WEB_PERSISTENCE_SCOPE IS
+= \{2} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref927]]AS-WEB-GLUE-00128 Is \{0} a system app: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref928]]AS-WEB-GLUE-00129 SessionConfigurationHelper: Is AppDistributable \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref929]]AS-WEB-GLUE-00130 Invalid Session Management Configuration
+for non-distributable app [\{0}] - defaulting to memory:
+persistence-type = [\{1}] / persistenceFrequency = [\{2}] /
+persistenceScope = [\{3}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref930]]AS-WEB-GLUE-00131 IN WebContainer>>ConfigureSessionManager
+before builder factory FINAL_PERSISTENCE-TYPE IS = \{0}
+FINAL_PERSISTENCE_FREQUENCY IS = \{1} FINAL_PERSISTENCE_SCOPE IS = \{2}
+::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref931]]AS-WEB-GLUE-00132 Security role name \{0} used in an 'auth-constraint' without being defined in a 'security-role' ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref932]]AS-WEB-GLUE-00133 Security role name \{0} used in a 'run-as' without being defined in a 'security-role' ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref933]]AS-WEB-GLUE-00134 Security role name \{0} used in a 'role-link' without being defined in a 'security-role' ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref934]]AS-WEB-GLUE-00135 The web module \{0} has been designated as the default-web-module for virtual server \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref935]]AS-WEB-GLUE-00136 Error looking up the configuration information of the default-web-module \{0} for virtual server \{1} ::
+  Cause: The web module specified is either not found or disabled or
+  does not specify this virtual server, or there was an error loading
+  its deployment descriptors
++
+  Action: Verify if the virtual server's default web module is valid
+
+[[sthref936]]AS-WEB-GLUE-00137 The default-web-module \{0} is either disabled or does not specify virtual server \{1} ::
+  Cause: The default web module is disabled or does not specify virtual
+  server
++
+  Action: Verify if the default web module is enabled and specify
+  virtual server
+
+[[sthref937]]AS-WEB-GLUE-00138 Virtual server \{0} has invalid authentication realm \{1} ::
+  Cause: The realm \{1} could not be found
++
+  Action: Verify if the realm \{1} exits for virtual server \{0}
+
+[[sthref938]]AS-WEB-GLUE-00139 Invalid sso-cookie-secure configuration \{0} for virtual server \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref939]]AS-WEB-GLUE-00140 Realm \{0} is not an instance of \{1}, and will be ignored ::
+  Cause: The realm \{0} is either NULL or is not an instance of \{1}
++
+  Action: Verify if the realm \{0} is an instance of \{1}
+
+[[sthref940]]AS-WEB-GLUE-00141 Virtual server \{0} has a property with missing name or value ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref941]]AS-WEB-GLUE-00142 Invalid redirect property value \{0} for virtual server \{1}: More than one \{2} component ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref942]]AS-WEB-GLUE-00143 Invalid redirect property value \{0} for virtual server \{1}: Missing url or url-prefix component ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref943]]AS-WEB-GLUE-00144 Invalid redirect property value \{0} for virtual server \{1}: Both url and url-prefix specified ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref944]]AS-WEB-GLUE-00145 Invalid redirect property value \{0} for virtual server \{1}: escape must be equal to yes or no ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref945]]AS-WEB-GLUE-00146 Invalid send-error property value \{0} for virtual server \{1}: More than one \{2} component ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref946]]AS-WEB-GLUE-00147 Invalid send-error property value \{0} for virtual server \{1}: Missing path component ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref947]]AS-WEB-GLUE-00148 Unable to add listener of type \{0} to virtual server \{1} ::
+  Cause: The listener is not an instance of ContainerListener or
+  LifecycleListener
++
+  Action: Verify if the listener type is supported
+
+[[sthref948]]AS-WEB-GLUE-00149 Unable to load extension class \{0} from web module \{1} ::
+  Cause: An exception occurred loading extension class
++
+  Action: Check the exception for the error
+
+[[sthref949]]AS-WEB-GLUE-00150 Object of type classname \{0} not an instance of Valve or GlassFishValve ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref950]]AS-WEB-GLUE-00151 Error adding HttpProbes. NetworkListener \{0}'s HttpCodecFilter is \{1} ::
+  Cause: HttpCodecFilter is either NULL or empty
++
+  Action: Verify the NetworkListener is valid
+
+[[sthref951]]AS-WEB-GLUE-00152 Error adding HttpProbes ::
+  Cause: An exception occurred adding HttpProbes
++
+  Action: Check the exception for the error
+
+[[sthref952]]AS-WEB-GLUE-00153 Disabling Single Sign On (SSO) for virtual server \{0} as configured ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref953]]AS-WEB-GLUE-00154 Enabling Single Sign On (SSO) for virtual server \{0} as configured ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref954]]AS-WEB-GLUE-00155 SSO entry max idle time set to \{0} for virtual server \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref955]]AS-WEB-GLUE-00156 SSO expire thread interval set to \{0} for virtual server \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref956]]AS-WEB-GLUE-00157 Allowing access to \{0} from \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref957]]AS-WEB-GLUE-00158 Denying access to \{0} from \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref958]]AS-WEB-GLUE-00159 Virtual server \{0} enabled context \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref959]]AS-WEB-GLUE-00160 Unable to delete \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref960]]AS-WEB-GLUE-00161 Unable to reconfigure access log valve ::
+  Cause: An exception occurred during access log valve reconfiguration
++
+  Action: Check the exception for error
+
+[[sthref961]]AS-WEB-GLUE-00162 Virtual server \{0} added context \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref962]]AS-WEB-GLUE-00163 Application \{0} is not found ::
+  Cause: The deployed application is not found
++
+  Action: Check if the application is valid
+
+[[sthref963]]AS-WEB-GLUE-00164 Cannot create context for undeployment ::
+  Cause: An IOException occurred during undeployment
++
+  Action: Check the exception for error
+
+[[sthref964]]AS-WEB-GLUE-00165 Successfully removed context \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref965]]AS-WEB-GLUE-00166 Modifying web.xml \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref966]]AS-WEB-GLUE-00167 Error adding HttpProbes. NetworkListener \{0}'s GrizzlyProxy is NULL ::
+  Cause: GrizzlyProxy is NULL
++
+  Action: Verify the NetworkListener is valid
+
+[[sthref967]]AS-WEB-GLUE-00168 Virtual server \{0} has been turned off ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref968]]AS-WEB-GLUE-00169 Virtual server \{0} has been disabled ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref969]]AS-WEB-GLUE-00170 Invalid redirect URL [\{0}]: Impossible to URL encode ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref970]]AS-WEB-GLUE-00171 Unknown error, loadWebModule returned null, file a bug ::
+  Cause: An exception occurred writing to access log file
++
+  Action: Check the exception for the error
+
+[[sthref971]]AS-WEB-GLUE-00172 Loading application [\{0}] at [\{1}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref972]]AS-WEB-GLUE-00173 App config customization specified to ignore descriptor's \{0} \{1} so it will not be present for the application ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref973]]AS-WEB-GLUE-00174 Overriding descriptor \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref974]]AS-WEB-GLUE-00175 Creating new \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref975]]AS-WEB-GLUE-00176 Exception during Coherence*Web shutdown for application [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref976]]AS-WEB-GLUE-00177 Loading web module \{0} in virtual server \{1} at \{2} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref977]]AS-WEB-GLUE-00178 This web container has not yet been started ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref978]]AS-WEB-GLUE-00179 Property \{0} is not yet supported ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref979]]AS-WEB-GLUE-00180 Virtual server \{0} already has a web module \{1} loaded at \{2} therefore web module \{3} cannot be loaded at this context path on this virtual server ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref980]]AS-WEB-GLUE-00181 Unable to stop web container ::
+  Cause: Web container may not have been started
++
+  Action: Verify if web container is started
+
+[[sthref981]]AS-WEB-GLUE-00182 Unable to start web container ::
+  Cause: Web container may have already been started
++
+  Action: Verify if web container is not already started
+
+[[sthref982]]AS-WEB-GLUE-00183 Property element in sun-web.xml has null 'name' or 'value' ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref983]]AS-WEB-GLUE-00184 Web module \{0} is not loaded in virtual server \{1} ::
+  Cause: Web module has failed to load
++
+  Action: Verify if web module is valid
+
+[[sthref984]]AS-WEB-GLUE-00185 Unable to deploy web module \{0} at root context of virtual server \{1}, because this virtual server declares a default-web-module ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref985]]AS-WEB-GLUE-00186 Unable to set default-web-module \{0} for virtual server \{1} ::
+  Cause: There is no web context deployed on the given virtual server
+  that matches the given default context path
++
+  Action: Verify if the default context path is deployed on the virtual
+  server
+
+[[sthref986]]AS-WEB-GLUE-00187 Unable to load web module \{0} at context root \{1}, because it is not correctly encoded ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref987]]AS-WEB-GLUE-00188 Unable to destroy web module deployed at context root \{0} on virtual server \{1} during undeployment ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref988]]AS-WEB-GLUE-00189 Exception setting the schemas/dtds location ::
+  Cause: A malformed URL has occurred. Either no legal protocol could be
+  found in a specification string or the string could not be parsed
++
+  Action: Verify if the schemes and dtds
+
+[[sthref989]]AS-WEB-GLUE-00191 Error loading web module \{0} ::
+  Cause: An error occurred during loading web module
++
+  Action: Check the Exception for the error
+
+[[sthref990]]AS-WEB-GLUE-00192 Undeployment failed for context \{0} ::
+  Cause: The context may not have been deployed
++
+  Action: Verify if the context is deployed on the virtual server
+
+[[sthref991]]AS-WEB-GLUE-00193 Exception processing HttpService configuration change ::
+  Cause: An error occurred during configuring http service
++
+  Action: Verify if the configurations are valid
+
+[[sthref992]]AS-WEB-GLUE-00194 Unable to set context root \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref993]]AS-WEB-GLUE-00195 Unable to disable web module at context root \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref994]]AS-WEB-GLUE-00196 Error during destruction of virtual server \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref995]]AS-WEB-GLUE-00197 Virtual server \{0} cannot be updated, because it does not exist ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref996]]AS-WEB-GLUE-00198 Created HTTP listener \{0} on host/port \{1}:\{2} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref997]]AS-WEB-GLUE-00199 Created JK listener \{0} on host/port \{1}:\{2} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref998]]AS-WEB-GLUE-00200 Created virtual server \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref999]]AS-WEB-GLUE-00201 Virtual server \{0} loaded default web module \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1000]]AS-WEB-GLUE-00202 Maximum depth for nested request dispatches set to \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1001]]AS-WEB-GLUE-00203 Unsupported http-service property \{0} is being ignored ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1002]]AS-WEB-GLUE-00204 The host name \{0} is shared by virtual servers \{1} and \{2}, which are both associated with the same HTTP listener \{3} ::
+  Cause: The host name is not unique
++
+  Action: Verify that the host name is unique
+
+[[sthref1003]]AS-WEB-GLUE-00205 Network listener \{0} referenced by virtual server \{1} does not exist ::
+  Cause: Network listener \{0} referenced by virtual server \{1} does
+  not exist
++
+  Action: Verify that the network listener is valid
+
+[[sthref1004]]AS-WEB-GLUE-00206 Web module \{0} not loaded to any virtual servers ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1005]]AS-WEB-GLUE-00207 Loading web module \{0} to virtual servers \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1006]]AS-WEB-GLUE-00208 Unloading web module \{0} from virtual servers \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1007]]AS-WEB-GLUE-00209 Context \{0} undeployed from virtual server \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1008]]AS-WEB-GLUE-00210 Context \{0} disabled from virtual server \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1009]]AS-WEB-GLUE-00211 Virtual server \{0}'s network listeners are updated from \{1} to \{2} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1010]]AS-WEB-GLUE-00212 The class \{0} is annotated with an invalid scope ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1011]]AS-WEB-GLUE-00213 -DjvmRoute updated with \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1012]]AS-WEB-GLUE-00214 Unable to parse port number \{0} of network-listener \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1013]]AS-WEB-GLUE-00215 Virtual server \{0} set listener name \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1014]]AS-WEB-GLUE-00216 Must not disable network-listener \{0}, because it is associated with admin virtual server \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1015]]AS-WEB-GLUE-00217 Virtual server \{0} set jk listener name \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1016]]AS-WEB-GLUE-00218 virtual server \{0} has an invalid docroot \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1017]]AS-WEB-GLUE-00219 \{0} network listener is not included in \{1} and will be updated ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1018]]AS-WEB-GLUE-00220 Unable to load configuration of web module [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1019]]AS-WEB-GLUE-00221 Failed to precompile JSP pages of web module [\{0}] ::
+  Cause: An exception occurred precompiling JSP pages
++
+  Action: Check the exception for the error
+
+[[sthref1020]]AS-WEB-GLUE-00222 Unable to create custom ObjectInputStream ::
+  Cause: An exception occurred during creating ObjectInputStream
++
+  Action: Check the Exception for error
+
+[[sthref1021]]AS-WEB-GLUE-00223 Unable to create custom ObjectOutputStream ::
+  Cause: An exception occurred during creating ObjectOutputStream
++
+  Action: Check the Exception for error
+
+[[sthref1022]]AS-WEB-GLUE-00224 The default-locale attribute of locale-charset-info element is being ignored ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1023]]AS-WEB-GLUE-00226 Web module [\{0}] has a property with missing name or value ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1024]]AS-WEB-GLUE-00227 Object of type \{0} is not a valve ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1025]]AS-WEB-GLUE-00228 Unable to add valve to web module \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1026]]AS-WEB-GLUE-00229 Unable to add valve with name \{0} to web module \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1027]]AS-WEB-GLUE-00230 No method \{0}(java.lang.String) defined on valve \{1} of web module \{2} ::
+  Cause: A matching method is not found
++
+  Action: Check the method name
+
+[[sthref1028]]AS-WEB-GLUE-00231 Exception during execution of method \{0} on valve \{1} of web module \{2} ::
+  Cause: An exception occurred during method execution
++
+  Action: Check the Exception for error
+
+[[sthref1029]]AS-WEB-GLUE-00232 Valve \{0} of web module \{1} has a property without any name ::
+  Cause: The valve is missing property name
++
+  Action: Check the property name
+
+[[sthref1030]]AS-WEB-GLUE-00233 Unable to add listener of type \{0} to web module \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1031]]AS-WEB-GLUE-00234 Unable to load extension class \{0} from web module \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1032]]AS-WEB-GLUE-00235 Null property name or value for alternate docbase ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1033]]AS-WEB-GLUE-00236 Alternate docbase property value \{0} is missing a URL pattern or docbase ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1034]]AS-WEB-GLUE-00237 URL pattern \{0} for alternate docbase is invalid ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1035]]AS-WEB-GLUE-00238 Failed to parse sun-web.xml singleThreadedServletPoolSize property value (\{0}) of web module deployed at \{1}, using default (\{2}) ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1036]]AS-WEB-GLUE-00239 Enabled session ID reuse for web module \{0} deployed on virtual server \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1037]]AS-WEB-GLUE-00240 Using alternate deployment descriptor \{0} for web module \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1038]]AS-WEB-GLUE-00241 Ignoring invalid property \{0} = \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1039]]AS-WEB-GLUE-00242 Unable to save sessions for web module \{0} during redeployment ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1040]]AS-WEB-GLUE-00243 Unable to restore sessions for web module [\{0}] from previous deployment ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1041]]AS-WEB-GLUE-00244 Webservice based application, requires Metro to be installed. Run updatecenter client located in bin folder to install Metro ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1042]]AS-WEB-GLUE-00245 WebModule[\{0}]: Setting delegate to \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1043]]AS-WEB-GLUE-00246 WebModule[\{0}]: Adding \{1} to the classpath ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1044]]AS-WEB-GLUE-00247 extra-class-path component \{0} is not a valid pathname ::
+  Cause: A MalformedURLException occurred
++
+  Action: Check the extra-class-path component
+
+[[sthref1045]]AS-WEB-GLUE-00248 class-loader attribute dynamic-reload-interval in sun-web.xml not supported ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1046]]AS-WEB-GLUE-00249 IN WebContainer>>ConfigureSessionManager
+before builder factory FINAL_PERSISTENCE-TYPE IS = \{0}
+FINAL_PERSISTENCE_FREQUENCY IS = \{1} FINAL_PERSISTENCE_SCOPE IS = \{2}
+::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1047]]AS-WEB-GLUE-00250 PersistenceStrategyBuilder class = \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1048]]AS-WEB-GLUE-00251 Property [\{0}] is not yet supported ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1049]]AS-WEB-GLUE-00252 WebModule[\{0}] configure cookie properties \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1050]]AS-WEB-GLUE-00253 Unable to add listener of type: \{0},
+because it does not implement any of the required
+ServletContextListener, ServletContextAttributeListener,
+ServletRequestListener, ServletRequestAttributeListener,
+HttpSessionListener, or HttpSessionAttributeListener interfaces ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1051]]AS-WEB-GLUE-00254 Configured an authenticator for method \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1052]]AS-WEB-GLUE-00255 [\{0}] failed to unbind namespace ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1053]]AS-WEB-GLUE-00256 No Realm with name [\{0}] configured to authenticate against ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1054]]AS-WEB-GLUE-00257 Cannot configure an authenticator for method \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1055]]AS-WEB-GLUE-00258 Cannot instantiate an authenticator of class \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1056]]AS-WEB-GLUE-00259 Lifecycle event data object [\{0}] is not a WebModule ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1057]]AS-WEB-GLUE-00260 jsp-config property for \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1058]]AS-WEB-GLUE-00261 sysClasspath for \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1059]]AS-WEB-GLUE-00262 Error creating cache manager and configuring the servlet caching subsystem ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1060]]AS-WEB-GLUE-00263 Cache Manager started ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1061]]AS-WEB-GLUE-00264 Cache Manager stopped ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1062]]AS-WEB-GLUE-00265 *** InstanceEvent: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1063]]AS-WEB-GLUE-00266 Obtained securityContext implementation class \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1064]]AS-WEB-GLUE-00267 Failed to obtain securityContext implementation class ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1065]]AS-WEB-GLUE-00268 Exception during processing of event of type \{0} for web module \{1} ::
+  Cause: An exception occurred during processing event type
++
+  Action: Check the exception for the error
+
+[[sthref1066]]AS-WEB-GLUE-00269 No ServerContext in WebModule [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1067]]AS-WEB-GLUE-00270 ContainerEvent: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1068]]AS-WEB-GLUE-00271 Exception during invocation of InjectionManager.destroyManagedObject on \{0} of web module \{1} ::
+  Cause: An exception occurred during destroyManagedObject
++
+  Action: Check the exception for the error
+
+[[sthref1069]]AS-WEB-GLUE-00272 Network Listener named \{0} does not exist. Creating or using the named protocol element instead. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1070]]AS-WEB-GLUE-00273 Network Listener named \{0} to which this ssl element is being added already has an ssl element. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1071]]AS-WEB-GLUE-00274 HTTP Listener named \{0} not found ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1072]]AS-WEB-GLUE-00275 Ssl element does not exist for Listener named \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1073]]AS-WEB-GLUE-00276 Error in parsing default-web.xml ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1074]]AS-WEB-GLUE-00277 An authentication method was not defined in the web.xml descriptor. Using default BASIC for login configuration. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1075]]AS-WEB-GLUE-00278 [\{0}] is not a valid authentication method ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1076]]AS-WEB-GLUE-00279 Invalid URL Pattern: [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1077]]AS-WEB-GLUE-00280 Cannot load class \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1078]]AS-WEB-GLUE-00281 Beginning JSP Precompile... ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1079]]AS-WEB-GLUE-00282 Finished JSP Precompile... ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1080]]AS-WEB-GLUE-00283 Cannot delete file: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1081]]AS-WEB-GLUE-00285 Exception getting Validator Factory from JNDI: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1082]]AS-WEB-HA-00001 Exception during removing synchronized from backing store ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1083]]AS-WEB-HA-00002 Exception during removing expired session from backing store ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1084]]AS-WEB-HA-00003 Error creating inputstream ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1085]]AS-WEB-HA-00004 Exception during deserializing the session ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1086]]AS-WEB-HA-00005 Exception occurred in getSession ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1087]]AS-WEB-HA-00006 Failed to remove session from backing store ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1088]]AS-WEB-HA-00007 Required version NumberFormatException ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1089]]AS-WEB-HA-00008 Could not create backing store ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1090]]AS-WEB-NAMING-00001 Canonical Pathname cannot be null ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1091]]AS-WEB-NAMING-00002 Outside webapp not allowed \{0} \{1} \{2} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1092]]AS-WEB-NAMING-00003 Absolute Pathname cannot be null \{0} \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1093]]AS-WEB-NAMING-00004 Canonical pathname \{0} equals to absolute pathname \{1} \{2} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1094]]AS-WEB-NAMING-00005 File cannot be read \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1095]]AS-WEB-NAMING-00006 Could not get dir listing for \{0} ::
+  Cause: Some IO error occurred such as bad file permissions
++
+  Action: Verify the file descriptors
+
+[[sthref1096]]AS-WEB-NAMING-00007 Document base \{0} does not exist or is not a readable directory ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1097]]AS-WEB-NAMING-00008 Document base cannot be null ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1098]]AS-WEB-NAMING-00009 Resource \{0} not found ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1099]]AS-WEB-NAMING-00010 Name \{0} is already bound in this Context ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1100]]AS-WEB-NAMING-00011 Bind failed: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1101]]AS-WEB-NAMING-00012 Unbind failed: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1102]]AS-WEB-NAMING-00013 Failed to rename [\{0}] to [\{1}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1103]]AS-WEB-NAMING-00014 Unknown context name : \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1104]]AS-WEB-NAMING-00015 No naming context bound to this thread ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1105]]AS-WEB-NAMING-00016 No naming context bound to this class loader ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1106]]AS-WEB-NAMING-00017 Name is not bound to a Context ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1107]]AS-WEB-NAMING-00018 Name is not bound to a Context ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1108]]AS-WEB-NAMING-00019 Name is not bound to a Context ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1109]]AS-WEB-NAMING-00020 Context is read only ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1110]]AS-WEB-NAMING-00021 Name is not valid ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1111]]AS-WEB-NAMING-00022 Name \{0} is already bound in this Context ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1112]]AS-WEB-NAMING-00023 Can't generate an absolute name for this namespace ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1113]]AS-WEB-NAMING-00024 Unable to restore original system properties ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1114]]AS-WEB-NAMING-00025 This context must be accessed through a java: URL ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1115]]AS-WEB-NAMING-00026 Exception closing WAR File \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1116]]AS-WEB-NAMING-00027 Doc base must point to a WAR file ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1117]]AS-WEB-NAMING-00028 Invalid or unreadable WAR file : \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1118]]AS-CDI-00001 Setting Context Class Loader for \{0} to \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1119]]AS-CDI-00002 BeanDeploymentArchiveImpl::addBeanClass - adding \{0} to \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1120]]AS-CDI-00003 \{0} not added to beanClasses ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1121]]AS-CDI-00004 Processing \{0} as it has \{1} or \{2}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1122]]AS-CDI-00005 Error while trying to load Bean Class \{0} : \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1123]]AS-CDI-00006 Processing WEB-INF/lib in \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1124]]AS-CDI-00007 WEB-INF/lib: considering \{0} as a bean archive and hence added another BDA for it. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1125]]AS-CDI-00008 WEB-INF/lib: skipping \{0} as it doesn't have beans.xml. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1126]]AS-CDI-00009 JAR processing: \{0} as a Bean archive jar since it has META-INF/beans.xml. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1127]]AS-CDI-00010 Ensure \{0} is associated with \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1128]]AS-CDI-00011 Ensure web lib jar visibility. Updating \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1129]]AS-CDI-00012 Ensure web lib jar visibility. Updating \{0} to include \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1130]]AS-CDI-00013 Collecting jar info for \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1131]]AS-CDI-00014 Error reading archive. \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1132]]AS-CDI-00015 Collecting rar info for \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1133]]AS-CDI-00016 Using Context Class Loader. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1134]]AS-CDI-00017 Context Class Loader is null. Using DeploymentImpl's classloader. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1135]]AS-CDI-00018 Creating deployment for archive: \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1136]]AS-CDI-00019 getBeanDeploymentArchives returning \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1137]]AS-CDI-00020 loadBeanDeploymentArchive for beanClass \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1138]]AS-CDI-00021 loadBeanDeploymentArchive checking for \{0} in root BDA \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1139]]AS-CDI-00022 loadBeanDeploymentArchive An existing BDA has this class \{0}. Adding this class as a bean class it to existing bda: \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1140]]AS-CDI-00023 loadBeanDeploymentArchive checking for \{0} in subBDA \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1141]]AS-CDI-00024 loadBeanDeploymentArchive beanClass \{0} not found in the BDAs of this deployment. Creating a new BDA. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1142]]AS-CDI-00025 loadBeanDeploymentArchive new BDA \{0} created. Adding new BDA to all root BDAs of this deployment. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1143]]AS-CDI-00026 loadBeanDeploymentArchive for beanClass \{0} returning the newly created BDA \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1144]]AS-CDI-00027 Exception thrown while scanning for library jars. \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1145]]AS-CDI-00028 Processing \{0} as it has one or more qualified CDI-annotated beans ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1146]]AS-CDI-00029 JAR processing: \{0} since it contains one or more classes with a scope annotation ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1147]]AS-CDI-00030 BDAImpl::ensureWebLibJarVisibility - \{0} being associated with \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1148]]AS-CDI-00031 BDAImpl::ensureWebLibJarVisibility - updating \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1149]]AS-CDI-00032 BDAImpl::ensureWebLibJarVisibility - updating \{0} to include \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1150]]AS-CDI-00033 Error reading archive : \{0} ::
+  Cause: MalformedURLException reading entry from the archive.
++
+  Action: Verify the archive is not corrupt.
+
+[[sthref1151]]AS-CDI-00034 TCL is null. Using DeploymentImpl's classloader ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1152]]AS-CDI-00035 Could not create WeldELContextListener instance. \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1153]]AS-CDI-00036 Exception in WeldBootstrap.shutdown. \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1154]]AS-CDI-00037 jakarta.jms.MessageListener Class available, so need to fire PIT events to MDBs ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1155]]AS-CDI-00038 \{0} is an MDB and so need to fire a PIT event to it. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1156]]AS-CDI-00039 WeldDeployer adding injectionServices \{0} for \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1157]]AS-CDI-00040 Unable to create URI for URL: \{0}. Exception: \{1} ::
+  Cause: URL for META-INF/services/faces-config.xml is invalid.
++
+  Action: Verify META-INF/services/faces-config.xml exists.
+
+[[sthref1158]]AS-CDI-00041 Trying to register interceptor: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1159]]AS-CDI-00042 Adding interceptor: \{0} for EJB: \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1160]]AS-CDI-00043 getBDAForBeanClass -- search in \{0} for \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1161]]AS-CDI-00044 JCDIServiceImpl.getBDAForBeanClass: TopLevelBDA \{0} contains beanClassName: \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1162]]AS-CDI-00045 JCDIServiceImpl.getBDAForBeanClass: subBDA \{0} contains beanClassName: \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1163]]AS-JTA-00001 Encountered NamingException while attempting to acquire transaction manager for Transactional annotation interceptors \{0} ::
+  Cause: Transaction annotation processing for the Naming
++
+  Action: Fix the issue for the Naming exception
+
+[[sthref1164]]AS-JTA-00002 About to setRollbackOnly from @Transactional interceptor on transaction: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1165]]AS-JTA-00003 No ComponentInvocation present for @Transactional annotation processing. Restriction on use of UserTransaction will not be enforced. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1166]]AS-JTA-00004 In MANDATORY TransactionalInterceptor ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1167]]AS-JTA-00005 In NEVER TransactionalInterceptor ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1168]]AS-JTA-00006 In NOT_SUPPORTED TransactionalInterceptor ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1169]]AS-JTA-00007 Managed bean with Transactional annotation and TxType of NOT_SUPPORTED called inside a transaction context. Suspending transaction... ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1170]]AS-JTA-00008 Managed bean with Transactional annotation and TxType of NOT_SUPPORTED called inside a transaction context. Suspending transaction failed due to \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1171]]AS-JTA-00009 In REQUIRED TransactionalInterceptor ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1172]]AS-JTA-00010 Managed bean with Transactional annotation and TxType of REQUIRED called outside a transaction context. Beginning a transaction... ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1173]]AS-JTA-00011 Managed bean with Transactional annotation and TxType of REQUIRED encountered exception during begin \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1174]]AS-JTA-00012 Managed bean with Transactional annotation and TxType of REQUIRED encountered exception during commit \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1175]]AS-JTA-00013 In REQUIRES_NEW TransactionalInterceptor ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1176]]AS-JTA-00014 Managed bean with Transactional annotation and TxType of REQUIRES_NEW called inside a transaction context. Suspending before beginning a transaction... ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1177]]AS-JTA-00015 Managed bean with Transactional annotation and TxType of REQUIRES_NEW encountered exception during begin \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1178]]AS-JTA-00016 Managed bean with Transactional annotation and TxType of REQUIRES_NEW encountered exception during commit \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1179]]AS-JTA-00017 Managed bean with Transactional annotation and TxType of REQUIRED encountered exception during resume \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1180]]AS-JTA-00018 In SUPPORTS TransactionalInterceptor ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1181]]AS-WSCONNECTOR-00046 Invalid Deployment Descriptors element \{0} value \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1182]]AS-WSCONNECTOR-00050 Following exception was thrown ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1183]]AS-WSCONNECTOR-00057 JAX-WS RI specific descriptor (\{1})
+is found in the archive \{0} and \nhence Enterprise Web Service (109)
+deployment is disabled for this archive to avoid duplication of
+services. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1184]]AS-WSCONNECTOR-00201 Handler class \{0} specified in deployment descriptor not found. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1185]]AS-WSCONNECTOR-00202 Handler class \{0} specified in handler file \{1} cannot be loaded. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1186]]AS-WSCONNECTOR-00203 Warning : Web service endpoint \{0} is not tied to a component. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1187]]AS-WSCONNECTOR-00204 Warning: Web service endpoint \{0} component link \{1} is not valid. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1188]]AS-WSCONNECTOR-00205 URL mapping for web service \{0} already exists. Is port-component-name in webservices.xml correct? ::
+  Cause: Invalid port-component-name value in webservices.xml.
++
+  Action: Fix port-component-name element in webservices.xml.
+
+[[sthref1189]]AS-WSJSR109IMPL-00001 Failed to load deployment descriptor, aborting. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1190]]AS-WSJSR109IMPL-00002 WebService wsdl file \{0} not found in archive \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1191]]AS-WSJSR109IMPL-00003 Exception while processing catalog \{0} Reason : \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1192]]AS-WSJSR109IMPL-00004 Unable to create new File \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1193]]AS-WSJSR109IMPL-00006 WebService \{0} has a JAXWS and a JAXRPC endpoint; this is not supported now. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1194]]AS-WSJSR109IMPL-00011 Runtime settings error. Cannot find servlet-impl-class for endpoint \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1195]]AS-WSJSR109IMPL-00012 Cannot proceed with JaxrpcCodegen. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1196]]AS-WSJSR109IMPL-00013 Parsing error line \{0}, uri \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1197]]AS-WSJSR109IMPL-00014 Error parsing WSDL \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1198]]AS-WSJSR109IMPL-00018 Webservice Endpoint deployed \{0}\n listening at address at \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1199]]AS-WSJSR109IMPL-00019 EJB Endpoint deployed \{0}\n listening at address at \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1200]]AS-WSJSR109IMPL-00020 File \{0} not found. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1201]]AS-WSJSR109IMPL-00021 MTOM is valid only for SOAP Bindings; Ignoring Enable-MTOM for port \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1202]]AS-WSJSR109IMPL-00033 Implicit mapping not supported; ignoring for now; Remove *. specified in the url-pattern. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1203]]AS-WSJSR109IMPL-00034 Two web services are being deployed with the same endpoint URL \{0}; The service that gets loaded last will always be the one that is active for this URL. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1204]]AS-WSJSR109IMPL-00043 Exception while tracing request: \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1205]]AS-WSJSR109IMPL-00044 Exception while tracing response: \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1206]]AS-WSJSR109IMPL-00047 JAXWS WebServiceDispatcher \{0} entering for \{1} and query string \{2}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1207]]AS-WSJSR109IMPL-00048 Ejb endpoint exception. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1208]]AS-WSJSR109IMPL-00049 Unable to find adapter for endpoint \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1209]]AS-WSJSR109IMPL-00050 Following exception was thrown: ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1210]]AS-WSJSR109IMPL-00051 Client not authorized for invocation of \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1211]]AS-WSJSR109IMPL-00052 The following error was thrown by ServletPreHandler which is the first handler in the handler chain \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1212]]AS-WSJSR109IMPL-00053 The following error was thrown by ServletPostHandler which is the last handler in the handler chain \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1213]]AS-WSJSR109IMPL-00054 Error registering endpoint \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1214]]AS-WSJSR109IMPL-00055 Error unregistering endpoint \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1215]]AS-WSJSR109IMPL-00056 Deployment cannot proceed as the ejb has a null endpoint address uri. Potential cause may be webservice endpoints not supported in embedded ejb case. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1216]]AS-WSJSR109IMPL-00057 WebService \{0} type is declared as \{1} but should be either as a JAX-WS or JAX-RPC. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1217]]AS-WSJSR109IMPL-00070 Unsupported method request = [\{0}] for endpoint \{1} at \{2}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1218]]AS-WSJSR109IMPL-00071 invocation error on ejb endpoint \{0} at \{1} : \{2}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1219]]AS-WSJSR109IMPL-00072 Cannot initialize endpoint \{0} : error is : ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1220]]AS-WSJSR109IMPL-00073 Error In EjbRuntimeEndpointInfo ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1221]]AS-WSJSR109IMPL-00074 Missing internal monitoring info to trace \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1222]]AS-WSJSR109IMPL-00075 null message POSTed to ejb endpoint \{0} at \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1223]]AS-WSJSR109IMPL-00076 Invalid request scheme for Endpoint \{0}. Expected ''\{1}'', received ''\{2}''. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1224]]AS-WSJSR109IMPL-00077 authentication failed for \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1225]]AS-WSJSR109IMPL-00078 Servlet web service endpoint ''\{0}'' failure ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1226]]AS-WSJSR109IMPL-00079 Error occured ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1227]]AS-WSJSR109IMPL-00080 Error invoking servlet impl ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1228]]AS-WSJSR109IMPL-00081 Servlet web service endpoint ''\{0}'' HTTP GET error ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1229]]AS-WSJSR109IMPL-00082 Deployment failed ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1230]]AS-WSJSR109IMPL-00083 Cannot load the wsdl from the aplication: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1231]]AS-WSJSR109IMPL-00084 Creating endpoint with packaged WSDL \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1232]]AS-WSJSR109IMPL-00085 Metadata documents: ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1233]]AS-WSJSR109IMPL-00086 For endpoint \{0}, Ignoring configuration \{1} in weblogic-webservices.xml ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1234]]AS-WSJSR109IMPL-00087 For endpoint \{0}, Unsupported configuration \{1} in weblogic-webservices.xml ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1235]]AS-WSJSR109IMPL-00088 Unexpected error in EJB WebService endpoint post processing ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1236]]AS-WSJSR109IMPL-00089 Error in resolving the catalog ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1237]]AS-WSJSR109IMPL-00090 In doWebServicesDeployment: using local web services. There are \{0}. The app has total of \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1238]]AS-WSJSR109IMPL-00091 In doWebServicesDeployment: using web services via extension \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1239]]AS-WSJSR109IMPL-00092 File already exists \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1240]]AS-WSJSR109IMPL-00093 Directory already exists \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1241]]AS-WSJSR109IMPL-00094 Received HTTP GET containing text/xml content for endpoint \{0} at \{1}. HTTP POST should be used instead. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1242]]AS-WSJSR109IMPL-00095 Serving up final wsdl \{0} for \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1243]]AS-WSJSR109IMPL-00096 Failure serving WSDL for web service \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1244]]AS-WSJSR109IMPL-00097 Invalid wsdl request for web service \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1245]]AS-WSJSR109IMPL-00098 Unable to load impl class \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1246]]AS-WSJSR109IMPL-00099 Cannot write out a HTTP XML exception : \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1247]]AS-WSJSR109IMPL-00100 cannot write SOAPFault to the HTTP response ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1248]]AS-WSJSR109IMPL-00101 Cannot create soap fault for \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1249]]AS-WSJSR109IMPL-00102 Class \{0} not found during PreDestroy processing ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1250]]AS-WSJSR109IMPL-00103 Handler class \{0} not found during PreDestroy processing ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1251]]AS-WSJSR109IMPL-00104 Failure while calling PostConstruct/PreDestroy method ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1252]]AS-WSJSR109IMPL-00105 Unable to load handler class \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1253]]AS-WSJSR109IMPL-00106 Handler \{0} instance injection failed: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1254]]AS-WSJSR109IMPL-00107 Cannot log SOAP Message \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1255]]AS-WSJSR109IMPL-00108 Exception in creating endpoint ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1256]]AS-WSJSR109IMPL-00109 deleting directory failed : \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1257]]AS-WSJSR109IMPL-00110 creating directory failed : \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1258]]AS-WSJSR109IMPL-00111 Invoking wsimport with \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1259]]AS-WSJSR109IMPL-00112 wsimport successful ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1260]]AS-WSJSR109IMPL-00113 wsimport failed ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1261]]AS-WSJSR109IMPL-00114 authentication succeeded for endpoint ''\{0}'' in \{1} \{2} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1262]]AS-WSJSR109IMPL-00115 wsimport successful ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1263]]AS-WSJSR109IMPL-00116 missing implementation class for \{0} ::
+  Cause: No class defined in deployment descriptor
++
+  Action: add implementation class definition to deployment descriptor
+
+[[sthref1264]]AS-WSJSR109IMPL-00117 Web service endpoint \{0} component link \{1} is not valid ::
+  Cause: Component link in webservices.xml is invalid
++
+  Action: check port-component-name matches the name of service
+  implementation bean and check component link in webservices.xml
+
+[[sthref1265]]AS-WSJSR109IMPL-00120 destroyManagedObject failed for Handler \{0} for Service \{1} with error \{2} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1266]]AS-WSJSR109IMPL-00121 Module type ''\{0}'' is not supported. ::
+  Cause: Deployed module is not a web application nor ejb module.
++
+  Action: Make sure web service is implemented in EJB module or Web
+  Application.
+
+[[sthref1267]]AS-WSJSR109IMPL-00122 \{0} does not support \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1268]]AS-WSJSR109IMPL-00123 Going to fetch ServletAdapter holding wsdl content for web service \{0} based on url: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1269]]AS-WSMETROGLUE-10001 Loading WS-TX Services. Please wait. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1270]]AS-WSMETROGLUE-10002 WS-TX Services successfully started. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1271]]AS-WSMETROGLUE-10003 WS-TX Services application was deployed explicitly. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1272]]AS-WSMETROGLUE-10004 Cannot deploy or load WS-TX Services: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1273]]AS-WSMETROGLUE-10010 Web service endpoint deployment events listener registered successfully. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1274]]AS-WSMETROGLUE-10011 Endpoint deployment even received. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1275]]AS-WSMETROGLUE-10012 Endpoint undeployment even received. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1276]]AS-WSMETROGLUE-10020 High availability environment configuration injected into Metro high availability provider. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1277]]AS-WSMETROGLUE-19998 Exception occurred retrieving port configuration for WSTX service. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1278]]AS-WSMETROGLUE-19999 Caught unexpected exception. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1279]]AS-WSSOAPTCP-00001 Initialize SOAP/TCP protocol for port: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1280]]AS-WSSOAPTCP-00002 Can not convert SOAP/TCP protocol id to byte array. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1281]]AS-WSSOAPTCP-00003 SOAP/TCP endpoint removed: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1282]]AS-WSSOAPTCP-00004 SOAP/TCP endpoint added: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1283]]AS-WSSOAPTCP-00006 WSTCPAdapterRegistryImpl. Register adapter. Path: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1284]]AS-WSSOAPTCP-00007 WSTCPAdapterRegistryImpl. DeRegister adapter for \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1285]]AS-WSSOAPTCP-00050 Following exception was thrown ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1286]]NCLS-CFGAPI-00001 No default config found, using config \{0} as the default config for the cluster \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1287]]NCLS-CFGAPI-00002 cluster property GMS_DISCOVERY_URI_LIST=\{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1288]]NCLS-CFGAPI-00003 cluster attribute gms broadcast=\{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1289]]NCLS-CFGAPI-00004 Cluster \{0} contains server instances \{1} and must not contain any instances ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1290]]NCLS-CFGAPI-00005 Unable to remove config \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1291]]NCLS-CFGAPI-00006 CopyConfig error caused by \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1292]]NCLS-CFGAPI-00007 Error when getting clusters on node dues to: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1293]]NCLS-CFGAPI-00008 Error when getting servers due to: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1294]]NCLS-CFGAPI-00009 Unable to create default Http service configuration ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1295]]NCLS-CFGAPI-00010 Cannot remove Node \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1296]]NCLS-CFGAPI-00011 Node \{0} referenced in server instance(s): \{1}. Remove instances before removing node. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1297]]NCLS-CFGAPI-00012 Can''t find the default config (an element named "default-config") in domain.xml. You may specify the name of an existing config element next time. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1298]]NCLS-CFGAPI-00013 Unable to remove server-ref \{0} from cluster \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1299]]NCLS-CFGAPI-00014 The default configuration template (named default-config) cannot be referenced by a server. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1300]]NCLS-CFGAPI-00015 The configuration of the Domain Administration Server cannot be changed from server-config. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1301]]NCLS-CFGAPI-00016 The configuration of the Domain Administration Server (named server-config) cannot be referenced by a server. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1302]]NCLS-CFGAPI-00017 The configuration of the Domain Administration Server (named server-config) cannot be referenced by a server. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1303]]NCLS-CFGAPI-00018 A configuration that doesn't exist cannot be referenced by a server. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1304]]NCLS-CFGAPI-00019 Port= \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1305]]NCLS-CFGAPI-00020 removing default instance index for \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1306]]NCLS-CFGAPI-00021 adding default instance index for \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1307]]NCLS-CFGAPI-00022 Existing default-config detected during upgrade. No need to create default-config. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1308]]NCLS-CFGAPI-00023 System Property com.sun.aas.installRoot is null. We could be running in unit tests.Exiting DefaultConfigUpgrade ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1309]]NCLS-CFGAPI-00024 default-config not detected during upgrade. Running DefaultConfigUpgrade to create default-config. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1310]]NCLS-CFGAPI-00025 Failure during upgrade - could not create default-config ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1311]]NCLS-CFGAPI-00027 Failure creating SecurityService Config ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1312]]NCLS-CFGAPI-00028 Problem parsing security-service ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1313]]NCLS-CFGAPI-00029 Failed to create HttpService VirtualService config object ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1314]]NCLS-CFGAPI-00030 Problem parsing http-service virtual-server in domain.xml template ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1315]]NCLS-CFGAPI-00031 Failed to create AdminService Property config object ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1316]]NCLS-CFGAPI-00032 Problem parsing asadmin-service property element in domain.xml template ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1317]]NCLS-CFGAPI-00033 Failure creating LogService config object ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1318]]NCLS-CFGAPI-00034 Failure creating ModuleLogLevel config object ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1319]]NCLS-CFGAPI-00035 Problem parsing module-log-levels in domain.xml template ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1320]]NCLS-CFGAPI-00036 Failure creating SecurityService config object ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1321]]NCLS-CFGAPI-00037 Failure creating AuthRealm ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1322]]NCLS-CFGAPI-00038 Problem parsing auth-realm ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1323]]NCLS-CFGAPI-00039 Create AuthRealm Property failed. Attr = \{0} and Val = \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1324]]NCLS-CFGAPI-00040 Problem parsing auth-realm property ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1325]]NCLS-CFGAPI-00041 Failure creating JaccProvider ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1326]]NCLS-CFGAPI-00042 Problem parsing jacc-provider ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1327]]NCLS-CFGAPI-00043 Create JaccProvider Property failed. Attr = \{0} and Val = \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1328]]NCLS-CFGAPI-00044 Problem parsing jacc-provider property ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1329]]NCLS-CFGAPI-00045 Failure creating AuditModule config object ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1330]]NCLS-CFGAPI-00046 Create AuditModule Property failed. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1331]]NCLS-CFGAPI-00047 Problem parsing audit-module property ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1332]]NCLS-CFGAPI-00048 Failure creating ProviderConfig ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1333]]NCLS-CFGAPI-00049 Problem parsing provider-config ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1334]]NCLS-CFGAPI-00050 Create ProviderConfig RequestPolicy failed. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1335]]NCLS-CFGAPI-00051 Problem parsing request-policy property ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1336]]NCLS-CFGAPI-00052 Create ProviderConfig Property failed ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1337]]NCLS-CFGAPI-00053 Problem parsing provider-config property ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1338]]NCLS-CFGAPI-00054 Failure creating JavaConfig config object ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1339]]NCLS-CFGAPI-00055 Problem parsing jvm-options ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1340]]NCLS-CFGAPI-00056 Failure creating AvailabilityService config object ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1341]]NCLS-CFGAPI-00057 Failure creating NetworkConfig config object ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1342]]NCLS-CFGAPI-00058 Failure creating Protocols config object ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1343]]NCLS-CFGAPI-00059 Problem parsing protocols element in domain.xml template ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1344]]NCLS-CFGAPI-00060 Failure creating Protocol config object ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1345]]NCLS-CFGAPI-00061 Failure creating Http config object ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1346]]NCLS-CFGAPI-00062 Failure creating FileCache config object ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1347]]NCLS-CFGAPI-00063 Problem parsing file-cache element in domain.xml template ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1348]]NCLS-CFGAPI-00064 Failure creating Ssl config object ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1349]]NCLS-CFGAPI-00065 Problem parsing ssl element in domain.xml template ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1350]]NCLS-CFGAPI-00066 Failure creating HttpRedirect config object ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1351]]NCLS-CFGAPI-00067 Failure creating PortUnification config object ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1352]]NCLS-CFGAPI-00068 Failure creating ProtocolFinder config object ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1353]]NCLS-CFGAPI-00069 Problem parsing protocol-finder element in domain.xml template ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1354]]NCLS-CFGAPI-00070 Failure creating NetworkListeners config object ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1355]]NCLS-CFGAPI-00071 Problem parsing network-listeners element in domain.xml template ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1356]]NCLS-CFGAPI-00072 Failure creating NetworkListener config object ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1357]]NCLS-CFGAPI-00073 Problem parsing network-listener element in domain.xml template ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1358]]NCLS-CFGAPI-00074 Failure creating Transports config object ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1359]]NCLS-CFGAPI-00075 Problem parsing transports element in domain.xml template ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1360]]NCLS-CFGAPI-00076 Failure creating Transport config object ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1361]]NCLS-CFGAPI-00077 Problem parsing transport element in domain.xml template ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1362]]NCLS-CFGAPI-00078 Failure to create ThreadPools config object ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1363]]NCLS-CFGAPI-00079 Failure creating ThreadPool config object ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1364]]NCLS-CFGAPI-00080 Problem parsing thread-pool element in domain.xml template ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1365]]NCLS-CFGAPI-00081 Failure creating SystemProperty config object ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1366]]NCLS-CFGAPI-00082 Problem parsing system-property element in domain.xml template ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1367]]NCLS-CFGAPI-00083 Startup class : ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1368]]NCLS-CFGAPI-00084 Successful cleaned domain.xml with ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1369]]NCLS-CFGAPI-00085 cleaning domain.xml failed ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1370]]NCLS-CFGAPI-00086 Instance \{0} from environment not found in domain.xml ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1371]]NCLS-CFGAPI-00087 Successful Upgrade domain.xml with ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1372]]NCLS-CFGAPI-00088 upgrading domain.xml failed ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1373]]NCLS-CFGAPI-00089 does not exist or is empty, will use backup ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1374]]NCLS-CFGAPI-00090 Problem parsing system-property element in domain.xml template ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1375]]NCLS-CFGAPI-00091 Problem parsing protocol element in domain.xml template ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1376]]NCLS-CFGAPI-00092 Total time to parse domain.xml: ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1377]]NCLS-CFGAPI-00093 Exception while creating the command model for the generic command \{0} : \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1378]]NCLS-CFGAPI-00094 The CrudResolver \{0} could not find the configuration object of type \{1} where instances of \{2} should be added ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1379]]NCLS-CFGAPI-00095 A \{0} instance with a \{1} name already exist in the configuration ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1380]]NCLS-CFGAPI-00096 Exception while invoking \{0} method : \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1381]]NCLS-CFGAPI-00097 The CreationDecorator \{0} could not be found in the habitat, is it annotated with @Service? ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1382]]NCLS-CFGAPI-00098 Exception while adding the new configuration : \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1383]]NCLS-CFGAPI-00099 Exception while persisting domain.xml, changes will not be available on server restart. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1384]]NCLS-CFGAPI-00100 Exception while persisting domain.xml, file a bug at http://glassfish.java.net ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1385]]NCLS-CFGAPI-00101 config.getHttpService() null for config ''\{0}'' ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1386]]NCLS-CFGAPI-00102 Failure while upgrading domain.xml ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1387]]NCLS-CFGAPI-00103 Cannot get default configuration for: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1388]]NCLS-CFGAPI-00104 Cannot parse default module configuration ::
+  Cause: Parsing for the default module configuration failed.
++
+  Action: Take appropriate action based on the exception stack trace in
+  the log message.
+
+[[sthref1389]]NCLS-CFGAPI-00105 Failed to find the suitable method in returnException: \{0} : \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1390]]NCLS-CFGAPI-00106 Cannot get parent config bean for: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1391]]NCLS-CFGAPI-00107 The provided path is not valid: \{0} resolved to component name: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1392]]NCLS-CFGAPI-00108 Cannot set config bean due to exception thrown. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1393]]NCLS-CFGAPI-00109 Cannot set config bean for \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1394]]NCLS-CFGAPI-00110 Cannot remove config bean named \{0} as it does not exist. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1395]]NCLS-CFGAPI-00111 Cannot get extension type \{0} for \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1396]]NCLS-CFGAPI-00112 Failed to execute the command create-module-config ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1397]]NCLS-CFGAPI-00113 Failed to show all default configurations not merged with domain configuration under target \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1398]]NCLS-CFGAPI-00114 Failed to create all default configuration elements that are not present in the domain.xml under target \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1399]]NCLS-CFGAPI-00119 Failed to create module configuration for \{0} under the target \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1400]]NCLS-CFGAPI-00120 Failed to remove all configuration
+elements related to your service form domain.xml. You can use
+create-module-config --dryRun with your module name to see all relevant
+configurations and try removing the config elements. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1401]]NCLS-CFGAPI-00121 Failed to get active configuration for \{0} under the target \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1402]]NCLS-CFGAPI-00122 Failed to create a ClassLoader for modules directory. ::
+  Cause: The modules directory ClassLoader could not be created due to
+  an I/O error.
++
+  Action: Take appropriate action based on the error stack trace
+  reported.
+
+[[sthref1403]]NCLS-CFGAPI-00123 Cannot add new configuration extension to the extension point. ::
+  Cause: An I/O error occurred during configuration extension addition.
++
+  Action: Take appropriate action based on the error stack trace
+  reported.
+
+[[sthref1404]]NCLS-CFGAPI-00124 Can not read default configuration. ::
+  Cause: An I/O error occurred.
++
+  Action: Take appropriate action based on the error stack trace
+  reported.
+
+[[sthref1405]]NCLS-CFGAPI-00125 Exception while creating the command model for the generic command \{0}. ::
+  Cause: An error occurred.
++
+  Action: Take appropriate action based on the error details in the log.
+
+[[sthref1406]]NCLS-CFGAPI-00126 The Config Bean \{0} cannot be loaded by the generic command implementation. ::
+  Cause: The config bean class could not be loaded.
++
+  Action: Take appropriate action based on the error stack trace
+  reported.
+
+[[sthref1407]]NCLS-CFGAPI-00127 Invalid annotated type \{0} passed to InjectionResolver:getValue() ::
+  Cause: Invalid annotated type.
++
+  Action: Take appropriate action based on the error message details in
+  the log.
+
+[[sthref1408]]NCLS-CFGAPI-00128 Failure while getting List<?> values from component ::
+  Cause: Generic CRUD command invocation failure
++
+  Action: Take appropriate action based on the error message details in
+  the log.
+
+[[sthref1409]]NCLS-CFGAPI-00129 The List type returned by \{0} must be a generic type. ::
+  Cause: Generic CRUD command invocation failure
++
+  Action: Take appropriate action based on the error message details in
+  the log.
+
+[[sthref1410]]NCLS-CFGAPI-00130 The generic type \{0} is not supported, only List<? extends ConfigBeanProxy> is supported. ::
+  Cause: Generic CRUD command invocation failure
++
+  Action: Provide a supported generic type.
+
+[[sthref1411]]NCLS-CFGAPI-00131 Failure while instrospecting \{0} to find all getters and setters. ::
+  Cause: Generic CRUD command invocation failure
++
+  Action: Provide a supported generic type.
+
+[[sthref1412]]NCLS-CFGAPI-00132 Transaction exception while injecting \{1}. ::
+  Cause: Generic CRUD command invocation failure
++
+  Action: Take appropriate action based on the error message details in
+  the log.
+
+[[sthref1413]]NCLS-CFGAPI-00133 The CrudResolver \{0} could not find the configuration object of type \{1} where instances of \{2} should be removed. ::
+  Cause: Generic delete command invocation failure
++
+  Action: Take appropriate action based on the error message details in
+  the log.
+
+[[sthref1414]]NCLS-CFGAPI-00134 Exception while creating access checks for generic command \{0}. ::
+  Cause: An error occurred.
++
+  Action: Take appropriate action based on the error details in the log.
+
+[[sthref1415]]NCLS-CFGAPI-00135 Cannot identify getter method for ListingColumn ::
+  Cause: An error occurred.
++
+  Action: Take appropriate action based on the error details in the log.
+
+[[sthref1416]]NCLS-CFGAPI-00136 An error occurred while invoking getter \{0} on ConfigBeanProxy. ::
+  Cause: An error occurred.
++
+  Action: Take appropriate action based on the error details in the log.
+
+[[sthref1417]]NCLS-CFGAPI-00137 Failure while upgrading http-service properties. ::
+  Cause: An error occurred.
++
+  Action: Take appropriate action based on the error details in the log.
+
+[[sthref1418]]NCLS-GFLAUNCHER-00001 Single and double quote characters are not allowed in the CLASSPATH environmental variable. They were stripped out for you.\nBefore: \{0}\nAfter: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1419]]NCLS-GFLAUNCHER-00002 Error Launching: \{0} ::
+  Cause: As described in the message.
++
+  Action: Fix the CLASSPATH
+
+[[sthref1420]]NCLS-GFLAUNCHER-00003 Could not locate the flashlight agent here: \{0} ::
+  Cause: As described in the message.
++
+  Action: Find the agent file.
+
+[[sthref1421]]NCLS-GFLAUNCHER-00004 Will copy glassfish/lib/templates/server.policy file to domain before upgrading. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1422]]NCLS-GFLAUNCHER-00005 JVM invocation command line:\{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1423]]NCLS-MNTG-00000 Caught an Exception: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1424]]NCLS-MNTG-00001 Caught an Exception: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1425]]NCLS-MNTG-00005 Missing Module (\{0}) From Xml Probe Providers ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1426]]NCLS-MNTG-00104 Unable to load the ProbeProvider ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1427]]NCLS-MNTG-00105 Unable to load the ProbeProvider ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1428]]NCLS-MNTG-00109 mbean-enabled flag is turned on. Enabling all the MBeans ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1429]]NCLS-MNTG-00110 mbean-enabled flag is turned off. Disabling all the MBeans ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1430]]NCLS-MNTG-00111 dtrace-enabled flag is turned on/off. Enabling/Disabling DTrace ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1431]]NCLS-MNTG-00112 monitoring-enabled flag is turned on. Enabling all the Probes and Stats ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1432]]NCLS-MNTG-00113 monitoring-enabled flag is turned off. Disabling all the Stats ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1433]]NCLS-MNTG-00201 Flashlight listener registration failed for listener class: \{0} , will retry later ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1434]]NCLS-MNTG-00202 Invalid statsProvider (very likely a duplicate request), cannot unregister: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1435]]NCLS-MNTG-00203 Cannot find node \{0} for statsProvider \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1436]]NCLS-MNTG-00204 \{0} is not a ManagedObject and will not be registered with Gmbal to create an MBean ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1437]]NCLS-MNTG-00205 Gmbal registration failed ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1438]]NCLS-MNTG-00206 Gmbal unregistration failed ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1439]]NCLS-MNTG-00207 module-monitoring-level or container-monitoring config element for \{0} does not exist ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1440]]NCLS-MNTG-00208 Error unregistering the stats provider \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1441]]NCLS-MNTG-00209 Error resetting the stats provider: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1442]]NCLS-MNTG-00210 Unable to create container-monitoring for \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1443]]NCLS-RSTCN-00001 The REST connector has been started ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1444]]NCLS-RSCL-00001 An unsupported encoding was requested: \{0}. ::
+  Cause: The input supplied can not be encoded in the requested
+  encoding.
++
+  Action: Verify that the input is valid.
+
+[[sthref1445]]NCLS-RSCL-00002 An error occurred while processing an XML document. ::
+  Cause: The input provided could not be read as an XML document.
++
+  Action: Verify that the document provided is a valid XML document.
+
+[[sthref1446]]NCLS-RSCL-00003 An I/O exception occurred. ::
+  Cause: An error occured while closing an InputStream.
++
+  Action: The error is not recoverable.
+
+[[sthref1447]]NCLS-RSCL-00004 An error occurred while processing a JSON object. ::
+  Cause: An invalid JSON string was provided and could not be read.
++
+  Action: Verify that the JSON string is valid and retry the request.
+
+[[sthref1448]]NCLS-REST-00001 Listening to REST requests at context: \{0}/domain. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1449]]NCLS-REST-00002 Incorrectly formatted entry in \{0}: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1450]]NCLS-REST-00003 An error occurred while processing the request. Please see the server logs for details. ::
+  Cause: A runtime error occurred. Please see the log file for more
+  details
++
+  Action: See the log file for more details
+
+[[sthref1451]]NCLS-REST-00004 The class specified by generator does not implement DefaultsGenerator ::
+  Cause: The generator does not implement the DefaultsGenerator
+  interface
++
+  Action: Modify the generator to implement the DefaultsGenerator
+  interface
+
+[[sthref1452]]NCLS-REST-00005 Unsupported fixed value. Supported types are String, boolean, Boolean, int, Integer, long, Long, double, Double, float, and Float ::
+  Cause: The RestModel property has specified an unsupported data type
++
+  Action: Modify the model to use one of the supported types
+
+[[sthref1453]]NCLS-REST-00006 Fixed value type does not match the property type ::
+  Cause: The value for the given property can not be converted to the
+  property's type
++
+  Action: Check the input data
+
+[[sthref1454]]NCLS-REST-00007 Cannot marshal ::
+  Cause: The system is unable to generate XML for the given object
++
+  Action: Check the logs for more details
+
+[[sthref1455]]NCLS-REST-00008 Unexpected exception during command execution. \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1456]]NCLS-REST-00009 Unable to delete directory \{0}. Will attempt deletion again upon JVM exit. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1457]]NCLS-REST-00010 Unable to delete file %s. Will attempt deletion again upon JVM exit. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1458]]NCLS-REST-00011 \{0}: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1459]]NCLS-REST-00012 Compilation failed. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1460]]NCLS-REST-00013 File creation failed: \{0} ::
+  Cause: The system was unable to create the specified file.
++
+  Action: Verify that the filesystem is writable and has sufficient disk
+  space
+
+[[sthref1461]]NCLS-REST-00014 Directory creation failed: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1462]]NCLS-REST-00015 Unexpected exception during initilization. ::
+  Cause: The system is unable to init ReST interface
++
+  Action: Check the logs for more details
+
+[[sthref1463]]NCLS-REST-00016 I/O exception: \{0} ::
+  Cause: See server log for details
++
+  Action: See server log for details.
+
+[[sthref1464]]NCLS-SRVRMGMT-00000 Caught an Exception: \{0} ::
+  Cause: see Exception message
++
+  Action: see Exception message
+
+[[sthref1465]]NCLS-SRVRMGMT-00001 Error attemping to delete temporary certificate file: \{0} ::
+  Cause: As described in the message.
++
+  Action: Delete the file manually.
+
+[[sthref1466]]NCLS-SRVRMGMT-00002 Renaming \{0} to \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1467]]NCLS-SRVRMGMT-00003 Failed to rename \{0} to \{1} ::
+  Cause: As described in the message.
++
+  Action: Check the file system.
+
+[[sthref1468]]NCLS-SRVRMGMT-00004 Failure while upgrading jvm-options from V2 to V3 ::
+  Cause: As described in the message.
++
+  Action: Check documentation.
+
+[[sthref1469]]NCLS-SRVRMGMT-00005 JVM Monitoring ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1470]]NCLS-SRVRMGMT-00006 UpTime(ms) ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1471]]NCLS-SRVRMGMT-00007 Heap and NonHeap Memory(bytes) ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1472]]NCLS-SRVRMGMT-00008 Failure while upgrading log-service. Could not create logging.properties file. ::
+  Cause: As described in the message.
++
+  Action: Check documentation.
+
+[[sthref1473]]NCLS-SRVRMGMT-00009 Failure while upgrading log-service. Could not update logging.properties file. ::
+  Cause: As described in the message.
++
+  Action: Check documentation.
+
+[[sthref1474]]NCLS-SRVRMGMT-00010 Failure while upgrading log-service ::
+  Cause: As described in the message.
++
+  Action: Check documentation.
+
+[[sthref1475]]NCLS-SRVRMGMT-00011 Could not create directory \{0} ::
+  Cause: As described in the message.
++
+  Action: Check documentation.
+
+[[sthref1476]]NCLS-SRVRMGMT-00012 Could not create domain info XML file \{0} ::
+  Cause: As described in the message.
++
+  Action: Check documentation.
+
+[[sthref1477]]NCLS-SRVRMGMT-00013 Missing file : \{0} ::
+  Cause: As described in the message.
++
+  Action: Check documentation.
+
+[[sthref1478]]NCLS-SRVRMGMT-00014 Default port \{1} for \{0} is in use. Using \{2} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1479]]NCLS-SRVRMGMT-00015 Port for \{0} is not specified. Using \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1480]]NCLS-SRVRMGMT-00016 Invalid Port for \{0}, should be between 1 and 65535. Using \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1481]]NCLS-SRVRMGMT-00017 Port \{1} for \{0} is in use. Using \{2} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1482]]NCLS-SRVRMGMT-00018 Using default port \{1} for \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1483]]NCLS-SRVRMGMT-00019 Using port \{1} for \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1484]]NCLS-SRVRMGMT-00020 On Unix platforms, port numbers below 1024 may require special privileges. ::
+  Cause: As described in the message.
++
+  Action: Check documentation.
+
+[[sthref1485]]NCLS-SRVRMGMT-00021 Failed to update jar \{0} with the substitutable files ::
+  Cause: As described in the message.
++
+  Action: Check documentation.
+
+[[sthref1486]]NCLS-SRVRMGMT-00022 File \{0} not present inside archive \{1} ::
+  Cause: As described in the message.
++
+  Action: Check documentation.
+
+[[sthref1487]]NCLS-SRVRMGMT-00023 Error occurred while closing the stream for file \{0} ::
+  Cause: As described in the message.
++
+  Action: Check documentation.
+
+[[sthref1488]]NCLS-SRVRMGMT-00024 Could not rename temporary jar \{0} file to \{1} ::
+  Cause: As described in the message.
++
+  Action: Check documentation.
+
+[[sthref1489]]NCLS-SRVRMGMT-00025 Could not locate file or resource \{0} ::
+  Cause: As described in the message.
++
+  Action: Check documentation.
+
+[[sthref1490]]NCLS-SRVRMGMT-00026 No processing defined for \{0} mode ::
+  Cause: As described in the message.
++
+  Action: Check documentation.
+
+[[sthref1491]]NCLS-SRVRMGMT-00027 Component \{0} is not present. ::
+  Cause: As described in the message.
++
+  Action: Check documentation.
+
+[[sthref1492]]NCLS-SRVRMGMT-00028 Group \{0} is not present. ::
+  Cause: As described in the message.
++
+  Action: Check documentation.
+
+[[sthref1493]]NCLS-SRVRMGMT-00029 Change-Pair \{0} referred by group \{1} is not defined. ::
+  Cause: As described in the message.
++
+  Action: Check documentation.
+
+[[sthref1494]]NCLS-SRVRMGMT-00030 Invalid Mode Type \{0}. ::
+  Cause: As described in the message.
++
+  Action: Check documentation.
+
+[[sthref1495]]NCLS-SRVRMGMT-00031 Found an empty <change-pair/>. ::
+  Cause: As described in the message.
++
+  Action: Check documentation.
+
+[[sthref1496]]NCLS-SRVRMGMT-00032 IO Error occurred while retrieving substitutable entries from archive \{0}. ::
+  Cause: As described in the message.
++
+  Action: Check documentation.
+
+[[sthref1497]]NCLS-SRVRMGMT-00033 In-memory string substitution file size is not defined. ::
+  Cause: As described in the message.
++
+  Action: Check documentation.
+
+[[sthref1498]]NCLS-SRVRMGMT-00034 Key already exist in tree, Current Value : \{0} New Value : \{1}. ::
+  Cause: As described in the message.
++
+  Action: Check documentation.
+
+[[sthref1499]]NCLS-SRVRMGMT-00035 Parent node: \{0} contains child node: \{1} whose key starts with same character as the key of given node: \{2} ::
+  Cause: As described in the message.
++
+  Action: Check documentation.
+
+[[sthref1500]]NCLS-ADMIN-00001 Could not find state of instance registered in the state service ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1501]]NCLS-ADMIN-00002 Error during command replication: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1502]]NCLS-ADMIN-00003 unable to read instance state file \{0}, recreating ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1503]]NCLS-ADMIN-00004 unable to create instance state file: \{0}, exception: \{1} ::
+  Cause: The instance state file is missing and the system is trying
+  torecreated it but and exception was raised.
++
+  Action: Check the server logs and contact Oracle support
+
+[[sthref1504]]NCLS-ADMIN-00005 error while adding new server state to instance state: \{0} ::
+  Cause: An attempt to add a new server to the instance state file
+  failed.
++
+  Action: Check the server logs and contact Oracle support
+
+[[sthref1505]]NCLS-ADMIN-00006 error while adding failed command to instance state: \{0} ::
+  Cause: An attempt to add a failed command to the instance state file
+  failed.
++
+  Action: Check the server logs and contact Oracle support
+
+[[sthref1506]]NCLS-ADMIN-00007 error while removing failed commands from instance state: \{0} ::
+  Cause: An attempt to remove a failed command from the instance state
+  file failed.
++
+  Action: Check the server logs and contact Oracle support
+
+[[sthref1507]]NCLS-ADMIN-00008 error while setting instance state: \{0} ::
+  Cause: An attempt to set the state of a server in the instance state
+  file failed.
++
+  Action: Check the server logs and contact Oracle support
+
+[[sthref1508]]NCLS-ADMIN-00009 error while removing instance: \{0} ::
+  Cause: An attempt to remove a server from the instance state file
+  failed.
++
+  Action: Check the server logs and contact Oracle support
+
+[[sthref1509]]NCLS-ADMIN-00010 It appears that server [\{0}:\{1}] does not accept secure connections. Retry with --secure=false. ::
+  Cause: An attempt to invoke a command on another server failed.
++
+  Action: Check that the server is configured to accept secure
+  connections.
+
+[[sthref1510]]NCLS-ADMIN-00011 An unexpected exception occurred. ::
+  Cause: An unexpected exception occurred.
++
+  Action: Check the server logs and contact Oracle support
+
+[[sthref1511]]NCLS-ADMIN-00012 The server requires a valid admin password to be set before it can start. Please set a password using the change-admin-password command. ::
+  Cause: For security reason, the server requires a valid admin password
+  before it can start.
++
+  Action: Set a password using the change-admin-password command.
+
+[[sthref1512]]NCLS-ADMIN-00013 Can not put data to cache under key \{0} ::
+  Cause: While invoking a command on another server, this server is
+  unable to cache the meta data related to the command.
++
+  Action: Check the server logs and contact Oracle support
+
+[[sthref1513]]NCLS-ADMIN-00014 An admin request arrived from \{0} with the domain identifier \{1} which does not match the domain identifier \{2} configured for this server's domain; rejecting the request ::
+  Cause: There is a error in the cluster or network configuration.
++
+  Action: Check the server logs and contact Oracle support
+
+[[sthref1514]]NCLS-ADMIN-00015 Error searching for a default admin user ::
+  Cause: An unexpected exception occurred wihle searching for the
+  default admin user.
++
+  Action: Check the server logs and contact Oracle support
+
+[[sthref1515]]NCLS-ADMIN-00016 Cannot read admin cache file for \{0} ::
+  Cause: An error occured while reading the admin command model cache
+  file.
++
+  Action: Check the server logs and contact Oracle support
+
+[[sthref1516]]NCLS-ADMIN-00017 Cannot write data to cache file for \{0} ::
+  Cause: An error occured while writing the admin command model cache
+  file.
++
+  Action: Check the server logs and contact Oracle support
+
+[[sthref1517]]NCLS-ADMIN-00018 Unexpected exception from command event listener. ::
+  Cause: An error occured while calling registered listener.
++
+  Action: Check the server logs and contact Oracle support
+
+[[sthref1518]]NCLS-CLSTR-10101 no clustername to lookup ::
+  Cause: Required information was not passed into method.
++
+  Action: File issue with all relevant information.
+
+[[sthref1519]]NCLS-CLSTR-10102 Multiple gms-adapter service for cluster \{0} ::
+  Cause: GMs module is being initialized more than once for the same
+  cluster.
++
+  Action: File issue with all relevant information.
+
+[[sthref1520]]NCLS-CLSTR-10103 GMS cannot initialize with unknown cluster ::
+  Cause: No cluster was found with this name in the domain
+  configuration.
++
+  Action: Check that domain exists in domain.xml.
+
+[[sthref1521]]NCLS-CLSTR-10104 Started GMS for instance \{0} in group \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1522]]NCLS-CLSTR-10105 Member \{0} joined group \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1523]]NCLS-CLSTR-10107 AliveAndReady for signal: \{0} for member: \{1} of group: \{2} current:[\{3}] previous:[\{4}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1524]]NCLS-CLSTR-10108 GMSAdapter for member: \{0} group: \{1} received GlassFishEventType: \{2} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1525]]NCLS-CLSTR-10109 An exception occurred while creating the HealthHistory object: \{0} ::
+  Cause: An unexpected exception occurred.
++
+  Action: See server log for more details.
+
+[[sthref1526]]NCLS-CLSTR-10110 An exception occurred while processing GMS configuration properties: \{0} ::
+  Cause: An unexpected exception occurred.
++
+  Action: See server log for more details.
+
+[[sthref1527]]NCLS-CLSTR-10111 Ignoring group-management-service property \{0} with value of \{1} due to \{2} ::
+  Cause: An illegal argument was passed into the Shoal GMS
+  implementation.
++
+  Action: Check the server log file for more information from Shoal-GMS.
+
+[[sthref1528]]NCLS-CLSTR-10112 Error processing cluster property:\{0} value:\{1} due to exception \{2} ::
+  Cause: An unexpected exception occurred.
++
+  Action: Check the server log file for more information from Shoal-GMS.
+
+[[sthref1529]]NCLS-CLSTR-10113 Exception in getting GMS module for group \{0}: \{1} ::
+  Cause: An unexpected exception occurred.
++
+  Action: Check the server log file for more information from Shoal-GMS.
+
+[[sthref1530]]NCLS-CLSTR-10114 An exception occurred while updating the instance health history table: \{0} ::
+  Cause: An unexpected exception occurred.
++
+  Action: Check the log file for more information from Shoal-GMS.
+
+[[sthref1531]]NCLS-CLSTR-10115 start failure recovery callback for component: \{0} failed member: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1532]]NCLS-CLSTR-10116 complete failure recovery callback for component: \{0} failed member: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1533]]NCLS-CLSTR-10117 GMS failed to start. See stack trace for additional information. ::
+  Cause: An unexpected exception occurred.
++
+  Action: Check the log file for more information
+
+[[sthref1534]]NCLS-CLSTR-10118 GMS failed to start due to a runtime exception. See stack trace for additional information. ::
+  Cause: An unexpected exception occurred.
++
+  Action: Check the log file for more information
+
+[[sthref1535]]NCLS-CLSTR-10119 GMS bind interface address \{0} is invalid. Will use default value instead. ::
+  Cause: The specified bind interface address is not an active local
+  address, so it cannot be used on this node.
++
+  Action: Check that you have specified the proper address. See server
+  log for more details from GMS subsystem.
+
+[[sthref1536]]NCLS-CLSTR-10120 GMS listener port is required for cluster \{0}. Will attempt to use default of \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1537]]NCLS-CLSTR-30001 GMSAnnounceAfterStartClusterCommand: exitCode:\{0} members \{1} clusterMembers:\{2} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1538]]NCLS-CLSTR-30002 An exception occurred while announcing GMS group startup: \{0} ::
+  Cause: An unexpected exception occurred in the GMS implementation.
++
+  Action: Check the server log file for more information from Shoal-GMS.
+
+[[sthref1539]]NCLS-CLSTR-30003 An exception occurred while announcing GMS group shutdown: \{0} ::
+  Cause: An unexpected exception occurred in the GMS implementation.
++
+  Action: Check the server log file for more information from Shoal-GMS.
+
+[[sthref1540]]NCLS-CLSTR-30004 An exception occurred while announcing GMS group startup: \{0} ::
+  Cause: An unexpected exception occurred in the GMS implementation.
++
+  Action: Check the server log file for more information from Shoal-GMS.
+
+[[sthref1541]]NCLS-CLSTR-30005 An exception occurred while announcing GMS group shutdown: \{0} ::
+  Cause: An unexpected exception occurred in the GMS implementation.
++
+  Action: Check the server log file for more information from Shoal-GMS.
+
+[[sthref1542]]NCLS-CLSTR-10001 Unable to load GMS classes. Group management service is not available. ::
+  Cause: GMS implementation classes are not present. See
+  https://glassfish.dev.java.net/issues/show_bug.cgi?id=12850.
++
+  Action: Check that shoal-gms-impl.jar file is present.
+
+[[sthref1543]]NCLS-CLSTR-20001 Adding instance \{0} to health history table. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1544]]NCLS-CLSTR-20002 Instance \{0} was not in map when deleted from health history table. ::
+  Cause: More than one call may have been made to remove this instance
+  from the cluster. This has no other effect on the health history
+  information.
++
+  Action: No action is necessary.
+
+[[sthref1545]]NCLS-CLSTR-20003 Deleting instance \{0} from health history table. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1546]]NCLS-CLSTR-20004 Duplicate instance \{0} ignored in health history. ::
+  Cause: There may be more than one instance in the cluster with the
+  same name.
++
+  Action: Check that instance names are unique within the cluster.
+
+[[sthref1547]]NCLS-CLSTR-20005 State already known for instance \{0}. Not adding to health history table. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1548]]NCLS-CLSTR-20006 New state \{0} added for unknown instance \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1549]]NCLS-COM-00002 AMX Startup Service Shutdown. MBeans have not been unregistered: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1550]]NCLS-COM-00004 Fatal error loading AMX \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1551]]NCLS-COM-00008 AMX Startup Service: AMXLoader failed to load \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1552]]NCLS-COM-00009 AMX Startup Service: AMX ready for use, DomainRoot \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1553]]NCLS-COM-00010 AMXLoader failed to unload: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1554]]NCLS-COM-00011 ConfigBean not processed, something wrong with it \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1555]]NCLS-COM-00012 In AMXConfigLoader : Loading \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1556]]NCLS-COM-00019 Can't unregister MBean: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1557]]NCLS-COM-00020 Non-singleton ConfigBean \{0} has empty key value (name), supplying \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1558]]NCLS-COM-00021 AMX ComplianceMonitor: ValidationLevel = \{0}, UnregisterNonCompliant = \{1}, LogInaccessibleAttributes = \{2} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1559]]NCLS-COM-00022 AMX ComplianceMonitor thread has unexpectedly quit \{0} ::
+  Cause: A JMX validation thread has unexpectedly terminated due to an
+  exception.
++
+  Action: Check the server logs and contact Oracle support.
+
+[[sthref1560]]NCLS-COM-00023 Validating MBean \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1561]]NCLS-COM-00024 Exception validating MBean \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1562]]NCLS-COM-00025 Register children for instance name \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1563]]NCLS-COM-00027 AMX Attribute Change Notification for \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1564]]NCLS-COM-00030 Attribute \{0} not found for object \{1} ::
+  Cause: An attempt to resolve an attribute failed.
++
+  Action: Check the server logs and contact Oracle support.
+
+[[sthref1565]]NCLS-COM-00031 Can't find child of type \{0} ::
+  Cause: While removing a child, the child was not found.
++
+  Action: Check the server logs and contact Oracle support.
+
+[[sthref1566]]NCLS-COM-00032 MBeans exist in AMX domain prior to DomainRoot (violates Parent requirement): \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1567]]NCLS-COM-00033 Can't register config MBean: type=\{0}, name=\{1}, exception=\{2} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1568]]NCLS-COM-00034 Unexpected thread death of AMXConfigLoaderThread ::
+  Cause: The AMX configuration loader thread received an unexpected
+  exception.
++
+  Action: Check the server logs and contact Oracle support.
+
+[[sthref1569]]NCLS-COM-00035 Can't create children ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1570]]NCLS-COM-00036 AMXConfigStartupService.preDestroy(): stopping AMX ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1571]]NCLS-COM-00037 Illegal non-string type for \{0}.\{1}(): \{2} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1572]]NCLS-COM-00038 Can't get field value for \{0}: exception: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1573]]NCLS-COM-00039 Can't getTypesImplementing for \{0}: exception: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1574]]NCLS-COM-00040 Can't get childrenSet() from MBean: \{0}, exception: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1575]]NCLS-COM-00041 Problem with MBean: \{0}, exception: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1576]]NCLS-COM-00042 PathnamesImpl.getAllPathnames(): unexpected Throwable: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1577]]NCLS-COM-00043 Can't get path() for MBean: \{0}, exception: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1578]]NCLS-COM-00044 Can't instantiate realm: \{0}, exception: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1579]]NCLS-COM-00045 getRealmNames(): Can't get realm names, exception: ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1580]]NCLS-COM-00046 Cannot find primordial com.sun.enterprise.osgi-adapter ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1581]]NCLS-COM-00047 Stopping server forcibly ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1582]]NCLS-COM-00048 Can't get cipher suites ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1583]]NCLS-COM-00049 MBeanInfoSupport: @ManagedAttribute cannot also be @ManagedOperation: \{0}.\{1}() ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1584]]NCLS-COM-00050 MBeanInfoSupport: @ManagedAttribute not a getter or setter: \{0}.\{1}() ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1585]]NCLS-COMUTIL-00001 Failed to process class \{0} with bytecode preprocessor \{1} ::
+  Cause: As described in the message.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1586]]NCLS-COMUTIL-00002 Class \{0} is being reset to its original state ::
+  Cause: As described in the message.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1587]]NCLS-COMUTIL-00003 Class \{0} is being reset to the last successful preprocessor ::
+  Cause: As described in the message.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1588]]NCLS-COMUTIL-00004 The supplied preprocessor class \{0} is not an instance of org.glassfish.api.BytecodePreprocessor ::
+  Cause: As described in the message.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1589]]NCLS-COMUTIL-00005 Bytecode preprocessor disabled ::
+  Cause: As described in the message.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1590]]NCLS-COMUTIL-00006 Initialization failed for bytecode preprocessor \{0} ::
+  Cause: As described in the message.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1591]]NCLS-COMUTIL-00007 Error setting up preprocessor ::
+  Cause: As described in the message.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1592]]NCLS-COMUTIL-00008 Illegal max-entries [\{0}]; please check your cache configuration. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1593]]NCLS-COMUTIL-00009 Illegal MaxSize value [\{0}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1594]]NCLS-COMUTIL-00010 Error closing zip file for class path entry \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1595]]NCLS-COMUTIL-00011 An error occurred while adding URL [\{0}] to the EJB class loader. Please check the content of this URL. ::
+  Cause: An unexpected exception occurred while processing a URL.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1596]]NCLS-COMUTIL-00012 The URL entry is missing while contructing the classpath. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1597]]NCLS-COMUTIL-00013 Error closing zip file for duplicate class path entry \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1598]]NCLS-COMUTIL-00014 Exception in ASURLClassLoader ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1599]]NCLS-COMUTIL-00015 ASURLClassLoader \{1} was requested to find resource \{0} after done was invoked from the following stack trace ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1600]]NCLS-COMUTIL-00016 Error: Request made to load class or resource [\{0}] on an ASURLClassLoader instance that has already been shutdown. [\{1}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1601]]NCLS-COMUTIL-00017 \{0} actually got transformed ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1602]]NCLS-COMUTIL-00018 ASURLClassLoader \{1} was requested to find class \{0} after done was invoked from the following stack trace ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1603]]NCLS-COMUTIL-00019 Illegal call to close() detected ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1604]]NCLS-COMUTIL-00020 Error processing file with path \{0} in \{1} ::
+  Cause: An unexpected exception occurred while processing a file.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1605]]NCLS-COMUTIL-00021 Error checking for existing of \{0} in \{1} ::
+  Cause: An unexpected exception occurred while checking for the
+  existence of a file.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1606]]NCLS-COMUTIL-00022 Error closing an open stream during loader clean-up ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1607]]NCLS-COMUTIL-00023 Input stream has been finalized or forced closed without being explicitly closed; stream instantiation reported in following stack trace ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1608]]NCLS-COMUTIL-00024 Unable to create client data directory: \{0} ::
+  Cause: An unexpected failure occurred while creating the directory for
+  the file.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1609]]NCLS-COMUTIL-00025 Exception in invokeApplicationMain [\{0}]. ::
+  Cause: An unexpected exception occurred.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1610]]NCLS-COMUTIL-00026 The main method signature is invalid. ::
+  Cause: While invoking a main class, an invalid method was found.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1611]]NCLS-COMUTIL-00027 Error while caching the local string manager - package name may be null. ::
+  Cause: An unexpected exception occurred.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1612]]NCLS-COMUTIL-00028 Error while constructing the local string manager object. ::
+  Cause: An unexpected exception occurred.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1613]]NCLS-COMUTIL-00029 Error in local string manager - resource bundle is probably missing. ::
+  Cause: An unexpected exception occurred.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1614]]NCLS-COMUTIL-00030 Error while formating the local string. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1615]]NCLS-COMUTIL-00031 Some IOException occurred ::
+  Cause: An unexpected exception occurred.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1616]]NCLS-COMUTIL-00032 Attempt to delete \{0} failed; the file is reported as non-existent ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1617]]NCLS-COMUTIL-00033 Error attempting to delete \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1618]]NCLS-COMUTIL-00034 Performing gc to try to force file closures ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1619]]NCLS-COMUTIL-00035 Attempt to rename \{0} to \{1} succeeded after \{2} retries ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1620]]NCLS-COMUTIL-00036 Attempt to rename \{0} to \{1} succeeded without any retries ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1621]]NCLS-COMUTIL-00037 Attempt to rename \{0} to \{1} failed after \{2} retries ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1622]]NCLS-COMUTIL-00038 Failed to open jar file: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1623]]NCLS-COMUTIL-00039 Attempt to use non-existent auth token \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1624]]NCLS-COMUTIL-00040 File Lock not released on \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1625]]NCLS-COMUTIL-00041 Bad Network Configuration. DNS can not resolve the hostname: \n\{0} ::
+  Cause: The hostname can't be resolved.
++
+  Action: Set the hostname correctly.
+
+[[sthref1626]]NCLS-COMUTIL-00042 BundleTracker.removedBundle null bundleID for \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1627]]NCLS-COM-01001 Exception \{0} resolving password alias \{1} in property \{2}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1628]]NCLS-COM-01002 Unknown property \{0} found unresolving \{1}. ::
+  Cause: No value was found for a property. This indicates a software
+  problem.
++
+  Action: Check the server logs and contact Oracle support.
+
+[[sthref1629]]NCLS-COM-01003 System property reference missing trailing "'}'" at \{0} in domain.xml. ::
+  Cause: A system property reference in domain.xml is invalid.
++
+  Action: Check the domain.xml file for an invalid system property
+  reference.
+
+[[sthref1630]]NCLS-COM-01004 System property reference missing starting "$'\{'" at \{0} in domain.xml. ::
+  Cause: A system property reference in domain.xml is invalid.
++
+  Action: Check the domain.xml file for an invalid system property
+  reference.
+
+[[sthref1631]]NCLS-JMX--00008 Error while shutting down AMX ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1632]]NCLS-JMX-00001 JMXStartupService and JMXConnectors have been shut down. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1633]]NCLS-JMX-00002 JMXStartupService: Stopped JMXConnectorServer: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1634]]NCLS-JMX-00003 MBean Registration Exception thrown \{0} ::
+  Cause: JMX Connector Server MBean could not be unregistered.
++
+  Action: Take appropriate action based on the exception message.
+
+[[sthref1635]]NCLS-JMX-00004 Instance Not Found Exception thrown \{0} ::
+  Cause: JMX Connector Server MBean instance not found.
++
+  Action: Take appropriate action based on the exception message.
+
+[[sthref1636]]NCLS-JMX-00005 JMXStartupService has started JMXConnector on JMXService URL \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1637]]NCLS-JMX-00006 JMXStartupService has disabled JMXConnector \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1638]]NCLS-JMX-00007 Cannot start JMX connector \{0} due to exception \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1639]]NCLS-JMX-00008 Booting AMX Listener, connection made for \{0}, now booting AMX MBeans ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1640]]NCLS-JMX-00009 Security enabled ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1641]]NCLS-JMX-00010 Attempted access to method \{0} on object \{1} rejected; user was granted \{2} but the operation reports its impact as "\{3}" ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1642]]NCLS-JMX-00011 Error stopping RMIConnector ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1643]]NCLS-JMX-00012 MyRMIJRMPServerImpl: exported on address \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1644]]NCLS-JMX-00013 MyRMIJRMPServerImpl: makeClient on address = \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1645]]NCLS-JMX-00014 Error preparing SSL context ::
+  Cause: As described in the message.
++
+  Action: Please refer to the stack trace
+
+[[sthref1646]]NCLS-JMX-00015 No Key store found for \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1647]]NCLS-JMX-00016 No keystores defined ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1648]]NCLS-JMX-00017 Bad maxCertLength: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1649]]NCLS-JMX-00018 JSSE keystoreload failed for type = \{0} path = \{1} \{2} ::
+  Cause: As described in the message.
++
+  Action: Please refer to the stack trace
+
+[[sthref1650]]NCLS-JMX-00019 All SSL protocol variants disabled for network-listener, using SSL implementation specific defaults ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1651]]NCLS-JMX-00020 All SSL cipher suites disabled for network-listener(s). Using SSL implementation specific defaults ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1652]]NCLS-JMX-00021 Unknown cipher error for cipher \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1653]]NCLS-JMX-00022 Creating a SecureRMIClientSocketFactory @ \{0}with ssl config = \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1654]]NCLS-JMX-00023 Setting SSLParams @ \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1655]]NCLS-JMX-00024 Creating a SecureRMIServerSocketFactory @ \{0} with ssl config = \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1656]]NCLS-JMX-00025 SSLServerSocket \{0} and \{1} created ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1657]]NCLS-JMX-00026 Binding RMI port to single IP address = \{0}, port \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1658]]NCLS-BOOTSTRAP-00001 GlassFish requires JDK \{0}, you are using JDK version \{1}. ::
+  Cause: Incorrect JDK version is used.
++
+  Action: Please use correct JDK version.
+
+[[sthref1659]]NCLS-BOOTSTRAP-00002 Using \{0} as the framework configuration file. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1660]]NCLS-BOOTSTRAP-00003 Could not extract archive \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1661]]NCLS-BOOTSTRAP-00004 Could not find RAR [\{0}] location [\{1}] after extraction. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1662]]NCLS-BOOTSTRAP-00005 Can not start bundle \{0} because it is not contained in the list of installed bundles. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1663]]NCLS-BOOTSTRAP-00006 Failed to start \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1664]]NCLS-BOOTSTRAP-00007 Can't uninstall bundle = \{0} as it's already uninstalled. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1665]]NCLS-BOOTSTRAP-00008 Uninstalled bundle \{0} installed from \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1666]]NCLS-BOOTSTRAP-00009 Can't update bundle = \{0} as it's already uninstalled. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1667]]NCLS-BOOTSTRAP-00010 Updated bundle \{0} from \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1668]]NCLS-BOOTSTRAP-00011 Failed to uninstall bundle \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1669]]NCLS-BOOTSTRAP-00012 Failed to update \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1670]]NCLS-BOOTSTRAP-00013 Failed to install \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1671]]NCLS-BOOTSTRAP-00014 Can not set the start level for \{0} to \{2} as it is already set to \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1672]]NCLS-BOOTSTRAP-00015 Skipping entry \{0} because it is not an absolute URI. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1673]]NCLS-BOOTSTRAP-00016 Skipping entry \{0} due to exception: ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1674]]NCLS-BOOTSTRAP-00017 Starting BundleProvisioner. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1675]]NCLS-BOOTSTRAP-00018 Time taken to locate OSGi framework = \{0} ms. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1676]]NCLS-BOOTSTRAP-00020 Time taken to initialize OSGi framework = \{0} ms. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1677]]NCLS-BOOTSTRAP-00021 Time taken to finish installation of bundles = \{0} ms. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1678]]NCLS-BOOTSTRAP-00022 Time taken to finish starting bundles = \{0} ms. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1679]]NCLS-BOOTSTRAP-00023 Total time taken to start = \{0} ms. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1680]]NCLS-BOOTSTRAP-00024 Time taken to stop = \{0} ms. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1681]]NCLS-BOOTSTRAP-00025 Total time taken = \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1682]]NCLS-BOOTSTRAP-00026 Create bundle provisioner class = \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1683]]NCLS-BOOTSTRAP-00027 Registered \{0} as OSGi service registration: \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1684]]NCLS-BOOTSTRAP-00028 Unregistered \{0} from service registry. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1685]]NCLS-BOOTSTRAP-00029 Exception while unregistering: ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1686]]NCLS-BOOTSTRAP-00030 installLocations = \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1687]]NCLS-BOOTSTRAP-00031 Unable to determine if \{0} is a fragment or not due to ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1688]]NCLS-BOOTSTRAP-00032 Skipping starting of bundles bundles have been provisioned already. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1689]]NCLS-BOOTSTRAP-00033 \{0} : latest file in installation location = \{1} and latest installed bundle = \{2} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1690]]NCLS-BOOTSTRAP-00034 Updating system bundle. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1691]]NCLS-BOOTSTRAP-00035 Provisioning options have changed, recreating the framework with a clean OSGi storage(aka cache). ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1692]]NCLS-BOOTSTRAP-00036 Unable to locate bundle \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1693]]NCLS-BOOTSTRAP-00037 Storage support not available in framework bundle, so can't store bundle ids. This may lead to slower start up time. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1694]]NCLS-BOOTSTRAP-00038 Storage support not available in framework bundle, so can't store provisioning options. This may lead to slower start up time. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1695]]NCLS-BOOTSTRAP-00039 Got an unexpected exception. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1696]]NCLS-CORE-00001 Cannot decode parameter \{0} = \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1697]]NCLS-CORE-00002 Cannot instantiate model for command \{0} ::
+  Cause: The service that implements the command could not be loaded.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1698]]NCLS-CORE-00003 Exception while running a command ::
+  Cause: An unexpected exception occurred while running a command.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1699]]NCLS-CORE-00004 Unable to get an instance of ClusterExecutor; Cannot dynamically reconfigure instances ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1700]]NCLS-CORE-00005 Can't delete local password file: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1701]]NCLS-CORE-00006 Can't create local password file: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1702]]NCLS-CORE-00007 Timeout occurred when processing Admin Console request. ::
+  Cause: A request for a lock timed out while processing an admin
+  console request.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1703]]NCLS-CORE-00008 Cannot process admin console request. ::
+  Cause: InterruptedException occurred while the service thread is
+  running.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1704]]NCLS-CORE-00009 Unable to serve resource: \{0}. Cause: \{1} ::
+  Cause: An I/O error occurred while serving a resource request.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1705]]NCLS-CORE-00010 Resource not found: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1706]]NCLS-CORE-00011 Console cannot be initialized due to an exception. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1707]]NCLS-CORE-00012 Cannot write property ''\{0} = \{1}'' for AdminService in domain.xml, exception: \{2} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1708]]NCLS-CORE-00013 Shutdown procedure finished ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1709]]NCLS-CORE-00014 Shutdown required ::
+  Cause: An unexpected exception occurred while changing run levels. A
+  shutdown is required.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1710]]NCLS-CORE-00015 Shutdown requested ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1711]]NCLS-CORE-00016 Startup service failed to start ::
+  Cause: An unexpected exception occurred while starting the startup
+  service. A shutdown is required.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1712]]NCLS-CORE-00017 \{0} (\{1}) startup time : \{2} (\{3}ms), startup services(\{4}ms), total(\{5}ms) ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1713]]NCLS-CORE-00018 TOTAL TIME INCLUDING CLI: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1714]]NCLS-CORE-00019 Shutting down server due to startup exception ::
+  Cause: An unexpected exception occurred while starting the server. A
+  shutdown is required.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1715]]NCLS-CORE-00020 Timed out, ignoring some startup service status ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1716]]NCLS-CORE-00021 Unexpected exception during startup ::
+  Cause: An unexpected exception occurred while starting the server.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1717]]NCLS-CORE-00022 Loading application \{0} done in \{1} ms ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1718]]NCLS-CORE-00023 Enable of application \{0} completed with a warning: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1719]]NCLS-CORE-00024 Error during enabling ::
+  Cause: An unexpected exception occurred while enabling an application.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1720]]NCLS-CORE-00025 Error during disabling ::
+  Cause: An unexpected exception occurred while disabling an
+  application.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1721]]NCLS-CORE-00026 Exception during lifecycle processing ::
+  Cause: An unexpected exception occurred during lifecycle processing.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1722]]NCLS-CORE-00027 ApplicationMetaDataProvider \{0} requires \{1} but no other ApplicationMetaDataProvider provides it ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1723]]NCLS-CORE-00028 Inconsistent state - nothing is providing \{0} yet it passed validation ::
+  Cause: An unexpected condition during lifecycle processing.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1724]]NCLS-CORE-00029 Cannot start container \{0}, exception: \{1} ::
+  Cause: An unexpected condition during lifecycle processing.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1725]]NCLS-CORE-00030 Cannot release container \{0}, exception \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1726]]NCLS-CORE-00031 Error while closing deployable artifact \{0}, exception: \{1} ::
+  Cause: An unexpected exception occurred during lifecycle processing.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1727]]NCLS-CORE-00032 Error while expanding archive file ::
+  Cause: An unexpected exception occurred during lifecycle processing.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1728]]NCLS-CORE-00033 Cannot find sniffer for module type: \{0} ::
+  Cause: An unexpected condition occurred during lifecycle processing.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1729]]NCLS-CORE-00034 Cannot find any sniffer for deployed app: \{0} ::
+  Cause: An unexpected condition occurred during lifecycle processing.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1730]]NCLS-CORE-00035 Exception occurred while satisfying optional package dependencies ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1731]]NCLS-CORE-00036 Cannot delete created temporary file \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1732]]NCLS-CORE-00037 Source is not a directory, using temporary location \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1733]]NCLS-CORE-00038 Cannot find the application type for the artifact at: \{0}. Was the container or sniffer removed? ::
+  Cause: An unexpected condition occurred while loading an application.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1734]]NCLS-CORE-00039 Exception during application deployment ::
+  Cause: An unexpected exception occurred while deploying an
+  application.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1735]]NCLS-CORE-00040 Cannot determine original location for application: \{0} ::
+  Cause: A URL syntax error occurred.
++
+  Action: Check the application for proper syntax.
+
+[[sthref1736]]NCLS-CORE-00041 Application deployment failed: \{0} ::
+  Cause: The deployment command for an application failed as indicated
+  in the message.
++
+  Action: Check the application and redeploy.
+
+[[sthref1737]]NCLS-CORE-00042 IOException while opening deployed artifact ::
+  Cause: An unexpected exception occurred while deploying an
+  application.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1738]]NCLS-CORE-00043 Application previously deployed is not at its original location any more: \{0} ::
+  Cause: An unexpected exception occurred while loading an application.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1739]]NCLS-CORE-00044 System property called \{0} is null, is this intended? ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1740]]NCLS-CORE-00045 Invalid classpath entry for common class loader ignored: \{0}, exception: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1741]]NCLS-CORE-00046 Cannot find javadb client jar file, derby jdbc driver will not be available by default. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1742]]NCLS-CORE-00047 CommonClassLoaderServiceImpl is unable to process \{0} because of an exception: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1743]]NCLS-CORE-00048 Invalid InputStream returned for \{0} ::
+  Cause: Unable to retrieve an entry from the archive.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1744]]NCLS-CORE-00049 Exception while processing \{0} inside \{1} of size \{2}, exception: \{3} ::
+  Cause: An unexpected exception occurred while processing an archive.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1745]]NCLS-CORE-00050 Cannot open sub-archive \{0} from \{1} ::
+  Cause: An unexpected exception occurred while processing an archive.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1746]]NCLS-CORE-00051 Cannot close sub archive \{0}, exception: \{1} ::
+  Cause: An unexpected exception occurred while closing an archive.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1747]]NCLS-CORE-00052 Exception loading lifecycle module [\{0}]; [\{1}] ::
+  Cause: An unexpected exception occurred while loading a lifecycle
+  module.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1748]]NCLS-CORE-00053 Lifecycle module [\{0}] threw ServerLifecycleException, exception: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1749]]NCLS-CORE-00054 Lifecycle module [\{0}] threw an Exception; please check your lifecycle module. Exception: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1750]]NCLS-CORE-00055 GrizzlyService stop-proxy problem ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1751]]NCLS-CORE-00056 Unable to start the server. Closing all ports ::
+  Cause: An unexpected exception occurred while starting the grizzly
+  service.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1752]]NCLS-CORE-00057 Exception closing port: \{0}, exception: \{1} ::
+  Cause: An unexpected exception occurred while closing a port.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1753]]NCLS-CORE-00058 Network listener \{0} on port \{1} disabled per domain.xml ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1754]]NCLS-CORE-00059 GrizzlyService endpoint registration problem ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1755]]NCLS-CORE-00060 Skip registering endpoint with non existent virtual server: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1756]]NCLS-CORE-00061 Attempting to start the \{0} container. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1757]]NCLS-CORE-00062 Done with starting \{0} container in \{1} ms. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1758]]NCLS-CORE-00063 Could not start container, no exception provided. ::
+  Cause: The container could not be started.
++
+  Action: Ensure the libraries for the container are available.
+
+[[sthref1759]]NCLS-CORE-00064 Exception while starting container \{0}, exception: \{1} ::
+  Cause: An exception occurred while attempting to start the container.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1760]]NCLS-CORE-00065 Exception while mapping the request. ::
+  Cause: An exception occurred while mapping a request to the container.
++
+  Action: Please resolve issues mentioned in the stack trace.
+
+[[sthref1761]]NCLS-CORE-00066 Cannot add new configuration to the Config element ::
+  Cause: An exception occurred while adding the container configuration
+  to the domain.xml.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1762]]NCLS-CORE-00067 Exception while enabling or disabling the autodeployment of applications ::
+  Cause: An exception occurred while enabling or disabling the
+  autodeployment of applications.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1763]]NCLS-CORE-00068 Exception while sending an event. ::
+  Cause: An exception occurred while sending an event.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1764]]NCLS-CORE-00069 Exception while dispatching an event ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1765]]NCLS-CORE-00070 An exception occurred while stopping the server, continuing. ::
+  Cause: An exception occurred while stopping the server.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1766]]NCLS-CORE-00071 The ManagedJobConfig bean \{0} was changed by \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1767]]NCLS-CORE-00072 Cleaning Job \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1768]]NCLS-CORE-00073 Initializing Job Cleanup service ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1769]]NCLS-CORE-00074 Initializing Managed Config bean ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1770]]NCLS-CORE-00075 Scheduling Cleanup ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1771]]NCLS-CORE-00076 Exception when cleaning jobs caused ::
+  Cause: An exception occured when cleaning the managed jobs
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1772]]NCLS-CORE-00077 -passwordfile specified, but the actual file was not, ignoring ... ::
+  Cause: A software error is causing an incorrect argument sequence.
++
+  Action: No action necessary.
+
+[[sthref1773]]NCLS-CORE-00078 Invalid context root for the admin console application, using default: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1774]]NCLS-CORE-00079 Admin Console Adapter: context root: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1775]]NCLS-CORE-00080 Failed to configure the ManagedJobConfig bean ::
+  Cause: While running the configure-managed-jobs command, a write
+  transaction to the ManagedJobConfig bean failed.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1776]]NCLS-CORE-00081 Unable to get the ManagedJobConfig bean. ::
+  Cause: While running the configure-managed-jobs command, access to the
+  ManagedJobConfig bean failed.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1777]]NCLS-CORE-00082 Exiting after upgrade ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1778]]NCLS-CORE-00083 Exception while attempting to shutdown after upgrade ::
+  Cause: An exception occured when shutting down the server after an
+  upgrade.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1779]]NCLS-CORE-00084 Cannot find port information from domain.xml ::
+  Cause: No port value is available in the NetworkListener config bean
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1780]]NCLS-CORE-00085 Cannot parse port value: \{0}, using port 8080 ::
+  Cause: There is an invalid port value in the domain.xml file.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1781]]NCLS-CORE-00086 Unknown address \{0} ::
+  Cause: There is an invalid address value in the domain.xml file.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1782]]NCLS-CORE-00087 Grizzly Framework \{0} started in: \{1}ms - bound to [\{2}] ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1783]]NCLS-CORE-00088 Exception during postConstruct of DynamicReloadService ::
+  Cause: An unexpected exception occured.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1784]]NCLS-CORE-00089 Cannot determine host name, will use localhost exclusively ::
+  Cause: An unexpected exception occured.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1785]]NCLS-CORE-00090 Internal Server error: \{0} ::
+  Cause: An unexpected exception occured.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1786]]NCLS-CORE-00091 Unable to set customized error page ::
+  Cause: An unexpected exception occured.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1787]]NCLS-CORE-00092 Server shutdown initiated ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1788]]NCLS-CORE-00093 Problem while attempting to install admin console! ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1789]]NCLS-CORE-00094 Unable to load checkpoint ::
+  Cause: An unexpected exception occured.
++
+  Action: Check the system logs and contact Oracle support.
+
+[[sthref1790]]NCLS-CORE-00095 Resuming command \{0} from its last checkpoint. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1791]]NCLS-CORE-00096 Automatically resumed command \{0} finished with exit code \{1}. \nMessage: \{2} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1792]]NCLS-LOGGING-00001 Cannot read logging configuration file. ::
+  Cause: An exception has occurred while reading the logging
+  configuration file.
++
+  Action: Take appropriate action based on the exception message.
+
+[[sthref1793]]NCLS-LOGGING-00002 Could not apply the logging configuration changes. ::
+  Cause: There was an exception thrown while applying the logging
+  configuration changes.
++
+  Action: Take appropriate action based on the exception message.
+
+[[sthref1794]]NCLS-LOGGING-00003 Updated logger levels successfully. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1795]]NCLS-LOGGING-00004 The logging configuration file \{0} has been deleted. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1796]]NCLS-LOGGING-00005 Error executing query to fetch log records. ::
+  Cause: There was an exception thrown while executing log query.
++
+  Action: Take appropriate action based on the exception message.
+
+[[sthref1797]]NCLS-LOGGING-00006 The syslog handler could not be initialized. ::
+  Cause: There was an exception thrown while initializing the syslog
+  handler.
++
+  Action: Take appropriate action based on the exception message.
+
+[[sthref1798]]NCLS-LOGGING-00007 There was an error sending a log message to syslog. ::
+  Cause: There was an exception thrown while sending a log message to
+  the syslog.
++
+  Action: Take appropriate action based on the exception message.
+
+[[sthref1799]]NCLS-LOGGING-00008 The log file \{0} for the instance does not exist. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1800]]NCLS-LOGGING-00009 Running GlassFish Version: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1801]]NCLS-LOGGING-00010 Server log file is using Formatter class: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1802]]NCLS-LOGGING-00011 Failed to parse the date: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1803]]NCLS-LOGGING-00012 An invalid value \{0} has been specified for the \{1} attribute in the logging configuration. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1804]]NCLS-LOGGING-00013 The formatter class \{0} could not be instantiated. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1805]]NCLS-DEPLOYMENT-00040 Error occurred: \{0} ::
+  Cause: An exception was caught when the operation was attempted
++
+  Action: See the exception to determine how to fix the error
+
+[[sthref1806]]NCLS-DEPLOYMENT-02025 Exception caught: \{0} ::
+  Cause: An exception was caught when the application was autodeployed.
++
+  Action: See the exception to determine how to fix the error
+
+[[sthref1807]]NCLS-DEPLOYMENT-02026 Autoundeploying application: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1808]]NCLS-DEPLOYMENT-02027 Selecting file \{0} for autodeployment ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1809]]NCLS-DEPLOYMENT-02028 Error parsing configured polling-interval-in-seconds \{0} as an integer; \{1} \{2} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1810]]NCLS-DEPLOYMENT-02029 Exception caught: \{0} ::
+  Cause: An exception was caught when the application was autodeployed.
++
+  Action: See the exception to determine how to fix the error
+
+[[sthref1811]]NCLS-DEPLOYMENT-02030 Error processing configuration change of \{0} from \{1} to \{2}; \{3} \{4} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1812]]NCLS-DEPLOYMENT-02031 Configured timeout value of \{0} second\{0,choice,0#seconds|1#second|1<seconds} will be used but seems very large ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1813]]NCLS-DEPLOYMENT-02032 Configured timeout value of \{0} second\{0,choice,0#seconds|1#second|1<seconds} is too small; using previous value of \{1}second \{1,choice,0#seconds|1#second|1<seconds} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1814]]NCLS-DEPLOYMENT-02033 Could not convert configured timeout value of "\{0}" to a number; using previous value of \{1} second\{1,choice,0#seconds|1#second|1<seconds ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1815]]NCLS-DEPLOYMENT-02034 Attempt to create file \{0} failed; no further information. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1816]]NCLS-DEPLOYMENT-02035 \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1817]]NCLS-DEPLOYMENT-02036 \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1818]]NCLS-DEPLOYMENT-02037 Error occurred: ::
+  Cause: An exception was caught when the operation was attempted
++
+  Action: See the exception to determine how to fix the error
+
+[[sthref1819]]NCLS-DEPLOYMENT-02038 Attempt to delete file \{0} failed; no further information. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1820]]NCLS-DEPLOYMENT-02039 Attempt to create file \{0} failed; no further information. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1821]]NCLS-DEPLOYMENT-02041 Attempt to create file \{0} failed; no further information. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1822]]NCLS-DEPLOYMENT-02042 Attempt to set last modified date/time of file \{0} failed; no further information. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1823]]NCLS-DEPLOYMENT-02043 Attempt to delete file \{0} failed; no further information. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1824]]NCLS-DEPLOYMENT-02044 Attempt to create directory \{0} failed; no further information. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1825]]NCLS-DEPLOYMENT-00001 Exception while scanning \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1826]]NCLS-DEPLOYMENT-00002 Error scan jar entry \{0} \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1827]]NCLS-DEPLOYMENT-00003 Failed to scan archive for annotations ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1828]]NCLS-DEPLOYMENT-00004 Exception caught: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1829]]NCLS-DEPLOYMENT-00005 Could not expand entry \{0} into destination \{1} ::
+  Cause: An exception was caught when the entry was expanded
++
+  Action: See the exception to determine how to fix the error
+
+[[sthref1830]]NCLS-DEPLOYMENT-00006 Cannot find archive \{0} referenced from archive \{1}, it will be ignored for annotation scanning ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1831]]NCLS-DEPLOYMENT-00007 Exception caught \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1832]]NCLS-DEPLOYMENT-00008 Error in jar entry \{0}: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1833]]NCLS-DEPLOYMENT-00009 Failed to scan archive for annotations: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1834]]NCLS-DEPLOYMENT-00010 Exception caught \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1835]]NCLS-DEPLOYMENT-00011 Optional package \{0} does not exist or its Specification-Version does not match. Unable to satisfy dependency for \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1836]]NCLS-DEPLOYMENT-00012 Optional package dependency satisfied for \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1837]]NCLS-DEPLOYMENT-00013 Error in opening optional package file \{0} due to exception: \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1838]]NCLS-DEPLOYMENT-00014 Exception occurred : \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1839]]NCLS-DEPLOYMENT-00015 Specification-Version for the
+optional package [ \{0} ] in the jarfile [ \{1} ] is not specified.
+Please provide a valid specification version for this optional package
+::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1840]]NCLS-DEPLOYMENT-00016 Skipping extension processing for \{0} due to error: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1841]]NCLS-DEPLOYMENT-00017 Exception: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1842]]NCLS-DEPLOYMENT-00018 unexpected error in getting urls ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1843]]NCLS-DEPLOYMENT-00019 file open failure; file = \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1844]]NCLS-DEPLOYMENT-00020 exception message: \{0} -- invalid zip file: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1845]]NCLS-DEPLOYMENT-00021 Cannot find an archive implementation for \{0} ::
+  Cause: The type of archive being created is not supported.
++
+  Action: Determine the type of archive requested to see whether another
+  type can be used.
+
+[[sthref1846]]NCLS-DEPLOYMENT-00022 Attempt to list files in \{0} failed, perhaps because that is not a valid directory or because file permissions do not allow GlassFish to access it ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1847]]NCLS-DEPLOYMENT-00023 Ignoring \{0} because the containing archive \{1} recorded it as a pre-existing stale file ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1848]]NCLS-DEPLOYMENT-00024 Exception while getting manifest classpath: ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1849]]NCLS-DEPLOYMENT-00025 Artifact \{0} identified for inclusion in app clients after one or more app clients were generated. ::
+  Cause: The application might specify that modules are to be processed
+  in the order they appear in the application and an app client module
+  appears before a module that creates an artifact to be included in app
+  clients.
++
+  Action: Make sure, if the application specifies initialize-in-order as
+  true, that the app clients appear after other modules which generated
+  artifacts that should be accessible to app clients.
+
+[[sthref1850]]NCLS-DEPLOYMENT-00026 Artifact with relative path \{0} expected at \{1} but does not exist or cannot be read ::
+  Cause: The server is attempting to register an artifact to be included
+  in the generated client JAR but the artifact does not exist or cannot
+  be read
++
+  Action: This is an internal server error. Please file a bug report.
+
+[[sthref1851]]NCLS-DEPLOYMENT-00027 Artifact with relative path \{0} from \{1} collides with an existing artifact from file \{2} ::
+  Cause: The server has created more than one artifact with the same
+  relative path to be included in the generated client JAR file
++
+  Action: This is an internal server error. Please file a bug report.
+
+[[sthref1852]]NCLS-DEPLOYMENT-00045 Cannot convert classpath to URL \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1853]]NCLS-DEPLOYMENT-00046 invalidSpecVersion: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1854]]NCLS-DIAG-03000 Can not fulfill request to get diagnostics context. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1855]]NCLS-DIAG-03001 An exception has prevented a diagnostics context from being created. ::
+  Cause: (see underlying exception)
++
+  Action: (see underlying exception)
+
+[[sthref1856]]NCLS-MON-00301 Cannot process XML ProbeProvider, xml = \{0}, \nException: \{1} ::
+  Cause: Possible syntax error in the ProbeProvider XML
++
+  Action: Check the syntax of ProbeProvider XML
+
+[[sthref1857]]NCLS-MON-00302 Cannot resolve the paramTypes, unable to create this probe - \{0} ::
+  Cause: Unknown Java type for the param
++
+  Action: Try giving a fully qualified name for the type
+
+[[sthref1858]]NCLS-MON-00303 Cannot resolve the paramTypes of the probe - \{0}, ::
+  Cause: Unknown Java type for the param
++
+  Action: Try giving a fully qualified name for the type
+
+[[sthref1859]]NCLS-MON-00304 Can not match the Probe method (\{0}) with any method in the DTrace object ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1860]]NCLS-MON-00305 Invalid parameters for ProbeProvider, ignoring \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1861]]NCLS-MON-00306 No Probe Provider found in Probe Provider XML ::
+  Cause: Invalid Probe Provider XML
++
+  Action: Check Probe Provider XML syntax
+
+[[sthref1862]]NCLS-MON-00501 invalid pid, start flashlight-agent using asadmin enable-monitoring with --pid option, you may get pid using jps command ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1863]]NCLS-MON-00502 flashlight-agent.jar does not exist under \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1864]]NCLS-MON-00503 flashlight-agent.jar directory \{0} does not exist ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1865]]NCLS-MON-00504 Encountered exception during agent attach ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1866]]NCLS-MON-00505 Error transforming Probe: \{0} ::
+  Cause: Exception - see message
++
+  Action: Check probe syntax
+
+[[sthref1867]]NCLS-MON-00506 Error unregistering ProbeProvider ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1868]]NCLS-MON-00507 Error during re-transformation ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1869]]NCLS-MON-00508 Error during registration of FlashlightProbe ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1870]]NCLS-MON-00509 Error attempting to write the re-transformed class data ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1871]]NCLS-MON-00510 Monitoring is disabled because there is no Attach API from the JVM available ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1872]]NCLS-MON-00511 Error while getting Instrumentation object from ProbeAgentMain ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1873]]NCLS-MON-00512 DTrace is not available. ::
+  Cause: This is caused if following are missing: \n1. JDK 7 is required
+  to run DTrace\n2. glassfish-dtrace.jar value-add is required for
+  DTrace
++
+  Action: Run with JDK 7 and glassfish-dtrace.jar
+
+[[sthref1874]]NCLS-MON-00513 DTrace is not supported. ::
+  Cause: This is caused if: \n1. Operating System does not support
+  DTrace. Currently you must have Solaris 10 or higher for DTrace
+  support.
++
+  Action: Run with Solaris 10 or higher
+
+[[sthref1875]]NCLS-MON-00514 DTrace is connected and ready. ::
+  Cause: This is caused if: \n1. Operating System does not support
+  DTrace. Currently you must have Solaris 10 or higher for DTrace
+  support.
++
+  Action: Run with Solaris 10 or higher
+
+[[sthref1876]]NCLS-MON-00515 Unexpected exception invoking DTrace ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1877]]NCLS-OSGI-00001 Decorated url = \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1878]]NCLS-RESOURCE-00001 Unexpected exception in loading class [\{0}] by classloader. ::
+  Cause: Classpath is not properly set in the domain.xml or application
+  server process does not have read permissions on the directory that
+  holds the classes/jar.
++
+  Action: Check that the classpath attribute in the java-config includes
+  a reference to the jar/package directory for the class or you do not
+  have read permissions on the directory that holds the classes/jar.
+
+[[sthref1879]]NCLS-RESOURCE-00002 Unexpected exception in loading class by classloader [\{0}]. ::
+  Cause: Classpath is not properly set in the domain.xml or you do not
+  have read permissions on the directory that holds the classes/jar.
++
+  Action: Check that the classpath attribute in the java-config includes
+  a reference to the jar/package directory for the class or check that
+  the directory where the classes/jars reside have read permission for
+  the application server process
+
+[[sthref1880]]NCLS-RESOURCE-00003 Cannot bind resource [\{0}] to naming manager. Following exception occurred [\{1}]. ::
+  Cause: Please check the exception to get more details.
++
+  Action: Please check the exception to resolve the same.
+
+[[sthref1881]]NCLS-RESOURCE-00004 Unable to deploy resource [\{0}] due to following exception: [\{1}]. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1882]]NCLS-RESOURCE-00005 Unable to undeploy resource, no Resource Deployer for [\{0}]. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1883]]NCLS-RESOURCE-00006 Unable to undeploy resource [\{0}] due to following exception: [\{1}]. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1884]]NCLS-RESOURCE-00007 Error while handling Change event due to following exception: [\{0}]. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1885]]NCLS-RESOURCE-00008 Error while handling Remove event due to following exception: [\{0}]. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1886]]NCLS-RESOURCE-00009 Unable to find ResourceDeployer for [\{0}]. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1887]]NCLS-SECURITY-01000 Caught exception. ::
+  Cause: As described in the message.
++
+  Action: Check the server logs and contact Oracle support.
+
+[[sthref1888]]NCLS-SECURITY-01001 Java security manager is enabled. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1889]]NCLS-SECURITY-01002 Java security manager is disabled. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1890]]NCLS-SECURITY-01004 An I/O error occurred during copying of server config files. ::
+  Cause: Copying server config files.
++
+  Action: Check the server logs and contact Oracle support.
+
+[[sthref1891]]NCLS-SECURITY-01005 XML processing error occurred during copying of server config files. ::
+  Cause: The XML file(s) may not be well formed.
++
+  Action: Make sure the XML file(s) are well formed.
+
+[[sthref1892]]NCLS-SECURITY-01010 Entering Security Startup Service. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1893]]NCLS-SECURITY-01011 Security Service(s) started successfully. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1894]]NCLS-SECURITY-01012 Error obtaining keystore and truststore files for embedded server. ::
+  Cause: Saving the keystore and/or truststore to the temporary
+  directory.
++
+  Action: Check if the user.home directory is writable.
+
+[[sthref1895]]NCLS-SECURITY-01013 An I/O error occurred while copying the security config files. ::
+  Cause: Copying security files to instanceRoot/config.
++
+  Action: Check the server logs and contact Oracle support.
+
+[[sthref1896]]NCLS-SECURITY-01014 An error occurred while upgrading the security config files. ::
+  Cause: Upgrade security config files from a previous version.
++
+  Action: Check the server logs and contact Oracle support.
+
+[[sthref1897]]NCLS-SECURITY-01015 Upgrade from v2 EE to v3.1 requires manual steps. Please refer to the v3.1 Upgrade Guide for details. ::
+  Cause: Upgrade security config files from a previous version.
++
+  Action: Please refer to the v3.1 Upgrade Guide for details.
+
+[[sthref1898]]NCLS-SECURITY-01050 Certificate authentication requires certificate realm. ::
+  Cause: Unknown realm type.
++
+  Action: Check server configuration
+
+[[sthref1899]]NCLS-SECURITY-01100 Disabled realm [\{0}] due to errors. ::
+  Cause: No realms available.
++
+  Action: Check the server logs and contact Oracle support.
+
+[[sthref1900]]NCLS-SECURITY-01101 No realms available. Authentication services disabled. ::
+  Cause: No realms available.
++
+  Action: Check the server logs and contact Oracle support.
+
+[[sthref1901]]NCLS-SECURITY-01104 Error while obtaining private subject credentials: \{0} ::
+  Cause: Private Credentials of Subject not available.
++
+  Action: Please check if the private credentials are available.
+
+[[sthref1902]]NCLS-SECURITY-01105 A PasswordCredential was required but not provided. ::
+  Cause: PasswordCredential was required, but not supplied.
++
+  Action: Please check if the password is provided.
+
+[[sthref1903]]NCLS-SECURITY-01115 Realm [\{0}] of classtype [\{1}] successfully created. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1904]]NCLS-SECURITY-01117 Realm [\{0}] successfully updated. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1905]]NCLS-SECURITY-01119 Realm [\{0}] successfully deleted. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1906]]NCLS-SECURITY-01140 Policy provider configuration overridden by property \{0} with value \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1907]]NCLS-SECURITY-01141 Requested jacc-provider [\{0}] is not configured in domain.xml. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1908]]NCLS-SECURITY-01142 Error while reading policy-provider in domain.xml. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1909]]NCLS-SECURITY-01143 Loading policy provider \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1910]]NCLS-SECURITY-01144 Error while installing policy provider: \{0}. ::
+  Cause: Setting the system wide policy.
++
+  Action: Make sure there's sufficient permission to set the policy.
+
+[[sthref1911]]NCLS-SECURITY-01145 No policy provider defined. Will use the default JDK Policy implementation. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1912]]NCLS-SECURITY-01146 Policy configuration factory overridden by property \{0} with value \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1913]]NCLS-SECURITY-01147 Policy configuration factory not defined. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1914]]NCLS-SECURITY-01149 Policy provider configuration overridden by property \{0} with value \{1}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1915]]NCLS-SECURITY-01150 Failed to get the group names for user \{0} in realm \{1}: \{2}. ::
+  Cause: Operation now allowed
++
+  Action: Check the server logs and contact Oracle support
+
+[[sthref1916]]NCLS-SECURITY-01151 Failed to get the group names for user \{0} in realm \{1}: \{2}. ::
+  Cause: Obtain the group names for a nonexistent user
++
+  Action: Make sure the user is valid
+
+[[sthref1917]]NCLS-SECURITY-05019 ERROR: Unknown credential provided. Class: [\{0}]. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1918]]NCLS-SECURITY-05036 Exception in getting security context. ::
+  Cause: There was an exception obtaining the default security context.
++
+  Action: Check the server logs and contact Oracle support
+
+[[sthref1919]]NCLS-SECURITY-05038 Default user login error. ::
+  Cause: There was an exception while authenticating the default caller
+  principal.
++
+  Action: Check the server logs and contact Oracle support.
+
+[[sthref1920]]NCLS-SECURITY-05039 Exception entering name and password for security. ::
+  Cause: An exception occurred while processing username and password
+  for security.
++
+  Action: An exception occurred while processing username and password
+  for security.
+
+[[sthref1921]]NCLS-SECURITY-05043 Exception in security accesscontroller action. ::
+  Cause: Running a privileged action
++
+  Action: Check the server logs and contact Oracle support
+
+[[sthref1922]]NCLS-SECURITY-05046 Audit: Authentication refused for [\{0}]. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1923]]NCLS-SECURITY-05048 doAsPrivileged AuthPermission required to set SecurityContext. ::
+  Cause: Setting the SecurityContext in the current thread
++
+  Action: Check the server logs and contact Oracle support
+
+[[sthref1924]]NCLS-SECURITY-05049 Unexpected exception while attempting to set SecurityContext. ::
+  Cause: There was an unexpected exception while setting the security
+  context.
++
+  Action: Check the server logs and contact Oracle support.
+
+[[sthref1925]]NCLS-SECURITY-05050 Could not change the SecurityContext. ::
+  Cause: Changing the current SecurityContext.
++
+  Action: Check the server logs and contact Oracle support
+
+[[sthref1926]]NCLS-SECURITY-05052 Subject is null. ::
+  Cause: null Subject used in SecurityContext construction.
++
+  Action: Make sure the Subject is not null
+
+[[sthref1927]]NCLS-SECURITY-05055 Role mapping conflicts found in application \{0}. Some roles may not be mapped. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1928]]NCLS-SECURITY-05056 Error converting certificate \{0}: \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1929]]NCLS-SECURITY-05101 Failed to instantiate the SecurityLifeCycle. ::
+  Cause: As described in the message.
++
+  Action: Check the server logs and contact Oracle support.
+
+[[sthref1930]]NCLS-SECURITY-05200 Error enabling secure admin. ::
+  Cause: Enable secure admin.
++
+  Action: Check your command usage.
+
+[[sthref1931]]NCLS-SECURITY-05201 Error disabling secure admin. ::
+  Cause: Disable secure admin.
++
+  Action: Check your command usage.
+
+[[sthref1932]]NCLS-SECURITY-05300 IIOP Security - error importing a name: $\{0}. ::
+  Cause: Importing a name in IIOP.
++
+  Action: Check the server logs and contact Oracle support.
+
+[[sthref1933]]NCLS-SECURITY-05301 IIOP Security - error creating an exported name: $\{0}. ::
+  Cause: Creating an exported name in IIOP.
++
+  Action: Check the server logs and contact Oracle support.
+
+[[sthref1934]]SEC-PROV-00100 Authorization Provider supplied an invalid resource: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1935]]SEC-PROV-00150 Role Mapping Provider supplied an invalid resource: \{0} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1936]]SEC-SVCS-00100 Authorization Service has successfully initialized. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1937]]SEC-SVCS-00101 Authorization Service initialization failed, exception \{0}, message \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1938]]SEC-SVCS-00102 Unable to decode URI: \{0}. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1939]]SEC-SVCS-00150 Role Mapping Service has successfully initialized. ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1940]]SEC-SVCS-00151 Role Mapping Service initialization failed, exception \{0}, message \{1} ::
+  Cause: As described in the message.
++
+  Action: Resolve the situation described in the message, if necessary.
+
+[[sthref1941]]NCLS-SECURITY-05054 The SSL certificate has expired: \{0} ::
+  Cause: Certificate expired.
++
+  Action: Check the expiration date of the certificate.
+
+
diff --git a/docs/error-messages-reference/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png b/docs/error-messages-reference/src/main/asciidoc/img/eclipse_foundation_logo_tiny.png
similarity index 100%
rename from docs/error-messages-reference/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png
rename to docs/error-messages-reference/src/main/asciidoc/img/eclipse_foundation_logo_tiny.png
Binary files differ
diff --git a/docs/error-messages-reference/src/main/asciidoc/preface.adoc b/docs/error-messages-reference/src/main/asciidoc/preface.adoc
new file mode 100644
index 0000000..60b0ade
--- /dev/null
+++ b/docs/error-messages-reference/src/main/asciidoc/preface.adoc
@@ -0,0 +1,325 @@
+type=page
+status=published
+title=Preface
+next=error-messages.html
+prev=title.html
+~~~~~~
+
+= Preface
+
+[[GSEMR00001]][[gkbbw]]
+[[preface]]
+== Preface
+
+[NOTE]
+====
+This documentation is part of the Java Enterprise Edition contribution
+to the Eclipse Foundation and is not intended for use in relation to
+Java Enterprise Edition or Orace GlassFish. The documentation is in the
+process of being revised to reflect the new Jakarta EE branding.
+Additional changes will be made as requirements and procedures evolve
+for Jakarta EE. Where applicable, references to Jakarta EE or Java
+Enterprise Edition should be considered references to Jakarta EE.
+
+Please see the Title page for additional license information.
+====
+
+This document describes error messages that you might encounter when
+using {productName}.
+
+This preface contains information about and conventions for the entire
+{productName} ({productName}) documentation set.
+
+{productName} 7 is developed through the GlassFish project
+open-source community at https://github.com/eclipse-ee4j/glassfish.
+The GlassFish project provides a structured process for developing the
+{productName} platform that makes the new features of the Jakarta EE
+platform available faster, while maintaining the most important feature
+of Jakarta EE: compatibility. It enables Java developers to access the
+{productName} source code and to contribute to the development of the
+{productName}.
+
+The following topics are addressed here:
+
+* link:#BABJIEEB[{productName} Documentation Set]
+* link:#BABBDGAE[Related Documentation]
+* link:#BABGCFGH[Typographic Conventions]
+* link:#BABHAGID[Symbol Conventions]
+
+[[BABJIEEB]][[glassfish-server-documentation-set]]
+
+=== {productName} Documentation Set
+
+The {productName} documentation set describes deployment planning and
+system installation. For an introduction to {productName}, refer to
+the books in the order in which they are listed in the following table.
+
+[width="100%",cols="<30%,<70%",options="header",]
+|===
+|Book Title |Description
+|link:release-notes.html#GSRLN[Release Notes] |Provides late-breaking information about
+the software and the documentation and includes a comprehensive,
+table-based summary of the supported hardware, operating system, Java
+Development Kit (JDK), and database drivers.
+
+|link:quick-start-guide.html#GSQSG[Quick Start Guide]
+|Explains how to get started with the {productName} product.
+
+|link:installation-guide.html#GSING[Installation Guide]
+|Explains how to install the software and its components.
+
+|link:upgrade-guide.html#GSUPG[Upgrade Guide]
+|Explains how to upgrade to the latest version of {productName}.
+This guide also describes differences between adjacent product releases and configuration
+options that can result in incompatibility with the product specifications.
+
+|link:deployment-planning-guide.html#GSPLG[Deployment Planning Guide]
+|Explains how to build a production deployment of {productName} that meets the requirements of
+your system and enterprise.
+
+|link:administration-guide.html#GSADG[Administration Guide]
+|Explains how to configure, monitor, and manage {productName} subsystems and components
+from the command line by using the link:reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] utility.
+Instructions for performing these tasks from the Administration Console are provided
+in the Administration Console online help.
+
+|link:security-guide.html#GSSCG[Security Guide]
+|Provides instructions for configuring and administering {productName} security.
+
+|link:application-deployment-guide.html#GSDPG[Application Deployment Guide]
+|Explains how to assemble and deploy applications to the {productName} and provides information
+about deployment descriptors.
+
+|link:application-development-guide.html#GSDVG[Application Development Guide]
+|Explains how to create and implement Java Platform, Enterprise Edition (Jakarta EE platform)
+applications that are intended to run on the {productName}.
+These applications follow the open Java standards model for Jakarta EE components
+and application programmer interfaces (APIs).
+This guide provides information about developer tools, security, and debugging.
+
+|link:add-on-component-development-guide.html#GSACG[Add-On Component Development Guide]
+|Explains how to use published interfaces of {productName} to develop add-on components
+for {productName}.
+This document explains how to perform only those tasks that ensure that the add-on component
+is suitable for {productName}.
+
+|link:embedded-server-guide.html#GSESG[Embedded Server Guide]
+|Explains how to run applications in embedded {productName} and to develop applications
+in which {productName} is embedded.
+
+|link:ha-administration-guide.html#GSHAG[High Availability Administration Guide]
+|Explains how to configure {productName} to provide higher availability and
+scalability through failover and load balancing.
+
+|link:performance-tuning-guide.html#GSPTG[Performance Tuning Guide]
+|Explains how to optimize the performance of {productName}.
+
+|link:troubleshooting-guide.html#GSTSG[Troubleshooting Guide]
+|Describes common problems that you might encounter when using {productName} and explains how to solve them.
+
+|link:error-messages-reference.html#GSEMR[Error Message Reference]
+|Describes error messages that you might encounter when using {productName}.
+
+|link:reference-manual.html#GSRFM[Reference Manual]
+|Provides reference information in man page format for {productName} administration commands, utility
+commands, and related concepts.
+
+|link:../openmq/mq-release-notes.html#GMRLN[Message Queue Release Notes]
+|Describes new features, compatibility issues, and existing bugs for Open Message Queue.
+
+|link:../openmq/mq-tech-over.html#GMTOV[Message Queue Technical Overview]
+|Provides an introduction to the technology, concepts, architecture, capabilities, and features of
+the Message Queue messaging service.
+
+|link:../openmq/mq-admin-guide.html#GMADG[Message Queue Administration Guide]
+|Explains how to set up and manage a Message Queue messaging system.
+
+|link:../openmq/mq-dev-guide-jmx.html#GMJMG[Message Queue Developer's Guide for JMX Clients]
+|Describes the application programming interface in Message Queue for
+programmatically configuring and monitoring Message Queue resources in
+conformance with the Java Management Extensions (JMX).
+
+|link:../openmq/mq-dev-guide-java.html#GMJVG[Message Queue Developer's Guide for Java Clients]
+|Provides information about concepts and procedures for developing Java messaging
+applications (Java clients) that work with {productName}.
+
+|link:../openmq/mq-dev-guide-c.html#GMCCG[Message Queue Developer's Guide for C Clients]
+|Provides programming and reference information for developers working with
+Message Queue who want to use the C language binding to the Message
+Queue messaging service to send, receive, and process Message Queue messages.
+|===
+
+
+[[BABBDGAE]][[related-documentation]]
+
+=== Related Documentation
+
+The following tutorials explain how to develop Jakarta EE applications:
+
+* https://github.com/eclipse-ee4j/jakartaee-firstcup-examples[
+Your First Cup: An Introduction to the Jakarta EE Platform].
+For beginning Jakarta EE programmers, this short tutorial explains the entire
+process for developing a simple enterprise application.
+The sample application is a web application that consists of a component that is
+based on the Enterprise JavaBeans specification, a JAX-RS web service,
+and a JavaServer Faces component for the web front end.
+
+* https://eclipse-ee4j.github.io/jakartaee-tutorial[The Jakarta EE Tutorial].
+This comprehensive tutorial explains how to use Jakarta EE platform technologies
+and APIs to develop Jakarta EE applications.
+
+Javadoc tool reference documentation for packages that are provided with
+{productName} is available as follows.
+
+* The Jakarta EE specifications and API specification is
+located at https://jakarta.ee/specifications/.
+
+* The API specification for {productName} 7, including Jakarta EE
+platform packages and nonplatform packages that are specific to the
+{productName} product, is located at
+https://glassfish.org/docs/.
+
+For information about creating enterprise applications in the NetBeans
+Integrated Development Environment (IDE), see the
+https://netbeans.apache.org/kb/docs/java-ee.html[
+NetBeans Documentation, Training & Support page].
+
+For information about the Derby database for use with
+the {productName}, see the https://db.apache.org/derby/index.html[Derby page].
+
+The Jakarta EE Samples project is a collection of sample applications that
+demonstrate a broad range of Jakarta EE technologies. The Jakarta EE Samples
+are bundled with the Jakarta EE Software Development Kit (SDK) and are also
+available from the repository
+(`https://github.com/eclipse-ee4j/glassfish-samples`).
+
+[[BABGCFGH]][[typographic-conventions]]
+
+=== Typographic Conventions
+
+The following table describes the typographic changes that are used in
+this book.
+
+[width="100%",cols="<14%,<37%,<49%",options="header",]
+|===
+|Typeface |Meaning |Example
+
+|`AaBbCc123`
+|The names of commands, files, and directories, and onscreen computer output
+|Edit your `.login` file.
+
+Use `ls` `a` to list all files.
+
+`machine_name% you have mail.`
+
+|`AaBbCc123`
+|What you type, contrasted with onscreen computer output
+|`machine_name%` `su`
+
+`Password:`
+
+|AaBbCc123
+|A placeholder to be replaced with a real name or value
+|The command to remove a file is `rm` filename.
+
+|AaBbCc123
+|Book titles, new terms, and terms to be emphasized (note that some emphasized items appear bold online)
+|Read Chapter 6 in the User's Guide.
+
+A cache is a copy that is stored locally.
+
+Do not save the file.
+|===
+
+
+[[BABHAGID]][[symbol-conventions]]
+
+=== Symbol Conventions
+
+The following table explains symbols that might be used in this book.
+
+[width="100%",cols="<10%,<26%,<28%,<36%",options="header",]
+|===
+|Symbol |Description |Example |Meaning
+
+|`[ ]`
+|Contains optional arguments and command options.
+|`ls [-l]`
+|The `-l` option is not required.
+
+|`{ \| }`
+|Contains a set of choices for a required command option.
+|`-d {y\|n}`
+|The `-d` option requires that you use either the `y` argument or the `n` argument.
+
+|`${ }`
+|Indicates a variable reference.
+|`${com.sun.javaRoot}`
+|References the value of the `com.sun.javaRoot` variable.
+
+|`-`
+|Joins simultaneous multiple keystrokes.
+|Control-A
+|Press the Control key while you press the A key.
+
+|`+`
+|Joins consecutive multiple keystrokes.
+|Ctrl+A+N
+|Press the Control key, release it, and then press the subsequent keys.
+
+|`>`
+|Indicates menu item selection in a graphical user interface.
+|File > New > Templates
+|From the File menu, choose New. From the New submenu, choose Templates.
+|===
+
+
+[[BABEACJI]][[default-paths-and-file-names]]
+
+=== Default Paths and File Names
+
+The following table describes the default paths and file names that are
+used in this book.
+
+[%autowidth.stretch,options="header",]
+|===
+|Placeholder |Description |Default Value
+
+|as-install
+a|Represents the base installation directory for {productName}.
+In configuration files, as-install is represented as follows:
+`${com.sun.aas.installRoot}`
+a|* Installations on the Oracle Solaris operating system, Linux operating
+system, and Mac OS operating system:
++
+user's-home-directory``/glassfish7/glassfish``
++
+* Installations on the Windows operating system:
++
+SystemDrive``:\glassfish7\glassfish``
+
+|as-install-parent
+|Represents the parent of the base installation directory for {productName}.
+a|* Installations on the Oracle Solaris operating system, Linux operating
+system, and Mac operating system:
++
+user's-home-directory``/glassfish7``
++
+* Installations on the Windows operating system:
++
+SystemDrive``:\glassfish7``
+
+|domain-root-dir
+|Represents the directory in which a domain is created by default.
+|as-install``/domains/``
+
+|domain-dir
+|Represents the directory in which a domain's configuration is stored.
+In configuration files, domain-dir is represented as follows:
+`${com.sun.aas.instanceRoot}`
+|domain-root-dir/domain-name
+
+|instance-dir
+|Represents the directory for a server instance.
+|domain-dir/instance-name
+|===
diff --git a/docs/error-messages-reference/src/main/asciidoc/title.adoc b/docs/error-messages-reference/src/main/asciidoc/title.adoc
new file mode 100644
index 0000000..22e04ff
--- /dev/null
+++ b/docs/error-messages-reference/src/main/asciidoc/title.adoc
@@ -0,0 +1,46 @@
+type=page
+status=published
+title={productName} Error Message Reference, Release 7
+next=preface.html
+prev=toc.html
+~~~~~~
+
+= {productName} Error Message Reference, Release 7
+
+[[eclipse-glassfish-server]]
+== {productName}
+
+Error Message Reference
+
+Release 7
+
+Contributed 2018 - 2022
+
+This book describes error messages that you might encounter when using
+{productName} 7.
+
+[[sthref1]]
+
+'''''
+
+{productName} Error Message Reference, Release 7
+
+Copyright © 2013, 2019 Oracle and/or its affiliates. All rights reserved.
+
+This program and the accompanying materials are made available under the
+terms of the Eclipse Public License v. 2.0, which is available at
+http://www.eclipse.org/legal/epl-2.0.
+
+SPDX-License-Identifier: EPL-2.0
+
+Oracle and Java are registered trademarks of Oracle and/or its
+affiliates. Other names may be trademarks of their respective owners.
+
+Intel and Intel Xeon are trademarks or registered trademarks of Intel
+Corporation. All SPARC trademarks are used under license and are
+trademarks or registered trademarks of SPARC International, Inc. AMD,
+Opteron, the AMD logo, and the AMD Opteron logo are trademarks or
+registered trademarks of Advanced Micro Devices. UNIX is a registered
+trademark of The Open Group.
+
+image:img/eclipse_foundation_logo_tiny.png["Eclipse Logo"]
diff --git a/docs/error-messages-reference/src/main/jbake/assets/css/style.css b/docs/error-messages-reference/src/main/jbake/assets/css/style.css
deleted file mode 100644
index 25a16e4..0000000
--- a/docs/error-messages-reference/src/main/jbake/assets/css/style.css
+++ /dev/null
@@ -1,315 +0,0 @@
-/* CSS */
-/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
-/** 1. Set default font family to sans-serif. 2. Prevent iOS text size adjust after orientation change, without disabling user zoom. */
-html { font-family: sans-serif; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ }
-
-/* HTML5 display definitions ========================================================================== */
-/** Correct `block` display not defined for any HTML5 element in IE 8/9. Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox. Correct `block` display not defined for `main` in IE 11. */
-article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { display: block; }
-
-/** 1. Correct `inline-block` display not defined in IE 8/9. 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. */
-audio, canvas, progress, video { display: inline-block; /* 1 */ vertical-align: baseline; /* 2 */ }
-
-/** Prevent modern browsers from displaying `audio` without controls. Remove excess height in iOS 5 devices. */
-audio:not([controls]) { display: none; height: 0; }
-
-/** Address `[hidden]` styling not present in IE 8/9/10. Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. */
-[hidden], template { display: none; }
-
-/* Links ========================================================================== */
-/** Remove the gray background color from active links in IE 10. */
-a { background-color: transparent; }
-
-/** Improve readability when focused and also mouse hovered in all browsers. */
-a:active, a:hover { outline: 0; }
-
-/* Text-level semantics ========================================================================== */
-/** Address styling not present in IE 8/9/10/11, Safari, and Chrome. */
-abbr[title] { border-bottom: 1px dotted; }
-
-/** Address style set to `bolder` in Firefox 4+, Safari, and Chrome. */
-b, strong { font-weight: bold; }
-
-/** Address styling not present in Safari and Chrome. */
-dfn { font-style: italic; }
-
-/** Address variable `h1` font-size and margin within `section` and `article` contexts in Firefox 4+, Safari, and Chrome. */
-h1 { font-size: 2em; margin: 0.67em 0; }
-
-/** Address styling not present in IE 8/9. */
-mark { background: #ff0; color: #000; }
-
-/** Address inconsistent and variable font size in all browsers. */
-small { font-size: 80%; }
-
-/** Prevent `sub` and `sup` affecting `line-height` in all browsers. */
-sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }
-
-sup { top: -0.5em; }
-
-sub { bottom: -0.25em; }
-
-/* Embedded content ========================================================================== */
-/** Remove border when inside `a` element in IE 8/9/10. */
-img { border: 0; }
-
-/** Correct overflow not hidden in IE 9/10/11. */
-svg:not(:root) { overflow: hidden; }
-
-/* Grouping content ========================================================================== */
-/** Address margin not present in IE 8/9 and Safari. */
-figure { margin: 1em 40px; }
-
-/** Address differences between Firefox and other browsers. */
-hr { box-sizing: content-box; height: 0; }
-
-/** Contain overflow in all browsers. */
-pre { overflow: auto; }
-
-/** Address odd `em`-unit font size rendering in all browsers. */
-code, kbd, pre, samp { font-family: monospace, monospace; font-size: 1em; }
-
-/* Forms ========================================================================== */
-/** Known limitation: by default, Chrome and Safari on OS X allow very limited styling of `select`, unless a `border` property is set. */
-/** 1. Correct color not being inherited. Known issue: affects color of disabled elements. 2. Correct font properties not being inherited. 3. Address margins set differently in Firefox 4+, Safari, and Chrome. */
-button, input, optgroup, select, textarea { color: inherit; /* 1 */ font: inherit; /* 2 */ margin: 0; /* 3 */ }
-
-/** Address `overflow` set to `hidden` in IE 8/9/10/11. */
-button { overflow: visible; }
-
-/** Address inconsistent `text-transform` inheritance for `button` and `select`. All other form control elements do not inherit `text-transform` values. Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. Correct `select` style inheritance in Firefox. */
-button, select { text-transform: none; }
-
-/** 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls. 2. Correct inability to style clickable `input` types in iOS. 3. Improve usability and consistency of cursor style between image-type `input` and others. */
-button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ }
-
-/** Re-set default cursor for disabled elements. */
-button[disabled], html input[disabled] { cursor: default; }
-
-/** Remove inner padding and border in Firefox 4+. */
-button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; }
-
-/** Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet. */
-input { line-height: normal; }
-
-/** It's recommended that you don't attempt to style these elements. Firefox's implementation doesn't respect box-sizing, padding, or width.  1. Address box sizing set to `content-box` in IE 8/9/10. 2. Remove excess padding in IE 8/9/10. */
-input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ }
-
-/** Fix the cursor style for Chrome's increment/decrement buttons. For certain `font-size` values of the `input`, it causes the cursor style of the decrement button to change from `default` to `text`. */
-input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { height: auto; }
-
-/** 1. Address `appearance` set to `searchfield` in Safari and Chrome. 2. Address `box-sizing` set to `border-box` in Safari and Chrome (include `-moz` to future-proof). */
-input[type="search"] { -webkit-appearance: textfield; /* 1 */ /* 2 */ box-sizing: content-box; }
-
-/** Remove inner padding and search cancel button in Safari and Chrome on OS X. Safari (but not Chrome) clips the cancel button when the search input has padding (and `textfield` appearance). */
-input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; }
-
-/** Define consistent border, margin, and padding. */
-fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; }
-
-/** 1. Correct `color` not being inherited in IE 8/9/10/11. 2. Remove padding so people aren't caught out if they zero out fieldsets. */
-legend { border: 0; /* 1 */ padding: 0; /* 2 */ }
-
-/** Remove default vertical scrollbar in IE 8/9/10/11. */
-textarea { overflow: auto; }
-
-/** Don't inherit the `font-weight` (applied by a rule above). NOTE: the default cannot safely be changed in Chrome and Safari on OS X. */
-optgroup { font-weight: bold; }
-
-/* Tables ========================================================================== */
-/** Remove most spacing between table cells. */
-table { border-collapse: collapse; border-spacing: 0; }
-
-td, th { padding: 0; }
-
-/* LAYOUT STYLES */
-
-p { margin-top: 0; }
-
-code, pre { margin-bottom: 30px; font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace; font-size: 13px; color: #222; }
-
-code { padding: 0 3px; background-color: #f2f8fc; border: solid 1px #dbe7f3; }
-
-pre { padding: 20px; overflow: auto; text-shadow: none; background: #fff; border: solid 1px #f2f2f2; }
-
-pre code { padding: 0; color: #2879d0; background-color: #fff; border: none; }
-
-ul, ol, dl { margin-bottom: 20px; }
-
-/* COMMON STYLES */
-
-td.halign-right { text-align: right; } 
-
-td.halign-center { text-align: center; } 
-
-form { padding: 20px; background: #f2f2f2; }
-
-h2 { 
-   font-size: 2em;
-   line-height: 1.2em;
-   font-weight: 200;
-   letter-spacing: 0;
-}
-
-h3 { 
-   font-size: 1.4em;
-   line-height: 1.2em;
-   font-weight: normal;
-   letter-spacing: 0;
-}
-
-.sect1 {
-   margin-left: 4%;
-   margin-right: 4%;
-   font: 13px/20px Arial, Helvetica, sans-serif  
-}
-
-a:link {
-   text-decoration: none;
-   color: #09569d;
-}
-
-#preamble hr{
-   margin-left: 0%;
-   margin-right: 0%;
-}
-
-#preamble .sectionbody table  {
-   font-weight: 200;
-   margin-left: 4%;
-   margin-right: 4%;
-}
-
-hr {
-   margin-bottom: 12px;
-}
-
-table.tableblock.frame-all.grid-all.spread {
-   font-size: 12px;
-}
-
-code {
-   font-size:.9em;
-   border: 1px solid #eaeaea;
-   background-color: #f6f6f6;
-   border-radius: 3px;
-   padding: 1px;
-   padding-left:2px;
-   padding-right:2px;
-}
-
-pre.prettyprint.highlight {
-   border: 1px solid #eaeaea;
-   background-color: #f6f6f6;
-   border-radius: 4px;
-   padding: 8px;
-   padding-top:4px;
-   padding-bottom:4px;
-}
-
-.language-oac_no_warn {
-   font-size:.9em;
-   color:#222;
-   background-color: transparent;
-}
-
-#doc-title {
-   margin-left: 4%;
-}
-
-#top-nav {
-   margin-left: 4%;
-   font-size: 12px;
-}
-
-#bottom-nav {
-   margin-left: 4%;
-   font-size: 12px;
-}
-
-.vector-font {
-   color:grey; 
-   font-size: 20px;
-}
-
-#copyright {
-   padding-top: 10px;
-   padding-bottom: 4px;
-   display: table;
-   margin:0 auto;
-   color: grey;
-   font-size: 12px;
-   vertical-align: middle;
-}
-
-.beta {color: #FF0000}
-
-/* GENERAL ELEMENT TYPE STYLES */
-
-/* #Media Queries
-================================================== */
-/* Smaller than standard 960 (devices and browsers) */
-/* Tablet Portrait size to standard 960 (devices and browsers) */
-@media only screen and (min-width: 768px) and (max-width: 959px) { .inner { width: 740px; }
-  header h1, header h2 { width: 340px; }
-  header h1 { font-size: 60px; }
-  header h2 { font-size: 30px; }
-}
-/* All Mobile Sizes (devices and browser) */
-@media only screen and (max-width: 767px) { .inner { width: 93%; }
-  header { padding: 20px 0; }
-  header .inner { position: relative; }
-  header h1, header h2 { width: 100%; }
-  header h1 { font-size: 48px; }
-  header h2 { font-size: 24px; }
-  header a.button { position: relative; display: inline-block; width: auto; height: auto; padding: 5px 10px; margin-top: 15px; font-size: 13px; line-height: 1; color: #2879d0; text-align: center; background-color: #9ddcff; background-image: none; border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; }
-  header a.button small { display: inline; font-size: 13px; }
-}
-/* Mobile Landscape Size to Tablet Portrait (devices and browsers) */
-/* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */
-
-header h1 { padding-top: 14px; font-size: 2em; font-weight: 200; line-height: 1.4; color: #FFFFFF; letter-spacing: 0px; border-bottom: 0px; }
-
-header h2 { font-size: 1.2em; margin-top: 0; margin-bottom: 0; font-weight: 200; line-height: .8; color: #ec7D11; letter-spacing: 0; }
-
-/*
-header a.button { background: transparent url(../images/logo.png) 0 0 no-repeat; padding-left: 32px; }
-*/
-
-header a:hover { text-decoration: none; }
-
-/* Admonition (Note) block */
-.admonitionblock > table {
-  border: 0;
-  background: none;
-  width: 100%;
-  table-layout: auto;
-  margin-bottom: 10.5px;
-}
-.admonitionblock > table td.icon {
-  text-align: center;
-  width: 60px;
-}
-.admonitionblock > table td.icon img {
-  max-width: none;
-}
-.admonitionblock > table td.icon .title {
-  text-transform: uppercase;
-}
-.admonitionblock > table td.content {
-  padding-left: 1em;
-  padding-right: 1em;
-  border-left: 3px solid #ddd;
-}
-.admonitionblock > table td.content > :last-child > :last-child {
-  margin-bottom: 0;
-}
-.admonitionblock td.icon [class^="fa icon-"]:before {
-  font-size: 2.5em;
-  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
-  cursor: default;
-}
-.admonitionblock td.icon .icon-note:before {
-  content: "\f05a";
-  color: #5bc0de;
-}
diff --git a/docs/error-messages-reference/src/main/jbake/content/error-messages.adoc b/docs/error-messages-reference/src/main/jbake/content/error-messages.adoc
deleted file mode 100644
index e7453f8..0000000
--- a/docs/error-messages-reference/src/main/jbake/content/error-messages.adoc
+++ /dev/null
@@ -1,8061 +0,0 @@
-type=page
-status=published
-title=GlassFish Server Open Source Edition Error Messages
-prev=preface.html
-~~~~~~
-GlassFish Server Open Source Edition Error Messages
-===================================================
-
-[[sthref2]][[glassfish-server-open-source-edition-error-messages]]
-
-1 GlassFish Server Open Source Edition Error Messages
------------------------------------------------------
-
-This chapter provides a compilation of error messages that you might
-encounter when using GlassFish Server Open Source Edition.
-
-Error messages provide information about events that occur during
-GlassFish Server operation, such as configuration errors, security
-failures, or server malfunction. These messages often include diagnostic
-and troubleshooting information.
-
-Error messages can also be viewed in the Administration Console Log
-Viewer. For more information about logging, see
-”link:../administration-guide/logging.html#GSADG00010[Administering the Logging Service”] in GlassFish
-Server Open Source Edition Administration Guide.
-
-For additional troubleshooting information, see the
-link:../troubleshooting-guide/toc.html#GSTSG[GlassFish Server Open Source Edition Troubleshooting Guide].
-
-Error messages in this chapter are listed in alphabetic and numeric
-order by message ID. The text is as it appears in the actual error
-message.
-
-[[sthref3]]AS-ACDEPL-00103 Java Web Start services started for the app client \{0} (contextRoot: \{1}) ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref4]]AS-ACDEPL-00105 Error starting the adapter to serve static system-level content ::
-  Cause: An unexpected internal system error occurred +
-  Action: Please consult the exception stack trace
-
-[[sthref5]]AS-ACDEPL-00108 Config file for client JNLP not found: \{0} ::
-  Cause: The config file does not exist. +
-  Action: The file is part of the installation so this might be an
-  internal error. Make sure you have not accidentally removed or renamed
-  the config file. If not, please file an error with a reproducible test
-  case.
-
-[[sthref6]]AS-ACDEPL-00109 The config file for client JNLP \{0} exists but could not be read. ::
-  Cause: The config file might be protected from reading. +
-  Action: Make sure the config file protection settings permit the
-  server to read it.
-
-[[sthref7]]AS-ACDEPL-00111 Client JNLP document \{0} refers to the static resource \{1} that does not exist or is not readable. ::
-  Cause: The developer-provided JNLP content refers to a file as if the
-  file is in the application but the server could not find the file. +
-  Action: Make sure the file is packaged in the application and that the
-  reference to the file is correct. Then rebuild and redeploy the
-  application.
-
-[[sthref8]]AS-ACDEPL-00112 The following extensions or libraries are referenced from the manifest of \{0} but were not found where indicated: \{1}; ignoring and continuing ::
-  Cause: The server could not open the JAR file(s) or process the
-  extension(s) listed in its manifest. +
-  Action: Make sure the manifest of the JAR file correctly lists the
-  relative paths of library JARs and the extensions on which the JAR
-  depends.
-
-[[sthref9]]AS-ACDEPL-00114 The ApplicationSignedJARManager for a nested app client deployer helper is unexpectedly null. ::
-  Cause: During deployment of nested app clients (those inside EARs),
-  the system should use an ApplicationSignedJARManager but it is null. +
-  Action: This is a system error. Please report this as a bug.
-
-[[sthref10]]AS-ACDEPL-00115 Tbe custom JNLP document \{0} in a stand-alone app client incorrectly refers to a JAR \{1} ::
-  Cause: The app client includes a custom JNLP document which refers to
-  a JAR. Stand-alone app clients cannot refer to other JARs because they
-  are self-contained deployment units. +
-  Action: Remove references to JAR from the custom JNLP document or
-  package the app client inside an EAR that also contains the referenced
-  JAR.
-
-[[sthref11]]AS_ACDEPL-00101 Java Web Start services not started for the app client \{0}; its developer has marked it as ineligible ::
-  Cause: The developer's glassfish-application-client.xml file marks the
-  app client as ineligible for Java Web Start support. +
-  Action: If users should be able to launch this client using Java Web
-  Start, change the <java-web-start-support> 'enabled' attribute.
-
-[[sthref12]]AS_ACDEPL-00104 Java Web Start services stopped for the app client \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref13]]AS_ACDEPL_00102 Java Web Start services not started for the app client \{0}; the administrator has disabled Java Web Start support for it ::
-  Cause: The administrator disabled Java Web Start launches for the app
-  client, either using '--properties java-web-start-enabled=false'
-  during deployment or changing the properties afterwards. +
-  Action: If users should be able to launch this client using Java Web
-  Start, either deploy the application again without --properties or
-  adjust the configuration using the admin console or the asadmin 'set'
-  command
-
-[[sthref14]]AS-NAMING-00001 Failed to load \{0} using CommonClassLoader ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref15]]AS-NAMING-00002 Exception during name lookup : \{0} ::
-  Cause: App Server may not be running at port intended, or possible
-  Network Error. +
-  Action: Check to see if the AppServer is up and running on the port
-  intended. The problem could be because of incorrect port. Check to see
-  if you can access the host on which the AppServer running.
-
-[[sthref16]]AS-NAMING-00003 Exception occurred when instantiating LocalSerialContextProviderImpl: \{0} ::
-  Cause: java.rmi.RemoteException +
-  Action: Check server.log for details
-
-[[sthref17]]AS-NAMING-00004 Error during CosNaming.unbind for name \{0}: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref18]]AS-NAMING-00005 Naming binding already exists for \{0} in namespace \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref19]]AS-NAMING-00006 Exception in NamingManagerImpl copyMutableObject(): \{0} ::
-  Cause: Problem with serializing or de serializing of the object +
-  Action: Check the class hierarchy to see if all the classes are
-  serializable.
-
-[[sthref20]]AS-NAMING-00008 Fall back to INITIAL_CONTEXT_FACTORY \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref21]]AS-CONCURRENT-00001 Task [\{0}] has been running on thread [\{1}] for \{2} seconds, which is more than the configured hung task threshold of \{3} seconds in [\{4}]. ::
-  Cause: A task has been running for longer time than the configured
-  hung task threshold setting. +
-  Action: Monitor the task to find out why it is running for a long
-  time. If this is normal, consider setting a higher hung task threshold
-  or setting the "Long-Running Tasks" configuration attribute to true.
-
-[[sthref22]]AS-CONCURRENT-00002 Unable to setup or reset runtime context for a task because an invalid context handle is being passed. ::
-  Cause: An invalid context handle is being passed. +
-  Action: Contact GlassFish support.
-
-[[sthref23]]AS-CONCURRENT-00003 Unable to bind \{0} to JNDI location [\{1}]. ::
-  Cause: An unexpected exception occurred when trying to bind a managed
-  object to JNDI namespace +
-  Action: Review the exception message to determine the cause of the
-  failure and take appropriate action.
-
-[[sthref24]]AS-CONCURRENT-00004 Unable to deploy \{0}. ::
-  Cause: No configuration information is provided when trying to deploy
-  a managed object. +
-  Action: Contact GlassFish support.
-
-[[sthref25]]AS-RAR-05001 Failed to get the thread-pool [ \{0} ] for resource adapter [ \{1} ]. ::
-  Cause: Could not find a thread pool according to the pool ID. +
-  Action: Check the thread-pool-id property in Resource Adapter Config.
-
-[[sthref26]]AS-RAR-05002 Failed to get the default thread-pool for resource adapter [ \{0} ]. ::
-  Cause: Could not find the default thread pool for resource adatper. +
-  Action: Check the thread-pool-id property in Resource Adapter Config.
-
-[[sthref27]]AS-RAR-05003 An error occurred during instantiation of the Work Manager class [ \{0} ] for resource adapter [ \{1} ]. ::
-  Cause: Can not initiate the Work Manager class. +
-  Action: Check the Work Manager class type.
-
-[[sthref28]]AS-RAR-05004 The Work named [ \{0} ], progress [ \{1} ]. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref29]]AS-RAR-05005 Resource adapter association failed. ::
-  Cause: Resource Adapter throws exception during
-  ManagedConnectionFactory.setResourceAdapter(). +
-  Action: [1] If you are using third party resource adapter, contact
-  resource adapter vendor.[2] If you are a resource adapter developer,
-  please check the resource adapter code.
-
-[[sthref30]]AS-RAR-05006 Unable to load Work Context class \{0}. ::
-  Cause: Work Context class is not available to application server. +
-  Action: Make sure that the Work Context class is available to server.
-
-[[sthref31]]AS-RAR-05007 Cannot specify both Execution Context [\{0}] as well Transaction Context [\{1}] for Work [\{2}] execution. Only one can be specified. ::
-  Cause: Submitted Work has Transaction Context as well it is a Work
-  Context Provider which is specification violation. +
-  Action: Make sure that either Execution Context or Work Context
-  Provider with Transaction Context is passed, but not both.
-
-[[sthref32]]AS-RAR-05008 Duplicate Work Context for type [ \{0} ]. ::
-  Cause: Multiple Work Contexts of same type submitted. +
-  Action: Make sure that same context type is not submitted multiple
-  times in the Work Context.
-
-[[sthref33]]AS-RAR-05009 Application server cannot handle the following Work Context : \{0}. ::
-  Cause: Work Context in question is not supported by application
-  server. +
-  Action: Check the application server documentation for supported Work
-  Contexts.
-
-[[sthref34]]AS-RAR-05010 Setting custom Work Context class [ \{0} ] using most specific supportted Work Context class [ \{1} ]. ::
-  Cause: Requested Work Context is not supported, but a super type of
-  the context is supported. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref35]]AS-RAR-05011 Unable to set Security Context. ::
-  Cause: Unable to set Security Context. +
-  Action: Check the server.log for exceptions
-
-[[sthref36]]AS-RAR-05012 Unsupported callback \{0} during credential mapping. ::
-  Cause: Resource adapter has used a callback that is not supported by
-  application server. +
-  Action: Check whether the callback in question is supported by
-  application server.
-
-[[sthref37]]AS-CORE-JAVAEE-0001 Web Container not installed ::
-  Cause: The web container does not install properly. +
-  Action: Please check the web container libraries are installed
-  properly.
-
-[[sthref38]]AS-CORE-JAVAEE-0002 Done with starting \{0} container. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref39]]AS-CORE-JAVAEE-0003 Unable to start container (no exception provided) ::
-  Cause: The web container does not start properly. +
-  Action: Please check the web container libraries are installed
-  properly.
-
-[[sthref40]]AS-CORE-JAVAEE-0004 Unable to start container \{0} ::
-  Cause: The web container does not start properly. Most probably, there
-  is a class loading issue. +
-  Action: Please resolve issues mentioned in the stack trace.
-
-[[sthref41]]AS-DEPLOYMENT-04017 Error in deleting file \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref42]]AS-DEPLOYMENT-04018 Deployment manager load failure. Unable to find \{0} ::
-  Cause: A deployment manager is not available. +
-  Action: Correct the reference to the deployment manager.
-
-[[sthref43]]AS-DEPLOYMENT-04019 Deployment manager load failure. Unable to find \{0} ::
-  Cause: A deployment manager is not available. +
-  Action: Correct the reference to the deployment manager.
-
-[[sthref44]]AS-DEPLOYMENT-00001 Ignore \{0} in archive \{1}, as WLS counterpart runtime xml \{2} is present in the same archive. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref45]]AS-DEPLOYMENT-00002 Exception caught: \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref46]]AS-DEPLOYMENT-00003 \{0} module [\{1}] contains characteristics of other module type: \{2}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref47]]AS-DEPLOYMENT-00004 Exception caught: \{0} for the subarchve indicated by the path: \{1}. ::
-  Cause: An exception was caught when the sub archive was opened because
-  the sub archive was not present. +
-  Action: Correct the archive so that the sub archive is present.
-
-[[sthref48]]AS-DEPLOYMENT-00005 Exception caught during annotation scanning. ::
-  Cause: An exception was caught that indicates that the annotation is
-  incorrect. +
-  Action: Correct the annotation.
-
-[[sthref49]]AS-DEPLOYMENT-00006 Adding \{0} since \{1} is annotated with \{2}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref50]]AS-DEPLOYMENT-00007 Adding \{0} since it is implementing \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref51]]AS-DEPLOYMENT-00008 Inconsistent type definition. \{0} is neither an annotation nor an interface. ::
-  Cause: The annotation is incorrect. +
-  Action: Correct the annotation.
-
-[[sthref52]]AS-DEPLOYMENT-00009 The exception \{0} occurred while examining the jar at file path: \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref53]]AS-DEPLOYMENT-00010 No classloader can be found to use ::
-  Cause: The archive being processed is not correct. +
-  Action: Examine the archive to determine what is incorrect.
-
-[[sthref54]]AS-DEPLOYMENT-00011 Error in annotation processing: \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref55]]AS-DEPLOYMENT-00012 Cannot load \{0} reason : \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref56]]AS-DEPLOYMENT-00013 An exception was caught during library jar processing: \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref57]]AS-DEPLOYMENT-00014 Could not load \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref58]]AS-DEPLOYMENT-00015 Unsupported deployment descriptors element \{0} value \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref59]]AS-DEPLOYMENT-00016 Unknown port-component-name \{0} port, all sub elements will be ignored. ::
-  Cause: Used port-component-name does not exists. +
-  Action: Use the name of existing web service endpoint
-
-[[sthref60]]AS-DEPLOYMENT-00017 DOLUtils: converting EJB to web bundle id \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref61]]AS-DEPLOYMENT-00020 Application validation failed for application: \{0}, jndi-name: \{1}, resource adapter name: \{2} is wrong. ::
-  Cause: For embedded resource adapter, its name should begin with '#'
-  symbol +
-  Action: Remove application name before the '#' symbol in the resource
-  adapter name.
-
-[[sthref62]]AS-DEPLOYMENT-00022 For administered-object resource: \{0}, there is no application part in its resource adapter name: \{1}. ::
-  Cause: For embedded resource adapter, its internal format of resource
-  adapter name should contains application name. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref63]]AS-DEPLOYMENT-00023 For connection-factory resource: \{0}, there is no application part in its resource adapter name: \{1}. ::
-  Cause: For embedded resource adapter, its internal format of resource
-  adapter name should contains application name. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref64]]AS-DEPLOYMENT-00024 For jms-connection-factory resource: \{0}, there is no application part in its resource adapter name: \{1}. ::
-  Cause: For embedded resource adapter, its internal format of resource
-  adapter name should contains application name. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref65]]AS-DEPLOYMENT-00025 For jms-destination resource: \{0}, there is no application part in its resource adapter name: \{1}. ::
-  Cause: For embedded resource adapter, its internal format of resource
-  adapter name should contains application name. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref66]]AS-DEPLOYMENT-00026 JNDI lookup failed for the resource: Name: \{0}, Lookup: \{1}, Type: \{2}. ::
-  Cause: JNDI lookup for the specified resource failed. +
-  Action: Configure the required resources before deploying the
-  application.
-
-[[sthref67]]AS-DEPLOYMENT-00027 Resource Adapter not present: RA Name: \{0}, Type: \{1}. ::
-  Cause: Resource adapter specified is invalid. +
-  Action: Configure the required resource adapter.
-
-[[sthref68]]AS-DEPLOYMENT-00028 Skipping resource validation ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref69]]AS-DEPLOYMENT-02015 Skipped processing for module \{0} as its module type was not recognized ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref70]]AS-DEPLOYMENT-02016 Error occurred ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref71]]AS-EJB-00001 [\{0}]: trimLru(), resetting head and tail ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref72]]AS-EJB-00002 [\{0}]: Exception in backingStore.remove([\{1}]) ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref73]]AS-EJB-00003 [\{0}]: passivateEJB(), Exception caught -> ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref74]]AS-EJB-00004 [\{0}]: Cannot load from BACKUPSTORE FOR Key: [\{1}] ::
-  Cause: Didn't find the data related with the given session key. +
-  Action: Check if the session bean already timed out.
-
-[[sthref75]]AS-EJB-00005 [\{0}]: Exception while loading from backup session: [\{1}] ::
-  Cause: Session store exception or de serialization exception happened. +
-  Action: Check error message and exception stack.
-
-[[sthref76]]AS-EJB-00006 [\{0}]: Error while loading from backup session: [\{1}] ::
-  Cause: Session store error or de serialization error happened. +
-  Action: Check error message and exception stack.
-
-[[sthref77]]AS-EJB-00007 [\{0}]: Exception during backingStore.passivateSave([\{1}]) ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref78]]AS-EJB-00008 [\{0}]: Iterator(), resetting head.lPrev ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref79]]AS-EJB-00009 [\{0}]: Exiting TrimTimedoutBeans() because current cache state: [\{1}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref80]]AS-EJB-00010 [\{0}]: TrimTimedoutBeans(), resetting head.lPrev ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref81]]AS-EJB-00011 [\{0}]: Exiting TrimUnSortedTimedoutBeans() because current cache state: [\{1}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref82]]AS-EJB-00012 [SFSBContainer] Exception while initializing SessionSynchronization methods ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref83]]AS-EJB-00013 [SFSBContainer] Exception while loading checkpoint info ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref84]]AS-EJB-00014 Exception creating ejb object : [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref85]]AS-EJB-00015 Exception creating ejb local object [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref86]]AS-EJB-00016 Couldn't update timestamp for: [\{0}]; Exception: [\{1}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref87]]AS-EJB-00017 Cannot register bean for checkpointing ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref88]]AS-EJB-00018 Error during checkpoint ([\{0}]. Key: [\{1}]) [\{2}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref89]]AS-EJB-00019 sfsb checkpoint error. Name: [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref90]]AS-EJB-00020 sfsb checkpoint error. Key: [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref91]]AS-EJB-00021 Exception in afterCompletion : [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref92]]AS-EJB-00022 1. passivateEJB() returning because containerState: [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref93]]AS-EJB-00023 Extended EM not serializable. Exception: [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref94]]AS-EJB-00024 Error during passivation: [\{0}]; [\{1}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref95]]AS-EJB-00025 Error during passivation of [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref96]]AS-EJB-00026 sfsb passivation error. Key: [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref97]]AS-EJB-00028 Error during Stateful Session Bean activation for key [\{0}] ::
-  Cause: A problem occurred while the container was activating a
-  stateful session bean. One possible cause is that the bean code threw
-  a system exception from its ejbActivate method. +
-  Action: Check the stack trace to see whether the exception was thrown
-  from the ejbActivate method and if so double-check the application
-  code to determine what caused the exception.
-
-[[sthref98]]AS-EJB-00029 [\{0}]: Error during backingStore.shutdown() ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref99]]AS-EJB-00030 [\{0}]: Error during onShutdown() ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref100]]AS-EJB-00031 [\{0}]: Error while undeploying ctx. Key: [\{1}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref101]]AS-EJB-00032 Cannot add idle bean cleanup task ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref102]]AS-EJB-00033 Got exception during removeExpiredSessions (but the reaper thread is still alive) ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref103]]AS-EJB-00034 Error during checkpoint(, but session not destroyed) ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref104]]AS-EJB-00035 Error during checkpoint ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref105]]AS-EJB-00036 TopLevel AvailabilityService.getAvailabilityEnabled: [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref106]]AS-EJB-00037 TopLevel EjbAvailabilityService.getAvailabilityEnabled: [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref107]]AS-EJB-00038 Global AvailabilityEnabled: [\{0}], application AvailabilityEnabled: [\{1}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref108]]AS-EJB-00039 Exception while trying to determine availability-enabled settings for this app ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref109]]AS-EJB-00040 StatefulContainerBuilder AvailabilityEnabled [\{0}] for this application ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref110]]AS-EJB-00041 StatefulContainerBuilder.buildStoreManager() storeName: [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref111]]AS-EJB-00042 Could not instantiate backing store for type [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref112]]AS-EJB-00043 StatefulContainerbuilder instantiated store: \{0}, with ha-enabled [\{1}], and backing store configuration: \{2} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref113]]AS-EJB-00044 Error while adding idle bean passivator task ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref114]]AS-EJB-00045 Error while adding idle bean removal task ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref115]]AS-EJB-00046 Error while removing idle beans for [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref116]]AS-EJB-00047 Error while removing expired beans for [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref117]]AS-EJB-00048 Passivation-capable value of stateful session bean [\{0}] is false, it should not have any PrePassivate nor PostActivate configuration, but you have configuration at [\{1}]. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref118]]AS-EJB-00049 Cannot find stateful session bean [\{0}] in memory, and will not read it from disk because current stateful session bean passivation-capable value is false ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref119]]AS-EJB-00050 Cache is shutting down, \{0} stateful session beans will not be restored after restarting since passivation is disabled ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref120]]AS-EJB-00051 Disabling high availability for the stateful session bean \{0}, as its marked non passivatable ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref121]]AS-EJB-00052 Internal Error ::
-  Cause: Error during invoke the ejb application +
-  Action: Trying to invoke the ejb application
-
-[[sthref122]]AS-EJB-00053 The feature \{0} requires Full Java EE Profile to be supported ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref123]]AS-EJB-00054 Portable JNDI names for EJB \{0}: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref124]]AS-EJB-00055 GlassFish-specific (Non-portable) JNDI names for EJB \{0}: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref125]]AS-EJB-00056 A system exception occurred during an invocation on EJB \{0}, method: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref126]]AS-EJB-00057 Error while creating enterprise bean context for \{0} during jacc callback ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref127]]AS-EJB-00058 Attempt to override reserved ejb interface method [\{0}] in [\{1}]. Override will be ignored. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref128]]AS-EJB-00059 Bean class for ejb [\{0}] does not define a method corresponding to [\{1}] interface method [\{2}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref129]]AS-EJB-00060 keepstate is true and will not create new auto timers during deployment. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref130]]AS-EJB-00061 Failed to initialize the interceptor ::
-  Cause: Error during initializing the interceptor +
-  Action: Try to restart the server
-
-[[sthref131]]AS-EJB-00062 [**BaseContainer**] Could not create MonitorRegistryMediator. [\{0}] ::
-  Cause: Fail to create MonitorRegistryMediator +
-  Action: Check the exception stack
-
-[[sthref132]]AS-EJB-00063 Exception in backingStore.size() ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref133]]AS-JMS-CORE-00001 JMS Service Connection URL is : \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref134]]AS-JMS-CORE-00002 ADDRESSLIST in setJmsServiceProvider : \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref135]]AS-JMS-CORE-00003 Addresslist : \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref136]]AS-JMS-CORE-00004 End point determines destination name, Res name: \{0}, JNDI name: \{1} descriptor name : \{2} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref137]]AS-JMS-CORE-00005 Successfully set Master broker on JMSRA to \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref138]]AS-JMS-CORE-00006 Failed to set Master broker on JMSRA to \{0} cause \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref139]]AS-JMS-CORE-00007 Successfully set Cluster brokerlist to \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref140]]AS-JMS-CORE-00008 Failed to set Cluster brokerlist to \{0} cause \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref141]]AS-JMS-CORE-00009 Failed to shut down Grizzly NetworkListener : \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref142]]AS-JMS-CORE-00010 Error occurs when shutting down JMSRA : \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref143]]AS-JMS-CORE-00011 Invalid RMI registry port ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref144]]AS-JMS-CORE-00012 No such method \{0} in the class \{1} ::
-  Cause: The method setProperty is not defined in the class +
-  Action: Define the appropriate method
-
-[[sthref145]]AS-JMS-CORE-00013 Connector Resource could not be closed ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref146]]AS-JMS-CORE-00014 rardeployment.mcfcreation_error \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref147]]AS-JMS-CORE-00015 Exception while getting configured RMI port : \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref148]]AS-JMS-CORE-00016 Failed to start Grizlly proxy for MQ broker ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref149]]AS-JMS-CORE-00017 Failed to create addresslist due to the exception : \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref150]]AS-JMS-CORE-00018 Error executing method \{0} of the class \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref151]]AS-JMS-CORE-00019 MDB destination not specified ::
-  Cause: Missing destination JNDI name +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref152]]AS-JMS-CORE-00020 Failed to validate endpoint ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref153]]AS-JMS-CORE-00021 Cannot obtain master broker ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref154]]AS-JMS-CORE-00022 Error while loading connector resources during recovery : \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref155]]AS-JMS-CORE-00023 Exception in reading mdb-container configuration : [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref156]]AS-JMS-CORE-00024 MQ Resource adapter upgrade started. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref157]]AS-JMS-CORE-00025 MQ Resource adapter upgrade completed. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref158]]AS-JMS-CORE-00026 Upgrading a MQ resource adapter failed : \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref159]]AS-JMS-CORE-00027 Check for a new version of MQ installation failed : \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref160]]AS-ORB-00001 Exception occurred when resolving \{0} ::
-  Cause: org.omg.CORBA.ORBPackage.InvalidName when trying to resolve
-  GroupInfoService +
-  Action: Check server.log for details
-
-[[sthref161]]AS-ORB-00002 No Endpoints selected in com.sun.appserv.iiop.endpoints property. Using \{0}:\{1} instead ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref162]]AS-ORB-00003 Problem with membership change notification. Exception occurred : \{0} ::
-  Cause: check server.log for details +
-  Action: check network configuration and cluster setup
-
-[[sthref163]]AS-ORB-00004 Could not find an endpoint to send request to. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref164]]AS-ORB-00005 Unknown host: \{0} Exception thrown : \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref165]]AS-ORB-00006 No Endpoints selected in com.sun.appserv.iiop.endpoints property. Using JNDI Provider URL \{0} instead ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref166]]AS-ORB-00007 Exception : \{0} thrown for bad provider URL String: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref167]]AS-WSSECURITY-00001 Request processing failed. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref168]]AS-WSSECURITY-00002 SEC2002: Container-auth: wss: Error validating request. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref169]]AS-WSSECURITY-00003 SEC2003: Container-auth: wss: Error securing response. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref170]]AS-WSSECURITY-00004 SEC2004: Container-auth: wss: Error securing request. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref171]]AS-WSSECURITY-00005 SEC2005: Container-auth: wss: Error validating response. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref172]]AS-WSSECURITY-00006 SEC2006: Container-auth: wss: Not a SOAP message context. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref173]]AS-WSSECURITY-00007 EJB Webservice security configuration Failure. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref174]]AS-WSSECURITY-00008 Servlet Webservice security configuration Failure ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref175]]AS-WSSECURITY-00009 BASIC AUTH username/password http header parsing error for \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref176]]AS-WSSECURITY-00010 Servlet Webservice security configuration Failure ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref177]]AS-WSSECURITY-00011 Following exception was thrown: ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref178]]AS-WEB-ADMIN-00001 Unable to register StatsProvider \{0} with Monitoring Infrastructure. No monitoring data will be collected for \{1} and \{2} ::
-  Cause: Current server config is null +
-  Action: Verify if the server instance is started correctly
-
-[[sthref179]]AS-WEB-ADMIN-00002 Current server config is null ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref180]]AS-WEB-ADMIN-00003 The acceptor threads must be at least 1 ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref181]]AS-WEB-ADMIN-00004 Listener \{0} could not be created, actual reason: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref182]]AS-WEB-ADMIN-00005 A default virtual server is required. Please use --default-virtual-server to specify this value. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref183]]AS-WEB-ADMIN-00006 --defaultVS and --default-virtual-server conflict. Please use only --default-virtual-server to specify this value. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref184]]AS-WEB-ADMIN-00007 Attribute value (default-virtual-server = \{0}) is not found in list of virtual servers defined in config. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref185]]AS-WEB-ADMIN-00008 Http Listener named \{0} already exists. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref186]]AS-WEB-ADMIN-00009 Port [\{0}] is already taken for address [\{1}], please choose another port. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref187]]AS-WEB-ADMIN-00010 Network Listener named \{0} already exists. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref188]]AS-WEB-ADMIN-00011 Protocol \{0} has neither a protocol nor a port-unification configured. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref189]]AS-WEB-ADMIN-00012 \{0} create failed: ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref190]]AS-WEB-ADMIN-00013 The specified protocol \{0} is not yet configured. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref191]]AS-WEB-ADMIN-00014 Failed to create http-redirect for \{0}: \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref192]]AS-WEB-ADMIN-00015 An http element for \{0} already exists. Cannot add duplicate http. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref193]]AS-WEB-ADMIN-00016 An http-redirect element for \{0} already exists. Cannot add duplicate http-redirect. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref194]]AS-WEB-ADMIN-00017 \{0} protocol already exists. Cannot add duplicate protocol. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref195]]AS-WEB-ADMIN-00018 Failed to create protocol \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref196]]AS-WEB-ADMIN-00019 \{0} create failed: \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref197]]AS-WEB-ADMIN-00020 \{0} create failed. Given class is not a ProtocolFilter: \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref198]]AS-WEB-ADMIN-00021 \{0} create failed. Given class is not a ProtocolFinder: \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref199]]AS-WEB-ADMIN-00022 \{0} transport already exists. Cannot add duplicate transport. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref200]]AS-WEB-ADMIN-00023 Failed to create transport \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref201]]AS-WEB-ADMIN-00024 Please use only networklisteners. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref202]]AS-WEB-ADMIN-00025 Virtual Server named \{0} already exists. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref203]]AS-WEB-ADMIN-00026 \{0} create failed. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref204]]AS-WEB-ADMIN-00028 Specified http listener, \{0}, doesn''t exist. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref205]]AS-WEB-ADMIN-00029 \{0} delete failed. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref206]]AS-WEB-ADMIN-00030 \{0} Network Listener doesn't exist. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref207]]AS-WEB-ADMIN-00031 Deletion of NetworkListener \{0} failed. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref208]]AS-WEB-ADMIN-00032 \{0} http-redirect doesn't exist. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref209]]AS-WEB-ADMIN-00033 Deletion of http \{0} failed. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref210]]AS-WEB-ADMIN-00034 Deletion of http-redirect \{0} failed. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref211]]AS-WEB-ADMIN-00035 \{0} protocol doesn't exist. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref212]]AS-WEB-ADMIN-00036 \{0} protocol is being used in the network listener \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref213]]AS-WEB-ADMIN-00037 Deletion of Protocol \{0} failed. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref214]]AS-WEB-ADMIN-00038 \{0} delete failed: \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref215]]AS-WEB-ADMIN-00039 No \{0} element found with the name \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref216]]AS-WEB-ADMIN-00040 \{0} transport is being used in the network listener \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref217]]AS-WEB-ADMIN-00041 Deletion of Transport \{0} failed. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref218]]AS-WEB-ADMIN-00042 \{0} transport doesn''t exist. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref219]]AS-WEB-ADMIN-00043 \{0} delete failed. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref220]]AS-WEB-ADMIN-00044 Specified virtual server, \{0}, doesn''t exist. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref221]]AS-WEB-ADMIN-00045 Specified virtual server, \{0}, can not be deleted because it is referenced from http listener, \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref222]]AS-WEB-ADMIN-00046 Monitoring Registry does not exist. Possible causes are 1) Monitoring is not turned on or at a lower level 2) The corresponding container (web, ejb, etc.) is not loaded yet ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref223]]AS-WEB-UTIL-00001 Resource ''\{0}'' is missing ::
-  Cause: A naming exception is encountered +
-  Action: Check the list of resources
-
-[[sthref224]]AS-WEB-UTIL-00002 Failed tracking modifications of ''\{0}'' : \{1} ::
-  Cause: A ClassCastException is encountered +
-  Action: Check if the object is an instance of the class
-
-[[sthref225]]AS-WEB-UTIL-00003 WebappClassLoader.findClassInternal(\{0}) security exception: \{1} ::
-  Cause: An AccessControlException is encountered +
-  Action: Check if the resource is accessible
-
-[[sthref226]]AS-WEB-UTIL-00004 Security Violation, attempt to use Restricted Class: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref227]]AS-WEB-UTIL-00005 Class \{0} has unsupported major or minor version numbers, which are greater than those found in the Java Runtime Environment version \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref228]]AS-WEB-UTIL-00006 Unable to load class with name [\{0}], reason: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref229]]AS-WEB-UTIL-00007 The web application [\{0}] registered the
-JDBC driver [\{1}] but failed to unregister it when the web application
-was stopped. To prevent a memory leak, the JDBC Driver has been forcibly
-unregistered. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref230]]AS-WEB-UTIL-00008 JDBC driver de-registration failed for web application [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref231]]AS-WEB-UTIL-00009 Exception closing input stream during JDBC driver de-registration for web application [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref232]]AS-WEB-UTIL-00010 This web container has not yet been started ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref233]]AS-WEB-UTIL-00011 Failed to check for ThreadLocal references for web application [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref234]]AS-WEB-UTIL-00012 Unable to determine string representation of key of type [\{0}] ::
-  Cause: An Exception occurred +
-  Action: Check the exception for error
-
-[[sthref235]]AS-WEB-UTIL-00013 Unknown ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref236]]AS-WEB-UTIL-00014 Unable to determine string representation of value of type [\{0}] ::
-  Cause: An Exception occurred +
-  Action: Check the exception for error
-
-[[sthref237]]AS-WEB-UTIL-00015 The web application [\{0}] created a ThreadLocal with key of type [\{1}] (value [\{2}]). The ThreadLocal has been correctly set to null and the key will be removed by GC. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref238]]AS-WEB-UTIL-00016 The web application [\{0}] created a
-ThreadLocal with key of type [\{1}] (value [\{2}]) and a value of type
-[\{3}] (value [\{4}]) but failed to remove it when the web application
-was stopped. Threads are going to be renewed over time to try and avoid
-a probable memory leak. ::
-  Cause: Failed to remove a ThreadLocal when the web application was
-  stopped +
-  Action: Threads are going to be renewed over time to try and avoid a
-  probable memory leak.
-
-[[sthref239]]AS-WEB-UTIL-00017 Failed to find class sun.rmi.transport.Target to clear context class loader for web application [\{0}]. This is expected on non-Sun JVMs. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref240]]AS-WEB-UTIL-00018 Failed to clear context class loader referenced from sun.rmi.transport.Target for web application [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref241]]AS-WEB-UTIL-00019 Removed [\{0}] ResourceBundle references from the cache for web application [\{1}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref242]]AS-WEB-UTIL-00020 Failed to clear ResourceBundle references for web application [\{0}] ::
-  Cause: An Exception occurred +
-  Action: Check the exception for error
-
-[[sthref243]]AS-WEB-UTIL-00021 Illegal JAR entry detected with name \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref244]]AS-WEB-UTIL-00022 Unable to validate JAR entry with name \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref245]]AS-WEB-UTIL-00023 Unable to create \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref246]]AS-WEB-UTIL-00024 Unable to delete \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref247]]AS-WEB-UTIL-00025 Unable to read data for class with name [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref248]]AS-WEB-UTIL-00026 Unable to purge bean classes from BeanELResolver ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref249]]AS-WEB-UTIL-00027 extra-class-path component [\{0}] is not a valid pathname ::
-  Cause: A naming exception is encountered +
-  Action: Check the list of resources
-
-[[sthref250]]AS-WEB-UTIL-00028 The clearReferencesStatic is not consistent in context.xml for virtual servers ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref251]]AS-WEB-UTIL-00029 class-loader attribute dynamic-reload-interval in sun-web.xml not supported ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref252]]AS-WEB-UTIL-00030 Property element in sun-web.xml has null 'name' or 'value' ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref253]]AS-WEB-UTIL-00031 Ignoring invalid property [\{0}] = [\{1}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref254]]AS-WEB-UTIL-00032 The xml element should be [\{0}] rather than [\{1}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref255]]AS-WEB-UTIL-00033 This is an unexpected end of document ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref256]]AS-WEB-UTIL-00034 Unexpected type of ClassLoader. Expected: java.net.URLClassLoader, got: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref257]]AS-WEB-UTIL-00035 Unable to load class \{0}, reason: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref258]]AS-WEB-UTIL-00036 Invalid URLClassLoader path component: [\{0}] is neither a JAR file nor a directory ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref259]]AS-WEB-UTIL-00037 Error trying to scan the classes at \{0} for annotations in which a ServletContainerInitializer has expressed interest ::
-  Cause: An IOException is encountered +
-  Action: Verify if the path is correct
-
-[[sthref260]]AS-WEB-UTIL-00038 Ignoring [\{0}] during Tag Library Descriptor (TLD) processing ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref261]]AS-WEB-UTIL-00039 Unable to determine TLD resources for [\{0}] tag library, because class loader [\{1}] for [\{2}] is not an instance of java.net.URLClassLoader ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref262]]AS-WEB-CORE-00001 Configuration error: Must be attached to a Context ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref263]]AS-WEB-CORE-00002 Authenticator[\{0}]: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref264]]AS-WEB-CORE-00003 Exception getting debug value ::
-  Cause: Could not get the method or invoke underlying method +
-  Action: Verify the existence of such method and access permission
-
-[[sthref265]]AS-WEB-CORE-00004 Unexpected error forwarding or redirecting to login page ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref266]]AS-WEB-CORE-00005 Started ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref267]]AS-WEB-CORE-00006 Stopped ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref268]]AS-WEB-CORE-00007 Process session destroyed on \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref269]]AS-WEB-CORE-00008 Process request for ''\{0}'' ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref270]]AS-WEB-CORE-00009 Principal \{0} has already been authenticated ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref271]]AS-WEB-CORE-00010 Checking for SSO cookie ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref272]]AS-WEB-CORE-00011 SSO cookie is not present ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref273]]AS-WEB-CORE-00012 Checking for cached principal for \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref274]]AS-WEB-CORE-00013 Found cached principal \{0} with auth type \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref275]]AS-WEB-CORE-00014 No cached principal found, erasing SSO cookie ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref276]]AS-WEB-CORE-00015 Associate sso id \{0} with session \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref277]]AS-WEB-CORE-00016 Registering sso id \{0} for user \{1} with auth type \{2} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref278]]AS-WEB-CORE-00017 Looking up certificates ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref279]]AS-WEB-CORE-00018 No certificates included with this request ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref280]]AS-WEB-CORE-00019 No client certificate chain in this request ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref281]]AS-WEB-CORE-00020 Cannot authenticate with the provided credentials ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref282]]AS-WEB-CORE-00021 Unable to determine target of zero-arg dispatcher ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref283]]AS-WEB-CORE-00022 Unable to acquire RequestDispatcher for \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref284]]AS-WEB-CORE-00023 Unable to acquire RequestDispatcher for \{0} in servlet context \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref285]]AS-WEB-CORE-00024 Error invoking AsyncListener ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref286]]AS-WEB-CORE-00025 Asynchronous dispatch already in progress, must call ServletRequest.startAsync first ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref287]]AS-WEB-CORE-00026 Must not call AsyncContext.addListener after the container-initiated dispatch during which ServletRequest.startAsync was called has returned to the container ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref288]]AS-WEB-CORE-00027 Must not call AsyncContext.setTimeout after the container-initiated dispatch during which ServletRequest.startAsync was called has returned to the container ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref289]]AS-WEB-CORE-00028 The connector has already been initialized ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref290]]AS-WEB-CORE-00029 Error registering connector ::
-  Cause: Could not register connector +
-  Action: Verify domain name and type
-
-[[sthref291]]AS-WEB-CORE-00030 Failed to instanciate HttpHandler ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref292]]AS-WEB-CORE-00031 mod_jk invalid Adapter implementation: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref293]]AS-WEB-CORE-00032 Protocol handler instantiation failed: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref294]]AS-WEB-CORE-00033 The connector has already been started ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref295]]AS-WEB-CORE-00034 Protocol handler start failed: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref296]]AS-WEB-CORE-00035 Coyote connector has not been started ::
-  Cause: Could not stop processing requests via this Connector +
-  Action: Verify if the connector has not been started
-
-[[sthref297]]AS-WEB-CORE-00036 Protocol handler destroy failed: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref298]]AS-WEB-CORE-00037 An exception or error occurred in the container during the request processing ::
-  Cause: Could not process the request in the container +
-  Action: Verify certificate chain retrieved from the request header and
-  the correctness of request
-
-[[sthref299]]AS-WEB-CORE-00038 HTTP listener on port \{0} has been disabled ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref300]]AS-WEB-CORE-00039 Error parsing client cert chain into array of java.security.cert.X509Certificate instances ::
-  Cause: Could not get the SSL client certificate chain +
-  Action: Verify certificate chain and the request
-
-[[sthref301]]AS-WEB-CORE-00040 No Host matches server name \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref302]]AS-WEB-CORE-00041 Cannot use this object outside a servlet's service method or outside a filter's doFilter method ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref303]]AS-WEB-CORE-00042 Cannot set a null ReadListener object ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref304]]AS-WEB-CORE-00043 Cannot set a null WriteListener object ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref305]]AS-WEB-CORE-00044 Failed to skip \{0} characters in the underlying buffer of CoyoteReader on readLine(). ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref306]]AS-WEB-CORE-00045 Stream closed ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref307]]AS-WEB-CORE-00046 Already set read listener ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref308]]AS-WEB-CORE-00047 Cannot set ReaderListener for non-async or non-upgrade request ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref309]]AS-WEB-CORE-00048 Error in invoking ReadListener.onDataAvailable ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref310]]AS-WEB-CORE-00049 The WriteListener has already been set. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref311]]AS-WEB-CORE-00050 Cannot set WriteListener for non-async or non-upgrade request ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref312]]AS-WEB-CORE-00051 Error in invoking WriteListener.onWritePossible ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref313]]AS-WEB-CORE-00052 getReader() has already been called for this request ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref314]]AS-WEB-CORE-00053 getInputStream() has already been called for this request ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref315]]AS-WEB-CORE-00054 Unable to determine client remote address from proxy (returns null) ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref316]]AS-WEB-CORE-00055 Unable to resolve IP address \{0} into host name ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref317]]AS-WEB-CORE-00056 Exception thrown by attributes event listener ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref318]]AS-WEB-CORE-00057 Cannot call setAttribute with a null name ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref319]]AS-WEB-CORE-00058 Unable to determine canonical name of file [\{0}] specified for use with sendfile ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref320]]AS-WEB-CORE-00059 Unable to set request character encoding to \{0} from context \{1}, because request parameters have already been read, or ServletRequest.getReader() has already been called ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref321]]AS-WEB-CORE-00060 Attempt to re-login while the user identity already exists ::
-  Cause: Could not re-login +
-  Action: Verify if user has already login
-
-[[sthref322]]AS-WEB-CORE-00061 changeSessionId has been called without a session ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref323]]AS-WEB-CORE-00062 Cannot create a session after the response has been committed ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref324]]AS-WEB-CORE-00063 Invalid URI encoding; using HTTP default ::
-  Cause: Could not set URI converter +
-  Action: Verify URI encoding, using HTTP default
-
-[[sthref325]]AS-WEB-CORE-00064 Invalid URI character encoding; trying ascii ::
-  Cause: Could not encode URI character +
-  Action: Verify URI encoding, trying ascii
-
-[[sthref326]]AS-WEB-CORE-00065 Request is within the scope of a filter or servlet that does not support asynchronous operations ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref327]]AS-WEB-CORE-00066 ServletRequest.startAsync called again without any asynchronous dispatch, or called outside the scope of any such dispatch, or called again within the scope of the same dispatch ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref328]]AS-WEB-CORE-00067 Response already closed ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref329]]AS-WEB-CORE-00068 ServletRequest.startAsync called outside the scope of an async dispatch ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref330]]AS-WEB-CORE-00069 The request has not been put into asynchronous mode, must call ServletRequest.startAsync first ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref331]]AS-WEB-CORE-00070 Request already released from asynchronous mode ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref332]]AS-WEB-CORE-00071 Unable to perform error dispatch ::
-  Cause: Could not perform post-request processing as required by this
-  Valve +
-  Action: Verify if I/O exception or servlet exception occur
-
-[[sthref333]]AS-WEB-CORE-00072 Request.\{0} is called without multipart configuration. Either add a @MultipartConfig to the servlet, or a multipart-config element to web.xml ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref334]]AS-WEB-CORE-00073 This should not happen-breaking background lock: sess = \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref335]]AS-WEB-CORE-00074 Must not use request object outside the scope of a servlet's service or a filter's doFilter method ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref336]]AS-WEB-CORE-00075 Error during finishResponse ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref337]]AS-WEB-CORE-00076 getWriter() has already been called for this response ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref338]]AS-WEB-CORE-00077 getOutputStream() has already been called for this response ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref339]]AS-WEB-CORE-00078 Cannot reset buffer after response has been committed ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref340]]AS-WEB-CORE-00079 Cannot change buffer size after data has been written ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref341]]AS-WEB-CORE-00080 Cannot call sendError() after the response has been committed ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref342]]AS-WEB-CORE-00081 Cannot call sendRedirect() after the response has been committed ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref343]]AS-WEB-CORE-00082 Null response object ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref344]]AS-WEB-CORE-00083 Not allowed to call this
-javax.servlet.ServletContext method from a ServletContextListener that
-was neither declared in the application's deployment descriptor nor
-annotated with WebListener ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref345]]AS-WEB-CORE-00084 Exception thrown by attributes event listener ::
-  Cause: Could not modify attribute +
-  Action: Verify name and value from Servlet Context
-
-[[sthref346]]AS-WEB-CORE-00085 Name cannot be null ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref347]]AS-WEB-CORE-00086 Cannot forward after response has been committed ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref348]]AS-WEB-CORE-00087 Servlet \{0} is currently unavailable ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref349]]AS-WEB-CORE-00088 Allocate exception for servlet \{0} ::
-  Cause: Could not allocate servlet instance +
-  Action: Verify the configuration of wrapper
-
-[[sthref350]]AS-WEB-CORE-00089 Exceeded maximum depth for nested request dispatches: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref351]]AS-WEB-CORE-00090 Servlet.service() for servlet \{0} threw exception ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref352]]AS-WEB-CORE-00091 Release filters exception for servlet \{0} ::
-  Cause: Could not release filter chain +
-  Action: Verify the availability of current filter chain
-
-[[sthref353]]AS-WEB-CORE-00092 Deallocate exception for servlet \{0} ::
-  Cause: Could not deallocate the allocated servlet instance +
-  Action: Verify the availability of servlet instance
-
-[[sthref354]]AS-WEB-CORE-00093 ApplicationDispatcher[\{0}]: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref355]]AS-WEB-CORE-00094 ApplicationDispatcher[\{0}]: \{1} ::
-  Cause: Could not get logger from parent context +
-  Action: Verify if logger is null
-
-[[sthref356]]AS-WEB-CORE-00095 Exception processing \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref357]]AS-WEB-CORE-00096 Exception sending default error page ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref358]]AS-WEB-CORE-00097 Filter execution threw an exception ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref359]]AS-WEB-CORE-00098 ApplicationFilterConfig.doAsPrivilege ::
-  Cause: Could not release allocated filter instance +
-  Action: Verify the privilege
-
-[[sthref360]]AS-WEB-CORE-00099 ContainerBase.setLoader: stop: ::
-  Cause: Could not stop previous loader +
-  Action: Verify previous loader
-
-[[sthref361]]AS-WEB-CORE-00100 ContainerBase.setLoader: start: ::
-  Cause: Could not start new loader +
-  Action: Verify the configuration of container
-
-[[sthref362]]AS-WEB-CORE-00101 ContainerBase.setLogger: stop: ::
-  Cause: Could not stop previous logger +
-  Action: Verify previous logger
-
-[[sthref363]]AS-WEB-CORE-00102 ContainerBase.setLogger: start: ::
-  Cause: Could not start new logger +
-  Action: Verify the configuration of container
-
-[[sthref364]]AS-WEB-CORE-00103 ContainerBase.setManager: stop: ::
-  Cause: Could not stop previous manager +
-  Action: Verify previous manager
-
-[[sthref365]]AS-WEB-CORE-00104 ContainerBase.setManager: start: ::
-  Cause: Could not start new manager +
-  Action: Verify the configuration of container
-
-[[sthref366]]AS-WEB-CORE-00105 ContainerBase.setRealm: stop: ::
-  Cause: Could not stop previous realm +
-  Action: Verify previous realm
-
-[[sthref367]]AS-WEB-CORE-00106 ContainerBase.setRealm: start: ::
-  Cause: Could not start new realm +
-  Action: Verify the configuration of container
-
-[[sthref368]]AS-WEB-CORE-00107 addChild: Child name \{0} is not unique ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref369]]AS-WEB-CORE-00108 ContainerBase.addChild: start: ::
-  Cause: Could not start new child container +
-  Action: Verify the configuration of parent container
-
-[[sthref370]]AS-WEB-CORE-00109 ContainerBase.removeChild: stop: ::
-  Cause: Could not stop existing child container +
-  Action: Verify existing child container
-
-[[sthref371]]AS-WEB-CORE-00110 Container \{0} has already been started ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref372]]AS-WEB-CORE-00111 Container \{0} has not been started ::
-  Cause: Current container has not been started +
-  Action: Verify the current container
-
-[[sthref373]]AS-WEB-CORE-00112 Error stopping container \{0} ::
-  Cause: Could not stop child container +
-  Action: Verify the existence of current child container
-
-[[sthref374]]AS-WEB-CORE-00113 Error unregistering ::
-  Cause: Could not unregister current container +
-  Action: Verify if the container has been registered
-
-[[sthref375]]AS-WEB-CORE-00114 Exception invoking periodic operation: ::
-  Cause: Could not set the context ClassLoader +
-  Action: Verify the security permission
-
-[[sthref376]]AS-WEB-CORE-00115 Unable to configure \{0} for filter \{1} of servlet context \{2}, because this servlet context has already been initialized ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref377]]AS-WEB-CORE-00116 Unable to configure \{0} for servlet \{1} of servlet context \{2}, because this servlet context has already been initialized ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref378]]AS-WEB-CORE-00117 Unable to configure \{0} for filter \{1} of servlet context \{2}, because this servlet context has already been initialized ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref379]]AS-WEB-CORE-00118 Unable to configure mapping for filter \{0} of servlet context \{1}, because servlet names are null or empty ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref380]]AS-WEB-CORE-00119 Unable to configure mapping for filter \{0} of servlet context \{1}, because URL patterns are null or empty ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref381]]AS-WEB-CORE-00120 Creation of the naming context failed: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref382]]AS-WEB-CORE-00121 Failed to bind object: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref383]]AS-WEB-CORE-00122 Environment entry \{0} has an invalid type ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref384]]AS-WEB-CORE-00123 Environment entry \{0} has an invalid value ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref385]]AS-WEB-CORE-00124 Failed to unbind object: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref386]]AS-WEB-CORE-00125 Must not use request object outside the scope of a servlet's service or a filter's doFilter method ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref387]]AS-WEB-CORE-00126 Null response object ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref388]]AS-WEB-CORE-00127 Unable to configure \{0} for servlet \{1} of servlet context \{2}, because this servlet context has already been initialized ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref389]]AS-WEB-CORE-00128 Unable to configure mapping for servlet \{0} of servlet context \{1}, because URL patterns are null or empty ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref390]]AS-WEB-CORE-00129 Unable to configure \{0} session tracking cookie property for servlet context \{1}, because this servlet context has already been initialized ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref391]]AS-WEB-CORE-00130 Missing alternate docbase URL pattern or directory location ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref392]]AS-WEB-CORE-00131 LoginConfig cannot be null ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref393]]AS-WEB-CORE-00132 Form login page \{0} must start with a ''/'' ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref394]]AS-WEB-CORE-00133 Form error page \{0} must start with a ''/'' ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref395]]AS-WEB-CORE-00134 Child of a Context must be a Wrapper ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref396]]AS-WEB-CORE-00135 JSP file \{0} must start with a ''/'' ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref397]]AS-WEB-CORE-00136 Invalid <url-pattern> \{0} in security constraint ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref398]]AS-WEB-CORE-00137 ErrorPage cannot be null ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref399]]AS-WEB-CORE-00138 Error page location \{0} must start with a ''/'' ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref400]]AS-WEB-CORE-00139 Invalid status code \{0} for error-page mapping. HTTP error codes are defined in the range from 400-600 ::
-  Cause: Invalid error page code +
-  Action: Verify the error code
-
-[[sthref401]]AS-WEB-CORE-00140 Filter mapping specifies an unknown filter name \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref402]]AS-WEB-CORE-00141 Filter mapping must specify either a <url-pattern> or a <servlet-name> ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref403]]AS-WEB-CORE-00142 Invalid <url-pattern> \{0} in filter mapping ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref404]]AS-WEB-CORE-00143 Unable to call method \{0} on servlet context \{1}, because this servlet context has already been initialized ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref405]]AS-WEB-CORE-00144 Filter name is null or an empty String ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref406]]AS-WEB-CORE-00145 Unable to set \{0} session tracking mode on servlet context \{1}, because it is not supported ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref407]]AS-WEB-CORE-00146 Unable to add listener of type: \{0},
-because it does not implement any of the required
-ServletContextListener, ServletContextAttributeListener,
-ServletRequestListener, ServletRequestAttributeListener,
-HttpSessionListener, or HttpSessionAttributeListener interfaces ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref408]]AS-WEB-CORE-00147 Both parameter name and parameter value are required, parameter name is \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref409]]AS-WEB-CORE-00148 Duplicate context initialization parameter \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref410]]AS-WEB-CORE-00149 Invalid <url-pattern> \{0} in servlet mapping ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref411]]AS-WEB-CORE-00150 Servlet mapping specifies an unknown servlet name \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref412]]AS-WEB-CORE-00151 Unable to map Servlet [\{0}] to URL pattern [\{1}], because Servlet [\{2}] is already mapped to it ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref413]]AS-WEB-CORE-00152 Error creating instance listener \{0} ::
-  Cause: Could not create new instance +
-  Action: Verify the configuration of Wrapper and InstanceListener
-
-[[sthref414]]AS-WEB-CORE-00153 Error creating lifecycle listener \{0} ::
-  Cause: Could not create new instance for life cycle listener +
-  Action: Verify the permit of current class to access newInstance()
-
-[[sthref415]]AS-WEB-CORE-00154 Error creating container listener \{0} ::
-  Cause: Could not create new instance for container listener +
-  Action: Verify the permit of current class to access newInstance()
-
-[[sthref416]]AS-WEB-CORE-00155 Reloading this Context has started ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref417]]AS-WEB-CORE-00156 Error stopping context \{0} ::
-  Cause: Could not stop context component +
-  Action: Verify stop() to guarantee the whole domain is being stopped
-  correctly
-
-[[sthref418]]AS-WEB-CORE-00157 Error starting context \{0} ::
-  Cause: Could not start context component +
-  Action: Verify start() to guarantee the context component is being
-  started correctly
-
-[[sthref419]]AS-WEB-CORE-00158 Error invoking requestInitialized method on ServletRequestListener \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref420]]AS-WEB-CORE-00159 Error invoking requestDestroyed method on ServletRequestListener \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref421]]AS-WEB-CORE-00160 Exception starting filter \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref422]]AS-WEB-CORE-00161 Servlet with name \{0} does not have any servlet-class or jsp-file configured ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref423]]AS-WEB-CORE-00162 Filter with name \{0} does not have any class configured ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref424]]AS-WEB-CORE-00163 Exception sending context destroyed event to listener instance of class \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref425]]AS-WEB-CORE-00164 Error starting resources in context \{0} ::
-  Cause: Could not get the proxy directory context +
-  Action: Verify the existence of the context
-
-[[sthref426]]AS-WEB-CORE-00165 Error stopping static resources ::
-  Cause: Could not deallocate resource and destroy proxy +
-  Action: Verify if a fatal error that prevents this component from
-  being used
-
-[[sthref427]]AS-WEB-CORE-00166 Current container has already been started with a DirContext object ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref428]]AS-WEB-CORE-00167 Error starting resources in context \{0} with Exception message: \{1} ::
-  Cause: Could not get the proxy directory context +
-  Action: Verify the existence of the context
-
-[[sthref429]]AS-WEB-CORE-00168 Form login page \{0} must start with a ''/'' in Servlet 2.4 ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref430]]AS-WEB-CORE-00169 Form error page \{0} must start with a ''/'' in Servlet 2.4 ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref431]]AS-WEB-CORE-00170 JSP file \{0} must start with a ''/'' in Servlet 2.4 ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref432]]AS-WEB-CORE-00171 Container \{0} has already been started ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref433]]AS-WEB-CORE-00172 Error initialzing resources\{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref434]]AS-WEB-CORE-00173 Error in dependency check for standard context \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref435]]AS-WEB-CORE-00174 Startup of context \{0} failed due to previous errors ::
-  Cause: Could not startup servlet +
-  Action: Verify the initialization process
-
-[[sthref436]]AS-WEB-CORE-00175 Exception during cleanup after start failed ::
-  Cause: Stop staring up failed +
-  Action: Verify configurations to stop starting up
-
-[[sthref437]]AS-WEB-CORE-00176 Error invoking ServletContainerInitializer \{0} ::
-  Cause: Could not instantiate servlet container initializer +
-  Action: Verify the access permission of current class loader
-
-[[sthref438]]AS-WEB-CORE-00177 Error resetting context \{0} ::
-  Cause: Could not restore original state +
-  Action: Verify if extend 'this' method, and make sure to clean up
-
-[[sthref439]]AS-WEB-CORE-00178 URL pattern \{0} must start with a ''/'' in Servlet 2.4 ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref440]]AS-WEB-CORE-00179 Failed to create work directory \{0} ::
-  Cause: Could not create work directory +
-  Action: Verify the directory name, and access permission
-
-[[sthref441]]AS-WEB-CORE-00180 The URL pattern \{0} contains a CR or LF and so can never be matched ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref442]]AS-WEB-CORE-00181 Missing name attribute in \{0} ::
-  Cause: Could not get the attribute +
-  Action: Verify the existence of the value associated with the key
-
-[[sthref443]]AS-WEB-CORE-00182 Malformed name \{0}, value of name attribute does not start with ''//'' ::
-  Cause: Illegal path name +
-  Action: Verify path name
-
-[[sthref444]]AS-WEB-CORE-00183 Path \{0} does not start with ''/'' ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref445]]AS-WEB-CORE-00184 Path \{0} does not start with ''/'' and is not empty ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref446]]AS-WEB-CORE-00185 Error during mapping ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref447]]AS-WEB-CORE-00186 Unable to create custom ObjectInputStream ::
-  Cause: Could not create custom ObjectInputStream +
-  Action: Verify input stream and class loader
-
-[[sthref448]]AS-WEB-CORE-00187 Error during bindThread ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref449]]AS-WEB-CORE-00188 Servlet \{0} threw load() exception ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref450]]AS-WEB-CORE-00189 Error updating ctx with jmx \{0} \{1} \{2} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref451]]AS-WEB-CORE-00190 Error registering wrapper with jmx \{0} \{1} \{2} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref452]]AS-WEB-CORE-00191 Null filter instance ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref453]]AS-WEB-CORE-00192 Servlet name is null or an empty String ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref454]]AS-WEB-CORE-00193 Null servlet instance ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref455]]AS-WEB-CORE-00194 Child of an Engine must be a Host ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref456]]AS-WEB-CORE-00195 Engine cannot have a parent Container ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref457]]AS-WEB-CORE-00196 Error registering ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref458]]AS-WEB-CORE-00197 No Host matches server name \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref459]]AS-WEB-CORE-00198 Host name is required ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref460]]AS-WEB-CORE-00199 Child of a Host must be a Context ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref461]]AS-WEB-CORE-00200 MAPPING configuration error for request URI \{0} ::
-  Cause: No context has been selected +
-  Action: Verify the uri or default context
-
-[[sthref462]]AS-WEB-CORE-00201 ErrorPage must not be null ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref463]]AS-WEB-CORE-00202 XML validation enabled ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref464]]AS-WEB-CORE-00203 Create Host deployer for direct deployment ( non-jmx ) ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref465]]AS-WEB-CORE-00204 Error creating deployer ::
-  Cause: Could not instantiate deployer +
-  Action: Verify access permission
-
-[[sthref466]]AS-WEB-CORE-00205 Error registering host \{0} ::
-  Cause: Initialization failed +
-  Action: Verify domain and host name
-
-[[sthref467]]AS-WEB-CORE-00206 Couldn't load specified error report valve class: \{0} ::
-  Cause: Could not load instance of host valve +
-  Action: Verify access permission
-
-[[sthref468]]AS-WEB-CORE-00207 Context path is required ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref469]]AS-WEB-CORE-00208 Invalid context path: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref470]]AS-WEB-CORE-00209 Context path \{0} is already in use ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref471]]AS-WEB-CORE-00210 URL to web application archive is required ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref472]]AS-WEB-CORE-00211 Installing web application at context path \{0} from URL \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref473]]AS-WEB-CORE-00212 Invalid URL for web application archive: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref474]]AS-WEB-CORE-00213 Only web applications in the Host web application directory can be installed, invalid URL: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref475]]AS-WEB-CORE-00214 Context path \{0} must match the directory or WAR file name: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref476]]AS-WEB-CORE-00215 Error installing ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref477]]AS-WEB-CORE-00216 Error deploying application at context path \{0} ::
-  Cause: Could not initiate life cycle listener +
-  Action: Verify the access permission
-
-[[sthref478]]AS-WEB-CORE-00217 URL to configuration file is required ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref479]]AS-WEB-CORE-00218 Use of configuration file is not allowed ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref480]]AS-WEB-CORE-00219 Processing Context configuration file URL \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref481]]AS-WEB-CORE-00220 Installing web application from URL \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref482]]AS-WEB-CORE-00221 Context path \{0} is not currently in use ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref483]]AS-WEB-CORE-00222 Removing web application at context path \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref484]]AS-WEB-CORE-00223 Error removing application at context path \{0} ::
-  Cause: Could not remove an existing child Container +
-  Action: Verify if there are any I/O errors
-
-[[sthref485]]AS-WEB-CORE-00224 Starting web application at context path \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref486]]AS-WEB-CORE-00225 Starting web application at context path \{0} failed ::
-  Cause: Could not start web application at current context path +
-  Action: Verify if start() is called before any of the public methods
-  of this component are utilized, and it should send START_EVENT to any
-  registered listeners
-
-[[sthref487]]AS-WEB-CORE-00226 Stopping web application at context path \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref488]]AS-WEB-CORE-00227 Stopping web application at context path \{0} failed ::
-  Cause: Could not terminate the active use of the public methods of
-  this component +
-  Action: Verify if stop() is the last one called on a given instance of
-  this component, and it should send STOP_EVENT to any registered
-  listeners
-
-[[sthref489]]AS-WEB-CORE-00228 Failed to remove file \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref490]]AS-WEB-CORE-00229 Remote Client Aborted Request, IOException: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref491]]AS-WEB-CORE-00230 The error-page \{0} or \{1} does not exist ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref492]]AS-WEB-CORE-00231 No Context configured to process this request ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref493]]AS-WEB-CORE-00232 Pipeline has already been started ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref494]]AS-WEB-CORE-00233 Pipeline has not been started ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref495]]AS-WEB-CORE-00234 Exception occurred when stopping GlassFishValve in StandardPipeline.setBasic ::
-  Cause: Could not terminate the active use of the public methods of
-  this component +
-  Action: Verify if stop() is the last one called on a given instance of
-  this component, and it should send STOP_EVENT to any registered
-  listeners
-
-[[sthref496]]AS-WEB-CORE-00235 Exception occurred when starting GlassFishValve in StandardPipeline.setBasic ::
-  Cause: Could not prepare for the beginning of active use of the public
-  methods of this component +
-  Action: Verify if start() is called before any of the public methods
-  of this component are utilized, and it should send START_EVENT to any
-  registered listeners
-
-[[sthref497]]AS-WEB-CORE-00236 Exception occurred when starting GlassFishValve in StandardPipline.addValve ::
-  Cause: Specific valve could not be associated with current container +
-  Action: Verify the availability of current valve
-
-[[sthref498]]AS-WEB-CORE-00237 Unable to add valve \{0} ::
-  Cause: Could not add tomcat-style valve +
-  Action: Verify if this is a GlassFish-style valve that was compiled
-  against the old org.apache.catalina.Valve interface
-
-[[sthref499]]AS-WEB-CORE-00238 No more Valves in the Pipeline processing this request ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref500]]AS-WEB-CORE-00239 HttpUpgradeHandler handler cannot be null ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref501]]AS-WEB-CORE-00240 Exception occurred when stopping GlassFishValve in StandardPipeline.removeValve ::
-  Cause: Could not terminate the active use of the public methods of
-  this component +
-  Action: Verify if stop() is the last one called on a given instance of
-  this component, and it should send STOP_EVENT to any registered
-  listeners
-
-[[sthref502]]AS-WEB-CORE-00241 StandardPipeline[\{0}]: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref503]]AS-WEB-CORE-00242 StandardPipeline[null]: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref504]]AS-WEB-CORE-00243 LifecycleException occurred during service initialization: \{0} ::
-  Cause: This service was already initialized +
-  Action: Verify if the service is not already initialized
-
-[[sthref505]]AS-WEB-CORE-00244 Exception StandardServer.await: create[\{0}] ::
-  Cause: An I/O error occurred when opening the socket +
-  Action: Verify the port number and try again
-
-[[sthref506]]AS-WEB-CORE-00245 StandardServer.accept security exception: \{0} ::
-  Cause: Could not get connection +
-  Action: Verify the connection settings and try again
-
-[[sthref507]]AS-WEB-CORE-00246 StandardServer.await: accept: \{0} ::
-  Cause: Could not get input stream +
-  Action: Verify the input stream and try again
-
-[[sthref508]]AS-WEB-CORE-00247 StandardServer.await: read: \{0} ::
-  Cause: Could not read from input stream +
-  Action: Verify the input stream and try again
-
-[[sthref509]]AS-WEB-CORE-00248 StandardServer.await: Invalid command \{0} received ::
-  Cause: Invalid command +
-  Action: Verify the command
-
-[[sthref510]]AS-WEB-CORE-00249 This service has already been initialized ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref511]]AS-WEB-CORE-00250 Error registering: \{0} ::
-  Cause: Could not register ObjectName: "Catalina:type=Server" +
-  Action: Verify the configuration and try again
-
-[[sthref512]]AS-WEB-CORE-00251 This service has already been started ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref513]]AS-WEB-CORE-00252 Starting service \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref514]]AS-WEB-CORE-00253 Stopping service \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref515]]AS-WEB-CORE-00254 This service has already been initialized ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref516]]AS-WEB-CORE-00255 Error registering Service at domain \{0} ::
-  Cause: Could not register service +
-  Action: Verify the domain name and service name
-
-[[sthref517]]AS-WEB-CORE-00256 Service initializing at \{0} failed ::
-  Cause: Could not pre-startup initialization +
-  Action: Verify if server was already initialized
-
-[[sthref518]]AS-WEB-CORE-00257 Parent container of a Wrapper must be a Context ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref519]]AS-WEB-CORE-00258 Wrapper container may not have child containers ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref520]]AS-WEB-CORE-00259 Cannot allocate servlet \{0} because it is being unloaded ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref521]]AS-WEB-CORE-00260 Error allocating a servlet instance ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref522]]AS-WEB-CORE-00261 Class \{0} is not a Servlet ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref523]]AS-WEB-CORE-00262 Error instantiating servlet class \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref524]]AS-WEB-CORE-00263 Servlet of class \{0} is privileged and cannot be loaded by this web application ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref525]]AS-WEB-CORE-00264 No servlet class has been specified for servlet \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref526]]AS-WEB-CORE-00265 Wrapper cannot find Loader for servlet \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref527]]AS-WEB-CORE-00266 Wrapper cannot find servlet class \{0} or a class it depends on ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref528]]AS-WEB-CORE-00267 Servlet.init() for servlet \{0} threw exception ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref529]]AS-WEB-CORE-00268 Servlet execution threw an exception ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref530]]AS-WEB-CORE-00269 Marking servlet \{0} as unavailable ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref531]]AS-WEB-CORE-00270 Waiting for \{0} instance(s) of \{1} to be deallocated ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref532]]AS-WEB-CORE-00271 Servlet.destroy() for servlet \{0} threw exception ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref533]]AS-WEB-CORE-00272 Servlet \{0} threw unload() exception ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref534]]AS-WEB-CORE-00273 Error loading \{0} \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref535]]AS-WEB-CORE-00274 This application is not currently available ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref536]]AS-WEB-CORE-00275 Servlet \{0} is currently unavailable ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref537]]AS-WEB-CORE-00276 Servlet \{0} is not available ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref538]]AS-WEB-CORE-00277 Allocate exception for servlet \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref539]]AS-WEB-CORE-00278 Exception for sending acknowledgment of a request: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref540]]AS-WEB-CORE-00280 Release filters exception for servlet \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref541]]AS-WEB-CORE-00281 Deallocate exception for servlet \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref542]]AS-WEB-CORE-00283 StandardWrapperValve[\{0}]: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref543]]AS-WEB-CORE-00284 Failed to skip \{0} bytes in the underlying buffer of MultipartStream on close(). ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref544]]AS-WEB-CORE-00285 file data is empty. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref545]]AS-WEB-CORE-00286 Unable to create Random source using class [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref546]]AS-WEB-CORE-00287 The property "\{0}" is not defined for filters of type "\{1}" ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref547]]AS-WEB-CORE-00288 Error registering loader ::
-  Cause: Could not register loader +
-  Action: Verify Object name
-
-[[sthref548]]AS-WEB-CORE-00289 Error registering jndi stream handler ::
-  Cause: Could not register jndi stream handler +
-  Action: Verify if the application has already set a factory, if a
-  security manager exists and itscheckSetFactory method does not allow
-  the operation
-
-[[sthref549]]AS-WEB-CORE-00290 Loader has already been started ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref550]]AS-WEB-CORE-00291 No resources for \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref551]]AS-WEB-CORE-00292 LifecycleException ::
-  Cause: Could not construct a class loader +
-  Action: Verify if there is any life cycle exception
-
-[[sthref552]]AS-WEB-CORE-00293 Loader has not yet been started ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref553]]AS-WEB-CORE-00294 Cannot set reloadable property to \{0} ::
-  Cause: Could not set reloadable property +
-  Action: Verify the value for the property
-
-[[sthref554]]AS-WEB-CORE-00295 WebappLoader[\{0}]: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref555]]AS-WEB-CORE-00296 No work dir for \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref556]]AS-WEB-CORE-00297 Failed to create destination directory to copy resources ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref557]]AS-WEB-CORE-00298 Failed to copy resources ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref558]]AS-WEB-CORE-00299 Failed to create work directory to \{0} ::
-  Cause: Could not create work directory +
-  Action: Verify the PATH
-
-[[sthref559]]AS-WEB-CORE-00300 File Logger has already been started ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref560]]AS-WEB-CORE-00301 File Logger has not yet been started ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref561]]AS-WEB-CORE-00302 Unknown container \{0} ::
-  Cause: Unknown container for implementation of StandardEngine
-  interface +
-  Action: Verify the current container
-
-[[sthref562]]AS-WEB-CORE-00303 Null engine !! \{0} ::
-  Cause: Could not get engine +
-  Action: Verify current container
-
-[[sthref563]]AS-WEB-CORE-00304 Unable to create javax.management.ObjectName for Logger ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref564]]AS-WEB-CORE-00305 Can't register logger \{0} ::
-  Cause: Could not register logger +
-  Action: Verify registration is called after configure()
-
-[[sthref565]]AS-WEB-CORE-00306 Setting JAAS app name \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref566]]AS-WEB-CORE-00307 Login exception authenticating username \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref567]]AS-WEB-CORE-00308 Username \{0} NOT authenticated due to failed login ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref568]]AS-WEB-CORE-00309 Username \{0} NOT authenticated due to expired account ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref569]]AS-WEB-CORE-00310 Username \{0} NOT authenticated due to expired credential ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref570]]AS-WEB-CORE-00311 error ::
-  Cause: Could not authenticate by using the current username +
-  Action: Verify the username and credential
-
-[[sthref571]]AS-WEB-CORE-00312 Illegal digestEncoding: \{0} ::
-  Cause: Could not convert the char array to byte array with respect to
-  given charset +
-  Action: Verify the current charset
-
-[[sthref572]]AS-WEB-CORE-00313 Access to the requested resource has been denied ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref573]]AS-WEB-CORE-00314 Configuration error: Cannot perform access control without an authenticated principal ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref574]]AS-WEB-CORE-00315 Username \{0} has role \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref575]]AS-WEB-CORE-00316 Username \{0} does NOT have role \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref576]]AS-WEB-CORE-00317 This Realm has already been started ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref577]]AS-WEB-CORE-00318 Invalid message digest algorithm \{0} specified ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref578]]AS-WEB-CORE-00319 This Realm has not yet been started ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref579]]AS-WEB-CORE-00320 Error digesting user credentials ::
-  Cause: Could not digest user credentials +
-  Action: Verify the current credential
-
-[[sthref580]]AS-WEB-CORE-00321 Couldn't get MD5 digest ::
-  Cause: Could not get instance of MessageDigest based on MD5 +
-  Action: Verify if it supports a MessageDigestSpi implementation for
-  the specified algorithm
-
-[[sthref581]]AS-WEB-CORE-00322 An exception occurs when running the PrivilegedExceptionAction block. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref582]]AS-WEB-CORE-00323 Only skipped [\{0}] bytes when [\{1}] were requested ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref583]]AS-WEB-CORE-00324 Directory Listing For \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref584]]AS-WEB-CORE-00325 Up To \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref585]]AS-WEB-CORE-00326 Filename ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref586]]AS-WEB-CORE-00327 Size ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref587]]AS-WEB-CORE-00328 Last Modified ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref588]]AS-WEB-CORE-00329 Container has not called setWrapper() for this servlet ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref589]]AS-WEB-CORE-00330 Cannot call invoker servlet with a named dispatcher ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref590]]AS-WEB-CORE-00331 No servlet name or class was specified in path \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref591]]AS-WEB-CORE-00332 Cannot create servlet wrapper for path \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref592]]AS-WEB-CORE-00333 Cannot allocate servlet instance for path \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref593]]AS-WEB-CORE-00334 Cannot deallocate servlet instance for path \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref594]]AS-WEB-CORE-00335 JAXP initialization failed ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref595]]AS-WEB-CORE-00336 Ignored external entity, publicID: \{0}, systemID: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref596]]AS-WEB-CORE-00337 setAttribute: Session attribute with name \{0} has value that is not of type String (required for cookie-based persistence) ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref597]]AS-WEB-CORE-00338 Loading Session \{0} from file \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref598]]AS-WEB-CORE-00339 Removing Session \{0} at file \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref599]]AS-WEB-CORE-00340 Saving Session \{0} to file \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref600]]AS-WEB-CORE-00341 Unable to delete file [\{0}] which is preventing the creation of the session storage location ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref601]]AS-WEB-CORE-00342 Unable to create directory [\{0}] for the storage of session data ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref602]]AS-WEB-CORE-00343 SQL Error \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref603]]AS-WEB-CORE-00344 Loading Session \{0} from database \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref604]]AS-WEB-CORE-00345 Removing Session \{0} at database \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref605]]AS-WEB-CORE-00346 Saving Session \{0} to database \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref606]]AS-WEB-CORE-00347 The database connection is null or was found to be closed. Trying to re-open it. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref607]]AS-WEB-CORE-00348 The re-open on the database failed. The database could be down. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref608]]AS-WEB-CORE-00349 A SQL exception occurred \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref609]]AS-WEB-CORE-00350 JDBC driver class not found \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref610]]AS-WEB-CORE-00351 Exception initializing random number generator of class \{0} ::
-  Cause: Could not construct and seed a new random number generator +
-  Action: Verify if the current random number generator class is
-
-[[sthref611]]AS-WEB-CORE-00352 Seeding random number generator class \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref612]]AS-WEB-CORE-00353 Failed to close randomIS. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref613]]AS-WEB-CORE-00354 Error registering ::
-  Cause: Could not construct an object name +
-  Action: Verify the format of domain, path, host. And make sure they
-  are no null
-
-[[sthref614]]AS-WEB-CORE-00355 setAttribute: Non-serializable attribute with name \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref615]]AS-WEB-CORE-00356 Session not found \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref616]]AS-WEB-CORE-00357 Checking isLoaded for id, \{0}, \{1} ::
-  Cause: Could not find session associated with given ID +
-  Action: Verify the session ID
-
-[[sthref617]]AS-WEB-CORE-00358 Exception clearing the Store ::
-  Cause: Could not instantiate PrivilegedStoreClear() +
-  Action: Verify if specified action's run() could remove all sessions
-  from store
-
-[[sthref618]]AS-WEB-CORE-00359 createSession: Too many active sessions ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref619]]AS-WEB-CORE-00360 Exception in the Store during load ::
-  Cause: Could not instantiate PrivilegedStoreKeys() +
-  Action: Verify if specified action's run() does not throw exception
-
-[[sthref620]]AS-WEB-CORE-00361 Loading \{0} persisted sessions ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref621]]AS-WEB-CORE-00362 Failed load session from store ::
-  Cause: Could not restore sessions from store to manager's list +
-  Action: Verify if the sessions are valid
-
-[[sthref622]]AS-WEB-CORE-00363 Can't load sessions from store ::
-  Cause: Could not load sessions from store +
-  Action: Verify if there is no exception to get the array containing
-  the session identifiers of all Sessions currently saved in this Store
-
-[[sthref623]]AS-WEB-CORE-00364 Exception in the Store during removeSession ::
-  Cause: Could not instantiate PrivilegedStoreRemove() +
-  Action: Verify if the specified action's run() could remove the
-  session with the specified session identifier from this Store
-
-[[sthref624]]AS-WEB-CORE-00365 Exception removing session ::
-  Cause: Could not remove specified session identifier from store +
-  Action: Verify if there is no I/O error occur
-
-[[sthref625]]AS-WEB-CORE-00366 Saving \{0} persisted sessions ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref626]]AS-WEB-CORE-00367 Exception in the Store during swapIn ::
-  Cause: Could not instantiate PrivilegedStoreLoad +
-  Action: Verify if action's run() can load and return the Session
-  associated with the specified session identifier from this Store,
-  without removing it
-
-[[sthref627]]AS-WEB-CORE-00368 Error deserializing Session \{0}: \{1} ::
-  Cause: De serialization error occur, and could not load and return the
-  session associated with the specified session identifier from this
-  Store +
-  Action: Verify if ClassNotFoundException occur
-
-[[sthref628]]AS-WEB-CORE-00369 Session swapped in is invalid or expired ::
-  Cause: Session swapped in is invalid or expired +
-  Action: Verify if current session is valid
-
-[[sthref629]]AS-WEB-CORE-00370 Swapping session \{0} in from Store ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref630]]AS-WEB-CORE-00371 Exception in the Store during writeSession ::
-  Cause: Could not write the provided session to the Store +
-  Action: Verify if there are any I/O errors occur
-
-[[sthref631]]AS-WEB-CORE-00372 Error serializing Session \{0}: \{1} ::
-  Cause: Could not save the specified Session into this Store +
-  Action: Verify if there are any I/O errors occur
-
-[[sthref632]]AS-WEB-CORE-00373 Manager has already been started ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref633]]AS-WEB-CORE-00374 No Store configured, persistence disabled ::
-  Cause: Could not prepare for the beginning of active use of the public
-  methods of this component +
-  Action: Verify if Store has been configured
-
-[[sthref634]]AS-WEB-CORE-00375 Manager has not yet been started ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref635]]AS-WEB-CORE-00376 Invalid session timeout setting \{0} ::
-  Cause: Could not set session timeout from given parameter +
-  Action: Verify the number format for session timeout setting
-
-[[sthref636]]AS-WEB-CORE-00377 Swapping session \{0} to Store, idle for \{1} seconds ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref637]]AS-WEB-CORE-00378 Too many active sessions, \{0}, looking for idle sessions to swap out ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref638]]AS-WEB-CORE-00379 Swapping out session \{0}, idle for \{1} seconds too many sessions active ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref639]]AS-WEB-CORE-00380 Backing up session \{0} to Store, idle for \{1} seconds ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref640]]AS-WEB-CORE-00381 createSession: Too many active sessions ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref641]]AS-WEB-CORE-00382 Loading persisted sessions from \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref642]]AS-WEB-CORE-00383 IOException while loading persisted sessions: \{0} ::
-  Cause: Could not creates an ObjectInputStream +
-  Action: Verify if there are IO exceptions
-
-[[sthref643]]AS-WEB-CORE-00384 ClassNotFoundException while loading persisted sessions: \{0} ::
-  Cause: Could not deserialize and create StandardSession instance +
-  Action: Verify the class for an object being restored can be found
-
-[[sthref644]]AS-WEB-CORE-00385 Saving persisted sessions to \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref645]]AS-WEB-CORE-00386 IOException while saving persisted sessions: \{0} ::
-  Cause: Could not creates an ObjectOutputStream instance +
-  Action: Verify if there are any I/O exceptions
-
-[[sthref646]]AS-WEB-CORE-00387 Exception loading sessions from persistent storage ::
-  Cause: Could not load any currently active sessions +
-  Action: Verify if the serialized class is valid and if there are any
-  I/O exceptions
-
-[[sthref647]]AS-WEB-CORE-00388 Exception unloading sessions to persistent storage ::
-  Cause: Could not save any currently active sessions +
-  Action: Verify if there are any I/O exceptions
-
-[[sthref648]]AS-WEB-CORE-00389 Session id change event listener threw exception ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref649]]AS-WEB-CORE-00390 Session event listener threw exception ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref650]]AS-WEB-CORE-00391 Session already invalidated ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref651]]AS-WEB-CORE-00392 Session attribute event listener threw exception ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref652]]AS-WEB-CORE-00393 setAttribute: name parameter cannot be null ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref653]]AS-WEB-CORE-00394 Session binding event listener threw exception ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref654]]AS-WEB-CORE-00395 Cannot serialize session attribute \{0} for session \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref655]]AS-WEB-CORE-00396 StoreBase has already been started ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref656]]AS-WEB-CORE-00397 StoreBase has not been started ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref657]]AS-WEB-CORE-00398 Class loader creation threw exception ::
-  Cause: Could not create class loader +
-  Action: Verify the availability of current repository
-
-[[sthref658]]AS-WEB-CORE-00399 Error processing command line arguments ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref659]]AS-WEB-CORE-00400 Catalina.stop: ::
-  Cause: Could not stop server +
-  Action: Verify if the input file exist or if there are any I/O
-  exceptions, parsing exceptions
-
-[[sthref660]]AS-WEB-CORE-00401 Can't load server.xml from \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref661]]AS-WEB-CORE-00402 Catalina.start: ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref662]]AS-WEB-CORE-00403 Catalina.start: ::
-  Cause: Could not initialize the server +
-  Action: Verify if the server has already been initialized
-
-[[sthref663]]AS-WEB-CORE-00404 Initialization processed in \{0} ms ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref664]]AS-WEB-CORE-00405 Error loading configuration ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref665]]AS-WEB-CORE-00406 Server startup in \{0} ms ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref666]]AS-WEB-CORE-00407 Failed to load catalina.properties ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref667]]AS-WEB-CORE-00408 Lifecycle event data object \{0} is not a Context ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref668]]AS-WEB-CORE-00409 alt-dd file \{0} not found ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref669]]AS-WEB-CORE-00410 Missing application web.xml, using defaults only \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref670]]AS-WEB-CORE-00411 Parse error in application web.xml at line \{0} and column \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref671]]AS-WEB-CORE-00412 Parse error in application web.xml ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref672]]AS-WEB-CORE-00413 Error closing application web.xml ::
-  Cause: Could not close this input stream and releases any system
-  resources associated with the stream. +
-  Action: Verify if any I/O errors occur
-
-[[sthref673]]AS-WEB-CORE-00414 No Realm has been configured to authenticate against ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref674]]AS-WEB-CORE-00415 Cannot configure an authenticator for method \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref675]]AS-WEB-CORE-00416 Cannot instantiate an authenticator of class \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref676]]AS-WEB-CORE-00417 Configured an authenticator for method \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref677]]AS-WEB-CORE-00418 No default web.xml ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref678]]AS-WEB-CORE-00419 Missing default web.xml, using application web.xml only \{0} \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref679]]AS-WEB-CORE-00420 Parse error in default web.xml at line \{0} and column \{1} ::
-  Cause: Could not parse the content of the specified input source using
-  this Digester +
-  Action: Verify the input parameter, if any I/O errors occur
-
-[[sthref680]]AS-WEB-CORE-00421 Parse error in default web.xml ::
-  Cause: Could not parse the content of the specified input source using
-  this Digester +
-  Action: Verify the input parameter, if any I/O errors occur
-
-[[sthref681]]AS-WEB-CORE-00422 Error closing default web.xml ::
-  Cause: Could not close this input stream and releases any system
-  resources associated with the stream. +
-  Action: Verify if any I/O errors occur
-
-[[sthref682]]AS-WEB-CORE-00423 ContextConfig: Initializing ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref683]]AS-WEB-CORE-00424 Exception fixing docBase ::
-  Cause: Could not adjust docBase +
-  Action: Verify if any I/O errors occur
-
-[[sthref684]]AS-WEB-CORE-00425 ContextConfig: Processing START ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref685]]AS-WEB-CORE-00426 ContextConfig: Processing STOP ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref686]]AS-WEB-CORE-00427 Security role name \{0} used in an <auth-constraint> without being defined in a <security-role> in context [\{1}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref687]]AS-WEB-CORE-00428 Security role name \{0} used in a <run-as> without being defined in a <security-role> in context [\{1}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref688]]AS-WEB-CORE-00429 Security role name \{0} used in a <role-link> without being defined in a <security-role> in context [\{1}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref689]]AS-WEB-CORE-00430 No web.xml, using defaults \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref690]]AS-WEB-CORE-00431 No engines have been defined yet ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref691]]AS-WEB-CORE-00432 Engine.start exception ::
-  Cause: Could not prepare for the beginning of active use of the public
-  methods of this component. +
-  Action: Verify if start() be called before any of the public methods
-  of this component are utilized
-
-[[sthref692]]AS-WEB-CORE-00433 Couldn't load SSL server socket factory. ::
-  Cause: Could not instantiate ServerSocketFactory +
-  Action: Verify access permission to this class
-
-[[sthref693]]AS-WEB-CORE-00434 Couldn't create connector. ::
-  Cause: Could not instantiate connector +
-  Action: Verify access permission to this class
-
-[[sthref694]]AS-WEB-CORE-00435 Connector.stop ::
-  Cause: Could not remove the specified Connector from the set
-  associated from this Service +
-  Action: Verify if connector has already been stopped or removed
-
-[[sthref695]]AS-WEB-CORE-00436 Engine.stop exception ::
-  Cause: Could not terminate the active use of the public methods of
-  this component +
-  Action: Verify if stop() is the last one called on a given instance of
-  this component
-
-[[sthref696]]AS-WEB-CORE-00437 Specified Authenticator is not a Valve ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref697]]AS-WEB-CORE-00438 Embedded service has already been started ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref698]]AS-WEB-CORE-00439 Embedded service has not yet been started ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref699]]AS-WEB-CORE-00440 Lifecycle event data object \{0} is not an Engine ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref700]]AS-WEB-CORE-00441 EngineConfig: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref701]]AS-WEB-CORE-00442 EngineConfig: Processing START ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref702]]AS-WEB-CORE-00443 EngineConfig: Processing STOP ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref703]]AS-WEB-CORE-00444 Application base directory \{0} does not exist ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref704]]AS-WEB-CORE-00445 Unable to create the directory [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref705]]AS-WEB-CORE-00446 The archive [\{0}] is malformed and will be ignored: an entry contains an illegal path [\{1}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref706]]AS-WEB-CORE-00447 Failed to set last-modified time of the file \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref707]]AS-WEB-CORE-00448 Error copying \{0} to \{1} ::
-  Cause: Could not copy file +
-  Action: Verify if channel is not available for file transfer
-
-[[sthref708]]AS-WEB-CORE-00449 [\{0}] could not be completely deleted. The presence of the remaining files may cause problems ::
-  Cause: Could not completely delete specified directory +
-  Action: Verify the access permission to specified directory
-
-[[sthref709]]AS-WEB-CORE-00450 Lifecycle event data object \{0} is not a Host ::
-  Cause: Could not process the START event for an associated Host +
-  Action: Verify life cycle event data object
-
-[[sthref710]]AS-WEB-CORE-00451 Deploying configuration descriptor \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref711]]AS-WEB-CORE-00452 Error deploying configuration descriptor \{0} ::
-  Cause: Could not deploy configuration descriptor +
-  Action: Verify the URL that points to context configuration file and
-  the context path
-
-[[sthref712]]AS-WEB-CORE-00453 The war name [\{0}] is invalid. The archive will be ignored. ::
-  Cause: Could not deploy war file +
-  Action: Verify the name war file
-
-[[sthref713]]AS-WEB-CORE-00454 Expanding web application archive \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref714]]AS-WEB-CORE-00455 Exception while expanding web application archive \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref715]]AS-WEB-CORE-00456 Exception while expanding web application archive \{0} ::
-  Cause: Could not expand web application archive +
-  Action: Verify the URL, and if any I/O errors orrur
-
-[[sthref716]]AS-WEB-CORE-00457 Deploying web application archive \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref717]]AS-WEB-CORE-00458 Error deploying web application archive \{0} ::
-  Cause: Could not deploy web application archive +
-  Action: Verify the context path and if specified context path is
-  already attached to an existing web application
-
-[[sthref718]]AS-WEB-CORE-00459 Deploying web application directory \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref719]]AS-WEB-CORE-00460 Error deploying web application directory \{0} ::
-  Cause: Could not deploy web application directory +
-  Action: Verify the context path and if specified context path is
-  already attached to an existing web application
-
-[[sthref720]]AS-WEB-CORE-00461 Error undeploying Jar file \{0} ::
-  Cause: Could not remove an existing web application, attached to the
-  specified context path +
-  Action: Verify the context path of the application
-
-[[sthref721]]AS-WEB-CORE-00462 HostConfig: restartContext [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref722]]AS-WEB-CORE-00463 Error during context [\{0}] stop ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref723]]AS-WEB-CORE-00464 Error during context [\{0}] restart ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref724]]AS-WEB-CORE-00465 HostConfig: Processing START ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref725]]AS-WEB-CORE-00466 HostConfig: Processing STOP ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref726]]AS-WEB-CORE-00467 Undeploying deployed web applications ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref727]]AS-WEB-CORE-00468 Undeploying context [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref728]]AS-WEB-CORE-00469 Error undeploying web application at context path \{0} ::
-  Cause: Could not remove an existing web application, attached to the
-  specified context path +
-  Action: Verify the context path of the application
-
-[[sthref729]]AS-WEB-CORE-00470 Must set 'catalina.home' system property ::
-  Cause: Did not set 'catalina.home' +
-  Action: Verify that 'catalina.home' was passed
-
-[[sthref730]]AS-WEB-CORE-00472 Exception creating instance of \{0} ::
-  Cause: Could not load application class +
-  Action: Verify the class name
-
-[[sthref731]]AS-WEB-CORE-00473 Exception locating main() method ::
-  Cause: Could not locate the static main() method of the application
-  class +
-  Action: Verify the access permission
-
-[[sthref732]]AS-WEB-CORE-00474 Exception calling main() method ::
-  Cause: Could not invoke main() method +
-  Action: Verify the underlying method is inaccessible, and parameter
-  values
-
-[[sthref733]]AS-WEB-CORE-00475 Usage: java org.apache.catalina.startup.Tool [<options>] <class> [<arguments>] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref734]]AS-WEB-CORE-00476 Deploying user web applications ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref735]]AS-WEB-CORE-00477 Exception loading user database ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref736]]AS-WEB-CORE-00478 Deploying web application for user \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref737]]AS-WEB-CORE-00479 Error deploying web application for user \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref738]]AS-WEB-CORE-00480 UserConfig[\{0}]: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref739]]AS-WEB-CORE-00481 UserConfig[null]: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref740]]AS-WEB-CORE-00482 UserConfig: Processing START ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref741]]AS-WEB-CORE-00483 UserConfig: Processing STOP ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref742]]AS-WEB-CORE-00484 Failed to load manifest resources \{0} ::
-  Cause: Could not find MANIFEST from JAR file +
-  Action: Verify the JAR file
-
-[[sthref743]]AS-WEB-CORE-00485 ExtensionValidator[\{0}][\{1}]: Required extension "\{2}" not found. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref744]]AS-WEB-CORE-00486 ExtensionValidator[\{0}]: Failure to find \{1} required extension(s). ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref745]]AS-WEB-CORE-00487 Odd number of hexadecimal digits ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref746]]AS-WEB-CORE-00488 Bad hexadecimal digit ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref747]]AS-WEB-CORE-00489 Map is currently locked ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref748]]AS-WEB-CORE-00490 UTF8 not supported ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref749]]AS-WEB-CORE-00491 Could not create a new directory: \{0} ::
-  Cause: Could not create a new directory +
-  Action: Verify if file is directory, and access permission
-
-[[sthref750]]AS-WEB-CORE-00492 status.setContentType ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref751]]AS-WEB-CORE-00493 Internal Error ::
-  Cause: Error during invoke the servlet application +
-  Action: Trying to invoke the servlet application
-
-[[sthref752]]AS-WEB-CORE-00494 Failed to initialize the interceptor ::
-  Cause: Error in initializing the servlet application +
-  Action: initialize the servlet interceptor
-
-[[sthref753]]AS-WEB-CORE-00503 Failed to rename log file to \{0} for rotate logs ::
-  Cause: Could not rename log file +
-  Action: Verify access permission and new file name
-
-[[sthref754]]AS-WEB-CORE-00504 at least this wasn't swallowed ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref755]]AS-WEB-CORE-00505 Failed to create directory \{0} ::
-  Cause: Could not create directory +
-  Action: Verify access permission
-
-[[sthref756]]AS-WEB-CORE-00506 fields was just empty or whitespace ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref757]]AS-WEB-CORE-00507 unable to decode with rest of chars being: \{0} ::
-  Cause: Could not decode rest of chars +
-  Action: Verify the current pattern
-
-[[sthref758]]AS-WEB-CORE-00508 No closing ) found for in decode ::
-  Cause: could not find closing bracket +
-  Action: Verify if the parameter includes closing bracket
-
-[[sthref759]]AS-WEB-CORE-00509 The next characters couldn't be decoded: \{0} ::
-  Cause: Could not decode characters +
-  Action: Verify the pattern
-
-[[sthref760]]AS-WEB-CORE-00510 End of line reached before decoding x- param ::
-  Cause: Could not decode, since end of line reached +
-  Action: Verify the String index
-
-[[sthref761]]AS-WEB-CORE-00511 x param in wrong format. Needs to be 'x-#(...)' read the docs! ::
-  Cause: Could not decode, since x param in wrong format +
-  Action: Verify the format of parameter
-
-[[sthref762]]AS-WEB-CORE-00512 x param in wrong format. No closing ')'! ::
-  Cause: Could not decode, since x param has no closing bracket +
-  Action: Verify the format of parameter
-
-[[sthref763]]AS-WEB-CORE-00513 x param for servlet request, couldn't decode value: \{0} ::
-  Cause: Could not decode value, since no x param type matched +
-  Action: Verify the current field info
-
-[[sthref764]]AS-WEB-CORE-00514 No Context configured to process this request ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref765]]AS-WEB-CORE-00515 Syntax error in request filter pattern \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref766]]AS-WEB-CORE-00516 Cannot process the error page: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref767]]AS-WEB-CORE-00517 Digester.getParser: ::
-  Cause: Could not create new SAXParser +
-  Action: Verify the parser configuration and if SAXParser is supported
-
-[[sthref768]]AS-WEB-CORE-00518 Cannot get XMLReader ::
-  Cause: Could not get XML Reader +
-  Action: Verify if there are XML Readers can be instantiated
-
-[[sthref769]]AS-WEB-CORE-00519 Finish event threw exception ::
-  Cause: Rules could not remove data +
-  Action: Verify if finish() is called after all parsing methods have
-  been called
-
-[[sthref770]]AS-WEB-CORE-00520 Finish event threw error ::
-  Cause: Rules could not remove data +
-  Action: Verify if finish() is called after all parsing methods have
-  been called
-
-[[sthref771]]AS-WEB-CORE-00521 Body event threw exception ::
-  Cause: Could not fire body() +
-  Action: Verify if the current rule has body
-
-[[sthref772]]AS-WEB-CORE-00522 Body event threw error ::
-  Cause: Could not fire body() +
-  Action: Verify if the current rule has body
-
-[[sthref773]]AS-WEB-CORE-00523 No rules found matching \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref774]]AS-WEB-CORE-00524 End event threw exception ::
-  Cause: Could not call end() +
-  Action: Verify if this method is called when the end of a matching XML
-  element is encountered
-
-[[sthref775]]AS-WEB-CORE-00525 End event threw error ::
-  Cause: Could not call end() +
-  Action: Verify if this method is called when the end of a matching XML
-  element is encountered
-
-[[sthref776]]AS-WEB-CORE-00526 Begin event threw exception ::
-  Cause: Could not call begin() +
-  Action: Verify if this method is called when the beginning of a
-  matching XML element is encountered
-
-[[sthref777]]AS-WEB-CORE-00527 Begin event threw error ::
-  Cause: Could not call begin() +
-  Action: Verify if this method is called when the beginning of a
-  matching XML element is encountered
-
-[[sthref778]]AS-WEB-CORE-00528 Parse Error at line \{0} column \{1}: \{2} ::
-  Cause: Parsing error occurs +
-  Action: Verify if there are any parsing errors occur
-
-[[sthref779]]AS-WEB-CORE-00529 Parse Fatal Error at line \{0} column \{1}: \{2} ::
-  Cause: Parsing error occurs +
-  Action: Verify if there are any parsing errors occur
-
-[[sthref780]]AS-WEB-CORE-00530 Parse Warning Error at line \{0} column \{1}: \{2} ::
-  Cause: Parsing error occurs +
-  Action: Verify if there are any parsing errors occur
-
-[[sthref781]]AS-WEB-CORE-00531 Empty stack (returning null) ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref782]]AS-WEB-CORE-00532 No Locator! ::
-  Cause: There is no document locator +
-  Action: Verify if document locator has been set
-
-[[sthref783]]AS-WEB-CORE-00533 [SetPropertiesRule]\{0} Setting property \{1} to \{2} did not find a matching property. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref784]]AS-WEB-CORE-00534 [SetPropertyRule]\{0} Setting property \{1} to \{2} did not find a matching property. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref785]]AS-WEB-CORE-00535 Login failed ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref786]]AS-WEB-CORE-00536 This is request has already been authenticated ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref787]]AS-WEB-CORE-00537 No authenticator ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref788]]AS-WEB-CORE-00538 Invalid call to login while pluggable authentication method is configured ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref789]]AS-WEB-CORE-00539 Internal logout error ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref790]]AS-WEB-CORE-00540 Blocked access to external entity with publicId [\{0}] and systemId [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref791]]AS-WEB-CORE-00541 Blocked access to external entity with name [\{0}], publicId [\{1}], baseURI [\{2}] and systemId [\{3}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref792]]AS-WEB-CORE-00542 Blocked access to external subset with name [\{0}] and baseURI [\{1}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref793]]AS-WEB-CORE-00543 Fail to read file [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref794]]AS-WEB-CORE-00544 Unable to find the underlying Coyote request object (which is required to create a push request) from the request of type [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref795]]AS-WEB-CORE-00545 It is illegal to call push() before setting a path ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref796]]AS-WEB-CORE-00546 The push method should not be null ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref797]]AS-WEB-CORE-00547 The push method should not be an empty String ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref798]]AS-WEB-CORE-00548 The push method ''\{0}'' is not cacheable or safe ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref799]]AS-WEB-CORE-00549 The repository '\{0}' is not a directory ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref800]]AS-WEB-CORE-00550 The repository '\{0}' contains a null character ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref801]]AS-WEB-GLUE-00001 Exception in creating cache ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref802]]AS-WEB-GLUE-00002 Exception initializing cache-helper \{0}; please check your helper class implementation ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref803]]AS-WEB-GLUE-00003 Illegal CacheKeyGenerator ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref804]]AS-WEB-GLUE-00004 DefaultCacheHelper: cannot find all the required key fields in the request \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref805]]AS-WEB-GLUE-00005 CachingFilter \{0} ready; isEnabled = \{1} manager = \{2} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref806]]AS-WEB-GLUE-00006 CachingFilter \{0} request is cacheable; key \{1} index = \{2} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref807]]AS-WEB-GLUE-00007 CachingFilter \{0} request needs a refresh; key \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref808]]AS-WEB-GLUE-00008 CachingFilter \{0} serving response from the cache \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref809]]AS-WEB-GLUE-00009 CachingFilter \{0} pass thru; isEnabled = \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref810]]AS-WEB-GLUE-00010 CachingFilter \{0} received cacheManager enabled event ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref811]]AS-WEB-GLUE-00011 CachingFilter \{0} received cacheManager disabled event ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref812]]AS-WEB-GLUE-00012 The constraint field \{0} is not found in the scope \{1}; returning cache-on-match-failure: \{2} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref813]]AS-WEB-GLUE-00013 The constraint field \{0} value = \{1} is found in scope \{2}; returning cache-on-match: \{3} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref814]]AS-WEB-GLUE-00014 The constraint field \{0} value = \{1} is found in scope \{2}; and matches with a value \{3}; returning cache-on-match: \{4} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref815]]AS-WEB-GLUE-00015 The constraint field \{0} value = \{1} is found in scope \{2}; but didn't match any of the value constraints; returning cache-on-match-failure = \{3} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref816]]AS-WEB-GLUE-00016 Incorrect scope value [\{0}] for web application cache field name [\{1}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref817]]AS-WEB-GLUE-00017 ''greater'' expression requires a numeric value; please check your value \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref818]]AS-WEB-GLUE-00018 ''lesser'' expression requires a numeric value; please check your value [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref819]]AS-WEB-GLUE-00019 illegal value [\{0}] expr [\{1}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref820]]AS-WEB-GLUE-00020 illegal in-range constraint; specify a valid range (xxx-yyy) value [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref821]]AS-WEB-GLUE-00021 missing separator in the ''in-range'' constraint; [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref822]]AS-WEB-GLUE-00022 ''in-range'' constraint requires numeric values for the lower bound [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref823]]AS-WEB-GLUE-00023 ''in-range'' constraint requires a value for the upper bound of the range; check your value [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref824]]AS-WEB-GLUE-00024 ''in-range'' constraint requires numeric values for the upper bound [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref825]]AS-WEB-GLUE-00025 CacheTag[\{0}]: Timeout = \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref826]]AS-WEB-GLUE-00026 Cache not found in the specified scope ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref827]]AS-WEB-GLUE-00027 Illegal value ([\{0}]) for scope attribute of cache tag ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref828]]AS-WEB-GLUE-00028 FlushTag: clear [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref829]]AS-WEB-GLUE-00029 FlushTag: clear cache ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref830]]AS-WEB-GLUE-00030 Process session destroyed on \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref831]]AS-WEB-GLUE-00031 Process request for ''\{0}'' ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref832]]AS-WEB-GLUE-00032 Principal ''\{0}'' has already been authenticated ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref833]]AS-WEB-GLUE-00033 Checking for SSO cookie ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref834]]AS-WEB-GLUE-00034 SSO cookie is not present ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref835]]AS-WEB-GLUE-00035 No realm configured for this application, SSO does not apply ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref836]]AS-WEB-GLUE-00036 This application uses realm ''\{0}'' ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref837]]AS-WEB-GLUE-00037 Checking for cached principal for \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref838]]AS-WEB-GLUE-00038 Found cached principal ''\{0}'' with auth type ''\{1}'' in realm ''\{2}'' ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref839]]AS-WEB-GLUE-00039 Ignoring SSO entry which does not match application realm ''\{0}'' ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref840]]AS-WEB-GLUE-00040 No cached principal found, erasing SSO cookie ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref841]]AS-WEB-GLUE-00041 Deregistering sso id ''\{0}'' ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref842]]AS-WEB-GLUE-00042 SSO expiration started. Current entries: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref843]]AS-WEB-GLUE-00043 SSO cache will expire \{0} entries ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref844]]AS-WEB-GLUE-00044 SSO expiration removing entry: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref845]]AS-WEB-GLUE-00045 Caught exception during SingleSignOn expiration ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref846]]AS-WEB-GLUE-00046 Removing session \{0} from sso id \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref847]]AS-WEB-GLUE-00047 Illegal access log pattern [\{0}], is not a valid nickname and does not contain any ''%'' ::
-  Cause: The pattern is either null or does not contain '%' +
-  Action: Check the pattern for validity
-
-[[sthref848]]AS-WEB-GLUE-00048 Missing end delimiter in access log pattern: \{0} ::
-  Cause: An end delimiter ismissing in the access log pattern +
-  Action: Check the pattern for validity
-
-[[sthref849]]AS-WEB-GLUE-00049 Invalid component: \{0} in access log pattern: \{1} ::
-  Cause: Access log pattern containds invalid component +
-  Action: Check the pattern for validity
-
-[[sthref850]]AS-WEB-GLUE-00050 Error processing request received on ad-hoc path \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref851]]AS-WEB-GLUE-00051 No ad-hoc servlet configured to process ad-hoc path \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref852]]AS-WEB-GLUE-00052 mgr reapInterval set = \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref853]]AS-WEB-GLUE-00053 no instance level value set for mgr reapInterval ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref854]]AS-WEB-GLUE-00054 maxSessions set = \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref855]]AS-WEB-GLUE-00055 no instance level value set for maxSessions ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref856]]AS-WEB-GLUE-00056 sessionFilename set = \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref857]]AS-WEB-GLUE-00057 sessionIdGeneratorClassname set = \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref858]]AS-WEB-GLUE-00058 storeReapInterval set = \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref859]]AS-WEB-GLUE-00059 directory set = \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref860]]AS-WEB-GLUE-00060 sessionMaxInactiveInterval set = \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref861]]AS-WEB-GLUE-00061 no instance level value set for sessionMaxInactiveInterval ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref862]]AS-WEB-GLUE-00062 Configuring cache for web application ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref863]]AS-WEB-GLUE-00063 Added a caching filter for servlet-name = \{0} url-pattern = \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref864]]AS-WEB-GLUE-00064 Added a key-field : name = \{0} scope = \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref865]]AS-WEB-GLUE-00065 Added a constraint: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref866]]AS-WEB-GLUE-00066 Added a constraint-field name = \{0} scope = \{1} cache-on-match = \{2} cache-on-match-failure = \{3} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref867]]AS-WEB-GLUE-00067 Invalid max-pending-count attribute value [\{0}], using default [\{1}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref868]]AS-WEB-GLUE-00068 Unable to parse proxy port component (\{0}) of server-name attribute of network-listener \{1} ::
-  Cause: The String does not contain a parsable integer +
-  Action: Check the proxy port string
-
-[[sthref869]]AS-WEB-GLUE-00069 Unable to parse redirect-port (\{0}) attribute of network-listener \{1}, using default: \{2} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref870]]AS-WEB-GLUE-00070 Unable to parse acceptor-threads attribute (\{0}) of network-listener \{1}, using default: \{2} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref871]]AS-WEB-GLUE-00071 The jk properties configuration file is not defined ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref872]]AS-WEB-GLUE-00072 JK properties file \{0} does not exist ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref873]]AS-WEB-GLUE-00073 Loading glassfish-jk.properties from \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref874]]AS-WEB-GLUE-00074 Unable to configure JK properties \{0} for connector listening to \{1} ::
-  Cause: Failed to load JK properties file +
-  Action: Check if the properties file exists and is readable
-
-[[sthref875]]AS-WEB-GLUE-00075 Invalid attribute [\{0}] in thread-pool configuration ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref876]]AS-WEB-GLUE-00076 Unable to load ProxyHandler implementation class \{0} ::
-  Cause: An exception occurred during creating a new instance +
-  Action: Check the exception for the error
-
-[[sthref877]]AS-WEB-GLUE-00077 \{0} not an instance of com.sun.appserv.ProxyHandler ::
-  Cause: Invalid proxy handler +
-  Action: Check to see if the proxy handler is an instance of
-  com.sun.appserv.ProxyHandler
-
-[[sthref878]]AS-WEB-GLUE-00078 All SSL protocol variants disabled for network-listener \{0}, using SSL implementation specific defaults ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref879]]AS-WEB-GLUE-00079 All SSL cipher suites disabled for network-listener(s) \{0}. Using SSL implementation specific defaults ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref880]]AS-WEB-GLUE-00080 Unrecognized cipher: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref881]]AS-WEB-GLUE-00081 Exception when initializing monitoring for network-listener [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref882]]AS-WEB-GLUE-00082 InvokeGrizzly method=\{0} objectName=\{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref883]]AS-WEB-GLUE-00083 Exception while invoking mebean server operation [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref884]]AS-WEB-GLUE-00084 Cannot find WebContainer implementation ::
-  Cause: Web container is null +
-  Action: Check if the mapper listener is initialized correctly
-
-[[sthref885]]AS-WEB-GLUE-00085 Cannot find Engine implementation ::
-  Cause: Engine is null +
-  Action: Check if the mapper listener is initialized correctly
-
-[[sthref886]]AS-WEB-GLUE-00086 Error registering contexts ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref887]]AS-WEB-GLUE-00087 HTTP listener with network listener name
-\{0} ignoring registration of host with object name \{1}, because none
-of the host's associated HTTP listeners matches this network listener
-name ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref888]]AS-WEB-GLUE-00088 Register Context \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref889]]AS-WEB-GLUE-00089 Unregister Context \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref890]]AS-WEB-GLUE-00090 Register Wrapper \{0} in Context \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref891]]AS-WEB-GLUE-00091 Unable to instantiate ContainerListener of type \{0} ::
-  Cause: An exception occurred during instantiation of ContainerListener
-  of type \{0} +
-  Action: Check the Exception for error
-
-[[sthref892]]AS-WEB-GLUE-00092 Creating connector for address=''\{0}'' port=''\{1}'' protocol=''\{2}'' ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref893]]AS-WEB-GLUE-00093 Enabling file-based persistence for web module [\{0}]''s sessions ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref894]]AS-WEB-GLUE-00094 Exception during invocation of PreDestroy-annotated method on JSP tag handler [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref895]]AS-WEB-GLUE-00095 ServerContext is null for ResourceInjector ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref896]]AS-WEB-GLUE-00096 Enabling no persistence for web module [\{0}]''s sessions: persistence-type = [\{1}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref897]]AS-WEB-GLUE-00097 Unable to load session uuid generator [\{0}] ::
-  Cause: An exception occurred during loading session uuid generator +
-  Action: Check the Exception for the error
-
-[[sthref898]]AS-WEB-GLUE-00098 Unable to write access log file \{0} ::
-  Cause: An exception occurred writing to access log file +
-  Action: Check the exception for the error
-
-[[sthref899]]AS-WEB-GLUE-00099 Setting accesslog directory for virtual server ''\{0}'' to \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref900]]AS-WEB-GLUE-00100 Invalid accessLogWriterInterval value [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref901]]AS-WEB-GLUE-00101 Invalid accessLogBufferSize value [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref902]]AS-WEB-GLUE-00102 Unable to parse max-history-files access log configuration [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref903]]AS-WEB-GLUE-00103 Unable to create \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref904]]AS-WEB-GLUE-00104 Unable to rename access log file \{0} to \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref905]]AS-WEB-GLUE-00105 Unable to remove access log file \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref906]]AS-WEB-GLUE-00106 Access logger has already been started ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref907]]AS-WEB-GLUE-00107 Access logger has not yet been started ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref908]]AS-WEB-GLUE-00108
-PersistenceStrategyBuilderFactory>>createPersistenceStrategyBuilder:
-resolvedPersistenceType = \{0}, resolvedPersistenceFrequency = \{1}
-resolvedPersistenceScope = \{2} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref909]]AS-WEB-GLUE-00109 Could not find PersistentStrategyBuilder for persistenceType \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref910]]AS-WEB-GLUE-00110 PersistenceStrategyBuilderFactory>>createPersistenceStrategyBuilder: CandidateBuilderClassName = \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref911]]AS-WEB-GLUE-00112 Unable to set request encoding [\{0}] determined from sun-web.xml deployment descriptor of web application [\{1}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref912]]AS-WEB-GLUE-00113 POST data too large ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref913]]AS-WEB-GLUE-00114 Web container config changed \{0} \{1} \{2} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref914]]AS-WEB-GLUE-00115 Exception processing HttpService configuration change ::
-  Cause: An exception occurred during configuration change +
-  Action: Check the exception for error
-
-[[sthref915]]AS-WEB-GLUE-00116 AvailabilityService was not defined - check domain.xml ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref916]]AS-WEB-GLUE-00117 WebContainerAvailability not defined - check domain.xml ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref917]]AS-WEB-GLUE-00118 globalAvailability = \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref918]]AS-WEB-GLUE-00119 webContainerAvailability = \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref919]]AS-WEB-GLUE-00120 webModuleAvailability = \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref920]]AS-WEB-GLUE-00121 SERVER.XML persistenceType= \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref921]]AS-WEB-GLUE-00122 SERVER.XML persistenceType missing ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref922]]AS-WEB-GLUE-00123 Web App Distributable \{0}: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref923]]AS-WEB-GLUE-00124 AvailabilityGloballyEnabled = \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref924]]AS-WEB-GLUE-00125 instance-level persistence-type = \{0} instance-level persistenceFrequency = \{1} instance-level persistenceScope = \{2} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref925]]AS-WEB-GLUE-00126 webAppLevelPersistenceType = \{0} webAppLevelPersistenceFrequency = \{1} webAppLevelPersistenceScope = \{2} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref926]]AS-WEB-GLUE-00127 IN WebContainer>>ConfigureSessionManager
-after web level check AFTER_WEB_PERSISTENCE-TYPE IS = \{0}
-AFTER_WEB_PERSISTENCE_FREQUENCY IS = \{1} AFTER_WEB_PERSISTENCE_SCOPE IS
-= \{2} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref927]]AS-WEB-GLUE-00128 Is \{0} a system app: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref928]]AS-WEB-GLUE-00129 SessionConfigurationHelper: Is AppDistributable \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref929]]AS-WEB-GLUE-00130 Invalid Session Management Configuration
-for non-distributable app [\{0}] - defaulting to memory:
-persistence-type = [\{1}] / persistenceFrequency = [\{2}] /
-persistenceScope = [\{3}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref930]]AS-WEB-GLUE-00131 IN WebContainer>>ConfigureSessionManager
-before builder factory FINAL_PERSISTENCE-TYPE IS = \{0}
-FINAL_PERSISTENCE_FREQUENCY IS = \{1} FINAL_PERSISTENCE_SCOPE IS = \{2}
-::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref931]]AS-WEB-GLUE-00132 Security role name \{0} used in an 'auth-constraint' without being defined in a 'security-role' ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref932]]AS-WEB-GLUE-00133 Security role name \{0} used in a 'run-as' without being defined in a 'security-role' ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref933]]AS-WEB-GLUE-00134 Security role name \{0} used in a 'role-link' without being defined in a 'security-role' ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref934]]AS-WEB-GLUE-00135 The web module \{0} has been designated as the default-web-module for virtual server \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref935]]AS-WEB-GLUE-00136 Error looking up the configuration information of the default-web-module \{0} for virtual server \{1} ::
-  Cause: The web module specified is either not found or disabled or
-  does not specify this virtual server, or there was an error loading
-  its deployment descriptors +
-  Action: Verify if the virtual server's default web module is valid
-
-[[sthref936]]AS-WEB-GLUE-00137 The default-web-module \{0} is either disabled or does not specify virtual server \{1} ::
-  Cause: The default web module is disabled or does not specify virtual
-  server +
-  Action: Verify if the default web module is enabled and specify
-  virtual server
-
-[[sthref937]]AS-WEB-GLUE-00138 Virtual server \{0} has invalid authentication realm \{1} ::
-  Cause: The realm \{1} could not be found +
-  Action: Verify if the realm \{1} exits for virtual server \{0}
-
-[[sthref938]]AS-WEB-GLUE-00139 Invalid sso-cookie-secure configuration \{0} for virtual server \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref939]]AS-WEB-GLUE-00140 Realm \{0} is not an instance of \{1}, and will be ignored ::
-  Cause: The realm \{0} is either NULL or is not an instance of \{1} +
-  Action: Verify if the realm \{0} is an instance of \{1}
-
-[[sthref940]]AS-WEB-GLUE-00141 Virtual server \{0} has a property with missing name or value ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref941]]AS-WEB-GLUE-00142 Invalid redirect property value \{0} for virtual server \{1}: More than one \{2} component ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref942]]AS-WEB-GLUE-00143 Invalid redirect property value \{0} for virtual server \{1}: Missing url or url-prefix component ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref943]]AS-WEB-GLUE-00144 Invalid redirect property value \{0} for virtual server \{1}: Both url and url-prefix specified ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref944]]AS-WEB-GLUE-00145 Invalid redirect property value \{0} for virtual server \{1}: escape must be equal to yes or no ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref945]]AS-WEB-GLUE-00146 Invalid send-error property value \{0} for virtual server \{1}: More than one \{2} component ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref946]]AS-WEB-GLUE-00147 Invalid send-error property value \{0} for virtual server \{1}: Missing path component ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref947]]AS-WEB-GLUE-00148 Unable to add listener of type \{0} to virtual server \{1} ::
-  Cause: The listener is not an instance of ContainerListener or
-  LifecycleListener +
-  Action: Verify if the listener type is supported
-
-[[sthref948]]AS-WEB-GLUE-00149 Unable to load extension class \{0} from web module \{1} ::
-  Cause: An exception occurred loading extension class +
-  Action: Check the exception for the error
-
-[[sthref949]]AS-WEB-GLUE-00150 Object of type classname \{0} not an instance of Valve or GlassFishValve ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref950]]AS-WEB-GLUE-00151 Error adding HttpProbes. NetworkListener \{0}'s HttpCodecFilter is \{1} ::
-  Cause: HttpCodecFilter is either NULL or empty +
-  Action: Verify the NetworkListener is valid
-
-[[sthref951]]AS-WEB-GLUE-00152 Error adding HttpProbes ::
-  Cause: An exception occurred adding HttpProbes +
-  Action: Check the exception for the error
-
-[[sthref952]]AS-WEB-GLUE-00153 Disabling Single Sign On (SSO) for virtual server \{0} as configured ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref953]]AS-WEB-GLUE-00154 Enabling Single Sign On (SSO) for virtual server \{0} as configured ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref954]]AS-WEB-GLUE-00155 SSO entry max idle time set to \{0} for virtual server \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref955]]AS-WEB-GLUE-00156 SSO expire thread interval set to \{0} for virtual server \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref956]]AS-WEB-GLUE-00157 Allowing access to \{0} from \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref957]]AS-WEB-GLUE-00158 Denying access to \{0} from \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref958]]AS-WEB-GLUE-00159 Virtual server \{0} enabled context \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref959]]AS-WEB-GLUE-00160 Unable to delete \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref960]]AS-WEB-GLUE-00161 Unable to reconfigure access log valve ::
-  Cause: An exception occurred during access log valve reconfiguration +
-  Action: Check the exception for error
-
-[[sthref961]]AS-WEB-GLUE-00162 Virtual server \{0} added context \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref962]]AS-WEB-GLUE-00163 Application \{0} is not found ::
-  Cause: The deployed application is not found +
-  Action: Check if the application is valid
-
-[[sthref963]]AS-WEB-GLUE-00164 Cannot create context for undeployment ::
-  Cause: An IOException occurred during undeployment +
-  Action: Check the exception for error
-
-[[sthref964]]AS-WEB-GLUE-00165 Successfully removed context \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref965]]AS-WEB-GLUE-00166 Modifying web.xml \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref966]]AS-WEB-GLUE-00167 Error adding HttpProbes. NetworkListener \{0}'s GrizzlyProxy is NULL ::
-  Cause: GrizzlyProxy is NULL +
-  Action: Verify the NetworkListener is valid
-
-[[sthref967]]AS-WEB-GLUE-00168 Virtual server \{0} has been turned off ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref968]]AS-WEB-GLUE-00169 Virtual server \{0} has been disabled ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref969]]AS-WEB-GLUE-00170 Invalid redirect URL [\{0}]: Impossible to URL encode ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref970]]AS-WEB-GLUE-00171 Unknown error, loadWebModule returned null, file a bug ::
-  Cause: An exception occurred writing to access log file +
-  Action: Check the exception for the error
-
-[[sthref971]]AS-WEB-GLUE-00172 Loading application [\{0}] at [\{1}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref972]]AS-WEB-GLUE-00173 App config customization specified to ignore descriptor's \{0} \{1} so it will not be present for the application ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref973]]AS-WEB-GLUE-00174 Overriding descriptor \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref974]]AS-WEB-GLUE-00175 Creating new \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref975]]AS-WEB-GLUE-00176 Exception during Coherence*Web shutdown for application [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref976]]AS-WEB-GLUE-00177 Loading web module \{0} in virtual server \{1} at \{2} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref977]]AS-WEB-GLUE-00178 This web container has not yet been started ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref978]]AS-WEB-GLUE-00179 Property \{0} is not yet supported ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref979]]AS-WEB-GLUE-00180 Virtual server \{0} already has a web module \{1} loaded at \{2} therefore web module \{3} cannot be loaded at this context path on this virtual server ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref980]]AS-WEB-GLUE-00181 Unable to stop web container ::
-  Cause: Web container may not have been started +
-  Action: Verify if web container is started
-
-[[sthref981]]AS-WEB-GLUE-00182 Unable to start web container ::
-  Cause: Web container may have already been started +
-  Action: Verify if web container is not already started
-
-[[sthref982]]AS-WEB-GLUE-00183 Property element in sun-web.xml has null 'name' or 'value' ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref983]]AS-WEB-GLUE-00184 Web module \{0} is not loaded in virtual server \{1} ::
-  Cause: Web module has failed to load +
-  Action: Verify if web module is valid
-
-[[sthref984]]AS-WEB-GLUE-00185 Unable to deploy web module \{0} at root context of virtual server \{1}, because this virtual server declares a default-web-module ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref985]]AS-WEB-GLUE-00186 Unable to set default-web-module \{0} for virtual server \{1} ::
-  Cause: There is no web context deployed on the given virtual server
-  that matches the given default context path +
-  Action: Verify if the default context path is deployed on the virtual
-  server
-
-[[sthref986]]AS-WEB-GLUE-00187 Unable to load web module \{0} at context root \{1}, because it is not correctly encoded ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref987]]AS-WEB-GLUE-00188 Unable to destroy web module deployed at context root \{0} on virtual server \{1} during undeployment ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref988]]AS-WEB-GLUE-00189 Exception setting the schemas/dtds location ::
-  Cause: A malformed URL has occurred. Either no legal protocol could be
-  found in a specification string or the string could not be parsed +
-  Action: Verify if the schemes and dtds
-
-[[sthref989]]AS-WEB-GLUE-00191 Error loading web module \{0} ::
-  Cause: An error occurred during loading web module +
-  Action: Check the Exception for the error
-
-[[sthref990]]AS-WEB-GLUE-00192 Undeployment failed for context \{0} ::
-  Cause: The context may not have been deployed +
-  Action: Verify if the context is deployed on the virtual server
-
-[[sthref991]]AS-WEB-GLUE-00193 Exception processing HttpService configuration change ::
-  Cause: An error occurred during configuring http service +
-  Action: Verify if the configurations are valid
-
-[[sthref992]]AS-WEB-GLUE-00194 Unable to set context root \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref993]]AS-WEB-GLUE-00195 Unable to disable web module at context root \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref994]]AS-WEB-GLUE-00196 Error during destruction of virtual server \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref995]]AS-WEB-GLUE-00197 Virtual server \{0} cannot be updated, because it does not exist ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref996]]AS-WEB-GLUE-00198 Created HTTP listener \{0} on host/port \{1}:\{2} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref997]]AS-WEB-GLUE-00199 Created JK listener \{0} on host/port \{1}:\{2} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref998]]AS-WEB-GLUE-00200 Created virtual server \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref999]]AS-WEB-GLUE-00201 Virtual server \{0} loaded default web module \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1000]]AS-WEB-GLUE-00202 Maximum depth for nested request dispatches set to \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1001]]AS-WEB-GLUE-00203 Unsupported http-service property \{0} is being ignored ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1002]]AS-WEB-GLUE-00204 The host name \{0} is shared by virtual servers \{1} and \{2}, which are both associated with the same HTTP listener \{3} ::
-  Cause: The host name is not unique +
-  Action: Verify that the host name is unique
-
-[[sthref1003]]AS-WEB-GLUE-00205 Network listener \{0} referenced by virtual server \{1} does not exist ::
-  Cause: Network listener \{0} referenced by virtual server \{1} does
-  not exist +
-  Action: Verify that the network listener is valid
-
-[[sthref1004]]AS-WEB-GLUE-00206 Web module \{0} not loaded to any virtual servers ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1005]]AS-WEB-GLUE-00207 Loading web module \{0} to virtual servers \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1006]]AS-WEB-GLUE-00208 Unloading web module \{0} from virtual servers \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1007]]AS-WEB-GLUE-00209 Context \{0} undeployed from virtual server \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1008]]AS-WEB-GLUE-00210 Context \{0} disabled from virtual server \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1009]]AS-WEB-GLUE-00211 Virtual server \{0}'s network listeners are updated from \{1} to \{2} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1010]]AS-WEB-GLUE-00212 The class \{0} is annotated with an invalid scope ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1011]]AS-WEB-GLUE-00213 -DjvmRoute updated with \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1012]]AS-WEB-GLUE-00214 Unable to parse port number \{0} of network-listener \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1013]]AS-WEB-GLUE-00215 Virtual server \{0} set listener name \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1014]]AS-WEB-GLUE-00216 Must not disable network-listener \{0}, because it is associated with admin virtual server \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1015]]AS-WEB-GLUE-00217 Virtual server \{0} set jk listener name \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1016]]AS-WEB-GLUE-00218 virtual server \{0} has an invalid docroot \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1017]]AS-WEB-GLUE-00219 \{0} network listener is not included in \{1} and will be updated ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1018]]AS-WEB-GLUE-00220 Unable to load configuration of web module [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1019]]AS-WEB-GLUE-00221 Failed to precompile JSP pages of web module [\{0}] ::
-  Cause: An exception occurred precompiling JSP pages +
-  Action: Check the exception for the error
-
-[[sthref1020]]AS-WEB-GLUE-00222 Unable to create custom ObjectInputStream ::
-  Cause: An exception occurred during creating ObjectInputStream +
-  Action: Check the Exception for error
-
-[[sthref1021]]AS-WEB-GLUE-00223 Unable to create custom ObjectOutputStream ::
-  Cause: An exception occurred during creating ObjectOutputStream +
-  Action: Check the Exception for error
-
-[[sthref1022]]AS-WEB-GLUE-00224 The default-locale attribute of locale-charset-info element is being ignored ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1023]]AS-WEB-GLUE-00226 Web module [\{0}] has a property with missing name or value ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1024]]AS-WEB-GLUE-00227 Object of type \{0} is not a valve ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1025]]AS-WEB-GLUE-00228 Unable to add valve to web module \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1026]]AS-WEB-GLUE-00229 Unable to add valve with name \{0} to web module \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1027]]AS-WEB-GLUE-00230 No method \{0}(java.lang.String) defined on valve \{1} of web module \{2} ::
-  Cause: A matching method is not found +
-  Action: Check the method name
-
-[[sthref1028]]AS-WEB-GLUE-00231 Exception during execution of method \{0} on valve \{1} of web module \{2} ::
-  Cause: An exception occurred during method execution +
-  Action: Check the Exception for error
-
-[[sthref1029]]AS-WEB-GLUE-00232 Valve \{0} of web module \{1} has a property without any name ::
-  Cause: The valve is missing property name +
-  Action: Check the property name
-
-[[sthref1030]]AS-WEB-GLUE-00233 Unable to add listener of type \{0} to web module \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1031]]AS-WEB-GLUE-00234 Unable to load extension class \{0} from web module \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1032]]AS-WEB-GLUE-00235 Null property name or value for alternate docbase ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1033]]AS-WEB-GLUE-00236 Alternate docbase property value \{0} is missing a URL pattern or docbase ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1034]]AS-WEB-GLUE-00237 URL pattern \{0} for alternate docbase is invalid ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1035]]AS-WEB-GLUE-00238 Failed to parse sun-web.xml singleThreadedServletPoolSize property value (\{0}) of web module deployed at \{1}, using default (\{2}) ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1036]]AS-WEB-GLUE-00239 Enabled session ID reuse for web module \{0} deployed on virtual server \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1037]]AS-WEB-GLUE-00240 Using alternate deployment descriptor \{0} for web module \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1038]]AS-WEB-GLUE-00241 Ignoring invalid property \{0} = \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1039]]AS-WEB-GLUE-00242 Unable to save sessions for web module \{0} during redeployment ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1040]]AS-WEB-GLUE-00243 Unable to restore sessions for web module [\{0}] from previous deployment ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1041]]AS-WEB-GLUE-00244 Webservice based application, requires Metro to be installed. Run updatecenter client located in bin folder to install Metro ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1042]]AS-WEB-GLUE-00245 WebModule[\{0}]: Setting delegate to \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1043]]AS-WEB-GLUE-00246 WebModule[\{0}]: Adding \{1} to the classpath ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1044]]AS-WEB-GLUE-00247 extra-class-path component \{0} is not a valid pathname ::
-  Cause: A MalformedURLException occurred +
-  Action: Check the extra-class-path component
-
-[[sthref1045]]AS-WEB-GLUE-00248 class-loader attribute dynamic-reload-interval in sun-web.xml not supported ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1046]]AS-WEB-GLUE-00249 IN WebContainer>>ConfigureSessionManager
-before builder factory FINAL_PERSISTENCE-TYPE IS = \{0}
-FINAL_PERSISTENCE_FREQUENCY IS = \{1} FINAL_PERSISTENCE_SCOPE IS = \{2}
-::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1047]]AS-WEB-GLUE-00250 PersistenceStrategyBuilder class = \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1048]]AS-WEB-GLUE-00251 Property [\{0}] is not yet supported ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1049]]AS-WEB-GLUE-00252 WebModule[\{0}] configure cookie properties \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1050]]AS-WEB-GLUE-00253 Unable to add listener of type: \{0},
-because it does not implement any of the required
-ServletContextListener, ServletContextAttributeListener,
-ServletRequestListener, ServletRequestAttributeListener,
-HttpSessionListener, or HttpSessionAttributeListener interfaces ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1051]]AS-WEB-GLUE-00254 Configured an authenticator for method \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1052]]AS-WEB-GLUE-00255 [\{0}] failed to unbind namespace ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1053]]AS-WEB-GLUE-00256 No Realm with name [\{0}] configured to authenticate against ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1054]]AS-WEB-GLUE-00257 Cannot configure an authenticator for method \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1055]]AS-WEB-GLUE-00258 Cannot instantiate an authenticator of class \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1056]]AS-WEB-GLUE-00259 Lifecycle event data object [\{0}] is not a WebModule ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1057]]AS-WEB-GLUE-00260 jsp-config property for \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1058]]AS-WEB-GLUE-00261 sysClasspath for \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1059]]AS-WEB-GLUE-00262 Error creating cache manager and configuring the servlet caching subsystem ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1060]]AS-WEB-GLUE-00263 Cache Manager started ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1061]]AS-WEB-GLUE-00264 Cache Manager stopped ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1062]]AS-WEB-GLUE-00265 *** InstanceEvent: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1063]]AS-WEB-GLUE-00266 Obtained securityContext implementation class \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1064]]AS-WEB-GLUE-00267 Failed to obtain securityContext implementation class ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1065]]AS-WEB-GLUE-00268 Exception during processing of event of type \{0} for web module \{1} ::
-  Cause: An exception occurred during processing event type +
-  Action: Check the exception for the error
-
-[[sthref1066]]AS-WEB-GLUE-00269 No ServerContext in WebModule [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1067]]AS-WEB-GLUE-00270 ContainerEvent: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1068]]AS-WEB-GLUE-00271 Exception during invocation of InjectionManager.destroyManagedObject on \{0} of web module \{1} ::
-  Cause: An exception occurred during destroyManagedObject +
-  Action: Check the exception for the error
-
-[[sthref1069]]AS-WEB-GLUE-00272 Network Listener named \{0} does not exist. Creating or using the named protocol element instead. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1070]]AS-WEB-GLUE-00273 Network Listener named \{0} to which this ssl element is being added already has an ssl element. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1071]]AS-WEB-GLUE-00274 HTTP Listener named \{0} not found ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1072]]AS-WEB-GLUE-00275 Ssl element does not exist for Listener named \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1073]]AS-WEB-GLUE-00276 Error in parsing default-web.xml ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1074]]AS-WEB-GLUE-00277 An authentication method was not defined in the web.xml descriptor. Using default BASIC for login configuration. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1075]]AS-WEB-GLUE-00278 [\{0}] is not a valid authentication method ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1076]]AS-WEB-GLUE-00279 Invalid URL Pattern: [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1077]]AS-WEB-GLUE-00280 Cannot load class \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1078]]AS-WEB-GLUE-00281 Beginning JSP Precompile... ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1079]]AS-WEB-GLUE-00282 Finished JSP Precompile... ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1080]]AS-WEB-GLUE-00283 Cannot delete file: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1081]]AS-WEB-GLUE-00285 Exception getting Validator Factory from JNDI: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1082]]AS-WEB-HA-00001 Exception during removing synchronized from backing store ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1083]]AS-WEB-HA-00002 Exception during removing expired session from backing store ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1084]]AS-WEB-HA-00003 Error creating inputstream ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1085]]AS-WEB-HA-00004 Exception during deserializing the session ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1086]]AS-WEB-HA-00005 Exception occurred in getSession ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1087]]AS-WEB-HA-00006 Failed to remove session from backing store ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1088]]AS-WEB-HA-00007 Required version NumberFormatException ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1089]]AS-WEB-HA-00008 Could not create backing store ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1090]]AS-WEB-NAMING-00001 Canonical Pathname cannot be null ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1091]]AS-WEB-NAMING-00002 Outside webapp not allowed \{0} \{1} \{2} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1092]]AS-WEB-NAMING-00003 Absolute Pathname cannot be null \{0} \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1093]]AS-WEB-NAMING-00004 Canonical pathname \{0} equals to absolute pathname \{1} \{2} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1094]]AS-WEB-NAMING-00005 File cannot be read \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1095]]AS-WEB-NAMING-00006 Could not get dir listing for \{0} ::
-  Cause: Some IO error occurred such as bad file permissions +
-  Action: Verify the file descriptors
-
-[[sthref1096]]AS-WEB-NAMING-00007 Document base \{0} does not exist or is not a readable directory ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1097]]AS-WEB-NAMING-00008 Document base cannot be null ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1098]]AS-WEB-NAMING-00009 Resource \{0} not found ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1099]]AS-WEB-NAMING-00010 Name \{0} is already bound in this Context ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1100]]AS-WEB-NAMING-00011 Bind failed: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1101]]AS-WEB-NAMING-00012 Unbind failed: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1102]]AS-WEB-NAMING-00013 Failed to rename [\{0}] to [\{1}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1103]]AS-WEB-NAMING-00014 Unknown context name : \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1104]]AS-WEB-NAMING-00015 No naming context bound to this thread ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1105]]AS-WEB-NAMING-00016 No naming context bound to this class loader ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1106]]AS-WEB-NAMING-00017 Name is not bound to a Context ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1107]]AS-WEB-NAMING-00018 Name is not bound to a Context ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1108]]AS-WEB-NAMING-00019 Name is not bound to a Context ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1109]]AS-WEB-NAMING-00020 Context is read only ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1110]]AS-WEB-NAMING-00021 Name is not valid ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1111]]AS-WEB-NAMING-00022 Name \{0} is already bound in this Context ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1112]]AS-WEB-NAMING-00023 Can't generate an absolute name for this namespace ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1113]]AS-WEB-NAMING-00024 Unable to restore original system properties ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1114]]AS-WEB-NAMING-00025 This context must be accessed through a java: URL ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1115]]AS-WEB-NAMING-00026 Exception closing WAR File \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1116]]AS-WEB-NAMING-00027 Doc base must point to a WAR file ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1117]]AS-WEB-NAMING-00028 Invalid or unreadable WAR file : \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1118]]AS-CDI-00001 Setting Context Class Loader for \{0} to \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1119]]AS-CDI-00002 BeanDeploymentArchiveImpl::addBeanClass - adding \{0} to \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1120]]AS-CDI-00003 \{0} not added to beanClasses ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1121]]AS-CDI-00004 Processing \{0} as it has \{1} or \{2}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1122]]AS-CDI-00005 Error while trying to load Bean Class \{0} : \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1123]]AS-CDI-00006 Processing WEB-INF/lib in \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1124]]AS-CDI-00007 WEB-INF/lib: considering \{0} as a bean archive and hence added another BDA for it. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1125]]AS-CDI-00008 WEB-INF/lib: skipping \{0} as it doesn't have beans.xml. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1126]]AS-CDI-00009 JAR processing: \{0} as a Bean archive jar since it has META-INF/beans.xml. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1127]]AS-CDI-00010 Ensure \{0} is associated with \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1128]]AS-CDI-00011 Ensure web lib jar visibility. Updating \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1129]]AS-CDI-00012 Ensure web lib jar visibility. Updating \{0} to include \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1130]]AS-CDI-00013 Collecting jar info for \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1131]]AS-CDI-00014 Error reading archive. \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1132]]AS-CDI-00015 Collecting rar info for \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1133]]AS-CDI-00016 Using Context Class Loader. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1134]]AS-CDI-00017 Context Class Loader is null. Using DeploymentImpl's classloader. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1135]]AS-CDI-00018 Creating deployment for archive: \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1136]]AS-CDI-00019 getBeanDeploymentArchives returning \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1137]]AS-CDI-00020 loadBeanDeploymentArchive for beanClass \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1138]]AS-CDI-00021 loadBeanDeploymentArchive checking for \{0} in root BDA \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1139]]AS-CDI-00022 loadBeanDeploymentArchive An existing BDA has this class \{0}. Adding this class as a bean class it to existing bda: \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1140]]AS-CDI-00023 loadBeanDeploymentArchive checking for \{0} in subBDA \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1141]]AS-CDI-00024 loadBeanDeploymentArchive beanClass \{0} not found in the BDAs of this deployment. Creating a new BDA. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1142]]AS-CDI-00025 loadBeanDeploymentArchive new BDA \{0} created. Adding new BDA to all root BDAs of this deployment. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1143]]AS-CDI-00026 loadBeanDeploymentArchive for beanClass \{0} returning the newly created BDA \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1144]]AS-CDI-00027 Exception thrown while scanning for library jars. \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1145]]AS-CDI-00028 Processing \{0} as it has one or more qualified CDI-annotated beans ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1146]]AS-CDI-00029 JAR processing: \{0} since it contains one or more classes with a scope annotation ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1147]]AS-CDI-00030 BDAImpl::ensureWebLibJarVisibility - \{0} being associated with \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1148]]AS-CDI-00031 BDAImpl::ensureWebLibJarVisibility - updating \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1149]]AS-CDI-00032 BDAImpl::ensureWebLibJarVisibility - updating \{0} to include \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1150]]AS-CDI-00033 Error reading archive : \{0} ::
-  Cause: MalformedURLException reading entry from the archive. +
-  Action: Verify the archive is not corrupt.
-
-[[sthref1151]]AS-CDI-00034 TCL is null. Using DeploymentImpl's classloader ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1152]]AS-CDI-00035 Could not create WeldELContextListener instance. \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1153]]AS-CDI-00036 Exception in WeldBootstrap.shutdown. \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1154]]AS-CDI-00037 jakarta.jms.MessageListener Class available, so need to fire PIT events to MDBs ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1155]]AS-CDI-00038 \{0} is an MDB and so need to fire a PIT event to it. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1156]]AS-CDI-00039 WeldDeployer adding injectionServices \{0} for \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1157]]AS-CDI-00040 Unable to create URI for URL: \{0}. Exception: \{1} ::
-  Cause: URL for META-INF/services/faces-config.xml is invalid. +
-  Action: Verify META-INF/services/faces-config.xml exists.
-
-[[sthref1158]]AS-CDI-00041 Trying to register interceptor: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1159]]AS-CDI-00042 Adding interceptor: \{0} for EJB: \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1160]]AS-CDI-00043 getBDAForBeanClass -- search in \{0} for \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1161]]AS-CDI-00044 JCDIServiceImpl.getBDAForBeanClass: TopLevelBDA \{0} contains beanClassName: \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1162]]AS-CDI-00045 JCDIServiceImpl.getBDAForBeanClass: subBDA \{0} contains beanClassName: \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1163]]AS-JTA-00001 Encountered NamingException while attempting to acquire transaction manager for Transactional annotation interceptors \{0} ::
-  Cause: Transaction annotation processing for the Naming +
-  Action: Fix the issue for the Naming exception
-
-[[sthref1164]]AS-JTA-00002 About to setRollbackOnly from @Transactional interceptor on transaction: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1165]]AS-JTA-00003 No ComponentInvocation present for @Transactional annotation processing. Restriction on use of UserTransaction will not be enforced. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1166]]AS-JTA-00004 In MANDATORY TransactionalInterceptor ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1167]]AS-JTA-00005 In NEVER TransactionalInterceptor ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1168]]AS-JTA-00006 In NOT_SUPPORTED TransactionalInterceptor ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1169]]AS-JTA-00007 Managed bean with Transactional annotation and TxType of NOT_SUPPORTED called inside a transaction context. Suspending transaction... ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1170]]AS-JTA-00008 Managed bean with Transactional annotation and TxType of NOT_SUPPORTED called inside a transaction context. Suspending transaction failed due to \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1171]]AS-JTA-00009 In REQUIRED TransactionalInterceptor ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1172]]AS-JTA-00010 Managed bean with Transactional annotation and TxType of REQUIRED called outside a transaction context. Beginning a transaction... ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1173]]AS-JTA-00011 Managed bean with Transactional annotation and TxType of REQUIRED encountered exception during begin \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1174]]AS-JTA-00012 Managed bean with Transactional annotation and TxType of REQUIRED encountered exception during commit \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1175]]AS-JTA-00013 In REQUIRES_NEW TransactionalInterceptor ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1176]]AS-JTA-00014 Managed bean with Transactional annotation and TxType of REQUIRES_NEW called inside a transaction context. Suspending before beginning a transaction... ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1177]]AS-JTA-00015 Managed bean with Transactional annotation and TxType of REQUIRES_NEW encountered exception during begin \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1178]]AS-JTA-00016 Managed bean with Transactional annotation and TxType of REQUIRES_NEW encountered exception during commit \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1179]]AS-JTA-00017 Managed bean with Transactional annotation and TxType of REQUIRED encountered exception during resume \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1180]]AS-JTA-00018 In SUPPORTS TransactionalInterceptor ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1181]]AS-WSCONNECTOR-00046 Invalid Deployment Descriptors element \{0} value \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1182]]AS-WSCONNECTOR-00050 Following exception was thrown ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1183]]AS-WSCONNECTOR-00057 JAX-WS RI specific descriptor (\{1})
-is found in the archive \{0} and \nhence Enterprise Web Service (109)
-deployment is disabled for this archive to avoid duplication of
-services. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1184]]AS-WSCONNECTOR-00201 Handler class \{0} specified in deployment descriptor not found. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1185]]AS-WSCONNECTOR-00202 Handler class \{0} specified in handler file \{1} cannot be loaded. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1186]]AS-WSCONNECTOR-00203 Warning : Web service endpoint \{0} is not tied to a component. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1187]]AS-WSCONNECTOR-00204 Warning: Web service endpoint \{0} component link \{1} is not valid. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1188]]AS-WSCONNECTOR-00205 URL mapping for web service \{0} already exists. Is port-component-name in webservices.xml correct? ::
-  Cause: Invalid port-component-name value in webservices.xml. +
-  Action: Fix port-component-name element in webservices.xml.
-
-[[sthref1189]]AS-WSJSR109IMPL-00001 Failed to load deployment descriptor, aborting. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1190]]AS-WSJSR109IMPL-00002 WebService wsdl file \{0} not found in archive \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1191]]AS-WSJSR109IMPL-00003 Exception while processing catalog \{0} Reason : \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1192]]AS-WSJSR109IMPL-00004 Unable to create new File \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1193]]AS-WSJSR109IMPL-00006 WebService \{0} has a JAXWS and a JAXRPC endpoint; this is not supported now. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1194]]AS-WSJSR109IMPL-00011 Runtime settings error. Cannot find servlet-impl-class for endpoint \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1195]]AS-WSJSR109IMPL-00012 Cannot proceed with JaxrpcCodegen. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1196]]AS-WSJSR109IMPL-00013 Parsing error line \{0}, uri \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1197]]AS-WSJSR109IMPL-00014 Error parsing WSDL \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1198]]AS-WSJSR109IMPL-00018 Webservice Endpoint deployed \{0}\n listening at address at \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1199]]AS-WSJSR109IMPL-00019 EJB Endpoint deployed \{0}\n listening at address at \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1200]]AS-WSJSR109IMPL-00020 File \{0} not found. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1201]]AS-WSJSR109IMPL-00021 MTOM is valid only for SOAP Bindings; Ignoring Enable-MTOM for port \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1202]]AS-WSJSR109IMPL-00033 Implicit mapping not supported; ignoring for now; Remove *. specified in the url-pattern. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1203]]AS-WSJSR109IMPL-00034 Two web services are being deployed with the same endpoint URL \{0}; The service that gets loaded last will always be the one that is active for this URL. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1204]]AS-WSJSR109IMPL-00043 Exception while tracing request: \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1205]]AS-WSJSR109IMPL-00044 Exception while tracing response: \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1206]]AS-WSJSR109IMPL-00047 JAXWS WebServiceDispatcher \{0} entering for \{1} and query string \{2}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1207]]AS-WSJSR109IMPL-00048 Ejb endpoint exception. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1208]]AS-WSJSR109IMPL-00049 Unable to find adapter for endpoint \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1209]]AS-WSJSR109IMPL-00050 Following exception was thrown: ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1210]]AS-WSJSR109IMPL-00051 Client not authorized for invocation of \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1211]]AS-WSJSR109IMPL-00052 The following error was thrown by ServletPreHandler which is the first handler in the handler chain \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1212]]AS-WSJSR109IMPL-00053 The following error was thrown by ServletPostHandler which is the last handler in the handler chain \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1213]]AS-WSJSR109IMPL-00054 Error registering endpoint \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1214]]AS-WSJSR109IMPL-00055 Error unregistering endpoint \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1215]]AS-WSJSR109IMPL-00056 Deployment cannot proceed as the ejb has a null endpoint address uri. Potential cause may be webservice endpoints not supported in embedded ejb case. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1216]]AS-WSJSR109IMPL-00057 WebService \{0} type is declared as \{1} but should be either as a JAX-WS or JAX-RPC. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1217]]AS-WSJSR109IMPL-00070 Unsupported method request = [\{0}] for endpoint \{1} at \{2}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1218]]AS-WSJSR109IMPL-00071 invocation error on ejb endpoint \{0} at \{1} : \{2}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1219]]AS-WSJSR109IMPL-00072 Cannot initialize endpoint \{0} : error is : ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1220]]AS-WSJSR109IMPL-00073 Error In EjbRuntimeEndpointInfo ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1221]]AS-WSJSR109IMPL-00074 Missing internal monitoring info to trace \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1222]]AS-WSJSR109IMPL-00075 null message POSTed to ejb endpoint \{0} at \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1223]]AS-WSJSR109IMPL-00076 Invalid request scheme for Endpoint \{0}. Expected ''\{1}'', received ''\{2}''. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1224]]AS-WSJSR109IMPL-00077 authentication failed for \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1225]]AS-WSJSR109IMPL-00078 Servlet web service endpoint ''\{0}'' failure ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1226]]AS-WSJSR109IMPL-00079 Error occured ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1227]]AS-WSJSR109IMPL-00080 Error invoking servlet impl ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1228]]AS-WSJSR109IMPL-00081 Servlet web service endpoint ''\{0}'' HTTP GET error ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1229]]AS-WSJSR109IMPL-00082 Deployment failed ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1230]]AS-WSJSR109IMPL-00083 Cannot load the wsdl from the aplication: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1231]]AS-WSJSR109IMPL-00084 Creating endpoint with packaged WSDL \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1232]]AS-WSJSR109IMPL-00085 Metadata documents: ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1233]]AS-WSJSR109IMPL-00086 For endpoint \{0}, Ignoring configuration \{1} in weblogic-webservices.xml ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1234]]AS-WSJSR109IMPL-00087 For endpoint \{0}, Unsupported configuration \{1} in weblogic-webservices.xml ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1235]]AS-WSJSR109IMPL-00088 Unexpected error in EJB WebService endpoint post processing ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1236]]AS-WSJSR109IMPL-00089 Error in resolving the catalog ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1237]]AS-WSJSR109IMPL-00090 In doWebServicesDeployment: using local web services. There are \{0}. The app has total of \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1238]]AS-WSJSR109IMPL-00091 In doWebServicesDeployment: using web services via extension \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1239]]AS-WSJSR109IMPL-00092 File already exists \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1240]]AS-WSJSR109IMPL-00093 Directory already exists \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1241]]AS-WSJSR109IMPL-00094 Received HTTP GET containing text/xml content for endpoint \{0} at \{1}. HTTP POST should be used instead. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1242]]AS-WSJSR109IMPL-00095 Serving up final wsdl \{0} for \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1243]]AS-WSJSR109IMPL-00096 Failure serving WSDL for web service \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1244]]AS-WSJSR109IMPL-00097 Invalid wsdl request for web service \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1245]]AS-WSJSR109IMPL-00098 Unable to load impl class \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1246]]AS-WSJSR109IMPL-00099 Cannot write out a HTTP XML exception : \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1247]]AS-WSJSR109IMPL-00100 cannot write SOAPFault to the HTTP response ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1248]]AS-WSJSR109IMPL-00101 Cannot create soap fault for \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1249]]AS-WSJSR109IMPL-00102 Class \{0} not found during PreDestroy processing ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1250]]AS-WSJSR109IMPL-00103 Handler class \{0} not found during PreDestroy processing ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1251]]AS-WSJSR109IMPL-00104 Failure while calling PostConstruct/PreDestroy method ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1252]]AS-WSJSR109IMPL-00105 Unable to load handler class \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1253]]AS-WSJSR109IMPL-00106 Handler \{0} instance injection failed: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1254]]AS-WSJSR109IMPL-00107 Cannot log SOAP Message \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1255]]AS-WSJSR109IMPL-00108 Exception in creating endpoint ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1256]]AS-WSJSR109IMPL-00109 deleting directory failed : \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1257]]AS-WSJSR109IMPL-00110 creating directory failed : \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1258]]AS-WSJSR109IMPL-00111 Invoking wsimport with \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1259]]AS-WSJSR109IMPL-00112 wsimport successful ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1260]]AS-WSJSR109IMPL-00113 wsimport failed ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1261]]AS-WSJSR109IMPL-00114 authentication succeeded for endpoint ''\{0}'' in \{1} \{2} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1262]]AS-WSJSR109IMPL-00115 wsimport successful ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1263]]AS-WSJSR109IMPL-00116 missing implementation class for \{0} ::
-  Cause: No class defined in deployment descriptor +
-  Action: add implementation class definition to deployment descriptor
-
-[[sthref1264]]AS-WSJSR109IMPL-00117 Web service endpoint \{0} component link \{1} is not valid ::
-  Cause: Component link in webservices.xml is invalid +
-  Action: check port-component-name matches the name of service
-  implementation bean and check component link in webservices.xml
-
-[[sthref1265]]AS-WSJSR109IMPL-00120 destroyManagedObject failed for Handler \{0} for Service \{1} with error \{2} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1266]]AS-WSJSR109IMPL-00121 Module type ''\{0}'' is not supported. ::
-  Cause: Deployed module is not a web application nor ejb module. +
-  Action: Make sure web service is implemented in EJB module or Web
-  Application.
-
-[[sthref1267]]AS-WSJSR109IMPL-00122 \{0} does not support \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1268]]AS-WSJSR109IMPL-00123 Going to fetch ServletAdapter holding wsdl content for web service \{0} based on url: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1269]]AS-WSMETROGLUE-10001 Loading WS-TX Services. Please wait. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1270]]AS-WSMETROGLUE-10002 WS-TX Services successfully started. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1271]]AS-WSMETROGLUE-10003 WS-TX Services application was deployed explicitly. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1272]]AS-WSMETROGLUE-10004 Cannot deploy or load WS-TX Services: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1273]]AS-WSMETROGLUE-10010 Web service endpoint deployment events listener registered successfully. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1274]]AS-WSMETROGLUE-10011 Endpoint deployment even received. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1275]]AS-WSMETROGLUE-10012 Endpoint undeployment even received. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1276]]AS-WSMETROGLUE-10020 High availability environment configuration injected into Metro high availability provider. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1277]]AS-WSMETROGLUE-19998 Exception occurred retrieving port configuration for WSTX service. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1278]]AS-WSMETROGLUE-19999 Caught unexpected exception. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1279]]AS-WSSOAPTCP-00001 Initialize SOAP/TCP protocol for port: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1280]]AS-WSSOAPTCP-00002 Can not convert SOAP/TCP protocol id to byte array. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1281]]AS-WSSOAPTCP-00003 SOAP/TCP endpoint removed: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1282]]AS-WSSOAPTCP-00004 SOAP/TCP endpoint added: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1283]]AS-WSSOAPTCP-00006 WSTCPAdapterRegistryImpl. Register adapter. Path: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1284]]AS-WSSOAPTCP-00007 WSTCPAdapterRegistryImpl. DeRegister adapter for \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1285]]AS-WSSOAPTCP-00050 Following exception was thrown ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1286]]NCLS-CFGAPI-00001 No default config found, using config \{0} as the default config for the cluster \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1287]]NCLS-CFGAPI-00002 cluster property GMS_DISCOVERY_URI_LIST=\{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1288]]NCLS-CFGAPI-00003 cluster attribute gms broadcast=\{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1289]]NCLS-CFGAPI-00004 Cluster \{0} contains server instances \{1} and must not contain any instances ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1290]]NCLS-CFGAPI-00005 Unable to remove config \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1291]]NCLS-CFGAPI-00006 CopyConfig error caused by \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1292]]NCLS-CFGAPI-00007 Error when getting clusters on node dues to: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1293]]NCLS-CFGAPI-00008 Error when getting servers due to: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1294]]NCLS-CFGAPI-00009 Unable to create default Http service configuration ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1295]]NCLS-CFGAPI-00010 Cannot remove Node \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1296]]NCLS-CFGAPI-00011 Node \{0} referenced in server instance(s): \{1}. Remove instances before removing node. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1297]]NCLS-CFGAPI-00012 Can''t find the default config (an element named "default-config") in domain.xml. You may specify the name of an existing config element next time. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1298]]NCLS-CFGAPI-00013 Unable to remove server-ref \{0} from cluster \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1299]]NCLS-CFGAPI-00014 The default configuration template (named default-config) cannot be referenced by a server. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1300]]NCLS-CFGAPI-00015 The configuration of the Domain Administration Server cannot be changed from server-config. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1301]]NCLS-CFGAPI-00016 The configuration of the Domain Administration Server (named server-config) cannot be referenced by a server. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1302]]NCLS-CFGAPI-00017 The configuration of the Domain Administration Server (named server-config) cannot be referenced by a server. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1303]]NCLS-CFGAPI-00018 A configuration that doesn't exist cannot be referenced by a server. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1304]]NCLS-CFGAPI-00019 Port= \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1305]]NCLS-CFGAPI-00020 removing default instance index for \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1306]]NCLS-CFGAPI-00021 adding default instance index for \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1307]]NCLS-CFGAPI-00022 Existing default-config detected during upgrade. No need to create default-config. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1308]]NCLS-CFGAPI-00023 System Property com.sun.aas.installRoot is null. We could be running in unit tests.Exiting DefaultConfigUpgrade ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1309]]NCLS-CFGAPI-00024 default-config not detected during upgrade. Running DefaultConfigUpgrade to create default-config. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1310]]NCLS-CFGAPI-00025 Failure during upgrade - could not create default-config ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1311]]NCLS-CFGAPI-00027 Failure creating SecurityService Config ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1312]]NCLS-CFGAPI-00028 Problem parsing security-service ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1313]]NCLS-CFGAPI-00029 Failed to create HttpService VirtualService config object ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1314]]NCLS-CFGAPI-00030 Problem parsing http-service virtual-server in domain.xml template ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1315]]NCLS-CFGAPI-00031 Failed to create AdminService Property config object ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1316]]NCLS-CFGAPI-00032 Problem parsing asadmin-service property element in domain.xml template ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1317]]NCLS-CFGAPI-00033 Failure creating LogService config object ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1318]]NCLS-CFGAPI-00034 Failure creating ModuleLogLevel config object ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1319]]NCLS-CFGAPI-00035 Problem parsing module-log-levels in domain.xml template ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1320]]NCLS-CFGAPI-00036 Failure creating SecurityService config object ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1321]]NCLS-CFGAPI-00037 Failure creating AuthRealm ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1322]]NCLS-CFGAPI-00038 Problem parsing auth-realm ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1323]]NCLS-CFGAPI-00039 Create AuthRealm Property failed. Attr = \{0} and Val = \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1324]]NCLS-CFGAPI-00040 Problem parsing auth-realm property ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1325]]NCLS-CFGAPI-00041 Failure creating JaccProvider ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1326]]NCLS-CFGAPI-00042 Problem parsing jacc-provider ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1327]]NCLS-CFGAPI-00043 Create JaccProvider Property failed. Attr = \{0} and Val = \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1328]]NCLS-CFGAPI-00044 Problem parsing jacc-provider property ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1329]]NCLS-CFGAPI-00045 Failure creating AuditModule config object ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1330]]NCLS-CFGAPI-00046 Create AuditModule Property failed. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1331]]NCLS-CFGAPI-00047 Problem parsing audit-module property ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1332]]NCLS-CFGAPI-00048 Failure creating ProviderConfig ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1333]]NCLS-CFGAPI-00049 Problem parsing provider-config ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1334]]NCLS-CFGAPI-00050 Create ProviderConfig RequestPolicy failed. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1335]]NCLS-CFGAPI-00051 Problem parsing request-policy property ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1336]]NCLS-CFGAPI-00052 Create ProviderConfig Property failed ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1337]]NCLS-CFGAPI-00053 Problem parsing provider-config property ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1338]]NCLS-CFGAPI-00054 Failure creating JavaConfig config object ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1339]]NCLS-CFGAPI-00055 Problem parsing jvm-options ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1340]]NCLS-CFGAPI-00056 Failure creating AvailabilityService config object ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1341]]NCLS-CFGAPI-00057 Failure creating NetworkConfig config object ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1342]]NCLS-CFGAPI-00058 Failure creating Protocols config object ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1343]]NCLS-CFGAPI-00059 Problem parsing protocols element in domain.xml template ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1344]]NCLS-CFGAPI-00060 Failure creating Protocol config object ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1345]]NCLS-CFGAPI-00061 Failure creating Http config object ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1346]]NCLS-CFGAPI-00062 Failure creating FileCache config object ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1347]]NCLS-CFGAPI-00063 Problem parsing file-cache element in domain.xml template ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1348]]NCLS-CFGAPI-00064 Failure creating Ssl config object ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1349]]NCLS-CFGAPI-00065 Problem parsing ssl element in domain.xml template ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1350]]NCLS-CFGAPI-00066 Failure creating HttpRedirect config object ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1351]]NCLS-CFGAPI-00067 Failure creating PortUnification config object ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1352]]NCLS-CFGAPI-00068 Failure creating ProtocolFinder config object ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1353]]NCLS-CFGAPI-00069 Problem parsing protocol-finder element in domain.xml template ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1354]]NCLS-CFGAPI-00070 Failure creating NetworkListeners config object ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1355]]NCLS-CFGAPI-00071 Problem parsing network-listeners element in domain.xml template ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1356]]NCLS-CFGAPI-00072 Failure creating NetworkListener config object ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1357]]NCLS-CFGAPI-00073 Problem parsing network-listener element in domain.xml template ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1358]]NCLS-CFGAPI-00074 Failure creating Transports config object ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1359]]NCLS-CFGAPI-00075 Problem parsing transports element in domain.xml template ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1360]]NCLS-CFGAPI-00076 Failure creating Transport config object ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1361]]NCLS-CFGAPI-00077 Problem parsing transport element in domain.xml template ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1362]]NCLS-CFGAPI-00078 Failure to create ThreadPools config object ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1363]]NCLS-CFGAPI-00079 Failure creating ThreadPool config object ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1364]]NCLS-CFGAPI-00080 Problem parsing thread-pool element in domain.xml template ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1365]]NCLS-CFGAPI-00081 Failure creating SystemProperty config object ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1366]]NCLS-CFGAPI-00082 Problem parsing system-property element in domain.xml template ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1367]]NCLS-CFGAPI-00083 Startup class : ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1368]]NCLS-CFGAPI-00084 Successful cleaned domain.xml with ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1369]]NCLS-CFGAPI-00085 cleaning domain.xml failed ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1370]]NCLS-CFGAPI-00086 Instance \{0} from environment not found in domain.xml ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1371]]NCLS-CFGAPI-00087 Successful Upgrade domain.xml with ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1372]]NCLS-CFGAPI-00088 upgrading domain.xml failed ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1373]]NCLS-CFGAPI-00089 does not exist or is empty, will use backup ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1374]]NCLS-CFGAPI-00090 Problem parsing system-property element in domain.xml template ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1375]]NCLS-CFGAPI-00091 Problem parsing protocol element in domain.xml template ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1376]]NCLS-CFGAPI-00092 Total time to parse domain.xml: ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1377]]NCLS-CFGAPI-00093 Exception while creating the command model for the generic command \{0} : \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1378]]NCLS-CFGAPI-00094 The CrudResolver \{0} could not find the configuration object of type \{1} where instances of \{2} should be added ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1379]]NCLS-CFGAPI-00095 A \{0} instance with a \{1} name already exist in the configuration ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1380]]NCLS-CFGAPI-00096 Exception while invoking \{0} method : \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1381]]NCLS-CFGAPI-00097 The CreationDecorator \{0} could not be found in the habitat, is it annotated with @Service? ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1382]]NCLS-CFGAPI-00098 Exception while adding the new configuration : \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1383]]NCLS-CFGAPI-00099 Exception while persisting domain.xml, changes will not be available on server restart. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1384]]NCLS-CFGAPI-00100 Exception while persisting domain.xml, file a bug at http://glassfish.java.net ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1385]]NCLS-CFGAPI-00101 config.getHttpService() null for config ''\{0}'' ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1386]]NCLS-CFGAPI-00102 Failure while upgrading domain.xml ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1387]]NCLS-CFGAPI-00103 Cannot get default configuration for: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1388]]NCLS-CFGAPI-00104 Cannot parse default module configuration ::
-  Cause: Parsing for the default module configuration failed. +
-  Action: Take appropriate action based on the exception stack trace in
-  the log message.
-
-[[sthref1389]]NCLS-CFGAPI-00105 Failed to find the suitable method in returnException: \{0} : \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1390]]NCLS-CFGAPI-00106 Cannot get parent config bean for: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1391]]NCLS-CFGAPI-00107 The provided path is not valid: \{0} resolved to component name: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1392]]NCLS-CFGAPI-00108 Cannot set config bean due to exception thrown. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1393]]NCLS-CFGAPI-00109 Cannot set config bean for \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1394]]NCLS-CFGAPI-00110 Cannot remove config bean named \{0} as it does not exist. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1395]]NCLS-CFGAPI-00111 Cannot get extension type \{0} for \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1396]]NCLS-CFGAPI-00112 Failed to execute the command create-module-config ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1397]]NCLS-CFGAPI-00113 Failed to show all default configurations not merged with domain configuration under target \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1398]]NCLS-CFGAPI-00114 Failed to create all default configuration elements that are not present in the domain.xml under target \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1399]]NCLS-CFGAPI-00119 Failed to create module configuration for \{0} under the target \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1400]]NCLS-CFGAPI-00120 Failed to remove all configuration
-elements related to your service form domain.xml. You can use
-create-module-config --dryRun with your module name to see all relevant
-configurations and try removing the config elements. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1401]]NCLS-CFGAPI-00121 Failed to get active configuration for \{0} under the target \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1402]]NCLS-CFGAPI-00122 Failed to create a ClassLoader for modules directory. ::
-  Cause: The modules directory ClassLoader could not be created due to
-  an I/O error. +
-  Action: Take appropriate action based on the error stack trace
-  reported.
-
-[[sthref1403]]NCLS-CFGAPI-00123 Cannot add new configuration extension to the extension point. ::
-  Cause: An I/O error occurred during configuration extension addition. +
-  Action: Take appropriate action based on the error stack trace
-  reported.
-
-[[sthref1404]]NCLS-CFGAPI-00124 Can not read default configuration. ::
-  Cause: An I/O error occurred. +
-  Action: Take appropriate action based on the error stack trace
-  reported.
-
-[[sthref1405]]NCLS-CFGAPI-00125 Exception while creating the command model for the generic command \{0}. ::
-  Cause: An error occurred. +
-  Action: Take appropriate action based on the error details in the log.
-
-[[sthref1406]]NCLS-CFGAPI-00126 The Config Bean \{0} cannot be loaded by the generic command implementation. ::
-  Cause: The config bean class could not be loaded. +
-  Action: Take appropriate action based on the error stack trace
-  reported.
-
-[[sthref1407]]NCLS-CFGAPI-00127 Invalid annotated type \{0} passed to InjectionResolver:getValue() ::
-  Cause: Invalid annotated type. +
-  Action: Take appropriate action based on the error message details in
-  the log.
-
-[[sthref1408]]NCLS-CFGAPI-00128 Failure while getting List<?> values from component ::
-  Cause: Generic CRUD command invocation failure +
-  Action: Take appropriate action based on the error message details in
-  the log.
-
-[[sthref1409]]NCLS-CFGAPI-00129 The List type returned by \{0} must be a generic type. ::
-  Cause: Generic CRUD command invocation failure +
-  Action: Take appropriate action based on the error message details in
-  the log.
-
-[[sthref1410]]NCLS-CFGAPI-00130 The generic type \{0} is not supported, only List<? extends ConfigBeanProxy> is supported. ::
-  Cause: Generic CRUD command invocation failure +
-  Action: Provide a supported generic type.
-
-[[sthref1411]]NCLS-CFGAPI-00131 Failure while instrospecting \{0} to find all getters and setters. ::
-  Cause: Generic CRUD command invocation failure +
-  Action: Provide a supported generic type.
-
-[[sthref1412]]NCLS-CFGAPI-00132 Transaction exception while injecting \{1}. ::
-  Cause: Generic CRUD command invocation failure +
-  Action: Take appropriate action based on the error message details in
-  the log.
-
-[[sthref1413]]NCLS-CFGAPI-00133 The CrudResolver \{0} could not find the configuration object of type \{1} where instances of \{2} should be removed. ::
-  Cause: Generic delete command invocation failure +
-  Action: Take appropriate action based on the error message details in
-  the log.
-
-[[sthref1414]]NCLS-CFGAPI-00134 Exception while creating access checks for generic command \{0}. ::
-  Cause: An error occurred. +
-  Action: Take appropriate action based on the error details in the log.
-
-[[sthref1415]]NCLS-CFGAPI-00135 Cannot identify getter method for ListingColumn ::
-  Cause: An error occurred. +
-  Action: Take appropriate action based on the error details in the log.
-
-[[sthref1416]]NCLS-CFGAPI-00136 An error occurred while invoking getter \{0} on ConfigBeanProxy. ::
-  Cause: An error occurred. +
-  Action: Take appropriate action based on the error details in the log.
-
-[[sthref1417]]NCLS-CFGAPI-00137 Failure while upgrading http-service properties. ::
-  Cause: An error occurred. +
-  Action: Take appropriate action based on the error details in the log.
-
-[[sthref1418]]NCLS-GFLAUNCHER-00001 Single and double quote characters are not allowed in the CLASSPATH environmental variable. They were stripped out for you.\nBefore: \{0}\nAfter: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1419]]NCLS-GFLAUNCHER-00002 Error Launching: \{0} ::
-  Cause: As described in the message. +
-  Action: Fix the CLASSPATH
-
-[[sthref1420]]NCLS-GFLAUNCHER-00003 Could not locate the flashlight agent here: \{0} ::
-  Cause: As described in the message. +
-  Action: Find the agent file.
-
-[[sthref1421]]NCLS-GFLAUNCHER-00004 Will copy glassfish/lib/templates/server.policy file to domain before upgrading. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1422]]NCLS-GFLAUNCHER-00005 JVM invocation command line:\{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1423]]NCLS-MNTG-00000 Caught an Exception: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1424]]NCLS-MNTG-00001 Caught an Exception: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1425]]NCLS-MNTG-00005 Missing Module (\{0}) From Xml Probe Providers ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1426]]NCLS-MNTG-00104 Unable to load the ProbeProvider ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1427]]NCLS-MNTG-00105 Unable to load the ProbeProvider ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1428]]NCLS-MNTG-00109 mbean-enabled flag is turned on. Enabling all the MBeans ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1429]]NCLS-MNTG-00110 mbean-enabled flag is turned off. Disabling all the MBeans ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1430]]NCLS-MNTG-00111 dtrace-enabled flag is turned on/off. Enabling/Disabling DTrace ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1431]]NCLS-MNTG-00112 monitoring-enabled flag is turned on. Enabling all the Probes and Stats ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1432]]NCLS-MNTG-00113 monitoring-enabled flag is turned off. Disabling all the Stats ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1433]]NCLS-MNTG-00201 Flashlight listener registration failed for listener class: \{0} , will retry later ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1434]]NCLS-MNTG-00202 Invalid statsProvider (very likely a duplicate request), cannot unregister: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1435]]NCLS-MNTG-00203 Cannot find node \{0} for statsProvider \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1436]]NCLS-MNTG-00204 \{0} is not a ManagedObject and will not be registered with Gmbal to create an MBean ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1437]]NCLS-MNTG-00205 Gmbal registration failed ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1438]]NCLS-MNTG-00206 Gmbal unregistration failed ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1439]]NCLS-MNTG-00207 module-monitoring-level or container-monitoring config element for \{0} does not exist ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1440]]NCLS-MNTG-00208 Error unregistering the stats provider \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1441]]NCLS-MNTG-00209 Error resetting the stats provider: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1442]]NCLS-MNTG-00210 Unable to create container-monitoring for \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1443]]NCLS-RSTCN-00001 The REST connector has been started ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1444]]NCLS-RSCL-00001 An unsupported encoding was requested: \{0}. ::
-  Cause: The input supplied can not be encoded in the requested
-  encoding. +
-  Action: Verify that the input is valid.
-
-[[sthref1445]]NCLS-RSCL-00002 An error occurred while processing an XML document. ::
-  Cause: The input provided could not be read as an XML document. +
-  Action: Verify that the document provided is a valid XML document.
-
-[[sthref1446]]NCLS-RSCL-00003 An I/O exception occurred. ::
-  Cause: An error occured while closing an InputStream. +
-  Action: The error is not recoverable.
-
-[[sthref1447]]NCLS-RSCL-00004 An error occurred while processing a JSON object. ::
-  Cause: An invalid JSON string was provided and could not be read. +
-  Action: Verify that the JSON string is valid and retry the request.
-
-[[sthref1448]]NCLS-REST-00001 Listening to REST requests at context: \{0}/domain. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1449]]NCLS-REST-00002 Incorrectly formatted entry in \{0}: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1450]]NCLS-REST-00003 An error occurred while processing the request. Please see the server logs for details. ::
-  Cause: A runtime error occurred. Please see the log file for more
-  details +
-  Action: See the log file for more details
-
-[[sthref1451]]NCLS-REST-00004 The class specified by generator does not implement DefaultsGenerator ::
-  Cause: The generator does not implement the DefaultsGenerator
-  interface +
-  Action: Modify the generator to implement the DefaultsGenerator
-  interface
-
-[[sthref1452]]NCLS-REST-00005 Unsupported fixed value. Supported types are String, boolean, Boolean, int, Integer, long, Long, double, Double, float, and Float ::
-  Cause: The RestModel property has specified an unsupported data type +
-  Action: Modify the model to use one of the supported types
-
-[[sthref1453]]NCLS-REST-00006 Fixed value type does not match the property type ::
-  Cause: The value for the given property can not be converted to the
-  property's type +
-  Action: Check the input data
-
-[[sthref1454]]NCLS-REST-00007 Cannot marshal ::
-  Cause: The system is unable to generate XML for the given object +
-  Action: Check the logs for more details
-
-[[sthref1455]]NCLS-REST-00008 Unexpected exception during command execution. \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1456]]NCLS-REST-00009 Unable to delete directory \{0}. Will attempt deletion again upon JVM exit. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1457]]NCLS-REST-00010 Unable to delete file %s. Will attempt deletion again upon JVM exit. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1458]]NCLS-REST-00011 \{0}: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1459]]NCLS-REST-00012 Compilation failed. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1460]]NCLS-REST-00013 File creation failed: \{0} ::
-  Cause: The system was unable to create the specified file. +
-  Action: Verify that the filesystem is writable and has sufficient disk
-  space
-
-[[sthref1461]]NCLS-REST-00014 Directory creation failed: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1462]]NCLS-REST-00015 Unexpected exception during initilization. ::
-  Cause: The system is unable to init ReST interface +
-  Action: Check the logs for more details
-
-[[sthref1463]]NCLS-REST-00016 I/O exception: \{0} ::
-  Cause: See server log for details +
-  Action: See server log for details.
-
-[[sthref1464]]NCLS-SRVRMGMT-00000 Caught an Exception: \{0} ::
-  Cause: see Exception message +
-  Action: see Exception message
-
-[[sthref1465]]NCLS-SRVRMGMT-00001 Error attemping to delete temporary certificate file: \{0} ::
-  Cause: As described in the message. +
-  Action: Delete the file manually.
-
-[[sthref1466]]NCLS-SRVRMGMT-00002 Renaming \{0} to \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1467]]NCLS-SRVRMGMT-00003 Failed to rename \{0} to \{1} ::
-  Cause: As described in the message. +
-  Action: Check the file system.
-
-[[sthref1468]]NCLS-SRVRMGMT-00004 Failure while upgrading jvm-options from V2 to V3 ::
-  Cause: As described in the message. +
-  Action: Check documentation.
-
-[[sthref1469]]NCLS-SRVRMGMT-00005 JVM Monitoring ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1470]]NCLS-SRVRMGMT-00006 UpTime(ms) ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1471]]NCLS-SRVRMGMT-00007 Heap and NonHeap Memory(bytes) ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1472]]NCLS-SRVRMGMT-00008 Failure while upgrading log-service. Could not create logging.properties file. ::
-  Cause: As described in the message. +
-  Action: Check documentation.
-
-[[sthref1473]]NCLS-SRVRMGMT-00009 Failure while upgrading log-service. Could not update logging.properties file. ::
-  Cause: As described in the message. +
-  Action: Check documentation.
-
-[[sthref1474]]NCLS-SRVRMGMT-00010 Failure while upgrading log-service ::
-  Cause: As described in the message. +
-  Action: Check documentation.
-
-[[sthref1475]]NCLS-SRVRMGMT-00011 Could not create directory \{0} ::
-  Cause: As described in the message. +
-  Action: Check documentation.
-
-[[sthref1476]]NCLS-SRVRMGMT-00012 Could not create domain info XML file \{0} ::
-  Cause: As described in the message. +
-  Action: Check documentation.
-
-[[sthref1477]]NCLS-SRVRMGMT-00013 Missing file : \{0} ::
-  Cause: As described in the message. +
-  Action: Check documentation.
-
-[[sthref1478]]NCLS-SRVRMGMT-00014 Default port \{1} for \{0} is in use. Using \{2} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1479]]NCLS-SRVRMGMT-00015 Port for \{0} is not specified. Using \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1480]]NCLS-SRVRMGMT-00016 Invalid Port for \{0}, should be between 1 and 65535. Using \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1481]]NCLS-SRVRMGMT-00017 Port \{1} for \{0} is in use. Using \{2} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1482]]NCLS-SRVRMGMT-00018 Using default port \{1} for \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1483]]NCLS-SRVRMGMT-00019 Using port \{1} for \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1484]]NCLS-SRVRMGMT-00020 On Unix platforms, port numbers below 1024 may require special privileges. ::
-  Cause: As described in the message. +
-  Action: Check documentation.
-
-[[sthref1485]]NCLS-SRVRMGMT-00021 Failed to update jar \{0} with the substitutable files ::
-  Cause: As described in the message. +
-  Action: Check documentation.
-
-[[sthref1486]]NCLS-SRVRMGMT-00022 File \{0} not present inside archive \{1} ::
-  Cause: As described in the message. +
-  Action: Check documentation.
-
-[[sthref1487]]NCLS-SRVRMGMT-00023 Error occurred while closing the stream for file \{0} ::
-  Cause: As described in the message. +
-  Action: Check documentation.
-
-[[sthref1488]]NCLS-SRVRMGMT-00024 Could not rename temporary jar \{0} file to \{1} ::
-  Cause: As described in the message. +
-  Action: Check documentation.
-
-[[sthref1489]]NCLS-SRVRMGMT-00025 Could not locate file or resource \{0} ::
-  Cause: As described in the message. +
-  Action: Check documentation.
-
-[[sthref1490]]NCLS-SRVRMGMT-00026 No processing defined for \{0} mode ::
-  Cause: As described in the message. +
-  Action: Check documentation.
-
-[[sthref1491]]NCLS-SRVRMGMT-00027 Component \{0} is not present. ::
-  Cause: As described in the message. +
-  Action: Check documentation.
-
-[[sthref1492]]NCLS-SRVRMGMT-00028 Group \{0} is not present. ::
-  Cause: As described in the message. +
-  Action: Check documentation.
-
-[[sthref1493]]NCLS-SRVRMGMT-00029 Change-Pair \{0} referred by group \{1} is not defined. ::
-  Cause: As described in the message. +
-  Action: Check documentation.
-
-[[sthref1494]]NCLS-SRVRMGMT-00030 Invalid Mode Type \{0}. ::
-  Cause: As described in the message. +
-  Action: Check documentation.
-
-[[sthref1495]]NCLS-SRVRMGMT-00031 Found an empty <change-pair/>. ::
-  Cause: As described in the message. +
-  Action: Check documentation.
-
-[[sthref1496]]NCLS-SRVRMGMT-00032 IO Error occurred while retrieving substitutable entries from archive \{0}. ::
-  Cause: As described in the message. +
-  Action: Check documentation.
-
-[[sthref1497]]NCLS-SRVRMGMT-00033 In-memory string substitution file size is not defined. ::
-  Cause: As described in the message. +
-  Action: Check documentation.
-
-[[sthref1498]]NCLS-SRVRMGMT-00034 Key already exist in tree, Current Value : \{0} New Value : \{1}. ::
-  Cause: As described in the message. +
-  Action: Check documentation.
-
-[[sthref1499]]NCLS-SRVRMGMT-00035 Parent node: \{0} contains child node: \{1} whose key starts with same character as the key of given node: \{2} ::
-  Cause: As described in the message. +
-  Action: Check documentation.
-
-[[sthref1500]]NCLS-ADMIN-00001 Could not find state of instance registered in the state service ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1501]]NCLS-ADMIN-00002 Error during command replication: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1502]]NCLS-ADMIN-00003 unable to read instance state file \{0}, recreating ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1503]]NCLS-ADMIN-00004 unable to create instance state file: \{0}, exception: \{1} ::
-  Cause: The instance state file is missing and the system is trying
-  torecreated it but and exception was raised. +
-  Action: Check the server logs and contact Oracle support
-
-[[sthref1504]]NCLS-ADMIN-00005 error while adding new server state to instance state: \{0} ::
-  Cause: An attempt to add a new server to the instance state file
-  failed. +
-  Action: Check the server logs and contact Oracle support
-
-[[sthref1505]]NCLS-ADMIN-00006 error while adding failed command to instance state: \{0} ::
-  Cause: An attempt to add a failed command to the instance state file
-  failed. +
-  Action: Check the server logs and contact Oracle support
-
-[[sthref1506]]NCLS-ADMIN-00007 error while removing failed commands from instance state: \{0} ::
-  Cause: An attempt to remove a failed command from the instance state
-  file failed. +
-  Action: Check the server logs and contact Oracle support
-
-[[sthref1507]]NCLS-ADMIN-00008 error while setting instance state: \{0} ::
-  Cause: An attempt to set the state of a server in the instance state
-  file failed. +
-  Action: Check the server logs and contact Oracle support
-
-[[sthref1508]]NCLS-ADMIN-00009 error while removing instance: \{0} ::
-  Cause: An attempt to remove a server from the instance state file
-  failed. +
-  Action: Check the server logs and contact Oracle support
-
-[[sthref1509]]NCLS-ADMIN-00010 It appears that server [\{0}:\{1}] does not accept secure connections. Retry with --secure=false. ::
-  Cause: An attempt to invoke a command on another server failed. +
-  Action: Check that the server is configured to accept secure
-  connections.
-
-[[sthref1510]]NCLS-ADMIN-00011 An unexpected exception occurred. ::
-  Cause: An unexpected exception occurred. +
-  Action: Check the server logs and contact Oracle support
-
-[[sthref1511]]NCLS-ADMIN-00012 The server requires a valid admin password to be set before it can start. Please set a password using the change-admin-password command. ::
-  Cause: For security reason, the server requires a valid admin password
-  before it can start. +
-  Action: Set a password using the change-admin-password command.
-
-[[sthref1512]]NCLS-ADMIN-00013 Can not put data to cache under key \{0} ::
-  Cause: While invoking a command on another server, this server is
-  unable to cache the meta data related to the command. +
-  Action: Check the server logs and contact Oracle support
-
-[[sthref1513]]NCLS-ADMIN-00014 An admin request arrived from \{0} with the domain identifier \{1} which does not match the domain identifier \{2} configured for this server's domain; rejecting the request ::
-  Cause: There is a error in the cluster or network configuration. +
-  Action: Check the server logs and contact Oracle support
-
-[[sthref1514]]NCLS-ADMIN-00015 Error searching for a default admin user ::
-  Cause: An unexpected exception occurred wihle searching for the
-  default admin user. +
-  Action: Check the server logs and contact Oracle support
-
-[[sthref1515]]NCLS-ADMIN-00016 Cannot read admin cache file for \{0} ::
-  Cause: An error occured while reading the admin command model cache
-  file. +
-  Action: Check the server logs and contact Oracle support
-
-[[sthref1516]]NCLS-ADMIN-00017 Cannot write data to cache file for \{0} ::
-  Cause: An error occured while writing the admin command model cache
-  file. +
-  Action: Check the server logs and contact Oracle support
-
-[[sthref1517]]NCLS-ADMIN-00018 Unexpected exception from command event listener. ::
-  Cause: An error occured while calling registered listener. +
-  Action: Check the server logs and contact Oracle support
-
-[[sthref1518]]NCLS-CLSTR-10101 no clustername to lookup ::
-  Cause: Required information was not passed into method. +
-  Action: File issue with all relevant information.
-
-[[sthref1519]]NCLS-CLSTR-10102 Multiple gms-adapter service for cluster \{0} ::
-  Cause: GMs module is being initialized more than once for the same
-  cluster. +
-  Action: File issue with all relevant information.
-
-[[sthref1520]]NCLS-CLSTR-10103 GMS cannot initialize with unknown cluster ::
-  Cause: No cluster was found with this name in the domain
-  configuration. +
-  Action: Check that domain exists in domain.xml.
-
-[[sthref1521]]NCLS-CLSTR-10104 Started GMS for instance \{0} in group \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1522]]NCLS-CLSTR-10105 Member \{0} joined group \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1523]]NCLS-CLSTR-10107 AliveAndReady for signal: \{0} for member: \{1} of group: \{2} current:[\{3}] previous:[\{4}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1524]]NCLS-CLSTR-10108 GMSAdapter for member: \{0} group: \{1} received GlassFishEventType: \{2} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1525]]NCLS-CLSTR-10109 An exception occurred while creating the HealthHistory object: \{0} ::
-  Cause: An unexpected exception occurred. +
-  Action: See server log for more details.
-
-[[sthref1526]]NCLS-CLSTR-10110 An exception occurred while processing GMS configuration properties: \{0} ::
-  Cause: An unexpected exception occurred. +
-  Action: See server log for more details.
-
-[[sthref1527]]NCLS-CLSTR-10111 Ignoring group-management-service property \{0} with value of \{1} due to \{2} ::
-  Cause: An illegal argument was passed into the Shoal GMS
-  implementation. +
-  Action: Check the server log file for more information from Shoal-GMS.
-
-[[sthref1528]]NCLS-CLSTR-10112 Error processing cluster property:\{0} value:\{1} due to exception \{2} ::
-  Cause: An unexpected exception occurred. +
-  Action: Check the server log file for more information from Shoal-GMS.
-
-[[sthref1529]]NCLS-CLSTR-10113 Exception in getting GMS module for group \{0}: \{1} ::
-  Cause: An unexpected exception occurred. +
-  Action: Check the server log file for more information from Shoal-GMS.
-
-[[sthref1530]]NCLS-CLSTR-10114 An exception occurred while updating the instance health history table: \{0} ::
-  Cause: An unexpected exception occurred. +
-  Action: Check the log file for more information from Shoal-GMS.
-
-[[sthref1531]]NCLS-CLSTR-10115 start failure recovery callback for component: \{0} failed member: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1532]]NCLS-CLSTR-10116 complete failure recovery callback for component: \{0} failed member: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1533]]NCLS-CLSTR-10117 GMS failed to start. See stack trace for additional information. ::
-  Cause: An unexpected exception occurred. +
-  Action: Check the log file for more information
-
-[[sthref1534]]NCLS-CLSTR-10118 GMS failed to start due to a runtime exception. See stack trace for additional information. ::
-  Cause: An unexpected exception occurred. +
-  Action: Check the log file for more information
-
-[[sthref1535]]NCLS-CLSTR-10119 GMS bind interface address \{0} is invalid. Will use default value instead. ::
-  Cause: The specified bind interface address is not an active local
-  address, so it cannot be used on this node. +
-  Action: Check that you have specified the proper address. See server
-  log for more details from GMS subsystem.
-
-[[sthref1536]]NCLS-CLSTR-10120 GMS listener port is required for cluster \{0}. Will attempt to use default of \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1537]]NCLS-CLSTR-30001 GMSAnnounceAfterStartClusterCommand: exitCode:\{0} members \{1} clusterMembers:\{2} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1538]]NCLS-CLSTR-30002 An exception occurred while announcing GMS group startup: \{0} ::
-  Cause: An unexpected exception occurred in the GMS implementation. +
-  Action: Check the server log file for more information from Shoal-GMS.
-
-[[sthref1539]]NCLS-CLSTR-30003 An exception occurred while announcing GMS group shutdown: \{0} ::
-  Cause: An unexpected exception occurred in the GMS implementation. +
-  Action: Check the server log file for more information from Shoal-GMS.
-
-[[sthref1540]]NCLS-CLSTR-30004 An exception occurred while announcing GMS group startup: \{0} ::
-  Cause: An unexpected exception occurred in the GMS implementation. +
-  Action: Check the server log file for more information from Shoal-GMS.
-
-[[sthref1541]]NCLS-CLSTR-30005 An exception occurred while announcing GMS group shutdown: \{0} ::
-  Cause: An unexpected exception occurred in the GMS implementation. +
-  Action: Check the server log file for more information from Shoal-GMS.
-
-[[sthref1542]]NCLS-CLSTR-10001 Unable to load GMS classes. Group management service is not available. ::
-  Cause: GMS implementation classes are not present. See
-  https://glassfish.dev.java.net/issues/show_bug.cgi?id=12850. +
-  Action: Check that shoal-gms-impl.jar file is present.
-
-[[sthref1543]]NCLS-CLSTR-20001 Adding instance \{0} to health history table. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1544]]NCLS-CLSTR-20002 Instance \{0} was not in map when deleted from health history table. ::
-  Cause: More than one call may have been made to remove this instance
-  from the cluster. This has no other effect on the health history
-  information. +
-  Action: No action is necessary.
-
-[[sthref1545]]NCLS-CLSTR-20003 Deleting instance \{0} from health history table. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1546]]NCLS-CLSTR-20004 Duplicate instance \{0} ignored in health history. ::
-  Cause: There may be more than one instance in the cluster with the
-  same name. +
-  Action: Check that instance names are unique within the cluster.
-
-[[sthref1547]]NCLS-CLSTR-20005 State already known for instance \{0}. Not adding to health history table. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1548]]NCLS-CLSTR-20006 New state \{0} added for unknown instance \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1549]]NCLS-COM-00002 AMX Startup Service Shutdown. MBeans have not been unregistered: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1550]]NCLS-COM-00004 Fatal error loading AMX \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1551]]NCLS-COM-00008 AMX Startup Service: AMXLoader failed to load \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1552]]NCLS-COM-00009 AMX Startup Service: AMX ready for use, DomainRoot \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1553]]NCLS-COM-00010 AMXLoader failed to unload: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1554]]NCLS-COM-00011 ConfigBean not processed, something wrong with it \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1555]]NCLS-COM-00012 In AMXConfigLoader : Loading \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1556]]NCLS-COM-00019 Can't unregister MBean: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1557]]NCLS-COM-00020 Non-singleton ConfigBean \{0} has empty key value (name), supplying \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1558]]NCLS-COM-00021 AMX ComplianceMonitor: ValidationLevel = \{0}, UnregisterNonCompliant = \{1}, LogInaccessibleAttributes = \{2} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1559]]NCLS-COM-00022 AMX ComplianceMonitor thread has unexpectedly quit \{0} ::
-  Cause: A JMX validation thread has unexpectedly terminated due to an
-  exception. +
-  Action: Check the server logs and contact Oracle support.
-
-[[sthref1560]]NCLS-COM-00023 Validating MBean \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1561]]NCLS-COM-00024 Exception validating MBean \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1562]]NCLS-COM-00025 Register children for instance name \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1563]]NCLS-COM-00027 AMX Attribute Change Notification for \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1564]]NCLS-COM-00030 Attribute \{0} not found for object \{1} ::
-  Cause: An attempt to resolve an attribute failed. +
-  Action: Check the server logs and contact Oracle support.
-
-[[sthref1565]]NCLS-COM-00031 Can't find child of type \{0} ::
-  Cause: While removing a child, the child was not found. +
-  Action: Check the server logs and contact Oracle support.
-
-[[sthref1566]]NCLS-COM-00032 MBeans exist in AMX domain prior to DomainRoot (violates Parent requirement): \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1567]]NCLS-COM-00033 Can't register config MBean: type=\{0}, name=\{1}, exception=\{2} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1568]]NCLS-COM-00034 Unexpected thread death of AMXConfigLoaderThread ::
-  Cause: The AMX configuration loader thread received an unexpected
-  exception. +
-  Action: Check the server logs and contact Oracle support.
-
-[[sthref1569]]NCLS-COM-00035 Can't create children ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1570]]NCLS-COM-00036 AMXConfigStartupService.preDestroy(): stopping AMX ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1571]]NCLS-COM-00037 Illegal non-string type for \{0}.\{1}(): \{2} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1572]]NCLS-COM-00038 Can't get field value for \{0}: exception: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1573]]NCLS-COM-00039 Can't getTypesImplementing for \{0}: exception: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1574]]NCLS-COM-00040 Can't get childrenSet() from MBean: \{0}, exception: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1575]]NCLS-COM-00041 Problem with MBean: \{0}, exception: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1576]]NCLS-COM-00042 PathnamesImpl.getAllPathnames(): unexpected Throwable: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1577]]NCLS-COM-00043 Can't get path() for MBean: \{0}, exception: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1578]]NCLS-COM-00044 Can't instantiate realm: \{0}, exception: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1579]]NCLS-COM-00045 getRealmNames(): Can't get realm names, exception: ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1580]]NCLS-COM-00046 Cannot find primordial com.sun.enterprise.osgi-adapter ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1581]]NCLS-COM-00047 Stopping server forcibly ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1582]]NCLS-COM-00048 Can't get cipher suites ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1583]]NCLS-COM-00049 MBeanInfoSupport: @ManagedAttribute cannot also be @ManagedOperation: \{0}.\{1}() ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1584]]NCLS-COM-00050 MBeanInfoSupport: @ManagedAttribute not a getter or setter: \{0}.\{1}() ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1585]]NCLS-COMUTIL-00001 Failed to process class \{0} with bytecode preprocessor \{1} ::
-  Cause: As described in the message. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1586]]NCLS-COMUTIL-00002 Class \{0} is being reset to its original state ::
-  Cause: As described in the message. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1587]]NCLS-COMUTIL-00003 Class \{0} is being reset to the last successful preprocessor ::
-  Cause: As described in the message. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1588]]NCLS-COMUTIL-00004 The supplied preprocessor class \{0} is not an instance of org.glassfish.api.BytecodePreprocessor ::
-  Cause: As described in the message. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1589]]NCLS-COMUTIL-00005 Bytecode preprocessor disabled ::
-  Cause: As described in the message. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1590]]NCLS-COMUTIL-00006 Initialization failed for bytecode preprocessor \{0} ::
-  Cause: As described in the message. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1591]]NCLS-COMUTIL-00007 Error setting up preprocessor ::
-  Cause: As described in the message. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1592]]NCLS-COMUTIL-00008 Illegal max-entries [\{0}]; please check your cache configuration. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1593]]NCLS-COMUTIL-00009 Illegal MaxSize value [\{0}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1594]]NCLS-COMUTIL-00010 Error closing zip file for class path entry \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1595]]NCLS-COMUTIL-00011 An error occurred while adding URL [\{0}] to the EJB class loader. Please check the content of this URL. ::
-  Cause: An unexpected exception occurred while processing a URL. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1596]]NCLS-COMUTIL-00012 The URL entry is missing while contructing the classpath. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1597]]NCLS-COMUTIL-00013 Error closing zip file for duplicate class path entry \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1598]]NCLS-COMUTIL-00014 Exception in ASURLClassLoader ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1599]]NCLS-COMUTIL-00015 ASURLClassLoader \{1} was requested to find resource \{0} after done was invoked from the following stack trace ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1600]]NCLS-COMUTIL-00016 Error: Request made to load class or resource [\{0}] on an ASURLClassLoader instance that has already been shutdown. [\{1}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1601]]NCLS-COMUTIL-00017 \{0} actually got transformed ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1602]]NCLS-COMUTIL-00018 ASURLClassLoader \{1} was requested to find class \{0} after done was invoked from the following stack trace ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1603]]NCLS-COMUTIL-00019 Illegal call to close() detected ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1604]]NCLS-COMUTIL-00020 Error processing file with path \{0} in \{1} ::
-  Cause: An unexpected exception occurred while processing a file. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1605]]NCLS-COMUTIL-00021 Error checking for existing of \{0} in \{1} ::
-  Cause: An unexpected exception occurred while checking for the
-  existence of a file. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1606]]NCLS-COMUTIL-00022 Error closing an open stream during loader clean-up ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1607]]NCLS-COMUTIL-00023 Input stream has been finalized or forced closed without being explicitly closed; stream instantiation reported in following stack trace ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1608]]NCLS-COMUTIL-00024 Unable to create client data directory: \{0} ::
-  Cause: An unexpected failure occurred while creating the directory for
-  the file. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1609]]NCLS-COMUTIL-00025 Exception in invokeApplicationMain [\{0}]. ::
-  Cause: An unexpected exception occurred. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1610]]NCLS-COMUTIL-00026 The main method signature is invalid. ::
-  Cause: While invoking a main class, an invalid method was found. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1611]]NCLS-COMUTIL-00027 Error while caching the local string manager - package name may be null. ::
-  Cause: An unexpected exception occurred. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1612]]NCLS-COMUTIL-00028 Error while constructing the local string manager object. ::
-  Cause: An unexpected exception occurred. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1613]]NCLS-COMUTIL-00029 Error in local string manager - resource bundle is probably missing. ::
-  Cause: An unexpected exception occurred. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1614]]NCLS-COMUTIL-00030 Error while formating the local string. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1615]]NCLS-COMUTIL-00031 Some IOException occurred ::
-  Cause: An unexpected exception occurred. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1616]]NCLS-COMUTIL-00032 Attempt to delete \{0} failed; the file is reported as non-existent ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1617]]NCLS-COMUTIL-00033 Error attempting to delete \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1618]]NCLS-COMUTIL-00034 Performing gc to try to force file closures ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1619]]NCLS-COMUTIL-00035 Attempt to rename \{0} to \{1} succeeded after \{2} retries ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1620]]NCLS-COMUTIL-00036 Attempt to rename \{0} to \{1} succeeded without any retries ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1621]]NCLS-COMUTIL-00037 Attempt to rename \{0} to \{1} failed after \{2} retries ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1622]]NCLS-COMUTIL-00038 Failed to open jar file: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1623]]NCLS-COMUTIL-00039 Attempt to use non-existent auth token \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1624]]NCLS-COMUTIL-00040 File Lock not released on \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1625]]NCLS-COMUTIL-00041 Bad Network Configuration. DNS can not resolve the hostname: \n\{0} ::
-  Cause: The hostname can't be resolved. +
-  Action: Set the hostname correctly.
-
-[[sthref1626]]NCLS-COMUTIL-00042 BundleTracker.removedBundle null bundleID for \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1627]]NCLS-COM-01001 Exception \{0} resolving password alias \{1} in property \{2}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1628]]NCLS-COM-01002 Unknown property \{0} found unresolving \{1}. ::
-  Cause: No value was found for a property. This indicates a software
-  problem. +
-  Action: Check the server logs and contact Oracle support.
-
-[[sthref1629]]NCLS-COM-01003 System property reference missing trailing "'}'" at \{0} in domain.xml. ::
-  Cause: A system property reference in domain.xml is invalid. +
-  Action: Check the domain.xml file for an invalid system property
-  reference.
-
-[[sthref1630]]NCLS-COM-01004 System property reference missing starting "$'\{'" at \{0} in domain.xml. ::
-  Cause: A system property reference in domain.xml is invalid. +
-  Action: Check the domain.xml file for an invalid system property
-  reference.
-
-[[sthref1631]]NCLS-JMX--00008 Error while shutting down AMX ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1632]]NCLS-JMX-00001 JMXStartupService and JMXConnectors have been shut down. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1633]]NCLS-JMX-00002 JMXStartupService: Stopped JMXConnectorServer: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1634]]NCLS-JMX-00003 MBean Registration Exception thrown \{0} ::
-  Cause: JMX Connector Server MBean could not be unregistered. +
-  Action: Take appropriate action based on the exception message.
-
-[[sthref1635]]NCLS-JMX-00004 Instance Not Found Exception thrown \{0} ::
-  Cause: JMX Connector Server MBean instance not found. +
-  Action: Take appropriate action based on the exception message.
-
-[[sthref1636]]NCLS-JMX-00005 JMXStartupService has started JMXConnector on JMXService URL \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1637]]NCLS-JMX-00006 JMXStartupService has disabled JMXConnector \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1638]]NCLS-JMX-00007 Cannot start JMX connector \{0} due to exception \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1639]]NCLS-JMX-00008 Booting AMX Listener, connection made for \{0}, now booting AMX MBeans ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1640]]NCLS-JMX-00009 Security enabled ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1641]]NCLS-JMX-00010 Attempted access to method \{0} on object \{1} rejected; user was granted \{2} but the operation reports its impact as "\{3}" ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1642]]NCLS-JMX-00011 Error stopping RMIConnector ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1643]]NCLS-JMX-00012 MyRMIJRMPServerImpl: exported on address \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1644]]NCLS-JMX-00013 MyRMIJRMPServerImpl: makeClient on address = \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1645]]NCLS-JMX-00014 Error preparing SSL context ::
-  Cause: As described in the message. +
-  Action: Please refer to the stack trace
-
-[[sthref1646]]NCLS-JMX-00015 No Key store found for \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1647]]NCLS-JMX-00016 No keystores defined ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1648]]NCLS-JMX-00017 Bad maxCertLength: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1649]]NCLS-JMX-00018 JSSE keystoreload failed for type = \{0} path = \{1} \{2} ::
-  Cause: As described in the message. +
-  Action: Please refer to the stack trace
-
-[[sthref1650]]NCLS-JMX-00019 All SSL protocol variants disabled for network-listener, using SSL implementation specific defaults ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1651]]NCLS-JMX-00020 All SSL cipher suites disabled for network-listener(s). Using SSL implementation specific defaults ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1652]]NCLS-JMX-00021 Unknown cipher error for cipher \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1653]]NCLS-JMX-00022 Creating a SecureRMIClientSocketFactory @ \{0}with ssl config = \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1654]]NCLS-JMX-00023 Setting SSLParams @ \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1655]]NCLS-JMX-00024 Creating a SecureRMIServerSocketFactory @ \{0} with ssl config = \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1656]]NCLS-JMX-00025 SSLServerSocket \{0} and \{1} created ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1657]]NCLS-JMX-00026 Binding RMI port to single IP address = \{0}, port \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1658]]NCLS-BOOTSTRAP-00001 GlassFish requires JDK \{0}, you are using JDK version \{1}. ::
-  Cause: Incorrect JDK version is used. +
-  Action: Please use correct JDK version.
-
-[[sthref1659]]NCLS-BOOTSTRAP-00002 Using \{0} as the framework configuration file. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1660]]NCLS-BOOTSTRAP-00003 Could not extract archive \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1661]]NCLS-BOOTSTRAP-00004 Could not find RAR [\{0}] location [\{1}] after extraction. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1662]]NCLS-BOOTSTRAP-00005 Can not start bundle \{0} because it is not contained in the list of installed bundles. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1663]]NCLS-BOOTSTRAP-00006 Failed to start \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1664]]NCLS-BOOTSTRAP-00007 Can't uninstall bundle = \{0} as it's already uninstalled. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1665]]NCLS-BOOTSTRAP-00008 Uninstalled bundle \{0} installed from \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1666]]NCLS-BOOTSTRAP-00009 Can't update bundle = \{0} as it's already uninstalled. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1667]]NCLS-BOOTSTRAP-00010 Updated bundle \{0} from \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1668]]NCLS-BOOTSTRAP-00011 Failed to uninstall bundle \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1669]]NCLS-BOOTSTRAP-00012 Failed to update \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1670]]NCLS-BOOTSTRAP-00013 Failed to install \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1671]]NCLS-BOOTSTRAP-00014 Can not set the start level for \{0} to \{2} as it is already set to \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1672]]NCLS-BOOTSTRAP-00015 Skipping entry \{0} because it is not an absolute URI. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1673]]NCLS-BOOTSTRAP-00016 Skipping entry \{0} due to exception: ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1674]]NCLS-BOOTSTRAP-00017 Starting BundleProvisioner. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1675]]NCLS-BOOTSTRAP-00018 Time taken to locate OSGi framework = \{0} ms. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1676]]NCLS-BOOTSTRAP-00020 Time taken to initialize OSGi framework = \{0} ms. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1677]]NCLS-BOOTSTRAP-00021 Time taken to finish installation of bundles = \{0} ms. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1678]]NCLS-BOOTSTRAP-00022 Time taken to finish starting bundles = \{0} ms. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1679]]NCLS-BOOTSTRAP-00023 Total time taken to start = \{0} ms. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1680]]NCLS-BOOTSTRAP-00024 Time taken to stop = \{0} ms. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1681]]NCLS-BOOTSTRAP-00025 Total time taken = \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1682]]NCLS-BOOTSTRAP-00026 Create bundle provisioner class = \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1683]]NCLS-BOOTSTRAP-00027 Registered \{0} as OSGi service registration: \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1684]]NCLS-BOOTSTRAP-00028 Unregistered \{0} from service registry. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1685]]NCLS-BOOTSTRAP-00029 Exception while unregistering: ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1686]]NCLS-BOOTSTRAP-00030 installLocations = \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1687]]NCLS-BOOTSTRAP-00031 Unable to determine if \{0} is a fragment or not due to ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1688]]NCLS-BOOTSTRAP-00032 Skipping starting of bundles bundles have been provisioned already. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1689]]NCLS-BOOTSTRAP-00033 \{0} : latest file in installation location = \{1} and latest installed bundle = \{2} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1690]]NCLS-BOOTSTRAP-00034 Updating system bundle. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1691]]NCLS-BOOTSTRAP-00035 Provisioning options have changed, recreating the framework with a clean OSGi storage(aka cache). ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1692]]NCLS-BOOTSTRAP-00036 Unable to locate bundle \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1693]]NCLS-BOOTSTRAP-00037 Storage support not available in framework bundle, so can't store bundle ids. This may lead to slower start up time. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1694]]NCLS-BOOTSTRAP-00038 Storage support not available in framework bundle, so can't store provisioning options. This may lead to slower start up time. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1695]]NCLS-BOOTSTRAP-00039 Got an unexpected exception. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1696]]NCLS-CORE-00001 Cannot decode parameter \{0} = \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1697]]NCLS-CORE-00002 Cannot instantiate model for command \{0} ::
-  Cause: The service that implements the command could not be loaded. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1698]]NCLS-CORE-00003 Exception while running a command ::
-  Cause: An unexpected exception occurred while running a command. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1699]]NCLS-CORE-00004 Unable to get an instance of ClusterExecutor; Cannot dynamically reconfigure instances ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1700]]NCLS-CORE-00005 Can't delete local password file: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1701]]NCLS-CORE-00006 Can't create local password file: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1702]]NCLS-CORE-00007 Timeout occurred when processing Admin Console request. ::
-  Cause: A request for a lock timed out while processing an admin
-  console request. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1703]]NCLS-CORE-00008 Cannot process admin console request. ::
-  Cause: InterruptedException occurred while the service thread is
-  running. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1704]]NCLS-CORE-00009 Unable to serve resource: \{0}. Cause: \{1} ::
-  Cause: An I/O error occurred while serving a resource request. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1705]]NCLS-CORE-00010 Resource not found: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1706]]NCLS-CORE-00011 Console cannot be initialized due to an exception. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1707]]NCLS-CORE-00012 Cannot write property ''\{0} = \{1}'' for AdminService in domain.xml, exception: \{2} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1708]]NCLS-CORE-00013 Shutdown procedure finished ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1709]]NCLS-CORE-00014 Shutdown required ::
-  Cause: An unexpected exception occurred while changing run levels. A
-  shutdown is required. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1710]]NCLS-CORE-00015 Shutdown requested ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1711]]NCLS-CORE-00016 Startup service failed to start ::
-  Cause: An unexpected exception occurred while starting the startup
-  service. A shutdown is required. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1712]]NCLS-CORE-00017 \{0} (\{1}) startup time : \{2} (\{3}ms), startup services(\{4}ms), total(\{5}ms) ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1713]]NCLS-CORE-00018 TOTAL TIME INCLUDING CLI: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1714]]NCLS-CORE-00019 Shutting down server due to startup exception ::
-  Cause: An unexpected exception occurred while starting the server. A
-  shutdown is required. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1715]]NCLS-CORE-00020 Timed out, ignoring some startup service status ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1716]]NCLS-CORE-00021 Unexpected exception during startup ::
-  Cause: An unexpected exception occurred while starting the server. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1717]]NCLS-CORE-00022 Loading application \{0} done in \{1} ms ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1718]]NCLS-CORE-00023 Enable of application \{0} completed with a warning: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1719]]NCLS-CORE-00024 Error during enabling ::
-  Cause: An unexpected exception occurred while enabling an application. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1720]]NCLS-CORE-00025 Error during disabling ::
-  Cause: An unexpected exception occurred while disabling an
-  application. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1721]]NCLS-CORE-00026 Exception during lifecycle processing ::
-  Cause: An unexpected exception occurred during lifecycle processing. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1722]]NCLS-CORE-00027 ApplicationMetaDataProvider \{0} requires \{1} but no other ApplicationMetaDataProvider provides it ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1723]]NCLS-CORE-00028 Inconsistent state - nothing is providing \{0} yet it passed validation ::
-  Cause: An unexpected condition during lifecycle processing. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1724]]NCLS-CORE-00029 Cannot start container \{0}, exception: \{1} ::
-  Cause: An unexpected condition during lifecycle processing. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1725]]NCLS-CORE-00030 Cannot release container \{0}, exception \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1726]]NCLS-CORE-00031 Error while closing deployable artifact \{0}, exception: \{1} ::
-  Cause: An unexpected exception occurred during lifecycle processing. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1727]]NCLS-CORE-00032 Error while expanding archive file ::
-  Cause: An unexpected exception occurred during lifecycle processing. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1728]]NCLS-CORE-00033 Cannot find sniffer for module type: \{0} ::
-  Cause: An unexpected condition occurred during lifecycle processing. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1729]]NCLS-CORE-00034 Cannot find any sniffer for deployed app: \{0} ::
-  Cause: An unexpected condition occurred during lifecycle processing. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1730]]NCLS-CORE-00035 Exception occurred while satisfying optional package dependencies ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1731]]NCLS-CORE-00036 Cannot delete created temporary file \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1732]]NCLS-CORE-00037 Source is not a directory, using temporary location \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1733]]NCLS-CORE-00038 Cannot find the application type for the artifact at: \{0}. Was the container or sniffer removed? ::
-  Cause: An unexpected condition occurred while loading an application. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1734]]NCLS-CORE-00039 Exception during application deployment ::
-  Cause: An unexpected exception occurred while deploying an
-  application. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1735]]NCLS-CORE-00040 Cannot determine original location for application: \{0} ::
-  Cause: A URL syntax error occurred. +
-  Action: Check the application for proper syntax.
-
-[[sthref1736]]NCLS-CORE-00041 Application deployment failed: \{0} ::
-  Cause: The deployment command for an application failed as indicated
-  in the message. +
-  Action: Check the application and redeploy.
-
-[[sthref1737]]NCLS-CORE-00042 IOException while opening deployed artifact ::
-  Cause: An unexpected exception occurred while deploying an
-  application. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1738]]NCLS-CORE-00043 Application previously deployed is not at its original location any more: \{0} ::
-  Cause: An unexpected exception occurred while loading an application. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1739]]NCLS-CORE-00044 System property called \{0} is null, is this intended? ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1740]]NCLS-CORE-00045 Invalid classpath entry for common class loader ignored: \{0}, exception: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1741]]NCLS-CORE-00046 Cannot find javadb client jar file, derby jdbc driver will not be available by default. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1742]]NCLS-CORE-00047 CommonClassLoaderServiceImpl is unable to process \{0} because of an exception: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1743]]NCLS-CORE-00048 Invalid InputStream returned for \{0} ::
-  Cause: Unable to retrieve an entry from the archive. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1744]]NCLS-CORE-00049 Exception while processing \{0} inside \{1} of size \{2}, exception: \{3} ::
-  Cause: An unexpected exception occurred while processing an archive. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1745]]NCLS-CORE-00050 Cannot open sub-archive \{0} from \{1} ::
-  Cause: An unexpected exception occurred while processing an archive. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1746]]NCLS-CORE-00051 Cannot close sub archive \{0}, exception: \{1} ::
-  Cause: An unexpected exception occurred while closing an archive. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1747]]NCLS-CORE-00052 Exception loading lifecycle module [\{0}]; [\{1}] ::
-  Cause: An unexpected exception occurred while loading a lifecycle
-  module. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1748]]NCLS-CORE-00053 Lifecycle module [\{0}] threw ServerLifecycleException, exception: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1749]]NCLS-CORE-00054 Lifecycle module [\{0}] threw an Exception; please check your lifecycle module. Exception: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1750]]NCLS-CORE-00055 GrizzlyService stop-proxy problem ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1751]]NCLS-CORE-00056 Unable to start the server. Closing all ports ::
-  Cause: An unexpected exception occurred while starting the grizzly
-  service. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1752]]NCLS-CORE-00057 Exception closing port: \{0}, exception: \{1} ::
-  Cause: An unexpected exception occurred while closing a port. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1753]]NCLS-CORE-00058 Network listener \{0} on port \{1} disabled per domain.xml ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1754]]NCLS-CORE-00059 GrizzlyService endpoint registration problem ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1755]]NCLS-CORE-00060 Skip registering endpoint with non existent virtual server: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1756]]NCLS-CORE-00061 Attempting to start the \{0} container. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1757]]NCLS-CORE-00062 Done with starting \{0} container in \{1} ms. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1758]]NCLS-CORE-00063 Could not start container, no exception provided. ::
-  Cause: The container could not be started. +
-  Action: Ensure the libraries for the container are available.
-
-[[sthref1759]]NCLS-CORE-00064 Exception while starting container \{0}, exception: \{1} ::
-  Cause: An exception occurred while attempting to start the container. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1760]]NCLS-CORE-00065 Exception while mapping the request. ::
-  Cause: An exception occurred while mapping a request to the container. +
-  Action: Please resolve issues mentioned in the stack trace.
-
-[[sthref1761]]NCLS-CORE-00066 Cannot add new configuration to the Config element ::
-  Cause: An exception occurred while adding the container configuration
-  to the domain.xml. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1762]]NCLS-CORE-00067 Exception while enabling or disabling the autodeployment of applications ::
-  Cause: An exception occurred while enabling or disabling the
-  autodeployment of applications. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1763]]NCLS-CORE-00068 Exception while sending an event. ::
-  Cause: An exception occurred while sending an event. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1764]]NCLS-CORE-00069 Exception while dispatching an event ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1765]]NCLS-CORE-00070 An exception occurred while stopping the server, continuing. ::
-  Cause: An exception occurred while stopping the server. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1766]]NCLS-CORE-00071 The ManagedJobConfig bean \{0} was changed by \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1767]]NCLS-CORE-00072 Cleaning Job \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1768]]NCLS-CORE-00073 Initializing Job Cleanup service ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1769]]NCLS-CORE-00074 Initializing Managed Config bean ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1770]]NCLS-CORE-00075 Scheduling Cleanup ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1771]]NCLS-CORE-00076 Exception when cleaning jobs caused ::
-  Cause: An exception occured when cleaning the managed jobs +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1772]]NCLS-CORE-00077 -passwordfile specified, but the actual file was not, ignoring ... ::
-  Cause: A software error is causing an incorrect argument sequence. +
-  Action: No action necessary.
-
-[[sthref1773]]NCLS-CORE-00078 Invalid context root for the admin console application, using default: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1774]]NCLS-CORE-00079 Admin Console Adapter: context root: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1775]]NCLS-CORE-00080 Failed to configure the ManagedJobConfig bean ::
-  Cause: While running the configure-managed-jobs command, a write
-  transaction to the ManagedJobConfig bean failed. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1776]]NCLS-CORE-00081 Unable to get the ManagedJobConfig bean. ::
-  Cause: While running the configure-managed-jobs command, access to the
-  ManagedJobConfig bean failed. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1777]]NCLS-CORE-00082 Exiting after upgrade ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1778]]NCLS-CORE-00083 Exception while attempting to shutdown after upgrade ::
-  Cause: An exception occured when shutting down the server after an
-  upgrade. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1779]]NCLS-CORE-00084 Cannot find port information from domain.xml ::
-  Cause: No port value is available in the NetworkListener config bean +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1780]]NCLS-CORE-00085 Cannot parse port value: \{0}, using port 8080 ::
-  Cause: There is an invalid port value in the domain.xml file. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1781]]NCLS-CORE-00086 Unknown address \{0} ::
-  Cause: There is an invalid address value in the domain.xml file. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1782]]NCLS-CORE-00087 Grizzly Framework \{0} started in: \{1}ms - bound to [\{2}] ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1783]]NCLS-CORE-00088 Exception during postConstruct of DynamicReloadService ::
-  Cause: An unexpected exception occured. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1784]]NCLS-CORE-00089 Cannot determine host name, will use localhost exclusively ::
-  Cause: An unexpected exception occured. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1785]]NCLS-CORE-00090 Internal Server error: \{0} ::
-  Cause: An unexpected exception occured. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1786]]NCLS-CORE-00091 Unable to set customized error page ::
-  Cause: An unexpected exception occured. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1787]]NCLS-CORE-00092 Server shutdown initiated ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1788]]NCLS-CORE-00093 Problem while attempting to install admin console! ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1789]]NCLS-CORE-00094 Unable to load checkpoint ::
-  Cause: An unexpected exception occured. +
-  Action: Check the system logs and contact Oracle support.
-
-[[sthref1790]]NCLS-CORE-00095 Resuming command \{0} from its last checkpoint. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1791]]NCLS-CORE-00096 Automatically resumed command \{0} finished with exit code \{1}. \nMessage: \{2} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1792]]NCLS-LOGGING-00001 Cannot read logging configuration file. ::
-  Cause: An exception has occurred while reading the logging
-  configuration file. +
-  Action: Take appropriate action based on the exception message.
-
-[[sthref1793]]NCLS-LOGGING-00002 Could not apply the logging configuration changes. ::
-  Cause: There was an exception thrown while applying the logging
-  configuration changes. +
-  Action: Take appropriate action based on the exception message.
-
-[[sthref1794]]NCLS-LOGGING-00003 Updated logger levels successfully. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1795]]NCLS-LOGGING-00004 The logging configuration file \{0} has been deleted. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1796]]NCLS-LOGGING-00005 Error executing query to fetch log records. ::
-  Cause: There was an exception thrown while executing log query. +
-  Action: Take appropriate action based on the exception message.
-
-[[sthref1797]]NCLS-LOGGING-00006 The syslog handler could not be initialized. ::
-  Cause: There was an exception thrown while initializing the syslog
-  handler. +
-  Action: Take appropriate action based on the exception message.
-
-[[sthref1798]]NCLS-LOGGING-00007 There was an error sending a log message to syslog. ::
-  Cause: There was an exception thrown while sending a log message to
-  the syslog. +
-  Action: Take appropriate action based on the exception message.
-
-[[sthref1799]]NCLS-LOGGING-00008 The log file \{0} for the instance does not exist. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1800]]NCLS-LOGGING-00009 Running GlassFish Version: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1801]]NCLS-LOGGING-00010 Server log file is using Formatter class: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1802]]NCLS-LOGGING-00011 Failed to parse the date: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1803]]NCLS-LOGGING-00012 An invalid value \{0} has been specified for the \{1} attribute in the logging configuration. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1804]]NCLS-LOGGING-00013 The formatter class \{0} could not be instantiated. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1805]]NCLS-DEPLOYMENT-00040 Error occurred: \{0} ::
-  Cause: An exception was caught when the operation was attempted +
-  Action: See the exception to determine how to fix the error
-
-[[sthref1806]]NCLS-DEPLOYMENT-02025 Exception caught: \{0} ::
-  Cause: An exception was caught when the application was autodeployed. +
-  Action: See the exception to determine how to fix the error
-
-[[sthref1807]]NCLS-DEPLOYMENT-02026 Autoundeploying application: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1808]]NCLS-DEPLOYMENT-02027 Selecting file \{0} for autodeployment ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1809]]NCLS-DEPLOYMENT-02028 Error parsing configured polling-interval-in-seconds \{0} as an integer; \{1} \{2} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1810]]NCLS-DEPLOYMENT-02029 Exception caught: \{0} ::
-  Cause: An exception was caught when the application was autodeployed. +
-  Action: See the exception to determine how to fix the error
-
-[[sthref1811]]NCLS-DEPLOYMENT-02030 Error processing configuration change of \{0} from \{1} to \{2}; \{3} \{4} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1812]]NCLS-DEPLOYMENT-02031 Configured timeout value of \{0} second\{0,choice,0#seconds|1#second|1<seconds} will be used but seems very large ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1813]]NCLS-DEPLOYMENT-02032 Configured timeout value of \{0} second\{0,choice,0#seconds|1#second|1<seconds} is too small; using previous value of \{1}second \{1,choice,0#seconds|1#second|1<seconds} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1814]]NCLS-DEPLOYMENT-02033 Could not convert configured timeout value of "\{0}" to a number; using previous value of \{1} second\{1,choice,0#seconds|1#second|1<seconds ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1815]]NCLS-DEPLOYMENT-02034 Attempt to create file \{0} failed; no further information. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1816]]NCLS-DEPLOYMENT-02035 \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1817]]NCLS-DEPLOYMENT-02036 \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1818]]NCLS-DEPLOYMENT-02037 Error occurred: ::
-  Cause: An exception was caught when the operation was attempted +
-  Action: See the exception to determine how to fix the error
-
-[[sthref1819]]NCLS-DEPLOYMENT-02038 Attempt to delete file \{0} failed; no further information. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1820]]NCLS-DEPLOYMENT-02039 Attempt to create file \{0} failed; no further information. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1821]]NCLS-DEPLOYMENT-02041 Attempt to create file \{0} failed; no further information. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1822]]NCLS-DEPLOYMENT-02042 Attempt to set last modified date/time of file \{0} failed; no further information. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1823]]NCLS-DEPLOYMENT-02043 Attempt to delete file \{0} failed; no further information. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1824]]NCLS-DEPLOYMENT-02044 Attempt to create directory \{0} failed; no further information. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1825]]NCLS-DEPLOYMENT-00001 Exception while scanning \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1826]]NCLS-DEPLOYMENT-00002 Error scan jar entry \{0} \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1827]]NCLS-DEPLOYMENT-00003 Failed to scan archive for annotations ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1828]]NCLS-DEPLOYMENT-00004 Exception caught: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1829]]NCLS-DEPLOYMENT-00005 Could not expand entry \{0} into destination \{1} ::
-  Cause: An exception was caught when the entry was expanded +
-  Action: See the exception to determine how to fix the error
-
-[[sthref1830]]NCLS-DEPLOYMENT-00006 Cannot find archive \{0} referenced from archive \{1}, it will be ignored for annotation scanning ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1831]]NCLS-DEPLOYMENT-00007 Exception caught \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1832]]NCLS-DEPLOYMENT-00008 Error in jar entry \{0}: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1833]]NCLS-DEPLOYMENT-00009 Failed to scan archive for annotations: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1834]]NCLS-DEPLOYMENT-00010 Exception caught \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1835]]NCLS-DEPLOYMENT-00011 Optional package \{0} does not exist or its Specification-Version does not match. Unable to satisfy dependency for \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1836]]NCLS-DEPLOYMENT-00012 Optional package dependency satisfied for \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1837]]NCLS-DEPLOYMENT-00013 Error in opening optional package file \{0} due to exception: \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1838]]NCLS-DEPLOYMENT-00014 Exception occurred : \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1839]]NCLS-DEPLOYMENT-00015 Specification-Version for the
-optional package [ \{0} ] in the jarfile [ \{1} ] is not specified.
-Please provide a valid specification version for this optional package
-::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1840]]NCLS-DEPLOYMENT-00016 Skipping extension processing for \{0} due to error: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1841]]NCLS-DEPLOYMENT-00017 Exception: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1842]]NCLS-DEPLOYMENT-00018 unexpected error in getting urls ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1843]]NCLS-DEPLOYMENT-00019 file open failure; file = \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1844]]NCLS-DEPLOYMENT-00020 exception message: \{0} -- invalid zip file: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1845]]NCLS-DEPLOYMENT-00021 Cannot find an archive implementation for \{0} ::
-  Cause: The type of archive being created is not supported. +
-  Action: Determine the type of archive requested to see whether another
-  type can be used.
-
-[[sthref1846]]NCLS-DEPLOYMENT-00022 Attempt to list files in \{0} failed, perhaps because that is not a valid directory or because file permissions do not allow GlassFish to access it ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1847]]NCLS-DEPLOYMENT-00023 Ignoring \{0} because the containing archive \{1} recorded it as a pre-existing stale file ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1848]]NCLS-DEPLOYMENT-00024 Exception while getting manifest classpath: ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1849]]NCLS-DEPLOYMENT-00025 Artifact \{0} identified for inclusion in app clients after one or more app clients were generated. ::
-  Cause: The application might specify that modules are to be processed
-  in the order they appear in the application and an app client module
-  appears before a module that creates an artifact to be included in app
-  clients. +
-  Action: Make sure, if the application specifies initialize-in-order as
-  true, that the app clients appear after other modules which generated
-  artifacts that should be accessible to app clients.
-
-[[sthref1850]]NCLS-DEPLOYMENT-00026 Artifact with relative path \{0} expected at \{1} but does not exist or cannot be read ::
-  Cause: The server is attempting to register an artifact to be included
-  in the generated client JAR but the artifact does not exist or cannot
-  be read +
-  Action: This is an internal server error. Please file a bug report.
-
-[[sthref1851]]NCLS-DEPLOYMENT-00027 Artifact with relative path \{0} from \{1} collides with an existing artifact from file \{2} ::
-  Cause: The server has created more than one artifact with the same
-  relative path to be included in the generated client JAR file +
-  Action: This is an internal server error. Please file a bug report.
-
-[[sthref1852]]NCLS-DEPLOYMENT-00045 Cannot convert classpath to URL \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1853]]NCLS-DEPLOYMENT-00046 invalidSpecVersion: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1854]]NCLS-DIAG-03000 Can not fulfill request to get diagnostics context. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1855]]NCLS-DIAG-03001 An exception has prevented a diagnostics context from being created. ::
-  Cause: (see underlying exception) +
-  Action: (see underlying exception)
-
-[[sthref1856]]NCLS-MON-00301 Cannot process XML ProbeProvider, xml = \{0}, \nException: \{1} ::
-  Cause: Possible syntax error in the ProbeProvider XML +
-  Action: Check the syntax of ProbeProvider XML
-
-[[sthref1857]]NCLS-MON-00302 Cannot resolve the paramTypes, unable to create this probe - \{0} ::
-  Cause: Unknown Java type for the param +
-  Action: Try giving a fully qualified name for the type
-
-[[sthref1858]]NCLS-MON-00303 Cannot resolve the paramTypes of the probe - \{0}, ::
-  Cause: Unknown Java type for the param +
-  Action: Try giving a fully qualified name for the type
-
-[[sthref1859]]NCLS-MON-00304 Can not match the Probe method (\{0}) with any method in the DTrace object ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1860]]NCLS-MON-00305 Invalid parameters for ProbeProvider, ignoring \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1861]]NCLS-MON-00306 No Probe Provider found in Probe Provider XML ::
-  Cause: Invalid Probe Provider XML +
-  Action: Check Probe Provider XML syntax
-
-[[sthref1862]]NCLS-MON-00501 invalid pid, start flashlight-agent using asadmin enable-monitoring with --pid option, you may get pid using jps command ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1863]]NCLS-MON-00502 flashlight-agent.jar does not exist under \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1864]]NCLS-MON-00503 flashlight-agent.jar directory \{0} does not exist ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1865]]NCLS-MON-00504 Encountered exception during agent attach ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1866]]NCLS-MON-00505 Error transforming Probe: \{0} ::
-  Cause: Exception - see message +
-  Action: Check probe syntax
-
-[[sthref1867]]NCLS-MON-00506 Error unregistering ProbeProvider ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1868]]NCLS-MON-00507 Error during re-transformation ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1869]]NCLS-MON-00508 Error during registration of FlashlightProbe ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1870]]NCLS-MON-00509 Error attempting to write the re-transformed class data ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1871]]NCLS-MON-00510 Monitoring is disabled because there is no Attach API from the JVM available ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1872]]NCLS-MON-00511 Error while getting Instrumentation object from ProbeAgentMain ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1873]]NCLS-MON-00512 DTrace is not available. ::
-  Cause: This is caused if following are missing: \n1. JDK 7 is required
-  to run DTrace\n2. glassfish-dtrace.jar value-add is required for
-  DTrace +
-  Action: Run with JDK 7 and glassfish-dtrace.jar
-
-[[sthref1874]]NCLS-MON-00513 DTrace is not supported. ::
-  Cause: This is caused if: \n1. Operating System does not support
-  DTrace. Currently you must have Solaris 10 or higher for DTrace
-  support. +
-  Action: Run with Solaris 10 or higher
-
-[[sthref1875]]NCLS-MON-00514 DTrace is connected and ready. ::
-  Cause: This is caused if: \n1. Operating System does not support
-  DTrace. Currently you must have Solaris 10 or higher for DTrace
-  support. +
-  Action: Run with Solaris 10 or higher
-
-[[sthref1876]]NCLS-MON-00515 Unexpected exception invoking DTrace ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1877]]NCLS-OSGI-00001 Decorated url = \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1878]]NCLS-RESOURCE-00001 Unexpected exception in loading class [\{0}] by classloader. ::
-  Cause: Classpath is not properly set in the domain.xml or application
-  server process does not have read permissions on the directory that
-  holds the classes/jar. +
-  Action: Check that the classpath attribute in the java-config includes
-  a reference to the jar/package directory for the class or you do not
-  have read permissions on the directory that holds the classes/jar.
-
-[[sthref1879]]NCLS-RESOURCE-00002 Unexpected exception in loading class by classloader [\{0}]. ::
-  Cause: Classpath is not properly set in the domain.xml or you do not
-  have read permissions on the directory that holds the classes/jar. +
-  Action: Check that the classpath attribute in the java-config includes
-  a reference to the jar/package directory for the class or check that
-  the directory where the classes/jars reside have read permission for
-  the application server process
-
-[[sthref1880]]NCLS-RESOURCE-00003 Cannot bind resource [\{0}] to naming manager. Following exception occurred [\{1}]. ::
-  Cause: Please check the exception to get more details. +
-  Action: Please check the exception to resolve the same.
-
-[[sthref1881]]NCLS-RESOURCE-00004 Unable to deploy resource [\{0}] due to following exception: [\{1}]. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1882]]NCLS-RESOURCE-00005 Unable to undeploy resource, no Resource Deployer for [\{0}]. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1883]]NCLS-RESOURCE-00006 Unable to undeploy resource [\{0}] due to following exception: [\{1}]. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1884]]NCLS-RESOURCE-00007 Error while handling Change event due to following exception: [\{0}]. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1885]]NCLS-RESOURCE-00008 Error while handling Remove event due to following exception: [\{0}]. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1886]]NCLS-RESOURCE-00009 Unable to find ResourceDeployer for [\{0}]. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1887]]NCLS-SECURITY-01000 Caught exception. ::
-  Cause: As described in the message. +
-  Action: Check the server logs and contact Oracle support.
-
-[[sthref1888]]NCLS-SECURITY-01001 Java security manager is enabled. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1889]]NCLS-SECURITY-01002 Java security manager is disabled. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1890]]NCLS-SECURITY-01004 An I/O error occurred during copying of server config files. ::
-  Cause: Copying server config files. +
-  Action: Check the server logs and contact Oracle support.
-
-[[sthref1891]]NCLS-SECURITY-01005 XML processing error occurred during copying of server config files. ::
-  Cause: The XML file(s) may not be well formed. +
-  Action: Make sure the XML file(s) are well formed.
-
-[[sthref1892]]NCLS-SECURITY-01010 Entering Security Startup Service. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1893]]NCLS-SECURITY-01011 Security Service(s) started successfully. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1894]]NCLS-SECURITY-01012 Error obtaining keystore and truststore files for embedded server. ::
-  Cause: Saving the keystore and/or truststore to the temporary
-  directory. +
-  Action: Check if the user.home directory is writable.
-
-[[sthref1895]]NCLS-SECURITY-01013 An I/O error occurred while copying the security config files. ::
-  Cause: Copying security files to instanceRoot/config. +
-  Action: Check the server logs and contact Oracle support.
-
-[[sthref1896]]NCLS-SECURITY-01014 An error occurred while upgrading the security config files. ::
-  Cause: Upgrade security config files from a previous version. +
-  Action: Check the server logs and contact Oracle support.
-
-[[sthref1897]]NCLS-SECURITY-01015 Upgrade from v2 EE to v3.1 requires manual steps. Please refer to the v3.1 Upgrade Guide for details. ::
-  Cause: Upgrade security config files from a previous version. +
-  Action: Please refer to the v3.1 Upgrade Guide for details.
-
-[[sthref1898]]NCLS-SECURITY-01050 Certificate authentication requires certificate realm. ::
-  Cause: Unknown realm type. +
-  Action: Check server configuration
-
-[[sthref1899]]NCLS-SECURITY-01100 Disabled realm [\{0}] due to errors. ::
-  Cause: No realms available. +
-  Action: Check the server logs and contact Oracle support.
-
-[[sthref1900]]NCLS-SECURITY-01101 No realms available. Authentication services disabled. ::
-  Cause: No realms available. +
-  Action: Check the server logs and contact Oracle support.
-
-[[sthref1901]]NCLS-SECURITY-01104 Error while obtaining private subject credentials: \{0} ::
-  Cause: Private Credentials of Subject not available. +
-  Action: Please check if the private credentials are available.
-
-[[sthref1902]]NCLS-SECURITY-01105 A PasswordCredential was required but not provided. ::
-  Cause: PasswordCredential was required, but not supplied. +
-  Action: Please check if the password is provided.
-
-[[sthref1903]]NCLS-SECURITY-01115 Realm [\{0}] of classtype [\{1}] successfully created. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1904]]NCLS-SECURITY-01117 Realm [\{0}] successfully updated. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1905]]NCLS-SECURITY-01119 Realm [\{0}] successfully deleted. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1906]]NCLS-SECURITY-01140 Policy provider configuration overridden by property \{0} with value \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1907]]NCLS-SECURITY-01141 Requested jacc-provider [\{0}] is not configured in domain.xml. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1908]]NCLS-SECURITY-01142 Error while reading policy-provider in domain.xml. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1909]]NCLS-SECURITY-01143 Loading policy provider \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1910]]NCLS-SECURITY-01144 Error while installing policy provider: \{0}. ::
-  Cause: Setting the system wide policy. +
-  Action: Make sure there's sufficient permission to set the policy.
-
-[[sthref1911]]NCLS-SECURITY-01145 No policy provider defined. Will use the default JDK Policy implementation. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1912]]NCLS-SECURITY-01146 Policy configuration factory overridden by property \{0} with value \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1913]]NCLS-SECURITY-01147 Policy configuration factory not defined. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1914]]NCLS-SECURITY-01149 Policy provider configuration overridden by property \{0} with value \{1}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1915]]NCLS-SECURITY-01150 Failed to get the group names for user \{0} in realm \{1}: \{2}. ::
-  Cause: Operation now allowed +
-  Action: Check the server logs and contact Oracle support
-
-[[sthref1916]]NCLS-SECURITY-01151 Failed to get the group names for user \{0} in realm \{1}: \{2}. ::
-  Cause: Obtain the group names for a nonexistent user +
-  Action: Make sure the user is valid
-
-[[sthref1917]]NCLS-SECURITY-05019 ERROR: Unknown credential provided. Class: [\{0}]. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1918]]NCLS-SECURITY-05036 Exception in getting security context. ::
-  Cause: There was an exception obtaining the default security context. +
-  Action: Check the server logs and contact Oracle support
-
-[[sthref1919]]NCLS-SECURITY-05038 Default user login error. ::
-  Cause: There was an exception while authenticating the default caller
-  principal. +
-  Action: Check the server logs and contact Oracle support.
-
-[[sthref1920]]NCLS-SECURITY-05039 Exception entering name and password for security. ::
-  Cause: An exception occurred while processing username and password
-  for security. +
-  Action: An exception occurred while processing username and password
-  for security.
-
-[[sthref1921]]NCLS-SECURITY-05043 Exception in security accesscontroller action. ::
-  Cause: Running a privileged action +
-  Action: Check the server logs and contact Oracle support
-
-[[sthref1922]]NCLS-SECURITY-05046 Audit: Authentication refused for [\{0}]. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1923]]NCLS-SECURITY-05048 doAsPrivileged AuthPermission required to set SecurityContext. ::
-  Cause: Setting the SecurityContext in the current thread +
-  Action: Check the server logs and contact Oracle support
-
-[[sthref1924]]NCLS-SECURITY-05049 Unexpected exception while attempting to set SecurityContext. ::
-  Cause: There was an unexpected exception while setting the security
-  context. +
-  Action: Check the server logs and contact Oracle support.
-
-[[sthref1925]]NCLS-SECURITY-05050 Could not change the SecurityContext. ::
-  Cause: Changing the current SecurityContext. +
-  Action: Check the server logs and contact Oracle support
-
-[[sthref1926]]NCLS-SECURITY-05052 Subject is null. ::
-  Cause: null Subject used in SecurityContext construction. +
-  Action: Make sure the Subject is not null
-
-[[sthref1927]]NCLS-SECURITY-05055 Role mapping conflicts found in application \{0}. Some roles may not be mapped. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1928]]NCLS-SECURITY-05056 Error converting certificate \{0}: \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1929]]NCLS-SECURITY-05101 Failed to instantiate the SecurityLifeCycle. ::
-  Cause: As described in the message. +
-  Action: Check the server logs and contact Oracle support.
-
-[[sthref1930]]NCLS-SECURITY-05200 Error enabling secure admin. ::
-  Cause: Enable secure admin. +
-  Action: Check your command usage.
-
-[[sthref1931]]NCLS-SECURITY-05201 Error disabling secure admin. ::
-  Cause: Disable secure admin. +
-  Action: Check your command usage.
-
-[[sthref1932]]NCLS-SECURITY-05300 IIOP Security - error importing a name: $\{0}. ::
-  Cause: Importing a name in IIOP. +
-  Action: Check the server logs and contact Oracle support.
-
-[[sthref1933]]NCLS-SECURITY-05301 IIOP Security - error creating an exported name: $\{0}. ::
-  Cause: Creating an exported name in IIOP. +
-  Action: Check the server logs and contact Oracle support.
-
-[[sthref1934]]SEC-PROV-00100 Authorization Provider supplied an invalid resource: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1935]]SEC-PROV-00150 Role Mapping Provider supplied an invalid resource: \{0} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1936]]SEC-SVCS-00100 Authorization Service has successfully initialized. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1937]]SEC-SVCS-00101 Authorization Service initialization failed, exception \{0}, message \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1938]]SEC-SVCS-00102 Unable to decode URI: \{0}. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1939]]SEC-SVCS-00150 Role Mapping Service has successfully initialized. ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1940]]SEC-SVCS-00151 Role Mapping Service initialization failed, exception \{0}, message \{1} ::
-  Cause: As described in the message. +
-  Action: Resolve the situation described in the message, if necessary.
-
-[[sthref1941]]NCLS-SECURITY-05054 The SSL certificate has expired: \{0} ::
-  Cause: Certificate expired. +
-  Action: Check the expiration date of the certificate.
-
-
diff --git a/docs/error-messages-reference/src/main/jbake/content/preface.adoc b/docs/error-messages-reference/src/main/jbake/content/preface.adoc
deleted file mode 100644
index 4ddfa07..0000000
--- a/docs/error-messages-reference/src/main/jbake/content/preface.adoc
+++ /dev/null
@@ -1,318 +0,0 @@
-type=page
-status=published
-title=Preface
-next=error-messages.html
-prev=title.html
-~~~~~~
-Preface
-=======
-
-[[GSEMR00001]][[gkbbw]]
-
-
-[[preface]]
-Preface
--------
-
-[NOTE]
-========================================================================
-
-This documentation is part of the Java Enterprise Edition contribution 
-to the Eclipse Foundation and is not intended for use in relation to 
-Java Enterprise Edition or Orace GlassFish. The documentation is in the 
-process of being revised to reflect the new Jakarta EE branding. 
-Additional changes will be made as requirements and procedures evolve 
-for Jakarta EE. Where applicable, references to Java EE or Java 
-Enterprise Edition should be considered references to Jakarta EE. 
-
-Please see the Title page for additional license information.
-========================================================================
-
-This document describes error messages that you might encounter when
-using Sun GlassFish Server 5.0.
-
-This preface contains information about and conventions for the entire
-GlassFish Server Open Source Edition (GlassFish Server) documentation
-set.
-
-GlassFish Server is developed through the GlassFish project open-source
-community at `https://javaee.github.io/glassfish/`. The GlassFish
-project provides a structured process for developing the GlassFish
-Server platform that makes the new features of the Java EE platform
-available faster, while maintaining the most important feature of Java
-EE: compatibility. It enables Java developers to access the GlassFish
-Server source code and to contribute to the development of the GlassFish
-Server. The GlassFish project is designed to encourage communication
-between Oracle engineers and the community.
-
-The following topics are addressed here:
-
-* link:#BABJIEEB[GlassFish Server Documentation Set]
-* link:#BABBDGAE[Related Documentation]
-* link:#BABGCFGH[Typographic Conventions]
-* link:#BABHAGID[Symbol Conventions]
-
-[[BABJIEEB]][[glassfish-server-documentation-set]]
-
-GlassFish Server Documentation Set
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The GlassFish Server documentation set describes deployment planning and
-system installation. For an introduction to GlassFish Server, refer to
-the books in the order in which they are listed in the following table.
-
-[width="100%",cols="30%,70%",options="header",]
-|=======================================================================
-|Book Title |Description
-|link:../release-notes/toc.html#GSRLN[Release Notes] |Provides late-breaking information about
-the software and the documentation and includes a comprehensive,
-table-based summary of the supported hardware, operating system, Java
-Development Kit (JDK), and database drivers.
-
-|link:../quick-start-guide/toc.html#GSQSG[Quick Start Guide] |Explains how to get started with the
-GlassFish Server product.
-
-|link:../installation-guide/toc.html#GSING[Installation Guide] |Explains how to install the software
-and its components.
-
-|link:../upgrade-guide/toc.html#GSUPG[Upgrade Guide] |Explains how to upgrade to the latest
-version of GlassFish Server. This guide also describes differences
-between adjacent product releases and configuration options that can
-result in incompatibility with the product specifications.
-
-|link:../deployment-planning-guide/toc.html#GSPLG[Deployment Planning Guide] |Explains how to build a
-production deployment of GlassFish Server that meets the requirements of
-your system and enterprise.
-
-|link:../administration-guide/toc.html#GSADG[Administration Guide] |Explains how to configure, monitor,
-and manage GlassFish Server subsystems and components from the command
-line by using the link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`] utility. Instructions for
-performing these tasks from the Administration Console are provided in
-the Administration Console online help.
-
-|link:../security-guide/toc.html#GSSCG[Security Guide] |Provides instructions for configuring and
-administering GlassFish Server security.
-
-|link:../application-deployment-guide/toc.html#GSDPG[Application Deployment Guide] |Explains how to assemble and
-deploy applications to the GlassFish Server and provides information
-about deployment descriptors.
-
-|link:../application-development-guide/toc.html#GSDVG[Application Development Guide] |Explains how to create and
-implement Java Platform, Enterprise Edition (Java EE platform)
-applications that are intended to run on the GlassFish Server. These
-applications follow the open Java standards model for Java EE components
-and application programmer interfaces (APIs). This guide provides
-information about developer tools, security, and debugging.
-
-| |
-
-|link:../embedded-server-guide/toc.html#GSESG[Embedded Server Guide] |Explains how to run applications in
-embedded GlassFish Server and to develop applications in which GlassFish
-Server is embedded.
-
-|link:../ha-administration-guide/toc.html#GSHAG[High Availability Administration Guide] |Explains how to
-configure GlassFish Server to provide higher availability and
-scalability through failover and load balancing.
-
-|link:../performance-tuning-guide/toc.html#GSPTG[Performance Tuning Guide] |Explains how to optimize the
-performance of GlassFish Server.
-
-|link:../troubleshooting-guide/toc.html#GSTSG[Troubleshooting Guide] |Describes common problems that you
-might encounter when using GlassFish Server and explains how to solve
-them.
-
-|link:../error-messages-reference/toc.html#GSEMR[Error Message Reference] |Describes error messages that you
-might encounter when using GlassFish Server.
-
-|link:../reference-manual/toc.html#GSRFM[Reference Manual] |Provides reference information in man
-page format for GlassFish Server administration commands, utility
-commands, and related concepts.
-
-|link:../../openmq/mq-release-notes/toc.html#GMRLN[Message Queue Release Notes] |Describes new features,
-compatibility issues, and existing bugs for Open Message Queue.
-
-|link:../../openmq/mq-tech-over/toc.html#GMTOV[Message Queue Technical Overview] |Provides an introduction
-to the technology, concepts, architecture, capabilities, and features of
-the Message Queue messaging service.
-
-|link:../../openmq/mq-admin-guide/toc.html#GMADG[Message Queue Administration Guide] |Explains how to set up
-and manage a Message Queue messaging system.
-
-|link:../../openmq/mq-dev-guide-jmx/toc.html#GMJMG[Message Queue Developer's Guide for JMX Clients] |Describes
-the application programming interface in Message Queue for
-programmatically configuring and monitoring Message Queue resources in
-conformance with the Java Management Extensions (JMX).
-
-|link:../../openmq/mq-dev-guide-java/toc.html#GMJVG[Message Queue Developer's Guide for Java Clients] |Provides
-information about concepts and procedures for developing Java messaging
-applications (Java clients) that work with GlassFish Server.
-
-|link:../../openmq/mq-dev-guide-c/toc.html#GMCCG[Message Queue Developer's Guide for C Clients] |Provides
-programming and reference information for developers working with
-Message Queue who want to use the C language binding to the Message
-Queue messaging service to send, receive, and process Message Queue
-messages.
-|=======================================================================
-
-
-[[BABBDGAE]][[related-documentation]]
-
-Related Documentation
-~~~~~~~~~~~~~~~~~~~~~
-
-The following tutorials explain how to develop Java EE applications:
-
-* https://javaee.github.io/firstcup/[Your First Cup: An Introduction to
-the Java EE Platform] (`https://javaee.github.io/firstcup/`). For
-beginning Java EE programmers, this short tutorial explains the entire
-process for developing a simple enterprise application. The sample
-application is a web application that consists of a component that is
-based on the Enterprise JavaBeans specification, a JAX-RS web service,
-and a JavaServer Faces component for the web front end.
-* https://javaee.github.io/tutorial/[The Java EE 8 Tutorial]
-(`https://javaee.github.io/tutorial/`). This comprehensive tutorial
-explains how to use Java EE 7 platform technologies and APIs to develop
-Java EE applications.
-
-Javadoc tool reference documentation for packages that are provided with
-GlassFish Server is available as follows.
-
-* The API specification for version 8 of Java EE is located at
-`https://javaee.github.io/javaee-spec/javadocs/`.
-* The API specification for GlassFish Server 5.0, including Java EE 8
-platform packages and non-platform packages that are specific to the
-GlassFish Server product, is located at
-`https://javaee.github.io/javaee-spec/javadocs/`.
-
-Additionally, the
-http://www.oracle.com/technetwork/java/javaee/tech/index.html[Java EE
-Specifications] (`https://javaee.github.io/javaee-spec/Specifications`)
-might be useful.
-
-For information about creating enterprise applications in the NetBeans
-Integrated Development Environment (IDE), see the
-http://www.netbeans.org/kb/[NetBeans Documentation, Training & Support
-page] (`http://www.netbeans.org/kb/`).
-
-For information about the Apache Derby database for use with the
-GlassFish Server, see the https://db.apache.org/derby/manuals/[Apache
-Derby product page] (`https://db.apache.org/derby/manuals/`).
-
-The Java EE Samples project is a collection of sample applications that
-demonstrate a broad range of Java EE technologies. The Java EE Samples
-are bundled with the Java EE Software Development Kit (SDK) and are also
-available from the https://github.com/javaee/glassfish-samples[Java EE
-Samples project page] (`https://github.com/javaee/glassfish-samples`).
-
-[[BABGCFGH]][[typographic-conventions]]
-
-Typographic Conventions
-~~~~~~~~~~~~~~~~~~~~~~~
-
-The following table describes the typographic changes that are used in
-this book.
-
-[width="100%",cols="14%,37%,49%",options="header",]
-|=======================================================================
-|Typeface |Meaning |Example
-|`AaBbCc123` |The names of commands, files, and directories, and
-onscreen computer output a|
-Edit your `.login` file.
-
-Use `ls` `a` to list all files.
-
-`machine_name% you have mail.`
-
-|`AaBbCc123` |What you type, contrasted with onscreen computer output a|
-`machine_name%` `su`
-
-`Password:`
-
-|AaBbCc123 |A placeholder to be replaced with a real name or value |The
-command to remove a file is `rm` filename.
-
-|AaBbCc123 |Book titles, new terms, and terms to be emphasized (note
-that some emphasized items appear bold online) a|
-Read Chapter 6 in the User's Guide.
-
-A cache is a copy that is stored locally.
-
-Do not save the file.
-
-|=======================================================================
-
-
-[[BABHAGID]][[symbol-conventions]]
-
-Symbol Conventions
-~~~~~~~~~~~~~~~~~~
-
-The following table explains symbols that might be used in this book.
-
-[width="100%",cols="10%,26%,28%,36%",options="header",]
-|=======================================================================
-|Symbol |Description |Example |Meaning
-|`[ ]` |Contains optional arguments and command options. |`ls [-l]` |The
-`-l` option is not required.
-
-|`{ \| }` |Contains a set of choices for a required command option.
-|`-d {y\|n}` |The `-d` option requires that you use either the `y`
-argument or the `n` argument.
-
-|`${ }` |Indicates a variable reference. |`${com.sun.javaRoot}`
-|References the value of the `com.sun.javaRoot` variable.
-
-|- |Joins simultaneous multiple keystrokes. |Control-A |Press the
-Control key while you press the A key.
-
-|+ + |Joins consecutive multiple keystrokes. |Ctrl+A+N |Press the
-Control key, release it, and then press the subsequent keys.
-
-|> |Indicates menu item selection in a graphical user interface. |File >
-New > Templates |From the File menu, choose New. From the New submenu,
-choose Templates.
-|=======================================================================
-
-
-[[BABEACJI]][[default-paths-and-file-names]]
-
-Default Paths and File Names
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following table describes the default paths and file names that are
-used in this book.
-
-[width="100%",cols="14%,34%,52%",options="header",]
-|=======================================================================
-|Placeholder |Description |Default Value
-|as-install + |Represents the base installation directory for GlassFish
-Server. a|
-Installations on the Oracle Solaris operating system, Linux operating
-system, and Mac OS operating system:
-
-user's-home-directory`/glassfish6/glassfish`
-
-Installations on the Windows operating system:
-
-SystemDrive`:\glassfish6\glassfish`
-
-|as-install-parent + |Represents the parent of the base installation
-directory for GlassFish Server. a|
-Installations on the Oracle Solaris operating system, Linux operating
-system, and Mac operating system:
-
-user's-home-directory`/glassfish6`
-
-Installations on the Windows operating system:
-
-SystemDrive`:\glassfish6`
-
-|domain-root-dir + |Represents the directory in which a domain is
-created by default. |as-install`/domains/`
-
-|domain-dir + |Represents the directory in which a domain's
-configuration is stored. |domain-root-dir`/`domain-name
-
-|instance-dir + |Represents the directory for a server instance.
-|domain-dir`/`instance-name
-|=======================================================================
diff --git a/docs/error-messages-reference/src/main/jbake/content/title.adoc b/docs/error-messages-reference/src/main/jbake/content/title.adoc
deleted file mode 100644
index f4c2034..0000000
--- a/docs/error-messages-reference/src/main/jbake/content/title.adoc
+++ /dev/null
@@ -1,46 +0,0 @@
-type=page
-status=published
-title=Eclipse GlassFish Server Error Message Reference, Release 5.1
-next=preface.html
-prev=toc.html
-~~~~~~
-Eclipse GlassFish Server Error Message Reference, Release 5.1
-=============================================================
-
-[[eclipse-glassfish-server]]
-Eclipse GlassFish Server
-------------------------
-
-Error Message Reference
-
-Release 5.1
-
-Contributed 2018, 2019
-
-This book describes error messages that you might encounter when using
-GlassFish Server 5.1.
-
-[[sthref1]]
-
-'''''
-
-Eclipse GlassFish Server Error Message Reference, Release
-5.1
-
-Copyright © 2013, 2019 Oracle and/or its affiliates. All rights reserved.
-
-This program and the accompanying materials are made available under the 
-terms of the Eclipse Public License v. 2.0, which is available at 
-http://www.eclipse.org/legal/epl-2.0. 
-
-SPDX-License-Identifier: EPL-2.0
-
-Oracle and Java are registered trademarks of Oracle and/or its 
-affiliates. Other names may be trademarks of their respective owners. 
-
-Intel and Intel Xeon are trademarks or registered trademarks of Intel 
-Corporation. All SPARC trademarks are used under license and are 
-trademarks or registered trademarks of SPARC International, Inc. AMD, 
-Opteron, the AMD logo, and the AMD Opteron logo are trademarks or 
-registered trademarks of Advanced Micro Devices. UNIX is a registered 
-trademark of The Open Group. 
diff --git a/docs/error-messages-reference/src/main/jbake/jbake.properties b/docs/error-messages-reference/src/main/jbake/jbake.properties
deleted file mode 100644
index 546d09c..0000000
--- a/docs/error-messages-reference/src/main/jbake/jbake.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-site.host=http://jbake.org
-render.tags=false
-render.sitemap=false
-render.archive=false
-render.feed=false
-asciidoctor.option.safe=0
-asciidoctor.attributes.export=true
diff --git a/docs/error-messages-reference/src/main/jbake/templates/footer.ftl b/docs/error-messages-reference/src/main/jbake/templates/footer.ftl
deleted file mode 100644
index 6f2b09e..0000000
--- a/docs/error-messages-reference/src/main/jbake/templates/footer.ftl
+++ /dev/null
@@ -1,46 +0,0 @@
-<#-- a footer template fragment included in the page template -->
-<hr />
-
-<table width="90%" id="bottom-nav" cellspacing="0" cellpadding="0">
-	<colgroup>
-		<col width="12%"/>
-		<col width="12%"/>
-		<col width="*"/>
-	</colgroup>
-	<tr>		
-	    <#if content.prev??>
-		<td align="left">
-		<a href="${content.prev}">
-			<span class=" vector-font"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Previous</span>
-		</a>
-		</td>
-		</#if>
-
-		<#if content.next??>
-		<td align="left">
-		<a href="${content.next}">
-			<span class="vector-font"><i class="fa fa-arrow-circle-right vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Next</span>
-		</a>
-		</td>
-		</#if>
-
-		<td align="right">
-		<a href="toc.html">
-			<span class="vector-font"><i class="fa fa-list vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Contents</span>
-		</a>
-		</td>
-	</tr>
-</table>
-
-<span id="copyright">
-        <img src="img/eclipse_foundation_logo_tiny.png" height="20px" alt="Eclipse Foundation Logo" align="top"/>&nbsp;            
-        <span >Copyright&nbsp;&copy;&nbsp;2019,&nbsp;Oracle&nbsp;and/or&nbsp;its&nbsp;affiliates.&nbsp;All&nbsp;rights&nbsp;reserved.</span>
-</span>
-
-<p align="center" class="beta">${config.status!}</p>
-
-</body>
-</html>
diff --git a/docs/error-messages-reference/src/main/jbake/templates/header.ftl b/docs/error-messages-reference/src/main/jbake/templates/header.ftl
deleted file mode 100644
index 82ebb36..0000000
--- a/docs/error-messages-reference/src/main/jbake/templates/header.ftl
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html>
-<#-- a header template fragment included in the page template -->
-<html lang="en">
-  <head>
-    <meta charset="utf-8"/>
-    <title><#if (content.title)??><#escape x as x?xml>${content.title}</#escape></#if></title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <link href="<#if (content.rootpath)??>${content.rootpath}<#else></#if>css/style.css" rel="stylesheet">
-    <script src="https://use.fontawesome.com/96c4d89611.js"></script>
-  </head>
-  <body>
-<table id="doc-title" cellspacing="0" cellpadding="0">
-  <tr>
-  <td align="left" valign="top">
-  <b>${content.title}</b><br />
-      <p class="beta">${config.status!}</p>
-  </td>
-  </tr>
-</table>
-<hr />
-
-<table width="90%" id="top-nav" cellspacing="0" cellpadding="0">
-	<colgroup>
-		<col width="12%"/>
-		<col width="12%"/>
-		<col width="*"/>
-	</colgroup>
-	<tr>
-	    <#if content.prev??>
-		<td align="left">
-		<a href="${content.prev}">
-			<span class="vector-font"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Previous</span>
-		</a>
-		</td>
-	    </#if>
-
-	    <#if content.next??>
-		<td align="left">
-		<a href="${content.next}">
-			<span class=" vector-font"><i class="fa fa-arrow-circle-right vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Next</span>
-		</a>
-		</td>
-	    </#if>
-
-		<td align="right">
-		<a href="toc.html">
-			<span class=" vector-font"><i class="fa fa-list vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Contents</span>
-		</a>
-		</td>
-	</tr>
-</table>
-
diff --git a/docs/error-messages-reference/src/main/jbake/templates/menu.ftl b/docs/error-messages-reference/src/main/jbake/templates/menu.ftl
deleted file mode 100644
index 888c03d..0000000
--- a/docs/error-messages-reference/src/main/jbake/templates/menu.ftl
+++ /dev/null
@@ -1 +0,0 @@
-<#-- a menu bar template fragment included in the page template -->
\ No newline at end of file
diff --git a/docs/error-messages-reference/src/main/jbake/templates/page.ftl b/docs/error-messages-reference/src/main/jbake/templates/page.ftl
deleted file mode 100644
index eca51db..0000000
--- a/docs/error-messages-reference/src/main/jbake/templates/page.ftl
+++ /dev/null
@@ -1,8 +0,0 @@
-<#-- a top level page layout template -->
-
-<#include "header.ftl">
-<#include "menu.ftl">
-
-${content.body}
-
-<#include "footer.ftl">
\ No newline at end of file
diff --git a/docs/ha-administration-guide/README.md b/docs/ha-administration-guide/README.md
deleted file mode 100644
index a3ec2b6..0000000
--- a/docs/ha-administration-guide/README.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# A JBake project template
-
-## About JBake
-
-JBake is a static site generator, it's inspired from jekyll and written
-in java.  The basic idea is to have templates for the structure of the
-page, and the body generated from asciidoc content.
-
-## Pre requisites
-
-- Maven
-- JDK8+
-
-Deploying to Github will require password less authentication.
-
-This is done by exporting your SSH public key into your Github account.
-
-## Build the site locally
-
-The site is generated under target/staging.
-
-Open file:///PATH_TO_PROJECT_DIR/target/staging in a browser to view the site.
-
-```
-mvn generate-resources
-```
-
-Or you can invoke the JBake plugin directly.
-
-```
-mvn jbake:build
-```
-
-### Rebuild the site on changes
-
-```
-mvn jbake:watch
-```
-
-If you keep this command running, changes to the sources will be
-detected and the site will be rendered incrementally.
-
-This is convenient when writing content.
-
-### Serve the site locally
-
-```
-mvn jbake:serve
-```
-
-If a webserver is required (e.g. absolute path are used), this command
-will start a webserver (jetty) at http://localhost:8820.  It will also
-watch for changes and rebuild incrementally.
-
-## Deploy the site to Github Pages
-
-```
-mvn deploy
-```
-
-## Produce a zip file for download
-
-To produce a zip file containing the generated html files, use:
-
-```
-mvn package
-```
-
-When making a release on GitHub, this zip file should be added to the release.
-
-## Links
-
-- [JBake maven plugin documentation](https://github.com/Blazebit/jbake-maven-plugin)
-- [JBake documentation](http://jbake.org/docs/2.5.1)
-- [Freemarker documentation](http://freemarker.org/docs)
-- [AsciiDoc User Guide](http://asciidoc.org/userguide.html)
-- [Asciidoctor quick reference](http://asciidoctor.org/docs/asciidoc-syntax-quick-reference)
diff --git a/docs/ha-administration-guide/pom.xml b/docs/ha-administration-guide/pom.xml
index 7286d46..245aceb 100644
--- a/docs/ha-administration-guide/pom.xml
+++ b/docs/ha-administration-guide/pom.xml
@@ -22,11 +22,10 @@
     <parent>
         <groupId>org.glassfish.docs</groupId>
         <artifactId>parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../parent</relativePath>
     </parent>
-    <groupId>org.glassfish.docs</groupId>
     <artifactId>ha-administration-guide</artifactId>
     <packaging>jar</packaging>
-    <name>Eclipse GlassFish Server High Availability Administration Guide, Release 5.1</name>
+    <name>Eclipse GlassFish Server High Availability Administration Guide, Release 7</name>
 </project>
diff --git a/docs/ha-administration-guide/src/main/asciidoc/clusters.adoc b/docs/ha-administration-guide/src/main/asciidoc/clusters.adoc
new file mode 100644
index 0000000..a5ec99a
--- /dev/null
+++ b/docs/ha-administration-guide/src/main/asciidoc/clusters.adoc
@@ -0,0 +1,1313 @@
+type=page
+status=published
+title=Administering {productName} Clusters
+next=instances.html
+prev=nodes.html
+~~~~~~
+
+= Administering {productName} Clusters
+
+[[GSHAG00005]][[gjfom]]
+
+
+[[administering-glassfish-server-clusters]]
+== 4 Administering {productName} Clusters
+
+A cluster is a collection of {productName} instances that work
+together as one logical entity. A cluster provides a runtime environment
+for one or more Java Platform, Enterprise Edition (Jakarta EE)
+applications. A cluster provides high availability through failure
+protection, scalability, and load balancing.
+
+The Group Management Service (GMS) enables instances to participate in a
+cluster by detecting changes in cluster membership and notifying
+instances of the changes. To ensure that GMS can detect changes in
+cluster membership, a cluster's GMS settings must be configured
+correctly.
+
+The following topics are addressed here:
+
+* link:#gjfqp[About {productName} Clusters]
+* link:#gjfnl[Group Management Service]
+* link:#gkqdy[Creating, Listing, and Deleting Clusters]
+
+[[gjfqp]][[GSHAG00183]][[about-glassfish-server-clusters]]
+
+=== About {productName} Clusters
+
+A cluster is a named collection of {productName} instances that share
+the same applications, resources, and configuration information. For
+information about {productName} instances, see
+link:instances.html#gkrbv[Administering {productName} Instances].
+
+{productName} enables you to administer all the instances in a
+cluster as a single unit from a single host, regardless of whether the
+instances reside on the same host or different hosts. You can perform
+the same operations on a cluster that you can perform on an unclustered
+instance, for example, deploying applications and creating resources.
+
+A cluster provides high availability through failure protection,
+scalability, and load balancing.
+
+* Failure protection. If an instance or a host in a cluster fails,
+{productName} detects the failure and recovers the user session
+state. If a load balancer is configured for the cluster, the load
+balancer redirects requests from the failed instance to other instances
+in the cluster. Because the same applications and resources are on all
+instances in the cluster, an instance can fail over to any other
+instance in the cluster.
++
+To enable the user session state to be recovered, each instance in a
+cluster sends in-memory state data to another instance. As state data is
+updated in any instance, the data is replicated.
+* Scalability. If increased capacity is required, you can add instances
+to a cluster with no disruption in service. When an instance is added or
+removed, the changes are handled automatically.
+* Load balancing. If instances in a cluster are distributed among
+different hosts, the workload can be distributed among the hosts to
+increase overall system throughput.
+
+[[gjfnl]][[GSHAG00184]][[group-management-service]]
+
+=== Group Management Service
+
+The Group Management Service (GMS) is an infrastructure component that
+is enabled for the instances in a cluster. When GMS is enabled, if a
+clustered instance fails, the cluster and the Domain Administration
+Server (DAS) are aware of the failure and can take action when failure
+occurs. Many features of {productName} depend upon GMS. For example,
+GMS is used by the in-memory session replication, transaction service,
+and timer service features.
+
+GMS is a core service of the Shoal framework. For more information about
+Shoal, visit the http://shoal.dev.java.net/[Project Shoal home page]
+(`https://shoal.dev.java.net/`).
+
+The following topics are addressed here:
+
+* link:#CHDFEGAG[Protocols and Transports for GMS]
+* link:#gjfpd[GMS Configuration Settings]
+* link:#gjfog[Dotted Names for GMS Settings]
+* link:#gkoac[To Preconfigure Nondefault GMS Configuration Settings]
+* link:#gkqqo[To Change GMS Settings After Cluster Creation]
+* link:#gklhl[To Check the Health of Instances in a Cluster]
+* link:#gklhd[To Validate That Multicast Transport Is Available for a Cluster]
+* link:#CHDGAIBJ[Discovering a Cluster When Multicast Transport Is Unavailable]
+* link:#gjdlw[Using the Multi-Homing Feature With GMS]
+
+[[CHDFEGAG]][[GSHAG485]][[protocols-and-transports-for-gms]]
+
+==== Protocols and Transports for GMS
+
+You can specify that GMS should use one of the following combinations of
+protocol and transport for broadcasting messages:
+
+* User Datagram Protocol (UDP) multicast
+* Transmission Control Protocol (TCP) without multicast
+
+Even if GMS should use UDP multicast for broadcasting messages, you must
+ensure that TCP is enabled. On Windows systems, enabling TCP involves
+enabling a protocol and port for security when a firewall is enabled.
+
+If GMS should use UDP multicast for broadcasting messages and if
+{productName} instances in a cluster are located on different hosts,
+the following conditions must be met:
+
+* The DAS host and all hosts for the instances must be on the same subnet.
+* UDP multicast must be enabled for the network.
+To test whether multicast is enabled, use the
+link:reference-manual/validate-multicast.html#GSRFM00259[`validate-multicast`(1)]
+subcommand.
+
+If GMS should use TCP without multicast, you must configure GMS to
+locate the instances to use for discovering the cluster. For more
+information, see link:#CHDGAIBJ[Discovering a Cluster When Multicast
+Transport Is Unavailable].
+
+[NOTE]
+====
+If you do not configure GMS to locate the instances to use for
+discovering a cluster, GMS uses UDP multicast by default.
+====
+
+
+[[gjfpd]][[GSHAG00264]][[gms-configuration-settings]]
+
+==== GMS Configuration Settings
+
+{productName} has the following types of GMS settings:
+
+* GMS cluster settings — These are determined during cluster creation.
+For more information about these settings, see link:#gkqdm[To Create a Cluster].
+* GMS configuration settings — These are determined during configuration
+creation and are explained here.
+
+The following GMS configuration settings are used in GMS for group
+discovery and failure detection:
+
+`group-discovery-timeout-in-millis`::
+  Indicates the amount of time (in milliseconds) an instance's GMS
+  module will wait during instance startup for discovering other members
+  of the group.
++
+  The `group-discovery-timeout-in-millis` timeout value should be set to
+  the default or higher. The default is 5000.
+`max-missed-heartbeats`::
+  Indicates the maximum number of missed heartbeats that the health
+  monitor counts before the instance can be marked as a suspected
+  failure. GMS also tries to make a peer-to-peer connection with the
+  suspected member. If the maximum number of missed heartbeats is
+  exceeded and peer-to-peer connection fails, the member is marked as a
+  suspected failure. The default is 3.
+`heartbeat-frequency-in-millis`::
+  Indicates the frequency (in milliseconds) at which a heartbeat is sent
+  by each server instance to the cluster. +
+  The failure detection interval is the `max-missed-heartbeats`
+  multiplied by the `heartbeat-frequency-in-millis`. Therefore, the
+  combination of defaults, 3 multiplied by 2000 milliseconds, results in
+  a failure detection interval of 6 seconds. +
+  Lowering the value of `heartbeat-frequency-in-millis` below the
+  default would result in more frequent heartbeat messages being sent
+  out from each member. This could potentially result in more heartbeat
+  messages in the network than a system needs for triggering failure
+  detection protocols. The effect of this varies depending on how
+  quickly the deployment environment needs to have failure detection
+  performed. That is, the (lower) number of retries with a lower
+  heartbeat interval would make it quicker to detect failures. +
+  However, lowering this value could result in false positives because
+  you could potentially detect a member as failed when, in fact, the
+  member's heartbeat is reflecting the network load from other parts of
+  the server. Conversely, a higher timeout interval results in fewer
+  heartbeats in the system because the time interval between heartbeats
+  is longer. As a result, failure detection would take a longer. In
+  addition, a startup by a failed member during this time results in a
+  new join notification but no failure notification, because failure
+  detection and verification were not completed. +
+  The default is 2000.
+`verify-failure-waittime-in-millis`::
+  Indicates the verify suspect protocol's timeout used by the health
+  monitor. After a member is marked as suspect based on missed
+  heartbeats and a failed peer-to-peer connection check, the verify
+  suspect protocol is activated and waits for the specified timeout to
+  check for any further health state messages received in that time, and
+  to see if a peer-to-peer connection can be made with the suspect
+  member. If not, then the member is marked as failed and a failure
+  notification is sent. The default is 1500.
+`verify-failure-connect-timeout-in-millis`::
+  Indicates the time it takes for the GMS to detect a hardware or
+  network failure of a server instance. Be careful not to set this value
+  too low. The smaller this timeout value is, the greater the chance of
+  detecting false failures. That is, the instance has not failed but
+  doesn't respond within the short window of time. The default is 10000.
+
+The heartbeat frequency, maximum missed heartbeats, peer-to-peer
+connection-based failure detection, and the verify timeouts are all
+needed to ensure that failure detection is robust and reliable in
+{productName}.
+
+For the dotted names for each of these GMS configuration settings, see
+link:#gjfog[Dotted Names for GMS Settings]. For the steps to specify
+these settings, see link:#gkoac[To Preconfigure Nondefault GMS
+Configuration Settings].
+
+[[gjfog]][[GSHAG00265]][[dotted-names-for-gms-settings]]
+
+==== Dotted Names for GMS Settings
+
+Below are sample link:reference-manual/get.html#GSRFM00139[`get`] subcommands to get all the GMS
+configuration settings (attributes associated with the referenced
+`mycfg` configuration) and GMS cluster settings (attributes and
+properties associated with a cluster named `mycluster`).
+
+[source]
+----
+asadmin> get "configs.config.mycfg.group-management-service.*"
+configs.config.mycfg.group-management-service.failure-detection.heartbeat-frequency-in-millis=2000
+configs.config.mycfg.group-management-service.failure-detection.max-missed-heartbeats=3
+configs.config.mycfg.group-management-service.failure-detection.verify-failure-connect-timeout-in-millis=10000
+configs.config.mycfg.group-management-service.failure-detection.verify-failure-waittime-in-millis=1500
+configs.config.mycfg.group-management-service.group-discovery-timeout-in-millis=5000
+
+asadmin> get clusters.cluster.mycluster
+clusters.cluster.mycluster.config-ref=mycfg
+clusters.cluster.mycluster.gms-bind-interface-address=${GMS-BIND-INTERFACE-ADDRESS-mycluster}
+clusters.cluster.mycluster.gms-enabled=true
+clusters.cluster.mycluster.gms-multicast-address=228.9.245.47
+clusters.cluster.mycluster.gms-multicast-port=9833
+clusters.cluster.mycluster.name=mycluster
+
+asadmin> get "clusters.cluster.mycluster.property.*"
+clusters.cluster.mycluster.property.GMS_LISTENER_PORT=${GMS_LISTENER_PORT-mycluster}
+clusters.cluster.mycluster.property.GMS_MULTICAST_TIME_TO_LIVE=4
+clusters.cluster.mycluster.property.GMS_LOOPBACK=false
+clusters.cluster.mycluster.property.GMS_TCPSTARTPORT=9090
+clusters.cluster.mycluster.property.GMS_TCPENDPORT=9200
+----
+
+The last `get` subcommand displays only the properties that have been
+explicitly set.
+
+For the steps to specify these settings, see link:#gkoac[To Preconfigure
+Nondefault GMS Configuration Settings] and link:#gkqqo[To Change GMS
+Settings After Cluster Creation].
+
+[[gkoac]][[GSHAG00098]][[to-preconfigure-nondefault-gms-configuration-settings]]
+
+==== To Preconfigure Nondefault GMS Configuration Settings
+
+You can preconfigure GMS with values different than the defaults without
+requiring a restart of the DAS and the cluster.
+
+1. Create a configuration using the link:reference-manual/copy-config.html#GSRFM00011[`copy-config`]
+subcommand.
++
+For example:
++
+[source]
+----
+asadmin> copy-config default-config mycfg
+----
+For more information, see link:named-configurations.html#abdjr[To Create
+a Named Configuration].
+2. Set the values for the new configuration's GMS configuration
+settings.
++
+For example:
++
+[source]
+----
+asadmin> set configs.config.mycfg.group-management-service.group-discovery-timeout-in-millis=8000
+asadmin> set configs.config.mycfg.group-management-service.failure-detection.max-missed-heartbeats=5
+----
+For a complete list of the dotted names for these settings, see
+link:#gjfog[Dotted Names for GMS Settings].
+3. Create the cluster so it uses the previously created configuration.
++
+For example:
++
+[source]
+----
+asadmin> create-cluster --config mycfg mycluster
+----
+You can also set GMS cluster settings during this step. For more
+information, see link:#gkqdm[To Create a Cluster].
+4. Create server instances for the cluster.
++
+For example:
++
+[source]
+----
+asadmin> create-instance --node localhost --cluster mycluster instance01
+
+asadmin> create-instance --node localhost --cluster mycluster instance02
+----
+5. Start the cluster.
++
+For example:
++
+[source]
+----
+asadmin> start-cluster mycluster
+----
+
+[[GSHAG367]]
+
+See Also
+
+You can also view the full syntax and options of a subcommand by typing
+`asadmin help` subcommand at the command line.
+
+[[gkqqo]][[GSHAG00099]][[to-change-gms-settings-after-cluster-creation]]
+
+==== To Change GMS Settings After Cluster Creation
+
+To avoid the need to restart the DAS and the cluster, configure GMS
+configuration settings before cluster creation as explained in
+link:#gkoac[To Preconfigure Nondefault GMS Configuration Settings].
+
+To avoid the need to restart the DAS and the cluster, configure the GMS
+cluster settings during cluster creation as explained in link:#gkqdm[To
+Create a Cluster].
+
+Changing any GMS settings using the `set` subcommand after cluster
+creation requires a domain administration server (DAS) and cluster
+restart as explained here.
+
+1. Ensure that the DAS and cluster are running.
++
+Remote subcommands require a running server.
+2. Use the link:reference-manual/get.html#GSRFM00139[`get`] subcommand to determine the settings
+to change.
++
+For example:
++
+[source]
+----
+asadmin> get "configs.config.mycfg.group-management-service.*"
+configs.config.mycfg.group-management-service.failure-detection.heartbeat-frequency-in-millis=2000
+configs.config.mycfg.group-management-service.failure-detection.max-missed-heartbeats=3
+configs.config.mycfg.group-management-service.failure-detection.verify-failure-connect-timeout-in-millis=10000
+configs.config.mycfg.group-management-service.failure-detection.verify-failure-waittime-in-millis=1500
+configs.config.mycfg.group-management-service.group-discovery-timeout-in-millis=5000
+----
+For a complete list of the dotted names for these settings, see
+link:#gjfog[Dotted Names for GMS Settings].
+3. Use the link:reference-manual/set.html#GSRFM00226[`set`] subcommand to change the settings.
++
+For example:
++
+[source]
+----
+asadmin> set configs.config.mycfg.group-management-service.group-discovery-timeout-in-millis=6000
+----
+4. Use the `get` subcommand again to confirm that the changes were
+made.
++
+For example:
++
+[source]
+----
+asadmin> get configs.config.mycfg.group-management-service.group-discovery-timeout-in-millis
+----
+5. Restart the DAS.
++
+For example:
++
+[source]
+----
+asadmin> stop-domain domain1
+
+asadmin> start-domain domain1
+----
+6. Restart the cluster.
++
+For example:
++
+[source]
+----
+asadmin> stop-cluster mycluster
+
+asadmin> start-cluster mycluster
+----
+
+[[GSHAG368]]
+
+See Also
+
+You can also view the full syntax and options of a subcommand by typing
+`asadmin help` subcommand at the command line.
+
+[[gklhl]][[GSHAG00100]][[to-check-the-health-of-instances-in-a-cluster]]
+
+==== To Check the Health of Instances in a Cluster
+
+The `get-health` subcommand only works when GMS is enabled. This is the
+quickest way to evaluate the health of a cluster and to detect if
+cluster is properly operating; that is, all members of the cluster are
+running and visible to DAS.
+
+If multicast is not enabled for the network, all instances could be
+running (as shown by the link:reference-manual/list-instances.html#GSRFM00170[`list-instances`] subcommand),
+yet isolated from each other. The `get-health` subcommand does not show
+the instances if they are running but cannot discover each other due to
+multicast not being configured properly. See link:#gklhd[To Validate
+That Multicast Transport Is Available for a Cluster].
+
+1. Ensure that the DAS and cluster are running.
++
+Remote subcommands require a running server.
+2. Check whether server instances in a cluster are running by using the
+link:reference-manual/get-health.html#GSRFM00141[`get-health`] subcommand.
+
+[[GSHAG00032]][[gklgw]]
+Example 4-1 Checking the Health of Instances in a Cluster
+
+This example checks the health of a cluster named `cluster1`.
+
+[source]
+----
+asadmin> get-health cluster1
+instance1 started since Wed Sep 29 16:32:46 EDT 2010
+instance2 started since Wed Sep 29 16:32:45 EDT 2010
+Command get-health executed successfully.
+----
+
+[[GSHAG369]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help get-health` at the command line.
+
+[[gklhd]][[GSHAG00101]][[to-validate-that-multicast-transport-is-available-for-a-cluster]]
+
+==== To Validate That Multicast Transport Is Available for a Cluster
+
+[[GSHAG370]]
+
+Before You Begin
+
+To test a specific multicast address, multicast port, or bind interface
+address, get this information beforehand using the `get` subcommand. Use
+the following subcommand to get the multicast address and port for a
+cluster named `c1`:
+
+[source]
+----
+asadmin> get clusters.cluster.c1
+clusters.cluster.c1.config-ref=mycfg
+clusters.cluster.c1.gms-bind-interface-address=${GMS-BIND-INTERFACE-ADDRESS-c1}
+clusters.cluster.c1.gms-enabled=true
+clusters.cluster.c1.gms-multicast-address=228.9.174.162
+clusters.cluster.c1.gms-multicast-port=5383
+clusters.cluster.c1.name=c1
+----
+
+Use the following subcommand to get the bind interface address of a
+server instance named `i1` that belongs to a cluster named `c1`, if this
+system property has been set:
+
+[source]
+----
+asadmin> get servers.server.i1.system-property.GMS-BIND-INTERFACE-ADDRESS-c1
+servers.server.i1.system-property.GMS-BIND-INTERFACE-ADDRESS-c1.name=GMS-BIND-INTERFACE-ADDRESS-c1
+servers.server.i1.system-property.GMS-BIND-INTERFACE-ADDRESS-c1.value=10.12.152.30
+----
+
+For information on how to set this system property, see
+link:#gjdlw[Using the Multi-Homing Feature With GMS].
+
+
+[NOTE]
+====
+Do not run the `validate-multicast` subcommand using the DAS and
+cluster's multicast address and port values while the DAS and cluster
+are running. Doing so results in an error.
+
+The `validate-multicast` subcommand must be run at the same time on two
+or more machines to validate whether multicast messages are being
+received between the machines.
+====
+
+
+Check whether multicast transport is available for a cluster by using
+the link:reference-manual/validate-multicast.html#GSRFM00259[`validate-multicast`] subcommand.
+
+[[GSHAG00033]][[gklhv]]
+Example 4-2 Validating That Multicast Transport Is Available for a
+Cluster
+
+This example checks whether multicast transport is available for a
+cluster named `c1`.
+
+Run from host `sr1`:
+
+[source]
+----
+asadmin> validate-multicast
+Will use port 2048
+Will use address 228.9.3.1
+Will use bind interface null
+Will use wait period 2,000 (in milliseconds)
+
+Listening for data...
+Sending message with content "sr1" every 2,000 milliseconds
+Received data from sr1 (loopback)
+Received data from sr2
+Exiting after 20 seconds. To change this timeout, use the --timeout command line option.
+Command validate-multicast executed successfully.
+----
+
+Run from host `sr2`:
+
+[source]
+----
+asadmin> validate-multicast
+Will use port 2048
+Will use address 228.9.3.1
+Will use bind interface null
+Will use wait period 2,000 (in milliseconds)
+
+Listening for data...
+Sending message with content "sr2" every 2,000 milliseconds
+Received data from sr2 (loopback)
+Received data from sr1
+Exiting after 20 seconds. To change this timeout, use the --timeout command line option.
+Command validate-multicast executed successfully.
+----
+
+[[GSHAG371]]
+
+Next Steps
+
+As long as all machines see each other, multicast is validated to be
+working properly across the machines. If the machines are not seeing
+each other, set the `--bindaddress` option explicitly to ensure that all
+machines are using interface on same subnet, or increase the
+`--timetolive` option from the default of `4`. If these changes fail to
+resolve the multicast issues, ask the network administrator to verify
+that the network is configured so the multicast messages can be seen
+between all the machines used to run the cluster.
+
+[[GSHAG372]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help get-health` at the command line.
+
+[[CHDGAIBJ]][[GSHAG00373]][[discovering-a-cluster-when-multicast-transport-is-unavailable]]
+
+==== Discovering a Cluster When Multicast Transport Is Unavailable
+
+When multicast transport is unavailable, {productName} instances that
+are joining a cluster cannot rely on broadcast messages from GMS to
+discover the cluster. Instead, an instance that is joining a cluster
+uses a running instance or the DAS in the cluster to discover the
+cluster.
+
+Therefore, when multicast transport is unavailable, you must provide the
+locations of instances in the cluster to use for discovering the
+cluster. You are not required to provide the locations of all instances
+in the cluster. However, for an instance to discover the cluster, at
+least one instance whose location you provide must be running. To
+increase the probability of finding a running instance, provide the
+locations of several instances.
+
+If the DAS will be left running after the cluster is started, provide
+the location of the DAS first in the list of instances. When a cluster
+is started, the DAS is running before any of the instances in the
+cluster are started.
+
+The locations of the instances to use for discovering a cluster are part
+of the configuration data that you provide when creating the cluster.
+How to provide this data depends on how instances are distributed, as
+explained in the following subsections:
+
+* link:#CHDCGIFF[To Discover a Cluster When Multiple Instances in a
+Cluster are Running on a Host]
+* link:#CHDIGFCG[To Discover a Cluster When Each Instance in a Cluster
+Is Running on a Different Host]
+
+[[CHDCGIFF]][[GSHAG486]][[to-discover-a-cluster-when-multiple-instances-in-a-cluster-are-running-on-a-host]]
+
+===== To Discover a Cluster When Multiple Instances in a Cluster are Running on a Host
+
+If multiple instances in the same cluster are running on a host, you
+must provide a list of uniform resource indicators (URIs). Each URI must
+locate a {productName} instance or the DAS in the cluster.
+
+1. Ensure that the DAS is running. Remote subcommands require a running server.
+
+2. Create a system property to represent the port number of the port on
+which the DAS listens for messages from GMS for the cluster.
++
+Use the link:reference-manual/create-system-properties.html#GSRFM00059[`create-system-properties`] subcommand for this
+purpose.
++
+[source]
+----
+asadmin> create-system-properties GMS_LISTENER_PORT-cluster-name=gms-port
+----
+cluster-name::
+  The name of the cluster to which the messages from GMS apply.
+gms-port::
+  The port number of the port on which the DAS listens for messages from
+  GMS.
+
+3. Restart the DAS.
+
+4. When creating the cluster, set the `GMS_DISCOVERY_URI_LIST` property
+to a comma-separated list of URIs that locate instances to use for
+discovering the cluster.
++
+[source]
+----
+asadmin> create-cluster --properties GMS_DISCOVERY_URI_LIST=uri-list cluster-name
+----
+uri-list::
+  A comma-separated list of URIs that locate a {productName} instance
+  or the DAS in the cluster. +
+  The format of each URI in the list is as follows: +
+  scheme``://``host-name-or -IP-address``:``port
+
+  * scheme is the URI scheme, which is `tcp`.
+  * host-name-or -IP-address is the host name or IP address of the host
+  on which the instance is running.
+  * port is the port number of the port on which the instance will
+  listen for messages from GMS.
+cluster-name::
+  The name of the cluster that you are creating.
++
+[NOTE]
+====
+For complete instructions for creating a cluster, see link:#gkqdm[To Create a Cluster].
+====
+
+5. When you add each instance to the cluster, set the system property
+``GMS_LISTENER_PORT-``clustername for the instance.
+* To create the instance centrally, run the following command:
++
+[source]
+----
+asadmin> create-instance --node node-name
+--systemproperties GMS_LISTENER_PORT-cluster-name=gms-port --cluster  cluster-name instance-name
+----
+* To create the instance locally, run the following command:
++
+[source]
+----
+asadmin> create-local-instance
+--systemproperties GMS_LISTENER_PORT-cluster-name=gms-port --cluster  cluster-name instance-name
+----
+node-name::
+  The name of an existing {productName} node on which the instance is
+  to reside. For more information about nodes, see
+  link:nodes.html#gkrle[Administering {productName} Nodes].
+cluster-name::
+  The name of the cluster to which the you are adding the instance.
+gms-port::
+  The port number of the port on which the instance listens for messages
+  from GMS.
+instance-name::
+  The name of the instance that you are creating.
++
+[NOTE]
+====
+For full instructions for adding an instance to a cluster, see the
+following sections:
+
+* link:instances.html#gkqch[To Create an Instance Centrally]
+* link:instances.html#gkqbl[To Create an Instance Locally]
+====
+
+
+[[GSHAG487]][[sthref19]]
+Example 4-3 Discovering a Cluster When Multiple Instances are Running on a Host
+
+This example creates a cluster that is named `tcpcluster` for which GMS
+is not using multicast for broadcasting messages.
+
+The cluster contains the instances `instance101` and `instance102`.
+These instances reside on the host whose IP address is `10.152.23.224`
+and listen for GMS events on ports 9091 and 9092. The DAS is also
+running on this host and listens for GMS events on port 9090.
+
+Instances that are joining the cluster will use the DAS and the
+instances `instance101` and `instance102` to discover the cluster.
+
+[source]
+----
+asadmin> create-system-properties GMS_LISTENER_PORT-tcpcluster=9090
+Command create-system-properties executed successfully.
+asadmin> restart-domain
+Successfully restarted the domain
+Command restart-domain executed successfully.
+asadmin> create-cluster --properties GMS_DISCOVERY_URI_LIST=
+tcp'\\:'//10.152.23.224'\\:'9090,
+tcp'\\:'//10.152.23.224'\\:'9091,
+tcp'\\:'//10.152.23.224'\\:'9092 tcpcluster
+Command create-cluster executed successfully.
+asadmin> create-local-instance
+--systemproperties GMS_LISTENER_PORT-tcpcluster=9091 --cluster tcpcluster
+instance101
+Rendezvoused with DAS on localhost:4848.
+Port Assignments for server instance instance101:
+JMX_SYSTEM_CONNECTOR_PORT=28686
+JMS_PROVIDER_PORT=27676
+HTTP_LISTENER_PORT=28080
+ASADMIN_LISTENER_PORT=24848
+JAVA_DEBUGGER_PORT=29009
+IIOP_SSL_LISTENER_PORT=23820
+IIOP_LISTENER_PORT=23700
+OSGI_SHELL_TELNET_PORT=26666
+HTTP_SSL_LISTENER_PORT=28181
+IIOP_SSL_MUTUALAUTH_PORT=23920
+Command create-local-instance executed successfully.
+asadmin> create-local-instance
+--systemproperties GMS_LISTENER_PORT-tcpcluster=9092 --cluster tcpcluster
+instance102
+Rendezvoused with DAS on localhost:4848.
+Using DAS host localhost and port 4848 from existing das.properties for node
+localhost-domain1. To use a different DAS, create a new node using
+create-node-ssh or create-node-config. Create the instance with the new node and
+correct host and port:
+asadmin --host das_host --port das_port create-local-instance --node node_name
+instance_name.
+Port Assignments for server instance instance102:
+JMX_SYSTEM_CONNECTOR_PORT=28687
+JMS_PROVIDER_PORT=27677
+HTTP_LISTENER_PORT=28081
+ASADMIN_LISTENER_PORT=24849
+JAVA_DEBUGGER_PORT=29010
+IIOP_SSL_LISTENER_PORT=23821
+IIOP_LISTENER_PORT=23701
+OSGI_SHELL_TELNET_PORT=26667
+HTTP_SSL_LISTENER_PORT=28182
+IIOP_SSL_MUTUALAUTH_PORT=23921
+Command create-local-instance executed successfully.
+----
+
+[[GSHAG488]]
+
+See Also
+
+* link:reference-manual/create-system-properties.html#GSRFM00059[`create-system-properties`(1)]
+* link:#gkqdm[To Create a Cluster]
+* link:instances.html#gkqch[To Create an Instance Centrally]
+* link:instances.html#gkqbl[To Create an Instance Locally]
+
+[[CHDIGFCG]][[GSHAG489]][[to-discover-a-cluster-when-each-instance-in-a-cluster-is-running-on-a-different-host]]
+
+===== To Discover a Cluster When Each Instance in a Cluster Is Running on a Different Host
+
+If all instances in a cluster and the DAS are running on different
+hosts, you can specify the locations of instances to use for discovering
+the cluster as follows:
+
+* By specifying a list of host names or Internet Protocol (IP)
+addresses. Each host name or IP address must locate a host on which the
+DAS or a {productName} instance in the cluster is running. Instances
+that are joining the cluster will use the DAS or the instances to
+discover the cluster.
+* By generating the list of locations automatically. The generated list
+contains the locations of the DAS and all instances in the cluster.
+
+Multiple instances on the same host cannot be members of the same
+cluster.
+
+1. Ensure that the DAS is running.
++
+Remote subcommands require a running server.
+2. When creating the cluster, set the properties of the cluster as
+follows:
+* Set the `GMS_DISCOVERY_URI_LIST` property to one of the following
+values:
+
+** A comma-separated list of IP addresses or host names on which the DAS
+or the instances to use for discovering the cluster are running.
++
+The list can contain a mixture of IP addresses and host names.
+
+** The keyword `generate`.
+* Set the `GMS_LISTENER_PORT` property to a port number that is unique
+for the cluster in the domain.
++
+If you are specifying a list of IP addresses or host names, type the
+following command:
++
+[source]
+----
+asadmin> create-cluster --properties GMS_DISCOVERY_URI_LIST=host-list:
+GMS_LISTENER_PORT=gms-port cluster-name
+----
+If you are specifying the keyword `generate`, type the following
+command:
++
+[source]
+----
+asadmin> create-cluster --properties GMS_DISCOVERY_URI_LIST=generate:
+GMS_LISTENER_PORT=gms-port cluster-name
+----
+host-list::
+  A comma-separated list of IP addresses or host names on which the DAS
+  or the instances to use for discovering the cluster are running.
+gms-port::
+  The port number of the port on which the cluster listens for messages
+  from GMS.
+cluster-name::
+  The name of the cluster that you are creating.
++
+
+[NOTE]
+====
+For complete instructions for creating a cluster, see link:#gkqdm[To Create a Cluster].
+====
+
+
+[[GSHAG490]][[sthref20]]
+Example 4-4 Discovering a Cluster by Specifying a List of IP Addresses
+
+This example creates a cluster that is named `ipcluster` for which GMS
+is not using multicast for broadcasting messages. The instances to use
+for discovering the cluster are located through a list of IP addresses.
+In this example, one instance in the cluster is running on each host and
+the DAS is running on a separate host. The cluster listens for messages
+from GMS on port 9090.
+
+[source]
+----
+asadmin> create-cluster --properties 'GMS_DISCOVERY_URI_LIST=
+10.152.23.225,10.152.23.226,10.152.23.227,10.152.23.228:
+GMS_LISTENER_PORT=9090' ipcluster
+Command create-cluster executed successfully.
+----
+
+[[GSHAG491]][[sthref21]]
+Example 4-5 Discovering a Cluster by Generating a List of Locations of
+Instances
+
+This example creates a cluster that is named `gencluster` for which GMS
+is not using multicast for broadcasting messages. The list of locations
+of instances to use for discovering the cluster is generated
+automatically. In this example, one instance in the cluster is running
+on each host and the DAS is running on a separate host. The cluster
+listens for messages from GMS on port 9090.
+
+[source]
+----
+asadmin> create-cluster --properties 'GMS_DISCOVERY_URI_LIST=generate:
+GMS_LISTENER_PORT=9090' gencluster
+Command create-cluster executed successfully.
+----
+
+[[GSHAG492]]
+
+Next Steps
+
+After creating the cluster, add instances to the cluster as explained in
+the following sections:
+
+* link:instances.html#gkqch[To Create an Instance Centrally]
+* link:instances.html#gkqbl[To Create an Instance Locally]
+
+[[GSHAG493]]
+
+See Also
+
+* link:#gkqdm[To Create a Cluster]
+* link:instances.html#gkqch[To Create an Instance Centrally]
+* link:instances.html#gkqbl[To Create an Instance Locally]
+
+[[gjdlw]][[GSHAG00266]][[using-the-multi-homing-feature-with-gms]]
+
+==== Using the Multi-Homing Feature With GMS
+
+Multi-homing enables {productName} clusters to be used in an
+environment that uses multiple Network Interface Cards (NICs). A
+multi-homed host has multiple network connections, of which the
+connections may or may not be the on same network. Multi-homing provides
+the following benefits:
+
+* Provides redundant network connections within the same subnet. Having
+multiple NICs ensures that one or more network connections are available
+for communication.
+* Supports communication across two or more different subnets. The DAS
+and all server instances in the same cluster must be on the same subnet
+for GMS communication, however.
+* Binds to a specific IPv4 address and receives GMS messages in a system
+that has multiple IP addresses configured. The responses for GMS
+messages received on a particular interface will also go out through
+that interface.
+* Supports separation of external and internal traffic.
+
+[[gjdoo]][[GSHAG00224]][[traffic-separation-using-multi-homing]]
+
+===== Traffic Separation Using Multi-Homing
+
+You can separate the internal traffic resulting from GMS from the
+external traffic. Traffic separation enables you plan a network better
+and augment certain parts of the network, as required.
+
+Consider a simple cluster, `c1`, with three instances, `i101`, `i102`,
+and `i103`. Each instance runs on a different machine. In order to
+separate the traffic, the multi-homed machine should have at least two
+IP addresses belonging to different networks. The first IP as the
+external IP and the second one as internal IP. The objective is to
+expose the external IP to user requests, so that all the traffic from
+the user requests would be through them. The internal IP is used only by
+the cluster instances for internal communication through GMS. The
+following procedure describes how to set up traffic separation.
+
+To configure multi-homed machines for GMS without traffic separation,
+skip the steps or commands that configure the `EXTERNAL-ADDR` system
+property, but perform the others.
+
+To avoid having to restart the DAS or cluster, perform the following
+steps in the specified order.
+
+To set up traffic separation, follow these steps:
+
+1. Create the system properties `EXTERNAL-ADDR` and
+`GMS-BIND-INTERFACE-ADDRESS-c1` for the DAS.
+* `asadmin create-system-properties` `target`
+`server EXTERNAL-ADDR=192.155.35.4`
+* `asadmin create-system-properties` `target`
+`server GMS-BIND-INTERFACE-ADDRESS-c1=10.12.152.20`
+2. Create the cluster with the default settings.
++
+Use the following command:
++
+[source]
+----
+asadmin create-cluster c1
+----
+A reference to a system property for GMS traffic is already set up by
+default in the `gms-bind-interface-address` cluster setting. The default
+value of this setting is ``${GMS-BIND-INTERFACE-ADDRESS-``cluster-name``}``.
+3. When creating the clustered instances, configure the external and
+GMS IP addresses.
++
+Use the following commands:
+* `asadmin create-instance` `node` `localhost` `cluster` `c1`
+`systemproperties`
+`EXTERNAL-ADDR=192.155.35.5:GMS-BIND-INTERFACE-ADDRESS-c1=10.12.152.30 i101`
+* `asadmin create-instance` `node` `localhost` `cluster` `c1`
+`systemproperties`
+`EXTERNAL-ADDR=192.155.35.6:GMS-BIND-INTERFACE-ADDRESS-c1=10.12.152.40 i102`
+* `asadmin create-instance` `node` `localhost` `cluster` `c1`
+`systemproperties`
+`EXTERNAL-ADDR=192.155.35.7:GMS-BIND-INTERFACE-ADDRESS-c1=10.12.152.50 i103`
+4. Set the address attribute of HTTP listeners to refer to the
+`EXTERNAL-ADDR` system properties.
++
+Use the following commands:
++
+[source]
+----
+asadmin set c1-config.network-config.network-listeners.network-listener.http-1.address=\${EXTERNAL-ADDR}
+asadmin set c1-config.network-config.network-listeners.network-listener.http-2.address=\${EXTERNAL-ADDR}
+----
+
+[[gkqdy]][[GSHAG00185]][[creating-listing-and-deleting-clusters]]
+
+=== Creating, Listing, and Deleting Clusters
+
+{productName} enables you to create clusters, obtain information
+about clusters, and delete clusters that are no longer required.
+
+The following topics are addressed here:
+
+* link:#gkqdm[To Create a Cluster]
+* link:#gkqdn[To List All Clusters in a Domain]
+* link:#gkqcp[To Delete a Cluster]
+
+[[gkqdm]][[GSHAG00103]][[to-create-a-cluster]]
+
+==== To Create a Cluster
+
+Use the `create-cluster` subcommand in remote mode to create a cluster.
+
+To ensure that the GMS can detect changes in cluster membership, a
+cluster's GMS settings must be configured correctly. To avoid the need
+to restart the DAS and the cluster, configure a cluster's GMS settings
+when you create the cluster. If you change GMS settings for an existing
+cluster, the DAS and the cluster must be restarted to apply the changes.
+
+When you create a cluster, {productName} automatically creates a
+Message Queue cluster for the {productName} cluster. For more
+information about Message Queue clusters, see link:jms.html#abdbx[Using
+Message Queue Broker Clusters With {productName}].
+
+[[GSHAG374]]
+
+Before You Begin
+
+If the cluster is to reference an existing named configuration, ensure
+that the configuration exists. For more information, see
+link:named-configurations.html#abdjr[To Create a Named Configuration]. If
+you are using a named configuration to preconfigure GMS settings, ensure
+that these settings have the required values in the named configuration.
+For more information, see link:#gkoac[To Preconfigure Nondefault GMS
+Configuration Settings].
+
+If you are configuring the cluster's GMS settings when you create the
+cluster, ensure that you have the following information:
+
+* The address on which GMS listens for group events
+* The port number of the communication port on which GMS listens for
+group events
+* The maximum number of iterations or transmissions that a multicast
+message for GMS events can experience before the message is discarded
+* The lowest port number in the range of ports from which GMS selects a
+TCP port on which to listen
+* The highest port number in the range of ports from which GMS selects a
+TCP port on which to listen
+
+If the DAS is running on a multihome host, ensure that you have the
+Internet Protocol (IP) address of the network interface on the DAS host
+to which GMS binds.
+
+1. Ensure that the DAS is running. Remote subcommands require a running server.
+2. [[gkrco]]
+Run the `create-cluster` subcommand.
++
+[NOTE]
+====
+Only the options that are required to complete this task are provided in
+this step. For information about all the options for configuring the
+cluster, see the link:reference-manual/create-cluster.html#GSRFM00017[`create-cluster`(1)] help page.
+====
+* If multicast transport is available, run the `create-cluster`
+subcommand as follows:
++
+[source]
+----
+asadmin> create-cluster --config configuration
+--multicastaddress multicast-address --multicastport multicast-port
+--properties GMS_MULTICAST_TIME_TO_LIVE=max-iterations:
+GMS_TCPSTARTPORT=start-port:GMS_TCPENDPORT=end-port cluster-name
+----
+* If multicast transport is not available, run the `create-cluster`
+subcommand as follows:
++
+[source]
+----
+asadmin> create-cluster --config configuration
+--properties GMS_DISCOVERY_URI_LIST=discovery-instances:
+GMS_LISTENER_PORT=gms-port
+cluster-name
+----
+
+configuration::
+  An existing named configuration that the cluster is to reference.
+multicast-address::
+  The address on which GMS listens for group events.
+multicast-port::
+  The port number of the communication port on which GMS listens for
+  group events.
+max-iterations::
+  The maximum number of iterations or transmissions that a multicast
+  message for GMS events can experience before the message is discarded.
+discovery-instances::
+  Instances to use for discovering the cluster. For more information,
+  see link:#CHDGAIBJ[Discovering a Cluster When Multicast Transport Is
+  Unavailable].
+gms-port::
+  The port number of the port on which the cluster listens for messages
+  from GMS.
+start-port::
+  The lowest port number in the range of ports from which GMS selects a
+  TCP port on which to listen. The default is 9090.
+end-port::
+  The highest port number in the range of ports from which GMS selects a
+  TCP port on which to listen. The default is 9200.
+cluster-name::
+  Your choice of name for the cluster that you are creating.
+3. If necessary, create a system property to represent the IP address
+of the network interface on the DAS host to which GMS binds.
++
+This step is necessary only if the DAS is running on a multihome host.
++
+[source]
+----
+asadmin> create-system-properties
+GMS-BIND-INTERFACE-ADDRESS-cluster-name=das-bind-address
+----
+cluster-name::
+  The name that you assigned to the cluster in Step link:#gkrco[2].
+das-bind-address::
+  The IP address of the network interface on the DAS host to which GMS
+  binds.
+
+[[GSHAG00034]][[gkqaz]]
+Example 4-6 Creating a Cluster for a Network in Which Multicast
+Transport Is Available
+
+This example creates a cluster that is named `ltscluster` for which port
+1169 is to be used for secure IIOP connections. Because the `--config`
+option is not specified, the cluster references a copy of the named
+configuration `default-config` that is named `ltscluster-config`. This
+example assumes that multicast transport is available.
+
+[source]
+----
+asadmin> create-cluster
+--systemproperties IIOP_SSL_LISTENER_PORT=1169
+ltscluster
+Command create-cluster executed successfully.
+----
+
+[[GSHAG00035]][[gkqiq]]
+Example 4-7 Creating a Cluster and Setting GMS Options for a Network in
+Which Multicast Transport Is Available
+
+This example creates a cluster that is named `pmdcluster`, which
+references the existing configuration `clusterpresets` and for which the
+cluster's GMS settings are configured as follows:
+
+* GMS listens for group events on address 228.9.3.1 and port 2048.
+* A multicast message for GMS events is discarded after 3 iterations or
+transmissions.
+* GMS selects a TCP port on which to listen from ports in the range
+10000-10100.
+
+This example assumes that multicast transport is available.
+
+[source]
+----
+asadmin> create-cluster --config clusterpresets
+--multicastaddress 228.9.3.1 --multicastport 2048
+--properties GMS_MULTICAST_TIME_TO_LIVE=3:
+GMS_TCPSTARTPORT=10000:GMS_TCPENDPORT=10100 pmdcluster
+Command create-cluster executed successfully.
+----
+
+[[GSHAG375]]
+
+Next Steps
+
+After creating a cluster, you can add {productName} instances to the
+cluster as explained in the following sections:
+
+* link:instances.html#gkqch[To Create an Instance Centrally]
+* link:instances.html#gkqbl[To Create an Instance Locally]
+
+[[GSHAG376]]
+
+See Also
+
+* link:named-configurations.html#abdjr[To Create a Named Configuration]
+* link:#gkoac[To Preconfigure Nondefault GMS Configuration Settings]
+* link:jms.html#abdbx[Using Message Queue Broker Clusters With {productName}]
+* link:reference-manual/create-cluster.html#GSRFM00017[`create-cluster`(1)]
+* link:reference-manual/create-system-properties.html#GSRFM00059[`create-system-properties`(1)]
+
+You can also view the full syntax and options of the subcommands by
+typing the following commands at the command line:
+
+* `asadmin help create-cluster`
+* `asadmin help create-system-properties`
+
+[[gkqdn]][[GSHAG00104]][[to-list-all-clusters-in-a-domain]]
+
+==== To List All Clusters in a Domain
+
+Use the `list-clusters` subcommand in remote mode to obtain information
+about existing clusters in a domain.
+
+1. Ensure that the DAS is running.
++
+Remote subcommands require a running server.
+2. Run the link:reference-manual/list-clusters.html#GSRFM00153[`list-clusters`] subcommand.
++
+[source]
+----
+asadmin> list-clusters
+----
+
+[[GSHAG00036]][[gksfc]]
+Example 4-8 Listing All Clusters in a Domain
+
+This example lists all clusters in the current domain.
+
+[source]
+----
+asadmin> list-clusters
+pmdclust not running
+ymlclust not running
+Command list-clusters executed successfully.
+----
+
+[[GSHAG00037]][[gkhsp]]
+Example 4-9 Listing All Clusters That Are Associated With a Node
+
+This example lists the clusters that contain an instance that resides on
+the node `sj01`.
+
+[source]
+----
+asadmin> list-clusters sj01
+ymlclust not running
+Command list-clusters executed successfully.
+----
+
+[[GSHAG377]]
+
+See Also
+
+link:reference-manual/list-clusters.html#GSRFM00153[`list-clusters`(1)]
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-clusters` at the command line.
+
+[[gkqcp]][[GSHAG00105]][[to-delete-a-cluster]]
+
+==== To Delete a Cluster
+
+Use the `delete-cluster` subcommand in remote mode to remove a cluster
+from the DAS configuration.
+
+If the cluster's named configuration was created automatically for the
+cluster and no other clusters or unclustered instances refer to the
+configuration, the configuration is deleted when the cluster is deleted.
+
+[[GSHAG378]]
+
+Before You Begin
+
+Ensure that following prerequisites are met:
+
+* The cluster that you are deleting is stopped. For information about
+how to stop a cluster, see link:instances.html#gkqcl[To Stop a Cluster].
+* The cluster that you are deleting contains no {productName}
+instances. For information about how to remove instances from a cluster,
+see the following sections:
+
+** link:instances.html#gkqcw[To Delete an Instance Centrally]
+
+** link:instances.html#gkqed[To Delete an Instance Locally]
+
+1. Ensure that the DAS is running.
++
+Remote subcommands require a running server.
+2. Confirm that the cluster is stopped.
++
+[source]
+----
+asadmin> list-clusters cluster-name
+----
+cluster-name::
+  The name of the cluster that you are deleting.
+3. Confirm that the cluster contains no instances.
++
+[source]
+----
+asadmin> list-instances cluster-name
+----
+cluster-name::
+  The name of the cluster that you are deleting.
+4. Run the link:reference-manual/delete-cluster.html#GSRFM00068[`delete-cluster`] subcommand.
++
+[source]
+----
+asadmin> delete-cluster cluster-name
+----
+cluster-name::
+  The name of the cluster that you are deleting.
+
+[[GSHAG00038]][[gkqkr]]
+Example 4-10 Deleting a Cluster
+
+This example confirms that the cluster `adccluster` is stopped and
+contains no instances and deletes the cluster `adccluster`.
+
+[source]
+----
+asadmin> list-clusters adccluster
+adccluster not running
+Command list-clusters executed successfully.
+asadmin> list-instances adccluster
+Nothing to list.
+Command list-instances executed successfully.
+asadmin> delete-cluster adccluster
+Command delete-cluster executed successfully.
+----
+
+[[GSHAG379]]
+
+See Also
+
+* link:instances.html#gkqcl[To Stop a Cluster]
+* link:instances.html#gkqcw[To Delete an Instance Centrally]
+* link:instances.html#gkqed[To Delete an Instance Locally]
+* link:reference-manual/delete-cluster.html#GSRFM00068[`delete-cluster`(1)]
+* link:reference-manual/list-clusters.html#GSRFM00153[`list-clusters`(1)]
+* link:reference-manual/list-instances.html#GSRFM00170[`list-instances`(1)]
+
+You can also view the full syntax and options of the subcommands by
+typing the following commands at the command line:
+
+* `asadmin help delete-cluster`
+* `asadmin help list-clusters`
+* `asadmin help list-instances`
diff --git a/docs/ha-administration-guide/src/main/asciidoc/http-load-balancing.adoc b/docs/ha-administration-guide/src/main/asciidoc/http-load-balancing.adoc
new file mode 100644
index 0000000..ff67c3c
--- /dev/null
+++ b/docs/ha-administration-guide/src/main/asciidoc/http-load-balancing.adoc
@@ -0,0 +1,314 @@
+type=page
+status=published
+title=Configuring HTTP Load Balancing
+next=rolling-upgrade.html
+prev=named-configurations.html
+~~~~~~
+
+= Configuring HTTP Load Balancing
+
+[[GSHAG00009]][[abdgs]]
+
+
+[[configuring-http-load-balancing]]
+== 7 Configuring HTTP Load Balancing
+
+This chapter describes how to configure HTTP load balancing on {productName} 7.
+
+The following topics are addressed here:
+
+* link:#abdgx[Setting Up HTTP Load Balancing]
+
+For information on other types of load balancing, see
+link:jms.html#abdbk[Configuring Java Message Service High Availability]
+and link:rmi-iiop.html#fxxqs[RMI-IIOP Load Balancing and Failover].
+
+[[abdgx]][[GSHAG00202]][[setting-up-http-load-balancing]]
+
+=== Setting Up HTTP Load Balancing
+
+This section describes how to set up load balancing for {productName}.
+
+The following topics are addressed here:
+
+* link:#abdgy[Prerequisites for Setting Up HTTP Load Balancing]
+* link:#gksdt[Configuring {productName} with Apache HTTP Server and `mod_jk`]
+* link:#CHDCCGDC[Configuring {productName} with Apache HTTP Server and `mod_proxy_ajp`]
+* link:#abdgz[HTTP Load Balancer Deployments]
+
+[[abdgy]][[GSHAG00281]][[prerequisites-for-setting-up-http-load-balancing]]
+
+==== Prerequisites for Setting Up HTTP Load Balancing
+
+Before configuring your load balancer, you must:
+
+* Install a supported web server and configure it. If using the `mod_jk`
+or `mod_proxy_ajp` modules, the only supported web server is Apache HTTP Server 2.2.x.
+
+* Configure the `mod_jk` connector module, as described in
+link:#gksdt[Configuring {productName} with Apache HTTP Server and `mod_jk`],
+or configure the `mod_proxy_ajp` connector module, as
+described in link:#CHDCCGDC[Configuring {productName} with Apache
+HTTP Server and `mod_proxy_ajp`].
+
+* Create {productName} clusters or server instances to participate in load balancing.
+
+* Deploy applications to these clusters or instances.
+
+[[gksdt]][[GSHAG00282]][[configuring-glassfish-server-with-apache-http-server-and-mod_jk]]
+
+==== Configuring {productName} with Apache HTTP Server and `mod_jk`
+
+{productName} 7 can be configured for load balancing with Apache
+HTTP Server as a front end by enabling the Apache `mod_jk` connector
+module. To enable the `mod_jk` module in {productName}, set the
+{productName} `jk-enabled` `network-listener` attribute. You can also
+create `jk-connectors` under different virtual-servers using the
+`jk-enabled` `network-listener` attribute.
+
+[[gksde]][[GSHAG00143]][[to-configure-the-mod_jk-connector-module]]
+
+===== To Configure the `mod_jk` Connector Module
+
+1. Install http://httpd.apache.org/docs/2.2/install.html[Apache HTTP Server]
+(`http://httpd.apache.org/docs/2.2/install.html`) and
+http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html[mod_jk]
+(`http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html`).
+
+2. Configure `workers.properties` and `httpd.conf`. For example:
+
+* `apache2/config/workers.properties`
++
+[source]
+----
+# Define 1 real worker using ajp13
+worker.list=worker1
+# Set properties for worker1 (ajp13)
+worker.worker1.type=ajp13
+worker.worker1.host=localhost
+worker.worker1.port=8009
+----
+
+* `apache2/conf/httpd.conf`
++
+[source]
+----
+LoadModule jk_module /Users/Amy/apache2/modules/mod_jk-1.2.25-httpd-2.2.4.so
+JkWorkersFile /Users/Amy/apache2/conf/worker.properties
+# Where to put jk logs
+JkLogFile /Users/Amy/apache2/logs/mod_jk.log
+# Set the jk log level [debug/error/info]
+JkLogLevel debug
+# Select the log format
+JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
+# JkOptions indicate to send SSL KEY SIZE,
+JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
+# JkRequestLogFormat set the request format
+JkRequestLogFormat "%w %V %T"
+# Send everything for context /examples to worker named worker1 (ajp13)
+JkMount /examples/* worker1
+----
+3. Start Apache HTTP Server.
+
+4. Create a jk-enabled network listener by using the
+link:reference-manual/create-network-listener.html#GSRFM00046[`create-network-listener`] subcommand.
++
+[source]
+----
+asadmin> create-network-listener --protocol http-listener-1 \
+--listenerport 8009 --jkenabled true jk-connector
+----
+
+5. If you are using the `glassfish-jk.properties` file, set the
+`jk-configuration-file` property of the network listener to the
+fully-qualified file name of the `glassfish-jk.properties` file.
++
+[source]
+----
+asadmin> set server-config.network-config.network-listeners.network-listener.\
+jk-connector.jk-configuration-file=domain-dir/config/glassfish-jk.properties
+----
+
+6. If you expect to need more than five threads for the listener,
+increase the maximum threads in the `http-thread-pool` pool:
++
+[source]
+----
+asadmin> set configs.config.server-config.thread-pools.thread-pool.\
+http-thread-pool.max-thread-pool-size=value
+----
+
+7. Restart {productName}.
+
+[[GSHAG00065]][[gktpu]]
+Example 7-1 `httpd.conf` File for Load Balancing
+
+This example shows an `httpd.conf` file that is set for load balancing.
+
+[source]
+----
+LoadModule jk_module /usr/lib/httpd/modules/mod_jk.so
+JkWorkersFile /etc/httpd/conf/worker.properties
+# Where to put jk logs
+JkLogFile /var/log/httpd/mod_jk.log
+# Set the jk log level [debug/error/info]
+JkLogLevel debug
+# Select the log format
+JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
+# JkOptions indicate to send SSL KEY SIZE,
+JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
+# JkRequestLogFormat set the request format
+JkRequestLogFormat "%w %V %T"
+# Send all jsp requests to GlassFish
+JkMount /*.jsp worker1
+# Send all glassfish-test requests to GlassFish
+JkMount /glassfish-test/* loadbalancer
+----
+
+[[GSHAG00066]][[gktpe]]
+Example 7-2 `workers.properties` File for Load Balancing
+
+This example shows a `workers.properties` or `glassfish-jk.properties`
+file that is set for load balancing. The `worker.worker*.port` should
+match with JK ports you created.
+
+[source]
+----
+worker.list=worker1,worker2,loadbalancer
+worker.worker1.type=ajp13
+worker.worker1.host=localhost
+worker.worker1.port=8009
+worker.worker1.lbfactor=1
+worker.worker1.socket_keepalive=1
+worker.worker1.socket_timeout=300
+worker.worker2.type=ajp13
+worker.worker2.host=localhost
+worker.worker2.port=8010
+worker.worker2.lbfactor=1
+worker.worker2.socket_keepalive=1
+worker.worker2.socket_timeout=300
+worker.loadbalancer.type=lb
+worker.loadbalancer.balance_workers=worker1,worker2
+----
+
+[[CHDCCGDC]][[GSHAG494]][[configuring-glassfish-server-with-apache-http-server-and-mod_proxy_ajp]]
+
+==== Configuring {productName} with Apache HTTP Server and `mod_proxy_ajp`
+
+{productName} 7 can be configured for load balancing with Apache
+HTTP Server as a front end by enabling the Apache `mod_proxy_ajp`
+connector module. To enable the `mod_proxy_ajp` module in {productName}, set the {productName} `jk-enabled` `network-listener`
+attribute. You can also create `jk-connectors` under different
+virtual-servers using the `jk-enabled` `network-listener` attribute.
+
+[[GSHAG495]][[sthref22]]
+
+
+[[to-configure-the-mod_proxy_ajp-connector-module]]
+===== To Configure the `mod_proxy_ajp` Connector Module
+
+1. Install http://httpd.apache.org/docs/2.2/install.html[Apache HTTP Server]
+(`http://httpd.apache.org/docs/2.2/install.html`).
+
+2. Configure `httpd.conf`. For example:
++
+[source]
+----
+LoadModule proxy_module /usr/lib/httpd/modules/mod_proxy.so
+LoadModule proxy_ajp_module /usr/lib/httpd/modules/mod_proxy_ajp.so
+
+Listen 1979
+NameVirtualHost *:1979
+<VirtualHost *:1979>
+   ServerName localhost
+   ErrorLog /var/log/apache2/ajp.error.log
+   CustomLog /var/log/apache2/ajp.log combined
+
+   <Proxy *>
+     AddDefaultCharset Off
+     Order deny,allow
+     Allow from all
+   </Proxy>
+
+   ProxyPass / ajp://localhost:8009/
+   ProxyPassReverse / ajp://localhost:8009/
+</VirtualHost>
+----
+
+3. Start Apache HTTP Server.
+
+4. Create a jk-enabled network listener by using the `create-network-listener` subcommand.
++
+[source]
+----
+asadmin> create-network-listener --protocol http-listener-1 \
+--listenerport 8009 --jkenabled true jk-connector
+----
+
+5. If you expect to need more than five threads for the listener,
+increase the maximum threads in the `http-thread-pool` pool:
++
+[source]
+----
+asadmin> set configs.config.server-config.thread-pools.thread-pool.\
+http-thread-pool.max-thread-pool-size=value
+----
+
+6. Restart {productName}.
+
+[[abdgz]][[GSHAG00284]][[http-load-balancer-deployments]]
+
+==== HTTP Load Balancer Deployments
+
+You can configure your load balancer in different ways, depending on
+your goals and environment, as described in the following sections:
+
+* link:#abdha[Using Clustered Server Instances]
+* link:#abdhc[Using Multiple Standalone Instances]
+
+[[abdha]][[GSHAG00232]][[using-clustered-server-instances]]
+
+===== Using Clustered Server Instances
+
+The most common way to deploy the load balancer is with a cluster or
+clusters of server instances. By default all the instances in a cluster
+have the same configuration and the same applications deployed to them.
+The load balancer distributes the workload between the server instances
+and requests fail over from an unhealthy instance to a healthy one. If
+you've configured HTTP session persistence, session information persists
+when the request is failed over.
+
+If you have multiple clusters, requests can be load balanced across
+clusters but are only failed over between the instances in a single
+cluster. Use multiple clusters in a load balancer to easily enable
+rolling upgrades of applications. For more information, see
+link:rolling-upgrade.html#abdik[Upgrading Applications Without Loss of Availability].
+
+
+[NOTE]
+====
+Requests cannot be load balanced across clusters and standalone instances.
+====
+
+
+[[abdhc]][[GSHAG00233]][[using-multiple-standalone-instances]]
+
+===== Using Multiple Standalone Instances
+
+It is also possible to configure your load balancer to use multiple
+standalone instances, and load balance and failover requests between
+them. However, in this configuration, you must manually ensure that the
+standalone instances have homogenous environments and the same
+applications deployed to them. Because clusters automatically maintain a
+homogenous environment, for most situations it is better and easier to
+use clusters.
+
+
+[TIP]
+====
+Load balancing across multiple standalone instances only provides
+failover for requests, and any associated HTTP session data will not be
+failed over. This is another reason why using a cluster, which can
+provide session failover, is a more desirable load balancing
+configuration.
+====
diff --git a/docs/ha-administration-guide/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png b/docs/ha-administration-guide/src/main/asciidoc/img/eclipse_foundation_logo_tiny.png
similarity index 100%
rename from docs/ha-administration-guide/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png
rename to docs/ha-administration-guide/src/main/asciidoc/img/eclipse_foundation_logo_tiny.png
Binary files differ
diff --git a/docs/ha-administration-guide/src/main/asciidoc/instances.adoc b/docs/ha-administration-guide/src/main/asciidoc/instances.adoc
new file mode 100644
index 0000000..425f58e
--- /dev/null
+++ b/docs/ha-administration-guide/src/main/asciidoc/instances.adoc
@@ -0,0 +1,2053 @@
+type=page
+status=published
+title=Administering {productName} Instances
+next=named-configurations.html
+prev=clusters.html
+~~~~~~
+
+= Administering {productName} Instances
+
+[[GSHAG00006]][[gkrbv]]
+
+[[administering-glassfish-server-instances]]
+== 5 Administering {productName} Instances
+
+A {productName} instance is a single Virtual Machine for the Java
+platform (Java Virtual Machine or JVM machine) on a single node in which
+{productName} is running. A node defines the host where the {productName} instance resides. The JVM machine must be compatible with the
+Java Platform, Enterprise Edition (Jakarta EE).
+
+{productName} instances form the basis of an application deployment.
+An instance is a building block in the clustering, load balancing, and
+session persistence features of {productName}. Each instance belongs
+to a single domain and has its own directory structure, configuration,
+and deployed applications. Every instance contains a reference to a node
+that defines the host where the instance resides.
+
+The following topics are addressed here:
+
+* link:#gkrbn[Types of {productName} Instances]
+* link:#gkqal[Administering {productName} Instances Centrally]
+* link:#gkqdw[Administering {productName} Instances Locally]
+* link:#gkrdd[Resynchronizing {productName} Instances and the DAS]
+* link:#gkqcr[Migrating EJB Timers]
+
+[[gkrbn]][[GSHAG00186]][[types-of-glassfish-server-instances]]
+
+=== Types of {productName} Instances
+
+Each {productName} instance is one of the following types of
+instance:
+
+Standalone instance::
+  A standalone instance does not share its configuration with any other
+  instances or clusters. A standalone instance is created if either of
+  the following conditions is met:
++
+--
+  * No configuration or cluster is specified in the command to create   the instance.
+  * A configuration that is not referenced by any other instances or
+    clusters is specified in the command to create the instance.
+--
+  When no configuration or cluster is specified, a copy of the
+  `default-config` configuration is created for the instance. The name
+  of this configuration is instance-name`-config`, where instance-name
+  represents the name of an unclustered server instance.
+Shared instance::
+  A shared instance shares its configuration with other instances or
+  clusters. A shared instance is created if a configuration that is
+  referenced by other instances or clusters is specified in the command
+  to create the instance.
+Clustered instance::
+  A clustered instance inherits its configuration from the cluster to
+  which the instance belongs and shares its configuration with other
+  instances in the cluster. A clustered instance is created if a cluster
+  is specified in the command to create the instance. +
+  Any instance that is not part of a cluster is considered an
+  unclustered server instance. Therefore, standalone instances and
+  shared instances are unclustered server instances.
+
+[[gkqal]][[GSHAG00187]][[administering-glassfish-server-instances-centrally]]
+
+=== Administering {productName} Instances Centrally
+
+Centralized administration requires the Distributed Component Object
+Model (DCOM) remote protocol or secure shell (SSH) to be set up. If DCOM
+or SSH is set up, you can administer clustered instances without the
+need to log in to hosts where remote instances reside. For information
+about setting up DCOM and SSH, see link:ssh-setup.html#gkshg[Enabling
+Centralized Administration of {productName} Instances].
+
+Administering {productName} instances centrally involves the
+following tasks:
+
+* link:#gkqch[To Create an Instance Centrally]
+* link:#gkrcb[To List All Instances in a Domain]
+* link:#gkqcw[To Delete an Instance Centrally]
+* link:#gkqcj[To Start a Cluster]
+* link:#gkqcl[To Stop a Cluster]
+* link:#gkqaw[To Start an Individual Instance Centrally]
+* link:#gkqaj[To Stop an Individual Instance Centrally]
+* link:#gkqcc[To Restart an Individual Instance Centrally]
+
+[[gkqch]][[GSHAG00106]][[to-create-an-instance-centrally]]
+
+==== To Create an Instance Centrally
+
+Use the `create-instance` subcommand in remote mode to create a
+{productName} instance centrally. Creating an instance adds the
+instance to the DAS configuration and creates the instance's files on
+the host where the instance resides.
+
+If the instance is a clustered instance that is managed by GMS, system
+properties for the instance that relate to GMS must be configured
+correctly. To avoid the need to restart the DAS and the instance,
+configure an instance's system properties that relate to GMS when you
+create the instance. If you change GMS-related system properties for an
+existing instance, the DAS and the instance must be restarted to apply
+the changes. For information about GMS, see
+link:clusters.html#gjfnl[Group Management Service].
+
+[[GSHAG380]]
+
+Before You Begin
+
+Ensure that following prerequisites are met:
+
+* The node where the instance is to reside exists.
+* The node where the instance is to reside is either enabled for remote
+communication or represents the host on which the DAS is running. For
+information about how to create a node that is enabled for remote
+communication, see the following sections:
+
+** link:nodes.html#CHDIGBJB[To Create a `DCOM` Node]
+** link:nodes.html#gkrnf[To Create an `SSH` Node]
+
+* The user of the DAS can use DCOM or SSH to log in to the host for the
+node where the instance is to reside.
+
+If any of these prerequisites is not met, create the instance locally as
+explained in link:#gkqbl[To Create an Instance Locally].
+
+If you are adding the instance to a cluster, ensure that the cluster to
+which you are adding the instance exists. For information about how to
+create a cluster, see link:clusters.html#gkqdm[To Create a Cluster].
+
+If the instance is to reference an existing named configuration, ensure
+that the configuration exists. For more information, see
+link:named-configurations.html#abdjr[To Create a Named Configuration].
+
+The instance might be a clustered instance that is managed by GMS and
+resides on a node that represents a multihome host. In this situation,
+ensure that you have the Internet Protocol (IP) address of the network
+interface to which GMS binds.
+
+1. Ensure that the DAS is running. Remote subcommands require a running server.
+2. Run the `create-instance` subcommand.
++
+[NOTE]
+====
+Only the options that are required to complete this task are provided in
+this step. For information about all the options for configuring the
+instance, see the link:reference-manual/create-instance.html#GSRFM00033[`create-instance`(1)] help page.
+====
+* If you are creating a standalone instance, do not specify a cluster.
++
+If the instance is to reference an existing configuration, specify a
+configuration that no other cluster or instance references.
++
+[source]
+----
+asadmin> create-instance --node node-name
+[--config configuration-name]instance-name
+----
+node-name::
+  The node on which the instance is to reside.
+configuration-name::
+  The name of the existing named configuration that the instance will reference. +
+  If you do not require the instance to reference an existing
+  configuration, omit this option. A copy of the `default-config`
+  configuration is created for the instance. The name of this
+  configuration is instance-name`-config`, where instance-name is the
+  name of the server instance.
+instance-name::
+  Your choice of name for the instance that you are creating. +
+  If you are creating a shared instance, specify the configuration that
+  the instance will share with other clusters or instances. +
+  Do not specify a cluster.
++
+[source]
+----
+asadmin> create-instance --node node-name
+--config configuration-name instance-name
+----
+node-name::
+  The node on which the instance is to reside.
+configuration-name::
+  The name of the existing named configuration that the instance will
+  reference.
+instance-name::
+  Your choice of name for the instance that you are creating.
+* If you are creating a clustered instance, specify the cluster to which
+  the instance will belong. +
+  If the instance is managed by GMS and resides on a node that represents
+  a multihome host, specify the `GMS-BIND-INTERFACE-ADDRESS-`cluster-name
+  system property.
++
+[source]
+----
+asadmin> create-instance --cluster cluster-name --node node-name
+[--systemproperties GMS-BIND-INTERFACE-ADDRESS-cluster-name=bind-address]instance-name
+----
+cluster-name::
+  The name of the cluster to which you are adding the instance.
+node-name::
+  The node on which the instance is to reside.
+bind-address::
+  The IP address of the network interface to which GMS binds. Specify
+  this option only if the instance is managed by GMS and resides on a
+  node that represents a multihome host.
+instance-name::
+  Your choice of name for the instance that you are creating.
+
+[[GSHAG00039]][[gkqmv]]
+Example 5-1 Creating a Clustered Instance Centrally
+
+This example adds the instance `pmd-i1` to the cluster `pmdclust` in the
+domain `domain1`. The instance resides on the node `sj01`, which
+represents the host `sj01.example.com`.
+
+[source]
+----
+asadmin> create-instance --cluster pmdclust --node sj01 pmd-i1
+Port Assignments for server instance pmd-i1:
+JMX_SYSTEM_CONNECTOR_PORT=28686
+JMS_PROVIDER_PORT=27676
+HTTP_LISTENER_PORT=28080
+ASADMIN_LISTENER_PORT=24848
+IIOP_SSL_LISTENER_PORT=23820
+IIOP_LISTENER_PORT=23700
+HTTP_SSL_LISTENER_PORT=28181
+IIOP_SSL_MUTUALAUTH_PORT=23920
+The instance, pmd-i1, was created on host sj01.example.com
+Command create-instance executed successfully.
+----
+
+[[GSHAG381]]
+
+See Also
+
+* link:nodes.html#CHDIGBJB[To Create a `DCOM` Node]
+* link:nodes.html#gkrnf[To Create an `SSH` Node]
+* link:#gkqbl[To Create an Instance Locally]
+* link:reference-manual/create-instance.html#GSRFM00033[`create-instance`(1)]
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-instance` at the command line.
+
+[[GSHAG382]]
+
+Next Steps
+
+After creating an instance, you can start the instance as explained in
+the following sections:
+
+* link:#gkqaw[To Start an Individual Instance Centrally]
+* link:#gkqci[To Stop an Individual Instance Locally]
+
+[[gkrcb]][[GSHAG00107]][[to-list-all-instances-in-a-domain]]
+
+==== To List All Instances in a Domain
+
+Use the `list-instances` subcommand in remote mode to obtain information
+about existing instances in a domain.
+
+1. Ensure that the DAS is running.
++
+Remote subcommands require a running server.
+2. Run the link:reference-manual/list-instances.html#GSRFM00170[`list-instances`] subcommand.
++
+[source]
+----
+asadmin> list-instances
+----
+
+[[GSHAG00040]][[gksfe]]
+Example 5-2 Listing Basic Information About All {productName}
+Instances in a Domain
+
+This example lists the name and status of all {productName} instances
+in the current domain.
+
+[source]
+----
+asadmin> list-instances
+pmd-i2 running
+yml-i2 running
+pmd-i1 running
+yml-i1 running
+pmdsa1 not running
+Command list-instances executed successfully.
+----
+
+[[GSHAG00041]][[gkabz]]
+Example 5-3 Listing Detailed Information About All {productName}
+Instances in a Domain
+
+This example lists detailed information about all {productName}
+instances in the current domain.
+
+[source]
+----
+asadmin> list-instances --long=true
+NAME    HOST              PORT   PID    CLUSTER     STATE
+pmd-i1  sj01.example.com  24848  31310  pmdcluster   running
+yml-i1  sj01.example.com  24849  25355  ymlcluster   running
+pmdsa1  localhost         24848  -1     ---          not running
+pmd-i2  sj02.example.com  24848  22498  pmdcluster   running
+yml-i2  sj02.example.com  24849  20476  ymlcluster   running
+ymlsa1  localhost         24849  -1     ---          not running
+Command list-instances executed successfully.
+----
+
+[[GSHAG383]]
+
+See Also
+
+link:reference-manual/list-instances.html#GSRFM00170[`list-instances`(1)]
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-instances` at the command line.
+
+[[gkqcw]][[GSHAG00108]][[to-delete-an-instance-centrally]]
+
+==== To Delete an Instance Centrally
+
+Use the `delete-instance` subcommand in remote mode to delete a
+{productName} instance centrally.
+
+
+[CAUTION]
+====
+If you are using a Java Message Service (JMS) cluster with a master
+broker, do not delete the instance that is associated with the master
+broker. If this instance must be deleted, use the
+link:reference-manual/change-master-broker.html#GSRFM00005[`change-master-broker`] subcommand to assign the master
+broker to a different instance.
+====
+
+
+Deleting an instance involves the following:
+
+* Removing the instance from the configuration of the DAS
+* Deleting the instance's files from file system
+
+[[GSHAG384]]
+
+Before You Begin
+
+Ensure that the instance that you are deleting is not running. For
+information about how to stop an instance, see the following sections:
+
+* link:#gkqaj[To Stop an Individual Instance Centrally]
+* link:#gkqci[To Stop an Individual Instance Locally]
+
+1. Ensure that the DAS is running.
++
+Remote subcommands require a running server.
+2. Confirm that the instance is not running.
++
+[source]
+----
+asadmin> list-instances instance-name
+----
+instance-name::
+  The name of the instance that you are deleting.
+3. Run the link:reference-manual/delete-instance.html#GSRFM00085[`delete-instance`] subcommand.
++
+[source]
+----
+asadmin> delete-instance instance-name
+----
+instance-name::
+  The name of the instance that you are deleting.
+
+[[GSHAG00042]][[gkqms]]
+Example 5-4 Deleting an Instance Centrally
+
+This example confirms that the instance `pmd-i1` is not running and
+deletes the instance.
+
+[source]
+----
+asadmin> list-instances pmd-i1
+pmd-i1   not running
+Command list-instances executed successfully.
+asadmin> delete-instance pmd-i1
+Command _delete-instance-filesystem executed successfully.
+The instance, pmd-i1, was deleted from host sj01.example.com
+Command delete-instance executed successfully.
+----
+
+[[GSHAG385]]
+
+See Also
+
+* link:#gkqaj[To Stop an Individual Instance Centrally]
+* link:#gkqci[To Stop an Individual Instance Locally]
+* link:reference-manual/change-master-broker.html#GSRFM00005[`change-master-broker`(1)]
+* link:reference-manual/delete-instance.html#GSRFM00085[`delete-instance`(1)]
+* link:reference-manual/list-instances.html#GSRFM00170[`list-instances`(1)]
+
+You can also view the full syntax and options of the subcommands by
+typing the following commands at the command line:
+
+* `asadmin help delete-instance`
+* `asadmin help list-instances`
+
+[[gkqcj]][[GSHAG00109]][[to-start-a-cluster]]
+
+==== To Start a Cluster
+
+Use the `start-cluster` subcommand in remote mode to start a cluster.
+
+Starting a cluster starts all instances in the cluster that are not
+already running.
+
+[[GSHAG386]]
+
+Before You Begin
+
+Ensure that following prerequisites are met:
+
+* Each node where an instance in the cluster resides is either enabled
+for remote communication or represents the host on which the DAS is
+running.
+* The user of the DAS can use DCOM or SSH to log in to the host for any
+node where instances in the cluster reside.
+
+If any of these prerequisites is not met, start the cluster by starting
+each instance locally as explained in link:#gkqak[To Start an Individual
+Instance Locally].
+
+1. Ensure that the DAS is running. Remote subcommands require a running server.
+2. Run the link:reference-manual/start-cluster.html#GSRFM00233[`start-cluster`] subcommand.
++
+[source]
+----
+asadmin> start-cluster cluster-name
+----
+cluster-name::
+  The name of the cluster that you are starting.
+
+[[GSHAG00043]][[gkqml]]
+Example 5-5 Starting a Cluster
+
+This example starts the cluster `pmdcluster`.
+
+[source]
+----
+asadmin> start-cluster pmdcluster
+Command start-cluster executed successfully.
+----
+
+[[GSHAG387]]
+
+See Also
+
+* link:#gkqak[To Start an Individual Instance Locally]
+* link:reference-manual/start-cluster.html#GSRFM00233[`start-cluster`(1)]
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help start-cluster` at the command line.
+
+[[GSHAG388]]
+
+Next Steps
+
+After starting a cluster, you can deploy applications to the cluster.
+For more information, see link:application-deployment-guide.html#GSDPG[{productName} Application Deployment Guide].
+
+[[gkqcl]][[GSHAG00110]][[to-stop-a-cluster]]
+
+==== To Stop a Cluster
+
+Use the `stop-cluster` subcommand in remote mode to stop a cluster.
+
+Stopping a cluster stops all running instances in the cluster.
+
+1. Ensure that the DAS is running. Remote subcommands require a running server.
+2. Run the link:reference-manual/stop-cluster.html#GSRFM00238[`stop-cluster`] subcommand.
++
+[source]
+----
+asadmin> stop-cluster cluster-name
+----
+cluster-name::
+  The name of the cluster that you are stopping.
+
+[[GSHAG00044]][[gkqmn]]
+Example 5-6 Stopping a Cluster
+
+This example stops the cluster `pmdcluster`.
+
+[source]
+----
+asadmin> stop-cluster pmdcluster
+Command stop-cluster executed successfully.
+----
+
+[[GSHAG389]]
+
+See Also
+
+link:reference-manual/stop-cluster.html#GSRFM00238[`stop-cluster`(1)]
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help stop-cluster` at the command line.
+
+[[GSHAG390]]
+
+Troubleshooting
+
+If instances in the cluster have become unresponsive and fail to stop,
+run the subcommand again with the `--kill` option set to `true`. When
+this option is `true`, the subcommand uses functionality of the
+operating system to kill the process for each running instance in the
+cluster.
+
+[[gkqaw]][[GSHAG00111]][[to-start-an-individual-instance-centrally]]
+
+==== To Start an Individual Instance Centrally
+
+Use the `start-instance` subcommand in remote mode to start an
+individual instance centrally.
+
+[[GSHAG391]]
+
+Before You Begin
+
+Ensure that following prerequisites are met:
+
+* The node where the instance resides is either enabled for remote
+communication or represents the host on which the DAS is running.
+* The user of the DAS can use DCOM or SSH to log in to the host for the
+node where the instance resides.
+
+If any of these prerequisites is not met, start the instance locally as
+explained in link:#gkqak[To Start an Individual Instance Locally].
+
+1. Ensure that the DAS is running. Remote subcommands require a running server.
+2. Run the `start-instance` subcommand.
++
+[source]
+----
+asadmin> start-instance instance-name
+----
++
+[NOTE]
+====
+Only the options that are required to complete this task are provided in
+this step. For information about all the options for controlling the
+behavior of the instance, see the link:reference-manual/start-instance.html#GSRFM00236[`start-instance`(1)]
+help page.
+====
+
+instance-name::
+  The name of the instance that you are starting.
+
+[[GSHAG00045]][[gkqoa]]
+Example 5-7 Starting an Individual Instance Centrally
+
+This example starts the instance `pmd-i2`, which resides on the node
+`sj02`. This node represents the host `sj02.example.com`. The
+configuration of the instance on this node already matched the
+configuration of the instance in the DAS when the instance was started.
+
+[source]
+----
+asadmin> start-instance pmd-i2
+CLI801 Instance is already synchronized
+Waiting for pmd-i2 to start ............
+Successfully started the instance: pmd-i2
+instance Location: /export/glassfish7/glassfish/nodes/sj02/pmd-i2
+Log File: /export/glassfish7/glassfish/nodes/sj02/pmd-i2/logs/server.log
+Admin Port: 24851
+Command start-local-instance executed successfully.
+The instance, pmd-i2, was started on host sj02.example.com
+Command start-instance executed successfully.
+----
+
+[[GSHAG392]]
+
+See Also
+
+link:reference-manual/start-instance.html#GSRFM00236[`start-instance`(1)]
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help start-instance` at the command line.
+
+[[GSHAG393]]
+
+Next Steps
+
+After starting an instance, you can deploy applications to the instance.
+For more information, see the link:application-deployment-guide.html#GSDPG[{productName} Application Deployment Guide].
+
+[[gkqaj]][[GSHAG00112]][[to-stop-an-individual-instance-centrally]]
+
+==== To Stop an Individual Instance Centrally
+
+Use the `stop-instance` subcommand in remote mode to stop an individual
+instance centrally.
+
+When an instance is stopped, the instance stops accepting new requests
+and waits for all outstanding requests to be completed.
+
+1. Ensure that the DAS is running.
++
+Remote subcommands require a running server.
+2. Run the link:reference-manual/stop-instance.html#GSRFM00241[`stop-instance`] subcommand.
+
+[[GSHAG00046]][[gkqpy]]
+Example 5-8 Stopping an Individual Instance Centrally
+
+This example stops the instance `pmd-i2`.
+
+[source]
+----
+asadmin> stop-instance pmd-i2
+The instance, pmd-i2, is stopped.
+Command stop-instance executed successfully.
+----
+
+[[GSHAG394]]
+
+See Also
+
+link:reference-manual/stop-instance.html#GSRFM00241[`stop-instance`(1)]
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help stop-instance` at the command line.
+
+[[GSHAG395]]
+
+Troubleshooting
+
+If the instance has become unresponsive and fails to stop, run the
+subcommand again with the `--kill` option set to `true`. When this
+option is `true`, the subcommand uses functionality of the operating
+system to kill the instance process.
+
+[[gkqcc]][[GSHAG00113]][[to-restart-an-individual-instance-centrally]]
+
+==== To Restart an Individual Instance Centrally
+
+Use the `restart-instance` subcommand in remote mode to start an
+individual instance centrally.
+
+When this subcommand restarts an instance, the DAS synchronizes the
+instance with changes since the last synchronization as described in
+link:#gksbo[Default Synchronization for Files and Directories].
+
+If you require different synchronization behavior, stop and start the
+instance as explained in link:#gksak[To Resynchronize an Instance and
+the DAS Online].
+
+1. Ensure that the DAS is running. Remote subcommands require a running server.
+2. Run the link:reference-manual/restart-instance.html#GSRFM00219[`restart-instance`] subcommand.
++
+[source]
+----
+asadmin> restart-instance instance-name
+----
+instance-name::
+  The name of the instance that you are restarting.
+
+[[GSHAG00047]][[gkqqt]]
+Example 5-9 Restarting an Individual Instance Centrally
+
+This example restarts the instance `pmd-i2`.
+
+[source]
+----
+asadmin> restart-instance pmd-i2
+pmd-i2 was restarted.
+Command restart-instance executed successfully.
+----
+
+[[GSHAG396]]
+
+See Also
+
+* link:#gkqaj[To Stop an Individual Instance Centrally]
+* link:#gkqaw[To Start an Individual Instance Centrally]
+* link:reference-manual/restart-instance.html#GSRFM00219[`restart-instance`(1)]
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help restart-instance` at the command line.
+
+[[GSHAG397]]
+
+Troubleshooting
+
+If the instance has become unresponsive and fails to stop, run the
+subcommand again with the `--kill` option set to `true`. When this
+option is `true`, the subcommand uses functionality of the operating
+system to kill the instance process before restarting the instance.
+
+[[gkqdw]][[GSHAG00188]][[administering-glassfish-server-instances-locally]]
+
+=== Administering {productName} Instances Locally
+
+Local administration does not require DCOM or SSH to be set up. If
+neither DCOM nor SSH is set up, you must log in to each host where
+remote instances reside and administer the instances individually.
+
+Administering {productName} instances locally involves the following
+tasks:
+
+* link:#gkqbl[To Create an Instance Locally]
+* link:#gkqed[To Delete an Instance Locally]
+* link:#gkqak[To Start an Individual Instance Locally]
+* link:#gkqci[To Stop an Individual Instance Locally]
+* link:#gkqef[To Restart an Individual Instance Locally]
+
+
+[NOTE]
+====
+Even if neither DCOM nor SSH is set up, you can obtain information about
+instances in a domain without logging in to each host where remote
+instances reside. For instructions, see link:#gkrcb[To List All
+Instances in a Domain].
+====
+
+
+[[gkqbl]][[GSHAG00114]][[to-create-an-instance-locally]]
+
+==== To Create an Instance Locally
+
+Use the `create-local-instance` subcommand in remote mode to create a
+{productName} instance locally. Creating an instance adds the
+instance to the DAS configuration and creates the instance's files on
+the host where the instance resides.
+
+If the instance is a clustered instance that is managed by GMS, system
+properties for the instance that relate to GMS must be configured
+correctly. To avoid the need to restart the DAS and the instance,
+configure an instance's system properties that relate to GMS when you
+create the instance. If you change GMS-related system properties for an
+existing instance, the DAS and the instance must be restarted to apply
+the changes. For information about GMS, see
+link:clusters.html#gjfnl[Group Management Service].
+
+[[GSHAG398]]
+
+Before You Begin
+
+If you plan to specify the node on which the instance is to reside,
+ensure that the node exists.
+
+
+[NOTE]
+====
+If you create the instance on a host for which no nodes are defined, you
+can create the instance without creating a node beforehand. In this
+situation, {productName} creates a `CONFIG` node for you. The name of
+the node is the unqualified name of the host.
+====
+
+
+For information about how to create a node, see the following sections:
+
+* link:nodes.html#CHDIGBJB[To Create a `DCOM` Node]
+* link:nodes.html#gkrnf[To Create an `SSH` Node]
+* link:nodes.html#gkrll[To Create a `CONFIG` Node]
+
+If you are adding the instance to a cluster, ensure that the cluster to
+which you are adding the instance exists. For information about how to
+create a cluster, see link:clusters.html#gkqdm[To Create a Cluster].
+
+If the instance is to reference an existing named configuration, ensure
+that the configuration exists. For more information, see
+link:named-configurations.html#abdjr[To Create a Named Configuration].
+
+The instance might be a clustered instance that is managed by GMS and
+resides on a node that represents a multihome host. In this situation,
+ensure that you have the Internet Protocol (IP) address of the network
+interface to which GMS binds.
+
+1. Ensure that the DAS is running. Remote subcommands require a running server.
+
+2. Log in to the host that is represented by the node where the
+instance is to reside.
+
+3. Run the `create-local-instance` subcommand.
++
+[NOTE]
+====
+Only the options that are required to complete this task are provided in this step.
+For information about all the options for configuring the instance, see the
+link:reference-manual/create-local-instance.html#GSRFM00044[`create-local-instance`(1)] help page.
+====
+* If you are creating a standalone instance, do not specify a cluster.
++
+If the instance is to reference an existing configuration, specify a
+configuration that no other cluster or instance references.
++
+[source]
+----
+$ asadmin --host das-host [--port admin-port]
+create-local-instance [--node node-name] [--config configuration-name]instance-name
+----
+das-host::
+  The name of the host where the DAS is running.
+admin-port::
+  The HTTP or HTTPS port on which the DAS listens for administration
+  requests. If the DAS listens on the default port for administration
+  requests, you may omit this option.
+node-name::
+  The node on which the instance is to reside. +
+  If you are creating the instance on a host for which fewer than two
+  nodes are defined, you may omit this option. +
+  If no nodes are defined for the host, {productName} creates a
+  CONFIG node for you. The name of the node is the unqualified name of the host. +
+  If one node is defined for the host, the instance is created on that node.
+configuration-name::
+  The name of the existing named configuration that the instance will reference. +
+  If you do not require the instance to reference an existing
+  configuration, omit this option. A copy of the `default-config`
+  configuration is created for the instance. The name of this
+  configuration is instance-name`-config`, where instance-name is the
+  name of the server instance.
+instance-name::
+  Your choice of name for the instance that you are creating.
+
+* If you are creating a shared instance, specify the configuration that
+the instance will share with other clusters or instances. +
+Do not specify a cluster.
++
+[source]
+----
+$ asadmin --host das-host [--port admin-port]
+create-local-instance [--node node-name] --config configuration-name instance-name
+----
+das-host::
+  The name of the host where the DAS is running.
+admin-port::
+  The HTTP or HTTPS port on which the DAS listens for administration
+  requests. If the DAS listens on the default port for administration
+  requests, you may omit this option.
+node-name::
+  The node on which the instance is to reside. +
+  If you are creating the instance on a host for which fewer than two
+  nodes are defined, you may omit this option. +
+  If no nodes are defined for the host, {productName} creates a
+  `CONFIG` node for you. The name of the node is the unqualified name of the host. +
+  If one node is defined for the host, the instance is created on that node.
+configuration-name::
+  The name of the existing named configuration that the instance will
+  reference.
+instance-name::
+  Your choice of name for the instance that you are creating.
+
+* If you are creating a clustered instance, specify the cluster to which
+the instance will belong. +
+If the instance is managed by GMS and resides on a node that represents
+a multihome host, specify the `GMS-BIND-INTERFACE-ADDRESS-`cluster-name
+system property.
++
+[source]
+----
+$ asadmin --host das-host [--port admin-port]
+create-local-instance --cluster cluster-name [--node node-name]
+[--systemproperties GMS-BIND-INTERFACE-ADDRESS-cluster-name=bind-address]instance-name
+----
+das-host::
+  The name of the host where the DAS is running.
+admin-port::
+  The HTTP or HTTPS port on which the DAS listens for administration
+  requests. If the DAS listens on the default port for administration
+  requests, you may omit this option.
+cluster-name::
+  The name of the cluster to which you are adding the instance.
+node-name::
+  The node on which the instance is to reside. +
+  If you are creating the instance on a host for which fewer than two
+  nodes are defined, you may omit this option. +
+  If no nodes are defined for the host, {productName} creates a
+  `CONFIG` node for you. The name of the node is the unqualified name of the host. +
+  If one node is defined for the host, the instance is created on that node.
+bind-address::
+  The IP address of the network interface to which GMS binds. Specify
+  this option only if the instance is managed by GMS and resides on a
+  node that represents a multihome host.
+instance-name::
+  Your choice of name for the instance that you are creating.
+
+[[GSHAG00048]][[gktfa]]
+Example 5-10 Creating a Clustered Instance Locally Without Specifying a Node
+
+This example adds the instance `kui-i1` to the cluster `kuicluster`
+locally. The `CONFIG` node `xk01` is created automatically to represent
+the host `xk01.example.com`, on which this example is run. The DAS is
+running on the host `dashost.example.com` and listens for administration
+requests on the default port.
+
+The commands to list the nodes in the domain are included in this
+example only to demonstrate the creation of the node `xk01`.
+These commands are not required to create the instance.
+
+[source]
+----
+$ asadmin --host dashost.example.com list-nodes --long
+NODE NAME          TYPE    NODE HOST         INSTALL DIRECTORY   REFERENCED BY
+localhost-domain1  CONFIG  localhost         /export/glassfish7
+Command list-nodes executed successfully.
+$ asadmin --host dashost.example.com
+create-local-instance --cluster kuicluster kui-i1
+Rendezvoused with DAS on dashost.example.com:4848.
+Port Assignments for server instance kui-i1:
+JMX_SYSTEM_CONNECTOR_PORT=28687
+JMS_PROVIDER_PORT=27677
+HTTP_LISTENER_PORT=28081
+ASADMIN_LISTENER_PORT=24849
+JAVA_DEBUGGER_PORT=29009
+IIOP_SSL_LISTENER_PORT=23820
+IIOP_LISTENER_PORT=23700
+OSGI_SHELL_TELNET_PORT=26666
+HTTP_SSL_LISTENER_PORT=28182
+IIOP_SSL_MUTUALAUTH_PORT=23920
+Command create-local-instance executed successfully.
+$ asadmin --host dashost.example.com list-nodes --long
+NODE NAME          TYPE    NODE HOST         INSTALL DIRECTORY   REFERENCED BY
+localhost-domain1  CONFIG  localhost         /export/glassfish7
+xk01               CONFIG  xk01.example.com  /export/glassfish7  kui-i1
+Command list-nodes executed successfully.
+----
+
+[[GSHAG00049]][[gkqps]]
+Example 5-11 Creating a Clustered Instance Locally
+
+This example adds the instance `yml-i1` to the cluster `ymlcluster`
+locally. The instance resides on the node `sj01`. The DAS is running on
+the host `das1.example.com` and listens for administration requests on
+the default port.
+
+[source]
+----
+$ asadmin --host das1.example.com
+create-local-instance --cluster ymlcluster --node sj01 yml-i1
+Rendezvoused with DAS on das1.example.com:4848.
+Port Assignments for server instance yml-i1:
+JMX_SYSTEM_CONNECTOR_PORT=28687
+JMS_PROVIDER_PORT=27677
+HTTP_LISTENER_PORT=28081
+ASADMIN_LISTENER_PORT=24849
+JAVA_DEBUGGER_PORT=29009
+IIOP_SSL_LISTENER_PORT=23820
+IIOP_LISTENER_PORT=23700
+OSGI_SHELL_TELNET_PORT=26666
+HTTP_SSL_LISTENER_PORT=28182
+IIOP_SSL_MUTUALAUTH_PORT=23920
+Command create-local-instance executed successfully.
+----
+
+[[GSHAG399]]
+
+See Also
+
+* link:nodes.html#CHDIGBJB[To Create a `DCOM` Node]
+* link:nodes.html#gkrnf[To Create an `SSH` Node]
+* link:nodes.html#gkrll[To Create a `CONFIG` Node]
+* link:reference-manual/create-local-instance.html#GSRFM00044[`create-local-instance`(1)]
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-local-instance` at the command line.
+
+[[GSHAG400]]
+
+Next Steps
+
+After creating an instance, you can start the instance as explained in
+the following sections:
+
+* link:#gkqaw[To Start an Individual Instance Centrally]
+* link:#gkqci[To Stop an Individual Instance Locally]
+
+[[gkqed]][[GSHAG00115]][[to-delete-an-instance-locally]]
+
+==== To Delete an Instance Locally
+
+Use the `delete-local-instance` subcommand in remote mode to delete a
+{productName} instance locally.
+
+[CAUTION]
+====
+If you are using a Java Message Service (JMS) cluster with a master
+broker, do not delete the instance that is associated with the master
+broker. If this instance must be deleted, use the
+link:reference-manual/change-master-broker.html#GSRFM00005[`change-master-broker`] subcommand to assign the master
+broker to a different instance.
+====
+
+Deleting an instance involves the following:
+
+* Removing the instance from the configuration of the DAS
+* Deleting the instance's files from file system
+
+[[GSHAG401]]
+
+Before You Begin
+
+Ensure that the instance that you are deleting is not running. For
+information about how to stop an instance, see the following sections:
+
+* link:#gkqaj[To Stop an Individual Instance Centrally]
+* link:#gkqci[To Stop an Individual Instance Locally]
+
+1. Ensure that the DAS is running. Remote subcommands require a running server.
+2. Log in to the host that is represented by the node where the instance resides.
+3. Confirm that the instance is not running.
++
+[source]
+----
+$ asadmin --host das-host [--port admin-port]
+list-instances instance-name
+----
+das-host::
+  The name of the host where the DAS is running.
+admin-port::
+  The HTTP or HTTPS port on which the DAS listens for administration
+  requests. If the DAS listens on the default port for administration
+  requests, you may omit this option.
+instance-name::
+  The name of the instance that you are deleting.
+4. Run the link:reference-manual/delete-local-instance.html#GSRFM00096[`delete-local-instance`] subcommand.
++
+[source]
+----
+$ asadmin --host das-host [--port admin-port]
+delete-local-instance [--node node-name]instance-name
+----
+das-host::
+  The name of the host where the DAS is running.
+admin-port::
+  The HTTP or HTTPS port on which the DAS listens for administration
+  requests. If the DAS listens on the default port for administration
+  requests, you may omit this option.
+node-name::
+  The node on which the instance resides. If only one node is defined
+  for the {productName} installation that you are running on the
+  node's host, you may omit this option.
+instance-name::
+  The name of the instance that you are deleting.
+
+[[GSHAG00050]][[gkqqu]]
+Example 5-12 Deleting an Instance Locally
+
+This example confirms that the instance `yml-i1` is not running and
+deletes the instance.
+
+[source]
+----
+$ asadmin --host das1.example.com list-instances yml-i1
+yml-i1   not running
+Command list-instances executed successfully.
+$ asadmin --host das1.example.com delete-local-instance --node sj01 yml-i1
+Command delete-local-instance executed successfully.
+----
+
+[[GSHAG402]]
+
+See Also
+
+* link:#gkqaj[To Stop an Individual Instance Centrally]
+* link:#gkqci[To Stop an Individual Instance Locally]
+* link:reference-manual/change-master-broker.html#GSRFM00005[`change-master-broker`(1)]
+* link:reference-manual/delete-local-instance.html#GSRFM00096[`delete-local-instance`(1)]
+* link:reference-manual/list-instances.html#GSRFM00170[`list-instances`(1)]
+
+You can also view the full syntax and options of the subcommands by
+typing the following commands at the command line:
+
+* `asadmin help delete-local-instance`
+* `asadmin help list-instances`
+
+[[gkqak]][[GSHAG00116]][[to-start-an-individual-instance-locally]]
+
+==== To Start an Individual Instance Locally
+
+Use the `start-local-instance` subcommand in local mode to start an
+individual instance locally.
+
+1. Log in to the host that is represented by the node where the instance resides.
+2. Run the `start-local-instance` subcommand.
++
+[source]
+----
+$ asadmin start-local-instance [--node node-name]instance-name
+----
++
+[NOTE]
+====
+Only the options that are required to complete this task are provided in
+this step. For information about all the options for controlling the
+behavior of the instance, see the
+link:reference-manual/start-local-instance.html#GSRFM00237[`start-local-instance`(1)] help page.
+====
+
+node-name::
+  The node on which the instance resides. If only one node is defined
+  for the {productName} installation that you are running on the
+  node's host, you may omit this option.
+instance-name::
+  The name of the instance that you are starting.
+
+[[GSHAG00051]][[gkqpu]]
+Example 5-13 Starting an Individual Instance Locally
+
+This example starts the instance `yml-i1` locally. The instance resides
+on the node `sj01`.
+
+[source]
+----
+$ asadmin start-local-instance --node sj01 yml-i1
+Waiting for yml-i1 to start ...............
+Successfully started the instance: yml-i1
+instance Location: /export/glassfish7/glassfish/nodes/sj01/yml-i1
+Log File: /export/glassfish7/glassfish/nodes/sj01/yml-i1/logs/server.log
+Admin Port: 24849
+Command start-local-instance executed successfully.
+----
+
+[[GSHAG403]]
+
+See Also
+
+link:reference-manual/start-local-instance.html#GSRFM00237[`start-local-instance`(1)]
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help start-local-instance` at the command line.
+
+[[GSHAG404]]
+
+Next Steps
+
+After starting an instance, you can deploy applications to the instance.
+For more information, see the link:application-deployment-guide.html#GSDPG[{productName} Application Deployment Guide].
+
+[[gkqci]][[GSHAG00117]][[to-stop-an-individual-instance-locally]]
+
+==== To Stop an Individual Instance Locally
+
+Use the `stop-local-instance` subcommand in local mode to stop an
+individual instance locally.
+
+When an instance is stopped, the instance stops accepting new requests
+and waits for all outstanding requests to be completed.
+
+1. Log in to the host that is represented by the node where the
+instance resides.
+2. Run the link:reference-manual/stop-local-instance.html#GSRFM00242[`stop-local-instance`] subcommand.
++
+[source]
+----
+$ asadmin stop-local-instance [--node node-name]instance-name
+----
+node-name::
+  The node on which the instance resides. If only one node is defined
+  for the {productName} installation that you are running on the
+  node's host, you may omit this option.
+instance-name::
+  The name of the instance that you are stopping.
+
+[[GSHAG00052]][[gkqoo]]
+Example 5-14 Stopping an Individual Instance Locally
+
+This example stops the instance `yml-i1` locally. The instance resides
+on the node `sj01`.
+
+[source]
+----
+$ asadmin stop-local-instance --node sj01 yml-i1
+Waiting for the instance to stop ....
+Command stop-local-instance executed successfully.
+----
+
+[[GSHAG405]]
+
+See Also
+
+link:reference-manual/stop-local-instance.html#GSRFM00242[`stop-local-instance`(1)]
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help stop-local-instance` at the command line.
+
+[[GSHAG406]]
+
+Troubleshooting
+
+If the instance has become unresponsive and fails to stop, run the
+subcommand again with the `--kill` option set to `true`. When this
+option is `true`, the subcommand uses functionality of the operating
+system to kill the instance process.
+
+[[gkqef]][[GSHAG00118]][[to-restart-an-individual-instance-locally]]
+
+==== To Restart an Individual Instance Locally
+
+Use the `restart-local-instance` subcommand in local mode to restart an
+individual instance locally.
+
+When this subcommand restarts an instance, the DAS synchronizes the
+instance with changes since the last synchronization as described in
+link:#gksbo[Default Synchronization for Files and Directories].
+
+If you require different synchronization behavior, stop and start the
+instance as explained in link:#gksak[To Resynchronize an Instance and
+the DAS Online].
+
+1. Log in to the host that is represented by the node where the instance resides.
+2. Run the `restart-local-instance` subcommand.
++
+[source]
+----
+$ asadmin restart-local-instance [--node node-name]instance-name
+----
+node-name::
+  The node on which the instance resides. If only one node is defined
+  for the {productName} installation that you are running on the
+  node's host, you may omit this option.
+instance-name::
+  The name of the instance that you are restarting.
+
+[[GSHAG00053]][[gkqnt]]
+Example 5-15 Restarting an Individual Instance Locally
+
+This example restarts the instance `yml-i1` locally. The instance
+resides on the node `sj01`.
+
+[source]
+----
+$ asadmin restart-local-instance --node sj01 yml-i1
+Command restart-local-instance executed successfully.
+----
+
+[[GSHAG407]]
+
+See Also
+
+link:reference-manual/restart-local-instance.html#GSRFM00220[`restart-local-instance`(1)]
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help restart-local-instance` at the command line.
+
+[[GSHAG408]]
+
+Troubleshooting
+
+If the instance has become unresponsive and fails to stop, run the
+subcommand again with the `--kill` option set to `true`. When this
+option is `true`, the subcommand uses functionality of the operating
+system to kill the instance process before restarting the instance.
+
+[[gkrdd]][[GSHAG00189]][[resynchronizing-glassfish-server-instances-and-the-das]]
+
+=== Resynchronizing {productName} Instances and the DAS
+
+Configuration data for a {productName} instance is stored as follows:
+
+* In the repository of the domain administration server (DAS)
+* In a cache on the host that is local to the instance
+
+The configuration data in these locations must be synchronized. The
+cache is synchronized in the following circumstances:
+
+* Whenever an `asadmin` subcommand is run. For more information, see
+"link:administration-guide/overview.html#GSADG00697[Impact of Configuration Changes]" in {productName} Administration Guide.
+* When a user uses the administration tools to start or restart an instance.
+
+[[gksbo]][[GSHAG00267]][[default-synchronization-for-files-and-directories]]
+
+==== Default Synchronization for Files and Directories
+
+The `--sync` option of the subcommands for starting an instance controls
+the type of synchronization between the DAS and the instance's files
+when the instance is started. You can use this option to override the
+default synchronization behavior for the files and directories of an
+instance. For more information, see link:#gksak[To Resynchronize an
+Instance and the DAS Online].
+
+On the DAS, the files and directories of an instance are stored in the
+domain-dir directory, where domain-dir is the directory in which a
+domain's configuration is stored. The default synchronization behavior
+for the files and directories of an instance is as follows:
+
+`applications`::
+  This directory contains a subdirectory for each application that is
+  deployed to the instance. +
+  By default, only a change to an application's top-level directory
+  within the application directory causes the DAS to synchronize that
+  application's directory. When the DAS resynchronizes the
+  `applications` directory, all the application's files and all
+  generated content that is related to the application are copied to the instance. +
+  If a file below a top-level subdirectory is changed without a change
+  to a file in the top-level subdirectory, full synchronization is
+  required. In normal operation, files below the top-level
+  subdirectories of these directories are not changed and such files
+  should not be changed by users. If an application is deployed and
+  undeployed, full synchronization is not necessary to update the
+  instance with the change.
+`config`::
+  This directory contains configuration files for the entire domain. +
+  By default, the DAS resynchronizes files that have been modified since
+  the last resynchronization only if the `domain.xml` file in this
+  directory has been modified.
++
+[NOTE]
+====
+If you add a file to the `config` directory of an instance, the file
+is deleted when the instance is resynchronized with the DAS. However,
+any file that you add to the `config` directory of the DAS is not
+deleted when instances and the DAS are resynchronized.
+By default, any file that you add to the `config` directory of the DAS
+is not resynchronized.
+If you require any additional configuration files to be resynchronized,
+you must specify the files explicitly.
+For more information, see link:#gksaz[To Resynchronize Additional Configuration Files].
+====
+
+``config/``config-name::
+  This directory contains files that are to be shared by all instances
+  that reference the named configuration config-name. A config-name
+  directory exists for each named configuration in the configuration of the DAS. +
+  Because the config-name directory contains the subdirectories `lib`
+  and `docroot`, this directory might be very large. Therefore, by
+  default, only a change to a file or a top-level subdirectory of
+  config-name causes the DAS to resynchronize the config-name directory.
+`config/domain.xml`::
+  This file contains the DAS configuration for the domain to which the
+  instance belongs. +
+  By default, the DAS resynchronizes this file if it has been modified
+  since the last resynchronization.
++
+[NOTE]
+====
+A change to the `config/domain.xml` file is required to cause the DAS
+to resynchronize an instance's files. If the `config/domain.xml` file
+has not changed since the last resynchronization, none of the
+instance's files is resynchronized, even if some of these files are
+out of date in the cache.
+====
+
+`docroot`::
+  This directory is the HTTP document root directory. By default, all
+  instances in a domain use the same document root directory. To enable
+  instances to use a different document root directory, a virtual server
+  must be created in which the `docroot` property is set. For more
+  information, see the link:reference-manual/create-virtual-server.html#GSRFM00062[`create-virtual-server`(1)]
+  help page. +
+  The `docroot` directory might be very large. Therefore, by default,
+  only a change to a file or a subdirectory in the top level of the
+  `docroot` directory causes the DAS to resynchronize the `docroot`
+  directory. The DAS checks files in the top level of the `docroot`
+  directory to ensure that changes to the `index.html` file are
+  detected. +
+  When the DAS resynchronizes the `docroot` directory, all modified
+  files and subdirectories at any level are copied to the instance. +
+  If a file below a top-level subdirectory is changed without a change
+  to a file in the top-level subdirectory, full synchronization is required.
+`generated`::
+  This directory contains generated files for Jakarta EE applications and
+  modules, for example, EJB stubs, compiled JSP classes, and security
+  policy files. Do not modify the contents of this directory. +
+  This directory is resynchronized when the `applications` directory is
+  resynchronized. Therefore, only directories for applications that are
+  deployed to the instance are resynchronized.
+`java-web-start`::
+  This directory is not resynchronized. It is created and populated as
+  required on each instance.
+`lib`::
+`lib/classes`::
+  These directories contain common Java class files or JAR archives and
+  ZIP archives for use by applications that are deployed to the entire
+  domain. Typically, these directories contain common JDBC drivers and
+  other utility libraries that are shared by all applications in the domain. +
+  The contents of these directories are loaded by the common class
+  loader. For more information, see "link:application-development-guide/class-loaders.html#GSDVG00342[
+  Using the Common Class Loader]" in {productName} Application
+  Development Guide.
+  The class loader loads the contents of these directories in the following order:
++
+--
+  1. `lib/classes`
+  2. `lib/*.jar`
+  3. `lib/*.zip`
+--
+  The `lib` directory also contains the following subdirectories:
++
+--
+  `applibs`;;
+    This directory contains application-specific Java class files or JAR
+    archives and ZIP archives for use by applications that are deployed
+    to the entire domain.
+  `ext`;;
+    This directory contains optional packages in JAR archives and ZIP
+    archives for use by applications that are deployed to the entire
+    domain. These archive files are loaded by using Java extension
+    mechanism. For more information, see
+    http://download.oracle.com/javase/6/docs/technotes/guides/extensions/extensions.html[Optional
+    Packages - An Overview]
+    (`http://docs.oracle.com/javase/7/docs/technotes/guides/extensions/extensions.html`).
++
+[NOTE]
+====
+Optional packages were formerly known as standard extensions or extensions.
+====
+--
+  The `lib` directory and its subdirectories typically contain only a
+  small number of files. Therefore, by default, a change to any file in
+  these directories causes the DAS to resynchronize the file that
+  changed.
+
+[[gksak]][[GSHAG00119]][[to-resynchronize-an-instance-and-the-das-online]]
+
+==== To Resynchronize an Instance and the DAS Online
+
+Resynchronizing an instance and the DAS updates the instance with
+changes to the instance's configuration files on the DAS. An instance is
+resynchronized with the DAS when the instance is started or restarted.
+
+[NOTE]
+====
+Resynchronization of an instance is only required if the instance is
+stopped. A running instance does not require resynchronization.
+====
+
+1. Ensure that the DAS is running.
+
+2. Determine whether the instance is stopped.
++
+[source]
+----
+asadmin> list-instances instance-name
+----
+instance-name::
+  The name of the instance that you are resynchronizing with the DAS. +
+If the instance is stopped, the `list-instances` subcommand indicates
+that the instance is not running.
+
+3. If the instance is stopped, start the instance. +
+If the instance is running, no further action is required.
+* If DCOM or SSH is set up, start the instance centrally.
++
+If you require full synchronization, set the `--sync` option of the
+`start-instance` subcommand to `full`. If default synchronization is
+sufficient, omit this option.
++
+[source]
+----
+asadmin> start-instance [--sync full] instance-name
+----
++
+[NOTE]
+====
+Only the options that are required to complete this task are provided in
+this step. For information about all the options for controlling the
+behavior of the instance, see the link:reference-manual/start-instance.html#GSRFM00236[`start-instance`(1)]
+help page.
+====
+
+instance-name::
+  The name of the instance that you are starting.
+* If neither DCOM nor SSH is set up, start the instance locally from the
+host where the instance resides.
++
+If you require full synchronization, set the `--sync` option of the
+`start-local-instance` subcommand to `full`. If default synchronization
+is sufficient, omit this option.
++
+[source]
+----
+$ asadmin start-local-instance [--node node-name] [--sync full] instance-name
+----
++
+[NOTE]
+====
+Only the options that are required to complete this task are provided in
+this step. For information about all the options for controlling the
+behavior of the instance, see the
+link:reference-manual/start-local-instance.html#GSRFM00237[`start-local-instance`(1)] help page.
+====
+
+node-name::
+  The node on which the instance resides. If only one node is defined
+  for the {productName} installation that you are running on the
+  node's host, you may omit this option.
+instance-name::
+  The name of the instance that you are starting.
+
+[[GSHAG00054]][[gksfu]]
+Example 5-16 Resynchronizing an Instance and the DAS Online
+
+This example determines that the instance `yml-i1` is stopped and fully
+resynchronizes the instance with the DAS. Because neither DCOM nor SSH
+is set up, the instance is started locally on the host where the
+instance resides. In this example, multiple nodes are defined for the
+{productName} installation that is running on the node's host.
+
+To determine whether the instance is stopped, the following command is
+run in multimode on the DAS host:
+
+[source]
+----
+asadmin> list-instances yml-i1
+yml-i1   not running
+Command list-instances executed successfully.
+----
+
+To start the instance, the following command is run in single mode on
+the host where the instance resides:
+
+[source]
+----
+$ asadmin start-local-instance --node sj01 --sync full yml-i1
+Removing all cached state for instance yml-i1.
+Waiting for yml-i1 to start ...............
+Successfully started the instance: yml-i1
+instance Location: /export/glassfish7/glassfish/nodes/sj01/yml-i1
+Log File: /export/glassfish7/glassfish/nodes/sj01/yml-i1/logs/server.log
+Admin Port: 24849
+Command start-local-instance executed successfully.
+----
+
+[[GSHAG409]]
+
+See Also
+
+* link:reference-manual/list-instances.html#GSRFM00170[`list-instances`(1)]
+* link:reference-manual/start-instance.html#GSRFM00236[`start-instance`(1)]
+* link:reference-manual/start-local-instance.html#GSRFM00237[`start-local-instance`(1)]
+
+You can also view the full syntax and options of the subcommands by
+typing the following commands at the command line.
+
+`asadmin help list-instances`
+`asadmin help start-instance`
+`asadmin help start-local-instance`
+
+[[gksav]][[GSHAG00120]][[to-resynchronize-library-files]]
+
+==== To Resynchronize Library Files
+
+To ensure that library files are resynchronized correctly, you must
+ensure that each library file is placed in the correct directory for the
+type of file.
+
+1. Place each library file in the correct location for the type of
+library file as shown in the following table.
++
+[width="100%",cols="<53%,<47%",options="header",]
+|===
+|Type of Library Files |Location
+|Common JAR archives and ZIP archives for all applications in a domain.
+|domain-dir``/lib``
+
+|Common Java class files for a domain for all applications in a domain.
+|domain-dir``/lib/classes``
+
+|Application-specific libraries. |domain-dir``/lib/applibs``
+
+|Optional packages for all applications in a domain.
+|domain-dir``/lib/ext``
+
+|Library files for all applications that are deployed to a specific
+cluster or standalone instance. |domain-dir``/config/``config-name``/lib``
+
+|Optional packages for all applications that are deployed to a specific
+cluster or standalone instance.
+|domain-dir``/config/``config-name``/lib/ext``
+|===
+
+domain-dir::
+  The directory in which the domain's configuration is stored.
+config-name::
+  For a standalone instance: the named configuration that the instance references. +
+  For a clustered instance: the named configuration that the cluster to
+  which the instance belongs references.
+
+2. When you deploy an application that depends on these library files,
+use the `--libraries` option of the deploy subcommand to specify these dependencies. +
+For library files in the domain-dir`/lib/applib` directory, only the JAR
+file name is required, for example:
++
+[source]
+----
+asadmin> deploy --libraries commons-coll.jar,X1.jar app.ear
+----
+For other types of library file, the full path is required.
+
+[[GSHAG411]]
+
+See Also
+
+link:reference-manual/deploy.html#GSRFM00114[`deploy`(1)]
+
+You can also view the full syntax and options of the subcommands by
+typing the command `asadmin help deploy` at the command line.
+
+[[gksco]][[GSHAG00121]][[to-resynchronize-custom-configuration-files-for-an-instance]]
+
+==== To Resynchronize Custom Configuration Files for an Instance
+
+Configuration files in the domain-dir``/config`` directory that are
+resynchronized are resynchronized for the entire domain. If you create a
+custom configuration file for an instance or a cluster, the custom file
+is resynchronized only for the instance or cluster.
+
+1. Place the custom configuration file in the
+domain-dir``/config/``config-name directory.::
+domain-dir::
+  The directory in which the domain's configuration is stored.
+config-name::
+  The named configuration that the instance references.
+2. If the instance locates the file through an option of the Java
+application launcher, update the option.
+[arabic]
+.. Delete the option.
++
+[source]
+----
+asadmin> delete-jvm-options --target instance-name
+option-name=current-value
+----
+instance-name::
+  The name of the instance for which the custom configuration file is
+  created.
+option-name::
+  The name of the option for locating the file.
+current-value::
+  The current value of the option for locating the file.
+
+.. Re-create the option that you deleted in the previous step.
++
+[source]
+----
+asadmin> create-jvm-options --target instance-name
+option-name=new-value
+----
+instance-name::
+  The name of the instance for which the custom configuration file is
+  created.
+option-name::
+  The name of the option for locating the file.
+new-value::
+  The new value of the option for locating the file.
+
+[[GSHAG00055]][[gksfr]]
+Example 5-17 Updating the Option for Locating a Configuration File
+
+This example updates the option for locating the `server.policy` file to
+specify a custom file for the instance `pmd`.
+
+[source]
+----
+asadmin> delete-jvm-options --target pmd
+-Djava.security.policy=${com.sun.aas.instanceRoot}/config/server.policy
+Deleted 1 option(s)
+Command delete-jvm-options executed successfully.
+asadmin> create-jvm-options --target pmd
+-Djava.security.policy=${com.sun.aas.instanceRoot}/config/pmd-config/server.policy
+Created 1 option(s)
+Command create-jvm-options executed successfully.
+----
+
+[[GSHAG412]]
+
+See Also
+
+* link:reference-manual/create-jvm-options.html#GSRFM00042[`create-jvm-options`(1)]
+* link:reference-manual/delete-jvm-options.html#GSRFM00094[`delete-jvm-options`(1)]
+
+You can also view the full syntax and options of the subcommands by
+typing the following commands at the command line.
+
+`asadmin help create-jvm-options`
+
+`asadmin help delete-jvm-options`
+
+[[gkscp]][[GSHAG00122]][[to-resynchronize-users-changes-to-files]]
+
+==== To Resynchronize Users' Changes to Files
+
+A change to the `config/domain.xml` file is required to cause the DAS to
+resynchronize instances' files. If other files in the domain directory
+are changed without a change to the `config/domain.xml` file, instances
+are not resynchronized with these changes.
+
+The following changes are examples of changes to the domain directory
+without a change to the `config/domain.xml` file:
+
+* Adding files to the `lib` directory
+* Adding certificates to the key store by using the `keytool` command
+
+1. Change the last modified time of the `config/domain.xml` file. +
+Exactly how to change the last modified time depends on the operating
+system. For example, on UNIX and Linux systems, you can use the
+http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1touch-1[`touch`(1)] command.
+
+2. Resynchronize each instance in the domain with the DAS. +
+For instructions, see link:#gksak[To Resynchronize an Instance and the DAS Online].
+
+[[GSHAG413]]
+
+See Also
+
+* link:#gksak[To Resynchronize an Instance and the DAS Online]
+* http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1touch-1[`touch`(1)]
+
+[[gksaz]][[GSHAG00123]][[to-resynchronize-additional-configuration-files]]
+
+==== To Resynchronize Additional Configuration Files
+
+By default, {productName} synchronizes only the following
+configuration files:
+
+* `admin-keyfile`
+* `cacerts.jks`
+* `default-web.xml`
+* `domain.xml`
+* `domain-passwords`
+* `keyfile`
+* `keystore.jks`
+* `server.policy`
+* `sun-acc.xml`
+* `wss-server-config-1.0`
+* `xml wss-server-config-2.0.xml`
+
+If you require instances in a domain to be resynchronized with
+additional configuration files for the domain, you can specify a list of
+files to resynchronize.
+
+
+[CAUTION]
+====
+If you specify a list of files to resynchronize, you must specify all
+the files that the instances require, including the files that {productName} resynchronizes by default. Any file in the instance's cache that
+is not in the list is deleted when the instance is resynchronized with
+the DAS.
+====
+
+In the `config` directory of the domain, create a plain text file that
+is named `config-files` that lists the files to resynchronize.
+
+In the `config-files` file, list each file name on a separate line.
+
+[[GSHAG00056]][[gksgl]]
+Example 5-18 `config-files` File
+
+This example shows the content of a `config-files` file. This file
+specifies that the `some-other-info` file is to be resynchronized in
+addition to the files that {productName} resynchronizes by default:
+
+[source]
+----
+admin-keyfile
+cacerts.jks
+default-web.xml
+domain.xml
+domain-passwords
+keyfile
+keystore.jks
+server.policy
+sun-acc.xml
+wss-server-config-1.0.xml
+wss-server-config-2.0.xml
+some-other-info
+----
+
+[[gksdj]][[GSHAG00124]][[to-prevent-deletion-of-application-generated-files]]
+
+==== To Prevent Deletion of Application-Generated Files
+
+When the DAS resynchronizes an instance's files, the DAS deletes from
+the instance's cache any files that are not listed for
+resynchronization. If an application creates files in a directory that
+the DAS resynchronizes, these files are deleted when the DAS
+resynchronizes an instance with the DAS.
+
+Put the files in a subdirectory under the domain directory that is not
+defined by {productName}, for example,
+`/export/glassfish7/glassfish/domains/domain1/myapp/myfile`.
+
+[[gksdy]][[GSHAG00125]][[to-resynchronize-an-instance-and-the-das-offline]]
+
+==== To Resynchronize an Instance and the DAS Offline
+
+Resynchronizing an instance and the DAS offline updates the instance's
+cache without the need for the instance to be able to communicate with
+the DAS. Offline resynchronization is typically required for the
+following reasons:
+
+* To reestablish the instance after an upgrade
+* To synchronize the instance manually with the DAS when the instance cannot contact the DAS
+
+1. Ensure that the DAS is running.
+
+2. [[gktio]]
+Export the configuration data that you are resynchronizing to an archive file.
++
+[NOTE]
+====
+Only the options that are required to complete this task are provided in
+this step. For information about all the options for exporting the
+configuration data, see the
+link:reference-manual/export-sync-bundle.html#GSRFM00134[`export-sync-bundle`(1)]
+help page.
+====
++
+How to export the data depends on the host from where you run the
+`export-sync-bundle` subcommand.
++
+--
+* From the DAS host, run the `export-sync-bundle` subcommand as follows:
++
+[source]
+----
+asadmin> export-sync-bundle --target target
+----
+target::
+  The cluster or standalone instance for which to export configuration data. +
+  Do not specify a clustered instance. If you specify a clustered
+  instance, an error occurs. To export configuration data for a
+  clustered instance, specify the name of the cluster of which the
+  instance is a member, not the instance.
++
+The file is created on the DAS host.
+
+* From the host where the instance resides, run the `export-sync-bundle`
+subcommand as follows:
++
+[source]
+----
+$ asadmin --host das-host [--port admin-port]
+export-sync-bundle [--retrieve=true] --target target
+----
+das-host::
+  The name of the host where the DAS is running.
+admin-port::
+  The HTTP or HTTPS port on which the DAS listens for administration
+  requests. If the DAS listens on the default port for administration
+  requests, you may omit this option.
+target::
+  The cluster or standalone instance for which to export configuration data. +
+  Do not specify a clustered instance. If you specify a clustered
+  instance, an error occurs. To export configuration data for a
+  clustered instance, specify the name of the cluster of which the
+  instance is a member, not the instance.
++
+[NOTE]
+====
+To create the archive file on the host where the instance resides, set
+the `--retrieve` option to `true`. If you omit this option, the archive
+file is created on the DAS host.
+====
+--
+3. If necessary, copy the archive file that you created in
+Step link:#gktio[2] from the DAS host to the host where the instance resides.
+
+4. From the host where the instance resides, import the instance's
+configuration data from the archive file that you created in
+Step link:#gktio[2].
++
+[NOTE]
+====
+Only the options that are required to complete this task are provided in
+this step. For information about all the options for importing the
+configuration data, see the link:reference-manual/import-sync-bundle.html#GSRFM00142[`import-sync-bundle`(1)]
+help page.
+====
++
+[source]
+----
+$ asadmin import-sync-bundle [--node node-name] --instance instance-name archive-file
+----
+node-name::
+  The node on which the instance resides. If you omit this option, the
+  subcommand determines the node from the DAS configuration in the
+  archive file.
+instance-name::
+  The name of the instance that you are resynchronizing.
+archive-file::
+  The name of the file, including the path, that contains the archive
+  file to import.
+
+[[GSHAG00057]][[gksgg]]
+Example 5-19 Resynchronizing an Instance and the DAS Offline
+
+This example resynchronizes the clustered instance `yml-i1` and the DAS
+offline. The instance is a member of the cluster `ymlcluster`. The
+archive file that contains the instance's configuration data is created
+on the host where the instance resides.
+
+[source]
+----
+$ asadmin --host dashost.example.com
+export-sync-bundle --retrieve=true --target ymlcluster
+Command export-sync-bundle executed successfully.
+$ asadmin import-sync-bundle --node sj01
+--instance yml-i1 ymlcluster-sync-bundle.zip
+Command import-sync-bundle executed successfully.
+----
+
+[[GSHAG414]]
+
+See Also
+
+* link:reference-manual/export-sync-bundle.html#GSRFM00134[`export-sync-bundle`(1)]
+* link:reference-manual/import-sync-bundle.html#GSRFM00142[`import-sync-bundle`(1)]
+
+You can also view the full syntax and options of the subcommands by
+typing the following commands at the command line.
+
+`asadmin help export-sync-bundle`
+
+`asadmin help import-sync-bundle`
+
+[[gkqcr]][[GSHAG00190]][[migrating-ejb-timers]]
+
+=== Migrating EJB Timers
+
+If a {productName} server instance stops or fails abnormally, it may
+be desirable to migrate the EJB timers defined for that stopped server
+instance to another running server instance.
+
+Automatic timer migration is enabled by default for clustered server
+instances that are stopped normally. Automatic timer migration can also
+be enabled to handle clustered server instance crashes. In addition,
+timers can be migrated manually for stopped or crashed server instances.
+
+* link:#gkvwo[To Enable Automatic EJB Timer Migration for Failed Clustered Instances]
+* link:#abdji[To Migrate EJB Timers Manually]
+
+[[gkvwo]][[GSHAG00126]][[to-enable-automatic-ejb-timer-migration-for-failed-clustered-instances]]
+
+==== To Enable Automatic EJB Timer Migration for Failed Clustered Instances
+
+Automatic migration of EJB timers is enabled by default for clustered
+server instances that are stopped normally. If the Group Management
+Service (GMS) is enabled and a clustered instance is stopped normally,
+no further action is required for timer migration to occur. The
+procedure in this section is only necessary if you want to enable
+automatic timer migration for clustered server instances that have
+stopped abnormally.
+
+
+[NOTE]
+====
+If the GMS is enabled, the default automatic timer migration cannot be
+disabled. To disable automatic timer migration, you must first disable
+the GMS. For information about the GMS, see
+link:clusters.html#gjfnl[Group Management Service].
+====
+
+
+[[GSHAG415]]
+
+Before You Begin
+
+Automatic EJB timer migration can only be configured for clustered
+server instances. Automatic timer migration is not possible for
+standalone server instances.
+
+Enable delegated transaction recovery for the cluster.
+
+This enables automatic timer migration for failed server instances in
+the cluster.
+
+For instructions on enabling delegated transaction recovery, see
+"link:administration-guide/transactions.html#GSADG00022[Administering Transactions]" in {productName} Administration Guide.
+
+[[abdji]][[GSHAG00127]][[to-migrate-ejb-timers-manually]]
+
+==== To Migrate EJB Timers Manually
+
+EJB timers can be migrated manually from a stopped source instance to a
+specified target instance in the same cluster if GMS notification is not
+enabled. If no target instance is specified, the DAS will attempt to
+find a suitable server instance. A migration notification will then be
+sent to the selected target server instance.
+
+Note the following restrictions:
+
+* If the source instance is part of a cluster, then the target instance
+must also be part of that same cluster.
+* It is not possible to migrate timers from a standalone instance to a
+clustered instance, or from one cluster to another cluster.
+* It is not possible to migrate timers from one standalone instance to
+another standalone instance.
+* All EJB timers defined for a given instance are migrated with this
+procedure. It is not possible to migrate individual timers.
+
+[[GSHAG416]]
+
+Before You Begin
+
+The server instance from which the EJB timers are to be migrated should
+not be active during the migration process.
+
+1. Verify that the source clustered server instance from which the EJB
+timers are to be migrated is not currently running.
++
+[source]
+----
+asadmin> list-instances source-instance
+----
+
+2. Stop the instance from which the timers are to be migrated, if that
+instance is still running.
++
+[source]
+----
+asadmin> stop-instance source-instance
+----
++
+[NOTE]
+====
+The target instance to which the timers will be migrated should be running.
+====
+
+3. List the currently defined EJB timers on the source instance, if desired.
++
+[source]
+----
+asadmin> list-timers source-cluster
+----
+
+4. Migrate the timers from the stopped source instance to the target instance.
++
+[source]
+----
+asadmin> migrate-timers --target target-instance source-instance
+----
+
+[[GSHAG00058]][[gkmgw]]
+Example 5-20 Migrating an EJB Timer
+
+The following example show how to migrate timers from a clustered source
+instance named `football` to a clustered target instance named `soccer`.
+
+[source]
+----
+asadmin> migrate-timers --target soccer football
+----
+
+[[GSHAG417]]
+
+See Also
+
+link:reference-manual/list-timers.html#GSRFM00205[`list-timers`(1)],
+link:reference-manual/migrate-timers.html#GSRFM00211[`migrate-timers`(1)],
+link:reference-manual/list-instances.html#GSRFM00170[`list-instances`(1)],
+link:reference-manual/stop-instance.html#GSRFM00241[`stop-instance`(1)]
diff --git a/docs/ha-administration-guide/src/main/asciidoc/jms.adoc b/docs/ha-administration-guide/src/main/asciidoc/jms.adoc
new file mode 100644
index 0000000..f65d8cc
--- /dev/null
+++ b/docs/ha-administration-guide/src/main/asciidoc/jms.adoc
@@ -0,0 +1,540 @@
+type=page
+status=published
+title=Configuring Java Message Service High Availability
+next=rmi-iiop.html
+prev=session-persistence-and-failover.html
+~~~~~~
+
+= Configuring Java Message Service High Availability
+
+[[GSHAG00012]][[abdbk]]
+
+
+[[configuring-java-message-service-high-availability]]
+== 10 Configuring Java Message Service High Availability
+
+This chapter describes how to configure the high availability features
+of the Java Message Service (JMS). It covers how to configure Message
+Queue broker clusters and how to use them to provide connection failover
+and load balancing, as described in the following topics:
+
+* link:#abdbx[Using Message Queue Broker Clusters With {productName}]
+* link:#abdbv[Connection Failover]
+* link:#abdbw[Load-Balanced Delivery to MDBs]
+
+[[abdbx]][[GSHAG00212]][[using-message-queue-broker-clusters-with-glassfish-server]]
+
+=== Using Message Queue Broker Clusters With {productName}
+
+This section describes how the JMS service uses Message Queue broker
+clusters to support high-availability JMS messaging in {productName}
+clusters. It describes the different cluster and broker types that are
+supported and how to configure them.
+
+The following topics are addressed here:
+
+* link:#gktgs[About Message Queue Broker Clusters]
+* link:#gktft[Configuring GlassFish Clusters to Use Message Queue Broker
+Clusters]
+* link:#gktge[To Configure a GlassFish Cluster to Use an Embedded or
+Local Conventional Broker Cluster With Master Broker]
+* link:#gktfr[To Configure a GlassFish Cluster to Use an Embedded or
+Local Conventional Broker Cluster of Peer Brokers]
+* link:#gkthc[To Change the Master Broker in an Embedded or Local Broker
+Cluster]
+* link:#gktgj[To Migrate Between Types of Embedded or Local Conventional
+Broker Clusters]
+* link:#gktfl[To Configure a GlassFish Cluster to Use a Local Enhanced
+Broker Cluster]
+* link:#abdby[To Configure a GlassFish Cluster to Use a Remote Broker
+Cluster]
+
+[[gktgs]][[GSHAG00311]][[about-message-queue-broker-clusters]]
+
+==== About Message Queue Broker Clusters
+
+The following discussion provides a brief overview of Message Queue
+broker clusters. For complete information, see "link:../openmq/mq-tech-over/broker-clusters.html#GMTOV00028[Broker
+Clusters]" in Open Message Queue Technical Overview.
+
+Message Queue supports two clustering models both of which provide a
+scalable message service, but with each providing a different level of
+message service availability:
+
+* Conventional broker clusters. A conventional broker cluster provides
+for service availability. When a broker fails, clients connected to the
+failed broker reconnect to another broker in the cluster. However,
+messages and state information stored in the failed broker cannot be
+recovered until the failed broker is brought back online. The broker
+failure can therefore result in a significant delay and in JMS message
+order semantics not being preserved.
++
+Message Queue supports two types of conventional cluster, based on where
+the cluster configuration change record is stored:
+
+** Conventional cluster with master broker. In a conventional cluster
+with a master broker, one of the brokers, designated as the master
+broker, stores and maintains the cluster configuration change record.
+The other brokers in the cluster must communicate with the master broker
+to keep abreast of changes to the cluster configuration. This is the
+simplest broker cluster to configure, and is the type of broker cluster
+that {productName} uses by default to support GlassFish clusters.
+
+** Conventional cluster of peer brokers. In a conventional cluster of
+peer brokers, the cluster configuration change record is stored in a
+JDBC data store accessible to all the brokers. Thus, brokers can access
+cluster configuration information whether any other brokers in the
+cluster are running or not.
+* Enhanced broker clusters. An enhanced broker cluster provides for data
+availability in addition to service availability. When a broker fails,
+another broker takes over the pending work of the failed broker. The
+failover broker has access to the failed broker's messages and state
+information. Clients connected to the failed broker reconnect to the
+failover broker. In an enhanced cluster, as compared to a conventional
+cluster, messages owned by the failed broker are delivered by the
+failover broker as soon as it takes over, and JMS message order
+semantics are preserved.
++
+By its very nature, an enhanced broker cluster is a cluster of peer
+brokers.
+
+
+[NOTE]
+====
+Despite the message service availability offered by both conventional
+and enhanced broker clusters, they do not provide a guarantee against
+failure and the possibility that certain failures, for example in the
+middle of a transaction, could require that some operations be repeated.
+It is the responsibility of the messaging application (both producers
+and consumers) to respond to JMS exceptions appropriately.
+For information about the kinds of exceptions that can occur and how to
+respond to them,
+see "link:../openmq/mq-dev-guide-java/client-design-and-features.html#GMJVG00229[Handling Exceptions When Failover Occurs]"
+in Open Message Queue Developer's Guide for Java Clients.
+====
+
+
+[[gktft]][[GSHAG00312]][[configuring-glassfish-clusters-to-use-message-queue-broker-clusters]]
+
+==== Configuring GlassFish Clusters to Use Message Queue Broker Clusters
+
+When a {productName} cluster is created, the JMS service
+automatically configures a Message Queue conventional broker cluster
+with master broker for the cluster, provided that the JMS host type in
+the {productName} cluster's configuration is Embedded or Local. The
+JMS service configures one Message Queue broker for each instance in the
+{productName} cluster, and designates as master broker the broker
+associated with the first instance created in the cluster. In the case
+of Local JMS hosts, the JMS service configures each broker to run on the
+same host as the instance with which it is associated. In the case of
+Embedded JMS hosts, the each broker inherently runs on the same host as
+the instance with which it is associated because it runs in the same JVM
+as the instance.
+
+The JMS service manages the lifecycle of Embedded and Local JMS hosts,
+and this management extends to the management of Message Queue broker
+clusters as Embedded and Local JMS hosts. For a GlassFish cluster whose
+configuration specifies Embedded or Local JMS host type, the JMS
+service:
+
+* Creates and manages one Message Queue broker for each instance in the
+GlassFish cluster, using this broker as the primary JMS host for the
+instance.
+* Maintains the JMS host list for each instance in the GlassFish cluster
+such that its primary JMS host appears first in its JMS host list.
+
+The JMS service supports the following types of Message Queue broker
+clusters with {productName} clusters, based on the JMS host type:
+
+Embedded::
+  * Conventional broker cluster with master broker (default)
+  * Conventional broker cluster of peer brokers
+Local::
+  * Conventional broker cluster with master broker (default)
+  * Conventional broker cluster of peer brokers
+  * Enhanced broker cluster
+Remote::
+  * Conventional broker cluster with master broker; brokers can differ
+  in number from GlassFish instances and can be located on other hosts
+  * Conventional broker cluster of peer brokers; brokers can differ in
+  number from GlassFish instances and can be located on other hosts
+  * Enhanced broker cluster; brokers can differ in number from GlassFish
+  instances and can be located on other hosts
+
+The following topics provide instructions for configuring broker
+clusters in all these contexts.
+
+[[gktge]][[GSHAG00155]][[to-configure-a-glassfish-cluster-to-use-an-embedded-or-local-conventional-broker-cluster-with-master-broker]]
+
+==== To Configure a GlassFish Cluster to Use an Embedded or Local Conventional Broker Cluster With Master Broker
+
+Use the `configure-jms-cluster` subcommand in remote `asadmin` mode to
+configure a conventional broker cluster with master broker to service a
+{productName} cluster that uses either Embedded or Local JMS hosts.
+
+Note that this configuration, with Embedded brokers, is the default for
+{productName} clusters.
+
+[[GSHAG431]]
+
+Before You Begin
+
+Perform the following steps after you have created the {productName}
+cluster, but before you have added instances to the cluster or started
+the cluster.
+
+
+[CAUTION]
+====
+Before using this procedure to reconfigure an existing cluster, you must
+follow the special procedures to migrate to another type of broker
+cluster, as described in link:#gktgj[To Migrate Between Types of
+Embedded or Local Conventional Broker Clusters]. Failing to perform
+these special procedures could lead to data loss or corruption and even
+render your setup unusable, depending on the JMS operations performed on
+the existing cluster.
+====
+
+1. Ensure that the server is running.
+Remote `asadmin` subcommands require a running server.
+
+2. Configure the {productName} cluster to use a Message Queue
+conventional broker cluster with master broker by using the
+link:reference-manual/configure-jms-cluster.html#GSRFM00008[`configure-jms-cluster`]
+subcommand:
++
+[source]
+----
+> asadmin configure-jms-cluster --clustertype=conventional
+--configstoretype=masterbroker glassfish-cluster-name
+----
+
+[[GSHAG432]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help configure-jms-cluster` at the command line.
+
+[[gktfr]][[GSHAG00156]][[to-configure-a-glassfish-cluster-to-use-an-embedded-or-local-conventional-broker-cluster-of-peer-brokers]]
+
+==== To Configure a GlassFish Cluster to Use an Embedded or Local Conventional Broker Cluster of Peer Brokers
+
+Use the `configure-jms-cluster` subcommand in remote `asadmin` mode to
+configure a conventional broker cluster of peer brokers to service a
+{productName} cluster that uses Embedded or Local JMS hosts.
+
+[[GSHAG433]]
+
+Before You Begin
+
+Perform the following steps after you have created the {productName}
+cluster, but before you have added instances to the cluster or started
+the cluster.
+
+
+[CAUTION]
+====
+Before using this procedure to reconfigure an existing cluster, you must
+follow the special procedures to migrate to another type of broker
+cluster, as described in link:#gktgj[To Migrate Between Types of
+Embedded or Local Conventional Broker Clusters]. Failing to perform
+these special procedures could lead to data loss or corruption and even
+render your setup unusable, depending on the JMS operations performed on
+the existing cluster.
+====
+
+
+1. Ensure that the server is running.
+Remote `asadmin` subcommands require a running server.
+
+2. Create a password file with the entry `AS_ADMIN_JMSDBPASSWORD`
+specifying the password of the database user. +
+For information about password file entries, see the
+link:reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] help page.
+
+3. Place a copy of, or a link to, the database's JDBC driver `.jar`
+file in the appropriate directory, depending on the JMS host type, on
+each host where a {productName} cluster instance is to run:
+* Embedded: as-install-parent``/glassfish/lib/install/applications/jmsra``
+* Local: as-install-parent``/mq/lib/ext``
+
+4. Configure the {productName} cluster to use a Message Queue
+conventional broker cluster with master broker by using the
+link:reference-manual/configure-jms-cluster.html#GSRFM00008[`configure-jms-cluster`]
+subcommand:
++
+[source]
+----
+> asadmin --passwordfile password-file configure-jms-cluster --clustertype=conventional
+--configstoretype=shareddb --dbvendor database-vendor-name --dbuser database-user-name
+--dburl database-url --property list-of-database-specific-properties glassfish-cluster-name
+----
+
+[[GSHAG434]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help configure-jms-cluster` at the command line.
+
+[[gkthc]][[GSHAG00157]][[to-change-the-master-broker-in-an-embedded-or-local-broker-cluster]]
+
+==== To Change the Master Broker in an Embedded or Local Broker Cluster
+
+Use the `change-master-broker` subcommand in remote `asadmin` mode to
+change the master broker to a different broker in a conventional broker
+cluster with master broker serving a {productName} cluster that uses
+Embedded or Local JMS hosts.
+
+Follow this procedure, for example, before you remove from a GlassFish
+cluster the instance associated with the current master broker.
+
+[[GSHAG435]]
+
+Before You Begin
+
+Although not an absolute requirement, you should make sure all GlassFish
+instances and Message Queue brokers in the cluster are running before
+using the `change-master-broker` command in order to avoid later
+internal configuration synchronization of any unavailable instance or
+broker.
+
+1. Ensure that the server is running.
+Remote `asadmin` subcommands require a running server.
+
+2. Change the master broker by using the
+link:reference-manual/change-master-broker.html#GSRFM00005[`change-master-broker`]
+subcommand:
++
+[source]
+----
+> asadmin change-master-broker glassfish-clustered-instance-name
+----
+
+[[GSHAG436]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help change-master-broker` at the command line.
+
+[[gktgj]][[GSHAG00158]][[to-migrate-between-types-of-embedded-or-local-conventional-broker-clusters]]
+
+==== To Migrate Between Types of Embedded or Local Conventional Broker Clusters
+
+If the need arises to convert from a conventional broker cluster with
+master broker to a conventional broker cluster of peer brokers, or the
+reverse, follow the instructions in "link:../openmq/mq-admin-guide/broker-clusters.html#GMADG00563[Managing
+Conventional Clusters]" in Open Message Queue Administration Guide.
+
+[[gktfl]][[GSHAG00159]][[to-configure-a-glassfish-cluster-to-use-a-local-enhanced-broker-cluster]]
+
+==== To Configure a GlassFish Cluster to Use a Local Enhanced Broker Cluster
+
+Use the `configure-jms-cluster` subcommand in remote `asadmin` mode to
+configure an enhanced broker cluster to service a {productName}
+cluster that uses Local JMS hosts.
+
+[[GSHAG437]]
+
+Before You Begin
+
+Perform the following steps after you have created the {productName}
+cluster, but before you have added instances to the cluster or started
+the cluster.
+
+[CAUTION]
+====
+Before using this procedure to reconfigure an existing cluster, you must
+follow the special procedures to migrate from a conventional broker
+cluster to an enhanced broker cluster, as described in
+"link:../openmq/mq-admin-guide/broker-clusters.html#GMADG00565[Converting a Conventional Cluster to an Enhanced
+Cluster]" in Open Message Queue Administration Guide. Failing to perform
+these special procedures could lead to data loss or corruption and even
+render your setup unusable, depending on the JMS operations performed on
+the existing cluster.
+====
+
+1. Ensure that the server is running.
+Remote `asadmin` subcommands require a running server.
+
+2. Create a password file with the entry `AS_ADMIN_JMSDBPASSWORD`
+specifying the password of the database user. +
+For information about password file entries, see the
+link:reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] help page.
+
+3. Place a copy of, or a link to, the database's JDBC driver `.jar`
+file in the as-install-parent``/mq/lib/ext`` directory on each host where
+a {productName} cluster instance is to run.
+
+4. Configure the {productName} cluster to use a Message Queue
+enhanced broker cluster by using the
+link:reference-manual/configure-jms-cluster.html#GSRFM00008[`configure-jms-cluster`]
+subcommand:
++
+[source]
+----
+> asadmin --passwordfile password-file configure-jms-cluster --clustertype=enhanced
+--configstoretype=shareddb --messagestoretype=jdbc
+--dbvendor database-vendor-name --dbuser database-user-name --dburl database-url
+--property list-of-database-specific-properties glassfish-cluster-name
+----
+
+[[GSHAG438]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help configure-jms-cluster` at the command line.
+
+[[abdby]][[GSHAG00160]][[to-configure-a-glassfish-cluster-to-use-a-remote-broker-cluster]]
+
+==== To Configure a GlassFish Cluster to Use a Remote Broker Cluster
+
+[[GSHAG439]]
+
+Before You Begin
+
+Perform the following steps after you have:
+
+* Used Message Queue to create a broker cluster.
+* Created the {productName} cluster, but not yet created instances
+for the cluster.
+
+1. Ensure that the server is running.
+The remote subcommands used in this procedure require a running server.
+
+2. Delete the `default_JMS_host` JMS host by using the
+link:reference-manual/delete-jms-host.html#GSRFM00091[`delete-jms-host`] subcommand:
++
+[source]
+----
+> asadmin delete-jms-host --target glassfish-cluster-name default_JMS_host
+----
+
+3. Create a JMS host for each broker in the broker cluster by using the
+link:reference-manual/create-jms-host.html#GSRFM00039[`create-jms-host`] subcommand. +
+For each broker, use an `asadmin create-jms-host` of the form:
++
+[source]
+----
+> asadmin create-jms-host --target glassfish-cluster-name --mqhost broker-host
+--mqport broker-port --mquser mq-user --mqpassword mq-user-password
+jms-host-name-for-broker
+----
+
+4. Start the brokers in the cluster by using the Message Queue
+`imqbrokerd` command, as described in
+"link:../openmq/mq-admin-guide/broker-clusters.html#GMADG00254[Managing Broker Clusters]"
+in Open Message Queue Administration Guide.
+
+5. Create instances in the {productName} cluster, as described in
+link:instances.html#gkqch[To Create an Instance Centrally] and
+link:instances.html#gkqbl[To Create an Instance Locally].
+
+[[abdbv]][[GSHAG00213]][[connection-failover]]
+
+=== Connection Failover
+
+The use of Message Queue broker clusters provides JMS connection
+failover, including several options that control how connection failures
+are handled.
+
+Use the Administration Console's Java Message Service page to configure
+these options. To display this page, click the configuration for the
+GlassFish cluster or instance in the navigation pane, and then click the
+Java Message Service link on the Configuration page.
+
+The way in which connection failover operates depends on whether the
+broker cluster is configured to be conventional or enhanced:
+
+* In a conventional cluster, when a broker fails, clients may reconnect
+to any other broker in the cluster. The Reconnect field specifies
+whether reconnection should take place, and the Address List Behavior
+and Address List Iterations fields specify how the client chooses what
+broker to fail over to.
+* In an enhanced cluster, when a broker fails, another broker
+automatically takes over its messages and clients. Clients automatically
+fail over to the appropriate broker. The Reconnect, Address List
+Behavior and Address List Iterations fields are ignored.
+
+For more information on connection failover, including how failover on
+conventional clusters differs from failover on enhanced clusters, see
+"link:../openmq/mq-admin-guide/administered-objects.html#GMADG00087[Automatic Reconnection]" in Open Message Queue
+Administration Guide.
+
+Reconnect::
+  Applies only to conventional clusters. Enables reconnection and
+  connection failover. When disabled, the Java Message Service does not
+  attempt to reconnect if a connection fails.
+Reconnect Interval::
+  Specifies the number of seconds between reconnection attempts. If it
+  is too short, this time interval does not give a broker time to
+  recover. If it is too long, the wait time might represent an
+  unacceptable delay. The default value is 5 seconds.
+Reconnect Attempts::
+  Specifies the number of attempts to connect (or reconnect) to a
+  particular JMS host before trying another host in the JMS host list.
+  The host list is also known as the Address List. Hosts are chosen from
+  the address list either in order or randomly, depending on the setting
+  of Address List Behavior.
+Address List Behavior::
+  For conventional clusters, this field specifies how the Java Message
+  Service selects which JMS host in the JMS hosts list to initially
+  connect to, and if the broker fails, how the Java Message Service
+  selects which JMS host in the JMS hosts list to fail over to. +
+  For enhanced clusters, this field specifies how the Java Message
+  Service selects which JMS host in the JMS hosts list to initially
+  connect to. +
+  When performing initial connection or, for conventional clusters only,
+  when performing failover, then if this attribute is set to Priority,
+  the Java Message Service tries to connect to the first JMS host
+  specified in the JMS hosts list and uses another one only if the first
+  one is not available. If this attribute is set to Random, the Java
+  Message Service selects the JMS host randomly from the JMS hosts list.
+  If that host is not available, another one is chosen randomly. +
+  The default for Embedded and Local JMS host types is Priority, and the
+  default for the Remote JMS host type is Random. +
+  For Embedded and Local JMS host types, the Java Message Service
+  ensures that the Message Queue broker servicing a clustered instance
+  appears first in that instance's JMS host list. +
+  Thus, having Priority as the default Address List Behavior ensures
+  that an application deployed to a clustered instance will always try
+  to create its initial connection to that instance's co-located broker. +
+  If there are many clients attempting a connection using the same
+  connection factory, use the Random setting to prevent them from all
+  attempting to create their initial connection to the same JMS host.
+Address List Iterations::
+  For conventional clusters, this field specifies the number of times
+  the Java Message Service iterates through the JMS hosts list in an
+  effort to establish its initial connection. If the broker fails, this
+  field specifies the number of times the Java Message Service iterates
+  through the JMS hosts list in an effort to fail over to another
+  broker. +
+  For enhanced clusters, this field specifies the number of times the
+  Java Message Service iterates through the JMS hosts list in an effort
+  to establish its initial connection. If the broker fails, this field
+  is not used when performing reconnection.
+
+You can override these settings using JMS connection factory settings.
+For details, see "link:administration-guide/jms.html#GSADG00598[Administering JMS Connection
+Factories and Destinations]" in {productName}
+Administration Guide.
+
+[[abdbw]][[GSHAG00214]][[load-balanced-delivery-to-mdbs]]
+
+=== Load-Balanced Delivery to MDBs
+
+When a message-driven bean (MDB) application is deployed to a GlassFish
+cluster, incoming messages are delivered randomly to MDBs without regard
+to the cluster instances in which they are running.
+
+If the MDB is configured to receive messages from a durable or
+non-durable subscription on a topic, then only one MDB instance across
+the whole GlassFish cluster will receive each message.
+
+For more information about these features, see
+"link:../openmq/mq-admin-guide/jmsra-properties.html#GMADG00300[
+About Shared Topic Subscriptions for Clustered Containers]"
+in Open Message Queue Administration Guide.
diff --git a/docs/ha-administration-guide/src/main/asciidoc/loe.adoc b/docs/ha-administration-guide/src/main/asciidoc/loe.adoc
new file mode 100644
index 0000000..c5f4913
--- /dev/null
+++ b/docs/ha-administration-guide/src/main/asciidoc/loe.adoc
@@ -0,0 +1,130 @@
+type=page
+status=published
+title=List of Examples
+next=title.html
+prev=toc.html
+~~~~~~
+
+= List of Examples
+
+[[list-of-examples]]
+== List of Examples
+
+* link:ssh-setup.html#sthref7[2-1 Creating an Alias for the Windows
+User's Password]
+* link:ssh-setup.html#sthref8[2-2 Testing the Connection Over DCOM to a
+Remote Host]
+* link:ssh-setup.html#gksnj[2-3 Setting the Home Directory for the MKS
+Toolkit User]
+* link:ssh-setup.html#gkspo[2-4 Determining if the sshd Daemon Is Running
+on an Oracle Solaris System]
+* link:ssh-setup.html#gkssf[2-5 Determining if the sshd Daemon Is Running
+on a Linux System]
+* link:ssh-setup.html#gktat[2-6 Setting Up Public Key Authentication
+Without Encryption]
+* link:ssh-setup.html#gktav[2-7 Setting Up Encrypted Public Key
+Authentication]
+* link:ssh-setup.html#gktba[2-8 Creating an Alias for the SSH User's
+Password]
+* link:ssh-setup.html#sthref9[2-9 Copying a {productName} Installation
+to Multiple DCOM-Enabled Hosts]
+* link:ssh-setup.html#sthref10[2-10 Copying a {productName}
+Installation to Multiple SSH-Enabled Hosts]
+* link:ssh-setup.html#sthref11[2-11 Removing {productName} Software
+From Multiple DCO\M-Enabled Hosts]
+* link:ssh-setup.html#sthref12[2-12 Removing {productName} Software
+From Multiple SSH-Enabled Hosts]
+* link:nodes.html#sthref13[3-1 Creating a DCOM Node]
+* link:nodes.html#sthref14[3-2 Listing Basic Information About All DCOM
+Nodes in a Domain]
+* link:nodes.html#sthref15[3-3 Listing Detailed Information About All
+DCOM Nodes in a Domain]
+* link:nodes.html#sthref16[3-4 Testing if a DCOM Node Is Reachable]
+* link:nodes.html#sthref17[3-5 Deleting a DCOM Node]
+* link:nodes.html#gksih[3-6 Creating an SSH Node]
+* link:nodes.html#gkskt[3-7 Listing Basic Information About All SSH Nodes
+in a Domain]
+* link:nodes.html#gkske[3-8 Listing Detailed Information About All SSH
+Nodes in a Domain]
+* link:nodes.html#gkshk[3-9 Testing if an SSH Node Is Reachable]
+* link:nodes.html#gksjg[3-10 Deleting an SSH Node]
+* link:nodes.html#gkshu[3-11 Creating a CONFIG Node]
+* link:nodes.html#gkskp[3-12 Listing Basic Information About All CONFIG
+Nodes in a Domain]
+* link:nodes.html#gksjs[3-13 Listing Detailed Information About All
+CONFIG Nodes in a Domain]
+* link:nodes.html#gksla[3-14 Deleting a CONFIG Node]
+* link:nodes.html#sthref18[3-15 Updating a DCOM Node]
+* link:nodes.html#gkslc[3-16 Updating an SSH Node]
+* link:nodes.html#gkskc[3-17 Updating a CONFIG Node]
+* link:nodes.html#gkshw[3-18 Changing a CONFIG Node to an SSH Node]
+* link:clusters.html#gklgw[4-1 Checking the Health of Instances in a
+Cluster]
+* link:clusters.html#gklhv[4-2 Validating That Multicast Transport Is
+Available for a Cluster]
+* link:clusters.html#sthref19[4-3 Discovering a Cluster When Multiple
+Instances are Running on a Host]
+* link:clusters.html#sthref20[4-4 Discovering a Cluster by Specifying a
+List of IP Addresses]
+* link:clusters.html#sthref21[4-5 Discovering a Cluster by Generating a
+List of Locations of Instances]
+* link:clusters.html#gkqaz[4-6 Creating a Cluster for a Network in Which
+Multicast Transport Is Available]
+* link:clusters.html#gkqiq[4-7 Creating a Cluster and Setting GMS Options
+for a Network in Which Multicast Transport Is Available]
+* link:clusters.html#gksfc[4-8 Listing All Clusters in a Domain]
+* link:clusters.html#gkhsp[4-9 Listing All Clusters That Are Associated
+With a Node]
+* link:clusters.html#gkqkr[4-10 Deleting a Cluster]
+* link:instances.html#gkqmv[5-1 Creating a Clustered Instance Centrally]
+* link:instances.html#gksfe[5-2 Listing Basic Information About All
+{productName} Instances in a Domain]
+* link:instances.html#gkabz[5-3 Listing Detailed Information About All
+{productName} Instances in a Domain]
+* link:instances.html#gkqms[5-4 Deleting an Instance Centrally]
+* link:instances.html#gkqml[5-5 Starting a Cluster]
+* link:instances.html#gkqmn[5-6 Stopping a Cluster]
+* link:instances.html#gkqoa[5-7 Starting an Individual Instance
+Centrally]
+* link:instances.html#gkqpy[5-8 Stopping an Individual Instance
+Centrally]
+* link:instances.html#gkqqt[5-9 Restarting an Individual Instance
+Centrally]
+* link:instances.html#gktfa[5-10 Creating a Clustered Instance Locally
+Without Specifying a Node]
+* link:instances.html#gkqps[5-11 Creating a Clustered Instance Locally]
+* link:instances.html#gkqqu[5-12 Deleting an Instance Locally]
+* link:instances.html#gkqpu[5-13 Starting an Individual Instance Locally]
+* link:instances.html#gkqoo[5-14 Stopping an Individual Instance Locally]
+* link:instances.html#gkqnt[5-15 Restarting an Individual Instance
+Locally]
+* link:instances.html#gksfu[5-16 Resynchronizing an Instance and the DAS
+Online]
+* link:instances.html#gksfr[5-17 Updating the Option for Locating a
+Configuration File]
+* link:instances.html#gksgl[5-18 config-files File]
+* link:instances.html#gksgg[5-19 Resynchronizing an Instance and the DAS
+Offline]
+* link:instances.html#gkmgw[5-20 Migrating an EJB Timer]
+* link:named-configurations.html#gkrhn[6-1 Creating a Named
+Configuration]
+* link:named-configurations.html#gkrhp[6-2 Listing All Named
+Configurations in a Domain]
+* link:named-configurations.html#gkrfz[6-3 Listing the Targets of a Named
+Configuration]
+* link:named-configurations.html#gkrgs[6-4 Deleting a Named
+Configuration]
+* link:named-configurations.html#gkrky[6-5 Modifying a Property of a
+Named Configuration]
+* link:named-configurations.html#gkrma[6-6 Modifying a Port Number for an
+Instance]
+* link:http-load-balancing.html#gktpu[7-1 httpd.conf File for Load
+Balancing]
+* link:http-load-balancing.html#gktpe[7-2 workers.properties File for
+Load Balancing]
+* link:session-persistence-and-failover.html#fxjqx[9-1 Example of an EJB
+Deployment Descriptor With Availability Enabled]
+* link:session-persistence-and-failover.html#fxjqg[9-2 Example of EJB
+Deployment Descriptor Specifying Methods Checkpointing]
+* link:rmi-iiop.html#gfohj[11-1 Setting Load-Balancing Weights for
+RMI-IIOP Weighted Round-Robin Load Balancing]
diff --git a/docs/ha-administration-guide/src/main/asciidoc/named-configurations.adoc b/docs/ha-administration-guide/src/main/asciidoc/named-configurations.adoc
new file mode 100644
index 0000000..9d86605
--- /dev/null
+++ b/docs/ha-administration-guide/src/main/asciidoc/named-configurations.adoc
@@ -0,0 +1,673 @@
+type=page
+status=published
+title=Administering Named Configurations
+next=http-load-balancing.html
+prev=instances.html
+~~~~~~
+
+= Administering Named Configurations
+
+[[GSHAG00007]][[abdjk]]
+
+[[administering-named-configurations]]
+== 6 Administering Named Configurations
+
+A named configuration is a set of configuration information for
+{productName} instances and clusters. A configuration sets port
+numbers for listeners that an instance or a cluster uses and defines
+settings for items such as the EJB container, security, logging, and
+monitoring. Applications and resources are not defined in named configurations.
+
+{productName} enables you to create configurations for use by
+clusters and instances. {productName} creates configurations
+automatically for clusters and instances that do not reference an
+existing configuration. You can modify any existing named configuration
+regardless of how the configuration was created.
+
+The following topics are addressed here:
+
+* link:#abdjl[About Named Configurations]
+* link:#abdjq[Creating, Listing, and Deleting Named Configurations]
+* link:#gkrgf[Modifying Properties for Named Configurations and Instances]
+
+[[abdjl]][[GSHAG00191]][[about-named-configurations]]
+
+=== About Named Configurations
+
+Configurations exist in a domain. Multiple {productName} instances or
+clusters in the domain can reference the same configuration, or they can
+have separate configurations. To ensure that the environment in a
+cluster's instances is homogenous, all instances in the cluster inherit
+the cluster's configuration.
+
+[[abdjm]][[GSHAG00268]][[types-of-named-configurations]]
+
+==== Types of Named Configurations
+
+Each named configuration is one of the following types of configuration:
+
+Standalone configuration::
+  A standalone configuration is referenced by only one instance or
+  cluster and is not shared with any other instances or clusters.
++
+[NOTE]
+====
+A configuration that is referenced by only one cluster is a standalone
+configuration, even if the cluster contains multiple instances.
+====
+
+Shared configuration::
+  A shared configuration is referenced by multiple instances or clusters.
+
+The type of an unclustered instance is determined by the type of the
+configuration that the instance references. For more information, see
+link:instances.html#gkrbn[Types of {productName} Instances].
+
+[[abdjn]][[GSHAG00269]][[the-default-config-configuration]]
+
+==== The `default-config` Configuration
+
+The `default-config` configuration is a special configuration that acts
+as a template for creating named configurations. Clusters and instances
+cannot refer to the `default-config` configuration. The `default-config`
+configuration can only be copied to create configurations.
+
+[[abdjo]][[GSHAG00270]][[automatically-created-configurations]]
+
+==== Automatically Created Configurations
+
+When you create a cluster or an instance, you can choose whether to
+specify an existing configuration that the new cluster or instance will
+reference. If you choose to create a cluster or an instance without
+specifying an existing configuration, {productName} automatically
+creates a configuration for the cluster or instance. For more
+information, see the following sections:
+
+* link:clusters.html#gkqdm[To Create a Cluster]
+* link:instances.html#gkqch[To Create an Instance Centrally]
+* link:instances.html#gkqbl[To Create an Instance Locally]
+
+{productName} automatically creates a configuration by copying the
+`default-config` configuration. If you require an instance or cluster to
+reference a copy of a different configuration, copy the configuration
+and specify the copy when you create the instance or cluster. For
+information about how to copy a configuration, see link:#abdjr[To Create
+a Named Configuration].
+
+{productName} assigns the name cluster-or-instance`-config` to an
+automatically created configuration. cluster-or-instance is the name of
+the cluster or instance for which the configuration is created. The
+`server-config` configuration is automatically created for the domain
+administration server (DAS) when the domain is created.
+
+[[gdgca]][[GSHAG00271]][[directory-for-configuration-synchronization]]
+
+==== Directory for Configuration Synchronization
+
+When a named configuration is created, {productName} creates a
+configuration directory on the domain administration server (DAS) at
+domain-dir``/config/``config-name.
+
+domain-dir::
+  The directory in which the domain's configuration is stored.
+config-name::
+  The name that was assigned to the configuration when the configuration was created.
+
+This contents of this directory are synchronized to all instances that
+inherit or reference the configuration.
+
+[[abdjq]][[GSHAG00192]][[creating-listing-and-deleting-named-configurations]]
+
+=== Creating, Listing, and Deleting Named Configurations
+
+{productName} enables you to create configurations for use by
+clusters and instances, obtain information about configurations, and
+delete configurations that are no longer required.
+
+The following topics are addressed here:
+
+* link:#abdjr[To Create a Named Configuration]
+* link:#gkrgg[To List the Named Configurations in a Domain]
+* link:#abdju[To List the Targets of a Named Configuration]
+* link:#abdjv[To Delete a Named Configuration]
+
+[[abdjr]][[GSHAG00128]][[to-create-a-named-configuration]]
+
+==== To Create a Named Configuration
+
+Use the `copy-config` subcommand in remote mode to create a named
+configuration by copying an existing configuration.
+
+{productName} requires you to create a configuration by copying a
+configuration because a configuration contains many required settings.
+The newly created configuration is identical to the configuration that
+you copy until you change its configuration settings.
+
+
+[TIP]
+====
+Create a named configuration only if you plan to share the configuration
+among multiple unclustered instances or clusters, or if you are using a
+configuration to preconfigure GMS settings. Otherwise, create clusters
+and instances without specifying an existing configuration.
+If no configuration is specified, {productName} creates a copy of the
+default configuration for the cluster or instance.
+
+For more information, see the following sections:
+
+* link:clusters.html#gkoac[To Preconfigure Nondefault GMS Configuration Settings]
+* link:clusters.html#gkqdm[To Create a Cluster]
+* link:instances.html#gkqch[To Create an Instance Centrally]
+* link:instances.html#gkqbl[To Create an Instance Locally]
+====
+
+1. Ensure that the DAS is running. Remote subcommands require a running server.
+2. Run the `copy-config` subcommand.
++
+[NOTE]
+====
+Only the options that are required to complete this task are provided in
+this step. For information about all the options for configuring the
+named configuration, see the link:reference-manual/copy-config.html#GSRFM00011[`copy-config`(1)]
+help page.
+====
++
+[source]
+----
+asadmin> copy-config source-config-name destination-config-name
+----
+source-config-name::
+  The name of the configuration that you are copying. You must specify a
+  configuration to copy even if you are copying the default
+  configuration. The configuration must already exist.
+destination-config-name::
+  Your choice of name for the configuration that you are creating by
+  copying the source configuration.
+
+[[GSHAG00059]][[gkrhn]]
+Example 6-1 Creating a Named Configuration
+
+This example creates the named configuration `clusterpresets-config` by
+copying the default configuration.
+
+[source]
+----
+asadmin> copy-config default-config clusterpresets-config
+Command copy-config executed successfully.
+----
+
+[[GSHAG418]]
+
+See Also
+
+* link:clusters.html#gkoac[To Preconfigure Nondefault GMS Configuration Settings]
+* link:clusters.html#gkqdm[To Create a Cluster]
+* link:instances.html#gkqch[To Create an Instance Centrally]
+* link:instances.html#gkqbl[To Create an Instance Locally]
+* link:reference-manual/copy-config.html#GSRFM00011[`copy-config`(1)]
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help copy-config` at the command line.
+
+[[gkrgg]][[GSHAG00129]][[to-list-the-named-configurations-in-a-domain]]
+
+==== To List the Named Configurations in a Domain
+
+Use the `list-configs` subcommand in remote mode to list existing named
+configurations in a domain.
+
+1. Ensure that the DAS is running. Remote subcommands require a running server.
+2. Run the link:reference-manual/list-configs.html#GSRFM00156[`list-configs`] subcommand.
++
+[source]
+----
+asadmin> list-configs
+----
+
+[[GSHAG00060]][[gkrhp]]
+Example 6-2 Listing All Named Configurations in a Domain
+
+This example lists all named configurations in the current domain.
+
+[source]
+----
+asadmin> list-configs
+server-config
+default-config
+ymlcluster-config
+clusterpresets-config
+Command list-configs executed successfully.
+----
+
+[[GSHAG419]]
+
+See Also
+
+link:reference-manual/list-configs.html#GSRFM00156[`list-configs`(1)]
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-configs` at the command line.
+
+[[abdju]][[GSHAG00130]][[to-list-the-targets-of-a-named-configuration]]
+
+==== To List the Targets of a Named Configuration
+
+Use the `list-clusters` subcommand and the `list-instances` subcommand
+in remote mode to list the targets of a named configuration.
+
+The targets of a named configuration are the clusters and {productName} instances that reference the configuration.
+
+1. Ensure that the DAS is running. Remote subcommands require a running server.
+
+2. List the clusters that refer to the configuration.
++
+[source]
+----
+asadmin> list-clusters config-name
+----
+config-name::
+  The name of the configuration whose targets you are listing.
+
+3. List the instances that refer to the configuration.
++
+[source]
+----
+asadmin> list-instances config-name
+----
+config-name::
+  The name of the configuration whose targets you are listing.
+
+[[GSHAG00061]][[gkrfz]]
+Example 6-3 Listing the Targets of a Named Configuration
+
+This example shows that the cluster `ymlcluster` and the instances
+`yml-i1` and `yml-i2` reference the named configuration
+`ymlcluster-config`.
+
+[source]
+----
+asadmin> list-clusters ymlcluster-config
+ymlcluster partially running
+Command list-clusters executed successfully.
+asadmin> list-instances ymlcluster-config
+yml-i1   running
+yml-i2   not running
+Command list-instances executed successfully.
+----
+
+[[GSHAG420]]
+
+See Also
+
+* link:reference-manual/list-clusters.html#GSRFM00153[`list-clusters`(1)]
+* link:reference-manual/list-instances.html#GSRFM00170[`list-instances`(1)]
+
+You can also view the full syntax and options of the subcommands by
+typing the following commands at the command line:
+
+* `asadmin help list-clusters`
+* `asadmin help list-instances`
+
+[[abdjv]][[GSHAG00131]][[to-delete-a-named-configuration]]
+
+==== To Delete a Named Configuration
+
+Use the `delete-config` subcommand in remote mode to delete an existing
+named configuration from the configuration of the DAS.
+
+You cannot delete the `default-config` configuration.
+
+
+[NOTE]
+====
+A standalone configuration that was created automatically for a cluster
+or a {productName} instance is deleted when the cluster or instance is deleted.
+====
+
+
+[[GSHAG421]]
+
+Before You Begin
+
+Ensure that no clusters or instances refer to the configuration. If a
+cluster or instance refers to the configuration and is no longer
+required, delete the cluster or instance. For information about how to
+delete an instance and how to delete a cluster, see the following
+sections:
+
+* link:instances.html#gkqcw[To Delete an Instance Centrally]
+* link:instances.html#gkqed[To Delete an Instance Locally]
+* link:clusters.html#gkqcp[To Delete a Cluster]
+
+1. Ensure that the DAS is running. Remote subcommands require a running server.
+
+2. Confirm that no clusters refer to the configuration that you are deleting.
++
+[source]
+----
+asadmin> list-clusters config-name
+----
+config-name::
+  The name of the configuration that you are deleting.
+
+3. Confirm that no instances refer to the configuration that you are
+deleting.
++
+[source]
+----
+asadmin> list-instances config-name
+----
+config-name::
+  The name of the configuration that you are deleting.
+
+4. Run the link:reference-manual/delete-config.html#GSRFM00069[`delete-config`] subcommand.
++
+[source]
+----
+asadmin> delete-config config-name
+----
+config-name::
+  The name of the configuration that you are deleting.
+
+[[GSHAG00062]][[gkrgs]]
+Example 6-4 Deleting a Named Configuration
+
+This example confirms that no clusters or instances refer to the
+configuration `clusterpresets-config` and then deletes the
+configuration.
+
+[source]
+----
+asadmin> list-clusters clusterpresets-config
+Nothing to list
+Command list-clusters executed successfully.
+asadmin> list-instances clusterpresets-config
+Nothing to list.
+Command list-instances executed successfully.
+asadmin> delete-config clusterpresets-config
+Command delete-config executed successfully.
+----
+
+[[GSHAG422]]
+
+See Also
+
+* link:instances.html#gkqcw[To Delete an Instance Centrally]
+* link:instances.html#gkqed[To Delete an Instance Locally]
+* link:clusters.html#gkqcp[To Delete a Cluster]
+* link:reference-manual/delete-config.html#GSRFM00069[`delete-config`(1)]
+* link:reference-manual/list-clusters.html#GSRFM00153[`list-clusters`(1)]
+* link:reference-manual/list-instances.html#GSRFM00170[`list-instances`(1)]
+
+You can also view the full syntax and options of the subcommands by
+typing the following commands at the command line:
+
+* `asadmin help delete-config`
+* `asadmin help list-clusters`
+* `asadmin help list-instances`
+
+[[gkrgf]][[GSHAG00193]][[modifying-properties-for-named-configurations-and-instances]]
+
+=== Modifying Properties for Named Configurations and Instances
+
+The properties in a named configuration define port numbers for
+unclustered instances that reference the configuration or clustered
+instances that inherit the configuration. An instance initially obtains
+port numbers from the configuration that the instance references or
+inherits. To avoid port conflicts, edit the properties of named
+configurations and instances.
+
+The following topics are addressed here:
+
+* link:#gkrls[Properties for Port Numbers in a Named Configuration]
+* link:#fxxvk[To Modify a Named Configuration's Properties]
+* link:#abdjt[To Modify Port Numbers of an Instance]
+
+[[gkrls]][[GSHAG00272]][[properties-for-port-numbers-in-a-named-configuration]]
+
+==== Properties for Port Numbers in a Named Configuration
+
+The default configuration `default-config` contains properties that
+define the initial values of port numbers in a configuration that is
+copied from `default-config`. When an instance or a cluster that
+references the configuration is created, these properties are set for
+the instance.
+
+You can create additional system properties for a configuration either
+by specifying the `--systemproperties` option of the
+link:reference-manual/copy-config.html#GSRFM00011[`copy-config`] subcommand or by using the
+link:reference-manual/create-system-properties.html#GSRFM00059[`create-system-properties`] subcommand. To reference a
+system property from the configuration, use the `${`prop-name`}`
+notation, where prop-name is the name of the system property.
+
+For example, if a configuration defines additional HTTP listeners, use
+system properties to define the ports for those listeners. However,
+these properties are not set automatically when an instance or a cluster
+that references the configuration is created. You must set these
+properties explicitly when you create the instance or cluster.
+
+The properties in a named configuration that define port numbers are as
+follows:
+
+`ASADMIN_LISTENER_PORT`::
+  This property specifies the port number of the HTTP port or HTTPS port
+  through which the DAS connects to the instance to manage the instance.
+  Valid values are 1-65535. On UNIX, creating sockets that listen on
+  ports 1-1024 requires superuser privileges.
+`HTTP_LISTENER_PORT`::
+  This property specifies the port number of the port that is used to
+  listen for HTTP requests. Valid values are 1-65535. On UNIX, creating
+  sockets that listen on ports 1-1024 requires superuser privileges.
+`HTTP_SSL_LISTENER_PORT`::
+  This property specifies the port number of the port that is used to
+  listen for HTTPS requests. Valid values are 1-65535. On UNIX, creating
+  sockets that listen on ports 1-1024 requires superuser privileges.
+`IIOP_LISTENER_PORT`::
+  This property specifies the port number of the port that is used for
+  IIOP connections. Valid values are 1-65535. On UNIX, creating sockets
+  that listen on ports 1-1024 requires superuser privileges.
+`IIOP_SSL_LISTENER_PORT`::
+  This property specifies the port number of the port that is used for
+  secure IIOP connections. Valid values are 1-65535. On UNIX, creating
+  sockets that listen on ports 1-1024 requires superuser privileges.
+`IIOP_SSL_MUTUALAUTH_PORT`::
+  This property specifies the port number of the port that is used for
+  secure IIOP connections with client authentication. Valid values are
+  1-65535. On UNIX, creating sockets that listen on ports 1-1024
+  requires superuser privileges.
+`JAVA_DEBUGGER_PORT`::
+  This property specifies the port number of the port that is used for
+  connections to the
+  http://java.sun.com/javase/technologies/core/toolsapis/jpda/[Java
+  Platform Debugger Architecture (JPDA)]
+  (`http://java.sun.com/javase/technologies/core/toolsapis/jpda/`)
+  debugger. Valid values are 1-65535. On UNIX, creating sockets that
+  listen on ports 1-1024 requires superuser privileges.
+`JMS_PROVIDER_PORT`::
+  This property specifies the port number for the Java Message Service
+  provider. Valid values are 1-65535. On UNIX, creating sockets that
+  listen on ports 1-1024 requires superuser privileges.
+`JMX_SYSTEM_CONNECTOR_PORT`::
+  This property specifies the port number on which the JMX connector
+  listens. Valid values are 1-65535. On UNIX, creating sockets that
+  listen on ports 1-1024 requires superuser privileges.
+`OSGI_SHELL_TELNET_PORT`::
+  This property specifies the port number of the port that is used for
+  connections to the
+  http://felix.apache.org/site/apache-felix-remote-shell.html[Apache
+  Felix Remote Shell]
+  (`http://felix.apache.org/site/apache-felix-remote-shell.html`). This
+  shell uses the Felix shell service to interact with the OSGi module
+  management subsystem. Valid values are 1-65535. On UNIX, creating
+  sockets that listen on ports 1-1024 requires superuser privileges.
+
+[[fxxvk]][[GSHAG00132]][[to-modify-a-named-configurations-properties]]
+
+==== To Modify a Named Configuration's Properties
+
+Use the `get` subcommand and the `set` subcommand in remote mode to
+modify a named configuration's properties.
+
+You might copy a configuration for use by instances that reside on the
+same host as instances that refer to the original configuration. In this
+situation, edit the properties of one of the configurations to ensure
+that instances that will refer to the configuration have the correct
+initial settings.
+
+If you change the port number in a configuration, the port number is
+changed for any instance that references or inherits the configuration.
+
+1. Ensure that the DAS is running. Remote subcommands require a running server.
+
+2. For each property that you are modifying, determine the current
+value and set the new value.
+[arabic]
+.. Determine the current value of the property.
++
+[source]
+----
+asadmin> get configs.config.config-name.system-property.property-name.value
+----
+config-name::
+  The name of the configuration whose properties you are modifying.
+property-name::
+  The name of the property that you are modifying. For a list of
+  available properties, see link:#gkrls[Properties for Port Numbers in a
+  Named Configuration].
+
+.. Set the property to its new value.
++
+[source]
+----
+asadmin> set
+configs.config.config-name.system-property.property-name.value=new-value
+----
+config-name::
+  The name of the configuration whose properties you are modifying.
+property-name::
+  The name of the property that you are modifying. For a list of
+  available properties, see link:#gkrls[Properties for Port Numbers in a
+  Named Configuration].
+new-value::
+  The value to which you are setting the property.
+
+[[GSHAG00063]][[gkrky]]
+Example 6-5 Modifying a Property of a Named Configuration
+
+This example changes the value of the `JMS_PROVIDER_PORT` property in
+the `clusterpresets-config` configuration from 27676 to 27678.
+
+[source]
+----
+asadmin> get
+configs.config.clusterpresets-config.system-property.JMS_PROVIDER_PORT.value
+configs.config.clusterpresets-config.system-property.JMS_PROVIDER_PORT.value=27676
+Command get executed successfully.
+asadmin> set
+configs.config.clusterpresets-config.system-property.JMS_PROVIDER_PORT.value=27678
+configs.config.clusterpresets-config.system-property.JMS_PROVIDER_PORT.value=27678
+Command set executed successfully.
+----
+
+[[GSHAG423]]
+
+See Also
+
+* link:reference-manual/get.html#GSRFM00139[`get`(1)]
+* link:reference-manual/set.html#GSRFM00226[`set`(1)]
+
+You can also view the full syntax and options of the subcommands by
+typing the following commands at the command line:
+
+* `asadmin help get`
+* `asadmin help set`
+
+[[abdjt]][[GSHAG00133]][[to-modify-port-numbers-of-an-instance]]
+
+==== To Modify Port Numbers of an Instance
+
+Use the `get` subcommand and the `set` subcommand in remote mode to
+modify the port numbers of an instance.
+
+The port numbers of a instance are initially set in the configuration
+that the instance references or inherits from its parent cluster.
+Multiple instances that reside on the same host must each listen on a
+unique port number. Therefore, if multiple instances that reference or
+inherit the same configuration reside on the same host, a port conflict
+prevents all except one of the instances from starting. To avoid port
+conflicts, modify the port numbers on which individual instances listen.
+
+If you modify an instance's port number and later modify the port number
+in the instance's configuration, the instance's port number remains
+unchanged.
+
+The port numbers of an instance are stored as Java system properties.
+When {productName} is started, it treats these properties in the same
+way as properties that are passed through the `-D` option of the Java
+application launcher.
+
+1. Ensure that the DAS is running. Remote subcommands require a running server.
+
+2. For each port number that you are modifying, determine the current
+value and set the new value.
+[arabic]
+.. Determine the current value of the port number.
++
+[source]
+----
+asadmin> get
+servers.server.instance-name.system-property.port-property.value
+----
+instance-name::
+  The name of the instance whose port numbers you are modifying.
+port-property::
+  The name of the property that corresponds to the port number that you
+  are modifying. For a list of available properties, see
+  link:#gkrls[Properties for Port Numbers in a Named Configuration].
+
+.. Set the port number to its new value.
++
+[source]
+----
+asadmin> get
+servers.server.instance-name.system-property.port-property.value=new-value
+----
+instance-name::
+  The name of the instance whose port numbers you are modifying.
+port-property::
+  The name of the property that corresponds to the port number that you
+  are modifying. For a list of available properties, see
+  link:#gkrls[Properties for Port Numbers in a Named Configuration].
+new-value::
+  The value to which you are setting the port number.
+
+[[GSHAG00064]][[gkrma]]
+Example 6-6 Modifying a Port Number for an Instance
+
+This example changes the port number of the HTTP port or the HTTPS port
+for administration of the `pmdsainst` instance from 24849 to 24859.
+
+[source]
+----
+asadmin> get
+servers.server.pmdsainst.system-property.ASADMIN_LISTENER_PORT.value
+servers.server.pmdsainst.system-property.ASADMIN_LISTENER_PORT.value=24849
+Command get executed successfully.
+asadmin> set
+servers.server.pmdsainst.system-property.ASADMIN_LISTENER_PORT.value=24859
+servers.server.pmdsainst.system-property.ASADMIN_LISTENER_PORT.value=24859
+Command set executed successfully.
+----
+
+[[GSHAG424]]
+
+See Also
+
+* link:reference-manual/get.html#GSRFM00139[`get`(1)]
+* link:reference-manual/set.html#GSRFM00226[`set`(1)]
+
+You can also view the full syntax and options of the subcommands by
+typing the following commands at the command line:
+
+* `asadmin help get`
+* `asadmin help set`
diff --git a/docs/ha-administration-guide/src/main/asciidoc/nodes.adoc b/docs/ha-administration-guide/src/main/asciidoc/nodes.adoc
new file mode 100644
index 0000000..e2ce365
--- /dev/null
+++ b/docs/ha-administration-guide/src/main/asciidoc/nodes.adoc
@@ -0,0 +1,1216 @@
+type=page
+status=published
+title=Administering {productName} Nodes
+next=clusters.html
+prev=ssh-setup.html
+~~~~~~
+
+= Administering {productName} Nodes
+
+[[GSHAG00004]][[gkrle]]
+
+
+[[administering-glassfish-server-nodes]]
+== 3 Administering {productName} Nodes
+
+A node represents a host on which the {productName} software is
+installed. A node must exist for every host on which {productName}
+instances reside. A node's configuration contains information about the
+host such as the name of the host and the location where the {productName} is installed on the host.
+
+The following topics are addressed here:
+
+* link:#gksgh[Types of {productName} Nodes]
+* link:#CHDBIHFJ[Creating, Listing, Testing, and Deleting `DCOM` Nodes]
+* link:#gkrkn[Creating, Listing, Testing, and Deleting `SSH` Nodes]
+* link:#gkrnp[Creating, Listing, and Deleting `CONFIG` Nodes]
+* link:#gksjd[Updating and Changing the Type of a Node]
+
+[[gksgh]][[GSHAG00179]][[types-of-glassfish-server-nodes]]
+
+=== Types of {productName} Nodes
+
+Each {productName} node is one of the following types of node:
+
+`DCOM`::
+  A `DCOM` node supports communication over the Distributed Component
+  Object Model (DCOM) remote protocol. The DCOM remote protocol is
+  available only on Windows systems. If DCOM is set up and you plan to
+  administer your {productName} instances centrally, the instances
+  must reside on `DCOM` nodes. +
+  A `DCOM` node's configuration contains the information that is
+  required to connect to the host through DCOM. This information
+  includes, for example, the user name of the Windows user and the port
+  number for DCOM connections to the host.
+`SSH`::
+  An `SSH` node supports communication over secure shell (SSH). If SSH
+  is set up and you plan to administer your {productName} instances
+  centrally, the instances must reside on `SSH` nodes. +
+  An `SSH` node's configuration contains the information that is
+  required to connect to the host through SSH. This information
+  includes, for example, the user name of the SSH user and the port
+  number for SSH connections to the host.
+`CONFIG`::
+  A `CONFIG` node does not support remote communication. If neither DCOM
+  nor SSH is set up and you plan to administer your instances locally,
+  the instances can reside on `CONFIG` nodes. You cannot use `CONFIG`
+  nodes for instances that you plan to administer centrally. +
+  Each domain contains a predefined `CONFIG` node that is named
+  ``localhost-``domain, where domain is the name of the domain. On the
+  host where the domain administration server (DAS) is running, this
+  node represents the local host.
+
+[[CHDBIHFJ]][[GSHAG463]][[creating-listing-testing-and-deleting-dcom-nodes]]
+
+=== Creating, Listing, Testing, and Deleting `DCOM` Nodes
+
+A `DCOM` node supports communication over DCOM. If DCOM is set up and
+you plan to administer your {productName} instances centrally, the
+instances must reside on `DCOM` nodes. For information about setting up
+DCOM, see link:ssh-setup.html#gkshg[Enabling Centralized Administration
+of {productName} Instances].
+
+{productName} enables you to create `DCOM` nodes for use by
+instances, obtain information about `DCOM` nodes, test if `DCOM` nodes
+are reachable, and delete `DCOM` nodes that are no longer required.
+
+The following topics are addressed here:
+
+* link:#CHDIGBJB[To Create a `DCOM` Node]
+* link:#CHDDCBEG[To List `DCOM` Nodes in a Domain]
+* link:#CHDIFJCC[To Test if a `DCOM` Node is Reachable]
+* link:#CHDCFHBA[To Delete a `DCOM` Node]
+
+[[CHDIGBJB]][[GSHAG464]][[to-create-a-dcom-node]]
+
+==== To Create a `DCOM` Node
+
+Use the `create-node-dcom` subcommand in remote mode to create a `DCOM` node.
+
+[[GSHAG465]]
+
+Before You Begin
+
+Ensure that the Windows user can use DCOM to connect to the host that
+the node will represent. By default, the `create-node-dcom` subcommand
+validates the node's parameters and the DCOM connection to the host.
+If the Windows user cannot use DCOM to connect to the host, the validation fails.
+
+
+[NOTE]
+====
+For information about how to determine whether the Windows user can use
+DCOM to connect to the host, see link:ssh-setup.html#CEGJFADH[To Test the
+Connection Over DCOM to a Remote Host].
+====
+
+
+1. Ensure that the DAS is running. Remote subcommands require a running server.
+
+2. Run the `create-node-dcom` subcommand. +
+Specify the file that contains the alias for the Windows user's password
+through the `--passwordfile` option of the `asadmin` utility. For more
+information about this file, see link:ssh-setup.html#CEGCDCEF[To Set Up
+Password Authentication for the Windows User].
++
+[NOTE]
+====
+Only the options that are required to complete this task are provided in
+this step. For information about all the options for configuring the
+node, see the link:reference-manual/create-node-dcom.html#GSRFM510[`create-node-dcom`(1)] help page.
+====
++
+[source]
+----
+C:\> asadmin --passwordfile filename create-node-dcom
+--nodehost node-host [--installdir install-dir ]
+node-name
+----
+filname::
+  The name of the file that contains the alias for the Windows user's
+  password.
+node-host::
+  The name of the host that the node represents. The name of the host
+  must be specified. Otherwise, an error occurs.
+install-dir::
+  The full path to the parent of the base installation directory of the
+  {productName} software on the host, for example, `C:\glassfish7`.
+  If the {productName} software is installed in the same directory on
+  the node's host and the DAS host, you can omit this option.
+node-name::
+  Your choice of name for the node that you are creating.
+
+[[GSHAG466]][[sthref13]]
+Example 3-1 Creating a `DCOM` Node
+
+This example creates the `DCOM` node `wpmdl1` to represent the host
+`wpmdl1.example.com`. The {productName} software is installed in the
+same directory on the DAS host and on the host `wpmdl1.example.com`.
+
+[source]
+----
+C:\> asadmin --passwordfile aspwalias.txt create-node-dcom
+--nodehost wpmdl1.example.com wpmdl1
+Command create-node-dcom executed successfully.
+----
+
+[[GSHAG467]]
+
+See Also
+
+* link:reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)]
+* link:reference-manual/create-node-dcom.html#GSRFM510[`create-node-dcom`(1)]
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-node-dcom` at the command line.
+
+[[GSHAG468]]
+
+Next Steps
+
+After creating a node, you can create instances on the node as explained
+in the following sections:
+
+* link:instances.html#gkqch[To Create an Instance Centrally]
+* link:instances.html#gkqbl[To Create an Instance Locally]
+
+[[CHDDCBEG]][[GSHAG469]][[to-list-dcom-nodes-in-a-domain]]
+
+==== To List `DCOM` Nodes in a Domain
+
+Use the `list-nodes-dcom` subcommand in remote mode to obtain
+information about existing `DCOM` nodes in a domain.
+
+
+[NOTE]
+====
+To obtain information about all existing nodes in a domain, use the
+link:reference-manual/list-nodes.html#GSRFM00187[`list-nodes`] subcommand.
+====
+
+
+1. Ensure that the DAS is running. Remote subcommands require a running server.
+
+2. Run the link:reference-manual/list-nodes-dcom.html#GSRFM693[`list-nodes-dcom`] subcommand.
++
+[source]
+----
+asadmin> list-nodes-dcom
+----
+
+[[GSHAG470]][[sthref14]]
+Example 3-2 Listing Basic Information About All `DCOM` Nodes in a Domain
+
+This example lists the name, type, and host of all `DCOM` nodes in the
+current domain.
+
+[source]
+----
+asadmin> list-nodes-dcom
+xkyd  DCOM  xkyd.example.com
+wpmdl2  DCOM  wpmdl2.example.com
+wpmdl1  DCOM  wpmdl1.example.com
+Command list-nodes-dcom executed successfully.
+----
+
+[[GSHAG471]][[sthref15]]
+Example 3-3 Listing Detailed Information About All `DCOM` Nodes in a
+Domain
+
+This example lists detailed information about all `DCOM` nodes in the
+current domain.
+
+[source]
+----
+asadmin> list-nodes-dcom --long=true
+NODE NAME    TYPE   NODE HOST            INSTALL DIRECTORY   REFERENCED BY
+xkyd         DCOM   xkyd.example.com     C:\glassfish7
+wpmdl2       DCOM   wpmdl2.example.com   C:\glassfish7       wdi2
+wpmdl1       DCOM   wpmdl1.example.com   C:\glassfish7       wdi1
+Command list-nodes-dcom executed successfully.
+----
+
+[[GSHAG472]]
+
+See Also
+
+* link:reference-manual/list-nodes.html#GSRFM00187[`list-nodes`(1)]
+* link:reference-manual/list-nodes-dcom.html#GSRFM693[`list-nodes-dcom`(1)]
+
+You can also view the full syntax and options of the subcommands by
+typing the following commands at the command line:
+
+* `asadmin help list-nodes`
+* `asadmin help list-nodes-dcom`
+
+[[CHDIFJCC]][[GSHAG473]][[to-test-if-a-dcom-node-is-reachable]]
+
+==== To Test if a `DCOM` Node is Reachable
+
+Use the `ping-node-dcom` subcommand in remote mode to test if a `DCOM`
+node is reachable.
+
+[[GSHAG474]]
+
+Before You Begin
+
+Ensure that DCOM is configured on the host where the DAS is running and
+on the host that the node represents.
+
+1. Ensure that the DAS is running. Remote subcommands require a running server.
+
+2. Run the `ping-node-dcom` subcommand.
++
+[NOTE]
+====
+Only the options that are required to complete this task are provided in
+this step. For information about all the options for testing the node,
+see the link:reference-manual/ping-node-dcom.html#GSRFM728[`ping-node-dcom`(1)] help page.
+====
++
+[source]
+----
+asadmin> ping-node-dcom node-name
+----
+node-name::
+  The name of the node to test.
+
+[[GSHAG475]][[sthref16]]
+Example 3-4 Testing if a `DCOM` Node Is Reachable
+
+This example tests if the `DCOM` node `wpmdl2` is reachable.
+
+[source]
+----
+asadmin> ping-node-dcom wpmdl2
+Successfully made DCOM connection to node wpmdl2 (wpmdl2.example.com)
+Command ping-node-dcom executed successfully.
+----
+
+[[GSHAG476]]
+
+See Also
+
+link:reference-manual/ping-node-dcom.html#GSRFM728[`ping-node-dcom`(1)]
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help ping-node-dcom` at the command line.
+
+[[CHDCFHBA]][[GSHAG477]][[to-delete-a-dcom-node]]
+
+==== To Delete a `DCOM` Node
+
+Use the `delete-node-dcom` subcommand in remote mode to delete a `DCOM` node.
+
+Deleting a node removes the node from the configuration of the DAS. The
+node's directories and files are deleted when the last {productName}
+instance that resides on the node is deleted.
+
+[[GSHAG478]]
+
+Before You Begin
+
+Ensure that no {productName} instances reside on the node that you
+are deleting. For information about how to delete an instance, see the
+following sections.
+
+* link:instances.html#gkqcw[To Delete an Instance Centrally]
+* link:instances.html#gkqed[To Delete an Instance Locally]
+
+1. Ensure that the DAS is running. Remote subcommands require a running server.
+
+2. Confirm that no instances reside on the node that you are deleting.
++
+[source]
+----
+asadmin> list-nodes-dcom --long=true
+----
+3. Run the olink:GSRFM00100[`delete-node-dcom`] subcommand.
++
+[source]
+----
+asadmin> delete-node-dcom node-name
+----
+node-name::
+  The name of the node that you are deleting.
+
+[[GSHAG479]][[sthref17]]
+Example 3-5 Deleting a `DCOM` Node
+
+This example confirms that no instances reside on the `DCOM` node `xkyd`
+and deletes the node `xkyd`.
+
+[source]
+----
+asadmin> list-nodes-dcom --long=true
+NODE NAME    TYPE   NODE HOST            INSTALL DIRECTORY   REFERENCED BY
+xkyd         DCOM   xkyd.example.com     C:\glassfish7
+wpmdl2       DCOM   wpmdl2.example.com   C:\glassfish7       wdi2
+wpmdl1       DCOM   wpmdl1.example.com   C:\glassfish7       wdi1
+Command list-nodes-dcom executed successfully.
+asadmin> delete-node-dcom xkyd
+Command delete-node-dcom executed successfully.
+----
+
+[[GSHAG480]]
+
+See Also
+
+* link:instances.html#gkqcw[To Delete an Instance Centrally]
+* link:instances.html#gkqed[To Delete an Instance Locally]
+* link:reference-manual/delete-node-dcom.html#GSRFM569[`delete-node-dcom`(1)]
+* link:reference-manual/list-nodes-dcom.html#GSRFM693[`list-nodes-dcom`(1)]
+
+You can also view the full syntax and options of the subcommands by
+typing the following commands at the command line:
+
+* `asadmin help delete-node-dcom`
+* `asadmin help list-nodes-dcom`
+
+[[gkrkn]][[GSHAG00180]][[creating-listing-testing-and-deleting-ssh-nodes]]
+
+=== Creating, Listing, Testing, and Deleting `SSH` Nodes
+
+An `SSH` node supports communication over SSH. If SSH is set up and you
+plan to administer your {productName} instances centrally, the
+instances must reside on `SSH` nodes. For information about setting up
+SSH, see link:ssh-setup.html#gkshg[Enabling Centralized Administration of
+{productName} Instances].
+
+
+[NOTE]
+====
+Windows systems also support communications over DCOM as an alternative to SSH.
+====
+
+
+{productName} enables you to create `SSH` nodes for use by instances,
+obtain information about `SSH` nodes, test if `SSH` nodes are reachable,
+and delete `SSH` nodes that are no longer required.
+
+The following topics are addressed here:
+
+* link:#gkrnf[To Create an `SSH` Node]
+* link:#gkrme[To List `SSH` Nodes in a Domain]
+* link:#gksig[To Test if an `SSH` Node is Reachable]
+* link:#gkrlz[To Delete an `SSH` Node]
+
+[[gkrnf]][[GSHAG00088]][[to-create-an-ssh-node]]
+
+==== To Create an `SSH` Node
+
+Use the `create-node-ssh` subcommand in remote mode to create an `SSH`
+node.
+
+[[GSHAG347]]
+
+Before You Begin
+
+Ensure that the SSH user can use SSH to log in to the host that the node
+will represent. By default, the `create-node-ssh` subcommand validates
+the node's parameters and the SSH connection to the host. If the SSH
+user cannot use SSH to log in to the host, the validation fails.
+
+1. Ensure that the DAS is running. Remote subcommands require a running server.
+2. Run the `create-node-ssh` subcommand.
++
+[NOTE]
+====
+Only the options that are required to complete this task are provided in
+this step. For information about all the options for configuring the
+node, see the link:reference-manual/create-node-ssh.html#GSRFM00048[`create-node-ssh`(1)] help page.
+
+If you are using password authentication for the SSH user, you must
+specify a password file through the `--passwordfile` option of the
+link:reference-manual/asadmin.html#GSRFM00263[`asadmin`] utility. For more information about SSH user
+authentication, see link:ssh-setup.html#gkshh[Setting Up SSH User
+Authentication].
+====
++
+[source]
+----
+asadmin> create-node-ssh --nodehost node-host [--installdir install-dir ]
+node-name
+----
+node-host::
+  The name of the host that the node represents. The name of the host
+  must be specified. Otherwise, an error occurs.
+install-dir::
+  The full path to the parent of the base installation directory of the
+  {productName} software on the host, for example,
+  `/export/glassfish7/`. If the {productName} software is installed
+  in the same directory on the node's host and the DAS host, you can
+  omit this option.
+node-name::
+  Your choice of name for the node that you are creating.
+
+[[GSHAG00020]][[gksih]]
+Example 3-6 Creating an `SSH` Node
+
+This example creates the `SSH` node `sj01` to represent the host
+`sj01.example.com`. The {productName} software is installed in the
+same directory on the DAS host and on the host `sj01.example.com`.
+
+[source]
+----
+asadmin> create-node-ssh --nodehost sj01.example.com sj01
+Command create-node-ssh executed successfully.
+----
+
+[[GSHAG348]]
+
+Troubleshooting
+
+The `create-node-ssh` subcommand might fail to create the node and
+report the error `Illegal sftp packet len`. If this error occurs, ensure
+that no the startup file on the remote host displays text for
+noninteractive shells. Examples of startup files are `.bashrc`,
+`.cshrc`, `.login`, and `.profile`.
+
+The SSH session interprets any text message that is displayed during
+login as a file-transfer protocol packet. Therefore, any statement in a
+startup file that displays text messages corrupts the SSH session,
+causing this error.
+
+[[GSHAG349]]
+
+See Also
+
+link:reference-manual/create-node-ssh.html#GSRFM00048[`create-node-ssh`(1)]
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-node-ssh` at the command line.
+
+[[GSHAG350]]
+
+Next Steps
+
+After creating a node, you can create instances on the node as explained
+in the following sections:
+
+* link:instances.html#gkqch[To Create an Instance Centrally]
+* link:instances.html#gkqbl[To Create an Instance Locally]
+
+[[gkrme]][[GSHAG00089]][[to-list-ssh-nodes-in-a-domain]]
+
+==== To List `SSH` Nodes in a Domain
+
+Use the `list-nodes-ssh` subcommand in remote mode to obtain information
+about existing `SSH` nodes in a domain.
+
+
+[NOTE]
+====
+To obtain information about all existing nodes in a domain, use the
+link:reference-manual/list-nodes.html#GSRFM00187[`list-nodes`] subcommand.
+====
+
+
+1. Ensure that the DAS is running. Remote subcommands require a running server.
+
+2. Run the link:reference-manual/list-nodes-ssh.html#GSRFM00189[`list-nodes-ssh`] subcommand.
++
+[source]
+----
+asadmin> list-nodes-ssh
+----
+
+[[GSHAG00021]][[gkskt]]
+Example 3-7 Listing Basic Information About All `SSH` Nodes in a Domain
+
+This example lists the name, type, and host of all `SSH` nodes in the
+current domain.
+
+[source]
+----
+asadmin> list-nodes-ssh
+sj01  SSH  sj01.example.com
+sj02  SSH  sj02.example.com
+Command list-nodes-ssh executed successfully.
+----
+
+[[GSHAG00022]][[gkske]]
+Example 3-8 Listing Detailed Information About All `SSH` Nodes in a
+Domain
+
+This example lists detailed information about all `SSH` nodes in the
+current domain.
+
+[source]
+----
+asadmin> list-nodes-ssh --long=true
+NODE NAME   TYPE   NODE HOST          INSTALL DIRECTORY    REFERENCED BY
+sj01        SSH    sj01.example.com   /export/glassfish7   pmd-i1
+sj02        SSH    sj02.example.com   /export/glassfish7   pmd-i2
+Command list-nodes-ssh executed successfully.
+----
+
+[[GSHAG351]]
+
+See Also
+
+* link:reference-manual/list-nodes.html#GSRFM00187[`list-nodes`(1)]
+* link:reference-manual/list-nodes-ssh.html#GSRFM00189[`list-nodes-ssh`(1)]
+
+You can also view the full syntax and options of the subcommands by
+typing the following commands at the command line:
+
+* `asadmin help list-nodes`
+* `asadmin help list-nodes-ssh`
+
+[[gksig]][[GSHAG00090]][[to-test-if-an-ssh-node-is-reachable]]
+
+==== To Test if an `SSH` Node is Reachable
+
+Use the `ping-node-ssh` subcommand in remote mode to test if an `SSH`
+node is reachable.
+
+[[GSHAG352]]
+
+Before You Begin
+
+Ensure that SSH is configured on the host where the DAS is running and
+on the host that the node represents.
+
+1. Ensure that the DAS is running. Remote subcommands require a running server.
+
+2. Run the `ping-node-ssh` subcommand.
++
+[NOTE]
+====
+Only the options that are required to complete this task are provided in
+this step. For information about all the options for testing the node,
+see the link:reference-manual/ping-node-ssh.html#GSRFM00215[`ping-node-ssh`(1)] help page.
+====
++
+[source]
+----
+asadmin> ping-node-ssh node-name
+----
+node-name::
+  The name of the node to test.
+
+[[GSHAG00023]][[gkshk]]
+Example 3-9 Testing if an `SSH` Node Is Reachable
+
+This example tests if the `SSH` node `sj01` is reachable.
+
+[source]
+----
+asadmin> ping-node-ssh sj01
+Successfully made SSH connection to node sj01 (sj01.example.com)
+Command ping-node-ssh executed successfully.
+----
+
+[[GSHAG353]]
+
+See Also
+
+link:reference-manual/ping-node-ssh.html#GSRFM00215[`ping-node-ssh`(1)]
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help ping-node-ssh` at the command line.
+
+[[gkrlz]][[GSHAG00091]][[to-delete-an-ssh-node]]
+
+==== To Delete an `SSH` Node
+
+Use the `delete-node-ssh` subcommand in remote mode to delete an `SSH`
+node.
+
+Deleting a node removes the node from the configuration of the DAS. The
+node's directories and files are deleted when the last {productName}
+instance that resides on the node is deleted.
+
+[[GSHAG354]]
+
+Before You Begin
+
+Ensure that no {productName} instances reside on the node that you
+are deleting. For information about how to delete an instance, see the
+following sections.
+
+* link:instances.html#gkqcw[To Delete an Instance Centrally]
+* link:instances.html#gkqed[To Delete an Instance Locally]
+
+1. Ensure that the DAS is running. Remote subcommands require a running server.
+
+2. Confirm that no instances reside on the node that you are deleting.
++
+[source]
+----
+asadmin> list-nodes-ssh --long=true
+----
+3. Run the olink:GSRFM00100[`delete-node-ssh`] subcommand.
++
+[source]
+----
+asadmin> delete-node-ssh node-name
+----
+node-name::
+  The name of the node that you are deleting.
+
+[[GSHAG00024]][[gksjg]]
+Example 3-10 Deleting an `SSH` Node
+
+This example confirms that no instances reside on the `SSH` node `sj01`
+and deletes the node `sj01`.
+
+[source]
+----
+asadmin> list-nodes-ssh --long=true
+NODE NAME   TYPE   NODE HOST          INSTALL DIRECTORY    REFERENCED BY
+sj01        SSH    sj01.example.com   /export/glassfish7
+sj02        SSH    sj02.example.com   /export/glassfish7   pmd-i2
+Command list-nodes-ssh executed successfully.
+asadmin> delete-node-ssh sj01
+Command delete-node-ssh executed successfully.
+----
+
+[[GSHAG355]]
+
+See Also
+
+* link:instances.html#gkqcw[To Delete an Instance Centrally]
+* link:instances.html#gkqed[To Delete an Instance Locally]
+* link:reference-manual/delete-node-ssh.html#GSRFM00100[`delete-node-ssh`(1)]
+* link:reference-manual/list-nodes-ssh.html#GSRFM00189[`list-nodes-ssh`(1)]
+
+You can also view the full syntax and options of the subcommands by
+typing the following commands at the command line:
+
+* `asadmin help delete-node-ssh`
+* `asadmin help list-nodes-ssh`
+
+[[gkrnp]][[GSHAG00181]][[creating-listing-and-deleting-config-nodes]]
+
+=== Creating, Listing, and Deleting `CONFIG` Nodes
+
+A `CONFIG` node does not support remote communication. If neither DCOM
+nor SSH is set up and you plan to administer your instances locally, the
+instances can reside on `CONFIG` nodes. You cannot use `CONFIG` nodes
+for instances that you plan to administer centrally.
+
+{productName} enables you to create `CONFIG` nodes for use by
+instances, obtain information about `CONFIG` nodes, and delete `CONFIG`
+nodes that are no longer required.
+
+The following topics are addressed here:
+
+* link:#gkrll[To Create a `CONFIG` Node]
+* link:#gkrjr[To List `CONFIG` Nodes in a Domain]
+* link:#gkrms[To Delete a `CONFIG` Node]
+
+[[gkrll]][[GSHAG00092]][[to-create-a-config-node]]
+
+==== To Create a `CONFIG` Node
+
+Use the `create-node-config` command in remote mode to create a `CONFIG` node.
+
+[NOTE]
+====
+If you create an instance locally on a host for which no nodes are
+defined, you can create the instance without creating a node beforehand.
+In this situation, {productName} creates a `CONFIG` node for you. The
+name of the node is the unqualified name of the host. For more
+information, see link:instances.html#gkqbl[To Create an Instance Locally].
+====
+
+1. Ensure that the DAS is running. Remote subcommands require a running server.
+
+2. Run the `create-node-config` subcommand.
++
+[NOTE]
+====
+Only the options that are required to complete this task are provided in
+this step. For information about all the options for configuring the
+node, see the link:reference-manual/create-node-config.html#GSRFM00047[`create-node-config`(1)] help page.
+====
++
+[source]
+----
+asadmin> create-node-config [--nodehost node-host] [--installdir install-dir ]
+node-name
+----
+node-host::
+  The name of the host that the node represents. You may omit this
+  option. The name of the host can be determined when instances that
+  reside on the node are created.
+install-dir::
+  The full path to the parent of the base installation directory of the
+  {productName} software on the host, for example,
+  `/export/glassfish7/`. You may omit this option. The installation
+  directory can be determined when instances that reside on the node are
+  created.
+node-name::
+  Your choice of name for the node that you are creating.
+
+[[GSHAG00025]][[gkshu]]
+Example 3-11 Creating a `CONFIG` Node
+
+This example creates the `CONFIG` node `cfg01`. The host that the node
+represents and the installation directory of the {productName}
+software on the host are to be determined when instances are added to
+the node.
+
+[source]
+----
+asadmin> create-node-config cfg01
+Command create-node-config executed successfully.
+----
+
+[[GSHAG356]]
+
+See Also
+
+link:reference-manual/create-node-config.html#GSRFM00047[`create-node-config`(1)]
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-node-config` at the command line.
+
+[[GSHAG357]]
+
+Next Steps
+
+After creating a node, you can create instances on the node as explained
+in link:instances.html#gkqbl[To Create an Instance Locally].
+
+[[gkrjr]][[GSHAG00093]][[to-list-config-nodes-in-a-domain]]
+
+==== To List `CONFIG` Nodes in a Domain
+
+Use the `list-nodes-config` subcommand in remote mode to obtain
+information about existing `CONFIG` nodes in a domain.
+
+
+[NOTE]
+====
+To obtain information about all existing nodes in a domain, use the
+link:reference-manual/list-nodes.html#GSRFM00187[`list-nodes`] subcommand.
+====
+
+
+1. Ensure that the DAS is running.
++
+Remote subcommands require a running server.
+2. Run the link:reference-manual/list-nodes-config.html#GSRFM00188[`list-nodes-config`] subcommand.
++
+[source]
+----
+asadmin> list-nodes-config
+----
+
+[[GSHAG00026]][[gkskp]]
+Example 3-12 Listing Basic Information About All `CONFIG` Nodes in a
+Domain
+
+This example lists the name, type, and host of all `CONFIG` nodes in the
+current domain.
+
+[source]
+----
+asadmin> list-nodes-config
+localhost-domain1  CONFIG  localhost
+cfg01  CONFIG  cfg01.example.com
+cfg02  CONFIG  cfg02.example.com
+Command list-nodes-config executed successfully.
+----
+
+[[GSHAG00027]][[gksjs]]
+Example 3-13 Listing Detailed Information About All `CONFIG` Nodes in a
+Domain
+
+This example lists detailed information about all `CONFIG` nodes in the
+current domain.
+
+[source]
+----
+asadmin> list-nodes-config --long=true
+NODE NAME           TYPE     NODE HOST            INSTALL DIRECTORY    REFERENCED BY
+localhost-domain1   CONFIG   localhost            /export/glassfish7
+cfg01               CONFIG   cfg01.example.com    /export/glassfish7   yml-i1
+cfg02               CONFIG   cfg02.example.com    /export/glassfish7   yml-i2
+Command list-nodes-config executed successfully.
+----
+
+[[GSHAG358]]
+
+See Also
+
+* link:reference-manual/list-nodes.html#GSRFM00187[`list-nodes`(1)]
+* link:reference-manual/list-nodes-config.html#GSRFM00188[`list-nodes-config`(1)]
+
+You can also view the full syntax and options of the subcommands by
+typing the following commands at the command line:
+
+* `asadmin help list-nodes`
+* `asadmin help list-nodes-config`
+
+[[gkrms]][[GSHAG00094]][[to-delete-a-config-node]]
+
+==== To Delete a `CONFIG` Node
+
+Use the `delete-node-config` subcommand in remote mode to delete a
+`CONFIG` node.
+
+Deleting a node removes the node from the configuration of the DAS. The
+node's directories and files are deleted when the last {productName}
+instance that resides on the node is deleted.
+
+[[GSHAG359]]
+
+Before You Begin
+
+Ensure that no {productName} instances reside on the node that you
+are deleting. For information about how to delete an instance that
+resides on a `CONFIG` node, see link:instances.html#gkqed[To Delete an
+Instance Locally].
+
+1. Ensure that the DAS is running. Remote subcommands require a running server.
+
+2. Confirm that no instances reside on the node that you are deleting.
++
+[source]
+----
+asadmin> list-nodes-config --long=true
+----
+3. Run the olink:GSRFM00099[`delete-node-config`] subcommand.
++
+[source]
+----
+asadmin> delete-node-config node-name
+----
+node-name::
+  The name of the node that you are deleting.
+
+[[GSHAG00028]][[gksla]]
+Example 3-14 Deleting a `CONFIG` Node
+
+This example confirms that no instances reside on the `CONFIG` node
+`cfg01` and deletes the node `cfg01`.
+
+[source]
+----
+asadmin> list-nodes-config --long=true
+NODE NAME           TYPE     NODE HOST           INSTALL DIRECTORY    REFERENCED BY
+localhost-domain1   CONFIG   localhost           /export/glassfish7
+cfg01               CONFIG   cfg01.example.com   /export/glassfish7
+cfg02               CONFIG   cfg02.example.com   /export/glassfish7   yml-i2
+Command list-nodes-config executed successfully.
+asadmin> delete-node-config cfg01
+Command delete-node-config executed successfully.
+----
+
+[[GSHAG360]]
+
+See Also
+
+* link:instances.html#gkqed[To Delete an Instance Locally]
+* link:reference-manual/delete-node-config.html#GSRFM00099[`delete-node-config`(1)]
+* link:reference-manual/list-nodes-config.html#GSRFM00188[`list-nodes-config`(1)]
+
+You can also view the full syntax and options of the subcommands by
+typing the following commands at the command line:
+
+* `asadmin help delete-node-config`
+* `asadmin help list-nodes-config`
+
+[[gksjd]][[GSHAG00182]][[updating-and-changing-the-type-of-a-node]]
+
+=== Updating and Changing the Type of a Node
+
+{productName} enables you to update the configuration data of any
+node and to change the type of a node.
+
+The following topics are addressed here:
+
+* link:#CHDHHAAE[To Update a `DCOM` Node]
+* link:#gksjq[To Update an `SSH` Node]
+* link:#gksjv[To Update a `CONFIG` Node]
+* link:#gkski[To Change the Type of a Node]
+
+[[CHDHHAAE]][[GSHAG481]][[to-update-a-dcom-node]]
+
+==== To Update a `DCOM` Node
+
+Use the `update-node-dcom` subcommand in remote mode to update a `DCOM` node.
+
+Options of this subcommand specify the new values of the node's configuration data.
+If you omit an option, the existing value is unchanged.
+
+[[GSHAG482]]
+
+Before You Begin
+
+Ensure that the following prerequisites are met:
+
+* DCOM is configured on the host where the DAS is running and on the
+host that the node represents.
+* The node that you are updating exists.
+
+1. Ensure that the DAS is running. Remote subcommands require a running server.
+2. Run the `update-node-dcom` subcommand.
++
+[source]
+----
+asadmin> update-node-dcom options node-name
+----
+options::
+  Options of the `update-node-dcom` subcommand for changing the node's
+  configuration data. For information about these options, see the
+  link:reference-manual/update-node-ssh.html#GSRFM789[`update-node-dcom`(1)] help page.
+node-name::
+  The name of the `DCOM` node to update.
+
+[[GSHAG483]][[sthref18]]
+Example 3-15 Updating a `DCOM` Node
+
+This example updates the host that the node `wpmdl1` represents to `wj01`.
+
+[source]
+----
+asadmin> update-node-dcom --nodehost wj01 wpmdl1
+Command update-node-dcom executed successfully.
+----
+
+[[GSHAG484]]
+
+See Also
+
+link:reference-manual/update-node-ssh.html#GSRFM789[`update-node-dcom`(1)]
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help update-node-dcom` at the command line.
+
+[[gksjq]][[GSHAG00095]][[to-update-an-ssh-node]]
+
+==== To Update an `SSH` Node
+
+Use the `update-node-ssh` subcommand in remote mode to update an `SSH` node.
+
+Options of this subcommand specify the new values of the node's
+configuration data. If you omit an option, the existing value is unchanged.
+
+[[GSHAG361]]
+
+Before You Begin
+
+Ensure that the following prerequisites are met:
+
+* SSH is configured on the host where the DAS is running and on the host
+that the node represents.
+* The node that you are updating exists.
+
+1. Ensure that the DAS is running. Remote subcommands require a running server.
+
+2. Run the `update-node-ssh` subcommand.
++
+[source]
+----
+asadmin> update-node-ssh options node-name
+----
+options::
+  Options of the `update-node-ssh` subcommand for changing the node's
+  configuration data. For information about these options, see the
+  link:reference-manual/update-node-ssh001.html#GSRFM00256[`update-node-ssh`(1)] help page.
+node-name::
+  The name of the `SSH` node to update.
+
+[[GSHAG00029]][[gkslc]]
+Example 3-16 Updating an `SSH` Node
+
+This example updates the host that the node `sj01` represents to
+`adc01.example.com`.
+
+[source]
+----
+asadmin> update-node-ssh --nodehost adc01.example.com sj01
+Command update-node-ssh executed successfully.
+----
+
+[[GSHAG362]]
+
+See Also
+
+link:reference-manual/update-node-ssh001.html#GSRFM00256[`update-node-ssh`(1)]
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help update-node-ssh` at the command line.
+
+[[gksjv]][[GSHAG00096]][[to-update-a-config-node]]
+
+==== To Update a `CONFIG` Node
+
+Use the `update-node-config` subcommand in remote mode to update a
+`CONFIG` node.
+
+Options of this subcommand specify the new values of the node's
+configuration data. If you omit an option, the existing value is
+unchanged.
+
+[[GSHAG363]]
+
+Before You Begin
+
+Ensure that the node that you are updating exists.
+
+1. Ensure that the DAS is running. Remote subcommands require a running server.
+
+2. Run the `update-node-config` subcommand.
++
+[source]
+----
+asadmin> uupdate-node-config options node-name
+----
+options::
+  Options of the `update-node-config` subcommand for changing the node's
+  configuration data. For information about these options, see the
+  link:reference-manual/update-node-config.html#GSRFM00255[`update-node-config`(1)] help page.
+node-name::
+  The name of the `CONFIG` node to update.
+
+[[GSHAG00030]][[gkskc]]
+Example 3-17 Updating a `CONFIG` Node
+
+This example updates the host that the node `cfg02` represents to
+`adc02.example.com`.
+
+[source]
+----
+asadmin> update-node-config --nodehost adc02.example.com cfg02
+Command update-node-config executed successfully.
+----
+
+[[GSHAG364]]
+
+See Also
+
+link:reference-manual/update-node-config.html#GSRFM00255[`update-node-config`(1)]
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help update-node-config` at the command line.
+
+[[gkski]][[GSHAG00097]][[to-change-the-type-of-a-node]]
+
+==== To Change the Type of a Node
+
+The subcommands for updating a node can also be used to change the type
+of a node.
+
+Changing the type of a `CONFIG` node enables remote communication for
+the node. The type of the node after the change determines the protocol
+over which the node is enabled for remote communication:
+
+* A `DCOM` node is enabled for communication over DCOM.
+* An `SSH` node is enabled for communication over SSH.
+
+As part of the process of changing the type of a node, you can also
+change other configuration data for the node.
+
+Options of the subcommands for updating a node specify the new values of
+the node's configuration data. For most options, if you omit the option,
+the existing value is unchanged. However, default values are applied in
+the following situations:
+
+* Any of the following options of the `update-node-dcom` subcommand is
+omitted:
+
+** `--windowsuser`
+** `--windowsdomain`
+
+* Any of the following options of the `update-node-ssh` subcommand is omitted:
+
+** `--sshport`
+** `--sshuser`
+** `--sshkeyfile`
+
+
+[CAUTION]
+====
+Changing a `DCOM` node or an `SSH` node to a `CONFIG` node disables
+remote communication for the node.
+====
+
+
+[[GSHAG365]]
+
+Before You Begin
+
+Ensure that the following prerequisites are met:
+
+* SSH or DCOM is configured on the host where the DAS is running and on
+the host that the node represents.
+* The node the type of which you are changing exists.
+
+1. Ensure that the DAS is running. Remote subcommands require a running server.
+
+2. Run the appropriate subcommand for updating a node, depending on the
+type of the node after the change.
+
+** To change the type of a node to `DCOM`, run the `update-node-dcom`
+subcommand on the node.
++
+[source]
+----
+asadmin> update-node-dcom [options] config-or-ssh-node-name
+----
+options::
+  Options of the `update-node-dcom` subcommand for changing the node's
+  configuration data. For information about these options, see the
+  link:reference-manual/update-node-ssh.html#GSRFM789[`update-node-dcom`(1)] help page.
+config-or-ssh-node-name::
+  The name of the `CONFIG` node or the `SSH` node to change.
+
+** To change the type of a node to `SSH`, run the `update-node-ssh`
+subcommand on the node.
++
+[source]
+----
+asadmin> update-node-ssh [options] config-or-dcom-node-name
+----
+options::
+  Options of the `update-node-ssh` subcommand for changing the node's
+  configuration data. For information about these options, see the
+  link:reference-manual/update-node-ssh001.html#GSRFM00256[`update-node-ssh`(1)] help page.
+config-or-dcom-node-name::
+  The name of the `CONFIG` node or the `DCOM` node to change.
+
+** To change the type of a node to `CONFIG`, run the `update-node-config`
+subcommand on the node.
++
+[source]
+----
+asadmin> update-node-config [options] dcom-or-ssh-node-name
+----
+options::
+  Options of the `update-node-config` subcommand for changing the node's
+  configuration data. For information about these options, see the
+  link:reference-manual/update-node-config.html#GSRFM00255[`update-node-config`(1)] help page.
+dcom-or-ssh-node-name::
+  The name of the `DCOM` node or the `SSH` node to change.
+
+[[GSHAG00031]][[gkshw]]
+Example 3-18 Changing a `CONFIG` Node to an `SSH` Node
+
+This example changes the `CONFIG` node `cfg02` to an `SSH` node.
+
+[source]
+----
+asadmin> update-node-ssh cfg02
+Command update-node-ssh executed successfully.
+----
+
+[[GSHAG366]]
+
+See Also
+
+* link:reference-manual/update-node-config.html#GSRFM00255[`update-node-config`(1)]
+* link:reference-manual/update-node-ssh.html#GSRFM789[`update-node-dcom`(1)]
+* link:reference-manual/update-node-ssh001.html#GSRFM00256[`update-node-ssh`(1)]
+
+You can also view the full syntax and options of the subcommand by
+typing the following commands at the command line.
+
+* `asadmin help update-node-config`
+* `asadmin help update-node-dcom`
+* `asadmin help update-node-ssh`
diff --git a/docs/ha-administration-guide/src/main/asciidoc/overview.adoc b/docs/ha-administration-guide/src/main/asciidoc/overview.adoc
new file mode 100644
index 0000000..c4600ad
--- /dev/null
+++ b/docs/ha-administration-guide/src/main/asciidoc/overview.adoc
@@ -0,0 +1,436 @@
+type=page
+status=published
+title=High Availability in {productName}
+next=ssh-setup.html
+prev=preface.html
+~~~~~~
+
+= High Availability in {productName}
+
+[[GSHAG00002]][[abdaq]]
+
+
+[[high-availability-in-glassfish-server]]
+== 1 High Availability in {productName}
+
+This chapter describes the high availability features in {productName} 7.
+
+The following topics are addressed here:
+
+* link:#abdar[Overview of High Availability]
+* link:#gaymr[How {productName} Provides High Availability]
+* link:#gbcot[Recovering from Failures]
+* link:#abdaz[More Information]
+
+[[abdar]][[GSHAG00168]][[overview-of-high-availability]]
+
+=== Overview of High Availability
+
+High availability applications and services provide their functionality
+continuously, regardless of hardware and software failures. To make such
+reliability possible, {productName} provides mechanisms for
+maintaining application state data between clustered {productName}
+instances. Application state data, such as HTTP session data, stateful
+EJB sessions, and dynamic cache information, is replicated in real time
+across server instances. If any one server instance goes down, the
+session state is available to the next failover server, resulting in
+minimum application downtime and enhanced transactional security.
+
+{productName} provides the following high availability features:
+
+* link:#gksdm[Load Balancing With the Apache `mod_jk` or `mod_proxy_ajp` Module]
+* link:#gaynn[High Availability Session Persistence]
+* link:#gayna[High Availability Java Message Service]
+* link:#gaymz[RMI-IIOP Load Balancing and Failover]
+
+[[gksdm]][[GSHAG00252]][[load-balancing-with-the-apache-mod_jk-or-mod_proxy_ajp-module]]
+
+==== Load Balancing With the Apache `mod_jk` or `mod_proxy_ajp` Module
+
+A common load balancing configuration for {productName} 7 is to use
+the Apache HTTP Server as the web server front-end, and the Apache
+`mod_jk` or `mod_proxy_ajp` module as the connector between the web
+server and {productName}. See
+link:http-load-balancing.html#gksdt[Configuring {productName} with
+Apache HTTP Server and `mod_jk`] and
+link:http-load-balancing.html#CHDCCGDC[Configuring {productName} with
+Apache HTTP Server and `mod_proxy_ajp`] for more information.
+
+[[gaynn]][[GSHAG00253]][[high-availability-session-persistence]]
+
+==== High Availability Session Persistence
+
+{productName} provides high availability of HTTP requests and session
+data (both HTTP session data and stateful session bean data).
+
+Jakarta EE applications typically have significant amounts of session state
+data. A web shopping cart is the classic example of a session state.
+Also, an application can cache frequently-needed data in the session
+object. In fact, almost all applications with significant user
+interactions need to maintain session state. Both HTTP sessions and
+stateful session beans (SFSBs) have session state data.
+
+Preserving session state across server failures can be important to end
+users. If the {productName} instance hosting the user session
+experiences a failure, the session state can be recovered, and the
+session can continue without loss of information. High availability is
+implemented in {productName} by means of in-memory session
+replication on {productName} instances running in a cluster.
+
+For more information about in-memory session replication in {productName}, see link:#gaymr[How {productName} Provides High
+Availability]. For detailed instructions on configuring high
+availability session persistence, see
+link:session-persistence-and-failover.html#abdkz[Configuring High
+Availability Session Persistence and Failover].
+
+[[gayna]][[GSHAG00254]][[high-availability-java-message-service]]
+
+==== High Availability Java Message Service
+
+{productName} supports the Java Message Service (JMS) API and JMS
+messaging through its built-in jmsra resource adapter communicating with
+Open Message Queue as the JMS provider. This combination is often called
+the JMS Service.
+
+The JMS service makes JMS messaging highly available as follows:
+
+Message Queue Broker Clusters::
+  By default, when a GlassFish cluster is created, the JMS service
+  automatically configures a Message Queue broker cluster to provide JMS
+  messaging services, with one clustered broker assigned to each cluster
+  instance. This automatically created broker cluster is configurable to
+  take advantage of the two types of broker clusters, conventional and
+  enhanced, supported by Message Queue. +
+  Additionally, Message Queue broker clusters created and managed using
+  Message Queue itself can be used as external, or remote, JMS hosts.
+  Using external broker clusters provides additional deployment options,
+  such as deploying Message Queue brokers on different hosts from the
+  GlassFish instances they service, or deploying different numbers of
+  Message Queue brokers and GlassFish instances. +
+  For more information about Message Queue clustering, see
+  link:jms.html#abdbx[Using Message Queue Broker Clusters With {productName}].
+Connection Failover::
+  The use of Message Queue broker clusters allows connection failover in
+  the event of a broker failure. If the primary JMS host (Message Queue
+  broker) in use by a GlassFish instance fails, connections to the
+  failed JMS host will automatically fail over to another host in the
+  JMS host list, allowing messaging operations to continue and
+  maintaining JMS messaging semantics. +
+  For more information about JMS connection failover, see
+  link:jms.html#abdbv[Connection Failover].
+
+[[gaymz]][[GSHAG00255]][[rmi-iiop-load-balancing-and-failover]]
+
+==== RMI-IIOP Load Balancing and Failover
+
+With RMI-IIOP load balancing, IIOP client requests are distributed to
+different server instances or name servers, which spreads the load
+evenly across the cluster, providing scalability. IIOP load balancing
+combined with EJB clustering and availability also provides EJB
+failover.
+
+When a client performs a JNDI lookup for an object, the Naming Service
+essentially binds the request to a particular server instance. From then
+on, all lookup requests made from that client are sent to the same
+server instance, and thus all `EJBHome` objects will be hosted on the
+same target server. Any bean references obtained henceforth are also
+created on the same target host. This effectively provides load
+balancing, since all clients randomize the list of target servers when
+performing JNDI lookups. If the target server instance goes down, the
+lookup or EJB method invocation will failover to another server
+instance.
+
+IIOP Load balancing and failover happens transparently. No special steps
+are needed during application deployment. If the {productName}
+instance on which the application client is deployed participates in a
+cluster, the {productName} finds all currently active IIOP endpoints
+in the cluster automatically. However, a client should have at least two
+endpoints specified for bootstrapping purposes, in case one of the
+endpoints has failed.
+
+For more information on RMI-IIOP load balancing and failover, see
+link:rmi-iiop.html#fxxqs[RMI-IIOP Load Balancing and Failover].
+
+[[gaymr]][[GSHAG00169]][[how-glassfish-server-provides-high-availability]]
+
+=== How {productName} Provides High Availability
+
+{productName} provides high availability through the following
+subcomponents and features:
+
+* link:#gjghv[Storage for Session State Data]
+* link:#abdax[Highly Available Clusters]
+
+[[gjghv]][[GSHAG00256]][[storage-for-session-state-data]]
+
+==== Storage for Session State Data
+
+Storing session state data enables the session state to be recovered
+after the failover of a server instance in a cluster. Recovering the
+session state enables the session to continue without loss of
+information. {productName} supports in-memory session replication on
+other servers in the cluster for maintaining HTTP session and stateful
+session bean data.
+
+In-memory session replication is implemented in {productName} 7 as
+an OSGi module. Internally, the replication module uses a consistent
+hash algorithm to pick a replica server instance within a cluster of
+instances. This allows the replication module to easily locate the
+replica or replicated data when a container needs to retrieve the data.
+
+The use of in-memory replication requires the Group Management Service
+(GMS) to be enabled. For more information about GMS, see
+link:clusters.html#gjfnl[Group Management Service].
+
+If server instances in a cluster are located on different hosts, ensure
+that the following prerequisites are met:
+
+* To ensure that GMS and in-memory replication function correctly, the
+hosts must be on the same subnet.
+* To ensure that in-memory replication functions correctly, the system
+clocks on all hosts in the cluster must be synchronized as closely as
+possible.
+
+[[abdax]][[GSHAG00257]][[highly-available-clusters]]
+
+==== Highly Available Clusters
+
+A highly available cluster integrates a state replication service with
+clusters and load balancer.
+
+
+[NOTE]
+====
+When implementing a highly available cluster, use a load balancer that
+includes session-based stickiness as part of its load-balancing
+algorithm. Otherwise, session data can be misdirected or lost.
+An example of a load balancer that includes session-based stickiness is the
+Loadbalancer Plug-In available in {productName}.
+====
+
+
+[[abday]][[GSHAG00218]][[clusters-instances-sessions-and-load-balancing]]
+
+===== Clusters, Instances, Sessions, and Load Balancing
+
+Clusters, server instances, load balancers, and sessions are related as
+follows:
+
+* A server instance is not required to be part of a cluster. However, an
+instance that is not part of a cluster cannot take advantage of high
+availability through transfer of session state from one instance to
+other instances.
+* The server instances within a cluster can be hosted on one or multiple
+hosts. You can group server instances across different hosts into a
+cluster.
+* A particular load balancer can forward requests to server instances on
+multiple clusters. You can use this ability of the load balancer to
+perform an online upgrade without loss of service. For more information,
+see link:rolling-upgrade.html#abdin[Upgrading in Multiple Clusters].
+* A single cluster can receive requests from multiple load balancers. If
+a cluster is served by more than one load balancer, you must configure
+the cluster in exactly the same way on each load balancer.
+* Each session is tied to a particular cluster. Therefore, although you
+can deploy an application on multiple clusters, session failover will
+occur only within a single cluster.
+
+The cluster thus acts as a safe boundary for session failover for the
+server instances within the cluster. You can use the load balancer and
+upgrade components within the {productName} without loss of service.
+
+[[gktax]][[GSHAG00219]][[protocols-for-centralized-cluster-administration]]
+
+===== Protocols for Centralized Cluster Administration
+
+{productName} uses the Distributed Component Object Model (DCOM)
+remote protocol or secure shell (SSH) to ensure that clusters that span
+multiple hosts can be administered centrally. To perform administrative
+operations on {productName} instances that are remote from the domain
+administration server (DAS), the DAS must be able to communicate with
+those instances. If an instance is running, the DAS connects to the
+running instance directly. For example, when you deploy an application
+to an instance, the DAS connects to the instance and deploys the
+application to the instance.
+
+However, the DAS cannot connect to an instance to perform operations on
+an instance that is not running, such as creating or starting the
+instance. For these operations, the DAS uses DCOM or SSH to contact a
+remote host and administer instances there. DCOM or SSH provides
+confidentiality and security for data that is exchanged between the DAS
+and remote hosts.
+
+
+[NOTE]
+====
+The use of DCOM or SSH to enable centralized administration of remote
+instances is optional. If the use of DCOM SSH is not feasible in your
+environment, you can administer remote instances locally.
+====
+
+
+For more information, see link:ssh-setup.html#gkshg[Enabling Centralized
+Administration of {productName} Instances].
+
+[[gbcot]][[GSHAG00170]][[recovering-from-failures]]
+
+=== Recovering from Failures
+
+You can use various techniques to manually recover individual
+subcomponents after hardware failures such as disk crashes.
+
+The following topics are addressed here:
+
+* link:#gcmkp[Recovering the Domain Administration Server]
+* link:#gcmkc[Recovering {productName} Instances]
+* link:#gcmjs[Recovering the HTTP Load Balancer and Web Server]
+* link:#gcmjr[Recovering Message Queue]
+
+[[gcmkp]][[GSHAG00258]][[recovering-the-domain-administration-server]]
+
+==== Recovering the Domain Administration Server
+
+Loss of the Domain Administration Server (DAS) affects only
+administration. {productName} clusters and standalone instances, and
+the applications deployed to them, continue to run as before, even if
+the DAS is not reachable
+
+Use any of the following methods to recover the DAS:
+
+* Back up the domain periodically, so you have periodic snapshots. After
+a hardware failure, re-create the DAS on a new host, as described in
+"link:administration-guide/domains.html#GSADG00542[Re-Creating the Domain Administration Server (DAS)]"
+in {productName} Administration Guide.
+* Put the domain installation and configuration on a shared and robust
+file system (NFS for example). If the primary DAS host fails, a second
+host is brought up with the same IP address and will take over with
+manual intervention or user supplied automation.
+* Zip the {productName} installation and domain root directory.
+Restore it on the new host, assigning it the same network identity.
+
+[[gcmkc]][[GSHAG00259]][[recovering-glassfish-server-instances]]
+
+==== Recovering {productName} Instances
+
+{productName} provide tools for backing up and restoring {productName} instances. For more information, see link:instances.html#gksdy[To
+Resynchronize an Instance and the DAS Offline].
+
+[[gcmjs]][[GSHAG00260]][[recovering-the-http-load-balancer-and-web-server]]
+
+==== Recovering the HTTP Load Balancer and Web Server
+
+There are no explicit commands to back up only a web server
+configuration. Simply zip the web server installation directory. After
+failure, unzip the saved backup on a new host with the same network
+identity. If the new host has a different IP address, update the DNS
+server or the routers.
+
+
+[NOTE]
+====
+This assumes that the web server is either reinstalled or restored from
+an image first.
+====
+
+
+The Load Balancer Plug-In (`plugins` directory) and configurations are
+in the web server installation directory, typically `/opt/SUNWwbsvr`.
+The web-install``/``web-instance``/config`` directory contains the
+`loadbalancer.xml` file.
+
+[[gcmjr]][[GSHAG00261]][[recovering-message-queue]]
+
+==== Recovering Message Queue
+
+When a Message Queue broker becomes unavailable, the method you use to
+restore the broker to operation depends on the nature of the failure
+that caused the broker to become unavailable:
+
+* Power failure or failure other than disk storage
+* Failure of disk storage
+
+Additionally, the urgency of restoring an unavailable broker to
+operation depends on the type of the broker:
+
+* Standalone Broker. When a standalone broker becomes unavailable, both
+service availability and data availability are interrupted. Restore the
+broker to operation as soon as possible to restore availability.
+* Broker in a Conventional Cluster. When a broker in a conventional
+cluster becomes unavailable, service availability continues to be
+provided by the other brokers in the cluster. However, data availability
+of the persistent data stored by the unavailable broker is interrupted.
+Restore the broker to operation to restore availability of its
+persistent data.
+* Broker in an Enhanced Cluster. When a broker in an enhanced cluster
+becomes unavailable, service availability and data availability continue
+to be provided by the other brokers in the cluster. Restore the broker
+to operation to return the cluster to its previous capacity.
+
+[[glaiv]][[GSHAG00220]][[recovering-from-power-failure-and-failures-other-than-disk-storage]]
+
+===== Recovering From Power Failure and Failures Other Than Disk Storage
+
+When a host is affected by a power failure or failure of a non-disk
+component such as memory, processor or network card, restore Message
+Queue brokers on the affected host by starting the brokers after the
+failure has been remedied.
+
+To start brokers serving as Embedded or Local JMS hosts, start the
+GlassFish instances the brokers are servicing. To start brokers serving
+as Remote JMS hosts, use the `imqbrokerd` Message Queue utility.
+
+[[glaiu]][[GSHAG00221]][[recovering-from-failure-of-disk-storage]]
+
+===== Recovering from Failure of Disk Storage
+
+Message Queue uses disk storage for software, configuration files and
+persistent data stores. In a default GlassFish installation, all three
+of these are generally stored on the same disk: the Message Queue
+software in as-install-parent``/mq``, and broker configuration files and
+persistent data stores (except for the persistent data stores of
+enhanced clusters, which are housed in highly available databases) in
+domain-dir``/imq``. If this disk fails, restoring brokers to operation is
+impossible unless you have previously created a backup of these items.
+To create such a backup, use a utility such as `zip`, `gzip` or `tar` to
+create archives of these directories and all their content. When
+creating the backup, you should first quiesce all brokers and physical
+destinations, as described in "link:../openmq/mq-admin-guide/broker-management.html#GMADG00522[Quiescing a Broker]" and
+"link:../openmq/mq-admin-guide/message-delivery.html#GMADG00533[Pausing and Resuming a Physical Destination]" in Open
+Message Queue Administration Guide, respectively. Then, after the failed
+disk is replaced and put into service, expand the backup archive into
+the same location.
+
+Restoring the Persistent Data Store From Backup. For many messaging
+applications, restoring a persistent data store from backup does not
+produce the desired results because the backed up store does not
+represent the content of the store when the disk failure occurred. In
+some applications, the persistent data changes rapidly enough to make
+backups obsolete as soon as they are created. To avoid issues in
+restoring a persistent data store, consider using a RAID or SAN data
+storage solution that is fault tolerant, especially for data stores in
+production environments.
+
+[[abdaz]][[GSHAG00171]][[more-information]]
+
+=== More Information
+
+For information about planning a high-availability deployment, including
+assessing hardware requirements, planning network configuration, and
+selecting a topology, see the link:deployment-planning-guide.html#GSPLG[{productName} Deployment Planning Guide]. This manual also provides a
+high-level introduction to concepts such as:
+
+* {productName} components such as node agents, domains, and clusters
+* IIOP load balancing in a cluster
+* Message queue failover
+
+For more information about developing applications that take advantage
+of high availability features, see the link:application-development-guide.html#GSDVG[{productName} Application Development Guide].
+
+For information on how to configure and tune applications and {productName} for best performance with high availability, see the
+link:performance-tuning-guide.html#GSPTG[{productName} Performance Tuning
+Guide], which discusses topics such as:
+
+* Tuning persistence frequency and persistence scope
+* Checkpointing stateful session beans
+* Configuring the JDBC connection pool
+* Session size
+* Configuring load balancers for best performance
diff --git a/docs/ha-administration-guide/src/main/asciidoc/preface.adoc b/docs/ha-administration-guide/src/main/asciidoc/preface.adoc
new file mode 100644
index 0000000..2602884
--- /dev/null
+++ b/docs/ha-administration-guide/src/main/asciidoc/preface.adoc
@@ -0,0 +1,284 @@
+type=page
+status=published
+title=Preface
+next=overview.html
+prev=title.html
+~~~~~~
+
+= Preface
+
+[[GSHAG00001]][[pref]]
+
+
+[[preface]]
+== Preface
+
+[NOTE]
+====
+This documentation is part of the Java Enterprise Edition contribution
+to the Eclipse Foundation and is not intended for use in relation to
+Java Enterprise Edition or Orace GlassFish. The documentation is in the
+process of being revised to reflect the new Jakarta EE branding.
+Additional changes will be made as requirements and procedures evolve
+for Jakarta EE. Where applicable, references to Jakarta EE or Java
+Enterprise Edition should be considered references to Jakarta EE.
+
+Please see the Title page for additional license information.
+====
+
+This book describes the high-availability features in {productName},
+including converged load balancing, HTTP load balancing, clusters,
+session persistence and failover.
+
+
+[NOTE]
+====
+The main thrust of the {productName} 7 release
+is to provide an application server for developers to explore and begin
+exploiting the new and updated technologies in the Jakarta EE 10 platform.
+Thus, the clustering, standalone instance and high availability features
+of {productName} were not a focus of this release. These features are
+included in the release, but they may not function properly with some of
+the new features added in support of the Jakarta EE 10 platform.
+====
+
+
+This preface contains information about and conventions for the entire
+{productName} ({productName}) documentation
+set.
+
+{productName} 7 is developed through the GlassFish project
+open-source community at `http://glassfish.java.net/`. The GlassFish
+project provides a structured process for developing the {productName} platform that makes the new features of the Jakarta EE platform
+available faster, while maintaining the most important feature of Java
+EE: compatibility. It enables Java developers to access the {productName} source code and to contribute to the development of the {productName}. The GlassFish project is designed to encourage communication
+between Oracle engineers and the community.
+
+[[GSHAG00163]][[gksfg]]
+
+
+[[oracle-glassfish-server-documentation-set]]
+=== {productName} Documentation Set
+
+The {productName} documentation set describes deployment planning and
+system installation. For an introduction to {productName}, refer to
+the books in the order in which they are listed in the following table.
+
+[width="100%",cols="<30%,<70%",options="header",]
+|===
+|Book Title |Description
+|link:release-notes.html#GSRLN[Release Notes] |Provides late-breaking information about
+the software and the documentation and includes a comprehensive,
+table-based summary of the supported hardware, operating system, Java
+Development Kit (JDK), and database drivers.
+
+|link:quick-start-guide.html#GSQSG[Quick Start Guide] |Explains how to get started with the
+{productName} product.
+
+|link:installation-guide.html#GSING[Installation Guide] |Explains how to install the software
+and its components.
+
+|link:upgrade-guide.html#GSUPG[Upgrade Guide] |Explains how to upgrade to the latest
+version of {productName}. This guide also describes differences
+between adjacent product releases and configuration options that can
+result in incompatibility with the product specifications.
+
+|link:deployment-planning-guide.html#GSPLG[Deployment Planning Guide] |Explains how to build a
+production deployment of {productName} that meets the requirements of
+your system and enterprise.
+
+|link:administration-guide.html#GSADG[Administration Guide] |Explains how to configure, monitor,
+and manage {productName} subsystems and components from the command
+line by using the link:reference-manual/asadmin.html#GSRFM00263[`asadmin`] utility. Instructions for
+performing these tasks from the Administration Console are provided in
+the Administration Console online help.
+
+|link:security-guide.html#GSSCG[Security Guide] |Provides instructions for configuring and
+administering {productName} security.
+
+|link:application-deployment-guide.html#GSDPG[Application Deployment Guide] |Explains how to assemble and
+deploy applications to the {productName} and provides information
+about deployment descriptors.
+
+|link:application-development-guide.html#GSDVG[Application Development Guide] |Explains how to create and
+implement Java Platform, Enterprise Edition (Jakarta EE platform)
+applications that are intended to run on the {productName}. These
+applications follow the open Java standards model for Jakarta EE components
+and application programmer interfaces (APIs). This guide provides
+information about developer tools, security, and debugging.
+
+|link:embedded-server-guide.html#GSESG[Embedded Server Guide] |Explains how to run applications in
+embedded {productName} and to develop applications in which {productName} is embedded.
+
+|link:ha-administration-guide.html#GSHAG[High Availability Administration Guide] |Explains how to
+configure {productName} to provide higher availability and
+scalability through failover and load balancing.
+
+|link:performance-tuning-guide.html#GSPTG[Performance Tuning Guide] |Explains how to optimize the
+performance of {productName}.
+
+|link:troubleshooting-guide.html#GSTSG[Troubleshooting Guide] |Describes common problems that you
+might encounter when using {productName} and explains how to solve
+them.
+
+|link:error-messages-reference.html#GSEMR[Error Message Reference] |Describes error messages that you
+might encounter when using {productName}.
+
+|link:reference-manual.html#GSRFM[Reference Manual] |Provides reference information in man
+page format for {productName} administration commands, utility
+commands, and related concepts.
+
+|link:../openmq/mq-release-notes.html#GMRLN[Message Queue Release Notes] |Describes new features,
+compatibility issues, and existing bugs for Open Message Queue.
+
+|link:../openmq/mq-tech-over.html#GMTOV[Message Queue Technical Overview] |Provides an introduction
+to the technology, concepts, architecture, capabilities, and features of
+the Message Queue messaging service.
+
+|link:../openmq/mq-admin-guide.html#GMADG[Message Queue Administration Guide] |Explains how to set up
+and manage a Message Queue messaging system.
+
+|link:../openmq/mq-dev-guide-jmx.html#GMJMG[Message Queue Developer's Guide for JMX Clients] |Describes
+the application programming interface in Message Queue for
+programmatically configuring and monitoring Message Queue resources in
+conformance with the Java Management Extensions (JMX).
+
+|link:../openmq/mq-dev-guide-java.html#GMJVG[Message Queue Developer's Guide for Java Clients] |Provides
+information about concepts and procedures for developing Java messaging
+applications (Java clients) that work with {productName}.
+
+|link:../openmq/mq-dev-guide-c.html#GMCCG[Message Queue Developer's Guide for C Clients] |Provides
+programming and reference information for developers working with
+Message Queue who want to use the C language binding to the Message
+Queue messaging service to send, receive, and process Message Queue
+messages.
+|===
+
+
+[[GSHAG00165]][[fwbkx]]
+
+
+[[typographic-conventions]]
+=== Typographic Conventions
+
+The following table describes the typographic changes that are used in
+this book.
+
+[width="100%",cols="<14%,<37%,<49%",options="header",]
+|===
+|Typeface |Meaning |Example
+|`AaBbCc123` |The names of commands, files, and directories, and
+onscreen computer output a|
+Edit your `.login` file.
+
+Use `ls` `a` to list all files.
+
+`machine_name% you have mail.`
+
+|`AaBbCc123` |What you type, contrasted with onscreen computer output a|
+`machine_name%` `su`
+
+`Password:`
+
+|AaBbCc123 |A placeholder to be replaced with a real name or value |The
+command to remove a file is `rm` filename.
+
+|AaBbCc123 |Book titles, new terms, and terms to be emphasized (note
+that some emphasized items appear bold online) a|
+Read Chapter 6 in the User's Guide.
+
+A cache is a copy that is stored locally.
+
+Do not save the file.
+
+|===
+
+
+[[GSHAG00166]][[fquvc]]
+
+
+[[symbol-conventions]]
+=== Symbol Conventions
+
+The following table explains symbols that might be used in this book.
+
+[width="100%",cols="<10%,<26%,<28%,<36%",options="header",]
+|===
+|Symbol |Description |Example |Meaning
+|`[ ]` |Contains optional arguments and command options. |`ls [-l]` |The
+`-l` option is not required.
+
+|`{ \| }` |Contains a set of choices for a required command option.
+|`-d {y\|n}` |The `-d` option requires that you use either the `y`
+argument or the `n` argument.
+
+|`${ }` |Indicates a variable reference. |`${com.sun.javaRoot}`
+|References the value of the `com.sun.javaRoot` variable.
+
+|- |Joins simultaneous multiple keystrokes. |Control-A |Press the
+Control key while you press the A key.
+
+|+ + |Joins consecutive multiple keystrokes. |Ctrl+A+N |Press the
+Control key, release it, and then press the subsequent keys.
+
+|> |Indicates menu item selection in a graphical user interface. |File >
+New > Templates |From the File menu, choose New. From the New submenu,
+choose Templates.
+|===
+
+
+[[GSHAG00164]][[ghpfg]]
+
+
+[[default-paths-and-file-names]]
+=== Default Paths and File Names
+
+The following table describes the default paths and file names that are
+used in this book.
+
+[width="100%",cols="<14%,<34%,<52%",options="header",]
+|===
+|Placeholder |Description |Default Value
+|as-install
+a|Represents the base installation directory for {productName}.
+
+In configuration files, as-install is represented as follows:
+
+`${com.sun.aas.installRoot}`
+
+a|Installations on the Oracle Solaris operating system, Linux operating
+system, and Mac OS operating system:
+
+user's-home-directory``/glassfish7/glassfish``
+
+Installations on the Windows operating system:
+
+SystemDrive``:\glassfish7\glassfish``
+
+|as-install-parent
+|Represents the parent of the base installation directory for {productName}.
+a|Installations on the Oracle Solaris operating system, Linux operating
+system, and Mac operating system:
+
+user's-home-directory``/glassfish7``
+
+Installations on the Windows operating system:
+
+SystemDrive``:\glassfish7``
+
+|domain-root-dir
+|Represents the directory in which a domain is created by default.
+|as-install``/domains/``
+
+|domain-dir
+a|Represents the directory in which a domain's configuration is stored.
+
+In configuration files, domain-dir is represented as follows:
+
+`${com.sun.aas.instanceRoot}`
+|domain-root-dir``/``domain-name
+
+|instance-dir
+|Represents the directory for a server instance.
+|domain-dir``/``instance-name
+|===
diff --git a/docs/ha-administration-guide/src/main/asciidoc/rmi-iiop.adoc b/docs/ha-administration-guide/src/main/asciidoc/rmi-iiop.adoc
new file mode 100644
index 0000000..f2bef4a
--- /dev/null
+++ b/docs/ha-administration-guide/src/main/asciidoc/rmi-iiop.adoc
@@ -0,0 +1,482 @@
+type=page
+status=published
+title=RMI-IIOP Load Balancing and Failover
+prev=jms.html
+~~~~~~
+
+= RMI-IIOP Load Balancing and Failover
+
+[[GSHAG00013]][[fxxqs]]
+
+[[rmi-iiop-load-balancing-and-failover]]
+== 11 RMI-IIOP Load Balancing and Failover
+
+This chapter describes using high-availability features for remote EJB
+references and JNDI objects over RMI-IIOP in {productName}.
+
+* link:#abdbe[Overview]
+* link:#gknqo[`InitialContext` Load Balancing]
+* link:#gknpv[Per-Request Load Balancing (PRLB)]
+
+[[abdbe]][[GSHAG00215]][[overview]]
+
+=== Overview
+
+With RMI-IIOP load balancing, IIOP client requests are distributed to
+different server instances or name servers. The goal is to spread the
+load evenly across the cluster, thus providing scalability. IIOP load
+balancing combined with EJB clustering and availability also provides
+EJB failover.
+
+The following topics are addressed here:
+
+* link:#abdbf[General Requirements for Configuring Load Balancing]
+* link:#gknpk[Load Balancing Models]
+
+[[abdbf]][[GSHAG00313]][[general-requirements-for-configuring-load-balancing]]
+
+==== General Requirements for Configuring Load Balancing
+
+{productName} provides high availability of remote EJB
+references and `NameService` objects over RMI-IIOP, provided all the
+following apply:
+
+* Your deployment has a cluster of at least two instances.
+* Jakarta EE applications are deployed to all instances and clusters that
+participate in load balancing.
+* RMI-IIOP client applications are enabled for load balancing.
+
+{productName} supports load balancing for Java applications executing
+in the Application Client Container (ACC). See link:#abdbd[Enabling
+RMI-IIOP Hardware Load Balancing and Failover].
+
+
+[NOTE]
+====
+{productName} does not support RMI-IIOP load balancing and failover
+over secure sockets layer (SSL).
+====
+
+
+[[gknpk]][[GSHAG00314]][[load-balancing-models]]
+
+==== Load Balancing Models
+
+{productName} supports two general models for load balancing:
+
+link:#gknqo[`InitialContext` Load Balancing]::
+  When a client performs a JNDI lookup for an object, the Naming Service
+  creates a `InitialContext` (IC) object associated with a particular
+  server instance. From then on, all lookup requests made using that IC
+  object are sent to the same server instance. `InitialContext` load
+  balancing can be configured automatically across an entire cluster.
+link:#gknpv[Per-Request Load Balancing (PRLB)]::
+  Per Request Load Balancing (PRLB) is a method for load balancing
+  stateless EJBs that enables load-balancing for each request to an EJB
+  instance. PRLB chooses the first node in a cluster to use on each
+  request. PRLB is configured on a per-EJB basis.
+
+[[gknqo]][[GSHAG00216]][[initialcontext-load-balancing]]
+
+=== `InitialContext` Load Balancing
+
+The following topics are addressed here:
+
+* link:#gknpn[`InitialContext` Summary]
+* link:#abdbg[`InitialContext` Algorithm]
+* link:#abdbd[Enabling RMI-IIOP Hardware Load Balancing and Failover]
+
+[[gknpn]][[GSHAG00315]][[initialcontext-summary]]
+
+==== `InitialContext` Summary
+
+When `InitialContext` load balancing is used, the client calls the
+`InitialContext()` method to create a new `InitialContext` (IC) object
+that is associated with a particular server instance. JNDI lookups are
+then performed on that IC object, and all lookup requests made using
+that IC object are sent to the same server instance. All `EJBHome`
+objects looked up with that `InitialContext` are hosted on the same
+target server. Any bean references obtained henceforth are also created
+on the same target host. This effectively provides load balancing, since
+all clients randomize the list of live target servers when creating
+`InitialContext` objects. If the target server instance goes down, the
+lookup or EJB method invocation will failover to another server
+instance. All objects derived from same `InitialContext` will failover
+to the same server instance.
+
+IIOP load balancing and failover happens transparently. No special steps
+are needed during application deployment. IIOP load balancing and
+failover for the {productName} supports dynamically reconfigured
+clusters. If the {productName} instance on which the application
+client is deployed participates in a cluster, the {productName} finds
+all currently active IIOP endpoints in the cluster automatically.
+Therefore, you are not required to manually update the list of endpoints
+if a new instance is added to the cluster or deleted from the cluster.
+However, a client should have at least two endpoints specified for
+bootstrapping purposes, in case one of the endpoints has failed.
+
+[[abdbg]][[GSHAG00316]][[initialcontext-algorithm]]
+
+==== `InitialContext` Algorithm
+
+{productName} uses a randomization and round-robin algorithm for
+RMI-IIOP load balancing and failover.
+
+When an RMI-IIOP client first creates a new `InitialContext` object, the
+list of available {productName} IIOP endpoints is randomized for that
+client. For that `InitialContext` object, the load balancer directs
+lookup requests and other `InitialContext` operations to an endpoint on
+the randomized list. If that endpoint is not available then a different
+random endpoint in the list is used.
+
+Each time the client subsequently creates a new `InitialContext` object,
+the endpoint list is rotated so that a different IIOP endpoint is used
+for `InitialContext` operations. The rotation is randomized, so the
+rotation is not to the next endpoint in the list, but instead to a
+random endpoint in the list.
+
+When you obtain or create beans from references obtained by an
+`InitialContext` object, those beans are created on the {productName}
+instance serving the IIOP endpoint assigned to the `InitialContext`
+object. The references to those beans contain the IIOP endpoint
+addresses of all {productName} instances in the cluster.
+
+The primary endpoint is the bean endpoint corresponding to the
+`InitialContext` endpoint used to look up or create the bean. The other
+IIOP endpoints in the cluster are designated as alternate endpoints. If
+the bean's primary endpoint becomes unavailable, further requests on
+that bean fail over to one of the alternate endpoints.
+
+You can configure RMI-IIOP load balancing and failover to work with
+applications running in the ACC.
+
+[[abdbd]][[GSHAG00317]][[enabling-rmi-iiop-hardware-load-balancing-and-failover]]
+
+==== Enabling RMI-IIOP Hardware Load Balancing and Failover
+
+You can enable RMI-IIOP load balancing and failover for applications
+running in the application client container (ACC). Weighted round-robin
+load balancing is also supported.
+
+[[abdbi]][[GSHAG00161]][[to-enable-rmi-iiop-hardware-load-balancing-for-the-application-client-container]]
+
+===== To Enable RMI-IIOP Hardware Load Balancing for the Application Client Container
+
+This procedure provides an overview of the steps necessary to enable
+RMI-IIOP load balancing and failover with the application client
+container (ACC). For additional information on the ACC, see
+"link:application-development-guide/java-clients.html#GSDVG00160[Developing Clients Using the ACC]" in {productName} Application Development Guide.
+
+[[GSHAG440]]
+
+Before You Begin
+
+The first five steps in this procedure are only necessary if you are
+enabling RMI-IIOP load balancing on a system other than the DAS. This is
+common in production environment, but less common in a development
+environment. For example, a developer who wants to experiment with a
+cluster and load balancing might create two instances on the same system
+on which the DAS is running. In such cases, these steps are unnecessary.
+
+1. Go to the install_dir ``/bin`` directory.
+
+2. Run `package-appclient`. +
+This utility produces an `appclient.jar` file. For more information on
+`package-appclient`, see link:reference-manual/package-appclient.html#GSRFM00264[`package-appclient`(1M)].
+
+3. Copy the `appclient.jar` file to the machine where you want your
+client and extract it.
+
+4. Edit the `asenv.conf` or `asenv.bat` path variables to refer to the
+correct directory values on that machine.
++
+The file is at appclient-install-dir `/config/`.
++
+For a list of the path variables to update, see
+link:reference-manual/package-appclient.html#GSRFM00264[`package-appclient`(1M)].
+
+5. If required, make the `appclient` script executable.
++
+For example, on UNIX use `chmod 700`.
+
+6. [[gevjb]]
+Find the IIOP listener port number for at least two instances in the cluster.
++
+You specify the IIOP listeners as endpoints in link:#gevkc[Add at least
+two `target-server` elements in the `sun-acc.xml` file.].
++
+For each instance, obtain the IIOP listener ports as follows:
+[arabic]
+.. Verify that the instances for which you want to determine the IIOP
+listener port numbers are running.
++
+[source]
+----
+asadmin> list-instances
+----
+A list of instances and their status (running, not running) is displayed.
++
+The instances for which you want to display the IIOP listener ports must be running.
+
+.. For each instance, enter the following command to list the various
+port numbers used by the instance.
++
+[source]
+----
+asadmin> get servers.server.instance-name.system-property.*.value
+----
+For example, for an instance name `in1`, you would enter the following
+command:
++
+[source]
+----
+asadmin> get servers.server.in1.system-property.*.value
+----
+
+7. [[gevkc]]
+Add at least two `target-server` elements in the `sun-acc.xml` file.
++
+Use the endpoints that you obtained in link:#gevjb[Find the IIOP
+listener port number for at least two instances in the cluster.].
++
+If the {productName} instance on which the application client is
+deployed participates in a cluster, the ACC finds all currently active
+IIOP endpoints in the cluster automatically. However, a client should
+have at least two endpoints specified for bootstrapping purposes, in
+case one of the endpoints has failed.
++
+The `target-server` element specifies one or more IIOP endpoints used
+for load balancing. The `address` attribute is an IPv4 address or host
+name, and the `port` attribute specifies the port number. See
+"link:application-deployment-guide/dd-elements.html#GSDPG00111[client-container]" in {productName} Application Deployment Guide.
++
+As an alternative to using `target-server` elements, you can use the
+`endpoints` property as follows:
++
+[source]
+----
+jvmarg value = "-Dcom.sun.appserv.iiop.endpoints=host1:port1,host2:port2,..."
+----
+
+8. If you require weighted round-robin load balancing, perform the following steps:
+[arabic]
+.. Set the load-balancing weight of each server instance.
++
+[source]
+----
+asadmin set instance-name.lb-weight=weight
+----
+.. In the `sun-acc.xml`, set the
+`com.sun.appserv.iiop.loadbalancingpolicy` property of the ACC to `ic-based-weighted`.
++
+[source,xml]
+----
+…
+<client-container send-password="true">
+  <property name="com.sun.appserv.iiop.loadbalancingpolicy" \
+     value="ic-based-weighed"/>
+…
+----
+
+9. Deploy your client application with the `--retrieve` option to get the client jar file.
++
+Keep the client jar file on the client machine.
++
+For example:
++
+[source]
+----
+asadmin  --user admin --passwordfile pw.txt deploy --target cluster1 \
+--retrieve my_dir myapp.ear
+----
+10. Run the application client as follows:
++
+[source]
+----
+appclient --client my_dir/myapp.jar
+----
+
+[[GSHAG00070]][[gfohj]]
+Example 11-1 Setting Load-Balancing Weights for RMI-IIOP Weighted
+Round-Robin Load Balancing
+
+In this example, the load-balancing weights in a cluster of three
+instances are to be set as shown in the following table.
+
+[width="100%",cols="<44%,<56%",options="header",]
+|===
+|Instance Name |Load-Balancing Weight
+|`i1` |100
+|`i2` |200
+|`i3` |300
+|===
+
+
+The sequence of commands to set these load balancing weights is as
+follows:
+
+[source]
+----
+asadmin set i1.lb-weight=100
+asadmin set i2.lb-weight=200
+asadmin set i3.lb-weight=300
+----
+
+[[GSHAG441]]
+
+Next Steps
+
+To test failover, stop one instance in the cluster and see that the
+application functions normally. You can also have breakpoints (or
+sleeps) in your client application.
+
+To test load balancing, use multiple clients and see how the load gets
+distributed among all endpoints.
+
+[[GSHAG442]]
+
+See Also
+
+See link:session-persistence-and-failover.html#abdle[Enabling the High
+Availability Session Persistence Service] for instructions on enabling
+the session availability service for a cluster or for a Web, EJB, or JMS
+container running in a cluster.
+
+[[gknpv]][[GSHAG00217]][[per-request-load-balancing-prlb]]
+
+=== Per-Request Load Balancing (PRLB)
+
+The following topics are addressed here:
+
+* link:#gksgt[PRLB Summary]
+* link:#gksgy[Enabling Per-Request Load Balancing]
+
+[[gksgt]][[GSHAG00318]][[prlb-summary]]
+
+==== PRLB Summary
+
+Per Request Load Balancing (PRLB) is a method for load balancing
+stateless EJBs that enables load-balancing for each request to an EJB
+instance. PRLB chooses the first node in a cluster to use on each
+request. By contrast, `InitialContext` (hardware) load balancing chooses
+the first node to use when the `InitialContext` is created, and each
+request thereafter uses the same node unless a failure occurred.
+
+PRLB is enabled by means of the boolean `per-request-load-balancing`
+property in the `glassfish-ejb-jar.xml` deployment descriptor file for
+the EJB. If this property is not set, the original load balancing
+behavior is preserved.
+
+
+[NOTE]
+====
+PRLB is only supported for stateless session beans. Using PRLB with any
+other bean types will result in a deployment error.
+====
+
+
+[[gksgy]][[GSHAG00319]][[enabling-per-request-load-balancing]]
+
+==== Enabling Per-Request Load Balancing
+
+You can enable Per-Request Load Balancing (PRLB) by setting the boolean
+`per-request-load-balancing` property to `true` in the
+`glassfish-ejb-jar.xml` deployment descriptor file for the EJB. On the
+client side, the `initContext.lookup` method is used to access the
+stateless EJB.
+
+[[gksgo]][[GSHAG00162]][[to-enable-rmi-iiop-per-request-load-balancing-for-a-stateless-ejb]]
+
+===== To Enable RMI-IIOP Per-Request Load Balancing for a Stateless EJB
+
+This procedure describes how to enable PRLB for a stateless EJB that is
+deployed to clustered {productName} instances. This procedure also
+provides an client-side example for accessing a stateless EJB that uses
+PRLB.
+
+1. Choose or assemble the EJB that you want to deploy.
++
+In this example, an EJB named `TheGreeter` is used.
++
+For instructions on developing and assembling an EJB for deployment to
+{productName}, refer to the following documentation:
+
+* "link:application-development-guide/ejb.html#GSDVG00010[Using Enterprise JavaBeans Technology]" in {productName} Application Development Guide
+* "link:application-deployment-guide/deploying-applications.html#GSDPG00068[EJB Module Deployment Guidelines]" in {productName} Application Deployment Guide
+* "link:application-deployment-guide/deploying-applications.html#GSDPG00070[Assembling and Deploying an Application Client
+Module]" in {productName} Application Deployment Guide
+
+2. Set the `per-request-load-balancing` property to `true` in the
+`glassfish-ejb-jar.xml` deployment descriptor file for the EJB.
++
+For more information about the `glassfish-ejb-jar.xml` deployment
+descriptor file, refer to
+"link:application-deployment-guide/dd-files.html#GSDPG00079[The glassfish-ejb-jar.xml File]"
+in {productName} Application Deployment Guide
++
+For example, the `glassfish-ejb-jar.xml` file for a sample EJB named
+`TheGreeter` is listed below.
++
+[source,xml]
+----
+<glassfish-ejb-jar>
+  <enterprise-beans>
+    <unique-id>1</unique-id>
+    <ejb>
+      <ejb-name>TheGreeter</ejb-name>
+    <jndi-name>greeter</jndi-name>
+    <per-request-load-balancing>true</per-request-load-balancing>
+    </ejb>
+  </enterprise-beans>
+</glassfish-ejb-jar>
+----
+3. Deploy the EJB.
++
+If the EJB was previously deployed, it must be redployed.
++
+For instructions on deploying EJBs, refer to the following documentation:
+
+* "link:application-deployment-guide/deploying-applications.html#GSDPG00033[To Deploy an Application or Module]" in {productName} Application Deployment Guide
+* "link:application-deployment-guide/deploying-applications.html#GSDPG00036[To Redeploy an Application or Module]" in {productName} Application Deployment Guide
+
+4. Verify the PRLB configuration by looking for the following `FINE`
+message in the CORBA log file:
++
+[source]
+----
+Setting per-request-load-balancing policyfor EJB EJB-name
+----
+5. Configure a client application to access the PRLB-enabled EJB.
++
+For example:
++
+[source,java]
+----
+public class EJBClient {
+  public static void main(String args[]) {
+  // ...
+  try {
+    // only one lookup
+    Object objref = initContext.lookup("test.cluster.loadbalancing.ejb.TestSessionBeanRemote");
+    myGreeterRemote = (TestSessionBeanRemote)PortableRemoteObject.narrow(objref, TestSessionBeanRemote.class);
+  } catch (Exception e) {
+    // ...
+  }
+
+  for (int i=0; i < 10; i++ ) {
+    // method calls in a loop.
+    String theMessage = myGreeterRemote.sayHello(Integer.toString(i));
+    System.out.println("got"+": " + theMessage);
+  }
+  }
+}
+----
+
+[[GSHAG443]]
+
+See Also
+
+See link:session-persistence-and-failover.html#abdle[Enabling the High
+Availability Session Persistence Service] for instructions on enabling
+the session availability service for a cluster or for a Web, EJB, or JMS
+container running in a cluster.
diff --git a/docs/ha-administration-guide/src/main/asciidoc/rolling-upgrade.adoc b/docs/ha-administration-guide/src/main/asciidoc/rolling-upgrade.adoc
new file mode 100644
index 0000000..b925b1d
--- /dev/null
+++ b/docs/ha-administration-guide/src/main/asciidoc/rolling-upgrade.adoc
@@ -0,0 +1,265 @@
+type=page
+status=published
+title=Upgrading Applications Without Loss of Availability
+next=session-persistence-and-failover.html
+prev=http-load-balancing.html
+~~~~~~
+
+= Upgrading Applications Without Loss of Availability
+
+[[GSHAG00010]][[abdik]]
+
+
+[[upgrading-applications-without-loss-of-availability]]
+== 8 Upgrading Applications Without Loss of Availability
+
+Upgrading an application to a new version without loss of availability
+to users is called a rolling upgrade. Carefully managing the two
+versions of the application across the upgrade ensures that current
+users of the application complete their tasks without interruption,
+while new users transparently get the new version of the application.
+With a rolling upgrade, users are unaware that the upgrade occurs.
+
+For more information about application versions and how they are
+identified, see "link:application-deployment-guide/overview.html#GSDPG00324[Module and Application Versions]" in
+{productName} Application Deployment Guide.
+
+In a clustered environment, a rolling upgrade redeploys an application
+with a minimal loss of service and sessions. A session is any artifact
+that can be replicated, for example:
+
+* `HttpSession`
+* `SingleSignOn`
+* `ServletTimer`
+* `DialogFragment`
+* Stateful session bean
+
+A rolling upgrade can take place under light to moderate loads. The
+procedure requires about 10-15 minutes for each {productName}
+instance.
+
+
+[CAUTION]
+====
+To prevent the risk of version mismatch when a session fails over,
+upgrade all instances in a cluster at the same time. Otherwise a session
+might fail over to an instance where different versions of components
+are running.
+====
+
+
+Perform this task on each cluster separately. A cluster acts as a safe
+boundary for session failover for instances in the cluster. Sessions in
+one cluster can never fail over to sessions in another cluster.
+Therefore, the risk of version mismatch is avoided.
+
+[[abdil]][[GSHAG00205]][[application-compatibility]]
+
+=== Application Compatibility
+
+Rolling upgrades pose varying degrees of difficulty depending on the
+magnitude of changes between the two application versions.
+
+If the changes are superficial, for example, changes to static text and
+images, the two versions of the application are compatible and can both
+run at once in the same cluster.
+
+Compatible applications must:
+
+* Use the same session information
+* Use compatible database schemas
+* Have generally compatible application-level business logic
+* Use the same physical data source
+
+You can perform a rolling upgrade of a compatible application in either
+a single cluster or multiple clusters. For more information, see
+link:#abdim[Upgrading In a Single Cluster].
+
+If the two versions of an application do not meet all the above
+criteria, then the applications are considered incompatible. Executing
+incompatible versions of an application in one cluster can corrupt
+application data and cause session failover to not function correctly.
+The problems depend on the type and extent of the incompatibility. It is
+good practice to upgrade an incompatible application by creating a
+"shadow cluster" to which to deploy the new version and slowly quiesce
+the old cluster and application. For more information, see
+link:#abdio[Upgrading Incompatible Applications].
+
+The application developer and administrator are the best people to
+determine whether application versions are compatible. If in doubt,
+assume that the versions are incompatible, since this is the safest
+approach.
+
+[[abdim]][[GSHAG00206]][[upgrading-in-a-single-cluster]]
+
+=== Upgrading In a Single Cluster
+
+You can perform a rolling upgrade of an application deployed to a single
+cluster, providing the cluster's configuration is not shared with any
+other cluster.
+
+[[fxxvd]][[GSHAG00151]][[to-upgrade-an-application-in-a-single-cluster]]
+
+==== To Upgrade an Application in a Single Cluster
+
+1. Deploy the upgraded application to the cluster in a disabled state
+and with a new version identifier. For example:
++
+[source]
+----
+asadmin> asadmin deploy --enabled=false --target myCluster myApp:1.1
+----
+
+2. Perform the following steps for each server instance in the cluster.
+[arabic]
+.. Quiesce one server instance in the cluster from the load balancer.
+   Follow these steps:
+... Disable the server instance using `asadmin disable-http-lb-server.`
+... Export the load balancer configuration file using
+    `asadmin export-http-lb-config`.
+... Copy the exported configuration file to the web server instance's
+    configuration directory. +
+    For example, for Sun Java System Web Server, the location is
+    web-server-install-dir``/https-``host-name``/config/loadbalancer.xml``.
+... Wait until the timeout has expired. +
+    Monitor the load balancer's log file.
+.. Enable the upgraded application version on the quiesced server instance. +
+   For example:
++
+[source]
+----
+asadmin> asadmin enable --target instance01 myApp:1.1
+----
+Enabling the upgraded application version automatically disables the previous version.
+.. Test the upgraded application on the server instance to make sure it runs correctly.
+.. Re-enable the server instance in load balancer. Follow these steps:
+... Enable the server instance using `asadmin enable-http-lb-server.`
+... Export the load balancer configuration file using
+    `asadmin export-http-lb-config`.
+... Copy the configuration file to the web server's configuration directory.
+
+[[abdin]][[GSHAG00207]][[upgrading-in-multiple-clusters]]
+
+=== Upgrading in Multiple Clusters
+
+[[fxxvb]][[GSHAG00152]][[to-upgrade-a-compatible-application-in-two-or-more-clusters]]
+
+==== To Upgrade a Compatible Application in Two or More Clusters
+
+Repeat the following procedure for each cluster.
+
+1. Deploy the upgraded application to one cluster in a disabled state
+and with a new version identifier. For example:
++
+[source]
+----
+asadmin> asadmin deploy --enabled=false --target myCluster myApp:1.1
+----
+
+2. Quiesce the cluster with the upgraded application from the load balancer.
+[arabic]
+.. Disable the cluster using `asadmin disable-http-lb-server`.
+.. Export the load balancer configuration file using
+`asadmin export-http-lb-config`.
+.. Copy the exported configuration file to the web server instance's configuration directory. +
+   For example, for Sun Java System Web Server, the location is
+   web-server-install-dir``/https-``host-name``/config/loadbalancer.xml``.
+.. Wait until the timeout has expired. +
+   Monitor the load balancer's log file.
+
+3. Enable the upgraded application version on the quiesced cluster. For example:
++
+[source]
+----
+asadmin> asadmin enable --target myCluster myApp:1.1
+----
+Enabling the upgraded application version automatically disables the
+previous version.
+
+4. Test the upgraded application on the cluster to make sure it runs correctly.
+
+5. Enable the cluster in the load balancer:
+[arabic]
+.. Enable the cluster using `asadmin enable-http-lb-server.`
+.. Export the load balancer configuration file using
+   `asadmin export-http-lb-config`.
+.. Copy the configuration file to the web server's configuration directory.
+
+[[abdio]][[GSHAG00208]][[upgrading-incompatible-applications]]
+
+=== Upgrading Incompatible Applications
+
+If the new version of the application is incompatible with the old
+version, use the following procedure. For information on what makes
+applications compatible, see link:#abdil[Application Compatibility].
+Also, you must upgrade incompatible application in two or more clusters.
+If you have only one cluster, create a "shadow cluster" for the upgrade,
+as described below.
+
+When upgrading an incompatible application:
+
+* Give the new version of the application a different version identifier
+from the old version of the application. The steps below assume that the
+application has a new version identifier.
+* If the data schemas are incompatible, use different physical data
+sources after planning for data migration.
+* Deploy the new version to a different cluster from the cluster where
+the old version is deployed.
+* Set an appropriately long timeout for the cluster running the old
+application before you take it offline, because the requests for the
+application won't fail over to the new cluster. These user sessions will
+simply fail.
+
+[[abdip]][[GSHAG00153]][[to-upgrade-an-incompatible-application-by-creating-a-second-cluster]]
+
+==== To Upgrade an Incompatible Application by Creating a Second Cluster
+
+1. Create a "shadow cluster" on the same or a different set of machines
+as the existing cluster. If you already have a second cluster, skip this
+step.
+[arabic]
+.. Use the Administration Console to create the new cluster and
+   reference the existing cluster's named configuration. +
+   Customize the ports for the new instances on each machine to avoid
+   conflict with existing active ports.
+.. For all resources associated with the cluster, add a resource
+   reference to the newly created cluster using
+   `asadmin create-resource-ref`.
+.. Create a reference to all other applications deployed to the cluster
+   (except the current upgraded application) from the newly created cluster
+   using `asadmin create-application-ref`.
+.. Configure the cluster to be highly available using
+   `asadmin configure-ha-cluster`.
+.. Create reference to the newly-created cluster in the load balancer
+   configuration file using `asadmin create-http-lb-ref.`
+
+2. Give the new version of the application a different version
+identifier from the old version.
+
+3. Deploy the new application version with the new cluster as the
+target. Use a different context root or roots.
+
+4. Start the new cluster while the other cluster is still running. +
+The start causes the cluster to synchronize with the domain and be
+updated with the new application.
+
+5. Test the application on the new cluster to make sure it runs correctly.
+
+6. Disable the old cluster from the load balancer using
+`asadmin disable-http-lb-server`.
+
+7. Set a timeout for how long lingering sessions survive.
+
+8. Enable the new cluster from the load balancer using
+`asadmin enable-http-lb-server`.
+
+9. Export the load balancer configuration file using
+`asadmin export-http-lb-config`.
+
+10. Copy the exported configuration file to the web server instance's configuration directory. +
+For example, for Sun Java System Web Server, the location is
+web-server-install-dir``/https-``host-name``/config/loadbalancer.xml``.
+
+11. After the timeout period expires or after all users of the old
+application have exited, stop the old cluster and undeploy the old
+application version.
diff --git a/docs/ha-administration-guide/src/main/asciidoc/session-persistence-and-failover.adoc b/docs/ha-administration-guide/src/main/asciidoc/session-persistence-and-failover.adoc
new file mode 100644
index 0000000..5770224
--- /dev/null
+++ b/docs/ha-administration-guide/src/main/asciidoc/session-persistence-and-failover.adoc
@@ -0,0 +1,680 @@
+type=page
+status=published
+title=Configuring High Availability Session Persistence and Failover
+next=jms.html
+prev=rolling-upgrade.html
+~~~~~~
+
+= Configuring High Availability Session Persistence and Failover
+
+[[GSHAG00011]][[abdkz]]
+
+[[configuring-high-availability-session-persistence-and-failover]]
+== 9 Configuring High Availability Session Persistence and Failover
+
+This chapter explains how to enable and configure high availability
+session persistence.
+
+* link:#abdla[Overview of Session Persistence and Failover]
+* link:#abdle[Enabling the High Availability Session Persistence Service]
+* link:#abdlp[Stateful Session Bean Failover]
+
+[[abdla]][[GSHAG00209]][[overview-of-session-persistence-and-failover]]
+
+=== Overview of Session Persistence and Failover
+
+{productName} provides high availability session persistence through
+failover of HTTP session data and stateful session bean (SFSB) session
+data. Failover means that in the event of an server instance or hardware
+failure, another server instance in a cluster takes over a distributed session.
+
+For example, Jakarta EE applications typically have significant amounts of
+session state data. A web shopping cart is the classic example of
+session state. Also, an application can cache frequently-needed data in
+the session object. In fact, almost all applications with significant
+user interactions need to maintain session state.
+
+[NOTE]
+====
+When using high availability session persistence together with a load
+balancer, use a load balancer that includes session-based stickiness as
+part of its load-balancing algorithm. Otherwise, session data can be
+misdirected or lost. An example of a load balancer that includes
+session-based stickiness is the Loadbalancer Plug-In available in {productName}.
+====
+
+The following topics are addressed here:
+
+* link:#abdlb[Requirements]
+* link:#abdlc[Restrictions]
+* link:#gksoq[Scope]
+
+[[abdlb]][[GSHAG00300]][[requirements]]
+
+==== Requirements
+
+A distributed session can run in multiple {productName}
+instances, if:
+
+* Each server instance has access to the same session state data.
+{productName} supports in-memory session replication on other servers
+in the cluster for maintaining HTTP session and stateful session bean
+data. In-memory session replication is enabled by default for {productName} clustered environments if the Group Management Service is enabled.
++
+The use of in-memory replication requires the Group Management Service
+(GMS) to be enabled. For more information about GMS, see
+link:clusters.html#gjfnl[Group Management Service].
++
+If server instances in a cluster are located on different hosts, ensure
+that the following prerequisites are met:
+
+** To ensure that GMS and in-memory replication function correctly, the
+hosts must be on the same subnet.
+
+** To ensure that in-memory replication functions correctly, the system
+clocks on all hosts in the cluster must be synchronized as closely as
+possible.
++
+[NOTE]
+====
+{productName} 7 does not support High Availability Database (HADB)
+configurations. Instead, use in-memory replication, as described in
+link:overview.html#gaynn[High Availability Session Persistence].
+====
+
+* Each server instance has the same distributable web application
+deployed to it. The `web-app` element of the `web.xml` deployment
+descriptor file must contain the `distributable` element.
+
+* The web application uses high-availability session persistence. If a
+non-distributable web application is configured to use high-availability
+session persistence, the server writes an error to the log file.
+
+* The web application must be deployed using the `deploy` or `deploydir`
+subcommand with the `--availabilityenabled` option set to `true`. For
+more information on these subcommands, see link:reference-manual/deploy.html#GSRFM00114[`deploy`(1)]
+and link:reference-manual/deploydir.html#GSRFM00115[`deploydir`(1)].
+
+[[abdlc]][[GSHAG00301]][[restrictions]]
+
+==== Restrictions
+
+When configuring session persistence and failover, note the following restrictions:
+
+* When a session fails over, any references to open files or network
+connections are lost. Applications must be coded with this restriction in mind.
+
+* EJB Singletons are created for each server instance in a cluster, and
+not once per cluster.
+
+* The high availability session persistence service is not compatible
+with dynamic deployment, dynamic reloading, and autodeployment. These
+features are for development, not production environments, so you must
+disable them before enabling the session persistence service.
+For information about how to disable these features, see the
+link:application-deployment-guide.html#GSDPG[
+{productName} Application Deployment Guide].
+
+* {productName} 7 does not support High Availability Database
+(HADB) configurations. Instead, use in-memory replication, as described
+in link:overview.html#gaynn[High Availability Session Persistence].
+
+* You can only bind certain objects to distributed sessions that support
+failover. Contrary to the Servlet 2.4 specification, {productName} 7 does not throw an `IllegalArgumentException` if an object type not
+supported for failover is bound into a distributed session.
++
+You can bind the following objects into a distributed session that
+supports failover:
+
+** Local home and object references for all EJB components.
+** Colocated stateless session, stateful session, or entity bean reference .
+** Distributed stateless session, stateful session, or entity bean reference.
+** JNDI Context for `InitialContext` and `java:comp/env`.
+** `UserTransaction` objects. However, if the instance that fails is
+never restarted, any prepared global transactions are lost and might not
+be correctly rolled back or committed.
+** Serializable Java types.
+
+* You cannot bind the following object types into sessions that support failover:
+
+** JDBC DataSource
+** Java Message Service (JMS) `ConnectionFactory` and `Destination` objects
+** JavaMail Session
+** Connection Factory
+** Administered Objects
+** Web service reference +
+In general, for these objects, failover will not work. However, failover
+might work in some cases, if for example the object is serializable.
+
+[[gksoq]][[GSHAG00302]][[scope]]
+
+Scope
+^^^^^
+
+The availability service can be enabled for the following scopes,
+ranging from highest to lowest:
+
+* Cluster
+* Standalone server instance (not part of a cluster)
+* Web, EJB, or JMS container in a cluster
+* Application
+* Standalone Web, EJB, or JMS module
+* Individual Stateful Session Bean (SFSB)
+
+In general, enabling or disabling availability session persistence for a
+cluster or container involves setting the boolean `availability-service`
+property to `true` or `false` by means of the `asadmin set` subcommand.
+The availability service is enabled by default for {productName}
+clusters and all Web, EJB, and JMS containers running in a cluster.
+
+The value set for the `availability-service` property is inherited by
+all child objects running in a given cluster or container unless the
+value is explicitly overridden at the individual module or application
+level. For example, if the `availability-service` property is set to
+`true` for an EJB container, the availability service will be enabled by
+default for all EJB modules running in that container.
+
+Conversely, to enable availability at a given scope, you must enable it
+at all higher levels as well. For example, to enable availability at the
+application level, you must also enable it at the cluster or server
+instance and container levels.
+
+[[abdle]][[GSHAG00210]][[enabling-the-high-availability-session-persistence-service]]
+
+=== Enabling the High Availability Session Persistence Service
+
+This section explains how to configure and enable the high availability
+session persistence service.
+
+* link:#abdlf[To Enable Availability for a Cluster, Standalone Instance or Container]
+* link:#abdll[Configuring Availability for Individual Web Applications]
+* link:#gkwqu[Configuring Replication and Multi-Threaded Concurrent Access to `HttpSessions`]
+* link:#abdln[Using Single Sign-on with Session Failover]
+* link:#gkyyl[Using Coherence*Web for HTTP Session Persistence]
+
+[[abdlf]][[GSHAG00154]][[to-enable-availability-for-a-cluster-standalone-instance-or-container]]
+
+==== To Enable Availability for a Cluster, Standalone Instance or Container
+
+This procedure explains how to enable high availability for a cluster as
+a whole, or for Web, EJB, or JMS containers that run in a cluster, or
+for a standalone server instance that is not part of a cluster.
+
+1. Create a {productName} cluster.
++
+For more information, see link:clusters.html#gkqdm[To Create a Cluster].
+
+2. Set up load balancing for the cluster.
++
+For instructions, see link:http-load-balancing.html#abdgx[Setting Up HTTP Load Balancing].
+
+3. Verify that the cluster and all instances within the cluster for
+which you want to enable availability is running.
++
+These steps are also necessary when enabling availability for a Web,
+EJB, or JMS container running in a cluster. The cluster and all
+instances in the cluster for which you want to enable availability must be running.
+[arabic]
+.. Verify that the cluster is running.
++
+[source]
+----
+asadmin> list-clusters
+----
+A list of clusters and their status (running, not running) is displayed.
+If the cluster for which you want to enable availability is not running,
+you can start it with the following command:
++
+[source]
+----
+asadmin> start-cluster cluster-name
+----
+.. Verify that all instances in the cluster are running.
++
+[source]
+----
+asadmin> list-instances
+----
+A list of instances and their status is displayed. If the instances for
+which you want to enable availability are not running, you can start
+them by using the following command for each instance:
++
+[source]
+----
+asadmin> start-instance instance-name
+----
+
+4. Use one of the following `asadmin` olink:GSRFM00226[`set`]
+subcommands to enable availability for a specific cluster, or for a
+specific Web, EJB, or JMS container.
+* For a cluster as a whole
++
+[source]
+----
+asadmin> set cluster-name-config.availability-service.availability-enabled=true
+----
+For example, for a cluster named `c1`:
++
+[source]
+----
+asadmin> set c1-config.availability-service.availability-enabled=true
+----
+* For the Web container in a cluster
++
+[source]
+----
+asadmin> set cluster-name-config.availability-service \
+.web-container-availability.availability-enabled=true
+----
+* For the EJB container in a cluster
++
+[source]
+----
+asadmin> set cluster-name-config.availability-service \
+.ejb-container-availability.availability-enabled=true
+----
+* For the JMS container in a cluster
++
+[source]
+----
+asadmin> set cluster-name-config.availability-service \
+.jms-availability.availability-enabled=true
+----
+* For a standalone server instance (not part of a cluster)
++
+[source]
+----
+asadmin> set instance-name-config.availability-service.availability-enabled=true
+----
+
+5. Restart the standalone server instance or each server instance in the cluster.
+
+6. Enable availability for any SFSB that requires it.
++
+Select methods for which checkpointing the session state is necessary.
+For more information, see link:#abdlu[Configuring Availability for an Individual Bean].
+
+7. Make each web module distributable if you want it to be highly available.
++
+For more information, see "link:application-deployment-guide/deploying-applications.html#GSDPG00067[Web Module Deployment
+Guidelines]" in {productName} Application Deployment Guide.
+
+8. Enable availability for individual applications, web modules, or EJB
+modules during deployment.
++
+See the links below for instructions.
+
+[[GSHAG430]]
+
+See Also
+
+* link:#abdll[Configuring Availability for Individual Web Applications]
+* link:#abdln[Using Single Sign-on with Session Failover]
+
+[[abdll]][[GSHAG00303]][[configuring-availability-for-individual-web-applications]]
+
+==== Configuring Availability for Individual Web Applications
+
+To enable and configure availability for an individual web application,
+edit the application deployment descriptor file, `glassfish-web.xml`.
+The settings in an application's deployment descriptor override the web
+container's availability settings.
+
+The `session-manager` element's `persistence-type` attribute determines
+the type of session persistence an application uses. It must be set to
+`replicated` to enable high availability session persistence.
+
+[[abdlm]][[GSHAG00247]][[example]]
+
+===== Example
+
+[source,xml]
+----
+<glassfish-web-app> ...
+  <session-config>
+    <session-manager persistence-type="replicated">
+      <manager-properties>
+        <property name="persistenceFrequency" value="web-method" />
+      </manager-properties>
+      <store-properties>
+        <property name="persistenceScope" value="session" />
+      </store-properties>
+    </session-manager> ...
+</session-config> ...
+----
+
+[[gkwqu]][[GSHAG00304]][[configuring-replication-and-multi-threaded-concurrent-access-to-httpsessions]]
+
+==== Configuring Replication and Multi-Threaded Concurrent Access to `HttpSessions`
+
+If you are using Memory Replication and your web application involves
+multiple client threads concurrently accessing the same session ID, then
+you may experience session loss even without any instance failure. The
+problem is that the {productName} 7 memory replication framework
+makes use of session versioning. This feature was designed with the more
+traditional HTTP request/response communication model in mind.
+
+However, for some types of applications, the traditional
+request/response model does not work. Examples include many Ajax-related
+frameworks and the use of Frames. Another example is when a page
+includes many static resources, such as JPG files. In these situations,
+most browsers will optimize the loading of these resources by using
+multiple parallel connections, each of which is handled by a separate
+request processing thread. If the application has already established a
+session, then this will also involve more than one thread at a time
+accessing a single `HttpSession`.
+
+The solution in such cases is to use the `relaxVersionSemantics`
+property in the `glassfish-web.xml` deployment descriptor file for the
+application. This enables the web container to return for each
+requesting thread whatever version of the session that is in the active
+cache regardless of the version number. This is critical when multiple
+threads are interacting in an essentially non-deterministic fashion with
+the container.
+
+[[gkwrj]][[GSHAG00248]][[example-1]]
+
+===== Example
+
+The following is an example snippet from a `glassfish-web.xml` file that
+illustrates where to add the `relaxVersionSemantics` property.
+
+[source,xml]
+----
+<glassfish-web-app>
+  <session-config>
+    <session-manager persistence-type="replicated">
+      <manager-properties>
+    <property name="relaxCacheVersionSemantics" value="true"/>
+      </manager-properties>
+    </session-manager>
+  </session-config>
+
+.....
+</glassfish-web-app>
+----
+
+[[abdln]][[GSHAG00305]][[using-single-sign-on-with-session-failover]]
+
+==== Using Single Sign-on with Session Failover
+
+In a single application server instance, once a user is authenticated by
+an application, the user is not required to re-authenticate individually
+to other applications running on the same instance. This is called
+single sign-on.
+
+For this feature to continue to work even when an HTTP session fails
+over to another instance in a cluster, single sign-on information must
+be persisted using in-memory replication. To persist single sign-on
+information, first, enable availability for the server instance and the
+web container, then enable single-sign-on state failover.
+
+You can enable single sign-on state failover by using the `asadmin set`
+command to set the configuration's
+`availability-service.web-container-availability.sso-failover-enabled`
+property to true.
+
+For example, use the `set` command as follows, where `config1` is the
+configuration name:
+
+[source]
+----
+asadmin> set config1.availability-service.web-container-availability. \
+sso-failover-enabled="true"
+----
+
+[[abdlo]][[GSHAG00249]][[single-sign-on-groups]]
+
+===== Single Sign-On Groups
+
+Applications that can be accessed through a single name and password
+combination constitute a single sign-on group. For HTTP sessions
+corresponding to applications that are part of a single sign-on group,
+if one of the sessions times out, other sessions are not invalidated and
+continue to be available. This is because time out of one session should
+not affect the availability of other sessions.
+
+As a corollary of this behavior, if a session times out and you try to
+access the corresponding application from the same browser window that
+was running the session, you are not required to authenticate again.
+However, a new session is created.
+
+Take the example of a shopping cart application that is a part of a
+single sign-on group with two other applications. Assume that the
+session time out value for the other two applications is higher than the
+session time out value for the shopping cart application. If your
+session for the shopping cart application times out and you try to run
+the shopping cart application from the same browser window that was
+running the session, you are not required to authenticate again.
+However, the previous shopping cart is lost, and you have to create a
+new shopping cart. The other two applications continue to run as usual
+even though the session running the shopping cart application has timed
+out.
+
+Similarly, suppose a session corresponding to any of the other two
+applications times out. You are not required to authenticate again while
+connecting to the application from the same browser window in which you
+were running the session.
+
+
+[NOTE]
+====
+This behavior applies only to cases where the session times out. If
+single sign-on is enabled and you invalidate one of the sessions using
+`HttpSession.invalidate()`, the sessions for all applications belonging
+to the single sign-on group are invalidated. If you try to access any
+application belonging to the single sign-on group, you are required to
+authenticate again, and a new session is created for the client
+accessing the application.
+====
+
+
+[[gkyyl]][[GSHAG00306]][[using-coherenceweb-for-http-session-persistence]]
+
+==== Using Coherence*Web for HTTP Session Persistence
+
+Built on top of Oracle Coherence, Coherence*Web is an HTTP session
+management module dedicated to managing session state in clustered
+environments. Starting with Coherence 3.7 and {productName} 7,
+there is a new feature of Coherence*Web called ActiveCache for
+GlassFish. ActiveCache for GlassFish provides Coherence*Web
+functionality in web applications deployed on {productName}s. Within
+{productName}, Coherence*Web functions as an additional web container
+persistence type, named `coherence-web`.
+
+For information about how to configure and deploy Coherence*Web on
+{productName}, see
+http://download.oracle.com/docs/cd/E18686_01/coh.37/e18690/glassfish.html[Using
+Coherence*Web with {productName}]
+(`http://docs.oracle.com/cd/E18686_01/coh.37/e18690/glassfish.html`).
+
+[[abdlp]][[GSHAG00211]][[stateful-session-bean-failover]]
+
+=== Stateful Session Bean Failover
+
+Stateful session beans (SFSBs) contain client-specific state. There is a
+one-to-one relationship between clients and the stateful session beans.
+At creation, the EJB container gives each SFSB a unique session ID that
+binds it to a client.
+
+An SFSB's state can be saved in a persistent store in case a server
+instance fails. The state of an SFSB is saved to the persistent store at
+predefined points in its life cycle. This is called
+
+checkpointing. If enabled, checkpointing generally occurs after the bean
+completes any transaction, even if the transaction rolls back.
+
+However, if an SFSB participates in a bean-managed transaction, the
+transaction might be committed in the middle of the execution of a bean
+method. Since the bean's state might be undergoing transition as a
+result of the method invocation, this is not an appropriate time to
+checkpoint the bean's state. In this case, the EJB container checkpoints
+the bean's state at the end of the corresponding method, provided the
+bean is not in the scope of another transaction when that method ends.
+If a bean-managed transaction spans across multiple methods,
+checkpointing is delayed until there is no active transaction at the end
+of a subsequent method.
+
+The state of an SFSB is not necessarily transactional and might be
+significantly modified as a result of non-transactional business
+methods. If this is the case for an SFSB, you can specify a list of
+checkpointed methods, as described in link:#abdlw[Specifying Methods to
+Be Checkpointed]
+
+If a distributable web application references an SFSB, and the web
+application's session fails over, the EJB reference is also failed over.
+
+If an SFSB that uses session persistence is undeployed while the
+{productName} instance is stopped, the session data in the
+persistence store might not be cleared. To prevent this, undeploy the
+SFSB while the {productName} instance is running.
+
+[[abdlq]][[GSHAG00307]][[configuring-availability-for-the-ejb-container]]
+
+==== Configuring Availability for the EJB Container
+
+To enable availability for the EJB container use the `asadmin set`
+command to set the following three properties for the configuration:
+
+* `availability-service.ejb-container-availability.availability-enabled`
+* `availability-service.ejb-container-availability.sfsb-persistence-type`
+* `availability-service.ejb-container-availability.sfsb-ha-persistence-type`
+
+For example, if `config1` is the configuration name, use the following
+commands:
+
+[source]
+----
+asadmin> set --user admin --passwordfile password.txt
+--host localhost
+--port 4849
+config1.availability-service.
+ejb-container-availability.availability-enabled="true"
+
+asadmin> set --user admin --passwordfile password.txt --host localhost --port
+4849
+config1.availability-service.
+ejb-container-availability.sfsb-persistence-type="file"
+asadmin> set --user admin --passwordfile password.txt
+--host localhost
+--port 4849
+config1.availability-service.
+ejb-container-availability.sfsb-ha-persistence-type="replicated"
+----
+
+[[abdls]][[GSHAG00250]][[configuring-the-sfsb-session-store-when-availability-is-disabled]]
+
+===== Configuring the SFSB Session Store When Availability Is Disabled
+
+If availability is disabled, the local file system is used for SFSB
+state passivation, but not persistence. To change where the SFSB state
+is stored, change the Session Store Location setting in the EJB
+container. For information about configuring store properties, see the
+Administration Console online help.
+
+[[abdlt]][[GSHAG00308]][[configuring-availability-for-an-individual-application-or-ejb-module]]
+
+==== Configuring Availability for an Individual Application or EJB Module
+
+You can enable SFSB availability for an individual application or EJB
+module during deployment:
+
+* If you are deploying with the Administration Console, check the
+Availability Enabled checkbox.
+* If you are deploying using use the `asadmin deploy` or
+`asadmin deploydir` commands, set the `--availabilityenabled` option to
+`true`. For more information, see link:reference-manual/deploy.html#GSRFM00114[`deploy`(1)] and
+link:reference-manual/deploydir.html#GSRFM00115[`deploydir`(1)].
+
+[[abdlu]][[GSHAG00309]][[configuring-availability-for-an-individual-bean]]
+
+==== Configuring Availability for an Individual Bean
+
+To enable availability and select methods to be checkpointed for an
+individual SFSB, use the `glassfish-ejb-jar.xml` deployment descriptor
+file.
+
+To enable high availability session persistence, set
+`availability-enabled="true"` in the `ejb` element.
+
+[[GSHAG00068]][[fxjqx]]
+Example 9-1 Example of an EJB Deployment Descriptor With Availability
+Enabled
+
+[source,xml]
+----
+<glassfish-ejb-jar>
+    ...
+    <enterprise-beans>
+        ...
+        <ejb availability-enabled="true">
+            <ejb-name>MySFSB</ejb-name>
+        </ejb>
+        ...
+    </enterprise-beans>
+</glassfish-ejb-jar>
+----
+
+[[abdlw]][[GSHAG00310]][[specifying-methods-to-be-checkpointed]]
+
+==== Specifying Methods to Be Checkpointed
+
+If enabled, checkpointing generally occurs after the bean completes any
+transaction, even if the transaction rolls back. To specify additional
+optional checkpointing of SFSBs at the end of non-transactional business
+methods that cause important modifications to the bean's state, use the
+`checkpoint-at-end-of-method` element in the `ejb` element of the
+`glassfish-ejb-jar.xml` deployment descriptor file.
+
+The non-transactional methods in the `checkpoint-at-end-of-method`
+element can be:
+
+* `create()` methods defined in the home interface of the SFSB, if you
+want to checkpoint the initial state of the SFSB immediately after
+creation
+* For SFSBs using container managed transactions only, methods in the
+remote interface of the bean marked with the transaction attribute
+`TX_NOT_SUPPORTED` or `TX_NEVER`
+* For SFSBs using bean managed transactions only, methods in which a
+bean managed transaction is neither started nor committed
++
+Any other methods mentioned in this list are ignored. At the end of
+invocation of each of these methods, the EJB container saves the state
+of the SFSB to persistent store.
+
+
+[NOTE]
+====
+If an SFSB does not participate in any transaction, and if none of its
+methods are explicitly specified in the `checkpoint-at-end-of-method`
+element, the bean's state is not checkpointed at all even if
+`availability-enabled="true"` for this bean.
+
+For better performance, specify a small subset of methods. The methods
+should accomplish a significant amount of work or result in important
+modification to the bean's state.
+====
+
+
+[[GSHAG00069]][[fxjqg]]
+Example 9-2 Example of EJB Deployment Descriptor Specifying Methods
+Checkpointing
+
+[source,xml]
+----
+<glassfish-ejb-jar>
+    ...
+    <enterprise-beans>
+        ...
+        <ejb availability-enabled="true">
+            <ejb-name>ShoppingCartEJB</ejb-name>
+            <checkpoint-at-end-of-method>
+                <method>
+                    <method-name>addToCart</method-name>
+                </method>
+            </checkpoint-at-end-of-method>
+        </ejb>
+        ...
+    </enterprise-beans>
+</glassfish-ejb-jar>
+----
diff --git a/docs/ha-administration-guide/src/main/asciidoc/ssh-setup.adoc b/docs/ha-administration-guide/src/main/asciidoc/ssh-setup.adoc
new file mode 100644
index 0000000..5cc64ad
--- /dev/null
+++ b/docs/ha-administration-guide/src/main/asciidoc/ssh-setup.adoc
@@ -0,0 +1,1950 @@
+type=page
+status=published
+title=Enabling Centralized Administration of {productName} Instances
+next=nodes.html
+prev=overview.html
+~~~~~~
+
+= Enabling Centralized Administration of {productName} Instances
+
+[[GSHAG00003]][[gkshg]]
+
+
+[[enabling-centralized-administration-of-glassfish-server-instances]]
+== 2 Enabling Centralized Administration of {productName} Instances
+
+{productName} uses the Distributed Component Object Model (DCOM)
+remote protocol or secure shell (SSH) to ensure that clusters that span
+multiple hosts can be administered centrally. To perform administrative
+operations on {productName} instances that are remote from the domain
+administration server (DAS), the DAS must be able to communicate with
+those instances. If an instance is running, the DAS connects to the
+running instance directly. For example, when you deploy an application
+to an instance, the DAS connects to the instance and deploys the
+application to the instance.
+
+However, the DAS cannot connect to an instance to perform operations on
+an instance that is not running, such as creating or starting the
+instance. For these operations, the DAS uses DCOM or SSH to contact a
+remote host and administer instances there. DCOM or SSH provides
+confidentiality and security for data that is exchanged between the DAS
+and remote hosts.
+
+
+[NOTE]
+====
+The use of DCOM or SSH to enable centralized administration of remote
+instances is optional. If the use of DCOM or SSH is not feasible in your
+environment, you can administer remote instances locally.
+====
+
+
+The following topics are addressed here:
+
+* link:#gkshz[About Centralized Administration of {productName} Instances]
+* link:#CEGIFJJF[Setting Up DCOM and Testing the DCOM Set Up]
+* link:#gksiy[Setting Up Cygwin SSH on Windows]
+* link:#gkskf[Setting Up the MKS Toolkit on Windows]
+* link:#gksja[Setting Up SSH on UNIX and Linux Systems]
+* link:#gkslw[Testing the SSH Setup on a Host]
+* link:#gkshh[Setting Up SSH User Authentication]
+* link:#gkshn[Installing and Removing {productName} Software on Multiple Hosts]
+
+[[gkshz]][[GSHAG00172]][[about-centralized-administration-of-glassfish-server-instances]]
+
+=== About Centralized Administration of {productName} Instances
+
+The use of DCOM or SSH to enable centralized administration of remote
+instances is optional and is required only for specific operations.
+Instances local to the DAS can be administered without DCOM or SSH. If
+DCOM or SSH is not practicable in your environment, you can administer
+remote instances locally.
+
+[[GSHAG446]][[sthref4]]
+
+
+[[determining-whether-to-enable-centralized-administration]]
+==== Determining Whether to Enable Centralized Administration
+
+Before setting up a {productName} cluster, use the following
+considerations to determine whether to enable centralized administration
+of remote instances:
+
+* If you are planning a large cluster of many instances, consider
+enabling centralized administration of instances in the cluster.
+Centralized administration of instances simplifies the administration of
+the cluster by enabling you to perform all administrative operations on
+the cluster and its instances from the DAS.
+* If you are planning a small cluster of few instances, consider whether
+enabling centralized administration requires more effort than logging in
+to individual hosts to administer remote instances locally.
+
+How you administer instances and the nodes on which they resides varies
+depending on whether and how centralized administration is enabled. The
+following table provides cross-references to instructions for
+administering nodes and instances depending on the protocol that is used
+for enabling centralized administration, if any.
+
+[width="100%",cols="<15%,<42%,<43%",options="header",]
+|===
+|Protocol |Node Administration Instructions |Instance Administration Instructions
+
+|DCOM
+|link:nodes.html#CHDBIHFJ[Creating, Listing, Testing, and Deleting `DCOM` Nodes]
+|link:instances.html#gkqal[Administering {productName} Instances Centrally]
+
+|SSH
+|link:nodes.html#gkrkn[Creating, Listing, Testing, and Deleting `SSH` Nodes]
+|link:instances.html#gkqal[Administering {productName} Instances Centrally]
+
+|None
+|link:nodes.html#gkrnp[Creating, Listing, and Deleting `CONFIG` Nodes]
+|link:instances.html#gkqdw[Administering {productName} Instances Locally]
+|===
+
+
+[[GSHAG447]][[sthref5]]
+
+
+[[considerations-for-using-dcom-for-centralized-administration]]
+==== Considerations for Using DCOM for Centralized Administration
+
+DCOM enables communications between Windows hosts. In a typical
+{productName} deployment, the DAS acts as a DCOM client, and hosts
+where instances reside act as DCOM servers. To create or start an
+instance on a remote host, the DAS instructs the DCOM server on the host
+to start the `asadmin` utility of {productName}. The `asadmin`
+utility then performs the required operation on the host to create or
+start the instance.
+
+The DCOM service must be running on hosts where instances reside, but is
+not required to be running on the DAS host. The DAS uses its own DCOM
+client for communicating with hosts where instances reside. On Windows
+hosts, the DCOM server is typically running by default as a Windows Service.
+
+DCOM is available only with the Windows operating system. Because DCOM
+is typically installed and preconfigured, minimal additional setup is
+required to use DCOM with {productName}.
+
+Before setting up DCOM, decide which Windows user {productName} will
+use when connecting to remote hosts. For the following reasons,
+administration is simplest if the Windows user is the user that starts the DAS:
+
+* Remote instances are started as the Windows user.
+* By default, the DAS assumes that the Windows user is the user that is running the DAS.
+
+[[GSHAG320]][[sthref6]]
+
+
+[[considerations-for-using-ssh-for-centralized-administration]]
+==== Considerations for Using SSH for Centralized Administration
+
+In a typical {productName} deployment, the DAS acts as the SSH
+client, and hosts where instances reside act as SSH servers. The SSH
+Server Daemon `sshd` must be running on hosts where instances reside,
+but is not required to be running on the DAS host. The DAS uses its own
+SSH client for communicating with hosts where instances reside. However,
+to generate keys and test SSH setup, a native SSH client must be
+installed on the DAS host.
+
+The requirements for SSH configuration and user management are different
+for each operating system on which {productName} is supported.
+Therefore, the use of SSH for centralized administration involves using
+SSH tools to configure SSH on the operating system that you are using.
+
+On UNIX and Linux systems, SSH is typically installed and preconfigured,
+and requires minimal additional setup. On Windows systems, additional
+setup is required to install and configure an SSH provider.
+
+[[gksmt]][[GSHAG00262]][[obtaining-ssh-software]]
+
+===== Obtaining SSH Software
+
+On UNIX and Linux systems, SSH software is typically installed as part
+of the base operating system.
+
+However, on Windows systems, you must install one of the following SSH providers:
+
+* http://www.cygwin.com/[Cygwin] (`http://www.cygwin.com/`) release 1.7.6
+* http://www.mkssoftware.com[MKS Toolkit for Developers]
+ (`http://www.mkssoftware.com`) release 9.2
+
+[[gkshj]][[GSHAG00263]][[determining-the-ssh-user]]
+
+===== Determining the SSH User
+
+Before setting up SSH, decide which SSH user {productName} will use
+when connecting to remote hosts. For the following reasons,
+administration is simplest if the SSH user is the user that starts the
+DAS:
+
+* For public key authentication, the user that starts the DAS must be
+able to read the SSH user's private key file.
+* Remote instances are started as the SSH user.
+* By default, the DAS assumes that the SSH user is the user that is
+running the DAS.
+
+[[glghe]][[GSHAG00222]][[requirements-for-the-ssh-users-environment]]
+
+===== Requirements for the SSH User's Environment
+
+The environment of the SSH user on any remote host to which the user
+will connect must meet the requirements that are stated in
+"link:release-notes/release-notes.html#GSRLN00252[Paths and Environment Settings for the JDK Software]"
+in {productName} Release Notes.
+
+The SSH user's environment on a host is set by the environment set-up
+files that are run when the user uses SSH to run a command on the host.
+You must ensure that these files set up the SSH user's environment
+correctly.
+
+The files that are run when the user uses SSH to run a command are
+different than the files that are run when the user logs in to a host.
+For example, in the bash shell, `.profile` and `.bashrc` are run when
+the user logs in, but only `.bashrc` is run when the user runs a
+command. Therefore, in the bash shell, you must ensure that `.bashrc`
+contains the required environment settings for the SSH user.
+
+[[glgfy]][[GSHAG00223]][[file-access-permissions-on-uac-enabled-windows-systems]]
+
+===== File Access Permissions on UAC-Enabled Windows Systems
+
+
+[NOTE]
+====
+The http://technet.microsoft.com/en-us/library/cc709691%28WS.10%29.aspx[User
+Account Control (UAC)](`http://technet.microsoft.com/en-us/library/cc709691%28WS.10%29.aspx`)
+feature is available only on some versions of the Windows operating
+system, for example, Windows 7, Windows Vista, and Windows 2008.
+====
+
+
+You might be using a UAC-enabled Windows system and choose to store
+files for {productName} instances in a directory other than the SSH
+user's home directory. In this situation, the SSH user must have native
+(that is, nonvirtual) read and write access to the file system where the
+instances are to be stored. The OS-level administrator has such access
+by default. You can also configure the system to grant such access to
+other users. For more information, see the documentation for the Windows
+operating system.
+
+[[CEGIFJJF]][[GSHAG448]][[setting-up-dcom-and-testing-the-dcom-set-up]]
+
+=== Setting Up DCOM and Testing the DCOM Set Up
+
+Setting up DCOM on a host involves the following tasks:
+
+* Verifying Windows operating system settings for the host
+* Enabling the Windows user to run scripts on the host
+* Setting up password authentication for the Windows user on the host
+
+Set up DCOM on all hosts where instances in your cluster will reside.
+
+After setting up DCOM on a host, test the connection over DCOM to the
+host.
+
+[[CEGDAFHD]][[GSHAG449]][[windows-operating-system-settings]]
+
+==== Windows Operating System Settings
+
+To enable access to a host over DCOM, ensure that the following items in
+the Windows operating system are set as follows on the host:
+
+* The following services are in the started state and are set to start automatically:
+
+** Server
+** Remote Registry
+
+* Network Access: Sharing security model for local accounts is set to Classic.
+* The following ports are open:
+
+** DCOM port 135 or 139
+** Windows Shares port 445
+
+[[CEGCJGCF]][[GSHAG450]][[to-enable-the-windows-user-to-run-scripts-on-a-remote-host]]
+
+==== To Enable the Windows User to Run Scripts on a Remote Host
+
+To run scripts on a remote host, full control over the following Windows
+registry keys must be allowed for the Windows user or the group that
+contains the Windows user:
+
+* One of the following keys, depending on the processor architecture of the host:
+
+** 32-bit architecture: +
+   HKEY_LOCAl_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID\\{76A64158-CB41-11D1-8B02-00600806D9B6}
+** 64-bit architecture: +
+   HKEY_LOCAl_MACHINE\SOFTWARE\Classes\CLSID\\{76A64158-CB41-11D1-8B02-00600806D9B6}
+
+* HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\\{72C24DD5-D70A-438B-8A42-98424B88AFB8}
+
+In some versions of Windows, only the user `NT SERVICE\TrustedInstaller`
+has full control over these Windows registry keys. If your version of
+Windows is configured in this way, you must modify these keys to allow
+full control over them for the Windows user or the group that contains
+the Windows user.
+
+
+[NOTE]
+====
+Only the operating-system-level administrator user can edit the Windows registry.
+====
+
+
+Perform this procedure for each Windows registry key that you are
+modifying on each host where instances in your cluster will reside.
+
+1. If necessary, start the Registry Editor.
++
+[source]
+----
+regedit.exe
+----
+The Registry Editor window opens.
+
+2. In the Registry Editor window, navigate to the registry key that you are modifying.
+
+3. Select the key, click mouse button 3, and from the pop-up menu that
+opens, select Permissions.
++
+The Permissions window for the key opens.
+
+4. Determine whether full control is allowed for the Windows user or
+the group that contains the Windows user.
+* If full control is allowed, no further action is required.
+* If full control is not allowed, allow full control as follows:
+[arabic]
+.. In the Permissions window, click Advanced. +
+The Advanced Security Settings window for the key opens.
+.. In the Advanced Security Settings window, select the Owner tab.
+.. From the Change owner to list, select the Windows user or the group
+that contains the Windows user.
+.. Ensure that the Replace owner on subcontainer and objects option is selected.
+.. Click Apply, then OK. +
+The Advanced Security Settings window closes. The Permissions window
+shows that full control is allowed for the Windows user or the group
+that contains the Windows user.
+
+.. In the Permissions window, click OK. The Permissions window closes.
+
+5. After modifying all the Windows registry keys over which full
+control is required, quit the Registry Editor.
+
+[[GSHAG451]]
+
+Next Steps
+
+Set up password authentication for the Windows user as explained in
+link:#CEGCDCEF[To Set Up Password Authentication for the Windows User].
+
+[[CEGCDCEF]][[GSHAG452]][[to-set-up-password-authentication-for-the-windows-user]]
+
+==== To Set Up Password Authentication for the Windows User
+
+When a {productName} subcommand uses DCOM to log in to a remote host,
+{productName} requires the Windows user's password to authenticate
+the Windows user. To provide this password securely to {productName},
+create a {productName} password alias to represent the password and
+store this alias in a password file that is passed to the
+link:reference-manual/asadmin.html#GSRFM00263[`asadmin`] utility.
+
+[[GSHAG453]]
+
+Before You Begin
+
+Ensure that the following prerequisites are met:
+
+* The Windows user is a valid user on the host to which you are testing
+the connection over DCOM.
+* Items in the Windows operating system are set on the host as described
+in link:#CEGDAFHD[Windows Operating System Settings].
+* The Windows user is able to run scripts on the host. For more
+information, see link:#CEGCJGCF[To Enable the Windows User to Run
+Scripts on a Remote Host].
+
+1. Ensure that the DAS is running. +
+Remote subcommands require a running server.
+
+2. [[CEGGAHFH]]
+Create an alias for the Windows user's password.
++
+[NOTE]
+====
+Only the options that are required to complete this task are provided in
+this step. For information about all the options for creating a password
+alias, see the link:reference-manual/create-password-alias.html#GSRFM00049[`create-password-alias`(1)] help page.
+====
++
+[source]
+----
+asadmin> create-password-alias alias-name
+----
++
+alias-name::
+  Your choice of name for the alias that you are creating.
++
+The `create-password-alias` subcommand prompts you to type the password
+for which you are creating an alias.
+
+3. In response to the prompt, type the Windows user's password. +
+The `create-password-alias` subcommand prompts you to type the password again.
+
+4. In response to the prompt, type the Windows user's password again.
+
+5. Create a plain text file that contains the following entry for the
+password alias:
++
+[source]
+----
+AS_ADMIN_WINDOWSPASSWORD=${ALIAS=alias-name}
+----
+alias-name::
+  The alias name that you specified in Step link:#CEGGAHFH[2].
++
+
+[NOTE]
+====
+When you create a `DCOM` node, pass this file as the `--passwordfile`
+option of the `asadmin` utility. For more information, see
+link:nodes.html#CHDIGBJB[To Create a `DCOM` Node].
+====
+
+
+[[GSHAG454]][[sthref7]]
+Example 2-1 Creating an Alias for the Windows User's Password
+
+This example creates an alias that is named `winuser-password` for the
+Windows user's password.
+
+[source]
+----
+$ asadmin create-password-alias winuser-password
+Enter the alias password>
+Enter the alias password again>
+Command create-password-alias executed successfully.
+----
+
+The entry in the password file for the `winuser-password` alias is as
+follows:
+
+[source]
+----
+AS_ADMIN_WINDOWSPASSWORD=${ALIAS=winuser-password}
+----
+
+[[GSHAG455]]
+
+See Also
+
+* link:reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)]
+* link:reference-manual/create-password-alias.html#GSRFM00049[`create-password-alias`(1)]
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-password-alias` at the command line.
+
+[[GSHAG456]]
+
+Next Steps
+
+Test the DCOM setup as explained in link:#CEGJFADH[To Test the
+Connection Over DCOM to a Remote Host].
+
+[[CEGJFADH]][[GSHAG457]][[to-test-the-connection-over-dcom-to-a-remote-host]]
+
+==== To Test the Connection Over DCOM to a Remote Host
+
+Testing the connection over DCOM to a remote host verifies that the
+required Windows services are running, the required ports are open, and
+the Windows user has a valid user account on the host.
+
+Before attempting to perform any task that the requires the DAS contact
+the DCOM server on a remote host, test the connection over DCOM to the
+host. If this test fails, any attempt to perform a task that the
+requires the DAS contact the DCOM server on the host will also fail.
+Examples of such tasks are creating a DCOM node to represent the host or
+creating an instance that resides on the host. For more information, see
+link:nodes.html#CHDIGBJB[To Create a `DCOM` Node] and
+link:instances.html#gkqch[To Create an Instance Centrally].
+
+If you cannot connect to the host over DCOM, troubleshoot the DCOM setup
+before proceeding.
+
+[[GSHAG458]]
+
+Before You Begin
+
+Ensure that the following prerequisites are met:
+
+* The Windows user is a valid user on the host to which you are testing
+the connection over DCOM.
+* Items in the Windows operating system are set on the host as described
+in link:#CEGDAFHD[Windows Operating System Settings].
+* The Windows user is able to run scripts on the host. For more
+information, see link:#CEGCJGCF[To Enable the Windows User to Run
+Scripts on a Remote Host].
+* Password authentication is set up for the windows user as explained in
+link:#CEGCDCEF[To Set Up Password Authentication for the Windows User].
+
+1. Ensure that the DAS is running. +
+Remote subcommands require a running server.
+
+2. Run the `validate-dcom` subcommand. +
+Specify the file that contains the alias for the Windows user's password
+through the `--passwordfile` option of the `asadmin` utility. For more
+information about this file, see link:#CEGCDCEF[To Set Up Password
+Authentication for the Windows User].
+
+[NOTE]
+====
+Only the options that are required to complete this task are provided in
+this step. For information about all the options for configuring the
+node, see the link:reference-manual/validate-dcom.html#GSRFM796[`validate-dcom`(1)] help page.
+====
+
+[source]
+----
+C:\>asadmin --passwordfile filename validate-dcom host-name
+----
+filname::
+  The name of the file that contains the alias for the Windows user's
+  password.
+host-name::
+  The name of the host to which you are testing the connection over
+  DCOM.
+
+[[GSHAG459]][[sthref8]]
+Example 2-2 Testing the Connection Over DCOM to a Remote Host
+
+This example tests the connection over DCOM to the host `wpmdl2`.
+
+[source]
+----
+C:\> asadmin --passwordfile aspwalias.txt validate-dcom wpmdl2
+Command validate-dcom executed successfully.
+----
+
+[[GSHAG460]]
+
+See Also
+
+* link:reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)]
+* link:reference-manual/validate-dcom.html#GSRFM796[`validate-dcom`(1)]
+* link:#CEGDAFHD[Windows Operating System Settings]
+* link:#CEGCJGCF[To Enable the Windows User to Run Scripts on a Remote Host]
+* link:nodes.html#CHDIGBJB[To Create a `DCOM` Node]
+* link:instances.html#gkqch[To Create an Instance Centrally]
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help validate-dcom` at the command line.
+
+[[gksiy]][[GSHAG00173]][[setting-up-cygwin-ssh-on-windows]]
+
+=== Setting Up Cygwin SSH on Windows
+
+Set up Cygwin SSH on the DAS host and on all hosts where instances in
+your cluster will reside.
+
+The following topics are addressed here:
+
+* link:#gksjn[To Download and Install Cygwin]
+* link:#gksin[To Set the Path for Windows and for the Cygwin Shell]
+* link:#gksov[To Set the Home Directory for the Cygwin SSH User]
+* link:#gkskx[To Configure and Start the Cygwin SSH Server Daemon
+`sshd`]
+
+[[gksjn]][[GSHAG00071]][[to-download-and-install-cygwin]]
+
+==== To Download and Install Cygwin
+
+For centralized {productName} administration, a basic Cygwin
+installation that includes the SSH client and the SSH server daemon
+`sshd` is sufficient. The default installation options are sufficient to
+create such a basic installation.
+
+1. Log in as a user with Administrator privileges.
+
+2. Create the folder `C:\cygwin`.
+
+3. From the http://www.cygwin.com/[Cygwin home page]
+(`http://www.cygwin.com/`), download and save the `setup.exe` file to your desktop.
+
+4. Run the `setup.exe` file.
+
+5. Select the default for the following options:
+* Install from Internet
+* Install Root Directory: `C:\cygwin`
+* Install for All Users
+
+6. Specify a folder for the local package directory that is not the
+Cygwin root folder, for example, `C:\cygwin\packages`.
+
+7. Specify the connection method. +
+For example, if the host is connected to the Internet through a proxy
+server, specify the proxy server.
+
+8. Select the mirror site from which to download the software.
+
+9. Select the `openssh` package for installation.
+[arabic]
+.. Under the Net category, search for `openssh`.
+.. Locate the `openssh` package and click Skip. +
+The package is selected.
+.. Click Next. +
+Any unsatisfied dependencies are listed.
+
+10. Leave the Select Required Packages option selected and click Next +
+The packages are installed.
+
+11. Click Finish.
+
+[[GSHAG321]]
+
+See Also
+
+For detailed information about installing Cygwin, see
+"http://cygwin.com/cygwin-ug-net/setup-net.html#internet-setup[Internet
+Setup]" in Cygwin User's Guide
+(`http://cygwin.com/cygwin-ug-net/setup-net.html#internet-setup`).
+
+[[gksin]][[GSHAG00072]][[to-set-the-path-for-windows-and-for-the-cygwin-shell]]
+
+==== To Set the Path for Windows and for the Cygwin Shell
+
+To enable {productName} tools to find commands for SSH, each user's
+path for Windows and for the Cygwin shell must contain the following directories:
+--
+* The Cygwin `bin` directory, for example `C:\cygwin\bin`
+* The `bin` directory of the JDK software
+--
+
+1. Log in as a user with Administrator privileges.
+Logging in as a user with Administrator privileges ensures that the
+change applies to all users.
+
+2. In the System Information control panel, click Advanced>Environment Variables.
+
+3. Add the following directories to the Path environment variable:
+
+* The Cygwin `bin` directory, for example `C:\cygwin\bin`
+* The `bin` directory of the JDK software
+
+[[gksov]][[GSHAG00073]][[to-set-the-home-directory-for-the-cygwin-ssh-user]]
+
+==== To Set the Home Directory for the Cygwin SSH User
+
+The SSH Server Daemon `sshd` locates a user's home directory from the
+configuration in the user database, not from environment variables such
+as `HOME`. To ensure that all {productName} commands can run without
+errors, each SSH user must be configured to have a home directory.
+
+Each user on a Windows host where SSH is set up potentially has two home
+directories:
+
+* Windows home directory. {productName} commands, which are run in a
+Windows command window, use the Windows home directory.
+* SSH home directory. SSH commands, which are run in a shell such as
+`bash` or `ksh`, use the SSH home directory.
+
+If these home directories are different, {productName} and SSH each
+locate a user's `.ssh` directory in different directories. To simplify
+the set up of SSH, configure each user's home directory for SSH and
+Windows to be the same directory. A disadvantage of this approach is
+that the SSH home directory has spaces in its path name. Spaces in path
+names are cumbersome in the UNIX environment.
+
+1. Log in as a user with Administrator privileges.
+2. In the `c:\cygwin\etc\passwd` file, edit the home directory setting
+for the SSH user to specify the user's home directory for Windows.
+
+[[gkskx]][[GSHAG00074]][[to-configure-and-start-the-cygwin-ssh-server-daemon-sshd]]
+
+==== To Configure and Start the Cygwin SSH Server Daemon `sshd`
+
+[[GSHAG322]]
+
+Before You Begin
+
+Ensure that the following prerequisites are met:
+
+* A user account is created for each user that will log in to the host through SSH.
+* A password is set for each user account.
+
+The SSH server daemon `sshd` disallows authentication of any user for
+whose account a password is not set.
+
+1. Double-click the Cygwin icon. A Cygwin terminal is started.
+
+2. If necessary, set the password for your user account.
+[arabic]
+.. Run the `passwd` command as follows:
++
+[source]
+----
+$ passwd user-name
+----
+user-name::
+  The user name for your account.
+.. Type a password. The password for your Windows account is also set.
+
+3. Configure SSH on the host.
+[arabic]
+.. Run the `ssh-host-config` command.
++
+[source]
+----
+$ ssh-host-config
+----
++
+[TIP]
+====
+If you are using Windows XP, specify the `-y` option of
+`ssh-host-config` to answer `yes` to all prompts. If you run
+`ssh-host-config` with the `-y` option, omit Step link:#gkuat[b].
+====
++
+.. [[gkuat]]
+Ensure that the `StrictModes` and `PubkeyAuthentication` options are set
+to `yes` in the file `/etc/ssh_config`. +
+The file `/etc/ssh_config` can also be accessed as `/cygdrive/c/cygwin/etc/sshd_config`.
+
+4. Start the SSH server daemon `sshd`.
++
+[source]
+----
+$ net start sshd
+----
+5. Confirm that the SSH server daemon `sshd` is running.
++
+[source]
+----
+$ cygrunsrv --query sshd
+ Service             : sshd
+ Display name        : CYGWIN sshd
+ Current State       : Running
+ Controls Accepted   : Stop
+ Command             : /usr/sbin/sshd -D
+----
+
+[[GSHAG323]]
+
+Next Steps
+
+After you have completed the setup of SSH on a host, test the setup on
+the host as explained in link:#gkslw[Testing the SSH Setup on a Host].
+
+[[gkskf]][[GSHAG00174]][[setting-up-the-mks-toolkit-on-windows]]
+
+=== Setting Up the MKS Toolkit on Windows
+
+Set up the MKS Toolkit on the DAS host and on all hosts where instances
+in your cluster will reside.
+
+The following topics are addressed here:
+
+* link:#gksmq[To Install the MKS Toolkit]
+* link:#gksmu[To Set the Path for Windows and for the MKS Toolkit Shell]
+* link:#gksox[To Set the Home Directory for the MKS Toolkit SSH User]
+* link:#gksnx[To Configure and Start the MKS Toolkit SSH Server Daemon
+`sshd`]
+
+[[gksmq]][[GSHAG00075]][[to-install-the-mks-toolkit]]
+
+==== To Install the MKS Toolkit
+
+For centralized {productName} administration, the default
+installation of the MKS Toolkit is sufficient.
+
+Follow the instructions in the MKS Toolkit product documentation to
+install OpenSSH from the MKS Toolkit with default installation options.
+
+[[GSHAG324]]
+
+See Also
+
+For detailed information about installing MKS Toolkit, see
+"http://www.mkssoftware.com/docs/rn/relnotes_tk94.asp#install[Installing
+MKS Toolkit]" in MKS Toolkit v9.4 Release Notes
+(`http://www.mkssoftware.com/docs/rn/relnotes_tk94.asp#install`).
+
+[[gksmu]][[GSHAG00076]][[to-set-the-path-for-windows-and-for-the-mks-toolkit-shell]]
+
+==== To Set the Path for Windows and for the MKS Toolkit Shell
+
+To enable {productName} tools to find commands for SSH, each user's
+path for Windows and for the MKS Toolkit shell must contain the
+following directories:
+
+* The MKS Toolkit `bin` directory, for example
+`C:\Program Files\MKS Toolkit\mksnt`
+* The `bin` directory of the JDK software
+
+The MKS Toolkit installer automatically adds the MKS Toolkit `bin`
+directory to the path. However, you must add the `bin` directory of the
+JDK software to the path yourself.
+
+1. Log in as a user with Administrator privileges.
++
+Logging in as a user with Administrator privileges ensures that the
+change applies to all users.
+2. In the System Information control panel, click Advanced>Environment
+Variables.
+3. Add the `bin` directory of the JDK software to the Path environment
+variable.
+
+[[gksox]][[GSHAG00077]][[to-set-the-home-directory-for-the-mks-toolkit-ssh-user]]
+
+==== To Set the Home Directory for the MKS Toolkit SSH User
+
+The SSH Server Daemon `sshd` locates a user's home directory from the
+configuration in the user database, not from environment variables such
+as `HOME`. To ensure that all {productName} commands can run without
+errors, each SSH user must be configured to have a home directory.
+
+Each user on a Windows host where SSH is set up potentially has two home
+directories:
+
+* Windows home directory. {productName} commands, which are run in a
+Windows command window, use the Windows home directory.
+* SSH home directory. SSH commands, which are run in a shell such as
+`bash` or `ksh`, use the SSH home directory.
+
+If these home directories are different, {productName} and SSH each
+locate a user's `.ssh` directory in different directories. To simplify
+the set up of SSH, configure each user's home directory for SSH and
+Windows to be the same directory. A disadvantage of this approach is
+that the SSH home directory has spaces in its path name. Spaces in path
+names are cumbersome in the UNIX environment.
+
+1. [[gkslo]]
+Compare the pairs of settings for Windows and the MKS Toolkit that are
+listed in the following table.
++
+[width="100%",cols="<50%,<50%",options="header",]
+|===
+|Windows Environment Variable |MKS Toolkit Field
+|`HOMEPATH` |Home Directory
+|`HOMEDRIVE` |Home Directory Drive
+|===
+[arabic]
+.. In a Windows command window, determine the values of the `HOMEPATH`
+and `HOMEDRIVE` environment variables.
+.. In an MKS Toolkit shell, determine the current settings of the Home
+Directory and Home Directory Drive fields for the user.
++
+[source]
+----
+$ userinfo user-name
+----
+user-name::
+  The user name for the user whose home directory you are setting, for
+  example `Administrator`.
+
++
+2. If the settings do not match, update setting of each MKS Toolkit
+field to match its corresponding Windows environment variable. +
+If the settings match, no further action is required. +
+To update the settings, run the following command in an MKS Toolkit shell:
++
+[source]
+----
+$ userinfo -u -fHomeDirDrive:"drive" -fHomeDir:"path" user-name
+----
+drive::
+  The drive identifier of the disk drive on which the user's Windows
+  home directory resides, for example, `C:`.
+path::
+  The path to the user's Windows home directory, for example,
+  `\Documents and Settings\Administrator`.
+user-name::
+  The user name for the user whose home directory you are setting, for
+  example `Administrator`.
++
+[NOTE]
+====
+Do not set the `HOME` environment variable explicitly. If Home Directory
+and Home Directory Drive are set correctly, the `HOME` environment
+variable specifies the correct path by default.
+====
+
+3. In an MKS Toolkit shell, confirm that the settings were updated.
++
+[source]
+----
+$ userinfo user-name
+----
+user-name::
+  The user name for the user whose home directory you are setting, for
+  example `Administrator`.
+
+4. Log out of the host and log in to the host again.
+
+5. Confirm that the home directories are the same as explained in
+Step link:#gkslo[1].
+
+[[GSHAG00014]][[gksnj]]
+Example 2-3 Setting the Home Directory for the MKS Toolkit User
+
+This example sets the home directory for the MKS Toolkit user
+`Administrator` to `C:\Documents and Settings\Administrator`.
+
+[source]
+----
+$ userinfo -u -fHomeDirDrive:"C:"
+-fHomeDir:"\Documents and Settings\Administrator" Administrator
+----
+
+[[gksnx]][[GSHAG00078]][[to-configure-and-start-the-mks-toolkit-ssh-server-daemon-sshd]]
+
+==== To Configure and Start the MKS Toolkit SSH Server Daemon `sshd`
+
+
+[NOTE]
+====
+Do not set the command shell to `cmd.exe`. The use of SSH for
+centralized {productName} administration requires a shell in the
+style of a UNIX shell.
+====
+
+
+1. From the Programs menu, choose MKS Toolkit>Configuration>Configuration Information.
+
+2. Enable password authentication and strict modes.
+[arabic]
+.. Click the Secure Shell Service tab.
+.. Select the Password Authentication option.
+.. Click Advanced settings.
+.. Click the Login tab.
+.. Deselect the Strict Modes option.
+
+3. If you are using SSH key-file authentication, enable `MKSAUTH` password authentication.
+[arabic]
+.. Click the Authentication tab.
+.. Under Enable/Disable Password using MKSAUTH, type the user's password and click the Enable.
+
+4. Start the SSH server daemon `sshd`.
+
+5. Confirm that the SSH server daemon `sshd` is running.
++
+[source]
+----
+$ service query MKSSecureSH
+Name:           MKS Secure Shell Service
+Service Type:   WIN32_OWN_PROCESS
+Current State:  RUNNING
+Controls Accepted:      ACCEPT_STOP
+Check Point:    0
+Wait Hint:      0
+Start Type:     AUTO_START
+Error Control:  IGNORE
+Path:           "C:\Program Files\MKS Toolkit\bin\secshd.exe"
+Dependency:     NuTCRACKERService
+Dependency:     tcpip
+Service Start Name:     LocalSystem
+----
+
+[[GSHAG325]]
+
+Next Steps
+
+After you have completed the setup of SSH on a host, test the setup on
+the host as explained in link:#gkslw[Testing the SSH Setup on a Host].
+
+[[gksja]][[GSHAG00175]][[setting-up-ssh-on-unix-and-linux-systems]]
+
+=== Setting Up SSH on UNIX and Linux Systems
+
+Setting up SSH on UNIX and Linux systems involves verifying that the SSH
+server daemon `sshd` is running and, if necessary, starting this daemon.
+Set up SSH on the DAS host and on all hosts where instances in your
+cluster will reside.
+
+On UNIX and Linux systems, SSH software is typically installed as part
+of the base operating system. If SSH is not installed, download and
+install the appropriate http://www.openssh.com/[OpenSSH]
+(`http://www.openssh.com/`) SSH package for your operating system.
+
+How to set up SSH on UNIX and Linux systems depends on the flavor of the
+operating system that you are running, as explained in the following
+sections:
+
+* link:#gksjx[To Set Up SSH on Oracle Solaris Systems]
+* link:#gkspz[To Set Up SSH on MacOS Systems]
+* link:#gksrd[To Set Up SSH on Linux systems]
+
+[[gksjx]][[GSHAG00079]][[to-set-up-ssh-on-oracle-solaris-systems]]
+
+==== To Set Up SSH on Oracle Solaris Systems
+
+1. Ensure that the following options in the configuration file
+`/etc/ssh/sshd_config` are set to `yes`:
+* `StrictModes`
+* `PubkeyAuthentication`
+2. Determine if the SSH server daemon `sshd` is running.
++
+[source]
+----
+$ /usr/bin/svcs ssh
+----
+3. If the SSH server daemon `sshd` is not running, start this daemon.
++
+If the daemon is running, no further action is required.
++
+[source]
+----
+$ /usr/sbin/svcadm enable ssh
+----
+
+[[GSHAG00015]][[gkspo]]
+Example 2-4 Determining if the `sshd` Daemon Is Running on an Oracle
+Solaris System
+
+This example confirms that the SSH server daemon `sshd` is running on an
+Oracle Solaris system.
+
+[source]
+----
+$ /usr/bin/svcs ssh
+STATE          STIME    FMRI
+online         Jul_06   svc:/network/ssh:default
+----
+
+[[GSHAG326]]
+
+See Also
+
+http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1svcs-1[`svcs`(1)]
+
+[[GSHAG327]]
+
+Next Steps
+
+After you have completed the setup of SSH on a host, test the setup on
+the host as explained in link:#gkslw[Testing the SSH Setup on a Host].
+
+[[gkspz]][[GSHAG00080]][[to-set-up-ssh-on-macos-systems]]
+
+==== To Set Up SSH on MacOS Systems
+
+1. Open System Preferences and click Sharing. +
+The Sharing window opens.
+
+2. Ensure that Remote Login is selected in the Service list.
+
+3. Ensure that either of the following is allowed access:
+
+* All Users
+* The user that running the DAS or instance
+
+4. (MacOS 10.6 systems only) Ensure that the SSH server daemon `sshd`
+allows password authentication. +
+On MacOS 10.5 systems, the SSH server daemon `sshd` allows password
+authentication by default. However, on MacOS 10.6 systems, the SSH
+server daemon `sshd` disallows password authentication by default.
+[arabic]
+.. Edit the configuration file `/etc/sshd_config` to set the `PasswordAuthentication` option to `yes`.
+.. Stop the SSH server daemon `sshd`.
++
+[source]
+----
+$ sudo launchctl stop com.openssh.sshd
+----
+.. Start the SSH server daemon `sshd`.
++
+[source]
+----
+$ sudo launchctl start com.openssh.sshd
+----
+
+[[GSHAG328]]
+
+Next Steps
+
+After you have completed the setup of SSH on a host, test the setup on
+the host as explained in link:#gkslw[Testing the SSH Setup on a Host].
+
+[[gksrd]][[GSHAG00081]][[to-set-up-ssh-on-linux-systems]]
+
+==== To Set Up SSH on Linux systems
+
+1. Ensure that the following options in the configuration file
+`/etc/ssh/sshd_config` are set to `yes`:
+* `StrictModes`
+* `PubkeyAuthentication`
+2. Determine if the SSH server daemon `sshd` is running.
++
+[source]
+----
+$ /sbin/service sshd status
+----
+3. If the SSH server daemon `sshd` is not running, start this daemon.
++
+If the daemon is running, no further action is required.
++
+[source]
+----
+$ /sbin/service sshd start
+----
+
+[[GSHAG00016]][[gkssf]]
+Example 2-5 Determining if the `sshd` Daemon Is Running on a Linux
+System
+
+This example confirms that the SSH server daemon `sshd` is running on a
+Linux system.
+
+[source]
+----
+$ /sbin/service sshd status
+openssh-daemon (pid  2373) is running...
+----
+
+[[GSHAG329]]
+
+Next Steps
+
+After you have completed the setup of SSH on a host, test the setup on
+the host as explained in link:#gkslw[Testing the SSH Setup on a Host].
+
+[[gkslw]][[GSHAG00176]][[testing-the-ssh-setup-on-a-host]]
+
+=== Testing the SSH Setup on a Host
+
+After setting up SSH on a host, test the setup to ensure that you can
+use SSH to contact the host from another host. Testing the SSH setup on
+a host verifies that the SSH server daemon `sshd` is running and that
+the SSH user has a valid user account on the host.
+
+If you cannot use SSH to contact the host, troubleshoot the SSH setup
+before setting up SSH user authentication.
+
+[[gkskk]][[GSHAG00082]][[to-test-the-ssh-setup-on-a-host]]
+
+==== To Test the SSH Setup on a Host
+
+1. From another host, use SSH to log in into the host that you are
+testing as the SSH user.
++
+[source]
+----
+$ ssh -l user-name host-name
+----
+user-name::
+  The user name for the SSH user's account on the host.
+host-name::
+  The host name of the host that you are logging in to.
+2. In response to the prompt, type your password.
++
+If this step succeeds, your setup of SSH is complete.
++
+The first time that you connect to a host, you might be warned that the
+authenticity cannot be established and be asked if you want to continue
+connection. If you trust the host, answer `yes` to connect to the host.
+
+[[GSHAG330]]
+
+Troubleshooting
+
+To obtain diagnostic information, use the `-v` option of the
+command-line SSH client and the `-d` option of the SSH server daemon
+`sshd`. How to start the SSH server daemon `sshd` manually depends on
+the operating system and SSH provider that you are using.
+
+If the SSH server daemon `sshd` is set up on a host that has a firewall,
+ensure that a rule is defined to allow inbound traffic on the SSH port.
+The default SSH port is port 22.
+
+If your connection is refused, the SSH server daemon `sshd` is not
+running and you must start the daemon. For instructions, see the
+following sections:
+
+* link:#gkskx[To Configure and Start the Cygwin SSH Server Daemon `sshd`]
+* link:#gksnx[To Configure and Start the MKS Toolkit SSH Server Daemon `sshd`]
+* link:#gksjx[To Set Up SSH on Oracle Solaris Systems]
+
+If your connection is accepted, but you cannot log in, ensure that the
+SSH user has a valid user account on the host.
+
+[[GSHAG331]]
+
+Next Steps
+
+After testing the SSH setup, set up SSH user authentication to enable
+SSH to authenticate users without prompting for a password. For more
+information, see link:#gkshh[Setting Up SSH User Authentication].
+
+[[gkshh]][[GSHAG00177]][[setting-up-ssh-user-authentication]]
+
+=== Setting Up SSH User Authentication
+
+When a {productName} subcommand uses SSH to log in to a remote host,
+{productName} must be able to authenticate the SSH user. Setting up
+SSH user authentication ensures that this requirement is met.
+
+Before setting up SSH user authentication, determine the authentication
+scheme to use. If SSH is already deployed at your site, the
+authentication scheme to use might already be chosen for you.
+
+The following table lists the authentication schemes that {productName} supports. The table also lists the advantages and disadvantages
+of each authentication scheme.
+
+[width="100%",cols="<34%,<33%,<33%",options="header",]
+|===
+|Authentication Scheme |Advantages |Disadvantages
+|Public key without encryption |{productName} provides tools to
+simplify set up. |SSH must be configured to locate users' key files in
+the correct location. File access permissions for key files and the
+directory that contains the key files must be set correctly.
+
+|Public key with passphrase-protected encryption |This scheme is more
+secure than public key authentication without encryption. |SSH must be
+configured to locate users' key files in the correct location. File
+access permissions for key files and the directory that contains the key
+files must be set correctly. For each SSH user, {productName}
+password aliases are required for the encryption passphrase.
+
+|Password |No SSH configuration is required to locate key files or to
+ensure that file access permissions are correct. |For each SSH user,
+{productName} password aliases are required for the SSH password.
+|===
+
+
+The following topics are addressed here:
+
+* link:#gksqe[To Set Up Public Key Authentication Without Encryption]
+* link:#gktaq[To Set Up Encrypted Public Key Authentication]
+* link:#gktbd[To Set Up Password Authentication]
+
+[[gksqe]][[GSHAG00083]][[to-set-up-public-key-authentication-without-encryption]]
+
+==== To Set Up Public Key Authentication Without Encryption
+
+Use the `setup-ssh` subcommand in local mode to set up public key
+authentication without encryption. This subcommand enables you to set up
+public key authentication on multiple hosts in a single operation.
+
+The `setup-ssh` subcommand generates a key pair and distributes the
+public key file to specified hosts. The private key file and the public
+key file are protected only by the file system's file access
+permissions. If you require additional security, set up public key
+authentication with passphrase-protected encryption as explained in
+link:#gktaq[To Set Up Encrypted Public Key Authentication].
+
+[[GSHAG332]]
+
+Before You Begin
+
+Ensure that the following prerequisites are met:
+
+* SSH is set up on each host where you are setting up public key
+authentication. For more information, see the following sections:
+
+** link:#gksiy[Setting Up Cygwin SSH on Windows]
+** link:#gkskf[Setting Up the MKS Toolkit on Windows]
+** link:#gksja[Setting Up SSH on UNIX and Linux Systems]
+
+* Only the SSH user has write access to the following files and
+directories on each host where you are setting up public key
+authentication:
+
+** The SSH user's home directory
+** The `~/.ssh` directory
+** The `authorized_key` file
++
+If other users can write to these files and directories, the secure
+service might not trust the `authorized_key` file and might disallow
+public key authentication.
+
+
+1. Generate an SSH key pair and distribute the public key file to the
+hosts where you are setting up public key authentication.
++
+[NOTE]
+====
+Only the options that are required to complete this task are provided in
+this step. For information about all the options for setting up an SSH
+key, see the link:reference-manual/setup-ssh.html#GSRFM00229[`setup-ssh`(1)] help page.
+====
++
+[source]
+----
+asadmin> setup-ssh [--sshuser sshuser] host-list
+----
+sshuser::
+  The SSH user for which you are generating the SSH key pair. If you are
+  running the subcommand as the SSH user, you may omit this option.
+host-list::
+  A space-separated list of the names of the hosts where the SSH public
+  key is to be distributed.
++
+2. After generating the SSH key pair, the subcommand uses SSH to log in to
+each host in host-list as the SSH user to distribute the public key.
+Each time a password is required to log in to a host, you are prompted
+for the SSH user's password.
++
+In response to each prompt for a password, type the SSH user's password.
+
+[[GSHAG00017]][[gktat]]
+Example 2-6 Setting Up Public Key Authentication Without Encryption
+
+This example generates and sets up an SSH key for the user `gfuser` on
+the hosts `sua01` and `sua02`. The command is run by the user `gfuser`.
+
+[source]
+----
+asadmin> setup-ssh --generatekey=true sua01 sua02
+Enter SSH password for gfuser@sua01>
+Created directory /home/gfuser/.ssh
+/usr/bin/ssh-keygen successfully generated the identification /home/gfuser/.ssh/id_rsa
+Copied keyfile /home/gfuser/.ssh/id_rsa.pub to gfuser@sua01
+Successfully connected to gfuser@sua01 using keyfile /home/gfuser/.ssh/id_rsa
+Copied keyfile /home/gfuser/.ssh/id_rsa.pub to gfuser@sua02
+Successfully connected to gfuser@sua02 using keyfile /home/gfuser/.ssh/id_rsa
+Command setup-ssh executed successfully.
+----
+
+[[GSHAG333]]
+
+Next Steps
+
+After setting up public key authentication, test the setup by using
+`ssh` to log in as the SSH user to each host where the public key was
+distributed. For each host, log in first with the unqualified host name
+and then with the fully qualified name. If SSH does not prompt for
+password, public key authentication is set up correctly on the host.
+
+If you are prompted for a password, verify that the public key file was
+copied correctly to the SSH user's `authorized_keys` file.
+
+[[GSHAG334]]
+
+Troubleshooting
+
+Setup might fail because file access permissions in the SSH user's home
+directory are too permissive. In this situation, ensure that the file
+access permissions in the SSH user's home directory meet the
+requirements for performing this procedure.
+
+If you have set the file access permissions in the SSH user's home
+directory correctly, setup might still fail if you are using the MKS
+Toolkit. In this situation, correct the problem in one of the following
+ways:
+
+* On each remote host, copy the public key file to the SSH user's
+`~/.ssh` directory and import the file. To import the file, select the
+Secure Service tab in the MKS configuration GUI and click Passwordless.
+* Disable strict modes.
+
+[[GSHAG335]]
+
+See Also
+
+* link:#gksiy[Setting Up Cygwin SSH on Windows]
+* link:#gkskf[Setting Up the MKS Toolkit on Windows]
+* link:#gksja[Setting Up SSH on UNIX and Linux Systems]
+* link:reference-manual/setup-ssh.html#GSRFM00229[`setup-ssh`(1)]
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help setup-ssh` at the command line.
+
+[[gktaq]][[GSHAG00084]][[to-set-up-encrypted-public-key-authentication]]
+
+==== To Set Up Encrypted Public Key Authentication
+
+Encrypted key file authentication uses an encrypted private key file
+that is protected with a passphrase. This passphrase must be provided to
+use the private key to unlock the public key. If you require encrypted
+public key authentication, you must use the SSH utility `ssh-keygen` to
+generate an SSH key pair with an encrypted private key. You can then use
+the `setup-ssh` subcommand to distribute the public key file to
+specified hosts.
+
+To use the encrypted key file, {productName} requires the passphrase
+with which the key file was encrypted. To provide this passphrase
+securely to {productName}, create a {productName} password alias
+to represent the passphrase and store this alias in a password file that
+is passed to the link:reference-manual/asadmin.html#GSRFM00263[`asadmin`] utility.
+
+
+[NOTE]
+====
+Only the options that are required to complete this task are provided in
+each step. For information about all the options for the commands and
+subcommands in this task, see their help pages or man pages.
+====
+
+
+[[GSHAG336]]
+
+Before You Begin
+
+Ensure that the following prerequisites are met:
+
+* SSH is set up on each host where you are setting up public key
+authentication. For more information, see the following sections:
+
+** link:#gksiy[Setting Up Cygwin SSH on Windows]
+** link:#gkskf[Setting Up the MKS Toolkit on Windows]
+** link:#gksja[Setting Up SSH on UNIX and Linux Systems]
+
+* Only the SSH user has write access to the following files and
+directories on each host where you are setting up public key
+authentication:
+
+** The SSH user's home directory
+** The `~/.ssh` directory
+** The `authorized_key` file
++
+If other users can write to these files and directories, the secure
+service might not trust the `authorized_key` file and might disallow
+public key authentication.
+
+1. Generate an SSH key pair with an encrypted private key file.
++
+Use the SSH utility
+http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1ssh-keygen-1[`ssh-keygen`]
+for this purpose.
++
+[source]
+----
+$ ssh-keygen -t type
+----
+type::
+  The algorithm that is to be used for the key and which must be `rsa`,
+  `dsa`, or `rsa1`.
++
+The `ssh-keygen` utility prompts you for a file in which to save the key.
+
+2. To simplify the distribution of the key file, accept the default file.
++
+The `ssh-keygen` utility prompts you for a passphrase.
+
+3. [[gktbh]]
+In response to the prompt, type your choice of passphrase for encrypting
+the private key file.
+4. The `ssh-keygen` utility prompts you to type the passphrase again.
++
+In response to the prompt, type the passphrase that you set in Step link:#gktbh[3].
+
+5. Distribute the public key file to the hosts where you are setting up
+public key authentication.
++
+Use the link:reference-manual/setup-ssh.html#GSRFM00229[`setup-ssh`]
+`asadmin` subcommand for this purpose.
++
+[source]
+----
+$ asadmin setup-ssh --generatekey=false host-list
+----
+host-list::
+  A space-separated list of the names of the hosts where the SSH public
+  key is to be distributed.
++
+The subcommand uses SSH to log in to each host in host-list as the SSH
+user to distribute the public key. Each time a passphrase or a password
+is required to log in to a host, you are prompted for the passphrase or
+the SSH user's password.
+
+6. In response to each prompt, type the requested information.
++
+--
+* In response to each prompt for a passphrase, type the passphrase that
+  you set in Step link:#gktbh[3].
+* In response to each prompt for a password, type the SSH user's password.
+--
++
+7. [[gktbm]]
+Create a {productName} password alias for the passphrase that you set
+in Step link:#gktbh[3].
+[arabic]
+.. Ensure that the DAS is running. +
+Remote subcommands require a running server.
+.. Run the link:reference-manual/create-password-alias.html#GSRFM00049[`create-password-alias`]
+`asadmin` subcommand.
++
+[source]
+----
+$ asadmin create-password-alias alias-name
+----
+alias-name::
+  Your choice of name for the alias that you are creating.
++
+The `create-password-alias` subcommand prompts you to type the
+passphrase for which you are creating an alias.
+.. In response to the prompt, type the passphrase that you set in
+Step link:#gktbh[3].
++
+The `create-password-alias` subcommand prompts you to type the passphrase again.
+.. In response to the prompt, type the passphrase that you set in
+Step link:#gktbh[3] again.
+
+8. Create a plain text file that contains the following entry for the passphrase alias:
++
+[source]
+----
+AS_ADMIN_SSHKEYPASSPHRASE=${ALIAS=alias-name}
+----
+alias-name::
+  The alias name that you specified in Step link:#gktbm[7].
++
+[NOTE]
+====
+When you create an `SSH` node, pass this file as the `--passwordfile`
+option of the `asadmin` utility. For more information, see
+link:nodes.html#gkrnf[To Create an `SSH` Node].
+====
+
+
+[[GSHAG00018]][[gktav]]
+Example 2-7 Setting Up Encrypted Public Key Authentication
+
+This example generates an SSH key pair with an encrypted private key for
+the user `gfadmin` and distributes the public key to the hosts `sj01`
+and `ja02`. The example also creates an alias that is named
+`ssh-key-passphrase` for the private key's passphrase.
+
+[source]
+----
+$ ssh-keygen -t rsa
+Generating public/private rsa key pair.
+Enter file in which to save the key (/home/gfadmin/.ssh/id_rsa):
+Enter passphrase (empty for no passphrase):
+Enter same passphrase again:
+Your identification has been saved in /home/gfadmin/.ssh/id_rsa.
+Your public key has been saved in /home/gfadmin/.ssh/id_rsa.pub.
+The key fingerprint is:
+db:b5:f6:0d:fe:16:33:91:20:64:90:1a:84:66:f5:d0 gfadmin@dashost
+$ asadmin setup-ssh --generatekey=false sj01 sj02
+Key /home/gfadmin/.ssh/id_rsa is encrypted
+Enter key passphrase>
+Enter SSH password for gfadmin@sj01>
+Copied keyfile /home/gfadmin/.ssh/id_rsa.pub to gfadmin@sj01
+Successfully connected to gfadmin@sj01 using keyfile /home/gfadmin/.ssh/id_rsa
+Successfully connected to gfadmin@sj02 using keyfile /home/gfadmin/.ssh/id_rsa
+SSH public key authentication is already configured for gfadmin@sj02
+Command setup-ssh executed successfully.
+$ asadmin create-password-alias ssh-key-passphrase
+Enter the alias password>
+Enter the alias password again>
+Command create-password-alias executed successfully.
+----
+
+The entry in the password file for the `ssh-key-passphrase` alias is as
+follows:
+
+[source]
+----
+AS_ADMIN_SSHKEYPASSPHRASE=${ALIAS=ssh-key-passphrase}
+----
+
+[[GSHAG337]]
+
+Troubleshooting
+
+Setup might fail because file access permissions in the SSH user's home
+directory are too permissive. In this situation, ensure that the file
+access permissions in the SSH user's home directory meet the
+requirements for performing this procedure.
+
+If you have set the file access permissions in the SSH user's home
+directory correctly, setup might still fail if you are using the MKS
+Toolkit. In this situation, correct the problem in one of the following
+ways:
+
+* On each remote host, copy the public key file to the SSH user's
+`~/.ssh` directory and import the file. To import the file, select the
+Secure Service tab in the MKS configuration GUI and click Passwordless.
+* Disable strict modes.
+
+[[GSHAG338]]
+
+See Also
+
+* link:#gksiy[Setting Up Cygwin SSH on Windows]
+* link:#gkskf[Setting Up the MKS Toolkit on Windows]
+* link:#gksja[Setting Up SSH on UNIX and Linux Systems]
+* link:reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)]
+* link:reference-manual/create-password-alias.html#GSRFM00049[`create-password-alias`(1)]
+* link:reference-manual/setup-ssh.html#GSRFM00229[`setup-ssh`(1)]
+* http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1ssh-keygen-1[`ssh-keygen`(1)]
+
+You can also view the full syntax and options of the subcommands by
+typing the following commands at the command line:
+
+* `asadmin help create-password-alias`
+* `asadmin help setup-ssh`
+
+[[gktbd]][[GSHAG00085]][[to-set-up-password-authentication]]
+
+==== To Set Up Password Authentication
+
+To use SSH to log in to a remote host, {productName} requires the SSH
+user's password. To provide this password securely to {productName},
+create a {productName} password alias to represent the password and
+store this alias in a password file that is passed to the
+link:reference-manual/asadmin.html#GSRFM00263[`asadmin`] utility.
+
+[[GSHAG339]]
+
+Before You Begin
+
+Ensure that SSH is set up on each host where you are setting up password
+authentication. For more information, see the following sections:
+
+* link:#gksiy[Setting Up Cygwin SSH on Windows]
+* link:#gkskf[Setting Up the MKS Toolkit on Windows]
+* link:#gksja[Setting Up SSH on UNIX and Linux Systems]
+
+1. Ensure that the DAS is running. +
+Remote subcommands require a running server.
+
+2. [[gktbb]]
+Create an alias for the SSH user's password.
++
+[NOTE]
+====
+Only the options that are required to complete this task are provided in
+this step. For information about all the options for creating a password
+alias, see the link:reference-manual/create-password-alias.html#GSRFM00049[`create-password-alias`(1)] help page.
+====
++
+[source]
+----
+asadmin> create-password-alias alias-name
+----
+alias-name::
+  Your choice of name for the alias that you are creating.
+
+3. The `create-password-alias` subcommand prompts you to type the password
+for which you are creating an alias. +
+In response to the prompt, type the SSH user's password. +
+The `create-password-alias` subcommand prompts you to type the password again.
+
+4. In response to the prompt, type the SSH user's password again.
+
+5. Create a plain text file that contains the following entry for the password alias:
++
+[source]
+----
+AS_ADMIN_SSHPASSWORD=${ALIAS=alias-name}
+----
+alias-name::
+  The alias name that you specified in Step link:#gktbb[2].
+
+[NOTE]
+====
+When you create an `SSH` node, pass this file as the `--passwordfile`
+option of the `asadmin` utility. For more information, see
+link:nodes.html#gkrnf[To Create an `SSH` Node].
+====
+
+
+[[GSHAG00019]][[gktba]]
+Example 2-8 Creating an Alias for the SSH User's Password
+
+This example creates an alias that is named `ssh-password` for the SSH user's password.
+
+[source]
+----
+$ asadmin create-password-alias ssh-password
+Enter the alias password>
+Enter the alias password again>
+Command create-password-alias executed successfully.
+----
+
+The entry in the password file for the `ssh-password` alias is as follows:
+
+[source]
+----
+AS_ADMIN_SSHPASSWORD=${ALIAS=ssh-password}
+----
+
+[[GSHAG340]]
+
+See Also
+
+* link:#gksiy[Setting Up Cygwin SSH on Windows]
+* link:#gkskf[Setting Up the MKS Toolkit on Windows]
+* link:#gksja[Setting Up SSH on UNIX and Linux Systems]
+* link:reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)]
+* link:reference-manual/create-password-alias.html#GSRFM00049[`create-password-alias`(1)]
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-password-alias` at the command line.
+
+[[gkshn]][[GSHAG00178]][[installing-and-removing-glassfish-server-software-on-multiple-hosts]]
+
+=== Installing and Removing {productName} Software on Multiple Hosts
+
+{productName} software must be installed on all hosts where {productName} will run. How to install {productName} software on multiple
+hosts depends on the degree of control that you require over the
+installation on each host.
+
+* If you require complete control over the installation on each host,
+install the software from a {productName} distribution on each host
+individually. For more information, see link:installation-guide.html#GSING[{productName} Installation Guide].
+* If the same set up on each host is acceptable, copy an existing
+{productName} installation to the hosts. For more information, see
+link:#gksil[To Copy a {productName} Installation to Multiple Hosts].
+
+{productName} also enables you to remove {productName} software
+from multiple hosts in a single operation. For more information, see
+link:#gktaw[To Remove {productName} Software From Multiple Hosts].
+
+The following topics are addressed here:
+
+* link:#gksil[To Copy a {productName} Installation to Multiple Hosts]
+* link:#gktaw[To Remove {productName} Software From Multiple Hosts]
+
+[[gksil]][[GSHAG00086]][[to-copy-a-glassfish-server-installation-to-multiple-hosts]]
+
+==== To Copy a {productName} Installation to Multiple Hosts
+
+Use the `install-node-dcom` subcommand or the `install-node-ssh`
+subcommand in local mode to copy an installation of {productName}
+software to multiple hosts.
+
+[[GSHAG341]]
+
+Before You Begin
+
+Ensure that DCOM or SSH is set up on the host where you are running the
+subcommand and on each host where you are copying the {productName}
+software.
+
+Run the appropriate subcommand for the protocol that is set up for
+communication between the hosts.
+
+* If DCOM is set up for communication between the hosts, run the
+`install-node-dcom` subcommand.
++
+[NOTE]
+====
+Only the options that are required to complete this task are provided in
+this step. For information about all the options for copying an
+installation of {productName} software, see the
+link:reference-manual/install-node-dcom.html#GSRFM626[`install-node-dcom`(1)] help page.
+====
++
+[source]
+----
+asadmin> install-node-dcom host-list
+----
+host-list::
+  A space-separated list of the names of the hosts where you are copying
+  the installation of {productName} software.
+* If SSH is set up for communication between the hosts, run the
+`install-node-ssh` subcommand.
++
+[NOTE]
+====
+Only the options that are required to complete this task are provided in
+this step. For information about all the options for copying an
+installation of {productName} software, see the
+link:reference-manual/install-node-ssh.html#GSRFM628[`install-node-ssh`(1)] help page.
+====
++
+[source]
+----
+asadmin> install-node-ssh host-list
+----
+host-list::
+  A space-separated list of the names of the hosts where you are copying
+  the installation of {productName} software.
+
+[[GSHAG461]][[sthref9]]
+Example 2-9 Copying a {productName} Installation to Multiple
+DCOM-Enabled Hosts
+
+This example copies the {productName} software on the host where the
+subcommand is run to the default location on the DCOM-enabled hosts
+`wpmdl1.example.com` and `wpmdl2.example.com`.
+
+Some lines of output are omitted from this example for readability.
+
+[source]
+----
+asadmin> install-node-dcom wpmdl1.example.com wpmdl2.example.com
+Created installation zip C:\glassfish8107276692860773166.zip
+Copying 85760199 bytes..........................................................
+....................................
+WROTE FILE TO REMOTE SYSTEM: C:/glassfish7/glassfish_install.zip and C:/glassfish7/unpack.bat
+Output from Windows Unpacker:
+
+C:\Windows\system32>C:
+
+C:\Windows\system32>cd "C:\glassfish7"
+
+C:\glassfish7>jar xvf glassfish_install.zip
+ inflated: bin/asadmin
+ inflated: bin/asadmin.bat
+ inflated: glassfish/bin/appclient
+ inflated: glassfish/bin/appclient.bat
+ inflated: glassfish/bin/appclient.js
+ inflated: glassfish/bin/asadmin
+ inflated: glassfish/bin/asadmin.bat
+...
+ inflated: mq/lib/props/broker/default.properties
+ inflated: mq/lib/props/broker/install.properties
+
+Command install-node-dcom executed successfully.
+----
+
+[[GSHAG342]][[sthref10]]
+Example 2-10 Copying a {productName} Installation to Multiple
+SSH-Enabled Hosts
+
+This example copies the {productName} software on the host where the
+subcommand is run to the default location on the SSH-enabled hosts
+`sj03.example.com` and `sj04.example.com`.
+
+[source]
+----
+asadmin> install-node-ssh sj03.example.com sj04.example.com
+Created installation zip /home/gfuser/glassfish2339538623689073993.zip
+Successfully connected to gfuser@sj03.example.com using keyfile /home/gfuser
+/.ssh/id_rsa
+Copying /home/gfuser/glassfish2339538623689073993.zip (81395008 bytes) to
+sj03.example.com:/export/glassfish7
+Installing glassfish2339538623689073993.zip into sj03.example.com:/export/glassfish7
+Removing sj03.example.com:/export/glassfish7/glassfish2339538623689073993.zip
+Fixing file permissions of all files under sj03.example.com:/export/glassfish7/bin
+Successfully connected to gfuser@sj04.example.com using keyfile /home/gfuser
+/.ssh/id_rsa
+Copying /home/gfuser/glassfish2339538623689073993.zip (81395008 bytes) to
+sj04.example.com:/export/glassfish7
+Installing glassfish2339538623689073993.zip into sj04.example.com:/export/glassfish7
+Removing sj04.example.com:/export/glassfish7/glassfish2339538623689073993.zip
+Fixing file permissions of all files under sj04.example.com:/export/glassfish7/bin
+Command install-node-ssh executed successfully
+----
+
+[[GSHAG343]]
+
+See Also
+
+* link:reference-manual/install-node-dcom.html#GSRFM626[`install-node-dcom`(1)]
+* link:reference-manual/install-node-ssh.html#GSRFM628[`install-node-ssh`(1)]
+
+You can also view the full syntax and options of the subcommands by
+typing the following commands at the command line:
+
+* `asadmin help install-node-dcom`
+* `asadmin help install-node-ssh`
+
+[[gktaw]][[GSHAG00087]][[to-remove-glassfish-server-software-from-multiple-hosts]]
+
+==== To Remove {productName} Software From Multiple Hosts
+
+Use the `uninstall-node-dcom` subcommand or the `uninstall-node-ssh`
+subcommand in local mode to remove {productName} software from
+multiple hosts.
+
+[[GSHAG344]]
+
+Before You Begin
+
+Ensure that the following prerequisites are met:
+
+* DCOM or SSH is set up on the host where you are running the subcommand
+and on each host from which you are removing the {productName} software.
+
+* No process is accessing the parent of the base installation directory
+for the {productName} software or any subdirectory of this directory.
+
+* The parent of the base installation directory for the {productName}
+software is the same on each host from which you are removing the
+{productName} software.
+
+* For hosts that use DCOM for remote communication, the configuration of
+the following items is the same on each host:
+
+** Windows Domain
+** Windows User
+
+* For hosts that use SSH for remote communication, the configuration of
+the following items is the same on each host:
+
+** SSH port
+** SSH user
+** SSH key file
+
+Run the appropriate subcommand for the protocol that is set up for
+communication between the hosts.
+
+* If DCOM is set up for communication between the hosts, run the
+`uninstall-node-dcom` subcommand.
++
+[NOTE]
+====
+Only the options that are required to complete this task are provided in this step.
+For information about all the options for removing {productName} software, see the
+link:reference-manual/uninstall-node-dcom.html#GSRFM775[`uninstall-node-dcom`(1)] help page.
+====
++
+[source]
+----
+asadmin> uninstall-node-dcom host-list
+----
+host-list::
+  A space-separated list of the names of the hosts from which you are
+  removing {productName} software.
+* If SSH is set up for communication between the hosts, run the
+`uninstall-node-ssh` subcommand.
++
+[NOTE]
+====
+Only the options that are required to complete this task are provided in this step.
+For information about all the options for removing {productName} software, see the
+link:reference-manual/uninstall-node-ssh.html#GSRFM778[`uninstall-node-ssh`(1)] help page.
+====
++
+[source]
+----
+asadmin> uninstall-node-ssh host-list
+----
+host-list::
+  A space-separated list of the names of the hosts from which you are
+  removing {productName} software.
+
+[[GSHAG462]][[sthref11]]
+Example 2-11 Removing {productName} Software From Multiple
+DCO\M-Enabled Hosts
+
+This example removes {productName} software on the DCOM-enabled hosts
+`wpmdl1.example.com` and `wpmdl2.example.com` from the default location.
+
+[source]
+----
+asadmin> uninstall-node-dcom wpmdl1 wpmdl2
+Command uninstall-node-dcom executed successfully.
+----
+
+[[GSHAG345]][[sthref12]]
+Example 2-12 Removing {productName} Software From Multiple
+SSH-Enabled Hosts
+
+This example removes {productName} software on the SSH-enabled hosts
+`sj03.example.com` and `sj04.example.com` from the default location.
+
+[source]
+----
+asadmin> uninstall-node-ssh sj03 sj04
+Successfully connected to gfuser@sj03.example.com using keyfile /home/gfuser
+/.ssh/id_rsa
+Successfully connected to gfuser@sj04.example.com using keyfile /home/gfuser
+/.ssh/id_rsa
+Command uninstall-node-ssh executed successfully.
+----
+
+[[GSHAG346]]
+
+See Also
+
+* link:reference-manual/uninstall-node-dcom.html#GSRFM775[`uninstall-node-dcom`(1)]
+* link:reference-manual/uninstall-node-ssh.html#GSRFM778[`uninstall-node-ssh`(1)]
+
+You can also view the full syntax and options of the subcommands by
+typing the following commands at the command line:
+
+* `asadmin help uninstall-node-dcom`
+* `asadmin help uninstall-node-ssh`
diff --git a/docs/ha-administration-guide/src/main/asciidoc/title.adoc b/docs/ha-administration-guide/src/main/asciidoc/title.adoc
new file mode 100644
index 0000000..49754a1
--- /dev/null
+++ b/docs/ha-administration-guide/src/main/asciidoc/title.adoc
@@ -0,0 +1,57 @@
+type=page
+status=published
+title={productName} High Availability Administration Guide, Release 7
+next=preface.html
+prev=loe.html
+~~~~~~
+
+= {productName} High Availability Administration Guide, Release 7
+
+[[eclipse-glassfish-server]]
+== {productName}
+
+High Availability Administration Guide
+
+Release 7
+
+Contributed 2018 - 2022
+
+This book describes thehigh-availability features in {productName},
+including converged load balancing, HTTP load balancing, clusters,
+session persistence and failover.
+
+Note: The main thrust of the {productName} 7
+release is to provide an application server for developers to explore
+and begin exploiting the new and updated technologies in the Jakarta EE 10
+platform. Thus, the clustering, standalone instance and high
+availability features of {productName} were not a focus of this
+release. These features are included in the release, but they may not
+function properly with some of the new features added in support of the
+Jakarta EE 10 platform.
+
+[[sthref1]]
+
+'''''
+
+{productName} High Availability Administration
+Guide, Release 7
+
+Copyright © 2013, 2019 Oracle and/or its affiliates. All rights reserved.
+
+This program and the accompanying materials are made available under the
+terms of the Eclipse Public License v. 2.0, which is available at
+http://www.eclipse.org/legal/epl-2.0.
+
+SPDX-License-Identifier: EPL-2.0
+
+Oracle and Java are registered trademarks of Oracle and/or its
+affiliates. Other names may be trademarks of their respective owners.
+
+Intel and Intel Xeon are trademarks or registered trademarks of Intel
+Corporation. All SPARC trademarks are used under license and are
+trademarks or registered trademarks of SPARC International, Inc. AMD,
+Opteron, the AMD logo, and the AMD Opteron logo are trademarks or
+registered trademarks of Advanced Micro Devices. UNIX is a registered
+trademark of The Open Group.
+
+image:img/eclipse_foundation_logo_tiny.png["Eclipse Logo"]
diff --git a/docs/ha-administration-guide/src/main/jbake/assets/css/style.css b/docs/ha-administration-guide/src/main/jbake/assets/css/style.css
deleted file mode 100644
index 25a16e4..0000000
--- a/docs/ha-administration-guide/src/main/jbake/assets/css/style.css
+++ /dev/null
@@ -1,315 +0,0 @@
-/* CSS */
-/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
-/** 1. Set default font family to sans-serif. 2. Prevent iOS text size adjust after orientation change, without disabling user zoom. */
-html { font-family: sans-serif; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ }
-
-/* HTML5 display definitions ========================================================================== */
-/** Correct `block` display not defined for any HTML5 element in IE 8/9. Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox. Correct `block` display not defined for `main` in IE 11. */
-article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { display: block; }
-
-/** 1. Correct `inline-block` display not defined in IE 8/9. 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. */
-audio, canvas, progress, video { display: inline-block; /* 1 */ vertical-align: baseline; /* 2 */ }
-
-/** Prevent modern browsers from displaying `audio` without controls. Remove excess height in iOS 5 devices. */
-audio:not([controls]) { display: none; height: 0; }
-
-/** Address `[hidden]` styling not present in IE 8/9/10. Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. */
-[hidden], template { display: none; }
-
-/* Links ========================================================================== */
-/** Remove the gray background color from active links in IE 10. */
-a { background-color: transparent; }
-
-/** Improve readability when focused and also mouse hovered in all browsers. */
-a:active, a:hover { outline: 0; }
-
-/* Text-level semantics ========================================================================== */
-/** Address styling not present in IE 8/9/10/11, Safari, and Chrome. */
-abbr[title] { border-bottom: 1px dotted; }
-
-/** Address style set to `bolder` in Firefox 4+, Safari, and Chrome. */
-b, strong { font-weight: bold; }
-
-/** Address styling not present in Safari and Chrome. */
-dfn { font-style: italic; }
-
-/** Address variable `h1` font-size and margin within `section` and `article` contexts in Firefox 4+, Safari, and Chrome. */
-h1 { font-size: 2em; margin: 0.67em 0; }
-
-/** Address styling not present in IE 8/9. */
-mark { background: #ff0; color: #000; }
-
-/** Address inconsistent and variable font size in all browsers. */
-small { font-size: 80%; }
-
-/** Prevent `sub` and `sup` affecting `line-height` in all browsers. */
-sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }
-
-sup { top: -0.5em; }
-
-sub { bottom: -0.25em; }
-
-/* Embedded content ========================================================================== */
-/** Remove border when inside `a` element in IE 8/9/10. */
-img { border: 0; }
-
-/** Correct overflow not hidden in IE 9/10/11. */
-svg:not(:root) { overflow: hidden; }
-
-/* Grouping content ========================================================================== */
-/** Address margin not present in IE 8/9 and Safari. */
-figure { margin: 1em 40px; }
-
-/** Address differences between Firefox and other browsers. */
-hr { box-sizing: content-box; height: 0; }
-
-/** Contain overflow in all browsers. */
-pre { overflow: auto; }
-
-/** Address odd `em`-unit font size rendering in all browsers. */
-code, kbd, pre, samp { font-family: monospace, monospace; font-size: 1em; }
-
-/* Forms ========================================================================== */
-/** Known limitation: by default, Chrome and Safari on OS X allow very limited styling of `select`, unless a `border` property is set. */
-/** 1. Correct color not being inherited. Known issue: affects color of disabled elements. 2. Correct font properties not being inherited. 3. Address margins set differently in Firefox 4+, Safari, and Chrome. */
-button, input, optgroup, select, textarea { color: inherit; /* 1 */ font: inherit; /* 2 */ margin: 0; /* 3 */ }
-
-/** Address `overflow` set to `hidden` in IE 8/9/10/11. */
-button { overflow: visible; }
-
-/** Address inconsistent `text-transform` inheritance for `button` and `select`. All other form control elements do not inherit `text-transform` values. Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. Correct `select` style inheritance in Firefox. */
-button, select { text-transform: none; }
-
-/** 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls. 2. Correct inability to style clickable `input` types in iOS. 3. Improve usability and consistency of cursor style between image-type `input` and others. */
-button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ }
-
-/** Re-set default cursor for disabled elements. */
-button[disabled], html input[disabled] { cursor: default; }
-
-/** Remove inner padding and border in Firefox 4+. */
-button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; }
-
-/** Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet. */
-input { line-height: normal; }
-
-/** It's recommended that you don't attempt to style these elements. Firefox's implementation doesn't respect box-sizing, padding, or width.  1. Address box sizing set to `content-box` in IE 8/9/10. 2. Remove excess padding in IE 8/9/10. */
-input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ }
-
-/** Fix the cursor style for Chrome's increment/decrement buttons. For certain `font-size` values of the `input`, it causes the cursor style of the decrement button to change from `default` to `text`. */
-input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { height: auto; }
-
-/** 1. Address `appearance` set to `searchfield` in Safari and Chrome. 2. Address `box-sizing` set to `border-box` in Safari and Chrome (include `-moz` to future-proof). */
-input[type="search"] { -webkit-appearance: textfield; /* 1 */ /* 2 */ box-sizing: content-box; }
-
-/** Remove inner padding and search cancel button in Safari and Chrome on OS X. Safari (but not Chrome) clips the cancel button when the search input has padding (and `textfield` appearance). */
-input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; }
-
-/** Define consistent border, margin, and padding. */
-fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; }
-
-/** 1. Correct `color` not being inherited in IE 8/9/10/11. 2. Remove padding so people aren't caught out if they zero out fieldsets. */
-legend { border: 0; /* 1 */ padding: 0; /* 2 */ }
-
-/** Remove default vertical scrollbar in IE 8/9/10/11. */
-textarea { overflow: auto; }
-
-/** Don't inherit the `font-weight` (applied by a rule above). NOTE: the default cannot safely be changed in Chrome and Safari on OS X. */
-optgroup { font-weight: bold; }
-
-/* Tables ========================================================================== */
-/** Remove most spacing between table cells. */
-table { border-collapse: collapse; border-spacing: 0; }
-
-td, th { padding: 0; }
-
-/* LAYOUT STYLES */
-
-p { margin-top: 0; }
-
-code, pre { margin-bottom: 30px; font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace; font-size: 13px; color: #222; }
-
-code { padding: 0 3px; background-color: #f2f8fc; border: solid 1px #dbe7f3; }
-
-pre { padding: 20px; overflow: auto; text-shadow: none; background: #fff; border: solid 1px #f2f2f2; }
-
-pre code { padding: 0; color: #2879d0; background-color: #fff; border: none; }
-
-ul, ol, dl { margin-bottom: 20px; }
-
-/* COMMON STYLES */
-
-td.halign-right { text-align: right; } 
-
-td.halign-center { text-align: center; } 
-
-form { padding: 20px; background: #f2f2f2; }
-
-h2 { 
-   font-size: 2em;
-   line-height: 1.2em;
-   font-weight: 200;
-   letter-spacing: 0;
-}
-
-h3 { 
-   font-size: 1.4em;
-   line-height: 1.2em;
-   font-weight: normal;
-   letter-spacing: 0;
-}
-
-.sect1 {
-   margin-left: 4%;
-   margin-right: 4%;
-   font: 13px/20px Arial, Helvetica, sans-serif  
-}
-
-a:link {
-   text-decoration: none;
-   color: #09569d;
-}
-
-#preamble hr{
-   margin-left: 0%;
-   margin-right: 0%;
-}
-
-#preamble .sectionbody table  {
-   font-weight: 200;
-   margin-left: 4%;
-   margin-right: 4%;
-}
-
-hr {
-   margin-bottom: 12px;
-}
-
-table.tableblock.frame-all.grid-all.spread {
-   font-size: 12px;
-}
-
-code {
-   font-size:.9em;
-   border: 1px solid #eaeaea;
-   background-color: #f6f6f6;
-   border-radius: 3px;
-   padding: 1px;
-   padding-left:2px;
-   padding-right:2px;
-}
-
-pre.prettyprint.highlight {
-   border: 1px solid #eaeaea;
-   background-color: #f6f6f6;
-   border-radius: 4px;
-   padding: 8px;
-   padding-top:4px;
-   padding-bottom:4px;
-}
-
-.language-oac_no_warn {
-   font-size:.9em;
-   color:#222;
-   background-color: transparent;
-}
-
-#doc-title {
-   margin-left: 4%;
-}
-
-#top-nav {
-   margin-left: 4%;
-   font-size: 12px;
-}
-
-#bottom-nav {
-   margin-left: 4%;
-   font-size: 12px;
-}
-
-.vector-font {
-   color:grey; 
-   font-size: 20px;
-}
-
-#copyright {
-   padding-top: 10px;
-   padding-bottom: 4px;
-   display: table;
-   margin:0 auto;
-   color: grey;
-   font-size: 12px;
-   vertical-align: middle;
-}
-
-.beta {color: #FF0000}
-
-/* GENERAL ELEMENT TYPE STYLES */
-
-/* #Media Queries
-================================================== */
-/* Smaller than standard 960 (devices and browsers) */
-/* Tablet Portrait size to standard 960 (devices and browsers) */
-@media only screen and (min-width: 768px) and (max-width: 959px) { .inner { width: 740px; }
-  header h1, header h2 { width: 340px; }
-  header h1 { font-size: 60px; }
-  header h2 { font-size: 30px; }
-}
-/* All Mobile Sizes (devices and browser) */
-@media only screen and (max-width: 767px) { .inner { width: 93%; }
-  header { padding: 20px 0; }
-  header .inner { position: relative; }
-  header h1, header h2 { width: 100%; }
-  header h1 { font-size: 48px; }
-  header h2 { font-size: 24px; }
-  header a.button { position: relative; display: inline-block; width: auto; height: auto; padding: 5px 10px; margin-top: 15px; font-size: 13px; line-height: 1; color: #2879d0; text-align: center; background-color: #9ddcff; background-image: none; border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; }
-  header a.button small { display: inline; font-size: 13px; }
-}
-/* Mobile Landscape Size to Tablet Portrait (devices and browsers) */
-/* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */
-
-header h1 { padding-top: 14px; font-size: 2em; font-weight: 200; line-height: 1.4; color: #FFFFFF; letter-spacing: 0px; border-bottom: 0px; }
-
-header h2 { font-size: 1.2em; margin-top: 0; margin-bottom: 0; font-weight: 200; line-height: .8; color: #ec7D11; letter-spacing: 0; }
-
-/*
-header a.button { background: transparent url(../images/logo.png) 0 0 no-repeat; padding-left: 32px; }
-*/
-
-header a:hover { text-decoration: none; }
-
-/* Admonition (Note) block */
-.admonitionblock > table {
-  border: 0;
-  background: none;
-  width: 100%;
-  table-layout: auto;
-  margin-bottom: 10.5px;
-}
-.admonitionblock > table td.icon {
-  text-align: center;
-  width: 60px;
-}
-.admonitionblock > table td.icon img {
-  max-width: none;
-}
-.admonitionblock > table td.icon .title {
-  text-transform: uppercase;
-}
-.admonitionblock > table td.content {
-  padding-left: 1em;
-  padding-right: 1em;
-  border-left: 3px solid #ddd;
-}
-.admonitionblock > table td.content > :last-child > :last-child {
-  margin-bottom: 0;
-}
-.admonitionblock td.icon [class^="fa icon-"]:before {
-  font-size: 2.5em;
-  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
-  cursor: default;
-}
-.admonitionblock td.icon .icon-note:before {
-  content: "\f05a";
-  color: #5bc0de;
-}
diff --git a/docs/ha-administration-guide/src/main/jbake/content/clusters.adoc b/docs/ha-administration-guide/src/main/jbake/content/clusters.adoc
deleted file mode 100644
index 094991b..0000000
--- a/docs/ha-administration-guide/src/main/jbake/content/clusters.adoc
+++ /dev/null
@@ -1,1335 +0,0 @@
-type=page
-status=published
-title=Administering GlassFish Server Clusters
-next=instances.html
-prev=nodes.html
-~~~~~~
-Administering GlassFish Server Clusters
-=======================================
-
-[[GSHAG00005]][[gjfom]]
-
-
-[[administering-glassfish-server-clusters]]
-4 Administering GlassFish Server Clusters
------------------------------------------
-
-A cluster is a collection of GlassFish Server instances that work
-together as one logical entity. A cluster provides a runtime environment
-for one or more Java Platform, Enterprise Edition (Java EE)
-applications. A cluster provides high availability through failure
-protection, scalability, and load balancing.
-
-The Group Management Service (GMS) enables instances to participate in a
-cluster by detecting changes in cluster membership and notifying
-instances of the changes. To ensure that GMS can detect changes in
-cluster membership, a cluster's GMS settings must be configured
-correctly.
-
-The following topics are addressed here:
-
-* link:#gjfqp[About GlassFish Server Clusters]
-* link:#gjfnl[Group Management Service]
-* link:#gkqdy[Creating, Listing, and Deleting Clusters]
-
-[[gjfqp]][[GSHAG00183]][[about-glassfish-server-clusters]]
-
-About GlassFish Server Clusters
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-A cluster is a named collection of GlassFish Server instances that share
-the same applications, resources, and configuration information. For
-information about GlassFish Server instances, see
-link:instances.html#gkrbv[Administering GlassFish Server Instances].
-
-GlassFish Server enables you to administer all the instances in a
-cluster as a single unit from a single host, regardless of whether the
-instances reside on the same host or different hosts. You can perform
-the same operations on a cluster that you can perform on an unclustered
-instance, for example, deploying applications and creating resources.
-
-A cluster provides high availability through failure protection,
-scalability, and load balancing.
-
-* Failure protection. If an instance or a host in a cluster fails,
-GlassFish Server detects the failure and recovers the user session
-state. If a load balancer is configured for the cluster, the load
-balancer redirects requests from the failed instance to other instances
-in the cluster. Because the same applications and resources are on all
-instances in the cluster, an instance can fail over to any other
-instance in the cluster. +
-To enable the user session state to be recovered, each instance in a
-cluster sends in-memory state data to another instance. As state data is
-updated in any instance, the data is replicated.
-* Scalability. If increased capacity is required, you can add instances
-to a cluster with no disruption in service. When an instance is added or
-removed, the changes are handled automatically.
-* Load balancing. If instances in a cluster are distributed among
-different hosts, the workload can be distributed among the hosts to
-increase overall system throughput.
-
-[[gjfnl]][[GSHAG00184]][[group-management-service]]
-
-Group Management Service
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-The Group Management Service (GMS) is an infrastructure component that
-is enabled for the instances in a cluster. When GMS is enabled, if a
-clustered instance fails, the cluster and the Domain Administration
-Server (DAS) are aware of the failure and can take action when failure
-occurs. Many features of GlassFish Server depend upon GMS. For example,
-GMS is used by the in-memory session replication, transaction service,
-and timer service features.
-
-GMS is a core service of the Shoal framework. For more information about
-Shoal, visit the http://shoal.dev.java.net/[Project Shoal home page]
-(`https://shoal.dev.java.net/`).
-
-The following topics are addressed here:
-
-* link:#CHDFEGAG[Protocols and Transports for GMS]
-* link:#gjfpd[GMS Configuration Settings]
-* link:#gjfog[Dotted Names for GMS Settings]
-* link:#gkoac[To Preconfigure Nondefault GMS Configuration Settings]
-* link:#gkqqo[To Change GMS Settings After Cluster Creation]
-* link:#gklhl[To Check the Health of Instances in a Cluster]
-* link:#gklhd[To Validate That Multicast Transport Is Available for a
-Cluster]
-* link:#CHDGAIBJ[Discovering a Cluster When Multicast Transport Is
-Unavailable]
-* link:#gjdlw[Using the Multi-Homing Feature With GMS]
-
-[[CHDFEGAG]][[GSHAG485]][[protocols-and-transports-for-gms]]
-
-Protocols and Transports for GMS
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can specify that GMS should use one of the following combinations of
-protocol and transport for broadcasting messages:
-
-* User Datagram Protocol (UDP) multicast
-* Transmission Control Protocol (TCP) without multicast
-
-Even if GMS should use UDP multicast for broadcasting messages, you must
-ensure that TCP is enabled. On Windows systems, enabling TCP involves
-enabling a protocol and port for security when a firewall is enabled.
-
-If GMS should use UDP multicast for broadcasting messages and if
-GlassFish Server instances in a cluster are located on different hosts,
-the following conditions must be met:
-
-* The DAS host and all hosts for the instances must be on the same
-subnet.
-* UDP multicast must be enabled for the network. To test whether
-multicast is enabled, use the link:../reference-manual/validate-multicast.html#GSRFM00259[`validate-multicast`(1)]
-subcommand.
-
-If GMS should use TCP without multicast, you must configure GMS to
-locate the instances to use for discovering the cluster. For more
-information, see link:#CHDGAIBJ[Discovering a Cluster When Multicast
-Transport Is Unavailable].
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-If you do not configure GMS to locate the instances to use for
-discovering a cluster, GMS uses UDP multicast by default.
-
-|=======================================================================
-
-
-[[gjfpd]][[GSHAG00264]][[gms-configuration-settings]]
-
-GMS Configuration Settings
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-GlassFish Server has the following types of GMS settings:
-
-* GMS cluster settings — These are determined during cluster creation.
-For more information about these settings, see link:#gkqdm[To Create a
-Cluster].
-* GMS configuration settings — These are determined during configuration
-creation and are explained here.
-
-The following GMS configuration settings are used in GMS for group
-discovery and failure detection:
-
-`group-discovery-timeout-in-millis`::
-  Indicates the amount of time (in milliseconds) an instance's GMS
-  module will wait during instance startup for discovering other members
-  of the group. +
-  The `group-discovery-timeout-in-millis` timeout value should be set to
-  the default or higher. The default is 5000.
-`max-missed-heartbeats`::
-  Indicates the maximum number of missed heartbeats that the health
-  monitor counts before the instance can be marked as a suspected
-  failure. GMS also tries to make a peer-to-peer connection with the
-  suspected member. If the maximum number of missed heartbeats is
-  exceeded and peer-to-peer connection fails, the member is marked as a
-  suspected failure. The default is 3.
-`heartbeat-frequency-in-millis`::
-  Indicates the frequency (in milliseconds) at which a heartbeat is sent
-  by each server instance to the cluster. +
-  The failure detection interval is the `max-missed-heartbeats`
-  multiplied by the `heartbeat-frequency-in-millis`. Therefore, the
-  combination of defaults, 3 multiplied by 2000 milliseconds, results in
-  a failure detection interval of 6 seconds. +
-  Lowering the value of `heartbeat-frequency-in-millis` below the
-  default would result in more frequent heartbeat messages being sent
-  out from each member. This could potentially result in more heartbeat
-  messages in the network than a system needs for triggering failure
-  detection protocols. The effect of this varies depending on how
-  quickly the deployment environment needs to have failure detection
-  performed. That is, the (lower) number of retries with a lower
-  heartbeat interval would make it quicker to detect failures. +
-  However, lowering this value could result in false positives because
-  you could potentially detect a member as failed when, in fact, the
-  member's heartbeat is reflecting the network load from other parts of
-  the server. Conversely, a higher timeout interval results in fewer
-  heartbeats in the system because the time interval between heartbeats
-  is longer. As a result, failure detection would take a longer. In
-  addition, a startup by a failed member during this time results in a
-  new join notification but no failure notification, because failure
-  detection and verification were not completed. +
-  The default is 2000.
-`verify-failure-waittime-in-millis`::
-  Indicates the verify suspect protocol's timeout used by the health
-  monitor. After a member is marked as suspect based on missed
-  heartbeats and a failed peer-to-peer connection check, the verify
-  suspect protocol is activated and waits for the specified timeout to
-  check for any further health state messages received in that time, and
-  to see if a peer-to-peer connection can be made with the suspect
-  member. If not, then the member is marked as failed and a failure
-  notification is sent. The default is 1500.
-`verify-failure-connect-timeout-in-millis`::
-  Indicates the time it takes for the GMS to detect a hardware or
-  network failure of a server instance. Be careful not to set this value
-  too low. The smaller this timeout value is, the greater the chance of
-  detecting false failures. That is, the instance has not failed but
-  doesn't respond within the short window of time. The default is 10000.
-
-The heartbeat frequency, maximum missed heartbeats, peer-to-peer
-connection-based failure detection, and the verify timeouts are all
-needed to ensure that failure detection is robust and reliable in
-GlassFish Server.
-
-For the dotted names for each of these GMS configuration settings, see
-link:#gjfog[Dotted Names for GMS Settings]. For the steps to specify
-these settings, see link:#gkoac[To Preconfigure Nondefault GMS
-Configuration Settings].
-
-[[gjfog]][[GSHAG00265]][[dotted-names-for-gms-settings]]
-
-Dotted Names for GMS Settings
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Below are sample link:../reference-manual/get.html#GSRFM00139[`get`] subcommands to get all the GMS
-configuration settings (attributes associated with the referenced
-`mycfg` configuration) and GMS cluster settings (attributes and
-properties associated with a cluster named `mycluster`).
-
-[source,oac_no_warn]
-----
-asadmin> get "configs.config.mycfg.group-management-service.*"
-configs.config.mycfg.group-management-service.failure-detection.heartbeat-frequency-in-millis=2000
-configs.config.mycfg.group-management-service.failure-detection.max-missed-heartbeats=3
-configs.config.mycfg.group-management-service.failure-detection.verify-failure-connect-timeout-in-millis=10000
-configs.config.mycfg.group-management-service.failure-detection.verify-failure-waittime-in-millis=1500
-configs.config.mycfg.group-management-service.group-discovery-timeout-in-millis=5000
-
-asadmin> get clusters.cluster.mycluster
-clusters.cluster.mycluster.config-ref=mycfg
-clusters.cluster.mycluster.gms-bind-interface-address=${GMS-BIND-INTERFACE-ADDRESS-mycluster}
-clusters.cluster.mycluster.gms-enabled=true
-clusters.cluster.mycluster.gms-multicast-address=228.9.245.47
-clusters.cluster.mycluster.gms-multicast-port=9833
-clusters.cluster.mycluster.name=mycluster
-
-asadmin> get "clusters.cluster.mycluster.property.*"
-clusters.cluster.mycluster.property.GMS_LISTENER_PORT=${GMS_LISTENER_PORT-mycluster}
-clusters.cluster.mycluster.property.GMS_MULTICAST_TIME_TO_LIVE=4
-clusters.cluster.mycluster.property.GMS_LOOPBACK=false
-clusters.cluster.mycluster.property.GMS_TCPSTARTPORT=9090
-clusters.cluster.mycluster.property.GMS_TCPENDPORT=9200
-----
-
-The last `get` subcommand displays only the properties that have been
-explicitly set.
-
-For the steps to specify these settings, see link:#gkoac[To Preconfigure
-Nondefault GMS Configuration Settings] and link:#gkqqo[To Change GMS
-Settings After Cluster Creation].
-
-[[gkoac]][[GSHAG00098]][[to-preconfigure-nondefault-gms-configuration-settings]]
-
-To Preconfigure Nondefault GMS Configuration Settings
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can preconfigure GMS with values different than the defaults without
-requiring a restart of the DAS and the cluster.
-
-1.  Create a configuration using the link:../reference-manual/copy-config.html#GSRFM00011[`copy-config`]
-subcommand. +
-For example: +
-[source,oac_no_warn]
-----
-asadmin> copy-config default-config mycfg
-----
-For more information, see link:named-configurations.html#abdjr[To Create
-a Named Configuration].
-2.  Set the values for the new configuration's GMS configuration
-settings. +
-For example: +
-[source,oac_no_warn]
-----
-asadmin> set configs.config.mycfg.group-management-service.group-discovery-timeout-in-millis=8000
-asadmin> set configs.config.mycfg.group-management-service.failure-detection.max-missed-heartbeats=5
-----
-For a complete list of the dotted names for these settings, see
-link:#gjfog[Dotted Names for GMS Settings].
-3.  Create the cluster so it uses the previously created configuration. +
-For example: +
-[source,oac_no_warn]
-----
-asadmin> create-cluster --config mycfg mycluster
-----
-You can also set GMS cluster settings during this step. For more
-information, see link:#gkqdm[To Create a Cluster].
-4.  Create server instances for the cluster. +
-For example: +
-[source,oac_no_warn]
-----
-asadmin> create-instance --node localhost --cluster mycluster instance01
-
-asadmin> create-instance --node localhost --cluster mycluster instance02
-----
-5.  Start the cluster. +
-For example: +
-[source,oac_no_warn]
-----
-asadmin> start-cluster mycluster
-----
-
-[[GSHAG367]]
-
-See Also
-
-You can also view the full syntax and options of a subcommand by typing
-`asadmin help` subcommand at the command line.
-
-[[gkqqo]][[GSHAG00099]][[to-change-gms-settings-after-cluster-creation]]
-
-To Change GMS Settings After Cluster Creation
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To avoid the need to restart the DAS and the cluster, configure GMS
-configuration settings before cluster creation as explained in
-link:#gkoac[To Preconfigure Nondefault GMS Configuration Settings].
-
-To avoid the need to restart the DAS and the cluster, configure the GMS
-cluster settings during cluster creation as explained in link:#gkqdm[To
-Create a Cluster].
-
-Changing any GMS settings using the `set` subcommand after cluster
-creation requires a domain administration server (DAS) and cluster
-restart as explained here.
-
-1.  Ensure that the DAS and cluster are running. +
-Remote subcommands require a running server.
-2.  Use the link:../reference-manual/get.html#GSRFM00139[`get`] subcommand to determine the settings
-to change. +
-For example: +
-[source,oac_no_warn]
-----
-asadmin> get "configs.config.mycfg.group-management-service.*"
-configs.config.mycfg.group-management-service.failure-detection.heartbeat-frequency-in-millis=2000
-configs.config.mycfg.group-management-service.failure-detection.max-missed-heartbeats=3
-configs.config.mycfg.group-management-service.failure-detection.verify-failure-connect-timeout-in-millis=10000
-configs.config.mycfg.group-management-service.failure-detection.verify-failure-waittime-in-millis=1500
-configs.config.mycfg.group-management-service.group-discovery-timeout-in-millis=5000
-----
-For a complete list of the dotted names for these settings, see
-link:#gjfog[Dotted Names for GMS Settings].
-3.  Use the link:../reference-manual/set.html#GSRFM00226[`set`] subcommand to change the settings. +
-For example: +
-[source,oac_no_warn]
-----
-asadmin> set configs.config.mycfg.group-management-service.group-discovery-timeout-in-millis=6000
-----
-4.  Use the `get` subcommand again to confirm that the changes were
-made. +
-For example: +
-[source,oac_no_warn]
-----
-asadmin> get configs.config.mycfg.group-management-service.group-discovery-timeout-in-millis
-----
-5.  Restart the DAS. +
-For example: +
-[source,oac_no_warn]
-----
-asadmin> stop-domain domain1
-
-asadmin> start-domain domain1
-----
-6.  Restart the cluster. +
-For example: +
-[source,oac_no_warn]
-----
-asadmin> stop-cluster mycluster
-
-asadmin> start-cluster mycluster
-----
-
-[[GSHAG368]]
-
-See Also
-
-You can also view the full syntax and options of a subcommand by typing
-`asadmin help` subcommand at the command line.
-
-[[gklhl]][[GSHAG00100]][[to-check-the-health-of-instances-in-a-cluster]]
-
-To Check the Health of Instances in a Cluster
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The `get-health` subcommand only works when GMS is enabled. This is the
-quickest way to evaluate the health of a cluster and to detect if
-cluster is properly operating; that is, all members of the cluster are
-running and visible to DAS.
-
-If multicast is not enabled for the network, all instances could be
-running (as shown by the link:../reference-manual/list-instances.html#GSRFM00170[`list-instances`] subcommand),
-yet isolated from each other. The `get-health` subcommand does not show
-the instances if they are running but cannot discover each other due to
-multicast not being configured properly. See link:#gklhd[To Validate
-That Multicast Transport Is Available for a Cluster].
-
-1.  Ensure that the DAS and cluster are running. +
-Remote subcommands require a running server.
-2.  Check whether server instances in a cluster are running by using the
-link:../reference-manual/get-health.html#GSRFM00141[`get-health`] subcommand.
-
-[[GSHAG00032]][[gklgw]]
-
-
-Example 4-1 Checking the Health of Instances in a Cluster
-
-This example checks the health of a cluster named `cluster1`.
-
-[source,oac_no_warn]
-----
-asadmin> get-health cluster1
-instance1 started since Wed Sep 29 16:32:46 EDT 2010
-instance2 started since Wed Sep 29 16:32:45 EDT 2010
-Command get-health executed successfully.
-----
-
-[[GSHAG369]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help get-health` at the command line.
-
-[[gklhd]][[GSHAG00101]][[to-validate-that-multicast-transport-is-available-for-a-cluster]]
-
-To Validate That Multicast Transport Is Available for a Cluster
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-[[GSHAG370]]
-
-Before You Begin
-
-To test a specific multicast address, multicast port, or bind interface
-address, get this information beforehand using the `get` subcommand. Use
-the following subcommand to get the multicast address and port for a
-cluster named `c1`:
-
-[source,oac_no_warn]
-----
-asadmin> get clusters.cluster.c1
-clusters.cluster.c1.config-ref=mycfg
-clusters.cluster.c1.gms-bind-interface-address=${GMS-BIND-INTERFACE-ADDRESS-c1}
-clusters.cluster.c1.gms-enabled=true
-clusters.cluster.c1.gms-multicast-address=228.9.174.162
-clusters.cluster.c1.gms-multicast-port=5383
-clusters.cluster.c1.name=c1
-----
-
-Use the following subcommand to get the bind interface address of a
-server instance named `i1`that belongs to a cluster named `c1`, if this
-system property has been set:
-
-[source,oac_no_warn]
-----
-asadmin> get servers.server.i1.system-property.GMS-BIND-INTERFACE-ADDRESS-c1
-servers.server.i1.system-property.GMS-BIND-INTERFACE-ADDRESS-c1.name=GMS-BIND-INTERFACE-ADDRESS-c1
-servers.server.i1.system-property.GMS-BIND-INTERFACE-ADDRESS-c1.value=10.12.152.30
-----
-
-For information on how to set this system property, see
-link:#gjdlw[Using the Multi-Homing Feature With GMS].
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Do not run the `validate-multicast` subcommand using the DAS and
-cluster's multicast address and port values while the DAS and cluster
-are running. Doing so results in an error.
-
-The `validate-multicast` subcommand must be run at the same time on two
-or more machines to validate whether multicast messages are being
-received between the machines.
-
-|=======================================================================
-
-
-Check whether multicast transport is available for a cluster by using
-the link:../reference-manual/validate-multicast.html#GSRFM00259[`validate-multicast`] subcommand.
-
-[[GSHAG00033]][[gklhv]]
-
-
-Example 4-2 Validating That Multicast Transport Is Available for a
-Cluster
-
-This example checks whether multicast transport is available for a
-cluster named `c1`.
-
-Run from host `sr1`:
-
-[source,oac_no_warn]
-----
-asadmin> validate-multicast
-Will use port 2048
-Will use address 228.9.3.1
-Will use bind interface null
-Will use wait period 2,000 (in milliseconds)
-
-Listening for data...
-Sending message with content "sr1" every 2,000 milliseconds
-Received data from sr1 (loopback)
-Received data from sr2
-Exiting after 20 seconds. To change this timeout, use the --timeout command line option.
-Command validate-multicast executed successfully.
-----
-
-Run from host `sr2`:
-
-[source,oac_no_warn]
-----
-asadmin> validate-multicast
-Will use port 2048
-Will use address 228.9.3.1
-Will use bind interface null
-Will use wait period 2,000 (in milliseconds)
-
-Listening for data...
-Sending message with content "sr2" every 2,000 milliseconds
-Received data from sr2 (loopback)
-Received data from sr1
-Exiting after 20 seconds. To change this timeout, use the --timeout command line option.
-Command validate-multicast executed successfully.
-----
-
-[[GSHAG371]]
-
-Next Steps
-
-As long as all machines see each other, multicast is validated to be
-working properly across the machines. If the machines are not seeing
-each other, set the `--bindaddress` option explicitly to ensure that all
-machines are using interface on same subnet, or increase the
-`--timetolive` option from the default of `4`. If these changes fail to
-resolve the multicast issues, ask the network administrator to verify
-that the network is configured so the multicast messages can be seen
-between all the machines used to run the cluster.
-
-[[GSHAG372]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help get-health` at the command line.
-
-[[CHDGAIBJ]][[GSHAG00373]][[discovering-a-cluster-when-multicast-transport-is-unavailable]]
-
-Discovering a Cluster When Multicast Transport Is Unavailable
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-When multicast transport is unavailable, GlassFish Server instances that
-are joining a cluster cannot rely on broadcast messages from GMS to
-discover the cluster. Instead, an instance that is joining a cluster
-uses a running instance or the DAS in the cluster to discover the
-cluster.
-
-Therefore, when multicast transport is unavailable, you must provide the
-locations of instances in the cluster to use for discovering the
-cluster. You are not required to provide the locations of all instances
-in the cluster. However, for an instance to discover the cluster, at
-least one instance whose location you provide must be running. To
-increase the probability of finding a running instance, provide the
-locations of several instances.
-
-If the DAS will be left running after the cluster is started, provide
-the location of the DAS first in the list of instances. When a cluster
-is started, the DAS is running before any of the instances in the
-cluster are started.
-
-The locations of the instances to use for discovering a cluster are part
-of the configuration data that you provide when creating the cluster.
-How to provide this data depends on how instances are distributed, as
-explained in the following subsections:
-
-* link:#CHDCGIFF[To Discover a Cluster When Multiple Instances in a
-Cluster are Running on a Host]
-* link:#CHDIGFCG[To Discover a Cluster When Each Instance in a Cluster
-Is Running on a Different Host]
-
-[[CHDCGIFF]][[GSHAG486]][[to-discover-a-cluster-when-multiple-instances-in-a-cluster-are-running-on-a-host]]
-
-To Discover a Cluster When Multiple Instances in a Cluster are Running on a Host
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-If multiple instances in the same cluster are running on a host, you
-must provide a list of uniform resource indicators (URIs). Each URI must
-locate a GlassFish Server instance or the DAS in the cluster.
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  Create a system property to represent the port number of the port on
-which the DAS listens for messages from GMS for the cluster. +
-Use the link:../reference-manual/create-system-properties.html#GSRFM00059[`create-system-properties`] subcommand for this
-purpose. +
-[source,oac_no_warn]
-----
-asadmin> create-system-properties GMS_LISTENER_PORT-cluster-name=gms-port
-----
-cluster-name::
-  The name of the cluster to which the messages from GMS apply.
-gms-port::
-  The port number of the port on which the DAS listens for messages from
-  GMS.
-3.  Restart the DAS.
-4.  When creating the cluster, set the `GMS_DISCOVERY_URI_LIST` property
-to a comma-separated list of URIs that locate instances to use for
-discovering the cluster. +
-[source,oac_no_warn]
-----
-asadmin> create-cluster --properties GMS_DISCOVERY_URI_LIST=uri-list cluster-name
-----
-uri-list::
-  A comma-separated list of URIs that locate a GlassFish Server instance
-  or the DAS in the cluster. +
-  The format of each URI in the list is as follows: +
-  scheme`://`host-name-or -IP-address`:`port +
-  * scheme is the URI scheme, which is `tcp`.
-  * host-name-or -IP-address is the host name or IP address of the host
-  on which the instance is running.
-  * port is the port number of the port on which the instance will
-  listen for messages from GMS.
-cluster-name::
-  The name of the cluster that you are creating. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-For complete instructions for creating a cluster, see link:#gkqdm[To
-Create a Cluster].
-
-|=======================================================================
-
-5.  When you add each instance to the cluster, set the system property
-`GMS_LISTENER_PORT-`clustername for the instance.
-* To create the instance centrally, run the following command: +
-[source,oac_no_warn]
-----
-asadmin> create-instance --node node-name
---systemproperties GMS_LISTENER_PORT-cluster-name=gms-port --cluster  cluster-name instance-name
-----
-* To create the instance locally, run the following command: +
-[source,oac_no_warn]
-----
-asadmin> create-local-instance
---systemproperties GMS_LISTENER_PORT-cluster-name=gms-port --cluster  cluster-name instance-name
-----
-node-name::
-  The name of an existing GlassFish Server node on which the instance is
-  to reside. For more information about nodes, see
-  link:nodes.html#gkrle[Administering GlassFish Server Nodes].
-cluster-name::
-  The name of the cluster to which the you are adding the instance.
-gms-port::
-  The port number of the port on which the instance listens for messages
-  from GMS.
-instance-name::
-  The name of the instance that you are creating. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-For full instructions for adding an instance to a cluster, see the
-following sections:
-
-* link:instances.html#gkqch[To Create an Instance Centrally]
-* link:instances.html#gkqbl[To Create an Instance Locally]
-
-|=======================================================================
-
-
-[[GSHAG487]][[sthref19]]
-
-
-Example 4-3 Discovering a Cluster When Multiple Instances are Running on
-a Host
-
-This example creates a cluster that is named `tcpcluster` for which GMS
-is not using multicast for broadcasting messages.
-
-The cluster contains the instances `instance101` and `instance102`.
-These instances reside on the host whose IP address is `10.152.23.224`
-and listen for GMS events on ports 9091 and 9092. The DAS is also
-running on this host and listens for GMS events on port 9090.
-
-Instances that are joining the cluster will use the DAS and the
-instances `instance101` and `instance102` to discover the cluster.
-
-[source,oac_no_warn]
-----
-asadmin> create-system-properties GMS_LISTENER_PORT-tcpcluster=9090
-Command create-system-properties executed successfully.
-asadmin> restart-domain
-Successfully restarted the domain
-Command restart-domain executed successfully.
-asadmin> create-cluster --properties GMS_DISCOVERY_URI_LIST=
-tcp'\\:'//10.152.23.224'\\:'9090,
-tcp'\\:'//10.152.23.224'\\:'9091,
-tcp'\\:'//10.152.23.224'\\:'9092 tcpcluster
-Command create-cluster executed successfully.
-asadmin> create-local-instance
---systemproperties GMS_LISTENER_PORT-tcpcluster=9091 --cluster tcpcluster
-instance101
-Rendezvoused with DAS on localhost:4848.
-Port Assignments for server instance instance101:
-JMX_SYSTEM_CONNECTOR_PORT=28686
-JMS_PROVIDER_PORT=27676
-HTTP_LISTENER_PORT=28080
-ASADMIN_LISTENER_PORT=24848
-JAVA_DEBUGGER_PORT=29009
-IIOP_SSL_LISTENER_PORT=23820
-IIOP_LISTENER_PORT=23700
-OSGI_SHELL_TELNET_PORT=26666
-HTTP_SSL_LISTENER_PORT=28181
-IIOP_SSL_MUTUALAUTH_PORT=23920
-Command create-local-instance executed successfully.
-asadmin> create-local-instance
---systemproperties GMS_LISTENER_PORT-tcpcluster=9092 --cluster tcpcluster
-instance102
-Rendezvoused with DAS on localhost:4848.
-Using DAS host localhost and port 4848 from existing das.properties for node
-localhost-domain1. To use a different DAS, create a new node using
-create-node-ssh or create-node-config. Create the instance with the new node and
-correct host and port:
-asadmin --host das_host --port das_port create-local-instance --node node_name
-instance_name.
-Port Assignments for server instance instance102:
-JMX_SYSTEM_CONNECTOR_PORT=28687
-JMS_PROVIDER_PORT=27677
-HTTP_LISTENER_PORT=28081
-ASADMIN_LISTENER_PORT=24849
-JAVA_DEBUGGER_PORT=29010
-IIOP_SSL_LISTENER_PORT=23821
-IIOP_LISTENER_PORT=23701
-OSGI_SHELL_TELNET_PORT=26667
-HTTP_SSL_LISTENER_PORT=28182
-IIOP_SSL_MUTUALAUTH_PORT=23921
-Command create-local-instance executed successfully.
-----
-
-[[GSHAG488]]
-
-See Also
-
-* link:../reference-manual/create-system-properties.html#GSRFM00059[`create-system-properties`(1)]
-* link:#gkqdm[To Create a Cluster]
-* link:instances.html#gkqch[To Create an Instance Centrally]
-* link:instances.html#gkqbl[To Create an Instance Locally]
-
-[[CHDIGFCG]][[GSHAG489]][[to-discover-a-cluster-when-each-instance-in-a-cluster-is-running-on-a-different-host]]
-
-To Discover a Cluster When Each Instance in a Cluster Is Running on a Different Host
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-If all instances in a cluster and the DAS are running on different
-hosts, you can specify the locations of instances to use for discovering
-the cluster as follows:
-
-* By specifying a list of host names or Internet Protocol (IP)
-addresses. Each host name or IP address must locate a host on which the
-DAS or a GlassFish Server instance in the cluster is running. Instances
-that are joining the cluster will use the DAS or the instances to
-discover the cluster.
-* By generating the list of locations automatically. The generated list
-contains the locations of the DAS and all instances in the cluster.
-
-Multiple instances on the same host cannot be members of the same
-cluster.
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  When creating the cluster, set the properties of the cluster as
-follows:
-* Set the `GMS_DISCOVERY_URI_LIST` property to one of the following
-values:
-
-** A comma-separated list of IP addresses or host names on which the DAS
-or the instances to use for discovering the cluster are running. +
-The list can contain a mixture of IP addresses and host names.
-
-** The keyword `generate`.
-* Set the `GMS_LISTENER_PORT` property to a port number that is unique
-for the cluster in the domain. +
-If you are specifying a list of IP addresses or host names, type the
-following command: +
-[source,oac_no_warn]
-----
-asadmin> create-cluster --properties GMS_DISCOVERY_URI_LIST=host-list:
-GMS_LISTENER_PORT=gms-port cluster-name
-----
-If you are specifying the keyword `generate`, type the following
-command: +
-[source,oac_no_warn]
-----
-asadmin> create-cluster --properties GMS_DISCOVERY_URI_LIST=generate:
-GMS_LISTENER_PORT=gms-port cluster-name
-----
-host-list::
-  A comma-separated list of IP addresses or host names on which the DAS
-  or the instances to use for discovering the cluster are running.
-gms-port::
-  The port number of the port on which the cluster listens for messages
-  from GMS.
-cluster-name::
-  The name of the cluster that you are creating. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-For complete instructions for creating a cluster, see link:#gkqdm[To
-Create a Cluster].
-
-|=======================================================================
-
-
-[[GSHAG490]][[sthref20]]
-
-
-Example 4-4 Discovering a Cluster by Specifying a List of IP Addresses
-
-This example creates a cluster that is named `ipcluster` for which GMS
-is not using multicast for broadcasting messages. The instances to use
-for discovering the cluster are located through a list of IP addresses.
-In this example, one instance in the cluster is running on each host and
-the DAS is running on a separate host. The cluster listens for messages
-from GMS on port 9090.
-
-[source,oac_no_warn]
-----
-asadmin> create-cluster --properties 'GMS_DISCOVERY_URI_LIST=
-10.152.23.225,10.152.23.226,10.152.23.227,10.152.23.228:
-GMS_LISTENER_PORT=9090' ipcluster
-Command create-cluster executed successfully.
-----
-
-[[GSHAG491]][[sthref21]]
-
-
-Example 4-5 Discovering a Cluster by Generating a List of Locations of
-Instances
-
-This example creates a cluster that is named `gencluster` for which GMS
-is not using multicast for broadcasting messages. The list of locations
-of instances to use for discovering the cluster is generated
-automatically. In this example, one instance in the cluster is running
-on each host and the DAS is running on a separate host. The cluster
-listens for messages from GMS on port 9090.
-
-[source,oac_no_warn]
-----
-asadmin> create-cluster --properties 'GMS_DISCOVERY_URI_LIST=generate:
-GMS_LISTENER_PORT=9090' gencluster
-Command create-cluster executed successfully.
-----
-
-[[GSHAG492]]
-
-Next Steps
-
-After creating the cluster, add instances to the cluster as explained in
-the following sections:
-
-* link:instances.html#gkqch[To Create an Instance Centrally]
-* link:instances.html#gkqbl[To Create an Instance Locally]
-
-[[GSHAG493]]
-
-See Also
-
-* link:#gkqdm[To Create a Cluster]
-* link:instances.html#gkqch[To Create an Instance Centrally]
-* link:instances.html#gkqbl[To Create an Instance Locally]
-
-[[gjdlw]][[GSHAG00266]][[using-the-multi-homing-feature-with-gms]]
-
-Using the Multi-Homing Feature With GMS
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Multi-homing enables GlassFish Server clusters to be used in an
-environment that uses multiple Network Interface Cards (NICs). A
-multi-homed host has multiple network connections, of which the
-connections may or may not be the on same network. Multi-homing provides
-the following benefits:
-
-* Provides redundant network connections within the same subnet. Having
-multiple NICs ensures that one or more network connections are available
-for communication.
-* Supports communication across two or more different subnets. The DAS
-and all server instances in the same cluster must be on the same subnet
-for GMS communication, however.
-* Binds to a specific IPv4 address and receives GMS messages in a system
-that has multiple IP addresses configured. The responses for GMS
-messages received on a particular interface will also go out through
-that interface.
-* Supports separation of external and internal traffic.
-
-[[gjdoo]][[GSHAG00224]][[traffic-separation-using-multi-homing]]
-
-Traffic Separation Using Multi-Homing
-+++++++++++++++++++++++++++++++++++++
-
-You can separate the internal traffic resulting from GMS from the
-external traffic. Traffic separation enables you plan a network better
-and augment certain parts of the network, as required.
-
-Consider a simple cluster, `c1`, with three instances, `i101`, `i102`,
-and `i103`. Each instance runs on a different machine. In order to
-separate the traffic, the multi-homed machine should have at least two
-IP addresses belonging to different networks. The first IP as the
-external IP and the second one as internal IP. The objective is to
-expose the external IP to user requests, so that all the traffic from
-the user requests would be through them. The internal IP is used only by
-the cluster instances for internal communication through GMS. The
-following procedure describes how to set up traffic separation.
-
-To configure multi-homed machines for GMS without traffic separation,
-skip the steps or commands that configure the `EXTERNAL-ADDR` system
-property, but perform the others.
-
-To avoid having to restart the DAS or cluster, perform the following
-steps in the specified order.
-
-To set up traffic separation, follow these steps:
-
-1.  Create the system properties `EXTERNAL-ADDR` and
-`GMS-BIND-INTERFACE-ADDRESS-c1` for the DAS.
-* `asadmin create-system-properties` `target`
-`server EXTERNAL-ADDR=192.155.35.4`
-* `asadmin create-system-properties` `target`
-`server GMS-BIND-INTERFACE-ADDRESS-c1=10.12.152.20`
-2.  Create the cluster with the default settings. +
-Use the following command: +
-[source,oac_no_warn]
-----
-asadmin create-cluster c1
-----
-A reference to a system property for GMS traffic is already set up by
-default in the `gms-bind-interface-address` cluster setting. The default
-value of this setting is `${GMS-BIND-INTERFACE-ADDRESS-`cluster-name`}`.
-3.  When creating the clustered instances, configure the external and
-GMS IP addresses. +
-Use the following commands:
-* `asadmin create-instance` `node` `localhost` `cluster` `c1`
-`systemproperties`
-`EXTERNAL-ADDR=192.155.35.5:GMS-BIND-INTERFACE-ADDRESS-c1=10.12.152.30 i101`
-* `asadmin create-instance` `node` `localhost` `cluster` `c1`
-`systemproperties`
-`EXTERNAL-ADDR=192.155.35.6:GMS-BIND-INTERFACE-ADDRESS-c1=10.12.152.40 i102`
-* `asadmin create-instance` `node` `localhost` `cluster` `c1`
-`systemproperties`
-`EXTERNAL-ADDR=192.155.35.7:GMS-BIND-INTERFACE-ADDRESS-c1=10.12.152.50 i103`
-4.  Set the address attribute of HTTP listeners to refer to the
-`EXTERNAL-ADDR` system properties. +
-Use the following commands: +
-[source,oac_no_warn]
-----
-asadmin set c1-config.network-config.network-listeners.network-listener.http-1.address=\${EXTERNAL-ADDR}
-asadmin set c1-config.network-config.network-listeners.network-listener.http-2.address=\${EXTERNAL-ADDR}
-----
-
-[[gkqdy]][[GSHAG00185]][[creating-listing-and-deleting-clusters]]
-
-Creating, Listing, and Deleting Clusters
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-GlassFish Server enables you to create clusters, obtain information
-about clusters, and delete clusters that are no longer required.
-
-The following topics are addressed here:
-
-* link:#gkqdm[To Create a Cluster]
-* link:#gkqdn[To List All Clusters in a Domain]
-* link:#gkqcp[To Delete a Cluster]
-
-[[gkqdm]][[GSHAG00103]][[to-create-a-cluster]]
-
-To Create a Cluster
-^^^^^^^^^^^^^^^^^^^
-
-Use the `create-cluster` subcommand in remote mode to create a cluster.
-
-To ensure that the GMS can detect changes in cluster membership, a
-cluster's GMS settings must be configured correctly. To avoid the need
-to restart the DAS and the cluster, configure a cluster's GMS settings
-when you create the cluster. If you change GMS settings for an existing
-cluster, the DAS and the cluster must be restarted to apply the changes.
-
-When you create a cluster, GlassFish Server automatically creates a
-Message Queue cluster for the GlassFish Server cluster. For more
-information about Message Queue clusters, see link:jms.html#abdbx[Using
-Message Queue Broker Clusters With GlassFish Server].
-
-[[GSHAG374]]
-
-Before You Begin
-
-If the cluster is to reference an existing named configuration, ensure
-that the configuration exists. For more information, see
-link:named-configurations.html#abdjr[To Create a Named Configuration]. If
-you are using a named configuration to preconfigure GMS settings, ensure
-that these settings have the required values in the named configuration.
-For more information, see link:#gkoac[To Preconfigure Nondefault GMS
-Configuration Settings].
-
-If you are configuring the cluster's GMS settings when you create the
-cluster, ensure that you have the following information:
-
-* The address on which GMS listens for group events
-* The port number of the communication port on which GMS listens for
-group events
-* The maximum number of iterations or transmissions that a multicast
-message for GMS events can experience before the message is discarded
-* The lowest port number in the range of ports from which GMS selects a
-TCP port on which to listen
-* The highest port number in the range of ports from which GMS selects a
-TCP port on which to listen
-
-If the DAS is running on a multihome host, ensure that you have the
-Internet Protocol (IP) address of the network interface on the DAS host
-to which GMS binds.
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  [[gkrco]]
-Run the `create-cluster` subcommand.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Only the options that are required to complete this task are provided in
-this step. For information about all the options for configuring the
-cluster, see the link:../reference-manual/create-cluster.html#GSRFM00017[`create-cluster`(1)] help page.
-
-|=======================================================================
-
-
-* If multicast transport is available, run the `create-cluster`
-subcommand as follows: +
-[source,oac_no_warn]
-----
-asadmin> create-cluster --config configuration
---multicastaddress multicast-address --multicastport multicast-port
---properties GMS_MULTICAST_TIME_TO_LIVE=max-iterations:
-GMS_TCPSTARTPORT=start-port:GMS_TCPENDPORT=end-port cluster-name
-----
-* If multicast transport is not available, run the `create-cluster`
-subcommand as follows: +
-[source,oac_no_warn]
-----
-asadmin> create-cluster --config configuration
---properties GMS_DISCOVERY_URI_LIST=discovery-instances:
-GMS_LISTENER_PORT=gms-port
-cluster-name
-----
-
-configuration::
-  An existing named configuration that the cluster is to reference.
-multicast-address::
-  The address on which GMS listens for group events.
-multicast-port::
-  The port number of the communication port on which GMS listens for
-  group events.
-max-iterations::
-  The maximum number of iterations or transmissions that a multicast
-  message for GMS events can experience before the message is discarded.
-discovery-instances::
-  Instances to use for discovering the cluster. For more information,
-  see link:#CHDGAIBJ[Discovering a Cluster When Multicast Transport Is
-  Unavailable].
-gms-port::
-  The port number of the port on which the cluster listens for messages
-  from GMS.
-start-port::
-  The lowest port number in the range of ports from which GMS selects a
-  TCP port on which to listen. The default is 9090.
-end-port::
-  The highest port number in the range of ports from which GMS selects a
-  TCP port on which to listen. The default is 9200.
-cluster-name::
-  Your choice of name for the cluster that you are creating.
-3.  If necessary, create a system property to represent the IP address
-of the network interface on the DAS host to which GMS binds. +
-This step is necessary only if the DAS is running on a multihome host. +
-[source,oac_no_warn]
-----
-asadmin> create-system-properties
-GMS-BIND-INTERFACE-ADDRESS-cluster-name=das-bind-address
-----
-cluster-name::
-  The name that you assigned to the cluster in Step link:#gkrco[2].
-das-bind-address::
-  The IP address of the network interface on the DAS host to which GMS
-  binds.
-
-[[GSHAG00034]][[gkqaz]]
-
-
-Example 4-6 Creating a Cluster for a Network in Which Multicast
-Transport Is Available
-
-This example creates a cluster that is named `ltscluster` for which port
-1169 is to be used for secure IIOP connections. Because the `--config`
-option is not specified, the cluster references a copy of the named
-configuration `default-config` that is named `ltscluster-config`. This
-example assumes that multicast transport is available.
-
-[source,oac_no_warn]
-----
-asadmin> create-cluster
---systemproperties IIOP_SSL_LISTENER_PORT=1169
-ltscluster
-Command create-cluster executed successfully.
-----
-
-[[GSHAG00035]][[gkqiq]]
-
-
-Example 4-7 Creating a Cluster and Setting GMS Options for a Network in
-Which Multicast Transport Is Available
-
-This example creates a cluster that is named `pmdcluster`, which
-references the existing configuration `clusterpresets` and for which the
-cluster's GMS settings are configured as follows:
-
-* GMS listens for group events on address 228.9.3.1 and port 2048.
-* A multicast message for GMS events is discarded after 3 iterations or
-transmissions.
-* GMS selects a TCP port on which to listen from ports in the range
-10000-10100.
-
-This example assumes that multicast transport is available.
-
-[source,oac_no_warn]
-----
-asadmin> create-cluster --config clusterpresets
---multicastaddress 228.9.3.1 --multicastport 2048
---properties GMS_MULTICAST_TIME_TO_LIVE=3:
-GMS_TCPSTARTPORT=10000:GMS_TCPENDPORT=10100 pmdcluster
-Command create-cluster executed successfully.
-----
-
-[[GSHAG375]]
-
-Next Steps
-
-After creating a cluster, you can add GlassFish Server instances to the
-cluster as explained in the following sections:
-
-* link:instances.html#gkqch[To Create an Instance Centrally]
-* link:instances.html#gkqbl[To Create an Instance Locally]
-
-[[GSHAG376]]
-
-See Also
-
-* link:named-configurations.html#abdjr[To Create a Named Configuration]
-* link:#gkoac[To Preconfigure Nondefault GMS Configuration Settings]
-* link:jms.html#abdbx[Using Message Queue Broker Clusters With GlassFish
-Server]
-* link:../reference-manual/create-cluster.html#GSRFM00017[`create-cluster`(1)]
-* link:../reference-manual/create-system-properties.html#GSRFM00059[`create-system-properties`(1)]
-
-You can also view the full syntax and options of the subcommands by
-typing the following commands at the command line:
-
-* `asadmin help create-cluster`
-* `asadmin help create-system-properties`
-
-[[gkqdn]][[GSHAG00104]][[to-list-all-clusters-in-a-domain]]
-
-To List All Clusters in a Domain
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `list-clusters` subcommand in remote mode to obtain information
-about existing clusters in a domain.
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  Run the link:../reference-manual/list-clusters.html#GSRFM00153[`list-clusters`] subcommand. +
-[source,oac_no_warn]
-----
-asadmin> list-clusters
-----
-
-[[GSHAG00036]][[gksfc]]
-
-
-Example 4-8 Listing All Clusters in a Domain
-
-This example lists all clusters in the current domain.
-
-[source,oac_no_warn]
-----
-asadmin> list-clusters
-pmdclust not running
-ymlclust not running
-Command list-clusters executed successfully.
-----
-
-[[GSHAG00037]][[gkhsp]]
-
-
-Example 4-9 Listing All Clusters That Are Associated With a Node
-
-This example lists the clusters that contain an instance that resides on
-the node `sj01`.
-
-[source,oac_no_warn]
-----
-asadmin> list-clusters sj01
-ymlclust not running
-Command list-clusters executed successfully.
-----
-
-[[GSHAG377]]
-
-See Also
-
-link:../reference-manual/list-clusters.html#GSRFM00153[`list-clusters`(1)]
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-clusters` at the command line.
-
-[[gkqcp]][[GSHAG00105]][[to-delete-a-cluster]]
-
-To Delete a Cluster
-^^^^^^^^^^^^^^^^^^^
-
-Use the `delete-cluster` subcommand in remote mode to remove a cluster
-from the DAS configuration.
-
-If the cluster's named configuration was created automatically for the
-cluster and no other clusters or unclustered instances refer to the
-configuration, the configuration is deleted when the cluster is deleted.
-
-[[GSHAG378]]
-
-Before You Begin
-
-Ensure that following prerequisites are met:
-
-* The cluster that you are deleting is stopped. For information about
-how to stop a cluster, see link:instances.html#gkqcl[To Stop a Cluster].
-* The cluster that you are deleting contains no GlassFish Server
-instances. For information about how to remove instances from a cluster,
-see the following sections:
-
-** link:instances.html#gkqcw[To Delete an Instance Centrally]
-
-** link:instances.html#gkqed[To Delete an Instance Locally]
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  Confirm that the cluster is stopped. +
-[source,oac_no_warn]
-----
-asadmin> list-clusters cluster-name
-----
-cluster-name::
-  The name of the cluster that you are deleting.
-3.  Confirm that the cluster contains no instances. +
-[source,oac_no_warn]
-----
-asadmin> list-instances cluster-name
-----
-cluster-name::
-  The name of the cluster that you are deleting.
-4.  Run the link:../reference-manual/delete-cluster.html#GSRFM00068[`delete-cluster`] subcommand. +
-[source,oac_no_warn]
-----
-asadmin> delete-cluster cluster-name
-----
-cluster-name::
-  The name of the cluster that you are deleting.
-
-[[GSHAG00038]][[gkqkr]]
-
-
-Example 4-10 Deleting a Cluster
-
-This example confirms that the cluster `adccluster` is stopped and
-contains no instances and deletes the cluster `adccluster`.
-
-[source,oac_no_warn]
-----
-asadmin> list-clusters adccluster
-adccluster not running
-Command list-clusters executed successfully.
-asadmin> list-instances adccluster
-Nothing to list.
-Command list-instances executed successfully.
-asadmin> delete-cluster adccluster
-Command delete-cluster executed successfully.
-----
-
-[[GSHAG379]]
-
-See Also
-
-* link:instances.html#gkqcl[To Stop a Cluster]
-* link:instances.html#gkqcw[To Delete an Instance Centrally]
-* link:instances.html#gkqed[To Delete an Instance Locally]
-* link:../reference-manual/delete-cluster.html#GSRFM00068[`delete-cluster`(1)]
-* link:../reference-manual/list-clusters.html#GSRFM00153[`list-clusters`(1)]
-* link:../reference-manual/list-instances.html#GSRFM00170[`list-instances`(1)]
-
-You can also view the full syntax and options of the subcommands by
-typing the following commands at the command line:
-
-* `asadmin help delete-cluster`
-* `asadmin help list-clusters`
-* `asadmin help list-instances`
diff --git a/docs/ha-administration-guide/src/main/jbake/content/http-load-balancing.adoc b/docs/ha-administration-guide/src/main/jbake/content/http-load-balancing.adoc
deleted file mode 100644
index 54dedd9..0000000
--- a/docs/ha-administration-guide/src/main/jbake/content/http-load-balancing.adoc
+++ /dev/null
@@ -1,325 +0,0 @@
-type=page
-status=published
-title=Configuring HTTP Load Balancing
-next=rolling-upgrade.html
-prev=named-configurations.html
-~~~~~~
-Configuring HTTP Load Balancing
-===============================
-
-[[GSHAG00009]][[abdgs]]
-
-
-[[configuring-http-load-balancing]]
-7 Configuring HTTP Load Balancing
----------------------------------
-
-This chapter describes how to configure HTTP load balancing on GlassFish
-Server 4.0.
-
-The following topics are addressed here:
-
-* link:#abdgx[Setting Up HTTP Load Balancing]
-
-For information on other types of load balancing, see
-link:jms.html#abdbk[Configuring Java Message Service High Availability]
-and link:rmi-iiop.html#fxxqs[RMI-IIOP Load Balancing and Failover].
-
-[[abdgx]][[GSHAG00202]][[setting-up-http-load-balancing]]
-
-Setting Up HTTP Load Balancing
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This section describes how to set up load balancing for GlassFish
-Server.
-
-The following topics are addressed here:
-
-* link:#abdgy[Prerequisites for Setting Up HTTP Load Balancing]
-* link:#gksdt[Configuring GlassFish Server with Apache HTTP Server and
-`mod_jk`]
-* link:#CHDCCGDC[Configuring GlassFish Server with Apache HTTP Server
-and `mod_proxy_ajp`]
-* link:#abdgz[HTTP Load Balancer Deployments]
-
-[[abdgy]][[GSHAG00281]][[prerequisites-for-setting-up-http-load-balancing]]
-
-Prerequisites for Setting Up HTTP Load Balancing
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Before configuring your load balancer, you must:
-
-* Install a supported web server and configure it. If using the `mod_jk`
-or `mod_proxy_ajp` modules, the only supported web server is Apache HTTP
-Server 2.2.x.
-* Configure the `mod_jk` connector module, as described in
-link:#gksdt[Configuring GlassFish Server with Apache HTTP Server and
-`mod_jk`], or configure the `mod_proxy_ajp` connector module, as
-described in link:#CHDCCGDC[Configuring GlassFish Server with Apache
-HTTP Server and `mod_proxy_ajp`].
-* Create GlassFish Server clusters or server instances to participate in
-load balancing.
-* Deploy applications to these clusters or instances.
-
-[[gksdt]][[GSHAG00282]][[configuring-glassfish-server-with-apache-http-server-and-mod_jk]]
-
-Configuring GlassFish Server with Apache HTTP Server and `mod_jk`
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-GlassFish Server4.0 can be configured for load balancing with Apache
-HTTP Server as a front end by enabling the Apache `mod_jk` connector
-module. To enable the `mod_jk` module in GlassFish Server, set the
-GlassFish Server `jk-enabled` `network-listener` attribute. You can also
-create `jk-connectors` under different virtual-servers using the
-`jk-enabled` `network-listener` attribute.
-
-[[gksde]][[GSHAG00143]][[to-configure-the-mod_jk-connector-module]]
-
-To Configure the `mod_jk` Connector Module
-++++++++++++++++++++++++++++++++++++++++++
-
-1.  Install http://httpd.apache.org/docs/2.2/install.html[Apache HTTP
-Server] (`http://httpd.apache.org/docs/2.2/install.html`) and
-http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html[mod_jk]
-(`http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html`).
-2.  Configure `workers.properties` and `httpd.conf`. +
-For example:
-* `apache2/config/workers.properties` +
-[source,oac_no_warn]
-----
-# Define 1 real worker using ajp13
-worker.list=worker1
-# Set properties for worker1 (ajp13)
-worker.worker1.type=ajp13
-worker.worker1.host=localhost
-worker.worker1.port=8009
-----
-* `apache2/conf/httpd.conf` +
-[source,oac_no_warn]
-----
-LoadModule jk_module /Users/Amy/apache2/modules/mod_jk-1.2.25-httpd-2.2.4.so
-JkWorkersFile /Users/Amy/apache2/conf/worker.properties
-# Where to put jk logs
-JkLogFile /Users/Amy/apache2/logs/mod_jk.log
-# Set the jk log level [debug/error/info]
-JkLogLevel debug
-# Select the log format
-JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
-# JkOptions indicate to send SSL KEY SIZE,
-JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
-# JkRequestLogFormat set the request format
-JkRequestLogFormat "%w %V %T"
-# Send everything for context /examples to worker named worker1 (ajp13)
-JkMount /examples/* worker1
-----
-3.  Start Apache HTTP Server.
-4.  Create a jk-enabled network listener by using the
-link:../reference-manual/create-network-listener.html#GSRFM00046[`create-network-listener`] subcommand. +
-[source,oac_no_warn]
-----
-asadmin> create-network-listener --protocol http-listener-1 \
---listenerport 8009 --jkenabled true jk-connector
-----
-5.  If you are using the `glassfish-jk.properties` file, set the
-`jk-configuration-file` property of the network listener to the
-fully-qualified file name of the `glassfish-jk.properties` file. +
-[source,oac_no_warn]
-----
-asadmin> set server-config.network-config.network-listeners.network-listener.\
-jk-connector.jk-configuration-file=domain-dir/config/glassfish-jk.properties
-----
-6.  If you expect to need more than five threads for the listener,
-increase the maximum threads in the `http-thread-pool` pool: +
-[source,oac_no_warn]
-----
-asadmin> set configs.config.server-config.thread-pools.thread-pool.\
-http-thread-pool.max-thread-pool-size=value
-----
-7.  Restart GlassFish Server.
-
-[[GSHAG00065]][[gktpu]]
-
-
-Example 7-1 `httpd.conf` File for Load Balancing
-
-This example shows an `httpd.conf` file that is set for load balancing.
-
-[source,oac_no_warn]
-----
-LoadModule jk_module /usr/lib/httpd/modules/mod_jk.so
-JkWorkersFile /etc/httpd/conf/worker.properties
-# Where to put jk logs
-JkLogFile /var/log/httpd/mod_jk.log
-# Set the jk log level [debug/error/info]
-JkLogLevel debug
-# Select the log format
-JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
-# JkOptions indicate to send SSL KEY SIZE,
-JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
-# JkRequestLogFormat set the request format
-JkRequestLogFormat "%w %V %T"
-# Send all jsp requests to GlassFish
-JkMount /*.jsp worker1
-# Send all glassfish-test requests to GlassFish
-JkMount /glassfish-test/* loadbalancer
-----
-
-[[GSHAG00066]][[gktpe]]
-
-
-Example 7-2 `workers.properties` File for Load Balancing
-
-This example shows a `workers.properties` or `glassfish-jk.properties`
-file that is set for load balancing. The `worker.worker*.port` should
-match with JK ports you created.
-
-[source,oac_no_warn]
-----
-worker.list=worker1,worker2,loadbalancer
-worker.worker1.type=ajp13
-worker.worker1.host=localhost
-worker.worker1.port=8009
-worker.worker1.lbfactor=1
-worker.worker1.socket_keepalive=1
-worker.worker1.socket_timeout=300
-worker.worker2.type=ajp13
-worker.worker2.host=localhost
-worker.worker2.port=8010
-worker.worker2.lbfactor=1
-worker.worker2.socket_keepalive=1
-worker.worker2.socket_timeout=300
-worker.loadbalancer.type=lb
-worker.loadbalancer.balance_workers=worker1,worker2
-----
-
-[[CHDCCGDC]][[GSHAG494]][[configuring-glassfish-server-with-apache-http-server-and-mod_proxy_ajp]]
-
-Configuring GlassFish Server with Apache HTTP Server and `mod_proxy_ajp`
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-GlassFish Server4.0 can be configured for load balancing with Apache
-HTTP Server as a front end by enabling the Apache `mod_proxy_ajp`
-connector module. To enable the `mod_proxy_ajp` module in GlassFish
-Server, set the GlassFish Server `jk-enabled` `network-listener`
-attribute. You can also create `jk-connectors` under different
-virtual-servers using the `jk-enabled` `network-listener` attribute.
-
-[[GSHAG495]][[sthref22]]
-
-
-[[to-configure-the-mod_proxy_ajp-connector-module]]
-To Configure the `mod_proxy_ajp` Connector Module
-+++++++++++++++++++++++++++++++++++++++++++++++++
-
-1.  Install http://httpd.apache.org/docs/2.2/install.html[Apache HTTP
-Server] (`http://httpd.apache.org/docs/2.2/install.html`).
-2.  Configure `httpd.conf`. +
-For example: +
-[source,oac_no_warn]
-----
-LoadModule proxy_module /usr/lib/httpd/modules/mod_proxy.so
-LoadModule proxy_ajp_module /usr/lib/httpd/modules/mod_proxy_ajp.so
-
-Listen 1979
-NameVirtualHost *:1979
-<VirtualHost *:1979>
-   ServerName localhost
-   ErrorLog /var/log/apache2/ajp.error.log
-   CustomLog /var/log/apache2/ajp.log combined
-
-   <Proxy *>
-     AddDefaultCharset Off
-     Order deny,allow
-     Allow from all
-   </Proxy>
-
-   ProxyPass / ajp://localhost:8009/
-   ProxyPassReverse / ajp://localhost:8009/
-</VirtualHost>
-----
-3.  Start Apache HTTP Server.
-4.  Create a jk-enabled network listener by using the
-`create-network-listener` subcommand. +
-[source,oac_no_warn]
-----
-asadmin> create-network-listener --protocol http-listener-1 \
---listenerport 8009 --jkenabled true jk-connector
-----
-5.  If you expect to need more than five threads for the listener,
-increase the maximum threads in the `http-thread-pool` pool: +
-[source,oac_no_warn]
-----
-asadmin> set configs.config.server-config.thread-pools.thread-pool.\
-http-thread-pool.max-thread-pool-size=value
-----
-6.  Restart GlassFish Server.
-
-[[abdgz]][[GSHAG00284]][[http-load-balancer-deployments]]
-
-HTTP Load Balancer Deployments
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can configure your load balancer in different ways, depending on
-your goals and environment, as described in the following sections:
-
-* link:#abdha[Using Clustered Server Instances]
-* link:#abdhc[Using Multiple Standalone Instances]
-
-[[abdha]][[GSHAG00232]][[using-clustered-server-instances]]
-
-Using Clustered Server Instances
-++++++++++++++++++++++++++++++++
-
-The most common way to deploy the load balancer is with a cluster or
-clusters of server instances. By default all the instances in a cluster
-have the same configuration and the same applications deployed to them.
-The load balancer distributes the workload between the server instances
-and requests fail over from an unhealthy instance to a healthy one. If
-you've configured HTTP session persistence, session information persists
-when the request is failed over.
-
-If you have multiple clusters, requests can be load balanced across
-clusters but are only failed over between the instances in a single
-cluster. Use multiple clusters in a load balancer to easily enable
-rolling upgrades of applications. For more information, see
-link:rolling-upgrade.html#abdik[Upgrading Applications Without Loss of
-Availability].
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Requests cannot be load balanced across clusters and standalone
-instances.
-
-|=======================================================================
-
-
-[[abdhc]][[GSHAG00233]][[using-multiple-standalone-instances]]
-
-Using Multiple Standalone Instances
-+++++++++++++++++++++++++++++++++++
-
-It is also possible to configure your load balancer to use multiple
-standalone instances, and load balance and failover requests between
-them. However, in this configuration, you must manually ensure that the
-standalone instances have homogenous environments and the same
-applications deployed to them. Because clusters automatically maintain a
-homogenous environment, for most situations it is better and easier to
-use clusters.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Tip:
-
-Load balancing across multiple standalone instances only provides
-failover for requests, and any associated HTTP session data will not be
-failed over. This is another reason why using a cluster, which can
-provide session failover, is a more desirable load balancing
-configuration.
-
-|=======================================================================
diff --git a/docs/ha-administration-guide/src/main/jbake/content/instances.adoc b/docs/ha-administration-guide/src/main/jbake/content/instances.adoc
deleted file mode 100644
index 3f67700..0000000
--- a/docs/ha-administration-guide/src/main/jbake/content/instances.adoc
+++ /dev/null
@@ -1,2203 +0,0 @@
-type=page
-status=published
-title=Administering GlassFish Server Instances
-next=named-configurations.html
-prev=clusters.html
-~~~~~~
-Administering GlassFish Server Instances
-========================================
-
-[[GSHAG00006]][[gkrbv]]
-
-
-[[administering-glassfish-server-instances]]
-5 Administering GlassFish Server Instances
-------------------------------------------
-
-A GlassFish Server instance is a single Virtual Machine for the Java
-platform (Java Virtual Machine or JVM machine) on a single node in which
-GlassFish Server is running. A node defines the host where the GlassFish
-Server instance resides. The JVM machine must be compatible with the
-Java Platform, Enterprise Edition (Java EE).
-
-GlassFish Server instances form the basis of an application deployment.
-An instance is a building block in the clustering, load balancing, and
-session persistence features of GlassFish Server. Each instance belongs
-to a single domain and has its own directory structure, configuration,
-and deployed applications. Every instance contains a reference to a node
-that defines the host where the instance resides.
-
-The following topics are addressed here:
-
-* link:#gkrbn[Types of GlassFish Server Instances]
-* link:#gkqal[Administering GlassFish Server Instances Centrally]
-* link:#gkqdw[Administering GlassFish Server Instances Locally]
-* link:#gkrdd[Resynchronizing GlassFish Server Instances and the DAS]
-* link:#gkqcr[Migrating EJB Timers]
-
-[[gkrbn]][[GSHAG00186]][[types-of-glassfish-server-instances]]
-
-Types of GlassFish Server Instances
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Each GlassFish Server instance is one of the following types of
-instance:
-
-Standalone instance::
-  A standalone instance does not share its configuration with any other
-  instances or clusters. A standalone instance is created if either of
-  the following conditions is met: +
-  * No configuration or cluster is specified in the command to create
-  the instance.
-  * A configuration that is not referenced by any other instances or
-  clusters is specified in the command to create the instance. +
-  When no configuration or cluster is specified, a copy of the
-  `default-config` configuration is created for the instance. The name
-  of this configuration is instance-name`-config`, where instance-name
-  represents the name of an unclustered server instance.
-Shared instance::
-  A shared instance shares its configuration with other instances or
-  clusters. A shared instance is created if a configuration that is
-  referenced by other instances or clusters is specified in the command
-  to create the instance.
-Clustered instance::
-  A clustered instance inherits its configuration from the cluster to
-  which the instance belongs and shares its configuration with other
-  instances in the cluster. A clustered instance is created if a cluster
-  is specified in the command to create the instance. +
-  Any instance that is not part of a cluster is considered an
-  unclustered server instance. Therefore, standalone instances and
-  shared instances are unclustered server instances.
-
-[[gkqal]][[GSHAG00187]][[administering-glassfish-server-instances-centrally]]
-
-Administering GlassFish Server Instances Centrally
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Centralized administration requires the Distributed Component Object
-Model (DCOM) remote protocol or secure shell (SSH) to be set up. If DCOM
-or SSH is set up, you can administer clustered instances without the
-need to log in to hosts where remote instances reside. For information
-about setting up DCOM and SSH, see link:ssh-setup.html#gkshg[Enabling
-Centralized Administration of GlassFish Server Instances].
-
-Administering GlassFish Server instances centrally involves the
-following tasks:
-
-* link:#gkqch[To Create an Instance Centrally]
-* link:#gkrcb[To List All Instances in a Domain]
-* link:#gkqcw[To Delete an Instance Centrally]
-* link:#gkqcj[To Start a Cluster]
-* link:#gkqcl[To Stop a Cluster]
-* link:#gkqaw[To Start an Individual Instance Centrally]
-* link:#gkqaj[To Stop an Individual Instance Centrally]
-* link:#gkqcc[To Restart an Individual Instance Centrally]
-
-[[gkqch]][[GSHAG00106]][[to-create-an-instance-centrally]]
-
-To Create an Instance Centrally
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `create-instance` subcommand in remote mode to create a
-GlassFish Server instance centrally. Creating an instance adds the
-instance to the DAS configuration and creates the instance's files on
-the host where the instance resides.
-
-If the instance is a clustered instance that is managed by GMS, system
-properties for the instance that relate to GMS must be configured
-correctly. To avoid the need to restart the DAS and the instance,
-configure an instance's system properties that relate to GMS when you
-create the instance. If you change GMS-related system properties for an
-existing instance, the DAS and the instance must be restarted to apply
-the changes. For information about GMS, see
-link:clusters.html#gjfnl[Group Management Service].
-
-[[GSHAG380]]
-
-Before You Begin
-
-Ensure that following prerequisites are met:
-
-* The node where the instance is to reside exists.
-* The node where the instance is to reside is either enabled for remote
-communication or represents the host on which the DAS is running. For
-information about how to create a node that is enabled for remote
-communication, see the following sections:
-
-** link:nodes.html#CHDIGBJB[To Create a `DCOM` Node]
-
-** link:nodes.html#gkrnf[To Create an `SSH` Node]
-* The user of the DAS can use DCOM or SSH to log in to the host for the
-node where the instance is to reside.
-
-If any of these prerequisites is not met, create the instance locally as
-explained in link:#gkqbl[To Create an Instance Locally].
-
-If you are adding the instance to a cluster, ensure that the cluster to
-which you are adding the instance exists. For information about how to
-create a cluster, see link:clusters.html#gkqdm[To Create a Cluster].
-
-If the instance is to reference an existing named configuration, ensure
-that the configuration exists. For more information, see
-link:named-configurations.html#abdjr[To Create a Named Configuration].
-
-The instance might be a clustered instance that is managed by GMS and
-resides on a node that represents a multihome host. In this situation,
-ensure that you have the Internet Protocol (IP) address of the network
-interface to which GMS binds.
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  Run the `create-instance` subcommand. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Only the options that are required to complete this task are provided in
-this step. For information about all the options for configuring the
-instance, see the link:../reference-manual/create-instance.html#GSRFM00033[`create-instance`(1)] help page.
-
-|=======================================================================
-
-* If you are creating a standalone instance, do not specify a cluster. +
-If the instance is to reference an existing configuration, specify a
-configuration that no other cluster or instance references. +
-[source,oac_no_warn]
-----
-asadmin> create-instance --node node-name
-[--config configuration-name]instance-name
-----
-node-name::
-  The node on which the instance is to reside.
-configuration-name::
-  The name of the existing named configuration that the instance will
-  reference. +
-  If you do not require the instance to reference an existing
-  configuration, omit this option. A copy of the `default-config`
-  configuration is created for the instance. The name of this
-  configuration is instance-name`-config`, where instance-name is the
-  name of the server instance.
-instance-name::
-  Your choice of name for the instance that you are creating.
-* If you are creating a shared instance, specify the configuration that
-the instance will share with other clusters or instances. +
-Do not specify a cluster. +
-[source,oac_no_warn]
-----
-asadmin> create-instance --node node-name
---config configuration-name instance-name
-----
-node-name::
-  The node on which the instance is to reside.
-configuration-name::
-  The name of the existing named configuration that the instance will
-  reference.
-instance-name::
-  Your choice of name for the instance that you are creating.
-* If you are creating a clustered instance, specify the cluster to which
-the instance will belong. +
-If the instance is managed by GMS and resides on a node that represents
-a multihome host, specify the `GMS-BIND-INTERFACE-ADDRESS-`cluster-name
-system property. +
-[source,oac_no_warn]
-----
-asadmin> create-instance --cluster cluster-name --node node-name
-[--systemproperties GMS-BIND-INTERFACE-ADDRESS-cluster-name=bind-address]instance-name
-----
-cluster-name::
-  The name of the cluster to which you are adding the instance.
-node-name::
-  The node on which the instance is to reside.
-bind-address::
-  The IP address of the network interface to which GMS binds. Specify
-  this option only if the instance is managed by GMS and resides on a
-  node that represents a multihome host.
-instance-name::
-  Your choice of name for the instance that you are creating.
-
-[[GSHAG00039]][[gkqmv]]
-
-
-Example 5-1 Creating a Clustered Instance Centrally
-
-This example adds the instance `pmd-i1` to the cluster `pmdclust` in the
-domain `domain1`. The instance resides on the node `sj01`, which
-represents the host `sj01.example.com`.
-
-[source,oac_no_warn]
-----
-asadmin> create-instance --cluster pmdclust --node sj01 pmd-i1
-Port Assignments for server instance pmd-i1:
-JMX_SYSTEM_CONNECTOR_PORT=28686
-JMS_PROVIDER_PORT=27676
-HTTP_LISTENER_PORT=28080
-ASADMIN_LISTENER_PORT=24848
-IIOP_SSL_LISTENER_PORT=23820
-IIOP_LISTENER_PORT=23700
-HTTP_SSL_LISTENER_PORT=28181
-IIOP_SSL_MUTUALAUTH_PORT=23920
-The instance, pmd-i1, was created on host sj01.example.com
-Command create-instance executed successfully.
-----
-
-[[GSHAG381]]
-
-See Also
-
-* link:nodes.html#CHDIGBJB[To Create a `DCOM` Node]
-* link:nodes.html#gkrnf[To Create an `SSH` Node]
-* link:#gkqbl[To Create an Instance Locally]
-* link:../reference-manual/create-instance.html#GSRFM00033[`create-instance`(1)]
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-instance` at the command line.
-
-[[GSHAG382]]
-
-Next Steps
-
-After creating an instance, you can start the instance as explained in
-the following sections:
-
-* link:#gkqaw[To Start an Individual Instance Centrally]
-* link:#gkqci[To Stop an Individual Instance Locally]
-
-[[gkrcb]][[GSHAG00107]][[to-list-all-instances-in-a-domain]]
-
-To List All Instances in a Domain
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `list-instances` subcommand in remote mode to obtain information
-about existing instances in a domain.
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  Run the link:../reference-manual/list-instances.html#GSRFM00170[`list-instances`] subcommand. +
-[source,oac_no_warn]
-----
-asadmin> list-instances
-----
-
-[[GSHAG00040]][[gksfe]]
-
-
-Example 5-2 Listing Basic Information About All GlassFish Server
-Instances in a Domain
-
-This example lists the name and status of all GlassFish Server instances
-in the current domain.
-
-[source,oac_no_warn]
-----
-asadmin> list-instances
-pmd-i2 running
-yml-i2 running
-pmd-i1 running
-yml-i1 running
-pmdsa1 not running
-Command list-instances executed successfully.
-----
-
-[[GSHAG00041]][[gkabz]]
-
-
-Example 5-3 Listing Detailed Information About All GlassFish Server
-Instances in a Domain
-
-This example lists detailed information about all GlassFish Server
-instances in the current domain.
-
-[source,oac_no_warn]
-----
-asadmin> list-instances --long=true
-NAME    HOST              PORT   PID    CLUSTER     STATE
-pmd-i1  sj01.example.com  24848  31310  pmdcluster   running
-yml-i1  sj01.example.com  24849  25355  ymlcluster   running
-pmdsa1  localhost         24848  -1     ---          not running
-pmd-i2  sj02.example.com  24848  22498  pmdcluster   running
-yml-i2  sj02.example.com  24849  20476  ymlcluster   running
-ymlsa1  localhost         24849  -1     ---          not running
-Command list-instances executed successfully.
-----
-
-[[GSHAG383]]
-
-See Also
-
-link:../reference-manual/list-instances.html#GSRFM00170[`list-instances`(1)]
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-instances` at the command line.
-
-[[gkqcw]][[GSHAG00108]][[to-delete-an-instance-centrally]]
-
-To Delete an Instance Centrally
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `delete-instance` subcommand in remote mode to delete a
-GlassFish Server instance centrally.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Caution:
-
-If you are using a Java Message Service (JMS) cluster with a master
-broker, do not delete the instance that is associated with the master
-broker. If this instance must be deleted, use the
-link:../reference-manual/change-master-broker.html#GSRFM00005[`change-master-broker`] subcommand to assign the master
-broker to a different instance.
-
-|=======================================================================
-
-
-Deleting an instance involves the following:
-
-* Removing the instance from the configuration of the DAS
-* Deleting the instance's files from file system
-
-[[GSHAG384]]
-
-Before You Begin
-
-Ensure that the instance that you are deleting is not running. For
-information about how to stop an instance, see the following sections:
-
-* link:#gkqaj[To Stop an Individual Instance Centrally]
-* link:#gkqci[To Stop an Individual Instance Locally]
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  Confirm that the instance is not running. +
-[source,oac_no_warn]
-----
-asadmin> list-instances instance-name
-----
-instance-name::
-  The name of the instance that you are deleting.
-3.  Run the link:../reference-manual/delete-instance.html#GSRFM00085[`delete-instance`] subcommand. +
-[source,oac_no_warn]
-----
-asadmin> delete-instance instance-name
-----
-instance-name::
-  The name of the instance that you are deleting.
-
-[[GSHAG00042]][[gkqms]]
-
-
-Example 5-4 Deleting an Instance Centrally
-
-This example confirms that the instance `pmd-i1` is not running and
-deletes the instance.
-
-[source,oac_no_warn]
-----
-asadmin> list-instances pmd-i1
-pmd-i1   not running
-Command list-instances executed successfully.
-asadmin> delete-instance pmd-i1
-Command _delete-instance-filesystem executed successfully.
-The instance, pmd-i1, was deleted from host sj01.example.com
-Command delete-instance executed successfully.
-----
-
-[[GSHAG385]]
-
-See Also
-
-* link:#gkqaj[To Stop an Individual Instance Centrally]
-* link:#gkqci[To Stop an Individual Instance Locally]
-* link:../reference-manual/change-master-broker.html#GSRFM00005[`change-master-broker`(1)]
-* link:../reference-manual/delete-instance.html#GSRFM00085[`delete-instance`(1)]
-* link:../reference-manual/list-instances.html#GSRFM00170[`list-instances`(1)]
-
-You can also view the full syntax and options of the subcommands by
-typing the following commands at the command line:
-
-* `asadmin help delete-instance`
-* `asadmin help list-instances`
-
-[[gkqcj]][[GSHAG00109]][[to-start-a-cluster]]
-
-To Start a Cluster
-^^^^^^^^^^^^^^^^^^
-
-Use the `start-cluster` subcommand in remote mode to start a cluster.
-
-Starting a cluster starts all instances in the cluster that are not
-already running.
-
-[[GSHAG386]]
-
-Before You Begin
-
-Ensure that following prerequisites are met:
-
-* Each node where an instance in the cluster resides is either enabled
-for remote communication or represents the host on which the DAS is
-running.
-* The user of the DAS can use DCOM or SSH to log in to the host for any
-node where instances in the cluster reside.
-
-If any of these prerequisites is not met, start the cluster by starting
-each instance locally as explained in link:#gkqak[To Start an Individual
-Instance Locally].
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  Run the link:../reference-manual/start-cluster.html#GSRFM00233[`start-cluster`] subcommand. +
-[source,oac_no_warn]
-----
-asadmin> start-cluster cluster-name
-----
-cluster-name::
-  The name of the cluster that you are starting.
-
-[[GSHAG00043]][[gkqml]]
-
-
-Example 5-5 Starting a Cluster
-
-This example starts the cluster `pmdcluster`.
-
-[source,oac_no_warn]
-----
-asadmin> start-cluster pmdcluster
-Command start-cluster executed successfully.
-----
-
-[[GSHAG387]]
-
-See Also
-
-* link:#gkqak[To Start an Individual Instance Locally]
-* link:../reference-manual/start-cluster.html#GSRFM00233[`start-cluster`(1)]
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help start-cluster` at the command line.
-
-[[GSHAG388]]
-
-Next Steps
-
-After starting a cluster, you can deploy applications to the cluster.
-For more information, see link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source
-Edition Application Deployment Guide].
-
-[[gkqcl]][[GSHAG00110]][[to-stop-a-cluster]]
-
-To Stop a Cluster
-^^^^^^^^^^^^^^^^^
-
-Use the `stop-cluster` subcommand in remote mode to stop a cluster.
-
-Stopping a cluster stops all running instances in the cluster.
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  Run the link:../reference-manual/stop-cluster.html#GSRFM00238[`stop-cluster`] subcommand. +
-[source,oac_no_warn]
-----
-asadmin> stop-cluster cluster-name
-----
-cluster-name::
-  The name of the cluster that you are stopping.
-
-[[GSHAG00044]][[gkqmn]]
-
-
-Example 5-6 Stopping a Cluster
-
-This example stops the cluster `pmdcluster`.
-
-[source,oac_no_warn]
-----
-asadmin> stop-cluster pmdcluster
-Command stop-cluster executed successfully.
-----
-
-[[GSHAG389]]
-
-See Also
-
-link:../reference-manual/stop-cluster.html#GSRFM00238[`stop-cluster`(1)]
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help stop-cluster` at the command line.
-
-[[GSHAG390]]
-
-Troubleshooting
-
-If instances in the cluster have become unresponsive and fail to stop,
-run the subcommand again with the `--kill` option set to `true`. When
-this option is `true`, the subcommand uses functionality of the
-operating system to kill the process for each running instance in the
-cluster.
-
-[[gkqaw]][[GSHAG00111]][[to-start-an-individual-instance-centrally]]
-
-To Start an Individual Instance Centrally
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `start-instance` subcommand in remote mode to start an
-individual instance centrally.
-
-[[GSHAG391]]
-
-Before You Begin
-
-Ensure that following prerequisites are met:
-
-* The node where the instance resides is either enabled for remote
-communication or represents the host on which the DAS is running.
-* The user of the DAS can use DCOM or SSH to log in to the host for the
-node where the instance resides.
-
-If any of these prerequisites is not met, start the instance locally as
-explained in link:#gkqak[To Start an Individual Instance Locally].
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  Run the `start-instance` subcommand. +
-[source,oac_no_warn]
-----
-asadmin> start-instance instance-name
-----
-::
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Only the options that are required to complete this task are provided in
-this step. For information about all the options for controlling the
-behavior of the instance, see the link:../reference-manual/start-instance.html#GSRFM00236[`start-instance`(1)]
-help page.
-
-|=======================================================================
-
-instance-name::
-  The name of the instance that you are starting.
-
-[[GSHAG00045]][[gkqoa]]
-
-
-Example 5-7 Starting an Individual Instance Centrally
-
-This example starts the instance `pmd-i2`, which resides on the node
-`sj02`. This node represents the host `sj02.example.com`. The
-configuration of the instance on this node already matched the
-configuration of the instance in the DAS when the instance was started.
-
-[source,oac_no_warn]
-----
-asadmin> start-instance pmd-i2
-CLI801 Instance is already synchronized
-Waiting for pmd-i2 to start ............
-Successfully started the instance: pmd-i2
-instance Location: /export/glassfish3/glassfish/nodes/sj02/pmd-i2
-Log File: /export/glassfish3/glassfish/nodes/sj02/pmd-i2/logs/server.log
-Admin Port: 24851
-Command start-local-instance executed successfully.
-The instance, pmd-i2, was started on host sj02.example.com
-Command start-instance executed successfully.
-----
-
-[[GSHAG392]]
-
-See Also
-
-link:../reference-manual/start-instance.html#GSRFM00236[`start-instance`(1)]
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help start-instance` at the command line.
-
-[[GSHAG393]]
-
-Next Steps
-
-After starting an instance, you can deploy applications to the instance.
-For more information, see the link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source
-Edition Application Deployment Guide].
-
-[[gkqaj]][[GSHAG00112]][[to-stop-an-individual-instance-centrally]]
-
-To Stop an Individual Instance Centrally
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `stop-instance` subcommand in remote mode to stop an individual
-instance centrally.
-
-When an instance is stopped, the instance stops accepting new requests
-and waits for all outstanding requests to be completed.
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  Run the link:../reference-manual/stop-instance.html#GSRFM00241[`stop-instance`] subcommand.
-
-[[GSHAG00046]][[gkqpy]]
-
-
-Example 5-8 Stopping an Individual Instance Centrally
-
-This example stops the instance `pmd-i2`.
-
-[source,oac_no_warn]
-----
-asadmin> stop-instance pmd-i2
-The instance, pmd-i2, is stopped.
-Command stop-instance executed successfully.
-----
-
-[[GSHAG394]]
-
-See Also
-
-link:../reference-manual/stop-instance.html#GSRFM00241[`stop-instance`(1)]
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help stop-instance` at the command line.
-
-[[GSHAG395]]
-
-Troubleshooting
-
-If the instance has become unresponsive and fails to stop, run the
-subcommand again with the `--kill` option set to `true`. When this
-option is `true`, the subcommand uses functionality of the operating
-system to kill the instance process.
-
-[[gkqcc]][[GSHAG00113]][[to-restart-an-individual-instance-centrally]]
-
-To Restart an Individual Instance Centrally
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `restart-instance` subcommand in remote mode to start an
-individual instance centrally.
-
-When this subcommand restarts an instance, the DAS synchronizes the
-instance with changes since the last synchronization as described in
-link:#gksbo[Default Synchronization for Files and Directories].
-
-If you require different synchronization behavior, stop and start the
-instance as explained in link:#gksak[To Resynchronize an Instance and
-the DAS Online].
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  Run the link:../reference-manual/restart-instance.html#GSRFM00219[`restart-instance`] subcommand. +
-[source,oac_no_warn]
-----
-asadmin> restart-instance instance-name
-----
-instance-name::
-  The name of the instance that you are restarting.
-
-[[GSHAG00047]][[gkqqt]]
-
-
-Example 5-9 Restarting an Individual Instance Centrally
-
-This example restarts the instance `pmd-i2`.
-
-[source,oac_no_warn]
-----
-asadmin> restart-instance pmd-i2
-pmd-i2 was restarted.
-Command restart-instance executed successfully.
-----
-
-[[GSHAG396]]
-
-See Also
-
-* link:#gkqaj[To Stop an Individual Instance Centrally]
-* link:#gkqaw[To Start an Individual Instance Centrally]
-* link:../reference-manual/restart-instance.html#GSRFM00219[`restart-instance`(1)]
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help restart-instance` at the command line.
-
-[[GSHAG397]]
-
-Troubleshooting
-
-If the instance has become unresponsive and fails to stop, run the
-subcommand again with the `--kill` option set to `true`. When this
-option is `true`, the subcommand uses functionality of the operating
-system to kill the instance process before restarting the instance.
-
-[[gkqdw]][[GSHAG00188]][[administering-glassfish-server-instances-locally]]
-
-Administering GlassFish Server Instances Locally
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Local administration does not require DCOM or SSH to be set up. If
-neither DCOM nor SSH is set up, you must log in to each host where
-remote instances reside and administer the instances individually.
-
-Administering GlassFish Server instances locally involves the following
-tasks:
-
-* link:#gkqbl[To Create an Instance Locally]
-* link:#gkqed[To Delete an Instance Locally]
-* link:#gkqak[To Start an Individual Instance Locally]
-* link:#gkqci[To Stop an Individual Instance Locally]
-* link:#gkqef[To Restart an Individual Instance Locally]
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Even if neither DCOM nor SSH is set up, you can obtain information about
-instances in a domain without logging in to each host where remote
-instances reside. For instructions, see link:#gkrcb[To List All
-Instances in a Domain].
-
-|=======================================================================
-
-
-[[gkqbl]][[GSHAG00114]][[to-create-an-instance-locally]]
-
-To Create an Instance Locally
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `create-local-instance` subcommand in remote mode to create a
-GlassFish Server instance locally. Creating an instance adds the
-instance to the DAS configuration and creates the instance's files on
-the host where the instance resides.
-
-If the instance is a clustered instance that is managed by GMS, system
-properties for the instance that relate to GMS must be configured
-correctly. To avoid the need to restart the DAS and the instance,
-configure an instance's system properties that relate to GMS when you
-create the instance. If you change GMS-related system properties for an
-existing instance, the DAS and the instance must be restarted to apply
-the changes. For information about GMS, see
-link:clusters.html#gjfnl[Group Management Service].
-
-[[GSHAG398]]
-
-Before You Begin
-
-If you plan to specify the node on which the instance is to reside,
-ensure that the node exists.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-If you create the instance on a host for which no nodes are defined, you
-can create the instance without creating a node beforehand. In this
-situation, GlassFish Server creates a `CONFIG` node for you. The name of
-the node is the unqualified name of the host.
-
-|=======================================================================
-
-
-For information about how to create a node, see the following sections:
-
-* link:nodes.html#CHDIGBJB[To Create a `DCOM` Node]
-* link:nodes.html#gkrnf[To Create an `SSH` Node]
-* link:nodes.html#gkrll[To Create a `CONFIG` Node]
-
-If you are adding the instance to a cluster, ensure that the cluster to
-which you are adding the instance exists. For information about how to
-create a cluster, see link:clusters.html#gkqdm[To Create a Cluster].
-
-If the instance is to reference an existing named configuration, ensure
-that the configuration exists. For more information, see
-link:named-configurations.html#abdjr[To Create a Named Configuration].
-
-The instance might be a clustered instance that is managed by GMS and
-resides on a node that represents a multihome host. In this situation,
-ensure that you have the Internet Protocol (IP) address of the network
-interface to which GMS binds.
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  Log in to the host that is represented by the node where the
-instance is to reside.
-3.  Run the `create-local-instance` subcommand. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Only the options that are required to complete this task are provided in
-this step. For information about all the options for configuring the
-instance, see the link:../reference-manual/create-local-instance.html#GSRFM00044[`create-local-instance`(1)] help
-page.
-
-|=======================================================================
-
-* If you are creating a standalone instance, do not specify a cluster. +
-If the instance is to reference an existing configuration, specify a
-configuration that no other cluster or instance references. +
-[source,oac_no_warn]
-----
-$ asadmin --host das-host [--port admin-port]
-create-local-instance [--node node-name] [--config configuration-name]instance-name
-----
-das-host::
-  The name of the host where the DAS is running.
-admin-port::
-  The HTTP or HTTPS port on which the DAS listens for administration
-  requests. If the DAS listens on the default port for administration
-  requests, you may omit this option.
-node-name::
-  The node on which the instance is to reside. +
-  If you are creating the instance on a host for which fewer than two
-  nodes are defined, you may omit this option. +
-  If no nodes are defined for the host, GlassFish Server creates a
-  CONFIG node for you. The name of the node is the unqualified name of
-  the host. +
-  If one node is defined for the host, the instance is created on that
-  node.
-configuration-name::
-  The name of the existing named configuration that the instance will
-  reference. +
-  If you do not require the instance to reference an existing
-  configuration, omit this option. A copy of the `default-config`
-  configuration is created for the instance. The name of this
-  configuration is instance-name`-config`, where instance-name is the
-  name of the server instance.
-instance-name::
-  Your choice of name for the instance that you are creating.
-* If you are creating a shared instance, specify the configuration that
-the instance will share with other clusters or instances. +
-Do not specify a cluster. +
-[source,oac_no_warn]
-----
-$ asadmin --host das-host [--port admin-port]
-create-local-instance [--node node-name] --config configuration-name instance-name
-----
-das-host::
-  The name of the host where the DAS is running.
-admin-port::
-  The HTTP or HTTPS port on which the DAS listens for administration
-  requests. If the DAS listens on the default port for administration
-  requests, you may omit this option.
-node-name::
-  The node on which the instance is to reside. +
-  If you are creating the instance on a host for which fewer than two
-  nodes are defined, you may omit this option. +
-  If no nodes are defined for the host, GlassFish Server creates a
-  `CONFIG` node for you. The name of the node is the unqualified name of
-  the host. +
-  If one node is defined for the host, the instance is created on that
-  node.
-configuration-name::
-  The name of the existing named configuration that the instance will
-  reference.
-instance-name::
-  Your choice of name for the instance that you are creating.
-* If you are creating a clustered instance, specify the cluster to which
-the instance will belong. +
-If the instance is managed by GMS and resides on a node that represents
-a multihome host, specify the `GMS-BIND-INTERFACE-ADDRESS-`cluster-name
-system property. +
-[source,oac_no_warn]
-----
-$ asadmin --host das-host [--port admin-port]
-create-local-instance --cluster cluster-name [--node node-name]
-[--systemproperties GMS-BIND-INTERFACE-ADDRESS-cluster-name=bind-address]instance-name
-----
-das-host::
-  The name of the host where the DAS is running.
-admin-port::
-  The HTTP or HTTPS port on which the DAS listens for administration
-  requests. If the DAS listens on the default port for administration
-  requests, you may omit this option.
-cluster-name::
-  The name of the cluster to which you are adding the instance.
-node-name::
-  The node on which the instance is to reside. +
-  If you are creating the instance on a host for which fewer than two
-  nodes are defined, you may omit this option. +
-  If no nodes are defined for the host, GlassFish Server creates a
-  `CONFIG` node for you. The name of the node is the unqualified name of
-  the host. +
-  If one node is defined for the host, the instance is created on that
-  node.
-bind-address::
-  The IP address of the network interface to which GMS binds. Specify
-  this option only if the instance is managed by GMS and resides on a
-  node that represents a multihome host.
-instance-name::
-  Your choice of name for the instance that you are creating.
-
-[[GSHAG00048]][[gktfa]]
-
-
-Example 5-10 Creating a Clustered Instance Locally Without Specifying a
-Node
-
-This example adds the instance `kui-i1` to the cluster `kuicluster`
-locally. The `CONFIG` node `xk01` is created automatically to represent
-the host `xk01.example.com`, on which this example is run. The DAS is
-running on the host `dashost.example.com` and listens for administration
-requests on the default port.
-
-The commands to list the nodes in the domain are included in this
-example only to demonstrate the creation of the node `xk01`. These
-commands are not required to create the instance.
-
-[source,oac_no_warn]
-----
-$ asadmin --host dashost.example.com list-nodes --long
-NODE NAME          TYPE    NODE HOST         INSTALL DIRECTORY   REFERENCED BY
-localhost-domain1  CONFIG  localhost         /export/glassfish3
-Command list-nodes executed successfully.
-$ asadmin --host dashost.example.com
-create-local-instance --cluster kuicluster kui-i1
-Rendezvoused with DAS on dashost.example.com:4848.
-Port Assignments for server instance kui-i1:
-JMX_SYSTEM_CONNECTOR_PORT=28687
-JMS_PROVIDER_PORT=27677
-HTTP_LISTENER_PORT=28081
-ASADMIN_LISTENER_PORT=24849
-JAVA_DEBUGGER_PORT=29009
-IIOP_SSL_LISTENER_PORT=23820
-IIOP_LISTENER_PORT=23700
-OSGI_SHELL_TELNET_PORT=26666
-HTTP_SSL_LISTENER_PORT=28182
-IIOP_SSL_MUTUALAUTH_PORT=23920
-Command create-local-instance executed successfully.
-$ asadmin --host dashost.example.com list-nodes --long
-NODE NAME          TYPE    NODE HOST         INSTALL DIRECTORY   REFERENCED BY
-localhost-domain1  CONFIG  localhost         /export/glassfish3
-xk01               CONFIG  xk01.example.com  /export/glassfish3  kui-i1
-Command list-nodes executed successfully.
-----
-
-[[GSHAG00049]][[gkqps]]
-
-
-Example 5-11 Creating a Clustered Instance Locally
-
-This example adds the instance `yml-i1` to the cluster `ymlcluster`
-locally. The instance resides on the node `sj01`. The DAS is running on
-the host `das1.example.com` and listens for administration requests on
-the default port.
-
-[source,oac_no_warn]
-----
-$ asadmin --host das1.example.com
-create-local-instance --cluster ymlcluster --node sj01 yml-i1
-Rendezvoused with DAS on das1.example.com:4848.
-Port Assignments for server instance yml-i1:
-JMX_SYSTEM_CONNECTOR_PORT=28687
-JMS_PROVIDER_PORT=27677
-HTTP_LISTENER_PORT=28081
-ASADMIN_LISTENER_PORT=24849
-JAVA_DEBUGGER_PORT=29009
-IIOP_SSL_LISTENER_PORT=23820
-IIOP_LISTENER_PORT=23700
-OSGI_SHELL_TELNET_PORT=26666
-HTTP_SSL_LISTENER_PORT=28182
-IIOP_SSL_MUTUALAUTH_PORT=23920
-Command create-local-instance executed successfully.
-----
-
-[[GSHAG399]]
-
-See Also
-
-* link:nodes.html#CHDIGBJB[To Create a `DCOM` Node]
-* link:nodes.html#gkrnf[To Create an `SSH` Node]
-* link:nodes.html#gkrll[To Create a `CONFIG` Node]
-* link:../reference-manual/create-local-instance.html#GSRFM00044[`create-local-instance`(1)]
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-local-instance` at the command line.
-
-[[GSHAG400]]
-
-Next Steps
-
-After creating an instance, you can start the instance as explained in
-the following sections:
-
-* link:#gkqaw[To Start an Individual Instance Centrally]
-* link:#gkqci[To Stop an Individual Instance Locally]
-
-[[gkqed]][[GSHAG00115]][[to-delete-an-instance-locally]]
-
-To Delete an Instance Locally
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `delete-local-instance` subcommand in remote mode to delete a
-GlassFish Server instance locally.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Caution:
-
-If you are using a Java Message Service (JMS) cluster with a master
-broker, do not delete the instance that is associated with the master
-broker. If this instance must be deleted, use the
-link:../reference-manual/change-master-broker.html#GSRFM00005[`change-master-broker`] subcommand to assign the master
-broker to a different instance.
-
-|=======================================================================
-
-
-Deleting an instance involves the following:
-
-* Removing the instance from the configuration of the DAS
-* Deleting the instance's files from file system
-
-[[GSHAG401]]
-
-Before You Begin
-
-Ensure that the instance that you are deleting is not running. For
-information about how to stop an instance, see the following sections:
-
-* link:#gkqaj[To Stop an Individual Instance Centrally]
-* link:#gkqci[To Stop an Individual Instance Locally]
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  Log in to the host that is represented by the node where the
-instance resides.
-3.  Confirm that the instance is not running. +
-[source,oac_no_warn]
-----
-$ asadmin --host das-host [--port admin-port]
-list-instances instance-name
-----
-das-host::
-  The name of the host where the DAS is running.
-admin-port::
-  The HTTP or HTTPS port on which the DAS listens for administration
-  requests. If the DAS listens on the default port for administration
-  requests, you may omit this option.
-instance-name::
-  The name of the instance that you are deleting.
-4.  Run the link:../reference-manual/delete-local-instance.html#GSRFM00096[`delete-local-instance`] subcommand. +
-[source,oac_no_warn]
-----
-$ asadmin --host das-host [--port admin-port]
-delete-local-instance [--node node-name]instance-name
-----
-das-host::
-  The name of the host where the DAS is running.
-admin-port::
-  The HTTP or HTTPS port on which the DAS listens for administration
-  requests. If the DAS listens on the default port for administration
-  requests, you may omit this option.
-node-name::
-  The node on which the instance resides. If only one node is defined
-  for the GlassFish Server installation that you are running on the
-  node's host, you may omit this option.
-instance-name::
-  The name of the instance that you are deleting.
-
-[[GSHAG00050]][[gkqqu]]
-
-
-Example 5-12 Deleting an Instance Locally
-
-This example confirms that the instance `yml-i1` is not running and
-deletes the instance.
-
-[source,oac_no_warn]
-----
-$ asadmin --host das1.example.com list-instances yml-i1
-yml-i1   not running
-Command list-instances executed successfully.
-$ asadmin --host das1.example.com delete-local-instance --node sj01 yml-i1
-Command delete-local-instance executed successfully.
-----
-
-[[GSHAG402]]
-
-See Also
-
-* link:#gkqaj[To Stop an Individual Instance Centrally]
-* link:#gkqci[To Stop an Individual Instance Locally]
-* link:../reference-manual/change-master-broker.html#GSRFM00005[`change-master-broker`(1)]
-* link:../reference-manual/delete-local-instance.html#GSRFM00096[`delete-local-instance`(1)]
-* link:../reference-manual/list-instances.html#GSRFM00170[`list-instances`(1)]
-
-You can also view the full syntax and options of the subcommands by
-typing the following commands at the command line:
-
-* `asadmin help delete-local-instance`
-* `asadmin help list-instances`
-
-[[gkqak]][[GSHAG00116]][[to-start-an-individual-instance-locally]]
-
-To Start an Individual Instance Locally
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `start-local-instance` subcommand in local mode to start an
-individual instance locally.
-
-1.  Log in to the host that is represented by the node where the
-instance resides.
-2.  Run the `start-local-instance` subcommand. +
-[source,oac_no_warn]
-----
-$ asadmin start-local-instance [--node node-name]instance-name
-----
-::
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Only the options that are required to complete this task are provided in
-this step. For information about all the options for controlling the
-behavior of the instance, see the
-link:../reference-manual/start-local-instance.html#GSRFM00237[`start-local-instance`(1)] help page.
-
-|=======================================================================
-
-node-name::
-  The node on which the instance resides. If only one node is defined
-  for the GlassFish Server installation that you are running on the
-  node's host, you may omit this option.
-instance-name::
-  The name of the instance that you are starting.
-
-[[GSHAG00051]][[gkqpu]]
-
-
-Example 5-13 Starting an Individual Instance Locally
-
-This example starts the instance `yml-i1` locally. The instance resides
-on the node `sj01`.
-
-[source,oac_no_warn]
-----
-$ asadmin start-local-instance --node sj01 yml-i1
-Waiting for yml-i1 to start ...............
-Successfully started the instance: yml-i1
-instance Location: /export/glassfish3/glassfish/nodes/sj01/yml-i1
-Log File: /export/glassfish3/glassfish/nodes/sj01/yml-i1/logs/server.log
-Admin Port: 24849
-Command start-local-instance executed successfully.
-----
-
-[[GSHAG403]]
-
-See Also
-
-link:../reference-manual/start-local-instance.html#GSRFM00237[`start-local-instance`(1)]
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help start-local-instance` at the command line.
-
-[[GSHAG404]]
-
-Next Steps
-
-After starting an instance, you can deploy applications to the instance.
-For more information, see the link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source
-Edition Application Deployment Guide].
-
-[[gkqci]][[GSHAG00117]][[to-stop-an-individual-instance-locally]]
-
-To Stop an Individual Instance Locally
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `stop-local-instance` subcommand in local mode to stop an
-individual instance locally.
-
-When an instance is stopped, the instance stops accepting new requests
-and waits for all outstanding requests to be completed.
-
-1.  Log in to the host that is represented by the node where the
-instance resides.
-2.  Run the link:../reference-manual/stop-local-instance.html#GSRFM00242[`stop-local-instance`] subcommand. +
-[source,oac_no_warn]
-----
-$ asadmin stop-local-instance [--node node-name]instance-name
-----
-node-name::
-  The node on which the instance resides. If only one node is defined
-  for the GlassFish Server installation that you are running on the
-  node's host, you may omit this option.
-instance-name::
-  The name of the instance that you are stopping.
-
-[[GSHAG00052]][[gkqoo]]
-
-
-Example 5-14 Stopping an Individual Instance Locally
-
-This example stops the instance `yml-i1` locally. The instance resides
-on the node `sj01`.
-
-[source,oac_no_warn]
-----
-$ asadmin stop-local-instance --node sj01 yml-i1
-Waiting for the instance to stop ....
-Command stop-local-instance executed successfully.
-----
-
-[[GSHAG405]]
-
-See Also
-
-link:../reference-manual/stop-local-instance.html#GSRFM00242[`stop-local-instance`(1)]
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help stop-local-instance` at the command line.
-
-[[GSHAG406]]
-
-Troubleshooting
-
-If the instance has become unresponsive and fails to stop, run the
-subcommand again with the `--kill` option set to `true`. When this
-option is `true`, the subcommand uses functionality of the operating
-system to kill the instance process.
-
-[[gkqef]][[GSHAG00118]][[to-restart-an-individual-instance-locally]]
-
-To Restart an Individual Instance Locally
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `restart-local-instance` subcommand in local mode to restart an
-individual instance locally.
-
-When this subcommand restarts an instance, the DAS synchronizes the
-instance with changes since the last synchronization as described in
-link:#gksbo[Default Synchronization for Files and Directories].
-
-If you require different synchronization behavior, stop and start the
-instance as explained in link:#gksak[To Resynchronize an Instance and
-the DAS Online].
-
-1.  Log in to the host that is represented by the node where the
-instance resides.
-2.  Run the `restart-local-instance` subcommand. +
-[source,oac_no_warn]
-----
-$ asadmin restart-local-instance [--node node-name]instance-name
-----
-node-name::
-  The node on which the instance resides. If only one node is defined
-  for the GlassFish Server installation that you are running on the
-  node's host, you may omit this option.
-instance-name::
-  The name of the instance that you are restarting.
-
-[[GSHAG00053]][[gkqnt]]
-
-
-Example 5-15 Restarting an Individual Instance Locally
-
-This example restarts the instance `yml-i1` locally. The instance
-resides on the node `sj01`.
-
-[source,oac_no_warn]
-----
-$ asadmin restart-local-instance --node sj01 yml-i1
-Command restart-local-instance executed successfully.
-----
-
-[[GSHAG407]]
-
-See Also
-
-link:../reference-manual/restart-local-instance.html#GSRFM00220[`restart-local-instance`(1)]
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help restart-local-instance` at the command line.
-
-[[GSHAG408]]
-
-Troubleshooting
-
-If the instance has become unresponsive and fails to stop, run the
-subcommand again with the `--kill` option set to `true`. When this
-option is `true`, the subcommand uses functionality of the operating
-system to kill the instance process before restarting the instance.
-
-[[gkrdd]][[GSHAG00189]][[resynchronizing-glassfish-server-instances-and-the-das]]
-
-Resynchronizing GlassFish Server Instances and the DAS
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Configuration data for a GlassFish Server instance is stored as follows:
-
-* In the repository of the domain administration server (DAS)
-* In a cache on the host that is local to the instance
-
-The configuration data in these locations must be synchronized. The
-cache is synchronized in the following circumstances:
-
-* Whenever an `asadmin` subcommand is run. For more information, see
-"link:../administration-guide/overview.html#GSADG00697[Impact of Configuration Changes]" in GlassFish Server
-Open Source Edition Administration Guide.
-* When a user uses the administration tools to start or restart an
-instance.
-
-[[gksbo]][[GSHAG00267]][[default-synchronization-for-files-and-directories]]
-
-Default Synchronization for Files and Directories
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The `--sync` option of the subcommands for starting an instance controls
-the type of synchronization between the DAS and the instance's files
-when the instance is started. You can use this option to override the
-default synchronization behavior for the files and directories of an
-instance. For more information, see link:#gksak[To Resynchronize an
-Instance and the DAS Online].
-
-On the DAS, the files and directories of an instance are stored in the
-domain-dir directory, where domain-dir is the directory in which a
-domain's configuration is stored. The default synchronization behavior
-for the files and directories of an instance is as follows:
-
-`applications`::
-  This directory contains a subdirectory for each application that is
-  deployed to the instance. +
-  By default, only a change to an application's top-level directory
-  within the application directory causes the DAS to synchronize that
-  application's directory. When the DAS resynchronizes the
-  `applications` directory, all the application's files and all
-  generated content that is related to the application are copied to the
-  instance. +
-  If a file below a top-level subdirectory is changed without a change
-  to a file in the top-level subdirectory, full synchronization is
-  required. In normal operation, files below the top-level
-  subdirectories of these directories are not changed and such files
-  should not be changed by users. If an application is deployed and
-  undeployed, full synchronization is not necessary to update the
-  instance with the change.
-`config`::
-  This directory contains configuration files for the entire domain. +
-  By default, the DAS resynchronizes files that have been modified since
-  the last resynchronization only if the `domain.xml` file in this
-  directory has been modified. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-If you add a file to the `config` directory of an instance, the file
-is deleted when the instance is resynchronized with the DAS. However,
-any file that you add to the `config` directory of the DAS is not
-deleted when instances and the DAS are resynchronized. By default, any
-file that you add to the `config` directory of the DAS is not
-resynchronized. If you require any additional configuration files to
-be resynchronized, you must specify the files explicitly. For more
-information, see link:#gksaz[To Resynchronize Additional Configuration
-Files].
-
-|=======================================================================
-
-`config`::
-`config/`config-name::
-  This directory contains files that are to be shared by all instances
-  that reference the named configuration config-name. A config-name
-  directory exists for each named configuration in the configuration of
-  the DAS. +
-  Because the config-name directory contains the subdirectories `lib`
-  and `docroot`, this directory might be very large. Therefore, by
-  default, only a change to a file or a top-level subdirectory of
-  config-name causes the DAS to resynchronize the config-name directory.
-`config/domain.xml`::
-  This file contains the DAS configuration for the domain to which the
-  instance belongs. +
-  By default, the DAS resynchronizes this file if it has been modified
-  since the last resynchronization. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-A change to the `config/domain.xml` file is required to cause the DAS
-to resynchronize an instance's files. If the `config/domain.xml` file
-has not changed since the last resynchronization, none of the
-instance's files is resynchronized, even if some of these files are
-out of date in the cache.
-
-|=======================================================================
-
-`docroot`::
-  This directory is the HTTP document root directory. By default, all
-  instances in a domain use the same document root directory. To enable
-  instances to use a different document root directory, a virtual server
-  must be created in which the `docroot` property is set. For more
-  information, see the link:../reference-manual/create-virtual-server.html#GSRFM00062[`create-virtual-server`(1)] help
-  page. +
-  The `docroot` directory might be very large. Therefore, by default,
-  only a change to a file or a subdirectory in the top level of the
-  `docroot` directory causes the DAS to resynchronize the `docroot`
-  directory. The DAS checks files in the top level of the `docroot`
-  directory to ensure that changes to the `index.html` file are
-  detected. +
-  When the DAS resynchronizes the `docroot` directory, all modified
-  files and subdirectories at any level are copied to the instance. +
-  If a file below a top-level subdirectory is changed without a change
-  to a file in the top-level subdirectory, full synchronization is
-  required.
-`generated`::
-  This directory contains generated files for Java EE applications and
-  modules, for example, EJB stubs, compiled JSP classes, and security
-  policy files. Do not modify the contents of this directory. +
-  This directory is resynchronized when the `applications` directory is
-  resynchronized. Therefore, only directories for applications that are
-  deployed to the instance are resynchronized.
-`java-web-start`::
-  This directory is not resynchronized. It is created and populated as
-  required on each instance.
-`lib`::
-`lib/classes`::
-  These directories contain common Java class files or JAR archives and
-  ZIP archives for use by applications that are deployed to the entire
-  domain. Typically, these directories contain common JDBC drivers and
-  other utility libraries that are shared by all applications in the
-  domain. +
-  The contents of these directories are loaded by the common class
-  loader. For more information, see "link:../application-development-guide/class-loaders.html#GSDVG00342[Using the Common
-  Class Loader]" in GlassFish Server Open Source Edition Application
-  Development Guide. The class loader loads the contents of these
-  directories in the following order: +
-  1.  `lib/classes`
-  2.  `lib/*.jar`
-  3.  `lib/*.zip` +
-  The `lib` directory also contains the following subdirectories: +
-  `applibs`;;
-    This directory contains application-specific Java class files or JAR
-    archives and ZIP archives for use by applications that are deployed
-    to the entire domain.
-  `ext`;;
-    This directory contains optional packages in JAR archives and ZIP
-    archives for use by applications that are deployed to the entire
-    domain. These archive files are loaded by using Java extension
-    mechanism. For more information, see
-    http://download.oracle.com/javase/6/docs/technotes/guides/extensions/extensions.html[Optional
-    Packages - An Overview]
-    (`http://docs.oracle.com/javase/7/docs/technotes/guides/extensions/extensions.html`). +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Optional packages were formerly known as standard extensions or
-extensions.
-
-|=======================================================================
-
-  The `lib` directory and its subdirectories typically contain only a
-  small number of files. Therefore, by default, a change to any file in
-  these directories causes the DAS to resynchronize the file that
-  changed.
-
-[[gksak]][[GSHAG00119]][[to-resynchronize-an-instance-and-the-das-online]]
-
-To Resynchronize an Instance and the DAS Online
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Resynchronizing an instance and the DAS updates the instance with
-changes to the instance's configuration files on the DAS. An instance is
-resynchronized with the DAS when the instance is started or restarted.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Resynchronization of an instance is only required if the instance is
-stopped. A running instance does not require resynchronization.
-
-|=======================================================================
-
-
-1.  Ensure that the DAS is running.
-2.  Determine whether the instance is stopped. +
-[source,oac_no_warn]
-----
-asadmin> list-instances instance-name
-----
-instance-name::
-  The name of the instance that you are resynchronizing with the DAS. +
-If the instance is stopped, the `list-instances` subcommand indicates
-that the instance is not running.
-3.  If the instance is stopped, start the instance. +
-If the instance is running, no further action is required.
-* If DCOM or SSH is set up, start the instance centrally. +
-If you require full synchronization, set the `--sync` option of the
-`start-instance` subcommand to `full`. If default synchronization is
-sufficient, omit this option. +
-[source,oac_no_warn]
-----
-asadmin> start-instance [--sync full] instance-name
-----
-::
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Only the options that are required to complete this task are provided in
-this step. For information about all the options for controlling the
-behavior of the instance, see the link:../reference-manual/start-instance.html#GSRFM00236[`start-instance`(1)]
-help page.
-
-|=======================================================================
-
-instance-name::
-  The name of the instance that you are starting.
-* If neither DCOM nor SSH is set up, start the instance locally from the
-host where the instance resides. +
-If you require full synchronization, set the `--sync` option of the
-`start-local-instance` subcommand to `full`. If default synchronization
-is sufficient, omit this option. +
-[source,oac_no_warn]
-----
-$ asadmin start-local-instance [--node node-name] [--sync full] instance-name
-----
-::
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Only the options that are required to complete this task are provided in
-this step. For information about all the options for controlling the
-behavior of the instance, see the
-link:../reference-manual/start-local-instance.html#GSRFM00237[`start-local-instance`(1)] help page.
-
-|=======================================================================
-
-node-name::
-  The node on which the instance resides. If only one node is defined
-  for the GlassFish Server installation that you are running on the
-  node's host, you may omit this option.
-instance-name::
-  The name of the instance that you are starting.
-
-[[GSHAG00054]][[gksfu]]
-
-
-Example 5-16 Resynchronizing an Instance and the DAS Online
-
-This example determines that the instance `yml-i1` is stopped and fully
-resynchronizes the instance with the DAS. Because neither DCOM nor SSH
-is set up, the instance is started locally on the host where the
-instance resides. In this example, multiple nodes are defined for the
-GlassFish Server installation that is running on the node's host.
-
-To determine whether the instance is stopped, the following command is
-run in multimode on the DAS host:
-
-[source,oac_no_warn]
-----
-asadmin> list-instances yml-i1
-yml-i1   not running
-Command list-instances executed successfully.
-----
-
-To start the instance, the following command is run in single mode on
-the host where the instance resides:
-
-[source,oac_no_warn]
-----
-$ asadmin start-local-instance --node sj01 --sync full yml-i1
-Removing all cached state for instance yml-i1.
-Waiting for yml-i1 to start ...............
-Successfully started the instance: yml-i1
-instance Location: /export/glassfish3/glassfish/nodes/sj01/yml-i1
-Log File: /export/glassfish3/glassfish/nodes/sj01/yml-i1/logs/server.log
-Admin Port: 24849
-Command start-local-instance executed successfully.
-----
-
-[[GSHAG409]]
-
-See Also
-
-* link:../reference-manual/list-instances.html#GSRFM00170[`list-instances`(1)]
-* link:../reference-manual/start-instance.html#GSRFM00236[`start-instance`(1)]
-* link:../reference-manual/start-local-instance.html#GSRFM00237[`start-local-instance`(1)]
-
-You can also view the full syntax and options of the subcommands by
-typing the following commands at the command line.
-
-`asadmin help list-instances`
-
-`asadmin help start-instance`
-
-`asadmin help start-local-instance`
-
-[[gksav]][[GSHAG00120]][[to-resynchronize-library-files]]
-
-To Resynchronize Library Files
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To ensure that library files are resynchronized correctly, you must
-ensure that each library file is placed in the correct directory for the
-type of file.
-
-1.  Place each library file in the correct location for the type of
-library file as shown in the following table. +
-[width="100%",cols="<53%,<47%",options="header",]
-|=======================================================================
-|Type of Library Files |Location
-|Common JAR archives and ZIP archives for all applications in a domain.
-|domain-dir`/lib`
-
-|Common Java class files for a domain for all applications in a domain.
-|domain-dir`/lib/classes`
-
-|Application-specific libraries. |domain-dir`/lib/applibs`
-
-|Optional packages for all applications in a domain.
-|domain-dir`/lib/ext`
-
-|Library files for all applications that are deployed to a specific
-cluster or standalone instance. |domain-dir`/config/`config-name`/lib`
-
-|Optional packages for all applications that are deployed to a specific
-cluster or standalone instance.
-|domain-dir`/config/`config-name`/lib/ext`
-|=======================================================================
-
-domain-dir::
-  The directory in which the domain's configuration is stored.
-config-name::
-  For a standalone instance: the named configuration that the instance
-  references. +
-  For a clustered instance: the named configuration that the cluster to
-  which the instance belongs references.
-2.  When you deploy an application that depends on these library files,
-use the `--libraries` option of the deploy subcommand to specify these
-dependencies. +
-For library files in the domain-dir`/lib/applib` directory, only the JAR
-file name is required, for example: +
-[source,oac_no_warn]
-----
-asadmin> deploy --libraries commons-coll.jar,X1.jar app.ear
-----
-For other types of library file, the full path is required.
-
-[[GSHAG411]]
-
-See Also
-
-link:../reference-manual/deploy.html#GSRFM00114[`deploy`(1)]
-
-You can also view the full syntax and options of the subcommands by
-typing the command `asadmin help deploy` at the command line.
-
-[[gksco]][[GSHAG00121]][[to-resynchronize-custom-configuration-files-for-an-instance]]
-
-To Resynchronize Custom Configuration Files for an Instance
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Configuration files in the domain-dir`/config` directory that are
-resynchronized are resynchronized for the entire domain. If you create a
-custom configuration file for an instance or a cluster, the custom file
-is resynchronized only for the instance or cluster.
-
-1.  Place the custom configuration file in the
-domain-dir`/config/`config-name directory.::
-domain-dir::
-  The directory in which the domain's configuration is stored.
-config-name::
-  The named configuration that the instance references.
-2.  If the instance locates the file through an option of the Java
-application launcher, update the option.
-1.  Delete the option. +
-[source,oac_no_warn]
-----
-asadmin> delete-jvm-options --target instance-name
-option-name=current-value
-----
-instance-name::
-  The name of the instance for which the custom configuration file is
-  created.
-option-name::
-  The name of the option for locating the file.
-current-value::
-  The current value of the option for locating the file.
-2.  Re-create the option that you deleted in the previous step. +
-[source,oac_no_warn]
-----
-asadmin> create-jvm-options --target instance-name
-option-name=new-value
-----
-instance-name::
-  The name of the instance for which the custom configuration file is
-  created.
-option-name::
-  The name of the option for locating the file.
-new-value::
-  The new value of the option for locating the file.
-
-[[GSHAG00055]][[gksfr]]
-
-
-Example 5-17 Updating the Option for Locating a Configuration File
-
-This example updates the option for locating the `server.policy` file to
-specify a custom file for the instance `pmd`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-jvm-options --target pmd
--Djava.security.policy=${com.sun.aas.instanceRoot}/config/server.policy
-Deleted 1 option(s)
-Command delete-jvm-options executed successfully.
-asadmin> create-jvm-options --target pmd
--Djava.security.policy=${com.sun.aas.instanceRoot}/config/pmd-config/server.policy
-Created 1 option(s)
-Command create-jvm-options executed successfully.
-----
-
-[[GSHAG412]]
-
-See Also
-
-* link:../reference-manual/create-jvm-options.html#GSRFM00042[`create-jvm-options`(1)]
-* link:../reference-manual/delete-jvm-options.html#GSRFM00094[`delete-jvm-options`(1)]
-
-You can also view the full syntax and options of the subcommands by
-typing the following commands at the command line.
-
-`asadmin help create-jvm-options`
-
-`asadmin help delete-jvm-options`
-
-[[gkscp]][[GSHAG00122]][[to-resynchronize-users-changes-to-files]]
-
-To Resynchronize Users' Changes to Files
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A change to the `config/domain.xml` file is required to cause the DAS to
-resynchronize instances' files. If other files in the domain directory
-are changed without a change to the `config/domain.xml` file, instances
-are not resynchronized with these changes.
-
-The following changes are examples of changes to the domain directory
-without a change to the `config/domain.xml` file:
-
-* Adding files to the `lib` directory
-* Adding certificates to the key store by using the `keytool` command
-
-1.  Change the last modified time of the `config/domain.xml` file. +
-Exactly how to change the last modified time depends on the operating
-system. For example, on UNIX and Linux systems, you can use the
-http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1touch-1[`touch`(1)]
-command.
-2.  Resynchronize each instance in the domain with the DAS. +
-For instructions, see link:#gksak[To Resynchronize an Instance and the
-DAS Online].
-
-[[GSHAG413]]
-
-See Also
-
-* link:#gksak[To Resynchronize an Instance and the DAS Online]
-* http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1touch-1[`touch`(1)]
-
-[[gksaz]][[GSHAG00123]][[to-resynchronize-additional-configuration-files]]
-
-To Resynchronize Additional Configuration Files
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-By default, GlassFish Server synchronizes only the following
-configuration files:
-
-* `admin-keyfile`
-* `cacerts.jks`
-* `default-web.xml`
-* `domain.xml`
-* `domain-passwords`
-* `keyfile`
-* `keystore.jks`
-* `server.policy`
-* `sun-acc.xml`
-* `wss-server-config-1.0`
-* `xml wss-server-config-2.0.xml`
-
-If you require instances in a domain to be resynchronized with
-additional configuration files for the domain, you can specify a list of
-files to resynchronize.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Caution:
-
-If you specify a list of files to resynchronize, you must specify all
-the files that the instances require, including the files that GlassFish
-Server resynchronizes by default. Any file in the instance's cache that
-is not in the list is deleted when the instance is resynchronized with
-the DAS.
-
-|=======================================================================
-
-
-In the `config` directory of the domain, create a plain text file that
-is named `config-files` that lists the files to resynchronize.
-
-In the `config-files` file, list each file name on a separate line.
-
-[[GSHAG00056]][[gksgl]]
-
-
-Example 5-18 `config-files` File
-
-This example shows the content of a `config-files` file. This file
-specifies that the `some-other-info` file is to be resynchronized in
-addition to the files that GlassFish Server resynchronizes by default:
-
-[source,oac_no_warn]
-----
-admin-keyfile
-cacerts.jks
-default-web.xml
-domain.xml
-domain-passwords
-keyfile
-keystore.jks
-server.policy
-sun-acc.xml
-wss-server-config-1.0.xml
-wss-server-config-2.0.xml
-some-other-info
-----
-
-[[gksdj]][[GSHAG00124]][[to-prevent-deletion-of-application-generated-files]]
-
-To Prevent Deletion of Application-Generated Files
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-When the DAS resynchronizes an instance's files, the DAS deletes from
-the instance's cache any files that are not listed for
-resynchronization. If an application creates files in a directory that
-the DAS resynchronizes, these files are deleted when the DAS
-resynchronizes an instance with the DAS.
-
-Put the files in a subdirectory under the domain directory that is not
-defined by GlassFish Server, for example,
-`/export/glassfish3/glassfish/domains/domain1/myapp/myfile`.
-
-[[gksdy]][[GSHAG00125]][[to-resynchronize-an-instance-and-the-das-offline]]
-
-To Resynchronize an Instance and the DAS Offline
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Resynchronizing an instance and the DAS offline updates the instance's
-cache without the need for the instance to be able to communicate with
-the DAS. Offline resynchronization is typically required for the
-following reasons:
-
-* To reestablish the instance after an upgrade
-* To synchronize the instance manually with the DAS when the instance
-cannot contact the DAS
-
-1.  Ensure that the DAS is running.
-2.  [[gktio]]
-Export the configuration data that you are resynchronizing to an archive
-file.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Only the options that are required to complete this task are provided in
-this step. For information about all the options for exporting the
-configuration data, see the link:../reference-manual/export-sync-bundle.html#GSRFM00134[`export-sync-bundle`(1)]
-help page.
-
-|=======================================================================
-
-
-How to export the data depends on the host from where you run the
-`export-sync-bundle` subcommand.
-
-* From the DAS host, run the `export-sync-bundle` subcommand as follows: +
-[source,oac_no_warn]
-----
-asadmin> export-sync-bundle --target target
-----
-target::
-  The cluster or standalone instance for which to export configuration
-  data. +
-  Do not specify a clustered instance. If you specify a clustered
-  instance, an error occurs. To export configuration data for a
-  clustered instance, specify the name of the cluster of which the
-  instance is a member, not the instance. +
-The file is created on the DAS host.
-* From the host where the instance resides, run the `export-sync-bundle`
-subcommand as follows: +
-[source,oac_no_warn]
-----
-$ asadmin --host das-host [--port admin-port]
-export-sync-bundle [--retrieve=true] --target target
-----
-das-host::
-  The name of the host where the DAS is running.
-admin-port::
-  The HTTP or HTTPS port on which the DAS listens for administration
-  requests. If the DAS listens on the default port for administration
-  requests, you may omit this option.
-target::
-  The cluster or standalone instance for which to export configuration
-  data. +
-  Do not specify a clustered instance. If you specify a clustered
-  instance, an error occurs. To export configuration data for a
-  clustered instance, specify the name of the cluster of which the
-  instance is a member, not the instance. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-To create the archive file on the host where the instance resides, set
-the `--retrieve` option to `true`. If you omit this option, the archive
-file is created on the DAS host.
-
-|=======================================================================
-
-3.  If necessary, copy the archive file that you created in
-Step link:#gktio[2] from the DAS host to the host where the instance
-resides.
-4.  From the host where the instance resides, import the instance's
-configuration data from the archive file that you created in
-Step link:#gktio[2]. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Only the options that are required to complete this task are provided in
-this step. For information about all the options for importing the
-configuration data, see the link:../reference-manual/import-sync-bundle.html#GSRFM00142[`import-sync-bundle`(1)]
-help page.
-
-|=======================================================================
-
-[source,oac_no_warn]
-----
-$ asadmin import-sync-bundle [--node node-name] --instance instance-name archive-file
-----
-node-name::
-  The node on which the instance resides. If you omit this option, the
-  subcommand determines the node from the DAS configuration in the
-  archive file.
-instance-name::
-  The name of the instance that you are resynchronizing.
-archive-file::
-  The name of the file, including the path, that contains the archive
-  file to import.
-
-[[GSHAG00057]][[gksgg]]
-
-
-Example 5-19 Resynchronizing an Instance and the DAS Offline
-
-This example resynchronizes the clustered instance `yml-i1` and the DAS
-offline. The instance is a member of the cluster `ymlcluster`. The
-archive file that contains the instance's configuration data is created
-on the host where the instance resides.
-
-[source,oac_no_warn]
-----
-$ asadmin --host dashost.example.com
-export-sync-bundle --retrieve=true --target ymlcluster
-Command export-sync-bundle executed successfully.
-$ asadmin import-sync-bundle --node sj01
---instance yml-i1 ymlcluster-sync-bundle.zip
-Command import-sync-bundle executed successfully.
-----
-
-[[GSHAG414]]
-
-See Also
-
-* link:../reference-manual/export-sync-bundle.html#GSRFM00134[`export-sync-bundle`(1)]
-* link:../reference-manual/import-sync-bundle.html#GSRFM00142[`import-sync-bundle`(1)]
-
-You can also view the full syntax and options of the subcommands by
-typing the following commands at the command line.
-
-`asadmin help export-sync-bundle`
-
-`asadmin help import-sync-bundle`
-
-[[gkqcr]][[GSHAG00190]][[migrating-ejb-timers]]
-
-Migrating EJB Timers
-~~~~~~~~~~~~~~~~~~~~
-
-If a GlassFish Server server instance stops or fails abnormally, it may
-be desirable to migrate the EJB timers defined for that stopped server
-instance to another running server instance.
-
-Automatic timer migration is enabled by default for clustered server
-instances that are stopped normally. Automatic timer migration can also
-be enabled to handle clustered server instance crashes. In addition,
-timers can be migrated manually for stopped or crashed server instances.
-
-* link:#gkvwo[To Enable Automatic EJB Timer Migration for Failed
-Clustered Instances]
-* link:#abdji[To Migrate EJB Timers Manually]
-
-[[gkvwo]][[GSHAG00126]][[to-enable-automatic-ejb-timer-migration-for-failed-clustered-instances]]
-
-To Enable Automatic EJB Timer Migration for Failed Clustered Instances
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Automatic migration of EJB timers is enabled by default for clustered
-server instances that are stopped normally. If the Group Management
-Service (GMS) is enabled and a clustered instance is stopped normally,
-no further action is required for timer migration to occur. The
-procedure in this section is only necessary if you want to enable
-automatic timer migration for clustered server instances that have
-stopped abnormally.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-If the GMS is enabled, the default automatic timer migration cannot be
-disabled. To disable automatic timer migration, you must first disable
-the GMS. For information about the GMS, see
-link:clusters.html#gjfnl[Group Management Service].
-
-|=======================================================================
-
-
-[[GSHAG415]]
-
-Before You Begin
-
-Automatic EJB timer migration can only be configured for clustered
-server instances. Automatic timer migration is not possible for
-standalone server instances.
-
-Enable delegated transaction recovery for the cluster.
-
-This enables automatic timer migration for failed server instances in
-the cluster.
-
-For instructions on enabling delegated transaction recovery, see
-"link:../administration-guide/transactions.html#GSADG00022[Administering Transactions]" in GlassFish Server Open
-Source Edition Administration Guide.
-
-[[abdji]][[GSHAG00127]][[to-migrate-ejb-timers-manually]]
-
-To Migrate EJB Timers Manually
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-EJB timers can be migrated manually from a stopped source instance to a
-specified target instance in the same cluster if GMS notification is not
-enabled. If no target instance is specified, the DAS will attempt to
-find a suitable server instance. A migration notification will then be
-sent to the selected target server instance.
-
-Note the following restrictions:
-
-* If the source instance is part of a cluster, then the target instance
-must also be part of that same cluster.
-* It is not possible to migrate timers from a standalone instance to a
-clustered instance, or from one cluster to another cluster.
-* It is not possible to migrate timers from one standalone instance to
-another standalone instance.
-* All EJB timers defined for a given instance are migrated with this
-procedure. It is not possible to migrate individual timers.
-
-[[GSHAG416]]
-
-Before You Begin
-
-The server instance from which the EJB timers are to be migrated should
-not be active during the migration process.
-
-1.  Verify that the source clustered server instance from which the EJB
-timers are to be migrated is not currently running. +
-[source,oac_no_warn]
-----
-asadmin> list-instances source-instance
-----
-2.  Stop the instance from which the timers are to be migrated, if that
-instance is still running. +
-[source,oac_no_warn]
-----
-asadmin> stop-instance source-instance
-----
-::
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-The target instance to which the timers will be migrated should be
-running.
-
-|=======================================================================
-
-3.  List the currently defined EJB timers on the source instance, if
-desired. +
-[source,oac_no_warn]
-----
-asadmin> list-timers source-cluster
-----
-4.  Migrate the timers from the stopped source instance to the target
-instance. +
-[source,oac_no_warn]
-----
-asadmin> migrate-timers --target target-instance source-instance
-----
-
-[[GSHAG00058]][[gkmgw]]
-
-
-Example 5-20 Migrating an EJB Timer
-
-The following example show how to migrate timers from a clustered source
-instance named `football` to a clustered target instance named `soccer`.
-
-[source,oac_no_warn]
-----
-asadmin> migrate-timers --target soccer football
-----
-
-[[GSHAG417]]
-
-See Also
-
-link:../reference-manual/list-timers.html#GSRFM00205[`list-timers`(1)],
-link:../reference-manual/migrate-timers.html#GSRFM00211[`migrate-timers`(1)],
-link:../reference-manual/list-instances.html#GSRFM00170[`list-instances`(1)],
-link:../reference-manual/stop-instance.html#GSRFM00241[`stop-instance`(1)]
diff --git a/docs/ha-administration-guide/src/main/jbake/content/jms.adoc b/docs/ha-administration-guide/src/main/jbake/content/jms.adoc
deleted file mode 100644
index 0f04751..0000000
--- a/docs/ha-administration-guide/src/main/jbake/content/jms.adoc
+++ /dev/null
@@ -1,547 +0,0 @@
-type=page
-status=published
-title=Configuring Java Message Service High Availability
-next=rmi-iiop.html
-prev=session-persistence-and-failover.html
-~~~~~~
-Configuring Java Message Service High Availability
-==================================================
-
-[[GSHAG00012]][[abdbk]]
-
-
-[[configuring-java-message-service-high-availability]]
-10 Configuring Java Message Service High Availability
------------------------------------------------------
-
-This chapter describes how to configure the high availability features
-of the Java Message Service (JMS). It covers how to configure Message
-Queue broker clusters and how to use them to provide connection failover
-and load balancing, as described in the following topics:
-
-* link:#abdbx[Using Message Queue Broker Clusters With GlassFish Server]
-* link:#abdbv[Connection Failover]
-* link:#abdbw[Load-Balanced Delivery to MDBs]
-
-[[abdbx]][[GSHAG00212]][[using-message-queue-broker-clusters-with-glassfish-server]]
-
-Using Message Queue Broker Clusters With GlassFish Server
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This section describes how the JMS service uses Message Queue broker
-clusters to support high-availability JMS messaging in GlassFish Server
-clusters. It describes the different cluster and broker types that are
-supported and how to configure them.
-
-The following topics are addressed here:
-
-* link:#gktgs[About Message Queue Broker Clusters]
-* link:#gktft[Configuring GlassFish Clusters to Use Message Queue Broker
-Clusters]
-* link:#gktge[To Configure a GlassFish Cluster to Use an Embedded or
-Local Conventional Broker Cluster With Master Broker]
-* link:#gktfr[To Configure a GlassFish Cluster to Use an Embedded or
-Local Conventional Broker Cluster of Peer Brokers]
-* link:#gkthc[To Change the Master Broker in an Embedded or Local Broker
-Cluster]
-* link:#gktgj[To Migrate Between Types of Embedded or Local Conventional
-Broker Clusters]
-* link:#gktfl[To Configure a GlassFish Cluster to Use a Local Enhanced
-Broker Cluster]
-* link:#abdby[To Configure a GlassFish Cluster to Use a Remote Broker
-Cluster]
-
-[[gktgs]][[GSHAG00311]][[about-message-queue-broker-clusters]]
-
-About Message Queue Broker Clusters
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The following discussion provides a brief overview of Message Queue
-broker clusters. For complete information, see "link:../../openmq/mq-tech-over/broker-clusters.html#GMTOV00028[Broker
-Clusters]" in Open Message Queue Technical Overview.
-
-Message Queue supports two clustering models both of which provide a
-scalable message service, but with each providing a different level of
-message service availability:
-
-* Conventional broker clusters. A conventional broker cluster provides
-for service availability. When a broker fails, clients connected to the
-failed broker reconnect to another broker in the cluster. However,
-messages and state information stored in the failed broker cannot be
-recovered until the failed broker is brought back online. The broker
-failure can therefore result in a significant delay and in JMS message
-order semantics not being preserved. +
-Message Queue supports two types of conventional cluster, based on where
-the cluster configuration change record is stored:
-
-** Conventional cluster with master broker. In a conventional cluster
-with a master broker, one of the brokers, designated as the master
-broker, stores and maintains the cluster configuration change record.
-The other brokers in the cluster must communicate with the master broker
-to keep abreast of changes to the cluster configuration. This is the
-simplest broker cluster to configure, and is the type of broker cluster
-that GlassFish Server uses by default to support GlassFish clusters.
-
-** Conventional cluster of peer brokers. In a conventional cluster of
-peer brokers, the cluster configuration change record is stored in a
-JDBC data store accessible to all the brokers. Thus, brokers can access
-cluster configuration information whether any other brokers in the
-cluster are running or not.
-* Enhanced broker clusters. An enhanced broker cluster provides for data
-availability in addition to service availability. When a broker fails,
-another broker takes over the pending work of the failed broker. The
-failover broker has access to the failed broker's messages and state
-information. Clients connected to the failed broker reconnect to the
-failover broker. In an enhanced cluster, as compared to a conventional
-cluster, messages owned by the failed broker are delivered by the
-failover broker as soon as it takes over, and JMS message order
-semantics are preserved. +
-By its very nature, an enhanced broker cluster is a cluster of peer
-brokers.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Despite the message service availability offered by both conventional
-and enhanced broker clusters, they do not provide a guarantee against
-failure and the possibility that certain failures, for example in the
-middle of a transaction, could require that some operations be repeated.
-It is the responsibility of the messaging application (both producers
-and consumers) to respond to JMS exceptions appropriately. For
-information about the kinds of exceptions that can occur and how to
-respond to them, see "link:../../openmq/mq-dev-guide-java/client-design-and-features.html#GMJVG00229[Handling Exceptions When Failover
-Occurs]" in Open Message Queue Developer's Guide for Java Clients.
-
-|=======================================================================
-
-
-[[gktft]][[GSHAG00312]][[configuring-glassfish-clusters-to-use-message-queue-broker-clusters]]
-
-Configuring GlassFish Clusters to Use Message Queue Broker Clusters
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-When a GlassFish Server cluster is created, the JMS service
-automatically configures a Message Queue conventional broker cluster
-with master broker for the cluster, provided that the JMS host type in
-the GlassFish Server cluster's configuration is Embedded or Local. The
-JMS service configures one Message Queue broker for each instance in the
-GlassFish Server cluster, and designates as master broker the broker
-associated with the first instance created in the cluster. In the case
-of Local JMS hosts, the JMS service configures each broker to run on the
-same host as the instance with which it is associated. In the case of
-Embedded JMS hosts, the each broker inherently runs on the same host as
-the instance with which it is associated because it runs in the same JVM
-as the instance.
-
-The JMS service manages the lifecycle of Embedded and Local JMS hosts,
-and this management extends to the management of Message Queue broker
-clusters as Embedded and Local JMS hosts. For a GlassFish cluster whose
-configuration specifies Embedded or Local JMS host type, the JMS
-service:
-
-* Creates and manages one Message Queue broker for each instance in the
-GlassFish cluster, using this broker as the primary JMS host for the
-instance.
-* Maintains the JMS host list for each instance in the GlassFish cluster
-such that its primary JMS host appears first in its JMS host list.
-
-The JMS service supports the following types of Message Queue broker
-clusters with GlassFish Server clusters, based on the JMS host type:
-
-Embedded::
-  * Conventional broker cluster with master broker (default)
-  * Conventional broker cluster of peer brokers
-Local::
-  * Conventional broker cluster with master broker (default)
-  * Conventional broker cluster of peer brokers
-  * Enhanced broker cluster
-Remote::
-  * Conventional broker cluster with master broker; brokers can differ
-  in number from GlassFish instances and can be located on other hosts
-  * Conventional broker cluster of peer brokers; brokers can differ in
-  number from GlassFish instances and can be located on other hosts
-  * Enhanced broker cluster; brokers can differ in number from GlassFish
-  instances and can be located on other hosts
-
-The following topics provide instructions for configuring broker
-clusters in all these contexts.
-
-[[gktge]][[GSHAG00155]][[to-configure-a-glassfish-cluster-to-use-an-embedded-or-local-conventional-broker-cluster-with-master-broker]]
-
-To Configure a GlassFish Cluster to Use an Embedded or Local
-Conventional Broker Cluster With Master Broker
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `configure-jms-cluster` subcommand in remote `asadmin` mode to
-configure a conventional broker cluster with master broker to service a
-GlassFish Server cluster that uses either Embedded or Local JMS hosts.
-
-Note that this configuration, with Embedded brokers, is the default for
-GlassFish Server clusters.
-
-[[GSHAG431]]
-
-Before You Begin
-
-Perform the following steps after you have created the GlassFish Server
-cluster, but before you have added instances to the cluster or started
-the cluster.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Caution:
-
-Before using this procedure to reconfigure an existing cluster, you must
-follow the special procedures to migrate to another type of broker
-cluster, as described in link:#gktgj[To Migrate Between Types of
-Embedded or Local Conventional Broker Clusters]. Failing to perform
-these special procedures could lead to data loss or corruption and even
-render your setup unusable, depending on the JMS operations performed on
-the existing cluster.
-
-|=======================================================================
-
-
-1.  Ensure that the server is running. +
-Remote `asadmin` subcommands require a running server.
-2.  Configure the GlassFish Server cluster to use a Message Queue
-conventional broker cluster with master broker by using the
-link:../reference-manual/configure-jms-cluster.html#GSRFM00008[`configure-jms-cluster`] subcommand: +
-[source,oac_no_warn]
-----
-> asadmin configure-jms-cluster --clustertype=conventional
---configstoretype=masterbroker glassfish-cluster-name
-----
-
-[[GSHAG432]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help configure-jms-cluster` at the command line.
-
-[[gktfr]][[GSHAG00156]][[to-configure-a-glassfish-cluster-to-use-an-embedded-or-local-conventional-broker-cluster-of-peer-brokers]]
-
-To Configure a GlassFish Cluster to Use an Embedded or Local
-Conventional Broker Cluster of Peer Brokers
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `configure-jms-cluster` subcommand in remote `asadmin` mode to
-configure a conventional broker cluster of peer brokers to service a
-GlassFish Server cluster that uses Embedded or Local JMS hosts.
-
-[[GSHAG433]]
-
-Before You Begin
-
-Perform the following steps after you have created the GlassFish Server
-cluster, but before you have added instances to the cluster or started
-the cluster.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Caution:
-
-Before using this procedure to reconfigure an existing cluster, you must
-follow the special procedures to migrate to another type of broker
-cluster, as described in link:#gktgj[To Migrate Between Types of
-Embedded or Local Conventional Broker Clusters]. Failing to perform
-these special procedures could lead to data loss or corruption and even
-render your setup unusable, depending on the JMS operations performed on
-the existing cluster.
-
-|=======================================================================
-
-
-1.  Ensure that the server is running. +
-Remote `asadmin` subcommands require a running server.
-2.  Create a password file with the entry `AS_ADMIN_JMSDBPASSWORD`
-specifying the password of the database user. +
-For information about password file entries, see the
-link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] help page.
-3.  Place a copy of, or a link to, the database's JDBC driver `.jar`
-file in the appropriate directory, depending on the JMS host type, on
-each host where a GlassFish Server cluster instance is to run:
-* Embedded: as-install-parent`/glassfish/lib/install/applications/jmsra`
-* Local: as-install-parent`/mq/lib/ext`
-4.  Configure the GlassFish Server cluster to use a Message Queue
-conventional broker cluster with master broker by using the
-link:../reference-manual/configure-jms-cluster.html#GSRFM00008[`configure-jms-cluster`] subcommand: +
-[source,oac_no_warn]
-----
-> asadmin --passwordfile password-file configure-jms-cluster --clustertype=conventional
---configstoretype=shareddb --dbvendor database-vendor-name --dbuser database-user-name
---dburl database-url --property list-of-database-specific-properties glassfish-cluster-name
-----
-
-[[GSHAG434]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help configure-jms-cluster` at the command line.
-
-[[gkthc]][[GSHAG00157]][[to-change-the-master-broker-in-an-embedded-or-local-broker-cluster]]
-
-To Change the Master Broker in an Embedded or Local Broker Cluster
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `change-master-broker` subcommand in remote `asadmin` mode to
-change the master broker to a different broker in a conventional broker
-cluster with master broker serving a GlassFish Server cluster that uses
-Embedded or Local JMS hosts.
-
-Follow this procedure, for example, before you remove from a GlassFish
-cluster the instance associated with the current master broker.
-
-[[GSHAG435]]
-
-Before You Begin
-
-Although not an absolute requirement, you should make sure all GlassFish
-instances and Message Queue brokers in the cluster are running before
-using the `change-master-broker` command in order to avoid later
-internal configuration synchronization of any unavailable instance or
-broker.
-
-1.  Ensure that the server is running. +
-Remote `asadmin` subcommands require a running server.
-2.  Change the master broker by using the
-link:../reference-manual/change-master-broker.html#GSRFM00005[`change-master-broker`] subcommand: +
-[source,oac_no_warn]
-----
-> asadmin change-master-broker glassfish-clustered-instance-name
-----
-
-[[GSHAG436]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help change-master-broker` at the command line.
-
-[[gktgj]][[GSHAG00158]][[to-migrate-between-types-of-embedded-or-local-conventional-broker-clusters]]
-
-To Migrate Between Types of Embedded or Local Conventional Broker
-Clusters
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-If the need arises to convert from a conventional broker cluster with
-master broker to a conventional broker cluster of peer brokers, or the
-reverse, follow the instructions in "link:../../openmq/mq-admin-guide/broker-clusters.html#GMADG00563[Managing
-Conventional Clusters]" in Open Message Queue Administration Guide.
-
-[[gktfl]][[GSHAG00159]][[to-configure-a-glassfish-cluster-to-use-a-local-enhanced-broker-cluster]]
-
-To Configure a GlassFish Cluster to Use a Local Enhanced Broker Cluster
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `configure-jms-cluster` subcommand in remote `asadmin` mode to
-configure an enhanced broker cluster to service a GlassFish Server
-cluster that uses Local JMS hosts.
-
-[[GSHAG437]]
-
-Before You Begin
-
-Perform the following steps after you have created the GlassFish Server
-cluster, but before you have added instances to the cluster or started
-the cluster.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Caution:
-
-Before using this procedure to reconfigure an existing cluster, you must
-follow the special procedures to migrate from a conventional broker
-cluster to an enhanced broker cluster, as described in
-"link:../../openmq/mq-admin-guide/broker-clusters.html#GMADG00565[Converting a Conventional Cluster to an Enhanced
-Cluster]" in Open Message Queue Administration Guide. Failing to perform
-these special procedures could lead to data loss or corruption and even
-render your setup unusable, depending on the JMS operations performed on
-the existing cluster.
-
-|=======================================================================
-
-
-1.  Ensure that the server is running. +
-Remote `asadmin` subcommands require a running server.
-2.  Create a password file with the entry `AS_ADMIN_JMSDBPASSWORD`
-specifying the password of the database user. +
-For information about password file entries, see the
-link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] help page.
-3.  Place a copy of, or a link to, the database's JDBC driver `.jar`
-file in the as-install-parent`/mq/lib/ext` directory on each host where
-a GlassFish Server cluster instance is to run.
-4.  Configure the GlassFish Server cluster to use a Message Queue
-enhanced broker cluster by using the
-link:../reference-manual/configure-jms-cluster.html#GSRFM00008[`configure-jms-cluster`] subcommand: +
-[source,oac_no_warn]
-----
-> asadmin --passwordfile password-file configure-jms-cluster --clustertype=enhanced
---configstoretype=shareddb --messagestoretype=jdbc
---dbvendor database-vendor-name --dbuser database-user-name --dburl database-url
---property list-of-database-specific-properties glassfish-cluster-name
-----
-
-[[GSHAG438]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help configure-jms-cluster` at the command line.
-
-[[abdby]][[GSHAG00160]][[to-configure-a-glassfish-cluster-to-use-a-remote-broker-cluster]]
-
-To Configure a GlassFish Cluster to Use a Remote Broker Cluster
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-[[GSHAG439]]
-
-Before You Begin
-
-Perform the following steps after you have:
-
-* Used Message Queue to create a broker cluster.
-* Created the GlassFish Server cluster, but not yet created instances
-for the cluster.
-
-1.  Ensure that the server is running. +
-The remote subcommands used in this procedure require a running server.
-2.  Delete the `default_JMS_host` JMS host by using the
-link:../reference-manual/delete-jms-host.html#GSRFM00091[`delete-jms-host`] subcommand: +
-[source,oac_no_warn]
-----
-> asadmin delete-jms-host --target glassfish-cluster-name default_JMS_host
-----
-3.  Create a JMS host for each broker in the broker cluster by using the
-link:../reference-manual/create-jms-host.html#GSRFM00039[`create-jms-host`] subcommand. +
-For each broker, use an `asadmin create-jms-host` of the form: +
-[source,oac_no_warn]
-----
-> asadmin create-jms-host --target glassfish-cluster-name --mqhost broker-host
---mqport broker-port --mquser mq-user --mqpassword mq-user-password
-jms-host-name-for-broker
-----
-4.  Start the brokers in the cluster by using the Message Queue
-`imqbrokerd` command, as described in "link:../../openmq/mq-admin-guide/broker-clusters.html#GMADG00254[Managing Broker
-Clusters]" in Open Message Queue Administration Guide.
-5.  Create instances in the GlassFish Server cluster, as described in
-link:instances.html#gkqch[To Create an Instance Centrally] and
-link:instances.html#gkqbl[To Create an Instance Locally].
-
-[[abdbv]][[GSHAG00213]][[connection-failover]]
-
-Connection Failover
-~~~~~~~~~~~~~~~~~~~
-
-The use of Message Queue broker clusters provides JMS connection
-failover, including several options that control how connection failures
-are handled.
-
-Use the Administration Console's Java Message Service page to configure
-these options. To display this page, click the configuration for the
-GlassFish cluster or instance in the navigation pane, and then click the
-Java Message Service link on the Configuration page.
-
-The way in which connection failover operates depends on whether the
-broker cluster is configured to be conventional or enhanced:
-
-* In a conventional cluster, when a broker fails, clients may reconnect
-to any other broker in the cluster. The Reconnect field specifies
-whether reconnection should take place, and the Address List Behavior
-and Address List Iterations fields specify how the client chooses what
-broker to fail over to.
-* In an enhanced cluster, when a broker fails, another broker
-automatically takes over its messages and clients. Clients automatically
-fail over to the appropriate broker. The Reconnect, Address List
-Behavior and Address List Iterations fields are ignored.
-
-For more information on connection failover, including how failover on
-conventional clusters differs from failover on enhanced clusters, see
-"link:../../openmq/mq-admin-guide/administered-objects.html#GMADG00087[Automatic Reconnection]" in Open Message Queue
-Administration Guide.
-
-Reconnect::
-  Applies only to conventional clusters. Enables reconnection and
-  connection failover. When disabled, the Java Message Service does not
-  attempt to reconnect if a connection fails.
-Reconnect Interval::
-  Specifies the number of seconds between reconnection attempts. If it
-  is too short, this time interval does not give a broker time to
-  recover. If it is too long, the wait time might represent an
-  unacceptable delay. The default value is 5 seconds.
-Reconnect Attempts::
-  Specifies the number of attempts to connect (or reconnect) to a
-  particular JMS host before trying another host in the JMS host list.
-  The host list is also known as the Address List. Hosts are chosen from
-  the address list either in order or randomly, depending on the setting
-  of Address List Behavior.
-Address List Behavior::
-  For conventional clusters, this field specifies how the Java Message
-  Service selects which JMS host in the JMS hosts list to initially
-  connect to, and if the broker fails, how the Java Message Service
-  selects which JMS host in the JMS hosts list to fail over to. +
-  For enhanced clusters, this field specifies how the Java Message
-  Service selects which JMS host in the JMS hosts list to initially
-  connect to. +
-  When performing initial connection or, for conventional clusters only,
-  when performing failover, then if this attribute is set to Priority,
-  the Java Message Service tries to connect to the first JMS host
-  specified in the JMS hosts list and uses another one only if the first
-  one is not available. If this attribute is set to Random, the Java
-  Message Service selects the JMS host randomly from the JMS hosts list.
-  If that host is not available, another one is chosen randomly. +
-  The default for Embedded and Local JMS host types is Priority, and the
-  default for the Remote JMS host type is Random. +
-  For Embedded and Local JMS host types, the Java Message Service
-  ensures that the Message Queue broker servicing a clustered instance
-  appears first in that instance's JMS host list. +
-  Thus, having Priority as the default Address List Behavior ensures
-  that an application deployed to a clustered instance will always try
-  to create its initial connection to that instance's co-located broker. +
-  If there are many clients attempting a connection using the same
-  connection factory, use the Random setting to prevent them from all
-  attempting to create their initial connection to the same JMS host.
-Address List Iterations::
-  For conventional clusters, this field specifies the number of times
-  the Java Message Service iterates through the JMS hosts list in an
-  effort to establish its initial connection. If the broker fails, this
-  field specifies the number of times the Java Message Service iterates
-  through the JMS hosts list in an effort to fail over to another
-  broker. +
-  For enhanced clusters, this field specifies the number of times the
-  Java Message Service iterates through the JMS hosts list in an effort
-  to establish its initial connection. If the broker fails, this field
-  is not used when performing reconnection.
-
-You can override these settings using JMS connection factory settings.
-For details, see "link:../administration-guide/jms.html#GSADG00598[Administering JMS Connection
-Factories and Destinations]" in GlassFish Server Open Source Edition
-Administration Guide.
-
-[[abdbw]][[GSHAG00214]][[load-balanced-delivery-to-mdbs]]
-
-Load-Balanced Delivery to MDBs
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-When a message-driven bean (MDB) application is deployed to a GlassFish
-cluster, incoming messages are delivered randomly to MDBs without regard
-to the cluster instances in which they are running.
-
-If the MDB is configured to receive messages from a durable or
-non-durable subscription on a topic, then only one MDB instance across
-the whole GlassFish cluster will receive each message.
-
-For more information about these features, see "link:../../openmq/mq-admin-guide/jmsra-properties.html#GMADG00300[About
-Shared Topic Subscriptions for Clustered Containers]" in Open Message
-Queue Administration Guide.
diff --git a/docs/ha-administration-guide/src/main/jbake/content/loe.adoc b/docs/ha-administration-guide/src/main/jbake/content/loe.adoc
deleted file mode 100644
index a3fc408..0000000
--- a/docs/ha-administration-guide/src/main/jbake/content/loe.adoc
+++ /dev/null
@@ -1,131 +0,0 @@
-type=page
-status=published
-title=List of Examples
-next=title.html
-prev=toc.html
-~~~~~~
-List of Examples
-================
-
-[[list-of-examples]]
-List of Examples
-----------------
-
-* link:ssh-setup.html#sthref7[2-1 Creating an Alias for the Windows
-User's Password]
-* link:ssh-setup.html#sthref8[2-2 Testing the Connection Over DCOM to a
-Remote Host]
-* link:ssh-setup.html#gksnj[2-3 Setting the Home Directory for the MKS
-Toolkit User]
-* link:ssh-setup.html#gkspo[2-4 Determining if the sshd Daemon Is Running
-on an Oracle Solaris System]
-* link:ssh-setup.html#gkssf[2-5 Determining if the sshd Daemon Is Running
-on a Linux System]
-* link:ssh-setup.html#gktat[2-6 Setting Up Public Key Authentication
-Without Encryption]
-* link:ssh-setup.html#gktav[2-7 Setting Up Encrypted Public Key
-Authentication]
-* link:ssh-setup.html#gktba[2-8 Creating an Alias for the SSH User's
-Password]
-* link:ssh-setup.html#sthref9[2-9 Copying a GlassFish Server Installation
-to Multiple DCOM-Enabled Hosts]
-* link:ssh-setup.html#sthref10[2-10 Copying a GlassFish Server
-Installation to Multiple SSH-Enabled Hosts]
-* link:ssh-setup.html#sthref11[2-11 Removing GlassFish Server Software
-From Multiple DCO\M-Enabled Hosts]
-* link:ssh-setup.html#sthref12[2-12 Removing GlassFish Server Software
-From Multiple SSH-Enabled Hosts]
-* link:nodes.html#sthref13[3-1 Creating a DCOM Node]
-* link:nodes.html#sthref14[3-2 Listing Basic Information About All DCOM
-Nodes in a Domain]
-* link:nodes.html#sthref15[3-3 Listing Detailed Information About All
-DCOM Nodes in a Domain]
-* link:nodes.html#sthref16[3-4 Testing if a DCOM Node Is Reachable]
-* link:nodes.html#sthref17[3-5 Deleting a DCOM Node]
-* link:nodes.html#gksih[3-6 Creating an SSH Node]
-* link:nodes.html#gkskt[3-7 Listing Basic Information About All SSH Nodes
-in a Domain]
-* link:nodes.html#gkske[3-8 Listing Detailed Information About All SSH
-Nodes in a Domain]
-* link:nodes.html#gkshk[3-9 Testing if an SSH Node Is Reachable]
-* link:nodes.html#gksjg[3-10 Deleting an SSH Node]
-* link:nodes.html#gkshu[3-11 Creating a CONFIG Node]
-* link:nodes.html#gkskp[3-12 Listing Basic Information About All CONFIG
-Nodes in a Domain]
-* link:nodes.html#gksjs[3-13 Listing Detailed Information About All
-CONFIG Nodes in a Domain]
-* link:nodes.html#gksla[3-14 Deleting a CONFIG Node]
-* link:nodes.html#sthref18[3-15 Updating a DCOM Node]
-* link:nodes.html#gkslc[3-16 Updating an SSH Node]
-* link:nodes.html#gkskc[3-17 Updating a CONFIG Node]
-* link:nodes.html#gkshw[3-18 Changing a CONFIG Node to an SSH Node]
-* link:clusters.html#gklgw[4-1 Checking the Health of Instances in a
-Cluster]
-* link:clusters.html#gklhv[4-2 Validating That Multicast Transport Is
-Available for a Cluster]
-* link:clusters.html#sthref19[4-3 Discovering a Cluster When Multiple
-Instances are Running on a Host]
-* link:clusters.html#sthref20[4-4 Discovering a Cluster by Specifying a
-List of IP Addresses]
-* link:clusters.html#sthref21[4-5 Discovering a Cluster by Generating a
-List of Locations of Instances]
-* link:clusters.html#gkqaz[4-6 Creating a Cluster for a Network in Which
-Multicast Transport Is Available]
-* link:clusters.html#gkqiq[4-7 Creating a Cluster and Setting GMS Options
-for a Network in Which Multicast Transport Is Available]
-* link:clusters.html#gksfc[4-8 Listing All Clusters in a Domain]
-* link:clusters.html#gkhsp[4-9 Listing All Clusters That Are Associated
-With a Node]
-* link:clusters.html#gkqkr[4-10 Deleting a Cluster]
-* link:instances.html#gkqmv[5-1 Creating a Clustered Instance Centrally]
-* link:instances.html#gksfe[5-2 Listing Basic Information About All
-GlassFish Server Instances in a Domain]
-* link:instances.html#gkabz[5-3 Listing Detailed Information About All
-GlassFish Server Instances in a Domain]
-* link:instances.html#gkqms[5-4 Deleting an Instance Centrally]
-* link:instances.html#gkqml[5-5 Starting a Cluster]
-* link:instances.html#gkqmn[5-6 Stopping a Cluster]
-* link:instances.html#gkqoa[5-7 Starting an Individual Instance
-Centrally]
-* link:instances.html#gkqpy[5-8 Stopping an Individual Instance
-Centrally]
-* link:instances.html#gkqqt[5-9 Restarting an Individual Instance
-Centrally]
-* link:instances.html#gktfa[5-10 Creating a Clustered Instance Locally
-Without Specifying a Node]
-* link:instances.html#gkqps[5-11 Creating a Clustered Instance Locally]
-* link:instances.html#gkqqu[5-12 Deleting an Instance Locally]
-* link:instances.html#gkqpu[5-13 Starting an Individual Instance Locally]
-* link:instances.html#gkqoo[5-14 Stopping an Individual Instance Locally]
-* link:instances.html#gkqnt[5-15 Restarting an Individual Instance
-Locally]
-* link:instances.html#gksfu[5-16 Resynchronizing an Instance and the DAS
-Online]
-* link:instances.html#gksfr[5-17 Updating the Option for Locating a
-Configuration File]
-* link:instances.html#gksgl[5-18 config-files File]
-* link:instances.html#gksgg[5-19 Resynchronizing an Instance and the DAS
-Offline]
-* link:instances.html#gkmgw[5-20 Migrating an EJB Timer]
-* link:named-configurations.html#gkrhn[6-1 Creating a Named
-Configuration]
-* link:named-configurations.html#gkrhp[6-2 Listing All Named
-Configurations in a Domain]
-* link:named-configurations.html#gkrfz[6-3 Listing the Targets of a Named
-Configuration]
-* link:named-configurations.html#gkrgs[6-4 Deleting a Named
-Configuration]
-* link:named-configurations.html#gkrky[6-5 Modifying a Property of a
-Named Configuration]
-* link:named-configurations.html#gkrma[6-6 Modifying a Port Number for an
-Instance]
-* link:http-load-balancing.html#gktpu[7-1 httpd.conf File for Load
-Balancing]
-* link:http-load-balancing.html#gktpe[7-2 workers.properties File for
-Load Balancing]
-* link:session-persistence-and-failover.html#fxjqx[9-1 Example of an EJB
-Deployment Descriptor With Availability Enabled]
-* link:session-persistence-and-failover.html#fxjqg[9-2 Example of EJB
-Deployment Descriptor Specifying Methods Checkpointing]
-* link:rmi-iiop.html#gfohj[11-1 Setting Load-Balancing Weights for
-RMI-IIOP Weighted Round-Robin Load Balancing]
diff --git a/docs/ha-administration-guide/src/main/jbake/content/named-configurations.adoc b/docs/ha-administration-guide/src/main/jbake/content/named-configurations.adoc
deleted file mode 100644
index 76e8912..0000000
--- a/docs/ha-administration-guide/src/main/jbake/content/named-configurations.adoc
+++ /dev/null
@@ -1,712 +0,0 @@
-type=page
-status=published
-title=Administering Named Configurations
-next=http-load-balancing.html
-prev=instances.html
-~~~~~~
-Administering Named Configurations
-==================================
-
-[[GSHAG00007]][[abdjk]]
-
-
-[[administering-named-configurations]]
-6 Administering Named Configurations
-------------------------------------
-
-A named configuration is a set of configuration information for
-GlassFish Server instances and clusters. A configuration sets port
-numbers for listeners that an instance or a cluster uses and defines
-settings for items such as the EJB container, security, logging, and
-monitoring. Applications and resources are not defined in named
-configurations.
-
-GlassFish Server enables you to create configurations for use by
-clusters and instances. GlassFish Server creates configurations
-automatically for clusters and instances that do not reference an
-existing configuration. You can modify any existing named configuration
-regardless of how the configuration was created.
-
-The following topics are addressed here:
-
-* link:#abdjl[About Named Configurations]
-* link:#abdjq[Creating, Listing, and Deleting Named Configurations]
-* link:#gkrgf[Modifying Properties for Named Configurations and
-Instances]
-
-[[abdjl]][[GSHAG00191]][[about-named-configurations]]
-
-About Named Configurations
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Configurations exist in a domain. Multiple GlassFish Server instances or
-clusters in the domain can reference the same configuration, or they can
-have separate configurations. To ensure that the environment in a
-cluster's instances is homogenous, all instances in the cluster inherit
-the cluster's configuration.
-
-[[abdjm]][[GSHAG00268]][[types-of-named-configurations]]
-
-Types of Named Configurations
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Each named configuration is one of the following types of configuration:
-
-Standalone configuration::
-  A standalone configuration is referenced by only one instance or
-  cluster and is not shared with any other instances or clusters. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-A configuration that is referenced by only one cluster is a standalone
-configuration, even if the cluster contains multiple instances.
-
-|=======================================================================
-
-Shared configuration::
-  A shared configuration is referenced by multiple instances or
-  clusters.
-
-The type of an unclustered instance is determined by the type of the
-configuration that the instance references. For more information, see
-link:instances.html#gkrbn[Types of GlassFish Server Instances].
-
-[[abdjn]][[GSHAG00269]][[the-default-config-configuration]]
-
-The `default-config` Configuration
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The `default-config` configuration is a special configuration that acts
-as a template for creating named configurations. Clusters and instances
-cannot refer to the `default-config` configuration. The `default-config`
-configuration can only be copied to create configurations.
-
-[[abdjo]][[GSHAG00270]][[automatically-created-configurations]]
-
-Automatically Created Configurations
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-When you create a cluster or an instance, you can choose whether to
-specify an existing configuration that the new cluster or instance will
-reference. If you choose to create a cluster or an instance without
-specifying an existing configuration, GlassFish Server automatically
-creates a configuration for the cluster or instance. For more
-information, see the following sections:
-
-* link:clusters.html#gkqdm[To Create a Cluster]
-* link:instances.html#gkqch[To Create an Instance Centrally]
-* link:instances.html#gkqbl[To Create an Instance Locally]
-
-GlassFish Server automatically creates a configuration by copying the
-`default-config` configuration. If you require an instance or cluster to
-reference a copy of a different configuration, copy the configuration
-and specify the copy when you create the instance or cluster. For
-information about how to copy a configuration, see link:#abdjr[To Create
-a Named Configuration].
-
-GlassFish Server assigns the name cluster-or-instance`-config` to an
-automatically created configuration. cluster-or-instance is the name of
-the cluster or instance for which the configuration is created. The
-`server-config` configuration is automatically created for the domain
-administration server (DAS) when the domain is created.
-
-[[gdgca]][[GSHAG00271]][[directory-for-configuration-synchronization]]
-
-Directory for Configuration Synchronization
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-When a named configuration is created, GlassFish Server creates a
-configuration directory on the domain administration server (DAS) at
-domain-dir`/config/`config-name.
-
-domain-dir::
-  The directory in which the domain's configuration is stored.
-config-name::
-  The name that was assigned to the configuration when the configuration
-  was created.
-
-This contents of this directory are synchronized to all instances that
-inherit or reference the configuration.
-
-[[abdjq]][[GSHAG00192]][[creating-listing-and-deleting-named-configurations]]
-
-Creating, Listing, and Deleting Named Configurations
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-GlassFish Server enables you to create configurations for use by
-clusters and instances, obtain information about configurations, and
-delete configurations that are no longer required.
-
-The following topics are addressed here:
-
-* link:#abdjr[To Create a Named Configuration]
-* link:#gkrgg[To List the Named Configurations in a Domain]
-* link:#abdju[To List the Targets of a Named Configuration]
-* link:#abdjv[To Delete a Named Configuration]
-
-[[abdjr]][[GSHAG00128]][[to-create-a-named-configuration]]
-
-To Create a Named Configuration
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `copy-config` subcommand in remote mode to create a named
-configuration by copying an existing configuration.
-
-GlassFish Server requires you to create a configuration by copying a
-configuration because a configuration contains many required settings.
-The newly created configuration is identical to the configuration that
-you copy until you change its configuration settings.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Tip:
-
-Create a named configuration only if you plan to share the configuration
-among multiple unclustered instances or clusters, or if you are using a
-configuration to preconfigure GMS settings. Otherwise, create clusters
-and instances without specifying an existing configuration. If no
-configuration is specified, GlassFish Server creates a copy of the
-default configuration for the cluster or instance.
-
-For more information, see the following sections:
-
-* link:clusters.html#gkoac[To Preconfigure Nondefault GMS Configuration
-Settings]
-* link:clusters.html#gkqdm[To Create a Cluster]
-* link:instances.html#gkqch[To Create an Instance Centrally]
-* link:instances.html#gkqbl[To Create an Instance Locally]
-
-|=======================================================================
-
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  Run the `copy-config` subcommand. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Only the options that are required to complete this task are provided in
-this step. For information about all the options for configuring the
-named configuration, see the link:../reference-manual/copy-config.html#GSRFM00011[`copy-config`(1)] help
-page.
-
-|=======================================================================
-
-[source,oac_no_warn]
-----
-asadmin> copy-config source-config-name destination-config-name
-----
-source-config-name::
-  The name of the configuration that you are copying. You must specify a
-  configuration to copy even if you are copying the default
-  configuration. The configuration must already exist.
-destination-config-name::
-  Your choice of name for the configuration that you are creating by
-  copying the source configuration.
-
-[[GSHAG00059]][[gkrhn]]
-
-
-Example 6-1 Creating a Named Configuration
-
-This example creates the named configuration `clusterpresets-config` by
-copying the default configuration.
-
-[source,oac_no_warn]
-----
-asadmin> copy-config default-config clusterpresets-config
-Command copy-config executed successfully.
-----
-
-[[GSHAG418]]
-
-See Also
-
-* link:clusters.html#gkoac[To Preconfigure Nondefault GMS Configuration
-Settings]
-* link:clusters.html#gkqdm[To Create a Cluster]
-* link:instances.html#gkqch[To Create an Instance Centrally]
-* link:instances.html#gkqbl[To Create an Instance Locally]
-* link:../reference-manual/copy-config.html#GSRFM00011[`copy-config`(1)]
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help copy-config` at the command line.
-
-[[gkrgg]][[GSHAG00129]][[to-list-the-named-configurations-in-a-domain]]
-
-To List the Named Configurations in a Domain
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `list-configs` subcommand in remote mode to list existing named
-configurations in a domain.
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  Run the link:../reference-manual/list-configs.html#GSRFM00156[`list-configs`] subcommand. +
-[source,oac_no_warn]
-----
-asadmin> list-configs
-----
-
-[[GSHAG00060]][[gkrhp]]
-
-
-Example 6-2 Listing All Named Configurations in a Domain
-
-This example lists all named configurations in the current domain.
-
-[source,oac_no_warn]
-----
-asadmin> list-configs
-server-config
-default-config
-ymlcluster-config
-clusterpresets-config
-Command list-configs executed successfully.
-----
-
-[[GSHAG419]]
-
-See Also
-
-link:../reference-manual/list-configs.html#GSRFM00156[`list-configs`(1)]
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-configs` at the command line.
-
-[[abdju]][[GSHAG00130]][[to-list-the-targets-of-a-named-configuration]]
-
-To List the Targets of a Named Configuration
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `list-clusters` subcommand and the `list-instances` subcommand
-in remote mode to list the targets of a named configuration.
-
-The targets of a named configuration are the clusters and GlassFish
-Server instances that reference the configuration.
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  List the clusters that refer to the configuration. +
-[source,oac_no_warn]
-----
-asadmin> list-clusters config-name
-----
-config-name::
-  The name of the configuration whose targets you are listing.
-3.  List the instances that refer to the configuration. +
-[source,oac_no_warn]
-----
-asadmin> list-instances config-name
-----
-config-name::
-  The name of the configuration whose targets you are listing.
-
-[[GSHAG00061]][[gkrfz]]
-
-
-Example 6-3 Listing the Targets of a Named Configuration
-
-This example shows that the cluster `ymlcluster` and the instances
-`yml-i1` and `yml-i2` reference the named configuration
-`ymlcluster-config`.
-
-[source,oac_no_warn]
-----
-asadmin> list-clusters ymlcluster-config
-ymlcluster partially running
-Command list-clusters executed successfully.
-asadmin> list-instances ymlcluster-config
-yml-i1   running
-yml-i2   not running
-Command list-instances executed successfully.
-----
-
-[[GSHAG420]]
-
-See Also
-
-* link:../reference-manual/list-clusters.html#GSRFM00153[`list-clusters`(1)]
-* link:../reference-manual/list-instances.html#GSRFM00170[`list-instances`(1)]
-
-You can also view the full syntax and options of the subcommands by
-typing the following commands at the command line:
-
-* `asadmin help list-clusters`
-* `asadmin help list-instances`
-
-[[abdjv]][[GSHAG00131]][[to-delete-a-named-configuration]]
-
-To Delete a Named Configuration
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `delete-config` subcommand in remote mode to delete an existing
-named configuration from the configuration of the DAS.
-
-You cannot delete the `default-config` configuration.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-A standalone configuration that was created automatically for a cluster
-or a GlassFish Server instance is deleted when the cluster or instance
-is deleted.
-
-|=======================================================================
-
-
-[[GSHAG421]]
-
-Before You Begin
-
-Ensure that no clusters or instances refer to the configuration. If a
-cluster or instance refers to the configuration and is no longer
-required, delete the cluster or instance. For information about how to
-delete an instance and how to delete a cluster, see the following
-sections:
-
-* link:instances.html#gkqcw[To Delete an Instance Centrally]
-* link:instances.html#gkqed[To Delete an Instance Locally]
-* link:clusters.html#gkqcp[To Delete a Cluster]
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  Confirm that no clusters refer to the configuration that you are
-deleting. +
-[source,oac_no_warn]
-----
-asadmin> list-clusters config-name
-----
-config-name::
-  The name of the configuration that you are deleting.
-3.  Confirm that no instances refer to the configuration that you are
-deleting. +
-[source,oac_no_warn]
-----
-asadmin> list-instances config-name
-----
-config-name::
-  The name of the configuration that you are deleting.
-4.  Run the link:../reference-manual/delete-config.html#GSRFM00069[`delete-config`] subcommand. +
-[source,oac_no_warn]
-----
-asadmin> delete-config config-name
-----
-config-name::
-  The name of the configuration that you are deleting.
-
-[[GSHAG00062]][[gkrgs]]
-
-
-Example 6-4 Deleting a Named Configuration
-
-This example confirms that no clusters or instances refer to the
-configuration `clusterpresets-config` and then deletes the
-configuration.
-
-[source,oac_no_warn]
-----
-asadmin> list-clusters clusterpresets-config
-Nothing to list
-Command list-clusters executed successfully.
-asadmin> list-instances clusterpresets-config
-Nothing to list.
-Command list-instances executed successfully.
-asadmin> delete-config clusterpresets-config
-Command delete-config executed successfully.
-----
-
-[[GSHAG422]]
-
-See Also
-
-* link:instances.html#gkqcw[To Delete an Instance Centrally]
-* link:instances.html#gkqed[To Delete an Instance Locally]
-* link:clusters.html#gkqcp[To Delete a Cluster]
-* link:../reference-manual/delete-config.html#GSRFM00069[`delete-config`(1)]
-* link:../reference-manual/list-clusters.html#GSRFM00153[`list-clusters`(1)]
-* link:../reference-manual/list-instances.html#GSRFM00170[`list-instances`(1)]
-
-You can also view the full syntax and options of the subcommands by
-typing the following commands at the command line:
-
-* `asadmin help delete-config`
-* `asadmin help list-clusters`
-* `asadmin help list-instances`
-
-[[gkrgf]][[GSHAG00193]][[modifying-properties-for-named-configurations-and-instances]]
-
-Modifying Properties for Named Configurations and Instances
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The properties in a named configuration define port numbers for
-unclustered instances that reference the configuration or clustered
-instances that inherit the configuration. An instance initially obtains
-port numbers from the configuration that the instance references or
-inherits. To avoid port conflicts, edit the properties of named
-configurations and instances.
-
-The following topics are addressed here:
-
-* link:#gkrls[Properties for Port Numbers in a Named Configuration]
-* link:#fxxvk[To Modify a Named Configuration's Properties]
-* link:#abdjt[To Modify Port Numbers of an Instance]
-
-[[gkrls]][[GSHAG00272]][[properties-for-port-numbers-in-a-named-configuration]]
-
-Properties for Port Numbers in a Named Configuration
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The default configuration `default-config` contains properties that
-define the initial values of port numbers in a configuration that is
-copied from `default-config`. When an instance or a cluster that
-references the configuration is created, these properties are set for
-the instance.
-
-You can create additional system properties for a configuration either
-by specifying the `--systemproperties` option of the
-link:../reference-manual/copy-config.html#GSRFM00011[`copy-config`] subcommand or by using the
-link:../reference-manual/create-system-properties.html#GSRFM00059[`create-system-properties`] subcommand. To reference a
-system property from the configuration, use the `${`prop-name`}`
-notation, where prop-name is the name of the system property.
-
-For example, if a configuration defines additional HTTP listeners, use
-system properties to define the ports for those listeners. However,
-these properties are not set automatically when an instance or a cluster
-that references the configuration is created. You must set these
-properties explicitly when you create the instance or cluster.
-
-The properties in a named configuration that define port numbers are as
-follows:
-
-`ASADMIN_LISTENER_PORT`::
-  This property specifies the port number of the HTTP port or HTTPS port
-  through which the DAS connects to the instance to manage the instance.
-  Valid values are 1-65535. On UNIX, creating sockets that listen on
-  ports 1-1024 requires superuser privileges.
-`HTTP_LISTENER_PORT`::
-  This property specifies the port number of the port that is used to
-  listen for HTTP requests. Valid values are 1-65535. On UNIX, creating
-  sockets that listen on ports 1-1024 requires superuser privileges.
-`HTTP_SSL_LISTENER_PORT`::
-  This property specifies the port number of the port that is used to
-  listen for HTTPS requests. Valid values are 1-65535. On UNIX, creating
-  sockets that listen on ports 1-1024 requires superuser privileges.
-`IIOP_LISTENER_PORT`::
-  This property specifies the port number of the port that is used for
-  IIOP connections. Valid values are 1-65535. On UNIX, creating sockets
-  that listen on ports 1-1024 requires superuser privileges.
-`IIOP_SSL_LISTENER_PORT`::
-  This property specifies the port number of the port that is used for
-  secure IIOP connections. Valid values are 1-65535. On UNIX, creating
-  sockets that listen on ports 1-1024 requires superuser privileges.
-`IIOP_SSL_MUTUALAUTH_PORT`::
-  This property specifies the port number of the port that is used for
-  secure IIOP connections with client authentication. Valid values are
-  1-65535. On UNIX, creating sockets that listen on ports 1-1024
-  requires superuser privileges.
-`JAVA_DEBUGGER_PORT`::
-  This property specifies the port number of the port that is used for
-  connections to the
-  http://java.sun.com/javase/technologies/core/toolsapis/jpda/[Java
-  Platform Debugger Architecture (JPDA)]
-  (`http://java.sun.com/javase/technologies/core/toolsapis/jpda/`)
-  debugger. Valid values are 1-65535. On UNIX, creating sockets that
-  listen on ports 1-1024 requires superuser privileges.
-`JMS_PROVIDER_PORT`::
-  This property specifies the port number for the Java Message Service
-  provider. Valid values are 1-65535. On UNIX, creating sockets that
-  listen on ports 1-1024 requires superuser privileges.
-`JMX_SYSTEM_CONNECTOR_PORT`::
-  This property specifies the port number on which the JMX connector
-  listens. Valid values are 1-65535. On UNIX, creating sockets that
-  listen on ports 1-1024 requires superuser privileges.
-`OSGI_SHELL_TELNET_PORT`::
-  This property specifies the port number of the port that is used for
-  connections to the
-  http://felix.apache.org/site/apache-felix-remote-shell.html[Apache
-  Felix Remote Shell]
-  (`http://felix.apache.org/site/apache-felix-remote-shell.html`). This
-  shell uses the Felix shell service to interact with the OSGi module
-  management subsystem. Valid values are 1-65535. On UNIX, creating
-  sockets that listen on ports 1-1024 requires superuser privileges.
-
-[[fxxvk]][[GSHAG00132]][[to-modify-a-named-configurations-properties]]
-
-To Modify a Named Configuration's Properties
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `get` subcommand and the `set` subcommand in remote mode to
-modify a named configuration's properties.
-
-You might copy a configuration for use by instances that reside on the
-same host as instances that refer to the original configuration. In this
-situation, edit the properties of one of the configurations to ensure
-that instances that will refer to the configuration have the correct
-initial settings.
-
-If you change the port number in a configuration, the port number is
-changed for any instance that references or inherits the configuration.
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  For each property that you are modifying, determine the current
-value and set the new value.
-1.  Determine the current value of the property. +
-[source,oac_no_warn]
-----
-asadmin> get configs.config.config-name.system-property.property-name.value
-----
-config-name::
-  The name of the configuration whose properties you are modifying.
-property-name::
-  The name of the property that you are modifying. For a list of
-  available properties, see link:#gkrls[Properties for Port Numbers in a
-  Named Configuration].
-2.  Set the property to its new value. +
-[source,oac_no_warn]
-----
-asadmin> set
-configs.config.config-name.system-property.property-name.value=new-value
-----
-config-name::
-  The name of the configuration whose properties you are modifying.
-property-name::
-  The name of the property that you are modifying. For a list of
-  available properties, see link:#gkrls[Properties for Port Numbers in a
-  Named Configuration].
-new-value::
-  The value to which you are setting the property.
-
-[[GSHAG00063]][[gkrky]]
-
-
-Example 6-5 Modifying a Property of a Named Configuration
-
-This example changes the value of the `JMS_PROVIDER_PORT` property in
-the `clusterpresets-config` configuration from 27676 to 27678.
-
-[source,oac_no_warn]
-----
-asadmin> get
-configs.config.clusterpresets-config.system-property.JMS_PROVIDER_PORT.value
-configs.config.clusterpresets-config.system-property.JMS_PROVIDER_PORT.value=27676
-Command get executed successfully.
-asadmin> set
-configs.config.clusterpresets-config.system-property.JMS_PROVIDER_PORT.value=27678
-configs.config.clusterpresets-config.system-property.JMS_PROVIDER_PORT.value=27678
-Command set executed successfully.
-----
-
-[[GSHAG423]]
-
-See Also
-
-* link:../reference-manual/get.html#GSRFM00139[`get`(1)]
-* link:../reference-manual/set.html#GSRFM00226[`set`(1)]
-
-You can also view the full syntax and options of the subcommands by
-typing the following commands at the command line:
-
-* `asadmin help get`
-* `asadmin help set`
-
-[[abdjt]][[GSHAG00133]][[to-modify-port-numbers-of-an-instance]]
-
-To Modify Port Numbers of an Instance
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `get` subcommand and the `set` subcommand in remote mode to
-modify the port numbers of an instance.
-
-The port numbers of a instance are initially set in the configuration
-that the instance references or inherits from its parent cluster.
-Multiple instances that reside on the same host must each listen on a
-unique port number. Therefore, if multiple instances that reference or
-inherit the same configuration reside on the same host, a port conflict
-prevents all except one of the instances from starting. To avoid port
-conflicts, modify the port numbers on which individual instances listen.
-
-If you modify an instance's port number and later modify the port number
-in the instance's configuration, the instance's port number remains
-unchanged.
-
-The port numbers of an instance are stored as Java system properties.
-When GlassFish Server is started, it treats these properties in the same
-way as properties that are passed through the `-D` option of the Java
-application launcher.
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  For each port number that you are modifying, determine the current
-value and set the new value.
-1.  Determine the current value of the port number. +
-[source,oac_no_warn]
-----
-asadmin> get
-servers.server.instance-name.system-property.port-property.value
-----
-instance-name::
-  The name of the instance whose port numbers you are modifying.
-port-property::
-  The name of the property that corresponds to the port number that you
-  are modifying. For a list of available properties, see
-  link:#gkrls[Properties for Port Numbers in a Named Configuration].
-2.  Set the port number to its new value. +
-[source,oac_no_warn]
-----
-asadmin> get
-servers.server.instance-name.system-property.port-property.value=new-value
-----
-instance-name::
-  The name of the instance whose port numbers you are modifying.
-port-property::
-  The name of the property that corresponds to the port number that you
-  are modifying. For a list of available properties, see
-  link:#gkrls[Properties for Port Numbers in a Named Configuration].
-new-value::
-  The value to which you are setting the port number.
-
-[[GSHAG00064]][[gkrma]]
-
-
-Example 6-6 Modifying a Port Number for an Instance
-
-This example changes the port number of the HTTP port or the HTTPS port
-for administration of the `pmdsainst` instance from 24849 to 24859.
-
-[source,oac_no_warn]
-----
-asadmin> get
-servers.server.pmdsainst.system-property.ASADMIN_LISTENER_PORT.value
-servers.server.pmdsainst.system-property.ASADMIN_LISTENER_PORT.value=24849
-Command get executed successfully.
-asadmin> set
-servers.server.pmdsainst.system-property.ASADMIN_LISTENER_PORT.value=24859
-servers.server.pmdsainst.system-property.ASADMIN_LISTENER_PORT.value=24859
-Command set executed successfully.
-----
-
-[[GSHAG424]]
-
-See Also
-
-* link:../reference-manual/get.html#GSRFM00139[`get`(1)]
-* link:../reference-manual/set.html#GSRFM00226[`set`(1)]
-
-You can also view the full syntax and options of the subcommands by
-typing the following commands at the command line:
-
-* `asadmin help get`
-* `asadmin help set`
diff --git a/docs/ha-administration-guide/src/main/jbake/content/nodes.adoc b/docs/ha-administration-guide/src/main/jbake/content/nodes.adoc
deleted file mode 100644
index e5c8f7e..0000000
--- a/docs/ha-administration-guide/src/main/jbake/content/nodes.adoc
+++ /dev/null
@@ -1,1321 +0,0 @@
-type=page
-status=published
-title=Administering GlassFish Server Nodes
-next=clusters.html
-prev=ssh-setup.html
-~~~~~~
-Administering GlassFish Server Nodes
-====================================
-
-[[GSHAG00004]][[gkrle]]
-
-
-[[administering-glassfish-server-nodes]]
-3 Administering GlassFish Server Nodes
---------------------------------------
-
-A node represents a host on which the GlassFish Server software is
-installed. A node must exist for every host on which GlassFish Server
-instances reside. A node's configuration contains information about the
-host such as the name of the host and the location where the GlassFish
-Server is installed on the host.
-
-The following topics are addressed here:
-
-* link:#gksgh[Types of GlassFish Server Nodes]
-* link:#CHDBIHFJ[Creating, Listing, Testing, and Deleting `DCOM` Nodes]
-* link:#gkrkn[Creating, Listing, Testing, and Deleting `SSH` Nodes]
-* link:#gkrnp[Creating, Listing, and Deleting `CONFIG` Nodes]
-* link:#gksjd[Updating and Changing the Type of a Node]
-
-[[gksgh]][[GSHAG00179]][[types-of-glassfish-server-nodes]]
-
-Types of GlassFish Server Nodes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Each GlassFish Server node is one of the following types of node:
-
-`DCOM`::
-  A `DCOM` node supports communication over the Distributed Component
-  Object Model (DCOM) remote protocol. The DCOM remote protocol is
-  available only on Windows systems. If DCOM is set up and you plan to
-  administer your GlassFish Server instances centrally, the instances
-  must reside on `DCOM` nodes. +
-  A `DCOM` node's configuration contains the information that is
-  required to connect to the host through DCOM. This information
-  includes, for example, the user name of the Windows user and the port
-  number for DCOM connections to the host.
-`SSH`::
-  An `SSH` node supports communication over secure shell (SSH). If SSH
-  is set up and you plan to administer your GlassFish Server instances
-  centrally, the instances must reside on `SSH` nodes. +
-  An `SSH` node's configuration contains the information that is
-  required to connect to the host through SSH. This information
-  includes, for example, the user name of the SSH user and the port
-  number for SSH connections to the host.
-`CONFIG`::
-  A `CONFIG` node does not support remote communication. If neither DCOM
-  nor SSH is set up and you plan to administer your instances locally,
-  the instances can reside on `CONFIG` nodes. You cannot use `CONFIG`
-  nodes for instances that you plan to administer centrally. +
-  Each domain contains a predefined `CONFIG` node that is named
-  `localhost-`domain, where domain is the name of the domain. On the
-  host where the domain administration server (DAS) is running, this
-  node represents the local host.
-
-[[CHDBIHFJ]][[GSHAG463]][[creating-listing-testing-and-deleting-dcom-nodes]]
-
-Creating, Listing, Testing, and Deleting `DCOM` Nodes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-A `DCOM` node supports communication over DCOM. If DCOM is set up and
-you plan to administer your GlassFish Server instances centrally, the
-instances must reside on `DCOM` nodes. For information about setting up
-DCOM, see link:ssh-setup.html#gkshg[Enabling Centralized Administration
-of GlassFish Server Instances].
-
-GlassFish Server enables you to create `DCOM` nodes for use by
-instances, obtain information about `DCOM` nodes, test if `DCOM` nodes
-are reachable, and delete `DCOM` nodes that are no longer required.
-
-The following topics are addressed here:
-
-* link:#CHDIGBJB[To Create a `DCOM` Node]
-* link:#CHDDCBEG[To List `DCOM` Nodes in a Domain]
-* link:#CHDIFJCC[To Test if a `DCOM` Node is Reachable]
-* link:#CHDCFHBA[To Delete a `DCOM` Node]
-
-[[CHDIGBJB]][[GSHAG464]][[to-create-a-dcom-node]]
-
-To Create a `DCOM` Node
-^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `create-node-dcom` subcommand in remote mode to create a `DCOM`
-node.
-
-[[GSHAG465]]
-
-Before You Begin
-
-Ensure that the Windows user can use DCOM to connect to the host that
-the node will represent. By default, the `create-node-dcom` subcommand
-validates the node's parameters and the DCOM connection to the host. If
-the Windows user cannot use DCOM to connect to the host, the validation
-fails.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-For information about how to determine whether the Windows user can use
-DCOM to connect to the host, see link:ssh-setup.html#CEGJFADH[To Test the
-Connection Over DCOM to a Remote Host].
-
-|=======================================================================
-
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  Run the `create-node-dcom` subcommand. +
-Specify the file that contains the alias for the Windows user's password
-through the `--passwordfile` option of the `asadmin` utility. For more
-information about this file, see link:ssh-setup.html#CEGCDCEF[To Set Up
-Password Authentication for the Windows User]. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Only the options that are required to complete this task are provided in
-this step. For information about all the options for configuring the
-node, see the link:../reference-manual/create-node-dcom.html#GSRFM510[`create-node-dcom`(1)] help page.
-
-|=======================================================================
-
-[source,oac_no_warn]
-----
-C:\> asadmin --passwordfile filename create-node-dcom
---nodehost node-host [--installdir install-dir ]
-node-name
-----
-filname::
-  The name of the file that contains the alias for the Windows user's
-  password.
-node-host::
-  The name of the host that the node represents. The name of the host
-  must be specified. Otherwise, an error occurs.
-install-dir::
-  The full path to the parent of the base installation directory of the
-  GlassFish Server software on the host, for example, `C:\glassfish3`.
-  If the GlassFish Server software is installed in the same directory on
-  the node's host and the DAS host, you can omit this option.
-node-name::
-  Your choice of name for the node that you are creating.
-
-[[GSHAG466]][[sthref13]]
-
-
-Example 3-1 Creating a `DCOM` Node
-
-This example creates the `DCOM` node `wpmdl1` to represent the host
-`wpmdl1.example.com`. The GlassFish Server software is installed in the
-same directory on the DAS host and on the host `wpmdl1.example.com`.
-
-[source,oac_no_warn]
-----
-C:\> asadmin --passwordfile aspwalias.txt create-node-dcom
---nodehost wpmdl1.example.com wpmdl1
-Command create-node-dcom executed successfully.
-----
-
-[[GSHAG467]]
-
-See Also
-
-* link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)]
-* link:../reference-manual/create-node-dcom.html#GSRFM510[`create-node-dcom`(1)]
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-node-dcom` at the command line.
-
-[[GSHAG468]]
-
-Next Steps
-
-After creating a node, you can create instances on the node as explained
-in the following sections:
-
-* link:instances.html#gkqch[To Create an Instance Centrally]
-* link:instances.html#gkqbl[To Create an Instance Locally]
-
-[[CHDDCBEG]][[GSHAG469]][[to-list-dcom-nodes-in-a-domain]]
-
-To List `DCOM` Nodes in a Domain
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `list-nodes-dcom` subcommand in remote mode to obtain
-information about existing `DCOM` nodes in a domain.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-To obtain information about all existing nodes in a domain, use the
-link:../reference-manual/list-nodes.html#GSRFM00187[`list-nodes`] subcommand.
-
-|=======================================================================
-
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  Run the link:../reference-manual/list-nodes-dcom.html#GSRFM693[`list-nodes-dcom`] subcommand. +
-[source,oac_no_warn]
-----
-asadmin> list-nodes-dcom
-----
-
-[[GSHAG470]][[sthref14]]
-
-
-Example 3-2 Listing Basic Information About All `DCOM` Nodes in a Domain
-
-This example lists the name, type, and host of all `DCOM` nodes in the
-current domain.
-
-[source,oac_no_warn]
-----
-asadmin> list-nodes-dcom
-xkyd  DCOM  xkyd.example.com
-wpmdl2  DCOM  wpmdl2.example.com
-wpmdl1  DCOM  wpmdl1.example.com
-Command list-nodes-dcom executed successfully.
-----
-
-[[GSHAG471]][[sthref15]]
-
-
-Example 3-3 Listing Detailed Information About All `DCOM` Nodes in a
-Domain
-
-This example lists detailed information about all `DCOM` nodes in the
-current domain.
-
-[source,oac_no_warn]
-----
-asadmin> list-nodes-dcom --long=true
-NODE NAME    TYPE   NODE HOST            INSTALL DIRECTORY   REFERENCED BY
-xkyd         DCOM   xkyd.example.com     C:\glassfish3
-wpmdl2       DCOM   wpmdl2.example.com   C:\glassfish3       wdi2
-wpmdl1       DCOM   wpmdl1.example.com   C:\glassfish3       wdi1
-Command list-nodes-dcom executed successfully.
-----
-
-[[GSHAG472]]
-
-See Also
-
-* link:../reference-manual/list-nodes.html#GSRFM00187[`list-nodes`(1)]
-* link:../reference-manual/list-nodes-dcom.html#GSRFM693[`list-nodes-dcom`(1)]
-
-You can also view the full syntax and options of the subcommands by
-typing the following commands at the command line:
-
-* `asadmin help list-nodes`
-* `asadmin help list-nodes-dcom`
-
-[[CHDIFJCC]][[GSHAG473]][[to-test-if-a-dcom-node-is-reachable]]
-
-To Test if a `DCOM` Node is Reachable
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `ping-node-dcom` subcommand in remote mode to test if a `DCOM`
-node is reachable.
-
-[[GSHAG474]]
-
-Before You Begin
-
-Ensure that DCOM is configured on the host where the DAS is running and
-on the host that the node represents.
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  Run the `ping-node-dcom` subcommand. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Only the options that are required to complete this task are provided in
-this step. For information about all the options for testing the node,
-see the link:../reference-manual/ping-node-dcom.html#GSRFM728[`ping-node-dcom`(1)] help page.
-
-|=======================================================================
-
-[source,oac_no_warn]
-----
-asadmin> ping-node-dcom node-name
-----
-node-name::
-  The name of the node to test.
-
-[[GSHAG475]][[sthref16]]
-
-
-Example 3-4 Testing if a `DCOM` Node Is Reachable
-
-This example tests if the `DCOM` node `wpmdl2` is reachable.
-
-[source,oac_no_warn]
-----
-asadmin> ping-node-dcom wpmdl2
-Successfully made DCOM connection to node wpmdl2 (wpmdl2.example.com)
-Command ping-node-dcom executed successfully.
-----
-
-[[GSHAG476]]
-
-See Also
-
-link:../reference-manual/ping-node-dcom.html#GSRFM728[`ping-node-dcom`(1)]
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help ping-node-dcom` at the command line.
-
-[[CHDCFHBA]][[GSHAG477]][[to-delete-a-dcom-node]]
-
-To Delete a `DCOM` Node
-^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `delete-node-dcom` subcommand in remote mode to delete a `DCOM`
-node.
-
-Deleting a node removes the node from the configuration of the DAS. The
-node's directories and files are deleted when the last GlassFish Server
-instance that resides on the node is deleted.
-
-[[GSHAG478]]
-
-Before You Begin
-
-Ensure that no GlassFish Server instances reside on the node that you
-are deleting. For information about how to delete an instance, see the
-following sections.
-
-* link:instances.html#gkqcw[To Delete an Instance Centrally]
-* link:instances.html#gkqed[To Delete an Instance Locally]
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  Confirm that no instances reside on the node that you are deleting. +
-[source,oac_no_warn]
-----
-asadmin> list-nodes-dcom --long=true
-----
-3.  Run the olink:GSRFM00100[`delete-node-dcom`] subcommand. +
-[source,oac_no_warn]
-----
-asadmin> delete-node-dcom node-name
-----
-node-name::
-  The name of the node that you are deleting.
-
-[[GSHAG479]][[sthref17]]
-
-
-Example 3-5 Deleting a `DCOM` Node
-
-This example confirms that no instances reside on the `DCOM` node `xkyd`
-and deletes the node `xkyd`.
-
-[source,oac_no_warn]
-----
-asadmin> list-nodes-dcom --long=true
-NODE NAME    TYPE   NODE HOST            INSTALL DIRECTORY   REFERENCED BY
-xkyd         DCOM   xkyd.example.com     C:\glassfish3
-wpmdl2       DCOM   wpmdl2.example.com   C:\glassfish3       wdi2
-wpmdl1       DCOM   wpmdl1.example.com   C:\glassfish3       wdi1
-Command list-nodes-dcom executed successfully.
-asadmin> delete-node-dcom xkyd
-Command delete-node-dcom executed successfully.
-----
-
-[[GSHAG480]]
-
-See Also
-
-* link:instances.html#gkqcw[To Delete an Instance Centrally]
-* link:instances.html#gkqed[To Delete an Instance Locally]
-* link:../reference-manual/delete-node-dcom.html#GSRFM569[`delete-node-dcom`(1)]
-* link:../reference-manual/list-nodes-dcom.html#GSRFM693[`list-nodes-dcom`(1)]
-
-You can also view the full syntax and options of the subcommands by
-typing the following commands at the command line:
-
-* `asadmin help delete-node-dcom`
-* `asadmin help list-nodes-dcom`
-
-[[gkrkn]][[GSHAG00180]][[creating-listing-testing-and-deleting-ssh-nodes]]
-
-Creating, Listing, Testing, and Deleting `SSH` Nodes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-An `SSH` node supports communication over SSH. If SSH is set up and you
-plan to administer your GlassFish Server instances centrally, the
-instances must reside on `SSH` nodes. For information about setting up
-SSH, see link:ssh-setup.html#gkshg[Enabling Centralized Administration of
-GlassFish Server Instances].
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Windows systems also support communications over DCOM as an alternative
-to SSH.
-
-|=======================================================================
-
-
-GlassFish Server enables you to create `SSH` nodes for use by instances,
-obtain information about `SSH` nodes, test if `SSH` nodes are reachable,
-and delete `SSH` nodes that are no longer required.
-
-The following topics are addressed here:
-
-* link:#gkrnf[To Create an `SSH` Node]
-* link:#gkrme[To List `SSH` Nodes in a Domain]
-* link:#gksig[To Test if an `SSH` Node is Reachable]
-* link:#gkrlz[To Delete an `SSH` Node]
-
-[[gkrnf]][[GSHAG00088]][[to-create-an-ssh-node]]
-
-To Create an `SSH` Node
-^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `create-node-ssh` subcommand in remote mode to create an `SSH`
-node.
-
-[[GSHAG347]]
-
-Before You Begin
-
-Ensure that the SSH user can use SSH to log in to the host that the node
-will represent. By default, the `create-node-ssh` subcommand validates
-the node's parameters and the SSH connection to the host. If the SSH
-user cannot use SSH to log in to the host, the validation fails.
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  Run the `create-node-ssh` subcommand. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Only the options that are required to complete this task are provided in
-this step. For information about all the options for configuring the
-node, see the link:../reference-manual/create-node-ssh.html#GSRFM00048[`create-node-ssh`(1)] help page.
-
-If you are using password authentication for the SSH user, you must
-specify a password file through the `--passwordfile` option of the
-link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`] utility. For more information about SSH user
-authentication, see link:ssh-setup.html#gkshh[Setting Up SSH User
-Authentication].
-
-|=======================================================================
-
-[source,oac_no_warn]
-----
-asadmin> create-node-ssh --nodehost node-host [--installdir install-dir ]
-node-name
-----
-node-host::
-  The name of the host that the node represents. The name of the host
-  must be specified. Otherwise, an error occurs.
-install-dir::
-  The full path to the parent of the base installation directory of the
-  GlassFish Server software on the host, for example,
-  `/export/glassfish3/`. If the GlassFish Server software is installed
-  in the same directory on the node's host and the DAS host, you can
-  omit this option.
-node-name::
-  Your choice of name for the node that you are creating.
-
-[[GSHAG00020]][[gksih]]
-
-
-Example 3-6 Creating an `SSH` Node
-
-This example creates the `SSH` node `sj01` to represent the host
-`sj01.example.com`. The GlassFish Server software is installed in the
-same directory on the DAS host and on the host `sj01.example.com`.
-
-[source,oac_no_warn]
-----
-asadmin> create-node-ssh --nodehost sj01.example.com sj01
-Command create-node-ssh executed successfully.
-----
-
-[[GSHAG348]]
-
-Troubleshooting
-
-The `create-node-ssh` subcommand might fail to create the node and
-report the error `Illegal sftp packet len`. If this error occurs, ensure
-that no the startup file on the remote host displays text for
-noninteractive shells. Examples of startup files are `.bashrc`,
-`.cshrc`, `.login`, and `.profile`.
-
-The SSH session interprets any text message that is displayed during
-login as a file-transfer protocol packet. Therefore, any statement in a
-startup file that displays text messages corrupts the SSH session,
-causing this error.
-
-[[GSHAG349]]
-
-See Also
-
-link:../reference-manual/create-node-ssh.html#GSRFM00048[`create-node-ssh`(1)]
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-node-ssh` at the command line.
-
-[[GSHAG350]]
-
-Next Steps
-
-After creating a node, you can create instances on the node as explained
-in the following sections:
-
-* link:instances.html#gkqch[To Create an Instance Centrally]
-* link:instances.html#gkqbl[To Create an Instance Locally]
-
-[[gkrme]][[GSHAG00089]][[to-list-ssh-nodes-in-a-domain]]
-
-To List `SSH` Nodes in a Domain
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `list-nodes-ssh` subcommand in remote mode to obtain information
-about existing `SSH` nodes in a domain.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-To obtain information about all existing nodes in a domain, use the
-link:../reference-manual/list-nodes.html#GSRFM00187[`list-nodes`] subcommand.
-
-|=======================================================================
-
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  Run the link:../reference-manual/list-nodes-ssh.html#GSRFM00189[`list-nodes-ssh`] subcommand. +
-[source,oac_no_warn]
-----
-asadmin> list-nodes-ssh
-----
-
-[[GSHAG00021]][[gkskt]]
-
-
-Example 3-7 Listing Basic Information About All `SSH` Nodes in a Domain
-
-This example lists the name, type, and host of all `SSH` nodes in the
-current domain.
-
-[source,oac_no_warn]
-----
-asadmin> list-nodes-ssh
-sj01  SSH  sj01.example.com
-sj02  SSH  sj02.example.com
-Command list-nodes-ssh executed successfully.
-----
-
-[[GSHAG00022]][[gkske]]
-
-
-Example 3-8 Listing Detailed Information About All `SSH` Nodes in a
-Domain
-
-This example lists detailed information about all `SSH` nodes in the
-current domain.
-
-[source,oac_no_warn]
-----
-asadmin> list-nodes-ssh --long=true
-NODE NAME   TYPE   NODE HOST          INSTALL DIRECTORY    REFERENCED BY
-sj01        SSH    sj01.example.com   /export/glassfish3   pmd-i1
-sj02        SSH    sj02.example.com   /export/glassfish3   pmd-i2
-Command list-nodes-ssh executed successfully.
-----
-
-[[GSHAG351]]
-
-See Also
-
-* link:../reference-manual/list-nodes.html#GSRFM00187[`list-nodes`(1)]
-* link:../reference-manual/list-nodes-ssh.html#GSRFM00189[`list-nodes-ssh`(1)]
-
-You can also view the full syntax and options of the subcommands by
-typing the following commands at the command line:
-
-* `asadmin help list-nodes`
-* `asadmin help list-nodes-ssh`
-
-[[gksig]][[GSHAG00090]][[to-test-if-an-ssh-node-is-reachable]]
-
-To Test if an `SSH` Node is Reachable
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `ping-node-ssh` subcommand in remote mode to test if an `SSH`
-node is reachable.
-
-[[GSHAG352]]
-
-Before You Begin
-
-Ensure that SSH is configured on the host where the DAS is running and
-on the host that the node represents.
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  Run the `ping-node-ssh` subcommand. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Only the options that are required to complete this task are provided in
-this step. For information about all the options for testing the node,
-see the link:../reference-manual/ping-node-ssh.html#GSRFM00215[`ping-node-ssh`(1)] help page.
-
-|=======================================================================
-
-[source,oac_no_warn]
-----
-asadmin> ping-node-ssh node-name
-----
-node-name::
-  The name of the node to test.
-
-[[GSHAG00023]][[gkshk]]
-
-
-Example 3-9 Testing if an `SSH` Node Is Reachable
-
-This example tests if the `SSH` node `sj01` is reachable.
-
-[source,oac_no_warn]
-----
-asadmin> ping-node-ssh sj01
-Successfully made SSH connection to node sj01 (sj01.example.com)
-Command ping-node-ssh executed successfully.
-----
-
-[[GSHAG353]]
-
-See Also
-
-link:../reference-manual/ping-node-ssh.html#GSRFM00215[`ping-node-ssh`(1)]
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help ping-node-ssh` at the command line.
-
-[[gkrlz]][[GSHAG00091]][[to-delete-an-ssh-node]]
-
-To Delete an `SSH` Node
-^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `delete-node-ssh` subcommand in remote mode to delete an `SSH`
-node.
-
-Deleting a node removes the node from the configuration of the DAS. The
-node's directories and files are deleted when the last GlassFish Server
-instance that resides on the node is deleted.
-
-[[GSHAG354]]
-
-Before You Begin
-
-Ensure that no GlassFish Server instances reside on the node that you
-are deleting. For information about how to delete an instance, see the
-following sections.
-
-* link:instances.html#gkqcw[To Delete an Instance Centrally]
-* link:instances.html#gkqed[To Delete an Instance Locally]
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  Confirm that no instances reside on the node that you are deleting. +
-[source,oac_no_warn]
-----
-asadmin> list-nodes-ssh --long=true
-----
-3.  Run the olink:GSRFM00100[`delete-node-ssh`] subcommand. +
-[source,oac_no_warn]
-----
-asadmin> delete-node-ssh node-name
-----
-node-name::
-  The name of the node that you are deleting.
-
-[[GSHAG00024]][[gksjg]]
-
-
-Example 3-10 Deleting an `SSH` Node
-
-This example confirms that no instances reside on the `SSH` node `sj01`
-and deletes the node `sj01`.
-
-[source,oac_no_warn]
-----
-asadmin> list-nodes-ssh --long=true
-NODE NAME   TYPE   NODE HOST          INSTALL DIRECTORY    REFERENCED BY
-sj01        SSH    sj01.example.com   /export/glassfish3
-sj02        SSH    sj02.example.com   /export/glassfish3   pmd-i2
-Command list-nodes-ssh executed successfully.
-asadmin> delete-node-ssh sj01
-Command delete-node-ssh executed successfully.
-----
-
-[[GSHAG355]]
-
-See Also
-
-* link:instances.html#gkqcw[To Delete an Instance Centrally]
-* link:instances.html#gkqed[To Delete an Instance Locally]
-* link:../reference-manual/delete-node-ssh.html#GSRFM00100[`delete-node-ssh`(1)]
-* link:../reference-manual/list-nodes-ssh.html#GSRFM00189[`list-nodes-ssh`(1)]
-
-You can also view the full syntax and options of the subcommands by
-typing the following commands at the command line:
-
-* `asadmin help delete-node-ssh`
-* `asadmin help list-nodes-ssh`
-
-[[gkrnp]][[GSHAG00181]][[creating-listing-and-deleting-config-nodes]]
-
-Creating, Listing, and Deleting `CONFIG` Nodes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-A `CONFIG` node does not support remote communication. If neither DCOM
-nor SSH is set up and you plan to administer your instances locally, the
-instances can reside on `CONFIG` nodes. You cannot use `CONFIG` nodes
-for instances that you plan to administer centrally.
-
-GlassFish Server enables you to create `CONFIG` nodes for use by
-instances, obtain information about `CONFIG` nodes, and delete `CONFIG`
-nodes that are no longer required.
-
-The following topics are addressed here:
-
-* link:#gkrll[To Create a `CONFIG` Node]
-* link:#gkrjr[To List `CONFIG` Nodes in a Domain]
-* link:#gkrms[To Delete a `CONFIG` Node]
-
-[[gkrll]][[GSHAG00092]][[to-create-a-config-node]]
-
-To Create a `CONFIG` Node
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `create-node-config` command in remote mode to create a `CONFIG`
-node.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-If you create an instance locally on a host for which no nodes are
-defined, you can create the instance without creating a node beforehand.
-In this situation, GlassFish Server creates a `CONFIG` node for you. The
-name of the node is the unqualified name of the host. For more
-information, see link:instances.html#gkqbl[To Create an Instance
-Locally].
-
-|=======================================================================
-
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  Run the `create-node-config` subcommand. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Only the options that are required to complete this task are provided in
-this step. For information about all the options for configuring the
-node, see the link:../reference-manual/create-node-config.html#GSRFM00047[`create-node-config`(1)] help page.
-
-|=======================================================================
-
-[source,oac_no_warn]
-----
-asadmin> create-node-config [--nodehost node-host] [--installdir install-dir ]
-node-name
-----
-node-host::
-  The name of the host that the node represents. You may omit this
-  option. The name of the host can be determined when instances that
-  reside on the node are created.
-install-dir::
-  The full path to the parent of the base installation directory of the
-  GlassFish Server software on the host, for example,
-  `/export/glassfish3/`. You may omit this option. The installation
-  directory can be determined when instances that reside on the node are
-  created.
-node-name::
-  Your choice of name for the node that you are creating.
-
-[[GSHAG00025]][[gkshu]]
-
-
-Example 3-11 Creating a `CONFIG` Node
-
-This example creates the `CONFIG` node `cfg01`. The host that the node
-represents and the installation directory of the GlassFish Server
-software on the host are to be determined when instances are added to
-the node.
-
-[source,oac_no_warn]
-----
-asadmin> create-node-config cfg01
-Command create-node-config executed successfully.
-----
-
-[[GSHAG356]]
-
-See Also
-
-link:../reference-manual/create-node-config.html#GSRFM00047[`create-node-config`(1)]
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-node-config` at the command line.
-
-[[GSHAG357]]
-
-Next Steps
-
-After creating a node, you can create instances on the node as explained
-in link:instances.html#gkqbl[To Create an Instance Locally].
-
-[[gkrjr]][[GSHAG00093]][[to-list-config-nodes-in-a-domain]]
-
-To List `CONFIG` Nodes in a Domain
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `list-nodes-config` subcommand in remote mode to obtain
-information about existing `CONFIG` nodes in a domain.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-To obtain information about all existing nodes in a domain, use the
-link:../reference-manual/list-nodes.html#GSRFM00187[`list-nodes`] subcommand.
-
-|=======================================================================
-
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  Run the link:../reference-manual/list-nodes-config.html#GSRFM00188[`list-nodes-config`] subcommand. +
-[source,oac_no_warn]
-----
-asadmin> list-nodes-config
-----
-
-[[GSHAG00026]][[gkskp]]
-
-
-Example 3-12 Listing Basic Information About All `CONFIG` Nodes in a
-Domain
-
-This example lists the name, type, and host of all `CONFIG` nodes in the
-current domain.
-
-[source,oac_no_warn]
-----
-asadmin> list-nodes-config
-localhost-domain1  CONFIG  localhost
-cfg01  CONFIG  cfg01.example.com
-cfg02  CONFIG  cfg02.example.com
-Command list-nodes-config executed successfully.
-----
-
-[[GSHAG00027]][[gksjs]]
-
-
-Example 3-13 Listing Detailed Information About All `CONFIG` Nodes in a
-Domain
-
-This example lists detailed information about all `CONFIG` nodes in the
-current domain.
-
-[source,oac_no_warn]
-----
-asadmin> list-nodes-config --long=true
-NODE NAME           TYPE     NODE HOST            INSTALL DIRECTORY    REFERENCED BY
-localhost-domain1   CONFIG   localhost            /export/glassfish3
-cfg01               CONFIG   cfg01.example.com    /export/glassfish3   yml-i1
-cfg02               CONFIG   cfg02.example.com    /export/glassfish3   yml-i2
-Command list-nodes-config executed successfully.
-----
-
-[[GSHAG358]]
-
-See Also
-
-* link:../reference-manual/list-nodes.html#GSRFM00187[`list-nodes`(1)]
-* link:../reference-manual/list-nodes-config.html#GSRFM00188[`list-nodes-config`(1)]
-
-You can also view the full syntax and options of the subcommands by
-typing the following commands at the command line:
-
-* `asadmin help list-nodes`
-* `asadmin help list-nodes-config`
-
-[[gkrms]][[GSHAG00094]][[to-delete-a-config-node]]
-
-To Delete a `CONFIG` Node
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `delete-node-config` subcommand in remote mode to delete a
-`CONFIG` node.
-
-Deleting a node removes the node from the configuration of the DAS. The
-node's directories and files are deleted when the last GlassFish Server
-instance that resides on the node is deleted.
-
-[[GSHAG359]]
-
-Before You Begin
-
-Ensure that no GlassFish Server instances reside on the node that you
-are deleting. For information about how to delete an instance that
-resides on a `CONFIG` node, see link:instances.html#gkqed[To Delete an
-Instance Locally].
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  Confirm that no instances reside on the node that you are deleting. +
-[source,oac_no_warn]
-----
-asadmin> list-nodes-config --long=true
-----
-3.  Run the olink:GSRFM00099[`delete-node-config`] subcommand. +
-[source,oac_no_warn]
-----
-asadmin> delete-node-config node-name
-----
-node-name::
-  The name of the node that you are deleting.
-
-[[GSHAG00028]][[gksla]]
-
-
-Example 3-14 Deleting a `CONFIG` Node
-
-This example confirms that no instances reside on the `CONFIG` node
-`cfg01` and deletes the node `cfg01`.
-
-[source,oac_no_warn]
-----
-asadmin> list-nodes-config --long=true
-NODE NAME           TYPE     NODE HOST           INSTALL DIRECTORY    REFERENCED BY
-localhost-domain1   CONFIG   localhost           /export/glassfish3
-cfg01               CONFIG   cfg01.example.com   /export/glassfish3
-cfg02               CONFIG   cfg02.example.com   /export/glassfish3   yml-i2
-Command list-nodes-config executed successfully.
-asadmin> delete-node-config cfg01
-Command delete-node-config executed successfully.
-----
-
-[[GSHAG360]]
-
-See Also
-
-* link:instances.html#gkqed[To Delete an Instance Locally]
-* link:../reference-manual/delete-node-config.html#GSRFM00099[`delete-node-config`(1)]
-* link:../reference-manual/list-nodes-config.html#GSRFM00188[`list-nodes-config`(1)]
-
-You can also view the full syntax and options of the subcommands by
-typing the following commands at the command line:
-
-* `asadmin help delete-node-config`
-* `asadmin help list-nodes-config`
-
-[[gksjd]][[GSHAG00182]][[updating-and-changing-the-type-of-a-node]]
-
-Updating and Changing the Type of a Node
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-GlassFish Server enables you to update the configuration data of any
-node and to change the type of a node.
-
-The following topics are addressed here:
-
-* link:#CHDHHAAE[To Update a `DCOM` Node]
-* link:#gksjq[To Update an `SSH` Node]
-* link:#gksjv[To Update a `CONFIG` Node]
-* link:#gkski[To Change the Type of a Node]
-
-[[CHDHHAAE]][[GSHAG481]][[to-update-a-dcom-node]]
-
-To Update a `DCOM` Node
-^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `update-node-dcom` subcommand in remote mode to update a `DCOM`
-node.
-
-Options of this subcommand specify the new values of the node's
-configuration data. If you omit an option, the existing value is
-unchanged.
-
-[[GSHAG482]]
-
-Before You Begin
-
-Ensure that the following prerequisites are met:
-
-* DCOM is configured on the host where the DAS is running and on the
-host that the node represents.
-* The node that you are updating exists.
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  Run the `update-node-dcom` subcommand. +
-[source,oac_no_warn]
-----
-asadmin> update-node-dcom options node-name
-----
-options::
-  Options of the `update-node-dcom` subcommand for changing the node's
-  configuration data. For information about these options, see the
-  link:../reference-manual/update-node-ssh.html#GSRFM789[`update-node-dcom`(1)] help page.
-node-name::
-  The name of the `DCOM` node to update.
-
-[[GSHAG483]][[sthref18]]
-
-
-Example 3-15 Updating a `DCOM` Node
-
-This example updates the host that the node `wpmdl1` represents to
-`wj01`.
-
-[source,oac_no_warn]
-----
-asadmin> update-node-dcom --nodehost wj01 wpmdl1
-Command update-node-dcom executed successfully.
-----
-
-[[GSHAG484]]
-
-See Also
-
-link:../reference-manual/update-node-ssh.html#GSRFM789[`update-node-dcom`(1)]
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help update-node-dcom` at the command line.
-
-[[gksjq]][[GSHAG00095]][[to-update-an-ssh-node]]
-
-To Update an `SSH` Node
-^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `update-node-ssh` subcommand in remote mode to update an `SSH`
-node.
-
-Options of this subcommand specify the new values of the node's
-configuration data. If you omit an option, the existing value is
-unchanged.
-
-[[GSHAG361]]
-
-Before You Begin
-
-Ensure that the following prerequisites are met:
-
-* SSH is configured on the host where the DAS is running and on the host
-that the node represents.
-* The node that you are updating exists.
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  Run the `update-node-ssh` subcommand. +
-[source,oac_no_warn]
-----
-asadmin> update-node-ssh options node-name
-----
-options::
-  Options of the `update-node-ssh` subcommand for changing the node's
-  configuration data. For information about these options, see the
-  link:../reference-manual/update-node-ssh001.html#GSRFM00256[`update-node-ssh`(1)] help page.
-node-name::
-  The name of the `SSH` node to update.
-
-[[GSHAG00029]][[gkslc]]
-
-
-Example 3-16 Updating an `SSH` Node
-
-This example updates the host that the node `sj01` represents to
-`adc01.example.com`.
-
-[source,oac_no_warn]
-----
-asadmin> update-node-ssh --nodehost adc01.example.com sj01
-Command update-node-ssh executed successfully.
-----
-
-[[GSHAG362]]
-
-See Also
-
-link:../reference-manual/update-node-ssh001.html#GSRFM00256[`update-node-ssh`(1)]
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help update-node-ssh` at the command line.
-
-[[gksjv]][[GSHAG00096]][[to-update-a-config-node]]
-
-To Update a `CONFIG` Node
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `update-node-config` subcommand in remote mode to update a
-`CONFIG` node.
-
-Options of this subcommand specify the new values of the node's
-configuration data. If you omit an option, the existing value is
-unchanged.
-
-[[GSHAG363]]
-
-Before You Begin
-
-Ensure that the node that you are updating exists.
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  Run the `update-node-config` subcommand. +
-[source,oac_no_warn]
-----
-asadmin> uupdate-node-config options node-name
-----
-options::
-  Options of the `update-node-config` subcommand for changing the node's
-  configuration data. For information about these options, see the
-  link:../reference-manual/update-node-config.html#GSRFM00255[`update-node-config`(1)] help page.
-node-name::
-  The name of the `CONFIG` node to update.
-
-[[GSHAG00030]][[gkskc]]
-
-
-Example 3-17 Updating a `CONFIG` Node
-
-This example updates the host that the node `cfg02` represents to
-`adc02.example.com`.
-
-[source,oac_no_warn]
-----
-asadmin> update-node-config --nodehost adc02.example.com cfg02
-Command update-node-config executed successfully.
-----
-
-[[GSHAG364]]
-
-See Also
-
-link:../reference-manual/update-node-config.html#GSRFM00255[`update-node-config`(1)]
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help update-node-config` at the command line.
-
-[[gkski]][[GSHAG00097]][[to-change-the-type-of-a-node]]
-
-To Change the Type of a Node
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The subcommands for updating a node can also be used to change the type
-of a node.
-
-Changing the type of a `CONFIG` node enables remote communication for
-the node. The type of the node after the change determines the protocol
-over which the node is enabled for remote communication:
-
-* A `DCOM` node is enabled for communication over DCOM.
-* An `SSH` node is enabled for communication over SSH.
-
-As part of the process of changing the type of a node, you can also
-change other configuration data for the node.
-
-Options of the subcommands for updating a node specify the new values of
-the node's configuration data. For most options, if you omit the option,
-the existing value is unchanged. However, default values are applied in
-the following situations:
-
-* Any of the following options of the `update-node-dcom` subcommand is
-omitted:
-
-** `--windowsuser`
-
-** `--windowsdomain`
-* Any of the following options of the `update-node-ssh` subcommand is
-omitted:
-
-** `--sshport`
-
-** `--sshuser`
-
-** `--sshkeyfile`
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Caution:
-
-Changing a `DCOM` node or an `SSH` node to a `CONFIG` node disables
-remote communication for the node.
-
-|=======================================================================
-
-
-[[GSHAG365]]
-
-Before You Begin
-
-Ensure that the following prerequisites are met:
-
-* SSH or DCOM is configured on the host where the DAS is running and on
-the host that the node represents.
-* The node the type of which you are changing exists.
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  Run the appropriate subcommand for updating a node, depending on the
-type of the node after the change.
-* To change the type of a node to `DCOM`, run the `update-node-dcom`
-subcommand on the node. +
-[source,oac_no_warn]
-----
-asadmin> update-node-dcom [options] config-or-ssh-node-name
-----
-options::
-  Options of the `update-node-dcom` subcommand for changing the node's
-  configuration data. For information about these options, see the
-  link:../reference-manual/update-node-ssh.html#GSRFM789[`update-node-dcom`(1)] help page.
-config-or-ssh-node-name::
-  The name of the `CONFIG` node or the `SSH` node to change.
-* To change the type of a node to `SSH`, run the `update-node-ssh`
-subcommand on the node. +
-[source,oac_no_warn]
-----
-asadmin> update-node-ssh [options] config-or-dcom-node-name
-----
-options::
-  Options of the `update-node-ssh` subcommand for changing the node's
-  configuration data. For information about these options, see the
-  link:../reference-manual/update-node-ssh001.html#GSRFM00256[`update-node-ssh`(1)] help page.
-config-or-dcom-node-name::
-  The name of the `CONFIG` node or the `DCOM` node to change.
-* To change the type of a node to `CONFIG`, run the `update-node-config`
-subcommand on the node. +
-[source,oac_no_warn]
-----
-asadmin> update-node-config [options] dcom-or-ssh-node-name
-----
-options::
-  Options of the `update-node-config` subcommand for changing the node's
-  configuration data. For information about these options, see the
-  link:../reference-manual/update-node-config.html#GSRFM00255[`update-node-config`(1)] help page.
-dcom-or-ssh-node-name::
-  The name of the `DCOM` node or the `SSH` node to change.
-
-[[GSHAG00031]][[gkshw]]
-
-
-Example 3-18 Changing a `CONFIG` Node to an `SSH` Node
-
-This example changes the `CONFIG` node `cfg02` to an `SSH` node.
-
-[source,oac_no_warn]
-----
-asadmin> update-node-ssh cfg02
-Command update-node-ssh executed successfully.
-----
-
-[[GSHAG366]]
-
-See Also
-
-* link:../reference-manual/update-node-config.html#GSRFM00255[`update-node-config`(1)]
-* link:../reference-manual/update-node-ssh.html#GSRFM789[`update-node-dcom`(1)]
-* link:../reference-manual/update-node-ssh001.html#GSRFM00256[`update-node-ssh`(1)]
-
-You can also view the full syntax and options of the subcommand by
-typing the following commands at the command line.
-
-* `asadmin help update-node-config`
-* `asadmin help update-node-dcom`
-* `asadmin help update-node-ssh`
diff --git a/docs/ha-administration-guide/src/main/jbake/content/overview.adoc b/docs/ha-administration-guide/src/main/jbake/content/overview.adoc
deleted file mode 100644
index f74955e..0000000
--- a/docs/ha-administration-guide/src/main/jbake/content/overview.adoc
+++ /dev/null
@@ -1,475 +0,0 @@
-type=page
-status=published
-title=High Availability in GlassFish Server
-next=ssh-setup.html
-prev=preface.html
-~~~~~~
-High Availability in GlassFish Server
-=====================================
-
-[[GSHAG00002]][[abdaq]]
-
-
-[[high-availability-in-glassfish-server]]
-1 High Availability in GlassFish Server
----------------------------------------
-
-This chapter describes the high availability features in Eclipse GlassFish
-Server 5.1.
-
-The following topics are addressed here:
-
-* link:#abdar[Overview of High Availability]
-* link:#gaymr[How GlassFish Server Provides High Availability]
-* link:#gbcot[Recovering from Failures]
-* link:#abdaz[More Information]
-
-[[abdar]][[GSHAG00168]][[overview-of-high-availability]]
-
-Overview of High Availability
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-High availability applications and services provide their functionality
-continuously, regardless of hardware and software failures. To make such
-reliability possible, GlassFish Server provides mechanisms for
-maintaining application state data between clustered GlassFish Server
-instances. Application state data, such as HTTP session data, stateful
-EJB sessions, and dynamic cache information, is replicated in real time
-across server instances. If any one server instance goes down, the
-session state is available to the next failover server, resulting in
-minimum application downtime and enhanced transactional security.
-
-GlassFish Server provides the following high availability features:
-
-* link:#gksdm[Load Balancing With the Apache `mod_jk` or `mod_proxy_ajp`
-Module]
-* link:#gaynn[High Availability Session Persistence]
-* link:#gayna[High Availability Java Message Service]
-* link:#gaymz[RMI-IIOP Load Balancing and Failover]
-
-[[gksdm]][[GSHAG00252]][[load-balancing-with-the-apache-mod_jk-or-mod_proxy_ajp-module]]
-
-Load Balancing With the Apache `mod_jk` or `mod_proxy_ajp` Module
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A common load balancing configuration for GlassFish Server 4.0 is to use
-the Apache HTTP Server as the web server front-end, and the Apache
-`mod_jk` or `mod_proxy_ajp` module as the connector between the web
-server and GlassFish Server. See
-link:http-load-balancing.html#gksdt[Configuring GlassFish Server with
-Apache HTTP Server and `mod_jk`] and
-link:http-load-balancing.html#CHDCCGDC[Configuring GlassFish Server with
-Apache HTTP Server and `mod_proxy_ajp`] for more information.
-
-[[gaynn]][[GSHAG00253]][[high-availability-session-persistence]]
-
-High Availability Session Persistence
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-GlassFish Server provides high availability of HTTP requests and session
-data (both HTTP session data and stateful session bean data).
-
-Java EE applications typically have significant amounts of session state
-data. A web shopping cart is the classic example of a session state.
-Also, an application can cache frequently-needed data in the session
-object. In fact, almost all applications with significant user
-interactions need to maintain session state. Both HTTP sessions and
-stateful session beans (SFSBs) have session state data.
-
-Preserving session state across server failures can be important to end
-users. If the GlassFish Server instance hosting the user session
-experiences a failure, the session state can be recovered, and the
-session can continue without loss of information. High availability is
-implemented in GlassFish Server by means of in-memory session
-replication on GlassFish Server instances running in a cluster.
-
-For more information about in-memory session replication in GlassFish
-Server, see link:#gaymr[How GlassFish Server Provides High
-Availability]. For detailed instructions on configuring high
-availability session persistence, see
-link:session-persistence-and-failover.html#abdkz[Configuring High
-Availability Session Persistence and Failover].
-
-[[gayna]][[GSHAG00254]][[high-availability-java-message-service]]
-
-High Availability Java Message Service
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-GlassFish Server supports the Java Message Service (JMS) API and JMS
-messaging through its built-in jmsra resource adapter communicating with
-Open Message Queue as the JMS provider. This combination is often called
-the JMS Service.
-
-The JMS service makes JMS messaging highly available as follows:
-
-Message Queue Broker Clusters::
-  By default, when a GlassFish cluster is created, the JMS service
-  automatically configures a Message Queue broker cluster to provide JMS
-  messaging services, with one clustered broker assigned to each cluster
-  instance. This automatically created broker cluster is configurable to
-  take advantage of the two types of broker clusters, conventional and
-  enhanced, supported by Message Queue. +
-  Additionally, Message Queue broker clusters created and managed using
-  Message Queue itself can be used as external, or remote, JMS hosts.
-  Using external broker clusters provides additional deployment options,
-  such as deploying Message Queue brokers on different hosts from the
-  GlassFish instances they service, or deploying different numbers of
-  Message Queue brokers and GlassFish instances. +
-  For more information about Message Queue clustering, see
-  link:jms.html#abdbx[Using Message Queue Broker Clusters With GlassFish
-  Server].
-Connection Failover::
-  The use of Message Queue broker clusters allows connection failover in
-  the event of a broker failure. If the primary JMS host (Message Queue
-  broker) in use by a GlassFish instance fails, connections to the
-  failed JMS host will automatically fail over to another host in the
-  JMS host list, allowing messaging operations to continue and
-  maintaining JMS messaging semantics. +
-  For more information about JMS connection failover, see
-  link:jms.html#abdbv[Connection Failover].
-
-[[gaymz]][[GSHAG00255]][[rmi-iiop-load-balancing-and-failover]]
-
-RMI-IIOP Load Balancing and Failover
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-With RMI-IIOP load balancing, IIOP client requests are distributed to
-different server instances or name servers, which spreads the load
-evenly across the cluster, providing scalability. IIOP load balancing
-combined with EJB clustering and availability also provides EJB
-failover.
-
-When a client performs a JNDI lookup for an object, the Naming Service
-essentially binds the request to a particular server instance. From then
-on, all lookup requests made from that client are sent to the same
-server instance, and thus all `EJBHome` objects will be hosted on the
-same target server. Any bean references obtained henceforth are also
-created on the same target host. This effectively provides load
-balancing, since all clients randomize the list of target servers when
-performing JNDI lookups. If the target server instance goes down, the
-lookup or EJB method invocation will failover to another server
-instance.
-
-IIOP Load balancing and failover happens transparently. No special steps
-are needed during application deployment. If the GlassFish Server
-instance on which the application client is deployed participates in a
-cluster, the GlassFish Server finds all currently active IIOP endpoints
-in the cluster automatically. However, a client should have at least two
-endpoints specified for bootstrapping purposes, in case one of the
-endpoints has failed.
-
-For more information on RMI-IIOP load balancing and failover, see
-link:rmi-iiop.html#fxxqs[RMI-IIOP Load Balancing and Failover].
-
-[[gaymr]][[GSHAG00169]][[how-glassfish-server-provides-high-availability]]
-
-How GlassFish Server Provides High Availability
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-GlassFish Server provides high availability through the following
-subcomponents and features:
-
-* link:#gjghv[Storage for Session State Data]
-* link:#abdax[Highly Available Clusters]
-
-[[gjghv]][[GSHAG00256]][[storage-for-session-state-data]]
-
-Storage for Session State Data
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Storing session state data enables the session state to be recovered
-after the failover of a server instance in a cluster. Recovering the
-session state enables the session to continue without loss of
-information. GlassFish Server supports in-memory session replication on
-other servers in the cluster for maintaining HTTP session and stateful
-session bean data.
-
-In-memory session replication is implemented in GlassFish Server 4.0 as
-an OSGi module. Internally, the replication module uses a consistent
-hash algorithm to pick a replica server instance within a cluster of
-instances. This allows the replication module to easily locate the
-replica or replicated data when a container needs to retrieve the data.
-
-The use of in-memory replication requires the Group Management Service
-(GMS) to be enabled. For more information about GMS, see
-link:clusters.html#gjfnl[Group Management Service].
-
-If server instances in a cluster are located on different hosts, ensure
-that the following prerequisites are met:
-
-* To ensure that GMS and in-memory replication function correctly, the
-hosts must be on the same subnet.
-* To ensure that in-memory replication functions correctly, the system
-clocks on all hosts in the cluster must be synchronized as closely as
-possible.
-
-[[abdax]][[GSHAG00257]][[highly-available-clusters]]
-
-Highly Available Clusters
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A highly available cluster integrates a state replication service with
-clusters and load balancer.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-When implementing a highly available cluster, use a load balancer that
-includes session-based stickiness as part of its load-balancing
-algorithm. Otherwise, session data can be misdirected or lost. An
-example of a load balancer that includes session-based stickiness is the
-Loadbalancer Plug-In available in Oracle GlassFish Server.
-
-|=======================================================================
-
-
-[[abday]][[GSHAG00218]][[clusters-instances-sessions-and-load-balancing]]
-
-Clusters, Instances, Sessions, and Load Balancing
-+++++++++++++++++++++++++++++++++++++++++++++++++
-
-Clusters, server instances, load balancers, and sessions are related as
-follows:
-
-* A server instance is not required to be part of a cluster. However, an
-instance that is not part of a cluster cannot take advantage of high
-availability through transfer of session state from one instance to
-other instances.
-* The server instances within a cluster can be hosted on one or multiple
-hosts. You can group server instances across different hosts into a
-cluster.
-* A particular load balancer can forward requests to server instances on
-multiple clusters. You can use this ability of the load balancer to
-perform an online upgrade without loss of service. For more information,
-see link:rolling-upgrade.html#abdin[Upgrading in Multiple Clusters].
-* A single cluster can receive requests from multiple load balancers. If
-a cluster is served by more than one load balancer, you must configure
-the cluster in exactly the same way on each load balancer.
-* Each session is tied to a particular cluster. Therefore, although you
-can deploy an application on multiple clusters, session failover will
-occur only within a single cluster.
-
-The cluster thus acts as a safe boundary for session failover for the
-server instances within the cluster. You can use the load balancer and
-upgrade components within the GlassFish Server without loss of service.
-
-[[gktax]][[GSHAG00219]][[protocols-for-centralized-cluster-administration]]
-
-Protocols for Centralized Cluster Administration
-++++++++++++++++++++++++++++++++++++++++++++++++
-
-GlassFish Server uses the Distributed Component Object Model (DCOM)
-remote protocol or secure shell (SSH) to ensure that clusters that span
-multiple hosts can be administered centrally. To perform administrative
-operations on GlassFish Server instances that are remote from the domain
-administration server (DAS), the DAS must be able to communicate with
-those instances. If an instance is running, the DAS connects to the
-running instance directly. For example, when you deploy an application
-to an instance, the DAS connects to the instance and deploys the
-application to the instance.
-
-However, the DAS cannot connect to an instance to perform operations on
-an instance that is not running, such as creating or starting the
-instance. For these operations, the DAS uses DCOM or SSH to contact a
-remote host and administer instances there. DCOM or SSH provides
-confidentiality and security for data that is exchanged between the DAS
-and remote hosts.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-The use of DCOM or SSH to enable centralized administration of remote
-instances is optional. If the use of DCOM SSH is not feasible in your
-environment, you can administer remote instances locally.
-
-|=======================================================================
-
-
-For more information, see link:ssh-setup.html#gkshg[Enabling Centralized
-Administration of GlassFish Server Instances].
-
-[[gbcot]][[GSHAG00170]][[recovering-from-failures]]
-
-Recovering from Failures
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can use various techniques to manually recover individual
-subcomponents after hardware failures such as disk crashes.
-
-The following topics are addressed here:
-
-* link:#gcmkp[Recovering the Domain Administration Server]
-* link:#gcmkc[Recovering GlassFish Server Instances]
-* link:#gcmjs[Recovering the HTTP Load Balancer and Web Server]
-* link:#gcmjr[Recovering Message Queue]
-
-[[gcmkp]][[GSHAG00258]][[recovering-the-domain-administration-server]]
-
-Recovering the Domain Administration Server
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Loss of the Domain Administration Server (DAS) affects only
-administration. GlassFish Server clusters and standalone instances, and
-the applications deployed to them, continue to run as before, even if
-the DAS is not reachable
-
-Use any of the following methods to recover the DAS:
-
-* Back up the domain periodically, so you have periodic snapshots. After
-a hardware failure, re-create the DAS on a new host, as described in
-"link:../administration-guide/domains.html#GSADG00542[Re-Creating the Domain Administration Server (DAS)]"
-in Eclipse GlassFish Server Administration Guide.
-* Put the domain installation and configuration on a shared and robust
-file system (NFS for example). If the primary DAS host fails, a second
-host is brought up with the same IP address and will take over with
-manual intervention or user supplied automation.
-* Zip the GlassFish Server installation and domain root directory.
-Restore it on the new host, assigning it the same network identity.
-
-[[gcmkc]][[GSHAG00259]][[recovering-glassfish-server-instances]]
-
-Recovering GlassFish Server Instances
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-GlassFish Server provide tools for backing up and restoring GlassFish
-Server instances. For more information, see link:instances.html#gksdy[To
-Resynchronize an Instance and the DAS Offline].
-
-[[gcmjs]][[GSHAG00260]][[recovering-the-http-load-balancer-and-web-server]]
-
-Recovering the HTTP Load Balancer and Web Server
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-There are no explicit commands to back up only a web server
-configuration. Simply zip the web server installation directory. After
-failure, unzip the saved backup on a new host with the same network
-identity. If the new host has a different IP address, update the DNS
-server or the routers.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-This assumes that the web server is either reinstalled or restored from
-an image first.
-
-|=======================================================================
-
-
-The Load Balancer Plug-In (`plugins` directory) and configurations are
-in the web server installation directory, typically `/opt/SUNWwbsvr`.
-The web-install`/`web-instance`/config` directory contains the
-`loadbalancer.xml` file.
-
-[[gcmjr]][[GSHAG00261]][[recovering-message-queue]]
-
-Recovering Message Queue
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-When a Message Queue broker becomes unavailable, the method you use to
-restore the broker to operation depends on the nature of the failure
-that caused the broker to become unavailable:
-
-* Power failure or failure other than disk storage
-* Failure of disk storage
-
-Additionally, the urgency of restoring an unavailable broker to
-operation depends on the type of the broker:
-
-* Standalone Broker. When a standalone broker becomes unavailable, both
-service availability and data availability are interrupted. Restore the
-broker to operation as soon as possible to restore availability.
-* Broker in a Conventional Cluster. When a broker in a conventional
-cluster becomes unavailable, service availability continues to be
-provided by the other brokers in the cluster. However, data availability
-of the persistent data stored by the unavailable broker is interrupted.
-Restore the broker to operation to restore availability of its
-persistent data.
-* Broker in an Enhanced Cluster. When a broker in an enhanced cluster
-becomes unavailable, service availability and data availability continue
-to be provided by the other brokers in the cluster. Restore the broker
-to operation to return the cluster to its previous capacity.
-
-[[glaiv]][[GSHAG00220]][[recovering-from-power-failure-and-failures-other-than-disk-storage]]
-
-Recovering From Power Failure and Failures Other Than Disk Storage
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-When a host is affected by a power failure or failure of a non-disk
-component such as memory, processor or network card, restore Message
-Queue brokers on the affected host by starting the brokers after the
-failure has been remedied.
-
-To start brokers serving as Embedded or Local JMS hosts, start the
-GlassFish instances the brokers are servicing. To start brokers serving
-as Remote JMS hosts, use the `imqbrokerd` Message Queue utility.
-
-[[glaiu]][[GSHAG00221]][[recovering-from-failure-of-disk-storage]]
-
-Recovering from Failure of Disk Storage
-+++++++++++++++++++++++++++++++++++++++
-
-Message Queue uses disk storage for software, configuration files and
-persistent data stores. In a default GlassFish installation, all three
-of these are generally stored on the same disk: the Message Queue
-software in as-install-parent`/mq`, and broker configuration files and
-persistent data stores (except for the persistent data stores of
-enhanced clusters, which are housed in highly available databases) in
-domain-dir`/imq`. If this disk fails, restoring brokers to operation is
-impossible unless you have previously created a backup of these items.
-To create such a backup, use a utility such as `zip`, `gzip` or `tar` to
-create archives of these directories and all their content. When
-creating the backup, you should first quiesce all brokers and physical
-destinations, as described in "link:../../openmq/mq-admin-guide/broker-management.html#GMADG00522[Quiescing a Broker]" and
-"link:../../openmq/mq-admin-guide/message-delivery.html#GMADG00533[Pausing and Resuming a Physical Destination]" in Open
-Message Queue Administration Guide, respectively. Then, after the failed
-disk is replaced and put into service, expand the backup archive into
-the same location.
-
-Restoring the Persistent Data Store From Backup. For many messaging
-applications, restoring a persistent data store from backup does not
-produce the desired results because the backed up store does not
-represent the content of the store when the disk failure occurred. In
-some applications, the persistent data changes rapidly enough to make
-backups obsolete as soon as they are created. To avoid issues in
-restoring a persistent data store, consider using a RAID or SAN data
-storage solution that is fault tolerant, especially for data stores in
-production environments.
-
-[[abdaz]][[GSHAG00171]][[more-information]]
-
-More Information
-~~~~~~~~~~~~~~~~
-
-For information about planning a high-availability deployment, including
-assessing hardware requirements, planning network configuration, and
-selecting a topology, see the link:../deployment-planning-guide/toc.html#GSPLG[GlassFish Server Open Source
-Edition Deployment Planning Guide]. This manual also provides a
-high-level introduction to concepts such as:
-
-* GlassFish Server components such as node agents, domains, and clusters
-* IIOP load balancing in a cluster
-* Message queue failover
-
-For more information about developing applications that take advantage
-of high availability features, see the link:../application-development-guide/toc.html#GSDVG[GlassFish Server Open
-Source Edition Application Development Guide].
-
-For information on how to configure and tune applications and GlassFish
-Server for best performance with high availability, see the
-link:../performance-tuning-guide/toc.html#GSPTG[GlassFish Server Open Source Edition Performance Tuning
-Guide], which discusses topics such as:
-
-* Tuning persistence frequency and persistence scope
-* Checkpointing stateful session beans
-* Configuring the JDBC connection pool
-* Session size
-* Configuring load balancers for best performance
diff --git a/docs/ha-administration-guide/src/main/jbake/content/preface.adoc b/docs/ha-administration-guide/src/main/jbake/content/preface.adoc
deleted file mode 100644
index 920e079..0000000
--- a/docs/ha-administration-guide/src/main/jbake/content/preface.adoc
+++ /dev/null
@@ -1,298 +0,0 @@
-type=page
-status=published
-title=Preface
-next=overview.html
-prev=title.html
-~~~~~~
-Preface
-=======
-
-[[GSHAG00001]][[pref]]
-
-
-[[preface]]
-Preface
--------
-
-[NOTE]
-========================================================================
-
-This documentation is part of the Java Enterprise Edition contribution 
-to the Eclipse Foundation and is not intended for use in relation to 
-Java Enterprise Edition or Orace GlassFish. The documentation is in the 
-process of being revised to reflect the new Jakarta EE branding. 
-Additional changes will be made as requirements and procedures evolve 
-for Jakarta EE. Where applicable, references to Java EE or Java 
-Enterprise Edition should be considered references to Jakarta EE. 
-
-Please see the Title page for additional license information.
-========================================================================
-
-This book describes the high-availability features in GlassFish Server,
-including converged load balancing, HTTP load balancing, clusters,
-session persistence and failover.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-The main thrust of the GlassFish Server Open Source Edition 4.0 release
-is to provide an application server for developers to explore and begin
-exploiting the new and updated technologies in the Java EE 7 platform.
-Thus, the clustering, standalone instance and high availability features
-of GlassFish Server were not a focus of this release. These features are
-included in the release, but they may not function properly with some of
-the new features added in support of the Java EE 7 platform.
-
-|=======================================================================
-
-
-This preface contains information about and conventions for the entire
-GlassFish Server Open Source Edition (GlassFish Server) documentation
-set.
-
-GlassFish Server 4.0 is developed through the GlassFish project
-open-source community at `http://glassfish.java.net/`. The GlassFish
-project provides a structured process for developing the GlassFish
-Server platform that makes the new features of the Java EE platform
-available faster, while maintaining the most important feature of Java
-EE: compatibility. It enables Java developers to access the GlassFish
-Server source code and to contribute to the development of the GlassFish
-Server. The GlassFish project is designed to encourage communication
-between Oracle engineers and the community.
-
-[[GSHAG00163]][[gksfg]]
-
-
-[[oracle-glassfish-server-documentation-set]]
-Oracle GlassFish Server Documentation Set
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The GlassFish Server documentation set describes deployment planning and
-system installation. For an introduction to GlassFish Server, refer to
-the books in the order in which they are listed in the following table.
-
-[width="100%",cols="<30%,<70%",options="header",]
-|=======================================================================
-|Book Title |Description
-|link:../release-notes/toc.html#GSRLN[Release Notes] |Provides late-breaking information about
-the software and the documentation and includes a comprehensive,
-table-based summary of the supported hardware, operating system, Java
-Development Kit (JDK), and database drivers.
-
-|link:../quick-start-guide/toc.html#GSQSG[Quick Start Guide] |Explains how to get started with the
-GlassFish Server product.
-
-|link:../installation-guide/toc.html#GSING[Installation Guide] |Explains how to install the software
-and its components.
-
-|link:../upgrade-guide/toc.html#GSUPG[Upgrade Guide] |Explains how to upgrade to the latest
-version of GlassFish Server. This guide also describes differences
-between adjacent product releases and configuration options that can
-result in incompatibility with the product specifications.
-
-|link:../deployment-planning-guide/toc.html#GSPLG[Deployment Planning Guide] |Explains how to build a
-production deployment of GlassFish Server that meets the requirements of
-your system and enterprise.
-
-|link:../administration-guide/toc.html#GSADG[Administration Guide] |Explains how to configure, monitor,
-and manage GlassFish Server subsystems and components from the command
-line by using the link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`] utility. Instructions for
-performing these tasks from the Administration Console are provided in
-the Administration Console online help.
-
-|link:../security-guide/toc.html#GSSCG[Security Guide] |Provides instructions for configuring and
-administering GlassFish Server security.
-
-|link:../application-deployment-guide/toc.html#GSDPG[Application Deployment Guide] |Explains how to assemble and
-deploy applications to the GlassFish Server and provides information
-about deployment descriptors.
-
-|link:../application-development-guide/toc.html#GSDVG[Application Development Guide] |Explains how to create and
-implement Java Platform, Enterprise Edition (Java EE platform)
-applications that are intended to run on the GlassFish Server. These
-applications follow the open Java standards model for Java EE components
-and application programmer interfaces (APIs). This guide provides
-information about developer tools, security, and debugging.
-
-|link:../embedded-server-guide/toc.html#GSESG[Embedded Server Guide] |Explains how to run applications in
-embedded GlassFish Server and to develop applications in which GlassFish
-Server is embedded.
-
-|link:../ha-administration-guide/toc.html#GSHAG[High Availability Administration Guide] |Explains how to
-configure GlassFish Server to provide higher availability and
-scalability through failover and load balancing.
-
-|link:../performance-tuning-guide/toc.html#GSPTG[Performance Tuning Guide] |Explains how to optimize the
-performance of GlassFish Server.
-
-|link:../troubleshooting-guide/toc.html#GSTSG[Troubleshooting Guide] |Describes common problems that you
-might encounter when using GlassFish Server and explains how to solve
-them.
-
-|link:../error-messages-reference/toc.html#GSEMR[Error Message Reference] |Describes error messages that you
-might encounter when using GlassFish Server.
-
-|link:../reference-manual/toc.html#GSRFM[Reference Manual] |Provides reference information in man
-page format for GlassFish Server administration commands, utility
-commands, and related concepts.
-
-|link:../../openmq/mq-release-notes/toc.html#GMRLN[Message Queue Release Notes] |Describes new features,
-compatibility issues, and existing bugs for Open Message Queue.
-
-|link:../../openmq/mq-tech-over/toc.html#GMTOV[Message Queue Technical Overview] |Provides an introduction
-to the technology, concepts, architecture, capabilities, and features of
-the Message Queue messaging service.
-
-|link:../../openmq/mq-admin-guide/toc.html#GMADG[Message Queue Administration Guide] |Explains how to set up
-and manage a Message Queue messaging system.
-
-|link:../../openmq/mq-dev-guide-jmx/toc.html#GMJMG[Message Queue Developer's Guide for JMX Clients] |Describes
-the application programming interface in Message Queue for
-programmatically configuring and monitoring Message Queue resources in
-conformance with the Java Management Extensions (JMX).
-
-|link:../../openmq/mq-dev-guide-java/toc.html#GMJVG[Message Queue Developer's Guide for Java Clients] |Provides
-information about concepts and procedures for developing Java messaging
-applications (Java clients) that work with GlassFish Server.
-
-|link:../../openmq/mq-dev-guide-c/toc.html#GMCCG[Message Queue Developer's Guide for C Clients] |Provides
-programming and reference information for developers working with
-Message Queue who want to use the C language binding to the Message
-Queue messaging service to send, receive, and process Message Queue
-messages.
-|=======================================================================
-
-
-[[GSHAG00165]][[fwbkx]]
-
-
-[[typographic-conventions]]
-Typographic Conventions
-~~~~~~~~~~~~~~~~~~~~~~~
-
-The following table describes the typographic changes that are used in
-this book.
-
-[width="100%",cols="<14%,<37%,<49%",options="header",]
-|=======================================================================
-|Typeface |Meaning |Example
-|`AaBbCc123` |The names of commands, files, and directories, and
-onscreen computer output a|
-Edit your `.login` file.
-
-Use `ls` `a` to list all files.
-
-`machine_name% you have mail.`
-
-|`AaBbCc123` |What you type, contrasted with onscreen computer output a|
-`machine_name%` `su`
-
-`Password:`
-
-|AaBbCc123 |A placeholder to be replaced with a real name or value |The
-command to remove a file is `rm` filename.
-
-|AaBbCc123 |Book titles, new terms, and terms to be emphasized (note
-that some emphasized items appear bold online) a|
-Read Chapter 6 in the User's Guide.
-
-A cache is a copy that is stored locally.
-
-Do not save the file.
-
-|=======================================================================
-
-
-[[GSHAG00166]][[fquvc]]
-
-
-[[symbol-conventions]]
-Symbol Conventions
-~~~~~~~~~~~~~~~~~~
-
-The following table explains symbols that might be used in this book.
-
-[width="100%",cols="<10%,<26%,<28%,<36%",options="header",]
-|=======================================================================
-|Symbol |Description |Example |Meaning
-|`[ ]` |Contains optional arguments and command options. |`ls [-l]` |The
-`-l` option is not required.
-
-|`{ \| }` |Contains a set of choices for a required command option.
-|`-d {y\|n}` |The `-d` option requires that you use either the `y`
-argument or the `n` argument.
-
-|`${ }` |Indicates a variable reference. |`${com.sun.javaRoot}`
-|References the value of the `com.sun.javaRoot` variable.
-
-|- |Joins simultaneous multiple keystrokes. |Control-A |Press the
-Control key while you press the A key.
-
-|+ + |Joins consecutive multiple keystrokes. |Ctrl+A+N |Press the
-Control key, release it, and then press the subsequent keys.
-
-|> |Indicates menu item selection in a graphical user interface. |File >
-New > Templates |From the File menu, choose New. From the New submenu,
-choose Templates.
-|=======================================================================
-
-
-[[GSHAG00164]][[ghpfg]]
-
-
-[[default-paths-and-file-names]]
-Default Paths and File Names
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following table describes the default paths and file names that are
-used in this book.
-
-[width="100%",cols="<14%,<34%,<52%",options="header",]
-|=======================================================================
-|Placeholder |Description |Default Value
-|as-install + a|
-Represents the base installation directory for GlassFish Server.
-
-In configuration files, as-install is represented as follows:
-
-`${com.sun.aas.installRoot}`
-
- a|
-Installations on the Oracle Solaris operating system, Linux operating
-system, and Mac OS operating system:
-
-user's-home-directory`/glassfish3/glassfish`
-
-Installations on the Windows operating system:
-
-SystemDrive`:\glassfish3\glassfish`
-
-|as-install-parent + |Represents the parent of the base installation
-directory for GlassFish Server. a|
-Installations on the Oracle Solaris operating system, Linux operating
-system, and Mac operating system:
-
-user's-home-directory`/glassfish3`
-
-Installations on the Windows operating system:
-
-SystemDrive`:\glassfish3`
-
-|domain-root-dir + |Represents the directory in which a domain is
-created by default. |as-install`/domains/`
-
-|domain-dir + a|
-Represents the directory in which a domain's configuration is stored.
-
-In configuration files, domain-dir is represented as follows:
-
-`${com.sun.aas.instanceRoot}`
-
- |domain-root-dir`/`domain-name
-
-|instance-dir + |Represents the directory for a server instance.
-|domain-dir`/`instance-name
-|=======================================================================
diff --git a/docs/ha-administration-guide/src/main/jbake/content/rmi-iiop.adoc b/docs/ha-administration-guide/src/main/jbake/content/rmi-iiop.adoc
deleted file mode 100644
index c79e18b..0000000
--- a/docs/ha-administration-guide/src/main/jbake/content/rmi-iiop.adoc
+++ /dev/null
@@ -1,490 +0,0 @@
-type=page
-status=published
-title=RMI-IIOP Load Balancing and Failover
-prev=jms.html
-~~~~~~
-RMI-IIOP Load Balancing and Failover
-====================================
-
-[[GSHAG00013]][[fxxqs]]
-
-
-[[rmi-iiop-load-balancing-and-failover]]
-11 RMI-IIOP Load Balancing and Failover
----------------------------------------
-
-This chapter describes using high-availability features for remote EJB
-references and JNDI objects over RMI-IIOP in GlassFish Server.
-
-* link:#abdbe[Overview]
-* link:#gknqo[`InitialContext` Load Balancing]
-* link:#gknpv[Per-Request Load Balancing (PRLB)]
-
-[[abdbe]][[GSHAG00215]][[overview]]
-
-Overview
-~~~~~~~~
-
-With RMI-IIOP load balancing, IIOP client requests are distributed to
-different server instances or name servers. The goal is to spread the
-load evenly across the cluster, thus providing scalability. IIOP load
-balancing combined with EJB clustering and availability also provides
-EJB failover.
-
-The following topics are addressed here:
-
-* link:#abdbf[General Requirements for Configuring Load Balancing]
-* link:#gknpk[Load Balancing Models]
-
-[[abdbf]][[GSHAG00313]][[general-requirements-for-configuring-load-balancing]]
-
-General Requirements for Configuring Load Balancing
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Oracle GlassFish Server provides high availability of remote EJB
-references and `NameService` objects over RMI-IIOP, provided all the
-following apply:
-
-* Your deployment has a cluster of at least two instances.
-* Java EE applications are deployed to all instances and clusters that
-participate in load balancing.
-* RMI-IIOP client applications are enabled for load balancing.
-
-GlassFish Server supports load balancing for Java applications executing
-in the Application Client Container (ACC). See link:#abdbd[Enabling
-RMI-IIOP Hardware Load Balancing and Failover].
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-GlassFish Server does not support RMI-IIOP load balancing and failover
-over secure sockets layer (SSL).
-
-|=======================================================================
-
-
-[[gknpk]][[GSHAG00314]][[load-balancing-models]]
-
-Load Balancing Models
-^^^^^^^^^^^^^^^^^^^^^
-
-GlassFish Server supports two general models for load balancing:
-
-link:#gknqo[`InitialContext` Load Balancing]::
-  When a client performs a JNDI lookup for an object, the Naming Service
-  creates a `InitialContext` (IC) object associated with a particular
-  server instance. From then on, all lookup requests made using that IC
-  object are sent to the same server instance. `InitialContext` load
-  balancing can be configured automatically across an entire cluster.
-link:#gknpv[Per-Request Load Balancing (PRLB)]::
-  Per Request Load Balancing (PRLB) is a method for load balancing
-  stateless EJBs that enables load-balancing for each request to an EJB
-  instance. PRLB chooses the first node in a cluster to use on each
-  request. PRLB is configured on a per-EJB basis.
-
-[[gknqo]][[GSHAG00216]][[initialcontext-load-balancing]]
-
-`InitialContext` Load Balancing
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following topics are addressed here:
-
-* link:#gknpn[`InitialContext` Summary]
-* link:#abdbg[`InitialContext` Algorithm]
-* link:#abdbd[Enabling RMI-IIOP Hardware Load Balancing and Failover]
-
-[[gknpn]][[GSHAG00315]][[initialcontext-summary]]
-
-`InitialContext` Summary
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-When `InitialContext` load balancing is used, the client calls the
-`InitialContext()` method to create a new `InitialContext` (IC) object
-that is associated with a particular server instance. JNDI lookups are
-then performed on that IC object, and all lookup requests made using
-that IC object are sent to the same server instance. All `EJBHome`
-objects looked up with that `InitialContext` are hosted on the same
-target server. Any bean references obtained henceforth are also created
-on the same target host. This effectively provides load balancing, since
-all clients randomize the list of live target servers when creating
-`InitialContext` objects. If the target server instance goes down, the
-lookup or EJB method invocation will failover to another server
-instance. All objects derived from same `InitialContext` will failover
-to the same server instance.
-
-IIOP load balancing and failover happens transparently. No special steps
-are needed during application deployment. IIOP load balancing and
-failover for the GlassFish Server supports dynamically reconfigured
-clusters. If the GlassFish Server instance on which the application
-client is deployed participates in a cluster, the GlassFish Server finds
-all currently active IIOP endpoints in the cluster automatically.
-Therefore, you are not required to manually update the list of endpoints
-if a new instance is added to the cluster or deleted from the cluster.
-However, a client should have at least two endpoints specified for
-bootstrapping purposes, in case one of the endpoints has failed.
-
-[[abdbg]][[GSHAG00316]][[initialcontext-algorithm]]
-
-`InitialContext` Algorithm
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-GlassFish Server uses a randomization and round-robin algorithm for
-RMI-IIOP load balancing and failover.
-
-When an RMI-IIOP client first creates a new `InitialContext` object, the
-list of available GlassFish Server IIOP endpoints is randomized for that
-client. For that `InitialContext` object, the load balancer directs
-lookup requests and other `InitialContext` operations to an endpoint on
-the randomized list. If that endpoint is not available then a different
-random endpoint in the list is used.
-
-Each time the client subsequently creates a new `InitialContext` object,
-the endpoint list is rotated so that a different IIOP endpoint is used
-for `InitialContext` operations. The rotation is randomized, so the
-rotation is not to the next endpoint in the list, but instead to a
-random endpoint in the list.
-
-When you obtain or create beans from references obtained by an
-`InitialContext` object, those beans are created on the GlassFish Server
-instance serving the IIOP endpoint assigned to the `InitialContext`
-object. The references to those beans contain the IIOP endpoint
-addresses of all GlassFish Server instances in the cluster.
-
-The primary endpoint is the bean endpoint corresponding to the
-`InitialContext` endpoint used to look up or create the bean. The other
-IIOP endpoints in the cluster are designated as alternate endpoints. If
-the bean's primary endpoint becomes unavailable, further requests on
-that bean fail over to one of the alternate endpoints.
-
-You can configure RMI-IIOP load balancing and failover to work with
-applications running in the ACC.
-
-[[abdbd]][[GSHAG00317]][[enabling-rmi-iiop-hardware-load-balancing-and-failover]]
-
-Enabling RMI-IIOP Hardware Load Balancing and Failover
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can enable RMI-IIOP load balancing and failover for applications
-running in the application client container (ACC). Weighted round-robin
-load balancing is also supported.
-
-[[abdbi]][[GSHAG00161]][[to-enable-rmi-iiop-hardware-load-balancing-for-the-application-client-container]]
-
-To Enable RMI-IIOP Hardware Load Balancing for the Application Client Container
-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-This procedure provides an overview of the steps necessary to enable
-RMI-IIOP load balancing and failover with the application client
-container (ACC). For additional information on the ACC, see
-"link:../application-development-guide/java-clients.html#GSDVG00160[Developing Clients Using the ACC]" in GlassFish Server
-Open Source Edition Application Development Guide.
-
-[[GSHAG440]]
-
-Before You Begin
-
-The first five steps in this procedure are only necessary if you are
-enabling RMI-IIOP load balancing on a system other than the DAS. This is
-common in production environment, but less common in a development
-environment. For example, a developer who wants to experiment with a
-cluster and load balancing might create two instances on the same system
-on which the DAS is running. In such cases, these steps are unnecessary.
-
-1.  Go to the install_dir `/bin` directory.
-2.  Run `package-appclient`. +
-This utility produces an `appclient.jar` file. For more information on
-`package-appclient`, see link:../reference-manual/package-appclient.html#GSRFM00264[`package-appclient`(1M)].
-3.  Copy the `appclient.jar` file to the machine where you want your
-client and extract it.
-4.  Edit the `asenv.conf` or `asenv.bat` path variables to refer to the
-correct directory values on that machine. +
-The file is at appclient-install-dir `/config/`. +
-For a list of the path variables to update, see
-link:../reference-manual/package-appclient.html#GSRFM00264[`package-appclient`(1M)].
-5.  If required, make the `appclient` script executable. +
-For example, on UNIX use `chmod 700`.
-6.  [[gevjb]]
-Find the IIOP listener port number for at least two instances in the
-cluster.
-
-You specify the IIOP listeners as endpoints in link:#gevkc[Add at least
-two `target-server` elements in the `sun-acc.xml` file.].
-
-For each instance, obtain the IIOP listener ports as follows:
-
-1.  Verify that the instances for which you want to determine the IIOP
-listener port numbers are running. +
-[source,oac_no_warn]
-----
-asadmin> list-instances
-----
-A list of instances and their status (running, not running) is
-displayed. +
-The instances for which you want to display the IIOP listener ports must
-be running.
-2.  For each instance, enter the following command to list the various
-port numbers used by the instance. +
-[source,oac_no_warn]
-----
-asadmin> get servers.server.instance-name.system-property.*.value
-----
-For example, for an instance name `in1`, you would enter the following
-command: +
-[source,oac_no_warn]
-----
-asadmin> get servers.server.in1.system-property.*.value
-----
-7.  [[gevkc]]
-Add at least two `target-server` elements in the `sun-acc.xml` file.
-
-Use the endpoints that you obtained in link:#gevjb[Find the IIOP
-listener port number for at least two instances in the cluster.].
-
-If the GlassFish Server instance on which the application client is
-deployed participates in a cluster, the ACC finds all currently active
-IIOP endpoints in the cluster automatically. However, a client should
-have at least two endpoints specified for bootstrapping purposes, in
-case one of the endpoints has failed.
-
-The `target-server` element specifies one or more IIOP endpoints used
-for load balancing. The `address` attribute is an IPv4 address or host
-name, and the `port` attribute specifies the port number. See
-"link:../application-deployment-guide/dd-elements.html#GSDPG00111[client-container]" in GlassFish Server Open Source
-Edition Application Deployment Guide.
-
-As an alternative to using `target-server` elements, you can use the
-`endpoints` property as follows:
-
-[source,oac_no_warn]
-----
-jvmarg value = "-Dcom.sun.appserv.iiop.endpoints=host1:port1,host2:port2,..."
-----
-8.  If you require weighted round-robin load balancing, perform the
-following steps:
-1.  Set the load-balancing weight of each server instance. +
-[source,oac_no_warn]
-----
-asadmin set instance-name.lb-weight=weight
-----
-2.  In the `sun-acc.xml`, set the
-`com.sun.appserv.iiop.loadbalancingpolicy` property of the ACC to
-`ic-based-weighted`. +
-[source,oac_no_warn]
-----
-…
-<client-container send-password="true">
-  <property name="com.sun.appserv.iiop.loadbalancingpolicy" \
-     value="ic-based-weighed"/>
-…
-----
-9.  Deploy your client application with the `--retrieve` option to get
-the client jar file. +
-Keep the client jar file on the client machine. +
-For example: +
-[source,oac_no_warn]
-----
-asadmin  --user admin --passwordfile pw.txt deploy --target cluster1 \
---retrieve my_dir myapp.ear
-----
-10. Run the application client as follows: +
-[source,oac_no_warn]
-----
-appclient --client my_dir/myapp.jar
-----
-
-[[GSHAG00070]][[gfohj]]
-
-
-Example 11-1 Setting Load-Balancing Weights for RMI-IIOP Weighted
-Round-Robin Load Balancing
-
-In this example, the load-balancing weights in a cluster of three
-instances are to be set as shown in the following table.
-
-[width="100%",cols="<44%,<56%",options="header",]
-|====================================
-|Instance Name |Load-Balancing Weight
-|`i1` |100
-|`i2` |200
-|`i3` |300
-|====================================
-
-
-The sequence of commands to set these load balancing weights is as
-follows:
-
-[source,oac_no_warn]
-----
-asadmin set i1.lb-weight=100
-asadmin set i2.lb-weight=200
-asadmin set i3.lb-weight=300
-----
-
-[[GSHAG441]]
-
-Next Steps
-
-To test failover, stop one instance in the cluster and see that the
-application functions normally. You can also have breakpoints (or
-sleeps) in your client application.
-
-To test load balancing, use multiple clients and see how the load gets
-distributed among all endpoints.
-
-[[GSHAG442]]
-
-See Also
-
-See link:session-persistence-and-failover.html#abdle[Enabling the High
-Availability Session Persistence Service] for instructions on enabling
-the session availability service for a cluster or for a Web, EJB, or JMS
-container running in a cluster.
-
-[[gknpv]][[GSHAG00217]][[per-request-load-balancing-prlb]]
-
-Per-Request Load Balancing (PRLB)
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following topics are addressed here:
-
-* link:#gksgt[PRLB Summary]
-* link:#gksgy[Enabling Per-Request Load Balancing]
-
-[[gksgt]][[GSHAG00318]][[prlb-summary]]
-
-PRLB Summary
-^^^^^^^^^^^^
-
-Per Request Load Balancing (PRLB) is a method for load balancing
-stateless EJBs that enables load-balancing for each request to an EJB
-instance. PRLB chooses the first node in a cluster to use on each
-request. By contrast, `InitialContext` (hardware) load balancing chooses
-the first node to use when the `InitialContext` is created, and each
-request thereafter uses the same node unless a failure occurred.
-
-PRLB is enabled by means of the boolean `per-request-load-balancing`
-property in the `glassfish-ejb-jar.xml` deployment descriptor file for
-the EJB. If this property is not set, the original load balancing
-behavior is preserved.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-PRLB is only supported for stateless session beans. Using PRLB with any
-other bean types will result in a deployment error.
-
-|=======================================================================
-
-
-[[gksgy]][[GSHAG00319]][[enabling-per-request-load-balancing]]
-
-Enabling Per-Request Load Balancing
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can enable Per-Request Load Balancing (PRLB) by setting the boolean
-`per-request-load-balancing` property to `true` in the
-`glassfish-ejb-jar.xml` deployment descriptor file for the EJB. On the
-client side, the `initContext.lookup` method is used to access the
-stateless EJB.
-
-[[gksgo]][[GSHAG00162]][[to-enable-rmi-iiop-per-request-load-balancing-for-a-stateless-ejb]]
-
-To Enable RMI-IIOP Per-Request Load Balancing for a Stateless EJB
-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-This procedure describes how to enable PRLB for a stateless EJB that is
-deployed to clustered GlassFish Server instances. This procedure also
-provides an client-side example for accessing a stateless EJB that uses
-PRLB.
-
-1.  Choose or assemble the EJB that you want to deploy. +
-In this example, an EJB named `TheGreeter` is used. +
-For instructions on developing and assembling an EJB for deployment to
-GlassFish Server, refer to the following documentation:
-* "link:../application-development-guide/ejb.html#GSDVG00010[Using Enterprise JavaBeans Technology]" in GlassFish
-Server Open Source Edition Application Development Guide
-* "link:../application-deployment-guide/deploying-applications.html#GSDPG00068[EJB Module Deployment Guidelines]" in GlassFish
-Server Open Source Edition Application Deployment Guide
-* "link:../application-deployment-guide/deploying-applications.html#GSDPG00070[Assembling and Deploying an Application Client
-Module]" in GlassFish Server Open Source Edition Application Deployment
-Guide
-2.  Set the `per-request-load-balancing` property to `true` in the
-`glassfish-ejb-jar.xml` deployment descriptor file for the EJB. +
-For more information about the `glassfish-ejb-jar.xml` deployment
-descriptor file, refer to "link:../application-deployment-guide/dd-files.html#GSDPG00079[The glassfish-ejb-jar.xml
-File]" in GlassFish Server Open Source Edition Application Deployment
-Guide +
-For example, the `glassfish-ejb-jar.xml` file for a sample EJB named
-`TheGreeter` is listed below. +
-[source,oac_no_warn]
-----
-<glassfish-ejb-jar>
-  <enterprise-beans>
-    <unique-id>1</unique-id>
-    <ejb>
-      <ejb-name>TheGreeter</ejb-name>
-    <jndi-name>greeter</jndi-name>
-    <per-request-load-balancing>true</per-request-load-balancing>
-    </ejb>
-  </enterprise-beans>
-</glassfish-ejb-jar>
-----
-3.  Deploy the EJB. +
-If the EJB was previously deployed, it must be redployed. +
-For instructions on deploying EJBs, refer to the following
-documentation:
-* "link:../application-deployment-guide/deploying-applications.html#GSDPG00033[To Deploy an Application or Module]" in GlassFish
-Server Open Source Edition Application Deployment Guide
-* "link:../application-deployment-guide/deploying-applications.html#GSDPG00036[To Redeploy an Application or Module]" in GlassFish
-Server Open Source Edition Application Deployment Guide
-4.  Verify the PRLB configuration by looking for the following `FINE`
-message in the CORBA log file: +
-[source,oac_no_warn]
-----
-Setting per-request-load-balancing policyfor EJB EJB-name
-----
-5.  Configure a client application to access the PRLB-enabled EJB. +
-For example: +
-[source,oac_no_warn]
-----
-public class EJBClient {
-    public static void main(String args[]) {
-    :
-    :
-    :
-    try {
-    // only one lookup
-
-    Object objref = initContext.lookup("test.cluster.loadbalancing.ejb.\
-      TestSessionBeanRemote");
-        myGreeterRemote = (TestSessionBeanRemote)PortableRemoteObject.narrow\
-          (objref,
-                                            TestSessionBeanRemote.class);
-
-    } catch (Exception e) {
-    :
-    }
-
-    for (int i=0; i < 10; i++ ) {
-    // method calls in a loop.
-        String theMessage = myGreeterRemote.sayHello(Integer.toString(i));
-        System.out.println("got"+": " + theMessage);
-        }
-    }
-}
-----
-
-[[GSHAG443]]
-
-See Also
-
-See link:session-persistence-and-failover.html#abdle[Enabling the High
-Availability Session Persistence Service] for instructions on enabling
-the session availability service for a cluster or for a Web, EJB, or JMS
-container running in a cluster.
diff --git a/docs/ha-administration-guide/src/main/jbake/content/rolling-upgrade.adoc b/docs/ha-administration-guide/src/main/jbake/content/rolling-upgrade.adoc
deleted file mode 100644
index 6546063..0000000
--- a/docs/ha-administration-guide/src/main/jbake/content/rolling-upgrade.adoc
+++ /dev/null
@@ -1,268 +0,0 @@
-type=page
-status=published
-title=Upgrading Applications Without Loss of Availability
-next=session-persistence-and-failover.html
-prev=http-load-balancing.html
-~~~~~~
-Upgrading Applications Without Loss of Availability
-===================================================
-
-[[GSHAG00010]][[abdik]]
-
-
-[[upgrading-applications-without-loss-of-availability]]
-8 Upgrading Applications Without Loss of Availability
------------------------------------------------------
-
-Upgrading an application to a new version without loss of availability
-to users is called a rolling upgrade. Carefully managing the two
-versions of the application across the upgrade ensures that current
-users of the application complete their tasks without interruption,
-while new users transparently get the new version of the application.
-With a rolling upgrade, users are unaware that the upgrade occurs.
-
-For more information about application versions and how they are
-identified, see "link:../application-deployment-guide/overview.html#GSDPG00324[Module and Application Versions]" in
-GlassFish Server Open Source Edition Application Deployment Guide.
-
-In a clustered environment, a rolling upgrade redeploys an application
-with a minimal loss of service and sessions. A session is any artifact
-that can be replicated, for example:
-
-* `HttpSession`
-* `SingleSignOn`
-* `ServletTimer`
-* `DialogFragment`
-* Stateful session bean
-
-A rolling upgrade can take place under light to moderate loads. The
-procedure requires about 10-15 minutes for each GlassFish Server
-instance.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Caution:
-
-To prevent the risk of version mismatch when a session fails over,
-upgrade all instances in a cluster at the same time. Otherwise a session
-might fail over to an instance where different versions of components
-are running.
-
-|=======================================================================
-
-
-Perform this task on each cluster separately. A cluster acts as a safe
-boundary for session failover for instances in the cluster. Sessions in
-one cluster can never fail over to sessions in another cluster.
-Therefore, the risk of version mismatch is avoided.
-
-[[abdil]][[GSHAG00205]][[application-compatibility]]
-
-Application Compatibility
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Rolling upgrades pose varying degrees of difficulty depending on the
-magnitude of changes between the two application versions.
-
-If the changes are superficial, for example, changes to static text and
-images, the two versions of the application are compatible and can both
-run at once in the same cluster.
-
-Compatible applications must:
-
-* Use the same session information
-* Use compatible database schemas
-* Have generally compatible application-level business logic
-* Use the same physical data source
-
-You can perform a rolling upgrade of a compatible application in either
-a single cluster or multiple clusters. For more information, see
-link:#abdim[Upgrading In a Single Cluster].
-
-If the two versions of an application do not meet all the above
-criteria, then the applications are considered incompatible. Executing
-incompatible versions of an application in one cluster can corrupt
-application data and cause session failover to not function correctly.
-The problems depend on the type and extent of the incompatibility. It is
-good practice to upgrade an incompatible application by creating a
-"shadow cluster" to which to deploy the new version and slowly quiesce
-the old cluster and application. For more information, see
-link:#abdio[Upgrading Incompatible Applications].
-
-The application developer and administrator are the best people to
-determine whether application versions are compatible. If in doubt,
-assume that the versions are incompatible, since this is the safest
-approach.
-
-[[abdim]][[GSHAG00206]][[upgrading-in-a-single-cluster]]
-
-Upgrading In a Single Cluster
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can perform a rolling upgrade of an application deployed to a single
-cluster, providing the cluster's configuration is not shared with any
-other cluster.
-
-[[fxxvd]][[GSHAG00151]][[to-upgrade-an-application-in-a-single-cluster]]
-
-To Upgrade an Application in a Single Cluster
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-1.  Deploy the upgraded application to the cluster in a disabled state
-and with a new version identifier. +
-For example: +
-[source,oac_no_warn]
-----
-asadmin> asadmin deploy --enabled=false --target myCluster myApp:1.1
-----
-2.  Perform the following steps for each server instance in the cluster.
-1.  Quiesce one server instance in the cluster from the load balancer. +
-Follow these steps:
-1.  Disable the server instance using `asadmin disable-http-lb-server.`
-2.  Export the load balancer configuration file using
-`asadmin export-http-lb-config`.
-3.  Copy the exported configuration file to the web server instance's
-configuration directory. +
-For example, for Sun Java System Web Server, the location is
-web-server-install-dir`/``https-`host-name`/config/loadbalancer.xml`.
-4.  Wait until the timeout has expired. +
-Monitor the load balancer's log file.
-2.  Enable the upgraded application version on the quiesced server
-instance. +
-For example: +
-[source,oac_no_warn]
-----
-asadmin> asadmin enable --target instance01 myApp:1.1
-----
-Enabling the upgraded application version automatically disables the
-previous version.
-3.  Test the upgraded application on the server instance to make sure it
-runs correctly.
-4.  Re-enable the server instance in load balancer. +
-Follow these steps:
-1.  Enable the server instance using `asadmin enable-http-lb-server.`
-2.  Export the load balancer configuration file using
-`asadmin export-http-lb-config`.
-3.  Copy the configuration file to the web server's configuration
-directory.
-
-[[abdin]][[GSHAG00207]][[upgrading-in-multiple-clusters]]
-
-Upgrading in Multiple Clusters
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-[[fxxvb]][[GSHAG00152]][[to-upgrade-a-compatible-application-in-two-or-more-clusters]]
-
-To Upgrade a Compatible Application in Two or More Clusters
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Repeat the following procedure for each cluster.
-
-1.  Deploy the upgraded application to one cluster in a disabled state
-and with a new version identifier. +
-For example: +
-[source,oac_no_warn]
-----
-asadmin> asadmin deploy --enabled=false --target myCluster myApp:1.1
-----
-2.  Quiesce the cluster with the upgraded application from the load
-balancer.
-1.  Disable the cluster using `asadmin disable-http-lb-server`.
-2.  Export the load balancer configuration file using
-`asadmin export-http-lb-config`.
-3.  Copy the exported configuration file to the web server instance's
-configuration directory. +
-For example, for Sun Java System Web Server, the location is
-web-server-install-dir/`https-`host-name`/config/loadbalancer.xml`.
-4.  Wait until the timeout has expired. +
-Monitor the load balancer's log file.
-3.  Enable the upgraded application version on the quiesced cluster. +
-For example: +
-[source,oac_no_warn]
-----
-asadmin> asadmin enable --target myCluster myApp:1.1
-----
-Enabling the upgraded application version automatically disables the
-previous version.
-4.  Test the upgraded application on the cluster to make sure it runs
-correctly.
-5.  Enable the cluster in the load balancer:
-1.  Enable the cluster using `asadmin enable-http-lb-server.`
-2.  Export the load balancer configuration file using
-`asadmin export-http-lb-config`.
-3.  Copy the configuration file to the web server's configuration
-directory.
-
-[[abdio]][[GSHAG00208]][[upgrading-incompatible-applications]]
-
-Upgrading Incompatible Applications
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-If the new version of the application is incompatible with the old
-version, use the following procedure. For information on what makes
-applications compatible, see link:#abdil[Application Compatibility].
-Also, you must upgrade incompatible application in two or more clusters.
-If you have only one cluster, create a "shadow cluster" for the upgrade,
-as described below.
-
-When upgrading an incompatible application:
-
-* Give the new version of the application a different version identifier
-from the old version of the application. The steps below assume that the
-application has a new version identifier.
-* If the data schemas are incompatible, use different physical data
-sources after planning for data migration.
-* Deploy the new version to a different cluster from the cluster where
-the old version is deployed.
-* Set an appropriately long timeout for the cluster running the old
-application before you take it offline, because the requests for the
-application won't fail over to the new cluster. These user sessions will
-simply fail.
-
-[[abdip]][[GSHAG00153]][[to-upgrade-an-incompatible-application-by-creating-a-second-cluster]]
-
-To Upgrade an Incompatible Application by Creating a Second Cluster
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-1.  Create a "shadow cluster" on the same or a different set of machines
-as the existing cluster. If you already have a second cluster, skip this
-step.
-1.  Use the Administration Console to create the new cluster and
-reference the existing cluster's named configuration. +
-Customize the ports for the new instances on each machine to avoid
-conflict with existing active ports.
-2.  For all resources associated with the cluster, add a resource
-reference to the newly created cluster using
-`asadmin create-resource-ref`.
-3.  Create a reference to all other applications deployed to the cluster
-(except the current upgraded application) from the newly created cluster
-using `asadmin create-application-ref`.
-4.  Configure the cluster to be highly available using
-`asadmin configure-ha-cluster`.
-5.  Create reference to the newly-created cluster in the load balancer
-configuration file using `asadmin create-http-lb-ref.`
-2.  Give the new version of the application a different version
-identifier from the old version.
-3.  Deploy the new application version with the new cluster as the
-target. Use a different context root or roots.
-4.  Start the new cluster while the other cluster is still running. +
-The start causes the cluster to synchronize with the domain and be
-updated with the new application.
-5.  Test the application on the new cluster to make sure it runs
-correctly.
-6.  Disable the old cluster from the load balancer using
-`asadmin disable-http-lb-server`.
-7.  Set a timeout for how long lingering sessions survive.
-8.  Enable the new cluster from the load balancer using
-`asadmin enable-http-lb-server`.
-9.  Export the load balancer configuration file using
-`asadmin export-http-lb-config`.
-10. Copy the exported configuration file to the web server instance's
-configuration directory. +
-For example, for Sun Java System Web Server, the location is
-web-server-install-dir/`https-`host-name`/config/loadbalancer.xml`.
-11. After the timeout period expires or after all users of the old
-application have exited, stop the old cluster and undeploy the old
-application version.
diff --git a/docs/ha-administration-guide/src/main/jbake/content/session-persistence-and-failover.adoc b/docs/ha-administration-guide/src/main/jbake/content/session-persistence-and-failover.adoc
deleted file mode 100644
index 3a0a311..0000000
--- a/docs/ha-administration-guide/src/main/jbake/content/session-persistence-and-failover.adoc
+++ /dev/null
@@ -1,718 +0,0 @@
-type=page
-status=published
-title=Configuring High Availability Session Persistence and Failover
-next=jms.html
-prev=rolling-upgrade.html
-~~~~~~
-Configuring High Availability Session Persistence and Failover
-==============================================================
-
-[[GSHAG00011]][[abdkz]]
-
-
-[[configuring-high-availability-session-persistence-and-failover]]
-9 Configuring High Availability Session Persistence and Failover
-----------------------------------------------------------------
-
-This chapter explains how to enable and configure high availability
-session persistence.
-
-* link:#abdla[Overview of Session Persistence and Failover]
-* link:#abdle[Enabling the High Availability Session Persistence
-Service]
-* link:#abdlp[Stateful Session Bean Failover]
-
-[[abdla]][[GSHAG00209]][[overview-of-session-persistence-and-failover]]
-
-Overview of Session Persistence and Failover
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-GlassFish Server provides high availability session persistence through
-failover of HTTP session data and stateful session bean (SFSB) session
-data. Failover means that in the event of an server instance or hardware
-failure, another server instance in a cluster takes over a distributed
-session.
-
-For example, Java EE applications typically have significant amounts of
-session state data. A web shopping cart is the classic example of
-session state. Also, an application can cache frequently-needed data in
-the session object. In fact, almost all applications with significant
-user interactions need to maintain session state.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-When using high availability session persistence together with a load
-balancer, use a load balancer that includes session-based stickiness as
-part of its load-balancing algorithm. Otherwise, session data can be
-misdirected or lost. An example of a load balancer that includes
-session-based stickiness is the Loadbalancer Plug-In available in Oracle
-GlassFish Server.
-
-|=======================================================================
-
-
-The following topics are addressed here:
-
-* link:#abdlb[Requirements]
-* link:#abdlc[Restrictions]
-* link:#gksoq[Scope]
-
-[[abdlb]][[GSHAG00300]][[requirements]]
-
-Requirements
-^^^^^^^^^^^^
-
-A distributed session can run in multiple Oracle GlassFish Server
-instances, if:
-
-* Each server instance has access to the same session state data.
-GlassFish Server supports in-memory session replication on other servers
-in the cluster for maintaining HTTP session and stateful session bean
-data. In-memory session replication is enabled by default for GlassFish
-Server clustered environments if the Group Management Service is
-enabled. +
-The use of in-memory replication requires the Group Management Service
-(GMS) to be enabled. For more information about GMS, see
-link:clusters.html#gjfnl[Group Management Service]. +
-If server instances in a cluster are located on different hosts, ensure
-that the following prerequisites are met:
-
-** To ensure that GMS and in-memory replication function correctly, the
-hosts must be on the same subnet.
-
-** To ensure that in-memory replication functions correctly, the system
-clocks on all hosts in the cluster must be synchronized as closely as
-possible. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-GlassFish Server 4.0 does not support High Availability Database (HADB)
-configurations. Instead, use in-memory replication, as described in
-link:overview.html#gaynn[High Availability Session Persistence].
-
-|=======================================================================
-
-* Each server instance has the same distributable web application
-deployed to it. The `web-app` element of the `web.xml` deployment
-descriptor file must contain the `distributable` element.
-* The web application uses high-availability session persistence. If a
-non-distributable web application is configured to use high-availability
-session persistence, the server writes an error to the log file.
-* The web application must be deployed using the `deploy` or `deploydir`
-subcommand with the `--availabilityenabled` option set to `true`. For
-more information on these subcommands, see link:../reference-manual/deploy.html#GSRFM00114[`deploy`(1)]
-and link:../reference-manual/deploydir.html#GSRFM00115[`deploydir`(1)].
-
-[[abdlc]][[GSHAG00301]][[restrictions]]
-
-Restrictions
-^^^^^^^^^^^^
-
-When configuring session persistence and failover, note the following
-restrictions:
-
-* When a session fails over, any references to open files or network
-connections are lost. Applications must be coded with this restriction
-in mind.
-* EJB Singletons are created for each server instance in a cluster, and
-not once per cluster.
-* The high availability session persistence service is not compatible
-with dynamic deployment, dynamic reloading, and autodeployment. These
-features are for development, not production environments, so you must
-disable them before enabling the session persistence service. For
-information about how to disable these features, see the
-link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition Application Deployment
-Guide].
-* GlassFish Server 4.0 does not support High Availability Database
-(HADB) configurations. Instead, use in-memory replication, as described
-in link:overview.html#gaynn[High Availability Session Persistence].
-* You can only bind certain objects to distributed sessions that support
-failover. Contrary to the Servlet 2.4 specification, GlassFish Server
-4.0 does not throw an `IllegalArgumentException` if an object type not
-supported for failover is bound into a distributed session. +
-You can bind the following objects into a distributed session that
-supports failover:
-
-** Local home and object references for all EJB components.
-
-** Colocated stateless session, stateful session, or entity bean
-reference .
-
-** Distributed stateless session, stateful session, or entity bean
-reference.
-
-** JNDI Context for `InitialContext` and `java:comp/env`.
-
-** `UserTransaction` objects. However, if the instance that fails is
-never restarted, any prepared global transactions are lost and might not
-be correctly rolled back or committed.
-
-** Serializable Java types.
-* You cannot bind the following object types into sessions that support
-failover:
-
-** JDBC DataSource
-
-** Java Message Service (JMS) `ConnectionFactory` and `Destination`
-objects
-
-** JavaMail Session
-
-** Connection Factory
-
-** Administered Objects
-
-** Web service reference +
-In general, for these objects, failover will not work. However, failover
-might work in some cases, if for example the object is serializable.
-
-[[gksoq]][[GSHAG00302]][[scope]]
-
-Scope
-^^^^^
-
-The availability service can be enabled for the following scopes,
-ranging from highest to lowest:
-
-* Cluster
-* Standalone server instance (not part of a cluster)
-* Web, EJB, or JMS container in a cluster
-* Application
-* Standalone Web, EJB, or JMS module
-* Individual Stateful Session Bean (SFSB)
-
-In general, enabling or disabling availability session persistence for a
-cluster or container involves setting the boolean `availability-service`
-property to `true` or `false` by means of the `asadmin set` subcommand.
-The availability service is enabled by default for GlassFish Server
-clusters and all Web, EJB, and JMS containers running in a cluster.
-
-The value set for the `availability-service` property is inherited by
-all child objects running in a given cluster or container unless the
-value is explicitly overridden at the individual module or application
-level. For example, if the `availability-service` property is set to
-`true` for an EJB container, the availability service will be enabled by
-default for all EJB modules running in that container.
-
-Conversely, to enable availability at a given scope, you must enable it
-at all higher levels as well. For example, to enable availability at the
-application level, you must also enable it at the cluster or server
-instance and container levels.
-
-[[abdle]][[GSHAG00210]][[enabling-the-high-availability-session-persistence-service]]
-
-Enabling the High Availability Session Persistence Service
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This section explains how to configure and enable the high availability
-session persistence service.
-
-* link:#abdlf[To Enable Availability for a Cluster, Standalone Instance
-or Container]
-* link:#abdll[Configuring Availability for Individual Web Applications]
-* link:#gkwqu[Configuring Replication and Multi-Threaded Concurrent
-Access to `HttpSessions`]
-* link:#abdln[Using Single Sign-on with Session Failover]
-* link:#gkyyl[Using Coherence*Web for HTTP Session Persistence]
-
-[[abdlf]][[GSHAG00154]][[to-enable-availability-for-a-cluster-standalone-instance-or-container]]
-
-To Enable Availability for a Cluster, Standalone Instance or Container
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This procedure explains how to enable high availability for a cluster as
-a whole, or for Web, EJB, or JMS containers that run in a cluster, or
-for a standalone server instance that is not part of a cluster.
-
-1.  Create a GlassFish Server cluster. +
-For more information, see link:clusters.html#gkqdm[To Create a Cluster].
-2.  Set up load balancing for the cluster. +
-For instructions, see link:http-load-balancing.html#abdgx[Setting Up HTTP
-Load Balancing].
-3.  Verify that the cluster and all instances within the cluster for
-which you want to enable availability is running. +
-These steps are also necessary when enabling availability for a Web,
-EJB, or JMS container running in a cluster. The cluster and all
-instances in the cluster for which you want to enable availability must
-be running.
-1.  Verify that the cluster is running. +
-[source,oac_no_warn]
-----
-asadmin> list-clusters
-----
-A list of clusters and their status (running, not running) is displayed.
-If the cluster for which you want to enable availability is not running,
-you can start it with the following command: +
-[source,oac_no_warn]
-----
-asadmin> start-cluster cluster-name
-----
-2.  Verify that all instances in the cluster are running. +
-[source,oac_no_warn]
-----
-asadmin> list-instances
-----
-A list of instances and their status is displayed. If the instances for
-which you want to enable availability are not running, you can start
-them by using the following command for each instance: +
-[source,oac_no_warn]
-----
-asadmin> start-instance instance-name
-----
-4.  Use one of the following `asadmin` olink:GSRFM00226[`set`]
-subcommands to enable availability for a specific cluster, or for a
-specific Web, EJB, or JMS container.
-* For a cluster as a whole +
-[source,oac_no_warn]
-----
-asadmin> set cluster-name-config.availability-service.availability-enabled=true
-----
-For example, for a cluster named `c1`: +
-[source,oac_no_warn]
-----
-asadmin> set c1-config.availability-service.availability-enabled=true
-----
-* For the Web container in a cluster +
-[source,oac_no_warn]
-----
-asadmin> set cluster-name-config.availability-service \
-.web-container-availability.availability-enabled=true
-----
-* For the EJB container in a cluster +
-[source,oac_no_warn]
-----
-asadmin> set cluster-name-config.availability-service \
-.ejb-container-availability.availability-enabled=true
-----
-* For the JMS container in a cluster +
-[source,oac_no_warn]
-----
-asadmin> set cluster-name-config.availability-service \
-.jms-availability.availability-enabled=true
-----
-* For a standalone server instance (not part of a cluster) +
-[source,oac_no_warn]
-----
-asadmin> set instance-name-config.availability-service.availability-enabled=true
-----
-5.  Restart the standalone server instance or each server instance in
-the cluster.
-6.  Enable availability for any SFSB that requires it. +
-Select methods for which checkpointing the session state is necessary.
-For more information, see link:#abdlu[Configuring Availability for an
-Individual Bean].
-7.  Make each web module distributable if you want it to be highly
-available. +
-For more information, see "link:../application-deployment-guide/deploying-applications.html#GSDPG00067[Web Module Deployment
-Guidelines]" in GlassFish Server Open Source Edition Application
-Deployment Guide.
-8.  Enable availability for individual applications, web modules, or EJB
-modules during deployment. +
-See the links below for instructions.
-
-[[GSHAG430]]
-
-See Also
-
-* link:#abdll[Configuring Availability for Individual Web Applications]
-* link:#abdln[Using Single Sign-on with Session Failover]
-
-[[abdll]][[GSHAG00303]][[configuring-availability-for-individual-web-applications]]
-
-Configuring Availability for Individual Web Applications
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To enable and configure availability for an individual web application,
-edit the application deployment descriptor file, `glassfish-web.xml`.
-The settings in an application's deployment descriptor override the web
-container's availability settings.
-
-The `session-manager` element's `persistence-type` attribute determines
-the type of session persistence an application uses. It must be set to
-`replicated` to enable high availability session persistence.
-
-[[abdlm]][[GSHAG00247]][[example]]
-
-Example
-+++++++
-
-[source,oac_no_warn]
-----
-<glassfish-web-app> ...
-  <session-config>
-    <session-manager persistence-type="replicated">
-      <manager-properties>
-        <property name="persistenceFrequency" value="web-method" />
-      </manager-properties>
-      <store-properties>
-        <property name="persistenceScope" value="session" />
-      </store-properties>
-    </session-manager> ...
-</session-config> ...
-----
-
-[[gkwqu]][[GSHAG00304]][[configuring-replication-and-multi-threaded-concurrent-access-to-httpsessions]]
-
-Configuring Replication and Multi-Threaded Concurrent Access to
-`HttpSessions`
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-If you are using Memory Replication and your web application involves
-multiple client threads concurrently accessing the same session ID, then
-you may experience session loss even without any instance failure. The
-problem is that the GlassFish Server 4.0 memory replication framework
-makes use of session versioning. This feature was designed with the more
-traditional HTTP request/response communication model in mind.
-
-However, for some types of applications, the traditional
-request/response model does not work. Examples include many Ajax-related
-frameworks and the use of Frames. Another example is when a page
-includes many static resources, such as JPG files. In these situations,
-most browsers will optimize the loading of these resources by using
-multiple parallel connections, each of which is handled by a separate
-request processing thread. If the application has already established a
-session, then this will also involve more than one thread at a time
-accessing a single `HttpSession`.
-
-The solution in such cases is to use the `relaxVersionSemantics`
-property in the `glassfish-web.xml` deployment descriptor file for the
-application. This enables the web container to return for each
-requesting thread whatever version of the session that is in the active
-cache regardless of the version number. This is critical when multiple
-threads are interacting in an essentially non-deterministic fashion with
-the container.
-
-[[gkwrj]][[GSHAG00248]][[example-1]]
-
-Example
-+++++++
-
-The following is an example snippet from a `glassfish-web.xml` file that
-illustrates where to add the `relaxVersionSemantics` property.
-
-[source,oac_no_warn]
-----
-<glassfish-web-app>
-  <session-config>
-    <session-manager persistence-type="replicated">
-      <manager-properties>
-    <property name="relaxCacheVersionSemantics" value="true"/>
-      </manager-properties>
-    </session-manager>
-  </session-config>
-
-.....
-</glassfish-web-app>
-----
-
-[[abdln]][[GSHAG00305]][[using-single-sign-on-with-session-failover]]
-
-Using Single Sign-on with Session Failover
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-In a single application server instance, once a user is authenticated by
-an application, the user is not required to re-authenticate individually
-to other applications running on the same instance. This is called
-single sign-on.
-
-For this feature to continue to work even when an HTTP session fails
-over to another instance in a cluster, single sign-on information must
-be persisted using in-memory replication. To persist single sign-on
-information, first, enable availability for the server instance and the
-web container, then enable single-sign-on state failover.
-
-You can enable single sign-on state failover by using the `asadmin set`
-command to set the configuration's
-`availability-service.web-container-availability.sso-failover-enabled`
-property to true.
-
-For example, use the `set` command as follows, where `config1` is the
-configuration name:
-
-[source,oac_no_warn]
-----
-asadmin> set config1.availability-service.web-container-availability. \
-sso-failover-enabled="true"
-----
-
-[[abdlo]][[GSHAG00249]][[single-sign-on-groups]]
-
-Single Sign-On Groups
-+++++++++++++++++++++
-
-Applications that can be accessed through a single name and password
-combination constitute a single sign-on group. For HTTP sessions
-corresponding to applications that are part of a single sign-on group,
-if one of the sessions times out, other sessions are not invalidated and
-continue to be available. This is because time out of one session should
-not affect the availability of other sessions.
-
-As a corollary of this behavior, if a session times out and you try to
-access the corresponding application from the same browser window that
-was running the session, you are not required to authenticate again.
-However, a new session is created.
-
-Take the example of a shopping cart application that is a part of a
-single sign-on group with two other applications. Assume that the
-session time out value for the other two applications is higher than the
-session time out value for the shopping cart application. If your
-session for the shopping cart application times out and you try to run
-the shopping cart application from the same browser window that was
-running the session, you are not required to authenticate again.
-However, the previous shopping cart is lost, and you have to create a
-new shopping cart. The other two applications continue to run as usual
-even though the session running the shopping cart application has timed
-out.
-
-Similarly, suppose a session corresponding to any of the other two
-applications times out. You are not required to authenticate again while
-connecting to the application from the same browser window in which you
-were running the session.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-This behavior applies only to cases where the session times out. If
-single sign-on is enabled and you invalidate one of the sessions using
-`HttpSession.invalidate()`, the sessions for all applications belonging
-to the single sign-on group are invalidated. If you try to access any
-application belonging to the single sign-on group, you are required to
-authenticate again, and a new session is created for the client
-accessing the application.
-
-|=======================================================================
-
-
-[[gkyyl]][[GSHAG00306]][[using-coherenceweb-for-http-session-persistence]]
-
-Using Coherence*Web for HTTP Session Persistence
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Built on top of Oracle Coherence, Coherence*Web is an HTTP session
-management module dedicated to managing session state in clustered
-environments. Starting with Coherence 3.7 and GlassFish Server 4.0,
-there is a new feature of Coherence*Web called ActiveCache for
-GlassFish. ActiveCache for GlassFish provides Coherence*Web
-functionality in web applications deployed on GlassFish Servers. Within
-GlassFish Server, Coherence*Web functions as an additional web container
-persistence type, named `coherence-web`.
-
-For information about how to configure and deploy Coherence*Web on
-GlassFish Server, see
-http://download.oracle.com/docs/cd/E18686_01/coh.37/e18690/glassfish.html[Using
-Coherence*Web with GlassFish Server]
-(`http://docs.oracle.com/cd/E18686_01/coh.37/e18690/glassfish.html`).
-
-[[abdlp]][[GSHAG00211]][[stateful-session-bean-failover]]
-
-Stateful Session Bean Failover
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Stateful session beans (SFSBs) contain client-specific state. There is a
-one-to-one relationship between clients and the stateful session beans.
-At creation, the EJB container gives each SFSB a unique session ID that
-binds it to a client.
-
-An SFSB's state can be saved in a persistent store in case a server
-instance fails. The state of an SFSB is saved to the persistent store at
-predefined points in its life cycle. This is called
-
-checkpointing. If enabled, checkpointing generally occurs after the bean
-completes any transaction, even if the transaction rolls back.
-
-However, if an SFSB participates in a bean-managed transaction, the
-transaction might be committed in the middle of the execution of a bean
-method. Since the bean's state might be undergoing transition as a
-result of the method invocation, this is not an appropriate time to
-checkpoint the bean's state. In this case, the EJB container checkpoints
-the bean's state at the end of the corresponding method, provided the
-bean is not in the scope of another transaction when that method ends.
-If a bean-managed transaction spans across multiple methods,
-checkpointing is delayed until there is no active transaction at the end
-of a subsequent method.
-
-The state of an SFSB is not necessarily transactional and might be
-significantly modified as a result of non-transactional business
-methods. If this is the case for an SFSB, you can specify a list of
-checkpointed methods, as described in link:#abdlw[Specifying Methods to
-Be Checkpointed]
-
-If a distributable web application references an SFSB, and the web
-application's session fails over, the EJB reference is also failed over.
-
-If an SFSB that uses session persistence is undeployed while the
-GlassFish Server instance is stopped, the session data in the
-persistence store might not be cleared. To prevent this, undeploy the
-SFSB while the GlassFish Server instance is running.
-
-[[abdlq]][[GSHAG00307]][[configuring-availability-for-the-ejb-container]]
-
-Configuring Availability for the EJB Container
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To enable availability for the EJB container use the `asadmin set`
-command to set the following three properties for the configuration:
-
-* `availability-service.ejb-container-availability.availability-enabled`
-* `availability-service.ejb-container-availability.sfsb-persistence-type`
-* `availability-service.ejb-container-availability.sfsb-ha-persistence-type`
-
-For example, if `config1` is the configuration name, use the following
-commands:
-
-[source,oac_no_warn]
-----
-asadmin> set --user admin --passwordfile password.txt
---host localhost
---port 4849
-config1.availability-service.
-ejb-container-availability.availability-enabled="true"
-
-asadmin> set --user admin --passwordfile password.txt --host localhost --port
-4849
-config1.availability-service.
-ejb-container-availability.sfsb-persistence-type="file"
-asadmin> set --user admin --passwordfile password.txt
---host localhost
---port 4849
-config1.availability-service.
-ejb-container-availability.sfsb-ha-persistence-type="replicated"
-----
-
-[[abdls]][[GSHAG00250]][[configuring-the-sfsb-session-store-when-availability-is-disabled]]
-
-Configuring the SFSB Session Store When Availability Is Disabled
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-If availability is disabled, the local file system is used for SFSB
-state passivation, but not persistence. To change where the SFSB state
-is stored, change the Session Store Location setting in the EJB
-container. For information about configuring store properties, see the
-Administration Console online help.
-
-[[abdlt]][[GSHAG00308]][[configuring-availability-for-an-individual-application-or-ejb-module]]
-
-Configuring Availability for an Individual Application or EJB Module
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You can enable SFSB availability for an individual application or EJB
-module during deployment:
-
-* If you are deploying with the Administration Console, check the
-Availability Enabled checkbox.
-* If you are deploying using use the `asadmin deploy` or
-`asadmin deploydir` commands, set the `--availabilityenabled` option to
-`true`. For more information, see link:../reference-manual/deploy.html#GSRFM00114[`deploy`(1)] and
-link:../reference-manual/deploydir.html#GSRFM00115[`deploydir`(1)].
-
-[[abdlu]][[GSHAG00309]][[configuring-availability-for-an-individual-bean]]
-
-Configuring Availability for an Individual Bean
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To enable availability and select methods to be checkpointed for an
-individual SFSB, use the `glassfish-ejb-jar.xml` deployment descriptor
-file.
-
-To enable high availability session persistence, set
-`availability-enabled="true"` in the `ejb` element.
-
-[[GSHAG00068]][[fxjqx]]
-
-
-Example 9-1 Example of an EJB Deployment Descriptor With Availability
-Enabled
-
-[source,oac_no_warn]
-----
-<glassfish-ejb-jar>
-    ...
-    <enterprise-beans>
-        ...
-        <ejb availability-enabled="true">
-            <ejb-name>MySFSB</ejb-name>
-        </ejb>
-        ...
-    </enterprise-beans>
-</glassfish-ejb-jar>
-----
-
-[[abdlw]][[GSHAG00310]][[specifying-methods-to-be-checkpointed]]
-
-Specifying Methods to Be Checkpointed
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-If enabled, checkpointing generally occurs after the bean completes any
-transaction, even if the transaction rolls back. To specify additional
-optional checkpointing of SFSBs at the end of non-transactional business
-methods that cause important modifications to the bean's state, use the
-`checkpoint-at-end-of-method` element in the `ejb` element of the
-`glassfish-ejb-jar.xml` deployment descriptor file.
-
-The non-transactional methods in the `checkpoint-at-end-of-method`
-element can be:
-
-* `create()` methods defined in the home interface of the SFSB, if you
-want to checkpoint the initial state of the SFSB immediately after
-creation
-* For SFSBs using container managed transactions only, methods in the
-remote interface of the bean marked with the transaction attribute
-`TX_NOT_SUPPORTED` or `TX_NEVER`
-* For SFSBs using bean managed transactions only, methods in which a
-bean managed transaction is neither started nor committed +
-Any other methods mentioned in this list are ignored. At the end of
-invocation of each of these methods, the EJB container saves the state
-of the SFSB to persistent store.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-If an SFSB does not participate in any transaction, and if none of its
-methods are explicitly specified in the `checkpoint-at-end-of-method`
-element, the bean's state is not checkpointed at all even if
-`availability-enabled="true"` for this bean.
-
-For better performance, specify a small subset of methods. The methods
-should accomplish a significant amount of work or result in important
-modification to the bean's state.
-
-|=======================================================================
-
-
-[[GSHAG00069]][[fxjqg]]
-
-
-Example 9-2 Example of EJB Deployment Descriptor Specifying Methods
-Checkpointing
-
-[source,oac_no_warn]
-----
-<glassfish-ejb-jar>
-    ...
-    <enterprise-beans>
-        ...
-        <ejb availability-enabled="true">
-            <ejb-name>ShoppingCartEJB</ejb-name>
-            <checkpoint-at-end-of-method>
-                <method>
-                    <method-name>addToCart</method-name>
-                </method>
-            </checkpoint-at-end-of-method>
-        </ejb>
-        ...
-    </enterprise-beans>
-</glassfish-ejb-jar>
-----
diff --git a/docs/ha-administration-guide/src/main/jbake/content/ssh-setup.adoc b/docs/ha-administration-guide/src/main/jbake/content/ssh-setup.adoc
deleted file mode 100644
index f659cce..0000000
--- a/docs/ha-administration-guide/src/main/jbake/content/ssh-setup.adoc
+++ /dev/null
@@ -1,2046 +0,0 @@
-type=page
-status=published
-title=Enabling Centralized Administration of GlassFish Server Instances
-next=nodes.html
-prev=overview.html
-~~~~~~
-Enabling Centralized Administration of GlassFish Server Instances
-=================================================================
-
-[[GSHAG00003]][[gkshg]]
-
-
-[[enabling-centralized-administration-of-glassfish-server-instances]]
-2 Enabling Centralized Administration of GlassFish Server Instances
--------------------------------------------------------------------
-
-GlassFish Server uses the Distributed Component Object Model (DCOM)
-remote protocol or secure shell (SSH) to ensure that clusters that span
-multiple hosts can be administered centrally. To perform administrative
-operations on GlassFish Server instances that are remote from the domain
-administration server (DAS), the DAS must be able to communicate with
-those instances. If an instance is running, the DAS connects to the
-running instance directly. For example, when you deploy an application
-to an instance, the DAS connects to the instance and deploys the
-application to the instance.
-
-However, the DAS cannot connect to an instance to perform operations on
-an instance that is not running, such as creating or starting the
-instance. For these operations, the DAS uses DCOM or SSH to contact a
-remote host and administer instances there. DCOM or SSH provides
-confidentiality and security for data that is exchanged between the DAS
-and remote hosts.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-The use of DCOM or SSH to enable centralized administration of remote
-instances is optional. If the use of DCOM or SSH is not feasible in your
-environment, you can administer remote instances locally.
-
-|=======================================================================
-
-
-The following topics are addressed here:
-
-* link:#gkshz[About Centralized Administration of GlassFish Server
-Instances]
-* link:#CEGIFJJF[Setting Up DCOM and Testing the DCOM Set Up]
-* link:#gksiy[Setting Up Cygwin SSH on Windows]
-* link:#gkskf[Setting Up the MKS Toolkit on Windows]
-* link:#gksja[Setting Up SSH on UNIX and Linux Systems]
-* link:#gkslw[Testing the SSH Setup on a Host]
-* link:#gkshh[Setting Up SSH User Authentication]
-* link:#gkshn[Installing and Removing GlassFish Server Software on
-Multiple Hosts]
-
-[[gkshz]][[GSHAG00172]][[about-centralized-administration-of-glassfish-server-instances]]
-
-About Centralized Administration of GlassFish Server Instances
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The use of DCOM or SSH to enable centralized administration of remote
-instances is optional and is required only for specific operations.
-Instances local to the DAS can be administered without DCOM or SSH. If
-DCOM or SSH is not practicable in your environment, you can administer
-remote instances locally.
-
-[[GSHAG446]][[sthref4]]
-
-
-[[determining-whether-to-enable-centralized-administration]]
-Determining Whether to Enable Centralized Administration
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Before setting up a GlassFish Server cluster, use the following
-considerations to determine whether to enable centralized administration
-of remote instances:
-
-* If you are planning a large cluster of many instances, consider
-enabling centralized administration of instances in the cluster.
-Centralized administration of instances simplifies the administration of
-the cluster by enabling you to perform all administrative operations on
-the cluster and its instances from the DAS.
-* If you are planning a small cluster of few instances, consider whether
-enabling centralized administration requires more effort than logging in
-to individual hosts to administer remote instances locally.
-
-How you administer instances and the nodes on which they resides varies
-depending on whether and how centralized administration is enabled. The
-following table provides cross-references to instructions for
-administering nodes and instances depending on the protocol that is used
-for enabling centralized administration, if any.
-
-[width="100%",cols="<15%,<42%,<43%",options="header",]
-|=======================================================================
-|Protocol |Node Administration Instructions |Instance Administration
-Instructions
-|DCOM |link:nodes.html#CHDBIHFJ[Creating, Listing, Testing, and Deleting
-`DCOM` Nodes] + |link:instances.html#gkqal[Administering GlassFish Server
-Instances Centrally] +
-
-|SSH |link:nodes.html#gkrkn[Creating, Listing, Testing, and Deleting
-`SSH` Nodes] + |link:instances.html#gkqal[Administering GlassFish Server
-Instances Centrally] +
-
-|None |link:nodes.html#gkrnp[Creating, Listing, and Deleting `CONFIG`
-Nodes] + |link:instances.html#gkqdw[Administering GlassFish Server
-Instances Locally] +
-|=======================================================================
-
-
-[[GSHAG447]][[sthref5]]
-
-
-[[considerations-for-using-dcom-for-centralized-administration]]
-Considerations for Using DCOM for Centralized Administration
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-DCOM enables communications between Windows hosts. In a typical
-GlassFish Server deployment, the DAS acts as a DCOM client, and hosts
-where instances reside act as DCOM servers. To create or start an
-instance on a remote host, the DAS instructs the DCOM server on the host
-to start the `asadmin` utility of GlassFish Server. The `asadmin`
-utility then performs the required operation on the host to create or
-start the instance.
-
-The DCOM service must be running on hosts where instances reside, but is
-not required to be running on the DAS host. The DAS uses its own DCOM
-client for communicating with hosts where instances reside. On Windows
-hosts, the DCOM server is typically running by default as a Windows
-Service.
-
-DCOM is available only with the Windows operating system. Because DCOM
-is typically installed and preconfigured, minimal additional setup is
-required to use DCOM with GlassFish Server.
-
-Before setting up DCOM, decide which Windows user GlassFish Server will
-use when connecting to remote hosts. For the following reasons,
-administration is simplest if the Windows user is the user that starts
-the DAS:
-
-* Remote instances are started as the Windows user.
-* By default, the DAS assumes that the Windows user is the user that is
-running the DAS.
-
-[[GSHAG320]][[sthref6]]
-
-
-[[considerations-for-using-ssh-for-centralized-administration]]
-Considerations for Using SSH for Centralized Administration
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-In a typical GlassFish Server deployment, the DAS acts as the SSH
-client, and hosts where instances reside act as SSH servers. The SSH
-Server Daemon `sshd` must be running on hosts where instances reside,
-but is not required to be running on the DAS host. The DAS uses its own
-SSH client for communicating with hosts where instances reside. However,
-to generate keys and test SSH setup, a native SSH client must be
-installed on the DAS host.
-
-The requirements for SSH configuration and user management are different
-for each operating system on which GlassFish Server is supported.
-Therefore, the use of SSH for centralized administration involves using
-SSH tools to configure SSH on the operating system that you are using.
-
-On UNIX and Linux systems, SSH is typically installed and preconfigured,
-and requires minimal additional setup. On Windows systems, additional
-setup is required to install and configure an SSH provider.
-
-[[gksmt]][[GSHAG00262]][[obtaining-ssh-software]]
-
-Obtaining SSH Software
-++++++++++++++++++++++
-
-On UNIX and Linux systems, SSH software is typically installed as part
-of the base operating system.
-
-However, on Windows systems, you must install one of the following SSH
-providers:
-
-* http://www.cygwin.com/[Cygwin] (`http://www.cygwin.com/`) release
-1.7.6
-* http://www.mkssoftware.com[MKS Toolkit for Developers]
-(`http://www.mkssoftware.com`) release 9.2
-
-[[gkshj]][[GSHAG00263]][[determining-the-ssh-user]]
-
-Determining the SSH User
-++++++++++++++++++++++++
-
-Before setting up SSH, decide which SSH user GlassFish Server will use
-when connecting to remote hosts. For the following reasons,
-administration is simplest if the SSH user is the user that starts the
-DAS:
-
-* For public key authentication, the user that starts the DAS must be
-able to read the SSH user's private key file.
-* Remote instances are started as the SSH user.
-* By default, the DAS assumes that the SSH user is the user that is
-running the DAS.
-
-[[glghe]][[GSHAG00222]][[requirements-for-the-ssh-users-environment]]
-
-Requirements for the SSH User's Environment
-+++++++++++++++++++++++++++++++++++++++++++
-
-The environment of the SSH user on any remote host to which the user
-will connect must meet the requirements that are stated in
-"link:../release-notes/release-notes.html#GSRLN00252[Paths and Environment Settings for the JDK Software]"
-in GlassFish Server Open Source Edition Release Notes.
-
-The SSH user's environment on a host is set by the environment set-up
-files that are run when the user uses SSH to run a command on the host.
-You must ensure that these files set up the SSH user's environment
-correctly.
-
-The files that are run when the user uses SSH to run a command are
-different than the files that are run when the user logs in to a host.
-For example, in the bash shell, `.profile` and `.bashrc` are run when
-the user logs in, but only `.bashrc` is run when the user runs a
-command. Therefore, in the bash shell, you must ensure that `.bashrc`
-contains the required environment settings for the SSH user.
-
-[[glgfy]][[GSHAG00223]][[file-access-permissions-on-uac-enabled-windows-systems]]
-
-File Access Permissions on UAC-Enabled Windows Systems
-++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-The
-http://technet.microsoft.com/en-us/library/cc709691%28WS.10%29.aspx[User
-Account Control (UAC)]
-(`http://technet.microsoft.com/en-us/library/cc709691%28WS.10%29.aspx`)
-feature is available only on some versions of the Windows operating
-system, for example, Windows 7, Windows Vista, and Windows 2008.
-
-|=======================================================================
-
-
-You might be using a UAC-enabled Windows system and choose to store
-files for GlassFish Server instances in a directory other than the SSH
-user's home directory. In this situation, the SSH user must have native
-(that is, nonvirtual) read and write access to the file system where the
-instances are to be stored. The OS-level administrator has such access
-by default. You can also configure the system to grant such access to
-other users. For more information, see the documentation for the Windows
-operating system.
-
-[[CEGIFJJF]][[GSHAG448]][[setting-up-dcom-and-testing-the-dcom-set-up]]
-
-Setting Up DCOM and Testing the DCOM Set Up
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Setting up DCOM on a host involves the following tasks:
-
-* Verifying Windows operating system settings for the host
-* Enabling the Windows user to run scripts on the host
-* Setting up password authentication for the Windows user on the host
-
-Set up DCOM on all hosts where instances in your cluster will reside.
-
-After setting up DCOM on a host, test the connection over DCOM to the
-host.
-
-[[CEGDAFHD]][[GSHAG449]][[windows-operating-system-settings]]
-
-Windows Operating System Settings
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To enable access to a host over DCOM, ensure that the following items in
-the Windows operating system are set as follows on the host:
-
-* The following services are in the started state and are set to start
-automatically:
-
-** Server
-
-** Remote Registry
-* Network Access: Sharing security model for local accounts is set to
-Classic.
-* The following ports are open:
-
-** DCOM port 135 or 139
-
-** Windows Shares port 445
-
-[[CEGCJGCF]][[GSHAG450]][[to-enable-the-windows-user-to-run-scripts-on-a-remote-host]]
-
-To Enable the Windows User to Run Scripts on a Remote Host
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To run scripts on a remote host, full control over the following Windows
-registry keys must be allowed for the Windows user or the group that
-contains the Windows user:
-
-* One of the following keys, depending on the processor architecture of
-the host:
-
-** 32-bit architecture:
-HKEY_LOCAl_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID\\{76A64158-CB41-11D1-8B02-00600806D9B6}
-
-** 64-bit architecture:
-HKEY_LOCAl_MACHINE\SOFTWARE\Classes\CLSID\\{76A64158-CB41-11D1-8B02-00600806D9B6}
-* HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\\{72C24DD5-D70A-438B-8A42-98424B88AFB8}
-
-In some versions of Windows, only the user `NT SERVICE\TrustedInstaller`
-has full control over these Windows registry keys. If your version of
-Windows is configured in this way, you must modify these keys to allow
-full control over them for the Windows user or the group that contains
-the Windows user.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Only the operating-system-level administrator user can edit the Windows
-registry.
-
-|=======================================================================
-
-
-Perform this procedure for each Windows registry key that you are
-modifying on each host where instances in your cluster will reside.
-
-1.  If necessary, start the Registry Editor. +
-[source,oac_no_warn]
-----
-regedit.exe
-----
-The Registry Editor window opens.
-2.  In the Registry Editor window, navigate to the registry key that you
-are modifying.
-3.  Select the key, click mouse button 3, and from the pop-up menu that
-opens, select Permissions. +
-The Permissions window for the key opens.
-4.  Determine whether full control is allowed for the Windows user or
-the group that contains the Windows user.
-* If full control is allowed, no further action is required.
-* If full control is not allowed, allow full control as follows:
-1.  In the Permissions window, click Advanced. +
-The Advanced Security Settings window for the key opens.
-2.  In the Advanced Security Settings window, select the Owner tab.
-3.  From the Change owner to list, select the Windows user or the group
-that contains the Windows user.
-4.  Ensure that the Replace owner on subcontainer and objects option is
-selected.
-5.  Click Apply, then OK. +
-The Advanced Security Settings window closes. The Permissions window
-shows that full control is allowed for the Windows user or the group
-that contains the Windows user.
-6.  In the Permissions window, click OK. +
-The Permissions window closes.
-5.  After modifying all the Windows registry keys over which full
-control is required, quit the Registry Editor.
-
-[[GSHAG451]]
-
-Next Steps
-
-Set up password authentication for the Windows user as explained in
-link:#CEGCDCEF[To Set Up Password Authentication for the Windows User].
-
-[[CEGCDCEF]][[GSHAG452]][[to-set-up-password-authentication-for-the-windows-user]]
-
-To Set Up Password Authentication for the Windows User
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-When a GlassFish Server subcommand uses DCOM to log in to a remote host,
-GlassFish Server requires the Windows user's password to authenticate
-the Windows user. To provide this password securely to GlassFish Server,
-create a GlassFish Server password alias to represent the password and
-store this alias in a password file that is passed to the
-link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`] utility.
-
-[[GSHAG453]]
-
-Before You Begin
-
-Ensure that the following prerequisites are met:
-
-* The Windows user is a valid user on the host to which you are testing
-the connection over DCOM.
-* Items in the Windows operating system are set on the host as described
-in link:#CEGDAFHD[Windows Operating System Settings].
-* The Windows user is able to run scripts on the host. For more
-information, see link:#CEGCJGCF[To Enable the Windows User to Run
-Scripts on a Remote Host].
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  [[CEGGAHFH]]
-Create an alias for the Windows user's password.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Only the options that are required to complete this task are provided in
-this step. For information about all the options for creating a password
-alias, see the link:../reference-manual/create-password-alias.html#GSRFM00049[`create-password-alias`(1)] help page.
-
-|=======================================================================
-
-
-[source,oac_no_warn]
-----
-asadmin> create-password-alias alias-name
-----
-
-alias-name::
-  Your choice of name for the alias that you are creating.
-
-The `create-password-alias` subcommand prompts you to type the password
-for which you are creating an alias.
-3.  In response to the prompt, type the Windows user's password. +
-The `create-password-alias` subcommand prompts you to type the password
-again.
-4.  In response to the prompt, type the Windows user's password again.
-5.  Create a plain text file that contains the following entry for the
-password alias: +
-[source,oac_no_warn]
-----
-AS_ADMIN_WINDOWSPASSWORD=${ALIAS=alias-name}
-----
-alias-name::
-  The alias name that you specified in Step link:#CEGGAHFH[2]. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-When you create a `DCOM` node, pass this file as the `--passwordfile`
-option of the `asadmin` utility. For more information, see
-link:nodes.html#CHDIGBJB[To Create a `DCOM` Node].
-
-|=======================================================================
-
-
-[[GSHAG454]][[sthref7]]
-
-
-Example 2-1 Creating an Alias for the Windows User's Password
-
-This example creates an alias that is named `winuser-password` for the
-Windows user's password.
-
-[source,oac_no_warn]
-----
-$ asadmin create-password-alias winuser-password
-Enter the alias password>
-Enter the alias password again>
-Command create-password-alias executed successfully.
-----
-
-The entry in the password file for the `winuser-password` alias is as
-follows:
-
-[source,oac_no_warn]
-----
-AS_ADMIN_WINDOWSPASSWORD=${ALIAS=winuser-password}
-----
-
-[[GSHAG455]]
-
-See Also
-
-* link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)]
-* link:../reference-manual/create-password-alias.html#GSRFM00049[`create-password-alias`(1)]
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-password-alias` at the command line.
-
-[[GSHAG456]]
-
-Next Steps
-
-Test the DCOM setup as explained in link:#CEGJFADH[To Test the
-Connection Over DCOM to a Remote Host].
-
-[[CEGJFADH]][[GSHAG457]][[to-test-the-connection-over-dcom-to-a-remote-host]]
-
-To Test the Connection Over DCOM to a Remote Host
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Testing the connection over DCOM to a remote host verifies that the
-required Windows services are running, the required ports are open, and
-the Windows user has a valid user account on the host.
-
-Before attempting to perform any task that the requires the DAS contact
-the DCOM server on a remote host, test the connection over DCOM to the
-host. If this test fails, any attempt to perform a task that the
-requires the DAS contact the DCOM server on the host will also fail.
-Examples of such tasks are creating a DCOM node to represent the host or
-creating an instance that resides on the host. For more information, see
-link:nodes.html#CHDIGBJB[To Create a `DCOM` Node] and
-link:instances.html#gkqch[To Create an Instance Centrally].
-
-If you cannot connect to the host over DCOM, troubleshoot the DCOM setup
-before proceeding.
-
-[[GSHAG458]]
-
-Before You Begin
-
-Ensure that the following prerequisites are met:
-
-* The Windows user is a valid user on the host to which you are testing
-the connection over DCOM.
-* Items in the Windows operating system are set on the host as described
-in link:#CEGDAFHD[Windows Operating System Settings].
-* The Windows user is able to run scripts on the host. For more
-information, see link:#CEGCJGCF[To Enable the Windows User to Run
-Scripts on a Remote Host].
-* Password authentication is set up for the windows user as explained in
-link:#CEGCDCEF[To Set Up Password Authentication for the Windows User].
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  Run the `validate-dcom` subcommand. +
-Specify the file that contains the alias for the Windows user's password
-through the `--passwordfile` option of the `asadmin` utility. For more
-information about this file, see link:#CEGCDCEF[To Set Up Password
-Authentication for the Windows User]. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Only the options that are required to complete this task are provided in
-this step. For information about all the options for configuring the
-node, see the link:../reference-manual/validate-dcom.html#GSRFM796[`validate-dcom`(1)] help page.
-
-|=======================================================================
-
-[source,oac_no_warn]
-----
-C:\>asadmin --passwordfile filename validate-dcom host-name
-----
-filname::
-  The name of the file that contains the alias for the Windows user's
-  password.
-host-name::
-  The name of the host to which you are testing the connection over
-  DCOM.
-
-[[GSHAG459]][[sthref8]]
-
-
-Example 2-2 Testing the Connection Over DCOM to a Remote Host
-
-This example tests the connection over DCOM to the host `wpmdl2`.
-
-[source,oac_no_warn]
-----
-C:\> asadmin --passwordfile aspwalias.txt validate-dcom wpmdl2
-Command validate-dcom executed successfully.
-----
-
-[[GSHAG460]]
-
-See Also
-
-* link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)]
-* link:../reference-manual/validate-dcom.html#GSRFM796[`validate-dcom`(1)]
-* link:#CEGDAFHD[Windows Operating System Settings]
-* link:#CEGCJGCF[To Enable the Windows User to Run Scripts on a Remote
-Host]
-* link:nodes.html#CHDIGBJB[To Create a `DCOM` Node]
-* link:instances.html#gkqch[To Create an Instance Centrally]
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help validate-dcom` at the command line.
-
-[[gksiy]][[GSHAG00173]][[setting-up-cygwin-ssh-on-windows]]
-
-Setting Up Cygwin SSH on Windows
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Set up Cygwin SSH on the DAS host and on all hosts where instances in
-your cluster will reside.
-
-The following topics are addressed here:
-
-* link:#gksjn[To Download and Install Cygwin]
-* link:#gksin[To Set the Path for Windows and for the Cygwin Shell]
-* link:#gksov[To Set the Home Directory for the Cygwin SSH User]
-* link:#gkskx[To Configure and Start the Cygwin SSH Server Daemon
-`sshd`]
-
-[[gksjn]][[GSHAG00071]][[to-download-and-install-cygwin]]
-
-To Download and Install Cygwin
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-For centralized GlassFish Server administration, a basic Cygwin
-installation that includes the SSH client and the SSH server daemon
-`sshd` is sufficient. The default installation options are sufficient to
-create such a basic installation.
-
-1.  Log in as a user with Administrator privileges.
-2.  Create the folder `C:\cygwin`.
-3.  From the http://www.cygwin.com/[Cygwin home page]
-(`http://www.cygwin.com/`), download and save the `setup.exe` file to
-your desktop.
-4.  Run the `setup.exe` file.
-5.  Select the default for the following options:
-* Install from Internet
-* Install Root Directory: `C:\cygwin`
-* Install for All Users
-6.  Specify a folder for the local package directory that is not the
-Cygwin root folder, for example, `C:\cygwin\packages`.
-7.  Specify the connection method. +
-For example, if the host is connected to the Internet through a proxy
-server, specify the proxy server.
-8.  Select the mirror site from which to download the software.
-9.  Select the `openssh` package for installation.
-1.  Under the Net category, search for `openssh`.
-2.  Locate the `openssh` package and click Skip. +
-The package is selected.
-3.  Click Next. +
-Any unsatisfied dependencies are listed.
-10. Leave the Select Required Packages option selected and click Next +
-The packages are installed.
-11. Click Finish.
-
-[[GSHAG321]]
-
-See Also
-
-For detailed information about installing Cygwin, see
-"http://cygwin.com/cygwin-ug-net/setup-net.html#internet-setup[Internet
-Setup]" in Cygwin User's Guide
-(`http://cygwin.com/cygwin-ug-net/setup-net.html#internet-setup`).
-
-[[gksin]][[GSHAG00072]][[to-set-the-path-for-windows-and-for-the-cygwin-shell]]
-
-To Set the Path for Windows and for the Cygwin Shell
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To enable GlassFish Server tools to find commands for SSH, each user's
-path for Windows and for the Cygwin shell must contain the following
-directories:
-
-* The Cygwin `bin` directory, for example `C:\cygwin\bin`
-* The `bin` directory of the JDK software
-
-1.  Log in as a user with Administrator privileges. +
-Logging in as a user with Administrator privileges ensures that the
-change applies to all users.
-2.  In the System Information control panel, click Advanced>Environment
-Variables.
-3.  Add the following directories to the Path environment variable:
-* The Cygwin `bin` directory, for example `C:\cygwin\bin`
-* The `bin` directory of the JDK software
-
-[[gksov]][[GSHAG00073]][[to-set-the-home-directory-for-the-cygwin-ssh-user]]
-
-To Set the Home Directory for the Cygwin SSH User
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The SSH Server Daemon `sshd` locates a user's home directory from the
-configuration in the user database, not from environment variables such
-as `HOME`. To ensure that all GlassFish Server commands can run without
-errors, each SSH user must be configured to have a home directory.
-
-Each user on a Windows host where SSH is set up potentially has two home
-directories:
-
-* Windows home directory. GlassFish Server commands, which are run in a
-Windows command window, use the Windows home directory.
-* SSH home directory. SSH commands, which are run in a shell such as
-`bash` or `ksh`, use the SSH home directory.
-
-If these home directories are different, GlassFish Server and SSH each
-locate a user's `.ssh` directory in different directories. To simplify
-the set up of SSH, configure each user's home directory for SSH and
-Windows to be the same directory. A disadvantage of this approach is
-that the SSH home directory has spaces in its path name. Spaces in path
-names are cumbersome in the UNIX environment.
-
-1.  Log in as a user with Administrator privileges.
-2.  In the `c:\cygwin\etc\passwd` file, edit the home directory setting
-for the SSH user to specify the user's home directory for Windows.
-
-[[gkskx]][[GSHAG00074]][[to-configure-and-start-the-cygwin-ssh-server-daemon-sshd]]
-
-To Configure and Start the Cygwin SSH Server Daemon `sshd`
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-[[GSHAG322]]
-
-Before You Begin
-
-Ensure that the following prerequisites are met:
-
-* A user account is created for each user that will log in to the host
-through SSH.
-* A password is set for each user account. +
-The SSH server daemon `sshd` disallows authentication of any user for
-whose account a password is not set.
-
-1.  Double-click the Cygwin icon. +
-A Cygwin terminal is started.
-2.  If necessary, set the password for your user account.
-1.  Run the `passwd` command as follows: +
-[source,oac_no_warn]
-----
-$ passwd user-name
-----
-user-name::
-  The user name for your account.
-2.  Type a password. +
-The password for your Windows account is also set.
-3.  Configure SSH on the host.
-1.  Run the `ssh-host-config` command. +
-[source,oac_no_warn]
-----
-$ ssh-host-config
-----
-::
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Tip:
-
-If you are using Windows XP, specify the `-y` option of
-`ssh-host-config` to answer `yes` to all prompts. If you run
-`ssh-host-config` with the `-y` option, omit Step link:#gkuat[b].
-
-|=======================================================================
-
-2.  [[gkuat]]
-Ensure that the `StrictModes` and `PubkeyAuthentication` options are set
-to `yes` in the file `/etc/ssh_config`.
-
-The file `/etc/ssh_config` can also be accessed as
-`/cygdrive/c/cygwin/etc/sshd_config`.
-4.  Start the SSH server daemon `sshd`. +
-[source,oac_no_warn]
-----
-$ net start sshd
-----
-5.  Confirm that the SSH server daemon `sshd` is running. +
-[source,oac_no_warn]
-----
-$ cygrunsrv --query sshd
- Service             : sshd
- Display name        : CYGWIN sshd
- Current State       : Running
- Controls Accepted   : Stop
- Command             : /usr/sbin/sshd -D
-----
-
-[[GSHAG323]]
-
-Next Steps
-
-After you have completed the setup of SSH on a host, test the setup on
-the host as explained in link:#gkslw[Testing the SSH Setup on a Host].
-
-[[gkskf]][[GSHAG00174]][[setting-up-the-mks-toolkit-on-windows]]
-
-Setting Up the MKS Toolkit on Windows
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Set up the MKS Toolkit on the DAS host and on all hosts where instances
-in your cluster will reside.
-
-The following topics are addressed here:
-
-* link:#gksmq[To Install the MKS Toolkit]
-* link:#gksmu[To Set the Path for Windows and for the MKS Toolkit Shell]
-* link:#gksox[To Set the Home Directory for the MKS Toolkit SSH User]
-* link:#gksnx[To Configure and Start the MKS Toolkit SSH Server Daemon
-`sshd`]
-
-[[gksmq]][[GSHAG00075]][[to-install-the-mks-toolkit]]
-
-To Install the MKS Toolkit
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-For centralized GlassFish Server administration, the default
-installation of the MKS Toolkit is sufficient.
-
-Follow the instructions in the MKS Toolkit product documentation to
-install OpenSSH from the MKS Toolkit with default installation options.
-
-[[GSHAG324]]
-
-See Also
-
-For detailed information about installing MKS Toolkit, see
-"http://www.mkssoftware.com/docs/rn/relnotes_tk94.asp#install[Installing
-MKS Toolkit]" in MKS Toolkit v9.4 Release Notes
-(`http://www.mkssoftware.com/docs/rn/relnotes_tk94.asp#install`).
-
-[[gksmu]][[GSHAG00076]][[to-set-the-path-for-windows-and-for-the-mks-toolkit-shell]]
-
-To Set the Path for Windows and for the MKS Toolkit Shell
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To enable GlassFish Server tools to find commands for SSH, each user's
-path for Windows and for the MKS Toolkit shell must contain the
-following directories:
-
-* The MKS Toolkit `bin` directory, for example
-`C:\Program Files\MKS Toolkit\mksnt`
-* The `bin` directory of the JDK software
-
-The MKS Toolkit installer automatically adds the MKS Toolkit `bin`
-directory to the path. However, you must add the `bin` directory of the
-JDK software to the path yourself.
-
-1.  Log in as a user with Administrator privileges. +
-Logging in as a user with Administrator privileges ensures that the
-change applies to all users.
-2.  In the System Information control panel, click Advanced>Environment
-Variables.
-3.  Add the `bin` directory of the JDK software to the Path environment
-variable.
-
-[[gksox]][[GSHAG00077]][[to-set-the-home-directory-for-the-mks-toolkit-ssh-user]]
-
-To Set the Home Directory for the MKS Toolkit SSH User
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The SSH Server Daemon `sshd` locates a user's home directory from the
-configuration in the user database, not from environment variables such
-as `HOME`. To ensure that all GlassFish Server commands can run without
-errors, each SSH user must be configured to have a home directory.
-
-Each user on a Windows host where SSH is set up potentially has two home
-directories:
-
-* Windows home directory. GlassFish Server commands, which are run in a
-Windows command window, use the Windows home directory.
-* SSH home directory. SSH commands, which are run in a shell such as
-`bash` or `ksh`, use the SSH home directory.
-
-If these home directories are different, GlassFish Server and SSH each
-locate a user's `.ssh` directory in different directories. To simplify
-the set up of SSH, configure each user's home directory for SSH and
-Windows to be the same directory. A disadvantage of this approach is
-that the SSH home directory has spaces in its path name. Spaces in path
-names are cumbersome in the UNIX environment.
-
-1.  [[gkslo]]
-Compare the pairs of settings for Windows and the MKS Toolkit that are
-listed in the following table.
-
-[width="100%",cols="<50%,<50%",options="header",]
-|===============================================
-|Windows Environment Variable |MKS Toolkit Field
-|`HOMEPATH` |Home Directory
-|`HOMEDRIVE` |Home Directory Drive
-|===============================================
-
-
-1.  In a Windows command window, determine the values of the `HOMEPATH`
-and `HOMEDRIVE` environment variables.
-2.  In an MKS Toolkit shell, determine the current settings of the Home
-Directory and Home Directory Drive fields for the user. +
-[source,oac_no_warn]
-----
-$ userinfo user-name
-----
-user-name::
-  The user name for the user whose home directory you are setting, for
-  example `Administrator`.
-2.  If the settings do not match, update setting of each MKS Toolkit
-field to match its corresponding Windows environment variable. +
-If the settings match, no further action is required. +
-To update the settings, run the following command in an MKS Toolkit
-shell: +
-[source,oac_no_warn]
-----
-$ userinfo -u -fHomeDirDrive:"drive" -fHomeDir:"path" user-name
-----
-drive::
-  The drive identifier of the disk drive on which the user's Windows
-  home directory resides, for example, `C:`.
-path::
-  The path to the user's Windows home directory, for example,
-  `\Documents and Settings\Administrator`.
-user-name::
-  The user name for the user whose home directory you are setting, for
-  example `Administrator`. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Do not set the `HOME` environment variable explicitly. If Home Directory
-and Home Directory Drive are set correctly, the `HOME` environment
-variable specifies the correct path by default.
-
-|=======================================================================
-
-3.  In an MKS Toolkit shell, confirm that the settings were updated. +
-[source,oac_no_warn]
-----
-$ userinfo user-name
-----
-user-name::
-  The user name for the user whose home directory you are setting, for
-  example `Administrator`.
-4.  Log out of the host and log in to the host again.
-5.  Confirm that the home directories are the same as explained in
-Step link:#gkslo[1].
-
-[[GSHAG00014]][[gksnj]]
-
-
-Example 2-3 Setting the Home Directory for the MKS Toolkit User
-
-This example sets the home directory for the MKS Toolkit user
-`Administrator` to `C:\Documents and Settings\Administrator`.
-
-[source,oac_no_warn]
-----
-$ userinfo -u -fHomeDirDrive:"C:"
--fHomeDir:"\Documents and Settings\Administrator" Administrator
-----
-
-[[gksnx]][[GSHAG00078]][[to-configure-and-start-the-mks-toolkit-ssh-server-daemon-sshd]]
-
-To Configure and Start the MKS Toolkit SSH Server Daemon `sshd`
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Do not set the command shell to `cmd.exe`. The use of SSH for
-centralized GlassFish Server administration requires a shell in the
-style of a UNIX shell.
-
-|=======================================================================
-
-
-1.  From the Programs menu, choose MKS
-Toolkit>Configuration>Configuration Information.
-2.  Enable password authentication and strict modes.
-1.  Click the Secure Shell Service tab.
-2.  Select the Password Authentication option.
-3.  Click Advanced settings.
-4.  Click the Login tab.
-5.  Deselect the Strict Modes option.
-3.  If you are using SSH key-file authentication, enable `MKSAUTH`
-password authentication.
-1.  Click the Authentication tab.
-2.  Under Enable/Disable Password using MKSAUTH, type the user's
-password and click the Enable.
-4.  Start the SSH server daemon `sshd`.
-5.  Confirm that the SSH server daemon `sshd` is running. +
-[source,oac_no_warn]
-----
-$ service query MKSSecureSH
-Name:           MKS Secure Shell Service
-Service Type:   WIN32_OWN_PROCESS
-Current State:  RUNNING
-Controls Accepted:      ACCEPT_STOP
-Check Point:    0
-Wait Hint:      0
-Start Type:     AUTO_START
-Error Control:  IGNORE
-Path:           "C:\Program Files\MKS Toolkit\bin\secshd.exe"
-Dependency:     NuTCRACKERService
-Dependency:     tcpip
-Service Start Name:     LocalSystem
-----
-
-[[GSHAG325]]
-
-Next Steps
-
-After you have completed the setup of SSH on a host, test the setup on
-the host as explained in link:#gkslw[Testing the SSH Setup on a Host].
-
-[[gksja]][[GSHAG00175]][[setting-up-ssh-on-unix-and-linux-systems]]
-
-Setting Up SSH on UNIX and Linux Systems
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Setting up SSH on UNIX and Linux systems involves verifying that the SSH
-server daemon `sshd` is running and, if necessary, starting this daemon.
-Set up SSH on the DAS host and on all hosts where instances in your
-cluster will reside.
-
-On UNIX and Linux systems, SSH software is typically installed as part
-of the base operating system. If SSH is not installed, download and
-install the appropriate http://www.openssh.com/[OpenSSH]
-(`http://www.openssh.com/`) SSH package for your operating system.
-
-How to set up SSH on UNIX and Linux systems depends on the flavor of the
-operating system that you are running, as explained in the following
-sections:
-
-* link:#gksjx[To Set Up SSH on Oracle Solaris Systems]
-* link:#gkspz[To Set Up SSH on MacOS Systems]
-* link:#gksrd[To Set Up SSH on Linux systems]
-
-[[gksjx]][[GSHAG00079]][[to-set-up-ssh-on-oracle-solaris-systems]]
-
-To Set Up SSH on Oracle Solaris Systems
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-1.  Ensure that the following options in the configuration file
-`/etc/ssh/sshd_config` are set to `yes`:
-* `StrictModes`
-* `PubkeyAuthentication`
-2.  Determine if the SSH server daemon `sshd` is running. +
-[source,oac_no_warn]
-----
-$ /usr/bin/svcs ssh
-----
-3.  If the SSH server daemon `sshd` is not running, start this daemon. +
-If the daemon is running, no further action is required. +
-[source,oac_no_warn]
-----
-$ /usr/sbin/svcadm enable ssh
-----
-
-[[GSHAG00015]][[gkspo]]
-
-
-Example 2-4 Determining if the `sshd` Daemon Is Running on an Oracle
-Solaris System
-
-This example confirms that the SSH server daemon `sshd` is running on an
-Oracle Solaris system.
-
-[source,oac_no_warn]
-----
-$ /usr/bin/svcs ssh
-STATE          STIME    FMRI
-online         Jul_06   svc:/network/ssh:default
-----
-
-[[GSHAG326]]
-
-See Also
-
-http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1svcs-1[`svcs`(1)]
-
-[[GSHAG327]]
-
-Next Steps
-
-After you have completed the setup of SSH on a host, test the setup on
-the host as explained in link:#gkslw[Testing the SSH Setup on a Host].
-
-[[gkspz]][[GSHAG00080]][[to-set-up-ssh-on-macos-systems]]
-
-To Set Up SSH on MacOS Systems
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-1.  Open System Preferences and click Sharing. +
-The Sharing window opens.
-2.  Ensure that Remote Login is selected in the Service list.
-3.  Ensure that either of the following is allowed access:
-* All Users
-* The user that running the DAS or instance
-4.  (MacOS 10.6 systems only) Ensure that the SSH server daemon `sshd`
-allows password authentication. +
-On MacOS 10.5 systems, the SSH server daemon `sshd` allows password
-authentication by default. However, on MacOS 10.6 systems, the SSH
-server daemon `sshd` disallows password authentication by default.
-1.  Edit the configuration file `/etc/sshd_config` to set the
-`PasswordAuthentication` option to `yes`.
-2.  Stop the SSH server daemon `sshd`. +
-[source,oac_no_warn]
-----
-$ sudo launchctl stop com.openssh.sshd
-----
-3.  Start the SSH server daemon `sshd`. +
-[source,oac_no_warn]
-----
-$ sudo launchctl start com.openssh.sshd
-----
-
-[[GSHAG328]]
-
-Next Steps
-
-After you have completed the setup of SSH on a host, test the setup on
-the host as explained in link:#gkslw[Testing the SSH Setup on a Host].
-
-[[gksrd]][[GSHAG00081]][[to-set-up-ssh-on-linux-systems]]
-
-To Set Up SSH on Linux systems
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-1.  Ensure that the following options in the configuration file
-`/etc/ssh/sshd_config` are set to `yes`:
-* `StrictModes`
-* `PubkeyAuthentication`
-2.  Determine if the SSH server daemon `sshd` is running. +
-[source,oac_no_warn]
-----
-$ /sbin/service sshd status
-----
-3.  If the SSH server daemon `sshd` is not running, start this daemon. +
-If the daemon is running, no further action is required. +
-[source,oac_no_warn]
-----
-$ /sbin/service sshd start
-----
-
-[[GSHAG00016]][[gkssf]]
-
-
-Example 2-5 Determining if the `sshd` Daemon Is Running on a Linux
-System
-
-This example confirms that the SSH server daemon `sshd` is running on a
-Linux system.
-
-[source,oac_no_warn]
-----
-$ /sbin/service sshd status
-openssh-daemon (pid  2373) is running...
-----
-
-[[GSHAG329]]
-
-Next Steps
-
-After you have completed the setup of SSH on a host, test the setup on
-the host as explained in link:#gkslw[Testing the SSH Setup on a Host].
-
-[[gkslw]][[GSHAG00176]][[testing-the-ssh-setup-on-a-host]]
-
-Testing the SSH Setup on a Host
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-After setting up SSH on a host, test the setup to ensure that you can
-use SSH to contact the host from another host. Testing the SSH setup on
-a host verifies that the SSH server daemon `sshd` is running and that
-the SSH user has a valid user account on the host.
-
-If you cannot use SSH to contact the host, troubleshoot the SSH setup
-before setting up SSH user authentication.
-
-[[gkskk]][[GSHAG00082]][[to-test-the-ssh-setup-on-a-host]]
-
-To Test the SSH Setup on a Host
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-1.  From another host, use SSH to log in into the host that you are
-testing as the SSH user. +
-[source,oac_no_warn]
-----
-$ ssh -l user-name host-name
-----
-user-name::
-  The user name for the SSH user's account on the host.
-host-name::
-  The host name of the host that you are logging in to.
-2.  In response to the prompt, type your password. +
-If this step succeeds, your setup of SSH is complete. +
-The first time that you connect to a host, you might be warned that the
-authenticity cannot be established and be asked if you want to continue
-connection. If you trust the host, answer `yes` to connect to the host.
-
-[[GSHAG330]]
-
-Troubleshooting
-
-To obtain diagnostic information, use the `-v` option of the
-command-line SSH client and the `-d` option of the SSH server daemon
-`sshd`. How to start the SSH server daemon `sshd` manually depends on
-the operating system and SSH provider that you are using.
-
-If the SSH server daemon `sshd` is set up on a host that has a firewall,
-ensure that a rule is defined to allow inbound traffic on the SSH port.
-The default SSH port is port 22.
-
-If your connection is refused, the SSH server daemon `sshd` is not
-running and you must start the daemon. For instructions, see the
-following sections:
-
-* link:#gkskx[To Configure and Start the Cygwin SSH Server Daemon
-`sshd`]
-* link:#gksnx[To Configure and Start the MKS Toolkit SSH Server Daemon
-`sshd`]
-* link:#gksjx[To Set Up SSH on Oracle Solaris Systems]
-
-If your connection is accepted, but you cannot log in, ensure that the
-SSH user has a valid user account on the host.
-
-[[GSHAG331]]
-
-Next Steps
-
-After testing the SSH setup, set up SSH user authentication to enable
-SSH to authenticate users without prompting for a password. For more
-information, see link:#gkshh[Setting Up SSH User Authentication].
-
-[[gkshh]][[GSHAG00177]][[setting-up-ssh-user-authentication]]
-
-Setting Up SSH User Authentication
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-When a GlassFish Server subcommand uses SSH to log in to a remote host,
-GlassFish Server must be able to authenticate the SSH user. Setting up
-SSH user authentication ensures that this requirement is met.
-
-Before setting up SSH user authentication, determine the authentication
-scheme to use. If SSH is already deployed at your site, the
-authentication scheme to use might already be chosen for you.
-
-The following table lists the authentication schemes that GlassFish
-Server supports. The table also lists the advantages and disadvantages
-of each authentication scheme.
-
-[width="100%",cols="<34%,<33%,<33%",options="header",]
-|=======================================================================
-|Authentication Scheme |Advantages |Disadvantages
-|Public key without encryption |GlassFish Server provides tools to
-simplify set up. |SSH must be configured to locate users' key files in
-the correct location. File access permissions for key files and the
-directory that contains the key files must be set correctly.
-
-|Public key with passphrase-protected encryption |This scheme is more
-secure than public key authentication without encryption. |SSH must be
-configured to locate users' key files in the correct location. File
-access permissions for key files and the directory that contains the key
-files must be set correctly. For each SSH user, GlassFish Server
-password aliases are required for the encryption passphrase.
-
-|Password |No SSH configuration is required to locate key files or to
-ensure that file access permissions are correct. |For each SSH user,
-GlassFish Server password aliases are required for the SSH password.
-|=======================================================================
-
-
-The following topics are addressed here:
-
-* link:#gksqe[To Set Up Public Key Authentication Without Encryption]
-* link:#gktaq[To Set Up Encrypted Public Key Authentication]
-* link:#gktbd[To Set Up Password Authentication]
-
-[[gksqe]][[GSHAG00083]][[to-set-up-public-key-authentication-without-encryption]]
-
-To Set Up Public Key Authentication Without Encryption
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `setup-ssh` subcommand in local mode to set up public key
-authentication without encryption. This subcommand enables you to set up
-public key authentication on multiple hosts in a single operation.
-
-The `setup-ssh` subcommand generates a key pair and distributes the
-public key file to specified hosts. The private key file and the public
-key file are protected only by the file system's file access
-permissions. If you require additional security, set up public key
-authentication with passphrase-protected encryption as explained in
-link:#gktaq[To Set Up Encrypted Public Key Authentication].
-
-[[GSHAG332]]
-
-Before You Begin
-
-Ensure that the following prerequisites are met:
-
-* SSH is set up on each host where you are setting up public key
-authentication. For more information, see the following sections:
-
-** link:#gksiy[Setting Up Cygwin SSH on Windows]
-
-** link:#gkskf[Setting Up the MKS Toolkit on Windows]
-
-** link:#gksja[Setting Up SSH on UNIX and Linux Systems]
-* Only the SSH user has write access to the following files and
-directories on each host where you are setting up public key
-authentication:
-
-** The SSH user's home directory
-
-** The `~/.ssh` directory
-
-** The `authorized_key` file +
-If other users can write to these files and directories, the secure
-service might not trust the `authorized_key` file and might disallow
-public key authentication.
-
-1.  Generate an SSH key pair and distribute the public key file to the
-hosts where you are setting up public key authentication. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Only the options that are required to complete this task are provided in
-this step. For information about all the options for setting up an SSH
-key, see the link:../reference-manual/setup-ssh.html#GSRFM00229[`setup-ssh`(1)] help page.
-
-|=======================================================================
-
-[source,oac_no_warn]
-----
-asadmin> setup-ssh [--sshuser sshuser] host-list
-----
-sshuser::
-  The SSH user for which you are generating the SSH key pair. If you are
-  running the subcommand as the SSH user, you may omit this option.
-host-list::
-  A space-separated list of the names of the hosts where the SSH public
-  key is to be distributed. +
-After generating the SSH key pair, the subcommand uses SSH to log in to
-each host in host-list as the SSH user to distribute the public key.
-Each time a password is required to log in to a host, you are prompted
-for the SSH user's password.
-2.  In response to each prompt for a password, type the SSH user's
-password.
-
-[[GSHAG00017]][[gktat]]
-
-
-Example 2-6 Setting Up Public Key Authentication Without Encryption
-
-This example generates and sets up an SSH key for the user `gfuser` on
-the hosts `sua01` and `sua02`. The command is run by the user `gfuser`.
-
-[source,oac_no_warn]
-----
-asadmin> setup-ssh --generatekey=true sua01 sua02
-Enter SSH password for gfuser@sua01>
-Created directory /home/gfuser/.ssh
-/usr/bin/ssh-keygen successfully generated the identification /home/gfuser/.ssh/id_rsa
-Copied keyfile /home/gfuser/.ssh/id_rsa.pub to gfuser@sua01
-Successfully connected to gfuser@sua01 using keyfile /home/gfuser/.ssh/id_rsa
-Copied keyfile /home/gfuser/.ssh/id_rsa.pub to gfuser@sua02
-Successfully connected to gfuser@sua02 using keyfile /home/gfuser/.ssh/id_rsa
-Command setup-ssh executed successfully.
-----
-
-[[GSHAG333]]
-
-Next Steps
-
-After setting up public key authentication, test the setup by using
-`ssh` to log in as the SSH user to each host where the public key was
-distributed. For each host, log in first with the unqualified host name
-and then with the fully qualified name. If SSH does not prompt for
-password, public key authentication is set up correctly on the host.
-
-If you are prompted for a password, verify that the public key file was
-copied correctly to the SSH user's `authorized_keys` file.
-
-[[GSHAG334]]
-
-Troubleshooting
-
-Setup might fail because file access permissions in the SSH user's home
-directory are too permissive. In this situation, ensure that the file
-access permissions in the SSH user's home directory meet the
-requirements for performing this procedure.
-
-If you have set the file access permissions in the SSH user's home
-directory correctly, setup might still fail if you are using the MKS
-Toolkit. In this situation, correct the problem in one of the following
-ways:
-
-* On each remote host, copy the public key file to the SSH user's
-`~/.ssh` directory and import the file. To import the file, select the
-Secure Service tab in the MKS configuration GUI and click Passwordless.
-* Disable strict modes.
-
-[[GSHAG335]]
-
-See Also
-
-* link:#gksiy[Setting Up Cygwin SSH on Windows]
-* link:#gkskf[Setting Up the MKS Toolkit on Windows]
-* link:#gksja[Setting Up SSH on UNIX and Linux Systems]
-* link:../reference-manual/setup-ssh.html#GSRFM00229[`setup-ssh`(1)]
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help setup-ssh` at the command line.
-
-[[gktaq]][[GSHAG00084]][[to-set-up-encrypted-public-key-authentication]]
-
-To Set Up Encrypted Public Key Authentication
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Encrypted key file authentication uses an encrypted private key file
-that is protected with a passphrase. This passphrase must be provided to
-use the private key to unlock the public key. If you require encrypted
-public key authentication, you must use the SSH utility `ssh-keygen` to
-generate an SSH key pair with an encrypted private key. You can then use
-the `setup-ssh` subcommand to distribute the public key file to
-specified hosts.
-
-To use the encrypted key file, GlassFish Server requires the passphrase
-with which the key file was encrypted. To provide this passphrase
-securely to GlassFish Server, create a GlassFish Server password alias
-to represent the passphrase and store this alias in a password file that
-is passed to the link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`] utility.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Only the options that are required to complete this task are provided in
-each step. For information about all the options for the commands and
-subcommands in this task, see their help pages or man pages.
-
-|=======================================================================
-
-
-[[GSHAG336]]
-
-Before You Begin
-
-Ensure that the following prerequisites are met:
-
-* SSH is set up on each host where you are setting up public key
-authentication. For more information, see the following sections:
-
-** link:#gksiy[Setting Up Cygwin SSH on Windows]
-
-** link:#gkskf[Setting Up the MKS Toolkit on Windows]
-
-** link:#gksja[Setting Up SSH on UNIX and Linux Systems]
-* Only the SSH user has write access to the following files and
-directories on each host where you are setting up public key
-authentication:
-
-** The SSH user's home directory
-
-** The `~/.ssh` directory
-
-** The `authorized_key` file +
-If other users can write to these files and directories, the secure
-service might not trust the `authorized_key` file and might disallow
-public key authentication.
-
-1.  Generate an SSH key pair with an encrypted private key file. +
-Use the SSH utility
-http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1ssh-keygen-1[`ssh-keygen`]
-for this purpose. +
-[source,oac_no_warn]
-----
-$ ssh-keygen -t type
-----
-type::
-  The algorithm that is to be used for the key and which must be `rsa`,
-  `dsa`, or `rsa1`. +
-The `ssh-keygen` utility prompts you for a file in which to save the
-key.
-2.  To simplify the distribution of the key file, accept the default
-file. +
-The `ssh-keygen` utility prompts you for a passphrase.
-3.  [[gktbh]]
-In response to the prompt, type your choice of passphrase for encrypting
-the private key file.
-
-The `ssh-keygen` utility prompts you to type the passphrase again.
-4.  In response to the prompt, type the passphrase that you set in
-Step link:#gktbh[3].
-5.  Distribute the public key file to the hosts where you are setting up
-public key authentication. +
-Use the link:../reference-manual/setup-ssh.html#GSRFM00229[`setup-ssh`] `asadmin` subcommand for this
-purpose. +
-[source,oac_no_warn]
-----
-$ asadmin setup-ssh --generatekey=false host-list
-----
-host-list::
-  A space-separated list of the names of the hosts where the SSH public
-  key is to be distributed. +
-The subcommand uses SSH to log in to each host in host-list as the SSH
-user to distribute the public key. Each time a passphrase or a password
-is required to log in to a host, you are prompted for the passphrase or
-the SSH user's password.
-6.  In response to each prompt, type the requested information.
-* In response to each prompt for a passphrase, type the passphrase that
-you set in Step link:#gktbh[3].
-* In response to each prompt for a password, type the SSH user's
-password.
-7.  [[gktbm]]
-Create a GlassFish Server password alias for the passphrase that you set
-in Step link:#gktbh[3].
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  Run the link:../reference-manual/create-password-alias.html#GSRFM00049[`create-password-alias`] `asadmin`
-subcommand. +
-[source,oac_no_warn]
-----
-$ asadmin create-password-alias alias-name
-----
-alias-name::
-  Your choice of name for the alias that you are creating. +
-The `create-password-alias` subcommand prompts you to type the
-passphrase for which you are creating an alias.
-3.  In response to the prompt, type the passphrase that you set in
-Step link:#gktbh[3]. +
-The `create-password-alias` subcommand prompts you to type the
-passphrase again.
-4.  In response to the prompt, type the passphrase that you set in
-Step link:#gktbh[3] again.
-8.  Create a plain text file that contains the following entry for the
-passphrase alias: +
-[source,oac_no_warn]
-----
-AS_ADMIN_SSHKEYPASSPHRASE=${ALIAS=alias-name}
-----
-alias-name::
-  The alias name that you specified in Step link:#gktbm[7]. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-When you create an `SSH` node, pass this file as the `--passwordfile`
-option of the `asadmin` utility. For more information, see
-link:nodes.html#gkrnf[To Create an `SSH` Node].
-
-|=======================================================================
-
-
-[[GSHAG00018]][[gktav]]
-
-
-Example 2-7 Setting Up Encrypted Public Key Authentication
-
-This example generates an SSH key pair with an encrypted private key for
-the user `gfadmin` and distributes the public key to the hosts `sj01`
-and `ja02`. The example also creates an alias that is named
-`ssh-key-passphrase` for the private key's passphrase.
-
-[source,oac_no_warn]
-----
-$ ssh-keygen -t rsa
-Generating public/private rsa key pair.
-Enter file in which to save the key (/home/gfadmin/.ssh/id_rsa):
-Enter passphrase (empty for no passphrase):
-Enter same passphrase again:
-Your identification has been saved in /home/gfadmin/.ssh/id_rsa.
-Your public key has been saved in /home/gfadmin/.ssh/id_rsa.pub.
-The key fingerprint is:
-db:b5:f6:0d:fe:16:33:91:20:64:90:1a:84:66:f5:d0 gfadmin@dashost
-$ asadmin setup-ssh --generatekey=false sj01 sj02
-Key /home/gfadmin/.ssh/id_rsa is encrypted
-Enter key passphrase>
-Enter SSH password for gfadmin@sj01>
-Copied keyfile /home/gfadmin/.ssh/id_rsa.pub to gfadmin@sj01
-Successfully connected to gfadmin@sj01 using keyfile /home/gfadmin/.ssh/id_rsa
-Successfully connected to gfadmin@sj02 using keyfile /home/gfadmin/.ssh/id_rsa
-SSH public key authentication is already configured for gfadmin@sj02
-Command setup-ssh executed successfully.
-$ asadmin create-password-alias ssh-key-passphrase
-Enter the alias password>
-Enter the alias password again>
-Command create-password-alias executed successfully.
-----
-
-The entry in the password file for the `ssh-key-passphrase` alias is as
-follows:
-
-[source,oac_no_warn]
-----
-AS_ADMIN_SSHKEYPASSPHRASE=${ALIAS=ssh-key-passphrase}
-----
-
-[[GSHAG337]]
-
-Troubleshooting
-
-Setup might fail because file access permissions in the SSH user's home
-directory are too permissive. In this situation, ensure that the file
-access permissions in the SSH user's home directory meet the
-requirements for performing this procedure.
-
-If you have set the file access permissions in the SSH user's home
-directory correctly, setup might still fail if you are using the MKS
-Toolkit. In this situation, correct the problem in one of the following
-ways:
-
-* On each remote host, copy the public key file to the SSH user's
-`~/.ssh` directory and import the file. To import the file, select the
-Secure Service tab in the MKS configuration GUI and click Passwordless.
-* Disable strict modes.
-
-[[GSHAG338]]
-
-See Also
-
-* link:#gksiy[Setting Up Cygwin SSH on Windows]
-* link:#gkskf[Setting Up the MKS Toolkit on Windows]
-* link:#gksja[Setting Up SSH on UNIX and Linux Systems]
-* link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)]
-* link:../reference-manual/create-password-alias.html#GSRFM00049[`create-password-alias`(1)]
-* link:../reference-manual/setup-ssh.html#GSRFM00229[`setup-ssh`(1)]
-* http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1ssh-keygen-1[`ssh-keygen`(1)]
-
-You can also view the full syntax and options of the subcommands by
-typing the following commands at the command line:
-
-* `asadmin help create-password-alias`
-* `asadmin help setup-ssh`
-
-[[gktbd]][[GSHAG00085]][[to-set-up-password-authentication]]
-
-To Set Up Password Authentication
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To use SSH to log in to a remote host, GlassFish Server requires the SSH
-user's password. To provide this password securely to GlassFish Server,
-create a GlassFish Server password alias to represent the password and
-store this alias in a password file that is passed to the
-link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`] utility.
-
-[[GSHAG339]]
-
-Before You Begin
-
-Ensure that SSH is set up on each host where you are setting up password
-authentication. For more information, see the following sections:
-
-* link:#gksiy[Setting Up Cygwin SSH on Windows]
-* link:#gkskf[Setting Up the MKS Toolkit on Windows]
-* link:#gksja[Setting Up SSH on UNIX and Linux Systems]
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  [[gktbb]]
-Create an alias for the SSH user's password.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Only the options that are required to complete this task are provided in
-this step. For information about all the options for creating a password
-alias, see the link:../reference-manual/create-password-alias.html#GSRFM00049[`create-password-alias`(1)] help page.
-
-|=======================================================================
-
-
-[source,oac_no_warn]
-----
-asadmin> create-password-alias alias-name
-----
-
-alias-name::
-  Your choice of name for the alias that you are creating.
-
-The `create-password-alias` subcommand prompts you to type the password
-for which you are creating an alias.
-3.  In response to the prompt, type the SSH user's password. +
-The `create-password-alias` subcommand prompts you to type the password
-again.
-4.  In response to the prompt, type the SSH user's password again.
-5.  Create a plain text file that contains the following entry for the
-password alias: +
-[source,oac_no_warn]
-----
-AS_ADMIN_SSHPASSWORD=${ALIAS=alias-name}
-----
-alias-name::
-  The alias name that you specified in Step link:#gktbb[2]. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-When you create an `SSH` node, pass this file as the `--passwordfile`
-option of the `asadmin` utility. For more information, see
-link:nodes.html#gkrnf[To Create an `SSH` Node].
-
-|=======================================================================
-
-
-[[GSHAG00019]][[gktba]]
-
-
-Example 2-8 Creating an Alias for the SSH User's Password
-
-This example creates an alias that is named `ssh-password` for the SSH
-user's password.
-
-[source,oac_no_warn]
-----
-$ asadmin create-password-alias ssh-password
-Enter the alias password>
-Enter the alias password again>
-Command create-password-alias executed successfully.
-----
-
-The entry in the password file for the `ssh-password` alias is as
-follows:
-
-[source,oac_no_warn]
-----
-AS_ADMIN_SSHPASSWORD=${ALIAS=ssh-password}
-----
-
-[[GSHAG340]]
-
-See Also
-
-* link:#gksiy[Setting Up Cygwin SSH on Windows]
-* link:#gkskf[Setting Up the MKS Toolkit on Windows]
-* link:#gksja[Setting Up SSH on UNIX and Linux Systems]
-* link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)]
-* link:../reference-manual/create-password-alias.html#GSRFM00049[`create-password-alias`(1)]
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-password-alias` at the command line.
-
-[[gkshn]][[GSHAG00178]][[installing-and-removing-glassfish-server-software-on-multiple-hosts]]
-
-Installing and Removing GlassFish Server Software on Multiple Hosts
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-GlassFish Server software must be installed on all hosts where GlassFish
-Server will run. How to install GlassFish Server software on multiple
-hosts depends on the degree of control that you require over the
-installation on each host.
-
-* If you require complete control over the installation on each host,
-install the software from a GlassFish Server distribution on each host
-individually. For more information, see link:../installation-guide/toc.html#GSING[GlassFish Server
-Open Source Edition Installation Guide].
-* If the same set up on each host is acceptable, copy an existing
-GlassFish Server installation to the hosts. For more information, see
-link:#gksil[To Copy a GlassFish Server Installation to Multiple Hosts].
-
-GlassFish Server also enables you to remove GlassFish Server software
-from multiple hosts in a single operation. For more information, see
-link:#gktaw[To Remove GlassFish Server Software From Multiple Hosts].
-
-The following topics are addressed here:
-
-* link:#gksil[To Copy a GlassFish Server Installation to Multiple Hosts]
-* link:#gktaw[To Remove GlassFish Server Software From Multiple Hosts]
-
-[[gksil]][[GSHAG00086]][[to-copy-a-glassfish-server-installation-to-multiple-hosts]]
-
-To Copy a GlassFish Server Installation to Multiple Hosts
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `install-node-dcom` subcommand or the `install-node-ssh`
-subcommand in local mode to copy an installation of GlassFish Server
-software to multiple hosts.
-
-[[GSHAG341]]
-
-Before You Begin
-
-Ensure that DCOM or SSH is set up on the host where you are running the
-subcommand and on each host where you are copying the GlassFish Server
-software.
-
-Run the appropriate subcommand for the protocol that is set up for
-communication between the hosts.
-
-* If DCOM is set up for communication between the hosts, run the
-`install-node-dcom` subcommand. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Only the options that are required to complete this task are provided in
-this step. For information about all the options for copying an
-installation of GlassFish Server software, see the
-link:../reference-manual/install-node-dcom.html#GSRFM626[`install-node-dcom`(1)] help page.
-
-|=======================================================================
-
-[source,oac_no_warn]
-----
-asadmin> install-node-dcom host-list
-----
-host-list::
-  A space-separated list of the names of the hosts where you are copying
-  the installation of GlassFish Server software.
-* If SSH is set up for communication between the hosts, run the
-`install-node-ssh` subcommand. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Only the options that are required to complete this task are provided in
-this step. For information about all the options for copying an
-installation of GlassFish Server software, see the
-link:../reference-manual/install-node-ssh.html#GSRFM628[`install-node-ssh`(1)] help page.
-
-|=======================================================================
-
-[source,oac_no_warn]
-----
-asadmin> install-node-ssh host-list
-----
-host-list::
-  A space-separated list of the names of the hosts where you are copying
-  the installation of GlassFish Server software.
-
-[[GSHAG461]][[sthref9]]
-
-
-Example 2-9 Copying a GlassFish Server Installation to Multiple
-DCOM-Enabled Hosts
-
-This example copies the GlassFish Server software on the host where the
-subcommand is run to the default location on the DCOM-enabled hosts
-`wpmdl1.example.com` and `wpmdl2.example.com`.
-
-Some lines of output are omitted from this example for readability.
-
-[source,oac_no_warn]
-----
-asadmin> install-node-dcom wpmdl1.example.com wpmdl2.example.com
-Created installation zip C:\glassfish8107276692860773166.zip
-Copying 85760199 bytes..........................................................
-....................................
-WROTE FILE TO REMOTE SYSTEM: C:/glassfish3/glassfish_install.zip and C:/glassfish3/unpack.bat
-Output from Windows Unpacker:
-
-C:\Windows\system32>C:
-
-C:\Windows\system32>cd "C:\glassfish3"
-
-C:\glassfish3>jar xvf glassfish_install.zip
- inflated: bin/asadmin
- inflated: bin/asadmin.bat
- inflated: glassfish/bin/appclient
- inflated: glassfish/bin/appclient.bat
- inflated: glassfish/bin/appclient.js
- inflated: glassfish/bin/asadmin
- inflated: glassfish/bin/asadmin.bat
-...
- inflated: mq/lib/props/broker/default.properties
- inflated: mq/lib/props/broker/install.properties
-
-Command install-node-dcom executed successfully.
-----
-
-[[GSHAG342]][[sthref10]]
-
-
-Example 2-10 Copying a GlassFish Server Installation to Multiple
-SSH-Enabled Hosts
-
-This example copies the GlassFish Server software on the host where the
-subcommand is run to the default location on the SSH-enabled hosts
-`sj03.example.com` and `sj04.example.com`.
-
-[source,oac_no_warn]
-----
-asadmin> install-node-ssh sj03.example.com sj04.example.com
-Created installation zip /home/gfuser/glassfish2339538623689073993.zip
-Successfully connected to gfuser@sj03.example.com using keyfile /home/gfuser
-/.ssh/id_rsa
-Copying /home/gfuser/glassfish2339538623689073993.zip (81395008 bytes) to
-sj03.example.com:/export/glassfish3
-Installing glassfish2339538623689073993.zip into sj03.example.com:/export/glassfish3
-Removing sj03.example.com:/export/glassfish3/glassfish2339538623689073993.zip
-Fixing file permissions of all files under sj03.example.com:/export/glassfish3/bin
-Successfully connected to gfuser@sj04.example.com using keyfile /home/gfuser
-/.ssh/id_rsa
-Copying /home/gfuser/glassfish2339538623689073993.zip (81395008 bytes) to
-sj04.example.com:/export/glassfish3
-Installing glassfish2339538623689073993.zip into sj04.example.com:/export/glassfish3
-Removing sj04.example.com:/export/glassfish3/glassfish2339538623689073993.zip
-Fixing file permissions of all files under sj04.example.com:/export/glassfish3/bin
-Command install-node-ssh executed successfully
-----
-
-[[GSHAG343]]
-
-See Also
-
-* link:../reference-manual/install-node-dcom.html#GSRFM626[`install-node-dcom`(1)]
-* link:../reference-manual/install-node-ssh.html#GSRFM628[`install-node-ssh`(1)]
-
-You can also view the full syntax and options of the subcommands by
-typing the following commands at the command line:
-
-* `asadmin help install-node-dcom`
-* `asadmin help install-node-ssh`
-
-[[gktaw]][[GSHAG00087]][[to-remove-glassfish-server-software-from-multiple-hosts]]
-
-To Remove GlassFish Server Software From Multiple Hosts
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `uninstall-node-dcom` subcommand or the `uninstall-node-ssh`
-subcommand in local mode to remove GlassFish Server software from
-multiple hosts.
-
-[[GSHAG344]]
-
-Before You Begin
-
-Ensure that the following prerequisites are met:
-
-* DCOM or SSH is set up on the host where you are running the subcommand
-and on each host from which you are removing the GlassFish Server
-software.
-* No process is accessing the parent of the base installation directory
-for the GlassFish Server software or any subdirectory of this directory.
-* The parent of the base installation directory for the GlassFish Server
-software is the same on each host from which you are removing the
-GlassFish Server software.
-* For hosts that use DCOM for remote communication, the configuration of
-the following items is the same on each host:
-
-** Windows Domain
-
-** Windows User
-* For hosts that use SSH for remote communication, the configuration of
-the following items is the same on each host:
-
-** SSH port
-
-** SSH user
-
-** SSH key file
-
-Run the appropriate subcommand for the protocol that is set up for
-communication between the hosts.
-
-* If DCOM is set up for communication between the hosts, run the
-`uninstall-node-dcom` subcommand. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Only the options that are required to complete this task are provided in
-this step. For information about all the options for removing GlassFish
-Server software, see the link:../reference-manual/uninstall-node-dcom.html#GSRFM775[`uninstall-node-dcom`(1)] help
-page.
-
-|=======================================================================
-
-[source,oac_no_warn]
-----
-asadmin> uninstall-node-dcom host-list
-----
-host-list::
-  A space-separated list of the names of the hosts from which you are
-  removing GlassFish Server software.
-* If SSH is set up for communication between the hosts, run the
-`uninstall-node-ssh` subcommand. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Only the options that are required to complete this task are provided in
-this step. For information about all the options for removing GlassFish
-Server software, see the link:../reference-manual/uninstall-node-ssh.html#GSRFM778[`uninstall-node-ssh`(1)] help
-page.
-
-|=======================================================================
-
-[source,oac_no_warn]
-----
-asadmin> uninstall-node-ssh host-list
-----
-host-list::
-  A space-separated list of the names of the hosts from which you are
-  removing GlassFish Server software.
-
-[[GSHAG462]][[sthref11]]
-
-
-Example 2-11 Removing GlassFish Server Software From Multiple
-DCO\M-Enabled Hosts
-
-This example removes GlassFish Server software on the DCOM-enabled hosts
-`wpmdl1.example.com` and `wpmdl2.example.com` from the default location.
-
-[source,oac_no_warn]
-----
-asadmin> uninstall-node-dcom wpmdl1 wpmdl2
-Command uninstall-node-dcom executed successfully.
-----
-
-[[GSHAG345]][[sthref12]]
-
-
-Example 2-12 Removing GlassFish Server Software From Multiple
-SSH-Enabled Hosts
-
-This example removes GlassFish Server software on the SSH-enabled hosts
-`sj03.example.com` and `sj04.example.com` from the default location.
-
-[source,oac_no_warn]
-----
-asadmin> uninstall-node-ssh sj03 sj04
-Successfully connected to gfuser@sj03.example.com using keyfile /home/gfuser
-/.ssh/id_rsa
-Successfully connected to gfuser@sj04.example.com using keyfile /home/gfuser
-/.ssh/id_rsa
-Command uninstall-node-ssh executed successfully.
-----
-
-[[GSHAG346]]
-
-See Also
-
-* link:../reference-manual/uninstall-node-dcom.html#GSRFM775[`uninstall-node-dcom`(1)]
-* link:../reference-manual/uninstall-node-ssh.html#GSRFM778[`uninstall-node-ssh`(1)]
-
-You can also view the full syntax and options of the subcommands by
-typing the following commands at the command line:
-
-* `asadmin help uninstall-node-dcom`
-* `asadmin help uninstall-node-ssh`
diff --git a/docs/ha-administration-guide/src/main/jbake/content/title.adoc b/docs/ha-administration-guide/src/main/jbake/content/title.adoc
deleted file mode 100644
index 8705a95..0000000
--- a/docs/ha-administration-guide/src/main/jbake/content/title.adoc
+++ /dev/null
@@ -1,56 +0,0 @@
-type=page
-status=published
-title=Eclipse GlassFish Server High Availability Administration Guide, Release 5.1
-next=preface.html
-prev=loe.html
-~~~~~~
-Eclipse GlassFish Server High Availability Administration Guide, Release 5.1
-============================================================================
-
-[[eclipse-glassfish-server]]
-Eclipse GlassFish Server
-------------------------
-
-High Availability Administration Guide
-
-Release 5.1
-
-Contributed 2018, 2019
-
-This book describes thehigh-availability features in GlassFish Server,
-including converged load balancing, HTTP load balancing, clusters,
-session persistence and failover.
-
-Note: The main thrust of the Eclipse GlassFish Server 5.1
-release is to provide an application server for developers to explore
-and begin exploiting the new and updated technologies in the Java EE 7
-platform. Thus, the clustering, standalone instance and high
-availability features of GlassFish Server were not a focus of this
-release. These features are included in the release, but they may not
-function properly with some of the new features added in support of the
-Java EE 7 platform.
-
-[[sthref1]]
-
-'''''
-
-Eclipse GlassFish Server High Availability Administration
-Guide, Release 5.1
-
-Copyright © 2013, 2019 Oracle and/or its affiliates. All rights reserved.
-
-This program and the accompanying materials are made available under the 
-terms of the Eclipse Public License v. 2.0, which is available at 
-http://www.eclipse.org/legal/epl-2.0. 
-
-SPDX-License-Identifier: EPL-2.0
-
-Oracle and Java are registered trademarks of Oracle and/or its 
-affiliates. Other names may be trademarks of their respective owners. 
-
-Intel and Intel Xeon are trademarks or registered trademarks of Intel 
-Corporation. All SPARC trademarks are used under license and are 
-trademarks or registered trademarks of SPARC International, Inc. AMD, 
-Opteron, the AMD logo, and the AMD Opteron logo are trademarks or 
-registered trademarks of Advanced Micro Devices. UNIX is a registered 
-trademark of The Open Group. 
diff --git a/docs/ha-administration-guide/src/main/jbake/jbake.properties b/docs/ha-administration-guide/src/main/jbake/jbake.properties
deleted file mode 100644
index 546d09c..0000000
--- a/docs/ha-administration-guide/src/main/jbake/jbake.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-site.host=http://jbake.org
-render.tags=false
-render.sitemap=false
-render.archive=false
-render.feed=false
-asciidoctor.option.safe=0
-asciidoctor.attributes.export=true
diff --git a/docs/ha-administration-guide/src/main/jbake/templates/footer.ftl b/docs/ha-administration-guide/src/main/jbake/templates/footer.ftl
deleted file mode 100644
index 6f2b09e..0000000
--- a/docs/ha-administration-guide/src/main/jbake/templates/footer.ftl
+++ /dev/null
@@ -1,46 +0,0 @@
-<#-- a footer template fragment included in the page template -->
-<hr />
-
-<table width="90%" id="bottom-nav" cellspacing="0" cellpadding="0">
-	<colgroup>
-		<col width="12%"/>
-		<col width="12%"/>
-		<col width="*"/>
-	</colgroup>
-	<tr>		
-	    <#if content.prev??>
-		<td align="left">
-		<a href="${content.prev}">
-			<span class=" vector-font"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Previous</span>
-		</a>
-		</td>
-		</#if>
-
-		<#if content.next??>
-		<td align="left">
-		<a href="${content.next}">
-			<span class="vector-font"><i class="fa fa-arrow-circle-right vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Next</span>
-		</a>
-		</td>
-		</#if>
-
-		<td align="right">
-		<a href="toc.html">
-			<span class="vector-font"><i class="fa fa-list vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Contents</span>
-		</a>
-		</td>
-	</tr>
-</table>
-
-<span id="copyright">
-        <img src="img/eclipse_foundation_logo_tiny.png" height="20px" alt="Eclipse Foundation Logo" align="top"/>&nbsp;            
-        <span >Copyright&nbsp;&copy;&nbsp;2019,&nbsp;Oracle&nbsp;and/or&nbsp;its&nbsp;affiliates.&nbsp;All&nbsp;rights&nbsp;reserved.</span>
-</span>
-
-<p align="center" class="beta">${config.status!}</p>
-
-</body>
-</html>
diff --git a/docs/ha-administration-guide/src/main/jbake/templates/header.ftl b/docs/ha-administration-guide/src/main/jbake/templates/header.ftl
deleted file mode 100644
index 82ebb36..0000000
--- a/docs/ha-administration-guide/src/main/jbake/templates/header.ftl
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html>
-<#-- a header template fragment included in the page template -->
-<html lang="en">
-  <head>
-    <meta charset="utf-8"/>
-    <title><#if (content.title)??><#escape x as x?xml>${content.title}</#escape></#if></title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <link href="<#if (content.rootpath)??>${content.rootpath}<#else></#if>css/style.css" rel="stylesheet">
-    <script src="https://use.fontawesome.com/96c4d89611.js"></script>
-  </head>
-  <body>
-<table id="doc-title" cellspacing="0" cellpadding="0">
-  <tr>
-  <td align="left" valign="top">
-  <b>${content.title}</b><br />
-      <p class="beta">${config.status!}</p>
-  </td>
-  </tr>
-</table>
-<hr />
-
-<table width="90%" id="top-nav" cellspacing="0" cellpadding="0">
-	<colgroup>
-		<col width="12%"/>
-		<col width="12%"/>
-		<col width="*"/>
-	</colgroup>
-	<tr>
-	    <#if content.prev??>
-		<td align="left">
-		<a href="${content.prev}">
-			<span class="vector-font"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Previous</span>
-		</a>
-		</td>
-	    </#if>
-
-	    <#if content.next??>
-		<td align="left">
-		<a href="${content.next}">
-			<span class=" vector-font"><i class="fa fa-arrow-circle-right vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Next</span>
-		</a>
-		</td>
-	    </#if>
-
-		<td align="right">
-		<a href="toc.html">
-			<span class=" vector-font"><i class="fa fa-list vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Contents</span>
-		</a>
-		</td>
-	</tr>
-</table>
-
diff --git a/docs/ha-administration-guide/src/main/jbake/templates/menu.ftl b/docs/ha-administration-guide/src/main/jbake/templates/menu.ftl
deleted file mode 100644
index 888c03d..0000000
--- a/docs/ha-administration-guide/src/main/jbake/templates/menu.ftl
+++ /dev/null
@@ -1 +0,0 @@
-<#-- a menu bar template fragment included in the page template -->
\ No newline at end of file
diff --git a/docs/ha-administration-guide/src/main/jbake/templates/page.ftl b/docs/ha-administration-guide/src/main/jbake/templates/page.ftl
deleted file mode 100644
index eca51db..0000000
--- a/docs/ha-administration-guide/src/main/jbake/templates/page.ftl
+++ /dev/null
@@ -1,8 +0,0 @@
-<#-- a top level page layout template -->
-
-<#include "header.ftl">
-<#include "menu.ftl">
-
-${content.body}
-
-<#include "footer.ftl">
\ No newline at end of file
diff --git a/docs/installation-guide/README.md b/docs/installation-guide/README.md
deleted file mode 100644
index a3ec2b6..0000000
--- a/docs/installation-guide/README.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# A JBake project template
-
-## About JBake
-
-JBake is a static site generator, it's inspired from jekyll and written
-in java.  The basic idea is to have templates for the structure of the
-page, and the body generated from asciidoc content.
-
-## Pre requisites
-
-- Maven
-- JDK8+
-
-Deploying to Github will require password less authentication.
-
-This is done by exporting your SSH public key into your Github account.
-
-## Build the site locally
-
-The site is generated under target/staging.
-
-Open file:///PATH_TO_PROJECT_DIR/target/staging in a browser to view the site.
-
-```
-mvn generate-resources
-```
-
-Or you can invoke the JBake plugin directly.
-
-```
-mvn jbake:build
-```
-
-### Rebuild the site on changes
-
-```
-mvn jbake:watch
-```
-
-If you keep this command running, changes to the sources will be
-detected and the site will be rendered incrementally.
-
-This is convenient when writing content.
-
-### Serve the site locally
-
-```
-mvn jbake:serve
-```
-
-If a webserver is required (e.g. absolute path are used), this command
-will start a webserver (jetty) at http://localhost:8820.  It will also
-watch for changes and rebuild incrementally.
-
-## Deploy the site to Github Pages
-
-```
-mvn deploy
-```
-
-## Produce a zip file for download
-
-To produce a zip file containing the generated html files, use:
-
-```
-mvn package
-```
-
-When making a release on GitHub, this zip file should be added to the release.
-
-## Links
-
-- [JBake maven plugin documentation](https://github.com/Blazebit/jbake-maven-plugin)
-- [JBake documentation](http://jbake.org/docs/2.5.1)
-- [Freemarker documentation](http://freemarker.org/docs)
-- [AsciiDoc User Guide](http://asciidoc.org/userguide.html)
-- [Asciidoctor quick reference](http://asciidoctor.org/docs/asciidoc-syntax-quick-reference)
diff --git a/docs/installation-guide/pom.xml b/docs/installation-guide/pom.xml
index 98881c2..8827aa1 100644
--- a/docs/installation-guide/pom.xml
+++ b/docs/installation-guide/pom.xml
@@ -22,11 +22,10 @@
     <parent>
         <groupId>org.glassfish.docs</groupId>
         <artifactId>parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../parent</relativePath>
     </parent>
-    <groupId>org.glassfish.docs</groupId>
     <artifactId>installation-guide</artifactId>
     <packaging>jar</packaging>
-    <name>Eclipse GlassFish Server Installation Guide, Release 5.1</name>
+    <name>Eclipse GlassFish Server Installation Guide, Release 7</name>
 </project>
diff --git a/docs/quick-start-guide/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png b/docs/installation-guide/src/main/asciidoc/img/eclipse_foundation_logo_tiny.png
similarity index 100%
copy from docs/quick-start-guide/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png
copy to docs/installation-guide/src/main/asciidoc/img/eclipse_foundation_logo_tiny.png
Binary files differ
diff --git a/docs/installation-guide/src/main/asciidoc/installing.adoc b/docs/installation-guide/src/main/asciidoc/installing.adoc
new file mode 100644
index 0000000..a3f6689
--- /dev/null
+++ b/docs/installation-guide/src/main/asciidoc/installing.adoc
@@ -0,0 +1,849 @@
+type=page
+status=published
+title=Installing {productName} 7
+next=uninstalling.html
+prev=preface.html
+~~~~~~
+
+= Installing {productName} 7
+
+[[GSING00002]][[ggssq]]
+
+
+[[installing-glassfish-server-5.0]]
+== 1 Installing {productName} 7
+
+This chapter provides instructions for installing {productName} 7
+software on Solaris, Linux, Mac OS X, and Windows systems.
+
+The following topics are addressed here:
+
+* link:#gjiaz[Installation Requirements]
+* link:#ggrlg[Installation Files for {productName} 7]
+* link:#ghmxb[Installing {productName} From a ZIP File]
+
+[[gjiaz]][[GSING00022]][[installation-requirements]]
+
+=== Installation Requirements
+
+Before installing {productName} 7, ensure that
+your system meets the requirements listed in "link:release-notes/release-notes.html#GSRLN00131[Hardware
+and Software Requirements]" in {productName}
+Release Notes. If necessary, download and install the required JDK
+software. Problems are likely to arise if you attempt to install on a
+platform that is not supported or on a system that in some other way
+does not meet release requirements. Also see "link:release-notes/release-notes.html#GSRLN00253[Known
+Issues]" in {productName} Release Notes for known
+issues related to installation.
+
+* On Solaris, Linux, macOS and Windows systems, JDK software is available from the
+http://www.oracle.com/technetwork/java/javase/downloads/index.html[Java SE downloads page].
+
+[[gkxfw]][[javassist-library-license-notice]]
+
+==== Javassist Library License Notice
+
+You are receiving a copy of the Javassist (Java Programming Assistant)
+Library in source form at
+`https://github.com/jboss-javassist/javassist/archive/rel_3_22_0_cr2.zip`
+and in object code form in the jar file
+`glassfish7/glassfish/modules/javassist.jar` included with the
+distribution. The terms of the Oracle license do NOT apply to the
+Javassist (Java Programming Assistant) program; it is licensed under the
+following license, separately from the Oracle programs you receive. If
+you do not wish to install this program, you may choose to not proceed
+with the installation of {productName}.
+
+"The contents of this file are subject to the Mozilla Public License
+Version 1.1 (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.mozilla.org/MPL/`
+
+Software distributed under the License is distributed on an "AS
+IS"basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+the License for the specific language governing rights and limitations
+under the License. The Original Code is Javassist 3.14.0.GA. The Initial
+Developer of the Original Code is Shigeru Chiba. Portions created by
+Shigeru Chiba are Copyright (C) 1999-2010. All Rights Reserved.
+
+Alternatively, the contents of this file may be used under the terms of
+GNU Lesser General Public License Version 2.1 or later (the "LGPL"), in
+which case the provisions of the LGPL License are applicable instead of
+those above. If you wish to allow use of your version of this file only
+under the terms of the LGPL License and not to allow others to use your
+version of this file under the MPL, indicate your decision by deleting
+the provisions above and replace them with the notice and other
+provisions required by the LGPL License. If you do not delete the
+provisions above, a recipient may use your version of this file under
+either the MPL or the LGPL License."
+
+[subs="none"]
+----
+MOZILLA PUBLIC LICENSE
+
+Version 1.1
+
+1. Definitions.
+
+1.0.1. "Commercial Use" means distribution or otherwise making the
+Covered Code available to a third party.
+
+1.1. "Contributor" means each entity that creates or contributes to
+the creation of Modifications.
+
+1.2. "Contributor Version" means the combination of the Original Code,
+prior Modifications used by a Contributor, and the Modifications made by
+that particular Contributor.
+
+1.3. "Covered Code" means the Original Code or Modifications or the
+combination of the Original Code and Modifications, in each case
+including portions thereof.
+
+1.4. "Electronic Distribution Mechanism" means a mechanism generally
+accepted in the software development community for the electronic
+transfer of data.
+
+1.5. "Executable" means Covered Code in any form other than Source
+Code.
+
+1.6. "Initial Developer" means the individual or entity identified as
+the Initial Developer in the Source Code notice required by Exhibit A.
+
+1.7. "Larger Work" means a work which combines Covered Code or
+portions thereof with code not governed by the terms of this License.
+
+1.8. "License" means this document.
+
+1.8.1. "Licensable" means having the right to grant, to the maximum
+extent possible, whether at the time of the initial grant or
+subsequently acquired, any and all of the rights conveyed herein.
+
+1.9. "Modifications" means any addition to or deletion from the
+substance or structure of either the Original Code or any previous
+Modifications. When Covered Code is released as a series of files, a
+Modification is:
+
+A. Any addition to or deletion from the contents of a file containing
+Original Code or previous Modifications.
+
+B. Any new file that contains any part of the Original Code or previous
+Modifications.
+
+1.10. "Original Code" means Source Code of computer software code
+which is described in the Source Code notice required by Exhibit A as
+Original Code, and which, at the time of its release under this License
+is not already Covered Code governed by this License.
+
+1.10.1. "Patent Claims" means any patent claim(s), now owned or
+hereafter acquired, including without limitation, method, process, and
+apparatus claims, in any patent Licensable by grantor.
+
+1.11. "Source Code" means the preferred form of the Covered Code for
+making modifications to it, including all modules it contains, plus any
+associated interface definition files, scripts used to control
+compilation and installation of an Executable, or source code
+differential comparisons against either the Original Code or another
+well known, available Covered Code of the Contributor's choice. The
+Source Code can be in a compressed or archival form, provided the
+appropriate decompression or de-archiving software is widely available
+for no charge.
+
+1.12. "You" (or "Your") means an individual or a legal entity
+exercising rights under, and complying with all of the terms of, this
+License or a future version of this License issued under Section 6.1.
+For legal entities, "You" includes any entity which controls, is
+controlled by, or is under common control with You. For purposes of this
+definition, "control" means (a) the power, direct or indirect, to cause
+the direction or management of such entity, whether by contract or
+otherwise, or (b) ownership of more than fifty percent (50%) of the
+outstanding shares or beneficial ownership of such entity.
+
+2. Source Code License.
+
+2.1. The Initial Developer Grant.
+
+The Initial Developer hereby grants You a world-wide, royalty-free,
+non-exclusive license, subject to third party intellectual property
+claims:
+
+(a) under intellectual property rights (other than patent or trademark)
+Licensable by Initial Developer to use, reproduce, modify, display,
+perform, sublicense and distribute the Original Code (or portions
+thereof) with or without Modifications, and/or as part of a Larger Work;
+and
+
+(b) under Patents Claims infringed by the making, using or selling of
+Original Code, to make, have made, use, practice, sell, and offer for
+sale, and/or otherwise dispose of the Original Code (or portions
+thereof).
+
+(c) the licenses granted in this Section 2.1(a) and (b) are effective
+on the date Initial Developer first distributes Original Code under the
+terms of this License.
+
+(d) Notwithstanding Section 2.1(b) above, no patent license is granted:
+1) for code that You delete from the Original Code; 2) separate from the
+Original Code; or 3) for infringements caused by: i) the modification of
+the Original Code or ii) the combination of the Original Code with other
+software or devices.
+
+2.2. Contributor Grant.
+
+Subject to third party intellectual property claims, each Contributor
+hereby grants You a world-wide,
+
+royalty-free, non-exclusive license
+
+(a) under intellectual property rights (other than patent or trademark)
+Licensable by Contributor, to use, reproduce, modify, display, perform,
+sublicense and distribute the Modifications created by such Contributor
+(or portions thereof) either on an unmodified basis, with other
+Modifications, as Covered Code and/or as part of a Larger Work; and
+
+(b) under Patent Claims infringed by the making, using, or selling of
+Modifications made by that Contributor either alone and/or in
+combination with its Contributor Version (or portions of such
+combination), to make, use, sell, offer for sale, have made, and/or
+otherwise dispose of: 1)Modifications made by that Contributor (or
+portions thereof); and 2) the combination of Modifications made by that
+Contributor with its Contributor Version (or portions of such
+combination).
+
+(c) the licenses granted in Sections 2.2(a) and 2.2(b) are effective on
+the date Contributor first makes Commercial Use of the Covered Code.
+
+(d) Notwithstanding Section 2.2(b) above, no patent license is granted:
+1) for any code that Contributor has deleted from the Contributor
+Version; 2) separate from the Contributor Version; 3)for infringements
+caused by: i) third party modifications of Contributor Version or ii)
+the combination
+
+of Modifications made by that Contributor with other software (except as
+part of the Contributor
+
+Version) or other devices; or 4) under Patent Claims infringed by
+Covered Code in the absence of
+
+Modifications made by that Contributor.
+
+3. Distribution Obligations.
+
+3.1. Application of License.
+
+The Modifications which You create or to which You contribute are
+governed by the terms of this License, including without limitation
+Section 2.2. The Source Code version of Covered Code may be distributed
+only under the terms of this License or a future version of this License
+released under Section 6.1, and You must include a copy of this License
+with every copy of the Source Code You distribute. You may not offer or
+impose any terms on any Source Code version that alters or restricts the
+applicable version of this License or the recipients' rights hereunder.
+However, You may include an additional document offering the additional
+rights described in Section 3.5.
+
+3.2. Availability of Source Code.
+
+Any Modification which You create or to which You contribute must be
+made available in Source Code form under the terms of this License
+either on the same media as an Executable version or via an accepted
+Electronic Distribution Mechanism to anyone to whom you made an
+Executable version available; and if made available via Electronic
+Distribution Mechanism, must remain available for at least twelve (12)
+months after the date it initially became available, or at least six (6)
+months after a subsequent version of that particular Modification has
+been made available to such recipients. You are responsible for ensuring
+that the Source Code version remains available even if the Electronic
+Distribution Mechanism is maintained by a third party.
+
+3.3. Description of Modifications.
+
+You must cause all Covered Code to which You contribute to contain a
+file documenting the changes You made to create that Covered Code and
+the date of any change. You must include a prominent statement that the
+Modification is derived, directly or indirectly, from Original Code
+provided by the Initial Developer and including the name of the Initial
+Developer in (a) the Source Code, and (b) in any notice in an Executable
+version or related documentation in which You describe the origin or
+ownership of the Covered Code.
+
+3.4. Intellectual Property Matters
+
+(a) Third Party Claims.
+
+If Contributor has knowledge that a license under a third party's
+intellectual property rights is required to exercise the rights granted
+by such Contributor under Sections 2.1 or 2.2, Contributor must include
+a text file with the Source Code distribution titled "LEGAL" which
+describes the claim and the party making the claim in sufficient detail
+that a recipient will know whom to contact. If Contributor obtains such
+knowledge after the Modification is made available as described in
+Section 3.2, Contributor shall promptly modify the LEGAL file in all
+copies Contributor makes available thereafter and shall take other steps
+(such as notifying appropriate mailing lists or newsgroups) reasonably
+calculated to inform those who received the Covered Code that new
+knowledge has been obtained.
+
+(b) Contributor APIs.
+
+If Contributor's Modifications include an application programming
+interface and Contributor has knowledge of patent licenses which are
+reasonably necessary to implement that API, Contributor must also
+include this information in the LEGAL file.
+
+(c) Representations.
+
+Contributor represents that, except as disclosed pursuant to Section
+3.4(a) above, Contributor believes that Contributor's Modifications are
+Contributor's original creation(s) and/or Contributor has sufficient
+rights to grant the rights conveyed by this License.
+
+3.5. Required Notices.
+
+You must duplicate the notice in Exhibit A in each file of the Source
+Code. If it is not possible to put such notice in a particular Source
+Code file due to its structure, then You must include such notice in a
+location (such as a relevant directory) where a user would be likely to
+look for such a notice. If You created one or more Modification(s) You
+may add your name as a Contributor to the notice described in Exhibit A.
+You must also duplicate this License in any documentation for the Source
+Code where You describe recipients' rights or ownership rights relating
+to Covered Code. You may choose to offer, and to charge a fee for,
+warranty, support, indemnity or liability obligations to one or more
+recipients of Covered Code. However, You may do so only on Your own
+behalf, and not on behalf of the Initial Developer or any Contributor.
+You must make it absolutely clear than any such warranty, support,
+indemnity or liability obligation is offered by You alone, and You
+hereby agree to indemnify the Initial Developer and every Contributor
+for any liability incurred by the Initial Developer or such Contributor
+as a result of warranty, support, indemnity or liability terms You
+offer.
+
+3.6. Distribution of Executable Versions.
+
+You may distribute Covered Code in Executable form only if the
+requirements of Section 3.1-3.5 have been met for that Covered Code, and
+if You include a notice stating that the Source Code version of the
+Covered Code is available under the terms of this License, including a
+description of how and where You have fulfilled the obligations of
+Section 3.2. The notice must be conspicuously included in any notice in
+an Executable version, related documentation or collateral in which You
+describe recipients' rights relating to the Covered Code. You may
+distribute the Executable version of Covered Code or ownership rights
+under a license of Your choice, which may contain terms different from
+this License, provided that You are in compliance with the terms of this
+License and that the license for the Executable version does not attempt
+to limit or alter the recipient's rights in the Source Code version from
+the rights set forth in this License. If You distribute the Executable
+version under a different license You must make it absolutely clear that
+any terms which differ from this License are offered by You alone, not
+by the Initial Developer or any Contributor. You hereby agree to
+indemnify the Initial Developer and every Contributor for any liability
+incurred by the Initial Developer or such Contributor as a result of any
+such terms You offer.
+
+3.7. Larger Works.
+
+You may create a Larger Work by combining Covered Code with other code
+not governed by the terms of this License and distribute the Larger Work
+as a single product. In such a case, You must make sure the requirements
+of this License are fulfilled for the Covered Code.
+
+4. Inability to Comply Due to Statute or Regulation.
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Code due to statute,
+judicial order, or regulation then You must: (a) comply with the terms
+of this License to the maximum extent possible; and (b) describe the
+limitations and the code they affect. Such description must be included
+in the LEGAL file described in Section 3.4 and must be included with all
+distributions of the Source Code. Except to the extent prohibited by
+statute or regulation, such description must be sufficiently detailed
+for a recipient of ordinary skill to be able to understand it.
+
+5. Application of this License.
+
+This License applies to code to which the Initial Developer has attached
+the notice in Exhibit A and to related Covered Code.
+
+6. Versions of the License.
+
+6.1. New Versions.
+
+Netscape Communications Corporation ("Netscape") may publish revised
+and/or new versions of the License from time to time. Each version will
+be given a distinguishing version number.
+
+6.2. Effect of New Versions.
+
+Once Covered Code has been published under a particular version of the
+License, You may always continue to use it under the terms of that
+version. You may also choose to use such Covered Code under the terms of
+any subsequent version of the License published by Netscape. No one
+other than Netscape has the right to modify the terms applicable to
+Covered Code created under this License.
+
+6.3. Derivative Works.
+
+If You create or use a modified version of this License (which you may
+only do in order to apply it to code which is not already Covered Code
+governed by this License), You must (a) rename Your license so that the
+phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", "MPL",
+"NPL" or any confusingly similar phrase do not appear in your license
+(except to note that your license differs from this License) and (b)
+otherwise make it clear that Your version of the license contains terms
+which differ from the Mozilla Public License and Netscape Public
+License. (Filling in the name of the Initial Developer, Original Code or
+Contributor in the notice described in Exhibit A shall not of themselves
+be deemed to be modifications of this License.)
+
+7. DISCLAIMER OF WARRANTY.
+
+COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS,
+MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE
+RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU.
+SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE
+INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY
+NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY
+CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE.NO USE OF ANY COVERED CODE
+IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+8. TERMINATION.
+
+8.1. This License and the rights granted hereunder will terminate
+automatically if You fail to comply with terms herein and fail to cure
+such breach within 30 days of becoming aware of the breach. All
+sublicenses to the Covered Code which are properly granted shall survive
+any termination of this License. Provisions which, by their nature, must
+remain in effect beyond the termination of this License shall survive.
+
+8.2. If You initiate litigation by asserting a patent infringement claim
+(excluding declatory judgment actions) against Initial Developer or a
+Contributor (the Initial Developer or Contributor against whom You file
+such action is referred to as "Participant") alleging that:
+
+(a) such Participant's Contributor Version directly or indirectly
+infringes any patent, then any and all rights granted by such
+Participant to You under Sections 2.1 and/or 2.2 of this License shall,
+upon 60 days notice from Participant terminate prospectively, unless if
+within 60 days after receipt of notice You either: agree in writing to
+pay Participant a mutually agreeable reasonable royalty for Your past
+and future use of Modifications made by such Participant, or (ii)
+withdraw Your litigation claim with respect to the Contributor Version
+against such Participant. If within 60 days of notice, a reasonable
+royalty and payment arrangement are not mutually agreed upon in writing
+by the parties or the litigation claim is not withdrawn, the rights
+granted by Participant to You under Sections 2.1 and/or 2.2
+automatically terminate at the expiration of the 60 day notice period
+specified above.
+
+(b) any software, hardware, or device, other than such Participant's
+Contributor Version, directly or indirectly infringes any patent, then
+any rights granted to You by such Participant under Sections 2.1(b) and
+2.2(b) are revoked effective as of the date You first made, used, sold,
+distributed, or had made, Modifications made by that Participant.
+
+8.3. If You assert a patent infringement claim against Participant
+alleging that such Participant's Contributor Version directly or
+indirectly infringes any patent where such claim is resolved (such as by
+license or settlement) prior to the initiation of patent infringement
+litigation, then the reasonable value of the licenses granted by such
+Participant under Sections 2.1 or 2.2 shall be taken into account in
+determining the amount or value of any payment or license.
+
+8.4. In the event of termination under Sections 8.1 or 8.2 above, all
+end user license agreement (excluding distributors and resellers) which
+have been validly granted by You or any distributor hereunder prior to
+termination shall survive termination.
+
+9. LIMITATION OF LIABILITY.
+
+UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+(INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
+DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY
+
+DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE
+LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
+CONSEQUENTIAL DAMAGES OF ANY CHARACTER
+
+INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK
+STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH
+
+PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS
+LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR
+PERSONAL INJURY RESULTING FROM SUCH
+
+PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH
+LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION
+OF INCIDENTAL OR CONSEQUENTIAL
+
+DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+10. U.S. GOVERNMENT END USERS.
+
+The Covered Code is a "commercial item," as that term is defined in 48
+C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software"
+and "commercial computer software documentation," as such terms are
+used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212
+and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S.
+Government End Users acquire Covered Code with only those rights set
+forth herein.
+
+11. MISCELLANEOUS.
+
+This License represents the complete agreement concerning subject matter
+hereof. If any provision of this License is held to be unenforceable,
+such provision shall be reformed only to the extent necessary to make it
+enforceable. This License shall be governed by California law provisions
+(except to the extent applicable law, if any, provides otherwise),
+excluding its conflict-of-law provisions. With respect to disputes in
+which at least one party is a citizen of, or an entity chartered or
+registered to do business in the United States of America, any
+litigation relating to this License shall be subject to the jurisdiction
+of the Federal Courts of the Northern District of California, with venue
+lying in Santa Clara County, California, with the losing party
+responsible for costs, including without limitation, court costs and
+reasonable attorneys' fees and expenses. The application of the United
+Nations Convention on
+
+Contracts for the International Sale of Goods is expressly excluded. Any
+law or regulation which provides that the language of a contract shall
+be construed against the drafter shall not apply to this License.
+
+12. RESPONSIBILITY FOR CLAIMS.
+
+As between Initial Developer and the Contributors, each party is
+responsible for claims and damages arising, directly or indirectly, out
+of its utilization of rights under this License and You agree to work
+with Initial Developer and Contributors to distribute such
+responsibility on an equitable basis. Nothing herein is intended or
+shall be deemed to constitute any admission of liability.
+
+13. MULTIPLE-LICENSED CODE.
+
+Initial Developer may designate portions of the Covered Code as
+"Multiple-Licensed?. "Multiple-Licensed? means that the Initial
+Developer permits you to utilize portions of the Covered Code under Your
+choice of the MPL or the alternative licenses, if any, specified by the
+Initial Developer in the file described in Exhibit A.
+
+EXHIBIT A -Mozilla Public License.
+
+The contents of this file are subject to the Mozilla Public License
+Version 1.1 (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.mozilla.org/MPL/. Software distributed under the License is
+distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either
+express or implied. See the License for the specific language governing
+rights and limitations under the License.
+
+The Original Code is Javassist.
+
+The Initial Developer of the Original Code is Shigeru Chiba. Portions
+created by the Initial Developer are
+
+Copyright (C) 1999-2016 Shigeru Chiba. All Rights Reserved.
+
+Contributor(s): ______________________________________.
+
+----
+Alternatively, the contents of this file may be used under the terms of
+the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+in which case the provisions of the LGPL are applicable instead of those
+above. If you wish to allow use of your version of this file only under
+the terms of the LGPL, and not to allow others to use your version of
+this file under the terms of the MPL, indicate your decision by deleting
+the provisions above and replace them with the notice and other
+provisions required by the LGPL. If you do not delete the provisions
+above, a recipient may use your version of this file under the terms of
+either the MPL or the LGPL.
+
+[[ggrlg]][[GSING00023]][[installation-files-for-glassfish-server-5.0]]
+
+=== Installation Files for {productName} 7
+
+The following topics are addressed here:
+
+* link:#gkbaj[{productName} Download Locations]
+* link:#gkbby[{productName} Installation Methods]
+* link:#gkudi[Choosing an Installation Method]
+* link:#gkbbb[{productName} ZIP Files]
+
+[[gkbaj]][[GSING00035]][[glassfish-server-download-locations]]
+
+==== {productName} Download Locations
+
+Installation files for {productName} 7 are
+available by download from the
+https://github.com/eclipse-ee4j/glassfishdownload[{productName} Downloads]
+page.
+
+{productName} 7 is also part of the Jakarta EE SDK
+distributions. The SDK distributions are available from the
+http://www.oracle.com/technetwork/java/javaee/downloads/index.html[Java
+EE downloads page] and are not described in this document.
+
+[[gkbby]][[GSING00036]][[glassfish-server-installation-methods]]
+
+==== {productName} Installation Methods
+
+link:#ghtqe[Table 1-1] lists the various {productName} installation methods. The table also provides links to
+installation instructions for each method.
+
+
+[NOTE]
+====
+Before performing any {productName} installation, ensure that your
+environment adheres to the JDK guidelines in
+"https://github.com/eclipse-ee4j/glassfishdoc/5.0/release-notes.pdf[Paths and
+Environment Settings for the JDK Software]" in {productName} Release Notes.
+====
+
+
+[[GSING103]][[sthref3]][[ghtqe]]
+
+
+Table 1-1 {productName} 7 Installation Methods
+
+[width="100%",cols="39%,61%",options="header",]
+|===
+|Installation Method |Installation Instructions
+|Multi-platform ZIP file |link:#ghmxb[Installing {productName} From a ZIP File].
+|===
+
+
+Each of the installation methods listed in link:#ghtqe[Table 1-1] also
+let you choose between installing the Full Platform or the Web Profile.
+These two distributions are explained in the next section.
+
+[[gkudi]][[GSING00037]][[choosing-an-installation-method]]
+
+==== Choosing an Installation Method
+
+There are two general sets of questions you should consider when
+deciding which {productName} 7 installation method to use.
+
+* link:#gkuau[ZIP Package]
+* link:#gkudp[Full Platform or Web Profile Distribution]
+
+[[gkuau]][[GSING00029]][[zip-package]]
+
+===== ZIP Package
+
+The relative features and strengths of the {productName} ZIP packages
+are listed below.
+
+* ZIP Package
+
+** Is simpler to install, but provides no configuration options during
+the installation
+** Any additional configurations must be performed manually, after installation
+** If uninstallation is desired, product must be uninstalled manually
+
+[[gkudp]][[GSING00030]][[full-platform-or-web-profile-distribution]]
+
+===== Full Platform or Web Profile Distribution
+
+Each of the installation methods listed in link:#ghtqe[Table 1-1] also
+let you choose to install either the {productName} Full Platform or
+Web Profile distribution. link:#gkuap[Table 1-2] lists the features
+available in each of these two distributions. Note that some of these
+features are value-adds, and are not required by the Jakarta EE specification.
+
+[[GSING104]][[sthref4]][[gkuap]]
+
+Table 1-2 {productName} Full Profile and Web Profile Features
+
+[width="100%",cols="69%,16%,15%",options="header",]
+|===
+|Feature |Full Platform |Web Profile
+
+|Java Platform, Enterprise Edition 8 |X |X
+
+|Jakarta EE Security API |X |X
+
+|Java API for JSON Processing 1.1 |X |X
+
+|Java API for JSON Binding 1.0 |X |X
+
+|EJB 3.2 Lite (Support for Local Container only) |X |X
+
+|JTA 1.2 |X |X
+
+|OSGi-based microkernel |X |X
+
+|Java Web Technologies (Servlet 4.0, JSP 2.2, JSF 2.3, JSTL 1.2, EL 3.0) |X |X
+
+|Grizzly/Comet |X |X
+
+|JPA 2.2, (EclipseLink), JDBC Connection Pooling |X |X
+
+|JDBC 4.0 |X |X
+
+|Apache Derby 10.13.1.1 |X |X
+
+|Web Administration Console and CLI |X |X
+
+|Rapid Redeployment (Maintain session state on application redeploy) |X |X
+
+|OMG CORBA APIs 3.0 |X |X
+
+|Debugging Support for Other Languages 1.0 |X |X
+
+|Common Annotations for Java 1.3 |X |X
+
+|Dependency Injection for Java 1.0 |X |X
+
+|Managed Beans 1.0 |X |X
+
+|Interceptors 1.2 |X |X
+
+|Contexts and Dependency Injection for Java 2.0 (CDI, ex-Web Beans) |X |X
+
+|Bean Validation 2.0 |X |X
+
+|JAX-RS 2.1 (Jersey) |X |X
+
+|EJB 3.2 Full API (Support for Remote Container) |X |-
+
+|Jakarta EE Connector Architecture 1.7 |X |-
+
+|JAX-WS 2.3 |X |-
+
+|JAXB 2.2 |X |-
+
+|Implementing Java Web Services 1.4 |X |-
+
+|Web Services Metadata for the Java Platform 2.1 |X |-
+
+|JMS 2.0 |X |-
+
+|JavaMail 1.6 |X |-
+
+|JACC 1.5 |X |-
+
+|Java Authentication Service Provider Interface for Containers 1.1 |X |-
+
+|Jakarta EE Application Deployment 1.2 |X |-
+
+|J2EE Management 1.1 |X |-
+
+|JAX-RPC 1.1 |X |-
+
+|JAXR 1.0 |X |-
+
+|CORBA 3.0.0 |X a|*
+
+|Metro |X |-
+|===
+
+
+* The Full Jakarta EE Platform contains the complete CORBA package. The OMG
+CORBA v3.0 APIs are available in the Jakarta EE Web Profile.
+
+** Transaction propagation not supported.
+
+[[gkbbb]][[GSING00038]][[glassfish-server-zip-files]]
+
+==== {productName} ZIP Files
+
+The {productName} 7 multi-platform ZIP files
+are compatible with Solaris, Linux, Mac OS, UNIX, and Windows operating
+systems. See link:#gkbaj[{productName} Download Locations] for a list
+of download locations.
+
+link:#gkbac[Table 1-3] lists the available ZIP file downloads.
+
+[[GSING105]][[sthref5]][[gkbac]]
+
+
+Table 1-3 {productName} Downloadable ZIP Files
+
+[width="100%",cols="31%,69%",options="header",]
+|===
+|ZIP File |Description
+a|
+[source]
+----
+glassfish-7.0.0.zip
+----
+|Full Platform distribution of {productName}
+
+a|
+[source]
+----
+glassfish-7.0.0-web.zip
+----
+
+|Web Profile distribution {productName}
+|===
+
+
+[[ghmxb]][[GSING00024]][[installing-glassfish-server-from-a-zip-file]]
+
+=== Installing {productName} From a ZIP File
+
+This section describes how to install {productName} 7 using the multi-platform ZIP file. {productName} is
+installed by unzipping the file in the installation directory of your
+choice.
+
+
+[NOTE]
+====
+It is not possible to specify any {productName} configuration options
+during a ZIP file installation. Any configuration changes, such as
+creating domains, clusters, and server instances, must be made manually
+after installation.
+====
+
+
+[[ggrks]][[GSING00006]][[to-install-glassfish-server-using-the-zip-file]]
+
+==== To Install {productName} Using the ZIP File
+
+Before You Begin
+
+Ensure that your system meets the requirements listed in
+"link:release-notes/release-notes.html#GSRLN00131[Hardware and Software Requirements]"
+in {productName} Release Notes.
+
+Also see "link:release-notes/release-notes.html#GSRLN00253[Known Issues]" in {productName} Release Notes for known issues related to installation.
+
+1. Download the desired {productName} 7 ZIP file. +
+See link:#gkbaj[{productName} Download Locations] for a list of
+download locations. See link:#gkbac[Table 1-3] for a list of available ZIP files.
+
+2. Change to the directory where you downloaded the ZIP file.
+
+3. Unzip the file.
+* Solaris, Linux, and Mac OS X systems:
++
+[source]
+----
+unzip zip-file-name
+----
+zip-file-name is the name of the file that you downloaded.
++
+For example:
++
+[source]
+----
+glassfish-5.0.zip
+----
+* Windows systems:
++
+Unzip using your favorite file compression utility.
++
+{productName} 7 is extracted into a new `glassfish7` directory
+under your current directory. This `glassfish7` directory is referred to
+throughout the {productName} documentation set as as-install-parent.
+
+4. Start {productName} using the instructions in the
+link:quick-start-guide.html#GSQSG[{productName} Quick Start Guide].
++
+The guide explains how to perform basic tasks such as starting the
+server, accessing the Administration Console, and deploying a sample application.
+
diff --git a/docs/installation-guide/src/main/asciidoc/lot.adoc b/docs/installation-guide/src/main/asciidoc/lot.adoc
new file mode 100644
index 0000000..98ab21e
--- /dev/null
+++ b/docs/installation-guide/src/main/asciidoc/lot.adoc
@@ -0,0 +1,19 @@
+type=page
+status=published
+title=List of Tables
+next=title.html
+prev=toc.html
+~~~~~~
+
+= List of Tables
+
+[[list-of-tables]]
+== List of Tables
+
+* link:installing.html#ghtqe[1-1 {productName} 7 Installation
+Methods]
+* link:installing.html#gkuap[1-2 {productName} Full Profile and Web
+Profile Features]
+* link:installing.html#gkbac[1-3 {productName} Downloadable ZIP Files]
+
+
diff --git a/docs/installation-guide/src/main/asciidoc/preface.adoc b/docs/installation-guide/src/main/asciidoc/preface.adoc
new file mode 100644
index 0000000..c18f43b
--- /dev/null
+++ b/docs/installation-guide/src/main/asciidoc/preface.adoc
@@ -0,0 +1,332 @@
+type=page
+status=published
+title=Preface
+next=installing.html
+prev=title.html
+~~~~~~
+
+= Preface
+
+[[GSING00001]][[gjxfa]]
+[[preface]]
+== Preface
+
+[NOTE]
+====
+This documentation is part of the Java Enterprise Edition contribution
+to the Eclipse Foundation and is not intended for use in relation to
+Java Enterprise Edition or Orace GlassFish. The documentation is in the
+process of being revised to reflect the new Jakarta EE branding.
+Additional changes will be made as requirements and procedures evolve
+for Jakarta EE. Where applicable, references to Jakarta EE or Java
+Enterprise Edition should be considered references to Jakarta EE.
+
+Please see the Title page for additional license information.
+====
+
+This document contains instructions for installing and uninstalling
+{productName}.
+
+This preface contains information about and conventions for the entire
+{productName} ({productName}) documentation set.
+
+{productName} 7 is developed through the GlassFish project
+open-source community at https://github.com/eclipse-ee4j/glassfish.
+The GlassFish project provides a structured process for developing the
+{productName} platform that makes the new features of the Jakarta EE
+platform available faster, while maintaining the most important feature
+of Jakarta EE: compatibility. It enables Java developers to access the
+{productName} source code and to contribute to the development of the
+{productName}.
+
+The following topics are addressed here:
+
+* link:#ghpbz[{productName} Documentation Set]
+* link:#giprl[Related Documentation]
+* link:#fwbkx[Typographic Conventions]
+* link:#fquvc[Symbol Conventions]
+* link:#ghpfg[Default Paths and File Names]
+
+[[GSING00014]][[ghpbz]]
+
+[[glassfish-server-documentation-set]]
+=== {productName} Documentation Set
+
+The {productName} documentation set describes deployment planning and
+system installation. For an introduction to {productName}, refer to
+the books in the order in which they are listed in the following table.
+
+[width="100%",cols="<30%,<70%",options="header",]
+|===
+|Book Title |Description
+|link:release-notes.html#GSRLN[Release Notes] |Provides late-breaking information about
+the software and the documentation and includes a comprehensive,
+table-based summary of the supported hardware, operating system, Java
+Development Kit (JDK), and database drivers.
+
+|link:quick-start-guide.html#GSQSG[Quick Start Guide]
+|Explains how to get started with the {productName} product.
+
+|link:installation-guide.html#GSING[Installation Guide]
+|Explains how to install the software and its components.
+
+|link:upgrade-guide.html#GSUPG[Upgrade Guide]
+|Explains how to upgrade to the latest version of {productName}.
+This guide also describes differences between adjacent product releases and configuration
+options that can result in incompatibility with the product specifications.
+
+|link:deployment-planning-guide.html#GSPLG[Deployment Planning Guide]
+|Explains how to build a production deployment of {productName} that meets the requirements of
+your system and enterprise.
+
+|link:administration-guide.html#GSADG[Administration Guide]
+|Explains how to configure, monitor, and manage {productName} subsystems and components
+from the command line by using the link:reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] utility.
+Instructions for performing these tasks from the Administration Console are provided
+in the Administration Console online help.
+
+|link:security-guide.html#GSSCG[Security Guide]
+|Provides instructions for configuring and administering {productName} security.
+
+|link:application-deployment-guide.html#GSDPG[Application Deployment Guide]
+|Explains how to assemble and deploy applications to the {productName} and provides information
+about deployment descriptors.
+
+|link:application-development-guide.html#GSDVG[Application Development Guide]
+|Explains how to create and implement Java Platform, Enterprise Edition (Jakarta EE platform)
+applications that are intended to run on the {productName}.
+These applications follow the open Java standards model for Jakarta EE components
+and application programmer interfaces (APIs).
+This guide provides information about developer tools, security, and debugging.
+
+|link:add-on-component-development-guide.html#GSACG[Add-On Component Development Guide]
+|Explains how to use published interfaces of {productName} to develop add-on components
+for {productName}.
+This document explains how to perform only those tasks that ensure that the add-on component
+is suitable for {productName}.
+
+|link:embedded-server-guide.html#GSESG[Embedded Server Guide]
+|Explains how to run applications in embedded {productName} and to develop applications
+in which {productName} is embedded.
+
+|link:ha-administration-guide.html#GSHAG[High Availability Administration Guide]
+|Explains how to configure {productName} to provide higher availability and
+scalability through failover and load balancing.
+
+|link:performance-tuning-guide.html#GSPTG[Performance Tuning Guide]
+|Explains how to optimize the performance of {productName}.
+
+|link:troubleshooting-guide.html#GSTSG[Troubleshooting Guide]
+|Describes common problems that you might encounter when using {productName} and explains how to solve them.
+
+|link:error-messages-reference.html#GSEMR[Error Message Reference]
+|Describes error messages that you might encounter when using {productName}.
+
+|link:reference-manual.html#GSRFM[Reference Manual]
+|Provides reference information in man page format for {productName} administration commands, utility
+commands, and related concepts.
+
+|link:../openmq/mq-release-notes.html#GMRLN[Message Queue Release Notes]
+|Describes new features, compatibility issues, and existing bugs for Open Message Queue.
+
+|link:../openmq/mq-tech-over.html#GMTOV[Message Queue Technical Overview]
+|Provides an introduction to the technology, concepts, architecture, capabilities, and features of
+the Message Queue messaging service.
+
+|link:../openmq/mq-admin-guide.html#GMADG[Message Queue Administration Guide]
+|Explains how to set up and manage a Message Queue messaging system.
+
+|link:../openmq/mq-dev-guide-jmx.html#GMJMG[Message Queue Developer's Guide for JMX Clients]
+|Describes the application programming interface in Message Queue for
+programmatically configuring and monitoring Message Queue resources in
+conformance with the Java Management Extensions (JMX).
+
+|link:../openmq/mq-dev-guide-java.html#GMJVG[Message Queue Developer's Guide for Java Clients]
+|Provides information about concepts and procedures for developing Java messaging
+applications (Java clients) that work with {productName}.
+
+|link:../openmq/mq-dev-guide-c.html#GMCCG[Message Queue Developer's Guide for C Clients]
+|Provides programming and reference information for developers working with
+Message Queue who want to use the C language binding to the Message
+Queue messaging service to send, receive, and process Message Queue messages.
+|===
+
+
+[[GSING00015]][[giprl]]
+
+[[related-documentation]]
+=== Related Documentation
+
+The following tutorials explain how to develop Jakarta EE applications:
+
+* https://github.com/eclipse-ee4j/jakartaee-firstcup-examples[
+Your First Cup: An Introduction to the Jakarta EE Platform].
+For beginning Jakarta EE programmers, this short tutorial explains the entire
+process for developing a simple enterprise application.
+The sample application is a web application that consists of a component that is
+based on the Enterprise JavaBeans specification, a JAX-RS web service,
+and a JavaServer Faces component for the web front end.
+
+* https://eclipse-ee4j.github.io/jakartaee-tutorial[The Jakarta EE Tutorial].
+This comprehensive tutorial explains how to use Jakarta EE platform technologies
+and APIs to develop Jakarta EE applications.
+
+Javadoc tool reference documentation for packages that are provided with
+{productName} is available as follows.
+
+* The Jakarta EE specifications and API specification is
+located at https://jakarta.ee/specifications/.
+
+* The API specification for {productName} 7, including Jakarta EE
+platform packages and nonplatform packages that are specific to the
+{productName} product, is located at
+https://glassfish.org/docs/.
+
+For information about creating enterprise applications in the NetBeans
+Integrated Development Environment (IDE), see the
+https://netbeans.apache.org/kb/docs/java-ee.html[
+NetBeans Documentation, Training & Support page].
+
+For information about the Derby database for use with
+the {productName}, see the https://db.apache.org/derby/index.html[Derby page].
+
+The Jakarta EE Samples project is a collection of sample applications that
+demonstrate a broad range of Jakarta EE technologies. The Jakarta EE Samples
+are bundled with the Jakarta EE Software Development Kit (SDK) and are also
+available from the repository
+(`https://github.com/eclipse-ee4j/glassfish-samples`).
+
+[[GSING00016]][[fwbkx]]
+
+[[typographic-conventions]]
+=== Typographic Conventions
+
+The following table describes the typographic changes that are used in
+this book.
+
+[width="100%",cols="<14%,<37%,<49%",options="header",]
+|===
+|Typeface |Meaning |Example
+
+|`AaBbCc123`
+|The names of commands, files, and directories, and onscreen computer output
+|Edit your `.login` file.
+
+Use `ls` `a` to list all files.
+
+`machine_name% you have mail.`
+
+|`AaBbCc123`
+|What you type, contrasted with onscreen computer output
+|`machine_name%` `su`
+
+`Password:`
+
+|AaBbCc123
+|A placeholder to be replaced with a real name or value
+|The command to remove a file is `rm` filename.
+
+|AaBbCc123
+|Book titles, new terms, and terms to be emphasized (note that some emphasized items appear bold online)
+|Read Chapter 6 in the User's Guide.
+
+A cache is a copy that is stored locally.
+
+Do not save the file.
+|===
+
+
+[[GSING00017]][[fquvc]]
+
+[[symbol-conventions]]
+=== Symbol Conventions
+
+The following table explains symbols that might be used in this book.
+
+[width="100%",cols="<10%,<26%,<28%,<36%",options="header",]
+|===
+|Symbol |Description |Example |Meaning
+
+|`[ ]`
+|Contains optional arguments and command options.
+|`ls [-l]`
+|The `-l` option is not required.
+
+|`{ \| }`
+|Contains a set of choices for a required command option.
+|`-d {y\|n}`
+|The `-d` option requires that you use either the `y` argument or the `n` argument.
+
+|`${ }`
+|Indicates a variable reference.
+|`${com.sun.javaRoot}`
+|References the value of the `com.sun.javaRoot` variable.
+
+|`-`
+|Joins simultaneous multiple keystrokes.
+|Control-A
+|Press the Control key while you press the A key.
+
+|`+`
+|Joins consecutive multiple keystrokes.
+|Ctrl+A+N
+|Press the Control key, release it, and then press the subsequent keys.
+
+|`>`
+|Indicates menu item selection in a graphical user interface.
+|File > New > Templates
+|From the File menu, choose New. From the New submenu, choose Templates.
+|===
+
+
+[[GSING00018]][[ghpfg]]
+
+[[default-paths-and-file-names]]
+=== Default Paths and File Names
+
+The following table describes the default paths and file names that are
+used in this book.
+
+[%autowidth.stretch,options="header",]
+|===
+|Placeholder |Description |Default Value
+
+|as-install
+a|Represents the base installation directory for {productName}.
+In configuration files, as-install is represented as follows:
+`${com.sun.aas.installRoot}`
+a|* Installations on the Oracle Solaris operating system, Linux operating
+system, and Mac OS operating system:
++
+user's-home-directory``/glassfish7/glassfish``
++
+* Installations on the Windows operating system:
++
+SystemDrive``:\glassfish7\glassfish``
+
+|as-install-parent
+|Represents the parent of the base installation directory for {productName}.
+a|* Installations on the Oracle Solaris operating system, Linux operating
+system, and Mac operating system:
++
+user's-home-directory``/glassfish7``
++
+* Installations on the Windows operating system:
++
+SystemDrive``:\glassfish7``
+
+|domain-root-dir
+|Represents the directory in which a domain is created by default.
+|as-install``/domains/``
+
+|domain-dir
+|Represents the directory in which a domain's configuration is stored.
+In configuration files, domain-dir is represented as follows:
+`${com.sun.aas.instanceRoot}`
+|domain-root-dir/domain-name
+
+|instance-dir
+|Represents the directory for a server instance.
+|domain-dir/instance-name
+|===
+
diff --git a/docs/installation-guide/src/main/asciidoc/title.adoc b/docs/installation-guide/src/main/asciidoc/title.adoc
new file mode 100644
index 0000000..f880a4d
--- /dev/null
+++ b/docs/installation-guide/src/main/asciidoc/title.adoc
@@ -0,0 +1,46 @@
+type=page
+status=published
+title={productName} Installation Guide, Release 7
+next=preface.html
+prev=lot.html
+~~~~~~
+
+= {productName} Installation Guide, Release 7
+
+[[eclipse-glassfish-server]]
+== {productName}
+
+Installation Guide
+
+Release 7
+
+Contributed 2018 - 2022
+
+This book contains instructions for installing and uninstalling
+{productName} software.
+
+[[sthref1]]
+
+'''''
+
+{productName} Installation Guide, Release 7
+
+Copyright © 2010, 2019 Oracle and/or its affiliates. All rights reserved.
+
+This program and the accompanying materials are made available under the
+terms of the Eclipse Public License v. 2.0, which is available at
+http://www.eclipse.org/legal/epl-2.0.
+
+SPDX-License-Identifier: EPL-2.0
+
+Oracle and Java are registered trademarks of Oracle and/or its
+affiliates. Other names may be trademarks of their respective owners.
+
+Intel and Intel Xeon are trademarks or registered trademarks of Intel
+Corporation. All SPARC trademarks are used under license and are
+trademarks or registered trademarks of SPARC International, Inc. AMD,
+Opteron, the AMD logo, and the AMD Opteron logo are trademarks or
+registered trademarks of Advanced Micro Devices. UNIX is a registered
+trademark of The Open Group.
+
+image:img/eclipse_foundation_logo_tiny.png["Eclipse Logo"]
diff --git a/docs/installation-guide/src/main/asciidoc/uninstalling.adoc b/docs/installation-guide/src/main/asciidoc/uninstalling.adoc
new file mode 100644
index 0000000..0ec42d4
--- /dev/null
+++ b/docs/installation-guide/src/main/asciidoc/uninstalling.adoc
@@ -0,0 +1,50 @@
+type=page
+status=published
+title=Uninstalling {productName} 7
+prev=installing.html
+~~~~~~
+
+= Uninstalling GlassFish
+
+[[GSING00003]][[ghmlt]]
+
+
+[[uninstalling-glassfish]]
+== 2 Uninstalling GlassFish
+
+This chapter describes how to uninstall {productName}.
+
+[[gjxfv]][[GSING00028]][[removing-a-glassfish-server-installation]]
+
+=== Removing a {productName} Installation
+
+This procedure describes how to uninstall {productName} software that
+was installed using a ZIP file, as described in
+link:installing.html#ghmxb[Installing {productName} From a ZIP File].
+
+Before You Begin
+
+Stop all domains and other related processes, including command prompts
+using the installation directory or its subdirectories and any
+applications using Java SE files.
+
+To stop domains, use the `asadmin stop-domain` command. For more
+information about stopping a domain, see
+"link:administration-guide/domains.html#GSADG00336[To Stop a Domain]"
+in {productName} Administration Guide.
+
+If orphaned processes remain, identify and terminate the processes as follows:
+
+* Solaris, Linux, and Mac OS X systems:
++
+Use the `ps -ef` command and terminate the processes using the `kill` command.
+* Windows systems:
++
+Use the Task Manager and terminate the processes.
+
+Also see "link:release-notes/release-notes.html#GSRLN00253[Known Issues]"
+in {productName} Release Notes for known issues related to uninstallation.
+
+1. Save any files in the installation directory that you may want to keep.
+2. Manually delete installation directory and all its contents.
+
diff --git a/docs/installation-guide/src/main/jbake/assets/css/style.css b/docs/installation-guide/src/main/jbake/assets/css/style.css
deleted file mode 100644
index 25a16e4..0000000
--- a/docs/installation-guide/src/main/jbake/assets/css/style.css
+++ /dev/null
@@ -1,315 +0,0 @@
-/* CSS */
-/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
-/** 1. Set default font family to sans-serif. 2. Prevent iOS text size adjust after orientation change, without disabling user zoom. */
-html { font-family: sans-serif; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ }
-
-/* HTML5 display definitions ========================================================================== */
-/** Correct `block` display not defined for any HTML5 element in IE 8/9. Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox. Correct `block` display not defined for `main` in IE 11. */
-article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { display: block; }
-
-/** 1. Correct `inline-block` display not defined in IE 8/9. 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. */
-audio, canvas, progress, video { display: inline-block; /* 1 */ vertical-align: baseline; /* 2 */ }
-
-/** Prevent modern browsers from displaying `audio` without controls. Remove excess height in iOS 5 devices. */
-audio:not([controls]) { display: none; height: 0; }
-
-/** Address `[hidden]` styling not present in IE 8/9/10. Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. */
-[hidden], template { display: none; }
-
-/* Links ========================================================================== */
-/** Remove the gray background color from active links in IE 10. */
-a { background-color: transparent; }
-
-/** Improve readability when focused and also mouse hovered in all browsers. */
-a:active, a:hover { outline: 0; }
-
-/* Text-level semantics ========================================================================== */
-/** Address styling not present in IE 8/9/10/11, Safari, and Chrome. */
-abbr[title] { border-bottom: 1px dotted; }
-
-/** Address style set to `bolder` in Firefox 4+, Safari, and Chrome. */
-b, strong { font-weight: bold; }
-
-/** Address styling not present in Safari and Chrome. */
-dfn { font-style: italic; }
-
-/** Address variable `h1` font-size and margin within `section` and `article` contexts in Firefox 4+, Safari, and Chrome. */
-h1 { font-size: 2em; margin: 0.67em 0; }
-
-/** Address styling not present in IE 8/9. */
-mark { background: #ff0; color: #000; }
-
-/** Address inconsistent and variable font size in all browsers. */
-small { font-size: 80%; }
-
-/** Prevent `sub` and `sup` affecting `line-height` in all browsers. */
-sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }
-
-sup { top: -0.5em; }
-
-sub { bottom: -0.25em; }
-
-/* Embedded content ========================================================================== */
-/** Remove border when inside `a` element in IE 8/9/10. */
-img { border: 0; }
-
-/** Correct overflow not hidden in IE 9/10/11. */
-svg:not(:root) { overflow: hidden; }
-
-/* Grouping content ========================================================================== */
-/** Address margin not present in IE 8/9 and Safari. */
-figure { margin: 1em 40px; }
-
-/** Address differences between Firefox and other browsers. */
-hr { box-sizing: content-box; height: 0; }
-
-/** Contain overflow in all browsers. */
-pre { overflow: auto; }
-
-/** Address odd `em`-unit font size rendering in all browsers. */
-code, kbd, pre, samp { font-family: monospace, monospace; font-size: 1em; }
-
-/* Forms ========================================================================== */
-/** Known limitation: by default, Chrome and Safari on OS X allow very limited styling of `select`, unless a `border` property is set. */
-/** 1. Correct color not being inherited. Known issue: affects color of disabled elements. 2. Correct font properties not being inherited. 3. Address margins set differently in Firefox 4+, Safari, and Chrome. */
-button, input, optgroup, select, textarea { color: inherit; /* 1 */ font: inherit; /* 2 */ margin: 0; /* 3 */ }
-
-/** Address `overflow` set to `hidden` in IE 8/9/10/11. */
-button { overflow: visible; }
-
-/** Address inconsistent `text-transform` inheritance for `button` and `select`. All other form control elements do not inherit `text-transform` values. Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. Correct `select` style inheritance in Firefox. */
-button, select { text-transform: none; }
-
-/** 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls. 2. Correct inability to style clickable `input` types in iOS. 3. Improve usability and consistency of cursor style between image-type `input` and others. */
-button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ }
-
-/** Re-set default cursor for disabled elements. */
-button[disabled], html input[disabled] { cursor: default; }
-
-/** Remove inner padding and border in Firefox 4+. */
-button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; }
-
-/** Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet. */
-input { line-height: normal; }
-
-/** It's recommended that you don't attempt to style these elements. Firefox's implementation doesn't respect box-sizing, padding, or width.  1. Address box sizing set to `content-box` in IE 8/9/10. 2. Remove excess padding in IE 8/9/10. */
-input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ }
-
-/** Fix the cursor style for Chrome's increment/decrement buttons. For certain `font-size` values of the `input`, it causes the cursor style of the decrement button to change from `default` to `text`. */
-input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { height: auto; }
-
-/** 1. Address `appearance` set to `searchfield` in Safari and Chrome. 2. Address `box-sizing` set to `border-box` in Safari and Chrome (include `-moz` to future-proof). */
-input[type="search"] { -webkit-appearance: textfield; /* 1 */ /* 2 */ box-sizing: content-box; }
-
-/** Remove inner padding and search cancel button in Safari and Chrome on OS X. Safari (but not Chrome) clips the cancel button when the search input has padding (and `textfield` appearance). */
-input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; }
-
-/** Define consistent border, margin, and padding. */
-fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; }
-
-/** 1. Correct `color` not being inherited in IE 8/9/10/11. 2. Remove padding so people aren't caught out if they zero out fieldsets. */
-legend { border: 0; /* 1 */ padding: 0; /* 2 */ }
-
-/** Remove default vertical scrollbar in IE 8/9/10/11. */
-textarea { overflow: auto; }
-
-/** Don't inherit the `font-weight` (applied by a rule above). NOTE: the default cannot safely be changed in Chrome and Safari on OS X. */
-optgroup { font-weight: bold; }
-
-/* Tables ========================================================================== */
-/** Remove most spacing between table cells. */
-table { border-collapse: collapse; border-spacing: 0; }
-
-td, th { padding: 0; }
-
-/* LAYOUT STYLES */
-
-p { margin-top: 0; }
-
-code, pre { margin-bottom: 30px; font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace; font-size: 13px; color: #222; }
-
-code { padding: 0 3px; background-color: #f2f8fc; border: solid 1px #dbe7f3; }
-
-pre { padding: 20px; overflow: auto; text-shadow: none; background: #fff; border: solid 1px #f2f2f2; }
-
-pre code { padding: 0; color: #2879d0; background-color: #fff; border: none; }
-
-ul, ol, dl { margin-bottom: 20px; }
-
-/* COMMON STYLES */
-
-td.halign-right { text-align: right; } 
-
-td.halign-center { text-align: center; } 
-
-form { padding: 20px; background: #f2f2f2; }
-
-h2 { 
-   font-size: 2em;
-   line-height: 1.2em;
-   font-weight: 200;
-   letter-spacing: 0;
-}
-
-h3 { 
-   font-size: 1.4em;
-   line-height: 1.2em;
-   font-weight: normal;
-   letter-spacing: 0;
-}
-
-.sect1 {
-   margin-left: 4%;
-   margin-right: 4%;
-   font: 13px/20px Arial, Helvetica, sans-serif  
-}
-
-a:link {
-   text-decoration: none;
-   color: #09569d;
-}
-
-#preamble hr{
-   margin-left: 0%;
-   margin-right: 0%;
-}
-
-#preamble .sectionbody table  {
-   font-weight: 200;
-   margin-left: 4%;
-   margin-right: 4%;
-}
-
-hr {
-   margin-bottom: 12px;
-}
-
-table.tableblock.frame-all.grid-all.spread {
-   font-size: 12px;
-}
-
-code {
-   font-size:.9em;
-   border: 1px solid #eaeaea;
-   background-color: #f6f6f6;
-   border-radius: 3px;
-   padding: 1px;
-   padding-left:2px;
-   padding-right:2px;
-}
-
-pre.prettyprint.highlight {
-   border: 1px solid #eaeaea;
-   background-color: #f6f6f6;
-   border-radius: 4px;
-   padding: 8px;
-   padding-top:4px;
-   padding-bottom:4px;
-}
-
-.language-oac_no_warn {
-   font-size:.9em;
-   color:#222;
-   background-color: transparent;
-}
-
-#doc-title {
-   margin-left: 4%;
-}
-
-#top-nav {
-   margin-left: 4%;
-   font-size: 12px;
-}
-
-#bottom-nav {
-   margin-left: 4%;
-   font-size: 12px;
-}
-
-.vector-font {
-   color:grey; 
-   font-size: 20px;
-}
-
-#copyright {
-   padding-top: 10px;
-   padding-bottom: 4px;
-   display: table;
-   margin:0 auto;
-   color: grey;
-   font-size: 12px;
-   vertical-align: middle;
-}
-
-.beta {color: #FF0000}
-
-/* GENERAL ELEMENT TYPE STYLES */
-
-/* #Media Queries
-================================================== */
-/* Smaller than standard 960 (devices and browsers) */
-/* Tablet Portrait size to standard 960 (devices and browsers) */
-@media only screen and (min-width: 768px) and (max-width: 959px) { .inner { width: 740px; }
-  header h1, header h2 { width: 340px; }
-  header h1 { font-size: 60px; }
-  header h2 { font-size: 30px; }
-}
-/* All Mobile Sizes (devices and browser) */
-@media only screen and (max-width: 767px) { .inner { width: 93%; }
-  header { padding: 20px 0; }
-  header .inner { position: relative; }
-  header h1, header h2 { width: 100%; }
-  header h1 { font-size: 48px; }
-  header h2 { font-size: 24px; }
-  header a.button { position: relative; display: inline-block; width: auto; height: auto; padding: 5px 10px; margin-top: 15px; font-size: 13px; line-height: 1; color: #2879d0; text-align: center; background-color: #9ddcff; background-image: none; border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; }
-  header a.button small { display: inline; font-size: 13px; }
-}
-/* Mobile Landscape Size to Tablet Portrait (devices and browsers) */
-/* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */
-
-header h1 { padding-top: 14px; font-size: 2em; font-weight: 200; line-height: 1.4; color: #FFFFFF; letter-spacing: 0px; border-bottom: 0px; }
-
-header h2 { font-size: 1.2em; margin-top: 0; margin-bottom: 0; font-weight: 200; line-height: .8; color: #ec7D11; letter-spacing: 0; }
-
-/*
-header a.button { background: transparent url(../images/logo.png) 0 0 no-repeat; padding-left: 32px; }
-*/
-
-header a:hover { text-decoration: none; }
-
-/* Admonition (Note) block */
-.admonitionblock > table {
-  border: 0;
-  background: none;
-  width: 100%;
-  table-layout: auto;
-  margin-bottom: 10.5px;
-}
-.admonitionblock > table td.icon {
-  text-align: center;
-  width: 60px;
-}
-.admonitionblock > table td.icon img {
-  max-width: none;
-}
-.admonitionblock > table td.icon .title {
-  text-transform: uppercase;
-}
-.admonitionblock > table td.content {
-  padding-left: 1em;
-  padding-right: 1em;
-  border-left: 3px solid #ddd;
-}
-.admonitionblock > table td.content > :last-child > :last-child {
-  margin-bottom: 0;
-}
-.admonitionblock td.icon [class^="fa icon-"]:before {
-  font-size: 2.5em;
-  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
-  cursor: default;
-}
-.admonitionblock td.icon .icon-note:before {
-  content: "\f05a";
-  color: #5bc0de;
-}
diff --git a/docs/installation-guide/src/main/jbake/content/installing.adoc b/docs/installation-guide/src/main/jbake/content/installing.adoc
deleted file mode 100644
index 0de48d8..0000000
--- a/docs/installation-guide/src/main/jbake/content/installing.adoc
+++ /dev/null
@@ -1,881 +0,0 @@
-type=page
-status=published
-title=Installing Eclipse GlassFish Server 5.1
-next=uninstalling.html
-prev=preface.html
-~~~~~~
-Installing Eclipse GlassFish Server 5.1
-=======================================
-
-[[GSING00002]][[ggssq]]
-
-
-[[installing-glassfish-server-5.0]]
-1 Installing Eclipse GlassFish Server 5.1
------------------------------------------
-
-This chapter provides instructions for installing Eclipse GlassFish Server
-5.1 software on Solaris, Linux, Mac OS X, and Windows
-systems.
-
-The following topics are addressed here:
-
-* link:#gjiaz[Installation Requirements]
-* link:#ggrlg[Installation Files for GlassFish Server 5.0]
-* link:#ghmxb[Installing GlassFish Server From a ZIP File]
-
-[[gjiaz]][[GSING00022]][[installation-requirements]]
-
-Installation Requirements
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Before installing Eclipse GlassFish Server 5.1, ensure that
-your system meets the requirements listed in "link:../release-notes/release-notes.html#GSRLN00131[Hardware
-and Software Requirements]" in Eclipse GlassFish Server
-Release Notes. If necessary, download and install the required JDK
-software. Problems are likely to arise if you attempt to install on a
-platform that is not supported or on a system that in some other way
-does not meet release requirements. Also see "link:../release-notes/release-notes.html#GSRLN00253[Known
-Issues]" in Eclipse GlassFish Server Release Notes for known
-issues related to installation.
-
-* On Solaris, Linux, and Windows systems, JDK software is available from
-the
-http://www.oracle.com/technetwork/java/javase/downloads/index.html[Java
-SE downloads page]
-(`http://www.oracle.com/technetwork/java/javase/downloads/index.html`).
-* For Mac OS X systems, GlassFish Server uses the JDK that is part of
-the Macintosh operating system. If necessary, obtain the required JDK
-version from the http://support.apple.com/downloads/[Mac OS X Updates
-site] (`http://support.apple.com/downloads/`).
-
-[[gkxfw]][[javassist-library-license-notice]]
-
-Javassist Library License Notice
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You are receiving a copy of the Javassist (Java Programming Assistant)
-Library in source form at
-`https://github.com/jboss-javassist/javassist/archive/rel_3_22_0_cr2.zip`
-and in object code form in the jar file
-`glassfish6/glassfish/modules/javassist.jar` included with the
-distribution. The terms of the Oracle license do NOT apply to the
-Javassist (Java Programming Assistant) program; it is licensed under the
-following license, separately from the Oracle programs you receive. If
-you do not wish to install this program, you may choose to not proceed
-with the installation of Oracle GlassFish Server.
-
-"The contents of this file are subject to the Mozilla Public License
-
-Version 1.1 (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.mozilla.org/MPL/`
-
-Software distributed under the License is distributed on an "AS
-IS"basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
-the License for the specific language governing rights and limitations
-under the License. The Original Code is Javassist 3.14.0.GA. The Initial
-Developer of the Original Code is Shigeru Chiba. Portions created by
-Shigeru Chiba are Copyright (C) 1999-2010. All Rights Reserved.
-
-Alternatively, the contents of this file may be used under the terms of
-GNU Lesser General Public License Version 2.1 or later (the "LGPL"), in
-which case the provisions of the LGPL License are applicable instead of
-those above. If you wish to allow use of your version of this file only
-under the terms of the LGPL License and not to allow others to use your
-version of this file under the MPL, indicate your decision by deleting
-the provisions above and replace them with the notice and other
-provisions required by the LGPL License. If you do not delete the
-provisions above, a recipient may use your version of this file under
-either the MPL or the LGPL License."
-
-MOZILLA PUBLIC LICENSE
-
-Version 1.1
-
-\1. Definitions.
-
-1.0.1. "Commercial Use" means distribution or otherwise making the
-Covered Code available to a third party.
-
-1.1. ''Contributor'' means each entity that creates or contributes to
-the creation of Modifications.
-
-1.2. ''Contributor Version'' means the combination of the Original Code,
-prior Modifications used by a Contributor, and the Modifications made by
-that particular Contributor.
-
-1.3. ''Covered Code'' means the Original Code or Modifications or the
-combination of the Original Code and Modifications, in each case
-including portions thereof.
-
-1.4. ''Electronic Distribution Mechanism'' means a mechanism generally
-accepted in the software development community for the electronic
-transfer of data.
-
-1.5. ''Executable'' means Covered Code in any form other than Source
-Code.
-
-1.6. ''Initial Developer'' means the individual or entity identified as
-the Initial Developer in the Source Code notice required by Exhibit A.
-
-1.7. ''Larger Work'' means a work which combines Covered Code or
-portions thereof with code not governed by the terms of this License.
-
-1.8. ''License'' means this document.
-
-1.8.1. "Licensable" means having the right to grant, to the maximum
-extent possible, whether at the time of the initial grant or
-subsequently acquired, any and all of the rights conveyed herein.
-
-1.9. ''Modifications'' means any addition to or deletion from the
-substance or structure of either the Original Code or any previous
-Modifications. When Covered Code is released as a series of files, a
-Modification is:
-
-A. Any addition to or deletion from the contents of a file containing
-Original Code or previous Modifications.
-
-B. Any new file that contains any part of the Original Code or previous
-Modifications.
-
-1.10. ''Original Code'' means Source Code of computer software code
-which is described in the Source Code notice required by Exhibit A as
-Original Code, and which, at the time of its release under this License
-is not already Covered Code governed by this License.
-
-1.10.1. "Patent Claims" means any patent claim(s), now owned or
-hereafter acquired, including without limitation, method, process, and
-apparatus claims, in any patent Licensable by grantor.
-
-1.11. ''Source Code'' means the preferred form of the Covered Code for
-making modifications to it, including all modules it contains, plus any
-associated interface definition files, scripts used to control
-compilation and installation of an Executable, or source code
-differential comparisons against either the Original Code or another
-well known, available Covered Code of the Contributor's choice. The
-Source Code can be in a compressed or archival form, provided the
-appropriate decompression or de-archiving software is widely available
-for no charge.
-
-1.12. "You'' (or "Your") means an individual or a legal entity
-exercising rights under, and complying with all of the terms of, this
-License or a future version of this License issued under Section 6.1.
-For legal entities, "You'' includes any entity which controls, is
-controlled by, or is under common control with You. For purposes of this
-definition, "control'' means (a) the power, direct or indirect, to cause
-the direction or management of such entity, whether by contract or
-otherwise, or (b) ownership of more than fifty percent (50%) of the
-outstanding shares or beneficial ownership of such entity.
-
-\2. Source Code License.
-
-2.1. The Initial Developer Grant.
-
-The Initial Developer hereby grants You a world-wide, royalty-free,
-non-exclusive license, subject to third party intellectual property
-claims:
-
-\(a) under intellectual property rights (other than patent or trademark)
-Licensable by Initial Developer to use, reproduce, modify, display,
-perform, sublicense and distribute the Original Code (or portions
-thereof) with or without Modifications, and/or as part of a Larger Work;
-and
-
-\(b) under Patents Claims infringed by the making, using or selling of
-Original Code, to make, have made, use, practice, sell, and offer for
-sale, and/or otherwise dispose of the Original Code (or portions
-thereof).
-
-\(c) the licenses granted in this Section 2.1(a) and (b) are effective
-on the date Initial Developer first distributes Original Code under the
-terms of this License.
-
-\(d) Notwithstanding Section 2.1(b) above, no patent license is granted:
-1) for code that You delete from the Original Code; 2) separate from the
-Original Code; or 3) for infringements caused by: i) the modification of
-the Original Code or ii) the combination of the Original Code with other
-software or devices.
-
-2.2. Contributor Grant.
-
-Subject to third party intellectual property claims, each Contributor
-hereby grants You a world-wide,
-
-royalty-free, non-exclusive license
-
-\(a) under intellectual property rights (other than patent or trademark)
-Licensable by Contributor, to use, reproduce, modify, display, perform,
-sublicense and distribute the Modifications created by such Contributor
-(or portions thereof) either on an unmodified basis, with other
-Modifications, as Covered Code and/or as part of a Larger Work; and
-
-\(b) under Patent Claims infringed by the making, using, or selling of
-Modifications made by that Contributor either alone and/or in
-combination with its Contributor Version (or portions of such
-combination), to make, use, sell, offer for sale, have made, and/or
-otherwise dispose of: 1)Modifications made by that Contributor (or
-portions thereof); and 2) the combination of Modifications made by that
-Contributor with its Contributor Version (or portions of such
-combination).
-
-\(c) the licenses granted in Sections 2.2(a) and 2.2(b) are effective on
-the date Contributor first makes Commercial Use of the Covered Code.
-
-\(d) Notwithstanding Section 2.2(b) above, no patent license is granted:
-1) for any code that Contributor has deleted from the Contributor
-Version; 2) separate from the Contributor Version; 3)for infringements
-caused by: i) third party modifications of Contributor Version or ii)
-the combination
-
-of Modifications made by that Contributor with other software (except as
-part of the Contributor
-
-Version) or other devices; or 4) under Patent Claims infringed by
-Covered Code in the absence of
-
-Modifications made by that Contributor.
-
-\3. Distribution Obligations.
-
-3.1. Application of License.
-
-The Modifications which You create or to which You contribute are
-governed by the terms of this License, including without limitation
-Section 2.2. The Source Code version of Covered Code may be distributed
-only under the terms of this License or a future version of this License
-released under Section 6.1, and You must include a copy of this License
-with every copy of the Source Code You distribute. You may not offer or
-impose any terms on any Source Code version that alters or restricts the
-applicable version of this License or the recipients' rights hereunder.
-However, You may include an additional document offering the additional
-rights described in Section 3.5.
-
-3.2. Availability of Source Code.
-
-Any Modification which You create or to which You contribute must be
-made available in Source Code form under the terms of this License
-either on the same media as an Executable version or via an accepted
-Electronic Distribution Mechanism to anyone to whom you made an
-Executable version available; and if made available via Electronic
-Distribution Mechanism, must remain available for at least twelve (12)
-months after the date it initially became available, or at least six (6)
-months after a subsequent version of that particular Modification has
-been made available to such recipients. You are responsible for ensuring
-that the Source Code version remains available even if the Electronic
-Distribution Mechanism is maintained by a third party.
-
-3.3. Description of Modifications.
-
-You must cause all Covered Code to which You contribute to contain a
-file documenting the changes You made to create that Covered Code and
-the date of any change. You must include a prominent statement that the
-Modification is derived, directly or indirectly, from Original Code
-provided by the Initial Developer and including the name of the Initial
-Developer in (a) the Source Code, and (b) in any notice in an Executable
-version or related documentation in which You describe the origin or
-ownership of the Covered Code.
-
-3.4. Intellectual Property Matters
-
-\(a) Third Party Claims.
-
-If Contributor has knowledge that a license under a third party's
-intellectual property rights is required to exercise the rights granted
-by such Contributor under Sections 2.1 or 2.2, Contributor must include
-a text file with the Source Code distribution titled "LEGAL'' which
-describes the claim and the party making the claim in sufficient detail
-that a recipient will know whom to contact. If Contributor obtains such
-knowledge after the Modification is made available as described in
-Section 3.2, Contributor shall promptly modify the LEGAL file in all
-copies Contributor makes available thereafter and shall take other steps
-(such as notifying appropriate mailing lists or newsgroups) reasonably
-calculated to inform those who received the Covered Code that new
-knowledge has been obtained.
-
-\(b) Contributor APIs.
-
-If Contributor's Modifications include an application programming
-interface and Contributor has knowledge of patent licenses which are
-reasonably necessary to implement that API, Contributor must also
-include this information in the LEGAL file.
-
-\(c) Representations.
-
-Contributor represents that, except as disclosed pursuant to Section
-3.4(a) above, Contributor believes that Contributor's Modifications are
-Contributor's original creation(s) and/or Contributor has sufficient
-rights to grant the rights conveyed by this License.
-
-3.5. Required Notices.
-
-You must duplicate the notice in Exhibit A in each file of the Source
-Code. If it is not possible to put such notice in a particular Source
-Code file due to its structure, then You must include such notice in a
-location (such as a relevant directory) where a user would be likely to
-look for such a notice. If You created one or more Modification(s) You
-may add your name as a Contributor to the notice described in Exhibit A.
-You must also duplicate this License in any documentation for the Source
-Code where You describe recipients' rights or ownership rights relating
-to Covered Code. You may choose to offer, and to charge a fee for,
-warranty, support, indemnity or liability obligations to one or more
-recipients of Covered Code. However, You may do so only on Your own
-behalf, and not on behalf of the Initial Developer or any Contributor.
-You must make it absolutely clear than any such warranty, support,
-indemnity or liability obligation is offered by You alone, and You
-hereby agree to indemnify the Initial Developer and every Contributor
-for any liability incurred by the Initial Developer or such Contributor
-as a result of warranty, support, indemnity or liability terms You
-offer.
-
-3.6. Distribution of Executable Versions.
-
-You may distribute Covered Code in Executable form only if the
-requirements of Section 3.1-3.5 have been met for that Covered Code, and
-if You include a notice stating that the Source Code version of the
-Covered Code is available under the terms of this License, including a
-description of how and where You have fulfilled the obligations of
-Section 3.2. The notice must be conspicuously included in any notice in
-an Executable version, related documentation or collateral in which You
-describe recipients' rights relating to the Covered Code. You may
-distribute the Executable version of Covered Code or ownership rights
-under a license of Your choice, which may contain terms different from
-this License, provided that You are in compliance with the terms of this
-License and that the license for the Executable version does not attempt
-to limit or alter the recipient's rights in the Source Code version from
-the rights set forth in this License. If You distribute the Executable
-version under a different license You must make it absolutely clear that
-any terms which differ from this License are offered by You alone, not
-by the Initial Developer or any Contributor. You hereby agree to
-indemnify the Initial Developer and every Contributor for any liability
-incurred by the Initial Developer or such Contributor as a result of any
-such terms You offer.
-
-3.7. Larger Works.
-
-You may create a Larger Work by combining Covered Code with other code
-not governed by the terms of this License and distribute the Larger Work
-as a single product. In such a case, You must make sure the requirements
-of this License are fulfilled for the Covered Code.
-
-\4. Inability to Comply Due to Statute or Regulation.
-
-If it is impossible for You to comply with any of the terms of this
-License with respect to some or all of the Covered Code due to statute,
-judicial order, or regulation then You must: (a) comply with the terms
-of this License to the maximum extent possible; and (b) describe the
-limitations and the code they affect. Such description must be included
-in the LEGAL file described in Section 3.4 and must be included with all
-distributions of the Source Code. Except to the extent prohibited by
-statute or regulation, such description must be sufficiently detailed
-for a recipient of ordinary skill to be able to understand it.
-
-\5. Application of this License.
-
-This License applies to code to which the Initial Developer has attached
-the notice in Exhibit A and to related Covered Code.
-
-\6. Versions of the License.
-
-6.1. New Versions.
-
-Netscape Communications Corporation (''Netscape'') may publish revised
-and/or new versions of the License from time to time. Each version will
-be given a distinguishing version number.
-
-6.2. Effect of New Versions.
-
-Once Covered Code has been published under a particular version of the
-License, You may always continue to use it under the terms of that
-version. You may also choose to use such Covered Code under the terms of
-any subsequent version of the License published by Netscape. No one
-other than Netscape has the right to modify the terms applicable to
-Covered Code created under this License.
-
-6.3. Derivative Works.
-
-If You create or use a modified version of this License (which you may
-only do in order to apply it to code which is not already Covered Code
-governed by this License), You must (a) rename Your license so that the
-phrases ''Mozilla'', ''MOZILLAPL'', ''MOZPL'', ''Netscape'', "MPL",
-''NPL'' or any confusingly similar phrase do not appear in your license
-(except to note that your license differs from this License) and (b)
-otherwise make it clear that Your version of the license contains terms
-which differ from the Mozilla Public License and Netscape Public
-License. (Filling in the name of the Initial Developer, Original Code or
-Contributor in the notice described in Exhibit A shall not of themselves
-be deemed to be modifications of this License.)
-
-\7. DISCLAIMER OF WARRANTY.
-
-COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS'' BASIS,
-WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
-WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS,
-MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE
-RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU.
-SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE
-INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY
-NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY
-CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE.NO USE OF ANY COVERED CODE
-IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
-
-\8. TERMINATION.
-
-8.1. This License and the rights granted hereunder will terminate
-automatically if You fail to comply with terms herein and fail to cure
-such breach within 30 days of becoming aware of the breach. All
-sublicenses to the Covered Code which are properly granted shall survive
-any termination of this License. Provisions which, by their nature, must
-remain in effect beyond the termination of this License shall survive.
-
-8.2. If You initiate litigation by asserting a patent infringement claim
-(excluding declatory judgment actions) against Initial Developer or a
-Contributor (the Initial Developer or Contributor against whom You file
-such action is referred to as "Participant") alleging that:
-
-\(a) such Participant's Contributor Version directly or indirectly
-infringes any patent, then any and all rights granted by such
-Participant to You under Sections 2.1 and/or 2.2 of this License shall,
-upon 60 days notice from Participant terminate prospectively, unless if
-within 60 days after receipt of notice You either: agree in writing to
-pay Participant a mutually agreeable reasonable royalty for Your past
-and future use of Modifications made by such Participant, or (ii)
-withdraw Your litigation claim with respect to the Contributor Version
-against such Participant. If within 60 days of notice, a reasonable
-royalty and payment arrangement are not mutually agreed upon in writing
-by the parties or the litigation claim is not withdrawn, the rights
-granted by Participant to You under Sections 2.1 and/or 2.2
-automatically terminate at the expiration of the 60 day notice period
-specified above.
-
-\(b) any software, hardware, or device, other than such Participant's
-Contributor Version, directly or indirectly infringes any patent, then
-any rights granted to You by such Participant under Sections 2.1(b) and
-2.2(b) are revoked effective as of the date You first made, used, sold,
-distributed, or had made, Modifications made by that Participant.
-
-8.3. If You assert a patent infringement claim against Participant
-alleging that such Participant's Contributor Version directly or
-indirectly infringes any patent where such claim is resolved (such as by
-license or settlement) prior to the initiation of patent infringement
-litigation, then the reasonable value of the licenses granted by such
-Participant under Sections 2.1 or 2.2 shall be taken into account in
-determining the amount or value of any payment or license.
-
-8.4. In the event of termination under Sections 8.1 or 8.2 above, all
-end user license agreement (excluding distributors and resellers) which
-have been validly granted by You or any distributor hereunder prior to
-termination shall survive termination.
-
-\9. LIMITATION OF LIABILITY.
-
-UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
-(INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
-DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY
-
-DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE
-LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
-CONSEQUENTIAL DAMAGES OF ANY CHARACTER
-
-INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK
-STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
-COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH
-
-PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS
-LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR
-PERSONAL INJURY RESULTING FROM SUCH
-
-PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH
-LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION
-OF INCIDENTAL OR CONSEQUENTIAL
-
-DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
-
-\10. U.S. GOVERNMENT END USERS.
-
-The Covered Code is a ''commercial item,'' as that term is defined in 48
-C.F.R. 2.101 (Oct. 1995), consisting of ''commercial computer software''
-and ''commercial computer software documentation,'' as such terms are
-used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212
-and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S.
-Government End Users acquire Covered Code with only those rights set
-forth herein.
-
-\11. MISCELLANEOUS.
-
-This License represents the complete agreement concerning subject matter
-hereof. If any provision of this License is held to be unenforceable,
-such provision shall be reformed only to the extent necessary to make it
-enforceable. This License shall be governed by California law provisions
-(except to the extent applicable law, if any, provides otherwise),
-excluding its conflict-of-law provisions. With respect to disputes in
-which at least one party is a citizen of, or an entity chartered or
-registered to do business in the United States of America, any
-litigation relating to this License shall be subject to the jurisdiction
-of the Federal Courts of the Northern District of California, with venue
-lying in Santa Clara County, California, with the losing party
-responsible for costs, including without limitation, court costs and
-reasonable attorneys' fees and expenses. The application of the United
-Nations Convention on
-
-Contracts for the International Sale of Goods is expressly excluded. Any
-law or regulation which provides that the language of a contract shall
-be construed against the drafter shall not apply to this License.
-
-\12. RESPONSIBILITY FOR CLAIMS.
-
-As between Initial Developer and the Contributors, each party is
-responsible for claims and damages arising, directly or indirectly, out
-of its utilization of rights under this License and You agree to work
-with Initial Developer and Contributors to distribute such
-responsibility on an equitable basis. Nothing herein is intended or
-shall be deemed to constitute any admission of liability.
-
-\13. MULTIPLE-LICENSED CODE.
-
-Initial Developer may designate portions of the Covered Code as
-"Multiple-Licensed?. "Multiple-Licensed? means that the Initial
-Developer permits you to utilize portions of the Covered Code under Your
-choice of the MPL or the alternative licenses, if any, specified by the
-Initial Developer in the file described in Exhibit A.
-
-EXHIBIT A -Mozilla Public License.
-
-The contents of this file are subject to the Mozilla Public License
-Version 1.1 (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.mozilla.org/MPL/. Software distributed under the License is
-distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either
-express or implied. See the License for the specific language governing
-rights and limitations under the License.
-
-The Original Code is Javassist.
-
-The Initial Developer of the Original Code is Shigeru Chiba. Portions
-created by the Initial Developer are
-
-Copyright (C) 1999-2016 Shigeru Chiba. All Rights Reserved.
-
-Contributor(s): ______________________________________.
-
-Alternatively, the contents of this file may be used under the terms of
-the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
-in which case the provisions of the LGPL are applicable instead of those
-above. If you wish to allow use of your version of this file only under
-the terms of the LGPL, and not to allow others to use your version of
-this file under the terms of the MPL, indicate your decision by deleting
-the provisions above and replace them with the notice and other
-provisions required by the LGPL. If you do not delete the provisions
-above, a recipient may use your version of this file under the terms of
-either the MPL or the LGPL.
-
-[[ggrlg]][[GSING00023]][[installation-files-for-glassfish-server-5.0]]
-
-Installation Files for GlassFish Server 5.1
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following topics are addressed here:
-
-* link:#gkbaj[GlassFish Server Download Locations]
-* link:#gkbby[GlassFish Server Installation Methods]
-* link:#gkudi[Choosing an Installation Method]
-* link:#gkbbb[GlassFish Server ZIP Files]
-
-[[gkbaj]][[GSING00035]][[glassfish-server-download-locations]]
-
-GlassFish Server Download Locations
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Installation files for Eclipse GlassFish Server 5.1 are
-available by download from the
-https://javaee.github.io/glassfish/download[GlassFish Server Downloads]
-page.
-
-Eclipse GlassFish Server 5.1 is also part of the Java EE SDK
-distributions. The SDK distributions are available from the
-http://www.oracle.com/technetwork/java/javaee/downloads/index.html[Java
-EE downloads page] and are not described in this document.
-
-[[gkbby]][[GSING00036]][[glassfish-server-installation-methods]]
-
-GlassFish Server Installation Methods
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-link:#ghtqe[Table 1-1] lists the various GlassFish Server Open Source
-Edition installation methods. The table also provides links to
-installation instructions for each method.
-
-
-[NOTE]
-=======================================================================
-
-Before performing any GlassFish Server installation, ensure that your
-environment adheres to the JDK guidelines in
-"https://javaee.github.io/glassfish/doc/5.0/release-notes.pdf[Paths and
-Environment Settings for the JDK Software]" in GlassFish Server Open
-Source Edition Release Notes.
-
-=======================================================================
-
-
-[[GSING103]][[sthref3]][[ghtqe]]
-
-
-Table 1-1 GlassFish Server 5.1 Installation Methods
-
-[width="100%",cols="39%,61%",options="header",]
-|=======================================================================
-|Installation Method |Installation Instructions
-|Multi-platform ZIP file |link:#ghmxb[Installing GlassFish Server From a
-ZIP File].
-|=======================================================================
-
-
-Each of the installation methods listed in link:#ghtqe[Table 1-1] also
-let you choose between installing the Full Platform or the Web Profile.
-These two distributions are explained in the next section.
-
-[[gkudi]][[GSING00037]][[choosing-an-installation-method]]
-
-Choosing an Installation Method
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-There are two general sets of questions you should consider when
-deciding which GlassFish Server 5.1 installation method to use.
-
-* link:#gkuau[ZIP Package]
-* link:#gkudp[Full Platform or Web Profile Distribution]
-
-[[gkuau]][[GSING00029]][[zip-package]]
-
-ZIP Package
-+++++++++++
-
-The relative features and strengths of the GlassFish Server ZIP packages
-are listed below.
-
-* ZIP Package
-
-** Is simpler to install, but provides no configuration options during
-the installation
-
-** Any additional configurations must be performed manually, after
-installation
-
-** If uninstallation is desired, product must be uninstalled manually
-
-[[gkudp]][[GSING00030]][[full-platform-or-web-profile-distribution]]
-
-Full Platform or Web Profile Distribution
-+++++++++++++++++++++++++++++++++++++++++
-
-Each of the installation methods listed in link:#ghtqe[Table 1-1] also
-let you choose to install either the GlassFish Server Full Platform or
-Web Profile distribution. link:#gkuap[Table 1-2] lists the features
-available in each of these two distributions. Note that some of these
-features are value-adds, and are not required by the Java EE
-specification.
-
-[[GSING104]][[sthref4]][[gkuap]]
-
-
-Table 1-2 GlassFish Server Full Profile and Web Profile Features
-
-[width="100%",cols="69%,16%,15%",options="header",]
-|=======================================================================
-|Feature |Full Platform |Web Profile
-|Java Platform, Enterprise Edition 8 |X |X
-
-|Java EE Security API |X |X
-
-|Java API for JSON Processing 1.1 |X |X
-
-|Java API for JSON Binding 1.0 |X |X
-
-|EJB 3.2 Lite (Support for Local Container only) |X |X
-
-|JTA 1.2 |X |X
-
-|OSGi-based microkernel |X |X
-
-|Java Web Technologies (Servlet 4.0, JSP 2.2, JSF 2.3, JSTL 1.2, EL 3.0)
-|X |X
-
-|Grizzly/Comet |X |X
-
-|JPA 2.2, (EclipseLink), JDBC Connection Pooling |X |X
-
-|JDBC 4.0 |X |X
-
-|Apache Derby 10.13.1.1 |X |X
-
-|Web Administration Console and CLI |X |X
-
-|Rapid Redeployment (Maintain session state on application redeploy) |X
-|X
-
-|OMG CORBA APIs 3.0 |X |X
-
-|Debugging Support for Other Languages 1.0 |X |X
-
-|Common Annotations for Java 1.3 |X |X
-
-|Dependency Injection for Java 1.0 |X |X
-
-|Managed Beans 1.0 |X |X
-
-|Interceptors 1.2 |X |X
-
-|Contexts and Dependency Injection for Java 2.0 (CDI, ex-Web Beans) |X
-|X
-
-|Bean Validation 2.0 |X |X
-
-|JAX-RS 2.1 (Jersey) |X |X
-
-|EJB 3.2 Full API (Support for Remote Container) |X |-
-
-|Java EE Connector Architecture 1.7 |X |-
-
-|JAX-WS 2.3 |X |-
-
-|JAXB 2.2 |X |-
-
-|Implementing Java Web Services 1.4 |X |-
-
-|Web Services Metadata for the Java Platform 2.1 |X |-
-
-|JMS 2.0 |X |-
-
-|JavaMail 1.6 |X |-
-
-|JACC 1.5 |X |-
-
-|Java Authentication Service Provider Interface for Containers 1.1 |X |-
-
-|Java EE Application Deployment 1.2 |X |-
-
-|J2EE Management 1.1 |X |-
-
-|JAX-RPC 1.1 |X |-
-
-|JAXR 1.0 |X |-
-
-|CORBA 3.0.0 |X a|
-*
-
-
-|Metro |X |-
-|=======================================================================
-
-
-* The Full Java EE Platform contains the complete CORBA package. The OMG
-CORBA v3.0 APIs are available in the Java EE Web Profile.
-
-** Transaction propagation not supported.
-
-[[gkbbb]][[GSING00038]][[glassfish-server-zip-files]]
-
-GlassFish Server ZIP Files
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The Eclipse GlassFish Server 5.1 multi-platform ZIP files
-are compatible with Solaris, Linux, Mac OS, UNIX, and Windows operating
-systems. See link:#gkbaj[GlassFish Server Download Locations] for a list
-of download locations.
-
-link:#gkbac[Table 1-3] lists the available ZIP file downloads.
-
-[[GSING105]][[sthref5]][[gkbac]]
-
-
-Table 1-3 GlassFish Server Downloadable ZIP Files
-
-[width="100%",cols="31%,69%",options="header",]
-|===================================================================
-|ZIP File |Description
-| |
-| |
-a|
-[source,oac_no_warn]
-----
-glassfish-5.0.zip
-----
-
- |Full Platform distribution of Eclipse GlassFish Server
-a|
-[source,oac_no_warn]
-----
-glassfish-5.0-web.zip
-----
-
- |Web Profile distribution Eclipse GlassFish Server
-|===================================================================
-
-
-[[ghmxb]][[GSING00024]][[installing-glassfish-server-from-a-zip-file]]
-
-Installing GlassFish Server From a ZIP File
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This section describes how to install GlassFish Server Open Source
-Edition 5.1 using the multi-platform ZIP file. GlassFish Server is
-installed by unzipping the file in the installation directory of your
-choice.
-
-
-[NOTE]
-=======================================================================
-
-It is not possible to specify any GlassFish Server configuration options
-during a ZIP file installation. Any configuration changes, such as
-creating domains, clusters, and server instances, must be made manually
-after installation.
-
-=======================================================================
-
-
-[[ggrks]][[GSING00006]][[to-install-glassfish-server-using-the-zip-file]]
-
-To Install GlassFish Server Using the ZIP File
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Before You Begin
-
-Ensure that your system meets the requirements listed in
-"link:../release-notes/release-notes.html#GSRLN00131[Hardware and Software Requirements]" in GlassFish
-Server Open Source Edition Release Notes.
-
-Also see "link:../release-notes/release-notes.html#GSRLN00253[Known Issues]" in GlassFish Server Open
-Source Edition Release Notes for known issues related to installation.
-
-1.  Download the desired GlassFish Server 5.1 ZIP file. +
-See link:#gkbaj[GlassFish Server Download Locations] for a list of
-download locations. See link:#gkbac[Table 1-3] for a list of available
-ZIP files.
-2.  Change to the directory where you downloaded the ZIP file.
-3.  Unzip the file.
-* Solaris, Linux, and Mac OS X systems: +
-[source,oac_no_warn]
-----
-unzip zip-file-name
-----
-zip-file-name is the name of the file that you downloaded. +
-For example: +
-[source,oac_no_warn]
-----
-glassfish-5.0.zip
-----
-* Windows systems: +
-Unzip using your favorite file compression utility. +
-Eclipse GlassFish Server 5.1 is extracted into a new `glassfish6` directory
-under your current directory. This `glassfish6` directory is referred to
-throughout the GlassFish Server documentation set as as-install-parent.
-4.  Start GlassFish Server using the instructions in the
-link:../quick-start-guide/toc.html#GSQSG[GlassFish Server Open Source Edition Quick Start Guide]. +
-The guide explains how to perform basic tasks such as starting the
-server, accessing the Administration Console, and deploying a sample
-application.
-
-
diff --git a/docs/installation-guide/src/main/jbake/content/lot.adoc b/docs/installation-guide/src/main/jbake/content/lot.adoc
deleted file mode 100644
index b44eae2..0000000
--- a/docs/installation-guide/src/main/jbake/content/lot.adoc
+++ /dev/null
@@ -1,20 +0,0 @@
-type=page
-status=published
-title=List of Tables
-next=title.html
-prev=toc.html
-~~~~~~
-List of Tables
-==============
-
-[[list-of-tables]]
-List of Tables
---------------
-
-* link:installing.html#ghtqe[1-1 GlassFish Server 5.0 Installation
-Methods]
-* link:installing.html#gkuap[1-2 GlassFish Server Full Profile and Web
-Profile Features]
-* link:installing.html#gkbac[1-3 GlassFish Server Downloadable ZIP Files]
-
-
diff --git a/docs/installation-guide/src/main/jbake/content/preface.adoc b/docs/installation-guide/src/main/jbake/content/preface.adoc
deleted file mode 100644
index 5d3fe8c..0000000
--- a/docs/installation-guide/src/main/jbake/content/preface.adoc
+++ /dev/null
@@ -1,341 +0,0 @@
-type=page
-status=published
-title=Preface
-next=installing.html
-prev=title.html
-~~~~~~
-Preface
-=======
-
-[[GSING00001]][[gjxfa]]
-
-
-[[preface]]
-Preface
--------
-
-[NOTE]
-========================================================================
-
-This documentation is part of the Java Enterprise Edition contribution 
-to the Eclipse Foundation and is not intended for use in relation to 
-Java Enterprise Edition or Orace GlassFish. The documentation is in the 
-process of being revised to reflect the new Jakarta EE branding. 
-Additional changes will be made as requirements and procedures evolve 
-for Jakarta EE. Where applicable, references to Java EE or Java 
-Enterprise Edition should be considered references to Jakarta EE. 
-
-Please see the Title page for additional license information.
-========================================================================
-
-This document contains instructions for installing and uninstalling
-GlassFish Server Open Source Edition 5.0 software.
-
-This preface contains information about and conventions for the entire
-GlassFish Server Open Source Edition (GlassFish Server) documentation
-set.
-
-GlassFish Server 5.0 is developed through the GlassFish project
-open-source community at `https://javaee.github.io/glassfish/`. The
-GlassFish project provides a structured process for developing the
-GlassFish Server platform that makes the new features of the Java EE
-platform available faster, while maintaining the most important feature
-of Java EE: compatibility. It enables Java developers to access the
-GlassFish Server source code and to contribute to the development of the
-GlassFish Server. The GlassFish project is designed to encourage
-communication between Oracle engineers and the community.
-
-The following topics are addressed here:
-
-* link:#ghpbz[GlassFish Server Documentation Set]
-* link:#giprl[Related Documentation]
-* link:#fwbkx[Typographic Conventions]
-* link:#fquvc[Symbol Conventions]
-* link:#ghpfg[Default Paths and File Names]
-
-[[GSING00014]][[ghpbz]]
-
-
-[[glassfish-server-documentation-set]]
-GlassFish Server Documentation Set
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The GlassFish Server documentation set describes deployment planning and
-system installation. For an introduction to GlassFish Server, refer to
-the books in the order in which they are listed in the following table.
-
-[width="100%",cols="30%,70%",options="header",]
-|=======================================================================
-|Book Title |Description
-|link:../release-notes/toc.html#GSRLN[Release Notes] |Provides late-breaking information about
-the software and the documentation and includes a comprehensive,
-table-based summary of the supported hardware, operating system, Java
-Development Kit (JDK), and database drivers.
-
-|link:../quick-start-guide/toc.html#GSQSG[Quick Start Guide] |Explains how to get started with the
-GlassFish Server product.
-
-|link:../installation-guide/toc.html#GSING[Installation Guide] |Explains how to install the software
-and its components.
-
-|link:../upgrade-guide/toc.html#GSUPG[Upgrade Guide] |Explains how to upgrade to the latest
-version of GlassFish Server. This guide also describes differences
-between adjacent product releases and configuration options that can
-result in incompatibility with the product specifications.
-
-|link:../deployment-planning-guide/toc.html#GSPLG[Deployment Planning Guide] |Explains how to build a
-production deployment of GlassFish Server that meets the requirements of
-your system and enterprise.
-
-|link:../administration-guide/toc.html#GSADG[Administration Guide] |Explains how to configure, monitor,
-and manage GlassFish Server subsystems and components from the command
-line by using the link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`] utility. Instructions for
-performing these tasks from the Administration Console are provided in
-the Administration Console online help.
-
-|link:../security-guide/toc.html#GSSCG[Security Guide] |Provides instructions for configuring and
-administering GlassFish Server security.
-
-|link:../application-deployment-guide/toc.html#GSDPG[Application Deployment Guide] |Explains how to assemble and
-deploy applications to the GlassFish Server and provides information
-about deployment descriptors.
-
-|link:../application-development-guide/toc.html#GSDVG[Application Development Guide] |Explains how to create and
-implement Java Platform, Enterprise Edition (Java EE platform)
-applications that are intended to run on the GlassFish Server. These
-applications follow the open Java standards model for Java EE components
-and application programmer interfaces (APIs). This guide provides
-information about developer tools, security, and debugging.
-
-| |
-
-|link:../embedded-server-guide/toc.html#GSESG[Embedded Server Guide] |Explains how to run applications in
-embedded GlassFish Server and to develop applications in which GlassFish
-Server is embedded.
-
-|link:../ha-administration-guide/toc.html#GSHAG[High Availability Administration Guide] |Explains how to
-configure GlassFish Server to provide higher availability and
-scalability through failover and load balancing.
-
-|link:../performance-tuning-guide/toc.html#GSPTG[Performance Tuning Guide] |Explains how to optimize the
-performance of GlassFish Server.
-
-|link:../troubleshooting-guide/toc.html#GSTSG[Troubleshooting Guide] |Describes common problems that you
-might encounter when using GlassFish Server and explains how to solve
-them.
-
-|link:../error-messages-reference/toc.html#GSEMR[Error Message Reference] |Describes error messages that you
-might encounter when using GlassFish Server.
-
-|link:../reference-manual/toc.html#GSRFM[Reference Manual] |Provides reference information in man
-page format for GlassFish Server administration commands, utility
-commands, and related concepts.
-
-|link:../../openmq/mq-release-notes/toc.html#GMRLN[Message Queue Release Notes] |Describes new features,
-compatibility issues, and existing bugs for Open Message Queue.
-
-|link:../../openmq/mq-tech-over/toc.html#GMTOV[Message Queue Technical Overview] |Provides an introduction
-to the technology, concepts, architecture, capabilities, and features of
-the Message Queue messaging service.
-
-|link:../../openmq/mq-admin-guide/toc.html#GMADG[Message Queue Administration Guide] |Explains how to set up
-and manage a Message Queue messaging system.
-
-|link:../../openmq/mq-dev-guide-jmx/toc.html#GMJMG[Message Queue Developer's Guide for JMX Clients] |Describes
-the application programming interface in Message Queue for
-programmatically configuring and monitoring Message Queue resources in
-conformance with the Java Management Extensions (JMX).
-
-|link:../../openmq/mq-dev-guide-java/toc.html#GMJVG[Message Queue Developer's Guide for Java Clients] |Provides
-information about concepts and procedures for developing Java messaging
-applications (Java clients) that work with GlassFish Server.
-
-|link:../../openmq/mq-dev-guide-c/toc.html#GMCCG[Message Queue Developer's Guide for C Clients] |Provides
-programming and reference information for developers working with
-Message Queue who want to use the C language binding to the Message
-Queue messaging service to send, receive, and process Message Queue
-messages.
-|=======================================================================
-
-
-[[GSING00015]][[giprl]]
-
-
-[[related-documentation]]
-Related Documentation
-~~~~~~~~~~~~~~~~~~~~~
-
-The following tutorials explain how to develop Java EE applications:
-
-* https://javaee.github.io/firstcup/[Your First Cup: An Introduction to
-the Java EE Platform] (`https://javaee.github.io/firstcup/`). For
-beginning Java EE programmers, this short tutorial explains the entire
-process for developing a simple enterprise application. The sample
-application is a web application that consists of a component that is
-based on the Enterprise JavaBeans specification, a JAX-RS web service,
-and a JavaServer Faces component for the web front end.
-* https://javaee.github.io/tutorial/[The Java EE Tutorial]
-(`https://javaee.github.io/tutorial/`). This comprehensive tutorial
-explains how to use Java EE 8 platform technologies and APIs to develop
-Java EE applications.
-
-Javadoc tool reference documentation for packages that are provided with
-GlassFish Server is available as follows:
-
-* The API specification of Java EE is located at
-`https://javaee.github.io/javaee-spec/javadocs/`.
-* The API specification for GlassFish Server 5.0, including Java EE
-platform packages and nonplatform packages that are specific to the
-GlassFish Server product, is located at
-`https://javaee.github.io/javaee-spec/javadocs/`.
-
-Additionally, the
-https://javaee.github.io/javaee-spec/Specifications[Java EE
-Specifications] might be useful.
-
-For information about creating enterprise applications in the NetBeans
-Integrated Development Environment (IDE), see the
-http://www.netbeans.org/kb/[NetBeans Documentation, Training & Support
-page].
-
-For information about the Apache Derby for use with the GlassFish
-Server, see the
-https://db.apache.org/derby/[`Apache Derby product page`].
-
-The Java EE Samples project is a collection of sample applications that
-demonstrate a broad range of Java EE technologies. The Java EE Samples
-are bundled with the Java EE Software Development Kit (SDK) and are also
-available from the https://javaee.github.io/glassfish-samples/[Java EE
-Samples project page].
-
-[[GSING00016]][[fwbkx]]
-
-
-[[typographic-conventions]]
-Typographic Conventions
-~~~~~~~~~~~~~~~~~~~~~~~
-
-The following table describes the typographic changes that are used in
-this book.
-
-[width="100%",cols="14%,37%,49%",options="header",]
-|=======================================================================
-|Typeface |Meaning |Example
-|`AaBbCc123` |The names of commands, files, and directories, and
-onscreen computer output a|
-Edit your `.login` file.
-
-Use `ls` `a` to list all files.
-
-`machine_name% you have mail.`
-
-|`AaBbCc123` |What you type, contrasted with onscreen computer output a|
-`machine_name%` `su`
-
-`Password:`
-
-|AaBbCc123 |A placeholder to be replaced with a real name or value |The
-command to remove a file is `rm` filename.
-
-|AaBbCc123 |Book titles, new terms, and terms to be emphasized (note
-that some emphasized items appear bold online) a|
-Read Chapter 6 in the User's Guide.
-
-A cache is a copy that is stored locally.
-
-Do not save the file.
-
-|=======================================================================
-
-
-[[GSING00017]][[fquvc]]
-
-
-[[symbol-conventions]]
-Symbol Conventions
-~~~~~~~~~~~~~~~~~~
-
-The following table explains symbols that might be used in this book.
-
-[width="100%",cols="10%,26%,28%,36%",options="header",]
-|=======================================================================
-|Symbol |Description |Example |Meaning
-|`[ ]` |Contains optional arguments and command options. |`ls [-l]` |The
-`-l` option is not required.
-
-|`{ \| }` |Contains a set of choices for a required command option.
-|`-d {y\|n}` |The `-d` option requires that you use either the `y`
-argument or the `n` argument.
-
-|`${ }` |Indicates a variable reference. |`${com.sun.javaRoot}`
-|References the value of the `com.sun.javaRoot` variable.
-
-|- |Joins simultaneous multiple keystrokes. |Control-A |Press the
-Control key while you press the A key.
-
-|+ + |Joins consecutive multiple keystrokes. |Ctrl+A+N |Press the
-Control key, release it, and then press the subsequent keys.
-
-|> |Indicates menu item selection in a graphical user interface. |File >
-New > Templates |From the File menu, choose New. From the New submenu,
-choose Templates.
-|=======================================================================
-
-
-[[GSING00018]][[ghpfg]]
-
-
-[[default-paths-and-file-names]]
-Default Paths and File Names
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following table describes the default paths and file names that are
-used in this book.
-
-[width="100%",cols="14%,34%,52%",options="header",]
-|=======================================================================
-|Placeholder |Description |Default Value
-|as-install + a|
-Represents the base installation directory for GlassFish Server.
-
-In configuration files, as-install is represented as follows:
-
-`${com.sun.aas.installRoot}`
-
- a|
-Installations on the Oracle Solaris operating system, Linux operating
-system, and Mac OS operating system:
-
-user's-home-directory`/glassfish6/glassfish`
-
-Installations on the Windows operating system:
-
-SystemDrive`:\glassfish6\glassfish`
-
-|as-install-parent + |Represents the parent of the base installation
-directory for GlassFish Server. a|
-Installations on the Oracle Solaris operating system, Linux operating
-system, and Mac operating system:
-
-user's-home-directory`/glassfish6`
-
-Installations on the Windows operating system:
-
-SystemDrive`:\glassfish6`
-
-|domain-root-dir + |Represents the directory in which a domain is
-created by default. |as-install`/domains/`
-
-|domain-dir + a|
-Represents the directory in which a domain's configuration is stored.
-
-In configuration files, domain-dir is represented as follows:
-
-`${com.sun.aas.instanceRoot}`
-
- |domain-root-dir`/`domain-name
-
-|instance-dir + |Represents the directory for a server instance.
-|domain-dir`/`instance-name
-|=======================================================================
-
diff --git a/docs/installation-guide/src/main/jbake/content/title.adoc b/docs/installation-guide/src/main/jbake/content/title.adoc
deleted file mode 100644
index 4146613..0000000
--- a/docs/installation-guide/src/main/jbake/content/title.adoc
+++ /dev/null
@@ -1,45 +0,0 @@
-type=page
-status=published
-title=Eclipse GlassFish Server Installation Guide, Release 5.1
-next=preface.html
-prev=lot.html
-~~~~~~
-Eclipse GlassFish Server Installation Guide, Release 5.1
-========================================================
-
-[[eclipse-glassfish-server]]
-Eclipse GlassFish Server
-------------------------
-
-Installation Guide
-
-Release 5.1
-
-Contributed 2018, 2019
-
-This book contains instructions for installing and uninstalling
-Eclipse GlassFish Server software.
-
-[[sthref1]]
-
-'''''
-
-Eclipse GlassFish Server Installation Guide, Release 5.1
-
-Copyright © 2010, 2019 Oracle and/or its affiliates. All rights reserved.
-
-This program and the accompanying materials are made available under the 
-terms of the Eclipse Public License v. 2.0, which is available at 
-http://www.eclipse.org/legal/epl-2.0. 
-
-SPDX-License-Identifier: EPL-2.0
-
-Oracle and Java are registered trademarks of Oracle and/or its 
-affiliates. Other names may be trademarks of their respective owners. 
-
-Intel and Intel Xeon are trademarks or registered trademarks of Intel 
-Corporation. All SPARC trademarks are used under license and are 
-trademarks or registered trademarks of SPARC International, Inc. AMD, 
-Opteron, the AMD logo, and the AMD Opteron logo are trademarks or 
-registered trademarks of Advanced Micro Devices. UNIX is a registered 
-trademark of The Open Group. 
diff --git a/docs/installation-guide/src/main/jbake/content/uninstalling.adoc b/docs/installation-guide/src/main/jbake/content/uninstalling.adoc
deleted file mode 100644
index d3f8d45..0000000
--- a/docs/installation-guide/src/main/jbake/content/uninstalling.adoc
+++ /dev/null
@@ -1,67 +0,0 @@
-type=page
-status=published
-title=Uninstalling GlassFish Server 5.0
-prev=installing.html
-~~~~~~
-Uninstalling GlassFish Server 5.0
-=================================
-
-[[GSING00003]][[ghmlt]]
-
-
-[[uninstalling-glassfish-server-5.0]]
-2 Uninstalling GlassFish Server 5.0
------------------------------------
-
-This chapter describes how to uninstall GlassFish Server Open Source
-Edition 5.0 software.
-
-[[gjxfv]][[GSING00028]][[removing-a-glassfish-server-installation]]
-
-Removing a GlassFish Server Installation
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This section describes how to remove GlassFish Server Open Source
-Edition 5.0 software.
-
-The following topics are addressed here:
-
-* link:#gkrfi[To Uninstall GlassFish Server Software After a ZIP File
-Installation]
-
-[[gkrfi]][[GSING00012]][[to-uninstall-glassfish-server-software-after-a-zip-file-installation]]
-
-To Uninstall GlassFish Server Software After a ZIP File Installation
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This procedure describes how to uninstall GlassFish Server software that
-was installed using a ZIP file, as described in
-link:installing.html#ghmxb[Installing GlassFish Server From a ZIP File].
-
-Before You Begin
-
-Stop all domains and other related processes, including command prompts
-using the installation directory or its subdirectories and any
-applications using Java SE files.
-
-To stop domains, use the `asadmin stop-domain` command. For more
-information about stopping a domain, see "link:../administration-guide/domains.html#GSADG00336[To Stop a
-Domain]" in GlassFish Server Open Source Edition Administration Guide.
-
-If orphaned processes remain, identify and terminate the processes as
-follows:
-
-* Solaris, Linux, and Mac OS X systems: +
-Use the `ps -ef` command and terminate the processes using the `kill`
-command.
-* Windows systems: +
-Use the Task Manager and terminate the processes.
-
-Also see "link:../release-notes/release-notes.html#GSRLN00253[Known Issues]" in GlassFish Server Open
-Source Edition Release Notes for known issues related to uninstallation.
-
-1.  Save any files in the installation directory that you may want to
-keep.
-2.  Manually delete installation directory and all its contents.
-
-
diff --git a/docs/installation-guide/src/main/jbake/jbake.properties b/docs/installation-guide/src/main/jbake/jbake.properties
deleted file mode 100644
index 546d09c..0000000
--- a/docs/installation-guide/src/main/jbake/jbake.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-site.host=http://jbake.org
-render.tags=false
-render.sitemap=false
-render.archive=false
-render.feed=false
-asciidoctor.option.safe=0
-asciidoctor.attributes.export=true
diff --git a/docs/installation-guide/src/main/jbake/templates/footer.ftl b/docs/installation-guide/src/main/jbake/templates/footer.ftl
deleted file mode 100644
index 6f2b09e..0000000
--- a/docs/installation-guide/src/main/jbake/templates/footer.ftl
+++ /dev/null
@@ -1,46 +0,0 @@
-<#-- a footer template fragment included in the page template -->
-<hr />
-
-<table width="90%" id="bottom-nav" cellspacing="0" cellpadding="0">
-	<colgroup>
-		<col width="12%"/>
-		<col width="12%"/>
-		<col width="*"/>
-	</colgroup>
-	<tr>		
-	    <#if content.prev??>
-		<td align="left">
-		<a href="${content.prev}">
-			<span class=" vector-font"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Previous</span>
-		</a>
-		</td>
-		</#if>
-
-		<#if content.next??>
-		<td align="left">
-		<a href="${content.next}">
-			<span class="vector-font"><i class="fa fa-arrow-circle-right vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Next</span>
-		</a>
-		</td>
-		</#if>
-
-		<td align="right">
-		<a href="toc.html">
-			<span class="vector-font"><i class="fa fa-list vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Contents</span>
-		</a>
-		</td>
-	</tr>
-</table>
-
-<span id="copyright">
-        <img src="img/eclipse_foundation_logo_tiny.png" height="20px" alt="Eclipse Foundation Logo" align="top"/>&nbsp;            
-        <span >Copyright&nbsp;&copy;&nbsp;2019,&nbsp;Oracle&nbsp;and/or&nbsp;its&nbsp;affiliates.&nbsp;All&nbsp;rights&nbsp;reserved.</span>
-</span>
-
-<p align="center" class="beta">${config.status!}</p>
-
-</body>
-</html>
diff --git a/docs/installation-guide/src/main/jbake/templates/header.ftl b/docs/installation-guide/src/main/jbake/templates/header.ftl
deleted file mode 100644
index 82ebb36..0000000
--- a/docs/installation-guide/src/main/jbake/templates/header.ftl
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html>
-<#-- a header template fragment included in the page template -->
-<html lang="en">
-  <head>
-    <meta charset="utf-8"/>
-    <title><#if (content.title)??><#escape x as x?xml>${content.title}</#escape></#if></title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <link href="<#if (content.rootpath)??>${content.rootpath}<#else></#if>css/style.css" rel="stylesheet">
-    <script src="https://use.fontawesome.com/96c4d89611.js"></script>
-  </head>
-  <body>
-<table id="doc-title" cellspacing="0" cellpadding="0">
-  <tr>
-  <td align="left" valign="top">
-  <b>${content.title}</b><br />
-      <p class="beta">${config.status!}</p>
-  </td>
-  </tr>
-</table>
-<hr />
-
-<table width="90%" id="top-nav" cellspacing="0" cellpadding="0">
-	<colgroup>
-		<col width="12%"/>
-		<col width="12%"/>
-		<col width="*"/>
-	</colgroup>
-	<tr>
-	    <#if content.prev??>
-		<td align="left">
-		<a href="${content.prev}">
-			<span class="vector-font"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Previous</span>
-		</a>
-		</td>
-	    </#if>
-
-	    <#if content.next??>
-		<td align="left">
-		<a href="${content.next}">
-			<span class=" vector-font"><i class="fa fa-arrow-circle-right vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Next</span>
-		</a>
-		</td>
-	    </#if>
-
-		<td align="right">
-		<a href="toc.html">
-			<span class=" vector-font"><i class="fa fa-list vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Contents</span>
-		</a>
-		</td>
-	</tr>
-</table>
-
diff --git a/docs/installation-guide/src/main/jbake/templates/menu.ftl b/docs/installation-guide/src/main/jbake/templates/menu.ftl
deleted file mode 100644
index 888c03d..0000000
--- a/docs/installation-guide/src/main/jbake/templates/menu.ftl
+++ /dev/null
@@ -1 +0,0 @@
-<#-- a menu bar template fragment included in the page template -->
\ No newline at end of file
diff --git a/docs/installation-guide/src/main/jbake/templates/page.ftl b/docs/installation-guide/src/main/jbake/templates/page.ftl
deleted file mode 100644
index eca51db..0000000
--- a/docs/installation-guide/src/main/jbake/templates/page.ftl
+++ /dev/null
@@ -1,8 +0,0 @@
-<#-- a top level page layout template -->
-
-<#include "header.ftl">
-<#include "menu.ftl">
-
-${content.body}
-
-<#include "footer.ftl">
\ No newline at end of file
diff --git a/docs/parent/pom.xml b/docs/parent/pom.xml
index 39e75c9..f2cae75 100644
--- a/docs/parent/pom.xml
+++ b/docs/parent/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.glassfish.docs</groupId>
         <artifactId>docs</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <groupId>org.glassfish.docs</groupId>
     <artifactId>parent</artifactId>
@@ -30,17 +30,18 @@
     <name>Eclipse GlassFish Documentation parent pom</name>
 
     <properties>
-        <site.output.dir>${project.build.directory}/staging/${project.artifactId}</site.output.dir>
         <maven.site.skip>true</maven.site.skip>
         <maven.deploy.skip>true</maven.deploy.skip>
-        <asciidoctor.maven.plugin.version>1.5.7.1</asciidoctor.maven.plugin.version>
-        <!-- XXX - jbake needs an older version than this -->
-        <asciidoctorj.version>1.6.2</asciidoctorj.version>
-        <asciidoctorj.pdf.version>1.5.0-alpha.16</asciidoctorj.pdf.version>
-        <jruby.version>9.2.6.0</jruby.version>
+        <asciidoctor.maven.plugin.version>2.2.1</asciidoctor.maven.plugin.version>
+        <asciidoctorj.version>2.5.2</asciidoctorj.version>
+        <asciidoctorj.pdf.version>1.6.0</asciidoctorj.pdf.version>
+        <jruby.version>9.3.2.0</jruby.version>
         <!-- status: DRAFT, BETA, etc., or blank for final -->
         <status>DRAFT</status>
-        <doc.pdf>${project.artifactId}.pdf</doc.pdf>
+        <pdf.fileName>${project.artifactId}.pdf</pdf.fileName>
+        <pdf.toclevels>2</pdf.toclevels>
+        <productName>Eclipse GlassFish</productName>
+        <bookDirectory>${project.build.directory}/book</bookDirectory>
     </properties>
 
     <build>
@@ -48,20 +49,11 @@
             <plugin>
                 <groupId>org.glassfish.doc</groupId>
                 <artifactId>glassfish-doc-maven-plugin</artifactId>
+                <configuration>
+                    <sourceDirectory>src/main/asciidoc</sourceDirectory>
+                </configuration>
                 <executions>
-                    <execution>
-                        <id>generate-toc</id>
-                        <phase>generate-resources</phase>
-                        <goals>
-                            <goal>toc</goal>
-                        </goals>
-                        <configuration>
-                            <chapterPatterns>
-                                [0-9]+\s.*,Preface.*,Part\s.*
-                            </chapterPatterns>
-                            <ignoreTagPatterns>JEET.*</ignoreTagPatterns>
-                        </configuration>
-                    </execution>
+                    <!-- Filtering - uses properties directly -->
                     <execution>
                         <id>generate-book</id>
                         <phase>generate-resources</phase>
@@ -71,38 +63,7 @@
                     </execution>
                 </executions>
             </plugin>
-            <plugin>
-                <groupId>com.blazebit</groupId>
-                <artifactId>jbake-maven-plugin</artifactId>
-                <version>1.0.0</version>
-                <configuration>
-                    <outputDirectory>${site.output.dir}</outputDirectory>
-                    <properties>
-                        <status>${status}</status>
-                    </properties>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>build-site</id>
-                        <phase>generate-resources</phase>
-                        <goals>
-                            <goal>build</goal>
-                        </goals>
-                    </execution>
-                </executions>
-                <dependencies>
-                    <dependency>
-                        <groupId>org.asciidoctor</groupId>
-                        <artifactId>asciidoctorj</artifactId>
-                        <version>1.5.5</version>
-                    </dependency>
-                    <dependency>
-                        <groupId>org.asciidoctor</groupId>
-                        <artifactId>asciidoctorj-diagram</artifactId>
-                        <version>1.5.4</version>
-                    </dependency>
-                </dependencies>
-            </plugin>
+
             <plugin>
                 <groupId>org.asciidoctor</groupId>
                 <artifactId>asciidoctor-maven-plugin</artifactId>
@@ -125,40 +86,67 @@
                     </dependency>
                 </dependencies>
                 <configuration>
-                    <sourceDirectory>${project.build.directory}/book</sourceDirectory>
-                    <sourceDocumentName>book.adoc</sourceDocumentName>
-                    <!-- XXX - below depends on running jbake first -->
-                    <imagesDir>${project.build.directory}/staging/${project.artifactId}/</imagesDir>
-                    <backend>pdf</backend>
-                    <outputFile>${doc.pdf}</outputFile>
                     <attributes>
-                        <!-- XXX - a kludge to allow theme to be shared -->
-                        <pdf-stylesdir>${project.basedir}/../parent/src/theme</pdf-stylesdir>
-                        <pdf-style>glassfish</pdf-style>
-                        <doctype>book</doctype>
                         <status>${status}</status>
                         <data-uri />
                         <icons>font</icons>
+                        <source-highlighter>coderay</source-highlighter>
                         <pagenums />
-                        <toc />
-                        <icons>font</icons>
                         <sectanchors>true</sectanchors>
                         <idprefix />
                         <idseparator>-</idseparator>
                         <docinfo1>true</docinfo1>
-                        <embedAssets>true</embedAssets>
+                        <imagesDir>${basedir}/src/main/asciidoc</imagesDir>
+                        <productName>${productName}</productName>
                     </attributes>
                 </configuration>
                 <executions>
                     <execution>
-                        <id>generate-pdf-doc</id>
-                        <phase>generate-resources</phase>
+                        <id>generate-html-doc</id>
+                        <phase>compile</phase>
                         <goals>
-                                <goal>process-asciidoc</goal>
+                            <goal>process-asciidoc</goal>
                         </goals>
+                        <configuration>
+                            <backend>html</backend>
+                            <sourceDirectory>${bookDirectory}</sourceDirectory>
+                            <sourceDocumentName>book.adoc</sourceDocumentName>
+                            <outputDirectory>${project.build.directory}/html</outputDirectory>
+                            <outputFile>${project.artifactId}.html</outputFile>
+                            <attributes>
+                                <linkcss>true</linkcss>
+                                <toc>left</toc>
+                                <toclevels>1</toclevels>
+                                <embedAssets>false</embedAssets>
+                            </attributes>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>generate-pdf-doc</id>
+                        <phase>compile</phase>
+                        <goals>
+                            <goal>process-asciidoc</goal>
+                        </goals>
+                        <configuration>
+                            <backend>pdf</backend>
+                            <sourceDirectory>${bookDirectory}</sourceDirectory>
+                            <sourceDocumentName>book.adoc</sourceDocumentName>
+                            <outputDirectory>${project.build.directory}/pdf</outputDirectory>
+                            <outputFile>${pdf.fileName}</outputFile>
+                            <attributes>
+                                 <!-- TODO - sharing themes and other files should be done as a dependency -->
+                                <pdf-stylesdir>${project.basedir}/../parent/src/theme</pdf-stylesdir>
+                                <pdf-style>glassfish</pdf-style>
+                                <doctype>book</doctype>
+                                <toc>preamble</toc>
+                                <toclevels>${pdf.toclevels}</toclevels>
+                                <embedAssets>true</embedAssets>
+                            </attributes>
+                        </configuration>
                     </execution>
                 </executions>
             </plugin>
+
             <plugin>
                 <groupId>org.codehaus.mojo</groupId>
                 <artifactId>build-helper-maven-plugin</artifactId>
@@ -172,7 +160,7 @@
                         <configuration>
                             <artifacts>
                                 <artifact>
-                                    <file>${project.build.directory}/generated-docs/${doc.pdf}</file>
+                                    <file>${project.build.directory}/pdf/${pdf.fileName}</file>
                                     <type>pdf</type>
                                 </artifact>
                             </artifacts>
@@ -183,8 +171,7 @@
             <plugin>
                 <artifactId>maven-jar-plugin</artifactId>
                 <configuration>
-                    <finalName>${project.artifactId}</finalName>
-                    <classesDirectory>${project.build.directory}/staging</classesDirectory>
+                    <classesDirectory>${project.build.directory}/html</classesDirectory>
                 </configuration>
             </plugin>
         </plugins>
diff --git a/docs/parent/src/main/jbake/content/title.adoc b/docs/parent/src/main/asciidoc/title.adoc
similarity index 100%
rename from docs/parent/src/main/jbake/content/title.adoc
rename to docs/parent/src/main/asciidoc/title.adoc
diff --git a/docs/parent/src/main/jbake/jbake.properties b/docs/parent/src/main/jbake/jbake.properties
deleted file mode 100644
index 04823fb..0000000
--- a/docs/parent/src/main/jbake/jbake.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-site.host=http://jbake.org
-render.tags=false
-render.sitemap=false
-render.archive=false
-render.feed=false
-asciidoctor.option.safe=0
-asciidoctor.attributes.export=true
\ No newline at end of file
diff --git a/docs/parent/src/main/jbake/templates/page.ftl b/docs/parent/src/main/jbake/templates/page.ftl
deleted file mode 100644
index e69de29..0000000
--- a/docs/parent/src/main/jbake/templates/page.ftl
+++ /dev/null
diff --git a/docs/performance-tuning-guide/README.md b/docs/performance-tuning-guide/README.md
deleted file mode 100644
index a3ec2b6..0000000
--- a/docs/performance-tuning-guide/README.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# A JBake project template
-
-## About JBake
-
-JBake is a static site generator, it's inspired from jekyll and written
-in java.  The basic idea is to have templates for the structure of the
-page, and the body generated from asciidoc content.
-
-## Pre requisites
-
-- Maven
-- JDK8+
-
-Deploying to Github will require password less authentication.
-
-This is done by exporting your SSH public key into your Github account.
-
-## Build the site locally
-
-The site is generated under target/staging.
-
-Open file:///PATH_TO_PROJECT_DIR/target/staging in a browser to view the site.
-
-```
-mvn generate-resources
-```
-
-Or you can invoke the JBake plugin directly.
-
-```
-mvn jbake:build
-```
-
-### Rebuild the site on changes
-
-```
-mvn jbake:watch
-```
-
-If you keep this command running, changes to the sources will be
-detected and the site will be rendered incrementally.
-
-This is convenient when writing content.
-
-### Serve the site locally
-
-```
-mvn jbake:serve
-```
-
-If a webserver is required (e.g. absolute path are used), this command
-will start a webserver (jetty) at http://localhost:8820.  It will also
-watch for changes and rebuild incrementally.
-
-## Deploy the site to Github Pages
-
-```
-mvn deploy
-```
-
-## Produce a zip file for download
-
-To produce a zip file containing the generated html files, use:
-
-```
-mvn package
-```
-
-When making a release on GitHub, this zip file should be added to the release.
-
-## Links
-
-- [JBake maven plugin documentation](https://github.com/Blazebit/jbake-maven-plugin)
-- [JBake documentation](http://jbake.org/docs/2.5.1)
-- [Freemarker documentation](http://freemarker.org/docs)
-- [AsciiDoc User Guide](http://asciidoc.org/userguide.html)
-- [Asciidoctor quick reference](http://asciidoctor.org/docs/asciidoc-syntax-quick-reference)
diff --git a/docs/performance-tuning-guide/pom.xml b/docs/performance-tuning-guide/pom.xml
index 5c5a9b6..63e0c92 100644
--- a/docs/performance-tuning-guide/pom.xml
+++ b/docs/performance-tuning-guide/pom.xml
@@ -22,11 +22,10 @@
     <parent>
         <groupId>org.glassfish.docs</groupId>
         <artifactId>parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../parent</relativePath>
     </parent>
-    <groupId>org.glassfish.docs</groupId>
     <artifactId>performance-tuning-guide</artifactId>
     <packaging>jar</packaging>
-    <name>Eclipse GlassFish Server Performance Tuning Guide, Release 5.1</name>
+    <name>Eclipse GlassFish Server Performance Tuning Guide, Release 7</name>
 </project>
diff --git a/docs/performance-tuning-guide/src/main/jbake/assets/img/appmodel.png b/docs/performance-tuning-guide/src/main/asciidoc/img/appmodel.png
similarity index 100%
rename from docs/performance-tuning-guide/src/main/jbake/assets/img/appmodel.png
rename to docs/performance-tuning-guide/src/main/asciidoc/img/appmodel.png
Binary files differ
diff --git a/docs/performance-tuning-guide/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png b/docs/performance-tuning-guide/src/main/asciidoc/img/eclipse_foundation_logo_tiny.png
similarity index 100%
rename from docs/performance-tuning-guide/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png
rename to docs/performance-tuning-guide/src/main/asciidoc/img/eclipse_foundation_logo_tiny.png
Binary files differ
diff --git a/docs/performance-tuning-guide/src/main/asciidoc/loe.adoc b/docs/performance-tuning-guide/src/main/asciidoc/loe.adoc
new file mode 100644
index 0000000..7cd4a63
--- /dev/null
+++ b/docs/performance-tuning-guide/src/main/asciidoc/loe.adoc
@@ -0,0 +1,17 @@
+type=page
+status=published
+title=List of Examples
+next=lof.html
+prev=toc.html
+~~~~~~
+
+= List of Examples
+
+[[list-of-examples]]
+== List of Examples
+
+* link:tuning-java.html#fxxpw[4-1 Heap Configuration on Solaris]
+* link:tuning-java.html#fxxpz[4-2 Heap Configuration on Windows]
+* link:tuning-os.html#sthref14[5-1 Setting the UDP Buffer Size in the
+/etc/sysctl.conf File]
+* link:tuning-os.html#glgjp[5-2 Setting the UDP Buffer Size at Runtime]
diff --git a/docs/performance-tuning-guide/src/main/asciidoc/lof.adoc b/docs/performance-tuning-guide/src/main/asciidoc/lof.adoc
new file mode 100644
index 0000000..fec358d
--- /dev/null
+++ b/docs/performance-tuning-guide/src/main/asciidoc/lof.adoc
@@ -0,0 +1,13 @@
+type=page
+status=published
+title=List of Figures
+next=lot.html
+prev=loe.html
+~~~~~~
+
+= List of Figures
+
+[[list-of-figures]]
+== List of Figures
+
+* link:overview.html#gacmj[1-1 Jakarta EE Application Model]
diff --git a/docs/performance-tuning-guide/src/main/asciidoc/lot.adoc b/docs/performance-tuning-guide/src/main/asciidoc/lot.adoc
new file mode 100644
index 0000000..3196ffa
--- /dev/null
+++ b/docs/performance-tuning-guide/src/main/asciidoc/lot.adoc
@@ -0,0 +1,21 @@
+type=page
+status=published
+title=List of Tables
+next=title.html
+prev=lof.html
+~~~~~~
+
+= List of Tables
+
+[[list-of-tables]]
+== List of Tables
+
+* link:overview.html#gacmh[1-1 Performance Tuning Roadmap]
+* link:overview.html#gacmp[1-2 Factors That Affect Performance]
+* link:tuning-glassfish.html#gacmo[3-1 Bean Type Pooling or Caching]
+* link:tuning-glassfish.html#gacma[3-2 Tunable ORB Parameters]
+* link:tuning-glassfish.html#gacmi[3-3 Connection Pool Sizing]
+* link:tuning-java.html#gacna[4-1 Maximum Address Space Per Process]
+* link:tuning-os.html#gacmm[5-1 Tuning Parameters for Solaris]
+* link:tuning-os.html#gkuaa[5-2 Tuning 64-bit Systems for Performance
+Benchmarking]
diff --git a/docs/performance-tuning-guide/src/main/asciidoc/overview.adoc b/docs/performance-tuning-guide/src/main/asciidoc/overview.adoc
new file mode 100644
index 0000000..82f746d
--- /dev/null
+++ b/docs/performance-tuning-guide/src/main/asciidoc/overview.adoc
@@ -0,0 +1,535 @@
+type=page
+status=published
+title=Overview of {productName} Performance Tuning
+next=tuning-apps.html
+prev=preface.html
+~~~~~~
+
+= Overview of {productName} Performance Tuning
+
+[[GSPTG00003]][[giekg]]
+
+
+[[overview-of-glassfish-server-performance-tuning]]
+== 1 Overview of {productName} Performance Tuning
+
+You can significantly improve performance of the {productName}
+and of applications deployed to it by adjusting a few deployment and
+server configuration settings. However, it is important to understand
+the environment and performance goals. An optimal configuration for a
+production environment might not be optimal for a development
+environment.
+
+The following topics are addressed here:
+
+* link:#abear[Process Overview]
+* link:#abeat[Understanding Operational Requirements]
+* link:#abeba[General Tuning Concepts]
+* link:#abebd[Further Information]
+
+[[abear]][[GSPTG00048]][[process-overview]]
+
+=== Process Overview
+
+The following table outlines the overall {productName} 7
+administration process, and shows where performance tuning fits in the
+sequence.
+
+[[sthref4]][[gacmh]]
+
+Table 1-1 Performance Tuning Roadmap
+
+[options="header",]
+|===
+|Step |Description of Task |Location of Instructions
+|1
+|Design: Decide on the high-availability topology and set up {productName}.
+a|link:deployment-planning-guide.html#GSPLG[
+{productName} Deployment Planning Guide]
+
+|2
+|Capacity Planning: Make sure the systems have sufficient resources to perform well.
+a|link:deployment-planning-guide.html#GSPLG[
+{productName} Deployment Planning Guide]
+
+|3
+|Installation: Configure your DAS, clusters, and clustered server instances.
+a|link:installation-guide.html#GSING[
+{productName} Installation Guide]
+
+|4
+|Deployment: Install and run your applications.
+Familiarize yourself with how to configure and administer the {productName}.
+a|The following books:
+
+* link:application-deployment-guide.html#GSDPG[
+{productName} Application Deployment Guide]
+* link:administration-guide.html#GSADG[
+{productName} Administration Guide]
+
+|5
+|High Availability Configuration: Configuring your DAS, clusters, and
+clustered server instances for high availability and failover
+a|link:ha-administration-guide.html#GSHAG[
+{productName} High Availability Administration Guide]
+
+|6
+a|Performance Tuning: Tune the following items:
+
+* Applications
+* {productName}
+* Java Runtime System
+* Operating system and platform
+
+a|The following chapters:
+
+* link:tuning-apps.html#abebe[Tuning Your Application]
+* link:tuning-glassfish.html#abedn[Tuning the {productName}]
+* link:tuning-java.html#abeia[Tuning the Java Runtime System]
+* link:tuning-os.html#abeir[Tuning the Operating System and Platform]
+|===
+
+
+[[abeas]][[GSPTG00035]][[performance-tuning-sequence]]
+
+==== Performance Tuning Sequence
+
+Application developers should tune applications prior to production use.
+Tuning applications often produces dramatic performance improvements.
+System administrators perform the remaining steps in the following list
+after tuning the application, or when application tuning has to wait and
+you want to improve performance as much as possible in the meantime.
+
+Ideally, follow this sequence of steps when you are tuning performance:
+
+1. Tune your application, described in
+link:tuning-apps.html#abebe[Tuning Your Application].
+2. Tune the server, described in link:tuning-glassfish.html#abedn[Tuning
+the {productName}].
+3. Tune the Java runtime system, described in
+link:tuning-java.html#abeia[Tuning the Java Runtime System].
+4. Tune the operating system, described in
+link:tuning-os.html#abeir[Tuning the Operating System and Platform].
+
+[[abeat]][[GSPTG00049]][[understanding-operational-requirements]]
+
+=== Understanding Operational Requirements
+
+Before you begin to deploy and tune your application on the {productName}, it is important to clearly define the operational environment.
+The operational environment is determined by high-level constraints and
+requirements such as:
+
+* link:#abeau[Application Architecture]
+* link:#abeav[Security Requirements]
+* link:#gkvjf[High Availability Clustering, Load Balancing, and Failover]
+* link:#abeay[Hardware Resources]
+* link:#abeaz[Administration]
+
+[[abeau]][[GSPTG00154]][[application-architecture]]
+
+==== Application Architecture
+
+The Jakarta EE Application model, as shown in the following figure, is very
+flexible; allowing the application architect to split application logic
+functionally into many tiers. The presentation layer is typically
+implemented using servlets and JSP technology and executes in the web
+container.
+
+[[GSPTG00001]][[gacmj]]
+
+
+.*Figure 1-1 Jakarta EE Application Model*
+image:img/appmodel.png["Jakarta EE Application Mode"]
+
+
+Moderately complex enterprise applications can be developed entirely
+using servlets and JSP technology. More complex business applications
+often use Enterprise JavaBeans (EJB) components. The {productName}
+integrates the Web and EJB containers in a single process. Local access
+to EJB components from servlets is very efficient. However, some
+application deployments may require EJB components to execute in a
+separate process; and be accessible from standalone client applications
+as well as servlets. Based on the application architecture, the server
+administrator can employ the {productName} in multiple tiers, or
+simply host both the presentation and business logic on a single tier.
+
+It is important to understand the application architecture before
+designing a new {productName} deployment, and when deploying a new
+business application to an existing application server deployment.
+
+[[abeav]][[GSPTG00155]][[security-requirements]]
+
+==== Security Requirements
+
+Most business applications require security. This section discusses
+security considerations and decisions.
+
+[[abeaw]][[GSPTG00080]][[user-authentication-and-authorization]]
+
+===== User Authentication and Authorization
+
+Application users must be authenticated. The {productName} provides a
+number of choices for user authentication, including file-based,
+administration, LDAP, certificate, JDBC, digest, PAM, Solaris, and
+custom realms.
+
+The default file based security realm is suitable for developer
+environments, where new applications are developed and tested. At
+deployment time, the server administrator can choose between the
+Lighweight Directory Access Protocol (LDAP) or Solaris security realms.
+Many large enterprises use LDAP-based directory servers to maintain
+employee and customer profiles. Small to medium enterprises that do not
+already use a directory server may find it advantageous to leverage
+investment in Solaris security infrastructure.
+
+For more information on security realms, see
+"link:security-guide/user-security.html#GSSCG00151[Administering Authentication Realms]" in {productName} Security Guide.
+
+The type of authentication mechanism chosen may require additional
+hardware for the deployment. Typically a directory server executes on a
+separate server, and may also require a backup for replication and high
+availability. Refer to the
+http://www.oracle.com/us/products/middleware/identity-management/oracle-directory-services/index.html[Oracle
+Java System Directory Server]
+(`http://www.oracle.com/us/products/middleware/identity-management/oracle-directory-services/index.html`)
+documentation for more information on deployment, sizing, and
+availability guidelines.
+
+An authenticated user's access to application functions may also need
+authorization checks. If the application uses the role-based Jakarta EE
+authorization checks, the application server performs some additional
+checking, which incurs additional overheads. When you perform capacity
+planning, you must take this additional overhead into account.
+
+[[abeax]][[GSPTG00081]][[encryption]]
+
+===== Encryption
+
+For security reasons, sensitive user inputs and application output must
+be encrypted. Most business-oriented web applications encrypt all or
+some of the communication flow between the browser and {productName}.
+Online shopping applications encrypt traffic when the user is completing
+a purchase or supplying private data. Portal applications such as news
+and media typically do not employ encryption. Secure Sockets Layer (SSL)
+is the most common security framework, and is supported by many browsers
+and application servers.
+
+The {productName} supports SSL 2.0 and 3.0 and contains software
+support for various cipher suites. It also supports integration of
+hardware encryption cards for even higher performance. Security
+considerations, particularly when using the integrated software
+encryption, will impact hardware sizing and capacity planning.
+
+Consider the following when assessing the encryption needs for a deployment:
+
+* What is the nature of the applications with respect to security? Do
+they encrypt all or only a part of the application inputs and output?
+What percentage of the information needs to be securely transmitted?
+* Are the applications going to be deployed on an application server
+that is directly connected to the Internet? Will a web server exist in a
+demilitarized zone (DMZ) separate from the application server tier and
+backend enterprise systems?
++
+A DMZ-style deployment is recommended for high security. It is also
+useful when the application has a significant amount of static text and
+image content and some business logic that executes on the {productName}, behind the most secure firewall. {productName} provides
+secure reverse proxy plugins to enable integration with popular web
+servers. The {productName} can also be deployed and used as a web
+server in DMZ.
+
+* Is encryption required between the web servers in the DMZ and
+application servers in the next tier? The reverse proxy plugins supplied
+with {productName} support SSL encryption between the web server and
+application server tier. If SSL is enabled, hardware capacity planning
+must be take into account the encryption policy and mechanisms.
+
+* If software encryption is to be employed:
+
+** What is the expected performance overhead for every tier in the
+system, given the security requirements?
+
+** What are the performance and throughput characteristics of various
+choices?
+
+For information on how to encrypt the communication between web servers
+and {productName}, see "link:security-guide/message-security.html#GSSCG00037[Administering Message
+Security]" in {productName} Security Guide.
+
+[[gkvjf]][[GSPTG00156]][[high-availability-clustering-load-balancing-and-failover]]
+
+==== High Availability Clustering, Load Balancing, and Failover
+
+{productName} 7 enables multiple {productName} instances to be
+clustered to provide high availability through failure protection,
+scalability, and load balancing.
+
+High availability applications and services provide their functionality
+continuously, regardless of hardware and software failures. To make such
+reliability possible, {productName} 7 provides mechanisms for
+maintaining application state data between clustered {productName}
+instances. Application state data, such as HTTP session data, stateful
+EJB sessions, and dynamic cache information, is replicated in real time
+across server instances. If any one server instance goes down, the
+session state is available to the next failover server, resulting in
+minimum application downtime and enhanced transactional security.
+
+{productName} provides the following high availability features:
+
+* High Availability Session Persistence
+* High Availability Java Message Service
+* RMI-IIOP Load Balancing and Failover
+
+See link:tuning-java.html#glaat[Tuning High Availability Persistence] for
+high availability persistence tuning recommendations.
+
+See the link:ha-administration-guide.html#GSHAG[{productName} High
+Availability Administration Guide] for complete information about
+configuring high availability clustering, load balancing, and failover
+features in {productName} 7.
+
+[[abeay]][[GSPTG00157]][[hardware-resources]]
+
+==== Hardware Resources
+
+The type and quantity of hardware resources available greatly influence
+performance tuning and site planning.
+
+{productName} provides excellent vertical scalability. It can scale
+to efficiently utilize multiple high-performance CPUs, using just one
+application server process. A smaller number of application server
+instances makes maintenance easier and administration less expensive.
+Also, deploying several related applications on fewer application
+servers can improve performance, due to better data locality, and reuse
+of cached data between co-located applications. Such servers must also
+contain large amounts of memory, disk space, and network capacity to
+cope with increased load.
+
+{productName} can also be deployed on large "farms" of relatively
+modest hardware units. Business applications can be partitioned across
+various server instances. Using one or more external load balancers can
+efficiently spread user access across all the application server
+instances. A horizontal scaling approach may improve availability, lower
+hardware costs and is suitable for some types of applications. However,
+this approach requires administration of more application server
+instances and hardware nodes.
+
+[[abeaz]][[GSPTG00158]][[administration]]
+
+==== Administration
+
+A single {productName} installation on a server can encompass
+multiple instances. A group of one or more instances that are
+administered by a single Administration Server is called a domain.
+Grouping server instances into domains permits different people to
+independently administer the groups.
+
+You can use a single-instance domain to create a "sandbox" for a
+particular developer and environment. In this scenario, each developer
+administers his or her own application server, without interfering with
+other application server domains. A small development group may choose
+to create multiple instances in a shared administrative domain for
+collaborative development.
+
+In a deployment environment, an administrator can create domains based
+on application and business function. For example, internal Human
+Resources applications may be hosted on one or more servers in one
+Administrative domain, while external customer applications are hosted
+on several administrative domains in a server farm.
+
+{productName} supports virtual server capability for web
+applications. For example, a web application hosting service provider
+can host different URL domains on a single {productName} process for
+efficient administration.
+
+For detailed information on administration, see the
+link:administration-guide.html#GSADG[{productName} Administration Guide].
+
+[[abeba]][[GSPTG00050]][[general-tuning-concepts]]
+
+=== General Tuning Concepts
+
+Some key concepts that affect performance tuning are:
+
+* User load
+* Application scalability
+* Margins of safety
+
+The following table describes these concepts, and how they are measured
+in practice. The left most column describes the general concept, the
+second column gives the practical ramifications of the concept, the
+third column describes the measurements, and the right most column
+describes the value sources.
+
+[[sthref6]][[gacmp]]
+
+Table 1-2 Factors That Affect Performance
+
+[width="100%",cols="<14%,<13%,<26%,<47%",options="header",]
+|===
+|Concept |In practice |Measurement |Value sources
+
+|User Load
+|Concurrent sessions at peak load
+a|Transactions Per Minute (TPM)
+
+Web Interactions Per Second (WIPS)
+
+a|(Max. number of concurrent users) * (expected response time) / (time
+between clicks)
+
+Example:
+
+(100 users * 2 sec) / 10 sec = 20
+
+|Application Scalability
+|Transaction rate measured on one CPU
+|TPM or WIPS
+|Measured from workload benchmark. Perform at each tier.
+
+|Vertical scalability
+|Increase in performance from additional CPUs
+|Percentage gain per additional CPU
+|Based on curve fitting from benchmark.
+Perform tests while gradually increasing the number of CPUs.
+Identify the "knee" of the curve, where additional CPUs are providing
+uneconomical gains in performance. Requires tuning as described in this
+guide. Perform at each tier and iterate if necessary. Stop here if this
+meets performance requirements.
+
+|Horizontal scalability
+|Increase in performance from additional servers
+|Percentage gain per additional server process and/or hardware node.
+|Use a well-tuned single application server instance, as in previous step.
+Measure how much each additional server instance and hardware node
+improves performance.
+
+|Safety Margins
+|High availability requirements
+|If the system must cope with failures, size the system to meet
+performance requirements assuming that one or more application server
+instances are non functional
+|Different equations used if high availability is required.
+
+| +
+|Excess capacity for unexpected peaks
+|It is desirable to operate a
+server at less than its benchmarked peak, for some safety margin
+|80% system capacity utilization at peak loads may work for most installations.
+Measure your deployment under real and simulated peak loads.
+|===
+
+
+[[abebb]][[GSPTG00159]][[capacity-planning]]
+
+==== Capacity Planning
+
+The previous discussion guides you towards defining a deployment
+architecture. However, you determine the actual size of the deployment
+by a process called capacity planning. Capacity planning enables you to
+predict:
+
+* The performance capacity of a particular hardware configuration.
+* The hardware resources required to sustain specified application load
+and performance.
+
+You can estimate these values through careful performance benchmarking,
+using an application with realistic data sets and workloads.
+
+[[gacmz]][[GSPTG00036]][[to-determine-capacity]]
+
+===== To Determine Capacity
+
+1. Determine performance on a single CPU.
++
+First determine the largest load that a single processor can sustain.
+You can obtain this figure by measuring the performance of the
+application on a single-processor machine. Either leverage the
+performance numbers of an existing application with similar processing
+characteristics or, ideally, use the actual application and workload in
+a testing environment. Make sure that the application and data resources
+are tiered exactly as they would be in the final deployment.
+2. [[CEGHGCGI]]
+Determine vertical scalability.
+
+Determine how much additional performance you gain when you add
+processors. That is, you are indirectly measuring the amount of shared
+resource contention that occurs on the server for a specific workload.
+Either obtain this information based on additional load testing of the
+application on a multiprocessor system, or leverage existing information
+from a similar application that has already been load tested.
+
+Running a series of performance tests on one to eight CPUs, in
+incremental steps, generally provides a sense of the vertical
+scalability characteristics of the system. Be sure to properly tune the
+application, {productName}, backend database resources, and operating
+system so that they do not skew the results.
+3. Determine horizontal scalability.
++
+If sufficiently powerful hardware resources are available, a single
+hardware node may meet the performance requirements. However for better
+availability, you can cluster two or more systems. Employing external
+load balancers and workload simulation, determine the performance
+benefits of replicating one well-tuned application server node, as
+determined in step link:#CEGHGCGI[2].
+
+[[abebc]][[GSPTG00160]][[user-expectations]]
+
+==== User Expectations
+
+Application end-users generally have some performance expectations.
+Often you can numerically quantify them. To ensure that customer needs
+are met, you must understand these expectations clearly, and use them in
+capacity planning.
+
+Consider the following questions regarding performance expectations:
+
+* What do users expect the average response times to be for various
+interactions with the application? What are the most frequent
+interactions? Are there any extremely time-critical interactions? What
+is the length of each transaction, including think time? In many cases,
+you may need to perform empirical user studies to get good estimates.
+* What are the anticipated steady-state and peak user loads? Are there
+are any particular times of the day, week, or year when you observe or
+expect to observe load peaks? While there may be several million
+registered customers for an online business, at any one time only a
+fraction of them are logged in and performing business transactions. A
+common mistake during capacity planning is to use the total size of
+customer population as the basis and not the average and peak numbers
+for concurrent users. The number of concurrent users also may exhibit
+patterns over time.
+* What is the average and peak amount of data transferred per request?
+This value is also application-specific. Good estimates for content
+size, combined with other usage patterns, will help you anticipate
+network capacity needs.
+* What is the expected growth in user load over the next year? Planning
+ahead for the future will help avoid crisis situations and system
+downtimes for upgrades.
+
+[[abebd]][[GSPTG00051]][[further-information]]
+
+=== Further Information
+
+* For more information on Java performance, see
+http://java.sun.com/docs/performance[Java Performance Documentation]
+(`http://java.sun.com/docs/performance`) and
+http://java.sun.com/blueprints/performance/index.html[Java Performance
+BluePrints] (`http://java.sun.com/blueprints/performance/index.html`).
+* For more information about performance tuning for high availability
+configurations, see the link:ha-administration-guide.html#GSHAG[{productName}
+High Availability Administration Guide].
+* For complete information about using the Performance Tuning features
+available through the {productName} Administration Console, refer to
+the Administration Console online help.
+* For details on optimizing EJB components, see
+http://java.sun.com/developer/technicalArticles/ebeans/sevenrules/[Seven
+Rules for Optimizing Entity Beans]
+(`http://java.sun.com/developer/technicalArticles/ebeans/sevenrules/`)
+* For details on profiling,
+see "link:application-development-guide/setting-up-dev-env.html#GSDVG00341[
+Profiling Tools]" in {productName} Application Development Guide.
+* To view a demonstration video showing how to use the {productName} Performance Tuner,
+see the http://www.youtube.com/watch?v=FavsE2pzAjc[
+Oracle GlassFish 3.1 - Performance Tuner demo].
+* To find additional Performance Tuning development information, see the
+http://blogs.oracle.com/jenblog/entry/performance_tuner_in_oracle_glassfish[
+Performance Tuner in Oracle GlassFish 3.1] blog.
diff --git a/docs/performance-tuning-guide/src/main/asciidoc/preface.adoc b/docs/performance-tuning-guide/src/main/asciidoc/preface.adoc
new file mode 100644
index 0000000..5f39972
--- /dev/null
+++ b/docs/performance-tuning-guide/src/main/asciidoc/preface.adoc
@@ -0,0 +1,280 @@
+type=page
+status=published
+title=Preface
+next=overview.html
+prev=title.html
+~~~~~~
+
+= Preface
+
+[[GSPTG00002]][[pref]]
+
+
+[[preface]]
+== Preface
+
+[NOTE]
+====
+This documentation is part of the Java Enterprise Edition contribution
+to the Eclipse Foundation and is not intended for use in relation to
+Java Enterprise Edition or Orace GlassFish. The documentation is in the
+process of being revised to reflect the new Jakarta EE branding.
+Additional changes will be made as requirements and procedures evolve
+for Jakarta EE. Where applicable, references to Jakarta EE or Java
+Enterprise Edition should be considered references to Jakarta EE.
+
+Please see the Title page for additional license information.
+====
+
+The Performance Tuning Guide describes how to get the best performance
+with {productName} 7.
+
+This preface contains information about and conventions for the entire
+{productName} ({productName}) documentation set.
+
+{productName} 7 is developed through the GlassFish project
+open-source community at `http://glassfish.java.net/`. The GlassFish
+project provides a structured process for developing the {productName} platform that makes the new features of the Jakarta EE platform
+available faster, while maintaining the most important feature of Java
+EE: compatibility. It enables Java developers to access the {productName} source code and to contribute to the development of the {productName}. The GlassFish project is designed to encourage communication
+between Oracle engineers and the community.
+
+[[GSPTG00043]][[gksfg]]
+
+
+[[oracle-glassfish-server-documentation-set]]
+=== {productName} Documentation Set
+
+[width="100%",cols="<30%,<70%",options="header",]
+|===
+|Book Title |Description
+|link:release-notes.html#GSRLN[Release Notes] |Provides late-breaking information about
+the software and the documentation and includes a comprehensive,
+table-based summary of the supported hardware, operating system, Java
+Development Kit (JDK), and database drivers.
+
+|link:quick-start-guide.html#GSQSG[Quick Start Guide] |Explains how to get started with the
+{productName} product.
+
+|link:installation-guide.html#GSING[Installation Guide] |Explains how to install the software
+and its components.
+
+|link:upgrade-guide.html#GSUPG[Upgrade Guide] |Explains how to upgrade to the latest
+version of {productName}. This guide also describes differences
+between adjacent product releases and configuration options that can
+result in incompatibility with the product specifications.
+
+|link:deployment-planning-guide.html#GSPLG[Deployment Planning Guide] |Explains how to build a
+production deployment of {productName} that meets the requirements of
+your system and enterprise.
+
+|link:administration-guide.html#GSADG[Administration Guide] |Explains how to configure, monitor,
+and manage {productName} subsystems and components from the command
+line by using the link:reference-manual/asadmin.html#GSRFM00263[`asadmin`] utility. Instructions for
+performing these tasks from the Administration Console are provided in
+the Administration Console online help.
+
+|link:security-guide.html#GSSCG[Security Guide] |Provides instructions for configuring and
+administering {productName} security.
+
+|link:application-deployment-guide.html#GSDPG[Application Deployment Guide] |Explains how to assemble and
+deploy applications to the {productName} and provides information
+about deployment descriptors.
+
+|link:application-development-guide.html#GSDVG[Application Development Guide] |Explains how to create and
+implement Java Platform, Enterprise Edition (Jakarta EE platform)
+applications that are intended to run on the {productName}. These
+applications follow the open Java standards model for Jakarta EE components
+and application programmer interfaces (APIs). This guide provides
+information about developer tools, security, and debugging.
+
+|link:embedded-server-guide.html#GSESG[Embedded Server Guide] |Explains how to run applications in
+embedded {productName} and to develop applications in which {productName} is embedded.
+
+|link:ha-administration-guide.html#GSHAG[High Availability Administration Guide] |Explains how to
+configure {productName} to provide higher availability and
+scalability through failover and load balancing.
+
+|link:performance-tuning-guide.html#GSPTG[Performance Tuning Guide] |Explains how to optimize the
+performance of {productName}.
+
+|link:troubleshooting-guide.html#GSTSG[Troubleshooting Guide] |Describes common problems that you
+might encounter when using {productName} and explains how to solve
+them.
+
+|link:error-messages-reference.html#GSEMR[Error Message Reference] |Describes error messages that you
+might encounter when using {productName}.
+
+|link:reference-manual.html#GSRFM[Reference Manual] |Provides reference information in man
+page format for {productName} administration commands, utility
+commands, and related concepts.
+
+|link:../openmq/mq-release-notes.html#GMRLN[Message Queue Release Notes] |Describes new features,
+compatibility issues, and existing bugs for Open Message Queue.
+
+|link:../openmq/mq-tech-over.html#GMTOV[Message Queue Technical Overview] |Provides an introduction
+to the technology, concepts, architecture, capabilities, and features of
+the Message Queue messaging service.
+
+|link:../openmq/mq-admin-guide.html#GMADG[Message Queue Administration Guide] |Explains how to set up
+and manage a Message Queue messaging system.
+
+|link:../openmq/mq-dev-guide-jmx.html#GMJMG[Message Queue Developer's Guide for JMX Clients] |Describes
+the application programming interface in Message Queue for
+programmatically configuring and monitoring Message Queue resources in
+conformance with the Java Management Extensions (JMX).
+
+|link:../openmq/mq-dev-guide-java.html#GMJVG[Message Queue Developer's Guide for Java Clients] |Provides
+information about concepts and procedures for developing Java messaging
+applications (Java clients) that work with {productName}.
+
+|link:../openmq/mq-dev-guide-c.html#GMCCG[Message Queue Developer's Guide for C Clients] |Provides
+programming and reference information for developers working with
+Message Queue who want to use the C language binding to the Message
+Queue messaging service to send, receive, and process Message Queue
+messages.
+|===
+
+
+[[GSPTG00045]][[fwbkx]]
+
+
+[[typographic-conventions]]
+=== Typographic Conventions
+
+The following table describes the typographic changes that are used in
+this book.
+
+[width="100%",cols="<14%,<37%,<49%",options="header",]
+|===
+|Typeface |Meaning |Example
+|`AaBbCc123`
+|The names of commands, files, and directories, and onscreen computer output
+a|Edit your `.login` file.
+
+Use `ls` `a` to list all files.
+
+`machine_name% you have mail.`
+
+|`AaBbCc123`
+|What you type, contrasted with onscreen computer output
+a|`machine_name%` `su`
+
+`Password:`
+
+|AaBbCc123
+|A placeholder to be replaced with a real name or value
+|The command to remove a file is `rm` filename.
+
+|AaBbCc123
+|Book titles, new terms, and terms to be emphasized
+(note that some emphasized items appear bold online)
+a|Read Chapter 6 in the User's Guide.
+
+A cache is a copy that is stored locally.
+
+Do not save the file.
+|===
+
+
+[[GSPTG00046]][[fquvc]]
+
+
+[[symbol-conventions]]
+=== Symbol Conventions
+
+The following table explains symbols that might be used in this book.
+
+[width="100%",cols="<10%,<26%,<28%,<36%",options="header",]
+|===
+|Symbol |Description |Example |Meaning
+
+|`[ ]`
+|Contains optional arguments and command options.
+|`ls [-l]`
+|The `-l` option is not required.
+
+|`{ \| }`
+|Contains a set of choices for a required command option.
+|`-d {y\|n}`
+|The `-d` option requires that you use either the `y`
+argument or the `n` argument.
+
+|`${ }`
+|Indicates a variable reference.
+|`${com.sun.javaRoot}`
+|References the value of the `com.sun.javaRoot` variable.
+
+|-
+|Joins simultaneous multiple keystrokes.
+|Control-A
+|Press the Control key while you press the A key.
+
+|+
+|Joins consecutive multiple keystrokes.
+|Ctrl+A+N
+|Press the Control key, release it, and then press the subsequent keys.
+
+|>
+|Indicates menu item selection in a graphical user interface.
+|File > New > Templates
+|From the File menu, choose New. From the New submenu, choose Templates.
+|===
+
+
+[[GSPTG00044]][[ghpfg]]
+
+
+[[default-paths-and-file-names]]
+=== Default Paths and File Names
+
+The following table describes the default paths and file names that are
+used in this book.
+
+[width="100%",cols="<14%,<34%,<52%",options="header",]
+|===
+|Placeholder |Description |Default Value
+
+|as-install
+a|Represents the base installation directory for {productName}.
+
+In configuration files, as-install is represented as follows:
+
+`${com.sun.aas.installRoot}`
+a|Installations on the Oracle Solaris operating system, Linux operating
+system, and Mac OS operating system:
+
+user's-home-directory``/glassfish7/glassfish``
+
+Installations on the Windows operating system:
+
+SystemDrive``:\glassfish7\glassfish``
+
+|as-install-parent
+|Represents the parent of the base installation directory for {productName}.
+a|Installations on the Oracle Solaris operating system, Linux operating
+system, and Mac operating system:
+
+user's-home-directory``/glassfish7``
+
+Installations on the Windows operating system:
+
+SystemDrive``:\glassfish7``
+
+|domain-root-dir
+|Represents the directory in which a domain is created by default.
+|as-install``/domains/``
+
+|domain-dir
+a|Represents the directory in which a domain's configuration is stored.
+
+In configuration files, domain-dir is represented as follows:
+
+`${com.sun.aas.instanceRoot}`
+
+|domain-root-dir``/``domain-name
+
+|instance-dir
+|Represents the directory for a server instance.
+|domain-dir``/``instance-name
+|===
diff --git a/docs/performance-tuning-guide/src/main/asciidoc/title.adoc b/docs/performance-tuning-guide/src/main/asciidoc/title.adoc
new file mode 100644
index 0000000..0514b66
--- /dev/null
+++ b/docs/performance-tuning-guide/src/main/asciidoc/title.adoc
@@ -0,0 +1,45 @@
+type=page
+status=published
+title={productName} Performance Tuning Guide, Release 7
+next=preface.html
+prev=lot.html
+~~~~~~
+
+= {productName} Performance Tuning Guide, Release 7
+
+[[eclipse-glassfish-server]]
+== {productName}
+
+Performance Tuning Guide
+
+Release 7
+
+Contributed 2018 - 2022
+
+This book describes how to get the best performance with {productName} 7.
+
+[[sthref1]]
+
+'''''
+
+{productName} Performance Tuning Guide, Release 7
+
+Copyright © 2013, 2019 Oracle and/or its affiliates. All rights reserved.
+
+This program and the accompanying materials are made available under the
+terms of the Eclipse Public License v. 2.0, which is available at
+http://www.eclipse.org/legal/epl-2.0.
+
+SPDX-License-Identifier: EPL-2.0
+
+Oracle and Java are registered trademarks of Oracle and/or its
+affiliates. Other names may be trademarks of their respective owners.
+
+Intel and Intel Xeon are trademarks or registered trademarks of Intel
+Corporation. All SPARC trademarks are used under license and are
+trademarks or registered trademarks of SPARC International, Inc. AMD,
+Opteron, the AMD logo, and the AMD Opteron logo are trademarks or
+registered trademarks of Advanced Micro Devices. UNIX is a registered
+trademark of The Open Group.
+
+image:img/eclipse_foundation_logo_tiny.png["Eclipse Logo"]
diff --git a/docs/performance-tuning-guide/src/main/asciidoc/tuning-apps.adoc b/docs/performance-tuning-guide/src/main/asciidoc/tuning-apps.adoc
new file mode 100644
index 0000000..548e810
--- /dev/null
+++ b/docs/performance-tuning-guide/src/main/asciidoc/tuning-apps.adoc
@@ -0,0 +1,1394 @@
+type=page
+status=published
+title=Tuning Your Application
+next=tuning-glassfish.html
+prev=overview.html
+~~~~~~
+
+= Tuning Your Application
+
+[[GSPTG00004]][[abebe]]
+
+
+[[tuning-your-application]]
+== 2 Tuning Your Application
+
+This chapter provides information on tuning applications for maximum
+performance. A complete guide to writing high performance Java and Java
+EE applications is beyond the scope of this document.
+
+The following topics are addressed here:
+
+* link:#abebf[Java Programming Guidelines]
+* link:#abebp[Java Server Page and Servlet Tuning]
+* link:#abebw[EJB Performance Tuning]
+
+[[abebf]][[GSPTG00052]][[java-programming-guidelines]]
+
+=== Java Programming Guidelines
+
+This section covers issues related to Java coding and performance. The
+guidelines outlined are not specific to {productName}, but are
+general rules that are useful in many situations. For a complete
+discussion of Java coding best practices, see the
+http://www.oracle.com/technetwork/java/javaee/blueprints/index.html[Java
+Blueprints]
+(`http://www.oracle.com/technetwork/java/javaee/blueprints/index.html`).
+
+The following topics are addressed here:
+
+* link:#abebg[Avoid Serialization and Deserialization]
+* link:#abebh[Use `StringBuilder` to Concatenate Strings]
+* link:#abebi[Assign null to Variables That Are No Longer Needed]
+* link:#abebj[Declare Methods as final Only If Necessary]
+* link:#abebk[Declare Constants as static final]
+* link:#abebl[Avoid Finalizers]
+* link:#abebm[Declare Method Arguments final]
+* link:#abebn[Synchronize Only When Necessary]
+* link:#abebo[Use DataHandlers for SOAP Attachments]
+
+[[abebg]][[GSPTG00161]][[avoid-serialization-and-deserialization]]
+
+==== Avoid Serialization and Deserialization
+
+Serialization and deserialization of objects is a CPU-intensive
+procedure and is likely to slow down your application. Use the
+`transient` keyword to reduce the amount of data serialized.
+Additionally, customized `readObject()` and `writeObject()` methods may
+be beneficial in some cases.
+
+[[abebh]][[GSPTG00162]][[use-stringbuilder-to-concatenate-strings]]
+
+==== Use `StringBuilder` to Concatenate Strings
+
+To improve performance, instead of using string concatenation, use
+`StringBuilder.append()`.
+
+String objects are immutable - that is, they never change after
+creation. For example, consider the following code:
+
+[source,java]
+----
+String str = "testing";
+str = str + "abc";
+str = str + "def";
+----
+
+The compiler translates this code as:
+
+[source,java]
+----
+String str = "testing";
+StringBuilder tmp = new StringBuilder(str);
+tmp.append("abc");
+str = tmp.toString();
+StringBulder tmp = new StringBuilder(str);
+tmp.append("def");
+str = tmp.toString();
+----
+
+This copying is inherently expensive and overusing it can reduce
+performance significantly. You are far better off writing:
+
+[source,java]
+----
+StringBuilder tmp = new StringBuilder(16);
+tmp.append("testing");
+tmp.append("abc");
+tmp.append("def");
+String str = tmp.toString();
+----
+
+[[abebi]][[GSPTG00163]][[assign-null-to-variables-that-are-no-longer-needed]]
+
+==== Assign null to Variables That Are No Longer Needed
+
+Explicitly assigning a null value to variables that are no longer needed
+helps the garbage collector to identify the parts of memory that can be
+safely reclaimed. Although Java provides memory management, it does not
+prevent memory leaks or using excessive amounts of memory.
+
+An application may induce memory leaks by not releasing object
+references. Doing so prevents the Java garbage collector from reclaiming
+those objects, and results in increasing amounts of memory being used.
+Explicitly nullifying references to variables after their use allows the
+garbage collector to reclaim memory.
+
+One way to detect memory leaks is to employ profiling tools and take
+memory snapshots after each transaction. A leak-free application in
+steady state will show a steady active heap memory after garbage
+collections.
+
+[[abebj]][[GSPTG00164]][[declare-methods-as-final-only-if-necessary]]
+
+==== Declare Methods as final Only If Necessary
+
+Modern optimizing dynamic compilers can perform inlining and other
+inter-procedural optimizations, even if Java methods are not declared
+`final`. Use the keyword `final` as it was originally intended: for
+program architecture reasons and maintainability.
+
+Only if you are absolutely certain that a method must not be overridden,
+use the `final` keyword.
+
+[[abebk]][[GSPTG00165]][[declare-constants-as-static-final]]
+
+==== Declare Constants as static final
+
+The dynamic compiler can perform some constant folding optimizations
+easily, when you declare constants as `static final` variables.
+
+[[abebl]][[GSPTG00166]][[avoid-finalizers]]
+
+==== Avoid Finalizers
+
+Adding finalizers to code makes the garbage collector more expensive and
+unpredictable. The virtual machine does not guarantee the time at which
+finalizers are run. Finalizers may not always be executed, before the
+program exits. Releasing critical resources in `finalize()` methods may
+lead to unpredictable application behavior.
+
+[[abebm]][[GSPTG00167]][[declare-method-arguments-final]]
+
+==== Declare Method Arguments final
+
+Declare method arguments `final` if they are not modified in the method.
+In general, declare all variables `final` if they are not modified after
+being initialized or set to some value.
+
+[[abebn]][[GSPTG00168]][[synchronize-only-when-necessary]]
+
+==== Synchronize Only When Necessary
+
+Do not synchronize code blocks or methods unless synchronization is
+required. Keep synchronized blocks or methods as short as possible to
+avoid scalability bottlenecks. Use the Java Collections Framework for
+unsynchronized data structures instead of more expensive alternatives
+such as `java.util.HashTable`.
+
+[[abebo]][[GSPTG00169]][[use-datahandlers-for-soap-attachments]]
+
+==== Use DataHandlers for SOAP Attachments
+
+Using a `javax.activation.DataHandler` for a SOAP attachment will
+improve performance.
+
+JAX-RPC specifies:
+
+* A mapping of certain MIME types to Java types.
+* Any MIME type is mappable to a `javax.activation.DataHandler` .
+
+As a result, send an attachment (`.gif` or XML document) as a SOAP
+attachment to an RPC style web service by utilizing the Java type
+mappings. When passing in any of the mandated Java type mappings
+(appropriate for the attachment's MIME type) as an argument for the web
+service, the JAX-RPC runtime handles these as SOAP attachments.
+
+For example, to send out an `image/gif` attachment, use
+`java.awt.Image`, or create a `DataHandler` wrapper over your image. The
+advantages of using the wrapper are:
+
+* Reduced coding: You can reuse generic attachment code to handle the
+attachments because the `DataHandler` determines the content type of the
+contained data automatically. This feature is especially useful when
+using a document style service. Since the content is known at runtime,
+there is no need to make calls to
+`attachment.setContent(stringContent, "image/gif")`, for example.
+* Improved Performance: Informal tests have shown that using
+`DataHandler` wrappers doubles throughput for `image/gif` MIME types,
+and multiplies throughput by approximately 1.5 for `text/xml` or
+`java.awt.Image` for `image/*` types.
+
+[[abebp]][[GSPTG00053]][[java-server-page-and-servlet-tuning]]
+
+=== Java Server Page and Servlet Tuning
+
+Many applications running on the {productName} use servlets or
+JavaServer Pages (JSP) technology in the presentation tier. This section
+describes how to improve performance of such applications, both through
+coding practices and through deployment and configuration settings.
+
+[[abebq]][[GSPTG00170]][[suggested-coding-practices]]
+
+==== Suggested Coding Practices
+
+This section provides some tips on coding practices that improve servlet
+and JSP application performance.
+
+The following topics are addressed here:
+
+* link:#abebr[General Guidelines]
+* link:#abebs[Avoid Shared Modified Class Variables]
+* link:#abebt[HTTP Session Handling]
+* link:#abebu[Configuration and Deployment Tips]
+
+[[abebr]][[GSPTG00082]][[general-guidelines]]
+
+===== General Guidelines
+
+Follow these general guidelines to increase performance of the
+presentation tier:
+
+* Minimize Java synchronization in servlets.
+* Do not use the single thread model for servlets.
+* Use the servlet's `init()` method to perform expensive one-time
+initialization.
+* Avoid using `System.out.println()` calls.
+
+[[abebs]][[GSPTG00083]][[avoid-shared-modified-class-variables]]
+
+===== Avoid Shared Modified Class Variables
+
+In the servlet multithread model (the default), a single instance of a
+servlet is created for each application server instance. All requests
+for a servlet on that application instance share the same servlet
+instance. This can lead to thread contention if there are
+synchronization blocks in the servlet code. Therefore, avoid using
+shared modified class variables because they create the need for synchronization.
+
+[[abebt]][[GSPTG00084]][[http-session-handling]]
+
+===== HTTP Session Handling
+
+Follow these guidelines when using HTTP sessions:
+
+* Create sessions sparingly. Session creation is not free. If a session
+is not required, do not create one.
+* Use `javax.servlet.http.HttpSession.invalidate()` to release sessions
+when they are no longer needed.
+* Keep session size small, to reduce response times. If possible, keep
+session size below 7 kilobytes.
+* Use the directive `<%page session="false"%>` in JSP files to prevent
+the {productName} from automatically creating sessions when they are
+not necessary.
+* Avoid large object graphs in an `HttpSession`. They force
+serialization and add computational overhead. Generally, do not store
+large objects as `HttpSession` variables.
+* Do not cache transaction data in an `HttpSession`. Access to data in
+an `HttpSession` is not transactional. Do not use it as a cache of
+transactional data, which is better kept in the database and accessed
+using entity beans. Transactions will rollback upon failures to their
+original state. However, stale and inaccurate data may remain in
+`HttpSession` objects. {productName} provides "read-only"
+bean-managed persistence entity beans for cached access to read-only data.
+
+[[abebu]][[GSPTG00085]][[configuration-and-deployment-tips]]
+
+===== Configuration and Deployment Tips
+
+Follow these configuration tips to improve performance. These tips are
+intended for production environments, not development environments.
+
+* To improve class loading time, avoid having excessive directories in
+the server `CLASSPATH`. Put application-related classes into JAR files.
+* HTTP response times are dependent on how the keep-alive subsystem and
+the HTTP server is tuned in general. For more information, see
+link:tuning-glassfish.html#abeet[HTTP Service Settings].
+* Cache servlet results when possible. For more information, see
+"link:application-development-guide/webapps.html#GSDVG00009[Developing Web Applications]" in {productName} Application Development Guide.
+* If an application does not contain any EJB components, deploy the
+application as a WAR file, not an EAR file.
+
+[[gfqnu]][[GSPTG00009]][[optimize-ssl]]
+
+Optimize SSL
+
+Optimize SSL by using routines in the appropriate operating system
+library for concurrent access to heap space. The library to use depends
+on the version of the Solaris Operating System (SolarisOS) that you are
+using. To ensure that you use the correct library, set the `LD_PRELOAD`
+environment variable to specify the correct library file. For more
+information, refer to the following table.
+
+[width="100%",cols="<23%,<23%,<54%",options="header",]
+|===
+|Solaris OS Version |Library |Setting of `LD_PRELOAD` Environment
+Variable
+|10 |`libumem3LIB` |`/usr/lib/libumem.so`
+
+|9 |`libmtmalloc3LIB` |`/usr/lib/libmtmalloc.so`
+|===
+
+
+To set the `LD_PRELOAD` environment variable, edit the entry for this
+environment variable in the `startserv` script. The `startserv` script
+is located is located in the `bin/startserv` directory of your domain.
+
+The exact syntax to define an environment variable depends on the shell
+that you are using.
+
+[[abebv]][[GSPTG00010]][[disable-security-manager]]
+
+Disable Security Manager
+
+The security manager is expensive because calls to required resources
+must call the `doPrivileged()` method and must also check the resource
+with the `server.policy` file. If you are sure that no malicious code
+will be run on the server and you do not use authentication within your
+application, then you can disable the security manager.
+
+See "link:application-development-guide/securing-apps.html#GSDVG00373[Enabling and Disabling the Security Manager]" in
+{productName} Application Development Guide for
+instructions on enabling or disabling the security manager. If using the
+{productName} Administration Console, navigate to the
+Configurations>configuration-name>Security node and check or uncheck the
+Security Manager option as desired. Refer to the Administration Console
+online help for more information.
+
+[[abebw]][[GSPTG00054]][[ejb-performance-tuning]]
+
+=== EJB Performance Tuning
+
+The {productName}'s high-performance EJB container has numerous
+parameters that affect performance. Individual EJB components also have
+parameters that affect performance. The value of individual EJB
+component's parameter overrides the value of the same parameter for the
+EJB container. The default values are designed for a single-processor
+computer system. Modify these values as appropriate to optimize for
+other system configurations.
+
+The following topics are addressed here:
+
+* link:#abebx[Goals]
+* link:#abeby[Monitoring EJB Components]
+* link:#abeca[General Guidelines]
+* link:#abecg[Using Local and Remote Interfaces]
+* link:#abecj[Improving Performance of EJB Transactions]
+* link:#abecs[Using Special Techniques]
+* link:#abecv[Tuning Tips for Specific Types of EJB Components]
+* link:#abedd[JDBC and Database Access]
+* link:#abedi[Tuning Message-Driven Beans]
+
+[[abebx]][[GSPTG00171]][[goals]]
+
+Goals
+^^^^^
+
+The goals of EJB performance tuning are:
+
+* Increased speed: Cache as many beans in the EJB caches as possible to
+increase speed (equivalently, decrease response time). Caching
+eliminates CPU-intensive operations. However, since memory is finite, as
+the caches become larger, housekeeping for them (including garbage
+collection) takes longer.
+* Decreased memory consumption: Beans in the pools or caches consume
+memory from the Java virtual machine heap. Very large pools and caches
+degrade performance because they require longer and more frequent
+garbage collection cycles.
+* Improved functional properties: Functional properties such as user
+timeout, commit options, security, and transaction options, are mostly
+related to the functionality and configuration of the application.
+Generally, they do not compromise functionality for performance. In some
+cases, you might be forced to make a "trade-off" decision between
+functionality and performance. This section offers suggestions in such
+cases.
+
+[[abeby]][[GSPTG00172]][[monitoring-ejb-components]]
+
+==== Monitoring EJB Components
+
+When the EJB container has monitoring enabled, you can examine
+statistics for individual beans based on the bean pool and cache
+settings.
+
+For example, the monitoring command below returns the Bean Cache
+statistics for a stateful session bean.
+
+[source]
+----
+asadmin get --user admin --host e4800-241-a --port 4848
+-m specjcmp.application.SPECjAppServer.ejb-module.
+   supplier_jar.stateful-session-bean.BuyerSes.bean-cache.*
+----
+
+The following is a sample of the monitoring output:
+
+[source]
+----
+resize-quantity = -1
+ cache-misses = 0
+ idle-timeout-in-seconds = 0
+ num-passivations = 0
+ cache-hits = 59
+ num-passivation-errors = 0
+ total-beans-in-cache = 59
+ num-expired-sessions-removed = 0
+ max-beans-in-cache = 4096
+ num-passivation-success = 0
+----
+
+The monitoring command below gives the bean pool statistics for an
+entity bean:
+
+[source]
+----
+asadmin get --user admin --host e4800-241-a --port 4848
+-m specjcmp.application.SPECjAppServer.ejb-module.
+   supplier_jar.stateful-entity-bean.ItemEnt.bean-pool.*
+idle-timeout-in-seconds = 0
+steady-pool-size = 0
+total-beans-destroyed = 0
+num-threads-waiting = 0
+num-beans-in-pool = 54
+max-pool-size = 2147483647
+pool-resize-quantity = 0
+total-beans-created = 255
+----
+
+The monitoring command below gives the bean pool statistics for a
+stateless bean.
+
+[source]
+----
+asadmin get --user admin --host e4800-241-a --port 4848
+-m test.application.testEjbMon.ejb-module.slsb.stateless-session-bean.slsb.bean-pool.*
+idle-timeout-in-seconds = 200
+steady-pool-size = 32
+total-beans-destroyed = 12
+num-threads-waiting = 0
+num-beans-in-pool = 4
+max-pool-size = 1024
+pool-resize-quantity = 12
+total-beans-created = 42
+----
+
+Tuning the bean involves charting the behavior of the cache and pool for
+the bean in question over a period of time.
+
+If too many passivations are happening and the JVM heap remains fairly
+small, then the `max-cache-size` or the `cache-idle-timeout-in-seconds`
+can be increased. If garbage collection is happening too frequently, and
+the pool size is growing, but the cache hit rate is small, then the
+`pool-idle-timeout-in-seconds` can be reduced to destroy the instances.
+
+
+[NOTE]
+====
+Specifying a `max-pool-size` of zero (0) means that the pool is
+unbounded. The pooled beans remain in memory unless they are removed by
+specifying a small interval for `pool-idle-timeout-in-seconds`. For
+production systems, specifying the pool as unbounded is NOT recommended.
+====
+
+
+[[abebz]][[GSPTG00086]][[monitoring-individual-ejb-components]]
+
+===== Monitoring Individual EJB Components
+
+To gather method invocation statistics for all methods in a bean, use
+the following command:
+
+[source]
+----
+asadmin get -m monitorableObject.*
+----
+
+where monitorableObject is a fully-qualified identifier from the
+hierarchy of objects that can be monitored, shown below.
+
+[source]
+----
+serverInstance.application.applicationName.ejb-module.moduleName
+----
+
+where moduleName is `x_jar` for module `x.jar`.
+
+* `.stateless-session-bean.beanName .bean-pool .bean-method.methodName`
+* `.stateful-session-bean.beanName .bean-cache .bean-method.methodName`
+* `.entity-bean.beanName .bean-cache .bean-pool .bean-method.methodName`
+* `.message-driven-bean.beanName .bean-pool .bean-method.methodName (methodName = onMessage)`
+
+For standalone beans, use this pattern:
+
+[source]
+----
+serverInstance.application.applicationName.standalone-ejb-module.moduleName
+----
+
+The possible identifiers are the same as for `ejb-module`.
+
+For example, to get statistics for a method in an entity bean, use this
+command:
+
+[source]
+----
+asadmin get -m serverInstance.application.appName.ejb-module.moduleName
+.entity-bean.beanName.bean-method.methodName.*
+----
+
+For more information about administering the monitoring service in
+general, see "link:administration-guide/monitoring.html#GSADG00011[Administering the Monitoring Service]" in
+{productName} Administration Guide. For
+information about viewing comprehensive EJB monitoring statistics, see
+"link:administration-guide/monitoring.html#GSADG00651[EJB Statistics]" in {productName} Administration Guide.
+
+To configure EJB monitoring using the {productName} Administration
+Console, navigate to the Configurations>configuration-name>Monitoring
+node. After configuring monitoring, you can view monitoring statistics
+by navigating to the server (Admin Server) node and then selecting the
+Monitor tab. Refer to the Administration Console online help for
+instructions on each of these procedures.
+
+Alternatively, to list EJB statistics, use the `asadmin list`
+subcommand. For more information, see link:reference-manual/list.html#GSRFM00145[`list`(1)].
+
+For statistics on stateful session bean passivations, use this command:
+
+[source]
+----
+asadmin get -m serverInstance.application.appName.ejb-module.moduleName
+.stateful-session-bean.beanName.bean-cache.*
+----
+
+From the attribute values that are returned, use this command:
+
+`num-passivationsnum-passivation-errorsnum-passivation-success`
+
+[[abeca]][[GSPTG00173]][[general-guidelines-1]]
+
+==== General Guidelines
+
+The following guidelines can improve performance of EJB components. Keep
+in mind that decomposing an application into many EJB components creates
+overhead and can degrade performance. EJB components are not simply Java
+objects. They are components with semantics for remote call interfaces,
+security, and transactions, as well as properties and methods.
+
+[[abecb]][[GSPTG00087]][[use-high-performance-beans]]
+
+===== Use High Performance Beans
+
+Use high-performance beans as much as possible to improve the overall
+performance of your application. For more information, see
+link:#abecv[Tuning Tips for Specific Types of EJB Components].
+
+The types of EJB components are listed below, from the highest
+performance to the lowest:
+
+1. Stateless Session Beans and Message Driven Beans
+2. Stateful Session Beans
+3. Container Managed Persistence (CMP) entity beans configured as
+read-only
+4. Bean Managed Persistence (BMP) entity beans configured as read-only
+5. CMP beans
+6. BMP beans
+
+For more information about configuring high availability session
+persistence, see "link:ha-administration-guide/session-persistence-and-failover.html#GSHAG00011[Configuring High Availability Session
+Persistence and Failover]" in {productName} High
+Availability Administration Guide. To configure EJB beans using the
+{productName} Administration Console, navigate to the
+Configurations>configuration-name>EJB Container node and then refer to
+the Administration Console online help for detailed instructions.
+
+[[abecc]][[GSPTG00088]][[use-caching]]
+
+===== Use Caching
+
+Caching can greatly improve performance when used wisely. For example:
+
+* Cache EJB references: To avoid a JNDI lookup for every request, cache
+EJB references in servlets.
+* Cache home interfaces: Since repeated lookups to a home interface can
+be expensive, cache references to `EJBHomes` in the `init()` methods of
+servlets.
+* Cache EJB resources: Use `setSessionContext()` or `ejbCreate()` to
+cache bean resources. This is again an example of using bean lifecycle
+methods to perform application actions only once where possible.
+Remember to release acquired resources in the `ejbRemove()` method.
+
+[[abecd]][[GSPTG00089]][[use-the-appropriate-stubs]]
+
+===== Use the Appropriate Stubs
+
+The stub classes needed by EJB applications are generated dynamically at
+runtime when an EJB client needs them. This means that it is not
+necessary to generate the stubs or retrieve the client JAR file when
+deploying an application with remote EJB components. When deploying an
+application, it is no longer necessary to specify the `--retrieve`
+option, which can speed up deployment.
+
+If you have a legacy rich-client application that directly uses the
+CosNaming service (not a recommended configuration), then you must
+generate the stubs for your application explicitly using RMIC. For more
+information, see the link:troubleshooting-guide.html#GSTSG[{productName}
+Troubleshooting Guide] for more details.
+
+[[abece]][[GSPTG00090]][[remove-unneeded-stateful-session-beans]]
+
+===== Remove Unneeded Stateful Session Beans
+
+Removing unneeded stateful session beans avoids passivating them, which
+requires disk operations.
+
+[[abecf]][[GSPTG00091]][[cache-and-pool-tuning-tips]]
+
+===== Cache and Pool Tuning Tips
+
+Follow these tips when using the EJB cache and pools to improve
+performance:
+
+* Explicitly call `remove()`: Allow stateful session EJB components to
+be removed from the container cache by explicitly calling of the
+`remove()` method in the client.
+* Tune the entity EJB component's pool size: Entity Beans use both the
+EJB pool and cache settings. Tune the entity EJB component's pool size
+to minimize the creation and destruction of beans. Populating the pool
+with a non-zero steady size before hand is useful for getting better
+response for initial requests.
+* Cache bean-specific resources: Use the `setEntityContext()` method to
+cache bean specific resources and release them using the
+`unSetEntityContext()` method.
+* Load related data efficiently for container-managed relationships
+(CMRs). For more information, see link:#abedc[Pre-Fetching Container
+Managed Relationship (CMR) Beans].
+* Identify read-only beans: Configure read-only entity beans for read
+only operations. For more information, see link:#abeda[Read-Only Entity
+Beans].
+
+[[abecg]][[GSPTG00174]][[using-local-and-remote-interfaces]]
+
+==== Using Local and Remote Interfaces
+
+This section describes some considerations when EJB components are used
+by local and remote clients.
+
+[[abech]][[GSPTG00092]][[prefer-local-interfaces]]
+
+===== Prefer Local Interfaces
+
+An EJB component can have remote and local interfaces. Clients not
+located in the same application server instance as the bean (remote
+clients) use the remote interface to access the bean. Calls to the
+remote interface require marshalling arguments, transportation of the
+marshalled data over the network, un-marshaling the arguments, and
+dispatch at the receiving end. Thus, using the remote interface entails
+significant overhead.
+
+If an EJB component has a local interface, then local clients in the
+same application server instance can use it instead of the remote
+interface. Using the local interface is more efficient, since it does
+not require argument marshalling, transportation, and un-marshalling.
+
+If a bean is to be used only by local clients then it makes sense to
+provide only the local interface. If, on the other hand, the bean is to
+be location-independent, then you should provide both the remote and
+local interfaces so that remote clients use the remote interface and
+local clients can use the local interface for efficiency.
+
+[[abeci]][[GSPTG00093]][[using-pass-by-reference-semantics]]
+
+===== Using Pass-By-Reference Semantics
+
+By default, the {productName} uses pass-by-value semantics for
+calling the remote interface of a bean, even if it is co-located. This
+can be expensive, since clients using pass-by-value semantics must copy
+arguments before passing them to the EJB component.
+
+However, local clients can use pass-by-reference semantics and thus the
+local and remote interfaces can share the passed objects. But this means
+that the argument objects must be implemented properly, so that they are
+shareable. In general, it is more efficient to use pass-by-reference
+semantics when possible.
+
+Using the remote and local interfaces appropriately means that clients
+can access EJB components efficiently. That is, local clients use the
+local interface with pass-by-reference semantics, while remote clients
+use the remote interface with pass-by-value semantics.
+
+However, in some instances it might not be possible to use the local
+interface, for example when:
+
+* The application predates the EJB 2.0 specification and was written
+without any local interfaces.
+* There are bean-to-bean calls and the client beans are written without
+making any co-location assumptions about the called beans.
+
+For these cases, the {productName} provides a pass-by-reference
+option that clients can use to pass arguments by reference to the remote
+interface of a co-located EJB component.
+
+You can specify the pass-by-reference option for an entire application
+or a single EJB component. When specified at the application level, all
+beans in the application use pass-by-reference semantics when passing
+arguments to their remote interfaces. When specified at the bean level,
+all calls to the remote interface of the bean use pass-by-reference
+semantics. See "link:application-development-guide/ejb.html#GSDVG00145[Value Added Features]" in {productName} Application Development Guide for more
+details about the pass-by-reference flag.
+
+To specify that an EJB component will use pass by reference semantics,
+use the following tag in the `sun-ejb-jar.xml` deployment descriptor:
+
+[source,xml]
+----
+<pass-by-reference>true</pass-by-reference>
+----
+
+This avoids copying arguments when the EJB component's methods are
+invoked and avoids copying results when methods return. However,
+problems will arise if the data is modified by another source during the
+invocation.
+
+[[abecj]][[GSPTG00175]][[improving-performance-of-ejb-transactions]]
+
+==== Improving Performance of EJB Transactions
+
+This section provides some tips to improve performance when using
+transactions.
+
+The following topics are addressed here:
+
+* link:#abeck[Use Container-Managed Transactions]
+* link:#abecl[Do Not Encompass User Input Time]
+* link:#abecm[Identify Non-Transactional Methods]
+* link:#abecn[Use `TX_REQUIRED` for Long Transaction Chains]
+* link:#abeco[Use Lowest Cost Database Locking]
+* link:#abecp[Use XA-Capable Data Sources Only When Needed]
+* link:#abecq[Configure JDBC Resources as One-Phase Commit Resources]
+* link:#abecr[Use the Least Expensive Transaction Attribute]
+
+[[abeck]][[GSPTG00094]][[use-container-managed-transactions]]
+
+===== Use Container-Managed Transactions
+
+Container-managed transactions are preferred for consistency, and
+provide better performance.
+
+[[abecl]][[GSPTG00095]][[do-not-encompass-user-input-time]]
+
+===== Do Not Encompass User Input Time
+
+To avoid resources being held unnecessarily for long periods, a
+transaction should not encompass user input or user think time.
+
+[[abecm]][[GSPTG00096]][[identify-non-transactional-methods]]
+
+===== Identify Non-Transactional Methods
+
+Declare non-transactional methods of session EJB components with
+`NotSupported` or `Never` transaction attributes. These attributes can
+be found in the `ejb-jar.xml` deployment descriptor file. Transactions
+should span the minimum time possible since they lock database rows.
+
+[[abecn]][[GSPTG00097]][[use-tx_required-for-long-transaction-chains]]
+
+===== Use `TX_REQUIRED` for Long Transaction Chains
+
+For very large transaction chains, use the transaction attribute
+`TX_REQUIRED.` To ensure EJB methods in a call chain, use the same
+transaction.
+
+[[abeco]][[GSPTG00098]][[use-lowest-cost-database-locking]]
+
+===== Use Lowest Cost Database Locking
+
+Use the lowest cost locking available from the database that is
+consistent with any transaction. Commit the data after the transaction
+completes rather than after each method call.
+
+[[abecp]][[GSPTG00099]][[use-xa-capable-data-sources-only-when-needed]]
+
+===== Use XA-Capable Data Sources Only When Needed
+
+When multiple database resources, connector resources or JMS resources
+are involved in one transaction, a distributed or global transaction
+needs to be performed. This requires XA capable resource managers and
+data sources. Use XA capable data sources, only when two or more data
+source are going to be involved in a transaction. If a database
+participates in some distributed transactions, but mostly in local or
+single database transactions, it is advisable to register two separate
+JDBC resources and use the appropriate resource in the application.
+
+[[abecq]][[GSPTG00100]][[configure-jdbc-resources-as-one-phase-commit-resources]]
+
+===== Configure JDBC Resources as One-Phase Commit Resources
+
+To improve performance of transactions involving multiple resources, the
+{productName} uses last agent optimization (LAO), which allows the
+configuration of one of the resources in a distributed transaction as a
+one-phase commit (1PC) resource. Since the overhead of multiple-resource
+transactions is much higher for a JDBC resource than a message queue,
+LAO substantially improves performance of distributed transactions
+involving one JDBC resource and one or more message queues. To take
+advantage of LAO, configure a JDBC resource as a 1PC resource. Nothing
+special needs to be done to configure JMS resources.
+
+In global transactions involving multiple JDBC resources, LAO will still
+improve performance, however, not as much as for one JDBC resource. In
+this situation, one of the JDBC resources should be configured as 1PC,
+and all others should be configured as XA.
+
+[[abecr]][[GSPTG00101]][[use-the-least-expensive-transaction-attribute]]
+
+===== Use the Least Expensive Transaction Attribute
+
+Set the following transaction attributes in the EJB deployment
+descriptor file (`ejb-jar.xml`). Options are listed from best
+performance to worst. To improve performance, choose the least expensive
+attribute that will provide the functionality your application needs:
+
+1. `NEVER`
+2. `TX_NOTSUPPORTED`
+3. `TX_MANDATORY`
+4. `TX_SUPPORTS`
+5. `TX_REQUIRED`
+6. `TX_REQUIRESNEW`
+
+[[abecs]][[GSPTG00176]][[using-special-techniques]]
+
+==== Using Special Techniques
+
+Special performance-enhancing techniques are discussed in the following
+sections:
+
+* link:#abect[Version Consistency]
+* link:#abecu[Request Partitioning]
+
+[[abect]][[GSPTG00102]][[version-consistency]]
+
+===== Version Consistency
+
+
+[NOTE]
+====
+The technique in section applies only to the EJB 2.1 architecture. In
+the EJB 3.0 architecture, use the Java Persistence API (JPA).
+====
+
+
+Use version consistency to improve performance while protecting the
+integrity of data in the database. Since the application server can use
+multiple copies of an EJB component simultaneously, an EJB component's
+state can potentially become corrupted through simultaneous access.
+
+The standard way of preventing corruption is to lock the database row
+associated with a particular bean. This prevents the bean from being
+accessed by two simultaneous transactions and thus protects data.
+However, it also decreases performance, since it effectively serializes
+all EJB access.
+
+Version consistency is another approach to protecting EJB data
+integrity. To use version consistency, you specify a column in the
+database to use as a version number. The EJB lifecycle then proceeds
+like this:
+
+* The first time the bean is used, the `ejbLoad()` method loads the bean
+as normal, including loading the version number from the database.
+* The `ejbStore()` method checks the version number in the database
+versus its value when the EJB component was loaded.
+
+** If the version number has been modified, it means that there has been
+simultaneous access to the EJB component and `ejbStore()` throws a
+`ConcurrentModificationException`.
+
+** Otherwise, `ejbStore()` stores the data and completes as normal.
++
+The `ejbStore()` method performs this validation at the end of the
+transaction regardless of whether any data in the bean was modified.
+
+Subsequent uses of the bean behave similarly, except that the
+`ejbLoad()` method loads its initial data (including the version number)
+from an internal cache. This saves a trip to the database. When the
+`ejbStore()` method is called, the version number is checked to ensure
+that the correct data was used in the transaction.
+
+Version consistency is advantageous when you have EJB components that
+are rarely modified, because it allows two transactions to use the same
+EJB component at the same time. Because neither transaction modifies the
+data, the version number is unchanged at the end of both transactions,
+and both succeed. But now the transactions can run in parallel. If two
+transactions occasionally modify the same EJB component, one will
+succeed and one will fail and can be retried using the new values—which
+can still be faster than serializing all access to the EJB component if
+the retries are infrequent enough (though now your application logic has
+to be prepared to perform the retry operation).
+
+To use version consistency, the database schema for a particular table
+must include a column where the version can be stored. You then specify
+that table in the `sun-cmp-mapping.xml` deployment descriptor for a
+particular bean:
+
+[source,xml]
+----
+<entity-mapping>
+    <cmp-field-mapping>
+        ...
+    </cmp-field-mapping>
+    <consistency>
+        <check-version-of-accessed-instances>
+            <column-name>OrderTable.VC_VERSION_NUMBER</column-name>
+        </check-version-of-accessed-instances>
+    </consistency>
+</entity-mapping>
+----
+
+In addition, you must establish a trigger on the database to
+automatically update the version column when data in the specified table
+is modified. The {productName} requires such a trigger to use version
+consistency. Having such a trigger also ensures that external
+applications that modify the EJB data will not conflict with EJB
+transactions in progress.
+
+For example, the following DDL illustrates how to create a trigger for
+the `Order` table:
+
+[source,sql]
+----
+CREATE TRIGGER OrderTrigger
+  BEFORE UPDATE ON OrderTable
+  FOR EACH ROW
+  WHEN (new.VC_VERSION_NUMBER = old.VC_VERSION_NUMBER)
+  DECLARE
+  BEGIN
+    :NEW.VC_VERSION_NUMBER := :OLD.VC_VERSION_NUMBER + 1;
+  END;
+----
+
+[[abecu]][[GSPTG00103]][[request-partitioning]]
+
+===== Request Partitioning
+
+Request partitioning enables you to assign a request priority to an EJB
+component. This gives you the flexibility to make certain EJB components
+execute with higher priorities than others.
+
+An EJB component which has a request priority assigned to it will have
+its requests (services) executed within an assigned threadpool. By
+assigning a threadpool to its execution, the EJB component can execute
+independently of other pending requests. In short, request partitioning
+enables you to meet service-level agreements that have differing levels
+of priority assigned to different services.
+
+Request partitioning applies only to remote EJB components (those that
+implement a remote interface). Local EJB components are executed in
+their calling thread (for example, when a servlet calls a local bean,
+the local bean invocation occurs on the servlet's thread).
+
+[[gacmw]][[GSPTG00037]][[to-enable-request-partitioning]]
+
+To Enable Request Partitioning
+
+Follow this procedure.
+
+1. Configure additional threadpools for EJB execution.
++
+Using the {productName} Administration Console, navigate to the
+Configurations>configuration-name>Thread Pools node.
+Refer to the Administration Console online help for more information.
+Alternatively, you can follow the instructions in
+"link:administration-guide/threadpools.html#GSADG00008[
+Administering Thread Pools]" in {productName} Administration Guide.
++
+Configure the threadpools as follows:
+[arabic]
+.. Add the additional threadpool IDs to the {productName}'s ORB.
++
+This can be done on the Configurations>configuration-name>ORB node in
+the Administration Console.
++
+For example, enable threadpools named `priority-1` and `priority-2` to
+the `<orb>` element as follows:
++
+[source,xml]
+----
+<orb max-connections="1024" message-fragment-size="1024"
+    use-thread-pool-ids="thread-pool-1,priority-1,priority-2">
+----
+
+.. Include the threadpool ID in the `use-thread-pool-id` element of the
+EJB component's `sun-ejb-jar.xml` deployment descriptor.
++
+For example, the following `sun-ejb-jar.xml` deployment descriptor for
+an EJB component named "`TheGreeter`" is assigned to a thread pool named `priority-2`:
++
+[source,xml]
+----
+<sun-ejb-jar>
+  <enterprise-beans>
+    <unique-id>1</unique-id>
+    <ejb>
+      <ejb-name>TheGreeter</ejb-name>
+      <jndi-name>greeter</jndi-name>
+      <use-thread-pool-id>priority-1</use-thread-pool-id>
+    </ejb>
+  </enterprise-beans>
+</sun-ejb-jar>
+----
+
+2. Restart the {productName}.
+
+[[abecv]][[GSPTG00177]][[tuning-tips-for-specific-types-of-ejb-components]]
+
+==== Tuning Tips for Specific Types of EJB Components
+
+This section provides tips for tuning various specific types of EJB components:
+
+* link:#abecw[Entity Beans]
+* link:#abecx[Stateful Session Beans]
+* link:#abecz[Stateless Session Beans]
+* link:#abeda[Read-Only Entity Beans]
+* link:#abedc[Pre-Fetching Container Managed Relationship (CMR) Beans]
+
+These components can all be configured in the {productName}
+Administration Console from the Configurations>configuration-name>EJB
+Container node. Alternatively, you can perform these configurations by
+following the instructions in "link:ha-administration-guide/rmi-iiop.html#GSHAG00013[
+RMI-IIOP Load Balancing and Failover]"
+in {productName} High Availability Administration Guide.
+
+[[abecw]][[GSPTG00104]][[entity-beans]]
+
+===== Entity Beans
+
+Depending on the usage of a particular entity bean, one should tune
+`max-cache-size` so that the beans that are used less frequently (for
+example, an order that is created and never used after the transaction
+is over) are cached less, and beans that are used frequently (for
+example, an item in the inventory that gets referenced very often), are
+cached more.
+
+[[abecx]][[GSPTG00105]][[stateful-session-beans]]
+
+===== Stateful Session Beans
+
+When a stateful bean represents a user, a reasonable `max-cache-size` of
+beans is the expected number of concurrent users on the application
+server process. If this value is too low (in relation to the steady load
+of users), beans would be frequently passivated and activated, causing a
+negative impact on the response times, due to CPU intensive
+serialization and deserialization as well as disk I/O.
+
+Another important variable for tuning is `cache-idle-timeout-in-seconds`
+where at periodic intervals of `cache-idle-timeout-in-seconds`, all the
+beans in the cache that have not been accessed for more than
+`cache-idle-timeout-in-seconds` time, are passivated. Similar to an HTTP
+session timeout, the bean is removed after it has not been accessed for
+`removal-timeout-in-seconds`. Passivated beans are stored on disk in
+serialized form. A large number of passivated beans could not only mean
+many files on the disk system, but also slower response time as the
+session state has to be de-serialized before the invocation.
+
+[[abecy]][[GSPTG00011]][[checkpoint-only-when-needed]]
+
+Checkpoint only when needed
+
+In high availability mode, when using stateful session beans, consider
+checkpointing only those methods that alter the state of the bean
+significantly. This reduces the number of times the bean state has to be
+checkpointed into the persistent store.
+
+[[abecz]][[GSPTG00106]][[stateless-session-beans]]
+
+===== Stateless Session Beans
+
+Stateless session beans are more readily pooled than entity or the
+stateful session beans. Valid values for `steady-pool-size`,
+`pool-resize-quantity` and `max-pool-size` are the best tunables for
+these type of beans. Set the `steady-pool-size` to greater than zero if
+you want to pre-populate the pool. This way, when the container comes
+up, it creates a pool with `steady-pool-size` number of beans. By
+pre-populating the pool it is possible to avoid the object creation time
+during method invocations.
+
+Setting the `steady-pool size` to a very large value can cause unwanted
+memory growth and can result in large garbage collection times.
+`pool-resize-quantity` determines the rate of growth as well as the rate
+of decay of the pool. Setting it to a small value is better as the decay
+behaves like an exponential decay. Setting a small `max-pool-size` can
+cause excessive object destruction (and as a result excessive object
+creation) as instances are destroyed from the pool if the current pool
+size exceeds `max-pool-size`.
+
+[[abeda]][[GSPTG00107]][[read-only-entity-beans]]
+
+===== Read-Only Entity Beans
+
+Read-only entity beans cache data from the database. {productName}
+supports read-only beans that use both bean-managed persistence (BMP)
+and container-managed persistence (CMP). Of the two types, CMP read-only
+beans provide significantly better performance. In the EJB lifecycle,
+the EJB container calls the `ejbLoad()` method of a read-only bean once.
+The container makes multiple copies of the EJB component from that data,
+and since the beans do not update the database, the container never
+calls the `ejbStore()` method. This greatly reduces database traffic for
+these beans.
+
+If there is a bean that never updates the database, use a read-only bean
+in its place to improve performance. A read-only bean is appropriate if
+either:
+
+* Database rows represented by the bean do not change.
+* The application can tolerate using out-of-date values for the bean.
+
+For example, an application might use a read-only bean to represent a
+list of best-seller books. Although the list might change occasionally
+in the database (say, from another bean entirely), the change need not
+be reflected immediately in an application.
+
+The `ejbLoad()` method of a read-only bean is handled differently for
+CMP and BMP beans. For CMP beans, the EJB container calls `ejbLoad()`
+only once to load the data from the database; subsequent uses of the
+bean just copy that data. For BMP beans, the EJB container calls
+`ejbLoad()` the first time a bean is used in a transaction. Subsequent
+uses of that bean within the transaction use the same values. The
+container calls `ejbLoad()` for a BMP bean that doesn't run within a
+transaction every time the bean is used. Therefore, read-only BMP beans
+still make a number of calls to the database.
+
+To create a read-only bean, add the following to the EJB deployment
+descriptor `sun-ejb-jar.xml`:
+
+[source,xml]
+----
+<is-read-only-bean>true</is-read-only-bean>
+<refresh-period-in-seconds>600</refresh-period-in-seconds>
+----
+
+[[abedb]][[GSPTG00012]][[refresh-period]]
+
+Refresh Period
+
+An important parameter for tuning read-only beans is the refresh period,
+represented by the deployment descriptor entity
+`refresh-period-in-seconds`. For CMP beans, the first access to a bean
+loads the bean's state. The first access after the refresh period
+reloads the data from the database. All subsequent uses of the bean uses
+the newly refreshed data (until another refresh period elapses). For BMP
+beans, an `ejbLoad()` method within an existing transaction uses the
+cached data unless the refresh period has expired (in which case, the
+container calls `ejbLoad()` again).
+
+This parameter enables the EJB component to periodically refresh its
+"snapshot" of the database values it represents. If the refresh period
+is less than or equal to 0, the bean is never refreshed from the
+database (the default behavior if no refresh period is given).
+
+[[abedc]][[GSPTG00108]][[pre-fetching-container-managed-relationship-cmr-beans]]
+
+===== Pre-Fetching Container Managed Relationship (CMR) Beans
+
+If a container-managed relationship (CMR) exists in your application,
+loading one bean will load all its related beans. The canonical example
+of CMR is an order-orderline relationship where you have one `Order` EJB
+component that has related `OrderLine` EJB components. In previous
+releases of the application server, to use all those beans would require
+multiple database queries: one for the `Order` bean and one for each of
+the `OrderLine` beans in the relationship.
+
+In general, if a bean has n relationships, using all the data of the
+bean would require n+1 database accesses. Use CMR pre-fetching to
+retrieve all the data for the bean and all its related beans in one
+database access.
+
+For example, you have this relationship defined in the `ejb-jar.xml`
+file:
+
+[source,xml]
+----
+<relationships>
+    <ejb-relation>
+        <description>Order-OrderLine</description>
+        <ejb-relation-name>Order-OrderLine</ejb-relation-name>
+        <ejb-relationship-role>
+            <ejb-relationship-role-name>
+                Order-has-N-OrderLines
+            </ejb-relationship-role-name>
+            <multiplicity>One</multiplicity>
+            <relationship-role-source>
+                <ejb-name>OrderEJB</ejb-name>
+            </relationship-role-source>
+            <cmr-field>
+                <cmr-field-name>orderLines</cmr-field-name>
+                <cmr-field-type>java.util.Collection</cmr-field-type>
+            </cmr-field>
+        </ejb-relationship-role>
+    </ejb-relation>
+</relationships>
+----
+
+When a particular `Order` is loaded, you can load its related
+`OrderLines` by adding this to the `sun-cmp-mapping.xml` file for the
+application:
+
+[source,xml]
+----
+<entity-mapping>
+    <ejb-name>Order</ejb-name>
+    <table-name>...</table-name>
+    <cmp-field-mapping>...</cmp-field-mapping>
+    <cmr-field-mapping>
+        <cmr-field-name>orderLines</cmr-field-name>
+        <column-pair>
+            <column-name>OrderTable.OrderID</column-name>
+            <column-name>OrderLineTable.OrderLine_OrderID</column-name>
+        </column-pair>
+        <fetched-with>
+            <default>
+        </fetched-with>
+    </cmr-field-mapping>
+</entity-mappping>
+----
+
+Now when an `Order` is retrieved, the CMP engine issues SQL to retrieve
+all related `OrderLines` with a `SELECT` statement that has the
+following `WHERE` clause:
+
+[source,sql]
+----
+OrderTable.OrderID = OrderLineTable.OrderLine_OrderID
+----
+
+This clause indicates an outer join. These `OrderLines` are pre-fetched.
+
+Pre-fetching generally improves performance because it reduces the
+number of database accesses. However, if the business logic often uses
+`Orders` without referencing their `OrderLines`, then this can have a
+performance penalty, that is, the system has spent the effort to
+pre-fetch the `OrderLines` that are not actually needed.
+
+Avoid pre-fetching for specific finder methods; this can often avoid
+that penalty. For example, consider an order bean has two finder
+methods: a `findByPrimaryKey` method that uses the `Orderlines`, and a
+`findByCustomerId` method that returns only order information and
+therefore does not use the `Orderlines`. If you have enabled CMR
+pre-fetching for the `Orderlines`, both finder methods will pre-fetch
+the `Orderlines`. However, you can prevent pre-fetching for the
+`findByCustomerId` method by including this information in the
+`sun-ejb-jar.xml` descriptor:
+
+[source,xml]
+----
+<ejb>
+    <ejb-name>OrderBean</ejb-name>
+    ...
+    <cmp>
+        <prefetch-disabled>
+            <query-method>
+                <method-name>findByCustomerId</method-name>
+            </query-method>
+        </prefetch-disabled>
+     </cmp>
+</ejb>
+----
+
+[[abedd]][[GSPTG00178]][[jdbc-and-database-access]]
+
+==== JDBC and Database Access
+
+The following are some tips to improve the performance of database
+access:
+
+* link:#abede[Use JDBC Directly]
+* link:#abedf[Encapsulate Business Logic in Entity EJB Components]
+* link:#abedg[Close Connections]
+* link:#abedh[Minimize the Database Transaction Isolation Level]
+
+[[abede]][[GSPTG00109]][[use-jdbc-directly]]
+
+===== Use JDBC Directly
+
+When dealing with large amounts of data, such as searching a large
+database, use JDBC directly rather than using Entity EJB components.
+
+[[abedf]][[GSPTG00110]][[encapsulate-business-logic-in-entity-ejb-components]]
+
+===== Encapsulate Business Logic in Entity EJB Components
+
+Combine business logic with the Entity EJB component that holds the data
+needed for that logic to process.
+
+[[abedg]][[GSPTG00111]][[close-connections]]
+
+===== Close Connections
+
+To ensure that connections are returned to the pool, always close the
+connections after use.
+
+[[abedh]][[GSPTG00112]][[minimize-the-database-transaction-isolation-level]]
+
+===== Minimize the Database Transaction Isolation Level
+
+Use the default isolation level provided by the JDBC driver rather than
+calling `setTransactionIsolationLevel()`, unless you are certain that
+your application behaves correctly and performs better at a different
+isolation level.
+
+Reduce the database transaction isolation level when appropriate.
+Reduced isolation levels reduce work in the database tier, and could
+lead to better application performance. However, this must be done after
+carefully analyzing the database table usage patterns.
+
+To set the database transaction isolation level using the {productName} Administration Console, navigate to the Resources>JDBC>JDBC
+Connection Pools>pool-name node. Refer to the Administration Console
+online help for complete instructions. Alternatively, follow the
+instructions in "link:administration-guide/jdbc.html#GSADG00015[Administering Database Connectivity]"
+in {productName} Administration Guide. For more
+information on tuning JDBC connection pools, see
+link:tuning-glassfish.html#abehq[JDBC Connection Pool Settings].
+
+[[abedi]][[GSPTG00179]][[tuning-message-driven-beans]]
+
+==== Tuning Message-Driven Beans
+
+This section provides some tips to improve performance when using JMS
+with message-driven beans (MDBs).
+
+[[abedj]][[GSPTG00113]][[use-getconnection]]
+
+===== Use `getConnection()`
+
+JMS connections are served from a connection pool. This means that
+calling `getConnection()` on a Queue connection factory is fast.
+
+[[abedk]][[GSPTG00114]][[tune-the-message-driven-beans-pool-size]]
+
+===== Tune the Message-Driven Bean's Pool Size
+
+The container for message-driven beans (MDB) is different than the
+containers for entity and session beans. In the MDB container, sessions
+and threads are attached to the beans in the MDB pool. This design makes
+it possible to pool the threads for executing message-driven requests in
+the container.
+
+Tune the Message-Driven bean's pool size to optimize the concurrent
+processing of messages. Set the size of the MDB pool to, based on all
+the parameters of the server (taking other applications into account).
+For example, a value greater than 500 is generally too large.
+
+To configure MDB pool settings in the {productName} Administration
+Console, navigate to the Configurations>configuration-name>EJB Container
+node and then select the MDB Settings tab. Refer to the Administration
+Console online help for more information. Alternatively, you can set the
+MDB pool size by using the following `asadmin set` subcommand:
+
+[source]
+----
+asadmin set server.mdb-container.max-pool-size = value
+----
+
+[[abedl]][[GSPTG00115]][[cache-bean-specific-resources]]
+
+===== Cache Bean-Specific Resources
+
+Use the `setMessageDrivenContext()` or `ejbCreate()` method to cache
+bean specific resources, and release those resources from the
+`ejbRemove()` method.
+
+[[abedm]][[GSPTG00116]][[limit-use-of-jms-connections]]
+
+===== Limit Use of JMS Connections
+
+When designing an application that uses JMS connections make sure you
+use a methodology that sparingly uses connections, by either pooling
+them or using the same connection for multiple sessions.
+
+The JMS connection uses two threads and the sessions use one thread
+each. Since these threads are not taken from a pool and the resultant
+objects aren't pooled, you could run out of memory during periods of
+heavy usage.
+
+One workaround is to move `createTopicConnection` into the `init` of the
+servlet.
+
+Make sure to specifically close the session, or it will stay open, which
+ties up resources.
diff --git a/docs/performance-tuning-guide/src/main/asciidoc/tuning-glassfish.adoc b/docs/performance-tuning-guide/src/main/asciidoc/tuning-glassfish.adoc
new file mode 100644
index 0000000..92ea382
--- /dev/null
+++ b/docs/performance-tuning-guide/src/main/asciidoc/tuning-glassfish.adoc
@@ -0,0 +1,1904 @@
+type=page
+status=published
+title=Tuning the {productName}
+next=tuning-java.html
+prev=tuning-apps.html
+~~~~~~
+
+= Tuning the {productName}
+
+[[GSPTG00005]][[abedn]]
+
+
+[[tuning-the-glassfish-server]]
+== 3 Tuning the {productName}
+
+This chapter describes some ways to tune your {productName}
+installation for optimum performance.
+
+Note that while this chapter describes numerous interactions with both
+the {productName} Administration Console and the command-line
+interface, it is not intended to provide exhaustive descriptions of
+either. For complete information about using the Administration Console,
+refer to the Administration Console online help. For complete
+information about using the {productName} command-line interface,
+refer to the other titles in the {productName} documentation set at
+`http://docs.oracle.com/docs/cd/E18930_01/index.html`.
+
+The following topics are addressed here:
+
+* link:#gkxwm[Using the {productName} Performance Tuner]
+* link:#abedo[Deployment Settings]
+* link:#abeds[Logger Settings]
+* link:#abedw[Web Container Settings]
+* link:#abeea[EJB Container Settings]
+* link:#abeel[Java Message Service Settings]
+* link:#abeem[Transaction Service Settings]
+* link:#abeet[HTTP Service Settings]
+* link:#abegk[Network Listener Settings]
+* link:#gkxjt[Transport Settings]
+* link:#abehk[Thread Pool Settings]
+* link:#abegt[ORB Settings]
+* link:#abehp[Resource Settings]
+* link:#gkxvd[Load Balancer Settings]
+
+[[gkxwm]][[GSPTG00055]][[using-the-glassfish-server-performance-tuner]]
+
+=== Using the {productName} Performance Tuner
+
+You can significantly improve the performance of {productName} and
+the applications deployed on it by adjusting a few deployment and server
+configuration settings. These changes can be made manually, as described
+in this chapter, or by using the built-in Performance Tuner in the
+{productName} Administration Console.
+
+The Performance Tuner recommends server settings to suit the needs of
+your {productName} deployment. It helps you reach an optimal
+configuration, although finer tuning might be needed in case of specific
+requirements. You can configure performance tuning for the entire
+domain, or for individual {productName} instances or clusters. The
+Tuner performs a static analysis of {productName} resources and
+throughput requirements. Note that no dynamic inspection of the system
+is performed.
+
+For complete information about using the Performance Tuning features
+available through the {productName} Administration Console, refer to
+the Administration Console online help. You may also want to refer to
+the following resources for additional information:
+
+* To view a demonstration video showing how to use the {productName}
+Performance Tuner, see the
+http://www.youtube.com/watch?v=FavsE2pzAjc[{productName} 3.1 -
+Performance Tuner demo] (`http://www.youtube.com/watch?v=FavsE2pzAjc`).
+* To find additional Performance Tuning development information, see the
+http://blogs.oracle.com/jenblog/entry/performance_tuner_in_oracle_glassfish[Performance
+Tuner in {productName} 3.1]
+(`http://blogs.oracle.com/jenblog/entry/performance_tuner_in_oracle_glassfish`)
+blog.
+
+[[abedo]][[GSPTG00056]][[deployment-settings]]
+
+=== Deployment Settings
+
+Deployment settings can have significant impact on performance. Follow
+these guidelines when configuring deployment settings for best
+performance:
+
+* link:#abedp[Disable Auto-Deployment]
+* link:#abedq[Use Pre-compiled JavaServer Pages]
+* link:#abedr[Disable Dynamic Application Reloading]
+
+[[abedp]][[GSPTG00180]][[disable-auto-deployment]]
+
+==== Disable Auto-Deployment
+
+Enabling auto-deployment will adversely affect deployment, though it is
+a convenience in a development environment. For a production system,
+disable auto-deploy to optimize performance. If auto-deployment is
+enabled, then the Reload Poll Interval setting can have a significant
+performance impact.
+
+To enable or disable auto-deployment from the {productName}
+Administration Console, navigate to the Domain node and then click the
+Applications Configuration tab. Refer to the Administration Console for
+further instructions. Alternatively, refer to "link:application-deployment-guide/deploying-applications.html#GSDPG00041[To
+Deploy an Application or Module Automatically]" in {productName} Application Deployment Guide for instructions on enabling
+or disabling auto-deployment.
+
+[[abedq]][[GSPTG00181]][[use-pre-compiled-javaserver-pages]]
+
+==== Use Pre-compiled JavaServer Pages
+
+Compiling JSP files is resource intensive and time consuming.
+Pre-compiling JSP files before deploying applications on the server will
+improve application performance. When you do so, only the resulting
+servlet class files will be deployed.
+
+You can specify to precompile JSP files when you deploy an application
+through the Administration Console or `deploy` subcommand. You can also
+specify to pre-compile JSP files for a deployed application with the
+Administration Console. Navigate to the Domain node and then click the
+Applications Configuration tab. Refer to the Administration Console for
+further instructions.
+
+[[abedr]][[GSPTG00182]][[disable-dynamic-application-reloading]]
+
+==== Disable Dynamic Application Reloading
+
+If dynamic reloading is enabled, the server periodically checks for
+changes in deployed applications and automatically reloads the
+application with the changes. Dynamic reloading is intended for
+development environments and is also incompatible with session
+persistence. To improve performance, disable dynamic class reloading.
+
+You can use the Administration Console to disable dynamic class
+reloading for an application that is already deployed. Navigate to the
+Domain node and then click the Applications Configuration tab. Refer to
+the Administration Console for further instructions.
+
+[[abeds]][[GSPTG00057]][[logger-settings]]
+
+=== Logger Settings
+
+The {productName} produces writes log messages and exception stack
+trace output to the log file in the logs directory of the instance,
+domain-dir``/logs``. The volume of log activity can impact server
+performance; particularly in benchmarking situations.
+
+[[abedt]][[GSPTG00183]][[general-settings]]
+
+==== General Settings
+
+In general, writing to the system log slows down performance slightly;
+and increased disk access (increasing the log level, decreasing the file
+rotation limit or time limit) also slows down the application.
+
+Also, make sure that any custom log handler does not log to a slow
+device like a network file system since this can adversely affect
+performance.
+
+[[abedu]][[GSPTG00184]][[log-levels]]
+
+==== Log Levels
+
+Set the log level for the server and its subsystems in the {productName} Administration Console. Navigate to the
+Configurations>configuration-name>Logger Settings page, and follow the
+instructions in the online help. Alternatively, you can configure
+logging by following the instructions in "link:administration-guide/logging.html#GSADG00010[Administering
+the Logging Service]" in {productName}
+Administration Guide.
+
+[[abedw]][[GSPTG00058]][[web-container-settings]]
+
+=== Web Container Settings
+
+Set Web container settings in the {productName} Administration
+Console by navigating to the Configurations>configuration-name>Web
+Container node. Follow the instructions in the online help for more
+information. Alternatively, you can configure Web container settings by
+following the instructions in "link:administration-guide/webapps.html#GSADG00009[Administering Web
+Applications]" in {productName} Administration
+Guide.
+
+* link:#abedx[Session Properties: Session Timeout]
+* link:#abedy[Manager Properties: Reap Interval]
+* link:#abedz[Disable Dynamic JSP Reloading]
+
+[[abedx]][[GSPTG00185]][[session-properties-session-timeout]]
+
+==== Session Properties: Session Timeout
+
+Session timeout determines how long the server maintains a session if a
+user does not explicitly invalidate the session. The default value is 30
+minutes. Tune this value according to your application requirements.
+Setting a very large value for session timeout can degrade performance
+by causing the server to maintain too many sessions in the session
+store. However, setting a very small value can cause the server to
+reclaim sessions too soon.
+
+[[abedy]][[GSPTG00186]][[manager-properties-reap-interval]]
+
+==== Manager Properties: Reap Interval
+
+Modifying the reap interval can improve performance, but setting it
+without considering the nature of your sessions and business logic can
+cause data inconsistency, especially for time-based
+persistence-frequency.
+
+For example, if you set the reap interval to 60 seconds, the value of
+session data will be recorded every 60 seconds. But if a client accesses
+a servlet to update a value at 20 second increments, then
+inconsistencies will result.
+
+For example, consider the following online auction scenario:
+
+* Bidding starts at $5, in 60 seconds the value recorded will be $8
+(three 20 second intervals).
+* During the next 40 seconds, the client starts incrementing the price.
+The value the client sees is $10.
+* During the client's 20 second rest, the {productName} stops and
+starts in 10 seconds. As a result, the latest value recorded at the 60
+second interval ($8) is be loaded into the session.
+* The client clicks again expecting to see $11; but instead sees is $9,
+which is incorrect.
+* So, to avoid data inconsistencies, take into the account the expected
+behavior of the application when adjusting the reap interval.
+
+[[abedz]][[GSPTG00187]][[disable-dynamic-jsp-reloading]]
+
+==== Disable Dynamic JSP Reloading
+
+On a production system, improve web container performance by disabling
+dynamic JSP reloading. To do so, edit the `default-web.xml` file in the
+`config` directory for each instance. Change the servlet definition for
+a JSP file to look like this:
+
+[source,xml]
+----
+<servlet>
+  <servlet-name>jsp</servlet-name>
+  <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
+  <init-param>
+    <param-name>development</param-name>
+    <param-value>false</param-value>
+  </init-param>
+  <init-param>
+    <param-name>xpoweredBy</param-name>
+    <param-value>true</param-value>
+  </init-param>
+  <init-param>
+    <param-name>genStrAsCharArray</param-name>
+    <param-value>true</param-value>
+  </init-param>  <load-on-startup>3</load-on-startup>
+</servlet>
+----
+
+[[abeea]][[GSPTG00059]][[ejb-container-settings]]
+
+=== EJB Container Settings
+
+The EJB Container has many settings that affect performance. As with
+other areas, use monitor the EJB Container to track its execution and
+performance.
+
+You can configure most EJB container settings from the {productName}
+Administration Console by navigating to the
+Configurations>configuration-name>EJB Container node and then following
+the instructions in the online help.
+
+[[abeeb]][[GSPTG00188]][[monitoring-the-ejb-container]]
+
+==== Monitoring the EJB Container
+
+Monitoring the EJB container is disabled by default. You can enable EJB
+monitoring through the {productName} Administration Console by
+navagating to the the Configurations>configuration-name>Monitoring node
+and then following the instructions in the online help. Set the
+monitoring level to LOW for to monitor all deployed EJB components, EJB
+pools, and EJB caches. Set the monitoring level to HIGH to also monitor
+EJB business methods.
+
+[[abeec]][[GSPTG00189]][[tuning-the-ejb-container]]
+
+==== Tuning the EJB Container
+
+The EJB container caches and pools EJB components for better
+performance. Tuning the cache and pool properties can provide
+significant performance benefits to the EJB container.
+
+The pool settings are valid for stateless session and entity beans while
+the cache settings are valid for stateful session and entity beans.
+
+The following topics are addressed here:
+
+* link:#abeed[Overview of EJB Pooling and Caching]
+* link:#abeee[Tuning the EJB Pool]
+* link:#abeeg[Tuning the EJB Cache]
+* link:#abeei[Pool and Cache Settings for Individual EJB Components]
+* link:#abeej[Commit Option]
+
+[[abeed]][[GSPTG00117]][[overview-of-ejb-pooling-and-caching]]
+
+===== Overview of EJB Pooling and Caching
+
+Both stateless session beans and entity beans can be pooled to improve
+server performance. In addition, both stateful session beans and entity
+beans can be cached to improve performance.
+
+[[sthref7]][[gacmo]]
+
+Table 3-1 Bean Type Pooling or Caching
+
+[width="100%",cols="<34%,<33%,<33%",options="header",]
+|===
+|Bean Type |Pooled |Cached
+|Stateless Session |Yes |No
+|Stateful Session |No |Yes
+|Entity |Yes |Yes
+|===
+
+
+The difference between a pooled bean and a cached bean is that pooled
+beans are all equivalent and indistinguishable from one another. Cached
+beans, on the contrary, contain conversational state in the case of
+stateful session beans, and are associated with a primary key in the
+case of entity beans. Entity beans are removed from the pool and added
+to the cache on `ejbActivate()` and removed from the cache and added to
+the pool on `ejbPassivate()`. `ejbActivate()` is called by the container
+when a needed entity bean is not in the cache. `ejbPassivate()` is
+called by the container when the cache grows beyond its configured
+limits.
+
+
+[NOTE]
+====
+If you develop and deploy your EJB components using Oracle Java Studio,
+then you need to edit the individual bean descriptor settings for bean
+pool and bean cache. These settings might not be suitable for
+production-level deployment.
+====
+
+
+[[abeee]][[GSPTG00118]][[tuning-the-ejb-pool]]
+
+===== Tuning the EJB Pool
+
+A bean in the pool represents the pooled state in the EJB lifecycle.
+This means that the bean does not have an identity. The advantage of
+having beans in the pool is that the time to create a bean can be saved
+for a request. The container has mechanisms that create pool objects in
+the background, to save the time of bean creation on the request path.
+
+Stateless session beans and entity beans use the EJB pool. Keeping in
+mind how you use stateless session beans and the amount of traffic your
+server handles, tune the pool size to prevent excessive creation and
+deletion of beans.
+
+[[abeef]][[GSPTG00013]][[ejb-pool-settings]]
+
+EJB Pool Settings
+
+An individual EJB component can specify cache settings that override
+those of the EJB container in the `<bean-pool>` element of the EJB
+component's `sun-ejb-jar.xml` deployment descriptor.
+
+The EJB pool settings are:
+
+* Initial and Minimum Pool Size: the initial and minimum number of beans
+maintained in the pool. Valid values are from 0 to `MAX_INTEGER,` and
+the default value is 8. The corresponding EJB deployment descriptor
+attribute is `steady-pool-size.`
++
+Set this property to a number greater than zero for a moderately loaded
+system. Having a value greater than zero ensures that there is always a
+pooled instance to process an incoming request.
+* Maximum Pool Size: the maximum number of connections that can be
+created to satisfy client requests. Valid values are from zero to
+`MAX_INTEGER`., and the default is 32. A value of zero means that the
+size of the pool is unbounded. The potential implication is that the JVM
+heap will be filled with objects in the pool. The corresponding EJB
+deployment descriptor attribute is `max-pool-size`.
++
+Set this property to be representative of the anticipated high load of
+the system. An very large pool wastes memory and can slow down the
+system. A very small pool is also inefficient due to contention.
+* Pool Resize Quantity: the number of beans to be created or deleted
+when the cache is being serviced by the server. Valid values are from
+zero to `MAX_INTEGER` and default is 16. The corresponding EJB
+deployment descriptor attribute is `resize-quantity`.
++
+Be sure to re-calibrate the pool resize quantity when you change the
+maximum pool size, to maintain an equilibrium. Generally, a larger
+maximum pool size should have a larger pool resize quantity.
+* Pool Idle Timeout: the maximum time that a stateless session bean,
+entity bean, or message-driven bean is allowed to be idle in the pool.
+After this time, the bean is destroyed if the bean in case is a
+stateless session bean or a message driver bean. This is a hint to
+server. The default value is 600 seconds. The corresponding EJB
+deployment descriptor attribute is `pool-idle-timeout-in-seconds`.
++
+If there are more beans in the pool than the maximum pool size, the pool
+drains back to initial and minimum pool size, in steps of pool resize
+quantity at an interval specified by the pool idle timeout. If the
+resize quantity is too small and the idle timeout large, you will not
+see the pool draining back to steady size quickly enough.
+
+[[abeeg]][[GSPTG00119]][[tuning-the-ejb-cache]]
+
+===== Tuning the EJB Cache
+
+A bean in the cache represents the ready state in the EJB lifecycle.
+This means that the bean has an identity (for example, a primary key or
+session ID) associated with it.
+
+Beans moving out of the cache have to be passivated or destroyed
+according to the EJB lifecycle. Once passivated, a bean has to be
+activated to come back into the cache. Entity beans are generally stored
+in databases and use some form of query language semantics to load and
+store data. Session beans have to be serialized when storing them upon
+passivation onto the disk or a database; and similarly have to be
+deserialized upon activation.
+
+Any incoming request using these "ready" beans from the cache avoids the
+overhead of creation, setting identity, and potentially activation. So,
+theoretically, it is good to cache as many beans as possible. However,
+there are drawbacks to caching:
+
+* Memory consumed by all the beans affects the heap available in the
+Virtual Machine.
+* Increasing objects and memory taken by cache means longer, and
+possibly more frequent, garbage collection.
+* The application server might run out of memory unless the heap is
+carefully tuned for peak loads.
+
+Keeping in mind how your application uses stateful session beans and
+entity beans, and the amount of traffic your server handles, tune the
+EJB cache size and timeout settings to minimize the number of
+activations and passivations.
+
+[[abeeh]][[GSPTG00014]][[ejb-cache-settings]]
+
+EJB Cache Settings
+
+An individual EJB component can specify cache settings that override
+those of the EJB container in the `<bean-cache>` element of the EJB
+component's `sun-ejb-jar.xml` deployment descriptor.
+
+The EJB cache settings are:
+
+* Max Cache Size: Maximum number of beans in the cache. Make this
+setting greater than one. The default value is 512. A value of zero
+indicates the cache is unbounded, which means the size of the cache is
+governed by Cache Idle Timeout and Cache Resize Quantity. The
+corresponding EJB deployment descriptor attribute is `max-cache-size`.
+* Cache Resize Quantity: Number of beans to be created or deleted when
+the cache is serviced by the server. Valid values are from zero to
+MAX_INTEGER, and the default is 16. The corresponding EJB deployment
+descriptor attribute is `resize-quantity`.
+* Removal Timeout: Amount of time that a stateful session bean remains
+passivated (idle in the backup store). If a bean was not accessed after
+this interval of time, then it is removed from the backup store and will
+not be accessible to the client. The default value is 60 minutes. The
+corresponding EJB deployment descriptor attribute is
+`removal-timeout-in-seconds`.
+* Removal Selection Policy: Algorithm used to remove objects from the
+cache. The corresponding EJB deployment descriptor attribute is
+`victim-selection-policy`. Choices are:
+
+** NRU (not recently used). This is the default, and is actually
+pseudo-random selection policy.
+
+** FIFO (first in, first out)
+
+** LRU (least recently used)
+* Cache Idle Timeout: Maximum time that a stateful session bean or
+entity bean is allowed to be idle in the cache. After this time, the
+bean is passivated to the backup store. The default value is 600
+seconds. The corresponding EJB deployment descriptor attribute is
+`cache-idle-timeout-in-seconds`.
+* Refresh period: Rate at which a read-only-bean is refreshed from the
+data source. Zero (0) means that the bean is never refreshed. The
+default is 600 seconds. The corresponding EJB deployment descriptor
+attribute is `refresh-period-in-seconds`. Note: this setting does not
+have a custom field in the Admin Console. To set it, use the Add
+Property button in the Additional Properties section.
+
+[[abeei]][[GSPTG00120]][[pool-and-cache-settings-for-individual-ejb-components]]
+
+===== Pool and Cache Settings for Individual EJB Components
+
+Individual EJB pool and cache settings in the `sun-ejb-jar.xml`
+deployment descriptor override those of the EJB container. The following
+table lists the cache and pool settings for each type of EJB component.
+
+[width="100%",cols="<35%,<13%,<13%,<13%,<13%,<13%",options="header",]
+|===
+|Cache or Pool Setting |Stateful Session Bean |Stateless Session Bean
+|Entity Bean |Entity Read-Only Bean |Message Driven Bean
+|`cache-resize-quantity` |X |+ |X |X |+
+
+|`max-cache-size` |X |+ |X |X |+
+
+|`cache-idle-timeout-in-seconds` |X |+ |X |X |+
+
+|`removal-timeout-in-seconds` |X |+ |X |X |+
+
+|`victim-selection-policy` |X |+ |X |X |+
+
+|`refresh-period-in-seconds` |+ |+ |+ |X |+
+
+|`steady-pool-size` |+ |X |X |X |+
+
+|`pool-resize-quantity` |+ |X |X |X |X
+
+|`max-pool-size` |+ |X |X |X |X
+
+|`pool-idle-timeout-in-seconds` |+ |X |X |X |X
+|===
+
+
+[[abeej]][[GSPTG00121]][[commit-option]]
+
+===== Commit Option
+
+The commit option controls the action taken by the EJB container when an
+EJB component completes a transaction. The commit option has a
+significant impact on performance.
+
+The following are the possible values for the commit option:
+
+* Commit option B: When a transaction completes, the bean is kept in the
+cache and retains its identity. The next invocation for the same primary
+key can use the cached instance. The EJB container will call the bean's
+`ejbLoad()` method before the method invocation to synchronize with the database.
+
+* Commit option C: When a transaction completes, the EJB container calls
+the bean's `ejbPassivate()` method, the bean is disassociated from its
+primary key and returned to the free pool. The next invocation for the
+same primary key will have to get a free bean from the pool, set the
+`PrimaryKey` on this instance, and then call `ejbActivate()` on the
+instance. Again, the EJB container will call the bean's `ejbLoad()`
+before the method invocation to synchronize with the database.
+
+Option B avoids `ejbAcivate()` and `ejbPassivate()` calls. So, in most
+cases it performs better than option C since it avoids some overhead in
+acquiring and releasing objects back to pool.
+
+However, there are some cases where option C can provide better
+performance. If the beans in the cache are rarely reused and if beans
+are constantly added to the cache, then it makes no sense to cache
+beans. With option C is used, the container puts beans back into the
+pool (instead of caching them) after method invocation or on transaction
+completion. This option reuses instances better and reduces the number
+of live objects in the JVM, speeding garbage collection.
+
+[[abeek]][[GSPTG00015]][[determining-the-best-commit-option]]
+
+Determining the Best Commit Option
+
+To determine whether to use commit option B or commit option C, first
+take a look at the cache-hits value using the monitoring command for the
+bean. If the cache hits are much higher than cache misses, then option B
+is an appropriate choice. You might still have to change the
+`max-cache-size` and `cache-resize-quantity` to get the best result.
+
+If the cache hits are too low and cache misses are very high, then the
+application is not reusing the bean instances and hence increasing the
+cache size (using `max-cache-size`) will not help (assuming that the
+access pattern remains the same). In this case you might use commit
+option C. If there is no great difference between cache-hits and
+cache-misses then tune `max-cache-size`, and probably
+`cache-idle-timeout-in-seconds`.
+
+[[abeel]][[GSPTG00060]][[java-message-service-settings]]
+
+=== Java Message Service Settings
+
+The Type attribute that determines whether the Java Message Service
+(JMS) is on local or remote system affects performance. Local JMS
+performance is better than remote JMS performance. However, a remote
+cluster can provide failover capabilities and can be administrated
+together, so there may be other advantages of using remote JMS. For more
+information on using JMS, see "link:administration-guide/jms.html#GSADG00020[Administering the Java
+Message Service (JMS)]" in {productName}
+Administration Guide.
+
+[[abeem]][[GSPTG00061]][[transaction-service-settings]]
+
+=== Transaction Service Settings
+
+The transaction manager makes it possible to commit and roll back
+distributed transactions.
+
+A distributed transactional system writes transactional activity into
+transaction logs so that they can be recovered later. But writing
+transactional logs has some performance penalty.
+
+The following topics are addressed here:
+
+* link:#abeen[Monitoring the Transaction Service]
+* link:#abeep[Tuning the Transaction Service]
+
+[[abeen]][[GSPTG00190]][[monitoring-the-transaction-service]]
+
+==== Monitoring the Transaction Service
+
+Transaction Manager monitoring is disabled by default. Enable monitoring
+of the transaction service through the {productName} Administration
+Console by navigating to the
+Configurations>configuration-name>Monitoring node. Refer to the
+Administration Console for complete instructions.
+
+You can also enable monitoring with these commands:
+
+[source]
+----
+set serverInstance.transaction-service.monitoringEnabled=true
+reconfig serverInstance
+----
+
+[[abeeo]][[GSPTG00122]][[viewing-monitoring-information]]
+
+===== Viewing Monitoring Information
+
+To view monitoring information for the transaction service in the
+{productName} Administration Console, navigate to the server (Admin
+Server) node and then select the Monitor tab.
+
+The following statistics are gathered on the transaction service:
+
+* `total-tx-completed` Completed transactions.
+* `total-tx-rolled-back` Total rolled back transactions.
+* `total-tx-inflight` Total inflight (active) transactions.
+* `isFrozen` Whether transaction system is frozen (true or false)
+* `inflight-tx` List of inflight (active) transactions.
+
+[[abeep]][[GSPTG00191]][[tuning-the-transaction-service]]
+
+==== Tuning the Transaction Service
+
+This property can be used to disable the transaction logging, where the
+performance is of utmost importance more than the recovery. This
+property, by default, won't exist in the server configuration.
+
+Most Transaction Service tuning tasks can be performed through the
+{productName} Administration Console by navigating to the
+Configurations>configuration-name>Transaction Service node and then
+following the instructions in the online help. Alternatively, you can
+follow the instructions in "link:administration-guide/transactions.html#GSADG00022[Administering
+Transactions]" in {productName} Administration
+Guide.
+
+[[abeeq]][[GSPTG00123]][[disable-distributed-transaction-logging]]
+
+===== Disable Distributed Transaction Logging
+
+You can disable transaction logging through the Administration Console
+or by using the following `asadmin set` subcommand:
+
+[source]
+----
+asadmin set
+server1.transaction-service.disable-distributed-transaction-logging=true
+----
+
+Disabling transaction logging can improve performance. Setting it to
+false (the default), makes the transaction service write transactional
+activity to transaction logs so that transactions can be recovered. If
+Recover on Restart is checked, this property is ignored.
+
+Set this property to true only if performance is more important than
+transaction recovery.
+
+[[abeer]][[GSPTG00124]][[recover-on-restart-automatic-recovery]]
+
+===== Recover On Restart (Automatic Recovery)
+
+You can set the Recover on Restart attribute through the Administration
+Console or by entering the following `asadmin set` subcommand:
+
+[source]
+----
+asadmin set server1.transaction-service.automatic-recovery=false
+----
+
+When Recover on Restart is true, the server will always perform
+transaction logging, regardless of the Disable Distributed Transaction
+Logging attribute.
+
+If Recover on Restart is false, then:
+
+* If Disable Distributed Transaction Logging is false (the default),
+then the server will write transaction logs.
+* If Disable Distributed Transaction Logging is true, then the server
+will not write transaction logs.
++
+Not writing transaction logs will give approximately twenty percent
+improvement in performance, but at the cost of not being able to recover
+from any interrupted transactions. The performance benefit applies to
+transaction-intensive tests. Gains in real applications may be less.
+
+[[abees]][[GSPTG00125]][[keypoint-interval]]
+
+===== Keypoint Interval
+
+The keypoint interval determines how often entries for completed
+transactions are removed from the log file. Keypointing prevents a
+process log from growing indefinitely.
+
+Frequent keypointing is detrimental to performance. The default value of
+the Keypoint Interval is 2048, which is sufficient in most cases.
+
+[[abeet]][[GSPTG00062]][[http-service-settings]]
+
+=== HTTP Service Settings
+
+Tuning the monitoring and access logging settings for the HTTP server
+instances that handle client requests are important parts of ensuring
+peak {productName} performance.
+
+The following topics are addressed here:
+
+* link:#abeeu[Monitoring the HTTP Service]
+* link:#abefk[HTTP Service Access Logging]
+
+[[abeeu]][[GSPTG00192]][[monitoring-the-http-service]]
+
+==== Monitoring the HTTP Service
+
+Disabling the collection of monitoring statistics can increase overall
+{productName} performance. You can enable or disable monitoring
+statistics collection for the HTTP service using either the
+Administration Console or `asadmin` subcommands.
+
+Refer to "link:administration-guide/monitoring.html#GSADG00011[Administering the Monitoring Service]" in
+{productName} Administration Guide for complete
+instructions on configuring the monitoring service using `asadmin`
+subcommands.
+
+If using the Administration Console, click the
+Configurations>configuration-name>Monitoring node for the configuration
+for which you want to enable or disable monitoring for selected
+components. Refer to the Administration Console online help for complete
+instructions.
+
+For instructions on viewing comprehensive monitoring statistics using
+`asadmin` subcommands, see "link:administration-guide/monitoring.html#GSADG00560[Viewing Comprehensive
+Monitoring Data]" in {productName} Administration
+Guide. If using the Administration Console, you can view monitoring
+statistics by navigating to the server (Admin Server) node, and then
+clicking the Monitor tab. Refer to the online help for configuring
+different views of the available monitoring statistics.
+
+When viewing monitoring statistics, some key performance-related
+information to review includes the following:
+
+* link:#abeew[DNS Cache Information (dns)]
+* link:#abefh[File Cache Information (file-cache)]
+* link:#abefi[Keep Alive (keep-alive)]
+* link:#abefg[Connection Queue]
+
+[[abeew]][[GSPTG00126]][[dns-cache-information-dns]]
+
+===== DNS Cache Information (dns)
+
+The DNS cache caches IP addresses and DNS names. The DNS cache is
+disabled by default. In the DNS Statistics for Process ID All page under
+Monitor in the web-based Administration interface the following
+statistics are displayed:
+
+* link:#abeex[Enabled]
+* link:#abeey[CacheEntries (CurrentCacheEntries / MaxCacheEntries)]
+* link:#abeez[HitRatio]
+* link:#abefa[Caching DNS Entries]
+* link:#abefb[Limit DNS Lookups to Asynchronous]
+* link:#abefc[Enabled]
+* link:#abefd[NameLookups]
+* link:#abefe[AddrLookups]
+* link:#abeff[LookupsInProgress]
+
+[[abeex]][[GSPTG00016]][[enabled]]
+
+Enabled
+
+If the DNS cache is disabled, the rest of this section is not displayed.
+
+By default, the DNS cache is off. Enable DNS caching in the
+Administration Console by clicking the
+Configurations>configuration-name>Network Config>http-listener-name
+node. Click the HTTP tab and enable the DNS Lookup option.
+
+[[abeey]][[GSPTG00017]][[cacheentries-currentcacheentries-maxcacheentries]]
+
+CacheEntries (CurrentCacheEntries / MaxCacheEntries)
+
+The number of current cache entries and the maximum number of cache
+entries. A single cache entry represents a single IP address or DNS name
+lookup. Make the cache as large as the maximum number of clients that
+access your web site concurrently. Note that setting the cache size too
+high is a waste of memory and degrades performance.
+
+Set the maximum size of the DNS cache by entering or changing the value
+in the in the Administration Console by clicking the
+Configurations>configuration-name>Network Config>http-listener-name
+node. Click the File tab and set the desired options.
+
+[[abeez]][[GSPTG00018]][[hitratio]]
+
+HitRatio
+
+The hit ratio is the number of cache hits divided by the number of cache
+lookups.
+
+This setting is not tunable.
+
+
+[NOTE]
+====
+If you turn off DNS lookups on your server, host name restrictions will
+not work and IP addresses will appear instead of host names in log
+files.
+====
+
+
+[[abefa]][[GSPTG00019]][[caching-dns-entries]]
+
+Caching DNS Entries
+
+It is possible to also specify whether to cache the DNS entries. If you
+enable the DNS cache, the server can store hostname information after
+receiving it. If the server needs information about the client in the
+future, the information is cached and available without further
+querying. specify the size of the DNS cache and an expiration time for
+DNS cache entries. The DNS cache can contain 32 to 32768 entries; the
+default value is 1024. Values for the time it takes for a cache entry to
+expire can range from 1 second to 1 year specified in seconds; the
+default value is 1200 seconds (20 minutes).
+
+[[abefb]][[GSPTG00020]][[limit-dns-lookups-to-asynchronous]]
+
+Limit DNS Lookups to Asynchronous
+
+Do not use DNS lookups in server processes because they are
+resource-intensive. If you must include DNS lookups, make them
+asynchronous.
+
+[[abefc]][[GSPTG00021]][[enabled-1]]
+
+Enabled
+
+If asynchronous DNS is disabled, the rest of this section will not be
+displayed.
+
+[[abefd]][[GSPTG00022]][[namelookups]]
+
+NameLookups
+
+The number of name lookups (DNS name to IP address) that have been done
+since the server was started. This setting is not tunable.
+
+[[abefe]][[GSPTG00023]][[addrlookups]]
+
+AddrLookups
+
+The number of address loops (IP address to DNS name) that have been done
+since the server was started. This setting is not tunable.
+
+[[abeff]][[GSPTG00024]][[lookupsinprogress]]
+
+LookupsInProgress
+
+The current number of lookups in progress.
+
+[[abefh]][[GSPTG00127]][[file-cache-information-file-cache]]
+
+===== File Cache Information (file-cache)
+
+The file cache caches static content so that the server handles requests
+for static content quickly. The file-cache section provides statistics
+on how your file cache is being used.
+
+For information about tuning the file cache, see link:#gkxit[File Cache
+Settings].
+
+The Monitoring page lists the following file cache statistics:
+
+* Number of Hits on Cached File Content
+* Number of Cache Entries
+* Number of Hits on Cached File Info
+* Heap Space Used for Cache
+* Number of Misses on Cached File Content
+* Cache Lookup Misses
+* Number of Misses on Cached File Content
+* Max Age of a Cache Entry
+* Max Number of Cache Entries
+* Max Number of Open Entries
+* Is File Cached Enabled?
+* Maximum Memory Map to be Used for Cache
+* Memory Map Used for cache
+* Cache Lookup Hits
+* Open Cache Entries: The number of current cache entries and the
+maximum number of cache entries are both displayed. A single cache entry
+represents a single URI. This is a tunable setting.
+* Maximum Heap Space to be Used for Cache
+
+[[abefi]][[GSPTG00128]][[keep-alive-keep-alive]]
+
+===== Keep Alive (keep-alive)
+
+The following are statistics related to the Keep Alive system. The most
+important settings you can tune here relate to HTTP Timeout. See
+link:#abefu[Timeout] for more information.
+
+* Connections Terminated Due to Client Connection Timed Out
+* Max Connection Allowed in Keep-alive
+* Number of Hits
+* Connections in Keep-alive Mode
+* Connections not Handed to Keep-alive Thread Due to too Many Persistent
+Connections
+* The Time in Seconds Before Idle Connections are Closed
+* Connections Closed Due to Max Keep-alive Being Exceeded
+
+[[abefg]][[GSPTG00129]][[connection-queue]]
+
+===== Connection Queue
+
+* Total Connections Queued: Total connections queued is the total number
+of times a connection has been queued. This includes newly accepted
+connections and connections from the keep-alive system.
+* Average Queuing Delay: Average queueing delay is the average amount of
+time a connection spends in the connection queue. This represents the
+delay between when a request connection is accepted by the server, and a
+request processing thread (also known as a session) begins servicing the
+request.
+
+[[abefk]][[GSPTG00193]][[http-service-access-logging]]
+
+==== HTTP Service Access Logging
+
+Accessing Logging can be tuned using several `asadmin` subcommands.
+Refer to "link:administration-guide/monitoring.html#GSADG00011[Administering the Monitoring Service]" in
+{productName} Administration Guide for
+information about using these subcommands.
+
+If using the Administration Console, Access Logging is configured from
+the Configurations>configuration-name>HTTP Service page. Refer to the
+Administration Console online help for complete instructions about the
+options on this page.
+
+To enable or disable access logging, check or uncheck the Access Logging
+Enabled checkbox. Access Logging is disabled by default.
+
+When performing benchmarking, ensure that Access Logging is disabled. If
+Access Logging is enabled, it is recommended that you also enable
+Rotation to ensure that the logs do not run out of disk space.
+
+[[abegk]][[GSPTG00063]][[network-listener-settings]]
+
+=== Network Listener Settings
+
+You can tune Network Listener settings from the command line by using
+the instructions in "link:administration-guide/http_https.html#GSADG00588[Administering HTTP Network
+Listeners]" in {productName} Administration
+Guide.
+
+If using the Administration Console, navigate to the Configurations
+>configuration-name>Network Config>Network Listeners>listener-name node,
+and then click the tab for the desired configuration page. Refer to the
+online help for complete instructions about the options on these tabs.
+
+{productName} Network Listener performance can be enhanced by
+modifying settings on the following Edit Network Listener tabs in the
+Administration Console:
+
+* link:#abegl[General Settings]
+* link:#gkxjd[HTTP Settings]
+* link:#gkxit[File Cache Settings]
+
+[[abegl]][[GSPTG00194]][[general-settings-1]]
+
+==== General Settings
+
+For machines with only one network interface card (NIC), set the network
+address to the IP address of the machine (for example, 192.18.80.23
+instead of default 0.0.0.0). If you specify an IP address other than
+0.0.0.0, the server will make one less system call per connection.
+Specify an IP address other than 0.0.0.0 for best possible performance.
+If the server has multiple NIC cards then create multiple listeners for
+each NIC.
+
+[[gkxjd]][[GSPTG00195]][[http-settings]]
+
+==== HTTP Settings
+
+The following settings on the HTTP tab can significantly affect
+performance:
+
+* link:#abeft[Max Connections]
+* link:#abegd[DNS Lookup Enabled]
+* link:#abefu[Timeout]
+* link:#abefq[Header Buffer Length]
+
+[[abeft]][[GSPTG00130]][[max-connections]]
+
+===== Max Connections
+
+Max Connections controls the number of requests that a particular client
+can make over a keep-alive connection. The range is any positive
+integer, and the default is 256.
+
+Adjust this value based on the number of requests a typical client makes
+in your application. For best performance specify quite a large number,
+allowing clients to make many requests.
+
+The number of connections specified by Max Connections is divided
+equally among the keep alive threads. If Max Connections is not equally
+divisible by Thread Count, the server can allow slightly more than Max
+Connections simultaneous keep alive connections.
+
+[[abegd]][[GSPTG00131]][[dns-lookup-enabled]]
+
+===== DNS Lookup Enabled
+
+This setting specifies whether the server performs DNS (domain name
+service) lookups on clients that access the server. When DNS lookup is
+not enabled, when a client connects, the server knows the client's IP
+address but not its host name (for example, it knows the client as
+198.95.251.30, rather than `www.xyz.com`). When DNS lookup is enabled,
+the server will resolve the client's IP address into a host name for
+operations like access control, common gateway interface (CGI) programs,
+error reporting, and access logging.
+
+If the server responds to many requests per day, reduce the load on the
+DNS or NIS (Network Information System) server by disabling DNS lookup.
+Enabling DNS lookup will increase the latency and load on the system, so
+modify this setting with caution.
+
+[[abefu]][[GSPTG00132]][[timeout]]
+
+===== Timeout
+
+Timeout determines the maximum time (in seconds) that the server holds
+open an HTTP keep alive connection. A client can keep a connection to
+the server open so that multiple requests to one server can be serviced
+by a single network connection. Since the number of open connections
+that the server can handle is limited, a high number of open connections
+will prevent new clients from connecting.
+
+The default time out value is 30 seconds. Thus, by default, the server
+will close the connection if idle for more than 30 seconds. The maximum
+value for this parameter is 300 seconds (5 minutes).
+
+The proper value for this parameter depends upon how much time is
+expected to elapse between requests from a given client. For example, if
+clients are expected to make requests frequently then, set the parameter
+to a high value; likewise, if clients are expected to make requests
+rarely, then set it to a low value.
+
+Both HTTP 1.0 and HTTP 1.1 support the ability to send multiple requests
+across a single HTTP session. A server can receive hundreds of new HTTP
+requests per second. If every request was allowed to keep the connection
+open indefinitely, the server could become overloaded with connections.
+On Unix/Linux systems, this could easily lead to a file table overflow.
+
+The {productName}'s Keep Alive system, which is affected by the
+Timeout setting, addresses this problem. A waiting keep alive connection
+has completed processing the previous request, and is waiting for a new
+request to arrive on the same connection. The server maintains a counter
+for the maximum number of waiting keep-alive connections. If the server
+has more than the maximum waiting connections open when a new connection
+waits for a keep-alive request, the server closes the oldest connection.
+This algorithm limits the number of open waiting keep-alive connections.
+
+If your system has extra CPU cycles, incrementally increase the keep
+alive settings and monitor performance after each increase. When
+performance saturates (stops improving), then stop increasing the
+settings.
+
+[[abefq]][[GSPTG00133]][[header-buffer-length]]
+
+===== Header Buffer Length
+
+The size (in bytes) of the buffer used by each of the request processing
+threads for reading the request data from the client.
+
+Adjust the value based on the actual request size and observe the impact
+on performance. In most cases the default should suffice. If the request
+size is large, increase this parameter.
+
+[[gkxit]][[GSPTG00196]][[file-cache-settings]]
+
+==== File Cache Settings
+
+The {productName} uses a file cache to serve static information
+faster. The file cache contains information about static files such as
+HTML, CSS, image, or text files. Enabling the HTTP file cache will
+improve performance of applications that contain static files.
+
+The following settings on the File Cache tab can significantly affect
+performance:
+
+* link:#abegf[Max File Count]
+* link:#abegh[Max Age]
+
+[[abegf]][[GSPTG00134]][[max-file-count]]
+
+===== Max File Count
+
+Max File Count determines how many files are in the cache. If the value
+is too big, the server caches little-needed files, which wastes memory.
+If the value is too small, the benefit of caching is lost. Try different
+values of this attribute to find the optimal solution for specific
+applications—generally, the effects will not be great.
+
+[[abegh]][[GSPTG00135]][[max-age]]
+
+===== Max Age
+
+This parameter controls how long cached information is used after a file
+has been cached. An entry older than the maximum age is replaced by a
+new entry for the same file.
+
+If your Web site's content changes infrequently, increase this value for
+improved performance. Set the maximum age by entering or changing the
+value in the Maximum Age field of the File Cache Configuration page in
+the web-based Admin Console for the HTTP server node and selecting the
+File Caching Tab.
+
+Set the maximum age based on whether the content is updated (existing
+files are modified) on a regular schedule or not. For example, if
+content is updated four times a day at regular intervals, you could set
+the maximum age to 21600 seconds (6 hours). Otherwise, consider setting
+the maximum age to the longest time you are willing to serve the
+previous version of a content file after the file has been modified.
+
+[[gkxjt]][[GSPTG00064]][[transport-settings]]
+
+=== Transport Settings
+
+The Acceptor Threads property for the Transport service specifies how
+many threads you want in accept mode on a listen socket at any time. It
+is a good practice to set this to less than or equal to the number of
+CPUs in your system.
+
+In the {productName}, acceptor threads on an HTTP Listener accept
+connections and put them onto a connection queue. Session threads then
+pick up connections from the queue and service the requests. The server
+posts more session threads if required at the end of the request.
+
+See "link:administration-guide/http_https.html#GSADG00771[Administering HTTP Network Listeners]" in
+{productName} Administration Guide for
+instructions on modifying the Acceptor Threads property. If using the
+Administration Console, the Acceptor Threads property is available on
+the Configurations>configuration-name>Network Config>Transports>tcp
+page.
+
+[[abehk]][[GSPTG00065]][[thread-pool-settings]]
+
+=== Thread Pool Settings
+
+You can tune thread pool settings by following the instructions in
+"link:administration-guide/threadpools.html#GSADG00008[Administering Thread Pools]" in {productName} Administration Guide. If using the Administration Console
+Thread Pool settings are available on the
+Configurations>configuration-name>Thread Pools>thread-pool-name page.
+
+The following thread pool settings can have significant effects on
+{productName} performance:
+
+* link:#abefn[Max Thread Pool Size]
+* link:#abefo[Min Thread Pool Size]
+
+[[abefn]][[GSPTG00197]][[max-thread-pool-size]]
+
+==== Max Thread Pool Size
+
+The Max Thread Pool Size parameter specifies the maximum number of
+simultaneous requests the server can handle. The default value is 5.
+When the server has reached the limit or request threads, it defers
+processing new requests until the number of active requests drops below
+the maximum amount. Increasing this value will reduce HTTP response
+latency times.
+
+In practice, clients frequently connect to the server and then do not
+complete their requests. In these cases, the server waits a length of
+time specified by the Timeout parameter.
+
+Also, some sites do heavyweight transactions that take minutes to
+complete. Both of these factors add to the maximum simultaneous requests
+that are required. If your site is processing many requests that take
+many seconds, you might need to increase the number of maximum
+simultaneous requests.
+
+Adjust the thread count value based on your load and the length of time
+for an average request. In general, increase this number if you have
+idle CPU time and requests that are pending; decrease it if the CPU
+becomes overloaded. If you have many HTTP 1.0 clients (or HTTP 1.1
+clients that disconnect frequently), adjust the timeout value to reduce
+the time a connection is kept open.
+
+Suitable Request Max Thread Pool Size values range from 100 to 500,
+depending on the load. If your system has extra CPU cycles, keep
+incrementally increasing thread count and monitor performance after each
+incremental increase. When performance saturates (stops improving), then
+stop increasing thread count.
+
+[[abefo]][[GSPTG00198]][[min-thread-pool-size]]
+
+==== Min Thread Pool Size
+
+The Min Thread Pool Size property specifies the minimum number of
+threads the server initiates upon startup. The default value is 2. Min
+Thread Pool Size represents a hard limit for the maximum number of
+active threads that can run simultaneously, which can become a
+bottleneck for performance.
+
+Specifying the same value for minimum and maximum threads allows
+{productName} to use a slightly more optimized thread pool. This
+configuration should be considered unless the load on the server varies
+quite significantly.
+
+[[abegt]][[GSPTG00066]][[orb-settings]]
+
+=== ORB Settings
+
+The {productName} includes a high performance and scalable CORBA
+Object Request Broker (ORB). The ORB is the foundation of the EJB
+Container on the server.
+
+For complete instructions on configuring ORB settings, refer to
+"link:administration-guide/orb.html#GSADG00018[Administering the Object Request Broker (ORB)]" in
+{productName} Administration Guide. Also refer to
+"link:ha-administration-guide/rmi-iiop.html#GSHAG00013[RMI-IIOP Load Balancing and Failover]" in {productName} High Availability Administration Guide. You
+can also configure most ORB settings through the {productName}
+Administration Console by navigating to the
+Configurations>configuration-name> ORB node and then following the
+instructions in the Administration Console online help.
+
+The following topics are addressed here:
+
+* link:#abegu[Overview]
+* link:#abegv[How a Client Connects to the ORB]
+* link:#abegw[Monitoring the ORB]
+* link:#abegz[Tuning the ORB]
+
+[[abegu]][[GSPTG00199]][[overview]]
+
+==== Overview
+
+The ORB is primarily used by EJB components via:
+
+* RMI/IIOP path from an application client (or rich client) using the
+application client container.
+* RMI/IIOP path from another {productName} instance ORB.
+* RMI/IIOP path from another vendor's ORB.
+* In-process path from the Web Container or MDB (message driven beans)
+container.
+
+When a server instance makes a connection to another server instance
+ORB, the first instance acts as a client ORB. SSL over IIOP uses a fast
+optimized transport with high-performance native implementations of
+cryptography algorithms.
+
+It is important to remember that EJB local interfaces do not use the
+ORB. Using a local interface passes all arguments by reference and does
+not require copying any objects.
+
+[[abegv]][[GSPTG00200]][[how-a-client-connects-to-the-orb]]
+
+==== How a Client Connects to the ORB
+
+A rich client Java program performs a new `initialContext()` call which
+creates a client side ORB instance. This in turn creates a socket
+connection to the {productName} IIOP port. The reader thread is
+started on the server ORB to service IIOP requests from this client.
+Using the `initialContext`, the client code does a lookup of an EJB
+deployed on the server. An IOR which is a remote reference to the
+deployed EJB on the server is returned to the client. Using this object
+reference, the client code invokes remote methods on the EJB.
+
+`InitialContext` lookup for the bean and the method invocations
+translate the marshalling application request data in Java into IIOP
+message(s) that are sent on the socket connection that was created
+earlier on to the server ORB. The server then creates a response and
+sends it back on the same connection. This data in the response is then
+un-marshalled by the client ORB and given back to the client code for
+processing. The Client ORB shuts down and closes the connection when the
+rich client application exits.
+
+[[abegw]][[GSPTG00201]][[monitoring-the-orb]]
+
+==== Monitoring the ORB
+
+ORB statistics are disabled by default. To gather ORB statistics, enable
+monitoring with the following `asadmin` command:
+
+[source]
+----
+set serverInstance.iiop-service.orb.system.monitoringEnabled=true
+reconfig serverInstance
+----
+
+If using the Administration Console, you can enable ORB monitoring on
+the Configurations>configuration-name>Monitoring page. To view ORB
+monitoring statistics through the Administration Console, navigate to
+the server (Admin Server) page and click the Monitor tab. Refer to the
+Administration Console online help for complete instructions.
+
+The following statistics are of particular interest when tuning the ORB:
+
+* link:#abegx[Connection Statistics]
+* link:#abegy[Thread Pools]
+
+[[abegx]][[GSPTG00136]][[connection-statistics]]
+
+===== Connection Statistics
+
+The following statistics are gathered on ORB connections:
+
+* `total-inbound-connections`: Total inbound connections to ORB.
+* `total-outbound-connections`: Total outbound connections from ORB.
+
+Use the following command to get ORB connection statistics:
+
+[source]
+----
+asadmin get --monitor
+    serverInstance.iiop-service.orb.system.orb-connection.*
+----
+
+[[abegy]][[GSPTG00137]][[thread-pools]]
+
+===== Thread Pools
+
+The following statistics are gathered on ORB thread pools:
+
+* `thread-pool-size`: Number of threads in ORB thread pool.
+* `waiting-thread-count`: Number of thread pool threads waiting for work to arrive.
+
+Use the following command to display ORB thread pool statistics:
+
+[source]
+----
+asadmin get --monitor
+    serverInstance.iiop-service.orb.system.orb-thread-pool.*
+----
+
+[[abegz]][[GSPTG00202]][[tuning-the-orb]]
+
+==== Tuning the ORB
+
+Tune ORB performance by setting ORB parameters and ORB thread pool
+parameters. You can often decrease response time by leveraging
+load-balancing, multiple shared connections, thread pool and message
+fragment size. You can improve scalability by load balancing between
+multiple ORB servers from the client, and tuning the number of
+connection between the client and the server.
+
+The following topics are addressed here:
+
+* link:#abeha[Tunable ORB Parameters]
+* link:#abehb[ORB Thread Pool Parameters]
+* link:#abehc[Client ORB Properties]
+* link:#abehg[Thread Pool Sizing]
+* link:#abehh[Examining IIOP Messages]
+
+[[abeha]][[GSPTG00138]][[tunable-orb-parameters]]
+
+===== Tunable ORB Parameters
+
+You can tune ORB parameters using the instructions in
+"link:administration-guide/orb.html#GSADG00018[Administering the Object Request Broker (ORB)]" in
+{productName} Administration Guide. If using the
+Administration Console, navigate to the
+Configurations>configuration-name>ORB node and refer to the online help.
+
+The following table summarizes the tunable ORB parameters.
+
+[[sthref8]][[gacma]]
+
+Table 3-2 Tunable ORB Parameters
+
+[width="100%",cols="<33%,<27%,<40%",options="header",]
+|===
+|Path |ORB Modules |Server Settings
+|RMI/ IIOP from application client to application server |communication
+infrastructure, thread pool |steady-thread-pool-size,
+max-thread-pool-size, idle-thread-timeout-in-seconds
+
+|RMI/ IIOP from ORB to {productName} |communication infrastructure,
+thread pool |steady-thread-pool-size, max-thread-pool-size,
+idle-thread-timeout-in-seconds
+
+|RMI/ IIOP from a vendor ORB |parts of communication infrastructure,
+thread pool |steady-thread-pool-size, max-thread-pool-size,
+idle-thread-timeout-in-seconds
+
+|In-process |thread pool |steady-thread-pool-size, max-thread-pool-size,
+idle-thread-timeout-in-seconds
+|===
+
+
+[[abehb]][[GSPTG00139]][[orb-thread-pool-parameters]]
+
+===== ORB Thread Pool Parameters
+
+The ORB thread pool contains a task queue and a pool of threads. Tasks
+or jobs are inserted into the task queue and free threads pick tasks
+from this queue for execution. Do not set a thread pool size such that
+the task queue is always empty. It is normal for a large application's
+Max Pool Size to be ten times the size of the current task queue.
+
+The {productName} uses the ORB thread pool to:
+
+* Execute every ORB request
+* Trim EJB pools and caches
+* Execute MDB requests
+
+Thus, even when one is not using ORB for remote-calls (via RMI/ IIOP),
+set the size of the threadpool to facilitate cleaning up the EJB pools
+and caches.
+
+You can set ORB thread pool attributes using the instructions in
+"link:administration-guide/threadpools.html#GSADG00008[Administering Thread Pools]" in {productName} Administration Guide. If using the Administration
+Console, navigate to Configurations>configuration-name> Thread
+Pools>thread-pool-name, where thread-pool-name is the thread pool ID
+selected for the ORB. Thread pools have the following attributes that
+affect performance.
+
+* Minimum Pool Size: The minimum number of threads in the ORB thread
+pool. Set to the average number of threads needed at a steady (RMI/IIOP) load.
+* Maximum Pool Size: The maximum number of threads in the ORB thread pool.
+* Idle Timeout: Number of seconds to wait before removing an idle thread from pool.
+Allows shrinking of the thread pool.
+* Number of Work Queues
+
+In particular, the maximum pool size is important to performance. For
+more information, see link:#abehg[Thread Pool Sizing].
+
+[[abehc]][[GSPTG00140]][[client-orb-properties]]
+
+===== Client ORB Properties
+
+Specify the following properties as command-line arguments when
+launching the client program. You do this by using the following syntax
+when starting the Java VM:
+
+[source]
+----
+-Dproperty=value
+----
+
+The following topics are addressed here:
+
+* link:#abehd[Controlling Connections Between Client and Server ORB]
+* link:#CEGDGBBG[Limiting the Maximum Number of Client Connections]
+* link:#abehf[Load Balancing]
+
+[[abehd]][[GSPTG00025]][[controlling-connections-between-client-and-server-orb]]
+
+Controlling Connections Between Client and Server ORB
+
+When using the default JDK ORB on the client, a connection is
+established from the client ORB to the application server ORB every time
+an initial context is created. To pool or share these connections when
+they are opened from the same process by adding to the configuration on
+the client ORB.
+
+[source]
+----
+-Djava.naming.factory.initial=com.sun.enterprise.naming.SerialInitContextFactory
+----
+
+[[CEGDGBBG]][[limiting-the-maximum-number-of-client-connections]]
+
+Limiting the Maximum Number of Client Connections
+
+You can specify the total maximum number of client connections on all
+ORB listener ports (TCP, SSL and SSL with mutual authentication). When
+open client connections exceed the maximum value you specify, the ORB
+rejects any new incoming client connections.
+
+Set this value to support the expected number of simultaneous client
+connections, but not to exceed the VM or system file descriptor limits.
+If the value is set too high, the ORB will continue accepting new client
+connections, resulting in a "too many open files" error if the VM runs
+out of file descriptors.
+
+To specify the maximum number of client connections, set the
+`configs.config.``config-name.``iiop-service.orb.max-connections`
+attribute to the number that you require:
+
+[source]
+----
+asadmin> set configs.config.config-name.iiop-service.orb.max-connections=max-connections
+----
+
+config-name::
+  The name of the configuration in which the IIOP service is defined.
+  For example, `server-config` is the name for the configuration of the
+  domain administration server (DAS).
+max-connections::
+  An integer that specifies the maximum number of client connections.
+
+For updates to this value to take effect, restart {productName}.
+
+The following example shows how to set the maximum number of client
+connections for the ORB in the DAS to `512`:
+
+[source]
+----
+asadmin> set configs.config.server-config.iiop-service.orb.max-connections=512
+configs.config.server-config.iiop-service.orb.max-connections=512
+Command set executed successfully.
+----
+
+[[abehf]][[GSPTG00026]][[load-balancing]]
+
+Load Balancing
+
+For information on how to configure HTTP load balancing, see
+"link:ha-administration-guide/http-load-balancing.html#GSHAG00009[Configuring HTTP Load Balancing]" in {productName} High Availability Administration Guide.
+
+For information on how to configure RMI/IIOP for multiple application
+server instances in a cluster, "link:ha-administration-guide/rmi-iiop.html#GSHAG00013[RMI-IIOP Load Balancing
+and Failover]" in {productName} High Availability
+Administration Guide.
+
+When tuning the client ORB for load-balancing and connections, consider
+the number of connections opened on the server ORB. Start from a low
+number of connections and then increase it to observe any performance
+benefits. A connection to the server translates to an ORB thread reading
+actively from the connection (these threads are not pooled, but exist
+currently for the lifetime of the connection).
+
+[[abehg]][[GSPTG00141]][[thread-pool-sizing]]
+
+===== Thread Pool Sizing
+
+After examining the number of inbound and outbound connections as
+explained above, tune the size of the thread pool appropriately. This
+can affect performance and response times significantly.
+
+The size computation takes into account the number of client requests to
+be processed concurrently, the resource (number of CPUs and amount of
+memory) available on the machine and the response times required for
+processing the client requests.
+
+Setting the size to a very small value can affect the ability of the
+server to process requests concurrently, thus affecting the response
+times since requests will sit longer in the task queue. On the other
+hand, having a large number of worker threads to service requests can
+also be detrimental because they consume system resources, which
+increases concurrency. This can mean that threads take longer to acquire
+shared structures in the EJB container, thus affecting response times.
+
+The worker thread pool is also used for the EJB container's housekeeping
+activity such as trimming the pools and caches. This activity needs to
+be accounted for also when determining the size. Having too many ORB
+worker threads is detrimental for performance since the server has to
+maintain all these threads. The idle threads are destroyed after the
+idle thread timeout period.
+
+[[abehh]][[GSPTG00142]][[examining-iiop-messages]]
+
+===== Examining IIOP Messages
+
+It is sometimes useful to examine the IIOP messages passed by the
+{productName}. To make the server save IIOP messages to the
+`server.log` file, set the JVM option `-Dcom.sun.CORBA.ORBDebug=giop`.
+Use the same option on the client ORB.
+
+The following is an example of IIOP messages saved to the server log.
+Note: in the actual output, each line is preceded by the timestamp, such
+as `[29/Aug/2002:22:41:43] INFO (27179): CORE3282: stdout`.
+
+[source]
+----
+ ++++++++++++++++++++++++++++++
+ Message(Thread[ORB Client-side Reader, conn to 192.18.80.118:1050,5,main]):
+createFromStream: type is 4 <
+ MessageBase(Thread[ORB Client-side Reader, conn to 192.18.80.118:1050,5,main]):
+Message GIOP version: 1.2
+ MessageBase(Thread[ORB Client-side Reader, conn to 192.18.80.118:1050,5,main]):
+ORB Max GIOP Version: 1.2
+ Message(Thread[ORB Client-side Reader, conn to 192.18.80.118:1050,5,main]):
+createFromStream: message construction complete.
+ com.sun.corba.ee.internal.iiop.MessageMediator
+(Thread[ORB Client-side Reader, conn to 192.18.80.118:1050,5,main]): Received message:
+ ----- Input Buffer -----
+ Current index: 0
+ Total length : 340
+ 47 49 4f 50 01 02 00 04 0 0 00 01 48 00 00 00 05 GIOP.......H....
+----
+
+
+[NOTE]
+====
+The flag `-Dcom.sun.CORBA.ORBdebug=giop` generates many debug messages
+in the logs. This is used only when you suspect message fragmentation.
+====
+
+
+In this sample output above, the `createFromStream` type is shown as
+`4`. This implies that the message is a fragment of a bigger message. To
+avoid fragmented messages, increase the fragment size. Larger fragments
+mean that messages are sent as one unit and not as fragments, saving the
+overhead of multiple messages and corresponding processing at the
+receiving end to piece the messages together.
+
+If most messages being sent in the application are fragmented,
+increasing the fragment size is likely to improve efficiency. On the
+other hand, if only a few messages are fragmented, it might be more
+efficient to have a lower fragment size that requires smaller buffers
+for writing messages.
+
+[[abehp]][[GSPTG00067]][[resource-settings]]
+
+=== Resource Settings
+
+Tuning JDBC and connector resources can significantly improve {productName} performance.
+
+The following topics are addressed here:
+
+* link:#abehq[JDBC Connection Pool Settings]
+* link:#abehy[Connector Connection Pool Settings]
+
+[[abehq]][[GSPTG00203]][[jdbc-connection-pool-settings]]
+
+==== JDBC Connection Pool Settings
+
+For optimum performance of database-intensive applications, tune the
+JDBC Connection Pools managed by the {productName}. These connection
+pools maintain numerous live database connections that can be reused to
+reduce the overhead of opening and closing database connections. This
+section describes how to tune JDBC Connection Pools to improve
+performance.
+
+J2EE applications use JDBC Resources to obtain connections that are
+maintained by the JDBC Connection Pool. More than one JDBC Resource is
+allowed to refer to the same JDBC Connection Pool. In such a case, the
+physical connection pool is shared by all the resources.
+
+Refer to "link:administration-guide/jdbc.html#GSADG00015[Administering Database Connectivity]" in
+{productName} Administration Guide for more
+information about managing JDBC connection pools.
+
+The following topics are addressed here:
+
+* link:#abehr[Monitoring JDBC Connection Pools]
+* link:#abehs[Tuning JDBC Connection Pools]
+
+[[abehr]][[GSPTG00143]][[monitoring-jdbc-connection-pools]]
+
+===== Monitoring JDBC Connection Pools
+
+Statistics-gathering is disabled by default for JDBC Connection Pools.
+Refer to for instructions on enabling JDBC monitoring in
+"link:administration-guide/monitoring.html#GSADG00011[Administering the Monitoring Service]" in {productName} Administration Guide. If using the
+Administration Console, JDBC monitoring can be enabled on the
+Configurations>configuration-name>Monitoring page.
+
+The following attributes are monitored:
+
+* `numConnFailedValidation (count)` Number of connections that failed
+validation.
+* `numConnUsed (range)` Number of connections that have been used.
+* `numConnFree (count)` Number of free connections in the pool.
+* `numConnTimedOut (bounded range)` Number of connections in the pool
+that have timed out.
+
+To get JDBC monitoring statistics, use the following commands:
+
+[source]
+----
+asadmin get --monitor=true
+serverInstance.resources.jdbc-connection-pool.*asadmin get
+--monitor=true serverInstance.resources.jdbc-connection-pool. poolName.* *
+----
+
+To view JDBC monitoring statistics through the Administration Console,
+navigate to the server (Admin Server) page and click the Monitor tab.
+Refer to the Administration Console online help for complete
+instructions.
+
+[[abehs]][[GSPTG00144]][[tuning-jdbc-connection-pools]]
+
+===== Tuning JDBC Connection Pools
+
+Refer to "link:administration-guide/jdbc.html#GSADG00015[Administering Database Connectivity]" in
+{productName} Administration Guide for
+instructions on configuring JDBC connection pools. If using the
+{productName} Administration Console by navigating to the
+Resources>JDBC>JDBC Connection Pools>jdbc-pool-name page and then
+clicking the desired tab.
+
+The following JDBC properites affect {productName} performance:
+
+* link:#abeht[Pool Size Settings]
+* link:#abehu[Timeout Settings]
+* link:#abehv[Isolation Level Settings]
+* link:#abehw[Connection Validation Settings]
+
+[[abeht]][[GSPTG00027]][[pool-size-settings]]
+
+Pool Size Settings
+
+Pool Size settings can be configured in the Pool Settings section on the
+General tab in the Edit JDBC Connection Pool page.
+
+The following settings control the size of the connection pool:
+
+* Initial and Mimimum Pool Size: Size of the pool when created, and its
+minimum allowable size.
+* Maximum Pool Size: Upper limit of size of the pool.
+* Pool Resize Quantity: Number of connections to be removed when the
+idle timeout expires. Connections that have idled for longer than the
+timeout are candidates for removal. When the pool size reaches the
+initial and minimum pool size, removal of connections stops.
+
+The following table summarizes advantages and disadvantages to consider
+when sizing connection pools.
+
+[[sthref9]][[gacmi]]
+
+Table 3-3 Connection Pool Sizing
+
+[width="100%",cols="<21%,<38%,<41%",options="header",]
+|===
+|Connection Pool |Advantages |Disadvantages
+|Small Connection pool |Faster access on the connection table. a|
+May not have enough connections to satisfy requests.
+
+Requests may spend more time in the queue.
+
+|Large Connection pool a|
+More connections to fulfill requests.
+
+Requests will spend less (or no) time in the queue
+
+ |Slower access on the connection table.
+|===
+
+
+[[abehu]][[GSPTG00028]][[timeout-settings]]
+
+Timeout Settings
+
+The following JDBC timeout settings can be configured on the in the Pool
+Settings section on the General tab in the Edit JDBC Connection Pool
+page.
+
+* Max Wait Time: Amount of time the caller (the code requesting a
+connection) will wait before getting a connection timeout. The default
+is 60 seconds. A value of zero forces caller to wait indefinitely.
++
+To improve performance set Max Wait Time to zero (0). This essentially
+blocks the caller thread until a connection becomes available. Also,
+this allows the server to alleviate the task of tracking the elapsed
+wait time for each request and increases performance.
+* Idle Timeout: Maximum time in seconds that a connection can remain
+idle in the pool. After this time, the pool can close this connection.
+This property does not control connection timeouts on the database
+server.
++
+Keep this timeout shorter than the database server timeout (if such
+timeouts are configured on the database), to prevent accumulation of
+unusable connection in {productName}.
++
+For best performance, set Idle Timeout to zero (0) seconds, so that idle
+connections will not be removed. This ensures that there is normally no
+penalty in creating new connections and disables the idle monitor
+thread. However, there is a risk that the database server will reset a
+connection that is unused for too long.
+
+[[abehv]][[GSPTG00029]][[isolation-level-settings]]
+
+Isolation Level Settings
+
+The following JDBC Isolation Level settings can be configured in the
+Transaction section on the General tab in the Edit JDBC Connection Pool
+page.
+
+* Transaction Isolation: Specifies the transaction isolation level of
+the pooled database connections. If this parameter is unspecified, the
+pool uses the default isolation level provided by the JDBC Driver.
+* Isolation Level Guaranteed: Guarantees that every connection obtained
+from the pool has the isolation specified for the Transaction Isolation
+level. Applicable only when the Transaction Isolation level is
+specified. The default value is Guaranteed.
++
+This setting can have some performance impact on some JDBC drivers. Set
+to false when certain that the application does not change the isolation
+level before returning the connection.
+
+Avoid specifying the Transaction Isolation level. If that is not
+possible, consider disabling the Isolation Level Guaranteed option and
+then make sure applications do not programmatically alter the
+connections; isolation level.
+
+If you must specify a Transaction Isolation level, specify the
+best-performing level possible. The isolation levels listed from best
+performance to worst are:
+
+1. `READ_UNCOMMITTED`
+2. `READ_COMMITTED`
+3. `REPEATABLE_READ`
+4. `SERIALIZABLE`
+
+Choose the isolation level that provides the best performance, yet still
+meets the concurrency and consistency needs of the application.
+
+[[abehw]][[GSPTG00030]][[connection-validation-settings]]
+
+Connection Validation Settings
+
+JDBC Connection Validation settings can be configured in the Connection
+Validation section on the Advanced tab in the Edit JDBC Connection Pool
+page.
+
+* Connection Validation Required: If enabled, the pool validates
+connections (checks to find out if they are usable) before providing
+them to an application.
++
+If possible, keep this option disabled. Requiring connection validation
+forces the server to apply the validation algorithm every time the pool
+returns a connection, which adds overhead to the latency of
+`getConnection()`. If the database connectivity is reliable, you can
+omit validation.
+* Validation Method: Specifies the type of connection validation to
+perform. Must be one of the following:
+
+** `auto-commit`: Attempt to perform an auto-commit on the connection.
+
+** `metadata`: Attempt to get metadata from the connection.
+
+** `table`: Performing the query on a specified table. If this option is
+selected, Table Name must also be set. Choosing this option may be
+necessary if the JDBC driver caches calls to `setAutoCommit()` and
+`getMetaData()`.
+
+** `custom-validation`: Define a custom validation method.
+* Table Name: Name of the table to query when the Validation Method is
+set to `table`.
+* Close All Connections On Any Failure: Specify whether all connections
+in the pool should be closed if a single validation check fails. This
+option is disabled by default. One attempt will be made to re-establish
+failed connections.
+
+[[abehy]][[GSPTG00204]][[connector-connection-pool-settings]]
+
+==== Connector Connection Pool Settings
+
+From a performance standpoint, connector connection pools are similar to
+JDBC connection pools. Follow all the recommendations in the previous
+section, link:#abehs[Tuning JDBC Connection Pools].
+
+[[abehz]][[GSPTG00145]][[transaction-support]]
+
+===== Transaction Support
+
+You may be able to improve performance by overriding the default
+transaction support specified for each connector connection pool.
+
+For example, consider a case where an Enterprise Information System
+(EIS) has a connection factory that supports local transactions with
+better performance than global transactions. If a resource from this EIS
+needs to be mixed with a resource coming from another resource manager,
+the default behavior forces the use of XA transactions, leading to lower
+performance. However, by changing the EIS's connector connection pool to
+use LocalTransaction transaction support and leveraging the Last Agent
+Optimization feature previously described, you could leverage the
+better-performing EIS LocalTransaction implementation. For more
+information on LAO, see link:tuning-apps.html#abecq[Configure JDBC
+Resources as One-Phase Commit Resources].
+
+You can specify transaction support when you create or edit a connector
+connection pool.
+
+Also set transaction support using `asadmin`. For example, the following
+`asadmin` command could be used to create a connector connection pool
+`TESTPOOL` with `transaction-support` set to `LOCAL`.
+
+[source]
+----
+asadmin> create-connector-connection-pool --raname jdbcra
+--connectiondefinition javax.sql.DataSource
+-transactionsupport LocalTransaction
+TESTPOOL
+----
+
+[[gkxvd]][[GSPTG00068]][[load-balancer-settings]]
+
+=== Load Balancer Settings
+
+{productName} is compatible with the Apache HTTP
+server `mod_jk` module for load balancing.
+
+{productName} load balancing configurations can vary widely depending
+on the needs of your enterprise and are beyond the scope of this
+Performance Tuning Guide. For complete information about configuring
+load balancing in {productName}, refer to the following
+documentation:
+
+* "link:ha-administration-guide/http-load-balancing.html#GSHAG00009[Configuring HTTP Load Balancing]" in {productName} High Availability Administration Guide
+* "link:ha-administration-guide/rmi-iiop.html#GSHAG00013[RMI-IIOP Load Balancing and Failover]" in {productName} High Availability Administration Guide
diff --git a/docs/performance-tuning-guide/src/main/asciidoc/tuning-java.adoc b/docs/performance-tuning-guide/src/main/asciidoc/tuning-java.adoc
new file mode 100644
index 0000000..18851f2
--- /dev/null
+++ b/docs/performance-tuning-guide/src/main/asciidoc/tuning-java.adoc
@@ -0,0 +1,516 @@
+type=page
+status=published
+title=Tuning the Java Runtime System
+next=tuning-os.html
+prev=tuning-glassfish.html
+~~~~~~
+
+= Tuning the Java Runtime System
+
+[[GSPTG00006]][[abeia]]
+
+
+[[tuning-the-java-runtime-system]]
+== 4 Tuning the Java Runtime System
+
+The following topics are addressed here:
+
+* link:#abeib[Java Virtual Machine Settings]
+* link:#gfpzy[Start Options]
+* link:#glaat[Tuning High Availability Persistence]
+* link:#abeic[Managing Memory and Garbage Collection]
+* link:#abeiq[Further Information]
+
+[[abeib]][[GSPTG00069]][[java-virtual-machine-settings]]
+
+=== Java Virtual Machine Settings
+
+Each JDK have own set of JVM options useful for tuning.
+The easiest way is to run the following command and then consult the JDK's
+documentation to understand all consequences.
+
+[source]
+----
+JAVA_HOME/bin/java -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version
+----
+
+[[gfpzy]][[GSPTG00070]][[start-options]]
+
+In some situations, performance can be improved by using large page sizes.
+For Ultrasparc CMT systems, include the `-XX:+UseLargePages` and
+`-XX:LargePageSizeInBytes=256m` arguments with your JVM tuning.
+
+[[glaat]][[GSPTG00071]][[tuning-high-availability-persistence]]
+
+=== Tuning High Availability Persistence
+
+If session `s1` and `s2` need to be replicated to an instance (backup
+server), the replication module batches the replication messages to be
+sent to that instance instead of sending separate replication messages.
+This improves performance. In configurations in which a lot of session
+replication is performed, you may find better performance by tuning the
+`org.shoal.cache.transmitter.max.batch.size` system property. This
+property determines the number of replication messages that constitute
+one batch.
+
+The default value for this property is `20`. You can try setting it as
+high as `90`, depending on system loads. Like all system properties,
+this property is set with the `-D` flag in your Java arguments.
+
+[[abeic]][[GSPTG00072]][[managing-memory-and-garbage-collection]]
+
+=== Managing Memory and Garbage Collection
+
+The efficiency of any application depends on how well memory and garbage
+collection are managed. The following sections provide information on
+optimizing memory and allocation functions:
+
+* link:#abeid[Tuning the Garbage Collector]
+* link:#abeig[Tracing Garbage Collection]
+* link:#abeih[Other Garbage Collector Settings]
+* link:#abeii[Tuning the Java Heap]
+* link:#abeio[Rebasing DLLs on Windows]
+
+[[abeid]][[GSPTG00205]][[tuning-the-garbage-collector]]
+
+==== Tuning the Garbage Collector
+
+Garbage collection (GC) reclaims the heap space previously allocated to
+objects no longer needed. The process of locating and removing the dead
+objects can stall any application and consume as much as 25 percent
+throughput.
+
+Almost all Java Runtime Environments come with a generational object
+memory system and sophisticated GC algorithms. A generational memory
+system divides the heap into a few carefully sized partitions called
+generations. The efficiency of a generational memory system is based on
+the observation that most of the objects are short lived. As these
+objects accumulate, a low memory condition occurs forcing GC to take
+place.
+
+The heap space is divided into the old and the new generation. The new
+generation includes the new object space (eden), and two survivor
+spaces. The JVM allocates new objects in the eden space, and moves
+longer lived objects from the new generation to the old generation.
+
+The young generation uses a fast copying garbage collector which employs
+two semi-spaces (survivor spaces) in the eden, copying surviving objects
+from one survivor space to the second. Objects that survive multiple
+young space collections are tenured, meaning they are copied to the
+tenured generation. The tenured generation is larger and fills up less
+quickly. So, it is garbage collected less frequently; and each
+collection takes longer than a young space only collection. Collecting
+the tenured space is also referred to as doing a full generation
+collection.
+
+The frequent young space collections are quick (a few milliseconds),
+while the full generation collection takes a longer (tens of
+milliseconds to a few seconds, depending upon the heap size).
+
+Other GC algorithms, such as the Concurrent Mark Sweep (CMS) algorithm,
+are incremental. They divide the full GC into several incremental
+pieces. This provides a high probability of small pauses. This process
+comes with an overhead and is not required for enterprise web
+applications.
+
+When the new generation fills up, it triggers a minor collection in
+which the surviving objects are moved to the old generation. When the
+old generation fills up, it triggers a major collection which involves
+the entire object heap.
+
+Both HotSpot and Solaris JDK use thread local object allocation pools
+for lock-free, fast, and scalable object allocation. So, custom object
+pooling is not often required. Consider pooling only if object
+construction cost is high and significantly affects execution profiles.
+
+[[abeie]][[GSPTG00146]][[choosing-the-garbage-collection-algorithm]]
+
+===== Choosing the Garbage Collection Algorithm
+
+The default collector for Java server class machines will optimize for
+throughput but be tolerant of somewhat long pause times. If you would
+prefer to have minimal pause times at the expense of some throughput and
+increased CPU usage, consider using the CMS collector.
+
+[[gaclx]][[GSPTG00038]][[to-use-the-cms-collector]]
+
+To use the CMS collector
+
+Follow this procedure.
+
+1. Make sure that the system is not using 100 percent of its CPU.
+2. Configure the CMS collector in the server instance.
++
+To do this, add the following JVM options:
+
+* `-XX:+UseConcMarkSweepGC`
+* `-XX:SoftRefLRUPolicyMSPerMB=1`
+
+[[abeif]][[GSPTG00147]][[additional-information]]
+
+===== Additional Information
+
+Use the `jvmstat` utility to monitor HotSpot garbage collection. (See
+link:#abeiq[Further Information].)
+
+For detailed information on tuning the garbage collector, see
+http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html[Java
+SE 6 HotSpot Virtual Machine Garbage Collection Tuning]
+(`http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html`).
+
+[[abeig]][[GSPTG00206]][[tracing-garbage-collection]]
+
+==== Tracing Garbage Collection
+
+The two primary measures of garbage collection performance are
+throughput and pauses. Throughput is the percentage of the total time
+spent on other activities apart from GC. Pauses are times when an
+application appears unresponsive due to GC.
+
+Two other considerations are footprint and promptness. Footprint is the
+working size of the JVM process, measured in pages and cache lines.
+Promptness is the time between when an object becomes dead, and when the
+memory becomes available. This is an important consideration for
+distributed systems.
+
+A particular generation size makes a trade-off between these four
+metrics. For example, a large young generation likely maximizes
+throughput, but at the cost of footprint and promptness. Conversely,
+using a small young generation and incremental GC will minimize pauses,
+and thus increase promptness, but decrease throughput.
+
+JVM diagnostic output will display information on pauses due to garbage
+collection. If you start the server in verbose mode (use the command
+`asadmin start-domain --verbose` domain), then the command line argument
+`-verbose:gc` prints information for every collection. Here is an
+example of output of the information generated with this JVM flag:
+
+[source]
+----
+[GC 50650K->21808K(76868K), 0.0478645 secs]
+ [GC 51197K->22305K(76868K), 0.0478645 secs]
+ [GC 52293K->23867K(76868K), 0.0478645 secs]
+ [Full GC 52970K->1690K(76868K), 0.54789968 secs]
+----
+
+On each line, the first number is the combined size of live objects
+before GC, the second number is the size of live objects after GC, the
+number in parenthesis is the total available space, which is the total
+heap minus one of the survivor spaces. The final figure is the amount of
+time that the GC took. This example shows three minor collections and
+one major collection. In the first GC, 50650 KB of objects existed
+before collection and 21808 KB of objects after collection. This means
+that 28842 KB of objects were dead and collected. The total heap size is
+76868 KB. The collection process required 0.0478645 seconds.
+
+Other useful monitoring options include:
+
+* `-XX:+PrintGCDetails` for more detailed logging information
+* `-Xloggc:file` to save the information in a log file
+
+[[abeih]][[GSPTG00207]][[other-garbage-collector-settings]]
+
+==== Other Garbage Collector Settings
+
+To specify the attributes for the Java virtual machine, use the
+Administration Console and set the property under config-name > JVM
+settings (JVM options).
+
+[[glgkm]][[GSPTG00148]][[setting-the-maximum-permanent-generation]]
+
+===== Setting the Maximum Permanent Generation
+
+For applications that do not dynamically generate and load classes, the
+size of the permanent generation does not affect GC performance. For
+applications that dynamically generate and load classes (for example,
+JSP applications), the size of the permanent generation does affect GC
+performance, since filling the permanent generation can trigger a Full
+GC. Tune the maximum permanent generation with the `-XX:MaxPermSize`
+option.
+
+[[glglk]][[GSPTG00149]][[disabling-explicit-garbage-collection]]
+
+===== Disabling Explicit Garbage Collection
+
+Although applications can explicitly invoke GC with the `System.gc()`
+method, doing so is a bad idea since this forces major collections, and
+inhibits scalability on large systems. It is best to disable explicit GC
+by using the flag `-XX:+DisableExplicitGC`.
+
+
+[NOTE]
+====
+On Windows systems, setting the `-XX:+DisableExplicitGC` option might
+prevent the renaming or removal of open application files. As a result,
+deployment, redeployment, or other operations that attempt to rename or
+delete files might fail.
+
+Application files can remain open because the files have been used by
+class loaders to find classes or resources, or have been opened
+explicitly by {productName} or application code but never explicitly
+closed. On Windows systems, open files cannot be renamed or deleted. To
+overcome this limitation, {productName} uses the `System.gc()` method
+to garbage collect the Java object that corresponds to an open file.
+When the Java object that corresponds to an open file is garbage
+collected, the object's `finalize` method closes the open channel to the
+file. {productName} can then delete or rename the file.
+====
+
+
+[[glglr]][[GSPTG00150]][[setting-the-frequency-of-full-garbage-collection]]
+
+===== Setting the Frequency of Full Garbage Collection
+
+{productName} uses RMI in the Administration module for monitoring.
+Garbage cannot be collected in RMI-based distributed applications
+without occasional local collections, so RMI forces a periodic full
+collection. Control the frequency of these collections with the property
+`-sun.rmi.dgc.client.gcInterval`. For example,
+`- java -Dsun.rmi.dgc.client.gcInterval=3600000` specifies explicit
+collection once per hour instead of the default rate of once per minute.
+
+[[abeii]][[GSPTG00208]][[tuning-the-java-heap]]
+
+==== Tuning the Java Heap
+
+This section discusses topics related to tuning the Java Heap for
+performance.
+
+* link:#abeij[Guidelines for Java Heap Sizing]
+* link:#abeik[Heap Tuning Parameters]
+
+[[abeij]][[GSPTG00151]][[guidelines-for-java-heap-sizing]]
+
+===== Guidelines for Java Heap Sizing
+
+Maximum heap size depends on maximum address space per process. The
+following table shows the maximum per-process address values for various
+platforms:
+
+[[sthref10]][[gacna]]
+
+Table 4-1 Maximum Address Space Per Process
+
+[width="100%",cols="<62%,<38%",options="header",]
+|===
+|Operating System |Maximum Address Space Per Process
+|Oracle/Redhat/Ubuntu Linux 32-bit |4 GB
+|Oracle/Redhat/Ubuntu Linux 64-bit |Terabytes
+|Windows XP/2008/7 |2 GB
+|Solaris x86 (32-bit) |4 GB
+|Solaris 32-bit |4 GB
+|Solaris 64-bit |Terabytes
+|===
+
+
+Maximum heap space is always smaller than maximum address space per
+process, because the process also needs space for stack, libraries, and
+so on. To determine the maximum heap space that can be allocated, use a
+profiling tool to examine the way memory is used. Gauge the maximum
+stack space the process uses and the amount of memory taken up libraries
+and other memory structures. The difference between the maximum address
+space and the total of those values is the amount of memory that can be
+allocated to the heap.
+
+You can improve performance by increasing your heap size or using a
+different garbage collector. In general, for long-running server
+applications, use the Java SE throughput collector on machines with
+multiple processors (`-XX:+AggressiveHeap`) and as large a heap as you
+can fit in the free memory of your machine.
+
+[[abeik]][[GSPTG00152]][[heap-tuning-parameters]]
+
+===== Heap Tuning Parameters
+
+You can control the heap size with the following JVM parameters:
+
+* ``-Xms``value
+* ``-Xmx``value
+* ``-XX:MinHeapFreeRatio=``minimum
+* ``-XX:MaxHeapFreeRatio=``maximum
+* ``-XX:NewRatio=``ratio
+* ``-XX:NewSize=``size
+* ``-XX:MaxNewSize=``size
+* `-XX:+AggressiveHeap`
+
+The `-Xms` and `-Xmx` parameters define the minimum and maximum heap
+sizes, respectively. Since GC occurs when the generations fill up,
+throughput is inversely proportional to the amount of the memory
+available. By default, the JVM grows or shrinks the heap at each GC to
+try to keep the proportion of free space to the living objects at each
+collection within a specific range. This range is set as a percentage by
+the parameters `-XX:MinHeapFreeRatio=`minimum and
+`-XX:MaxHeapFreeRatio=`maximum; and the total size bounded by `-Xms` and
+`-Xmx`.
+
+Set the values of `-Xms` and `-Xmx` equal to each other for a fixed heap
+size. When the heap grows or shrinks, the JVM must recalculate the old
+and new generation sizes to maintain a predefined `NewRatio`.
+
+The `NewSize` and `MaxNewSize` parameters control the new generation's
+minimum and maximum size. Regulate the new generation size by setting
+these parameters equal. The bigger the younger generation, the less
+often minor collections occur. The size of the young generation relative
+to the old generation is controlled by `NewRatio`. For example, setting
+`-XX:NewRatio=3` means that the ratio between the old and young
+generation is 1:3, the combined size of eden and the survivor spaces
+will be fourth of the heap.
+
+By default, the {productName} is invoked with the Java HotSpot Server
+JVM. The default `NewRatio` for the Server JVM is 2: the old generation
+occupies 2/3 of the heap while the new generation occupies 1/3. The
+larger new generation can accommodate many more short-lived objects,
+decreasing the need for slow major collections. The old generation is
+still sufficiently large enough to hold many long-lived objects.
+
+To size the Java heap:
+
+* Decide the total amount of memory you can afford for the JVM.
+Accordingly, graph your own performance metric against young generation
+sizes to find the best setting.
+* Make plenty of memory available to the young generation. The default
+is calculated from `NewRatio` and the `-Xmx` setting.
+* Larger eden or younger generation spaces increase the spacing between
+full GCs. But young space collections could take a proportionally longer
+time. In general, keep the eden size between one fourth and one third
+the maximum heap size. The old generation must be larger than the new
+generation.
+
+For up-to-date defaults, see
+http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html[Java
+HotSpot VM Options]
+(`http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html`).
+
+[[GSPTG00032]][[fxxpw]]
+Example 4-1 Heap Configuration on Solaris
+
+This is an exmple heap configuration used by {productName} on Solaris
+for large applications:
+
+[source]
+----
+-Xms3584m
+-Xmx3584m
+-verbose:gc
+-Dsun.rmi.dgc.client.gcInterval=3600000
+----
+
+[[abeil]][[GSPTG00031]][[survivor-ratio-sizing]]
+
+Survivor Ratio Sizing
+
+The `SurvivorRatio` parameter controls the size of the two survivor
+spaces. For example, `-XX:SurvivorRatio=6` sets the ratio between each
+survivor space and eden to be 1:6, each survivor space will be one
+eighth of the young generation. The default for Solaris is 32. If
+survivor spaces are too small, copying collection overflows directly
+into the old generation. If survivor spaces are too large, they will be
+empty. At each GC, the JVM determines the number of times an object can
+be copied before it is tenured, called the tenure threshold. This
+threshold is chosen to keep the survivor space half full.
+
+Use the option `-XX:+PrintTenuringDistribution` to show the threshold
+and ages of the objects in the new generation. It is useful for
+observing the lifetime distribution of an application.
+
+[[abeio]][[GSPTG00209]][[rebasing-dlls-on-windows]]
+
+==== Rebasing DLLs on Windows
+
+When the JVM initializes, it tries to allocate its heap using the `-Xms`
+setting. The base addresses of {productName} DLLs can restrict the
+amount of contiguous address space available, causing JVM initialization
+to fail. The amount of contiguous address space available for Java
+memory varies depending on the base addresses assigned to the DLLs. You
+can increase the amount of contiguous address space available by
+rebasing the {productName} DLLs.
+
+To prevent load address collisions, set preferred base addresses with
+the rebase utilty that comes with Visual Studio and the Platform SDK.
+Use the rebase utility to reassign the base addresses of the {productName} DLLs to prevent relocations at load time and increase the
+available process memory for the Java heap.
+
+There are a few {productName} DLLs that have non-default base
+addresses that can cause collisions. For example:
+
+* The `nspr` libraries have a preferred address of 0x30000000.
+* The `icu` libraries have the address of 0x4A?00000.
+
+Move these libraries near the system DLLs (`msvcrt.dll` is at
+`0x78000000`) to increase the available maximum contiguous address space
+substantially. Since rebasing can be done on any DLL, rebase to the DLLs
+after installing the {productName}.
+
+[[gacmt]][[GSPTG00039]][[to-rebase-the-glassfish-servers-dlls]]
+
+===== To rebase the {productName}'s DLLs
+
+[[sthref11]]
+
+Before You Begin
+
+To perform rebasing, you need:
+
+* Windows 2000
+* Visual Studio and the Microsoft Framework SDK rebase utility
+
+1. Make as-install\ `bin` the default directory.
++
+[source]
+----
+cd as-install\bin
+----
+
+2. Enter this command:
++
+[source]
+----
+rebase -b 0x6000000 *.dll
+----
+
+3. Use the `dependencywalker` utility to make sure the DLLs were
+rebased correctly.
++
+For more information, see the http://www.dependencywalker.com[Dependency
+Walker website] (`http://www.dependencywalker.com`).
+
+4. Increase the size for the Java heap, and set the JVM Option
+accordingly on the JVM Settings page in the Admin Console.
+
+5. Restart the {productName}.
+
+[[GSPTG00033]][[fxxpz]]
+Example 4-2 Heap Configuration on Windows
+
+This is an example heap configuration used by {productName}
+for heavy server-centric applications, on Windows, as set in the
+`domain.xml` file.
+
+[source,xml]
+----
+<jvm-options> -Xms1400m </jvm-options>
+<jvm-options> -Xmx1400m </jvm-options>
+----
+
+[[sthref12]]
+
+See Also
+
+For more information on rebasing, see
+http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tools/tools/rebase.asp[MSDN
+documentation for rebase utility]
+(`http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tools/tools/rebase.asp`).
+
+[[abeiq]][[GSPTG00073]][[further-information]]
+
+=== Further Information
+
+For more information on tuning the JVM, see:
+
+* http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html[
+Java HotSpot VM Options]
+(`http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html`)
+* http://www.oracle.com/technetwork/java/hotspotfaq-138619.html[
+Frequently Asked Questions About the Java HotSpot Virtual Machine]
+(`http://www.oracle.com/technetwork/java/hotspotfaq-138619.html`)
+* http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136373.html[
diff --git a/docs/performance-tuning-guide/src/main/asciidoc/tuning-os.adoc b/docs/performance-tuning-guide/src/main/asciidoc/tuning-os.adoc
new file mode 100644
index 0000000..05a6f0a
--- /dev/null
+++ b/docs/performance-tuning-guide/src/main/asciidoc/tuning-os.adoc
@@ -0,0 +1,1032 @@
+type=page
+status=published
+title=Tuning the Operating System and Platform
+prev=tuning-java.html
+~~~~~~
+
+= Tuning the Operating System and Platform
+
+[[GSPTG00007]][[abeir]]
+
+
+[[tuning-the-operating-system-and-platform]]
+== 5 Tuning the Operating System and Platform
+
+This chapter discusses tuning the operating system (OS) for optimum
+performance. It discusses the following topics:
+
+* link:#abeis[Server Scaling]
+* link:#gfpzp[Solaris 10 Platform-Specific Tuning Information]
+* link:#abeix[Tuning for the Solaris OS]
+* link:#abeje[Tuning for Solaris on x86]
+* link:#abeji[Tuning for Linux platforms]
+* link:#gfpzh[Tuning UltraSPARC CMT-Based Systems]
+
+[[abeis]][[GSPTG00074]][[server-scaling]]
+
+=== Server Scaling
+
+This section provides recommendations for optimal performance scaling
+server for the following server subsystems:
+
+* link:#abeit[Processors]
+* link:#abeiu[Memory]
+* link:#abeiv[Disk Space]
+* link:#abeiw[Networking]
+* link:#glglf[UDP Buffer Sizes]
+
+[[abeit]][[GSPTG00210]][[processors]]
+
+==== Processors
+
+The {productName} automatically takes advantage of multiple CPUs. In
+general, the effectiveness of multiple CPUs varies with the operating
+system and the workload, but more processors will generally improve
+dynamic content performance.
+
+Static content involves mostly input/output (I/O) rather than CPU
+activity. If the server is tuned properly, increasing primary memory
+will increase its content caching and thus increase the relative amount
+of time it spends in I/O versus CPU activity. Studies have shown that
+doubling the number of CPUs increases servlet performance by 50 to 80
+percent.
+
+[[abeiu]][[GSPTG00211]][[memory]]
+
+==== Memory
+
+See the section Hardware and Software Requirements in the {productName} Release Notes for specific memory recommendations for each
+supported operating system.
+
+[[abeiv]][[GSPTG00212]][[disk-space]]
+
+==== Disk Space
+
+It is best to have enough disk space for the OS, document tree, and log
+files. In most cases 2GB total is sufficient.
+
+Put the OS, swap/paging file, {productName} logs, and document tree
+each on separate hard drives. This way, if the log files fill up the log
+drive, the OS does not suffer. Also, its easy to tell if the OS paging
+file is causing drive activity, for example.
+
+OS vendors generally provide specific recommendations for how much swap
+or paging space to allocate. Based on Oracle testing, {productName}
+performs best with swap space equal to RAM, plus enough to map the
+document tree.
+
+[[abeiw]][[GSPTG00213]][[networking]]
+
+==== Networking
+
+To determine the bandwidth the application needs, determine the
+following values:
+
+* The number of peak concurrent users (N ~peak~) the server needs to
+handle.
+* The average request size on your site, r. The average request can
+include multiple documents. When in doubt, use the home page and all its
+associated files and graphics.
+* Decide how long, t, the average user will be willing to wait for a
+document at peak utilization.
+
+Then, the bandwidth required is:
+
+N~peak~r / t
+
+For example, to support a peak of 50 users with an average document size
+of 24 Kbytes, and transferring each document in an average of 5 seconds,
+requires 240 Kbytes (1920 Kbit/s). So the site needs two T1 lines (each
+1544 Kbit/s). This bandwidth also allows some overhead for growth.
+
+The server's network interface card must support more than the WAN to
+which it is connected. For example, if you have up to three T1 lines,
+you can get by with a 10BaseT interface. Up to a T3 line (45 Mbit/s),
+you can use 100BaseT. But if you have more than 50 Mbit/s of WAN
+bandwidth, consider configuring multiple 100BaseT interfaces, or look at
+Gigabit Ethernet technology.
+
+[[glglf]][[GSPTG00214]][[udp-buffer-sizes]]
+
+==== UDP Buffer Sizes
+
+{productName} uses User Datagram Protocol (UDP) for the transmission
+of multicast messages to {productName} instances in a cluster. For
+peak performance from a {productName} cluster that uses UDP
+multicast, limit the need to retransmit UDP messages. To limit the need
+to retransmit UDP messages, set the size of the UDP buffer to avoid
+excessive UDP datagram loss.
+
+[[sthref13]][[to-determine-an-optimal-udp-buffer-size]]
+
+===== To Determine an Optimal UDP Buffer Size
+
+The size of UDP buffer that is required to prevent excessive UDP
+datagram loss depends on many factors, such as:
+
+* The number of instances in the cluster
+* The number of instances on each host
+* The number of processors
+* The amount of memory
+* The speed of the hard disk for virtual memory
+
+If only one instance is running on each host in your cluster, the
+default UDP buffer size should suffice. If several instances are running
+on each host, determine whether the UDP buffer is large enough by
+testing for the loss of UDP packets.
+
+
+[NOTE]
+====
+On Linux systems, the default UDP buffer size might be insufficient even
+if only one instance is running on each host. In this situation, set the
+UDP buffer size as explained in link:#glglz[To Set the UDP Buffer Size
+on Linux Systems].
+====
+
+
+[[glgiw]]
+
+1. Ensure that no {productName} clusters are running.
++
+If necessary, stop any running clusters as explained in
+"link:ha-administration-guide/instances.html#GSHAG00110[To Stop a Cluster]"
+in {productName} High Availability Administration Guide.
+
+2. Determine the absolute number of lost UDP packets when no clusters
+are running.
++
+How you determine the number of lost packets depends on the operating
+system. For example:
+
+* On Linux systems, use the `netstat -su` command and look for the
+`packet receive errors` count in the `Udp` section.
+* On AIX systems, use the `netstat -s` command and look for the
+`fragments dropped (dup or out of space)` count in the `ip` section.
+
+3. Start all the clusters that are configured for your installation of
+{productName}.
++
+Start each cluster as explained in "link:ha-administration-guide/instances.html#GSHAG00109[To Start a
+Cluster]" in {productName} High Availability
+Administration Guide.
+
+4. Determine the absolute number of lost UDP packets after the clusters are started.
+
+5. If the difference in the number of lost packets is significant,
+increase the size of the UDP buffer.
+
+[[glglz]][[GSPTG00040]][[to-set-the-udp-buffer-size-on-linux-systems]]
+
+===== To Set the UDP Buffer Size on Linux Systems
+
+On Linux systems, a default UDP buffer size is set for the client, but
+not for the server. Therefore, on Linux systems, the UDP buffer size
+might have to be increased. Setting the UDP buffer size involves setting
+the following kernel parameters:
+
+* `net.core.rmem_max`
+* `net.core.wmem_max`
+* `net.core.rmem_default`
+* `net.core.wmem_default`
+
+Set the kernel parameters in the `/etc/sysctl.conf` file or at runtime.
+
+If you set the parameters in the `/etc/sysctl.conf` file, the settings
+are preserved when the system is rebooted. If you set the parameters at
+runtime, the settings are not preserved when the system is rebooted.
+
+* To set the parameters in the `/etc/sysctl.conf` file, add or edit the
+following lines in the file:
++
+[source]
+----
+net.core.rmem_max=rmem-max
+net.core.wmem_max=wmem-max
+net.core.rmem_default=rmem-default
+net.core.wmem_default=wmem-default
+----
+* To set the parameters at runtime, use the sysctl command.
++
+[source]
+----
+$ /sbin/sysctl -w net.core.rmem_max=rmem-max \
+net.core.wmem_max=wmem-max \
+net.core.rmem_default=rmem-default \
+net.core.wmem_default=wmem-default
+----
+
+[[sthref14]]
+
+Example 5-1 Setting the UDP Buffer Size in the `/etc/sysctl.conf` File
+
+This example shows the lines in the `/etc/sysctl.conf` file for setting
+the kernel parameters for controlling the UDP buffer size to 524288.
+
+[source]
+----
+net.core.rmem_max=524288
+net.core.wmem_max=524288
+net.core.rmem_default=524288
+net.core.wmem_default=524288
+----
+
+[[GSPTG00034]][[glgjp]]
+Example 5-2 Setting the UDP Buffer Size at Runtime
+
+This example sets the kernel parameters for controlling the UDP buffer
+size to 524288 at runtime.
+
+[source]
+----
+$ /sbin/sysctl -w net.core.rmem_max=524288 \
+net.core.wmem_max=52428 \
+net.core.rmem_default=52428 \
+net.core.wmem_default=524288
+net.core.rmem_max = 524288
+net.core.wmem_max = 52428
+net.core.rmem_default = 52428
+net.core.wmem_default = 524288
+----
+
+[[gfpzp]][[GSPTG00075]][[solaris-10-platform-specific-tuning-information]]
+
+=== Solaris 10 Platform-Specific Tuning Information
+
+Solaris Dynamic Tracing (DTrace) is a comprehensive dynamic tracing
+framework for the Solaris Operating System (OS). You can use the DTrace
+Toolkit to monitor the system. The DTrace Toolkit is available through
+the OpenSolaris project from the
+http://hub.opensolaris.org/bin/view/Community+Group+dtrace/dtracetoolkit[DTraceToolkit
+page]
+(`http://hub.opensolaris.org/bin/view/Community+Group+dtrace/dtracetoolkit`).
+
+[[abeix]][[GSPTG00076]][[tuning-for-the-solaris-os]]
+
+=== Tuning for the Solaris OS
+
+* link:#abeiy[Tuning Parameters]
+* link:#abeja[File Descriptor Setting]
+
+[[abeiy]][[GSPTG00215]][[tuning-parameters]]
+
+==== Tuning Parameters
+
+Tuning Solaris TCP/IP settings benefits programs that open and close
+many sockets. Since the {productName} operates with a small fixed set
+of connections, the performance gain might not be significant.
+
+The following table shows Solaris tuning parameters that affect
+performance and scalability benchmarking. These values are examples of
+how to tune your system for best performance.
+
+[[sthref15]][[gacmm]]
+
+Table 5-1 Tuning Parameters for Solaris
+
+[width="100%",cols="<25%,<16%,<10%,<10%,<30%",options="header",]
+|===
+|Parameter |Scope |Default |Tuned |Comments
+|`rlim_fd_max`
+|`/etc/system`
+|65536
+|65536
+|Limit of process open file descriptors.
+Set to account for expected load (for associated sockets, files, and pipes if any).
+
+|`rlim_fd_cur`
+|`/etc/system`
+|1024
+|8192
+|
+
+
+|
+`sq_max_size`
+|`/etc/system`
+|2
+|0
+|Controls streams driver queue size;
+setting to 0 makes it infinite so the performance runs won't be hit by
+lack of buffer space. Set on clients too. Note that setting
+`sq_max_size` to 0 might not be optimal for production systems with high
+network traffic.
+
+|`tcp_close_wait_interval`
+|`ndd /dev/tcp`
+|240000
+|60000
+|Set on clients too.
+
+|`tcp_time_wait_interval`
+|`ndd /dev/tcp`
+|240000
+|60000
+|Set on clients too.
+
+|`tcp_conn_req_max_q`
+|`ndd /dev/tcp`
+|128
+|1024
+|
+
+|`tcp_conn_req_max_q0`
+|`ndd /dev/tcp`
+|1024
+|4096
+|
+
+|`tcp_ip_abort_interval`
+|`ndd /dev/tcp`
+|480000
+|60000
+|
+
+|`tcp_keepalive_interval`
+|`ndd /dev/tcp`
+|7200000
+|900000
+|For high traffic web sites, lower this value.
+
+|`tcp_rexmit_interval_initial`
+|`ndd /dev/tcp`
+|3000
+|3000
+|If retransmission is greater than 30-40%, you should increase this value.
+
+|`tcp_rexmit_interval_max`
+|`ndd /dev/tcp`
+|240000
+|10000
+|
+
+|`tcp_rexmit_interval_min`
+|`ndd /dev/tcp`
+|200
+|3000
+|
+
+|`tcp_smallest_anon_port`
+|`ndd /dev/tcp`
+|32768
+|1024
+|Set on clients too.
+
+|`tcp_slow_start_initial`
+|`ndd /dev/tcp`
+|1
+|2
+|Slightly faster transmission of small amounts of data.
+
+|`tcp_xmit_hiwat`
+|`ndd /dev/tcp`
+|8129
+|32768
+|Size of transmit buffer.
+
+|`tcp_recv_hiwat`
+|`ndd /dev/tcp`
+|8129
+|32768
+|Size of receive buffer.
+
+|`tcp_conn_hash_size`
+|`ndd /dev/tcp`
+|512
+|8192
+|Size of connection hash table. See link:#abeiz[Sizing the Connection Hash Table].
+|===
+
+
+[[abeiz]][[GSPTG00153]][[sizing-the-connection-hash-table]]
+
+===== Sizing the Connection Hash Table
+
+The connection hash table keeps all the information for active TCP
+connections. Use the following command to get the size of the connection
+hash table:
+
+[source]
+----
+ndd -get /dev/tcp tcp_conn_hash
+----
+
+This value does not limit the number of connections, but it can cause
+connection hashing to take longer. The default size is 512.
+
+To make lookups more efficient, set the value to half of the number of
+concurrent TCP connections that are expected on the server. You can set
+this value only in `/etc/system`, and it becomes effective at boot time.
+
+Use the following command to get the current number of TCP connections.
+
+[source]
+----
+netstat -nP tcp|wc -l
+----
+
+[[abeja]][[GSPTG00216]][[file-descriptor-setting]]
+
+==== File Descriptor Setting
+
+On the Solaris OS, setting the maximum number of open files property
+using `ulimit` has the biggest impact on efforts to support the maximum
+number of RMI/IIOP clients.
+
+To increase the hard limit, add the following command to `/etc/system`
+and reboot it once:
+
+[source]
+----
+set rlim_fd_max = 8192
+----
+
+Verify this hard limit by using the following command:
+
+[source]
+----
+ulimit -a -H
+----
+
+Once the above hard limit is set, increase the value of this property
+explicitly (up to this limit) using the following command:
+
+[source]
+----
+ulimit -n 8192
+----
+
+Verify this limit by using the following command:
+
+[source]
+----
+ulimit -a
+----
+
+For example, with the default `ulimit` of 64, a simple test driver can
+support only 25 concurrent clients, but with `ulimit` set to 8192, the
+same test driver can support 120 concurrent clients. The test driver
+spawned multiple threads, each of which performed a JNDI lookup and
+repeatedly called the same business method with a think (delay) time of
+500 ms between business method calls, exchanging data of about 100 KB.
+These settings apply to RMI/IIOP clients on the Solaris OS.
+
+[[abeje]][[GSPTG00077]][[tuning-for-solaris-on-x86]]
+
+=== Tuning for Solaris on x86
+
+The following are some options to consider when tuning Solaris on x86
+for {productName}:
+
+* link:#abejg[File Descriptors]
+* link:#abejh[IP Stack Settings]
+
+Some of the values depend on the system resources available. After
+making any changes to `/etc/system`, reboot the machines.
+
+[[abejg]][[GSPTG00217]][[file-descriptors]]
+
+==== File Descriptors
+
+Add (or edit) the following lines in the `/etc/system` file:
+
+[source]
+----
+set rlim_fd_max=65536
+set rlim_fd_cur=65536
+set sq_max_size=0
+set tcp:tcp_conn_hash_size=8192
+set autoup=60
+set pcisch:pci_stream_buf_enable=0
+----
+
+These settings affect the file descriptors.
+
+[[abejh]][[GSPTG00218]][[ip-stack-settings]]
+
+==== IP Stack Settings
+
+Add (or edit) the following lines in the `/etc/system` file:
+
+[source]
+----
+set ip:tcp_squeue_wput=1
+set ip:tcp_squeue_close=1
+set ip:ip_squeue_bind=1
+set ip:ip_squeue_worker_wait=10
+set ip:ip_squeue_profile=0
+----
+
+These settings tune the IP stack.
+
+To preserve the changes to the file between system reboots, place the
+following changes to the default TCP variables in a startup script that
+gets executed when the system reboots:
+
+[source]
+----
+ndd -set /dev/tcp tcp_time_wait_interval 60000
+ndd -set /dev/tcp tcp_conn_req_max_q 16384
+ndd -set /dev/tcp tcp_conn_req_max_q0 16384
+ndd -set /dev/tcp tcp_ip_abort_interval 60000
+ndd -set /dev/tcp tcp_keepalive_interval 7200000
+ndd -set /dev/tcp tcp_rexmit_interval_initial 4000
+ndd -set /dev/tcp tcp_rexmit_interval_min 3000
+ndd -set /dev/tcp tcp_rexmit_interval_max 10000
+ndd -set /dev/tcp tcp_smallest_anon_port 32768
+ndd -set /dev/tcp tcp_slow_start_initial 2
+ndd -set /dev/tcp tcp_xmit_hiwat 32768
+ndd -set /dev/tcp tcp_recv_hiwat 32768
+----
+
+[[abeji]][[GSPTG00078]][[tuning-for-linux-platforms]]
+
+=== Tuning for Linux platforms
+
+To tune for maximum performance on Linux, you need to make adjustments
+to the following:
+
+* link:#gkvjl[Startup Files]
+* link:#abejj[File Descriptors]
+* link:#abejk[Virtual Memory]
+* link:#abejl[Network Interface]
+* link:#abejm[Disk I/O Settings]
+* link:#abejn[TCP/IP Settings]
+
+[[gkvjl]][[GSPTG00219]][[startup-files]]
+
+==== Startup Files
+
+The following parameters must be added to the `/etc/rc.d/rc.local` file
+that gets executed during system startup.
+
+[source]
+----
+<-- begin
+#max file count updated ~256 descriptors per 4Mb.
+Specify number of file descriptors based on the amount of system RAM.
+echo "6553"> /proc/sys/fs/file-max
+#inode-max 3-4 times the file-max
+#file not present!!!!!
+#echo"262144"> /proc/sys/fs/inode-max
+#make more local ports available
+echo 1024 25000> /proc/sys/net/ipv4/ip_local_port_range
+#increase the memory available with socket buffers
+echo 2621143> /proc/sys/net/core/rmem_max
+echo 262143> /proc/sys/net/core/rmem_default
+#above configuration for 2.4.X kernels
+echo 4096 131072 262143> /proc/sys/net/ipv4/tcp_rmem
+echo 4096 13107262143> /proc/sys/net/ipv4/tcp_wmem
+#disable "RFC2018 TCP Selective Acknowledgements," and
+"RFC1323 TCP timestamps" echo 0> /proc/sys/net/ipv4/tcp_sack
+echo 0> /proc/sys/net/ipv4/tcp_timestamps
+#double maximum amount of memory allocated to shm at runtime
+echo "67108864"> /proc/sys/kernel/shmmax
+#improve virtual memory VM subsystem of the Linux
+echo "100 1200 128 512 15 5000 500 1884 2"> /proc/sys/vm/bdflush
+#we also do a sysctl
+sysctl -p /etc/sysctl.conf
+-- end -->
+----
+
+Additionally, create an `/etc/sysctl.conf` file and append it with the
+following values:
+
+[source]
+----
+<-- begin
+#Disables packet forwarding
+net.ipv4.ip_forward = 0
+#Enables source route verification
+net.ipv4.conf.default.rp_filter = 1
+#Disables the magic-sysrq key
+kernel.sysrq = 0
+fs.file-max=65536
+vm.bdflush = 100 1200 128 512 15 5000 500 1884 2
+net.ipv4.ip_local_port_range = 1024 65000
+net.core.rmem_max= 262143
+net.core.rmem_default = 262143
+net.ipv4.tcp_rmem = 4096 131072 262143
+net.ipv4.tcp_wmem = 4096 131072 262143
+net.ipv4.tcp_sack = 0
+net.ipv4.tcp_timestamps = 0
+kernel.shmmax = 67108864
+----
+
+[[abejj]][[GSPTG00220]][[file-descriptors-1]]
+
+==== File Descriptors
+
+You may need to increase the number of file descriptors from the
+default. Having a higher number of file descriptors ensures that the
+server can open sockets under high load and not abort requests coming in
+from clients.
+
+Start by checking system limits for file descriptors with this command:
+
+[source]
+----
+cat /proc/sys/fs/file-max
+8192
+----
+
+The current limit shown is 8192. To increase it to 65535, use the
+following command (as root):
+
+[source]
+----
+echo "65535"> /proc/sys/fs/file-max
+----
+
+To make this value to survive a system reboot, add it to
+`/etc/sysctl.conf` and specify the maximum number of open files
+permitted:
+
+[source]
+----
+fs.file-max = 65535
+----
+
+Note that the parameter is not `proc.sys.fs.file-max`, as one might
+expect.
+
+To list the available parameters that can be modified using `sysctl`:
+
+[source]
+----
+sysctl -a
+----
+
+To load new values from the `sysctl.conf` file:
+
+[source]
+----
+sysctl -p /etc/sysctl.conf
+----
+
+To check and modify limits per shell, use the following command:
+
+[source]
+----
+limit
+----
+
+The output will look something like this:
+
+[source]
+----
+cputime         unlimited
+filesize        unlimited
+datasize        unlimited
+stacksize       8192 kbytes
+coredumpsize    0 kbytes
+memoryuse       unlimited
+descriptors     1024
+memorylocked    unlimited
+maxproc         8146
+openfiles       1024
+----
+
+The `openfiles` and `descriptors` show a limit of 1024. To increase the
+limit to 65535 for all users, edit `/etc/security/limits.conf` as root,
+and modify or add the `nofile` setting (number of file) entries:
+
+[source]
+----
+*         soft    nofile                     65535
+*         hard    nofile                     65535
+----
+
+The character "`*`" is a wildcard that identifies all users. You could
+also specify a user ID instead.
+
+Then edit `/etc/pam.d/login` and add the line:
+
+[source]
+----
+session required /lib/security/pam_limits.so
+----
+
+On Red Hat, you also need to edit `/etc/pam.d/sshd` and add the
+following line:
+
+[source]
+----
+session required /lib/security/pam_limits.so
+----
+
+On many systems, this procedure will be sufficient. Log in as a regular
+user and try it before doing the remaining steps. The remaining steps
+might not be required, depending on how pluggable authentication modules
+(PAM) and secure shell (SSH) are configured.
+
+[[abejk]][[GSPTG00221]][[virtual-memory]]
+
+==== Virtual Memory
+
+To change virtual memory settings, add the following to `/etc/rc.local`:
+
+[source]
+----
+echo 100 1200 128 512 15 5000 500 1884 2> /proc/sys/vm/bdflush
+----
+
+For more information, view the man pages for `bdflush`.
+
+[[abejl]][[GSPTG00222]][[network-interface]]
+
+==== Network Interface
+
+To ensure that the network interface is operating in full duplex mode,
+add the following entry into `/etc/rc.local`:
+
+[source]
+----
+mii-tool -F 100baseTx-FD eth0
+----
+
+where eth0 is the name of the network interface card (NIC).
+
+[[abejm]][[GSPTG00223]][[disk-io-settings]]
+
+==== Disk I/O Settings
+
+ 
+
+[[gaclw]][[GSPTG00041]][[to-tune-disk-io-performance-for-non-scsi-disks]]
+
+===== To tune disk I/O performance for non SCSI disks
+
+1. Test the disk speed.
++
+Use this command:
++
+[source]
+----
+/sbin/hdparm -t /dev/hdX
+----
+
+2. Enable direct memory access (DMA).
++
+Use this command:
++
+[source]
+----
+/sbin/hdparm -d1 /dev/hdX
+----
+
+3. Check the speed again using the `hdparm` command.
++
+Given that DMA is not enabled by default, the transfer rate might have
+improved considerably. In order to do this at every reboot, add the
+`/sbin/hdparm -d1 /dev/hdX` line to `/etc/conf.d/local.start`,
+`/etc/init.d/rc.local`, or whatever the startup script is called.
++
+For information on SCSI disks, see:
+http://people.redhat.com/alikins/system_tuning.html#scsi[System Tuning
+for Linux Servers — SCSI]
+(`http://people.redhat.com/alikins/system_tuning.html#scsi`).
+
+[[abejn]][[GSPTG00224]][[tcpip-settings]]
+
+==== TCP/IP Settings
+
+ 
+
+[[gacmd]][[GSPTG00042]][[to-tune-the-tcpip-settings]]
+
+===== To tune the TCP/IP settings
+
+1. Add the following entry to `/etc/rc.local`
++
+[source]
+----
+echo 30> /proc/sys/net/ipv4/tcp_fin_timeout
+echo 60000> /proc/sys/net/ipv4/tcp_keepalive_time
+echo 15000> /proc/sys/net/ipv4/tcp_keepalive_intvl
+echo 0> /proc/sys/net/ipv4/tcp_window_scaling
+----
+
+2. Add the following to `/etc/sysctl.conf`
++
+[source]
+----
+# Disables packet forwarding
+net.ipv4.ip_forward = 0
+# Enables source route verification
+net.ipv4.conf.default.rp_filter = 1
+# Disables the magic-sysrq key
+kernel.sysrq = 0
+net.ipv4.ip_local_port_range = 1204 65000
+net.core.rmem_max = 262140
+net.core.rmem_default = 262140
+net.ipv4.tcp_rmem = 4096 131072 262140
+net.ipv4.tcp_wmem = 4096 131072 262140
+net.ipv4.tcp_sack = 0
+net.ipv4.tcp_timestamps = 0
+net.ipv4.tcp_window_scaling = 0
+net.ipv4.tcp_keepalive_time = 60000
+net.ipv4.tcp_keepalive_intvl = 15000
+net.ipv4.tcp_fin_timeout = 30
+----
+
+3. Add the following as the last entry in `/etc/rc.local`
++
+[source]
+----
+sysctl -p /etc/sysctl.conf
+----
+
+4. Reboot the system.
+5. Use this command to increase the size of the transmit buffer:
++
+[source]
+----
+tcp_recv_hiwat ndd /dev/tcp 8129 32768
+----
+
+[[gfpzh]][[GSPTG00079]][[tuning-ultrasparc-cmt-based-systems]]
+
+=== Tuning UltraSPARC CMT-Based Systems
+
+Use a combination of tunable parameters and other parameters to tune
+UltraSPARC CMT-based systems. These values are an example of how you
+might tune your system to achieve the desired result.
+
+[[gfpzv]][[GSPTG00225]][[tuning-operating-system-and-tcp-settings]]
+
+==== Tuning Operating System and TCP Settings
+
+The following table shows the operating system tuning for Solaris 10
+used when benchmarking for performance and scalability on UtraSPARC
+CMT-based systems (64-bit systems).
+
+[[sthref16]][[gkuaa]]
+
+Table 5-2 Tuning 64-bit Systems for Performance Benchmarking
+
+[width="100%",cols="<25%,<20%,<10%,<10%,<30%",options="header",]
+|===
+|Parameter |Scope |Default |Tuned |Comments
+
+|`rlim_fd_max`
+|`/etc/system`
+|65536
+|260000
+|Process open file descriptors limit;
+should account for the expected load
+(for the associated sockets, files, pipes if any).
+
+|`hires_tick`
+|`/etc/system`
+|
+|1
+|
+
+|`sq_max_size`
+|`/etc/system`
+|2
+|0
+|Controls streams driver queue size;
+setting to 0 makes it infinite so the performance runs won't be hit by
+lack of buffer space. Set on clients too. Note that setting
+`sq_max_size` to 0 might not be optimal for production systems with high
+network traffic.
+
+|`ip:ip_squeue_bind`
+|
+|
+|0
+|
+
+|`ip:ip_squeue_fanout`
+|
+|
+|1
+|
+
+|`ipge:ipge_taskq_disable`
+|`/etc/system`
+|
+|0
+|
+
+|`ipge:ipge_tx_ring_size`
+|`/etc/system`
+|
+|2048
+|
+
+|`ipge:ipge_srv_fifo_depth`
+|`/etc/system`
+|
+|2048
+|
+
+|`ipge:ipge_bcopy_thresh`
+|`/etc/system`
+|
+|384
+|
+
+|`ipge:ipge_dvma_thresh`
+|`/etc/system`
+|
+|384
+|
+
+|`ipge:ipge_tx_syncq`
+|`/etc/system`
+|
+|1
+|
+
+|`tcp_conn_req_max_q`
+|`ndd /dev/tcp`
+|128
+|3000
+|
+
+|`tcp_conn_req_max_q0`
+|`ndd /dev/tcp`
+|1024
+|3000
+|
+
+|`tcp_max_buf`
+|`ndd /dev/tcp`
+|
+|4194304
+|
+
+|`tcp_cwnd_max`
+|`ndd/dev/tcp`
+|
+|2097152
+|
+
+|`tcp_xmit_hiwat`
+|`ndd /dev/tcp`
+|8129
+|400000
+|To increase the transmit buffer.
+
+|`tcp_recv_hiwat`
+|`ndd /dev/tcp`
+|8129
+|400000
+|To increase the receive buffer.
+|===
+
+
+Note that the IPGE driver version is 1.25.25.
+
+[[gfpzm]][[GSPTG00226]][[disk-configuration]]
+
+==== Disk Configuration
+
+If HTTP access is logged, follow these guidelines for the disk:
+
+* Write access logs on faster disks or attached storage.
+* If running multiple instances, move the logs for each instance onto
+separate disks as much as possible.
+* Enable the disk read/write cache. Note that if you enable write cache
+on the disk, some writes might be lost if the disk fails.
+* Consider mounting the disks with the following options, which might
+yield better disk performance: `nologging`, `directio`, `noatime`.
+
+[[gfpzk]][[GSPTG00227]][[network-configuration]]
+
+==== Network Configuration
+
+If more than one network interface card is used, make sure the network
+interrupts are not all going to the same core. Run the following script
+to disable interrupts:
+
+[source]
+----
+allpsr=`/usr/sbin/psrinfo | grep -v off-line | awk '{ print $1 }'`
+   set $allpsr
+   numpsr=$#
+   while [ $numpsr -gt 0 ];
+   do
+       shift
+       numpsr=`expr $numpsr - 1`
+       tmp=1
+       while [ $tmp -ne 4 ];
+       do
+           /usr/sbin/psradm -i $1
+           shift
+           numpsr=`expr $numpsr - 1`
+           tmp=`expr $tmp + 1`
+       done
+   done
+----
+
+Put all network interfaces into a single group. For example:
+
+[source]
+----
+$ifconfig ipge0 group webserver
+$ifconfig ipge1 group webserver
+----
diff --git a/docs/performance-tuning-guide/src/main/jbake/assets/css/style.css b/docs/performance-tuning-guide/src/main/jbake/assets/css/style.css
deleted file mode 100644
index 25a16e4..0000000
--- a/docs/performance-tuning-guide/src/main/jbake/assets/css/style.css
+++ /dev/null
@@ -1,315 +0,0 @@
-/* CSS */
-/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
-/** 1. Set default font family to sans-serif. 2. Prevent iOS text size adjust after orientation change, without disabling user zoom. */
-html { font-family: sans-serif; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ }
-
-/* HTML5 display definitions ========================================================================== */
-/** Correct `block` display not defined for any HTML5 element in IE 8/9. Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox. Correct `block` display not defined for `main` in IE 11. */
-article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { display: block; }
-
-/** 1. Correct `inline-block` display not defined in IE 8/9. 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. */
-audio, canvas, progress, video { display: inline-block; /* 1 */ vertical-align: baseline; /* 2 */ }
-
-/** Prevent modern browsers from displaying `audio` without controls. Remove excess height in iOS 5 devices. */
-audio:not([controls]) { display: none; height: 0; }
-
-/** Address `[hidden]` styling not present in IE 8/9/10. Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. */
-[hidden], template { display: none; }
-
-/* Links ========================================================================== */
-/** Remove the gray background color from active links in IE 10. */
-a { background-color: transparent; }
-
-/** Improve readability when focused and also mouse hovered in all browsers. */
-a:active, a:hover { outline: 0; }
-
-/* Text-level semantics ========================================================================== */
-/** Address styling not present in IE 8/9/10/11, Safari, and Chrome. */
-abbr[title] { border-bottom: 1px dotted; }
-
-/** Address style set to `bolder` in Firefox 4+, Safari, and Chrome. */
-b, strong { font-weight: bold; }
-
-/** Address styling not present in Safari and Chrome. */
-dfn { font-style: italic; }
-
-/** Address variable `h1` font-size and margin within `section` and `article` contexts in Firefox 4+, Safari, and Chrome. */
-h1 { font-size: 2em; margin: 0.67em 0; }
-
-/** Address styling not present in IE 8/9. */
-mark { background: #ff0; color: #000; }
-
-/** Address inconsistent and variable font size in all browsers. */
-small { font-size: 80%; }
-
-/** Prevent `sub` and `sup` affecting `line-height` in all browsers. */
-sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }
-
-sup { top: -0.5em; }
-
-sub { bottom: -0.25em; }
-
-/* Embedded content ========================================================================== */
-/** Remove border when inside `a` element in IE 8/9/10. */
-img { border: 0; }
-
-/** Correct overflow not hidden in IE 9/10/11. */
-svg:not(:root) { overflow: hidden; }
-
-/* Grouping content ========================================================================== */
-/** Address margin not present in IE 8/9 and Safari. */
-figure { margin: 1em 40px; }
-
-/** Address differences between Firefox and other browsers. */
-hr { box-sizing: content-box; height: 0; }
-
-/** Contain overflow in all browsers. */
-pre { overflow: auto; }
-
-/** Address odd `em`-unit font size rendering in all browsers. */
-code, kbd, pre, samp { font-family: monospace, monospace; font-size: 1em; }
-
-/* Forms ========================================================================== */
-/** Known limitation: by default, Chrome and Safari on OS X allow very limited styling of `select`, unless a `border` property is set. */
-/** 1. Correct color not being inherited. Known issue: affects color of disabled elements. 2. Correct font properties not being inherited. 3. Address margins set differently in Firefox 4+, Safari, and Chrome. */
-button, input, optgroup, select, textarea { color: inherit; /* 1 */ font: inherit; /* 2 */ margin: 0; /* 3 */ }
-
-/** Address `overflow` set to `hidden` in IE 8/9/10/11. */
-button { overflow: visible; }
-
-/** Address inconsistent `text-transform` inheritance for `button` and `select`. All other form control elements do not inherit `text-transform` values. Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. Correct `select` style inheritance in Firefox. */
-button, select { text-transform: none; }
-
-/** 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls. 2. Correct inability to style clickable `input` types in iOS. 3. Improve usability and consistency of cursor style between image-type `input` and others. */
-button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ }
-
-/** Re-set default cursor for disabled elements. */
-button[disabled], html input[disabled] { cursor: default; }
-
-/** Remove inner padding and border in Firefox 4+. */
-button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; }
-
-/** Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet. */
-input { line-height: normal; }
-
-/** It's recommended that you don't attempt to style these elements. Firefox's implementation doesn't respect box-sizing, padding, or width.  1. Address box sizing set to `content-box` in IE 8/9/10. 2. Remove excess padding in IE 8/9/10. */
-input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ }
-
-/** Fix the cursor style for Chrome's increment/decrement buttons. For certain `font-size` values of the `input`, it causes the cursor style of the decrement button to change from `default` to `text`. */
-input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { height: auto; }
-
-/** 1. Address `appearance` set to `searchfield` in Safari and Chrome. 2. Address `box-sizing` set to `border-box` in Safari and Chrome (include `-moz` to future-proof). */
-input[type="search"] { -webkit-appearance: textfield; /* 1 */ /* 2 */ box-sizing: content-box; }
-
-/** Remove inner padding and search cancel button in Safari and Chrome on OS X. Safari (but not Chrome) clips the cancel button when the search input has padding (and `textfield` appearance). */
-input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; }
-
-/** Define consistent border, margin, and padding. */
-fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; }
-
-/** 1. Correct `color` not being inherited in IE 8/9/10/11. 2. Remove padding so people aren't caught out if they zero out fieldsets. */
-legend { border: 0; /* 1 */ padding: 0; /* 2 */ }
-
-/** Remove default vertical scrollbar in IE 8/9/10/11. */
-textarea { overflow: auto; }
-
-/** Don't inherit the `font-weight` (applied by a rule above). NOTE: the default cannot safely be changed in Chrome and Safari on OS X. */
-optgroup { font-weight: bold; }
-
-/* Tables ========================================================================== */
-/** Remove most spacing between table cells. */
-table { border-collapse: collapse; border-spacing: 0; }
-
-td, th { padding: 0; }
-
-/* LAYOUT STYLES */
-
-p { margin-top: 0; }
-
-code, pre { margin-bottom: 30px; font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace; font-size: 13px; color: #222; }
-
-code { padding: 0 3px; background-color: #f2f8fc; border: solid 1px #dbe7f3; }
-
-pre { padding: 20px; overflow: auto; text-shadow: none; background: #fff; border: solid 1px #f2f2f2; }
-
-pre code { padding: 0; color: #2879d0; background-color: #fff; border: none; }
-
-ul, ol, dl { margin-bottom: 20px; }
-
-/* COMMON STYLES */
-
-td.halign-right { text-align: right; } 
-
-td.halign-center { text-align: center; } 
-
-form { padding: 20px; background: #f2f2f2; }
-
-h2 { 
-   font-size: 2em;
-   line-height: 1.2em;
-   font-weight: 200;
-   letter-spacing: 0;
-}
-
-h3 { 
-   font-size: 1.4em;
-   line-height: 1.2em;
-   font-weight: normal;
-   letter-spacing: 0;
-}
-
-.sect1 {
-   margin-left: 4%;
-   margin-right: 4%;
-   font: 13px/20px Arial, Helvetica, sans-serif  
-}
-
-a:link {
-   text-decoration: none;
-   color: #09569d;
-}
-
-#preamble hr{
-   margin-left: 0%;
-   margin-right: 0%;
-}
-
-#preamble .sectionbody table  {
-   font-weight: 200;
-   margin-left: 4%;
-   margin-right: 4%;
-}
-
-hr {
-   margin-bottom: 12px;
-}
-
-table.tableblock.frame-all.grid-all.spread {
-   font-size: 12px;
-}
-
-code {
-   font-size:.9em;
-   border: 1px solid #eaeaea;
-   background-color: #f6f6f6;
-   border-radius: 3px;
-   padding: 1px;
-   padding-left:2px;
-   padding-right:2px;
-}
-
-pre.prettyprint.highlight {
-   border: 1px solid #eaeaea;
-   background-color: #f6f6f6;
-   border-radius: 4px;
-   padding: 8px;
-   padding-top:4px;
-   padding-bottom:4px;
-}
-
-.language-oac_no_warn {
-   font-size:.9em;
-   color:#222;
-   background-color: transparent;
-}
-
-#doc-title {
-   margin-left: 4%;
-}
-
-#top-nav {
-   margin-left: 4%;
-   font-size: 12px;
-}
-
-#bottom-nav {
-   margin-left: 4%;
-   font-size: 12px;
-}
-
-.vector-font {
-   color:grey; 
-   font-size: 20px;
-}
-
-#copyright {
-   padding-top: 10px;
-   padding-bottom: 4px;
-   display: table;
-   margin:0 auto;
-   color: grey;
-   font-size: 12px;
-   vertical-align: middle;
-}
-
-.beta {color: #FF0000}
-
-/* GENERAL ELEMENT TYPE STYLES */
-
-/* #Media Queries
-================================================== */
-/* Smaller than standard 960 (devices and browsers) */
-/* Tablet Portrait size to standard 960 (devices and browsers) */
-@media only screen and (min-width: 768px) and (max-width: 959px) { .inner { width: 740px; }
-  header h1, header h2 { width: 340px; }
-  header h1 { font-size: 60px; }
-  header h2 { font-size: 30px; }
-}
-/* All Mobile Sizes (devices and browser) */
-@media only screen and (max-width: 767px) { .inner { width: 93%; }
-  header { padding: 20px 0; }
-  header .inner { position: relative; }
-  header h1, header h2 { width: 100%; }
-  header h1 { font-size: 48px; }
-  header h2 { font-size: 24px; }
-  header a.button { position: relative; display: inline-block; width: auto; height: auto; padding: 5px 10px; margin-top: 15px; font-size: 13px; line-height: 1; color: #2879d0; text-align: center; background-color: #9ddcff; background-image: none; border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; }
-  header a.button small { display: inline; font-size: 13px; }
-}
-/* Mobile Landscape Size to Tablet Portrait (devices and browsers) */
-/* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */
-
-header h1 { padding-top: 14px; font-size: 2em; font-weight: 200; line-height: 1.4; color: #FFFFFF; letter-spacing: 0px; border-bottom: 0px; }
-
-header h2 { font-size: 1.2em; margin-top: 0; margin-bottom: 0; font-weight: 200; line-height: .8; color: #ec7D11; letter-spacing: 0; }
-
-/*
-header a.button { background: transparent url(../images/logo.png) 0 0 no-repeat; padding-left: 32px; }
-*/
-
-header a:hover { text-decoration: none; }
-
-/* Admonition (Note) block */
-.admonitionblock > table {
-  border: 0;
-  background: none;
-  width: 100%;
-  table-layout: auto;
-  margin-bottom: 10.5px;
-}
-.admonitionblock > table td.icon {
-  text-align: center;
-  width: 60px;
-}
-.admonitionblock > table td.icon img {
-  max-width: none;
-}
-.admonitionblock > table td.icon .title {
-  text-transform: uppercase;
-}
-.admonitionblock > table td.content {
-  padding-left: 1em;
-  padding-right: 1em;
-  border-left: 3px solid #ddd;
-}
-.admonitionblock > table td.content > :last-child > :last-child {
-  margin-bottom: 0;
-}
-.admonitionblock td.icon [class^="fa icon-"]:before {
-  font-size: 2.5em;
-  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
-  cursor: default;
-}
-.admonitionblock td.icon .icon-note:before {
-  content: "\f05a";
-  color: #5bc0de;
-}
diff --git a/docs/performance-tuning-guide/src/main/jbake/content/loe.adoc b/docs/performance-tuning-guide/src/main/jbake/content/loe.adoc
deleted file mode 100644
index a32c9da..0000000
--- a/docs/performance-tuning-guide/src/main/jbake/content/loe.adoc
+++ /dev/null
@@ -1,18 +0,0 @@
-type=page
-status=published
-title=List of Examples
-next=lof.html
-prev=toc.html
-~~~~~~
-List of Examples
-================
-
-[[list-of-examples]]
-List of Examples
-----------------
-
-* link:tuning-java.html#fxxpw[4-1 Heap Configuration on Solaris]
-* link:tuning-java.html#fxxpz[4-2 Heap Configuration on Windows]
-* link:tuning-os.html#sthref14[5-1 Setting the UDP Buffer Size in the
-/etc/sysctl.conf File]
-* link:tuning-os.html#glgjp[5-2 Setting the UDP Buffer Size at Runtime]
diff --git a/docs/performance-tuning-guide/src/main/jbake/content/lof.adoc b/docs/performance-tuning-guide/src/main/jbake/content/lof.adoc
deleted file mode 100644
index 0d5fdb0..0000000
--- a/docs/performance-tuning-guide/src/main/jbake/content/lof.adoc
+++ /dev/null
@@ -1,14 +0,0 @@
-type=page
-status=published
-title=List of Figures
-next=lot.html
-prev=loe.html
-~~~~~~
-List of Figures
-===============
-
-[[list-of-figures]]
-List of Figures
----------------
-
-* link:overview.html#gacmj[1-1 Java EE Application Model]
diff --git a/docs/performance-tuning-guide/src/main/jbake/content/lot.adoc b/docs/performance-tuning-guide/src/main/jbake/content/lot.adoc
deleted file mode 100644
index c821870..0000000
--- a/docs/performance-tuning-guide/src/main/jbake/content/lot.adoc
+++ /dev/null
@@ -1,22 +0,0 @@
-type=page
-status=published
-title=List of Tables
-next=title.html
-prev=lof.html
-~~~~~~
-List of Tables
-==============
-
-[[list-of-tables]]
-List of Tables
---------------
-
-* link:overview.html#gacmh[1-1 Performance Tuning Roadmap]
-* link:overview.html#gacmp[1-2 Factors That Affect Performance]
-* link:tuning-glassfish.html#gacmo[3-1 Bean Type Pooling or Caching]
-* link:tuning-glassfish.html#gacma[3-2 Tunable ORB Parameters]
-* link:tuning-glassfish.html#gacmi[3-3 Connection Pool Sizing]
-* link:tuning-java.html#gacna[4-1 Maximum Address Space Per Process]
-* link:tuning-os.html#gacmm[5-1 Tuning Parameters for Solaris]
-* link:tuning-os.html#gkuaa[5-2 Tuning 64-bit Systems for Performance
-Benchmarking]
diff --git a/docs/performance-tuning-guide/src/main/jbake/content/overview.adoc b/docs/performance-tuning-guide/src/main/jbake/content/overview.adoc
deleted file mode 100644
index 2e9f993..0000000
--- a/docs/performance-tuning-guide/src/main/jbake/content/overview.adoc
+++ /dev/null
@@ -1,547 +0,0 @@
-type=page
-status=published
-title=Overview of GlassFish Server Performance Tuning
-next=tuning-apps.html
-prev=preface.html
-~~~~~~
-Overview of GlassFish Server Performance Tuning
-===============================================
-
-[[GSPTG00003]][[giekg]]
-
-
-[[overview-of-glassfish-server-performance-tuning]]
-1 Overview of GlassFish Server Performance Tuning
--------------------------------------------------
-
-You can significantly improve performance of the Oracle GlassFish Server
-and of applications deployed to it by adjusting a few deployment and
-server configuration settings. However, it is important to understand
-the environment and performance goals. An optimal configuration for a
-production environment might not be optimal for a development
-environment.
-
-The following topics are addressed here:
-
-* link:#abear[Process Overview]
-* link:#abeat[Understanding Operational Requirements]
-* link:#abeba[General Tuning Concepts]
-* link:#abebd[Further Information]
-
-[[abear]][[GSPTG00048]][[process-overview]]
-
-Process Overview
-~~~~~~~~~~~~~~~~
-
-The following table outlines the overall GlassFish Server 4.0
-administration process, and shows where performance tuning fits in the
-sequence.
-
-[[sthref4]][[gacmh]]
-
-Table 1-1 Performance Tuning Roadmap
-
-[width="154%",cols="<40%,<28%,<32%",options="header",]
-|=======================================================================
-|Step |Description of Task |Location of Instructions
-|1 |Design: Decide on the high-availability topology and set up
-GlassFish Server. a|
-link:../deployment-planning-guide/toc.html#GSPLG[GlassFish Server Open Source Edition Deployment Planning
-Guide]
-
-
-|2 |Capacity Planning: Make sure the systems have sufficient resources
-to perform well. a|
-link:../deployment-planning-guide/toc.html#GSPLG[GlassFish Server Open Source Edition Deployment Planning
-Guide]
-
-
-|3 |Installation: Configure your DAS, clusters, and clustered server
-instances. a|
-link:../installation-guide/toc.html#GSING[GlassFish Server Open Source Edition Installation Guide]
-
-
-|4 |Deployment: Install and run your applications. Familiarize yourself
-with how to configure and administer the GlassFish Server. a|
-The following books:
-
-* link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition Application
-Deployment Guide]
-* link:../administration-guide/toc.html#GSADG[GlassFish Server Open Source Edition Administration Guide]
-
-|5 |High Availability Configuration: Configuring your DAS, clusters, and
-clustered server instances for high availability and failover a|
-link:../ha-administration-guide/toc.html#GSHAG[GlassFish Server Open Source Edition High Availability
-Administration Guide]
-
-
-|6 a|
-Performance Tuning: Tune the following items:
-
-* Applications
-* GlassFish Server
-* Java Runtime System
-* Operating system and platform
-
- a|
-The following chapters:
-
-* link:tuning-apps.html#abebe[Tuning Your Application]
-* link:tuning-glassfish.html#abedn[Tuning the GlassFish Server]
-* link:tuning-java.html#abeia[Tuning the Java Runtime System]
-* link:tuning-os.html#abeir[Tuning the Operating System and Platform]
-
-|=======================================================================
-
-
-[[abeas]][[GSPTG00035]][[performance-tuning-sequence]]
-
-Performance Tuning Sequence
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Application developers should tune applications prior to production use.
-Tuning applications often produces dramatic performance improvements.
-System administrators perform the remaining steps in the following list
-after tuning the application, or when application tuning has to wait and
-you want to improve performance as much as possible in the meantime.
-
-Ideally, follow this sequence of steps when you are tuning performance:
-
-1.  Tune your application, described in
-link:tuning-apps.html#abebe[Tuning Your Application].
-2.  Tune the server, described in link:tuning-glassfish.html#abedn[Tuning
-the GlassFish Server].
-3.  Tune the Java runtime system, described in
-link:tuning-java.html#abeia[Tuning the Java Runtime System].
-4.  Tune the operating system, described in
-link:tuning-os.html#abeir[Tuning the Operating System and Platform].
-
-[[abeat]][[GSPTG00049]][[understanding-operational-requirements]]
-
-Understanding Operational Requirements
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Before you begin to deploy and tune your application on the GlassFish
-Server, it is important to clearly define the operational environment.
-The operational environment is determined by high-level constraints and
-requirements such as:
-
-* link:#abeau[Application Architecture]
-* link:#abeav[Security Requirements]
-* link:#gkvjf[High Availability Clustering, Load Balancing, and
-Failover]
-* link:#abeay[Hardware Resources]
-* link:#abeaz[Administration]
-
-[[abeau]][[GSPTG00154]][[application-architecture]]
-
-Application Architecture
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-The Java EE Application model, as shown in the following figure, is very
-flexible; allowing the application architect to split application logic
-functionally into many tiers. The presentation layer is typically
-implemented using servlets and JSP technology and executes in the web
-container.
-
-[[GSPTG00001]][[gacmj]]
-
-
-.*Figure 1-1 Java EE Application Model*
-image:img/appmodel.png[
-"Java EE Application Mode"]
-
-
-Moderately complex enterprise applications can be developed entirely
-using servlets and JSP technology. More complex business applications
-often use Enterprise JavaBeans (EJB) components. The GlassFish Server
-integrates the Web and EJB containers in a single process. Local access
-to EJB components from servlets is very efficient. However, some
-application deployments may require EJB components to execute in a
-separate process; and be accessible from standalone client applications
-as well as servlets. Based on the application architecture, the server
-administrator can employ the GlassFish Server in multiple tiers, or
-simply host both the presentation and business logic on a single tier.
-
-It is important to understand the application architecture before
-designing a new GlassFish Server deployment, and when deploying a new
-business application to an existing application server deployment.
-
-[[abeav]][[GSPTG00155]][[security-requirements]]
-
-Security Requirements
-^^^^^^^^^^^^^^^^^^^^^
-
-Most business applications require security. This section discusses
-security considerations and decisions.
-
-[[abeaw]][[GSPTG00080]][[user-authentication-and-authorization]]
-
-User Authentication and Authorization
-+++++++++++++++++++++++++++++++++++++
-
-Application users must be authenticated. The GlassFish Server provides a
-number of choices for user authentication, including file-based,
-administration, LDAP, certificate, JDBC, digest, PAM, Solaris, and
-custom realms.
-
-The default file based security realm is suitable for developer
-environments, where new applications are developed and tested. At
-deployment time, the server administrator can choose between the
-Lighweight Directory Access Protocol (LDAP) or Solaris security realms.
-Many large enterprises use LDAP-based directory servers to maintain
-employee and customer profiles. Small to medium enterprises that do not
-already use a directory server may find it advantageous to leverage
-investment in Solaris security infrastructure.
-
-For more information on security realms, see
-"link:../security-guide/user-security.html#GSSCG00151[Administering Authentication Realms]" in GlassFish
-Server Open Source Edition Security Guide.
-
-The type of authentication mechanism chosen may require additional
-hardware for the deployment. Typically a directory server executes on a
-separate server, and may also require a backup for replication and high
-availability. Refer to the
-http://www.oracle.com/us/products/middleware/identity-management/oracle-directory-services/index.html[Oracle
-Java System Directory Server]
-(`http://www.oracle.com/us/products/middleware/identity-management/oracle-directory-services/index.html`)
-documentation for more information on deployment, sizing, and
-availability guidelines.
-
-An authenticated user's access to application functions may also need
-authorization checks. If the application uses the role-based Java EE
-authorization checks, the application server performs some additional
-checking, which incurs additional overheads. When you perform capacity
-planning, you must take this additional overhead into account.
-
-[[abeax]][[GSPTG00081]][[encryption]]
-
-Encryption
-++++++++++
-
-For security reasons, sensitive user inputs and application output must
-be encrypted. Most business-oriented web applications encrypt all or
-some of the communication flow between the browser and GlassFish Server.
-Online shopping applications encrypt traffic when the user is completing
-a purchase or supplying private data. Portal applications such as news
-and media typically do not employ encryption. Secure Sockets Layer (SSL)
-is the most common security framework, and is supported by many browsers
-and application servers.
-
-The GlassFish Server supports SSL 2.0 and 3.0 and contains software
-support for various cipher suites. It also supports integration of
-hardware encryption cards for even higher performance. Security
-considerations, particularly when using the integrated software
-encryption, will impact hardware sizing and capacity planning.
-
-Consider the following when assessing the encryption needs for a
-deployment:
-
-* What is the nature of the applications with respect to security? Do
-they encrypt all or only a part of the application inputs and output?
-What percentage of the information needs to be securely transmitted?
-* Are the applications going to be deployed on an application server
-that is directly connected to the Internet? Will a web server exist in a
-demilitarized zone (DMZ) separate from the application server tier and
-backend enterprise systems? +
-A DMZ-style deployment is recommended for high security. It is also
-useful when the application has a significant amount of static text and
-image content and some business logic that executes on the GlassFish
-Server, behind the most secure firewall. GlassFish Server provides
-secure reverse proxy plugins to enable integration with popular web
-servers. The GlassFish Server can also be deployed and used as a web
-server in DMZ.
-* Is encryption required between the web servers in the DMZ and
-application servers in the next tier? The reverse proxy plugins supplied
-with GlassFish Server support SSL encryption between the web server and
-application server tier. If SSL is enabled, hardware capacity planning
-must be take into account the encryption policy and mechanisms.
-* If software encryption is to be employed:
-
-** What is the expected performance overhead for every tier in the
-system, given the security requirements?
-
-** What are the performance and throughput characteristics of various
-choices?
-
-For information on how to encrypt the communication between web servers
-and GlassFish Server, see "link:../security-guide/message-security.html#GSSCG00037[Administering Message
-Security]" in GlassFish Server Open Source Edition Security Guide.
-
-[[gkvjf]][[GSPTG00156]][[high-availability-clustering-load-balancing-and-failover]]
-
-High Availability Clustering, Load Balancing, and Failover
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-GlassFish Server 4.0 enables multiple GlassFish Server instances to be
-clustered to provide high availability through failure protection,
-scalability, and load balancing.
-
-High availability applications and services provide their functionality
-continuously, regardless of hardware and software failures. To make such
-reliability possible, GlassFish Server 4.0 provides mechanisms for
-maintaining application state data between clustered GlassFish Server
-instances. Application state data, such as HTTP session data, stateful
-EJB sessions, and dynamic cache information, is replicated in real time
-across server instances. If any one server instance goes down, the
-session state is available to the next failover server, resulting in
-minimum application downtime and enhanced transactional security.
-
-GlassFish Server provides the following high availability features:
-
-* High Availability Session Persistence
-* High Availability Java Message Service
-* RMI-IIOP Load Balancing and Failover
-
-See link:tuning-java.html#glaat[Tuning High Availability Persistence] for
-high availability persistence tuning recommendations.
-
-See the link:../ha-administration-guide/toc.html#GSHAG[GlassFish Server Open Source Edition High
-Availability Administration Guide] for complete information about
-configuring high availability clustering, load balancing, and failover
-features in GlassFish Server 4.0.
-
-[[abeay]][[GSPTG00157]][[hardware-resources]]
-
-Hardware Resources
-^^^^^^^^^^^^^^^^^^
-
-The type and quantity of hardware resources available greatly influence
-performance tuning and site planning.
-
-GlassFish Server provides excellent vertical scalability. It can scale
-to efficiently utilize multiple high-performance CPUs, using just one
-application server process. A smaller number of application server
-instances makes maintenance easier and administration less expensive.
-Also, deploying several related applications on fewer application
-servers can improve performance, due to better data locality, and reuse
-of cached data between co-located applications. Such servers must also
-contain large amounts of memory, disk space, and network capacity to
-cope with increased load.
-
-GlassFish Server can also be deployed on large "farms" of relatively
-modest hardware units. Business applications can be partitioned across
-various server instances. Using one or more external load balancers can
-efficiently spread user access across all the application server
-instances. A horizontal scaling approach may improve availability, lower
-hardware costs and is suitable for some types of applications. However,
-this approach requires administration of more application server
-instances and hardware nodes.
-
-[[abeaz]][[GSPTG00158]][[administration]]
-
-Administration
-^^^^^^^^^^^^^^
-
-A single GlassFish Server installation on a server can encompass
-multiple instances. A group of one or more instances that are
-administered by a single Administration Server is called a domain.
-Grouping server instances into domains permits different people to
-independently administer the groups.
-
-You can use a single-instance domain to create a "sandbox" for a
-particular developer and environment. In this scenario, each developer
-administers his or her own application server, without interfering with
-other application server domains. A small development group may choose
-to create multiple instances in a shared administrative domain for
-collaborative development.
-
-In a deployment environment, an administrator can create domains based
-on application and business function. For example, internal Human
-Resources applications may be hosted on one or more servers in one
-Administrative domain, while external customer applications are hosted
-on several administrative domains in a server farm.
-
-GlassFish Server supports virtual server capability for web
-applications. For example, a web application hosting service provider
-can host different URL domains on a single GlassFish Server process for
-efficient administration.
-
-For detailed information on administration, see the
-link:../administration-guide/toc.html#GSADG[GlassFish Server Open Source Edition Administration Guide].
-
-[[abeba]][[GSPTG00050]][[general-tuning-concepts]]
-
-General Tuning Concepts
-~~~~~~~~~~~~~~~~~~~~~~~
-
-Some key concepts that affect performance tuning are:
-
-* User load
-* Application scalability
-* Margins of safety
-
-The following table describes these concepts, and how they are measured
-in practice. The left most column describes the general concept, the
-second column gives the practical ramifications of the concept, the
-third column describes the measurements, and the right most column
-describes the value sources.
-
-[[sthref6]][[gacmp]]
-
-Table 1-2 Factors That Affect Performance
-
-[width="100%",cols="<14%,<13%,<26%,<47%",options="header",]
-|=======================================================================
-|Concept |In practice |Measurement |Value sources
-|User Load |Concurrent sessions at peak load a|
-Transactions Per Minute (TPM)
-
-Web Interactions Per Second (WIPS)
-
- a|
-(Max. number of concurrent users) * (expected response time) / (time
-between clicks)
-
-Example:
-
-(100 users * 2 sec) / 10 sec = 20
-
-|Application Scalability |Transaction rate measured on one CPU |TPM or
-WIPS |Measured from workload benchmark. Perform at each tier.
-
-|Vertical scalability |Increase in performance from additional CPUs
-|Percentage gain per additional CPU |Based on curve fitting from
-benchmark. Perform tests while gradually increasing the number of CPUs.
-Identify the "knee" of the curve, where additional CPUs are providing
-uneconomical gains in performance. Requires tuning as described in this
-guide. Perform at each tier and iterate if necessary. Stop here if this
-meets performance requirements.
-
-|Horizontal scalability |Increase in performance from additional servers
-|Percentage gain per additional server process and/or hardware node.
-|Use a well-tuned single application server instance, as in previous
-step. Measure how much each additional server instance and hardware node
-improves performance.
-
-|Safety Margins |High availability requirements |If the system must cope
-with failures, size the system to meet performance requirements assuming
-that one or more application server instances are non functional
-|Different equations used if high availability is required.
-
-| + |Excess capacity for unexpected peaks |It is desirable to operate a
-server at less than its benchmarked peak, for some safety margin |80%
-system capacity utilization at peak loads may work for most
-installations. Measure your deployment under real and simulated peak
-loads.
-|=======================================================================
-
-
-[[abebb]][[GSPTG00159]][[capacity-planning]]
-
-Capacity Planning
-^^^^^^^^^^^^^^^^^
-
-The previous discussion guides you towards defining a deployment
-architecture. However, you determine the actual size of the deployment
-by a process called capacity planning. Capacity planning enables you to
-predict:
-
-* The performance capacity of a particular hardware configuration.
-* The hardware resources required to sustain specified application load
-and performance.
-
-You can estimate these values through careful performance benchmarking,
-using an application with realistic data sets and workloads.
-
-[[gacmz]][[GSPTG00036]][[to-determine-capacity]]
-
-To Determine Capacity
-+++++++++++++++++++++
-
-1.  Determine performance on a single CPU. +
-First determine the largest load that a single processor can sustain.
-You can obtain this figure by measuring the performance of the
-application on a single-processor machine. Either leverage the
-performance numbers of an existing application with similar processing
-characteristics or, ideally, use the actual application and workload in
-a testing environment. Make sure that the application and data resources
-are tiered exactly as they would be in the final deployment.
-2.  [[CEGHGCGI]]
-Determine vertical scalability.
-
-Determine how much additional performance you gain when you add
-processors. That is, you are indirectly measuring the amount of shared
-resource contention that occurs on the server for a specific workload.
-Either obtain this information based on additional load testing of the
-application on a multiprocessor system, or leverage existing information
-from a similar application that has already been load tested.
-
-Running a series of performance tests on one to eight CPUs, in
-incremental steps, generally provides a sense of the vertical
-scalability characteristics of the system. Be sure to properly tune the
-application, GlassFish Server, backend database resources, and operating
-system so that they do not skew the results.
-3.  Determine horizontal scalability. +
-If sufficiently powerful hardware resources are available, a single
-hardware node may meet the performance requirements. However for better
-availability, you can cluster two or more systems. Employing external
-load balancers and workload simulation, determine the performance
-benefits of replicating one well-tuned application server node, as
-determined in step link:#CEGHGCGI[2].
-
-[[abebc]][[GSPTG00160]][[user-expectations]]
-
-User Expectations
-^^^^^^^^^^^^^^^^^
-
-Application end-users generally have some performance expectations.
-Often you can numerically quantify them. To ensure that customer needs
-are met, you must understand these expectations clearly, and use them in
-capacity planning.
-
-Consider the following questions regarding performance expectations:
-
-* What do users expect the average response times to be for various
-interactions with the application? What are the most frequent
-interactions? Are there any extremely time-critical interactions? What
-is the length of each transaction, including think time? In many cases,
-you may need to perform empirical user studies to get good estimates.
-* What are the anticipated steady-state and peak user loads? Are there
-are any particular times of the day, week, or year when you observe or
-expect to observe load peaks? While there may be several million
-registered customers for an online business, at any one time only a
-fraction of them are logged in and performing business transactions. A
-common mistake during capacity planning is to use the total size of
-customer population as the basis and not the average and peak numbers
-for concurrent users. The number of concurrent users also may exhibit
-patterns over time.
-* What is the average and peak amount of data transferred per request?
-This value is also application-specific. Good estimates for content
-size, combined with other usage patterns, will help you anticipate
-network capacity needs.
-* What is the expected growth in user load over the next year? Planning
-ahead for the future will help avoid crisis situations and system
-downtimes for upgrades.
-
-[[abebd]][[GSPTG00051]][[further-information]]
-
-Further Information
-~~~~~~~~~~~~~~~~~~~
-
-* For more information on Java performance, see
-http://java.sun.com/docs/performance[Java Performance Documentation]
-(`http://java.sun.com/docs/performance`) and
-http://java.sun.com/blueprints/performance/index.html[Java Performance
-BluePrints] (`http://java.sun.com/blueprints/performance/index.html`).
-* For more information about performance tuning for high availability
-configurations, see the link:../ha-administration-guide/toc.html#GSHAG[GlassFish Server Open Source Edition
-High Availability Administration Guide].
-* For complete information about using the Performance Tuning features
-available through the GlassFish Server Administration Console, refer to
-the Administration Console online help.
-* For details on optimizing EJB components, see
-http://java.sun.com/developer/technicalArticles/ebeans/sevenrules/[Seven
-Rules for Optimizing Entity Beans]
-(`http://java.sun.com/developer/technicalArticles/ebeans/sevenrules/`)
-* For details on profiling, see "link:../application-development-guide/setting-up-dev-env.html#GSDVG00341[Profiling Tools]" in
-GlassFish Server Open Source Edition Application Development Guide.
-* To view a demonstration video showing how to use the GlassFish Server
-Performance Tuner, see the
-http://www.youtube.com/watch?v=FavsE2pzAjc[Oracle GlassFish Server 3.1 -
-Performance Tuner demo] (`http://www.youtube.com/watch?v=FavsE2pzAjc`).
-* To find additional Performance Tuning development information, see the
-http://blogs.oracle.com/jenblog/entry/performance_tuner_in_oracle_glassfish[Performance
-Tuner in Oracle GlassFish Server 3.1]
-(`http://blogs.oracle.com/jenblog/entry/performance_tuner_in_oracle_glassfish`)
-blog.
diff --git a/docs/performance-tuning-guide/src/main/jbake/content/preface.adoc b/docs/performance-tuning-guide/src/main/jbake/content/preface.adoc
deleted file mode 100644
index cdc98b1..0000000
--- a/docs/performance-tuning-guide/src/main/jbake/content/preface.adoc
+++ /dev/null
@@ -1,276 +0,0 @@
-type=page
-status=published
-title=Preface
-next=overview.html
-prev=title.html
-~~~~~~
-Preface
-=======
-
-[[GSPTG00002]][[pref]]
-
-
-[[preface]]
-Preface
--------
-
-[NOTE]
-========================================================================
-
-This documentation is part of the Java Enterprise Edition contribution 
-to the Eclipse Foundation and is not intended for use in relation to 
-Java Enterprise Edition or Orace GlassFish. The documentation is in the 
-process of being revised to reflect the new Jakarta EE branding. 
-Additional changes will be made as requirements and procedures evolve 
-for Jakarta EE. Where applicable, references to Java EE or Java 
-Enterprise Edition should be considered references to Jakarta EE. 
-
-Please see the Title page for additional license information.
-========================================================================
-
-The Performance Tuning Guide describes how to get the best performance
-with GlassFish Server 5.1.
-
-This preface contains information about and conventions for the entire
-Eclipse GlassFish Server (GlassFish Server) documentation
-set.
-
-GlassFish Server 5.1 is developed through the GlassFish project
-open-source community at `http://glassfish.java.net/`. The GlassFish
-project provides a structured process for developing the GlassFish
-Server platform that makes the new features of the Java EE platform
-available faster, while maintaining the most important feature of Java
-EE: compatibility. It enables Java developers to access the GlassFish
-Server source code and to contribute to the development of the GlassFish
-Server. The GlassFish project is designed to encourage communication
-between Oracle engineers and the community.
-
-[[GSPTG00043]][[gksfg]]
-
-
-[[oracle-glassfish-server-documentation-set]]
-Oracle GlassFish Server Documentation Set
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-[width="100%",cols="<30%,<70%",options="header",]
-|=======================================================================
-|Book Title |Description
-|link:../release-notes/toc.html#GSRLN[Release Notes] |Provides late-breaking information about
-the software and the documentation and includes a comprehensive,
-table-based summary of the supported hardware, operating system, Java
-Development Kit (JDK), and database drivers.
-
-|link:../quick-start-guide/toc.html#GSQSG[Quick Start Guide] |Explains how to get started with the
-GlassFish Server product.
-
-|link:../installation-guide/toc.html#GSING[Installation Guide] |Explains how to install the software
-and its components.
-
-|link:../upgrade-guide/toc.html#GSUPG[Upgrade Guide] |Explains how to upgrade to the latest
-version of GlassFish Server. This guide also describes differences
-between adjacent product releases and configuration options that can
-result in incompatibility with the product specifications.
-
-|link:../deployment-planning-guide/toc.html#GSPLG[Deployment Planning Guide] |Explains how to build a
-production deployment of GlassFish Server that meets the requirements of
-your system and enterprise.
-
-|link:../administration-guide/toc.html#GSADG[Administration Guide] |Explains how to configure, monitor,
-and manage GlassFish Server subsystems and components from the command
-line by using the link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`] utility. Instructions for
-performing these tasks from the Administration Console are provided in
-the Administration Console online help.
-
-|link:../security-guide/toc.html#GSSCG[Security Guide] |Provides instructions for configuring and
-administering GlassFish Server security.
-
-|link:../application-deployment-guide/toc.html#GSDPG[Application Deployment Guide] |Explains how to assemble and
-deploy applications to the GlassFish Server and provides information
-about deployment descriptors.
-
-|link:../application-development-guide/toc.html#GSDVG[Application Development Guide] |Explains how to create and
-implement Java Platform, Enterprise Edition (Java EE platform)
-applications that are intended to run on the GlassFish Server. These
-applications follow the open Java standards model for Java EE components
-and application programmer interfaces (APIs). This guide provides
-information about developer tools, security, and debugging.
-
-|link:../embedded-server-guide/toc.html#GSESG[Embedded Server Guide] |Explains how to run applications in
-embedded GlassFish Server and to develop applications in which GlassFish
-Server is embedded.
-
-|link:../ha-administration-guide/toc.html#GSHAG[High Availability Administration Guide] |Explains how to
-configure GlassFish Server to provide higher availability and
-scalability through failover and load balancing.
-
-|link:../performance-tuning-guide/toc.html#GSPTG[Performance Tuning Guide] |Explains how to optimize the
-performance of GlassFish Server.
-
-|link:../troubleshooting-guide/toc.html#GSTSG[Troubleshooting Guide] |Describes common problems that you
-might encounter when using GlassFish Server and explains how to solve
-them.
-
-|link:../error-messages-reference/toc.html#GSEMR[Error Message Reference] |Describes error messages that you
-might encounter when using GlassFish Server.
-
-|link:../reference-manual/toc.html#GSRFM[Reference Manual] |Provides reference information in man
-page format for GlassFish Server administration commands, utility
-commands, and related concepts.
-
-|link:../../openmq/mq-release-notes/toc.html#GMRLN[Message Queue Release Notes] |Describes new features,
-compatibility issues, and existing bugs for Open Message Queue.
-
-|link:../../openmq/mq-tech-over/toc.html#GMTOV[Message Queue Technical Overview] |Provides an introduction
-to the technology, concepts, architecture, capabilities, and features of
-the Message Queue messaging service.
-
-|link:../../openmq/mq-admin-guide/toc.html#GMADG[Message Queue Administration Guide] |Explains how to set up
-and manage a Message Queue messaging system.
-
-|link:../../openmq/mq-dev-guide-jmx/toc.html#GMJMG[Message Queue Developer's Guide for JMX Clients] |Describes
-the application programming interface in Message Queue for
-programmatically configuring and monitoring Message Queue resources in
-conformance with the Java Management Extensions (JMX).
-
-|link:../../openmq/mq-dev-guide-java/toc.html#GMJVG[Message Queue Developer's Guide for Java Clients] |Provides
-information about concepts and procedures for developing Java messaging
-applications (Java clients) that work with GlassFish Server.
-
-|link:../../openmq/mq-dev-guide-c/toc.html#GMCCG[Message Queue Developer's Guide for C Clients] |Provides
-programming and reference information for developers working with
-Message Queue who want to use the C language binding to the Message
-Queue messaging service to send, receive, and process Message Queue
-messages.
-|=======================================================================
-
-
-[[GSPTG00045]][[fwbkx]]
-
-
-[[typographic-conventions]]
-Typographic Conventions
-~~~~~~~~~~~~~~~~~~~~~~~
-
-The following table describes the typographic changes that are used in
-this book.
-
-[width="100%",cols="<14%,<37%,<49%",options="header",]
-|=======================================================================
-|Typeface |Meaning |Example
-|`AaBbCc123` |The names of commands, files, and directories, and
-onscreen computer output a|
-Edit your `.login` file.
-
-Use `ls` `a` to list all files.
-
-`machine_name% you have mail.`
-
-|`AaBbCc123` |What you type, contrasted with onscreen computer output a|
-`machine_name%` `su`
-
-`Password:`
-
-|AaBbCc123 |A placeholder to be replaced with a real name or value |The
-command to remove a file is `rm` filename.
-
-|AaBbCc123 |Book titles, new terms, and terms to be emphasized (note
-that some emphasized items appear bold online) a|
-Read Chapter 6 in the User's Guide.
-
-A cache is a copy that is stored locally.
-
-Do not save the file.
-
-|=======================================================================
-
-
-[[GSPTG00046]][[fquvc]]
-
-
-[[symbol-conventions]]
-Symbol Conventions
-~~~~~~~~~~~~~~~~~~
-
-The following table explains symbols that might be used in this book.
-
-[width="100%",cols="<10%,<26%,<28%,<36%",options="header",]
-|=======================================================================
-|Symbol |Description |Example |Meaning
-|`[ ]` |Contains optional arguments and command options. |`ls [-l]` |The
-`-l` option is not required.
-
-|`{ \| }` |Contains a set of choices for a required command option.
-|`-d {y\|n}` |The `-d` option requires that you use either the `y`
-argument or the `n` argument.
-
-|`${ }` |Indicates a variable reference. |`${com.sun.javaRoot}`
-|References the value of the `com.sun.javaRoot` variable.
-
-|- |Joins simultaneous multiple keystrokes. |Control-A |Press the
-Control key while you press the A key.
-
-|+ + |Joins consecutive multiple keystrokes. |Ctrl+A+N |Press the
-Control key, release it, and then press the subsequent keys.
-
-|> |Indicates menu item selection in a graphical user interface. |File >
-New > Templates |From the File menu, choose New. From the New submenu,
-choose Templates.
-|=======================================================================
-
-
-[[GSPTG00044]][[ghpfg]]
-
-
-[[default-paths-and-file-names]]
-Default Paths and File Names
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following table describes the default paths and file names that are
-used in this book.
-
-[width="100%",cols="<14%,<34%,<52%",options="header",]
-|=======================================================================
-|Placeholder |Description |Default Value
-|as-install + a|
-Represents the base installation directory for GlassFish Server.
-
-In configuration files, as-install is represented as follows:
-
-`${com.sun.aas.installRoot}`
-
- a|
-Installations on the Oracle Solaris operating system, Linux operating
-system, and Mac OS operating system:
-
-user's-home-directory`/glassfish3/glassfish`
-
-Installations on the Windows operating system:
-
-SystemDrive`:\glassfish3\glassfish`
-
-|as-install-parent + |Represents the parent of the base installation
-directory for GlassFish Server. a|
-Installations on the Oracle Solaris operating system, Linux operating
-system, and Mac operating system:
-
-user's-home-directory`/glassfish3`
-
-Installations on the Windows operating system:
-
-SystemDrive`:\glassfish3`
-
-|domain-root-dir + |Represents the directory in which a domain is
-created by default. |as-install`/domains/`
-
-|domain-dir + a|
-Represents the directory in which a domain's configuration is stored.
-
-In configuration files, domain-dir is represented as follows:
-
-`${com.sun.aas.instanceRoot}`
-
- |domain-root-dir`/`domain-name
-
-|instance-dir + |Represents the directory for a server instance.
-|domain-dir`/`instance-name
-|=======================================================================
diff --git a/docs/performance-tuning-guide/src/main/jbake/content/title.adoc b/docs/performance-tuning-guide/src/main/jbake/content/title.adoc
deleted file mode 100644
index f0c902b..0000000
--- a/docs/performance-tuning-guide/src/main/jbake/content/title.adoc
+++ /dev/null
@@ -1,45 +0,0 @@
-type=page
-status=published
-title=Eclipse GlassFish Server Performance Tuning Guide, Release 5.1
-next=preface.html
-prev=lot.html
-~~~~~~
-Eclipse GlassFish Server Performance Tuning Guide, Release 5.1
-==============================================================
-
-[[eclipse-glassfish-server]]
-Eclipse GlassFish Server
-------------------------
-
-Performance Tuning Guide
-
-Release 5.1
-
-Contributed 2018, 2019
-
-This book describes how to get the best performance with GlassFish
-Server 5.1.
-
-[[sthref1]]
-
-'''''
-
-Eclipse GlassFish Server Performance Tuning Guide, Release 5.1
-
-Copyright © 2013, 2019 Oracle and/or its affiliates. All rights reserved.
-
-This program and the accompanying materials are made available under the 
-terms of the Eclipse Public License v. 2.0, which is available at 
-http://www.eclipse.org/legal/epl-2.0. 
-
-SPDX-License-Identifier: EPL-2.0
-
-Oracle and Java are registered trademarks of Oracle and/or its 
-affiliates. Other names may be trademarks of their respective owners. 
-
-Intel and Intel Xeon are trademarks or registered trademarks of Intel 
-Corporation. All SPARC trademarks are used under license and are 
-trademarks or registered trademarks of SPARC International, Inc. AMD, 
-Opteron, the AMD logo, and the AMD Opteron logo are trademarks or 
-registered trademarks of Advanced Micro Devices. UNIX is a registered 
-trademark of The Open Group. 
diff --git a/docs/performance-tuning-guide/src/main/jbake/content/tuning-apps.adoc b/docs/performance-tuning-guide/src/main/jbake/content/tuning-apps.adoc
deleted file mode 100644
index 88d2610..0000000
--- a/docs/performance-tuning-guide/src/main/jbake/content/tuning-apps.adoc
+++ /dev/null
@@ -1,1455 +0,0 @@
-type=page
-status=published
-title=Tuning Your Application
-next=tuning-glassfish.html
-prev=overview.html
-~~~~~~
-Tuning Your Application
-=======================
-
-[[GSPTG00004]][[abebe]]
-
-
-[[tuning-your-application]]
-2 Tuning Your Application
--------------------------
-
-This chapter provides information on tuning applications for maximum
-performance. A complete guide to writing high performance Java and Java
-EE applications is beyond the scope of this document.
-
-The following topics are addressed here:
-
-* link:#abebf[Java Programming Guidelines]
-* link:#abebp[Java Server Page and Servlet Tuning]
-* link:#abebw[EJB Performance Tuning]
-
-[[abebf]][[GSPTG00052]][[java-programming-guidelines]]
-
-Java Programming Guidelines
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This section covers issues related to Java coding and performance. The
-guidelines outlined are not specific to GlassFish Server, but are
-general rules that are useful in many situations. For a complete
-discussion of Java coding best practices, see the
-http://www.oracle.com/technetwork/java/javaee/blueprints/index.html[Java
-Blueprints]
-(`http://www.oracle.com/technetwork/java/javaee/blueprints/index.html`).
-
-The following topics are addressed here:
-
-* link:#abebg[Avoid Serialization and Deserialization]
-* link:#abebh[Use `StringBuilder` to Concatenate Strings]
-* link:#abebi[Assign null to Variables That Are No Longer Needed]
-* link:#abebj[Declare Methods as final Only If Necessary]
-* link:#abebk[Declare Constants as static final]
-* link:#abebl[Avoid Finalizers]
-* link:#abebm[Declare Method Arguments final]
-* link:#abebn[Synchronize Only When Necessary]
-* link:#abebo[Use DataHandlers for SOAP Attachments]
-
-[[abebg]][[GSPTG00161]][[avoid-serialization-and-deserialization]]
-
-Avoid Serialization and Deserialization
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Serialization and deserialization of objects is a CPU-intensive
-procedure and is likely to slow down your application. Use the
-`transient` keyword to reduce the amount of data serialized.
-Additionally, customized `readObject()` and `writeObject()` methods may
-be beneficial in some cases.
-
-[[abebh]][[GSPTG00162]][[use-stringbuilder-to-concatenate-strings]]
-
-Use `StringBuilder` to Concatenate Strings
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To improve performance, instead of using string concatenation, use
-`StringBuilder.append()`.
-
-String objects are immutable - that is, they never change after
-creation. For example, consider the following code:
-
-[source,oac_no_warn]
-----
-String str = "testing";
-str = str + "abc";
-str = str + "def";
-----
-
-The compiler translates this code as:
-
-[source,oac_no_warn]
-----
-String str = "testing";
-StringBuilder tmp = new StringBuilder(str);
-tmp.append("abc");
-str = tmp.toString();
-StringBulder tmp = new StringBuilder(str);
-tmp.append("def");
-str = tmp.toString();
-----
-
-This copying is inherently expensive and overusing it can reduce
-performance significantly. You are far better off writing:
-
-[source,oac_no_warn]
-----
-StringBuilder tmp = new StringBuilder("testing");
-tmp.append("abc");
-tmp.append("def");
-String str = tmp.toString();
-----
-
-[[abebi]][[GSPTG00163]][[assign-null-to-variables-that-are-no-longer-needed]]
-
-Assign null to Variables That Are No Longer Needed
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Explicitly assigning a null value to variables that are no longer needed
-helps the garbage collector to identify the parts of memory that can be
-safely reclaimed. Although Java provides memory management, it does not
-prevent memory leaks or using excessive amounts of memory.
-
-An application may induce memory leaks by not releasing object
-references. Doing so prevents the Java garbage collector from reclaiming
-those objects, and results in increasing amounts of memory being used.
-Explicitly nullifying references to variables after their use allows the
-garbage collector to reclaim memory.
-
-One way to detect memory leaks is to employ profiling tools and take
-memory snapshots after each transaction. A leak-free application in
-steady state will show a steady active heap memory after garbage
-collections.
-
-[[abebj]][[GSPTG00164]][[declare-methods-as-final-only-if-necessary]]
-
-Declare Methods as final Only If Necessary
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Modern optimizing dynamic compilers can perform inlining and other
-inter-procedural optimizations, even if Java methods are not declared
-`final`. Use the keyword `final` as it was originally intended: for
-program architecture reasons and maintainability.
-
-Only if you are absolutely certain that a method must not be overridden,
-use the `final` keyword.
-
-[[abebk]][[GSPTG00165]][[declare-constants-as-static-final]]
-
-Declare Constants as static final
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The dynamic compiler can perform some constant folding optimizations
-easily, when you declare constants as `static final` variables.
-
-[[abebl]][[GSPTG00166]][[avoid-finalizers]]
-
-Avoid Finalizers
-^^^^^^^^^^^^^^^^
-
-Adding finalizers to code makes the garbage collector more expensive and
-unpredictable. The virtual machine does not guarantee the time at which
-finalizers are run. Finalizers may not always be executed, before the
-program exits. Releasing critical resources in `finalize()` methods may
-lead to unpredictable application behavior.
-
-[[abebm]][[GSPTG00167]][[declare-method-arguments-final]]
-
-Declare Method Arguments final
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Declare method arguments `final` if they are not modified in the method.
-In general, declare all variables `final` if they are not modified after
-being initialized or set to some value.
-
-[[abebn]][[GSPTG00168]][[synchronize-only-when-necessary]]
-
-Synchronize Only When Necessary
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Do not synchronize code blocks or methods unless synchronization is
-required. Keep synchronized blocks or methods as short as possible to
-avoid scalability bottlenecks. Use the Java Collections Framework for
-unsynchronized data structures instead of more expensive alternatives
-such as`java.util.HashTable`.
-
-[[abebo]][[GSPTG00169]][[use-datahandlers-for-soap-attachments]]
-
-Use DataHandlers for SOAP Attachments
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Using a `javax.activation.DataHandler` for a SOAP attachment will
-improve performance.
-
-JAX-RPC specifies:
-
-* A mapping of certain MIME types to Java types.
-* Any MIME type is mappable to a `javax.activation.DataHandler` .
-
-As a result, send an attachment (`.gif` or XML document) as a SOAP
-attachment to an RPC style web service by utilizing the Java type
-mappings. When passing in any of the mandated Java type mappings
-(appropriate for the attachment's MIME type) as an argument for the web
-service, the JAX-RPC runtime handles these as SOAP attachments.
-
-For example, to send out an `image/gif` attachment, use
-`java.awt.Image`, or create a `DataHandler` wrapper over your image. The
-advantages of using the wrapper are:
-
-* Reduced coding: You can reuse generic attachment code to handle the
-attachments because the `DataHandler` determines the content type of the
-contained data automatically. This feature is especially useful when
-using a document style service. Since the content is known at runtime,
-there is no need to make calls to
-`attachment.setContent(stringContent, "image/gif")`, for example.
-* Improved Performance: Informal tests have shown that using
-`DataHandler` wrappers doubles throughput for `image/gif` MIME types,
-and multiplies throughput by approximately 1.5 for `text/xml` or
-`java.awt.Image` for `image/*` types.
-
-[[abebp]][[GSPTG00053]][[java-server-page-and-servlet-tuning]]
-
-Java Server Page and Servlet Tuning
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Many applications running on the GlassFish Server use servlets or
-JavaServer Pages (JSP) technology in the presentation tier. This section
-describes how to improve performance of such applications, both through
-coding practices and through deployment and configuration settings.
-
-[[abebq]][[GSPTG00170]][[suggested-coding-practices]]
-
-Suggested Coding Practices
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This section provides some tips on coding practices that improve servlet
-and JSP application performance.
-
-The following topics are addressed here:
-
-* link:#abebr[General Guidelines]
-* link:#abebs[Avoid Shared Modified Class Variables]
-* link:#abebt[HTTP Session Handling]
-* link:#abebu[Configuration and Deployment Tips]
-
-[[abebr]][[GSPTG00082]][[general-guidelines]]
-
-General Guidelines
-++++++++++++++++++
-
-Follow these general guidelines to increase performance of the
-presentation tier:
-
-* Minimize Java synchronization in servlets.
-* Do not use the single thread model for servlets.
-* Use the servlet's `init()` method to perform expensive one-time
-initialization.
-* Avoid using `System.out.println()` calls.
-
-[[abebs]][[GSPTG00083]][[avoid-shared-modified-class-variables]]
-
-Avoid Shared Modified Class Variables
-+++++++++++++++++++++++++++++++++++++
-
-In the servlet multithread model (the default), a single instance of a
-servlet is created for each application server instance. All requests
-for a servlet on that application instance share the same servlet
-instance. This can lead to thread contention if there are
-synchronization blocks in the servlet code. Therefore, avoid using
-shared modified class variables because they create the need for
-synchronization.
-
-[[abebt]][[GSPTG00084]][[http-session-handling]]
-
-HTTP Session Handling
-+++++++++++++++++++++
-
-Follow these guidelines when using HTTP sessions:
-
-* Create sessions sparingly. Session creation is not free. If a session
-is not required, do not create one.
-* Use `javax.servlet.http.HttpSession.invalidate()` to release sessions
-when they are no longer needed.
-* Keep session size small, to reduce response times. If possible, keep
-session size below 7 kilobytes.
-* Use the directive `<%page session="false"%>` in JSP files to prevent
-the GlassFish Server from automatically creating sessions when they are
-not necessary.
-* Avoid large object graphs in an `HttpSession`. They force
-serialization and add computational overhead. Generally, do not store
-large objects as `HttpSession` variables.
-* Do not cache transaction data in an `HttpSession`. Access to data in
-an `HttpSession` is not transactional. Do not use it as a cache of
-transactional data, which is better kept in the database and accessed
-using entity beans. Transactions will rollback upon failures to their
-original state. However, stale and inaccurate data may remain in
-`HttpSession` objects. GlassFish Server provides "read-only"
-bean-managed persistence entity beans for cached access to read-only
-data.
-
-[[abebu]][[GSPTG00085]][[configuration-and-deployment-tips]]
-
-Configuration and Deployment Tips
-+++++++++++++++++++++++++++++++++
-
-Follow these configuration tips to improve performance. These tips are
-intended for production environments, not development environments.
-
-* To improve class loading time, avoid having excessive directories in
-the server `CLASSPATH`. Put application-related classes into JAR files.
-* HTTP response times are dependent on how the keep-alive subsystem and
-the HTTP server is tuned in general. For more information, see
-link:tuning-glassfish.html#abeet[HTTP Service Settings].
-* Cache servlet results when possible. For more information, see
-"link:../application-development-guide/webapps.html#GSDVG00009[Developing Web Applications]" in GlassFish Server Open
-Source Edition Application Development Guide.
-* If an application does not contain any EJB components, deploy the
-application as a WAR file, not an EAR file.
-
-[[gfqnu]][[GSPTG00009]][[optimize-ssl]]
-
-Optimize SSL
-
-Optimize SSL by using routines in the appropriate operating system
-library for concurrent access to heap space. The library to use depends
-on the version of the Solaris Operating System (SolarisOS) that you are
-using. To ensure that you use the correct library, set the `LD_PRELOAD`
-environment variable to specify the correct library file. For more
-information, refer to the following table.
-
-[width="100%",cols="<23%,<23%,<54%",options="header",]
-|=======================================================================
-|Solaris OS Version |Library |Setting of `LD_PRELOAD` Environment
-Variable
-|10 |`libumem3LIB` |`/usr/lib/libumem.so`
-
-|9 |`libmtmalloc3LIB` |`/usr/lib/libmtmalloc.so`
-|=======================================================================
-
-
-To set the `LD_PRELOAD` environment variable, edit the entry for this
-environment variable in the `startserv` script. The `startserv` script
-is located is located in the `bin/startserv` directory of your domain.
-
-The exact syntax to define an environment variable depends on the shell
-that you are using.
-
-[[abebv]][[GSPTG00010]][[disable-security-manager]]
-
-Disable Security Manager
-
-The security manager is expensive because calls to required resources
-must call the `doPrivileged()` method and must also check the resource
-with the `server.policy` file. If you are sure that no malicious code
-will be run on the server and you do not use authentication within your
-application, then you can disable the security manager.
-
-See "link:../application-development-guide/securing-apps.html#GSDVG00373[Enabling and Disabling the Security Manager]" in
-GlassFish Server Open Source Edition Application Development Guide for
-instructions on enabling or disabling the security manager. If using the
-GlassFish Server Administration Console, navigate to the
-Configurations>configuration-name>Security node and check or uncheck the
-Security Manager option as desired. Refer to the Administration Console
-online help for more information.
-
-[[abebw]][[GSPTG00054]][[ejb-performance-tuning]]
-
-EJB Performance Tuning
-~~~~~~~~~~~~~~~~~~~~~~
-
-The GlassFish Server's high-performance EJB container has numerous
-parameters that affect performance. Individual EJB components also have
-parameters that affect performance. The value of individual EJB
-component's parameter overrides the value of the same parameter for the
-EJB container. The default values are designed for a single-processor
-computer system. Modify these values as appropriate to optimize for
-other system configurations.
-
-The following topics are addressed here:
-
-* link:#abebx[Goals]
-* link:#abeby[Monitoring EJB Components]
-* link:#abeca[General Guidelines]
-* link:#abecg[Using Local and Remote Interfaces]
-* link:#abecj[Improving Performance of EJB Transactions]
-* link:#abecs[Using Special Techniques]
-* link:#abecv[Tuning Tips for Specific Types of EJB Components]
-* link:#abedd[JDBC and Database Access]
-* link:#abedi[Tuning Message-Driven Beans]
-
-[[abebx]][[GSPTG00171]][[goals]]
-
-Goals
-^^^^^
-
-The goals of EJB performance tuning are:
-
-* Increased speed: Cache as many beans in the EJB caches as possible to
-increase speed (equivalently, decrease response time). Caching
-eliminates CPU-intensive operations. However, since memory is finite, as
-the caches become larger, housekeeping for them (including garbage
-collection) takes longer.
-* Decreased memory consumption: Beans in the pools or caches consume
-memory from the Java virtual machine heap. Very large pools and caches
-degrade performance because they require longer and more frequent
-garbage collection cycles.
-* Improved functional properties: Functional properties such as user
-timeout, commit options, security, and transaction options, are mostly
-related to the functionality and configuration of the application.
-Generally, they do not compromise functionality for performance. In some
-cases, you might be forced to make a "trade-off" decision between
-functionality and performance. This section offers suggestions in such
-cases.
-
-[[abeby]][[GSPTG00172]][[monitoring-ejb-components]]
-
-Monitoring EJB Components
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-When the EJB container has monitoring enabled, you can examine
-statistics for individual beans based on the bean pool and cache
-settings.
-
-For example, the monitoring command below returns the Bean Cache
-statistics for a stateful session bean.
-
-[source,oac_no_warn]
-----
-asadmin get --user admin --host e4800-241-a --port 4848
--m specjcmp.application.SPECjAppServer.ejb-module.
-   supplier_jar.stateful-session-bean.BuyerSes.bean-cache.*
-----
-
-The following is a sample of the monitoring output:
-
-[source,oac_no_warn]
-----
-resize-quantity = -1
- cache-misses = 0
- idle-timeout-in-seconds = 0
- num-passivations = 0
- cache-hits = 59
- num-passivation-errors = 0
- total-beans-in-cache = 59
- num-expired-sessions-removed = 0
- max-beans-in-cache = 4096
- num-passivation-success = 0
-----
-
-The monitoring command below gives the bean pool statistics for an
-entity bean:
-
-[source,oac_no_warn]
-----
-asadmin get --user admin --host e4800-241-a --port 4848
--m specjcmp.application.SPECjAppServer.ejb-module.
-   supplier_jar.stateful-entity-bean.ItemEnt.bean-pool.*
-idle-timeout-in-seconds = 0
-steady-pool-size = 0
-total-beans-destroyed = 0
-num-threads-waiting = 0
-num-beans-in-pool = 54
-max-pool-size = 2147483647
-pool-resize-quantity = 0
-total-beans-created = 255
-----
-
-The monitoring command below gives the bean pool statistics for a
-stateless bean.
-
-[source,oac_no_warn]
-----
-asadmin get --user admin --host e4800-241-a --port 4848
--m test.application.testEjbMon.ejb-module.slsb.stateless-session-bean.slsb.bean-pool.*
-idle-timeout-in-seconds = 200
-steady-pool-size = 32
-total-beans-destroyed = 12
-num-threads-waiting = 0
-num-beans-in-pool = 4
-max-pool-size = 1024
-pool-resize-quantity = 12
-total-beans-created = 42
-----
-
-Tuning the bean involves charting the behavior of the cache and pool for
-the bean in question over a period of time.
-
-If too many passivations are happening and the JVM heap remains fairly
-small, then the `max-cache-size` or the `cache-idle-timeout-in-seconds`
-can be increased. If garbage collection is happening too frequently, and
-the pool size is growing, but the cache hit rate is small, then the
-`pool-idle-timeout-in-seconds` can be reduced to destroy the instances.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Specifying a `max-pool-size` of zero (0) means that the pool is
-unbounded. The pooled beans remain in memory unless they are removed by
-specifying a small interval for `pool-idle-timeout-in-seconds`. For
-production systems, specifying the pool as unbounded is NOT recommended.
-
-|=======================================================================
-
-
-[[abebz]][[GSPTG00086]][[monitoring-individual-ejb-components]]
-
-Monitoring Individual EJB Components
-++++++++++++++++++++++++++++++++++++
-
-To gather method invocation statistics for all methods in a bean, use
-the following command:
-
-[source,oac_no_warn]
-----
-asadmin get -m monitorableObject.*
-----
-
-where monitorableObject is a fully-qualified identifier from the
-hierarchy of objects that can be monitored, shown below.
-
-[source,oac_no_warn]
-----
-serverInstance.application.applicationName.ejb-module.moduleName
-----
-
-where moduleName is `x_jar` for module `x.jar`.
-
-* `.stateless-session-bean.beanName .bean-pool .bean-method.methodName`
-* `.stateful-session-bean.beanName .bean-cache .bean-method.methodName`
-* `.entity-bean.beanName .bean-cache .bean-pool .bean-method.methodName`
-* `.message-driven-bean.beanName .bean-pool .bean-method.methodName (methodName = onMessage)`
-
-For standalone beans, use this pattern:
-
-[source,oac_no_warn]
-----
-serverInstance.application.applicationName.standalone-ejb-module.moduleName
-----
-
-The possible identifiers are the same as for `ejb-module`.
-
-For example, to get statistics for a method in an entity bean, use this
-command:
-
-[source,oac_no_warn]
-----
-asadmin get -m serverInstance.application.appName.ejb-module.moduleName
-.entity-bean.beanName.bean-method.methodName.*
-----
-
-For more information about administering the monitoring service in
-general, see "link:../administration-guide/monitoring.html#GSADG00011[Administering the Monitoring Service]" in
-GlassFish Server Open Source Edition Administration Guide. For
-information about viewing comprehensive EJB monitoring statistics, see
-"link:../administration-guide/monitoring.html#GSADG00651[EJB Statistics]" in GlassFish Server Open Source
-Edition Administration Guide.
-
-To configure EJB monitoring using the GlassFish Server Administration
-Console, navigate to the Configurations>configuration-name>Monitoring
-node. After configuring monitoring, you can view monitoring statistics
-by navigating to the server (Admin Server) node and then selecting the
-Monitor tab. Refer to the Administration Console online help for
-instructions on each of these procedures.
-
-Alternatively, to list EJB statistics, use the `asadmin list`
-subcommand. For more information, see link:../reference-manual/list.html#GSRFM00145[`list`(1)].
-
-For statistics on stateful session bean passivations, use this command:
-
-[source,oac_no_warn]
-----
-asadmin get -m serverInstance.application.appName.ejb-module.moduleName
-.stateful-session-bean.beanName.bean-cache.*
-----
-
-From the attribute values that are returned, use this command:
-
-`num-passivationsnum-passivation-errorsnum-passivation-success`
-
-[[abeca]][[GSPTG00173]][[general-guidelines-1]]
-
-General Guidelines
-^^^^^^^^^^^^^^^^^^
-
-The following guidelines can improve performance of EJB components. Keep
-in mind that decomposing an application into many EJB components creates
-overhead and can degrade performance. EJB components are not simply Java
-objects. They are components with semantics for remote call interfaces,
-security, and transactions, as well as properties and methods.
-
-[[abecb]][[GSPTG00087]][[use-high-performance-beans]]
-
-Use High Performance Beans
-++++++++++++++++++++++++++
-
-Use high-performance beans as much as possible to improve the overall
-performance of your application. For more information, see
-link:#abecv[Tuning Tips for Specific Types of EJB Components].
-
-The types of EJB components are listed below, from the highest
-performance to the lowest:
-
-1.  Stateless Session Beans and Message Driven Beans
-2.  Stateful Session Beans
-3.  Container Managed Persistence (CMP) entity beans configured as
-read-only
-4.  Bean Managed Persistence (BMP) entity beans configured as read-only
-5.  CMP beans
-6.  BMP beans
-
-For more information about configuring high availability session
-persistence, see "link:../ha-administration-guide/session-persistence-and-failover.html#GSHAG00011[Configuring High Availability Session
-Persistence and Failover]" in GlassFish Server Open Source Edition High
-Availability Administration Guide. To configure EJB beans using the
-GlassFish Server Administration Console, navigate to the
-Configurations>configuration-name>EJB Container node and then refer to
-the Administration Console online help for detailed instructions.
-
-[[abecc]][[GSPTG00088]][[use-caching]]
-
-Use Caching
-+++++++++++
-
-Caching can greatly improve performance when used wisely. For example:
-
-* Cache EJB references: To avoid a JNDI lookup for every request, cache
-EJB references in servlets.
-* Cache home interfaces: Since repeated lookups to a home interface can
-be expensive, cache references to `EJBHomes` in the `init()` methods of
-servlets.
-* Cache EJB resources: Use `setSessionContext()` or `ejbCreate()` to
-cache bean resources. This is again an example of using bean lifecycle
-methods to perform application actions only once where possible.
-Remember to release acquired resources in the `ejbRemove()` method.
-
-[[abecd]][[GSPTG00089]][[use-the-appropriate-stubs]]
-
-Use the Appropriate Stubs
-+++++++++++++++++++++++++
-
-The stub classes needed by EJB applications are generated dynamically at
-runtime when an EJB client needs them. This means that it is not
-necessary to generate the stubs or retrieve the client JAR file when
-deploying an application with remote EJB components. When deploying an
-application, it is no longer necessary to specify the `--retrieve`
-option, which can speed up deployment.
-
-If you have a legacy rich-client application that directly uses the
-CosNaming service (not a recommended configuration), then you must
-generate the stubs for your application explicitly using RMIC. For more
-information, see the link:../troubleshooting-guide/toc.html#GSTSG[GlassFish Server Open Source Edition
-Troubleshooting Guide] for more details.
-
-[[abece]][[GSPTG00090]][[remove-unneeded-stateful-session-beans]]
-
-Remove Unneeded Stateful Session Beans
-++++++++++++++++++++++++++++++++++++++
-
-Removing unneeded stateful session beans avoids passivating them, which
-requires disk operations.
-
-[[abecf]][[GSPTG00091]][[cache-and-pool-tuning-tips]]
-
-Cache and Pool Tuning Tips
-++++++++++++++++++++++++++
-
-Follow these tips when using the EJB cache and pools to improve
-performance:
-
-* Explicitly call `remove()`: Allow stateful session EJB components to
-be removed from the container cache by explicitly calling of the
-`remove()` method in the client.
-* Tune the entity EJB component's pool size: Entity Beans use both the
-EJB pool and cache settings. Tune the entity EJB component's pool size
-to minimize the creation and destruction of beans. Populating the pool
-with a non-zero steady size before hand is useful for getting better
-response for initial requests.
-* Cache bean-specific resources: Use the `setEntityContext()` method to
-cache bean specific resources and release them using the
-`unSetEntityContext()` method.
-* Load related data efficiently for container-managed relationships
-(CMRs). For more information, see link:#abedc[Pre-Fetching Container
-Managed Relationship (CMR) Beans].
-* Identify read-only beans: Configure read-only entity beans for read
-only operations. For more information, see link:#abeda[Read-Only Entity
-Beans].
-
-[[abecg]][[GSPTG00174]][[using-local-and-remote-interfaces]]
-
-Using Local and Remote Interfaces
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This section describes some considerations when EJB components are used
-by local and remote clients.
-
-[[abech]][[GSPTG00092]][[prefer-local-interfaces]]
-
-Prefer Local Interfaces
-+++++++++++++++++++++++
-
-An EJB component can have remote and local interfaces. Clients not
-located in the same application server instance as the bean (remote
-clients) use the remote interface to access the bean. Calls to the
-remote interface require marshalling arguments, transportation of the
-marshalled data over the network, un-marshaling the arguments, and
-dispatch at the receiving end. Thus, using the remote interface entails
-significant overhead.
-
-If an EJB component has a local interface, then local clients in the
-same application server instance can use it instead of the remote
-interface. Using the local interface is more efficient, since it does
-not require argument marshalling, transportation, and un-marshalling.
-
-If a bean is to be used only by local clients then it makes sense to
-provide only the local interface. If, on the other hand, the bean is to
-be location-independent, then you should provide both the remote and
-local interfaces so that remote clients use the remote interface and
-local clients can use the local interface for efficiency.
-
-[[abeci]][[GSPTG00093]][[using-pass-by-reference-semantics]]
-
-Using Pass-By-Reference Semantics
-+++++++++++++++++++++++++++++++++
-
-By default, the GlassFish Server uses pass-by-value semantics for
-calling the remote interface of a bean, even if it is co-located. This
-can be expensive, since clients using pass-by-value semantics must copy
-arguments before passing them to the EJB component.
-
-However, local clients can use pass-by-reference semantics and thus the
-local and remote interfaces can share the passed objects. But this means
-that the argument objects must be implemented properly, so that they are
-shareable. In general, it is more efficient to use pass-by-reference
-semantics when possible.
-
-Using the remote and local interfaces appropriately means that clients
-can access EJB components efficiently. That is, local clients use the
-local interface with pass-by-reference semantics, while remote clients
-use the remote interface with pass-by-value semantics.
-
-However, in some instances it might not be possible to use the local
-interface, for example when:
-
-* The application predates the EJB 2.0 specification and was written
-without any local interfaces.
-* There are bean-to-bean calls and the client beans are written without
-making any co-location assumptions about the called beans.
-
-For these cases, the GlassFish Server provides a pass-by-reference
-option that clients can use to pass arguments by reference to the remote
-interface of a co-located EJB component.
-
-You can specify the pass-by-reference option for an entire application
-or a single EJB component. When specified at the application level, all
-beans in the application use pass-by-reference semantics when passing
-arguments to their remote interfaces. When specified at the bean level,
-all calls to the remote interface of the bean use pass-by-reference
-semantics. See "link:../application-development-guide/ejb.html#GSDVG00145[Value Added Features]" in GlassFish
-Server Open Source Edition Application Development Guide for more
-details about the pass-by-reference flag.
-
-To specify that an EJB component will use pass by reference semantics,
-use the following tag in the `sun-ejb-jar.xml` deployment descriptor:
-
-[source,oac_no_warn]
-----
-<pass-by-reference>true</pass-by-reference>
-----
-
-This avoids copying arguments when the EJB component's methods are
-invoked and avoids copying results when methods return. However,
-problems will arise if the data is modified by another source during the
-invocation.
-
-[[abecj]][[GSPTG00175]][[improving-performance-of-ejb-transactions]]
-
-Improving Performance of EJB Transactions
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This section provides some tips to improve performance when using
-transactions.
-
-The following topics are addressed here:
-
-* link:#abeck[Use Container-Managed Transactions]
-* link:#abecl[Do Not Encompass User Input Time]
-* link:#abecm[Identify Non-Transactional Methods]
-* link:#abecn[Use `TX_REQUIRED` for Long Transaction Chains]
-* link:#abeco[Use Lowest Cost Database Locking]
-* link:#abecp[Use XA-Capable Data Sources Only When Needed]
-* link:#abecq[Configure JDBC Resources as One-Phase Commit Resources]
-* link:#abecr[Use the Least Expensive Transaction Attribute]
-
-[[abeck]][[GSPTG00094]][[use-container-managed-transactions]]
-
-Use Container-Managed Transactions
-++++++++++++++++++++++++++++++++++
-
-Container-managed transactions are preferred for consistency, and
-provide better performance.
-
-[[abecl]][[GSPTG00095]][[do-not-encompass-user-input-time]]
-
-Do Not Encompass User Input Time
-++++++++++++++++++++++++++++++++
-
-To avoid resources being held unnecessarily for long periods, a
-transaction should not encompass user input or user think time.
-
-[[abecm]][[GSPTG00096]][[identify-non-transactional-methods]]
-
-Identify Non-Transactional Methods
-++++++++++++++++++++++++++++++++++
-
-Declare non-transactional methods of session EJB components with
-`NotSupported` or `Never` transaction attributes. These attributes can
-be found in the `ejb-jar.xml` deployment descriptor file. Transactions
-should span the minimum time possible since they lock database rows.
-
-[[abecn]][[GSPTG00097]][[use-tx_required-for-long-transaction-chains]]
-
-Use `TX_REQUIRED` for Long Transaction Chains
-+++++++++++++++++++++++++++++++++++++++++++++
-
-For very large transaction chains, use the transaction attribute
-`TX_REQUIRED.` To ensure EJB methods in a call chain, use the same
-transaction.
-
-[[abeco]][[GSPTG00098]][[use-lowest-cost-database-locking]]
-
-Use Lowest Cost Database Locking
-++++++++++++++++++++++++++++++++
-
-Use the lowest cost locking available from the database that is
-consistent with any transaction. Commit the data after the transaction
-completes rather than after each method call.
-
-[[abecp]][[GSPTG00099]][[use-xa-capable-data-sources-only-when-needed]]
-
-Use XA-Capable Data Sources Only When Needed
-++++++++++++++++++++++++++++++++++++++++++++
-
-When multiple database resources, connector resources or JMS resources
-are involved in one transaction, a distributed or global transaction
-needs to be performed. This requires XA capable resource managers and
-data sources. Use XA capable data sources, only when two or more data
-source are going to be involved in a transaction. If a database
-participates in some distributed transactions, but mostly in local or
-single database transactions, it is advisable to register two separate
-JDBC resources and use the appropriate resource in the application.
-
-[[abecq]][[GSPTG00100]][[configure-jdbc-resources-as-one-phase-commit-resources]]
-
-Configure JDBC Resources as One-Phase Commit Resources
-++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-To improve performance of transactions involving multiple resources, the
-GlassFish Server uses last agent optimization (LAO), which allows the
-configuration of one of the resources in a distributed transaction as a
-one-phase commit (1PC) resource. Since the overhead of multiple-resource
-transactions is much higher for a JDBC resource than a message queue,
-LAO substantially improves performance of distributed transactions
-involving one JDBC resource and one or more message queues. To take
-advantage of LAO, configure a JDBC resource as a 1PC resource. Nothing
-special needs to be done to configure JMS resources.
-
-In global transactions involving multiple JDBC resources, LAO will still
-improve performance, however, not as much as for one JDBC resource. In
-this situation, one of the JDBC resources should be configured as 1PC,
-and all others should be configured as XA.
-
-[[abecr]][[GSPTG00101]][[use-the-least-expensive-transaction-attribute]]
-
-Use the Least Expensive Transaction Attribute
-+++++++++++++++++++++++++++++++++++++++++++++
-
-Set the following transaction attributes in the EJB deployment
-descriptor file (`ejb-jar.xml`). Options are listed from best
-performance to worst. To improve performance, choose the least expensive
-attribute that will provide the functionality your application needs:
-
-1.  `NEVER`
-2.  `TX_NOTSUPPORTED`
-3.  `TX_MANDATORY`
-4.  `TX_SUPPORTS`
-5.  `TX_REQUIRED`
-6.  `TX_REQUIRESNEW`
-
-[[abecs]][[GSPTG00176]][[using-special-techniques]]
-
-Using Special Techniques
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-Special performance-enhancing techniques are discussed in the following
-sections:
-
-* link:#abect[Version Consistency]
-* link:#abecu[Request Partitioning]
-
-[[abect]][[GSPTG00102]][[version-consistency]]
-
-Version Consistency
-+++++++++++++++++++
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-The technique in section applies only to the EJB 2.1 architecture. In
-the EJB 3.0 architecture, use the Java Persistence API (JPA).
-
-|=======================================================================
-
-
-Use version consistency to improve performance while protecting the
-integrity of data in the database. Since the application server can use
-multiple copies of an EJB component simultaneously, an EJB component's
-state can potentially become corrupted through simultaneous access.
-
-The standard way of preventing corruption is to lock the database row
-associated with a particular bean. This prevents the bean from being
-accessed by two simultaneous transactions and thus protects data.
-However, it also decreases performance, since it effectively serializes
-all EJB access.
-
-Version consistency is another approach to protecting EJB data
-integrity. To use version consistency, you specify a column in the
-database to use as a version number. The EJB lifecycle then proceeds
-like this:
-
-* The first time the bean is used, the `ejbLoad()` method loads the bean
-as normal, including loading the version number from the database.
-* The `ejbStore()` method checks the version number in the database
-versus its value when the EJB component was loaded.
-
-** If the version number has been modified, it means that there has been
-simultaneous access to the EJB component and `ejbStore()` throws a
-`ConcurrentModificationException`.
-
-** Otherwise, `ejbStore()` stores the data and completes as normal. +
-The `ejbStore()` method performs this validation at the end of the
-transaction regardless of whether any data in the bean was modified.
-
-Subsequent uses of the bean behave similarly, except that the
-`ejbLoad()` method loads its initial data (including the version number)
-from an internal cache. This saves a trip to the database. When the
-`ejbStore()` method is called, the version number is checked to ensure
-that the correct data was used in the transaction.
-
-Version consistency is advantageous when you have EJB components that
-are rarely modified, because it allows two transactions to use the same
-EJB component at the same time. Because neither transaction modifies the
-data, the version number is unchanged at the end of both transactions,
-and both succeed. But now the transactions can run in parallel. If two
-transactions occasionally modify the same EJB component, one will
-succeed and one will fail and can be retried using the new values—which
-can still be faster than serializing all access to the EJB component if
-the retries are infrequent enough (though now your application logic has
-to be prepared to perform the retry operation).
-
-To use version consistency, the database schema for a particular table
-must include a column where the version can be stored. You then specify
-that table in the `sun-cmp-mapping.xml` deployment descriptor for a
-particular bean:
-
-[source,oac_no_warn]
-----
-<entity-mapping>
-    <cmp-field-mapping>
-        ...
-    </cmp-field-mapping>
-    <consistency>
-        <check-version-of-accessed-instances>
-            <column-name>OrderTable.VC_VERSION_NUMBER</column-name>
-        </check-version-of-accessed-instances>
-    </consistency>
-</entity-mapping>
-----
-
-In addition, you must establish a trigger on the database to
-automatically update the version column when data in the specified table
-is modified. The GlassFish Server requires such a trigger to use version
-consistency. Having such a trigger also ensures that external
-applications that modify the EJB data will not conflict with EJB
-transactions in progress.
-
-For example, the following DDL illustrates how to create a trigger for
-the `Order` table:
-
-[source,oac_no_warn]
-----
-CREATE TRIGGER OrderTrigger
-  BEFORE UPDATE ON OrderTable
-  FOR EACH ROW
-  WHEN (new.VC_VERSION_NUMBER = old.VC_VERSION_NUMBER)
-  DECLARE
-  BEGIN
-    :NEW.VC_VERSION_NUMBER := :OLD.VC_VERSION_NUMBER + 1;
-  END;
-----
-
-[[abecu]][[GSPTG00103]][[request-partitioning]]
-
-Request Partitioning
-++++++++++++++++++++
-
-Request partitioning enables you to assign a request priority to an EJB
-component. This gives you the flexibility to make certain EJB components
-execute with higher priorities than others.
-
-An EJB component which has a request priority assigned to it will have
-its requests (services) executed within an assigned threadpool. By
-assigning a threadpool to its execution, the EJB component can execute
-independently of other pending requests. In short, request partitioning
-enables you to meet service-level agreements that have differing levels
-of priority assigned to different services.
-
-Request partitioning applies only to remote EJB components (those that
-implement a remote interface). Local EJB components are executed in
-their calling thread (for example, when a servlet calls a local bean,
-the local bean invocation occurs on the servlet's thread).
-
-[[gacmw]][[GSPTG00037]][[to-enable-request-partitioning]]
-
-To Enable Request Partitioning
-
-Follow this procedure.
-
-1.  Configure additional threadpools for EJB execution. +
-Using the GlassFish Server Administration Console, navigate to the
-Configurations>configuration-name>Thread Pools node. Refer to the
-Administration Console online help for more information. Alternatively,
-you can follow the instructions in "link:../administration-guide/threadpools.html#GSADG00008[Administering
-Thread Pools]" in GlassFish Server Open Source Edition Administration
-Guide. +
-Configure the threadpools as follows:
-1.  Add the additional threadpool IDs to the GlassFish Server's ORB. +
-This can be done on the Configurations>configuration-name>ORB node in
-the Administration Console. +
-For example, enable threadpools named `priority-1` and `priority-2` to
-the `<orb>` element as follows: +
-[source,oac_no_warn]
-----
-<orb max-connections="1024" message-fragment-size="1024"
-    use-thread-pool-ids="thread-pool-1,priority-1,priority-2">
-----
-2.  Include the threadpool ID in the `use-thread-pool-id` element of the
-EJB component's `sun-ejb-jar.xml` deployment descriptor. +
-For example, the following `sun-ejb-jar.xml` deployment descriptor for
-an EJB component named "`TheGreeter`" is assigned to a thread pool named
-`priority-2`: +
-[source,oac_no_warn]
-----
-<sun-ejb-jar>
-  <enterprise-beans>
-    <unique-id>1</unique-id>
-    <ejb>
-      <ejb-name>TheGreeter</ejb-name>
-      <jndi-name>greeter</jndi-name>
-      <use-thread-pool-id>priority-1</use-thread-pool-id>
-    </ejb>
-  </enterprise-beans>
-</sun-ejb-jar>
-----
-2.  Restart the GlassFish Server.
-
-[[abecv]][[GSPTG00177]][[tuning-tips-for-specific-types-of-ejb-components]]
-
-Tuning Tips for Specific Types of EJB Components
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This section provides tips for tuning various specific types of EJB
-components:
-
-* link:#abecw[Entity Beans]
-* link:#abecx[Stateful Session Beans]
-* link:#abecz[Stateless Session Beans]
-* link:#abeda[Read-Only Entity Beans]
-* link:#abedc[Pre-Fetching Container Managed Relationship (CMR) Beans]
-
-These components can all be configured in the GlassFish Server
-Administration Console from the Configurations>configuration-name>EJB
-Container node. Alternatively, you can perform these configurations by
-following the instructions in "link:../ha-administration-guide/rmi-iiop.html#GSHAG00013[RMI-IIOP Load Balancing
-and Failover]" in GlassFish Server Open Source Edition High Availability
-Administration Guide.
-
-[[abecw]][[GSPTG00104]][[entity-beans]]
-
-Entity Beans
-++++++++++++
-
-Depending on the usage of a particular entity bean, one should tune
-`max-cache-size` so that the beans that are used less frequently (for
-example, an order that is created and never used after the transaction
-is over) are cached less, and beans that are used frequently (for
-example, an item in the inventory that gets referenced very often), are
-cached more.
-
-[[abecx]][[GSPTG00105]][[stateful-session-beans]]
-
-Stateful Session Beans
-++++++++++++++++++++++
-
-When a stateful bean represents a user, a reasonable `max-cache-size` of
-beans is the expected number of concurrent users on the application
-server process. If this value is too low (in relation to the steady load
-of users), beans would be frequently passivated and activated, causing a
-negative impact on the response times, due to CPU intensive
-serialization and deserialization as well as disk I/O.
-
-Another important variable for tuning is `cache-idle-timeout-in-seconds`
-where at periodic intervals of `cache-idle-timeout-in-seconds`, all the
-beans in the cache that have not been accessed for more than
-`cache-idle-timeout-in-seconds` time, are passivated. Similar to an HTTP
-session timeout, the bean is removed after it has not been accessed for
-`removal-timeout-in-seconds`. Passivated beans are stored on disk in
-serialized form. A large number of passivated beans could not only mean
-many files on the disk system, but also slower response time as the
-session state has to be de-serialized before the invocation.
-
-[[abecy]][[GSPTG00011]][[checkpoint-only-when-needed]]
-
-Checkpoint only when needed
-
-In high availability mode, when using stateful session beans, consider
-checkpointing only those methods that alter the state of the bean
-significantly. This reduces the number of times the bean state has to be
-checkpointed into the persistent store.
-
-[[abecz]][[GSPTG00106]][[stateless-session-beans]]
-
-Stateless Session Beans
-+++++++++++++++++++++++
-
-Stateless session beans are more readily pooled than entity or the
-stateful session beans. Valid values for `steady-pool-size`,
-`pool-resize-quantity` and `max-pool-size` are the best tunables for
-these type of beans. Set the `steady-pool-size` to greater than zero if
-you want to pre-populate the pool. This way, when the container comes
-up, it creates a pool with `steady-pool-size` number of beans. By
-pre-populating the pool it is possible to avoid the object creation time
-during method invocations.
-
-Setting the `steady-pool size` to a very large value can cause unwanted
-memory growth and can result in large garbage collection times.
-`pool-resize-quantity` determines the rate of growth as well as the rate
-of decay of the pool. Setting it to a small value is better as the decay
-behaves like an exponential decay. Setting a small `max-pool-size` can
-cause excessive object destruction (and as a result excessive object
-creation) as instances are destroyed from the pool if the current pool
-size exceeds `max-pool-size`.
-
-[[abeda]][[GSPTG00107]][[read-only-entity-beans]]
-
-Read-Only Entity Beans
-++++++++++++++++++++++
-
-Read-only entity beans cache data from the database. GlassFish Server
-supports read-only beans that use both bean-managed persistence (BMP)
-and container-managed persistence (CMP). Of the two types, CMP read-only
-beans provide significantly better performance. In the EJB lifecycle,
-the EJB container calls the `ejbLoad()` method of a read-only bean once.
-The container makes multiple copies of the EJB component from that data,
-and since the beans do not update the database, the container never
-calls the `ejbStore()` method. This greatly reduces database traffic for
-these beans.
-
-If there is a bean that never updates the database, use a read-only bean
-in its place to improve performance. A read-only bean is appropriate if
-either:
-
-* Database rows represented by the bean do not change.
-* The application can tolerate using out-of-date values for the bean.
-
-For example, an application might use a read-only bean to represent a
-list of best-seller books. Although the list might change occasionally
-in the database (say, from another bean entirely), the change need not
-be reflected immediately in an application.
-
-The `ejbLoad()` method of a read-only bean is handled differently for
-CMP and BMP beans. For CMP beans, the EJB container calls `ejbLoad()`
-only once to load the data from the database; subsequent uses of the
-bean just copy that data. For BMP beans, the EJB container calls
-`ejbLoad()` the first time a bean is used in a transaction. Subsequent
-uses of that bean within the transaction use the same values. The
-container calls `ejbLoad()` for a BMP bean that doesn't run within a
-transaction every time the bean is used. Therefore, read-only BMP beans
-still make a number of calls to the database.
-
-To create a read-only bean, add the following to the EJB deployment
-descriptor `sun-ejb-jar.xml`:
-
-[source,oac_no_warn]
-----
-<is-read-only-bean>true</is-read-only-bean>
-<refresh-period-in-seconds>600</refresh-period-in-seconds>
-----
-
-[[abedb]][[GSPTG00012]][[refresh-period]]
-
-Refresh Period
-
-An important parameter for tuning read-only beans is the refresh period,
-represented by the deployment descriptor entity
-`refresh-period-in-seconds`. For CMP beans, the first access to a bean
-loads the bean's state. The first access after the refresh period
-reloads the data from the database. All subsequent uses of the bean uses
-the newly refreshed data (until another refresh period elapses). For BMP
-beans, an `ejbLoad()` method within an existing transaction uses the
-cached data unless the refresh period has expired (in which case, the
-container calls `ejbLoad()` again).
-
-This parameter enables the EJB component to periodically refresh its
-"snapshot" of the database values it represents. If the refresh period
-is less than or equal to 0, the bean is never refreshed from the
-database (the default behavior if no refresh period is given).
-
-[[abedc]][[GSPTG00108]][[pre-fetching-container-managed-relationship-cmr-beans]]
-
-Pre-Fetching Container Managed Relationship (CMR) Beans
-+++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-If a container-managed relationship (CMR) exists in your application,
-loading one bean will load all its related beans. The canonical example
-of CMR is an order-orderline relationship where you have one `Order` EJB
-component that has related `OrderLine` EJB components. In previous
-releases of the application server, to use all those beans would require
-multiple database queries: one for the `Order` bean and one for each of
-the `OrderLine` beans in the relationship.
-
-In general, if a bean has n relationships, using all the data of the
-bean would require n+1 database accesses. Use CMR pre-fetching to
-retrieve all the data for the bean and all its related beans in one
-database access.
-
-For example, you have this relationship defined in the `ejb-jar.xml`
-file:
-
-[source,oac_no_warn]
-----
-<relationships>
-    <ejb-relation>
-        <description>Order-OrderLine</description>
-        <ejb-relation-name>Order-OrderLine</ejb-relation-name>
-        <ejb-relationship-role>
-            <ejb-relationship-role-name>
-                Order-has-N-OrderLines
-            </ejb-relationship-role-name>
-            <multiplicity>One</multiplicity>
-            <relationship-role-source>
-                <ejb-name>OrderEJB</ejb-name>
-            </relationship-role-source>
-            <cmr-field>
-                <cmr-field-name>orderLines</cmr-field-name>
-                <cmr-field-type>java.util.Collection</cmr-field-type>
-            </cmr-field>
-        </ejb-relationship-role>
-    </ejb-relation>
-</relationships>
-----
-
-When a particular `Order` is loaded, you can load its related
-`OrderLines` by adding this to the `sun-cmp-mapping.xml` file for the
-application:
-
-[source,oac_no_warn]
-----
-<entity-mapping>
-    <ejb-name>Order</ejb-name>
-    <table-name>...</table-name>
-    <cmp-field-mapping>...</cmp-field-mapping>
-    <cmr-field-mapping>
-        <cmr-field-name>orderLines</cmr-field-name>
-        <column-pair>
-            <column-name>OrderTable.OrderID</column-name>
-            <column-name>OrderLineTable.OrderLine_OrderID</column-name>
-        </column-pair>
-        <fetched-with>
-            <default>
-        </fetched-with>
-    </cmr-field-mapping>
-</entity-mappping>
-----
-
-Now when an `Order` is retrieved, the CMP engine issues SQL to retrieve
-all related `OrderLines` with a `SELECT` statement that has the
-following `WHERE` clause:
-
-[source,oac_no_warn]
-----
-OrderTable.OrderID = OrderLineTable.OrderLine_OrderID
-----
-
-This clause indicates an outer join. These `OrderLines` are pre-fetched.
-
-Pre-fetching generally improves performance because it reduces the
-number of database accesses. However, if the business logic often uses
-`Orders` without referencing their `OrderLines`, then this can have a
-performance penalty, that is, the system has spent the effort to
-pre-fetch the `OrderLines` that are not actually needed.
-
-Avoid pre-fetching for specific finder methods; this can often avoid
-that penalty. For example, consider an order bean has two finder
-methods: a `findByPrimaryKey` method that uses the `Orderlines`, and a
-`findByCustomerId` method that returns only order information and
-therefore does not use the `Orderlines`. If you have enabled CMR
-pre-fetching for the `Orderlines`, both finder methods will pre-fetch
-the `Orderlines`. However, you can prevent pre-fetching for the
-`findByCustomerId` method by including this information in the
-`sun-ejb-jar.xml` descriptor:
-
-[source,oac_no_warn]
-----
-<ejb>
-    <ejb-name>OrderBean</ejb-name>
-    ...
-    <cmp>
-        <prefetch-disabled>
-            <query-method>
-                <method-name>findByCustomerId</method-name>
-            </query-method>
-        </prefetch-disabled>
-     </cmp>
-</ejb>
-----
-
-[[abedd]][[GSPTG00178]][[jdbc-and-database-access]]
-
-JDBC and Database Access
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-The following are some tips to improve the performance of database
-access:
-
-* link:#abede[Use JDBC Directly]
-* link:#abedf[Encapsulate Business Logic in Entity EJB Components]
-* link:#abedg[Close Connections]
-* link:#abedh[Minimize the Database Transaction Isolation Level]
-
-[[abede]][[GSPTG00109]][[use-jdbc-directly]]
-
-Use JDBC Directly
-+++++++++++++++++
-
-When dealing with large amounts of data, such as searching a large
-database, use JDBC directly rather than using Entity EJB components.
-
-[[abedf]][[GSPTG00110]][[encapsulate-business-logic-in-entity-ejb-components]]
-
-Encapsulate Business Logic in Entity EJB Components
-+++++++++++++++++++++++++++++++++++++++++++++++++++
-
-Combine business logic with the Entity EJB component that holds the data
-needed for that logic to process.
-
-[[abedg]][[GSPTG00111]][[close-connections]]
-
-Close Connections
-+++++++++++++++++
-
-To ensure that connections are returned to the pool, always close the
-connections after use.
-
-[[abedh]][[GSPTG00112]][[minimize-the-database-transaction-isolation-level]]
-
-Minimize the Database Transaction Isolation Level
-+++++++++++++++++++++++++++++++++++++++++++++++++
-
-Use the default isolation level provided by the JDBC driver rather than
-calling `setTransactionIsolationLevel()`, unless you are certain that
-your application behaves correctly and performs better at a different
-isolation level.
-
-Reduce the database transaction isolation level when appropriate.
-Reduced isolation levels reduce work in the database tier, and could
-lead to better application performance. However, this must be done after
-carefully analyzing the database table usage patterns.
-
-To set the database transaction isolation level using the GlassFish
-Server Administration Console, navigate to the Resources>JDBC>JDBC
-Connection Pools>pool-name node. Refer to the Administration Console
-online help for complete instructions. Alternatively, follow the
-instructions in "link:../administration-guide/jdbc.html#GSADG00015[Administering Database Connectivity]"
-in GlassFish Server Open Source Edition Administration Guide. For more
-information on tuning JDBC connection pools, see
-link:tuning-glassfish.html#abehq[JDBC Connection Pool Settings].
-
-[[abedi]][[GSPTG00179]][[tuning-message-driven-beans]]
-
-Tuning Message-Driven Beans
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This section provides some tips to improve performance when using JMS
-with message-driven beans (MDBs).
-
-[[abedj]][[GSPTG00113]][[use-getconnection]]
-
-Use `getConnection()`
-+++++++++++++++++++++
-
-JMS connections are served from a connection pool. This means that
-calling `getConnection()` on a Queue connection factory is fast.
-
-[[abedk]][[GSPTG00114]][[tune-the-message-driven-beans-pool-size]]
-
-Tune the Message-Driven Bean's Pool Size
-++++++++++++++++++++++++++++++++++++++++
-
-The container for message-driven beans (MDB) is different than the
-containers for entity and session beans. In the MDB container, sessions
-and threads are attached to the beans in the MDB pool. This design makes
-it possible to pool the threads for executing message-driven requests in
-the container.
-
-Tune the Message-Driven bean's pool size to optimize the concurrent
-processing of messages. Set the size of the MDB pool to, based on all
-the parameters of the server (taking other applications into account).
-For example, a value greater than 500 is generally too large.
-
-To configure MDB pool settings in the GlassFish Server Administration
-Console, navigate to the Configurations>configuration-name>EJB Container
-node and then select the MDB Settings tab. Refer to the Administration
-Console online help for more information. Alternatively, you can set the
-MDB pool size by using the following `asadmin set` subcommand:
-
-[source,oac_no_warn]
-----
-asadmin set server.mdb-container.max-pool-size = value
-----
-
-[[abedl]][[GSPTG00115]][[cache-bean-specific-resources]]
-
-Cache Bean-Specific Resources
-+++++++++++++++++++++++++++++
-
-Use the `setMessageDrivenContext()` or `ejbCreate()` method to cache
-bean specific resources, and release those resources from the
-`ejbRemove()` method.
-
-[[abedm]][[GSPTG00116]][[limit-use-of-jms-connections]]
-
-Limit Use of JMS Connections
-++++++++++++++++++++++++++++
-
-When designing an application that uses JMS connections make sure you
-use a methodology that sparingly uses connections, by either pooling
-them or using the same connection for multiple sessions.
-
-The JMS connection uses two threads and the sessions use one thread
-each. Since these threads are not taken from a pool and the resultant
-objects aren't pooled, you could run out of memory during periods of
-heavy usage.
-
-One workaround is to move `createTopicConnection` into the `init` of the
-servlet.
-
-Make sure to specifically close the session, or it will stay open, which
-ties up resources.
diff --git a/docs/performance-tuning-guide/src/main/jbake/content/tuning-glassfish.adoc b/docs/performance-tuning-guide/src/main/jbake/content/tuning-glassfish.adoc
deleted file mode 100644
index 37073d3..0000000
--- a/docs/performance-tuning-guide/src/main/jbake/content/tuning-glassfish.adoc
+++ /dev/null
@@ -1,1988 +0,0 @@
-type=page
-status=published
-title=Tuning the GlassFish Server
-next=tuning-java.html
-prev=tuning-apps.html
-~~~~~~
-Tuning the GlassFish Server
-===========================
-
-[[GSPTG00005]][[abedn]]
-
-
-[[tuning-the-glassfish-server]]
-3 Tuning the GlassFish Server
------------------------------
-
-This chapter describes some ways to tune your GlassFish Server
-installation for optimum performance.
-
-Note that while this chapter describes numerous interactions with both
-the GlassFish Server Administration Console and the command-line
-interface, it is not intended to provide exhaustive descriptions of
-either. For complete information about using the Administration Console,
-refer to the Administration Console online help. For complete
-information about using the GlassFish Server command-line interface,
-refer to the other titles in the GlassFish Server documentation set at
-`http://docs.oracle.com/docs/cd/E18930_01/index.html`.
-
-The following topics are addressed here:
-
-* link:#gkxwm[Using the GlassFish Server Performance Tuner]
-* link:#abedo[Deployment Settings]
-* link:#abeds[Logger Settings]
-* link:#abedw[Web Container Settings]
-* link:#abeea[EJB Container Settings]
-* link:#abeel[Java Message Service Settings]
-* link:#abeem[Transaction Service Settings]
-* link:#abeet[HTTP Service Settings]
-* link:#abegk[Network Listener Settings]
-* link:#gkxjt[Transport Settings]
-* link:#abehk[Thread Pool Settings]
-* link:#abegt[ORB Settings]
-* link:#abehp[Resource Settings]
-* link:#gkxvd[Load Balancer Settings]
-
-[[gkxwm]][[GSPTG00055]][[using-the-glassfish-server-performance-tuner]]
-
-Using the GlassFish Server Performance Tuner
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can significantly improve the performance of GlassFish Server and
-the applications deployed on it by adjusting a few deployment and server
-configuration settings. These changes can be made manually, as described
-in this chapter, or by using the built-in Performance Tuner in the
-GlassFish Server Administration Console.
-
-The Performance Tuner recommends server settings to suit the needs of
-your GlassFish Server deployment. It helps you reach an optimal
-configuration, although finer tuning might be needed in case of specific
-requirements. You can configure performance tuning for the entire
-domain, or for individual GlassFish Server instances or clusters. The
-Tuner performs a static analysis of GlassFish Server resources and
-throughput requirements. Note that no dynamic inspection of the system
-is performed.
-
-For complete information about using the Performance Tuning features
-available through the GlassFish Server Administration Console, refer to
-the Administration Console online help. You may also want to refer to
-the following resources for additional information:
-
-* To view a demonstration video showing how to use the GlassFish Server
-Performance Tuner, see the
-http://www.youtube.com/watch?v=FavsE2pzAjc[Oracle GlassFish Server 3.1 -
-Performance Tuner demo] (`http://www.youtube.com/watch?v=FavsE2pzAjc`).
-* To find additional Performance Tuning development information, see the
-http://blogs.oracle.com/jenblog/entry/performance_tuner_in_oracle_glassfish[Performance
-Tuner in Oracle GlassFish Server 3.1]
-(`http://blogs.oracle.com/jenblog/entry/performance_tuner_in_oracle_glassfish`)
-blog.
-
-[[abedo]][[GSPTG00056]][[deployment-settings]]
-
-Deployment Settings
-~~~~~~~~~~~~~~~~~~~
-
-Deployment settings can have significant impact on performance. Follow
-these guidelines when configuring deployment settings for best
-performance:
-
-* link:#abedp[Disable Auto-Deployment]
-* link:#abedq[Use Pre-compiled JavaServer Pages]
-* link:#abedr[Disable Dynamic Application Reloading]
-
-[[abedp]][[GSPTG00180]][[disable-auto-deployment]]
-
-Disable Auto-Deployment
-^^^^^^^^^^^^^^^^^^^^^^^
-
-Enabling auto-deployment will adversely affect deployment, though it is
-a convenience in a development environment. For a production system,
-disable auto-deploy to optimize performance. If auto-deployment is
-enabled, then the Reload Poll Interval setting can have a significant
-performance impact.
-
-To enable or disable auto-deployment from the GlassFish Server
-Administration Console, navigate to the Domain node and then click the
-Applications Configuration tab. Refer to the Administration Console for
-further instructions. Alternatively, refer to "link:../application-deployment-guide/deploying-applications.html#GSDPG00041[To
-Deploy an Application or Module Automatically]" in GlassFish Server Open
-Source Edition Application Deployment Guide for instructions on enabling
-or disabling auto-deployment.
-
-[[abedq]][[GSPTG00181]][[use-pre-compiled-javaserver-pages]]
-
-Use Pre-compiled JavaServer Pages
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Compiling JSP files is resource intensive and time consuming.
-Pre-compiling JSP files before deploying applications on the server will
-improve application performance. When you do so, only the resulting
-servlet class files will be deployed.
-
-You can specify to precompile JSP files when you deploy an application
-through the Administration Console or `deploy` subcommand. You can also
-specify to pre-compile JSP files for a deployed application with the
-Administration Console. Navigate to the Domain node and then click the
-Applications Configuration tab. Refer to the Administration Console for
-further instructions.
-
-[[abedr]][[GSPTG00182]][[disable-dynamic-application-reloading]]
-
-Disable Dynamic Application Reloading
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-If dynamic reloading is enabled, the server periodically checks for
-changes in deployed applications and automatically reloads the
-application with the changes. Dynamic reloading is intended for
-development environments and is also incompatible with session
-persistence. To improve performance, disable dynamic class reloading.
-
-You can use the Administration Console to disable dynamic class
-reloading for an application that is already deployed. Navigate to the
-Domain node and then click the Applications Configuration tab. Refer to
-the Administration Console for further instructions.
-
-[[abeds]][[GSPTG00057]][[logger-settings]]
-
-Logger Settings
-~~~~~~~~~~~~~~~
-
-The GlassFish Server produces writes log messages and exception stack
-trace output to the log file in the logs directory of the instance,
-domain-dir`/logs`. The volume of log activity can impact server
-performance; particularly in benchmarking situations.
-
-[[abedt]][[GSPTG00183]][[general-settings]]
-
-General Settings
-^^^^^^^^^^^^^^^^
-
-In general, writing to the system log slows down performance slightly;
-and increased disk access (increasing the log level, decreasing the file
-rotation limit or time limit) also slows down the application.
-
-Also, make sure that any custom log handler does not log to a slow
-device like a network file system since this can adversely affect
-performance.
-
-[[abedu]][[GSPTG00184]][[log-levels]]
-
-Log Levels
-^^^^^^^^^^
-
-Set the log level for the server and its subsystems in the GlassFish
-Server Administration Console. Navigate to the
-Configurations>configuration-name>Logger Settings page, and follow the
-instructions in the online help. Alternatively, you can configure
-logging by following the instructions in "link:../administration-guide/logging.html#GSADG00010[Administering
-the Logging Service]" in GlassFish Server Open Source Edition
-Administration Guide.
-
-[[abedw]][[GSPTG00058]][[web-container-settings]]
-
-Web Container Settings
-~~~~~~~~~~~~~~~~~~~~~~
-
-Set Web container settings in the GlassFish Server Administration
-Console by navigating to the Configurations>configuration-name>Web
-Container node. Follow the instructions in the online help for more
-information. Alternatively, you can configure Web container settings by
-following the instructions in "link:../administration-guide/webapps.html#GSADG00009[Administering Web
-Applications]" in GlassFish Server Open Source Edition Administration
-Guide.
-
-* link:#abedx[Session Properties: Session Timeout]
-* link:#abedy[Manager Properties: Reap Interval]
-* link:#abedz[Disable Dynamic JSP Reloading]
-
-[[abedx]][[GSPTG00185]][[session-properties-session-timeout]]
-
-Session Properties: Session Timeout
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Session timeout determines how long the server maintains a session if a
-user does not explicitly invalidate the session. The default value is 30
-minutes. Tune this value according to your application requirements.
-Setting a very large value for session timeout can degrade performance
-by causing the server to maintain too many sessions in the session
-store. However, setting a very small value can cause the server to
-reclaim sessions too soon.
-
-[[abedy]][[GSPTG00186]][[manager-properties-reap-interval]]
-
-Manager Properties: Reap Interval
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Modifying the reap interval can improve performance, but setting it
-without considering the nature of your sessions and business logic can
-cause data inconsistency, especially for time-based
-persistence-frequency.
-
-For example, if you set the reap interval to 60 seconds, the value of
-session data will be recorded every 60 seconds. But if a client accesses
-a servlet to update a value at 20 second increments, then
-inconsistencies will result.
-
-For example, consider the following online auction scenario:
-
-* Bidding starts at $5, in 60 seconds the value recorded will be $8
-(three 20 second intervals).
-* During the next 40 seconds, the client starts incrementing the price.
-The value the client sees is $10.
-* During the client's 20 second rest, the GlassFish Server stops and
-starts in 10 seconds. As a result, the latest value recorded at the 60
-second interval ($8) is be loaded into the session.
-* The client clicks again expecting to see $11; but instead sees is $9,
-which is incorrect.
-* So, to avoid data inconsistencies, take into the account the expected
-behavior of the application when adjusting the reap interval.
-
-[[abedz]][[GSPTG00187]][[disable-dynamic-jsp-reloading]]
-
-Disable Dynamic JSP Reloading
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-On a production system, improve web container performance by disabling
-dynamic JSP reloading. To do so, edit the `default-web.xml` file in the
-`config` directory for each instance. Change the servlet definition for
-a JSP file to look like this:
-
-[source,oac_no_warn]
-----
-<servlet>
-  <servlet-name>jsp</servlet-name>
-  <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
-  <init-param>
-    <param-name>development</param-name>
-    <param-value>false</param-value>
-  </init-param>
-  <init-param>
-    <param-name>xpoweredBy</param-name>
-    <param-value>true</param-value>
-  </init-param>
-  <init-param>
-    <param-name>genStrAsCharArray</param-name>
-    <param-value>true</param-value>
-  </init-param>  <load-on-startup>3</load-on-startup>
-</servlet>
-----
-
-[[abeea]][[GSPTG00059]][[ejb-container-settings]]
-
-EJB Container Settings
-~~~~~~~~~~~~~~~~~~~~~~
-
-The EJB Container has many settings that affect performance. As with
-other areas, use monitor the EJB Container to track its execution and
-performance.
-
-You can configure most EJB container settings from the GlassFish Server
-Administration Console by navigating to the
-Configurations>configuration-name>EJB Container node and then following
-the instructions in the online help.
-
-[[abeeb]][[GSPTG00188]][[monitoring-the-ejb-container]]
-
-Monitoring the EJB Container
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Monitoring the EJB container is disabled by default. You can enable EJB
-monitoring through the GlassFish Server Administration Console by
-navagating to the the Configurations>configuration-name>Monitoring node
-and then following the instructions in the online help. Set the
-monitoring level to LOW for to monitor all deployed EJB components, EJB
-pools, and EJB caches. Set the monitoring level to HIGH to also monitor
-EJB business methods.
-
-[[abeec]][[GSPTG00189]][[tuning-the-ejb-container]]
-
-Tuning the EJB Container
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-The EJB container caches and pools EJB components for better
-performance. Tuning the cache and pool properties can provide
-significant performance benefits to the EJB container.
-
-The pool settings are valid for stateless session and entity beans while
-the cache settings are valid for stateful session and entity beans.
-
-The following topics are addressed here:
-
-* link:#abeed[Overview of EJB Pooling and Caching]
-* link:#abeee[Tuning the EJB Pool]
-* link:#abeeg[Tuning the EJB Cache]
-* link:#abeei[Pool and Cache Settings for Individual EJB Components]
-* link:#abeej[Commit Option]
-
-[[abeed]][[GSPTG00117]][[overview-of-ejb-pooling-and-caching]]
-
-Overview of EJB Pooling and Caching
-+++++++++++++++++++++++++++++++++++
-
-Both stateless session beans and entity beans can be pooled to improve
-server performance. In addition, both stateful session beans and entity
-beans can be cached to improve performance.
-
-[[sthref7]][[gacmo]]
-
-Table 3-1 Bean Type Pooling or Caching
-
-[width="100%",cols="<34%,<33%,<33%",options="header",]
-|==========================
-|Bean Type |Pooled |Cached
-|Stateless Session |Yes |No
-|Stateful Session |No |Yes
-|Entity |Yes |Yes
-|==========================
-
-
-The difference between a pooled bean and a cached bean is that pooled
-beans are all equivalent and indistinguishable from one another. Cached
-beans, on the contrary, contain conversational state in the case of
-stateful session beans, and are associated with a primary key in the
-case of entity beans. Entity beans are removed from the pool and added
-to the cache on `ejbActivate()` and removed from the cache and added to
-the pool on `ejbPassivate()`. `ejbActivate()` is called by the container
-when a needed entity bean is not in the cache. `ejbPassivate()` is
-called by the container when the cache grows beyond its configured
-limits.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-If you develop and deploy your EJB components using Oracle Java Studio,
-then you need to edit the individual bean descriptor settings for bean
-pool and bean cache. These settings might not be suitable for
-production-level deployment.
-
-|=======================================================================
-
-
-[[abeee]][[GSPTG00118]][[tuning-the-ejb-pool]]
-
-Tuning the EJB Pool
-+++++++++++++++++++
-
-A bean in the pool represents the pooled state in the EJB lifecycle.
-This means that the bean does not have an identity. The advantage of
-having beans in the pool is that the time to create a bean can be saved
-for a request. The container has mechanisms that create pool objects in
-the background, to save the time of bean creation on the request path.
-
-Stateless session beans and entity beans use the EJB pool. Keeping in
-mind how you use stateless session beans and the amount of traffic your
-server handles, tune the pool size to prevent excessive creation and
-deletion of beans.
-
-[[abeef]][[GSPTG00013]][[ejb-pool-settings]]
-
-EJB Pool Settings
-
-An individual EJB component can specify cache settings that override
-those of the EJB container in the `<bean-pool>` element of the EJB
-component's `sun-ejb-jar.xml` deployment descriptor.
-
-The EJB pool settings are:
-
-* Initial and Minimum Pool Size: the initial and minimum number of beans
-maintained in the pool. Valid values are from 0 to `MAX_INTEGER,` and
-the default value is 8. The corresponding EJB deployment descriptor
-attribute is `steady-pool-size.` +
-Set this property to a number greater than zero for a moderately loaded
-system. Having a value greater than zero ensures that there is always a
-pooled instance to process an incoming request.
-* Maximum Pool Size: the maximum number of connections that can be
-created to satisfy client requests. Valid values are from zero to
-`MAX_INTEGER`., and the default is 32. A value of zero means that the
-size of the pool is unbounded. The potential implication is that the JVM
-heap will be filled with objects in the pool. The corresponding EJB
-deployment descriptor attribute is `max-pool-size`. +
-Set this property to be representative of the anticipated high load of
-the system. An very large pool wastes memory and can slow down the
-system. A very small pool is also inefficient due to contention.
-* Pool Resize Quantity: the number of beans to be created or deleted
-when the cache is being serviced by the server. Valid values are from
-zero to `MAX_INTEGER` and default is 16. The corresponding EJB
-deployment descriptor attribute is `resize-quantity`. +
-Be sure to re-calibrate the pool resize quantity when you change the
-maximum pool size, to maintain an equilibrium. Generally, a larger
-maximum pool size should have a larger pool resize quantity.
-* Pool Idle Timeout: the maximum time that a stateless session bean,
-entity bean, or message-driven bean is allowed to be idle in the pool.
-After this time, the bean is destroyed if the bean in case is a
-stateless session bean or a message driver bean. This is a hint to
-server. The default value is 600 seconds. The corresponding EJB
-deployment descriptor attribute is `pool-idle-timeout-in-seconds`. +
-If there are more beans in the pool than the maximum pool size, the pool
-drains back to initial and minimum pool size, in steps of pool resize
-quantity at an interval specified by the pool idle timeout. If the
-resize quantity is too small and the idle timeout large, you will not
-see the pool draining back to steady size quickly enough.
-
-[[abeeg]][[GSPTG00119]][[tuning-the-ejb-cache]]
-
-Tuning the EJB Cache
-++++++++++++++++++++
-
-A bean in the cache represents the ready state in the EJB lifecycle.
-This means that the bean has an identity (for example, a primary key or
-session ID) associated with it.
-
-Beans moving out of the cache have to be passivated or destroyed
-according to the EJB lifecycle. Once passivated, a bean has to be
-activated to come back into the cache. Entity beans are generally stored
-in databases and use some form of query language semantics to load and
-store data. Session beans have to be serialized when storing them upon
-passivation onto the disk or a database; and similarly have to be
-deserialized upon activation.
-
-Any incoming request using these "ready" beans from the cache avoids the
-overhead of creation, setting identity, and potentially activation. So,
-theoretically, it is good to cache as many beans as possible. However,
-there are drawbacks to caching:
-
-* Memory consumed by all the beans affects the heap available in the
-Virtual Machine.
-* Increasing objects and memory taken by cache means longer, and
-possibly more frequent, garbage collection.
-* The application server might run out of memory unless the heap is
-carefully tuned for peak loads.
-
-Keeping in mind how your application uses stateful session beans and
-entity beans, and the amount of traffic your server handles, tune the
-EJB cache size and timeout settings to minimize the number of
-activations and passivations.
-
-[[abeeh]][[GSPTG00014]][[ejb-cache-settings]]
-
-EJB Cache Settings
-
-An individual EJB component can specify cache settings that override
-those of the EJB container in the `<bean-cache>` element of the EJB
-component's `sun-ejb-jar.xml` deployment descriptor.
-
-The EJB cache settings are:
-
-* Max Cache Size: Maximum number of beans in the cache. Make this
-setting greater than one. The default value is 512. A value of zero
-indicates the cache is unbounded, which means the size of the cache is
-governed by Cache Idle Timeout and Cache Resize Quantity. The
-corresponding EJB deployment descriptor attribute is `max-cache-size`.
-* Cache Resize Quantity: Number of beans to be created or deleted when
-the cache is serviced by the server. Valid values are from zero to
-MAX_INTEGER, and the default is 16. The corresponding EJB deployment
-descriptor attribute is `resize-quantity`.
-* Removal Timeout: Amount of time that a stateful session bean remains
-passivated (idle in the backup store). If a bean was not accessed after
-this interval of time, then it is removed from the backup store and will
-not be accessible to the client. The default value is 60 minutes. The
-corresponding EJB deployment descriptor attribute is
-`removal-timeout-in-seconds`.
-* Removal Selection Policy: Algorithm used to remove objects from the
-cache. The corresponding EJB deployment descriptor attribute is
-`victim-selection-policy`. Choices are:
-
-** NRU (not recently used). This is the default, and is actually
-pseudo-random selection policy.
-
-** FIFO (first in, first out)
-
-** LRU (least recently used)
-* Cache Idle Timeout: Maximum time that a stateful session bean or
-entity bean is allowed to be idle in the cache. After this time, the
-bean is passivated to the backup store. The default value is 600
-seconds. The corresponding EJB deployment descriptor attribute is
-`cache-idle-timeout-in-seconds`.
-* Refresh period: Rate at which a read-only-bean is refreshed from the
-data source. Zero (0) means that the bean is never refreshed. The
-default is 600 seconds. The corresponding EJB deployment descriptor
-attribute is `refresh-period-in-seconds`. Note: this setting does not
-have a custom field in the Admin Console. To set it, use the Add
-Property button in the Additional Properties section.
-
-[[abeei]][[GSPTG00120]][[pool-and-cache-settings-for-individual-ejb-components]]
-
-Pool and Cache Settings for Individual EJB Components
-+++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-Individual EJB pool and cache settings in the `sun-ejb-jar.xml`
-deployment descriptor override those of the EJB container. The following
-table lists the cache and pool settings for each type of EJB component.
-
-[width="100%",cols="<35%,<13%,<13%,<13%,<13%,<13%",options="header",]
-|=======================================================================
-|Cache or Pool Setting |Stateful Session Bean |Stateless Session Bean
-|Entity Bean |Entity Read-Only Bean |Message Driven Bean
-|`cache-resize-quantity` |X | + |X |X | +
-
-|`max-cache-size` |X | + |X |X | +
-
-|`cache-idle-timeout-in-seconds` |X | + |X |X | +
-
-|`removal-timeout-in-seconds` |X | + |X |X | +
-
-|`victim-selection-policy` |X | + |X |X | +
-
-|`refresh-period-in-seconds` | + | + | + |X | +
-
-|`steady-pool-size` | + |X |X |X | +
-
-|`pool-resize-quantity` | + |X |X |X |X
-
-|`max-pool-size` | + |X |X |X |X
-
-|`pool-idle-timeout-in-seconds` | + |X |X |X |X
-|=======================================================================
-
-
-[[abeej]][[GSPTG00121]][[commit-option]]
-
-Commit Option
-+++++++++++++
-
-The commit option controls the action taken by the EJB container when an
-EJB component completes a transaction. The commit option has a
-significant impact on performance.
-
-The following are the possible values for the commit option:
-
-* Commit option B: When a transaction completes, the bean is kept in the
-cache and retains its identity. The next invocation for the same primary
-key can use the cached instance. The EJB container will call the bean's
-`ejbLoad()` method before the method invocation to synchronize with the
-database.
-* Commit option C: When a transaction completes, the EJB container calls
-the bean's `ejbPassivate()` method, the bean is disassociated from its
-primary key and returned to the free pool. The next invocation for the
-same primary key will have to get a free bean from the pool, set the
-`PrimaryKey` on this instance, and then call `ejbActivate()` on the
-instance. Again, the EJB container will call the bean's `ejbLoad()`
-before the method invocation to synchronize with the database.
-
-Option B avoids `ejbAcivate()` and `ejbPassivate()` calls. So, in most
-cases it performs better than option C since it avoids some overhead in
-acquiring and releasing objects back to pool.
-
-However, there are some cases where option C can provide better
-performance. If the beans in the cache are rarely reused and if beans
-are constantly added to the cache, then it makes no sense to cache
-beans. With option C is used, the container puts beans back into the
-pool (instead of caching them) after method invocation or on transaction
-completion. This option reuses instances better and reduces the number
-of live objects in the JVM, speeding garbage collection.
-
-[[abeek]][[GSPTG00015]][[determining-the-best-commit-option]]
-
-Determining the Best Commit Option
-
-To determine whether to use commit option B or commit option C, first
-take a look at the cache-hits value using the monitoring command for the
-bean. If the cache hits are much higher than cache misses, then option B
-is an appropriate choice. You might still have to change the
-`max-cache-size` and `cache-resize-quantity` to get the best result.
-
-If the cache hits are too low and cache misses are very high, then the
-application is not reusing the bean instances and hence increasing the
-cache size (using `max-cache-size`) will not help (assuming that the
-access pattern remains the same). In this case you might use commit
-option C. If there is no great difference between cache-hits and
-cache-misses then tune `max-cache-size`, and probably
-`cache-idle-timeout-in-seconds`.
-
-[[abeel]][[GSPTG00060]][[java-message-service-settings]]
-
-Java Message Service Settings
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The Type attribute that determines whether the Java Message Service
-(JMS) is on local or remote system affects performance. Local JMS
-performance is better than remote JMS performance. However, a remote
-cluster can provide failover capabilities and can be administrated
-together, so there may be other advantages of using remote JMS. For more
-information on using JMS, see "link:../administration-guide/jms.html#GSADG00020[Administering the Java
-Message Service (JMS)]" in GlassFish Server Open Source Edition
-Administration Guide.
-
-[[abeem]][[GSPTG00061]][[transaction-service-settings]]
-
-Transaction Service Settings
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The transaction manager makes it possible to commit and roll back
-distributed transactions.
-
-A distributed transactional system writes transactional activity into
-transaction logs so that they can be recovered later. But writing
-transactional logs has some performance penalty.
-
-The following topics are addressed here:
-
-* link:#abeen[Monitoring the Transaction Service]
-* link:#abeep[Tuning the Transaction Service]
-
-[[abeen]][[GSPTG00190]][[monitoring-the-transaction-service]]
-
-Monitoring the Transaction Service
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Transaction Manager monitoring is disabled by default. Enable monitoring
-of the transaction service through the GlassFish Server Administration
-Console by navigating to the
-Configurations>configuration-name>Monitoring node. Refer to the
-Administration Console for complete instructions.
-
-You can also enable monitoring with these commands:
-
-[source,oac_no_warn]
-----
-set serverInstance.transaction-service.monitoringEnabled=true
-reconfig serverInstance
-----
-
-[[abeeo]][[GSPTG00122]][[viewing-monitoring-information]]
-
-Viewing Monitoring Information
-++++++++++++++++++++++++++++++
-
-To view monitoring information for the transaction service in the
-GlassFish Server Administration Console, navigate to the server (Admin
-Server) node and then select the Monitor tab.
-
-The following statistics are gathered on the transaction service:
-
-* `total-tx-completed` Completed transactions.
-* `total-tx-rolled-back` Total rolled back transactions.
-* `total-tx-inflight` Total inflight (active) transactions.
-* `isFrozen` Whether transaction system is frozen (true or false)
-* `inflight-tx` List of inflight (active) transactions.
-
-[[abeep]][[GSPTG00191]][[tuning-the-transaction-service]]
-
-Tuning the Transaction Service
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This property can be used to disable the transaction logging, where the
-performance is of utmost importance more than the recovery. This
-property, by default, won't exist in the server configuration.
-
-Most Transaction Service tuning tasks can be performed through the
-GlassFish Server Administration Console by navigating to the
-Configurations>configuration-name>Transaction Service node and then
-following the instructions in the online help. Alternatively, you can
-follow the instructions in "link:../administration-guide/transactions.html#GSADG00022[Administering
-Transactions]" in GlassFish Server Open Source Edition Administration
-Guide.
-
-[[abeeq]][[GSPTG00123]][[disable-distributed-transaction-logging]]
-
-Disable Distributed Transaction Logging
-+++++++++++++++++++++++++++++++++++++++
-
-You can disable transaction logging through the Administration Console
-or by using the following `asadmin set` subcommand:
-
-[source,oac_no_warn]
-----
-asadmin set
-server1.transaction-service.disable-distributed-transaction-logging=true
-----
-
-Disabling transaction logging can improve performance. Setting it to
-false (the default), makes the transaction service write transactional
-activity to transaction logs so that transactions can be recovered. If
-Recover on Restart is checked, this property is ignored.
-
-Set this property to true only if performance is more important than
-transaction recovery.
-
-[[abeer]][[GSPTG00124]][[recover-on-restart-automatic-recovery]]
-
-Recover On Restart (Automatic Recovery)
-+++++++++++++++++++++++++++++++++++++++
-
-You can set the Recover on Restart attribute through the Administration
-Console or by entering the following `asadmin set` subcommand:
-
-[source,oac_no_warn]
-----
-asadmin set server1.transaction-service.automatic-recovery=false
-----
-
-When Recover on Restart is true, the server will always perform
-transaction logging, regardless of the Disable Distributed Transaction
-Logging attribute.
-
-If Recover on Restart is false, then:
-
-* If Disable Distributed Transaction Logging is false (the default),
-then the server will write transaction logs.
-* If Disable Distributed Transaction Logging is true, then the server
-will not write transaction logs. +
-Not writing transaction logs will give approximately twenty percent
-improvement in performance, but at the cost of not being able to recover
-from any interrupted transactions. The performance benefit applies to
-transaction-intensive tests. Gains in real applications may be less.
-
-[[abees]][[GSPTG00125]][[keypoint-interval]]
-
-Keypoint Interval
-+++++++++++++++++
-
-The keypoint interval determines how often entries for completed
-transactions are removed from the log file. Keypointing prevents a
-process log from growing indefinitely.
-
-Frequent keypointing is detrimental to performance. The default value of
-the Keypoint Interval is 2048, which is sufficient in most cases.
-
-[[abeet]][[GSPTG00062]][[http-service-settings]]
-
-HTTP Service Settings
-~~~~~~~~~~~~~~~~~~~~~
-
-Tuning the monitoring and access logging settings for the HTTP server
-instances that handle client requests are important parts of ensuring
-peak GlassFish Server performance.
-
-The following topics are addressed here:
-
-* link:#abeeu[Monitoring the HTTP Service]
-* link:#abefk[HTTP Service Access Logging]
-
-[[abeeu]][[GSPTG00192]][[monitoring-the-http-service]]
-
-Monitoring the HTTP Service
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Disabling the collection of monitoring statistics can increase overall
-GlassFish Server performance. You can enable or disable monitoring
-statistics collection for the HTTP service using either the
-Administration Console or `asadmin` subcommands.
-
-Refer to "link:../administration-guide/monitoring.html#GSADG00011[Administering the Monitoring Service]" in
-GlassFish Server Open Source Edition Administration Guide for complete
-instructions on configuring the monitoring service using `asadmin`
-subcommands.
-
-If using the Administration Console, click the
-Configurations>configuration-name>Monitoring node for the configuration
-for which you want to enable or disable monitoring for selected
-components. Refer to the Administration Console online help for complete
-instructions.
-
-For instructions on viewing comprehensive monitoring statistics using
-`asadmin` subcommands, see "link:../administration-guide/monitoring.html#GSADG00560[Viewing Comprehensive
-Monitoring Data]" in GlassFish Server Open Source Edition Administration
-Guide. If using the Administration Console, you can view monitoring
-statistics by navigating to the server (Admin Server) node, and then
-clicking the Monitor tab. Refer to the online help for configuring
-different views of the available monitoring statistics.
-
-When viewing monitoring statistics, some key performance-related
-information to review includes the following:
-
-* link:#abeew[DNS Cache Information (dns)]
-* link:#abefh[File Cache Information (file-cache)]
-* link:#abefi[Keep Alive (keep-alive)]
-* link:#abefg[Connection Queue]
-
-[[abeew]][[GSPTG00126]][[dns-cache-information-dns]]
-
-DNS Cache Information (dns)
-+++++++++++++++++++++++++++
-
-The DNS cache caches IP addresses and DNS names. The DNS cache is
-disabled by default. In the DNS Statistics for Process ID All page under
-Monitor in the web-based Administration interface the following
-statistics are displayed:
-
-* link:#abeex[Enabled]
-* link:#abeey[CacheEntries (CurrentCacheEntries / MaxCacheEntries)]
-* link:#abeez[HitRatio]
-* link:#abefa[Caching DNS Entries]
-* link:#abefb[Limit DNS Lookups to Asynchronous]
-* link:#abefc[Enabled]
-* link:#abefd[NameLookups]
-* link:#abefe[AddrLookups]
-* link:#abeff[LookupsInProgress]
-
-[[abeex]][[GSPTG00016]][[enabled]]
-
-Enabled
-
-If the DNS cache is disabled, the rest of this section is not displayed.
-
-By default, the DNS cache is off. Enable DNS caching in the
-Administration Console by clicking the
-Configurations>configuration-name>Network Config>http-listener-name
-node. Click the HTTP tab and enable the DNS Lookup option.
-
-[[abeey]][[GSPTG00017]][[cacheentries-currentcacheentries-maxcacheentries]]
-
-CacheEntries (CurrentCacheEntries / MaxCacheEntries)
-
-The number of current cache entries and the maximum number of cache
-entries. A single cache entry represents a single IP address or DNS name
-lookup. Make the cache as large as the maximum number of clients that
-access your web site concurrently. Note that setting the cache size too
-high is a waste of memory and degrades performance.
-
-Set the maximum size of the DNS cache by entering or changing the value
-in the in the Administration Console by clicking the
-Configurations>configuration-name>Network Config>http-listener-name
-node. Click the File tab and set the desired options.
-
-[[abeez]][[GSPTG00018]][[hitratio]]
-
-HitRatio
-
-The hit ratio is the number of cache hits divided by the number of cache
-lookups.
-
-This setting is not tunable.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-If you turn off DNS lookups on your server, host name restrictions will
-not work and IP addresses will appear instead of host names in log
-files.
-
-|=======================================================================
-
-
-[[abefa]][[GSPTG00019]][[caching-dns-entries]]
-
-Caching DNS Entries
-
-It is possible to also specify whether to cache the DNS entries. If you
-enable the DNS cache, the server can store hostname information after
-receiving it. If the server needs information about the client in the
-future, the information is cached and available without further
-querying. specify the size of the DNS cache and an expiration time for
-DNS cache entries. The DNS cache can contain 32 to 32768 entries; the
-default value is 1024. Values for the time it takes for a cache entry to
-expire can range from 1 second to 1 year specified in seconds; the
-default value is 1200 seconds (20 minutes).
-
-[[abefb]][[GSPTG00020]][[limit-dns-lookups-to-asynchronous]]
-
-Limit DNS Lookups to Asynchronous
-
-Do not use DNS lookups in server processes because they are
-resource-intensive. If you must include DNS lookups, make them
-asynchronous.
-
-[[abefc]][[GSPTG00021]][[enabled-1]]
-
-Enabled
-
-If asynchronous DNS is disabled, the rest of this section will not be
-displayed.
-
-[[abefd]][[GSPTG00022]][[namelookups]]
-
-NameLookups
-
-The number of name lookups (DNS name to IP address) that have been done
-since the server was started. This setting is not tunable.
-
-[[abefe]][[GSPTG00023]][[addrlookups]]
-
-AddrLookups
-
-The number of address loops (IP address to DNS name) that have been done
-since the server was started. This setting is not tunable.
-
-[[abeff]][[GSPTG00024]][[lookupsinprogress]]
-
-LookupsInProgress
-
-The current number of lookups in progress.
-
-[[abefh]][[GSPTG00127]][[file-cache-information-file-cache]]
-
-File Cache Information (file-cache)
-+++++++++++++++++++++++++++++++++++
-
-The file cache caches static content so that the server handles requests
-for static content quickly. The file-cache section provides statistics
-on how your file cache is being used.
-
-For information about tuning the file cache, see link:#gkxit[File Cache
-Settings].
-
-The Monitoring page lists the following file cache statistics:
-
-* Number of Hits on Cached File Content
-* Number of Cache Entries
-* Number of Hits on Cached File Info
-* Heap Space Used for Cache
-* Number of Misses on Cached File Content
-* Cache Lookup Misses
-* Number of Misses on Cached File Content
-* Max Age of a Cache Entry
-* Max Number of Cache Entries
-* Max Number of Open Entries
-* Is File Cached Enabled?
-* Maximum Memory Map to be Used for Cache
-* Memory Map Used for cache
-* Cache Lookup Hits
-* Open Cache Entries: The number of current cache entries and the
-maximum number of cache entries are both displayed. A single cache entry
-represents a single URI. This is a tunable setting.
-* Maximum Heap Space to be Used for Cache
-
-[[abefi]][[GSPTG00128]][[keep-alive-keep-alive]]
-
-Keep Alive (keep-alive)
-+++++++++++++++++++++++
-
-The following are statistics related to the Keep Alive system. The most
-important settings you can tune here relate to HTTP Timeout. See
-link:#abefu[Timeout] for more information.
-
-* Connections Terminated Due to Client Connection Timed Out
-* Max Connection Allowed in Keep-alive
-* Number of Hits
-* Connections in Keep-alive Mode
-* Connections not Handed to Keep-alive Thread Due to too Many Persistent
-Connections
-* The Time in Seconds Before Idle Connections are Closed
-* Connections Closed Due to Max Keep-alive Being Exceeded
-
-[[abefg]][[GSPTG00129]][[connection-queue]]
-
-Connection Queue
-++++++++++++++++
-
-* Total Connections Queued: Total connections queued is the total number
-of times a connection has been queued. This includes newly accepted
-connections and connections from the keep-alive system.
-* Average Queuing Delay: Average queueing delay is the average amount of
-time a connection spends in the connection queue. This represents the
-delay between when a request connection is accepted by the server, and a
-request processing thread (also known as a session) begins servicing the
-request.
-
-[[abefk]][[GSPTG00193]][[http-service-access-logging]]
-
-HTTP Service Access Logging
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Accessing Logging can be tuned using several `asadmin` subcommands.
-Refer to "link:../administration-guide/monitoring.html#GSADG00011[Administering the Monitoring Service]" in
-GlassFish Server Open Source Edition Administration Guide for
-information about using these subcommands.
-
-If using the Administration Console, Access Logging is configured from
-the Configurations>configuration-name>HTTP Service page. Refer to the
-Administration Console online help for complete instructions about the
-options on this page.
-
-To enable or disable access logging, check or uncheck the Access Logging
-Enabled checkbox. Access Logging is disabled by default.
-
-When performing benchmarking, ensure that Access Logging is disabled. If
-Access Logging is enabled, it is recommended that you also enable
-Rotation to ensure that the logs do not run out of disk space.
-
-[[abegk]][[GSPTG00063]][[network-listener-settings]]
-
-Network Listener Settings
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can tune Network Listener settings from the command line by using
-the instructions in "link:../administration-guide/http_https.html#GSADG00588[Administering HTTP Network
-Listeners]" in GlassFish Server Open Source Edition Administration
-Guide.
-
-If using the Administration Console, navigate to the Configurations
->configuration-name>Network Config>Network Listeners>listener-name node,
-and then click the tab for the desired configuration page. Refer to the
-online help for complete instructions about the options on these tabs.
-
-GlassFish Server Network Listener performance can be enhanced by
-modifying settings on the following Edit Network Listener tabs in the
-Administration Console:
-
-* link:#abegl[General Settings]
-* link:#gkxjd[HTTP Settings]
-* link:#gkxit[File Cache Settings]
-
-[[abegl]][[GSPTG00194]][[general-settings-1]]
-
-General Settings
-^^^^^^^^^^^^^^^^
-
-For machines with only one network interface card (NIC), set the network
-address to the IP address of the machine (for example, 192.18.80.23
-instead of default 0.0.0.0). If you specify an IP address other than
-0.0.0.0, the server will make one less system call per connection.
-Specify an IP address other than 0.0.0.0 for best possible performance.
-If the server has multiple NIC cards then create multiple listeners for
-each NIC.
-
-[[gkxjd]][[GSPTG00195]][[http-settings]]
-
-HTTP Settings
-^^^^^^^^^^^^^
-
-The following settings on the HTTP tab can significantly affect
-performance:
-
-* link:#abeft[Max Connections]
-* link:#abegd[DNS Lookup Enabled]
-* link:#abefu[Timeout]
-* link:#abefq[Header Buffer Length]
-
-[[abeft]][[GSPTG00130]][[max-connections]]
-
-Max Connections
-+++++++++++++++
-
-Max Connections controls the number of requests that a particular client
-can make over a keep-alive connection. The range is any positive
-integer, and the default is 256.
-
-Adjust this value based on the number of requests a typical client makes
-in your application. For best performance specify quite a large number,
-allowing clients to make many requests.
-
-The number of connections specified by Max Connections is divided
-equally among the keep alive threads. If Max Connections is not equally
-divisible by Thread Count, the server can allow slightly more than Max
-Connections simultaneous keep alive connections.
-
-[[abegd]][[GSPTG00131]][[dns-lookup-enabled]]
-
-DNS Lookup Enabled
-++++++++++++++++++
-
-This setting specifies whether the server performs DNS (domain name
-service) lookups on clients that access the server. When DNS lookup is
-not enabled, when a client connects, the server knows the client's IP
-address but not its host name (for example, it knows the client as
-198.95.251.30, rather than `www.xyz.com`). When DNS lookup is enabled,
-the server will resolve the client's IP address into a host name for
-operations like access control, common gateway interface (CGI) programs,
-error reporting, and access logging.
-
-If the server responds to many requests per day, reduce the load on the
-DNS or NIS (Network Information System) server by disabling DNS lookup.
-Enabling DNS lookup will increase the latency and load on the system, so
-modify this setting with caution.
-
-[[abefu]][[GSPTG00132]][[timeout]]
-
-Timeout
-+++++++
-
-Timeout determines the maximum time (in seconds) that the server holds
-open an HTTP keep alive connection. A client can keep a connection to
-the server open so that multiple requests to one server can be serviced
-by a single network connection. Since the number of open connections
-that the server can handle is limited, a high number of open connections
-will prevent new clients from connecting.
-
-The default time out value is 30 seconds. Thus, by default, the server
-will close the connection if idle for more than 30 seconds. The maximum
-value for this parameter is 300 seconds (5 minutes).
-
-The proper value for this parameter depends upon how much time is
-expected to elapse between requests from a given client. For example, if
-clients are expected to make requests frequently then, set the parameter
-to a high value; likewise, if clients are expected to make requests
-rarely, then set it to a low value.
-
-Both HTTP 1.0 and HTTP 1.1 support the ability to send multiple requests
-across a single HTTP session. A server can receive hundreds of new HTTP
-requests per second. If every request was allowed to keep the connection
-open indefinitely, the server could become overloaded with connections.
-On Unix/Linux systems, this could easily lead to a file table overflow.
-
-The GlassFish Server's Keep Alive system, which is affected by the
-Timeout setting, addresses this problem. A waiting keep alive connection
-has completed processing the previous request, and is waiting for a new
-request to arrive on the same connection. The server maintains a counter
-for the maximum number of waiting keep-alive connections. If the server
-has more than the maximum waiting connections open when a new connection
-waits for a keep-alive request, the server closes the oldest connection.
-This algorithm limits the number of open waiting keep-alive connections.
-
-If your system has extra CPU cycles, incrementally increase the keep
-alive settings and monitor performance after each increase. When
-performance saturates (stops improving), then stop increasing the
-settings.
-
-[[abefq]][[GSPTG00133]][[header-buffer-length]]
-
-Header Buffer Length
-++++++++++++++++++++
-
-The size (in bytes) of the buffer used by each of the request processing
-threads for reading the request data from the client.
-
-Adjust the value based on the actual request size and observe the impact
-on performance. In most cases the default should suffice. If the request
-size is large, increase this parameter.
-
-[[gkxit]][[GSPTG00196]][[file-cache-settings]]
-
-File Cache Settings
-^^^^^^^^^^^^^^^^^^^
-
-The GlassFish Server uses a file cache to serve static information
-faster. The file cache contains information about static files such as
-HTML, CSS, image, or text files. Enabling the HTTP file cache will
-improve performance of applications that contain static files.
-
-The following settings on the File Cache tab can significantly affect
-performance:
-
-* link:#abegf[Max File Count]
-* link:#abegh[Max Age]
-
-[[abegf]][[GSPTG00134]][[max-file-count]]
-
-Max File Count
-++++++++++++++
-
-Max File Count determines how many files are in the cache. If the value
-is too big, the server caches little-needed files, which wastes memory.
-If the value is too small, the benefit of caching is lost. Try different
-values of this attribute to find the optimal solution for specific
-applications—generally, the effects will not be great.
-
-[[abegh]][[GSPTG00135]][[max-age]]
-
-Max Age
-+++++++
-
-This parameter controls how long cached information is used after a file
-has been cached. An entry older than the maximum age is replaced by a
-new entry for the same file.
-
-If your Web site's content changes infrequently, increase this value for
-improved performance. Set the maximum age by entering or changing the
-value in the Maximum Age field of the File Cache Configuration page in
-the web-based Admin Console for the HTTP server node and selecting the
-File Caching Tab.
-
-Set the maximum age based on whether the content is updated (existing
-files are modified) on a regular schedule or not. For example, if
-content is updated four times a day at regular intervals, you could set
-the maximum age to 21600 seconds (6 hours). Otherwise, consider setting
-the maximum age to the longest time you are willing to serve the
-previous version of a content file after the file has been modified.
-
-[[gkxjt]][[GSPTG00064]][[transport-settings]]
-
-Transport Settings
-~~~~~~~~~~~~~~~~~~
-
-The Acceptor Threads property for the Transport service specifies how
-many threads you want in accept mode on a listen socket at any time. It
-is a good practice to set this to less than or equal to the number of
-CPUs in your system.
-
-In the GlassFish Server, acceptor threads on an HTTP Listener accept
-connections and put them onto a connection queue. Session threads then
-pick up connections from the queue and service the requests. The server
-posts more session threads if required at the end of the request.
-
-See "link:../administration-guide/http_https.html#GSADG00771[Administering HTTP Network Listeners]" in
-GlassFish Server Open Source Edition Administration Guide for
-instructions on modifying the Acceptor Threads property. If using the
-Administration Console, the Acceptor Threads property is available on
-the Configurations>configuration-name>Network Config>Transports>tcp
-page.
-
-[[abehk]][[GSPTG00065]][[thread-pool-settings]]
-
-Thread Pool Settings
-~~~~~~~~~~~~~~~~~~~~
-
-You can tune thread pool settings by following the instructions in
-"link:../administration-guide/threadpools.html#GSADG00008[Administering Thread Pools]" in GlassFish Server Open
-Source Edition Administration Guide. If using the Administration Console
-Thread Pool settings are available on the
-Configurations>configuration-name>Thread Pools>thread-pool-name page.
-
-The following thread pool settings can have significant effects on
-GlassFish Server performance:
-
-* link:#abefn[Max Thread Pool Size]
-* link:#abefo[Min Thread Pool Size]
-
-[[abefn]][[GSPTG00197]][[max-thread-pool-size]]
-
-Max Thread Pool Size
-^^^^^^^^^^^^^^^^^^^^
-
-The Max Thread Pool Size parameter specifies the maximum number of
-simultaneous requests the server can handle. The default value is 5.
-When the server has reached the limit or request threads, it defers
-processing new requests until the number of active requests drops below
-the maximum amount. Increasing this value will reduce HTTP response
-latency times.
-
-In practice, clients frequently connect to the server and then do not
-complete their requests. In these cases, the server waits a length of
-time specified by the Timeout parameter.
-
-Also, some sites do heavyweight transactions that take minutes to
-complete. Both of these factors add to the maximum simultaneous requests
-that are required. If your site is processing many requests that take
-many seconds, you might need to increase the number of maximum
-simultaneous requests.
-
-Adjust the thread count value based on your load and the length of time
-for an average request. In general, increase this number if you have
-idle CPU time and requests that are pending; decrease it if the CPU
-becomes overloaded. If you have many HTTP 1.0 clients (or HTTP 1.1
-clients that disconnect frequently), adjust the timeout value to reduce
-the time a connection is kept open.
-
-Suitable Request Max Thread Pool Size values range from 100 to 500,
-depending on the load. If your system has extra CPU cycles, keep
-incrementally increasing thread count and monitor performance after each
-incremental increase. When performance saturates (stops improving), then
-stop increasing thread count.
-
-[[abefo]][[GSPTG00198]][[min-thread-pool-size]]
-
-Min Thread Pool Size
-^^^^^^^^^^^^^^^^^^^^
-
-The Min Thread Pool Size property specifies the minimum number of
-threads the server initiates upon startup. The default value is 2. Min
-Thread Pool Size represents a hard limit for the maximum number of
-active threads that can run simultaneously, which can become a
-bottleneck for performance.
-
-Specifying the same value for minimum and maximum threads allows
-GlassFish Server to use a slightly more optimized thread pool. This
-configuration should be considered unless the load on the server varies
-quite significantly.
-
-[[abegt]][[GSPTG00066]][[orb-settings]]
-
-ORB Settings
-~~~~~~~~~~~~
-
-The GlassFish Server includes a high performance and scalable CORBA
-Object Request Broker (ORB). The ORB is the foundation of the EJB
-Container on the server.
-
-For complete instructions on configuring ORB settings, refer to
-"link:../administration-guide/orb.html#GSADG00018[Administering the Object Request Broker (ORB)]" in
-GlassFish Server Open Source Edition Administration Guide. Also refer to
-"link:../ha-administration-guide/rmi-iiop.html#GSHAG00013[RMI-IIOP Load Balancing and Failover]" in GlassFish
-Server Open Source Edition High Availability Administration Guide. You
-can also configure most ORB settings through the GlassFish Server
-Administration Console by navigating to the
-Configurations>configuration-name> ORB node and then following the
-instructions in the Administration Console online help.
-
-The following topics are addressed here:
-
-* link:#abegu[Overview]
-* link:#abegv[How a Client Connects to the ORB]
-* link:#abegw[Monitoring the ORB]
-* link:#abegz[Tuning the ORB]
-
-[[abegu]][[GSPTG00199]][[overview]]
-
-Overview
-^^^^^^^^
-
-The ORB is primarily used by EJB components via:
-
-* RMI/IIOP path from an application client (or rich client) using the
-application client container.
-* RMI/IIOP path from another GlassFish Server instance ORB.
-* RMI/IIOP path from another vendor's ORB.
-* In-process path from the Web Container or MDB (message driven beans)
-container.
-
-When a server instance makes a connection to another server instance
-ORB, the first instance acts as a client ORB. SSL over IIOP uses a fast
-optimized transport with high-performance native implementations of
-cryptography algorithms.
-
-It is important to remember that EJB local interfaces do not use the
-ORB. Using a local interface passes all arguments by reference and does
-not require copying any objects.
-
-[[abegv]][[GSPTG00200]][[how-a-client-connects-to-the-orb]]
-
-How a Client Connects to the ORB
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A rich client Java program performs a new `initialContext()` call which
-creates a client side ORB instance. This in turn creates a socket
-connection to the GlassFish Server IIOP port. The reader thread is
-started on the server ORB to service IIOP requests from this client.
-Using the `initialContext`, the client code does a lookup of an EJB
-deployed on the server. An IOR which is a remote reference to the
-deployed EJB on the server is returned to the client. Using this object
-reference, the client code invokes remote methods on the EJB.
-
-`InitialContext` lookup for the bean and the method invocations
-translate the marshalling application request data in Java into IIOP
-message(s) that are sent on the socket connection that was created
-earlier on to the server ORB. The server then creates a response and
-sends it back on the same connection. This data in the response is then
-un-marshalled by the client ORB and given back to the client code for
-processing. The Client ORB shuts down and closes the connection when the
-rich client application exits.
-
-[[abegw]][[GSPTG00201]][[monitoring-the-orb]]
-
-Monitoring the ORB
-^^^^^^^^^^^^^^^^^^
-
-ORB statistics are disabled by default. To gather ORB statistics, enable
-monitoring with the following `asadmin` command:
-
-[source,oac_no_warn]
-----
-set serverInstance.iiop-service.orb.system.monitoringEnabled=true
-reconfig serverInstance
-----
-
-If using the Administration Console, you can enable ORB monitoring on
-the Configurations>configuration-name>Monitoring page. To view ORB
-monitoring statistics through the Administration Console, navigate to
-the server (Admin Server) page and click the Monitor tab. Refer to the
-Administration Console online help for complete instructions.
-
-The following statistics are of particular interest when tuning the ORB:
-
-* link:#abegx[Connection Statistics]
-* link:#abegy[Thread Pools]
-
-[[abegx]][[GSPTG00136]][[connection-statistics]]
-
-Connection Statistics
-+++++++++++++++++++++
-
-The following statistics are gathered on ORB connections:
-
-* `total-inbound-connections`: Total inbound connections to ORB.
-* `total-outbound-connections`: Total outbound connections from ORB.
-
-Use the following command to get ORB connection statistics:
-
-[source,oac_no_warn]
-----
-asadmin get --monitor
-    serverInstance.iiop-service.orb.system.orb-connection.*
-----
-
-[[abegy]][[GSPTG00137]][[thread-pools]]
-
-Thread Pools
-++++++++++++
-
-The following statistics are gathered on ORB thread pools:
-
-* `thread-pool-size`: Number of threads in ORB thread pool.
-* `waiting-thread-count`: Number of thread pool threads waiting for work
-to arrive.
-
-Use the following command to display ORB thread pool statistics:
-
-[source,oac_no_warn]
-----
-asadmin get --monitor
-    serverInstance.iiop-service.orb.system.orb-thread-pool.*
-----
-
-[[abegz]][[GSPTG00202]][[tuning-the-orb]]
-
-Tuning the ORB
-^^^^^^^^^^^^^^
-
-Tune ORB performance by setting ORB parameters and ORB thread pool
-parameters. You can often decrease response time by leveraging
-load-balancing, multiple shared connections, thread pool and message
-fragment size. You can improve scalability by load balancing between
-multiple ORB servers from the client, and tuning the number of
-connection between the client and the server.
-
-The following topics are addressed here:
-
-* link:#abeha[Tunable ORB Parameters]
-* link:#abehb[ORB Thread Pool Parameters]
-* link:#abehc[Client ORB Properties]
-* link:#abehg[Thread Pool Sizing]
-* link:#abehh[Examining IIOP Messages]
-
-[[abeha]][[GSPTG00138]][[tunable-orb-parameters]]
-
-Tunable ORB Parameters
-++++++++++++++++++++++
-
-You can tune ORB parameters using the instructions in
-"link:../administration-guide/orb.html#GSADG00018[Administering the Object Request Broker (ORB)]" in
-GlassFish Server Open Source Edition Administration Guide. If using the
-Administration Console, navigate to the
-Configurations>configuration-name>ORB node and refer to the online help.
-
-The following table summarizes the tunable ORB parameters.
-
-[[sthref8]][[gacma]]
-
-Table 3-2 Tunable ORB Parameters
-
-[width="100%",cols="<33%,<27%,<40%",options="header",]
-|=======================================================================
-|Path |ORB Modules |Server Settings
-|RMI/ IIOP from application client to application server |communication
-infrastructure, thread pool |steady-thread-pool-size,
-max-thread-pool-size, idle-thread-timeout-in-seconds
-
-|RMI/ IIOP from ORB to GlassFish Server |communication infrastructure,
-thread pool |steady-thread-pool-size, max-thread-pool-size,
-idle-thread-timeout-in-seconds
-
-|RMI/ IIOP from a vendor ORB |parts of communication infrastructure,
-thread pool |steady-thread-pool-size, max-thread-pool-size,
-idle-thread-timeout-in-seconds
-
-|In-process |thread pool |steady-thread-pool-size, max-thread-pool-size,
-idle-thread-timeout-in-seconds
-|=======================================================================
-
-
-[[abehb]][[GSPTG00139]][[orb-thread-pool-parameters]]
-
-ORB Thread Pool Parameters
-++++++++++++++++++++++++++
-
-The ORB thread pool contains a task queue and a pool of threads. Tasks
-or jobs are inserted into the task queue and free threads pick tasks
-from this queue for execution. Do not set a thread pool size such that
-the task queue is always empty. It is normal for a large application's
-Max Pool Size to be ten times the size of the current task queue.
-
-The GlassFish Server uses the ORB thread pool to:
-
-* Execute every ORB request
-* Trim EJB pools and caches
-* Execute MDB requests
-
-Thus, even when one is not using ORB for remote-calls (via RMI/ IIOP),
-set the size of the threadpool to facilitate cleaning up the EJB pools
-and caches.
-
-You can set ORB thread pool attributes using the instructions in
-"link:../administration-guide/threadpools.html#GSADG00008[Administering Thread Pools]" in GlassFish Server Open
-Source Edition Administration Guide. If using the Administration
-Console, navigate to Configurations>configuration-name> Thread
-Pools>thread-pool-name, where thread-pool-name is the thread pool ID
-selected for the ORB. Thread pools have the following attributes that
-affect performance.
-
-* Minimum Pool Size: The minimum number of threads in the ORB thread
-pool. Set to the average number of threads needed at a steady (RMI/
-IIOP) load.
-* Maximum Pool Size: The maximum number of threads in the ORB thread
-pool.
-* Idle Timeout: Number of seconds to wait before removing an idle thread
-from pool. Allows shrinking of the thread pool.
-* Number of Work Queues
-
-In particular, the maximum pool size is important to performance. For
-more information, see link:#abehg[Thread Pool Sizing].
-
-[[abehc]][[GSPTG00140]][[client-orb-properties]]
-
-Client ORB Properties
-+++++++++++++++++++++
-
-Specify the following properties as command-line arguments when
-launching the client program. You do this by using the following syntax
-when starting the Java VM:
-
-[source,oac_no_warn]
-----
--Dproperty=value
-----
-
-The following topics are addressed here:
-
-* link:#abehd[Controlling Connections Between Client and Server ORB]
-* link:#CEGDGBBG[Limiting the Maximum Number of Client Connections]
-* link:#abehf[Load Balancing]
-
-[[abehd]][[GSPTG00025]][[controlling-connections-between-client-and-server-orb]]
-
-Controlling Connections Between Client and Server ORB
-
-When using the default JDK ORB on the client, a connection is
-established from the client ORB to the application server ORB every time
-an initial context is created. To pool or share these connections when
-they are opened from the same process by adding to the configuration on
-the client ORB.
-
-[source,oac_no_warn]
-----
--Djava.naming.factory.initial=com.sun.enterprise.naming.SerialInitContextFactory
-----
-
-[[CEGDGBBG]][[limiting-the-maximum-number-of-client-connections]]
-
-Limiting the Maximum Number of Client Connections
-
-You can specify the total maximum number of client connections on all
-ORB listener ports (TCP, SSL and SSL with mutual authentication). When
-open client connections exceed the maximum value you specify, the ORB
-rejects any new incoming client connections.
-
-Set this value to support the expected number of simultaneous client
-connections, but not to exceed the VM or system file descriptor limits.
-If the value is set too high, the ORB will continue accepting new client
-connections, resulting in a "too many open files" error if the VM runs
-out of file descriptors.
-
-To specify the maximum number of client connections, set the
-`configs.config.``config-name.``iiop-service.orb.max-connections`
-attribute to the number that you require:
-
-[source,oac_no_warn]
-----
-asadmin> set configs.config.config-name.iiop-service.orb.max-connections=max-connections
-----
-
-config-name::
-  The name of the configuration in which the IIOP service is defined.
-  For example, `server-config` is the name for the configuration of the
-  domain administration server (DAS).
-max-connections::
-  An integer that specifies the maximum number of client connections.
-
-For updates to this value to take effect, restart GlassFish Server.
-
-The following example shows how to set the maximum number of client
-connections for the ORB in the DAS to `512`:
-
-[source,oac_no_warn]
-----
-asadmin> set configs.config.server-config.iiop-service.orb.max-connections=512
-configs.config.server-config.iiop-service.orb.max-connections=512
-Command set executed successfully.
-----
-
-[[abehf]][[GSPTG00026]][[load-balancing]]
-
-Load Balancing
-
-For information on how to configure HTTP load balancing, see
-"link:../ha-administration-guide/http-load-balancing.html#GSHAG00009[Configuring HTTP Load Balancing]" in GlassFish Server
-Open Source Edition High Availability Administration Guide.
-
-For information on how to configure RMI/IIOP for multiple application
-server instances in a cluster, "link:../ha-administration-guide/rmi-iiop.html#GSHAG00013[RMI-IIOP Load Balancing
-and Failover]" in GlassFish Server Open Source Edition High Availability
-Administration Guide.
-
-When tuning the client ORB for load-balancing and connections, consider
-the number of connections opened on the server ORB. Start from a low
-number of connections and then increase it to observe any performance
-benefits. A connection to the server translates to an ORB thread reading
-actively from the connection (these threads are not pooled, but exist
-currently for the lifetime of the connection).
-
-[[abehg]][[GSPTG00141]][[thread-pool-sizing]]
-
-Thread Pool Sizing
-++++++++++++++++++
-
-After examining the number of inbound and outbound connections as
-explained above, tune the size of the thread pool appropriately. This
-can affect performance and response times significantly.
-
-The size computation takes into account the number of client requests to
-be processed concurrently, the resource (number of CPUs and amount of
-memory) available on the machine and the response times required for
-processing the client requests.
-
-Setting the size to a very small value can affect the ability of the
-server to process requests concurrently, thus affecting the response
-times since requests will sit longer in the task queue. On the other
-hand, having a large number of worker threads to service requests can
-also be detrimental because they consume system resources, which
-increases concurrency. This can mean that threads take longer to acquire
-shared structures in the EJB container, thus affecting response times.
-
-The worker thread pool is also used for the EJB container's housekeeping
-activity such as trimming the pools and caches. This activity needs to
-be accounted for also when determining the size. Having too many ORB
-worker threads is detrimental for performance since the server has to
-maintain all these threads. The idle threads are destroyed after the
-idle thread timeout period.
-
-[[abehh]][[GSPTG00142]][[examining-iiop-messages]]
-
-Examining IIOP Messages
-+++++++++++++++++++++++
-
-It is sometimes useful to examine the IIOP messages passed by the
-GlassFish Server. To make the server save IIOP messages to the
-`server.log` file, set the JVM option `-Dcom.sun.CORBA.ORBDebug=giop`.
-Use the same option on the client ORB.
-
-The following is an example of IIOP messages saved to the server log.
-Note: in the actual output, each line is preceded by the timestamp, such
-as `[29/Aug/2002:22:41:43] INFO (27179): CORE3282: stdout`.
-
-[source,oac_no_warn]
-----
- ++++++++++++++++++++++++++++++
- Message(Thread[ORB Client-side Reader, conn to 192.18.80.118:1050,5,main]):
-createFromStream: type is 4 <
- MessageBase(Thread[ORB Client-side Reader, conn to 192.18.80.118:1050,5,main]):
-Message GIOP version: 1.2
- MessageBase(Thread[ORB Client-side Reader, conn to 192.18.80.118:1050,5,main]):
-ORB Max GIOP Version: 1.2
- Message(Thread[ORB Client-side Reader, conn to 192.18.80.118:1050,5,main]):
-createFromStream: message construction complete.
- com.sun.corba.ee.internal.iiop.MessageMediator
-(Thread[ORB Client-side Reader, conn to 192.18.80.118:1050,5,main]): Received message:
- ----- Input Buffer -----
- Current index: 0
- Total length : 340
- 47 49 4f 50 01 02 00 04 0 0 00 01 48 00 00 00 05 GIOP.......H....
-----
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-The flag `-Dcom.sun.CORBA.ORBdebug=giop` generates many debug messages
-in the logs. This is used only when you suspect message fragmentation.
-
-|=======================================================================
-
-
-In this sample output above, the `createFromStream` type is shown as
-`4`. This implies that the message is a fragment of a bigger message. To
-avoid fragmented messages, increase the fragment size. Larger fragments
-mean that messages are sent as one unit and not as fragments, saving the
-overhead of multiple messages and corresponding processing at the
-receiving end to piece the messages together.
-
-If most messages being sent in the application are fragmented,
-increasing the fragment size is likely to improve efficiency. On the
-other hand, if only a few messages are fragmented, it might be more
-efficient to have a lower fragment size that requires smaller buffers
-for writing messages.
-
-[[abehp]][[GSPTG00067]][[resource-settings]]
-
-Resource Settings
-~~~~~~~~~~~~~~~~~
-
-Tuning JDBC and connector resources can significantly improve GlassFish
-Server performance.
-
-The following topics are addressed here:
-
-* link:#abehq[JDBC Connection Pool Settings]
-* link:#abehy[Connector Connection Pool Settings]
-
-[[abehq]][[GSPTG00203]][[jdbc-connection-pool-settings]]
-
-JDBC Connection Pool Settings
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-For optimum performance of database-intensive applications, tune the
-JDBC Connection Pools managed by the GlassFish Server. These connection
-pools maintain numerous live database connections that can be reused to
-reduce the overhead of opening and closing database connections. This
-section describes how to tune JDBC Connection Pools to improve
-performance.
-
-J2EE applications use JDBC Resources to obtain connections that are
-maintained by the JDBC Connection Pool. More than one JDBC Resource is
-allowed to refer to the same JDBC Connection Pool. In such a case, the
-physical connection pool is shared by all the resources.
-
-Refer to "link:../administration-guide/jdbc.html#GSADG00015[Administering Database Connectivity]" in
-GlassFish Server Open Source Edition Administration Guide for more
-information about managing JDBC connection pools.
-
-The following topics are addressed here:
-
-* link:#abehr[Monitoring JDBC Connection Pools]
-* link:#abehs[Tuning JDBC Connection Pools]
-
-[[abehr]][[GSPTG00143]][[monitoring-jdbc-connection-pools]]
-
-Monitoring JDBC Connection Pools
-++++++++++++++++++++++++++++++++
-
-Statistics-gathering is disabled by default for JDBC Connection Pools.
-Refer to for instructions on enabling JDBC monitoring in
-"link:../administration-guide/monitoring.html#GSADG00011[Administering the Monitoring Service]" in GlassFish
-Server Open Source Edition Administration Guide. If using the
-Administration Console, JDBC monitoring can be enabled on the
-Configurations>configuration-name>Monitoring page.
-
-The following attributes are monitored:
-
-* `numConnFailedValidation (count)` Number of connections that failed
-validation.
-* `numConnUsed (range)` Number of connections that have been used.
-* `numConnFree (count)` Number of free connections in the pool.
-* `numConnTimedOut (bounded range)` Number of connections in the pool
-that have timed out.
-
-To get JDBC monitoring statistics, use the following commands:
-
-[source,oac_no_warn]
-----
-asadmin get --monitor=true
-serverInstance.resources.jdbc-connection-pool.*asadmin get
---monitor=true serverInstance.resources.jdbc-connection-pool. poolName.* *
-----
-
-To view JDBC monitoring statistics through the Administration Console,
-navigate to the server (Admin Server) page and click the Monitor tab.
-Refer to the Administration Console online help for complete
-instructions.
-
-[[abehs]][[GSPTG00144]][[tuning-jdbc-connection-pools]]
-
-Tuning JDBC Connection Pools
-++++++++++++++++++++++++++++
-
-Refer to "link:../administration-guide/jdbc.html#GSADG00015[Administering Database Connectivity]" in
-GlassFish Server Open Source Edition Administration Guide for
-instructions on configuring JDBC connection pools. If using the
-GlassFish Server Administration Console by navigating to the
-Resources>JDBC>JDBC Connection Pools>jdbc-pool-name page and then
-clicking the desired tab.
-
-The following JDBC properites affect GlassFish Server performance:
-
-* link:#abeht[Pool Size Settings]
-* link:#abehu[Timeout Settings]
-* link:#abehv[Isolation Level Settings]
-* link:#abehw[Connection Validation Settings]
-
-[[abeht]][[GSPTG00027]][[pool-size-settings]]
-
-Pool Size Settings
-
-Pool Size settings can be configured in the Pool Settings section on the
-General tab in the Edit JDBC Connection Pool page.
-
-The following settings control the size of the connection pool:
-
-* Initial and Mimimum Pool Size: Size of the pool when created, and its
-minimum allowable size.
-* Maximum Pool Size: Upper limit of size of the pool.
-* Pool Resize Quantity: Number of connections to be removed when the
-idle timeout expires. Connections that have idled for longer than the
-timeout are candidates for removal. When the pool size reaches the
-initial and minimum pool size, removal of connections stops.
-
-The following table summarizes advantages and disadvantages to consider
-when sizing connection pools.
-
-[[sthref9]][[gacmi]]
-
-Table 3-3 Connection Pool Sizing
-
-[width="100%",cols="<21%,<38%,<41%",options="header",]
-|================================================================
-|Connection Pool |Advantages |Disadvantages
-|Small Connection pool |Faster access on the connection table. a|
-May not have enough connections to satisfy requests.
-
-Requests may spend more time in the queue.
-
-|Large Connection pool a|
-More connections to fulfill requests.
-
-Requests will spend less (or no) time in the queue
-
- |Slower access on the connection table.
-|================================================================
-
-
-[[abehu]][[GSPTG00028]][[timeout-settings]]
-
-Timeout Settings
-
-The following JDBC timeout settings can be configured on the in the Pool
-Settings section on the General tab in the Edit JDBC Connection Pool
-page.
-
-* Max Wait Time: Amount of time the caller (the code requesting a
-connection) will wait before getting a connection timeout. The default
-is 60 seconds. A value of zero forces caller to wait indefinitely. +
-To improve performance set Max Wait Time to zero (0). This essentially
-blocks the caller thread until a connection becomes available. Also,
-this allows the server to alleviate the task of tracking the elapsed
-wait time for each request and increases performance.
-* Idle Timeout: Maximum time in seconds that a connection can remain
-idle in the pool. After this time, the pool can close this connection.
-This property does not control connection timeouts on the database
-server. +
-Keep this timeout shorter than the database server timeout (if such
-timeouts are configured on the database), to prevent accumulation of
-unusable connection in GlassFish Server. +
-For best performance, set Idle Timeout to zero (0) seconds, so that idle
-connections will not be removed. This ensures that there is normally no
-penalty in creating new connections and disables the idle monitor
-thread. However, there is a risk that the database server will reset a
-connection that is unused for too long.
-
-[[abehv]][[GSPTG00029]][[isolation-level-settings]]
-
-Isolation Level Settings
-
-The following JDBC Isolation Level settings can be configured in the
-Transaction section on the General tab in the Edit JDBC Connection Pool
-page.
-
-* Transaction Isolation: Specifies the transaction isolation level of
-the pooled database connections. If this parameter is unspecified, the
-pool uses the default isolation level provided by the JDBC Driver.
-* Isolation Level Guaranteed: Guarantees that every connection obtained
-from the pool has the isolation specified for the Transaction Isolation
-level. Applicable only when the Transaction Isolation level is
-specified. The default value is Guaranteed. +
-This setting can have some performance impact on some JDBC drivers. Set
-to false when certain that the application does not change the isolation
-level before returning the connection.
-
-Avoid specifying the Transaction Isolation level. If that is not
-possible, consider disabling the Isolation Level Guaranteed option and
-then make sure applications do not programmatically alter the
-connections; isolation level.
-
-If you must specify a Transaction Isolation level, specify the
-best-performing level possible. The isolation levels listed from best
-performance to worst are:
-
-1.  `READ_UNCOMMITTED`
-2.  `READ_COMMITTED`
-3.  `REPEATABLE_READ`
-4.  `SERIALIZABLE`
-
-Choose the isolation level that provides the best performance, yet still
-meets the concurrency and consistency needs of the application.
-
-[[abehw]][[GSPTG00030]][[connection-validation-settings]]
-
-Connection Validation Settings
-
-JDBC Connection Validation settings can be configured in the Connection
-Validation section on the Advanced tab in the Edit JDBC Connection Pool
-page.
-
-* Connection Validation Required: If enabled, the pool validates
-connections (checks to find out if they are usable) before providing
-them to an application. +
-If possible, keep this option disabled. Requiring connection validation
-forces the server to apply the validation algorithm every time the pool
-returns a connection, which adds overhead to the latency of
-`getConnection()`. If the database connectivity is reliable, you can
-omit validation.
-* Validation Method: Specifies the type of connection validation to
-perform. Must be one of the following:
-
-** `auto-commit`: Attempt to perform an auto-commit on the connection.
-
-** `metadata`: Attempt to get metadata from the connection.
-
-** `table`: Performing the query on a specified table. If this option is
-selected, Table Name must also be set. Choosing this option may be
-necessary if the JDBC driver caches calls to `setAutoCommit()` and
-`getMetaData()`.
-
-** `custom-validation`: Define a custom validation method.
-* Table Name: Name of the table to query when the Validation Method is
-set to `table`.
-* Close All Connections On Any Failure: Specify whether all connections
-in the pool should be closed if a single validation check fails. This
-option is disabled by default. One attempt will be made to re-establish
-failed connections.
-
-[[abehy]][[GSPTG00204]][[connector-connection-pool-settings]]
-
-Connector Connection Pool Settings
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-From a performance standpoint, connector connection pools are similar to
-JDBC connection pools. Follow all the recommendations in the previous
-section, link:#abehs[Tuning JDBC Connection Pools].
-
-[[abehz]][[GSPTG00145]][[transaction-support]]
-
-Transaction Support
-+++++++++++++++++++
-
-You may be able to improve performance by overriding the default
-transaction support specified for each connector connection pool.
-
-For example, consider a case where an Enterprise Information System
-(EIS) has a connection factory that supports local transactions with
-better performance than global transactions. If a resource from this EIS
-needs to be mixed with a resource coming from another resource manager,
-the default behavior forces the use of XA transactions, leading to lower
-performance. However, by changing the EIS's connector connection pool to
-use LocalTransaction transaction support and leveraging the Last Agent
-Optimization feature previously described, you could leverage the
-better-performing EIS LocalTransaction implementation. For more
-information on LAO, see link:tuning-apps.html#abecq[Configure JDBC
-Resources as One-Phase Commit Resources].
-
-You can specify transaction support when you create or edit a connector
-connection pool.
-
-Also set transaction support using `asadmin`. For example, the following
-`asadmin` command could be used to create a connector connection pool
-`TESTPOOL` with `transaction-support` set to `LOCAL`.
-
-[source,oac_no_warn]
-----
-asadmin> create-connector-connection-pool --raname jdbcra
---connectiondefinition javax.sql.DataSource
--transactionsupport LocalTransaction
-TESTPOOL
-----
-
-[[gkxvd]][[GSPTG00068]][[load-balancer-settings]]
-
-Load Balancer Settings
-~~~~~~~~~~~~~~~~~~~~~~
-
-GlassFish Server Open Source Edition is compatible with the Apache HTTP
-server `mod_jk` module for load balancing.
-
-GlassFish Server load balancing configurations can vary widely depending
-on the needs of your enterprise and are beyond the scope of this
-Performance Tuning Guide. For complete information about configuring
-load balancing in GlassFish Server, refer to the following
-documentation:
-
-* "link:../ha-administration-guide/http-load-balancing.html#GSHAG00009[Configuring HTTP Load Balancing]" in GlassFish
-Server Open Source Edition High Availability Administration Guide
-* "link:../ha-administration-guide/rmi-iiop.html#GSHAG00013[RMI-IIOP Load Balancing and Failover]" in GlassFish
-Server Open Source Edition High Availability Administration Guide
diff --git a/docs/performance-tuning-guide/src/main/jbake/content/tuning-java.adoc b/docs/performance-tuning-guide/src/main/jbake/content/tuning-java.adoc
deleted file mode 100644
index e7e0bd4..0000000
--- a/docs/performance-tuning-guide/src/main/jbake/content/tuning-java.adoc
+++ /dev/null
@@ -1,571 +0,0 @@
-type=page
-status=published
-title=Tuning the Java Runtime System
-next=tuning-os.html
-prev=tuning-glassfish.html
-~~~~~~
-Tuning the Java Runtime System
-==============================
-
-[[GSPTG00006]][[abeia]]
-
-
-[[tuning-the-java-runtime-system]]
-4 Tuning the Java Runtime System
---------------------------------
-
-The following topics are addressed here:
-
-* link:#abeib[Java Virtual Machine Settings]
-* link:#gfpzy[Start Options]
-* link:#glaat[Tuning High Availability Persistence]
-* link:#abeic[Managing Memory and Garbage Collection]
-* link:#abeiq[Further Information]
-
-[[abeib]][[GSPTG00069]][[java-virtual-machine-settings]]
-
-Java Virtual Machine Settings
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Java SE 7 provides two implementations of the HotSpot Java virtual
-machine (JVM):
-
-* The client VM is tuned for reducing startup time and memory footprint.
-Invoke it by using the `-client` JVM command-line option.
-* The server VM is designed for maximum program execution speed. Invoke
-it by using the `-server` JVM command-line option.
-
-By default, the GlassFish Server uses the JVM setting appropriate to the
-purpose:
-
-* Developer Profile, targeted at application developers, uses the
-`-client` JVM flag to optimize startup performance and conserve memory
-resources.
-* Enterprise Profile, targeted at production deployments, uses the
-`-server` JVM flag to maximize program execution speed.
-
-You can override the default JVM options by following the instructions
-in "link:../administration-guide/jvm.html#GSADG00544[Administering JVM Options]" in GlassFish Server
-Open Source Edition Administration Guide. If using the Administration
-Console, navigate to the Configurations>configuration-name>JVM Settings
-node, and then click the JVM Options tab. Refer to the online help for
-complete information about the settings on this page.
-
-For more information on server-class machine detection in Java SE 7, see
-http://download.oracle.com/javase/6/docs/technotes/guides/vm/server-class.html[Server-Class
-Machine Detection]
-(`http://docs.oracle.com/javase/7/docs/technotes/guides/vm/server-class.html`).
-
-For more information on JVMs, see
-http://download.oracle.com/javase/6/docs/[Java Virtual Machines]
-(`http://docs.oracle.com/javase/7/docs/`).
-
-[[gfpzy]][[GSPTG00070]][[start-options]]
-
-Start Options
-~~~~~~~~~~~~~
-
-In some situations, performance can be improved by using large page
-sizes. For Ultrasparc CMT systems, include the `-XX:+UseLargePages` and
-`-XX:LargePageSizeInBytes=256m` arguments with your JVM tuning.
-
-[[glaat]][[GSPTG00071]][[tuning-high-availability-persistence]]
-
-Tuning High Availability Persistence
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-If session `s1` and `s2` need to be replicated to an instance (backup
-server), the replication module batches the replication messages to be
-sent to that instance instead of sending separate replication messages.
-This improves performance. In configurations in which a lot of session
-replication is performed, you may find better performance by tuning the
-`org.shoal.cache.transmitter.max.batch.size` system property. This
-property determines the number of replication messages that constitute
-one batch.
-
-The default value for this property is `20`. You can try setting it as
-high as `90`, depending on system loads. Like all system properties,
-this property is set with the `-D` flag in your Java arguments.
-
-[[abeic]][[GSPTG00072]][[managing-memory-and-garbage-collection]]
-
-Managing Memory and Garbage Collection
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The efficiency of any application depends on how well memory and garbage
-collection are managed. The following sections provide information on
-optimizing memory and allocation functions:
-
-* link:#abeid[Tuning the Garbage Collector]
-* link:#abeig[Tracing Garbage Collection]
-* link:#abeih[Other Garbage Collector Settings]
-* link:#abeii[Tuning the Java Heap]
-* link:#abeio[Rebasing DLLs on Windows]
-
-[[abeid]][[GSPTG00205]][[tuning-the-garbage-collector]]
-
-Tuning the Garbage Collector
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Garbage collection (GC) reclaims the heap space previously allocated to
-objects no longer needed. The process of locating and removing the dead
-objects can stall any application and consume as much as 25 percent
-throughput.
-
-Almost all Java Runtime Environments come with a generational object
-memory system and sophisticated GC algorithms. A generational memory
-system divides the heap into a few carefully sized partitions called
-generations. The efficiency of a generational memory system is based on
-the observation that most of the objects are short lived. As these
-objects accumulate, a low memory condition occurs forcing GC to take
-place.
-
-The heap space is divided into the old and the new generation. The new
-generation includes the new object space (eden), and two survivor
-spaces. The JVM allocates new objects in the eden space, and moves
-longer lived objects from the new generation to the old generation.
-
-The young generation uses a fast copying garbage collector which employs
-two semi-spaces (survivor spaces) in the eden, copying surviving objects
-from one survivor space to the second. Objects that survive multiple
-young space collections are tenured, meaning they are copied to the
-tenured generation. The tenured generation is larger and fills up less
-quickly. So, it is garbage collected less frequently; and each
-collection takes longer than a young space only collection. Collecting
-the tenured space is also referred to as doing a full generation
-collection.
-
-The frequent young space collections are quick (a few milliseconds),
-while the full generation collection takes a longer (tens of
-milliseconds to a few seconds, depending upon the heap size).
-
-Other GC algorithms, such as the Concurrent Mark Sweep (CMS) algorithm,
-are incremental. They divide the full GC into several incremental
-pieces. This provides a high probability of small pauses. This process
-comes with an overhead and is not required for enterprise web
-applications.
-
-When the new generation fills up, it triggers a minor collection in
-which the surviving objects are moved to the old generation. When the
-old generation fills up, it triggers a major collection which involves
-the entire object heap.
-
-Both HotSpot and Solaris JDK use thread local object allocation pools
-for lock-free, fast, and scalable object allocation. So, custom object
-pooling is not often required. Consider pooling only if object
-construction cost is high and significantly affects execution profiles.
-
-[[abeie]][[GSPTG00146]][[choosing-the-garbage-collection-algorithm]]
-
-Choosing the Garbage Collection Algorithm
-+++++++++++++++++++++++++++++++++++++++++
-
-The default collector for Java server class machines will optimize for
-throughput but be tolerant of somewhat long pause times. If you would
-prefer to have minimal pause times at the expense of some throughput and
-increased CPU usage, consider using the CMS collector.
-
-[[gaclx]][[GSPTG00038]][[to-use-the-cms-collector]]
-
-To use the CMS collector
-
-Follow this procedure.
-
-1.  Make sure that the system is not using 100 percent of its CPU.
-2.  Configure the CMS collector in the server instance. +
-To do this, add the following JVM options:
-* `-XX:+UseConcMarkSweepGC`
-* `-XX:SoftRefLRUPolicyMSPerMB=1`
-
-[[abeif]][[GSPTG00147]][[additional-information]]
-
-Additional Information
-++++++++++++++++++++++
-
-Use the `jvmstat` utility to monitor HotSpot garbage collection. (See
-link:#abeiq[Further Information].)
-
-For detailed information on tuning the garbage collector, see
-http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html[Java
-SE 6 HotSpot Virtual Machine Garbage Collection Tuning]
-(`http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html`).
-
-[[abeig]][[GSPTG00206]][[tracing-garbage-collection]]
-
-Tracing Garbage Collection
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The two primary measures of garbage collection performance are
-throughput and pauses. Throughput is the percentage of the total time
-spent on other activities apart from GC. Pauses are times when an
-application appears unresponsive due to GC.
-
-Two other considerations are footprint and promptness. Footprint is the
-working size of the JVM process, measured in pages and cache lines.
-Promptness is the time between when an object becomes dead, and when the
-memory becomes available. This is an important consideration for
-distributed systems.
-
-A particular generation size makes a trade-off between these four
-metrics. For example, a large young generation likely maximizes
-throughput, but at the cost of footprint and promptness. Conversely,
-using a small young generation and incremental GC will minimize pauses,
-and thus increase promptness, but decrease throughput.
-
-JVM diagnostic output will display information on pauses due to garbage
-collection. If you start the server in verbose mode (use the command
-`asadmin start-domain --verbose` domain), then the command line argument
-`-verbose:gc` prints information for every collection. Here is an
-example of output of the information generated with this JVM flag:
-
-[source,oac_no_warn]
-----
-[GC 50650K->21808K(76868K), 0.0478645 secs]
- [GC 51197K->22305K(76868K), 0.0478645 secs]
- [GC 52293K->23867K(76868K), 0.0478645 secs]
- [Full GC 52970K->1690K(76868K), 0.54789968 secs]
-----
-
-On each line, the first number is the combined size of live objects
-before GC, the second number is the size of live objects after GC, the
-number in parenthesis is the total available space, which is the total
-heap minus one of the survivor spaces. The final figure is the amount of
-time that the GC took. This example shows three minor collections and
-one major collection. In the first GC, 50650 KB of objects existed
-before collection and 21808 KB of objects after collection. This means
-that 28842 KB of objects were dead and collected. The total heap size is
-76868 KB. The collection process required 0.0478645 seconds.
-
-Other useful monitoring options include:
-
-* `-XX:+PrintGCDetails` for more detailed logging information
-* `-Xloggc:file` to save the information in a log file
-
-[[abeih]][[GSPTG00207]][[other-garbage-collector-settings]]
-
-Other Garbage Collector Settings
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To specify the attributes for the Java virtual machine, use the
-Administration Console and set the property under config-name > JVM
-settings (JVM options).
-
-[[glgkm]][[GSPTG00148]][[setting-the-maximum-permanent-generation]]
-
-Setting the Maximum Permanent Generation
-++++++++++++++++++++++++++++++++++++++++
-
-For applications that do not dynamically generate and load classes, the
-size of the permanent generation does not affect GC performance. For
-applications that dynamically generate and load classes (for example,
-JSP applications), the size of the permanent generation does affect GC
-performance, since filling the permanent generation can trigger a Full
-GC. Tune the maximum permanent generation with the `-XX:MaxPermSize`
-option.
-
-[[glglk]][[GSPTG00149]][[disabling-explicit-garbage-collection]]
-
-Disabling Explicit Garbage Collection
-+++++++++++++++++++++++++++++++++++++
-
-Although applications can explicitly invoke GC with the `System.gc()`
-method, doing so is a bad idea since this forces major collections, and
-inhibits scalability on large systems. It is best to disable explicit GC
-by using the flag `-XX:+DisableExplicitGC`.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-On Windows systems, setting the `-XX:+DisableExplicitGC` option might
-prevent the renaming or removal of open application files. As a result,
-deployment, redeployment, or other operations that attempt to rename or
-delete files might fail.
-
-Application files can remain open because the files have been used by
-class loaders to find classes or resources, or have been opened
-explicitly by GlassFish Server or application code but never explicitly
-closed. On Windows systems, open files cannot be renamed or deleted. To
-overcome this limitation, GlassFish Server uses the `System.gc()` method
-to garbage collect the Java object that corresponds to an open file.
-When the Java object that corresponds to an open file is garbage
-collected, the object's `finalize` method closes the open channel to the
-file. GlassFish Server can then delete or rename the file.
-
-|=======================================================================
-
-
-[[glglr]][[GSPTG00150]][[setting-the-frequency-of-full-garbage-collection]]
-
-Setting the Frequency of Full Garbage Collection
-++++++++++++++++++++++++++++++++++++++++++++++++
-
-GlassFish Server uses RMI in the Administration module for monitoring.
-Garbage cannot be collected in RMI-based distributed applications
-without occasional local collections, so RMI forces a periodic full
-collection. Control the frequency of these collections with the property
-`-sun.rmi.dgc.client.gcInterval`. For example,
-`- java -Dsun.rmi.dgc.client.gcInterval=3600000` specifies explicit
-collection once per hour instead of the default rate of once per minute.
-
-[[abeii]][[GSPTG00208]][[tuning-the-java-heap]]
-
-Tuning the Java Heap
-^^^^^^^^^^^^^^^^^^^^
-
-This section discusses topics related to tuning the Java Heap for
-performance.
-
-* link:#abeij[Guidelines for Java Heap Sizing]
-* link:#abeik[Heap Tuning Parameters]
-
-[[abeij]][[GSPTG00151]][[guidelines-for-java-heap-sizing]]
-
-Guidelines for Java Heap Sizing
-+++++++++++++++++++++++++++++++
-
-Maximum heap size depends on maximum address space per process. The
-following table shows the maximum per-process address values for various
-platforms:
-
-[[sthref10]][[gacna]]
-
-Table 4-1 Maximum Address Space Per Process
-
-[width="100%",cols="<62%,<38%",options="header",]
-|===================================================
-|Operating System |Maximum Address Space Per Process
-|Oracle/Redhat/Ubuntu Linux 32-bit |4 GB
-|Oracle/Redhat/Ubuntu Linux 64-bit |Terabytes
-|Windows XP/2008/7 |2 GB
-|Solaris x86 (32-bit) |4 GB
-|Solaris 32-bit |4 GB
-|Solaris 64-bit |Terabytes
-|===================================================
-
-
-Maximum heap space is always smaller than maximum address space per
-process, because the process also needs space for stack, libraries, and
-so on. To determine the maximum heap space that can be allocated, use a
-profiling tool to examine the way memory is used. Gauge the maximum
-stack space the process uses and the amount of memory taken up libraries
-and other memory structures. The difference between the maximum address
-space and the total of those values is the amount of memory that can be
-allocated to the heap.
-
-You can improve performance by increasing your heap size or using a
-different garbage collector. In general, for long-running server
-applications, use the Java SE throughput collector on machines with
-multiple processors (`-XX:+AggressiveHeap`) and as large a heap as you
-can fit in the free memory of your machine.
-
-[[abeik]][[GSPTG00152]][[heap-tuning-parameters]]
-
-Heap Tuning Parameters
-++++++++++++++++++++++
-
-You can control the heap size with the following JVM parameters:
-
-* `-Xms`value
-* `-Xmx`value
-* `-XX:MinHeapFreeRatio=`minimum
-* `-XX:MaxHeapFreeRatio=`maximum
-* `-XX:NewRatio=`ratio
-* `-XX:NewSize=`size
-* `-XX:MaxNewSize=`size
-* `-XX:+AggressiveHeap`
-
-The `-Xms` and `-Xmx` parameters define the minimum and maximum heap
-sizes, respectively. Since GC occurs when the generations fill up,
-throughput is inversely proportional to the amount of the memory
-available. By default, the JVM grows or shrinks the heap at each GC to
-try to keep the proportion of free space to the living objects at each
-collection within a specific range. This range is set as a percentage by
-the parameters `-XX:MinHeapFreeRatio=`minimum and
-`-XX:MaxHeapFreeRatio=`maximum; and the total size bounded by `-Xms` and
-`-Xmx`.
-
-Set the values of `-Xms` and `-Xmx` equal to each other for a fixed heap
-size. When the heap grows or shrinks, the JVM must recalculate the old
-and new generation sizes to maintain a predefined `NewRatio`.
-
-The `NewSize` and `MaxNewSize` parameters control the new generation's
-minimum and maximum size. Regulate the new generation size by setting
-these parameters equal. The bigger the younger generation, the less
-often minor collections occur. The size of the young generation relative
-to the old generation is controlled by `NewRatio`. For example, setting
-`-XX:NewRatio=3` means that the ratio between the old and young
-generation is 1:3, the combined size of eden and the survivor spaces
-will be fourth of the heap.
-
-By default, the GlassFish Server is invoked with the Java HotSpot Server
-JVM. The default `NewRatio` for the Server JVM is 2: the old generation
-occupies 2/3 of the heap while the new generation occupies 1/3. The
-larger new generation can accommodate many more short-lived objects,
-decreasing the need for slow major collections. The old generation is
-still sufficiently large enough to hold many long-lived objects.
-
-To size the Java heap:
-
-* Decide the total amount of memory you can afford for the JVM.
-Accordingly, graph your own performance metric against young generation
-sizes to find the best setting.
-* Make plenty of memory available to the young generation. The default
-is calculated from `NewRatio` and the `-Xmx` setting.
-* Larger eden or younger generation spaces increase the spacing between
-full GCs. But young space collections could take a proportionally longer
-time. In general, keep the eden size between one fourth and one third
-the maximum heap size. The old generation must be larger than the new
-generation.
-
-For up-to-date defaults, see
-http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html[Java
-HotSpot VM Options]
-(`http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html`).
-
-[[GSPTG00032]][[fxxpw]]
-
-
-Example 4-1 Heap Configuration on Solaris
-
-This is an exmple heap configuration used by GlassFish Server on Solaris
-for large applications:
-
-[source,oac_no_warn]
-----
--Xms3584m
- -Xmx3584m
- -verbose:gc
- -Dsun.rmi.dgc.client.gcInterval=3600000
-----
-
-[[abeil]][[GSPTG00031]][[survivor-ratio-sizing]]
-
-Survivor Ratio Sizing
-
-The `SurvivorRatio` parameter controls the size of the two survivor
-spaces. For example, `-XX:SurvivorRatio=6` sets the ratio between each
-survivor space and eden to be 1:6, each survivor space will be one
-eighth of the young generation. The default for Solaris is 32. If
-survivor spaces are too small, copying collection overflows directly
-into the old generation. If survivor spaces are too large, they will be
-empty. At each GC, the JVM determines the number of times an object can
-be copied before it is tenured, called the tenure threshold. This
-threshold is chosen to keep the survivor space half full.
-
-Use the option `-XX:+PrintTenuringDistribution` to show the threshold
-and ages of the objects in the new generation. It is useful for
-observing the lifetime distribution of an application.
-
-[[abeio]][[GSPTG00209]][[rebasing-dlls-on-windows]]
-
-Rebasing DLLs on Windows
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-When the JVM initializes, it tries to allocate its heap using the `-Xms`
-setting. The base addresses of GlassFish Server DLLs can restrict the
-amount of contiguous address space available, causing JVM initialization
-to fail. The amount of contiguous address space available for Java
-memory varies depending on the base addresses assigned to the DLLs. You
-can increase the amount of contiguous address space available by
-rebasing the GlassFish Server DLLs.
-
-To prevent load address collisions, set preferred base addresses with
-the rebase utilty that comes with Visual Studio and the Platform SDK.
-Use the rebase utility to reassign the base addresses of the GlassFish
-Server DLLs to prevent relocations at load time and increase the
-available process memory for the Java heap.
-
-There are a few GlassFish Server DLLs that have non-default base
-addresses that can cause collisions. For example:
-
-* The `nspr` libraries have a preferred address of 0x30000000.
-* The `icu` libraries have the address of 0x4A?00000.
-
-Move these libraries near the system DLLs (`msvcrt.dll` is at
-`0x78000000`) to increase the available maximum contiguous address space
-substantially. Since rebasing can be done on any DLL, rebase to the DLLs
-after installing the GlassFish Server.
-
-[[gacmt]][[GSPTG00039]][[to-rebase-the-glassfish-servers-dlls]]
-
-To rebase the GlassFish Server's DLLs
-+++++++++++++++++++++++++++++++++++++
-
-[[sthref11]]
-
-Before You Begin
-
-To perform rebasing, you need:
-
-* Windows 2000
-* Visual Studio and the Microsoft Framework SDK rebase utility
-
-1.  Make as-install\ `bin` the default directory. +
-[source,oac_no_warn]
-----
-cd as-install\bin
-----
-2.  Enter this command: +
-[source,oac_no_warn]
-----
-rebase -b 0x6000000 *.dll
-----
-3.  Use the `dependencywalker` utility to make sure the DLLs were
-rebased correctly. +
-For more information, see the http://www.dependencywalker.com[Dependency
-Walker website] (`http://www.dependencywalker.com`).
-4.  Increase the size for the Java heap, and set the JVM Option
-accordingly on the JVM Settings page in the Admin Console.
-5.  Restart the GlassFish Server.
-
-[[GSPTG00033]][[fxxpz]]
-
-
-Example 4-2 Heap Configuration on Windows
-
-This is an example heap configuration used by Oracle GlassFish Server
-for heavy server-centric applications, on Windows, as set in the
-`domain.xml` file.
-
-[source,oac_no_warn]
-----
-<jvm-options> -Xms1400m </jvm-options>
-<jvm-options> -Xmx1400m </jvm-options>
-----
-
-[[sthref12]]
-
-See Also
-
-For more information on rebasing, see
-http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tools/tools/rebase.asp[MSDN
-documentation for rebase utility]
-(`http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tools/tools/rebase.asp`).
-
-[[abeiq]][[GSPTG00073]][[further-information]]
-
-Further Information
-~~~~~~~~~~~~~~~~~~~
-
-For more information on tuning the JVM, see:
-
-* http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html[Java
-HotSpot VM Options]
-(`http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html`)
-* http://www.oracle.com/technetwork/java/hotspotfaq-138619.html[Frequently
-Asked Questions About the Java HotSpot Virtual Machine]
-(`http://www.oracle.com/technetwork/java/hotspotfaq-138619.html`)
-* http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136373.html[Performance
-Documentation for the Java HotSpot VM]
-(`http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136373.html`)
-* http://java.sun.com/javase/technologies/performance.jsp[Java
-performance web page]
-(`http://java.sun.com/javase/technologies/performance.jsp`)
-* http://java.sun.com/developer/technicalArticles/J2SE/monitoring/[Monitoring
-and Managing Java SE 6 Platform Applications]
-(`http://java.sun.com/developer/technicalArticles/J2SE/monitoring/`)
-* The http://java.sun.com/performance/jvmstat/[jvmstat monitoring
-utility] (`http://java.sun.com/performance/jvmstat/`)
diff --git a/docs/performance-tuning-guide/src/main/jbake/content/tuning-os.adoc b/docs/performance-tuning-guide/src/main/jbake/content/tuning-os.adoc
deleted file mode 100644
index 252319f..0000000
--- a/docs/performance-tuning-guide/src/main/jbake/content/tuning-os.adoc
+++ /dev/null
@@ -1,916 +0,0 @@
-type=page
-status=published
-title=Tuning the Operating System and Platform
-prev=tuning-java.html
-~~~~~~
-Tuning the Operating System and Platform
-========================================
-
-[[GSPTG00007]][[abeir]]
-
-
-[[tuning-the-operating-system-and-platform]]
-5 Tuning the Operating System and Platform
-------------------------------------------
-
-This chapter discusses tuning the operating system (OS) for optimum
-performance. It discusses the following topics:
-
-* link:#abeis[Server Scaling]
-* link:#gfpzp[Solaris 10 Platform-Specific Tuning Information]
-* link:#abeix[Tuning for the Solaris OS]
-* link:#abeje[Tuning for Solaris on x86]
-* link:#abeji[Tuning for Linux platforms]
-* link:#gfpzh[Tuning UltraSPARC CMT-Based Systems]
-
-[[abeis]][[GSPTG00074]][[server-scaling]]
-
-Server Scaling
-~~~~~~~~~~~~~~
-
-This section provides recommendations for optimal performance scaling
-server for the following server subsystems:
-
-* link:#abeit[Processors]
-* link:#abeiu[Memory]
-* link:#abeiv[Disk Space]
-* link:#abeiw[Networking]
-* link:#glglf[UDP Buffer Sizes]
-
-[[abeit]][[GSPTG00210]][[processors]]
-
-Processors
-^^^^^^^^^^
-
-The GlassFish Server automatically takes advantage of multiple CPUs. In
-general, the effectiveness of multiple CPUs varies with the operating
-system and the workload, but more processors will generally improve
-dynamic content performance.
-
-Static content involves mostly input/output (I/O) rather than CPU
-activity. If the server is tuned properly, increasing primary memory
-will increase its content caching and thus increase the relative amount
-of time it spends in I/O versus CPU activity. Studies have shown that
-doubling the number of CPUs increases servlet performance by 50 to 80
-percent.
-
-[[abeiu]][[GSPTG00211]][[memory]]
-
-Memory
-^^^^^^
-
-See the section Hardware and Software Requirements in the GlassFish
-Server Release Notes for specific memory recommendations for each
-supported operating system.
-
-[[abeiv]][[GSPTG00212]][[disk-space]]
-
-Disk Space
-^^^^^^^^^^
-
-It is best to have enough disk space for the OS, document tree, and log
-files. In most cases 2GB total is sufficient.
-
-Put the OS, swap/paging file, GlassFish Server logs, and document tree
-each on separate hard drives. This way, if the log files fill up the log
-drive, the OS does not suffer. Also, its easy to tell if the OS paging
-file is causing drive activity, for example.
-
-OS vendors generally provide specific recommendations for how much swap
-or paging space to allocate. Based on Oracle testing, GlassFish Server
-performs best with swap space equal to RAM, plus enough to map the
-document tree.
-
-[[abeiw]][[GSPTG00213]][[networking]]
-
-Networking
-^^^^^^^^^^
-
-To determine the bandwidth the application needs, determine the
-following values:
-
-* The number of peak concurrent users (N ~peak~) the server needs to
-handle.
-* The average request size on your site, r. The average request can
-include multiple documents. When in doubt, use the home page and all its
-associated files and graphics.
-* Decide how long, t, the average user will be willing to wait for a
-document at peak utilization.
-
-Then, the bandwidth required is:
-
-N~peak~r / t
-
-For example, to support a peak of 50 users with an average document size
-of 24 Kbytes, and transferring each document in an average of 5 seconds,
-requires 240 Kbytes (1920 Kbit/s). So the site needs two T1 lines (each
-1544 Kbit/s). This bandwidth also allows some overhead for growth.
-
-The server's network interface card must support more than the WAN to
-which it is connected. For example, if you have up to three T1 lines,
-you can get by with a 10BaseT interface. Up to a T3 line (45 Mbit/s),
-you can use 100BaseT. But if you have more than 50 Mbit/s of WAN
-bandwidth, consider configuring multiple 100BaseT interfaces, or look at
-Gigabit Ethernet technology.
-
-[[glglf]][[GSPTG00214]][[udp-buffer-sizes]]
-
-UDP Buffer Sizes
-^^^^^^^^^^^^^^^^
-
-GlassFish Server uses User Datagram Protocol (UDP) for the transmission
-of multicast messages to GlassFish Server instances in a cluster. For
-peak performance from a GlassFish Server cluster that uses UDP
-multicast, limit the need to retransmit UDP messages. To limit the need
-to retransmit UDP messages, set the size of the UDP buffer to avoid
-excessive UDP datagram loss.
-
-[[sthref13]][[to-determine-an-optimal-udp-buffer-size]]
-
-To Determine an Optimal UDP Buffer Size
-+++++++++++++++++++++++++++++++++++++++
-
-The size of UDP buffer that is required to prevent excessive UDP
-datagram loss depends on many factors, such as:
-
-* The number of instances in the cluster
-* The number of instances on each host
-* The number of processors
-* The amount of memory
-* The speed of the hard disk for virtual memory
-
-If only one instance is running on each host in your cluster, the
-default UDP buffer size should suffice. If several instances are running
-on each host, determine whether the UDP buffer is large enough by
-testing for the loss of UDP packets.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-On Linux systems, the default UDP buffer size might be insufficient even
-if only one instance is running on each host. In this situation, set the
-UDP buffer size as explained in link:#glglz[To Set the UDP Buffer Size
-on Linux Systems].
-
-|=======================================================================
-
-
-[[glgiw]]
-
-1.  Ensure that no GlassFish Server clusters are running. +
-If necessary, stop any running clusters as explained in
-"link:../ha-administration-guide/instances.html#GSHAG00110[To Stop a Cluster]" in GlassFish Server Open Source
-Edition High Availability Administration Guide.
-2.  Determine the absolute number of lost UDP packets when no clusters
-are running. +
-How you determine the number of lost packets depends on the operating
-system. For example:
-* On Linux systems, use the `netstat -su` command and look for the
-`packet receive errors` count in the `Udp` section.
-* On AIX systems, use the `netstat -s` command and look for the
-`fragments dropped (dup or out of space)` count in the `ip` section.
-3.  Start all the clusters that are configured for your installation of
-GlassFish Server. +
-Start each cluster as explained in "link:../ha-administration-guide/instances.html#GSHAG00109[To Start a
-Cluster]" in GlassFish Server Open Source Edition High Availability
-Administration Guide.
-4.  Determine the absolute number of lost UDP packets after the clusters
-are started.
-5.  If the difference in the number of lost packets is significant,
-increase the size of the UDP buffer.
-
-[[glglz]][[GSPTG00040]][[to-set-the-udp-buffer-size-on-linux-systems]]
-
-To Set the UDP Buffer Size on Linux Systems
-+++++++++++++++++++++++++++++++++++++++++++
-
-On Linux systems, a default UDP buffer size is set for the client, but
-not for the server. Therefore, on Linux systems, the UDP buffer size
-might have to be increased. Setting the UDP buffer size involves setting
-the following kernel parameters:
-
-* `net.core.rmem_max`
-* `net.core.wmem_max`
-* `net.core.rmem_default`
-* `net.core.wmem_default`
-
-Set the kernel parameters in the `/etc/sysctl.conf` file or at runtime.
-
-If you set the parameters in the `/etc/sysctl.conf` file, the settings
-are preserved when the system is rebooted. If you set the parameters at
-runtime, the settings are not preserved when the system is rebooted.
-
-* To set the parameters in the `/etc/sysctl.conf` file, add or edit the
-following lines in the file: +
-[source,oac_no_warn]
-----
-net.core.rmem_max=rmem-max
-net.core.wmem_max=wmem-max
-net.core.rmem_default=rmem-default
-net.core.wmem_default=wmem-default
-----
-* To set the parameters at runtime, use the sysctl command. +
-[source,oac_no_warn]
-----
-$ /sbin/sysctl -w net.core.rmem_max=rmem-max \
-net.core.wmem_max=wmem-max \
-net.core.rmem_default=rmem-default \
-net.core.wmem_default=wmem-default
-----
-
-[[sthref14]]
-
-Example 5-1 Setting the UDP Buffer Size in the `/etc/sysctl.conf` File
-
-This example shows the lines in the `/etc/sysctl.conf` file for setting
-the kernel parameters for controlling the UDP buffer size to 524288.
-
-[source,oac_no_warn]
-----
-net.core.rmem_max=524288
-net.core.wmem_max=524288
-net.core.rmem_default=524288
-net.core.wmem_default=524288
-----
-
-[[GSPTG00034]][[glgjp]]
-
-
-Example 5-2 Setting the UDP Buffer Size at Runtime
-
-This example sets the kernel parameters for controlling the UDP buffer
-size to 524288 at runtime.
-
-[source,oac_no_warn]
-----
-$ /sbin/sysctl -w net.core.rmem_max=524288 \
-net.core.wmem_max=52428 \
-net.core.rmem_default=52428 \
-net.core.wmem_default=524288
-net.core.rmem_max = 524288
-net.core.wmem_max = 52428
-net.core.rmem_default = 52428
-net.core.wmem_default = 524288
-----
-
-[[gfpzp]][[GSPTG00075]][[solaris-10-platform-specific-tuning-information]]
-
-Solaris 10 Platform-Specific Tuning Information
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Solaris Dynamic Tracing (DTrace) is a comprehensive dynamic tracing
-framework for the Solaris Operating System (OS). You can use the DTrace
-Toolkit to monitor the system. The DTrace Toolkit is available through
-the OpenSolaris project from the
-http://hub.opensolaris.org/bin/view/Community+Group+dtrace/dtracetoolkit[DTraceToolkit
-page]
-(`http://hub.opensolaris.org/bin/view/Community+Group+dtrace/dtracetoolkit`).
-
-[[abeix]][[GSPTG00076]][[tuning-for-the-solaris-os]]
-
-Tuning for the Solaris OS
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-* link:#abeiy[Tuning Parameters]
-* link:#abeja[File Descriptor Setting]
-
-[[abeiy]][[GSPTG00215]][[tuning-parameters]]
-
-Tuning Parameters
-^^^^^^^^^^^^^^^^^
-
-Tuning Solaris TCP/IP settings benefits programs that open and close
-many sockets. Since the GlassFish Server operates with a small fixed set
-of connections, the performance gain might not be significant.
-
-The following table shows Solaris tuning parameters that affect
-performance and scalability benchmarking. These values are examples of
-how to tune your system for best performance.
-
-[[sthref15]][[gacmm]]
-
-Table 5-1 Tuning Parameters for Solaris
-
-[width="235%",cols="<14%,<6%,<34%,<29%,<17%",options="header",]
-|=======================================================================
-|Parameter |Scope |Default |Tuned Value |Comments
-|`rlim_fd_max` |`/etc/system` |65536 |65536 |Limit of process open file
-descriptors. Set to account for expected load (for associated sockets,
-files, and pipes if any).
-
-|`rlim_fd_cur` |`/etc/system` |1024 |8192 | +
-
-|`sq_max_size` |`/etc/system` |2 |0 |Controls streams driver queue size;
-setting to 0 makes it infinite so the performance runs won't be hit by
-lack of buffer space. Set on clients too. Note that setting
-`sq_max_size` to 0 might not be optimal for production systems with high
-network traffic.
-
-|`tcp_close_wait_interval` |`ndd /dev/tcp` |240000 |60000 |Set on
-clients too.
-
-|`tcp_time_wait_interval` |`ndd /dev/tcp` |240000 |60000 |Set on clients
-too.
-
-|`tcp_conn_req_max_q` |`ndd /dev/tcp` |128 |1024 | +
-
-|`tcp_conn_req_max_q0` |`ndd /dev/tcp` |1024 |4096 | +
-
-|`tcp_ip_abort_interval` |`ndd /dev/tcp` |480000 |60000 | +
-
-|`tcp_keepalive_interval` |`ndd /dev/tcp` |7200000 |900000 |For high
-traffic web sites, lower this value.
-
-|`tcp_rexmit_interval_initial` |`ndd /dev/tcp` |3000 |3000 |If
-retransmission is greater than 30-40%, you should increase this value.
-
-|`tcp_rexmit_interval_max` |`ndd /dev/tcp` |240000 |10000 | +
-
-|`tcp_rexmit_interval_min` |`ndd /dev/tcp` |200 |3000 | +
-
-|`tcp_smallest_anon_port` |`ndd /dev/tcp` |32768 |1024 |Set on clients
-too.
-
-|`tcp_slow_start_initial` |`ndd /dev/tcp` |1 |2 |Slightly faster
-transmission of small amounts of data.
-
-|`tcp_xmit_hiwat` |`ndd /dev/tcp` |8129 |32768 |Size of transmit buffer.
-
-|`tcp_recv_hiwat` |`ndd /dev/tcp` |8129 |32768 |Size of receive buffer.
-
-|`tcp_conn_hash_size` |`ndd /dev/tcp` |512 |8192 |Size of connection
-hash table. See link:#abeiz[Sizing the Connection Hash Table].
-|=======================================================================
-
-
-[[abeiz]][[GSPTG00153]][[sizing-the-connection-hash-table]]
-
-Sizing the Connection Hash Table
-++++++++++++++++++++++++++++++++
-
-The connection hash table keeps all the information for active TCP
-connections. Use the following command to get the size of the connection
-hash table:
-
-[source,oac_no_warn]
-----
-ndd -get /dev/tcp tcp_conn_hash
-----
-
-This value does not limit the number of connections, but it can cause
-connection hashing to take longer. The default size is 512.
-
-To make lookups more efficient, set the value to half of the number of
-concurrent TCP connections that are expected on the server. You can set
-this value only in `/etc/system`, and it becomes effective at boot time.
-
-Use the following command to get the current number of TCP connections.
-
-[source,oac_no_warn]
-----
-netstat -nP tcp|wc -l
-----
-
-[[abeja]][[GSPTG00216]][[file-descriptor-setting]]
-
-File Descriptor Setting
-^^^^^^^^^^^^^^^^^^^^^^^
-
-On the Solaris OS, setting the maximum number of open files property
-using `ulimit` has the biggest impact on efforts to support the maximum
-number of RMI/IIOP clients.
-
-To increase the hard limit, add the following command to `/etc/system`
-and reboot it once:
-
-[source,oac_no_warn]
-----
-set rlim_fd_max = 8192
-----
-
-Verify this hard limit by using the following command:
-
-[source,oac_no_warn]
-----
-ulimit -a -H
-----
-
-Once the above hard limit is set, increase the value of this property
-explicitly (up to this limit) using the following command:
-
-[source,oac_no_warn]
-----
-ulimit -n 8192
-----
-
-Verify this limit by using the following command:
-
-[source,oac_no_warn]
-----
-ulimit -a
-----
-
-For example, with the default `ulimit` of 64, a simple test driver can
-support only 25 concurrent clients, but with `ulimit` set to 8192, the
-same test driver can support 120 concurrent clients. The test driver
-spawned multiple threads, each of which performed a JNDI lookup and
-repeatedly called the same business method with a think (delay) time of
-500 ms between business method calls, exchanging data of about 100 KB.
-These settings apply to RMI/IIOP clients on the Solaris OS.
-
-[[abeje]][[GSPTG00077]][[tuning-for-solaris-on-x86]]
-
-Tuning for Solaris on x86
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following are some options to consider when tuning Solaris on x86
-for GlassFish Server:
-
-* link:#abejg[File Descriptors]
-* link:#abejh[IP Stack Settings]
-
-Some of the values depend on the system resources available. After
-making any changes to `/etc/system`, reboot the machines.
-
-[[abejg]][[GSPTG00217]][[file-descriptors]]
-
-File Descriptors
-^^^^^^^^^^^^^^^^
-
-Add (or edit) the following lines in the `/etc/system` file:
-
-[source,oac_no_warn]
-----
-set rlim_fd_max=65536
-set rlim_fd_cur=65536
-set sq_max_size=0
-set tcp:tcp_conn_hash_size=8192
-set autoup=60
-set pcisch:pci_stream_buf_enable=0
-----
-
-These settings affect the file descriptors.
-
-[[abejh]][[GSPTG00218]][[ip-stack-settings]]
-
-IP Stack Settings
-^^^^^^^^^^^^^^^^^
-
-Add (or edit) the following lines in the `/etc/system` file:
-
-[source,oac_no_warn]
-----
-set ip:tcp_squeue_wput=1
-set ip:tcp_squeue_close=1
-set ip:ip_squeue_bind=1
-set ip:ip_squeue_worker_wait=10
-set ip:ip_squeue_profile=0
-----
-
-These settings tune the IP stack.
-
-To preserve the changes to the file between system reboots, place the
-following changes to the default TCP variables in a startup script that
-gets executed when the system reboots:
-
-[source,oac_no_warn]
-----
-ndd -set /dev/tcp tcp_time_wait_interval 60000
-ndd -set /dev/tcp tcp_conn_req_max_q 16384
-ndd -set /dev/tcp tcp_conn_req_max_q0 16384
-ndd -set /dev/tcp tcp_ip_abort_interval 60000
-ndd -set /dev/tcp tcp_keepalive_interval 7200000
-ndd -set /dev/tcp tcp_rexmit_interval_initial 4000
-ndd -set /dev/tcp tcp_rexmit_interval_min 3000
-ndd -set /dev/tcp tcp_rexmit_interval_max 10000
-ndd -set /dev/tcp tcp_smallest_anon_port 32768
-ndd -set /dev/tcp tcp_slow_start_initial 2
-ndd -set /dev/tcp tcp_xmit_hiwat 32768
-ndd -set /dev/tcp tcp_recv_hiwat 32768
-----
-
-[[abeji]][[GSPTG00078]][[tuning-for-linux-platforms]]
-
-Tuning for Linux platforms
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-To tune for maximum performance on Linux, you need to make adjustments
-to the following:
-
-* link:#gkvjl[Startup Files]
-* link:#abejj[File Descriptors]
-* link:#abejk[Virtual Memory]
-* link:#abejl[Network Interface]
-* link:#abejm[Disk I/O Settings]
-* link:#abejn[TCP/IP Settings]
-
-[[gkvjl]][[GSPTG00219]][[startup-files]]
-
-Startup Files
-^^^^^^^^^^^^^
-
-The following parameters must be added to the `/etc/rc.d/rc.local` file
-that gets executed during system startup.
-
-[source,oac_no_warn]
-----
-<-- begin
-#max file count updated ~256 descriptors per 4Mb.
-Specify number of file descriptors based on the amount of system RAM.
-echo "6553"> /proc/sys/fs/file-max
-#inode-max 3-4 times the file-max
-#file not present!!!!!
-#echo"262144"> /proc/sys/fs/inode-max
-#make more local ports available
-echo 1024 25000> /proc/sys/net/ipv4/ip_local_port_range
-#increase the memory available with socket buffers
-echo 2621143> /proc/sys/net/core/rmem_max
-echo 262143> /proc/sys/net/core/rmem_default
-#above configuration for 2.4.X kernels
-echo 4096 131072 262143> /proc/sys/net/ipv4/tcp_rmem
-echo 4096 13107262143> /proc/sys/net/ipv4/tcp_wmem
-#disable "RFC2018 TCP Selective Acknowledgements," and
-"RFC1323 TCP timestamps" echo 0> /proc/sys/net/ipv4/tcp_sack
-echo 0> /proc/sys/net/ipv4/tcp_timestamps
-#double maximum amount of memory allocated to shm at runtime
-echo "67108864"> /proc/sys/kernel/shmmax
-#improve virtual memory VM subsystem of the Linux
-echo "100 1200 128 512 15 5000 500 1884 2"> /proc/sys/vm/bdflush
-#we also do a sysctl
-sysctl -p /etc/sysctl.conf
--- end -->
-----
-
-Additionally, create an `/etc/sysctl.conf` file and append it with the
-following values:
-
-[source,oac_no_warn]
-----
-<-- begin
- #Disables packet forwarding
-net.ipv4.ip_forward = 0
-#Enables source route verification
-net.ipv4.conf.default.rp_filter = 1
-#Disables the magic-sysrq key
-kernel.sysrq = 0
-fs.file-max=65536
-vm.bdflush = 100 1200 128 512 15 5000 500 1884 2
-net.ipv4.ip_local_port_range = 1024 65000
-net.core.rmem_max= 262143
-net.core.rmem_default = 262143
-net.ipv4.tcp_rmem = 4096 131072 262143
-net.ipv4.tcp_wmem = 4096 131072 262143
-net.ipv4.tcp_sack = 0
-net.ipv4.tcp_timestamps = 0
-kernel.shmmax = 67108864
-----
-
-[[abejj]][[GSPTG00220]][[file-descriptors-1]]
-
-File Descriptors
-^^^^^^^^^^^^^^^^
-
-You may need to increase the number of file descriptors from the
-default. Having a higher number of file descriptors ensures that the
-server can open sockets under high load and not abort requests coming in
-from clients.
-
-Start by checking system limits for file descriptors with this command:
-
-[source,oac_no_warn]
-----
-cat /proc/sys/fs/file-max
-8192
-----
-
-The current limit shown is 8192. To increase it to 65535, use the
-following command (as root):
-
-[source,oac_no_warn]
-----
-echo "65535"> /proc/sys/fs/file-max
-----
-
-To make this value to survive a system reboot, add it to
-`/etc/sysctl.conf` and specify the maximum number of open files
-permitted:
-
-[source,oac_no_warn]
-----
-fs.file-max = 65535
-----
-
-Note that the parameter is not `proc.sys.fs.file-max`, as one might
-expect.
-
-To list the available parameters that can be modified using `sysctl`:
-
-[source,oac_no_warn]
-----
-sysctl -a
-----
-
-To load new values from the `sysctl.conf` file:
-
-[source,oac_no_warn]
-----
-sysctl -p /etc/sysctl.conf
-----
-
-To check and modify limits per shell, use the following command:
-
-[source,oac_no_warn]
-----
-limit
-----
-
-The output will look something like this:
-
-[source,oac_no_warn]
-----
-cputime         unlimited
-filesize        unlimited
-datasize        unlimited
-stacksize       8192 kbytes
-coredumpsize    0 kbytes
-memoryuse       unlimited
-descriptors     1024
-memorylocked    unlimited
-maxproc         8146
-openfiles       1024
-----
-
-The `openfiles` and `descriptors` show a limit of 1024. To increase the
-limit to 65535 for all users, edit `/etc/security/limits.conf` as root,
-and modify or add the `nofile` setting (number of file) entries:
-
-[source,oac_no_warn]
-----
-*         soft    nofile                     65535
-*         hard    nofile                     65535
-----
-
-The character "`*`" is a wildcard that identifies all users. You could
-also specify a user ID instead.
-
-Then edit `/etc/pam.d/login` and add the line:
-
-[source,oac_no_warn]
-----
-session required /lib/security/pam_limits.so
-----
-
-On Red Hat, you also need to edit `/etc/pam.d/sshd` and add the
-following line:
-
-[source,oac_no_warn]
-----
-session required /lib/security/pam_limits.so
-----
-
-On many systems, this procedure will be sufficient. Log in as a regular
-user and try it before doing the remaining steps. The remaining steps
-might not be required, depending on how pluggable authentication modules
-(PAM) and secure shell (SSH) are configured.
-
-[[abejk]][[GSPTG00221]][[virtual-memory]]
-
-Virtual Memory
-^^^^^^^^^^^^^^
-
-To change virtual memory settings, add the following to `/etc/rc.local`:
-
-[source,oac_no_warn]
-----
-echo 100 1200 128 512 15 5000 500 1884 2> /proc/sys/vm/bdflush
-----
-
-For more information, view the man pages for `bdflush`.
-
-[[abejl]][[GSPTG00222]][[network-interface]]
-
-Network Interface
-^^^^^^^^^^^^^^^^^
-
-To ensure that the network interface is operating in full duplex mode,
-add the following entry into `/etc/rc.local`:
-
-[source,oac_no_warn]
-----
-mii-tool -F 100baseTx-FD eth0
-----
-
-where eth0 is the name of the network interface card (NIC).
-
-[[abejm]][[GSPTG00223]][[disk-io-settings]]
-
-Disk I/O Settings
-^^^^^^^^^^^^^^^^^
-
- 
-
-[[gaclw]][[GSPTG00041]][[to-tune-disk-io-performance-for-non-scsi-disks]]
-
-To tune disk I/O performance for non SCSI disks
-+++++++++++++++++++++++++++++++++++++++++++++++
-
-1.  Test the disk speed. +
-Use this command: +
-[source,oac_no_warn]
-----
-/sbin/hdparm -t /dev/hdX
-----
-2.  Enable direct memory access (DMA). +
-Use this command: +
-[source,oac_no_warn]
-----
-/sbin/hdparm -d1 /dev/hdX
-----
-3.  Check the speed again using the `hdparm` command. +
-Given that DMA is not enabled by default, the transfer rate might have
-improved considerably. In order to do this at every reboot, add the
-`/sbin/hdparm -d1 /dev/hdX` line to `/etc/conf.d/local.start`,
-`/etc/init.d/rc.local`, or whatever the startup script is called. +
-For information on SCSI disks, see:
-http://people.redhat.com/alikins/system_tuning.html#scsi[System Tuning
-for Linux Servers — SCSI]
-(`http://people.redhat.com/alikins/system_tuning.html#scsi`).
-
-[[abejn]][[GSPTG00224]][[tcpip-settings]]
-
-TCP/IP Settings
-^^^^^^^^^^^^^^^
-
- 
-
-[[gacmd]][[GSPTG00042]][[to-tune-the-tcpip-settings]]
-
-To tune the TCP/IP settings
-+++++++++++++++++++++++++++
-
-1.  Add the following entry to `/etc/rc.local` +
-[source,oac_no_warn]
-----
-echo 30> /proc/sys/net/ipv4/tcp_fin_timeout
-echo 60000> /proc/sys/net/ipv4/tcp_keepalive_time
-echo 15000> /proc/sys/net/ipv4/tcp_keepalive_intvl
-echo 0> /proc/sys/net/ipv4/tcp_window_scaling
-----
-2.  Add the following to `/etc/sysctl.conf` +
-[source,oac_no_warn]
-----
-# Disables packet forwarding
-net.ipv4.ip_forward = 0
-# Enables source route verification
-net.ipv4.conf.default.rp_filter = 1
-# Disables the magic-sysrq key
-kernel.sysrq = 0
-net.ipv4.ip_local_port_range = 1204 65000
-net.core.rmem_max = 262140
-net.core.rmem_default = 262140
-net.ipv4.tcp_rmem = 4096 131072 262140
-net.ipv4.tcp_wmem = 4096 131072 262140
-net.ipv4.tcp_sack = 0
-net.ipv4.tcp_timestamps = 0
-net.ipv4.tcp_window_scaling = 0
-net.ipv4.tcp_keepalive_time = 60000
-net.ipv4.tcp_keepalive_intvl = 15000
-net.ipv4.tcp_fin_timeout = 30
-----
-3.  Add the following as the last entry in `/etc/rc.local` +
-[source,oac_no_warn]
-----
-sysctl -p /etc/sysctl.conf
-----
-4.  Reboot the system.
-5.  Use this command to increase the size of the transmit buffer: +
-[source,oac_no_warn]
-----
-tcp_recv_hiwat ndd /dev/tcp 8129 32768
-----
-
-[[gfpzh]][[GSPTG00079]][[tuning-ultrasparc-cmt-based-systems]]
-
-Tuning UltraSPARC CMT-Based Systems
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Use a combination of tunable parameters and other parameters to tune
-UltraSPARC CMT-based systems. These values are an example of how you
-might tune your system to achieve the desired result.
-
-[[gfpzv]][[GSPTG00225]][[tuning-operating-system-and-tcp-settings]]
-
-Tuning Operating System and TCP Settings
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The following table shows the operating system tuning for Solaris 10
-used when benchmarking for performance and scalability on UtraSPARC
-CMT-based systems (64-bit systems).
-
-[[sthref16]][[gkuaa]]
-
-Table 5-2 Tuning 64-bit Systems for Performance Benchmarking
-
-[width="244%",cols="<14%,<6%,<32%,<32%,<16%",options="header",]
-|=======================================================================
-|Parameter |Scope |Default Value |Tuned Value |Comments
-|`rlim_fd_max` |`/etc/system` |65536 |260000 |Process open file
-descriptors limit; should account for the expected load (for the
-associated sockets, files, pipes if any).
-
-|`hires_tick` |`/etc/system` | + |1 | +
-
-|`sq_max_size` |`/etc/system` |2 |0 |Controls streams driver queue size;
-setting to 0 makes it infinite so the performance runs won't be hit by
-lack of buffer space. Set on clients too. Note that setting
-`sq_max_size` to 0 might not be optimal for production systems with high
-network traffic.
-
-|`ip:ip_squeue_bind` | + | + |0 | +
-
-|`ip:ip_squeue_fanout` | + | + |1 | +
-
-|`ipge:ipge_taskq_disable` |`/etc/system` | + |0 | +
-
-|`ipge:ipge_tx_ring_size` |`/etc/system` | + |2048 | +
-
-|`ipge:ipge_srv_fifo_depth` |`/etc/system` | + |2048 | +
-
-|`ipge:ipge_bcopy_thresh` |`/etc/system` | + |384 | +
-
-|`ipge:ipge_dvma_thresh` |`/etc/system` | + |384 | +
-
-|`ipge:ipge_tx_syncq` |`/etc/system` | + |1 | +
-
-|`tcp_conn_req_max_q` |`ndd /dev/tcp` |128 |3000 | +
-
-|`tcp_conn_req_max_q0` |`ndd /dev/tcp` |1024 |3000 | +
-
-|`tcp_max_buf` |`ndd /dev/tcp` | + |4194304 | +
-
-|`tcp_cwnd_max` |`ndd/dev/tcp` | + |2097152 | +
-
-|`tcp_xmit_hiwat` |`ndd /dev/tcp` |8129 |400000 |To increase the
-transmit buffer.
-
-|`tcp_recv_hiwat` |`ndd /dev/tcp` |8129 |400000 |To increase the receive
-buffer.
-|=======================================================================
-
-
-Note that the IPGE driver version is 1.25.25.
-
-[[gfpzm]][[GSPTG00226]][[disk-configuration]]
-
-Disk Configuration
-^^^^^^^^^^^^^^^^^^
-
-If HTTP access is logged, follow these guidelines for the disk:
-
-* Write access logs on faster disks or attached storage.
-* If running multiple instances, move the logs for each instance onto
-separate disks as much as possible.
-* Enable the disk read/write cache. Note that if you enable write cache
-on the disk, some writes might be lost if the disk fails.
-* Consider mounting the disks with the following options, which might
-yield better disk performance: `nologging`, `directio`, `noatime`.
-
-[[gfpzk]][[GSPTG00227]][[network-configuration]]
-
-Network Configuration
-^^^^^^^^^^^^^^^^^^^^^
-
-If more than one network interface card is used, make sure the network
-interrupts are not all going to the same core. Run the following script
-to disable interrupts:
-
-[source,oac_no_warn]
-----
-allpsr=`/usr/sbin/psrinfo | grep -v off-line | awk '{ print $1 }'`
-   set $allpsr
-   numpsr=$#
-   while [ $numpsr -gt 0 ];
-   do
-       shift
-       numpsr=`expr $numpsr - 1`
-       tmp=1
-       while [ $tmp -ne 4 ];
-       do
-           /usr/sbin/psradm -i $1
-           shift
-           numpsr=`expr $numpsr - 1`
-           tmp=`expr $tmp + 1`
-       done
-   done
-----
-
-Put all network interfaces into a single group. For example:
-
-[source,oac_no_warn]
-----
-$ifconfig ipge0 group webserver
-$ifconfig ipge1 group webserver
-----
diff --git a/docs/performance-tuning-guide/src/main/jbake/jbake.properties b/docs/performance-tuning-guide/src/main/jbake/jbake.properties
deleted file mode 100644
index 546d09c..0000000
--- a/docs/performance-tuning-guide/src/main/jbake/jbake.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-site.host=http://jbake.org
-render.tags=false
-render.sitemap=false
-render.archive=false
-render.feed=false
-asciidoctor.option.safe=0
-asciidoctor.attributes.export=true
diff --git a/docs/performance-tuning-guide/src/main/jbake/templates/footer.ftl b/docs/performance-tuning-guide/src/main/jbake/templates/footer.ftl
deleted file mode 100644
index 6f2b09e..0000000
--- a/docs/performance-tuning-guide/src/main/jbake/templates/footer.ftl
+++ /dev/null
@@ -1,46 +0,0 @@
-<#-- a footer template fragment included in the page template -->
-<hr />
-
-<table width="90%" id="bottom-nav" cellspacing="0" cellpadding="0">
-	<colgroup>
-		<col width="12%"/>
-		<col width="12%"/>
-		<col width="*"/>
-	</colgroup>
-	<tr>		
-	    <#if content.prev??>
-		<td align="left">
-		<a href="${content.prev}">
-			<span class=" vector-font"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Previous</span>
-		</a>
-		</td>
-		</#if>
-
-		<#if content.next??>
-		<td align="left">
-		<a href="${content.next}">
-			<span class="vector-font"><i class="fa fa-arrow-circle-right vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Next</span>
-		</a>
-		</td>
-		</#if>
-
-		<td align="right">
-		<a href="toc.html">
-			<span class="vector-font"><i class="fa fa-list vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Contents</span>
-		</a>
-		</td>
-	</tr>
-</table>
-
-<span id="copyright">
-        <img src="img/eclipse_foundation_logo_tiny.png" height="20px" alt="Eclipse Foundation Logo" align="top"/>&nbsp;            
-        <span >Copyright&nbsp;&copy;&nbsp;2019,&nbsp;Oracle&nbsp;and/or&nbsp;its&nbsp;affiliates.&nbsp;All&nbsp;rights&nbsp;reserved.</span>
-</span>
-
-<p align="center" class="beta">${config.status!}</p>
-
-</body>
-</html>
diff --git a/docs/performance-tuning-guide/src/main/jbake/templates/header.ftl b/docs/performance-tuning-guide/src/main/jbake/templates/header.ftl
deleted file mode 100644
index 82ebb36..0000000
--- a/docs/performance-tuning-guide/src/main/jbake/templates/header.ftl
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html>
-<#-- a header template fragment included in the page template -->
-<html lang="en">
-  <head>
-    <meta charset="utf-8"/>
-    <title><#if (content.title)??><#escape x as x?xml>${content.title}</#escape></#if></title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <link href="<#if (content.rootpath)??>${content.rootpath}<#else></#if>css/style.css" rel="stylesheet">
-    <script src="https://use.fontawesome.com/96c4d89611.js"></script>
-  </head>
-  <body>
-<table id="doc-title" cellspacing="0" cellpadding="0">
-  <tr>
-  <td align="left" valign="top">
-  <b>${content.title}</b><br />
-      <p class="beta">${config.status!}</p>
-  </td>
-  </tr>
-</table>
-<hr />
-
-<table width="90%" id="top-nav" cellspacing="0" cellpadding="0">
-	<colgroup>
-		<col width="12%"/>
-		<col width="12%"/>
-		<col width="*"/>
-	</colgroup>
-	<tr>
-	    <#if content.prev??>
-		<td align="left">
-		<a href="${content.prev}">
-			<span class="vector-font"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Previous</span>
-		</a>
-		</td>
-	    </#if>
-
-	    <#if content.next??>
-		<td align="left">
-		<a href="${content.next}">
-			<span class=" vector-font"><i class="fa fa-arrow-circle-right vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Next</span>
-		</a>
-		</td>
-	    </#if>
-
-		<td align="right">
-		<a href="toc.html">
-			<span class=" vector-font"><i class="fa fa-list vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Contents</span>
-		</a>
-		</td>
-	</tr>
-</table>
-
diff --git a/docs/performance-tuning-guide/src/main/jbake/templates/menu.ftl b/docs/performance-tuning-guide/src/main/jbake/templates/menu.ftl
deleted file mode 100644
index 888c03d..0000000
--- a/docs/performance-tuning-guide/src/main/jbake/templates/menu.ftl
+++ /dev/null
@@ -1 +0,0 @@
-<#-- a menu bar template fragment included in the page template -->
\ No newline at end of file
diff --git a/docs/performance-tuning-guide/src/main/jbake/templates/page.ftl b/docs/performance-tuning-guide/src/main/jbake/templates/page.ftl
deleted file mode 100644
index eca51db..0000000
--- a/docs/performance-tuning-guide/src/main/jbake/templates/page.ftl
+++ /dev/null
@@ -1,8 +0,0 @@
-<#-- a top level page layout template -->
-
-<#include "header.ftl">
-<#include "menu.ftl">
-
-${content.body}
-
-<#include "footer.ftl">
\ No newline at end of file
diff --git a/docs/pom.xml b/docs/pom.xml
index 134f9e3..dc50857 100644
--- a/docs/pom.xml
+++ b/docs/pom.xml
@@ -20,11 +20,12 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>org.glassfish.main</groupId>
-        <artifactId>nucleus-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
-        <relativePath>../nucleus/parent</relativePath>
+        <groupId>org.eclipse.ee4j</groupId>
+        <artifactId>project</artifactId>
+        <version>1.0.6</version>
+        <relativePath />
     </parent>
+    <version>7.0.0-SNAPSHOT</version>
     <groupId>org.glassfish.docs</groupId>
     <artifactId>docs</artifactId>
     <packaging>pom</packaging>
@@ -93,13 +94,22 @@
             <plugins>
                 <plugin>
                     <artifactId>maven-scm-publish-plugin</artifactId>
-                    <version>3.0.0</version>
+                    <version>3.1.0</version>
                 </plugin>
                 <plugin>
                     <groupId>org.glassfish.doc</groupId>
                     <artifactId>glassfish-doc-maven-plugin</artifactId>
                     <version>1.2</version>
                 </plugin>
+                <plugin>
+                    <groupId>org.codehaus.mojo</groupId>
+                    <artifactId>build-helper-maven-plugin</artifactId>
+                    <version>3.2.0</version>
+                </plugin>
+                <plugin>
+                    <artifactId>maven-jar-plugin</artifactId>
+                    <version>3.2.0</version>
+                </plugin>
             </plugins>
         </pluginManagement>
     </build>
diff --git a/docs/publish/pom.xml b/docs/publish/pom.xml
index 0a79a88..8949c61 100644
--- a/docs/publish/pom.xml
+++ b/docs/publish/pom.xml
@@ -22,9 +22,8 @@
     <parent>
         <groupId>org.glassfish.docs</groupId>
         <artifactId>docs</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
-    <groupId>org.glassfish.docs</groupId>
     <artifactId>publish</artifactId>
     <packaging>jar</packaging>
     <name>Publish the Eclipse GlassFish Website</name>
@@ -43,7 +42,7 @@
         <!-- add a new property for each new release -->
         <dir.510>${site.output.dir}/docs/5.1.0</dir.510>
         <!-- the "latest" version; update when a new release is done -->
-        <docs.version>5.1.0</docs.version>
+        <docs.version>7.0.0</docs.version>
     </properties>
 
     <!--
@@ -192,6 +191,9 @@
                                     <scmBranch>gh-pages</scmBranch>
                                     <skipDeletedFiles>false</skipDeletedFiles>
                                     <checkinComment>Update docs</checkinComment>
+                                    <ignorePathsToDelete>
+                                        <ignorePathsToDelete>latest</ignorePathsToDelete>
+                                    </ignorePathsToDelete>
                                 </configuration>
                             </execution>
                         </executions>
diff --git a/docs/quick-start-guide/README.md b/docs/quick-start-guide/README.md
deleted file mode 100644
index a3ec2b6..0000000
--- a/docs/quick-start-guide/README.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# A JBake project template
-
-## About JBake
-
-JBake is a static site generator, it's inspired from jekyll and written
-in java.  The basic idea is to have templates for the structure of the
-page, and the body generated from asciidoc content.
-
-## Pre requisites
-
-- Maven
-- JDK8+
-
-Deploying to Github will require password less authentication.
-
-This is done by exporting your SSH public key into your Github account.
-
-## Build the site locally
-
-The site is generated under target/staging.
-
-Open file:///PATH_TO_PROJECT_DIR/target/staging in a browser to view the site.
-
-```
-mvn generate-resources
-```
-
-Or you can invoke the JBake plugin directly.
-
-```
-mvn jbake:build
-```
-
-### Rebuild the site on changes
-
-```
-mvn jbake:watch
-```
-
-If you keep this command running, changes to the sources will be
-detected and the site will be rendered incrementally.
-
-This is convenient when writing content.
-
-### Serve the site locally
-
-```
-mvn jbake:serve
-```
-
-If a webserver is required (e.g. absolute path are used), this command
-will start a webserver (jetty) at http://localhost:8820.  It will also
-watch for changes and rebuild incrementally.
-
-## Deploy the site to Github Pages
-
-```
-mvn deploy
-```
-
-## Produce a zip file for download
-
-To produce a zip file containing the generated html files, use:
-
-```
-mvn package
-```
-
-When making a release on GitHub, this zip file should be added to the release.
-
-## Links
-
-- [JBake maven plugin documentation](https://github.com/Blazebit/jbake-maven-plugin)
-- [JBake documentation](http://jbake.org/docs/2.5.1)
-- [Freemarker documentation](http://freemarker.org/docs)
-- [AsciiDoc User Guide](http://asciidoc.org/userguide.html)
-- [Asciidoctor quick reference](http://asciidoctor.org/docs/asciidoc-syntax-quick-reference)
diff --git a/docs/quick-start-guide/pom.xml b/docs/quick-start-guide/pom.xml
index 939fc46..116ae4b 100644
--- a/docs/quick-start-guide/pom.xml
+++ b/docs/quick-start-guide/pom.xml
@@ -22,11 +22,10 @@
     <parent>
         <groupId>org.glassfish.docs</groupId>
         <artifactId>parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../parent</relativePath>
     </parent>
-    <groupId>org.glassfish.docs</groupId>
     <artifactId>quick-start-guide</artifactId>
     <packaging>jar</packaging>
-    <name>Eclipse GlassFish Server Quick Start Guide, Release 5.1</name>
+    <name>Eclipse GlassFish Server Quick Start Guide, Release 7</name>
 </project>
diff --git a/docs/quick-start-guide/src/main/asciidoc/basic-features.adoc b/docs/quick-start-guide/src/main/asciidoc/basic-features.adoc
new file mode 100644
index 0000000..9e74a01
--- /dev/null
+++ b/docs/quick-start-guide/src/main/asciidoc/basic-features.adoc
@@ -0,0 +1,781 @@
+type=page
+status=published
+title=Quick Start for Basic Features
+prev=preface.html
+~~~~~~
+
+= Quick Start for Basic Features
+
+[[GSQSG00003]][[aboaa]]
+
+
+[[quick-start-for-basic-features]]
+== 1 Quick Start for Basic Features
+
+{productName} provides a server for the
+development and deployment of Java Platform, Enterprise Edition (Jakarta EE
+platform) applications and web technologies based on Java technology.
+{productName} 7 provides the following:
+
+* A lightweight and extensible core based on OSGi Alliance standards
+* A web container
+* An easy-to-use Administration Console for configuration and management
+* Update Tool connectivity for updates and add-on components
+* Support for high availability clustering and load balancing
+
+The following topics are addressed here:
+
+* link:#ghgpe[About This Quick Start Guide]
+* link:#ghpfg[Default Paths and File Names]
+* link:#gixue[Default Administration Values]
+* link:#gglog[Starting and Stopping the Default Domain]
+* link:#gglmh[Starting and Stopping the Database Server]
+* link:#ggllq[Starting the Administration Console]
+* link:#geyvr[Deploying and Undeploying Applications]
+* link:#gktqx[High Availability Clustering and Load Balancing]
+* link:#ggkzh[For More Information]
+
+[[ghgpe]][[GSQSG00030]][[about-this-quick-start-guide]]
+
+=== About This Quick Start Guide
+
+{productName} 7 Quick Start Guide demonstrates
+key features of the {productName} product and enables you to quickly
+learn the basics. Step-by-step procedures introduce you to product
+features and enable you to use them immediately.
+
+This guide assumes that you have already obtained and installed the
+{productName} 7 software. For more information about installing
+{productName} 7, see the
+https://github.com/eclipse-ee4j/glassfishdocumentation[{productName} Installation Guide].
+
+Instructions and examples in this guide that apply to all supported
+operating systems use the forward slash character (`/`) as path
+separators in all file names and commands. Ensure that you use the
+correct character for the system on which {productName} is installed.
+For example:
+
+* UNIX, Linux, or Mac OS X systems: as-install``/bin/asadmin``
+* Windows systems: as-install``\bin\asadmin``
+
+This guide provides basic information only. For comprehensive
+information about {productName} and other entities mentioned in this
+guide, see link:#ggkzh[For More Information].
+
+To review additional details about this release before you begin using
+the software, see the link:release-notes.html#GSRLN[{productName}
+Release Notes]. The Release Notes provide important information about
+the {productName} 7 release, including details about new features,
+information about known issues and possible workarounds, and tips for
+installing and working with {productName} 7 software.
+
+[[ghpfg]][[GSQSG00031]][[default-paths-and-file-names]]
+
+=== Default Paths and File Names
+
+The following table describes the default paths and file names that are
+used in this book.
+
+[[sthref3]][[sthref4]]
+
+Table 1-1 Default Paths and File Names
+
+[width="100%",cols="14%,35%,51%",options="header",]
+|===
+|Placeholder |Description |Default Value
+
+|as-install
+|Represents the base installation directory for {productName}.
+a|Installations on the Oracle Solaris operating system, Linux operating
+system, and Mac OS operating system:
+
+user's-home-directory``/glassfish7/glassfish``
+
+Installations on the Windows operating system:
+
+SystemDrive``:\glassfish7\glassfish``
+
+|as-install-parent
+|Represents the parent of the base installation directory for {productName}.
+a|Installations on the Oracle Solaris operating system, Linux operating
+system, and Mac operating system:
+
+user's-home-directory``/glassfish7``
+
+Installations on the Windows operating system:
+
+SystemDrive``:\glassfish7``
+
+|domain-root-dir
+|Represents the directory in which a domain is created by default.
+|as-install``/domains/``
+
+|domain-dir
+|Represents the directory in which a domain's configuration is stored.
+|domain-root-dir``/``domain-name
+
+|instance-dir
+|Represents the directory for a server instance.
+|domain-dir``/``instance-name
+|===
+
+
+[[gixue]][[GSQSG00032]][[default-administration-values]]
+
+=== Default Administration Values
+
+The following table lists default administration values for {productName}. See link:#ghpfg[Default Paths and File Names] for more
+information about the as-install and domain-dir placeholders.
+
+[[sthref5]][[gixxy]]
+
+Table 1-2 Default Administration Values
+
+[width="100%",cols="50%,50%",options="header",]
+|===
+|Item |Default Value or Location
+|Domain name |`domain1`
+
+|Master password |`changeit`
+
+|https://github.com/eclipse-ee4j/glassfishdoc/5.0/reference-manual.pdf[
+`asadmin`(1M)] command-line utility
+|as-install``/bin``
+
+|Configuration files |domain-dir``/config``
+
+|Log files |domain-dir``/logs``
+
+|Administration server port |`4848`
+
+|HTTP port |`8080`
+
+|HTTPS port |`8181`
+
+|Pure JMX clients port |`8686`
+
+|Message Queue port |`7676`
+
+|IIOP port |`3700`
+
+|IIOP/SSL port |`3820`
+
+|IIOP/SSL port with mutual authentication |`3920`
+|===
+
+
+[[gglog]][[GSQSG00033]][[starting-and-stopping-the-default-domain]]
+
+=== Starting and Stopping the Default Domain
+
+When you install {productName}, a default domain named `domain1` is
+created. The following procedures describe how to start and stop
+`domain1` when it is the only domain. For information about starting and
+stopping a domain when there are multiple domains, see
+"link:administration-guide/domains.html#GSADG00006[Administering Domains]" in {productName} Administration Guide.
+
+[[ggmpd]][[GSQSG00005]][[to-start-the-default-domain]]
+
+==== To Start the Default Domain
+
+[[sthref6]]
+
+Before You Begin
+
+{productName} software must be installed before you start the domain.
+
+Run the `asadmin start-domain` command without an operand:
+
+[source]
+----
+as-install/bin/asadmin start-domain
+----
+
+The command starts the default domain, `domain1`.
+
+[[ggmsx]][[GSQSG00006]][[to-stop-the-default-domain]]
+
+==== To Stop the Default Domain
+
+Run the `asadmin stop-domain` command without an operand:
+
+[source]
+----
+as-install/bin/asadmin stop-domain
+----
+
+The command stops the default domain, `domain1`.
+
+
+[TIP]
+====
+To determine whether a domain is running, use the `asadmin list-domains`
+command:
+
+[source]
+----
+as-install/bin/asadmin list-domains
+----
+====
+
+
+[[gglmh]][[GSQSG00034]][[starting-and-stopping-the-database-server]]
+
+=== Starting and Stopping the Database Server
+
+A database server is not started by default when you start the {productName} domain. If your applications require a database back end, you
+must start and stop the database server manually.
+
+The following procedures describe how to start and stop the Apache Derby
+server that is bundled with {productName}. For information about
+starting and stopping other database servers, see the documentation for
+your specific product.
+
+For the list of database products supported in this release, see the
+https://github.com/eclipse-ee4j/glassfishdocumentation[{productName} Release Notes].
+
+For more information about database connectivity, see
+"https://github.com/eclipse-ee4j/glassfishdocumentation[Administering Database
+Connectivity]" in {productName} Administration Guide.
+
+[[ggncr]][[GSQSG00007]][[to-start-the-apache-derby-server]]
+
+==== To Start the Apache Derby Server
+
+[[sthref7]]
+
+Before You Begin
+
+At least one {productName} domain must be started before you start
+the database server.
+
+Run the `asadmin start-database` command.
+
+The general form for the command is as follows:
+
+[source]
+----
+as-install/bin/asadmin start-database --dbhome directory-path
+----
+
+For example, to start the Apache Derby server from its default location:
+
+[source]
+----
+as-install/bin/asadmin start-database --dbhome as-install-parent/javadb
+----
+
+[[ggnez]][[GSQSG00008]][[to-stop-the-apache-derby-server]]
+
+==== To Stop the Apache Derby Server
+
+Run the `asadmin stop-database` command:
+
+[source]
+----
+as-install/bin/asadmin stop-database
+----
+
+[[ggllq]][[GSQSG00035]][[starting-the-administration-console]]
+
+=== Starting the Administration Console
+
+The {productName} Administration Console provides a browser interface
+for configuring, administering, and monitoring {productName}.
+
+[[ggnbp]][[GSQSG00009]][[to-start-the-administration-console]]
+
+==== To Start the Administration Console
+
+[[sthref8]]
+
+Before You Begin
+
+At least one {productName} domain must be started.
+
+1. Type the URL in your browser.
++
+The default URL for the Administration Console on the local host is as follows:
++
+[source]
+----
+http://localhost:4848
+----
+
+2. If prompted, log in to the Administration Console.
++
+You will be prompted to log in if you chose to require an administration
+password at the time {productName} was installed.
+
+[[sthref9]]
+
+See Also
+
+For more information, see the Administration Console online help.
+
+[[geyvr]][[GSQSG00036]][[deploying-and-undeploying-applications]]
+
+=== Deploying and Undeploying Applications
+
+The process of configuring and enabling applications to run within the
+{productName} framework is referred to as deployment.
+
+This section explains how to deploy, list, and undeploy applications.
+The procedures in this section use the `hello.war` sample application.
+The following topics are addressed here:
+
+* link:#ghgis[To Obtain the Sample Application]
+* link:#gkpao[Deploying and Undeploying the Sample Application From the Command Line]
+* link:#gkpau[Deploying and Undeploying Applications by Using the Administration Console]
+* link:#gkpaa[Deploying and Undeploying the Sample Application Automatically]
+
+[[ghgis]][[GSQSG00010]][[to-obtain-the-sample-application]]
+
+==== To Obtain the Sample Application
+
+1. Download a copy of the `hello.war` sample application from
+`https://github.com/eclipse-ee4j/glassfishdownloads/quickstart/hello.war`.
+
+2. Save the `hello.war` file in the directory of your choice.
++
+This directory is referred to as sample-dir.
+
+[[gkpao]][[GSQSG00044]][[deploying-and-undeploying-the-sample-application-from-the-command-line]]
+
+==== Deploying and Undeploying the Sample Application From the Command Line
+
+{productName} provides `asadmin` subcommands for performing the
+following deployment-related tasks:
+
+* link:#ggndq[To Deploy the Sample Application From the Command Line]
+* link:#ggnco[To List Deployed Applications From the Command Line]
+* link:#ggnbm[To Undeploy the Sample Application From the Command Line]
+
+[[ggndq]][[GSQSG00011]][[to-deploy-the-sample-application-from-the-command-line]]
+
+===== To Deploy the Sample Application From the Command Line
+
+[[sthref10]]
+
+Before You Begin
+
+The sample application must be available before you start this task. To
+download the sample, see link:#ghgis[To Obtain the Sample Application].
+At least one {productName} domain must be started before you deploy
+the sample application.
+
+1. Run the `asadmin deploy` command.
++
+The general form for the command is as follows:
++
+[source]
+----
+as-install/bin/asadmin deploy war-name
+----
+To deploy the `hello.war` sample, the command is as follows:
++
+[source]
+----
+as-install/bin/asadmin deploy sample-dir/hello.war
+----
+
+2. Access the `hello` application by typing the following URL in your
+browser:
++
+[source]
+----
+http://localhost:8080/hello
+----
+The application's start page is displayed, and you are prompted to type
+your name.
++
+[source]
+----
+Hi, my name is Duke. What's yours?
+----
+
+3. Type your name and click Submit.
++
+The application displays a customized response, giving you a personal
+`Hello`.
+
+[[sthref11]]
+
+See Also
+
+For more information about the `deploy` subcommand, see
+link:reference-manual/deploy.html#GSRFM00114[`deploy`(1)].
+
+For more information about deploying applications from the command line,
+see the link:application-deployment-guide.html#GSDPG[{productName} Application
+Deployment Guide].
+
+[[ggnco]][[GSQSG00012]][[to-list-deployed-applications-from-the-command-line]]
+
+===== To List Deployed Applications From the Command Line
+
+Run the `asadmin list-applications` command:
+
+[source]
+----
+as-install/bin/asadmin list-applications
+----
+
+[[ggnbm]][[GSQSG00013]][[to-undeploy-the-sample-application-from-the-command-line]]
+
+===== To Undeploy the Sample Application From the Command Line
+
+Run the `asadmin undeploy` command.
+
+The general form for the command is as follows:
+
+[source]
+----
+as-install/bin/asadmin undeploy war-name
+----
+
+For war-name, use the literal `hello`, not the full `hello.war` name.
+
+For the `hello.war` example, the command is as follows:
+
+[source]
+----
+as-install/bin/asadmin undeploy hello
+----
+
+[[sthref12]]
+
+See Also
+
+For more information about the `undeploy` subcommand, see
+link:reference-manual/undeploy.html#GSRFM00244[`undeploy`(1)].
+
+[[gkpau]][[GSQSG00045]][[deploying-and-undeploying-applications-by-using-the-administration-console]]
+
+==== Deploying and Undeploying Applications by Using the Administration Console
+
+The graphical Administration Console of {productName} enables you to
+perform the following deployment-related tasks:
+
+* link:#ggnbn[To Deploy the Sample Application by Using the Administration Console]
+* link:#ggncd[To View Deployed Applications in the Administration Console]
+* link:#ggneh[To Undeploy the Sample Application by Using the Administration Console]
+
+[[ggnbn]][[GSQSG00014]][[to-deploy-the-sample-application-by-using-the-administration-console]]
+
+===== To Deploy the Sample Application by Using the Administration Console
+
+[[sthref13]]
+
+Before You Begin
+
+The sample application must be available before you start this task.
+To download the sample, see link:#ghgis[To Obtain the Sample Application].
+At least one {productName} domain must be started before you deploy
+the sample application.
+
+1. Launch the Administration Console by typing the following URL in
+your browser:
++
+[source]
+----
+http://localhost:4848
+----
+
+2. Click the Applications node in the tree on the left.
++
+The Applications page is displayed.
+
+3. Click the Deploy button.
++
+The Deploy Applications or Modules page is displayed.
+
+4. Select Packaged File to be Uploaded to the Server, and click Browse.
+
+5. Navigate to the location in which you saved the `hello.war` sample,
+select the file, and click Open.
++
+You are returned to the Deploy Applications or Modules page.
+
+6. Specify a description in the Description field, for example:
++
+`hello`
+
+7. Accept the other default settings, and click OK.
++
+You are returned to the Applications page.
+
+8. Select the check box next to the `hello` application and click the
+Launch link to run the application.
++
+The default URL for the application is as follows:
++
+[source]
+----
+http://localhost:8080/hello/
+----
+
+[[sthref14]]
+
+See Also
+
+For more information, see the Administration Console online help.
+
+[[ggncd]][[GSQSG00015]][[to-view-deployed-applications-in-the-administration-console]]
+
+===== To View Deployed Applications in the Administration Console
+
+1. Launch the Administration Console by typing the following URL in
+your browser:
++
+[source]
+----
+http://localhost:4848
+----
+
+2. Click the Applications node in the tree on the left.
++
+Expand the node to list deployed applications. Deployed applications are
+also listed in the table on the Applications page.
+
+[[ggneh]][[GSQSG00016]][[to-undeploy-the-sample-application-by-using-the-administration-console]]
+
+===== To Undeploy the Sample Application by Using the Administration Console
+
+1. Launch the Administration Console by typing the following URL in your browser:
++
+[source]
+----
+http://localhost:4848
+----
+
+2. Click the Applications node in the tree on the left.
++
+The Applications page is displayed.
+
+3. Select the check box next to the `hello` sample application.
+
+4. Remove or disable the application.
+* To remove the application, click the Undeploy button.
+* To disable the application, click the Disable button.
+
+[[sthref15]]
+
+See Also
+
+For more information, see the Administration Console online help.
+
+[[gkpaa]][[GSQSG00046]][[deploying-and-undeploying-the-sample-application-automatically]]
+
+==== Deploying and Undeploying the Sample Application Automatically
+
+{productName} enables you to performing the following
+deployment-related tasks automatically:
+
+* link:#geyvj[To Deploy the Sample Application Automatically]
+* link:#ggncw[To Undeploy the Sample Application Automatically]
+
+[[geyvj]][[GSQSG00017]][[to-deploy-the-sample-application-automatically]]
+
+===== To Deploy the Sample Application Automatically
+
+You can deploy applications automatically by placing them in the
+domain-dir``/autodeploy`` directory, where domain-dir is the directory of
+the domain for which you want to configure automatic deployment. For
+this example, use the default domain, `domain1`, in the default
+domain-root-dir, which is as-install``/domains``:
+
+[source]
+----
+as-install/domains/domain1/autodeploy
+----
+
+[[sthref16]]
+
+Before You Begin
+
+The sample application must be available before you start this task. To
+download the sample, see link:#ghgis[To Obtain the Sample Application].
+
+Copy the application WAR file to the domain-dir``/autodeploy`` directory.
+
+* On UNIX, Linux, and Mac OS X systems, type this command:
++
+[source]
+----
+cp sample-dir/hello.war as-install/domains/domain-dir/autodeploy
+----
+* On Windows systems, type this command:
++
+[source]
+----
+copy sample-dir\hello.war as-install\domains\domain-dir\autodeploy
+----
+
+{productName} automatically discovers and deploys the application.
+The default URL for the application is as follows:
+
+[source]
+----
+http://localhost:8080/hello/
+----
+
+[[ggncw]][[GSQSG00018]][[to-undeploy-the-sample-application-automatically]]
+
+===== To Undeploy the Sample Application Automatically
+
+1. Change to the domain's `autodeploy` directory.
++
+[source]
+----
+cd as-install\domains\domain-dir\autodeploy
+----
+
+2. Delete the sample application's WAR file to undeploy and remove the application.
+* On UNIX, Linux, and Mac OS X systems, type this command:
++
+[source]
+----
+rm hello.war
+----
+* On Windows systems, type this command:
++
+[source]
+----
+del hello.war
+----
+
+[[gktqx]][[GSQSG00037]][[high-availability-clustering-and-load-balancing]]
+
+=== High Availability Clustering and Load Balancing
+
+{productName} enables multiple {productName} instances to be
+clustered to provide high availability through failure protection,
+scalability, and load balancing. The subsections that follow provide an
+overview of high availability clustering and load balancing for
+{productName}.
+
+[[gktob]][[GSQSG00047]][[clusters-of-glassfish-server-instances]]
+
+==== Clusters of {productName} Instances
+
+A cluster is a collection of {productName} instances that work
+together as one logical entity. A cluster provides a runtime environment
+for one or more Java Platform, Enterprise Edition (Jakarta EE)
+applications. A cluster provides high availability through failure
+protection, scalability, and load balancing.
+
+A {productName} instance is a single Virtual Machine for the Java
+platform (Java Virtual Machine or JVM machine) on a single node in which
+{productName} is running. A node defines the host where the {productName} instance resides. The JVM machine must be compatible with the
+Java Platform, Enterprise Edition (Jakarta EE).
+
+{productName} instances form the basis of an application deployment.
+An instance is a building block in the clustering, load balancing, and
+session persistence features of {productName}. Each instance belongs
+to a single domain and has its own directory structure, configuration,
+and deployed applications. Every instance contains a reference to a node
+that defines the host where the instance resides.
+
+For more information, see the following documentation:
+
+* "link:ha-administration-guide/nodes.html#GSHAG00004[Administering {productName} Nodes]" in {productName} High Availability Administration Guide
+* "link:ha-administration-guide/clusters.html#GSHAG00005[Administering {productName} Clusters]" in
+{productName} High Availability Administration Guide
+* "link:ha-administration-guide/instances.html#GSHAG00006[Administering {productName} Instances]" in
+{productName} High Availability Administration Guide
+
+[[gktpt]][[GSQSG00048]][[session-persistence-and-failover]]
+
+==== Session Persistence and Failover
+
+Storing session state data enables the session state to be recovered
+after the failover of an instance in a cluster. Recovering the session
+state enables the session to continue without loss of information.
+{productName} supports in-memory session replication on other servers
+in the cluster for maintaining HTTP session and stateful session bean data.
+
+For more information, see "link:ha-administration-guide/session-persistence-and-failover.html#GSHAG00011[Configuring High
+Availability Session Persistence and Failover]" in {productName} High Availability Administration Guide.
+
+[[gksbz]][[GSQSG00049]][[load-balancing-for-clustered-configurations]]
+
+==== Load Balancing for Clustered Configurations
+
+{productName} supports web server and hardware-based load balancing
+for clustered configurations. A load balancer is deployed with a
+cluster, and provides the following features:
+
+* Allows an application or service to be scaled horizontally across
+multiple physical (or logical) hosts yet still present the user with a single URL
+* Insulates the user from host failures or server crashes when used with
+session persistence
+* Enhances security by hiding the internal network from the user
+
+{productName} is compatible with the Apache HTTP
+server `mod_jk` module for load balancing.
+
+{productName} load balancing configurations can vary widely depending
+on the needs of your enterprise. For complete information about
+configuring load balancing in {productName}, see the following
+documentation:
+
+* "link:ha-administration-guide/http-load-balancing.html#GSHAG00009[
+Configuring HTTP Load Balancing]" in
+{productName} High Availability Administration Guide
+* "link:ha-administration-guide/rmi-iiop.html#GSHAG00013[
+RMI-IIOP Load Balancing and Failover]" in
+{productName} High Availability Administration Guide
+
+[[ggkzh]][[GSQSG00040]][[for-more-information]]
+
+=== For More Information
+
+Additional resources are available to help you learn more about
+{productName} 7 and related technologies.
+
+The following resources are described here:
+
+* link:#ghhir[Product Documentation]
+* link:#giyjo[Tutorials]
+* link:#gintm[Jakarta EE Examples]
+
+[[ghhir]][[GSQSG00050]][[product-documentation]]
+
+==== Product Documentation
+
+Comprehensive product documentation is available and includes the
+following.
+
+* link:release-notes.html#GSRLN[{productName} Release Notes]:
+Latest details about new features, known issues, and tips for installing
+and working with {productName} software.
+* https://glassfish.org/docs/[{productName}]
+
+[[giyjo]][[GSQSG00052]][[tutorials]]
+
+==== Tutorials
+
+The following tutorials provide working examples and detailed
+instructions for creating enterprise applications for the Jakarta EE platform.
+
+* https://github.com/eclipse-ee4j/jakartaee-firstcup-examples[Your First Cup: An
+Introduction to the Jakarta EE Platform]. For beginning Jakarta EE
+programmers, this short tutorial explains the entire process for
+developing a simple enterprise application. The sample application is a
+web application that consists of a component that is based on the
+Enterprise JavaBeans specification, a JAX-RS web service, and a
+JavaServer Faces component for the web front end.
+* https://eclipse-ee4j.github.io/jakartaee-tutorial/[The Jakarta EE Tutorial].
+This comprehensive tutorial explains how to use Jakarta EE platform technologies
+and APIs to develop Jakarta EE applications.
+
+[[gintm]][[GSQSG00053]][[jakarta-ee-examples]]
+
+==== Jakarta EE Examples
+
+https://github.com/eclipse-ee4j/jakartaee-examples[Jakarta EE Examples] -
+The example applications demonstrate Jakarta EE technologies.
+
+
+
diff --git a/docs/quick-start-guide/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png b/docs/quick-start-guide/src/main/asciidoc/img/eclipse_foundation_logo_tiny.png
similarity index 100%
rename from docs/quick-start-guide/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png
rename to docs/quick-start-guide/src/main/asciidoc/img/eclipse_foundation_logo_tiny.png
Binary files differ
diff --git a/docs/quick-start-guide/src/main/jbake/assets/img/oracle-db-config.png b/docs/quick-start-guide/src/main/asciidoc/img/oracle-db-config.png
similarity index 100%
rename from docs/quick-start-guide/src/main/jbake/assets/img/oracle-db-config.png
rename to docs/quick-start-guide/src/main/asciidoc/img/oracle-db-config.png
Binary files differ
diff --git a/docs/quick-start-guide/src/main/jbake/assets/img/two-instance-cluster-config.png b/docs/quick-start-guide/src/main/asciidoc/img/two-instance-cluster-config.png
similarity index 100%
rename from docs/quick-start-guide/src/main/jbake/assets/img/two-instance-cluster-config.png
rename to docs/quick-start-guide/src/main/asciidoc/img/two-instance-cluster-config.png
Binary files differ
diff --git a/docs/quick-start-guide/src/main/asciidoc/preface.adoc b/docs/quick-start-guide/src/main/asciidoc/preface.adoc
new file mode 100644
index 0000000..9e6f6c5
--- /dev/null
+++ b/docs/quick-start-guide/src/main/asciidoc/preface.adoc
@@ -0,0 +1,219 @@
+type=page
+status=published
+title=Preface
+next=basic-features.html
+prev=title.html
+~~~~~~
+
+= Preface
+
+[[gkamj]][[preface]]
+
+== Preface
+
+[NOTE]
+====
+This documentation is part of the Java Enterprise Edition contribution
+to the Eclipse Foundation and is not intended for use in relation to
+Java Enterprise Edition or Orace GlassFish. The documentation is in the
+process of being revised to reflect the new Jakarta EE branding.
+Additional changes will be made as requirements and procedures evolve
+for Jakarta EE. Where applicable, references to Jakarta EE or Java
+Enterprise Edition should be considered references to Jakarta EE.
+
+Please see the Title page for additional license information.
+====
+
+This book demonstrates key features of the {productName} product and
+enables you to quickly learn the basics. Step-by-step procedures
+introduce you to product features and enable you to use them
+immediately.
+
+This preface contains information about and conventions for the entire
+{productName} ({productName}) documentation
+set.
+
+{productName} 7 is developed through the GlassFish project
+open-source community at `https://github.com/eclipse-ee4j/glassfish`. The
+GlassFish project provides a structured process for developing the
+{productName} platform that makes the new features of the Jakarta EE
+platform available faster, while maintaining the most important feature
+of Jakarta EE: compatibility. It enables Java developers to access the
+{productName} source code and to contribute to the development of the
+{productName}. The GlassFish project is designed to encourage
+communication between Oracle engineers and the community.
+
+The following topics are addressed here:
+
+* link:#ghpbz[{productName} Documentation Set]
+* link:#fwbkx[Typographic Conventions]
+* link:#fquvc[Symbol Conventions]
+
+[[ghpbz]][[glassfish-server-documentation-set]]
+
+=== {productName} Documentation Set
+
+The {productName} documentation set describes deployment planning and
+system installation. For an introduction to {productName}, refer to
+the books in the order in which they are listed in the following table.
+
+[width="100%",cols="30%,70%",options="header",]
+|===
+|Book Title |Description
+|link:release-notes.html#GSRLN[Release Notes] |Provides late-breaking information about
+the software and the documentation and includes a comprehensive,
+table-based summary of the supported hardware, operating system, Java
+Development Kit (JDK), and database drivers.
+
+|link:quick-start-guide.html#GSQSG[Quick Start Guide] |Explains how to get started with the
+{productName} product.
+
+|link:installation-guide.html#GSING[Installation Guide] |Explains how to install the software
+and its components.
+
+|link:upgrade-guide.html#GSUPG[Upgrade Guide] |Explains how to upgrade to the latest
+version of {productName}. This guide also describes differences
+between adjacent product releases and configuration options that can
+result in incompatibility with the product specifications.
+
+|link:deployment-planning-guide.html#GSPLG[Deployment Planning Guide] |Explains how to build a
+production deployment of {productName} that meets the requirements of
+your system and enterprise.
+
+|link:administration-guide.html#GSADG[Administration Guide] |Explains how to configure, monitor,
+and manage {productName} subsystems and components from the command
+line by using the link:reference-manual/asadmin.html#GSRFM00263[`asadmin`] utility. Instructions for
+performing these tasks from the Administration Console are provided in
+the Administration Console online help.
+
+|link:security-guide.html#GSSCG[Security Guide] |Provides instructions for configuring and
+administering {productName} security.
+
+|link:application-deployment-guide.html#GSDPG[Application Deployment Guide] |Explains how to assemble and
+deploy applications to the {productName} and provides information
+about deployment descriptors.
+
+|link:application-development-guide.html#GSDVG[Application Development Guide] |Explains how to create and
+implement Java Platform, Enterprise Edition (Jakarta EE platform)
+applications that are intended to run on the {productName}. These
+applications follow the open Java standards model for Jakarta EE components
+and application programmer interfaces (APIs). This guide provides
+information about developer tools, security, and debugging.
+
+| |
+
+|link:embedded-server-guide.html#GSESG[Embedded Server Guide] |Explains how to run applications in
+embedded {productName} and to develop applications in which {productName} is embedded.
+
+|link:ha-administration-guide.html#GSHAG[High Availability Administration Guide] |Explains how to
+configure {productName} to provide higher availability and
+scalability through failover and load balancing.
+
+|link:performance-tuning-guide.html#GSPTG[Performance Tuning Guide] |Explains how to optimize the
+performance of {productName}.
+
+|link:troubleshooting-guide.html#GSTSG[Troubleshooting Guide] |Describes common problems that you
+might encounter when using {productName} and explains how to solve
+them.
+
+|link:error-messages-reference.html#GSEMR[Error Message Reference] |Describes error messages that you
+might encounter when using {productName}.
+
+|link:reference-manual.html#GSRFM[Reference Manual] |Provides reference information in man
+page format for {productName} administration commands, utility
+commands, and related concepts.
+
+|link:../openmq/mq-release-notes.html#GMRLN[Message Queue Release Notes] |Describes new features,
+compatibility issues, and existing bugs for Open Message Queue.
+
+|link:../openmq/mq-tech-over.html#GMTOV[Message Queue Technical Overview] |Provides an introduction
+to the technology, concepts, architecture, capabilities, and features of
+the Message Queue messaging service.
+
+|link:../openmq/mq-admin-guide.html#GMADG[Message Queue Administration Guide] |Explains how to set up
+and manage a Message Queue messaging system.
+
+|link:../openmq/mq-dev-guide-jmx.html#GMJMG[Message Queue Developer's Guide for JMX Clients] |Describes
+the application programming interface in Message Queue for
+programmatically configuring and monitoring Message Queue resources in
+conformance with the Java Management Extensions (JMX).
+
+|link:../openmq/mq-dev-guide-java.html#GMJVG[Message Queue Developer's Guide for Java Clients] |Provides
+information about concepts and procedures for developing Java messaging
+applications (Java clients) that work with {productName}.
+
+|link:../openmq/mq-dev-guide-c.html#GMCCG[Message Queue Developer's Guide for C Clients] |Provides
+programming and reference information for developers working with
+Message Queue who want to use the C language binding to the Message
+Queue messaging service to send, receive, and process Message Queue
+messages.
+|===
+
+
+[[fwbkx]][[typographic-conventions]]
+
+=== Typographic Conventions
+
+The following table describes the typographic changes that are used in
+this book.
+
+[width="100%",cols="14%,37%,49%",options="header",]
+|===
+|Typeface |Meaning |Example
+|`AaBbCc123` |The names of commands, files, and directories, and
+onscreen computer output a|
+Edit your `.login` file.
+
+Use `ls` `a` to list all files.
+
+`machine_name% you have mail.`
+
+|`AaBbCc123` |What you type, contrasted with onscreen computer output a|
+`machine_name%` `su`
+
+`Password:`
+
+|AaBbCc123 |A placeholder to be replaced with a real name or value |The
+command to remove a file is `rm` filename.
+
+|AaBbCc123 |Book titles, new terms, and terms to be emphasized (note
+that some emphasized items appear bold online) a|
+Read Chapter 6 in the User's Guide.
+
+A cache is a copy that is stored locally.
+
+Do not save the file.
+
+|===
+
+
+[[fquvc]][[symbol-conventions]]
+
+=== Symbol Conventions
+
+The following table explains symbols that might be used in this book.
+
+[width="100%",cols="10%,26%,28%,36%",options="header",]
+|===
+|Symbol |Description |Example |Meaning
+|`[ ]` |Contains optional arguments and command options. |`ls [-l]` |The
+`-l` option is not required.
+
+|`{ \| }` |Contains a set of choices for a required command option.
+|`-d {y\|n}` |The `-d` option requires that you use either the `y`
+argument or the `n` argument.
+
+|`${ }` |Indicates a variable reference. |`${com.sun.javaRoot}`
+|References the value of the `com.sun.javaRoot` variable.
+
+|- |Joins simultaneous multiple keystrokes. |Control-A |Press the
+Control key while you press the A key.
+
+|+ + |Joins consecutive multiple keystrokes. |Ctrl+A+N |Press the
+Control key, release it, and then press the subsequent keys.
+
+|> |Indicates menu item selection in a graphical user interface. |File >
+New > Templates |From the File menu, choose New. From the New submenu,
+choose Templates.
+|===
+
diff --git a/docs/quick-start-guide/src/main/asciidoc/title.adoc b/docs/quick-start-guide/src/main/asciidoc/title.adoc
new file mode 100644
index 0000000..8dd09a6
--- /dev/null
+++ b/docs/quick-start-guide/src/main/asciidoc/title.adoc
@@ -0,0 +1,48 @@
+type=page
+status=published
+title={productName} Quick Start Guide, Release 7
+next=preface.html
+prev=toc.html
+~~~~~~
+
+= {productName} Quick Start Guide, Release 7
+
+[[eclipse-glassfish-server]]
+== {productName}
+
+Quick Start Guide
+
+Release 7
+
+Contributed 2018 - 2022
+
+This book demonstrates key features of the {productName} product and
+enables you to quickly learn the basics. Step-by-step procedures
+introduce you to product features and {productName} 7 Quick Start Guide {productName} 7
+Quick Start Guide you to use them immediately.
+
+[[sthref1]]
+
+'''''
+
+{productName} Quick Start Guide, Release 7
+
+Copyright © 2013, 2019 Oracle and/or its affiliates. All rights reserved.
+
+This program and the accompanying materials are made available under the
+terms of the Eclipse Public License v. 2.0, which is available at
+http://www.eclipse.org/legal/epl-2.0.
+
+SPDX-License-Identifier: EPL-2.0
+
+Oracle and Java are registered trademarks of Oracle and/or its
+affiliates. Other names may be trademarks of their respective owners.
+
+Intel and Intel Xeon are trademarks or registered trademarks of Intel
+Corporation. All SPARC trademarks are used under license and are
+trademarks or registered trademarks of SPARC International, Inc. AMD,
+Opteron, the AMD logo, and the AMD Opteron logo are trademarks or
+registered trademarks of Advanced Micro Devices. UNIX is a registered
+trademark of The Open Group.
+
+image:img/eclipse_foundation_logo_tiny.png["Eclipse Logo"]
diff --git a/docs/quick-start-guide/src/main/jbake/assets/css/style.css b/docs/quick-start-guide/src/main/jbake/assets/css/style.css
deleted file mode 100644
index 29b6b1d..0000000
--- a/docs/quick-start-guide/src/main/jbake/assets/css/style.css
+++ /dev/null
@@ -1,314 +0,0 @@
-/* CSS */
-/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
-/** 1. Set default font family to sans-serif. 2. Prevent iOS text size adjust after orientation change, without disabling user zoom. */
-html { font-family: sans-serif; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ }
-
-/* HTML5 display definitions ========================================================================== */
-/** Correct `block` display not defined for any HTML5 element in IE 8/9. Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox. Correct `block` display not defined for `main` in IE 11. */
-article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { display: block; }
-
-/** 1. Correct `inline-block` display not defined in IE 8/9. 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. */
-audio, canvas, progress, video { display: inline-block; /* 1 */ vertical-align: baseline; /* 2 */ }
-
-/** Prevent modern browsers from displaying `audio` without controls. Remove excess height in iOS 5 devices. */
-audio:not([controls]) { display: none; height: 0; }
-
-/** Address `[hidden]` styling not present in IE 8/9/10. Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. */
-[hidden], template { display: none; }
-
-/* Links ========================================================================== */
-/** Remove the gray background color from active links in IE 10. */
-a { background-color: transparent; }
-
-/** Improve readability when focused and also mouse hovered in all browsers. */
-a:active, a:hover { outline: 0; }
-
-/* Text-level semantics ========================================================================== */
-/** Address styling not present in IE 8/9/10/11, Safari, and Chrome. */
-abbr[title] { border-bottom: 1px dotted; }
-
-/** Address style set to `bolder` in Firefox 4+, Safari, and Chrome. */
-b, strong { font-weight: bold; }
-
-/** Address styling not present in Safari and Chrome. */
-dfn { font-style: italic; }
-
-/** Address variable `h1` font-size and margin within `section` and `article` contexts in Firefox 4+, Safari, and Chrome. */
-h1 { font-size: 2em; margin: 0.67em 0; }
-
-/** Address styling not present in IE 8/9. */
-mark { background: #ff0; color: #000; }
-
-/** Address inconsistent and variable font size in all browsers. */
-small { font-size: 80%; }
-
-/** Prevent `sub` and `sup` affecting `line-height` in all browsers. */
-sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }
-
-sup { top: -0.5em; }
-
-sub { bottom: -0.25em; }
-
-/* Embedded content ========================================================================== */
-/** Remove border when inside `a` element in IE 8/9/10. */
-img { border: 0; }
-
-/** Correct overflow not hidden in IE 9/10/11. */
-svg:not(:root) { overflow: hidden; }
-
-/* Grouping content ========================================================================== */
-/** Address margin not present in IE 8/9 and Safari. */
-figure { margin: 1em 40px; }
-
-/** Address differences between Firefox and other browsers. */
-hr { box-sizing: content-box; height: 0; }
-
-/** Contain overflow in all browsers. */
-pre { overflow: auto; }
-
-/** Address odd `em`-unit font size rendering in all browsers. */
-code, kbd, pre, samp { font-family: monospace, monospace; font-size: 1em; }
-
-/* Forms ========================================================================== */
-/** Known limitation: by default, Chrome and Safari on OS X allow very limited styling of `select`, unless a `border` property is set. */
-/** 1. Correct color not being inherited. Known issue: affects color of disabled elements. 2. Correct font properties not being inherited. 3. Address margins set differently in Firefox 4+, Safari, and Chrome. */
-button, input, optgroup, select, textarea { color: inherit; /* 1 */ font: inherit; /* 2 */ margin: 0; /* 3 */ }
-
-/** Address `overflow` set to `hidden` in IE 8/9/10/11. */
-button { overflow: visible; }
-
-/** Address inconsistent `text-transform` inheritance for `button` and `select`. All other form control elements do not inherit `text-transform` values. Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. Correct `select` style inheritance in Firefox. */
-button, select { text-transform: none; }
-
-/** 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls. 2. Correct inability to style clickable `input` types in iOS. 3. Improve usability and consistency of cursor style between image-type `input` and others. */
-button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ }
-
-/** Re-set default cursor for disabled elements. */
-button[disabled], html input[disabled] { cursor: default; }
-
-/** Remove inner padding and border in Firefox 4+. */
-button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; }
-
-/** Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet. */
-input { line-height: normal; }
-
-/** It's recommended that you don't attempt to style these elements. Firefox's implementation doesn't respect box-sizing, padding, or width.  1. Address box sizing set to `content-box` in IE 8/9/10. 2. Remove excess padding in IE 8/9/10. */
-input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ }
-
-/** Fix the cursor style for Chrome's increment/decrement buttons. For certain `font-size` values of the `input`, it causes the cursor style of the decrement button to change from `default` to `text`. */
-input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { height: auto; }
-
-/** 1. Address `appearance` set to `searchfield` in Safari and Chrome. 2. Address `box-sizing` set to `border-box` in Safari and Chrome (include `-moz` to future-proof). */
-input[type="search"] { -webkit-appearance: textfield; /* 1 */ /* 2 */ box-sizing: content-box; }
-
-/** Remove inner padding and search cancel button in Safari and Chrome on OS X. Safari (but not Chrome) clips the cancel button when the search input has padding (and `textfield` appearance). */
-input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; }
-
-/** Define consistent border, margin, and padding. */
-fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; }
-
-/** 1. Correct `color` not being inherited in IE 8/9/10/11. 2. Remove padding so people aren't caught out if they zero out fieldsets. */
-legend { border: 0; /* 1 */ padding: 0; /* 2 */ }
-
-/** Remove default vertical scrollbar in IE 8/9/10/11. */
-textarea { overflow: auto; }
-
-/** Don't inherit the `font-weight` (applied by a rule above). NOTE: the default cannot safely be changed in Chrome and Safari on OS X. */
-optgroup { font-weight: bold; }
-
-/* Tables ========================================================================== */
-/** Remove most spacing between table cells. */
-table { border-collapse: collapse; border-spacing: 0; }
-
-td, th { padding: 0; }
-
-/* LAYOUT STYLES */
-
-p { margin-top: 0; }
-
-code, pre { margin-bottom: 30px; font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace; font-size: 13px; color: #222; }
-
-code { padding: 0 3px; background-color: #f2f8fc; border: solid 1px #dbe7f3; }
-
-pre { padding: 20px; overflow: auto; text-shadow: none; background: #fff; border: solid 1px #f2f2f2; }
-
-pre code { padding: 0; color: #2879d0; background-color: #fff; border: none; }
-
-ul, ol, dl { margin-bottom: 20px; }
-
-/* COMMON STYLES */
-
-td.halign-right { text-align: right; } 
-
-td.halign-center { text-align: center; } 
-
-form { padding: 20px; background: #f2f2f2; }
-
-h2 { 
-   font-size: 2em;
-   line-height: 1.2em;
-   font-weight: 200;
-   letter-spacing: 0;
-}
-
-h3 { 
-   font-size: 1.4em;
-   line-height: 1.2em;
-   font-weight: normal;
-   letter-spacing: 0;
-}
-
-.sect1 {
-   margin-left: 4%;
-   margin-right: 4%;
-   font: 13px/20px Arial, Helvetica, sans-serif  
-}
-
-a:link {
-   text-decoration: none;
-   color: #09569d;
-}
-
-#preamble hr{
-   margin-left: 0%;
-   margin-right: 0%;
-}
-
-#preamble .sectionbody table  {
-   font-weight: 200;
-   margin-left: 4%;
-   margin-right: 4%;
-}
-
-hr {
-   margin-bottom: 12px;
-}
-
-table.tableblock.frame-all.grid-all.spread {
-   font-size: 12px;
-}
-
-code {
-   font-size:.9em;
-   border: 1px solid #eaeaea;
-   background-color: #f6f6f6;
-   border-radius: 3px;
-   padding: 1px;
-   padding-left:2px;
-   padding-right:2px;
-}
-
-pre.prettyprint.highlight {
-   border: 1px solid #eaeaea;
-   background-color: #f6f6f6;
-   border-radius: 4px;
-   padding: 8px;
-   padding-top:4px;
-   padding-bottom:4px;
-}
-
-.language-oac_no_warn {
-   font-size:.9em;
-   color:#222;
-   background-color: transparent;
-}
-
-#doc-title {
-   margin-left: 4%;
-}
-
-#top-nav {
-   margin-left: 4%;
-   font-size: 12px;
-}
-
-#bottom-nav {
-   margin-left: 4%;
-   font-size: 12px;
-}
-
-.vector-font {
-   color:grey; 
-   font-size: 20px;
-}
-
-#copyright {
-   padding-top: 10px;
-   padding-bottom: 4px;
-   display: table;
-   margin:0 auto;
-   color: grey;
-   font-size: 12px;
-}
-
-.beta {color: #FF0000}
-
-/* GENERAL ELEMENT TYPE STYLES */
-
-/* #Media Queries
-================================================== */
-/* Smaller than standard 960 (devices and browsers) */
-/* Tablet Portrait size to standard 960 (devices and browsers) */
-@media only screen and (min-width: 768px) and (max-width: 959px) { .inner { width: 740px; }
-  header h1, header h2 { width: 340px; }
-  header h1 { font-size: 60px; }
-  header h2 { font-size: 30px; }
-}
-/* All Mobile Sizes (devices and browser) */
-@media only screen and (max-width: 767px) { .inner { width: 93%; }
-  header { padding: 20px 0; }
-  header .inner { position: relative; }
-  header h1, header h2 { width: 100%; }
-  header h1 { font-size: 48px; }
-  header h2 { font-size: 24px; }
-  header a.button { position: relative; display: inline-block; width: auto; height: auto; padding: 5px 10px; margin-top: 15px; font-size: 13px; line-height: 1; color: #2879d0; text-align: center; background-color: #9ddcff; background-image: none; border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; }
-  header a.button small { display: inline; font-size: 13px; }
-}
-/* Mobile Landscape Size to Tablet Portrait (devices and browsers) */
-/* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */
-
-header h1 { padding-top: 14px; font-size: 2em; font-weight: 200; line-height: 1.4; color: #FFFFFF; letter-spacing: 0px; border-bottom: 0px; }
-
-header h2 { font-size: 1.2em; margin-top: 0; margin-bottom: 0; font-weight: 200; line-height: .8; color: #ec7D11; letter-spacing: 0; }
-
-/*
-header a.button { background: transparent url(../images/logo.png) 0 0 no-repeat; padding-left: 32px; }
-*/
-
-header a:hover { text-decoration: none; }
-
-/* Admonition (Note) block */
-.admonitionblock > table {
-  border: 0;
-  background: none;
-  width: 100%;
-  table-layout: auto;
-  margin-bottom: 10.5px;
-}
-.admonitionblock > table td.icon {
-  text-align: center;
-  width: 60px;
-}
-.admonitionblock > table td.icon img {
-  max-width: none;
-}
-.admonitionblock > table td.icon .title {
-  text-transform: uppercase;
-}
-.admonitionblock > table td.content {
-  padding-left: 1em;
-  padding-right: 1em;
-  border-left: 3px solid #ddd;
-}
-.admonitionblock > table td.content > :last-child > :last-child {
-  margin-bottom: 0;
-}
-.admonitionblock td.icon [class^="fa icon-"]:before {
-  font-size: 2.5em;
-  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
-  cursor: default;
-}
-.admonitionblock td.icon .icon-note:before {
-  content: "\f05a";
-  color: #5bc0de;
-}
diff --git a/docs/quick-start-guide/src/main/jbake/content/basic-features.adoc b/docs/quick-start-guide/src/main/jbake/content/basic-features.adoc
deleted file mode 100644
index 4773bd2..0000000
--- a/docs/quick-start-guide/src/main/jbake/content/basic-features.adoc
+++ /dev/null
@@ -1,841 +0,0 @@
-type=page
-status=published
-title=Quick Start for Basic Features
-prev=preface.html
-~~~~~~
-Quick Start for Basic Features
-==============================
-
-[[GSQSG00003]][[aboaa]]
-
-
-[[quick-start-for-basic-features]]
-1 Quick Start for Basic Features
---------------------------------
-
-Eclipse GlassFish Server provides a server for the
-development and deployment of Java Platform, Enterprise Edition (Java EE
-platform) applications and web technologies based on Java technology.
-GlassFish Server 5.1 provides the following:
-
-* A lightweight and extensible core based on OSGi Alliance standards
-* A web container
-* An easy-to-use Administration Console for configuration and management
-* Update Tool connectivity for updates and add-on components
-* Support for high availability clustering and load balancing
-
-The following topics are addressed here:
-
-* link:#ghgpe[About This Quick Start Guide]
-* link:#ghpfg[Default Paths and File Names]
-* link:#gixue[Default Administration Values]
-* link:#gglog[Starting and Stopping the Default Domain]
-* link:#gglmh[Starting and Stopping the Database Server]
-* link:#ggllq[Starting the Administration Console]
-* link:#geyvr[Deploying and Undeploying Applications]
-* link:#gktqx[High Availability Clustering and Load Balancing]
-* link:#ggkzh[For More Information]
-
-[[ghgpe]][[GSQSG00030]][[about-this-quick-start-guide]]
-
-About This Quick Start Guide
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Eclipse GlassFish Server 5.1 Quick Start Guide demonstrates
-key features of the GlassFish Server product and enables you to quickly
-learn the basics. Step-by-step procedures introduce you to product
-features and enable you to use them immediately.
-
-This guide assumes that you have already obtained and installed the
-GlassFish Server 5.1 software. For more information about installing
-GlassFish Server 5.1, see the
-https://javaee.github.io/glassfish/documentation[GlassFish Server Open
-Source Edition Installation Guide].
-
-Instructions and examples in this guide that apply to all supported
-operating systems use the forward slash character (`/`) as path
-separators in all file names and commands. Ensure that you use the
-correct character for the system on which GlassFish Server is installed.
-For example:
-
-* UNIX, Linux, or Mac OS X systems: as-install`/bin/asadmin`
-* Windows systems: as-install`\bin\asadmin`
-
-This guide provides basic information only. For comprehensive
-information about GlassFish Server and other entities mentioned in this
-guide, see link:#ggkzh[For More Information].
-
-To review additional details about this release before you begin using
-the software, see the link:../release-notes/toc.html#GSRLN[GlassFish Server Open Source Edition
-Release Notes]. The Release Notes provide important information about
-the GlassFish Server 5.1 release, including details about new features,
-information about known issues and possible workarounds, and tips for
-installing and working with GlassFish Server 5.1 software.
-
-[[ghpfg]][[GSQSG00031]][[default-paths-and-file-names]]
-
-Default Paths and File Names
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following table describes the default paths and file names that are
-used in this book.
-
-[[sthref3]][[sthref4]]
-
-Table 1-1 Default Paths and File Names
-
-[width="100%",cols="14%,35%,51%",options="header",]
-|=======================================================================
-|Placeholder |Description |Default Value
-a|
-as-install
-
-
- |Represents the base installation directory for GlassFish Server. a|
-Installations on the Oracle Solaris operating system, Linux operating
-system, and Mac OS operating system:
-
-user's-home-directory`/glassfish6/glassfish`
-
-Installations on the Windows operating system:
-
-SystemDrive`:\glassfish6\glassfish`
-
-a|
-as-install-parent
-
-
- |Represents the parent of the base installation directory for GlassFish
-Server. a|
-Installations on the Oracle Solaris operating system, Linux operating
-system, and Mac operating system:
-
-user's-home-directory`/glassfish6`
-
-Installations on the Windows operating system:
-
-SystemDrive`:\glassfish6`
-
-a|
-domain-root-dir
-
-
- |Represents the directory in which a domain is created by default.
-|as-install`/domains/`
-
-a|
-domain-dir
-
-
- |Represents the directory in which a domain's configuration is stored.
-|domain-root-dir`/`domain-name
-
-a|
-instance-dir
-
-
- |Represents the directory for a server instance.
-|domain-dir`/`instance-name
-|=======================================================================
-
-
-[[gixue]][[GSQSG00032]][[default-administration-values]]
-
-Default Administration Values
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following table lists default administration values for GlassFish
-Server. See link:#ghpfg[Default Paths and File Names] for more
-information about the as-install and domain-dir placeholders.
-
-[[sthref5]][[gixxy]]
-
-Table 1-2 Default Administration Values
-
-[width="100%",cols="50%,50%",options="header",]
-|=======================================================================
-|Item |Default Value or Location
-|Domain name |`domain1`
-
-|Master password |`changeit`
-
-|https://javaee.github.io/glassfish/doc/5.0/reference-manual.pdf[`asadmin`(1M)]
-command-line utility |as-install`/bin`
-
-|Configuration files |domain-dir`/config`
-
-|Log files |domain-dir`/logs`
-
-|Administration server port |`4848`
-
-|HTTP port |`8080`
-
-|HTTPS port |`8181`
-
-|Pure JMX clients port |`8686`
-
-|Message Queue port |`7676`
-
-|IIOP port |`3700`
-
-|IIOP/SSL port |`3820`
-
-|IIOP/SSL port with mutual authentication |`3920`
-|=======================================================================
-
-
-[[gglog]][[GSQSG00033]][[starting-and-stopping-the-default-domain]]
-
-Starting and Stopping the Default Domain
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-When you install GlassFish Server, a default domain named `domain1` is
-created. The following procedures describe how to start and stop
-`domain1` when it is the only domain. For information about starting and
-stopping a domain when there are multiple domains, see
-"link:../administration-guide/domains.html#GSADG00006[Administering Domains]" in GlassFish Server Open
-Source Edition Administration Guide.
-
-[[ggmpd]][[GSQSG00005]][[to-start-the-default-domain]]
-
-To Start the Default Domain
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-[[sthref6]]
-
-Before You Begin
-
-GlassFish Server software must be installed before you start the domain.
-
-Run the `asadmin start-domain` command without an operand:
-
-[source,oac_no_warn]
-----
-as-install/bin/asadmin start-domain
-----
-
-The command starts the default domain, `domain1`.
-
-[[ggmsx]][[GSQSG00006]][[to-stop-the-default-domain]]
-
-To Stop the Default Domain
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Run the `asadmin stop-domain` command without an operand:
-
-[source,oac_no_warn]
-----
-as-install/bin/asadmin stop-domain
-----
-
-The command stops the default domain, `domain1`.
-
-
-[TIP]
-=======================================================================
-
-To determine whether a domain is running, use the `asadmin list-domains`
-command:
-
-[source,oac_no_warn]
-----
-as-install/bin/asadmin list-domains
-----
-
-=======================================================================
-
-
-[[gglmh]][[GSQSG00034]][[starting-and-stopping-the-database-server]]
-
-Starting and Stopping the Database Server
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-A database server is not started by default when you start the GlassFish
-Server domain. If your applications require a database back end, you
-must start and stop the database server manually.
-
-The following procedures describe how to start and stop the Apache Derby
-server that is bundled with GlassFish Server. For information about
-starting and stopping other database servers, see the documentation for
-your specific product.
-
-For the list of database products supported in this release, see the
-https://javaee.github.io/glassfish/documentation[GlassFish Server Open
-Source Edition Release Notes].
-
-For more information about database connectivity, see
-"https://javaee.github.io/glassfish/documentation[Administering Database
-Connectivity]" in Eclipse GlassFish Server Administration
-Guide.
-
-[[ggncr]][[GSQSG00007]][[to-start-the-apache-derby-server]]
-
-To Start the Apache Derby Server
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-[[sthref7]]
-
-Before You Begin
-
-At least one GlassFish Server domain must be started before you start
-the database server.
-
-Run the `asadmin start-database` command.
-
-The general form for the command is as follows:
-
-[source,oac_no_warn]
-----
-as-install/bin/asadmin start-database --dbhome directory-path
-----
-
-For example, to start the Apache Derby server from its default location:
-
-[source,oac_no_warn]
-----
-as-install/bin/asadmin start-database --dbhome as-install-parent/javadb
-----
-
-[[ggnez]][[GSQSG00008]][[to-stop-the-apache-derby-server]]
-
-To Stop the Apache Derby Server
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Run the `asadmin stop-database` command:
-
-[source,oac_no_warn]
-----
-as-install/bin/asadmin stop-database
-----
-
-[[ggllq]][[GSQSG00035]][[starting-the-administration-console]]
-
-Starting the Administration Console
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The GlassFish Server Administration Console provides a browser interface
-for configuring, administering, and monitoring GlassFish Server.
-
-[[ggnbp]][[GSQSG00009]][[to-start-the-administration-console]]
-
-To Start the Administration Console
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-[[sthref8]]
-
-Before You Begin
-
-At least one GlassFish Server domain must be started.
-
-1.  Type the URL in your browser. +
-The default URL for the Administration Console on the local host is as
-follows: +
-[source,oac_no_warn]
-----
-http://localhost:4848
-----
-2.  If prompted, log in to the Administration Console. +
-You will be prompted to log in if you chose to require an administration
-password at the time GlassFish Server was installed.
-
-[[sthref9]]
-
-See Also
-
-For more information, see the Administration Console online help.
-
-[[geyvr]][[GSQSG00036]][[deploying-and-undeploying-applications]]
-
-Deploying and Undeploying Applications
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The process of configuring and enabling applications to run within the
-GlassFish Server framework is referred to as deployment.
-
-This section explains how to deploy, list, and undeploy applications.
-The procedures in this section use the `hello.war` sample application.
-The following topics are addressed here:
-
-* link:#ghgis[To Obtain the Sample Application]
-* link:#gkpao[Deploying and Undeploying the Sample Application From the
-Command Line]
-* link:#gkpau[Deploying and Undeploying Applications by Using the
-Administration Console]
-* link:#gkpaa[Deploying and Undeploying the Sample Application
-Automatically]
-
-[[ghgis]][[GSQSG00010]][[to-obtain-the-sample-application]]
-
-To Obtain the Sample Application
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-1.  Download a copy of the `hello.war` sample application from
-`https://javaee.github.io/glassfish/downloads/quickstart/hello.war`.
-2.  Save the `hello.war` file in the directory of your choice. +
-This directory is referred to as sample-dir.
-
-[[gkpao]][[GSQSG00044]][[deploying-and-undeploying-the-sample-application-from-the-command-line]]
-
-Deploying and Undeploying the Sample Application From the Command Line
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-GlassFish Server provides `asadmin` subcommands for performing the
-following deployment-related tasks:
-
-* link:#ggndq[To Deploy the Sample Application From the Command Line]
-* link:#ggnco[To List Deployed Applications From the Command Line]
-* link:#ggnbm[To Undeploy the Sample Application From the Command Line]
-
-[[ggndq]][[GSQSG00011]][[to-deploy-the-sample-application-from-the-command-line]]
-
-To Deploy the Sample Application From the Command Line
-++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-[[sthref10]]
-
-Before You Begin
-
-The sample application must be available before you start this task. To
-download the sample, see link:#ghgis[To Obtain the Sample Application].
-At least one GlassFish Server domain must be started before you deploy
-the sample application.
-
-1.  Run the `asadmin deploy` command. +
-The general form for the command is as follows: +
-[source,oac_no_warn]
-----
-as-install/bin/asadmin deploy war-name
-----
-To deploy the `hello.war` sample, the command is as follows: +
-[source,oac_no_warn]
-----
-as-install/bin/asadmin deploy sample-dir/hello.war
-----
-2.  Access the `hello` application by typing the following URL in your
-browser: +
-[source,oac_no_warn]
-----
-http://localhost:8080/hello
-----
-The application's start page is displayed, and you are prompted to type
-your name. +
-[source,oac_no_warn]
-----
-Hi, my name is Duke. What's yours?
-----
-3.  Type your name and click Submit. +
-The application displays a customized response, giving you a personal
-`Hello`.
-
-[[sthref11]]
-
-See Also
-
-For more information about the `deploy` subcommand, see
-link:../reference-manual/deploy.html#GSRFM00114[`deploy`(1)].
-
-For more information about deploying applications from the command line,
-see the link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition Application
-Deployment Guide].
-
-[[ggnco]][[GSQSG00012]][[to-list-deployed-applications-from-the-command-line]]
-
-To List Deployed Applications From the Command Line
-+++++++++++++++++++++++++++++++++++++++++++++++++++
-
-Run the `asadmin list-applications` command:
-
-[source,oac_no_warn]
-----
-as-install/bin/asadmin list-applications
-----
-
-[[ggnbm]][[GSQSG00013]][[to-undeploy-the-sample-application-from-the-command-line]]
-
-To Undeploy the Sample Application From the Command Line
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-Run the `asadmin undeploy` command.
-
-The general form for the command is as follows:
-
-[source,oac_no_warn]
-----
-as-install/bin/asadmin undeploy war-name
-----
-
-For war-name, use the literal `hello`, not the full `hello.war` name.
-
-For the `hello.war` example, the command is as follows:
-
-[source,oac_no_warn]
-----
-as-install/bin/asadmin undeploy hello
-----
-
-[[sthref12]]
-
-See Also
-
-For more information about the `undeploy` subcommand, see
-link:../reference-manual/undeploy.html#GSRFM00244[`undeploy`(1)].
-
-[[gkpau]][[GSQSG00045]][[deploying-and-undeploying-applications-by-using-the-administration-console]]
-
-Deploying and Undeploying Applications by Using the Administration
-Console
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The graphical Administration Console of GlassFish Server enables you to
-perform the following deployment-related tasks:
-
-* link:#ggnbn[To Deploy the Sample Application by Using the
-Administration Console]
-* link:#ggncd[To View Deployed Applications in the Administration
-Console]
-* link:#ggneh[To Undeploy the Sample Application by Using the
-Administration Console]
-
-[[ggnbn]][[GSQSG00014]][[to-deploy-the-sample-application-by-using-the-administration-console]]
-
-To Deploy the Sample Application by Using the Administration Console
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-[[sthref13]]
-
-Before You Begin
-
-The sample application must be available before you start this task. To
-download the sample, see link:#ghgis[To Obtain the Sample Application].
-At least one GlassFish Server domain must be started before you deploy
-the sample application.
-
-1.  Launch the Administration Console by typing the following URL in
-your browser: +
-[source,oac_no_warn]
-----
-http://localhost:4848
-----
-2.  Click the Applications node in the tree on the left. +
-The Applications page is displayed.
-3.  Click the Deploy button. +
-The Deploy Applications or Modules page is displayed.
-4.  Select Packaged File to be Uploaded to the Server, and click Browse.
-5.  Navigate to the location in which you saved the `hello.war` sample,
-select the file, and click Open. +
-You are returned to the Deploy Applications or Modules page.
-6.  Specify a description in the Description field, for example: +
-`hello`
-7.  Accept the other default settings, and click OK. +
-You are returned to the Applications page.
-8.  Select the check box next to the `hello` application and click the
-Launch link to run the application. +
-The default URL for the application is as follows: +
-[source,oac_no_warn]
-----
-http://localhost:8080/hello/
-----
-
-[[sthref14]]
-
-See Also
-
-For more information, see the Administration Console online help.
-
-[[ggncd]][[GSQSG00015]][[to-view-deployed-applications-in-the-administration-console]]
-
-To View Deployed Applications in the Administration Console
-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-1.  Launch the Administration Console by typing the following URL in
-your browser: +
-[source,oac_no_warn]
-----
-http://localhost:4848
-----
-2.  Click the Applications node in the tree on the left. +
-Expand the node to list deployed applications. Deployed applications are
-also listed in the table on the Applications page.
-
-[[ggneh]][[GSQSG00016]][[to-undeploy-the-sample-application-by-using-the-administration-console]]
-
-To Undeploy the Sample Application by Using the Administration Console
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-1.  Launch the Administration Console by typing the following URL in
-your browser: +
-[source,oac_no_warn]
-----
-http://localhost:4848
-----
-2.  Click the Applications node in the tree on the left. +
-The Applications page is displayed.
-3.  Select the check box next to the `hello` sample application.
-4.  Remove or disable the application.
-* To remove the application, click the Undeploy button.
-* To disable the application, click the Disable button.
-
-[[sthref15]]
-
-See Also
-
-For more information, see the Administration Console online help.
-
-[[gkpaa]][[GSQSG00046]][[deploying-and-undeploying-the-sample-application-automatically]]
-
-Deploying and Undeploying the Sample Application Automatically
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-GlassFish Server enables you to performing the following
-deployment-related tasks automatically:
-
-* link:#geyvj[To Deploy the Sample Application Automatically]
-* link:#ggncw[To Undeploy the Sample Application Automatically]
-
-[[geyvj]][[GSQSG00017]][[to-deploy-the-sample-application-automatically]]
-
-To Deploy the Sample Application Automatically
-++++++++++++++++++++++++++++++++++++++++++++++
-
-You can deploy applications automatically by placing them in the
-domain-dir`/autodeploy` directory, where domain-dir is the directory of
-the domain for which you want to configure automatic deployment. For
-this example, use the default domain, `domain1`, in the default
-domain-root-dir, which is as-install`/domains`:
-
-[source,oac_no_warn]
-----
-as-install/domains/domain1/autodeploy
-----
-
-[[sthref16]]
-
-Before You Begin
-
-The sample application must be available before you start this task. To
-download the sample, see link:#ghgis[To Obtain the Sample Application].
-
-Copy the application WAR file to the domain-dir`/autodeploy` directory.
-
-* On UNIX, Linux, and Mac OS X systems, type this command: +
-[source,oac_no_warn]
-----
-cp sample-dir/hello.war as-install/domains/domain-dir/autodeploy
-----
-* On Windows systems, type this command: +
-[source,oac_no_warn]
-----
-copy sample-dir\hello.war as-install\domains\domain-dir\autodeploy
-----
-
-GlassFish Server automatically discovers and deploys the application.
-The default URL for the application is as follows:
-
-[source,oac_no_warn]
-----
-http://localhost:8080/hello/
-----
-
-[[ggncw]][[GSQSG00018]][[to-undeploy-the-sample-application-automatically]]
-
-To Undeploy the Sample Application Automatically
-++++++++++++++++++++++++++++++++++++++++++++++++
-
-1.  Change to the domain's `autodeploy` directory. +
-[source,oac_no_warn]
-----
-cd as-install\domains\domain-dir\autodeploy
-----
-2.  Delete the sample application's WAR file to undeploy and remove the
-application.
-* On UNIX, Linux, and Mac OS X systems, type this command: +
-[source,oac_no_warn]
-----
-rm hello.war
-----
-* On Windows systems, type this command: +
-[source,oac_no_warn]
-----
-del hello.war
-----
-
-[[gktqx]][[GSQSG00037]][[high-availability-clustering-and-load-balancing]]
-
-High Availability Clustering and Load Balancing
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-GlassFish Server enables multiple GlassFish Server instances to be
-clustered to provide high availability through failure protection,
-scalability, and load balancing. The subsections that follow provide an
-overview of high availability clustering and load balancing for
-GlassFish Server.
-
-[[gktob]][[GSQSG00047]][[clusters-of-glassfish-server-instances]]
-
-Clusters of GlassFish Server Instances
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A cluster is a collection of GlassFish Server instances that work
-together as one logical entity. A cluster provides a runtime environment
-for one or more Java Platform, Enterprise Edition (Java EE)
-applications. A cluster provides high availability through failure
-protection, scalability, and load balancing.
-
-A GlassFish Server instance is a single Virtual Machine for the Java
-platform (Java Virtual Machine or JVM machine) on a single node in which
-GlassFish Server is running. A node defines the host where the GlassFish
-Server instance resides. The JVM machine must be compatible with the
-Java Platform, Enterprise Edition (Java EE).
-
-GlassFish Server instances form the basis of an application deployment.
-An instance is a building block in the clustering, load balancing, and
-session persistence features of GlassFish Server. Each instance belongs
-to a single domain and has its own directory structure, configuration,
-and deployed applications. Every instance contains a reference to a node
-that defines the host where the instance resides.
-
-For more information, see the following documentation:
-
-* "link:../ha-administration-guide/nodes.html#GSHAG00004[Administering GlassFish Server Nodes]" in GlassFish
-Server Open Source Edition High Availability Administration Guide
-* "link:../ha-administration-guide/clusters.html#GSHAG00005[Administering GlassFish Server Clusters]" in
-Eclipse GlassFish Server High Availability Administration
-Guide
-* "link:../ha-administration-guide/instances.html#GSHAG00006[Administering GlassFish Server Instances]" in
-Eclipse GlassFish Server High Availability Administration
-Guide
-
-[[gktpt]][[GSQSG00048]][[session-persistence-and-failover]]
-
-Session Persistence and Failover
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Storing session state data enables the session state to be recovered
-after the failover of an instance in a cluster. Recovering the session
-state enables the session to continue without loss of information.
-GlassFish Server supports in-memory session replication on other servers
-in the cluster for maintaining HTTP session and stateful session bean
-data.
-
-For more information, see "link:../ha-administration-guide/session-persistence-and-failover.html#GSHAG00011[Configuring High
-Availability Session Persistence and Failover]" in GlassFish Server Open
-Source Edition High Availability Administration Guide.
-
-[[gksbz]][[GSQSG00049]][[load-balancing-for-clustered-configurations]]
-
-Load Balancing for Clustered Configurations
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-GlassFish Server supports web server and hardware-based load balancing
-for clustered configurations. A load balancer is deployed with a
-cluster, and provides the following features:
-
-* Allows an application or service to be scaled horizontally across
-multiple physical (or logical) hosts yet still present the user with a
-single URL
-* Insulates the user from host failures or server crashes when used with
-session persistence
-* Enhances security by hiding the internal network from the user
-
-Eclipse GlassFish Server is compatible with the Apache HTTP
-server `mod_jk` module for load balancing.
-
-GlassFish Server load balancing configurations can vary widely depending
-on the needs of your enterprise. For complete information about
-configuring load balancing in GlassFish Server, see the following
-documentation:
-
-* "link:../ha-administration-guide/http-load-balancing.html#GSHAG00009[Configuring HTTP Load Balancing]" in GlassFish
-Server Open Source Edition High Availability Administration Guide
-* "link:../ha-administration-guide/rmi-iiop.html#GSHAG00013[RMI-IIOP Load Balancing and Failover]" in GlassFish
-Server Open Source Edition High Availability Administration Guide
-
-[[ggkzh]][[GSQSG00040]][[for-more-information]]
-
-For More Information
-~~~~~~~~~~~~~~~~~~~~
-
-Additional resources are available to help you learn more about
-GlassFish Server 5.1 and related technologies.
-
-The following resources are described here:
-
-* link:#ghhir[Product Documentation]
-* link:#ghhis[GlassFish Communities]
-* link:#giyjo[Tutorials]
-* link:#gintm[Java EE 8 Samples]
-
-[[ghhir]][[GSQSG00050]][[product-documentation]]
-
-Product Documentation
-^^^^^^^^^^^^^^^^^^^^^
-
-Comprehensive product documentation is available and includes the
-following.
-
-* link:../release-notes/toc.html#GSRLN[GlassFish Server Open Source Edition Release Notes]:
-Latest details about new features, known issues, and tips for installing
-and working with GlassFish Server software.
-* http://docs.oracle.com/cd/E26576_01/index.html[Oracle GlassFish Server
-Documentation Library]
-(`http://docs.oracle.com/cd/E26576_01/index.html`): Collection of guides
-that document Oracle GlassFish Server features and functions.
-* https://javaee.github.io/glassfish/documentation[GlassFish Server Open
-Source Edition Product Documentation page]
-(`https://javaee.github.io/glassfish/documentation`): Collection of
-guides that document Eclipse GlassFish Server features and
-functions.
-
-[[ghhis]][[GSQSG00051]][[glassfish-communities]]
-
-GlassFish Communities
-^^^^^^^^^^^^^^^^^^^^^
-
-The following resources will help you connect with other users, learn
-more about GlassFish Server, and get help if needed.
-
-* https://javaee.groups.io/g/javaee[GlassFish Forum]
-(`https://javaee.groups.io/g/javaee`): +
-Public online discussion forum that provides community support and tips
-for working with GlassFish Server.
-* https://javaee.github.io/glassfish/documentation[GlassFish
-Documentation Project]
-(`https://javaee.github.io/glassfish/documentation`): Documentation
-community site that provides details about GlassFish Server
-documentation and how you can participate.
-
-[[giyjo]][[GSQSG00052]][[tutorials]]
-
-Tutorials
-^^^^^^^^^
-
-The following tutorials provide working examples and detailed
-instructions for creating enterprise applications for the Java EE 8
-platform.
-
-* http://docs.oracle.com/javaee/7/firstcup/doc/[Your First Cup: An
-Introduction to the Java EE Platform]
-(`https://javaee.github.io/firstcup/`). For beginning Java EE
-programmers, this short tutorial explains the entire process for
-developing a simple enterprise application. The sample application is a
-web application that consists of a component that is based on the
-Enterprise JavaBeans specification, a JAX-RS web service, and a
-JavaServer Faces component for the web front end.
-* http://docs.oracle.com/javaee/7/tutorial/doc/[The Java EE 8 Tutorial]
-(`https://javaee.github.io/tutorial/`). This comprehensive tutorial
-explains how to use Java EE 8 platform technologies and APIs to develop
-Java EE applications.
-
-[[gintm]][[GSQSG00053]][[java-ee-8-samples]]
-
-Java EE 8 Samples
-^^^^^^^^^^^^^^^^^
-
-The sample applications demonstrate Java EE technologies. The samples
-are available as part of the Java EE SDK distributions. The SDK
-distributions are available from the
-http://www.oracle.com/technetwork/java/javaee/downloads/index.html[Java
-EE SDK downloads page]
-(`http://www.oracle.com/technetwork/java/javaee/downloads/index.html`).
-
-
diff --git a/docs/quick-start-guide/src/main/jbake/content/preface.adoc b/docs/quick-start-guide/src/main/jbake/content/preface.adoc
deleted file mode 100644
index a5d6502..0000000
--- a/docs/quick-start-guide/src/main/jbake/content/preface.adoc
+++ /dev/null
@@ -1,225 +0,0 @@
-type=page
-status=published
-title=Preface
-next=basic-features.html
-prev=title.html
-~~~~~~
-Preface
-=======
-
-[[gkamj]][[preface]]
-
-Preface
--------
-
-[NOTE]
-========================================================================
-
-This documentation is part of the Java Enterprise Edition contribution 
-to the Eclipse Foundation and is not intended for use in relation to 
-Java Enterprise Edition or Orace GlassFish. The documentation is in the 
-process of being revised to reflect the new Jakarta EE branding. 
-Additional changes will be made as requirements and procedures evolve 
-for Jakarta EE. Where applicable, references to Java EE or Java 
-Enterprise Edition should be considered references to Jakarta EE. 
-
-Please see the Title page for additional license information.
-========================================================================
-
-This book demonstrates key features of the GlassFish Server product and
-enables you to quickly learn the basics. Step-by-step procedures
-introduce you to product features and enable you to use them
-immediately.
-
-This preface contains information about and conventions for the entire
-GlassFish Server Open Source Edition (GlassFish Server) documentation
-set.
-
-GlassFish Server 5.0 is developed through the GlassFish project
-open-source community at `https://javaee.github.io/glassfish/`. The
-GlassFish project provides a structured process for developing the
-GlassFish Server platform that makes the new features of the Java EE
-platform available faster, while maintaining the most important feature
-of Java EE: compatibility. It enables Java developers to access the
-GlassFish Server source code and to contribute to the development of the
-GlassFish Server. The GlassFish project is designed to encourage
-communication between Oracle engineers and the community.
-
-The following topics are addressed here:
-
-* link:#ghpbz[GlassFish Server Documentation Set]
-* link:#fwbkx[Typographic Conventions]
-* link:#fquvc[Symbol Conventions]
-
-[[ghpbz]][[glassfish-server-documentation-set]]
-
-GlassFish Server Documentation Set
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The GlassFish Server documentation set describes deployment planning and
-system installation. For an introduction to GlassFish Server, refer to
-the books in the order in which they are listed in the following table.
-
-[width="100%",cols="30%,70%",options="header",]
-|=======================================================================
-|Book Title |Description
-|link:../release-notes/toc.html#GSRLN[Release Notes] |Provides late-breaking information about
-the software and the documentation and includes a comprehensive,
-table-based summary of the supported hardware, operating system, Java
-Development Kit (JDK), and database drivers.
-
-|link:../quick-start-guide/toc.html#GSQSG[Quick Start Guide] |Explains how to get started with the
-GlassFish Server product.
-
-|link:../installation-guide/toc.html#GSING[Installation Guide] |Explains how to install the software
-and its components.
-
-|link:../upgrade-guide/toc.html#GSUPG[Upgrade Guide] |Explains how to upgrade to the latest
-version of GlassFish Server. This guide also describes differences
-between adjacent product releases and configuration options that can
-result in incompatibility with the product specifications.
-
-|link:../deployment-planning-guide/toc.html#GSPLG[Deployment Planning Guide] |Explains how to build a
-production deployment of GlassFish Server that meets the requirements of
-your system and enterprise.
-
-|link:../administration-guide/toc.html#GSADG[Administration Guide] |Explains how to configure, monitor,
-and manage GlassFish Server subsystems and components from the command
-line by using the link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`] utility. Instructions for
-performing these tasks from the Administration Console are provided in
-the Administration Console online help.
-
-|link:../security-guide/toc.html#GSSCG[Security Guide] |Provides instructions for configuring and
-administering GlassFish Server security.
-
-|link:../application-deployment-guide/toc.html#GSDPG[Application Deployment Guide] |Explains how to assemble and
-deploy applications to the GlassFish Server and provides information
-about deployment descriptors.
-
-|link:../application-development-guide/toc.html#GSDVG[Application Development Guide] |Explains how to create and
-implement Java Platform, Enterprise Edition (Java EE platform)
-applications that are intended to run on the GlassFish Server. These
-applications follow the open Java standards model for Java EE components
-and application programmer interfaces (APIs). This guide provides
-information about developer tools, security, and debugging.
-
-| |
-
-|link:../embedded-server-guide/toc.html#GSESG[Embedded Server Guide] |Explains how to run applications in
-embedded GlassFish Server and to develop applications in which GlassFish
-Server is embedded.
-
-|link:../ha-administration-guide/toc.html#GSHAG[High Availability Administration Guide] |Explains how to
-configure GlassFish Server to provide higher availability and
-scalability through failover and load balancing.
-
-|link:../performance-tuning-guide/toc.html#GSPTG[Performance Tuning Guide] |Explains how to optimize the
-performance of GlassFish Server.
-
-|link:../troubleshooting-guide/toc.html#GSTSG[Troubleshooting Guide] |Describes common problems that you
-might encounter when using GlassFish Server and explains how to solve
-them.
-
-|link:../error-messages-reference/toc.html#GSEMR[Error Message Reference] |Describes error messages that you
-might encounter when using GlassFish Server.
-
-|link:../reference-manual/toc.html#GSRFM[Reference Manual] |Provides reference information in man
-page format for GlassFish Server administration commands, utility
-commands, and related concepts.
-
-|link:../../openmq/mq-release-notes/toc.html#GMRLN[Message Queue Release Notes] |Describes new features,
-compatibility issues, and existing bugs for Open Message Queue.
-
-|link:../../openmq/mq-tech-over/toc.html#GMTOV[Message Queue Technical Overview] |Provides an introduction
-to the technology, concepts, architecture, capabilities, and features of
-the Message Queue messaging service.
-
-|link:../../openmq/mq-admin-guide/toc.html#GMADG[Message Queue Administration Guide] |Explains how to set up
-and manage a Message Queue messaging system.
-
-|link:../../openmq/mq-dev-guide-jmx/toc.html#GMJMG[Message Queue Developer's Guide for JMX Clients] |Describes
-the application programming interface in Message Queue for
-programmatically configuring and monitoring Message Queue resources in
-conformance with the Java Management Extensions (JMX).
-
-|link:../../openmq/mq-dev-guide-java/toc.html#GMJVG[Message Queue Developer's Guide for Java Clients] |Provides
-information about concepts and procedures for developing Java messaging
-applications (Java clients) that work with GlassFish Server.
-
-|link:../../openmq/mq-dev-guide-c/toc.html#GMCCG[Message Queue Developer's Guide for C Clients] |Provides
-programming and reference information for developers working with
-Message Queue who want to use the C language binding to the Message
-Queue messaging service to send, receive, and process Message Queue
-messages.
-|=======================================================================
-
-
-[[fwbkx]][[typographic-conventions]]
-
-Typographic Conventions
-~~~~~~~~~~~~~~~~~~~~~~~
-
-The following table describes the typographic changes that are used in
-this book.
-
-[width="100%",cols="14%,37%,49%",options="header",]
-|=======================================================================
-|Typeface |Meaning |Example
-|`AaBbCc123` |The names of commands, files, and directories, and
-onscreen computer output a|
-Edit your `.login` file.
-
-Use `ls` `a` to list all files.
-
-`machine_name% you have mail.`
-
-|`AaBbCc123` |What you type, contrasted with onscreen computer output a|
-`machine_name%` `su`
-
-`Password:`
-
-|AaBbCc123 |A placeholder to be replaced with a real name or value |The
-command to remove a file is `rm` filename.
-
-|AaBbCc123 |Book titles, new terms, and terms to be emphasized (note
-that some emphasized items appear bold online) a|
-Read Chapter 6 in the User's Guide.
-
-A cache is a copy that is stored locally.
-
-Do not save the file.
-
-|=======================================================================
-
-
-[[fquvc]][[symbol-conventions]]
-
-Symbol Conventions
-~~~~~~~~~~~~~~~~~~
-
-The following table explains symbols that might be used in this book.
-
-[width="100%",cols="10%,26%,28%,36%",options="header",]
-|=======================================================================
-|Symbol |Description |Example |Meaning
-|`[ ]` |Contains optional arguments and command options. |`ls [-l]` |The
-`-l` option is not required.
-
-|`{ \| }` |Contains a set of choices for a required command option.
-|`-d {y\|n}` |The `-d` option requires that you use either the `y`
-argument or the `n` argument.
-
-|`${ }` |Indicates a variable reference. |`${com.sun.javaRoot}`
-|References the value of the `com.sun.javaRoot` variable.
-
-|- |Joins simultaneous multiple keystrokes. |Control-A |Press the
-Control key while you press the A key.
-
-|+ + |Joins consecutive multiple keystrokes. |Ctrl+A+N |Press the
-Control key, release it, and then press the subsequent keys.
-
-|> |Indicates menu item selection in a graphical user interface. |File >
-New > Templates |From the File menu, choose New. From the New submenu,
-choose Templates.
-|=======================================================================
-
diff --git a/docs/quick-start-guide/src/main/jbake/content/title.adoc b/docs/quick-start-guide/src/main/jbake/content/title.adoc
deleted file mode 100644
index 95dc697..0000000
--- a/docs/quick-start-guide/src/main/jbake/content/title.adoc
+++ /dev/null
@@ -1,48 +0,0 @@
-type=page
-status=published
-title=Eclipse GlassFish Server Quick Start Guide, Release 5.1
-next=preface.html
-prev=toc.html
-~~~~~~
-Eclipse GlassFish Server Quick Start Guide, Release 5.1
-=======================================================
-
-[[eclipse-glassfish-server]]
-Eclipse GlassFish Server
-------------------------
-
-Quick Start Guide
-
-Release 5.1
-
-Contributed 2018, 2019
-
-This book demonstrates key features of the GlassFish Server product and
-enables you to quickly learn the basics. Step-by-step procedures
-introduce you to product features and GlassFish Server Open Source
-Edition 5.1 Quick Start Guide Eclipse GlassFish Server 5.1
-Quick Start Guide you to use them immediately.
-
-[[sthref1]]
-
-'''''
-
-Eclipse GlassFish Server Quick Start Guide, Release 5.1
-
-Copyright © 2013, 2019 Oracle and/or its affiliates. All rights reserved.
-
-This program and the accompanying materials are made available under the 
-terms of the Eclipse Public License v. 2.0, which is available at 
-http://www.eclipse.org/legal/epl-2.0. 
-
-SPDX-License-Identifier: EPL-2.0
-
-Oracle and Java are registered trademarks of Oracle and/or its 
-affiliates. Other names may be trademarks of their respective owners. 
-
-Intel and Intel Xeon are trademarks or registered trademarks of Intel 
-Corporation. All SPARC trademarks are used under license and are 
-trademarks or registered trademarks of SPARC International, Inc. AMD, 
-Opteron, the AMD logo, and the AMD Opteron logo are trademarks or 
-registered trademarks of Advanced Micro Devices. UNIX is a registered 
-trademark of The Open Group. 
diff --git a/docs/quick-start-guide/src/main/jbake/jbake.properties b/docs/quick-start-guide/src/main/jbake/jbake.properties
deleted file mode 100644
index 546d09c..0000000
--- a/docs/quick-start-guide/src/main/jbake/jbake.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-site.host=http://jbake.org
-render.tags=false
-render.sitemap=false
-render.archive=false
-render.feed=false
-asciidoctor.option.safe=0
-asciidoctor.attributes.export=true
diff --git a/docs/quick-start-guide/src/main/jbake/templates/footer.ftl b/docs/quick-start-guide/src/main/jbake/templates/footer.ftl
deleted file mode 100644
index 6f2b09e..0000000
--- a/docs/quick-start-guide/src/main/jbake/templates/footer.ftl
+++ /dev/null
@@ -1,46 +0,0 @@
-<#-- a footer template fragment included in the page template -->
-<hr />
-
-<table width="90%" id="bottom-nav" cellspacing="0" cellpadding="0">
-	<colgroup>
-		<col width="12%"/>
-		<col width="12%"/>
-		<col width="*"/>
-	</colgroup>
-	<tr>		
-	    <#if content.prev??>
-		<td align="left">
-		<a href="${content.prev}">
-			<span class=" vector-font"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Previous</span>
-		</a>
-		</td>
-		</#if>
-
-		<#if content.next??>
-		<td align="left">
-		<a href="${content.next}">
-			<span class="vector-font"><i class="fa fa-arrow-circle-right vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Next</span>
-		</a>
-		</td>
-		</#if>
-
-		<td align="right">
-		<a href="toc.html">
-			<span class="vector-font"><i class="fa fa-list vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Contents</span>
-		</a>
-		</td>
-	</tr>
-</table>
-
-<span id="copyright">
-        <img src="img/eclipse_foundation_logo_tiny.png" height="20px" alt="Eclipse Foundation Logo" align="top"/>&nbsp;            
-        <span >Copyright&nbsp;&copy;&nbsp;2019,&nbsp;Oracle&nbsp;and/or&nbsp;its&nbsp;affiliates.&nbsp;All&nbsp;rights&nbsp;reserved.</span>
-</span>
-
-<p align="center" class="beta">${config.status!}</p>
-
-</body>
-</html>
diff --git a/docs/quick-start-guide/src/main/jbake/templates/header.ftl b/docs/quick-start-guide/src/main/jbake/templates/header.ftl
deleted file mode 100644
index 82ebb36..0000000
--- a/docs/quick-start-guide/src/main/jbake/templates/header.ftl
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html>
-<#-- a header template fragment included in the page template -->
-<html lang="en">
-  <head>
-    <meta charset="utf-8"/>
-    <title><#if (content.title)??><#escape x as x?xml>${content.title}</#escape></#if></title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <link href="<#if (content.rootpath)??>${content.rootpath}<#else></#if>css/style.css" rel="stylesheet">
-    <script src="https://use.fontawesome.com/96c4d89611.js"></script>
-  </head>
-  <body>
-<table id="doc-title" cellspacing="0" cellpadding="0">
-  <tr>
-  <td align="left" valign="top">
-  <b>${content.title}</b><br />
-      <p class="beta">${config.status!}</p>
-  </td>
-  </tr>
-</table>
-<hr />
-
-<table width="90%" id="top-nav" cellspacing="0" cellpadding="0">
-	<colgroup>
-		<col width="12%"/>
-		<col width="12%"/>
-		<col width="*"/>
-	</colgroup>
-	<tr>
-	    <#if content.prev??>
-		<td align="left">
-		<a href="${content.prev}">
-			<span class="vector-font"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Previous</span>
-		</a>
-		</td>
-	    </#if>
-
-	    <#if content.next??>
-		<td align="left">
-		<a href="${content.next}">
-			<span class=" vector-font"><i class="fa fa-arrow-circle-right vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Next</span>
-		</a>
-		</td>
-	    </#if>
-
-		<td align="right">
-		<a href="toc.html">
-			<span class=" vector-font"><i class="fa fa-list vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Contents</span>
-		</a>
-		</td>
-	</tr>
-</table>
-
diff --git a/docs/quick-start-guide/src/main/jbake/templates/menu.ftl b/docs/quick-start-guide/src/main/jbake/templates/menu.ftl
deleted file mode 100644
index 888c03d..0000000
--- a/docs/quick-start-guide/src/main/jbake/templates/menu.ftl
+++ /dev/null
@@ -1 +0,0 @@
-<#-- a menu bar template fragment included in the page template -->
\ No newline at end of file
diff --git a/docs/quick-start-guide/src/main/jbake/templates/page.ftl b/docs/quick-start-guide/src/main/jbake/templates/page.ftl
deleted file mode 100644
index eca51db..0000000
--- a/docs/quick-start-guide/src/main/jbake/templates/page.ftl
+++ /dev/null
@@ -1,8 +0,0 @@
-<#-- a top level page layout template -->
-
-<#include "header.ftl">
-<#include "menu.ftl">
-
-${content.body}
-
-<#include "footer.ftl">
\ No newline at end of file
diff --git a/docs/reference-manual/README.md b/docs/reference-manual/README.md
deleted file mode 100644
index a3ec2b6..0000000
--- a/docs/reference-manual/README.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# A JBake project template
-
-## About JBake
-
-JBake is a static site generator, it's inspired from jekyll and written
-in java.  The basic idea is to have templates for the structure of the
-page, and the body generated from asciidoc content.
-
-## Pre requisites
-
-- Maven
-- JDK8+
-
-Deploying to Github will require password less authentication.
-
-This is done by exporting your SSH public key into your Github account.
-
-## Build the site locally
-
-The site is generated under target/staging.
-
-Open file:///PATH_TO_PROJECT_DIR/target/staging in a browser to view the site.
-
-```
-mvn generate-resources
-```
-
-Or you can invoke the JBake plugin directly.
-
-```
-mvn jbake:build
-```
-
-### Rebuild the site on changes
-
-```
-mvn jbake:watch
-```
-
-If you keep this command running, changes to the sources will be
-detected and the site will be rendered incrementally.
-
-This is convenient when writing content.
-
-### Serve the site locally
-
-```
-mvn jbake:serve
-```
-
-If a webserver is required (e.g. absolute path are used), this command
-will start a webserver (jetty) at http://localhost:8820.  It will also
-watch for changes and rebuild incrementally.
-
-## Deploy the site to Github Pages
-
-```
-mvn deploy
-```
-
-## Produce a zip file for download
-
-To produce a zip file containing the generated html files, use:
-
-```
-mvn package
-```
-
-When making a release on GitHub, this zip file should be added to the release.
-
-## Links
-
-- [JBake maven plugin documentation](https://github.com/Blazebit/jbake-maven-plugin)
-- [JBake documentation](http://jbake.org/docs/2.5.1)
-- [Freemarker documentation](http://freemarker.org/docs)
-- [AsciiDoc User Guide](http://asciidoc.org/userguide.html)
-- [Asciidoctor quick reference](http://asciidoctor.org/docs/asciidoc-syntax-quick-reference)
diff --git a/docs/reference-manual/pom.xml b/docs/reference-manual/pom.xml
index a9bb9a6..6b2eb45 100644
--- a/docs/reference-manual/pom.xml
+++ b/docs/reference-manual/pom.xml
@@ -22,11 +22,14 @@
     <parent>
         <groupId>org.glassfish.docs</groupId>
         <artifactId>parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../parent</relativePath>
     </parent>
-    <groupId>org.glassfish.docs</groupId>
     <artifactId>reference-manual</artifactId>
     <packaging>jar</packaging>
-    <name>Eclipse GlassFish Server Reference Manual, Release 5.1</name>
+    <name>Eclipse GlassFish Server Reference Manual, Release 7</name>
+
+    <properties>
+      <pdf.toclevels>1</pdf.toclevels>
+    </properties>
 </project>
diff --git a/docs/reference-manual/src/main/asciidoc/add-library.adoc b/docs/reference-manual/src/main/asciidoc/add-library.adoc
new file mode 100644
index 0000000..f841dbb
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/add-library.adoc
@@ -0,0 +1,154 @@
+type=page
+status=published
+title=add-library
+next=add-resources.html
+prev=manvol1.html
+~~~~~~
+
+= add-library
+
+[[add-library-1]][[GSRFM00818]][[add-library]]
+
+== add-library
+
+Adds one or more library JAR files to {productName}
+
+[[sthref7]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] add-library [--help]
+[--type={common|ext|app}] [--upload={false|true}]
+library-file-path [library-file-path ... ]
+----
+
+[[sthref8]]
+
+=== Description
+
+The `add-library` subcommand adds one or more library archive files to
+{productName}.
+
+The `--type` option specifies the library type and the {productName}
+directory to which the library is added.
+
+The library-file-path operand is the path to the JAR file that contains
+the library to be added. To specify multiple libraries, specify multiple
+paths separated by spaces.
+
+[NOTE]
+====
+The library archive file is added to the DAS. For common and extension
+libraries, you must restart the DAS so the libraries are picked up by
+the server runtime. To add the libraries to other server instances,
+synchronize the instances with the DAS by restarting them.
+====
+
+This subcommand is supported in remote mode only.
+
+[[sthref9]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+
+`--help`::
+
+`-?`::
+  Displays the help text for the subcommand.
+
+`--type`::
+  Specifies the library type and the {productName} directory to
+  which the library is added. Valid values are as follows:
+  `common`;;
+    Adds the library files to the Common class loader directory,
+    domain-dir``/lib``. This is the default.
+  `ext`;;
+    Adds the library files to the Java optional package directory,
+    domain-dir``/lib/ext``.
+  `app`;;
+    Adds the library files to the application-specific class loader
+    directory, domain-dir``/lib/applibs``.
+
++
+For more information about these directories, see
+"link:application-development-guide/class-loaders.html#GSDVG00003[Class Loaders]"
+in {productName} Application Development Guide.
+
+`--upload`::
+  Specifies whether the subcommand uploads the file to the DAS. In most
+  situations, this option can be omitted.
+  Valid values are as follows:
+  `false`;;
+    The subcommand does not upload the file and attempts to access the
+    file through the specified file name. If the DAS cannot access the
+    file, the subcommand fails. +
+    For example, the DAS might be running as a different user than the
+    administration user and does not have read access to the file. In
+    this situation, the subcommand fails if the `--upload` option is `false`.
+  `true`;;
+    The subcommand uploads the file to the DAS over the network connection.
+
++
+The default value depends on whether the DAS is on the host where the
+subcommand is run or is on a remote host.
+
+* If the DAS is on the host where the subcommand is run, the default is `false`.
+* If the DAS is on a remote host, the default is `true`.
++
+If a directory filepath is specified, this option is ignored.
+
+[[sthref10]]
+
+=== Operands
+
+library-file-path::
+  The paths to the archive files that contain the libraries that are to
+  be added. You can specify an absolute path or a relative path. +
+  If the `--upload` option is set to `true`, this is the path to the
+  file on the local client machine. If the `--upload` option is set to
+  `false`, this is the path to the file on the server machine.
+
+[[sthref11]]
+
+=== Examples
+
+[[GSRFM824]][[sthref12]]
+
+==== Example 1   Adding Libraries
+
+This example adds the library in the archive file `mylib.jar` to the
+application-specific class loader directory on the default server
+instance.
+
+[source]
+----
+asadmin> add-library --type app /tmp/mylib.jar
+Command add-library executed successfully.
+----
+
+[[sthref13]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref14]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:list-libraries.html#list-libraries-1[`list-libraries`(1)],
+link:remove-library.html#remove-library-1[`remove-library`(1)]
+
+"link:application-development-guide/class-loaders.html#GSDVG00003[Class Loaders]" in {productName} Application Development Guide
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/add-resources.adoc b/docs/reference-manual/src/main/asciidoc/add-resources.adoc
new file mode 100644
index 0000000..bcc8401
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/add-resources.adoc
@@ -0,0 +1,189 @@
+type=page
+status=published
+title=add-resources
+next=apply-http-lb-changes.html
+prev=add-library.html
+~~~~~~
+
+= add-resources
+
+[[add-resources-1]][[GSRFM00001]][[add-resources]]
+
+== add-resources
+
+Creates the resources specified in an XML file
+
+[[sthref15]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] add-resources [--help]
+[--target target]
+[--upload={false|true}] xml-file-name
+----
+
+[[sthref16]]
+
+=== Description
+
+The `add-resources` subcommand creates the resources named in the
+specified XML file. The resources that can be created with this
+subcommand are listed in See Also in this help page.
+
+The `--target` option specifies the target for which you are creating
+the resources. If this option specifies the domain, the resources are
+added only to the configuration of the domain administration server
+(DAS). If this option specifies any other target, the resources are
+added to the configuration of the DAS and references are added to the
+resources from the specified target.
+
+The xml-file-name operand is the path to the XML file that contains the
+resources to be created. The `DOCTYPE` must be specified as
+`http://glassfish.org/dtds/glassfish-resources_1_5.dtd` in the
+`resources.xml` file.
+
+This subcommand is supported in remote mode only.
+
+[[sthref17]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Specifies the target for which you are creating the resources. +
+  Valid values are as follows:
+
+  `server`;;
+    Creates the resources for the default server instance `server` and
+    is the default value.
+  `domain`;;
+    Creates the resources for the domain.
+  cluster-name;;
+    Creates the resources for every server instance in the cluster.
+  instance-name;;
+    Creates the resources for a particular {productName} instance.
+
+`--upload`::
+  Specifies whether the subcommand uploads the file to the DAS. In most
+  situations, this option can be omitted. Valid values are as follows:
+
+  `false`;;
+    The subcommand does not upload the file and attempts to access the
+    file through the specified file name. If the DAS cannot access the
+    file, the subcommand fails. +
+    For example, the DAS might be running as a different user than the
+    administration user and does not have read access to the file. In
+    this situation, the subcommand fails if the `--upload` option is
+    `false`.
+  `true`;;
+    The subcommand uploads the file to the DAS over the network
+    connection.
+
++
+The default value depends on whether the DAS is on the host where the
+  subcommand is run or is on a remote host.
+
+  * If the DAS is on the host where the subcommand is run, the default is `false`.
+  * If the DAS is on a remote host, the default is `true`.
+
+[[sthref18]]
+
+=== Operands
+
+xml-file-name::
+  The path to the XML file that contains the resources that are to be
+  created. You can specify an absolute path, only the file name, or a
+  relative path.
++
+  * If you specify an absolute path, the XML file can be anywhere.
+  * If you specify only the file name, the XML file must reside in the
+  domain-dir``/config`` directory on the DAS host. This requirement must
+  be met even if you run the subcommand from another host.
+  * If you specify a relative path, the XML file must be in the relative   directory.
+
++
+An example XML file follows.
++
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE resources PUBLIC
+   "-//GlassFish.org//DTD GlassFish Application Server 3.1 Resource Definitions //EN"
+   "http://glassfish.org/dtds/glassfish-resources_1_5.dtd">
+<resources>
+ <jdbc-connection-pool name="SPECjPool" steady-pool-size="100"
+   max-pool-size="150" max-wait-time-in-millis="60000"
+   pool-resize-quantity="2" idle-timeout-in-seconds="300"
+   is-isolation-level-guaranteed="true"
+   is-connection-validation-required="false"
+   connection-validation-method="auto-commit"
+   fail-all-connections="false"
+   datasource-classname="oracle.jdbc.pool.OracleDataSource">
+  <property name="URL"
+    value="jdbc:oracle:thin:@iasperfsol12:1521:specdb"/>
+  <property name="User" value="spec"/>
+  <property name="Password" value="spec"/>
+  <property name="MaxStatements" value="200"/>
+  <property name="ImplicitCachingEnabled" value="true"/>
+ </jdbc-connection-pool>
+ <jdbc-resource enabled="true" pool-name="SPECjPool"
+   jndi-name="jdbc/SPECjDB"/>
+</resources>
+----
+
+[[sthref19]]
+
+=== Examples
+
+[[GSRFM445]][[sthref20]]
+
+==== Example 1   Adding Resources
+
+This example creates resources using the contents of the XML file
+`resource.xml`.
+
+[source]
+----
+asadmin> add-resources resource.xml
+Command : Connector connection pool jms/testQFactoryPool created.
+Command : Administered object jms/testQ created.
+Command : Connector resource jms/testQFactory created.
+Command : Resource adapter config myResAdapterConfig created successfully
+Command : JDBC connection pool DerbyPoolA created successfully.
+Command : JDBC resource jdbc/__defaultA created successfully.
+Command add-resources executed successfully.
+----
+
+[[sthref21]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref22]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-jdbc-connection-pool.html#create-jdbc-connection-pool-1[`create-jdbc-connection-pool`(1)],link:create-jdbc-resource.html#create-jdbc-resource-1[`create-jdbc-resource`(1)],
+link:create-jms-resource.html#create-jms-resource-1[`create-jms-resource`(1)],
+link:create-jndi-resource.html#create-jndi-resource-1[`create-jndi-resource`(1)],
+link:create-javamail-resource.html#create-javamail-resource-1[`create-javamail-resource`(1)],
+link:create-custom-resource.html#create-custom-resource-1[`create-custom-resource`(1)],
+link:create-connector-resource.html#create-connector-resource-1[`create-connector-resource`(1)],
+link:create-connector-work-security-map.html#create-connector-work-security-map-1[`create-connector-work-security-map`(1)],
+link:create-admin-object.html#create-admin-object-1[`create-admin-object`(1)],
+link:create-resource-adapter-config.html#create-resource-adapter-config-1[`create-resource-adapter-config`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/appclient.adoc b/docs/reference-manual/src/main/asciidoc/appclient.adoc
new file mode 100644
index 0000000..273b4dd
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/appclient.adoc
@@ -0,0 +1,217 @@
+type=page
+status=published
+title=appclient
+next=asadmin.html
+prev=manvol1m.html
+~~~~~~
+
+= appclient
+
+[[appclient-1m]][[GSRFM00262]][[appclient]]
+
+== appclient
+
+Launches the Application Client Container and invokes the client
+application typically packaged in the application JAR file
+
+[[sthref2357]]
+
+=== Synopsis
+
+[source]
+----
+appclient [client_application_classfile | -client client_application_jar]
+[-mainclass main_class_name | -name display_name]
+[-xml sun-acc.xml file] [-textauth]
+[-targetserver host[:port][,host[:port]...]]
+[-user username] [-passwordfile password_file]
+[application-options]
+
+appclient [jvm-options]
+[-mainclass main_class_name | -name display_name]
+[-xml client_config_xml_file] [-textauth]
+[-targetserver host[:port][,host[:port]...]]
+[-user username] [-passwordfile password_file]
+class-selector [application-options]
+----
+
+[[sthref2358]]
+
+=== Description
+
+Use the `appclient` command to launch the Application Client Container
+and invoke a client application that is typically packaged in an
+application JAR file. The application client JAR file is specified and
+created during deployment by the Administration Console or the
+`asadmin deploy` command with the `--retrieve` option. You can also
+retrieve the client JAR file using the `asadmin get-client-stubs`
+command.
+
+The Application Client Container is a set of Java classes, libraries,
+and other files that are required to execute a first-tier application
+client program on a Virtual Machine for the Java platform (JVM machine).
+The Application Client Container communicates with the server using
+RMI-IIOP.
+
+The client JAR file that is retrieved after deploying an application
+should be passed with the `-client` or `-jar` option when running the
+`appclient` utility. The client JAR file name is of the form
+app-name`Client.jar`. For multiple application clients in an EAR file,
+you must use the `-mainclass` or `-name` option to specify which client
+to invoke.
+
+If the application client is a stand-alone module or the only client in
+an EAR file, the Application Client Container can find the client
+without using the `-mainclass` or `-name` options. If you provide a
+`-mainclass` or `-name` value that does not match what is in the client,
+the Application Client Container launches the client anyway but issues a
+warning that the selection did not match the information in the client.
+The warning also displays what the actual main class and name values are
+for the client.
+
+[[sthref2359]]
+
+=== Options
+
+jvm-options::
+  optional; you can set JVM options for the client application. These
+  can be any valid `java` command options except `-client` or `-jar`.
+  JVM options can be intermixed with other `appclient` command options
+  as long as both types of options appear before the class-selector.
+client_application_classfile::
+  optional; the file system pathname of the client application `.class`
+  file. A relative pathname must be relative to the current directory.
+  This class file must contain the `main()` method to be invoked by the
+  Application Client Container. +
+  If you use client_application_classfile and the class is dependent on
+  other user classes, you must also set the classpath. You can either
+  use the `-classpath` JVM option in the `appclient` command or set the
+  `CLASSPATH` environment variable. For more information about setting a
+  classpath, see Setting the Class Path, Oracle Solaris Version
+  (`http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/classpath.html`)
+  or Setting the Class Path, Windows Version
+  (`http://docs.oracle.com/javase/6/docs/technotes/tools/windows/classpath.html`).
+`-client`::
+  optional; the name and location for the client JAR file.
+`-mainclass`::
+  optional; the full classname of the main client application as
+  specified in the `Main-Class` entry in the `MANIFEST.MF` file. Used
+  for a multiple client applications. By default, uses the class
+  specified in the `client jar`. For example,
+  `com.example.test.AppClient`.
+`-name`::
+  optional; the display name for the client application. Used for
+  multiple client applications. By default, the display name is
+  specified in the client jar `application-client.xml` file which is
+  identified by the `display-name` attribute.
+`-xml`::
+  optional if using the default domain, instance, and name
+  (`sun-acc.xml`), otherwise it is required; identifies the name and
+  location of the client configuration XML file. If not specified,
+  defaults to the `sun-acc.xml` file in the domain-dir``/config``
+  directory.
+`-textauth`::
+  optional; used to specify using text format authentication when
+  authentication is needed.
+`-targetserver`::
+  optional; a comma-separated list of one or more server specifications
+  for ORB endpoints. Each server specification must include at least the
+  host. Optionally, a server specification can include the port as well.
+  If the port is omitted from a server specification, the default value,
+  `3700`, is used for that host.
+`-user`::
+  optional; the application user who is authorized to have access to
+  particular guarded components in the application, such as EJB
+  components.
+`-passwordfile`::
+  optional; specifies the name, including the full path, of a file that
+  contains the password for application clients in the following format:
++
+[source]
+----
+PASSWORD=appclient-password
+----
+  If this option is omitted, the password is specified interactively at
+  the command prompt.
++
+[CAUTION]
+====
+Avoid specifying a password interactively at the command prompt. Such
+a password can be seen by users who can run commands to display
+running processes and the commands to start them, such as `ps`.
+====
++
+For security reasons, a password that is specified as an environment
+variable is not read by the `appclient` utility.
+class-selector::
+  required; you must specify the client application class using one of
+  the following class selectors.
+
+  `-jar` jar-file;;
+    the name and location of the client JAR file. The application client
+    JAR file is specified and created during deployment by the
+    `asadmin deploy` command. If specified, the `-classpath` setting is
+    ignored in deference to the `Class-Path` setting in the client JAR
+    file's manifest.
+  class-name;;
+    the fully qualified name of the application client's main class. The
+    Application Client Container invokes the `main` method of this class
+    to start the client. For example, `com.example.test.AppClient`. +
+    If you use class-name as the class selector, you must also set the
+    classpath. You can either use the `-classpath` JVM option in the
+    `appclient` command or set the `CLASSPATH` environment variable. For
+    more information about setting a classpath, see Setting the Class
+    Path, Oracle Solaris Version
+    (`http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/classpath.html`)
+    or Setting the Class Path, Windows Version
+    (`http://docs.oracle.com/javase/6/docs/technotes/tools/windows/classpath.html`).
+
+application-options::
+  optional; you can set client application arguments.
+
+[[sthref2360]]
+
+=== Examples
+
+[[GSRFM804]][[sthref2361]]
+
+==== Example 1   Using the `appclient` command
+
+[source]
+----
+appclient -xml sun-acc.xml -jar myclientapp.jar scott sample
+----
+
+Where: `sun-acc.xml` is the name of the client configuration XML file,
+`myclientapp.jar` is the client application `.jar` file, and `scott` and
+`sample` are arguments to pass to the application. If `sun-acc.xml` and
+`myclientapp.jar` are not in the current directory, you must give the
+absolute path locations; otherwise the relative paths are used. The
+relative path is relative to the directory where the command is being
+executed.
+
+[[sthref2362]]
+
+=== Attributes
+
+See
+http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN5attributes-5[`attributes`(5)]
+for descriptions of the following attributes:
+
+[width="100%",cols="50%,50%",options="header",]
+|===
+|ATTRIBUTE TYPE |ATTRIBUTE VALUE
+|Interface Stability |Unstable
+|===
+
+
+[[sthref2363]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:get-client-stubs.html#get-client-stubs-1[`get-client-stubs`(1)],
+link:package-appclient.html#package-appclient-1m[`package-appclient`(1M)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/application.adoc b/docs/reference-manual/src/main/asciidoc/application.adoc
new file mode 100644
index 0000000..d212e1c
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/application.adoc
@@ -0,0 +1,37 @@
+type=page
+status=published
+title=application
+next=configuration.html
+prev=manvol5asc.html
+~~~~~~
+
+= application
+
+[[application-5asc]][[GSRFM00265]][[application]]
+
+== application
+
+Server-side Java applications and web services
+
+[[sthref2392]]
+
+=== Description
+
+The Jakarta EE platform enables applications to access systems that are
+outside of the application server. Applications connect to these systems
+through resources. The {productName} infrastructure supports the
+deployment of many types of distributed applications and is an ideal
+foundation for building applications based on Service Oriented
+Architectures (SOA). SOA is a design methodology aimed at maximizing the
+reuse of application services. These features enable you to run scalable
+and highly available Jakarta EE applications.
+
+[[sthref2393]]
+
+=== See Also
+
+link:create-application-ref.html#create-application-ref-1[`create-application-ref`(1)],
+link:deploy.html#deploy-1[`deploy`(1)],
+link:list-applications.html#list-applications-1[`list-applications`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/apply-http-lb-changes.adoc b/docs/reference-manual/src/main/asciidoc/apply-http-lb-changes.adoc
new file mode 100644
index 0000000..b7fd206
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/apply-http-lb-changes.adoc
@@ -0,0 +1,116 @@
+type=page
+status=published
+title=apply-http-lb-changes
+next=attach.html
+prev=add-resources.html
+~~~~~~
+
+= apply-http-lb-changes
+
+[[apply-http-lb-changes-1]][[GSRFM00002]][[apply-http-lb-changes]]
+
+== apply-http-lb-changes
+
+Applies load balancer configuration changes to the load balancer
+
+[[sthref23]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] apply-http-lb-changes [--help]
+lb-name
+----
+
+[[sthref24]]
+
+=== Description
+
+Use the `apply-http-lb-changes` subcommand to apply the changes in
+the load balancer configuration to the physical load balancer. The load
+balancer must already exist. To create a physical load balancer, use the
+`create-http-lb` subcommand.
+
+This subcommand is only applicable to {productName}. This
+subcommand is not applicable to {productName}.
+
+[[sthref25]]
+
+Context
+
+The Load Balancer distributes the workload among multiple {productName} instances , increasing the overall throughput of the
+system. The Load Balancer also enables requests to failover from one
+server instance to another. For HTTP session information to persist,
+configure HTTP session persistence.
+
+
+[NOTE]
+====
+The Load Balancer Plugin is only available with {productName},
+and is not available with {productName}. For
+{productName}, it is possible to use the `mod_jk`
+module to configure load balancing on the Apache HTTP server.
+====
+
+
+For more information about configuring load balancing with
+{productName}, refer to the online help in the {productName}
+Administration Console.
+
+[[sthref26]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref27]]
+
+=== Operands
+
+lb-name::
+  The name of the load balancer to which changes are applied. The load
+  balancer must already exist. You can create it with the
+  `create-http-lb` subcommand.
+
+[[sthref28]]
+
+=== Examples
+
+[[GSRFM446]][[sthref29]]
+
+==== Example 1   Using the `apply-http-lb-changes` subcommand
+
+This example applies configuration changes to a load balancer named
+`mylb`.
+
+[source]
+----
+asadmin> apply-http-lb-changes mylb
+Command apply-http-lb-changes executed successfully.
+----
+
+[[sthref30]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref31]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-http-lb.html#create-http-lb-1[`create-http-lb`(1)],
+link:create-http-lb-config.html#create-http-lb-config-1[`create-http-lb-config`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/asadmin.adoc b/docs/reference-manual/src/main/asciidoc/asadmin.adoc
new file mode 100644
index 0000000..47817f3
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/asadmin.adoc
@@ -0,0 +1,841 @@
+type=page
+status=published
+title=asadmin
+next=debug-asadmin.html
+prev=appclient.html
+~~~~~~
+
+= asadmin
+
+The script content on this page is for navigation purposes only and does
+not alter the content in any way.
+
+[[asadmin-1m]][[GSRFM00263]][[asadmin]]
+
+== asadmin
+
+Utility for performing administrative tasks for {productName}
+
+[[sthref2364]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [--host host]
+[--port port]
+[--user admin-user]
+[--passwordfile filename]
+[--terse={true|false}]
+[--secure={false|true}]
+[--echo={true|false}]
+[--interactive={true|false}]
+[--detach={true|false}]
+[--help]
+[subcommand [options] [operands]]
+----
+
+[[sthref2365]]
+
+=== Description
+
+Use the `asadmin` utility to perform administrative tasks for {productName}. You can use this utility instead of the Administration
+Console interface.
+
+=== Subcommands of the asadmin Utility
+
+The subcommand identifies the operation or task that you are performing.
+Subcommands are case-sensitive. Each subcommand is either a local
+subcommand or a remote subcommand.
+
+* A local subcommand can be run without a running domain administration
+server (DAS). However, to run the subcommand and have access to the
+installation directory and the domain directory, the user must be logged
+in to the machine that hosts the domain.
+
+* A remote subcommand is always run by connecting to a DAS and running
+the subcommand there. A running DAS is required.
+
+=== asadmin Utility Options and Subcommand Options
+
+Options control the behavior of the `asadmin` utility and its
+subcommands. Options are also case-sensitive.
+
+The `asadmin` utility has the following types of options:
+
+* `asadmin` utility options. These options control the behavior of the
+`asadmin` utility, not the subcommand. The `asadmin` utility options may
+precede or follow the subcommand, but `asadmin` utility options after
+the subcommand are deprecated. All `asadmin` utility options must either
+precede or follow the subcommand. If `asadmin` utility options are
+specified both before and after the subcommand, an error occurs. For a
+description of the `asadmin` utility options, see the "Options" section
+of this help information.
+
+* Subcommand options. These options control the behavior of the
+subcommand, not the `asadmin` utility. Subcommand options must follow
+the subcommand. For a description of a subcommand's options, see the
+help information for the subcommand.
+
+A subcommand option may have the same name as an `asadmin` utility
+option, but the effects of the two options are different.
+
+The `asadmin` utility options and some subcommand options have a long
+form and a short form.
+
+* The long form of an option has two dashes (`--`) followed by an option word.
+* The short form of an option has a single dash (`-`) followed by a
+single character.
+
+For example, the long form and the short form of the option for
+specifying terse output are as follows:
+
+* Long form: `--terse`
+* Short form: `-t`
+
+Most options require argument values, except Boolean options, which
+toggle to enable or disable a feature.
+
+==== Operands of asadmin Subcommands
+
+Operands specify the items on which the subcommand is to act. Operands
+must follow the argument values of subcommand options, and are set off
+by a space, a tab, or double dashes (`--`). The `asadmin` utility treats
+anything that follows the subcommand options and their values as an
+operand.
+
+Escape Characters in Options for the asadmin Utility
+
+Escape characters are required in options of the `asadmin` utility for
+the following types of characters:
+
+* Meta characters in the UNIX operating system. These characters have
+special meaning in a shell. Meta characters in the UNIX operating system
+include: `\/,.!$%^&*|{}[]"'\`~;`.
++
+To disable these characters, use the backslash (`\`) escape character or
+enclose the entire command-line argument in single quote (`'`)
+characters.
++
+The following examples illustrate the effect of escape characters on the
+`*` character. In these examples, the current working directory is the
+domains directory.
+
+** The following command, without the escape character, echoes all files
+in the current directory:
++
+[source]
+----
+prompt% echo *
+domain1 domain2
+----
+
+** The following command, in which the backslash (`\`) escape character
+precedes the `*` character, echoes the `*` character:
++
+[source]
+----
+prompt% echo \*
+*
+----
+
+** The following command, in which the `*` character is enclosed in
+single quote (`'`) characters, echoes the `*` character:
++
+[source]
+----
+prompt% echo '*'
+*
+----
+The escape character is also a special character in the UNIX operating
+system and in the Java language. Therefore, in the UNIX operating system
+and in multimode, you must apply an additional escape character to every
+escape character in the command line. This requirement does not apply to
+the Windows operating system.
++
+For example, the backslash (`\`) UNIX operating system meta character in
+the option argument `Test\Escape\Character` is specified on UNIX and
+Windows systems as follows:
+
+** On UNIX systems, each backslash must be escaped with a second backslash:
++
+[source]
+----
+Test\\Escape\\Character
+----
+
+** On Windows systems, no escape character is required:
++
+[source]
+----
+Test\Escape\Character
+----
+
++
+[NOTE]
+====
+In contexts where meta characters in the UNIX operating system are
+unambiguous, these characters do not require escape characters. For
+example, in the link:set.html#set-1[`set`(1)] subcommand, the value that
+is to be set is specified as name`=`value. Because name can never
+include an equals sign, no escape character is required to disable the
+equals sign. Therefore, everything after the equals sign is an
+uninterpreted string that the `set` subcommand uses unchanged.
+====
+
+* Spaces. The space is the separator in the command-line interface.
+To distinguish a space in a command-line argument from the separator in the
+command-line interface, the space must be escaped as follows:
+
+** For the UNIX operating system in single mode and multimode, and for
+all operating systems in multimode, use the backslash (`\`) escape
+character or enclose the entire command-line argument in single quote
+(`'`) characters or double quote (") characters.
+
+** For the Windows operating system in single mode, enclose the entire
+command-line argument in double quote (") characters.
+
+* Option delimiters. The `asadmin` utility uses the colon character
+(`:`) as a delimiter for some options. The backslash (`\`) escape
+character is required if the colon is part of any of the following items:
+
+** A property
+
+** An option of the Virtual Machine for the Java platform (Java Virtual
+Machine or JVM machine)link:#sthref2366[^Foot 1 ^]
++
+For example, the operand of the subcommand
+link:create-jvm-options.html#create-jvm-options-1[`create-jvm-options`(1)]
+specifies JVM machine options in the following format:
++
+[source]
+----
+(jvm-option-name[=jvm-option-value])
+[:jvm-option-name[=jvm-option-value]]*
+----
+Multiple JVM machine options in the operand of the `create-jvm-options`
+subcommand are separated by the colon (`:`) delimiter. If
+jvm-option-name or jvm-option-value contains a colon, the backslash
+(`\`) escape character is required before the colon.
++
+The backslash (`\`) escape character is also required before a single
+quote (`'`) character or a double quote (") character in an option that
+uses the colon as a delimiter.
++
+When used without single quote (') characters, the escape character
+disables the option delimiter in the command-line interface.
++
+For the UNIX operating system in single mode and multimode, and for all
+operating systems in multimode, the colon character and the backslash
+character in an option that uses the colon as a delimiter must be
+specified as follows:
+
+** To pass a literal backslash to a subcommand, two backslashes are
+required. Therefore, the colon (`:`) must be escaped by two backslashes
+(`\\`).
+
+** To prevent a subcommand from treating the backslash as a special
+character, the backslash must be escaped. As a result, two literal
+backslashes (`\\`) must be passed to the subcommand. To prevent the
+shell from interpreting these backslashes as special characters, each
+backslash must be escaped. Therefore, the backslash must be specified by
+a total of four backslashes (`\\\\`).
++
+For the Windows operating system in single mode, a backslash (`\`) is
+required to escape the colon (`:`) and the backslash (`\`) in an option
+that uses the colon as a delimiter.
+
+Instead of using the backslash (`\`) escape character, you can use the
+double quote (") character or single quote (') character. The effects of
+the different types of quote characters on the backslash (`\`) character
+are as follows:
+
+* Between double quote (") characters, the backslash (`\`) character is
+a special character.
+* Between single quote (') characters, the backslash (`\`) character is
+not a special character.
+
+==== Requirements for Using the --secure Option
+
+The requirements for using the `--secure` option are as follows:
+
+* The domain that you are administering must be configured for security.
+* The `security-enabled` attribute of the `http-listener` element in the
+  DAS configuration must be set to `true`.
+
+To set this attribute, use the `set` subcommand.
+
+===== Server Restart After Creation or Deletion
+
+When you use the `asadmin` subcommands to create or delete a
+configuration item, you must restart the DAS for the change to take
+effect. To restart the DAS, use the
+link:restart-domain.html#restart-domain-1[`restart-domain`(1)] subcommand.
+
+==== Help Information for Subcommands and the asadmin Utility
+
+To obtain help information for an `asadmin` utility subcommand, specify
+the subcommand of interest as the operand of the `help` subcommand. For
+example, to obtain help information for the
+link:start-domain.html#start-domain-1[`start-domain`(1)] subcommand,
+type:
+
+[source]
+----
+asadmin help start-domain
+----
+
+If you run the `help` subcommand without an operand, this help
+information for the `asadmin` utility is displayed.
+
+To obtain a listing of available `asadmin` subcommands, use the
+link:list-commands.html#list-commands-1[`list-commands`(1)] subcommand.
+
+[[sthref2367]]
+
+=== Options
+
+`--host`::
+`-H`::
+  The machine name where the DAS is running. The default value is
+  `localhost`.
+`--port`::
+`-p`::
+  The HTTP port or HTTPS port for administration. This port is the port
+  in the URL that you specify in your web browser to manage the domain.
+  For example, in the URL `http://localhost:4949`, the port is 4949. +
+  The default port number for administration is 4848.
+`--user`::
+`-u`::
+  The user name of the authorized administrative user of the DAS. +
+  If you have authenticated to a domain by using the `asadmin login`
+  command, you need not specify the `--user` option for subsequent
+  operations on the domain.
+`--passwordfile`::
+`-W`::
+  Specifies the name, including the full path, of a file that contains
+  password entries in a specific format. +
+  Note that any password file created to pass as an argument by using
+  the `--passwordfile` option should be protected with file system
+  permissions. Additionally, any password file being used for a
+  transient purpose, such as setting up SSH among nodes, should be
+  deleted after it has served its purpose. +
+  The entry for a password must have the `AS_ADMIN_` prefix followed by
+  the password name in uppercase letters, an equals sign, and the password. +
+  The entries in the file that are read by the `asadmin` utility are as follows:
++
+--
+  * ``AS_ADMIN_PASSWORD=``administration-password
+  * ``AS_ADMIN_MASTERPASSWORD=``master-password
+--
+
++
+The entries in this file that are read by subcommands are as follows:
++
+--
+  * ``AS_ADMIN_NEWPASSWORD=``new-administration-password (read by the
+  link:start-domain.html#start-domain-1[``start-domain``(1)] subcommand)
+  * ``AS_ADMIN_USERPASSWORD=``user-password (read by the
+  link:create-file-user.html#create-file-user-1[``create-file-user``(1)]
+  subcommand)
+  * ``AS_ADMIN_ALIASPASSWORD=``alias-password (read by the
+  link:create-password-alias.html#create-password-alias-1[`create-password-alias`(1)]
+  subcommand)
+  * ``AS_ADMIN_MAPPEDPASSWORD=``mapped-password (read by the
+  link:create-connector-security-map.html#create-connector-security-map-1[``create-connector-security-map``(1)]
+  subcommand)
+  * ``AS_ADMIN_WINDOWSPASSWORD=``windows-password (read by the
+  link:create-node-dcom.html#create-node-dcom-1[``create-node-dcom``(1)],
+  link:install-node-dcom.html#install-node-dcom-1[``install-node-dcom``(1)],
+  and link:update-node-ssh.html#update-node-dcom-1[``update-node-dcom``(1)]
+  subcommands)
+  * ``AS_ADMIN_SSHPASSWORD=``sshd-password (read by the
+  link:create-node-ssh.html#create-node-ssh-1[``create-node-ssh``(1)],
+  link:install-node.html#install-node-1[``install-node``(1)],
+  link:install-node-ssh.html#install-node-ssh-1[``install-node-ssh``(1)],
+  and
+  link:update-node-ssh001.html#update-node-ssh-1[``update-node-ssh``(1)]
+  subcommands)
+  * ``AS_ADMIN_SSHKEYPASSPHRASE=``sshd-passphrase (read by the
+  link:create-node-ssh.html#create-node-ssh-1[``create-node-ssh``(1)],
+  link:install-node.html#install-node-1[``install-node``(1)],
+  link:install-node-ssh.html#install-node-ssh-1[``install-node-ssh``(1)],
+  and
+  link:update-node-ssh001.html#update-node-ssh-1[``update-node-ssh``(1)]
+  subcommands)
+  * ``AS_ADMIN_JMSDBPASSWORD=`` jdbc-user-password (read by the
+  link:configure-jms-cluster.html#configure-jms-cluster-1[``configure-jms-cluster``(1)]
+  subcommand)
+--
+
++
+These password entries are stored in clear text in the password file.
+  To provide additional security, the ``create-password-alias`` subcommand
+  can be used to create aliases for passwords that are used by remote
+  subcommands. The password for which the alias is created is stored in
+  an encrypted form. If an alias exists for a password, the alias is
+  specified in the entry for the password as follows:
+
++
+[source]
+----
+AS_ADMIN_password-name=${ALIAS=password-alias-name}
+----
++
+For example:
++
+[source]
+----
+AS_ADMIN_SSHPASSWORD=${ALIAS=ssh-password-alias}
+AS_ADMIN_SSHKEYPASSPHRASE=${ALIAS=ssh-key-passphrase-alias}
+----
++
+In domains that do not allow unauthenticated login, all remote
+  subcommands must specify the administration password to authenticate
+  to the DAS. The password can be specified by one of the following means:
+
+  * Through the `--passwordfile` option
+  * Through the link:login.html#login-1[`login`(1)] subcommand
+  * Interactively at the command prompt
+
++
+The `login` subcommand can be used to specify only the administration
+  password. For other passwords that remote subcommands require, use the
+  `--passwordfile` option or specify them at the command prompt. +
+After authenticating to a domain by using the `asadmin login` command,
+  you need not specify the administration password through the
+  `--passwordfile` option for subsequent operations on the domain.
+  However, only the `AS_ADMIN_PASSWORD` option is not required. You
+  still must provide the other passwords, for example,
+  `AS_ADMIN_USERPASSWORD`, when required by individual subcommands, such
+  as
+  link:update-file-user.html#update-file-user-1[`update-file-user`(1)]. +
+For security reasons, a password that is specified as an environment
+  variable is not read by the `asadmin` utility. +
+The master password is not propagated on the command line or an
+  environment variable, but can be specified in the file that the
+  `--passwordfile` option specifies. +
+The default value for `AS_ADMIN_MASTERPASSWORD` is `changeit`.
+
+`--terse`::
+`-t`::
+  If true, output data is very concise and in a format that is optimized
+  for use in scripts instead of for reading by humans. Typically,
+  descriptive text and detailed status messages are also omitted from
+  the output data. Default is false.
+`--secure`::
+`-s`::
+  If set to true, uses SSL/TLS to communicate with the DAS. +
+  The default is false.
+`--echo`::
+`-e`::
+  If set to true, the command-line statement is echoed on the standard
+  output. Default is false.
+`--interactive`::
+`-I`::
+  If set to true, only the required options are prompted. +
+  The default depends on how the `asadmin` utility is run:
+
+  * If the `asadmin` utility is run from a console window, the default
+  is `true`.
+  * If the `asadmin` utility is run without a console window, for
+  example, from within a script, the default is `false`.
+`--detach`::
+  If set to `true`, the specified `asadmin` subcommand is detached and
+  executed in the background in detach mode. The default value is `false`. +
+  The `--detach` option is useful for long-running subcommands and
+  enables you to execute several independent subcommands from one
+  console or script. +
+  The `--detach` option is specified before the subcommand. For example,
+  in single mode, `asadmin --detach` subcommand. +
+  Job IDs are assigned to subcommands that are started using
+  `asadmin --detach`. You can use the
+  link:list-jobs.html#list-jobs-1[`list-jobs`(1)] subcommand to view the
+  jobs and their job IDs, the link:attach.html#attach-1[`attach`(1)]
+  subcommand to reattach to the job and view its status and output, and the
+  link:configure-managed-jobs.html#configure-managed-jobs-1[`configure-managed-jobs`(1)]
+  subcommand to configure how long information about the jobs is kept.
+`--help`::
+`-?`::
+  Displays the help text for the `asadmin` utility.
+
+[[sthref2368]]
+
+=== Examples
+
+[[GSRFM805]][[sthref2369]]
+
+==== Example 1   Running an `asadmin` Utility Subcommand in Single Mode
+
+This example runs the
+link:list-applications.html#list-applications-1[`list-applications`(1)]
+subcommand in single mode. In this example, the default values for all
+options are used.
+
+The example shows that the application `hello` is deployed on the local
+host.
+
+[source]
+----
+asadmin list-applications
+hello <web>
+
+Command list-applications executed successfully.
+----
+
+[[GSRFM806]][[sthref2370]]
+
+==== Example 2   Specifying an `asadmin` Utility Option With a Subcommand
+
+This example specifies the `--host` `asadmin` utility option with the
+`list-applications` subcommand in single mode. In this example, the DAS
+is running on the host `srvr1.example.com`.
+
+The example shows that the applications `basic-ezcomp`, `scrumtoys`,
+`ejb31-war`, and `automatic-timer-ejb` are deployed on the host
+`srvr1.example.com`.
+
+[source]
+----
+asadmin --host srvr1.example.com list-applications
+basic-ezcomp <web>
+scrumtoys <web>
+ejb31-war <ejb, web>
+automatic-timer-ejb <ejb>
+
+Command list-applications executed successfully.
+----
+
+[[GSRFM807]][[sthref2371]]
+
+==== Example 3   Specifying an `asadmin` Utility Option and a Subcommand Option
+
+This example specifies the `--host` `asadmin` utility option and the
+`--type` subcommand option with the `list-applications` subcommand in
+single mode. In this example, the DAS is running on the host
+`srvr1.example.com` and applications of type `web` are to be listed.
+
+[source]
+----
+asadmin --host srvr1.example.com list-applications --type web
+basic-ezcomp <web>
+scrumtoys <web>
+ejb31-war <ejb, web>
+
+Command list-applications executed successfully.
+----
+
+[[GSRFM808]][[sthref2372]]
+
+==== Example 4   Escaping a Command-Line Argument With Single Quote Characters
+
+The commands in this example specify the backslash (`\`) UNIX operating
+system meta character and the colon (:) option delimiter in the property
+value `c:\extras\pmdapp`.
+
+For the UNIX operating system in single mode and multimode, and for all
+operating systems in multimode, the backslash (`\`) is required to
+escape the backslash (`\`) meta character and the colon (:) option
+delimiter:
+
+[source]
+----
+asadmin deploy --property extras.home='c\:\\extras\\pmdapp' pmdapp.war
+Application deployed with name pmdapp.
+Command deploy executed successfully
+----
+
+For the Windows operating system in single mode, the single quote (`'`)
+characters eliminate the need for other escape characters:
+
+[source]
+----
+asadmin deploy --property extras.home='c:\extras\pmdapp' pmdapp.war
+Application deployed with name pmdapp.
+Command deploy executed successfully
+----
+
+[[GSRFM809]][[sthref2373]]
+
+==== Example 5   Specifying a UNIX Operating System Meta Character in an Option
+
+The commands in this example specify the backslash (`\`) UNIX operating
+system meta character in the option argument `Test\Escape\Character`.
+
+For the UNIX operating system in single mode and multimode, and for all
+operating systems in multimode, the backslash (`\`) is required to
+escape the backslash (`\`) meta character:
+
+[source]
+----
+asadmin --user admin --passwordfile gfpass create-jdbc-connection-pool
+--datasourceclassname sampleClassName
+--description Test\\Escape\\Character
+sampleJDBCConnectionPool
+----
+
+For the Windows operating system in single mode, no escape character is
+required:
+
+[source]
+----
+asadmin --user admin --passwordfile gfpass create-jdbc-connection-pool
+--datasourceclassname sampleClassName
+--description Test\Escape\Character
+sampleJDBCConnectionPool
+----
+
+[[GSRFM835]][[sthref2374]]
+
+==== Example 6   Specifying a Command-Line Argument That Contains a Space
+
+The commands in this example specify spaces in the operand
+`C:\Documents and Settings\gfuser\apps\hello.war`.
+
+For all operating systems in single mode or multimode, the entire
+operand can be enclosed in double quote (`"`) characters:
+
+[source]
+----
+asadmin deploy "C:\Documents and Settings\gfuser\apps\hello.war"
+Application deployed with name hello.
+Command deploy executed successfully.
+----
+
+For the UNIX operating system in single mode and multimode, and for all
+operating systems in multimode, the entire command-line argument can be
+enclosed in single quote (`'`) characters:
+
+[source]
+----
+asadmin> deploy 'C:\Documents and Settings\gfuser\apps\hello.war'
+Application deployed with name hello.
+Command deploy executed successfully.
+----
+
+Alternatively, for the UNIX operating system in single mode and
+multimode, and for all operating systems in multimode, the backslash
+(`\`) escape character can be used before each space in the operand. In
+this situation, the backslash (`\`) escape character is required before
+each backslash in the operand:
+
+[source]
+----
+asadmin> deploy C:\\Documents\ and\ Settings\\gfuser\\apps\\hello.war
+Application deployed with name hello.
+Command deploy executed successfully.
+----
+
+[[GSRFM810]][[sthref2375]]
+
+==== Example 7   Specifying a Meta Character and an Option Delimiter Character in a Property
+
+The commands in this example specify the backslash (`\`) UNIX operating
+system meta character and the colon (:) option delimiter character in
+the `--property` option of the
+link:create-jdbc-connection-pool.html#create-jdbc-connection-pool-1[`create-jdbc-connection-pool`(1)]
+subcommand.
+
+The name and value pairs for the `--property` option are as follows:
+
+[source]
+----
+user=dbuser
+passwordfile=dbpasswordfile
+DatabaseName=jdbc:derby
+server=http://localhost:9092
+----
+
+For the UNIX operating system in single mode and multimode, and for all
+operating systems in multimode, a backslash (`\`) is required to escape
+the colon (`:`) and the backslash (`\`):
+
+[source]
+----
+asadmin --user admin --passwordfile gfpass create-jdbc-connection-pool
+--datasourceclassname com.derby.jdbc.jdbcDataSource
+--property user=dbuser:passwordfile=dbpasswordfile:
+DatabaseName=jdbc\\:derby:server=http\\://localhost\\:9092 javadb-pool
+----
+
+Alternatively, the entire argument to the `--property` option can be
+enclosed in single quote (') characters:
+
+[source]
+----
+asadmin --user admin --passwordfile gfpass create-jdbc-connection-pool
+--datasourceclassname com.derby.jdbc.jdbcDataSource
+--property 'user=dbuser:passwordfile=dbpasswordfile:
+DatabaseName="jdbc:derby":server="http://localhost:9092"' javadb-pool
+----
+
+For the Windows operating system in single mode, a backslash (`\`) is
+required to escape only the colon (`:`), but not the backslash (`\`):
+
+[source]
+----
+asadmin --user admin --passwordfile gfpass create-jdbc-connection-pool
+--datasourceclassname com.derby.jdbc.jdbcDataSource
+--property user-dbuser:passwordfile-dbpasswordfile:
+DatabaseName=jdbc\:derby:server=http\://localhost\:9092 javadb-pool
+----
+
+For all operating systems, the need to escape the colon (`:`) in a value
+can be avoided by enclosing the value in double quote characters or
+single quote characters:
+
+[source]
+----
+asadmin --user admin --passwordfile gfpass create-jdbc-connection-pool
+--datasourceclassname com.derby.jdbc.jdbcDataSource
+--property user=dbuser:passwordfile=dbpasswordfile:
+DatabaseName=\"jdbc:derby\":server=\"http://localhost:9092\" javadb-pool
+----
+
+[[GSRFM811]][[sthref2376]]
+
+==== Example 8   Specifying an Option Delimiter and an Escape Character in a JVM Option
+
+The commands in this example specify the following characters in the
+`-Dlocation=c:\sun\appserver` JVM machine option:
+
+* The colon (`:`) option delimiter
+* The backslash (`\`) escape character
+
+For the UNIX operating system in single mode and multimode, and for all
+operating systems in multimode, these characters must be specified as follows:
+
+* To pass a literal backslash to a subcommand, two backslashes are
+required. Therefore, the colon (`:`) must be escaped by two backslashes
+(`\\`).
+* To prevent the subcommand from treating the backslash as a special
+character, the backslash must be escaped. As a result, two literal
+backslashes (`\\`) must be passed to the subcommand. To prevent the
+shell from interpreting these backslashes as special characters, each
+backslash must be escaped. Therefore, the backslash must be specified by
+a total of four backslashes (`\\\\`).
+
+The resulting command is as follows:
+
+[source]
+----
+asadmin create-jvm-options --target test-server
+-e -Dlocation=c\\:\\\\sun\\\\appserver
+----
+
+For the Windows operating system in single mode, a backslash (`\`) is
+required to escape the colon (`:`) and the backslash (`\`):
+
+[source]
+----
+asadmin create-jvm-options --target test-server
+-e -Dlocation=c\:\\sun\\appserver
+----
+
+[[GSRFM812]][[sthref2377]]
+
+==== Example 9   Specifying an Option That Contains an Escape Character
+
+The commands in this example specify the backslash (`\`) character and
+the double quote (`"`) characters in the `"Hello\App"\authentication`
+option argument.
+
+For the UNIX operating system in single mode and multimode, and for all
+operating systems in multimode, a backslash (`\`) is required to escape
+the double quote character (`"`) and the backslash (`\`):
+
+[source]
+----
+asadmin set-web-env-entry --name="Hello User" --type=java.lang.String
+--value=techscribe --description=\"Hello\\App\"\\authentication hello
+----
+
+For the Windows operating system in single mode, a backslash (`\`) is
+required to escape only the double quote (`"`), but not the backslash
+(`\`):
+
+[source]
+----
+asadmin set-web-env-entry --name="Hello User" --type=java.lang.String
+--value=techscribe --description=\"Hello\App\"\authentication hello
+----
+
+[[sthref2378]]
+
+=== Environment Variables
+
+Environment variables modify the default values of `asadmin` utility
+options as shown in the following table.
+
+[width="100%",cols="44%,56%",options="header",]
+|===
+|Environment Variable |`asadmin` Utility Option
+|`AS_ADMIN_TERSE` |`--terse`
+|`AS_ADMIN_ECHO` |`--echo`
+|`AS_ADMIN_INTERACTIVE` |`--interactive`
+|`AS_ADMIN_HOST` |`--host`
+|`AS_ADMIN_PORT` |`--port`
+|`AS_ADMIN_SECURE` |`--secure`
+|`AS_ADMIN_USER` |`--user`
+|`AS_ADMIN_PASSWORDFILE` |`--passwordfile`
+|`AS_ADMIN_HELP` |`--help`
+|===
+
+
+[[sthref2379]]
+
+=== Attributes
+
+See
+http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN5attributes-5[`attributes`(5)]
+for descriptions of the following attributes:
+
+[width="100%",cols="50%,50%",options="header",]
+|===
+|ATTRIBUTE TYPE |ATTRIBUTE VALUE
+|Interface Stability |Unstable
+|===
+
+
+[[sthref2380]]
+
+=== See Also
+
+link:attach.html#attach-1[`attach`(1)],
+link:configure-jms-cluster.html#configure-jms-cluster-1[`configure-jms-cluster`(1)],
+link:configure-managed-jobs.html#configure-managed-jobs-1[`configure-managed-jobs`(1)],
+link:create-connector-security-map.html#create-connector-security-map-1[`create-connector-security-map`(1)],
+link:create-file-user.html#create-file-user-1[`create-file-user`(1)],
+link:create-jdbc-connection-pool.html#create-jdbc-connection-pool-1[`create-jdbc-connection-pool`(1)],
+link:create-jvm-options.html#create-jvm-options-1[`create-jvm-options`(1)],
+link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
+link:create-node-ssh.html#create-node-ssh-1[`create-node-ssh`(1)],
+link:create-password-alias.html#create-password-alias-1[`create-password-alias`(1)],
+link:deploy.html#deploy-1[`deploy`(1)],
+link:install-node.html#install-node-1[`install-node`(1)],
+link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)],
+link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)],
+link:list-applications.html#list-applications-1[`list-applications`(1)],
+link:list-commands.html#list-commands-1[`list-commands`(1)],
+link:list-jobs.html#list-jobs-1[`list-jobs`(1)],
+link:login.html#login-1[`login`(1)],
+link:restart-domain.html#restart-domain-1[`restart-domain`(1)],
+link:set.html#set-1[`set`(1)],
+link:set-web-env-entry.html#set-web-env-entry-1[`set-web-env-entry`(1)],
+link:start-domain.html#start-domain-1[`start-domain`(1)],
+link:update-file-user.html#update-file-user-1[`update-file-user`(1)],
+link:update-node-ssh.html#update-node-dcom-1[`update-node-dcom`(1)],
+link:update-node-ssh001.html#update-node-ssh-1[`update-node-ssh`(1)]
+
+http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN5attributes-5[`attributes`(5)]
+
+'''''
+
+
+Footnote Legend
+
+Footnote 1: The terms "Java Virtual Machine" and "JVM" mean a Virtual
+Machine for the Java platform.
++
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/attach.adoc b/docs/reference-manual/src/main/asciidoc/attach.adoc
new file mode 100644
index 0000000..21f2694
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/attach.adoc
@@ -0,0 +1,101 @@
+type=page
+status=published
+title=attach
+next=backup-domain.html
+prev=apply-http-lb-changes.html
+~~~~~~
+
+= attach
+
+[[attach-1]][[GSRFM825]][[attach]]
+
+== attach
+
+Attaches to subcommands that were started using `asadmin --detach` or
+that contain progress information
+
+[[sthref32]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] attach [--help]
+job_id
+----
+
+[[sthref33]]
+
+=== Description
+
+The `attach` subcommand attaches to subcommands that were started using
+the `asadmin` utility option `--detach` or that contain progress
+information. The `--detach` option detaches long-running subcommands and
+executes them in the background in detach mode.
+
+Job IDs are assigned to the subcommands (jobs), and can be used to view
+the status of a job and its output. Use the
+link:list-jobs.html#list-jobs-1[`list-jobs`(1)] subcommand to view the
+jobs and their job IDs, and the
+link:configure-managed-jobs.html#configure-managed-jobs-1[`configure-managed-jobs`(1)]
+subcommand to configure how long information about the jobs is kept.
+
+This subcommand is supported in remote mode only.
+
+[[sthref34]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref35]]
+
+=== Operands
+
+job_id::
+  The ID of the job for which you want to view status and output.
+
+[[sthref36]]
+
+=== Examples
+
+[[GSRFM826]][[CBHDFEGB]]
+
+==== Example 1   Attaching to a Subcommand and Checking Its Status
+
+This example attaches to the `deploy` subcommand with a job ID of `20`
+and shows that the job is finished. If a subcommand is still in
+progress, the output displays the current status, for example,
+`64%: Uploading bits`.
+
+[source]
+----
+asadmin> attach 20
+Finished execution of deploy
+Command attach executed successfully.
+----
+
+[[sthref37]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref38]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:configure-managed-jobs.html#configure-managed-jobs-1[`configure-managed-jobs`(1)],
+link:list-jobs.html#list-jobs-1[`list-jobs`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/backup-domain.adoc b/docs/reference-manual/src/main/asciidoc/backup-domain.adoc
new file mode 100644
index 0000000..375bb10
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/backup-domain.adoc
@@ -0,0 +1,110 @@
+type=page
+status=published
+title=backup-domain
+next=change-admin-password.html
+prev=attach.html
+~~~~~~
+
+= backup-domain
+
+[[backup-domain-1]][[GSRFM00003]][[backup-domain]]
+
+== backup-domain
+
+Performs a backup on the domain
+
+[[sthref39]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] backup-domain [--help]
+[--long[={false|true}]]
+[--description description-text]
+[--domaindir domain-root-dir]
+[--backupdir backup-directory]
+[--backupconfig backup-config-name]
+[domain_name]
+----
+
+[[sthref40]]
+
+=== Description
+
+The `backup-domain` subcommand backs up files under the named domain.
+
+This subcommand is supported in local mode only in {productName}, and is supported in local mode and remote mode in {productName}.
+
+In {productName}, the domain to be backed up must
+be stopped.
+
+In {productName}, the domain to be backed up must be stopped
+or be suspended using the `suspend-domain`(1) subcommand.
+
+[[sthref41]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--long`::
+`-l`::
+  Displays detailed information about the backup operation.
++
+  The default value is `false`.
+`--description`::
+  Specifies a description to store in the backup file. The description
+  is displayed as part of the information about a backup file. +
+  The default value has this form:
++
+[source]
+----
+domain-name backup created on YYYY_MM_DD by user user-name
+----
+`--domaindir`::
+  Specifies the domain root directory, the parent directory of the
+  domain to back up. +
+  The default value is as-install``/domains``.
+`--backupdir`::
+  Specifies the directory under which the backup file is to be stored. +
+  The default value is as-install``/domains/``domain-dir``/backups``.
+  If the domain is not in the default location, the location is
+  domain-dir``/backups``.
+`--backupconfig`::
+  (Supported only in {productName}.) The name of the domain
+  backup configuration in the backup directory under which the backup
+  file is to be stored.
+
+[[sthref42]]
+
+=== Operands
+
+domain-name::
+  Specifies the name of the domain to be backed up. +
+  This operand is optional if only one domain exists in the {productName} installation.
+
+[[sthref43]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref44]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:list-backups.html#list-backups-1[`list-backups`(1)],
+link:restore-domain.html#restore-domain-1[`restore-domain`(1)],
+`resume-domain`(1), `suspend-domain`(1)
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/capture-schema.adoc b/docs/reference-manual/src/main/asciidoc/capture-schema.adoc
new file mode 100644
index 0000000..2e86d21
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/capture-schema.adoc
@@ -0,0 +1,103 @@
+type=page
+status=published
+title=capture-schema
+next=package-appclient.html
+prev=asadmin.html
+~~~~~~
+
+= capture-schema
+
+[[capture-schema-1m]][[GSRFM00821]][[capture-schema]]
+
+== capture-schema
+
+Stores the database metadata (schema) in a file for use in mapping and execution
+
+[[sthref2381]]
+
+=== Synopsis
+
+[source]
+----
+capture-schema -username name -password password
+[-dburl url] [-driver jdbc_driver_classname]
+[-schemaname schemaname] [-table tablename]
+-out filename]
+----
+
+[[sthref2382]]
+
+=== Description
+
+Stores the database metadata (schema) in a file.
+
+Run `capture-schema` as the same database user that owns the table(s),
+and use that same username with the `-username` option (and
+`-schemaname`, if required).
+
+When running `capture-schema` against an Oracle database, you should
+grant the database user running the `capture-schema` command the
+`ANALYZE ANY TABLE` privilege.
+
+[[sthref2383]]
+
+=== Options
+
+`-username`::
+  user name for authenticating access to a database.
+`-password`::
+  password for accessing the selected database.
+`-dburl`::
+  JDBC URL required by the driver for accessing a database.
+`-driver`::
+  JDBC driver classname in your `CLASSPATH`.
+`-schemaname`::
+  name of the user schema being captured. If not specified, the default
+  will capture metadata for all tables from all the schemas accessible
+  to this user. +
+  Specifying this parameter is highly recommended. Without this option,
+  if more than one schema is accessible to this user, more than one
+  table with the same name may be captured, which will cause problems
+  when mapping CMP fields to tables. +
+  The specified schema name must be uppercase.
+`-table`::
+  name of a table; multiple table names can be specified. If no table is
+  specified, all the tables in the database or named schema are captured. +
+  The specified table name or names are case sensitive. Be sure to match
+  the case of the previously created table names.
+`-out`::
+  name of the output file. This option is required. If the specified
+  output file does not contain the .dbschema suffix, it will be appended
+  to the filename.
+
+[[sthref2384]]
+
+=== Examples
+
+[[GSRFM813]][[sthref2385]]
+
+==== Example 1   Using the `capture-schema` command
+
+[source]
+----
+capture-schema -username cantiflas -password enigma
+-dburl jdbc:oracle:thin:@sadbuttrue:1521:ora817
+-driver oracle.jdbc.driver.OracleDriver
+-schemaname CANTIFLAS -out cantiflas.dbschema
+----
+
+Where: `sun-acc.xml` is the name of the client configuration XML file,
+`myclientapp.jar` is the client application `.jar` file, and `scott` and
+`sample` are arguments to pass to the application. If `sun-acc.xml` and
+`myclientapp.jar` are not in the current directory, you must give the
+absolute path locations; otherwise the relative paths are used. The
+relative path is relative to the directory where the command is being
+executed.
+
+[[sthref2386]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/change-admin-password.adoc b/docs/reference-manual/src/main/asciidoc/change-admin-password.adoc
new file mode 100644
index 0000000..7354e61
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/change-admin-password.adoc
@@ -0,0 +1,133 @@
+type=page
+status=published
+title=change-admin-password
+next=change-master-broker.html
+prev=backup-domain.html
+~~~~~~
+
+= change-admin-password
+
+[[change-admin-password-1]][[GSRFM00004]][[change-admin-password]]
+
+== change-admin-password
+
+Changes the administrator password
+
+[[sthref45]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] change-admin-password [--help]
+[--domaindir domain-root-dir [--domain_name domain-name]]
+----
+
+[[sthref46]]
+
+=== Description
+
+The `change-admin-password` subcommand modifies the administrator
+password. The `change-admin-password` subcommand is interactive because
+the subcommand prompts the user for the old administrator password, for
+the new administrator password, and for confirmation of the new
+administrator password. The new password must contain at least 8
+characters.
+
+If the only user is an anonymous user without a password, this
+subcommand fails.
+
+If a blank password is provided, this subcommand fails if secure
+administration is enabled.
+
+For security purposes, create a password-protected user account with
+administrator privileges. To create this account, use the
+link:create-file-user.html#create-file-user-1[`create-file-user`(1)] or
+the Administration Console. After creating this user account, remove the
+anonymous user to restrict access to {productName} settings.
+
+If more than one administrator is configured for {productName}, you
+must run the `asadmin` command with the `--user` option to change the
+password for that user. For more information, see the examples in this
+help page.
+
+This subcommand is supported in local mode and remote mode. If the
+`--domaindir` or `--domain_name` option is specified, the
+`change-admin-password` subcommand operates in local mode. If neither
+option is specified, the `change-admin-password` subcommand first
+attempts to operate in remote mode. If neither option is specified and
+the DAS is not running, the `change-admin-password` subcommand operates
+in local mode, using the default values for the `--domaindir` and
+`--domain_name` options.
+
+[[sthref47]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--domaindir`::
+  Specifies the parent directory of the domain specified in the
+  `--domain_name` option. When this option is used, the
+  `change-admin-password` subcommand operates in local mode.
+`--domain_name`::
+  Specifies the domain of the admin user. +
+  This option is not required if the directory specified by the
+  `--domaindir` option contains only one domain.
+
+[[sthref48]]
+
+=== Examples
+
+[[GSRFM447]][[sthref49]]
+
+==== Example 1   Changing the Administrator Password For a Single User in Multimode
+
+[source]
+----
+asadmin --user admin
+asadmin> change-admin-password
+Please enter the old admin password>
+Please enter the new admin password>
+Please enter the new admin password again>
+Command change-admin-password executed successfully.
+----
+
+[[GSRFM448]][[sthref50]]
+
+==== Example 2   Changing the Administrator Password For a Single User in Single Mode
+
+[source]
+----
+asadmin --user admin change-admin-password
+Please enter the old admin password>
+Please enter the new admin password>
+Please enter the new admin password again>
+Command change-admin-password executed successfully.
+----
+
+[[sthref51]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  command failed
+
+[[sthref52]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-file-user.html#create-file-user-1[`create-file-user`(1)],
+link:delete-password-alias.html#delete-password-alias-1[`delete-password-alias`(1)],
+link:list-password-aliases.html#list-password-aliases-1[`list-password-aliases`(1)],
+link:update-password-alias.html#update-password-alias-1[`update-password-alias`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/change-master-broker.adoc b/docs/reference-manual/src/main/asciidoc/change-master-broker.adoc
new file mode 100644
index 0000000..11bd4b3
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/change-master-broker.adoc
@@ -0,0 +1,91 @@
+type=page
+status=published
+title=change-master-broker
+next=change-master-password.html
+prev=change-admin-password.html
+~~~~~~
+
+= change-master-broker
+
+[[change-master-broker-1]][[GSRFM00005]][[change-master-broker]]
+
+== change-master-broker
+
+Changes the master broker in a Message Queue cluster providing JMS
+services for a {productName} cluster.
+
+[[sthref53]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] change-master-broker [--help]
+clustered-instance-name
+----
+
+[[sthref54]]
+
+=== Description
+
+The `change-master-broker` subcommand changes the master broker in a
+Message Queue cluster that is the JMS provider for a {productName}
+cluster. By default, the master broker is the one associated with the
+first instance configured in the {productName} cluster.
+
+This subcommand is supported in remote mode only. Remote `asadmin`
+subcommands require a running domain administration server (DAS).
+
+[[sthref55]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref56]]
+
+=== Operands
+
+clustered-instance-name::
+  The name of the server instance whose Message Queue broker is to
+  become the master broker of the Message Queue cluster. This server
+  instance must be an instance in a {productName} cluster.
+
+[[sthref57]]
+
+=== Examples
+
+[[GSRFM449]][[sthref58]]
+
+==== Example 1   Changing the master broker
+
+The following subcommand changes the Message Queue master broker to the
+one for the `clustinst3` clustered instance.
+
+[source]
+----
+asadmin> change-master-broker clustinst3
+Command change-master-broker executed successfully.
+----
+
+[[sthref59]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref60]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/change-master-password.adoc b/docs/reference-manual/src/main/asciidoc/change-master-password.adoc
new file mode 100644
index 0000000..f45cb97
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/change-master-password.adoc
@@ -0,0 +1,121 @@
+type=page
+status=published
+title=change-master-password
+next=collect-log-files.html
+prev=change-master-broker.html
+~~~~~~
+
+= change-master-password
+
+[[change-master-password-1]][[GSRFM00006]][[change-master-password]]
+
+== change-master-password
+
+Changes the master password
+
+[[sthref61]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] change-master-password [--help]
+[--nodedir node-dir] [--domaindir domain-dir]
+[--savemasterpassword={false|true}] [domain-name|node-name]
+----
+
+[[sthref62]]
+
+=== Description
+
+The `change-master-password` subcommand is used to modify the master
+password. The `change-master-password` subcommand is interactive in that
+the user is prompted for the old master password, as well as the new
+master password. This subcommand will not work unless the server is
+stopped. In a distributed environment, this command must run on each
+machine in the domain.
+
+[[sthref63]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--nodedir`::
+  The name of the directory containing the node instance for which the
+  password will be changed. If this option is omitted, the change is
+  applied to the entire domain.
+`--domaindir`::
+  The name of the domain directory used for this operation. By default,
+  the `--domaindir` option is `$AS_DEF_DOMAINS_PATH`, which is an
+  environment variable defined in the file `asenv.bat` or `asenv.conf`.
+`--savemasterpassword`::
+  This option indicates whether the master password should be written to
+  the file system. This is necessary so that the
+  link:start-domain.html#start-domain-1[`start-domain`(1)] command can
+  start the server without having to prompt the user. +
+  The default is `false`.
++
+[CAUTION]
+====
+Saving the master password on disk is extremely insecure and should be avoided.
+====
++
+[NOTE]
+====
+If the `--savemasterpassword` option is not set, the master password
+file, if it exists, will be deleted.
+====
+
+[[sthref64]]
+
+=== Operands
+
+domain-name|node-name::
+  This name of the domain or node for which the password will be
+  changed. If there is only a single domain, this is optional.
+
+[[sthref65]]
+
+=== Examples
+
+[[GSRFM450]][[sthref66]]
+
+==== Example 1   Changing the Master Password
+
+This example shows how to changed the master password for the
+`domain44ps` domain.
+
+[source]
+----
+asadmin>change-master-password domain44ps
+Please enter the new master password>
+Please enter the new master password again>
+Master password changed for domain44ps
+----
+
+[[sthref67]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref68]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-password-alias.html#delete-password-alias-1[`delete-password-alias`(1)],
+link:list-password-aliases.html#list-password-aliases-1[`list-password-aliases`(1)],
+link:start-domain.html#start-domain-1[`start-domain`(1)],
+link:update-password-alias.html#update-password-alias-1[`update-password-alias`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/collect-log-files.adoc b/docs/reference-manual/src/main/asciidoc/collect-log-files.adoc
new file mode 100644
index 0000000..bce18ec
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/collect-log-files.adoc
@@ -0,0 +1,168 @@
+type=page
+status=published
+title=collect-log-files
+next=configure-jms-cluster.html
+prev=change-master-password.html
+~~~~~~
+
+= collect-log-files
+
+[[collect-log-files-1]][[GSRFM00007]][[collect-log-files]]
+
+== collect-log-files
+
+Creates a ZIP archive of all available log files
+
+[[sthref69]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] collect-log-files [--help]
+[--target target]
+[--retrieve={false|true}] [retrievefilepath]]
+----
+
+[[sthref70]]
+
+=== Description
+
+The `collect-log-files` subcommand collects all available log files for
+the domain administration server (DAS), the specified cluster, or the
+specified {productName} instance and creates a single ZIP archive of
+the log files. If a cluster is specified, the ZIP archive also contains
+the log file for the DAS.
+
+This subcommand is supported in remote mode only.
+
+[[sthref71]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--retrieve`::
+  Specifies whether the ZIP archive is created in a directory other than
+  the default directory. +
+  By default the ZIP archive is created in the
+  domain-dir`/collected-logs` directory. The ZIP file names are
+  constructed from the specified target and timestamp, as follows:
++
+[source]
+----
+log_yyyy-mm-dd_hh-min-sec.zip
+----
++
+Possible values are as follows:
++
+  `false`;;
+    The ZIP archive will be created in the default directory. If
+    omitted, the `--retrieve` option defaults to `false`.
+  `true`;;
+    The ZIP archive will be created in the directory that the
+    retrievefilepath operand specifies. If retrievefilepath is omitted,
+    the ZIP archive will be created in the default directory.
+`--target`::
+  Specifies the target for which log files will be collected. +
+  Possible values are as follows:
+
+  `server`;;
+    The log files will be collected for the DAS (default).
+  instance-name;;
+    The log files will be collected for the specified {productName} instance.
+  cluster-name;;
+    The log files will be collected for the specified cluster and the DAS.
+
+[[sthref72]]
+
+=== Operands
+
+retrievefilepath::
+  The name of the directory in which the ZIP archive will be created. If
+  this operand is omitted, the ZIP archive will be created in the
+  default directory. If the `--retrieve` option is `false`, this operand
+  is ignored.
+
+[[sthref73]]
+
+=== Examples
+
+[[GSRFM451]][[sthref74]]
+
+==== Example 1   Collecting Log Files for the Default Server
+
+This example generates a ZIP archive from the log files for the default
+server.
+
+[source]
+----
+asadmin> collect-log-files
+Created Zip file under /space/gf/glassfish7/glassfish/domains/domain1/\
+collected-logs/log_2021-12-15_15-46-23.zip.
+Command collect-log-files executed successfully.
+----
+
+[[GSRFM452]][[sthref75]]
+
+==== Example 2   Collecting Log Files for a Cluster
+
+This example generates a ZIP archive from the log files for a cluster
+named `cluster1` and the two server instances running in the cluster.
+
+[source]
+----
+asadmin> collect-log-files --target cluster1
+Log files are downloaded for instance1.
+Log files are downloaded for instance2.
+Created Zip file under /space/gfv/glassfish7/glassfish/domains/domain1/\
+collected-logs/log_2021-12-15_15-54-06.zip.
+Command collect-log-files executed successfully.
+----
+
+[[GSRFM453]][[sthref76]]
+
+==== Example 3   Collecting Log Files in a Directory Other Than the Default
+for a Cluster
+
+This example generates a ZIP archive from the log files for a cluster
+named `cluster1` and its two server instances, and saves the archive in
+a directory named `/space/output`.
+
+[source]
+----
+asadmin> collect-log-files --target cluster1 --retrieve true /space/output
+Log files are downloaded for instance1.
+Log files are downloaded for instance2.
+Created Zip file under /space/output/log_2010-12-15_15-55-54.zip.
+Command collect-log-files executed successfully.
+----
+
+[[sthref77]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref78]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:list-log-attributes.html#list-log-attributes-1[`list-log-attributes`(1)],
+link:list-log-levels.html#list-log-levels-1[`list-log-levels`(1)],
+link:rotate-log.html#rotate-log-1[`rotate-log`(1)],
+link:set-log-attributes.html#set-log-attributes-1[`set-log-attributes`(1)],
+link:set-log-levels.html#set-log-levels-1[`set-log-levels`(1)]
+
+"link:administration-guide/logging.html#GSADG00010[Administering the Logging Service]" in {productName} Administration Guide
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/configuration.adoc b/docs/reference-manual/src/main/asciidoc/configuration.adoc
new file mode 100644
index 0000000..754d4a2
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/configuration.adoc
@@ -0,0 +1,60 @@
+type=page
+status=published
+title=configuration
+next=domain.html
+prev=application.html
+~~~~~~
+
+= configuration
+
+[[configuration-5asc]][[GSRFM00266]][[configuration]]
+
+== configuration
+
+The data set that determines how {productName} operates
+
+[[sthref2394]]
+
+=== Description
+
+The configuration of {productName} is the data set that determines
+how it operates. Parts of this configuration determine the operation of
+specific parts of {productName}, such as the following:
+
+* Services, such as the transaction service
+* Resources, such as databases
+* Deployed applications or modules, such as web applications
+* Clusters and server instances
+
+The term configuration is also used to describe a part of the overall
+configuration, such as the transaction service configuration or the
+configuration of a database. In clustered environments, clusters or
+server instances can share configurations.
+
+Examples of configuration data are port numbers, flags that enable or
+disable processes, application names, and so on. Most of these data
+points are name/value pairs, either hard-coded attributes or more
+flexibly defined properties.
+
+The hierarchical structure of the configuration is explained in the
+dotted names page. You can view and change most of the {productName}
+configuration using either the Administration Console or the `asadmin`
+utility and its subcommands. To list the structure of all or part of the
+configuration, use the `list` subcommand. To view the value of one or
+more attributes or properties, use the `get` subcommand. To change the
+value of an attribute or property, use the `set` subcommand.
+
+[[sthref2395]]
+
+=== See Also
+
+link:get.html#get-1[`get`(1)], link:list.html#list-1[`list`(1)],
+link:set.html#set-1[`set`(1)]
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:dotted-names.html#dotted-names-5asc[`dotted-names`(5ASC)]
+
+"link:administration-guide/overview.html#GSADG00527[Configuration Tasks]" in {productName} Administration Guide
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/configure-jms-cluster.adoc b/docs/reference-manual/src/main/asciidoc/configure-jms-cluster.adoc
new file mode 100644
index 0000000..4a4b65a
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/configure-jms-cluster.adoc
@@ -0,0 +1,149 @@
+type=page
+status=published
+title=configure-jms-cluster
+next=configure-lb-weight.html
+prev=collect-log-files.html
+~~~~~~
+
+= configure-jms-cluster
+
+[[configure-jms-cluster-1]][[GSRFM00008]][[configure-jms-cluster]]
+
+== configure-jms-cluster
+
+Configures the Message Queue cluster providing JMS services to a
+{productName} cluster
+
+[[sthref79]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] configure-jms-cluster [--help]
+[--clustertype={conventional|enhanced}]
+[--configstoretype={masterbroker|shareddb}]
+[--messagestoretype={file|jdbc}]
+[--dbvendor database-vendor]
+[--dbuser database-user]
+[--dburl database-url]
+[--property (name=value)[:name=value]*]
+cluster-name
+----
+
+[[sthref80]]
+
+=== Description
+
+The `configure-jms-cluster` configures the Message Queue cluster
+providing JMS services to a {productName} cluster.
+
+This subcommand should be used before the {productName} cluster is
+started for the first time. Otherwise, follow the instructions in
+"link:administration-guide/jms.html#GSADG00020[Administering the Java Message Service (JMS)]" in
+{productName} Administration Guide.
+
+This subcommand is supported in remote mode only. Remote `asadmin`
+subcommands require a running domain administration server (DAS).
+
+[[sthref81]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--clustertype`::
+  The type of Message Queue cluster to configure. The value
+  `conventional` specifies a conventional cluster, and the value
+  `enhanced` specifies an enhanced, high-availability cluster. For
+  information about these cluster types of Message Queue clusters, see
+  "link:../openmq/mq-tech-over/broker-clusters.html#GMTOV00028[Broker Clusters]"
+  in Open Message Queue Technical Overview. +
+  The default value is `conventional`. +
+  If `enhanced` is specified, the `configstoretype` and
+  `messagestoretype` options are ignored.
+`--configstoretype`::
+  The type of data store for configuration data in a conventional
+  cluster. The value `masterbroker` specifies the use of a master broker
+  to store and manage the configuration data. The value `shareddb`
+  specifies the use of a shared database to store the configuration
+  data. +
+  The default value is `masterbroker`. +
+  This option is ignored if `clustertype` is set to `enhanced`.
+`--messagestoretype`::
+  The type of data store for message data in brokers in a conventional
+  cluster. The value `file` specifies a file store. The value `jdbc`
+  specifies a JDBC store. +
+  The default value is `file`. +
+  This option is ignored if `clustertype` is set to `enhanced`.
+`--dbvendor`::
+`--dbuser`::
+`--dburl`::
+  The database vendor, user, and access url of the JDBC database to use
+  in any of these situations:
++
+--
+  * When `clustertype` is set to `enhanced`
+  * When `configstoretype` is set to `shareddb`
+  * When `messagestoretype` is set to `jdbc`
+--
+  For information about supported vendors and the formats of access urls
+  for each vendor, see "link:../openmq/mq-admin-guide/persistence-services.html#GMADG00244[JDBC-Based Persistence]" in
+  Open Message Queue Administration Guide.
++
+[NOTE]
+====
+To specify the password of the JDBC database user, use the `--passwordfile` utility option
+of the link:asadmin.html#asadmin-1m[`asadmin`(1M)] command after adding the entry
+`AS_ADMIN_JMSDBPASSWORD` to the password file.
+====
+
+`--property`::
+  A list of additional database-vendor-specific properties to configure
+  the JDBC database for use by the Message Queue cluster. Specify
+  properties as a colon (`:`) separated list of property names and
+  values in the form:
++
+[source]
+----
+prop1name=prop1value:prop2name=prop2value
+----
+
+[[sthref82]]
+
+=== Operands
+
+cluster-name::
+  The name of the {productName} cluster for which the Message Queue
+  cluster is to provide JMS services. +
+  Because {productName} uses the cluster name to uniquely identify
+  database tables the Message Queue cluster might require, the length of
+  the name is restricted in the following situations:
+
+  * If `clustertype` is set to `enhanced`, the name can be no longer
+  than n–21 characters, where n is the maximum table name length allowed
+  by the database.
+  * If `configstoretype` is set to `shareddb`, the name can be no longer
+  than n–19 characters, where n is the maximum table name length allowed
+  by the database.
+
+[[sthref83]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref84]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/configure-lb-weight.adoc b/docs/reference-manual/src/main/asciidoc/configure-lb-weight.adoc
new file mode 100644
index 0000000..9c62b50
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/configure-lb-weight.adoc
@@ -0,0 +1,111 @@
+type=page
+status=published
+title=configure-lb-weight
+next=configure-ldap-for-admin.html
+prev=configure-jms-cluster.html
+~~~~~~
+
+= configure-lb-weight
+
+[[configure-lb-weight-1]][[GSRFM00009]][[configure-lb-weight]]
+
+== configure-lb-weight
+
+Sets load balancing weights for clustered instances
+
+[[sthref85]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] configure-lb-weight [--help]
+--cluster cluster_name
+instance-name=weight[:instance-name=weight]
+----
+
+[[sthref86]]
+
+=== Description
+
+The `configure-lb-weight` subcommand assigns weight to the server
+instances in a cluster. Weights can be used for HTTP, RMI/IIOP and JMS
+load balancing. For the HTTP load balancer, the weights are used only if
+the load balancer's policy is set to `weighted-round-robin`. The load
+balancer policy is set in the `create-http-lb-ref` subcommand or `set`
+subcommand.
+
+Use the weight to vary the load going to different instances in the
+cluster. For example, if an instance is on a machine with more capacity,
+give it a higher weight so that more requests are sent to that instance
+by the load balancer. The default weight is 100. If all instances have
+the default weight, the load balancer performs simple round robin load
+balancing.
+
+
+[NOTE]
+====
+This subcommand is only applicable to {productName}. This
+subcommand is not applicable to {productName}.
+====
+
+
+[[sthref87]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--cluster`::
+  The name of the cluster.
+
+[[sthref88]]
+
+=== Operands
+
+instance-name=weight::
+  The name of the instance and the weight you are assigning it. The
+  weight must be an integer. The pairs of instances and weights are
+  separated by colons. For example `instance1=1:instance2=4` means that
+  for every five requests, one goes to instance1 and four go to
+  instance2. A weight of 1 is the default.
+
+[[sthref89]]
+
+=== Examples
+
+[[GSRFM454]][[sthref90]]
+
+==== Example 1   Assigning Load Balancer Weights to Cluster Instances
+
+The following subcommand assigns weights of `1`, `1`, and `2` to
+instances `i1`, `i2`, and `i3` in the `cluster1` cluster.
+
+[source]
+----
+asadmin> configure-lb-weight --cluster cluster1 i1=1:i2=1:i3=2
+Command configure-lb-weight executed successfully.
+----
+
+[[sthref91]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref92]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-http-lb-ref.html#create-http-lb-ref-1[`create-http-lb-ref`(1)]link:create-cluster.html#create-cluster-1[`create-cluster`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/configure-ldap-for-admin.adoc b/docs/reference-manual/src/main/asciidoc/configure-ldap-for-admin.adoc
new file mode 100644
index 0000000..6204cc0
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/configure-ldap-for-admin.adoc
@@ -0,0 +1,83 @@
+type=page
+status=published
+title=configure-ldap-for-admin
+next=configure-managed-jobs.html
+prev=configure-lb-weight.html
+~~~~~~
+
+= configure-ldap-for-admin
+
+[[configure-ldap-for-admin-1]][[GSRFM00010]][[configure-ldap-for-admin]]
+
+== configure-ldap-for-admin
+
+Configures the authentication realm named admin-realm for the given LDAP
+
+[[sthref93]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] configure-ldap-for-admin [--help]
+----
+
+[[sthref94]]
+
+=== Description
+
+The `configure-ldap-for-admin` subcommand configures the authentication
+realm named `admin-realm` for the given LDAP. The
+`configure-ldap-for-admin` subcommand is interactive. The subcommand
+prompts the user for the `basedn` and `ldap-group` options.
+
+This command is supported in remote mode only.
+
+[[sthref95]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref96]]
+
+=== Examples
+
+[[GSRFM455]][[sthref97]]
+
+==== Example 1    Configuring the LDAP Authentication Realm
+
+[source]
+----
+asadmin> configure-ldap-for-admin
+Enter the value for the basedn option>
+Enter the value for the ldap-group option>
+The LDAP Auth Realm admin-realm was configured correctly
+in admin server's configuration.
+----
+
+[[sthref98]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref99]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:change-admin-password.html#change-admin-password-1[`change-admin-password`(1)],
+link:create-auth-realm.html#create-auth-realm-1[`create-auth-realm`(1)]link:create-auth-realm.html#create-auth-realm-1[`create-auth-realm`(1)],
+link:list-auth-realms.html#list-auth-realms-1[`list-auth-realms`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/configure-managed-jobs.adoc b/docs/reference-manual/src/main/asciidoc/configure-managed-jobs.adoc
new file mode 100644
index 0000000..c4397b4
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/configure-managed-jobs.adoc
@@ -0,0 +1,99 @@
+type=page
+status=published
+title=configure-managed-jobs
+next=copy-config.html
+prev=configure-ldap-for-admin.html
+~~~~~~
+
+= configure-managed-jobs
+
+[[configure-managed-jobs-1]][[GSRFM836]][[configure-managed-jobs]]
+
+== configure-managed-jobs
+
+Configures how long information about subcommands that were started
+using `asadmin --detach` or that contain progress information is kept
+
+[[sthref100]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] configure-managed-jobs [--help]
+[--in-memory-retention-period in-memory-retention-period]
+[--job-retention-period job-retention-period]
+[--cleanup-initial-delay cleanup-initial-delay]
+[--cleanup-poll-interval cleanup-poll-interval]
+----
+
+[[sthref101]]
+
+=== Description
+
+The `configure-managed-jobs` subcommand configures how long information
+about subcommands (jobs) that were started using the `asadmin` utility
+option `--detach` or that contain progress information is kept. The
+`--detach` option detaches long-running subcommands and executes them in
+the background in detach mode. Job information includes subcommand
+progress and status.
+
+This subcommand is supported in remote mode only.
+
+[[sthref102]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--in-memory-retention-period`::
+  Specifies how long a completed job is kept in memory after the job is
+  finished. The default value is 1 hour.
+`--job-retention-period`::
+  Specifies how long a job is stored. The default value is 24 hours.
+`--cleanup-initial-delay`::
+  After server startup, specifies the initial delay after which the
+  cleanup service starts purging jobs. The default value is 5 minutes.
+`--cleanup-poll-interval`::
+  Specifies the time interval after which the cleanup service polls for
+  expired jobs. The default value is 20 minutes.
+
+[[sthref103]]
+
+=== Examples
+
+[[GSRFM837]][[sthref104]]
+
+==== Example 1   Configuring the Job Retention Period
+
+This example sets the job retention period to 36 hours. Time periods can
+be specified in Hh|Mm|Ss for hours, minutes, or seconds.
+
+[source]
+----
+asadmin> configure-managed-jobs --job-retention-period=36h
+Command configure-managed-jobs executed successfully.
+----
+
+[[sthref105]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref106]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:list-jobs.html#list-jobs-1[`list-jobs`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/copy-config.adoc b/docs/reference-manual/src/main/asciidoc/copy-config.adoc
new file mode 100644
index 0000000..f68f052
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/copy-config.adoc
@@ -0,0 +1,178 @@
+type=page
+status=published
+title=copy-config
+next=create-admin-object.html
+prev=configure-managed-jobs.html
+~~~~~~
+
+= copy-config
+
+[[copy-config-1]][[GSRFM00011]][[copy-config]]
+
+== copy-config
+
+Copies an existing named configuration to create another configuration
+
+[[sthref107]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] copy-config [--help]
+[--systemproperties (name=value)[:name=value]*]
+source-configuration-name destination-configuration-name
+----
+
+[[sthref108]]
+
+=== Description
+
+The `copy-config` subcommand creates a named configuration in the
+configuration of the domain administration server (DAS) by copying an
+existing configuration. The new configuration is identical to the copied
+configuration, except for any properties that you specify in the
+`--systemproperties` option.
+
+The `default-config` configuration is copied when a standalone sever
+instance or standalone cluster is created.
+
+This subcommand is supported in remote mode only.
+
+[[sthref109]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--systemproperties`::
+  Optional attribute name-value pairs for the configuration. These
+  properties override port settings in the configuration.
++
+  The following properties are available:
++
+  `ASADMIN_LISTENER_PORT`;;
+    This property specifies the port number of the HTTP port or HTTPS
+    port through which the DAS connects to the instance to manage the
+    instance. Valid values are 1-65535. On UNIX, creating sockets that
+    listen on ports 1-1024 requires superuser privileges.
+  `HTTP_LISTENER_PORT`;;
+    This property specifies the port number of the port that is used to
+    listen for HTTP requests. Valid values are 1-65535. On UNIX,
+    creating sockets that listen on ports 1-1024 requires superuser
+    privileges.
+  `HTTP_SSL_LISTENER_PORT`;;
+    This property specifies the port number of the port that is used to
+    listen for HTTPS requests. Valid values are 1-65535. On UNIX,
+    creating sockets that listen on ports 1-1024 requires superuser
+    privileges.
+  `IIOP_LISTENER_PORT`;;
+    This property specifies the port number of the port that is used for
+    IIOP connections. Valid values are 1-65535. On UNIX, creating
+    sockets that listen on ports 1-1024 requires superuser privileges.
+  `IIOP_SSL_LISTENER_PORT`;;
+    This property specifies the port number of the port that is used for
+    secure IIOP connections. Valid values are 1-65535. On UNIX, creating
+    sockets that listen on ports 1-1024 requires superuser privileges.
+  `IIOP_SSL_MUTUALAUTH_PORT`;;
+    This property specifies the port number of the port that is used for
+    secure IIOP connections with client authentication. Valid values are
+    1-65535. On UNIX, creating sockets that listen on ports 1-1024
+    requires superuser privileges.
+  `JAVA_DEBUGGER_PORT`;;
+    This property specifies the port number of the port that is used for
+    connections to the Java Platform Debugger Architecture (JPDA)
+    (http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html)
+    debugger. Valid values are 1-65535. On UNIX, creating sockets that
+    listen on ports 1-1024 requires superuser privileges.
+  `JMS_PROVIDER_PORT`;;
+    This property specifies the port number for the Java Message Service
+    provider. Valid values are 1-65535. On UNIX, creating sockets that
+    listen on ports 1-1024 requires superuser privileges.
+  `JMX_SYSTEM_CONNECTOR_PORT`;;
+    This property specifies the port number on which the JMX connector
+    listens. Valid values are 1-65535. On UNIX, creating sockets that
+    listen on ports 1-1024 requires superuser privileges.
+  `OSGI_SHELL_TELNET_PORT`;;
+    This property specifies the port number of the port that is used for
+    connections to the Apache Felix Remote Shell
+    (`http://felix.apache.org/site/apache-felix-remote-shell.html`).
+    This shell uses the Felix shell service to interact with the OSGi
+    module management subsystem. Valid values are 1-65535. On UNIX,
+    creating sockets that listen on ports 1-1024 requires superuser
+    privileges.
+
+[[sthref110]]
+
+=== Operands
+
+source-configuration-name::
+  The name of the configuration that you are copying.
+destination-configuration-name::
+  The name of the configuration that you are creating by copying the
+  source configuration.
++
+  The name must meet the following requirements:
++
+  * The name may contain only ASCII characters.
+  * The name must start with a letter, a number, or an underscore.
+  * The name may contain only the following characters:
+  ** Lowercase letters
+  ** Uppercase letters
+  ** Numbers
+  ** Hyphen
+  ** Period
+  ** Underscore
+  * The name must be unique in the domain and must not be the name of a
+  another named configuration, a cluster, a {productName} instance ,
+  or a node.
+  * The name must not be `domain`, `server`, or any other keyword that
+  is reserved by {productName}.
+
+[[sthref111]]
+
+=== Examples
+
+[[GSRFM456]][[sthref112]]
+
+==== Example 1   Copying a Configuration
+
+This example copies the `default-config` configuration to the
+`pmdsaconfig` configuration, overriding the settings for the following
+ports:
+
+* HTTP listener port
+* HTTPS listener port
+
+[source]
+----
+asadmin> copy-config
+--systemproperties HTTP_LISTENER_PORT=2000:HTTP_SSL_LISTENER_PORT=3000
+default-config pmdsaconfig
+
+Command copy-config executed successfully.
+----
+
+[[sthref113]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref114]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-config.html#delete-config-1[`delete-config`(1)],
+link:list-configs.html#list-configs-1[`list-configs`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-admin-object.adoc b/docs/reference-manual/src/main/asciidoc/create-admin-object.adoc
new file mode 100644
index 0000000..c9dd51a
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-admin-object.adoc
@@ -0,0 +1,143 @@
+type=page
+status=published
+title=create-admin-object
+next=create-application-ref.html
+prev=copy-config.html
+~~~~~~
+
+= create-admin-object
+
+[[create-admin-object-1]][[GSRFM00012]][[create-admin-object]]
+
+== create-admin-object
+
+Adds the administered object with the specified JNDI name for a resource adapter
+
+[[sthref115]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-admin-object [--help]
+[--target target]
+--restype restype
+[--classname classname]
+--raname raname
+[--enabled={true|false}]
+[--description description]
+[--property name=value[:name=value]*]
+jndi_name
+----
+
+[[sthref116]]
+
+=== Description
+
+The `create-admin-object` subcommand creates the administered object
+with the specified JNDI name and the interface definition for a resource adapter.
+
+This subcommand is supported in remote mode only.
+
+[[sthref117]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Specifies the target on which you are creating the administered
+  object. Valid values are as follows:
+
+  `server`;;
+    Creates the administered object for the default server instance
+    `server` and is the default value.
+  configuration_name;;
+    Creates the administered object for the named configuration.
+  cluster_name;;
+    Creates the administered object for every server instance in the
+    cluster.
+  instance_name;;
+    Creates the administered object for a particular server instance.
+
++
+[NOTE]
+====
+The resource is always created for the domain as a whole, but the
+`resource-ref` for the resource is only created for the specified
+`--target`. This means that although the resource is defined at the
+domain level, it is only available at the specified target level. Use
+the `create-resource-ref` subcommand to refer to the resource in
+multiple targets if needed.
+====
+
+`--restype`::
+  Specifies the interface definition for the administered object. The
+  resource type must be an interface definition that is specified in the
+  `ra.xml` file of the resource adapter.
+`--classname`::
+  Specifies the class name of the administered object. Required if
+  multiple administered objects use the same interface definition.
+`--raname`::
+  Specifies the name of the resource adapter associated with this
+  administered object.
+`--enabled`::
+  Specifies if this object is enabled. Default is true.
+`--description`::
+  Text string describing the administered object.
+`--property`::
+  Description of the name/values pairs for configuring the resource.
+  Dependent on the resource adapter. For JMS properties, see
+  link:create-jms-resource.html#create-jms-resource-1[`create-jms-resource`(1)]
+  for JMS destination resources.
+
+[[sthref118]]
+
+=== Operands
+
+jndi_name::
+  JNDI name of the administered object to be created.
+
+[[sthref119]]
+
+=== Examples
+
+[[GSRFM457]][[sthref120]]
+
+==== Example 1   Creating an Administered Object
+
+In this example, `jmsra` is a system resource adapter with the admin
+object interfaces, `jakarta.jms.Queue` and `jakarta.jms.Topic`.
+
+[source]
+----
+asadmin> create-admin-object --restype jakarta.jms.Queue
+--raname jmsra --description "sample administered object"
+--property Name=sample_jmsqueue jms/samplequeue
+Command create-admin-object executed successfully
+----
+
+[[sthref121]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref122]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-resource-ref.html#create-resource-ref-1[`create-resource-ref`(1)],
+link:delete-admin-object.html#delete-admin-object-1[`delete-admin-object`(1)],
+link:list-admin-objects.html#list-admin-objects-1[`list-admin-objects`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-application-ref.adoc b/docs/reference-manual/src/main/asciidoc/create-application-ref.adoc
new file mode 100644
index 0000000..e865336
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-application-ref.adoc
@@ -0,0 +1,139 @@
+type=page
+status=published
+title=create-application-ref
+next=create-audit-module.html
+prev=create-admin-object.html
+~~~~~~
+
+= create-application-ref
+
+[[create-application-ref-1]][[GSRFM00013]][[create-application-ref]]
+
+== create-application-ref
+
+Creates a reference to an application
+
+[[sthref123]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-application-ref [--help]
+[--target target]
+[--virtualservers virtual_servers] [--enabled=true]
+[--lbenabled=true] reference_name
+----
+
+[[sthref124]]
+
+=== Description
+
+The `create-application-ref` subcommand creates a reference from a
+cluster or an unclustered server instance to a previously deployed
+application element (for example, a Jakarta EE application, a Web module,
+or an enterprise bean module). This effectively results in the
+application element being deployed and made available on the targeted
+instance or cluster.
+
+The target instance or instances making up the cluster need not be
+running or available for this subcommand to succeed. If one or more
+instances are not available, they will receive the new application
+element the next time they start.
+
+This subcommand is supported in remote mode only.
+
+[[sthref125]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Specifies the target for which you are creating the application
+  reference. Valid values are
++
+  * `server`- Specifies the default server instance as the target for
+  creating the application reference. `server` is the name of the
+  default server instance and is the default value for this option.
+  * cluster_name- Specifies a particular cluster as the target for
+  creating the application reference.
+  * instance_name- Specifies a particular stand-alone server instance as
+  the target for creating the application reference.
+`--virtualservers`::
+  Specifies a comma-separated list of virtual server IDs on which to
+  deploy. This option applies only to Web modules (either standalone or
+  in a Jakarta EE application). If this option is not specified, the
+  application is deployed to all virtual servers except the
+  administrative server, `__asadmin`.
+`--enabled`::
+  Indicates whether the application should be enabled (that is, loaded).
+  This value will take effect only if the application is enabled at the
+  global level. The default is `true`.
+`--lbenabled`::
+  Controls whether the deployed application is available for load
+  balancing. The default is true.
+
+[[sthref126]]
+
+=== Operands
+
+reference_name::
+  The name of the application or module, which can be a Jakarta EE
+  application, Web module, EJB module, connector module, application
+  client module, or lifecycle module. +
+  The name can include an optional version identifier, which follows the
+  name and is separated from the name by a colon (`:`). The version
+  identifier must begin with a letter or number. It can contain
+  alphanumeric characters plus underscore (`_`), dash (`-`), and period
+  (`.`) characters. If the `--enabled` option is set to false, you can
+  create references to multiple disabled versions by using an asterisk
+  (`*`) as a wildcard character. For more information about module and
+  application versions, see
+  "link:application-deployment-guide/overview.html#GSDPG00324[
+  Module and Application Versions]"
+  in {productName} Application Deployment Guide.
+
+[[sthref127]]
+
+=== Examples
+
+[[GSRFM458]][[sthref128]]
+
+==== Example 1   Creating an Application Reference
+
+The following example creates a reference to the Web module `MyWebApp`
+on the unclustered server instance `NewServer`.
+
+[source]
+----
+asadmin> create-application-ref --target NewServer MyWebApp
+Command create-application-ref executed successfully.
+----
+
+[[sthref129]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref130]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-application-ref.html#delete-application-ref-1[`delete-application-ref`(1)],
+link:list-application-refs.html#list-application-refs-1[`list-application-refs`(1)]
+
+link:application-deployment-guide.html#GSDPG[{productName} Application Deployment
+Guide]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-audit-module.adoc b/docs/reference-manual/src/main/asciidoc/create-audit-module.adoc
new file mode 100644
index 0000000..a85523c
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-audit-module.adoc
@@ -0,0 +1,122 @@
+type=page
+status=published
+title=create-audit-module
+next=create-auth-realm.html
+prev=create-application-ref.html
+~~~~~~
+
+= create-audit-module
+
+[[create-audit-module-1]][[GSRFM00014]][[create-audit-module]]
+
+== create-audit-module
+
+Adds an audit module
+
+[[sthref131]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-audit-module [--help]
+--classname classname
+[--property(name=value)[:name=value]*]
+[--target target]
+audit_module_name
+----
+
+[[sthref132]]
+
+=== Description
+
+The `create-audit-module` subcommand adds the named audit module for the
+Java class that implements the audit capabilities. Audit modules collect
+and store information on incoming requests (from, for example, servlets
+and EJB components) and outgoing responses.
+
+This subcommand is supported in remote mode only.
+
+[[sthref133]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--classname`::
+  The name of the Java class that implements this audit module. If not
+  specified, this option defaults to
+  `com.sun.enterprise.security.Audit`.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--property`::
+  Optional keyword-value pairs that specify additional properties for
+  the audit module. +
+  Audit module properties that are defined by {productName} are as
+  follows:
+
+  `auditOn`;;
+    If `true`, specifies that the audit module is loaded and called by
+    the {productName} audit library at audit points.
+
++
+Other available properties are determined by the implementation of the
+  audit module.
+`--target`::
+  Specifies the target on which you are creating the audit module. Valid
+  values are as follows:
+
+  `server`;;
+    Creates the audit module for the default server instance `server`
+    and is the default value.
+  configuration_name;;
+    Creates the audit module for the named configuration.
+  cluster_name;;
+    Creates the audit module for every server instance in the cluster.
+  instance_name;;
+    Creates the audit module for a particular server instance.
+
+[[sthref134]]
+
+=== Operands
+
+audit_module_name::
+  The name of this audit module.
+
+[[sthref135]]
+
+=== Examples
+
+[[GSRFM459]][[sthref136]]
+
+==== Example 1   Creating an audit module
+
+[source]
+----
+asadmin> create-audit-module
+--classname com.sun.appserv.auditmodule
+--property defaultuser=admin:Password=admin sampleAuditModule
+Command create-audit-module executed successfully
+----
+
+[[sthref137]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref138]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-audit-module.html#delete-audit-module-1[`delete-audit-module`(1)],
+link:list-audit-modules.html#list-audit-modules-1[`list-audit-modules`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-auth-realm.adoc b/docs/reference-manual/src/main/asciidoc/create-auth-realm.adoc
new file mode 100644
index 0000000..9577d29
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-auth-realm.adoc
@@ -0,0 +1,257 @@
+type=page
+status=published
+title=create-auth-realm
+next=create-cluster.html
+prev=create-audit-module.html
+~~~~~~
+
+= create-auth-realm
+
+[[create-auth-realm-1]][[GSRFM00015]][[create-auth-realm]]
+
+== create-auth-realm
+
+Adds the named authentication realm
+
+[[sthref139]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-auth-realm [--help]
+--classname realm_class [--property(name=value)[:name=value]*]
+[--target target_name] auth_realm_name
+----
+
+[[sthref140]]
+
+=== Description
+
+The `create-auth-realm` subcommand adds the named authentication realm.
+
+This subcommand is supported in remote mode only.
+
+[[sthref141]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Specifies the target on which you are creating the realm. Valid values are
+
+  `server`;;
+    Creates the realm on the default server instance. This is the
+    default value.
+  configuration_name;;
+    Creates the realm in the specified configuration.
+  cluster_name;;
+    Creates the realm on all server instances in the specified cluster.
+  instance_name;;
+    Creates the realm on a specified server instance.
+
+`--classname`::
+  Java class which implements this realm. These include
+  `com.sun.enterprise.security.auth.realm.file.FileRealm`,
+  `com.sun.enterprise.security.auth.realm.certificate.CertificateRealm`,
+  `com.sun.enterprise.security.auth.realm.jdbc.JDBCRealm`,
+  `com.sun.enterprise.security.auth.realm.ldap.LDAPRealm`,
+  `com.sun.enterprise.security.auth.realm.ldap.PamRealm`, and
+  `com.sun.enterprise.security.auth.realm.solaris.SolarisRealm`, or a
+  custom realm.
+`--property`::
+  Optional attribute name-value pairs for configuring the authentication
+  realm. Authentication realms require provider-specific properties,
+  which vary based on implementation. +
+  The following properties are common to all of the supported realms,
+  which include `FileRealm`, `CertificateRealm`, `JDBCRealm`,
+  `LDAPRealm`, PamRealm, and `SolarisRealm`.
++
+--
+  `jaas-context`;;
+    Specifies the Java Authentication and Authorization Service (JAAS)
+    context.
+  `assign-groups`;;
+    (Optional) If this property is set, its value is taken to be a
+    comma-separated list of group names. All clients who present valid
+    certificates are assigned membership to these groups for the
+    purposes of authorization decisions in the web and EJB containers.
+--
+  Specific to each realm, you can specify the following properties.
+
+  * You can specify the following properties for `FileRealm`:
+
+  `file`;;
+    Specifies the file that stores user names, passwords, and group
+    names. The default is domain-dir``/config/keyfile``.
+
+  * You can specify the following properties for `CertificateRealm`:
+
+  `LoginModule`;;
+    Specifies the name of a JAAS `LoginModule` to use for performing
+    authentication. To use a JAAS `LoginModule`, you must first create
+    an implementation of the javax.security.auth.spi.LoginModule
+    interface, and then plug the module into a `jaas-context`. For more
+    information, see "link:security-guide/system-security.html#GSSCG00196[Custom Authentication of Client
+    Certificate in SSL Mutual Authentication]" in {productName} Security Guide.
+
+  * You can specify the following properties for `JDBCRealm`:
+
+  `datasource-jndi`;;
+    Specifies the `jndi-name` of the `jdbc-resource` for the database.
+  `user-table`;;
+    Specifies the name of the user table in the database.
+  `user-name-column`;;
+    Specifies the name of the user name column in the database's user
+    table.
+  `password-column`;;
+    Specifies the name of the password column in the database's user
+    table.
+  `group-table`;;
+    Specifies the name of the group table in the database.
+  `group-table`;;
+    Specify the group table for an authentication realm of class
+    `JDBCRealm`.
+  `group-name-column`;;
+    Specifies the name of the group name column in the database's group
+    table.
+  `db-user`;;
+    (Optional) Allows you to specify the database user name in the realm
+    instead of the `jdbc-connection-pool`. This prevents other
+    applications from looking up the database, getting a connection, and
+    browsing the user table. By default, the `jdbc-connection-pool`
+    configuration is used.
+  `db-password`;;
+    (Optional) Allows you to specify the database password in the realm
+    instead of the `jdbc-connection-pool`. This prevents other
+    applications from looking up the database, getting a connection, and
+    browsing the user table. By default, the `jdbc-connection-pool`
+    configuration is used.
+  `group-table`;;
+    Specifies the name of the group table in the database.
+  `digest-algorithm`;;
+    (Optional) Specifies the digest algorithm. The default is `SHA-256`.
+    You can use any algorithm supported in the JDK, or none.
++
+[NOTE]
+====
+In versions of {productName} prior to 5.0, the default algorithm
+was `MD5`. If you have applications that depend on the `MD5`
+algorithm, you can override the default `SHA-25` algorithm by using
+the `asadmin set` subcommand:
+[source]
+----
+asadmin> set server.security-service.property.default-digest-algorithm=MD5
+----
+You can use the `asadmin get` subcommand to determine what algorithm
+is currently being used:
+[source]
+----
+asadmin> get server.security-service.property.default-digest-algorithm
+----
+Also note that, to maintain backward compatibility, if an upgrade is
+performed from {productName} v2.x or v3.0.x to {productName}
+5.0, the default algorithm is automatically set to `MD5` in cases
+where the digest algorithm had not been explicitly set in the older
+{productName} version.
+====
++
+  `digestrealm-password-enc-algorithm`;;
+    (Optional) Specifies the algorithm for encrypting passwords stored
+    in the database.
++
+[NOTE]
+====
+It is a security risk not to specify a password encryption algorithm.
+====
+
+  `encoding`;;
+    (Optional) Specifies the encoding. Allowed values are `Hex` and
+    `Base64`. If digest-algorithm is specified, the default is `Hex`. If
+    `digest-algorithm` is not specified, by default no encoding is
+    specified.
+  `charset`;;
+    (Optional) Specifies the `charset` for the digest algorithm.
+  * You can specify the following properties for `LDAPRealm`:
+  `directory`;;
+    Specifies the LDAP URL to your server.
+  `base-dn`;;
+    Specifies the LDAP base DN for the location of user data. This base
+    DN can be at any level above the user data, since a tree scope
+    search is performed. The smaller the search tree, the better the
+    performance.
+  `search-filter`;;
+    (Optional) Specifies the search filter to use to find the user. The
+    default is `uid=%s` (`%s` expands to the subject name).
+  `group-base-dn`;;
+    (Optional) Specifies the base DN for the location of groups data. By
+    default, it is same as the `base-dn`, but it can be tuned, if
+    necessary.
+  `group-search-filter`;;
+    (Optional) Specifies the search filter to find group memberships for
+    the user. The default is `uniquemember=%d` (`%d` expands to the user
+    `elementDN`).
+  `group-target`;;
+    (Optional) Specifies the LDAP attribute name that contains group
+    name entries. The default is `CN`.
+  `search-bind-dn`;;
+    (Optional) Specifies an optional DN used to authenticate to the
+    directory for performing the search-filter lookup. Only required for
+    directories that do not allow anonymous search.
+  `search-bind-password`;;
+    (Optional) Specifies the LDAP password for the DN given in
+    `search-bind-dn`.
+
+[[sthref142]]
+
+=== Operands
+
+auth_realm_name::
+  A short name for the realm. This name is used to refer to the realm
+  from, for example, `web.xml`.
+
+[[sthref143]]
+
+=== Examples
+
+[[GSRFM460]][[sthref144]]
+
+==== Example 1   Creating a New Authentication Realm
+
+This example creates a new file realm.
+
+[source]
+----
+asadmin> create-auth-realm
+--classname com.sun.enterprise.security.auth.realm.file.FileRealm
+--property file=${com.sun.aas.instanceRoot}/config/
+admin-keyfile:jaas-context=fileRealm file
+Command create-auth-realm executed successfully
+----
+
+Where `file` is the authentication realm created.
+
+[[sthref145]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref146]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-auth-realm.html#delete-auth-realm-1[`delete-auth-realm`(1)],
+link:list-auth-realms.html#list-auth-realms-1[`list-auth-realms`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-cluster.adoc b/docs/reference-manual/src/main/asciidoc/create-cluster.adoc
new file mode 100644
index 0000000..3eb8050
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-cluster.adoc
@@ -0,0 +1,518 @@
+type=page
+status=published
+title=create-cluster
+next=create-connector-connection-pool.html
+prev=create-auth-realm.html
+~~~~~~
+
+= create-cluster
+
+[[create-cluster-1]][[GSRFM00017]][[create-cluster]]
+
+== create-cluster
+
+Creates a {productName} cluster
+
+[[sthref147]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-cluster [--help]
+[--config config-name]
+[--systemproperties (name=value)[:name=value]*]
+[--properties (name=value)[:name=value]*]
+[--gmsenabled={true|false}]
+[--multicastport multicast-port]
+[--multicastaddress multicast-address]
+[--bindaddress bind-address]
+[--hosts hadb-host-list]
+[--haagentport port-number]
+[--haadminpassword password]
+[--haadminpasswordfile file-name] [--devicesize devicesize ]
+[--haproperty (name=value)[:name=value]*]
+[--autohadb=false] [--portbase port-number]
+cluster-name
+----
+
+[[sthref148]]
+
+=== Description
+
+The `create-cluster` subcommand creates a {productName} cluster.
+Initially the cluster contains no {productName} instances,
+applications, or resources.
+
+A cluster requires a reference to the named configuration that defines
+the configuration of all instances that are added to the cluster. The
+configuration can be specified in the command to create the cluster, but
+is not required. If no configuration is specified, the subcommand
+creates a configuration that is named cluster-name`-config` for the
+cluster. The cluster that is created is a standalone cluster because the
+cluster's configuration is not shared with any other clusters or
+standalone instances.
+
+To add instances to the cluster, set the `--cluster` option to the name
+of the cluster when using either of the following subcommands:
+
+* link:create-instance.html#create-instance-1[`create-instance`(1)]
+* link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)]
+
+To delete server instances from the cluster at any time, use one of the
+following subcommands:
+
+* link:delete-instance.html#delete-instance-1[`delete-instance`(1)]
+* link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)]
+
+To associate applications and resources with all instances in the
+cluster, set the `--target` option to the name of the cluster when
+performing the following operations:
+
+* Deploying applications by using the
+link:deploy.html#deploy-1[`deploy`(1)] subcommand
+* Creating resources by using subcommands such as
+link:create-jdbc-resource.html#create-jdbc-resource-1[`create-jdbc-resource`(1)]
+* Creating references to applications that are already deployed in other
+targets by using the
+link:create-application-ref.html#create-application-ref-1[`create-application-ref`(1)]
+subcommand
+* Creating references to resources that are already created in other
+targets by using the
+link:create-resource-ref.html#create-resource-ref-1[`create-resource-ref`(1)]
+subcommand
+
+This subcommand is supported in remote mode only.
+
+[[sthref149]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--config`::
+  Specifies the named configuration that the cluster references. The
+  configuration must exist and must not be named `default-config` or
+  `server-config`. Specifying the `--config` option creates a shared
+  cluster. If this option is omitted, a standalone cluster is created.
+`--systemproperties`::
+  Defines system properties for the configuration that is created for
+  the cluster. These properties override the property values in the
+  `default-config` configuration. The following properties are
+  available:
++
+  `ASADMIN_LISTENER_PORT`;;
+    This property specifies the port number of the HTTP port or HTTPS
+    port through which the DAS connects to the instance to manage the
+    instance. Valid values are 1-65535. On UNIX, creating sockets that
+    listen on ports 1-1024 requires superuser privileges.
+  `HTTP_LISTENER_PORT`;;
+    This property specifies the port number of the port that is used to
+    listen for HTTP requests. Valid values are 1-65535. On UNIX,
+    creating sockets that listen on ports 1-1024 requires superuser
+    privileges.
+  `HTTP_SSL_LISTENER_PORT`;;
+    This property specifies the port number of the port that is used to
+    listen for HTTPS requests. Valid values are 1-65535. On UNIX,
+    creating sockets that listen on ports 1-1024 requires superuser
+    privileges.
+  `IIOP_LISTENER_PORT`;;
+    This property specifies the port number of the port that is used for
+    IIOP connections. Valid values are 1-65535. On UNIX, creating
+    sockets that listen on ports 1-1024 requires superuser privileges.
+  `IIOP_SSL_LISTENER_PORT`;;
+    This property specifies the port number of the port that is used for
+    secure IIOP connections. Valid values are 1-65535. On UNIX, creating
+    sockets that listen on ports 1-1024 requires superuser privileges.
+  `IIOP_SSL_MUTUALAUTH_PORT`;;
+    This property specifies the port number of the port that is used for
+    secure IIOP connections with client authentication. Valid values are
+    1-65535. On UNIX, creating sockets that listen on ports 1-1024
+    requires superuser privileges.
+  `JAVA_DEBUGGER_PORT`;;
+    This property specifies the port number of the port that is used for
+    connections to the
+    http://java.sun.com/javase/technologies/core/toolsapis/jpda/[Java
+    Platform Debugger Architecture (JPDA)]
+    (http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html)
+    debugger. Valid values are 1-65535. On UNIX, creating sockets that
+    listen on ports 1-1024 requires superuser privileges.
+  `JMS_PROVIDER_PORT`;;
+    This property specifies the port number for the Java Message Service
+    provider. Valid values are 1-65535. On UNIX, creating sockets that
+    listen on ports 1-1024 requires superuser privileges.
+  `JMX_SYSTEM_CONNECTOR_PORT`;;
+    This property specifies the port number on which the JMX connector
+    listens. Valid values are 1-65535. On UNIX, creating sockets that
+    listen on ports 1-1024 requires superuser privileges.
+  `OSGI_SHELL_TELNET_PORT`;;
+    This property specifies the port number of the port that is used for
+    connections to the
+    http://felix.apache.org/site/apache-felix-remote-shell.html[Apache
+    Felix Remote Shell]
+    (http://felix.apache.org/site/apache-felix-remote-shell.html). This
+    shell uses the Felix shell service to interact with the OSGi module
+    management subsystem. Valid values are 1-65535. On UNIX, creating
+    sockets that listen on ports 1-1024 requires superuser privileges.
+`--properties`::
+  Defines properties for the cluster. The following properties are
+  available:
+
+  `GMS_DISCOVERY_URI_LIST`;;
+    The locations of {productName} instances in the cluster to use
+    for discovering the cluster. This property is required only if the
+    Group Management Service (GMS) is not using multicast for
+    broadcasting messages. +
+    Valid values for this property are as follows:
+
+    * A comma-separated list of uniform resource identifiers (URIs).
+    Each URI must locate a {productName} instance or the DAS. This
+    format is required if multiple {productName} instances are
+    running on the same host. +
+    The format of each URI in the list is as follows: +
+    scheme``://``host-name-or -IP-address``:``port
+    ** scheme is the URI scheme, which is `tcp`.
+    ** host-name-or -IP-address is the host name or IP address of the
+    host on which the instance is running.
+    ** port is the port number of the port on which the instance listens
+    for messages from GMS. The system property
+    ``GMS_LISTENER_PORT-``clustername must be set for the instance. For
+    information about how to set this system property for an instance,
+    see "link:ha-administration-guide/clusters.html#GSHAG00373[Discovering a Cluster When Multicast Transport
+    Is Unavailable]" in {productName} High
+    Availability Administration Guide.
+
+    * A comma-separated list of IP addresses or host names on which the
+    DAS or the instances are running. The list can contain a mixture of
+    IP addresses and host names. This format can be used only if one
+    clustered instance is running on each host. The value of the
+    `GMS_LISTENER_PORT` property must be unique for each cluster in a domain.
+
+    * The keyword `generate`. This format can be used only if one
+    instance in a cluster is running on each host and the DAS is running
+    on a separate host. Multiple instances on the same host cannot be
+    members of the same cluster. The value of the `GMS_LISTENER_PORT`
+    property must be unique for each cluster in a domain.
+  `GMS_LISTENER_PORT`;;
+    The port number of the port on which the cluster listens for
+    messages from GMS. +
+    The default value is a reference to the
+    ``GMS_LISTENER_PORT-``cluster-name system property. By default, this
+    system property is not set. In this situation, GMS selects a free
+    port from the range that is defined by the properties
+    `GMS_TCPSTARTPORT` and `GMS_TCPENDPORT`. By default, this range is
+    9090-9200. In most situations, the default behavior should suffice. +
+    However, if GMS is not using multicast for broadcasting messages,
+    the `GMS_LISTENER_PORT` property must specify a port number that is
+    valid for all {productName} instances in the cluster. To use the
+    default value to meet this requirement, use a system property to set
+    the port number individually for each instance. +
+    For example, use the `create-system-properties` subcommand to create
+    the system property ``GMS_LISTENER_PORT-``cluster-name for the DAS.
+    Then, for each instance in the cluster, set the
+    ``GMS_LISTENER_PORT-``cluster-name system property to the port number
+    on which the instance listens for messages from GMS. The default
+    value of the `GMS_LISTENER_PORT` property for the cluster references
+    this system property.
+  `GMS_LOOPBACK`;;
+    Specifies whether an instance may receive from itself
+    application-level messages that the instance broadcasts to the
+    cluster. Possible values are as follows:
++
+--
+    * `false`
+      The instance may not receive messages from itself (default).
+    * `true`
+      The instance may receive messages from itself. Use this setting
+      for testing an instance when the instance is the only instance in
+      a cluster.
+--
+  `GMS_MULTICAST_TIME_TO_LIVE`;;
+    The maximum number of iterations or transmissions that a multicast
+    message for the following types of events can experience before the
+    message is discarded:
+
+    * Group discovery
+    * Member heartbeats
+    * Membership changes
++
+To match the configuration of the network on which the DAS and
+    clustered instances are deployed, set this value as low as possible.
+    To determine the lowest possible value for your system, use the
+    link:validate-multicast.html#validate-multicast-1[`validate-multicast`(1)]
+    subcommand.
+
+    ** A value of 0 ensures that multicast messages never leave the host
+    from which they are broadcast.
+
+    ** A value of 1 might prevent the broadcast of messages between hosts
+    on same subnet that are connected by a switch or a router.
+
+    ** The default is 4, which ensures that messages are successfully
+    broadcast to all cluster members in networks where hosts are
+    connected by switches or routers.
+
+  `GMS_TCPENDPORT`;;
+    The highest port number in the range from which GMS selects a free
+    port if the ``GMS_LISTENER_PORT-``cluster-name system property is not
+    set. The default is 9200.
+  `GMS_TCPSTARTPORT`;;
+    The lowest port number in the range from which GMS selects a free
+    port if the ``GMS_LISTENER_PORT-``cluster-name system property is not
+    set. The default is 9090.
+
+`--gmsenabled`::
+  Specifies whether GMS is enabled for the cluster. Possible values are as follows:
+
+  `true`;;
+    GMS is enabled for the cluster (default).
+    When GMS is enabled for a cluster, GMS is started in each server
+    instance in the cluster and in the DAS. The DAS participates in each
+    cluster for which this option is set to `true`.
+  `false`;;
+    GMS is disabled for the cluster.
+
+`--multicastaddress`::
+  The address on which GMS listens for group events. This option must
+  specify a multicast address in the range 224.0.0.0 through
+  239.255.255.255. The default is 228.9.XX.YY, where XX and YY are
+  automatically generated independent values between 0 and 255.
+`--multicastport`::
+  The port number of communication port on which GMS listens for group
+  events. This option must specify a valid port number in the range
+  2048-49151. The default is an automatically generated value in this
+  range.
+`--bindaddress`::
+  The Internet Protocol (IP) address of the network interface to which
+  GMS binds. This option must specify the IP address of a local network
+  interface. The default is all public network interface addresses. +
+  On a multihome machine, this option configures the network interface
+  that is used for the GMS. A multihome machine possesses two or more
+  network interfaces. +
+  To specify an address that is valid for all {productName}
+  instances in the cluster, use a system property to set the address
+  individually for each instance. +
+  For example, use the `create-system-properties` subcommand to create
+  the system property ``GMS-BIND-INTERFACE-ADDRESS-``cluster-name. Then
+  set the `--bindaddress` option of this subcommand to
+  ``${GMS-BIND-INTERFACE-ADDRESS-``cluster-name`}` to specify the system
+  property. Finally, for each instance in the cluster, set the
+  ``GMS-BIND-INTERFACE-ADDRESS-``cluster-name system property to the
+  required network interface address on the instance's machine.
+`--hosts`::
+  Do not specify this option. This option is retained for compatibility
+  with earlier releases. If you specify this option, a syntax error does
+  not occur. Instead, the subcommand runs successfully and displays a
+  warning message that the option is ignored.
+`--haagentport`::
+  Do not specify this option. This option is retained for compatibility
+  with earlier releases. If you specify this option, a syntax error does
+  not occur. Instead, the subcommand runs successfully and displays a
+  warning message that the option is ignored.
+`--haadminpassword`::
+  Do not specify this option. This option is retained for compatibility
+  with earlier releases. If you specify this option, a syntax error does
+  not occur. Instead, the subcommand runs successfully and displays a
+  warning message that the option is ignored.
+`--haadminpasswordfile`::
+  Do not specify this option. This option is retained for compatibility
+  with earlier releases. If you specify this option, a syntax error does
+  not occur. Instead, the subcommand runs successfully and displays a
+  warning message that the option is ignored.
+`--devicesize`::
+  Do not specify this option. This option is retained for compatibility
+  with earlier releases. If you specify this option, a syntax error does
+  not occur. Instead, the subcommand runs successfully and displays a
+  warning message that the option is ignored.
+`--haproperty`::
+  Do not specify this option. This option is retained for compatibility
+  with earlier releases. If you specify this option, a syntax error does
+  not occur. Instead, the subcommand runs successfully and displays a
+  warning message that the option is ignored.
+`--autohadb`::
+  Do not specify this option. This option is retained for compatibility
+  with earlier releases. If you specify this option, a syntax error does
+  not occur. Instead, the subcommand runs successfully and displays a
+  warning message that the option is ignored.
+`--portbase`::
+  Do not specify this option. This option is retained for compatibility
+  with earlier releases. If you specify this option, a syntax error does
+  not occur. Instead, the subcommand runs successfully and displays a
+  warning message that the option is ignored.
+
+[[sthref150]]
+
+=== Operands
+
+cluster-name::
+  The name of the cluster. +
+  The name must meet the following requirements:
+
+  * The name may contain only ASCII characters.
+  * The name must start with a letter, a number, or an underscore.
+  * The name may contain only the following characters:
+  ** Lowercase letters
+  ** Uppercase letters
+  ** Numbers
+  ** Hyphen
+  ** Period
+  ** Underscore
+  * The name must be unique in the domain and must not be the name of
+  another cluster, a named configuration, a {productName} instance,
+  or a node.
+  * The name must not be `domain`, `server`, or any other keyword that
+  is reserved by {productName}. +
+  If the
+  link:configure-jms-cluster.html#configure-jms-cluster-1[`configure-jms-cluster`(1)]
+  subcommand is to be used to configure a Message Queue cluster to
+  provide JMS services to the {productName} cluster, the length of
+  the {productName} cluster name is might be restricted: +
+  * If `clustertype` is set to `enhanced` in the
+  link:configure-jms-cluster.html#configure-jms-cluster-1[`configure-jms-cluster`(1)]
+  subcommand, the name can be no longer than n–21 characters, where n is
+  the maximum table name length allowed by the database.
+  * If `configstoretype` is set to `shareddb` in the
+  link:configure-jms-cluster.html#configure-jms-cluster-1[`configure-jms-cluster`(1)]
+  subcommand, the name can be no longer than n–19 characters, where n is
+  the maximum table name length allowed by the database.
+
+[[sthref151]]
+
+=== Examples
+
+[[GSRFM462]][[sthref152]]
+
+==== Example 1   Creating a Cluster
+
+This example creates a cluster that is named `ltscluster` for which port
+1169 is to be used for secure IIOP connections. Because the `--config`
+option is not specified, the cluster references a copy of the named
+configuration `default-config` that is named `ltscluster-config`.
+
+[source]
+----
+asadmin> create-cluster
+--systemproperties IIOP_SSL_LISTENER_PORT=1169
+ltscluster
+Command create-cluster executed successfully.
+----
+
+[[GSRFM463]][[sthref153]]
+
+==== Example 2   Creating a Cluster With a List of URIs for Discovering the
+Cluster
+
+This example creates a cluster that is named `tcpcluster`. In this
+example, GMS is not using multicast for broadcasting messages and
+multiple instances reside on the same host. Therefore, the
+`GMS_DISCOVERY_URI_LIST` property is set to the locations of the
+{productName} instances to use for discovering the cluster. These
+instances reside on the host whose IP address is `10.152.23.224` and
+listen for GMS events on ports 9090, 9091, and 9092.
+
+To distinguish colon (`:`) characters in URIs from separators in a
+property list, colons in URIs are escaped with single quote characters
+(`'`) and backslash (`\`) characters. For more information about escape
+characters in options for the `asadmin` utility, see the
+link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+
+This example assumes that the port on which each instance listens for
+GMS messages is set independently for the instance through the
+`GMS_LISTENER_PORT-tcpcluster` system property. For information about
+how to set the port on which an instance listens for GMS messages, see
+"link:ha-administration-guide/clusters.html#GSHAG00373[Discovering a Cluster When Multicast Transport Is
+Unavailable]" in {productName} High Availability
+Administration Guide.
+
+[source]
+----
+asadmin> create-cluster --properties GMS_DISCOVERY_URI_LIST=
+tcp'\\:'//10.152.23.224'\\:'9090,
+tcp'\\:'//10.152.23.224'\\:'9091,
+tcp'\\:'//10.152.23.224'\\:'9092 tcpcluster
+Command create-cluster executed successfully.
+----
+
+[[GSRFM827]][[sthref154]]
+
+==== Example 3   Creating a Cluster With a List of IP Addresses for
+Discovering the Cluster
+
+This example creates a cluster that is named `ipcluster`. In this
+example, GMS is not using multicast for broadcasting messages and only
+one clustered instance resides on each host. Therefore, the
+`GMS_DISCOVERY_URI_LIST` property is set to the IP addresses of the
+hosts where instances to use for discovering the cluster are running.
+The cluster listens for messages from GMS on port 9090.
+
+[source]
+----
+asadmin> create-cluster --properties 'GMS_DISCOVERY_URI_LIST=
+10.152.23.225,10.152.23.226,10.152.23.227,10.152.23.228:
+GMS_LISTENER_PORT=9090' ipcluster
+Command create-cluster executed successfully.
+----
+
+[[GSRFM828]][[sthref155]]
+
+==== Example 4   Creating a Cluster With a Generated List of Instances for
+Discovering the Cluster
+
+This example creates a cluster that is named `gencluster`. In this
+example, GMS is not using multicast for broadcasting messages, one
+instance in the cluster is running on each host and the DAS is running
+on a separate host. Therefore, the `GMS_DISCOVERY_URI_LIST` property is
+set to the keyword `generate` to generate a list of instances to use for
+discovering the cluster. The cluster listens for messages from GMS on
+port 9090.
+
+[source]
+----
+asadmin> create-cluster --properties 'GMS_DISCOVERY_URI_LIST=generate:
+GMS_LISTENER_PORT=9090' gencluster
+Command create-cluster executed successfully.
+----
+
+[[sthref156]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref157]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-application-ref.html#create-application-ref-1[`create-application-ref`(1)],
+link:create-instance.html#create-instance-1[`create-instance`(1)],
+link:create-jdbc-resource.html#create-jdbc-resource-1[`create-jdbc-resource`(1)],
+link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)],
+link:create-resource-ref.html#create-resource-ref-1[`create-resource-ref`(1)],
+link:delete-cluster.html#delete-cluster-1[`delete-cluster`(1)],
+link:delete-instance.html#delete-instance-1[`delete-instance`(1)],
+link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)],
+link:deploy.html#deploy-1[`deploy`(1)],
+link:list-clusters.html#list-clusters-1[`list-clusters`(1)],
+link:start-cluster.html#start-cluster-1[`start-cluster`(1)],
+link:stop-cluster.html#stop-cluster-1[`stop-cluster`(1)],
+link:validate-multicast.html#validate-multicast-1[`validate-multicast`(1)]
+
+"link:ha-administration-guide/clusters.html#GSHAG00373[Discovering a Cluster When Multicast Transport Is
+Unavailable]" in {productName} High Availability
+Administration Guide
+
+Apache Felix Remote Shell
+(http://felix.apache.org/site/apache-felix-remote-shell.html), Java
+Platform Debugger Architecture (JPDA)
+(http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html)
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-connector-connection-pool.adoc b/docs/reference-manual/src/main/asciidoc/create-connector-connection-pool.adoc
new file mode 100644
index 0000000..a1434cb
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-connector-connection-pool.adoc
@@ -0,0 +1,273 @@
+type=page
+status=published
+title=create-connector-connection-pool
+next=create-connector-resource.html
+prev=create-cluster.html
+~~~~~~
+
+= create-connector-connection-pool
+
+[[create-connector-connection-pool-1]][[GSRFM00018]][[create-connector-connection-pool]]
+
+== create-connector-connection-pool
+
+Adds a connection pool with the specified connection pool name
+
+[[sthref158]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-connector-connection-pool [--help]
+[--target=target]
+--raname raname
+--connectiondefinition connectiondefinitionname
+[--steadypoolsize steadypoolsize]
+[--maxpoolsize maxpoolsize]
+[--maxwait maxwait]
+[--poolresize poolresize]
+[--idletimeout idletimeout]
+[--isconnectvalidatereq={false|true}]
+[--failconnection={false|true}]
+[--leaktimeout=timeout]
+[--leakreclaim={false|true}]
+[--creationretryattempts=attempts]
+[--creationretryinterval=interval]
+[--lazyconnectionenlistment={false|true}]
+[--lazyconnectionassociation={false|true}]
+[--associatewiththread={false|true}]
+[--matchconnections={true|false}]
+[--maxconnectionusagecount=count]
+[--validateatmostonceperiod=interval]
+[--transactionsupport transactionsupport]
+[--descrip[tion description]
+[--ping {false|true}]
+[--pooling {true|false}]
+[--property (name=value)[:name=value]*]
+poolname
+----
+
+[[sthref159]]
+
+=== Description
+
+The `create-connector-connection-pool` subcommand defines a pool of
+connections to an enterprise information system (EIS). The named pool
+can be referred to by multiple connector resources. Each defined pool is
+instantiated at server startup, and is populated when accessed for the
+first time. If two or more connector resources point to the same
+connector connection pool, they are using the same pool of connections
+at run time. There can be more than one pool for a connection definition
+in a single resource adapter.
+
+A connector connection pool with authentication can be created either by
+using a `--property` option to specify user, password, or other
+connection information, or by specifying the connection information in
+the XML descriptor file.
+
+This subcommand is supported in remote mode only.
+
+[[sthref160]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--associatewiththread`::
+  Specifies whether a connection is associated with the thread to enable
+  the thread to reuse the connection. If a connection is not associated
+  with the thread, the thread must obtain a connection from the pool
+  each time that the thread requires a connection. Possible values are
+  as follows:
++
+  `false`;;
+    A connection is not associated with the thread (default).
+  `true`;;
+    A connection is associated with the thread.
+`--connectiondefinition`::
+  The name of the connection definition.
+`--creationretryattempts`::
+  Specifies the maximum number of times that the server retries to
+  create a connection if the initial attempt fails. +
+  Default value is 0, which specifies that the server does not retry to
+  create the connection.
+`--creationretryinterval`::
+  Specifies the interval, in seconds, between successive attempts to
+  create a connection. +
+  If `--creationretryattempts` is 0, the `--creationretryinterval`
+  option is ignored. Default value is 10.
+`--description`::
+  Text providing descriptive details about the connector connection
+  pool.
+`--failconnection`::
+  If set to true, all connections in the pool are closed if a single
+  validation check fails. This parameter is mandatory if the
+  `--isconnectvalidatereq` option is set to true. Default value is false.
+`--idletimeout`::
+  The maximum time that a connection can remain idle in the pool. After
+  this amount of time, the pool can close this connection. Default value is 300.
+`--isconnectvalidatereq`::
+  If the value is set to true, the connections will be checked to see if
+  they are usable, before they are given out to the application. Default
+  value is false.
+`--lazyconnectionenlistment`::
+  Specifies whether a resource to a transaction is enlisted only when a
+  method actually uses the resource. Default value is false.
+`--lazyconnectionassociation`::
+  Specifies whether a physical connection should be associated with the
+  logical connection only when the physical connection is used, and
+  disassociated when the transaction is completed. Such association and
+  dissociation enable the reuse of physical connections. Possible values
+  are as follows:
++
+  `false`;;
+    A physical connection is associated with the logical connection even
+    before the physical connection is used, and is not disassociated
+    when the transaction is completed (default).
+  `true`;;
+    A physical connection is associated with the logical connection only
+    when the physical connection is used, and disassociated when the
+    transaction is completed. The `--lazyconnectionenlistment` option
+    must also be set to `true`.
+`--leakreclaim`::
+  Specifies whether leaked connections are restored to the connection
+  pool after leak connection tracing is complete. Possible values are as
+  follows:
++
+  `false`;;
+    Leaked connections are not restored to the connection pool
+    (default).
+  `true`;;
+    Leaked connections are restored to the connection pool.
+`--leaktimeout`::
+  Specifies the amount of time, in seconds, for which connection leaks
+  in a connection pool are to be traced. +
+  If connection leak tracing is enabled, you can use the Administration
+  Console to enable monitoring of the JDBC connection pool to get
+  statistics on the number of connection leaks. Default value is 0,
+  which disables connection leak tracing.
+`--matchconnections`::
+  Specifies whether a connection that is selected from the pool should
+  be matched with the resource adaptor. If all connections in the pool
+  are identical, matching between connections and resource adapters is
+  not required. Possible values are as follows:
++
+  `true`;;
+    A connection should be matched with the resource adaptor (default).
+  `false`;;
+    A connection should not be matched with the resource adaptor.
+`--maxconnectionusagecount`::
+  Specifies the maximum number of times that a connection can be reused. +
+  When this limit is reached, the connection is closed. Default value is
+  0, which specifies no limit on the number of times that a connection
+  can be reused.
+`--maxpoolsize`::
+  The maximum number of connections that can be created to satisfy
+  client requests. Default value is 32.
+`--maxwait`::
+  The amount of time, in milliseconds, that a caller must wait before a
+  connection is created, if a connection is not available. If set to 0,
+  the caller is blocked indefinitely until a resource is available or
+  until an error occurs. Default value is 60000.
+`--ping`::
+  A pool with this attribute set to true is contacted during creation
+  (or reconfiguration) to identify and warn of any erroneous values for
+  its attributes. Default value is false.
+`--pooling`::
+  When set to false, this attribute disables connection pooling. Default
+  value is true.
+`--poolresize`::
+  Quantity by which the pool will scale up or scale down the number of
+  connections. Scale up: When the pool has no free connections, pool
+  will scale up by this quantity. Scale down: All the invalid and idle
+  connections are removed, sometimes resulting in removing connections
+  of quantity greater than this value. The number of connections that is
+  specified by `--steadypoolsize` will be ensured. Possible values are
+  from 0 to `MAX_INTEGER`. Default value is 2.
+`--property`::
+  Optional attribute name/value pairs for configuring the pool.
++
+  `LazyConnectionEnlistment`;;
+    Deprecated. Use the equivalent option. Default value is false.
+  `LazyConnectionAssociation`;;
+    Deprecated. Use the equivalent option. Default value is false.
+  `AssociateWithThread`;;
+    Deprecated. Use the equivalent option. Default value is false.
+  `MatchConnections`;;
+    Deprecated. Use the equivalent option. Default value is false.
+`--raname`::
+  The name of the resource adapter.
+`--steadypoolsize`::
+  The minimum and initial number of connections maintained in the pool.
+  Default value is 8.
+`--target`::
+  Do not specify this option. This option is retained for compatibility
+  with earlier releases. If you specify this option, a syntax error does
+  not occur. Instead, the subcommand runs successfully and displays a
+  warning message that the option is ignored.
+`--transactionsupport`::
+  Indicates the level of transaction support that this pool will have.
+  Possible values are `XATransaction`, `LocalTransaction` and
+  `NoTransaction`. This attribute can have a value lower than or equal
+  to but not higher than the resource adapter's transaction support
+  attribute. The resource adapter's transaction support attribute has an
+  order of values, where `XATransaction` is the highest, and
+  `NoTransaction` the lowest.
+`--validateatmostonceperiod`::
+  Specifies the time interval in seconds between successive requests to
+  validate a connection at most once. Setting this attribute to an
+  appropriate value minimizes the number of validation requests by a
+  connection. Default value is 0, which means that the attribute is not
+  enabled.
+
+[[sthref161]]
+
+=== Operands
+
+poolname::
+  The name of the connection pool to be created.
+
+[[sthref162]]
+
+=== Examples
+
+[[GSRFM464]][[sthref163]]
+
+==== Example 1   Creating a Connector Connection Pool
+
+This example creates a new connector connection pool named
+`jms/qConnPool`.
+
+[source]
+----
+asadmin> create-connector-connection-pool --raname jmsra
+--connectiondefinition jakarta.jms.QueueConnectionFactory --steadypoolsize 20
+--maxpoolsize 100 --poolresize 2 --maxwait 60000 jms/qConnPool
+Command create-connector-connection-pool executed successfully
+----
+
+[[sthref164]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref165]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-connector-connection-pool.html#delete-connector-connection-pool-1[`delete-connector-connection-pool`(1)],
+link:list-connector-connection-pools.html#list-connector-connection-pools-1[`list-connector-connection-pools`(1)],
+link:ping-connection-pool.html#ping-connection-pool-1[`ping-connection-pool`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-connector-resource.adoc b/docs/reference-manual/src/main/asciidoc/create-connector-resource.adoc
new file mode 100644
index 0000000..0c48c18
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-connector-resource.adoc
@@ -0,0 +1,160 @@
+type=page
+status=published
+title=create-connector-resource
+next=create-connector-security-map.html
+prev=create-connector-connection-pool.html
+~~~~~~
+
+= create-connector-resource
+
+[[create-connector-resource-1]][[GSRFM00019]][[create-connector-resource]]
+
+== create-connector-resource
+
+Registers the connector resource with the specified JNDI name
+
+[[sthref166]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-connector-resource [--help]
+--poolname connectorConnectionPoolName
+[--enabled={true|false}]
+[--description description]
+[--objecttype ovjecttype]
+[--property (name=value)[:name=value]*]
+[--target target]
+jndi_name
+----
+
+[[sthref167]]
+
+=== Description
+
+The `create-connector-resource` subcommand registers the connector
+resource with the specified JNDI name.
+
+This subcommand is supported in remote mode only.
+
+[[sthref168]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--poolname`::
+  The name of the connection pool. When two or more resource elements
+  point to the same connection pool element, they use the same pool
+  connections at runtime.
+`--enabled`::
+  This option determines whether the resource is enabled at runtime. The
+  default value is true.
+`--objecttype`::
+  Defines the type of the connector resource. Default is user. Allowed
+  values are:
++
+  `system-all`;;
+    A system resource for all server instances and the domain
+    administration server (DAS).
+  `system-admin`;;
+    A system resource only for the DAS.
+  `system-instance`;;
+    A system resource for all server instances only.
+  `user`;;
+    A user resource.
+`--description`::
+  Text providing details about the connector resource.
+`--property`::
+  Optional attribute name value pairs for configuring the resource.
+`--target`::
+  This option specifies the ending location of the connector resources.
+  Valid targets are:
++
+  `server`;;
+    Creates the connector resource in the default server instance. This
+    is the default value.
+  `domain`;;
+    Creates the connector resource in the domain.
+  cluster_name;;
+    Creates the connector resource in every server instance in the
+    cluster.
+  instance_name;;
+    Creates the connector resource in the specified server instance.
++
+
+[NOTE]
+====
+The resource is always created for the domain as a whole, but the
+`resource-ref` for the resource is only created for the specified
+`--target`. This means that although the resource is defined at the
+domain level, it is only available at the specified target level. Use
+the `create-resource-ref` subcommand to refer to the resource in
+multiple targets if needed.
+====
+
+[[sthref169]]
+
+=== Operands
+
+jndi_name::
+  The JNDI name of this connector resource.
+
+[[sthref170]]
+
+=== Examples
+
+[[GSRFM465]][[sthref171]]
+
+==== Example 1   Creating a Connector Resource
+
+This example creates a connector resource named `jms/qConnFactory`.
+
+[source]
+----
+asadmin> create-connector-resource --poolname jms/qConnPool
+--description "sample connector resource" jms/qConnFactory
+Command create-connector-resource executed successfully
+----
+
+[[GSRFM466]][[sthref172]]
+
+==== Example 2   Using the create-connector-resource subcommand
+
+This example shows the usage of this subcommand.
+
+[source]
+----
+asadmin> create-connector-resource --target server --poolname jms/qConnPool
+--description "sample connector resource" jms/qConnFactory
+Command create-connector-resource executed successfully
+----
+
+Where `jms/qConnFactory` is the sample connector resource that is
+created.
+
+[[sthref173]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref174]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-connector-resource.html#delete-connector-resource-1[`delete-connector-resource`(1)],
+link:list-connector-resources.html#list-connector-resources-1[`list-connector-resources`(1)],
+link:create-resource-ref.html#create-resource-ref-1[`create-resource-ref`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-connector-security-map.adoc b/docs/reference-manual/src/main/asciidoc/create-connector-security-map.adoc
new file mode 100644
index 0000000..9c6e376
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-connector-security-map.adoc
@@ -0,0 +1,131 @@
+type=page
+status=published
+title=create-connector-security-map
+next=create-connector-work-security-map.html
+prev=create-connector-resource.html
+~~~~~~
+
+= create-connector-security-map
+
+[[create-connector-security-map-1]][[GSRFM00020]][[create-connector-security-map]]
+
+== create-connector-security-map
+
+Creates a security map for the specified connector connection pool
+
+[[sthref175]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-connector-security-map [--help]
+--poolname connector_connection_pool_name
+[--principals principal-name1[,principal-name2]*]
+[--usergroups user-group1[,user-group2]*]
+[--mappedusername user-name]
+[--target target]
+mapname
+----
+
+[[sthref176]]
+
+=== Description
+
+The `create-connector-security-map` subcommand creates a security map
+for the specified connector connection pool. If the security map is not
+present, a new one is created. This subcommand can also map the caller
+identity of the application (principal or user group) to a suitable
+enterprise information system (EIS) principal in container-managed
+authentication scenarios. The EIS is any system that holds the data of
+an organization. It can be a mainframe, a messaging system, a database
+system, or an application. One or more named security maps can be
+associated with a connector connection pool. The connector security map
+configuration supports the use of the wild card asterisk (`*`) to
+indicate all users or all user groups.
+
+To specify the EIS password, you can add the `AS_ADMIN_MAPPEDPASSWORD`
+entry to the password file, then specify the file by using the
+`--passwordfile` `asadmin` utility option.
+
+For this subcommand to succeed, you must have first created a connector
+connection pool using the `create-connector-connection-pool` subcommand.
+
+This subcommand is supported in remote mode only.
+
+[[sthref177]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--poolname`::
+  Specifies the name of the connector connection pool to which the
+  security map belongs.
+`--principals`::
+  Specifies a list of backend EIS principals. More than one principal
+  can be specified using a comma-separated list. Use either the
+  `--principals` or `--usergroups` options, but not both in the same
+  command.
+`--usergroups`::
+  Specifies a list of backend EIS user group. More than one user groups
+  can be specified using a comma separated list. Use either the
+  `--principals` or `--usergroups` options, but not both in the same
+  command.
+`--mappedusername`::
+  Specifies the EIS username.
+`--target`::
+  Do not specify this option. This option is retained for compatibility
+  with earlier releases. If you specify this option, a syntax error does
+  not occur. Instead, the subcommand runs successfully and displays a
+  warning message that the option is ignored.
+
+[[sthref178]]
+
+=== Operands
+
+mapname::
+  The name of the security map to be created.
+
+[[sthref179]]
+
+=== Examples
+
+[[GSRFM467]][[sthref180]]
+
+==== Example 1   Creating a Connector Security Map
+
+This example creates `securityMap1` for the existing connection pool
+named `connector-pool1`.
+
+[source]
+----
+asadmin> create-connector-security-map --poolname connector-pool1
+--principals principal1,principal2 --mappedusername backend-username securityMap1
+Command create-connector-security-map executed successfully
+----
+
+[[sthref181]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref182]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-connector-security-map.html#delete-connector-security-map-1[`delete-connector-security-map`(1)],
+link:list-connector-security-maps.html#list-connector-security-maps-1[`list-connector-security-maps`(1)],
+link:update-connector-security-map.html#update-connector-security-map-1[`update-connector-security-map`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-connector-work-security-map.adoc b/docs/reference-manual/src/main/asciidoc/create-connector-work-security-map.adoc
new file mode 100644
index 0000000..dc842ec
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-connector-work-security-map.adoc
@@ -0,0 +1,136 @@
+type=page
+status=published
+title=create-connector-work-security-map
+next=create-context-service.html
+prev=create-connector-security-map.html
+~~~~~~
+
+= create-connector-work-security-map
+
+[[create-connector-work-security-map-1]][[GSRFM00021]][[create-connector-work-security-map]]
+
+== create-connector-work-security-map
+
+Creates a work security map for the specified resource adapter
+
+[[sthref183]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-connector-work-security-map [--help]
+--raname raname
+[--principalsmap eis-principal1=principal_name1[, eis-principal2=principal_name2]*
+|--groupsmap eis-group1=server-group1[, eis-group2=server-group2]*}
+[--description description]
+mapname
+----
+
+[[sthref184]]
+
+=== Description
+
+The `create-connector-work-security-map` subcommand maps the caller
+identity of the work submitted by the resource adapter EIS principal or
+EIS user group to a suitable principal or user group in the
+{productName} security domain. One or more work security maps may be
+associated with a resource adapter. The connector work security map
+configuration supports the use of the wild card asterisk (`*`) to
+indicate all users or all user groups.
+
+The enterprise information system (EIS) is any system that holds the
+data of an organization. It can be a mainframe, a messaging system, a
+database system, or an application.
+
+This subcommand is supported in remote mode only.
+
+[[sthref185]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--description`::
+  Text providing descriptive details about the connector work security
+  map.
+`--groupsmap`::
+  Specifies a map of the backend EIS user group to the {productName}
+  user group. Use a comma-separated list to specify more than one
+  mapping. Use either the `--principalsmap` option or the `--groupsmap`
+  option, but not both.
+`--principalsmap`::
+  Specifies a map of the backend EIS principal to the {productName}
+  principal. Use a comma-separated list to specify more than one
+  mapping. Use either the `--principalsmap` option or the `--groupsmap`
+  option, but not both.
+`--raname`::
+  Indicates the connector module name, which is the name of the resource
+  adapter.
+
+[[sthref186]]
+
+=== Operands
+
+mapname::
+  The name of the work security map to be created.
+
+[[sthref187]]
+
+=== Examples
+
+[[GSRFM468]][[sthref188]]
+
+==== Example 1   Creating a Connector Work Security Map (Principal)
+
+This example creates connector work security map `workSecurityMap1` that
+maps the backend EIS principal to the {productName} principal.
+
+[source]
+----
+asadmin create-connector-work-security-map --raname my-resource-adapter
+--principalsmap eis-principal-1=server-principal-1,eis-principal-2
+=server-principal-2,eis-principal-3=server-principal-1
+workSecurityMap1
+Command create-connector-work-security-map executed successfully.
+----
+
+[[GSRFM469]][[sthref189]]
+
+==== Example 2   Creating a Connector Work Security Map (Group)
+
+This example creates connector work security map `workSecurityMap2` that
+maps the backend EIS user group to the {productName} user group.
+
+[source]
+----
+asadmin create-connector-work-security-map --raname my-resource-adapter
+--groupsmap eis-group-1=server-group-1,eis-group-2=server-group-2,
+eis-group-3=server-group-1 workSecurityMap2
+Command create-connector-work-security-map executed successfully.
+----
+
+[[sthref190]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref191]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-connector-work-security-map.html#delete-connector-work-security-map-1[`delete-connector-work-security-map`(1)],
+link:list-connector-work-security-maps.html#list-connector-work-security-maps-1[`list-connector-work-security-maps`(1)],
+link:update-connector-work-security-map.html#update-connector-work-security-map-1[`update-connector-work-security-map`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-context-service.adoc b/docs/reference-manual/src/main/asciidoc/create-context-service.adoc
new file mode 100644
index 0000000..35bb175
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-context-service.adoc
@@ -0,0 +1,128 @@
+type=page
+status=published
+title=create-context-service
+next=create-custom-resource.html
+prev=create-connector-work-security-map.html
+~~~~~~
+
+= create-context-service
+
+[[create-context-service-1]][[GSRFM838]][[create-context-service]]
+
+== create-context-service
+
+Creates a context service resource
+
+[[sthref192]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-context-service [--help]
+[--enabled={false|true}]
+[--contextinfoenabled={false|true}]
+[--contextinfo={Classloader|JNDI|Security|WorkArea}]]
+[--description description]
+[--property property]
+[--target target]
+jndi_name
+----
+
+[[sthref193]]
+
+=== Description
+
+The `create-context-service` subcommand creates a context service
+resource.
+
+This subcommand is supported in remote mode only.
+
+[[sthref194]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--enabled`::
+  Determines whether the resource is enabled at runtime. The default
+  value is `true`.
+`--contextinfoenabled`::
+  Determines whether container contexts are propagated to threads. If
+  set to `true`, the contexts specified in the `--contextinfo` option
+  are propagated. If set to `false`, no contexts are propagated and the
+  `--contextinfo` option is ignored. The default value is `true`.
+`--contextinfo`::
+  Specifies individual container contexts to propagate to threads. Valid
+  values are Classloader, JNDI, Security, and WorkArea. Values are
+  specified in a comma-separated list and are case-insensitive. All
+  contexts are propagated by default.
+`--description`::
+  Descriptive details about the resource.
+`--property`::
+  Optional attribute name/value pairs for configuring the resource. +
+  {productName} does not define any additional properties for this
+  resource. Moreover, this resource does not currently use any
+  additional properties.
+`--target`::
+  Specifies the target for which you are creating the resource. Valid
+  targets are:
+  `server`;;
+    Creates the resource for the default server instance. This is the
+    default value.
+  `domain`;;
+    Creates the resource for the domain.
+  cluster_name;;
+    Creates the resource for every server instance in the specified
+    cluster.
+  instance_name;;
+    Creates the resource for the specified server instance.
+
+[[sthref195]]
+
+=== Operands
+
+jndi_name::
+  The JNDI name of this resource.
+
+[[sthref196]]
+
+=== Examples
+
+[[GSRFM839]][[sthref197]]
+
+==== Example 1   Creating a Context Service Resource
+
+This example creates a context service resource named
+`concurrent/myContextService`.
+
+[source]
+----
+asadmin> create-context-service concurrent/myContextService
+Context service concurrent/myContextService created successfully.
+Command create-context-service executed successfully.
+----
+
+[[sthref198]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref199]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-context-service.html#delete-context-service-1[`delete-context-service`(1)],
+link:list-context-services.html#list-context-services-1[`list-context-services`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-custom-resource.adoc b/docs/reference-manual/src/main/asciidoc/create-custom-resource.adoc
new file mode 100644
index 0000000..0b74049
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-custom-resource.adoc
@@ -0,0 +1,135 @@
+type=page
+status=published
+title=create-custom-resource
+next=create-domain.html
+prev=create-context-service.html
+~~~~~~
+
+= create-custom-resource
+
+[[create-custom-resource-1]][[GSRFM00022]][[create-custom-resource]]
+
+== create-custom-resource
+
+Creates a custom resource
+
+[[sthref200]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-custom-resource [--help]
+--restype type --factoryclass classname
+[--enabled={true|false}] [--description text]
+[--property (name=value)[:name=value]*] jndi-name
+[--target target]
+----
+
+[[sthref201]]
+
+=== Description
+
+The `create-custom-resource` subcommand creates a custom resource. A
+custom resource specifies a custom server-wide resource object factory
+that implements the `javax.naming.spi.ObjectFactory` interface.
+
+This subcommand is supported in remote mode only.
+
+[[sthref202]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  The target on which the custom resource you are creating will be
+  available. Valid values are:
++
+  `server`;;
+    The resource will be available on the default server instance and
+    all domains hosted on the instance. This is the default value.
+  `domain`;;
+    The resource will be available on the specified domain only.
+  cluster_name;;
+    The resource will be available on every server instance in the
+    cluster.
+  instance_name;;
+    The resource will be available on the specified server instance
+    only.
++
+
+[NOTE]
+====
+The resource is always created for the domain as a whole, but the
+`resource-ref` for the resource is only created for the specified
+`--target`. This means that although the resource is defined at the
+domain level, it is only available at the specified target level. Use
+the `create-resource-ref` subcommand to refer to the resource in
+multiple targets if needed.
+====
+
+`--restype`::
+  The type of custom resource to be created. Specify a fully qualified
+  type definition, for example `javax.naming.spi.ObjectFactory`. The
+  resource type definition follows the format, xxx`.`xxx.
+`--factoryclass`::
+  Factory class name for the custom resource. This class implements the
+  `javax.naming.spi.ObjectFactory` interface.
+`--enabled`::
+  Determines whether the custom resource is enable at runtime. Default
+  is true.
+`--description`::
+  Text providing details about the custom resource. This description is
+  a string value and can include a maximum of 250 characters.
+`--property`::
+  Optional attribute name/value pairs for configuring the resource.
+
+[[sthref203]]
+
+=== Operands
+
+jndi-name::
+  The JNDI name of this resource.
+
+[[sthref204]]
+
+=== Examples
+
+[[GSRFM470]][[sthref205]]
+
+==== Example 1   Creating a Custom Resource
+
+This example creates a custom resource.
+
+[source]
+----
+asadmin> create-custom-resource --restype topic
+--factoryclass com.imq.topic mycustomresource
+Command create-custom-resource executed successfully.
+----
+
+[[sthref206]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref207]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-custom-resource.html#delete-custom-resource-1[`delete-custom-resource`(1)],
+link:list-custom-resources.html#list-custom-resources-1[`list-custom-resources`(1)],
+link:create-resource-ref.html#create-resource-ref-1[`create-resource-ref`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-domain.adoc b/docs/reference-manual/src/main/asciidoc/create-domain.adoc
new file mode 100644
index 0000000..5021696
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-domain.adoc
@@ -0,0 +1,460 @@
+type=page
+status=published
+title=create-domain
+next=create-file-user.html
+prev=create-custom-resource.html
+~~~~~~
+
+= create-domain
+
+[[create-domain-1]][[GSRFM00023]][[create-domain]]
+
+== create-domain
+
+Creates a domain
+
+[[sthref208]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-domain [--help]
+[--adminport adminport]
+[--instanceport instanceport]
+[--portbase portbase]
+[--profile profile-name]
+[--template template-name]
+[--domaindir domaindir]
+[--savemasterpassword={false|true}]
+[--usemasterpassword={false|true}]
+[--domainproperties (name=value)[:name=value]*]
+[--keytooloptions (name=value)[:name=value]*]
+[--savelogin={false|true}]
+[--checkports={true|false}]
+[--nopassword={false|true}]
+domain-name
+----
+
+[[sthref209]]
+
+=== Description
+
+The `create-domain` subcommand creates a {productName} domain. A
+domain in {productName} is an administrative namespace that complies
+with the Java Platform, Enterprise Edition (Jakarta EE) standard. Every
+domain has a configuration, which is stored in a set of files. Any
+number of domains, each of which has a distinct administrative identity,
+can be created in a given installation of {productName}. A domain
+can exist independently of other domains.
+
+Any user who has access to the `asadmin` utility on a given system can
+create a domain and store its configuration in a folder of the user's
+choosing. By default, the domain configuration is created in the default
+directory for domains. You can override this location to store the
+configuration elsewhere.
+
+If domain customizers are found in JAR files in the as-install``/modules``
+directory when the `create-domain` subcommand is run, the customizers
+are processed. A domain customizer is a class that implements the
+`DomainInitializer` interface.
+
+The `create-domain` subcommand creates a domain with a single
+administrative user specified by the `asadmin` utility option `--user`.
+If the `--user` option is not specified, and the `--nopassword` option
+is set to true, the default administrative user, `admin`, is used. If
+the `--nopassword` option is set to false (the default), a username is
+required. In this case, if you have not specified the user name by using
+the `--user` option, you are prompted to do so.
+
+You choose an appropriate profile for the domain, depending on the
+applications that you want to run on your new domain. You can choose the
+developer, cluster, or enterprise profile for the domain you create.
+
+This subcommand is supported in local mode only.
+
+[[sthref210]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--adminport`::
+  The HTTP port or the HTTPS port for administration. This port is the
+  port in the URL that you specify in your web browser to manage the
+  domain, for example, `http://localhost:4949`. The `--adminport` option
+  cannot be used with the `--portbase` option. The default value is 4848. +
+  The `--adminport` option overrides the `domain.adminPort` property of
+  the `--domainproperties` option.
+`--instanceport`::
+  The domain provides services so that applications can run when
+  deployed. This HTTP port specifies where the web application context
+  roots are available for a web browser to connect to. This port is a
+  positive integer and must be available at the time of domain creation.
+  The `--instanceport` option cannot be used with the `--portbase`
+  option. The default value is 8080. +
+  The `--instanceport` option overrides the `domain.instancePort`
+  property of the `--domainproperties` option.
+`--portbase`::
+  Determines the number with which port assignments should start. A
+  domain uses a certain number of ports that are statically assigned.
+  The portbase value determines where the assignment should start. The
+  values for the ports are calculated as follows:
+
+  * Administration port: portbase + 48
+  * HTTP listener port: portbase + 80
+  * HTTPS listener port: portbase + 81
+  * JMS port: portbase + 76
+  * IIOP listener port: portbase + 37
+  * Secure IIOP listener port: portbase + 38
+  * Secure IIOP with mutual authentication port: portbase + 39
+  * JMX port: portbase + 86
+  * JPDA debugger port: portbase + 9
+  * Felix shell service port for OSGi module management: portbase + 66
+
++
+When the `--portbase` option is specified, the output of this
+  subcommand includes a complete list of used ports. +
+  The `--portbase` option cannot be used with the `--adminport`,
+  `--instanceport`, or the `--domainproperties` option.
+`--profile`::
+  Do not specify this option. This option is retained for compatibility
+  with earlier releases. If you specify this option, a syntax error does
+  not occur. Instead, the subcommand runs successfully and displays a
+  warning message that the option is ignored.
+`--template`::
+  The file name, including a relative or absolute path, of a domain
+  configuration template to use for creating the domain. If a relative
+  path is specified, the subcommand appends the path to the
+  as-install``/lib/templates`` directory to locate the file. If it is an
+  absolute pathname, the subcommand locates the file in the specified
+  path. +
+  This option enables domains of different types to be created and
+  custom domain templates to be defined.
+`--domaindir`::
+  The directory where the domain is to be created. If specified, the
+  path must be accessible in the filesystem. If not specified, the
+  domain is created in the default domain directory,
+  as-install``/domains``.
+`--savemasterpassword`::
+  Setting this option to `true` allows the master password to be written
+  to the file system. If this option is `true`, the
+  `--usemasterpassword` option is also true, regardless of the value
+  that is specified on the command line. The default value is `false`. +
+  A master password is really a password for the secure key store. A
+  domain is designed to keep its own certificate (created at the time of
+  domain creation) in a safe place in the configuration location. This
+  certificate is called the domain's SSL server certificate. When the
+  domain is contacted by a web browser over a secure channel (HTTPS),
+  this certificate is presented by the domain. The master password is
+  supposed to protect the store (a file) that contains this certificate.
+  This file is called `keystore.jks` and is created in the configuration
+  directory of the domain created. If however, this option is chosen,
+  the master password is saved on the disk in the domain's configuration
+  location. The master password is stored in a file called
+  `master-password`, which is a Java JCEKS type keystore. The reason for
+  using the `--savemasterpassword` option is for unattended system
+  boots. In this case, the master password is not prompted for when the
+  domain starts because the password will be extracted from this file. +
+  It is best to create a master password when creating a domain, because
+  the master password is used by the `start-domain` subcommand. For
+  security purposes, the default setting should be false, because saving
+  the master password on the disk is an insecure practice, unless file
+  system permissions are properly set. If the master password is saved,
+  then `start-domain` does not prompt for it. The master password gives
+  an extra level of security to the environment.
+`--usemasterpassword`::
+  Specifies whether the key store is encrypted with a master password
+  that is built into the system or a user-defined master password. +
+  If `false` (default), the keystore is encrypted with a well-known
+  password that is built into the system. Encrypting the keystore with a
+  password that is built into the system provides no additional
+  security. +
+  If `true`, the subcommand obtains the master password from the
+  `AS_ADMIN_MASTERPASSWORD` entry in the password file or prompts for
+  the master password. The password file is specified in the
+  `--passwordfile` option of the
+  link:asadmin.html#asadmin-1m[`asadmin`(1M)]utility. +
+  If the `--savemasterpassword` option is `true`, this option is also
+  true, regardless of the value that is specified on the command line.
+`--domainproperties`::
+  Setting the optional name/value pairs overrides the default values for
+  the properties of the domain to be created. The list must be separated
+  by the colon (:) character. The `--portbase` options cannot be used
+  with the `--domainproperties` option. The following properties are
+  available:
+
+  `domain.adminPort`;;
+    This property specifies the port number of the HTTP port or the
+    HTTPS port for administration. This port is the port in the URL that
+    you specify in your web browser to manage the instance, for example,
+    `http://localhost:4949`. Valid values are 1-65535. On UNIX, creating
+    sockets that listen on ports 1-1024 requires superuser privileges. +
+    The `domain.adminPort` property is overridden by the `--adminport`
+    option.
+  `domain.instancePort`;;
+    This property specifies the port number of the port that is used to
+    listen for HTTP requests. Valid values are 1-65535. On UNIX,
+    creating sockets that listen on ports 1-1024 requires superuser
+    privileges. +
+    The `domain.instancePort` property is overridden by `--instanceport`
+    option.
+  `domain.jmxPort`;;
+    This property specifies the port number on which the JMX connector
+    listens. Valid values are 1-65535. On UNIX, creating sockets that
+    listen on ports 1-1024 requires superuser privileges.
+  `http.ssl.port`;;
+    This property specifies the port number of the port that is used to
+    listen for HTTPS requests. Valid values are 1-65535. On UNIX,
+    creating sockets that listen on ports 1-1024 requires superuser
+    privileges.
+  `java.debugger.port`;;
+    This property specifies the port number of the port that is used for
+    connections to the
+    http://java.sun.com/javase/technologies/core/toolsapis/jpda/[Java
+    Platform Debugger Architecture (JPDA)]
+    (http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html)
+    debugger. Valid values are 1-65535. On UNIX, creating sockets that
+    listen on ports 1-1024 requires superuser privileges.
+  `jms.port`;;
+    This property specifies the port number for the Java Message Service
+    provider. Valid values are 1-65535. On UNIX, creating sockets that
+    listen on ports 1-1024 requires superuser privileges.
+  `orb.listener.port`;;
+    This property specifies the port number of the port that is used for
+    IIOP connections. Valid values are 1-65535. On UNIX, creating
+    sockets that listen on ports 1-1024 requires superuser privileges.
+  `orb.mutualauth.port`;;
+    This property specifies the port number of the port that is used for
+    secure IIOP connections with client authentication. Valid values are
+    1-65535. On UNIX, creating sockets that listen on ports 1-1024
+    requires superuser privileges.
+  `orb.ssl.port`;;
+    This property specifies the port number of the port that is used for
+    secure IIOP connections. Valid values are 1-65535. On UNIX, creating
+    sockets that listen on ports 1-1024 requires superuser privileges.
+  `osgi.shell.telnet.port`;;
+    This property specifies the port number of the port that is used for
+    connections to the
+    http://felix.apache.org/site/apache-felix-remote-shell.html[Apache
+    Felix Remote Shell]
+    (http://felix.apache.org/site/apache-felix-remote-shell.html). This
+    shell uses the Felix shell service to interact with the OSGi module
+    management subsystem. Valid values are 1-65535. On UNIX, creating
+    sockets that listen on ports 1-1024 requires superuser privileges.
+
+`--keytooloptions`::
+  Specifies an optional list of name-value pairs of keytool options for
+  a self-signed server certificate. The certificate is generated during
+  the creation of the domain. Each pair in the list must be separated by
+  the colon (:) character. +
+  Allowed options are as follows:
+
+  `CN`;;
+    Specifies the common name of the host that is to be used for the
+    self-signed certificate. This option name is case insensitive. +
+    By default, the name is the fully-qualified name of the host where
+    the `create-domain` subcommand is run.
+
+`--savelogin`::
+  If set to true, this option saves the administration user name and
+  password. Default value is false. The username and password are stored
+  in the `.asadminpass` file in user's home directory. A domain can only
+  be created locally. Therefore, when using the `--savelogin` option,
+  the host name saved in `.asadminpass` is always `localhost`. If the
+  user has specified default administration port while creating the
+  domain, there is no need to specify `--user`, `--passwordfile`,
+  `--host`, or `--port` on any of the subsequent `asadmin` remote
+  commands. These values will be obtained automatically.
++
+
+[NOTE]
+====
+When the same user creates multiple domains that have the same
+administration port number on the same or different host (where the
+home directory is NFS mounted), the subcommand does not ask if the
+password should be overwritten. The password will always be
+overwritten.
+====
+`--checkports`::
+  Specifies whether to check for the availability of the administration,
+  HTTP, JMS, JMX, and IIOP ports. The default value is true.
+`--nopassword`::
+  Specifies whether the administrative user will have a password. If
+  false (the default), the password is specified by the
+  `AS_ADMIN_PASSWORD` entry in the `asadmin` password file (set by using
+  the `--passwordfile` option). If false and the `AS_ADMIN_PASSWORD` is
+  not set, you are prompted for the password. +
+  If true, the administrative user is created without a password. If a
+  user name for the domain is not specified by using the `--user`
+  option, and the `--nopassword` option is set to true, the default user
+  name, `admin`, is used.
+
+[[sthref211]]
+
+=== Operands
+
+domain-name::
+  The name of the domain to be created. The name may contain only ASCII
+  characters and must be a valid directory name for the operating system
+  on the host where the domain is created.
+
+[[sthref212]]
+
+=== Examples
+
+[[GSRFM471]][[sthref213]]
+
+==== Example 1   Creating a Domain
+
+This example creates a domain named `domain4`.
+
+[source]
+----
+asadmin>create-domain --adminport 4848 domain4
+Enter admin user name [Enter to accept default "admin" / no password]>
+Using port 4848 for Admin.
+Using default port 8080 for HTTP Instance.
+Using default port 7676 for JMS.
+Using default port 3700 for IIOP.
+Using default port 8181 for HTTP_SSL.
+Using default port 3820 for IIOP_SSL.
+Using default port 3920 for IIOP_MUTUALAUTH.
+Using default port 8686 for JMX_ADMIN.
+Using default port 6666 for OSGI_SHELL.
+Distinguished Name of the self-signed X.509 Server Certificate is:
+[CN=sr1-usca-22,OU=GlassFish,O=Oracle Corp.,L=Redwood Shores,ST=California,C=US]
+No domain initializers found, bypassing customization step
+Domain domain4 created.
+Domain domain4 admin port is 4848.
+Domain domain4 allows admin login as user "admin" with no password.
+Command create-domain executed successfully.
+----
+
+[[GSRFM472]][[sthref214]]
+
+==== Example 2   Creating a Domain in an Alternate Directory
+
+This example creates a domain named `sampleDomain` in the
+`/home/someuser/domains` directory.
+
+[source]
+----
+asadmin> create-domain --domaindir /home/someuser/domains --adminport 7070
+--instanceport 7071 sampleDomain
+Enter admin user name [Enter to accept default "admin" / no password]>
+Using port 7070 for Admin.
+Using port 7071 for HTTP Instance.
+Using default port 7676 for JMS.
+Using default port 3700 for IIOP.
+Using default port 8181 for HTTP_SSL.
+Using default port 3820 for IIOP_SSL.
+Using default port 3920 for IIOP_MUTUALAUTH.
+Using default port 8686 for JMX_ADMIN.
+Using default port 6666 for OSGI_SHELL.
+Enterprise ServiceDistinguished Name of the self-signed X.509 Server Certificate is:
+[CN=sr1-usca-22,OU=GlassFish,O=Oracle Corp.,L=Redwood Shores,ST=California,C=US]
+No domain initializers found, bypassing customization step
+Domain sampleDomain created.
+Domain sampleDomain admin port is 7070.
+Domain sampleDomain allows admin login as user "admin" with no password.
+Command create-domain executed successfully.
+----
+
+[[GSRFM473]][[sthref215]]
+
+==== Example 3   Creating a Domain and Saving the Administration User Name and Password
+
+This example creates a domain named `myDomain` and saves the
+administration username and password.
+
+[source]
+----
+asadmin> create-domain --adminport 8282 --savelogin=true myDomain
+Enter the admin password [Enter to accept default of no password]>
+Enter the master password [Enter to accept default password "changeit"]>
+Using port 8282 for Admin.
+Using default port 8080 for HTTP Instance.
+Using default port 7676 for JMS.
+Using default port 3700 for IIOP.
+Using default port 8181 for HTTP_SSL.
+Using default port 3820 for IIOP_SSL.
+Using default port 3920 for IIOP_MUTUALAUTH.
+Using default port 8686 for JMX_ADMIN.
+Using default port 6666 for OSGI_SHELL.
+Enterprise ServiceDistinguished Name of the self-signed X.509 Server Certificate is:
+[CN=sr1-usca-22,OU=GlassFish,O=Oracle Corp.,L=Redwood Shores,ST=California,C=US]
+No domain initializers found, bypassing customization step
+Domain myDomain created.
+Domain myDomain admin port is 8282.
+Domain myDomain allows admin login as user "admin" with no password.
+Login information relevant to admin user name [admin]
+for this domain [myDomain] stored at
+[/home/someuser/.asadminpass] successfully.
+Make sure that this file remains protected.
+Information stored in this file will be used by
+asadmin commands to manage this domain.
+Command create-domain executed successfully.
+----
+
+[[GSRFM474]][[sthref216]]
+
+==== Example 4   Creating a Domain and Designating the Certificate Host
+
+This example creates a domain named `domain5`. The common name of the
+host that is to be used for the self-signed certificate is `trio`.
+
+[source]
+----
+asadmin> create-domain --adminport 9898 --keytooloptions CN=trio domain5
+Enter the admin password [Enter to accept default of no password]>
+Enter the master password [Enter to accept default password "changeit"]>
+Using port 9898 for Admin.
+Using default port 8080 for HTTP Instance.
+Using default port 7676 for JMS.
+Using default port 3700 for IIOP.
+Using default port 8181 for HTTP_SSL.
+Using default port 3820 for IIOP_SSL.
+Using default port 3920 for IIOP_MUTUALAUTH.
+Using default port 8686 for JMX_ADMIN.
+Using default port 6666 for OSGI_SHELL.
+Distinguished Name of the self-signed X.509 Server Certificate is:
+[CN=trio,OU=GlassFish,O=Oracle Corp.,L=Redwood Shores,ST=California,C=US]
+No domain initializers found, bypassing customization step
+Domain domain5 created.
+Domain domain5 admin port is 9898.
+Domain domain5 allows admin login as user "admin" with no password.
+Command create-domain executed successfully.
+----
+
+[[sthref217]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref218]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-domain.html#delete-domain-1[`delete-domain`(1)],
+link:list-domains.html#list-domains-1[`list-domains`(1)],
+link:login.html#login-1[`login`(1)],
+link:start-domain.html#start-domain-1[`start-domain`(1)],
+link:stop-domain.html#stop-domain-1[`stop-domain`(1)]
+
+Apache Felix Remote Shell
+(`http://felix.apache.org/site/apache-felix-remote-shell.html`), Java
+Platform Debugger Architecture (JPDA)
+(`http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html`)
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-file-user.adoc b/docs/reference-manual/src/main/asciidoc/create-file-user.adoc
new file mode 100644
index 0000000..7ea76ea
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-file-user.adoc
@@ -0,0 +1,118 @@
+type=page
+status=published
+title=create-file-user
+next=create-http.html
+prev=create-domain.html
+~~~~~~
+
+= create-file-user
+
+[[create-file-user-1]][[GSRFM00024]][[create-file-user]]
+
+== create-file-user
+
+Creates a new file user
+
+[[sthref219]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-file-user [--help]
+[--authrealmnameauth_realm_name]
+[--target target
+[--groups user_groups[:user_groups]*] user_name
+----
+
+[[sthref220]]
+
+=== Description
+
+The `create-file-user` subcommand creates an entry in the keyfile with
+the specified username, password, and groups. Multiple groups can be
+created by separating them with a colon (`:`). If auth_realm_name is not
+specified, an entry is created in the keyfile for the default realm. If
+auth_realm_name is specified, an entry is created in the keyfile using
+the `auth_realm_name`.
+
+You can use the `--passwordfile` option of the
+link:asadmin.html#asadmin-1m[`asadmin`(1M)] command to specify the
+password for the user. The password file entry must be of the form
+`AS_ADMIN_USERPASSWORD=`user-password.
+
+If a password is not provided, this subcommand fails if secure
+administration is enabled and the user being created is an
+administrative user.
+
+This subcommand is supported in remote mode only.
+
+[[sthref221]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  This is the name of the target on which the command operates. The
+  valid targets are config, instance, cluster, or server. By default,
+  the target is the server.
+`--groups`::
+  This is the group associated with this file user.
+`--authrealmname`::
+  The name of the realm in which the new user is created. If you do not
+  specify this option, the user is created in the "file" realm.
+
+[[sthref222]]
+
+=== Operands
+
+user_name::
+  This is the name of file user to be created.
+
+[[sthref223]]
+
+=== Examples
+
+[[GSRFM475]][[sthref224]]
+
+==== Example 1   Creating a User in the File Realm
+
+This example creates a file realm user named `sample_user`. It is
+assumed that an authentication realm has already been created using the
+`create-auth-realm` subcommand.
+
+[source]
+----
+asadmin> create-file-user
+--groups staff:manager
+--authrealmname auth-realm1 sample_user
+Command create-file-user executed successfully
+----
+
+[[sthref225]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref226]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-auth-realm.html#create-auth-realm-1[`create-auth-realm`(1)],
+link:delete-file-user.html#delete-file-user-1[`delete-file-user`(1)],
+link:list-file-groups.html#list-file-groups-1[`list-file-groups`(1)],
+link:list-file-users.html#list-file-users-1[`list-file-users`(1)],
+link:update-file-user.html#update-file-user-1[`update-file-user`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-http-health-checker.adoc b/docs/reference-manual/src/main/asciidoc/create-http-health-checker.adoc
new file mode 100644
index 0000000..09cdfe2
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-http-health-checker.adoc
@@ -0,0 +1,117 @@
+type=page
+status=published
+title=create-http-health-checker
+next=create-http-lb.html
+prev=create-http.html
+~~~~~~
+
+= create-http-health-checker
+
+[[create-http-health-checker-1]][[GSRFM00026]][[create-http-health-checker]]
+
+== create-http-health-checker
+
+Creates a health-checker for a specified load balancer configuration
+
+[[sthref235]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-http-health-checker [--help]
+[--url "/"]
+[--interval 30] [--timeout 10]
+[--config config_name] target
+----
+
+[[sthref236]]
+
+=== Description
+
+The `create-http-health-checker` subcommand creates a health checker for
+a specified load balancer configuration. A health checker is unique for
+the combination of target and load balancer configuration.
+
+
+[NOTE]
+====
+This subcommand is only applicable to {productName}. This
+subcommand is not applicable to {productName}.
+====
+
+
+[[sthref237]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--url`::
+  The URL to ping to determine whether the instance is healthy.
+`--interval`::
+  The interval in seconds the health checker waits between checks of an
+  unhealthy instance to see whether it has become healthy. The default
+  value is 30 seconds. A value of 0 disables the health checker.
+`--timeout`::
+  The interval in seconds the health checker waits to receive a response
+  from an instance. If the health checker has not received a response in
+  this interval, the instance is considered unhealthy.
+`--config`::
+  The load balancer configuration for which you create the
+  health-checker. If you do not specify a configuration, the subcommand
+  creates a health checker for every load balancer configuration
+  associated with the target. If no configuration references the target,
+  the subcommand fails.
+
+[[sthref238]]
+
+=== Operands
+
+target::
+  Specifies the target to which the health checker applies. +
+  Valid values are:
+
+  * cluster_name- The name of a target cluster.
+  * instance_name- The name of a target server instance.
+
+[[sthref239]]
+
+=== Examples
+
+[[GSRFM477]][[sthref240]]
+
+==== Example 1   Creating a Health Checker for a Load Balancer Configuration
+
+This example creates a health checker for a load balancer configuration
+named `mycluster-http-lb-config` on a cluster named `mycluster`.
+
+[source]
+----
+asadmin> create-http-health-checker --config mycluster-http-lb-config mycluster
+
+Command create-http-health-checker executed successfully.
+----
+
+[[sthref241]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref242]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-http-health-checker.html#delete-http-health-checker-1[`delete-http-health-checker`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-http-lb-config.adoc b/docs/reference-manual/src/main/asciidoc/create-http-lb-config.adoc
new file mode 100644
index 0000000..020df7a
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-http-lb-config.adoc
@@ -0,0 +1,145 @@
+type=page
+status=published
+title=create-http-lb-config
+next=create-http-lb-ref.html
+prev=create-http-lb.html
+~~~~~~
+
+= create-http-lb-config
+
+[[create-http-lb-config-1]][[GSRFM00028]][[create-http-lb-config]]
+
+== create-http-lb-config
+
+Creates a configuration for the load balancer
+
+[[sthref251]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-http-lb-config [--help]
+[--responsetimeout 60]
+[httpsrouting=false] [--reloadinterval 60]
+[--monitor=false] [--property (name=value)[:name=value]*]
+--target target | config_name
+----
+
+[[sthref252]]
+
+=== Description
+
+Use the `create-http-lb-config` subcommand to create a load balancer
+configuration. This configuration applies to load balancing in the HTTP
+path. After using this subcommand to create the load balancer
+configuration file, create the load balancer by running `create-http-lb`.
+
+You must specify either a target or a configuration name, or both. If
+you do not specify a target, the configuration is created without a
+target and you add one later using `create-http-lb-ref`. If you don't
+specify a configuration name, a name is created based on the target
+name. If you specify both, the configuration is created with the
+specified name, referencing the specified target.
+
+
+[NOTE]
+====
+This subcommand is only applicable to {productName}. This
+subcommand is not applicable to {productName}.
+====
+
+
+[[sthref253]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--responsetimeout`::
+  The time in seconds within which a server instance must return a
+  response. If no response is received within the time period, the
+  server is considered unhealthy. If set to a positive number, and the
+  request is idempotent, the request is retried. If the request is not
+  idempotent, an error page is returned. If set to 0 no timeout is used.
+  The default is 60.
+`--httpsrouting`::
+  If set to `true`, HTTPS requests to the load balancer result in HTTPS
+  requests to the server instance. If set to `false`, HTTPS requests to
+  the load balancer result in HTTP requests to the server instance. The
+  default is `false`.
+`--reloadinterval`::
+  The interval between checks for changes to the load balancer
+  configuration file `loadbalancer.xml`. When the check detects changes,
+  the configuration file is reloaded. A value of `0` disables reloading.
+`--monitor`::
+  Specifies whether monitoring is enabled. The default is `false`.
+`--routecookie`::
+  This option is deprecated. The value is always `true`.
+`--property`::
+  Optional attribute name/value pairs for configuring the load balancer.
+`--target`::
+  Specifies the target to which the load balancer configuration applies.
+  If you don't specify a target, the load balancer configuration is
+  created without a target. You can specify targets later using the
+  subcommand `create-http-lb-ref`. +
+  Valid values are:
+
+  * cluster_name- Specifies that requests for this cluster will be
+  handled by the load balancer.
+  * stand-alone_instance_name- Specifies that requests for this
+  standalone instance will be handled by the load balancer.
+
+[[sthref254]]
+
+=== Operands
+
+config_name::
+  The name of the new load balancer configuration. This name must not
+  conflict with any other load balancer groups, agents, configurations,
+  clusters, or sever instances in the domain. If you don't specify a
+  name, the load balancer configuration name is based on the target
+  name, target_name`-http-lb-config`.
+
+[[sthref255]]
+
+=== Examples
+
+[[GSRFM479]][[sthref256]]
+
+==== Example 1   Creating a Load Balancer Configuration
+
+This example creates a load balancer configuration on a target named
+`mycluster` and load balancer configuration named `mylbconfigname`.
+
+[source]
+----
+asadmin> create-http-lb-config --target mycluster mylbconfigname
+
+Command create-http-lb-config executed successfully.
+----
+
+[[sthref257]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref258]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-http-lb-config.html#delete-http-lb-config-1[`delete-http-lb-config`(1)],
+link:list-http-lb-configs.html#list-http-lb-configs-1[`list-http-lb-configs`(1)],
+link:create-http-lb.html#create-http-lb-1[`create-http-lb`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-http-lb-ref.adoc b/docs/reference-manual/src/main/asciidoc/create-http-lb-ref.adoc
new file mode 100644
index 0000000..c607127
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-http-lb-ref.adoc
@@ -0,0 +1,212 @@
+type=page
+status=published
+title=create-http-lb-ref
+next=create-http-listener.html
+prev=create-http-lb-config.html
+~~~~~~
+
+= create-http-lb-ref
+
+[[create-http-lb-ref-1]][[GSRFM00029]][[create-http-lb-ref]]
+
+== create-http-lb-ref
+
+Adds an existing cluster or server instance to an existing load balancer
+configuration or load balancer
+
+[[sthref259]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-http-lb-ref [--help]
+--config config_name | --lbname load_balancer_name
+[--lbpolicy round-robin] [--lbpolicymodule lb_policy_module]
+[--healthcheckerurl url] [--healthcheckerinterval 10]
+[--healthcheckertimeout 10] [--lbenableallinstances=true]
+[--lbenableallapplications=true] [--lbweight instance=weight[:instance=weight]*]
+target
+----
+
+[[sthref260]]
+
+=== Description
+
+Use the `create-http-lb-ref` subcommand to:
+
+* Add an existing cluster or server instance to an existing load
+balancer configuration or load balancer. The load balancer forwards the
+requests to the clustered and standalone instances it references.
+* Set the load balancing policy to round-robin, weighted round-robin, or
+to a user-defined policy.
+* Configure a health checker for the load balancer. Any health checker
+settings defined here apply only to the target. If you do not create a
+health checker with this subcommand, use `create-http-health-checker`.
+* Enable all instances in the target cluster for load balancing, or use
+`enable-http-lb-server` to enable them individually.
+* Enable all applications deployed to the target for load balancing, or
+use `enable-http-lb-application` to enable them individually.
+
+
+[NOTE]
+====
+This subcommand is only applicable to {productName}. This
+subcommand is not applicable to {productName}.
+====
+
+
+[[sthref261]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--config`::
+  Specifies which load balancer configuration to which to add clusters
+  and server instances. Specify either a load balancer configuration or
+  a load balancer. Specifying both results in an error.
+`--lbname`::
+  Specifies the load balancer to which to add clusters and server
+  instances. Specify either a load balancer configuration or a load
+  balancer. Specifying both results in an error.
+`--lbpolicy`::
+  The policy the load balancer follows. Valid values are `round-robin`,
+  `weighted-round-robin`, and `user-defined`. If you choose
+  user-defined, specify a load balancer policy module with the
+  `lbpolicymodule` option. If you choose `weighted-round-robin` assign
+  weights to the server instances using the `configure-lb-weight`
+  subcommand. The default is `round-robin`.
+`--lbpolicymodule`::
+  If your load balancer policy is `user-defined`, use this option to
+  specify the full path and name of the shared library of your load
+  balancing policy module. The shared library needs to be in a location
+  accessible by the web server.
+`--healthcheckerurl`::
+  The URL to ping to determine whether the instance is healthy.
+`--healthcheckerinterval`::
+  The interval in seconds the health checker waits between checks of an
+  unhealthy instance to see whether it has become healthy. The default
+  value is 30 seconds. A value of 0 disables the health checker.
+`--healthcheckertimeout`::
+  The interval in seconds the health checker waits to receive a response
+  from an instance. If the health checker has not received a response in
+  this interval, the instance is considered unhealthy. The default is
+  10.
+`--lbenableallinstances`::
+  Enables all instances in the target cluster for load balancing. If the
+  target is a server instance, enables that instance for load balancing.
+  The default value is true.
+`--lbenableallapplications`::
+  Enables all applications deployed to the target cluster or instance
+  for load balancing. The default value is true.
+`--lbweight`::
+  The name of the instance and the weight you are assigning it. The
+  weight must be an integer. The pairs of instances and weights are
+  separated by colons. For example `instance1=1:instance2=4` means that
+  for every five requests, one goes to instance1 and four go to
+  instance2. A weight of 1 is the default.
+
+[[sthref262]]
+
+=== Operands
+
+target::
+  Specifies which cluster or instance to add to the load balancer. Valid
+  values are:
++
+  * cluster_name- Specifies that requests for this cluster will be
+  handled by the load balancer.
+  * stand-alone_instance_name- Specifies that requests for this
+  standalone instance will be handled by the load balancer.
+
+[[sthref263]]
+
+=== Examples
+
+[[GSRFM480]][[sthref264]]
+
+==== Example 1   Adding a Cluster Reference to a Load Balancer Configuration
+
+This example adds a reference to a cluster named `cluster2` to a load
+balancer configuration named `mylbconfig`.
+
+[source]
+----
+asadmin> create-http-lb-ref --config mylbconfig cluster2
+
+Command create-http-lb-ref executed successfully.
+----
+
+[[GSRFM481]][[sthref265]]
+
+==== Example 2   Adding a Cluster Reference to a Load Balancer
+
+This example adds a reference to a cluster named `cluster2` to a load
+balancer named `mylb`.
+
+[source]
+----
+asadmin> create-http-lb-ref --lbname mylb cluster2
+
+Command create-http-lb-ref executed successfully.
+----
+
+[[GSRFM482]][[sthref266]]
+
+==== Example 3   Configuring a Health Checker and Load Balancer Policy
+
+This example configures a health checker and load balancing policy, and
+enables the load balancer for instances and applications.
+
+[source]
+----
+asadmin> create-http-lb-ref --config mylbconfig --lbpolicy weighted-round-robin
+--healthcheckerinterval 40 --healthcheckertimeout 20
+--lbenableallinstances=true --lbenableallapplications=true cluster2
+
+Command create-http-lb-ref executed successfully.
+----
+
+[[GSRFM483]][[sthref267]]
+
+==== Example 4   Setting a User-Defined Load Balancing Policy
+
+This example sets a user-defined load balancing policy.
+
+[source]
+----
+asadmin> create-http-lb-ref --lbpolicy user-defined --lbpolicymodule /user/modules/module.so
+--config mylbconfig cluster2
+
+Command create-http-lb-ref executed successfully.
+----
+
+[[sthref268]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref269]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:configure-lb-weight.html#configure-lb-weight-1[`configure-lb-weight`(1)],
+link:create-http-health-checker.html#create-http-health-checker-1[`create-http-health-checker`(1)],
+link:delete-http-lb-ref.html#delete-http-lb-ref-1[`delete-http-lb-ref`(1)],
+link:enable-http-lb-application.html#enable-http-lb-application-1[`enable-http-lb-application`(1)],
+link:enable-http-lb-server.html#enable-http-lb-server-1[`enable-http-lb-server`(1)],
+link:list-http-lb-configs.html#list-http-lb-configs-1[`list-http-lb-configs`(1)],
+link:list-http-lbs.html#list-http-lbs-1[`list-http-lbs`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-http-lb.adoc b/docs/reference-manual/src/main/asciidoc/create-http-lb.adoc
new file mode 100644
index 0000000..7d64221
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-http-lb.adoc
@@ -0,0 +1,188 @@
+type=page
+status=published
+title=create-http-lb
+next=create-http-lb-config.html
+prev=create-http-health-checker.html
+~~~~~~
+
+= create-http-lb
+
+[[create-http-lb-1]][[GSRFM00027]][[create-http-lb]]
+
+== create-http-lb
+
+Creates a load balancer
+
+[[sthref243]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-http-lb [--help]
+--devicehost device_host_or_IP_address --deviceport device_port
+[--sslproxyhost proxy_host]
+[--sslproxyport proxy_port] [--target target] [--lbpolicy lbpolicy] [--lbpolicymodule lb_policy_module] [--healthcheckerurl url]
+[--healthcheckerinterval 10] [--healthcheckertimeout 10]
+[--lbenableallinstances=true] [--lbenableallapplications=true] [--lbweight instance=weight[:instance=weight]*] [--responsetimeout 60] [--httpsrouting=false] [--reloadinterval60][--monitor=false][--routecookie=true]
+[--property (name=value)[:name=value]*
+] load_balancer_name
+----
+
+[[sthref244]]
+
+=== Description
+
+Use the `create-http-lb` subcommand to create a load balancer, including
+the load balancer configuration, target reference, and health checker. A
+load balancer is a representation of the actual load balancer device,
+defined by its device host and port information. Once you've created the
+load balancer, you can automatically apply changes made to the load
+balancer configuration without running `export-http-lb-config` and
+manually copying the generated load balancer configuration file to the
+web server instance.
+
+
+[NOTE]
+====
+This subcommand is only applicable to {productName}. This
+subcommand is not applicable to {productName}.
+====
+
+
+[[sthref245]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--devicehost`::
+  The device host or the IP address of the load balancing device. This
+  host or IP is where the physical load balancer will reside.
+`--deviceport`::
+  The port used to communicate with the load balancing device. It must
+  be SSL enabled.
+`--sslproxyhost`::
+  The proxy host used for outbound HTTP.
+`--sslproxyport`::
+  The proxy port used for outbound HTTP.
+`--target`::
+  Specifies the target to which the load balancer applies. +
+  Valid values are:
+
+  * cluster_name - Specifies that requests for this cluster will be
+  handled by the load balancer.
+  * stand-alone_instance_name - Specifies that requests for this
+  stand-alone instance will be handled by the load balancer.
+
+`--lbpolicy`::
+  The policy the load balancer follows to distribute load to the server
+  instances in a cluster. Valid values are `round-robin`,
+  `weighted-round-robin`, and `user-defined`. If you choose
+  `user-defined`, specify a load balancer policy module with the
+  `lbpolicymodule` option. If you choose `weighted-round-robin`, assign
+  weights to the server instances using the `configure-lb-weight`
+  subcommand. The default is `round-robin`.
+`--lbpolicymodule`::
+  If your target is a cluster and the load balancer policy is
+  `user-defined`, use this option to specify the full path and name of
+  the shared library of your load balancing policy module. The shared
+  library needs to be in a location accessible by the web server.
+`--healthcheckerurl`::
+  The URL to ping to determine whether the instance is healthy.
+`--healthcheckerinterval`::
+  The interval in seconds the health checker waits between checks of an
+  unhealthy instance to see whether it has become healthy. The default
+  value is 10 seconds. A value of 0 disables the health checker.
+`--healthcheckertimeout`::
+  The interval in seconds the health checker waits to receive a response
+  from an instance. If the health checker has not received a response in
+  this interval, the instance is considered unhealthy. The default value
+  is 10 seconds.
+`--lbenableallinstances`::
+  Enables all instances in the target cluster for load balancing. If the
+  target is a server instance, enables that instance for load balancing.
+`--lbenableallapplications`::
+  Enables all applications deployed to the target cluster or instance
+  for load balancing.
+`--lbweight`::
+  The name of the instance and the weight you are assigning it. The
+  weight must be an integer. The pairs of instances and weights are
+  separated by colons. For example `instance1=1:instance2=4` means that
+  for every five requests, one goes to instance1 and four go to
+  instance2. A weight of 1 is the default.
+`--responsetimeout`::
+  The time in seconds within which a server instance must return a
+  response. If no response is received within the time period, the
+  server is considered unhealthy. If set to a positive number, and the
+  request is idempotent, the request is retried. If the request is not
+  idempotent, an error page is returned. If set to 0 no timeout is used.
+  The default is 60.
+`--httpsrouting`::
+  If set to `true`, HTTPS requests to the load balancer result in HTTPS
+  requests to the server instance. If set to `false`, HTTPS requests to
+  the load balancer result in HTTP requests to the server instance. The
+  default is `false`.
+`--reloadinterval`::
+  The time, in seconds, that the load balancer takes to check for an
+  updated configuration. When detected, the configuration file is
+  reloaded. The default value is 60 seconds. A value of 0 disables
+  reloading.
+`--monitor`::
+  If set to `true`, monitoring of the load balancer is switched on. The
+  default value is `false`.
+`--routecookie`::
+  This option is deprecated. The value is always true.
+`--property`::
+  Optional attribute name/value pairs for configuring the load balancer.
+
+[[sthref246]]
+
+=== Operands
+
+lb_name::
+  The name of the new load balancer. This name must not conflict with
+  any other load balancers in the domain.
+
+[[sthref247]]
+
+=== Examples
+
+[[GSRFM478]][[sthref248]]
+
+==== Example 1   Creating a Load Balancer
+
+This example creates a load balancer named `mylb`.
+
+[source]
+----
+asadmin> create-http-lb
+--devicehost host1 --deviceport 5555 mylb
+
+Command create-http-lb executed successfully.
+----
+
+[[sthref249]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref250]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-http-lb.html#delete-http-lb-1[`delete-http-lb`(1)],
+link:list-http-lbs.html#list-http-lbs-1[`list-http-lbs`(1)],
+link:create-http-lb-config.html#create-http-lb-config-1[`create-http-lb-config`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-http-listener.adoc b/docs/reference-manual/src/main/asciidoc/create-http-listener.adoc
new file mode 100644
index 0000000..2f8f4d1
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-http-listener.adoc
@@ -0,0 +1,180 @@
+type=page
+status=published
+title=create-http-listener
+next=create-http-redirect.html
+prev=create-http-lb-ref.html
+~~~~~~
+
+= create-http-listener
+
+[[create-http-listener-1]][[GSRFM00030]][[create-http-listener]]
+
+== create-http-listener
+
+Adds a new HTTP network listener socket
+
+[[sthref270]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-http-listener [--help]
+--listeneraddress address
+--listenerport listener-port
+{--default-virtual-server | --defaultvs} virtual-server
+[--servername server-name]
+[--acceptorthreads acceptor-threads]
+[--xpowered={true|false}]
+[--redirectport redirect-port]
+[--securityenabled={false|true}]
+[--enabled={true|false}]
+[--target target]
+listener-id
+----
+
+[[sthref271]]
+
+=== Description
+
+The `create-http-listener` subcommand creates an HTTP network listener.
+This subcommand is supported in remote mode only.
+
+
+[NOTE]
+====
+If you edit the special HTTP network listener named `admin-listener`,
+you must restart the server for the changes to take effect. The
+Administration Console does not tell you that a restart is required in
+this case.
+====
+
+[NOTE]
+====
+This subcommand is provided for backward compatibility and as a shortcut
+for creating network listeners that use the HTTP protocol. Behind the
+scenes, this subcommand creates a network listener and its associated
+protocol, transport, and HTTP configuration.
+====
+
+
+[[sthref272]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--listeneraddress`::
+  The IP address or the hostname (resolvable by DNS).
+`--listenerport`::
+  The port number to create the listen socket on. Legal values are
+  1-65535. On UNIX, creating sockets that listen on ports 1-1024
+  requires superuser privileges. Configuring an SSL listen socket to
+  listen on port 443 is recommended.
+`--default-virtual-server`::
+`--defaultvs`::
+  The ID attribute of the default virtual server for this listener. The
+  `--defaultvs` option is deprecated.
+`--servername`::
+  Tells the server what to put in the host name section of any URLs it
+  sends to the client. This affects URLs the server automatically
+  generates; it doesn't affect the URLs for directories and files stored
+  in the server. This name should be the alias name if your server uses
+  an alias. If a colon and port number are appended, that port will be
+  used in URLs that the server sends to the client.
+`--acceptorthreads`::
+  The number of acceptor threads for the listener socket. The
+  recommended value is the number of processors in the machine. The
+  default value is 1.
+`--xpowered`::
+  If set to `true`, adds the `X-Powered-By: Servlet/3.0` and
+  `X-Powered-By: JSP/2.0` headers to the appropriate responses. The
+  Servlet 3.0 specification defines the `X-Powered-By: Servlet/3.0`
+  header, which containers may add to servlet-generated responses.
+  Similarly, the JSP 2.0 specification defines the
+  `X-Powered-By: JSP/2.0` header, which containers may add to responses
+  that use JSP technology. The goal of these headers is to aid in
+  gathering statistical data about the use of Servlet and JSP
+  technology. The default value is `true`.
+`--redirectport`::
+  Do not specify this option. This option is retained for compatibility
+  with earlier releases. If you specify this option, a syntax error does
+  not occur. Instead, the subcommand runs successfully and displays a
+  warning message that the option is ignored.
+`--securityenabled`::
+  If set to true, the HTTP listener runs SSL. You can turn SSL2 or SSL3
+  ON or OFF and set ciphers using an SSL element. The security setting
+  globally enables or disables SSL by making certificates available to
+  the server instance. The default value is `false`.
+`--enabled`::
+  If set to true, the listener is enabled at runtime. The default value
+  is `true`.
+`--target`::
+  Creates the HTTP listener only on the specified target. Valid values
+  are as follows:
++
+  `server`;;
+    Creates the HTTP listener on the default server instance. This is
+    the default value.
+  configuration-name;;
+    Creates the HTTP listener in the specified configuration.
+  cluster-name;;
+    Creates the HTTP listener on all server instances in the specified
+    cluster.
+  standalone-instance-name;;
+    Creates the HTTP listener on the specified standalone server
+    instance.
+
+[[sthref273]]
+
+=== Operands
+
+listener-id::
+  The listener ID of the HTTP network listener.
+
+[[sthref274]]
+
+=== Examples
+
+[[GSRFM484]][[sthref275]]
+
+==== Example 1   Creating an HTTP Network Listener
+
+The following command creates an HTTP network listener named
+`sampleListener` that uses a nondefault number of acceptor threads and
+is not enabled at runtime:
+
+[source]
+----
+asadmin> create-http-listener --listeneraddress 0.0.0.0 --listenerport 7272
+--defaultvs server --servername host1.sun.com --acceptorthreads 100
+--securityenabled=false --enabled=false sampleListener
+Command create-http-listener executed successfully.
+----
+
+[[sthref276]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref277]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-ssl.html#create-ssl-1[`create-ssl`(1)],
+link:create-network-listener.html#create-network-listener-1[`create-network-listener`(1)],
+link:create-virtual-server.html#create-virtual-server-1[`create-virtual-server`(1)],
+link:delete-http-listener.html#delete-http-listener-1[`delete-http-listener`(1)],
+link:list-http-listeners.html#list-http-listeners-1[`list-http-listeners`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-http-redirect.adoc b/docs/reference-manual/src/main/asciidoc/create-http-redirect.adoc
new file mode 100644
index 0000000..acb3587
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-http-redirect.adoc
@@ -0,0 +1,94 @@
+type=page
+status=published
+title=create-http-redirect
+next=create-iiop-listener.html
+prev=create-http-listener.html
+~~~~~~
+
+= create-http-redirect
+
+[[create-http-redirect-1]][[GSRFM00031]][[create-http-redirect]]
+
+== create-http-redirect
+
+Adds a new HTTP redirect
+
+[[sthref278]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-http-redirect [--help]
+[--redirect-port redirect-port]
+[--secure-redirect={false|true}]
+[--target target]
+protocol-name
+----
+
+[[sthref279]]
+
+=== Description
+
+The `create-http-redirect` subcommand creates an HTTP redirect. This
+subcommand is supported in remote mode only.
+
+[[sthref280]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--redirect-port`::
+  Port number for redirects. If the HTTP listener is supporting non-SSL
+  requests, and a request is received for which a matching
+  security-constraint requires SSL transport, {productName}
+  automatically redirects the request to this port number.
+`--secure-redirect`::
+  If set to true, the HTTP redirect runs SSL. The default value is
+  `false`.
+`--target`::
+  Creates the HTTP redirect only on the specified target. Valid values
+  are as follows:
++
+  `server`;;
+    Creates the HTTP redirect on the default server instance. This is
+    the default value.
+  configuration-name;;
+    Creates the HTTP redirect in the specified configuration.
+  cluster-name;;
+    Creates the HTTP redirect on all server instances in the specified
+    cluster.
+  standalone-instance-name;;
+    Creates the HTTP redirect on the specified standalone server
+    instance.
+
+[[sthref281]]
+
+=== Operands
+
+protocol-name::
+  The name of the protocol to which to apply the redirect.
+
+[[sthref282]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref283]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-http-redirect.html#delete-http-redirect-1[`delete-http-redirect`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-http.adoc b/docs/reference-manual/src/main/asciidoc/create-http.adoc
new file mode 100644
index 0000000..bdb294f
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-http.adoc
@@ -0,0 +1,136 @@
+type=page
+status=published
+title=create-http
+next=create-http-health-checker.html
+prev=create-file-user.html
+~~~~~~
+
+= create-http
+
+[[create-http-1]][[GSRFM00025]][[create-http]]
+
+== create-http
+
+Sets HTTP parameters for a protocol
+
+[[sthref227]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-http [--help]
+--default-virtual-server virtual-server
+[--request-timeout-seconds timeout]
+[--timeout-seconds timeout]
+[--max-connection max-keepalive]
+[--dns-lookup-enabled={false|true}]
+[--servername server-name]
+[--target target]
+protocol-name
+----
+
+[[sthref228]]
+
+=== Description
+
+The `create-http` subcommand creates a set of HTTP parameters for a
+protocol, which in turn configures one or more network listeners. This
+subcommand is supported in remote mode only.
+
+[[sthref229]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--default-virtual-server`::
+  The ID attribute of the default virtual server for the associated
+  network listeners.
+`--request-timeout-seconds`::
+  The time in seconds at which the request times out. If you do not set
+  this option, the request times out in 30 seconds.
+`--timeout-seconds`::
+  The maximum time in seconds for which a keep alive connection is kept
+  open. A value of `0` or less means keep alive connections are kept
+  open indefinitely. The default is `30`.
+`--max-connection`::
+  The maximum number of HTTP requests that can be pipelined until the
+  connection is closed by the server. Set this property to `1` to
+  disable HTTP/1.0 keep-alive, as well as HTTP/1.1 keep-alive and
+  pipelining. The default is `256`.
+`--dns-lookup-enabled`::
+  If set to `true`, looks up the DNS entry for the client. The default
+  is `false`.
+`--servername`::
+  Tells the server what to put in the host name section of any URLs it
+  sends to the client. This affects URLs the server automatically
+  generates; it doesn't affect the URLs for directories and files stored
+  in the server. This name should be the alias name if your server uses
+  an alias. If a colon and port number are appended, that port will be
+  used in URLs that the server sends to the client.
+`--target`::
+  Creates the set of HTTP parameters only on the specified target. Valid
+  values are as follows:
+
+  `server`;;
+    Creates the set of HTTP parameters on the default server instance.
+    This is the default value.
+  configuration-name;;
+    Creates the set of HTTP parameters in the specified configuration.
+  cluster-name;;
+    Creates the set of HTTP parameters on all server instances in the
+    specified cluster.
+  standalone-instance-name;;
+    Creates the set of HTTP parameters on the specified standalone
+    server instance.
+
+[[sthref230]]
+
+=== Operands
+
+protocol-name::
+  The name of the protocol to which this HTTP parameter set applies.
+
+[[sthref231]]
+
+=== Examples
+
+[[GSRFM476]][[sthref232]]
+
+==== Example 1   Using the `create-http` Subcommand
+
+The following command creates an HTTP parameter set for the protocol
+named `http-1`:
+
+[source]
+----
+asadmin> create-http --timeout-seconds 60 --default-virtual-server server http-1
+Command create-http executed successfully.
+----
+
+[[sthref233]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref234]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-network-listener.html#create-network-listener-1[`create-network-listener`(1)],
+link:create-protocol.html#create-protocol-1[`create-protocol`(1)],
+link:create-virtual-server.html#create-virtual-server-1[`create-virtual-server`(1)],
+link:delete-http.html#delete-http-1[`delete-http`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-iiop-listener.adoc b/docs/reference-manual/src/main/asciidoc/create-iiop-listener.adoc
new file mode 100644
index 0000000..e0aa371
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-iiop-listener.adoc
@@ -0,0 +1,132 @@
+type=page
+status=published
+title=create-iiop-listener
+next=create-instance.html
+prev=create-http-redirect.html
+~~~~~~
+
+= create-iiop-listener
+
+[[create-iiop-listener-1]][[GSRFM00032]][[create-iiop-listener]]
+
+== create-iiop-listener
+
+Adds an IIOP listener
+
+[[sthref284]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-iiop-listener [--help]
+--listeneraddress address
+[--iiopport iiop-port-number] [--securityenabled={false|true}] [--enabled={true|false}]
+[--property (name=value)[:name=value]*]
+[--target target] listener_id
+----
+
+[[sthref285]]
+
+=== Description
+
+The `create-iiop-listener` subcommand creates an IIOP listener. This
+subcommand is supported in remote mode only.
+
+[[sthref286]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--listeneraddress`::
+  Either the IP address or the hostname (resolvable by DNS).
+`--iiopport`::
+  The IIOP port number. The default value is 1072.
+`--securityenabled`::
+  If set to true, the IIOP listener runs SSL. You can turn SSL2 or SSL3
+  ON or OFF and set ciphers using an SSL element. The security setting
+  globally enables or disables SSL by making certificates available to
+  the server instance. The default value is `false`.
+`--enabled`::
+  If set to true, the IIOP listener is enabled at runtime. The default
+  value is `true`.
+`--property`::
+  Optional attribute name/value pairs for configuring the IIOP listener.
+`--target`::
+  Specifies the target for which you are creating the IIOP listener.
+  Valid values are
++
+  `server`;;
+    Creates the listener for the default server instance `server` and is
+    the default value.
+  configuration_name;;
+    Creates the listener for the named configuration.
+  cluster_name;;
+    Creates the listener for every server instance in the cluster.
+  stand-alone_instance_name;;
+    Creates the listener for a particular standalone server instance.
+
+[[sthref287]]
+
+=== Operands
+
+listener_id::
+  A unique identifier for the IIOP listener to be created.
+
+[[sthref288]]
+
+=== Examples
+
+[[GSRFM485]][[sthref289]]
+
+==== Example 1   Creating an IIOP Listener
+
+The following command creates an IIOP listener named
+`sample_iiop_listener`:
+
+[source]
+----
+asadmin> create-iiop-listener --listeneraddress 192.168.1.100
+--iiopport 1400 sample_iiop_listener
+Command create-iiop-listener executed successfully.
+----
+
+[[GSRFM486]][[sthref290]]
+
+==== Example 2   Creating an IIOP Listener with a Target Cluster
+
+The following command creates an IIOP listener named `iiop_listener_2`
+for the cluster `mycluster`. It uses the target option.
+
+[source]
+----
+asadmin> create-iiop-listener --listeneraddress 0.0.0.0 --iiopport 1401
+--target mycluster iiop_listener_2
+Command create-iiop-listener executed successfully.
+----
+
+[[sthref291]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref292]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-ssl.html#create-ssl-1[`create-ssl`(1)],
+link:delete-iiop-listener.html#delete-iiop-listener-1[`delete-iiop-listener`(1)],
+link:list-iiop-listeners.html#list-iiop-listeners-1[`list-iiop-listeners`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-instance.adoc b/docs/reference-manual/src/main/asciidoc/create-instance.adoc
new file mode 100644
index 0000000..e71f6bf
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-instance.adoc
@@ -0,0 +1,401 @@
+type=page
+status=published
+title=create-instance
+next=create-jacc-provider.html
+prev=create-iiop-listener.html
+~~~~~~
+
+= create-instance
+
+[[create-instance-1]][[GSRFM00033]][[create-instance]]
+
+== create-instance
+
+Creates a {productName} instance
+
+[[sthref293]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-instance [--help]
+--node node-name
+[--config config-name | --cluster cluster-name]
+[--lbenabled={true|false}]
+[--portbase=port-number] [--checkports={true|false}]
+[--systemproperties (name=value)[:name=value]* ]
+instance-name
+----
+
+[[sthref294]]
+
+=== Description
+
+The `create-instance` subcommand creates a {productName} instance.
+This subcommand requires the Distributed Component Object Model (DCOM)
+remote protocol or secure shell (SSH) to be configured on the host where
+the domain administration server (DAS) is running and on the host that
+is represented by the node where the instance is to reside.
+
+
+[NOTE]
+====
+DCOM or SSH is not required if the instance is to reside on a node of
+type `CONFIG` that represents the local host. A node of type `CONFIG` is
+not enabled for remote communication over DCOM or SSH.
+====
+
+
+You may run this command from any host that can contact the DAS.
+
+A {productName} instance is a single Virtual Machine for the Java
+platform (Java Virtual Machine or JVM machine) on a single node in which
+{productName} is running. A node defines the host where the
+{productName} instance resides. The JVM machine must be compatible
+with the Java Platform, Enterprise Edition (Jakarta EE).
+
+A {productName} instance requires a reference to the following
+items:
+
+* The node that defines the host where the instance resides. The node
+must be specified in the command to create the instance.
+* The named configuration that defines the configuration of the
+instance. The configuration can be specified in the command to create
+the instance, but is not required. If no configuration is specified for
+an instance that is not joining a cluster, the subcommand creates a
+configuration for the instance. An instance that is joining a cluster
+receives its configuration from its parent cluster.
+
+Each {productName} instance is one of the following types of instance:
+
+Standalone instance::
+  A standalone instance does not share its configuration with any other
+  instances or clusters. A standalone instance is created if either of
+  the following conditions is met:
++
+--
+  * No configuration or cluster is specified in the command to create
+  the instance.
+  * A configuration that is not referenced by any other instances or
+  clusters is specified in the command to create the instance.
+--
++
+When no configuration or cluster is specified, a copy of the
+  `default-config` configuration is created for the instance.
+  The name of this configuration is instance-name``-config``, where instance-name
+  represents the name of an unclustered server instance.
+
+Shared instance::
+  A shared instance shares its configuration with other instances or
+  clusters. A shared instance is created if a configuration that is
+  referenced by other instances or clusters is specified in the command
+  to create the instance.
+Clustered instance::
+  A clustered instance inherits its configuration from the cluster to
+  which the instance belongs and shares its configuration with other
+  instances in the cluster. A clustered instance is created if a cluster
+  is specified in the command to create the instance. +
+  Any instance that is not part of a cluster is considered an
+  unclustered server instance. Therefore, standalone instances and
+  shared instances are unclustered server instances.
+
+By default, this subcommand attempts to resolve possible port conflicts
+for the instance that is being created. The subcommand also assigns
+ports that are currently not in use and not already assigned to other
+instances on the same node. The subcommand assigns these ports on the
+basis of an algorithm that is internal to the subcommand. Use the
+`--systemproperties` option to resolve port conflicts for additional
+instances on the same node. System properties of an instance can be
+manipulated by using the
+link:create-system-properties.html#create-system-properties-1[`create-system-properties`(1)]
+subcommand and the
+link:delete-system-property.html#delete-system-property-1[`delete-system-property`(1)]
+subcommand.
+
+This subcommand is supported in remote mode only.
+
+[[sthref295]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--node`::
+  The name of the node that defines the host where the instance is to be
+  created. The node must already exist. If the instance is to be created
+  on the host where the domain administration server (DAS) is running,
+  use the predefined node ``localhost-``domain.
+`--config`::
+  Specifies the named configuration that the instance references. The
+  configuration must exist and must not be named `default-config` or
+  `server-config`. Specifying the `--config` option creates a shared
+  instance. +
+  The `--config` option and the `--cluster` option are mutually
+  exclusive. If both options are omitted, a standalone instance is
+  created.
+`--cluster`::
+  Specifies the cluster from which the instance inherits its
+  configuration. Specifying the `--cluster` option creates a clustered
+  instance. +
+  The `--config` option and the `--cluster` option are mutually
+  exclusive. If both options are omitted, a standalone instance is
+  created.
+`--lbenabled`::
+  Specifies whether the instance is enabled for load balancing. Possible
+  values are as follows:
+
+  `true`;;
+    The instance is enabled for load balancing (default). +
+    When an instance is enabled for load balancing, a load balancer
+    sends requests to the instance.
+  `false`;;
+    The instance is disabled for load balancing. +
+    When an instance is disabled for load balancing, a load balancer
+    does not send requests to the instance.
+
+`--portbase`::
+  Determines the number with which the port assignment should start. An
+  instance uses a certain number of ports that are statically assigned.
+  The portbase value determines where the assignment should start.
+  The values for the ports are calculated as follows:
++
+  * Administration port: portbase + 48
+  * HTTP listener port: portbase + 80
+  * HTTPS listener port: portbase + 81
+  * JMS port: portbase + 76
+  * IIOP listener port: portbase + 37
+  * Secure IIOP listener port: portbase + 38
+  * Secure IIOP with mutual authentication port: portbase + 39
+  * JMX port: portbase + 86
+  * JPA debugger port: portbase + 9
+  * Felix shell service port for OSGi module management: portbase + 66
++
+When the `--portbase` option is specified, the output of this
+  subcommand includes a complete list of used ports.
+`--checkports`::
+  Specifies whether to check for the availability of the administration,
+  HTTP, JMS, JMX, and IIOP ports. The default value is `true`.
+`--systemproperties`::
+  Defines system properties for the instance. These properties override
+  property definitions for port settings in the instance's
+  configuration. Predefined port settings must be overridden if, for
+  example, two clustered instances reside on the same host. In this
+  situation, port settings for one instance must be overridden because
+  both instances share the same configuration. +
+  The following properties are available:
+
+  `ASADMIN_LISTENER_PORT`;;
+    This property specifies the port number of the HTTP port or HTTPS
+    port through which the DAS connects to the instance to manage the
+    instance. Valid values are 1-65535. On UNIX, creating sockets that
+    listen on ports 1-1024 requires superuser privileges.
+  `HTTP_LISTENER_PORT`;;
+    This property specifies the port number of the port that is used to
+    listen for HTTP requests. Valid values are 1-65535. On UNIX,
+    creating sockets that listen on ports 1-1024 requires superuser
+    privileges.
+  `HTTP_SSL_LISTENER_PORT`;;
+    This property specifies the port number of the port that is used to
+    listen for HTTPS requests. Valid values are 1-65535. On UNIX,
+    creating sockets that listen on ports 1-1024 requires superuser
+    privileges.
+  `IIOP_LISTENER_PORT`;;
+    This property specifies the port number of the port that is used for
+    IIOP connections. Valid values are 1-65535. On UNIX, creating
+    sockets that listen on ports 1-1024 requires superuser privileges.
+  `IIOP_SSL_LISTENER_PORT`;;
+    This property specifies the port number of the port that is used for
+    secure IIOP connections. Valid values are 1-65535. On UNIX, creating
+    sockets that listen on ports 1-1024 requires superuser privileges.
+  `IIOP_SSL_MUTUALAUTH_PORT`;;
+    This property specifies the port number of the port that is used for
+    secure IIOP connections with client authentication. Valid values are
+    1-65535. On UNIX, creating sockets that listen on ports 1-1024
+    requires superuser privileges.
+  `JAVA_DEBUGGER_PORT`;;
+    This property specifies the port number of the port that is used for
+    connections to the Java Platform Debugger Architecture (JPDA)
+    (http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html)
+    debugger. Valid values are 1-65535. On UNIX, creating sockets that
+    listen on ports 1-1024 requires superuser privileges.
+  `JMS_PROVIDER_PORT`;;
+    This property specifies the port number for the Java Message Service
+    provider. Valid values are 1-65535. On UNIX, creating sockets that
+    listen on ports 1-1024 requires superuser privileges.
+  `JMX_SYSTEM_CONNECTOR_PORT`;;
+    This property specifies the port number on which the JMX connector
+    listens. Valid values are 1-65535. On UNIX, creating sockets that
+    listen on ports 1-1024 requires superuser privileges.
+  `OSGI_SHELL_TELNET_PORT`;;
+    This property specifies the port number of the port that is used for
+    connections to the Apache Felix Remote Shell
+    (`http://felix.apache.org/site/apache-felix-remote-shell.html`).
+    This shell uses the Felix shell service to interact with the OSGi
+    module management subsystem. Valid values are 1-65535. On UNIX,
+    creating sockets that listen on ports 1-1024 requires superuser
+    privileges.
+
+[[sthref296]]
+
+=== Operands
+
+instance-name::
+  The name of the instance that is being created. +
+  The name must meet the following requirements:
+
+  * The name may contain only ASCII characters.
+  * The name must start with a letter, a number, or an underscore.
+  * The name may contain only the following characters:
+  ** Lowercase letters
+  ** Uppercase letters
+  ** Numbers
+  ** Hyphen
+  ** Period
+  ** Underscore
+  * The name must be unique in the domain and must not be the name of
+  another {productName} instance, a cluster, a named configuration,
+  or a node.
+  * The name must not be `domain`, `server`, or any other keyword that
+  is reserved by {productName}.
+
+[[sthref297]]
+
+=== Examples
+
+[[GSRFM487]][[sthref298]]
+
+==== Example 1   Creating a Standalone {productName} Instance
+
+This example creates the standalone {productName} instance
+`pmdsainst` in the domain `domain1` on the local host.
+
+[source]
+----
+asadmin> create-instance --node localhost-domain1 pmdsainst
+Port Assignments for server instance pmdsainst:
+JMX_SYSTEM_CONNECTOR_PORT=28688
+JMS_PROVIDER_PORT=27678
+ASADMIN_LISTENER_PORT=24850
+HTTP_LISTENER_PORT=28082
+IIOP_LISTENER_PORT=23702
+IIOP_SSL_LISTENER_PORT=23822
+HTTP_SSL_LISTENER_PORT=28183
+IIOP_SSL_MUTUALAUTH_PORT=23922
+
+Command create-instance executed successfully.
+----
+
+[[GSRFM488]][[sthref299]]
+
+==== Example 2   Creating a Standalone {productName} Instance With Custom
+Port Assignments
+
+This example creates the standalone {productName} instance
+`pmdcpinst` in the domain `domain1` on the local host. Custom port
+numbers are assigned to the following ports:
+
+* HTTP listener port
+* HTTPS listener port
+* IIOP connections port
+* Secure IIOP connections port
+* Secure IIOP connections port with mutual authentication
+* JMX connector port
+
+[source]
+----
+asadmin> create-instance --node localhost-domain1
+--systemproperties HTTP_LISTENER_PORT=58294:
+HTTP_SSL_LISTENER_PORT=58297:
+IIOP_LISTENER_PORT=58300:
+IIOP_SSL_LISTENER_PORT=58303:
+IIOP_SSL_MUTUALAUTH_PORT=58306:
+JMX_SYSTEM_CONNECTOR_PORT=58309 pmdcpinst
+Port Assignments for server instance pmdcpinst:
+JMS_PROVIDER_PORT=27679
+ASADMIN_LISTENER_PORT=24851
+
+Command create-instance executed successfully.
+----
+
+[[GSRFM489]][[sthref300]]
+
+==== Example 3   Creating a Shared {productName} Instance
+
+This example creates the shared {productName} instance
+`pmdsharedinst1` in the domain `domain1` on the local host. The shared
+configuration of this instance is `pmdsharedconfig`.
+
+[source]
+----
+asadmin create-instance --node localhost-domain1 --config pmdsharedconfig
+pmdsharedinst1
+Port Assignments for server instance pmdsharedinst1:
+JMX_SYSTEM_CONNECTOR_PORT=28687
+JMS_PROVIDER_PORT=27677
+ASADMIN_LISTENER_PORT=24849
+HTTP_LISTENER_PORT=28081
+IIOP_LISTENER_PORT=23701
+IIOP_SSL_LISTENER_PORT=23821
+HTTP_SSL_LISTENER_PORT=28182
+IIOP_SSL_MUTUALAUTH_PORT=23921
+
+Command create-instance executed successfully.
+----
+
+[[GSRFM490]][[sthref301]]
+
+==== Example 4   Creating a Clustered {productName} Instance
+
+This example creates the clustered {productName} instance `pmdinst1`
+in the domain `domain1` on the local host. The instance is a member of
+the cluster `pmdclust1`.
+
+[source]
+----
+asadmin> create-instance --node localhost-domain1 --cluster pmdclust pmdinst1
+Port Assignments for server instance pmdinst1:
+JMX_SYSTEM_CONNECTOR_PORT=28686
+JMS_PROVIDER_PORT=27676
+HTTP_LISTENER_PORT=28080
+ASADMIN_LISTENER_PORT=24848
+IIOP_SSL_LISTENER_PORT=23820
+IIOP_LISTENER_PORT=23700
+HTTP_SSL_LISTENER_PORT=28181
+IIOP_SSL_MUTUALAUTH_PORT=23920
+
+Command create-instance executed successfully.
+----
+
+[[sthref302]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref303]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)],
+link:create-node-config.html#create-node-config-1[`create-node-config`(1)],
+link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
+link:create-node-ssh.html#create-node-ssh-1[`create-node-ssh`(1)],
+link:create-system-properties.html#create-system-properties-1[`create-system-properties`(1)],
+link:delete-instance.html#delete-instance-1[`delete-instance`(1)],
+link:delete-system-property.html#delete-system-property-1[`delete-system-property`(1)],
+link:list-instances.html#list-instances-1[`list-instances`(1)],
+link:setup-ssh.html#setup-ssh-1[`setup-ssh`(1)],
+link:start-instance.html#start-instance-1[`start-instance`(1)],
+link:stop-instance.html#stop-instance-1[`stop-instance`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-jacc-provider.adoc b/docs/reference-manual/src/main/asciidoc/create-jacc-provider.adoc
new file mode 100644
index 0000000..baca7e9
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-jacc-provider.adoc
@@ -0,0 +1,153 @@
+type=page
+status=published
+title=create-jacc-provider
+next=create-javamail-resource.html
+prev=create-instance.html
+~~~~~~
+
+= create-jacc-provider
+
+[[create-jacc-provider-1]][[GSRFM00034]][[create-jacc-provider]]
+
+== create-jacc-provider
+
+Enables administrators to create a JACC provider that can be used by
+third-party authorization modules for applications running in
+{productName}
+
+[[sthref304]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-jacc-provider [--help]
+[--policyproviderclass pol-provider-class]
+[--policyconfigfactoryclass pc-factory-class]
+[--property name=value)[:name=value]*]
+[--target target] jacc-provider-name
+----
+
+[[sthref305]]
+
+=== Description
+
+The `create-jacc-provider` subcommand creates a JSR-115—compliant Java
+Authorization Contract for Containers (JACC) provider that can be used
+for authorization of applications running in {productName}. The JACC
+provider is created as a `jacc-provider` element within the
+`security-service` element in the domain's `domain.xml` file.
+
+The default {productName} installation includes two JACC providers,
+named `default` and `simple`. Any JACC providers created with the
+`create-jacc-provider` subcommand are in addition to these two default
+providers. The default {productName} JACC providers implement a
+simple, file-based authorization engine that complies with the JACC
+specification. The `create-jacc-provider` subcommand makes it possible
+to specify additional third-party JACC providers.
+
+You can create any number of JACC providers within the
+`security-service` element, but the {productName} runtime uses only
+one of them at any given time. The `jacc-provider` element in the
+`security-service` element points to the name of the provider that is
+currently in use by {productName}. If you change this element to
+point to a different JACC provider, restart {productName}.
+
+This command is supported in remote mode only.
+
+[[sthref306]]
+
+=== Options
+
+If an option has a short option name, then the short option precedes the
+long option name. Short options have one dash whereas long options have
+two dashes.
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--policyproviderclass`::
+  Specifies the fully qualified class name for the
+  `javax.security.jacc.policy.provider` that implements the
+  `java.security.Policy`.
+`--policyconfigfactoryclass`::
+  Specifies the fully qualified class name for the
+  `javax.security.jacc.PolicyConfigurationFactory.provider` that
+  implements the provider-specific
+  `javax.security.jacc.PolicyConfigurationFactory`.
+`--property`::
+  Optional attribute name/value pairs for configuring the JACC provider.
+  The following properties are available:
+
+  `repository`;;
+    The directory containing the JACC policy file. For the `default`
+    {productName} JACC provider, the default directory is
+    `${com.sun.aas.instanceRoot}/generated/policy`. This property is not
+    defined by default for the `simple` {productName} JACC provider.
+
+`--target`::
+  Specifies the target for which you are creating the JACC provider. The
+  following values are valid:
+
+  `server`;;
+    Creates the JACC provider on the default server instance. This is
+    the default value.
+  configuration_name;;
+    Creates the JACC provider in the specified configuration.
+  cluster_name;;
+    Creates the JACC provider on all server instances in the specified
+    cluster.
+  instance_name;;
+    Creates the JACC provider on a specified server instance.
+
+[[sthref307]]
+
+=== Operands
+
+jacc-provider-name::
+  The name of the provider used to reference the `jacc-provider` element
+  in `domain.xml`.
+
+[[sthref308]]
+
+=== Examples
+
+[[GSRFM491]][[sthref309]]
+
+==== Example 1   Creating a JACC Provider
+
+The following example shows how to create a JACC provider named
+`testJACC` on the default `server` target.
+
+[source]
+----
+asadmin> create-jacc-provider
+--policyproviderclass org.glassfish.exousia.modules.locked.SimplePolicyProvider
+--policyconfigfactoryclass org.glassfish.exousia.modules.locked.SimplePolicyConfigurationFactory
+testJACC
+
+Command create-jacc-provider executed successfully.
+----
+
+[[sthref310]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref311]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-jacc-provider.html#delete-jacc-provider-1[`delete-jacc-provider`(1)],
+link:list-jacc-providers.html#list-jacc-providers-1[`list-jacc-providers`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-javamail-resource.adoc b/docs/reference-manual/src/main/asciidoc/create-javamail-resource.adoc
new file mode 100644
index 0000000..4c3abe9
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-javamail-resource.adoc
@@ -0,0 +1,154 @@
+type=page
+status=published
+title=create-javamail-resource
+next=create-jdbc-connection-pool.html
+prev=create-jacc-provider.html
+~~~~~~
+
+= create-javamail-resource
+
+[[create-javamail-resource-1]][[GSRFM00035]][[create-javamail-resource]]
+
+== create-javamail-resource
+
+Creates a JavaMail session resource
+
+[[sthref312]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-javamail-resource [--help]
+[--target target] --mailhost hostname
+--mailuser username --fromaddress address [--storeprotocol storeprotocol]
+[--storeprotocolclass storeprotocolclass] [--transprotocol transprotocol]
+[--transprotocolclass transprotocolclass] [--debug={false|true}] [--enabled={true|false}]
+[--description resource-description] [--property (name=value)[:name=value]*] jndi-name
+----
+
+[[sthref313]]
+
+=== Description
+
+The `create-javamail-resource` subcommand creates a JavaMail session
+resource.
+
+This subcommand is supported in remote mode only.
+
+[[sthref314]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  This option specifies the target for which you are creating the
+  JavaMail session resource. Valid values are:
++
+  `server`;;
+    Creates the resource for the default server instance. This is the
+    default value.
+  `domain`;;
+    Creates the resource for the domain.
+  cluster_name;;
+    Creates the resource for every server instance in the cluster.
+  instance_name;;
+    Creates the resource for a particular server instance.
+`--mailhost`::
+  The DNS name of the default mail server. The connect methods of the
+  Store and Transport objects use this value if a protocol-specific host
+  property is not supplied. The name must be resolvable to an actual
+  host name.
+`--mailuser`::
+  The name of the mail account user provided when connecting to a mail
+  server. The connect methods of the Store and Transport objects use
+  this value if a protocol-specific username property is not supplied.
+`--fromaddress`::
+  The email address of the default user, in the form
+  username`@`host`.`domain.
+`--storeprotocol`::
+  The mail server store protocol. The default is `imap`. Change this
+  value only if you have reconfigured the {productName}'s mail
+  provider to use a non-default store protocol.
+`--storeprotocolclass`::
+  The mail server store protocol class name. The default is
+  `com.sun.mail.imap.IMAPStore`. Change this value only if you have
+  reconfigured the {productName}'s mail provider to use a nondefault
+  store protocol.
+`--transprotocol`::
+  The mail server transport protocol. The default is `smtp`. Change this
+  value only if you have reconfigured the {productName}'s mail
+  provider to use a nondefault transport protocol.
+`--transprotocolclass`::
+  The mail server transport protocol class name. The default is
+  `com.sun.mail.smtp.SMTPTransport`. Change this value only if you have
+  reconfigured the {productName}'s mail provider to use a nondefault
+  transport protocol.
+`--debug`::
+  If set to true, the server starts up in debug mode for this resource.
+  If the JavaMail log level is set to `FINE` or `FINER`, the debugging
+  output will be generated and will be included in the server log file.
+  The default value is false.
+`--enabled`::
+  If set to true, the resource is enabled at runtime. The default value
+  is true.
+`--description`::
+  Text providing some details of the JavaMail resource.
+`--property`::
+  Optional attribute name/value pairs for configuring the JavaMail
+  resource. The {productName}-specific ``mail-`` prefix is converted
+  to the standard mail prefix. The JavaMail API documentation lists the
+  properties you might want to set.
+
+[[sthref315]]
+
+=== Operands
+
+jndi-name::
+  The JNDI name of the JavaMail resource to be created. It is a
+  recommended practice to use the naming subcontext prefix `mail/` for
+  JavaMail resources.
+
+[[sthref316]]
+
+=== Examples
+
+[[GSRFM492]][[sthref317]]
+
+==== Example 1   Creating a JavaMail Resource
+
+This example creates a JavaMail resource named `mail/MyMailSession`. The
+JNDI name for a JavaMail session resource customarily includes the
+`mail/` naming subcontext.
+
+[source]
+----
+asadmin> create-javamail-resource --mailhost localhost
+--mailuser sample --fromaddress sample@sun.com mail/MyMailSession
+Command create-javamail-resource executed successfully.
+----
+
+[[sthref318]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref319]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-javamail-resource.html#delete-javamail-resource-1[`delete-javamail-resource`(1)],
+link:list-javamail-resources.html#list-javamail-resources-1[`list-javamail-resources`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-jdbc-connection-pool.adoc b/docs/reference-manual/src/main/asciidoc/create-jdbc-connection-pool.adoc
new file mode 100644
index 0000000..ff10f2d
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-jdbc-connection-pool.adoc
@@ -0,0 +1,506 @@
+type=page
+status=published
+title=create-jdbc-connection-pool
+next=create-jdbc-resource.html
+prev=create-javamail-resource.html
+~~~~~~
+
+= create-jdbc-connection-pool
+
+[[create-jdbc-connection-pool-1]][[GSRFM00036]][[create-jdbc-connection-pool]]
+
+== create-jdbc-connection-pool
+
+Registers a JDBC connection pool
+
+[[sthref320]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-jdbc-connection-pool [--help]
+[--datasourceclassname=datasourceclassname]
+[--restype=resourcetype]
+[--steadypoolsize=poolsize]
+[--maxpoolsize=maxpoolsize]
+[--maxwait=maxwaittime]
+[--poolresize=poolresizelimit]
+[--idletimeout=idletimeout]
+[--initsql=initsqlstring]
+[--isolationlevel=isolationlevel]
+[--isisolationguaranteed={true|false}]
+[--isconnectvalidatereq={false|true}]
+[--validationmethod=validationmethod]
+[--validationtable=validationtable]
+[--failconnection={false|true}]
+[--allownoncomponentcallers={false|true}]
+[--nontransactionalconnections={false|true}]
+[--validateatmostonceperiod=validationinterval]
+[--leaktimeout=leaktimeout]
+[--leakreclaim={false|true}]
+[--statementleaktimeout=satementleaktimeout]
+[--statmentleakreclaim={false|true}]
+[--creationretryattempts=creationretryattempts]
+[--creationretryinterval=creationretryinterval]
+[--sqltracelisteners=sqltracelisteners[,sqltracelisteners]]
+[--statementtimeout=statementtimeout]
+[--lazyconnectionenlistment={false|true}]
+[--lazyconnectionassociation={false|true}]
+[--associatewiththread={false|true}]
+[--driverclassname=jdbcdriverclassname]
+[--matchconnections={false|true}]
+[--maxconnectionusagecount=maxconnectionusagecount]
+[--ping={false|true}]
+[--pooling={false|true}]
+[--statementcachesize=statementcachesize]
+[--validationclassname=validationclassname]
+[--wrapjdbcobjects={false|true}]
+[--description description]
+[--property name=value)[:name=value]*]
+[--target=target]
+connectionpoolid
+----
+
+[[sthref321]]
+
+=== Description
+
+The `create-jdbc-connection-pool` subcommand registers a new Java
+Database Connectivity ("JDBC") software connection pool with the
+specified JDBC connection pool name.
+
+A JDBC connection pool with authentication can be created either by
+using a `--property` option to specify user, password, or other
+connection information, or by specifying the connection information in
+the XML descriptor file.
+
+This subcommand is supported in remote mode only.
+
+[[sthref322]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--datasourceclassname`::
+  The name of the vendor-supplied JDBC datasource resource manager. An
+  XA or global transactions capable datasource class will implement the
+  `javax.sql.XADatasource` interface. Non-XA or exclusively local
+  transaction datasources will implement the `javax.sql.Datasource`
+  interface.
+`--restype`
++
+Required when a datasource class implements two or more interfaces
+(`javax.sql.DataSource`, `javax.sql.XADataSource`, or
+`javax.sql.ConnectionPoolDataSource`), or when a driver classname must
+be provided.::
+  * If `--restype` = `java.sql.Driver`, then the `--driverclassname`
+  option is required.
+  * If `--restype` = `javax.sql.DataSource`, `javax.sql.XADataSource`,
+  or `javax.sql.ConnectionPoolDataSource`, then the
+  `--datasourceclassname` option is required.
+  * If `--restype` is not specified, then either the `--driverclassname`
+  or `--datasourceclassname` option must be specified, but not both.
+`--steadypoolsize`::
+  The minimum and initial number of connections maintained in the pool.
+  The default value is 8.
+`--maxpoolsize`::
+  The maximum number of connections that can be created. The default
+  value is 32.
+`--maxwait`::
+  The amount of time, in milliseconds, that a caller will wait before a
+  connection timeout is sent. The default is 60000 (60 seconds). A value
+  of 0 forces the caller to wait indefinitely.
+`--poolresize`::
+  Number of connections to be removed when `idle-timeout-in-seconds`
+  timer expires. This is the quantity by which the pool will scale up or
+  scale down the number of connections. Scale up: When the pool has no
+  free connections, pool will scale up by this quantity. Scale down: All
+  the invalid and idle connections are removed, sometimes resulting in
+  removing connections of quantity greater than this value. Connections
+  that have been idle for longer than the timeout are candidates for
+  removal. Steadypoolsize will be ensured. Possible values are from 0 to
+  `MAX_INTEGER`. The default value is 2.
+`--idletimeout`::
+  The maximum time, in seconds, that a connection can remain idle in the
+  pool. After this time, the implementation can close this connection.
+  This timeout value must be kept shorter than the database server side
+  timeout value to prevent the accumulation of unusable connections in
+  the application. The default value is 300.
+`--initsql`::
+  An SQL string that is executed whenever a connection is created from
+  the pool. If an existing connection is reused, this string is not
+  executed. Connections that have idled for longer than the timeout are
+  candidates for removal. This option has no default value.
+`--isolationlevel`::
+  The transaction-isolation-level on the pooled database connections.
+  This option does not have a default value. If not specified, the pool
+  operates with the default isolation level that the JDBC driver
+  provides. You can set a desired isolation level using one of the
+  standard transaction isolation levels: `read-uncommitted`,
+  `read-committed`, `repeatable-read`, `serializable`. Applications that
+  change the isolation level on a pooled connection programmatically
+  risk polluting the pool. This could lead to program errors.
+`--isisolationguaranteed`::
+  This is applicable only when a particular isolation level is specified
+  for transaction-isolation-level. The default value is true. +
+  This option assures that every time a connection is obtained from the
+  pool, isolation level is set to the desired value. This could have
+  some performance impact on some JDBC drivers. Administrators can set
+  this to false when the application does not change `--isolationlevel`
+  before returning the connection.
+`--isconnectvalidatereq`::
+  If set to true, connections are validated or checked to see if they
+  are usable before giving out to the application. The default value is
+  false.
+`--validationmethod`::
+  Type of validation to be performed when
+  `is-connection-validation-required` is true. Valid settings are:
+  `auto-commit`, `meta-data`, `table`, or `custom-validation`. The
+  default value is `table`.
+`--validationtable`::
+  The name of the validation table used to perform a query to validate a
+  connection. If `is-connection-validation-required` is set to true and
+  connection-validation-type set to table, this option is mandatory.
+`--failconnection`::
+  If set to true, all connections in the pool must be closed when a
+  single validation check fails. The default value is false. One attempt
+  is made to reestablish failed connections.
+`--allownoncomponentcallers`::
+  A pool with this property set to true can be used by non-Jakarta EE
+  components, that is, components other than EJBs or Servlets. The
+  returned connection is enlisted automatically with the transaction
+  context obtained from the transaction manager. Connections obtained by
+  non-component callers are not automatically cleaned by the container
+  at the end of a transaction. These connections need to be explicitly
+  closed by the caller.
+`--nontransactionalconnections`::
+  A pool with this property set to true returns non-transactional
+  connections. This connection does not get automatically enlisted with
+  the transaction manager.
+`--validateatmostonceperiod`::
+  Specifies the time interval in seconds between successive requests to
+  validate a connection at most once. Setting this attribute to an
+  appropriate value minimizes the number of validation requests by a
+  connection. Default value is 0, which means that the attribute is not
+  enabled.
+`--leaktimeout`::
+  Specifies the amount of time, in seconds, for which connection leaks
+  in a connection pool are to be traced. When a connection is not
+  returned to the pool by the application within the specified period,
+  it is assumed to be a potential leak, and stack trace of the caller
+  will be logged. This option only detects if there is a connection
+  leak. The connection can be reclaimed only if
+  `connection-leak-reclaim` is set to true. +
+  If connection leak tracing is enabled, you can use the Administration
+  Console to enable monitoring of the JDBC connection pool to get
+  statistics on the number of connection leaks. The default value is 0,
+  which disables connection leak tracing.
+`--leakreclaim`::
+  Specifies whether leaked connections are restored to the connection
+  pool after leak connection tracing is complete. Possible values are as
+  follows:
+
+  `false`;;
+    Leaked connections are not restored to the connection pool
+    (default).
+  `true`;;
+    Leaked connections are restored to the connection pool.
+
+`--statementleaktimeout`::
+  Specifies the amount of time, in seconds, after which any statements
+  that have not been closed by an application are to be detected.
+  Applications can run out of cursors if statement objects are not
+  properly closed. This option only detects if there is a statement
+  leak. The statement can be reclaimed only if `statement-leak-reclaim`
+  is set to true. The leaked statement is closed when it is reclaimed. +
+  The stack trace of the caller that creates the statement will be
+  logged when a statement leak is detected. If statement leak tracing is
+  enabled, you can use the Administration Console to enable monitoring
+  of the JDBC connection pool to get statistics on the number of
+  statement leaks. The default value is 0, which disables statement leak tracing. +
+  The following limitations apply to the statement leak timeout value:
+
+  * The value must be less than the value set for the connection `leak-timeout`.
+  * The value must be greater than the value set for `statement-timeout`.
+
+`--statementleakreclaim`::
+  Specifies whether leaked statements are reclaimed after the statements
+  leak. Possible values are as follows:
+
+  `false`;;
+    Leaked statements are not reclaimed (default).
+  `true`;;
+    Leaked statements are reclaimed.
+
+`--creationretryattempts`::
+  Specifies the maximum number of times that {productName} retries
+  to create a connection if the initial attempt fails. The default value
+  is 0, which specifies that {productName} does not retry to create
+  the connection.
+`--creationretryinterval`::
+  Specifies the interval, in seconds, between successive attempts to
+  create a connection. +
+  If `--creationretryattempts` is 0, the `--creationretryinterval`
+  option is ignored. The default value is 10.
+`--sqltracelisteners`::
+  A list of one or more custom modules that provide custom logging of
+  database activities. Each module must implement the
+  `org.glassfish.api.jdbc.SQLTraceListener` public interface. When set
+  to an appropriate value, SQL statements executed by applications are
+  traced. This option has no default value.
+`--statementtimeout`::
+  Specifies the length of time in seconds after which a query that is
+  not completed is terminated. +
+  A query that remains incomplete for a long period of time might cause
+  the application that submitted the query to hang. To prevent this
+  occurrence, use this option set a timeout for all statements that will
+  be created from the connection pool that you are creating. When
+  creating a statement, {productName} sets the `QueryTimeout`
+  property on the statement to the length of time that is specified. The
+  default value is -1, which specifies that incomplete queries are never
+  terminated.
+`--lazyconnectionenlistment`::
+  Specifies whether a resource to a transaction is enlisted only when a
+  method actually uses the resource. Possible values are as follows:
+
+  `false`;;
+    Resources to a transaction are always enlisted and not only when a
+    method actually uses the resource (default).
+  `true`;;
+    Resources to a transaction are enlisted only when a method actually
+    uses the resource.
+
+`--lazyconnectionassociation`::
+  Specifies whether a physical connection should be associated with the
+  logical connection only when the physical connection is used, and
+  disassociated when the transaction is completed. Such association and
+  dissociation enable the reuse of physical connections. Possible values
+  are as follows:
+
+  `false`;;
+    A physical connection is associated with the logical connection even
+    before the physical connection is used, and is not disassociated
+    when the transaction is completed (default).
+  `true`;;
+    A physical connection is associated with the logical connection only
+    when the physical connection is used, and disassociated when the
+    transaction is completed. The `--lazyconnectionenlistment` option
+    must also be set to `true`.
+
+`--associatewiththread`::
+  Specifies whether a connection is associated with the thread to enable
+  the thread to reuse the connection. If a connection is not associated
+  with the thread, the thread must obtain a connection from the pool
+  each time that the thread requires a connection. Possible values are
+  as follows:
+
+  `false`;;
+    A connection is not associated with the thread (default).
+  `true`;;
+    A connection is associated with the thread.
+
+`--driverclassname`::
+  The name of the vendor-supplied JDBC driver class. This driver should
+  implement the `java.sql.Driver` interface.
+`--matchconnections`::
+  Specifies whether a connection that is selected from the pool should
+  be matched by the resource adaptor. If all the connections in the pool
+  are homogenous, a connection picked from the pool need not be matched
+  by the resource adapter, which means that this option can be set to
+  false. Possible values are as follows:
++
+  `false`;;
+    A connection should not be matched by the resource adaptor
+    (default).
+  `true`;;
+    A connection should be matched by the resource adaptor.
+`--maxconnectionusagecount`::
+  Specifies the maximum number of times that a connection can be reused.
+  When this limit is reached, the connection is closed. By limiting the
+  maximum number of times that a connection can be reused, you can avoid
+  statement leaks. +
+  The default value is 0, which specifies no limit on the number of
+  times that a connection can be reused.
+`--ping`::
+  Specifies if the pool is pinged during pool creation or
+  reconfiguration to identify and warn of any erroneous values for its
+  attributes. Default value is false.
+`--pooling`::
+  Specifies if connection pooling is enabled for the pool. The default
+  value is true.
+`--statementcachesize`::
+  The number of SQL statements to be cached using the default caching
+  mechanism (Least Recently Used). The default value is 0, which
+  indicates that statement caching is not enabled.
+`--validationclassname`::
+  The name of the class that provides custom validation when the value
+  of `validationmethod` is `custom-validation`. This class must
+  implement the `org.glassfish.api.jdbc.ConnectionValidation` interface,
+  and it must be accessible to {productName}. This option is
+  mandatory if the connection validation type is set to custom
+  validation.
+`--wrapjdbcobjects`::
+  Specifies whether the pooling infrastructure provides wrapped JDBC
+  objects to applications. By providing wrapped JDBC objects, the
+  pooling infrastructure prevents connection leaks by ensuring that
+  applications use logical connections from the connection pool, not
+  physical connections. The use of logical connections ensures that the
+  connections are returned to the connection pool when they are closed.
+  However, the provision of wrapped JDBC objects can impair the
+  performance of applications. The default value is true. +
+  The pooling infrastructure provides wrapped objects for
+  implementations of the following interfaces in the JDBC API:
+
+  * `java.sql.CallableStatement`
+  * `java.sql.DatabaseMetaData`
+  * `java.sql.PreparedStatement`
+  * `java.sql.ResultSet`
+  * `java.sql.Statement`
+
++
+Possible values of `--wrapjdbcobjects` are as follows:
+
+  `false`;;
+    The pooling infrastructure does not provide wrapped JDBC objects to
+    applications. (default).
+  `true`;;
+    The pooling infrastructure provides wrapped JDBC objects to
+    applications.
+
+`--description`::
+  Text providing details about the specified JDBC connection pool.
+`--property`::
+  Optional attribute name/value pairs for configuring the pool. The
+  following properties are available:
+
+  `user`;;
+    Specifies the user name for connecting to the database.
+  `password`;;
+    Specifies the password for connecting to the database.
+  `databaseName`;;
+    Specifies the database for this connection pool.
+  `serverName`;;
+    Specifies the database server for this connection pool.
+  `port`;;
+    Specifies the port on which the database server listens for
+    requests.
+  `networkProtocol`;;
+    Specifies the communication protocol.
+  `roleName`;;
+    Specifies the initial SQL role name.
+  `datasourceName`;;
+    Specifies an underlying `XADataSource`, or a
+    `ConnectionPoolDataSource` if connection pooling is done.
+  `description`;;
+    Specifies a text description.
+  `url`;;
+    Specifies the URL for this connection pool. Although this is not a
+    standard property, it is commonly used.
+  `dynamic-reconfiguration-wait-timeout-in-seconds`;;
+    Used to enable dynamic reconfiguration of the connection pool
+    transparently to the applications that are using the pool, so that
+    applications need not be re-enabled for the attribute or property
+    changes to the pool to take effect. Any in-flight transaction's
+    connection requests will be allowed to complete with the old pool
+    configuration as long as the connection requests are within the
+    timeout period, so as to complete the transaction. New connection
+    requests will wait for the pool reconfiguration to complete and
+    connections will be acquired using the modified pool configuration.
+  `LazyConnectionEnlistment`;;
+    Deprecated. Use the equivalent attribute. The default value is
+    false.
+  `LazyConnectionAssociation`;;
+    Deprecated. Use the equivalent attribute. The default value is
+    false.
+  `AssociateWithThread`;;
+    Deprecated. Use the equivalent attribute. The default value is
+    false.
+  `MatchConnections`;;
+    Deprecated. Use the equivalent attribute. The default value is true.
+  `Prefer-Validate-Over-Recreate`;;
+    Specifies whether pool resizer should validate idle connections
+    before destroying and recreating them. The default value is true.
+  `time-to-keep-queries-in-minutes`;;
+    Specifies the number of minutes that will be cached for use in
+    calculating frequently used queries. Takes effect when SQL tracing
+    and monitoring are enabled for the JDBC connection pool. The default
+    value is 5 minutes.
+  `number-of-top-queries-to-report`;;
+    Specifies the number of queries to list when reporting the top and
+    most frequently used queries. Takes effect when SQL tracing and
+    monitoring are enabled for the JDBC connection pool. The default
+    value is 10 queries.
+
++
+[NOTE]
+====
+If an attribute name or attribute value contains a colon, the
+backslash (`\`) must be used to escape the colon in the name or value.
+Other characters might also require an escape character. For more
+information about escape characters in command options, see the
+link:asadmin.html#asadmin-1m[`asadmin`(1M)] man page.
+====
+
+`--target`::
+  Do not specify this option. This option is retained for compatibility
+  with earlier releases. If you specify this option, a syntax error does
+  not occur. Instead, the subcommand runs successfully and displays a
+  warning message that the option is ignored.
+
+[[sthref323]]
+
+=== Operands
+
+connectionpoolid::
+  The name of the JDBC connection pool to be created.
+
+[[sthref324]]
+
+=== Examples
+
+[[GSRFM493]][[sthref325]]
+
+==== Example 1   Creating a JDBC Connection Pool
+
+This example creates a JDBC connection pool named `sample_derby_pool`.
+
+[source]
+----
+asadmin> create-jdbc-connection-pool
+--datasourceclassname org.apache.derby.jdbc.ClientDataSource
+--restype javax.sql.XADataSource
+--property portNumber=1527:password=APP:user=APP:serverName=
+localhost:databaseName=sun-appserv-samples:connectionAttributes=\;
+create\\=true sample_derby_pool
+Command create-jdbc-connection-pool executed successfully
+----
+
+The escape character backslash (`\`) is used in the `--property` option
+to distinguish the semicolon (`;`). Two backslashes (`\\`) are used to
+distinguish the equal sign (`=`).
+
+[[sthref326]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref327]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-jdbc-connection-pool.html#delete-jdbc-connection-pool-1[`delete-jdbc-connection-pool`(1)],
+link:list-jdbc-connection-pools.html#list-jdbc-connection-pools-1[`list-jdbc-connection-pools`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-jdbc-resource.adoc b/docs/reference-manual/src/main/asciidoc/create-jdbc-resource.adoc
new file mode 100644
index 0000000..0f6c2b3
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-jdbc-resource.adoc
@@ -0,0 +1,128 @@
+type=page
+status=published
+title=create-jdbc-resource
+next=create-jmsdest.html
+prev=create-jdbc-connection-pool.html
+~~~~~~
+
+= create-jdbc-resource
+
+[[create-jdbc-resource-1]][[GSRFM00037]][[create-jdbc-resource]]
+
+== create-jdbc-resource
+
+Creates a JDBC resource with the specified JNDI name
+
+[[sthref328]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-jdbc-resource [--help]
+--connectionpoolid connectionpoolid
+[--enabled={false|true}]
+[--description description]
+[--property (property=value)[:name=value]*]
+[--target target]
+jndi_name
+----
+
+[[sthref329]]
+
+=== Description
+
+The `create-jdbc-resource` subcommand creates a new JDBC resource.
+
+This subcommand is supported in remote mode only.
+
+[[sthref330]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--connectionpoolid`::
+  The name of the JDBC connection pool. If two or more JDBC resource
+  elements point to the same connection pool element, they use the same
+  pool connection at runtime.
+`--enabled`::
+  Determines whether the JDBC resource is enabled at runtime. The
+  default value is true.
+`--description`::
+  Text providing descriptive details about the JDBC resource.
+`--property`::
+  Optional attribute name/value pairs for configuring the resource.
+`--target`::
+  This option helps specify the target to which you are deploying. Valid
+  values are:
+
+  `server`;;
+    Deploys the component to the default server instance. This is the
+    default value.
+  `domain`;;
+    Deploys the component to the domain.
+  cluster_name;;
+    Deploys the component to every server instance in the cluster.
+  instance_name;;
+    Deploys the component to a particular server instance.
+
+[NOTE]
+====
+The resource is always created for the domain as a whole, but the
+`resource-ref` for the resource is only created for the specified
+`--target`. This means that although the resource is defined at the
+domain level, it is only available at the specified target level. Use
+the `create-resource-ref` subcommand to refer to the resource in
+multiple targets if needed.
+====
+
+
+[[sthref331]]
+
+=== Operands
+
+jndi_name::
+  The JNDI name of this JDBC resource.
+
+[[sthref332]]
+
+=== Examples
+
+[[GSRFM494]][[sthref333]]
+
+==== Example 1   Creating a JDBC Resource
+
+This example creates a JDBC resource named `jdbc/DerbyPool`.
+
+[source]
+----
+asadmin> create-jdbc-resource
+--connectionpoolid sample_derby_pool jdbc/DerbyPool
+Command create-jdbc-resource executed successfully.
+----
+
+[[sthref334]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref335]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-resource-ref.html#create-resource-ref-1[`create-resource-ref`(1)],
+link:delete-jdbc-resource.html#delete-jdbc-resource-1[`delete-jdbc-resource`(1)],
+link:list-jdbc-resources.html#list-jdbc-resources-1[`list-jdbc-resources`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-jms-host.adoc b/docs/reference-manual/src/main/asciidoc/create-jms-host.adoc
new file mode 100644
index 0000000..696d0fe
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-jms-host.adoc
@@ -0,0 +1,121 @@
+type=page
+status=published
+title=create-jms-host
+next=create-jms-resource.html
+prev=create-jmsdest.html
+~~~~~~
+
+= create-jms-host
+
+[[create-jms-host-1]][[GSRFM00039]][[create-jms-host]]
+
+== create-jms-host
+
+Creates a JMS host
+
+[[sthref344]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-jms-host [--help]
+--mqhost mq-host --mqport mq-port
+--mquser mq-user --mqpassword mq-password
+[--target target]
+[--force={false|true}]
+jms_host_name
+----
+
+[[sthref345]]
+
+=== Description
+
+Creates a Java Message Service (JMS) host within the JMS service.
+
+This subcommand is supported in remote mode only. Remote `asadmin`
+subcommands require a running domain administration server (DAS).
+
+[[sthref346]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--mqhost`::
+  The host name for the JMS service.
+`--mqport`::
+  The port number used by the JMS service.
+`--mquser`::
+  The user name for the JMS service.
+`--mqpassword`::
+  The password for the JMS service.
+`--target`::
+  Creates the JMS host only for the specified target. Valid values are
+  as follows:
+
+  `server`;;
+    Creates the JMS host for the default server instance. This is the
+    default value.
+  configuration-name;;
+    Creates the JMS host in the specified configuration.
+  cluster-name;;
+    Creates the JMS host for every server instance in the specified
+    cluster.
+  instance-name;;
+    Creates the JMS host for the specified server instance.
+
+`--force`::
+  Specifies whether the subcommand overwrites the existing JMS host of
+  the same name. The default value is `false`.
+
+[[sthref347]]
+
+=== Operands
+
+jms_host_name::
+  A unique identifier for the JMS host to be created.
+
+[[sthref348]]
+
+=== Examples
+
+[[GSRFM496]][[sthref349]]
+
+==== Example 1   Creating a JMS host using a non-default port
+
+The following command creates a JMS host named `MyNewHost` on the system
+`pigeon`.
+
+[source]
+----
+asadmin> create-jms-host --mqhost pigeon.example.com --mqport 7677
+--mquser admin --mqpassword admin MyNewHost
+Jms Host MyNewHost created.
+Command create-jms-host executed successfully.
+----
+
+[[sthref350]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref351]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-jms-host.html#delete-jms-host-1[`delete-jms-host`(1)],
+link:jms-ping.html#jms-ping-1[`jms-ping`(1)],
+link:list-jms-hosts.html#list-jms-hosts-1[`list-jms-hosts`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-jms-resource.adoc b/docs/reference-manual/src/main/asciidoc/create-jms-resource.adoc
new file mode 100644
index 0000000..ed30510
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-jms-resource.adoc
@@ -0,0 +1,230 @@
+type=page
+status=published
+title=create-jms-resource
+next=create-jndi-resource.html
+prev=create-jms-host.html
+~~~~~~
+
+= create-jms-resource
+
+[[create-jms-resource-1]][[GSRFM00040]][[create-jms-resource]]
+
+== create-jms-resource
+
+Creates a JMS resource
+
+[[sthref352]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-jms-resource [--help]
+--restype type
+[--target target]
+[--enabled={true|false}]
+[--description text]
+[--property (name=value)[:name=value]*]
+[--force={false|true}]
+jndi_name
+----
+
+[[sthref353]]
+
+=== Description
+
+The `create-jms-resource` subcommand creates a Java Message Service
+(JMS) connection factory resource or a JMS destination resource.
+
+This subcommand is supported in remote mode only. Remote `asadmin`
+subcommands require a running domain administration server (DAS).
+
+[[sthref354]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--restype`::
+  The JMS resource type, which can be `jakarta.jms.Topic`,
+  `jakarta.jms.Queue`, `jakarta.jms.ConnectionFactory`,
+  `jakarta.jms.TopicConnectionFactory`, or
+  `jakarta.jms.QueueConnectionFactory`.
+`--target`::
+  Creates the JMS resource only for the specified target. Valid values
+  are as follows:
++
+[NOTE]
+====
+The resource is always created for the domain as a whole, but the
+`<resource-ref>` element for the resource is only created for the
+specified `--target`. This means that although the resource is defined
+at the domain level, it is only active at the specified `--target`.
+====
+
+  `server`;;
+    Creates the JMS resource for the default server instance. This is
+    the default value.
+  `domain`;;
+    Creates the JMS resource for the domain.
+  cluster-name;;
+    Creates the JMS resource for every server instance in the specified
+    cluster.
+  instance-name;;
+    Creates the JMS resource for the specified server instance.
+
+`--enabled`::
+  If set to true (the default), the resource is enabled at runtime.
+`--description`::
+  Text providing details about the JMS resource.
+`--property`::
+  Optional attribute name/value pairs for configuring the JMS resource. +
+  You can specify the following properties for a connection factory
+  resource:
+
+  `ClientId`;;
+    A client ID for a connection factory that will be used by a durable
+    subscriber.
+  `AddressList`;;
+    A comma-separated list of message queue addresses that specify the
+    host names (and, optionally, port numbers) of a message broker
+    instance or instances with which your application will communicate.
+    For example, the value could be `earth` or `earth:7677`. Specify the
+    port number if the message broker is running on a port other than
+    the default (7676). The default value is an address list composed
+    from the JMS hosts defined in the server's JMS service
+    configuration. The default value is `localhost` and the default port
+    number is 7676. The client will attempt a connection to a broker on
+    port 7676 of the local host.
+  `UserName`;;
+    The user name for the connection factory. The default value is
+    `guest`.
+  `Password`;;
+    The password for the connection factory. The default value is
+    `guest`.
+  `ReconnectEnabled`;;
+    A value of `true` indicates that the client runtime attempts to
+    reconnect to a message server (or the list of addresses in the
+    `AddressList`) when a connection is lost. The default value is
+    `false`.
+  `ReconnectAttempts`;;
+    The number of attempts to connect (or reconnect) for each address in
+    the `AddressList` before the client runtime tries the next address
+    in the list. A value of -1 indicates that the number of reconnect
+    attempts is unlimited (the client runtime attempts to connect to the
+    first address until it succeeds). The default value is 6.
+  `ReconnectInterval`;;
+    The interval in milliseconds between reconnect attempts. This
+    applies to attempts on each address in the `AddressList` and for
+    successive addresses in the list. If the interval is too short, the
+    broker does not have time to recover. If it is too long, the
+    reconnect might represent an unacceptable delay. The default value
+    is 30,000 milliseconds.
+  `AddressListBehavior`;;
+    Specifies whether connection attempts are in the order of addresses
+    in the `AddressList` (`PRIORITY`) or in a random order (`RANDOM`).
+    `PRIORITY` means that the reconnect will always try to connect to
+    the first server address in the `AddressList` and will use another
+    one only if the first broker is not available. If you have many
+    clients attempting a connection using the same connection factory,
+    specify `RANDOM` to prevent them from all being connected to the
+    same address. The default value is the `AddressListBehavior` value
+    of the server's JMS service configuration.
+  `AddressListIterations`;;
+    The number of times the client runtime iterates through the
+    `AddressList` in an effort to establish (or re-establish) a
+    connection). A value of -1 indicates that the number of attempts is
+    unlimited. The default value is -1.
+
++
+Additionally, you can specify `connector-connection-pool` attributes
+  as connector resource properties. For a list of these attributes, see
+  "link:application-deployment-guide/dd-elements.html#GSDPG00124[connector-connection-pool]" in {productName} Application Deployment Guide. +
+  You can specify the following properties for a destination resource:
+
+  `Name`;;
+    The name of the physical destination to which the resource will
+    refer. The physical destination is created automatically when you
+    run an application that uses the destination resource. You can also
+    create a physical destination with the `create-jmsdest` subcommand.
+    If you do not specify this property, the JMS service creates a
+    physical destination with the same name as the destination resource
+    (replacing any forward slash in the JNDI name with an underscore).
+  `Description`;;
+    A description of the physical destination.
+
+`--force`::
+  Specifies whether the subcommand overwrites the existing JMS resource
+  of the same name. The default value is `false`.
+
+[[sthref355]]
+
+=== Operands
+
+jndi_name::
+  The JNDI name of the JMS resource to be created.
+
+[[sthref356]]
+
+=== Examples
+
+[[GSRFM497]][[sthref357]]
+
+==== Example 1   Creating a JMS connection factory resource for durable
+subscriptions
+
+The following subcommand creates a connection factory resource of type
+`jakarta.jms.ConnectionFactory` whose JNDI name is
+`jms/DurableConnectionFactory`. The `ClientId` property sets a client ID
+on the connection factory so that it can be used for durable
+subscriptions. The JNDI name for a JMS resource customarily includes the
+`jms/` naming subcontext.
+
+[source]
+----
+asadmin> create-jms-resource --restype jakarta.jms.ConnectionFactory
+--description "connection factory for durable subscriptions"
+--property ClientId=MyID jms/DurableConnectionFactory
+Connector resource jms/DurableConnectionFactory created.
+Command create-jms-resource executed successfully.
+----
+
+[[GSRFM498]][[sthref358]]
+
+==== Example 2   Creating a JMS destination resource
+
+The following subcommand creates a destination resource whose JNDI name
+is `jms/MyQueue`. The `Name` property specifies the physical destination
+to which the resource refers.
+
+[source]
+----
+asadmin> create-jms-resource --restype jakarta.jms.Queue
+--property Name=PhysicalQueue jms/MyQueue
+Administered object jms/MyQueue created.
+Command create-jms-resource executed successfully.
+----
+
+[[sthref359]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref360]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-jms-resource.html#delete-jms-resource-1[`delete-jms-resource`(1)],
+link:list-jms-resources.html#list-jms-resources-1[`list-jms-resources`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-jmsdest.adoc b/docs/reference-manual/src/main/asciidoc/create-jmsdest.adoc
new file mode 100644
index 0000000..f9b3743
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-jmsdest.adoc
@@ -0,0 +1,233 @@
+type=page
+status=published
+title=create-jmsdest
+next=create-jms-host.html
+prev=create-jdbc-resource.html
+~~~~~~
+
+= create-jmsdest
+
+[[create-jmsdest-1]][[GSRFM00038]][[create-jmsdest]]
+
+== create-jmsdest
+
+Creates a JMS physical destination
+
+[[sthref336]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-jmsdest [--help]
+--desttype dest_type
+[--property (name=value)[:name=value]*]
+[--target target]
+[--force={false|true}]
+dest_name
+----
+
+[[sthref337]]
+
+=== Description
+
+The `create-jmsdest` subcommand creates a Java Message Service (JMS)
+physical destination. Typically, you use the `create-jms-resource`
+subcommand to create a JMS destination resource that has a `Name`
+property that specifies the physical destination. The physical
+destination is created automatically when you run an application that
+uses the destination resource. Use the `create-jmsdest` subcommand if
+you want to create a physical destination with non-default property
+settings.
+
+This subcommand is supported in remote mode only. Remote `asadmin`
+subcommands require a running domain administration server (DAS).
+
+[[sthref338]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--desttype`::
+  The type of the JMS destination. Valid values are `topic` and `queue`.
+`--property`::
+  Optional attribute name/value pairs for configuring the physical
+  destination. You can specify the following properties for a physical
+  destination.
+
+  `MaxNumMsgs`;;
+    The maximum number of unconsumed messages permitted for the
+    destination. A value of -1 denotes an unlimited number of messages.
+    The default value is -1. For the dead message queue, the default
+    value is 1000. +
+    If the `limitBehavior` property is set to `FLOW_CONTROL`, it is
+    possible for the specified message limit to be exceeded because the
+    broker cannot react quickly enough to stop the flow of incoming
+    messages. In such cases, the value specified for `maxNumMsgs` serves
+    as merely a hint for the broker rather than a strictly enforced limit.
+  `MaxBytesPerMsg`;;
+    The maximum size, in bytes, of any single message. Rejection of a
+    persistent message is reported to the producing client with an
+    exception; no notification is sent for non-persistent messages. +
+    The value may be expressed in bytes, kilobytes, or megabytes, using
+    the following suffixes:
+    `b`:::
+      Bytes
+    `k`:::
+      Kilobytes (1024 bytes)
+    `m`:::
+      Megabytes (1024 x 1024 = 1,048,576 bytes)
++
+A value with no suffix is expressed in bytes; a value of -1 denotes
+    an unlimited message size. The default value is -1.
+  `MaxTotalMsgBytes`;;
+    The maximum total memory, in bytes, for unconsumed messages. The
+    default value is -1. The syntax is the same as for `maxBytesPerMsg`.
+    For the dead message queue, the default value is `10m`.
+  `LimitBehavior`;;
+    The behavior of the message queue broker when the memory-limit
+    threshold is reached. Valid values are as follows:
+    `REJECT_NEWEST`:::
+      Reject newest messages and notify the producing client with an
+      exception only if the message is persistent. This is the default
+      value.
+    `FLOW_CONTROL`:::
+      Slow the rate at which message producers send messages.
+    `REMOVE_OLDEST`:::
+      Throw out the oldest messages.
+    `REMOVE_LOW_PRIORITY`:::
+      Throw out the lowest-priority messages according to age, with no
+      notification to the producing client.
++
+If the value is `REMOVE_OLDEST` or `REMOVE_LOW_PRIORITY` and the
+    `useDMQ` property is set to `true`, excess messages are moved to the
+    dead message queue. For the dead message queue itself, the default
+    limit behavior is `REMOVE_OLDEST`, and the value cannot be set to
+    `FLOW_CONTROL`.
+  `MaxNumProducers`;;
+    The maximum number of message producers for the destination.
+    When this limit is reached, no new producers can be created.
+    A value of -1 denotes an unlimited number of producers.
+    The default value is 100.
+    This property does not apply to the dead message queue.
+  `ConsumerFlowLimit`;;
+    The maximum number of messages that can be delivered to a consumer
+    in a single batch. A value of -1 denotes an unlimited number of
+    messages. The default value is 1000. The client runtime can override
+    this limit by specifying a lower value on the connection factory
+    object. +
+    In load-balanced queue delivery, this is the initial number of
+    queued messages routed to active consumers before load balancing
+    begins.
+  `UseDMQ`;;
+    If set to `true`, dead messages go to the dead message queue. If set
+    to `false`, dead messages are discarded. The default value is `true`.
+  `ValidateXMLSchemaEnabled`;;
+    If set to `true`, XML schema validation is enabled for the
+    destination. The default value is `false`. +
+    When XML validation is enabled, the Message Queue client runtime
+    will attempt to validate an XML message against the specified XSDs
+    (or against the DTD, if no XSD is specified) before sending it to
+    the broker. If the specified schema cannot be located or the message
+    cannot be validated, the message is not sent, and an exception is
+    thrown. +
+    This property should be set when a destination is inactive: that is,
+    when it has no consumers or producers and when there are no messages
+    in the destination. Otherwise the producer must reconnect.
+  `XMLSchemaURIList`;;
+    A space-separated list of XML schema document (XSD) URI strings. The
+    URIs point to the location of one or more XSDs to use for XML schema
+    validation, if `validateXMLSchemaEnabled` is set to `true`.
+    The default value is `null`. +
+    Use double quotes around this value if multiple URIs are specified,
+    as in the following example:
++
+[source]
+----
+"http://foo/flap.xsd http://test.com/test.xsd"
+----
++
+If this property is not set or `null` and XML validation is enabled,
+    XML validation is performed using a DTD specified in the XML
+    document. If an XSD is changed as a result of changing application
+    requirements, all client applications that produce XML messages
+    based on the changed XSD must reconnect to the broker.
+
++
+To modify the value of these properties, you can use the
+  as-install``/mq/bin/imqcmd`` command. See "link:../openmq/mq-admin-guide/physical-destination-properties.html#GMADG00049[Physical
+  Destination Property Reference]" in Open Message Queue Administration
+  Guide for more information.
+`--target`::
+  Creates the physical destination only for the specified target.
+  Although the `create-jmsdest` subcommand is related to resources, a
+  physical destination is created using the JMS Service (JMS Broker),
+  which is part of the configuration. A JMS Broker is configured in the
+  config section of `domain.xml`. Valid values are as follows:
+
+  `server`;;
+    Creates the physical destination for the default server instance.
+    This is the default value.
+  configuration-name;;
+    Creates the physical destination in the specified configuration.
+  cluster-name;;
+    Creates the physical destination for every server instance in the
+    specified cluster.
+  instance-name;;
+    Creates the physical destination for the specified server instance.
+
+`--force`::
+  Specifies whether the subcommand overwrites the existing JMS physical
+  destination of the same name. The default value is `false`.
+
+[[sthref339]]
+
+=== Operands
+
+dest_name::
+  A unique identifier for the JMS destination to be created.
+
+[[sthref340]]
+
+=== Examples
+
+[[GSRFM495]][[sthref341]]
+
+==== Example 1   Creating a JMS physical destination
+
+The following subcommand creates a JMS physical queue named
+`PhysicalQueue` with non-default property values.
+
+[source]
+----
+asadmin> create-jmsdest --desttype queue
+--property maxNumMsgs=1000:maxBytesPerMsg=5k PhysicalQueue
+Command create-jmsdest executed successfully.
+----
+
+[[sthref342]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref343]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-jms-resource.html#create-jms-resource-1[`create-jms-resource`(1)],
+link:delete-jmsdest.html#delete-jmsdest-1[`delete-jmsdest`(1)],
+link:flush-jmsdest.html#flush-jmsdest-1[`flush-jmsdest`(1)],
+link:list-jmsdest.html#list-jmsdest-1[`list-jmsdest`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-jndi-resource.adoc b/docs/reference-manual/src/main/asciidoc/create-jndi-resource.adoc
new file mode 100644
index 0000000..94ce5b6
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-jndi-resource.adoc
@@ -0,0 +1,140 @@
+type=page
+status=published
+title=create-jndi-resource
+next=create-jvm-options.html
+prev=create-jms-resource.html
+~~~~~~
+
+= create-jndi-resource
+
+[[create-jndi-resource-1]][[GSRFM00041]][[create-jndi-resource]]
+
+== create-jndi-resource
+
+Registers a JNDI resource
+
+[[sthref361]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-jndi-resource [--help]
+[--target target]
+--restype restype --factoryclass factoryclass
+--jndilookupname jndilookupname [--enabled={true|false}]
+[--description description]
+[--property (name=value)[:name=value]*]
+jndi-name
+----
+
+[[sthref362]]
+
+=== Description
+
+The `create-jndi-resource` subcommand registers a JNDI resource.
+
+This subcommand is supported in remote mode only.
+
+[[sthref363]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  This option specifies the target for which you are registering a JNDI
+  resource. Valid values for target are described below.
++
+[NOTE]
+====
+The resource is always created for the domain as a whole, but the
+`resource-ref` for the resource is only created for the specified
+`--target`. This means that although the resource is defined at the
+domain level, it is only available at the specified target level. Use
+the `create-resource-ref` subcommand to refer to the resource in
+multiple targets if needed.
+====
+
+  `server`;;
+    Creates the resource for the default server instance. This value is
+    the default.
+  `domain`;;
+    Creates the resource for the domain
+  cluster-name;;
+    Creates the resource for every server instance in the cluster
+  instance-name;;
+    Creates the resource for a particular server instance
+
+`--restype`::
+  The JNDI resource type. Valid values are `topic` or `queue`.
+`--factoryclass`::
+  The class that creates the JNDI resource.
+`--jndilookupname`::
+  The lookup name that the external container uses.
+`--enabled`::
+  Determines whether the resource is enabled at runtime. Default is
+  true.
+`--description`::
+  The text that provides details about the JNDI resource.
+`--property`::
+  Optional properties for configuring the resource. Each property is
+  specified as a name-value pair. +
+  The available properties are specific to the implementation that is
+  specified by the `--factoryclass` option and are used by that
+  implementation. {productName} itself does not define any
+  properties for configuring a JNDI resource.
+
+[[sthref364]]
+
+=== Operands
+
+jndi-name::
+  The unique name of the JNDI resource to be created.
+
+[[sthref365]]
+
+=== Examples
+
+[[GSRFM499]][[sthref366]]
+
+==== Example 1   Creating a JNDI Resource
+
+This example creates the JNDI resource `my-jndi-resource` for the
+default server instance.
+
+[source]
+----
+asadmin> create-jndi-resource
+--restype com.example.jndi.MyResourceType
+--factoryclass com.example.jndi.MyInitialContextFactoryClass
+--jndilookupname remote-jndi-name
+--description "sample JNDI resource" my-jndi-resource
+JNDI resource my-jndi-resource created.
+Command create-jndi-resource executed successfully.
+----
+
+[[sthref367]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref368]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-resource-ref.html#create-resource-ref-1[`create-resource-ref`(1)],
+link:delete-jndi-resource.html#delete-jndi-resource-1[`delete-jndi-resource`(1)],
+link:list-jndi-resources.html#list-jndi-resources-1[`list-jndi-resources`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-jvm-options.adoc b/docs/reference-manual/src/main/asciidoc/create-jvm-options.adoc
new file mode 100644
index 0000000..dcc076d
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-jvm-options.adoc
@@ -0,0 +1,270 @@
+type=page
+status=published
+title=create-jvm-options
+next=create-lifecycle-module.html
+prev=create-jndi-resource.html
+~~~~~~
+
+= create-jvm-options
+
+[[create-jvm-options-1]][[GSRFM00042]][[create-jvm-options]]
+
+== create-jvm-options
+
+Creates options for the Java application launcher
+
+[[sthref369]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-jvm-options [--help]
+[--target target] [--profiler={true|false}]
+(jvm-option-name=jvm-option-value) [:jvm-option-name=jvm-option-value*]
+----
+
+[[sthref370]]
+
+=== Description
+
+The `create-jvm-options` subcommand creates command-line options that
+are passed to the Java application launcher when {productName} is
+started. The options that this subcommand creates are in addition to the
+options that are preset with {productName}. Java application
+launcher options are stored in the Java configuration `java—config`
+element or the profiler `profiler` element of the `domain.xml` file. The
+options are sent to the command line in the order they appear in the
+`java—config` element or the profiler `profiler` element in the
+`domain.xml` file.
+
+Profiler options are used to record the settings that are required to
+start a particular profiler. The profiler must already exist. If
+necessary, use the
+link:create-profiler.html#create-profiler-1[`create-profiler`(1)]
+subcommand to create the profiler.
+
+This subcommand can be used to create the following types of options:
+
+* Java system properties. These options are set through the `-D` option
+of the Java application launcher. For example:
++
+`-Djava.security.manager`
++
+`-Denvironment=Production`
+
+* Startup parameters for the Java application launcher. These options
+are preceded by the dash character (`-`). For example:
++
+``--XX:PermSize=``size
++
+`-Xmx1024m`
++
+`-d64`
+
+If the subcommand specifies an option that already exists, the command
+does not re-create the option.
+
+
+[NOTE]
+====
+Ensure that any option that you create is valid. The subcommand might
+allow you to create an invalid option, but such an invalid option can
+cause startup to fail.
+====
+
+
+An option can be verified by examining the server log after
+{productName} starts. Options for the Java application launcher are
+written to the `server.log` file before any other information when
+{productName} starts.
+
+The addition of some options requires a server restart for changes to
+become effective. Other options are set immediately in the environment
+of the domain administration server (DAS) and do not require a restart.
+Whether a restart is required depends on the type of option.
+
+* Restart is not required for Java system properties whose names do not
+start with `-Djava.` or `-Djavax.` (including the trailing period). For
+example, restart is not required for the following Java system property:
++
+`-Denvironment=Production`
+
+* Restart is required for the following options:
+
+** Java system properties whose names start with `-Djava.` or `-Djavax.`
+(including the trailing period). For example:
++
+`-Djava.security.manager`
+
+** Startup parameters for the Java application launcher. For example:
++
+`-client`
++
+`-Xmx1024m`
++
+`-d64`
+
+To restart the DAS, use the
+link:restart-domain.html#restart-domain-1[`restart-domain`(1)] command.
+
+This subcommand is supported in remote mode only.
+
+[[sthref371]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Specifies the target on which you are creating Java application
+  launcher options. +
+  Valid values are as follows:
+
+  `server`;;
+    Specifies the DAS (default).
+  instance-name;;
+    Specifies a {productName} instance.
+  cluster-name;;
+    Specifies a cluster.
+  configuration-name;;
+    Specifies a named configuration.
+
+`--profiler`::
+  Indicates whether the Java application launcher options are for the
+  profiler. The profiler must exist for this option to be true. Default
+  is false.
+
+[[sthref372]]
+
+=== Operands
+
+jvm-option-name::
+  One or more options delimited by a colon (:). The format of an option
+  depends on the following:
+
+  * If the option has a name and a value, the format is option-name=value.
+  * If the option has only a name, the format is option-name.
+    For example, `-Xmx2048m`.
+  * If the first option name could be misinterpreted as one or more
+    `asadmin` short options, the format is `--` option-name. For example,
+    `-server` in the following command could be misinterpreted as `-se`,
+    the `asadmin` short forms for `--secure` and `--echo`:
++
+[source]
+----
+create-jvm-options -server
+----
++
+To create the JVM option `-server`, instead use the command:
++
+[source]
+----
+create-jvm-options -- -server
+----
++
+[NOTE]
+====
+If an option name or option value contains a colon, the backslash
+(`\`) must be used to escape the colon in the name or value. Other
+characters might also require an escape character. For more
+information about escape characters in subcommand options, see the
+link:asadmin.html#asadmin-1m[`asadmin`(1M)] man page.
+====
+
+[[sthref373]]
+
+=== Examples
+
+[[GSRFM500]][[sthref374]]
+
+==== Example 1   Setting Java System Properties
+
+This example sets multiple Java system properties.
+
+[source]
+----
+asadmin> create-jvm-options -Dunixlocation=/root/example:
+-Dvariable=\$HOME:-Dwindowslocation=d\:\\sun\\appserver:-Doption1=-value1
+created 4 option(s)
+Command create-jvm-options executed successfully.
+----
+
+[[GSRFM501]][[sthref375]]
+
+==== Example 2   Setting a Startup Parameter for the Java Application
+Launcher
+
+This example sets the maximum available heap size to 1024.
+
+[source]
+----
+asadmin> create-jvm-options -Xmx1024m
+created 1 option(s)
+Command create-jvm-options executed successfully.
+----
+
+[[GSRFM502]][[sthref376]]
+
+==== Example 3   Setting Multiple Startup Parameters for the Java Application
+Launcher
+
+This example sets the maximum available heap size to 1024 and requests
+details about garbage collection.
+
+[source]
+----
+asadmin> create-jvm-options "-Xmx1024m:-XX\:+PrintGCDetails"
+created 1 option(s)
+Command create-jvm-options executed successfully.
+----
+
+In this case, one of the two parameters already exists, so the
+subcommand reports that only one option was set.
+
+[[GSRFM503]][[sthref377]]
+
+==== Example 4   Setting a JVM Startup Parameter for the Profiler
+
+This example sets a JVM startup parameter for the profiler.
+
+[source]
+----
+asadmin> create-jvm-options --profiler=true -XX\:MaxPermSize=192m
+created 1 option(s)
+Command create-jvm-options executed successfully.
+----
+
+[[sthref378]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref379]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-profiler.html#create-profiler-1[`create-profiler`(1)],
+link:delete-jvm-options.html#delete-jvm-options-1[`delete-jvm-options`(1)],
+link:list-jvm-options.html#list-jvm-options-1[`list-jvm-options`(1)],
+link:restart-domain.html#restart-domain-1[`restart-domain`(1)]
+
+For more information about the Java application launcher, see the
+reference page for the operating system that you are using:
+
+* Oracle Solaris and Linux: java - the Java application launcher
+(`http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/java.html`)
+* Windows: java - the Java application launcher
+(`http://docs.oracle.com/javase/6/docs/technotes/tools/windows/java.html`)
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-lifecycle-module.adoc b/docs/reference-manual/src/main/asciidoc/create-lifecycle-module.adoc
new file mode 100644
index 0000000..c2fd295
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-lifecycle-module.adoc
@@ -0,0 +1,141 @@
+type=page
+status=published
+title=create-lifecycle-module
+next=create-local-instance.html
+prev=create-jvm-options.html
+~~~~~~
+
+= create-lifecycle-module
+
+[[create-lifecycle-module-1]][[GSRFM00043]][[create-lifecycle-module]]
+
+== create-lifecycle-module
+
+Creates a lifecycle module
+
+[[sthref380]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-lifecycle-module [--help]
+--classname classname
+[--enabled={true|false}] [--target target]
+[--classpath classpath] [--loadorder loadorder]
+[--failurefatal={false|true} ] [--description description]
+[--property (name=value)[:name=value]*]
+module_name
+----
+
+[[sthref381]]
+
+=== Description
+
+The `create-lifecycle-module` subcommand creates a lifecycle module. A
+lifecycle module provides a means of running a short or long duration
+Java-based task at a specific stage in the server life cycle. This
+subcommand is supported in remote mode only.
+
+[[sthref382]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--classname`::
+  This is the fully qualified name of the startup class.
+`--target`::
+  Indicates the location where the lifecycle module is to be created.
+  Valid values are
+
+  * `server`- Specifies the default server instance as the target for
+  creating the lifecycle module. `server` is the name of the default
+  server instance and is the default value for this option.
+  * cluster_name- Specifies a particular cluster as the target for
+  creating the lifecycle module.
+  * instance_name- Specifies a particular stand-alone server instance as
+  the target for creating the lifecycle module.
+
+`--classpath`::
+  This option indicates where the lifecycle module is located. It is a
+  classpath with the standard format: either colon-separated (Unix) or
+  semicolon-separated (Windows) JAR files and directories. The
+  referenced JAR files and directories are not uploaded to the server
+  instance.
+`--loadorder`::
+  This option represents an integer value that can be used to force the
+  order in which deployed lifecycle modules are loaded at server
+  startup. Smaller numbered modules are loaded sooner. Order is
+  unspecified if two or more lifecycle modules have the same load-order
+  value. The default is `Integer.MAX_VALUE`, which means the lifecycle
+  module is loaded last.
+`--failurefatal`::
+  This option tells the system what to do if the lifecycle module does
+  not load correctly. When this option is set to true, the system aborts
+  the server startup if this module does not load properly. The default
+  value is false.
+`--enabled`::
+  This option determines whether the lifecycle module is enabled at
+  runtime. The default value is true.
+`--description`::
+  This is the text description of the lifecycle module.
+`--property`::
+  This is an optional attribute containing name/value pairs used to
+  configure the lifecycle module.
+
+[[sthref383]]
+
+=== Operands
+
+module_name::
+  This operand is a unique identifier for the deployed server lifecycle
+  event listener module.
+
+[[sthref384]]
+
+=== Examples
+
+[[GSRFM504]][[sthref385]]
+
+==== Example 1   Creating a Lifecycle Module
+
+The following example creates a lifecycle module named `customSetup`.
+
+[source]
+----
+asadmin> create-lifecycle-module --classname "com.acme.CustomSetup"
+--classpath "/export/customSetup" --loadorder 1 --failurefatal=true
+--description "this is a sample customSetup"
+--property rmi="Server\=acme1\:7070":timeout=30 customSetup
+Command create-lifecycle-module executed successfully
+----
+
+The escape character `\` is used in the property option to specify that
+the equal sign (=) and colon (:) are part of the `rmi` property value.
+
+[[sthref386]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref387]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-lifecycle-module.html#delete-lifecycle-module-1[`delete-lifecycle-module`(1)],
+link:list-lifecycle-modules.html#list-lifecycle-modules-1[`list-lifecycle-modules`(1)]
+
+"link:application-development-guide/lifecycle-listeners.html#GSDVG00014[Developing Lifecycle Listeners]" in {productName} Application Development Guide
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-local-instance.adoc b/docs/reference-manual/src/main/asciidoc/create-local-instance.adoc
new file mode 100644
index 0000000..4a159b8
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-local-instance.adoc
@@ -0,0 +1,407 @@
+type=page
+status=published
+title=create-local-instance
+next=create-managed-executor-service.html
+prev=create-lifecycle-module.html
+~~~~~~
+
+= create-local-instance
+
+[[create-local-instance-1]][[GSRFM00044]][[create-local-instance]]
+
+== create-local-instance
+
+Creates a {productName} instance on the host where the subcommand is
+run
+
+[[sthref388]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-local-instance [--help]
+[--node node-name] [--nodedir node-dir]
+[--config config-name | --cluster cluster-name]
+[--lbenabled={true|false}]
+[--portbase port-number] [--checkports={true|false}]
+[--savemasterpassword={false|true}]
+[--usemasterpassword={false|true}]
+[--systemproperties (name=value)[:name=value]* ]
+instance-name
+----
+
+[[sthref389]]
+
+=== Description
+
+The `create-local-instance` subcommand creates a {productName}
+instance on the node that represents the host where the subcommand is
+run. This subcommand does not require the Distributed Component Object
+Model (DCOM) remote protocol or secure shell (SSH) to be configured.
+
+You must run this subcommand from the host that is represented by the
+node where the instance is to reside. To contact the domain
+administration server (DAS), this subcommand requires the name of the
+host where the DAS is running. If a nondefault port is used for
+administration, this subcommand also requires the port number. If you
+are adding the first instance to a node, you must provide this
+information through the `--host` option and the `--port` option of the
+link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility. For the second and
+later instances, this information is obtained from the DAS properties of
+the node.
+
+A {productName} instance is a single Virtual Machine for the Java
+platform (Java Virtual Machine or JVM machine) on a single node in which
+{productName} is running. A node defines the host where the
+{productName} instance resides. The JVM machine must be compatible
+with the Java Platform, Enterprise Edition (Jakarta EE).
+
+A {productName} instance requires a reference to the following items:
+
+* The node that defines the host where the instance resides. The node
+can be specified in the command to create the instance, but is required
+only if more than one node exists in the directory where files for nodes
+are stored. If no node is specified, the behavior of the subcommand
+depends on the number of existing nodes in the directory where nodes are
+stored:
+
+** If no nodes exist, the subcommand creates a node for the instance.
+The name of the node is the name of the host on which the subcommand is run.
+** If only one node exists, the subcommand creates a reference to the
+existing node for the instance.
+** If two or more nodes exist, an error occurs.
+
+* The named configuration that defines the configuration of the
+instance. The configuration can be specified in the command to create
+the instance, but is not required. If no configuration is specified for
+an instance that is not joining a cluster, the subcommand creates a
+configuration for the instance. An instance that is joining a cluster
+receives its configuration from its parent cluster.
+
+Each {productName} instance is one of the following types of
+instance:
+
+Standalone instance::
+  A standalone instance does not share its configuration with any other
+  instances or clusters. A standalone instance is created if either of
+  the following conditions is met:
+
+  * No configuration or cluster is specified in the command to create
+  the instance.
+  * A configuration that is not referenced by any other instances or
+  clusters is specified in the command to create the instance.
+
++
+When no configuration or cluster is specified, a copy of the
+  `default-config` configuration is created for the instance. The name
+  of this configuration is instance-name`-config`, where instance-name
+  represents the name of an unclustered server instance.
+
+Shared instance::
+  A shared instance shares its configuration with other instances or
+  clusters. A shared instance is created if a configuration that is
+  referenced by other instances or clusters is specified in the command
+  to create the instance.
+
+Clustered instance::
+  A clustered instance inherits its configuration from the cluster to
+  which the instance belongs and shares its configuration with other
+  instances in the cluster. A clustered instance is created if a cluster
+  is specified in the command to create the instance. +
+  Any instance that is not part of a cluster is considered an
+  unclustered server instance. Therefore, standalone instances and
+  shared instances are unclustered server instances.
+
+By default, this subcommand attempts to resolve possible port conflicts
+for the instance that is being created. The subcommand also assigns
+ports that are currently not in use and not already assigned to other
+instances on the same node. The subcommand assigns these ports on the
+basis of an algorithm that is internal to the subcommand. Use the
+`--systemproperties` option to resolve port conflicts for additional
+instances on the same node. System properties of an instance can be
+manipulated by using the
+link:create-system-properties.html#create-system-properties-1[`create-system-properties`(1)]
+subcommand and the
+link:delete-system-property.html#delete-system-property-1[`delete-system-property`(1)]
+subcommand.
+
+When creating an instance, the subcommand retrieves the files that are
+required for secure synchronization with the domain administration
+server (DAS). The instance is synchronized with the DAS when the
+instance is started
+
+[[sthref390]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--node`::
+  The name of the node that defines the host where the instance is to be
+  created. The node must be specified only if more than one node exists
+  in the directory where nodes are stored. Otherwise, the node may be
+  omitted. If a node is specified, the node must exist. +
+  If no node is specified, the behavior of the subcommand depends on the
+  number of existing nodes in the directory where nodes are stored:
+
+  * If no nodes exist, the subcommand creates a node for the instance.
+  The name of the node is the name of the host on which the subcommand
+  is run.
+  * If only one node exists, the subcommand creates a reference to the
+  existing node for the instance.
+  * If two or more nodes exist, an error occurs.
+
+`--nodedir`::
+  The path to the directory in which the files for instance's node is to
+  be stored. The default is as-install``/nodes``.
+`--config`::
+  Specifies the named configuration that the instance references.
+  The configuration must exist and must not be named `default-config` or
+  `server-config`. Specifying the `--config` option creates a shared instance. +
+  The `--config` option and the `--cluster` option are mutually
+  exclusive. If both options are omitted, a standalone instance is created.
+`--cluster`::
+  Specifies the cluster from which the instance inherits its configuration.
+  Specifying the `--cluster` option creates a clustered instance. +
+  The `--config` option and the `--cluster` option are mutually
+  exclusive. If both options are omitted, a standalone instance is
+  created.
+`--lbenabled`::
+  Specifies whether the instance is enabled for load balancing. Possible
+  values are as follows:
+
+  `true`;;
+    The instance is enabled for load balancing (default). +
+    When an instance is enabled for load balancing, a load balancer
+    sends requests to the instance.
+  `false`;;
+    The instance is disabled for load balancing.
+
++
+When an instance is disabled for load balancing, a load balancer
+    does not send requests to the instance.
+
+`--portbase`::
+  Determines the number with which the port assignment should start. An
+  instance uses a certain number of ports that are statically assigned.
+  The portbase value determines where the assignment should start. The
+  values for the ports are calculated as follows:
+
+  * Administration port: portbase + 48
+  * HTTP listener port: portbase + 80
+  * HTTPS listener port: portbase + 81
+  * JMS port: portbase + 76
+  * IIOP listener port: portbase + 37
+  * Secure IIOP listener port: portbase + 38
+  * Secure IIOP with mutual authentication port: portbase + 39
+  * JMX port: portbase + 86
+  * JPA debugger port: portbase + 9
+  * Felix shell service port for OSGi module management: portbase + 66
+
++
+When the `--portbase` option is specified, the output of this
+  subcommand includes a complete list of used ports.
+`--checkports`::
+  Specifies whether to check for the availability of the administration,
+  HTTP, JMS, JMX, and IIOP ports. The default value is `true`.
+`--savemasterpassword`::
+  Setting this option to `true` allows the master password to be written
+  to the file system. If the master password is written to the file
+  system, the instance can be started without the need to prompt for the
+  password. If this option is `true`, the `--usemasterpassword` option
+  is also true, regardless of the value that is specified on the command
+  line. Because writing the master password to the file system is an
+  insecure practice, the default is `false`. +
+  The master-password file for an instance is saved in the node
+  directory, not the domain directory. Therefore, this option is
+  required only for the first instance that is created for each node in a domain.
+`--usemasterpassword`::
+  Specifies whether the key store is encrypted with a master password
+  that is built into the system or a user-defined master password. +
+  If `false` (default), the keystore is encrypted with a well-known
+  password that is built into the system. Encrypting the keystore with a
+  password that is built into the system provides no additional security. +
+  If `true`, the subcommand obtains the master password from the
+  `AS_ADMIN_MASTERPASSWORD` entry in the password file or prompts for
+  the master password. The password file is specified in the
+  `--passwordfile` option of the
+  link:asadmin.html#asadmin-1m[`asadmin`(1M)]utility. +
+  If the `--savemasterpassword` option is `true`, this option is also
+  true, regardless of the value that is specified on the command line. +
+  The master password must be the same for all instances in a domain.
+`--systemproperties`::
+  Defines system properties for the instance. These properties override
+  property definitions for port settings in the instance's
+  configuration. Predefined port settings must be overridden if, for
+  example, two clustered instances reside on the same host. In this
+  situation, port settings for one instance must be overridden because
+  both instances share the same configuration. +
+  The following properties are available:
+
+  `ASADMIN_LISTENER_PORT`;;
+    This property specifies the port number of the HTTP port or HTTPS
+    port through which the DAS connects to the instance to manage the
+    instance. Valid values are 1-65535. On UNIX, creating sockets that
+    listen on ports 1-1024 requires superuser privileges.
+  `HTTP_LISTENER_PORT`;;
+    This property specifies the port number of the port that is used to
+    listen for HTTP requests. Valid values are 1-65535. On UNIX,
+    creating sockets that listen on ports 1-1024 requires superuser
+    privileges.
+  `HTTP_SSL_LISTENER_PORT`;;
+    This property specifies the port number of the port that is used to
+    listen for HTTPS requests. Valid values are 1-65535. On UNIX,
+    creating sockets that listen on ports 1-1024 requires superuser
+    privileges.
+  `IIOP_LISTENER_PORT`;;
+    This property specifies the port number of the port that is used for
+    IIOP connections. Valid values are 1-65535. On UNIX, creating
+    sockets that listen on ports 1-1024 requires superuser privileges.
+  `IIOP_SSL_LISTENER_PORT`;;
+    This property specifies the port number of the port that is used for
+    secure IIOP connections. Valid values are 1-65535. On UNIX, creating
+    sockets that listen on ports 1-1024 requires superuser privileges.
+  `IIOP_SSL_MUTUALAUTH_PORT`;;
+    This property specifies the port number of the port that is used for
+    secure IIOP connections with client authentication. Valid values are
+    1-65535. On UNIX, creating sockets that listen on ports 1-1024
+    requires superuser privileges.
+  `JAVA_DEBUGGER_PORT`;;
+    This property specifies the port number of the port that is used for
+    connections to the Java Platform Debugger Architecture (JPDA)
+    (http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html)
+    debugger. Valid values are 1-65535. On UNIX, creating sockets that
+    listen on ports 1-1024 requires superuser privileges.
+  `JMS_PROVIDER_PORT`;;
+    This property specifies the port number for the Java Message Service
+    provider. Valid values are 1-65535. On UNIX, creating sockets that
+    listen on ports 1-1024 requires superuser privileges.
+  `JMX_SYSTEM_CONNECTOR_PORT`;;
+    This property specifies the port number on which the JMX connector
+    listens. Valid values are 1-65535. On UNIX, creating sockets that
+    listen on ports 1-1024 requires superuser privileges.
+  `OSGI_SHELL_TELNET_PORT`;;
+    This property specifies the port number of the port that is used for
+    connections to the Apache Felix Remote Shell
+    (`http://felix.apache.org/site/apache-felix-remote-shell.html`).
+    This shell uses the Felix shell service to interact with the OSGi
+    module management subsystem. Valid values are 1-65535. On UNIX,
+    creating sockets that listen on ports 1-1024 requires superuser
+    privileges.
+
+[[sthref391]]
+
+=== Operands
+
+instance-name::
+  The name of the instance that is being created. +
+  The name must meet the following requirements:
+
+  * The name may contain only ASCII characters.
+  * The name must start with a letter, a number, or an underscore.
+  * The name may contain only the following characters:
+  ** Lowercase letters
+  ** Uppercase letters
+  ** Numbers
+  ** Hyphen
+  ** Period
+  ** Underscore
+  * The name must be unique in the domain and must not be the name of
+  another {productName} instance, a cluster, a named configuration,
+  or a node.
+  * The name must not be `domain`, `server`, or any other keyword that
+  is reserved by {productName}.
+
+[[sthref392]]
+
+=== Examples
+
+[[GSRFM505]][[sthref393]]
+
+==== Example 1   Creating a Standalone {productName} Instance
+
+This example creates the standalone instance `il3` on the host where the
+command is run. The DAS is running on the same host. The instance
+references the only existing node.
+
+[source]
+----
+asadmin> create-local-instance il3
+Rendezvoused with DAS on localhost:4848.
+Port Assignments for server instance il3:
+JMX_SYSTEM_CONNECTOR_PORT=28686
+JMS_PROVIDER_PORT=27676
+HTTP_LISTENER_PORT=28080
+ASADMIN_LISTENER_PORT=24848
+JAVA_DEBUGGER_PORT=29009
+IIOP_SSL_LISTENER_PORT=23820
+IIOP_LISTENER_PORT=23700
+OSGI_SHELL_TELNET_PORT=26666
+HTTP_SSL_LISTENER_PORT=28181
+IIOP_SSL_MUTUALAUTH_PORT=23920
+Command create-local-instance executed successfully.
+----
+
+[[GSRFM506]][[sthref394]]
+
+==== Example 2   Creating a Clustered {productName} Instance on a Specific Node
+
+This example creates the clustered instance `ymli2` on node `sj02`. The
+instance is a member of the cluster `ymlclust`.
+
+The command is run on the host `sj02`, which is the host that the node
+`sj02` represents. The DAS is running on the host `sr04` and uses the
+default HTTP port for administration. Because no instances exist on the
+node, the host on which the DAS is running is provided through the
+`--host` option of the `asadmin` utility.
+
+[source]
+----
+sj02# asadmin --host sr04 create-local-instance --cluster ymlclust --node sj02 ymli2
+Rendezvoused with DAS on sr04:4848.
+Port Assignments for server instance ymli2:
+JMX_SYSTEM_CONNECTOR_PORT=28686
+JMS_PROVIDER_PORT=27676
+HTTP_LISTENER_PORT=28080
+ASADMIN_LISTENER_PORT=24848
+JAVA_DEBUGGER_PORT=29009
+IIOP_SSL_LISTENER_PORT=23820
+IIOP_LISTENER_PORT=23700
+OSGI_SHELL_TELNET_PORT=26666
+HTTP_SSL_LISTENER_PORT=28181
+IIOP_SSL_MUTUALAUTH_PORT=23920
+Command create-local-instance executed successfully.
+----
+
+[[sthref395]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref396]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-instance.html#create-instance-1[`create-instance`(1)],
+link:create-node-config.html#create-node-config-1[`create-node-config`(1)],
+link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
+link:create-node-ssh.html#create-node-ssh-1[`create-node-ssh`(1)],
+link:create-system-properties.html#create-system-properties-1[`create-system-properties`(1)],
+link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)],
+link:delete-system-property.html#delete-system-property-1[`delete-system-property`(1)],
+link:list-instances.html#list-instances-1[`list-instances`(1)],
+link:start-local-instance.html#start-local-instance-1[`start-local-instance`(1)],
+link:stop-local-instance.html#stop-local-instance-1[`stop-local-instance`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-managed-thread-factory.adoc b/docs/reference-manual/src/main/asciidoc/create-managed-thread-factory.adoc
new file mode 100644
index 0000000..7544c8a
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-managed-thread-factory.adoc
@@ -0,0 +1,133 @@
+type=page
+status=published
+title=create-managed-thread-factory
+next=create-message-security-provider.html
+prev=create-managed-scheduled-executor-service.html
+~~~~~~
+
+= create-managed-thread-factory
+
+[[create-managed-thread-factory-1]][[GSRFM842]][[create-managed-thread-factory]]
+
+== create-managed-thread-factory
+
+Creates a managed thread factory resource
+
+[[sthref413]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-managed-thread-factory [--help]
+[--enabled={false|true}]
+[--contextinfoenabled={false|true}]
+[--contextinfo={Classloader|JNDI|Security|WorkArea}]
+[--threadpriority threadpriority]
+[--description description]
+[--property property]
+[--target target]
+jndi_name
+----
+
+[[sthref414]]
+
+=== Description
+
+The `create-managed-thread-factory` subcommand creates a managed thread
+factory resource.
+
+This subcommand is supported in remote mode only.
+
+[[sthref415]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--enabled`::
+  Determines whether the managed thread factory is enabled at runtime.
+  The default value is `true`.
+`--contextinfoenabled`::
+  Determines whether container contexts are propagated to threads. If
+  set to `true`, the contexts specified in the `--contextinfo` option
+  are propagated. If set to `false`, no contexts are propagated and the
+  `--contextinfo` option is ignored. The default value is `true`.
+`--contextinfo`::
+  Specifies individual container contexts to propagate to threads. Valid
+  values are Classloader, JNDI, Security, and WorkArea. Values are
+  specified in a comma-separated list and are case-insensitive. All
+  contexts are propagated by default.
+`--threadpriority`::
+  Specifies the priority to assign to created threads. The default value
+  is 5.
+`--description`::
+  Descriptive details about the resource.
+`--property`::
+  Optional attribute name/value pairs for configuring the resource. +
+  {productName} does not define any additional properties for this
+  resource. Moreover, this resource does not currently use any
+  additional properties.
+`--target`::
+  Specifies the target for which you are creating the resource. Valid
+  targets are:
+
+  `server`;;
+    Creates the resource for the default server instance. This is the
+    default value.
+  `domain`;;
+    Creates the resource for the domain.
+  cluster_name;;
+    Creates the resource for every server instance in the specified
+    cluster.
+  instance_name;;
+    Creates the resource for the specified server instance.
+
+[[sthref416]]
+
+=== Operands
+
+jndi_name::
+  The JNDI name of this resource.
+
+[[sthref417]]
+
+=== Examples
+
+[[GSRFM843]][[sthref418]]
+
+==== Example 1   Creating a Managed Thread Factory Resource
+
+This example creates a managed thread factory resource named
+`concurrent/myThreadFactory`.
+
+[source]
+----
+asadmin> create-managed-thread-factory concurrent/myThreadFactory
+Managed thread factory concurrent/myThreadFactory created successfully.
+Command create-managed-thread-factory executed successfully.
+----
+
+[[sthref419]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref420]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-managed-thread-factory.html#delete-managed-thread-factory-1[`delete-managed-thread-factory`(1)],
+link:list-managed-thread-factories.html#list-managed-thread-factories-1[`list-managed-thread-factories`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-message-security-provider.adoc b/docs/reference-manual/src/main/asciidoc/create-message-security-provider.adoc
new file mode 100644
index 0000000..8e85076
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-message-security-provider.adoc
@@ -0,0 +1,193 @@
+type=page
+status=published
+title=create-message-security-provider
+next=create-module-config.html
+prev=create-managed-thread-factory.html
+~~~~~~
+
+= create-message-security-provider
+
+[[create-message-security-provider-1]][[GSRFM00045]][[create-message-security-provider]]
+
+== create-message-security-provider
+
+Enables administrators to create a message security provider, which
+specifies how SOAP messages will be secured.
+
+[[sthref421]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-message-security-provider [--help]
+[--target target]
+--classname provider_class
+[--layer message_layer] [--providertype provider_type]
+[--requestauthsource request_auth_source ]
+[--requestauthrecipient request_auth_recipient ]
+[--responseauthsource response_auth_source ]
+[--responseauthrecipient response_auth_recipient ]
+[--isdefaultprovider] [--property name=value[:name=value]*]
+provider_name
+----
+
+[[sthref422]]
+
+=== Description
+
+The `create-message-security-provider` subcommand enables the
+administrator to create a message security provider for the security
+service which specifies how SOAP messages will be secured.
+
+This command is supported in remote mode only.
+
+[[sthref423]]
+
+=== Options
+
+If an option has a short option name, then the short option precedes the
+long option name. Short options have one dash whereas long options have
+two dashes.
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Specifies the target for which you are creating the message security
+  provider. The following values are valid:
+
+  `server`;;
+    Creates the provider for the default server instance `server` and is
+    the default value.
+  `domain`;;
+    Creates the provider for the domain.
+  cluster_name;;
+    Creates the provider for every server instance in the cluster.
+  instance_name;;
+    Creates the provider for a particular sever instance.
+
+`--classname`::
+  Defines the Java implementation class of the provider. Client
+  authentication providers must implement the
+  `com.sun.enterprise. security.jauth.ClientAuthModule` interface.
+  Server-side providers must implement the
+  `com.sun.enterprise.security jauth.ServerAuthModule` interface. A
+  provider may implement both interfaces, but it must implement the
+  interface corresponding to its provider type.
+`--layer`::
+  The message-layer entity used to define the value of the `auth-layer`
+  attribute of `message-security-config` elements. The default is
+  `HttpServlet`. Another option is `SOAP`.
+`--providertype`::
+  Establishes whether the provider is to be used as client
+  authentication provider, server authentication provider, or both.
+  Valid options for this property include `client`, `server`, or
+  `client-server`.
+`--requestauthsource`::
+  The `auth-source` attribute defines a requirement for message-layer
+  sender authentication (e.g. username password) or content
+  authentication (e.g. digital signature) to be applied to request
+  messages. Possible values are `sender` or `content`. When this
+  argument is not specified, source authentication of the request is not
+  required.
+`--requestauthrecipient`::
+  The `auth-recipient` attribute defines a requirement for message-layer
+  authentication of the receiver of a message to its sender (e.g. by XML
+  encryption). Possible values are `before-content` or `after-content`.
+  The default value is `after-content`.
+`--responseauthsource`::
+  The `auth-source` attribute defines a requirement for message-layer
+  sender authentication (e.g. username password) or content
+  authentication (e.g. digital signature) to be applied to response
+  messages. Possible values are `sender` or `content`. When this option
+  is not specified, source authentication of the response is not
+  required.
+`--responseauthrecipient`::
+  The `auth-recipient` attribute defines a requirement for message-layer
+  authentication of the receiver of the response message to its sender
+  (e.g. by XML encryption). Possible values are `before-content` or
+  `after-content`. The default value is `after-content`.
+`--isdefaultprovider`::
+  The `default-provider` attribute is used to designate the provider as
+  the default provider (at the layer) of the type or types identified by
+  the `providertype` argument. There is no default associated with this
+  option.
+`--property`::
+  Use this property to pass provider-specific property values to the
+  provider when it is initialized. Properties passed in this way might
+  include key aliases to be used by the provider to get keys from
+  keystores, signing, canonicalization, encryption algorithms, etc. +
+  The following properties may be set:
+
+  `security.config`;;
+    Specifies the location of the message security configuration file.
+    To point to a configuration file in the domain-dir``/config``
+    directory, use the system property
+    `${com.sun.aas.instanceRoot}/config/`, for example:
+    `${com.sun.aas.instanceRoot}/config/wss-server-config-1.0.xml`. The
+    default is domain-dir`/config/ wss-serverconfig-1.0.xml`.
+  `debug`;;
+    If `true`, enables dumping of server provider debug messages to the
+    server log. The default is `false`.
+  `dynamic.username. password`;;
+    If `true`, signals the provider runtime to collect the user name and
+    password from the `CallbackHandler` for each request. If `false`,
+    the user name and password for `wsse:UsernameToken`(s) is collected
+    once, during module initialization. This property is only applicable
+    for a `ClientAuthModule`. The default is `false`.
+  `encryption.key.alias`;;
+    Specifies the encryption key used by the provider. The key is
+    identified by its keystore alias. The default value is `s1as`.
+  `signature.key.alias`;;
+    Specifies the signature key used by the provider. The key is
+    identified by its keystore alias. The default value is `s1as`.
+
+[[sthref424]]
+
+=== Operands
+
+provider_name::
+  The name of the provider used to reference the `provider-config`
+  element.
+
+[[sthref425]]
+
+=== Examples
+
+[[GSRFM507]][[sthref426]]
+
+==== Example 1   Creating a Message Security Provider
+
+The following example shows how to create a message security provider
+for a client.
+
+[source]
+----
+asadmin> create-message-security-provider
+--classname com.sun.enterprise.security.jauth.ClientAuthModule
+--providertype client mySecurityProvider
+----
+
+[[sthref427]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref428]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-message-security-provider.html#delete-message-security-provider-1[`delete-message-security-provider`(1)],
+link:list-message-security-providers.html#list-message-security-providers-1[`list-message-security-providers`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-module-config.adoc b/docs/reference-manual/src/main/asciidoc/create-module-config.adoc
new file mode 100644
index 0000000..962bc28
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-module-config.adoc
@@ -0,0 +1,113 @@
+type=page
+status=published
+title=create-module-config
+next=create-network-listener.html
+prev=create-message-security-provider.html
+~~~~~~
+
+= create-module-config
+
+[[create-module-config-1]][[GSRFM844]][[create-module-config]]
+
+== create-module-config
+
+Adds the default configuration of a module to `domain.xml`
+
+[[sthref429]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-module-config [--help]
+[--dryrun={false|true}]
+[--all={false|true}]
+[--target target]
+[service_name]
+----
+
+[[sthref430]]
+
+=== Description
+
+The `create-module-config` subcommand adds the default configuration of
+a module to `domain.xml`.
+
+This subcommand is supported in remote mode only.
+
+[[sthref431]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--dryrun`::
+  Displays the default configuration of a module but does not add it to
+  `domain.xml`. The default value is `false`.
+`--all`::
+  Adds all default configurations of modules to `domain.xml` if they are
+  not already in it. The default value is `false`.
+`--target`::
+  Specifies the target to which the default configuration is being added.
+  Possible values are as follows:
+
+  `server`;;
+    Adds the default configuration to the default server instance. This
+    is the default value.
+  `domain`;;
+    Adds the default configuration to the default domain.
+  cluster-name;;
+    Adds the default configuration to every server instance in the
+    specified cluster.
+  instance-name;;
+    Adds the default configuration to the specified instance.
+
+[[sthref432]]
+
+=== Operands
+
+service_name::
+  The name of the module for which the default configuration is to be
+  added.
+
+[[sthref433]]
+
+=== Examples
+
+[[GSRFM845]][[sthref434]]
+
+==== Example 1   Adding a Default Configuration to domain.xml
+
+This example adds the default configuration of the web container module
+to `domain1` in `server-config` (the default configuration). Use the
+`--dryrun` option to preview the configuration before it is added.
+
+[source]
+----
+asadmin> create-module-config web-container
+Command create-module-config executed successfully.
+----
+
+[[sthref435]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref436]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-module-config.html#delete-module-config-1[`delete-module-config`(1)],
+link:get-active-module-config.html#get-active-module-config-1[`get-active-module-config`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-network-listener.adoc b/docs/reference-manual/src/main/asciidoc/create-network-listener.adoc
new file mode 100644
index 0000000..90e1ff5
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-network-listener.adoc
@@ -0,0 +1,155 @@
+type=page
+status=published
+title=create-network-listener
+next=create-node-config.html
+prev=create-module-config.html
+~~~~~~
+
+= create-network-listener
+
+[[create-network-listener-1]][[GSRFM00046]][[create-network-listener]]
+
+== create-network-listener
+
+Adds a new network listener socket
+
+[[sthref437]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-network-listener [--help]
+[--address address]
+--listenerport listener-port
+[--threadpool thread-pool]
+--protocol protocol
+[--transport transport]
+[--enabled={true|false}]
+[--jkenabled={false|true}]
+[--target target]
+listener-name
+----
+
+[[sthref438]]
+
+=== Description
+
+The `create-network-listener` subcommand creates a network listener.
+This subcommand is supported in remote mode only.
+
+
+[NOTE]
+====
+If you edit the special network listener named `admin-listener`, you
+must restart the server for the changes to take effect. The
+Administration Console does not tell you that a restart is required in
+this case.
+====
+
+
+
+[NOTE]
+====
+You can use the `create-http-listener` subcommand to create a network
+listener that uses the HTTP protocol without having to first create a
+protocol, transport, or HTTP configuration. This subcommand is a
+convenient shortcut, but it gives access to only a limited number of
+options.
+====
+
+
+[[sthref439]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--address`::
+  The IP address or the hostname (resolvable by DNS).
+`--listenerport`::
+  The port number to create the listen socket on. Legal values are
+  1-65535. On UNIX, creating sockets that listen on ports 1-1024
+  requires superuser privileges. Configuring an SSL listen socket to
+  listen on port 443 is standard.
+`--threadpool`::
+  The name of the thread pool for this listener. Specifying a thread
+  pool is optional. The default is `http-thread-pool`.
+`--protocol`::
+  The name of the protocol for this listener.
+`--transport`::
+  The name of the transport for this listener. Specifying a transport is
+  optional. The default is `tcp`.
+`--enabled`::
+  If set to `true`, the default, the listener is enabled at runtime.
+`--jkenabled`::
+  If set to `true`, `mod_jk` is enabled for this listener. The default
+  is false.
+`--target`::
+  Creates the network listener only on the specified target. Valid
+  values are as follows:
+
+  `server`;;
+    Creates the network listener on the default server instance. This is
+    the default value.
+  configuration-name;;
+    Creates the network listener in the specified configuration.
+  cluster-name;;
+    Creates the network listener on all server instances in the
+    specified cluster.
+  standalone-instance-name;;
+    Creates the network listener on the specified standalone server
+    instance.
+
+[[sthref440]]
+
+=== Operands
+
+listener-name::
+  The name of the network listener.
+
+[[sthref441]]
+
+=== Examples
+
+[[GSRFM508]][[sthref442]]
+
+==== Example 1   Creating a Network Listener
+
+The following command creates a network listener named `sampleListener`
+that is not enabled at runtime:
+
+[source]
+----
+asadmin> create-network-listener --listenerport 7272 protocol http-1
+--enabled=false sampleListener
+Command create-network-listener executed successfully.
+----
+
+[[sthref443]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref444]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-http-listener.html#create-http-listener-1[`create-http-listener`(1)],
+link:create-protocol.html#create-protocol-1[`create-protocol`(1)],
+link:create-threadpool.html#create-threadpool-1[`create-threadpool`(1)],
+link:create-transport.html#create-transport-1[`create-transport`(1)],
+link:delete-network-listener.html#delete-network-listener-1[`delete-network-listener`(1)],
+link:list-network-listeners.html#list-network-listeners-1[`list-network-listeners`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-node-config.adoc b/docs/reference-manual/src/main/asciidoc/create-node-config.adoc
new file mode 100644
index 0000000..1957e4d
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-node-config.adoc
@@ -0,0 +1,167 @@
+type=page
+status=published
+title=create-node-config
+next=create-node-dcom.html
+prev=create-network-listener.html
+~~~~~~
+
+= create-node-config
+
+[[create-node-config-1]][[GSRFM00047]][[create-node-config]]
+
+== create-node-config
+
+Creates a node that is not enabled for remote communication
+
+[[sthref445]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-node-config [--help]
+[--nodehost node-host]
+[--installdir as-install-parent] [--nodedir node-dir] node-name
+----
+
+[[sthref446]]
+
+=== Description
+
+The `create-node-config` subcommand creates a node that is not enabled
+for remote communication. The `create-node-config` subcommand does not
+require the Distributed Component Object Model (DCOM) remote protocol or
+secure shell (SSH) to be configured to create the node.
+
+A node represents a host on which the {productName} software is
+installed. A node must exist for every host on which {productName}
+instances reside.
+
+
+[NOTE]
+====
+To represent the host where the DAS is running, {productName}
+provides the predefined node ``localhost-``domain. The predefined node
+``localhost-``domain is not enabled for remote communication.
+====
+
+
+All administration of instances on a node that is not enabled for remote
+communication must be performed on the host that the node represents.
+The domain administration server (DAS) on a remote host cannot contact
+the node. To administer instances on a node that represents a host that
+is remote from the DAS, you must use the following subcommands:
+
+* link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)]
+* link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)]
+* link:start-local-instance.html#start-local-instance-1[`start-local-instance`(1)]
+
+However, you may use
+link:stop-local-instance.html#stop-local-instance-1[`stop-local-instance`(1)]
+or link:stop-instance.html#stop-instance-1[`stop-instance`(1)] to stop
+the instances.
+
+This subcommand is supported in remote mode only.
+
+[[sthref447]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--nodehost`::
+  The name of the host that the node represents. If this option is
+  omitted, no host is specified for the node.
+`--installdir`::
+  The full path to the parent of the base installation directory of the
+  {productName} software on the host, for example,
+  `/export/glassfish7/`. If this option is omitted, no parent of the
+  base installation directory of the {productName} software is
+  specified for the node.
+`--nodedir`::
+  The path to the directory that is to contain {productName}
+  instances that are created on the node. If a relative path is
+  specified, the path is relative to the as-install directory. If this
+  option is omitted, no directory for instances is specified for the
+  node.
+
+[[sthref448]]
+
+=== Operands
+
+node-name::
+  The name of the node. +
+  The name must meet the following requirements:
+
+  * The name may contain only ASCII characters.
+  * The name must start with a letter, a number, or an underscore.
+  * The name may contain only the following characters:
+  ** Lowercase letters
+  ** Uppercase letters
+  ** Numbers
+  ** Hyphen
+  ** Period
+  ** Underscore
+  * The name must be unique in the domain and must not be the name of
+  another node, a cluster, a named configuration, or a {productName}
+  instance.
+  * The name must not be `domain`, `server`, or any other keyword that
+  is reserved by {productName}.
+
+[[sthref449]]
+
+=== Examples
+
+[[GSRFM509]][[sthref450]]
+
+==== Example 1   Creating a Node That Is Not Enabled for Remote Communication
+
+This example creates the node `sj03` for host `sj03.example.com`. The
+node is not enabled for remote communication.
+
+[source]
+----
+asadmin> create-node-config --nodehost sj03.example.com sj03
+
+Command create-node-config executed successfully.
+----
+
+[[sthref451]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref452]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)],
+link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
+link:create-node-ssh.html#create-node-ssh-1[`create-node-ssh`(1)],
+link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)],
+link:delete-node-config.html#delete-node-config-1[`delete-node-config`(1)],
+link:install-node.html#install-node-1[`install-node`(1)],
+link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)],
+link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)],
+link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
+link:start-local-instance.html#start-local-instance-1[`start-local-instance`(1)],
+link:stop-instance.html#stop-instance-1[`stop-instance`(1)],
+link:stop-local-instance.html#stop-local-instance-1[`stop-local-instance`(1)],
+link:uninstall-node.html#uninstall-node-1[`uninstall-node`(1)],
+link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)],
+link:uninstall-node-ssh.html#uninstall-node-ssh-1[`uninstall-node-ssh`(1)],
+link:update-node-config.html#update-node-config-1[`update-node-config`(1)],
+link:update-node-ssh.html#update-node-dcom-1[`update-node-dcom`(1)],
+link:update-node-ssh001.html#update-node-ssh-1[`update-node-ssh`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-node-dcom.adoc b/docs/reference-manual/src/main/asciidoc/create-node-dcom.adoc
new file mode 100644
index 0000000..5bf221b
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-node-dcom.adoc
@@ -0,0 +1,229 @@
+type=page
+status=published
+title=create-node-dcom
+next=create-node-ssh.html
+prev=create-node-config.html
+~~~~~~
+
+= create-node-dcom
+
+[[create-node-dcom-1]][[GSRFM510]][[create-node-dcom]]
+
+== create-node-dcom
+
+Creates a node that is enabled for communication over DCOM
+
+[[sthref453]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-node-dcom [--help]
+--nodehost node-host
+[--installdir as-install-parent] [--nodedir node-dir]
+[--windowsuser windows-user] [--windowsdomain windows-domain]
+[--force={false|true}]
+[--install={false|true}] [--archive archive]
+node-name
+----
+
+[[sthref454]]
+
+=== Description
+
+The `create-node-dcom` subcommand creates a node that is enabled for
+communication over the Distributed Component Object Model (DCOM) remote
+protocol. The DCOM protocol is available only on Windows systems.
+
+A node represents a host on which the {productName} software is
+installed. A node must exist for every host on which {productName}
+instances reside.
+
+In a DCOM-enabled network, the domain administration server (DAS)
+contacts a node's host through the DCOM connector to manage
+{productName} instances that reside on the node. DCOM is used only
+for communications between hosts. DCOM is never used for communications
+within a single host.
+
+By default, the subcommand fails and the node is not created if the DAS
+cannot contact the node's host through DCOM. To force the node to be
+created in the DAS configuration even if the host cannot be contacted
+through DCOM, set the `--force` option to `true`.
+
+The `create-node-dcom` subcommand cannot create a node that represents
+the local host, that is, the host on which the subcommand is run. The
+subcommand fails regardless of how the local host is specified, for
+example, by using the keyword `localhost`, the Internet Protocol (IP)
+address of the host, or the host name.
+
+This subcommand is supported in remote mode only.
+
+[[sthref455]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--nodehost`::
+  The name of the host that the node represents. The name of the host
+  must be specified. Otherwise, an error occurs.
+`--installdir`::
+  The full path to the parent of the base installation directory of the
+  {productName} software on the host, for example, `C:\glassfish7`.
+  The default is the parent of the default base installation directory
+  of the {productName} software for the DAS. This default is useful
+  only if {productName} is installed in the same location on all
+  hosts.
+`--nodedir`::
+  The path to the directory that is to contain {productName}
+  instances that are created on the node. The default is
+  as-install`\nodes`, where as-install is the base installation
+  directory of the {productName} software on the host. If a relative
+  path is specified, the path is relative to the as-install directory.
+`--windowsuser`::
+`-w`::
+  The user on this node's host that is to run the process for connecting
+  to the host through DCOM. The default is the user that is running the
+  DAS process. If the `--nodehost` option is set to ``localhost-``domain,
+  the `--windowsuser` option is ignored
+`--windowsdomain`::
+`-d`::
+  The name of the Windows domain that contains the user that the
+  `--windowsuser` option specifies. The default is the name of the host
+  on which the subcommand is run.
+`--force`::
+  Specifies whether the node is created in the DAS configuration even if
+  validation of the node's parameters fails. To validate a node's
+  parameters, the DAS must be able to contact the node's host through
+  DCOM. Possible values are as follows:
+
+  `false`;;
+    The node is not created if validation of the node's parameters fails
+    (default).
+  `true`;;
+    The node is created even if validation of the node's parameters
+    fails.
+
+`--install`::
+  Specifies whether the subcommand shall install the {productName}
+  software on the host that the node represents. +
+  Possible values are as follows:
+
+  `false`;;
+    The subcommand shall not install the {productName} software on
+    the host (default).
+  `true`;;
+    The subcommand shall install the {productName} software on the host.
+
+`--archive`::
+  The absolute path to the archive file of the {productName}
+  software that is to be installed. If this option is omitted and the
+  `--install` is `true`, the subcommand creates a ZIP archive of the
+  {productName} software from the installation where this subcommand
+  is run. The archive does not contain the `domains` directory or the
+  `nodes` directory.
+
+[[sthref456]]
+
+=== Operands
+
+node-name::
+  The name of the node. +
+  The name must meet the following requirements:
+
+  * The name may contain only ASCII characters.
+  * The name must start with a letter, a number, or an underscore.
+  * The name may contain only the following characters:
+  ** Lowercase letters
+  ** Uppercase letters
+  ** Numbers
+  ** Hyphen
+  ** Period
+  ** Underscore
+  * The name must be unique in the domain and must not be the name of
+  another node, a cluster, a named configuration, or a {productName}
+  instance.
+  * The name must not be `domain`, `server`, or any other keyword that
+  is reserved by {productName}.
+
+[[sthref457]]
+
+=== Examples
+
+[[GSRFM511]][[sthref458]]
+
+==== Example 1   Creating a Node
+
+This example creates the node `wpmdl1` for the host
+`wpmdl1.example.com`. By default, the parent of the base installation
+directory of the {productName} software is `C:\glassfish7`.
+
+[source]
+----
+asadmin> create-node-dcom
+--nodehost wpmdl1.example.com wpmdl1
+Command create-node-dcom executed successfully.
+----
+
+[[GSRFM829]][[sthref459]]
+
+==== Example 2   Creating a Node With a Specific Installation Directory
+
+This example creates the node `wyml1` for the host `wyml1.example.com`.
+The parent of the base installation directory of the {productName}
+software on this host is `C:\middleware\glassfish7`.
+
+[source]
+----
+asadmin> create-node-dcom --installdir C:\middleware\glassfish7
+--nodehost wyml1.example.com wyml1
+Command create-node-dcom executed successfully.
+----
+
+[[GSRFM512]][[sthref460]]
+
+==== Example 3   Forcing the Creation of a Node
+
+This example forces the creation of node `xkyd` for the host
+`xkyd.example.com`. The node is created despite the failure of the DAS
+to contact the host `xkyd.example.com` to validate the node's
+parameters.
+
+[source]
+----
+asadmin> create-node-dcom --force --nodehost xkyd.example.com xkyd
+Warning: some parameters appear to be invalid.
+com.sun.enterprise.universal.process.WindowsException: Connection in error
+Continuing with node creation due to use of --force.
+Command create-node-dcom executed successfully.
+----
+
+[[sthref461]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref462]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-node-config.html#create-node-config-1[`create-node-config`(1)],
+link:create-node-ssh.html#create-node-ssh-1[`create-node-ssh`(1)],
+link:delete-node-dcom.html#delete-node-dcom-1[`delete-node-dcom`(1)],
+link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)],
+link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
+link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)],
+link:update-node-ssh.html#update-node-dcom-1[`update-node-dcom`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-node-ssh.adoc b/docs/reference-manual/src/main/asciidoc/create-node-ssh.adoc
new file mode 100644
index 0000000..09af4a1
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-node-ssh.adoc
@@ -0,0 +1,243 @@
+type=page
+status=published
+title=create-node-ssh
+next=create-password-alias.html
+prev=create-node-dcom.html
+~~~~~~
+
+= create-node-ssh
+
+[[create-node-ssh-1]][[GSRFM00048]][[create-node-ssh]]
+
+== create-node-ssh
+
+Creates a node that is enabled for communication over SSH
+
+[[sthref463]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-node-ssh [--help]
+--nodehost node-host
+[--installdir as-install-parent] [--nodedir node-dir]
+[--sshport ssh-port] [--sshuser ssh-user]
+[--sshkeyfile ssh-keyfile]
+[--force={false|true}]
+[--install={false|true}] [--archive archive]
+node-name
+----
+
+[[sthref464]]
+
+=== Description
+
+The `create-node-ssh` subcommand creates a node that is enabled for
+communication over secure shell (SSH).
+
+A node represents a host on which the {productName} software is
+installed. A node must exist for every host on which {productName}
+instances reside.
+
+The domain administration server (DAS) contacts an SSH node's host
+through the SSH connector to manage {productName} instances that
+reside on the node. However, the DAS does not use the SSH connector to
+contact the host where the DAS is running because the DAS can run all
+`asadmin` subcommands locally.
+
+By default, the subcommand fails and the node is not created if the DAS
+cannot contact the node's host through SSH. To force the node to be
+created in the DAS configuration even if the host cannot be contacted
+through SSH, set the `--force` option to `true`.
+
+This subcommand is supported in remote mode only.
+
+[[sthref465]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--nodehost`::
+  The name of the host that the node represents. The name of the host
+  must be specified. Otherwise, an error occurs.
+`--installdir`::
+  The full path to the parent of the base installation directory of the
+  {productName} software on the host, for example,
+  `/export/glassfish7/`. The default is the parent of the default base
+  installation directory of the {productName} software for the DAS.
+  This default is useful only if {productName} is installed in the
+  same location on all hosts.
+`--nodedir`::
+  The path to the directory that is to contain {productName}
+  instances that are created on the node. The default is
+  as-install``/nodes``, where as-install is the base installation
+  directory of the {productName} software on the host. If a relative
+  path is specified, the path is relative to the as-install directory.
+`--sshport`::
+  The port to use for SSH connections to this node's host. The default
+  is 22. If the `--nodehost` option is set to ``localhost-``domain, the
+  `--sshport` option is ignored.
+`--sshuser`::
+  The user on this node's host that is to run the process for connecting
+  to the host through SSH. The default is the user that is running the
+  DAS process. To ensure that the DAS can read this user's SSH private
+  key file, specify the user that is running the DAS process. If the
+  `--nodehost` option is set to ``localhost-``domain, the `--sshuser`
+  option is ignored.
+`--sshkeyfile`::
+  The absolute path to the SSH private key file for user that the
+  `--sshuser` option specifies. This file is used for authentication to
+  the `sshd` daemon on the node's host.
++
+[NOTE]
+====
+{productName} also supports password authentication through the
+`AS_ADMIN_SSHPASSWORD` entry in the password file. The password file
+is specified in the `--paswordfile` option of the
+link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility.
+====
++
+If the SSH private key file is protected by a passphrase, the password
+  file must contain the `AS_ADMIN_SSHKEYPASSPHRASE` entry. +
+  The path to the key file must be reachable by the DAS and the key file
+  must be readable by the DAS. +
+  The default is the a key file in the user's `.ssh` directory. If
+  multiple key files are found, the subcommand uses the following order
+  of preference:
+
+  1.  `id_rsa`
+  2.  `id_dsa`
+  3.  `identity`
+
+`--force`::
+  Specifies whether the node is created in the DAS configuration even if
+  validation of the node's parameters fails. To validate a node's
+  parameters, the DAS must be able to contact the node's host through
+  SSH. Possible values are as follows:
+
+  `false`;;
+    The node is not created if validation of the node's parameters fails
+    (default).
+  `true`;;
+    The node is created even if validation of the node's parameters
+    fails.
+
+`--install`::
+  Specifies whether the subcommand shall install the {productName}
+  software on the host that the node represents. +
+  Possible values are as follows:
+
+  `false`;;
+    The subcommand shall not install the {productName} software on
+    the host (default).
+  `true`;;
+    The subcommand shall install the {productName} software on the
+    host.
+
+`--archive`::
+  The absolute path to the archive file of the {productName}
+  software that is to be installed. If this option is omitted and the
+  `--install` is `true`, the subcommand creates a ZIP archive of the
+  {productName} software from the installation where this subcommand
+  is run. The archive does not contain the `domains` directory or the
+  `nodes` directory.
+
+[[sthref466]]
+
+=== Operands
+
+node-name::
+  The name of the node. +
+  The name must meet the following requirements:
+
+  * The name may contain only ASCII characters.
+  * The name must start with a letter, a number, or an underscore.
+  * The name may contain only the following characters:
+  ** Lowercase letters
+  ** Uppercase letters
+  ** Numbers
+  ** Hyphen
+  ** Period
+  ** Underscore
+  * The name must be unique in the domain and must not be the name of
+  another node, a cluster, a named configuration, or a {productName}
+  instance.
+  * The name must not be `domain`, `server`, or any other keyword that
+  is reserved by {productName}.
+
+[[sthref467]]
+
+=== Examples
+
+[[GSRFM513]][[sthref468]]
+
+==== Example 1   Creating a Node
+
+This example creates the node `adc` for the host `adc.example.com`. By
+default, the parent of the base installation directory of the
+{productName} software is `/export/glassfish7`.
+
+[source]
+----
+asadmin> create-node-ssh
+--nodehost adc.example.com
+--installdir /export/glassfish7 adc
+
+Command create-node-ssh executed successfully.
+----
+
+[[GSRFM514]][[sthref469]]
+
+==== Example 2   Forcing the Creation of a Node
+
+This example forces the creation of node `eg1` for the host
+`eghost.example.com`. The node is created despite the failure of the DAS
+to contact the host `eghost.example.com` to validate the node's
+parameters.
+
+[source]
+----
+asadmin> create-node-ssh --force --nodehost eghost.example.com eg1
+Warning: some parameters appear to be invalid.
+Could not connect to host eghost.example.com using SSH.
+There was a problem while connecting to eghost.example.com:22
+eghost.example.com
+Continuing with node creation due to use of --force.
+
+Command create-node-ssh executed successfully.
+----
+
+[[sthref470]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref471]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-node-config.html#create-node-config-1[`create-node-config`(1)],
+link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
+link:delete-node-ssh.html#delete-node-ssh-1[`delete-node-ssh`(1)],
+link:install-node.html#install-node-1[`install-node`(1)],
+link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)],
+link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
+link:ping-node-ssh.html#ping-node-ssh-1[`ping-node-ssh`(1)],
+link:setup-ssh.html#setup-ssh-1[`setup-ssh`(1)],
+link:uninstall-node.html#uninstall-node-1[`uninstall-node`(1)],
+link:uninstall-node-ssh.html#uninstall-node-ssh-1[`uninstall-node-ssh`(1)],
+link:update-node-ssh001.html#update-node-ssh-1[`update-node-ssh`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-password-alias.adoc b/docs/reference-manual/src/main/asciidoc/create-password-alias.adoc
new file mode 100644
index 0000000..8ee8b86
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-password-alias.adoc
@@ -0,0 +1,125 @@
+type=page
+status=published
+title=create-password-alias
+next=create-profiler.html
+prev=create-node-ssh.html
+~~~~~~
+
+= create-password-alias
+
+[[create-password-alias-1]][[GSRFM00049]][[create-password-alias]]
+
+== create-password-alias
+
+Creates a password alias
+
+[[sthref472]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-password-alias [--help]
+aliasname
+----
+
+[[sthref473]]
+
+=== Description
+
+The `create-password-alias` subcommand creates an alias for a password.
+An alias is a token of the form `${ALIAS=aliasname}`. The password that
+corresponds to the alias name is stored in an encrypted form.
+
+The `create-password-alias` subcommand can be run interactively or
+noninteractively.
+
+* When run interactively, the subcommand prompts the user for the alias
+password and to confirm the alias password.
+* When run noninteractively, the subcommand reads the alias password
+from a file that is passed through the `--passwordfile` option of the
+link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility. The file must
+contain an entry of the form `{cprefix}ALIASPASSWORD=`alias-password,
+where alias-password is the alias password. The noninteractive form of
+this command is suitable for use in scripts.
+
+This subcommand is supported in remote mode only.
+
+[[sthref474]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref475]]
+
+=== Operands
+
+aliasname::
+  Your choice of name for the password alias.
+
+[[sthref476]]
+
+=== Examples
+
+[[GSRFM515]][[sthref477]]
+
+==== Example 1   Creating a Password Alias Interactively
+
+This example creates the password alias `jmspassword-alias`
+interactively.
+
+[source]
+----
+asadmin> create-password-alias jmspassword-alias
+Enter the alias password>
+Enter the alias password again>
+Command create-password-alias executed successfully.
+----
+
+[[GSRFM830]][[sthref478]]
+
+==== Example 2   Creating a Password Alias Noninteractively
+
+This example uses the `--passwordfile` option of the `asadmin` utility
+to create the password alias `winuser` noninteractively.
+
+[source]
+----
+$ asadmin --passwordfile aspwfile.txt create-password-alias winuser
+Command create-password-alias executed successfully.
+----
+
+The file `aspwfile.txt` contains the following entry to specify the
+alias password:
+
+[source]
+----
+AS_ADMIN_ALIASPASSWORD=sp@rky
+----
+
+[[sthref479]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref480]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-password-alias.html#delete-password-alias-1[`delete-password-alias`(1)],
+link:list-password-aliases.html#list-password-aliases-1[`list-password-aliases`(1)],
+link:update-password-alias.html#update-password-alias-1[`update-password-alias`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-profiler.adoc b/docs/reference-manual/src/main/asciidoc/create-profiler.adoc
new file mode 100644
index 0000000..a8007c5
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-profiler.adoc
@@ -0,0 +1,121 @@
+type=page
+status=published
+title=create-profiler
+next=create-protocol.html
+prev=create-password-alias.html
+~~~~~~
+
+= create-profiler
+
+[[create-profiler-1]][[GSRFM00050]][[create-profiler]]
+
+== create-profiler
+
+Creates the profiler element
+
+[[sthref481]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-profiler [--help]
+[--target target_name]
+[--classpath classpath] [--nativelibpath native_library_path] [--enabled=true]
+[--property(name=value)[:name=value]*] profiler_name
+----
+
+[[sthref482]]
+
+=== Description
+
+The `create-profiler` subcommand creates the profiler element. A server
+instance is tied to the profiler by the profiler element in the Java
+configuration. Only one profiler exists at a time. If you attempt to
+create a profiler while one already exists, an error message is
+displayed.
+
+For changes to take effect, the server must restarted.
+
+This subcommand is supported in remote mode only.
+
+[[sthref483]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  This option specifies the target on which you are creating a profiler.
+  Valid values are
+
+  `server`;;
+    Creates the profiler for the default server instance. This is the
+    default value.
+  configuration_name;;
+    Creates the profiler for the named configuration
+  cluster_name;;
+    Creates the profiler for every server instance in the cluster
+  instance_name;;
+    Creates the profiler for a particular server instance
+
+`--classpath`::
+  Java classpath string that specifies the classes needed by the profiler.
+`--nativelibpath`::
+  This path is automatically constructed to be a concatenation of the
+  {productName} installation relative path for its native shared
+  libraries, standard JRE native library path, the shell environment
+  setting (`LD_LIBRARY_PATH` on UNIX) and any path that may be specified
+  in the profile element.
+`--enabled`::
+  Profiler is enabled by default.
+`--property`::
+  Name/value pairs of provider-specific attributes.
+
+[[sthref484]]
+
+=== Operands
+
+profiler_name::
+  Name of the profiler.
+
+[[sthref485]]
+
+=== Examples
+
+[[GSRFM516]][[sthref486]]
+
+==== Example 1   Creating a Profiler
+
+This example creates a profiler named `sample_profiler`.
+
+[source]
+----
+asadmin> create-profiler --classpath /home/appserver/
+--nativelibpath /u/home/lib --enabled=false
+--property defaultuser=admin:password=adminadmin sample_profiler
+Created Profiler with id = sample_profiler
+----
+
+[[sthref487]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref488]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-profiler.html#delete-profiler-1[`delete-profiler`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-protocol-filter.adoc b/docs/reference-manual/src/main/asciidoc/create-protocol-filter.adoc
new file mode 100644
index 0000000..7fff332
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-protocol-filter.adoc
@@ -0,0 +1,110 @@
+type=page
+status=published
+title=create-protocol-filter
+next=create-protocol-finder.html
+prev=create-protocol.html
+~~~~~~
+
+= create-protocol-filter
+
+[[create-protocol-filter-1]][[GSRFM00052]][[create-protocol-filter]]
+
+== create-protocol-filter
+
+Adds a new protocol filter
+
+[[sthref497]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-protocol-filter [--help]
+--protocol protocol-name
+--classname class-name
+[--target server]
+protocol-filter-name
+----
+
+[[sthref498]]
+
+=== Description
+
+The `create-protocol-filter` subcommand creates a protocol filter for a
+protocol. This subcommand is supported in remote mode only.
+
+[[sthref499]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--protocol`::
+  The name of the associated protocol.
+`--classname`::
+  The fully qualified name of the Java class that implements the
+  protocol filter.
+`--target`::
+  Creates the protocol filter only on the specified target. Valid values
+  are as follows:
+
+  `server`;;
+    Creates the protocol filter on the default server instance. This is
+    the default value.
+  configuration-name;;
+    Creates the protocol filter in the specified configuration.
+  cluster-name;;
+    Creates the protocol filter on all server instances in the specified
+    cluster.
+  standalone-instance-name;;
+    Creates the protocol filter on the specified standalone server
+    instance.
+
+[[sthref500]]
+
+=== Operands
+
+protocol-filter-name::
+  The name of the protocol filter.
+
+[[sthref501]]
+
+=== Examples
+
+[[GSRFM518]][[sthref502]]
+
+==== Example 1   Creating a Protocol Filter
+
+The following command creates a protocol filter named `http1-filter`:
+
+[source]
+----
+asadmin> create-protocol-filter --protocol http1
+--classname com.company22.MyProtocolFilter http1-filter
+Command create-protocol-filter executed successfully.
+----
+
+[[sthref503]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref504]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-protocol.html#create-protocol-1[`create-protocol`(1)],
+link:delete-protocol-filter.html#delete-protocol-filter-1[`delete-protocol-filter`(1)],
+link:list-protocol-filters.html#list-protocol-filters-1[`list-protocol-filters`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-protocol-finder.adoc b/docs/reference-manual/src/main/asciidoc/create-protocol-finder.adoc
new file mode 100644
index 0000000..1f5b06f
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-protocol-finder.adoc
@@ -0,0 +1,95 @@
+type=page
+status=published
+title=create-protocol-finder
+next=create-resource-adapter-config.html
+prev=create-protocol-filter.html
+~~~~~~
+
+= create-protocol-finder
+
+[[create-protocol-finder-1]][[GSRFM00053]][[create-protocol-finder]]
+
+== create-protocol-finder
+
+Adds a new protocol finder
+
+[[sthref505]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-protocol-finder [--help]
+--protocol protocol-name
+--targetprotocol target-protocol-name
+--classname class-name
+[--target server]
+protocol-finder-name
+----
+
+[[sthref506]]
+
+=== Description
+
+The `create-protocol-finder` subcommand creates a protocol finder for a
+protocol. This subcommand is supported in remote mode only.
+
+[[sthref507]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--protocol`::
+  The name of the associated protocol.
+`--targetprotocol`::
+  The name of the target protocol.
+`--classname`::
+  The fully qualified name of the Java class that implements the
+  protocol finder.
+`--target`::
+  Creates the protocol finder only on the specified target. Valid values
+  are as follows:
+
+  `server`;;
+    Creates the protocol finder on the default server instance. This is
+    the default value.
+  configuration-name;;
+    Creates the protocol finder in the specified configuration.
+  cluster-name;;
+    Creates the protocol finder on all server instances in the specified
+    cluster.
+  standalone-instance-name;;
+    Creates the protocol finder on the specified standalone server
+    instance.
+
+[[sthref508]]
+
+=== Operands
+
+protocol-finder-name::
+  The name of the protocol finder.
+
+[[sthref509]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref510]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-protocol-finder.html#delete-protocol-finder-1[`delete-protocol-finder`(1)],
+link:list-protocol-finders.html#list-protocol-finders-1[`list-protocol-finders`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-protocol.adoc b/docs/reference-manual/src/main/asciidoc/create-protocol.adoc
new file mode 100644
index 0000000..e840e46
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-protocol.adoc
@@ -0,0 +1,108 @@
+type=page
+status=published
+title=create-protocol
+next=create-protocol-filter.html
+prev=create-profiler.html
+~~~~~~
+
+= create-protocol
+
+[[create-protocol-1]][[GSRFM00051]][[create-protocol]]
+
+== create-protocol
+
+Adds a new protocol
+
+[[sthref489]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-protocol [--help]
+[--securityenabled={false|true}]
+[--target target]
+protocol-name
+----
+
+[[sthref490]]
+
+=== Description
+
+The `create-protocol` subcommand creates a protocol. This subcommand is
+supported in remote mode only.
+
+[[sthref491]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--securityenabled`::
+  If set to `true`, the protocol runs SSL. You can turn SSL2 or SSL3 ON
+  or OFF and set ciphers using an `ssl` element. The security setting
+  globally enables or disables SSL by making certificates available to
+  the server instance. The default value is `false`.
+`--target`::
+  Creates the protocol only on the specified target. Valid values are as
+  follows:
+
+  `server`;;
+    Creates the protocol on the default server instance. This is the
+    default value.
+  configuration-name;;
+    Creates the protocol in the specified configuration.
+  cluster-name;;
+    Creates the protocol on all server instances in the specified
+    cluster.
+  standalone-instance-name;;
+    Creates the protocol on the specified standalone server instance.
+
+[[sthref492]]
+
+=== Operands
+
+protocol-name::
+  The name of the protocol.
+
+[[sthref493]]
+
+=== Examples
+
+[[GSRFM517]][[sthref494]]
+
+==== Example 1   Creating a Protocol
+
+The following command creates a protocol named `http-1` with security
+enabled:
+
+[source]
+----
+asadmin> create-protocol --securityenabled=true http-1
+Command create-protocol executed successfully.
+----
+
+[[sthref495]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref496]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-protocol.html#delete-protocol-1[`delete-protocol`(1)],
+link:list-protocols.html#list-protocols-1[`list-protocols`(1)],
+link:create-network-listener.html#create-network-listener-1[`create-network-listener`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-resource-adapter-config.adoc b/docs/reference-manual/src/main/asciidoc/create-resource-adapter-config.adoc
new file mode 100644
index 0000000..9afc2ba
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-resource-adapter-config.adoc
@@ -0,0 +1,113 @@
+type=page
+status=published
+title=create-resource-adapter-config
+next=create-resource-ref.html
+prev=create-protocol-finder.html
+~~~~~~
+
+= create-resource-adapter-config
+
+[[create-resource-adapter-config-1]][[GSRFM00054]][[create-resource-adapter-config]]
+
+== create-resource-adapter-config
+
+Creates the configuration information for the connector module
+
+[[sthref511]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-resource-adapter-config [--help]
+[--threadpoolid threadpool]
+[--objecttype object-type]
+[--property (property-name=value)[:name=value]*]
+raname
+----
+
+[[sthref512]]
+
+=== Description
+
+The `create-resource-adapter-config` subcommand creates configuration
+information for the connector module. This subcommand can be run before
+deploying a resource adapter, so that the configuration information is
+available at the time of deployment. The resource adapter configuration
+can also be created after the resource adapter is deployed. In this
+case, the resource adapter is restarted with the new configuration. You
+must first create a thread pool, using the `create-threadpool`
+subcommand, and then identify that thread pool value as the ID in the
+`--threadpoolid` option.
+
+This subcommand is supported in remote mode only.
+
+[[sthref513]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  This option has been deprecated.
+`--threadpoolid`::
+  The thread pool ID from which the work manager gets the thread. This
+  option takes only one thread pool ID.
+`--objecttype`::
+  The default is `user`.
+`--property`::
+  Keyword-value pairs that specify additional configuration properties
+  of the resource adapter Java bean. The keyword-value pairs are
+  separated by a colon (`:`). The properties are the names of setter
+  methods of the class that is referenced by the `resourceadapter-class`
+  element in the `ra.xml` file.
+
+[[sthref514]]
+
+=== Operands
+
+raname::
+  Indicates the connector module name. It is the value of the
+  `resource-adapter-name` in the `domain.xml` file.
+
+[[sthref515]]
+
+=== Examples
+
+[[GSRFM519]][[sthref516]]
+
+==== Example 1   Creating a Resource Adapter Con figuration
+
+This example creates a resource adapter configuration for `ra1`.
+
+[source]
+----
+asadmin> create-resource-adapter-config --property foo=bar --threadpoolid
+mycustomerthreadpool ra1
+Command create-resource-adapter-config executed successfully
+----
+
+[[sthref517]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref518]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-threadpool.html#create-threadpool-1[`create-threadpool`(1)],
+link:delete-resource-adapter-config.html#delete-resource-adapter-config-1[`delete-resource-adapter-config`(1)],
+link:list-resource-adapter-configs.html#list-resource-adapter-configs-1[`list-resource-adapter-configs`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-resource-ref.adoc b/docs/reference-manual/src/main/asciidoc/create-resource-ref.adoc
new file mode 100644
index 0000000..10b550d
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-resource-ref.adoc
@@ -0,0 +1,127 @@
+type=page
+status=published
+title=create-resource-ref
+next=create-service.html
+prev=create-resource-adapter-config.html
+~~~~~~
+
+= create-resource-ref
+
+[[create-resource-ref-1]][[GSRFM00055]][[create-resource-ref]]
+
+== create-resource-ref
+
+Creates a reference to a resource
+
+[[sthref519]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-resource-ref [--help]
+[--target target]
+[--enabled={false|true}] reference_name
+----
+
+[[sthref520]]
+
+=== Description
+
+The `create-resource-ref` subcommand creates a reference from a cluster
+or an unclustered server instance to a previously created resource, for
+example, a JDBC resource created by using the `create-jdbc-resource`
+subcommand. This effectively results in the resource being made
+available in the JNDI tree of the instance or cluster.
+
+The target instance or instances making up the cluster need not be
+running or available for this subcommand to succeed. If one or more
+instances are not available, they will receive the new resource the next
+time they start.
+
+
+[NOTE]
+====
+A `resource-ref` can only be created for bindable resources, such as a
+`jdbc-resource`, `connector-resource`, `admin-object-resource`,
+`mail-resource`, `custom-resource`, or `jndi-resource`.
+
+A `jdbc-connection-pool` or a `connector-connection-pool` are not
+referred to directly by applications. Instead, they are referred to
+through a `jdbc-resource` or `connector-resource`, respectively.
+====
+
+
+This subcommand is supported in remote mode only.
+
+[[sthref521]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Specifies the target for which you are creating the resource
+  reference. Valid targets are as follows:
+
+  `server`;;
+    Creates the resource reference for the default server instance.
+    This is the default target.
+  cluster_name;;
+    Creates the resource reference for every server instance in the cluster.
+  instance_name;;
+    Creates the resource reference for the named unclustered server instance.
+
+`--enabled`::
+  Indicates whether the resource should be enabled. This value will take
+  effect only if the resource is enabled at the global level. The
+  default is `true`.
+
+[[sthref522]]
+
+=== Operands
+
+reference_name::
+  The name or JNDI name of the resource.
+
+[[sthref523]]
+
+=== Examples
+
+[[GSRFM520]][[sthref524]]
+
+==== Example 1   Creating a Reference to a JMS Destination Resource
+
+This example creates a reference to the JMS destination resource
+`jms/Topic` on the cluster `Cluster1`.
+
+[source]
+----
+asadmin> create-resource-ref --target Cluster1 jms/Topic
+resource-ref jms/Topic created successfully.
+Command create-resource-ref executed successfully.
+----
+
+[[sthref525]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref526]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-resource-ref.html#delete-resource-ref-1[`delete-resource-ref`(1)],
+link:list-resource-refs.html#list-resource-refs-1[`list-resource-refs`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-service.adoc b/docs/reference-manual/src/main/asciidoc/create-service.adoc
new file mode 100644
index 0000000..0a32756
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-service.adoc
@@ -0,0 +1,339 @@
+type=page
+status=published
+title=create-service
+next=create-ssl.html
+prev=create-resource-ref.html
+~~~~~~
+
+= create-service
+
+[[create-service-1]][[GSRFM00057]][[create-service]]
+
+== create-service
+
+Configures the starting of a DAS or a {productName} instance on an
+unattended boot
+
+[[sthref527]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-service [--help]
+[--name service-name]
+[--serviceproperties service-properties]
+[--dry-run={false|true}] [--force={false|true}]
+[--serviceuser service-user]
+[--domaindir domain-dir]
+[--nodedir node-dir] [--node node]
+[domain-or-instance-name]
+----
+
+[[sthref528]]
+
+=== Description
+
+The `create-service` subcommand configures the starting of a domain
+administration server (DAS) or a {productName} instance on an
+unattended boot on Windows, Linux, and Oracle Solaris systems.
+
+If no operand is specified and the domains directory contains only one
+domain, the subcommand configures the starting of the DAS for the
+default domain. If no operand is specified and the domains directory
+contains multiple domains, an error occurs.
+
+If the operand specifies an instance, the `create-service` subcommand
+does not contact the domain administration server (DAS) to determine the
+node on which the instance resides. To determine the node on which the
+instance resides, the subcommand searches the directory that contains
+the node directories. If multiple node directories exist, the node must
+be specified as an option of the subcommand.
+
+The subcommand contains internal logic to determine whether the supplied
+operand is a DAS or an instance.
+
+This subcommand is supported in local mode only.
+
+Behavior of `create-service` on Windows Systems
+
+On Windows systems, the `create-service` subcommand creates a Windows
+service to represent the DAS or instance. The service is created in the
+disabled state. After this subcommand creates the service, you must use
+the Windows Services Manager or the Windows Services Wrapper to start,
+stop, uninstall, or install the service.
+
+On Windows systems, this subcommand must be run as the OS-level
+administrator user.
+
+The subcommand creates the following Windows Services Wrapper files for
+the service in the domain-dir`\bin` directory or the instance-dir``\bin``
+directory:
+
+* Configuration file: service-name``Service.xml``
+* Executable file: service-name``Service.exe``
+
+On Windows systems, this subcommand requires the
+http://www.microsoft.com/net/[Microsoft .NET Framework]
+(http://www.microsoft.com/net/). Otherwise, the subcommand fails.
+
+Behavior of `create-service` on Linux Systems
+
+On Linux systems, the `create-service` subcommand creates a
+System-V-style initialization script
+`/etc/init.d/GlassFish_`domain-or-instance-name and installs a link to
+this script in the `/etc/rc?.d` directories. After this subcommand
+creates the script, you must use this script to start, stop, or restart
+the domain or instance.
+
+On Linux systems, this subcommand must be run as the OS-level root user.
+
+Behavior of `create-service` on Oracle Solaris Systems
+
+On Oracle Solaris systems, the `create-service` subcommand creates a
+Service Management Facility (SMF) service to represent the DAS or
+instance. The service is created in the disabled state. After this
+subcommand creates the service, you must use SMF commands to start,
+enable, disable, delete, or stop the service. For more information about
+SMF, see the following documentation for the Oracle Solaris operating
+system:
+
+* "http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=SYSADV1hbrunlevels-25516[
+Managing Services (Overview)]" in System Administration Guide: Basic Administration
+* "http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=SYSADV1faauf[
+Managing Services (Tasks)]" in System Administration Guide: Basic Administration
+
+On Oracle Solaris systems, this subcommand must be run as the OS-level
+user with superuser privileges. The configuration file for the DAS or
+instance must be stored in a directory to which the superuser has access
+and cannot be stored on a network file system. The service that is
+created is controlled by the OS-level user who owns the directory where
+the configuration of the DAS or instance resides.
+
+On Oracle Solaris systems, the manifest file is created in the following
+directory by default:
+
+[source]
+----
+/var/svc/manifest/application/GlassFish/domain-or-instance-name_domain-or-instance-root-dir
+----
+
+To run this subcommand, you must have `solaris.smf.*` authorization. For
+information about how to grant authorizations to users, see the
+http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Museradd-1m[`useradd`(1M)]
+and
+http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Musermod-1m[`usermod`(1M)]
+man pages.
+
+To run these commands as non-root user, the system administrator must be
+contacted so that the relevant authorizations are granted. You must also
+ensure that the following conditions are met:
+
+* Oracle Solaris 10 administration commands such as
+http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Msvccfg-1m[`svccfg`(1M)],
+http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1svcs-1[`svcs`(1)],
+and
+http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1auths-1[`auths`(1)]
+are available through the `PATH` statement, so that these commands can
+be executed. A simple test to do so is to run the command `which svccfg`
+in the shell.
+* You must have write permission for the path
+`/var/svc/manifest/application/GlassFish`. Usually, the superuser has
+write permission to this path.
+
+If you delete a service that you created by using the `create-service`
+subcommand, you must delete the directory that contains the manifest
+file and the entire contents of the directory. Otherwise, an attempt to
+re-create the service by using the `create-service` subcommand fails.
+The Oracle Solaris command `svccfg` does not delete this directory.
+
+[[sthref529]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--name`::
+  (Windows and Oracle Solaris systems only) The name of the service that
+  you will use when administering the service through Oracle Solaris SMF
+  commands or the service management features of the Windows operating
+  system. The default is the name of the domain or instance that is
+  specified as the operand of this subcommand.
+`--serviceproperties`::
+  Specifies a colon(:)-separated list of various properties that are
+  specific to the service. +
+  To customize the display name of the service in the Windows Service
+  list, set the `DISPLAY_NAME` property to the required name. +
+  For Oracle Solaris 10 systems, if you specify `net_privaddr`, the
+  service's processes will be able to bind to the privileged ports
+  (<1024) on the platform. You can bind to ports< 1024 only if the owner
+  of the service is superuser, otherwise, this is not allowed.
+`--dry-run`::
+`-n`::
+  Previews your attempt to create a service. Indicates issues and the
+  outcome that will occur if you run the command without using the
+  `--dry-run` option. Nothing is actually configured. Default is false.
+`--force`::
+  Specifies whether the service is created even if validation of the
+  service fails. +
+  Possible values are as follows:
+
+  `true`;;
+    The service is created even if validation of the service fails.
+  `false`;;
+    The service is not created (default).
+
+`--serviceuser`::
+  (Linux systems only) The user that is to run the {productName}
+  software when the service is started. The default is the user that is
+  running the subcommand. Specify this option if the {productName}
+  software is to be run by a user other than the root user.
+`--domaindir`::
+  The absolute path of the directory on the disk that contains the
+  configuration of the domain. If this option is specified, the operand
+  must specify a domain.
+`--nodedir`::
+  Specifies the directory that contains the instance's node directory.
+  The instance's files are stored in the instance's node directory. The
+  default is as-install``/nodes``. If this option is specified, the
+  operand must specify an instance.
+`--node`::
+  Specifies the node on which the instance resides. This option may be
+  omitted only if the directory that the `--nodedir` option specifies
+  contains only one node directory. Otherwise, this option is required.
+  If this option is specified, the operand must specify an instance.
+
+[[sthref530]]
+
+=== Operands
+
+domain-or-instance-name::
+  The name of the domain or instance to configure. If no operand is
+  specified, the default domain is used.
+
+[[sthref531]]
+
+=== Examples
+
+[[GSRFM522]][[sthref532]]
+
+==== Example 1   Creating a Service on a Windows System
+
+This example creates a service for the default domain on a system that
+is running Windows.
+
+[source]
+----
+asadmin> create-service
+Found the Windows Service and successfully uninstalled it.
+The Windows Service was created successfully.  It is ready to be started.  Here are
+the details:
+ID of the service: domain1
+Display Name of the service:domain1 Eclipse GlassFish
+Domain Directory: C:\glassfish7\glassfish\domains\domain1
+Configuration file for Windows Services Wrapper: C:\glassfish7\glassfish\domains\
+domain1\bin\domain1Service.xml
+The service can be controlled using the Windows Services Manager or you can use the
+Windows Services Wrapper instead:
+Start Command:  C:\glassfish7\glassfish\domains\domain1\bin\domain1Service.exe  start
+Stop Command:   C:\glassfish7\glassfish\domains\domain1\bin\domain1Service.exe  stop
+Uninstall Command:  C:\glassfish7\glassfish\domains\domain1\bin\domain1Service.exe
+uninstall
+Install Command:  C:\glassfish7\glassfish\domains\domain1\bin\domain1Service.exe
+install
+
+This message is also available in a file named PlatformServices.log in the domain's
+root directory
+Command create-service executed successfully.
+----
+
+[[GSRFM523]][[sthref533]]
+
+==== Example 2   Creating a Service on a Linux System
+
+This example creates a service for the default domain on a system that
+is running Linux.
+
+[source]
+----
+asadmin> create-service
+Found the Linux Service and successfully uninstalled it.
+The Service was created successfully. Here are the details:
+Name of the service:domain1
+Type of the service:Domain
+Configuration location of the service:/etc/init.d/GlassFish_domain1
+User account that will run the service: root
+You have created the service but you need to start it yourself.
+Here are the most typical Linux commands of interest:
+
+* /etc/init.d/GlassFish_domain1 start
+* /etc/init.d/GlassFish_domain1 stop
+* /etc/init.d/GlassFish_domain1 restart
+
+For your convenience this message has also been saved to this file:
+/export/glassfish7/glassfish/domains/domain1/PlatformServices.log
+Command create-service executed successfully.
+----
+
+[[GSRFM524]][[sthref534]]
+
+==== Example 3   Creating a Service on an Oracle Solaris System
+
+This example creates a service for the default domain on a system that
+is running Oracle Solaris.
+
+[source]
+----
+asadmin> create-service
+The Service was created successfully. Here are the details:
+Name of the service:application/GlassFish/domain1
+Type of the service:Domain
+Configuration location of the service:/home/gfuser/glassfish-installations
+/glassfish7/glassfish/domains
+Manifest file location on the system:/var/svc/manifest/application
+/GlassFish/domain1_home_gfuser_glassfish-installations_glassfish7
+_glassfish_domains/Domain-service-smf.xml.
+You have created the service but you need to start it yourself.
+Here are the most typical Solaris commands of interest:
+* /usr/bin/svcs -a | grep domain1 // status
+* /usr/sbin/svcadm enable domain1 // start
+* /usr/sbin/svcadm disable domain1 // stop
+* /usr/sbin/svccfg delete domain1 // uninstall
+Command create-service executed successfully.
+----
+
+[[sthref535]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref536]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1auths-1[`auths`(1)],
+http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1svcs-1[`svcs`(1)]
+
+http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Msvccfg-1m[`svccfg`(1M)],
+http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Museradd-1m[`useradd`(1M)],
+http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Musermod-1m[`usermod`(1M)]
+
+"http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=SYSADV1hbrunlevels-25516[Managing
+Services (Overview)]" in System Administration Guide: Basic
+Administration,
+"http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=SYSADV1faauf[Managing
+Services (Tasks)]" in System Administration Guide: Basic Administration
+
+Microsoft .NET Framework (`http://www.microsoft.com/net/`)
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-ssl.adoc b/docs/reference-manual/src/main/asciidoc/create-ssl.adoc
new file mode 100644
index 0000000..705d547
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-ssl.adoc
@@ -0,0 +1,192 @@
+type=page
+status=published
+title=create-ssl
+next=create-system-properties.html
+prev=create-service.html
+~~~~~~
+
+= create-ssl
+
+[[create-ssl-1]][[GSRFM00058]][[create-ssl]]
+
+== create-ssl
+
+Creates and configures the SSL element in the selected HTTP listener,
+IIOP listener, or IIOP service
+
+[[sthref537]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-ssl [--help]
+[--target target]
+--type listener_or_service_type
+--certname cert_name
+[--ssl2enabled={false|true}] [--ssl2ciphers ss12ciphers]
+[--ssl3enabled={true|false}] [--tlsenabled={true|false}]
+[--ssl3tlsciphers ssl3tlsciphers]
+[--tlsrollbackenabled={true|false}]
+[--clientauthenabled={false|true}]
+[listener_id]
+----
+
+[[sthref538]]
+
+=== Description
+
+The `create-ssl` subcommand creates and configures the SSL element in
+the selected HTTP listener, IIOP listener, or IIOP service to enable
+secure communication on that listener/service.
+
+This subcommand is supported in remote mode only.
+
+[[sthref539]]
+
+=== Options
+
+If an option has a short option name, then the short option precedes the
+long option name. Short options have one dash whereas long options have
+two dashes.
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Specifies the target on which you are configuring the ssl element. The
+  following values are valid:
+
+  `server`;;
+    Specifies the server in which the iiop-service or HTTP/IIOP listener
+    is to be configured for SSL.
+  config;;
+    Specifies the configuration that contains the HTTP/IIOP listener or
+    iiop-service for which SSL is to be configured.
+  cluster;;
+    Specifies the cluster in which the HTTP/IIOP listener or
+    iiop-service is to be configured for SSL. All the server instances
+    in the cluster will get the SSL configuration for the respective
+    listener or iiop-service.
+  instance;;
+    Specifies the instance in which the HTTP/IIOP listener or
+    iiop-service is to be configured for SSL.
+
+`--type`::
+  The type of service or listener for which the SSL is created. The type
+  can be:
+
+  * `network-listener`
+  * `http-listener`
+  * `iiop-listener`
+  * `iiop-service`
+  * `jmx-connector`
+
++
+When the type is `iiop-service`, the `ssl-client-config` along with
+  the embedded `ssl` element is created in `domain.xml`.
+`--certname`::
+  The nickname of the server certificate in the certificate database or
+  the PKCS#11 token. The format of the name in the certificate is
+  tokenname:nickname. For this property, the tokenname: is optional.
+`--ssl2enabled`::
+  Set this property to `true` to enable SSL2. The default value is
+  `false`. If both SSL2 and SSL3 are enabled for a virtual server, the
+  server tries SSL3 encryption first. In the event SSL3 encryption
+  fails, the server then tries SSL2 encryption.
+`--ssl2ciphers`::
+  A comma-separated list of the SSL2 ciphers to be used. Ciphers not
+  explicitly listed will be disabled for the target, even if those
+  ciphers are available in the particular cipher suite you are using. If
+  this option is not used, all supported ciphers are assumed to be
+  enabled. Allowed values are:
+
+  * `rc4`
+  * `rc4export`
+  * `rc2`
+  * `rc2export`
+  * `idea`
+  * `des`
+  * `desede3`
+
+`--ssl3enabled`::
+  Set this property to `false` to disable SSL3. The default value is
+  `true`. If both SSL2 and SSL3 are enabled for a virtual server, the
+  server tries SSL3 encryption first. In the event SSL3 encryption
+  fails, the server then tries SSL2 encryption.
+`--tlsenabled`::
+  Set this property to `false` to disable TLS. The default value is
+  `true` It is good practice to enable TLS, which is a more secure
+  version of SSL.
+`--ssl3tlsciphers`::
+  A comma-separated list of the SSL3 and/or TLS ciphers to be used.
+  Ciphers not explicitly listed will be disabled for the target, even if
+  those ciphers are available in the particular cipher suite you are
+  using. If this option is not used, all supported ciphers are assumed
+  to be enabled. Allowed values are:
+
+  * `SSL_RSA_WITH_RC4_128_MD5`
+  * `SSL_RSA_WITH_3DES_EDE_CBC_SHA`
+  * `SSL_RSA_WITH_DES_CBC_SHA`
+  * `SSL_RSA_EXPORT_WITH_RC4_40_MD5`
+  * `SSL_RSA_WITH_NULL_MD5`
+  * `SSL_RSA_WITH_RC4_128_SHA`
+  * `SSL_RSA_WITH_NULL_SHA`
+
+`--tlsrollbackenabled`::
+  Set to `true` (default) to enable TLS rollback. TLS rollback should be
+  enabled for Microsoft Internet Explorer 5.0 and 5.5. This option is
+  only valid when `-tlsenabled=true`.
+`--clientauthenabled`::
+  Set to `true` if you want SSL3 client authentication performed on
+  every request independent of ACL-based access control. Default value
+  is `false`.
+
+[[sthref540]]
+
+=== Operands
+
+listener_id::
+  The ID of the HTTP or IIOP listener for which the SSL element is to be
+  created. The listener_id is not required if the `--type` is `iiop-service`.
+
+[[sthref541]]
+
+=== Examples
+
+[[GSRFM525]][[sthref542]]
+
+==== Example 1   Creating an SSL element for an HTTP listener
+
+The following example shows how to create an SSL element for an HTTP
+listener named `http-listener-1`.
+
+[source]
+----
+asadmin> create-ssl
+--type http-listener
+--certname sampleCert http-listener-1
+Command create-ssl executed successfully.
+----
+
+[[sthref543]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref544]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-ssl.html#delete-ssl-1[`delete-ssl`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-system-properties.adoc b/docs/reference-manual/src/main/asciidoc/create-system-properties.adoc
new file mode 100644
index 0000000..bb7a5af
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-system-properties.adoc
@@ -0,0 +1,126 @@
+type=page
+status=published
+title=create-system-properties
+next=create-threadpool.html
+prev=create-ssl.html
+~~~~~~
+
+= create-system-properties
+
+[[create-system-properties-1]][[GSRFM00059]][[create-system-properties]]
+
+== create-system-properties
+
+Adds one or more system property elements that can be referenced
+elsewhere in the configuration.
+
+[[sthref545]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-system-properties [--help]
+[--target target]
+[name=value)[:name=value]*]
+----
+
+[[sthref546]]
+
+=== Description
+
+The `create-system-properties` subcommand adds or updates system
+properties that can be referenced elsewhere on the server.
+
+{productName} provides hooks where tokens (system properties) can be
+specified. Because {productName} does not have multiple server
+elements, you can specify a particular token at any level. When a domain
+supports multiple servers, the override potential can be exploited. When
+a domain is started or restarted, all `<system-property>` elements are
+resolved and available to the Java Virtual Machine by using the
+`System.setProperty()` call on each of them (with its name and value
+derived from the corresponding attributes of the element). This is
+analogous to sending the elements as `-D` parameters on the Java command
+line.
+
+This subcommand is supported in remote mode only.
+
+[[sthref547]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  The target on which you are creating the system properties.
+
+[[sthref548]]
+
+=== Operands
+
+target::
+  The valid targets for this subcommand are instance, cluster,
+  configuration, domain, and server. Server is the default option. Valid
+  values are:
+
+  `server`;;
+    Creates the properties on the default server instance. This is the
+    default value.
+  `domain`;;
+    Creates the properties for all server instances in the default
+    domain.
+  configuration_name;;
+    Creates the properties in the specified configuration.
+  cluster_name;;
+    Creates the properties on all server instances in the specified
+    cluster.
+  instance_name;;
+    Creates the properties on a specified server instance.
+
+name=value::
+  The name value pairs of the system properties to add to the specified
+  target. Multiple system properties must be separated by a `:` (colon).
+  If a `:` (colon) appears in the name or value of a system property, it
+  must be escaped with a `\` (blackslash). If any system properties were
+  previously defined, they are updated with the new values.
+
+[[sthref549]]
+
+=== Examples
+
+[[GSRFM526]][[sthref550]]
+
+==== Example 1   Creating System Properties
+
+This example creates a system property associated with an HTTP listener
+on a server instance named `myserver`.
+
+[source]
+----
+asadmin> create-system-properties --target myserver http-listener-port=1088
+Command create-system-properties executed successfully.
+----
+
+[[sthref551]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref552]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-system-property.html#delete-system-property-1[`delete-system-property`(1)],
+link:list-system-properties.html#list-system-properties-1[`list-system-properties`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-threadpool.adoc b/docs/reference-manual/src/main/asciidoc/create-threadpool.adoc
new file mode 100644
index 0000000..2f906f1
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-threadpool.adoc
@@ -0,0 +1,127 @@
+type=page
+status=published
+title=create-threadpool
+next=create-transport.html
+prev=create-system-properties.html
+~~~~~~
+
+= create-threadpool
+
+[[create-threadpool-1]][[GSRFM00060]][[create-threadpool]]
+
+== create-threadpool
+
+Adds a thread pool
+
+[[sthref553]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-threadpool [--help]
+[--target target]
+[--maxthreadpoolsize maxthreadpoolsize]
+[--minthreadpoolsize minthreadpoolsize]
+[--idletimeout idletimeout] [--maxqueuesize maxqueuesize]
+[--workqueues workqueues] threadpool-id
+----
+
+[[sthref554]]
+
+=== Description
+
+The `create-threadpool` subcommand creates a thread pool with the
+specified name. You can specify maximum and minimum number of threads in
+the pool, the quantity of messages, and the idle timeout of a thread.
+The created thread pool can be used for servicing IIOP requests and for
+resource adapters to service work management requests. A thread pool can
+be used in multiple resource adapters.
+
+This subcommand is supported in remote mode only.
+
+[[sthref555]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  This option specifies the target on which you are creating the thread pool.
+  Valid values are as follows:
+
+  `server`;;
+    Creates the thread pool for the default {productName} instance
+    `server` and is the default value
+  configuration-name;;
+    Creates the thread pool for the named configuration.
+  cluster-name;;
+    Creates the thread pool for every instance in the cluster.
+  instance-name;;
+    Creates the thread pool for a particular instance.
+
+`--maxthreadpoolsize`::
+  Specifies the maximum number of threads the pool can contain. Default is 5.
+`--minthreadpoolsize`::
+  Specifies the minimum number of threads in the pool. These are created
+  when the thread pool is instantiated. Default is 2.
+`--idletimeout`::
+  Specifies the amount of time in seconds after which idle threads are
+  removed from the pool. Default is 900.
+`--maxqueuesize`::
+  Specifies the maximum number of messages that can be queued until
+  threads are available to process them for a network listener or IIOP
+  listener. A value of -1 specifies no limit. Default is 4096.
+`--workqueues`::
+  Do not specify this option. This option is retained for compatibility
+  with earlier releases. If you specify this option, a syntax error does
+  not occur. Instead, the subcommand runs successfully and displays a
+  warning message that the option is ignored.
+
+[[sthref556]]
+
+=== Operands
+
+threadpool-id::
+  An ID for the work queue, for example, `threadpool-1`.
+
+[[sthref557]]
+
+=== Examples
+
+[[GSRFM527]][[sthref558]]
+
+==== Example 1   Creating a Thread Pool
+
+This command creates a new thread pool called `threadpool-l`.
+
+[source]
+----
+asadmin> create-threadpool --maxthreadpoolsize 100
+--minthreadpoolsize 20 --idletimeout 2 threadpool-1
+Command create-threadpool executed successfully
+----
+
+[[sthref559]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref560]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-threadpool.html#delete-threadpool-1[`delete-threadpool`(1)],
+link:list-threadpools.html#list-threadpools-1[`list-threadpools`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-transport.adoc b/docs/reference-manual/src/main/asciidoc/create-transport.adoc
new file mode 100644
index 0000000..63cf813
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-transport.adoc
@@ -0,0 +1,157 @@
+type=page
+status=published
+title=create-transport
+next=create-virtual-server.html
+prev=create-threadpool.html
+~~~~~~
+
+= create-transport
+
+[[create-transport-1]][[GSRFM00061]][[create-transport]]
+
+== create-transport
+
+Adds a new transport
+
+[[sthref561]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-transport [--help]
+[--acceptorthreads acceptor-threads]
+[--buffersizebytes buffer-size]
+[--bytebuffertype byte-buffer-type]
+[--classname class-name]
+[--displayconfiguration={false|true}]
+[--enablesnoop={false|true}]
+[--idlekeytimeoutseconds idle-key-timeout]
+[--maxconnectionscount max-connections]
+[--readtimeoutmillis read-timeout]
+[--writetimeoutmillis write-timeout]
+[--selectionkeyhandler selection-key-handler]
+[--selectorpolltimeoutmillis selector-poll-timeout]
+[--tcpnodelay={false|true}]
+[--target target]
+transport-name
+----
+
+[[sthref562]]
+
+=== Description
+
+The `create-transport` subcommand creates a transport for a network
+listener. This subcommand is supported in remote mode only.
+
+[[sthref563]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--acceptorthreads`::
+  The number of acceptor threads for the transport. The recommended
+  value is the number of processors in the machine. The default value is `1`.
+`--buffersizebytes`::
+  The size, in bytes, of the buffer to be provided for input streams
+  created by the network listener that references this transport. The
+  default value is `8192`.
+`--bytebuffertype`::
+  The type of the buffer to be provided for input streams created by a
+  network-listener. Allowed values are `HEAP` and `DIRECT`. The default
+  value is `HEAP`.
+`--classname`::
+  The fully qualified name of the Java class that implements the
+  transport. The default is `org.glassfish.grizzly.TCPSelectorHandler`.
+`--displayconfiguration`::
+  If `true`, flushes the internal network configuration to the server
+  log. Useful for debugging, but reduces performance. The default is `false`.
+`--enablesnoop`::
+  If `true`, writes request/response information to the server log.
+  Useful for debugging, but reduces performance. The default is `false`.
+`--idlekeytimeoutseconds`::
+  The idle key timeout. The default is `30` seconds.
+`--maxconnectionscount`::
+  The maximum number of connections for the network listener that
+  references this transport. A value of `-1` specifies no limit. The
+  default value is `4096`.
+`--readtimeoutmillis`::
+  The amount of time the server waits during the header and body parsing
+  phase. The default is `30000` milliseconds, or 30 seconds.
+`--writetimeoutmillis`::
+  The amount of time the server waits before considering the remote
+  client disconnected when writing the response. The default is `30000`
+  milliseconds, or 30 seconds.
+`--selectionkeyhandler`::
+  The name of the selection key handler associated with this transport.
+  There is no default.
+`--selectorpolltimeoutmillis`::
+  The number of milliseconds a NIO Selector blocks waiting for events
+  (user requests). The default value is `1000` milliseconds.
+`--tcpnodelay`::
+  If `true`, the default, enables `TCP_NODELAY` (also called Nagle's
+  algorithm). The default is `false`.
+`--target`::
+  Creates the transport only on the specified target. Valid values are
+  as follows:
+
+  `server`;;
+    Creates the transport on the default server instance. This is the
+    default value.
+  configuration-name;;
+    Creates the transport in the specified configuration.
+  cluster-name;;
+    Creates the transport on all server instances in the specified
+    cluster.
+  standalone-instance-name;;
+    Creates the transport on the specified standalone server instance.
+
+[[sthref564]]
+
+=== Operands
+
+transport-name::
+  The name of the transport.
+
+[[sthref565]]
+
+=== Examples
+
+[[GSRFM528]][[sthref566]]
+
+==== Example 1   Creating a Transport
+
+The following command creates a transport named `http1-trans` that uses
+a non-default number of acceptor threads:
+
+[source]
+----
+asadmin> create-transport --acceptorthreads 100 http1-trans
+Command create-transport executed successfully.
+----
+
+[[sthref567]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref568]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-network-listener.html#create-network-listener-1[`create-network-listener`(1)],
+link:delete-transport.html#delete-transport-1[`delete-transport`(1)],
+link:list-transports.html#list-transports-1[`list-transports`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/create-virtual-server.adoc b/docs/reference-manual/src/main/asciidoc/create-virtual-server.adoc
new file mode 100644
index 0000000..723a4a2
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/create-virtual-server.adoc
@@ -0,0 +1,395 @@
+type=page
+status=published
+title=create-virtual-server
+next=delete-admin-object.html
+prev=create-transport.html
+~~~~~~
+
+= create-virtual-server
+
+[[create-virtual-server-1]][[GSRFM00062]][[create-virtual-server]]
+
+== create-virtual-server
+
+Creates the named virtual server
+
+[[sthref569]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] create-virtual-server [--help]
+--hosts hosts
+[--httplisteners http-listeners]
+[--networklisteners network-listeners]
+[--defaultwebmodule default-web-module]
+[--state={on|off}]
+[--logfile log-file]
+[--property (name=value)[:name=value]*]
+[--target target]
+virtual-server-id
+----
+
+[[sthref570]]
+
+=== Description
+
+The `create-virtual-server` subcommand creates the named virtual server.
+Virtualization in the {productName} allows multiple URL domains to
+be served by a single HTTP server process that is listening on multiple
+host addresses. If the application is available at two virtual servers,
+they still share the same physical resource pools.
+
+This subcommand is supported in remote mode only.
+
+[[sthref571]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--hosts`::
+  A comma-separated (,) list of values allowed in the host request
+  header to select the current virtual server. Each virtual server that
+  is configured to the same connection group must have a unique host for
+  that group.
+`--httplisteners`::
+  A comma-separated (,) list of HTTP listener IDs. Required only for a
+  virtual server that is not the default virtual server. HTTP listeners
+  are converted to network listeners. This option is deprecated but
+  maintained for backward compatibility. Use `--networklisteners`
+  instead. If `--networklisteners` is used, this option is ignored.
+`--networklisteners`::
+  A comma-separated (,) list of network listener IDs. Required only for
+  a virtual server that is not the default virtual server.
+`--defaultwebmodule`::
+  The standalone web module associated with this virtual server by
+  default.
+`--state`::
+  Determines whether a virtual server is active (`on`) or inactive
+  (`off` or disabled). Default is `on`. When inactive, the virtual
+  server does not service requests.
+`--logfile`::
+  Name of the file where log entries for this virtual server are to be
+  written. By default, this is the server log. The file and directory in
+  which the access log is kept must be writable by the user account
+  under which the server runs.
+`--property`::
+  Optional property name/value pairs for configuring the virtual server.
+  The following properties are available:
+
+  `sso-max-inactive-seconds`;;
+    Specifies the number of seconds after which a user's single sign-on
+    record becomes eligible for purging if no client activity is
+    received. Since single sign-on applies across several applications
+    on the same virtual server, access to any of the applications keeps
+    the single sign-on record active. The default value is 300 seconds
+    (5 minutes). Higher values provide longer single sign-on persistence
+    for users, but at the expense of more memory use on the server.
+  `sso-reap-interval-seconds`;;
+    Specifies the number of seconds between purges of expired single
+    sign-on records. The default value is 60.
+  `setCacheControl`;;
+    Specifies a comma-separated list of `Cache-Control` response
+    directives. For a list of valid directives, see section 14.9 of the
+    document at http://www.ietf.org/rfc/rfc2616.txt
+    (`http://www.ietf.org/rfc/rfc2616.txt`).
+  `allowLinking`;;
+    If the value of this property is `true`, resources that are symbolic
+    links will be served for all web applications deployed on this
+    virtual server. Individual web applications may override this
+    setting by using the property `allowLinking` under the `sun-web-app`
+    element in the `sun-web.xml` file:
++
+[source,xml]
+----
+<sun-web-app>
+<property name="allowLinking" value="[true|false]"/>
+</sun-web-app>
+----
++
+The default value is `true`.
+  `accessLogWriteInterval`;;
+    Indicates the number of seconds before the log will be written to
+    the disk. The access log is written when the buffer is full or when
+    the interval expires. If the value is 0 (zero), then the buffer is
+    always written even if it is not full. This means that each time the
+    server is accessed, the log message is stored directly to the file.
+  `accessLogBufferSize`;;
+    Specifies the size, in bytes, of the buffer where access log calls
+    are stored.
+  `allowRemoteAddress`;;
+    This is a comma-separated list of regular expression patterns to
+    which the remote client's IP address is compared. If this property
+    is specified, the remote address must match for this request to be
+    accepted. If this property is not specified, all requests will be
+    accepted unless the remote address matches a `denyRemoteAddress`
+    pattern. The default value for this property is null.
+  `denyRemoteAddress`;;
+    This is a comma-separated list of regular expression patterns to
+    which the remote client's IP address is compared. If this property
+    is specified, the remote address must not match for this request to
+    be accepted. If this property is not specified, request acceptance
+    is governed solely by the `allowRemoteAddress` property. The default
+    value for this property is null.
+  `allowRemoteHost`;;
+    This is a comma-separated list of regular expression patterns to
+    which the remote client's host name (as returned by
+    `java.net.Socket.getInetAddress().getHostName()`) is compared. If
+    this property is specified, the remote host name must match for this
+    request to be accepted. If this property is not specified, all
+    requests will be accepted unless the remote host name matches a
+    denyRemoteHost pattern. The default value for this property is null.
+  `denyRemoteHost`;;
+    This is a comma-separated list of regular expression patterns to
+    which the remote client's host name (as returned by
+    `java.net.Socket.getInetAddress().getHostName()`) is compared. If
+    this property is specified, the remote host name must not match for
+    this request to be accepted. If this property is not specified,
+    request acceptance is governed solely by the `allowRemoteHost`
+    property. The default value for this property is null.
+  `authRealm`;;
+    Specifies the `name` attribute of an `auth-realm`, which overrides
+    the server instance's default realm for standalone web applications
+    deployed to this virtual server. A realm defined in a standalone web
+    application's `web.xml` file overrides the virtual server's realm.
+  `securePagesWithPragma`;;
+    Set this property to `false` to ensure that for all web applications
+    on this virtual server file downloads using SSL work properly in
+    Internet Explorer. +
+    You can set this property for a specific web application. For
+    details, see "link:application-deployment-guide/dd-elements.html#GSDPG00161[glassfish-web-app]" in {productName} Application Deployment Guide.
+  `contextXmlDefault`;;
+    Specifies the location, relative to domain-dir, of the `context.xml`
+    file for this virtual server, if one is used. For more information
+    about the `context.xml` file, see "link:application-development-guide/webapps.html#GSDVG00416[Using a
+    context.xml File]" in {productName}
+    Application Development Guide and The Context Container
+    (`http://tomcat.apache.org/tomcat-5.5-doc/config/context.html`).
+    Context parameters, environment entries, and resource definitions in
+    `context.xml` are supported in the {productName}.
+  `alternatedocroot_n`;;
+    Specifies an alternate document root (docroot), where n is a
+    positive integer that allows specification of more than one.
+    Alternate docroots allow web applications to serve requests for
+    certain resources from outside their own docroot, based on whether
+    those requests match one (or more) of the URI patterns of the web
+    application's alternate docroots. +
+    If a request matches an alternate docroot's URI pattern, it is
+    mapped to the alternate docroot by appending the request URI (minus
+    the web application's context root) to the alternate docroot's
+    physical location (directory). If a request matches multiple URI
+    patterns, the alternate docroot is determined according to the
+    following precedence order:
++
+--
+    * Exact match
+    * Longest path match
+    * Extension match
+--
++
+For example, the following properties specify three alternate
+    docroots. The URI pattern of the first alternate docroot uses an
+    exact match, whereas the URI patterns of the second and third
+    alternate docroots use extension and longest path prefix matches, respectively.
++
+[source,xml]
+----
+<property name="alternatedocroot_1"
+   value="from=/my.jpg dir=/srv/images/jpg"/>
+<property name="alternatedocroot_2"
+   value="from=*.jpg dir=/srv/images/jpg"/>
+<property name="alternatedocroot_3"
+   value="from=/jpg/* dir=/src/images"/>
+----
++
+The `value` of each alternate docroot has two components: The first
+    component, `from`, specifies the alternate docroot's URI pattern,
+    and the second component, `dir`, specifies the alternate docroot's
+    physical location (directory). Spaces are allowed in the `dir`
+    component. +
+    You can set this property for a specific web application. For
+    details, see "link:application-deployment-guide/dd-elements.html#GSDPG00161[glassfish-web-app]" in {productName} Application Deployment Guide.
+  `send-error_n`;;
+    Specifies custom error page mappings for the virtual server, which
+    are inherited by all web applications deployed on the virtual
+    server. A web application can override these custom error page
+    mappings in its `web.xml` deployment descriptor. The value of each
+    `send-error_n` property has three components, which may be specified
+    in any order:
++
+--
+    * The first component, `code`, specifies the three-digit HTTP response
+    status code for which the custom error page should be returned in
+    the response.
+    * The second component, `path`, specifies the absolute or relative
+    file system path of the custom error page. A relative file system
+    path is interpreted as relative to the domain-dir``/config``
+    directory.
+    * The third component, `reason`, is optional and specifies the text of
+    the reason string (such as `Unauthorized` or `Forbidden`) to be
+    returned.
+--
+For example:
++
+[source,xml]
+----
+<property name="send-error_1"
+   value="code=401 path=/myhost/401.html reason=MY-401-REASON"/>
+----
+    This example property definition causes the contents of
+    `/myhost/401.html` to be returned with 401 responses, along with
+    this response line:
++
+[source]
+----
+HTTP/1.1 401 MY-401-REASON
+----
+
+  ``redirect_``n;;
+    Specifies that a request for an old URL is treated as a request for
+    a new URL. These properties are inherited by all web applications
+    deployed on the virtual server. The value of each `redirect_n`
+    property has two components, which may be specified in any order:
++
+--
+    * The first component, `from`, specifies the prefix of the requested URI to match.
+    * The second component, `url-prefix`, specifies the new URL prefix to
+      return to the client. The from prefix is simply replaced by this URL prefix.
+--
++
+For example:
++
+[source,xml]
+----
+<property name="redirect_1" value="from=/dummy url-prefix=http://etude"/>
+----
+
+  ``valve_``n;;
+    Specifies a fully qualified class name of a custom valve, where n is
+    a positive integer that allows specification of more than one.
+    The valve class must implement the `org.apache.catalina.Valve` interface
+    from Tomcat or previous {productName} releases, or the
+    `org.glassfish.web.valve.GlassFishValve` interface from the current
+    {productName} release. For example:
++
+[source,xml]
+----
+<property name="valve_1" value="org.glassfish.extension.Valve"/>
+----
++
+You can set this property for a specific web application. For
+    details, see "link:application-deployment-guide/dd-elements.html#GSDPG00161[glassfish-web-app]" in {productName} Application Deployment Guide.
+  ``listener_n``;;
+    Specifies a fully qualified class name of a custom Catalina
+    listener, where n is a positive integer that allows specification of
+    more than one. The listener class must implement the
+    `org.apache.catalina.ContainerListener` or
+    `org.apache.catalina.LifecycleListener` interface. For example:
++
+[source,xml]
+----
+<property name="listener_1"
+   value="org.glassfish.extension.MyLifecycleListener"/>
+----
++
+You can set this property for a specific web application. For
+    details, see "link:application-deployment-guide/dd-elements.html#GSDPG00161[glassfish-web-app]" in {productName} Application Deployment Guide.
+  `docroot`;;
+    Absolute path to root document directory for server. Deprecated.
+    Replaced with a `virtual-server` attribute, `docroot`, that is
+    accessible using the `get`, `set`, and `list` subcommands.
+  `accesslog`;;
+    Absolute path to server access logs. Deprecated. Replaced with a
+    `virtual-server` attribute , `access-log`, that is accessible using
+    the `get`, `set`, and `list` subcommands.
+  `accessLoggingEnabled`;;
+    If `true`, access logging is enabled for this virtual server.
+    Deprecated. Replaced with a `virtual-server` attribute,
+    `access-logging-enabled`, that is accessible using the `get`, `set`,
+    and `list` subcommands.
+  `sso-enabled`;;
+    If `true`, single sign-on is enabled for web applications on this
+    virtual server that are configured for the same realm. Deprecated.
+    Replaced with a `virtual-server` attribute, `sso-enabled`, that is
+    accessible using the `get`, `set`, and `list` subcommands.
+  `ssoCookieSecure`;;
+    Sets the `Secure` attribute of any `JSESSIONIDSSO` cookies
+    associated with the web applications deployed to this virtual
+    server. Deprecated. Replaced with a `virtual-server` attribute,
+    `sso-cookie-secure`, that is accessible using the `get`, `set`, and
+    `list` subcommands.
+  `errorReportValve`;;
+    Specifies a fully qualified class name of a custom valve that
+    produces default error pages for applications on this virtual
+    server. Specify an empty string to disable the default error page
+    mechanism for this virtual server.
+
+`--target`::
+  Creates the virtual server only on the specified target. Valid values
+  are as follows:
+
+  `server`;;
+    Creates the virtual server on the default server instance.
+    This is the default value.
+  configuration-name;;
+    Creates the virtual server in the specified configuration.
+  cluster-name;;
+    Creates the virtual server on all server instances in the specified cluster.
+  standalone-instance-name;;
+    Creates the virtual server on the specified standalone server instance.
+
+[[sthref572]]
+
+=== Operands
+
+virtual-server-id::
+  Identifies the unique ID for the virtual server to be created. This ID
+  cannot begin with a number.
+
+[[sthref573]]
+
+=== Examples
+
+[[GSRFM529]][[sthref574]]
+
+==== Example 1   Creating a Virtual Server
+
+The following command creates a virtual server named `sampleServer`:
+
+[source]
+----
+asadmin> create-virtual-server --hosts pigeon,localhost
+--property authRealm=ldap sampleServer
+Command create-virtual-server executed successfully.
+----
+
+[[sthref575]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref576]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-virtual-server.html#delete-virtual-server-1[`delete-virtual-server`(1)],
+link:list-virtual-servers.html#list-virtual-servers-1[`list-virtual-servers`(1)],
+link:create-http-listener.html#create-http-listener-1[`create-http-listener`(1)],
+link:create-network-listener.html#create-network-listener-1[`create-network-listener`(1)]
+
+link:get.html#get-1[`get`(1)], link:list.html#list-1[`list`(1)],
+link:set.html#set-1[`set`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/debug-asadmin.adoc b/docs/reference-manual/src/main/asciidoc/debug-asadmin.adoc
new file mode 100644
index 0000000..0d93707
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/debug-asadmin.adoc
@@ -0,0 +1,49 @@
+type=page
+status=published
+title=debug-asadmin
+next=capture-schema.html
+prev=asadmin.html
+~~~~~~
+
+= debug-asadmin
+
+The script content on this page is for navigation purposes only and does
+not alter the content in any way.
+
+[[debug-asadmin-1m]][[GSRFM00263]][[debug-asadmin]]
+
+== debug-asadmin
+
+Variant of the `asadmin` utility for performing administrative tasks for {productName}. This variant
+is useful for debugging local admin commands the launching of {productName}. It suspends immediately
+waiting for a debug connection to port 9008.
+
+[[sthref2364]]
+
+=== Synopsis
+
+[source]
+----
+debug-asadmin [--host host]
+[--port port]
+[--user admin-user]
+[--passwordfile filename]
+[--terse={true|false}]
+[--secure={false|true}]
+[--echo={true|false}]
+[--interactive={true|false}]
+[--detach={true|false}]
+[--help]
+[subcommand [options] [operands]]
+----
+
+[[sthref2365]]
+
+=== Description
+
+Use the `debug-asadmin` utility to debug local admin commands and the launching of the {productName}. See the `asadmin` command for full documentation.
+
+
+http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN5attributes-5[`attributes`(5)]
+
+'''''
diff --git a/docs/reference-manual/src/main/asciidoc/delete-admin-object.adoc b/docs/reference-manual/src/main/asciidoc/delete-admin-object.adoc
new file mode 100644
index 0000000..50a46a9
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-admin-object.adoc
@@ -0,0 +1,111 @@
+type=page
+status=published
+title=delete-admin-object
+next=delete-application-ref.html
+prev=create-virtual-server.html
+~~~~~~
+
+= delete-admin-object
+
+[[delete-admin-object-1]][[GSRFM00063]][[delete-admin-object]]
+
+== delete-admin-object
+
+Removes the administered object with the specified JNDI name.
+
+[[sthref577]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-admin-object [--help]
+[--target target] jndi_name
+----
+
+[[sthref578]]
+
+=== Description
+
+The `delete-admin-object` subcommand removes an administered object with
+the specified JNDI name.
+
+This subcommand is supported in remote mote only.
+
+[[sthref579]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  This is the name of the targets for which the administered object is
+  to be deleted. Valid values are:
++
+[NOTE]
+====
+Resources are always created for a domain as a whole but are only
+active for targets for which a `<resource-ref>` has been created using
+the `--target` option when the resource was created. This means that
+deleting a resource only deletes the `<resource-ref>` element for the
+specified `--target`, and does not delete the resource from the domain
+as a whole unless `domain` is specified as the `--target` for the
+deletion.
+====
+
+  `server`;;
+    Deletes the administered object for the default server instance
+    `server` and is the default value.
+  configuration_name;;
+    Deletes the administered object for the specified configuration.
+  cluster_name;;
+    Deletes the administered object for the specified cluster.
+  instance_name;;
+    Deletes the administered object for a particular server instance.
+
+[[sthref580]]
+
+=== Operands
+
+jndi_name::
+  JNDI name of the administered object to be deleted.
+
+[[sthref581]]
+
+=== Examples
+
+[[GSRFM530]][[sthref582]]
+
+==== Example 1   Deleting an Administered Object
+
+This example deletes the administered object named `jms/samplelqueue`.
+
+[source]
+----
+asadmin> delete-admin-object jms/samplequeue
+Command delete-admin-object executed successfully
+----
+
+[[sthref583]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref584]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-admin-object.html#create-admin-object-1[`create-admin-object`(1)],
+link:list-admin-objects.html#list-admin-objects-1[`list-admin-objects`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-application-ref.adoc b/docs/reference-manual/src/main/asciidoc/delete-application-ref.adoc
new file mode 100644
index 0000000..d1d2dcb
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-application-ref.adoc
@@ -0,0 +1,128 @@
+type=page
+status=published
+title=delete-application-ref
+next=delete-audit-module.html
+prev=delete-admin-object.html
+~~~~~~
+
+= delete-application-ref
+
+[[delete-application-ref-1]][[GSRFM00064]][[delete-application-ref]]
+
+== delete-application-ref
+
+Removes a reference to an application
+
+[[sthref585]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-application-ref [--help]
+[--target target]
+[--cascade=false] reference_name
+----
+
+[[sthref586]]
+
+=== Description
+
+The `delete-application-ref` subcommand removes a reference from a
+cluster or an unclustered server instance to an application. This
+effectively results in the application element being undeployed and no
+longer available on the targeted instance or cluster.
+
+The target instance or instances making up the cluster need not be
+running or available for this subcommand to succeed. If one or more
+instances are not available, they will no longer load the application
+the next time they start.
+
+Removal of the reference does not result in removal of the application
+from the domain. The bits are removed only by the `undeploy` subcommand.
+
+This subcommand is supported in remote mode only.
+
+[[sthref587]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Specifies the target from which you are removing the application
+  reference. Valid values are
+
+  * `server` - Specifies the default server instance as the target. +
+  `server` is the name of the default server instance and is the default value.
+  * cluster_name - Specifies a certain cluster as the target.
+  * instance_name - Specifies a certain stand-alone server instance as
+  the target.
+`--cascade`::
+  For a connector module, indicates whether the resources dependent on
+  the module should also be recursively deleted. The default is `false`.
+  The connector module can be either a stand-alone RAR file or a module
+  within an EAR file.
+
+[[sthref588]]
+
+=== Operands
+
+reference_name::
+  The name of the application or module, which can be a Jakarta EE
+  application module, Web module, EJB module, connector module,
+  application client module, or lifecycle module. +
+  The name can include an optional version identifier, which follows the
+  name and is separated from the name by a colon (`:`). The version
+  identifier must begin with a letter or number. It can contain
+  alphanumeric characters plus underscore (`_`), dash (`-`), and period
+  (`.`) characters. To delete references to multiple versions, you can
+  use an asterisk (`*`) as a wildcard character. For more information
+  about module and application versions, see "link:application-deployment-guide/overview.html#GSDPG00324[Module
+  and Application Versions]" in {productName}
+  Application Deployment Guide.
+
+[[sthref589]]
+
+=== Examples
+
+[[GSRFM531]][[sthref590]]
+
+==== Example 1   Deleting an Application Reference
+
+The following example removes a reference to the Web module `MyWebApp`
+from the unclustered server instance `NewServer`.
+
+[source]
+----
+asadmin> delete-application-ref --target NewServer MyWebApp
+Command delete-application-ref executed successfully.
+----
+
+[[sthref591]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref592]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-application-ref.html#create-application-ref-1[`create-application-ref`(1)],
+link:list-application-refs.html#list-application-refs-1[`list-application-refs`(1)],
+link:undeploy.html#undeploy-1[`undeploy`(1)]
+
+link:application-deployment-guide.html#GSDPG[{productName} Application Deployment
+Guide]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-audit-module.adoc b/docs/reference-manual/src/main/asciidoc/delete-audit-module.adoc
new file mode 100644
index 0000000..c25f7f4
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-audit-module.adoc
@@ -0,0 +1,97 @@
+type=page
+status=published
+title=delete-audit-module
+next=delete-auth-realm.html
+prev=delete-application-ref.html
+~~~~~~
+
+= delete-audit-module
+
+[[delete-audit-module-1]][[GSRFM00065]][[delete-audit-module]]
+
+== delete-audit-module
+
+Removes the named audit-module
+
+[[sthref593]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-audit-module [--help]
+[--target target]
+audit_module_name
+----
+
+[[sthref594]]
+
+=== Description
+
+This subcommand removes the named audit module. This subcommand is
+supported in remote mode only.
+
+[[sthref595]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Specifies the target on which you are deleting the audit module. Valid
+  values are as follows:
+
+  `server`;;
+    Deletes the audit module for the default server instance `server`
+    and is the default value.
+  configuration_name;;
+    Deletes the audit module for the named configuration.
+  cluster_name;;
+    Deletes the audit module for every server instance in the cluster.
+  instance_name;;
+    Deletes the audit module for a particular server instance.
+
+[[sthref596]]
+
+=== Operands
+
+audit_module_name::
+  The name of the audit module to be deleted.
+
+[[sthref597]]
+
+=== Examples
+
+[[GSRFM532]][[sthref598]]
+
+==== Example 1   Deleting an audit module
+
+[source]
+----
+asadmin> delete-audit-module sampleAuditModule
+Command delete-audit-module executed successfully
+----
+
+[[sthref599]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref600]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-audit-module.html#create-audit-module-1[`create-audit-module`(1)],
+link:list-audit-modules.html#list-audit-modules-1[`list-audit-modules`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-auth-realm.adoc b/docs/reference-manual/src/main/asciidoc/delete-auth-realm.adoc
new file mode 100644
index 0000000..64c9108
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-auth-realm.adoc
@@ -0,0 +1,99 @@
+type=page
+status=published
+title=delete-auth-realm
+next=delete-cluster.html
+prev=delete-audit-module.html
+~~~~~~
+
+= delete-auth-realm
+
+[[delete-auth-realm-1]][[GSRFM00066]][[delete-auth-realm]]
+
+== delete-auth-realm
+
+Removes the named authentication realm
+
+[[sthref601]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-auth-realm [--help]
+[--target target]
+auth_realm-name
+----
+
+[[sthref602]]
+
+=== Description
+
+The `delete-auth-realm` subcommand removes the named authentication
+realm. This subcommand is supported in remote mode only.
+
+[[sthref603]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Specifies the target on which you are deleting the authentication
+  realm. Valid values are
+
+  `server`;;
+    Deletes the realm for the default server instance `server` and is
+    the default value.
+  configuration_name;;
+    Deletes the realm for the named configuration.
+  cluster_name;;
+    Deletes the realm for every server instance in the cluster.
+  instance_name;;
+    Deletes the realm for a particular server instance.
+
+[[sthref604]]
+
+=== Operands
+
+auth_realm_name::
+  Name of the realm to be deleted.
+
+[[sthref605]]
+
+=== Examples
+
+[[GSRFM533]][[sthref606]]
+
+==== Example 1   Deleting an Authentication Realm
+
+This example deletes the authentication realm `db`.
+
+[source]
+----
+asadmin> delete-auth-realm db
+Command delete-auth-realm executed successfully
+----
+
+[[sthref607]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref608]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-auth-realm.html#create-auth-realm-1[`create-auth-realm`(1)],
+link:list-auth-realms.html#list-auth-realms-1[`list-auth-realms`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-cluster.adoc b/docs/reference-manual/src/main/asciidoc/delete-cluster.adoc
new file mode 100644
index 0000000..5678bf5
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-cluster.adoc
@@ -0,0 +1,112 @@
+type=page
+status=published
+title=delete-cluster
+next=delete-config.html
+prev=delete-auth-realm.html
+~~~~~~
+
+= delete-cluster
+
+[[delete-cluster-1]][[GSRFM00068]][[delete-cluster]]
+
+== delete-cluster
+
+Deletes a {productName} cluster
+
+[[sthref609]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-cluster [--help]
+[--autohadboverride={true|false}] [--node-agent=node-agent--name]
+cluster-name
+----
+
+[[sthref610]]
+
+=== Description
+
+The `delete-cluster` subcommand deletes a {productName} cluster.
+A cluster can be deleted only if the cluster contains no {productName}
+instances. If a cluster that you are deleting contains any instances,
+stop and delete the instances before deleting the cluster.
+
+If the cluster's named configuration was created automatically for the
+cluster and no other clusters or unclustered instances refer to the
+configuration, the configuration is deleted when the cluster is deleted.
+A configuration that is created automatically for a cluster is named
+cluster-name`-config`, where cluster-name is the name of the cluster.
+
+This command is supported in remote mode only.
+
+[[sthref611]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--autohadboverride`::
+  Do not specify this option. This option is retained for compatibility
+  with earlier releases. If you specify this option, a syntax error does
+  not occur. Instead, the subcommand runs successfully and displays a
+  warning message that the option is ignored.
+`--nodeagent`::
+  Do not specify this option. This option is retained for compatibility
+  with earlier releases. If you specify this option, a syntax error does
+  not occur. Instead, the subcommand runs successfully and displays a
+  warning message that the option is ignored.
+
+[[sthref612]]
+
+=== Operands
+
+cluster-name::
+  The name of the cluster to delete.
+
+[[sthref613]]
+
+=== Examples
+
+[[GSRFM535]][[sthref614]]
+
+==== Example 1   Deleting a {productName} Cluster
+
+This example deletes the {productName} cluster `adccluster`.
+
+[source]
+----
+asadmin> delete-cluster adccluster
+Command delete-cluster executed successfully.
+----
+
+[[sthref615]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref616]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-cluster.html#create-cluster-1[`create-cluster`(1)],
+link:delete-instance.html#delete-instance-1[`delete-instance`(1)],
+link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)],
+link:list-clusters.html#list-clusters-1[`list-clusters`(1)],
+link:start-cluster.html#start-cluster-1[`start-cluster`(1)],
+link:stop-instance.html#stop-instance-1[`stop-instance`(1)],
+link:stop-local-instance.html#stop-local-instance-1[`stop-local-instance`(1)],
+link:stop-cluster.html#stop-cluster-1[`stop-cluster`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-config.adoc b/docs/reference-manual/src/main/asciidoc/delete-config.adoc
new file mode 100644
index 0000000..a6530de
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-config.adoc
@@ -0,0 +1,95 @@
+type=page
+status=published
+title=delete-config
+next=delete-connector-connection-pool.html
+prev=delete-cluster.html
+~~~~~~
+
+= delete-config
+
+[[delete-config-1]][[GSRFM00069]][[delete-config]]
+
+== delete-config
+
+Deletes an existing named configuration
+
+[[sthref617]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-config [--help]
+configuration-name
+----
+
+[[sthref618]]
+
+=== Description
+
+The `delete-config` subcommand deletes an existing named configuration
+from the configuration of the domain administration server (DAS). You
+can delete a configuration only if no {productName} instances or
+clusters refer to the configuration. A standalone configuration is
+automatically deleted when the instance or cluster that refers to it is
+deleted. You cannot delete the `default-config` configuration that is
+copied to create standalone configurations.
+
+This subcommand is supported in remote mode only.
+
+[[sthref619]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref620]]
+
+=== Operands
+
+configuration-name::
+  The name of the configuration that you are deleting.
+
+[[sthref621]]
+
+=== Examples
+
+[[GSRFM536]][[sthref622]]
+
+==== Example 1   Deleting a Named Configuration
+
+This example deletes the named configuration `pmdconfig`.
+
+[source]
+----
+asadmin> delete-config pmdconfig
+
+Command delete-config executed successfully.
+----
+
+[[sthref623]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref624]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:copy-config.html#copy-config-1[`copy-config`(1)],
+link:list-configs.html#list-configs-1[`list-configs`(1)]
+
+link:configuration.html#configuration-5asc[`configuration`(5ASC)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-connector-connection-pool.adoc b/docs/reference-manual/src/main/asciidoc/delete-connector-connection-pool.adoc
new file mode 100644
index 0000000..f9ee992
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-connector-connection-pool.adoc
@@ -0,0 +1,102 @@
+type=page
+status=published
+title=delete-connector-connection-pool
+next=delete-connector-resource.html
+prev=delete-config.html
+~~~~~~
+
+= delete-connector-connection-pool
+
+[[delete-connector-connection-pool-1]][[GSRFM00070]][[delete-connector-connection-pool]]
+
+== delete-connector-connection-pool
+
+Removes the specified connector connection pool
+
+[[sthref625]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-connector-connection-pool [--help]
+[--target target]
+[--cascade={false|true}] poolname
+----
+
+[[sthref626]]
+
+=== Description
+
+The `delete-connector-connection-pool` subcommand removes the specified
+connector connection pool.
+
+This subcommand is supported in remote mode only.
+
+[[sthref627]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Do not specify this option. This option is retained for compatibility
+  with earlier releases. If you specify this option, a syntax error does
+  not occur. Instead, the subcommand runs successfully and displays a
+  warning message that the option is ignored.
+`--cascade`::
+  When set to true, all connector resources associated with the pool,
+  and the pool itself, are deleted. When set to false, the deletion of
+  pool fails if any resources are associated with the pool. The resource
+  must be deleted explicitly or the option must be set to true. Default
+  is false.
+
+[[sthref628]]
+
+=== Operands
+
+poolname::
+  The name of the connection pool to be removed.
+
+[[sthref629]]
+
+=== Examples
+
+[[GSRFM537]][[sthref630]]
+
+==== Example 1   Deleting a Connector Connection Pool
+
+This example deletes the connector connection pool named
+`jms/qConnPool`.
+
+[source]
+----
+asadmin> delete-connector-connection-pool
+--cascade=false jms/qConnPool
+Command delete-connector-connection-pool executed successfully
+----
+
+[[sthref631]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref632]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-connector-connection-pool.html#create-connector-connection-pool-1[`create-connector-connection-pool`(1)],
+link:list-connector-connection-pools.html#list-connector-connection-pools-1[`list-connector-connection-pools`(1)],
+link:ping-connection-pool.html#ping-connection-pool-1[`ping-connection-pool`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-connector-resource.adoc b/docs/reference-manual/src/main/asciidoc/delete-connector-resource.adoc
new file mode 100644
index 0000000..4a3a3bb
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-connector-resource.adoc
@@ -0,0 +1,126 @@
+type=page
+status=published
+title=delete-connector-resource
+next=delete-connector-security-map.html
+prev=delete-connector-connection-pool.html
+~~~~~~
+
+= delete-connector-resource
+
+[[delete-connector-resource-1]][[GSRFM00071]][[delete-connector-resource]]
+
+== delete-connector-resource
+
+Removes the connector resource with the specified JNDI name
+
+[[sthref633]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-connector-resource [--help]
+[--target target] jndi_name
+----
+
+[[sthref634]]
+
+=== Description
+
+The `delete-connector-resource` subcommand removes the connector
+resource with the specified JNDI name.
+
+This subcommand is supported in remote mode only.
+
+[[sthref635]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  This option specifies the target from which you want to remove the
+  connector resource. Valid targets are:
++
+[NOTE]
+====
+Resources are always created for a domain as a whole but are only
+active for targets for which a `<resource-ref>` has been created using
+the `--target` option when the resource was created. This means that
+deleting a resource only deletes the `<resource-ref>` element for the
+specified `--target`, and does not delete the resource from the domain
+as a whole unless `domain` is specified as the `--target` for the
+deletion.
+====
+
+  `server`;;
+    Deletes the connector resource from the default server instance.
+    This is the default value.
+  `domain`;;
+    Deletes the connector resource from the domain.
+  cluster_name;;
+    Deletes the connector resource from every server instance in the
+    cluster.
+  instance_name;;
+    Deletes the connector resource from a specified server instance.
+
+[[sthref636]]
+
+=== Operands
+
+jndi_name::
+  The JNDI name of this connector resource.
+
+[[sthref637]]
+
+=== Examples
+
+[[GSRFM538]][[sthref638]]
+
+==== Example 1   Deleting a Connector Resource
+
+This example deletes a connector resource named `jms/qConnFactory`.
+
+[source]
+----
+asadmin> delete-connector-resource jms/qConnFactory
+Command delete-connector-resource executed successfully
+----
+
+[[GSRFM539]][[sthref639]]
+
+==== Example 2   Using the delete-connector-resource subcommand
+
+This example shows the usage of this subcommand.
+
+[source]
+----
+asadmin> delete-connector-resource jms/qConnFactory
+Command delete-connector-resource executed successfully
+----
+
+Where `jms/qConnFactory` is the connector resource that is removed.
+
+[[sthref640]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref641]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-connector-resource.html#create-connector-resource-1[`create-connector-resource`(1)],
+link:list-connector-resources.html#list-connector-resources-1[`list-connector-resources`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-connector-security-map.adoc b/docs/reference-manual/src/main/asciidoc/delete-connector-security-map.adoc
new file mode 100644
index 0000000..c174d91
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-connector-security-map.adoc
@@ -0,0 +1,101 @@
+type=page
+status=published
+title=delete-connector-security-map
+next=delete-connector-work-security-map.html
+prev=delete-connector-resource.html
+~~~~~~
+
+= delete-connector-security-map
+
+[[delete-connector-security-map-1]][[GSRFM00072]][[delete-connector-security-map]]
+
+== delete-connector-security-map
+
+Deletes a security map for the specified connector connection pool
+
+[[sthref642]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-connector-security-map [--help]
+--poolname connector_connection_pool_name [--target target] mapname
+----
+
+[[sthref643]]
+
+=== Description
+
+The `delete-connector-security-map` subcommand deletes a security map
+for the specified connector connection pool.
+
+For this subcommand to succeed, you must have first created a connector
+connection pool using the `create-connector-connection-pool` subcommand.
+
+This subcommand is supported in remote mode only.
+
+[[sthref644]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--poolname`::
+  Specifies the name of the connector connection pool to which the
+  security map that is to be deleted belongs.
+`--target`::
+  Do not specify this option. This option is retained for compatibility
+  with earlier releases. If you specify this option, a syntax error does
+  not occur. Instead, the subcommand runs successfully and displays a
+  warning message that the option is ignored.
+
+[[sthref645]]
+
+=== Operands
+
+mapname::
+  Name of the security map to be deleted.
+
+[[sthref646]]
+
+=== Examples
+
+[[GSRFM540]][[sthref647]]
+
+==== Example 1   Deleting a Connector Security Map
+
+This example deletes `securityMap1` for the existing connection pool
+named `connector-pool1`.
+
+[source]
+----
+asadmin> delete-connector-security-map
+--poolname connector-pool1 securityMap1
+Command delete-connector-security-map executed successfully
+----
+
+[[sthref648]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref649]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-connector-security-map.html#create-connector-security-map-1[`create-connector-security-map`(1)],
+link:list-connector-security-maps.html#list-connector-security-maps-1[`list-connector-security-maps`(1)],
+link:update-connector-security-map.html#update-connector-security-map-1[`update-connector-security-map`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-connector-work-security-map.adoc b/docs/reference-manual/src/main/asciidoc/delete-connector-work-security-map.adoc
new file mode 100644
index 0000000..7b1d009
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-connector-work-security-map.adoc
@@ -0,0 +1,100 @@
+type=page
+status=published
+title=delete-connector-work-security-map
+next=delete-context-service.html
+prev=delete-connector-security-map.html
+~~~~~~
+
+= delete-connector-work-security-map
+
+[[delete-connector-work-security-map-1]][[GSRFM00073]][[delete-connector-work-security-map]]
+
+== delete-connector-work-security-map
+
+Deletes a work security map for the specified resource adapter
+
+[[sthref650]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-connector-work-security-map [--help]
+--raname raname
+mapname
+----
+
+[[sthref651]]
+
+=== Description
+
+The `delete-connector-work-security-map` subcommand deletes a security
+map associated with the specified resource adapter. For this subcommand
+to succeed, you must have first created and deployed the specified
+resource adapter.
+
+The enterprise information system (EIS) is any system that holds the
+data of an organization. It can be a mainframe, a messaging system, a
+database system, or an application.
+
+This subcommand is supported in remote mode only.
+
+[[sthref652]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--raname`::
+  Indicates the connector module name with which the work security map
+  is associated.
+
+[[sthref653]]
+
+=== Operands
+
+mapname::
+  The name of the work security map to be deleted.
+
+[[sthref654]]
+
+=== Examples
+
+[[GSRFM541]][[sthref655]]
+
+==== Example 1   Deleting a Connector Work Security Map
+
+This example deletes the work security map named
+`work_security_map_name` for the resource adapter named `ra_name`.
+
+[source]
+----
+asadmin delete-connector-work-security-map
+--raname ra_name work_security_map_name
+Command delete-connector-work-security-map executed successfully.
+----
+
+[[sthref656]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref657]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-connector-work-security-map.html#create-connector-work-security-map-1[`create-connector-work-security-map`(1)],
+link:list-connector-work-security-maps.html#list-connector-work-security-maps-1[`list-connector-work-security-maps`(1)],
+link:update-connector-work-security-map.html#update-connector-work-security-map-1[`update-connector-work-security-map`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-context-service.adoc b/docs/reference-manual/src/main/asciidoc/delete-context-service.adoc
new file mode 100644
index 0000000..7a9ff97
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-context-service.adoc
@@ -0,0 +1,104 @@
+type=page
+status=published
+title=delete-context-service
+next=delete-custom-resource.html
+prev=delete-connector-work-security-map.html
+~~~~~~
+
+= delete-context-service
+
+[[delete-context-service-1]][[GSRFM846]][[delete-context-service]]
+
+== delete-context-service
+
+Removes a context service resource with the specified JNDI name
+
+[[sthref658]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-context-service [--help]
+[--target target]
+context-service-name
+----
+
+[[sthref659]]
+
+=== Description
+
+The `delete-context-service` subcommand removes a context service
+resource with the specified JNDI name.
+
+This subcommand is supported in remote mode only.
+
+[[sthref660]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Specifies the target from which you are deleting the resource.
+  Valid targets are:
+
+  `server`;;
+    Deletes the resource from the default server instance. This is the
+    default value.
+  `domain`;;
+    Deletes the resource from the domain.
+  cluster-name;;
+    Deletes the resource from every server instance in the specified
+    cluster.
+  instance-name;;
+    Deletes the resource from the specified server instance.
+
+[[sthref661]]
+
+=== Operands
+
+context-service-name::
+  The JNDI name of the resource to be deleted.
+
+[[sthref662]]
+
+=== Examples
+
+[[GSRFM847]][[sthref663]]
+
+==== Example 1   Deleting a Context Service Resource
+
+This example deletes the context service resource named
+`concurrent/myContextService`.
+
+[source]
+----
+asadmin> delete-context-service concurrent/myContextService
+Context service concurrent/myContextService deleted successfully.
+Command delete-context-service executed successfully.
+----
+
+[[sthref664]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref665]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-context-service.html#create-context-service-1[`create-context-service`(1)],
+link:list-context-services.html#list-context-services-1[`list-context-services`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-custom-resource.adoc b/docs/reference-manual/src/main/asciidoc/delete-custom-resource.adoc
new file mode 100644
index 0000000..d93fdd5
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-custom-resource.adoc
@@ -0,0 +1,111 @@
+type=page
+status=published
+title=delete-custom-resource
+next=delete-domain.html
+prev=delete-context-service.html
+~~~~~~
+
+= delete-custom-resource
+
+[[delete-custom-resource-1]][[GSRFM00074]][[delete-custom-resource]]
+
+== delete-custom-resource
+
+Removes a custom resource
+
+[[sthref666]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-custom-resource [--help]
+[--target target] jndi-name
+----
+
+[[sthref667]]
+
+=== Description
+
+The `delete-custom-resource` subcommand removes a custom resource.
+
+This subcommand is supported in remote mode only.
+
+[[sthref668]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  This option helps specify the location of the custom resources that
+  you are deleting. Valid targets are server, domain, cluster, and
+  instance. The default is server.
++
+[NOTE]
+====
+Resources are always created for a domain as a whole but are only
+active for targets for which a `<resource-ref>` has been created using
+the `--target` option when the resource was created. This means that
+deleting a resource only deletes the `<resource-ref>` element for the
+specified `--target`, and does not delete the resource from the domain
+as a whole unless `domain` is specified as the `--target` for the
+deletion.
+====
+
+  `server`;;
+    Deletes the resource for the default server instance. This is the
+    default value.
+  `domain`;;
+    Deletes the resource for the domain.
+  cluster_name;;
+    Deletes the resource for every server instance in the cluster.
+  instance_name;;
+    Deletes the resource for a particular server instance.
+
+[[sthref669]]
+
+=== Operands
+
+jndi-name::
+  The JNDI name of this resource.
+
+[[sthref670]]
+
+=== Examples
+
+[[GSRFM542]][[sthref671]]
+
+==== Example 1   Deleting a Custom Resource
+
+This example deletes a custom resource named `mycustomresource`.
+
+[source]
+----
+asadmin> delete-custom-resource mycustomresource
+Command delete-custom-resource executed successfully.
+----
+
+[[sthref672]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref673]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-custom-resource.html#create-custom-resource-1[`create-custom-resource`(1)],
+link:list-custom-resources.html#list-custom-resources-1[`list-custom-resources`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-domain.adoc b/docs/reference-manual/src/main/asciidoc/delete-domain.adoc
new file mode 100644
index 0000000..fc816a6
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-domain.adoc
@@ -0,0 +1,110 @@
+type=page
+status=published
+title=delete-domain
+next=delete-file-user.html
+prev=delete-custom-resource.html
+~~~~~~
+
+= delete-domain
+
+[[delete-domain-1]][[GSRFM00075]][[delete-domain]]
+
+== delete-domain
+
+Deletes a domain
+
+[[sthref674]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-domain [--help]
+[--domaindir domaindir] domain-name
+----
+
+[[sthref675]]
+
+=== Description
+
+The `delete-domain` subcommand deletes the specified domain. The domain
+must already exist and must be stopped.
+
+This subcommand is supported in local mode only.
+
+[[sthref676]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--domaindir`::
+  The directory where the domain to be deleted is located. If specified,
+  the path must be accessible in the file system. If not specified, the
+  domain under the domain root directory, which defaults to
+  as-install``/domains``, is deleted.
+
+[[sthref677]]
+
+=== Operands
+
+domain-name::
+  The unique name of the domain you want to delete.
+
+[[sthref678]]
+
+=== Examples
+
+[[GSRFM543]][[sthref679]]
+
+==== Example 1   Deleting a Domain
+
+This example deletes a domain named `mydomain4` from the default domains
+directory.
+
+[source]
+----
+asadmin> delete-domain mydomain4
+Domain mydomain4 deleted.
+Command delete-domain executed successfully.
+----
+
+[[GSRFM544]][[sthref680]]
+
+==== Example 2   deleting a Domain From an Alternate Location
+
+This example deletes a domain named `sampleDomain` from the
+`/home/someuser/domains` directory.
+
+[source]
+----
+asadmin> delete-domain --domaindir /home/someuser/domains sampleDomain
+Domain sampleDomain deleted
+Command delete-domain executed successfully.
+----
+
+[[sthref681]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref682]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-domain.html#create-domain-1[`create-domain`(1)],
+link:list-domains.html#list-domains-1[`list-domains`(1)],
+link:start-domain.html#start-domain-1[`start-domain`(1)],
+link:stop-domain.html#stop-domain-1[`stop-domain`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-file-user.adoc b/docs/reference-manual/src/main/asciidoc/delete-file-user.adoc
new file mode 100644
index 0000000..23fe546
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-file-user.adoc
@@ -0,0 +1,106 @@
+type=page
+status=published
+title=delete-file-user
+next=delete-http.html
+prev=delete-domain.html
+~~~~~~
+
+= delete-file-user
+
+[[delete-file-user-1]][[GSRFM00076]][[delete-file-user]]
+
+== delete-file-user
+
+Removes the named file user
+
+[[sthref683]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-file-user [--help]
+[--authrealmname auth_realm_name]
+[--target target]
+username
+----
+
+[[sthref684]]
+
+=== Description
+
+The `delete-file-user` subcommand deletes the entry in the keyfile for
+the specified username.
+
+[[sthref685]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--authrealmname`::
+  The name of the authentication realm with which the user was created.
+`--target`::
+  This is the name of the target on which the command operates. The
+  valid targets are:
+
+  `server`;;
+    Deletes the file user on the default server instance. This is the
+    default value
+  `domain`;;
+    Deletes the file user in the domain.
+  cluster_name;;
+    Deletes the file user from every server instance in the cluster.
+  instance_name;;
+    Deletes the file user from a particular server instance.
+
+[[sthref686]]
+
+=== Operands
+
+username::
+  This is the name of file user to be deleted.
+
+[[sthref687]]
+
+=== Examples
+
+[[GSRFM545]][[sthref688]]
+
+==== Example 1   Deleting a User From a File Realm
+
+The following example shows how to delete user named `sample_user` from
+a file realm.
+
+[source]
+----
+asadmin> delete-file-user
+sample_user
+Command delete-file-user executed successfully
+----
+
+[[sthref689]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref690]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-file-user.html#create-file-user-1[`create-file-user`(1)],
+link:list-file-groups.html#list-file-groups-1[`list-file-groups`(1)],
+link:list-file-users.html#list-file-users-1[`list-file-users`(1)],
+link:update-file-user.html#update-file-user-1[`update-file-user`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-http-health-checker.adoc b/docs/reference-manual/src/main/asciidoc/delete-http-health-checker.adoc
new file mode 100644
index 0000000..ab6d934
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-http-health-checker.adoc
@@ -0,0 +1,102 @@
+type=page
+status=published
+title=delete-http-health-checker
+next=delete-http-lb.html
+prev=delete-http.html
+~~~~~~
+
+= delete-http-health-checker
+
+[[delete-http-health-checker-1]][[GSRFM00078]][[delete-http-health-checker]]
+
+== delete-http-health-checker
+
+Deletes the health-checker for a specified load balancer configuration
+
+[[sthref699]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-http-health-checker [--help]
+[--config config_name]
+ target
+----
+
+[[sthref700]]
+
+=== Description
+
+The `delete-http-health-checker` subcommand deletes the health checker
+from a load balancer configuration. A health checker is unique for the
+combination of target and load balancer configuration.
+
+[NOTE]
+====
+This subcommand is only applicable to {productName}. This
+subcommand is not applicable to {productName}.
+====
+
+[[sthref701]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--config`::
+  The load balancer configuration from which you delete the
+  health-checker.
+
+[[sthref702]]
+
+=== Operands
+
+target::
+  Specifies the target from which you are deleting the health checker. +
+  Valid values are:
+
+  * cluster_name - The name of a target cluster.
+  * instance_name - The name of a target server instance.
+
+[[sthref703]]
+
+=== Examples
+
+[[GSRFM547]][[sthref704]]
+
+==== Example 1   Deleting a Health Checker from a Load Balancer Configuration
+
+This example deletes the health checker for load balancer configuration
+named `mycluster-http-lb-config` on a cluster named `mycluster`.
+
+[source]
+----
+asadmin> delete-http-health-checker --user admin
+--passwordfile password.txt --config mycluster-http-lb-config mycluster
+
+Command delete-http-health-checker executed successfully.
+----
+
+[[sthref705]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref706]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-http-health-checker.html#create-http-health-checker-1[`create-http-health-checker`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-http-lb-config.adoc b/docs/reference-manual/src/main/asciidoc/delete-http-lb-config.adoc
new file mode 100644
index 0000000..3bb43d7
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-http-lb-config.adoc
@@ -0,0 +1,96 @@
+type=page
+status=published
+title=delete-http-lb-config
+next=delete-http-lb-ref.html
+prev=delete-http-lb.html
+~~~~~~
+
+= delete-http-lb-config
+
+[[delete-http-lb-config-1]][[GSRFM00080]][[delete-http-lb-config]]
+
+== delete-http-lb-config
+
+Deletes a load balancer configuration
+
+[[sthref715]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-http-lb-config [--help]
+config_name
+----
+
+[[sthref716]]
+
+=== Description
+
+Use the `delete-http-lb-config` subcommand to delete a load balancer
+configuration. The load balancer configuration must not reference any
+clusters or server instances enabled for load balancing. In addition,
+the load balancer configuration must not be referenced by any physical
+load balancers.
+
+[NOTE]
+====
+This subcommand is only applicable to {productName}. This
+subcommand is not applicable to {productName}.
+====
+
+[[sthref717]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref718]]
+
+=== Operands
+
+config_name::
+  The name of the load balancer configuration to delete. The
+  configuration must not reference any clusters or server instances
+  enabled for load balancing, or be used by any physical load balancers.
+
+[[sthref719]]
+
+=== Examples
+
+[[GSRFM549]][[sthref720]]
+
+==== Example 1   Deleting a Load Balancer Configuration
+
+This example deletes a load balancer configuration named `mylbconfig`
+
+[source]
+----
+asadmin> delete-http-lb-config mylbconfig
+Command delete-http-lb-config executed successfully.
+----
+
+[[sthref721]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref722]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-http-lb-config.html#create-http-lb-config-1[`create-http-lb-config`(1)],
+link:list-http-lb-configs.html#list-http-lb-configs-1[`list-http-lb-configs`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-http-lb-ref.adoc b/docs/reference-manual/src/main/asciidoc/delete-http-lb-ref.adoc
new file mode 100644
index 0000000..9a2b8af
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-http-lb-ref.adoc
@@ -0,0 +1,118 @@
+type=page
+status=published
+title=delete-http-lb-ref
+next=delete-http-listener.html
+prev=delete-http-lb-config.html
+~~~~~~
+
+= delete-http-lb-ref
+
+[[delete-http-lb-ref-1]][[GSRFM00081]][[delete-http-lb-ref]]
+
+== delete-http-lb-ref
+
+Deletes the cluster or server instance from a load balancer
+
+[[sthref723]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-http-lb-ref [--help]
+--config config_name | --lbname load_balancer_name
+[--force=false] target
+----
+
+[[sthref724]]
+
+=== Description
+
+Use the `delete-http-lb-ref` subcommand to remove a reference to a
+cluster or standalone server instance from a load balancer configuration
+or load balancer. So that you do not interrupt user requests, make sure
+the standalone server instance or all server instances in the cluster
+are disabled before you remove them from the load balancer
+configuration. If the `force` option is set to true, the references are
+deleted even if server instances or clusters are enabled.
+
+[NOTE]
+====
+This subcommand is only applicable to {productName}. This
+subcommand is not applicable to {productName}.
+====
+
+[[sthref725]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--config`::
+  Specifies which load balancer configuration to delete cluster and
+  server instance references from. +
+  Specify either a load balancer configuration or a load balancer.
+  Specifying both results in an error.
+`--lbname`::
+  Specifies the load balancer to delete cluster and server instance
+  references from. +
+  Specify either a load balancer configuration or a load balancer.
+  Specifying both results in an error.
+`--force`::
+  If `force` is set to true, then the references are deleted even if
+  there are currently enabled applications or instances. The default is
+  false.
+
+[[sthref726]]
+
+=== Operands
+
+target::
+  Specifies which cluster or instance to remove from the load balancer.
+  Valid values are:
+
+  * cluster_name- The name of a target cluster.
+  * instance_name- The name of a target server instance.
+
+[[sthref727]]
+
+=== Examples
+
+[[GSRFM550]][[sthref728]]
+
+==== Example 1   Deleting a Cluster Reference from a Load Balancer
+Configuration
+
+This example deletes the reference to cluster named `cluster2` from a
+load balancer configuration named `mycluster-http-lb-config`.
+
+[source]
+----
+asadmin> delete-http-lb-ref --config mycluster-http-lb-config cluster2
+
+Command delete-http-lb-ref executed successfully.
+----
+
+[[sthref729]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref730]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-http-lb-ref.html#create-http-lb-ref-1[`create-http-lb-ref`(1)],
+link:disable-http-lb-server.html#disable-http-lb-server-1[`disable-http-lb-server`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-http-lb.adoc b/docs/reference-manual/src/main/asciidoc/delete-http-lb.adoc
new file mode 100644
index 0000000..7969343
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-http-lb.adoc
@@ -0,0 +1,91 @@
+type=page
+status=published
+title=delete-http-lb
+next=delete-http-lb-config.html
+prev=delete-http-health-checker.html
+~~~~~~
+
+= delete-http-lb
+
+[[delete-http-lb-1]][[GSRFM00079]][[delete-http-lb]]
+
+== delete-http-lb
+
+Deletes a load balancer
+
+[[sthref707]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-http-lb [--help]
+load_balancer_name
+----
+
+[[sthref708]]
+
+=== Description
+
+Use the `delete-http-lb` subcommand to delete a physical load balancer.
+
+[NOTE]
+====
+This subcommand is only applicable to {productName}. This
+subcommand is not applicable to {productName}.
+====
+
+[[sthref709]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref710]]
+
+=== Operands
+
+load_balancer_name::
+  The name of the load balancer to be deleted.
+
+[[sthref711]]
+
+=== Examples
+
+[[GSRFM548]][[sthref712]]
+
+==== Example 1   Deleting a Load Balancer Configuration
+
+This example deletes the load balancer configuration named `mylb`.
+
+[source]
+----
+asadmin> delete-http-lb mylb
+
+Command delete-http-lb executed successfully.
+----
+
+[[sthref713]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref714]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-http-lb.html#create-http-lb-1[`create-http-lb`(1)],
+link:list-http-lbs.html#list-http-lbs-1[`list-http-lbs`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-http-listener.adoc b/docs/reference-manual/src/main/asciidoc/delete-http-listener.adoc
new file mode 100644
index 0000000..e5f860f
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-http-listener.adoc
@@ -0,0 +1,104 @@
+type=page
+status=published
+title=delete-http-listener
+next=delete-http-redirect.html
+prev=delete-http-lb-ref.html
+~~~~~~
+
+= delete-http-listener
+
+[[delete-http-listener-1]][[GSRFM00082]][[delete-http-listener]]
+
+== delete-http-listener
+
+Removes a network listener
+
+[[sthref731]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-http-listener [--help]
+[--target target]
+listener-id
+----
+
+[[sthref732]]
+
+=== Description
+
+The `delete-http-listener` subcommand removes the specified network
+listener.
+
+This subcommand is supported in remote mode only.
+
+[[sthref733]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Deletes the network listener only from the specified target. Valid
+  values are as follows:
+
+  `server`;;
+    Deletes the network listener from the default server instance. This
+    is the default value.
+  configuration-name;;
+    Deletes the network listener from the specified configuration.
+  cluster-name;;
+    Deletes the network listener from all server instances in the
+    specified cluster.
+  standalone-instance-name;;
+    Deletes the network listener from the specified standalone server
+    instance.
+
+[[sthref734]]
+
+=== Operands
+
+listener-id::
+  The unique identifier for the network listener to be deleted.
+
+[[sthref735]]
+
+=== Examples
+
+[[GSRFM551]][[sthref736]]
+
+==== Example 1   Using the delete-http-listener subcommand
+
+The following command deletes the network listener named
+`sampleListener`:
+
+[source]
+----
+asadmin> delete-http-listener sampleListener
+Command delete-http-listener executed successfully.
+----
+
+[[sthref737]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref738]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-http-listener.html#create-http-listener-1[`create-http-listener`(1)],
+link:list-http-listeners.html#list-http-listeners-1[`list-http-listeners`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-http-redirect.adoc b/docs/reference-manual/src/main/asciidoc/delete-http-redirect.adoc
new file mode 100644
index 0000000..bbb3ec3
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-http-redirect.adoc
@@ -0,0 +1,84 @@
+type=page
+status=published
+title=delete-http-redirect
+next=delete-iiop-listener.html
+prev=delete-http-listener.html
+~~~~~~
+
+= delete-http-redirect
+
+[[delete-http-redirect-1]][[GSRFM00083]][[delete-http-redirect]]
+
+== delete-http-redirect
+
+Removes an HTTP redirect
+
+[[sthref739]]
+
+=== Synopsis
+
+[source]
+----
+delete-http-redirect [--help]
+[--target target]
+protocol-name
+----
+
+[[sthref740]]
+
+=== Description
+
+The `delete-http-redirect` subcommand removes the specified HTTP
+redirect. This subcommand is supported in remote mode only.
+
+[[sthref741]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Deletes the HTTP redirect only from the specified target. Valid values
+  are as follows:
+
+  `server`;;
+    Deletes the HTTP redirect from the default server instance. This is
+    the default value.
+  configuration-name;;
+    Deletes the HTTP redirect from the specified configuration.
+  cluster-name;;
+    Deletes the HTTP redirect from all server instances in the specified
+    cluster.
+  standalone-instance-name;;
+    Deletes the HTTP redirect from the specified standalone server
+    instance.
+
+[[sthref742]]
+
+=== Operands
+
+protocol-name::
+  The name of the associated protocol.
+
+[[sthref743]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref744]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-http-redirect.html#create-http-redirect-1[`create-http-redirect`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-http.adoc b/docs/reference-manual/src/main/asciidoc/delete-http.adoc
new file mode 100644
index 0000000..f92940b
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-http.adoc
@@ -0,0 +1,101 @@
+type=page
+status=published
+title=delete-http
+next=delete-http-health-checker.html
+prev=delete-file-user.html
+~~~~~~
+
+= delete-http
+
+[[delete-http-1]][[GSRFM00077]][[delete-http]]
+
+== delete-http
+
+Removes HTTP parameters from a protocol
+
+[[sthref691]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-http [--help]
+[--target target]
+protocol-name
+----
+
+[[sthref692]]
+
+=== Description
+
+The `delete-http` subcommand removes the specified HTTP parameter set
+from a protocol. This subcommand is supported in remote mode only.
+
+[[sthref693]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Deletes the HTTP parameter set only from the specified target. Valid
+  values are as follows:
+
+  `server`;;
+    Deletes the HTTP parameter set from the default server instance.
+    This is the default value.
+  configuration-name;;
+    Deletes the HTTP parameter set from the specified configuration.
+  cluster-name;;
+    Deletes the HTTP parameter set from all server instances in the
+    specified cluster.
+  standalone-instance-name;;
+    Deletes the HTTP parameter set from the specified standalone server
+    instance.
+
+[[sthref694]]
+
+=== Operands
+
+protocol-name::
+  The name of the protocol from which to delete the HTTP parameter set.
+
+[[sthref695]]
+
+=== Examples
+
+[[GSRFM546]][[sthref696]]
+
+==== Example 1   Deleting an HTTP Parameter Set
+
+The following command deletes the HTTP parameter set from a protocol
+named `http-1`:
+
+[source]
+----
+asadmin> delete-http http-1
+Command delete-http executed successfully.
+----
+
+[[sthref697]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref698]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-http.html#create-http-1[`create-http`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-iiop-listener.adoc b/docs/reference-manual/src/main/asciidoc/delete-iiop-listener.adoc
new file mode 100644
index 0000000..ffe2d4b
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-iiop-listener.adoc
@@ -0,0 +1,98 @@
+type=page
+status=published
+title=delete-iiop-listener
+next=delete-instance.html
+prev=delete-http-redirect.html
+~~~~~~
+
+= delete-iiop-listener
+
+[[delete-iiop-listener-1]][[GSRFM00084]][[delete-iiop-listener]]
+
+== delete-iiop-listener
+
+Removes an IIOP listener
+
+[[sthref745]]
+
+=== Synopsis
+
+[source]
+----
+delete-iiop-listener [--help] [--target target] listener_id
+----
+
+[[sthref746]]
+
+=== Description
+
+The `delete-iiop-listener` subcommand removes the specified IIOP
+listener. This subcommand is supported in remote mode only.
+
+[[sthref747]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Specifies the target from which you are deleting the IIOP listener.
+  Valid values are
+
+  `server`;;
+    Deletes the listener from the default server instance `server` and
+    is the default value.
+  configuration_name;;
+    Deletes the listener from the named configuration.
+  cluster_name;;
+    Deletes the listener from every server instance in the cluster.
+  instance_name;;
+    Deletes the listener from a particular server instance.
+
+[[sthref748]]
+
+=== Operands
+
+listener_id::
+  The unique identifier for the IIOP listener to be deleted.
+
+[[sthref749]]
+
+=== Examples
+
+[[GSRFM552]][[sthref750]]
+
+==== Example 1   Deleting an IIOP Listener
+
+The following command deletes the IIOP listener named
+`sample_iiop_listener`:
+
+[source]
+----
+asadmin> delete-iiop-listener sample_iiop_listener
+Command delete-iiop-listener executed successfully.
+----
+
+[[sthref751]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref752]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-iiop-listener.html#create-iiop-listener-1[`create-iiop-listener`(1)],
+link:list-iiop-listeners.html#list-iiop-listeners-1[`list-iiop-listeners`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-instance.adoc b/docs/reference-manual/src/main/asciidoc/delete-instance.adoc
new file mode 100644
index 0000000..672bcc1
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-instance.adoc
@@ -0,0 +1,130 @@
+type=page
+status=published
+title=delete-instance
+next=delete-jacc-provider.html
+prev=delete-iiop-listener.html
+~~~~~~
+
+= delete-instance
+
+[[delete-instance-1]][[GSRFM00085]][[delete-instance]]
+
+== delete-instance
+
+Deletes a {productName} instance
+
+[[sthref753]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-instance [--help]
+instance-name
+----
+
+[[sthref754]]
+
+=== Description
+
+The `delete-instance` subcommand deletes a {productName} instance.
+This subcommand requires the Distributed Component Object Model (DCOM)
+remote protocol or secure shell (SSH) to be configured on the host where
+the domain administration server (DAS) is running and on the host that
+is represented by the node where the instance resides.
+
+[NOTE]
+====
+DCOM or SSH is not required if the instance resides on a node of type
+`CONFIG` that represents the local host. A node of type `CONFIG` is not
+enabled for remote communication over DCOM or SSH.
+====
+
+You may run this subcommand from any host that can contact the DAS.
+
+The subcommand can delete any {productName} instance, regardless of
+how the instance was created. For example, this subcommand can delete an
+instance that was created by using the
+link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)]
+subcommand.
+
+The instance that is being deleted must not be running. Otherwise, an
+error occurs.
+
+The subcommand deletes an instance by performing the following actions:
+
+* Removing the instance from the configuration of the domain
+  administration server (DAS)
+* Deleting the instance's files from file system
+
+If the instance that is being deleted is the only instance that is using
+the node directory, that directory is also removed.
+
+If a standalone instance is deleted, the instance's standalone
+configuration is also deleted. A standalone instance refers to a
+configuration that is named instance-name`-config` to which no other
+clusters or unclustered instances refer.
+
+This subcommand is supported in remote mode only.
+
+[[sthref755]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref756]]
+
+=== Operands
+
+instance-name::
+  The name of the instance to delete.
+
+[[sthref757]]
+
+=== Examples
+
+[[GSRFM553]][[sthref758]]
+
+==== Example 1   Deleting a {productName} Instance
+
+This example deletes the {productName} instance `pmdsainst`.
+
+[source]
+----
+asadmin> delete-instance pmdsainst
+
+Command delete-instance executed successfully.
+----
+
+[[sthref759]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref760]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-instance.html#create-instance-1[`create-instance`(1)],
+link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)],
+link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)],
+link:setup-ssh.html#setup-ssh-1[`setup-ssh`(1)],
+link:start-instance.html#start-instance-1[`start-instance`(1)],
+link:start-local-instance.html#start-local-instance-1[`start-local-instance`(1)],
+link:stop-instance.html#stop-instance-1[`stop-instance`(1)],
+link:stop-local-instance.html#stop-local-instance-1[`stop-local-instance`(1)],
+link:validate-dcom.html#validate-dcom-1[`validate-dcom`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-jacc-provider.adoc b/docs/reference-manual/src/main/asciidoc/delete-jacc-provider.adoc
new file mode 100644
index 0000000..26d778e
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-jacc-provider.adoc
@@ -0,0 +1,124 @@
+type=page
+status=published
+title=delete-jacc-provider
+next=delete-javamail-resource.html
+prev=delete-instance.html
+~~~~~~
+
+= delete-jacc-provider
+
+[[delete-jacc-provider-1]][[GSRFM00086]][[delete-jacc-provider]]
+
+== delete-jacc-provider
+
+Enables administrators to delete JACC providers defined for a domain
+
+[[sthref761]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-jacc-provider [--help]
+[--target target] jacc-provider-name
+----
+
+[[sthref762]]
+
+=== Description
+
+The `delete-jacc-provider` subcommand enables administrators to delete
+JACC providers defined for a domain. JACC providers are defined as
+`jacc-provider` elements in the `security-service` element in the
+domain's `domain.xml` file. JACC providers can be created using the
+{productName} Admin Console or the `create-jacc-provider`
+subcommand.
+
+The default {productName} installation includes two JACC providers,
+named `default` and `simple`. These default providers should not be
+deleted.
+
+The JACC provider used by{productName} for authorization is
+identified by the `jacc-provider` element of `security-service` in
+`domain.xml`. Therefore, if you delete the `jacc-provider` provider,
+make sure you change `jacc-provider` to the name of some other JACC
+provider that exists under `security-service`.
+
+If you change the `jacc-provider` element to point to a different JACC
+provider, you must restart {productName}.
+
+This subcommand is supported in remote mode only.
+
+[[sthref763]]
+
+=== Options
+
+If an option has a short option name, then the short option precedes the
+long option name. Short options have one dash whereas long options have
+two dashes.
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Specifies the target from which you are deleting the JACC provider.
+  The following values are valid:
+
+  `server`;;
+    Deletes the JACC provider on the default server instance. This is
+    the default value.
+  configuration_name;;
+    Deletes the JACC provider in the specified configuration.
+  cluster_name;;
+    Deletes the JACC provider on all server instances in the specified
+    cluster.
+  instance_name;;
+    Deletes the JACC provider on a specified server instance.
+
+[[sthref764]]
+
+=== Operands
+
+jacc-provider-name::
+  The name of the JACC provider to be deleted.
+
+[[sthref765]]
+
+=== Examples
+
+[[GSRFM554]][[sthref766]]
+
+==== Example 1   Deleting a JACC provider
+
+The following example shows how to delete a JACC provider named
+`testJACC` from the default domain.
+
+[source]
+----
+asadmin> delete-jacc-provider testJACC
+
+Command delete-jacc-provider executed successfully.
+----
+
+[[sthref767]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref768]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-jacc-provider.html#create-jacc-provider-1[`create-jacc-provider`(1)],
+link:list-jacc-providers.html#list-jacc-providers-1[`list-jacc-providers`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-javamail-resource.adoc b/docs/reference-manual/src/main/asciidoc/delete-javamail-resource.adoc
new file mode 100644
index 0000000..5c6c4c6
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-javamail-resource.adoc
@@ -0,0 +1,102 @@
+type=page
+status=published
+title=delete-javamail-resource
+next=delete-jdbc-connection-pool.html
+prev=delete-jacc-provider.html
+~~~~~~
+
+= delete-javamail-resource
+
+[[delete-javamail-resource-1]][[GSRFM00087]][[delete-javamail-resource]]
+
+== delete-javamail-resource
+
+Removes a JavaMail session resource
+
+[[sthref769]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-javamail-resource [--help]
+[--target target] jndi_name
+----
+
+[[sthref770]]
+
+=== Description
+
+The `delete-javamail-resource` subcommand removes the specified JavaMail
+session resource. Ensure that you remove all references to this resource
+before running this subcommand.
+
+This subcommand is supported in remote mode only.
+
+[[sthref771]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  This option specifies the target from which you are deleting the
+  JavaMail session resource. Valid values are:
+
+  `server`;;
+    Deletes the resource from the default server instance. This is the
+    default value.
+  `domain`;;
+    Deletes the resource from the domain.
+  cluster_name;;
+    Deletes the resource from every server instance in the cluster.
+  instance_name;;
+    Deletes the resource from a particular server instance.
+
+[[sthref772]]
+
+=== Operands
+
+jndi_name::
+  The JNDI name of the JavaMail session resource to be deleted.
+
+[[sthref773]]
+
+=== Examples
+
+[[GSRFM555]][[sthref774]]
+
+==== Example 1   Deleting a JavaMail Resource
+
+This example deletes the JavaMail session resource named
+`mail/MyMailSession`.
+
+[source]
+----
+asadmin> delete-javamail-resource mail/MyMailSession
+Command delete-javamail-resource executed successfully.
+----
+
+[[sthref775]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref776]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-javamail-resource.html#create-javamail-resource-1[`create-javamail-resource`(1)],
+link:list-javamail-resources.html#list-javamail-resources-1[`list-javamail-resources`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-jdbc-connection-pool.adoc b/docs/reference-manual/src/main/asciidoc/delete-jdbc-connection-pool.adoc
new file mode 100644
index 0000000..e2df718
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-jdbc-connection-pool.adoc
@@ -0,0 +1,100 @@
+type=page
+status=published
+title=delete-jdbc-connection-pool
+next=delete-jdbc-resource.html
+prev=delete-javamail-resource.html
+~~~~~~
+
+= delete-jdbc-connection-pool
+
+[[delete-jdbc-connection-pool-1]][[GSRFM00088]][[delete-jdbc-connection-pool]]
+
+== delete-jdbc-connection-pool
+
+Removes the specified JDBC connection pool
+
+[[sthref777]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-jdbc-connection-pool [--help]
+[--cascade={false|true}]
+[--target target]
+jdbc_connection_pool_id
+----
+
+[[sthref778]]
+
+=== Description
+
+The `delete-jdbc-connection-pool` subcommand deletes a JDBC connection
+pool. Before running this subcommand, all associations to the JDBC
+connection pool must be removed.
+
+This subcommand is supported in remote mode only.
+
+[[sthref779]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--cascade`::
+  If the option is set to true, all the JDBC resources associated with
+  the pool, apart from the pool itself, are deleted. When set to false,
+  the deletion of pool fails if any resources are associated with the
+  pool. Resources must be deleted explicitly or the option must be set
+  to true. The default value is false.
+`--target`::
+  Do not specify this option. This option is retained for compatibility
+  with earlier releases. If you specify this option, a syntax error does
+  not occur. Instead, the subcommand runs successfully and displays a
+  warning message that the option is ignored.
+
+[[sthref780]]
+
+=== Operands
+
+jdbc_connection_pool_id::
+  The name of the JDBC resource to be removed.
+
+[[sthref781]]
+
+=== Examples
+
+[[GSRFM556]][[sthref782]]
+
+==== Example 1   Deleting a JDBC Connection Pool
+
+This example deletes the `sample_derby_pool` JDBC connection pool.
+
+[source]
+----
+asadmin> delete-jdbc-connection-pool --cascade=false sample_derby_pool
+Command delete-jdbc-connection-pool executed correctly.
+----
+
+[[sthref783]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref784]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-jdbc-connection-pool.html#create-jdbc-connection-pool-1[`create-jdbc-connection-pool`(1)],link:list-jdbc-connection-pools.html#list-jdbc-connection-pools-1[`list-jdbc-connection-pools`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-jdbc-resource.adoc b/docs/reference-manual/src/main/asciidoc/delete-jdbc-resource.adoc
new file mode 100644
index 0000000..faa128e
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-jdbc-resource.adoc
@@ -0,0 +1,114 @@
+type=page
+status=published
+title=delete-jdbc-resource
+next=delete-jmsdest.html
+prev=delete-jdbc-connection-pool.html
+~~~~~~
+
+= delete-jdbc-resource
+
+[[delete-jdbc-resource-1]][[GSRFM00089]][[delete-jdbc-resource]]
+
+== delete-jdbc-resource
+
+Removes a JDBC resource with the specified JNDI name
+
+[[sthref785]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-jdbc-resource [--help]
+[--target target] jndi_name
+----
+
+[[sthref786]]
+
+=== Description
+
+The `delete-jdbc-resource` subcommand removes a JDBC resource. Ensure
+that all associations to the JDBC resource are removed before running
+this subcommand.
+
+This subcommand is supported in remote mode only.
+
+[[sthref787]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  This option helps specify the target from which you are removing the
+  JDBC resource. Valid targets are:
+
+  `server`;;
+    Removes the resource from the default server instance. This is the
+    default value.
+  `domain`;;
+    Removes the resource from the domain.
+  cluster_name;;
+    Removes the resource from every server instance in the cluster.
+  instance_name;;
+    Removes the resource from a particular server instance.
+
+
+[NOTE]
+====
+Resources are always created for a domain as a whole but are only active
+for targets for which a `<resource-ref>` has been created using the
+`--target` option when the resource was created. This means that
+deleting a resource only deletes the `<resource-ref>` element for the
+specified `--target`, and does not delete the resource from the domain
+as a whole unless `domain` is specified as the `--target` for the
+deletion.
+====
+
+
+[[sthref788]]
+
+=== Operands
+
+jndi_name::
+  The JNDI name of this JDBC resource to be removed.
+
+[[sthref789]]
+
+=== Examples
+
+[[GSRFM557]][[sthref790]]
+
+==== Example 1   Deleting a JDBC Resource
+
+The following example deletes the JDBC resource named `jdbc/DerbyPool`.
+
+[source]
+----
+asadmin> delete-jdbc-resource jdbc/DerbyPool
+Command delete-jdbc-resource executed successfully.
+----
+
+[[sthref791]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref792]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-jdbc-resource.html#create-jdbc-resource-1[`create-jdbc-resource`(1)],
+link:list-jdbc-resources.html#list-jdbc-resources-1[`list-jdbc-resources`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-jms-host.adoc b/docs/reference-manual/src/main/asciidoc/delete-jms-host.adoc
new file mode 100644
index 0000000..b2d22fa
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-jms-host.adoc
@@ -0,0 +1,106 @@
+type=page
+status=published
+title=delete-jms-host
+next=delete-jms-resource.html
+prev=delete-jmsdest.html
+~~~~~~
+
+= delete-jms-host
+
+[[delete-jms-host-1]][[GSRFM00091]][[delete-jms-host]]
+
+== delete-jms-host
+
+Removes a JMS host
+
+[[sthref801]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-jms-host [--help]
+[--target target]
+jms_host_name
+----
+
+[[sthref802]]
+
+=== Description
+
+The `delete-jms-host` subcommand removes the specified Java Message
+Service (JMS) host.
+
+This subcommand is supported in remote mode only. Remote `asadmin`
+subcommands require a running domain administration server (DAS).
+
+Deleting the default JMS host, named `default_JMS_host`, is not recommended.
+
+[[sthref803]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Deletes the JMS host only from the specified target. Valid values are
+  as follows:
+
+  `server`;;
+    Deletes the JMS host from the default server instance. This is the
+    default value.
+  configuration-name;;
+    Deletes the JMS host from the specified configuration.
+  cluster-name;;
+    Deletes the JMS host from every server instance in the specified
+    cluster.
+  instance-name;;
+    Deletes the JMS host from the specified server instance.
+
+[[sthref804]]
+
+=== Operands
+
+jms_host_name::
+  The name of the host to be deleted.
+
+[[sthref805]]
+
+=== Examples
+
+[[GSRFM559]][[sthref806]]
+
+==== Example 1   Deleting a JMS host
+
+The following subcommand deletes the JMS host named `MyNewHost`.
+
+[source]
+----
+asadmin> delete-jms-host MyNewHost
+Command delete-jms-host executed successfully.
+----
+
+[[sthref807]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref808]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-jms-host.html#create-jms-host-1[`create-jms-host`(1)],
+link:jms-ping.html#jms-ping-1[`jms-ping`(1)],
+link:list-jms-hosts.html#list-jms-hosts-1[`list-jms-hosts`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-jms-resource.adoc b/docs/reference-manual/src/main/asciidoc/delete-jms-resource.adoc
new file mode 100644
index 0000000..430a7c0
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-jms-resource.adoc
@@ -0,0 +1,117 @@
+type=page
+status=published
+title=delete-jms-resource
+next=delete-jndi-resource.html
+prev=delete-jms-host.html
+~~~~~~
+
+= delete-jms-resource
+
+[[delete-jms-resource-1]][[GSRFM00092]][[delete-jms-resource]]
+
+== delete-jms-resource
+
+Removes a JMS resource
+
+[[sthref809]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-jms-resource [--help]
+[--target target]
+jndi_name
+----
+
+[[sthref810]]
+
+=== Description
+
+The `delete-jms-resource` subcommand removes the specified Java Message
+Service (JMS) resource. Ensure that you remove all references to this
+resource before executing this subcommand.
+
+This subcommand is supported in remote mode only. Remote `asadmin`
+subcommands require a running domain administration server (DAS).
+
+[[sthref811]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Deletes the JMS resource only from the specified target. Valid values
+  are as follows:
++
+[NOTE]
+====
+Resources are always created for a domain as a whole but are only
+active for targets for which a `<resource-ref>` has been created using
+the `--target` option when the resource was created. This means that
+deleting a resource only deletes the `<resource-ref>` element for the
+specified `--target`, and does not delete the resource from the domain
+as a whole unless `domain` is specified as the `--target` for the
+deletion.
+====
+
+  `server`;;
+    Deletes the JMS resource from the default server instance. This is
+    the default value.
+  `domain`;;
+    Deletes the JMS resource from the domain.
+  cluster-name;;
+    Deletes the JMS resource from every server instance in the specified
+    cluster.
+  instance-name;;
+    Deletes the JMS resource from the specified server instance.
+
+[[sthref812]]
+
+=== Operands
+
+jndi_name::
+  The JNDI name of the JMS resource to be deleted.
+
+[[sthref813]]
+
+=== Examples
+
+[[GSRFM560]][[sthref814]]
+
+==== Example 1   Deleting a JMS destination resource
+
+The following subcommand deletes the JMS destination resource named
+`jms/MyQueue`.
+
+[source]
+----
+asadmin> delete-jms-resource jms/MyQueue
+Administered object jms/MyQueue deleted.
+Command delete-jms-resource executed successfully.
+----
+
+[[sthref815]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref816]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-jms-resource.html#create-jms-resource-1[`create-jms-resource`(1)],
+link:list-jms-resources.html#list-jms-resources-1[`list-jms-resources`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-jmsdest.adoc b/docs/reference-manual/src/main/asciidoc/delete-jmsdest.adoc
new file mode 100644
index 0000000..a83d400
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-jmsdest.adoc
@@ -0,0 +1,110 @@
+type=page
+status=published
+title=delete-jmsdest
+next=delete-jms-host.html
+prev=delete-jdbc-resource.html
+~~~~~~
+
+= delete-jmsdest
+
+[[delete-jmsdest-1]][[GSRFM00090]][[delete-jmsdest]]
+
+== delete-jmsdest
+
+Removes a JMS physical destination
+
+[[sthref793]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-jmsdest [--help]
+--desttype type
+[--target target]
+dest_name
+----
+
+[[sthref794]]
+
+=== Description
+
+The `delete-jmsdest` subcommand removes the specified Java Message
+Service (JMS) physical destination.
+
+This subcommand is supported in remote mode only. Remote `asadmin`
+subcommands require a running domain administration server (DAS).
+
+[[sthref795]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--desttype`::
+  The type of the JMS destination. Valid values are `topic` and `queue`.
+`--target`::
+  Deletes the physical destination only from the specified target.
+  Although the `delete-jmsdest` subcommand is related to resources, a
+  physical destination is deleted using the JMS Service (JMS Broker),
+  which is part of the configuration. A JMS Broker is configured in the
+  config section of `domain.xml`. Valid values are as follows:
+
+  `server`;;
+    Deletes the physical destination from the default server instance.
+    This is the default value.
+  configuration-name;;
+    Deletes the physical destination from the specified configuration.
+  cluster-name;;
+    Deletes the physical destination from every server instance in the
+    specified cluster.
+  instance-name;;
+    Creates the physical destination from the specified server instance.
+
+[[sthref796]]
+
+=== Operands
+
+dest_name::
+  The unique identifier of the JMS destination to be deleted.
+
+[[sthref797]]
+
+=== Examples
+
+[[GSRFM558]][[sthref798]]
+
+==== Example 1   Deleting a physical destination
+
+The following subcommand deletes the queue named `PhysicalQueue`.
+
+[source]
+----
+asadmin> delete-jmsdest --desttype queue PhysicalQueue
+Command delete-jmsdest executed successfully.
+----
+
+[[sthref799]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref800]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-jmsdest.html#create-jmsdest-1[`create-jmsdest`(1)],
+link:flush-jmsdest.html#flush-jmsdest-1[`flush-jmsdest`(1)],
+link:list-jmsdest.html#list-jmsdest-1[`list-jmsdest`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-jndi-resource.adoc b/docs/reference-manual/src/main/asciidoc/delete-jndi-resource.adoc
new file mode 100644
index 0000000..2cda1d5
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-jndi-resource.adoc
@@ -0,0 +1,112 @@
+type=page
+status=published
+title=delete-jndi-resource
+next=delete-jvm-options.html
+prev=delete-jms-resource.html
+~~~~~~
+
+= delete-jndi-resource
+
+[[delete-jndi-resource-1]][[GSRFM00093]][[delete-jndi-resource]]
+
+== delete-jndi-resource
+
+Removes a JNDI resource
+
+[[sthref817]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-jndi-resource [--help]
+[--target target] jndi_name
+----
+
+[[sthref818]]
+
+=== Description
+
+The `delete-jndi-resource` subcommand removes the specified JNDI
+resource. You must remove all associations to the JNDI resource before
+running this subcommand.
+
+This subcommand is supported in remote mode only.
+
+[[sthref819]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Valid targets are described below.
++
+[NOTE]
+====
+Resources are always created for a domain as a whole but are only
+active for targets for which a `<resource-ref>` has been created using
+the `--target` option when the resource was created. This means that
+deleting a resource only deletes the `<resource-ref>` element for the
+specified `--target`, and does not delete the resource from the domain
+as a whole unless `domain` is specified as the `--target` for the
+deletion.
+====
+
+  `server`;;
+    Deletes the resource from the default server instance. This is the
+    default value
+  `domain`;;
+    Deletes the resource from the domain
+  cluster_name;;
+    Deletes the resource for every server instance in the cluster
+  instance_name;;
+    Deletes the resource from the specified server instance
+
+[[sthref820]]
+
+=== Operands
+
+jndi_name::
+  The name of the JNDI resource to be removed.
+
+[[sthref821]]
+
+=== Examples
+
+[[GSRFM561]][[sthref822]]
+
+==== Example 1   Deleting a JNDI Resource
+
+This example removes an existing JNDI resource named
+`sample_jndi_resource`.
+
+[source]
+----
+asadmin> delete-jndi-resource sample_jndi_resource
+Command delete-jndi-resource executed successfully.
+----
+
+[[sthref823]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref824]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-jndi-resource.html#create-jndi-resource-1[`create-jndi-resource`(1)],
+link:list-jndi-resources.html#list-jndi-resources-1[`list-jndi-resources`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-jvm-options.adoc b/docs/reference-manual/src/main/asciidoc/delete-jvm-options.adoc
new file mode 100644
index 0000000..3ab2c99
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-jvm-options.adoc
@@ -0,0 +1,179 @@
+type=page
+status=published
+title=delete-jvm-options
+next=delete-lifecycle-module.html
+prev=delete-jndi-resource.html
+~~~~~~
+
+= delete-jvm-options
+
+[[delete-jvm-options-1]][[GSRFM00094]][[delete-jvm-options]]
+
+== delete-jvm-options
+
+Removes one or more options for the Java application launcher
+
+[[sthref825]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-jvm-options [--help]
+[--target target] [--profiler={true|false}]
+(jvm-option-name[=jvm-option-value]) [:jvm-option-name[=jvm-option-name]]*
+----
+
+[[sthref826]]
+
+=== Description
+
+The `delete-jvm-options` subcommand removes one or more command-line
+options for the Java application launcher. These options are removed
+from the Java configuration `java—config` element or the profiler
+`profiler` element of the `domain.xml` file. To see the Java application
+launcher options that can be deleted, use the
+link:list-jvm-options.html#list-jvm-options-1[`list-jvm-options`(1)]
+subcommand.
+
+The deletion of some options requires a server restart for changes to
+become effective. Other options are set immediately in the environment
+of the domain administration server (DAS) and do not require a restart.
+
+Whether a restart is required depends on the type of option.
+
+* Restart is not required for Java system properties whose names do not
+start with `-Djava.` or `-Djavax.` (including the trailing period). For
+example, restart is not required for the following Java system property:
++
+`-Denvironment=Production`
+* Restart is required for the following options:
+
+** Java system properties whose names start with `-Djava.` or `-Djavax.`
+(including the trailing period). For example:
++
+`-Djava.security.manager`
+
+** Startup parameters for the Java application launcher. For example:
++
+`-client`
++
+`-Xmx1024m`
++
+`-d64`
+
+To restart the DAS, use the
+link:restart-domain.html#restart-domain-1[`restart-domain`(1)] command.
+
+This subcommand is supported in remote mode only.
+
+[[sthref827]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Specifies the target from which you are removing Java application
+  launcher options. Valid values are as follows:
+
+  `server`;;
+    Specifies the DAS (default).
+  instance-name;;
+    Specifies a {productName} instance.
+  cluster-name;;
+    Specifies a cluster.
+  configuration-name;;
+    Specifies a named configuration.
+
+`--profiler`::
+  Indicates whether the Java application launcher options are for the
+  profiler. The option must have been set for a profiler for this option
+  to be true.
+
+[[sthref828]]
+
+=== Operands
+
+jvm-option-name::
+  One or more options delimited by a colon (:). The format of the
+  operand depends on the following:
+
+  * If the option has a name and a value, the format is
+  option-name=value.
+  * If the option has only a name, the format is option-name. For
+  example, `-Xmx2048m`.
+
++
+[NOTE]
+====
+If an option name or option value contains a colon, the backslash
+(`\`) must be used to escape the colon in the name or value. Other
+characters might also require an escape character. For more
+information about escape characters in subcommand options, see the
+link:asadmin.html#asadmin-1m[`asadmin`(1M)] man page.
+====
+
+
+[[sthref829]]
+
+=== Examples
+
+[[GSRFM562]][[sthref830]]
+
+==== Example 1   Deleting Java Application Launcher Options
+
+This example removes multiple Java application launcher options.
+
+[source]
+----
+asadmin> delete-jvm-options -Doption1=value1
+"-Doption1=value1:-Doption2=value2"
+Command delete-jvm-options executed successfully
+----
+
+[[GSRFM563]][[sthref831]]
+
+==== Example 2   Deleting a Java Application Launcher Option From the Profiler
+
+This example removes a Java application launcher startup parameter for
+the profiler.
+
+[source]
+----
+asadmin> delete-jvm-options --profiler=true -XX:MaxPermSize=192m
+Command delete-jvm-options executed successfully.
+----
+
+[[sthref832]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref833]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-jvm-options.html#create-jvm-options-1[`create-jvm-options`(1)],
+link:list-jvm-options.html#list-jvm-options-1[`list-jvm-options`(1)],
+link:restart-domain.html#restart-domain-1[`restart-domain`(1)]
+
+For more information about the Java application launcher, see the
+reference page for the operating system that you are using:
+
+* Oracle Solaris and Linux: java - the Java application launcher
+(`http://java.sun.com/javase/7/docs/technotes/tools/solaris/java.html`)
+* Windows: java - the Java application launcher
+(`http://java.sun.com/javase/7/docs/technotes/tools/windows/java.html`)
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-lifecycle-module.adoc b/docs/reference-manual/src/main/asciidoc/delete-lifecycle-module.adoc
new file mode 100644
index 0000000..6bfed2e
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-lifecycle-module.adoc
@@ -0,0 +1,99 @@
+type=page
+status=published
+title=delete-lifecycle-module
+next=delete-local-instance.html
+prev=delete-jvm-options.html
+~~~~~~
+
+= delete-lifecycle-module
+
+[[delete-lifecycle-module-1]][[GSRFM00095]][[delete-lifecycle-module]]
+
+== delete-lifecycle-module
+
+Removes the lifecycle module
+
+[[sthref834]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-lifecycle-module [--help]
+[--target target] module_name
+----
+
+[[sthref835]]
+
+=== Description
+
+The `delete-lifecycle-module` subcommand removes a lifecycle module. A
+lifecycle module provides a means of running a short or long duration
+Java-based task at a specific stage in the server life cycle. This
+subcommand is supported in remote mode only.
+
+[[sthref836]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Indicates the location where the lifecycle module is to be deleted.
+  Valid values are
+
+  * `server`- Specifies the default server instance as the target for
+  deleting the lifecycle module. `server` is the name of the default
+  server instance and is the default value for this option.
+  * cluster_name- Specifies a particular cluster as the target for
+  deleting the lifecycle module.
+  * instance_name- Specifies a particular server instance as the target
+  for deleting the lifecycle module.
+
+[[sthref837]]
+
+=== Operands
+
+module_name::
+  This operand is a unique identifier for the deployed server lifecycle
+  event listener module.
+
+[[sthref838]]
+
+=== Examples
+
+[[GSRFM564]][[sthref839]]
+
+==== Example 1   Deleting a Lifecycle Module
+
+The following example deletes a lifecycle module named `customSetup`.
+
+[source]
+----
+asadmin> delete-lifecycle-module customSetup
+Command delete-lifecycle-module executed successfully
+----
+
+[[sthref840]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref841]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-lifecycle-module.html#create-lifecycle-module-1[`create-lifecycle-module`(1)],
+link:list-lifecycle-modules.html#list-lifecycle-modules-1[`list-lifecycle-modules`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-local-instance.adoc b/docs/reference-manual/src/main/asciidoc/delete-local-instance.adoc
new file mode 100644
index 0000000..f8554e5
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-local-instance.adoc
@@ -0,0 +1,140 @@
+type=page
+status=published
+title=delete-local-instance
+next=delete-managed-executor-service.html
+prev=delete-lifecycle-module.html
+~~~~~~
+
+= delete-local-instance
+
+[[delete-local-instance-1]][[GSRFM00096]][[delete-local-instance]]
+
+== delete-local-instance
+
+Deletes a {productName} instance on the machine where the subcommand is run
+
+[[sthref842]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-local-instance [--help]
+[--nodedir node-dir] [--node node-name]
+[instance-name]
+----
+
+[[sthref843]]
+
+=== Description
+
+The `delete-local-instance` subcommand deletes a {productName}
+instance on the machine where the subcommand is run. This subcommand
+does not require the Distributed Component Object Model (DCOM) remote
+protocol or secure shell (SSH) to be configured. You must run this
+command from the machine where the instance resides.
+
+The subcommand can delete any {productName} instance, regardless of
+how the instance was created. For example, this subcommand can delete an
+instance that was created by using the
+link:create-instance.html#create-instance-1[`create-instance`(1)]
+subcommand.
+
+The instance that is being deleted must not be running. Otherwise, an
+error occurs.
+
+The subcommand deletes an instance by performing the following actions:
+
+* Removing the instance from the configuration of the domain
+  administration server (DAS)
+* Deleting the instance's files from file system
+
+If the instance that is being deleted is the only instance that is using
+the node directory, that directory is also removed.
+
+If a standalone instance is deleted, the instance's standalone
+configuration is also deleted. A standalone instance refers to a
+configuration that is named instance-name`-config` to which no other
+clusters or unclustered instances refer.
+
+The `delete-local-instance` subcommand does not contact the DAS to
+determine the node on which the instance resides. To determine the node
+on which the instance resides, the subcommand searches the directory
+that contains the node directories. If multiple node directories exist,
+the node must be specified as an option of the subcommand.
+
+If no operand is specified and only one instance resides on the
+specified node, the subcommand deletes the instance. If no operand is
+specified and multiple instances reside on the node, an error occurs.
+
+This subcommand is supported in remote mode only.
+
+[[sthref844]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--nodedir`::
+  Specifies the directory that contains the instance's node directory.
+  The instance's files are stored in the instance's node directory. The
+  default is as-install``/nodes``.
+`--node`::
+  Specifies the node on which the instance resides. This option may be
+  omitted only if the directory that the `--nodedir` option specifies
+  contains only one node directory. Otherwise, this option is required.
+
+[[sthref845]]
+
+=== Operands
+
+instance-name::
+  The name of the instance to delete. This operand may be omitted if
+  only one instance resides on the specified node. Otherwise, this
+  operand is required.
+
+[[sthref846]]
+
+=== Examples
+
+[[GSRFM565]][[sthref847]]
+
+==== Example 1   Deleting an Instance
+
+This example deletes the instance `pmdsainst`.
+
+[source]
+----
+asadmin> delete-local-instance pmdsainst
+
+Command delete-local-instance executed successfully.
+----
+
+[[sthref848]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref849]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-instance.html#create-instance-1[`create-instance`(1)],
+link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)],
+link:delete-instance.html#delete-instance-1[`delete-instance`(1)],
+link:start-instance.html#start-instance-1[`start-instance`(1)],
+link:start-local-instance.html#start-local-instance-1[`start-local-instance`(1)],
+link:stop-instance.html#stop-instance-1[`stop-instance`(1)],
+link:stop-local-instance.html#stop-local-instance-1[`stop-local-instance`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-managed-executor-service.adoc b/docs/reference-manual/src/main/asciidoc/delete-managed-executor-service.adoc
new file mode 100644
index 0000000..488dced
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-managed-executor-service.adoc
@@ -0,0 +1,104 @@
+type=page
+status=published
+title=delete-managed-executor-service
+next=delete-managed-scheduled-executor-service.html
+prev=delete-local-instance.html
+~~~~~~
+
+= delete-managed-executor-service
+
+[[delete-managed-executor-service-1]][[GSRFM848]][[delete-managed-executor-service]]
+
+== delete-managed-executor-service
+
+Removes a managed executor service resource with the specified JNDI name
+
+[[sthref850]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-managed-executor-service [--help]
+[--target target]
+managed_executor_service_name
+----
+
+[[sthref851]]
+
+=== Description
+
+The `delete-managed-executor-service` subcommand removes a managed
+executor service resource with the specified JNDI name.
+
+This subcommand is supported in remote mode only.
+
+[[sthref852]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Specifies the target from which you are deleting the resource. Valid
+  targets are:
+
+  `server`;;
+    Deletes the resource from the default server instance. This is the
+    default value.
+  `domain`;;
+    Deletes the resource from the domain.
+  cluster_name;;
+    Deletes the resource from every server instance in the specified
+    cluster.
+  instance_name;;
+    Deletes the resource from the specified server instance.
+
+[[sthref853]]
+
+=== Operands
+
+managed_executor_service_name::
+  The JNDI name of the resource to be deleted.
+
+[[sthref854]]
+
+=== Examples
+
+[[GSRFM849]][[sthref855]]
+
+==== Example 1   Deleting a Managed Executor Service Resource
+
+This example deletes the managed executor service resource named
+`concurrent/myExecutor`.
+
+[source]
+----
+asadmin> delete-managed-executor-service concurrent/myExecutor
+Managed executor service concurrent/myExecutor deleted successfully.
+Command delete-managed-executor-service executed successfully.
+----
+
+[[sthref856]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref857]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-managed-executor-service.html#create-managed-executor-service-1[`create-managed-executor-service`(1)],
+link:list-managed-executor-services.html#list-managed-executor-services-1[`list-managed-executor-services`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-managed-scheduled-executor-service.adoc b/docs/reference-manual/src/main/asciidoc/delete-managed-scheduled-executor-service.adoc
new file mode 100644
index 0000000..4a45426
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-managed-scheduled-executor-service.adoc
@@ -0,0 +1,106 @@
+type=page
+status=published
+title=delete-managed-scheduled-executor-service
+next=delete-managed-thread-factory.html
+prev=delete-managed-executor-service.html
+~~~~~~
+
+= delete-managed-scheduled-executor-service
+
+[[delete-managed-scheduled-executor-service-1]][[GSRFM850]][[delete-managed-scheduled-executor-service]]
+
+== delete-managed-scheduled-executor-service
+
+Removes a managed scheduled executor service resource with the specified
+JNDI name
+
+[[sthref858]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-managed-scheduled-executor-service [--help]
+[--target target]
+managed_scheduled_executor_service_name
+----
+
+[[sthref859]]
+
+=== Description
+
+The `delete-managed-scheduled-executor-service` subcommand removes a
+managed scheduled executor service resource with the specified JNDI
+name.
+
+This subcommand is supported in remote mode only.
+
+[[sthref860]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Specifies the target from which you are deleting the resource. Valid
+  targets are:
+
+  `server`;;
+    Deletes the resource from the default server instance. This is the
+    default value.
+  `domain`;;
+    Deletes the resource from the domain.
+  cluster_name;;
+    Deletes the resource from every server instance in the specified
+    cluster.
+  instance_name;;
+    Deletes the resource from the specified server instance.
+
+[[sthref861]]
+
+=== Operands
+
+managed_scheduled_executor_service_name::
+  The JNDI name of the resource to be deleted.
+
+[[sthref862]]
+
+=== Examples
+
+[[GSRFM851]][[sthref863]]
+
+==== Example 1   Deleting a Managed Scheduled Executor Service Resource
+
+This example deletes the managed scheduled executor service resource
+named `concurrent/myScheduledExecutor`.
+
+[source]
+----
+asadmin> delete-managed-scheduled-executor-service concurrent/myScheduledExecutor
+Managed scheduled executor service concurrent/myScheduledExecutor deleted successfully.
+Command delete-managed-scheduled-executor-service executed successfully.
+----
+
+[[sthref864]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref865]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-managed-scheduled-executor-service.html#create-managed-scheduled-executor-service-1[`create-managed-scheduled-executor-service`(1)],
+link:list-managed-scheduled-executor-services.html#list-managed-scheduled-executor-services-1[`list-managed-scheduled-executor-services`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-managed-thread-factory.adoc b/docs/reference-manual/src/main/asciidoc/delete-managed-thread-factory.adoc
new file mode 100644
index 0000000..b42d02a
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-managed-thread-factory.adoc
@@ -0,0 +1,104 @@
+type=page
+status=published
+title=delete-managed-thread-factory
+next=delete-message-security-provider.html
+prev=delete-managed-scheduled-executor-service.html
+~~~~~~
+
+= delete-managed-thread-factory
+
+[[delete-managed-thread-factory-1]][[GSRFM852]][[delete-managed-thread-factory]]
+
+== delete-managed-thread-factory
+
+Removes a managed thread factory resource with the specified JNDI name
+
+[[sthref866]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-managed-thread-factory [--help]
+[--target target]
+managed_thread_factory_name
+----
+
+[[sthref867]]
+
+=== Description
+
+The `delete-managed-thread-factory` subcommand removes a managed thread
+factory resource with the specified JNDI name.
+
+This subcommand is supported in remote mode only.
+
+[[sthref868]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Specifies the target from which you are deleting the resource. Valid
+  targets are:
+
+  `server`;;
+    Deletes the resource from the default server instance. This is the
+    default value.
+  `domain`;;
+    Deletes the resource from the domain.
+  cluster_name;;
+    Deletes the resource from every server instance in the specified
+    cluster.
+  instance_name;;
+    Deletes the resource from the specified server instance.
+
+[[sthref869]]
+
+=== Operands
+
+managed_thread_factory_name::
+  The JNDI name of the resource to be deleted.
+
+[[sthref870]]
+
+=== Examples
+
+[[GSRFM853]][[sthref871]]
+
+==== Example 1   Deleting a Managed Thread Factory Resource
+
+This example deletes the managed thread factory resource named
+`concurrent/myThreadFactory`.
+
+[source]
+----
+asadmin> delete-managed-thread-factory concurrent/myThreadFactory
+Managed thread factory concurrent/myThreadFactory deleted successfully.
+Command delete-managed-thread-factory executed successfully.
+----
+
+[[sthref872]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref873]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-managed-thread-factory.html#create-managed-thread-factory-1[`create-managed-thread-factory`(1)],
+link:list-managed-thread-factories.html#list-managed-thread-factories-1[`list-managed-thread-factories`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-message-security-provider.adoc b/docs/reference-manual/src/main/asciidoc/delete-message-security-provider.adoc
new file mode 100644
index 0000000..6631aec
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-message-security-provider.adoc
@@ -0,0 +1,124 @@
+type=page
+status=published
+title=delete-message-security-provider
+next=delete-module-config.html
+prev=delete-managed-thread-factory.html
+~~~~~~
+
+= delete-message-security-provider
+
+[[delete-message-security-provider-1]][[GSRFM00097]][[delete-message-security-provider]]
+
+== delete-message-security-provider
+
+Enables administrators to delete a message security provider
+
+[[sthref874]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-message-security-provider [--help]
+[--target target]
+--layer message_layer
+provider_name
+----
+
+[[sthref875]]
+
+=== Description
+
+The `delete-message-security-provider` subcommand enables administrators
+to delete a message security provider.
+
+In terms of what happens when this subcommand is run, the
+`provider-config` sub-element for the given message layer
+(`message-security-config` element of `domain.xml` is deleted. The
+`domain.xml` file specifies parameters and properties to the
+{productName}). The options specified in the list below apply to
+attributes within the `message-security-config` and `provider-config`
+sub-elements of the `domain.xml` file.
+
+If the message-layer (`message-security-config` attribute) does not
+exist, it is created, and then the `provider-config` is created under
+it.
+
+This command is supported in remote mode only.
+
+[[sthref876]]
+
+=== Options
+
+If an option has a short option name, then the short option precedes the
+long option name. Short options have one dash whereas long options have
+two dashes.
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Specifies the target from which you are deleting the message security
+  provider. Valid values are
+
+  `server`;;
+    Deletes the message security provider from the default server
+    instance `server` and is the default value
+  `domain`;;
+    Deletes the message security provider from the domain.
+  cluster_name;;
+    Deletes the message security provider from every server instance in the cluster.
+  instance_name;;
+    Deletes the message security provider from a particular sever instance.
+
+`--layer`::
+  The message-layer from which the provider has to be deleted. The
+  default value is `HttpServlet`.
+
+[[sthref877]]
+
+=== Operands
+
+provider_name::
+  The name of the provider used to reference the `provider-config`
+  element.
+
+[[sthref878]]
+
+=== Examples
+
+[[GSRFM566]][[sthref879]]
+
+==== Example 1   Deleting a message security provider
+
+The following example shows how to delete a message security provider
+for a client.
+
+[source]
+----
+asadmin> delete-message-security-provider
+--layer SOAP mySecurityProvider
+----
+
+[[sthref880]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref881]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-message-security-provider.html#create-message-security-provider-1[`create-message-security-provider`(1)],
+link:list-message-security-providers.html#list-message-security-providers-1[`list-message-security-providers`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-module-config.adoc b/docs/reference-manual/src/main/asciidoc/delete-module-config.adoc
new file mode 100644
index 0000000..79edbbf
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-module-config.adoc
@@ -0,0 +1,104 @@
+type=page
+status=published
+title=delete-module-config
+next=delete-network-listener.html
+prev=delete-message-security-provider.html
+~~~~~~
+
+= delete-module-config
+
+[[delete-module-config-1]][[GSRFM854]][[delete-module-config]]
+
+== delete-module-config
+
+Removes the configuration of a module from `domain.xml`
+
+[[sthref882]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-module-config [--help]
+[--target target]
+service_name
+----
+
+[[sthref883]]
+
+=== Description
+
+The `delete-module-config` subcommand removes the configuration of a
+module from `domain.xml` and causes the module to use the default
+configuration included in the module.
+
+This subcommand is supported in remote mode only.
+
+[[sthref884]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Specifies the target from which the configuration is to be deleted.
+  Possible values are as follows:
+
+  `server`;;
+    Deletes the configuration from the default server instance. This is
+    the default value.
+  `domain`;;
+    Deletes the configuration from the default domain.
+  cluster-name;;
+    Deletes the configuration from every server instance in the
+    specified cluster.
+  instance-name;;
+    Deletes the configuration from the specified instance.
+
+[[sthref885]]
+
+=== Operands
+
+service_name::
+  The name of the module for which configuration is to be removed.
+
+[[sthref886]]
+
+=== Examples
+
+[[GSRFM855]][[sthref887]]
+
+==== Example 1   Deleting a Default Configuration From domain.xml
+
+This example deletes the configuration of the web container module from
+`domain1` in `server-config` (the default configuration).
+
+[source]
+----
+asadmin> delete-module-config web-container
+Command delete-module-config executed successfully.
+----
+
+[[sthref888]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref889]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-module-config.html#create-module-config-1[`create-module-config`(1)],
+link:get-active-module-config.html#get-active-module-config-1[`get-active-module-config`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-network-listener.adoc b/docs/reference-manual/src/main/asciidoc/delete-network-listener.adoc
new file mode 100644
index 0000000..593cec9
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-network-listener.adoc
@@ -0,0 +1,102 @@
+type=page
+status=published
+title=delete-network-listener
+next=delete-node-config.html
+prev=delete-module-config.html
+~~~~~~
+
+= delete-network-listener
+
+[[delete-network-listener-1]][[GSRFM00098]][[delete-network-listener]]
+
+== delete-network-listener
+
+Removes a network listener
+
+[[sthref890]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-network-listener [--help]
+[--target target]
+listener-name
+----
+
+[[sthref891]]
+
+=== Description
+
+The `delete-network-listener` subcommand removes the specified network
+listener. This subcommand is supported in remote mode only.
+
+[[sthref892]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Deletes the network listener only from the specified target. Valid
+  values are as follows:
+
+  `server`;;
+    Deletes the network listener from the default server instance. This
+    is the default value.
+  configuration-name;;
+    Deletes the network listener from the specified configuration.
+  cluster-name;;
+    Deletes the network listener from all server instances in the
+    specified cluster.
+  standalone-instance-name;;
+    Deletes the network listener from the specified standalone server
+    instance.
+
+[[sthref893]]
+
+=== Operands
+
+listener-name::
+  The name of the network listener to be deleted.
+
+[[sthref894]]
+
+=== Examples
+
+[[GSRFM567]][[sthref895]]
+
+==== Example 1   Deleting a Network Listener
+
+The following command deletes the network listener named
+`sampleListener`:
+
+[source]
+----
+asadmin> delete-network-listener sampleListener
+Command delete-network-listener executed successfully.
+----
+
+[[sthref896]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref897]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-network-listener.html#create-network-listener-1[`create-network-listener`(1)],
+link:list-network-listeners.html#list-network-listeners-1[`list-network-listeners`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-node-config.adoc b/docs/reference-manual/src/main/asciidoc/delete-node-config.adoc
new file mode 100644
index 0000000..d7df10b
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-node-config.adoc
@@ -0,0 +1,133 @@
+type=page
+status=published
+title=delete-node-config
+next=delete-node-dcom.html
+prev=delete-network-listener.html
+~~~~~~
+
+= delete-node-config
+
+[[delete-node-config-1]][[GSRFM00099]][[delete-node-config]]
+
+== delete-node-config
+
+Deletes a node that is not enabled for remote communication
+
+[[sthref898]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-node-config [--help]
+node-name
+----
+
+[[sthref899]]
+
+=== Description
+
+The `delete-node-config` subcommand deletes a node that is not enabled
+for remote communication from the domain. This subcommand does not
+require the Distributed Component Object Model (DCOM) remote protocol or
+secure shell (SSH) to be configured.
+
+This subcommand can delete only a node that is not enabled for remote
+communication.
+The subcommand for deleting other types of nodes depends
+on the type of the node:
+
+* A node that is enabled for remote communication over DCOM must be
+  deleted by using the
+  link:delete-node-dcom.html#delete-node-dcom-1[`delete-node-dcom`(1)] subcommand.
+
+* A node that is enabled for remote communication over SSH must be
+  deleted by using the
+  link:delete-node-ssh.html#delete-node-ssh-1[`delete-node-ssh`(1)] subcommand.
+
+To determine whether a node is enabled for remote communication, use the
+link:list-nodes.html#list-nodes-1[`list-nodes`(1)] subcommand.
+
+No {productName} instances must reside on the node that is being deleted.
+Otherwise, the subcommand fails. Before running this
+subcommand, delete any instances that reside on the node by using, for
+example, the link:delete-instance.html#delete-instance-1[`delete-instance`(1)]
+subcommand or the
+link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)] subcommand.
+
+[NOTE]
+====
+The predefined node ``localhost-``domain cannot be deleted.
+====
+
+This subcommand is supported in remote mode only.
+
+[[sthref900]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref901]]
+
+=== Operands
+
+node-name::
+  The name of the node to delete. The node must not be enabled for
+  communication over DCOM or SSH. Otherwise, an error occurs.
+
+[[sthref902]]
+
+=== Examples
+
+[[GSRFM568]][[sthref903]]
+
+==== Example 1   Deleting a Node That Is Not Enabled for Remote Communication
+
+This example deletes the node `sj03`, which is not enabled for remote
+communication.
+
+[source]
+----
+asadmin> delete-node-config sj03
+
+Command delete-node-config executed successfully.
+----
+
+[[sthref904]]
+
+=== Exit Status
+
+`0`::
+  command executed successfully
+`1`::
+  error in executing the command
+
+[[sthref905]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-node-config.html#create-node-config-1[`create-node-config`(1)],
+link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
+link:delete-instance.html#delete-instance-1[`delete-instance`(1)],
+link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)],
+link:delete-node-ssh.html#delete-node-ssh-1[`delete-node-ssh`(1)],
+link:install-node.html#install-node-1[`install-node`(1)],
+link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)],
+link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)],
+link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
+link:uninstall-node.html#uninstall-node-1[`uninstall-node`(1)],
+link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)],
+link:uninstall-node-ssh.html#uninstall-node-ssh-1[`uninstall-node-ssh`(1)],
+link:update-node-config.html#update-node-config-1[`update-node-config`(1)],
+link:update-node-ssh.html#update-node-dcom-1[`update-node-dcom`(1)],
+link:update-node-ssh001.html#update-node-ssh-1[`update-node-ssh`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-node-dcom.adoc b/docs/reference-manual/src/main/asciidoc/delete-node-dcom.adoc
new file mode 100644
index 0000000..8056baf
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-node-dcom.adoc
@@ -0,0 +1,153 @@
+type=page
+status=published
+title=delete-node-dcom
+next=delete-node-ssh.html
+prev=delete-node-config.html
+~~~~~~
+
+= delete-node-dcom
+
+[[delete-node-dcom-1]][[GSRFM569]][[delete-node-dcom]]
+
+== delete-node-dcom
+
+Deletes a node that is enabled for communication over DCOM
+
+[[sthref906]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-node-dcom [--help]
+[--uninstall={false|true}] [--force={false|true}]
+node-name
+----
+
+[[sthref907]]
+
+=== Description
+
+The `delete-node-dcom` subcommand deletes a node that is enabled for
+communication over the Distributed Component Object Model (DCOM) remote
+protocol from the domain. The DCOM protocol is available only on Windows
+systems. This subcommand does not require DCOM to be configured.
+
+This subcommand can delete only a node that is enabled for communication
+over DCOM. The subcommand for deleting other types of nodes depends on
+the type of the node:
+
+* A node that is enabled for communication over secure shell (SSH) must
+be deleted by using the
+link:delete-node-ssh.html#delete-node-ssh-1[`delete-node-ssh`(1)] subcommand.
+* A node that is not enabled for communication must be deleted by using the
+link:delete-node-config.html#delete-node-config-1[`delete-node-config`(1)] subcommand.
+
+To determine whether a node is enabled for communication over DCOM, use
+the link:list-nodes.html#list-nodes-1[`list-nodes`(1)] subcommand.
+
+No {productName} instances must reside on the node that is being
+deleted. Otherwise, the subcommand fails. Before running this
+subcommand, delete any instances that reside on the node by using, for
+example, the
+link:delete-instance.html#delete-instance-1[`delete-instance`(1)]
+subcommand or the
+link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)] subcommand.
+
+This subcommand is supported in remote mode only.
+
+[[sthref908]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--uninstall`::
+  Specifies whether the {productName} software is uninstalled from
+  host that the node represents. Possible values are as follows:
+
+  `false`;;
+    The {productName} software is not uninstalled from the host
+    (default).
+  `true`;;
+    The {productName} software is uninstalled from the host. By
+    default, if any node except the predefined node ``localhost-``domain
+    resides on any host from which {productName} software is being
+    uninstalled, the subcommand fails. +
+    To uninstall the {productName} software from a host on which
+    user-defined nodes reside, set the `--force` option to `true`. +
+    If the `--force` option is `true`, the subcommand removes
+    the entire content of the parent of the base installation directory.
+
+`--force`::
+  If `--uninstall` is true, specifies whether the subcommand uninstalls
+  the {productName} software from a host even if a user-defined node
+  resides on the host. Possible values are as follows:
+
+  `false`;;
+    If a user-defined node resides on a host, the software is not
+    uninstalled and the subcommand fails (default). +
+    If the `--force` option is `false`, the subcommand removes only the
+    {productName} software files. Other content if the parent of the
+    base installation directory, such as configuration files, are not removed.
+  `true`;;
+    The subcommand uninstalls the {productName} software from the
+    host even if a user-defined node resides on the host. +
+    If the `--force` option is `true`, the subcommand removes the entire
+    content of the parent of the base installation directory.
+
+[[sthref909]]
+
+=== Operands
+
+node-name::
+  The name of the node to delete. The node must enabled for
+  communication over DCOM. Otherwise, an error occurs.
+
+[[sthref910]]
+
+=== Examples
+
+[[GSRFM570]][[sthref911]]
+
+==== Example 1   Deleting a Node That Is Enabled for Communication Over DCOM
+
+This example deletes the node `xkyd`, which is enabled for communication
+over DCOM.
+
+[source]
+----
+asadmin> delete-node-dcom xkyd
+Command delete-node-dcom executed successfully.
+----
+
+[[sthref912]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref913]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
+link:delete-instance.html#delete-instance-1[`delete-instance`(1)],
+link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)],
+link:delete-node-config.html#delete-node-config-1[`delete-node-config`(1)],
+link:delete-node-ssh.html#delete-node-ssh-1[`delete-node-ssh`(1)],
+link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)],
+link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
+link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)],
+link:update-node-ssh.html#update-node-dcom-1[`update-node-dcom`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-node-ssh.adoc b/docs/reference-manual/src/main/asciidoc/delete-node-ssh.adoc
new file mode 100644
index 0000000..e9c3020
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-node-ssh.adoc
@@ -0,0 +1,161 @@
+type=page
+status=published
+title=delete-node-ssh
+next=delete-password-alias.html
+prev=delete-node-dcom.html
+~~~~~~
+
+= delete-node-ssh
+
+[[delete-node-ssh-1]][[GSRFM00100]][[delete-node-ssh]]
+
+== delete-node-ssh
+
+Deletes a node that is enabled for communication over SSH
+
+[[sthref914]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-node-ssh [--help]
+[--uninstall={false|true}] [--force={false|true}]
+node-name
+----
+
+[[sthref915]]
+
+=== Description
+
+The `delete-node-ssh` subcommand deletes a node that is enabled for
+communication over secure shell (SSH) from the domain. This subcommand
+does not require SSH to be configured.
+
+This subcommand can delete only a node that is enabled for communication
+over SSH. The subcommand for deleting other types of nodes depends on
+the type of the node:
+
+* A node that is enabled for communication over the Distributed
+Component Object Model (DCOM) remote protocol must be deleted by using
+the link:delete-node-dcom.html#delete-node-dcom-1[`delete-node-dcom`(1)]
+subcommand.
+* A node that is not enabled for remote communication must be deleted by
+using the
+link:delete-node-config.html#delete-node-config-1[`delete-node-config`(1)]
+subcommand.
+
+To determine whether a node is enabled for communication over SSH, use
+the link:list-nodes.html#list-nodes-1[`list-nodes`(1)] subcommand.
+
+No {productName} instances must reside on the node that is being
+deleted. Otherwise, the subcommand fails. Before running this
+subcommand, delete any instances that reside on the node by using, for
+example, the
+link:delete-instance.html#delete-instance-1[`delete-instance`(1)]
+subcommand or the
+link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)]
+subcommand.
+
+This subcommand is supported in remote mode only.
+
+[[sthref916]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--uninstall`::
+  Specifies whether the {productName} software is uninstalled from
+  host that the node represents. Possible values are as follows:
+
+  `false`;;
+    The {productName} software is not uninstalled from the host (default).
+  `true`;;
+    The {productName} software is uninstalled from the host. By
+    default, if any node except the predefined node ``localhost-``domain
+    resides on any host from which {productName} software is being
+    uninstalled, the subcommand fails. To uninstall the
+    {productName} software from a host on which user-defined nodes
+    reside, set the `--force` option to `true`. If the `--force` option
+    is `true`, the subcommand removes the entire content of the parent
+    of the base installation directory.
+
+`--force`::
+  If `--uninstall` is true, specifies whether the subcommand uninstalls
+  the {productName} software from a host even if a user-defined node
+  resides on the host. Possible values are as follows:
+
+  `false`;;
+    If a user-defined node resides on a host, the software is not
+    uninstalled and the subcommand fails (default). +
+    If the `--force` option is `false`, the subcommand removes only the
+    {productName} software files. Other content if the parent of the
+    base installation directory, such as configuration files, are not removed.
+  `true`;;
+    The subcommand uninstalls the {productName} software from the
+    host even if a user-defined node resides on the host. +
+    If the `--force` option is `true`, the subcommand removes the entire
+    content of the parent of the base installation directory.
+
+[[sthref917]]
+
+=== Operands
+
+node-name::
+  The name of the node to delete. The node must enabled for
+  communication over SSH. Otherwise, an error occurs.
+
+[[sthref918]]
+
+=== Examples
+
+[[GSRFM571]][[sthref919]]
+
+==== Example 1   Deleting a Node That Is Enabled for Communication Over SSH
+
+This example deletes the node `eg1`, which is enabled for communication
+over SSH.
+
+[source]
+----
+asadmin> delete-node-ssh eg1
+Command delete-node-ssh executed successfully.
+----
+
+[[sthref920]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref921]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
+link:create-node-ssh.html#create-node-ssh-1[`create-node-ssh`(1)],
+link:delete-instance.html#delete-instance-1[`delete-instance`(1)],
+link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)],
+link:delete-node-config.html#delete-node-config-1[`delete-node-config`(1)],
+link:delete-node-dcom.html#delete-node-dcom-1[`delete-node-dcom`(1)],
+link:install-node.html#install-node-1[`install-node`(1)],
+link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)],
+link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)],
+link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
+link:uninstall-node.html#uninstall-node-1[`uninstall-node`(1)],
+link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)],
+link:uninstall-node-ssh.html#uninstall-node-ssh-1[`uninstall-node-ssh`(1)],
+link:update-node-ssh.html#update-node-dcom-1[`update-node-dcom`(1)],
+link:update-node-ssh001.html#update-node-ssh-1[`update-node-ssh`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-password-alias.adoc b/docs/reference-manual/src/main/asciidoc/delete-password-alias.adoc
new file mode 100644
index 0000000..ee75600
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-password-alias.adoc
@@ -0,0 +1,86 @@
+type=page
+status=published
+title=delete-password-alias
+next=delete-profiler.html
+prev=delete-node-ssh.html
+~~~~~~
+
+= delete-password-alias
+
+[[delete-password-alias-1]][[GSRFM00101]][[delete-password-alias]]
+
+== delete-password-alias
+
+Deletes a password alias
+
+[[sthref922]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-password-alias [--help]
+aliasname
+----
+
+[[sthref923]]
+
+=== Description
+
+This subcommand deletes a password alias.
+
+[[sthref924]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref925]]
+
+=== Operands
+
+aliasname::
+  This is the name of the substitute password as it appears in
+  `domain.xml`.
+
+[[sthref926]]
+
+=== Examples
+
+[[GSRFM572]][[sthref927]]
+
+==== Example 1   Deleting a Password Alias
+
+[source]
+----
+asadmin>delete-password-alias
+jmspassword-alias
+----
+
+Command delete-password-alias executed successfully
+
+[[sthref928]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref929]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-password-alias.html#create-password-alias-1[`create-password-alias`(1)],
+link:list-password-aliases.html#list-password-aliases-1[`list-password-aliases`(1)],
+link:update-password-alias.html#update-password-alias-1[`update-password-alias`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-profiler.adoc b/docs/reference-manual/src/main/asciidoc/delete-profiler.adoc
new file mode 100644
index 0000000..a220eb2
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-profiler.adoc
@@ -0,0 +1,97 @@
+type=page
+status=published
+title=delete-profiler
+next=delete-protocol.html
+prev=delete-password-alias.html
+~~~~~~
+
+= delete-profiler
+
+[[delete-profiler-1]][[GSRFM00102]][[delete-profiler]]
+
+== delete-profiler
+
+Removes the profiler element
+
+[[sthref930]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-profiler [--help]
+[--target target_name]
+----
+
+[[sthref931]]
+
+=== Description
+
+The `delete-profiler` subcommand deletes the profiler element in the
+Java configuration. Only one profiler can exist at a time. If you
+attempt to create a profiler while one already exists, an error message
+is displayed and the existing profiler must be deleted.
+
+For changes to take effect, the server must restarted.
+
+This command is supported in remote mode only.
+
+[[sthref932]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  This option specifies the target profiler element which you are
+  deleting. Valid values are
+
+  `server`;;
+    Deletes the profiler element for the default server instance
+    `server` and is the default value.
+  configuration_name;;
+    Deletes the profiler element for the named configuration.
+  cluster_name;;
+    Deletes the profiler element for every server instance in the
+    cluster.
+  instance_name;;
+    Deletes the profiler element for a particular server instance.
+
+[[sthref933]]
+
+=== Examples
+
+[[GSRFM573]][[sthref934]]
+
+==== Example 1   Deleting a Profile
+
+This example deletes the profiler named `sample_profiler`.
+
+[source]
+----
+asadmin> delete-profiler sample_profiler
+Command delete-profiler executed successfully
+----
+
+[[sthref935]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref936]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-profiler.html#create-profiler-1[`create-profiler`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-protocol-filter.adoc b/docs/reference-manual/src/main/asciidoc/delete-protocol-filter.adoc
new file mode 100644
index 0000000..ef11c25
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-protocol-filter.adoc
@@ -0,0 +1,104 @@
+type=page
+status=published
+title=delete-protocol-filter
+next=delete-protocol-finder.html
+prev=delete-protocol.html
+~~~~~~
+
+= delete-protocol-filter
+
+[[delete-protocol-filter-1]][[GSRFM00104]][[delete-protocol-filter]]
+
+== delete-protocol-filter
+
+Removes a protocol filter
+
+[[sthref945]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-protocol-filter [--help]
+--protocol protocol-name
+[--target server]
+protocol-filter-name
+----
+
+[[sthref946]]
+
+=== Description
+
+The `delete-protocol-filter` subcommand removes the specified protocol
+filter. This subcommand is supported in remote mode only.
+
+[[sthref947]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--protocol-name`::
+  The name of the associated protocol.
+`--target`::
+  Deletes the protocol filter only from the specified target. Valid
+  values are as follows:
+
+  `server`;;
+    Deletes the protocol filter from the default server instance. This
+    is the default value.
+  configuration-name;;
+    Deletes the protocol filter from the specified configuration.
+  cluster-name;;
+    Deletes the protocol filter from all server instances in the
+    specified cluster.
+  standalone-instance-name;;
+    Deletes the protocol filter from the specified standalone server
+    instance.
+
+[[sthref948]]
+
+=== Operands
+
+protocol-filter-name::
+  The name of the protocol filter to be deleted.
+
+[[sthref949]]
+
+=== Examples
+
+[[GSRFM575]][[sthref950]]
+
+==== Example 1   Deleting a Protocol Filter
+
+The following command deletes the protocol filter named `http1-filter`:
+
+[source]
+----
+asadmin> delete-protocol-filter --protocol http1 http1-filter
+Command delete-protocol-filter executed successfully.
+----
+
+[[sthref951]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref952]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-protocol-filter.html#create-protocol-filter-1[`create-protocol-filter`(1)],
+link:list-protocol-filters.html#list-protocol-filters-1[`list-protocol-filters`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-protocol-finder.adoc b/docs/reference-manual/src/main/asciidoc/delete-protocol-finder.adoc
new file mode 100644
index 0000000..48ecb61
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-protocol-finder.adoc
@@ -0,0 +1,88 @@
+type=page
+status=published
+title=delete-protocol-finder
+next=delete-resource-adapter-config.html
+prev=delete-protocol-filter.html
+~~~~~~
+
+= delete-protocol-finder
+
+[[delete-protocol-finder-1]][[GSRFM00105]][[delete-protocol-finder]]
+
+== delete-protocol-finder
+
+Removes a protocol finder
+
+[[sthref953]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-protocol-finder [--help]
+--protocol protocol-name
+[--target server]
+protocol-finder-name
+----
+
+[[sthref954]]
+
+=== Description
+
+The `delete-protocol-finder` subcommand removes the specified protocol
+finder. This subcommand is supported in remote mode only.
+
+[[sthref955]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--protocol-name`::
+  The name of the associated protocol.
+`--target`::
+  Deletes the protocol finder only from the specified target. Valid
+  values are as follows:
+
+  `server`;;
+    Deletes the protocol finder from the default server instance. This
+    is the default value.
+  configuration-name;;
+    Deletes the protocol finder from the specified configuration.
+  cluster-name;;
+    Deletes the protocol finder from all server instances in the
+    specified cluster.
+  standalone-instance-name;;
+    Deletes the protocol finder from the specified standalone server
+    instance.
+
+[[sthref956]]
+
+=== Operands
+
+protocol-finder-name::
+  The name of the protocol finder to be deleted.
+
+[[sthref957]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref958]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-protocol-finder.html#create-protocol-finder-1[`create-protocol-finder`(1)],
+link:list-protocol-finders.html#list-protocol-finders-1[`list-protocol-finders`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-protocol.adoc b/docs/reference-manual/src/main/asciidoc/delete-protocol.adoc
new file mode 100644
index 0000000..e429423
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-protocol.adoc
@@ -0,0 +1,100 @@
+type=page
+status=published
+title=delete-protocol
+next=delete-protocol-filter.html
+prev=delete-profiler.html
+~~~~~~
+
+= delete-protocol
+
+[[delete-protocol-1]][[GSRFM00103]][[delete-protocol]]
+
+== delete-protocol
+
+Removes a protocol
+
+[[sthref937]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-protocol [--help]
+[--target target]
+protocol-name
+----
+
+[[sthref938]]
+
+=== Description
+
+The `delete-protocol` subcommand removes the specified protocol. This
+subcommand is supported in remote mode only.
+
+[[sthref939]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Deletes the protocol only from the specified target. Valid values are
+  as follows:
+
+  `server`;;
+    Deletes the protocol from the default server instance. This is the
+    default value.
+  configuration-name;;
+    Deletes the protocol from the specified configuration.
+  cluster-name;;
+    Deletes the protocol from all server instances in the specified
+    cluster.
+  standalone-instance-name;;
+    Deletes the protocol from the specified standalone server instance.
+
+[[sthref940]]
+
+=== Operands
+
+protocol-name::
+  The name of the protocol to be deleted.
+
+[[sthref941]]
+
+=== Examples
+
+[[GSRFM574]][[sthref942]]
+
+==== Example 1   Deleting a Protocol
+
+The following command deletes the protocol named `http-1`:
+
+[source]
+----
+asadmin> delete-protocol http-1
+Command delete-protocol executed successfully.
+----
+
+[[sthref943]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref944]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-protocol.html#create-protocol-1[`create-protocol`(1)],
+link:list-protocols.html#list-protocols-1[`list-protocols`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-resource-adapter-config.adoc b/docs/reference-manual/src/main/asciidoc/delete-resource-adapter-config.adoc
new file mode 100644
index 0000000..c48da2a
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-resource-adapter-config.adoc
@@ -0,0 +1,89 @@
+type=page
+status=published
+title=delete-resource-adapter-config
+next=delete-resource-ref.html
+prev=delete-protocol-finder.html
+~~~~~~
+
+= delete-resource-adapter-config
+
+[[delete-resource-adapter-config-1]][[GSRFM00106]][[delete-resource-adapter-config]]
+
+== delete-resource-adapter-config
+
+Deletes the resource adapter configuration
+
+[[sthref959]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-resource-adapter-config [--help]
+raname
+----
+
+[[sthref960]]
+
+=== Description
+
+The `delete-resource-adapter-config` subcommand deletes the
+configuration information for the connector module.
+
+This command is supported in remote mode only.
+
+[[sthref961]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  This option is deprecated.
+
+[[sthref962]]
+
+=== Operands
+
+raname::
+  Specifies the connector module name.
+
+[[sthref963]]
+
+=== Examples
+
+[[GSRFM576]][[sthref964]]
+
+==== Example 1   Deleting a Resource Adapter Configuration
+
+This example deletes the configuration information for `ra1`.
+
+[source]
+----
+asadmin> delete-resource-adapter-config ra1
+Command delete-resource-adapter-config executed successfully
+----
+
+[[sthref965]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref966]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-resource-adapter-config.html#create-resource-adapter-config-1[`create-resource-adapter-config`(1)],
+link:list-resource-adapter-configs.html#list-resource-adapter-configs-1[`list-resource-adapter-configs`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-resource-ref.adoc b/docs/reference-manual/src/main/asciidoc/delete-resource-ref.adoc
new file mode 100644
index 0000000..99004c3
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-resource-ref.adoc
@@ -0,0 +1,113 @@
+type=page
+status=published
+title=delete-resource-ref
+next=delete-ssl.html
+prev=delete-resource-adapter-config.html
+~~~~~~
+
+= delete-resource-ref
+
+[[delete-resource-ref-1]][[GSRFM00107]][[delete-resource-ref]]
+
+== delete-resource-ref
+
+Removes a reference to a resource
+
+[[sthref967]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-resource-ref [--help]
+[--target target] reference_name
+----
+
+[[sthref968]]
+
+=== Description
+
+The `delete-resource-ref` subcommand removes from a cluster or an
+unclustered server instance a reference to a resource (for example, a
+JDBC resource). This effectively results in the removal of the resource
+from the JNDI tree of the targeted instance or cluster.
+
+The target instance or instances making up the cluster need not be
+running or available for this subcommand to succeed. If one or more
+instances are not available, they will no longer load the resource in
+the JNDI tree the next time they start.
+
+Removal of the reference does not result in removal of the resource from
+the domain. The resource is removed only by the `delete` subcommand for
+that resource (for example, `delete-jdbc-resource`).
+
+This subcommand is supported in remote mode only.
+
+[[sthref969]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Specifies the target from which you are removing the resource
+  reference. Valid values are
+
+  `server`;;
+    Removes the resource reference from the default server instance
+    `server` and is the default value.
+  cluster_name;;
+    Removes the resource reference from every server instance in the
+    cluster.
+  instance_name;;
+    Removes the resource reference from the named unclustered server
+    instance.
+
+[[sthref970]]
+
+=== Operands
+
+reference_name::
+  The name or JNDI name of the resource.
+
+[[sthref971]]
+
+=== Examples
+
+[[GSRFM577]][[sthref972]]
+
+==== Example 1   Removing a Reference to a Resource
+
+This example removes a reference to the JMS destination resource
+`jms/Topic` on the cluster `cluster1`.
+
+[source]
+----
+asadmin> delete-resource-ref --target cluster1 jms/Topic
+resource-ref jms/Topic deleted successfully.
+Command delete-resource-ref executed successfully.
+----
+
+[[sthref973]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref974]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-resource-ref.html#create-resource-ref-1[`create-resource-ref`(1)],
+link:list-resource-refs.html#list-resource-refs-1[`list-resource-refs`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-ssl.adoc b/docs/reference-manual/src/main/asciidoc/delete-ssl.adoc
new file mode 100644
index 0000000..bd71904
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-ssl.adoc
@@ -0,0 +1,124 @@
+type=page
+status=published
+title=delete-ssl
+next=delete-system-property.html
+prev=delete-resource-ref.html
+~~~~~~
+
+= delete-ssl
+
+[[delete-ssl-1]][[GSRFM00109]][[delete-ssl]]
+
+== delete-ssl
+
+Deletes the SSL element in the selected HTTP listener, IIOP listener, or
+IIOP service
+
+[[sthref975]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-ssl [--help]
+[--target target]
+--type listener_or_service_type
+listener_id
+----
+
+[[sthref976]]
+
+=== Description
+
+The `delete-ssl` subcommand deletes the SSL element in the selected HTTP
+listener, IIOP listener, or IIOP service.
+
+The listener_id is not required if the `--type` is `iiop-service`.
+
+This subcommand is supported in remote mode only.
+
+[[sthref977]]
+
+=== Options
+
+If an option has a short option name, then the short option precedes the
+long option name. Short options have one dash whereas long options have
+two dashes.
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Specifies the target on which you are configuring the ssl element. The
+  following values are valid:
+
+  `server`;;
+    Specifies the server in which the iiop-service or HTTP/IIOP listener
+    is to be unconfigured for SSL.
+  config;;
+    Specifies the configuration that contains the HTTP/IIOP listener or
+    iiop-service for which SSL is to be unconfigured.
+  cluster;;
+    Specifies the cluster in which the HTTP/IIOP listener or
+    iiop-service is to be unconfigured for SSL. All the server instances
+    in the cluster will get SSL unconfigured for the respective listener
+    or iiop-service.
+  instance;;
+    Specifies the instance in which the HTTP/IIOP listener or
+    iiop-service is to be unconfigured for SSL.
+
+`--type`::
+  The type of service or listener for which the SSL is deleted. The type
+  must be one of the following types:
+
+  * `http-listener`
+  * `iiop-listener`
+  * `iiop-service`
+
+[[sthref978]]
+
+=== Operands
+
+listener_id::
+  The ID of the listener from which the SSL element is to be deleted. +
+  The listener_id operand is not required if the `--type` is `iiop-service`.
+
+[[sthref979]]
+
+=== Examples
+
+[[GSRFM579]][[sthref980]]
+
+==== Example 1   Deleting an SSL element from an HTTP listener
+
+The following example shows how to delete an SSL element from an HTTP
+listener named `http-listener-1`.
+
+[source]
+----
+asadmin> delete-ssl
+--type http-listener http-listener-1
+Command delete-ssl executed successfully.
+----
+
+[[sthref981]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref982]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-ssl.html#create-ssl-1[`create-ssl`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-system-property.adoc b/docs/reference-manual/src/main/asciidoc/delete-system-property.adoc
new file mode 100644
index 0000000..ff68a3b
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-system-property.adoc
@@ -0,0 +1,95 @@
+type=page
+status=published
+title=delete-system-property
+next=delete-threadpool.html
+prev=delete-ssl.html
+~~~~~~
+
+= delete-system-property
+
+[[delete-system-property-1]][[GSRFM00110]][[delete-system-property]]
+
+== delete-system-property
+
+Removes a system property of the domain, configuration, cluster, or
+server instance, one at a time
+
+[[sthref983]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-system-property [--help]
+[--target target_name ]
+[property_name]
+----
+
+[[sthref984]]
+
+=== Description
+
+The `delete-system-property` subcommand deletes a system property of a
+domain, configuration, cluster, or server instance. Make sure that the
+system property is not referenced elsewhere in the configuration before
+deleting it.
+
+This subcommand is supported in remote mode only.
+
+[[sthref985]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  This option specifies the target on which you are deleting the system
+  properties. The valid targets for this subcommand are instance,
+  cluster, configuration, domain, and server. Server is the default option.
+
+[[sthref986]]
+
+=== Operands
+
+property_name::
+  The name of the system property to remove.
+
+[[sthref987]]
+
+=== Examples
+
+[[GSRFM580]][[sthref988]]
+
+==== Example 1   Deleting a System Property
+
+This example deletes the system property named `http-listener-port`.
+
+[source]
+----
+asadmin> delete-system-property http-listener-port
+Command delete-system-property executed successfully.
+----
+
+[[sthref989]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref990]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-system-properties.html#create-system-properties-1[`create-system-properties`(1)],
+link:list-system-properties.html#list-system-properties-1[`list-system-properties`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-threadpool.adoc b/docs/reference-manual/src/main/asciidoc/delete-threadpool.adoc
new file mode 100644
index 0000000..b512bed
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-threadpool.adoc
@@ -0,0 +1,99 @@
+type=page
+status=published
+title=delete-threadpool
+next=delete-transport.html
+prev=delete-system-property.html
+~~~~~~
+
+= delete-threadpool
+
+[[delete-threadpool-1]][[GSRFM00111]][[delete-threadpool]]
+
+== delete-threadpool
+
+Removes a thread pool
+
+[[sthref991]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-threadpool [--help]
+[--target target] threadpool-id
+----
+
+[[sthref992]]
+
+=== Description
+
+Removes the thread pool with the specified ID. This subcommand is
+supported in remote mode only.
+
+[[sthref993]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  This option specifies the target from which you are removing the
+  thread pool. Valid values are as follows:
+
+  `server`;;
+    Deletes the thread pool for the default {productName} instance
+    `server` and is the default value.
+  configuration-name;;
+    Deletes the thread pool for the named configuration.
+  cluster-name;;
+    Deletes the thread pool for every instance in the cluster.
+  instance-name;;
+    Deletes the thread pool for a particular instance.
+
+[[sthref994]]
+
+=== Operands
+
+threadpool-id::
+  An ID for the work queue, for example, `thread-pool1`, `threadpool-2`,
+  and so forth.
+
+[[sthref995]]
+
+=== Examples
+
+[[GSRFM581]][[sthref996]]
+
+==== Example 1   Deleting a Thread Pool
+
+This example deletes `threadpool-l`.
+
+[source]
+----
+asadmin> delete-threadpool threadpool-1
+Command delete-threadpool executed successfully
+----
+
+[[sthref997]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref998]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-threadpool.html#create-threadpool-1[`create-threadpool`(1)],
+link:list-threadpools.html#list-threadpools-1[`list-threadpools`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-transport.adoc b/docs/reference-manual/src/main/asciidoc/delete-transport.adoc
new file mode 100644
index 0000000..c0ce1c7
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-transport.adoc
@@ -0,0 +1,100 @@
+type=page
+status=published
+title=delete-transport
+next=delete-virtual-server.html
+prev=delete-threadpool.html
+~~~~~~
+
+= delete-transport
+
+[[delete-transport-1]][[GSRFM00112]][[delete-transport]]
+
+== delete-transport
+
+Removes a transport
+
+[[sthref999]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-transport [--help]
+[--target target]
+transport-name
+----
+
+[[sthref1000]]
+
+=== Description
+
+The `delete-transport` subcommand removes the specified transport. This
+subcommand is supported in remote mode only.
+
+[[sthref1001]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Deletes the transport only from the specified target. Valid values are
+  as follows:
+
+  `server`;;
+    Deletes the transport from the default server instance. This is the
+    default value.
+  configuration-name;;
+    Deletes the transport from the specified configuration.
+  cluster-name;;
+    Deletes the transport from all server instances in the specified
+    cluster.
+  standalone-instance-name;;
+    Deletes the transport from the specified standalone server instance.
+
+[[sthref1002]]
+
+=== Operands
+
+transport-name::
+  The name of the transport to be deleted.
+
+[[sthref1003]]
+
+=== Examples
+
+[[GSRFM582]][[sthref1004]]
+
+==== Example 1   Deleting a Transport
+
+The following command deletes the transport named `http1-trans`:
+
+[source]
+----
+asadmin> delete-transport http1-trans
+Command delete-transport executed successfully.
+----
+
+[[sthref1005]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1006]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-transport.html#create-transport-1[`create-transport`(1)],
+link:list-transports.html#list-transports-1[`list-transports`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/delete-virtual-server.adoc b/docs/reference-manual/src/main/asciidoc/delete-virtual-server.adoc
new file mode 100644
index 0000000..62d6d5d
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/delete-virtual-server.adoc
@@ -0,0 +1,101 @@
+type=page
+status=published
+title=delete-virtual-server
+next=deploy.html
+prev=delete-transport.html
+~~~~~~
+
+= delete-virtual-server
+
+[[delete-virtual-server-1]][[GSRFM00113]][[delete-virtual-server]]
+
+== delete-virtual-server
+
+Removes a virtual server
+
+[[sthref1007]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] delete-virtual-server [--help]
+[--target target] virtual-server-id
+----
+
+[[sthref1008]]
+
+=== Description
+
+The `delete-virtual-server` subcommand removes the virtual server with
+the specified virtual server ID. This subcommand is supported in remote
+mode only.
+
+[[sthref1009]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Deletes the virtual server only from the specified target. Valid
+  values are as follows:
+
+  `server`;;
+    Deletes the virtual server from the default server instance. This is
+    the default value.
+  configuration-name;;
+    Deletes the virtual server from the specified configuration.
+  cluster-name;;
+    Deletes the virtual server from all server instances in the
+    specified cluster.
+  standalone-instance-name;;
+    Deletes the virtual server from the specified standalone server
+    instance.
+
+[[sthref1010]]
+
+=== Operands
+
+virtual-server-id::
+  The unique identifier for the virtual server to be deleted.
+
+[[sthref1011]]
+
+=== Examples
+
+[[GSRFM583]][[sthref1012]]
+
+==== Example 1   Deleting a Virtual Server
+
+The following command deletes the virtual server named `sample_vs1`:
+
+[source]
+----
+asadmin> delete-virtual-server sample_vs1
+Command delete-virtual-server executed successfully.
+----
+
+[[sthref1013]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1014]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-virtual-server.html#create-virtual-server-1[`create-virtual-server`(1)],
+link:list-virtual-servers.html#list-virtual-servers-1[`list-virtual-servers`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/deploy.adoc b/docs/reference-manual/src/main/asciidoc/deploy.adoc
new file mode 100644
index 0000000..849d1e1
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/deploy.adoc
@@ -0,0 +1,594 @@
+type=page
+status=published
+title=deploy
+next=deploydir.html
+prev=delete-virtual-server.html
+~~~~~~
+
+= deploy
+
+[[deploy-1]][[GSRFM00114]][[deploy]]
+
+== deploy
+
+Deploys the specified component
+
+[[sthref1015]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] deploy [--help]
+[--force={false|true}]
+[--virtualservers virtual_servers]
+[--contextroot context_root]
+[--precompilejsp={false|true}]
+[--verify={false|true}]
+[--name component_name]
+[--upload={true|false}]
+[--retrieve local_dirpath]
+[--dbvendorname dbvendorname]
+[--createtables={true|false}|--dropandcreatetables={true|false}]
+[--uniquetablenames={true|false}]
+[--deploymentplan deployment_plan]
+[--altdd alternate_deploymentdescriptor]
+[--runtimealtdd runtime_alternate_deploymentdescriptor]
+[--deploymentorder deployment_order]
+[--enabled={true|false}]
+[--generatermistubs={false|true}]
+[--availabilityenabled={false|true}]
+[--asyncreplication={true|false}]
+[--lbenabled={true|false}]
+[--keepstate={false|true}]
+[--libraries jar_file[,jar_file]*]
+[--target target]
+[--type pkg-type]
+[--properties(name=value)[:name=value]*]
+[file_archive|filepath]
+----
+
+[[sthref1016]]
+
+=== Description
+
+The `deploy` subcommand deploys applications to the server. Applications
+can be enterprise applications, web applications, Enterprise JavaBeans
+(EJB) modules, connector modules, and application client modules.
+If the component is already deployed or already exists, it is forcibly
+redeployed if the `--force` option is set to `true` (default is `false`).
+
+The `--createtables` and `--dropandcreatetables` options are boolean
+flags and therefore can take the values of true or false. These options
+are only used during deployment of CMP beans that have not been mapped
+to a database (that is, no `sun-cmp-mappings.xml` descriptor is provided
+in the module's `META-INF` directory). They are ignored otherwise.
+
+The `--createtables` and `--dropandcreatetables` options are mutually
+exclusive; only one should be used. If drop and/or create tables fails,
+the deployment does not fail; a warning message is provided in the log file.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1017]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--force`::
+  If set to `true`, redeploys the component even if the specified
+  component has already been deployed or already exists. Default is
+  `false`.
+`--virtualservers`::
+  One or more virtual server IDs. Multiple IDs are separated by commas.
+`--contextroot`::
+  Valid only if the archive is a web module. It is ignored for other
+  archive types; it will be the value specified by default-context-path
+  in web.xml, if specified; defaults to filename without extension.
+`--precompilejsp`::
+  By default this option does not allow the JSP to be precompiled during
+  deployment. Instead, JSPs are compiled during runtime. Default is
+  `false`.
+`--verify`::
+  If set to true and the required verifier packages are installed from
+  the Update Tool, the syntax and semantics of the deployment descriptor
+  is verified. Default is `false`.
+`--name`::
+  Name of the deployable component. +
+  The name can include an optional version identifier, which follows the
+  name and is separated from the name by a colon (`:`). The version
+  identifier must begin with a letter or number. It can contain
+  alphanumeric characters plus underscore (`_`), dash (`-`), and period
+  (`.`) characters. For more information about module and application
+  versions, see "link:application-deployment-guide/overview.html#GSDPG00324[Module and Application Versions]" in
+  {productName} Application Deployment Guide.
+`--upload`::
+  Specifies whether the subcommand uploads the file to the DAS. In most
+  situations, this option can be omitted. +
+  Valid values are as follows:
+
+  `false`;;
+    The subcommand does not upload the file and attempts to access the
+    file through the specified file name. If the DAS cannot access the
+    file, the subcommand fails. +
+    For example, the DAS might be running as a different user than the
+    administration user and does not have read access to the file. In
+    this situation, the subcommand fails if the `--upload` option is
+    `false`.
+  `true`;;
+    The subcommand uploads the file to the DAS over the network connection.
+
++
+The default value depends on whether the DAS is on the host where the
+  subcommand is run or is on a remote host.
+
+  * If the DAS is on the host where the subcommand is run, the default is `false`.
+  * If the DAS is on a remote host, the default is `true`.
+
++
+If a directory filepath is specified, this option is ignored.
+
+`--retrieve`::
+  Retrieves the client stub JAR file from the server machine to the
+  local directory.
+`--dbvendorname`::
+  Specifies the name of the database vendor for which tables are
+  created. Supported values include `db2`, `mssql`, `mysql`, `oracle`,
+  `derby`, `javadb`, `postgresql`, and `sybase`. These values are
+  case-insensitive. If not specified, the value of the
+  `database-vendor-name` attribute in `glassfish-ejb-jar.xml` is used.
+  If no value is specified, a connection is made to the resource
+  specified by the `jndi-name` subelement of the `cmp-resource` element
+  in the `glassfish-ejb-jar.xml` file, and the database vendor name is
+  read. If the connection cannot be established, or if the value is not
+  recognized, SQL-92 compliance is presumed.
+`--createtables`::
+  If specified as true, creates tables at deployment of an application
+  with unmapped CMP beans. If specified as false, tables are not
+  created. If not specified, the value of the `create-tables-at-deploy`
+  entry in the `cmp-resource` element of the `glassfish-ejb-jar.xml`
+  file determines whether or not tables are created. No unique
+  constraints are created for the tables.
+`--dropandcreatetables`::
+  If specified as true when the component is redeployed, the tables
+  created by the previous deployment are dropped before creating the new
+  tables. Applies to deployed applications with unmapped CMP beans.
+  Preexisting tables will not be dropped on the initial deployment of an
+  application or on a deployment that follows an explicit undeploy. If
+  specified as false, tables are neither dropped nor created. If not
+  specified, the tables are dropped if the `drop-tables-at-undeploy`
+  entry in the `cmp-resource` element of the `glassfish-ejb-jar.xml`
+  file is set to true, and the new tables are created if the
+  `create-tables-at-deploy` entry in the `cmp-resource` element of the
+  `glassfish-ejb-jar.xml` file is set to true.
+`--uniquetablenames`::
+  Guarantees unique table names for all the beans and results in a hash
+  code added to the table names. This is useful if you have an
+  application with case-sensitive bean names. Applies to applications
+  with unmapped CMP beans.
+`--deploymentplan`::
+  Deploys the deployment plan, which is a JAR file that contains
+  {productName} descriptors. Specify this option when deploying a
+  pure EAR file. A pure EAR file is an EAR without {productName}
+  descriptors.
+`--altdd`::
+  Deploys the application using a Jakarta EE standard deployment descriptor
+  that resides outside of the application archive. Specify an absolute
+  path or a relative path to the alternate deployment descriptor file.
+  The alternate deployment descriptor overrides the top-level deployment
+  descriptor packaged in the archive. For example, for an EAR, the
+  `--altdd` option overrides `application.xml`. For a standalone module,
+  the `--altdd` option overrides the top-level module descriptor such as `web.xml`.
+`--runtimealtdd`::
+  Deploys the application using a {productName} runtime deployment
+  descriptor that resides outside of the application archive. Specify an
+  absolute path or a relative path to the alternate deployment
+  descriptor file. The alternate deployment descriptor overrides the
+  top-level deployment descriptor packaged in the archive. For example,
+  for an EAR, the `--runtimealtdd` option overrides
+  `glassfish-application.xml`. For a standalone module, the
+  `--runtimealtdd` option overrides the top-level module descriptor such
+  as `glassfish-web.xml`. Applies to {productName} deployment
+  descriptors only (`glassfish-\*.xml`); the name of the alternate
+  deployment descriptor file must begin with `glassfish-`. Does not
+  apply to `sun-*.xml` deployment descriptors, which are deprecated.
+`--deploymentorder`::
+  Specifies the deployment order of the application. This is useful if
+  the application has dependencies and must be loaded in a certain order
+  at server startup. The deployment order is specified as an integer.
+  The default value is 100. Applications with lower numbers are loaded
+  before applications with higher numbers. For example, an application
+  with a deployment order of 102 is loaded before an application with a
+  deployment order of 110. If a deployment order is not specified, the
+  default value of 100 is assigned. If two applications have the same
+  deployment order, the first application to be deployed is the first
+  application to be loaded at server startup. +
+  The deployment order is typically specified when the application is
+  first deployed but can also be specified or changed after initial
+  deployment using the `set` subcommand. You can view the deployment
+  order of an application using the `get` subcommand.
+`--enabled`::
+  Allows users to access the application. If set to `false`, users will
+  not be able to access the application. This option enables the
+  application on the specified target instance or cluster. If you deploy
+  to the target `domain`, this option is ignored, since deploying to the
+  domain doesn't deploy to a specific instance or cluster. The default is `true`.
+`--generatermistubs`::
+  If set to `true`, static RMI-IIOP stubs are generated and put into the
+  `client.jar`. If set to `false`, the stubs are not generated. Default is `false`.
+`--availabilityenabled`::
+  This option controls whether high-availability is enabled for web
+  sessions and for stateful session bean (SFSB) checkpointing and
+  potentially passivation. If set to false (default) all web session
+  saving and SFSB checkpointing is disabled for the specified
+  application, web application, or EJB module. If set to true, the
+  specified application or module is enabled for high-availability. Set
+  this option to true only if high availability is configured and
+  enabled at higher levels, such as the server and container levels.
+`--asyncreplication`::
+  This option controls whether web session and SFSB states for which
+  high availability is enabled are first buffered and then replicated
+  using a separate asynchronous thread. If set to true (default),
+  performance is improved but availability is reduced. If the instance
+  where states are buffered but not yet replicated fails, the states are
+  lost. If set to false, performance is reduced but availability is
+  guaranteed. States are not buffered but immediately transmitted to
+  other instances in the cluster.
+`--lbenabled`::
+  This option controls whether the deployed application is available for
+  load balancing. The default is true.
+`--keepstate`::
+  This option controls whether web sessions, SFSB instances, and
+  persistently created EJB timers are retained between redeployments. +
+  The default is false. This option is supported only on the default
+  server instance, named `server`. It is not supported and ignored for
+  any other target. +
+  Some changes to an application between redeployments prevent this
+  feature from working properly. For example, do not change the set of
+  instance variables in the SFSB bean class. +
+  For web applications, this feature is applicable only if in the
+  `glassfish-web-app.xml` file the `persistence-type` attribute of the
+  `session-manager` element is `file`. +
+  For stateful session bean instances, the persistence type without high
+  availability is set in the server (the `sfsb-persistence-type`
+  attribute) and must be set to `file`, which is the default and
+  recommended value. +
+  If any active web session, SFSB instance, or EJB timer fails to be
+  preserved or restored, none of these will be available when the
+  redeployment is complete. However, the redeployment continues and a
+  warning is logged. +
+  To preserve active state data, {productName} serializes the data
+  and saves it in memory. To restore the data, the class loader of the
+  newly redeployed application deserializes the data that was previously
+  saved.
+`--libraries`::
+  A comma-separated list of library JAR files. Specify the library JAR
+  files by their relative or absolute paths. Specify relative paths
+  relative to domain-dir`/lib/applibs`. The libraries are made available
+  to the application in the order specified.
+`--target`::
+  Specifies the target to which you are deploying. Valid values are:
+
+  `server`;;
+    Deploys the component to the default server instance `server` and is
+    the default value.
+  `domain`;;
+    Deploys the component to the domain. If `domain` is the target for
+    an initial deployment, the application is deployed to the domain,
+    but no server instances or clusters reference the application. If
+    `domain` is the target for a redeployment (the `--force` option is
+    set to true), and dynamic reconfiguration is enabled for the
+    clusters or server instances that reference the application, the
+    referencing clusters or server instances automatically get the new
+    version of the application. If redeploying, and dynamic
+    configuration is disabled, the referencing clusters or server
+    instances do not get the new version of the application until the
+    clustered or standalone server instances are restarted.
+  cluster_name;;
+    Deploys the component to every server instance in the cluster.
+  instance_name;;
+    Deploys the component to a particular stand-alone sever instance.
+
+`--type`::
+  The packaging archive type of the component that is being deployed.
+  Possible values are as follows:
+
+  `car`;;
+    The component is packaged as a CAR file.
+  `ear`;;
+    The component is packaged as an EAR file.
+  `ejb`;;
+    The component is an EJB packaged as a JAR file.
+  `osgi`;;
+    The component is packaged as an OSGi bundle.
+  `rar`;;
+    The component is packaged as a RAR file.
+  `war`;;
+    The component is packaged as a WAR file.
+
+`--properties` or `--property`::
+  Optional keyword-value pairs that specify additional properties for
+  the deployment. The available properties are determined by the
+  implementation of the component that is being deployed or redeployed.
+  The `--properties` option and the `--property` option are equivalent.
+  You can use either option regardless of the number of properties that
+  you specify. +
+  You can specify the following properties for a deployment:
+
+  `jar-signing-alias`;;
+    Specifies the alias for the security certificate with which the
+    application client container JAR file is signed. Java Web Start will
+    not run code that requires elevated permissions unless it resides in
+    a JAR file signed with a certificate that the user's system trusts.
+    For your convenience, {productName} signs the JAR file
+    automatically using the certificate with this alias from the
+    domain's keystore. Java Web Start then asks the user whether to
+    trust the code and displays the {productName} certificate
+    information. To sign this JAR file with a different certificate, add
+    the certificate to the domain keystore, then use this property. For
+    example, you can use a certificate from a trusted authority, which
+    avoids the Java Web Start prompt, or from your own company, which
+    users know they can trust. Default is `s1as`, the alias for the
+    self-signed certificate created for every domain.
+  `java-web-start-enabled`;;
+    Specifies whether Java Web Start access is permitted for an
+    application client module. Default is true.
+  `compatibility`;;
+    Specifies the {productName} release with which to be backward
+    compatible in terms of JAR visibility requirements for applications.
+    The only allowed value is `v2`, which refers to Sun GlassFish
+    Enterprise Server version 2 or Sun Java System Application Server
+    version 9.1 or 9.1.1.Beginning in Jakarta EE 6, the Jakarta EE platform
+    specification imposed stricter requirements than Jakarta EE 5 did on
+    which JAR files can be visible to various modules within an EAR
+    file. In particular, application clients must not have access to EJB
+    JAR files or other JAR files in the EAR file unless references use
+    the standard Java SE mechanisms (extensions, for example) or the
+    Jakarta EE library-directory mechanism. Setting this property to `v2`
+    removes these restrictions.
+  `keepSessions={false|true}`;;
+    Superseded by the `--keepstate` option. +
+    If the `--force` option is set to `true`, this property can by used
+    to specify whether active sessions of the application that is being
+    redeployed are preserved and then restored when the redeployment is
+    complete. Applies to HTTP sessions in a web container.
+    Default is `false`.
++
+--
+    `false`::
+      Active sessions of the application are not preserved and restored
+      (default).
+    `true`::
+      Active sessions of the application are preserved and restored. +
+      If any active session of the application fails to be preserved or
+      restored, none of the sessions will be available when the
+      redeployment is complete. However, the redeployment continues and
+      a warning is logged. +
+      To preserve active sessions, {productName} serializes the
+      sessions and saves them in memory. To restore the sessions, the
+      class loader of the newly redeployed application deserializes any
+      sessions that were previously saved.
+--
+  `preserveAppScopedResources`;;
+    If set to `true`, preserves any application-scoped resources and
+    restores them during redeployment. Default is `false`.
+
++
+Other available properties are determined by the implementation of the
+  component that is being redeployed. +
+For components packaged as OSGi bundles (`--type=osgi`), the `deploy`
+  subcommand accepts properties arguments to wrap a WAR file as a WAB
+  (Web Application Bundle) at the time of deployment. The subcommand
+  looks for a key named `UriScheme` and, if present, uses the key as a
+  URL stream handler to decorate the input stream. Other properties are
+  used in the decoration process. For example, the {productName}
+  OSGi web container registers a URL stream handler named `webbundle`,
+  which is used to wrap a plain WAR file as a WAB. For more information
+  about usage, see the example in this help page.
+
+[[sthref1018]]
+
+=== Operands
+
+file_archive|filepath::
+  The path to the archive that contains the application that is being
+  deployed. This path can be a relative path or an absolute path. +
+  The archive can be in either of the following formats:
+
+  * An archive file, for example, `/export/JEE_apps/hello.war`. +
+  If the `--upload` option is set to `true`, this is the path to the
+  deployable file on the local client machine. If the `--upload` option
+  is set to `false`, this is the path to the file on the server machine.
+  * A directory that contains the exploded format of the deployable
+  archive. This is the path to the directory on the server machine.
+
++
+If you specify a directory, the `--upload` option is ignored.
+
+[[sthref1019]]
+
+=== Examples
+
+[[GSRFM584]][[sthref1020]]
+
+==== Example 1   Deploying an Enterprise Application
+
+This example deploys the enterprise application packaged in the
+`Cart.ear` file to the default server instance `server`. You can use the
+`--target` option to deploy to a different server instance or to a
+cluster.
+
+[source]
+----
+asadmin> deploy Cart.ear
+Application deployed successfully with name Cart.
+Command deploy executed successfully
+----
+
+[[GSRFM585]][[sthref1021]]
+
+==== Example 2   Deploying a Web Application With the Default Context Root
+
+This example deploys the web application in the `hello.war` file to the
+default server instance `server`. You can use the `--target` option to
+deploy to a different server instance or to a cluster.
+
+[source]
+----
+asadmin> deploy hello.war
+Application deployed successfully with name hello.
+Command deploy executed successfully
+----
+
+[[GSRFM586]][[sthref1022]]
+
+==== Example 3   Forcibly Deploying a Web Application With a Specific Context Root
+
+This example forcibly deploys the web application in the `hello.war`
+file. The context root of the deployed web application is `greetings`.
+If the application has already been deployed, it is redeployed.
+
+[source]
+----
+asadmin> deploy --force=true --contextroot greetings hello.war
+Application deployed successfully with name hello.
+Command deploy executed successfully
+----
+
+[[GSRFM587]][[sthref1023]]
+
+==== Example 4   Deploying an Enterprise Bean
+
+This example deploys a component based on the EJB specification
+(enterprise bean) with CMP and creates the database tables used by the
+bean.
+
+This example uses the `--target` option. The target in this example is
+an existing cluster, `cluster1`.
+
+[source]
+----
+asadmin> deploy --createtables=true --target cluster1 EmployeeEJB.jar
+Application deployed successfully with name EmployeeEJB.
+Command deploy executed successfully
+----
+
+[[GSRFM588]][[sthref1024]]
+
+==== Example 5   Deploying a Connector Module
+
+This example deploys a connector module that is packaged in a RAR file.
+
+This example uses the `--target` option. The target in this example is
+an existing standalone server instance that does not belong to a
+cluster.
+
+[source]
+----
+asadmin> deploy --target myinstance jdbcra.rar
+Application deployed successfully with name jdbcra.
+Command deploy executed successfully
+----
+
+[[GSRFM856]][[sthref1025]]
+
+==== Example 6   Specifying the Deployment Order for an Application
+
+This example specifies the deployment order for two applications. The
+`cart` application is loaded before the `horse` application at server
+startup.
+
+Some lines of output are omitted from this example for readability.
+
+[source]
+----
+asadmin> deploy --deploymentorder 102 --name cart cart.war
+...
+asadmin> deploy --deploymentorder 110 --name horse horse.war
+...
+----
+
+[[GSRFM857]][[sthref1026]]
+
+==== Example 7   Deploying an Application Using an Alternate Jakarta EE Deployment Descriptor File
+
+This example deploys an application using a Jakarta EE standard deployment
+descriptor file that resides outside of the application archive.
+
+[source]
+----
+asadmin> deploy --altdd path_to_alternate_descriptor cart.ear
+Application deployed successfully with name cart.
+Command deploy executed successfully
+----
+
+[[GSRFM858]][[sthref1027]]
+
+==== Example 8   Deploying an Application Using an Alternate
+{productName} Deployment Descriptor File
+
+This example deploys an application using a {productName} runtime
+deployment descriptor file that resides outside of the application
+archive.
+
+[source]
+----
+asadmin> deploy --runtimealtdd path_to_alternate_runtime_descriptor horse.ear
+Application deployed successfully with name horse.
+Command deploy executed successfully
+----
+
+[[GSRFM883]][[sthref1028]]
+
+==== Example 9   Wrapping a WAR File as a WAB
+
+This example wraps a plain WAR file as a WAB when an OSGi bundle is
+deployed, and is specific to components packaged as OSGi bundles.
+
+The backslash (\) character is used to escape characters in the command.
+For more information about escape characters in options for the
+`asadmin` utility, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+help page.
+
+[source]
+----
+asadmin deploy --type osgi \
+--properties "UriScheme=webbundle:Bundle-SymbolicName=bar:\
+Import-Package=javax.servlet;javax.servlet.http;
+%20version\\=3.0;resolution\\:
+=mandatory:Web-ContextPath=/foo" \
+/tmp/test_sample1.war
+Application deployed successfully with name sample1.
+Command deploy executed successfully
+----
+
+[[sthref1029]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1030]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:get.html#get-1[`get`(1)],
+link:list-components.html#list-components-1[`list-components`(1)],
+link:redeploy.html#redeploy-1[`redeploy`(1)],
+link:set.html#set-1[`set`(1)],
+link:undeploy.html#undeploy-1[`undeploy`(1)]
+
+link:application-deployment-guide.html#GSDPG[{productName} Application Deployment
+Guide]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/deploydir.adoc b/docs/reference-manual/src/main/asciidoc/deploydir.adoc
new file mode 100644
index 0000000..21bea2a
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/deploydir.adoc
@@ -0,0 +1,433 @@
+type=page
+status=published
+title=deploydir
+next=disable.html
+prev=deploy.html
+~~~~~~
+
+= deploydir
+
+[[deploydir-1]][[GSRFM00115]][[deploydir]]
+
+== deploydir
+
+Deploys an exploded format of application archive
+
+[[sthref1031]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] deploydir [--help]
+[--force={false|true}]
+[--virtualservers virtual_servers]
+[--contextroot context_root]
+[--verify={false|true}]
+[--precompilejsp={false|true}]
+[--name component-name]
+[--retrieve local_dirpath]
+[--uniquetablenames={true|false}]
+[--dbvendorname dbvendorname]
+[--createtables={false|true}|--dropandcreatetables={false|true}]
+[--deploymentplan deployment_plan]
+[--altdd alternate_deploymentdescriptor]
+[--runtimealtdd runtime_alternate_deploymentdescriptor]
+[--deploymentorder deployment_order]
+[--enabled={true|false}]
+[--generatermistubs={false|true}]
+[--availabilityenabled={false|true}]
+[--asyncreplication={true|false}]
+[--lbenabled={true|false}]
+[--keepstate={false|true}]
+[--libraries jar_file[,jar_file]*]
+[--target target]
+[--type pkg-type]
+[--properties(name=value)[:name=value]*]
+dirpath
+----
+
+[[sthref1032]]
+
+=== Description
+
+[NOTE]
+====
+The `deploydir` subcommand is deprecated. Use the `deploy` subcommand
+instead.
+====
+
+The `deploydir` subcommand deploys an application directly from a
+development directory. The appropriate directory hierarchy and
+deployment descriptors conforming to the Jakarta EE specification must
+exist in the deployment directory.
+
+Directory deployment is for advanced developers only. Do not use
+`deploydir` in production environments. Instead, use the `deploy`
+subcommand. Directory deployment is only supported on localhost, that
+is, the client and server must reside on the same machine. For this
+reason, the only values for the `--host` option are:
+
+* `localhost`
+* The value of the `$HOSTNAME` environment variable
+* The IP address of the machine
+
+If the `--uniquetablenames`, `--createtables`, and
+`--dropandcreatetables` options are not specified, the entries in the
+deployment descriptors are used.
+
+The `--force` option makes sure the component is forcefully (re)deployed
+even if the specified component has already been deployed or already
+exists. Set the `--force` option to false for an initial deployment. If
+the specified application is running and the `--force` option is set to
+false, the subcommand fails.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1033]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--force`::
+  If set to `true`, redeploys the component even if the specified
+  component has already been deployed or already exists. Default is
+  `false`.
+`--virtualservers`::
+  One or more virtual server IDs. Multiple IDs are separated by commas.
+`--contextroot`::
+  Valid only if the archive is a web module. It is ignored for other
+  archive types; it will be the value specified by default-context-path
+  in web.xml, if specified; defaults to filename without extension.
+`--precompilejsp`::
+  By default this option does not allow the JSP to be precompiled during
+  deployment. Instead, JSPs are compiled during runtime. Default is
+  `false`.
+`--verify`::
+  If set to true and the required verifier packages are installed from
+  the Update Tool, the syntax and semantics of the deployment descriptor
+  is verified. Default is `false`.
+`--name`::
+  Name of the deployable component. +
+  The name can include an optional version identifier, which follows the
+  name and is separated from the name by a colon (`:`). The version
+  identifier must begin with a letter or number. It can contain
+  alphanumeric characters plus underscore (`_`), dash (`-`), and period
+  (`.`) characters. For more information about module and application
+  versions, see "link:application-deployment-guide/overview.html#GSDPG00324[
+  Module and Application Versions]" in
+  {productName} Application Deployment Guide.
+`--retrieve`::
+  Retrieves the client stub JAR file from the server machine to the
+  local directory.
+`--dbvendorname`::
+  Specifies the name of the database vendor for which tables are
+  created. Supported values include `db2`, `mssql`, `mysql`, `oracle`,
+  `derby`, `javadb`, `postgresql`, and `sybase`. These values are
+  case-insensitive. If not specified, the value of the
+  `database-vendor-name` attribute in `glassfish-ejb-jar.xml` is used.
+  If no value is specified, a connection is made to the resource
+  specified by the `jndi-name` subelement of the `cmp-resource` element
+  in the `glassfish-ejb-jar.xml` file, and the database vendor name is
+  read. If the connection cannot be established, or if the value is not
+  recognized, SQL-92 compliance is presumed.
+`--createtables`::
+  If specified as true, creates tables at deployment of an application
+  with unmapped CMP beans. If specified as false, tables are not
+  created. If not specified, the value of the `create-tables-at-deploy`
+  entry in the `cmp-resource` element of the `glassfish-ejb-jar.xml`
+  file determines whether or not tables are created. No unique
+  constraints are created for the tables.
+`--dropandcreatetables`::
+  If specified as true when the component is redeployed, the tables
+  created by the previous deployment are dropped before creating the new
+  tables. Applies to deployed applications with unmapped CMP beans.
+  Preexisting tables will not be dropped on the initial deployment of an
+  application or on a deployment that follows an explicit undeploy. If
+  specified as false, tables are neither dropped nor created. If not
+  specified, the tables are dropped if the `drop-tables-at-undeploy`
+  entry in the `cmp-resource` element of the `glassfish-ejb-jar.xml`
+  file is set to true, and the new tables are created if the
+  `create-tables-at-deploy` entry in the `cmp-resource` element of the
+  `glassfish-ejb-jar.xml` file is set to true.
+`--uniquetablenames`::
+  Guarantees unique table names for all the beans and results in a hash
+  code added to the table names. This is useful if you have an
+  application with case-sensitive bean names. Applies to applications
+  with unmapped CMP beans.
+`--deploymentplan`::
+  Deploys the deployment plan, which is a JAR file that contains
+  {productName} descriptors. Specify this option when deploying a
+  pure EAR file. A pure EAR file is an EAR without {productName}
+  descriptors.
+`--altdd`::
+  Deploys the application using a Jakarta EE standard deployment descriptor
+  that resides outside of the application archive. Specify an absolute
+  path or a relative path to the alternate deployment descriptor file.
+  The alternate deployment descriptor overrides the top-level deployment
+  descriptor packaged in the archive. For example, for an EAR, the
+  `--altdd` option overrides `application.xml`. For a standalone module,
+  the `--altdd` option overrides the top-level module descriptor such as
+  `web.xml`.
+`--runtimealtdd`::
+  Deploys the application using a {productName} runtime deployment
+  descriptor that resides outside of the application archive. Specify an
+  absolute path or a relative path to the alternate deployment
+  descriptor file. The alternate deployment descriptor overrides the
+  top-level deployment descriptor packaged in the archive. For example,
+  for an EAR, the `--runtimealtdd` option overrides
+  `glassfish-application.xml`. For a standalone module, the
+  `--runtimealtdd` option overrides the top-level module descriptor such
+  as `glassfish-web.xml`. Applies to {productName} deployment
+  descriptors only (`glassfish-*.xml`); the name of the alternate
+  deployment descriptor file must begin with `glassfish-`. Does not
+  apply to `sun-*.xml` deployment descriptors, which are deprecated.
+`--deploymentorder`::
+  Specifies the deployment order of the application. This is useful if
+  the application has dependencies and must be loaded in a certain order
+  at server startup. The deployment order is specified as an integer.
+  The default value is 100. Applications with lower numbers are loaded
+  before applications with higher numbers. For example, an application
+  with a deployment order of 102 is loaded before an application with a
+  deployment order of 110. If a deployment order is not specified, the
+  default value of 100 is assigned. If two applications have the same
+  deployment order, the first application to be deployed is the first
+  application to be loaded at server startup. +
+  The deployment order is typically specified when the application is
+  first deployed but can also be specified or changed after initial
+  deployment using the `set` subcommand. You can view the deployment
+  order of an application using the `get` subcommand
+`--enabled`::
+  Allows users to access the application. If set to `false`, users will
+  not be able to access the application. This option enables the
+  application on the specified target instance or cluster. If you deploy
+  to the target `domain`, this option is ignored, since deploying to the
+  domain doesn't deploy to a specific instance or cluster. The default
+  is `true`.
+`--generatermistubs`::
+  If set to `true`, static RMI-IIOP stubs are generated and put into the
+  `client.jar`. If set to `false`, the stubs are not generated.
+  Default is `false`.
+`--availabilityenabled`::
+  This option controls whether high-availability is enabled for web
+  sessions and for stateful session bean (SFSB) checkpointing and
+  potentially passivation. If set to false (default) all web session
+  saving and SFSB checkpointing is disabled for the specified
+  application, web application, or EJB module. If set to true, the
+  specified application or module is enabled for high-availability. Set
+  this option to true only if high availability is configured and
+  enabled at higher levels, such as the server and container levels.
+`--asyncreplication`::
+  This option controls whether web session and SFSB states for which
+  high availability is enabled are first buffered and then replicated
+  using a separate asynchronous thread. If set to true (default),
+  performance is improved but availability is reduced. If the instance
+  where states are buffered but not yet replicated fails, the states are
+  lost. If set to false, performance is reduced but availability is
+  guaranteed. States are not buffered but immediately transmitted to
+  other instances in the cluster.
+`--lbenabled`::
+  This option controls whether the deployed application is available for
+  load balancing. The default is true.
+`--keepstate`::
+  - This option controls whether web sessions, SFSB instances, and
+  persistently created EJB timers are retained between redeployments. +
+  The default is false. This option is supported only on the default
+  server instance, named `server`. It is not supported and ignored for
+  any other target.
+  - Some changes to an application between redeployments prevent this
+  feature from working properly. For example, do not change the set of
+  instance variables in the SFSB bean class. +
+  For web applications, this feature is applicable only if in the
+  `glassfish-web-app.xml` file the `persistence-type` attribute of the
+  `session-manager` element is `file`.
+  - For stateful session bean instances, the persistence type without high
+  availability is set in the server (the `sfsb-persistence-type`
+  attribute) and must be set to `file`, which is the default and
+  recommended value.
+  - If any active web session, SFSB instance, or EJB timer fails to be
+  preserved or restored, none of these will be available when the
+  redeployment is complete. However, the redeployment continues and a
+  warning is logged.
+  - To preserve active state data, {productName} serializes the data
+  and saves it in memory. To restore the data, the class loader of the
+  newly redeployed application deserializes the data that was previously saved.
+`--libraries`::
+  A comma-separated list of library JAR files. Specify the library JAR
+  files by their relative or absolute paths. Specify relative paths
+  relative to domain-dir`/lib/applibs`. The libraries are made available
+  to the application in the order specified.
+`--target`::
+  Specifies the target to which you are deploying. Valid values are:
++
+  `server`;;
+    Deploys the component to the default server instance `server` and is
+    the default value.
+  `domain`;;
+    Deploys the component to the domain. If `domain` is the target for
+    an initial deployment, the application is deployed to the domain,
+    but no server instances or clusters reference the application. If
+    `domain` is the target for a redeployment (the `--force` option is
+    set to true), and dynamic reconfiguration is enabled for the
+    clusters or server instances that reference the application, the
+    referencing clusters or server instances automatically get the new
+    version of the application. If redeploying, and dynamic
+    configuration is disabled, the referencing clusters or server
+    instances do not get the new version of the application until the
+    clustered or standalone server instances are restarted.
+  cluster_name;;
+    Deploys the component to every server instance in the cluster.
+  instance_name;;
+    Deploys the component to a particular stand-alone server instance.
+`--type`::
+  The packaging archive type of the component that is being deployed.
+  Possible values are as follows:
+
+  `car`;;
+    The component is packaged as a CAR file.
+  `ear`;;
+    The component is packaged as an EAR file.
+  `ejb`;;
+    The component is an EJB packaged as a JAR file.
+  `osgi`;;
+    The component is packaged as an OSGi bundle.
+  `rar`;;
+    The component is packaged as a RAR file.
+  `war`;;
+    The component is packaged as a WAR file.
+
+`--properties` or `--property`::
+  Optional keyword-value pairs that specify additional properties for
+  the deployment. The available properties are determined by the
+  implementation of the component that is being deployed or redeployed.
+  The `--properties` option and the `--property` option are equivalent.
+  You can use either option regardless of the number of properties that
+  you specify. +
+  You can specify the following properties for a deployment:
+
+  `jar-signing-alias`;;
+    Specifies the alias for the security certificate with which the
+    application client container JAR file is signed. Java Web Start will
+    not run code that requires elevated permissions unless it resides in
+    a JAR file signed with a certificate that the user's system trusts.
+    For your convenience, {productName} signs the JAR file
+    automatically using the certificate with this alias from the
+    domain's keystore. Java Web Start then asks the user whether to
+    trust the code and displays the {productName} certificate
+    information. To sign this JAR file with a different certificate, add
+    the certificate to the domain keystore, then use this property. For
+    example, you can use a certificate from a trusted authority, which
+    avoids the Java Web Start prompt, or from your own company, which
+    users know they can trust. Default is `s1as`, the alias for the
+    self-signed certificate created for every domain.
+  `java-web-start-enabled`;;
+    Specifies whether Java Web Start access is permitted for an
+    application client module. Default is true.
+  `compatibility`;;
+    Specifies the {productName} release with which to be backward
+    compatible in terms of JAR visibility requirements for applications.
+    The only allowed value is `v2`, which refers to Sun GlassFish
+    Enterprise Server version 2 or Sun Java System Application Server
+    version 9.1 or 9.1.1. Beginning in Jakarta EE 6, the Jakarta EE platform
+    specification imposed stricter requirements than Jakarta EE 5 did on
+    which JAR files can be visible to various modules within an EAR
+    file. In particular, application clients must not have access to EJB
+    JAR files or other JAR files in the EAR file unless references use
+    the standard Java SE mechanisms (extensions, for example) or the
+    Jakarta EE library-directory mechanism. Setting this property to `v2`
+    removes these restrictions.
+  `keepSessions={false|true}`;;
+    Superseded by the `--keepstate` option. +
+    If the `--force` option is set to `true`, this property can by used
+    to specify whether active sessions of the application that is being
+    redeployed are preserved and then restored when the redeployment is
+    complete. Applies to HTTP sessions in a web container. Default is
+    `false`.::
+    `false`::
+      Active sessions of the application are not preserved and restored
+      (default).
+    `true`::
+      Active sessions of the application are preserved and restored. +
+      If any active session of the application fails to be preserved or
+      restored, none of the sessions will be available when the
+      redeployment is complete. However, the redeployment continues and
+      a warning is logged. +
+      To preserve active sessions, {productName} serializes the
+      sessions and saves them in memory. To restore the sessions, the
+      class loader of the newly redeployed application deserializes any
+      sessions that were previously saved.
+  `preserveAppScopedResources`;;
+    If set to `true`, preserves any application-scoped resources and
+    restores them during redeployment. Default is `false`.
+
++
+Other available properties are determined by the implementation of the
+  component that is being redeployed. +
+  For components packaged as OSGi bundles (`--type=osgi`), the `deploy`
+  subcommand accepts properties arguments that can be used to wrap a WAR
+  file as a WAB (Web Application Bundle). The subcommand looks for a key
+  named `UriScheme` and, if present, uses the key as a URL stream
+  handler to decorate the input stream. Other properties are used in the
+  decoration process. The {productName} OSGi web container registers
+  a URL stream handler named `webbundle`, which is used to wrap a plain
+  WAR file as a WAB. For more information about usage, see the related
+  example in the link:deploy.html#deploy-1[`deploy`(1)] help page.
+
+[[sthref1034]]
+
+=== Operands
+
+dirpath::
+  Path to the directory containing the exploded format of the deployable
+  archive. This is the path to the directory on the server machine.
+
+[[sthref1035]]
+
+=== Examples
+
+[[GSRFM589]][[sthref1036]]
+
+==== Example 1   Deploying an Application From a Directory
+
+In this example, the exploded application to be deployed is in the
+`/home/temp/sampleApp` directory. Because the `--force` option is set to
+true, if an application of that name already exists, the application is
+redeployed.
+
+[source]
+----
+asadmin> deploydir --force=true --precompilejsp=true /home/temp/sampleApp
+Application deployed successfully with name sampleApp.
+WARNING : deploydir command deprecated. Please use deploy command instead.
+Command deploydir executed successfully
+----
+
+[[sthref1037]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1038]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:get.html#get-1[`get`(1)], link:deploy.html#deploy-1[`deploy`(1)],
+link:redeploy.html#redeploy-1[`redeploy`(1)],
+link:set.html#set-1[`set`(1)],
+link:undeploy.html#undeploy-1[`undeploy`(1)]
+
+link:application-deployment-guide.html#GSDPG[{productName} Application Deployment
+Guide]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/disable-http-lb-application.adoc b/docs/reference-manual/src/main/asciidoc/disable-http-lb-application.adoc
new file mode 100644
index 0000000..99fba7b
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/disable-http-lb-application.adoc
@@ -0,0 +1,122 @@
+type=page
+status=published
+title=disable-http-lb-application
+next=disable-http-lb-server.html
+prev=disable.html
+~~~~~~
+
+= disable-http-lb-application
+
+[[disable-http-lb-application-1]][[GSRFM00118]][[disable-http-lb-application]]
+
+== disable-http-lb-application
+
+Disables an application managed by a load balancer
+
+[[sthref1047]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] disable-http-lb-application [--help]
+[--timeout 30]
+--name application_name target
+----
+
+[[sthref1048]]
+
+=== Description
+
+The disable `disable-http-lb-application` subcommand disables an
+application for load balancing. The disabled application goes offline
+for load balancing with minimal impact to users. Disabling an
+application gives a finer granularity of control than disabling a server
+instance and is most useful when a cluster is hosting multiple
+independent applications.
+
+Once the application is disabled and the changes have been applied to
+the load balancer, new requests for the application are not forwarded to
+the target. Existing sessions continue to access the application until
+the timeout is reached. This process is known as quiescing.
+
+If an application is deployed across multiple clusters, use this
+subcommand to disable it in one cluster while leaving it enabled in
+others.
+
+If an application is deployed to a single server instance, use this
+subcommand to disable it in that instance while leaving the instance
+itself enabled.
+
+
+[NOTE]
+====
+This subcommand is only applicable to {productName}. This
+subcommand is not applicable to {productName}.
+====
+
+
+[[sthref1049]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--timeout`::
+  The timeout (in minutes) to wait before disabling the specified
+  application. This time allows for the graceful shutdown (quiescing) of
+  the specified application. The default value is 30 minutes. The
+  minimum value is 1 minute.
+`--name`::
+  The name of the application to be disabled.
+
+[[sthref1050]]
+
+=== Operands
+
+target::
+  This operand specifies the server instance or cluster on which to
+  disable the application. Valid values are:
+
+  * cluster_name- The name of a target cluster.
+  * instance_name- The name of a target server instance.
+
+[[sthref1051]]
+
+=== Examples
+
+[[GSRFM592]][[sthref1052]]
+
+==== Example 1   Disabling an Application for Load Balancing
+
+This example, disables an application for load balancing
+
+[source]
+----
+asadmin> disable-http-lb-application --name webapps-simple mycluster
+
+Command disable-http-lb-application executed successfully.
+----
+
+[[sthref1053]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1054]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:enable-http-lb-application.html#enable-http-lb-application-1[`enable-http-lb-application`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/disable-http-lb-server.adoc b/docs/reference-manual/src/main/asciidoc/disable-http-lb-server.adoc
new file mode 100644
index 0000000..1bbe4f9
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/disable-http-lb-server.adoc
@@ -0,0 +1,115 @@
+type=page
+status=published
+title=disable-http-lb-server
+next=disable-monitoring.html
+prev=disable-http-lb-application.html
+~~~~~~
+
+= disable-http-lb-server
+
+[[disable-http-lb-server-1]][[GSRFM00119]][[disable-http-lb-server]]
+
+== disable-http-lb-server
+
+Disables a sever or cluster managed by a load balancer
+
+[[sthref1055]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] disable-http-lb-server [--help]
+[--timeout 30]
+target
+----
+
+[[sthref1056]]
+
+=== Description
+
+The `disable-http-lb-server` subcommand disables a standalone server or
+cluster of servers for load balancing. The disabled server instance or
+cluster goes offline for load balancing with a minimum impact to users.
+
+Once the target has been disabled and the changes have been applied to
+the load balancer, the load balancer stops assigning new requests to the
+target. Session requests with sessions created before disabling the
+target continue to be assigned to that target until the timeout is
+reached. This process is known as quiescing.
+
+Changes are applied the load balancer automatically. You can also
+manually export the configuration using `export-http-lb-config` and copy
+it to the load balancer.
+
+
+[NOTE]
+====
+This subcommand is only applicable to {productName}. This
+subcommand is not applicable to {productName}.
+====
+
+
+[[sthref1057]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--timeout`::
+  The timeout (in minutes) to wait before disabling the specified
+  target. This time allows for the graceful shutdown (quiescing) of the
+  specified target. The default value is 30 minutes. The minimum value
+  is 1 minute.
+
+[[sthref1058]]
+
+=== Operands
+
+target::
+  This operand specifies which server instances and clusters to disable.
+  Valid values are:
+
+  * cluster_name- The name of a target cluster.
+  * instance_name- The name of a target server instance.
+
+[[sthref1059]]
+
+=== Examples
+
+[[GSRFM593]][[sthref1060]]
+
+==== Example 1   Disabling a Cluster for Load Balancing
+
+This example disables load balancing for a cluster named `mycluster`.
+
+[source]
+----
+asadmin> disable-http-lb-server mycluster
+
+Command disable-http-lb-server executed successfully.
+----
+
+[[sthref1061]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1062]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-http-lb-ref.html#create-http-lb-ref-1[`create-http-lb-ref`(1)],
+link:enable-http-lb-server.html#enable-http-lb-server-1[`enable-http-lb-server`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/disable-monitoring.adoc b/docs/reference-manual/src/main/asciidoc/disable-monitoring.adoc
new file mode 100644
index 0000000..25d19b2
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/disable-monitoring.adoc
@@ -0,0 +1,129 @@
+type=page
+status=published
+title=disable-monitoring
+next=disable-secure-admin.html
+prev=disable-http-lb-server.html
+~~~~~~
+
+= disable-monitoring
+
+[[disable-monitoring-1]][[GSRFM00120]][[disable-monitoring]]
+
+== disable-monitoring
+
+Disables monitoring for the server or for specific monitorable modules
+
+[[sthref1063]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] disable-monitoring [--help]
+[--modules module-name][:module-name]*
+----
+
+[[sthref1064]]
+
+=== Description
+
+The `disable-monitoring` subcommand is used to turn off monitoring for
+{productName} or for particular modules during runtime. Changes are
+dynamic, that is, server restart is not required.
+
+Running the `disable-monitoring` subcommand without the `--module`
+option disables the monitoring service by setting the
+`monitoring-enabled` attribute of the `monitoring-service` element to
+`false`. The individual modules retain their monitoring levels, but no
+monitoring data is generated because the entire monitoring service is
+disabled.
+
+This subcommand used with the `--modules` option disables monitoring for
+a module by setting the monitoring level to OFF. The status of the
+monitoring service is not affected. For a list of monitorable modules,
+see the `--modules` option in this help page.
+
+An alternative method for disabling monitoring is to use the `set`
+subcommand. In this case, the server must be restarted for changes to
+take effect.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1065]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--modules`::
+  Disables the specified module or modules by setting the monitoring
+  level to OFF. Multiple modules are separated by : (colon). Monitorable
+  modules include `connector-connection-pool`, `connector-service`,
+  `ejb-container`, `http-service`, `jdbc-connection-pool`, `jersey`,
+  `jpa`, `jms-service`, `jvm`, `security`, `thread-pool`,
+  `transaction-service`, `web-container`, and `web-services-container`.
+  Additional modules can be listed by using the `get` subcommand.
+
+[[sthref1066]]
+
+=== Operands
+
+[[sthref1067]]
+
+=== Examples
+
+[[GSRFM594]][[sthref1068]]
+
+==== Example 1   Disabling the Monitoring Service for {productName}
+
+This example disables monitoring for {productName} in general by
+setting the `enable-monitoring` flag to `false` (default is `true`).
+
+[source]
+----
+asadmin> disable-monitoring
+Command disable-monitoring executed successfully
+----
+
+[[GSRFM595]][[sthref1069]]
+
+==== Example 2   Disabling Monitoring for the Web and EJB Containers
+
+This example disables monitoring for specific containers. Their
+monitoring levels will be set to OFF.
+
+[source]
+----
+asadmin> disable-monitoring --modules web-container:ejb-container
+Command disable-monitoring executed successfully
+----
+
+[[sthref1070]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1071]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:get.html#get-1[`get`(1)],
+link:enable-monitoring.html#enable-monitoring-1[`enable-monitoring`(1)],
+link:list.html#list-1[`list`(1)],
+link:monitor.html#monitor-1[`monitor`(1)], link:set.html#set-1[`set`(1)]
+
+link:monitoring.html#monitoring-5asc[`monitoring`(5ASC)]
+
+"link:administration-guide/monitoring.html#GSADG00011[Administering the Monitoring Service]" in {productName} Administration Guide
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/disable-secure-admin-internal-user.adoc b/docs/reference-manual/src/main/asciidoc/disable-secure-admin-internal-user.adoc
new file mode 100644
index 0000000..8be647a
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/disable-secure-admin-internal-user.adoc
@@ -0,0 +1,94 @@
+type=page
+status=published
+title=disable-secure-admin-internal-user
+next=disable-secure-admin-principal.html
+prev=disable-secure-admin.html
+~~~~~~
+
+= disable-secure-admin-internal-user
+
+[[disable-secure-admin-internal-user-1]][[GSRFM00122]][[disable-secure-admin-internal-user]]
+
+== disable-secure-admin-internal-user
+
+Instructs the {productName} DAS and instances to not use the
+specified admin user to authenticate with each other and to authorize
+admin operations.
+
+[[sthref1079]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] disable-secure-admin-internal-user [--help]
+admin-username
+----
+
+[[sthref1080]]
+
+=== Description
+
+The `disable-secure-admin-internal-user` subcommand disables secure
+admin from using the username (instead of SSL certificates) to
+authenticate the DAS and instances with each other and to authorize
+admin operations.
+
+[[sthref1081]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1082]]
+
+=== Operands
+
+admin-username::
+  The admin user name that {productName} should not use to
+  authenticate the DAS and instances with each other and to authorize
+  admin operations.
+
+[[sthref1083]]
+
+=== Examples
+
+[[GSRFM597]][[sthref1084]]
+
+==== Example 1   Disabling a user name for secure admin
+
+The following example disables secure admin from using username tester
+to authenticate the DAS and instances with each other and to authorize
+admin operations.
+
+[source]
+----
+asadmin> disable-secure-admin-internal-user tester
+
+Command disable-secure-admin-internal-user executed successfully.
+----
+
+[[sthref1085]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1086]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:enable-secure-admin.html#enable-secure-admin-1[`enable-secure-admin`(1)],
+link:enable-secure-admin-internal-user.html#enable-secure-admin-internal-user-1[`enable-secure-admin-internal-user`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/disable-secure-admin-principal.adoc b/docs/reference-manual/src/main/asciidoc/disable-secure-admin-principal.adoc
new file mode 100644
index 0000000..400bb67
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/disable-secure-admin-principal.adoc
@@ -0,0 +1,102 @@
+type=page
+status=published
+title=disable-secure-admin-principal
+next=enable.html
+prev=disable-secure-admin-internal-user.html
+~~~~~~
+
+= disable-secure-admin-principal
+
+[[disable-secure-admin-principal-1]][[GSRFM00123]][[disable-secure-admin-principal]]
+
+== disable-secure-admin-principal
+
+Disables the certificate for authorizing access in secure
+administration.
+
+[[sthref1087]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] disable-secure-admin-principal [--help]
+--alias aliasname | DN
+----
+
+[[sthref1088]]
+
+=== Description
+
+The `disable-secure-admin-principal` subcommand disables the certificate
+as being valid for authorizing access as part of secure administration.
+
+You must specify either the `--alias` option, or the DN.
+
+[[sthref1089]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--alias`::
+  The alias name of the certificate in the truststore. {productName}
+  looks up the certificate in the truststore using that alias and, if
+  found, disables the corresponding DN as being valid for secure
+  administration. Because alias-name must be an alias associated with a
+  certificate currently in the truststore, you may find it most useful
+  for self-signed certificates.
+
+[[sthref1090]]
+
+=== Operands
+
+DN::
+  The distinguished name of the certificate, specified as a
+  comma-separated list in quotes. For example,
+  `"CN=system.amer.oracle.com,OU=GlassFish,O=Oracle Corporation,L=Santa Clara,ST=California,C=US"`
+  .
+
+[[sthref1091]]
+
+=== Examples
+
+[[GSRFM598]][[sthref1092]]
+
+==== Example 1   Disables trust of a DN for secure administration
+
+The following example shows how to disable trust of a DN for authorizing
+access in secure administration.
+
+[source]
+----
+asadmin> disable-secure-admin-principal
+"CN=system.amer.oracle.com,OU=GlassFish,
+O=Oracle Corporation,L=Santa Clara,ST=California,C=US"
+
+Command disable-secure-admin-principal executed successfully.
+----
+
+[[sthref1093]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1094]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:enable-secure-admin.html#enable-secure-admin-1[`enable-secure-admin`(1)],
+link:enable-secure-admin-principal.html#enable-secure-admin-principal-1[`enable-secure-admin-principal`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/disable-secure-admin.adoc b/docs/reference-manual/src/main/asciidoc/disable-secure-admin.adoc
new file mode 100644
index 0000000..b58236a
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/disable-secure-admin.adoc
@@ -0,0 +1,87 @@
+type=page
+status=published
+title=disable-secure-admin
+next=disable-secure-admin-internal-user.html
+prev=disable-monitoring.html
+~~~~~~
+
+= disable-secure-admin
+
+[[disable-secure-admin-1]][[GSRFM00121]][[disable-secure-admin]]
+
+== disable-secure-admin
+
+Disables secure admin if it is already enabled.
+
+[[sthref1072]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] disable-secure-admin [--help]
+----
+
+[[sthref1073]]
+
+=== Description
+
+The `disable-secure-admin` subcommand disables secure admin if it is
+already enabled.
+
+[NOTE]
+====
+You must restart any running servers in the domain after you enable or
+disable secure admin. It is simpler to enable or disable secure admin
+with only the DAS running, then restart the DAS, and then start any
+other instances.
+====
+
+[[sthref1074]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1075]]
+
+=== Examples
+
+[[GSRFM596]][[sthref1076]]
+
+==== Example 1   Disabling `secure admin` for a domain
+
+The following example shows how to disable `secure admin` for a domain.
+
+[source]
+----
+asadmin> disable-secure-admin
+server-config
+default-config
+
+Command disable-secure-admin executed successfully.
+----
+
+[[sthref1077]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1078]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:enable-secure-admin.html#enable-secure-admin-1[`enable-secure-admin`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/disable.adoc b/docs/reference-manual/src/main/asciidoc/disable.adoc
new file mode 100644
index 0000000..6ee7ca1
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/disable.adoc
@@ -0,0 +1,115 @@
+type=page
+status=published
+title=disable
+next=disable-http-lb-application.html
+prev=deploydir.html
+~~~~~~
+
+= disable
+
+[[disable-1]][[GSRFM00116]][[disable]]
+
+== disable
+
+Disables the component
+
+[[sthref1039]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] disable [--help]
+[--target target_name] component_name
+----
+
+[[sthref1040]]
+
+=== Description
+
+The `disable` subcommand immediately disables the specified deployed
+component. If the component has not been deployed, an error message is
+returned.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1041]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  This option specifies the target on which you are disabling the
+  component. Valid values are:
+
+  `server`;;
+    Disables the component on the default server instance `server` and
+    is the default value.
+  domain_name;;
+    Disables the component on the named domain.
+  cluster_name;;
+    Disables the component on every server instance in the cluster.
+  instance_name;;
+    Disables the component on a particular clustered or stand-alone
+    server instance.
+
+[[sthref1042]]
+
+=== Operands
+
+component_name::
+  name of the component to be disabled. +
+  The name can include an optional version identifier, which follows the
+  name and is separated from the name by a colon (`:`). The version
+  identifier must begin with a letter or number. It can contain
+  alphanumeric characters plus underscore (`_`), dash (`-`), and period
+  (`.`) characters. To disable multiple versions, you can use an
+  asterisk (`*`) as a wildcard character. For more information about
+  module and application versions, see "link:application-deployment-guide/overview.html#GSDPG00324[Module and
+  Application Versions]" in {productName}
+  Application Deployment Guide.
+
+[[sthref1043]]
+
+=== Examples
+
+[[GSRFM590]][[sthref1044]]
+
+==== Example 1   Disabling a Component
+
+This example disables the deployed component `sampleApp`.
+
+[source]
+----
+asadmin> disable sampleApp
+Command disable executed successfully
+----
+
+[[sthref1045]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1046]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:deploy.html#deploy-1[`deploy`(1)],
+link:enable.html#enable-1[`enable`(1)],
+link:undeploy.html#undeploy-1[`undeploy`(1)]
+
+link:application-deployment-guide.html#GSDPG[{productName} Application Deployment
+Guide]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/domain.adoc b/docs/reference-manual/src/main/asciidoc/domain.adoc
new file mode 100644
index 0000000..829aa60
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/domain.adoc
@@ -0,0 +1,32 @@
+type=page
+status=published
+title=domain
+next=dotted-names.html
+prev=configuration.html
+~~~~~~
+
+= domain
+
+[[domain-5asc]][[GSRFM00267]][[domain]]
+
+== domain
+
+Domains have their own configurations.
+
+[[sthref2396]]
+
+=== Description
+
+A domain provides a common authentication and administration point for a
+collection of zero or more server instances. The administration domain
+encompasses several manageable resources, including instances, clusters,
+and their individual resources. A manageable resource, such as a server
+instance, may belong to only one domain.
+
+[[sthref2397]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/dotted-names.adoc b/docs/reference-manual/src/main/asciidoc/dotted-names.adoc
new file mode 100644
index 0000000..41da17a
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/dotted-names.adoc
@@ -0,0 +1,235 @@
+type=page
+status=published
+title=dotted-names
+next=instance.html
+prev=domain.html
+~~~~~~
+
+= dotted-names
+
+[[dotted-names-5asc]][[GSRFM00268]][[dotted-names]]
+
+== dotted-names
+
+Syntax for using periods to separate name elements
+
+[[sthref2398]]
+
+=== Description
+
+A dotted name is an identifier for a particular {productName}
+element, such as a configurable or a monitorable object. A dotted name
+uses the period (.), known as dot, as a delimiter to separate the parts
+of an element name. The period in a dotted name is similar to the slash
+(/) character that delimits the levels in the absolute path name of a
+file in the UNIX file system.
+
+The subcommands of the `asadmin` utility use dotted names as follows:
+
+* The `list` subcommand provides the fully qualified dotted names of the
+management components' attributes.
+* The `get` subcommand provides access to the attributes.
+* The `set` subcommand enables you to modify configurable attributes and
+set properties.
+
+The configuration hierarchy is loosely based on the domain's schema
+document, and the attributes are modifiable. The attributes of the
+monitoring hierarchy are read-only.
+
+The following format is used for configuration dotted names (italic
+indicates replaceable):
+
+config-name`.`config-element-name`.`primary-key`.`attribute-name `|`
+instance-name`.`config-element-name`.`primary-key`.`attribute-name
+
+The following format is used for resource dotted names (italic indicates
+replaceable):
+
+server-name`.`resource-name`.`primary-key`.`attribute-name
+`| domain.resources.`resource-name`.`primary-key`.`attribute-name
+
+The following rules apply to forming dotted names:
+
+* The top-level is configuration, server, or domain name. For example,
+`server-config` (default configuration), `server` (default server), or
+`domain1` (default domain).
+* A dot (.) always separates two sequential parts of the name.
+* A part of the name usually identifies a server subsystem or its
+specific instance. For example, `web-container`, `log-service`,
+`thread-pool-1`.
+* If any part of the name itself contains a dot (.), then the dot must
+be escaped with a leading `\` (backslash) so that the `.` (dot) does not
+act like a delimiter. For further information on escape characters, see
+the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+* An `\*` (asterisk) character can be used anywhere in the dotted name
+and acts like the wildcard character in regular expressions.
+Additionally, an `*` can collapse all the parts of the dotted name. For
+example, a long dotted name such as `this.is.really.long.hierarchy` can
+be abbreviated to `th*.hierarchy`. The `.` (dot) always delimits the
+parts of the dotted name.
++
+[NOTE]
+====
+Characters that have special meaning to the shell or command
+interpreter, such as * (asterisk), should be quoted or escaped as
+appropriate to the shell, for example, by enclosing the argument in
+quotes. In multimode, quotes are needed only for arguments that include
+spaces, quotes, or backslash.
+====
+
+* The `--monitor` option of the `get` and `list` subcommands selects the
+monitoring or configuration hierarchy. If the subcommand specifies
+`--monitor``=false` (the default), the configuration hierarchy is
+selected. If the subcommand specifies `--monitor``=true`, the monitoring
+hierarchy is selected.
+* If you know the complete dotted name and do not need to use a
+wildcard, the `list`, `get`, and `set` subcommands treat the name
+differently:
+
+** The `list` subcommand treats a complete dotted name as the name of a
+parent node in the abstract hierarchy. When you specify this name to the
+`list` subcommand, the names of the immediate children at that level are
+returned. For example, the following command lists all the web modules
+deployed to the domain or the default server:
++
+[source]
+----
+asadmin> list server.applications.web-module
+----
+
+** The `get` and `set` subcommands treat a complete dotted name as the
+fully qualified name of the attribute of a node (whose dotted name
+itself is the name that you get when you remove the last part of this
+dotted name). When you specify this name to the `get` or `set`
+subcommand, the subcommand acts on the value of that attribute, if such
+an attribute exists. You will never start with this case because in
+order to find out the names of attributes of a particular node in the
+hierarchy, you must use the * wildcard character . For example, the
+following dotted name returns the context root of the web application
+deployed to the domain or default server:
++
+[source]
+----
+server.applications.web-module.JSPWiki.context-root
+----
+
+[[sthref2399]]
+
+=== Examples
+
+[[GSRFM815]][[sthref2400]]
+
+==== Example 1   Listing All Configurable Elements
+
+This example lists all the configurable elements.
+
+[source]
+----
+asadmin> list *
+----
+
+Output similar to the following is displayed:
+
+[source]
+----
+applications
+configs
+configs.config.server-config
+configs.config.server-config.admin-service
+configs.config.server-config.admin-service.das-config
+configs.config.server-config.admin-service.jmx-connector.system
+configs.config.server-config.admin-service.property.adminConsoleContextRoot
+configs.config.server-config.admin-service.property.adminConsoleDownloadLocation
+configs.config.server-config.admin-service.property.ipsRoot
+configs.config.server-config.ejb-container
+configs.config.server-config.ejb-container.ejb-timer-service
+configs.config.server-config.http-service
+configs.config.server-config.http-service.access-log
+configs.config.server-config.http-service.virtual-server.__asadmin
+configs.config.server-config.http-service.virtual-server.server
+configs.config.server-config.iiop-service
+configs.config.server-config.iiop-service.iiop-listener.SSL
+configs.config.server-config.iiop-service.iiop-listener.SSL.ssl
+configs.config.server-config.iiop-service.iiop-listener.SSL_MUTUALAUTH
+configs.config.server-config.iiop-service.iiop-listener.SSL_MUTUALAUTH.ssl
+configs.config.server-config.iiop-service.iiop-listener.orb-listener-1
+configs.config.server-config.iiop-service.orb
+configs.config.server-config.java-config
+configs.config.server-config.jms-service
+configs.config.server-config.jms-service.jms-host.default_JMS_host
+configs.config.server-config.mdb-container
+configs.config.server-config.monitoring-service
+configs.config.server-config.monitoring-service.module-monitoring-levels
+...
+property.administrative.domain.name
+resources
+resources.jdbc-connection-pool.DerbyPool
+resources.jdbc-connection-pool.DerbyPool.property.DatabaseName
+resources.jdbc-connection-pool.DerbyPool.property.Password
+resources.jdbc-connection-pool.DerbyPool.property.PortNumber
+resources.jdbc-connection-pool.DerbyPool.property.User
+resources.jdbc-connection-pool.DerbyPool.property.connectionAttributes
+resources.jdbc-connection-pool.DerbyPool.property.serverName
+resources.jdbc-connection-pool.__TimerPool
+resources.jdbc-connection-pool.__TimerPool.property.connectionAttributes
+resources.jdbc-connection-pool.__TimerPool.property.databaseName
+resources.jdbc-resource.jdbc/__TimerPool
+resources.jdbc-resource.jdbc/__default
+servers
+servers.server.server
+servers.server.server.resource-ref.jdbc/__TimerPool
+servers.server.server.resource-ref.jdbc/__default
+system-applications
+Command list executed successfully.
+----
+
+[[GSRFM816]][[sthref2401]]
+
+==== Example 2   Listing All the Monitorable Objects
+
+The following example lists all the monitorable objects.
+
+[source]
+----
+asadmin> list --monitor *
+----
+
+Output similar to the following is displayed:
+
+[source]
+----
+server
+server.jvm
+server.jvm.class-loading-system
+server.jvm.compilation-system
+server.jvm.garbage-collectors
+server.jvm.garbage-collectors.Copy
+server.jvm.garbage-collectors.MarkSweepCompact
+server.jvm.memory
+server.jvm.operating-system
+server.jvm.runtime
+server.network
+server.network.admin-listener
+server.network.admin-listener.connections
+server.network.admin-listener.file-cache
+server.network.admin-listener.keep-alive
+server.network.admin-listener.thread-pool
+server.network.http-listener-1
+server.network.http-listener-1.connections
+server.network.http-listener-1.file-cache
+server.network.http-listener-1.keep-alive
+server.network.http-listener-1.thread-pool
+server.transaction-service
+Command list executed successfully.
+----
+
+[[sthref2402]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:get.html#get-1[`get`(1)], link:list.html#list-1[`list`(1)],
+link:set.html#set-1[`set`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/enable-http-lb-application.adoc b/docs/reference-manual/src/main/asciidoc/enable-http-lb-application.adoc
new file mode 100644
index 0000000..57b5246
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/enable-http-lb-application.adoc
@@ -0,0 +1,101 @@
+type=page
+status=published
+title=enable-http-lb-application
+next=enable-http-lb-server.html
+prev=enable.html
+~~~~~~
+
+= enable-http-lb-application
+
+[[enable-http-lb-application-1]][[GSRFM00126]][[enable-http-lb-application]]
+
+== enable-http-lb-application
+
+Enables a previously-disabled application managed by a load balancer
+
+[[sthref1103]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] enable-http-lb-application [--help]
+--name application_name target
+----
+
+[[sthref1104]]
+
+=== Description
+
+The `enable-http-lb-application` subcommand enables load balancing for
+applications deployed on a standalone instance or cluster. You can
+enable load balancing for an application on all instances in a cluster,
+or on a single standalone server instance. By default, load balancing is
+enabled for applications.
+
+[NOTE]
+====
+This subcommand is only applicable to {productName}. This
+subcommand is not applicable to {productName}.
+====
+
+[[sthref1105]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--name`::
+  The name of the application to be enabled.
+
+[[sthref1106]]
+
+=== Operands
+
+target::
+  This operand specifies on which server instance or cluster to enable
+  the application. Valid values are:
++
+  * cluster_name- The name of a target cluster.
+  * instance_name- The name of a target server instance.
+
+[[sthref1107]]
+
+=== Examples
+
+[[GSRFM601]][[sthref1108]]
+
+==== Example 1   Enabling Load Balancing for an Application
+
+This example enables an application named `webapps-simple` to use load
+balancing on a cluster named `mycluster`.
+
+[source]
+----
+asadmin> enable-http-lb-application --name webapps-simple mycluster
+
+Command enable-http-lb-application executed successfully.
+----
+
+[[sthref1109]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1110]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:disable-http-lb-application.html#disable-http-lb-application-1[`disable-http-lb-application`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/enable-http-lb-server.adoc b/docs/reference-manual/src/main/asciidoc/enable-http-lb-server.adoc
new file mode 100644
index 0000000..2e4a261
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/enable-http-lb-server.adoc
@@ -0,0 +1,98 @@
+type=page
+status=published
+title=enable-http-lb-server
+next=enable-monitoring.html
+prev=enable-http-lb-application.html
+~~~~~~
+
+= enable-http-lb-server
+
+[[enable-http-lb-server-1]][[GSRFM00127]][[enable-http-lb-server]]
+
+== enable-http-lb-server
+
+Enables a previously disabled sever or cluster managed by a load
+balancer
+
+[[sthref1111]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] enable-http-lb-server [--help]
+target
+----
+
+[[sthref1112]]
+
+=== Description
+
+The `enable-http-lb-server` subcommand enables a standalone server
+instance or cluster for load balancing. By default, load balancing is
+enabled for instances and clusters.
+
+[NOTE]
+====
+This subcommand is only applicable to {productName}. This
+subcommand is not applicable to {productName}.
+====
+
+[[sthref1113]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1114]]
+
+=== Operands
+
+target::
+  This operand specifies which server instances and clusters to enable.
+  Valid values are:
+
+  * cluster_name- The name of a target cluster.
+  * instance_name- The name of a target server instance.
+
+[[sthref1115]]
+
+=== Examples
+
+[[GSRFM602]][[sthref1116]]
+
+==== Example 1   Enabling a Cluster for Load Balancing
+
+This example enables load balancing for a cluster named `mycluster`.
+
+[source]
+----
+asadmin> enable-http-lb-server mycluster
+
+Command enable-http-lb-server executed successfully.
+----
+
+[[sthref1117]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1118]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-http-lb-ref.html#create-http-lb-ref-1[`create-http-lb-ref`(1)],
+link:disable-http-lb-server.html#disable-http-lb-server-1[`disable-http-lb-server`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/enable-monitoring.adoc b/docs/reference-manual/src/main/asciidoc/enable-monitoring.adoc
new file mode 100644
index 0000000..ded1862
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/enable-monitoring.adoc
@@ -0,0 +1,173 @@
+type=page
+status=published
+title=enable-monitoring
+next=enable-secure-admin.html
+prev=enable-http-lb-server.html
+~~~~~~
+
+= enable-monitoring
+
+[[enable-monitoring-1]][[GSRFM00128]][[enable-monitoring]]
+
+== enable-monitoring
+
+Enables monitoring for the server or for specific monitorable modules
+
+[[sthref1119]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] enable-monitoring [--help]
+[--target target]
+[--mbean={false|true}]
+[--dtrace={true|false}]
+[--modules modules[=level][:module[=level]]*
+[--pid pid]
+[--options options]]
+----
+
+[[sthref1120]]
+
+=== Description
+
+The `enable-monitoring` subcommand is used to turn on monitoring for
+{productName} or for particular modules during runtime. Changes are
+dynamic, that is, server restart is not required.
+
+By default, the monitoring service is enabled, that is, the
+`monitoring-enabled` attribute of the `monitoring-service` element is
+`true`. However, the default monitoring level for individual modules is
+`OFF`. This subcommand used with the `--modules` option can enable
+monitoring for a given module by setting the monitoring level to HIGH or
+LOW. If level is not specified when running the subcommand, the level
+defaults to HIGH.
+
+The specific meanings of HIGH or LOW are determined by the individual
+containers. For a list of monitorable modules, see the `--modules`
+option in this help page.
+
+An alternative method for enabling monitoring is to use the `set`
+subcommand. In this case, the server must be restarted for changes to
+take effect.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1121]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Specifies the target on which to enabling monitoring. Valid values are
+  as follows:
+
+  `server`;;
+    Enables monitoring for the default server instance `server` and is
+    the default value.
+  configuration-name;;
+    Enables monitoring for the named configuration.
+  cluster-name;;
+    Enables monitoring for every server instance in the cluster.
+  instance-name;;
+    Enables monitoring for a particular server instance.
+
+`--mbean`::
+  Enables Mbean monitoring. Default value is false.
+`--dtrace`::
+  Only usable if the DTrace Monitoring module is present. Enables Oracle
+  Solaris DTrace monitoring. Default value is false.
+`--modules`::
+  Enables specified module or modules by indicating monitoring level.
+  Valid levels are OFF, HIGH, LOW. If level is not specified, the
+  default setting is HIGH. Multiple modules are separated by : (colon).
+  Monitorable modules include `connector-connection-pool`,
+  `connector-service`, `ejb-container`, `http-service`,
+  `jdbc-connection-pool`, `jersey`, `jpa`, `jms-service`, `jvm`,
+  `security`, `thread-pool`, `transaction-service`, `web-container`, and
+  `web-services-container`. Additional modules can be listed by using
+  the `get` subcommand.
+`--pid`::
+  Specifies the {productName} JVM process identifier (PID). When
+  monitoring is enabled, the `btrace-agent` is attached, based on the
+  specified PID. Need to specify only in exceptional cases when the
+  system cannot determine the PID. In this situation, the subcommand
+  prompts for the PID of the corresponding {productName}process.
+`--options`::
+  Sets the following `btrace-agent` options:
+
+  `debug`;;
+    Enables debugging for BTrace. Default value is false.
+
+[[sthref1122]]
+
+=== Examples
+
+[[GSRFM603]][[sthref1123]]
+
+==== Example 1   Enabling the Monitoring Service for {productName}
+
+This example enables monitoring for {productName} in general by
+setting the `enable-monitoring` flag to `true` (default is `true`).
+
+[source]
+----
+asadmin> enable-monitoring
+Command enable-monitoring executed successfully
+----
+
+[[GSRFM604]][[sthref1124]]
+
+==== Example 2   Enabling Monitoring for the Web and EJB Containers
+
+This example enables monitoring for specific containers by setting their
+monitoring levels.
+
+[source]
+----
+asadmin> enable-monitoring --modules web-container=LOW:ejb-container=HIGH
+Command enable-monitoring executed successfully
+----
+
+[[GSRFM605]][[sthref1125]]
+
+==== Example 3   Turning on Debugging for Monitoring
+
+This example turns on debugging.
+
+[source]
+----
+asadmin> enable-monitoring --options debug=true
+Command enable-monitoring executed successfully
+----
+
+[[sthref1126]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1127]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:disable-monitoring.html#disable-monitoring-1[`disable-monitoring`(1)],
+link:get.html#get-1[`get`(1)], link:list.html#list-1[`list`(1)],
+link:monitor.html#monitor-1[`monitor`(1)], link:set.html#set-1[`set`(1)]
+
+link:monitoring.html#monitoring-5asc[`monitoring`(5ASC)]
+
+"link:administration-guide/monitoring.html#GSADG00011[Administering the Monitoring Service]" in {productName} Administration Guide
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/enable-secure-admin-internal-user.adoc b/docs/reference-manual/src/main/asciidoc/enable-secure-admin-internal-user.adoc
new file mode 100644
index 0000000..af9d96b
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/enable-secure-admin-internal-user.adoc
@@ -0,0 +1,141 @@
+type=page
+status=published
+title=enable-secure-admin-internal-user
+next=enable-secure-admin-principal.html
+prev=enable-secure-admin.html
+~~~~~~
+
+= enable-secure-admin-internal-user
+
+[[enable-secure-admin-internal-user-1]][[GSRFM00130]][[enable-secure-admin-internal-user]]
+
+== enable-secure-admin-internal-user
+
+Instructs the {productName} DAS and instances to use the specified
+admin user and the password associated with the password alias to
+authenticate with each other and to authorize admin operations.
+
+[[sthref1135]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] enable-secure-admin-internal-user [--help]
+[--passwordalias pwdaliasname]
+admin-username
+----
+
+[[sthref1136]]
+
+=== Description
+
+The `enable-secure-admin-internal-user` subcommand instructs all servers
+in the domain to authenticate to each other, and to authorize admin
+operations submitted to each other, using an existing admin username and
+password rather than SSL certificates. This generally means that you
+must:
+
+1. Create a valid admin user.
++
+[source]
+----
+asadmin> create-file-user --authrealmname admin-realm --groups
+asadmin newAdminUsername
+----
+2. Create a password alias for the just-created password.
++
+[source]
+----
+asadmin> create-password-alias passwordAliasName
+----
+3. Use that user name and password for inter-process authentication and
+admin authorization.
++
+[source]
+----
+asadmin> enable-secure-admin-internal-user
+--passwordalias passwordAliasName
+newAdminUsername
+----
+
+If {productName} finds at least one secure admin internal user, then
+if secure admin is enabled {productName} processes will not use SSL
+authentication and authorization with each other and will instead use
+username password pairs.
+
+If secure admin is enabled, all {productName} processes continue to
+use SSL encryption to secure the content of the admin messages,
+regardless of how they authenticate to each other.
+
+Most users who use this subcommand will need to set up only one secure
+admin internal user. As a general practice, you should not use the same
+user name and password pair for internal admin communication and for
+admin user login.
+
+If you set up more than one secure admin internal user, you should not
+make any assumptions about which user name and password pair
+{productName} will choose to use for any given admin request.
+
+[[sthref1137]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--passwordalias`::
+  The password alias for the user that {productName} should use for
+  internally authenticating and authorizing the DAS to instances and the
+  instances to the DAS.
+
+[[sthref1138]]
+
+=== Operands
+
+admin-username::
+  The admin user name that {productName} should use for internally
+  authenticating and authorizing the DAS to instances and the instances
+  to the DAS.
+
+[[sthref1139]]
+
+=== Examples
+
+[[GSRFM607]][[sthref1140]]
+
+==== Example 1   Specifying a user name and password for secure admin
+
+The following example allows secure admin to use a user name and
+password alias for authentication and authorization between the DAS and
+instances, instead of certificates.
+
+[source]
+----
+asadmin> enable-secure-admin-internal-user
+--passwordalias passwordAliasName
+newAdminUsername
+----
+
+[[sthref1141]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1142]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:disable-secure-admin-internal-user.html#disable-secure-admin-internal-user-1[`disable-secure-admin-internal-user`(1)],
+link:enable-secure-admin.html#enable-secure-admin-1[`enable-secure-admin`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/enable-secure-admin-principal.adoc b/docs/reference-manual/src/main/asciidoc/enable-secure-admin-principal.adoc
new file mode 100644
index 0000000..ff23bd5
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/enable-secure-admin-principal.adoc
@@ -0,0 +1,119 @@
+type=page
+status=published
+title=enable-secure-admin-principal
+next=export.html
+prev=enable-secure-admin-internal-user.html
+~~~~~~
+
+= enable-secure-admin-principal
+
+[[enable-secure-admin-principal-1]][[GSRFM00131]][[enable-secure-admin-principal]]
+
+== enable-secure-admin-principal
+
+Instructs {productName}, when secure admin is enabled, to accept
+admin requests from clients identified by the specified SSL certificate.
+
+[[sthref1143]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] enable-secure-admin-principal [--help]
+--alias aliasname | DN
+----
+
+[[sthref1144]]
+
+=== Description
+
+The `enable-secure-admin-principal` subcommand instructs
+{productName} to accept admin requests when accompanied by an SSL
+certificate with the specified distinguished name (DN). If you use the
+"`--alias` aliasname" form, then {productName} looks in its
+truststore for a certificate with the specified alias and uses the DN
+associated with that certificate. Otherwise, {productName} records
+the value you specify as the DN.
+
+You must specify either the `--alias` option, or the DN.
+
+You can run `enable-secure-admin-principal` multiple times so that
+{productName} accepts admin requests from a client sending a
+certificate with any of the DNs you specify.
+
+When you run `enable-secure-admin`, {productName} automatically
+records the DNs for the admin alias and the instance alias, whether you
+specify those values or use the defaults. You do not need to run
+`enable-secure-admin-principal` yourself for those certificates. Other
+than these certificates, you must run `enable-secure-admin-principal`
+for any other DN that {productName} should authorize to send admin
+requests. This includes DNs corresponding to trusted certificates (those
+with a certificate chain to a trusted authority.)
+
+[[sthref1145]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--alias`::
+  The alias name of the certificate in the trust store.
+  {productName} looks up certificate in the trust store using that
+  alias and, if found, stores the corresponding DN as being valid for
+  secure administration. Because alias-name must be an alias associated
+  with a certificate currently in the trust store, you may find it most
+  useful for self-signed certificates.
+
+[[sthref1146]]
+
+=== Operands
+
+DN::
+  The distinguished name of the certificate, specified as a
+  comma-separated list in quotes. For example,
+  `"CN=system.amer.oracle.com,OU=GlassFish,O=Oracle Corporation,L=Santa Clara,ST=California,C=US"`.
+
+[[sthref1147]]
+
+=== Examples
+
+[[GSRFM608]][[sthref1148]]
+
+==== Example 1   Trusting a DN for secure administration
+
+The following example shows how to specify a DN for authorizing access
+in secure administration.
+
+[source]
+----
+asadmin> enable-secure-admin-principal
+"CN=system.amer.oracle.com,OU=GlassFish,
+O=Oracle Corporation,L=Santa Clara,ST=California,C=US"
+
+Command enable-secure-admin-principal executed successfully.
+----
+
+[[sthref1149]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1150]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:disable-secure-admin-principal.html#disable-secure-admin-principal-1[`disable-secure-admin-principal`(1)],
+link:enable-secure-admin.html#enable-secure-admin-1[`enable-secure-admin`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/enable-secure-admin.adoc b/docs/reference-manual/src/main/asciidoc/enable-secure-admin.adoc
new file mode 100644
index 0000000..105f098
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/enable-secure-admin.adoc
@@ -0,0 +1,122 @@
+type=page
+status=published
+title=enable-secure-admin
+next=enable-secure-admin-internal-user.html
+prev=enable-monitoring.html
+~~~~~~
+
+= enable-secure-admin
+
+[[enable-secure-admin-1]][[GSRFM00129]][[enable-secure-admin]]
+
+== enable-secure-admin
+
+Enables secure admin (if it is not already enabled), optionally changing
+the alias used for DAS-to-instance admin messages or the alias used for
+instance-to-DAS admin messages.
+
+[[sthref1128]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] enable-secure-admin [--help]
+[--adminalias=alias]
+[--instancealias=alias]
+----
+
+[[sthref1129]]
+
+=== Description
+
+The `enable-secure-admin` subcommand causes the DAS and the instances in
+the domain to use SSL certificates for encrypting the messages they send
+to each other. This subcommand also allows the DAS to accept
+administration messages from remote admin clients such as the asadmin
+utility and IDEs.
+
+
+[NOTE]
+====
+You must restart any running servers in the domain after you enable or
+disable secure admin. It is simpler to enable or disable secure admin
+with only the DAS running, then restart the DAS, and then start any
+other instances.
+====
+
+
+By default, when secure admin is enabled the DAS and the instances use
+these SSL certificates to authenticate to each other as security
+"principals" and to authorize admin access. The `--asadminalias` value
+indicates to the DAS which SSL certificate it should use to identify
+itself to the instances. The `--instancealias` value determines for
+instances which SSL certificate they should use to identify themselves
+to the DAS.
+
+The `enable-secure-admin` subcommand fails if any administrative user in
+the domain has a blank password.
+
+Alternatively, you can use the `enable-secure-admin-internal-user`
+subcommand to cause the servers to identify themselves using a secure
+admin user name and password.
+
+[[sthref1130]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--adminalias`::
+  The alias that refers to the SSL/TLS certificate on the DAS. This
+  alias is used by the DAS to identify itself to instances. The default
+  value is `s1as`.
+`--instancealias`::
+  The alias that refers to the SSL/TLS certificate on the instances.
+  This alias is used by the instances to identify themselves to the DAS.
+  The default value is `glassfish-instance`.
+
+[[sthref1131]]
+
+=== Examples
+
+[[GSRFM606]][[sthref1132]]
+
+==== Example 1   Enabling `secure admin` for a domain
+
+The following example shows how to enable `secure admin` for a domain
+using an admin alias `adtest` and an instance alias `intest`
+
+[source]
+----
+asadmin> enable-secure-admin --adminalias adtest --instancealias intest
+server-config
+default-config
+
+Command enable-secure-admin executed successfully.
+----
+
+[[sthref1133]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1134]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:disable-secure-admin.html#disable-secure-admin-1[`disable-secure-admin`(1)],
+link:enable-secure-admin-principal.html#enable-secure-admin-principal-1[`enable-secure-admin-principal`(1)],
+link:enable-secure-admin-internal-user.html#enable-secure-admin-internal-user-1[`enable-secure-admin-internal-user`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/enable.adoc b/docs/reference-manual/src/main/asciidoc/enable.adoc
new file mode 100644
index 0000000..0a75462
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/enable.adoc
@@ -0,0 +1,116 @@
+type=page
+status=published
+title=enable
+next=enable-http-lb-application.html
+prev=disable-secure-admin-principal.html
+~~~~~~
+
+= enable
+
+[[enable-1]][[GSRFM00124]][[enable]]
+
+== enable
+
+Enables the component
+
+[[sthref1095]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] enable [--help]
+[--target target_name] component_name
+----
+
+[[sthref1096]]
+
+=== Description
+
+The `enable` subcommand enables the specified deployed component. If the
+component is already enabled, then it is re-enabled. If it has not been
+deployed, then an error message is returned.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1097]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  This option specifies the target on which you are enabling the
+  component. Valid values are:
+
+  `server`;;
+    Enables the default server instance `server` and is the default
+    value.
+  domain_name;;
+    Enables the named domain.
+  cluster_name;;
+    Enables every server instance in the cluster.
+  instance_name;;
+    Enables a particular clustered or stand-alone server instance.
+
+[[sthref1098]]
+
+=== Operands
+
+component_name::
+  name of the component to be enabled. +
+  The name can include an optional version identifier, which follows the
+  name and is separated from the name by a colon (`:`). The version
+  identifier must begin with a letter or number. It can contain
+  alphanumeric characters plus underscore (`_`), dash (`-`), and period
+  (`.`) characters. For more information about module and application
+  versions, see "link:application-deployment-guide/overview.html#GSDPG00324[
+  Module and Application Versions]" in
+  {productName} Application Deployment Guide. +
+  At most one version of a module or application can be enabled on a
+  server instance. All other versions are disabled. Enabling one version
+  automatically disables all others.
+
+[[sthref1099]]
+
+=== Examples
+
+[[GSRFM599]][[sthref1100]]
+
+==== Example 1   Enabling a Component
+
+This example enables the disabled component, `sampleApp`.
+
+[source]
+----
+asadmin> enable sampleApp
+Command enable executed successfully
+----
+
+[[sthref1101]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1102]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:deploy.html#deploy-1[`deploy`(1)],
+link:disable.html#disable-1[`disable`(1)],
+link:undeploy.html#undeploy-1[`undeploy`(1)]
+
+link:application-deployment-guide.html#GSDPG[{productName} Application Deployment
+Guide]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/export-http-lb-config.adoc b/docs/reference-manual/src/main/asciidoc/export-http-lb-config.adoc
new file mode 100644
index 0000000..03280e0
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/export-http-lb-config.adoc
@@ -0,0 +1,156 @@
+type=page
+status=published
+title=export-http-lb-config
+next=export-sync-bundle.html
+prev=export.html
+~~~~~~
+
+= export-http-lb-config
+
+[[export-http-lb-config-1]][[GSRFM00133]][[export-http-lb-config]]
+
+== export-http-lb-config
+
+Exports the load balancer configuration or load balancer to a file
+
+[[sthref1161]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] export-http-lb-config [--help]
+--config config_name | --lbname load_balancer_name
+[--target target] [--retrievefile=false] [file_name]
+----
+
+[[sthref1162]]
+
+=== Description
+
+The `export-http-lb-config` subcommand exports a load balancer
+configuration or load balancer into a file that the load balancer
+plug-in can use. The default file name is `loadbalancer.xml`, but you
+can specify a different name. Once exported, you manually copy the
+exported file to the load balancer plug-in location before configuration
+changes are applied. The `--target` option makes it possible to generate
+a `loadbalancer.xml` for clusters or standalone instances without having
+to manually create `lb-config` or `load-balancer` elements in the
+target's `domain.xml`.
+
+To apply changes to the load balancer without manually copying the
+configuration file, configure the load balancer to automatically apply
+changes with `create-http-lb`. If you use the `create-http-lb`
+subcommand, you do not need to use `export-http-lb-config`.
+
+
+[NOTE]
+====
+This subcommand is only applicable to {productName}. This
+subcommand is not applicable to {productName}.
+====
+
+
+[[sthref1163]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--config`::
+  Specifies which load balancer configuration to export. +
+  Specify either a load balancer configuration or a load balancer.
+  Specifying both results in an error.
+`--lbname`::
+  Specifies the load balancer to export. +
+  Specify either a load balancer configuration or a load balancer.
+  Specifying both results in an error.
+`--retrievefile`::
+  If set to `true`, retrieves the `loadbalancer.xml` file from the
+  remote machine. The default is `false`.
+`--target`::
+  Specifies the target to which the load balancer configuration will be
+  exported. If a target is not specified, the load balancer
+  configuration is exported to the location specified with file_name.
+
+[[sthref1164]]
+
+=== Operands
+
+file_name::
+  Specifies the file name and location of the exported configuration.
+
+  * If you specify a directory (relative or absolute) but not a file
+  name, the file named `loadbalancer.xml.`load_balancer_config_name is
+  created in the specified directory. On Microsoft Windows systems the
+  path must be in quotes.
+  * If you specify a file name in a relative or absolute path, the file
+  is created with the name you specify in the directory you specify.
+  * If you specify a file name but do not specify a directory, the file
+  is created with that name in the current working directory.
+  * If you do not specify this operand, the default value is a file
+  named `loadbalancer.xml.`load_balancer_config_name created in the
+  domain-dir``/generated`` directory.
+target::
+  Specifies the target to which the configuration will be exported. +
+  Valid values are:
+
+  * cluster_name- Specifies a cluster and its server instances.
+  * stand-alone_instance_name- Specifies a specific server instance.
+
+[[sthref1165]]
+
+=== Examples
+
+[[GSRFM612]][[sthref1166]]
+
+==== Example 1   Exporting a Load Balancer Configuration on UNIX
+
+The following example exports a load balancing configuration named
+`mycluster-http-lb-config` to a file named `loadbalancer.xml` in the
+`/Sun/AppServer` directory .
+
+[source]
+----
+asadmin> export-http-lb-config --config mycluster-http-lb-config /Sun/AppServer/loadbalancer.xml
+Command export-http-lb-config executed successfully.
+----
+
+[[GSRFM613]][[sthref1167]]
+
+==== Example 2   Exporting a Load Balancer Configuration on Windows
+
+The following example exports a load balancing configuration named
+`mycluster-http-lb-config` to a file named `loadbalancer.xml` in the
+`C:\Sun\AppServer` directory on a Microsoft Windows system.
+
+[source]
+----
+asadmin> export-http-lb-config --config mycluster-http-lb-config "C:\Sun\AppServer\loadbalancer.xml"
+Command export-http-lb-config executed successfully.
+----
+
+[[sthref1168]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1169]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-http-lb.html#create-http-lb-1[`create-http-lb`(1)],
+link:create-http-lb-config.html#create-http-lb-config-1[`create-http-lb-config`(1)],
+link:list-http-lb-configs.html#list-http-lb-configs-1[`list-http-lb-configs`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/export-sync-bundle.adoc b/docs/reference-manual/src/main/asciidoc/export-sync-bundle.adoc
new file mode 100644
index 0000000..1f7bfb1
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/export-sync-bundle.adoc
@@ -0,0 +1,157 @@
+type=page
+status=published
+title=export-sync-bundle
+next=flush-connection-pool.html
+prev=export-http-lb-config.html
+~~~~~~
+
+= export-sync-bundle
+
+[[export-sync-bundle-1]][[GSRFM00134]][[export-sync-bundle]]
+
+== export-sync-bundle
+
+Exports the configuration data of a cluster or standalone instance to an
+archive file
+
+[[sthref1170]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] export-sync-bundle [--help]
+--target target
+[--retrieve={false|true}]
+[file-name]
+----
+
+[[sthref1171]]
+
+=== Description
+
+The `export-sync-bundle` subcommand exports the configuration data of a
+cluster or standalone instance to an archive file. The archive file can
+then be used with the
+link:import-sync-bundle.html#import-sync-bundle-1[`import-sync-bundle`(1)]
+subcommand to restore the configuration data.
+
+Importing an instance's configuration data transfers the data to a host
+for an instance without the need for the instance to be able to
+communicate with the domain administration server (DAS). Importing an
+instance's configuration data is typically required for the following
+reasons:
+
+* To reestablish the instance after an upgrade
+* To synchronize the instance manually with the DAS when the instance
+cannot contact the DAS
+
+The subcommand creates an archive that contains the following files and
+directories in the current domain directory:
+
+* All the files in the following directories:
+** `config`
+** `docroot`
+
+* The entire contents of the following directories and their subdirectories:
+** `applications`
+** ``config/``target, where target is the cluster or standalone instance
+for which configuration data is being exported
+** `generated`
+** `lib`
+
+This subcommand is supported in remote mode only.
+
+[[sthref1172]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  The cluster or standalone instance for which to export configuration
+  data. The `--target` option is required. +
+  This option must not specify a clustered {productName} instance.
+  If this option specifies a clustered instance, an error occurs. To
+  export configuration data for a clustered instance, specify the name
+  of the cluster of which the instance is a member, not the instance.
+`--retrieve`::
+  Specifies whether the archive file is downloaded from the DAS host to
+  the host where the subcommand is run.
+  Possible values are as follows:
+
+  `true`;;
+    The archive file is downloaded to the host where the subcommand is
+    run.
+  `false`;;
+    The archive file is not downloaded and remains on the DAS host
+    (default).
+
+[[sthref1173]]
+
+=== Operands
+
+file-name::
+  The file name and location of the archive file to which to export the data.
+  The default depends on the setting of the `--retrieve` option:
+
+  * If `--retrieve` is `false`, the default is
+  `sync/`target`-sync-bundle.zip` in the current domain directory.
+  * If `--retrieve` is `true`, the default is target``-sync-bundle.zip``
+  in the current working directory. +
+  target is the cluster or standalone instance that the `--target`
+  option specifies. +
+  If a relative path is specified, the directory to which the path is
+  appended depends on the setting of the `--retrieve` option:
+
+  * If `--retrieve` is `false`, the path is appended to the `config`
+  subdirectory of the current domain directory.
+  * If `--retrieve` is `true`, the path is appended to the current
+  working directory.
+
++
+If an existing directory is specified without a filename, the file
+  name of the archive file is target``-sync-bundle.zip``, where target is
+  the cluster or standalone instance that the `--target` option specifies.
+
+[[sthref1174]]
+
+=== Examples
+
+[[GSRFM614]][[sthref1175]]
+
+==== Example 1   Exporting the Configuration Data of a Cluster
+
+This example exports the configuration data of the cluster `pmdcluster`.
+
+[source]
+----
+asadmin> export-sync-bundle --target=pmdcluster
+Sync bundle: /export/glassfish7/glassfish/domains/domain1/sync/
+pmdcluster-sync-bundle.zip
+
+Command export-sync-bundle executed successfully.
+----
+
+[[sthref1176]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1177]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:import-sync-bundle.html#import-sync-bundle-1[`import-sync-bundle`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/export.adoc b/docs/reference-manual/src/main/asciidoc/export.adoc
new file mode 100644
index 0000000..84f5735
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/export.adoc
@@ -0,0 +1,129 @@
+type=page
+status=published
+title=export
+next=export-http-lb-config.html
+prev=enable-secure-admin-principal.html
+~~~~~~
+
+= export
+
+[[export-1]][[GSRFM00132]][[export]]
+
+== export
+
+Marks a variable name for automatic export to the environment of
+subsequent commands in multimode
+
+[[sthref1151]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] export [--help]
+[variable-name=value [variable-name=value]*]
+----
+
+[[sthref1152]]
+
+=== Description
+
+In multimode, the `export` subcommand marks an environment variable for
+automatic export to the environment of subsequent commands. All
+subsequent commands use the variable name value as specified unless you
+exit multimode, or use the `unset` subcommand to unset the variable. If
+only the variable name is specified, the current value of that variable
+name is displayed.
+
+If the `export` subcommand is used without any arguments, a list of all
+the exported variables and their values is displayed. Exported shell
+environment variables set prior to invoking the `asadmin` utility are
+imported automatically and set as exported variables within `asadmin`.
+Environment variables that are not exported cannot be read by the
+`asadmin` utility.
+
+This subcommand is supported in local mode only.
+
+[[sthref1153]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1154]]
+
+=== Operands
+
+variable-name=value::
+  Variable name and value for automatic export to the environment to be
+  used by subsequent commands.
+
+[[sthref1155]]
+
+=== Examples
+
+[[GSRFM609]][[sthref1156]]
+
+==== Example 1   Listing the Environment Variables That Are Set
+
+This example lists the environment variables that have been set.
+
+[source]
+----
+asadmin> export
+AS_ADMIN_USER = admin
+AS_ADMIN_HOST = bluestar
+AS_ADMIN_PREFIX = server1.jms-service
+AS_ADMIN_PORT = 8000
+Command export executed successfully
+----
+
+[[GSRFM610]][[sthref1157]]
+
+==== Example 2   Setting an Environment Variable
+
+This example sets the `AS_ADMIN_HOST` environment variable to `bluestar`.
+
+[source]
+----
+asadmin> export AS_ADMIN_HOST=bluestar
+Command export executed successfully
+----
+
+[[GSRFM611]][[sthref1158]]
+
+==== Example 3   Setting Multiple Environment Variables
+
+This example sets a number of environment variables for the multimode environment.
+
+[source]
+----
+asadmin> export AS_ADMIN_HOST=bluestar AS_ADMIN_PORT=8000
+AS_ADMIN_USER=admin AS_ADMIN_PREFIX=server1.jms-service
+Command export executed successfully
+----
+
+[[sthref1159]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1160]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:multimode.html#multimode-1[`multimode`(1)],
+link:unset.html#unset-1[`unset`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/flush-connection-pool.adoc b/docs/reference-manual/src/main/asciidoc/flush-connection-pool.adoc
new file mode 100644
index 0000000..652e0ce
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/flush-connection-pool.adoc
@@ -0,0 +1,112 @@
+type=page
+status=published
+title=flush-connection-pool
+next=flush-jmsdest.html
+prev=export-sync-bundle.html
+~~~~~~
+
+= flush-connection-pool
+
+[[flush-connection-pool-1]][[GSRFM00135]][[flush-connection-pool]]
+
+== flush-connection-pool
+
+Reintializes all connections established in the specified connection
+pool
+
+[[sthref1178]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] flush-connection-pool [--help]
+[--appname application [--modulename module]
+pool_name
+----
+
+[[sthref1179]]
+
+=== Description
+
+The `flush-connection-pool` subcommand resets a JDBC connection pool or
+a connector connection pool to its initial state. Any existing live
+connections are destroyed, which means that the transactions associated
+with these connections are lost. The subcommand then recreates the
+initial connections for the pool, and restores the pool to its steady
+pool size.
+
+This subcommand is supported in remote mode only.
+
+Application Scoped Resources
+
+The `flush-connection-pool` subcommand can target resources that are
+scoped to a specific application or module, as defined in the
+`glassfish-resources.xml` for the GlassFish domain.
+
+* To reference the `jndi-name` for an application scoped resource,
+perform the lookup using the `java:app` prefix.
+* To reference the `jndi-name` for a module scoped resource, perform the
+lookup using the `java:module` prefix.
+
+The `jndi-name` for application-scoped-resources or
+module-scoped-resources are specified using the format
+``java:app/``jdbc/myDataSource or
+``java:module/``jdbc/myModuleLevelDataSource. This naming scope is defined
+in the Jakarta EE Specification
+(`https://jakarta.ee/specifications/platform/10/`).
+
+[[sthref1180]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--appname`::
+  Name of the application in which the application scoped resource is
+  defined.
+`--modulename`::
+  Name of the module in which the module scoped resource is defined.
+
+[[sthref1181]]
+
+=== Operands
+
+pool_name::
+  Name of the connection pool to be reinitialized.
+
+[[sthref1182]]
+
+Flushing a Connection Pool
+
+This example reinitializes the JDBC connection pool named `__TimerPool`.
+
+[source]
+----
+asadmin> flush-connection-pool __TimerPool
+Command flush-connection-pool executed successfully.
+----
+
+[[sthref1183]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1184]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:list-connector-connection-pools.html#list-connector-connection-pools-1[`list-connector-connection-pools`(1)],
+link:list-jdbc-connection-pools.html#list-jdbc-connection-pools-1[`list-jdbc-connection-pools`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/flush-jmsdest.adoc b/docs/reference-manual/src/main/asciidoc/flush-jmsdest.adoc
new file mode 100644
index 0000000..1ff8d33
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/flush-jmsdest.adoc
@@ -0,0 +1,111 @@
+type=page
+status=published
+title=flush-jmsdest
+next=freeze-transaction-service.html
+prev=flush-connection-pool.html
+~~~~~~
+
+= flush-jmsdest
+
+[[flush-jmsdest-1]][[GSRFM00136]][[flush-jmsdest]]
+
+== flush-jmsdest
+
+Purges messages in a JMS destination.
+
+[[sthref1185]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] flush-jmsdest [--help]
+--desttype {topic|queue}
+[--target target]
+destname
+----
+
+[[sthref1186]]
+
+=== Description
+
+The `flush-jmsdest` subcommand purges the messages from a physical
+destination in the server's Java Message Service (JMS) configuration.
+
+This subcommand is supported in remote mode only. Remote `asadmin`
+subcommands require a running domain administration server (DAS).
+
+[[sthref1187]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--desttype`::
+  This option indicates the type of physical destination from which you
+  want to purge messages. The supported destination types are `topic`
+  and `queue`.
+`--target`::
+  Purges messages from the physical destination only for the specified
+  target. Valid values are as follows:
+
+  `server`;;
+    Purges messages from the physical destination for the default server
+    instance. This is the default value.
+  configuration-name;;
+    Purges messages from the physical destination in the specified
+    configuration.
+  cluster-name;;
+    Purges messages from the physical destination for every server
+    instance in the specified cluster.
+  instance-name;;
+    Purges messages from the physical destination for the specified
+    server instance.
+
+[[sthref1188]]
+
+=== Operands
+
+dest_name::
+  The unique identifier of the JMS destination to be purged.
+
+[[sthref1189]]
+
+=== Examples
+
+[[GSRFM615]][[sthref1190]]
+
+==== Example 1   Purging messages from a physical destination
+
+The following subcommand purges messages from the queue named
+`PhysicalQueue`.
+
+[source]
+----
+asadmin> flush-jmsdest --desttype queue PhysicalQueue
+Command flush-jmsdest executed successfully.
+----
+
+[[sthref1191]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1192]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-jmsdest.html#create-jmsdest-1[`create-jmsdest`(1)],
+link:list-jmsdest.html#list-jmsdest-1[`list-jmsdest`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/freeze-transaction-service.adoc b/docs/reference-manual/src/main/asciidoc/freeze-transaction-service.adoc
new file mode 100644
index 0000000..144c490
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/freeze-transaction-service.adoc
@@ -0,0 +1,103 @@
+type=page
+status=published
+title=freeze-transaction-service
+next=generate-jvm-report.html
+prev=flush-jmsdest.html
+~~~~~~
+
+= freeze-transaction-service
+
+[[freeze-transaction-service-1]][[GSRFM00137]][[freeze-transaction-service]]
+
+== freeze-transaction-service
+
+Freezes the transaction subsystem
+
+[[sthref1193]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] freeze-transaction-service [--help]
+[--target target]
+----
+
+[[sthref1194]]
+
+=== Description
+
+The `freeze-transaction-service` subcommand freezes the transaction
+subsystem, preventing the transaction manager from starting, completing,
+or changing the state of all in-flight transactions. Invoke this command
+before rolling back any in-flight transactions. Invoking this subcommand
+on an already frozen transaction subsystem has no effect. Restarting the
+server unfreezes the transaction subsystem. This subcommand is supported
+in remote mode only.
+
+[[sthref1195]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  This option specifies the target on which you are freezing the
+  transaction service. Valid values are:
+
+  `server`;;
+    Freezes the transaction service for the default server instance
+    `server` and is the default value.
+  configuration_name;;
+    Freezes the transaction service for all server instances that use
+    the named configuration.
+  cluster_name;;
+    Freezes the transaction service for every server instance in the
+    cluster.
+  instance_name;;
+    Freezes the transaction service for a particular server instance.
+
+[[sthref1196]]
+
+=== Examples
+
+[[GSRFM616]][[sthref1197]]
+
+==== Example 1   Using freeze-transaction-service
+
+[source]
+----
+% asadmin freeze-transaction-service
+Command freeze-transaction-service executed successfully
+----
+
+[[sthref1198]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1199]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:recover-transactions.html#recover-transactions-1[`recover-transactions`(1)],
+link:rollback-transaction.html#rollback-transaction-1[`rollback-transaction`(1)],
+link:unfreeze-transaction-service.html#unfreeze-transaction-service-1[`unfreeze-transaction-service`(1)]
+
+link:administration-guide/transactions.html#GSADG00022[Administering Transactions]
+in {productName} Administration Guide
+
+https://eclipse-ee4j.github.io/jakartaee-tutorial/#transactions[Transactions]
+in The Jakarta EE Tutorial
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/generate-jvm-report.adoc b/docs/reference-manual/src/main/asciidoc/generate-jvm-report.adoc
new file mode 100644
index 0000000..aa2a005
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/generate-jvm-report.adoc
@@ -0,0 +1,188 @@
+type=page
+status=published
+title=generate-jvm-report
+next=get.html
+prev=freeze-transaction-service.html
+~~~~~~
+
+= generate-jvm-report
+
+The script content on this page is for navigation purposes only and does
+not alter the content in any way.
+
+[[generate-jvm-report-1]][[GSRFM00138]][[generate-jvm-report]]
+
+== generate-jvm-report
+
+Shows the JVM machine statistics for a given target instance
+
+[[sthref1200]]
+
+=== Synopsis
+
+[source]
+----
+generate-jvm-report [--help] [--type=jvm-statistic-type] [--target target]
+----
+
+[[sthref1201]]
+
+=== Description
+
+The `generate-jvm-report` subcommand creates a report that shows the
+threads (dump of stack trace), classes, memory, or loggers for a given
+target instance, including the domain administration server (DAS). If a
+type is not specified, a summary report is generated. This subcommand
+only provides statistics for the {productName} instance processes.
+This subcommand provides an alternative to sending Ctrl+Break or
+`kill -3` signals to {productName} processes to obtain a stack trace
+for processes that are hanging.
+
+The information in the report is obtained from managed beans (MBeans)
+and MXBeans that are provided in the Java Platform, Standard Edition
+(Java SE) or JDK software with which {productName} is being used.
+
+If {productName} is running in the Java Runtime Environment (JRE)
+software from JDK release 11 or Java SE 11, additional information is
+provided. For example:
+
+* System load on the available processors
+* Object monitors that are currently held or requested by a thread
+* Lock objects that a thread is holding, for example, `ReentrantLock`
+objects and `ReentrantReadWriteLock` objects
+
+If the JRE software cannot provide this information, the report contains
+the text `NOT_AVAILABLE`.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1202]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Specifies the target for which you are showing JVM machine statistics.
+  Valid values are as follows:
+
+  `server`;;
+    Specifies the DAS (default).
+  instance-name;;
+    Specifies a {productName} instance.
+  cluster-name;;
+    Specifies a cluster.
+  configuration-name;;
+    Specifies a named configuration.
+`--type`::
+  The type of report that is to be generated. Default is `summary`.
+
+  `summary`;;
+    Displays summary information about the threads, classes, and memory
+    (default).
+  `memory`;;
+    Provides information about heap and non-heap memory consumption,
+    memory pools, and garbage collection statistics for a given target
+    instance.
+  `class`;;
+    Provides information about the class loader for a given target
+    instance.
+  `thread`;;
+    Provides information about threads running and the thread dump
+    (stack trace) for a given target instance.
+  `log`;;
+    Provides information about the loggers that are registered in the
+    Virtual Machine for the Java platform (Java Virtual Machine or JVM
+    machine).link:#sthref1203[^Foot 1 ^]
+
+[[sthref1204]]
+
+=== Examples
+
+[[GSRFM617]][[sthref1205]]
+
+==== Example 1   Obtaining Summary Information for the JVM Machine
+
+This example shows a partial listing of a report that is generated if no
+type is specified. This same report is generated if the `summary` type
+is specified.
+
+[source]
+----
+asadmin> generate-jvm-report
+Operating System Information:
+Name of the Operating System: SunOS
+Binary Architecture name of the Operating System: sparc, Version: 5.10
+Number of processors available on the Operating System: 32
+System load on the available processors for the last minute: 7.921875.
+(Sum of running and queued runnable entities per minute)
+General Java Runtime Environment Information for the VM: 64097@sr1-usca-22
+...
+sun.desktop = gnome
+sun.io.unicode.encoding = UnicodeBig
+sun.java.launcher = SUN_STANDARD
+sun.jnu.encoding = ISO646-US
+sun.management.compiler = HotSpot Client Compiler
+sun.os.patch.level = unknown
+user.dir = /home/thisuser/GlassFish/glassfish7/glassfish/domains/mydomain4/config
+user.home = /home/thisuser
+user.language = en
+user.name = thisuser
+user.timezone = US/Pacific
+Command generate-jvm-report executed successfully
+----
+
+[[GSRFM618]][[sthref1206]]
+
+==== Example 2   Obtaining Information for a Particular JVM Machine Type
+
+This example generates a report that shows information on the class
+loader.
+
+[source]
+----
+asadmin> generate-jvm-report --type=class
+Class loading and unloading in the Java Virtual Machine:
+Number of classes currently loaded in the Java Virtual Machine: 3,781
+Number of classes loaded in the Java Virtual Machine since the startup: 3,868
+Number of classes unloaded from the Java Virtual Machine: 87
+Just-in-time (JIT) compilation information in the Java Virtual Machine:
+Java Virtual Machine compilation monitoring allowed: true
+Name of the Just-in-time (JIT) compiler: HotSpot Client Compiler
+Total time spent in compilation: 0 Hours 0 Minutes 4 Seconds
+Command generate-jvm-report executed successfully.
+----
+
+[[sthref1207]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1208]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-jvm-options.html#create-jvm-options-1[`create-jvm-options`(1)],
+link:delete-jvm-options.html#delete-jvm-options-1[`delete-jvm-options`(1)],
+link:list-jvm-options.html#list-jvm-options-1[`list-jvm-options`(1)]
+
+'''''
+
+
+Footnote Legend
+
+Footnote 1: The terms "Java Virtual Machine" and "JVM" mean a Virtual
+Machine for the Java platform.
++
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/get-active-module-config.adoc b/docs/reference-manual/src/main/asciidoc/get-active-module-config.adoc
new file mode 100644
index 0000000..106d43a
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/get-active-module-config.adoc
@@ -0,0 +1,114 @@
+type=page
+status=published
+title=get-active-module-config
+next=get-client-stubs.html
+prev=get.html
+~~~~~~
+
+= get-active-module-config
+
+[[get-active-module-config-1]][[GSRFM859]][[get-active-module-config]]
+
+== get-active-module-config
+
+Displays the current active configuration of a service or instance
+
+[[sthref1219]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] get-active-module-config [--help]
+[--target target]
+[--all={false|true}]
+[service_name]
+----
+
+[[sthref1220]]
+
+=== Description
+
+The `get-active-module-config` subcommand displays the current active
+configuration of a service or instance.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1221]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Specifies the target for which you want to view the current active
+  configuration of a specific service or an entire instance. +
+  Possible values are as follows:
+
+  `server`;;
+    Displays the current active configuration for the default server
+    instance. This is the default value.
+  `domain`;;
+    Displays the current active configuration for the default domain.
+  cluster-name;;
+    Displays the current active configuration for every server instance
+    in the specified cluster.
+  instance-name;;
+    Displays the current active configuration for the specified
+    instance.
+`--all`::
+  Displays all current active configurations. +
+  The default value is `false`.
+
+[[sthref1222]]
+
+=== Operands
+
+service_name::
+  The name of the module for which you want to display the current
+  active configuration.
+
+[[sthref1223]]
+
+=== Examples
+
+[[GSRFM860]][[sthref1224]]
+
+==== Example 1   Displaying the Current Active Configuration
+
+This example displays the current active configuration for the JMS
+service in `server-config` (the default configuration).
+
+[source]
+----
+asadmin> get-active-module-config jms-service
+At location: domain/configs/config[server-config]
+<jms-service default-jms-host="default_JMS_host" type="EMBEDDED"
+  <jms-host port="7676" host="localhost" name="default_JMS_host"/>
+</jms-service>
+Command get-active-module-config executed successfully.
+----
+
+[[sthref1225]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1226]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-module-config.html#create-module-config-1[`create-module-config`(1)],
+link:delete-module-config.html#delete-module-config-1[`delete-module-config`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/get-client-stubs.adoc b/docs/reference-manual/src/main/asciidoc/get-client-stubs.adoc
new file mode 100644
index 0000000..c816153
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/get-client-stubs.adoc
@@ -0,0 +1,110 @@
+type=page
+status=published
+title=get-client-stubs
+next=get-health.html
+prev=get-active-module-config.html
+~~~~~~
+
+= get-client-stubs
+
+[[get-client-stubs-1]][[GSRFM00140]][[get-client-stubs]]
+
+== get-client-stubs
+
+Retrieves the application JAR files needed to launch the application
+client.
+
+[[sthref1227]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] get-client-stubs [--help]
+--appname application_name
+local_directory_path
+----
+
+[[sthref1228]]
+
+=== Description
+
+The `get-client-stubs` subcommand copies the required JAR files for an
+`AppClient` standalone module or each `AppClient` module in an
+application from the server machine to the local directory. Each
+client's generated JAR file is retrieved, along with any required
+supporting JAR files . The client JAR file name is of the form
+app-name`Client.jar`. Before executing the `get-client-stubs`
+subcommand, you must deploy the application or module. The generated
+client JAR file is useful for running the application using the
+`appclient` utility. This subcommand is supported in remote mode only.
+
+[[sthref1229]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--appname`::
+  The name of the application or stand-alone client module. +
+  The name can include an optional version identifier, which follows the
+  name and is separated from the name by a colon (`:`). The version
+  identifier must begin with a letter or number. It can contain
+  alphanumeric characters plus underscore (`_`), dash (`-`), and period
+  (`.`) characters. For more information about module and application
+  versions, see "link:application-deployment-guide/overview.html#GSDPG00324[
+  Module and Application Versions]" in
+  {productName} Application Deployment Guide.
+
+[[sthref1230]]
+
+=== Operands
+
+local_directory_path::
+  The path to the local directory where the client stub JAR file should
+  be stored.
+
+[[sthref1231]]
+
+=== Examples
+
+[[GSRFM622]][[sthref1232]]
+
+==== Example 1   Using get-client-stubs
+
+[source]
+----
+asadmin> get-client-stubs --appname myapplication /sample/example
+Command get-client-stubs executed successfully
+----
+
+[[sthref1233]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1234]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:deploy.html#deploy-1[`deploy`(1)],
+link:redeploy.html#redeploy-1[`redeploy`(1)],
+link:undeploy.html#undeploy-1[`undeploy`(1)]
+
+link:appclient.html#appclient-1m[`appclient`(1M)],
+link:package-appclient.html#package-appclient-1m[`package-appclient`(1M)]
+
+link:application-deployment-guide.html#GSDPG[{productName} Application Deployment
+Guide]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/get-health.adoc b/docs/reference-manual/src/main/asciidoc/get-health.adoc
new file mode 100644
index 0000000..ffeed0e
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/get-health.adoc
@@ -0,0 +1,90 @@
+type=page
+status=published
+title=get-health
+next=import-sync-bundle.html
+prev=get-client-stubs.html
+~~~~~~
+
+= get-health
+
+[[get-health-1]][[GSRFM00141]][[get-health]]
+
+== get-health
+
+Provides information on the cluster health
+
+[[sthref1235]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] get-health [--help]
+cluster_name
+----
+
+[[sthref1236]]
+
+=== Description
+
+The `get-health` subcommand gets information about the health of the
+cluster. Note that if the group management service (GMS) is not enabled,
+the basic information about whether the server instances in this cluster
+are running or not running is not returned. For each server instance,
+one of the following states is reported: `not started`, `started`,
+`stopped`, `rejoined`, or `failed`. This subcommand is available in
+remote mode only.
+
+[[sthref1237]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1238]]
+
+=== Operands
+
+cluster_name::
+  The name of the cluster for which you want the health information.
+  This subcommand prompts you for the cluster name if you don't specify it.
+
+[[sthref1239]]
+
+=== Examples
+
+[[GSRFM623]][[sthref1240]]
+
+==== Example 1   Checking the health of server instances in a cluster
+
+[source]
+----
+asadmin> get-health cluster1
+instance1 started since Wed Sep 29 16:32:46 EDT 2010
+instance2 started since Wed Sep 29 16:32:45 EDT 2010
+Command get-health executed successfully.
+----
+
+[[sthref1241]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1242]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:validate-multicast.html#validate-multicast-1[`validate-multicast`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/get.adoc b/docs/reference-manual/src/main/asciidoc/get.adoc
new file mode 100644
index 0000000..4d0b275
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/get.adoc
@@ -0,0 +1,208 @@
+type=page
+status=published
+title=get
+next=get-active-module-config.html
+prev=generate-jvm-report.html
+~~~~~~
+
+get
+===
+
+[[get-1]][[GSRFM00139]][[get]]
+
+get
+---
+
+gets the values of configurable or monitorable attributes
+
+[[sthref1209]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] get [--help]
+[--monitor={true|false}]
+[--aggregatedataonly={true|false}]
+(dotted-attribute--name)+
+----
+
+[[sthref1210]]
+
+=== Description
+
+The `get` subcommand uses dotted names to get the names and values of
+configurable or monitorable attributes for {productName} elements.
+
+You can use the link:list.html#list-1[`list`(1)] subcommand to display
+the dotted names that represent individual server components and
+subsystems. For example, a dotted name might be
+`server.applications.web-module`. Attributes from the monitoring
+hierarchy are read-only, but configuration attributes can be modified
+using the link:set.html#set-1[`set`(1)] subcommand. For more detailed
+information on dotted names, see the
+link:dotted-names.html#dotted-names-5asc[`dotted-names`(5ASC)] help page.
+
+
+[NOTE]
+====
+Characters that have special meaning to the shell or command
+interpreter, such as `*` (asterisk), should be quoted or escaped as
+appropriate to the shell, for example, by enclosing the argument in
+quotes. In multimode, quotes are needed only for arguments that include
+spaces, quotes, or backslash.
+====
+
+
+The following list shows common usage of the `get` subcommand with the `*`
+(asterisk):
+
+`get \*` or `get *.*`::
+  Gets all values on all dotted name prefixes.
+`get domain\*` or `get domain*.*`::
+  Gets all values on the dotted names that begin with `domain`.
+`get \*config*.\*.*`::
+  Gets all values on the dotted names that match `\*config*.\*.*`.
+`get domain.j2ee-applications.\*.ejb-module.*.*`::
+  Gets all values on all EJB modules of all applications.
+`get \*web-modules.*.*`::
+  Gets all values on all web modules whether in an application or
+  standalone.
+`get \*.*.\*.*`::
+  Gets all values on all dotted names that have four parts.
+
+[[sthref1211]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--monitor`::
+`-m`::
+  Defaults to `false`. If set to false, the configurable attribute
+  values are returned. If set to `true`, the monitorable attribute
+  values are returned.
+`--aggregatedataonly`::
+`-c`::
+  Aggregates monitoring data for all {productName} instances in a
+  cluster. The default value is `false`.
+
+[[sthref1212]]
+
+=== Operands
+
+dotted-attribute-name::
+  Identifies the attribute name in the dotted notation. At least one
+  dotted name attribute is required. The dotted notation is the syntax
+  used to access attributes of configurable entities.
+
+[[sthref1213]]
+
+=== Examples
+
+[[GSRFM619]][[sthref1214]]
+
+==== Example 1   Getting the Attributes of a Configurable Element
+
+This example gets the attributes of `listener.http-listener-1`.
+
+[source]
+----
+asadmin> get server.http-service.http-listener.http-listener-1.*
+server.http-service.http-listener.http-listener-1.acceptor-threads = 1
+server.http-service.http-listener.http-listener-1.address = 0.0.0.0
+server.http-service.http-listener.http-listener-1.blocking-enabled = false
+server.http-service.http-listener.http-listener-1.default-virtual-server = server
+server.http-service.http-listener.http-listener-1.enabled = true
+server.http-service.http-listener.http-listener-1.external-port =
+server.http-service.http-listener.http-listener-1.family = inet
+server.http-service.http-listener.http-listener-1.id = http-listener-1
+server.http-service.http-listener.http-listener-1.port = 8080
+server.http-service.http-listener.http-listener-1.redirect-port =
+server.http-service.http-listener.http-listener-1.security-enabled = false
+server.http-service.http-listener.http-listener-1.server-name =
+server.http-service.http-listener.http-listener-1.xpowered-by = true
+Command get executed successfully.
+----
+
+[[GSRFM620]][[sthref1215]]
+
+==== Example 2   Getting Monitorable Objects
+
+This example gets the configuration attributes for setting the
+monitoring level and shows whether they are enabled (LOW or HIGH) or
+disabled (OFF). The `jvm` component is enabled for monitoring.
+
+[source]
+----
+asadmin> get server.monitoring-service.module-monitoring-levels.*
+server.monitoring-service.module-monitoring-levels.connector-connection-pool=OFF
+server.monitoring-service.module-monitoring-levels.connector-service=OFF
+server.monitoring-service.module-monitoring-levels.d-trace=OFF
+server.monitoring-service.module-monitoring-levels.ejb-container=OFF
+server.monitoring-service.module-monitoring-levels.http-service=OFF
+server.monitoring-service.module-monitoring-levels.jdbc-connection-pool=OFF
+server.monitoring-service.module-monitoring-levels.jms-service=OFF
+server.monitoring-service.module-monitoring-levels.jvm=HIGH
+server.monitoring-service.module-monitoring-levels.orb=OFF
+server.monitoring-service.module-monitoring-levels.thread-pool=OFF
+server.monitoring-service.module-monitoring-levels.transaction-service=OFF
+server.monitoring-service.module-monitoring-levels.web-container=OFF
+Command get executed successfully.
+----
+
+[[GSRFM621]][[sthref1216]]
+
+==== Example 3   Getting Attributes and Values for a Monitorable Object
+
+This example gets all attributes and values of the `jvm` monitorable
+object.
+
+[source]
+----
+asadmin> get --monitor server.jvm.*
+server.jvm.HeapSize_Current = 45490176
+server.jvm.HeapSize_Description = Describes JvmHeapSize
+server.jvm.HeapSize_HighWaterMark = 45490176
+server.jvm.HeapSize_LastSampleTime = 1063217002433
+server.jvm.HeapSize_LowWaterMark = 0
+server.jvm.HeapSize_LowerBound = 0
+server.jvm.HeapSize_Name = JvmHeapSize
+server.jvm.HeapSize_StartTime = 1063238840055
+server.jvm.HeapSize_Unit = bytes
+server.jvm.HeapSize_UpperBound = 531628032
+server.jvm.UpTime_Count = 1063238840100
+server.jvm.UpTime_Description = Describes JvmUpTime
+server.jvm.UpTime_LastSampleTime = 1-63238840070
+server.jvm.UpTime_Name = JvmUpTime
+server.jvm.UpTime_StartTime = 1063217002430
+server.jvm.UpTime_Unit = milliseconds
+Command get executed successfully.
+----
+
+[[sthref1217]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1218]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:list.html#list-1[`list`(1)], link:set.html#set-1[`set`(1)]
+
+link:dotted-names.html#dotted-names-5asc[`dotted-names`(5ASC)]
+
+link:administration-guide.html#GSADG[{productName} Administration Guide]
+
+
diff --git a/docs/reference-manual/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png b/docs/reference-manual/src/main/asciidoc/img/eclipse_foundation_logo_tiny.png
similarity index 100%
rename from docs/reference-manual/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png
rename to docs/reference-manual/src/main/asciidoc/img/eclipse_foundation_logo_tiny.png
Binary files differ
diff --git a/docs/reference-manual/src/main/asciidoc/import-sync-bundle.adoc b/docs/reference-manual/src/main/asciidoc/import-sync-bundle.adoc
new file mode 100644
index 0000000..1c73153
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/import-sync-bundle.adoc
@@ -0,0 +1,146 @@
+type=page
+status=published
+title=import-sync-bundle
+next=install-node.html
+prev=get-health.html
+~~~~~~
+
+= import-sync-bundle
+
+[[import-sync-bundle-1]][[GSRFM00142]][[import-sync-bundle]]
+
+== import-sync-bundle
+
+Imports the configuration data of a clustered instance or standalone
+instance from an archive file
+
+[[sthref1243]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] import-sync-bundle [--help]
+--instance instance-name
+[--nodedir node-dir] [--node node-name]
+file-name
+----
+
+[[sthref1244]]
+
+=== Description
+
+The `import-sync-bundle` subcommand imports the configuration data of a
+clustered instance or standalone instance from an archive file that was
+created by the
+link:export-sync-bundle.html#export-sync-bundle-1[`export-sync-bundle`(1)]
+subcommand.
+
+You must run this subcommand on the host where the instance resides. To
+contact the domain administration server (DAS), this subcommand requires
+the name of the host where the DAS is running. If a nondefault port is
+used for administration, this subcommand also requires the port number.
+You must provide this information through the `--host` option and the
+`--port` option of the link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+utility.
+
+Importing an instance's configuration data transfers the data to a host
+for an instance without the need for the instance to be able to
+communicate with the DAS. Importing an instance's configuration data is
+typically required for the following reasons:
+
+* To reestablish the instance after an upgrade
+* To synchronize the instance manually with the domain administration
+server (DAS) when the instance cannot contact the DAS
+
+The subcommand imports an instance's configuration data by performing
+the following operations:
+
+* Creating or updating the instance's files and directories
+* Attempting to register the instance with the DAS
+
+If the attempt to register the instance with the DAS fails, the
+subcommand does not fail. Instead, the subcommand displays a warning
+that the attempt failed. The warning contains the command to run to
+register the instance with the DAS.
+
+The `import-sync-bundle` subcommand does not contact the DAS to
+determine the node on which the instance resides. If the node is not
+specified as an option of the subcommand, the subcommand determines the
+node from the DAS configuration in the archive file.
+
+This subcommand is supported in local mode only.
+
+[[sthref1245]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--instance`::
+  The instance for which configuration data is being imported. The
+  instance must already exist in the DAS configuration. The archive file
+  from which the data is being imported must contain data for the
+  specified instance.
+`--nodedir`::
+  The directory that contains the instance's node directory. The
+  instance's files are stored in the instance's node directory. The
+  default is as-install``/nodes``.
+`--node`::
+  The node on which the instance resides. If this option is omitted, the
+  subcommand determines the node from the DAS configuration in the
+  archive file.
+
+[[sthref1246]]
+
+=== Operands
+
+file-name::
+  The name of the file, including the path, that contains the archive
+  file to import. This operand is required.
+
+[[sthref1247]]
+
+=== Examples
+
+[[GSRFM624]][[sthref1248]]
+
+==== Example 1   Importing Configuration Data for a Clustered Instance
+
+This example imports the configuration for the clustered instance
+`ymli2` on the node `sj02` from the archive file
+`/export/glassfish7/glassfish/domains/domain1/sync/ymlcluster-sync-bundle.zip`.
+
+The command is run on the host `sj02`, which is the host that the node
+`sj02` represents. The DAS is running on the host `sr04` and uses the
+default HTTP port for administration.
+
+[source]
+----
+sj02# asadmin --host sr04 import-sync-bundle --node sj02 --instance ymli2
+/export/glassfish7/glassfish/domains/domain1/sync/ymlcluster-sync-bundle.zip
+Command import-sync-bundle executed successfully.
+----
+
+[[sthref1249]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1250]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:export-sync-bundle.html#export-sync-bundle-1[`export-sync-bundle`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/install-node-dcom.adoc b/docs/reference-manual/src/main/asciidoc/install-node-dcom.adoc
new file mode 100644
index 0000000..64aed31
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/install-node-dcom.adoc
@@ -0,0 +1,220 @@
+type=page
+status=published
+title=install-node-dcom
+next=install-node-ssh.html
+prev=install-node.html
+~~~~~~
+
+= install-node-dcom
+
+[[install-node-dcom-1]][[GSRFM626]][[install-node-dcom]]
+
+== install-node-dcom
+
+Installs {productName} software on specified DCOM-enabled hosts
+
+[[sthref1259]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] install-node-dcom [--help]
+[--archive archive]
+[--create={false|true}] [--save[={false|true}]
+[--installdir as-install-parent]
+[--windowsuser windows-user] [--windowsdomain windows-domain]
+[--force={false|true}]
+host-list
+----
+
+[[sthref1260]]
+
+=== Description
+
+The `install-node-dcom` subcommand installs {productName} software
+on the hosts that are specified as the operand of the subcommand. This
+subcommand requires the Distributed Component Object Model (DCOM) remote
+protocol to be configured on the host where the subcommand is run and on
+each host where the {productName} software is being installed. The
+DCOM protocol is available only on Windows systems.
+
+[NOTE]
+====
+To install {productName} software on hosts that use secure shell
+(SSH), use the
+link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)]
+subcommand.
+====
+
+If necessary, the subcommand creates a ZIP archive of the
+{productName} software from the installation where this subcommand
+is run. The archive does not contain the `domains` directory or the
+`nodes` directory. These directories are synchronized from the domain
+administration server (DAS) when instances on nodes that represent the
+hosts are created and started. The subcommand does not delete the
+archive after installing the {productName} software from the archive
+on the specified hosts.
+
+If multiple hosts are specified, the configuration of the following
+items is the same on all hosts:
+
+* Base installation directory
+* Windows user
+* Windows domain
+
+By default, the subcommand runs interactively and prompts for a password
+to authenticate the Windows user on each host where the
+{productName} software is being installed. To enable the subcommand
+to run noninteractively, the following conditions must be met:
+
+* The `--interactive` option of the
+  link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility must be `false`.
+* The `--passwordfile` option of the `asadmin` utility must specify a
+  password file.
+* The password file must contain the `AS_ADMIN_WINDOWSPASSWORD` entry.
+
+The subcommand does not modify the configuration of the DAS.
+
+This subcommand is supported in local mode only.
+
+[[sthref1261]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--archive`::
+  The absolute path to the archive file of the {productName}
+  software that is to be installed. If no archive file is specified, the
+  subcommand creates an archive from the installation of
+  {productName} software from which the subcommand is run. This
+  archive is created in the home directory of the user that is running
+  the command.
+`--create`::
+  Specifies whether the subcommand should create an archive file of the
+  {productName} software to install.
+
+  `false`;;
+    No archive file is created. The subcommand installs the software
+    from the existing archive file that the `--archive` option specifies
+    (default).
+  `true`;;
+    The subcommand creates an archive file from the installation of
+    {productName} software from which the subcommand is run.
+
+`--save`::
+  Specifies whether the archive file from which the software is
+  installed is saved after installation.
+
+  `false`;;
+    The archive file is not saved. The subcommand deletes the file after
+    installing the software (default).
+  `true`;;
+    The archive file is saved.
+
+`--installdir`::
+  The absolute path to the parent of the base installation directory
+  where the {productName} software is to be installed on each host,
+  for example, `C:\glassfish7`. If the directory does not exist, the
+  subcommand creates the directory. +
+  The user that is running this subcommand must have write access to the
+  specified directory. Otherwise, an error occurs. +
+  To overwrite an existing an installation of the {productName}
+  software, set the `--force` option to `true`. If the directory already
+  contains an installation and the `--force` option is `false`, an error occurs. +
+  The default is the parent of the base installation directory of the
+  {productName} software on the host where this subcommand is run.
+`--windowsuser`::
+`-w`::
+  The user on the host where the {productName} software is to be
+  installed that is to run the process for connecting through DCOM to
+  the host. The default is the user that is running this subcommand.
+`--windowsdomain`::
+`-d`::
+  The name of the Windows domain that contains the user that the
+  `--windowsuser` option specifies. The default is the name of the host
+  on which the subcommand is run.
+`--force`::
+  Specifies whether the subcommand overwrites an existing installation
+  of the {productName} software in the directory that the
+  `--installdir` option specifies. Possible values are as follows:
+
+  `false`;;
+    The existing installation is not overwritten (default).
+  `true`;;
+    The existing installation is overwritten.
+
+[[sthref1262]]
+
+=== Operands
+
+host-list::
+  A space-separated list of the names of the hosts where the
+  {productName} software is to be installed.
+
+[[sthref1263]]
+
+=== Examples
+
+[[GSRFM627]][[sthref1264]]
+
+==== Example 1   Installing {productName} Software at the Default
+Location
+
+This example installs {productName} software on the hosts
+`wpmdl1.example.com` and `wpmdl2.example.com` at the default location.
+
+Some lines of output are omitted from this example for readability.
+
+[source]
+----
+asadmin> install-node-dcom wpmdl1.example.com wpmdl2.example.com
+Created installation zip C:\glassfish8107276692860773166.zip
+Copying 85760199 bytes..........................................................
+....................................
+WROTE FILE TO REMOTE SYSTEM: C:/glassfish7/glassfish_install.zip and C:/glassfish7/unpack.bat
+Output from Windows Unpacker:
+
+C:\Windows\system32>C:
+
+C:\Windows\system32>cd "C:\glassfish7"
+
+C:\glassfish7>jar xvf glassfish_install.zip
+ inflated: bin/asadmin
+ inflated: bin/asadmin.bat
+ inflated: glassfish/bin/appclient
+ inflated: glassfish/bin/appclient.bat
+ inflated: glassfish/bin/appclient.js
+ inflated: glassfish/bin/asadmin
+ inflated: glassfish/bin/asadmin.bat
+...
+ inflated: mq/lib/props/broker/default.properties
+ inflated: mq/lib/props/broker/install.properties
+
+Command install-node-dcom executed successfully.
+----
+
+[[sthref1265]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1266]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)],
+link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/install-node-ssh.adoc b/docs/reference-manual/src/main/asciidoc/install-node-ssh.adoc
new file mode 100644
index 0000000..6f2b2b3
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/install-node-ssh.adoc
@@ -0,0 +1,229 @@
+type=page
+status=published
+title=install-node-ssh
+next=jms-ping.html
+prev=install-node-dcom.html
+~~~~~~
+
+= install-node-ssh
+
+[[install-node-ssh-1]][[GSRFM628]][[install-node-ssh]]
+
+== install-node-ssh
+
+Installs {productName} software on specified SSH-enabled hosts
+
+[[sthref1267]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] install-node-ssh [--help]
+[--archive archive]
+[--create={false|true}] [--save[={false|true}]
+[--installdir as-install-parent]
+[--sshport ssh-port] [--sshuser ssh-user]
+[--sshkeyfile ssh-keyfile]
+[--force={false|true}]
+host-list
+----
+
+[[sthref1268]]
+
+=== Description
+
+The `install-node-ssh` subcommand installs {productName} software on
+the hosts that are specified as the operand of the subcommand. This
+subcommand requires secure shell (SSH) to be configured on the host
+where the subcommand is run and on each host where the {productName}
+software is being installed.
+
+[NOTE]
+====
+This subcommand is equivalent to the
+link:install-node.html#install-node-1[`install-node`(1)] subcommand. To
+install {productName} software on hosts that use the Distributed
+Component Object Model (DCOM) remote protocol, use the
+link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)]
+subcommand.
+====
+
+If necessary, the subcommand creates a ZIP archive of the
+{productName} software from the installation where this subcommand
+is run. The archive does not contain the `domains` directory or the
+`nodes` directory. These directories are synchronized from the domain
+administration server (DAS) when instances on nodes that represent the
+hosts are created and started. The subcommand does not delete the
+archive after installing the {productName} software from the archive
+on the specified hosts.
+
+If multiple hosts are specified, the configuration of the following
+items is the same on all hosts:
+
+* Base installation directory
+* SSH port
+* SSH user
+* SSH key file
+
+If the SSH key file does not exist on a host where the {productName}
+software is to be installed, the subcommand runs interactively and
+prompts for a password. To enable the subcommand to run
+noninteractively, the following conditions must be met:
+
+* The `--interactive` option of the
+  link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility must be `false`.
+* The `--passwordfile` option of the `asadmin` utility must specify a
+  password file.
+* The password file must contain the `AS_ADMIN_SSHPASSWORD` entry.
+
+The subcommand does not modify the configuration of the DAS.
+
+This subcommand is supported in local mode only.
+
+[[sthref1269]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--archive`::
+  The absolute path to the archive file of the {productName}
+  software that is to be installed. If no archive file is specified, the
+  subcommand creates an archive from the installation of
+  {productName} software from which the subcommand is run. This
+  archive is created in the home directory of the user that is running
+  the command.
+`--create`::
+  Specifies whether the subcommand should create an archive file of the
+  {productName} software to install.
+
+  `false`;;
+    No archive file is created. The subcommand installs the software
+    from the existing archive file that the `--archive` option specifies
+    (default).
+  `true`;;
+    The subcommand creates an archive file from the installation of
+    {productName} software from which the subcommand is run.
+
+`--save`::
+  Specifies whether the archive file from which the software is
+  installed is saved after installation.
+
+  `false`;;
+    The archive file is not saved. The subcommand deletes the file after
+    installing the software (default).
+  `true`;;
+    The archive file is saved.
+
+`--installdir`::
+  The absolute path to the parent of the base installation directory
+  where the {productName} software is to be installed on each host,
+  for example, `/export/glassfish7/`. If the directory does not exist,
+  the subcommand creates the directory. +
+  The user that is running this subcommand must have write access to the
+  specified directory. Otherwise, an error occurs. +
+  To overwrite an existing an installation of the {productName}
+  software, set the `--force` option to `true`. If the directory already
+  contains an installation and the `--force` option is `false`, an error occurs. +
+  The default is the parent of the base installation directory of the
+  {productName} software on the host where this subcommand is run.
+`--sshport`::
+  The port to use for SSH connections to the host where the
+  {productName} software is to be installed. The default is 22.
+`--sshuser`::
+  The user on the host where the {productName} software is to be
+  installed that is to run the process for connecting through SSH to the
+  host. The default is the user that is running this subcommand. To
+  ensure that the DAS can read this user's SSH private key file, specify
+  the user that is running the DAS process.
+`--sshkeyfile`::
+  The absolute path to the SSH private key file for user that the
+  `--sshuser` option specifies. This file is used for authentication to
+  the `sshd` daemon on the host. +
+  The user that is running this subcommand must be able to reach the
+  path to the key file and read the key file. +
+  The default is a key file in the user's `.ssh` directory. If multiple
+  key files are found, the subcommand uses the following order of
+  preference:
+
+  1. `id_rsa`
+  2. `id_dsa`
+  3. `identity`
+
+`--force`::
+  Specifies whether the subcommand overwrites an existing installation
+  of the {productName} software in the directory that the
+  `--installdir` option specifies. Possible values are as follows:
+
+  `false`;;
+    The existing installation is not overwritten (default).
+  `true`;;
+    The existing installation is overwritten.
+
+[[sthref1270]]
+
+=== Operands
+
+host-list::
+  A space-separated list of the names of the hosts where the
+  {productName} software is to be installed.
+
+[[sthref1271]]
+
+=== Examples
+
+[[GSRFM629]][[sthref1272]]
+
+==== Example 1   Installing {productName} Software at the Default
+Location
+
+This example installs {productName} software on the hosts
+`sj03.example.com` and `sj04.example.com` at the default location.
+
+[source]
+----
+asadmin> install-node-ssh sj03.example.com sj04.example.com
+Created installation zip /home/gfuser/glassfish2339538623689073993.zip
+Successfully connected to gfuser@sj03.example.com using keyfile /home/gfuser
+/.ssh/id_rsa
+Copying /home/gfuser/glassfish2339538623689073993.zip (81395008 bytes) to
+sj03.example.com:/export/glassfish7
+Installing glassfish2339538623689073993.zip into sj03.example.com:/export/glassfish7
+Removing sj03.example.com:/export/glassfish7/glassfish2339538623689073993.zip
+Fixing file permissions of all files under sj03.example.com:/export/glassfish7/bin
+Successfully connected to gfuser@sj04.example.com using keyfile /home/gfuser
+/.ssh/id_rsa
+Copying /home/gfuser/glassfish2339538623689073993.zip (81395008 bytes) to
+sj04.example.com:/export/glassfish7
+Installing glassfish2339538623689073993.zip into sj04.example.com:/export/glassfish7
+Removing sj04.example.com:/export/glassfish7/glassfish2339538623689073993.zip
+Fixing file permissions of all files under sj04.example.com:/export/glassfish7/bin
+Command install-node-ssh executed successfully
+----
+
+[[sthref1273]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1274]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:install-node.html#install-node-1[`install-node`(1)],
+link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)],
+link:uninstall-node.html#uninstall-node-1[`uninstall-node`(1)],
+link:uninstall-node-ssh.html#uninstall-node-ssh-1[`uninstall-node-ssh`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/install-node.adoc b/docs/reference-manual/src/main/asciidoc/install-node.adoc
new file mode 100644
index 0000000..08655b9
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/install-node.adoc
@@ -0,0 +1,227 @@
+type=page
+status=published
+title=install-node
+next=install-node-dcom.html
+prev=import-sync-bundle.html
+~~~~~~
+
+= install-node
+
+[[install-node-1]][[GSRFM00143]][[install-node]]
+
+== install-node
+
+Installs {productName} software on specified SSH-enabled hosts
+
+[[sthref1251]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] install-node [--help]
+[--archive archive]
+[--create={false|true}] [--save[={false|true}]
+[--installdir as-install-parent]
+[--sshport ssh-port] [--sshuser ssh-user]
+[--sshkeyfile ssh-keyfile]
+[--force={false|true}]
+host-list
+----
+
+[[sthref1252]]
+
+=== Description
+
+The `install-node` subcommand installs {productName} software on the
+hosts that are specified as the operand of the subcommand. This
+subcommand requires secure shell (SSH) to be configured on the host
+where the subcommand is run and on each host where the {productName}
+software is being installed.
+
+[NOTE]
+====
+This subcommand is equivalent to the
+link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)]
+subcommand. To install {productName} software on hosts that use the
+Distributed Component Object Model (DCOM) remote protocol, use the
+link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)]
+subcommand.
+====
+
+If necessary, the subcommand creates a ZIP archive of the
+{productName} software from the installation where this subcommand
+is run. The archive does not contain the `domains` directory or the
+`nodes` directory. These directories are synchronized from the domain
+administration server (DAS) when instances on nodes that represent the
+hosts are created and started. The subcommand does not delete the
+archive after installing the {productName} software from the archive
+on the specified hosts. +
+If multiple hosts are specified, the configuration of the following
+items is the same on all hosts:
+
+* Base installation directory
+* SSH port
+* SSH user
+* SSH key file
++
+If the SSH key file does not exist on a host where the {productName}
+software is to be installed, the subcommand runs interactively and
+prompts for a password. To enable the subcommand to run
+noninteractively, the following conditions must be met:
+
+* The `--interactive` option of the
+  link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility must be `false`.
+* The `--passwordfile` option of the `asadmin` utility must specify a
+  password file.
+* The password file must contain the `AS_ADMIN_SSHPASSWORD` entry.
+
+The subcommand does not modify the configuration of the DAS.
+
+This subcommand is supported in local mode only.
+
+[[sthref1253]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--archive`::
+  The absolute path to the archive file of the {productName}
+  software that is to be installed. If no archive file is specified, the
+  subcommand creates an archive from the installation of
+  {productName} software from which the subcommand is run. This
+  archive is created in the home directory of the user that is running
+  the command.
+`--create`::
+  Specifies whether the subcommand should create an archive file of the
+  {productName} software to install.
++
+  `false`;;
+    No archive file is created. The subcommand installs the software
+    from the existing archive file that the `--archive` option specifies
+    (default).
+  `true`;;
+    The subcommand creates an archive file from the installation of
+    {productName} software from which the subcommand is run.
+`--save`::
+  Specifies whether the archive file from which the software is
+  installed is saved after installation.
++
+  `false`;;
+    The archive file is not saved. The subcommand deletes the file after
+    installing the software (default).
+  `true`;;
+    The archive file is saved.
+`--installdir`::
+  The absolute path to the parent of the base installation directory
+  where the {productName} software is to be installed on each host,
+  for example, `/export/glassfish7/`. If the directory does not exist,
+  the subcommand creates the directory. +
+  The user that is running this subcommand must have write access to the
+  specified directory. Otherwise, an error occurs. +
+  To overwrite an existing an installation of the {productName}
+  software, set the `--force` option to `true`. If the directory already
+  contains an installation and the `--force` option is `false`, an error occurs. +
+  The default is the parent of the base installation directory of the
+  {productName} software on the host where this subcommand is run.
+`--sshport`::
+  The port to use for SSH connections to the host where the
+  {productName} software is to be installed. The default is 22.
+`--sshuser`::
+  The user on the host where the {productName} software is to be
+  installed that is to run the process for connecting through SSH to the
+  host. The default is the user that is running this subcommand. To
+  ensure that the DAS can read this user's SSH private key file, specify
+  the user that is running the DAS process.
+`--sshkeyfile`::
+  The absolute path to the SSH private key file for user that the
+  `--sshuser` option specifies. This file is used for authentication to
+  the `sshd` daemon on the host. +
+  The user that is running this subcommand must be able to reach the
+  path to the key file and read the key file. +
+  The default is a key file in the user's `.ssh` directory. If multiple
+  key files are found, the subcommand uses the following order of
+  preference:
+
+  1. `id_rsa`
+  2. `id_dsa`
+  3. `identity`
+
+`--force`::
+  Specifies whether the subcommand overwrites an existing installation
+  of the {productName} software in the directory that the
+  `--installdir` option specifies. Possible values are as follows:
+
+  `false`;;
+    The existing installation is not overwritten (default).
+  `true`;;
+    The existing installation is overwritten.
+
+[[sthref1254]]
+
+=== Operands
+
+host-list::
+  A space-separated list of the names of the hosts where the
+  {productName} software is to be installed.
+
+[[sthref1255]]
+
+=== Examples
+
+[[GSRFM625]][[sthref1256]]
+
+==== Example 1   Installing {productName} Software at the Default
+Location
+
+This example installs {productName} software on the hosts
+`sj03.example.com` and `sj04.example.com` at the default location.
+
+[source]
+----
+asadmin> install-node sj03.example.com sj04.example.com
+Created installation zip /home/gfuser/glassfish2339538623689073993.zip
+Successfully connected to gfuser@sj03.example.com using keyfile /home/gfuser
+/.ssh/id_rsa
+Copying /home/gfuser/glassfish2339538623689073993.zip (81395008 bytes) to
+sj03.example.com:/export/glassfish7
+Installing glassfish2339538623689073993.zip into sj03.example.com:/export/glassfish7
+Removing sj03.example.com:/export/glassfish7/glassfish2339538623689073993.zip
+Fixing file permissions of all files under sj03.example.com:/export/glassfish7/bin
+Successfully connected to gfuser@sj04.example.com using keyfile /home/gfuser
+/.ssh/id_rsa
+Copying /home/gfuser/glassfish2339538623689073993.zip (81395008 bytes) to
+sj04.example.com:/export/glassfish7
+Installing glassfish2339538623689073993.zip into sj04.example.com:/export/glassfish7
+Removing sj04.example.com:/export/glassfish7/glassfish2339538623689073993.zip
+Fixing file permissions of all files under sj04.example.com:/export/glassfish7/bin
+Command install-node executed successfully
+----
+
+[[sthref1257]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1258]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)],
+link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)],
+link:uninstall-node.html#uninstall-node-1[`uninstall-node`(1)],
+link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)],
+link:uninstall-node-ssh.html#uninstall-node-ssh-1[`uninstall-node-ssh`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/instance.adoc b/docs/reference-manual/src/main/asciidoc/instance.adoc
new file mode 100644
index 0000000..ebfb624
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/instance.adoc
@@ -0,0 +1,35 @@
+type=page
+status=published
+title=instance
+next=logging.html
+prev=dotted-names.html
+~~~~~~
+
+= instance
+
+[[instance-5asc]][[GSRFM00269]][[instance]]
+
+== instance
+
+An instance in {productName} has its own Jakarta EE configuration, Java
+EE resources, application deployment areas, and server configuration
+settings
+
+[[sthref2403]]
+
+=== Description
+
+{productName} creates one server instance, called `server` at the
+time of installation. You can delete the server instance and create a
+new instance with a different name.
+
+For many users, one server instance meets their needs. However,
+depending upon your environment, you might want to create additional
+server instances. For example, in a development environment you can use
+different server instances to test different {productName}
+configurations, or to compare and test different application
+deployments. Because you can easily add or delete a server instance, you
+can use them to create temporary "sandbox" areas to experiment with
+while developing.
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/jms-ping.adoc b/docs/reference-manual/src/main/asciidoc/jms-ping.adoc
new file mode 100644
index 0000000..11d37af
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/jms-ping.adoc
@@ -0,0 +1,104 @@
+type=page
+status=published
+title=jms-ping
+next=list.html
+prev=install-node-ssh.html
+~~~~~~
+
+= jms-ping
+
+[[jms-ping-1]][[GSRFM00144]][[jms-ping]]
+
+== jms-ping
+
+Checks if the JMS service is up and running
+
+[[sthref1275]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] jms-ping [--help]
+[-- target target]
+----
+
+[[sthref1276]]
+
+=== Description
+
+The `jms-ping` subcommand checks if the Java Message Service (JMS)
+service (also known as the JMS provider) is up and running. When you
+start the {productName}, the JMS service starts by default.
+
+The `jms-ping` subcommand pings only the default JMS host within the JMS
+service. It displays an error message when it is unable to ping a
+built-in JMS service.
+
+This subcommand is supported in remote mode only. Remote `asadmin`
+subcommands require a running domain administration server (DAS).
+
+[[sthref1277]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Specifies the target for which the operation is to be performed. Valid
+  values are as follows:
+
+  `server`;;
+    Pings the JMS service for the default server instance. This is the
+    default value
+  configuration-name;;
+    Pings the JMS service for all clusters using the specified
+    configuration.
+  cluster-name;;
+    Pings the JMS service for the specified cluster.
+  instance-name;;
+    Pings the JMS service for the specified server instance.
+
+[[sthref1278]]
+
+=== Examples
+
+[[GSRFM630]][[sthref1279]]
+
+==== Example 1   Verifying that the JMS service is running
+
+The following subcommand checks to see if the JMS service is running on
+the default server.
+
+[source]
+----
+asadmin> jms-ping
+JMS-ping command executed successfully
+Connector resoure test_jms_adapter created.
+Command jms-ping executed successfully.
+----
+
+[[sthref1280]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1281]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-jms-host.html#create-jms-host-1[`create-jms-host`(1)],
+link:delete-jms-host.html#delete-jms-host-1[`delete-jms-host`(1)],
+link:list-jms-hosts.html#list-jms-hosts-1[`list-jms-hosts`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-admin-objects.adoc b/docs/reference-manual/src/main/asciidoc/list-admin-objects.adoc
new file mode 100644
index 0000000..0389e80
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-admin-objects.adoc
@@ -0,0 +1,100 @@
+type=page
+status=published
+title=list-admin-objects
+next=list-application-refs.html
+prev=list.html
+~~~~~~
+
+= list-admin-objects
+
+[[list-admin-objects-1]][[GSRFM00146]][[list-admin-objects]]
+
+== list-admin-objects
+
+Gets all the administered objects
+
+[[sthref1292]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-admin-objects [--help]
+[target]
+----
+
+[[sthref1293]]
+
+=== Description
+
+The `list-admin-objects` subcommand lists all the administered objects.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1294]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1295]]
+
+=== Operands
+
+target::
+  The target for which administered objects are to be listed. Valid
+  values are as follows:
+
+  `server`;;
+    Lists the administered objects on the default server instance. This
+    is the default value.
+  configuration-name;;
+    Lists the administered objects in the specified configuration.
+  cluster-name;;
+    Lists the administered objects on all server instances in the
+    specified cluster.
+  instance-name;;
+    Lists the administered objects on a specified server instance.
+
+[[sthref1296]]
+
+=== Examples
+
+[[GSRFM634]][[sthref1297]]
+
+==== Example 1   Listing Administered Objects
+
+This example lists all the administered objects.
+
+[source]
+----
+asadmin> list-admin-objects
+jms/samplequeue
+jms/anotherqueue
+Command list-admin-objects executed successfully
+----
+
+[[sthref1298]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1299]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-admin-object.html#create-admin-object-1[`create-admin-object`(1)],
+link:delete-admin-object.html#delete-admin-object-1[`delete-admin-object`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-application-refs.adoc b/docs/reference-manual/src/main/asciidoc/list-application-refs.adoc
new file mode 100644
index 0000000..bc75e40
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-application-refs.adoc
@@ -0,0 +1,115 @@
+type=page
+status=published
+title=list-application-refs
+next=list-applications.html
+prev=list-admin-objects.html
+~~~~~~
+
+= list-application-refs
+
+[[list-application-refs-1]][[GSRFM00147]][[list-application-refs]]
+
+== list-application-refs
+
+Lists the existing application references
+
+[[sthref1300]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-application-refs [--help]
+[--long={false|true}] [target]
+----
+
+[[sthref1301]]
+
+=== Description
+
+The `list-application-refs` subcommand lists all application references
+in a cluster or an unclustered server instance. This effectively lists
+all the modules deployed on the specified target (for example, J2EE
+applications, Web modules, and enterprise bean modules).
+
+If multiple versions of a module or application are deployed, this
+subcommand lists all versions. To list which version is enabled, set the
+`--long` option to `true`. For more information about module and
+application versions, see "link:application-deployment-guide/overview.html#GSDPG00324[Module and Application
+Versions]" in {productName} Application
+Deployment Guide.
+
+The target instance or instances making up the cluster need not be
+running or available for this subcommand to succeed.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1302]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--long`::
+  If `true`, displays whether each module or application listed is
+  enabled. The default is `false`.
+
+[[sthref1303]]
+
+=== Operands
+
+target::
+  The target for which you are listing the application references. Valid
+  values are
+
+  * `server`- Specifies the default server instance as the target.
+  `server` is the name of the default server instance and is the default value.
+  * cluster_name- Specifies a certain cluster as the target.
+  * instance_name- Specifies a certain server instance as the target.
+
+[[sthref1304]]
+
+=== Examples
+
+[[GSRFM635]][[sthref1305]]
+
+==== Example 1   Listing Application References
+
+The following example lists the application references for the
+unclustered server instance `NewServer`.
+
+[source]
+----
+asadmin> list-application-refs NewServer
+ClientSessionMDBApp
+MEjbApp
+__ejb_container_timer_app
+Command list-application-refs executed successfully.
+----
+
+[[sthref1306]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1307]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-application-ref.html#create-application-ref-1[`create-application-ref`(1)],
+link:delete-application-ref.html#delete-application-ref-1[`delete-application-ref`(1)]
+
+link:application-deployment-guide.html#GSDPG[{productName} Application Deployment
+Guide]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-applications.adoc b/docs/reference-manual/src/main/asciidoc/list-applications.adoc
new file mode 100644
index 0000000..7805354
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-applications.adoc
@@ -0,0 +1,138 @@
+type=page
+status=published
+title=list-applications
+next=list-audit-modules.html
+prev=list-application-refs.html
+~~~~~~
+
+= list-applications
+
+[[list-applications-1]][[GSRFM00148]][[list-applications]]
+
+== list-applications
+
+Lists deployed applications
+
+[[sthref1308]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-applications [--help]
+[--long={false|true}] [--resources] [--subcomponents]
+[--type type] [target]
+----
+
+[[sthref1309]]
+
+=== Description
+
+The `list-applications` subcommand lists deployed Jakarta EE applications
+and the type of each application that is listed.
+
+If the `--type` option is not specified, all applications are listed. If
+the type option is specified, you must specify a type. The possible
+types are listed in the Options section of this help page.
+
+If multiple versions of a module or application are deployed, this
+subcommand lists all versions. To list which version is enabled, set the
+`--long` option to `true`. For more information about module and
+application versions, see "link:application-deployment-guide/overview.html#GSDPG00324[Module and Application
+Versions]" in {productName} Application
+Deployment Guide.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1310]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--long`::
+  If `true`, displays whether each module or application listed is
+  enabled. The default is `false`.
+`--resources`::
+  Lists the application-scoped resources for each application. If the
+  `--subcomponents` option is also used, lists the application-scoped
+  resources for each component within the application.
+`--subcomponents`::
+  Lists the subcomponents of each application. The subcomponents listed
+  depend on the application type. For example, for a Jakarta EE application
+  (EAR file), modules are listed. For a web application, servlets and
+  JSP pages are listed. For an EJB module, EJB subcomponents are listed.
+`--type`::
+  Specifies the type of the applications that are to be listed. The
+  options are as follows:
+
+  * `application`
+  * `appclient`
+  * `connector`
+  * `ejb`
+  * `web`
+  * `webservice`
+
++
+If no type is specified, all applications are listed.
+
+[[sthref1311]]
+
+=== Operands
+
+`--target`::
+  This is the name of the target upon which the subcommand operates. The
+  valid values are as follows:
++
+  `server`;;
+    Lists the applications for the default server instance `server` and
+    is the default value.
+  `domain`;;
+    Lists the applications for the domain.
+  cluster_name;;
+    Lists the applications for the cluster.
+  instance_name;;
+    Lists the applications for a particular stand-alone server instance.
+
+[[sthref1312]]
+
+=== Examples
+
+[[GSRFM636]][[sthref1313]]
+
+==== Example 1   Listing the Web Applications
+
+[source]
+----
+asadmin> list-applications --type web
+hellojsp <web>
+Command list-applications executed successfully
+----
+
+[[sthref1314]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1315]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:list-components.html#list-components-1[`list-components`(1)],
+link:list-sub-components.html#list-sub-components-1[`list-sub-components`(1)],
+link:show-component-status.html#show-component-status-1[`show-component-status`(1)]
+
+link:application-deployment-guide.html#GSDPG[{productName} Application Deployment
+Guide]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-audit-modules.adoc b/docs/reference-manual/src/main/asciidoc/list-audit-modules.adoc
new file mode 100644
index 0000000..99eb57a
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-audit-modules.adoc
@@ -0,0 +1,96 @@
+type=page
+status=published
+title=list-audit-modules
+next=list-auth-realms.html
+prev=list-applications.html
+~~~~~~
+
+= list-audit-modules
+
+[[list-audit-modules-1]][[GSRFM00149]][[list-audit-modules]]
+
+== list-audit-modules
+
+Gets all audit modules and displays them
+
+[[sthref1316]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-audit-modules [--help]
+[target]
+----
+
+[[sthref1317]]
+
+=== Description
+
+The `list-audit-modules` subcommand lists all the audit modules. This
+subcommand is supported in remote mode only.
+
+[[sthref1318]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1319]]
+
+=== Operands
+
+target::
+  Specifies the target on which you are listing the audit modules. Valid
+  values are as follows:
+
+  `server`;;
+    Lists the audit modules for the default server instance `server` and
+    is the default value.
+  configuration_name;;
+    Lists the audit modules for the named configuration.
+  cluster_name;;
+    Lists the audit modules for every server instance in the cluster.
+  instance_name;;
+    Lists the audit modules for a particular server instance.
+
+[[sthref1320]]
+
+=== Examples
+
+[[GSRFM637]][[sthref1321]]
+
+==== Example 1   Listing Audit Modules
+
+[source]
+----
+asadmin> list-audit-modules
+sampleAuditModule1
+sampleAuditModule2
+Command list-audit-modules executed successfully
+----
+
+[[sthref1322]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1323]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-audit-module.html#create-audit-module-1[`create-audit-module`(1)],
+link:delete-audit-module.html#delete-audit-module-1[`delete-audit-module`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-auth-realms.adoc b/docs/reference-manual/src/main/asciidoc/list-auth-realms.adoc
new file mode 100644
index 0000000..1b08ff2
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-auth-realms.adoc
@@ -0,0 +1,100 @@
+type=page
+status=published
+title=list-auth-realms
+next=list-backups.html
+prev=list-audit-modules.html
+~~~~~~
+
+= list-auth-realms
+
+[[list-auth-realms-1]][[GSRFM00150]][[list-auth-realms]]
+
+== list-auth-realms
+
+Lists the authentication realms
+
+[[sthref1324]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-auth-realms [--help]
+[target]
+----
+
+[[sthref1325]]
+
+=== Description
+
+The `list-auth-realms` subcommand lists the authentication realms. This
+subcommand is supported in remote mode only.
+
+[[sthref1326]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1327]]
+
+=== Operands
+
+target::
+  The name of the target for which you want to list the authentication
+  realms.
+
+  `server`;;
+    Lists the realms for the default server instance `server` and is the
+    default value.
+  configuration_name;;
+    Lists the realms for the named configuration.
+  cluster_name;;
+    Lists the realms for every server instance in the cluster.
+  instance_name;;
+    Lists the realms for a particular server instance.
+
+[[sthref1328]]
+
+=== Examples
+
+[[GSRFM638]][[sthref1329]]
+
+==== Example 1   Listing authentication realms
+
+[source]
+----
+asadmin> list-auth-realms
+file
+ldap
+certificate
+db
+Command list-auth-realms executed successfully
+----
+
+Where file, ldap, certificate, and db are the available authentication realms.
+
+[[sthref1330]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1331]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-auth-realm.html#create-auth-realm-1[`create-auth-realm`(1)],
+link:delete-auth-realm.html#delete-auth-realm-1[`delete-auth-realm`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-backups.adoc b/docs/reference-manual/src/main/asciidoc/list-backups.adoc
new file mode 100644
index 0000000..8c94ef4
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-backups.adoc
@@ -0,0 +1,131 @@
+type=page
+status=published
+title=list-backups
+next=list-batch-job-executions.html
+prev=list-auth-realms.html
+~~~~~~
+
+= list-backups
+
+[[list-backups-1]][[GSRFM00152]][[list-backups]]
+
+== list-backups
+
+Lists all backups
+
+[[sthref1332]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-backups [--help]
+[--long[={false|true}]]
+[--domaindir domain-root-dir]
+[--backupdir backup-directory]
+[--backupconfig backup-config-name]
+[domain-name]
+----
+
+[[sthref1333]]
+
+=== Description
+
+The `list-backups` subcommand displays information about domain backups.
+
+This subcommand is supported in local mode only in {productName}, and is support in local mode and remote mode in {productName}.
+
+[[sthref1334]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--long`::
+`-l`::
+  Displays detailed information about each backup. +
+  The default value is `false`.
+`--domaindir`::
+  Specifies the domain root directory, the parent directory of the
+  domain upon which the command will operate. +
+  The default value is as-install``/domains``.
+`--backupdir`::
+  Specifies the directory under which backup files are stored. +
+  The default value is as-install``/domains/``domain-dir``/backups``. If the
+  domain is not in the default location, the location is
+  domain-dir``/backups``.
+`--backupconfig`::
+  (Supported only in {productName}.) Restricts the listing of
+  backup files in the backup directory to those for the specified domain
+  backup configuration.
+
+[[sthref1335]]
+
+=== Operands
+
+domain-name::
+  Specifies the domain for which backups are listed. +
+  This operand is optional if only one domain exists in the
+  {productName} installation.
+
+[[sthref1336]]
+
+=== Examples
+
+[[GSRFM640]][[sthref1337]]
+
+==== Example 1   Listing Domain Backups
+
+This example provides detailed information about backups in the default domain.
+
+[source]
+----
+asadmin> list-backups --long
+
+Description               : domain1 backup created on 2021_12_20 by user dmatej
+GlassFish Version         : Eclipse GlassFish  7.0.0  (build 2021-12-10T19:08:14+0100)
+Backup User               : admin
+Backup Date               : Mon Dec 20 19:24:17 CET 2021
+Domain Name               : domain1
+Backup Type               : full
+Backup Config Name        :
+Backup Filename (origin)  : /glassfish7/glassfish/domains/domain1/backups/domain1_2021_12_20_v00001.zip
+Domain Directory          : /glassfish7/glassfish/domains/domain1
+
+Description               : domain1 backup created on 2021_12_20 by user dmatej
+GlassFish Version         : Eclipse GlassFish  7.0.0  (build 2021-12-10T19:08:14+0100)
+Backup User               : admin
+Backup Date               : Mon Dec 20 19:24:20 CET 2021
+Domain Name               : domain1
+Backup Type               : full
+Backup Config Name        :
+Backup Filename (origin)  : /glassfish7/glassfish/domains/domain1/backups/domain1_2021_12_20_v00002.zip
+Domain Directory          : /glassfish7/glassfish/domains/domain1
+
+
+Command list-backups executed successfully.
+----
+
+[[sthref1338]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1339]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:backup-domain.html#backup-domain-1[`backup-domain`(1)],
+link:restore-domain.html#restore-domain-1[`restore-domain`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-batch-job-executions.adoc b/docs/reference-manual/src/main/asciidoc/list-batch-job-executions.adoc
new file mode 100644
index 0000000..81890b0
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-batch-job-executions.adoc
@@ -0,0 +1,151 @@
+type=page
+status=published
+title=list-batch-job-executions
+next=list-batch-jobs.html
+prev=list-backups.html
+~~~~~~
+
+= list-batch-job-executions
+
+[[list-batch-job-executions-1]][[GSRFM884]][[list-batch-job-executions]]
+
+== list-batch-job-executions
+
+Lists batch job executions and execution details
+
+[[sthref1340]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-batch-job-executions [--help]
+[--target target]
+[--executionid execution-id]
+[--long={false|true}]
+[--output output]
+[--header={false|true}]
+[instance_ID]
+----
+
+[[sthref1341]]
+
+=== Description
+
+The `list-batch-job-executions` subcommand lists batch job executions
+and execution details.
+
+[[sthref1342]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Specifies the target for which to list batch job executions and
+  execution details. Valid values are as follows:
+
+  `server`;;
+    Lists executions for the default server instance `server` and is the
+    default value.
+  cluster-name;;
+    Lists executions for every server instance in the cluster.
+  instance-name;;
+    Lists executions for a particular server instance.
+
+`--executionid`::
+`-x`::
+  Specifies the execution ID of a specific batch job execution.
+`--long`::
+`-l`::
+  Displays detailed information about batch job executions. The default
+  value is `false`.
+`--output`::
+`-o`::
+  Displays specific details about batch job executions. Use a
+  comma-separated list to specify the details to display and their
+  order. The values are case-insensitive. A subset of all possible
+  headings is displayed by default. +
+  Possible values are as follows:
+
+  `jobname`;;
+    Displays the name of the job.
+  `executionid`;;
+    Displays the ID assigned to the execution of the batch job. A new
+    execution is created the first time a job is started and every time
+    the existing execution is restarted.
+  `starttime`;;
+    Displays the start time of the execution.
+  `endtime`;;
+    Displays the finish time of the execution.
+  `batchstatus`;;
+    Displays the status of the execution as set by the batch runtime.
+  `exitstatus`;;
+    Displays the status of the execution as set by the Job XML for the
+    job or by the batch application. By default, the exit status and the
+    batch status are the same unless the exit status is explicitly
+    overridden.
+  `jobparameters`;;
+    Displays the properties passed to the batch runtime for the batch
+    job execution, listed as name/value pairs.
+  `stepcount`;;
+    Displays the number of steps in the batch job execution.
+
+`--header`::
+`-h`::
+  Specifies whether column headings are displayed when the `--long`
+  option is used. The default value is `true`. To suppress the headings,
+  set the `--header` option to `false`.
+
+[[sthref1343]]
+
+=== Operands
+
+instance_id::
+  The ID of the job instance for which to list execution details.
+
+[[sthref1344]]
+
+=== Examples
+
+[[GSRFM885]][[sthref1345]]
+
+==== Example 1   Listing Batch Job Executions
+
+This example lists batch job executions for the default server instance
+and displays specific details.
+
+[source]
+----
+asadmin> list-batch-job-executions -o=jobname,executionid,batchstatus,exitstatus
+JOBNAME  EXECUTIONID  BATCHSTATUS  EXITSTATUS
+payroll  9            COMPLETED    COMPLETED
+bonus    6            FAILED       FAILED
+Command list-batch-job-executions executed successfully.
+----
+
+[[sthref1346]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1347]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:list-batch-jobs.html#list-batch-jobs-1[`list-batch-jobs`(1)],
+link:list-batch-job-steps.html#list-batch-job-steps-1[`list-batch-job-steps`(1)],
+link:list-batch-runtime-configuration.html#list-batch-runtime-configuration-1[`list-batch-runtime-configuration`(1)],
+link:set-batch-runtime-configuration.html#set-batch-runtime-configuration-1[`set-batch-runtime-configuration`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-batch-job-steps.adoc b/docs/reference-manual/src/main/asciidoc/list-batch-job-steps.adoc
new file mode 100644
index 0000000..5311502
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-batch-job-steps.adoc
@@ -0,0 +1,153 @@
+type=page
+status=published
+title=list-batch-job-steps
+next=list-batch-runtime-configuration.html
+prev=list-batch-jobs.html
+~~~~~~
+
+= list-batch-job-steps
+
+[[list-batch-job-steps-1]][[GSRFM895]][[list-batch-job-steps]]
+
+== list-batch-job-steps
+
+Lists steps for a specific batch job execution
+
+[[sthref1356]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-batch-job-steps [--help]
+[--long={false|true}]
+[--target target]
+[--output output]
+[--header={false|true}]
+execution_id
+----
+
+[[sthref1357]]
+
+=== Description
+
+The `list-batch-job-steps` subcommand lists steps for a specific batch
+job execution.
+
+[[sthref1358]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Specifies the target for which to list batch job steps. Valid values
+  are as follows:
+
+  `server`;;
+    Lists steps for the default server instance `server` and is the
+    default value.
+  cluster-name;;
+    Lists steps for every server instance in the cluster.
+  instance-name;;
+    Lists steps for a particular server instance.
+
+`--long`::
+`-l`::
+  Displays detailed information about batch job steps. The default value
+  is `false`.
+`--output`::
+`-o`::
+  Displays specific details about batch job steps. Use a comma-separated
+  list to specify the details to display and their order. The values are
+  case-insensitive. A subset of all possible headings is displayed by
+  default. Possible values are as follows:
+
+  `stepname`;;
+    Displays the name of the step.
+  `stepid`;;
+    Displays the step ID.
+  `starttime`;;
+    Displays the start time of the step.
+  `endtime`;;
+    Displays the finish time of the step.
+  `batchstatus`;;
+    Displays the status of the step as set by the batch runtime.
+  `exitstatus`;;
+    Displays the status of the step as set by the Job XML for the job or
+    by the batch application. By default, the exit status and the batch
+    status are the same unless the exit status is explicitly overridden.
+  `stepmetrics`;;
+    Displays metrics for the step.
+  `value`;;
+    Displays a value for each step metric. The value represents the
+    number of items read, written, committed, and so on.
+
+`--header`::
+`-h`::
+  Specifies whether column headings are displayed when the `--long`
+  option is used. The default value is `true`. To suppress the headings,
+  set the `--header` option to `false`.
+
+[[sthref1359]]
+
+=== Operands
+
+execution_id::
+  The ID of the execution for which to list batch job steps and details.
+
+[[sthref1360]]
+
+=== Examples
+
+[[GSRFM896]][[sthref1361]]
+
+==== Example 1   Listing Batch Job Steps
+
+This example lists batch job steps and specific step details for a job
+execution with the execution ID of `7`. The target is the default server
+instance.
+
+Some lines of output are omitted from this example for readability.
+
+[source]
+----
+asadmin> list-batch-job-steps o=stepname,stepid,batchstatus,stepmetrics 7
+STEPNAME   STEPID   BATCHSTATUS   STEPMETRICS
+prepare    7        COMPLETED     METRICNAME          VALUE
+                                  READ_COUNT          8
+                                  WRITE_COUNT         8
+                                  PROCESS_SKIP_COUNT  0
+process    8        COMPLETED     METRICNAME          VALUE
+                                  READ_COUNT          8
+                                  WRITE_COUNT         8
+                                  PROCESS_SKIP_COUNT  0
+...
+Command list-batch-job-steps executed successfully.
+----
+
+[[sthref1362]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1363]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:list-batch-jobs.html#list-batch-jobs-1[`list-batch-jobs`(1)],
+link:list-batch-job-executions.html#list-batch-job-executions-1[`list-batch-job-executions`(1)],
+link:list-batch-runtime-configuration.html#list-batch-runtime-configuration-1[`list-batch-runtime-configuration`(1)],
+link:set-batch-runtime-configuration.html#set-batch-runtime-configuration-1[`set-batch-runtime-configuration`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-batch-jobs.adoc b/docs/reference-manual/src/main/asciidoc/list-batch-jobs.adoc
new file mode 100644
index 0000000..3eb9b8d
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-batch-jobs.adoc
@@ -0,0 +1,144 @@
+type=page
+status=published
+title=list-batch-jobs
+next=list-batch-job-steps.html
+prev=list-batch-job-executions.html
+~~~~~~
+
+= list-batch-jobs
+
+[[list-batch-jobs-1]][[GSRFM861]][[list-batch-jobs]]
+
+== list-batch-jobs
+
+Lists batch jobs
+
+[[sthref1348]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-batch-jobs [--help]
+[--target target]
+[--long={false|true}]
+[--output output]
+[--header={false|true}]
+[job_name]
+----
+
+[[sthref1349]]
+
+=== Description
+
+The `list-batch-jobs` subcommand lists batch jobs and job details.
+
+[[sthref1350]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Specifies the target for which to list batch jobs and job details.
+  Valid values are as follows:
+
+  `server`;;
+    Lists batch jobs for the default server instance `server` and is the
+    default value.
+  cluster-name;;
+    Lists batch jobs for every server instance in the cluster.
+  instance-name;;
+    Lists batch jobs for a particular server instance.
+
+`--long`::
+`-l`::
+  Displays detailed information about batch jobs. The default value is `false`.
+`--output`::
+`-o`::
+  Displays specific details about batch jobs. Use a comma-separated list
+  to specify the details to display and their order. The values are
+  case-insensitive. The `jobname` and `instancecount` column headings
+  are displayed by default. +
+  Possible values are as follows:
+
+  `jobname`;;
+    Displays the name of the job.
+  `appname`;;
+    Displays the name of the application.
+  `instancecount`;;
+    Displays the number of job instances.
+  `instanceid`;;
+    Displays the ID assigned to the job instance.
+  `executionid`;;
+    Displays the ID assigned to the execution of the batch job. A new
+    execution is created the first time a job is started and every time
+    the existing execution is restarted.
+  `batchstatus`;;
+    Displays the status of the job as set by the batch runtime.
+  `starttime`;;
+    Displays the start time of the job.
+  `endtime`;;
+    Displays the finish time of the job.
+  `exitstatus`;;
+    Displays the status of the job as set by the Job XML for the job or
+    by the batch application. By default, the exit status and the batch
+    status are the same unless the exit status is explicitly overridden.
+
+`--header`::
+`-h`::
+  Specifies whether column headings are displayed when the `--long`
+  option is used. The default value is `true`. To suppress the headings,
+  set the `--header` option to `false`.
+
+[[sthref1351]]
+
+=== Operands
+
+job_name::
+  The name of the job for which to list details.
+
+[[sthref1352]]
+
+=== Examples
+
+[[GSRFM862]][[sthref1353]]
+
+==== Example 1   Listing Batch Jobs
+
+This example lists batch jobs for the default server instance.
+
+[source]
+----
+asadmin> list-batch-jobs
+JOBNAME  INSTANCECOUNT
+payroll  9
+bonus    6
+Command list-batch-jobs executed successfully.
+----
+
+[[sthref1354]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1355]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:list-batch-job-executions.html#list-batch-job-executions-1[`list-batch-job-executions`(1)],
+link:list-batch-job-steps.html#list-batch-job-steps-1[`list-batch-job-steps`(1)],
+link:list-batch-runtime-configuration.html#list-batch-runtime-configuration-1[`list-batch-runtime-configuration`(1)],
+link:set-batch-runtime-configuration.html#set-batch-runtime-configuration-1[`set-batch-runtime-configuration`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-batch-runtime-configuration.adoc b/docs/reference-manual/src/main/asciidoc/list-batch-runtime-configuration.adoc
new file mode 100644
index 0000000..419eb53
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-batch-runtime-configuration.adoc
@@ -0,0 +1,122 @@
+type=page
+status=published
+title=list-batch-runtime-configuration
+next=list-clusters.html
+prev=list-batch-job-steps.html
+~~~~~~
+
+= list-batch-runtime-configuration
+
+[[list-batch-runtime-configuration-1]][[GSRFM863]][[list-batch-runtime-configuration]]
+
+== list-batch-runtime-configuration
+
+Displays the configuration of the batch runtime
+
+[[sthref1364]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-batch-runtime-configuration [--help]
+[--target target]
+[--output output]
+[--header={false|true}]
+----
+
+[[sthref1365]]
+
+=== Description
+
+The `list-batch-runtime-configuration` subcommand displays the
+configuration of the batch runtime. Batch runtime configuration data is
+stored in the `config` element in `domain.xml`.
+
+[[sthref1366]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Specifies the target for which to list the batch runtime
+  configuration. Valid values are as follows:
+
+  `server`;;
+    Lists the batch runtime configuration for the default server
+    instance `server` and is the default value.
+  cluster-name;;
+    Lists the batch runtime configuration for every server instance in
+    the cluster.
+  instance-name;;
+    Lists the batch runtime configuration for a particular server
+    instance.
+
+`--output`::
+`-o`::
+  Displays specific details about the batch runtime configuration. Use a
+  comma-separated list to specify the details to display and their
+  order. The values are case-insensitive. The `datasourcelookupname` and
+  `executorservicelookupname` column headings are displayed by default. +
+  Possible values are as follows:
+
+  `datasourcelookupname`;;
+    The JNDI lookup name of the data source used to store job
+    information. By default, the batch runtime uses the default data
+    source `jdbc/__TimerPool`.
+  `executorservicelookupname`;;
+    The JNDI lookup name of the managed executor service used to provide
+    threads to jobs. By default, the batch runtime uses the default
+    managed executor service `concurrent/__defaultManagedExecutorService`.
+
+`--header`::
+`-h`::
+  Specifies whether column headings are displayed when the `--long`
+  option is used. The default value is `true`. To suppress the headings,
+  set the `--header` option to `false`.
+
+[[sthref1367]]
+
+=== Examples
+
+[[GSRFM864]][[sthref1368]]
+
+==== Example 1   Listing Batch Runtime Configuration
+
+The following example lists the configuration of the batch runtime for
+the default server instance.
+
+[source]
+----
+asadmin> list-batch-runtime-configuration
+DATASOURCELOOKUPNAME     EXECUTORSERVICELOOKUPNAME
+jdbc/_default            concurrent/__defaultManagedExecutorService
+Command list-batch-runtime-configuration executed successfully.
+----
+
+[[sthref1369]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1370]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:set-batch-runtime-configuration.html#set-batch-runtime-configuration-1[`set-batch-runtime-configuration`(1)],
+link:list-batch-jobs.html#list-batch-jobs-1[`list-batch-jobs`(1)],
+link:list-batch-job-executions.html#list-batch-job-executions-1[`list-batch-job-executions`(1)],
+link:list-batch-job-steps.html#list-batch-job-steps-1[`list-batch-job-steps`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-clusters.adoc b/docs/reference-manual/src/main/asciidoc/list-clusters.adoc
new file mode 100644
index 0000000..4d40ca5
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-clusters.adoc
@@ -0,0 +1,140 @@
+type=page
+status=published
+title=list-clusters
+next=list-commands.html
+prev=list-batch-runtime-configuration.html
+~~~~~~
+
+= list-clusters
+
+[[list-clusters-1]][[GSRFM00153]][[list-clusters]]
+
+== list-clusters
+
+Lists existing clusters in a domain
+
+[[sthref1371]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-clusters [--help]
+[target]
+----
+
+[[sthref1372]]
+
+=== Description
+
+The `list-clusters` subcommand lists existing clusters in a domain. The
+list can be filtered by cluster, instance, node, or configuration. For
+each cluster that is listed, the subcommand indicates whether the
+cluster is running.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1373]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1374]]
+
+=== Operands
+
+target::
+  Filters the list of clusters by specifying the target for which the
+  clusters are to be listed. Valid values are as follows:
+
+  `domain`;;
+    Lists all clusters in the domain (default).
+  cluster-name;;
+    Lists only the specified cluster.
+  instance-name;;
+    Lists the cluster of which the specified instance is a member.
+  node-name;;
+    Lists the clusters that contain an instance that resides on the
+    specified node. For example, if instance `pmdi1` in cluster `pmdc`
+    and instance `ymli1` in cluster `ymlc` reside on node `n1`, `pmdc`
+    and `ymlc` are listed.
+  configuration-name;;
+    Lists all clusters that contain instances whose configuration is
+    defined by the named configuration.
+
+[[sthref1375]]
+
+=== Examples
+
+[[GSRFM641]][[sthref1376]]
+
+==== Example 1   Listing All Clusters in a Domain
+
+This example lists all clusters in the current domain.
+
+[source]
+----
+asadmin> list-clusters
+pmdclust not running
+ymlclust not running
+
+Command list-clusters executed successfully.
+----
+
+[[GSRFM642]][[sthref1377]]
+
+==== Example 2   Displaying the Status of a Cluster
+
+This example displays status of the cluster `ymlclust`, which is not
+running.
+
+[source]
+----
+asadmin> list-clusters ymlclust
+ymlclust not running
+
+Command list-clusters executed successfully.
+----
+
+[[GSRFM643]][[sthref1378]]
+
+==== Example 3   Listing All Clusters That Are Associated With a Node
+
+This example lists the clusters that contain an instance that resides on
+the node `sj02`.
+
+[source]
+----
+asadmin> list-clusters sj02
+ymlclust not running
+
+Command list-clusters executed successfully.
+----
+
+[[sthref1379]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1380]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-cluster.html#create-cluster-1[`create-cluster`(1)],
+link:delete-cluster.html#delete-cluster-1[`delete-cluster`(1)],
+link:start-cluster.html#start-cluster-1[`start-cluster`(1)],
+link:stop-cluster.html#stop-cluster-1[`stop-cluster`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-commands.adoc b/docs/reference-manual/src/main/asciidoc/list-commands.adoc
new file mode 100644
index 0000000..a1b8806
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-commands.adoc
@@ -0,0 +1,225 @@
+type=page
+status=published
+title=list-commands
+next=list-components.html
+prev=list-clusters.html
+~~~~~~
+
+= list-commands
+
+[[list-commands-1]][[GSRFM00154]][[list-commands]]
+
+== list-commands
+
+Lists available commands
+
+[[sthref1381]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-commands [--help]
+[--localonly={false|true}] [--remoteonly={false|true}]
+
+pattern-list
+----
+
+[[sthref1382]]
+
+=== Description
+
+The `list-commands` subcommand lists the `asadmin` subcommands.
+
+By default, the `list-commands` subcommand displays a list of local
+subcommands followed by a list of remote subcommands. You can specify
+that only remote subcommands or only local subcommands are listed and
+that only subcommands whose names contain a specified text string are
+listed.
+
+This subcommand is supported in local mode and remote mode.
+
+[[sthref1383]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--localonly`::
+  If this option is set to true, only local commands are listed. Default
+  is false. +
+  If this option is set to true, the `--remoteonly` option must be set
+  to false. Otherwise, an error occurs.
+`--remoteonly`::
+  If this option is set to true, only remote commands are listed.
+  Default is false. +
+  If this option is set to true, the `--localonly` option must be set to
+  false. Otherwise, an error occurs.
+
+[[sthref1384]]
+
+=== Operands
+
+pattern-list::
+  A space-separated list of text strings on which to filter the list of
+  subcommands. Only the subcommands that contain any one of the
+  specified text strings is listed.
+
+[[sthref1385]]
+
+=== Examples
+
+[[GSRFM644]][[sthref1386]]
+
+==== Example 1   Listing the Local Subcommands
+
+This example lists only the local subcommands.
+
+[source]
+----
+asadmin> list-commands --localonly=true
+********** Local Commands **********
+change-admin-password
+change-master-password
+create-domain
+create-service
+delete-domain
+export
+help
+list-commands
+list-domains
+login
+monitor
+multimode
+restart-domain
+start-database
+start-domain
+stop-database
+stop-domain
+unset
+verify-domain-xml
+version
+Command list-commands executed successfully.
+----
+
+[[GSRFM645]][[sthref1387]]
+
+==== Example 2   Filtering the Subcommands That Are Listed
+
+This example lists only the subcomands whose names contain the text
+`configure` or `set`.
+
+[source]
+----
+asadmin> list-commands configure set
+********** Local Commands **********
+setup-ssh
+unset
+
+********** Remote Commands **********
+configure-jms-cluster                   set-log-levels
+configure-lb-weight                     set-web-context-param
+configure-ldap-for-admin                set-web-env-entry
+set                                     unset-web-context-param
+set-log-attributes                      unset-web-env-entry
+
+Command list-commands executed successfully.
+----
+
+[[GSRFM646]][[sthref1388]]
+
+==== Example 3   Listing All Subcommands
+
+This example first displays a list of the local subcommands, followed by
+a partial list of the remote subcommands.
+
+[source]
+----
+asadmin> list-commands
+********** Local Commands **********
+change-admin-password
+change-master-password
+create-domain
+create-service
+delete-domain
+export
+help
+list-commands
+list-domains
+login
+monitor
+multimode
+restart-domain
+start-database
+start-domain
+stop-database
+stop-domain
+unset
+verify-domain-xml
+version
+********** Remote Commands **********
+__locations                             enable
+add-resources                           enable-monitoring
+configure-ldap-for-admin                flush-jmsdest
+create-admin-object                     freeze-transaction-service
+create-audit-module                     generate-jvm-report
+create-auth-realm                       get
+create-connector-connection-pool        get-client-stubs
+create-connector-resource               get-host-and-port
+create-connector-security-map           jms-ping
+create-connector-work-security-map      list
+create-custom-resource                  list-admin-objects
+create-file-user                        list-app-refs
+create-http                             list-applications
+create-http-listener                    list-audit-modules
+create-iiop-listener                    list-auth-realms
+create-javamail-resource                list-components
+create-jdbc-connection-pool             list-connector-connection-pools
+create-jdbc-resource                    list-connector-resources
+create-jms-host                         list-connector-security-maps
+create-jms-resource                     list-connector-work-security-maps
+create-jmsdest                          list-containers
+create-jndi-resource                    list-custom-resources
+create-jvm-options                      list-file-groups
+create-lifecycle-module                 list-file-users
+create-message-security-provider        list-http-listeners
+create-network-listener                 list-iiop-listeners
+create-password-alias                   list-javamail-resources
+create-profiler                         list-jdbc-connection-pools
+create-protocol                         list-jdbc-resources
+create-resource-adapter-config          list-jms-hosts
+create-resource-ref                     list-jms-resources
+create-ssl                              list-jmsdest
+create-system-properties                list-jndi-entries
+create-threadpool                       list-jndi-resources
+create-transport                        list-jvm-options
+create-virtual-server                   list-lifecycle-modules
+delete-admin-object                     list-logger-levels
+delete-audit-module                     list-message-security-providers
+...
+----
+
+[[sthref1389]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1390]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:list-components.html#list-components-1[`list-components`(1)],
+link:list-containers.html#list-containers-1[`list-containers`(1)],
+link:list-modules.html#list-modules-1[`list-modules`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-components.adoc b/docs/reference-manual/src/main/asciidoc/list-components.adoc
new file mode 100644
index 0000000..f57e61e
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-components.adoc
@@ -0,0 +1,145 @@
+type=page
+status=published
+title=list-components
+next=list-configs.html
+prev=list-commands.html
+~~~~~~
+
+= list-components
+
+[[list-components-1]][[GSRFM00155]][[list-components]]
+
+== list-components
+
+Lists deployed components
+
+[[sthref1391]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-components [--help]
+[--long={false|true}] [--resources] [--subcomponents]
+[--type type] [target]
+----
+
+[[sthref1392]]
+
+=== Description
+
+[NOTE]
+====
+The `list-components` subcommand is deprecated. Use the
+`list-applications` subcommand instead.
+====
+
+The `list-components` subcommand lists all deployed Jakarta EE components.
+
+If the `--type` option is not specified, all components are listed. If
+the type option is specified, you must specify a type. The possible
+types are listed in the Options section in this help page.
+
+If multiple versions of a module or application are deployed, this
+subcommand lists all versions. To list which version is enabled, set the
+`--long` option to `true`. For more information about module and
+application versions, see "link:application-deployment-guide/overview.html#GSDPG00324[Module and Application
+Versions]" in {productName} Application
+Deployment Guide.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1393]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--long`::
+  If `true`, displays whether each module or application listed is
+  enabled. The default is `false`.
+`--resources`::
+  Lists the application-scoped resources for each component. If the
+  `--subcomponents` option is also used, lists the application-scoped
+  resources for each component within an application.
+`--subcomponents`::
+  Lists the subcomponents of each component. The subcomponents listed
+  depend on the component type. For example, for a Jakarta EE application
+  (EAR file), modules are listed. For a web application, servlets and
+  JSP pages are listed. For an EJB module, EJB subcomponents are listed.
+`--type`::
+  Specifies the type of the components that are to be listed. The
+  options are as follows:
+
+  * `application`
+  * `appclient`
+  * `connector`
+  * `ejb`
+  * `web`
+  * `webservice`
+
++
+If no type is specified, all components are listed.
+
+[[sthref1394]]
+
+=== Operands
+
+target::
+  This is the name of the target upon which the subcommand operates. The
+  valid values are:
++
+  `server`;;
+    Lists the components for the default server instance `server` and is
+    the default value.
+  `domain`;;
+    Lists the components for the domain.
+  cluster_name;;
+    Lists the components for the cluster.
+  instance_name;;
+    Lists the components for a particular stand-alone server instance.
+
+[[sthref1395]]
+
+=== Examples
+
+[[GSRFM647]][[sthref1396]]
+
+==== Example 1   Listing Components
+
+This example lists the connector components. (`cciblackbox-tx.rar` was
+deployed.)
+
+[source]
+----
+asadmin> list-components --type connector
+cciblackbox-tx <connector>
+Command list-components executed successfully
+----
+
+[[sthref1397]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1398]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:list-applications.html#list-applications-1[`list-applications`(1)],
+link:show-component-status.html#show-component-status-1[`show-component-status`(1)]
+
+link:application-deployment-guide.html#GSDPG[
+{productName} Application Deployment Guide]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-configs.adoc b/docs/reference-manual/src/main/asciidoc/list-configs.adoc
new file mode 100644
index 0000000..062379a
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-configs.adoc
@@ -0,0 +1,111 @@
+type=page
+status=published
+title=list-configs
+next=list-connector-connection-pools.html
+prev=list-components.html
+~~~~~~
+
+= list-configs
+
+[[list-configs-1]][[GSRFM00156]][[list-configs]]
+
+== list-configs
+
+Lists named configurations
+
+[[sthref1399]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-configs [--help]
+[target]
+----
+
+[[sthref1400]]
+
+=== Description
+
+The `list—configs` subcommand lists named configurations in the
+configuration of the domain administration server (DAS). The list can be
+filtered by cluster, instance, or named configuration.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1401]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1402]]
+
+=== Operands
+
+target::
+  Filters the list of configurations. Valid values are as follows:
+
+  `domain`;;
+    Lists all named configurations in the current domain.
+  cluster-name;;
+    Lists the named configuration that defines the configuration of
+    instances in the specified cluster.
+  instance-name;;
+    Lists the named configuration that defines the configuration of the
+    specified instance.
+  configuration-name;;
+    Lists the specified named configuration. Use this option to
+    determine whether a named configuration exits.
+
+[[sthref1403]]
+
+=== Examples
+
+[[GSRFM648]][[sthref1404]]
+
+==== Example 1   Listing All Named Configurations in a Domain
+
+This example lists all named configurations in the current domain.
+
+[source]
+----
+asadmin> list-configs
+server-config
+default-config
+pmdclust-config
+pmdsharedconfig
+pmdcpinst-config
+ymlclust-config
+il1-config
+il2-config
+
+Command list-configs executed successfully.
+----
+
+[[sthref1405]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1406]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:copy-config.html#copy-config-1[`copy-config`(1)],
+link:delete-config.html#delete-config-1[`delete-config`(1)]
+
+link:configuration.html#configuration-5asc[`configuration`(5ASC)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-connector-connection-pools.adoc b/docs/reference-manual/src/main/asciidoc/list-connector-connection-pools.adoc
new file mode 100644
index 0000000..ba78cf0
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-connector-connection-pools.adoc
@@ -0,0 +1,81 @@
+type=page
+status=published
+title=list-connector-connection-pools
+next=list-connector-resources.html
+prev=list-configs.html
+~~~~~~
+
+= list-connector-connection-pools
+
+[[list-connector-connection-pools-1]][[GSRFM00157]][[list-connector-connection-pools]]
+
+== list-connector-connection-pools
+
+Lists the existing connector connection pools
+
+[[sthref1407]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-connector-connection-pools [--help]
+----
+
+[[sthref1408]]
+
+=== Description
+
+The `list-connector-connection-pools` subcommand list connector
+connection pools that have been created.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1409]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1410]]
+
+=== Examples
+
+[[GSRFM649]][[sthref1411]]
+
+==== Example 1   Listing the Connector Connection Pools
+
+This example lists the existing connector connection pools.
+
+[source]
+----
+asadmin> list-connector-connection-pools
+jms/qConnPool
+Command list-connector-connection-pools executed successfully
+----
+
+[[sthref1412]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1413]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-connector-connection-pool.html#create-connector-connection-pool-1[`create-connector-connection-pool`(1)],
+link:delete-connector-connection-pool.html#delete-connector-connection-pool-1[`delete-connector-connection-pool`(1)],
+link:ping-connection-pool.html#ping-connection-pool-1[`ping-connection-pool`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-connector-resources.adoc b/docs/reference-manual/src/main/asciidoc/list-connector-resources.adoc
new file mode 100644
index 0000000..11e6fd0
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-connector-resources.adoc
@@ -0,0 +1,99 @@
+type=page
+status=published
+title=list-connector-resources
+next=list-connector-security-maps.html
+prev=list-connector-connection-pools.html
+~~~~~~
+
+= list-connector-resources
+
+[[list-connector-resources-1]][[GSRFM00158]][[list-connector-resources]]
+
+== list-connector-resources
+
+Lists all connector resources
+
+[[sthref1414]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-connector-resources [--help]
+[target]
+----
+
+[[sthref1415]]
+
+=== Description
+
+The `list-connector-resources` subcommand lists all connector resources.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1416]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1417]]
+
+=== Operands
+
+target::
+  The target for which the connector resources are to be listed. Valid
+  values are as follows:
+
+  `server`;;
+    Lists the connector resources on the default server instance. This
+    is the default value.
+  `domain`;;
+    Lists the connector resources for the domain.
+  cluster-name;;
+    Lists the connector resources on all server instances in the
+    specified cluster.
+  instance-name;;
+    Lists the connector resources on a specified server instance.
+
+[[sthref1418]]
+
+=== Examples
+
+[[GSRFM650]][[sthref1419]]
+
+==== Example 1   Listing Connector Resources
+
+This example lists all existing connector resources.
+
+[source]
+----
+asadmin> list-connector-resources
+jms/qConnFactory
+Command list-connector-resources executed successfully.
+----
+
+[[sthref1420]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1421]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-connector-resource.html#create-connector-resource-1[`create-connector-resource`(1)],
+link:delete-connector-resource.html#delete-connector-resource-1[`delete-connector-resource`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-connector-security-maps.adoc b/docs/reference-manual/src/main/asciidoc/list-connector-security-maps.adoc
new file mode 100644
index 0000000..6692599
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-connector-security-maps.adoc
@@ -0,0 +1,108 @@
+type=page
+status=published
+title=list-connector-security-maps
+next=list-connector-work-security-maps.html
+prev=list-connector-resources.html
+~~~~~~
+
+= list-connector-security-maps
+
+[[list-connector-security-maps-1]][[GSRFM00159]][[list-connector-security-maps]]
+
+== list-connector-security-maps
+
+Lists the security maps belonging to the specified connector connection pool
+
+[[sthref1422]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-connector-security-maps [--help]
+[--securitymap securitymap]
+[--verbose={false|true}] [--target target]
+pool-name
+----
+
+[[sthref1423]]
+
+=== Description
+
+The `list-connector-security-maps` subcommand lists the security maps
+belonging to the specified connector connection pool.
+
+For this subcommand to succeed, you must have first created a connector
+connection pool using the `create-connector-connection-pool` subcommand.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1424]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--securitymap`::
+  Specifies the name of the security map contained within the connector
+  connection pool from which the identity and principals should be
+  listed. With this option, `--verbose` is redundant.
+`--verbose`::
+  If set to `true`, returns a list including the identity, principals,
+  and security name. The default is `false`.
+`--target`::
+  Do not specify this option. This option is retained for compatibility
+  with earlier releases. If you specify this option, a syntax error does
+  not occur. Instead, the subcommand runs successfully and displays a
+  warning message that the option is ignored.
+
+[[sthref1425]]
+
+=== Operands
+
+pool-name::
+  Name of the connector connection pool for which you want to list
+  security maps.
+
+[[sthref1426]]
+
+=== Examples
+
+[[GSRFM651]][[sthref1427]]
+
+==== Example 1   Listing the Connector Security Maps
+
+This example lists the existing connector security maps for the pool
+named `connector-Pool1`.
+
+[source]
+----
+asadmin> list-connector-security-maps connector-Pool1
+securityMap1
+Command list-connector-security-maps executed successfully.
+----
+
+[[sthref1428]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1429]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-connector-security-map.html#create-connector-security-map-1[`create-connector-security-map`(1)],
+link:delete-connector-security-map.html#delete-connector-security-map-1[`delete-connector-security-map`(1)],
+link:update-connector-security-map.html#update-connector-security-map-1[`update-connector-security-map`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-connector-work-security-maps.adoc b/docs/reference-manual/src/main/asciidoc/list-connector-work-security-maps.adoc
new file mode 100644
index 0000000..59d31fc
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-connector-work-security-maps.adoc
@@ -0,0 +1,98 @@
+type=page
+status=published
+title=list-connector-work-security-maps
+next=list-containers.html
+prev=list-connector-security-maps.html
+~~~~~~
+
+= list-connector-work-security-maps
+
+[[list-connector-work-security-maps-1]][[GSRFM00160]][[list-connector-work-security-maps]]
+
+== list-connector-work-security-maps
+
+Lists the work security maps belonging to the specified resource adapter
+
+[[sthref1430]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-connector-work-security-maps [--help]
+[--securitymap securitymap]
+resource_adapter_name
+----
+
+[[sthref1431]]
+
+=== Description
+
+The `list-connector-work-security-maps` subcommand lists the work
+security maps belonging to the specified resource adapter.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1432]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--securitymap`::
+  Specifies the name of the security map contained within the resource
+  adapter from which the identity and principals should be listed.
+
+[[sthref1433]]
+
+=== Operands
+
+resource_adapter_name::
+  The name of the resource adapter for which you want to list security
+  maps.
+
+[[sthref1434]]
+
+=== Examples
+
+[[GSRFM652]][[sthref1435]]
+
+==== Example 1   Listing Connector Work Security Maps
+
+This example lists the current connector work security maps for the
+resource adapter named `my_resource_adapter`.
+
+[source]
+----
+asadmin> list-connector-work-security-maps my_resource_adapter
+workSecurityMap1: EIS principal=eis-principal-2, mapped principal=server-principal-2
+workSecurityMap1: EIS principal=eis-principal-1, mapped principal=server-principal-1
+workSecurityMap2: EIS principal=eis-principal-2, mapped principal=server-principal-2
+workSecurityMap2: EIS principal=eis-principal-1, mapped principal=server-principal-1
+Command list-connector-work-security-maps executed successfully.
+----
+
+[[sthref1436]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1437]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-connector-work-security-map.html#create-connector-work-security-map-1[`create-connector-work-security-map`(1)],
+link:delete-connector-work-security-map.html#delete-connector-work-security-map-1[`delete-connector-work-security-map`(1)],
+link:update-connector-work-security-map.html#update-connector-work-security-map-1[`update-connector-work-security-map`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-containers.adoc b/docs/reference-manual/src/main/asciidoc/list-containers.adoc
new file mode 100644
index 0000000..beace68
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-containers.adoc
@@ -0,0 +1,93 @@
+type=page
+status=published
+title=list-containers
+next=list-context-services.html
+prev=list-connector-work-security-maps.html
+~~~~~~
+
+= list-containers
+
+[[list-containers-1]][[GSRFM00161]][[list-containers]]
+
+== list-containers
+
+Lists application containers
+
+[[sthref1438]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-containers [--help]
+----
+
+[[sthref1439]]
+
+=== Description
+
+The `list-containers` subcommand displays a list of application
+containers.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1440]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1441]]
+
+=== Examples
+
+[[GSRFM653]][[sthref1442]]
+
+==== Example 1   Listing the Application Containers
+
+This example lists the current application containers.
+
+[source]
+----
+asadmin> list-containers
+List all known application containers
+Container : grizzly
+Container : ejb
+Container : webservices
+Container : ear
+Container : appclient
+Container : connector
+Container : jpa
+Container : web
+Container : osgi
+Container : security
+Container : webbeans
+
+Command list-containers executed successfully.
+----
+
+[[sthref1443]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1444]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:list-commands.html#list-commands-1[`list-commands`(1)],
+link:list-components.html#list-components-1[`list-components`(1)],
+link:list-modules.html#list-modules-1[`list-modules`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-context-services.adoc b/docs/reference-manual/src/main/asciidoc/list-context-services.adoc
new file mode 100644
index 0000000..ca7ecd0
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-context-services.adoc
@@ -0,0 +1,102 @@
+type=page
+status=published
+title=list-context-services
+next=list-custom-resources.html
+prev=list-containers.html
+~~~~~~
+
+= list-context-services
+
+[[list-context-services-1]][[GSRFM865]][[list-context-services]]
+
+== list-context-services
+
+Lists context service resources
+
+[[sthref1445]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-context-services [--help]
+[target]
+----
+
+[[sthref1446]]
+
+=== Description
+
+The `list-context-services` subcommand lists context service resources.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1447]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1448]]
+
+=== Operands
+
+target::
+  Specifies the target for which context service resources are to be
+  listed. Valid targets are:
+
+  `server`;;
+    Lists the resources on the default server instance. This is the
+    default value.
+  `domain`;;
+    Lists the resources for the domain.
+  cluster-name;;
+    Lists the resources on all server instances in the specified
+    cluster.
+  instance-name;;
+    Lists the resources on a specified server instance.
+
+[[sthref1449]]
+
+=== Examples
+
+[[GSRFM866]][[sthref1450]]
+
+==== Example 1   Listing Context Service Resources
+
+This example lists context service resources on the default server
+instance.
+
+[source]
+----
+asadmin> list-context-services
+concurrent/__defaultContextService
+concurrent/myContextService1
+concurrent/myContextService2
+Command list-context-services executed successfully.
+----
+
+[[sthref1451]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1452]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-context-service.html#create-context-service-1[`create-context-service`(1)],
+link:delete-context-service.html#delete-context-service-1[`delete-context-service`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-custom-resources.adoc b/docs/reference-manual/src/main/asciidoc/list-custom-resources.adoc
new file mode 100644
index 0000000..48326e2
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-custom-resources.adoc
@@ -0,0 +1,114 @@
+type=page
+status=published
+title=list-custom-resources
+next=list-domains.html
+prev=list-context-services.html
+~~~~~~
+
+= list-custom-resources
+
+[[list-custom-resources-1]][[GSRFM00162]][[list-custom-resources]]
+
+== list-custom-resources
+
+Gets all custom resources
+
+[[sthref1453]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-custom-resources [--help]
+[target]
+----
+
+[[sthref1454]]
+
+=== Description
+
+The `list-custom-resources` subcommand lists the custom resources.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1455]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1456]]
+
+=== Operands
+
+target::
+  This operand specifies the location of the custom resources. Valid
+  targets are:
+
+  `server`;;
+    Lists the resources on the default server instance. This is the
+    default value
+  `domain`;;
+    Lists the resources in the domain.
+  cluster_name;;
+    Lists the resources for every server instance in the cluster.
+  instance_name;;
+    Lists the resources for a particular server instance.
+
+[[sthref1457]]
+
+=== Examples
+
+[[GSRFM654]][[sthref1458]]
+
+==== Example 1   Listing Custom Resources
+
+This example lists the current custom resources.
+
+[source]
+----
+asadmin> list-custom-resources
+sample_custom_resource01
+sample_custom_resource02
+Command list-custom-resources executed successfully.
+----
+
+[[GSRFM655]][[sthref1459]]
+
+==== Example 2   Using the list-custom-resources command with a target
+
+The following example displays the usage of this command.
+
+[source]
+----
+asadmin> list-custom-resources --user admin --passwordfile
+passwords.txt --host plum --port 4848 target6
+
+sample_custom_resource03
+sample_custom_resource04
+Command list-custom-resources executed successfully.
+----
+
+[[sthref1460]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1461]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-custom-resource.html#create-custom-resource-1[`create-custom-resource`(1)],link:delete-custom-resource.html#delete-custom-resource-1[`delete-custom-resource`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-domains.adoc b/docs/reference-manual/src/main/asciidoc/list-domains.adoc
new file mode 100644
index 0000000..93500e6
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-domains.adoc
@@ -0,0 +1,105 @@
+type=page
+status=published
+title=list-domains
+next=list-file-groups.html
+prev=list-custom-resources.html
+~~~~~~
+
+= list-domains
+
+[[list-domains-1]][[GSRFM00163]][[list-domains]]
+
+== list-domains
+
+Lists the domains in the specified directory
+
+[[sthref1462]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-domains [--help]
+[--domaindir domaindir]
+[--long={false|true}]
+[--header={false|true}]
+----
+
+[[sthref1463]]
+
+=== Description
+
+The `list-domains` subcommand lists the domains in the specified domains
+directory. If the domains directory is not specified, the domains in the
+default directory are listed. If there is more that one domains
+directory, the `--domaindir` option must be specified. The status of
+each domain is included.
+
+This subcommand is supported in local mode only.
+
+[[sthref1464]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--domaindir`::
+  The directory where the domains are to be listed. If specified, the
+  path must be accessible in the files stem. If not specified, the
+  domains in the domain root directory are listed. The default location
+  of the domain root directory is as-install``/domains``.
+`--long`::
+`-l`::
+  Displays detailed information about the administration servers in the
+  listed domains, including host names and port numbers. The default
+  value is `false`.
+`--header`::
+`-h`::
+  Specifies whether a header is displayed when the `--long` option is
+  used. The default value is `true`. To suppress the header, set the
+  `--header` option to `false`.
+
+[[sthref1465]]
+
+=== Examples
+
+[[GSRFM656]][[sthref1466]]
+
+==== Example 1   Listing Domains
+
+This example lists the domains in the default directory.
+
+[source]
+----
+asadmin> list-domains
+Name: domain1 Status: Running
+Name: domain2 Status: Not running
+Name: domain4 Status: Running, restart required to apply configuration changes
+Command list-domains executed successfully
+----
+
+[[sthref1467]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1468]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-domain.html#create-domain-1[`create-domain`(1)],
+link:delete-domain.html#delete-domain-1[`delete-domain`(1)],
+link:start-domain.html#start-domain-1[`start-domain`(1)],
+link:stop-domain.html#stop-domain-1[`stop-domain`(1)],
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-file-groups.adoc b/docs/reference-manual/src/main/asciidoc/list-file-groups.adoc
new file mode 100644
index 0000000..96ce651
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-file-groups.adoc
@@ -0,0 +1,104 @@
+type=page
+status=published
+title=list-file-groups
+next=list-file-users.html
+prev=list-domains.html
+~~~~~~
+
+= list-file-groups
+
+[[list-file-groups-1]][[GSRFM00164]][[list-file-groups]]
+
+== list-file-groups
+
+Lists file groups
+
+[[sthref1469]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-file-groups [--help]
+[--name username] [--authrealmname auth_realm_name]
+[--target target]
+----
+
+[[sthref1470]]
+
+=== Description
+
+The `list-file-groups` subcommand lists the file users and groups
+supported by the file realm authentication. This subcommand lists
+available groups in the file user. If the `--name` option is not
+specified, all groups are listed.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1471]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--name`::
+  Identifies the name of the file user for whom the groups will be
+  listed.
+`--authrealmname`::
+  The name of the authentication realm for which to list available
+  groups.
+`--target`::
+  This option specifies which configurations you can list. Valid targets
+  are:
+
+  `server`;;
+    Lists the file groups in the current server. This is the default
+    value.
+  cluster_name;;
+    Lists the file groups in a cluster.
+  instance_name;;
+    Lists the file groups for a particular instance.
+
+[[sthref1472]]
+
+=== Examples
+
+[[GSRFM657]][[sthref1473]]
+
+==== Example 1   Listing Groups in all File Realms
+
+This example list all file realm groups defined for the server.
+
+[source]
+----
+asadmin> list-file-groups
+staff
+manager
+Command list-file-groups executed successfully
+----
+
+[[sthref1474]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1475]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-file-user.html#create-file-user-1[`create-file-user`(1)],
+link:delete-file-user.html#delete-file-user-1[`delete-file-user`(1)],
+link:list-file-users.html#list-file-users-1[`list-file-users`(1)],
+link:update-file-user.html#update-file-user-1[`update-file-user`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-file-users.adoc b/docs/reference-manual/src/main/asciidoc/list-file-users.adoc
new file mode 100644
index 0000000..380e9b5
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-file-users.adoc
@@ -0,0 +1,102 @@
+type=page
+status=published
+title=list-file-users
+next=list-http-lb-configs.html
+prev=list-file-groups.html
+~~~~~~
+
+= list-file-users
+
+[[list-file-users-1]][[GSRFM00165]][[list-file-users]]
+
+== list-file-users
+
+Lists the file users
+
+[[sthref1476]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-file-users [--help]
+[--authrealmname auth_realm_name] [target]
+----
+
+[[sthref1477]]
+
+=== Description
+
+The `list-file-users` subcommand displays a list of file users supported
+by file realm authentication.
+
+[[sthref1478]]
+
+=== Options
+
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--authrealmname`::
+  Lists only the users in the specified authentication realm.
+
+[[sthref1479]]
+
+=== Operands
+
+target::
+  Specifies the target for which you want to list file users. The
+  following values are valid:
+
+  `server`;;
+    Lists the file users on the default server instance. This is the
+    default value.
+  configuration_name;;
+    Lists the file users in the specified configuration.
+  cluster_name;;
+    Lists the file users on all server instances in the specified
+    cluster.
+  instance_name;;
+    Lists the file users on a specified server instance.
+
+[[sthref1480]]
+
+=== Examples
+
+[[GSRFM658]][[sthref1481]]
+
+==== Example 1   Listing Users in a Specific File Realm
+
+The following example lists the users in the file realm named
+`sample_file_realm`.
+
+[source]
+----
+asadmin> list-file-users --authrealmname sample_file_realm
+sample_user05
+sample_user08
+sample_user12
+Command list-file-users executed successfully
+----
+
+[[sthref1482]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1483]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-file-user.html#create-file-user-1[`create-file-user`(1)],
+link:delete-file-user.html#delete-file-user-1[`delete-file-user`(1)],
+link:list-file-groups.html#list-file-groups-1[`list-file-groups`(1)],
+link:update-file-user.html#update-file-user-1[`update-file-user`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-http-lb-configs.adoc b/docs/reference-manual/src/main/asciidoc/list-http-lb-configs.adoc
new file mode 100644
index 0000000..8fdd107
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-http-lb-configs.adoc
@@ -0,0 +1,114 @@
+type=page
+status=published
+title=list-http-lb-configs
+next=list-http-lbs.html
+prev=list-file-users.html
+~~~~~~
+
+= list-http-lb-configs
+
+[[list-http-lb-configs-1]][[GSRFM00166]][[list-http-lb-configs]]
+
+== list-http-lb-configs
+
+Lists load balancer configurations
+
+[[sthref1484]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-http-lb-configs [--help]
+[target]
+----
+
+[[sthref1485]]
+
+=== Description
+
+The `list-http-lb-configs` subcommand lists the load balancer
+configurations. List them all or list them by the cluster or server
+instance they reference.
+
+[NOTE]
+====
+This subcommand is only applicable to {productName}. This
+subcommand is not applicable to {productName}.
+====
+
+[[sthref1486]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1487]]
+
+=== Operands
+
+target::
+  Lists the load balancers by target. Valid values are:
+
+  * cluster_name- The name of a target cluster.
+  * instance_name- The name of a target server instance.
+
+[[sthref1488]]
+
+=== Examples
+
+[[GSRFM659]][[sthref1489]]
+
+==== Example 1   Listing Load Balancer Configurations Without a Target
+
+This example lists all load balancer configurations defined for all
+{productName} clusters and instances.
+
+[source]
+----
+asadmin> list-http-lb-configs
+
+mycluster-http-lb-config
+serverinstlb
+Command list-http-lb-configs executed successfully.
+----
+
+[[GSRFM660]][[sthref1490]]
+
+==== Example 2   Listing Load Balancer Configurations for a Specific Target
+
+This example lists the load balancer configuration defined for a cluster
+named `mycluster`.
+
+[source]
+----
+asadmin> list-http-lb-configs mycluster
+
+mycluster-http-lb-config
+Command list-http-lb-configs executed successfully.
+----
+
+[[sthref1491]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1492]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-http-lb-config.html#create-http-lb-config-1[`create-http-lb-config`(1)],
+link:delete-http-lb-config.html#delete-http-lb-config-1[`delete-http-lb-config`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-http-lbs.adoc b/docs/reference-manual/src/main/asciidoc/list-http-lbs.adoc
new file mode 100644
index 0000000..6fa9ad2
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-http-lbs.adoc
@@ -0,0 +1,126 @@
+type=page
+status=published
+title=list-http-lbs
+next=list-http-listeners.html
+prev=list-http-lb-configs.html
+~~~~~~
+
+= list-http-lbs
+
+[[list-http-lbs-1]][[GSRFM00167]][[list-http-lbs]]
+
+== list-http-lbs
+
+Lists load balancers
+
+[[sthref1493]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-http-lbs [--help]
+[--long={false|true}]
+[--output output]
+[--header={false|true}]
+[name]
+----
+
+[[sthref1494]]
+
+=== Description
+
+Use the `list-http-lbs` subcommand to list physical load balancers.
+
+[NOTE]
+====
+This subcommand is only applicable to {productName}. This
+subcommand is not applicable to {productName}.
+====
+
+[[sthref1495]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--long`::
+`-l`::
+  Displays detailed information about each load balancer. The default
+  value is `false.`
+`--output`::
+`-o`::
+  Displays specific details about each load balancer. Use a
+  comma-separated list to specify the details you want to display and
+  their order. For example,
+  `list-http-lbs --output name,device-host,device-port`. The values are
+  case-insensitive. +
+  Possible values are as follows:
+
+  `device-host`;;
+    Displays the device host or the IP address of the load balancing
+    device. This host or IP is where the physical load balancer resides.
+  `name`;;
+    Displays the name of the load balancer.
+  `auto-apply-enabled`;;
+    Displays whether the Auto Apply feature is enabled.
+  `lb-config-name`;;
+    Displays the name of the load balancer configuration.
+  `device-port`;;
+    Displays the port used to communicate with the load balancing device.
+
+`--header`::
+`-h`::
+  Specifies whether column headings are displayed when the `--long`
+  option is used. The default value is `true`. To suppress the headings,
+  set the `--header` option to `false`.
+
+[[sthref1496]]
+
+=== Operands
+
+name::
+  The name of the load balancer for which you want to display details.
+
+[[sthref1497]]
+
+=== Examples
+
+[[GSRFM661]][[sthref1498]]
+
+==== Example 1   Listing Physical Load Balancers for a Domain
+
+This example lists all physical load balancers defined for a domain.
+
+[source]
+----
+asadmin> list-http-lbs
+
+lb1
+lb2
+Command list-http-lbs executed successfully.
+----
+
+[[sthref1499]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1500]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-http-lb.html#create-http-lb-1[`create-http-lb`(1)],
+link:delete-http-lb.html#delete-http-lb-1[`delete-http-lb`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-http-listeners.adoc b/docs/reference-manual/src/main/asciidoc/list-http-listeners.adoc
new file mode 100644
index 0000000..aa216b8
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-http-listeners.adoc
@@ -0,0 +1,102 @@
+type=page
+status=published
+title=list-http-listeners
+next=list-iiop-listeners.html
+prev=list-http-lbs.html
+~~~~~~
+
+= list-http-listeners
+
+[[list-http-listeners-1]][[GSRFM00168]][[list-http-listeners]]
+
+== list-http-listeners
+
+Lists the existing network listeners
+
+[[sthref1501]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-http-listeners [--help]
+[target]
+----
+
+[[sthref1502]]
+
+=== Description
+
+The `list-http-listeners` subcommand lists the existing network listeners.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1503]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1504]]
+
+=== Operands
+
+target::
+  Restricts the listing to network listeners for a specified target.
+  Valid values are as follows:
+
+  `server`;;
+    Lists the netowork listeners for the default server instance. This
+    is the default value.
+  configuration-name;;
+    Lists the network listeners for the specified configuration.
+  cluster-name;;
+    Lists the network listeners for all server instances in the
+    specified cluster.
+  instance-name;;
+    Lists the network listeners for the specified server instance.
+
+[[sthref1505]]
+
+=== Examples
+
+[[GSRFM662]][[sthref1506]]
+
+==== Example 1   Listing Network Listeners
+
+The following command lists all the network listeners for the server
+instance:
+
+[source]
+----
+asadmin> list-http-listeners
+http-listener-1
+http-listener-2
+admin-listener
+Command list-http-listeners executed successfully.
+----
+
+[[sthref1507]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1508]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-http-listener.html#create-http-listener-1[`create-http-listener`(1)],
+link:delete-http-listener.html#delete-http-listener-1[`delete-http-listener`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-iiop-listeners.adoc b/docs/reference-manual/src/main/asciidoc/list-iiop-listeners.adoc
new file mode 100644
index 0000000..c762267
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-iiop-listeners.adoc
@@ -0,0 +1,101 @@
+type=page
+status=published
+title=list-iiop-listeners
+next=list-instances.html
+prev=list-http-listeners.html
+~~~~~~
+
+= list-iiop-listeners
+
+[[list-iiop-listeners-1]][[GSRFM00169]][[list-iiop-listeners]]
+
+== list-iiop-listeners
+
+Lists the existing IIOP listeners
+
+[[sthref1509]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-iiop-listeners [--help]
+[target]
+----
+
+[[sthref1510]]
+
+=== Description
+
+The `list-iiop-listeners` subcommand lists the existing IIOP listeners.
+This subcommand is supported in remote mode only.
+
+[[sthref1511]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1512]]
+
+=== Operands
+
+target::
+  This operand specifies the target for which the IIOP listeners are to
+  be listed. Valid values are:
+
+  `server`;;
+    Lists the listeners in the default server instance `server` and is
+    the default value.
+  configuration_name;;
+    Lists the listeners in the specified configuration.
+  cluster_name;;
+    Lists the listeners in the specified cluster.
+  instance_name;;
+    Lists the listeners in a particular server instance.
+
+[[sthref1513]]
+
+=== Examples
+
+[[GSRFM663]][[sthref1514]]
+
+==== Example 1   Using the list-iiop-listeners subcommand
+
+The following command lists all the IIOP listeners for the server
+instance:
+
+[source]
+----
+asadmin> list-iiop-listeners
+orb-listener-1
+SSL
+SSL_MUTUALAUTH
+sample_iiop_listener
+Command list-iiop-listeners executed successfully.
+----
+
+[[sthref1515]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1516]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-iiop-listener.html#create-iiop-listener-1[`create-iiop-listener`(1)],
+link:delete-iiop-listener.html#delete-iiop-listener-1[`delete-iiop-listener`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-instances.adoc b/docs/reference-manual/src/main/asciidoc/list-instances.adoc
new file mode 100644
index 0000000..4d95139
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-instances.adoc
@@ -0,0 +1,231 @@
+type=page
+status=published
+title=list-instances
+next=list-jacc-providers.html
+prev=list-iiop-listeners.html
+~~~~~~
+
+= list-instances
+
+[[list-instances-1]][[GSRFM00170]][[list-instances]]
+
+== list-instances
+
+Lists {productName} instances in a domain
+
+[[sthref1517]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-instances [--help]
+[--timeoutmsec timeout]
+[--long={false|true} | --nostatus={false|true}]
+[--standaloneonly={false|true} | target]
+----
+
+[[sthref1518]]
+
+=== Description
+
+The `list-instances` subcommand lists {productName} instances in a
+domain. The list can be filtered by cluster, instance, node, or
+configuration.
+
+The subcommand displays every {productName} instance in the
+specified target, regardless of how each instance was created. For
+example, this subcommand lists instances that were created by using the
+link:create-instance.html#create-instance-1[`create-instance`(1)]
+subcommand and by using the
+link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)]
+subcommand.
+
+By default, the subcommand indicates whether each instance that is
+listed is running. Options of this subcommand control the information
+that is displayed for each instance.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1519]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--timeoutmsec`::
+  The time limit in milliseconds for determining the status of
+  instances. The default is 2,000, which is equivalent to 2 seconds.
+`--long`::
+`-l`::
+  Specifies whether detailed information is displayed for each instance
+  that is listed. +
+  The `--long` option and `--nostatus` option are mutually exclusive. If
+  both options are specified in the same command, an error occurs. +
+  Valid values are as follows:
+
+  `true`;;
+    The following details are displayed for each instance that is listed:
++
+--
+    * The name of the instance
+    * The name of the host where the instance's node resides
+    * The HTTP port on which the instance listens for administration requests
+    * The process identifier (PID) of the instance process or -1 if the
+      instance is not running
+    * The name of the cluster of which the instance is a member, if any
+    * The state of the instance, which is `running` or `not running`
+--
++
+When an instance is listed, some configuration changes in the domain
+    administration server (DAS) for the instance might not have been
+    applied to the instance itself. In this situation, the commands that
+    are required to apply the changes are listed adjacent to the state
+    of the instance. The maximum number of commands that are listed for
+    an instance is 10.
+  `false`;;
+    Only the name of the instance and an indication of whether the
+    instance is running are displayed (default). The length of time that
+    the instance has been running is not displayed.
+
+`--nostatus`::
+  Specifies whether information about whether instances are running is suppressed. +
+  The `--long` option and `--nostatus` option are mutually exclusive. If
+  both options are specified in the same command, an error occurs. +
+  Valid values are as follows:
+
+  `true`;;
+    Information about whether instances are running is suppressed. Only
+    the name of each instance is displayed.
+  `false`;;
+    Information about whether instances are running is displayed
+    (default).
+
+`--standaloneonly`::
+  Specifies whether only standalone instances are listed. +
+  The `--standaloneonly` option and the target operand and are mutually
+  exclusive. If both the `--standaloneonly` option and the target
+  operand are specified in the same command, an error occurs. +
+  Valid values are as follows:
+
+  `true`;;
+    Only standalone instances are listed.
+  `false`;;
+    All instances in the specified target are listed (default).
+
+[[sthref1520]]
+
+=== Operands
+
+target::
+  Filters the list of {productName} instances by specifying the
+  target for which instances are listed. +
+  The target operand and the `--standaloneonly` option are mutually
+  exclusive. If both the target operand and the `--standaloneonly`
+  option are specified in the same command, an error occurs. +
+  Valid values are as follows:
+
+  `domain`;;
+    Lists all instances in the domain (default).
+  cluster-name;;
+    Lists the instances that are members of the specified cluster.
+  instance-name;;
+    Lists only the specified instance.
+  node-name;;
+    Lists the instances that reside on the specified node.
+  configuration-name;;
+    Lists all instances whose configuration is defined by the specified
+    named configuration.
+
+[[sthref1521]]
+
+=== Examples
+
+[[GSRFM664]][[sthref1522]]
+
+==== Example 1   Listing Basic Information About All {productName} Instances in a Domain
+
+This example lists the name and status of all {productName}
+instances in the current domain.
+
+[source]
+----
+asadmin> list-instances
+pmd-i-sj02 running
+yml-i-sj02 running
+pmd-i-sj01 running
+yml-i-sj01 running
+pmdsa1 not running
+
+Command list-instances executed successfully.
+----
+
+[[GSRFM665]][[sthref1523]]
+
+==== Example 2   Listing Detailed Information About All {productName} Instances in a Domain
+
+This example lists detailed information about all {productName}
+instances in the current domain.
+
+[source]
+----
+asadmin> list-instances --long=true
+NAME        HOST       PORT   PID    CLUSTER     STATE
+pmd-i-sj01  sj01       24848  31310  pmdcluster   running
+yml-i-sj01  sj01       24849  25355  ymlcluster   running
+pmdsa1      localhost  24848  -1     ---          not running
+pmd-i-sj02  sj02       24848  22498  pmdcluster   running
+yml-i-sj02  sj02       24849  20476  ymlcluster   running
+ymlsa1      localhost  24849  -1     ---          not running
+Command list-instances executed successfully.
+----
+
+[[GSRFM666]][[sthref1524]]
+
+==== Example 3   Displaying the Status of an Instance
+
+This example displays status of the instance `pmd-i-sj01`, which is running.
+
+[source]
+----
+asadmin> list-instances pmd-i-sj01
+pmd-i-sj01 running
+Command list-instances executed successfully.
+----
+
+[[GSRFM667]][[sthref1525]]
+
+==== Example 4   Listing Only Standalone Instances in a Domain
+
+This example lists only the standalone instances in the current domain.
+
+[source]
+----
+asadmin> list-instances --standaloneonly=true
+pmdsa1 not running
+Command list-instances executed successfully.
+----
+
+[[sthref1526]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1527]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-instance.html#create-instance-1[`create-instance`(1)],
+link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-jacc-providers.adoc b/docs/reference-manual/src/main/asciidoc/list-jacc-providers.adoc
new file mode 100644
index 0000000..c5b2fe6
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-jacc-providers.adoc
@@ -0,0 +1,106 @@
+type=page
+status=published
+title=list-jacc-providers
+next=list-javamail-resources.html
+prev=list-instances.html
+~~~~~~
+
+= list-jacc-providers
+
+[[list-jacc-providers-1]][[GSRFM00171]][[list-jacc-providers]]
+
+== list-jacc-providers
+
+Enables administrators to list JACC providers defined for a domain
+
+[[sthref1528]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-jacc-providers [--help]
+[target]
+----
+
+[[sthref1529]]
+
+=== Description
+
+The `list-jacc-providers` subcommand enables administrators to list the
+JACC providers defined for a domain. JACC providers are defined as
+`jacc-provider` elements in the `security-service` element in the
+domain's `domain.xml` file. JACC providers can be created using the
+{productName} Admin Console or the `create-jacc-provider` subcommand.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1530]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1531]]
+
+=== Operands
+
+target::
+  Specifies the target for which you want to list JACC providers. The
+  following values are valid:
+
+  `server`;;
+    Lists the JACC providers on the default server instance. This is the
+    default value.
+  configuration_name;;
+    Lists the JACC providers in the specified configuration.
+  cluster_name;;
+    Lists the JACC providers on all server instances in the specified
+    cluster.
+  instance_name;;
+    Lists the JACC providers on a specified server instance.
+
+[[sthref1532]]
+
+=== Examples
+
+[[GSRFM668]][[sthref1533]]
+
+==== Example 1   Listing JACC providers
+
+The following example shows how to list JACC providers for the default domain.
+
+[source]
+----
+asadmin> list-jacc-providers
+default
+simple
+testJACC
+
+Command list-jacc-providers executed successfully.
+----
+
+[[sthref1534]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1535]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-jacc-provider.html#create-jacc-provider-1[`create-jacc-provider`(1)],
+link:delete-jacc-provider.html#delete-jacc-provider-1[`delete-jacc-provider`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-javamail-resources.adoc b/docs/reference-manual/src/main/asciidoc/list-javamail-resources.adoc
new file mode 100644
index 0000000..661ba76
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-javamail-resources.adoc
@@ -0,0 +1,100 @@
+type=page
+status=published
+title=list-javamail-resources
+next=list-jdbc-connection-pools.html
+prev=list-jacc-providers.html
+~~~~~~
+
+= list-javamail-resources
+
+[[list-javamail-resources-1]][[GSRFM00172]][[list-javamail-resources]]
+
+== list-javamail-resources
+
+Lists the existing JavaMail session resources
+
+[[sthref1536]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-javamail-resources [--help]
+[target]
+----
+
+[[sthref1537]]
+
+=== Description
+
+The `list-javamail-resources` subcommand lists the existing JavaMail
+session resources.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1538]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1539]]
+
+=== Operands
+
+target::
+  This operand specifies the target for which the JavaMail session
+  resources are to be listed. Valid values are:
+
+  `server`;;
+    Lists the resources for the default server instance. This is the
+    default value.
+  `domain`;;
+    Lists the resources for the domain.
+  cluster_name;;
+    Lists the resources for the specified cluster.
+  instance_name;;
+    Lists the resources for a particular server instance.
+
+[[sthref1540]]
+
+=== Examples
+
+[[GSRFM669]][[sthref1541]]
+
+==== Example 1   Listing JavaMail Resources
+
+This example lists the JavaMail session resources for the server
+instance.
+
+[source]
+----
+asadmin> list-javamail-resources
+mail/MyMailSession
+Command list-javamail-resources executed successfuly.
+----
+
+[[sthref1542]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1543]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-javamail-resource.html#create-javamail-resource-1[`create-javamail-resource`(1)],
+link:delete-javamail-resource.html#delete-javamail-resource-1[`delete-javamail-resource`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-jdbc-connection-pools.adoc b/docs/reference-manual/src/main/asciidoc/list-jdbc-connection-pools.adoc
new file mode 100644
index 0000000..5bfef3a
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-jdbc-connection-pools.adoc
@@ -0,0 +1,81 @@
+type=page
+status=published
+title=list-jdbc-connection-pools
+next=list-jdbc-resources.html
+prev=list-javamail-resources.html
+~~~~~~
+
+= list-jdbc-connection-pools
+
+[[list-jdbc-connection-pools-1]][[GSRFM00173]][[list-jdbc-connection-pools]]
+
+== list-jdbc-connection-pools
+
+Lists all JDBC connection pools
+
+[[sthref1544]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-jdbc-connection-pools [--help]
+----
+
+[[sthref1545]]
+
+=== Description
+
+The `list-jdbc-connection-pools` subcommand lists the current JDBC
+connection pools.
+
+This subcommand is supported in the remote mode only.
+
+[[sthref1546]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1547]]
+
+=== Examples
+
+[[GSRFM670]][[sthref1548]]
+
+==== Example 1   Listing the JDBC Connection Pools
+
+This example lists the existing JDBC connection pools.
+
+[source]
+----
+asadmin> list-jdbc-connection-pools
+sample_derby_pool
+__TimerPool
+Command list-jdbc-connection-pools executed successfully.
+----
+
+[[sthref1549]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1550]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-jdbc-connection-pool.html#create-jdbc-connection-pool-1[`create-jdbc-connection-pool`(1)],
+link:delete-jdbc-connection-pool.html#delete-jdbc-connection-pool-1[`delete-jdbc-connection-pool`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-jdbc-resources.adoc b/docs/reference-manual/src/main/asciidoc/list-jdbc-resources.adoc
new file mode 100644
index 0000000..e3e473d
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-jdbc-resources.adoc
@@ -0,0 +1,98 @@
+type=page
+status=published
+title=list-jdbc-resources
+next=list-jmsdest.html
+prev=list-jdbc-connection-pools.html
+~~~~~~
+
+= list-jdbc-resources
+
+[[list-jdbc-resources-1]][[GSRFM00174]][[list-jdbc-resources]]
+
+== list-jdbc-resources
+
+Lists all JDBC resources
+
+[[sthref1551]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-jdbc-resources [--help]
+[target target]
+----
+
+[[sthref1552]]
+
+=== Description
+
+The `list-jdbc-resources` subcommand displays a list of the existing
+JDBC resources.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1553]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1554]]
+
+=== Operands
+
+`--target`::
+  This operand specifies which JDBC resources you can list. Usage of
+  this operand is optional. Valid values are:
+
+  `server`;;
+    Lists the JDBC resources in the current server and is the default.
+  `domain`;;
+    Lists the JDBC resources in the current domain.
+  cluster_name;;
+    Lists the JDBC resources in a cluster.
+  instance_name;;
+    Lists the JDBC resources for a particular instance.
+
+[[sthref1555]]
+
+=== Examples
+
+[[GSRFM671]][[sthref1556]]
+
+==== Example 1   Listing the JDBC Resources
+
+This example lists the current JDBC resources.
+
+[source]
+----
+asadmin> list-jdbc-resources
+jdbc/DerbyPool
+Command list-jdbc-resources executed successfully.
+----
+
+[[sthref1557]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1558]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-jdbc-resource.html#create-jdbc-resource-1[`create-jdbc-resource`(1)],
+link:delete-jdbc-resource.html#delete-jdbc-resource-1[`delete-jdbc-resource`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-jms-hosts.adoc b/docs/reference-manual/src/main/asciidoc/list-jms-hosts.adoc
new file mode 100644
index 0000000..055ce1f
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-jms-hosts.adoc
@@ -0,0 +1,98 @@
+type=page
+status=published
+title=list-jms-hosts
+next=list-jms-resources.html
+prev=list-jmsdest.html
+~~~~~~
+
+= list-jms-hosts
+
+[[list-jms-hosts-1]][[GSRFM00176]][[list-jms-hosts]]
+
+== list-jms-hosts
+
+Lists the existing JMS hosts
+
+[[sthref1568]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-jms-hosts [--help]
+[--target target]
+----
+
+[[sthref1569]]
+
+=== Description
+
+The `list-jms-hosts` subcommand lists the existing Java Message Service
+(JMS) hosts for the JMS service.
+
+This subcommand is supported in remote mode only. Remote `asadmin`
+subcommands require a running domain administration server (DAS).
+
+[[sthref1570]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Restricts the listing to JMS hosts for a specified target. Valid
+  values are as follows:
+
+  `server`;;
+    Lists the JMS hosts for the default server instance. This is the
+    default value.
+  configuration-name;;
+    Lists the JMS hosts for the specified configuration.
+  cluster-name;;
+    Lists the JMS hosts for all server instances in the specified
+    cluster.
+  instance-name;;
+    Lists the JMS hosts for the specified server instance.
+
+[[sthref1571]]
+
+=== Examples
+
+[[GSRFM674]][[sthref1572]]
+
+==== Example 1   Listing all JMS hosts
+
+The following subcommand lists the JMS hosts for the JMS service.
+
+[source]
+----
+asadmin> list-jms-hosts server-config
+default_JMS_host
+MyNewHost
+Command list-jms-hosts executed successfully.
+----
+
+[[sthref1573]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1574]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-jms-host.html#create-jms-host-1[`create-jms-host`(1)],
+link:delete-jms-host.html#delete-jms-host-1[`delete-jms-host`(1)],
+link:jms-ping.html#jms-ping-1[`jms-ping`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-jms-resources.adoc b/docs/reference-manual/src/main/asciidoc/list-jms-resources.adoc
new file mode 100644
index 0000000..120ff3e
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-jms-resources.adoc
@@ -0,0 +1,124 @@
+type=page
+status=published
+title=list-jms-resources
+next=list-jndi-entries.html
+prev=list-jms-hosts.html
+~~~~~~
+
+= list-jms-resources
+
+[[list-jms-resources-1]][[GSRFM00177]][[list-jms-resources]]
+
+== list-jms-resources
+
+Lists the JMS resources
+
+[[sthref1575]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-jms-resources [--help]
+[--restype type]
+[target]
+----
+
+[[sthref1576]]
+
+=== Description
+
+The `list-jms-resources` subcommand lists the existing Java Message
+Service (JMS) resources (destination and connection factory resources).
+
+This subcommand is supported in remote mode only. Remote `asadmin`
+subcommands require a running domain administration server (DAS).
+
+[[sthref1577]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--restype`::
+  The JMS resource type can be `jakarta.jms.Topic`, `jakarta.jms.Queue`,
+  `jakarta.jms.ConnectionFactory`, `jakarta.jms.TopicConnectionFactory`, or
+  `jakarta.jms.QueueConnectionFactory`.
+
+[[sthref1578]]
+
+=== Operands
+
+target::
+  Restricts the listing to resources for a specified target. Valid
+  values are as follows:
+
+  `server`;;
+    Lists the resources for the default server instance. This is the
+    default value.
+  `domain`;;
+    Lists the resources for the domain.
+  cluster-name;;
+    Lists the resources for every server instance in the specified
+    cluster.
+  instance-name;;
+    Lists the resources for the specified server instance.
+
+[[sthref1579]]
+
+=== Examples
+
+[[GSRFM675]][[sthref1580]]
+
+==== Example 1   Listing all JMS resources
+
+The following subcommand lists all JMS resources.
+
+[source]
+----
+asadmin> list-jms-resources
+jms/Queue
+jms/ConnectionFactory
+jms/DurableConnectionFactory
+jms/Topic
+Command list-jms-resources executed successfully.
+----
+
+[[GSRFM676]][[sthref1581]]
+
+==== Example 2   Listing JMS resources of a specified type
+
+The following subcommand lists all `jakarta.jms.ConnectionFactory`
+resources.
+
+[source]
+----
+asadmin> list-jms-resources --restype jakarta.jms.ConnectionFactory
+jms/ConnectionFactory
+jms/DurableConnectionFactory
+Command list-jms-resources executed successfully.
+----
+
+[[sthref1582]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1583]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-jms-resource.html#create-jms-resource-1[`create-jms-resource`(1)],
+link:delete-jms-resource.html#delete-jms-resource-1[`delete-jms-resource`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-jmsdest.adoc b/docs/reference-manual/src/main/asciidoc/list-jmsdest.adoc
new file mode 100644
index 0000000..42a5461
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-jmsdest.adoc
@@ -0,0 +1,120 @@
+type=page
+status=published
+title=list-jmsdest
+next=list-jms-hosts.html
+prev=list-jdbc-resources.html
+~~~~~~
+
+= list-jmsdest
+
+[[list-jmsdest-1]][[GSRFM00175]][[list-jmsdest]]
+
+== list-jmsdest
+
+Lists the existing JMS physical destinations
+
+[[sthref1559]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-jmsdest [--help]
+[--desttype type]
+[target]
+----
+
+[[sthref1560]]
+
+=== Description
+
+The `list-jmsdest` subcommand lists the Java Message Service (JMS)
+physical destinations.
+
+This subcommand is supported in remote mode only. Remote `asadmin`
+subcommands require a running domain administration server (DAS).
+
+[[sthref1561]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--desttype`::
+  The type of JMS destination to be listed. Valid values are `topic` and
+  `queue`.
+
+[[sthref1562]]
+
+=== Operands
+
+target::
+  Restricts the listing to physical destinations for a specified target.
+  Valid values are as follows:
+
+  `server`;;
+    Lists the physical destinations for the default server instance.
+    This is the default value.
+  configuration-name;;
+    Lists the physical destinations in the specified configuration.
+  cluster-name;;
+    Lists the physical destinations for every server instance in the
+    specified cluster.
+  instance-name;;
+    Lists the physical destinations for the specified server instance.
+
+[[sthref1563]]
+
+=== Examples
+
+[[GSRFM672]][[sthref1564]]
+
+==== Example 1   Listing all physical destinations
+
+The following subcommand lists all the physical destinations.
+
+[source]
+----
+asadmin> list-jmsdest
+PhysicalQueue
+PhysicalTopic
+Command list-jmsdest executed successfully.
+----
+
+[[GSRFM673]][[sthref1565]]
+
+==== Example 2   Listing all physical destinations of a specified type
+
+The following subcommand lists all physical topics.
+
+[source]
+----
+asadmin> list-jmsdest --desttype topic
+PhysicalTopic
+Command list-jmsdest executed successfully.
+----
+
+[[sthref1566]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1567]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-jmsdest.html#create-jmsdest-1[`create-jmsdest`(1)],
+link:delete-jmsdest.html#delete-jmsdest-1[`delete-jmsdest`(1)],
+link:flush-jmsdest.html#flush-jmsdest-1[`flush-jmsdest`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-jndi-entries.adoc b/docs/reference-manual/src/main/asciidoc/list-jndi-entries.adoc
new file mode 100644
index 0000000..25b94e4
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-jndi-entries.adoc
@@ -0,0 +1,111 @@
+type=page
+status=published
+title=list-jndi-entries
+next=list-jndi-resources.html
+prev=list-jms-resources.html
+~~~~~~
+
+= list-jndi-entries
+
+[[list-jndi-entries-1]][[GSRFM00178]][[list-jndi-entries]]
+
+== list-jndi-entries
+
+Browses and queries the JNDI tree
+
+[[sthref1584]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-jndi-entries [--help]
+[--context context_name]
+[target]
+----
+
+[[sthref1585]]
+
+=== Description
+
+Use this subcommand to browse and query the JNDI tree.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1586]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--context`::
+  The name of the JNDI context or subcontext. If context is not
+  specified, all entries in the naming service are returned. If context
+  (such as `ejb`) is specified, all those entries are returned.
+
+[[sthref1587]]
+
+=== Operands
+
+target::
+  This operand specifies the JNDI tree to browse.
+  Possible values are as follows:
+
+  `server`;;
+    Browses the JNDI tree for the default {productName} instance
+    (default). The default instance is the domain administration server
+    (DAS).
+  `domain`;;
+    Browses the JNDI tree for the current domain.
+  cluster-name;;
+    Browses the JNDI tree for the specified cluster.
+  instance-name;;
+    Browses the JNDI tree for the specified {productName} instance.
+
+[[sthref1588]]
+
+=== Examples
+
+[[GSRFM677]][[sthref1589]]
+
+==== Example 1   Browsing the JNDI Tree
+
+This example browses the JNDI tree for the default {productName}
+instance.
+
+[source]
+----
+asadmin> list-jndi-entries
+java:global: com.sun.enterprise.naming.impl.TransientContext
+jdbc: com.sun.enterprise.naming.impl.TransientContext
+ejb: com.sun.enterprise.naming.impl.TransientContext
+com.sun.enterprise.container.common.spi.util.InjectionManager:
+com.sun.enterprise.container.common.impl.util.InjectionManagerImpl
+
+Command list-jndi-entries executed successfully.
+----
+
+[[sthref1590]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1591]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-jndi-resource.html#create-jndi-resource-1[`create-jndi-resource`(1)],
+link:delete-jndi-resource.html#delete-jndi-resource-1[`delete-jndi-resource`(1)],
+link:list-jndi-resources.html#list-jndi-resources-1[`list-jndi-resources`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-jndi-resources.adoc b/docs/reference-manual/src/main/asciidoc/list-jndi-resources.adoc
new file mode 100644
index 0000000..3fa2658
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-jndi-resources.adoc
@@ -0,0 +1,100 @@
+type=page
+status=published
+title=list-jndi-resources
+next=list-jobs.html
+prev=list-jndi-entries.html
+~~~~~~
+
+= list-jndi-resources
+
+[[list-jndi-resources-1]][[GSRFM00179]][[list-jndi-resources]]
+
+== list-jndi-resources
+
+Lists all existing JNDI resources
+
+[[sthref1592]]
+
+=== Synopsis
+
+[source]
+----
+list-jndi-resources [--help] [target]
+----
+
+[[sthref1593]]
+
+=== Description
+
+The `list-jndi-resources` subcommand identifies all existing JNDI resources.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1594]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1595]]
+
+=== Operands
+
+target::
+  The target for which the JNDI resources are to be listed. Valid values
+  are as follows:
+
+  `server`;;
+    Lists the JNDI resources on the default server instance. This is the
+    default value.
+  configuration-name;;
+    Lists the JNDI resources for the specified configuration.
+  cluster-name;;
+    Lists the JNDI resources on all server instances in the specified
+    cluster.
+  instance-name;;
+    Lists the JNDI resources on a specified server instance.
+
+[[sthref1596]]
+
+=== Examples
+
+[[GSRFM678]][[sthref1597]]
+
+==== Example 1   Listing JNDI Resources
+
+This example lists the JNDI resources on the default server instance.
+
+[source]
+----
+asadmin> list-jndi-resources
+jndi_resource1
+jndi_resource2
+jndi_resource3
+Command list-jndi-resources executed successfully
+----
+
+[[sthref1598]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1599]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-jndi-resource.html#create-jndi-resource-1[`create-jndi-resource`(1)],
+link:delete-jndi-resource.html#delete-jndi-resource-1[`delete-jndi-resource`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-jobs.adoc b/docs/reference-manual/src/main/asciidoc/list-jobs.adoc
new file mode 100644
index 0000000..c6da9f4
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-jobs.adoc
@@ -0,0 +1,94 @@
+type=page
+status=published
+title=list-jobs
+next=list-jvm-options.html
+prev=list-jndi-resources.html
+~~~~~~
+
+= list-jobs
+
+[[list-jobs-1]][[GSRFM867]][[list-jobs]]
+
+== list-jobs
+
+Lists information about subcommands that were started using
+`asadmin --detach` or that contain progress information
+
+[[sthref1600]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-jobs [--help]
+[job_id]
+----
+
+[[sthref1601]]
+
+=== Description
+
+The `list-jobs` subcommand lists information about subcommands that were
+started using the `asadmin` utility option `--detach` or that contain
+progress information. The `--detach` option detaches long-running
+subcommands and executes them in the background in detach mode.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1602]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1603]]
+
+=== Operands
+
+job_id::
+  The ID of the job for which you want to list information.
+
+[[sthref1604]]
+
+=== Examples
+
+[[GSRFM868]][[sthref1605]]
+
+==== Example 1   Checking Job Status
+
+This example provides information about subcommands that were started
+using `asadmin --detach` or that contain progress information.
+
+[source]
+----
+asadmin> list-jobs
+JOB ID     COMMAND           STATE       EXIT CODE TIME OF COMPLETION
+1          create-cluster    COMPLETED   SUCCESS   2013-02-15 16:16:16 PST
+2          deploy            COMPLETED   FAILURE   2013-02-15 18:26:30 PST
+Command list-jobs executed successfully
+----
+
+[[sthref1606]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1607]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:attach.html#attach-1[`attach`(1)],
+link:configure-managed-jobs.html#configure-managed-jobs-1[`configure-managed-jobs`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-jvm-options.adoc b/docs/reference-manual/src/main/asciidoc/list-jvm-options.adoc
new file mode 100644
index 0000000..33e4a06
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-jvm-options.adoc
@@ -0,0 +1,130 @@
+type=page
+status=published
+title=list-jvm-options
+next=list-libraries.html
+prev=list-jobs.html
+~~~~~~
+
+= list-jvm-options
+
+[[list-jvm-options-1]][[GSRFM00180]][[list-jvm-options]]
+
+== list-jvm-options
+
+Lists options for the Java application launcher
+
+[[sthref1608]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-jvm-options [--help]
+[--target target]
+[--profiler={false|true}]
+----
+
+[[sthref1609]]
+
+=== Description
+
+The `list-jvm-options` subcommand displays a list of command-line
+options that are passed to the Java application launcher when
+{productName} is started.
+
+The options are managed by using the JVM Options page of the
+Administration Console or by using the `create-jvm-options` and
+`delete-jvm-options` subcommands.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1610]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Specifies the target for which you are listing Java application
+  launcher options. Valid values are as follows:
+
+  `server`;;
+    Specifies the DAS (default).
+  instance-name;;
+    Specifies a {productName} instance.
+  cluster-name;;
+    Specifies a cluster.
+  configuration-name;;
+    Specifies a named configuration.
+
+`--profiler`::
+  Specifies whether the Java application launcher options to list are
+  for the profiler. Set this option to true only if a profiler has been
+  configured. If this option is set to true and no profiler is
+  configured, an error occurs. The default is false.
+
+[[sthref1611]]
+
+=== Examples
+
+[[GSRFM679]][[sthref1612]]
+
+==== Example 1   Listing the Java Application Launcher Options
+
+This example lists the options that are used by the Java application launcher.
+
+[source]
+----
+asadmin> list-jvm-options
+-Djava.security.auth.login.config=${com.sun.aas.instanceRoot}/config/login.conf
+-XX: LogVMOutput
+-XX: UnlockDiagnosticVMOptions
+-Dcom.sun.enterprise.config.config_environment_factory_class=
+com.sun.enterprise.config.serverbeans.AppserverConfigEnvironmentFactory
+-Djavax.net.ssl.keyStore=${com.sun.aas.instanceRoot}/config/keystore.jks
+-XX:NewRatio=2
+-DANTLR_USE_DIRECT_CLASS_LOADING=true
+-Djava.security.policy=${com.sun.aas.instanceRoot}/config/server.policy
+-Djdbc.drivers=org.apache.derby.jdbc.ClientDriver
+-Djavax.net.ssl.trustStore=${com.sun.aas.instanceRoot}/config/cacerts.jks
+-client
+-Djava.ext.dirs=${com.sun.aas.javaRoot}/lib/ext${path.separator}${
+com.sun.aas.javaRoot}/jre/lib/ext${path.separator}${com.sun.aas.instanceRoot}
+/lib/ext${path.separator}${com.sun.aas.derbyRoot}/lib
+-Xmx512m
+-XX:MaxPermSize=192m
+-XX:LogFile=${com.sun.aas.instanceRoot}/logs/jvm.log
+Command list-jvm-options executed successfully.
+----
+
+[[sthref1613]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1614]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-jvm-options.html#create-jvm-options-1[`create-jvm-options`(1)],
+link:delete-jvm-options.html#delete-jvm-options-1[`delete-jvm-options`(1)]
+
+For more information about the Java application launcher, see the
+reference page for the operating system that you are using:
+
+* Oracle Solaris and Linux: java - the Java application launcher
+(``http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/java.html)
+* Windows: java - the Java application launcher
+(``http://docs.oracle.com/javase/6/docs/technotes/tools/windows/java.html)
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-libraries.adoc b/docs/reference-manual/src/main/asciidoc/list-libraries.adoc
new file mode 100644
index 0000000..3b14686
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-libraries.adoc
@@ -0,0 +1,108 @@
+type=page
+status=published
+title=list-libraries
+next=list-lifecycle-modules.html
+prev=list-jvm-options.html
+~~~~~~
+
+= list-libraries
+
+[[list-libraries-1]][[GSRFM00819]][[list-libraries]]
+
+== list-libraries
+
+Lists library JAR files on {productName}
+
+[[sthref1615]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-libraries [--help]
+[--type={common|ext|app}]
+----
+
+[[sthref1616]]
+
+=== Description
+
+The `list-libraries` subcommand lists library archive files on
+{productName}.
+
+The `--type` option specifies the library type and the {productName}
+directory for which libraries are to be listed.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1617]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--type`::
+  Specifies the library type and the {productName} directory for
+  which libraries are listed. Valid values are as follows:
++
+--
+  `common`;;
+    Lists the library files for the Common class loader directory,
+    domain-dir``/lib``. This is the default.
+  `ext`;;
+    Lists the library files for the Java optional package directory,
+    domain-dir``/lib/ext``.
+  `app`;;
+    Lists the library files for the application-specific class loader
+    directory, domain-dir``/lib/applibs``.
+--
++
+For more information about these directories, see
+  "link:application-development-guide/class-loaders.html#GSDVG00003[Class Loaders]" in {productName} Application Development Guide.
+
+[[sthref1618]]
+
+=== Examples
+
+[[GSRFM831]][[sthref1619]]
+
+==== Example 1   Listing Libraries
+
+This example lists the libraries in the application-specific class
+loader directory on the default server instance.
+
+[source]
+----
+asadmin> list-libraries --type app
+mylib.jar
+xlib.jar
+ylib.jar
+zlib.jar
+Command list-libraries executed successfully.
+----
+
+[[sthref1620]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1621]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:add-library.html#add-library-1[`add-library`(1)],
+link:remove-library.html#remove-library-1[`remove-library`(1)]
+
+"link:application-development-guide/class-loaders.html#GSDVG00003[Class Loaders]" in {productName} Application Development Guide
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-lifecycle-modules.adoc b/docs/reference-manual/src/main/asciidoc/list-lifecycle-modules.adoc
new file mode 100644
index 0000000..99bac82
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-lifecycle-modules.adoc
@@ -0,0 +1,98 @@
+type=page
+status=published
+title=list-lifecycle-modules
+next=list-log-attributes.html
+prev=list-libraries.html
+~~~~~~
+
+= list-lifecycle-modules
+
+[[list-lifecycle-modules-1]][[GSRFM00181]][[list-lifecycle-modules]]
+
+== list-lifecycle-modules
+
+Lists the lifecycle modules
+
+[[sthref1622]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-lifecycle-modules [--help]
+[target]
+----
+
+[[sthref1623]]
+
+=== Description
+
+The `list-lifecycle-modules` subcommand lists lifecycle modules. A
+lifecycle module provides a means of running a short or long duration
+Java-based task at a specific stage in the server life cycle. This
+subcommand is supported in remote mode only.
+
+[[sthref1624]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1625]]
+
+=== Operands
+
+target::
+  Indicates the location where lifecycle modules are to be listed. Valid
+  values are
+
+  * `server`- Specifies the default server instance as the target for
+  listing lifecycle modules. `server` is the name of the default server
+  instance and is the default value for this operand.
+  * cluster_name - Specifies a particular cluster as the target for
+  listing lifecycle modules.
+  * instance_name - Specifies a particular server instance as the target
+  for listing lifecycle modules.
+
+[[sthref1626]]
+
+=== Examples
+
+[[GSRFM681]][[sthref1627]]
+
+==== Example 1   Listing Lifecycle Modules
+
+[source]
+----
+asadmin> list-lifecycle-modules
+WSTCPConnectorLCModule
+Command list-lifecycle-modules executed successfully
+----
+
+`WSTCPConnectorLCModule` is the only lifecycle module listed for the
+default target, `server`.
+
+[[sthref1628]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1629]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-lifecycle-module.html#create-lifecycle-module-1[`create-lifecycle-module`(1)],
+link:delete-lifecycle-module.html#delete-lifecycle-module-1[`delete-lifecycle-module`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-log-attributes.adoc b/docs/reference-manual/src/main/asciidoc/list-log-attributes.adoc
new file mode 100644
index 0000000..d177c0c
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-log-attributes.adoc
@@ -0,0 +1,119 @@
+type=page
+status=published
+title=list-log-attributes
+next=list-loggers.html
+prev=list-lifecycle-modules.html
+~~~~~~
+
+= list-log-attributes
+
+[[list-log-attributes-1]][[GSRFM00182]][[list-log-attributes]]
+
+== list-log-attributes
+
+Lists all logging attributes defined for a specified target in a domain
+
+[[sthref1630]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-log-attributes [--help]
+[target]
+----
+
+[[sthref1631]]
+
+=== Description
+
+The `list-log-attributes` subcommand lists all logging attributes
+currently defined for the specified {productName} domain or target
+within a domain. The values listed correspond to the values in the
+`logging.properties` file for the domain.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1632]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1633]]
+
+=== Operands
+
+target::
+  Valid values are:
+  * `server` - The default server instance. This is the default value.
+  * configuration_name - The name of a specific configuration.
+  * cluster_name - The name of a target cluster.
+  * instance_name - The name of a target server instance.
+
+[[sthref1634]]
+
+=== Examples
+
+[[GSRFM682]][[sthref1635]]
+
+==== Example 1   Listing the Logger Attributes for a Domain
+
+This example lists all loggers attributes for the default domain.
+
+[source,subs="none"]
+----
+asadmin> list-log-attributes
+com.sun.enterprise.server.logging.GFFileHandler.alarms <false>
+com.sun.enterprise.server.logging.GFFileHandler.file \
+<${com.sun.aas.instanceRoot}/logs/server.log>
+com.sun.enterprise.server.logging.GFFileHandler.flushFrequency <1>
+com.sun.enterprise.server.logging.GFFileHandler.formatter \
+<com.sun.enterprise.server.logging.UniformLogFormatter>
+com.sun.enterprise.server.logging.GFFileHandler.logtoConsole <false>
+com.sun.enterprise.server.logging.GFFileHandler.maxHistoryFiles <0>
+com.sun.enterprise.server.logging.GFFileHandler.retainErrorsStasticsForHours <0>
+com.sun.enterprise.server.logging.GFFileHandler.rotationLimitInBytes <2000000>
+com.sun.enterprise.server.logging.GFFileHandler.rotationTimelimitInMinutes <0>
+com.sun.enterprise.server.logging.SyslogHandler.useSystemLogging <false>
+handlers <java.util.logging.ConsoleHandler>
+java.util.logging.ConsoleHandler.formatter \
+<com.sun.enterprise.server.logging.UniformLogFormatter>
+java.util.logging.FileHandler.count <1>
+java.util.logging.FileHandler.formatter <java.util.logging.XMLFormatter>
+java.util.logging.FileHandler.limit <50000>
+java.util.logging.FileHandler.pattern <%h/java%u.log>
+log4j.logger.org.hibernate.validator.util.Version <warn>
+
+Command list-log-attributes executed successfully.
+----
+
+[[sthref1636]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1637]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:collect-log-files.html#collect-log-files-1[`collect-log-files`(1)],
+link:list-log-levels.html#list-log-levels-1[`list-log-levels`(1)],
+link:rotate-log.html#rotate-log-1[`rotate-log`(1)],
+link:set-log-attributes.html#set-log-attributes-1[`set-log-attributes`(1)],
+link:set-log-levels.html#set-log-levels-1[`set-log-levels`(1)]
+
+"link:administration-guide/logging.html#GSADG00010[Administering the Logging Service]" in {productName} Administration Guide
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-log-levels.adoc b/docs/reference-manual/src/main/asciidoc/list-log-levels.adoc
new file mode 100644
index 0000000..e4f79c4
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-log-levels.adoc
@@ -0,0 +1,147 @@
+type=page
+status=published
+title=list-log-levels
+next=list-managed-executor-services.html
+prev=list-loggers.html
+~~~~~~
+
+= list-log-levels
+
+[[list-log-levels-1]][[GSRFM00183]][[list-log-levels]]
+
+== list-log-levels
+
+Lists the loggers and their log levels
+
+[[sthref1645]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-log-levels [--help]
+[--target target]
+----
+
+[[sthref1646]]
+
+=== Description
+
+The `list-log-levels` subcommand lists the current {productName}
+loggers and their log levels. This subcommand reports on all the loggers
+that are listed in the `logging.properties` file. In some cases, loggers
+that have not been created by the respective containers will appear in
+the list.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1647]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  The server, cluster or server instance for which log levels will be listed.
+
+[[sthref1648]]
+
+=== Operands
+
+target::
+  Valid values are:
+
+  * server_name - Default target is `server`. If no target is specified
+  then log levels are listed for the server.
+  * cluster_name - The name of a target cluster.
+  * instance_name - The name of a target server instance.
+
+[[sthref1649]]
+
+=== Examples
+
+[[GSRFM683]][[sthref1650]]
+
+==== Example 1   Listing the Log Levels
+
+This example lists the existing loggers and indicates how their log
+levels are set.
+
+[source]
+----
+asadmin> list-log-levels
+java.util.logging.ConsoleHandler        <FINEST>
+jakarta.enterprise.resource.corba <INFO>
+jakarta.enterprise.resource.javamail      <INFO>
+jakarta.enterprise.resource.jdo   <INFO>
+jakarta.enterprise.resource.jms   <INFO>
+jakarta.enterprise.resource.jta   <INFO>
+jakarta.enterprise.resource.resourceadapter       <INFO>
+jakarta.enterprise.resource.sqltrace      <FINE>
+jakarta.enterprise.resource.webcontainer.jsf.application  <INFO>
+jakarta.enterprise.resource.webcontainer.jsf.config       <INFO>
+jakarta.enterprise.resource.webcontainer.jsf.context      <INFO>
+jakarta.enterprise.resource.webcontainer.jsf.facelets     <INFO>
+jakarta.enterprise.resource.webcontainer.jsf.lifecycle    <INFO>
+jakarta.enterprise.resource.webcontainer.jsf.managedbean  <INFO>
+jakarta.enterprise.resource.webcontainer.jsf.renderkit    <INFO>
+jakarta.enterprise.resource.webcontainer.jsf.resource     <INFO>
+jakarta.enterprise.resource.webcontainer.jsf.taglib       <INFO>
+jakarta.enterprise.resource.webcontainer.jsf.timing       <INFO>
+jakarta.enterprise.system.container.cmp   <INFO>
+jakarta.enterprise.system.container.ejb   <INFO>
+jakarta.enterprise.system.container.ejb.mdb       <INFO>
+jakarta.enterprise.system.container.web   <INFO>
+jakarta.enterprise.system.core.classloading       <INFO>
+jakarta.enterprise.system.core.config     <INFO>
+jakarta.enterprise.system.core    <INFO>
+jakarta.enterprise.system.core.naming     <INFO>
+jakarta.enterprise.system.core.security   <INFO>
+jakarta.enterprise.system.core.selfmanagement     <INFO>
+jakarta.enterprise.system.core.transaction        <INFO>
+jakarta.enterprise.system <INFO>
+jakarta.enterprise.system.tools.admin     <INFO>
+jakarta.enterprise.system.tools.backup    <INFO>
+jakarta.enterprise.system.tools.deployment        <INFO>
+jakarta.enterprise.system.util    <INFO>
+jakarta.enterprise.system.webservices.registry    <INFO>
+jakarta.enterprise.system.webservices.rpc <INFO>
+jakarta.enterprise.system.webservices.saaj        <INFO>
+javax   <INFO>
+javax.org.glassfish.persistence <INFO>
+org.apache.catalina     <INFO>
+org.apache.coyote       <INFO>
+org.apache.jasper       <INFO>
+org.glassfish.admingui  <INFO>
+org.jvnet.hk2.osgiadapter       <INFO>
+Command list-log-levels executed successfully.
+----
+
+[[sthref1651]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1652]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:collect-log-files.html#collect-log-files-1[`collect-log-files`(1)],
+link:list-log-attributes.html#list-log-attributes-1[`list-log-attributes`(1)],
+link:rotate-log.html#rotate-log-1[`rotate-log`(1)],
+link:set-log-attributes.html#set-log-attributes-1[`set-log-attributes`(1)],
+link:set-log-levels.html#set-log-levels-1[`set-log-levels`(1)]
+
+"link:administration-guide/logging.html#GSADG00010[Administering the Logging Service]" in {productName} Administration Guide
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-loggers.adoc b/docs/reference-manual/src/main/asciidoc/list-loggers.adoc
new file mode 100644
index 0000000..f8ec3f9
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-loggers.adoc
@@ -0,0 +1,88 @@
+type=page
+status=published
+title=list-loggers
+next=list-log-levels.html
+prev=list-log-attributes.html
+~~~~~~
+
+= list-loggers
+
+[[list-loggers-1]][[GSRFM869]][[list-loggers]]
+
+== list-loggers
+
+Lists existing loggers
+
+[[sthref1638]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-loggers [--help]
+----
+
+[[sthref1639]]
+
+=== Description
+
+The `list-loggers` subcommand lists the existing {productName}
+loggers. Internal loggers are not listed. The `list-loggers` subcommand
+lists the logger name, subsystem, and description.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1640]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1641]]
+
+=== Examples
+
+[[GSRFM870]][[sthref1642]]
+
+==== Example 1   Listing the Loggers
+
+This example lists the logger name, subsystem, and description for each
+logger. Some lines of output are omitted from this example for readability.
+
+[source]
+----
+asadmin> list-loggers
+Logger Name                            Subsystem         Logger Description
+...
+jakarta.enterprise.monitoring            Monitoring        Monitoring Logger
+jakarta.enterprise.system.core.ee        AS-CORE           Jakarta EE Core Kernel
+jakarta.enterprise.system.jmx            JMX               JMX System Logger
+jakarta.enterprise.system.tools.admin    ADMIN             Administration Services
+...
+Command list-loggers executed successfully.
+----
+
+[[sthref1643]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1644]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:list-log-levels.html#list-log-levels-1[`list-log-levels`(1)],
+link:set-log-file-format.html#set-log-file-format-1[`set-log-file-format`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-managed-executor-services.adoc b/docs/reference-manual/src/main/asciidoc/list-managed-executor-services.adoc
new file mode 100644
index 0000000..aa56fa9
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-managed-executor-services.adoc
@@ -0,0 +1,103 @@
+type=page
+status=published
+title=list-managed-executor-services
+next=list-managed-scheduled-executor-services.html
+prev=list-log-levels.html
+~~~~~~
+
+= list-managed-executor-services
+
+[[list-managed-executor-services-1]][[GSRFM871]][[list-managed-executor-services]]
+
+== list-managed-executor-services
+
+Lists managed executor service resources
+
+[[sthref1653]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-managed-executor-services [--help]
+[target]
+----
+
+[[sthref1654]]
+
+=== Description
+
+The `list-managed-executor-services` subcommand lists managed executor
+service resources.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1655]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1656]]
+
+=== Operands
+
+target::
+  Specifies the target for which managed executor service resources are
+  to be listed. Valid targets are:
+
+  `server`;;
+    Lists the resources on the default server instance. This is the
+    default value.
+  `domain`;;
+    Lists the resources for the domain.
+  cluster-name;;
+    Lists the resources on all server instances in the specified
+    cluster.
+  instance-name;;
+    Lists the resources on a specified server instance.
+
+[[sthref1657]]
+
+=== Examples
+
+[[GSRFM872]][[sthref1658]]
+
+==== Example 1   Listing Managed Executor Service Resources
+
+This example lists managed executor service resources on the default
+server instance.
+
+[source]
+----
+asadmin> list-managed-executor-services
+concurrent/__defaultManagedExecutorService
+concurrent/myExecutor1
+concurrent/myExecutor2
+Command list-managed-executor-services executed successfully.
+----
+
+[[sthref1659]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1660]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-managed-executor-service.html#create-managed-executor-service-1[`create-managed-executor-service`(1)],
+link:delete-managed-executor-service.html#delete-managed-executor-service-1[`delete-managed-executor-service`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-managed-scheduled-executor-services.adoc b/docs/reference-manual/src/main/asciidoc/list-managed-scheduled-executor-services.adoc
new file mode 100644
index 0000000..dd379e5
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-managed-scheduled-executor-services.adoc
@@ -0,0 +1,103 @@
+type=page
+status=published
+title=list-managed-scheduled-executor-services
+next=list-managed-thread-factories.html
+prev=list-managed-executor-services.html
+~~~~~~
+
+= list-managed-scheduled-executor-services
+
+[[list-managed-scheduled-executor-services-1]][[GSRFM873]][[list-managed-scheduled-executor-services]]
+
+== list-managed-scheduled-executor-services
+
+Lists managed scheduled executor service resources
+
+[[sthref1661]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-managed-scheduled-executor-services [--help]
+[target]
+----
+
+[[sthref1662]]
+
+=== Description
+
+The `list-managed-scheduled-executor-services` subcommand lists managed
+scheduled executor service resources.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1663]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1664]]
+
+=== Operands
+
+target::
+  Specifies the target for which managed scheduled executor service
+  resources are to be listed. Valid targets are:
+
+  `server`;;
+    Lists the resources on the default server instance. This is the
+    default value.
+  `domain`;;
+    Lists the resources for the domain.
+  cluster-name;;
+    Lists the resources on all server instances in the specified
+    cluster.
+  instance-name;;
+    Lists the resources on a specified server instance.
+
+[[sthref1665]]
+
+=== Examples
+
+[[GSRFM874]][[sthref1666]]
+
+==== Example 1   Listing Managed Scheduled Executor Service Resources
+
+This example lists managed scheduled executor service resources on the
+default server instance.
+
+[source]
+----
+asadmin> list-managed-scheduled-executor-services
+concurrent/__defaultManagedScheduledExecutorService
+concurrent/myScheduledExecutor1
+concurrent/myScheduledExecutor2
+Command list-managed-scheduled-executor-services executed successfully.
+----
+
+[[sthref1667]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1668]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-managed-scheduled-executor-service.html#create-managed-scheduled-executor-service-1[`create-managed-scheduled-executor-service`(1)],
+link:delete-managed-scheduled-executor-service.html#delete-managed-scheduled-executor-service-1[`delete-managed-scheduled-executor-service`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-managed-thread-factories.adoc b/docs/reference-manual/src/main/asciidoc/list-managed-thread-factories.adoc
new file mode 100644
index 0000000..1ab7425
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-managed-thread-factories.adoc
@@ -0,0 +1,103 @@
+type=page
+status=published
+title=list-managed-thread-factories
+next=list-message-security-providers.html
+prev=list-managed-scheduled-executor-services.html
+~~~~~~
+
+= list-managed-thread-factories
+
+[[list-managed-thread-factories-1]][[GSRFM875]][[list-managed-thread-factories]]
+
+== list-managed-thread-factories
+
+Lists managed thread factory resources
+
+[[sthref1669]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-managed-thread-factories [--help]
+[target]
+----
+
+[[sthref1670]]
+
+=== Description
+
+The `list-managed-thread-factories` subcommand lists managed thread
+factory resources.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1671]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1672]]
+
+=== Operands
+
+target::
+  Specifies the target for which managed thread factory resources are to
+  be listed. Valid targets are:
+
+  `server`;;
+    Lists the resources on the default server instance. This is the
+    default value.
+  `domain`;;
+    Lists the resources for the domain.
+  cluster-name;;
+    Lists the resources on all server instances in the specified
+    cluster.
+  instance-name;;
+    Lists the resources on a specified server instance.
+
+[[sthref1673]]
+
+=== Examples
+
+[[GSRFM876]][[sthref1674]]
+
+==== Example 1   Listing Managed Thread Factory Resources
+
+This example lists managed thread factory resources on the default
+server instance.
+
+[source]
+----
+asadmin> list-managed-thread-factories
+concurrent/__defaultManagedThreadFactory
+concurrent/myThreadFactory1
+concurrent/myThreadFactory2
+Command list-managed-thread-factories executed successfully.
+----
+
+[[sthref1675]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1676]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-managed-thread-factory.html#create-managed-thread-factory-1[`create-managed-thread-factory`(1)],
+link:delete-managed-thread-factory.html#delete-managed-thread-factory-1[`delete-managed-thread-factory`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-message-security-providers.adoc b/docs/reference-manual/src/main/asciidoc/list-message-security-providers.adoc
new file mode 100644
index 0000000..0668ce9
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-message-security-providers.adoc
@@ -0,0 +1,110 @@
+type=page
+status=published
+title=list-message-security-providers
+next=list-modules.html
+prev=list-managed-thread-factories.html
+~~~~~~
+
+= list-message-security-providers
+
+[[list-message-security-providers-1]][[GSRFM00184]][[list-message-security-providers]]
+
+== list-message-security-providers
+
+Lists all security message providers for the given message layer
+
+[[sthref1677]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-message-security-providers [--help]
+--layer message_layer
+[target]
+----
+
+[[sthref1678]]
+
+=== Description
+
+The `list-message-security-providers` subcommand enables administrators
+to list all security message providers (`provider-config` sub-elements)
+for the given message layer (`message-security-config` element of
+`domain.xml`).
+
+This subcommand is supported in remote mode only.
+
+[[sthref1679]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--layer`::
+  The message-layer for which the provider has to be listed. The default
+  value is `HttpServlet`.
+
+[[sthref1680]]
+
+=== Operands
+
+target::
+  Restricts the listing to message security providers for a specific
+  target. Valid values include:
+
+  `server`;;
+    Lists providers for the default server instance `server` and is the
+    default value.
+  `domain`;;
+    Lists providers for the domain.
+  cluster;;
+    Lists providers for the server instances in the cluster.
+  instance;;
+    Lists providers for a particular server instance.
+
+[[sthref1681]]
+
+=== Examples
+
+[[GSRFM684]][[sthref1682]]
+
+==== Example 1   Listing message security providers
+
+The following example shows how to list message security providers for a
+message layer.
+
+[source]
+----
+asadmin> list-message-security-providers
+--layer SOAP
+XWS_ClientProvider
+ClientProvider
+XWS_ServerProvider
+ServerProvider
+Command list-message-security-providers executed successfully.
+----
+
+[[sthref1683]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1684]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-message-security-provider.html#create-message-security-provider-1[`create-message-security-provider`(1)],
+link:delete-message-security-provider.html#delete-message-security-provider-1[`delete-message-security-provider`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-modules.adoc b/docs/reference-manual/src/main/asciidoc/list-modules.adoc
new file mode 100644
index 0000000..a5a2dfc
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-modules.adoc
@@ -0,0 +1,105 @@
+type=page
+status=published
+title=list-modules
+next=list-network-listeners.html
+prev=list-message-security-providers.html
+~~~~~~
+
+= list-modules
+
+[[list-modules-1]][[GSRFM00185]][[list-modules]]
+
+== list-modules
+
+Lists {productName} modules
+
+[[sthref1685]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-modules [--help]
+----
+
+[[sthref1686]]
+
+=== Description
+
+The `list-modules` subcommand displays a list of modules that are
+accessible to the {productName} module subsystem. The version of
+each module is shown.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1687]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1688]]
+
+=== Examples
+
+[[GSRFM685]][[sthref1689]]
+
+==== Example 1   Listing {productName} Modules
+
+This example provides a partial listing of modules that are accessible
+to the {productName} module subsystem
+
+[source]
+----
+asadmin> list-modules
+List Of Modules
+
+Module : org.glassfish.transaction.jts:3.0.0.b66
+    Module Characteristics : List of Jars implementing the module
+        Jar : file:/home/gfuser/GlassFish/glassfish7/glassfish/modules/jts.jar
+    Module Characteristics : Provides to following services
+    Module Characteristics : List of imported modules
+        Imports : org.glassfish.transaction.jts:3.0.0.b66
+Module : com.sun.enterprise.tiger-types-osgi:0.3.96
+Module : org.glassfish.bean-validator:3.0.0.JBoss-400Beta3A
+Module : org.glassfish.core.kernel:3.0.0.b66
+    Module Characteristics : Provides to following services
+    Module Characteristics : List of imported modules
+        Imports : org.glassfish.core.kernel:3.0.0.b66
+    Module Characteristics : List of Jars implementing the module
+        Jar : file:/home/gfuser/GlassFish/glassfish7/glassfish/modules/kernel.jar
+Module : org.glassfish.common.util:3.0.0.b66
+    Module Characteristics : List of Jars implementing the module
+        Jar : file:/home/gfuser/GlassFish/glassfish7/glassfish/modules/common-util.jar
+    Module Characteristics : Provides to following services
+    Module Characteristics : List of imported modules
+        Imports : org.glassfish.common.util:3.0.0.b66
+...
+Command list-modules executed successfully
+----
+
+[[sthref1690]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1691]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:list-commands.html#list-commands-1[`list-commands`(1)],
+link:list-components.html#list-components-1[`list-components`(1)],
+link:list-containers.html#list-containers-1[`list-containers`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-network-listeners.adoc b/docs/reference-manual/src/main/asciidoc/list-network-listeners.adoc
new file mode 100644
index 0000000..4ef1fc2
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-network-listeners.adoc
@@ -0,0 +1,100 @@
+type=page
+status=published
+title=list-network-listeners
+next=list-nodes.html
+prev=list-modules.html
+~~~~~~
+
+= list-network-listeners
+
+[[list-network-listeners-1]][[GSRFM00186]][[list-network-listeners]]
+
+== list-network-listeners
+
+Lists the existing network listeners
+
+[[sthref1692]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-network-listeners [--help]
+[target]
+----
+
+[[sthref1693]]
+
+=== Description
+
+The `list-network-listeners` subcommand lists the existing network
+listeners. This subcommand is supported in remote mode only.
+
+[[sthref1694]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1695]]
+
+=== Operands
+
+target::
+  Restricts the listing to network listeners for a specified target.
+  Valid values are as follows:
+
+  `server`;;
+    Lists the network listeners for the default server instance. This is
+    the default value.
+  configuration-name;;
+    Lists the network listeners for the specified configuration.
+  cluster-name;;
+    Lists the network listeners for all server instances in the
+    specified cluster.
+  instance-name;;
+    Lists the network listeners for the specified server instance.
+
+[[sthref1696]]
+
+=== Examples
+
+[[GSRFM686]][[sthref1697]]
+
+==== Example 1   Listing Network Listeners
+
+The following command lists all the network listeners for the server instance:
+
+[source]
+----
+asadmin> list-network-listeners
+admin-listener
+http-listener-1
+https-listener-2
+Command list-network-listeners executed successfully.
+----
+
+[[sthref1698]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1699]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-network-listener.html#create-network-listener-1[`create-network-listener`(1)],
+link:delete-network-listener.html#delete-network-listener-1[`delete-network-listener`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-nodes-config.adoc b/docs/reference-manual/src/main/asciidoc/list-nodes-config.adoc
new file mode 100644
index 0000000..2052211
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-nodes-config.adoc
@@ -0,0 +1,158 @@
+type=page
+status=published
+title=list-nodes-config
+next=list-nodes-dcom.html
+prev=list-nodes.html
+~~~~~~
+
+= list-nodes-config
+
+[[list-nodes-config-1]][[GSRFM00188]][[list-nodes-config]]
+
+== list-nodes-config
+
+Lists all {productName} nodes that do not support remote
+communication in a domain
+
+[[sthref1709]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-nodes-config [--help]
+[--long={false|true}]
+----
+
+[[sthref1710]]
+
+=== Description
+
+The `list-nodes-config` subcommand lists all {productName} nodes
+that do not support remote communication in a domain.
+
+[NOTE]
+====
+To list all nodes in a domain regardless of the type of the node, run
+the link:list-nodes.html#list-nodes-1[`list-nodes`(1)] subcommand.
+====
+
+By default, the subcommand displays the following information for each
+node that is listed:
+
+* The name of the node
+* The type of the node, which is `CONFIG`
+* The name of the host that the node represents
+
+The `--long` option of the subcommand specifies whether the nodes are
+listed in long format. In long format, the following additional
+information about each node is displayed:
+
+* The path to the parent of the base installation directory of
+{productName} on the host that the node represents
+* A comma-separated list of the names of the {productName} instances
+that reside on the node
+
+If the `--terse` option of the
+link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility is `true` and the
+`--long` option of the subcommand is `false`, the subcommand lists only
+the name of each node.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1711]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--long`::
+`-l`::
+  Specifies whether the nodes are listed in long format. +
+  Possible values are as follows:
+
+  `true`;;
+    The nodes are listed in long format.
+  `false`;;
+    The nodes are listed in short format (default).
+
+[[sthref1712]]
+
+=== Examples
+
+[[GSRFM690]][[sthref1713]]
+
+==== Example 1   Listing {productName} Nodes
+
+This example displays the name, type, and host for all {productName}
+nodes that do not support remote communication in the domain `domain1`.
+
+[source]
+----
+asadmin> list-nodes-config
+localhost-domain1  CONFIG  localhost
+devnode  CONFIG  localhost
+Command list-nodes-config executed successfully.
+----
+
+[[GSRFM691]][[sthref1714]]
+
+==== Example 2   Listing Only the Names of {productName} Nodes
+
+This example uses the `--terse` option of the `asadmin` utility to list
+only the names of the {productName} nodes that do not support remote
+communication in the domain `domain1`.
+
+[source]
+----
+asadmin> list-nodes-config --terse=true
+localhost-domain1
+devnode
+----
+
+[[GSRFM692]][[sthref1715]]
+
+==== Example 3   Listing {productName} Nodes in Long Format
+
+This example lists the {productName} nodes that do not support
+remote communication in the domain `domain1` in long format.
+
+[source]
+----
+asadmin> list-nodes-config --long=true
+NODE NAME           TYPE     NODE HOST   INSTALL DIRECTORY    REFERENCED BY
+localhost-domain1   CONFIG   localhost   /export/glassfish7
+devnode             CONFIG   localhost   /export/glassfish7   pmdsa1
+Command list-nodes-config executed successfully.
+----
+
+[[sthref1716]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1717]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-node-config.html#create-node-config-1[`create-node-config`(1)],
+link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
+link:create-node-ssh.html#create-node-ssh-1[`create-node-ssh`(1)],
+link:delete-node-config.html#delete-node-config-1[`delete-node-config`(1)],
+link:delete-node-dcom.html#delete-node-dcom-1[`delete-node-dcom`(1)],
+link:delete-node-ssh.html#delete-node-ssh-1[`delete-node-ssh`(1)],
+link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
+link:list-nodes-dcom.html#list-nodes-dcom-1[`list-nodes-dcom`(1)],
+link:list-nodes-ssh.html#list-nodes-ssh-1[`list-nodes-ssh`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-nodes-dcom.adoc b/docs/reference-manual/src/main/asciidoc/list-nodes-dcom.adoc
new file mode 100644
index 0000000..b25c0d6
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-nodes-dcom.adoc
@@ -0,0 +1,162 @@
+type=page
+status=published
+title=list-nodes-dcom
+next=list-nodes-ssh.html
+prev=list-nodes-config.html
+~~~~~~
+
+= list-nodes-dcom
+
+[[list-nodes-dcom-1]][[GSRFM693]][[list-nodes-dcom]]
+
+== list-nodes-dcom
+
+Lists all {productName} nodes that support communication over DCOM
+in a domain
+
+[[sthref1718]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-nodes-dcom [--help]
+[--long={false|true}]
+----
+
+[[sthref1719]]
+
+=== Description
+
+The `list-nodes-dcom` subcommand lists all {productName} nodes that
+support communication over the Distributed Component Object Model (DCOM)
+remote protocol. The DCOM protocol is available only on Windows systems.
+
+[NOTE]
+====
+To list all nodes in a domain regardless of the type of the node, run
+the link:list-nodes.html#list-nodes-1[`list-nodes`(1)] subcommand.
+====
+
+By default, the subcommand displays the following information for each
+node that is listed:
+
+* The name of the node
+* The type of the node, which is `DCOM`
+* The name of the host that the node represents
+
+The `--long` option of the subcommand specifies whether the nodes are
+listed in long format. In long format, the following additional
+information about each node is displayed:
+
+* The path to the parent of the base installation directory of
+{productName} on the host that the node represents
+* A comma-separated list of the names of the {productName} instances
+that reside on the node
+
+If the `--terse` option of the
+link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility is `true` and the
+`--long` option of the subcommand is `false`, the subcommand lists only
+the name of each node.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1720]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--long`::
+`-l`::
+  Specifies whether the nodes are listed in long format. +
+  Possible values are as follows:
+
+  `true`;;
+    The nodes are listed in long format.
+  `false`;;
+    The nodes are listed in short format (default).
+
+[[sthref1721]]
+
+=== Examples
+
+[[GSRFM694]][[sthref1722]]
+
+==== Example 1   Listing {productName} Nodes
+
+This example displays the name, type, and host for all {productName}
+nodes that support communication over DCOM in a domain.
+
+[source]
+----
+asadmin> list-nodes-dcom
+xkyd  DCOM  xkyd.example.com
+wpmdl2  DCOM  wpmdl2.example.com
+wpmdl1  DCOM  wpmdl1.example.com
+Command list-nodes-dcom executed successfully.
+----
+
+[[GSRFM695]][[sthref1723]]
+
+==== Example 2   Listing Only the Names of {productName} Nodes
+
+This example uses the `--terse` option of the `asadmin` utility to list
+only the names of the {productName} nodes that support communication
+over DCOM in a domain.
+
+[source]
+----
+asadmin> list-nodes-dcom --terse=true
+xkyd
+wpmdl2
+wpmdl1
+----
+
+[[GSRFM696]][[sthref1724]]
+
+==== Example 3   Listing {productName} Nodes in Long Format
+
+This example lists the {productName} nodes that support
+communication over DCOM in a domain in long format.
+
+[source]
+----
+asadmin> list-nodes-dcom --long=true
+NODE NAME    TYPE   NODE HOST            INSTALL DIRECTORY   REFERENCED BY
+xkyd         DCOM   xkyd.example.com     C:\glassfish7
+wpmdl2       DCOM   wpmdl2.example.com   C:\glassfish7       wdi2
+wpmdl1       DCOM   wpmdl1.example.com   C:\glassfish7       wdi1
+Command list-nodes-dcom executed successfully.
+----
+
+[[sthref1725]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1726]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-node-config.html#create-node-config-1[`create-node-config`(1)],
+link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
+link:create-node-ssh.html#create-node-ssh-1[`create-node-ssh`(1)],
+link:delete-node-config.html#delete-node-config-1[`delete-node-config`(1)],
+link:delete-node-dcom.html#delete-node-dcom-1[`delete-node-dcom`(1)],
+link:delete-node-ssh.html#delete-node-ssh-1[`delete-node-ssh`(1)],
+link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
+link:list-nodes-config.html#list-nodes-config-1[`list-nodes-config`(1)],
+link:#list-nodes-dcom-1[`list-nodes-dcom`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-nodes-ssh.adoc b/docs/reference-manual/src/main/asciidoc/list-nodes-ssh.adoc
new file mode 100644
index 0000000..8117949
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-nodes-ssh.adoc
@@ -0,0 +1,157 @@
+type=page
+status=published
+title=list-nodes-ssh
+next=list-password-aliases.html
+prev=list-nodes-dcom.html
+~~~~~~
+
+= list-nodes-ssh
+
+[[list-nodes-ssh-1]][[GSRFM00189]][[list-nodes-ssh]]
+
+== list-nodes-ssh
+
+Lists all {productName} nodes that support communication over SSH in a domain
+
+[[sthref1727]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-nodes-ssh [--help]
+[--long={false|true}]
+----
+
+[[sthref1728]]
+
+=== Description
+
+The `list-nodes-ssh` subcommand lists all {productName} nodes that
+support communication over secure shell (SSH) in a domain.
+
+[NOTE]
+====
+To list all nodes in a domain regardless of the type of the node, run
+the link:list-nodes.html#list-nodes-1[`list-nodes`(1)] subcommand.
+====
+
+By default, the subcommand displays the following information for each
+node that is listed:
+
+* The name of the node
+* The type of the node, which is `SSH`
+* The name of the host that the node represents
+
+The `--long` option of the subcommand specifies whether the nodes are
+listed in long format. In long format, the following additional
+information about each node is displayed:
+
+* The path to the parent of the base installation directory of
+{productName} on the host that the node represents
+* A comma-separated list of the names of the {productName} instances
+that reside on the node
+
+If the `--terse` option of the
+link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility is `true` and the
+`--long` option of the subcommand is `false`, the subcommand lists only
+the name of each node.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1729]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--long`::
+`-l`::
+  Specifies whether the nodes are listed in long format.
+  Possible values are as follows:
+
+  `true`;;
+    The nodes are listed in long format.
+  `false`;;
+    The nodes are listed in short format (default).
+
+[[sthref1730]]
+
+=== Examples
+
+[[GSRFM697]][[sthref1731]]
+
+==== Example 1   Listing {productName} Nodes
+
+This example displays the name, type, and host for all {productName}
+nodes that support communication over SSH in a domain.
+
+[source]
+----
+asadmin> list-nodes-ssh
+sj02  SSH  sj02.example.com
+sj01  SSH  sj01.example.com
+Command list-nodes-ssh executed successfully.
+----
+
+[[GSRFM698]][[sthref1732]]
+
+==== Example 2   Listing Only the Names of {productName} Nodes
+
+This example uses the `--terse` option of the `asadmin` utility to list
+only the names of the {productName} nodes that support communication
+over SSH in a domain.
+
+[source]
+----
+asadmin> list-nodes-ssh --terse=true
+sj02
+sj01
+----
+
+[[GSRFM699]][[sthref1733]]
+
+==== Example 3   Listing {productName} Nodes in Long Format
+
+This example lists the {productName} nodes that support
+communication over SSH in a domain in long format.
+
+[source]
+----
+asadmin> list-nodes-ssh --long=true
+NODE NAME   TYPE   NODE HOST          INSTALL DIRECTORY    REFERENCED BY
+sj02        SSH    sj02.example.com   /export/glassfish7   pmd-i-sj02, yml-i-sj02
+sj01        SSH    sj01.example.com   /export/glassfish7   pmd-i-sj01, yml-i-sj01
+Command list-nodes-ssh executed successfully.
+----
+
+[[sthref1734]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1735]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
+link:create-node-config.html#create-node-config-1[`create-node-config`(1)],
+link:create-node-ssh.html#create-node-ssh-1[`create-node-ssh`(1)],
+link:delete-node-config.html#delete-node-config-1[`delete-node-config`(1)],
+link:delete-node-dcom.html#delete-node-dcom-1[`delete-node-dcom`(1)],
+link:delete-node-ssh.html#delete-node-ssh-1[`delete-node-ssh`(1)],
+link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
+link:list-nodes-config.html#list-nodes-config-1[`list-nodes-config`(1)],
+link:list-nodes-dcom.html#list-nodes-dcom-1[`list-nodes-dcom`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-nodes.adoc b/docs/reference-manual/src/main/asciidoc/list-nodes.adoc
new file mode 100644
index 0000000..0a8be38
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-nodes.adoc
@@ -0,0 +1,166 @@
+type=page
+status=published
+title=list-nodes
+next=list-nodes-config.html
+prev=list-network-listeners.html
+~~~~~~
+
+= list-nodes
+
+[[list-nodes-1]][[GSRFM00187]][[list-nodes]]
+
+== list-nodes
+
+Lists all {productName} nodes in a domain
+
+[[sthref1700]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-nodes [--help]
+[--long={false|true}]
+----
+
+[[sthref1701]]
+
+=== Description
+
+The `list-nodes` subcommand lists all {productName} nodes in a
+domain.
+
+By default, the subcommand displays the following information for each
+node that is listed:
+
+* The name of the node
+
+* The type of the node, which is one of the following types:::
+`CONFIG`::
+  The node does not support remote communication.
+`DCOM`::
+  The node supports communication over the Distributed Component Object
+  Model (DCOM) remote protocol.
+`SSH`::
+  The node supports communication over secure shell (SSH).
+
+* The name of the host that the node represents
+
+The `--long` option of the subcommand specifies whether the nodes are
+listed in long format. In long format, the following additional
+information about each node is displayed:
+
+* The path to the parent of the base installation directory of
+{productName} on the host that the node represents
+
+* A comma-separated list of the names of the {productName} instances
+that reside on the node
+
+If the `--terse` option of the
+link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility is `true` and the
+`--long` option of the subcommand is `false`, the subcommand lists only
+the name of each node.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1702]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--long`::
+`-l`::
+  Specifies whether the nodes are listed in long format. +
+  Possible values are as follows:
+
+  `true`;;
+    The nodes are listed in long format.
+  `false`;;
+    The nodes are listed in short format (default).
+
+[[sthref1703]]
+
+=== Examples
+
+[[GSRFM687]][[sthref1704]]
+
+==== Example 1   Listing {productName} Nodes
+
+This example displays the name, type, and host for all {productName}
+nodes in the domain `domain1`.
+
+[source]
+----
+asadmin> list-nodes
+localhost-domain1  CONFIG  localhost
+sj02  SSH  sj02.example.com
+sj01  SSH  sj01.example.com
+devnode  CONFIG  localhost
+Command list-nodes executed successfully.
+----
+
+[[GSRFM688]][[sthref1705]]
+
+==== Example 2   Listing Only the Names of {productName} Nodes
+
+This example uses the `--terse` option of the `asadmin` utility to list
+only the names of the {productName} nodes in the domain `domain1`.
+
+[source]
+----
+asadmin> list-nodes --terse=true
+localhost-domain1
+sj02
+sj01
+devnode
+----
+
+[[GSRFM689]][[sthref1706]]
+
+==== Example 3   Listing {productName} Nodes in Long Format
+
+This example lists the {productName} nodes in the domain `domain1`
+in long format.
+
+[source]
+----
+asadmin> list-nodes --long=true
+NODE NAME           TYPE     NODE HOST          INSTALL DIRECTORY     REFERENCED BY
+localhost-domain1   CONFIG   localhost          /export/glassfish7
+sj02                SSH      sj02.example.com   /export/glassfish7    pmd-i2, yml-i2
+sj01                SSH      sj01.example.com   /export/glassfish7    pmd-i1, yml-i1
+devnode             CONFIG   localhost          /export/glassfish7    pmdsa1
+Command list-nodes executed successfully.
+----
+
+[[sthref1707]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1708]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-node-config.html#create-node-config-1[`create-node-config`(1)],
+link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
+link:create-node-ssh.html#create-node-ssh-1[`create-node-ssh`(1)],
+link:delete-node-config.html#delete-node-config-1[`delete-node-config`(1)],
+link:delete-node-dcom.html#delete-node-dcom-1[`delete-node-dcom`(1)],
+link:delete-node-ssh.html#delete-node-ssh-1[`delete-node-ssh`(1)],
+link:list-nodes-config.html#list-nodes-config-1[`list-nodes-config`(1)],
+link:list-nodes-dcom.html#list-nodes-dcom-1[`list-nodes-dcom`(1)],
+link:list-nodes-ssh.html#list-nodes-ssh-1[`list-nodes-ssh`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-password-aliases.adoc b/docs/reference-manual/src/main/asciidoc/list-password-aliases.adoc
new file mode 100644
index 0000000..92aca6e
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-password-aliases.adoc
@@ -0,0 +1,76 @@
+type=page
+status=published
+title=list-password-aliases
+next=list-persistence-types.html
+prev=list-nodes-ssh.html
+~~~~~~
+
+= list-password-aliases
+
+[[list-password-aliases-1]][[GSRFM00190]][[list-password-aliases]]
+
+== list-password-aliases
+
+Lists all password aliases
+
+[[sthref1736]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-password-aliases [--help]
+----
+
+[[sthref1737]]
+
+=== Description
+
+This subcommand lists all of the password aliases.
+
+[[sthref1738]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1739]]
+
+=== Examples
+
+[[GSRFM700]][[sthref1740]]
+
+==== Example 1   Listing all password aliases
+
+[source]
+----
+asadmin> list-password-aliases
+jmspassword-alias
+Command list-password-aliases executed successfully
+----
+
+[[sthref1741]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1742]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-password-alias.html#create-password-alias-1[`create-password-alias`(1)],
+link:delete-password-alias.html#delete-password-alias-1[`delete-password-alias`(1)],
+link:update-password-alias.html#update-password-alias-1[`update-password-alias`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-persistence-types.adoc b/docs/reference-manual/src/main/asciidoc/list-persistence-types.adoc
new file mode 100644
index 0000000..6b7ccfe
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-persistence-types.adoc
@@ -0,0 +1,125 @@
+type=page
+status=published
+title=list-persistence-types
+next=list-protocol-filters.html
+prev=list-password-aliases.html
+~~~~~~
+
+= list-persistence-types
+
+[[list-persistence-types-1]][[GSRFM00191]][[list-persistence-types]]
+
+== list-persistence-types
+
+Lists registered persistence types for HTTP sessions and SFSB instances
+
+[[sthref1743]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-persistence-types [--help]
+--type={web|ejb}
+----
+
+[[sthref1744]]
+
+=== Description
+
+The `list-persistence-types` subcommand lists registered persistence
+types for HTTP sessions and stateful session bean (SFSB) instances. The
+built-in persistence types are `memory`, `file`, and `replicated`. The
+`memory` type does not apply to SFSB instances.
+
+Other persistence types can be added using the `StrategyBuilder` class.
+For more information, see the link:add-on-component-development-guide.html#GSACG[{productName} Add-On Component Development Guide].
+
+To set the persistence type for HTTP sessions, use the `set` subcommand
+to set the `persistence-type` attribute. For example:
+
+[source]
+----
+asadmin> set c1-config.availability-service.web-container-availability.persistence-type=file
+----
+
+To set the persistence type for SFSB instances without availability
+enabled, use the `set` subcommand to set the `sfsb-persistence-type`
+attribute. For example:
+
+[source]
+----
+asadmin> set c1-config.availability-service.ejb-container-availability.sfsb-persistence-type=file
+----
+
+To set the persistence type for SFSB instances with availability
+enabled, use the `set` subcommand to set the `sfsb-ha-persistence-type`
+attribute. For example:
+
+[source]
+----
+asadmin> set
+c1-config.availability-service.ejb-container-availability.sfsb-ha-persistence-type=replicated
+----
+
+This subcommand is supported in remote mode only.
+
+[[sthref1745]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--type`::
+  Specifies the type of sessions for which persistence types are listed.
+  Allowed values are as follows:
+
+  * `web` — Lists persistence types for HTTP sessions.
+  * `ejb` — Lists persistence types for SFSB instances.
+
+[[sthref1746]]
+
+=== Examples
+
+[[GSRFM701]][[sthref1747]]
+
+==== Example 1   Listing Persistence Types for HTTP Sessions
+
+This example lists persistence types for HTTP sessions.
+
+[source]
+----
+asadmin> list-persistence-types --type=web
+memory
+file
+replicated
+
+Command list-persistence-types executed successfully.
+----
+
+[[sthref1748]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1749]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:get.html#get-1[`get`(1)], link:list.html#list-1[`list`(1)],
+link:set.html#set-1[`set`(1)]
+
+link:add-on-component-development-guide.html#GSACG[{productName} Add-On Component
+Development Guide]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-protocol-filters.adoc b/docs/reference-manual/src/main/asciidoc/list-protocol-filters.adoc
new file mode 100644
index 0000000..57106bc
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-protocol-filters.adoc
@@ -0,0 +1,103 @@
+type=page
+status=published
+title=list-protocol-filters
+next=list-protocol-finders.html
+prev=list-persistence-types.html
+~~~~~~
+
+= list-protocol-filters
+
+[[list-protocol-filters-1]][[GSRFM00193]][[list-protocol-filters]]
+
+== list-protocol-filters
+
+Lists the existing protocol filters
+
+[[sthref1750]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-protocol-filters [--help]
+[--target server]
+protocol-name
+----
+
+[[sthref1751]]
+
+=== Description
+
+The `list-protocol-filters` subcommand lists the existing protocol
+filters. This subcommand is supported in remote mode only.
+
+[[sthref1752]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+target::
+  Restricts the listing to protocol filters for a specified target.
+  Valid values are as follows:
+
+  `server`;;
+    Lists the protocol filters for the default server instance. This is
+    the default value.
+  configuration-name;;
+    Lists the protocol filters for the specified configuration.
+  cluster-name;;
+    Lists the protocol filters for all server instances in the specified
+    cluster.
+  instance-name;;
+    Lists the protocol filters for the specified server instance.
+
+[[sthref1753]]
+
+=== Operands
+
+protocol-name::
+  The name of the protocol for which to list protocol filters.
+
+[[sthref1754]]
+
+=== Examples
+
+[[GSRFM704]][[sthref1755]]
+
+==== Example 1   Listing Protocol Filters
+
+The following command lists all the protocol filters for the server
+instance:
+
+[source]
+----
+asadmin> list-protocol-filters http1
+http1-filter
+https1-filter
+Command list-protocol-filters executed successfully.
+----
+
+[[sthref1756]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1757]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-protocol-filter.html#create-protocol-filter-1[`create-protocol-filter`(1)],
+link:delete-protocol-filter.html#delete-protocol-filter-1[`delete-protocol-filter`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-protocol-finders.adoc b/docs/reference-manual/src/main/asciidoc/list-protocol-finders.adoc
new file mode 100644
index 0000000..8026d9b
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-protocol-finders.adoc
@@ -0,0 +1,84 @@
+type=page
+status=published
+title=list-protocol-finders
+next=list-protocols.html
+prev=list-protocol-filters.html
+~~~~~~
+
+= list-protocol-finders
+
+[[list-protocol-finders-1]][[GSRFM00194]][[list-protocol-finders]]
+
+== list-protocol-finders
+
+Lists the existing protocol finders
+
+[[sthref1758]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-protocol-finders [--help]
+[--target server]
+protocol-name
+----
+
+[[sthref1759]]
+
+=== Description
+
+The `list-protocol-finders` subcommand lists the existing protocol
+finders. This subcommand is supported in remote mode only.
+
+[[sthref1760]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+target::
+  Restricts the listing to protocol finders for a specified target.
+  Valid values are as follows:
+
+  `server`;;
+    Lists the protocol finders for the default server instance. This is
+    the default value.
+  configuration-name;;
+    Lists the protocol finders for the specified configuration.
+  cluster-name;;
+    Lists the protocol finders for all server instances in the specified
+    cluster.
+  instance-name;;
+    Lists the protocol finders for the specified server instance.
+
+[[sthref1761]]
+
+=== Operands
+
+protocol-name::
+  The name of the protocol for which to list protocol finders.
+
+[[sthref1762]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1763]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-protocol-finder.html#create-protocol-finder-1[`create-protocol-finder`(1)],
+link:delete-protocol-finder.html#delete-protocol-finder-1[`delete-protocol-finder`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-protocols.adoc b/docs/reference-manual/src/main/asciidoc/list-protocols.adoc
new file mode 100644
index 0000000..5ad43cb
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-protocols.adoc
@@ -0,0 +1,101 @@
+type=page
+status=published
+title=list-protocols
+next=list-resource-adapter-configs.html
+prev=list-protocol-finders.html
+~~~~~~
+
+= list-protocols
+
+[[list-protocols-1]][[GSRFM00195]][[list-protocols]]
+
+== list-protocols
+
+Lists the existing protocols
+
+[[sthref1764]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-protocols [--help]
+[target]
+----
+
+[[sthref1765]]
+
+=== Description
+
+The `list-protocols` subcommand lists the existing protocols. This
+subcommand is supported in remote mode only.
+
+[[sthref1766]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1767]]
+
+=== Operands
+
+target::
+  Restricts the listing to protocols for a specified target. Valid
+  values are as follows:
+
+  `server`;;
+    Lists the protocols for the default server instance. This is the
+    default value.
+  configuration-name;;
+    Lists the protocols for the specified configuration.
+  cluster-name;;
+    Lists the protocols for all server instances in the specified
+    cluster.
+  instance-name;;
+    Lists the protocols for the specified server instance.
+
+[[sthref1768]]
+
+=== Examples
+
+[[GSRFM705]][[sthref1769]]
+
+==== Example 1   Listing Protocols
+
+The following command lists all the protocols for the server instance:
+
+[source]
+----
+asadmin> list-protocols
+admin-listener
+http-1
+http-listener-1
+http-listener-2
+Command list-protocols executed successfully.
+----
+
+[[sthref1770]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1771]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-protocol.html#create-protocol-1[`create-protocol`(1)],
+link:delete-protocol.html#delete-protocol-1[`delete-protocol`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-resource-adapter-configs.adoc b/docs/reference-manual/src/main/asciidoc/list-resource-adapter-configs.adoc
new file mode 100644
index 0000000..dd853eb
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-resource-adapter-configs.adoc
@@ -0,0 +1,89 @@
+type=page
+status=published
+title=list-resource-adapter-configs
+next=list-resource-refs.html
+prev=list-protocols.html
+~~~~~~
+
+= list-resource-adapter-configs
+
+[[list-resource-adapter-configs-1]][[GSRFM00196]][[list-resource-adapter-configs]]
+
+== list-resource-adapter-configs
+
+Lists the names of the current resource adapter configurations
+
+[[sthref1772]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-resource-adapter-configs [--help]
+[--raname raname] [--verbose {false|true}]
+----
+
+[[sthref1773]]
+
+=== Description
+
+This command lists the configuration information in the `domain.xml` for
+the connector module. It lists an entry called `resource-adapter-config`
+in the `domain.xml` file. If the `--raname` option is specified, only
+the resource adapter configurations for the specified connector module
+are listed.
+
+This command is supported in remote mode only.
+
+[[sthref1774]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--raname`::
+  Specifies the connector module name.
+`--verbose`::
+  Lists the properties that are configured. Default value is false.
+
+[[sthref1775]]
+
+=== Examples
+
+[[GSRFM706]][[sthref1776]]
+
+==== Example 1   Listing the Resource Adapter Configurations
+
+This example lists the current resource adapter configurations.
+
+[source]
+----
+asadmin> list-resource-adapter-configs
+ra1
+ra2
+Command list-resource-adapter-configs executed successfully
+----
+
+[[sthref1777]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1778]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-resource-adapter-config.html#create-resource-adapter-config-1[`create-resource-adapter-config`(1)],
+link:delete-resource-adapter-config.html#delete-resource-adapter-config-1[`delete-resource-adapter-config`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-resource-refs.adoc b/docs/reference-manual/src/main/asciidoc/list-resource-refs.adoc
new file mode 100644
index 0000000..5fe8b52
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-resource-refs.adoc
@@ -0,0 +1,104 @@
+type=page
+status=published
+title=list-resource-refs
+next=list-secure-admin-internal-users.html
+prev=list-resource-adapter-configs.html
+~~~~~~
+
+= list-resource-refs
+
+[[list-resource-refs-1]][[GSRFM00197]][[list-resource-refs]]
+
+== list-resource-refs
+
+Lists existing resource references
+
+[[sthref1779]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-resource-refs [--help]
+[target]
+----
+
+[[sthref1780]]
+
+=== Description
+
+The `list-resource-refs` subcommand lists all resource references in a
+cluster or an unclustered server instance. This effectively lists all
+the resources (for example, JDBC resources) available in the JNDI tree
+of the specified target.
+
+The target instance or instances in the cluster need not be running or
+available for this subcommand to succeed.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1781]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1782]]
+
+=== Operands
+
+target::
+  The target for which you are listing the resource references. Valid
+  targets are as follows:
+
+  `server`;;
+    Lists the resource references for the default server instance and is
+    the default target.
+  cluster_name;;
+    Lists the resource references for every server instance in the
+    cluster.
+  instance_name;;
+    Lists the resource references for the named unclustered server
+    instance.
+
+[[sthref1783]]
+
+=== Examples
+
+[[GSRFM707]][[sthref1784]]
+
+==== Example 1   Listing Resource References for a Cluster
+
+This example lists resource references for the cluster `cluster1`.
+
+[source]
+----
+asadmin> list-resource-refs cluster1
+jms/Topic
+Command list-resource-refs executed successfully.
+----
+
+[[sthref1785]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1786]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-resource-ref.html#create-resource-ref-1[`create-resource-ref`(1)],
+link:delete-resource-ref.html#delete-resource-ref-1[`delete-resource-ref`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-secure-admin-internal-users.adoc b/docs/reference-manual/src/main/asciidoc/list-secure-admin-internal-users.adoc
new file mode 100644
index 0000000..0a35b53
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-secure-admin-internal-users.adoc
@@ -0,0 +1,115 @@
+type=page
+status=published
+title=list-secure-admin-internal-users
+next=list-secure-admin-principals.html
+prev=list-resource-refs.html
+~~~~~~
+
+= list-secure-admin-internal-users
+
+[[list-secure-admin-internal-users-1]][[GSRFM00199]][[list-secure-admin-internal-users]]
+
+== list-secure-admin-internal-users
+
+Lists the user names that the {productName} DAS and instances use to
+authenticate with each other and to authorize admin operations.
+
+[[sthref1787]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-secure-admin-internal-users [--help]
+[--long={false|true}]
+[--output output]
+[--header={false|true}]
+[name]
+----
+
+[[sthref1788]]
+
+=== Description
+
+The `list-secure-admin-internal-users` subcommand lists the user names
+that the {productName} DAS and instances use to authenticate with
+each other and to authorize admin operations.
+
+[[sthref1789]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--long`::
+`-l`::
+  Displays detailed information about each internal user. The default
+  value is `false.`
+`--output`::
+`-o`::
+  Displays specific details about each internal user. Use a
+  comma-separated list to specify the details you want to display and
+  their order. The values are case-insensitive.
+  Possible values are as follows:
+
+  `username`;;
+    Displays the user name for the internal user.
+  `password-alias`;;
+    Displays the password alias for the internal user.
+
+`--header`::
+`-h`::
+  Specifies whether column headings are displayed when the `--long`
+  option is used. The default value is `true`. To suppress the headings,
+  set the `--header` option to `false`.
+
+[[sthref1790]]
+
+=== Operands
+
+name::
+  The user name for the internal user for which you want to display
+  details.
+
+[[sthref1791]]
+
+=== Examples
+
+[[GSRFM709]][[sthref1792]]
+
+==== Example 1   Listing the User Name for Secure Admin
+
+This example lists the user names that the {productName} DAS and
+instances use to authenticate with each other and to authorize admin
+operations.
+
+[source]
+----
+asadmin> list-secure-admin-internal-users
+
+Command list-secure-admin-internal-users executed successfully.
+----
+
+[[sthref1793]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1794]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:enable-secure-admin.html#enable-secure-admin-1[`enable-secure-admin`(1)],
+link:enable-secure-admin-internal-user.html#enable-secure-admin-internal-user-1[`enable-secure-admin-internal-user`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-secure-admin-principals.adoc b/docs/reference-manual/src/main/asciidoc/list-secure-admin-principals.adoc
new file mode 100644
index 0000000..a26f433
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-secure-admin-principals.adoc
@@ -0,0 +1,115 @@
+type=page
+status=published
+title=list-secure-admin-principals
+next=list-sub-components.html
+prev=list-secure-admin-internal-users.html
+~~~~~~
+
+= list-secure-admin-principals
+
+[[list-secure-admin-principals-1]][[GSRFM00200]][[list-secure-admin-principals]]
+
+== list-secure-admin-principals
+
+Lists the certificates for which {productName} accepts admin
+requests from clients.
+
+[[sthref1795]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-secure-admin-principals [--help]
+[--long={false|true}]
+[--output output]
+[--header={false|true}]
+[name]
+----
+
+[[sthref1796]]
+
+=== Description
+
+The `list-secure-admin-principals` subcommand lists the certificates for
+which {productName} accepts admin requests from clients.
+
+[[sthref1797]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--long`::
+`-l`::
+  Displays detailed information about the certificates for which
+  {productName} accepts admin requests from clients. The default
+  value is `false`.
+`--output`::
+`-o`::
+  Displays specific details about the certificates for which
+  {productName} accepts admin requests from clients. Use a
+  comma-separated list to specify the details you want to display and
+  their order. The values are case-insensitive.
+  Possible values are as follows:
+
+  `DN`;;
+    Displays the distinguished name (DN) of each certificate.
+
+`--header`::
+`-h`::
+  Specifies whether column headings are displayed when the `--long`
+  option is used. The default value is `true`. To suppress the headings,
+  set the `--header` option to `false`.
+
+[[sthref1798]]
+
+=== Operands
+
+name::
+  The distinguished name of the certificate, specified as a
+  comma-separated list in quotes. For example:
+  `"CN=system.amer.oracle.com,OU=GlassFish,O=Oracle Corporation,L=Santa Clara,ST=California,C=US"`.
+
+[[sthref1799]]
+
+=== Examples
+
+[[GSRFM710]][[sthref1800]]
+
+==== Example 1   Listing the Certificates
+
+This example lists the certificates for which {productName} accepts
+admin requests from clients.
+
+[source]
+----
+asadmin> list-secure-admin-principals
+CN=localhost,OU=GlassFish,O=Oracle Corporation,L=Santa Clara,ST=California,C=US
+CN=localhost-instance,OU=GlassFish,O=Oracle Corporation,L=Santa Clara,ST=California,C=US
+Command list-secure-admin-principals executed successfully.
+----
+
+[[sthref1801]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1802]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:enable-secure-admin.html#enable-secure-admin-1[`enable-secure-admin`(1)],
+link:enable-secure-admin-principal.html#enable-secure-admin-principal-1[`enable-secure-admin-principal`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-sub-components.adoc b/docs/reference-manual/src/main/asciidoc/list-sub-components.adoc
new file mode 100644
index 0000000..03dec2a
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-sub-components.adoc
@@ -0,0 +1,125 @@
+type=page
+status=published
+title=list-sub-components
+next=list-supported-cipher-suites.html
+prev=list-secure-admin-principals.html
+~~~~~~
+
+= list-sub-components
+
+[[list-sub-components-1]][[GSRFM00201]][[list-sub-components]]
+
+== list-sub-components
+
+Lists EJB or servlet components in a deployed module or module of a
+deployed application
+
+[[sthref1803]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-sub-components [--help]
+[--type type]
+[--appname appname] [--resources]
+modulename
+----
+
+[[sthref1804]]
+
+=== Description
+
+The `list-sub-components` subcommand lists EJB or servlet components in
+a deployed module or in a module of a deployed application. If a module
+is not specified, all modules are listed. The `--appname` option
+functions only when the specified module is stand-alone. To display a
+specific module in an application, you must specify the module name with
+the `--appname` option.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1805]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--type`::
+  Specifies the type of component to be listed. The options are `ejbs`
+  and `servlets`. If nothing is specified, then all of the components
+  are listed.
+`--appname`::
+  Identifies the name of the application. This option is required when
+  the desired output is the subcomponents of an embedded module of a
+  deployed application. +
+  The name can include an optional version identifier, which follows the
+  name and is separated from the name by a colon (`:`). The version
+  identifier must begin with a letter or number. It can contain
+  alphanumeric characters plus underscore (`_`), dash (`-`), and period
+  (`.`) characters. For more information about module and application
+  versions, see "link:application-deployment-guide/overview.html#GSDPG00324[
+  Module and Application Versions]" in
+  {productName} Application Deployment Guide.
+`--resources`::
+  Lists the application-scoped resources for each subcomponent.
+
+[[sthref1806]]
+
+=== Operands
+
+modulename::
+  Specifies the name of the module containing the subcomponent. +
+  The name can include an optional version identifier, which follows the
+  name and is separated from the name by a colon (`:`). The version
+  identifier must begin with a letter or number. It can contain
+  alphanumeric characters plus underscore (`_`), dash (`-`), and period
+  (`.`) characters. For more information about module and application
+  versions, see "link:application-deployment-guide/overview.html#GSDPG00324[Module and Application Versions]" in
+  {productName} Application Deployment Guide.
+
+[[sthref1807]]
+
+=== Examples
+
+[[GSRFM711]][[sthref1808]]
+
+==== Example 1   Listing Subcomponents
+
+This example lists the subcomponents of the `MEjbApp` application within
+the `mejb.jar` module.
+
+[source]
+----
+asadmin> list-sub-components --appname MEjbApp mejb.jar
+MEJBBean <StatelessSessionBean>
+Command list-sub-components executed successfully.
+----
+
+[[sthref1809]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1810]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:disable.html#disable-1[`disable`(1)],
+link:enable.html#enable-1[`enable`(1)],
+link:list-components.html#list-components-1[`list-components`(1)]
+
+link:application-deployment-guide.html#GSDPG[{productName} Application Deployment
+Guide]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-supported-cipher-suites.adoc b/docs/reference-manual/src/main/asciidoc/list-supported-cipher-suites.adoc
new file mode 100644
index 0000000..3520129
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-supported-cipher-suites.adoc
@@ -0,0 +1,121 @@
+type=page
+status=published
+title=list-supported-cipher-suites
+next=list-system-properties.html
+prev=list-sub-components.html
+~~~~~~
+
+= list-supported-cipher-suites
+
+[[list-supported-cipher-suites-1]][[GSRFM00202]][[list-supported-cipher-suites]]
+
+== list-supported-cipher-suites
+
+Enables administrators to list the cipher suites that are supported and
+available to a specified {productName} target
+
+[[sthref1811]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-supported-cipher-suites [--help]
+[--target target]
+----
+
+[[sthref1812]]
+
+=== Description
+
+The `list-supported-cipher-suites` subcommand enables administrators to
+list the cipher suites that are supported and available to a specified
+{productName} target. The cipher suites that may be available in
+addition to the default SSL/TLS providers that are bundled with
+{productName} packages will vary depending on the third-party
+provider.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1813]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Specifies the target for which you want to list cipher suites. The
+  following values are valid:
+
+  `server`;;
+    Lists the cipher suites for the default server instance. This is the
+    default value.
+  configuration_name;;
+    Lists the cipher suites for the specified configuration.
+  cluster_name;;
+    Lists the cipher suites for all server instances in the specified
+    cluster.
+  instance_name;;
+    Lists the cipher suites for a specified server instance.
+
+[[sthref1814]]
+
+=== Examples
+
+[[GSRFM712]][[sthref1815]]
+
+==== Example 1   Listing cipher suites
+
+The following example shows how to list cipher suites for the default
+domain.
+
+[source]
+----
+asadmin> list-supported-cipher-suites
+SSL_RSA_WITH_RC4_128_MD5
+SSL_RSA_WITH_RC4_128_SHA
+TLS_RSA_WITH_AES_128_CBC_SHA
+TLS_DHE_RSA_WITH_AES_128_CBC_SHA
+TLS_DHE_DSS_WITH_AES_128_CBC_SHA
+SSL_RSA_WITH_3DES_EDE_CBC_SHA
+SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA
+SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA
+SSL_RSA_WITH_DES_CBC_SHA
+SSL_DHE_RSA_WITH_DES_CBC_SHA
+SSL_DHE_DSS_WITH_DES_CBC_SHA
+SSL_RSA_EXPORT_WITH_RC4_40_MD5
+SSL_RSA_EXPORT_WITH_DES40_CBC_SHA
+SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA
+SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA
+SSL_RSA_WITH_NULL_MD5
+SSL_RSA_WITH_NULL_SHA
+SSL_DH_anon_WITH_RC4_128_MD5
+TLS_DH_anon_WITH_AES_128_CBC_SHA
+SSL_DH_anon_WITH_3DES_EDE_CBC_SHA
+SSL_DH_anon_WITH_DES_CBC_SHA
+SSL_DH_anon_EXPORT_WITH_RC4_40_MD5
+SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA
+
+Command list-supported-cipher-suites executed successfully.
+----
+
+[[sthref1816]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1817]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-system-properties.adoc b/docs/reference-manual/src/main/asciidoc/list-system-properties.adoc
new file mode 100644
index 0000000..769b873
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-system-properties.adoc
@@ -0,0 +1,107 @@
+type=page
+status=published
+title=list-system-properties
+next=list-threadpools.html
+prev=list-supported-cipher-suites.html
+~~~~~~
+
+= list-system-properties
+
+[[list-system-properties-1]][[GSRFM00203]][[list-system-properties]]
+
+== list-system-properties
+
+Lists the system properties of the domain, configuration, cluster, or
+server instance
+
+[[sthref1818]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-system-properties [--help]
+[target]
+----
+
+[[sthref1819]]
+
+=== Description
+
+Shared or clustered server instances will often need to override
+attributes defined in their referenced configuration. Any configuration
+attribute in a server instance can be overridden through a system
+property of the corresponding name. This list-system-properties
+subcommand lists the system properties of a domain, configuration,
+cluster, or server instance.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1820]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1821]]
+
+=== Operands
+
+target::
+  This restricts the listing to system properties for a specific target.
+  Valid values are:
+
+  domain;;
+    Lists the system properties defined for the domain.
+  configuration_name;;
+    Lists the system properties for the named configuration as well as
+    those the cluster inherits from the domain.
+  cluster_name;;
+    Lists the system properties defined for the named cluster as well as
+    those the cluster. inherits from its configuration and the domain.
+  instance_name;;
+    Lists the system properties defined for the named server instance as
+    well as those the server inherits from its cluster (if the instance
+    is clustered), its configuration, and the domain.
+
+[[sthref1822]]
+
+=== Examples
+
+[[GSRFM713]][[sthref1823]]
+
+==== Example 1   Listing System Properties
+
+This example lists the system properties on `localhost`.
+
+[source]
+----
+asadmin> list-system-properties
+http-listener-port=1088
+Command list-system-properties executed successfully.
+----
+
+[[sthref1824]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1825]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-system-properties.html#create-system-properties-1[`create-system-properties`(1)],
+link:delete-system-property.html#delete-system-property-1[`delete-system-property`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-threadpools.adoc b/docs/reference-manual/src/main/asciidoc/list-threadpools.adoc
new file mode 100644
index 0000000..0b30176
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-threadpools.adoc
@@ -0,0 +1,101 @@
+type=page
+status=published
+title=list-threadpools
+next=list-timers.html
+prev=list-system-properties.html
+~~~~~~
+
+= list-threadpools
+
+[[list-threadpools-1]][[GSRFM00204]][[list-threadpools]]
+
+== list-threadpools
+
+Lists all the thread pools
+
+[[sthref1826]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-threadpools [--help]
+target
+----
+
+[[sthref1827]]
+
+=== Description
+
+The `list-threadpools` subcommand lists the {productName} thread pools.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1828]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1829]]
+
+=== Operands
+
+target::
+  This operand specifies the target for which you are listing thread
+  pools. This operand is required.
+  Valid values are as follows:
+
+  `server`;;
+    Lists the thread pools for the default {productName} instance
+    `server`.
+  configuration-name;;
+    Lists the thread pools for the named configuration.
+  cluster-name;;
+    Lists the thread pools for every instance in the cluster.
+  instance-name;;
+    Lists the thread pools for a particular instance.
+
+[[sthref1830]]
+
+=== Examples
+
+[[GSRFM714]][[sthref1831]]
+
+==== Example 1   Listing Thread Pools
+
+This example lists the current thread pools for the default instance `server`.
+
+[source]
+----
+asadmin> list-threadpools server
+admin-thread-pool
+http-thread-pool
+thread-pool-1
+Command list-threadpools executed successfully.
+----
+
+[[sthref1832]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1833]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-threadpool.html#create-threadpool-1[`create-threadpool`(1)],
+link:delete-threadpool.html#delete-threadpool-1[`delete-threadpool`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-timers.adoc b/docs/reference-manual/src/main/asciidoc/list-timers.adoc
new file mode 100644
index 0000000..9658d04
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-timers.adoc
@@ -0,0 +1,98 @@
+type=page
+status=published
+title=list-timers
+next=list-transports.html
+prev=list-threadpools.html
+~~~~~~
+
+= list-timers
+
+[[list-timers-1]][[GSRFM00205]][[list-timers]]
+
+== list-timers
+
+Lists all of the persistent timers owned by server instance(s)
+
+[[sthref1834]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-timers [--help]
+[target]
+----
+
+[[sthref1835]]
+
+=== Description
+
+The `list-timers` subcommand lists the persistent timers owned by a
+specific server instance or a cluster of server instances. This command
+is supported in remote mode only.
+
+[[sthref1836]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1837]]
+
+=== Operands
+
+target::
+  The target is either a standalone server instance or a cluster. If the
+  target is the stand-alone instance, then the number of timers owned by
+  the instance is listed. If the target is a cluster, then the number of
+  timers owned by each instance in the cluster is listed. The default
+  target is `server`, the default server instance.
+
+[[sthref1838]]
+
+=== Examples
+
+[[GSRFM715]][[sthref1839]]
+
+==== Example 1   Listing Current Timers in a Server Instance
+
+This example lists persistent timers in a particular standalone server
+instance. There is one currently active timer set.
+
+[source]
+----
+asadmin> list-timers server
+1
+
+The list-timers command was executed successfully.
+----
+
+[[sthref1840]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1841]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:migrate-timers.html#migrate-timers-1[`migrate-timers`(1)]
+
+https://eclipse-ee4j.github.io/jakartaee-tutorial/#using-the-timer-service[
+Using the Timer Service] in The Jakarta EE Tutorial
+
+"link:application-development-guide/ejb.html#GSDVG00146[EJB Timer Service]"
+in {productName} Application Development Guide
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-transports.adoc b/docs/reference-manual/src/main/asciidoc/list-transports.adoc
new file mode 100644
index 0000000..9ded1e3
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-transports.adoc
@@ -0,0 +1,99 @@
+type=page
+status=published
+title=list-transports
+next=list-virtual-servers.html
+prev=list-timers.html
+~~~~~~
+
+= list-transports
+
+[[list-transports-1]][[GSRFM00206]][[list-transports]]
+
+== list-transports
+
+Lists the existing transports
+
+[[sthref1842]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-transports [--help]
+[target]
+----
+
+[[sthref1843]]
+
+=== Description
+
+The `list-transports` subcommand lists the existing transports. This
+subcommand is supported in remote mode only.
+
+[[sthref1844]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1845]]
+
+=== Operands
+
+target::
+  Restricts the listing to transports for a specified target. Valid
+  values are as follows:
+
+  `server`;;
+    Lists the transports for the default server instance. This is the
+    default value.
+  configuration-name;;
+    Lists the transports for the specified configuration.
+  cluster-name;;
+    Lists the transports for all server instances in the specified
+    cluster.
+  instance-name;;
+    Lists the transports for the specified server instance.
+
+[[sthref1846]]
+
+=== Examples
+
+[[GSRFM716]][[sthref1847]]
+
+==== Example 1   Listing Transports
+
+The following command lists all the transports for the server instance:
+
+[source]
+----
+asadmin> list-transports
+http1-trans
+tcp
+Command list-transports executed successfully.
+----
+
+[[sthref1848]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1849]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-transport.html#create-transport-1[`create-transport`(1)],
+link:delete-transport.html#delete-transport-1[`delete-transport`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-virtual-servers.adoc b/docs/reference-manual/src/main/asciidoc/list-virtual-servers.adoc
new file mode 100644
index 0000000..63bfe31
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-virtual-servers.adoc
@@ -0,0 +1,100 @@
+type=page
+status=published
+title=list-virtual-servers
+next=list-web-context-param.html
+prev=list-transports.html
+~~~~~~
+
+= list-virtual-servers
+
+[[list-virtual-servers-1]][[GSRFM00207]][[list-virtual-servers]]
+
+== list-virtual-servers
+
+Lists the existing virtual servers
+
+[[sthref1850]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-virtual-servers [--help]
+[target]
+----
+
+[[sthref1851]]
+
+=== Description
+
+The `list-virtual-servers` subcommand lists the existing virtual
+servers. This subcommand is supported in remote mode only.
+
+[[sthref1852]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1853]]
+
+=== Operands
+
+target::
+  Restricts the listing to virtual servers for a specified target. Valid
+  values are as follows:
+
+  `server`;;
+    Lists the virtual servers for the default server instance. This is
+    the default value.
+  configuration-name;;
+    Lists the virtual servers for the specified configuration.
+  cluster-name;;
+    Lists the virtual servers for all server instances in the specified
+    cluster.
+  instance-name;;
+    Lists the virtual servers for the specified server instance.
+
+[[sthref1854]]
+
+=== Examples
+
+[[GSRFM717]][[sthref1855]]
+
+==== Example 1   Listing Virtual Servers
+
+The following command lists all the virtual servers for the server
+instance:
+
+[source]
+----
+asadmin> list-virtual-servers
+server
+__asadmin
+Command list-virtual-servers executed successfully.
+----
+
+[[sthref1856]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1857]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-virtual-server.html#create-virtual-server-1[`create-virtual-server`(1)],
+link:delete-virtual-server.html#delete-virtual-server-1[`delete-virtual-server`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-web-context-param.adoc b/docs/reference-manual/src/main/asciidoc/list-web-context-param.adoc
new file mode 100644
index 0000000..e75f19e
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-web-context-param.adoc
@@ -0,0 +1,143 @@
+type=page
+status=published
+title=list-web-context-param
+next=list-web-env-entry.html
+prev=list-virtual-servers.html
+~~~~~~
+
+= list-web-context-param
+
+[[list-web-context-param-1]][[GSRFM00208]][[list-web-context-param]]
+
+== list-web-context-param
+
+Lists servlet context-initialization parameters of a deployed web
+application or module
+
+[[sthref1858]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-web-context-param [--help]
+[--name=context-param-name] application-name[/module]
+----
+
+[[sthref1859]]
+
+=== Description
+
+The `list-web-context-param` subcommand lists the servlet
+context-initialization parameters of one of the following items:
+
+* A deployed web application
+* A web module in a deployed Java Platform, Enterprise Edition (Jakarta EE) application
+
+The application must already be deployed. Otherwise, an error occurs.
+
+The `list-web-context-param` subcommand lists only parameters that have
+previously been set by using the
+link:set-web-context-param.html#set-web-context-param-1[`set-web-context-param`(1)]
+subcommand. The subcommand does not list parameters that are set only in
+the application's deployment descriptor.
+
+For each parameter, the following information is displayed:
+
+* The name of the parameter
+* The value to which the parameter is set
+* The value of the `--ignoreDescriptorItem` option of the
+  `set-web-context-param` subcommand that was specified when the parameter was set
+* The description of the parameter or `null` if no description was
+  specified when the parameter was set
+
+[[sthref1860]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--name`::
+  The name of the servlet context-initialization parameter that is to be
+  listed. If this option is omitted, all parameters of the application
+  that have previously been set are listed.
+
+[[sthref1861]]
+
+=== Operands
+
+application-name::
+  The name of the application. This name can be obtained from the
+  Administration Console or by using the
+  link:list-applications.html#list-applications-1[`list-applications`(1)] subcommand. +
+  The application must already be deployed. Otherwise, an error occurs.
+module::
+  The relative path to the module within the application's enterprise
+  archive (EAR) file. The path to the module is specified in the
+  `module` element of the application's `application.xml` file. +
+  module is required only if the servlet context-initialization
+  parameter applies to a web module of a Jakarta EE application. If
+  specified, module must follow application-name, separated by a slash (`/`). +
+  For example, the `application.xml` file for the `myApp` application
+  might specify the following web module:
++
+[source,xml]
+----
+<module>
+    <web>
+        <web-uri>myWebModule.war</web-uri>
+    </web>
+</module>
+----
++
+The module would be specified as the operand of this command as `myApp/myWebModule.war`.
+
+[[sthref1862]]
+
+=== Examples
+
+[[GSRFM718]][[sthref1863]]
+
+==== Example 1   Listing Servlet Context-Initialization Parameters for a Web
+Application
+
+This example lists all servlet context-initialization parameters of the
+web application `basic-ezcomp` that have been set by using the
+`set-web-context-param` subcommand. Because no description was specified
+when the `javax.faces.PROJECT_STAGE` parameter was set, `null` is
+displayed instead of a description for this parameter.
+
+[source]
+----
+asadmin> list-web-context-param basic-ezcomp
+javax.faces.STATE_SAVING_METHOD = client ignoreDescriptorItem=false
+//The location where the application's state is preserved
+javax.faces.PROJECT_STAGE = null ignoreDescriptorItem=true //null
+
+Command list-web-context-param executed successfully.
+----
+
+[[sthref1864]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1865]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:list-applications.html#list-applications-1[`list-applications`(1)],
+link:set-web-context-param.html#set-web-context-param-1[`set-web-context-param`(1)],
+link:unset-web-context-param.html#unset-web-context-param-1[`unset-web-context-param`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list-web-env-entry.adoc b/docs/reference-manual/src/main/asciidoc/list-web-env-entry.adoc
new file mode 100644
index 0000000..3a6696b
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list-web-env-entry.adoc
@@ -0,0 +1,146 @@
+type=page
+status=published
+title=list-web-env-entry
+next=login.html
+prev=list-web-context-param.html
+~~~~~~
+
+= list-web-env-entry
+
+[[list-web-env-entry-1]][[GSRFM00209]][[list-web-env-entry]]
+
+== list-web-env-entry
+
+Lists environment entries for a deployed web application or module
+
+[[sthref1866]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list-web-env-entry [--help]
+[--name=env-entry-name] application-name[/module]
+----
+
+[[sthref1867]]
+
+=== Description
+
+The `list-web-env-entry` subcommand lists the environment entries for
+one of the following items:
+
+* A deployed web application
+* A web module in a deployed Java Platform, Enterprise Edition (Jakarta EE)
+application
+
+The application must already be deployed. Otherwise, an error occurs.
+
+The `list-web-env-entry` subcommand lists only entries that have
+previously been set by using the
+link:set-web-env-entry.html#set-web-env-entry-1[`set-web-env-entry`(1)]
+subcommand. The subcommand does not list environment entries that are
+set only in the application's deployment descriptor.
+
+For each entry, the following information is displayed:
+
+* The name of the entry
+* The Java type of the entry
+* The value to which the entry is set
+* The value of the `--ignoreDescriptorItem` option of the
+  `set-web-env-entry` subcommand that was specified when the entry was set
+* The description of the entry or `null` if no description was specified
+  when the entry was set
+
+[[sthref1868]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--name`::
+  The name of the environment entry that is to be listed. The name is a
+  JNDI name relative to the `java:comp/env` context. The name must be
+  unique within a deployment component. If this option is omitted, all
+  environment entries that have previously been set for the application
+  are listed.
+
+[[sthref1869]]
+
+=== Operands
+
+application-name::
+  The name of the application. This name can be obtained from the
+  Administration Console or by using the
+  link:list-applications.html#list-applications-1[`list-applications`(1)] subcommand. +
+  The application must already be deployed. Otherwise, an error occurs.
+module::
+  The relative path to the module within the application's enterprise
+  archive (EAR) file. The path to the module is specified in the
+  `module` element of the application's `application.xml` file. +
+  module is required only if the environment entry applies to a web
+  module of a Jakarta EE application. If specified, module must follow
+  application-name, separated by a slash (`/`). +
+  For example, the `application.xml` file for the `myApp` application
+  might specify the following web module:
++
+[source,xml]
+----
+<module>
+    <web>
+        <web-uri>myWebModule.war</web-uri>
+    </web>
+</module>
+----
+::
+  The module would be specified as the operand of this command as
+  `myApp/myWebModule.war`.
+
+[[sthref1870]]
+
+=== Examples
+
+[[GSRFM719]][[sthref1871]]
+
+==== Example 1   Listing Environment Entries for a Web Application
+
+This example lists all environment entries that have been set for the
+web application `hello` by using the `set-web-env-entry` subcommand.
+Because no description was specified when the `Hello Port` environment
+entry was set, `null` is displayed instead of a description for this
+entry.
+
+[source]
+----
+asadmin> list-web-env-entry hello
+Hello User (java.lang.String) = techscribe ignoreDescriptorItem=false
+ //User authentication for Hello appplication
+Hello Port (java.lang.Integer) = null ignoreDescriptorItem=true //null
+
+Command list-web-env-entry executed successfully.
+----
+
+[[sthref1872]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1873]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:list-applications.html#list-applications-1[`list-applications`(1)],
+link:set-web-env-entry.html#set-web-env-entry-1[`set-web-env-entry`(1)],
+link:unset-web-env-entry.html#unset-web-env-entry-1[`unset-web-env-entry`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/list.adoc b/docs/reference-manual/src/main/asciidoc/list.adoc
new file mode 100644
index 0000000..ef97371
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/list.adoc
@@ -0,0 +1,231 @@
+type=page
+status=published
+title=list
+next=list-admin-objects.html
+prev=jms-ping.html
+~~~~~~
+
+= list
+
+[[list-1]][[GSRFM00145]][[list]]
+
+== list
+
+Lists configurable or monitorable elements
+
+[[sthref1282]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] list [--help]
+[--monitor={false|true}]
+[dotted-parent-attribute-name]
+----
+
+[[sthref1283]]
+
+=== Description
+
+The `list` subcommand lists configurable and monitorable attributes of
+{productName}.
+
+The output of the `list` subcommand is a list of the dotted names that
+represent individual server components and subsystems. For example,
+`server.applications.web-module`. After you know the particular
+component or subsystem, you can then use the `get` subcommand to access
+any attributes, and the `set` subcommand to modify configurable
+attributes.
+
+The following rules apply to dotted names in a `list` subcommand:
+
+[NOTE]
+====
+Characters that have special meaning to the shell or command
+interpreter, such as * (asterisk), should be quoted or escaped as
+appropriate to the shell, for example, by enclosing the argument in
+quotes. In multimode, quotes are needed only for arguments that include
+spaces, quotes, or backslash.
+====
+
+* Any `list` subcommand that has a dotted name that is not followed by a
+wildcard (*) lists the current node's immediate children. For example,
+the following command lists all immediate children belonging to the
+server node:
++
+[source]
+----
+asadmin> list server
+----
+* Any `list` subcommand that has a dotted name followed by a wildcard(*)
+lists a hierarchical tree of child nodes from the current node. For
+example, the following command lists all child nodes of applications and
+their subsequent child nodes, and so on:
++
+[source]
+----
+asadmin> list server.applications.*
+----
+* Any `list` subcommand that has a dotted name preceded or followed by a
+wildcard (`*`) of the form dotted name or dottedname lists all nodes and
+their child nodes that match the regular expression created by the
+provided matching pattern.
+
+For detailed information about dotted names, see the
+link:dotted-names.html#dotted-names-5asc[`dotted-names`(5ASC)] help page.
+
+[[sthref1284]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--monitor`::
+`-m`::
+  Defaults to false. If set to false, the configurable attribute values
+  are returned. If set to true, the monitorable attribute values are
+  returned.
+
+[[sthref1285]]
+
+=== Operands
+
+dotted-parent-element-name::
+  Configurable or monitorable element name
+
+[[sthref1286]]
+
+=== Examples
+
+[[GSRFM631]][[sthref1287]]
+
+==== Example 1   Listing Dotted Names of Configurable Elements
+
+This example lists the elements that can be configured.
+
+[source]
+----
+asadmin> list *
+applications
+configs
+configs.config.server-config
+configs.config.server-config.admin-service
+configs.config.server-config.admin-service.das-config
+configs.config.server-config.admin-service.jmx-connector.system
+configs.config.server-config.admin-service.property.adminConsoleContextRoot
+configs.config.server-config.admin-service.property.adminConsoleDownloadLocation
+configs.config.server-config.admin-service.property.ipsRoot
+configs.config.server-config.ejb-container
+configs.config.server-config.ejb-container.ejb-timer-service
+configs.config.server-config.http-service
+configs.config.server-config.http-service.access-log
+configs.config.server-config.http-service.virtual-server.__asadmin
+configs.config.server-config.http-service.virtual-server.server
+configs.config.server-config.iiop-service
+configs.config.server-config.iiop-service.iiop-listener.SSL
+configs.config.server-config.iiop-service.iiop-listener.SSL.ssl
+configs.config.server-config.iiop-service.iiop-listener.SSL_MUTUALAUTH
+configs.config.server-config.iiop-service.iiop-listener.SSL_MUTUALAUTH.ssl
+configs.config.server-config.iiop-service.iiop-listener.orb-listener-1
+configs.config.server-config.iiop-service.orb
+configs.config.server-config.java-config
+configs.config.server-config.jms-service
+configs.config.server-config.jms-service.jms-host.default_JMS_host
+...
+property.administrative.domain.name
+resources
+resources.jdbc-connection-pool.DerbyPool
+resources.jdbc-connection-pool.DerbyPool.property.DatabaseName
+resources.jdbc-connection-pool.DerbyPool.property.Password
+resources.jdbc-connection-pool.DerbyPool.property.PortNumber
+resources.jdbc-connection-pool.DerbyPool.property.User
+resources.jdbc-connection-pool.DerbyPool.property.connectionAttributes
+resources.jdbc-connection-pool.DerbyPool.property.serverName
+resources.jdbc-connection-pool.__TimerPool
+resources.jdbc-connection-pool.__TimerPool.property.connectionAttributes
+resources.jdbc-connection-pool.__TimerPool.property.databaseName
+resources.jdbc-resource.jdbc/__TimerPool
+resources.jdbc-resource.jdbc/__default
+servers
+servers.server.server
+servers.server.server.resource-ref.jdbc/__TimerPool
+servers.server.server.resource-ref.jdbc/__default
+system-applications
+Command list executed successfully.
+----
+
+[[GSRFM632]][[sthref1288]]
+
+==== Example 2   Listing Attributes of a Configurable Element
+
+This example lists the attributes of the web container.
+
+[source]
+----
+asadmin> list configs.config.server-config.web-container
+configs.config.server-config.web-container
+configs.config.server-config.web-container.session-config
+Command list executed successfully.
+----
+
+[[GSRFM633]][[sthref1289]]
+
+==== Example 3   Listing Dotted Names of Monitorable Objects
+
+This example lists the names of the monitorable objects that are enabled
+for monitoring.
+
+[source]
+----
+asadmin> list --monitor *
+server.jvm
+server.jvm.class-loading-system
+server.jvm.compilation-system
+server.jvm.garbage-collectors
+server.jvm.garbage-collectors.Copy
+server.jvm.garbage-collectors.MarkSweepCompact
+server.jvm.memory
+server.jvm.operating-system
+server.jvm.runtime
+server.network
+server.network.admin-listener
+server.network.admin-listener.connections
+server.network.admin-listener.file-cache
+server.network.admin-listener.keep-alive
+server.network.admin-listener.thread-pool
+server.network.http-listener-1
+server.network.http-listener-1.connections
+server.network.http-listener-1.file-cache
+server.network.http-listener-1.keep-alive
+server.network.http-listener-1.thread-pool
+server.transaction-service
+Command list executed successfully.
+----
+
+[[sthref1290]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1291]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:get.html#get-1[`get`(1)], link:set.html#set-1[`set`(1)]
+
+link:dotted-names.html#dotted-names-5asc[`dotted-names`(5ASC)]
+
+link:administration-guide.html#GSADG[{productName} Administration Guide]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/logging.adoc b/docs/reference-manual/src/main/asciidoc/logging.adoc
new file mode 100644
index 0000000..b34b941
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/logging.adoc
@@ -0,0 +1,59 @@
+type=page
+status=published
+title=logging
+next=monitoring.html
+prev=instance.html
+~~~~~~
+
+= logging
+
+[[logging-5asc]][[GSRFM00270]][[logging]]
+
+== logging
+
+Capturing information on {productName} runtime events
+
+[[sthref2404]]
+
+=== Description
+
+Logging is the process by which {productName} captures data about
+events that occur during {productName} operation. {productName}
+components and application components generate logging data, which is
+saved in the server log, typically domain-dir`/logs/server.log`. The
+server log is the first source of information if {productName}
+problems occur.
+
+The server log is rotated when the file reaches the specified size in
+bytes, or the specified time has elapsed. The file can also be rotated
+manually by using the `rotate-log` subcommand.
+
+In addition to the server log, the domain-dir``/logs`` directory contains
+two other kinds of logs:
+
+* HTTP service access logs, located in the `/access` subdirectory
+* Transaction service logs, located in the `/tx` subdirectory
+
+Logging levels can be configured by using the Administration Console or
+the `set-log-levels` subcommand. Additional properties can be set by
+using the Administration Console or by editing the `logging.properties`
+file. The default `logging.properties` file is typically located in
+domain-dir``/config``.
+
+Although application components can use the Apache Commons Logging
+Library to record messages, the platform standard JSR 047 API is
+recommended for better log configuration.
+
+[[sthref2405]]
+
+=== See Also
+
+link:list-log-levels.html#list-log-levels-1[`list-log-levels`(1)],
+link:rotate-log.html#rotate-log-1[`rotate-log`(1)],
+link:set-log-levels.html#set-log-levels-1[`set-log-levels`(1)]
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+"link:administration-guide/logging.html#GSADG00010[Administering the Logging Service]" in {productName} Administration Guide
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/login.adoc b/docs/reference-manual/src/main/asciidoc/login.adoc
new file mode 100644
index 0000000..7f92676
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/login.adoc
@@ -0,0 +1,141 @@
+type=page
+status=published
+title=login
+next=migrate-timers.html
+prev=list-web-env-entry.html
+~~~~~~
+
+login
+=====
+
+[[login-1]][[GSRFM00210]][[login]]
+
+login
+-----
+
+Logs you into a domain
+
+[[sthref1874]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] login [--help]
+----
+
+[[sthref1875]]
+
+=== Description
+
+The purpose of the `login` subcommand is to ease domain administration
+by letting you log into a particular domain. If {productName}
+domains are created on various machines (locally), you can run the
+`asadmin` utility from any of these machines and manage domains located
+elsewhere (remotely). This is especially useful when a particular
+machine is chosen as an administration client that manages multiple
+domains and servers.
+
+The `login` subcommand prompts you for the administrator user name and
+password. After successful login, the `.asadminpass` file is created in
+your home directory. (This is the same file that is modified when you
+run the `create-domain` subcommand with the `--savelogin` option.) The
+literal host name is stored, and no resolution with the DNS is
+attempted. If a domain is being administered from other machines, it is
+sufficient to run the `login` subcommand once. You do not need to
+specify the `asadmin` utility options `--user` and `--passwordfile` when
+you run additional remote subcommands on that domain. After you have
+logged into a domain, you still need to provide the host and port for
+any subsequent remote subcommands unless you chose the default values
+for `--host` (localhost) and `--port` (4848) options.
+
+Subsequent use of same subcommand with the same parameters will result
+in overwriting the contents of the `.asadminpass` file for the given
+administration host and port. You can decide to overwrite the file or to
+reject such a login.
+
+Login information is saved permanently and can be used across multiple
+domain restarts.
+
+There is no `logout` subcommand. If you want to log in to another
+domain, run the `login` subcommand and specify new values for the
+`asadmin` utility options `--host` and `--port`.
+
+[[sthref1876]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref1877]]
+
+=== Examples
+
+[[GSRFM720]][[sthref1878]]
+
+==== Example 1   Logging Into a Domain on a Remote Machine
+
+This example logs into a domain located on another machine. Options are
+specified before the `login` subcommand.
+
+[source]
+----
+asadmin --host foo --port 8282 login
+Please enter the admin user name>admin
+Please enter the admin password>
+
+Trying to authenticate for administration of server at host [foo]
+and port [8282] ...
+Login information relevant to admin user name [admin] for host [foo]
+and admin port [8282] stored at [/.asadminpass] successfully.
+Make sure that this file remains protected. Information stored in this
+file will be used by asadmin commands to manage associated domain.
+----
+
+[[GSRFM721]][[sthref1879]]
+
+==== Example 2   Logging Into a Domain on the Default Port of Localhost
+
+This example logs into a domain on `mylhost` on the default port.
+Options are specified before the `login` subcommand.
+
+[source]
+----
+asadmin --host myhost login
+Please enter the admin user name>admin
+Please enter the admin password>
+Trying to authenticate for administration of server
+at host [myhost] and port [4848] ...
+An entry for login exists for host [myhost] and port [4848], probably
+from an earlier login operation.
+Do you want to overwrite this entry (y/n)?y
+Login information relevant to admin user name [admin] for host [myhost]
+and admin port [4848] stored at [/home/joe/.asadminpass] successfully.
+Make sure that this file remains protected. Information stored in this
+file will be used by asadmin commands to manage associated domain.
+----
+
+[[sthref1880]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1881]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-domain.html#create-domain-1[`create-domain`(1)],
+link:delete-domain.html#delete-domain-1[`delete-domain`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/manvol1.adoc b/docs/reference-manual/src/main/asciidoc/manvol1.adoc
new file mode 100644
index 0000000..0e5ef16
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/manvol1.adoc
@@ -0,0 +1,19 @@
+type=page
+status=published
+title={productName} 7 asadmin Utility Subcommands
+next=add-library.html
+prev=preface.html
+~~~~~~
+
+= {productName} 7 asadmin Utility Subcommands
+
+[[GSRFM443]][[sthref6]]
+
+
+[[glassfish-server-open-source-edition-5.0-asadmin-utility-subcommands]]
+== 1 {productName} 7 asadmin Utility Subcommands
+
+This section describes, in alphabetical order, the subcommands of the
+link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility.
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/manvol1m.adoc b/docs/reference-manual/src/main/asciidoc/manvol1m.adoc
new file mode 100644
index 0000000..04d616b
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/manvol1m.adoc
@@ -0,0 +1,18 @@
+type=page
+status=published
+title={productName} 7 Utility Commands
+next=appclient.html
+prev=version.html
+~~~~~~
+
+= {productName} 7 Utility Commands
+
+[[GSRFM803]][[sthref2356]]
+
+
+[[glassfish-server-open-source-edition-5.0-utility-commands]]
+== 2 {productName} 7 Utility Commands
+
+This section describes {productName} utility commands.
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/manvol5asc.adoc b/docs/reference-manual/src/main/asciidoc/manvol5asc.adoc
new file mode 100644
index 0000000..c8afd08
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/manvol5asc.adoc
@@ -0,0 +1,19 @@
+type=page
+status=published
+title={productName} 7 {productName} Concepts
+next=application.html
+prev=package-appclient.html
+~~~~~~
+
+= {productName} 7 {productName} Concepts
+
+[[GSRFM814]][[sthref2391]]
+
+
+[[glassfish-server-open-source-edition-5.0-glassfish-server-concepts]]
+== 3 {productName} 7 {productName} Concepts
+
+This section describes concepts that are related to {productName}
+administration.
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/migrate-timers.adoc b/docs/reference-manual/src/main/asciidoc/migrate-timers.adoc
new file mode 100644
index 0000000..ec3dede
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/migrate-timers.adoc
@@ -0,0 +1,97 @@
+type=page
+status=published
+title=migrate-timers
+next=monitor.html
+prev=login.html
+~~~~~~
+
+= migrate-timers
+
+[[migrate-timers-1]][[GSRFM00211]][[migrate-timers]]
+
+== migrate-timers
+
+Moves EJB timers when a clustered instance was stopped or has crashed
+
+[[sthref1882]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] migrate-timers [--help]
+[--target target_server_name]
+server_name
+----
+
+[[sthref1883]]
+
+=== Description
+
+The `migrate-timers` subcommand moves EJB timers to a specified server
+when a server instance stops or crashes, if automatic timer migration is
+not enabled in the cluster configuration. This subcommand is supported
+in remote mode only.
+
+[[sthref1884]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  This is the target server instance. If this option is not specified,
+  then DAS will find a server instance or multiple server instances. A
+  migration notification will be sent to the selected server instances.
+`--destination`::
+  This option is deprecated. It works exactly as the `--target` option
+  does.
+
+[[sthref1885]]
+
+=== Operands
+
+server_name::
+  This is the server instance on which the timers are currently located.
+  This server instance should not be running during the migration
+  process.
+
+[[sthref1886]]
+
+=== Examples
+
+[[GSRFM722]][[sthref1887]]
+
+==== Example 1   Migrating Timers
+
+This example shows how to migrate timers from the server named
+`instance1` to a server named `instance2`.
+
+[source]
+----
+asadmin>migrate-timers --target instance2 instance1
+This command was successfully executed.
+----
+
+[[sthref1888]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1889]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:list-timers.html#list-timers-1[`list-timers`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/monitor.adoc b/docs/reference-manual/src/main/asciidoc/monitor.adoc
new file mode 100644
index 0000000..00810fc
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/monitor.adoc
@@ -0,0 +1,274 @@
+type=page
+status=published
+title=monitor
+next=multimode.html
+prev=migrate-timers.html
+~~~~~~
+
+= monitor
+
+The script content on this page is for navigation purposes only and does
+not alter the content in any way.
+
+[[monitor-1]][[GSRFM00212]][[monitor]]
+
+== monitor
+
+Displays monitoring data for commonly used components and services
+
+[[sthref1890]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] monitor [--help]
+--type type
+[--filename filename]
+[--interval interval]
+[--filter filter]
+instance-name
+----
+
+[[sthref1891]]
+
+=== Description
+
+The `monitor` subcommand displays statistics for commonly monitored
+{productName} components and services. The `--type` option must be
+used to specify the object for which statistics are to be displayed.
+Data is displayed continuously in a tabular form, or the data can be
+displayed at a particular time interval by using the `--interval` option.
+
+Before a given component or service can be monitored, monitoring must be
+enabled (set to HIGH or LOW) for the component or service by using the
+Administration Console, the enable-monitoring subcommand, or the set subcommand.
+
+The monitor subcommand has options for filtering the results and
+capturing the output in a Comma Separated Values (CSV) file. The output
+appears in a table format. To view the legend of the table header, type `h`.
+
+This subcommand is supported in local mode only.
+
+[[sthref1892]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--type`::
+  The component or service to monitor. This option is required. No
+  default value is defined.
+
+  `httplistener`;;
+    For this type, the attribute
+    `server.monitoring-service.module-monitoring-levels.http-service`
+    must be set to LOW or HIGH. +
+    Displays the following statistics for the HTTP listener service:
++
+--
+    `ec`::
+      The total number errors in the processing of HTTP requests.
+    `mt`::
+      The longest response time (in milliseconds) for the processing of
+      a single HTTP request.
+    `pt`::
+      The total amount of time (in milliseconds) that the HTTP listener
+      service has spent in processing HTTP requests.
+    `rc`::
+      The total number of requests that the HTTP listener service has
+      processed.
+--
+  `jvm`;;
+    For this type, the attribute
+    `server.server-config.monitoring-service.module-monitoring-levels.jvm`
+    must be set to LOW or HIGH. +
+    Displays the following statistics for the Virtual Machine for the
+    Java platform (Java Virtual Machine or JVM machine):link:#sthref1893[^Footnote 1^]
++
+--
+    `UpTime`::
+      The number of milliseconds that the JVM machine has been running
+      since it was last started.
+    `min`::
+      The initial amount of memory (in bytes) that the JVM machine
+      requests from the operating system for memory management during
+      startup.
+    `max`::
+      The maximum amount of memory that can be used for memory
+      management.
+    `low`::
+      Retained for compatibility with other releases.
+    `high`::
+      Retained for compatibility with other releases.
+    `count`::
+      The amount of memory (in bytes) that is guaranteed to be available
+      for use by the JVM machine.
+--
+  `webmodule`;;
+    For this type, the attribute
+    `server.server-config.monitoring-service.module-monitoring-levels.web-container`
+    must be set to LOW or HIGH. +
+    Displays the following statistics for all deployed web modules:
++
+--
+    `asc`::
+      The number of currently active sessions.
+    `ast`::
+      The total number of sessions that are currently active or have
+      been active previously.
+    `rst`::
+      The total number of rejected sessions.
+    `st`::
+      The total number of sessions that have been created.
+    `ajlc`::
+      The number of currently active JavaServer Pages ( JSP) technology
+      pages that are loaded.
+    `mjlc`::
+      The maximum number of JSP technology pages that were active at any
+      time simultaneously.
+    `tjlc`::
+      Total number of JSP technology pages that have been loaded.
+    `aslc`::
+      The number of currently active Java servlets that are loaded.
+    `mslc`::
+      The maximum number of Java servlets that were active at any time
+      simultaneously.
+    `tslc`::
+      The total number of Java servlets that have been loaded.
+--
+
+`--filename`::
+  Do not specify this option. This option is retained for compatibility
+  with earlier releases. If you specify this option, a syntax error does
+  not occur. Instead, the subcommand runs successfully and displays a
+  warning message that the option is ignored.
+`--interval`::
+  The interval in seconds before capturing monitoring attributes. The
+  interval must be greater than 0. The monitoring attributes are
+  displayed on `stdout` until you type Control-C or `q`. The default
+  value is 30.
+`--filter`::
+  Do not specify this option. This option is retained for compatibility
+  with earlier releases. If you specify this option, a syntax error does
+  not occur. Instead, the subcommand runs successfully and displays a
+  warning message that the option is ignored.
+
+[[sthref1894]]
+
+=== Operands
+
+instance-name::
+  The server instance for which to view monitoring data. The default
+  value is `server`.
+
+[[sthref1895]]
+
+=== Examples
+
+[[GSRFM723]][[sthref1896]]
+
+==== Example 1   Displaying Monitoring Statistics by Interval
+
+This example displays monitoring data for the JVM machine every 2000
+seconds.
+
+[source]
+----
+asadmin> monitor --type=jvm --interval 2000 server
+                               JVM Monitoring
+UpTime(ms)                          Heap and NonHeap Memory(bytes)
+current                   min        max        low        high       count
+957843                    29523968   188284928  0          0          60370944
+
+q
+Command monitor executed successfully.
+----
+
+[[GSRFM724]][[sthref1897]]
+
+==== Example 2   Filtering the Monitoring Data
+
+This example uses the filter option to show `http-listener-1`
+statistics.
+
+[source]
+----
+asadmin> monitor --type httplistener --filter http-listener-1 server
+
+                   HTTP Listener Monitoring: http-listener-1
+br   bs   c200 c2xx c302 c304 c3xx c400 c401 c403 c404 c4xx c503 c5xx coc  co
+ctc  ctb  ec   moc  mst  mt   mtm  mst  pt   rc
+0    0    0    0    0    3    3    0    0    0    0    0    0    0    0    0
+2    0    0    1    20   20   2    2    6    3
+----
+
+To see the legend for the table headings, type `h`.
+
+[source]
+----
+******************************************************************************************
+* br   = Cumulative value of the Bytes received by each of the Request Processors        *
+* bs   = Cumulative value of the Bytes sent by each of the Request Processors            *
+* c200 = Number of responses with a status code equal to 200                             *
+* c2xx = Number of responses with a status code in the 2xx range                         *
+* c302 = Number of responses with a status code equal to 302                             *
+* c304 = Number of responses with a status code equal to 304                             *
+* c3xx = Number of responses with a status code in the 3xx range                         *
+* c400 = Number of responses with a status code equal to 400                             *
+* c401 = Number of responses with a status code equal to 401                             *
+* c403 = Number of responses with a status code equal to 403                             *
+* c404 = Number of responses with a status code equal to 404                             *
+* c4xx = Number of responses with a status code equal to 4xx                             *
+* c504 = Number of responses with a status code equal to 504                             *
+* c5xx = Number of responses with a status code equal to 5xx                             *
+* coc  = Number of open connections                                                      *
+* co   = Number of responses with a status code outside the 2xx, 3xx, 4xx, and 5xx range *
+* ctc  = Number of request processing threads currently in the listener thread pool      *
+* ctb  = Number of request processing threads currently in use in the listener thread    *
+*        pool serving requests                                                           *
+* ec   = Number of responses with a status code equal to 400                             *
+* moc  = Maximum number of open connections                                              *
+* mst  = Minimum number of request processing threads that will be created at listener   *
+*        startup time and maintained as spare threads above the current thread count     *
+* mt   = Maximum number of request processing threads that are created by the listener   *
+* mtm  = Provides the longest response time for a request - not a cumulative value, but  *
+*        the largest response time from among the response times                         *
+* pt   = Cumulative value of the times taken to process each request. The processing     *
+*        time is the average of request processing times over the request count          *
+* rc   = Cumulative number of the requests processed so far                              *
+******************************************************************************************
+----
+
+[[sthref1898]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1899]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:enable-monitoring.html#enable-monitoring-1[`enable-monitoring`(1)],
+link:disable-monitoring.html#disable-monitoring-1[`disable-monitoring`(1)],
+link:set.html#set-1[`set`(1)]
+
+link:monitoring.html#monitoring-5asc[`monitoring`(5ASC)]
+
+"link:administration-guide/monitoring.html#GSADG00011[Administering the Monitoring Service]" in {productName} Administration Guide
+
+'''''
+
+=== Footnote Legend
+[[sthref1893]]
+Footnote 1: The terms "Java Virtual Machine" and "JVM" mean a Virtual Machine for the Java platform.
diff --git a/docs/reference-manual/src/main/asciidoc/monitoring.adoc b/docs/reference-manual/src/main/asciidoc/monitoring.adoc
new file mode 100644
index 0000000..fe1c929
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/monitoring.adoc
@@ -0,0 +1,73 @@
+type=page
+status=published
+title=monitoring
+next=passwords.html
+prev=logging.html
+~~~~~~
+
+= monitoring
+
+[[monitoring-5asc]][[GSRFM00271]][[monitoring]]
+
+== monitoring
+
+Reviewing the runtime state of components and services deployed in {productName}
+
+[[sthref2406]]
+
+=== Description
+
+Monitoring is the process of reviewing the statistics of a system to
+improve performance or solve problems. By monitoring the state of
+various components and services deployed in {productName},
+performance bottlenecks can be identified, failures can be anticipated,
+and runtime standards can be established and observed. Data gathered by
+monitoring can also be useful in performance tuning and capacity
+planning.
+
+The {productName} monitoring service is enabled by default, that is,
+the `monitoring-enabled` attribute of the `monitoring-service` element
+is set to true. Once the monitoring service is enabled, a deployed
+module can then be enabled for monitoring by setting its monitoring
+level to HIGH or LOW (default is OFF). Monitoring can be configured
+dynamically by using the Administration Console or the
+`enable-monitoring` and the `disable-monitoring` subcommands. The `set`
+subcommand can also be used with dotted names to enable or disable
+monitoring. However, a server restart is required for changes made by
+using the `set` subcommand to take affect.
+
+Monitoring data can be viewed by using the Administration Console or by
+using the subcommands of the `asadmin` utility.
+
+* The `monitor` subcommand displays monitoring data for a given type,
+similar to the UNIX `top` command. The data is presented at given
+intervals.
+* The `list` and `get` subcommands display comprehensive data. Both use
+dotted names to specify monitorable objects.
+
+Alternate tools for monitoring {productName} components and services
+include JConsole and the REST interface.
+
+The Monitoring Scripting Client or DTrace Monitoring can be used to
+start the available monitoring probes. Using these tools is helpful in
+identifying performance issues during runtime. Monitoring Scripting
+Client or DTrace Monitoring are only usable if their modules are
+present.
+
+[[sthref2407]]
+
+=== See Also
+
+link:monitor.html#monitor-1[`monitor`(1)],
+link:enable-monitoring.html#enable-monitoring-1[`enable-monitoring`(1)],
+link:disable-monitoring.html#disable-monitoring-1[`disable-monitoring`(1)],
+link:list.html#list-1[`list`(1)], link:get.html#get-1[`get`(1)],
+link:set.html#set-1[`set`(1)]
+
+link:dotted-names.html#dotted-names-5asc[`dotted-names`(5ASC)]
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+"link:administration-guide/monitoring.html#GSADG00011[Administering the Monitoring Service]" in {productName} Administration Guide
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/multimode.adoc b/docs/reference-manual/src/main/asciidoc/multimode.adoc
new file mode 100644
index 0000000..5adf377
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/multimode.adoc
@@ -0,0 +1,129 @@
+type=page
+status=published
+title=multimode
+next=osgi.html
+prev=monitor.html
+~~~~~~
+
+= multimode
+
+[[multimode-1]][[GSRFM00213]][[multimode]]
+
+== multimode
+
+Allows multiple subcommands to be run while preserving environment
+settings and remaining in the asadmin utility
+
+[[sthref1900]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] multimode [--help]
+[--file filename]
+[--printprompt={true|false}] [--encoding encode]
+----
+
+[[sthref1901]]
+
+=== Description
+
+The `multimode` subcommand processes `asadmin` subcommands sequentially
+in a single session. The command-line interface prompts for a
+subcommand, runs that subcommand, displays the results of that
+subcommand, and then prompts for the next subcommand. All the `asadmin`
+options set in multimode apply to subsequent commands until the
+multimode session is exited. You exit `multimode` by typing `exit`,
+`quit`, or Ctrl-D.
+
+You can use the `export` subcommand to set your environment, or use the
+`unset` subcommand to remove environment variables from the multimode
+environment.
+
+You can also provide subcommands by passing a previously prepared list
+of subcommands from a file or standard input (pipe). When you use a
+file, you can include comment lines in the file by entering the hash
+symbol (`#`) as the first character of the line.
+
+You can invoke `multimode` from within a multimode session. When you
+exit the second multimode environment, you return to your original
+multimode environment.
+
+All the remote `asadmin` utility options can be supplied when invoking
+the `multimode` subcommand. The settings will apply as defaults for all
+subcommands that are run within the multimode session. For a list of the
+`asadmin` utility options, see the
+link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+
+[[sthref1902]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--file`::
+`-f`::
+  Reads the subcommands in the specified file.
+`--printprompt`::
+  Controls printing of the `asadmin` prompt. By default, this option is
+  set to the same value as the `--interactive` `asadmin` utility option.
+  Normally you will not need to specify this option. Default is true.
+`--encoding`::
+  Specifies the character set for the file to be decoded. By default,
+  the system character set is used.
+
+[[sthref1903]]
+
+=== Examples
+
+[[GSRFM725]][[sthref1904]]
+
+==== Example 1   Starting a Multimode Session
+
+This example starts a multimode session where: `%` is the system prompt.
+
+[source]
+----
+% asadmin multimode
+asadmin>
+----
+
+You can also start a multimode session by typing `asadmin` without
+options or subcommands at the system prompt.
+
+[[GSRFM726]][[sthref1905]]
+
+==== Example 2   Running Multiple Commands From a File
+
+This example runs a sequence of subcommands from the `commands_file.txt`
+file.
+
+[source]
+----
+% asadmin multimode --file commands_file.txt
+----
+
+[[sthref1906]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1907]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:export.html#export-1[`export`(1)],
+link:unset.html#unset-1[`unset`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/osgi-shell.adoc b/docs/reference-manual/src/main/asciidoc/osgi-shell.adoc
new file mode 100644
index 0000000..b6d548e
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/osgi-shell.adoc
@@ -0,0 +1,152 @@
+type=page
+status=published
+title=osgi-shell
+next=ping-connection-pool.html
+prev=osgi.html
+~~~~~~
+
+= osgi-shell
+
+[[osgi-shell-1]][[GSRFM890]][[osgi-shell]]
+
+== osgi-shell
+
+Provides interactive access to the Apache Felix Gogo remote shell for
+the execution of OSGi shell commands
+
+[[sthref1918]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] osgi-shell [--help]
+[--file file]
+[--printprompt={false|true}]
+[--encoding encoding]
+----
+
+[[sthref1919]]
+
+=== Description
+
+The `osgi-shell` subcommand provides interactive access to the Apache
+Felix Gogo remote shell for the execution of OSGi shell commands. The
+remote shell is provided with {productName} and used to administer
+and inspect the OSGi runtime.
+
+OSGi shell commands are executed on the server and results are printed
+on the client. Because the shell is interactive, no operands are
+accepted. Scripting is supported, which means that multiple commands can
+be executed in sequence from a text file.
+
+A related subcommand is the `osgi` subcommand, which passes a single
+command to the remote shell for execution. Results are returned by the
+`asadmin` utility. For more information about the `osgi` subcommand, see
+the link:osgi.html#osgi-1[`osgi`(1)] help page.
+
+This subcommand is supported in local mode only. Unlike other local
+subcommands, however, the domain administration server (DAS) and the
+server instance whose shell is being accessed must be running.
+
+[[sthref1920]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--file`::
+`-f`::
+  Reads the commands in the specified file.
+`--printprompt`::
+  Controls printing of the shell prompt. The default value is `true`,
+  which means the shell prompt is displayed.
+`--encoding`::
+  Specifies the character set for the file to be decoded. By default,
+  the system character set is used.
+
+[[sthref1921]]
+
+=== Examples
+
+[[GSRFM891]][[sthref1922]]
+
+==== Example 1   Listing Apache Felix Gogo Remote Shell Commands
+
+This example lists Apache Felix Gogo remote shell commands.
+
+Some lines of output are omitted from this example for readability.
+
+[source]
+----
+asadmin> osgi-shell
+Use "exit" to exit and "help" for online help.
+gogo$ help
+felix:bundlelevel
+felix:cd
+felix:frameworklevel
+felix:headers
+felix:help
+felix:inspect
+felix:install
+felix:lb
+felix:log
+felix:ls
+...
+gogo:cat
+gogo:each
+gogo:echo
+gogo:format
+gogo:getopt
+gogo:gosh
+gogo:grep
+...
+gogo$
+----
+
+[[GSRFM892]][[sthref1923]]
+
+==== Example 2   Running a Remote Shell Command
+
+This example runs the Felix Remote Shell Command `lb` without any
+arguments to list all installed OSGi bundles.
+
+Some lines of output are omitted from this example for readability.
+
+[source]
+----
+asadmin> osgi-shell
+Use "exit" to exit and "help" for online help.
+gogo$ lb
+START LEVEL 2
+ID|State      |Level|Name
+ 0|Active     |    0|System Bundle
+ 1|Active     |    1|Metro Web Services API OSGi Bundle
+ 2|Active     |    1|jakarta.annotation API
+ 3|Active     |    1|jaxb-api
+...
+gogo$
+----
+
+[[sthref1924]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1925]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:osgi.html#osgi-1[`osgi`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/osgi.adoc b/docs/reference-manual/src/main/asciidoc/osgi.adoc
new file mode 100644
index 0000000..816707a
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/osgi.adoc
@@ -0,0 +1,197 @@
+type=page
+status=published
+title=osgi
+next=osgi-shell.html
+prev=multimode.html
+~~~~~~
+
+= osgi
+
+[[osgi-1]][[GSRFM877]][[osgi]]
+
+== osgi
+
+Delegates the command line to the Apache Felix Gogo remote shell for the
+execution of OSGi shell commands
+
+[[sthref1908]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] osgi [--help]
+[--session session]
+[--session-id session-id]
+[--instance instance]
+[command_line]
+----
+
+[[sthref1909]]
+
+=== Description
+
+The `osgi` subcommand delegates the command line to the Apache Felix
+Gogo remote shell for the execution of OSGi shell commands. Commands are
+executed by the remote shell and results are returned by the `asadmin`
+utility. The remote shell is provided with {productName} and used to
+administer and inspect the OSGi runtime.
+
+Multiple command-line sessions can be created. Use the `--session` and
+`--session-id` options to run commands in a specific command-line
+session. If no session is specified, a new session is created to run
+commands and closed when execution completes.
+
+A related subcommand is the `osgi-shell` subcommand, which enables you
+to run multiple commands from a file or run commands interactively. For
+more information about the `osgi-shell` subcommand, see the
+link:osgi-shell.html#osgi-shell-1[`osgi-shell`(1)] help page.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1910]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the `osgi` subcommand.
+`--session`::
+  Performs command-line session operations. Valid values are:
+
+  `new`;;
+    Creates a new session and returns a session ID.
+  `stop`;;
+    Stops the session with the specified session ID.
+  `list`;;
+    Lists all active sessions.
+  `execute`;;
+    Runs a command in the session with the specified session ID.
+
+`--session-id`::
+  Specifies the session ID for command-line session operations.
+`--instance`::
+  Specifies the server instance to which the command is being delegated. +
+  The default is the domain administration server (DAS). The DAS must be
+  running to run a command on another instance.
+
+[[sthref1911]]
+
+=== Operands
+
+command_line::
+  The complete command-line syntax as provided for commands in the
+  Apache Felix Gogo remote shell.
+
+[[sthref1912]]
+
+=== Examples
+
+[[GSRFM888]][[sthref1913]]
+
+==== Example 1   Listing Apache Felix Gogo Remote Shell Commands
+
+This example lists the Apache Felix Gogo remote shell commands that can
+be used with the `osgi` subcommand.
+
+Some lines of output are omitted from this example for readability.
+
+[source]
+----
+asadmin> osgi help
+felix:bundlelevel
+felix:cd
+felix:frameworklevel
+felix:headers
+felix:help
+felix:inspect
+felix:install
+felix:lb
+felix:log
+felix:ls
+felix:refresh
+felix:resolve
+...
+gogo:cat
+gogo:each
+gogo:echo
+gogo:format
+gogo:getopt
+gogo:gosh
+gogo:grep
+...
+Command osgi executed successfully.
+----
+
+[[GSRFM878]][[sthref1914]]
+
+==== Example 2   Running a Remote Shell Command
+
+This example runs the Felix Remote Shell Command `lb` without any
+arguments to list all installed OSGi bundles.
+
+Some lines of output are omitted from this example for readability.
+
+[source]
+----
+asadmin> osgi lb
+START LEVEL 2
+ID|State      |Level|Name
+ 0|Active     |    0|System Bundle
+ 1|Active     |    1|Metro Web Services API OSGi Bundle
+ 2|Active     |    1|jakarta.annotation API
+ 3|Active     |    1|jaxb-api
+...
+Command osgi executed successfully.
+----
+
+[[GSRFM889]][[sthref1915]]
+
+==== Example 3   Running Commands That Create and Target a Specific Command-Line Session
+
+This example runs commands that create and target a specific
+command-line session.
+
+Some lines of output are omitted from this example for readability.
+
+[source]
+----
+asadmin> osgi --session new
+9537e570-0def-4f2e-9c19-bc8f51a8082f
+...
+asadmin> osgi --session list
+9537e570-0def-4f2e-9c19-bc8f51a8082f
+...
+asadmin> osgi --session execute --session-id 9537e570-0def-4f2e-9c19-bc8f51a8082f lb
+START LEVEL 2
+ID|State      |Level|Name
+ 0|Active     |    0|System Bundle
+ 1|Active     |    1|Metro Web Services API OSGi Bundle
+ 2|Active     |    1|jakarta.annotation API
+ 3|Active     |    1|jaxb-api
+...
+asadmin> osgi --session stop --session-id 9537e570-0def-4f2e-9c19-bc8f51a8082f
+Command osgi executed successfully.
+----
+
+[[sthref1916]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1917]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:osgi-shell.html#osgi-shell-1[`osgi-shell`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/package-appclient.adoc b/docs/reference-manual/src/main/asciidoc/package-appclient.adoc
new file mode 100644
index 0000000..630f74e
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/package-appclient.adoc
@@ -0,0 +1,88 @@
+type=page
+status=published
+title=package-appclient
+next=manvol5asc.html
+prev=capture-schema.html
+~~~~~~
+
+= package-appclient
+
+[[package-appclient-1m]][[GSRFM00264]][[package-appclient]]
+
+== package-appclient
+
+Packs the application client container libraries and jar files
+
+[[sthref2387]]
+
+=== Synopsis
+
+[source]
+----
+package-appclient
+----
+
+[[sthref2388]]
+
+=== Description
+
+Use the `package-appclient` command to pack the application client
+container libraries and jar files into an `appclient.jar` file, which is
+created in the as-install``/lib`` directory on the machine on which
+{productName} is installed. The `appclient.jar` file provides an
+application client container package targeted at remote hosts that do
+not contain a server installation.
+
+After copying the `appclient.jar` file to a remote location, unjar or
+unzip it to get a set of libraries and jar files in the `appclient`
+directory under the current directory.
+
+After unjarring on the client machine, modify
+`appclient/glassfish/config/asenv.conf` (`asenv.bat` for Windows) as follows:
+
+* set `AS_WEBSERVICES_LIB` to path-to-appclient`/appclient/lib`
+* set `AS_IMQ_LIB` to path-to-appclient`/appclient/mq/lib`
+* set `AS_INSTALL` to path-to-appclient``/appclient``
+* set `AS_JAVA` to your JDK 7 or JRE 7 home directory
+* set `AS_ACC_CONFIG` to
+path-to-appclient``/appclient/glassfish/domains/domain1/config/sun-acc.xml``
+
+Modify `appclient/glassfish/domains/domain1/config/sun-acc.xml` as follows:
+
+* Ensure the `DOCTYPE` file references
+  path-to-appclient``/appclient/glassfish/lib/dtds``
+* Ensure that `target-server` address attribute references the server machine.
+* Ensure that `target-server` port attribute references the ORB port on
+  the remote machine.
+* Ensure that `log-service` references a log file; if the user wants to
+  put log messages to a log file.
+
+To use the newly installed application client container, you must do the
+following:
+
+* Obtain the application client files for your target application,
+  including the generated yourAppClient.jar file.
+* Execute the `appclient` utility: ``appclient -``client yourAppClient.jar
+
+[[sthref2389]]
+
+=== Attributes
+
+See
+http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN5attributes-5[`attributes`(5)]
+for descriptions of the following attributes:
+
+[width="100%",cols="50%,50%",options="header",]
+|===
+|ATTRIBUTE TYPE |ATTRIBUTE VALUE
+|Interface Stability |Unstable
+|===
+
+
+[[sthref2390]]
+
+=== See Also
+
+link:appclient.html#appclient-1m[`appclient`(1M)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/passwords.adoc b/docs/reference-manual/src/main/asciidoc/passwords.adoc
new file mode 100644
index 0000000..8613979
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/passwords.adoc
@@ -0,0 +1,38 @@
+type=page
+status=published
+title=passwords
+next=resource.html
+prev=monitoring.html
+~~~~~~
+
+= passwords
+
+[[passwords-5asc]][[GSRFM00272]][[passwords]]
+
+== passwords
+
+Securing and managing {productName}
+
+[[sthref2408]]
+
+=== Description
+
+An administrator of {productName} manages one or more domains, each
+of which can have distinct administrative credentials. By managing a
+domain, an administrator effectively manages various resources like
+server instances, server clusters, libraries etc. that are required by
+the enterprise Java applications.
+
+[[sthref2409]]
+
+=== See Also
+
+link:change-admin-password.html#change-admin-password-1[`change-admin-password`(1)],
+link:change-master-password.html#change-master-password-1[`change-master-password`(1)],
+link:create-password-alias.html#create-password-alias-1[`create-password-alias`(1)],
+link:list-password-aliases.html#list-password-aliases-1[`list-password-aliases`(1)],
+link:delete-password-alias.html#delete-password-alias-1[`delete-password-alias`(1)]
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/ping-connection-pool.adoc b/docs/reference-manual/src/main/asciidoc/ping-connection-pool.adoc
new file mode 100644
index 0000000..6dae88b
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/ping-connection-pool.adoc
@@ -0,0 +1,123 @@
+type=page
+status=published
+title=ping-connection-pool
+next=ping-node-dcom.html
+prev=osgi-shell.html
+~~~~~~
+
+= ping-connection-pool
+
+[[ping-connection-pool-1]][[GSRFM00214]][[ping-connection-pool]]
+
+== ping-connection-pool
+
+Tests if a connection pool is usable
+
+[[sthref1926]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] ping-connection-pool [--help]
+pool_name
+[--appname application [--modulename module]
+----
+
+[[sthref1927]]
+
+=== Description
+
+The `ping-connection-pool` subcommand tests if an existing JDBC or
+connector connection pool is usable . For example, if you create a new
+JDBC connection pool for an application that is expected to be deployed
+later, the JDBC pool is tested with this subcommand before deploying the
+application.
+
+Before testing availability of a connection pool, you must create the
+connection pool with authentication and ensure that the server or
+database is started.
+
+This subcommand is supported in remote mode only.
+
+Application Scoped Resources
+
+The `ping-connection-pool` subcommand can target resources that are
+scoped to a specific application or module, as defined in the
+`glassfish-resources.xml` for the GlassFish domain.
+
+* To reference the `jndi-name` for an application scoped resource,
+perform the lookup using the `java:app` prefix.
+* To reference the `jndi-name` for a module scoped resource, perform the
+lookup using the `java:module` prefix.
+
+The `jndi-name` for application-scoped-resources or
+module-scoped-resources are specified using the format
+``java:app/``jdbc/myDataSource or
+``java:module/``jdbc/myModuleLevelDataSource.
+This naming scope is defined in the Jakarta EE 6 Specification
+(`http://download.oracle.com/javaee/6/api/`).
+
+[[sthref1928]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--appname`::
+  Name of the application in which the application scoped resource is
+  defined.
+`--modulename`::
+  Name of the module in which the module scoped resource is defined.
+
+[[sthref1929]]
+
+=== Operands
+
+pool_name::
+  Name of the connection pool to be reinitialized.
+
+[[sthref1930]]
+
+=== Examples
+
+[[GSRFM727]][[sthref1931]]
+
+==== Example 1   Contacting a Connection Pool
+
+This example tests to see if the connection pool named `DerbyPool` is
+usable.
+
+[source]
+----
+asadmin> ping-connection-pool DerbyPool
+Command ping-connection-pool executed successfully
+----
+
+[[sthref1932]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1933]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-connector-connection-pool.html#create-connector-connection-pool-1[`create-connector-connection-pool`(1)],
+link:create-jdbc-connection-pool.html#create-jdbc-connection-pool-1[`create-jdbc-connection-pool`(1)],
+link:delete-connector-connection-pool.html#delete-connector-connection-pool-1[`delete-connector-connection-pool`(1)],
+link:delete-jdbc-connection-pool.html#delete-jdbc-connection-pool-1[`delete-jdbc-connection-pool`(1)],
+link:list-connector-connection-pools.html#list-connector-connection-pools-1[`list-connector-connection-pools`(1)],
+link:list-jdbc-connection-pools.html#list-jdbc-connection-pools-1[`list-jdbc-connection-pools`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/ping-node-dcom.adoc b/docs/reference-manual/src/main/asciidoc/ping-node-dcom.adoc
new file mode 100644
index 0000000..ce1f1fd
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/ping-node-dcom.adoc
@@ -0,0 +1,150 @@
+type=page
+status=published
+title=ping-node-dcom
+next=ping-node-ssh.html
+prev=ping-connection-pool.html
+~~~~~~
+
+= ping-node-dcom
+
+[[ping-node-dcom-1]][[GSRFM728]][[ping-node-dcom]]
+
+== ping-node-dcom
+
+Tests if a node that is enabled for communication over DCOM is usable
+
+[[sthref1934]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] ping-node-dcom [--help]
+[--validate={false|true}] node-name
+----
+
+[[sthref1935]]
+
+=== Description
+
+The `ping-node-dcom` subcommand tests if a node that is enabled for
+communication over the Distributed Component Object Model (DCOM) remote
+protocol is usable. The DCOM protocol is available only on Windows
+systems. This subcommand requires DCOM to be configured on the machine
+where the domain administration server (DAS) is running and on the
+machine where the node resides. You may run this command from any
+machine that can contact the DAS.
+
+If the node is usable, the subcommand displays a confirmation that the
+subcommand could connect to the node through DCOM. This confirmation
+includes the name of the host that the node represents.
+
+Optionally, the subcommand can also validate the node to determine if
+the link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility can run on the
+host that the node represents. To validate a node, the subcommand runs
+the link:version.html#version-1[`version`(1)] subcommand. If the node is
+valid, the subcommand displays the version that the `version` subcommand
+returns.
+
+The node that is specified as the operand of this subcommand must be
+enabled for communication over DCOM. If the node is not enabled for
+communication over DCOM, an error occurs. To determine whether a node is
+enabled for communication over DCOM, use the
+link:list-nodes.html#list-nodes-1[`list-nodes`(1)] subcommand.
+
+
+[NOTE]
+====
+To test whether a node that is enabled for communication over secure
+shell (SSH) is usable, use the
+link:ping-node-ssh.html#ping-node-ssh-1[`ping-node-ssh`(1)] subcommand.
+====
+
+
+This subcommand is supported in remote mode only.
+
+[[sthref1936]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--validate`::
+  Specifies whether the subcommand validates the node.
+  Possible values are as follows:
+
+  `true`;;
+    The node is validated.
+  `false`;;
+    The node is not validated (default).
+
+[[sthref1937]]
+
+=== Operands
+
+node-name::
+  The name of the node to test. The node must be enabled for
+  communication over DCOM. Otherwise, an error occurs.
+
+[[sthref1938]]
+
+=== Examples
+
+[[GSRFM729]][[sthref1939]]
+
+==== Example 1   Testing if a DCOM-Enabled Node Is Usable
+
+This example tests if the DCOM-enabled node `wpmd2` is usable.
+
+[source]
+----
+asadmin> ping-node-dcom wpmdl2
+Successfully made DCOM connection to node wpmdl2 (wpmdl2.example.com)
+Command ping-node-dcom executed successfully.
+----
+
+[[GSRFM730]][[sthref1940]]
+
+==== Example 2   Validating a DCOM-Enabled Node
+
+This example validates the DCOM-enabled node `adc-node`.
+
+[source]
+----
+asadmin> ping-node-dcom --validate=true adc-node
+Successfully made DCOM connection to node adc-node (adc-node.example.com)
+GlassFish version found at C:\glassfish7:
+Using locally retrieved version string from version class.
+Version = Eclipse GlassFish 7.0.0 (build 18)
+Command version executed successfully.
+Command ping-node-dcom executed successfully.
+----
+
+[[sthref1941]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1942]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
+link:delete-node-dcom.html#delete-node-dcom-1[`delete-node-dcom`(1)],
+link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
+link:ping-node-ssh.html#ping-node-ssh-1[`ping-node-ssh`(1)],
+link:update-node-ssh.html#update-node-dcom-1[`update-node-dcom`(1)],
+link:validate-dcom.html#validate-dcom-1[`validate-dcom`(1)],
+link:version.html#version-1[`version`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/ping-node-ssh.adoc b/docs/reference-manual/src/main/asciidoc/ping-node-ssh.adoc
new file mode 100644
index 0000000..7685efb
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/ping-node-ssh.adoc
@@ -0,0 +1,148 @@
+type=page
+status=published
+title=ping-node-ssh
+next=recover-transactions.html
+prev=ping-node-dcom.html
+~~~~~~
+
+= ping-node-ssh
+
+[[ping-node-ssh-1]][[GSRFM00215]][[ping-node-ssh]]
+
+== ping-node-ssh
+
+Tests if a node that is enabled for communication over SSH is usable
+
+[[sthref1943]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] ping-node-ssh [--help]
+[--validate={false|true}] node-name
+----
+
+[[sthref1944]]
+
+=== Description
+
+The `ping-node-ssh` subcommand tests if a node that is enabled for
+communication over secure shell (SSH) is usable. This subcommand
+requires secure shell (SSH) to be configured on the machine where the
+domain administration server (DAS) is running and on the machine where
+the node resides. You may run this command from any machine that can
+contact the DAS.
+
+If the node is usable, the subcommand displays a confirmation that the
+subcommand could connect to the node through SSH. This confirmation
+includes the name of the host that the node represents.
+
+Optionally, the subcommand can also validate the node to determine if
+the link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility can run on the
+host that the node represents. To validate a node, the subcommand runs
+the link:version.html#version-1[`version`(1)] subcommand. If the node is
+valid, the subcommand displays the version that the `version` subcommand
+returns.
+
+The node that is specified as the operand of this subcommand must be
+enabled for communication over SSH. If the node is not enabled for
+communication over SSH, an error occurs. To determine whether a node is
+enabled for communication over SSH, use the
+link:list-nodes.html#list-nodes-1[`list-nodes`(1)] subcommand.
+
+[NOTE]
+====
+To test whether a node that is enabled for communication over the
+Distributed Component Object Model (DCOM) remote protocol is usable, use
+the link:ping-node-dcom.html#ping-node-dcom-1[`ping-node-dcom`(1)]
+subcommand.
+====
+
+This subcommand is supported in remote mode only.
+
+[[sthref1945]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--validate`::
+  Specifies whether the subcommand validates the node.
+  Possible values are as follows:
+
+  `true`;;
+    The node is validated.
+  `false`;;
+    The node is not validated (default).
+
+[[sthref1946]]
+
+=== Operands
+
+node-name::
+  The name of the node to test. The node must be enabled for
+  communication over SSH. Otherwise, an error occurs.
+
+[[sthref1947]]
+
+=== Examples
+
+[[GSRFM731]][[sthref1948]]
+
+==== Example 1   Testing if an SSH-Enabled Node Is Usable
+
+This example tests if the SSH-enabled node `sj03-node` is usable.
+
+[source]
+----
+asadmin> ping-node-ssh sj03-node
+Successfully made SSH connection to node sj03-node (sj03.example.com)
+Command ping-node-ssh executed successfully.
+----
+
+[[GSRFM732]][[sthref1949]]
+
+==== Example 2   Validating an SSH-Enabled Node
+
+This example validates the SSH-enabled node `adc-node`.
+
+[source]
+----
+asadmin> ping-node-ssh --validate=true adc-node
+Successfully made SSH connection to node adcnode (adc.example.com)
+GlassFish version found at /export/glassfish7:
+Using locally retrieved version string from version class.
+Version = Eclipse GlassFish 7.0.0 (build 2021-12-10T19:08:14+0100)
+Command version executed successfully.
+Command ping-node-ssh executed successfully.
+----
+
+[[sthref1950]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1951]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-node-ssh.html#create-node-ssh-1[`create-node-ssh`(1)],
+link:delete-node-ssh.html#delete-node-ssh-1[`delete-node-ssh`(1)],
+link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
+link:ping-node-dcom.html#ping-node-dcom-1[`ping-node-dcom`(1)],
+link:setup-ssh.html#setup-ssh-1[`setup-ssh`(1)],
+link:update-node-ssh001.html#update-node-ssh-1[`update-node-ssh`(1)],
+link:version.html#version-1[`version`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/preface.adoc b/docs/reference-manual/src/main/asciidoc/preface.adoc
new file mode 100644
index 0000000..2da3a24
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/preface.adoc
@@ -0,0 +1,100 @@
+type=page
+status=published
+title=Preface
+next=manvol1.html
+prev=title.html
+~~~~~~
+
+= Preface
+
+[[GSRFM441]][[sthref2]]
+
+[[preface]]
+== Preface
+
+[NOTE]
+====
+This documentation is part of the Java Enterprise Edition contribution
+to the Eclipse Foundation and is not intended for use in relation to
+Java Enterprise Edition or Orace GlassFish. The documentation is in the
+process of being revised to reflect the new Jakarta EE branding.
+Additional changes will be made as requirements and procedures evolve
+for Jakarta EE. Where applicable, references to Jakarta EE or Java
+Enterprise Edition should be considered references to Jakarta EE.
+
+Please see the Title page for additional license information.
+====
+
+Both novice users and those familiar with {productName} can use online man pages to obtain information about the product
+and its features. A man page is intended to answer concisely the
+question "What does it do?" The man pages in general comprise a
+reference manual. They are not intended to be a tutorial.
+
+[[GSRFM442]][[sthref3]]
+
+
+[[overview]]
+=== Overview
+
+The following contains a brief description of each man page section and
+the information it references:
+
+* Section 1 describes, in alphabetical order, the `asadmin` utility subcommands.
+* Section 1M describes {productName} utility commands.
+* Section 5ASC describes concepts that are related to {productName} administration.
+
+Below is a generic format for man pages. The man pages of each manual
+section generally follow this order, but include only needed headings.
+For example, if there are no bugs to report, there is no Bugs section.
+
+Name::
+  This section gives the names of the commands or functions documented,
+  followed by a brief description of what they do.
+Synopsis::
+  This section shows the syntax of commands or functions.
+  The following special characters are used in this section:
+
+  [ ];;
+    Brackets. The option or argument enclosed in these brackets is
+    optional. If the brackets are omitted, the argument must be
+    specified.
+  |;;
+    Separator. Only one of the arguments separated by this character can
+    be specified at a time.
+
+Description::
+  This section defines the functionality and behavior of the service.
+  Thus it describes concisely what the command does. It does not discuss
+  options or cite examples.
+Options::
+  This section lists the command options with a concise summary of what
+  each option does. The options are listed literally and in the order
+  they appear in the Synopsis section. Possible arguments to options are
+  discussed under the option, and where appropriate, default values are
+  supplied.
+Operands::
+  This section lists the command operands and describes how they affect
+  the actions of the command.
+Examples::
+  This section provides examples of usage or of how to use a command or
+  function. Wherever possible a complete example including command-line
+  entry and machine response is shown. Examples are followed by
+  explanations, variable substitution rules, or returned values. Most
+  examples illustrate concepts from the Synopsis, Description, Options,
+  and Usage sections.
+Exit Status::
+  This section lists the values the command returns to the calling
+  program or shell and the conditions that cause these values to be
+  returned. Usually, zero is returned for successful completion, and
+  values other than zero for various error conditions.
+See Also::
+  This section lists references to other man pages, in-house
+  documentation, and outside publications.
+Notes::
+  This section lists additional information that does not belong
+  anywhere else on the page. It takes the form of an aside to the user,
+  covering points of special interest. Critical information is never
+  covered here.
+Bugs::
+  This section describes known bugs and, wherever possible, suggests workarounds.
+
diff --git a/docs/reference-manual/src/main/asciidoc/recover-transactions.adoc b/docs/reference-manual/src/main/asciidoc/recover-transactions.adoc
new file mode 100644
index 0000000..ea8ef64
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/recover-transactions.adoc
@@ -0,0 +1,142 @@
+type=page
+status=published
+title=recover-transactions
+next=redeploy.html
+prev=ping-node-ssh.html
+~~~~~~
+
+= recover-transactions
+
+[[recover-transactions-1]][[GSRFM00216]][[recover-transactions]]
+
+== recover-transactions
+
+Manually recovers pending transactions
+
+[[sthref1952]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] recover-transactions [--help]
+[--transactionlogdir transaction_log_dir]
+[--target target_server_name] server_name
+----
+
+[[sthref1953]]
+
+=== Description
+
+The `recover-transactions` subcommand manually recovers pending
+transactions.
+
+For an installation of multiple server instances, you can run the
+`recover-transactions` subcommand from a surviving server instance to
+recover transactions after a server failure. To use this subcommand in
+this way, the following conditions must be met:
+
+* Delegated transaction recovery is disabled.
+* Transaction logs are stored on a shared file system or in a database
+that is accessible to all server instances.
+
+For a stand-alone server, do not use this subcommand to recover
+transactions after a server failure. For a stand-alone server, the
+`recover-transactions` subcommand can recover transactions only when a
+resource fails, but the server is still running. If a stand-alone server
+fails, only the full startup recovery process can recover transactions
+that were pending when the server failed.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1954]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--transactionlogdir`::
+  The location of the transaction logs for a server for which
+  transaction recovery is requested. This option applies only if
+  transaction logs are stored on a shared file system.
+`--target`::
+  The target server that performs the recovery for the server that is
+  specified by the server_name operand. The target server should be
+  running.
+`--destination`::
+  This option is deprecated. It works exactly as the `--target` option
+  does.
+
+[[sthref1955]]
+
+=== Operands
+
+server_name::
+  For a stand-alone server, the value of this operand is typically
+  `server`. Transactions are recovered only if a resource fails, but the
+  server is still running.
+
++
+For an installation of multiple server instances, the value of this
+  operand is the name of the server for which the recovery is required.
+  The in-flight transactions on this server will be recovered. If this
+  server is running, recovery is performed by the same server. In this
+  situation, the `--transactionlogdir` and `--target` options should be
+  omitted. If the server is not running, the `--target` option is
+  required, and the `--transactionlogdir` option is also required if
+  transaction logs are stored on a shared file system.
+
+[[sthref1956]]
+
+=== Examples
+
+[[GSRFM733]][[sthref1957]]
+
+==== Example 1   Recovering transactions on a running server
+
+[source]
+----
+% asadmin recover-transactions server1
+Transaction recovered.
+----
+
+[[GSRFM734]][[sthref1958]]
+
+==== Example 2   Recovering transactions for a server that is not running
+
+[source]
+----
+% asadmin recover-transactions --transactionlogdir /logs/tx --target server1 server2
+Transaction recovered.
+----
+
+[[sthref1959]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1960]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:freeze-transaction-service.html#freeze-transaction-service-1[`freeze-transaction-service`(1)],
+link:rollback-transaction.html#rollback-transaction-1[`rollback-transaction`(1)],
+link:unfreeze-transaction-service.html#unfreeze-transaction-service-1[`unfreeze-transaction-service`(1)]
+
+"link:administration-guide/transactions.html#GSADG00022[Administering Transactions]"
+in {productName} Administration Guide
+
+"https://eclipse-ee4j.github.io/jakartaee-tutorial/#transactions[Transactions]"
+in The Jakarta EE Tutorial
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/redeploy.adoc b/docs/reference-manual/src/main/asciidoc/redeploy.adoc
new file mode 100644
index 0000000..8e3f32b
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/redeploy.adoc
@@ -0,0 +1,466 @@
+type=page
+status=published
+title=redeploy
+next=remove-library.html
+prev=recover-transactions.html
+~~~~~~
+
+= redeploy
+
+[[redeploy-1]][[GSRFM00217]][[redeploy]]
+
+== redeploy
+
+Redeploys the specified component
+
+[[sthref1961]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] redeploy [--help]
+--name component_name
+[--upload={true|false}]
+[--retrieve local_dirpath]
+[--dbvendorname dbvendorname]
+[--createtables={true|false}|--dropandcreatetables={true|false}]
+[--uniquetablenames={true|false}]
+[--deploymentplan deployment_plan]
+[--altdd alternate_deploymentdescriptor]
+[--runtimealtdd runtime_alternate_deploymentdescriptor]
+[--deploymentorder deployment_order]
+[--enabled={true|false}]
+[--generatermistubs={false|true}]
+[--contextroot context_root]
+[--precompilejsp={true|false}]
+[--verify={false|true}]
+[--virtualservers virtual_servers]
+[--availabilityenabled={false|true}]
+[--asyncreplication={true|false}]
+[--lbenabled={true|false}]
+[--keepstate={false|true}]
+[--libraries jar_file[,jar_file]*]
+[--target target]
+[--type pkg-type]
+[--properties(name=value)[:name=value]*]
+[file_archive|filepath]
+----
+
+[[sthref1962]]
+
+=== Description
+
+The `redeploy` subcommand redeploys an enterprise application, web
+application, module based on the Enterprise JavaBeans (EJB)
+specification (EJB module), connector module, or application client
+module that is already deployed or already exists. The `redeploy`
+subcommand preserves the settings and other options with which the
+application was originally deployed. The application must already be
+deployed. Otherwise, an error occurs.
+
+This subcommand is supported in remote mode only.
+
+[[sthref1963]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--virtualservers`::
+  One or more virtual server IDs. Multiple IDs are separated by commas.
+`--contextroot`::
+  Valid only if the archive is a web module. It is ignored for other
+  archive types; it will be the value specified by default-context-path
+  in web.xml, if specified; defaults to filename without extension.
+`--precompilejsp`::
+  By default this option does not allow the JSP to be precompiled during
+  deployment. Instead, JSPs are compiled during runtime. Default is
+  `false`.
+`--verify`::
+  If set to true and the required verifier packages are installed from
+  the Update Tool, the syntax and semantics of the deployment descriptor
+  is verified. Default is `false`.
+`--name`::
+  Name of the deployable component. +
+  The name can include an optional version identifier, which follows the
+  name and is separated from the name by a colon (`:`). The version
+  identifier must begin with a letter or number. It can contain
+  alphanumeric characters plus underscore (`_`), dash (`-`), and period
+  (`.`) characters. For more information about module and application
+  versions, see "link:application-deployment-guide/overview.html#GSDPG00324[Module and Application Versions]" in
+  {productName} Application Deployment Guide.
+`--upload`::
+  Specifies whether the subcommand uploads the file to the DAS. In most
+  situations, this option can be omitted.
+  Valid values are as follows:
++
+--
+  `false`;;
+    The subcommand does not upload the file and attempts to access the
+    file through the specified file name. If the DAS cannot access the
+    file, the subcommand fails. +
+    For example, the DAS might be running as a different user than the
+    administration user and does not have read access to the file. In
+    this situation, the subcommand fails if the `--upload` option is `false`.
+  `true`;;
+    The subcommand uploads the file to the DAS over the network
+    connection.
+--
++
+The default value depends on whether the DAS is on the host where the
+  subcommand is run or is on a remote host.
++
+--
+  * If the DAS is on the host where the subcommand is run, the default
+    is `false`.
+  * If the DAS is on a remote host, the default is `true`.
++
+--
+If a directory filepath is specified, this option is ignored.
+`--retrieve`::
+  Retrieves the client stub JAR file from the server machine to the
+  local directory.
+`--dbvendorname`::
+  Specifies the name of the database vendor for which tables are
+  created. Supported values include `db2`, `mssql`, `oracle`, `derby`,
+  `javadb`, `postgresql`, and `sybase`, case-insensitive. If not
+  specified, the value of the `database-vendor-name` attribute in
+  `glassfish-ejb-jar.xml` is used. If no value is specified, a
+  connection is made to the resource specified by the `jndi-name`
+  subelement of the `cmp-resource` element in the
+  `glassfish-ejb-jar.xml` file, and the database vendor name is read. If
+  the connection cannot be established, or if the value is not
+  recognized, SQL-92 compliance is presumed.
+`--createtables`::
+  If specified as true, creates tables at deployment of an application
+  with unmapped CMP beans. If specified as false, tables are not
+  created. If not specified, the value of the `create-tables-at-deploy`
+  entry in the `cmp-resource` element of the `glassfish-ejb-jar.xml`
+  file determines whether or not tables are created. No unique
+  constraints are created for the tables.
+`--dropandcreatetables`::
+  If specified as true when the component is redeployed, the tables
+  created by the previous deployment are dropped before creating the new
+  tables. Applies to deployed applications with unmapped CMP beans. If
+  specified as false, tables are neither dropped nor created. If not
+  specified, the tables are dropped if the `drop-tables-at-undeploy`
+  entry in the `cmp-resource` element of the `glassfish-ejb-jar.xml`
+  file is set to true, and the new tables are created if the
+  `create-tables-at-deploy` entry in the `cmp-resource` element of the
+  `glassfish-ejb-jar.xml` file is set to true.
+`--uniquetablenames`::
+  Guarantees unique table names for all the beans and results in a hash
+  code added to the table names. This is useful if you have an
+  application with case-sensitive bean names. Applies to applications
+  with unmapped CMP beans.
+`--deploymentplan`::
+  Deploys the deployment plan, which is a JAR file that contains
+  {productName} descriptors. Specify this option when deploying a
+  pure EAR file. A pure EAR file is an EAR without {productName}
+  descriptors.
+`--altdd`::
+  Deploys the application using a Jakarta EE standard deployment descriptor
+  that resides outside of the application archive. Specify an absolute
+  path or a relative path to the alternate deployment descriptor file.
+  The alternate deployment descriptor overrides the top-level deployment
+  descriptor packaged in the archive. For example, for an EAR, the
+  `--altdd` option overrides `application.xml`. For a standalone module,
+  the `--altdd` option overrides the top-level module descriptor such as
+  `web.xml`.
+`--runtimealtdd`::
+  Deploys the application using a {productName} runtime deployment
+  descriptor that resides outside of the application archive. Specify an
+  absolute path or a relative path to the alternate deployment
+  descriptor file. The alternate deployment descriptor overrides the
+  top-level deployment descriptor packaged in the archive. For example,
+  for an EAR, the `--runtimealtdd` option overrides
+  `glassfish-application.xml`. For a standalone module, the
+  `--runtimealtdd` option overrides the top-level module descriptor such
+  as `glassfish-web.xml`. Applies to {productName} deployment
+  descriptors only (`glassfish-\*.xml`); the name of the alternate
+  deployment descriptor file must begin with `glassfish-`. Does not
+  apply to `sun-*.xml` deployment descriptors, which are deprecated.
+`--deploymentorder`::
+  Specifies the deployment order of the application. This is useful if
+  the application has dependencies and must be loaded in a certain order
+  at server startup. The deployment order is specified as an integer.
+  The default value is 100. Applications with lower numbers are loaded
+  before applications with higher numbers. For example, an application
+  with a deployment order of 102 is loaded before an application with a
+  deployment order of 110. If a deployment order is not specified, the
+  default value of 100 is assigned. If two applications have the same
+  deployment order, the first application to be deployed is the first
+  application to be loaded at server startup. +
+  The deployment order is typically specified when the application is
+  first deployed but can also be specified or changed after initial
+  deployment using the `set` subcommand. You can view the deployment
+  order of an application using the `get` subcommand.
+`--enabled`::
+  Allows users to access the application. If set to `false`, users will
+  not be able to access the application. This option enables the
+  application on the specified target instance or cluster. If you deploy
+  to the target `domain`, this option is ignored, since deploying to the
+  domain doesn't deploy to a specific instance or cluster. The default
+  is `true`.
+`--generatermistubs`::
+  If set to `true`, static RMI-IIOP stubs are generated and put into the
+  `client.jar`. If set to `false`, the stubs are not generated. Default
+  is `false`.
+`--availabilityenabled`::
+  This option controls whether high-availability is enabled for web
+  sessions and for stateful session bean (SFSB) checkpointing and
+  potentially passivation. If set to false (default) all web session
+  saving and SFSB checkpointing is disabled for the specified
+  application, web application, or EJB module. If set to true, the
+  specified application or module is enabled for high-availability. Set
+  this option to true only if high availability is configured and
+  enabled at higher levels, such as the server and container levels.
+`--asyncreplication`::
+  This option controls whether web session and SFSB states for which
+  high availability is enabled are first buffered and then replicated
+  using a separate asynchronous thread. If set to true (default),
+  performance is improved but availability is reduced. If the instance
+  where states are buffered but not yet replicated fails, the states are
+  lost. If set to false, performance is reduced but availability is
+  guaranteed. States are not buffered but immediately transmitted to
+  other instances in the cluster.
+`--lbenabled`::
+  This option controls whether the deployed application is available for
+  load balancing. The default is true.
+`--keepstate`::
+  This option controls whether web sessions, SFSB instances, and
+  persistently created EJB timers are retained between redeployments. +
+  The default is false. This option is supported only on the default
+  server instance, named `server`. It is not supported and ignored for
+  any other target. +
+  Some changes to an application between redeployments prevent this
+  feature from working properly. For example, do not change the set of
+  instance variables in the SFSB bean class. +
+  For web applications, this feature is applicable only if in the
+  `glassfish-web-app.xml` file the `persistence-type` attribute of the
+  `session-manager` element is `file`. +
+  For stateful session bean instances, the persistence type without high
+  availability is set in the server (the `sfsb-persistence-type`
+  attribute) and must be set to `file`, which is the default and
+  recommended value. +
+  If any active web session, SFSB instance, or EJB timer fails to be
+  preserved or restored, none of these will be available when the
+  redeployment is complete. However, the redeployment continues and a
+  warning is logged. +
+  To preserve active state data, {productName} serializes the data
+  and saves it in memory. To restore the data, the class loader of the
+  newly redeployed application deserializes the data that was previously
+  saved.
+`--libraries`::
+  A comma-separated list of library JAR files. Specify the library JAR
+  files by their relative or absolute paths. Specify relative paths
+  relative to domain-dir`/lib/applibs`. The libraries are made available
+  to the application in the order specified.
+`--target`::
+  Specifies the target to which you are deploying. Valid values are:
+
+  `server`;;
+    Deploys the component to the default server instance `server` and is
+    the default value.
+  `domain`;;
+    Deploys the component to the domain. If `domain` is the target for
+    an initial deployment, the application is deployed to the domain,
+    but no server instances or clusters reference the application. If
+    `domain` is the target for a redeployment, and dynamic
+    reconfiguration is enabled for the clusters or server instances that
+    reference the application, the referencing clusters or server
+    instances automatically get the new version of the application. If
+    redeploying, and dynamic configuration is disabled, the referencing
+    clusters or server instances do not get the new version of the
+    application until the clustered or standalone server instances are
+    restarted.
+  cluster_name;;
+    Deploys the component to every server instance in the cluster.
+  instance_name;;
+    Deploys the component to a particular stand-alone server instance.
+
+`--type`::
+  The packaging archive type of the component that is being deployed.
+  Possible values are as follows:
+
+  `car`;;
+    The component is packaged as a CAR file.
+  `ear`;;
+    The component is packaged as an EAR file.
+  `ejb`;;
+    The component is an EJB packaged as a JAR file.
+  `osgi`;;
+    The component is packaged as an OSGi bundle.
+  `rar`;;
+    The component is packaged as a RAR file.
+  `war`;;
+    The component is packaged as a WAR file.
+
+`--properties` or `--property`::
+  Optional keyword-value pairs that specify additional properties for
+  the deployment. The available properties are determined by the
+  implementation of the component that is being deployed or redeployed.
+  The `--properties` option and the `--property` option are equivalent.
+  You can use either option regardless of the number of properties that
+  you specify. +
+  You can specify the following properties for a deployment:
+
+  `jar-signing-alias`;;
+    Specifies the alias for the security certificate with which the
+    application client container JAR file is signed. Java Web Start will
+    not run code that requires elevated permissions unless it resides in
+    a JAR file signed with a certificate that the user's system trusts.
+    For your convenience, {productName} signs the JAR file
+    automatically using the certificate with this alias from the
+    domain's keystore. Java Web Start then asks the user whether to
+    trust the code and displays the {productName} certificate
+    information. To sign this JAR file with a different certificate, add
+    the certificate to the domain keystore, then use this property. For
+    example, you can use a certificate from a trusted authority, which
+    avoids the Java Web Start prompt, or from your own company, which
+    users know they can trust. Default is `s1as`, the alias for the
+    self-signed certificate created for every domain.
+  `java-web-start-enabled`;;
+    Specifies whether Java Web Start access is permitted for an
+    application client module. Default is true.
+  `compatibility`;;
+    Specifies the {productName} release with which to be backward
+    compatible in terms of JAR visibility requirements for applications.
+    The only allowed value is `v2`, which refers to Sun Java System
+    Application Server version 2 or Sun Java System Application Server
+    version 9.1 or 9.1.1. Beginning in Jakarta EE 6, the Jakarta EE platform
+    specification imposed stricter requirements than Jakarta EE 5 did on
+    which JAR files can be visible to various modules within an EAR
+    file. In particular, application clients must not have access to EJB
+    JAR files or other JAR files in the EAR file unless references use
+    the standard Java SE mechanisms (extensions, for example) or the
+    Jakarta EE library-directory mechanism. Setting this property to `v2`
+    removes these restrictions.
+  `keepSessions={false|true}`;;
+    Superseded by the `--keepstate` option. +
+    This property can by used to specify whether active sessions of the
+    application that is being redeployed are preserved and then restored
+    when the redeployment is complete. Applies to HTTP sessions in a web
+    container. Default is `false`.:
++
+--
+    `false`::
+      Active sessions of the application are not preserved and restored
+      (default).
+    `true`::
+      Active sessions of the application are preserved and restored. +
+      If any active session of the application fails to be preserved or
+      restored, none of the sessions will be available when the
+      redeployment is complete. However, the redeployment continues and
+      a warning is logged. +
+      To preserve active sessions, {productName} serializes the
+      sessions and saves them in memory. To restore the sessions, the
+      class loader of the newly redeployed application deserializes any
+      sessions that were previously saved.
+--
+  `preserveAppScopedResources`;;
+    If set to `true`, preserves any application-scoped resources and
+    restores them during redeployment. Default is `false`.
+
++
+Other available properties are determined by the implementation of the
+  component that is being redeployed. +
+  For components packaged as OSGi bundles (`--type=osgi`), the `deploy`
+  subcommand accepts properties arguments to wrap a WAR file as a WAB
+  (Web Application Bundle) at the time of deployment. The subcommand
+  looks for a key named `UriScheme` and, if present, uses the key as a
+  URL stream handler to decorate the input stream. Other properties are
+  used in the decoration process. For example, the {productName}
+  OSGi web container registers a URL stream handler named `webbundle`,
+  which is used to wrap a plain WAR file as a WAB. For more information
+  about usage, see the related example in the
+  link:deploy.html#deploy-1[`deploy`(1)] help page.
+
+[[sthref1964]]
+
+=== Operands
+
+file_archive|filepath::
+  The operand can specify a directory or an archive file.
+  The path to the archive that contains the application that is being
+  redeployed. This path can be a relative path or an absolute path. +
+  The archive can be in either of the following formats:
+  * An archive file, for example, `/export/JEE_apps/hello.war`.
+    If the `--upload` option is set to `true`, this is the path to the
+    deployable file on the local client machine. +
+    If the `--upload` option is set to `false`, this is the absolute
+    path to the file on the server machine.
+  * A directory that contains the exploded format of the deployable
+    archive. This is the absolute path to the directory on the server machine. +
+    If you specify a directory, the `--upload` option is ignored.
+
++
+Whether this operand is required depends on how the application was
+  originally deployed:
+  * If the application was originally deployed from a file, the
+    archive-path operand is required. The operand must specify an archive file.
+  * If the application was originally deployed from a directory, the
+    archive-path operand is optional.
+
+[[sthref1965]]
+
+=== Examples
+
+[[GSRFM735]][[sthref1966]]
+
+==== Example 1   Redeploying a Web Application From a File
+
+This example redeploys the web application `hello` from the `hello.war`
+file in the current working directory. The application was originally
+deployed from a file. Active sessions of the application are to be
+preserved and then restored when the redeployment is complete.
+
+[source]
+----
+asadmin> redeploy --name hello --properties keepSessions=true hello.war
+Application deployed successfully with name hello.
+Command redeploy executed successfully
+----
+
+[[GSRFM736]][[sthref1967]]
+
+==== Example 2   Redeploying a Web Application From a Directory
+
+This example redeploys the web application `hellodir`. The application
+was originally deployed from a directory.
+
+[source]
+----
+asadmin> redeploy --name hellodir
+Application deployed successfully with name hellodir.
+Command redeploy executed successfully
+----
+
+[[sthref1968]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1969]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:deploy.html#deploy-1[`deploy`(1)], link:get.html#get-1[`get`(1)],
+link:list-components.html#list-components-1[`list-components`(1)],
+link:undeploy.html#undeploy-1[`undeploy`(1)]
+
+link:application-deployment-guide.html#GSDPG[{productName} Application Deployment
+Guide]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/remove-library.adoc b/docs/reference-manual/src/main/asciidoc/remove-library.adoc
new file mode 100644
index 0000000..9bc176b
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/remove-library.adoc
@@ -0,0 +1,128 @@
+type=page
+status=published
+title=remove-library
+next=restart-domain.html
+prev=redeploy.html
+~~~~~~
+
+= remove-library
+
+[[remove-library-1]][[GSRFM00820]][[remove-library]]
+
+== remove-library
+
+Removes one or more library JAR files from {productName}
+
+[[sthref1970]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] remove-library [--help]
+[--type={common|ext|app}]
+library-name [library-name ... ]
+----
+
+[[sthref1971]]
+
+=== Description
+
+The `remove-library` subcommand removes one or more library JAR files
+from {productName}.
+
+The `--type` option specifies the library type and the {productName}
+directory from which the library is removed.
+
+The library-name operand is the name of the JAR file that contains the
+library to be removed. To specify multiple libraries, specify multiple
+names separated by spaces.
+
+[NOTE]
+====
+The library archive file is removed from the DAS. For common and
+extension libraries, you must restart the DAS so the library removals
+are picked up by the server runtime. To remove the libraries from other
+server instances, synchronize the instances with the DAS by restarting
+them.
+
+This command is not supported on the Windows operating system.
+====
+
+This subcommand is supported in remote mode only.
+
+[[sthref1972]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--type`::
+  Specifies the library type and the {productName} directory from
+  which the library is removed. Valid values are as follows:
+
+  `common`;;
+    Removes the library files from the Common class loader directory,
+    domain-dir``/lib``. This is the default.
+  `ext`;;
+    Removes the library files from the Java optional package directory,
+    domain-dir`/lib/ext`.
+  `app`;;
+    Removes the library files from the application-specific class loader
+    directory, domain-dir`/lib/applibs`.
+
++
+For more information about these directories, see
+  "link:application-development-guide/class-loaders.html#GSDVG00003[Class Loaders]" in {productName} Application Development Guide.
+
+[[sthref1973]]
+
+=== Operands
+
+library-name::
+  The names of the JAR files that contain the libraries that are to be
+  removed.
+
+[[sthref1974]]
+
+=== Examples
+
+[[GSRFM832]][[sthref1975]]
+
+==== Example 1   Removing Libraries
+
+This example removes the library in the archive file `mylib.jar` from
+the application-specific class loader directory on the default server
+instance.
+
+[source]
+----
+asadmin> remove-library --type app mylib.jar
+Command remove-library executed successfully.
+----
+
+[[sthref1976]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1977]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:add-library.html#add-library-1[`add-library`(1)],
+link:list-libraries.html#list-libraries-1[`list-libraries`(1)]
+
+"link:application-development-guide/class-loaders.html#GSDVG00003[Class Loaders]" in {productName} Application Development Guide
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/resource.adoc b/docs/reference-manual/src/main/asciidoc/resource.adoc
new file mode 100644
index 0000000..fd6fbe3
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/resource.adoc
@@ -0,0 +1,28 @@
+type=page
+status=published
+title=resource
+next=security.html
+prev=passwords.html
+~~~~~~
+
+= resource
+
+[[resource-5asc]][[GSRFM00273]][[resource]]
+
+== resource
+
+Provide connectivity to various types of EIS.
+
+[[sthref2410]]
+
+=== Description
+
+{productName} provides support for JDBC, JMS, and JNDI resources.
+
+[[sthref2411]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/restart-domain.adoc b/docs/reference-manual/src/main/asciidoc/restart-domain.adoc
new file mode 100644
index 0000000..9235ed2
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/restart-domain.adoc
@@ -0,0 +1,151 @@
+type=page
+status=published
+title=restart-domain
+next=restart-instance.html
+prev=remove-library.html
+~~~~~~
+
+= restart-domain
+
+[[restart-domain-1]][[GSRFM00218]][[restart-domain]]
+
+== restart-domain
+
+Restarts the DAS of the specified domain
+
+[[sthref1978]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] restart-domain [--help]
+[--debug ={true|false}]
+[--domaindir domaindir]
+[--force={true|false}] [--kill={false|true}]
+[domain-name]
+----
+
+[[sthref1979]]
+
+=== Description
+
+The `restart-domain` subcommand stops and then restarts the domain
+administration server (DAS) of the specified domain. If a domain is not
+specified, the default domain is assumed. If the domains directory
+contains two or more domains, the domain-name operand must be specified.
+If the DAS is not already running, the subcommand attempts to start it.
+
+The `restart-domain` subcommand does not exit until the subcommand has
+verified that the domain has been stopped and restarted.
+
+This subcommand is supported in local or remote mode. If you specify a
+host name, the subcommand assumes you are operating in remote mode,
+which means you must correctly authenticate to the remote server. In
+local mode, you normally do not need to authenticate to the server as
+long as you are running the subcommand as the same user who started the
+server.
+
+[[sthref1980]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--debug`::
+  Specifies whether the domain is restarted with
+  http://java.sun.com/javase/technologies/core/toolsapis/jpda/[Java
+  Platform Debugger Architecture (JPDA)]
+  (http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html)
+  debugging enabled.
+  Possible values are as follows:
+
+  `true`;;
+    The domain is restarted with JPDA debugging enabled and the port
+    number for JPDA debugging is displayed.
+  `false`;;
+    The domain is restarted with JPDA debugging disabled (default).
+
++
+The default is the current setting of this option for the domain that
+  is being restarted.
+`--domaindir`::
+  The domain root directory, which contains the directory of the domain
+  that is to be restarted. If specified, the path must be accessible in
+  the file system. The default location of the domain root directory is
+  as-install``/domains``.
+`--force`::
+  Specifies whether the domain is forcibly stopped immediately before it
+  is restarted. Possible values are as follows:
+
+  `true`;;
+    The domain is forcibly stopped immediately (default).
+  `false`;;
+    The subcommand waits until all threads that are associated with the
+    domain are exited before stopping the domain.
+
+`--kill`::
+  Specifies whether the domain is killed before it is restarted by using
+  functionality of the operating system to terminate the domain process.
+  Possible values are as follows:
+
+  `false`;;
+    The domain is not killed. The subcommand uses functionality of the
+    Java platform to terminate the domain process (default).
+  `true`;;
+    The domain is killed. The subcommand uses functionality of the
+    operating system to terminate the domain process.
+
+[[sthref1981]]
+
+=== Operands
+
+domain-name::
+  The name of the domain you want to restart. Default is the name
+  specified during installation, usually `domain1`.
+
+[[sthref1982]]
+
+=== Examples
+
+[[GSRFM738]][[sthref1983]]
+
+==== Example 1   Restarting a Domain
+
+This example restarts `mydomain4` in the default domains directory.
+
+[source]
+----
+asadmin> restart-domain mydomain4
+Successfully restarted the domain
+Command restart-domain executed successfully.
+----
+
+[[sthref1984]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref1985]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-domain.html#delete-domain-1[`delete-domain`(1)],
+link:list-domains.html#list-domains-1[`list-domains`(1)],
+link:start-domain.html#start-domain-1[`start-domain`(1)],
+link:stop-domain.html#stop-domain-1[`stop-domain`(1)]
+
+Java Platform Debugger Architecture (JPDA)
+(`http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html`)
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/restart-instance.adoc b/docs/reference-manual/src/main/asciidoc/restart-instance.adoc
new file mode 100644
index 0000000..ff88b81
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/restart-instance.adoc
@@ -0,0 +1,156 @@
+type=page
+status=published
+title=restart-instance
+next=restart-local-instance.html
+prev=restart-domain.html
+~~~~~~
+
+= restart-instance
+
+[[restart-instance-1]][[GSRFM00219]][[restart-instance]]
+
+== restart-instance
+
+Restarts a running {productName} instance
+
+[[sthref1986]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] restart-instance [--help]
+[--debug={false|true}] instance-name
+----
+
+[[sthref1987]]
+
+=== Description
+
+The `restart-instance` subcommand restarts a running {productName}
+instance. This subcommand requires secure shell (SSH) to be configured
+on the machine where the domain administration server (DAS) is running
+and on the machine where the instance resides.
+
+[NOTE]
+====
+SSH is not required if the instance resides on a node of type `CONFIG`
+that represents the local host. A node of type `CONFIG` is not enabled
+for communication over SSH.
+====
+
+You may run this subcommand from any machine that can contact the DAS.
+
+The subcommand can restart any {productName} instance, regardless of
+how the instance was created. For example, this subcommand can restart
+an instance that was created by using the
+link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)]
+subcommand.
+
+When this subcommand restarts an instance, the DAS synchronizes the
+instance with changes since the last synchronization as follows:
+
+* For the `config` directory, the DAS synchronizes the instance with all changes.
+* For the `applications` directory and `docroot` directory, only a
+change to a top-level subdirectory causes the DAS to synchronize all
+files under that subdirectory.
++
+If a file below a top level subdirectory is changed without a change to
+a file in the top level subdirectory, full synchronization is required.
+In normal operation, files below the top level subdirectories of these
+directories are not changed. If an application is deployed and
+undeployed, full synchronization is not necessary to update the instance
+with the change.
+
+If different synchronization behavior is required, the instance must be
+stopped and restarted by using following sequence of subcommands:
+
+1. link:stop-instance.html#stop-instance-1[`stop-instance`(1)]
+2. link:start-instance.html#start-instance-1[`start-instance`(1)]
+
+This subcommand is supported in remote mode only.
+
+[[sthref1988]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--debug`::
+  Specifies whether the instance is restarted with
+  http://java.sun.com/javase/technologies/core/toolsapis/jpda/[Java
+  Platform Debugger Architecture
+  (JPDA)](http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html)
+  debugging enabled. Possible values are as follows:
+
+  `true`;;
+    The instance is restarted with JPDA debugging enabled and the port
+    number for JPDA debugging is displayed.
+  `false`;;
+    The instance is restarted with JPDA debugging disabled.
+
++
+The default is the current setting of this option for the instance
+  that is being restarted.
+
+[[sthref1989]]
+
+=== Operands
+
+instance-name::
+  The name of the {productName} instance to restart. If the instance
+  is not running, the subcommand displays a warning message and attempts
+  to start the instance.
+
+[[sthref1990]]
+
+=== Examples
+
+[[GSRFM739]][[sthref1991]]
+
+==== Example 1   Restarting a {productName} Instance
+
+This example restarts the {productName} instance `pmdsa1`.
+
+[source]
+----
+asadmin> restart-instance pmdsa1
+Instance pmdsa1 was restarted.
+
+Command restart-instance executed successfully.
+----
+
+[[sthref1992]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref1993]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-instance.html#create-instance-1[`create-instance`(1)],
+link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)],
+link:delete-instance.html#delete-instance-1[`delete-instance`(1)],
+link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)],
+link:restart-local-instance.html#restart-local-instance-1[`restart-local-instance`(1)],
+link:setup-ssh.html#setup-ssh-1[`setup-ssh`(1)],
+link:start-instance.html#start-instance-1[`start-instance`(1)],
+link:start-local-instance.html#start-local-instance-1[`start-local-instance`(1)],
+link:stop-instance.html#stop-instance-1[`stop-instance`(1)],
+link:stop-local-instance.html#stop-local-instance-1[`stop-local-instance`(1)]
+
+Java Platform Debugger Architecture (JPDA)
+(http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html)
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/restart-local-instance.adoc b/docs/reference-manual/src/main/asciidoc/restart-local-instance.adoc
new file mode 100644
index 0000000..146dcf0
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/restart-local-instance.adoc
@@ -0,0 +1,186 @@
+type=page
+status=published
+title=restart-local-instance
+next=restore-domain.html
+prev=restart-instance.html
+~~~~~~
+
+= restart-local-instance
+
+[[restart-local-instance-1]][[GSRFM00220]][[restart-local-instance]]
+
+== restart-local-instance
+
+Restarts a running {productName} instance on the host where the
+subcommand is run
+
+[[sthref1994]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] restart-local-instance [--help]
+[--nodedir nodedir] [--node node]
+[--debug={false|true}]
+[--force={true|false}] [--kill={false|true}]
+[instance-name]
+----
+
+[[sthref1995]]
+
+=== Description
+
+The `restart-local-instance` subcommand restarts a {productName}
+instance on the host where the subcommand is run. This subcommand does
+not require secure shell (SSH) to be configured. You must run this
+command from the host where the instance resides.
+
+The subcommand can restart any {productName} instance, regardless of
+how the instance was created. For example, this subcommand can restart
+an instance that was created by using the
+link:create-instance.html#create-instance-1[`create-instance`(1)] subcommand.
+
+The `restart-local-instance` subcommand does not contact the domain
+administration server (DAS) to determine the node on which the instance
+resides. To determine the node on which the instance resides, the
+subcommand searches the directory that contains the node directories. If
+multiple node directories exist, the node must be specified as an option
+of the subcommand.
+
+When this subcommand restarts an instance, the DAS synchronizes the
+instance with changes since the last synchronization as follows:
+
+* For the `config` directory, the DAS synchronizes the instance with all changes.
+* For the `applications` directory and `docroot` directory, only a
+change to a top-level subdirectory causes the DAS to synchronize all
+files under that subdirectory.
++
+If a file below a top level subdirectory is changed without a change to
+a file in the top level subdirectory, full synchronization is required.
+In normal operation, files below the top level subdirectories of these
+directories are not changed. If an application is deployed and
+undeployed, full synchronization is not necessary to update the instance
+with the change.
+
+If different synchronization behavior is required, the instance must be
+stopped and restarted by using following sequence of subcommands:
+
+1. link:stop-local-instance.html#stop-local-instance-1[`stop-local-instance`(1)]
+2. link:start-local-instance.html#start-local-instance-1[`start-local-instance`(1)]
+
+This subcommand is supported in local mode. However, to synchronize the
+instance with the DAS, this subcommand must be run in remote mode.
+
+[[sthref1996]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--nodedir`::
+  Specifies the directory that contains the instance's node directory.
+  The instance's files are stored in the instance's node directory. The
+  default is as-install``/nodes``.
+`--node`::
+  Specifies the node on which the instance resides. This option may be
+  omitted only if the directory that the `--nodedir` option specifies
+  contains only one node directory. Otherwise, this option is required.
+`--debug`::
+  Specifies whether the instance is restarted with
+  http://java.sun.com/javase/technologies/core/toolsapis/jpda/[Java
+  Platform Debugger Architecture (JPDA)]
+  (http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html)
+  debugging enabled.
+  Possible values are as follows:
+
+  `true`;;
+    The instance is restarted with JPDA debugging enabled and the port
+    number for JPDA debugging is displayed.
+  `false`;;
+    The instance is restarted with JPDA debugging disabled (default).
+
++
+The default is the current setting of this option for the instance
+  that is being restarted.
+`--force`::
+  Specifies whether the instance is forcibly stopped immediately before
+  it is restarted. Possible values are as follows:
+
+  `true`;;
+    The instance is forcibly stopped immediately (default).
+  `false`;;
+    The subcommand waits until all threads that are associated with the
+    instance are exited before stopping the instance.
+
+`--kill`::
+  Specifies whether the instance is killed before it is restarted by
+  using functionality of the operating system to terminate the instance
+  process. Possible values are as follows:
+
+  `false`;;
+    The instance is not killed. The subcommand uses functionality of the
+    Java platform to terminate the instance process (default).
+  `true`;;
+    The instance is killed. The subcommand uses functionality of the
+    operating system to terminate the instance process.
+
+[[sthref1997]]
+
+=== Operands
+
+instance-name::
+  The name of the {productName} instance to restart. If the instance
+  is not running, the subcommand displays a warning message and attempts
+  to start the instance.
+
+[[sthref1998]]
+
+=== Examples
+
+[[GSRFM740]][[sthref1999]]
+
+==== Example 1   Restarting an Instance Locally
+
+This example restarts the instance `ymlsa1` in the domain `domain1` on
+the host where the subcommand is run.
+
+[source]
+----
+asadmin> restart-local-instance --node localhost-domain1 ymlsa1
+Command restart-local-instance executed successfully.
+----
+
+[[sthref2000]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref2001]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-instance.html#create-instance-1[`create-instance`(1)],
+link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)],
+link:delete-instance.html#delete-instance-1[`delete-instance`(1)],
+link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)],
+link:restart-instance.html#restart-instance-1[`restart-instance`(1)],
+link:start-instance.html#start-instance-1[`start-instance`(1)],
+link:start-local-instance.html#start-local-instance-1[`start-local-instance`(1)],
+link:stop-instance.html#stop-instance-1[`stop-instance`(1)],
+link:stop-local-instance.html#stop-local-instance-1[`stop-local-instance`(1)]
+
+Java Platform Debugger Architecture (JPDA)
+(http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html)
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/restore-domain.adoc b/docs/reference-manual/src/main/asciidoc/restore-domain.adoc
new file mode 100644
index 0000000..0ea193d
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/restore-domain.adoc
@@ -0,0 +1,104 @@
+type=page
+status=published
+title=restore-domain
+next=rollback-transaction.html
+prev=restart-local-instance.html
+~~~~~~
+
+= restore-domain
+
+[[restore-domain-1]][[GSRFM00221]][[restore-domain]]
+
+== restore-domain
+
+Restores files from backup
+
+[[sthref2002]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] restore-domain [--help]
+[--long[={false|true}]]
+[--filename backup-filename]
+[--domaindir domain-root-dir]
+[--backupdirbackup-directory]
+[--backupconfigbackup-config-name]
+[--force[={false|true}]]
+[domain-name]
+----
+
+[[sthref2003]]
+
+=== Description
+
+This command restores files under the domain from a backup directory.
+
+The `restore-domain` command is supported in local mode only.
+
+[[sthref2004]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--long`::
+`-l`::
+  Displays detailed information about the restore operation. +
+  The default value is `false`.
+`--filename`::
+  Specifies the name of the backup file to use as the source.
+`--domaindir`::
+  Specifies the domain root directory, the parent directory of the
+  domain to restore.
+  The default value is as-install``/domains``.
+`--backupdir`::
+  Specifies the directory under which the backup file is stored. +
+  The default value is as-install``/domains/``domain-dir``/backups``.
+  If the domain is not in the default location, the location is
+  domain-dir``/backups``.
+`--backupconfig`::
+  (Supported only in {productName}.) The name of the domain
+  backup configuration in the backup directory under which the backup
+  file is stored.
+`--force`::
+  Causes the restore operation to continue even when the name of the
+  domain to restore does not match the name of the domain stored in the
+  backup file. +
+  The default value is `false`.
+
+[[sthref2005]]
+
+=== Operands
+
+domain-name::
+  Specifies the name of the domain to restore. +
+  This operand is optional if only one domain exists in the {productName} installation. +
+  If the specified domain name does not match the domain name stored in
+  the backup file, an error occurs unless the `--force` option is
+  specified.
+
+[[sthref2006]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref2007]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:backup-domain.html#backup-domain-1[`backup-domain`(1)],
+link:list-backups.html#list-backups-1[`list-backups`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/rollback-transaction.adoc b/docs/reference-manual/src/main/asciidoc/rollback-transaction.adoc
new file mode 100644
index 0000000..92c17d4
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/rollback-transaction.adoc
@@ -0,0 +1,113 @@
+type=page
+status=published
+title=rollback-transaction
+next=rotate-log.html
+prev=restore-domain.html
+~~~~~~
+
+= rollback-transaction
+
+[[rollback-transaction-1]][[GSRFM00223]][[rollback-transaction]]
+
+== rollback-transaction
+
+Rolls back the named transaction
+
+[[sthref2008]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] rollback-transaction [--help]
+[--target target]
+transaction_id
+----
+
+[[sthref2009]]
+
+=== Description
+
+The `rollback-transaction` subcommand rolls back the named transaction.
+
+Before you can roll back a transaction, you must do the following:
+
+1. Enable monitoring using the `set` subcommand. For example:
++
+[source]
+----
+asadmin> set clstr1-config.monitoring-service.module-monitoring-levels.transaction-service=HIGH
+----
+2. Use the `freeze-transaction-service` subcommand to halt in-process
+transactions.
+3. Look up the active transactions using the `get` subcommand with the
+`--monitor` option. For example:
++
+[source]
+----
+asadmin> get --monitor inst1.server.transaction-service.activeids-current
+----
+
+This subcommand is supported in remote mode only.
+
+[[sthref2010]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  This option specifies the target on which you are rolling back the
+  transactions. Valid values are `server` or any other clustered or
+  stand-alone instance.
+
+[[sthref2011]]
+
+=== Operands
+
+transaction_id::
+  Identifier for the transaction to be rolled back.
+
+[[sthref2012]]
+
+=== Examples
+
+[[GSRFM741]][[sthref2013]]
+
+==== Example 1   Using rollback-transaction command
+
+[source]
+----
+% asadmin rollback-transaction 0000000000000001_00
+Command rollback-transaction executed succeessfully
+----
+
+[[sthref2014]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref2015]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:freeze-transaction-service.html#freeze-transaction-service-1[`freeze-transaction-service`(1)],
+link:recover-transactions.html#recover-transactions-1[`recover-transactions`(1)],
+link:unfreeze-transaction-service.html#unfreeze-transaction-service-1[`unfreeze-transaction-service`(1)],
+
+"link:administration-guide/transactions.html#GSADG00022[Administering Transactions]" in {productName} Administration Guide
+
+"https://eclipse-ee4j.github.io/jakartaee-tutorial/#transactions[Transactions]"
+in The Jakarta EE Tutorial
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/rotate-log.adoc b/docs/reference-manual/src/main/asciidoc/rotate-log.adoc
new file mode 100644
index 0000000..61223b5
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/rotate-log.adoc
@@ -0,0 +1,110 @@
+type=page
+status=published
+title=rotate-log
+next=set.html
+prev=rollback-transaction.html
+~~~~~~
+
+= rotate-log
+
+[[rotate-log-1]][[GSRFM00224]][[rotate-log]]
+
+== rotate-log
+
+Rotates the log file
+
+[[sthref2016]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] rotate-log [--help]
+----
+
+[[sthref2017]]
+
+=== Description
+
+The `rotate-log` subcommand rotates the server log by renaming the file
+with a timestamp name in the format `server.log_`date-and-time, and
+creating a new log file. Changes take effect dynamically, that is,
+server restart is not required.
+
+The size of the log queue is configurable through the
+`logging.properties` file. Log rotation is based on file size or elapsed
+time since the last log rotation. In some circumstances, the queue might
+fill up, especially if the log level is set to `FINEST` and there is
+heavy activity on the server. In this case, the `rotate-log` subcommand
+can be used to rotate the server log immediately. This subcommand is
+also useful in creating scripts for rotating the log at convenient times.
+
+This subcommand is supported in remote mode only.
+
+[[sthref2018]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  The server, cluster, or server instance for which logs will be
+  rotated. If this option is omitted, logs are rotated for the default
+  server.
+
+[[sthref2019]]
+
+=== Operands
+
+target::
+  Valid values are:
+
+  * server_name - Default target is `server`. If no target is specified
+    then logs are rotated for the server.
+  * cluster_name - The name of a target cluster.
+  * instance_name - The name of a target server instance.
+
+[[sthref2020]]
+
+=== Examples
+
+[[GSRFM742]][[sthref2021]]
+
+==== Example 1   Rotating the Server Log
+
+This example rotates the server log.
+
+[source]
+----
+asadmin> rotate-log
+Command rotate-log executed successfully.
+----
+
+[[sthref2022]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref2023]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:collect-log-files.html#collect-log-files-1[`collect-log-files`(1)],
+link:list-log-attributes.html#list-log-attributes-1[`list-log-attributes`(1)],
+link:list-log-levels.html#list-log-levels-1[`list-log-levels`(1)],
+link:set-log-attributes.html#set-log-attributes-1[`set-log-attributes`(1)],
+link:set-log-levels.html#set-log-levels-1[`set-log-levels`(1)]
+
+"link:administration-guide/logging.html#GSADG00010[Administering the Logging Service]" in {productName} Administration Guide
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/security.adoc b/docs/reference-manual/src/main/asciidoc/security.adoc
new file mode 100644
index 0000000..e14c8f7
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/security.adoc
@@ -0,0 +1,50 @@
+type=page
+status=published
+title=security
+prev=resource.html
+~~~~~~
+
+= security
+
+[[security-5asc]][[GSRFM00274]][[security]]
+
+== security
+
+Secure and administer {productName} applications
+
+[[sthref2412]]
+
+=== Description
+
+Security is about protecting data: how to prevent unauthorized access or
+damage to it in storage or transit. {productName} has a dynamic,
+extensible security architecture based on the Jakarta EE standard. Built in
+security features include cryptography, authentication and
+authorization, and public key infrastructure. {productName} is built
+on the Java security model, which uses a sandbox where applications can
+run safely, without potential risk to systems or users.
+
+[[sthref2413]]
+
+=== See Also
+
+link:change-admin-password.html#change-admin-password-1[`change-admin-password`(1)],
+link:change-master-password.html#change-master-password-1[`change-master-password`(1)],
+link:create-auth-realm.html#create-auth-realm-1[`create-auth-realm`(1)],
+link:create-file-user.html#create-file-user-1[`create-file-user`(1)],
+link:create-message-security-provider.html#create-message-security-provider-1[`create-message-security-provider`(1)],
+link:create-password-alias.html#create-password-alias-1[`create-password-alias`(1)],
+link:create-ssl.html#create-ssl-1[`create-ssl`(1)],
+link:delete-auth-realm.html#delete-auth-realm-1[`delete-auth-realm`(1)],
+link:delete-file-user.html#delete-file-user-1[`delete-file-user`(1)],
+link:delete-message-security-provider.html#delete-message-security-provider-1[`delete-message-security-provider`(1)],
+link:delete-password-alias.html#delete-password-alias-1[`delete-password-alias`(1)],
+link:delete-ssl.html#delete-ssl-1[`delete-ssl`(1)],
+link:list-auth-realms.html#list-auth-realms-1[`list-auth-realms`(1)],
+link:list-connector-security-maps.html#list-connector-security-maps-1[`list-connector-security-maps`(1)],
+link:list-file-groups.html#list-file-groups-1[`list-file-groups`(1)],
+link:list-file-users.html#list-file-users-1[`list-file-users`(1)].
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/set-batch-runtime-configuration.adoc b/docs/reference-manual/src/main/asciidoc/set-batch-runtime-configuration.adoc
new file mode 100644
index 0000000..dd2f0c0
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/set-batch-runtime-configuration.adoc
@@ -0,0 +1,116 @@
+type=page
+status=published
+title=set-batch-runtime-configuration
+next=set-log-attributes.html
+prev=set.html
+~~~~~~
+
+= set-batch-runtime-configuration
+
+[[set-batch-runtime-configuration-1]][[GSRFM897]][[set-batch-runtime-configuration]]
+
+== set-batch-runtime-configuration
+
+Configures the batch runtime
+
+[[sthref2034]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] set-batch-runtime-configuration [--help]
+[--target target]
+[--datasourcelookupname datasource-lookup-name]
+[--executorservicelookupname executor-service-lookup-name]
+----
+
+[[sthref2035]]
+
+=== Description
+
+The `set-batch-runtime-configuration` subcommand configures the batch
+runtime. The runtime uses a data source and a managed executor service
+to execute batch jobs. Batch runtime configuration data is stored in the
+`config` element in `domain.xml`.
+
+[[sthref2036]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Specifies the target for which to configure the batch runtime. Valid
+  values are as follows:
+
+  `server`;;
+    Configures the batch runtime for the default server instance
+    `server` and is the default value.
+  cluster-name;;
+    Configures the batch runtime for every server instance in the
+    cluster.
+  instance-name;;
+    Configures the batch runtime for a particular server instance.
+
+`--datasourcelookupname`::
+`-d`::
+  The JNDI lookup name of the data source to be used to store job
+  information. The default data source is `jdbc/__TimerPool`. +
+  Do not change the data source after the first batch job has been
+  submitted to the batch runtime for execution. If the data source must
+  be changed, stop and restart the domain and then make the change
+  before any jobs are started or restarted. However, once the data
+  source has been changed, information stored in the previous data
+  source becomes inaccessible.
+`--executorservicelookupname`::
+`-x`::
+  The JNDI lookup name of the managed executor service to be used to
+  provide threads to jobs. The default managed executor service is
+  `concurrent/__defaultManagedExecutorService`. +
+  The managed executor service can be changed after a batch job has been
+  submitted to the batch runtime without impacting execution of the job.
+
+[[sthref2037]]
+
+=== Examples
+
+[[GSRFM898]][[sthref2038]]
+
+==== Example 1   Configuring the Batch Runtime
+
+The following example configures the batch runtime for the default
+server instance to use an existing managed executor service named
+`concurrent/myExecutor`.
+
+[source]
+----
+asadmin> set-batch-runtime-configuration --executorservicelookupname concurrent/myExecutor
+Command set-batch-runtime-configuration executed successfully.
+----
+
+[[sthref2039]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref2040]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:list-batch-jobs.html#list-batch-jobs-1[`list-batch-jobs`(1)],
+link:list-batch-job-executions.html#list-batch-job-executions-1[`list-batch-job-executions`(1)],
+link:list-batch-job-steps.html#list-batch-job-steps-1[`list-batch-job-steps`(1)],
+link:list-batch-runtime-configuration.html#list-batch-runtime-configuration-1[`list-batch-runtime-configuration`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/set-log-attributes.adoc b/docs/reference-manual/src/main/asciidoc/set-log-attributes.adoc
new file mode 100644
index 0000000..772856b
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/set-log-attributes.adoc
@@ -0,0 +1,157 @@
+type=page
+status=published
+title=set-log-attributes
+next=set-log-file-format.html
+prev=set-batch-runtime-configuration.html
+~~~~~~
+
+= set-log-attributes
+
+[[set-log-attributes-1]][[GSRFM00227]][[set-log-attributes]]
+
+== set-log-attributes
+
+Sets the logging attributes for one or more loggers
+
+[[sthref2041]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] set-log-attributes [--help]
+[--target=target]
+attribute-name=attribute-value[:attribute-name=attribute-value]*
+----
+
+[[sthref2042]]
+
+=== Description
+
+The `set-log-attributes` subcommand sets logging attributes for one or
+more loggers. The attributes you can set correspond to the attributes
+that are available in the `logging.properties` file for the domain.
+Depending on the attributes you set, a server restart may be necessary.
+
+This subcommand is supported in remote mode only.
+
+[[sthref2043]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  The server domain, instance, or cluster for which logger attributes
+  will be set. If this option is omitted, attributes are set for the
+  default server.
+
+[[sthref2044]]
+
+=== Operands
+
+target::
+  Valid values are:
+  * server_name - Default target is `server`. If no target is specified
+    then log attributes are set for the server.
+  * cluster_name - The name of a target cluster.
+  * instance_name - The name of a target server instance.
+attribute-name::
+  The fully scoped name of the logging attribute. The
+  `list-log-attributes` subcommand can be used to list the names of all
+  currently defined attributes.
+attribute-value::
+  The value to apply to the specified attribute. +
+  The attribute values that can be specified include the following.
+  Refer to "link:administration-guide/logging.html#GSADG00010[Administering the Logging Service]" in
+  {productName} Administration Guide for complete
+  explanations of each of these values.
+
+  `com.sun.enterprise.server.logging.GFFileHandler.alarms`;;
+    Default is `false`.
+  `com.sun.enterprise.server.logging.GFFileHandler.excludeFields`;;
+    Default is an empty string.
+  `com.sun.enterprise.server.logging.GFFileHandler.file`;;
+    Default is `${com.sun.aas.instanceRoot}/logs/server.log`.
+  `com.sun.enterprise.server.logging.GFFileHandler.flushFrequency`;;
+    Default is `1`.
+  `com.sun.enterprise.server.logging.GFFileHandler.formatter`;;
+    Default is `com.sun.enterprise.server.logging.UniformLogFormatter`.
+  `com.sun.enterprise.server.logging.GFFileHandler.logtoConsole`;;
+    Default is `false`.
+  `com.sun.enterprise.server.logging.GFFileHandler.maxHistoryFiles`;;
+    Default is `0`.
+  `com.sun.enterprise.server.logging.GFFileHandler.multiLineMode`;;
+    Default is `true`.
+  `com.sun.enterprise.server.logging.GFFileHandler.retainErrorsStasticsForHours`;;
+    Default is `0`.
+  `com.sun.enterprise.server.logging.GFFileHandler.rotationLimitInBytes`;;
+    Default is `2000000`.
+  `com.sun.enterprise.server.logging.GFFileHandler.rotationTimelimitInMinutes`;;
+    Default is `0`.
+  `com.sun.enterprise.server.logging.SyslogHandler.useSystemLogging`;;
+    Default is `false`.
+  `handlers`;;
+    Default is `java.util.logging.ConsoleHandler`.
+  `java.util.logging.ConsoleHandler.formatter`;;
+    Default is `com.sun.enterprise.server.logging.UniformLogFormatter`.
+  `java.util.logging.FileHandler.count`;;
+    Default is `1`.
+  `java.util.logging.FileHandler.formatter`;;
+    Default is `java.util.logging.XMLFormatter`.
+  `java.util.logging.FileHandler.limit`;;
+    Default is `50000`.
+  `java.util.logging.FileHandler.pattern`;;
+    Default is `%h/java%u.log`.
+  `log4j.logger.org.hibernate.validator.util.Version`;;
+    Default is `warn`.
+
+[[sthref2045]]
+
+=== Examples
+
+[[GSRFM748]][[sthref2046]]
+
+==== Example 1   Setting the Maximum Number of Log History Files to Maintain
+
+This example sets to 8 the maximum number of log history files for the
+server as a whole.
+
+[source]
+----
+asadmin> set-log-attributes --target=server \
+com.sun.enterprise.server.logging.GFFileHandler.maxHistoryFiles=8
+com.sun.enterprise.server.logging.GFFileHandler.maxHistoryFiles logging
+attribute set with value 8.
+These logging attributes are set for server.
+Command set-log-attributes executed successfully.
+----
+
+[[sthref2047]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref2048]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:collect-log-files.html#collect-log-files-1[`collect-log-files`(1)],
+link:list-log-attributes.html#list-log-attributes-1[`list-log-attributes`(1)],
+link:list-log-levels.html#list-log-levels-1[`list-log-levels`(1)],
+link:rotate-log.html#rotate-log-1[`rotate-log`(1)],
+link:set-log-levels.html#set-log-levels-1[`set-log-levels`(1)]
+
+"link:administration-guide/logging.html#GSADG00010[Administering the Logging Service]" in {productName} Administration Guide
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/set-log-file-format.adoc b/docs/reference-manual/src/main/asciidoc/set-log-file-format.adoc
new file mode 100644
index 0000000..59e8e62
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/set-log-file-format.adoc
@@ -0,0 +1,106 @@
+type=page
+status=published
+title=set-log-file-format
+next=set-log-levels.html
+prev=set-log-attributes.html
+~~~~~~
+
+= set-log-file-format
+
+[[set-log-file-format-1]][[GSRFM879]][[set-log-file-format]]
+
+== set-log-file-format
+
+Sets the formatter to be used for the server log file
+
+[[sthref2049]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] set-log-file-format [--help]
+[--target target]
+[formatter]
+----
+
+[[sthref2050]]
+
+=== Description
+
+The `set-log-file-format` subcommand sets the formatter to be used for
+the server log file for the specified target.
+
+{productName} provides the ULF (UniformLogFormatter) and ODL (Oracle
+Diagnostics Logging) formatters. A custom formatter can also be used by
+specifying the fully qualified name of a class that extends the
+`java.util.logging.Formatter` class.
+
+The custom formatter class can be packaged in a JAR file and placed in
+domain``/lib/ext``, or implemented as an HK2 service and the JAR
+containing the formatter implementation installed in
+`glassfish/modules`.
+
+This subcommand is supported in remote mode only.
+
+[[sthref2051]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  Specifies the target for which the formatter is being set. Specify the
+  name of the server domain, instance, or cluster. If this option is
+  omitted, logger attributes are set for the default server.
+
+[[sthref2052]]
+
+=== Operands
+
+formatter::
+  Specifies the fomatter to be used for the server log file.
+  Valid values are ULF, ODL, or the fully qualified name of the custom
+  formatter class to be used to render the log files.
+  The default value is ODL.
+
+[[sthref2053]]
+
+=== Examples
+
+[[GSRFM880]][[sthref2054]]
+
+==== Example 1   Setting the Log File Format
+
+This example sets the server log file format to `ULF` for `server1`.
+
+[source]
+----
+asadmin> set-log-file-format --target server1 ULF
+Command set-log-file-format executed successfully.
+----
+
+[[sthref2055]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref2056]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:list-loggers.html#list-loggers-1[`list-loggers`(1)]
+
+"link:administration-guide/logging.html#GSADG00010[Administering the Logging Service]" in {productName} Administration Guide
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/set-log-levels.adoc b/docs/reference-manual/src/main/asciidoc/set-log-levels.adoc
new file mode 100644
index 0000000..06fb354
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/set-log-levels.adoc
@@ -0,0 +1,121 @@
+type=page
+status=published
+title=set-log-levels
+next=setup-local-dcom.html
+prev=set-log-file-format.html
+~~~~~~
+
+= set-log-levels
+
+[[set-log-levels-1]][[GSRFM00228]][[set-log-levels]]
+
+== set-log-levels
+
+Sets the log level for one or more loggers
+
+[[sthref2057]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] set-log-levels [--help]
+[--target=target]
+logger-name=logger-level[:logger-name=logger-level]*
+----
+
+[[sthref2058]]
+
+=== Description
+
+The `set-log-levels` subcommand sets the log level for one or more
+loggers. Changes take effect dynamically. Depending on the log levels
+you set, a server restart may be necessary.
+
+This subcommand is supported in remote mode only.
+
+[[sthref2059]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  The server instance or cluster for which log levels will be set. Valid
+  values are:
+  * `server` - The default server instance. If no target is specified
+    then log levels are set for the default server instance.
+  * cluster-name - The name of a cluster.
+  * instance-name - The name of a standalone server instance.
+
+[[sthref2060]]
+
+=== Operands
+
+logger-name::
+  The name of the logger. The `list-log-levels` subcommand can be used
+  to list the names of the current loggers.
+logger-level::
+  The level to set for the logger. Log level values are `SEVERE`,
+  `WARNING`, `INFO`, `CONFIG`, `FINE`, `FINER`, and `FINEST`. The
+  default setting is `INFO`.
+
+[[sthref2061]]
+
+=== Examples
+
+[[GSRFM749]][[sthref2062]]
+
+==== Example 1   Setting a Log Level for a Logger
+
+This example sets the log level of the web container logger to
+`WARNING`.
+
+[source]
+----
+asadmin> set-log-levels jakarta.enterprise.system.container.web=WARNING
+Command set-log-level executed successfully.
+----
+
+[[GSRFM750]][[sthref2063]]
+
+==== Example 2   Setting the Log Level for Multiple Loggers
+
+This example sets the log level of the web container logger to `FINE`
+and the log level of the EJB container logger to `SEVERE`:
+
+[source]
+----
+asadmin set-log-levels jakarta.enterprise.system.container.web=FINE:
+jakarta.enterprise.system.container.ejb=SEVERE
+Command set-log-level executed successfully.
+----
+
+[[sthref2064]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref2065]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:collect-log-files.html#collect-log-files-1[`collect-log-files`(1)],
+link:list-log-attributes.html#list-log-attributes-1[`list-log-attributes`(1)],
+link:list-log-levels.html#list-log-levels-1[`list-log-levels`(1)],
+link:rotate-log.html#rotate-log-1[`rotate-log`(1)],
+link:set-log-attributes.html#set-log-attributes-1[`set-log-attributes`(1)]
+
+"link:administration-guide/logging.html#GSADG00010[Administering the Logging Service]" in {productName} Administration Guide
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/set-web-context-param.adoc b/docs/reference-manual/src/main/asciidoc/set-web-context-param.adoc
new file mode 100644
index 0000000..8e74c56
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/set-web-context-param.adoc
@@ -0,0 +1,182 @@
+type=page
+status=published
+title=set-web-context-param
+next=set-web-env-entry.html
+prev=setup-ssh.html
+~~~~~~
+
+= set-web-context-param
+
+[[set-web-context-param-1]][[GSRFM00230]][[set-web-context-param]]
+
+== set-web-context-param
+
+Sets a servlet context-initialization parameter of a deployed web
+application or module
+
+[[sthref2083]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] set-web-context-param [--help]
+--name=context-param-name
+{--value=value|--ignoredescriptoritem={false|true}}
+[--description=description] application-name[/module]
+----
+
+[[sthref2084]]
+
+=== Description
+
+The `set-web-context-param` subcommand sets a servlet
+context-initialization parameter of one of the following items:
+
+* A deployed web application
+* A web module in a deployed Java Platform, Enterprise Edition (Jakarta EE) application
+
+The application must already be deployed. Otherwise, an error occurs.
+
+This subcommand enables you to change the configuration of a deployed
+application without the need to modify the application's deployment
+descriptors and repackage and redeploy the application.
+
+This subcommand is supported in remote mode only.
+
+[[sthref2085]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--name`::
+  The name of the servlet context-initialization parameter that is to be set.
+`--value`::
+  The value to which the servlet context-initialization parameter is to
+  be set. Either the `--value` option or the `--ignoredescriptoritem` option
+  must be set.
+`--ignoredescriptoritem`::
+  Specifies whether the servlet context-initialization parameter is
+  ignored if it is set in the application's deployment descriptor. When
+  a parameter is ignored, the application behaves as if the parameter
+  had never been set in the application's deployment descriptor. The
+  behavior of an application in this situation depends on the
+  application. +
+  The possible values are as follows:
++
+--
+  `false`;;
+    The value is not ignored (default).
+  `true`;;
+    The value is ignored.
+--
+
++
+Either the `--value` option or the `--ignoredescriptoritem` option must be set.
++
+[NOTE]
+====
+Do not use the `--ignoredescriptoritem` option to unset a servlet
+context-initialization parameter that has previously been set by using
+the `set-web-context-param` subcommand. Instead, use the
+link:unset-web-context-param.html#unset-web-context-param-1[`unset-web-context-param`(1)]
+subcommand for this purpose.
+====
+
+`--description`::
+  An optional textual description of the context parameter that is being
+  set.
+
+[[sthref2086]]
+
+=== Operands
+
+application-name::
+  The name of the application. This name can be obtained from the
+  Administration Console or by using the
+  link:list-applications.html#list-applications-1[`list-applications`(1)] subcommand. +
+  The application must already be deployed. Otherwise, an error occurs.
+module::
+  The relative path to the module within the application's enterprise
+  archive (EAR) file. The path to the module is specified in the
+  `module` element of the application's `application.xml` file. +
+  module is required only if the servlet context-initialization
+  parameter applies to a web module of a Jakarta EE application. If
+  specified, module must follow application-name, separated by a slash (`/`). +
+  For example, the `application.xml` file for the `myApp` application
+  might specify the following web module:
++
+[source,xml]
+----
+<module>
+    <web>
+        <web-uri>myWebModule.war</web-uri>
+    </web>
+</module>
+----
++
+The module would be specified as the operand of this command as `myApp/myWebModule.war`.
+
+[[sthref2087]]
+
+=== Examples
+
+[[GSRFM753]][[sthref2088]]
+
+==== Example 1   Setting a Servlet Context-Initialization Parameter for a Web Application
+
+This example sets the servlet context-initialization parameter
+`javax.faces.STATE_SAVING_METHOD` of the web application `basic-ezcomp`
+to `client`. The description
+`The location where the application's state is preserved` is provided
+for this parameter.
+
+[source]
+----
+asadmin> set-web-context-param --name=javax.faces.STATE_SAVING_METHOD
+--description="The location where the application's state is preserved"
+--value=client basic-ezcomp
+
+Command set-web-context-param executed successfully.
+----
+
+[[GSRFM754]][[sthref2089]]
+
+==== Example 2   Ignoring a Servlet Context-Initialization Parameter That Is Defined in a Deployment Descriptor
+
+This example ignores the servlet context-initialization parameter
+`javax.faces.PROJECT_STAGE` of the web application `basic-ezcomp`.
+
+[source]
+----
+asadmin> set-web-context-param --name=javax.faces.PROJECT_STAGE
+--ignoredescriptoritem=true
+basic-ezcomp
+
+Command set-web-context-param executed successfully.
+----
+
+[[sthref2090]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref2091]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:list-web-context-param.html#list-web-context-param-1[`list-web-context-param`(1)],
+link:unset-web-context-param.html#unset-web-context-param-1[`unset-web-context-param`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/set-web-env-entry.adoc b/docs/reference-manual/src/main/asciidoc/set-web-env-entry.adoc
new file mode 100644
index 0000000..9eecb32
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/set-web-env-entry.adoc
@@ -0,0 +1,199 @@
+type=page
+status=published
+title=set-web-env-entry
+next=show-component-status.html
+prev=set-web-context-param.html
+~~~~~~
+
+= set-web-env-entry
+
+[[set-web-env-entry-1]][[GSRFM00231]][[set-web-env-entry]]
+
+== set-web-env-entry
+
+Sets an environment entry for a deployed web application or module
+
+[[sthref2092]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] set-web-env-entry [--help]
+--name=env-entry-name --type=env-entry-type
+{--value=value|--ignoredescriptoritem={true|false}}
+[--description=description] application-name[/module]
+----
+
+[[sthref2093]]
+
+=== Description
+
+The `set-web-env-entry` subcommand sets an environment entry for one of
+the following items:
+
+* A deployed web application
+* A web module in a deployed Java Platform, Enterprise Edition (Jakarta EE) application
+
+The application must already be deployed. Otherwise, an error occurs.
+
+An application uses the values of environment entries to customize its
+behavior or presentation.
+
+This subcommand enables you to change the configuration of a deployed
+application without the need to modify the application's deployment
+descriptors and repackage and redeploy the application.
+
+This subcommand is supported in remote mode only.
+
+[[sthref2094]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--name`::
+  The name of the environment entry that is to be set. The name is a
+  JNDI name relative to the `java:comp/env` context. The name must be
+  unique within a deployment component.
+`--type`::
+  The fully-qualified Java type of the environment entry value that is
+  expected by the application's code. This type must be one of the
+  following Java types:
+  * `java.lang.Boolean`
+  * `java.lang.Byte`
+  * `java.lang.Character`
+  * `java.lang.Double`
+  * `java.lang.Float`
+  * `java.lang.Integer`
+  * `java.lang.Long`
+  * `java.lang.Short`
+  * `java.lang.String`
+`--value`::
+  The value to which the environment entry is to be set. If the `--type`
+  is `java.lang.Character`, the value must be a single character.
+  Otherwise, the value must be a string that is valid for the
+  constructor of the specified type. +
+  Either the `--value` option or the `--ignoredescriptoritem` option must be set.
+`--ignoredescriptoritem`::
+  Specifies whether the environment entry is ignored if it is set in the
+  application's deployment descriptor. When an environment entry is
+  ignored, the application behaves as if the entry had never been set in
+  the application's deployment descriptor. The behavior of an
+  application in this situation depends on the application. +
+  The possible values are as follows:
++
+--
+  `false`;;
+    The value is not ignored (default).
+  `true`;;
+    The value is ignored.
+--
++
+Either the `--value` option or the `--ignoredescriptoritem` option
+  must be set.
++
+[NOTE]
+====
+Do not use the `--ignoredescriptoritem` option to unset an environment
+entry that has previously been set by using the `set-web-env-entry`
+subcommand. Instead, use the
+link:unset-web-env-entry.html#unset-web-env-entry-1[`unset-web-env-entry`(1)]
+subcommand for this purpose.
+====
+
+`--description`::
+  An optional textual description of the environment entry that is being
+  set.
+
+[[sthref2095]]
+
+=== Operands
+
+application-name::
+  The name of the application. This name can be obtained from the
+  Administration Console or by using the
+  link:list-applications.html#list-applications-1[`list-applications`(1)] subcommand. +
+  The application must already be deployed. Otherwise, an error occurs.
+module::
+  The relative path to the module within the application's enterprise
+  archive (EAR) file. The path to the module is specified in the
+  `module` element of the application's `application.xml` file. +
+  module is required only if the environment entry applies to a web
+  module of a Jakarta EE application. If specified, module must follow
+  application-name, separated by a slash (`/`). +
+  For example, the `application.xml` file for the `myApp` application
+  might specify the following web module:
++
+[source,xml]
+----
+<module>
+    <web>
+        <web-uri>myWebModule.war</web-uri>
+    </web>
+</module>
+----
++
+The module would be specified as the operand of this command as `myApp/myWebModule.war`.
+
+[[sthref2096]]
+
+=== Examples
+
+[[GSRFM755]][[sthref2097]]
+
+==== Example 1   Setting an Environment Entry for a Web Application
+
+This example sets the environment entry `Hello User` of the application
+hello to `techscribe`. The Java type of this entry is
+`java.lang.String`.
+
+[source]
+----
+asadmin> set-web-env-entry --name="Hello User"
+--type=java.lang.String --value=techscribe
+--description="User authentication for Hello appplication" hello
+
+Command set-web-env-entry executed successfully.
+----
+
+[[GSRFM756]][[sthref2098]]
+
+==== Example 2   Ignoring an Environment Entry That Is Defined in a
+Deployment Descriptor
+
+This example ignores the environment entry `Hello Port` of the web
+application `hello`.
+
+[source]
+----
+asadmin> set-web-env-entry --name="Hello Port"
+--type=java.lang.Integer --ignoredescriptoritem=true hello
+
+Command set-web-env-entry executed successfully.
+----
+
+[[sthref2099]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref2100]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:list-applications.html#list-applications-1[`list-applications`(1)],
+link:list-web-env-entry.html#list-web-env-entry-1[`list-web-env-entry`(1)],
+link:unset-web-env-entry.html#unset-web-env-entry-1[`unset-web-env-entry`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/set.adoc b/docs/reference-manual/src/main/asciidoc/set.adoc
new file mode 100644
index 0000000..7885b54
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/set.adoc
@@ -0,0 +1,146 @@
+type=page
+status=published
+title=set
+next=set-batch-runtime-configuration.html
+prev=rotate-log.html
+~~~~~~
+
+set
+===
+
+[[set-1]][[GSRFM00226]][[set]]
+
+set
+---
+
+Sets the values of configurable attributes
+
+[[sthref2024]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] set [--help]
+attribute-name=value
+----
+
+[[sthref2025]]
+
+=== Description
+
+The `set` subcommand uses dotted names to modify the values of one or
+more configurable attributes.
+
+Attributes from the monitoring hierarchy are read-only, but
+configuration attributes can be modified. You can use the
+link:list.html#list-1[`list`(1)] subcommand to display the dotted names
+that represent individual server components and subsystems. For example,
+a dotted name might be `server.applications.web-module`. After you
+discover the particular component or subsystem, you can then use the
+`get` subcommand to access the attributes. For more detailed information
+on dotted names, see the
+link:dotted-names.html#dotted-names-5asc[`dotted-names`(5ASC)] help page.
+
+[NOTE]
+====
+Characters that have special meaning to the shell or command
+interpreter, such as * (asterisk), should be quoted or escaped as
+appropriate to the shell, for example, by enclosing the argument in
+quotes. In multimode, quotes are needed only for arguments that include
+spaces, quotes, or backslash.
+====
+
+By modifying attributes, you can enable and disable services, and
+customize how an existing element functions. An `asadmin` subcommand is
+provided to update some elements. For example, `update-password-alias`.
+However, to update other elements, you must use the `set` command. For
+example, you create a JDBC connection pool by using the
+`create-jdbc-connection-pool` subcommand. To change attribute settings
+later, you use the `set` command.
+
+Any change made by using the `asadmin` utility subcommands or the
+Administration Console are automatically applied to the associated
+{productName} configuration file.
+
+[[sthref2026]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref2027]]
+
+=== Operands
+
+attribute-name=value::
+  Identifies the full dotted name of the attribute name and its value.
+
+[[sthref2028]]
+
+=== Examples
+
+[[GSRFM745]][[sthref2029]]
+
+==== Example 1   Setting a JDBC Connection Pool Attribute
+
+This example changes the steady pool size of the `DerbyPool` connection
+pool to 9.
+
+[source]
+----
+asadmin> set resources.jdbc-connection-pool.DerbyPool.steady-pool-size=9
+Command set executed successfully.
+----
+
+[[GSRFM746]][[sthref2030]]
+
+==== Example 2   Enabling the Monitoring Service for a Monitorable Object
+
+This example enables monitoring for the JVM.
+
+[source]
+----
+asadmin> set server.monitoring-service.module-monitoring-levels.jvm=HIGH
+Command set executed successfully.
+----
+
+[[GSRFM747]][[sthref2031]]
+
+==== Example 3   Turning on Automatic Recovery for the Transaction Service
+
+This example turns on automatic recovery for the transaction service.
+
+[source]
+----
+asadmin> set server.transaction-service.automatic-recovery=true
+Command set executed successfully.
+----
+
+[[sthref2032]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref2033]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:get.html#get-1[`get`(1)], link:list.html#list-1[`list`(1)]
+
+link:dotted-names.html#dotted-names-5asc[`dotted-names`(5ASC)]
+
+link:administration-guide.html#GSADG[{productName} Administration Guide]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/setup-local-dcom.adoc b/docs/reference-manual/src/main/asciidoc/setup-local-dcom.adoc
new file mode 100644
index 0000000..66ff8d0
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/setup-local-dcom.adoc
@@ -0,0 +1,151 @@
+type=page
+status=published
+title=setup-local-dcom
+next=setup-ssh.html
+prev=set-log-levels.html
+~~~~~~
+
+= setup-local-dcom
+
+[[setup-local-dcom-1]][[GSRFM893]][[setup-local-dcom]]
+
+== setup-local-dcom
+
+Sets up DCOM on a host
+
+[[sthref2066]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] setup-local-dcom [--help]
+[--verbose={false|true}]
+--force={false|true}
+----
+
+[[sthref2067]]
+
+=== Description
+
+The `setup-local-dcom` subcommand sets up the Distributed Component
+Object Model (DCOM) remote protocol on the host where the subcommand is
+run. The DCOM remote protocol is available only on Windows systems.
+
+This subcommand must be run by the operating-system-level administrator
+user on the host where DCOM is being set up. Before running this
+command, ensure that items in the Windows operating system are set as
+described in "link:ha-administration-guide/ssh-setup.html#GSHAG449[
+Windows Operating System Settings]" in
+{productName} High Availability Administration Guide.
+
+Setting up DCOM on a host ensures that scripts can be run on the host
+from a remote host. To run scripts on the host from a remote host, the
+Windows user must be allowed full control over some Windows registry keys.
+
+In some versions of Windows, only the user `NT SERVICE\TrustedInstaller`
+has full control over these Windows registry keys. If the version of
+Windows on a host is configured in this way, this subcommand modifies
+these keys to allow full control over them for the Windows user.
+
+[CAUTION]
+====
+This subcommand might modify the permissions of some keys in the Windows
+registry. Before running this command, back up the Windows registry.
+====
+
+By default, the subcommand prompts you to confirm that you want to
+update the Windows registry. To run the subcommand without being
+prompted, set the `--force` option to `true`.
+
+This subcommand is supported in local mode only.
+
+[[sthref2068]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--verbose`::
+`-v`::
+  Specifies whether the subcommand displays information about the
+  operations that are performed to set up DCOM on the host. +
+  Possible values are as follows:
+
+  `false`;;
+    No information about the operations that are performed to set up
+    DCOM is displayed (default).
+  `true`;;
+    The subcommand displays information about the operations that are
+    performed to set up DCOM on the host.
+
+`--force`::
+`-f`::
+  Specifies whether the subcommand prompts you to confirm that you want
+  to update the Windows registry. +
+  Possible values are as follows:
+
+  `false`;;
+    You are prompted to confirm that you want to update the Windows
+    registry (default).
+  `true`;;
+    The subcommand forcibly updates the Windows registry without
+    prompting you.
+
+[[sthref2069]]
+
+=== Examples
+
+[[GSRFM737]][[sthref2070]]
+
+==== Example 1   Setting Up DCOM on a Host
+
+This example sets up DCOM on the host where the subcommand is run.
+
+[source]
+----
+asadmin> setup-local-dcom
+Caution: This command might modify the permissions of some keys in the Windows
+registry.
+Before running this command, back up the Windows registry.
+The modification allows the Windows user full control over these keys.
+
+Are you sure that you want to edit the Windows registry? If so, type yes in full: yes
+Command setup-local-dcom executed successfully.
+----
+
+[[GSRFM894]][[sthref2071]]
+
+==== Example 2   Forcibly Setting Up DCOM on a Host
+
+This example sets up DCOM without prompting for confirmation that the
+user wants to update the Windows registry.
+
+[source]
+----
+asadmin> setup-local-dcom --force=true
+Command setup-local-dcom executed successfully.
+----
+
+[[sthref2072]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref2073]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+"link:ha-administration-guide/ssh-setup.html#GSHAG449[Windows Operating System Settings]" in {productName} High Availability Administration Guide
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/setup-ssh.adoc b/docs/reference-manual/src/main/asciidoc/setup-ssh.adoc
new file mode 100644
index 0000000..ff41afd
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/setup-ssh.adoc
@@ -0,0 +1,263 @@
+type=page
+status=published
+title=setup-ssh
+next=set-web-context-param.html
+prev=setup-local-dcom.html
+~~~~~~
+
+= setup-ssh
+
+[[setup-ssh-1]][[GSRFM00229]][[setup-ssh]]
+
+== setup-ssh
+
+Sets up an SSH key on specified hosts
+
+[[sthref2074]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] setup-ssh [--help]
+[--sshport ssh-port] [--sshuser ssh-user]
+[--sshkeyfile ssh-keyfile] [--sshpublickeyfile ssh-public-keyfile]
+[--generatekey={false|true}]
+host-list
+----
+
+[[sthref2075]]
+
+=== Description
+
+The `setup-ssh` subcommand sets up a secure shell (SSH) key on the hosts
+that are specified as the operand of the subcommand. This key enables
+{productName} to use public-key authentication for authentication of
+the user's SSH login on remote hosts.
+
+SSH ensures that {productName} clusters that span multiple hosts can
+be administered centrally. When a user runs a subcommand for cluster
+administration that acts on multiple hosts, the subcommand is propagated
+from the domain administration server (DAS) host to remote hosts. To
+propagate subcommands that act on a {productName} instance that is
+not running, or on a node where no instances are running,
+{productName} uses SSH. SSH provides confidentiality and security
+for data that is exchanged between the DAS and remote hosts.
+
+Public-key authentication uses an SSH key pair that comprises the
+following keys:
+
+* A private key, which is stored in a secure location on the DAS host
+and which may be protected with a passphrase
+* The public key, which is stored on all the remote hosts with which the
+DAS communicates
+
+The subcommand does not require any configuration information from the
+DAS and does not modify the configuration of the DAS.
+
+This subcommand is supported in local mode only.
+
+Prerequisites for Using the `setup-ssh` Subcommand
+
+To use the `setup-ssh` subcommand, the SSH user must be able to use SSH
+to log in to remote hosts where SSH is to be set up. Specifically, the
+following prerequisites must be met:
+
+* The
+http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1ssh-1[`ssh`(1)]
+client is installed on the DAS host and is accessible through the DAS
+user's path.
+* The
+http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Msshd-1m[`sshd`(1M)]
+daemon is installed and running on all hosts where an SSH key is to be
+set up.
+* The user that the `--sshuser` option specifies has an SSH login on all
+hosts where an SSH key is to be set up.
+* The
+http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1ssh-keygen-1[`ssh-keygen`(1)]
+utility is installed on the DAS host either at the default location or
+in a location that is defined in the DAS user's path.
+* On Windows systems, the SSH package for http://www.cygwin.com/[Cygwin]
+(http://www.cygwin.com/) or an http://www.mkssoftware.com/[MKS Software]
+(http://www.mkssoftware.com/) toolkit that provides SSH is installed.
+
+Behavior of the `setup-ssh` Subcommand
+
+The subcommand sets up SSH connectivity between the DAS host and remote
+hosts by automating the following tasks:
+
+* Generating an SSH key pair. If no SSH key pair exists, the default
+behavior of the subcommand is to prompt the user to generate an SSH key
+pair. The SSH key pair is generated without an encryption passphrase. If
+a passphrase-protected key pair is required, the key pair must be
+generated manually by using the SSH
+command http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1ssh-keygen-1[`ssh-keygen`(1)].
+* Distributing the public key. The subcommand appends the content of the
+public key file to the user-home``/.ssh/authorized_keys`` file on each
+remote host. By default, the subcommand locates the public key file in
+the user-home``/.ssh`` directory on the host where the subcommand is run.
+If the user-home``/.ssh/authorized_keys`` file does not exist on a host,
+the subcommand creates the file. user-home is the user's home directory
+on a host.
++
+To distribute the public key, authentication of the user's SSH login is
+required. If the private key is protected by a passphrase, the
+passphrase is also required. By default, the subcommand prompts the user
+for the password and, if necessary, the passphrase. To distribute the
+public key without being prompted, run the subcommand as follows:
+
+** Set the `--interactive` option of the
+link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility to `false`.
+
+** Set the `--passwordfile` option of the `asadmin` utility to a file in
+which the `AS_ADMIN_SSHPASSWORD` entry specifies the SSH user's password
+for logging in to the specified hosts.
+
+** If a passphrase is required, ensure that the file that
+`--passwordfile` option of the `asadmin` utility specifies also contains
+an entry for `AS_ADMIN_SSHKEYPASSPHRASE`. +
+If public key authentication is already set up on a host, the subcommand
+informs the user that public key authentication is already set up and
+does not distribute the key to the host.
+
+[[sthref2076]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--sshport`::
+  The port to use for SSH connections to the host where SSH is being set
+  up. The default is 22.
+`--sshuser`::
+  The SSH user on the remote host that is to run the process for setting
+  up SSH on that host. The default is the user that is running this
+  subcommand. To ensure that the DAS can read this user's SSH private
+  key file, specify the user that is running the DAS process.
+`--sshkeyfile`::
+  The absolute path to the SSH private key file for user that the
+  `--sshuser` option specifies. This file is used for authentication to
+  the `sshd` daemon on the host. +
+  The user that is running this subcommand must be able to reach the
+  path to the key file and read the key file. +
+  The default is a key file in the user's `.ssh` directory on the host
+  where the subcommand is run. If multiple key files are found, the
+  subcommand uses the following order of preference:
+  1. `id_rsa`
+  2. `id_dsa`
+  3. `identity`
+`--sshpublickeyfile`::
+  The absolute path to the SSH public key file for user that the
+  `--sshuser` option specifies. The content of the public key file is
+  appended to the user's `.ssh/authorized_keys` file on each host where
+  SSH is being set up. If the `.ssh/authorized_keys` file does not exist
+  on a host, the subcommand creates the file. +
+  The user that is running this subcommand must be able to reach the
+  path to the key file and read the key file. +
+  The default is a key file in the user's `.ssh` directory on the host
+  where the subcommand is run. If multiple key files are found, the
+  subcommand uses the following order of preference:
+  1.  `id_rsa.pub`
+  2.  `id_dsa.pub`
+  3.  `identity.pub`
+`--generatekey`::
+  Specifies whether the subcommand generates the SSH key files without
+  prompting the user.
+  Possible values are as follows:
+
+  `true`;;
+    The subcommand generates the SSH key files without prompting the user.
+  `false`;;
+    The behavior of the subcommand depends on whether the SSH key files exist:
+
++
+    * If the SSH key files exist, the subcommand does not generate the files.
+    * If the SSH key files do not exist, the behavior of the subcommand
+    depends on the value of the `--interactive` option of the `asadmin` utility:
++
+--
+    ** If the `--interactive` option is `true`, the subcommand prompts
+    the user to create the files.
+    ** If the `--interactive` option is `false`, the subcommand fails.
+    This value is the default.
+--
+
+[[sthref2077]]
+
+=== Operands
+
+host-list::
+  A space-separated list of the names of the hosts where an SSH key is
+  to be set up.
+
+[[sthref2078]]
+
+=== Examples
+
+[[GSRFM751]][[sthref2079]]
+
+==== Example 1   Setting Up an SSH Key
+
+This example sets up an SSH key for the user `gfuser` on the hosts
+`sj03` and `sj04`. The key file is not generated but is copied from the
+user's `.ssh` directory on the host where the subcommand is running.
+
+[source]
+----
+asadmin> setup-ssh sj03 sj04
+Enter SSH password for gfuser@sj03>
+Copied keyfile /home/gfuser/.ssh/id_rsa.pub to gfuser@sj03
+Successfully connected to gfuser@sj03 using keyfile /home/gfuser/.ssh/id_rsa
+Copied keyfile /home/gfuser/.ssh/id_rsa.pub to gfuser@sj04
+Successfully connected to gfuser@sj04 using keyfile /home/gfuser/.ssh/id_rsa
+Command setup-ssh executed successfully.
+----
+
+[[GSRFM752]][[sthref2080]]
+
+==== Example 2   Generating and Setting Up an SSH Key
+
+This example generates and sets up an SSH key for the user `gfuser` on
+the hosts `sua01` and `sua02`.
+
+[source]
+----
+asadmin> setup-ssh --generatekey=true sua01 sua02
+Enter SSH password for gfuser@sua01>
+Created directory /home/gfuser/.ssh
+/usr/bin/ssh-keygen successfully generated the identification /home/gfuser/.ssh/id_rsa
+Copied keyfile /home/gfuser/.ssh/id_rsa.pub to gfuser@sua01
+Successfully connected to gfuser@sua01 using keyfile /home/gfuser/.ssh/id_rsa
+Copied keyfile /home/gfuser/.ssh/id_rsa.pub to gfuser@sua02
+Successfully connected to gfuser@sua02 using keyfile /home/gfuser/.ssh/id_rsa
+Command setup-ssh executed successfully.
+----
+
+[[sthref2081]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref2082]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1ssh-1[`ssh`(1)],
+http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1ssh-keygen-1[`ssh-keygen`(1)]
+
+http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Msshd-1m[`sshd`(1M)]
+
+Cygwin Information and Installation (`http://www.cygwin.com/`), MKS
+Software (`http://www.mkssoftware.com/`)
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/show-component-status.adoc b/docs/reference-manual/src/main/asciidoc/show-component-status.adoc
new file mode 100644
index 0000000..fd0017b
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/show-component-status.adoc
@@ -0,0 +1,114 @@
+type=page
+status=published
+title=show-component-status
+next=start-cluster.html
+prev=set-web-env-entry.html
+~~~~~~
+
+= show-component-status
+
+[[show-component-status-1]][[GSRFM00232]][[show-component-status]]
+
+== show-component-status
+
+Displays the status of the deployed component
+
+[[sthref2101]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] show-component-status [--help]
+[--target target] component-name
+----
+
+[[sthref2102]]
+
+=== Description
+
+The `show-component-status` subcommand gets the status (either enabled
+or disabled) of the deployed component.
+
+This subcommand is supported in remote mode only.
+
+[[sthref2103]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  This option specifies the target on which you are showing the
+  component status. Valid values are:
+
+  `server`;;
+    Shows the component status for the default server instance `server`
+    and is the default value.
+  `domain`;;
+    Shows the component status for the domain.
+  cluster_name;;
+    Shows the component status for the cluster.
+  instance_name;;
+    Shows the component status for a clustered or stand-alone server
+    instance.
+
+[[sthref2104]]
+
+=== Operands
+
+component-name::
+  The name of the component whose status is to be listed. +
+  The name can include an optional version identifier, which follows the
+  name and is separated from the name by a colon (`:`). The version
+  identifier must begin with a letter or number. It can contain
+  alphanumeric characters plus underscore (`_`), dash (`-`), and period
+  (`.`) characters. To list multiple versions, you can use an asterisk
+  (`*`) as a wildcard character. For more information about module and
+  application versions, see "link:application-deployment-guide/overview.html#GSDPG00324[Module and Application
+  Versions]" in {productName} Application
+  Deployment Guide.
+
+[[sthref2105]]
+
+=== Examples
+
+[[GSRFM757]][[sthref2106]]
+
+==== Example 1   Showing the Status of a Component
+
+This example gets the status of the `MEjbApp` component.
+
+[source]
+----
+asadmin> show-component-status MEjbApp
+Status of MEjbApp is enabled
+Command show-component-status executed successfully.
+----
+
+[[sthref2107]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref2108]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:list-applications.html#list-applications-1[`list-applications`(1)],
+link:list-sub-components.html#list-sub-components-1[`list-sub-components`(1)]
+
+link:application-deployment-guide.html#GSDPG[{productName} Application Deployment
+Guide]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/start-cluster.adoc b/docs/reference-manual/src/main/asciidoc/start-cluster.adoc
new file mode 100644
index 0000000..a614b74
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/start-cluster.adoc
@@ -0,0 +1,131 @@
+type=page
+status=published
+title=start-cluster
+next=start-database.html
+prev=show-component-status.html
+~~~~~~
+
+= start-cluster
+
+[[start-cluster-1]][[GSRFM00233]][[start-cluster]]
+
+== start-cluster
+
+Starts a cluster
+
+[[sthref2109]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] start-cluster [--help]
+[--autohadboverride={true|false}]
+[--verbose={false|true}] cluster-name
+----
+
+[[sthref2110]]
+
+=== Description
+
+The `start-cluster` subcommand starts a cluster by starting all
+{productName} instances in the cluster that are not already running.
+This subcommand requires the Distributed Component Object Model (DCOM)
+remote protocol or secure shell (SSH) to be configured on the host where
+the domain administration server (DAS) is running and on all hosts where
+instances in the cluster reside.
+
+[NOTE]
+====
+If all instances reside on the same host as the DAS, DCOM or SSH is not
+required. You might require to start a cluster in which instances reside
+on hosts where DCOM or SSH is not configured that are remote from the
+DAS. In this situation, run the
+link:start-local-instance.html#start-local-instance-1[`start-local-instance`(1)]
+subcommand for each instance from the host where the instance resides.
+====
+
+You may run this subcommand from any host that can contact the DAS.
+
+This subcommand is supported in remote mode only.
+
+[[sthref2111]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--autohadboverride`::
+  Do not specify this option. This option is retained for compatibility
+  with earlier releases. If you specify this option, a syntax error does
+  not occur. Instead, the subcommand runs successfully and displays a
+  warning message that the option is ignored.
+`--verbose`::
+  Specifies whether additional status information is displayed when the
+  cluster is started.
+  Valid values are as follows:
+
+  `true`;;
+    Displays the command to start each instance in the cluster and
+    whether the attempt to start each instance succeeded.
+  `false`;;
+    Displays no additional status information (default).
+
+[[sthref2112]]
+
+=== Operands
+
+cluster-name::
+  The name of the cluster to start.
+
+[[sthref2113]]
+
+=== Examples
+
+[[GSRFM758]][[sthref2114]]
+
+==== Example 1   Staring a Cluster
+
+This example starts the cluster `ymlcluster`. Additional status
+information is displayed when the cluster is started.
+
+[source]
+----
+asadmin> start-cluster --verbose ymlcluster
+start-instance yml-i-sr1-usca-02
+start-instance yml-i-sr1-usca-01
+
+The command start-instance executed successfully for:
+yml-i-sr1-usca-02 yml-i-sr1-usca-01
+
+Command start-cluster executed successfully.
+----
+
+[[sthref2115]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref2116]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-cluster.html#create-cluster-1[`create-cluster`(1)],
+link:delete-cluster.html#delete-cluster-1[`delete-cluster`(1)],
+link:list-clusters.html#list-clusters-1[`list-clusters`(1)],
+link:setup-ssh.html#setup-ssh-1[`setup-ssh`(1)],
+link:start-local-instance.html#start-local-instance-1[`start-local-instance`(1)],
+link:stop-cluster.html#stop-cluster-1[`stop-cluster`(1)],
+link:validate-dcom.html#validate-dcom-1[`validate-dcom`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/start-database.adoc b/docs/reference-manual/src/main/asciidoc/start-database.adoc
new file mode 100644
index 0000000..2f04b52
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/start-database.adoc
@@ -0,0 +1,177 @@
+type=page
+status=published
+title=start-database
+next=start-domain.html
+prev=start-cluster.html
+~~~~~~
+
+= start-database
+
+[[start-database-1]][[GSRFM00234]][[start-database]]
+
+== start-database
+
+Starts the Java DB
+
+[[sthref2117]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] start-database [--help]
+[--jvmoptions jvm-options]
+[--dbhost host] [--dbport port-no]
+[--dbhome db-file-path]
+----
+
+[[sthref2118]]
+
+=== Description
+
+The `start-database` subcommand starts the Java DB server that is
+available for use with {productName}. Java DB is based upon Apache
+Derby. Use this subcommand only for working with applications deployed
+to the server.
+
+When you start Java DB server by using the `start-database` subcommand,
+the database server is started in Network Server mode. Clients
+connecting to it must use the Java DB ClientDriver. For details on
+connecting to the database, refer to the Apache Derby documentation.
+
+When the database server starts, or a client connects to it
+successfully, the following files are created:
+
+* The `derby.log` file that contains the database server process log
+along with its standard output and standard error information
+* The database files that contain your schema (for example, database tables)
+
+These files are created at the location that is specified by the
+`--dbhome` option. To create the database files at a particular
+location, you must set the `--dbhome` option. If the `--dbhome` option
+is not specified, the `start-database` subcommand determines where to
+create these files as follows:
+
+* If the current working directory contains a file that is named
+`derby.log`, the `start-database` subcommand creates the files in the
+current working directory.
+* Otherwise, the `start-database` subcommand creates the files in the
+as-install``/databases`` directory.
+
+The `start-database` subcommand starts the database process, even if it
+cannot write to the log file.
+
+This subcommand is supported in local mode only.
+
+[[sthref2119]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--jvmoptions`::
+  A space-separated list of command-line options that are passed to the
+  Java application launcher when the database is started. By default, no
+  options are passed. +
+  The format of an option depends on whether the option has a name and a
+  value or only a name:
+
+  * If the option has a name and a value, the format is
+    option-name=value.
+  * If the option has only a name, the format is option-name.
+    For example, `-Xmx512m`.
+`--dbhost`::
+  The host name or IP address of the Java DB server process. The default
+  is the IP address 0.0.0.0, which denotes all network interfaces on the
+  host where you run the `start-database` subcommand.
+`--dbport`::
+  The port number where the Java DB server listens for client
+  connections. This port must be available for the listen socket,
+  otherwise the database server will not start. The default is 1527.
+`--dbhome`::
+  The absolute path to the directory where the database files and the
+  `derby.log` file are created. If the `--dbhome` option is not
+  specified, the `start-database` subcommand determines where to create
+  these files as follows:
+
+  * If the current working directory contains a file that is named
+  `derby.log`, the `start-database` subcommand creates the files in the
+  current working directory.
+  * Otherwise, the `start-database` subcommand creates the files in the
+  as-install``/databases`` directory.
+
++
+To create the database files at a particular location, you must set
+  the `--dbhome` option.
+
+[[sthref2120]]
+
+=== Examples
+
+[[GSRFM759]][[sthref2121]]
+
+==== Example 1   Starting Java DB
+
+This example starts Java DB on the host `host1` and port 5001.
+
+[source]
+----
+asadmin> start-database --dbhost host1 --dbport 5001 --terse=true
+Starting database in the background.  Log redirected to
+/opt/SUNWappserver/databases/derby.log.
+----
+
+[[GSRFM833]][[sthref2122]]
+
+==== Example 2   Starting Java DB With Options for the Java Application
+Launcher
+
+This example starts Java DB with the options for setting the minimum
+heap memory size to 128 megabytes and the maximum heap memory size to
+512 megabytes.
+
+[source]
+----
+asadmin> start-database --jvmoptions="-Xms128m -Xmx512m" --terse=true
+Starting database in the background.
+Log redirected to /export/glassfish7/glassfish/databases/derby.log.
+----
+
+[[sthref2123]]
+
+=== Exit Status
+
+The exit status applies to errors in executing the `asadmin` utility.
+For information on database errors, see the `derby.log` file. This file
+is located in the directory you specify by using the `--dbhome` option
+when you run the `start-database` subcommand. If you did not specify
+`--dbhome`, the value of `DERBY_INSTALL` defaults to as-install``/javadb``.
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref2124]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:stop-database.html#stop-database-1[`stop-database`(1)]
+
+"link:administration-guide/jdbc.html#GSADG00015[Administering Database Connectivity]" in {productName} Administration Guide
+
+For more information about the Java application launcher, see the
+reference page for the operating system that you are using:
+
+* Oracle Solaris and Linux: java - the Java application launcher
+(`http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/java.html`)
+* Windows: java - the Java application launcher
+(`http://docs.oracle.com/javase/6/docs/technotes/tools/windows/java.html`)
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/start-domain.adoc b/docs/reference-manual/src/main/asciidoc/start-domain.adoc
new file mode 100644
index 0000000..01e6d9d
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/start-domain.adoc
@@ -0,0 +1,222 @@
+type=page
+status=published
+title=start-domain
+next=start-instance.html
+prev=start-database.html
+~~~~~~
+
+= start-domain
+
+[[start-domain-1]][[GSRFM00235]][[start-domain]]
+
+== start-domain
+
+Starts the DAS of the specified domain
+
+[[sthref2125]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] start-domain [--help]
+[--debug={true|false}] [--suspend={true|false}] [--domaindir domain-dir]
+[--dry-run={true|false}] [--upgrade={true|false}]
+[--verbose={true|false}] [--watchdog={true|false}]
+[domain-name]
+----
+
+[[sthref2126]]
+
+=== Description
+
+The `start-domain` subcommand starts the domain administration server
+(DAS) of the specified domain. If a domain is not specified, the default
+domain is assumed. If the domains directory contains two or more
+domains, the domain-name operand must be specified.
+
+[NOTE]
+====
+On the Windows platform, processes can bind to the same port. To avoid
+this problem, do not start multiple domains with the same port number at
+the same time.
+====
+
+This subcommand is supported in local mode only.
+
+[NOTE]
+====
+In {productName}, the `start-domain` subcommand prompts for a
+new admin user password if no password has been set for the admin user.
+Additionally, the admin user password must not be blank if secure
+administration is enabled; otherwise, the `start-domain` subcommand
+fails.
+
+To provide the new admin user password, you can use the `--passwordfile`
+utility option of the link:asadmin.html#asadmin-1m[`asadmin`(1M)] command
+after adding the entry `AS_ADMIN_NEWPASSWORD` to the password file.
+====
+
+[[sthref2127]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--debug`::
+`-d`::
+  Specifies whether the domain is started with
+  http://java.sun.com/javase/technologies/core/toolsapis/jpda/[Java
+  Platform Debugger Architecture (JPDA)]
+  (https://docs.oracle.com/en/java/javase/11/docs/specs/jpda/conninv.html)
+  debugging enabled. With debugging enabled extra exceptions can be printed.
+  Possible values are as follows:
+
+  `true`;;
+    The instance is started with JPDA debugging enabled and the port
+    number for JPDA debugging is displayed.
+  `false`;;
+    The instance is started with JPDA debugging disabled (default).
+
+`--suspend`::
+`-s`::
+  Specifies whether the domain is started with
+  http://java.sun.com/javase/technologies/core/toolsapis/jpda/[Java
+  Platform Debugger Architecture (JPDA)]
+  (https://docs.oracle.com/en/java/javase/11/docs/specs/jpda/conninv.html)
+  debugging enabled and suspend the newly started VM before the main class loads.
+  When a debugger connects, it can send a JDWP command to resume the suspended VM.
+  With debugging enabled extra exceptions can be printed.
+  Possible values are as follows:
+
+  `true`;;
+    The instance is started with JPDA debugging enabled and a suspendPolicy of `SUSPEND_ALL`.
+    The port number for JPDA debugging is displayed.
+  `false`;;
+    The instance is started with JPDA debugging disabled (default).
+
+`--dry-run`::
+`-n`::
+  Suppresses actual starting of the domain. Instead, `start-domain`
+  displays the full java command that would be used to start the domain,
+  including all options. Reviewing this command can be useful to confirm
+  JVM options and when troubleshooting startup issues. +
+  The default value is `false`.
+`--domaindir`::
+  The domain root directory, which contains the directory of the domain
+  that is to be restarted. If specified, the path must be accessible in
+  the file system. The default location of the domain root directory is
+  as-install``/domains``.
+`--upgrade`::
+  Specifies whether the configuration of the domain administration
+  server (DAS) is upgraded to the current release. Normally, if the
+  subcommand detects that the configuration is from an older release of
+  {productName}, the configuration is upgraded automatically before
+  being started. You should not need to use this option explicitly. +
+  Possible values are as follows:
+
+  `true`;;
+    When the domain is started, the configuration is modified to be
+    compatible with this release of {productName}, and the
+    {productName} process stops.
+  `false`;;
+    The configuration of the DAS is not updated (default).
+
+`--verbose`::
+`-v`::
+  Specifies whether detailed information about the domain is displayed
+  in the console window where the subcommand is run. +
+  Possible values are as follows:
+
+  `true`;;
+    Detailed startup messages and log messages about the domain are
+    displayed in the console window where the subcommand is run. If the
+    domain is later restarted by running the
+    link:restart-domain.html#restart-domain-1[`restart-domain`(1)]
+    subcommand from a different console window, messages continue to be
+    displayed in the original console window. +
+    You can kill the {productName} process by typing `CTRL-C` in the
+    console window. +
+    You can kill the {productName} process and obtain a thread dump
+    for the server by typing one of the following key combinations in
+    the console window:
+
+    * `CTRL-\` on UNIX systems
+    * `CTRL-Break` on Windows systems
+
+  `false`;;
+    Detailed information is not displayed (default).
+
+`--watchdog`::
+`-w`::
+  Specifies whether limited information about the domain is displayed in
+  the console window where the subcommand is run. The `--watchdog`
+  option is similar to `--verbose` but does not display the detailed
+  startup messages and log messages. This option is useful when running
+  the `asadmin` utility in the background or with no attached console. +
+  Possible values are as follows:
+
+  `true`;;
+    Limited information is displayed in the console window.
+  `false`;;
+    Limited information is not displayed in the console window
+    (default).
+
+[[sthref2128]]
+
+=== Operands
+
+domain-name::
+  The unique name of the domain you want to start. +
+  This operand is optional if only one domain exists in the {productName} installation.
+
+[[sthref2129]]
+
+=== Examples
+
+[[GSRFM760]][[sthref2130]]
+
+==== Example 1   Starting a Domain
+
+This example starts `mydomain4` in the default domains directory.
+
+[source]
+----
+asadmin> start-domain mydomain4
+Waiting for DAS to start. ...........
+Started domain: mydomain4
+Domain location: /myhome/glassfish7/glassfish/domains/mydomain4
+Log file: /myhome/glassfish7/glassfish/domains/mydomain4/logs/server.log
+Admin port for the domain: 4848
+Command start-domain executed successfully.
+----
+
+[[sthref2131]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref2132]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-domain.html#create-domain-1[`create-domain`(1)],
+link:delete-domain.html#delete-domain-1[`delete-domain`(1)],
+link:list-domains.html#list-domains-1[`list-domains`(1)],
+link:restart-domain.html#restart-domain-1[`restart-domain`(1)],
+link:stop-domain.html#stop-domain-1[`stop-domain`(1)]
+
+Java Platform Debugger Architecture (JPDA)
+(https://docs.oracle.com/en/java/javase/11/docs/specs/jpda/conninv.html)
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/start-instance.adoc b/docs/reference-manual/src/main/asciidoc/start-instance.adoc
new file mode 100644
index 0000000..aaddcb1
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/start-instance.adoc
@@ -0,0 +1,196 @@
+type=page
+status=published
+title=start-instance
+next=start-local-instance.html
+prev=start-domain.html
+~~~~~~
+
+= start-instance
+
+[[start-instance-1]][[GSRFM00236]][[start-instance]]
+
+== start-instance
+
+Starts a {productName} instance
+
+[[sthref2133]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] start-instance [--help]
+[--debug={false|true}] [--sync={normal|full|none}]
+instance-name
+----
+
+[[sthref2134]]
+
+=== Description
+
+The `start-instance` subcommand starts a {productName} instance.
+This subcommand requires the Distributed Component Object Model (DCOM)
+remote protocol or secure shell (SSH) to be configured on the machine
+where the domain administration server (DAS) is running and on the
+machine where the instance resides.
+
+[NOTE]
+====
+DCOM or SSH is not required if the instance resides on a node of type
+`CONFIG` that represents the local host. A node of type `CONFIG` is not
+enabled for remote communication over DCOM or SSH.
+====
+
+You may run this subcommand from any machine that can contact the DAS.
+
+The subcommand can start any {productName} instance, regardless of
+how the instance was created. For example, this subcommand can start an
+instance that was created by using the
+link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)]
+subcommand.
+
+This command is supported in remote mode only.
+
+[[sthref2135]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--debug`::
+  Specifies whether the instance is started with
+  http://java.sun.com/javase/technologies/core/toolsapis/jpda/[Java
+  Platform Debugger Architecture (JPDA)]
+  (http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html)
+  debugging enabled. +
+  Possible values are as follows:
+
+  `true`;;
+    The instance is started with JPDA debugging enabled and the port
+    number for JPDA debugging is displayed.
+  `false`;;
+    The instance is started with JPDA debugging disabled (default).
+
+`--sync`::
+  The type of synchronization between the DAS and the instance's files
+  when the instance is started. +
+  Possible values are as follows:
+
+  `none`;;
+    The DAS does not synchronize the instance's files with any changes.
+    This type of synchronization minimizes the time that is required to
+    start the instance.
+  `normal`;;
+    The DAS synchronizes the instance with changes since the last
+    synchronization as follows:
++
+--
+    * For the `config` directory, the DAS synchronizes the instance with all changes.
+    * For the `applications` directory and `docroot` directory, only a
+      change to a top-level subdirectory causes the DAS to synchronize all
+      files under that subdirectory.
+--
++
+If a file below a top level subdirectory is changed without a change
+    to a file in the top level subdirectory, full synchronization is
+    required. In normal operation, files below the top level
+    subdirectories of these directories are not changed. If an
+    application is deployed and undeployed, full synchronization is not
+    necessary to update the instance with the change. +
+    This value is the default.
+  `full`;;
+    The DAS synchronizes the instance with all of the instance's files,
+    regardless of whether the files have changed since the last
+    synchronization. This type of synchronization might delay the
+    startup of the instance while the DAS updates all files in the
+    instance's directories.
+
+[[sthref2136]]
+
+=== Operands
+
+instance-name::
+  The name of the {productName} instance to start.
+
+[[sthref2137]]
+
+=== Examples
+
+[[GSRFM761]][[sthref2138]]
+
+==== Example 1   Starting a {productName} Instance
+
+This example starts the {productName} instance `pmdsa1`.
+
+[source]
+----
+asadmin> start-instance pmdsa1
+Waiting for the server to start ..............................
+Successfully started the instance: pmdsa1
+instance Location: /export/glassfish7/glassfish/nodes/localhost/pmdsa1
+Log File: /export/glassfish7/glassfish/nodes/localhost/pmdsa1/logs/server.log
+Admin Port: 24848
+Command start-local-instance executed successfully.
+The instance, pmdsa1, was started on host localhost
+
+Command start-instance executed successfully.
+----
+
+[[GSRFM762]][[sthref2139]]
+
+==== Example 2   Starting a {productName} Instance With JPDA Debugging
+Enabled
+
+This example starts the {productName} instance `ymlsa1` with JPDA
+debugging enabled.
+
+[source]
+----
+asadmin> start-instance --debug=true ymlsa1
+Waiting for the server to start ...............................
+Successfully started the instance: ymlsa1
+instance Location: /export/glassfish7/glassfish/nodes/localhost/ymlsa1
+Log File: /export/glassfish7/glassfish/nodes/localhost/ymlsa1/logs/server.log
+Admin Port: 24849
+Debugging is enabled. The debugging port is: 29010
+Command start-local-instance executed successfully.
+The instance, ymlsa1, was started on host localhost
+
+Command start-instance executed successfully.
+----
+
+[[sthref2140]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref2141]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-instance.html#create-instance-1[`create-instance`(1)],
+link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)],
+link:delete-instance.html#delete-instance-1[`delete-instance`(1)],
+link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)],
+link:setup-ssh.html#setup-ssh-1[`setup-ssh`(1)],
+link:start-domain.html#start-domain-1[`start-domain`(1)],
+link:start-local-instance.html#start-local-instance-1[`start-local-instance`(1)],
+link:stop-domain.html#stop-domain-1[`stop-domain`(1)],
+link:stop-instance.html#stop-instance-1[`stop-instance`(1)],
+link:stop-local-instance.html#stop-local-instance-1[`stop-local-instance`(1)],
+link:validate-dcom.html#validate-dcom-1[`validate-dcom`(1)]
+
+Java Platform Debugger Architecture (JPDA)
+(`http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html`)
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/start-local-instance.adoc b/docs/reference-manual/src/main/asciidoc/start-local-instance.adoc
new file mode 100644
index 0000000..cd71a04
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/start-local-instance.adoc
@@ -0,0 +1,238 @@
+type=page
+status=published
+title=start-local-instance
+next=stop-cluster.html
+prev=start-instance.html
+~~~~~~
+
+= start-local-instance
+
+[[start-local-instance-1]][[GSRFM00237]][[start-local-instance]]
+
+== start-local-instance
+
+Starts a {productName} instance on the host where the subcommand is run
+
+[[sthref2142]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] start-local-instance [--help]
+[--nodedir node-dir] [--node node]
+[--debug={false|true}] [--dry-run={true|false}]
+[--sync={normal|full|none}]
+[--verbose={false|true}] [--watchdog={true|false}]
+[instance-name]
+----
+
+[[sthref2143]]
+
+=== Description
+
+The `start-local-instance` subcommand starts a {productName}
+instance on the host where the subcommand is run. This subcommand does
+not require the Distributed Component Object Model (DCOM) remote
+protocol or secure shell (SSH) to be configured. You must run this
+command from the host where the instance resides.
+
+The subcommand can start any {productName} instance, regardless of
+how the instance was created. For example, this subcommand can start an
+instance that was created by using the
+link:create-instance.html#create-instance-1[`create-instance`(1)]
+subcommand.
+
+The `start-local-instance` subcommand does not contact the domain
+administration server (DAS) to determine the node on which the instance
+resides. To determine the node on which the instance resides, the
+subcommand searches the directory that contains the node directories. If
+multiple node directories exist, the node must be specified as an option
+of the subcommand.
+
+This subcommand is supported in local mode. However, to synchronize the
+instance with the DAS, this subcommand must be run in remote mode.
+
+[[sthref2144]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--nodedir`::
+  Specifies the directory that contains the instance's node directory.
+  The instance's files are stored in the instance's node directory. The
+  default is as-install``/nodes``.
+`--node`::
+  Specifies the node on which the instance resides. This option may be
+  omitted only if the directory that the `--nodedir` option specifies
+  contains only one node directory. Otherwise, this option is required.
+`--debug`::
+`-d`::
+  Specifies whether the instance is started with
+  http://java.sun.com/javase/technologies/core/toolsapis/jpda/[Java
+  Platform Debugger Architecture (JPDA)]
+  (http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html)
+  debugging enabled.
++
+Possible values are as follows:
+
+  `true`;;
+    The instance is started with JPDA debugging enabled and the port
+    number for JPDA debugging is displayed.
+  `false`;;
+    The instance is started with JPDA debugging disabled (default).
+`--dry-run`::
+`-n`::
+  Suppresses actual starting of the instance. Instead,
+  `start-local-instance` displays the full command that would be used to
+  start the instance, including all options. Reviewing this command can
+  be useful when troubleshooting startup issues. +
+  The default value is `false`.
+
+`--sync`::
+  The type of synchronization between the DAS and the instance's files
+  when the instance is started. +
+  Possible values are as follows:
+  `none`;;
+    The DAS does not synchronize the instance's files with any changes.
+    This type of synchronization minimizes the time that is required to
+    start the instance.
+  `normal`;;
+    The DAS synchronizes the instance with changes since the last
+    synchronization as follows:
+
+    * For the `config` directory, the DAS synchronizes the instance with all changes.
+    * For the `applications` directory and `docroot` directory, only a
+    change to a top-level subdirectory causes the DAS to synchronize all
+    files under that subdirectory.
+
++
+If a file below a top level subdirectory is changed without a change
+    to a file in the top level subdirectory, full synchronization is
+    required. In normal operation, files below the top level
+    subdirectories of these directories are not changed. If an
+    application is deployed and undeployed, full synchronization is not
+    necessary to update the instance with the change. +
+    This value is the default.
+  `full`;;
+    The DAS synchronizes the instance with all of the instance's files,
+    regardless of whether the files have changed since the last
+    synchronization. This type of synchronization might delay the
+    startup of the instance while the DAS updates all files in the
+    instance's directories.
++
+[CAUTION]
+====
+If the DAS is not running or is unreachable from the host where you
+are running this subcommand, do not set the `--sync` option to
+`full`. To perform a full synchronization, the subcommand removes
+the instance's cache. If the DAS cannot be contacted to replace the
+cache, the subcommand fails and the instance cannot be restarted
+until it is resynchronized with the DAS.
+====
+
+`--verbose`::
+`-v`::
+  Specifies whether detailed information about the instance is displayed
+  in the console window where the subcommand is run.
++
+Possible values are as follows:
+
+  `true`;;
+    Detailed startup messages and log messages about the instance are
+    displayed in the console window where the subcommand is run. If the
+    instance is later restarted by running the
+    link:restart-local-instance.html#restart-local-instance-1[`restart-local-instance`(1)]
+    subcommand from a different console window, messages continue to be
+    displayed in the original console window. +
+    You can kill the {productName} process by typing `CTRL-C` in the
+    console window. +
+    You can kill the {productName} process and obtain a thread dump
+    for the server by typing one of the following key combinations in
+    the console window:
+
+    * `CTRL-\` on UNIX systems
+    * `CTRL-Break` on Windows systems
+  `false`;;
+    Detailed information is not displayed (default).
+
+`--watchdog`::
+`-w`::
+  Specifies whether limited information about the instance is displayed
+  in the console window where the subcommand is run. The `--watchdog`
+  option is similar to `--verbose` but does not display the detailed
+  startup messages and log messages. This option is useful when running
+  the `asadmin` utility in the background or with no attached console. +
+  Possible values are as follows:
+
+  `true`;;
+    Limited information is displayed in the console window.
+  `false`;;
+    Limited information is not displayed in the console window
+    (default).
+
+[[sthref2145]]
+
+=== Operands
+
+instance-name::
+  The name of the instance to start.
+
+[[sthref2146]]
+
+=== Examples
+
+[[GSRFM763]][[sthref2147]]
+
+==== Example 1   Starting an Instance Locally
+
+This example starts the instance `yml-i-sj01` on the host where the
+subcommand is run.
+
+[source]
+----
+asadmin> start-local-instance --node sj01 yml-i-sj01
+Waiting for the server to start .................................
+Successfully started the instance: yml-i-sj01
+instance Location: /export/glassfish7/glassfish/nodes/sj01/yml-i-sj01
+Log File: /export/glassfish7/glassfish/nodes/sj01/yml-i-sj01/logs/server.log
+Admin Port: 24849
+Command start-local-instance executed successfully.
+----
+
+[[sthref2148]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref2149]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-instance.html#create-instance-1[`create-instance`(1)],
+link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)],
+link:delete-instance.html#delete-instance-1[`delete-instance`(1)],
+link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)],
+link:restart-instance.html#restart-instance-1[`restart-instance`(1)],
+link:restart-local-instance.html#restart-local-instance-1[`restart-local-instance`(1)],
+link:start-domain.html#start-domain-1[`start-domain`(1)],
+link:start-instance.html#start-instance-1[`start-instance`(1)],
+link:stop-domain.html#stop-domain-1[`stop-domain`(1)],
+link:stop-instance.html#stop-instance-1[`stop-instance`(1)],
+link:stop-local-instance.html#stop-local-instance-1[`stop-local-instance`(1)]
+
+Java Platform Debugger Architecture (JPDA)
+(http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html)
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/stop-cluster.adoc b/docs/reference-manual/src/main/asciidoc/stop-cluster.adoc
new file mode 100644
index 0000000..7b95d6e
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/stop-cluster.adoc
@@ -0,0 +1,129 @@
+type=page
+status=published
+title=stop-cluster
+next=stop-database.html
+prev=start-local-instance.html
+~~~~~~
+
+= stop-cluster
+
+[[stop-cluster-1]][[GSRFM00238]][[stop-cluster]]
+
+== stop-cluster
+
+Stops a {productName} cluster
+
+[[sthref2150]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] stop-cluster [--help]
+[--verbose={false|true}]
+[--kill={false|true}]
+[--autohadboverride={true|false}]
+cluster-name
+----
+
+[[sthref2151]]
+
+=== Description
+
+The `stop-cluster` subcommand stops a {productName} cluster by
+stopping all running {productName} instances in the cluster.
+
+This subcommand is supported in remote mode only.
+
+[[sthref2152]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--verbose`::
+  Specifies whether additional progress messages about the status of
+  instances in the cluster are displayed while the cluster is being stopped. +
+  Possible values are as follows:
+
+  `true`;;
+    Additional progress messages about the status of instances in the
+    cluster are displayed.
+  `false`;;
+    No messages about the status of instances in the cluster are
+    displayed.
+
+`--kill`::
+  Specifies whether each instance in the cluster is killed by using
+  functionality of the operating system to terminate the instance
+  process. +
+  Possible values are as follows:
+
+  `false`;;
+    No instances are killed. The subcommand uses functionality of the
+    Java platform to terminate each instance process (default).
+  `true`;;
+    Each instance is killed. The subcommand uses functionality of the
+    operating system to terminate each instance process.
+
+`--autohadboverride`::
+  Do not specify this option. This option is retained for compatibility
+  with earlier releases. If you specify this option, a syntax error does
+  not occur. Instead, the subcommand runs successfully and displays a
+  warning message that the option is ignored.
+
+[[sthref2153]]
+
+=== Operands
+
+cluster-name::
+  The name of the cluster to stop.
+
+[[sthref2154]]
+
+=== Examples
+
+[[GSRFM764]][[sthref2155]]
+
+==== Example 1   Stopping a Cluster
+
+This example stops the cluster `pmdcluster`. Additional progress
+messages about the status of instances in the cluster are displayed
+while the cluster is being stopped.
+
+[source]
+----
+asadmin> stop-cluster --verbose pmdcluster
+stop-instance pmd-i-sj01
+stop-instance pmd-i-sj02
+
+The command stop-instance executed successfully for: pmd-i-sj01 pmd-i-sj02
+
+Command stop-cluster executed successfully.
+----
+
+[[sthref2156]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref2157]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-cluster.html#create-cluster-1[`create-cluster`(1)],
+link:delete-cluster.html#delete-cluster-1[`delete-cluster`(1)],
+link:list-clusters.html#list-clusters-1[`list-clusters`(1)],
+link:start-cluster.html#start-cluster-1[`start-cluster`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/stop-database.adoc b/docs/reference-manual/src/main/asciidoc/stop-database.adoc
new file mode 100644
index 0000000..a51a6dd
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/stop-database.adoc
@@ -0,0 +1,108 @@
+type=page
+status=published
+title=stop-database
+next=stop-domain.html
+prev=stop-cluster.html
+~~~~~~
+
+= stop-database
+
+[[stop-database-1]][[GSRFM00239]][[stop-database]]
+
+== stop-database
+
+Stops the Java DB
+
+[[sthref2158]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] stop-database [--help]
+[--dbuser db-user]
+[--dbhost host] [--dbport port-no]
+----
+
+[[sthref2159]]
+
+=== Description
+
+The `stop-database` subcommand stops a process of the Java DB server.
+Java DB server is available for use with {productName} and is based
+upon Apache Derby. The database is typically started with the
+link:start-database.html#start-database-1[`start-database`(1)]
+subcommand. A single host can have multiple database server processes
+running on different ports. The `stop-database` subcommand stops the
+database server process for the specified port only.
+
+This subcommand is supported in local mode only.
+
+[[sthref2160]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--dbuser`::
+  The user name of the Java DB user that is to stop the server process.
+  This option is required only when Java DB user authentication is enabled. +
+  If this option is omitted, no user is specified. By default, Java DB
+  user authentication is disabled, so no user or password is required.
+`--dbhost`::
+  The host name or IP address of the Java DB server process. The default
+  is the IP address 0.0.0.0, which denotes all network interfaces on the
+  host where you run the `stop-database` subcommand.
+`--dbport`::
+  The port number where the Java DB server listens for client
+  connections. The default is 1527.
+
+[[sthref2161]]
+
+=== Examples
+
+[[GSRFM765]][[sthref2162]]
+
+==== Example 1   Stopping Java DB
+
+This example stops Java DB on host host1 and port 5001.
+
+[source]
+----
+asadmin> stop-database --dbhost host1 --dbport 5001
+Connection obtained for host: host1, port number 5001.
+Shutdown successful.
+Command stop-database executed successfully.
+----
+
+[[sthref2163]]
+
+=== Exit Status
+
+The exit status applies to errors in executing the `asadmin` utility.
+For information on database errors, see the `derby.log` file. This file
+is located in the directory you specify by using the `--dbhome` option
+when you run the `start-database` subcommand. If you did not specify
+`--dbhome`, the value of `DERBY_INSTALL` defaults to
+as-install``/javadb``.
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref2164]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:start-database.html#start-database-1[`start-database`(1)]
+
+"link:administration-guide/jdbc.html#GSADG00015[Administering Database Connectivity]" in {productName} Administration Guide
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/stop-domain.adoc b/docs/reference-manual/src/main/asciidoc/stop-domain.adoc
new file mode 100644
index 0000000..fbb6308
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/stop-domain.adoc
@@ -0,0 +1,127 @@
+type=page
+status=published
+title=stop-domain
+next=stop-instance.html
+prev=stop-database.html
+~~~~~~
+
+= stop-domain
+
+[[stop-domain-1]][[GSRFM00240]][[stop-domain]]
+
+== stop-domain
+
+Stops the Domain Administration Server of the specified domain
+
+[[sthref2165]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] stop-domain [--help]
+[--domaindir domaindir]
+[--force={true|false}] [--kill={false|true}]
+[domain-name]
+----
+
+[[sthref2166]]
+
+=== Description
+
+The `stop-domain` subcommand stops the Domain Administration Server
+(DAS) of the specified domain. If the domain directory is not specified,
+the domain in the default domains directory is stopped. If there are two
+or more domains in the domains directory, the domain-name operand must
+be specified.
+
+This subcommand is supported in local or remote mode. If you specify a
+host name, the subcommand assumes you are operating in remote mode,
+which means you must correctly authenticate to the remote server. In
+local mode, you normally do not need to authenticate to the server as
+long as you are running the subcommand as the same user who started the server.
+
+[[sthref2167]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--domaindir`::
+  Specifies the directory of the domain that is to be stopped. If
+  specified, the path must be accessible in the file system. If not
+  specified, the domain in the default as-install``/domains`` directory is
+  stopped.
+`--force`::
+  Specifies whether the domain is forcibly stopped immediately. +
+  Possible values are as follows:
+
+  `true`;;
+    The domain is forcibly stopped immediately (default).
+  `false`;;
+    The subcommand waits until all threads that are associated with the
+    domain are exited before stopping the domain.
+
+`--kill`::
+  Specifies whether the domain is killed by using functionality of the
+  operating system to terminate the domain process. +
+  Possible values are as follows:
+
+  `false`;;
+    The domain is not killed. The subcommand uses functionality of the
+    Java platform to terminate the domain process (default).
+  `true`;;
+    The domain is killed. The subcommand uses functionality of the
+    operating system to terminate the domain process.
+
+[[sthref2168]]
+
+=== Operands
+
+domain-name::
+  The name of the domain you want to stop. Default is the name specified
+  during installation, usually `domain1`.
+
+[[sthref2169]]
+
+=== Examples
+
+[[GSRFM766]][[sthref2170]]
+
+==== Example 1   Stopping a Domain
+
+This example stops the domain named `sampleDomain` in the default
+domains directory.
+
+[source]
+----
+asadmin> stop-domain sampleDomain
+Waiting for the domain to stop .................
+Command stop-domain executed successfully.
+----
+
+[[sthref2171]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref2172]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:delete-domain.html#delete-domain-1[`delete-domain`(1)],
+link:list-domains.html#list-domains-1[`list-domains`(1)],
+link:restart-domain.html#restart-domain-1[`restart-domain`(1)],
+link:start-domain.html#start-domain-1[`start-domain`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/stop-instance.adoc b/docs/reference-manual/src/main/asciidoc/stop-instance.adoc
new file mode 100644
index 0000000..0368438
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/stop-instance.adoc
@@ -0,0 +1,122 @@
+type=page
+status=published
+title=stop-instance
+next=stop-local-instance.html
+prev=stop-domain.html
+~~~~~~
+
+= stop-instance
+
+[[stop-instance-1]][[GSRFM00241]][[stop-instance]]
+
+== stop-instance
+
+Stops a running {productName} instance
+
+[[sthref2173]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] stop-instance [--help]
+[--force={false|true}] [--kill={false|true}]
+instance-name
+----
+
+[[sthref2174]]
+
+=== Description
+
+The `stop-instance` subcommand stops a running {productName} instance.
+
+The subcommand can stop any {productName} instance, regardless of
+how the instance was created. For example, this subcommand can stop an
+instance that was created by using the
+link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)] subcommand.
+
+This command is supported in remote mode only.
+
+[[sthref2175]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--force`::
+  Specifies whether the instance is forcibly stopped immediately. +
+  Possible values are as follows:
+
+  `true`;;
+    The instance is forcibly stopped immediately (default).
+  `false`;;
+    The subcommand waits until all threads that are associated with the
+    instance are exited before stopping the instance.
+
+`--kill`::
+  Specifies whether the instance is killed by using functionality of the
+  operating system to terminate the instance process. +
+  Possible values are as follows:
+
+  `false`;;
+    The instance is not killed. The subcommand uses functionality of the
+    Java platform to terminate the instance process (default).
+  `true`;;
+    The instance is killed. The subcommand uses functionality of the
+    operating system to terminate the instance process.
+
+[[sthref2176]]
+
+=== Operands
+
+instance-name::
+  This is the name of the {productName} instance to stop.
+
+[[sthref2177]]
+
+=== Examples
+
+This example stops the {productName} instance `yml-i-sj01`.
+
+[[GSRFM767]][[sthref2178]]
+
+==== Example 1   Stopping a {productName} Instance
+
+[source]
+----
+asadmin> stop-instance yml-i-sj01
+The instance, yml-i-sj01, was stopped.
+
+Command stop-instance executed successfully.
+----
+
+[[sthref2179]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref2180]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-instance.html#create-instance-1[`create-instance`(1)],
+link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)],
+link:delete-instance.html#delete-instance-1[`delete-instance`(1)],
+link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)],
+link:start-domain.html#start-domain-1[`start-domain`(1)],
+link:start-instance.html#start-instance-1[`start-instance`(1)],
+link:start-local-instance.html#start-local-instance-1[`start-local-instance`(1)],
+link:stop-domain.html#stop-domain-1[`stop-domain`(1)],
+link:stop-local-instance.html#stop-local-instance-1[`stop-local-instance`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/stop-local-instance.adoc b/docs/reference-manual/src/main/asciidoc/stop-local-instance.adoc
new file mode 100644
index 0000000..b3ecaa2
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/stop-local-instance.adoc
@@ -0,0 +1,138 @@
+type=page
+status=published
+title=stop-local-instance
+next=undeploy.html
+prev=stop-instance.html
+~~~~~~
+
+= stop-local-instance
+
+[[stop-local-instance-1]][[GSRFM00242]][[stop-local-instance]]
+
+== stop-local-instance
+
+Stops a {productName} instance on the machine where the subcommand is run
+
+[[sthref2181]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] stop-local-instance [--help]
+[--nodedir node-dir] [--node node]
+[--force={true|false}] [--kill={false|true}]
+[instance-name]
+----
+
+[[sthref2182]]
+
+=== Description
+
+The `stop-local-instance` subcommand stops a {productName} instance
+on the machine where the subcommand is run. This subcommand does not
+require secure shell (SSH) to be configured. You must run this command
+from the machine where the instance resides.
+
+The subcommand can stop any {productName} instance, regardless of
+how the instance was created. For example, this subcommand can stop an
+instance that was created by using the
+link:create-instance.html#create-instance-1[`create-instance`(1)] subcommand.
+
+The `stop-local-instance` subcommand does not contact the DAS to
+determine the node on which the instance resides. To determine the node
+on which the instance resides, the subcommand searches the directory
+that contains the node directories. If multiple node directories exist,
+the node must be specified as an option of the subcommand.
+
+This subcommand is supported in local mode.
+
+[[sthref2183]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--nodedir`::
+  Specifies the directory that contains the instance's node directory.
+  The instance's files are stored in the instance's node directory. The
+  default is as-install``/nodes``.
+`--node`::
+  Specifies the node on which the instance resides. This option may be
+  omitted only if the directory that the `--nodedir` option specifies
+  contains only one node directory. Otherwise, this option is required.
+`--force`::
+  Specifies whether the instance is forcibly stopped immediately. +
+  Possible values are as follows:
+
+  `true`;;
+    The instance is forcibly stopped immediately (default).
+  `false`;;
+    The subcommand waits until all threads that are associated with the
+    instance are exited before stopping the instance.
+
+`--kill`::
+  Specifies whether the instance is killed by using functionality of the
+  operating system to terminate the instance process. +
+  Possible values are as follows:
+
+  `false`;;
+    The instance is not killed. The subcommand uses functionality of the
+    Java platform to terminate the instance process (default).
+  `true`;;
+    The instance is killed. The subcommand uses functionality of the
+    operating system to terminate the instance process.
+
+[[sthref2184]]
+
+=== Operands
+
+instance-name::
+  The name of the instance to stop.
+
+[[sthref2185]]
+
+=== Examples
+
+[[GSRFM768]][[sthref2186]]
+
+==== Example 1   Stopping an Instance Locally
+
+This example stops the instance `yml-i-sj01` on the machine where the
+subcommand is run.
+
+[source]
+----
+asadmin> stop-local-instance --node sj01 yml-i-sj01
+Waiting for the instance to stop ...
+Command stop-local-instance executed successfully.
+----
+
+[[sthref2187]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref2188]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-instance.html#create-instance-1[`create-instance`(1)],
+link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)],
+link:delete-instance.html#delete-instance-1[`delete-instance`(1)],
+link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)],
+link:start-instance.html#start-instance-1[`start-instance`(1)],
+link:start-local-instance.html#start-local-instance-1[`start-local-instance`(1)],
+link:stop-instance.html#stop-instance-1[`stop-instance`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/title.adoc b/docs/reference-manual/src/main/asciidoc/title.adoc
new file mode 100644
index 0000000..08a9240
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/title.adoc
@@ -0,0 +1,55 @@
+type=page
+status=published
+title={productName} Reference Manual, Release 7
+next=preface.html
+prev=toc.html
+~~~~~~
+
+= {productName} Reference Manual, Release 7
+
+[[eclipse-glassfish-server]]
+== {productName}
+
+Reference Manual
+
+Release 7
+
+Contributed 2018 - 2022
+
+This reference manual describes administration commands and utility
+commands that are available with {productName} 7.
+This reference manual also describes concepts that are related to
+{productName} administration.
+
+The available options, arguments, and operands for each command are
+provided in accordance with standard rules of command syntax, along with
+availability attributes, diagnostic information, and cross-references to
+other manual pages and reference material with relevant information.
+
+This reference manual is for all users of {productName}.
+
+[[sthref1]]
+
+'''''
+
+{productName} Reference Manual, Release 7
+
+Copyright © 2013, 2019 Oracle and/or its affiliates. All rights reserved.
+
+This program and the accompanying materials are made available under the
+terms of the Eclipse Public License v. 2.0, which is available at
+http://www.eclipse.org/legal/epl-2.0.
+
+SPDX-License-Identifier: EPL-2.0
+
+Oracle and Java are registered trademarks of Oracle and/or its
+affiliates. Other names may be trademarks of their respective owners.
+
+Intel and Intel Xeon are trademarks or registered trademarks of Intel
+Corporation. All SPARC trademarks are used under license and are
+trademarks or registered trademarks of SPARC International, Inc. AMD,
+Opteron, the AMD logo, and the AMD Opteron logo are trademarks or
+registered trademarks of Advanced Micro Devices. UNIX is a registered
+trademark of The Open Group.
+
+image:img/eclipse_foundation_logo_tiny.png["Eclipse Logo"]
diff --git a/docs/reference-manual/src/main/asciidoc/undeploy.adoc b/docs/reference-manual/src/main/asciidoc/undeploy.adoc
new file mode 100644
index 0000000..1f2a59c
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/undeploy.adoc
@@ -0,0 +1,157 @@
+type=page
+status=published
+title=undeploy
+next=unfreeze-transaction-service.html
+prev=stop-local-instance.html
+~~~~~~
+
+= undeploy
+
+[[undeploy-1]][[GSRFM00244]][[undeploy]]
+
+== undeploy
+
+Removes a deployed component
+
+[[sthref2189]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] undeploy [--help]
+[--target target] [--droptables={true|false}]
+[--cascade={false|true}] name
+----
+
+[[sthref2190]]
+
+=== Description
+
+The `undeploy` subcommand uninstalls a deployed application or module
+and removes it from the repository.
+
+This subcommand is supported in remote mode only.
+
+[[sthref2191]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--cascade`::
+  If set to `true`, deletes all the connection pools and connector
+  resources associated with the resource adapter being undeployed. If
+  set to `false`, the undeploy fails if any pools and resources are
+  still associated with the resource adapter. Then, either those pools
+  and resources must be deleted explicitly, or the option must be set to
+  `true`. If the option is set to `false`, and if there are no pools and
+  resources still associated with the resource adapter, the resource
+  adapter is undeployed. This option is applicable to connectors
+  (resource adapters) and applications. Default value is false.
+`--droptables`::
+  If set to true, drops the tables that the application created by using
+  CMP beans during deployment. If set to false, tables are not dropped.
+  If not specified, the value of the `drop-tables-at-deploy` entry in
+  the `cmp-resource` element of the `glassfish-ejb-jar.xml` file
+  determines whether or not tables are dropped. Default value is true.
+`--target`::
+  Specifies the target from which you are undeploying. Valid values are:
+
+  `server`;;
+    Undeploys the component from the default server instance `server`
+    and is the default value.
+  `domain`;;
+    Undeploys the component from the domain.
+  cluster_name;;
+    Undeploys the component from every server instance in the cluster.
+  instance_name;;
+    Undeploys the component from a particular stand-alone server
+    instance.
+
+[[sthref2192]]
+
+=== Operands
+
+name::
+  Name of the deployed component. +
+  The name can include an optional version identifier, which follows the
+  name and is separated from the name by a colon (`:`). The version
+  identifier must begin with a letter or number. It can contain
+  alphanumeric characters plus underscore (`_`), dash (`-`), and period
+  (`.`) characters. To delete multiple versions, you can use an asterisk
+  (`*`) as a wildcard character. For more information about module and
+  application versions, see "link:application-deployment-guide/overview.html#GSDPG00324[
+  Module and Application Versions]" in {productName} Application
+  Deployment Guide.
+
+[[sthref2193]]
+
+=== Examples
+
+[[GSRFM769]][[sthref2194]]
+
+==== Example 1   Undeploying an Enterprise Application
+
+This example undeploys an enterprise application named `Cart.ear`.
+
+[source]
+----
+asadmin> undeploy Cart
+Command undeploy executed successfully.
+----
+
+[[GSRFM770]][[sthref2195]]
+
+==== Example 2   Undeploying an Enterprise Bean With Container-Managed Persistence (CMP)
+
+This example undeploys a CMP bean named `myejb` and drops the
+corresponding database tables.
+
+[source]
+----
+asadmin> undeploy --droptables=true myejb
+Command undeploy executed successfully.
+----
+
+[[GSRFM771]][[sthref2196]]
+
+==== Example 3   Undeploying a Connector (Resource Adapter)
+
+This example undeploys the connector module named `jdbcra` and performs
+a cascading delete to remove the associated resources and connection
+pools.
+
+[source]
+----
+asadmin> undeploy --cascade=true jdbcra
+Command undeploy executed successfully.
+----
+
+[[sthref2197]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref2198]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:deploy.html#deploy-1[`deploy`(1)],
+link:list-components.html#list-components-1[`list-components`(1)],
+link:redeploy.html#redeploy-1[`redeploy`(1)]
+
+link:application-deployment-guide.html#GSDPG[{productName} Application Deployment
+Guide]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/unfreeze-transaction-service.adoc b/docs/reference-manual/src/main/asciidoc/unfreeze-transaction-service.adoc
new file mode 100644
index 0000000..97f386f
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/unfreeze-transaction-service.adoc
@@ -0,0 +1,99 @@
+type=page
+status=published
+title=unfreeze-transaction-service
+next=uninstall-node.html
+prev=undeploy.html
+~~~~~~
+
+= unfreeze-transaction-service
+
+[[unfreeze-transaction-service-1]][[GSRFM00245]][[unfreeze-transaction-service]]
+
+== unfreeze-transaction-service
+
+Resumes all suspended transactions
+
+[[sthref2199]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] unfreeze-transaction-service [--help]
+[--target target]
+----
+
+[[sthref2200]]
+
+=== Description
+
+The `unfreeze-transaction-service` subcommand restarts the transaction
+subsystem and resumes all in-flight transactions. Invoke this subcommand
+on an already frozen transaction subsystem. This subcommand is supported
+in remote mode only.
+
+[[sthref2201]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--target`::
+  This option specifies the target on which you are unfreezing the
+  transaction service. Valid values are:
+
+  `server`;;
+    Unfreezes the transaction service for the default server instance
+    `server` and is the default value.
+  configuration_name;;
+    Unfreezes the transaction service for all server instances that use
+    the named configuration.
+  cluster_name;;
+    Unfreezes the transaction service for every server instance in the
+    cluster.
+  instance_name;;
+    Unfreezes the transaction service for a particular server instance.
+
+[[sthref2202]]
+
+=== Examples
+
+[[GSRFM772]][[sthref2203]]
+
+==== Example 1   Using unfreeze-transaction-service
+
+[source]
+----
+% asadmin unfreeze-transaction-service
+Command unfreeze-transaction-service executed successfully
+----
+
+[[sthref2204]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref2205]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:freeze-transaction-service.html#freeze-transaction-service-1[`freeze-transaction-service`(1)],
+link:recover-transactions.html#recover-transactions-1[`recover-transactions`(1)],
+link:rollback-transaction.html#rollback-transaction-1[`rollback-transaction`(1)]
+
+"link:administration-guide/transactions.html#GSADG00022[Administering Transactions]" in {productName} Administration Guide
+
+"https://eclipse-ee4j.github.io/jakartaee-tutorial/#transactions[Transactions]"
+in The Jakarta EE Tutorial
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/uninstall-node-dcom.adoc b/docs/reference-manual/src/main/asciidoc/uninstall-node-dcom.adoc
new file mode 100644
index 0000000..cc8db60
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/uninstall-node-dcom.adoc
@@ -0,0 +1,179 @@
+type=page
+status=published
+title=uninstall-node-dcom
+next=uninstall-node-ssh.html
+prev=uninstall-node.html
+~~~~~~
+
+= uninstall-node-dcom
+
+[[uninstall-node-dcom-1]][[GSRFM775]][[uninstall-node-dcom]]
+
+== uninstall-node-dcom
+
+Uninstalls {productName} software from specified DCOM-enabled hosts
+
+[[sthref2215]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] uninstall-node-dcom [--help]
+[--installdir as-install-parent]
+[--windowsuser windows-user] [--windowsdomain windows-domain]
+[--force={false|true}]
+host-list
+----
+
+[[sthref2216]]
+
+=== Description
+
+The `uninstall-node-dcom` subcommand uninstalls {productName}
+software from the hosts that are specified as the operand of the
+subcommand. This subcommand requires the Distributed Component Object
+Model (DCOM) remote protocol to be configured on the host where the
+subcommand is run and on each host where the {productName} software
+is being uninstalled.
+
+[NOTE]
+====
+To uninstall {productName} software on hosts that use secure shell
+(SSH), use the
+link:uninstall-node-ssh.html#uninstall-node-ssh-1[`uninstall-node-ssh`(1)]
+subcommand.
+====
+
+By default, if any node except the predefined node ``localhost-``domain
+resides on any host from which {productName} software is being
+uninstalled, the subcommand fails. To uninstall the {productName}
+software from a host on which user-defined nodes reside, set the
+`--force` option to `true`. If the `--force` option is `true`, the
+subcommand removes the entire content of the parent of the base
+installation directory.
+
+If a file under the parent of the base installation directory is open,
+the subcommand fails.
+
+If multiple hosts are specified, the configuration of the following
+items must be the same on all hosts:
+
+* Parent of the base installation directory for the {productName} software
+* Windows user
+* Windows domain
+
+The subcommand does not modify the configuration of the domain
+administration server (DAS).
+
+This subcommand is supported in local mode only.
+
+[[sthref2217]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--installdir`::
+  The absolute path to the parent of the base installation directory
+  where the {productName} software is installed on each host, for
+  example, `C:\glassfish7`. +
+  The user that is running this subcommand must have write access to the
+  specified directory. Otherwise, an error occurs. +
+  The specified directory must contain the installation of the
+  {productName} software on the host. Otherwise, an error occurs. +
+  The default is the parent of the base installation directory of the
+  {productName} software on the host where this subcommand is run.
+`--windowsuser`::
+`-w`::
+  The user on this node's host that is to run the process for connecting
+  to the host through DCOM. The default is the user that is running the
+  DAS process.
+`--windowsdomain`::
+`-d`::
+  The name of the Windows domain that contains the user that the
+  `--windowsuser` option specifies. The default is the name of the host
+  on which the subcommand is run.
+`--force`::
+  Specifies whether the subcommand uninstalls the {productName}
+  software from a host even if a user-defined node resides on the host.
+  Possible values are as follows:
+
+  `false`;;
+    If a user-defined node resides on a host, the software is not
+    uninstalled and the subcommand fails (default). +
+    If the `--force` option is `false`, the subcommand removes only the
+    {productName} software files. Other content if the parent of the
+    base installation directory, such as configuration files, are not removed.
+  `true`;;
+    The subcommand uninstalls the {productName} software from the
+    host even if a user-defined node resides on the host.
+
++
+If the `--force` option is `true`, the subcommand removes the entire
+    content of the parent of the base installation directory.
+
+[[sthref2218]]
+
+=== Operands
+
+host-list::
+  A space-separated list of the names of the hosts from which the
+  {productName} software is to be uninstalled.
+
+[[sthref2219]]
+
+=== Examples
+
+[[GSRFM776]][[sthref2220]]
+
+==== Example 1   Uninstalling {productName} Software From the Default Location
+
+This example uninstalls {productName} software on the hosts
+`wpmdl1.example.com` and `wpmdl2.example.com` from the default location.
+
+[source]
+----
+asadmin> uninstall-node-dcom wpmdl1 wpmdl2
+Command uninstall-node-dcom executed successfully.
+----
+
+[[GSRFM777]][[sthref2221]]
+
+==== Example 2   Forcibly Uninstalling {productName} Software
+
+This example uninstalls {productName} software on the host
+`xkyd.example.com`.
+
+The software is uninstalled even if a user-defined node resides on the
+host. The entire content of the `C:\glassfish7` directory is removed.
+
+[source]
+----
+asadmin> uninstall-node-dcom --force --installdir C:\glassfish7 xkyd.example.com
+Command uninstall-node-dcom executed successfully.
+----
+
+[[sthref2222]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref2223]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)],
+link:uninstall-node-ssh.html#uninstall-node-ssh-1[`uninstall-node-ssh`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/uninstall-node-ssh.adoc b/docs/reference-manual/src/main/asciidoc/uninstall-node-ssh.adoc
new file mode 100644
index 0000000..6ab1d55
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/uninstall-node-ssh.adoc
@@ -0,0 +1,210 @@
+type=page
+status=published
+title=uninstall-node-ssh
+next=unset.html
+prev=uninstall-node-dcom.html
+~~~~~~
+
+= uninstall-node-ssh
+
+[[uninstall-node-ssh-1]][[GSRFM778]][[uninstall-node-ssh]]
+
+== uninstall-node-ssh
+
+Uninstalls {productName} software from specified SSH-enabled hosts
+
+[[sthref2224]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] uninstall-node-ssh [--help]
+[--installdir as-install-parent]
+[--sshport ssh-port] [--sshuser ssh-user]
+[--sshkeyfile ssh-keyfile]
+[--force={false|true}]
+host-list
+----
+
+[[sthref2225]]
+
+=== Description
+
+The `uninstall-node-ssh` subcommand uninstalls {productName}
+software from the hosts that are specified as the operand of the
+subcommand. This subcommand requires secure shell (SSH) to be configured
+on the host where the subcommand is run and on each host where the
+{productName} software is being uninstalled.
+
+[NOTE]
+====
+This subcommand is equivalent to the
+link:uninstall-node.html#uninstall-node-1[`uninstall-node`(1)]
+subcommand. To uninstall {productName} software from hosts that use
+the Distributed Component Object Model (DCOM) remote protocol, use the
+link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)]
+subcommand.
+====
+
+By default, if any node except the predefined node ``localhost-``domain
+resides on any host from which {productName} software is being
+uninstalled, the subcommand fails. To uninstall the {productName}
+software from a host on which user-defined nodes reside, set the
+`--force` option to `true`. If the `--force` option is `true`, the
+subcommand removes the entire content of the parent of the base
+installation directory.
+
+If a file under the parent of the base installation directory is open,
+the subcommand fails.
+
+If multiple hosts are specified, the configuration of the following
+items must be the same on all hosts:
+
+* Parent of the base installation directory for the {productName} software
+* SSH port
+* SSH user
+* SSH key file
+
+The subcommand does not modify the configuration of the domain
+administration server (DAS).
+
+This subcommand is supported in local mode only.
+
+[[sthref2226]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--installdir`::
+  The absolute path to the parent of the base installation directory
+  where the {productName} software is installed on each host, for
+  example, `/export/glassfish7/`. +
+  The user that is running this subcommand must have write access to the
+  specified directory. Otherwise, an error occurs. +
+  The specified directory must contain the installation of the
+  {productName} software on the host. Otherwise, an error occurs. +
+  The default is the parent of the base installation directory of the
+  {productName} software on the host where this subcommand is run.
+`--sshport`::
+  The port to use for SSH connections to the host where the
+  {productName} software is to be uninstalled. The default is 22.
+`--sshuser`::
+  The user on the host where the {productName} software is to be
+  uninstalled that is to run the process for connecting through SSH to
+  the host. The default is the user that is running this subcommand. To
+  ensure that the DAS can read this user's SSH private key file, specify
+  the user that is running the DAS process.
+`--sshkeyfile`::
+  The absolute path to the SSH private key file for user that the
+  `--sshuser` option specifies. This file is used for authentication to
+  the `sshd` daemon on the host. +
+  The user that is running this subcommand must be able to reach the
+  path to the key file and read the key file. +
+  The default is a key file in the user's `.ssh` directory. If multiple
+  key files are found, the subcommand uses the following order of preference:
+  1.  `id_rsa`
+  2.  `id_dsa`
+  3.  `identity`
+`--force`::
+  Specifies whether the subcommand uninstalls the {productName}
+  software from a host even if a user-defined node resides on the host.
+  Possible values are as follows:
+
+  `false`;;
+    If a user-defined node resides on a host, the software is not
+    uninstalled and the subcommand fails (default). +
+    If the `--force` option is `false`, the subcommand removes only the
+    {productName} software files. Other content if the parent of the
+    base installation directory, such as configuration files, are not
+    removed.
+  `true`;;
+    The subcommand uninstalls the {productName} software from the
+    host even if a user-defined node resides on the host.
+
++
+If the `--force` option is `true`, the subcommand removes the entire
+    content of the parent of the base installation directory.
+
+[[sthref2227]]
+
+=== Operands
+
+host-list::
+  A space-separated list of the names of the hosts from which the
+  {productName} software is to be uninstalled.
+
+[[sthref2228]]
+
+=== Examples
+
+[[GSRFM779]][[sthref2229]]
+
+==== Example 1   Uninstalling {productName} Software From the Default Location
+
+This example uninstalls {productName} software on the hosts
+`sj03.example.com` and `sj04.example.com` from the default location.
+
+[source]
+----
+asadmin> uninstall-node-ssh sj03 sj04
+Successfully connected to gfuser@sj03.example.com using keyfile /home/gfuser
+/.ssh/id_rsa
+Successfully connected to gfuser@sj04.example.com using keyfile /home/gfuser
+/.ssh/id_rsa
+Command uninstall-node-ssh executed successfully.
+----
+
+[[GSRFM780]][[sthref2230]]
+
+==== Example 2   Forcibly Uninstalling {productName} Software
+
+This example uninstalls {productName} software on the host
+`sj02.example.com`.
+
+The software is uninstalled even if a user-defined node resides on the
+host. The entire content of the `/export/glassfish7` directory is
+removed.
+
+Some lines of output are omitted from this example for readability.
+
+[source]
+----
+asadmin> uninstall-node-ssh --force --installdir /export/glassfish7 sj02.example.com
+Successfully connected to gfuser@sj02.example.com using keyfile /home/gfuser
+/.ssh/id_rsa
+Force removing file /export/glassfish7/mq/lib/help/en/add_overrides.htm
+Force removing file /export/glassfish7/mq/lib/help/en/add_connfact.htm
+...
+Force removing directory /export/glassfish7/glassfish/lib/appclient
+Force removing directory /export/glassfish7/glassfish/lib
+Force removing directory /export/glassfish7/glassfish
+Command uninstall-node-ssh executed successfully.
+----
+
+[[sthref2231]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref2232]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:install-node.html#install-node-1[`install-node`(1)],
+link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)],
+link:uninstall-node.html#uninstall-node-1[`uninstall-node`(1)],
+link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/uninstall-node.adoc b/docs/reference-manual/src/main/asciidoc/uninstall-node.adoc
new file mode 100644
index 0000000..964b39a
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/uninstall-node.adoc
@@ -0,0 +1,211 @@
+type=page
+status=published
+title=uninstall-node
+next=uninstall-node-dcom.html
+prev=unfreeze-transaction-service.html
+~~~~~~
+
+= uninstall-node
+
+[[uninstall-node-1]][[GSRFM00246]][[uninstall-node]]
+
+== uninstall-node
+
+Uninstalls {productName} software from specified hosts
+
+[[sthref2206]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] uninstall-node [--help]
+[--installdir as-install-parent]
+[--sshport ssh-port] [--sshuser ssh-user]
+[--sshkeyfile ssh-keyfile]
+[--force={false|true}]
+host-list
+----
+
+[[sthref2207]]
+
+=== Description
+
+The `uninstall-node` subcommand uninstalls {productName} software
+from the hosts that are specified as the operand of the subcommand. This
+subcommand requires secure shell (SSH) to be configured on the host
+where the subcommand is run and on each host where the {productName}
+software is being uninstalled.
+
+[NOTE]
+====
+This subcommand is equivalent to the
+link:uninstall-node-ssh.html#uninstall-node-ssh-1[`uninstall-node-ssh`(1)]
+subcommand. To uninstall {productName} software on hosts that use
+the Distributed Component Object Model (DCOM) remote protocol, use the
+link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)]
+subcommand.
+====
+
+By default, if any node except the predefined node ``localhost-``domain
+resides on any host from which {productName} software is being
+uninstalled, the subcommand fails. To uninstall the {productName}
+software from a host on which user-defined nodes reside, set the
+`--force` option to `true`. If the `--force` option is `true`, the
+subcommand removes the entire content of the parent of the base
+installation directory.
+
+If a file under the parent of the base installation directory is open,
+the subcommand fails.
+
+If multiple hosts are specified, the configuration of the following
+items must be the same on all hosts:
+
+* Parent of the base installation directory for the {productName} software
+* SSH port
+* SSH user
+* SSH key file
+
+The subcommand does not modify the configuration of the domain
+administration server (DAS).
+
+This subcommand is supported in local mode only.
+
+[[sthref2208]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--installdir`::
+  The absolute path to the parent of the base installation directory
+  where the {productName} software is installed on each host, for
+  example, `/export/glassfish7/`. +
+  The user that is running this subcommand must have write access to the
+  specified directory. Otherwise, an error occurs. +
+  The specified directory must contain the installation of the
+  {productName} software on the host. Otherwise, an error occurs. +
+  The default is the parent of the base installation directory of the
+  {productName} software on the host where this subcommand is run.
+`--sshport`::
+  The port to use for SSH connections to the host where the
+  {productName} software is to be uninstalled. The default is 22.
+`--sshuser`::
+  The user on the host where the {productName} software is to be
+  uninstalled that is to run the process for connecting through SSH to
+  the host. The default is the user that is running this subcommand. To
+  ensure that the DAS can read this user's SSH private key file, specify
+  the user that is running the DAS process.
+`--sshkeyfile`::
+  The absolute path to the SSH private key file for user that the
+  `--sshuser` option specifies. This file is used for authentication to
+  the `sshd` daemon on the host. +
+  The user that is running this subcommand must be able to reach the
+  path to the key file and read the key file. +
+  The default is a key file in the user's `.ssh` directory. If multiple
+  key files are found, the subcommand uses the following order of preference:
+  1.  `id_rsa`
+  2.  `id_dsa`
+  3.  `identity`
+`--force`::
+  Specifies whether the subcommand uninstalls the {productName}
+  software from a host even if a user-defined node resides on the host.
+  Possible values are as follows:
+
+  `false`;;
+    If a user-defined node resides on a host, the software is not
+    uninstalled and the subcommand fails (default). +
+    If the `--force` option is `false`, the subcommand removes only the
+    {productName} software files. Other content if the parent of the
+    base installation directory, such as configuration files, are not
+    removed.
+  `true`;;
+    The subcommand uninstalls the {productName} software from the
+    host even if a user-defined node resides on the host.
+
++
+If the `--force` option is `true`, the subcommand removes the entire
+    content of the parent of the base installation directory.
+
+[[sthref2209]]
+
+=== Operands
+
+host-list::
+  A space-separated list of the names of the hosts from which the
+  {productName} software is to be uninstalled.
+
+[[sthref2210]]
+
+=== Examples
+
+[[GSRFM773]][[sthref2211]]
+
+==== Example 1   Uninstalling {productName} Software From the Default Location
+
+This example uninstalls {productName} software on the hosts
+`sj03.example.com` and `sj04.example.com` from the default location.
+
+[source]
+----
+asadmin> uninstall-node sj03 sj04
+Successfully connected to gfuser@sj03.example.com using keyfile /home/gfuser
+/.ssh/id_rsa
+Successfully connected to gfuser@sj04.example.com using keyfile /home/gfuser
+/.ssh/id_rsa
+Command uninstall-node executed successfully.
+----
+
+[[GSRFM774]][[sthref2212]]
+
+==== Example 2   Forcibly Uninstalling {productName} Software
+
+This example uninstalls {productName} software on the host
+`sj02.example.com`.
+
+The software is uninstalled even if a user-defined node resides on the
+host. The entire content of the `/export/glassfish7` directory is
+removed.
+
+Some lines of output are omitted from this example for readability.
+
+[source]
+----
+asadmin> uninstall-node --force --installdir /export/glassfish7 sj02.example.com
+Successfully connected to gfuser@sj02.example.com using keyfile /home/gfuser
+/.ssh/id_rsa
+Force removing file /export/glassfish7/mq/lib/help/en/add_overrides.htm
+Force removing file /export/glassfish7/mq/lib/help/en/add_connfact.htm
+...
+Force removing directory /export/glassfish7/glassfish/lib/appclient
+Force removing directory /export/glassfish7/glassfish/lib
+Force removing directory /export/glassfish7/glassfish
+Command uninstall-node executed successfully.
+----
+
+[[sthref2213]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref2214]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:install-node.html#install-node-1[`install-node`(1)],
+link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)],
+link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)],
+link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)],
+link:uninstall-node-ssh.html#uninstall-node-ssh-1[`uninstall-node-ssh`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/unset-web-context-param.adoc b/docs/reference-manual/src/main/asciidoc/unset-web-context-param.adoc
new file mode 100644
index 0000000..f06f6b1
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/unset-web-context-param.adoc
@@ -0,0 +1,145 @@
+type=page
+status=published
+title=unset-web-context-param
+next=unset-web-env-entry.html
+prev=unset.html
+~~~~~~
+
+= unset-web-context-param
+
+[[unset-web-context-param-1]][[GSRFM00248]][[unset-web-context-param]]
+
+== unset-web-context-param
+
+Unsets a servlet context-initialization parameter of a deployed web
+application or module
+
+[[sthref2242]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] unset-web-context-param [--help]
+--name=context-param-name application-name[/module]
+----
+
+[[sthref2243]]
+
+=== Description
+
+The `unset-web-context-param` subcommand unsets a servlet
+context-initialization parameter of one of the following items:
+
+* A deployed web application
+* A web module in a deployed Java Platform, Enterprise Edition (Jakarta EE) application
+
+When a parameter is unset, its value reverts to the value, if any, that
+is set in the application's deployment descriptor.
+
+The application must already be deployed. Otherwise, an error occurs.
+
+The parameter must have previously been set by using the
+`set-web-context-param` subcommand. Otherwise, an error occurs.
+
+[NOTE]
+====
+Do not use the `unset-web-context-param` subcommand to change the value
+of a servlet context-initialization parameter that is set in an
+application's deployment descriptor. Instead, use the
+link:set-web-context-param.html#set-web-context-param-1[`set-web-context-param`(1)]
+subcommand for this purpose.
+====
+
+This subcommand enables you to change the configuration of a deployed
+application without the need to modify the application's deployment
+descriptors and repackage and redeploy the application.
+
+This subcommand is supported in remote mode only.
+
+[[sthref2244]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--name`::
+  The name of the servlet context-initialization parameter that is to be
+  unset. This parameter must have previously been set by using the
+  `set-web-context-param` subcommand. Otherwise, an error occurs.
+
+[[sthref2245]]
+
+=== Operands
+
+application-name::
+  The name of the application. This name can be obtained from the
+  Administration Console or by using the
+  link:list-applications.html#list-applications-1[`list-applications`(1)] subcommand. +
+  The application must already be deployed. Otherwise, an error occurs.
+module::
+  The relative path to the module within the application's enterprise
+  archive (EAR) file. The path to the module is specified in the
+  `module` element of the application's `application.xml` file. +
+  module is required only if the servlet context-initialization
+  parameter applies to a web module of a Jakarta EE application. If
+  specified, module must follow application-name, separated by a slash (`/`). +
+  For example, the `application.xml` file for the `myApp` application
+  might specify the following web module:
++
+[source,xml]
+----
+<module>
+    <web>
+        <web-uri>myWebModule.war</web-uri>
+    </web>
+</module>
+----
++
+The module would be specified as the operand of this command as `myApp/myWebModule.war`.
+
+[[sthref2246]]
+
+=== Examples
+
+[[GSRFM783]][[sthref2247]]
+
+==== Example 1   Unsetting a Servlet Context-Initialization Parameter for a Web Application
+
+This example unsets the servlet context-initialization parameter
+`javax.faces.STATE_SAVING_METHOD` of the web application `basic-ezcomp`.
+The parameter reverts to the value, if any, that is defined in the
+application's deployment descriptor.
+
+[source]
+----
+asadmin> unset-web-context-param
+--name=javax.faces.STATE_SAVING_METHOD basic-ezcomp
+
+Command unset-web-context-param executed successfully.
+----
+
+[[sthref2248]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref2249]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:list-applications.html#list-applications-1[`list-applications`(1)],
+link:list-web-context-param.html#list-web-context-param-1[`list-web-context-param`(1)],
+link:set-web-context-param.html#set-web-context-param-1[`set-web-context-param`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/unset-web-env-entry.adoc b/docs/reference-manual/src/main/asciidoc/unset-web-env-entry.adoc
new file mode 100644
index 0000000..b0a634e
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/unset-web-env-entry.adoc
@@ -0,0 +1,144 @@
+type=page
+status=published
+title=unset-web-env-entry
+next=update-connector-security-map.html
+prev=unset-web-context-param.html
+~~~~~~
+
+= unset-web-env-entry
+
+[[unset-web-env-entry-1]][[GSRFM00249]][[unset-web-env-entry]]
+
+== unset-web-env-entry
+
+Unsets an environment entry for a deployed web application or module
+
+[[sthref2250]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] unset-web-env-entry [--help]
+--name=env-entry-name application-name[/module]
+----
+
+[[sthref2251]]
+
+=== Description
+
+The `unset-web-env-entry` subcommand unsets an environment entry for one
+of the following items:
+
+* A deployed web application
+* A web module in a deployed Java Platform, Enterprise Edition (Jakarta EE) application
+
+When an entry is unset, its value reverts to the value, if any, that is
+set in the application's deployment descriptor.
+
+The application must already be deployed. Otherwise, an error occurs.
+
+The entry must have previously been set by using the
+link:set-web-env-entry.html#set-web-env-entry-1[`set-web-env-entry`(1)]
+subcommand. Otherwise, an error occurs.
+
+[NOTE]
+====
+Do not use the `unset-web-env-entry` subcommand to change the value of
+an environment entry that is set in an application's deployment
+descriptor. Instead, use the `set-web-env-entry` subcommand for this
+purpose.
+====
+
+This subcommand enables you to change the configuration of a deployed
+application without the need to modify the application's deployment
+descriptors and repackage and redeploy the application.
+
+This subcommand is supported in remote mode only.
+
+[[sthref2252]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--name`::
+  The name of the environment entry that is to be unset. The name is a
+  JNDI name relative to the `java:comp/env` context. The name must be
+  unique within a deployment component. This entry must have previously
+  been set by using the `set-web-env-entry` subcommand. Otherwise, an
+  error occurs.
+
+[[sthref2253]]
+
+=== Operands
+
+application-name::
+  The name of the application. This name can be obtained from the
+  Administration Console or by using the
+  link:list-applications.html#list-applications-1[`list-applications`(1)] subcommand. +
+  The application must already be deployed. Otherwise, an error occurs.
+module::
+  The relative path to the module within the application's enterprise
+  archive (EAR) file. The path to the module is specified in the
+  `module` element of the application's `application.xml` file. +
+  module is required only if the environment entry applies to a web
+  module of a Jakarta EE application. If specified, module must follow
+  application-name, separated by a slash (`/`). +
+  For example, the `application.xml` file for the `myApp` application
+  might specify the following web module:
++
+[source,xml]
+----
+<module>
+    <web>
+        <web-uri>myWebModule.war</web-uri>
+    </web>
+</module>
+----
++
+The module would be specified as the operand of this command as `myApp/myWebModule.war`.
+
+[[sthref2254]]
+
+=== Examples
+
+[[GSRFM784]][[sthref2255]]
+
+==== Example 1   Unsetting an Environment Entry for a Web Application
+
+This example unsets the environment entry `Hello User` of the web
+application `hello`. The entry reverts to the value, if any, that is
+defined in the application's deployment descriptor.
+
+[source]
+----
+asadmin> unset-web-env-entry --name="Hello User" hello
+
+Command unset-web-env-entry executed successfully.
+----
+
+[[sthref2256]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref2257]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:list-applications.html#list-applications-1[`list-applications`(1)],
+link:list-web-env-entry.html#list-web-env-entry-1[`list-web-env-entry`(1)],
+link:set-web-env-entry.html#set-web-env-entry-1[`set-web-env-entry`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/unset.adoc b/docs/reference-manual/src/main/asciidoc/unset.adoc
new file mode 100644
index 0000000..2bc4c9f
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/unset.adoc
@@ -0,0 +1,111 @@
+type=page
+status=published
+title=unset
+next=unset-web-context-param.html
+prev=uninstall-node-ssh.html
+~~~~~~
+
+unset
+=====
+
+[[unset-1]][[GSRFM00247]][[unset]]
+
+unset
+-----
+
+Removes one or more variables from the multimode environment
+
+[[sthref2233]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] unset [--help]
+variable-list
+----
+
+[[sthref2234]]
+
+=== Description
+
+The `unset` subcommand removes one or more environment variables that
+are set for the multimode environment. After removal, the variables and
+their associated values no longer apply to the multimode environment.
+
+To list the environment variables that are set, use the `export`
+subcommand without options. If the `export` subcommand lists no
+environment variables, no environment variables are set.
+
+This subcommand is supported in local mode only.
+
+[[sthref2235]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref2236]]
+
+=== Operands
+
+variable-list::
+  A space-separated list of the environment variables to remove.
+
+[[sthref2237]]
+
+=== Examples
+
+[[GSRFM781]][[sthref2238]]
+
+==== Example 1   Listing the Environment Variables That Are Set
+
+This example uses the `export` subcommand to list the environment
+variables that have been set.
+
+[source]
+----
+asadmin> export
+AS_ADMIN_USER = admin
+AS_ADMIN_HOST = bluestar
+AS_ADMIN_PREFIX = server1.jms-service
+AS_ADMIN_PORT = 8000
+Command export executed successfully
+----
+
+[[GSRFM782]][[sthref2239]]
+
+==== Example 2   Removing an Environment Variable
+
+This example removes the `AS_ADMIN_PREFIX` environment variable.
+
+[source]
+----
+asadmin> unset AS_ADMIN_PREFIX
+Command unset executed successfully
+----
+
+[[sthref2240]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref2241]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:export.html#export-1[`export`(1)],
+link:multimode.html#multimode-1[`multimode`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/update-connector-security-map.adoc b/docs/reference-manual/src/main/asciidoc/update-connector-security-map.adoc
new file mode 100644
index 0000000..1591573
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/update-connector-security-map.adoc
@@ -0,0 +1,116 @@
+type=page
+status=published
+title=update-connector-security-map
+next=update-connector-work-security-map.html
+prev=unset-web-env-entry.html
+~~~~~~
+
+= update-connector-security-map
+
+[[update-connector-security-map-1]][[GSRFM00252]][[update-connector-security-map]]
+
+== update-connector-security-map
+
+Modifies a security map for the specified connector connection pool
+
+[[sthref2258]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] update-connector-security-map [--help]
+--poolname connector_connection_pool_name
+[--addprincipals principal_name1[,principal_name2]*]
+[--addusergroups user_group1[,user_group2]*]
+[--removeprincipals principal_name1[,principal_name2]*]
+[--removeusergroups user_group1[,user_group2]*]
+[--mappedusername username]
+mapname
+----
+
+[[sthref2259]]
+
+=== Description
+
+The `update-connector-security-map` subcommand modifies a security map
+for the specified connector connection pool.
+
+For this subcommand to succeed, you must have first created a connector
+connection pool using the `create-connector-connection-pool` subcommand.
+
+This subcommand is supported in remote mode only.
+
+[[sthref2260]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--poolname`::
+  Specifies the name of the connector connection pool to which the
+  security map that is to be updated belongs.
+`--addprincipals`::
+  Specifies a comma-separated list of EIS-specific principals to be
+  added. Use either the `--addprincipals` or `--addusergroups` options,
+  but not both in the same command.
+`--addusergroups`::
+  Specifies a comma-separated list of EIS user groups to be added. Use
+  either the `--addprincipals` or `--addusergroups` options, but not
+  both in the same command.
+`--removeprincipals`::
+  Specifies a comma-separated list of EIS-specific principals to be
+  removed.
+`--removeusergroups`::
+  Specifies a comma-separated list of EIS user groups to be removed.
+`--mappedusername`::
+  Specifies the EIS username.
+
+[[sthref2261]]
+
+=== Operands
+
+mapname::
+  The name of the security map to be updated.
+
+[[sthref2262]]
+
+=== Examples
+
+[[GSRFM785]][[sthref2263]]
+
+==== Example 1   Updating a Connector Security Map
+
+This example adds principals to the existing security map named `securityMap1`.
+
+[source]
+----
+asadmin> update-connector-security-map --poolname connector-pool1
+--addprincipals principal1,principal2 securityMap1
+Command update-connector-security-map executed successfully
+----
+
+[[sthref2264]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref2265]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-connector-security-map.html#create-connector-security-map-1[`create-connector-security-map`(1)],
+link:delete-connector-security-map.html#delete-connector-security-map-1[`delete-connector-security-map`(1)],
+link:list-connector-security-maps.html#list-connector-security-maps-1[`list-connector-security-maps`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/update-connector-work-security-map.adoc b/docs/reference-manual/src/main/asciidoc/update-connector-work-security-map.adoc
new file mode 100644
index 0000000..197413a
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/update-connector-work-security-map.adoc
@@ -0,0 +1,110 @@
+type=page
+status=published
+title=update-connector-work-security-map
+next=update-file-user.html
+prev=update-connector-security-map.html
+~~~~~~
+
+= update-connector-work-security-map
+
+[[update-connector-work-security-map-1]][[GSRFM00253]][[update-connector-work-security-map]]
+
+== update-connector-work-security-map
+
+Modifies a work security map for the specified resource adapter
+
+[[sthref2266]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] update-connector-work-security-map [--help]
+--raname raname
+[--addprincipals eis-principal1=server-principal1[, eis-principal2=server-principal2]*]
+[--addgroups eis-group1=server-group1[, eis-group2=server-group2]*]
+[--removeprincipals eis-principal1[,eis-principal2]*]
+[--removegroups eis-group1[, eis-group2]*]
+mapname
+----
+
+[[sthref2267]]
+
+=== Description
+
+The `update-connector-work-security-map` subcommand modifies a security
+map for the specified resource adapter.
+
+This subcommand is supported in remote mode only.
+
+[[sthref2268]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--addgroups`::
+  Specifies a comma-separated list of EIS groups to be added. Use either
+  the `--addprincipals` option or the `--addgroups` option, but not
+  both.
+`--addprincipals`::
+  Specifies a comma-separated list of EIS-specific principals to be
+  added. Use either the `--addprincipals` option or the `--addgroups`
+  option, but not both.
+`--removegroups`::
+  Specifies a comma-separated list of EIS groups to be removed.
+`--removeprincipals`::
+  Specifies a comma-separated list of EIS-specific principals to be
+  removed.
+`--raname`::
+  Indicates the connector module name with which the work security map
+  is associated.
+
+[[sthref2269]]
+
+=== Operands
+
+mapname::
+  The name of the work security map to be updated.
+
+[[sthref2270]]
+
+=== Examples
+
+[[GSRFM786]][[sthref2271]]
+
+==== Example 1   Updating a Connector Work Security Map
+
+This example updates `workSecurityMap2` by removing `eis-group-2`.
+
+[source]
+----
+asadmin> update-connector-work-security-map
+--raname my-resource-adapter --removegroups eis-group-2 workSecurityMap2
+Command update-connector-work-security-map executed successfully.
+----
+
+[[sthref2272]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref2273]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-connector-work-security-map.html#create-connector-work-security-map-1[`create-connector-work-security-map`(1)],
+link:delete-connector-work-security-map.html#delete-connector-work-security-map-1[`delete-connector-work-security-map`(1)],
+link:list-connector-work-security-maps.html#list-connector-work-security-maps-1[`list-connector-work-security-maps`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/update-file-user.adoc b/docs/reference-manual/src/main/asciidoc/update-file-user.adoc
new file mode 100644
index 0000000..c0de140
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/update-file-user.adoc
@@ -0,0 +1,113 @@
+type=page
+status=published
+title=update-file-user
+next=update-node-config.html
+prev=update-connector-work-security-map.html
+~~~~~~
+
+= update-file-user
+
+[[update-file-user-1]][[GSRFM00254]][[update-file-user]]
+
+== update-file-user
+
+Updates a current file user as specified
+
+[[sthref2274]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] update-file-user [--help]
+[--groups user_groups[:user_groups]*]
+[--target target
+[--authrealmname authrealm_name]
+username
+----
+
+[[sthref2275]]
+
+=== Description
+
+Th `update-file-user` subcommand updates an existing entry in the
+keyfile using the specified user name, password and groups. Multiple
+groups can be entered by separating them, with a colon (:).
+
+If a new password is not provided, this subcommand fails if secure
+administration is enabled and the user being updated is an
+administrative user.
+
+[[sthref2276]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--groups`::
+  This is the name of the group to which the file user belongs.
+`--authrealmname`::
+  Name of the authentication realm where the user to be updated can be
+  found.
+`--target`::
+  This option helps specify the target on which you are updating a file
+  user. Valid values are:
+
+  `server`;;
+    Updates the file user in the default server instance. This is the
+    default value.
+  cluster_name;;
+    Updates the file user on every server instance in the cluster.
+  instance_name;;
+    Updates the file user on a specified sever instance.
+
+[[sthref2277]]
+
+=== Operands
+
+username::
+  This is the name of the file user to be updated.
+
+[[sthref2278]]
+
+=== Examples
+
+[[GSRFM787]][[sthref2279]]
+
+==== Example 1   Updating a User's Information in a File Realm
+
+The following example updates information for a file realm user named
+`sample_user`.
+
+[source]
+----
+asadmin> update-file-user
+--groups staff:manager:engineer sample_user
+Command update-file-user executed successfully
+----
+
+[[sthref2280]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref2281]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-file-user.html#create-file-user-1[`create-file-user`(1)],
+link:delete-file-user.html#delete-file-user-1[`delete-file-user`(1)],
+link:list-file-groups.html#list-file-groups-1[`list-file-groups`(1)],
+link:list-file-users.html#list-file-users-1[`list-file-users`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/update-node-config.adoc b/docs/reference-manual/src/main/asciidoc/update-node-config.adoc
new file mode 100644
index 0000000..723cd6f
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/update-node-config.adoc
@@ -0,0 +1,129 @@
+type=page
+status=published
+title=update-node-config
+next=update-node-dcom.html
+prev=update-file-user.html
+~~~~~~
+
+= update-node-config
+
+[[update-node-config-1]][[GSRFM00255]][[update-node-config]]
+
+== update-node-config
+
+Updates the configuration data of a node
+
+[[sthref2282]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] update-node-config [--help]
+[--nodehost node-host]
+[--installdir as-install-parent] [--nodedir node-dir]
+node-name
+----
+
+[[sthref2283]]
+
+=== Description
+
+The `update-node-config` subcommand updates the configuration data of a node.
+
+This subcommand can update any node, regardless of whether the node is
+enabled for remote communication. If a node that is enabled for remote
+communication is updated, the node is not enabled for remote
+communication after the update.
+
+Options of this subcommand specify the new values of the node's
+configuration data. The default for these options is to leave the
+existing value unchanged.
+
+This subcommand does not require the Distributed Component Object Model
+(DCOM) remote protocol or secure shell (SSH) to be configured to update
+the node. You may run this subcommand from any host that can contact the DAS.
+
+This subcommand is supported in remote mode only.
+
+[[sthref2284]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--nodehost`::
+  The name of the host that the node is to represent after the node is
+  updated.
+`--installdir`::
+  The full path to the parent of the base installation directory of the
+  {productName} software on the host, for example,
+  `/export/glassfish7`.
+`--nodedir`::
+  The path to the directory that is to contain {productName}
+  instances that are created on the node. If a relative path is
+  specified, the path is relative to the as-install directory, where
+  as-install is the base installation directory of the {productName}
+  software on the host.
+
+[[sthref2285]]
+
+=== Operands
+
+node-name::
+  The name of the node to update. The node must exist. Otherwise, an
+  error occurs.
+
+[[sthref2286]]
+
+=== Examples
+
+[[GSRFM788]][[sthref2287]]
+
+==== Example 1   Updating the Host That a Node Represents
+
+This example updates the host that the node `sj04` represents to
+`hsj04`.
+
+[source]
+----
+asadmin> update-node-config --nodehost hsj04 sj04
+Command update-node-config executed successfully.
+----
+
+[[sthref2288]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref2289]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-node-config.html#create-node-config-1[`create-node-config`(1)],
+link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
+link:create-node-ssh.html#create-node-ssh-1[`create-node-ssh`(1)],
+link:delete-node-config.html#delete-node-config-1[`delete-node-config`(1)],
+link:delete-node-dcom.html#delete-node-dcom-1[`delete-node-dcom`(1)],
+link:delete-node-ssh.html#delete-node-ssh-1[`delete-node-ssh`(1)],
+link:install-node.html#install-node-1[`install-node`(1)],
+link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)],
+link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)],
+link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
+link:uninstall-node.html#uninstall-node-1[`uninstall-node`(1)],
+link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)],
+link:uninstall-node-ssh.html#uninstall-node-ssh-1[`uninstall-node-ssh`(1)],
+link:update-node-ssh.html#update-node-dcom-1[`update-node-dcom`(1)],
+link:update-node-ssh001.html#update-node-ssh-1[`update-node-ssh`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/update-node-dcom.adoc b/docs/reference-manual/src/main/asciidoc/update-node-dcom.adoc
new file mode 100644
index 0000000..f81ede5
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/update-node-dcom.adoc
@@ -0,0 +1,195 @@
+type=page
+status=published
+title=update-node-dcom
+next=update-node-ssh.html
+prev=update-node-config.html
+~~~~~~
+
+= update-node-dcom
+
+[[update-node-dcom-1]][[GSRFM789]][[update-node-dcom]]
+
+== update-node-dcom
+
+Updates the configuration data of a node
+
+[[sthref2290]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] update-node-dcom [--help]
+[--nodehost node-host]
+[--installdir as-install-parent] [--nodedir node-dir]
+[--windowsuser windows-user] [--windowsdomain windows-domain]
+[--force={false|true}]
+node-name
+----
+
+[[sthref2291]]
+
+=== Description
+
+The `update-node-dcom` subcommand updates the configuration data of a
+node. This subcommand requires the Distributed Component Object Model
+(DCOM) remote protocol to be configured on the host where the domain
+administration server (DAS) is running and on the host where the node
+resides. The DCOM protocol is available only on Windows systems.You may
+run this subcommand from any host that can contact the DAS.
+
+This subcommand can update any node, regardless of whether the node is
+enabled for remote communication. If the node is not enabled for remote
+communication, the subcommand enables DCOM communication for the node
+and updates any other specified configuration data.
+
+Options of this subcommand specify the new values of the node's
+configuration data. The default for most options is to leave the
+existing value unchanged. However, if this subcommand is run to enable
+DCOM communication for a node, default values are applied if any of the
+following options is omitted:
+
+* `--windowsuser`
+* `--windowsdomain`
+
+By default, the subcommand fails and the node is not updated if the DAS
+cannot contact the node's host through DCOM. To force the node to be
+updated even if the host cannot be contacted through DCOM, set the
+`--force` option to `true`.
+
+This subcommand is supported in remote mode only.
+
+[[sthref2292]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--nodehost`::
+  The name of the host that the node is to represent after the node is
+  updated.
+`--installdir`::
+  The full path to the parent of the base installation directory of the
+  {productName} software on the host, for example,   `/export/glassfish7/`.
+`--nodedir`::
+  The path to the directory that is to contain {productName}
+  instances that are created on the node. If a relative path is
+  specified, the path is relative to the as-install directory, where
+  as-install is the base installation directory of the {productName}
+  software on the host.
+`--windowsuser`::
+`-w`::
+  The user on this node's host that is to run the process for connecting
+  to the host through DCOM. The default depends on whether this
+  subcommand is run to enable DCOM communication for the node:
+
+  * If the node is already enabled for communication over DCOM, the
+    default is to leave the user unchanged.
+  * If this subcommand is run to enable DCOM communication for the node,
+    the default is the user that is running the DAS process.
+
++
+If the `--nodehost` option is set to `localhost`, the `--windowsuser`
+  option is ignored.
+`--windowsdomain`::
+`-d`::
+  The name of the Windows domain that contains the user that the
+  `--windowsuser` option specifies. The default depends on whether this
+  subcommand is run to enable DCOM communication for the node:
+
+  * If the node is already enabled for communication over DCOM, the
+  default is to leave the domain unchanged.
+  * If this subcommand is run to enable DCOM communication for the node,
+  the default is the name of the host on which the subcommand is run.
+
+`--force`::
+  Specifies whether the node is updated even if validation of the node's
+  parameters fails. To validate a node's parameters, the DAS must be
+  able to contact the node's host through DCOM. Possible values are as
+  follows:
+
+  `false`;;
+    The node is not updated if validation of the node's parameters fails
+    (default).
+  `true`;;
+    The node is updated even if validation of the node's parameters
+    fails.
+
+[[sthref2293]]
+
+=== Operands
+
+node-name::
+  The name of the node to update. The node must exist. Otherwise, an
+  error occurs.
+
+[[sthref2294]]
+
+=== Examples
+
+[[GSRFM790]][[sthref2295]]
+
+==== Example 1   Updating the Host That a Node Represents
+
+This example updates the host that the node `wpmdl1` represents to
+`wj01`.
+
+[source]
+----
+asadmin> update-node-dcom --nodehost wj01 wpmdl1
+Command update-node-dcom executed successfully.
+----
+
+[[GSRFM791]][[sthref2296]]
+
+==== Example 2   Forcing the Update of a Node
+
+This example forces the update of the node `xkyd` to enable the node to
+communicate over DCOM.
+
+[source]
+----
+asadmin> update-node-dcom --force xkyd
+Warning: some parameters appear to be invalid.
+Could not find a remote Glassfish installation on host: xkyd.example.com at
+C:\glassfish7\glassfish
+Continuing with node update due to use of --force.
+Command update-node-dcom executed successfully.
+----
+
+[[sthref2297]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref2298]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-node-config.html#create-node-config-1[`create-node-config`(1)],
+link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
+link:create-node-ssh.html#create-node-ssh-1[`create-node-ssh`(1)],
+link:delete-node-config.html#delete-node-config-1[`delete-node-config`(1)],
+link:delete-node-dcom.html#delete-node-dcom-1[`delete-node-dcom`(1)],
+link:delete-node-ssh.html#delete-node-ssh-1[`delete-node-ssh`(1)],
+link:install-node.html#install-node-1[`install-node`(1)],
+link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)],
+link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)],
+link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
+link:uninstall-node.html#uninstall-node-1[`uninstall-node`(1)],
+link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)],
+link:uninstall-node-ssh.html#uninstall-node-ssh-1[`uninstall-node-ssh`(1)],
+link:update-node-config.html#update-node-config-1[`update-node-config`(1)],
+link:update-node-ssh001.html#update-node-ssh-1[`update-node-ssh`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/update-node-ssh.adoc b/docs/reference-manual/src/main/asciidoc/update-node-ssh.adoc
new file mode 100644
index 0000000..0f17cd1
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/update-node-ssh.adoc
@@ -0,0 +1,227 @@
+type=page
+status=published
+title=update-node-ssh
+next=update-password-alias.html
+prev=update-node-dcom.html
+~~~~~~
+
+= update-node-ssh
+
+[[update-node-ssh-1]][[GSRFM00256]][[update-node-ssh]]
+
+== update-node-ssh
+
+Updates the configuration data of a node
+
+[[sthref2299]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] update-node-ssh [--help]
+[--nodehost node-host]
+[--installdir as-install-parent] [--nodedir node-dir]
+[--sshport ssh-port] [--sshuser ssh-user]
+[--sshkeyfile ssh-keyfile]
+[--force={false|true}]
+node-name
+----
+
+[[sthref2300]]
+
+=== Description
+
+The `update-node-ssh` subcommand updates the configuration data of a
+node. This subcommand requires secure shell (SSH) to be configured on
+the machine where the domain administration server (DAS) is running and
+on the machine where the node resides. You may run this subcommand from
+any machine that can contact the DAS.
+
+This subcommand can update any node, regardless of whether the node is
+enabled for remote communication. If the node is not enabled for remote
+communication, the subcommand enables SSH communication for the node and
+updates any other specified configuration data.
+
+Options of this subcommand specify the new values of the node's
+configuration data. The default for most options is to leave the
+existing value unchanged. However, if this subcommand is run to enable
+SSH communication for a node, default values are applied if any of the
+following options is omitted:
+
+* `--sshport`
+* `--sshuser`
+* `--sshkeyfile`
+
+By default, the subcommand fails and the node is not updated if the DAS
+cannot contact the node's host through SSH. To force the node to be
+updated even if the host cannot be contacted through SSH, set the
+`--force` option to `true`.
+
+This subcommand is supported in remote mode only.
+
+[[sthref2301]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--nodehost`::
+  The name of the host that the node is to represent after the node is
+  updated.
+`--installdir`::
+  The full path to the parent of the base installation directory of the
+  {productName} software on the host, for example,
+  `/export/glassfish7`.
+`--nodedir`::
+  The path to the directory that is to contain {productName}
+  instances that are created on the node. If a relative path is
+  specified, the path is relative to the as-install directory, where
+  as-install is the base installation directory of the {productName}
+  software on the host.
+`--sshport`::
+  The port to use for SSH connections to this node's host. The default
+  depends on whether this subcommand is run to enable SSH communication
+  for the node:
+
+  * If the node is already enabled for communication over SSH, the
+  default is to leave the port unchanged.
+  * If this subcommand is run to enable SSH communication for the node,
+  the default port is 22.
+
++
+If the `--nodehost` is set to `localhost`, the `--sshport` option is ignored.
+
+`--sshuser`::
+  The user on this node's host that is to run the process for connecting
+  to the host through SSH. The default depends on whether this
+  subcommand is run to enable SSH communication for the node:
+
+  * If the node is already enabled for communication over SSH, the
+  default is to leave the user unchanged.
+  * If this subcommand is run to enable SSH communication for the node,
+  the default is the user that is running the DAS process.
+
++
+If the `--nodehost` option is set to `localhost`, the `--sshuser`
+  option is ignored.
+
+`--sshkeyfile`::
+  The absolute path to the SSH private key file for user that the
+  `--sshuser` option specifies. This file is used for authentication to
+  the `sshd` daemon on the node's host.
++
+[NOTE]
+====
+{productName} also supports password authentication through the
+`AS_ADMIN_SSHPASSWORD` entry in the password file. The password file
+is specified in the `--paswordfile` option of the
+link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility.
+====
++
+If the SSH private key file is protected by a passphrase, the password
+  file must contain the `AS_ADMIN_SSHKEYPASSPHRASE` entry. +
+  The path to the key file must be reachable by the DAS and the key file
+  must be readable by the DAS. +
+  The default depends on whether this subcommand is run to enable SSH
+  communication for the node:
+
+  * If the node is already enabled for communication over SSH, the
+  default is to leave the key file unchanged.
+  * If this subcommand is run to enable SSH communication for the node,
+  the default is the key file in the user's `.ssh` directory. If
+  multiple key files are found, the subcommand uses the following order of preference:
+  1.  `id_rsa`
+  2.  `id_dsa`
+  3.  `identity`
+`--force`::
+  Specifies whether the node is updated even if validation of the node's
+  parameters fails. To validate a node's parameters, the DAS must be
+  able to contact the node's host through SSH. Possible values are as
+  follows:
+
+  `false`;;
+    The node is not updated if validation of the node's parameters fails
+    (default).
+  `true`;;
+    The node is updated even if validation of the node's parameters
+    fails.
+
+[[sthref2302]]
+
+=== Operands
+
+node-name::
+  The name of the node to update. The node must exist. Otherwise, an
+  error occurs.
+
+[[sthref2303]]
+
+=== Examples
+
+[[GSRFM792]][[sthref2304]]
+
+==== Example 1   Updating the Host That a Node Represents
+
+This example updates the host that the node `lssh` represents to `sj04`.
+
+[source]
+----
+asadmin> update-node-ssh --nodehost sj04 lssh
+Command update-node-ssh executed successfully.
+----
+
+[[GSRFM793]][[sthref2305]]
+
+==== Example 2   Forcing the Update of a Node
+
+This example forces the update of the node `sj01` to enable the node to
+communicate over SSH.
+
+[source]
+----
+asadmin> update-node-ssh --force sj01
+Warning: some parameters appear to be invalid.
+Could not connect to host sj01 using SSH.
+Could not authenticate. Tried authenticating with specified key at
+/home/gfuser/.ssh/id_rsa
+Continuing with node update due to use of --force.
+Command update-node-ssh executed successfully.
+----
+
+[[sthref2306]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref2307]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
+link:create-node-config.html#create-node-config-1[`create-node-config`(1)],
+link:create-node-ssh.html#create-node-ssh-1[`create-node-ssh`(1)],
+link:delete-node-config.html#delete-node-config-1[`delete-node-config`(1)],
+link:delete-node-dcom.html#delete-node-dcom-1[`delete-node-dcom`(1)],
+link:delete-node-ssh.html#delete-node-ssh-1[`delete-node-ssh`(1)],
+link:install-node.html#install-node-1[`install-node`(1)],
+link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)],
+link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)],
+link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
+link:uninstall-node.html#uninstall-node-1[`uninstall-node`(1)],
+link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)],
+link:uninstall-node-ssh.html#uninstall-node-ssh-1[`uninstall-node-ssh`(1)],
+link:update-node-config.html#update-node-config-1[`update-node-config`(1)],
+link:update-node-ssh.html#update-node-dcom-1[`update-node-dcom`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/update-password-alias.adoc b/docs/reference-manual/src/main/asciidoc/update-password-alias.adoc
new file mode 100644
index 0000000..f342ba5
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/update-password-alias.adoc
@@ -0,0 +1,92 @@
+type=page
+status=published
+title=update-password-alias
+next=uptime.html
+prev=update-node-ssh001.html
+~~~~~~
+
+= update-password-alias
+
+[[update-password-alias-1]][[GSRFM00257]][[update-password-alias]]
+
+== update-password-alias
+
+Updates a password alias
+
+[[sthref2308]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] update-password-alias [--help]
+aliasname
+----
+
+[[sthref2309]]
+
+=== Description
+
+This subcommand updates the password alias IDs in the named target. An
+alias is a token of the form `${ALIAS=password-alias-password}`. The
+password corresponding to the alias name is stored in an encrypted form.
+The `update-password-alias` subcommand takes both a secure interactive
+form (in which the user is prompted for all information) and a more
+script-friendly form, in which the password is propagated on the command line.
+
+This subcommand is supported in remote mode only.
+
+[[sthref2310]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref2311]]
+
+=== Operands
+
+aliasname::
+  This is the name of the password as it appears in `domain.xml`.
+
+[[sthref2312]]
+
+=== Examples
+
+[[GSRFM794]][[sthref2313]]
+
+==== Example 1   Updating a Password Alias
+
+[source]
+----
+asadmin> update-password-alias jmspassword-alias
+Please enter the alias password>
+Please enter the alias password again>
+Command update-password-alias executed successfully.
+----
+
+[[sthref2314]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref2315]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-password-alias.html#create-password-alias-1[`create-password-alias`(1)],
+link:delete-password-alias.html#delete-password-alias-1[`delete-password-alias`(1)],
+link:list-password-aliases.html#list-password-aliases-1[`list-password-aliases`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/uptime.adoc b/docs/reference-manual/src/main/asciidoc/uptime.adoc
new file mode 100644
index 0000000..5914fe3
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/uptime.adoc
@@ -0,0 +1,82 @@
+type=page
+status=published
+title=uptime
+next=validate-dcom.html
+prev=update-password-alias.html
+~~~~~~
+
+= uptime
+
+[[uptime-1]][[GSRFM00258]][[uptime]]
+
+== uptime
+
+Returns the length of time that the DAS has been running
+
+[[sthref2316]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] uptime [--help]
+----
+
+[[sthref2317]]
+
+=== Description
+
+The `uptime` subcommand returns the length of time that the domain
+administration server (DAS) has been running since it was last
+restarted.
+
+This subcommand is supported in remote mode only.
+
+[[sthref2318]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+
+[[sthref2319]]
+
+=== Examples
+
+[[GSRFM795]][[sthref2320]]
+
+==== Example 1   Showing How Long the DAS Has Been Running
+
+This example shows the length of time that the DAS has been running.
+
+[source]
+----
+asadmin> uptime
+Uptime: 2 days, 1 hours, 30 minutes, 18 seconds, Total milliseconds: 178218706
+Command uptime executed successfully.
+----
+
+[[sthref2321]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref2322]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:list-domains.html#list-domains-1[`list-domains`(1)],
+link:start-domain.html#start-domain-1[`start-domain`(1)],
+link:stop-domain.html#stop-domain-1[`stop-domain`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/validate-dcom.adoc b/docs/reference-manual/src/main/asciidoc/validate-dcom.adoc
new file mode 100644
index 0000000..a711c6c
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/validate-dcom.adoc
@@ -0,0 +1,198 @@
+type=page
+status=published
+title=validate-dcom
+next=validate-multicast.html
+prev=uptime.html
+~~~~~~
+
+= validate-dcom
+
+[[validate-dcom-1]][[GSRFM796]][[validate-dcom]]
+
+== validate-dcom
+
+Tests the connection over DCOM to a remote host
+
+[[sthref2323]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] validate-dcom [--help]
+[--windowsuser windows-user] [--windowsdomain windows-domain]
+[--remotetestdir remote-test-directory]
+[--verbose={false|true}] host-name
+----
+
+[[sthref2324]]
+
+=== Description
+
+The `validate-dcom` subcommand tests the connection over the Distributed
+Component Object Model (DCOM) remote protocol to the remote host that is
+specified as the operand of the subcommand. The DCOM protocol is
+available only on Windows systems.
+
+The prerequisites for running this subcommand are as follows:
+
+* DCOM must be configured on the host where the domain administration
+server (DAS) is running and on the remote host that is specified as the
+operand of the subcommand.
+
+* The following ports must be open on the remote host:
+** DCOM port 135 or 139
+** Windows Shares port 445
+
+* The Server Windows Service is enabled on the remote host.
+
+This subcommand verifies whether the prerequisites for creating a DCOM
+node or creating a {productName} instance on a DCOM node are met. If
+this subcommand fails, any attempt to create a DCOM node or create an
+instance on a DCOM node will also fail.
+
+You may run this command from any machine that can contact the DAS.
+
+The subcommand tests the connection over DCOM to the remote host by
+performing the following operations on the remote host:
+
+* Resolving the host name
+* Connecting to DCOM through port 135 or 139
+* Connecting to Windows Shares through port 445
+* Copying a script that is named `delete_me.bat` in the folder that is
+  specified by the `--remotetestdir` option
+* Running the script to obtain a listing of the folder in which the
+  `delete_me.bat` was written
+
+By default, the subcommand displays no information about the operations
+that are performed to test the connection to the remote host. To display
+information about these operations, set the `--verbose` option to `true`.
+
+This subcommand is supported in remote mode only.
+
+[[sthref2325]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--windowsuser`::
+`-w`::
+  The user on the remote host that is to run the process for connecting
+  to that host through DCOM. The default is the user that is running the
+  DAS process.
+`--windowsdomain`::
+`-d`::
+  The name of the Windows domain that contains the user that the
+  `--windowsuser` option specifies. The default is the name of the host
+  on which the subcommand is run.
+`--remotetestdir`::
+  Specifies the folder on the remote host in which the subcommand
+  creates the `delete_me.bat` file. The user that the `--windowsuser`
+  option specifies must have write access to this folder. Otherwise an
+  error occurs. The default is `C:\`
+`--verbose`::
+`-v`::
+  Specifies whether the subcommand displays information about the
+  operations that are performed to test the connection to the remote host. +
+  Possible values are as follows:
+
+  `false`;;
+    No information about the operations that are performed to test the
+    connection is displayed (default).
+  `true`;;
+    The subcommand displays information about the operations that are
+    performed to test the connection.
+
++
+If the `--verbose` option is true and the `AS_DEBUG` environment
+    variable is set, the subcommand also displays the command line for
+    each process that is running on the remote host.
+
+[[sthref2326]]
+
+=== Operands
+
+host-name::
+  The name of the host to which to test the connection over DCOM.
+
+[[sthref2327]]
+
+=== Examples
+
+[[GSRFM834]][[sthref2328]]
+
+==== Example 1   Testing the Connection Over DCOM to a Remote Host
+
+This example tests the connection over DCOM to the host `wpmdl2`.
+
+[source]
+----
+asadmin> validate-dcom --wpmdl2
+Command validate-dcom executed successfully.
+----
+
+[[GSRFM797]][[sthref2329]]
+
+==== Example 2   Verbosely Testing the Connection Over DCOM to a Remote Host
+
+This example tests the connection over DCOM to the host `wpmdl2` and
+displays information about the operations that are performed to test the
+connection to the remote host.
+
+[source]
+----
+asadmin> validate-dcom --verbose wpmdl2
+
+Successfully resolved host name to: wpmdl2/192.168.122.106
+Successfully connected to DCOM Port at port 135 on host wpmdl2.
+Successfully connected to NetBIOS Session Service at port 139 on host wpmdl2.
+Successfully connected to Windows Shares at port 445 on host wpmdl2.
+Successfully accessed C: on wpmdl2 using DCOM.
+Successfully wrote delete_me.bat to C: on wpmdl2 using DCOM.
+Successfully accessed WMI (Windows Management Interface) on wpmdl2. There are 40
+processes running on wpmdl2.
+Successfully ran the test script on wpmdl2 using DCOM.
+The script simply ran the DIR command. Here are the first few lines from the
+output of the dir command on the remote machine:
+
+C:\Windows\system32>dir C:\
+ Volume in drive C has no label.
+ Volume Serial Number is XXXX-XXX
+
+ Directory of C:\
+
+12/05/2011  10:21 AM                63 .asadminpass
+02/15/2011  01:08 PM    <DIR>          aroot
+12/05/2011  04:43 PM                 8 delete_me.bat
+03/03/2011  10:36 AM    <DIR>          export
+
+Command validate-dcom executed successfully.
+----
+
+[[sthref2330]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref2331]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
+link:delete-node-dcom.html#delete-node-dcom-1[`delete-node-dcom`(1)],
+link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
+link:ping-node-dcom.html#ping-node-dcom-1[`ping-node-dcom`(1)],
+link:update-node-ssh.html#update-node-dcom-1[`update-node-dcom`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/validate-multicast.adoc b/docs/reference-manual/src/main/asciidoc/validate-multicast.adoc
new file mode 100644
index 0000000..53860c8
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/validate-multicast.adoc
@@ -0,0 +1,165 @@
+type=page
+status=published
+title=validate-multicast
+next=verify-domain-xml.html
+prev=validate-dcom.html
+~~~~~~
+
+= validate-multicast
+
+[[validate-multicast-1]][[GSRFM00259]][[validate-multicast]]
+
+== validate-multicast
+
+Validates that multicast transport is available for clusters
+
+[[sthref2332]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] validate-multicast [--help]
+[--multicastport multicastport]
+[--multicastaddress multicastaddress]
+[--bindaddress bindaddress]
+[--sendperiod sendperiod]
+[--timeout timeout]
+[--timetolive timetolive]
+[--verbose={false|true}]
+----
+
+[[sthref2333]]
+
+=== Description
+
+The `validate-multicast` subcommand validates that multicast transport
+is available for clusters. You should run this subcommand at the same
+time on each of the hosts to be validated. This subcommand is available
+in local mode.
+
+[NOTE]
+====
+Do not run the `validate-multicast` subcommand using the DAS and
+cluster's multicast address and port values while the DAS and cluster
+are running. Doing so results in an error.
+
+The `validate-multicast` subcommand must be run at the same time on two
+or more machines to validate whether multicast messages are being
+received between the machines.
+====
+
+As long as all machines see each other, multicast is validated to be
+working properly across the machines. If the machines are not seeing
+each other, set the `--bindaddress` option explicitly to ensure that all
+machines are using interface on same subnet, or increase the
+`--timetolive` option from the default of `4`. If these changes fail to
+resolve the multicast issues, ask the network administrator to verify
+that the network is configured so the multicast messages can be seen
+between all the machines used to run the cluster.
+
+[[sthref2334]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--multicastport`::
+  The port for the multicast socket on which the Group Management
+  Service (GMS) listens for group events. Specify a standard UDP port
+  number in the range 2048-49151. The default is `2048`.
+`--multicastaddress`::
+  The address for the multicast socket on which the GMS listens for
+  group events. Specify a class D IP address. Class D IP addresses are
+  in the range `224.0.0.0` to `239.255.255.255`, inclusive. The address
+  `224.0.0.0` is reserved and should not be used. The default is
+  `228.9.3.1`.
+`--bindaddress`::
+  The local interface to receive multicast datagram packets for the GMS.
+  The default is to use all available binding interfaces. +
+  On a multi-home machine (possessing two or more network interfaces),
+  this attribute enables you to indicate which network interface is used
+  for the GMS. This value must be a local network interface IP address.
+`--sendperiod`::
+  The number of milliseconds between test messages sent between nodes.
+  The default is `2000`.
+`--timeout`::
+  The number of seconds before the subcommand times out and exits. The
+  default is `20`. You can also exit this subcommand using Ctrl-C.
+`--timetolive`::
+  The default time-to-live for multicast packets sent out on the
+  multicast socket in order to control the scope of the multicasts. The
+  time-to-live value must be between zero and 255 inclusive. The default
+  is the JDK default or a minimum defined by a constant in the GMS
+  subsystem, whichever is lower. To see the time-to-live value being
+  used, use the `--verbose` option.
+`--verbose`::
+  If used without a value or set to `true`, provides additional
+  debugging information. The default is `false`.
+
+[[sthref2335]]
+
+=== Examples
+
+[[GSRFM798]][[sthref2336]]
+
+==== Example 1   Validating multicast transport
+
+Run from host `machine1`:
+
+[source]
+----
+asadmin> validate-multicast
+Will use port 2,048
+Will use address 228.9.3.1
+Will use bind address null
+Will use wait period 2,000 (in milliseconds)
+
+Listening for data...
+Sending message with content "machine1" every 2,000 milliseconds
+Received data from machine1 (loopback)
+Received data from machine2
+Exiting after 20 seconds. To change this timeout, use the --timeout command line option.
+Command validate-multicast executed successfully
+----
+
+Run from host `machine2`:
+
+[source]
+----
+asadmin> validate-multicast
+Will use port 2,048
+Will use address 228.9.3.1
+Will use bind address null
+Will use wait period 2,000 (in milliseconds)
+
+Listening for data...
+Sending message with content "machine2" every 2,000 milliseconds
+Received data from machine2 (loopback)
+Received data from machine1
+Exiting after 20 seconds. To change this timeout, use the --timeout command line option.
+Command validate-multicast executed successfully
+----
+
+[[sthref2337]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref2338]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:get-health.html#get-health-1[`get-health`(1)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/verify-domain-xml.adoc b/docs/reference-manual/src/main/asciidoc/verify-domain-xml.adoc
new file mode 100644
index 0000000..296c238
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/verify-domain-xml.adoc
@@ -0,0 +1,88 @@
+type=page
+status=published
+title=verify-domain-xml
+next=version.html
+prev=validate-multicast.html
+~~~~~~
+
+= verify-domain-xml
+
+[[verify-domain-xml-1]][[GSRFM00260]][[verify-domain-xml]]
+
+== verify-domain-xml
+
+Verifies the content of the domain.xml file
+
+[[sthref2339]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] verify-domain-xml [--help]
+[--domaindir domain-dir] [domain-name]
+----
+
+[[sthref2340]]
+
+=== Description
+
+Verifies the content of the `domain.xml` file by checking the following:
+
+* That the `domain.xml` file can be parsed
+* That the names for elements that have them are unique
+
+This subcommand is supported in local mode only.
+
+[[sthref2341]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`-h` `--help`::
+  Displays the help text for the subcommand.
+`--domaindir`::
+  Specifies the domain root directory, where the domains are located.
+  The path must be accessible in the file system. The default is
+  as-install``/domains``.
+
+[[sthref2342]]
+
+=== Operands
+
+domain_name::
+  Specifies the name of the domain. The default is `domain1`.
+
+[[sthref2343]]
+
+=== Examples
+
+[[GSRFM799]][[sthref2344]]
+
+==== Example 1   Using verify-domain-xml
+
+[source]
+----
+asadmin> verify-domain-xml
+All Tests Passed.
+domain.xml is valid
+----
+
+[[sthref2345]]
+
+=== Exit Status
+
+0::
+  command executed successfully
+1::
+  error in executing the command
+
+[[sthref2346]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+
diff --git a/docs/reference-manual/src/main/asciidoc/version.adoc b/docs/reference-manual/src/main/asciidoc/version.adoc
new file mode 100644
index 0000000..b61eb4c
--- /dev/null
+++ b/docs/reference-manual/src/main/asciidoc/version.adoc
@@ -0,0 +1,121 @@
+type=page
+status=published
+title=version
+next=manvol1m.html
+prev=verify-domain-xml.html
+~~~~~~
+
+= version
+
+[[version-1]][[GSRFM00261]][[version]]
+
+== version
+
+Displays version information for{productName}
+
+[[sthref2347]]
+
+=== Synopsis
+
+[source]
+----
+asadmin [asadmin-options] version [--help]
+[--verbose={false|true}]
+[--local={false|true}]
+----
+
+[[sthref2348]]
+
+=== Description
+
+The `version` subcommand displays version information for
+{productName}. By default, if the subcommand cannot contact the
+domain administration server (DAS), the subcommand retrieves the version
+information locally and displays a warning message.
+
+This subcommand is supported in remote mode and local mode.
+
+[[sthref2349]]
+
+=== Options
+
+asadmin-options::
+  Options for the `asadmin` utility. For information about these
+  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
+`--help`::
+`-?`::
+  Displays the help text for the subcommand.
+`--verbose`::
+`-v`::
+  If this option is set to `true`, the subcommand provides the version
+  of the Java Runtime Environment (JRE) that the server is running. The
+  default is `false`.
+`--local`::
+  If this option is set to `true`, the subcommand obtains the version
+  locally from the installation of {productName} on the host where
+  the subcommand is run. +
+  If this option is set to `false` (default), the subcommand attempts to
+  contact the DAS to obtain the version. If the attempt to contact the
+  DAS fails, the subcommand retrieves the version locally and displays a
+  warning message.
+
+[[sthref2350]]
+
+=== Examples
+
+[[GSRFM800]][[sthref2351]]
+
+==== Example 1   Obtaining Version Information From a Running DAS
+
+[source]
+----
+asadmin> version
+Version = Eclipse GlassFish 7.0.0 (build 34)
+Command version executed successfully.
+----
+
+[[GSRFM801]][[sthref2352]]
+
+==== Example 2   Obtaining Version Information When the DAS Cannot be Reached
+
+[source]
+----
+asadmin> version
+Version string could not be obtained from Server [localhost:4848] for some reason.
+(Turn debugging on e.g. by setting AS_DEBUG=true in your environment, to see the
+ details).
+Using locally retrieved version string from version class.
+Version = Eclipse GlassFish 7.0.0 (build 34)
+Command version executed successfully.
+----
+
+[[GSRFM802]][[sthref2353]]
+
+==== Example 3   Obtaining Version Information Locally
+
+[source]
+----
+asadmin> version --local
+Using locally retrieved version string from version class.
+Version = Eclipse GlassFish 7.0.0 (build 34)
+Command version executed successfully.
+----
+
+[[sthref2354]]
+
+=== Exit Status
+
+0::
+  subcommand executed successfully
+1::
+  error in executing the subcommand
+
+[[sthref2355]]
+
+=== See Also
+
+link:asadmin.html#asadmin-1m[`asadmin`(1M)]
+
+link:list-modules.html#list-modules-1[`list-modules`(1)]
+
+
diff --git a/docs/reference-manual/src/main/jbake/assets/css/style.css b/docs/reference-manual/src/main/jbake/assets/css/style.css
deleted file mode 100644
index 25a16e4..0000000
--- a/docs/reference-manual/src/main/jbake/assets/css/style.css
+++ /dev/null
@@ -1,315 +0,0 @@
-/* CSS */
-/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
-/** 1. Set default font family to sans-serif. 2. Prevent iOS text size adjust after orientation change, without disabling user zoom. */
-html { font-family: sans-serif; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ }
-
-/* HTML5 display definitions ========================================================================== */
-/** Correct `block` display not defined for any HTML5 element in IE 8/9. Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox. Correct `block` display not defined for `main` in IE 11. */
-article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { display: block; }
-
-/** 1. Correct `inline-block` display not defined in IE 8/9. 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. */
-audio, canvas, progress, video { display: inline-block; /* 1 */ vertical-align: baseline; /* 2 */ }
-
-/** Prevent modern browsers from displaying `audio` without controls. Remove excess height in iOS 5 devices. */
-audio:not([controls]) { display: none; height: 0; }
-
-/** Address `[hidden]` styling not present in IE 8/9/10. Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. */
-[hidden], template { display: none; }
-
-/* Links ========================================================================== */
-/** Remove the gray background color from active links in IE 10. */
-a { background-color: transparent; }
-
-/** Improve readability when focused and also mouse hovered in all browsers. */
-a:active, a:hover { outline: 0; }
-
-/* Text-level semantics ========================================================================== */
-/** Address styling not present in IE 8/9/10/11, Safari, and Chrome. */
-abbr[title] { border-bottom: 1px dotted; }
-
-/** Address style set to `bolder` in Firefox 4+, Safari, and Chrome. */
-b, strong { font-weight: bold; }
-
-/** Address styling not present in Safari and Chrome. */
-dfn { font-style: italic; }
-
-/** Address variable `h1` font-size and margin within `section` and `article` contexts in Firefox 4+, Safari, and Chrome. */
-h1 { font-size: 2em; margin: 0.67em 0; }
-
-/** Address styling not present in IE 8/9. */
-mark { background: #ff0; color: #000; }
-
-/** Address inconsistent and variable font size in all browsers. */
-small { font-size: 80%; }
-
-/** Prevent `sub` and `sup` affecting `line-height` in all browsers. */
-sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }
-
-sup { top: -0.5em; }
-
-sub { bottom: -0.25em; }
-
-/* Embedded content ========================================================================== */
-/** Remove border when inside `a` element in IE 8/9/10. */
-img { border: 0; }
-
-/** Correct overflow not hidden in IE 9/10/11. */
-svg:not(:root) { overflow: hidden; }
-
-/* Grouping content ========================================================================== */
-/** Address margin not present in IE 8/9 and Safari. */
-figure { margin: 1em 40px; }
-
-/** Address differences between Firefox and other browsers. */
-hr { box-sizing: content-box; height: 0; }
-
-/** Contain overflow in all browsers. */
-pre { overflow: auto; }
-
-/** Address odd `em`-unit font size rendering in all browsers. */
-code, kbd, pre, samp { font-family: monospace, monospace; font-size: 1em; }
-
-/* Forms ========================================================================== */
-/** Known limitation: by default, Chrome and Safari on OS X allow very limited styling of `select`, unless a `border` property is set. */
-/** 1. Correct color not being inherited. Known issue: affects color of disabled elements. 2. Correct font properties not being inherited. 3. Address margins set differently in Firefox 4+, Safari, and Chrome. */
-button, input, optgroup, select, textarea { color: inherit; /* 1 */ font: inherit; /* 2 */ margin: 0; /* 3 */ }
-
-/** Address `overflow` set to `hidden` in IE 8/9/10/11. */
-button { overflow: visible; }
-
-/** Address inconsistent `text-transform` inheritance for `button` and `select`. All other form control elements do not inherit `text-transform` values. Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. Correct `select` style inheritance in Firefox. */
-button, select { text-transform: none; }
-
-/** 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls. 2. Correct inability to style clickable `input` types in iOS. 3. Improve usability and consistency of cursor style between image-type `input` and others. */
-button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ }
-
-/** Re-set default cursor for disabled elements. */
-button[disabled], html input[disabled] { cursor: default; }
-
-/** Remove inner padding and border in Firefox 4+. */
-button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; }
-
-/** Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet. */
-input { line-height: normal; }
-
-/** It's recommended that you don't attempt to style these elements. Firefox's implementation doesn't respect box-sizing, padding, or width.  1. Address box sizing set to `content-box` in IE 8/9/10. 2. Remove excess padding in IE 8/9/10. */
-input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ }
-
-/** Fix the cursor style for Chrome's increment/decrement buttons. For certain `font-size` values of the `input`, it causes the cursor style of the decrement button to change from `default` to `text`. */
-input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { height: auto; }
-
-/** 1. Address `appearance` set to `searchfield` in Safari and Chrome. 2. Address `box-sizing` set to `border-box` in Safari and Chrome (include `-moz` to future-proof). */
-input[type="search"] { -webkit-appearance: textfield; /* 1 */ /* 2 */ box-sizing: content-box; }
-
-/** Remove inner padding and search cancel button in Safari and Chrome on OS X. Safari (but not Chrome) clips the cancel button when the search input has padding (and `textfield` appearance). */
-input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; }
-
-/** Define consistent border, margin, and padding. */
-fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; }
-
-/** 1. Correct `color` not being inherited in IE 8/9/10/11. 2. Remove padding so people aren't caught out if they zero out fieldsets. */
-legend { border: 0; /* 1 */ padding: 0; /* 2 */ }
-
-/** Remove default vertical scrollbar in IE 8/9/10/11. */
-textarea { overflow: auto; }
-
-/** Don't inherit the `font-weight` (applied by a rule above). NOTE: the default cannot safely be changed in Chrome and Safari on OS X. */
-optgroup { font-weight: bold; }
-
-/* Tables ========================================================================== */
-/** Remove most spacing between table cells. */
-table { border-collapse: collapse; border-spacing: 0; }
-
-td, th { padding: 0; }
-
-/* LAYOUT STYLES */
-
-p { margin-top: 0; }
-
-code, pre { margin-bottom: 30px; font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace; font-size: 13px; color: #222; }
-
-code { padding: 0 3px; background-color: #f2f8fc; border: solid 1px #dbe7f3; }
-
-pre { padding: 20px; overflow: auto; text-shadow: none; background: #fff; border: solid 1px #f2f2f2; }
-
-pre code { padding: 0; color: #2879d0; background-color: #fff; border: none; }
-
-ul, ol, dl { margin-bottom: 20px; }
-
-/* COMMON STYLES */
-
-td.halign-right { text-align: right; } 
-
-td.halign-center { text-align: center; } 
-
-form { padding: 20px; background: #f2f2f2; }
-
-h2 { 
-   font-size: 2em;
-   line-height: 1.2em;
-   font-weight: 200;
-   letter-spacing: 0;
-}
-
-h3 { 
-   font-size: 1.4em;
-   line-height: 1.2em;
-   font-weight: normal;
-   letter-spacing: 0;
-}
-
-.sect1 {
-   margin-left: 4%;
-   margin-right: 4%;
-   font: 13px/20px Arial, Helvetica, sans-serif  
-}
-
-a:link {
-   text-decoration: none;
-   color: #09569d;
-}
-
-#preamble hr{
-   margin-left: 0%;
-   margin-right: 0%;
-}
-
-#preamble .sectionbody table  {
-   font-weight: 200;
-   margin-left: 4%;
-   margin-right: 4%;
-}
-
-hr {
-   margin-bottom: 12px;
-}
-
-table.tableblock.frame-all.grid-all.spread {
-   font-size: 12px;
-}
-
-code {
-   font-size:.9em;
-   border: 1px solid #eaeaea;
-   background-color: #f6f6f6;
-   border-radius: 3px;
-   padding: 1px;
-   padding-left:2px;
-   padding-right:2px;
-}
-
-pre.prettyprint.highlight {
-   border: 1px solid #eaeaea;
-   background-color: #f6f6f6;
-   border-radius: 4px;
-   padding: 8px;
-   padding-top:4px;
-   padding-bottom:4px;
-}
-
-.language-oac_no_warn {
-   font-size:.9em;
-   color:#222;
-   background-color: transparent;
-}
-
-#doc-title {
-   margin-left: 4%;
-}
-
-#top-nav {
-   margin-left: 4%;
-   font-size: 12px;
-}
-
-#bottom-nav {
-   margin-left: 4%;
-   font-size: 12px;
-}
-
-.vector-font {
-   color:grey; 
-   font-size: 20px;
-}
-
-#copyright {
-   padding-top: 10px;
-   padding-bottom: 4px;
-   display: table;
-   margin:0 auto;
-   color: grey;
-   font-size: 12px;
-   vertical-align: middle;
-}
-
-.beta {color: #FF0000}
-
-/* GENERAL ELEMENT TYPE STYLES */
-
-/* #Media Queries
-================================================== */
-/* Smaller than standard 960 (devices and browsers) */
-/* Tablet Portrait size to standard 960 (devices and browsers) */
-@media only screen and (min-width: 768px) and (max-width: 959px) { .inner { width: 740px; }
-  header h1, header h2 { width: 340px; }
-  header h1 { font-size: 60px; }
-  header h2 { font-size: 30px; }
-}
-/* All Mobile Sizes (devices and browser) */
-@media only screen and (max-width: 767px) { .inner { width: 93%; }
-  header { padding: 20px 0; }
-  header .inner { position: relative; }
-  header h1, header h2 { width: 100%; }
-  header h1 { font-size: 48px; }
-  header h2 { font-size: 24px; }
-  header a.button { position: relative; display: inline-block; width: auto; height: auto; padding: 5px 10px; margin-top: 15px; font-size: 13px; line-height: 1; color: #2879d0; text-align: center; background-color: #9ddcff; background-image: none; border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; }
-  header a.button small { display: inline; font-size: 13px; }
-}
-/* Mobile Landscape Size to Tablet Portrait (devices and browsers) */
-/* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */
-
-header h1 { padding-top: 14px; font-size: 2em; font-weight: 200; line-height: 1.4; color: #FFFFFF; letter-spacing: 0px; border-bottom: 0px; }
-
-header h2 { font-size: 1.2em; margin-top: 0; margin-bottom: 0; font-weight: 200; line-height: .8; color: #ec7D11; letter-spacing: 0; }
-
-/*
-header a.button { background: transparent url(../images/logo.png) 0 0 no-repeat; padding-left: 32px; }
-*/
-
-header a:hover { text-decoration: none; }
-
-/* Admonition (Note) block */
-.admonitionblock > table {
-  border: 0;
-  background: none;
-  width: 100%;
-  table-layout: auto;
-  margin-bottom: 10.5px;
-}
-.admonitionblock > table td.icon {
-  text-align: center;
-  width: 60px;
-}
-.admonitionblock > table td.icon img {
-  max-width: none;
-}
-.admonitionblock > table td.icon .title {
-  text-transform: uppercase;
-}
-.admonitionblock > table td.content {
-  padding-left: 1em;
-  padding-right: 1em;
-  border-left: 3px solid #ddd;
-}
-.admonitionblock > table td.content > :last-child > :last-child {
-  margin-bottom: 0;
-}
-.admonitionblock td.icon [class^="fa icon-"]:before {
-  font-size: 2.5em;
-  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
-  cursor: default;
-}
-.admonitionblock td.icon .icon-note:before {
-  content: "\f05a";
-  color: #5bc0de;
-}
diff --git a/docs/reference-manual/src/main/jbake/content/add-library.adoc b/docs/reference-manual/src/main/jbake/content/add-library.adoc
deleted file mode 100644
index 3d1f5a4..0000000
--- a/docs/reference-manual/src/main/jbake/content/add-library.adoc
+++ /dev/null
@@ -1,153 +0,0 @@
-type=page
-status=published
-title=add-library
-next=add-resources.html
-prev=manvol1.html
-~~~~~~
-add-library
-===========
-
-[[add-library-1]][[GSRFM00818]][[add-library]]
-
-add-library
------------
-
-adds one or more library JAR files to \{product---name}
-
-[[sthref7]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] add-library [--help] 
-[--type={common|ext|app}] [--upload={false|true}]
-library-file-path [library-file-path ... ]
-----
-
-[[sthref8]]
-
-Description
-
-The `add-library` subcommand adds one or more library archive files to
-\{product---name}.
-
-The `--type` option specifies the library type and the \{product---name}
-directory to which the library is added.
-
-The library-file-path operand is the path to the JAR file that contains
-the library to be added. To specify multiple libraries, specify multiple
-paths separated by spaces.
-
-
-[NOTE]
-=======================================================================
-
-The library archive file is added to the DAS. For common and extension
-libraries, you must restart the DAS so the libraries are picked up by
-the server runtime. To add the libraries to other server instances,
-synchronize the instances with the DAS by restarting them.
-
-=======================================================================
-
-
-This subcommand is supported in remote mode only.
-
-[[sthref9]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--type`::
-  Specifies the library type and the \{product---name} directory to
-  which the library is added. Valid values are as follows: +
-  `common`;;
-    Adds the library files to the Common class loader directory,
-    domain-dir`/lib`. This is the default.
-  `ext`;;
-    Adds the library files to the Java optional package directory,
-    domain-dir`/lib/ext`.
-  `app`;;
-    Adds the library files to the application-specific class loader
-    directory, domain-dir`/lib/applibs`. +
-  For more information about these directories, see
-  "link:../application-development-guide/class-loaders.html#GSDVG00003[Class Loaders]" in GlassFish Server Open Source
-  Edition Application Development Guide.
-`--upload`::
-  Specifies whether the subcommand uploads the file to the DAS. In most
-  situations, this option can be omitted. +
-  Valid values are as follows: +
-  `false`;;
-    The subcommand does not upload the file and attempts to access the
-    file through the specified file name. If the DAS cannot access the
-    file, the subcommand fails. +
-    For example, the DAS might be running as a different user than the
-    administration user and does not have read access to the file. In
-    this situation, the subcommand fails if the `--upload` option is
-    `false`.
-  `true`;;
-    The subcommand uploads the file to the DAS over the network
-    connection. +
-  The default value depends on whether the DAS is on the host where the
-  subcommand is run or is on a remote host. +
-  * If the DAS is on the host where the subcommand is run, the default
-  is `false`.
-  * If the DAS is on a remote host, the default is `true`. +
-  If a directory filepath is specified, this option is ignored.
-
-[[sthref10]]
-
-Operands
-
-library-file-path::
-  The paths to the archive files that contain the libraries that are to
-  be added. You can specify an absolute path or a relative path. +
-  If the `--upload` option is set to `true`, this is the path to the
-  file on the local client machine. If the `--upload` option is set to
-  `false`, this is the path to the file on the server machine.
-
-[[sthref11]]
-
-Examples
-
-[[GSRFM824]][[sthref12]]
-
-Example 1   Adding Libraries
-
-This example adds the library in the archive file `mylib.jar` to the
-application-specific class loader directory on the default server
-instance.
-
-[source,oac_no_warn]
-----
-asadmin> add-library --type app /tmp/mylib.jar
-Command add-library executed successfully.
-----
-
-[[sthref13]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref14]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:list-libraries.html#list-libraries-1[`list-libraries`(1)],
-link:remove-library.html#remove-library-1[`remove-library`(1)]
-
-"link:../application-development-guide/class-loaders.html#GSDVG00003[Class Loaders]" in GlassFish Server Open Source
-Edition Application Development Guide
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/add-resources.adoc b/docs/reference-manual/src/main/jbake/content/add-resources.adoc
deleted file mode 100644
index 456baa3..0000000
--- a/docs/reference-manual/src/main/jbake/content/add-resources.adoc
+++ /dev/null
@@ -1,183 +0,0 @@
-type=page
-status=published
-title=add-resources
-next=apply-http-lb-changes.html
-prev=add-library.html
-~~~~~~
-add-resources
-=============
-
-[[add-resources-1]][[GSRFM00001]][[add-resources]]
-
-add-resources
--------------
-
-creates the resources specified in an XML file
-
-[[sthref15]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] add-resources [--help] 
-[--target target] 
-[--upload={false|true}] xml-file-name
-----
-
-[[sthref16]]
-
-Description
-
-The `add-resources` subcommand creates the resources named in the
-specified XML file. The resources that can be created with this
-subcommand are listed in See Also in this help page.
-
-The `--target` option specifies the target for which you are creating
-the resources. If this option specifies the domain, the resources are
-added only to the configuration of the domain administration server
-(DAS). If this option specifies any other target, the resources are
-added to the configuration of the DAS and references are added to the
-resources from the specified target.
-
-The xml-file-name operand is the path to the XML file that contains the
-resources to be created. The `DOCTYPE` must be specified as
-`http://glassfish.org/dtds/glassfish-resources_1_5.dtd` in the
-`resources.xml` file.
-
-This subcommand is supported in remote mode only.
-
-[[sthref17]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Specifies the target for which you are creating the resources. +
-  Valid values are as follows: +
-  `server`;;
-    Creates the resources for the default server instance `server` and
-    is the default value.
-  `domain`;;
-    Creates the resources for the domain.
-  cluster-name;;
-    Creates the resources for every server instance in the cluster.
-  instance-name;;
-    Creates the resources for a particular \{product---name} instance.
-`--upload`::
-  Specifies whether the subcommand uploads the file to the DAS. In most
-  situations, this option can be omitted. +
-  Valid values are as follows: +
-  `false`;;
-    The subcommand does not upload the file and attempts to access the
-    file through the specified file name. If the DAS cannot access the
-    file, the subcommand fails. +
-    For example, the DAS might be running as a different user than the
-    administration user and does not have read access to the file. In
-    this situation, the subcommand fails if the `--upload` option is
-    `false`.
-  `true`;;
-    The subcommand uploads the file to the DAS over the network
-    connection. +
-  The default value depends on whether the DAS is on the host where the
-  subcommand is run or is on a remote host. +
-  * If the DAS is on the host where the subcommand is run, the default
-  is `false`.
-  * If the DAS is on a remote host, the default is `true`.
-
-[[sthref18]]
-
-Operands
-
-xml-file-name::
-  The path to the XML file that contains the resources that are to be
-  created. You can specify an absolute path, only the file name, or a
-  relative path. +
-  * If you specify an absolute path, the XML file can be anywhere.
-  * If you specify only the file name, the XML file must reside in the
-  domain-dir`/config` directory on the DAS host. This requirement must
-  be met even if you run the subcommand from another host.
-  * If you specify a relative path, the XML file must be in the relative
-  directory. +
-  An example XML file follows. +
-[source,oac_no_warn]
-----
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE resources PUBLIC 
-   "-//GlassFish.org//DTD GlassFish Application Server 3.1 Resource Definitions //EN" 
-   "http://glassfish.org/dtds/glassfish-resources_1_5.dtd">
-<resources>
- <jdbc-connection-pool name="SPECjPool" steady-pool-size="100" 
-   max-pool-size="150" max-wait-time-in-millis="60000" 
-   pool-resize-quantity="2" idle-timeout-in-seconds="300" 
-   is-isolation-level-guaranteed="true" 
-   is-connection-validation-required="false" 
-   connection-validation-method="auto-commit" 
-   fail-all-connections="false" 
-   datasource-classname="oracle.jdbc.pool.OracleDataSource">
-  <property name="URL" 
-    value="jdbc:oracle:thin:@iasperfsol12:1521:specdb"/>
-  <property name="User" value="spec"/>
-  <property name="Password" value="spec"/>
-  <property name="MaxStatements" value="200"/>
-  <property name="ImplicitCachingEnabled" value="true"/>
- </jdbc-connection-pool>
- <jdbc-resource enabled="true" pool-name="SPECjPool" 
-   jndi-name="jdbc/SPECjDB"/> 
-</resources>
-----
-
-[[sthref19]]
-
-Examples
-
-[[GSRFM445]][[sthref20]]
-
-Example 1   Adding Resources
-
-This example creates resources using the contents of the XML file
-`resource.xml`.
-
-[source,oac_no_warn]
-----
-asadmin> add-resources resource.xml
-Command : Connector connection pool jms/testQFactoryPool created.
-Command : Administered object jms/testQ created.
-Command : Connector resource jms/testQFactory created.
-Command : Resource adapter config myResAdapterConfig created successfully
-Command : JDBC connection pool DerbyPoolA created successfully.
-Command : JDBC resource jdbc/__defaultA created successfully.
-Command add-resources executed successfully.
-----
-
-[[sthref21]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref22]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-jdbc-connection-pool.html#create-jdbc-connection-pool-1[`create-jdbc-connection-pool`(1)],link:create-jdbc-resource.html#create-jdbc-resource-1[`create-jdbc-resource`(1)],
-link:create-jms-resource.html#create-jms-resource-1[`create-jms-resource`(1)],
-link:create-jndi-resource.html#create-jndi-resource-1[`create-jndi-resource`(1)],
-link:create-javamail-resource.html#create-javamail-resource-1[`create-javamail-resource`(1)],
-link:create-custom-resource.html#create-custom-resource-1[`create-custom-resource`(1)],
-link:create-connector-resource.html#create-connector-resource-1[`create-connector-resource`(1)],
-link:create-connector-work-security-map.html#create-connector-work-security-map-1[`create-connector-work-security-map`(1)],
-link:create-admin-object.html#create-admin-object-1[`create-admin-object`(1)],
-link:create-resource-adapter-config.html#create-resource-adapter-config-1[`create-resource-adapter-config`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/appclient.adoc b/docs/reference-manual/src/main/jbake/content/appclient.adoc
deleted file mode 100644
index 4870967..0000000
--- a/docs/reference-manual/src/main/jbake/content/appclient.adoc
+++ /dev/null
@@ -1,220 +0,0 @@
-type=page
-status=published
-title=appclient
-next=asadmin.html
-prev=manvol1m.html
-~~~~~~
-appclient
-=========
-
-[[appclient-1m]][[GSRFM00262]][[appclient]]
-
-appclient
----------
-
-launches the Application Client Container and invokes the client
-application typically packaged in the application JAR file
-
-[[sthref2357]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-appclient [client_application_classfile | -client client_application_jar] 
-[-mainclass main_class_name | -name display_name]
-[-xml sun-acc.xml file] [-textauth]
-[-targetserver host[:port][,host[:port]...]]
-[-user username] [-passwordfile password_file] 
-[application-options]
-
-appclient [jvm-options] 
-[-mainclass main_class_name | -name display_name]
-[-xml client_config_xml_file] [-textauth] 
-[-targetserver host[:port][,host[:port]...]]
-[-user username] [-passwordfile password_file] 
-class-selector [application-options]
-----
-
-[[sthref2358]]
-
-Description
-
-Use the `appclient` command to launch the Application Client Container
-and invoke a client application that is typically packaged in an
-application JAR file. The application client JAR file is specified and
-created during deployment by the Administration Console or the
-`asadmin deploy` command with the `--retrieve` option. You can also
-retrieve the client JAR file using the `asadmin get-client-stubs`
-command.
-
-The Application Client Container is a set of Java classes, libraries,
-and other files that are required to execute a first-tier application
-client program on a Virtual Machine for the Java platform (JVM machine).
-The Application Client Container communicates with the server using
-RMI-IIOP.
-
-The client JAR file that is retrieved after deploying an application
-should be passed with the `-client` or `-jar` option when running the
-`appclient` utility. The client JAR file name is of the form
-app-name`Client.jar`. For multiple application clients in an EAR file,
-you must use the `-mainclass` or `-name` option to specify which client
-to invoke.
-
-If the application client is a stand-alone module or the only client in
-an EAR file, the Application Client Container can find the client
-without using the `-mainclass` or `-name` options. If you provide a
-`-mainclass` or `-name` value that does not match what is in the client,
-the Application Client Container launches the client anyway but issues a
-warning that the selection did not match the information in the client.
-The warning also displays what the actual main class and name values are
-for the client.
-
-[[sthref2359]]
-
-Options
-
-jvm-options::
-  optional; you can set JVM options for the client application. These
-  can be any valid `java` command options except `-client` or `-jar`.
-  JVM options can be intermixed with other `appclient` command options
-  as long as both types of options appear before the class-selector.
-client_application_classfile::
-  optional; the file system pathname of the client application `.class`
-  file. A relative pathname must be relative to the current directory.
-  This class file must contain the `main()` method to be invoked by the
-  Application Client Container. +
-  If you use client_application_classfile and the class is dependent on
-  other user classes, you must also set the classpath. You can either
-  use the `-classpath` JVM option in the `appclient` command or set the
-  `CLASSPATH` environment variable. For more information about setting a
-  classpath, see Setting the Class Path, Oracle Solaris Version
-  (`http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/classpath.html`)
-  or Setting the Class Path, Windows Version
-  (`http://docs.oracle.com/javase/6/docs/technotes/tools/windows/classpath.html`).
-`-client`::
-  optional; the name and location for the client JAR file.
-`-mainclass`::
-  optional; the full classname of the main client application as
-  specified in the `Main-Class` entry in the `MANIFEST.MF` file. Used
-  for a multiple client applications. By default, uses the class
-  specified in the `client jar`. For example,
-  `com.example.test.AppClient`.
-`-name`::
-  optional; the display name for the client application. Used for
-  multiple client applications. By default, the display name is
-  specified in the client jar `application-client.xml` file which is
-  identified by the `display-name` attribute.
-`-xml`::
-  optional if using the default domain, instance, and name
-  (`sun-acc.xml`), otherwise it is required; identifies the name and
-  location of the client configuration XML file. If not specified,
-  defaults to the `sun-acc.xml` file in the domain-dir`/config`
-  directory.
-`-textauth`::
-  optional; used to specify using text format authentication when
-  authentication is needed.
-`-targetserver`::
-  optional; a comma-separated list of one or more server specifications
-  for ORB endpoints. Each server specification must include at least the
-  host. Optionally, a server specification can include the port as well.
-  If the port is omitted from a server specification, the default value,
-  `3700`, is used for that host.
-`-user`::
-  optional; the application user who is authorized to have access to
-  particular guarded components in the application, such as EJB
-  components.
-`-passwordfile`::
-  optional; specifies the name, including the full path, of a file that
-  contains the password for application clients in the following format: +
-[source,oac_no_warn]
-----
-PASSWORD=appclient-password
-----
-::
-  If this option is omitted, the password is specified interactively at
-  the command prompt. +
-
-[width="100%",cols="100%",]
-|=======================================================================
-a|
-Caution:
-
-Avoid specifying a password interactively at the command prompt. Such
-a password can be seen by users who can run commands to display
-running processes and the commands to start them, such as `ps`.
-
-|=======================================================================
-
-  For security reasons, a password that is specified as an environment
-  variable is not read by the `appclient` utility.
-class-selector::
-  required; you must specify the client application class using one of
-  the following class selectors. +
-  `-jar` jar-file;;
-    the name and location of the client JAR file. The application client
-    JAR file is specified and created during deployment by the
-    `asadmin deploy` command. If specified, the `-classpath` setting is
-    ignored in deference to the `Class-Path` setting in the client JAR
-    file's manifest.
-  class-name;;
-    the fully qualified name of the application client's main class. The
-    Application Client Container invokes the `main` method of this class
-    to start the client. For example, `com.example.test.AppClient`. +
-    If you use class-name as the class selector, you must also set the
-    classpath. You can either use the `-classpath` JVM option in the
-    `appclient` command or set the `CLASSPATH` environment variable. For
-    more information about setting a classpath, see Setting the Class
-    Path, Oracle Solaris Version
-    (`http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/classpath.html`)
-    or Setting the Class Path, Windows Version
-    (`http://docs.oracle.com/javase/6/docs/technotes/tools/windows/classpath.html`).
-application-options::
-  optional; you can set client application arguments.
-
-[[sthref2360]]
-
-Examples
-
-[[GSRFM804]][[sthref2361]]
-
-Example 1   Using the `appclient` command
-
-[source,oac_no_warn]
-----
-appclient -xml sun-acc.xml -jar myclientapp.jar scott sample
-----
-
-Where: `sun-acc.xml` is the name of the client configuration XML file,
-`myclientapp.jar` is the client application `.jar` file, and `scott` and
-`sample` are arguments to pass to the application. If `sun-acc.xml` and
-`myclientapp.jar` are not in the current directory, you must give the
-absolute path locations; otherwise the relative paths are used. The
-relative path is relative to the directory where the command is being
-executed.
-
-[[sthref2362]]
-
-Attributes
-
-See
-http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN5attributes-5[`attributes`(5)]
-for descriptions of the following attributes:
-
-[width="100%",cols="50%,50%",options="header",]
-|===============================
-|ATTRIBUTE TYPE |ATTRIBUTE VALUE
-|Interface Stability |Unstable
-|===============================
-
-
-[[sthref2363]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:get-client-stubs.html#get-client-stubs-1[`get-client-stubs`(1)],
-link:package-appclient.html#package-appclient-1m[`package-appclient`(1M)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/application.adoc b/docs/reference-manual/src/main/jbake/content/application.adoc
deleted file mode 100644
index d3d9069..0000000
--- a/docs/reference-manual/src/main/jbake/content/application.adoc
+++ /dev/null
@@ -1,38 +0,0 @@
-type=page
-status=published
-title=application
-next=configuration.html
-prev=manvol5asc.html
-~~~~~~
-application
-===========
-
-[[application-5asc]][[GSRFM00265]][[application]]
-
-application
------------
-
-server-side Java applications and web services
-
-[[sthref2392]]
-
-Description
-
-The Java EE platform enables applications to access systems that are
-outside of the application server. Applications connect to these systems
-through resources. The \{product---name} infrastructure supports the
-deployment of many types of distributed applications and is an ideal
-foundation for building applications based on Service Oriented
-Architectures (SOA). SOA is a design methodology aimed at maximizing the
-reuse of application services. These features enable you to run scalable
-and highly available Java EE applications.
-
-[[sthref2393]]
-
-See Also
-
-link:create-application-ref.html#create-application-ref-1[`create-application-ref`(1)],
-link:deploy.html#deploy-1[`deploy`(1)],
-link:list-applications.html#list-applications-1[`list-applications`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/apply-http-lb-changes.adoc b/docs/reference-manual/src/main/jbake/content/apply-http-lb-changes.adoc
deleted file mode 100644
index 8ee5298..0000000
--- a/docs/reference-manual/src/main/jbake/content/apply-http-lb-changes.adoc
+++ /dev/null
@@ -1,120 +0,0 @@
-type=page
-status=published
-title=apply-http-lb-changes
-next=attach.html
-prev=add-resources.html
-~~~~~~
-apply-http-lb-changes
-=====================
-
-[[apply-http-lb-changes-1]][[GSRFM00002]][[apply-http-lb-changes]]
-
-apply-http-lb-changes
----------------------
-
-applies load balancer configuration changes to the load balancer
-
-[[sthref23]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] apply-http-lb-changes [--help]
-lb-name
-----
-
-[[sthref24]]
-
-Description
-
-Use the `apply``http``-lb-changes` subcommand to apply the changes in
-the load balancer configuration to the physical load balancer. The load
-balancer must already exist. To create a physical load balancer, use the
-`create-http-lb` subcommand.
-
-This subcommand is only applicable to Oracle GlassFish Server. This
-subcommand is not applicable to GlassFish Server Open Source Edition.
-
-[[sthref25]]
-
-Context
-
-The Load Balancer distributes the workload among multiple Oracle
-GlassFish Server instances , increasing the overall throughput of the
-system. The Load Balancer also enables requests to failover from one
-server instance to another. For HTTP session information to persist,
-configure HTTP session persistence.
-
-
-[NOTE]
-=======================================================================
-
-The Load Balancer Plugin is only available with Oracle GlassFish Server,
-and is not available with GlassFish Server Open Source Edition. For
-GlassFish Server Open Source Edition, it is possible to use the `mod_jk`
-module to configure load balancing on the Apache HTTP server.
-
-=======================================================================
-
-
-For more information about configuring load balancing with
-\{product---name}, refer to the online help in the \{product---name}
-Administration Console.
-
-[[sthref26]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref27]]
-
-Operands
-
-lb-name::
-  The name of the load balancer to which changes are applied. The load
-  balancer must already exist. You can create it with the
-  `create-http-lb` subcommand.
-
-[[sthref28]]
-
-Examples
-
-[[GSRFM446]][[sthref29]]
-
-Example 1   Using the apply`-http``-lb``-changes` subcommand
-
-This example applies configuration changes to a load balancer named
-`mylb`.
-
-[source,oac_no_warn]
-----
-asadmin> apply-http-lb-changes mylb
-Command apply-http-lb-changes executed successfully.
-----
-
-[[sthref30]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref31]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-http-lb.html#create-http-lb-1[`create-http-lb`(1)],
-link:create-http-lb-config.html#create-http-lb-config-1[`create-http-lb-config`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/asadmin.adoc b/docs/reference-manual/src/main/jbake/content/asadmin.adoc
deleted file mode 100644
index 9b7db13..0000000
--- a/docs/reference-manual/src/main/jbake/content/asadmin.adoc
+++ /dev/null
@@ -1,823 +0,0 @@
-type=page
-status=published
-title=asadmin
-next=debug-asadmin.html
-prev=appclient.html
-~~~~~~
-asadmin
-=======
-
-The script content on this page is for navigation purposes only and does
-not alter the content in any way.
-
-[[asadmin-1m]][[GSRFM00263]][[asadmin]]
-
-asadmin
--------
-
-utility for performing administrative tasks for Oracle \{product---name}
-
-[[sthref2364]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [--host host] 
-[--port port] 
-[--user admin-user] 
-[--passwordfile filename] 
-[--terse={true|false}] 
-[--secure={false|true}] 
-[--echo={true|false}] 
-[--interactive={true|false}] 
-[--detach={true|false}]
-[--help] 
-[subcommand [options] [operands]]
-----
-
-[[sthref2365]]
-
-Description
-
-Use the `asadmin` utility to perform administrative tasks for Oracle
-GlassFish Server. You can use this utility instead of the Administration
-Console interface.
-
-Subcommands of the asadmin Utility
-
-The subcommand identifies the operation or task that you are performing.
-Subcommands are case-sensitive. Each subcommand is either a local
-subcommand or a remote subcommand.
-
-* A local subcommand can be run without a running domain administration
-server (DAS). However, to run the subcommand and have access to the
-installation directory and the domain directory, the user must be logged
-in to the machine that hosts the domain.
-* A remote subcommand is always run by connecting to a DAS and running
-the subcommand there. A running DAS is required.
-
-asadmin Utility Options and Subcommand Options
-
-Options control the behavior of the `asadmin` utility and its
-subcommands. Options are also case-sensitive.
-
-The `asadmin` utility has the following types of options:
-
-* `asadmin` utility options. These options control the behavior of the
-`asadmin` utility, not the subcommand. The `asadmin` utility options may
-precede or follow the subcommand, but `asadmin` utility options after
-the subcommand are deprecated. All `asadmin` utility options must either
-precede or follow the subcommand. If `asadmin` utility options are
-specified both before and after the subcommand, an error occurs. For a
-description of the `asadmin` utility options, see the "Options" section
-of this help information.
-* Subcommand options. These options control the behavior of the
-subcommand, not the `asadmin` utility. Subcommand options must follow
-the subcommand. For a description of a subcommand's options, see the
-help information for the subcommand.
-
-A subcommand option may have the same name as an `asadmin` utility
-option, but the effects of the two options are different.
-
-The `asadmin` utility options and some subcommand options have a long
-form and a short form.
-
-* The long form of an option has two dashes (`--`) followed by an option
-word.
-* The short form of an option has a single dash (`-`) followed by a
-single character.
-
-For example, the long form and the short form of the option for
-specifying terse output are as follows:
-
-* Long form: `--terse`
-* Short form: `-t`
-
-Most options require argument values, except Boolean options, which
-toggle to enable or disable a feature.
-
-Operands of asadmin Subcommands
-
-Operands specify the items on which the subcommand is to act. Operands
-must follow the argument values of subcommand options, and are set off
-by a space, a tab, or double dashes (`--`). The `asadmin` utility treats
-anything that follows the subcommand options and their values as an
-operand.
-
-Escape Characters in Options for the asadmin Utility
-
-Escape characters are required in options of the `asadmin` utility for
-the following types of characters:
-
-* Meta characters in the UNIX operating system. These characters have
-special meaning in a shell. Meta characters in the UNIX operating system
-include: `\/,.!$%^&*|{}[]"'\`~;`. +
-To disable these characters, use the backslash (`\`) escape character or
-enclose the entire command-line argument in single quote (`'`)
-characters. +
-The following examples illustrate the effect of escape characters on the
-`*` character. In these examples, the current working directory is the
-domains directory.
-
-** The following command, without the escape character, echoes all files
-in the current directory: +
-[source,oac_no_warn]
-----
-prompt% echo *
-domain1 domain2
-----
-
-** The following command, in which the backslash (`\`) escape character
-precedes the `*` character, echoes the `*` character: +
-[source,oac_no_warn]
-----
-prompt% echo \*
-*
-----
-
-** The following command, in which the `*` character is enclosed in
-single quote (`'`) characters, echoes the `*` character: +
-[source,oac_no_warn]
-----
-prompt% echo '*'
-*
-----
-The escape character is also a special character in the UNIX operating
-system and in the Java language. Therefore, in the UNIX operating system
-and in multimode, you must apply an additional escape character to every
-escape character in the command line. This requirement does not apply to
-the Windows operating system. +
-For example, the backslash (`\`) UNIX operating system meta character in
-the option argument `Test\Escape\Character` is specified on UNIX and
-Windows systems as follows:
-
-** On UNIX systems, each backslash must be escaped with a second
-backslash: +
-[source,oac_no_warn]
-----
-Test\\Escape\\Character
-----
-
-** On Windows systems, no escape character is required: +
-[source,oac_no_warn]
-----
-Test\Escape\Character
-----
-::
-
-[NOTE]
-=======================================================================
-
-In contexts where meta characters in the UNIX operating system are
-unambiguous, these characters do not require escape characters. For
-example, in the link:set.html#set-1[`set`(1)] subcommand, the value that
-is to be set is specified as name`=`value. Because name can never
-include an equals sign, no escape character is required to disable the
-equals sign. Therefore, everything after the equals sign is an
-uninterpreted string that the `set` subcommand uses unchanged.
-
-=======================================================================
-
-* Spaces. The space is the separator in the command-line interface. To
-distinguish a space in a command-line argument from the separator in the
-command-line interface, the space must be escaped as follows:
-
-** For the UNIX operating system in single mode and multimode, and for
-all operating systems in multimode, use the backslash (`\`) escape
-character or enclose the entire command-line argument in single quote
-(`'`) characters or double quote (") characters.
-
-** For the Windows operating system in single mode, enclose the entire
-command-line argument in double quote (") characters.
-* Option delimiters. The `asadmin` utility uses the colon character
-(`:`) as a delimiter for some options. The backslash (`\`) escape
-character is required if the colon is part of any of the following
-items:
-
-** A property
-
-** An option of the Virtual Machine for the Java platform (Java Virtual
-Machine or JVM machine)link:#sthref2366[^Foot 1 ^] +
-For example, the operand of the subcommand
-link:create-jvm-options.html#create-jvm-options-1[`create-jvm-options`(1)]
-specifies JVM machine options in the following format: +
-[source,oac_no_warn]
-----
-(jvm-option-name[=jvm-option-value])
-[:jvm-option-name[=jvm-option-value]]*
-----
-Multiple JVM machine options in the operand of the `create-jvm-options`
-subcommand are separated by the colon (`:`) delimiter. If
-jvm-option-name or jvm-option-value contains a colon, the backslash
-(`\`) escape character is required before the colon. +
-The backslash (`\`) escape character is also required before a single
-quote (`'`) character or a double quote (") character in an option that
-uses the colon as a delimiter. +
-When used without single quote (') characters, the escape character
-disables the option delimiter in the command-line interface. +
-For the UNIX operating system in single mode and multimode, and for all
-operating systems in multimode, the colon character and the backslash
-character in an option that uses the colon as a delimiter must be
-specified as follows:
-
-** To pass a literal backslash to a subcommand, two backslashes are
-required. Therefore, the colon (`:`) must be escaped by two backslashes
-(`\\`).
-
-** To prevent a subcommand from treating the backslash as a special
-character, the backslash must be escaped. As a result, two literal
-backslashes (`\\`) must be passed to the subcommand. To prevent the
-shell from interpreting these backslashes as special characters, each
-backslash must be escaped. Therefore, the backslash must be specified by
-a total of four backslashes (`\\\\`). +
-For the Windows operating system in single mode, a backslash (`\`) is
-required to escape the colon (`:`) and the backslash (`\`) in an option
-that uses the colon as a delimiter.
-
-Instead of using the backslash (`\`) escape character, you can use the
-double quote (") character or single quote (') character. The effects of
-the different types of quote characters on the backslash (`\`) character
-are as follows:
-
-* Between double quote (") characters, the backslash (`\`) character is
-a special character.
-* Between single quote (') characters, the backslash (`\`) character is
-not a special character.
-
-Requirements for Using the --secure Option
-
-The requirements for using the `--secure` option are as follows:
-
-* The domain that you are administering must be configured for security.
-* The `security-enabled` attribute of the `http-listener` element in the
-DAS configuration must be set to `true`. +
-To set this attribute, use the `set` subcommand.
-
-Server Restart After Creation or Deletion
-
-When you use the `asadmin` subcommands to create or delete a
-configuration item, you must restart the DAS for the change to take
-effect. To restart the DAS, use the
-link:restart-domain.html#restart-domain-1[`restart-domain`(1)]
-subcommand.
-
-Help Information for Subcommands and the asadmin Utility
-
-To obtain help information for an `asadmin` utility subcommand, specify
-the subcommand of interest as the operand of the `help` subcommand. For
-example, to obtain help information for the
-link:start-domain.html#start-domain-1[`start-domain`(1)] subcommand,
-type:
-
-[source,oac_no_warn]
-----
-asadmin help start-domain
-----
-
-If you run the `help` subcommand without an operand, this help
-information for the `asadmin` utility is displayed.
-
-To obtain a listing of available `asadmin` subcommands, use the
-link:list-commands.html#list-commands-1[`list-commands`(1)] subcommand.
-
-[[sthref2367]]
-
-Options
-
-`--host`::
-`-H`::
-  The machine name where the DAS is running. The default value is
-  `localhost`.
-`--port`::
-`-p`::
-  The HTTP port or HTTPS port for administration. This port is the port
-  in the URL that you specify in your web browser to manage the domain.
-  For example, in the URL `http://localhost:4949`, the port is 4949. +
-  The default port number for administration is 4848.
-`--user`::
-`-u`::
-  The user name of the authorized administrative user of the DAS. +
-  If you have authenticated to a domain by using the `asadmin login`
-  command, you need not specify the `--user` option for subsequent
-  operations on the domain.
-`--passwordfile`::
-`-W`::
-  Specifies the name, including the full path, of a file that contains
-  password entries in a specific format. +
-  Note that any password file created to pass as an argument by using
-  the `--passwordfile` option should be protected with file system
-  permissions. Additionally, any password file being used for a
-  transient purpose, such as setting up SSH among nodes, should be
-  deleted after it has served its purpose. +
-  The entry for a password must have the `AS_ADMIN_` prefix followed by
-  the password name in uppercase letters, an equals sign, and the
-  password. +
-  The entries in the file that are read by the `asadmin` utility are as
-  follows: +
-  * `AS_ADMIN_PASSWORD=`administration-password
-  * `AS_ADMIN_MASTERPASSWORD=`master-password +
-  The entries in this file that are read by subcommands are as follows: +
-  * `AS_ADMIN_NEWPASSWORD=`new-administration-password (read by the
-  link:start-domain.html#start-domain-1[`start-domain`(1)] subcommand)
-  * `AS_ADMIN_USERPASSWORD=`user-password (read by the
-  link:create-file-user.html#create-file-user-1[`create-file-user`(1)]
-  subcommand)
-  * `AS_ADMIN_ALIASPASSWORD=`alias-password (read by the
-  link:create-password-alias.html#create-password-alias-1[`create-password-alias`(1)]
-  subcommand)
-  * `AS_ADMIN_MAPPEDPASSWORD=`mapped-password (read by the
-  link:create-connector-security-map.html#create-connector-security-map-1[`create-connector-security-map`(1)]
-  subcommand)
-  * `AS_ADMIN_WINDOWSPASSWORD=`windows-password (read by the
-  link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
-  link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)],
-  and link:update-node-ssh.html#update-node-dcom-1[`update-node-dcom`(1)]
-  subcommands)
-  * `AS_ADMIN_SSHPASSWORD=`sshd-password (read by the
-  link:create-node-ssh.html#create-node-ssh-1[`create-node-ssh`(1)],
-  link:install-node.html#install-node-1[`install-node`(1)],
-  link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)],
-  and
-  link:update-node-ssh001.html#update-node-ssh-1[`update-node-ssh`(1)]
-  subcommands)
-  * `AS_ADMIN_SSHKEYPASSPHRASE=`sshd-passphrase (read by the
-  link:create-node-ssh.html#create-node-ssh-1[`create-node-ssh`(1)],
-  link:install-node.html#install-node-1[`install-node`(1)],
-  link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)],
-  and
-  link:update-node-ssh001.html#update-node-ssh-1[`update-node-ssh`(1)]
-  subcommands)
-  * `AS_ADMIN_JMSDBPASSWORD=` jdbc-user-password (read by the
-  link:configure-jms-cluster.html#configure-jms-cluster-1[`configure-jms-cluster`(1)]
-  subcommand) +
-  These password entries are stored in clear text in the password file.
-  To provide additional security, the `create-password-alias` subcommand
-  can be used to create aliases for passwords that are used by remote
-  subcommands. The password for which the alias is created is stored in
-  an encrypted form. If an alias exists for a password, the alias is
-  specified in the entry for the password as follows: +
-[source,oac_no_warn]
-----
-AS_ADMIN_password-name=${ALIAS=password-alias-name} 
-----
-::
-  For example: +
-[source,oac_no_warn]
-----
-AS_ADMIN_SSHPASSWORD=${ALIAS=ssh-password-alias}
-AS_ADMIN_SSHKEYPASSPHRASE=${ALIAS=ssh-key-passphrase-alias}
-----
-::
-  In domains that do not allow unauthenticated login, all remote
-  subcommands must specify the administration password to authenticate
-  to the DAS. The password can be specified by one of the following
-  means: +
-  * Through the `--passwordfile` option
-  * Through the link:login.html#login-1[`login`(1)] subcommand
-  * Interactively at the command prompt +
-  The `login` subcommand can be used to specify only the administration
-  password. For other passwords that remote subcommands require, use the
-  `--passwordfile` option or specify them at the command prompt. +
-  After authenticating to a domain by using the `asadmin login` command,
-  you need not specify the administration password through the
-  `--passwordfile` option for subsequent operations on the domain.
-  However, only the `AS_ADMIN_PASSWORD` option is not required. You
-  still must provide the other passwords, for example,
-  `AS_ADMIN_USERPASSWORD`, when required by individual subcommands, such
-  as
-  link:update-file-user.html#update-file-user-1[`update-file-user`(1)]. +
-  For security reasons, a password that is specified as an environment
-  variable is not read by the `asadmin` utility. +
-  The master password is not propagated on the command line or an
-  environment variable, but can be specified in the file that the
-  `--passwordfile` option specifies. +
-  The default value for `AS_ADMIN_MASTERPASSWORD` is `changeit`.
-`--terse`::
-`-t`::
-  If true, output data is very concise and in a format that is optimized
-  for use in scripts instead of for reading by humans. Typically,
-  descriptive text and detailed status messages are also omitted from
-  the output data. Default is false.
-`--secure`::
-`-s`::
-  If set to true, uses SSL/TLS to communicate with the DAS. +
-  The default is false.
-`--echo`::
-`-e`::
-  If set to true, the command-line statement is echoed on the standard
-  output. Default is false.
-`--interactive`::
-`-I`::
-  If set to true, only the required options are prompted. +
-  The default depends on how the `asadmin` utility is run: +
-  * If the `asadmin` utility is run from a console window, the default
-  is `true`.
-  * If the `asadmin` utility is run without a console window, for
-  example, from within a script, the default is `false`.
-`--detach`::
-  If set to `true`, the specified `asadmin` subcommand is detached and
-  executed in the background in detach mode. The default value is
-  `false`. +
-  The `--detach` option is useful for long-running subcommands and
-  enables you to execute several independent subcommands from one
-  console or script. +
-  The `--detach` option is specified before the subcommand. For example,
-  in single mode, `asadmin --detach` subcommand. +
-  Job IDs are assigned to subcommands that are started using
-  `asadmin --detach`. You can use the
-  link:list-jobs.html#list-jobs-1[`list-jobs`(1)] subcommand to view the
-  jobs and their job IDs, the link:attach.html#attach-1[`attach`(1)]
-  subcommand to reattach to the job and view its status and output, and
-  the
-  link:configure-managed-jobs.html#configure-managed-jobs-1[`configure-managed-jobs`(1)]
-  subcommand to configure how long information about the jobs is kept.
-`--help`::
-`-?`::
-  Displays the help text for the `asadmin` utility.
-
-[[sthref2368]]
-
-Examples
-
-[[GSRFM805]][[sthref2369]]
-
-Example 1   Running an `asadmin` Utility Subcommand in Single Mode
-
-This example runs the
-link:list-applications.html#list-applications-1[`list-applications`(1)]
-subcommand in single mode. In this example, the default values for all
-options are used.
-
-The example shows that the application `hello` is deployed on the local
-host.
-
-[source,oac_no_warn]
-----
-asadmin list-applications
-hello <web>
-
-Command list-applications executed successfully.
-----
-
-[[GSRFM806]][[sthref2370]]
-
-Example 2   Specifying an `asadmin` Utility Option With a Subcommand
-
-This example specifies the `--host` `asadmin` utility option with the
-`list-applications` subcommand in single mode. In this example, the DAS
-is running on the host `srvr1.example.com`.
-
-The example shows that the applications `basic-ezcomp`, `scrumtoys`,
-`ejb31-war`, and `automatic-timer-ejb` are deployed on the host
-`srvr1.example.com`.
-
-[source,oac_no_warn]
-----
-asadmin --host srvr1.example.com list-applications
-basic-ezcomp <web>
-scrumtoys <web>
-ejb31-war <ejb, web>
-automatic-timer-ejb <ejb>
-
-Command list-applications executed successfully.
-----
-
-[[GSRFM807]][[sthref2371]]
-
-Example 3   Specifying an `asadmin` Utility Option and a Subcommand
-Option
-
-This example specifies the `--host` `asadmin` utility option and the
-`--type` subcommand option with the `list-applications` subcommand in
-single mode. In this example, the DAS is running on the host
-`srvr1.example.com` and applications of type `web` are to be listed.
-
-[source,oac_no_warn]
-----
-asadmin --host srvr1.example.com list-applications --type web
-basic-ezcomp <web>
-scrumtoys <web>
-ejb31-war <ejb, web>
-
-Command list-applications executed successfully.
-----
-
-[[GSRFM808]][[sthref2372]]
-
-Example 4   Escaping a Command-Line Argument With Single Quote
-Characters
-
-The commands in this example specify the backslash (`\`) UNIX operating
-system meta character and the colon (:) option delimiter in the property
-value `c:\extras\pmdapp`.
-
-For the UNIX operating system in single mode and multimode, and for all
-operating systems in multimode, the backslash (`\`) is required to
-escape the backslash (`\`) meta character and the colon (:) option
-delimiter:
-
-[source,oac_no_warn]
-----
-asadmin deploy --property extras.home='c\:\\extras\\pmdapp' pmdapp.war
-Application deployed with name pmdapp.
-Command deploy executed successfully
-----
-
-For the Windows operating system in single mode, the single quote (`'`)
-characters eliminate the need for other escape characters:
-
-[source,oac_no_warn]
-----
-asadmin deploy --property extras.home='c:\extras\pmdapp' pmdapp.war
-Application deployed with name pmdapp.
-Command deploy executed successfully
-----
-
-[[GSRFM809]][[sthref2373]]
-
-Example 5   Specifying a UNIX Operating System Meta Character in an
-Option
-
-The commands in this example specify the backslash (`\`) UNIX operating
-system meta character in the option argument `Test\Escape\Character`.
-
-For the UNIX operating system in single mode and multimode, and for all
-operating systems in multimode, the backslash (`\`) is required to
-escape the backslash (`\`) meta character:
-
-[source,oac_no_warn]
-----
-asadmin --user admin --passwordfile gfpass create-jdbc-connection-pool 
---datasourceclassname sampleClassName 
---description Test\\Escape\\Character 
-sampleJDBCConnectionPool
-----
-
-For the Windows operating system in single mode, no escape character is
-required:
-
-[source,oac_no_warn]
-----
-asadmin --user admin --passwordfile gfpass create-jdbc-connection-pool 
---datasourceclassname sampleClassName 
---description Test\Escape\Character 
-sampleJDBCConnectionPool
-----
-
-[[GSRFM835]][[sthref2374]]
-
-Example 6   Specifying a Command-Line Argument That Contains a Space
-
-The commands in this example specify spaces in the operand
-`C:\Documents and Settings\gfuser\apps\hello.war`.
-
-For all operating systems in single mode or multimode, the entire
-operand can be enclosed in double quote (`"`) characters:
-
-[source,oac_no_warn]
-----
-asadmin deploy "C:\Documents and Settings\gfuser\apps\hello.war"
-Application deployed with name hello.
-Command deploy executed successfully.
-----
-
-For the UNIX operating system in single mode and multimode, and for all
-operating systems in multimode, the entire command-line argument can be
-enclosed in single quote (`'`) characters:
-
-[source,oac_no_warn]
-----
-asadmin> deploy 'C:\Documents and Settings\gfuser\apps\hello.war'
-Application deployed with name hello.
-Command deploy executed successfully.
-----
-
-Alternatively, for the UNIX operating system in single mode and
-multimode, and for all operating systems in multimode, the backslash
-(`\`) escape character can be used before each space in the operand. In
-this situation, the backslash (`\`) escape character is required before
-each backslash in the operand:
-
-[source,oac_no_warn]
-----
-asadmin> deploy C:\\Documents\ and\ Settings\\gfuser\\apps\\hello.war
-Application deployed with name hello.
-Command deploy executed successfully.
-----
-
-[[GSRFM810]][[sthref2375]]
-
-Example 7   Specifying a Meta Character and an Option Delimiter
-Character in a Property
-
-The commands in this example specify the backslash (`\`) UNIX operating
-system meta character and the colon (:) option delimiter character in
-the `--property` option of the
-link:create-jdbc-connection-pool.html#create-jdbc-connection-pool-1[`create-jdbc-connection-pool`(1)]
-subcommand.
-
-The name and value pairs for the `--property` option are as follows:
-
-[source,oac_no_warn]
-----
-user=dbuser
-passwordfile=dbpasswordfile
-DatabaseName=jdbc:derby
-server=http://localhost:9092
-----
-
-For the UNIX operating system in single mode and multimode, and for all
-operating systems in multimode, a backslash (`\`) is required to escape
-the colon (`:`) and the backslash (`\`):
-
-[source,oac_no_warn]
-----
-asadmin --user admin --passwordfile gfpass create-jdbc-connection-pool 
---datasourceclassname com.derby.jdbc.jdbcDataSource
---property user=dbuser:passwordfile=dbpasswordfile:
-DatabaseName=jdbc\\:derby:server=http\\://localhost\\:9092 javadb-pool
-----
-
-Alternatively, the entire argument to the `--property` option can be
-enclosed in single quote (') characters:
-
-[source,oac_no_warn]
-----
-asadmin --user admin --passwordfile gfpass create-jdbc-connection-pool 
---datasourceclassname com.derby.jdbc.jdbcDataSource
---property 'user=dbuser:passwordfile=dbpasswordfile:
-DatabaseName="jdbc:derby":server="http://localhost:9092"' javadb-pool
-----
-
-For the Windows operating system in single mode, a backslash (`\`) is
-required to escape only the colon (`:`), but not the backslash (`\`):
-
-[source,oac_no_warn]
-----
-asadmin --user admin --passwordfile gfpass create-jdbc-connection-pool
---datasourceclassname com.derby.jdbc.jdbcDataSource
---property user-dbuser:passwordfile-dbpasswordfile:
-DatabaseName=jdbc\:derby:server=http\://localhost\:9092 javadb-pool
-----
-
-For all operating systems, the need to escape the colon (`:`) in a value
-can be avoided by enclosing the value in double quote characters or
-single quote characters:
-
-[source,oac_no_warn]
-----
-asadmin --user admin --passwordfile gfpass create-jdbc-connection-pool
---datasourceclassname com.derby.jdbc.jdbcDataSource
---property user=dbuser:passwordfile=dbpasswordfile:
-DatabaseName=\"jdbc:derby\":server=\"http://localhost:9092\" javadb-pool
-----
-
-[[GSRFM811]][[sthref2376]]
-
-Example 8   Specifying an Option Delimiter and an Escape Character in a
-JVM Machine Option
-
-The commands in this example specify the following characters in the
-`-Dlocation=c:\sun\appserver` JVM machine option:
-
-* The colon (`:`) option delimiter
-* The backslash (`\`) escape character
-
-For the UNIX operating system in single mode and multimode, and for all
-operating systems in multimode, these characters must be specified as
-follows:
-
-* To pass a literal backslash to a subcommand, two backslashes are
-required. Therefore, the colon (`:`) must be escaped by two backslashes
-(`\\`).
-* To prevent the subcommand from treating the backslash as a special
-character, the backslash must be escaped. As a result, two literal
-backslashes (`\\`) must be passed to the subcommand. To prevent the
-shell from interpreting these backslashes as special characters, each
-backslash must be escaped. Therefore, the backslash must be specified by
-a total of four backslashes (`\\\\`).
-
-The resulting command is as follows:
-
-[source,oac_no_warn]
-----
-asadmin create-jvm-options --target test-server 
--e -Dlocation=c\\:\\\\sun\\\\appserver
-----
-
-For the Windows operating system in single mode, a backslash (`\`) is
-required to escape the colon (`:`) and the backslash (`\`):
-
-[source,oac_no_warn]
-----
-asadmin create-jvm-options --target test-server 
--e -Dlocation=c\:\\sun\\appserver
-----
-
-[[GSRFM812]][[sthref2377]]
-
-Example 9   Specifying an Option That Contains an Escape Character
-
-The commands in this example specify the backslash (`\`) character and
-the double quote (`"`) characters in the `"Hello\App"\authentication`
-option argument.
-
-For the UNIX operating system in single mode and multimode, and for all
-operating systems in multimode, a backslash (`\`) is required to escape
-the double quote character (`"`) and the backslash (`\`):
-
-[source,oac_no_warn]
-----
-asadmin set-web-env-entry --name="Hello User" --type=java.lang.String 
---value=techscribe --description=\"Hello\\App\"\\authentication hello
-----
-
-For the Windows operating system in single mode, a backslash (`\`) is
-required to escape only the double quote (`"`), but not the backslash
-(`\`):
-
-[source,oac_no_warn]
-----
-asadmin set-web-env-entry --name="Hello User" --type=java.lang.String 
---value=techscribe --description=\"Hello\App\"\authentication hello
-----
-
-[[sthref2378]]
-
-Environment Variables
-
-Environment variables modify the default values of `asadmin` utility
-options as shown in the following table.
-
-[width="100%",cols="44%,56%",options="header",]
-|==============================================
-|Environment Variable |`asadmin` Utility Option
-|`AS_ADMIN_TERSE` |`--terse`
-|`AS_ADMIN_ECHO` |`--echo`
-|`AS_ADMIN_INTERACTIVE` |`--interactive`
-|`AS_ADMIN_HOST` |`--host`
-|`AS_ADMIN_PORT` |`--port`
-|`AS_ADMIN_SECURE` |`--secure`
-|`AS_ADMIN_USER` |`--user`
-|`AS_ADMIN_PASSWORDFILE` |`--passwordfile`
-|`AS_ADMIN_HELP` |`--help`
-|==============================================
-
-
-[[sthref2379]]
-
-Attributes
-
-See
-http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN5attributes-5[`attributes`(5)]
-for descriptions of the following attributes:
-
-[width="100%",cols="50%,50%",options="header",]
-|===============================
-|ATTRIBUTE TYPE |ATTRIBUTE VALUE
-|Interface Stability |Unstable
-|===============================
-
-
-[[sthref2380]]
-
-See Also
-
-link:attach.html#attach-1[`attach`(1)],
-link:configure-jms-cluster.html#configure-jms-cluster-1[`configure-jms-cluster`(1)],
-link:configure-managed-jobs.html#configure-managed-jobs-1[`configure-managed-jobs`(1)],
-link:create-connector-security-map.html#create-connector-security-map-1[`create-connector-security-map`(1)],
-link:create-file-user.html#create-file-user-1[`create-file-user`(1)],
-link:create-jdbc-connection-pool.html#create-jdbc-connection-pool-1[`create-jdbc-connection-pool`(1)],
-link:create-jvm-options.html#create-jvm-options-1[`create-jvm-options`(1)],
-link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
-link:create-node-ssh.html#create-node-ssh-1[`create-node-ssh`(1)],
-link:create-password-alias.html#create-password-alias-1[`create-password-alias`(1)],
-link:deploy.html#deploy-1[`deploy`(1)],
-link:install-node.html#install-node-1[`install-node`(1)],
-link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)],
-link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)],
-link:list-applications.html#list-applications-1[`list-applications`(1)],
-link:list-commands.html#list-commands-1[`list-commands`(1)],
-link:list-jobs.html#list-jobs-1[`list-jobs`(1)],
-link:login.html#login-1[`login`(1)],
-link:restart-domain.html#restart-domain-1[`restart-domain`(1)],
-link:set.html#set-1[`set`(1)],
-link:set-web-env-entry.html#set-web-env-entry-1[`set-web-env-entry`(1)],
-link:start-domain.html#start-domain-1[`start-domain`(1)],
-link:update-file-user.html#update-file-user-1[`update-file-user`(1)],
-link:update-node-ssh.html#update-node-dcom-1[`update-node-dcom`(1)],
-link:update-node-ssh001.html#update-node-ssh-1[`update-node-ssh`(1)]
-
-http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN5attributes-5[`attributes`(5)]
-
-'''''
-
-
-Footnote Legend
-
-Footnote 1: The terms "Java Virtual Machine" and "JVM" mean a Virtual
-Machine for the Java platform. +
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/attach.adoc b/docs/reference-manual/src/main/jbake/content/attach.adoc
deleted file mode 100644
index 8b66494..0000000
--- a/docs/reference-manual/src/main/jbake/content/attach.adoc
+++ /dev/null
@@ -1,102 +0,0 @@
-type=page
-status=published
-title=attach
-next=backup-domain.html
-prev=apply-http-lb-changes.html
-~~~~~~
-attach
-======
-
-[[attach-1]][[GSRFM825]][[attach]]
-
-attach
-------
-
-attaches to subcommands that were started using `asadmin --detach` or
-that contain progress information
-
-[[sthref32]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] attach [--help] 
-job_id
-----
-
-[[sthref33]]
-
-Description
-
-The `attach` subcommand attaches to subcommands that were started using
-the `asadmin` utility option `--detach` or that contain progress
-information. The `--detach` option detaches long-running subcommands and
-executes them in the background in detach mode.
-
-Job IDs are assigned to the subcommands (jobs), and can be used to view
-the status of a job and its output. Use the
-link:list-jobs.html#list-jobs-1[`list-jobs`(1)] subcommand to view the
-jobs and their job IDs, and the
-link:configure-managed-jobs.html#configure-managed-jobs-1[`configure-managed-jobs`(1)]
-subcommand to configure how long information about the jobs is kept.
-
-This subcommand is supported in remote mode only.
-
-[[sthref34]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref35]]
-
-Operands
-
-job_id::
-  The ID of the job for which you want to view status and output.
-
-[[sthref36]]
-
-Examples
-
-[[GSRFM826]][[CBHDFEGB]]
-
-Example 1   Attaching to a Subcommand and Checking Its Status
-
-This example attaches to the `deploy` subcommand with a job ID of `20`
-and shows that the job is finished. If a subcommand is still in
-progress, the output displays the current status, for example,
-`64%: Uploading bits`.
-
-[source,oac_no_warn]
-----
-asadmin> attach 20
-Finished execution of deploy
-Command attach executed successfully.
-----
-
-[[sthref37]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref38]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:configure-managed-jobs.html#configure-managed-jobs-1[`configure-managed-jobs`(1)],
-link:list-jobs.html#list-jobs-1[`list-jobs`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/backup-domain.adoc b/docs/reference-manual/src/main/jbake/content/backup-domain.adoc
deleted file mode 100644
index e2216ab..0000000
--- a/docs/reference-manual/src/main/jbake/content/backup-domain.adoc
+++ /dev/null
@@ -1,112 +0,0 @@
-type=page
-status=published
-title=backup-domain
-next=change-admin-password.html
-prev=attach.html
-~~~~~~
-backup-domain
-=============
-
-[[backup-domain-1]][[GSRFM00003]][[backup-domain]]
-
-backup-domain
--------------
-
-performs a backup on the domain
-
-[[sthref39]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] backup-domain [--help]
-[--long[={false|true}]]
-[--description description-text]
-[--domaindir domain-root-dir]
-[--backupdir backup-directory]
-[--backupconfig backup-config-name]
-[domain_name]
-----
-
-[[sthref40]]
-
-Description
-
-The `backup-domain` subcommand backs up files under the named domain.
-
-This subcommand is supported in local mode only in GlassFish Server Open
-Source Edition, and is supported in local mode and remote mode in Oracle
-GlassFish Server.
-
-In GlassFish Server Open Source Edition, the domain to be backed up must
-be stopped.
-
-In Oracle GlassFish Server, the domain to be backed up must be stopped
-or be suspended using the `suspend-domain`(1) subcommand.
-
-[[sthref41]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--long`::
-`-l`::
-  Displays detailed information about the backup operation. +
-  The default value is `false`.
-`--description`::
-  Specifies a description to store in the backup file. The description
-  is displayed as part of the information about a backup file. +
-  The default value has this form: +
-[source,oac_no_warn]
-----
-domain-name backup created on YYYY_MM_DD by user user-name
-----
-`--domaindir`::
-  Specifies the domain root directory, the parent directory of the
-  domain to back up. +
-  The default value is as-install`/domains`.
-`--backupdir`::
-  Specifies the directory under which the backup file is to be stored. +
-  The default value is as-install`/domains/`domain-dir`/backups`. If the
-  domain is not in the default location, the location is
-  domain-dir`/backups`.
-`--backupconfig`::
-  (Supported only in Oracle GlassFish Server.) The name of the domain
-  backup configuration in the backup directory under which the backup
-  file is to be stored.
-
-[[sthref42]]
-
-Operands
-
-domain-name::
-  Specifies the name of the domain to be backed up. +
-  This operand is optional if only one domain exists in the
-  \{product---name} installation.
-
-[[sthref43]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref44]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:list-backups.html#list-backups-1[`list-backups`(1)],
-link:restore-domain.html#restore-domain-1[`restore-domain`(1)],
-`resume-domain`(1), `suspend-domain`(1)
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/capture-schema.adoc b/docs/reference-manual/src/main/jbake/content/capture-schema.adoc
deleted file mode 100644
index 52ec6e2..0000000
--- a/docs/reference-manual/src/main/jbake/content/capture-schema.adoc
+++ /dev/null
@@ -1,106 +0,0 @@
-type=page
-status=published
-title=capture-schema
-next=package-appclient.html
-prev=asadmin.html
-~~~~~~
-capture-schema
-==============
-
-[[capture-schema-1m]][[GSRFM00821]][[capture-schema]]
-
-capture-schema
---------------
-
-stores the database metadata (schema) in a file for use in mapping and
-execution
-
-[[sthref2381]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-capture-schema -username name -password password
-[-dburl url] [-driver jdbc_driver_classname]
-[-schemaname schemaname] [-table tablename]
--out filename]
-----
-
-[[sthref2382]]
-
-Description
-
-Stores the database metadata (schema) in a file.
-
-Run `capture-schema` as the same database user that owns the table(s),
-and use that same username with the `-username` option (and
-`-schemaname`, if required).
-
-When running `capture-schema` against an Oracle database, you should
-grant the database user running the `capture-schema` command the
-`ANALYZE ANY TABLE` privilege.
-
-[[sthref2383]]
-
-Options
-
-`-username`::
-  user name for authenticating access to a database.
-`-password`::
-  password for accessing the selected database.
-`-dburl`::
-  JDBC URL required by the driver for accessing a database.
-`-driver`::
-  JDBC driver classname in your `CLASSPATH`.
-`-schemaname`::
-  name of the user schema being captured. If not specified, the default
-  will capture metadata for all tables from all the schemas accessible
-  to this user. +
-  Specifying this parameter is highly recommended. Without this option,
-  if more than one schema is accessible to this user, more than one
-  table with the same name may be captured, which will cause problems
-  when mapping CMP fields to tables. +
-  The specified schema name must be uppercase.
-`-table`::
-  name of a table; multiple table names can be specified. If no table is
-  specified, all the tables in the database or named schema are
-  captured. +
-  The specified table name or names are case sensitive. Be sure to match
-  the case of the previously created table names.
-`-out`::
-  name of the output file. This option is required. If the specified
-  output file does not contain the .dbschema suffix, it will be appended
-  to the filename.
-
-[[sthref2384]]
-
-Examples
-
-[[GSRFM813]][[sthref2385]]
-
-Example 1   Using the `capture-schema` command
-
-[source,oac_no_warn]
-----
-capture-schema -username cantiflas -password enigma
--dburl jdbc:oracle:thin:@sadbuttrue:1521:ora817
--driver oracle.jdbc.driver.OracleDriver
--schemaname CANTIFLAS -out cantiflas.dbschema
-----
-
-Where: `sun-acc.xml` is the name of the client configuration XML file,
-`myclientapp.jar` is the client application `.jar` file, and `scott` and
-`sample` are arguments to pass to the application. If `sun-acc.xml` and
-`myclientapp.jar` are not in the current directory, you must give the
-absolute path locations; otherwise the relative paths are used. The
-relative path is relative to the directory where the command is being
-executed.
-
-[[sthref2386]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/change-admin-password.adoc b/docs/reference-manual/src/main/jbake/content/change-admin-password.adoc
deleted file mode 100644
index 86aaf9a..0000000
--- a/docs/reference-manual/src/main/jbake/content/change-admin-password.adoc
+++ /dev/null
@@ -1,136 +0,0 @@
-type=page
-status=published
-title=change-admin-password
-next=change-master-broker.html
-prev=backup-domain.html
-~~~~~~
-change-admin-password
-=====================
-
-[[change-admin-password-1]][[GSRFM00004]][[change-admin-password]]
-
-change-admin-password
----------------------
-
-changes the administrator password
-
-[[sthref45]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] change-admin-password [--help]
-[--domaindir domain-root-dir [--domain_name domain-name]]
-----
-
-[[sthref46]]
-
-Description
-
-The `change-admin-password` subcommand modifies the administrator
-password. The `change-admin-password` subcommand is interactive because
-the subcommand prompts the user for the old administrator password, for
-the new administrator password, and for confirmation of the new
-administrator password. The new password must contain at least 8
-characters.
-
-If the only user is an anonymous user without a password, this
-subcommand fails.
-
-If a blank password is provided, this subcommand fails if secure
-administration is enabled.
-
-For security purposes, create a password-protected user account with
-administrator privileges. To create this account, use the
-link:create-file-user.html#create-file-user-1[`create-file-user`(1)] or
-the Administration Console. After creating this user account, remove the
-anonymous user to restrict access to \{product---name} settings.
-
-If more than one administrator is configured for \{product---name}, you
-must run the `asadmin` command with the `--user` option to change the
-password for that user. For more information, see the examples in this
-help page.
-
-This subcommand is supported in local mode and remote mode. If the
-`--domaindir` or `--domain_name` option is specified, the
-`change-admin-password` subcommand operates in local mode. If neither
-option is specified, the `change-admin-password` subcommand first
-attempts to operate in remote mode. If neither option is specified and
-the DAS is not running, the `change-admin-password` subcommand operates
-in local mode, using the default values for the `--domaindir` and
-`--domain_name` options.
-
-[[sthref47]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--domaindir`::
-  Specifies the parent directory of the domain specified in the
-  `--domain_name` option. When this option is used, the
-  `change-admin-password` subcommand operates in local mode.
-`--domain_name`::
-  Specifies the domain of the admin user. +
-  This option is not required if the directory specified by the
-  `--domaindir` option contains only one domain.
-
-[[sthref48]]
-
-Examples
-
-[[GSRFM447]][[sthref49]]
-
-Example 1   Changing the Administrator Password For a Single User in
-Multimode
-
-[source,oac_no_warn]
-----
-asadmin --user admin
-asadmin> change-admin-password
-Please enter the old admin password>
-Please enter the new admin password>
-Please enter the new admin password again>
-Command change-admin-password executed successfully.
-----
-
-[[GSRFM448]][[sthref50]]
-
-Example 2   Changing the Administrator Password For a Single User in
-Single Mode
-
-[source,oac_no_warn]
-----
-asadmin --user admin change-admin-password
-Please enter the old admin password>
-Please enter the new admin password>
-Please enter the new admin password again>
-Command change-admin-password executed successfully.
-----
-
-[[sthref51]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  command failed
-
-[[sthref52]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-file-user.html#create-file-user-1[`create-file-user`(1)],
-link:delete-password-alias.html#delete-password-alias-1[`delete-password-alias`(1)],
-link:list-password-aliases.html#list-password-aliases-1[`list-password-aliases`(1)],
-link:update-password-alias.html#update-password-alias-1[`update-password-alias`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/change-master-broker.adoc b/docs/reference-manual/src/main/jbake/content/change-master-broker.adoc
deleted file mode 100644
index e08b221..0000000
--- a/docs/reference-manual/src/main/jbake/content/change-master-broker.adoc
+++ /dev/null
@@ -1,92 +0,0 @@
-type=page
-status=published
-title=change-master-broker
-next=change-master-password.html
-prev=change-admin-password.html
-~~~~~~
-change-master-broker
-====================
-
-[[change-master-broker-1]][[GSRFM00005]][[change-master-broker]]
-
-change-master-broker
---------------------
-
-changes the master broker in a Message Queue cluster providing JMS
-services for a \{product---name} cluster.
-
-[[sthref53]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] change-master-broker [--help]
-clustered-instance-name
-----
-
-[[sthref54]]
-
-Description
-
-The `change-master-broker` subcommand changes the master broker in a
-Message Queue cluster that is the JMS provider for a \{product---name}
-cluster. By default, the master broker is the one associated with the
-first instance configured in the \{product---name} cluster.
-
-This subcommand is supported in remote mode only. Remote `asadmin`
-subcommands require a running domain administration server (DAS).
-
-[[sthref55]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref56]]
-
-Operands
-
-clustered-instance-name::
-  The name of the server instance whose Message Queue broker is to
-  become the master broker of the Message Queue cluster. This server
-  instance must be an instance in a \{product---name} cluster.
-
-[[sthref57]]
-
-Examples
-
-[[GSRFM449]][[sthref58]]
-
-Example 1   Changing the master broker
-
-The following subcommand changes the Message Queue master broker to the
-one for the `clustinst3` clustered instance.
-
-[source,oac_no_warn]
-----
-asadmin> change-master-broker clustinst3
-Command change-master-broker executed successfully.
-----
-
-[[sthref59]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref60]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/change-master-password.adoc b/docs/reference-manual/src/main/jbake/content/change-master-password.adoc
deleted file mode 100644
index f4e160d..0000000
--- a/docs/reference-manual/src/main/jbake/content/change-master-password.adoc
+++ /dev/null
@@ -1,133 +0,0 @@
-type=page
-status=published
-title=change-master-password
-next=collect-log-files.html
-prev=change-master-broker.html
-~~~~~~
-change-master-password
-======================
-
-[[change-master-password-1]][[GSRFM00006]][[change-master-password]]
-
-change-master-password
-----------------------
-
-changes the master password
-
-[[sthref61]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] change-master-password [--help] 
-[--nodedir node-dir] [--domaindir domain-dir]
-[--savemasterpassword={false|true}] [domain-name|node-name]
-----
-
-[[sthref62]]
-
-Description
-
-The `change-master-password` subcommand is used to modify the master
-password. The `change-master-password` subcommand is interactive in that
-the user is prompted for the old master password, as well as the new
-master password. This subcommand will not work unless the server is
-stopped. In a distributed environment, this command must run on each
-machine in the domain.
-
-[[sthref63]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--nodedir`::
-  The name of the directory containing the node instance for which the
-  password will be changed. If this option is omitted, the change is
-  applied to the entire domain.
-`--domaindir`::
-  The name of the domain directory used for this operation. By default,
-  the `--domaindir` option is `$AS_DEF_DOMAINS_PATH`, which is an
-  environment variable defined in the file `asenv.bat` or `asenv.conf`.
-`--savemasterpassword`::
-  This option indicates whether the master password should be written to
-  the file system. This is necessary so that the
-  link:start-domain.html#start-domain-1[`start-domain`(1)] command can
-  start the server without having to prompt the user. +
-  The default is `false`. +
-
-[width="100%",cols="100%",]
-|=======================================================================
-a|
-Caution:
-
-Saving the master password on disk is extremely insecure and should be
-avoided.
-
-|=======================================================================
-
-
-[width="100%",cols="100%",]
-|=======================================================================
-a|
-Note:
-
-If the `--savemasterpassword` option is not set, the master password
-file, if it exists, will be deleted.
-
-|=======================================================================
-
-
-[[sthref64]]
-
-Operands
-
-domain-name|node-name::
-  This name of the domain or node for which the password will be
-  changed. If there is only a single domain, this is optional.
-
-[[sthref65]]
-
-Examples
-
-[[GSRFM450]][[sthref66]]
-
-Example 1   Changing the Master Password
-
-This example shows how to changed the master password for the
-`domain44ps` domain.
-
-[source,oac_no_warn]
-----
-asadmin>change-master-password domain44ps
-Please enter the new master password>
-Please enter the new master password again>
-Master password changed for domain44ps
-----
-
-[[sthref67]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref68]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-password-alias.html#delete-password-alias-1[`delete-password-alias`(1)],
-link:list-password-aliases.html#list-password-aliases-1[`list-password-aliases`(1)],
-link:start-domain.html#start-domain-1[`start-domain`(1)],
-link:update-password-alias.html#update-password-alias-1[`update-password-alias`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/collect-log-files.adoc b/docs/reference-manual/src/main/jbake/content/collect-log-files.adoc
deleted file mode 100644
index 07e4be0..0000000
--- a/docs/reference-manual/src/main/jbake/content/collect-log-files.adoc
+++ /dev/null
@@ -1,169 +0,0 @@
-type=page
-status=published
-title=collect-log-files
-next=configure-jms-cluster.html
-prev=change-master-password.html
-~~~~~~
-collect-log-files
-=================
-
-[[collect-log-files-1]][[GSRFM00007]][[collect-log-files]]
-
-collect-log-files
------------------
-
-creates a ZIP archive of all available log files
-
-[[sthref69]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] collect-log-files [--help] 
-[--target target] 
-[--retrieve={false|true}] [retrievefilepath]]
-----
-
-[[sthref70]]
-
-Description
-
-The `collect-log-files` subcommand collects all available log files for
-the domain administration server (DAS), the specified cluster, or the
-specified \{product---name} instance and creates a single ZIP archive of
-the log files. If a cluster is specified, the ZIP archive also contains
-the log file for the DAS.
-
-This subcommand is supported in remote mode only.
-
-[[sthref71]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--retrieve`::
-  Specifies whether the ZIP archive is created in a directory other than
-  the default directory. +
-  By default the ZIP archive is created in the
-  domain-dir`/collected-logs` directory. The ZIP file names are
-  constructed from the specified target and timestamp, as follows: +
-[source,oac_no_warn]
-----
-log_yyyy-mm-dd_hh-min-sec.zip
-----
-::
-  Possible values are as follows: +
-  `false`;;
-    The ZIP archive will be created in the default directory. If
-    omitted, the `--retrieve` option defaults to `false`.
-  `true`;;
-    The ZIP archive will be created in the directory that the
-    retrievefilepath operand specifies. If retrievefilepath is omitted,
-    the ZIP archive will be created in the default directory.
-`--target`::
-  Specifies the target for which log files will be collected. +
-  Possible values are as follows: +
-  `server`;;
-    The log files will be collected for the DAS (default).
-  instance-name;;
-    The log files will be collected for the specified \{product---name}
-    instance.
-  cluster-name;;
-    The log files will be collected for the specified cluster and the
-    DAS.
-
-[[sthref72]]
-
-Operands
-
-retrievefilepath::
-  The name of the directory in which the ZIP archive will be created. If
-  this operand is omitted, the ZIP archive will be created in the
-  default directory. If the `--retrieve` option is `false`, this operand
-  is ignored.
-
-[[sthref73]]
-
-Examples
-
-[[GSRFM451]][[sthref74]]
-
-Example 1   Collecting Log Files for the Default Server
-
-This example generates a ZIP archive from the log files for the default
-server.
-
-[source,oac_no_warn]
-----
-asadmin> collect-log-files
-Created Zip file under /space/gfv3/v3setup/glassfish3/glassfish/domains/domain1/\
-collected-logs/log_2010-12-15_15-46-23.zip.
-Command collect-log-files executed successfully.
-----
-
-[[GSRFM452]][[sthref75]]
-
-Example 2   Collecting Log Files for a Cluster
-
-This example generates a ZIP archive from the log files for a cluster
-named `cluster1` and the two server instances running in the cluster.
-
-[source,oac_no_warn]
-----
-asadmin> collect-log-files --target cluster1
-Log files are downloaded for instance1.
-Log files are downloaded for instance2.
-Created Zip file under /space/gfv3/v3setup/glassfish3/glassfish/domains/domain1/\
-collected-logs/log_2010-12-15_15-54-06.zip.
-Command collect-log-files executed successfully.
-----
-
-[[GSRFM453]][[sthref76]]
-
-Example 3   Collecting Log Files in a Directory Other Than the Default
-for a Cluster
-
-This example generates a ZIP archive from the log files for a cluster
-named `cluster1` and its two server instances, and saves the archive in
-a directory named `/space/output`.
-
-[source,oac_no_warn]
-----
-asadmin> collect-log-files --target cluster1 --retrieve true /space/output
-Log files are downloaded for instance1.
-Log files are downloaded for instance2.
-Created Zip file under /space/output/log_2010-12-15_15-55-54.zip.
-Command collect-log-files executed successfully.
-----
-
-[[sthref77]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref78]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:list-log-attributes.html#list-log-attributes-1[`list-log-attributes`(1)],
-link:list-log-levels.html#list-log-levels-1[`list-log-levels`(1)],
-link:rotate-log.html#rotate-log-1[`rotate-log`(1)],
-link:set-log-attributes.html#set-log-attributes-1[`set-log-attributes`(1)],
-link:set-log-levels.html#set-log-levels-1[`set-log-levels`(1)]
-
-"link:../administration-guide/logging.html#GSADG00010[Administering the Logging Service]" in GlassFish
-Server Open Source Edition Administration Guide
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/configuration.adoc b/docs/reference-manual/src/main/jbake/content/configuration.adoc
deleted file mode 100644
index c0e6bd3..0000000
--- a/docs/reference-manual/src/main/jbake/content/configuration.adoc
+++ /dev/null
@@ -1,62 +0,0 @@
-type=page
-status=published
-title=configuration
-next=domain.html
-prev=application.html
-~~~~~~
-configuration
-=============
-
-[[configuration-5asc]][[GSRFM00266]][[configuration]]
-
-configuration
--------------
-
-the data set that determines how \{product---name} operates
-
-[[sthref2394]]
-
-Description
-
-The configuration of \{product---name} is the data set that determines
-how it operates. Parts of this configuration determine the operation of
-specific parts of \{product---name}, such as the following:
-
-* Services, such as the transaction service
-* Resources, such as databases
-* Deployed applications or modules, such as web applications
-* Clusters and server instances
-
-The term configuration is also used to describe a part of the overall
-configuration, such as the transaction service configuration or the
-configuration of a database. In clustered environments, clusters or
-server instances can share configurations.
-
-Examples of configuration data are port numbers, flags that enable or
-disable processes, application names, and so on. Most of these data
-points are name/value pairs, either hard-coded attributes or more
-flexibly defined properties.
-
-The hierarchical structure of the configuration is explained in the
-dotted names page. You can view and change most of the \{product---name}
-configuration using either the Administration Console or the `asadmin`
-utility and its subcommands. To list the structure of all or part of the
-configuration, use the `list` subcommand. To view the value of one or
-more attributes or properties, use the `get` subcommand. To change the
-value of an attribute or property, use the `set` subcommand.
-
-[[sthref2395]]
-
-See Also
-
-link:get.html#get-1[`get`(1)], link:list.html#list-1[`list`(1)],
-link:set.html#set-1[`set`(1)]
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:dotted-names.html#dotted-names-5asc[`dotted-names`(5ASC)]
-
-"link:../administration-guide/overview.html#GSADG00527[Configuration Tasks]" in GlassFish Server Open Source
-Edition Administration Guide
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/configure-jms-cluster.adoc b/docs/reference-manual/src/main/jbake/content/configure-jms-cluster.adoc
deleted file mode 100644
index e0339f6..0000000
--- a/docs/reference-manual/src/main/jbake/content/configure-jms-cluster.adoc
+++ /dev/null
@@ -1,150 +0,0 @@
-type=page
-status=published
-title=configure-jms-cluster
-next=configure-lb-weight.html
-prev=collect-log-files.html
-~~~~~~
-configure-jms-cluster
-=====================
-
-[[configure-jms-cluster-1]][[GSRFM00008]][[configure-jms-cluster]]
-
-configure-jms-cluster
----------------------
-
-configures the Message Queue cluster providing JMS services to a
-\{product---name} cluster
-
-[[sthref79]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] configure-jms-cluster [--help]
-[--clustertype={conventional|enhanced}]
-[--configstoretype={masterbroker|shareddb}]
-[--messagestoretype={file|jdbc}]
-[--dbvendor database-vendor]
-[--dbuser database-user]
-[--dburl database-url]
-[--property (name=value)[:name=value]*]
-cluster-name
-----
-
-[[sthref80]]
-
-Description
-
-The `configure-jms-cluster` configures the Message Queue cluster
-providing JMS services to a \{product---name} cluster.
-
-This subcommand should be used before the \{product---name} cluster is
-started for the first time. Otherwise, follow the instructions in
-"link:../administration-guide/jms.html#GSADG00020[Administering the Java Message Service (JMS)]" in
-GlassFish Server Open Source Edition Administration Guide.
-
-This subcommand is supported in remote mode only. Remote `asadmin`
-subcommands require a running domain administration server (DAS).
-
-[[sthref81]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--clustertype`::
-  The type of Message Queue cluster to configure. The value
-  `conventional` specifies a conventional cluster, and the value
-  `enhanced` specifies an enhanced, high-availability cluster. For
-  information about these cluster types of Message Queue clusters, see
-  "link:../../openmq/mq-tech-over/broker-clusters.html#GMTOV00028[Broker Clusters]" in Open Message Queue Technical
-  Overview. +
-  The default value is `conventional`. +
-  If `enhanced` is specified, the `configstoretype` and
-  `messagestoretype` options are ignored.
-`--configstoretype`::
-  The type of data store for configuration data in a conventional
-  cluster. The value `masterbroker` specifies the use of a master broker
-  to store and manage the configuration data. The value `shareddb`
-  specifies the use of a shared database to store the configuration
-  data. +
-  The default value is `masterbroker`. +
-  This option is ignored if `clustertype` is set to `enhanced`.
-`--messagestoretype`::
-  The type of data store for message data in brokers in a conventional
-  cluster. The value `file` specifies a file store. The value `jdbc`
-  specifies a JDBC store. +
-  The default value is `file`. +
-  This option is ignored if `clustertype` is set to `enhanced`.
-`--dbvendor` +
-`--dbuser`::
-`--dburl`::
-  The database vendor, user, and access url of the JDBC database to use
-  in any of these situations: +
-  * When `clustertype` is set to `enhanced`
-  * When `configstoretype` is set to `shareddb`
-  * When `messagestoretype` is set to `jdbc` +
-  For information about supported vendors and the formats of access urls
-  for each vendor, see "link:../../openmq/mq-admin-guide/persistence-services.html#GMADG00244[JDBC-Based Persistence]" in
-  Open Message Queue Administration Guide. +
-
-[width="100%",cols="100%",]
-|=======================================================================
-a|
-Note:
-
-To specify the password of the JDBC database user, use the
-`--passwordfile` utility option of the
-link:asadmin.html#asadmin-1m[`asadmin`(1M)] command after adding the
-entry `AS_ADMIN_JMSDBPASSWORD` to the password file.
-
-|=======================================================================
-
-`--property`::
-  A list of additional database-vendor-specific properties to configure
-  the JDBC database for use by the Message Queue cluster. Specify
-  properties as a colon (`:`) separated list of property names and
-  values in the form: +
-[source,oac_no_warn]
-----
-prop1name=prop1value:prop2name=prop2value
-----
-
-[[sthref82]]
-
-Operands
-
-cluster-name::
-  The name of the \{product---name} cluster for which the Message Queue
-  cluster is to provide JMS services. +
-  Because \{product---name} uses the cluster name to uniquely identify
-  database tables the Message Queue cluster might require, the length of
-  the name is restricted in the following situations: +
-  * If `clustertype` is set to `enhanced`, the name can be no longer
-  than n–21 characters, where n is the maximum table name length allowed
-  by the database.
-  * If `configstoretype` is set to `shareddb`, the name can be no longer
-  than n–19 characters, where n is the maximum table name length allowed
-  by the database.
-
-[[sthref83]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref84]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/configure-lb-weight.adoc b/docs/reference-manual/src/main/jbake/content/configure-lb-weight.adoc
deleted file mode 100644
index 1e58fe3..0000000
--- a/docs/reference-manual/src/main/jbake/content/configure-lb-weight.adoc
+++ /dev/null
@@ -1,114 +0,0 @@
-type=page
-status=published
-title=configure-lb-weight
-next=configure-ldap-for-admin.html
-prev=configure-jms-cluster.html
-~~~~~~
-configure-lb-weight
-===================
-
-[[configure-lb-weight-1]][[GSRFM00009]][[configure-lb-weight]]
-
-configure-lb-weight
--------------------
-
-sets load balancing weights for clustered instances
-
-[[sthref85]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] configure-lb-weight [--help] 
---cluster cluster_name
-instance-name=weight[:instance-name=weight]
-----
-
-[[sthref86]]
-
-Description
-
-The `configure-lb-weight` subcommand assigns weight to the server
-instances in a cluster. Weights can be used for HTTP, RMI/IIOP and JMS
-load balancing. For the HTTP load balancer, the weights are used only if
-the load balancer's policy is set to `weighted-round-robin`. The load
-balancer policy is set in the `create-http-lb-ref` subcommand or `set`
-subcommand.
-
-Use the weight to vary the load going to different instances in the
-cluster. For example, if an instance is on a machine with more capacity,
-give it a higher weight so that more requests are sent to that instance
-by the load balancer. The default weight is 100. If all instances have
-the default weight, the load balancer performs simple round robin load
-balancing.
-
-
-[NOTE]
-=======================================================================
-
-This subcommand is only applicable to Oracle GlassFish Server. This
-subcommand is not applicable to GlassFish Server Open Source Edition.
-
-=======================================================================
-
-
-[[sthref87]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--cluster`::
-  The name of the cluster.
-
-[[sthref88]]
-
-Operands
-
-instance-name=weight::
-  The name of the instance and the weight you are assigning it. The
-  weight must be an integer. The pairs of instances and weights are
-  separated by colons. For example `instance1=1:instance2=4` means that
-  for every five requests, one goes to instance1 and four go to
-  instance2. A weight of 1 is the default.
-
-[[sthref89]]
-
-Examples
-
-[[GSRFM454]][[sthref90]]
-
-Example 1   Assigning Load Balancer Weights to Cluster Instances
-
-The following subcommand assigns weights of `1`, `1`, and `2` to
-instances `i1`, `i2`, and `i3` in the `cluster1` cluster.
-
-[source,oac_no_warn]
-----
-asadmin> configure-lb-weight --cluster cluster1 i1=1:i2=1:i3=2
-Command configure-lb-weight executed successfully.
-----
-
-[[sthref91]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref92]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-http-lb-ref.html#create-http-lb-ref-1[`create-http-lb-ref`(1)]link:create-cluster.html#create-cluster-1[`create-cluster`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/configure-ldap-for-admin.adoc b/docs/reference-manual/src/main/jbake/content/configure-ldap-for-admin.adoc
deleted file mode 100644
index fd90b56..0000000
--- a/docs/reference-manual/src/main/jbake/content/configure-ldap-for-admin.adoc
+++ /dev/null
@@ -1,84 +0,0 @@
-type=page
-status=published
-title=configure-ldap-for-admin
-next=configure-managed-jobs.html
-prev=configure-lb-weight.html
-~~~~~~
-configure-ldap-for-admin
-========================
-
-[[configure-ldap-for-admin-1]][[GSRFM00010]][[configure-ldap-for-admin]]
-
-configure-ldap-for-admin
-------------------------
-
-configures the authentication realm named admin-realm for the given LDAP
-
-[[sthref93]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] configure-ldap-for-admin [--help]
-----
-
-[[sthref94]]
-
-Description
-
-The `configure-ldap-for-admin` subcommand configures the authentication
-realm named `admin-realm` for the given LDAP. The
-`configure-ldap-for-admin` subcommand is interactive. The subcommand
-prompts the user for the `basedn` and `ldap-group` options.
-
-This command is supported in remote mode only.
-
-[[sthref95]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref96]]
-
-Examples
-
-[[GSRFM455]][[sthref97]]
-
-Example 1    Configuring the LDAP Authentication Realm
-
-[source,oac_no_warn]
-----
-asadmin> configure-ldap-for-admin 
-Enter the value for the basedn option>
-Enter the value for the ldap-group option>
-The LDAP Auth Realm admin-realm was configured correctly 
-in admin server's configuration.
-----
-
-[[sthref98]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref99]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:change-admin-password.html#change-admin-password-1[`change-admin-password`(1)],
-link:create-auth-realm.html#create-auth-realm-1[`create-auth-realm`(1)]link:create-auth-realm.html#create-auth-realm-1[`create-auth-realm`(1)],
-link:list-auth-realms.html#list-auth-realms-1[`list-auth-realms`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/configure-managed-jobs.adoc b/docs/reference-manual/src/main/jbake/content/configure-managed-jobs.adoc
deleted file mode 100644
index ca52d34..0000000
--- a/docs/reference-manual/src/main/jbake/content/configure-managed-jobs.adoc
+++ /dev/null
@@ -1,100 +0,0 @@
-type=page
-status=published
-title=configure-managed-jobs
-next=copy-config.html
-prev=configure-ldap-for-admin.html
-~~~~~~
-configure-managed-jobs
-======================
-
-[[configure-managed-jobs-1]][[GSRFM836]][[configure-managed-jobs]]
-
-configure-managed-jobs
-----------------------
-
-configures how long information about subcommands that were started
-using `asadmin --detach` or that contain progress information is kept
-
-[[sthref100]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] configure-managed-jobs [--help]
-[--in-memory-retention-period in-memory-retention-period]
-[--job-retention-period job-retention-period]
-[--cleanup-initial-delay cleanup-initial-delay]
-[--cleanup-poll-interval cleanup-poll-interval]
-----
-
-[[sthref101]]
-
-Description
-
-The `configure-managed-jobs` subcommand configures how long information
-about subcommands (jobs) that were started using the `asadmin` utility
-option `--detach` or that contain progress information is kept. The
-`--detach` option detaches long-running subcommands and executes them in
-the background in detach mode. Job information includes subcommand
-progress and status.
-
-This subcommand is supported in remote mode only.
-
-[[sthref102]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--in-memory-retention-period`::
-  Specifies how long a completed job is kept in memory after the job is
-  finished. The default value is 1 hour.
-`--job-retention-period`::
-  Specifies how long a job is stored. The default value is 24 hours.
-`--cleanup-initial-delay`::
-  After server startup, specifies the initial delay after which the
-  cleanup service starts purging jobs. The default value is 5 minutes.
-`--cleanup-poll-interval`::
-  Specifies the time interval after which the cleanup service polls for
-  expired jobs. The default value is 20 minutes.
-
-[[sthref103]]
-
-Examples
-
-[[GSRFM837]][[sthref104]]
-
-Example 1   Configuring the Job Retention Period
-
-This example sets the job retention period to 36 hours. Time periods can
-be specified in Hh|Mm|Ss for hours, minutes, or seconds.
-
-[source,oac_no_warn]
-----
-asadmin> configure-managed-jobs --job-retention-period=36h
-Command configure-managed-jobs executed successfully.
-----
-
-[[sthref105]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref106]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:list-jobs.html#list-jobs-1[`list-jobs`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/copy-config.adoc b/docs/reference-manual/src/main/jbake/content/copy-config.adoc
deleted file mode 100644
index 46539f8..0000000
--- a/docs/reference-manual/src/main/jbake/content/copy-config.adoc
+++ /dev/null
@@ -1,175 +0,0 @@
-type=page
-status=published
-title=copy-config
-next=create-admin-object.html
-prev=configure-managed-jobs.html
-~~~~~~
-copy-config
-===========
-
-[[copy-config-1]][[GSRFM00011]][[copy-config]]
-
-copy-config
------------
-
-copies an existing named configuration to create another configuration
-
-[[sthref107]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] copy-config [--help] 
-[--systemproperties (name=value)[:name=value]*]
-source-configuration-name destination-configuration-name
-----
-
-[[sthref108]]
-
-Description
-
-The `copy-config` subcommand creates a named configuration in the
-configuration of the domain administration server (DAS) by copying an
-existing configuration. The new configuration is identical to the copied
-configuration, except for any properties that you specify in the
-`--systemproperties` option.
-
-The `default-config` configuration is copied when a standalone sever
-instance or standalone cluster is created.
-
-This subcommand is supported in remote mode only.
-
-[[sthref109]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--systemproperties`::
-  Optional attribute name-value pairs for the configuration. These
-  properties override port settings in the configuration. +
-  The following properties are available: +
-  `ASADMIN_LISTENER_PORT`;;
-    This property specifies the port number of the HTTP port or HTTPS
-    port through which the DAS connects to the instance to manage the
-    instance. Valid values are 1-65535. On UNIX, creating sockets that
-    listen on ports 1-1024 requires superuser privileges.
-  `HTTP_LISTENER_PORT`;;
-    This property specifies the port number of the port that is used to
-    listen for HTTP requests. Valid values are 1-65535. On UNIX,
-    creating sockets that listen on ports 1-1024 requires superuser
-    privileges.
-  `HTTP_SSL_LISTENER_PORT`;;
-    This property specifies the port number of the port that is used to
-    listen for HTTPS requests. Valid values are 1-65535. On UNIX,
-    creating sockets that listen on ports 1-1024 requires superuser
-    privileges.
-  `IIOP_LISTENER_PORT`;;
-    This property specifies the port number of the port that is used for
-    IIOP connections. Valid values are 1-65535. On UNIX, creating
-    sockets that listen on ports 1-1024 requires superuser privileges.
-  `IIOP_SSL_LISTENER_PORT`;;
-    This property specifies the port number of the port that is used for
-    secure IIOP connections. Valid values are 1-65535. On UNIX, creating
-    sockets that listen on ports 1-1024 requires superuser privileges.
-  `IIOP_SSL_MUTUALAUTH_PORT`;;
-    This property specifies the port number of the port that is used for
-    secure IIOP connections with client authentication. Valid values are
-    1-65535. On UNIX, creating sockets that listen on ports 1-1024
-    requires superuser privileges.
-  `JAVA_DEBUGGER_PORT`;;
-    This property specifies the port number of the port that is used for
-    connections to the Java Platform Debugger Architecture (JPDA)
-    (http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html)
-    debugger. Valid values are 1-65535. On UNIX, creating sockets that
-    listen on ports 1-1024 requires superuser privileges.
-  `JMS_PROVIDER_PORT`;;
-    This property specifies the port number for the Java Message Service
-    provider. Valid values are 1-65535. On UNIX, creating sockets that
-    listen on ports 1-1024 requires superuser privileges.
-  `JMX_SYSTEM_CONNECTOR_PORT`;;
-    This property specifies the port number on which the JMX connector
-    listens. Valid values are 1-65535. On UNIX, creating sockets that
-    listen on ports 1-1024 requires superuser privileges.
-  `OSGI_SHELL_TELNET_PORT`;;
-    This property specifies the port number of the port that is used for
-    connections to the Apache Felix Remote Shell
-    (`http://felix.apache.org/site/apache-felix-remote-shell.html`).
-    This shell uses the Felix shell service to interact with the OSGi
-    module management subsystem. Valid values are 1-65535. On UNIX,
-    creating sockets that listen on ports 1-1024 requires superuser
-    privileges.
-
-[[sthref110]]
-
-Operands
-
-source-configuration-name::
-  The name of the configuration that you are copying.
-destination-configuration-name::
-  The name of the configuration that you are creating by copying the
-  source configuration. +
-  The name must meet the following requirements: +
-  * The name may contain only ASCII characters.
-  * The name must start with a letter, a number, or an underscore.
-  * The name may contain only the following characters:
-  ** Lowercase letters
-  ** Uppercase letters
-  ** Numbers
-  ** Hyphen
-  ** Period
-  ** Underscore
-  * The name must be unique in the domain and must not be the name of a
-  another named configuration, a cluster, a \{product---name} instance ,
-  or a node.
-  * The name must not be `domain`, `server`, or any other keyword that
-  is reserved by \{product---name}.
-
-[[sthref111]]
-
-Examples
-
-[[GSRFM456]][[sthref112]]
-
-Example 1   Copying a Configuration
-
-This example copies the `default-config` configuration to the
-`pmdsaconfig` configuration, overriding the settings for the following
-ports:
-
-* HTTP listener port
-* HTTPS listener port
-
-[source,oac_no_warn]
-----
-asadmin> copy-config 
---systemproperties HTTP_LISTENER_PORT=2000:HTTP_SSL_LISTENER_PORT=3000 
-default-config pmdsaconfig
-
-Command copy-config executed successfully.
-----
-
-[[sthref113]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref114]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-config.html#delete-config-1[`delete-config`(1)],
-link:list-configs.html#list-configs-1[`list-configs`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-admin-object.adoc b/docs/reference-manual/src/main/jbake/content/create-admin-object.adoc
deleted file mode 100644
index d733573..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-admin-object.adoc
+++ /dev/null
@@ -1,148 +0,0 @@
-type=page
-status=published
-title=create-admin-object
-next=create-application-ref.html
-prev=copy-config.html
-~~~~~~
-create-admin-object
-===================
-
-[[create-admin-object-1]][[GSRFM00012]][[create-admin-object]]
-
-create-admin-object
--------------------
-
-adds the administered object with the specified JNDI name for a resource
-adapter
-
-[[sthref115]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-admin-object [--help] 
-[--target target] 
---restype restype 
-[--classname classname] 
---raname raname 
-[--enabled={true|false}] 
-[--description description] 
-[--property name=value[:name=value]*] 
-jndi_name
-----
-
-[[sthref116]]
-
-Description
-
-The `create-admin-object` subcommand creates the administered object
-with the specified JNDI name and the interface definition for a resource
-adapter.
-
-This subcommand is supported in remote mode only.
-
-[[sthref117]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Specifies the target on which you are creating the administered
-  object. Valid values are as follows: +
-  `server`;;
-    Creates the administered object for the default server instance
-    `server` and is the default value.
-  configuration_name;;
-    Creates the administered object for the named configuration.
-  cluster_name;;
-    Creates the administered object for every server instance in the
-    cluster.
-  instance_name;;
-    Creates the administered object for a particular server instance. +
-
-[width="100%",cols="100%",]
-|=======================================================================
-a|
-Note:
-
-The resource is always created for the domain as a whole, but the
-`resource-ref` for the resource is only created for the specified
-`--target`. This means that although the resource is defined at the
-domain level, it is only available at the specified target level. Use
-the `create-resource-ref` subcommand to refer to the resource in
-multiple targets if needed.
-
-|=======================================================================
-
-`--restype`::
-  Specifies the interface definition for the administered object. The
-  resource type must be an interface definition that is specified in the
-  `ra.xml` file of the resource adapter.
-`--classname`::
-  Specifies the class name of the administered object. Required if
-  multiple administered objects use the same interface definition.
-`--raname`::
-  Specifies the name of the resource adapter associated with this
-  administered object.
-`--enabled`::
-  Specifies if this object is enabled. Default is true.
-`--description`::
-  Text string describing the administered object.
-`--property`::
-  Description of the name/values pairs for configuring the resource.
-  Dependent on the resource adapter. For JMS properties, see
-  link:create-jms-resource.html#create-jms-resource-1[`create-jms-resource`(1)]
-  for JMS destination resources.
-
-[[sthref118]]
-
-Operands
-
-jndi_name::
-  JNDI name of the administered object to be created.
-
-[[sthref119]]
-
-Examples
-
-[[GSRFM457]][[sthref120]]
-
-Example 1   Creating an Administered Object
-
-In this example, `jmsra` is a system resource adapter with the admin
-object interfaces, `jakarta.jms.Queue` and `jakarta.jms.Topic`.
-
-[source,oac_no_warn]
-----
-asadmin> create-admin-object --restype jakarta.jms.Queue
---raname jmsra --description "sample administered object"
---property Name=sample_jmsqueue jms/samplequeue
-Command create-admin-object executed successfully
-----
-
-[[sthref121]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref122]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-resource-ref.html#create-resource-ref-1[`create-resource-ref`(1)],
-link:delete-admin-object.html#delete-admin-object-1[`delete-admin-object`(1)],
-link:list-admin-objects.html#list-admin-objects-1[`list-admin-objects`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-application-ref.adoc b/docs/reference-manual/src/main/jbake/content/create-application-ref.adoc
deleted file mode 100644
index a8b18f9..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-application-ref.adoc
+++ /dev/null
@@ -1,138 +0,0 @@
-type=page
-status=published
-title=create-application-ref
-next=create-audit-module.html
-prev=create-admin-object.html
-~~~~~~
-create-application-ref
-======================
-
-[[create-application-ref-1]][[GSRFM00013]][[create-application-ref]]
-
-create-application-ref
-----------------------
-
-creates a reference to an application
-
-[[sthref123]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-application-ref [--help] 
-[--target target]
-[--virtualservers virtual_servers] [--enabled=true]
-[--lbenabled=true] reference_name
-----
-
-[[sthref124]]
-
-Description
-
-The `create-application-ref` subcommand creates a reference from a
-cluster or an unclustered server instance to a previously deployed
-application element (for example, a Java EE application, a Web module,
-or an enterprise bean module). This effectively results in the
-application element being deployed and made available on the targeted
-instance or cluster.
-
-The target instance or instances making up the cluster need not be
-running or available for this subcommand to succeed. If one or more
-instances are not available, they will receive the new application
-element the next time they start.
-
-This subcommand is supported in remote mode only.
-
-[[sthref125]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Specifies the target for which you are creating the application
-  reference. Valid values are +
-  * `server`- Specifies the default server instance as the target for
-  creating the application reference. `server` is the name of the
-  default server instance and is the default value for this option.
-  * cluster_name- Specifies a particular cluster as the target for
-  creating the application reference.
-  * instance_name- Specifies a particular stand-alone server instance as
-  the target for creating the application reference.
-`--virtualservers`::
-  Specifies a comma-separated list of virtual server IDs on which to
-  deploy. This option applies only to Web modules (either standalone or
-  in a Java EE application). If this option is not specified, the
-  application is deployed to all virtual servers except the
-  administrative server, `__asadmin`.
-`--enabled`::
-  Indicates whether the application should be enabled (that is, loaded).
-  This value will take effect only if the application is enabled at the
-  global level. The default is `true`.
-`--lbenabled`::
-  Controls whether the deployed application is available for load
-  balancing. The default is true.
-
-[[sthref126]]
-
-Operands
-
-reference_name::
-  The name of the application or module, which can be a Java EE
-  application, Web module, EJB module, connector module, application
-  client module, or lifecycle module. +
-  The name can include an optional version identifier, which follows the
-  name and is separated from the name by a colon (`:`). The version
-  identifier must begin with a letter or number. It can contain
-  alphanumeric characters plus underscore (`_`), dash (`-`), and period
-  (`.`) characters. If the `--enabled` option is set to false, you can
-  create references to multiple disabled versions by using an asterisk
-  (`*`) as a wildcard character. For more information about module and
-  application versions, see "link:../application-deployment-guide/overview.html#GSDPG00324[Module and Application
-  Versions]" in GlassFish Server Open Source Edition Application
-  Deployment Guide.
-
-[[sthref127]]
-
-Examples
-
-[[GSRFM458]][[sthref128]]
-
-Example 1   Creating an Application Reference
-
-The following example creates a reference to the Web module `MyWebApp`
-on the unclustered server instance `NewServer`.
-
-[source,oac_no_warn]
-----
-asadmin> create-application-ref --target NewServer MyWebApp
-Command create-application-ref executed successfully.
-----
-
-[[sthref129]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref130]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-application-ref.html#delete-application-ref-1[`delete-application-ref`(1)],
-link:list-application-refs.html#list-application-refs-1[`list-application-refs`(1)]
-
-link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition Application Deployment
-Guide]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-audit-module.adoc b/docs/reference-manual/src/main/jbake/content/create-audit-module.adoc
deleted file mode 100644
index 3deace2..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-audit-module.adoc
+++ /dev/null
@@ -1,119 +0,0 @@
-type=page
-status=published
-title=create-audit-module
-next=create-auth-realm.html
-prev=create-application-ref.html
-~~~~~~
-create-audit-module
-===================
-
-[[create-audit-module-1]][[GSRFM00014]][[create-audit-module]]
-
-create-audit-module
--------------------
-
-adds an audit module
-
-[[sthref131]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-audit-module [--help]
---classname classname
-[--property(name=value)[:name=value]*] 
-[--target target]
-audit_module_name
-----
-
-[[sthref132]]
-
-Description
-
-The `create-audit-module` subcommand adds the named audit module for the
-Java class that implements the audit capabilities. Audit modules collect
-and store information on incoming requests (from, for example, servlets
-and EJB components) and outgoing responses.
-
-This subcommand is supported in remote mode only.
-
-[[sthref133]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--classname`::
-  The name of the Java class that implements this audit module. If not
-  specified, this option defaults to
-  `com.sun.enterprise.security.Audit`.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--property`::
-  Optional keyword-value pairs that specify additional properties for
-  the audit module. +
-  Audit module properties that are defined by \{product---name} are as
-  follows: +
-  `auditOn`;;
-    If `true`, specifies that the audit module is loaded and called by
-    the \{product---name} audit library at audit points. +
-  Other available properties are determined by the implementation of the
-  audit module.
-`--target`::
-  Specifies the target on which you are creating the audit module. Valid
-  values are as follows: +
-  `server`;;
-    Creates the audit module for the default server instance `server`
-    and is the default value.
-  configuration_name;;
-    Creates the audit module for the named configuration.
-  cluster_name;;
-    Creates the audit module for every server instance in the cluster.
-  instance_name;;
-    Creates the audit module for a particular server instance.
-
-[[sthref134]]
-
-Operands
-
-audit_module_name::
-  The name of this audit module.
-
-[[sthref135]]
-
-Examples
-
-[[GSRFM459]][[sthref136]]
-
-Example 1   Creating an audit module
-
-[source,oac_no_warn]
-----
-asadmin> create-audit-module
---classname com.sun.appserv.auditmodule 
---property defaultuser=admin:Password=admin sampleAuditModule
-Command create-audit-module executed successfully
-----
-
-[[sthref137]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref138]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-audit-module.html#delete-audit-module-1[`delete-audit-module`(1)],
-link:list-audit-modules.html#list-audit-modules-1[`list-audit-modules`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-auth-realm.adoc b/docs/reference-manual/src/main/jbake/content/create-auth-realm.adoc
deleted file mode 100644
index 9eb1df0..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-auth-realm.adoc
+++ /dev/null
@@ -1,262 +0,0 @@
-type=page
-status=published
-title=create-auth-realm
-next=create-cluster.html
-prev=create-audit-module.html
-~~~~~~
-create-auth-realm
-=================
-
-[[create-auth-realm-1]][[GSRFM00015]][[create-auth-realm]]
-
-create-auth-realm
------------------
-
-adds the named authentication realm
-
-[[sthref139]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-auth-realm [--help]
---classname realm_class [--property(name=value)[:name=value]*]
-[--target target_name] auth_realm_name
-----
-
-[[sthref140]]
-
-Description
-
-The `create-auth-realm` subcommand adds the named authentication realm.
-
-This subcommand is supported in remote mode only.
-
-[[sthref141]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Specifies the target on which you are creating the realm. Valid values
-  are +
-  `server`;;
-    Creates the realm on the default server instance. This is the
-    default value.
-  configuration_name;;
-    Creates the realm in the specified configuration.
-  cluster_name;;
-    Creates the realm on all server instances in the specified cluster.
-  instance_name;;
-    Creates the realm on a specified server instance.
-`--classname`::
-  Java class which implements this realm. These include
-  `com.sun.enterprise.security.auth.realm.file.FileRealm`,
-  `com.sun.enterprise.security.auth.realm.certificate.CertificateRealm`,
-  `com.sun.enterprise.security.auth.realm.jdbc.JDBCRealm`,
-  `com.sun.enterprise.security.auth.realm.ldap.LDAPRealm`,
-  `com.sun.enterprise.security.auth.realm.ldap.PamRealm`, and
-  `com.sun.enterprise.security.auth.realm.solaris.SolarisRealm`, or a
-  custom realm.
-`--property`::
-  Optional attribute name-value pairs for configuring the authentication
-  realm. Authentication realms require provider-specific properties,
-  which vary based on implementation. +
-  The following properties are common to all of the supported realms,
-  which include `FileRealm`, `CertificateRealm`, `JDBCRealm`,
-  `LDAPRealm`, PamRealm, and `SolarisRealm`. +
-  `jaas-context`;;
-    Specifies the Java Authentication and Authorization Service (JAAS)
-    context.
-  `assign-groups`;;
-    (Optional) If this property is set, its value is taken to be a
-    comma-separated list of group names. All clients who present valid
-    certificates are assigned membership to these groups for the
-    purposes of authorization decisions in the web and EJB containers. +
-  Specific to each realm, you can specify the following properties. +
-  * You can specify the following properties for `FileRealm`: +
-  `file`;;
-    Specifies the file that stores user names, passwords, and group
-    names. The default is domain-dir`/config/keyfile`.
-  * You can specify the following properties for `CertificateRealm`: +
-  `LoginModule`;;
-    Specifies the name of a JAAS `LoginModule` to use for performing
-    authentication. To use a JAAS `LoginModule`, you must first create
-    an implementation of the javax.security.auth.spi.LoginModule
-    interface, and then plug the module into a `jaas-context`. For more
-    information, see "link:../security-guide/system-security.html#GSSCG00196[Custom Authentication of Client
-    Certificate in SSL Mutual Authentication]" in GlassFish Server Open
-    Source Edition Security Guide.
-  * You can specify the following properties for `JDBCRealm`: +
-  `datasource-jndi`;;
-    Specifies the `jndi-name` of the `jdbc-resource` for the database.
-  `user-table`;;
-    Specifies the name of the user table in the database.
-  `user-name-column`;;
-    Specifies the name of the user name column in the database's user
-    table.
-  `password-column`;;
-    Specifies the name of the password column in the database's user
-    table.
-  `group-table`;;
-    Specifies the name of the group table in the database.
-  `group-table`;;
-    Specify the group table for an authentication realm of class
-    `JDBCRealm`.
-  `group-name-column`;;
-    Specifies the name of the group name column in the database's group
-    table.
-  `db-user`;;
-    (Optional) Allows you to specify the database user name in the realm
-    instead of the `jdbc-connection-pool`. This prevents other
-    applications from looking up the database, getting a connection, and
-    browsing the user table. By default, the `jdbc-connection-pool`
-    configuration is used.
-  `db-password`;;
-    (Optional) Allows you to specify the database password in the realm
-    instead of the `jdbc-connection-pool`. This prevents other
-    applications from looking up the database, getting a connection, and
-    browsing the user table. By default, the `jdbc-connection-pool`
-    configuration is used.
-  `group-table`;;
-    Specifies the name of the group table in the database.
-  `digest-algorithm`;;
-    (Optional) Specifies the digest algorithm. The default is `SHA-256`.
-    You can use any algorithm supported in the JDK, or none. +
-
-[width="100%",cols="100%",]
-|=======================================================================
-a|
-Note:
-
-In versions of \{product---name} prior to 5.0, the default algorithm
-was `MD5`. If you have applications that depend on the `MD5`
-algorithm, you can override the default `SHA-25` algorithm by using
-the `asadmin set` subcommand:
-
-[source,oac_no_warn]
-----
-asadmin> set server.security-service.property.default-digest-algorithm=MD5
-----
-
-You can use the `asadmin get` subcommand to determine what algorithm
-is currently being used:
-
-[source,oac_no_warn]
-----
-asadmin> get server.security-service.property.default-digest-algorithm
-----
-
-Also note that, to maintain backward compatibility, if an upgrade is
-performed from \{product---name} v2.x or v3.0.x to \{product---name}
-5.0, the default algorithm is automatically set to `MD5` in cases
-where the digest algorithm had not been explicitly set in the older
-\{product---name} version.
-
-|=======================================================================
-
-  `digestrealm-password-enc-algorithm`;;
-    (Optional) Specifies the algorithm for encrypting passwords stored
-    in the database. +
-
-[width="100%",cols="100%",]
-|====================================================================
-a|
-Note:
-
-It is a security risk not to specify a password encryption
-algorithm.
-
-|====================================================================
-
-  `encoding`;;
-    (Optional) Specifies the encoding. Allowed values are `Hex` and
-    `Base64`. If digest-algorithm is specified, the default is `Hex`. If
-    `digest-algorithm` is not specified, by default no encoding is
-    specified.
-  `charset`;;
-    (Optional) Specifies the `charset` for the digest algorithm.
-  * You can specify the following properties for `LDAPRealm`: +
-  `directory`;;
-    Specifies the LDAP URL to your server.
-  `base-dn`;;
-    Specifies the LDAP base DN for the location of user data. This base
-    DN can be at any level above the user data, since a tree scope
-    search is performed. The smaller the search tree, the better the
-    performance.
-  `search-filter`;;
-    (Optional) Specifies the search filter to use to find the user. The
-    default is `uid=%s` (`%s` expands to the subject name).
-  `group-base-dn`;;
-    (Optional) Specifies the base DN for the location of groups data. By
-    default, it is same as the `base-dn`, but it can be tuned, if
-    necessary.
-  `group-search-filter`;;
-    (Optional) Specifies the search filter to find group memberships for
-    the user. The default is `uniquemember=%d` (`%d` expands to the user
-    `elementDN`).
-  `group-target`;;
-    (Optional) Specifies the LDAP attribute name that contains group
-    name entries. The default is `CN`.
-  `search-bind-dn`;;
-    (Optional) Specifies an optional DN used to authenticate to the
-    directory for performing the search-filter lookup. Only required for
-    directories that do not allow anonymous search.
-  `search-bind-password`;;
-    (Optional) Specifies the LDAP password for the DN given in
-    `search-bind-dn`.
-
-[[sthref142]]
-
-Operands
-
-auth_realm_name::
-  A short name for the realm. This name is used to refer to the realm
-  from, for example, `web.xml`.
-
-[[sthref143]]
-
-Examples
-
-[[GSRFM460]][[sthref144]]
-
-Example 1   Creating a New Authentication Realm
-
-This example creates a new file realm.
-
-[source,oac_no_warn]
-----
-asadmin> create-auth-realm
---classname com.sun.enterprise.security.auth.realm.file.FileRealm 
---property file=${com.sun.aas.instanceRoot}/config/
-admin-keyfile:jaas-context=fileRealm file
-Command create-auth-realm executed successfully
-----
-
-Where `file` is the authentication realm created.
-
-[[sthref145]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref146]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-auth-realm.html#delete-auth-realm-1[`delete-auth-realm`(1)],
-link:list-auth-realms.html#list-auth-realms-1[`list-auth-realms`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-cluster.adoc b/docs/reference-manual/src/main/jbake/content/create-cluster.adoc
deleted file mode 100644
index 1e5dc0d..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-cluster.adoc
+++ /dev/null
@@ -1,504 +0,0 @@
-type=page
-status=published
-title=create-cluster
-next=create-connector-connection-pool.html
-prev=create-auth-realm.html
-~~~~~~
-create-cluster
-==============
-
-[[create-cluster-1]][[GSRFM00017]][[create-cluster]]
-
-create-cluster
---------------
-
-creates a \{product---name} cluster
-
-[[sthref147]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-cluster [--help] 
-[--config config-name]
-[--systemproperties (name=value)[:name=value]*]
-[--properties (name=value)[:name=value]*]
-[--gmsenabled={true|false}] 
-[--multicastport multicast-port] 
-[--multicastaddress multicast-address]
-[--bindaddress bind-address]
-[--hosts hadb-host-list] 
-[--haagentport port-number]
-[--haadminpassword password] 
-[--haadminpasswordfile file-name] [--devicesize devicesize ] 
-[--haproperty (name=value)[:name=value]*]
-[--autohadb=false] [--portbase port-number]
-cluster-name
-----
-
-[[sthref148]]
-
-Description
-
-The `create-cluster` subcommand creates a \{product---name} cluster.
-Initially the cluster contains no \{product---name} instances,
-applications, or resources.
-
-A cluster requires a reference to the named configuration that defines
-the configuration of all instances that are added to the cluster. The
-configuration can be specified in the command to create the cluster, but
-is not required. If no configuration is specified, the subcommand
-creates a configuration that is named cluster-name`-config` for the
-cluster. The cluster that is created is a standalone cluster because the
-cluster's configuration is not shared with any other clusters or
-standalone instances.
-
-To add instances to the cluster, set the `--cluster` option to the name
-of the cluster when using either of the following subcommands:
-
-* link:create-instance.html#create-instance-1[`create-instance`(1)]
-* link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)]
-
-To delete server instances from the cluster at any time, use one of the
-following subcommands:
-
-* link:delete-instance.html#delete-instance-1[`delete-instance`(1)]
-* link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)]
-
-To associate applications and resources with all instances in the
-cluster, set the `--target` option to the name of the cluster when
-performing the following operations:
-
-* Deploying applications by using the
-link:deploy.html#deploy-1[`deploy`(1)] subcommand
-* Creating resources by using subcommands such as
-link:create-jdbc-resource.html#create-jdbc-resource-1[`create-jdbc-resource`(1)]
-* Creating references to applications that are already deployed in other
-targets by using the
-link:create-application-ref.html#create-application-ref-1[`create-application-ref`(1)]
-subcommand
-* Creating references to resources that are already created in other
-targets by using the
-link:create-resource-ref.html#create-resource-ref-1[`create-resource-ref`(1)]
-subcommand
-
-This subcommand is supported in remote mode only.
-
-[[sthref149]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--config`::
-  Specifies the named configuration that the cluster references. The
-  configuration must exist and must not be named `default-config` or
-  `server-config`. Specifying the `--config` option creates a shared
-  cluster. If this option is omitted, a standalone cluster is created.
-`--systemproperties`::
-  Defines system properties for the configuration that is created for
-  the cluster. These properties override the property values in the
-  `default-config` configuration. The following properties are
-  available: +
-  `ASADMIN_LISTENER_PORT`;;
-    This property specifies the port number of the HTTP port or HTTPS
-    port through which the DAS connects to the instance to manage the
-    instance. Valid values are 1-65535. On UNIX, creating sockets that
-    listen on ports 1-1024 requires superuser privileges.
-  `HTTP_LISTENER_PORT`;;
-    This property specifies the port number of the port that is used to
-    listen for HTTP requests. Valid values are 1-65535. On UNIX,
-    creating sockets that listen on ports 1-1024 requires superuser
-    privileges.
-  `HTTP_SSL_LISTENER_PORT`;;
-    This property specifies the port number of the port that is used to
-    listen for HTTPS requests. Valid values are 1-65535. On UNIX,
-    creating sockets that listen on ports 1-1024 requires superuser
-    privileges.
-  `IIOP_LISTENER_PORT`;;
-    This property specifies the port number of the port that is used for
-    IIOP connections. Valid values are 1-65535. On UNIX, creating
-    sockets that listen on ports 1-1024 requires superuser privileges.
-  `IIOP_SSL_LISTENER_PORT`;;
-    This property specifies the port number of the port that is used for
-    secure IIOP connections. Valid values are 1-65535. On UNIX, creating
-    sockets that listen on ports 1-1024 requires superuser privileges.
-  `IIOP_SSL_MUTUALAUTH_PORT`;;
-    This property specifies the port number of the port that is used for
-    secure IIOP connections with client authentication. Valid values are
-    1-65535. On UNIX, creating sockets that listen on ports 1-1024
-    requires superuser privileges.
-  `JAVA_DEBUGGER_PORT`;;
-    This property specifies the port number of the port that is used for
-    connections to the
-    http://java.sun.com/javase/technologies/core/toolsapis/jpda/[Java
-    Platform Debugger Architecture (JPDA)]
-    (http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html)
-    debugger. Valid values are 1-65535. On UNIX, creating sockets that
-    listen on ports 1-1024 requires superuser privileges.
-  `JMS_PROVIDER_PORT`;;
-    This property specifies the port number for the Java Message Service
-    provider. Valid values are 1-65535. On UNIX, creating sockets that
-    listen on ports 1-1024 requires superuser privileges.
-  `JMX_SYSTEM_CONNECTOR_PORT`;;
-    This property specifies the port number on which the JMX connector
-    listens. Valid values are 1-65535. On UNIX, creating sockets that
-    listen on ports 1-1024 requires superuser privileges.
-  `OSGI_SHELL_TELNET_PORT`;;
-    This property specifies the port number of the port that is used for
-    connections to the
-    http://felix.apache.org/site/apache-felix-remote-shell.html[Apache
-    Felix Remote Shell]
-    (http://felix.apache.org/site/apache-felix-remote-shell.html). This
-    shell uses the Felix shell service to interact with the OSGi module
-    management subsystem. Valid values are 1-65535. On UNIX, creating
-    sockets that listen on ports 1-1024 requires superuser privileges.
-`--properties`::
-  Defines properties for the cluster. The following properties are
-  available: +
-  `GMS_DISCOVERY_URI_LIST`;;
-    The locations of \{product---name} instances in the cluster to use
-    for discovering the cluster. This property is required only if the
-    Group Management Service (GMS) is not using multicast for
-    broadcasting messages. +
-    Valid values for this property are as follows: +
-    * A comma-separated list of uniform resource identifiers (URIs).
-    Each URI must locate a \{product---name} instance or the DAS. This
-    format is required if multiple \{product---name} instances are
-    running on the same host. +
-    The format of each URI in the list is as follows: +
-    scheme`://`host-name-or -IP-address`:`port
-    ** scheme is the URI scheme, which is `tcp`.
-    ** host-name-or -IP-address is the host name or IP address of the
-    host on which the instance is running.
-    ** port is the port number of the port on which the instance listens
-    for messages from GMS. The system property
-    `GMS_LISTENER_PORT-`clustername must be set for the instance. For
-    information about how to set this system property for an instance,
-    see "link:../ha-administration-guide/clusters.html#GSHAG00373[Discovering a Cluster When Multicast Transport
-    Is Unavailable]" in GlassFish Server Open Source Edition High
-    Availability Administration Guide.
-    * A comma-separated list of IP addresses or host names on which the
-    DAS or the instances are running. The list can contain a mixture of
-    IP addresses and host names. This format can be used only if one
-    clustered instance is running on each host. The value of the
-    `GMS_LISTENER_PORT` property must be unique for each cluster in a
-    domain.
-    * The keyword `generate`. This format can be used only if one
-    instance in a cluster is running on each host and the DAS is running
-    on a separate host. Multiple instances on the same host cannot be
-    members of the same cluster. The value of the `GMS_LISTENER_PORT`
-    property must be unique for each cluster in a domain.
-  `GMS_LISTENER_PORT`;;
-    The port number of the port on which the cluster listens for
-    messages from GMS. +
-    The default value is a reference to the
-    `GMS_LISTENER_PORT-`cluster-name system property. By default, this
-    system property is not set. In this situation, GMS selects a free
-    port from the range that is defined by the properties
-    `GMS_TCPSTARTPORT` and `GMS_TCPENDPORT`. By default, this range is
-    9090-9200. In most situations, the default behavior should suffice. +
-    However, if GMS is not using multicast for broadcasting messages,
-    the `GMS_LISTENER_PORT` property must specify a port number that is
-    valid for all \{product---name} instances in the cluster. To use the
-    default value to meet this requirement, use a system property to set
-    the port number individually for each instance. +
-    For example, use the `create-system-properties` subcommand to create
-    the system property `GMS_LISTENER_PORT-`cluster-name for the DAS.
-    Then, for each instance in the cluster, set the
-    `GMS_LISTENER_PORT-`cluster-name system property to the port number
-    on which the instance listens for messages from GMS. The default
-    value of the `GMS_LISTENER_PORT` property for the cluster references
-    this system property.
-  `GMS_LOOPBACK`;;
-    Specifies whether an instance may receive from itself
-    application-level messages that the instance broadcasts to the
-    cluster. +
-    Possible values are as follows:::
-    `false`::
-      The instance may not receive messages from itself (default).
-    `true`::
-      The instance may receive messages from itself. Use this setting
-      for testing an instance when the instance is the only instance in
-      a cluster.
-  `GMS_MULTICAST_TIME_TO_LIVE`;;
-    The maximum number of iterations or transmissions that a multicast
-    message for the following types of events can experience before the
-    message is discarded: +
-    * Group discovery
-    * Member heartbeats
-    * Membership changes +
-    To match the configuration of the network on which the DAS and
-    clustered instances are deployed, set this value as low as possible.
-    To determine the lowest possible value for your system, use the
-    link:validate-multicast.html#validate-multicast-1[`validate-multicast`(1)]
-    subcommand. +
-    A value of 0 ensures that multicast messages never leave the host
-    from which they are broadcast. +
-    A value of 1 might prevent the broadcast of messages between hosts
-    on same subnet that are connected by a switch or a router. +
-    The default is 4, which ensures that messages are successfully
-    broadcast to all cluster members in networks where hosts are
-    connected by switches or routers.
-  `GMS_TCPENDPORT`;;
-    The highest port number in the range from which GMS selects a free
-    port if the `GMS_LISTENER_PORT-`cluster-name system property is not
-    set. The default is 9200.
-  `GMS_TCPSTARTPORT`;;
-    The lowest port number in the range from which GMS selects a free
-    port if the `GMS_LISTENER_PORT-`cluster-name system property is not
-    set. The default is 9090.
-`--gmsenabled`::
-  Specifies whether GMS is enabled for the cluster. +
-  Possible values are as follows: +
-  `true`;;
-    GMS is enabled for the cluster (default). +
-    When GMS is enabled for a cluster, GMS is started in each server
-    instance in the cluster and in the DAS. The DAS participates in each
-    cluster for which this option is set to `true`.
-  `false`;;
-    GMS is disabled for the cluster.
-`--multicastaddress`::
-  The address on which GMS listens for group events. This option must
-  specify a multicast address in the range 224.0.0.0 through
-  239.255.255.255. The default is 228.9.XX.YY, where XX and YY are
-  automatically generated independent values between 0 and 255.
-`--multicastport`::
-  The port number of communication port on which GMS listens for group
-  events. This option must specify a valid port number in the range
-  2048-49151. The default is an automatically generated value in this
-  range.
-`--bindaddress`::
-  The Internet Protocol (IP) address of the network interface to which
-  GMS binds. This option must specify the IP address of a local network
-  interface. The default is all public network interface addresses. +
-  On a multihome machine, this option configures the network interface
-  that is used for the GMS. A multihome machine possesses two or more
-  network interfaces. +
-  To specify an address that is valid for all \{product---name}
-  instances in the cluster, use a system property to set the address
-  individually for each instance. +
-  For example, use the `create-system-properties` subcommand to create
-  the system property `GMS-BIND-INTERFACE-ADDRESS-`cluster-name. Then
-  set the `--bindaddress` option of this subcommand to
-  `${GMS-BIND-INTERFACE-ADDRESS-`cluster-name`}` to specify the system
-  property. Finally, for each instance in the cluster, set the
-  `GMS-BIND-INTERFACE-ADDRESS-`cluster-name system property to the
-  required network interface address on the instance's machine.
-`--hosts`::
-  Do not specify this option. This option is retained for compatibility
-  with earlier releases. If you specify this option, a syntax error does
-  not occur. Instead, the subcommand runs successfully and displays a
-  warning message that the option is ignored.
-`--haagentport`::
-  Do not specify this option. This option is retained for compatibility
-  with earlier releases. If you specify this option, a syntax error does
-  not occur. Instead, the subcommand runs successfully and displays a
-  warning message that the option is ignored.
-`--haadminpassword`::
-  Do not specify this option. This option is retained for compatibility
-  with earlier releases. If you specify this option, a syntax error does
-  not occur. Instead, the subcommand runs successfully and displays a
-  warning message that the option is ignored.
-`--haadminpasswordfile`::
-  Do not specify this option. This option is retained for compatibility
-  with earlier releases. If you specify this option, a syntax error does
-  not occur. Instead, the subcommand runs successfully and displays a
-  warning message that the option is ignored.
-`--devicesize`::
-  Do not specify this option. This option is retained for compatibility
-  with earlier releases. If you specify this option, a syntax error does
-  not occur. Instead, the subcommand runs successfully and displays a
-  warning message that the option is ignored.
-`--haproperty`::
-  Do not specify this option. This option is retained for compatibility
-  with earlier releases. If you specify this option, a syntax error does
-  not occur. Instead, the subcommand runs successfully and displays a
-  warning message that the option is ignored.
-`--autohadb`::
-  Do not specify this option. This option is retained for compatibility
-  with earlier releases. If you specify this option, a syntax error does
-  not occur. Instead, the subcommand runs successfully and displays a
-  warning message that the option is ignored.
-`--portbase`::
-  Do not specify this option. This option is retained for compatibility
-  with earlier releases. If you specify this option, a syntax error does
-  not occur. Instead, the subcommand runs successfully and displays a
-  warning message that the option is ignored.
-
-[[sthref150]]
-
-Operands
-
-cluster-name::
-  The name of the cluster. +
-  The name must meet the following requirements: +
-  * The name may contain only ASCII characters.
-  * The name must start with a letter, a number, or an underscore.
-  * The name may contain only the following characters:
-  ** Lowercase letters
-  ** Uppercase letters
-  ** Numbers
-  ** Hyphen
-  ** Period
-  ** Underscore
-  * The name must be unique in the domain and must not be the name of
-  another cluster, a named configuration, a \{product---name} instance,
-  or a node.
-  * The name must not be `domain`, `server`, or any other keyword that
-  is reserved by \{product---name}. +
-  If the
-  link:configure-jms-cluster.html#configure-jms-cluster-1[`configure-jms-cluster`(1)]
-  subcommand is to be used to configure a Message Queue cluster to
-  provide JMS services to the \{product---name} cluster, the length of
-  the \{product---name} cluster name is might be restricted: +
-  * If `clustertype` is set to `enhanced` in the
-  link:configure-jms-cluster.html#configure-jms-cluster-1[`configure-jms-cluster`(1)]
-  subcommand, the name can be no longer than n–21 characters, where n is
-  the maximum table name length allowed by the database.
-  * If `configstoretype` is set to `shareddb` in the
-  link:configure-jms-cluster.html#configure-jms-cluster-1[`configure-jms-cluster`(1)]
-  subcommand, the name can be no longer than n–19 characters, where n is
-  the maximum table name length allowed by the database.
-
-[[sthref151]]
-
-Examples
-
-[[GSRFM462]][[sthref152]]
-
-Example 1   Creating a Cluster
-
-This example creates a cluster that is named `ltscluster` for which port
-1169 is to be used for secure IIOP connections. Because the `--config`
-option is not specified, the cluster references a copy of the named
-configuration `default-config` that is named `ltscluster-config`.
-
-[source,oac_no_warn]
-----
-asadmin> create-cluster 
---systemproperties IIOP_SSL_LISTENER_PORT=1169 
-ltscluster
-Command create-cluster executed successfully.
-----
-
-[[GSRFM463]][[sthref153]]
-
-Example 2   Creating a Cluster With a List of URIs for Discovering the
-Cluster
-
-This example creates a cluster that is named `tcpcluster`. In this
-example, GMS is not using multicast for broadcasting messages and
-multiple instances reside on the same host. Therefore, the
-`GMS_DISCOVERY_URI_LIST` property is set to the locations of the
-\{product---name} instances to use for discovering the cluster. These
-instances reside on the host whose IP address is `10.152.23.224` and
-listen for GMS events on ports 9090, 9091, and 9092.
-
-To distinguish colon (`:`) characters in URIs from separators in a
-property list, colons in URIs are escaped with single quote characters
-(`'`) and backslash (`\`) characters. For more information about escape
-characters in options for the `asadmin` utility, see the
-link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-
-This example assumes that the port on which each instance listens for
-GMS messages is set independently for the instance through the
-`GMS_LISTENER_PORT-tcpcluster` system property. For information about
-how to set the port on which an instance listens for GMS messages, see
-"link:../ha-administration-guide/clusters.html#GSHAG00373[Discovering a Cluster When Multicast Transport Is
-Unavailable]" in GlassFish Server Open Source Edition High Availability
-Administration Guide.
-
-[source,oac_no_warn]
-----
-asadmin> create-cluster --properties GMS_DISCOVERY_URI_LIST=
-tcp'\\:'//10.152.23.224'\\:'9090,
-tcp'\\:'//10.152.23.224'\\:'9091,
-tcp'\\:'//10.152.23.224'\\:'9092 tcpcluster
-Command create-cluster executed successfully.
-----
-
-[[GSRFM827]][[sthref154]]
-
-Example 3   Creating a Cluster With a List of IP Addresses for
-Discovering the Cluster
-
-This example creates a cluster that is named `ipcluster`. In this
-example, GMS is not using multicast for broadcasting messages and only
-one clustered instance resides on each host. Therefore, the
-`GMS_DISCOVERY_URI_LIST` property is set to the IP addresses of the
-hosts where instances to use for discovering the cluster are running.
-The cluster listens for messages from GMS on port 9090.
-
-[source,oac_no_warn]
-----
-asadmin> create-cluster --properties 'GMS_DISCOVERY_URI_LIST=
-10.152.23.225,10.152.23.226,10.152.23.227,10.152.23.228:
-GMS_LISTENER_PORT=9090' ipcluster
-Command create-cluster executed successfully.
-----
-
-[[GSRFM828]][[sthref155]]
-
-Example 4   Creating a Cluster With a Generated List of Instances for
-Discovering the Cluster
-
-This example creates a cluster that is named `gencluster`. In this
-example, GMS is not using multicast for broadcasting messages, one
-instance in the cluster is running on each host and the DAS is running
-on a separate host. Therefore, the `GMS_DISCOVERY_URI_LIST` property is
-set to the keyword `generate` to generate a list of instances to use for
-discovering the cluster. The cluster listens for messages from GMS on
-port 9090.
-
-[source,oac_no_warn]
-----
-asadmin> create-cluster --properties 'GMS_DISCOVERY_URI_LIST=generate:
-GMS_LISTENER_PORT=9090' gencluster
-Command create-cluster executed successfully.
-----
-
-[[sthref156]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref157]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-application-ref.html#create-application-ref-1[`create-application-ref`(1)],
-link:create-instance.html#create-instance-1[`create-instance`(1)],
-link:create-jdbc-resource.html#create-jdbc-resource-1[`create-jdbc-resource`(1)],
-link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)],
-link:create-resource-ref.html#create-resource-ref-1[`create-resource-ref`(1)],
-link:delete-cluster.html#delete-cluster-1[`delete-cluster`(1)],
-link:delete-instance.html#delete-instance-1[`delete-instance`(1)],
-link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)],
-link:deploy.html#deploy-1[`deploy`(1)],
-link:list-clusters.html#list-clusters-1[`list-clusters`(1)],
-link:start-cluster.html#start-cluster-1[`start-cluster`(1)],
-link:stop-cluster.html#stop-cluster-1[`stop-cluster`(1)],
-link:validate-multicast.html#validate-multicast-1[`validate-multicast`(1)]
-
-"link:../ha-administration-guide/clusters.html#GSHAG00373[Discovering a Cluster When Multicast Transport Is
-Unavailable]" in GlassFish Server Open Source Edition High Availability
-Administration Guide
-
-Apache Felix Remote Shell
-(http://felix.apache.org/site/apache-felix-remote-shell.html), Java
-Platform Debugger Architecture (JPDA)
-(http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html)
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-connector-connection-pool.adoc b/docs/reference-manual/src/main/jbake/content/create-connector-connection-pool.adoc
deleted file mode 100644
index 7dc475b..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-connector-connection-pool.adoc
+++ /dev/null
@@ -1,271 +0,0 @@
-type=page
-status=published
-title=create-connector-connection-pool
-next=create-connector-resource.html
-prev=create-cluster.html
-~~~~~~
-create-connector-connection-pool
-================================
-
-[[create-connector-connection-pool-1]][[GSRFM00018]][[create-connector-connection-pool]]
-
-create-connector-connection-pool
---------------------------------
-
-adds a connection pool with the specified connection pool name
-
-[[sthref158]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-connector-connection-pool [--help] 
-[--target=target] 
---raname raname
---connectiondefinition connectiondefinitionname
-[--steadypoolsize steadypoolsize]
-[--maxpoolsize maxpoolsize] 
-[--maxwait maxwait]
-[--poolresize poolresize] 
-[--idletimeout idletimeout]
-[--isconnectvalidatereq={false|true}]
-[--failconnection={false|true}] 
-[--leaktimeout=timeout]
-[--leakreclaim={false|true}] 
-[--creationretryattempts=attempts]
-[--creationretryinterval=interval] 
-[--lazyconnectionenlistment={false|true}]
-[--lazyconnectionassociation={false|true}]
-[--associatewiththread={false|true}]
-[--matchconnections={true|false}]
-[--maxconnectionusagecount=count]
-[--validateatmostonceperiod=interval]
-[--transactionsupport transactionsupport]
-[--descrip[tion description] 
-[--ping {false|true}]
-[--pooling {true|false}]
-[--property (name=value)[:name=value]*] 
-poolname
-----
-
-[[sthref159]]
-
-Description
-
-The `create-connector-connection-pool` subcommand defines a pool of
-connections to an enterprise information system (EIS). The named pool
-can be referred to by multiple connector resources. Each defined pool is
-instantiated at server startup, and is populated when accessed for the
-first time. If two or more connector resources point to the same
-connector connection pool, they are using the same pool of connections
-at run time. There can be more than one pool for a connection definition
-in a single resource adapter.
-
-A connector connection pool with authentication can be created either by
-using a `--property` option to specify user, password, or other
-connection information, or by specifying the connection information in
-the XML descriptor file.
-
-This subcommand is supported in remote mode only.
-
-[[sthref160]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--associatewiththread`::
-  Specifies whether a connection is associated with the thread to enable
-  the thread to reuse the connection. If a connection is not associated
-  with the thread, the thread must obtain a connection from the pool
-  each time that the thread requires a connection. Possible values are
-  as follows: +
-  `false`;;
-    A connection is not associated with the thread (default).
-  `true`;;
-    A connection is associated with the thread.
-`--connectiondefinition`::
-  The name of the connection definition.
-`--creationretryattempts`::
-  Specifies the maximum number of times that the server retries to
-  create a connection if the initial attempt fails. +
-  Default value is 0, which specifies that the server does not retry to
-  create the connection.
-`--creationretryinterval`::
-  Specifies the interval, in seconds, between successive attempts to
-  create a connection. +
-  If `--creationretryattempts` is 0, the `--creationretryinterval`
-  option is ignored. Default value is 10.
-`--description`::
-  Text providing descriptive details about the connector connection
-  pool.
-`--failconnection`::
-  If set to true, all connections in the pool are closed if a single
-  validation check fails. This parameter is mandatory if the
-  `--isconnectvalidatereq` option is set to true. Default value is
-  false.
-`--idletimeout`::
-  The maximum time that a connection can remain idle in the pool. After
-  this amount of time, the pool can close this connection. Default value
-  is 300.
-`--isconnectvalidatereq`::
-  If the value is set to true, the connections will be checked to see if
-  they are usable, before they are given out to the application. Default
-  value is false.
-`--lazyconnectionenlistment`::
-  Specifies whether a resource to a transaction is enlisted only when a
-  method actually uses the resource. Default value is false.
-`--lazyconnectionassociation`::
-  Specifies whether a physical connection should be associated with the
-  logical connection only when the physical connection is used, and
-  disassociated when the transaction is completed. Such association and
-  dissociation enable the reuse of physical connections. Possible values
-  are as follows: +
-  `false`;;
-    A physical connection is associated with the logical connection even
-    before the physical connection is used, and is not disassociated
-    when the transaction is completed (default).
-  `true`;;
-    A physical connection is associated with the logical connection only
-    when the physical connection is used, and disassociated when the
-    transaction is completed. The `--lazyconnectionenlistment` option
-    must also be set to `true`.
-`--leakreclaim`::
-  Specifies whether leaked connections are restored to the connection
-  pool after leak connection tracing is complete. Possible values are as
-  follows: +
-  `false`;;
-    Leaked connections are not restored to the connection pool
-    (default).
-  `true`;;
-    Leaked connections are restored to the connection pool.
-`--leaktimeout`::
-  Specifies the amount of time, in seconds, for which connection leaks
-  in a connection pool are to be traced. +
-  If connection leak tracing is enabled, you can use the Administration
-  Console to enable monitoring of the JDBC connection pool to get
-  statistics on the number of connection leaks. Default value is 0,
-  which disables connection leak tracing.
-`--matchconnections`::
-  Specifies whether a connection that is selected from the pool should
-  be matched with the resource adaptor. If all connections in the pool
-  are identical, matching between connections and resource adapters is
-  not required. Possible values are as follows: +
-  `true`;;
-    A connection should be matched with the resource adaptor (default).
-  `false`;;
-    A connection should not be matched with the resource adaptor.
-`--maxconnectionusagecount`::
-  Specifies the maximum number of times that a connection can be reused. +
-  When this limit is reached, the connection is closed. Default value is
-  0, which specifies no limit on the number of times that a connection
-  can be reused.
-`--maxpoolsize`::
-  The maximum number of connections that can be created to satisfy
-  client requests. Default value is 32.
-`--maxwait`::
-  The amount of time, in milliseconds, that a caller must wait before a
-  connection is created, if a connection is not available. If set to 0,
-  the caller is blocked indefinitely until a resource is available or
-  until an error occurs. Default value is 60000.
-`--ping`::
-  A pool with this attribute set to true is contacted during creation
-  (or reconfiguration) to identify and warn of any erroneous values for
-  its attributes. Default value is false.
-`--pooling`::
-  When set to false, this attribute disables connection pooling. Default
-  value is true.
-`--poolresize`::
-  Quantity by which the pool will scale up or scale down the number of
-  connections. Scale up: When the pool has no free connections, pool
-  will scale up by this quantity. Scale down: All the invalid and idle
-  connections are removed, sometimes resulting in removing connections
-  of quantity greater than this value. The number of connections that is
-  specified by `--steadypoolsize` will be ensured. Possible values are
-  from 0 to `MAX_INTEGER`. Default value is 2.
-`--property`::
-  Optional attribute name/value pairs for configuring the pool. +
-  `LazyConnectionEnlistment`;;
-    Deprecated. Use the equivalent option. Default value is false.
-  `LazyConnectionAssociation`;;
-    Deprecated. Use the equivalent option. Default value is false.
-  `AssociateWithThread`;;
-    Deprecated. Use the equivalent option. Default value is false.
-  `MatchConnections`;;
-    Deprecated. Use the equivalent option. Default value is false.
-`--raname`::
-  The name of the resource adapter.
-`--steadypoolsize`::
-  The minimum and initial number of connections maintained in the pool.
-  Default value is 8.
-`--target`::
-  Do not specify this option. This option is retained for compatibility
-  with earlier releases. If you specify this option, a syntax error does
-  not occur. Instead, the subcommand runs successfully and displays a
-  warning message that the option is ignored.
-`--transactionsupport`::
-  Indicates the level of transaction support that this pool will have.
-  Possible values are `XATransaction`, `LocalTransaction` and
-  `NoTransaction`. This attribute can have a value lower than or equal
-  to but not higher than the resource adapter's transaction support
-  attribute. The resource adapter's transaction support attribute has an
-  order of values, where `XATransaction` is the highest, and
-  `NoTransaction` the lowest.
-`--validateatmostonceperiod`::
-  Specifies the time interval in seconds between successive requests to
-  validate a connection at most once. Setting this attribute to an
-  appropriate value minimizes the number of validation requests by a
-  connection. Default value is 0, which means that the attribute is not
-  enabled.
-
-[[sthref161]]
-
-Operands
-
-poolname::
-  The name of the connection pool to be created.
-
-[[sthref162]]
-
-Examples
-
-[[GSRFM464]][[sthref163]]
-
-Example 1   Creating a Connector Connection Pool
-
-This example creates a new connector connection pool named
-`jms/qConnPool`.
-
-[source,oac_no_warn]
-----
-asadmin> create-connector-connection-pool --raname jmsra 
---connectiondefinition jakarta.jms.QueueConnectionFactory --steadypoolsize 20 
---maxpoolsize 100 --poolresize 2 --maxwait 60000 jms/qConnPool
-Command create-connector-connection-pool executed successfully
-----
-
-[[sthref164]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref165]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-connector-connection-pool.html#delete-connector-connection-pool-1[`delete-connector-connection-pool`(1)],
-link:list-connector-connection-pools.html#list-connector-connection-pools-1[`list-connector-connection-pools`(1)],
-link:ping-connection-pool.html#ping-connection-pool-1[`ping-connection-pool`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-connector-resource.adoc b/docs/reference-manual/src/main/jbake/content/create-connector-resource.adoc
deleted file mode 100644
index 1e0e8b7..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-connector-resource.adoc
+++ /dev/null
@@ -1,163 +0,0 @@
-type=page
-status=published
-title=create-connector-resource
-next=create-connector-security-map.html
-prev=create-connector-connection-pool.html
-~~~~~~
-create-connector-resource
-=========================
-
-[[create-connector-resource-1]][[GSRFM00019]][[create-connector-resource]]
-
-create-connector-resource
--------------------------
-
-registers the connector resource with the specified JNDI name
-
-[[sthref166]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-connector-resource [--help]
---poolname connectorConnectionPoolName
-[--enabled={true|false}]
-[--description description] 
-[--objecttype ovjecttype]
-[--property (name=value)[:name=value]*]
-[--target target]
-jndi_name
-----
-
-[[sthref167]]
-
-Description
-
-The `create-connector-resource` subcommand registers the connector
-resource with the specified JNDI name.
-
-This subcommand is supported in remote mode only.
-
-[[sthref168]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--poolname`::
-  The name of the connection pool. When two or more resource elements
-  point to the same connection pool element, they use the same pool
-  connections at runtime.
-`--enabled`::
-  This option determines whether the resource is enabled at runtime. The
-  default value is true.
-`--objecttype`::
-  Defines the type of the connector resource. Default is user. Allowed
-  values are: +
-  `system-all`;;
-    A system resource for all server instances and the domain
-    administration server (DAS).
-  `system-admin`;;
-    A system resource only for the DAS.
-  `system-instance`;;
-    A system resource for all server instances only.
-  `user`;;
-    A user resource.
-`--description`::
-  Text providing details about the connector resource.
-`--property`::
-  Optional attribute name value pairs for configuring the resource.
-`--target`::
-  This option specifies the ending location of the connector resources.
-  Valid targets are: +
-  `server`;;
-    Creates the connector resource in the default server instance. This
-    is the default value.
-  `domain`;;
-    Creates the connector resource in the domain.
-  cluster_name;;
-    Creates the connector resource in every server instance in the
-    cluster.
-  instance_name;;
-    Creates the connector resource in the specified server instance. +
-
-[width="100%",cols="100%",]
-|=======================================================================
-a|
-Note:
-
-The resource is always created for the domain as a whole, but the
-`resource-ref` for the resource is only created for the specified
-`--target`. This means that although the resource is defined at the
-domain level, it is only available at the specified target level. Use
-the `create-resource-ref` subcommand to refer to the resource in
-multiple targets if needed.
-
-|=======================================================================
-
-
-[[sthref169]]
-
-Operands
-
-jndi_name::
-  The JNDI name of this connector resource.
-
-[[sthref170]]
-
-Examples
-
-[[GSRFM465]][[sthref171]]
-
-Example 1   Creating a Connector Resource
-
-This example creates a connector resource named `jms/qConnFactory`.
-
-[source,oac_no_warn]
-----
-asadmin> create-connector-resource --poolname jms/qConnPool 
---description "sample connector resource" jms/qConnFactory
-Command create-connector-resource executed successfully
-----
-
-[[GSRFM466]][[sthref172]]
-
-Example 2   Using the create-connector-resource subcommand
-
-This example shows the usage of this subcommand.
-
-[source,oac_no_warn]
-----
-asadmin> create-connector-resource --target server --poolname jms/qConnPool 
---description "sample connector resource" jms/qConnFactory
-Command create-connector-resource executed successfully
-----
-
-Where `jms/qConnFactory` is the sample connector resource that is
-created.
-
-[[sthref173]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref174]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-connector-resource.html#delete-connector-resource-1[`delete-connector-resource`(1)],
-link:list-connector-resources.html#list-connector-resources-1[`list-connector-resources`(1)],
-link:create-resource-ref.html#create-resource-ref-1[`create-resource-ref`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-connector-security-map.adoc b/docs/reference-manual/src/main/jbake/content/create-connector-security-map.adoc
deleted file mode 100644
index e77bc8d..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-connector-security-map.adoc
+++ /dev/null
@@ -1,132 +0,0 @@
-type=page
-status=published
-title=create-connector-security-map
-next=create-connector-work-security-map.html
-prev=create-connector-resource.html
-~~~~~~
-create-connector-security-map
-=============================
-
-[[create-connector-security-map-1]][[GSRFM00020]][[create-connector-security-map]]
-
-create-connector-security-map
------------------------------
-
-creates a security map for the specified connector connection pool
-
-[[sthref175]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-connector-security-map [--help]
---poolname connector_connection_pool_name
-[--principals principal-name1[,principal-name2]*]
-[--usergroups user-group1[,user-group2]*]
-[--mappedusername user-name]
-[--target target]
-mapname
-----
-
-[[sthref176]]
-
-Description
-
-The `create-connector-security-map` subcommand creates a security map
-for the specified connector connection pool. If the security map is not
-present, a new one is created. This subcommand can also map the caller
-identity of the application (principal or user group) to a suitable
-enterprise information system (EIS) principal in container-managed
-authentication scenarios. The EIS is any system that holds the data of
-an organization. It can be a mainframe, a messaging system, a database
-system, or an application. One or more named security maps can be
-associated with a connector connection pool. The connector security map
-configuration supports the use of the wild card asterisk (`*`) to
-indicate all users or all user groups.
-
-To specify the EIS password, you can add the `AS_ADMIN_MAPPEDPASSWORD`
-entry to the password file, then specify the file by using the
-`--passwordfile` `asadmin` utility option.
-
-For this subcommand to succeed, you must have first created a connector
-connection pool using the `create-connector-connection-pool` subcommand.
-
-This subcommand is supported in remote mode only.
-
-[[sthref177]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--poolname`::
-  Specifies the name of the connector connection pool to which the
-  security map belongs.
-`--principals`::
-  Specifies a list of backend EIS principals. More than one principal
-  can be specified using a comma-separated list. Use either the
-  `--principals` or `--usergroups` options, but not both in the same
-  command.
-`--usergroups`::
-  Specifies a list of backend EIS user group. More than one user groups
-  can be specified using a comma separated list. Use either the
-  `--principals` or `--usergroups` options, but not both in the same
-  command.
-`--mappedusername`::
-  Specifies the EIS username.
-`--target`::
-  Do not specify this option. This option is retained for compatibility
-  with earlier releases. If you specify this option, a syntax error does
-  not occur. Instead, the subcommand runs successfully and displays a
-  warning message that the option is ignored.
-
-[[sthref178]]
-
-Operands
-
-mapname::
-  The name of the security map to be created.
-
-[[sthref179]]
-
-Examples
-
-[[GSRFM467]][[sthref180]]
-
-Example 1   Creating a Connector Security Map
-
-This example creates `securityMap1` for the existing connection pool
-named `connector-pool1`.
-
-[source,oac_no_warn]
-----
-asadmin> create-connector-security-map --poolname connector-pool1
---principals principal1,principal2 --mappedusername backend-username securityMap1
-Command create-connector-security-map executed successfully
-----
-
-[[sthref181]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref182]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-connector-security-map.html#delete-connector-security-map-1[`delete-connector-security-map`(1)],
-link:list-connector-security-maps.html#list-connector-security-maps-1[`list-connector-security-maps`(1)],
-link:update-connector-security-map.html#update-connector-security-map-1[`update-connector-security-map`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-connector-work-security-map.adoc b/docs/reference-manual/src/main/jbake/content/create-connector-work-security-map.adoc
deleted file mode 100644
index a919af5..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-connector-work-security-map.adoc
+++ /dev/null
@@ -1,137 +0,0 @@
-type=page
-status=published
-title=create-connector-work-security-map
-next=create-context-service.html
-prev=create-connector-security-map.html
-~~~~~~
-create-connector-work-security-map
-==================================
-
-[[create-connector-work-security-map-1]][[GSRFM00021]][[create-connector-work-security-map]]
-
-create-connector-work-security-map
-----------------------------------
-
-creates a work security map for the specified resource adapter
-
-[[sthref183]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-connector-work-security-map [--help] 
---raname raname
-[--principalsmap eis-principal1=principal_name1[, eis-principal2=principal_name2]* 
-|--groupsmap eis-group1=server-group1[, eis-group2=server-group2]*}
-[--description description] 
-mapname
-----
-
-[[sthref184]]
-
-Description
-
-The `create-connector-work-security-map` subcommand maps the caller
-identity of the work submitted by the resource adapter EIS principal or
-EIS user group to a suitable principal or user group in the
-\{product---name} security domain. One or more work security maps may be
-associated with a resource adapter. The connector work security map
-configuration supports the use of the wild card asterisk (`*`) to
-indicate all users or all user groups.
-
-The enterprise information system (EIS) is any system that holds the
-data of an organization. It can be a mainframe, a messaging system, a
-database system, or an application.
-
-This subcommand is supported in remote mode only.
-
-[[sthref185]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--description`::
-  Text providing descriptive details about the connector work security
-  map.
-`--groupsmap`::
-  Specifies a map of the backend EIS user group to the \{product---name}
-  user group. Use a comma-separated list to specify more than one
-  mapping. Use either the `--principalsmap` option or the `--groupsmap`
-  option, but not both.
-`--principalsmap`::
-  Specifies a map of the backend EIS principal to the \{product---name}
-  principal. Use a comma-separated list to specify more than one
-  mapping. Use either the `--principalsmap` option or the `--groupsmap`
-  option, but not both.
-`--raname`::
-  Indicates the connector module name, which is the name of the resource
-  adapter.
-
-[[sthref186]]
-
-Operands
-
-mapname::
-  The name of the work security map to be created.
-
-[[sthref187]]
-
-Examples
-
-[[GSRFM468]][[sthref188]]
-
-Example 1   Creating a Connector Work Security Map (Principal)
-
-This example creates connector work security map `workSecurityMap1` that
-maps the backend EIS principal to the \{product---name} principal.
-
-[source,oac_no_warn]
-----
-asadmin create-connector-work-security-map --raname my-resource-adapter
---principalsmap eis-principal-1=server-principal-1,eis-principal-2
-=server-principal-2,eis-principal-3=server-principal-1 
-workSecurityMap1
-Command create-connector-work-security-map executed successfully.
-----
-
-[[GSRFM469]][[sthref189]]
-
-Example 2   Creating a Connector Work Security Map (Group)
-
-This example creates connector work security map `workSecurityMap2` that
-maps the backend EIS user group to the \{product---name} user group.
-
-[source,oac_no_warn]
-----
-asadmin create-connector-work-security-map --raname my-resource-adapter
---groupsmap eis-group-1=server-group-1,eis-group-2=server-group-2,
-eis-group-3=server-group-1 workSecurityMap2
-Command create-connector-work-security-map executed successfully.
-----
-
-[[sthref190]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref191]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-connector-work-security-map.html#delete-connector-work-security-map-1[`delete-connector-work-security-map`(1)],
-link:list-connector-work-security-maps.html#list-connector-work-security-maps-1[`list-connector-work-security-maps`(1)],
-link:update-connector-work-security-map.html#update-connector-work-security-map-1[`update-connector-work-security-map`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-context-service.adoc b/docs/reference-manual/src/main/jbake/content/create-context-service.adoc
deleted file mode 100644
index 42f2191..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-context-service.adoc
+++ /dev/null
@@ -1,129 +0,0 @@
-type=page
-status=published
-title=create-context-service
-next=create-custom-resource.html
-prev=create-connector-work-security-map.html
-~~~~~~
-create-context-service
-======================
-
-[[create-context-service-1]][[GSRFM838]][[create-context-service]]
-
-create-context-service
-----------------------
-
-creates a context service resource
-
-[[sthref192]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-context-service [--help]
-[--enabled={false|true}]
-[--contextinfoenabled={false|true}]
-[--contextinfo={Classloader|JNDI|Security|WorkArea}]]
-[--description description]
-[--property property]
-[--target target]
-jndi_name
-----
-
-[[sthref193]]
-
-Description
-
-The `create-context-service` subcommand creates a context service
-resource.
-
-This subcommand is supported in remote mode only.
-
-[[sthref194]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--enabled`::
-  Determines whether the resource is enabled at runtime. The default
-  value is `true`.
-`--contextinfoenabled`::
-  Determines whether container contexts are propagated to threads. If
-  set to `true`, the contexts specified in the `--contextinfo` option
-  are propagated. If set to `false`, no contexts are propagated and the
-  `--contextinfo` option is ignored. The default value is `true`.
-`--contextinfo`::
-  Specifies individual container contexts to propagate to threads. Valid
-  values are Classloader, JNDI, Security, and WorkArea. Values are
-  specified in a comma-separated list and are case-insensitive. All
-  contexts are propagated by default.
-`--description`::
-  Descriptive details about the resource.
-`--property`::
-  Optional attribute name/value pairs for configuring the resource. +
-  \{product---name} does not define any additional properties for this
-  resource. Moreover, this resource does not currently use any
-  additional properties.
-`--target`::
-  Specifies the target for which you are creating the resource. Valid
-  targets are: +
-  `server`;;
-    Creates the resource for the default server instance. This is the
-    default value.
-  `domain`;;
-    Creates the resource for the domain.
-  cluster_name;;
-    Creates the resource for every server instance in the specified
-    cluster.
-  instance_name;;
-    Creates the resource for the specified server instance.
-
-[[sthref195]]
-
-Operands
-
-jndi_name::
-  The JNDI name of this resource.
-
-[[sthref196]]
-
-Examples
-
-[[GSRFM839]][[sthref197]]
-
-Example 1   Creating a Context Service Resource
-
-This example creates a context service resource named
-`concurrent/myContextService`.
-
-[source,oac_no_warn]
-----
-asadmin> create-context-service concurrent/myContextService
-Context service concurrent/myContextService created successfully.
-Command create-context-service executed successfully.
-----
-
-[[sthref198]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref199]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-context-service.html#delete-context-service-1[`delete-context-service`(1)],
-link:list-context-services.html#list-context-services-1[`list-context-services`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-custom-resource.adoc b/docs/reference-manual/src/main/jbake/content/create-custom-resource.adoc
deleted file mode 100644
index 93cdba2..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-custom-resource.adoc
+++ /dev/null
@@ -1,138 +0,0 @@
-type=page
-status=published
-title=create-custom-resource
-next=create-domain.html
-prev=create-context-service.html
-~~~~~~
-create-custom-resource
-======================
-
-[[create-custom-resource-1]][[GSRFM00022]][[create-custom-resource]]
-
-create-custom-resource
-----------------------
-
-creates a custom resource
-
-[[sthref200]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-custom-resource [--help] 
---restype type --factoryclass classname 
-[--enabled={true|false}] [--description text] 
-[--property (name=value)[:name=value]*] jndi-name 
-[--target target]
-----
-
-[[sthref201]]
-
-Description
-
-The `create-custom-resource` subcommand creates a custom resource. A
-custom resource specifies a custom server-wide resource object factory
-that implements the `javax.naming.spi.ObjectFactory` interface.
-
-This subcommand is supported in remote mode only.
-
-[[sthref202]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  The target on which the custom resource you are creating will be
-  available. Valid values are: +
-  `server`;;
-    The resource will be available on the default server instance and
-    all domains hosted on the instance. This is the default value.
-  `domain`;;
-    The resource will be available on the specified domain only.
-  cluster_name;;
-    The resource will be available on every server instance in the
-    cluster.
-  instance_name;;
-    The resource will be available on the specified server instance
-    only. +
-
-[width="100%",cols="100%",]
-|=======================================================================
-a|
-Note:
-
-The resource is always created for the domain as a whole, but the
-`resource-ref` for the resource is only created for the specified
-`--target`. This means that although the resource is defined at the
-domain level, it is only available at the specified target level. Use
-the `create-resource-ref` subcommand to refer to the resource in
-multiple targets if needed.
-
-|=======================================================================
-
-`--restype`::
-  The type of custom resource to be created. Specify a fully qualified
-  type definition, for example `javax.naming.spi.ObjectFactory`. The
-  resource type definition follows the format, xxx`.`xxx.
-`--factoryclass`::
-  Factory class name for the custom resource. This class implements the
-  `javax.naming.spi.ObjectFactory` interface.
-`--enabled`::
-  Determines whether the custom resource is enable at runtime. Default
-  is true.
-`--description`::
-  Text providing details about the custom resource. This description is
-  a string value and can include a maximum of 250 characters.
-`--property`::
-  Optional attribute name/value pairs for configuring the resource.
-
-[[sthref203]]
-
-Operands
-
-jndi-name::
-  The JNDI name of this resource.
-
-[[sthref204]]
-
-Examples
-
-[[GSRFM470]][[sthref205]]
-
-Example 1   Creating a Custom Resource
-
-This example creates a custom resource.
-
-[source,oac_no_warn]
-----
-asadmin> create-custom-resource --restype topic 
---factoryclass com.imq.topic mycustomresource
-Command create-custom-resource executed successfully.
-----
-
-[[sthref206]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref207]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-custom-resource.html#delete-custom-resource-1[`delete-custom-resource`(1)],
-link:list-custom-resources.html#list-custom-resources-1[`list-custom-resources`(1)],
-link:create-resource-ref.html#create-resource-ref-1[`create-resource-ref`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-domain.adoc b/docs/reference-manual/src/main/jbake/content/create-domain.adoc
deleted file mode 100644
index 17c0887..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-domain.adoc
+++ /dev/null
@@ -1,460 +0,0 @@
-type=page
-status=published
-title=create-domain
-next=create-file-user.html
-prev=create-custom-resource.html
-~~~~~~
-create-domain
-=============
-
-[[create-domain-1]][[GSRFM00023]][[create-domain]]
-
-create-domain
--------------
-
-creates a domain
-
-[[sthref208]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-domain [--help] 
-[--adminport adminport]
-[--instanceport instanceport] 
-[--portbase portbase] 
-[--profile profile-name] 
-[--template template-name] 
-[--domaindir domaindir] 
-[--savemasterpassword={false|true}] 
-[--usemasterpassword={false|true}]
-[--domainproperties (name=value)[:name=value]*] 
-[--keytooloptions (name=value)[:name=value]*] 
-[--savelogin={false|true}] 
-[--checkports={true|false}] 
-[--nopassword={false|true}] 
-domain-name
-----
-
-[[sthref209]]
-
-Description
-
-The `create-domain` subcommand creates a \{product---name} domain. A
-domain in \{product---name} is an administrative namespace that complies
-with the Java Platform, Enterprise Edition (Java EE) standard. Every
-domain has a configuration, which is stored in a set of files. Any
-number of domains, each of which has a distinct administrative identity,
-can be created in a given installation of \{product---name}. A domain
-can exist independently of other domains.
-
-Any user who has access to the `asadmin` utility on a given system can
-create a domain and store its configuration in a folder of the user's
-choosing. By default, the domain configuration is created in the default
-directory for domains. You can override this location to store the
-configuration elsewhere.
-
-If domain customizers are found in JAR files in the as-install`/modules`
-directory when the `create-domain` subcommand is run, the customizers
-are processed. A domain customizer is a class that implements the
-`DomainInitializer` interface.
-
-The `create-domain` subcommand creates a domain with a single
-administrative user specified by the `asadmin` utility option `--user`.
-If the `--user` option is not specified, and the `--nopassword` option
-is set to true, the default administrative user, `admin`, is used. If
-the `--nopassword` option is set to false (the default), a username is
-required. In this case, if you have not specified the user name by using
-the `--user` option, you are prompted to do so.
-
-You choose an appropriate profile for the domain, depending on the
-applications that you want to run on your new domain. You can choose the
-developer, cluster, or enterprise profile for the domain you create.
-
-This subcommand is supported in local mode only.
-
-[[sthref210]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--adminport`::
-  The HTTP port or the HTTPS port for administration. This port is the
-  port in the URL that you specify in your web browser to manage the
-  domain, for example, `http://localhost:4949`. The `--adminport` option
-  cannot be used with the `--portbase` option. The default value is
-  4848. +
-  The `--adminport` option overrides the `domain.adminPort` property of
-  the `--domainproperties` option.
-`--instanceport`::
-  The domain provides services so that applications can run when
-  deployed. This HTTP port specifies where the web application context
-  roots are available for a web browser to connect to. This port is a
-  positive integer and must be available at the time of domain creation.
-  The `--instanceport` option cannot be used with the `--portbase`
-  option. The default value is 8080. +
-  The `--instanceport` option overrides the `domain.instancePort`
-  property of the `--domainproperties` option.
-`--portbase`::
-  Determines the number with which port assignments should start. A
-  domain uses a certain number of ports that are statically assigned.
-  The portbase value determines where the assignment should start. The
-  values for the ports are calculated as follows: +
-  * Administration port: portbase + 48
-  * HTTP listener port: portbase + 80
-  * HTTPS listener port: portbase + 81
-  * JMS port: portbase + 76
-  * IIOP listener port: portbase + 37
-  * Secure IIOP listener port: portbase + 38
-  * Secure IIOP with mutual authentication port: portbase + 39
-  * JMX port: portbase + 86
-  * JPDA debugger port: portbase + 9
-  * Felix shell service port for OSGi module management: portbase + 66 +
-  When the `--portbase` option is specified, the output of this
-  subcommand includes a complete list of used ports. +
-  The `--portbase` option cannot be used with the `--adminport`,
-  `--instanceport`, or the `--domainproperties` option.
-`--profile`::
-  Do not specify this option. This option is retained for compatibility
-  with earlier releases. If you specify this option, a syntax error does
-  not occur. Instead, the subcommand runs successfully and displays a
-  warning message that the option is ignored.
-`--template`::
-  The file name, including a relative or absolute path, of a domain
-  configuration template to use for creating the domain. If a relative
-  path is specified, the subcommand appends the path to the
-  as-install`/lib/templates` directory to locate the file. If it is an
-  absolute pathname, the subcommand locates the file in the specified
-  path. +
-  This option enables domains of different types to be created and
-  custom domain templates to be defined.
-`--domaindir`::
-  The directory where the domain is to be created. If specified, the
-  path must be accessible in the filesystem. If not specified, the
-  domain is created in the default domain directory,
-  as-install`/domains`.
-`--savemasterpassword`::
-  Setting this option to `true` allows the master password to be written
-  to the file system. If this option is `true`, the
-  `--usemasterpassword` option is also true, regardless of the value
-  that is specified on the command line. The default value is `false`. +
-  A master password is really a password for the secure key store. A
-  domain is designed to keep its own certificate (created at the time of
-  domain creation) in a safe place in the configuration location. This
-  certificate is called the domain's SSL server certificate. When the
-  domain is contacted by a web browser over a secure channel (HTTPS),
-  this certificate is presented by the domain. The master password is
-  supposed to protect the store (a file) that contains this certificate.
-  This file is called `keystore.jks` and is created in the configuration
-  directory of the domain created. If however, this option is chosen,
-  the master password is saved on the disk in the domain's configuration
-  location. The master password is stored in a file called
-  `master-password`, which is a Java JCEKS type keystore. The reason for
-  using the `--savemasterpassword` option is for unattended system
-  boots. In this case, the master password is not prompted for when the
-  domain starts because the password will be extracted from this file. +
-  It is best to create a master password when creating a domain, because
-  the master password is used by the `start-domain` subcommand. For
-  security purposes, the default setting should be false, because saving
-  the master password on the disk is an insecure practice, unless file
-  system permissions are properly set. If the master password is saved,
-  then `start-domain` does not prompt for it. The master password gives
-  an extra level of security to the environment.
-`--usemasterpassword`::
-  Specifies whether the key store is encrypted with a master password
-  that is built into the system or a user-defined master password. +
-  If `false` (default), the keystore is encrypted with a well-known
-  password that is built into the system. Encrypting the keystore with a
-  password that is built into the system provides no additional
-  security. +
-  If `true`, the subcommand obtains the master password from the
-  `AS_ADMIN_MASTERPASSWORD` entry in the password file or prompts for
-  the master password. The password file is specified in the
-  `--passwordfile` option of the
-  link:asadmin.html#asadmin-1m[`asadmin`(1M)]utility. +
-  If the `--savemasterpassword` option is `true`, this option is also
-  true, regardless of the value that is specified on the command line.
-`--domainproperties`::
-  Setting the optional name/value pairs overrides the default values for
-  the properties of the domain to be created. The list must be separated
-  by the colon (:) character. The `--portbase` options cannot be used
-  with the `--domainproperties` option. The following properties are
-  available: +
-  `domain.adminPort`;;
-    This property specifies the port number of the HTTP port or the
-    HTTPS port for administration. This port is the port in the URL that
-    you specify in your web browser to manage the instance, for example,
-    `http://localhost:4949`. Valid values are 1-65535. On UNIX, creating
-    sockets that listen on ports 1-1024 requires superuser privileges. +
-    The `domain.adminPort` property is overridden by the `--adminport`
-    option.
-  `domain.instancePort`;;
-    This property specifies the port number of the port that is used to
-    listen for HTTP requests. Valid values are 1-65535. On UNIX,
-    creating sockets that listen on ports 1-1024 requires superuser
-    privileges. +
-    The `domain.instancePort` property is overridden by `--instanceport`
-    option.
-  `domain.jmxPort`;;
-    This property specifies the port number on which the JMX connector
-    listens. Valid values are 1-65535. On UNIX, creating sockets that
-    listen on ports 1-1024 requires superuser privileges.
-  `http.ssl.port`;;
-    This property specifies the port number of the port that is used to
-    listen for HTTPS requests. Valid values are 1-65535. On UNIX,
-    creating sockets that listen on ports 1-1024 requires superuser
-    privileges.
-  `java.debugger.port`;;
-    This property specifies the port number of the port that is used for
-    connections to the
-    http://java.sun.com/javase/technologies/core/toolsapis/jpda/[Java
-    Platform Debugger Architecture (JPDA)]
-    (http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html)
-    debugger. Valid values are 1-65535. On UNIX, creating sockets that
-    listen on ports 1-1024 requires superuser privileges.
-  `jms.port`;;
-    This property specifies the port number for the Java Message Service
-    provider. Valid values are 1-65535. On UNIX, creating sockets that
-    listen on ports 1-1024 requires superuser privileges.
-  `orb.listener.port`;;
-    This property specifies the port number of the port that is used for
-    IIOP connections. Valid values are 1-65535. On UNIX, creating
-    sockets that listen on ports 1-1024 requires superuser privileges.
-  `orb.mutualauth.port`;;
-    This property specifies the port number of the port that is used for
-    secure IIOP connections with client authentication. Valid values are
-    1-65535. On UNIX, creating sockets that listen on ports 1-1024
-    requires superuser privileges.
-  `orb.ssl.port`;;
-    This property specifies the port number of the port that is used for
-    secure IIOP connections. Valid values are 1-65535. On UNIX, creating
-    sockets that listen on ports 1-1024 requires superuser privileges.
-  `osgi.shell.telnet.port`;;
-    This property specifies the port number of the port that is used for
-    connections to the
-    http://felix.apache.org/site/apache-felix-remote-shell.html[Apache
-    Felix Remote Shell]
-    (http://felix.apache.org/site/apache-felix-remote-shell.html). This
-    shell uses the Felix shell service to interact with the OSGi module
-    management subsystem. Valid values are 1-65535. On UNIX, creating
-    sockets that listen on ports 1-1024 requires superuser privileges.
-`--keytooloptions`::
-  Specifies an optional list of name-value pairs of keytool options for
-  a self-signed server certificate. The certificate is generated during
-  the creation of the domain. Each pair in the list must be separated by
-  the colon (:) character. +
-  Allowed options are as follows: +
-  `CN`;;
-    Specifies the common name of the host that is to be used for the
-    self-signed certificate. This option name is case insensitive. +
-    By default, the name is the fully-qualified name of the host where
-    the `create-domain` subcommand is run.
-`--savelogin`::
-  If set to true, this option saves the administration user name and
-  password. Default value is false. The username and password are stored
-  in the `.asadminpass` file in user's home directory. A domain can only
-  be created locally. Therefore, when using the `--savelogin` option,
-  the host name saved in `.asadminpass` is always `localhost`. If the
-  user has specified default administration port while creating the
-  domain, there is no need to specify `--user`, `--passwordfile`,
-  `--host`, or `--port` on any of the subsequent `asadmin` remote
-  commands. These values will be obtained automatically. +
-
-[width="100%",cols="100%",]
-|=======================================================================
-a|
-Note:
-
-When the same user creates multiple domains that have the same
-administration port number on the same or different host (where the
-home directory is NFS mounted), the subcommand does not ask if the
-password should be overwritten. The password will always be
-overwritten.
-
-|=======================================================================
-
-`--checkports`::
-  Specifies whether to check for the availability of the administration,
-  HTTP, JMS, JMX, and IIOP ports. The default value is true.
-`--nopassword`::
-  Specifies whether the administrative user will have a password. If
-  false (the default), the password is specified by the
-  `AS_ADMIN_PASSWORD` entry in the `asadmin` password file (set by using
-  the `--passwordfile` option). If false and the `AS_ADMIN_PASSWORD` is
-  not set, you are prompted for the password. +
-  If true, the administrative user is created without a password. If a
-  user name for the domain is not specified by using the `--user`
-  option, and the `--nopassword` option is set to true, the default user
-  name, `admin`, is used.
-
-[[sthref211]]
-
-Operands
-
-domain-name::
-  The name of the domain to be created. The name may contain only ASCII
-  characters and must be a valid directory name for the operating system
-  on the host where the domain is created.
-
-[[sthref212]]
-
-Examples
-
-[[GSRFM471]][[sthref213]]
-
-Example 1   Creating a Domain
-
-This example creates a domain named `domain4`.
-
-[source,oac_no_warn]
-----
-asadmin>create-domain --adminport 4848 domain4
-Enter admin user name [Enter to accept default "admin" / no password]>
-Using port 4848 for Admin.
-Using default port 8080 for HTTP Instance.
-Using default port 7676 for JMS.
-Using default port 3700 for IIOP.
-Using default port 8181 for HTTP_SSL.
-Using default port 3820 for IIOP_SSL.
-Using default port 3920 for IIOP_MUTUALAUTH.
-Using default port 8686 for JMX_ADMIN.
-Using default port 6666 for OSGI_SHELL.
-Distinguished Name of the self-signed X.509 Server Certificate is:
-[CN=sr1-usca-22,OU=GlassFish,O=Oracle Corp.,L=Redwood Shores,ST=California,C=US]
-No domain initializers found, bypassing customization step
-Domain domain4 created.
-Domain domain4 admin port is 4848.
-Domain domain4 allows admin login as user "admin" with no password.
-Command create-domain executed successfully.
-----
-
-[[GSRFM472]][[sthref214]]
-
-Example 2   Creating a Domain in an Alternate Directory
-
-This example creates a domain named `sampleDomain` in the
-`/home/someuser/domains` directory.
-
-[source,oac_no_warn]
-----
-asadmin> create-domain --domaindir /home/someuser/domains --adminport 7070 
---instanceport 7071 sampleDomain
-Enter admin user name [Enter to accept default "admin" / no password]>
-Using port 7070 for Admin.
-Using port 7071 for HTTP Instance.
-Using default port 7676 for JMS.
-Using default port 3700 for IIOP.
-Using default port 8181 for HTTP_SSL.
-Using default port 3820 for IIOP_SSL.
-Using default port 3920 for IIOP_MUTUALAUTH.
-Using default port 8686 for JMX_ADMIN.
-Using default port 6666 for OSGI_SHELL.
-Enterprise ServiceDistinguished Name of the self-signed X.509 Server Certificate is:
-[CN=sr1-usca-22,OU=GlassFish,O=Oracle Corp.,L=Redwood Shores,ST=California,C=US]
-No domain initializers found, bypassing customization step
-Domain sampleDomain created.
-Domain sampleDomain admin port is 7070.
-Domain sampleDomain allows admin login as user "admin" with no password.
-Command create-domain executed successfully.
-----
-
-[[GSRFM473]][[sthref215]]
-
-Example 3   Creating a Domain and Saving the Administration User Name
-and Password
-
-This example creates a domain named `myDomain` and saves the
-administration username and password.
-
-[source,oac_no_warn]
-----
-asadmin> create-domain --adminport 8282 --savelogin=true myDomain
-Enter the admin password [Enter to accept default of no password]>
-Enter the master password [Enter to accept default password "changeit"]>
-Using port 8282 for Admin.
-Using default port 8080 for HTTP Instance.
-Using default port 7676 for JMS.
-Using default port 3700 for IIOP.
-Using default port 8181 for HTTP_SSL.
-Using default port 3820 for IIOP_SSL.
-Using default port 3920 for IIOP_MUTUALAUTH.
-Using default port 8686 for JMX_ADMIN.
-Using default port 6666 for OSGI_SHELL.
-Enterprise ServiceDistinguished Name of the self-signed X.509 Server Certificate is:
-[CN=sr1-usca-22,OU=GlassFish,O=Oracle Corp.,L=Redwood Shores,ST=California,C=US]
-No domain initializers found, bypassing customization step
-Domain myDomain created.
-Domain myDomain admin port is 8282.
-Domain myDomain allows admin login as user "admin" with no password.
-Login information relevant to admin user name [admin]
-for this domain [myDomain] stored at
-[/home/someuser/.asadminpass] successfully.
-Make sure that this file remains protected.
-Information stored in this file will be used by
-asadmin commands to manage this domain.
-Command create-domain executed successfully.
-----
-
-[[GSRFM474]][[sthref216]]
-
-Example 4   Creating a Domain and Designating the Certificate Host
-
-This example creates a domain named `domain5`. The common name of the
-host that is to be used for the self-signed certificate is `trio`.
-
-[source,oac_no_warn]
-----
-asadmin> create-domain --adminport 9898 --keytooloptions CN=trio domain5
-Enter the admin password [Enter to accept default of no password]>
-Enter the master password [Enter to accept default password "changeit"]>
-Using port 9898 for Admin.
-Using default port 8080 for HTTP Instance.
-Using default port 7676 for JMS.
-Using default port 3700 for IIOP.
-Using default port 8181 for HTTP_SSL.
-Using default port 3820 for IIOP_SSL.
-Using default port 3920 for IIOP_MUTUALAUTH.
-Using default port 8686 for JMX_ADMIN.
-Using default port 6666 for OSGI_SHELL.
-Distinguished Name of the self-signed X.509 Server Certificate is:
-[CN=trio,OU=GlassFish,O=Oracle Corp.,L=Redwood Shores,ST=California,C=US]
-No domain initializers found, bypassing customization step
-Domain domain5 created.
-Domain domain5 admin port is 9898.
-Domain domain5 allows admin login as user "admin" with no password.
-Command create-domain executed successfully.
-----
-
-[[sthref217]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref218]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-domain.html#delete-domain-1[`delete-domain`(1)],
-link:list-domains.html#list-domains-1[`list-domains`(1)],
-link:login.html#login-1[`login`(1)],
-link:start-domain.html#start-domain-1[`start-domain`(1)],
-link:stop-domain.html#stop-domain-1[`stop-domain`(1)]
-
-Apache Felix Remote Shell
-(`http://felix.apache.org/site/apache-felix-remote-shell.html`), Java
-Platform Debugger Architecture (JPDA)
-(`http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html`)
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-file-user.adoc b/docs/reference-manual/src/main/jbake/content/create-file-user.adoc
deleted file mode 100644
index 2cfdcca..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-file-user.adoc
+++ /dev/null
@@ -1,119 +0,0 @@
-type=page
-status=published
-title=create-file-user
-next=create-http.html
-prev=create-domain.html
-~~~~~~
-create-file-user
-================
-
-[[create-file-user-1]][[GSRFM00024]][[create-file-user]]
-
-create-file-user
-----------------
-
-creates a new file user
-
-[[sthref219]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-file-user [--help] 
-[--authrealmnameauth_realm_name] 
-[--target target 
-[--groups user_groups[:user_groups]*] user_name
-----
-
-[[sthref220]]
-
-Description
-
-The `create-file-user` subcommand creates an entry in the keyfile with
-the specified username, password, and groups. Multiple groups can be
-created by separating them with a colon (`:`). If auth_realm_name is not
-specified, an entry is created in the keyfile for the default realm. If
-auth_realm_name is specified, an entry is created in the keyfile using
-the `auth_realm_name`.
-
-You can use the `--passwordfile` option of the
-link:asadmin.html#asadmin-1m[`asadmin`(1M)] command to specify the
-password for the user. The password file entry must be of the form
-`AS_ADMIN_USERPASSWORD=`user-password.
-
-If a password is not provided, this subcommand fails if secure
-administration is enabled and the user being created is an
-administrative user.
-
-This subcommand is supported in remote mode only.
-
-[[sthref221]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  This is the name of the target on which the command operates. The
-  valid targets are config, instance, cluster, or server. By default,
-  the target is the server.
-`--groups`::
-  This is the group associated with this file user.
-`--authrealmname`::
-  The name of the realm in which the new user is created. If you do not
-  specify this option, the user is created in the "file" realm.
-
-[[sthref222]]
-
-Operands
-
-user_name::
-  This is the name of file user to be created.
-
-[[sthref223]]
-
-Examples
-
-[[GSRFM475]][[sthref224]]
-
-Example 1   Creating a User in the File Realm
-
-This example creates a file realm user named `sample_user`. It is
-assumed that an authentication realm has already been created using the
-`create-auth-realm` subcommand.
-
-[source,oac_no_warn]
-----
-asadmin> create-file-user 
---groups staff:manager 
---authrealmname auth-realm1 sample_user
-Command create-file-user executed successfully
-----
-
-[[sthref225]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref226]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-auth-realm.html#create-auth-realm-1[`create-auth-realm`(1)],
-link:delete-file-user.html#delete-file-user-1[`delete-file-user`(1)],
-link:list-file-groups.html#list-file-groups-1[`list-file-groups`(1)],
-link:list-file-users.html#list-file-users-1[`list-file-users`(1)],
-link:update-file-user.html#update-file-user-1[`update-file-user`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-http-health-checker.adoc b/docs/reference-manual/src/main/jbake/content/create-http-health-checker.adoc
deleted file mode 100644
index 55f26a2..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-http-health-checker.adoc
+++ /dev/null
@@ -1,119 +0,0 @@
-type=page
-status=published
-title=create-http-health-checker
-next=create-http-lb.html
-prev=create-http.html
-~~~~~~
-create-http-health-checker
-==========================
-
-[[create-http-health-checker-1]][[GSRFM00026]][[create-http-health-checker]]
-
-create-http-health-checker
---------------------------
-
-creates a health-checker for a specified load balancer configuration
-
-[[sthref235]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-http-health-checker [--help] 
-[--url "/"]
-[--interval 30] [--timeout 10]
-[--config config_name] target
-----
-
-[[sthref236]]
-
-Description
-
-The `create-http-health-checker` subcommand creates a health checker for
-a specified load balancer configuration. A health checker is unique for
-the combination of target and load balancer configuration.
-
-
-[NOTE]
-=======================================================================
-
-This subcommand is only applicable to Oracle GlassFish Server. This
-subcommand is not applicable to GlassFish Server Open Source Edition.
-
-=======================================================================
-
-
-[[sthref237]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--url`::
-  The URL to ping to determine whether the instance is healthy.
-`--interval`::
-  The interval in seconds the health checker waits between checks of an
-  unhealthy instance to see whether it has become healthy. The default
-  value is 30 seconds. A value of 0 disables the health checker.
-`--timeout`::
-  The interval in seconds the health checker waits to receive a response
-  from an instance. If the health checker has not received a response in
-  this interval, the instance is considered unhealthy.
-`--config`::
-  The load balancer configuration for which you create the
-  health-checker. If you do not specify a configuration, the subcommand
-  creates a health checker for every load balancer configuration
-  associated with the target. If no configuration references the target,
-  the subcommand fails.
-
-[[sthref238]]
-
-Operands
-
-target::
-  Specifies the target to which the health checker applies. +
-  Valid values are: +
-  * cluster_name- The name of a target cluster.
-  * instance_name- The name of a target server instance.
-
-[[sthref239]]
-
-Examples
-
-[[GSRFM477]][[sthref240]]
-
-Example 1   Creating a Health Checker for a Load Balancer Configuration
-
-This example creates a health checker for a load balancer configuration
-named `mycluster-http-lb-config` on a cluster named `mycluster`.
-
-[source,oac_no_warn]
-----
-asadmin> create-http-health-checker --config mycluster-http-lb-config mycluster
-
-Command create-http-health-checker executed successfully.
-----
-
-[[sthref241]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref242]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-http-health-checker.html#delete-http-health-checker-1[`delete-http-health-checker`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-http-lb-config.adoc b/docs/reference-manual/src/main/jbake/content/create-http-lb-config.adoc
deleted file mode 100644
index 67c6133..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-http-lb-config.adoc
+++ /dev/null
@@ -1,148 +0,0 @@
-type=page
-status=published
-title=create-http-lb-config
-next=create-http-lb-ref.html
-prev=create-http-lb.html
-~~~~~~
-create-http-lb-config
-=====================
-
-[[create-http-lb-config-1]][[GSRFM00028]][[create-http-lb-config]]
-
-create-http-lb-config
----------------------
-
-creates a configuration for the load balancer
-
-[[sthref251]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-http-lb-config [--help] 
-[--responsetimeout 60]
-[httpsrouting=false] [--reloadinterval 60]
-[--monitor=false] [--property (name=value)[:name=value]*]
---target target | config_name
-----
-
-[[sthref252]]
-
-Description
-
-Use the `create-http-lb-config` subcommand to create a load balancer
-configuration. This configuration applies to load balancing in the HTTP
-path. After using this subcommand to create the load balancer
-configuration file, create the load balancer by running
-`create-http-lb`.
-
-You must specify either a target or a configuration name, or both. If
-you do not specify a target, the configuration is created without a
-target and you add one later using `create-http-lb-ref`. If you don't
-specify a configuration name, a name is created based on the target
-name. If you specify both, the configuration is created with the
-specified name, referencing the specified target.
-
-
-[NOTE]
-=======================================================================
-
-This subcommand is only applicable to Oracle GlassFish Server. This
-subcommand is not applicable to GlassFish Server Open Source Edition.
-
-=======================================================================
-
-
-[[sthref253]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--responsetimeout`::
-  The time in seconds within which a server instance must return a
-  response. If no response is received within the time period, the
-  server is considered unhealthy. If set to a positive number, and the
-  request is idempotent, the request is retried. If the request is not
-  idempotent, an error page is returned. If set to 0 no timeout is used.
-  The default is 60.
-`--httpsrouting`::
-  If set to `true`, HTTPS requests to the load balancer result in HTTPS
-  requests to the server instance. If set to `false`, HTTPS requests to
-  the load balancer result in HTTP requests to the server instance. The
-  default is `false`.
-`--reloadinterval`::
-  The interval between checks for changes to the load balancer
-  configuration file `loadbalancer.xml`. When the check detects changes,
-  the configuration file is reloaded. A value of `0` disables reloading.
-`--monitor`::
-  Specifies whether monitoring is enabled. The default is `false`.
-`--routecookie`::
-  This option is deprecated. The value is always `true`.
-`--property`::
-  Optional attribute name/value pairs for configuring the load balancer.
-`--target`::
-  Specifies the target to which the load balancer configuration applies.
-  If you don't specify a target, the load balancer configuration is
-  created without a target. You can specify targets later using the
-  subcommand `create-http-lb-ref`. +
-  Valid values are: +
-  * cluster_name- Specifies that requests for this cluster will be
-  handled by the load balancer.
-  * stand-alone_instance_name- Specifies that requests for this
-  standalone instance will be handled by the load balancer.
-
-[[sthref254]]
-
-Operands
-
-config_name::
-  The name of the new load balancer configuration. This name must not
-  conflict with any other load balancer groups, agents, configurations,
-  clusters, or sever instances in the domain. If you don't specify a
-  name, the load balancer configuration name is based on the target
-  name, target_name`-http-lb-config`.
-
-[[sthref255]]
-
-Examples
-
-[[GSRFM479]][[sthref256]]
-
-Example 1   Creating a Load Balancer Configuration
-
-This example creates a load balancer configuration on a target named
-`mycluster` and load balancer configuration named `mylbconfigname`.
-
-[source,oac_no_warn]
-----
-asadmin> create-http-lb-config --target mycluster mylbconfigname
-
-Command create-http-lb-config executed successfully.
-----
-
-[[sthref257]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref258]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-http-lb-config.html#delete-http-lb-config-1[`delete-http-lb-config`(1)],
-link:list-http-lb-configs.html#list-http-lb-configs-1[`list-http-lb-configs`(1)],
-link:create-http-lb.html#create-http-lb-1[`create-http-lb`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-http-lb-ref.adoc b/docs/reference-manual/src/main/jbake/content/create-http-lb-ref.adoc
deleted file mode 100644
index 34690a4..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-http-lb-ref.adoc
+++ /dev/null
@@ -1,214 +0,0 @@
-type=page
-status=published
-title=create-http-lb-ref
-next=create-http-listener.html
-prev=create-http-lb-config.html
-~~~~~~
-create-http-lb-ref
-==================
-
-[[create-http-lb-ref-1]][[GSRFM00029]][[create-http-lb-ref]]
-
-create-http-lb-ref
-------------------
-
-adds an existing cluster or server instance to an existing load balancer
-configuration or load balancer
-
-[[sthref259]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-http-lb-ref [--help] 
---config config_name | --lbname load_balancer_name 
-[--lbpolicy round-robin] [--lbpolicymodule lb_policy_module] 
-[--healthcheckerurl url] [--healthcheckerinterval 10] 
-[--healthcheckertimeout 10] [--lbenableallinstances=true] 
-[--lbenableallapplications=true] [--lbweight instance=weight[:instance=weight]*] 
-target
-----
-
-[[sthref260]]
-
-Description
-
-Use the `create-http-lb-ref` subcommand to:
-
-* Add an existing cluster or server instance to an existing load
-balancer configuration or load balancer. The load balancer forwards the
-requests to the clustered and standalone instances it references.
-* Set the load balancing policy to round-robin, weighted round-robin, or
-to a user-defined policy.
-* Configure a health checker for the load balancer. Any health checker
-settings defined here apply only to the target. If you do not create a
-health checker with this subcommand, use `create-http-health-checker`.
-* Enable all instances in the target cluster for load balancing, or use
-`enable-http-lb-server` to enable them individually.
-* Enable all applications deployed to the target for load balancing, or
-use `enable-http-lb-application` to enable them individually.
-
-
-[NOTE]
-=======================================================================
-
-This subcommand is only applicable to Oracle GlassFish Server. This
-subcommand is not applicable to GlassFish Server Open Source Edition.
-
-=======================================================================
-
-
-[[sthref261]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--config`::
-  Specifies which load balancer configuration to which to add clusters
-  and server instances. Specify either a load balancer configuration or
-  a load balancer. Specifying both results in an error.
-`--lbname`::
-  Specifies the load balancer to which to add clusters and server
-  instances. Specify either a load balancer configuration or a load
-  balancer. Specifying both results in an error.
-`--lbpolicy`::
-  The policy the load balancer follows. Valid values are `round-robin`,
-  `weighted-round-robin`, and `user-defined`. If you choose
-  user-defined, specify a load balancer policy module with the
-  `lbpolicymodule` option. If you choose `weighted-round-robin` assign
-  weights to the server instances using the `configure-lb-weight`
-  subcommand. The default is `round-robin`.
-`--lbpolicymodule`::
-  If your load balancer policy is `user-defined`, use this option to
-  specify the full path and name of the shared library of your load
-  balancing policy module. The shared library needs to be in a location
-  accessible by the web server.
-`--healthcheckerurl`::
-  The URL to ping to determine whether the instance is healthy.
-`--healthcheckerinterval`::
-  The interval in seconds the health checker waits between checks of an
-  unhealthy instance to see whether it has become healthy. The default
-  value is 30 seconds. A value of 0 disables the health checker.
-`--healthcheckertimeout`::
-  The interval in seconds the health checker waits to receive a response
-  from an instance. If the health checker has not received a response in
-  this interval, the instance is considered unhealthy. The default is
-  10.
-`--lbenableallinstances`::
-  Enables all instances in the target cluster for load balancing. If the
-  target is a server instance, enables that instance for load balancing.
-  The default value is true.
-`--lbenableallapplications`::
-  Enables all applications deployed to the target cluster or instance
-  for load balancing. The default value is true.
-`--lbweight`::
-  The name of the instance and the weight you are assigning it. The
-  weight must be an integer. The pairs of instances and weights are
-  separated by colons. For example `instance1=1:instance2=4` means that
-  for every five requests, one goes to instance1 and four go to
-  instance2. A weight of 1 is the default.
-
-[[sthref262]]
-
-Operands
-
-target::
-  Specifies which cluster or instance to add to the load balancer. Valid
-  values are: +
-  * cluster_name- Specifies that requests for this cluster will be
-  handled by the load balancer.
-  * stand-alone_instance_name- Specifies that requests for this
-  standalone instance will be handled by the load balancer.
-
-[[sthref263]]
-
-Examples
-
-[[GSRFM480]][[sthref264]]
-
-Example 1   Adding a Cluster Reference to a Load Balancer Configuration
-
-This example adds a reference to a cluster named `cluster2` to a load
-balancer configuration named `mylbconfig`.
-
-[source,oac_no_warn]
-----
-asadmin> create-http-lb-ref --config mylbconfig cluster2 
-
-Command create-http-lb-ref executed successfully.
-----
-
-[[GSRFM481]][[sthref265]]
-
-Example 2   Adding a Cluster Reference to a Load Balancer
-
-This example adds a reference to a cluster named `cluster2` to a load
-balancer named `mylb`.
-
-[source,oac_no_warn]
-----
-asadmin> create-http-lb-ref --lbname mylb cluster2 
-
-Command create-http-lb-ref executed successfully.
-----
-
-[[GSRFM482]][[sthref266]]
-
-Example 3   Configuring a Health Checker and Load Balancer Policy
-
-This example configures a health checker and load balancing policy, and
-enables the load balancer for instances and applications.
-
-[source,oac_no_warn]
-----
-asadmin> create-http-lb-ref --config mylbconfig --lbpolicy weighted-round-robin 
---healthcheckerinterval 40 --healthcheckertimeout 20 
---lbenableallinstances=true --lbenableallapplications=true cluster2 
-
-Command create-http-lb-ref executed successfully.
-----
-
-[[GSRFM483]][[sthref267]]
-
-Example 4   Setting a User-Defined Load Balancing Policy
-
-This example sets a user-defined load balancing policy.
-
-[source,oac_no_warn]
-----
-asadmin> create-http-lb-ref --lbpolicy user-defined --lbpolicymodule /user/modules/module.so
---config mylbconfig cluster2
-
-Command create-http-lb-ref executed successfully.
-----
-
-[[sthref268]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref269]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:configure-lb-weight.html#configure-lb-weight-1[`configure-lb-weight`(1)],
-link:create-http-health-checker.html#create-http-health-checker-1[`create-http-health-checker`(1)],
-link:delete-http-lb-ref.html#delete-http-lb-ref-1[`delete-http-lb-ref`(1)],
-link:enable-http-lb-application.html#enable-http-lb-application-1[`enable-http-lb-application`(1)],
-link:enable-http-lb-server.html#enable-http-lb-server-1[`enable-http-lb-server`(1)],
-link:list-http-lb-configs.html#list-http-lb-configs-1[`list-http-lb-configs`(1)],
-link:list-http-lbs.html#list-http-lbs-1[`list-http-lbs`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-http-lb.adoc b/docs/reference-manual/src/main/jbake/content/create-http-lb.adoc
deleted file mode 100644
index 741fb9b..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-http-lb.adoc
+++ /dev/null
@@ -1,189 +0,0 @@
-type=page
-status=published
-title=create-http-lb
-next=create-http-lb-config.html
-prev=create-http-health-checker.html
-~~~~~~
-create-http-lb
-==============
-
-[[create-http-lb-1]][[GSRFM00027]][[create-http-lb]]
-
-create-http-lb
---------------
-
-creates a load balancer
-
-[[sthref243]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-http-lb [--help] 
---devicehost device_host_or_IP_address --deviceport device_port 
-[--sslproxyhost proxy_host] 
-[--sslproxyport proxy_port] [--target target] [--lbpolicy lbpolicy] [--lbpolicymodule lb_policy_module] [--healthcheckerurl url]
-[--healthcheckerinterval 10] [--healthcheckertimeout 10]
-[--lbenableallinstances=true] [--lbenableallapplications=true] [--lbweight instance=weight[:instance=weight]*] [--responsetimeout 60] [--httpsrouting=false] [--reloadinterval60][--monitor=false][--routecookie=true] 
-[--property (name=value)[:name=value]*
-] load_balancer_name
-----
-
-[[sthref244]]
-
-Description
-
-Use the `create-http-lb` subcommand to create a load balancer, including
-the load balancer configuration, target reference, and health checker. A
-load balancer is a representation of the actual load balancer device,
-defined by its device host and port information. Once you've created the
-load balancer, you can automatically apply changes made to the load
-balancer configuration without running `export-http-lb-config` and
-manually copying the generated load balancer configuration file to the
-web server instance.
-
-
-[NOTE]
-=======================================================================
-
-This subcommand is only applicable to Oracle GlassFish Server. This
-subcommand is not applicable to GlassFish Server Open Source Edition.
-
-=======================================================================
-
-
-[[sthref245]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--devicehost`::
-  The device host or the IP address of the load balancing device. This
-  host or IP is where the physical load balancer will reside.
-`--deviceport`::
-  The port used to communicate with the load balancing device. It must
-  be SSL enabled.
-`--sslproxyhost`::
-  The proxy host used for outbound HTTP.
-`--sslproxyport`::
-  The proxy port used for outbound HTTP.
-`--target`::
-  Specifies the target to which the load balancer applies. +
-  Valid values are: +
-  * cluster_name- Specifies that requests for this cluster will be
-  handled by the load balancer.
-  * stand-alone_instance_name- Specifies that requests for this
-  stand-alone instance will be handled by the load balancer.
-`--lbpolicy`::
-  The policy the load balancer follows to distribute load to the server
-  instances in a cluster. Valid values are `round-robin`,
-  `weighted-round-robin`, and `user-defined`. If you choose
-  `user-defined`, specify a load balancer policy module with the
-  `lbpolicymodule` option. If you choose `weighted-round-robin`, assign
-  weights to the server instances using the `configure-lb-weight`
-  subcommand. The default is `round-robin`.
-`--lbpolicymodule`::
-  If your target is a cluster and the load balancer policy is
-  `user-defined`, use this option to specify the full path and name of
-  the shared library of your load balancing policy module. The shared
-  library needs to be in a location accessible by the web server.
-`--healthcheckerurl`::
-  The URL to ping to determine whether the instance is healthy.
-`--healthcheckerinterval`::
-  The interval in seconds the health checker waits between checks of an
-  unhealthy instance to see whether it has become healthy. The default
-  value is 10 seconds. A value of 0 disables the health checker.
-`--healthcheckertimeout`::
-  The interval in seconds the health checker waits to receive a response
-  from an instance. If the health checker has not received a response in
-  this interval, the instance is considered unhealthy. The default value
-  is 10 seconds.
-`--lbenableallinstances`::
-  Enables all instances in the target cluster for load balancing. If the
-  target is a server instance, enables that instance for load balancing.
-`--lbenableallapplications`::
-  Enables all applications deployed to the target cluster or instance
-  for load balancing.
-`--lbweight`::
-  The name of the instance and the weight you are assigning it. The
-  weight must be an integer. The pairs of instances and weights are
-  separated by colons. For example `instance1=1:instance2=4` means that
-  for every five requests, one goes to instance1 and four go to
-  instance2. A weight of 1 is the default.
-`--responsetimeout`::
-  The time in seconds within which a server instance must return a
-  response. If no response is received within the time period, the
-  server is considered unhealthy. If set to a positive number, and the
-  request is idempotent, the request is retried. If the request is not
-  idempotent, an error page is returned. If set to 0 no timeout is used.
-  The default is 60.
-`--httpsrouting`::
-  If set to `true`, HTTPS requests to the load balancer result in HTTPS
-  requests to the server instance. If set to `false`, HTTPS requests to
-  the load balancer result in HTTP requests to the server instance. The
-  default is `false`.
-`--reloadinterval`::
-  The time, in seconds, that the load balancer takes to check for an
-  updated configuration. When detected, the configuration file is
-  reloaded. The default value is 60 seconds. A value of 0 disables
-  reloading.
-`--monitor`::
-  If set to `true`, monitoring of the load balancer is switched on. The
-  default value is `false`.
-`--routecookie`::
-  This option is deprecated. The value is always true.
-`--property`::
-  Optional attribute name/value pairs for configuring the load balancer.
-
-[[sthref246]]
-
-Operands
-
-lb_name::
-  The name of the new load balancer. This name must not conflict with
-  any other load balancers in the domain.
-
-[[sthref247]]
-
-Examples
-
-[[GSRFM478]][[sthref248]]
-
-Example 1   Creating a Load Balancer
-
-This example creates a load balancer named `mylb`.
-
-[source,oac_no_warn]
-----
-asadmin> create-http-lb 
---devicehost host1 --deviceport 5555 mylb
-
-Command create-http-lb executed successfully.
-----
-
-[[sthref249]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref250]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-http-lb.html#delete-http-lb-1[`delete-http-lb`(1)],
-link:list-http-lbs.html#list-http-lbs-1[`list-http-lbs`(1)],
-link:create-http-lb-config.html#create-http-lb-config-1[`create-http-lb-config`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-http-listener.adoc b/docs/reference-manual/src/main/jbake/content/create-http-listener.adoc
deleted file mode 100644
index 117539b..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-http-listener.adoc
+++ /dev/null
@@ -1,186 +0,0 @@
-type=page
-status=published
-title=create-http-listener
-next=create-http-redirect.html
-prev=create-http-lb-ref.html
-~~~~~~
-create-http-listener
-====================
-
-[[create-http-listener-1]][[GSRFM00030]][[create-http-listener]]
-
-create-http-listener
---------------------
-
-adds a new HTTP network listener socket
-
-[[sthref270]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-http-listener [--help] 
---listeneraddress address 
---listenerport listener-port 
-{--default-virtual-server | --defaultvs} virtual-server 
-[--servername server-name] 
-[--acceptorthreads acceptor-threads] 
-[--xpowered={true|false}] 
-[--redirectport redirect-port] 
-[--securityenabled={false|true}] 
-[--enabled={true|false}] 
-[--target target]
-listener-id
-----
-
-[[sthref271]]
-
-Description
-
-The `create-http-listener` subcommand creates an HTTP network listener.
-This subcommand is supported in remote mode only.
-
-
-[NOTE]
-=======================================================================
-
-If you edit the special HTTP network listener named `admin-listener`,
-you must restart the server for the changes to take effect. The
-Administration Console does not tell you that a restart is required in
-this case.
-
-=======================================================================
-
-
-
-[NOTE]
-=======================================================================
-
-This subcommand is provided for backward compatibility and as a shortcut
-for creating network listeners that use the HTTP protocol. Behind the
-scenes, this subcommand creates a network listener and its associated
-protocol, transport, and HTTP configuration.
-
-=======================================================================
-
-
-[[sthref272]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--listeneraddress`::
-  The IP address or the hostname (resolvable by DNS).
-`--listenerport`::
-  The port number to create the listen socket on. Legal values are
-  1-65535. On UNIX, creating sockets that listen on ports 1-1024
-  requires superuser privileges. Configuring an SSL listen socket to
-  listen on port 443 is recommended.
-`--default-virtual-server`::
-`--defaultvs`::
-  The ID attribute of the default virtual server for this listener. The
-  `--defaultvs` option is deprecated.
-`--servername`::
-  Tells the server what to put in the host name section of any URLs it
-  sends to the client. This affects URLs the server automatically
-  generates; it doesn't affect the URLs for directories and files stored
-  in the server. This name should be the alias name if your server uses
-  an alias. If a colon and port number are appended, that port will be
-  used in URLs that the server sends to the client.
-`--acceptorthreads`::
-  The number of acceptor threads for the listener socket. The
-  recommended value is the number of processors in the machine. The
-  default value is 1.
-`--xpowered`::
-  If set to `true`, adds the `X-Powered-By: Servlet/3.0` and
-  `X-Powered-By: JSP/2.0` headers to the appropriate responses. The
-  Servlet 3.0 specification defines the `X-Powered-By: Servlet/3.0`
-  header, which containers may add to servlet-generated responses.
-  Similarly, the JSP 2.0 specification defines the
-  `X-Powered-By: JSP/2.0` header, which containers may add to responses
-  that use JSP technology. The goal of these headers is to aid in
-  gathering statistical data about the use of Servlet and JSP
-  technology. The default value is `true`.
-`--redirectport`::
-  Do not specify this option. This option is retained for compatibility
-  with earlier releases. If you specify this option, a syntax error does
-  not occur. Instead, the subcommand runs successfully and displays a
-  warning message that the option is ignored.
-`--securityenabled`::
-  If set to true, the HTTP listener runs SSL. You can turn SSL2 or SSL3
-  ON or OFF and set ciphers using an SSL element. The security setting
-  globally enables or disables SSL by making certificates available to
-  the server instance. The default value is `false`.
-`--enabled`::
-  If set to true, the listener is enabled at runtime. The default value
-  is `true`.
-`--target`::
-  Creates the HTTP listener only on the specified target. Valid values
-  are as follows: +
-  `server`;;
-    Creates the HTTP listener on the default server instance. This is
-    the default value.
-  configuration-name;;
-    Creates the HTTP listener in the specified configuration.
-  cluster-name;;
-    Creates the HTTP listener on all server instances in the specified
-    cluster.
-  standalone-instance-name;;
-    Creates the HTTP listener on the specified standalone server
-    instance.
-
-[[sthref273]]
-
-Operands
-
-listener-id::
-  The listener ID of the HTTP network listener.
-
-[[sthref274]]
-
-Examples
-
-[[GSRFM484]][[sthref275]]
-
-Example 1   Creating an HTTP Network Listener
-
-The following command creates an HTTP network listener named
-`sampleListener` that uses a nondefault number of acceptor threads and
-is not enabled at runtime:
-
-[source,oac_no_warn]
-----
-asadmin> create-http-listener --listeneraddress 0.0.0.0 --listenerport 7272 
---defaultvs server --servername host1.sun.com --acceptorthreads 100 
---securityenabled=false --enabled=false sampleListener
-Command create-http-listener executed successfully.
-----
-
-[[sthref276]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref277]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-ssl.html#create-ssl-1[`create-ssl`(1)],
-link:create-network-listener.html#create-network-listener-1[`create-network-listener`(1)],
-link:create-virtual-server.html#create-virtual-server-1[`create-virtual-server`(1)],
-link:delete-http-listener.html#delete-http-listener-1[`delete-http-listener`(1)],
-link:list-http-listeners.html#list-http-listeners-1[`list-http-listeners`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-http-redirect.adoc b/docs/reference-manual/src/main/jbake/content/create-http-redirect.adoc
deleted file mode 100644
index 8606db0..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-http-redirect.adoc
+++ /dev/null
@@ -1,94 +0,0 @@
-type=page
-status=published
-title=create-http-redirect
-next=create-iiop-listener.html
-prev=create-http-listener.html
-~~~~~~
-create-http-redirect
-====================
-
-[[create-http-redirect-1]][[GSRFM00031]][[create-http-redirect]]
-
-create-http-redirect
---------------------
-
-adds a new HTTP redirect
-
-[[sthref278]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-http-redirect [--help]
-[--redirect-port redirect-port] 
-[--secure-redirect={false|true}] 
-[--target target]
-protocol-name
-----
-
-[[sthref279]]
-
-Description
-
-The `create-http-redirect` subcommand creates an HTTP redirect. This
-subcommand is supported in remote mode only.
-
-[[sthref280]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--redirect-port`::
-  Port number for redirects. If the HTTP listener is supporting non-SSL
-  requests, and a request is received for which a matching
-  security-constraint requires SSL transport, \{product---name}
-  automatically redirects the request to this port number.
-`--secure-redirect`::
-  If set to true, the HTTP redirect runs SSL. The default value is
-  `false`.
-`--target`::
-  Creates the HTTP redirect only on the specified target. Valid values
-  are as follows: +
-  `server`;;
-    Creates the HTTP redirect on the default server instance. This is
-    the default value.
-  configuration-name;;
-    Creates the HTTP redirect in the specified configuration.
-  cluster-name;;
-    Creates the HTTP redirect on all server instances in the specified
-    cluster.
-  standalone-instance-name;;
-    Creates the HTTP redirect on the specified standalone server
-    instance.
-
-[[sthref281]]
-
-Operands
-
-protocol-name::
-  The name of the protocol to which to apply the redirect.
-
-[[sthref282]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref283]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-http-redirect.html#delete-http-redirect-1[`delete-http-redirect`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-http.adoc b/docs/reference-manual/src/main/jbake/content/create-http.adoc
deleted file mode 100644
index 4f1ce3b..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-http.adoc
+++ /dev/null
@@ -1,136 +0,0 @@
-type=page
-status=published
-title=create-http
-next=create-http-health-checker.html
-prev=create-file-user.html
-~~~~~~
-create-http
-===========
-
-[[create-http-1]][[GSRFM00025]][[create-http]]
-
-create-http
------------
-
-sets HTTP parameters for a protocol
-
-[[sthref227]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-http [--help]
---default-virtual-server virtual-server 
-[--request-timeout-seconds timeout] 
-[--timeout-seconds timeout] 
-[--max-connection max-keepalive] 
-[--dns-lookup-enabled={false|true}] 
-[--servername server-name]
-[--target target]
-protocol-name
-----
-
-[[sthref228]]
-
-Description
-
-The `create-http` subcommand creates a set of HTTP parameters for a
-protocol, which in turn configures one or more network listeners. This
-subcommand is supported in remote mode only.
-
-[[sthref229]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--default-virtual-server`::
-  The ID attribute of the default virtual server for the associated
-  network listeners.
-`--request-timeout-seconds`::
-  The time in seconds at which the request times out. If you do not set
-  this option, the request times out in 30 seconds.
-`--timeout-seconds`::
-  The maximum time in seconds for which a keep alive connection is kept
-  open. A value of `0` or less means keep alive connections are kept
-  open indefinitely. The default is `30`.
-`--max-connection`::
-  The maximum number of HTTP requests that can be pipelined until the
-  connection is closed by the server. Set this property to `1` to
-  disable HTTP/1.0 keep-alive, as well as HTTP/1.1 keep-alive and
-  pipelining. The default is `256`.
-`--dns-lookup-enabled`::
-  If set to `true`, looks up the DNS entry for the client. The default
-  is `false`.
-`--servername`::
-  Tells the server what to put in the host name section of any URLs it
-  sends to the client. This affects URLs the server automatically
-  generates; it doesn't affect the URLs for directories and files stored
-  in the server. This name should be the alias name if your server uses
-  an alias. If a colon and port number are appended, that port will be
-  used in URLs that the server sends to the client.
-`--target`::
-  Creates the set of HTTP parameters only on the specified target. Valid
-  values are as follows: +
-  `server`;;
-    Creates the set of HTTP parameters on the default server instance.
-    This is the default value.
-  configuration-name;;
-    Creates the set of HTTP parameters in the specified configuration.
-  cluster-name;;
-    Creates the set of HTTP parameters on all server instances in the
-    specified cluster.
-  standalone-instance-name;;
-    Creates the set of HTTP parameters on the specified standalone
-    server instance.
-
-[[sthref230]]
-
-Operands
-
-protocol-name::
-  The name of the protocol to which this HTTP parameter set applies.
-
-[[sthref231]]
-
-Examples
-
-[[GSRFM476]][[sthref232]]
-
-Example 1   Using the `create-http` Subcommand
-
-The following command creates an HTTP parameter set for the protocol
-named `http-1`:
-
-[source,oac_no_warn]
-----
-asadmin> create-http --timeout-seconds 60 --default-virtual-server server http-1
-Command create-http executed successfully.
-----
-
-[[sthref233]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref234]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-network-listener.html#create-network-listener-1[`create-network-listener`(1)],
-link:create-protocol.html#create-protocol-1[`create-protocol`(1)],
-link:create-virtual-server.html#create-virtual-server-1[`create-virtual-server`(1)],
-link:delete-http.html#delete-http-1[`delete-http`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-iiop-listener.adoc b/docs/reference-manual/src/main/jbake/content/create-iiop-listener.adoc
deleted file mode 100644
index 984f27f..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-iiop-listener.adoc
+++ /dev/null
@@ -1,132 +0,0 @@
-type=page
-status=published
-title=create-iiop-listener
-next=create-instance.html
-prev=create-http-redirect.html
-~~~~~~
-create-iiop-listener
-====================
-
-[[create-iiop-listener-1]][[GSRFM00032]][[create-iiop-listener]]
-
-create-iiop-listener
---------------------
-
-adds an IIOP listener
-
-[[sthref284]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-iiop-listener [--help] 
---listeneraddress address
-[--iiopport iiop-port-number] [--securityenabled={false|true}] [--enabled={true|false}] 
-[--property (name=value)[:name=value]*]
-[--target target] listener_id
-----
-
-[[sthref285]]
-
-Description
-
-The `create-iiop-listener` subcommand creates an IIOP listener. This
-subcommand is supported in remote mode only.
-
-[[sthref286]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--listeneraddress`::
-  Either the IP address or the hostname (resolvable by DNS).
-`--iiopport`::
-  The IIOP port number. The default value is 1072.
-`--securityenabled`::
-  If set to true, the IIOP listener runs SSL. You can turn SSL2 or SSL3
-  ON or OFF and set ciphers using an SSL element. The security setting
-  globally enables or disables SSL by making certificates available to
-  the server instance. The default value is `false`.
-`--enabled`::
-  If set to true, the IIOP listener is enabled at runtime. The default
-  value is `true`.
-`--property`::
-  Optional attribute name/value pairs for configuring the IIOP listener.
-`--target`::
-  Specifies the target for which you are creating the IIOP listener.
-  Valid values are +
-  `server`;;
-    Creates the listener for the default server instance `server` and is
-    the default value.
-  configuration_name;;
-    Creates the listener for the named configuration.
-  cluster_name;;
-    Creates the listener for every server instance in the cluster.
-  stand-alone_instance_name;;
-    Creates the listener for a particular standalone server instance.
-
-[[sthref287]]
-
-Operands
-
-listener_id::
-  A unique identifier for the IIOP listener to be created.
-
-[[sthref288]]
-
-Examples
-
-[[GSRFM485]][[sthref289]]
-
-Example 1   Creating an IIOP Listener
-
-The following command creates an IIOP listener named
-`sample_iiop_listener`:
-
-[source,oac_no_warn]
-----
-asadmin> create-iiop-listener --listeneraddress 192.168.1.100 
---iiopport 1400 sample_iiop_listener
-Command create-iiop-listener executed successfully.
-----
-
-[[GSRFM486]][[sthref290]]
-
-Example 2   Creating an IIOP Listener with a Target Cluster
-
-The following command creates an IIOP listener named `iiop_listener_2`
-for the cluster `mycluster`. It uses the target option.
-
-[source,oac_no_warn]
-----
-asadmin> create-iiop-listener --listeneraddress 0.0.0.0 --iiopport 1401 
---target mycluster iiop_listener_2
-Command create-iiop-listener executed successfully.
-----
-
-[[sthref291]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref292]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-ssl.html#create-ssl-1[`create-ssl`(1)],
-link:delete-iiop-listener.html#delete-iiop-listener-1[`delete-iiop-listener`(1)],
-link:list-iiop-listeners.html#list-iiop-listeners-1[`list-iiop-listeners`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-instance.adoc b/docs/reference-manual/src/main/jbake/content/create-instance.adoc
deleted file mode 100644
index 9f9bc6a..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-instance.adoc
+++ /dev/null
@@ -1,394 +0,0 @@
-type=page
-status=published
-title=create-instance
-next=create-jacc-provider.html
-prev=create-iiop-listener.html
-~~~~~~
-create-instance
-===============
-
-[[create-instance-1]][[GSRFM00033]][[create-instance]]
-
-create-instance
----------------
-
-creates a \{product---name} instance
-
-[[sthref293]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-instance [--help] 
---node node-name 
-[--config config-name | --cluster cluster-name] 
-[--lbenabled={true|false}]
-[--portbase=port-number] [--checkports={true|false}]
-[--systemproperties (name=value)[:name=value]* ] 
-instance-name
-----
-
-[[sthref294]]
-
-Description
-
-The `create-instance` subcommand creates a \{product---name} instance.
-This subcommand requires the Distributed Component Object Model (DCOM)
-remote protocol or secure shell (SSH) to be configured on the host where
-the domain administration server (DAS) is running and on the host that
-is represented by the node where the instance is to reside.
-
-
-[NOTE]
-=======================================================================
-
-DCOM or SSH is not required if the instance is to reside on a node of
-type `CONFIG` that represents the local host. A node of type `CONFIG` is
-not enabled for remote communication over DCOM or SSH.
-
-=======================================================================
-
-
-You may run this command from any host that can contact the DAS.
-
-A \{product---name} instance is a single Virtual Machine for the Java
-platform (Java Virtual Machine or JVM machine) on a single node in which
-\{product---name} is running. A node defines the host where the
-\{product---name} instance resides. The JVM machine must be compatible
-with the Java Platform, Enterprise Edition (Java EE).
-
-A \{product---name} instance requires a reference to the following
-items:
-
-* The node that defines the host where the instance resides. The node
-must be specified in the command to create the instance.
-* The named configuration that defines the configuration of the
-instance. The configuration can be specified in the command to create
-the instance, but is not required. If no configuration is specified for
-an instance that is not joining a cluster, the subcommand creates a
-configuration for the instance. An instance that is joining a cluster
-receives its configuration from its parent cluster.
-
-Each \{product---name} instance is one of the following types of
-instance:
-
-Standalone instance::
-  A standalone instance does not share its configuration with any other
-  instances or clusters. A standalone instance is created if either of
-  the following conditions is met: +
-  * No configuration or cluster is specified in the command to create
-  the instance.
-  * A configuration that is not referenced by any other instances or
-  clusters is specified in the command to create the instance. +
-  When no configuration or cluster is specified, a copy of the
-  `default-config` configuration is created for the instance. The name
-  of this configuration is instance-name`-config`, where instance-name
-  represents the name of an unclustered server instance.
-Shared instance::
-  A shared instance shares its configuration with other instances or
-  clusters. A shared instance is created if a configuration that is
-  referenced by other instances or clusters is specified in the command
-  to create the instance.
-Clustered instance::
-  A clustered instance inherits its configuration from the cluster to
-  which the instance belongs and shares its configuration with other
-  instances in the cluster. A clustered instance is created if a cluster
-  is specified in the command to create the instance. +
-  Any instance that is not part of a cluster is considered an
-  unclustered server instance. Therefore, standalone instances and
-  shared instances are unclustered server instances.
-
-By default, this subcommand attempts to resolve possible port conflicts
-for the instance that is being created. The subcommand also assigns
-ports that are currently not in use and not already assigned to other
-instances on the same node. The subcommand assigns these ports on the
-basis of an algorithm that is internal to the subcommand. Use the
-`--systemproperties` option to resolve port conflicts for additional
-instances on the same node. System properties of an instance can be
-manipulated by using the
-link:create-system-properties.html#create-system-properties-1[`create-system-properties`(1)]
-subcommand and the
-link:delete-system-property.html#delete-system-property-1[`delete-system-property`(1)]
-subcommand.
-
-This subcommand is supported in remote mode only.
-
-[[sthref295]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--node`::
-  The name of the node that defines the host where the instance is to be
-  created. The node must already exist. If the instance is to be created
-  on the host where the domain administration server (DAS) is running,
-  use the predefined node `localhost-`domain.
-`--config`::
-  Specifies the named configuration that the instance references. The
-  configuration must exist and must not be named `default-config` or
-  `server-config`. Specifying the `--config` option creates a shared
-  instance. +
-  The `--config` option and the `--cluster` option are mutually
-  exclusive. If both options are omitted, a standalone instance is
-  created.
-`--cluster`::
-  Specifies the cluster from which the instance inherits its
-  configuration. Specifying the `--cluster` option creates a clustered
-  instance. +
-  The `--config` option and the `--cluster` option are mutually
-  exclusive. If both options are omitted, a standalone instance is
-  created.
-`--lbenabled`::
-  Specifies whether the instance is enabled for load balancing. Possible
-  values are as follows: +
-  `true`;;
-    The instance is enabled for load balancing (default). +
-    When an instance is enabled for load balancing, a load balancer
-    sends requests to the instance.
-  `false`;;
-    The instance is disabled for load balancing. +
-    When an instance is disabled for load balancing, a load balancer
-    does not send requests to the instance.
-`--portbase`::
-  Determines the number with which the port assignment should start. An
-  instance uses a certain number of ports that are statically assigned.
-  The portbase value determines where the assignment should start. The
-  values for the ports are calculated as follows: +
-  * Administration port: portbase + 48
-  * HTTP listener port: portbase + 80
-  * HTTPS listener port: portbase + 81
-  * JMS port: portbase + 76
-  * IIOP listener port: portbase + 37
-  * Secure IIOP listener port: portbase + 38
-  * Secure IIOP with mutual authentication port: portbase + 39
-  * JMX port: portbase + 86
-  * JPA debugger port: portbase + 9
-  * Felix shell service port for OSGi module management: portbase + 66 +
-  When the `--portbase` option is specified, the output of this
-  subcommand includes a complete list of used ports.
-`--checkports`::
-  Specifies whether to check for the availability of the administration,
-  HTTP, JMS, JMX, and IIOP ports. The default value is `true`.
-`--systemproperties`::
-  Defines system properties for the instance. These properties override
-  property definitions for port settings in the instance's
-  configuration. Predefined port settings must be overridden if, for
-  example, two clustered instances reside on the same host. In this
-  situation, port settings for one instance must be overridden because
-  both instances share the same configuration. +
-  The following properties are available: +
-  `ASADMIN_LISTENER_PORT`;;
-    This property specifies the port number of the HTTP port or HTTPS
-    port through which the DAS connects to the instance to manage the
-    instance. Valid values are 1-65535. On UNIX, creating sockets that
-    listen on ports 1-1024 requires superuser privileges.
-  `HTTP_LISTENER_PORT`;;
-    This property specifies the port number of the port that is used to
-    listen for HTTP requests. Valid values are 1-65535. On UNIX,
-    creating sockets that listen on ports 1-1024 requires superuser
-    privileges.
-  `HTTP_SSL_LISTENER_PORT`;;
-    This property specifies the port number of the port that is used to
-    listen for HTTPS requests. Valid values are 1-65535. On UNIX,
-    creating sockets that listen on ports 1-1024 requires superuser
-    privileges.
-  `IIOP_LISTENER_PORT`;;
-    This property specifies the port number of the port that is used for
-    IIOP connections. Valid values are 1-65535. On UNIX, creating
-    sockets that listen on ports 1-1024 requires superuser privileges.
-  `IIOP_SSL_LISTENER_PORT`;;
-    This property specifies the port number of the port that is used for
-    secure IIOP connections. Valid values are 1-65535. On UNIX, creating
-    sockets that listen on ports 1-1024 requires superuser privileges.
-  `IIOP_SSL_MUTUALAUTH_PORT`;;
-    This property specifies the port number of the port that is used for
-    secure IIOP connections with client authentication. Valid values are
-    1-65535. On UNIX, creating sockets that listen on ports 1-1024
-    requires superuser privileges.
-  `JAVA_DEBUGGER_PORT`;;
-    This property specifies the port number of the port that is used for
-    connections to the Java Platform Debugger Architecture (JPDA)
-    (http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html)
-    debugger. Valid values are 1-65535. On UNIX, creating sockets that
-    listen on ports 1-1024 requires superuser privileges.
-  `JMS_PROVIDER_PORT`;;
-    This property specifies the port number for the Java Message Service
-    provider. Valid values are 1-65535. On UNIX, creating sockets that
-    listen on ports 1-1024 requires superuser privileges.
-  `JMX_SYSTEM_CONNECTOR_PORT`;;
-    This property specifies the port number on which the JMX connector
-    listens. Valid values are 1-65535. On UNIX, creating sockets that
-    listen on ports 1-1024 requires superuser privileges.
-  `OSGI_SHELL_TELNET_PORT`;;
-    This property specifies the port number of the port that is used for
-    connections to the Apache Felix Remote Shell
-    (`http://felix.apache.org/site/apache-felix-remote-shell.html`).
-    This shell uses the Felix shell service to interact with the OSGi
-    module management subsystem. Valid values are 1-65535. On UNIX,
-    creating sockets that listen on ports 1-1024 requires superuser
-    privileges.
-
-[[sthref296]]
-
-Operands
-
-instance-name::
-  The name of the instance that is being created. +
-  The name must meet the following requirements: +
-  * The name may contain only ASCII characters.
-  * The name must start with a letter, a number, or an underscore.
-  * The name may contain only the following characters:
-  ** Lowercase letters
-  ** Uppercase letters
-  ** Numbers
-  ** Hyphen
-  ** Period
-  ** Underscore
-  * The name must be unique in the domain and must not be the name of
-  another \{product---name} instance, a cluster, a named configuration,
-  or a node.
-  * The name must not be `domain`, `server`, or any other keyword that
-  is reserved by \{product---name}.
-
-[[sthref297]]
-
-Examples
-
-[[GSRFM487]][[sthref298]]
-
-Example 1   Creating a Standalone \{product---name} Instance
-
-This example creates the standalone \{product---name} instance
-`pmdsainst` in the domain `domain1` on the local host.
-
-[source,oac_no_warn]
-----
-asadmin> create-instance --node localhost-domain1 pmdsainst
-Port Assignments for server instance pmdsainst: 
-JMX_SYSTEM_CONNECTOR_PORT=28688
-JMS_PROVIDER_PORT=27678
-ASADMIN_LISTENER_PORT=24850
-HTTP_LISTENER_PORT=28082
-IIOP_LISTENER_PORT=23702
-IIOP_SSL_LISTENER_PORT=23822
-HTTP_SSL_LISTENER_PORT=28183
-IIOP_SSL_MUTUALAUTH_PORT=23922
-
-Command create-instance executed successfully.
-----
-
-[[GSRFM488]][[sthref299]]
-
-Example 2   Creating a Standalone \{product---name} Instance With Custom
-Port Assignments
-
-This example creates the standalone \{product---name} instance
-`pmdcpinst` in the domain `domain1` on the local host. Custom port
-numbers are assigned to the following ports:
-
-* HTTP listener port
-* HTTPS listener port
-* IIOP connections port
-* Secure IIOP connections port
-* Secure IIOP connections port with mutual authentication
-* JMX connector port
-
-[source,oac_no_warn]
-----
-asadmin> create-instance --node localhost-domain1
---systemproperties HTTP_LISTENER_PORT=58294:
-HTTP_SSL_LISTENER_PORT=58297:
-IIOP_LISTENER_PORT=58300:
-IIOP_SSL_LISTENER_PORT=58303:
-IIOP_SSL_MUTUALAUTH_PORT=58306:
-JMX_SYSTEM_CONNECTOR_PORT=58309 pmdcpinst
-Port Assignments for server instance pmdcpinst: 
-JMS_PROVIDER_PORT=27679
-ASADMIN_LISTENER_PORT=24851
-
-Command create-instance executed successfully.
-----
-
-[[GSRFM489]][[sthref300]]
-
-Example 3   Creating a Shared \{product---name} Instance
-
-This example creates the shared \{product---name} instance
-`pmdsharedinst1` in the domain `domain1` on the local host. The shared
-configuration of this instance is `pmdsharedconfig`.
-
-[source,oac_no_warn]
-----
-asadmin create-instance --node localhost-domain1 --config pmdsharedconfig 
-pmdsharedinst1
-Port Assignments for server instance pmdsharedinst1: 
-JMX_SYSTEM_CONNECTOR_PORT=28687
-JMS_PROVIDER_PORT=27677
-ASADMIN_LISTENER_PORT=24849
-HTTP_LISTENER_PORT=28081
-IIOP_LISTENER_PORT=23701
-IIOP_SSL_LISTENER_PORT=23821
-HTTP_SSL_LISTENER_PORT=28182
-IIOP_SSL_MUTUALAUTH_PORT=23921
-
-Command create-instance executed successfully.
-----
-
-[[GSRFM490]][[sthref301]]
-
-Example 4   Creating a Clustered \{product---name} Instance
-
-This example creates the clustered \{product---name} instance `pmdinst1`
-in the domain `domain1` on the local host. The instance is a member of
-the cluster `pmdclust1`.
-
-[source,oac_no_warn]
-----
-asadmin> create-instance --node localhost-domain1 --cluster pmdclust pmdinst1
-Port Assignments for server instance pmdinst1: 
-JMX_SYSTEM_CONNECTOR_PORT=28686
-JMS_PROVIDER_PORT=27676
-HTTP_LISTENER_PORT=28080
-ASADMIN_LISTENER_PORT=24848
-IIOP_SSL_LISTENER_PORT=23820
-IIOP_LISTENER_PORT=23700
-HTTP_SSL_LISTENER_PORT=28181
-IIOP_SSL_MUTUALAUTH_PORT=23920
-
-Command create-instance executed successfully.
-----
-
-[[sthref302]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref303]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)],
-link:create-node-config.html#create-node-config-1[`create-node-config`(1)],
-link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
-link:create-node-ssh.html#create-node-ssh-1[`create-node-ssh`(1)],
-link:create-system-properties.html#create-system-properties-1[`create-system-properties`(1)],
-link:delete-instance.html#delete-instance-1[`delete-instance`(1)],
-link:delete-system-property.html#delete-system-property-1[`delete-system-property`(1)],
-link:list-instances.html#list-instances-1[`list-instances`(1)],
-link:setup-ssh.html#setup-ssh-1[`setup-ssh`(1)],
-link:start-instance.html#start-instance-1[`start-instance`(1)],
-link:stop-instance.html#stop-instance-1[`stop-instance`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-jacc-provider.adoc b/docs/reference-manual/src/main/jbake/content/create-jacc-provider.adoc
deleted file mode 100644
index 44436cd..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-jacc-provider.adoc
+++ /dev/null
@@ -1,151 +0,0 @@
-type=page
-status=published
-title=create-jacc-provider
-next=create-javamail-resource.html
-prev=create-instance.html
-~~~~~~
-create-jacc-provider
-====================
-
-[[create-jacc-provider-1]][[GSRFM00034]][[create-jacc-provider]]
-
-create-jacc-provider
---------------------
-
-enables administrators to create a JACC provider that can be used by
-third-party authorization modules for applications running in
-\{product---name}
-
-[[sthref304]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-jacc-provider [--help]
-[--policyproviderclass pol-provider-class] 
-[--policyconfigfactoryclass pc-factory-class] 
-[--property name=value)[:name=value]*] 
-[--target target] jacc-provider-name
-----
-
-[[sthref305]]
-
-Description
-
-The `create-jacc-provider` subcommand creates a JSR-115—compliant Java
-Authorization Contract for Containers (JACC) provider that can be used
-for authorization of applications running in \{product---name}. The JACC
-provider is created as a `jacc-provider` element within the
-`security-service` element in the domain's `domain.xml` file.
-
-The default \{product---name} installation includes two JACC providers,
-named `default` and `simple`. Any JACC providers created with the
-`create-jacc-provider` subcommand are in addition to these two default
-providers. The default \{product---name} JACC providers implement a
-simple, file-based authorization engine that complies with the JACC
-specification. The `create-jacc-provider` subcommand makes it possible
-to specify additional third-party JACC providers.
-
-You can create any number of JACC providers within the
-`security-service` element, but the \{product---name} runtime uses only
-one of them at any given time. The `jacc-provider` element in the
-`security-service` element points to the name of the provider that is
-currently in use by \{product---name}. If you change this element to
-point to a different JACC provider, restart \{product---name}.
-
-This command is supported in remote mode only.
-
-[[sthref306]]
-
-Options
-
-If an option has a short option name, then the short option precedes the
-long option name. Short options have one dash whereas long options have
-two dashes.
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--policyproviderclass`::
-  Specifies the fully qualified class name for the
-  `javax.security.jacc.policy.provider` that implements the
-  `java.security.Policy`.
-`--policyconfigfactoryclass`::
-  Specifies the fully qualified class name for the
-  `javax.security.jacc.PolicyConfigurationFactory.provider` that
-  implements the provider-specific
-  `javax.security.jacc.PolicyConfigurationFactory`.
-`--property`::
-  Optional attribute name/value pairs for configuring the JACC provider.
-  The following properties are available: +
-  `repository`;;
-    The directory containing the JACC policy file. For the `default`
-    \{product---name} JACC provider, the default directory is
-    `${com.sun.aas.instanceRoot}/generated/policy`. This property is not
-    defined by default for the `simple` \{product---name} JACC provider.
-`--target`::
-  Specifies the target for which you are creating the JACC provider. The
-  following values are valid: +
-  `server`;;
-    Creates the JACC provider on the default server instance. This is
-    the default value.
-  configuration_name;;
-    Creates the JACC provider in the specified configuration.
-  cluster_name;;
-    Creates the JACC provider on all server instances in the specified
-    cluster.
-  instance_name;;
-    Creates the JACC provider on a specified server instance.
-
-[[sthref307]]
-
-Operands
-
-jacc-provider-name::
-  The name of the provider used to reference the `jacc-provider` element
-  in `domain.xml`.
-
-[[sthref308]]
-
-Examples
-
-[[GSRFM491]][[sthref309]]
-
-Example 1   Creating a JACC Provider
-
-The following example shows how to create a JACC provider named
-`testJACC` on the default `server` target.
-
-[source,oac_no_warn]
-----
-asadmin> create-jacc-provider
---policyproviderclass org.glassfish.exousia.modules.locked.SimplePolicyProvider
---policyconfigfactoryclass org.glassfish.exousia.modules.locked.SimplePolicyConfigurationFactory
-testJACC
-
-Command create-jacc-provider executed successfully.
-----
-
-[[sthref310]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref311]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-jacc-provider.html#delete-jacc-provider-1[`delete-jacc-provider`(1)],
-link:list-jacc-providers.html#list-jacc-providers-1[`list-jacc-providers`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-javamail-resource.adoc b/docs/reference-manual/src/main/jbake/content/create-javamail-resource.adoc
deleted file mode 100644
index 50792cc..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-javamail-resource.adoc
+++ /dev/null
@@ -1,154 +0,0 @@
-type=page
-status=published
-title=create-javamail-resource
-next=create-jdbc-connection-pool.html
-prev=create-jacc-provider.html
-~~~~~~
-create-javamail-resource
-========================
-
-[[create-javamail-resource-1]][[GSRFM00035]][[create-javamail-resource]]
-
-create-javamail-resource
-------------------------
-
-creates a JavaMail session resource
-
-[[sthref312]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-javamail-resource [--help] 
-[--target target] --mailhost hostname
---mailuser username --fromaddress address [--storeprotocol storeprotocol]
-[--storeprotocolclass storeprotocolclass] [--transprotocol transprotocol]
-[--transprotocolclass transprotocolclass] [--debug={false|true}] [--enabled={true|false}]
-[--description resource-description] [--property (name=value)[:name=value]*] jndi-name
-----
-
-[[sthref313]]
-
-Description
-
-The `create-javamail-resource` subcommand creates a JavaMail session
-resource.
-
-This subcommand is supported in remote mode only.
-
-[[sthref314]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  This option specifies the target for which you are creating the
-  JavaMail session resource. Valid values are: +
-  `server`;;
-    Creates the resource for the default server instance. This is the
-    default value.
-  `domain`;;
-    Creates the resource for the domain.
-  cluster_name;;
-    Creates the resource for every server instance in the cluster.
-  instance_name;;
-    Creates the resource for a particular server instance.
-`--mailhost`::
-  The DNS name of the default mail server. The connect methods of the
-  Store and Transport objects use this value if a protocol-specific host
-  property is not supplied. The name must be resolvable to an actual
-  host name.
-`--mailuser`::
-  The name of the mail account user provided when connecting to a mail
-  server. The connect methods of the Store and Transport objects use
-  this value if a protocol-specific username property is not supplied.
-`--fromaddress`::
-  The email address of the default user, in the form
-  username`@`host`.`domain.
-`--storeprotocol`::
-  The mail server store protocol. The default is `imap`. Change this
-  value only if you have reconfigured the \{product---name}'s mail
-  provider to use a non-default store protocol.
-`--storeprotocolclass`::
-  The mail server store protocol class name. The default is
-  `com.sun.mail.imap.IMAPStore`. Change this value only if you have
-  reconfigured the \{product---name}'s mail provider to use a nondefault
-  store protocol.
-`--transprotocol`::
-  The mail server transport protocol. The default is `smtp`. Change this
-  value only if you have reconfigured the \{product---name}'s mail
-  provider to use a nondefault transport protocol.
-`--transprotocolclass`::
-  The mail server transport protocol class name. The default is
-  `com.sun.mail.smtp.SMTPTransport`. Change this value only if you have
-  reconfigured the \{product---name}'s mail provider to use a nondefault
-  transport protocol.
-`--debug`::
-  If set to true, the server starts up in debug mode for this resource.
-  If the JavaMail log level is set to `FINE` or `FINER`, the debugging
-  output will be generated and will be included in the server log file.
-  The default value is false.
-`--enabled`::
-  If set to true, the resource is enabled at runtime. The default value
-  is true.
-`--description`::
-  Text providing some details of the JavaMail resource.
-`--property`::
-  Optional attribute name/value pairs for configuring the JavaMail
-  resource. The \{product---name}-specific `mail-` prefix is converted
-  to the standard mail prefix. The JavaMail API documentation lists the
-  properties you might want to set.
-
-[[sthref315]]
-
-Operands
-
-jndi-name::
-  The JNDI name of the JavaMail resource to be created. It is a
-  recommended practice to use the naming subcontext prefix `mail/` for
-  JavaMail resources.
-
-[[sthref316]]
-
-Examples
-
-[[GSRFM492]][[sthref317]]
-
-Example 1   Creating a JavaMail Resource
-
-This example creates a JavaMail resource named `mail/MyMailSession`. The
-JNDI name for a JavaMail session resource customarily includes the
-`mail/` naming subcontext.
-
-[source,oac_no_warn]
-----
-asadmin> create-javamail-resource --mailhost localhost 
---mailuser sample --fromaddress sample@sun.com mail/MyMailSession
-Command create-javamail-resource executed successfully.
-----
-
-[[sthref318]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref319]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-javamail-resource.html#delete-javamail-resource-1[`delete-javamail-resource`(1)],
-link:list-javamail-resources.html#list-javamail-resources-1[`list-javamail-resources`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-jdbc-connection-pool.adoc b/docs/reference-manual/src/main/jbake/content/create-jdbc-connection-pool.adoc
deleted file mode 100644
index 91f4b4d..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-jdbc-connection-pool.adoc
+++ /dev/null
@@ -1,493 +0,0 @@
-type=page
-status=published
-title=create-jdbc-connection-pool
-next=create-jdbc-resource.html
-prev=create-javamail-resource.html
-~~~~~~
-create-jdbc-connection-pool
-===========================
-
-[[create-jdbc-connection-pool-1]][[GSRFM00036]][[create-jdbc-connection-pool]]
-
-create-jdbc-connection-pool
----------------------------
-
-registers a JDBC connection pool
-
-[[sthref320]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-jdbc-connection-pool [--help]
-[--datasourceclassname=datasourceclassname]
-[--restype=resourcetype]
-[--steadypoolsize=poolsize]
-[--maxpoolsize=maxpoolsize]
-[--maxwait=maxwaittime]
-[--poolresize=poolresizelimit]
-[--idletimeout=idletimeout]
-[--initsql=initsqlstring]
-[--isolationlevel=isolationlevel]
-[--isisolationguaranteed={true|false}]
-[--isconnectvalidatereq={false|true}]
-[--validationmethod=validationmethod]
-[--validationtable=validationtable]
-[--failconnection={false|true}]
-[--allownoncomponentcallers={false|true}]
-[--nontransactionalconnections={false|true}]
-[--validateatmostonceperiod=validationinterval]
-[--leaktimeout=leaktimeout]
-[--leakreclaim={false|true}]
-[--statementleaktimeout=satementleaktimeout]
-[--statmentleakreclaim={false|true}]
-[--creationretryattempts=creationretryattempts]
-[--creationretryinterval=creationretryinterval]
-[--sqltracelisteners=sqltracelisteners[,sqltracelisteners]]
-[--statementtimeout=statementtimeout]
-[--lazyconnectionenlistment={false|true}]
-[--lazyconnectionassociation={false|true}]
-[--associatewiththread={false|true}]
-[--driverclassname=jdbcdriverclassname]
-[--matchconnections={false|true}]
-[--maxconnectionusagecount=maxconnectionusagecount]
-[--ping={false|true}]
-[--pooling={false|true}]
-[--statementcachesize=statementcachesize]
-[--validationclassname=validationclassname]
-[--wrapjdbcobjects={false|true}]
-[--description description]
-[--property name=value)[:name=value]*]
-[--target=target]
-connectionpoolid
-----
-
-[[sthref321]]
-
-Description
-
-The `create-jdbc-connection-pool` subcommand registers a new Java
-Database Connectivity ("JDBC") software connection pool with the
-specified JDBC connection pool name.
-
-A JDBC connection pool with authentication can be created either by
-using a `--property` option to specify user, password, or other
-connection information, or by specifying the connection information in
-the XML descriptor file.
-
-This subcommand is supported in remote mode only.
-
-[[sthref322]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--datasourceclassname`::
-  The name of the vendor-supplied JDBC datasource resource manager. An
-  XA or global transactions capable datasource class will implement the
-  `javax.sql.XADatasource` interface. Non-XA or exclusively local
-  transaction datasources will implement the `javax.sql.Datasource`
-  interface.
-`--restype` +
-Required when a datasource class implements two or more interfaces
-(`javax.sql.DataSource`, `javax.sql.XADataSource`, or
-`javax.sql.ConnectionPoolDataSource`), or when a driver classname must
-be provided.::
-  * If `--restype` = `java.sql.Driver`, then the `--driverclassname`
-  option is required.
-  * If `--restype` = `javax.sql.DataSource`, `javax.sql.XADataSource`,
-  or `javax.sql.ConnectionPoolDataSource`, then the
-  `--datasourceclassname` option is required.
-  * If `--restype` is not specified, then either the `--driverclassname`
-  or `--datasourceclassname` option must be specified, but not both.
-`--steadypoolsize`::
-  The minimum and initial number of connections maintained in the pool.
-  The default value is 8.
-`--maxpoolsize`::
-  The maximum number of connections that can be created. The default
-  value is 32.
-`--maxwait`::
-  The amount of time, in milliseconds, that a caller will wait before a
-  connection timeout is sent. The default is 60000 (60 seconds). A value
-  of 0 forces the caller to wait indefinitely.
-`--poolresize`::
-  Number of connections to be removed when `idle-timeout-in-seconds`
-  timer expires. This is the quantity by which the pool will scale up or
-  scale down the number of connections. Scale up: When the pool has no
-  free connections, pool will scale up by this quantity. Scale down: All
-  the invalid and idle connections are removed, sometimes resulting in
-  removing connections of quantity greater than this value. Connections
-  that have been idle for longer than the timeout are candidates for
-  removal. Steadypoolsize will be ensured. Possible values are from 0 to
-  `MAX_INTEGER`. The default value is 2.
-`--idletimeout`::
-  The maximum time, in seconds, that a connection can remain idle in the
-  pool. After this time, the implementation can close this connection.
-  This timeout value must be kept shorter than the database server side
-  timeout value to prevent the accumulation of unusable connections in
-  the application. The default value is 300.
-`--initsql`::
-  An SQL string that is executed whenever a connection is created from
-  the pool. If an existing connection is reused, this string is not
-  executed. Connections that have idled for longer than the timeout are
-  candidates for removal. This option has no default value.
-`--isolationlevel`::
-  The transaction-isolation-level on the pooled database connections.
-  This option does not have a default value. If not specified, the pool
-  operates with the default isolation level that the JDBC driver
-  provides. You can set a desired isolation level using one of the
-  standard transaction isolation levels: `read-uncommitted`,
-  `read-committed`, `repeatable-read`, `serializable`. Applications that
-  change the isolation level on a pooled connection programmatically
-  risk polluting the pool. This could lead to program errors.
-`--isisolationguaranteed`::
-  This is applicable only when a particular isolation level is specified
-  for transaction-isolation-level. The default value is true. +
-  This option assures that every time a connection is obtained from the
-  pool, isolation level is set to the desired value. This could have
-  some performance impact on some JDBC drivers. Administrators can set
-  this to false when the application does not change `--isolationlevel`
-  before returning the connection.
-`--isconnectvalidatereq`::
-  If set to true, connections are validated or checked to see if they
-  are usable before giving out to the application. The default value is
-  false.
-`--validationmethod`::
-  Type of validation to be performed when
-  `is-connection-validation-required` is true. Valid settings are:
-  `auto-commit`, `meta-data`, `table`, or `custom-validation`. The
-  default value is `table`.
-`--validationtable`::
-  The name of the validation table used to perform a query to validate a
-  connection. If `is-connection-validation-required` is set to true and
-  connection-validation-type set to table, this option is mandatory.
-`--failconnection`::
-  If set to true, all connections in the pool must be closed when a
-  single validation check fails. The default value is false. One attempt
-  is made to reestablish failed connections.
-`--allownoncomponentcallers`::
-  A pool with this property set to true can be used by non-Java EE
-  components, that is, components other than EJBs or Servlets. The
-  returned connection is enlisted automatically with the transaction
-  context obtained from the transaction manager. Connections obtained by
-  non-component callers are not automatically cleaned by the container
-  at the end of a transaction. These connections need to be explicitly
-  closed by the caller.
-`--nontransactionalconnections`::
-  A pool with this property set to true returns non-transactional
-  connections. This connection does not get automatically enlisted with
-  the transaction manager.
-`--validateatmostonceperiod`::
-  Specifies the time interval in seconds between successive requests to
-  validate a connection at most once. Setting this attribute to an
-  appropriate value minimizes the number of validation requests by a
-  connection. Default value is 0, which means that the attribute is not
-  enabled.
-`--leaktimeout`::
-  Specifies the amount of time, in seconds, for which connection leaks
-  in a connection pool are to be traced. When a connection is not
-  returned to the pool by the application within the specified period,
-  it is assumed to be a potential leak, and stack trace of the caller
-  will be logged. This option only detects if there is a connection
-  leak. The connection can be reclaimed only if
-  `connection-leak-reclaim` is set to true. +
-  If connection leak tracing is enabled, you can use the Administration
-  Console to enable monitoring of the JDBC connection pool to get
-  statistics on the number of connection leaks. The default value is 0,
-  which disables connection leak tracing.
-`--leakreclaim`::
-  Specifies whether leaked connections are restored to the connection
-  pool after leak connection tracing is complete. Possible values are as
-  follows: +
-  `false`;;
-    Leaked connections are not restored to the connection pool
-    (default).
-  `true`;;
-    Leaked connections are restored to the connection pool.
-`--statementleaktimeout`::
-  Specifies the amount of time, in seconds, after which any statements
-  that have not been closed by an application are to be detected.
-  Applications can run out of cursors if statement objects are not
-  properly closed. This option only detects if there is a statement
-  leak. The statement can be reclaimed only if `statement-leak-reclaim`
-  is set to true. The leaked statement is closed when it is reclaimed. +
-  The stack trace of the caller that creates the statement will be
-  logged when a statement leak is detected. If statement leak tracing is
-  enabled, you can use the Administration Console to enable monitoring
-  of the JDBC connection pool to get statistics on the number of
-  statement leaks. The default value is 0, which disables statement leak
-  tracing. +
-  The following limitations apply to the statement leak timeout value: +
-  * The value must be less than the value set for the connection
-  `leak-timeout`.
-  * The value must be greater than the value set for
-  `statement-timeout`.
-`--statementleakreclaim`::
-  Specifies whether leaked statements are reclaimed after the statements
-  leak. Possible values are as follows: +
-  `false`;;
-    Leaked statements are not reclaimed (default).
-  `true`;;
-    Leaked statements are reclaimed.
-`--creationretryattempts`::
-  Specifies the maximum number of times that \{product---name} retries
-  to create a connection if the initial attempt fails. The default value
-  is 0, which specifies that \{product---name} does not retry to create
-  the connection.
-`--creationretryinterval`::
-  Specifies the interval, in seconds, between successive attempts to
-  create a connection. +
-  If `--creationretryattempts` is 0, the `--creationretryinterval`
-  option is ignored. The default value is 10.
-`--sqltracelisteners`::
-  A list of one or more custom modules that provide custom logging of
-  database activities. Each module must implement the
-  `org.glassfish.api.jdbc.SQLTraceListener` public interface. When set
-  to an appropriate value, SQL statements executed by applications are
-  traced. This option has no default value.
-`--statementtimeout`::
-  Specifies the length of time in seconds after which a query that is
-  not completed is terminated. +
-  A query that remains incomplete for a long period of time might cause
-  the application that submitted the query to hang. To prevent this
-  occurrence, use this option set a timeout for all statements that will
-  be created from the connection pool that you are creating. When
-  creating a statement, \{product---name} sets the `QueryTimeout`
-  property on the statement to the length of time that is specified. The
-  default value is -1, which specifies that incomplete queries are never
-  terminated.
-`--lazyconnectionenlistment`::
-  Specifies whether a resource to a transaction is enlisted only when a
-  method actually uses the resource. Possible values are as follows: +
-  `false`;;
-    Resources to a transaction are always enlisted and not only when a
-    method actually uses the resource (default).
-  `true`;;
-    Resources to a transaction are enlisted only when a method actually
-    uses the resource.
-`--lazyconnectionassociation`::
-  Specifies whether a physical connection should be associated with the
-  logical connection only when the physical connection is used, and
-  disassociated when the transaction is completed. Such association and
-  dissociation enable the reuse of physical connections. Possible values
-  are as follows: +
-  `false`;;
-    A physical connection is associated with the logical connection even
-    before the physical connection is used, and is not disassociated
-    when the transaction is completed (default).
-  `true`;;
-    A physical connection is associated with the logical connection only
-    when the physical connection is used, and disassociated when the
-    transaction is completed. The `--lazyconnectionenlistment` option
-    must also be set to `true`.
-`--associatewiththread`::
-  Specifies whether a connection is associated with the thread to enable
-  the thread to reuse the connection. If a connection is not associated
-  with the thread, the thread must obtain a connection from the pool
-  each time that the thread requires a connection. Possible values are
-  as follows: +
-  `false`;;
-    A connection is not associated with the thread (default).
-  `true`;;
-    A connection is associated with the thread.
-`--driverclassname`::
-  The name of the vendor-supplied JDBC driver class. This driver should
-  implement the `java.sql.Driver` interface.
-`--matchconnections`::
-  Specifies whether a connection that is selected from the pool should
-  be matched by the resource adaptor. If all the connections in the pool
-  are homogenous, a connection picked from the pool need not be matched
-  by the resource adapter, which means that this option can be set to
-  false. Possible values are as follows: +
-  `false`;;
-    A connection should not be matched by the resource adaptor
-    (default).
-  `true`;;
-    A connection should be matched by the resource adaptor.
-`--maxconnectionusagecount`::
-  Specifies the maximum number of times that a connection can be reused.
-  When this limit is reached, the connection is closed. By limiting the
-  maximum number of times that a connection can be reused, you can avoid
-  statement leaks. +
-  The default value is 0, which specifies no limit on the number of
-  times that a connection can be reused.
-`--ping`::
-  Specifies if the pool is pinged during pool creation or
-  reconfiguration to identify and warn of any erroneous values for its
-  attributes. Default value is false.
-`--pooling`::
-  Specifies if connection pooling is enabled for the pool. The default
-  value is true.
-`--statementcachesize`::
-  The number of SQL statements to be cached using the default caching
-  mechanism (Least Recently Used). The default value is 0, which
-  indicates that statement caching is not enabled.
-`--validationclassname`::
-  The name of the class that provides custom validation when the value
-  of `validationmethod` is `custom-validation`. This class must
-  implement the `org.glassfish.api.jdbc.ConnectionValidation` interface,
-  and it must be accessible to \{product---name}. This option is
-  mandatory if the connection validation type is set to custom
-  validation.
-`--wrapjdbcobjects`::
-  Specifies whether the pooling infrastructure provides wrapped JDBC
-  objects to applications. By providing wrapped JDBC objects, the
-  pooling infrastructure prevents connection leaks by ensuring that
-  applications use logical connections from the connection pool, not
-  physical connections. The use of logical connections ensures that the
-  connections are returned to the connection pool when they are closed.
-  However, the provision of wrapped JDBC objects can impair the
-  performance of applications. The default value is true. +
-  The pooling infrastructure provides wrapped objects for
-  implementations of the following interfaces in the JDBC API: +
-  * `java.sql.CallableStatement`
-  * `java.sql.DatabaseMetaData`
-  * `java.sql.PreparedStatement`
-  * `java.sql.ResultSet`
-  * `java.sql.Statement` +
-  Possible values of `--wrapjdbcobjects` are as follows: +
-  `false`;;
-    The pooling infrastructure does not provide wrapped JDBC objects to
-    applications. (default).
-  `true`;;
-    The pooling infrastructure provides wrapped JDBC objects to
-    applications.
-`--description`::
-  Text providing details about the specified JDBC connection pool.
-`--property`::
-  Optional attribute name/value pairs for configuring the pool. The
-  following properties are available: +
-  `user`;;
-    Specifies the user name for connecting to the database.
-  `password`;;
-    Specifies the password for connecting to the database.
-  `databaseName`;;
-    Specifies the database for this connection pool.
-  `serverName`;;
-    Specifies the database server for this connection pool.
-  `port`;;
-    Specifies the port on which the database server listens for
-    requests.
-  `networkProtocol`;;
-    Specifies the communication protocol.
-  `roleName`;;
-    Specifies the initial SQL role name.
-  `datasourceName`;;
-    Specifies an underlying `XADataSource`, or a
-    `ConnectionPoolDataSource` if connection pooling is done.
-  `description`;;
-    Specifies a text description.
-  `url`;;
-    Specifies the URL for this connection pool. Although this is not a
-    standard property, it is commonly used.
-  `dynamic-reconfiguration-wait-timeout-in-seconds`;;
-    Used to enable dynamic reconfiguration of the connection pool
-    transparently to the applications that are using the pool, so that
-    applications need not be re-enabled for the attribute or property
-    changes to the pool to take effect. Any in-flight transaction's
-    connection requests will be allowed to complete with the old pool
-    configuration as long as the connection requests are within the
-    timeout period, so as to complete the transaction. New connection
-    requests will wait for the pool reconfiguration to complete and
-    connections will be acquired using the modified pool configuration.
-  `LazyConnectionEnlistment`;;
-    Deprecated. Use the equivalent attribute. The default value is
-    false.
-  `LazyConnectionAssociation`;;
-    Deprecated. Use the equivalent attribute. The default value is
-    false.
-  `AssociateWithThread`;;
-    Deprecated. Use the equivalent attribute. The default value is
-    false.
-  `MatchConnections`;;
-    Deprecated. Use the equivalent attribute. The default value is true.
-  `Prefer-Validate-Over-Recreate`;;
-    Specifies whether pool resizer should validate idle connections
-    before destroying and recreating them. The default value is true.
-  `time-to-keep-queries-in-minutes`;;
-    Specifies the number of minutes that will be cached for use in
-    calculating frequently used queries. Takes effect when SQL tracing
-    and monitoring are enabled for the JDBC connection pool. The default
-    value is 5 minutes.
-  `number-of-top-queries-to-report`;;
-    Specifies the number of queries to list when reporting the top and
-    most frequently used queries. Takes effect when SQL tracing and
-    monitoring are enabled for the JDBC connection pool. The default
-    value is 10 queries. +
-
-[width="100%",cols="100%",]
-|=======================================================================
-a|
-Note:
-
-If an attribute name or attribute value contains a colon, the
-backslash (`\`) must be used to escape the colon in the name or value.
-Other characters might also require an escape character. For more
-information about escape characters in command options, see the
-link:asadmin.html#asadmin-1m[`asadmin`(1M)] man page.
-
-|=======================================================================
-
-`--target`::
-  Do not specify this option. This option is retained for compatibility
-  with earlier releases. If you specify this option, a syntax error does
-  not occur. Instead, the subcommand runs successfully and displays a
-  warning message that the option is ignored.
-
-[[sthref323]]
-
-Operands
-
-connectionpoolid::
-  The name of the JDBC connection pool to be created.
-
-[[sthref324]]
-
-Examples
-
-[[GSRFM493]][[sthref325]]
-
-Example 1   Creating a JDBC Connection Pool
-
-This example creates a JDBC connection pool named `sample_derby_pool`.
-
-[source,oac_no_warn]
-----
-asadmin> create-jdbc-connection-pool
---datasourceclassname org.apache.derby.jdbc.ClientDataSource
---restype javax.sql.XADataSource 
---property portNumber=1527:password=APP:user=APP:serverName=
-localhost:databaseName=sun-appserv-samples:connectionAttributes=\;
-create\\=true sample_derby_pool
-Command create-jdbc-connection-pool executed successfully
-----
-
-The escape character backslash (`\`) is used in the `--property` option
-to distinguish the semicolon (`;`). Two backslashes (`\\`) are used to
-distinguish the equal sign (`=`).
-
-[[sthref326]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref327]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-jdbc-connection-pool.html#delete-jdbc-connection-pool-1[`delete-jdbc-connection-pool`(1)],
-link:list-jdbc-connection-pools.html#list-jdbc-connection-pools-1[`list-jdbc-connection-pools`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-jdbc-resource.adoc b/docs/reference-manual/src/main/jbake/content/create-jdbc-resource.adoc
deleted file mode 100644
index 6c21293..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-jdbc-resource.adoc
+++ /dev/null
@@ -1,131 +0,0 @@
-type=page
-status=published
-title=create-jdbc-resource
-next=create-jmsdest.html
-prev=create-jdbc-connection-pool.html
-~~~~~~
-create-jdbc-resource
-====================
-
-[[create-jdbc-resource-1]][[GSRFM00037]][[create-jdbc-resource]]
-
-create-jdbc-resource
---------------------
-
-creates a JDBC resource with the specified JNDI name
-
-[[sthref328]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-jdbc-resource [--help]
---connectionpoolid connectionpoolid
-[--enabled={false|true}]
-[--description description]
-[--property (property=value)[:name=value]*]
-[--target target]
-jndi_name
-----
-
-[[sthref329]]
-
-Description
-
-The `create-jdbc-resource` subcommand creates a new JDBC resource.
-
-This subcommand is supported in remote mode only.
-
-[[sthref330]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--connectionpoolid`::
-  The name of the JDBC connection pool. If two or more JDBC resource
-  elements point to the same connection pool element, they use the same
-  pool connection at runtime.
-`--enabled`::
-  Determines whether the JDBC resource is enabled at runtime. The
-  default value is true.
-`--description`::
-  Text providing descriptive details about the JDBC resource.
-`--property`::
-  Optional attribute name/value pairs for configuring the resource.
-`--target`::
-  This option helps specify the target to which you are deploying. Valid
-  values are: +
-  `server`;;
-    Deploys the component to the default server instance. This is the
-    default value.
-  `domain`;;
-    Deploys the component to the domain.
-  cluster_name;;
-    Deploys the component to every server instance in the cluster.
-  instance_name;;
-    Deploys the component to a particular server instance.
-
-
-[NOTE]
-=======================================================================
-
-The resource is always created for the domain as a whole, but the
-`resource-ref` for the resource is only created for the specified
-`--target`. This means that although the resource is defined at the
-domain level, it is only available at the specified target level. Use
-the `create-resource-ref` subcommand to refer to the resource in
-multiple targets if needed.
-
-=======================================================================
-
-
-[[sthref331]]
-
-Operands
-
-jndi_name::
-  The JNDI name of this JDBC resource.
-
-[[sthref332]]
-
-Examples
-
-[[GSRFM494]][[sthref333]]
-
-Example 1   Creating a JDBC Resource
-
-This example creates a JDBC resource named `jdbc/DerbyPool`.
-
-[source,oac_no_warn]
-----
-asadmin> create-jdbc-resource
---connectionpoolid sample_derby_pool jdbc/DerbyPool
-Command create-jdbc-resource executed successfully.
-----
-
-[[sthref334]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref335]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-resource-ref.html#create-resource-ref-1[`create-resource-ref`(1)],
-link:delete-jdbc-resource.html#delete-jdbc-resource-1[`delete-jdbc-resource`(1)],
-link:list-jdbc-resources.html#list-jdbc-resources-1[`list-jdbc-resources`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-jms-host.adoc b/docs/reference-manual/src/main/jbake/content/create-jms-host.adoc
deleted file mode 100644
index 456501e..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-jms-host.adoc
+++ /dev/null
@@ -1,120 +0,0 @@
-type=page
-status=published
-title=create-jms-host
-next=create-jms-resource.html
-prev=create-jmsdest.html
-~~~~~~
-create-jms-host
-===============
-
-[[create-jms-host-1]][[GSRFM00039]][[create-jms-host]]
-
-create-jms-host
----------------
-
-creates a JMS host
-
-[[sthref344]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-jms-host [--help]
---mqhost mq-host --mqport mq-port
---mquser mq-user --mqpassword mq-password
-[--target target]
-[--force={false|true}]
-jms_host_name
-----
-
-[[sthref345]]
-
-Description
-
-Creates a Java Message Service (JMS) host within the JMS service.
-
-This subcommand is supported in remote mode only. Remote `asadmin`
-subcommands require a running domain administration server (DAS).
-
-[[sthref346]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--mqhost`::
-  The host name for the JMS service.
-`--mqport`::
-  The port number used by the JMS service.
-`--mquser`::
-  The user name for the JMS service.
-`--mqpassword`::
-  The password for the JMS service.
-`--target`::
-  Creates the JMS host only for the specified target. Valid values are
-  as follows: +
-  `server`;;
-    Creates the JMS host for the default server instance. This is the
-    default value.
-  configuration-name;;
-    Creates the JMS host in the specified configuration.
-  cluster-name;;
-    Creates the JMS host for every server instance in the specified
-    cluster.
-  instance-name;;
-    Creates the JMS host for the specified server instance.
-`--force`::
-  Specifies whether the subcommand overwrites the existing JMS host of
-  the same name. The default value is `false`.
-
-[[sthref347]]
-
-Operands
-
-jms_host_name::
-  A unique identifier for the JMS host to be created.
-
-[[sthref348]]
-
-Examples
-
-[[GSRFM496]][[sthref349]]
-
-Example 1   Creating a JMS host using a non-default port
-
-The following command creates a JMS host named `MyNewHost` on the system
-`pigeon`.
-
-[source,oac_no_warn]
-----
-asadmin> create-jms-host --mqhost pigeon.example.com --mqport 7677 
---mquser admin --mqpassword admin MyNewHost
-Jms Host MyNewHost created.
-Command create-jms-host executed successfully.
-----
-
-[[sthref350]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref351]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-jms-host.html#delete-jms-host-1[`delete-jms-host`(1)],
-link:jms-ping.html#jms-ping-1[`jms-ping`(1)],
-link:list-jms-hosts.html#list-jms-hosts-1[`list-jms-hosts`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-jms-resource.adoc b/docs/reference-manual/src/main/jbake/content/create-jms-resource.adoc
deleted file mode 100644
index 39ed67e..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-jms-resource.adoc
+++ /dev/null
@@ -1,230 +0,0 @@
-type=page
-status=published
-title=create-jms-resource
-next=create-jndi-resource.html
-prev=create-jms-host.html
-~~~~~~
-create-jms-resource
-===================
-
-[[create-jms-resource-1]][[GSRFM00040]][[create-jms-resource]]
-
-create-jms-resource
--------------------
-
-creates a JMS resource
-
-[[sthref352]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-jms-resource [--help]
---restype type
-[--target target]
-[--enabled={true|false}]
-[--description text]
-[--property (name=value)[:name=value]*]
-[--force={false|true}]
-jndi_name
-----
-
-[[sthref353]]
-
-Description
-
-The `create-jms-resource` subcommand creates a Java Message Service
-(JMS) connection factory resource or a JMS destination resource.
-
-This subcommand is supported in remote mode only. Remote `asadmin`
-subcommands require a running domain administration server (DAS).
-
-[[sthref354]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--restype`::
-  The JMS resource type, which can be `jakarta.jms.Topic`,
-  `jakarta.jms.Queue`, `jakarta.jms.ConnectionFactory`,
-  `jakarta.jms.TopicConnectionFactory`, or
-  `jakarta.jms.QueueConnectionFactory`.
-`--target`::
-  Creates the JMS resource only for the specified target. Valid values
-  are as follows: +
-
-[width="100%",cols="100%",]
-|=======================================================================
-a|
-Note:
-
-The resource is always created for the domain as a whole, but the
-`<resource-ref>` element for the resource is only created for the
-specified `--target`. This means that although the resource is defined
-at the domain level, it is only active at the specified `--target`.
-
-|=======================================================================
-
-  `server`;;
-    Creates the JMS resource for the default server instance. This is
-    the default value.
-  `domain`;;
-    Creates the JMS resource for the domain.
-  cluster-name;;
-    Creates the JMS resource for every server instance in the specified
-    cluster.
-  instance-name;;
-    Creates the JMS resource for the specified server instance.
-`--enabled`::
-  If set to true (the default), the resource is enabled at runtime.
-`--description`::
-  Text providing details about the JMS resource.
-`--property`::
-  Optional attribute name/value pairs for configuring the JMS resource. +
-  You can specify the following properties for a connection factory
-  resource: +
-  `ClientId`;;
-    A client ID for a connection factory that will be used by a durable
-    subscriber.
-  `AddressList`;;
-    A comma-separated list of message queue addresses that specify the
-    host names (and, optionally, port numbers) of a message broker
-    instance or instances with which your application will communicate.
-    For example, the value could be `earth` or `earth:7677`. Specify the
-    port number if the message broker is running on a port other than
-    the default (7676). The default value is an address list composed
-    from the JMS hosts defined in the server's JMS service
-    configuration. The default value is `localhost` and the default port
-    number is 7676. The client will attempt a connection to a broker on
-    port 7676 of the local host.
-  `UserName`;;
-    The user name for the connection factory. The default value is
-    `guest`.
-  `Password`;;
-    The password for the connection factory. The default value is
-    `guest`.
-  `ReconnectEnabled`;;
-    A value of `true` indicates that the client runtime attempts to
-    reconnect to a message server (or the list of addresses in the
-    `AddressList`) when a connection is lost. The default value is
-    `false`.
-  `ReconnectAttempts`;;
-    The number of attempts to connect (or reconnect) for each address in
-    the `AddressList` before the client runtime tries the next address
-    in the list. A value of -1 indicates that the number of reconnect
-    attempts is unlimited (the client runtime attempts to connect to the
-    first address until it succeeds). The default value is 6.
-  `ReconnectInterval`;;
-    The interval in milliseconds between reconnect attempts. This
-    applies to attempts on each address in the `AddressList` and for
-    successive addresses in the list. If the interval is too short, the
-    broker does not have time to recover. If it is too long, the
-    reconnect might represent an unacceptable delay. The default value
-    is 30,000 milliseconds.
-  `AddressListBehavior`;;
-    Specifies whether connection attempts are in the order of addresses
-    in the `AddressList` (`PRIORITY`) or in a random order (`RANDOM`).
-    `PRIORITY` means that the reconnect will always try to connect to
-    the first server address in the `AddressList` and will use another
-    one only if the first broker is not available. If you have many
-    clients attempting a connection using the same connection factory,
-    specify `RANDOM` to prevent them from all being connected to the
-    same address. The default value is the `AddressListBehavior` value
-    of the server's JMS service configuration.
-  `AddressListIterations`;;
-    The number of times the client runtime iterates through the
-    `AddressList` in an effort to establish (or re-establish) a
-    connection). A value of -1 indicates that the number of attempts is
-    unlimited. The default value is -1. +
-  Additionally, you can specify `connector-connection-pool` attributes
-  as connector resource properties. For a list of these attributes, see
-  "link:../application-deployment-guide/dd-elements.html#GSDPG00124[connector-connection-pool]" in GlassFish Server Open
-  Source Edition Application Deployment Guide. +
-  You can specify the following properties for a destination resource: +
-  `Name`;;
-    The name of the physical destination to which the resource will
-    refer. The physical destination is created automatically when you
-    run an application that uses the destination resource. You can also
-    create a physical destination with the `create-jmsdest` subcommand.
-    If you do not specify this property, the JMS service creates a
-    physical destination with the same name as the destination resource
-    (replacing any forward slash in the JNDI name with an underscore).
-  `Description`;;
-    A description of the physical destination.
-`--force`::
-  Specifies whether the subcommand overwrites the existing JMS resource
-  of the same name. The default value is `false`.
-
-[[sthref355]]
-
-Operands
-
-jndi_name::
-  The JNDI name of the JMS resource to be created.
-
-[[sthref356]]
-
-Examples
-
-[[GSRFM497]][[sthref357]]
-
-Example 1   Creating a JMS connection factory resource for durable
-subscriptions
-
-The following subcommand creates a connection factory resource of type
-`jakarta.jms.ConnectionFactory` whose JNDI name is
-`jms/DurableConnectionFactory`. The `ClientId` property sets a client ID
-on the connection factory so that it can be used for durable
-subscriptions. The JNDI name for a JMS resource customarily includes the
-`jms/` naming subcontext.
-
-[source,oac_no_warn]
-----
-asadmin> create-jms-resource --restype jakarta.jms.ConnectionFactory
---description "connection factory for durable subscriptions"
---property ClientId=MyID jms/DurableConnectionFactory
-Connector resource jms/DurableConnectionFactory created.
-Command create-jms-resource executed successfully.
-----
-
-[[GSRFM498]][[sthref358]]
-
-Example 2   Creating a JMS destination resource
-
-The following subcommand creates a destination resource whose JNDI name
-is `jms/MyQueue`. The `Name` property specifies the physical destination
-to which the resource refers.
-
-[source,oac_no_warn]
-----
-asadmin> create-jms-resource --restype jakarta.jms.Queue
---property Name=PhysicalQueue jms/MyQueue
-Administered object jms/MyQueue created.
-Command create-jms-resource executed successfully.
-----
-
-[[sthref359]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref360]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-jms-resource.html#delete-jms-resource-1[`delete-jms-resource`(1)],
-link:list-jms-resources.html#list-jms-resources-1[`list-jms-resources`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-jmsdest.adoc b/docs/reference-manual/src/main/jbake/content/create-jmsdest.adoc
deleted file mode 100644
index c81043e..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-jmsdest.adoc
+++ /dev/null
@@ -1,227 +0,0 @@
-type=page
-status=published
-title=create-jmsdest
-next=create-jms-host.html
-prev=create-jdbc-resource.html
-~~~~~~
-create-jmsdest
-==============
-
-[[create-jmsdest-1]][[GSRFM00038]][[create-jmsdest]]
-
-create-jmsdest
---------------
-
-creates a JMS physical destination
-
-[[sthref336]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-jmsdest [--help]
---desttype dest_type
-[--property (name=value)[:name=value]*]
-[--target target]
-[--force={false|true}]
-dest_name
-----
-
-[[sthref337]]
-
-Description
-
-The `create-jmsdest` subcommand creates a Java Message Service (JMS)
-physical destination. Typically, you use the `create-jms-resource`
-subcommand to create a JMS destination resource that has a `Name`
-property that specifies the physical destination. The physical
-destination is created automatically when you run an application that
-uses the destination resource. Use the `create-jmsdest` subcommand if
-you want to create a physical destination with non-default property
-settings.
-
-This subcommand is supported in remote mode only. Remote `asadmin`
-subcommands require a running domain administration server (DAS).
-
-[[sthref338]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--desttype`::
-  The type of the JMS destination. Valid values are `topic` and `queue`.
-`--property`::
-  Optional attribute name/value pairs for configuring the physical
-  destination. You can specify the following properties for a physical
-  destination. +
-  `MaxNumMsgs`;;
-    The maximum number of unconsumed messages permitted for the
-    destination. A value of -1 denotes an unlimited number of messages.
-    The default value is -1. For the dead message queue, the default
-    value is 1000. +
-    If the `limitBehavior` property is set to `FLOW_CONTROL`, it is
-    possible for the specified message limit to be exceeded because the
-    broker cannot react quickly enough to stop the flow of incoming
-    messages. In such cases, the value specified for `maxNumMsgs` serves
-    as merely a hint for the broker rather than a strictly enforced
-    limit.
-  `MaxBytesPerMsg`;;
-    The maximum size, in bytes, of any single message. Rejection of a
-    persistent message is reported to the producing client with an
-    exception; no notification is sent for non-persistent messages. +
-    The value may be expressed in bytes, kilobytes, or megabytes, using
-    the following suffixes:::
-    `b`::
-      Bytes
-    `k`::
-      Kilobytes (1024 bytes)
-    `m`::
-      Megabytes (1024 x 1024 = 1,048,576 bytes) +
-    A value with no suffix is expressed in bytes; a value of -1 denotes
-    an unlimited message size. The default value is -1.
-  `MaxTotalMsgBytes`;;
-    The maximum total memory, in bytes, for unconsumed messages. The
-    default value is -1. The syntax is the same as for `maxBytesPerMsg`.
-    For the dead message queue, the default value is `10m`.
-  `LimitBehavior`;;
-    The behavior of the message queue broker when the memory-limit
-    threshold is reached. Valid values are as follows.::
-    `REJECT_NEWEST`::
-      Reject newest messages and notify the producing client with an
-      exception only if the message is persistent. This is the default
-      value.
-    `FLOW_CONTROL`::
-      Slow the rate at which message producers send messages.
-    `REMOVE_OLDEST`::
-      Throw out the oldest messages.
-    `REMOVE_LOW_PRIORITY`::
-      Throw out the lowest-priority messages according to age, with no
-      notification to the producing client. +
-    If the value is `REMOVE_OLDEST` or `REMOVE_LOW_PRIORITY` and the
-    `useDMQ` property is set to `true`, excess messages are moved to the
-    dead message queue. For the dead message queue itself, the default
-    limit behavior is `REMOVE_OLDEST`, and the value cannot be set to
-    `FLOW_CONTROL`.
-  `MaxNumProducers`;;
-    The maximum number of message producers for the destination. When
-    this limit is reached, no new producers can be created. A value of
-    -1 denotes an unlimited number of producers. The default value is
-    100. This property does not apply to the dead message queue.
-  `ConsumerFlowLimit`;;
-    The maximum number of messages that can be delivered to a consumer
-    in a single batch. A value of -1 denotes an unlimited number of
-    messages. The default value is 1000. The client runtime can override
-    this limit by specifying a lower value on the connection factory
-    object. +
-    In load-balanced queue delivery, this is the initial number of
-    queued messages routed to active consumers before load balancing
-    begins.
-  `UseDMQ`;;
-    If set to `true`, dead messages go to the dead message queue. If set
-    to `false`, dead messages are discarded. The default value is
-    `true`.
-  `ValidateXMLSchemaEnabled`;;
-    If set to `true`, XML schema validation is enabled for the
-    destination. The default value is `false`. +
-    When XML validation is enabled, the Message Queue client runtime
-    will attempt to validate an XML message against the specified XSDs
-    (or against the DTD, if no XSD is specified) before sending it to
-    the broker. If the specified schema cannot be located or the message
-    cannot be validated, the message is not sent, and an exception is
-    thrown. +
-    This property should be set when a destination is inactive: that is,
-    when it has no consumers or producers and when there are no messages
-    in the destination. Otherwise the producer must reconnect.
-  `XMLSchemaURIList`;;
-    A space-separated list of XML schema document (XSD) URI strings. The
-    URIs point to the location of one or more XSDs to use for XML schema
-    validation, if `validateXMLSchemaEnabled` is set to `true`. The
-    default value is `null`. +
-    Use double quotes around this value if multiple URIs are specified,
-    as in the following example: +
-[source,oac_no_warn]
-----
-"http://foo/flap.xsd http://test.com/test.xsd"
-----
-::
-    If this property is not set or `null` and XML validation is enabled,
-    XML validation is performed using a DTD specified in the XML
-    document. If an XSD is changed as a result of changing application
-    requirements, all client applications that produce XML messages
-    based on the changed XSD must reconnect to the broker. +
-  To modify the value of these properties, you can use the
-  as-install`/mq/bin/imqcmd` command. See "link:../../openmq/mq-admin-guide/physical-destination-properties.html#GMADG00049[Physical
-  Destination Property Reference]" in Open Message Queue Administration
-  Guide for more information.
-`--target`::
-  Creates the physical destination only for the specified target.
-  Although the `create-jmsdest` subcommand is related to resources, a
-  physical destination is created using the JMS Service (JMS Broker),
-  which is part of the configuration. A JMS Broker is configured in the
-  config section of `domain.xml`. Valid values are as follows: +
-  `server`;;
-    Creates the physical destination for the default server instance.
-    This is the default value.
-  configuration-name;;
-    Creates the physical destination in the specified configuration.
-  cluster-name;;
-    Creates the physical destination for every server instance in the
-    specified cluster.
-  instance-name;;
-    Creates the physical destination for the specified server instance.
-`--force`::
-  Specifies whether the subcommand overwrites the existing JMS physical
-  destination of the same name. The default value is `false`.
-
-[[sthref339]]
-
-Operands
-
-dest_name::
-  A unique identifier for the JMS destination to be created.
-
-[[sthref340]]
-
-Examples
-
-[[GSRFM495]][[sthref341]]
-
-Example 1   Creating a JMS physical destination
-
-The following subcommand creates a JMS physical queue named
-`PhysicalQueue` with non-default property values.
-
-[source,oac_no_warn]
-----
-asadmin> create-jmsdest --desttype queue
---property maxNumMsgs=1000:maxBytesPerMsg=5k PhysicalQueue
-Command create-jmsdest executed successfully.
-----
-
-[[sthref342]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref343]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-jms-resource.html#create-jms-resource-1[`create-jms-resource`(1)],
-link:delete-jmsdest.html#delete-jmsdest-1[`delete-jmsdest`(1)],
-link:flush-jmsdest.html#flush-jmsdest-1[`flush-jmsdest`(1)],
-link:list-jmsdest.html#list-jmsdest-1[`list-jmsdest`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-jndi-resource.adoc b/docs/reference-manual/src/main/jbake/content/create-jndi-resource.adoc
deleted file mode 100644
index f11a79f..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-jndi-resource.adoc
+++ /dev/null
@@ -1,144 +0,0 @@
-type=page
-status=published
-title=create-jndi-resource
-next=create-jvm-options.html
-prev=create-jms-resource.html
-~~~~~~
-create-jndi-resource
-====================
-
-[[create-jndi-resource-1]][[GSRFM00041]][[create-jndi-resource]]
-
-create-jndi-resource
---------------------
-
-registers a JNDI resource
-
-[[sthref361]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-jndi-resource [--help] 
-[--target target] 
---restype restype --factoryclass factoryclass 
---jndilookupname jndilookupname [--enabled={true|false}] 
-[--description description] 
-[--property (name=value)[:name=value]*] 
-jndi-name
-----
-
-[[sthref362]]
-
-Description
-
-The `create-jndi-resource` subcommand registers a JNDI resource.
-
-This subcommand is supported in remote mode only.
-
-[[sthref363]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  This option specifies the target for which you are registering a JNDI
-  resource. Valid values for target are described below. +
-
-[width="100%",cols="100%",]
-|=======================================================================
-a|
-Note:
-
-The resource is always created for the domain as a whole, but the
-`resource-ref` for the resource is only created for the specified
-`--target`. This means that although the resource is defined at the
-domain level, it is only available at the specified target level. Use
-the `create-resource-ref` subcommand to refer to the resource in
-multiple targets if needed.
-
-|=======================================================================
-
-  `server`;;
-    Creates the resource for the default server instance. This value is
-    the default.
-  `domain`;;
-    Creates the resource for the domain
-  cluster-name;;
-    Creates the resource for every server instance in the cluster
-  instance-name;;
-    Creates the resource for a particular server instance
-`--restype`::
-  The JNDI resource type. Valid values are `topic` or `queue`.
-`--factoryclass`::
-  The class that creates the JNDI resource.
-`--jndilookupname`::
-  The lookup name that the external container uses.
-`--enabled`::
-  Determines whether the resource is enabled at runtime. Default is
-  true.
-`--description`::
-  The text that provides details about the JNDI resource.
-`--property`::
-  Optional properties for configuring the resource. Each property is
-  specified as a name-value pair. +
-  The available properties are specific to the implementation that is
-  specified by the `--factoryclass` option and are used by that
-  implementation. \{product---name} itself does not define any
-  properties for configuring a JNDI resource.
-
-[[sthref364]]
-
-Operands
-
-jndi-name::
-  The unique name of the JNDI resource to be created.
-
-[[sthref365]]
-
-Examples
-
-[[GSRFM499]][[sthref366]]
-
-Example 1   Creating a JNDI Resource
-
-This example creates the JNDI resource `my-jndi-resource` for the
-default server instance.
-
-[source,oac_no_warn]
-----
-asadmin> create-jndi-resource 
---restype com.example.jndi.MyResourceType 
---factoryclass com.example.jndi.MyInitialContextFactoryClass 
---jndilookupname remote-jndi-name 
---description "sample JNDI resource" my-jndi-resource
-JNDI resource my-jndi-resource created.
-Command create-jndi-resource executed successfully.
-----
-
-[[sthref367]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref368]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-resource-ref.html#create-resource-ref-1[`create-resource-ref`(1)],
-link:delete-jndi-resource.html#delete-jndi-resource-1[`delete-jndi-resource`(1)],
-link:list-jndi-resources.html#list-jndi-resources-1[`list-jndi-resources`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-jvm-options.adoc b/docs/reference-manual/src/main/jbake/content/create-jvm-options.adoc
deleted file mode 100644
index 5c1c097..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-jvm-options.adoc
+++ /dev/null
@@ -1,263 +0,0 @@
-type=page
-status=published
-title=create-jvm-options
-next=create-lifecycle-module.html
-prev=create-jndi-resource.html
-~~~~~~
-create-jvm-options
-==================
-
-[[create-jvm-options-1]][[GSRFM00042]][[create-jvm-options]]
-
-create-jvm-options
-------------------
-
-creates options for the Java application launcher
-
-[[sthref369]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-jvm-options [--help] 
-[--target target] [--profiler={true|false}] 
-(jvm-option-name=jvm-option-value) [:jvm-option-name=jvm-option-value*]
-----
-
-[[sthref370]]
-
-Description
-
-The `create-jvm-options` subcommand creates command-line options that
-are passed to the Java application launcher when \{product---name} is
-started. The options that this subcommand creates are in addition to the
-options that are preset with \{product---name}. Java application
-launcher options are stored in the Java configuration `java—config`
-element or the profiler `profiler` element of the `domain.xml` file. The
-options are sent to the command line in the order they appear in the
-`java—config` element or the profiler `profiler` element in the
-`domain.xml` file.
-
-Profiler options are used to record the settings that are required to
-start a particular profiler. The profiler must already exist. If
-necessary, use the
-link:create-profiler.html#create-profiler-1[`create-profiler`(1)]
-subcommand to create the profiler.
-
-This subcommand can be used to create the following types of options:
-
-* Java system properties. These options are set through the `-D` option
-of the Java application launcher. For example: +
-`-Djava.security.manager` +
-`-Denvironment=Production`
-* Startup parameters for the Java application launcher. These options
-are preceded by the dash character (`-`). For example: +
-`--XX:PermSize=`size +
-`-Xmx1024m` +
-`-d64`
-
-If the subcommand specifies an option that already exists, the command
-does not re-create the option.
-
-
-[NOTE]
-=======================================================================
-
-Ensure that any option that you create is valid. The subcommand might
-allow you to create an invalid option, but such an invalid option can
-cause startup to fail.
-
-=======================================================================
-
-
-An option can be verified by examining the server log after
-\{product---name} starts. Options for the Java application launcher are
-written to the `server.log` file before any other information when
-\{product---name} starts.
-
-The addition of some options requires a server restart for changes to
-become effective. Other options are set immediately in the environment
-of the domain administration server (DAS) and do not require a restart.
-Whether a restart is required depends on the type of option.
-
-* Restart is not required for Java system properties whose names do not
-start with `-Djava.` or `-Djavax.` (including the trailing period). For
-example, restart is not required for the following Java system property: +
-`-Denvironment=Production`
-* Restart is required for the following options:
-
-** Java system properties whose names start with `-Djava.` or `-Djavax.`
-(including the trailing period). For example: +
-`-Djava.security.manager`
-
-** Startup parameters for the Java application launcher. For example: +
-`-client` +
-`-Xmx1024m` +
-`-d64`
-
-To restart the DAS, use the
-link:restart-domain.html#restart-domain-1[`restart-domain`(1)] command.
-
-This subcommand is supported in remote mode only.
-
-[[sthref371]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Specifies the target on which you are creating Java application
-  launcher options. +
-  Valid values are as follows: +
-  `server`;;
-    Specifies the DAS (default).
-  instance-name;;
-    Specifies a \{product---name} instance.
-  cluster-name;;
-    Specifies a cluster.
-  configuration-name;;
-    Specifies a named configuration.
-`--profiler`::
-  Indicates whether the Java application launcher options are for the
-  profiler. The profiler must exist for this option to be true. Default
-  is false.
-
-[[sthref372]]
-
-Operands
-
-jvm-option-name::
-  One or more options delimited by a colon (:). The format of an option
-  depends on the following: +
-  * If the option has a name and a value, the format is
-  option-name=value.
-  * If the option has only a name, the format is option-name. For
-  example, `-Xmx2048m`.
-  * If the first option name could be misinterpreted as one or more
-  `asadmin` short options, the format is `--` option-name. For example,
-  `-server` in the following command could be misinterpreted as `-se`,
-  the `asadmin` short forms for `--secure` and `--echo`: +
-[source,oac_no_warn]
-----
-create-jvm-options -server
-----
-::
-  To create the JVM option `-server`, instead use the command: +
-[source,oac_no_warn]
-----
-create-jvm-options -- -server
-----
-:: +
-
-[width="100%",cols="100%",]
-|=======================================================================
-a|
-Note:
-
-If an option name or option value contains a colon, the backslash
-(`\`) must be used to escape the colon in the name or value. Other
-characters might also require an escape character. For more
-information about escape characters in subcommand options, see the
-link:asadmin.html#asadmin-1m[`asadmin`(1M)] man page.
-
-|=======================================================================
-
-
-[[sthref373]]
-
-Examples
-
-[[GSRFM500]][[sthref374]]
-
-Example 1   Setting Java System Properties
-
-This example sets multiple Java system properties.
-
-[source,oac_no_warn]
-----
-asadmin> create-jvm-options -Dunixlocation=/root/example:
--Dvariable=\$HOME:-Dwindowslocation=d\:\\sun\\appserver:-Doption1=-value1
-created 4 option(s)
-Command create-jvm-options executed successfully.
-----
-
-[[GSRFM501]][[sthref375]]
-
-Example 2   Setting a Startup Parameter for the Java Application
-Launcher
-
-This example sets the maximum available heap size to 1024.
-
-[source,oac_no_warn]
-----
-asadmin> create-jvm-options -Xmx1024m
-created 1 option(s)
-Command create-jvm-options executed successfully.
-----
-
-[[GSRFM502]][[sthref376]]
-
-Example 3   Setting Multiple Startup Parameters for the Java Application
-Launcher
-
-This example sets the maximum available heap size to 1024 and requests
-details about garbage collection.
-
-[source,oac_no_warn]
-----
-asadmin> create-jvm-options "-Xmx1024m:-XX\:+PrintGCDetails"
-created 1 option(s)
-Command create-jvm-options executed successfully.
-----
-
-In this case, one of the two parameters already exists, so the
-subcommand reports that only one option was set.
-
-[[GSRFM503]][[sthref377]]
-
-Example 4   Setting a JVM Startup Parameter for the Profiler
-
-This example sets a JVM startup parameter for the profiler.
-
-[source,oac_no_warn]
-----
-asadmin> create-jvm-options --profiler=true -XX\:MaxPermSize=192m
-created 1 option(s)
-Command create-jvm-options executed successfully.
-----
-
-[[sthref378]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref379]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-profiler.html#create-profiler-1[`create-profiler`(1)],
-link:delete-jvm-options.html#delete-jvm-options-1[`delete-jvm-options`(1)],
-link:list-jvm-options.html#list-jvm-options-1[`list-jvm-options`(1)],
-link:restart-domain.html#restart-domain-1[`restart-domain`(1)]
-
-For more information about the Java application launcher, see the
-reference page for the operating system that you are using:
-
-* Oracle Solaris and Linux: java - the Java application launcher
-(`http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/java.html`)
-* Windows: java - the Java application launcher
-(`http://docs.oracle.com/javase/6/docs/technotes/tools/windows/java.html`)
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-lifecycle-module.adoc b/docs/reference-manual/src/main/jbake/content/create-lifecycle-module.adoc
deleted file mode 100644
index b33dc79..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-lifecycle-module.adoc
+++ /dev/null
@@ -1,141 +0,0 @@
-type=page
-status=published
-title=create-lifecycle-module
-next=create-local-instance.html
-prev=create-jvm-options.html
-~~~~~~
-create-lifecycle-module
-=======================
-
-[[create-lifecycle-module-1]][[GSRFM00043]][[create-lifecycle-module]]
-
-create-lifecycle-module
------------------------
-
-creates a lifecycle module
-
-[[sthref380]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-lifecycle-module [--help] 
---classname classname
-[--enabled={true|false}] [--target target]
-[--classpath classpath] [--loadorder loadorder]
-[--failurefatal={false|true} ] [--description description]
-[--property (name=value)[:name=value]*]
-module_name
-----
-
-[[sthref381]]
-
-Description
-
-The `create-lifecycle-module` subcommand creates a lifecycle module. A
-lifecycle module provides a means of running a short or long duration
-Java-based task at a specific stage in the server life cycle. This
-subcommand is supported in remote mode only.
-
-[[sthref382]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--classname`::
-  This is the fully qualified name of the startup class.
-`--target`::
-  Indicates the location where the lifecycle module is to be created.
-  Valid values are +
-  * `server`- Specifies the default server instance as the target for
-  creating the lifecycle module. `server` is the name of the default
-  server instance and is the default value for this option.
-  * cluster_name- Specifies a particular cluster as the target for
-  creating the lifecycle module.
-  * instance_name- Specifies a particular stand-alone server instance as
-  the target for creating the lifecycle module.
-`--classpath`::
-  This option indicates where the lifecycle module is located. It is a
-  classpath with the standard format: either colon-separated (Unix) or
-  semicolon-separated (Windows) JAR files and directories. The
-  referenced JAR files and directories are not uploaded to the server
-  instance.
-`--loadorder`::
-  This option represents an integer value that can be used to force the
-  order in which deployed lifecycle modules are loaded at server
-  startup. Smaller numbered modules are loaded sooner. Order is
-  unspecified if two or more lifecycle modules have the same load-order
-  value. The default is `Integer.MAX_VALUE`, which means the lifecycle
-  module is loaded last.
-`--failurefatal`::
-  This option tells the system what to do if the lifecycle module does
-  not load correctly. When this option is set to true, the system aborts
-  the server startup if this module does not load properly. The default
-  value is false.
-`--enabled`::
-  This option determines whether the lifecycle module is enabled at
-  runtime. The default value is true.
-`--description`::
-  This is the text description of the lifecycle module.
-`--property`::
-  This is an optional attribute containing name/value pairs used to
-  configure the lifecycle module.
-
-[[sthref383]]
-
-Operands
-
-module_name::
-  This operand is a unique identifier for the deployed server lifecycle
-  event listener module.
-
-[[sthref384]]
-
-Examples
-
-[[GSRFM504]][[sthref385]]
-
-Example 1   Creating a Lifecycle Module
-
-The following example creates a lifecycle module named `customSetup`.
-
-[source,oac_no_warn]
-----
-asadmin> create-lifecycle-module --classname "com.acme.CustomSetup" 
---classpath "/export/customSetup" --loadorder 1 --failurefatal=true 
---description "this is a sample customSetup" 
---property rmi="Server\=acme1\:7070":timeout=30 customSetup
-Command create-lifecycle-module executed successfully
-----
-
-The escape character `\` is used in the property option to specify that
-the equal sign (=) and colon (:) are part of the `rmi` property value.
-
-[[sthref386]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref387]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-lifecycle-module.html#delete-lifecycle-module-1[`delete-lifecycle-module`(1)],
-link:list-lifecycle-modules.html#list-lifecycle-modules-1[`list-lifecycle-modules`(1)]
-
-"link:../application-development-guide/lifecycle-listeners.html#GSDVG00014[Developing Lifecycle Listeners]" in GlassFish Server
-Open Source Edition Application Development Guide
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-local-instance.adoc b/docs/reference-manual/src/main/jbake/content/create-local-instance.adoc
deleted file mode 100644
index b7877e5..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-local-instance.adoc
+++ /dev/null
@@ -1,401 +0,0 @@
-type=page
-status=published
-title=create-local-instance
-next=create-managed-executor-service.html
-prev=create-lifecycle-module.html
-~~~~~~
-create-local-instance
-=====================
-
-[[create-local-instance-1]][[GSRFM00044]][[create-local-instance]]
-
-create-local-instance
----------------------
-
-creates a \{product---name} instance on the host where the subcommand is
-run
-
-[[sthref388]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-local-instance [--help] 
-[--node node-name] [--nodedir node-dir] 
-[--config config-name | --cluster cluster-name]
-[--lbenabled={true|false}]
-[--portbase port-number] [--checkports={true|false}]
-[--savemasterpassword={false|true}]
-[--usemasterpassword={false|true}]
-[--systemproperties (name=value)[:name=value]* ]
-instance-name
-----
-
-[[sthref389]]
-
-Description
-
-The `create-local-instance` subcommand creates a \{product---name}
-instance on the node that represents the host where the subcommand is
-run. This subcommand does not require the Distributed Component Object
-Model (DCOM) remote protocol or secure shell (SSH) to be configured.
-
-You must run this subcommand from the host that is represented by the
-node where the instance is to reside. To contact the domain
-administration server (DAS), this subcommand requires the name of the
-host where the DAS is running. If a nondefault port is used for
-administration, this subcommand also requires the port number. If you
-are adding the first instance to a node, you must provide this
-information through the `--host` option and the `--port` option of the
-link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility. For the second and
-later instances, this information is obtained from the DAS properties of
-the node.
-
-A \{product---name} instance is a single Virtual Machine for the Java
-platform (Java Virtual Machine or JVM machine) on a single node in which
-\{product---name} is running. A node defines the host where the
-\{product---name} instance resides. The JVM machine must be compatible
-with the Java Platform, Enterprise Edition (Java EE).
-
-A \{product---name} instance requires a reference to the following
-items:
-
-* The node that defines the host where the instance resides. The node
-can be specified in the command to create the instance, but is required
-only if more than one node exists in the directory where files for nodes
-are stored. If no node is specified, the behavior of the subcommand
-depends on the number of existing nodes in the directory where nodes are
-stored:
-
-** If no nodes exist, the subcommand creates a node for the instance.
-The name of the node is the name of the host on which the subcommand is
-run.
-
-** If only one node exists, the subcommand creates a reference to the
-existing node for the instance.
-
-** If two or more nodes exist, an error occurs.
-* The named configuration that defines the configuration of the
-instance. The configuration can be specified in the command to create
-the instance, but is not required. If no configuration is specified for
-an instance that is not joining a cluster, the subcommand creates a
-configuration for the instance. An instance that is joining a cluster
-receives its configuration from its parent cluster.
-
-Each \{product---name} instance is one of the following types of
-instance:
-
-Standalone instance::
-  A standalone instance does not share its configuration with any other
-  instances or clusters. A standalone instance is created if either of
-  the following conditions is met: +
-  * No configuration or cluster is specified in the command to create
-  the instance.
-  * A configuration that is not referenced by any other instances or
-  clusters is specified in the command to create the instance. +
-  When no configuration or cluster is specified, a copy of the
-  `default-config` configuration is created for the instance. The name
-  of this configuration is instance-name`-config`, where instance-name
-  represents the name of an unclustered server instance.
-Shared instance::
-  A shared instance shares its configuration with other instances or
-  clusters. A shared instance is created if a configuration that is
-  referenced by other instances or clusters is specified in the command
-  to create the instance.
-Clustered instance::
-  A clustered instance inherits its configuration from the cluster to
-  which the instance belongs and shares its configuration with other
-  instances in the cluster. A clustered instance is created if a cluster
-  is specified in the command to create the instance. +
-  Any instance that is not part of a cluster is considered an
-  unclustered server instance. Therefore, standalone instances and
-  shared instances are unclustered server instances.
-
-By default, this subcommand attempts to resolve possible port conflicts
-for the instance that is being created. The subcommand also assigns
-ports that are currently not in use and not already assigned to other
-instances on the same node. The subcommand assigns these ports on the
-basis of an algorithm that is internal to the subcommand. Use the
-`--systemproperties` option to resolve port conflicts for additional
-instances on the same node. System properties of an instance can be
-manipulated by using the
-link:create-system-properties.html#create-system-properties-1[`create-system-properties`(1)]
-subcommand and the
-link:delete-system-property.html#delete-system-property-1[`delete-system-property`(1)]
-subcommand.
-
-When creating an instance, the subcommand retrieves the files that are
-required for secure synchronization with the domain administration
-server (DAS). The instance is synchronized with the DAS when the
-instance is started
-
-[[sthref390]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--node`::
-  The name of the node that defines the host where the instance is to be
-  created. The node must be specified only if more than one node exists
-  in the directory where nodes are stored. Otherwise, the node may be
-  omitted. If a node is specified, the node must exist. +
-  If no node is specified, the behavior of the subcommand depends on the
-  number of existing nodes in the directory where nodes are stored: +
-  * If no nodes exist, the subcommand creates a node for the instance.
-  The name of the node is the name of the host on which the subcommand
-  is run.
-  * If only one node exists, the subcommand creates a reference to the
-  existing node for the instance.
-  * If two or more nodes exist, an error occurs.
-`--nodedir`::
-  The path to the directory in which the files for instance's node is to
-  be stored. The default is as-install`/nodes`.
-`--config`::
-  Specifies the named configuration that the instance references. The
-  configuration must exist and must not be named `default-config` or
-  `server-config`. Specifying the `--config` option creates a shared
-  instance. +
-  The `--config` option and the `--cluster` option are mutually
-  exclusive. If both options are omitted, a standalone instance is
-  created.
-`--cluster`::
-  Specifies the cluster from which the instance inherits its
-  configuration. Specifying the `--cluster` option creates a clustered
-  instance. +
-  The `--config` option and the `--cluster` option are mutually
-  exclusive. If both options are omitted, a standalone instance is
-  created.
-`--lbenabled`::
-  Specifies whether the instance is enabled for load balancing. Possible
-  values are as follows: +
-  `true`;;
-    The instance is enabled for load balancing (default). +
-    When an instance is enabled for load balancing, a load balancer
-    sends requests to the instance.
-  `false`;;
-    The instance is disabled for load balancing. +
-    When an instance is disabled for load balancing, a load balancer
-    does not send requests to the instance.
-`--portbase`::
-  Determines the number with which the port assignment should start. An
-  instance uses a certain number of ports that are statically assigned.
-  The portbase value determines where the assignment should start. The
-  values for the ports are calculated as follows: +
-  * Administration port: portbase + 48
-  * HTTP listener port: portbase + 80
-  * HTTPS listener port: portbase + 81
-  * JMS port: portbase + 76
-  * IIOP listener port: portbase + 37
-  * Secure IIOP listener port: portbase + 38
-  * Secure IIOP with mutual authentication port: portbase + 39
-  * JMX port: portbase + 86
-  * JPA debugger port: portbase + 9
-  * Felix shell service port for OSGi module management: portbase + 66 +
-  When the `--portbase` option is specified, the output of this
-  subcommand includes a complete list of used ports.
-`--checkports`::
-  Specifies whether to check for the availability of the administration,
-  HTTP, JMS, JMX, and IIOP ports. The default value is `true`.
-`--savemasterpassword`::
-  Setting this option to `true` allows the master password to be written
-  to the file system. If the master password is written to the file
-  system, the instance can be started without the need to prompt for the
-  password. If this option is `true`, the `--usemasterpassword` option
-  is also true, regardless of the value that is specified on the command
-  line. Because writing the master password to the file system is an
-  insecure practice, the default is `false`. +
-  The master-password file for an instance is saved in the node
-  directory, not the domain directory. Therefore, this option is
-  required only for the first instance that is created for each node in
-  a domain.
-`--usemasterpassword`::
-  Specifies whether the key store is encrypted with a master password
-  that is built into the system or a user-defined master password. +
-  If `false` (default), the keystore is encrypted with a well-known
-  password that is built into the system. Encrypting the keystore with a
-  password that is built into the system provides no additional
-  security. +
-  If `true`, the subcommand obtains the master password from the
-  `AS_ADMIN_MASTERPASSWORD` entry in the password file or prompts for
-  the master password. The password file is specified in the
-  `--passwordfile` option of the
-  link:asadmin.html#asadmin-1m[`asadmin`(1M)]utility. +
-  If the `--savemasterpassword` option is `true`, this option is also
-  true, regardless of the value that is specified on the command line. +
-  The master password must be the same for all instances in a domain.
-`--systemproperties`::
-  Defines system properties for the instance. These properties override
-  property definitions for port settings in the instance's
-  configuration. Predefined port settings must be overridden if, for
-  example, two clustered instances reside on the same host. In this
-  situation, port settings for one instance must be overridden because
-  both instances share the same configuration. +
-  The following properties are available: +
-  `ASADMIN_LISTENER_PORT`;;
-    This property specifies the port number of the HTTP port or HTTPS
-    port through which the DAS connects to the instance to manage the
-    instance. Valid values are 1-65535. On UNIX, creating sockets that
-    listen on ports 1-1024 requires superuser privileges.
-  `HTTP_LISTENER_PORT`;;
-    This property specifies the port number of the port that is used to
-    listen for HTTP requests. Valid values are 1-65535. On UNIX,
-    creating sockets that listen on ports 1-1024 requires superuser
-    privileges.
-  `HTTP_SSL_LISTENER_PORT`;;
-    This property specifies the port number of the port that is used to
-    listen for HTTPS requests. Valid values are 1-65535. On UNIX,
-    creating sockets that listen on ports 1-1024 requires superuser
-    privileges.
-  `IIOP_LISTENER_PORT`;;
-    This property specifies the port number of the port that is used for
-    IIOP connections. Valid values are 1-65535. On UNIX, creating
-    sockets that listen on ports 1-1024 requires superuser privileges.
-  `IIOP_SSL_LISTENER_PORT`;;
-    This property specifies the port number of the port that is used for
-    secure IIOP connections. Valid values are 1-65535. On UNIX, creating
-    sockets that listen on ports 1-1024 requires superuser privileges.
-  `IIOP_SSL_MUTUALAUTH_PORT`;;
-    This property specifies the port number of the port that is used for
-    secure IIOP connections with client authentication. Valid values are
-    1-65535. On UNIX, creating sockets that listen on ports 1-1024
-    requires superuser privileges.
-  `JAVA_DEBUGGER_PORT`;;
-    This property specifies the port number of the port that is used for
-    connections to the Java Platform Debugger Architecture (JPDA)
-    (http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html)
-    debugger. Valid values are 1-65535. On UNIX, creating sockets that
-    listen on ports 1-1024 requires superuser privileges.
-  `JMS_PROVIDER_PORT`;;
-    This property specifies the port number for the Java Message Service
-    provider. Valid values are 1-65535. On UNIX, creating sockets that
-    listen on ports 1-1024 requires superuser privileges.
-  `JMX_SYSTEM_CONNECTOR_PORT`;;
-    This property specifies the port number on which the JMX connector
-    listens. Valid values are 1-65535. On UNIX, creating sockets that
-    listen on ports 1-1024 requires superuser privileges.
-  `OSGI_SHELL_TELNET_PORT`;;
-    This property specifies the port number of the port that is used for
-    connections to the Apache Felix Remote Shell
-    (`http://felix.apache.org/site/apache-felix-remote-shell.html`).
-    This shell uses the Felix shell service to interact with the OSGi
-    module management subsystem. Valid values are 1-65535. On UNIX,
-    creating sockets that listen on ports 1-1024 requires superuser
-    privileges.
-
-[[sthref391]]
-
-Operands
-
-instance-name::
-  The name of the instance that is being created. +
-  The name must meet the following requirements: +
-  * The name may contain only ASCII characters.
-  * The name must start with a letter, a number, or an underscore.
-  * The name may contain only the following characters:
-  ** Lowercase letters
-  ** Uppercase letters
-  ** Numbers
-  ** Hyphen
-  ** Period
-  ** Underscore
-  * The name must be unique in the domain and must not be the name of
-  another \{product---name} instance, a cluster, a named configuration,
-  or a node.
-  * The name must not be `domain`, `server`, or any other keyword that
-  is reserved by \{product---name}.
-
-[[sthref392]]
-
-Examples
-
-[[GSRFM505]][[sthref393]]
-
-Example 1   Creating a Standalone \{product---name} Instance
-
-This example creates the standalone instance `il3` on the host where the
-command is run. The DAS is running on the same host. The instance
-references the only existing node.
-
-[source,oac_no_warn]
-----
-asadmin> create-local-instance il3
-Rendezvoused with DAS on localhost:4848.
-Port Assignments for server instance il3: 
-JMX_SYSTEM_CONNECTOR_PORT=28686
-JMS_PROVIDER_PORT=27676
-HTTP_LISTENER_PORT=28080
-ASADMIN_LISTENER_PORT=24848
-JAVA_DEBUGGER_PORT=29009
-IIOP_SSL_LISTENER_PORT=23820
-IIOP_LISTENER_PORT=23700
-OSGI_SHELL_TELNET_PORT=26666
-HTTP_SSL_LISTENER_PORT=28181
-IIOP_SSL_MUTUALAUTH_PORT=23920
-Command create-local-instance executed successfully.
-----
-
-[[GSRFM506]][[sthref394]]
-
-Example 2   Creating a Clustered \{product---name} Instance on a
-Specific Node
-
-This example creates the clustered instance `ymli2` on node `sj02`. The
-instance is a member of the cluster `ymlclust`.
-
-The command is run on the host `sj02`, which is the host that the node
-`sj02` represents. The DAS is running on the host `sr04` and uses the
-default HTTP port for administration. Because no instances exist on the
-node, the host on which the DAS is running is provided through the
-`--host` option of the `asadmin` utility.
-
-[source,oac_no_warn]
-----
-sj02# asadmin --host sr04 create-local-instance --cluster ymlclust --node sj02 ymli2
-Rendezvoused with DAS on sr04:4848.
-Port Assignments for server instance ymli2: 
-JMX_SYSTEM_CONNECTOR_PORT=28686
-JMS_PROVIDER_PORT=27676
-HTTP_LISTENER_PORT=28080
-ASADMIN_LISTENER_PORT=24848
-JAVA_DEBUGGER_PORT=29009
-IIOP_SSL_LISTENER_PORT=23820
-IIOP_LISTENER_PORT=23700
-OSGI_SHELL_TELNET_PORT=26666
-HTTP_SSL_LISTENER_PORT=28181
-IIOP_SSL_MUTUALAUTH_PORT=23920
-Command create-local-instance executed successfully.
-----
-
-[[sthref395]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref396]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-instance.html#create-instance-1[`create-instance`(1)],
-link:create-node-config.html#create-node-config-1[`create-node-config`(1)],
-link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
-link:create-node-ssh.html#create-node-ssh-1[`create-node-ssh`(1)],
-link:create-system-properties.html#create-system-properties-1[`create-system-properties`(1)],
-link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)],
-link:delete-system-property.html#delete-system-property-1[`delete-system-property`(1)],
-link:list-instances.html#list-instances-1[`list-instances`(1)],
-link:start-local-instance.html#start-local-instance-1[`start-local-instance`(1)],
-link:stop-local-instance.html#stop-local-instance-1[`stop-local-instance`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-managed-executor-service.adoc b/docs/reference-manual/src/main/jbake/content/create-managed-executor-service.adoc
deleted file mode 100644
index e1b9b35..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-managed-executor-service.adoc
+++ /dev/null
@@ -1,175 +0,0 @@
-type=page
-status=published
-title=create-managed-executor-service
-next=create-managed-scheduled-executor-service.html
-prev=create-local-instance.html
-~~~~~~
-create-managed-executor-service
-===============================
-
-[[create-managed-executor-service-1]][[GSRFM840]][[create-managed-executor-service]]
-
-create-managed-executor-service
--------------------------------
-
-creates a managed executor service resource
-
-[[sthref397]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-managed-executor-service [--help]
-[--enabled={false|true}]
-[--contextinfoenabled={false|true}]
-[--contextinfo={Classloader|JNDI|Security|WorkArea}]
-[--threadpriority threadpriority]
-[--longrunningtasks={false|true}]
-[--hungafterseconds hungafterseconds]
-[--corepoolsize corepoolsize]
-[--maximumpoolsize maximumpoolsize]
-[--keepaliveseconds keepaliveseconds]
-[--threadlifetimeseconds threadlifetimeseconds]
-[--taskqueuecapacity taskqueuecapacity]
-[--description description]
-[--property property]
-[--target target]
-jndi_name
-----
-
-[[sthref398]]
-
-Description
-
-The `create-managed-executor-service` subcommand creates a managed
-executor service resource.
-
-This subcommand is supported in remote mode only.
-
-[[sthref399]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--enabled`::
-  Determines whether the resource is enabled at runtime. The default
-  value is `true`.
-`--contextinfoenabled`::
-  Determines whether container contexts are propagated to threads. If
-  set to `true`, the contexts specified in the `--contextinfo` option
-  are propagated. If set to `false`, no contexts are propagated and the
-  `--contextinfo` option is ignored. The default value is `true`.
-`--contextinfo`::
-  Specifies individual container contexts to propagate to threads. Valid
-  values are Classloader, JNDI, Security, and WorkArea. Values are
-  specified in a comma-separated list and are case-insensitive. All
-  contexts are propagated by default.
-`--threadpriority`::
-  Specifies the priority to assign to created threads. The default value
-  is 5.
-`--longrunningtasks`::
-  Specifies whether the resource should be used for long-running tasks.
-  The default value is `false`. If set to `true`, long-running tasks are
-  not reported as stuck.
-`--hungafterseconds`::
-  Specifies the number of seconds that a task can execute before it is
-  considered unresponsive. The default value is 0, which means that
-  tasks are never considered unresponsive.
-`--corepoolsize`::
-  Specifies the number of threads to keep in a thread pool, even if they
-  are idle. The default value is 0. +
-  When a new task is submitted and the number of running threads is less
-  than `corepoolsize`, a new thread is created to handle the request.
-  When the value for `corepoolsize` is 0 (the default), new threads are
-  never created unless the task queue is full or the resource is using
-  direct queuing. Direct queuing occurs when `taskqueuecapacity` is 0,
-  or when `taskqueuecapacity` is 2147483647 and `corepoolsize` is 0.
-`--maximumpoolsize`::
-  Specifies the maximum number of threads that a thread pool can
-  contain. The default value is 2147483647, which means that the thread
-  pool is essentially unbounded and can contain any number of threads.
-`--keepaliveseconds`::
-  Specifies the number of seconds that threads can remain idle when the
-  number of threads is greater than `corepoolsize`. The default value is
-  60.
-`--threadlifetimeseconds`::
-  Specifies the number of seconds that threads can remain in a thread
-  pool before being purged, regardless of whether the number of threads
-  is greater than `corepoolsize` or whether the threads are idle. The
-  default value is 0, which means that threads are never purged.
-`--taskqueuecapacity`::
-  Specifies the number of submitted tasks that can be stored in the task
-  queue awaiting execution. The default value is 2147483647, which means
-  that the task queue is essentially unbounded and can store any number
-  of submitted tasks.
-`--description`::
-  Descriptive details about the resource.
-`--property`::
-  Optional attribute name/value pairs for configuring the resource. +
-  \{product---name} does not define any additional properties for this
-  resource. Moreover, this resource does not currently use any
-  additional properties.
-`--target`::
-  Specifies the target for which you are creating the resource. Valid
-  targets are: +
-  `server`;;
-    Creates the resource for the default server instance. This is the
-    default value.
-  `domain`;;
-    Creates the resource for the domain.
-  cluster_name;;
-    Creates the resource for every server instance in the specified
-    cluster.
-  instance_name;;
-    Creates the resource for the specified server instance.
-
-[[sthref400]]
-
-Operands
-
-jndi_name::
-  The JNDI name of this resource.
-
-[[sthref401]]
-
-Examples
-
-[[GSRFM841]][[sthref402]]
-
-Example 1   Creating a Managed Executor Service Resource
-
-This example creates a managed executor service resource named
-`concurrent/myExecutor`.
-
-[source,oac_no_warn]
-----
-asadmin> create-managed-executor-service concurrent/myExecutor
-Managed executor service concurrent/myExecutor created successfully.
-Command create-managed-executor-service executed successfully.
-----
-
-[[sthref403]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref404]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-managed-executor-service.html#delete-managed-executor-service-1[`delete-managed-executor-service`(1)],
-link:list-managed-executor-services.html#list-managed-executor-services-1[`list-managed-executor-services`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-managed-scheduled-executor-service.adoc b/docs/reference-manual/src/main/jbake/content/create-managed-scheduled-executor-service.adoc
deleted file mode 100644
index dc54656..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-managed-scheduled-executor-service.adoc
+++ /dev/null
@@ -1,159 +0,0 @@
-type=page
-status=published
-title=create-managed-scheduled-executor-service
-next=create-managed-thread-factory.html
-prev=create-managed-executor-service.html
-~~~~~~
-create-managed-scheduled-executor-service
-=========================================
-
-[[create-managed-scheduled-executor-service-1]][[GSRFM680]][[create-managed-scheduled-executor-service]]
-
-create-managed-scheduled-executor-service
------------------------------------------
-
-creates a managed scheduled executor service resource
-
-[[sthref405]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-managed-scheduled-executor-service [--help]
-[--enabled={false|true}]
-[--contextinfoenabled={false|true}]
-[--contextinfo={Classloader|JNDI|Security|WorkArea}]
-[--threadpriority threadpriority]
-[--longrunningtasks={false|true}]
-[--hungafterseconds hungafterseconds]
-[--corepoolsize corepoolsize]
-[--keepaliveseconds keepaliveseconds]
-[--threadlifetimeseconds threadlifetimeseconds]
-[--description description]
-[--property property]
-[--target target]
-jndi_name
-----
-
-[[sthref406]]
-
-Description
-
-The `create-managed-scheduled-executor-service` subcommand creates a
-managed scheduled executor service resource.
-
-This subcommand is supported in remote mode only.
-
-[[sthref407]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--enabled`::
-  Determines whether the resource is enabled at runtime. The default
-  value is `true`.
-`--contextinfoenabled`::
-  Determines whether container contexts are propagated to threads. If
-  set to `true`, the contexts specified in the `--contextinfo` option
-  are propagated. If set to `false`, no contexts are propagated and the
-  `--contextinfo` option is ignored. The default value is `true`.
-`--contextinfo`::
-  Specifies individual container contexts to propagate to threads. Valid
-  values are Classloader, JNDI, Security, and WorkArea. Values are
-  specified in a comma-separated list and are case-insensitive. All
-  contexts are propagated by default.
-`--threadpriority`::
-  Specifies the priority to assign to created threads. The default value
-  is 5.
-`--longrunningtasks`::
-  Specifies whether the resource should be used for long-running tasks.
-  The default value is `false`. If set to `true`, long-running tasks are
-  not reported as stuck.
-`--hungafterseconds`::
-  Specifies the number of seconds that a task can execute before it is
-  considered unresponsive. The default value is 0, which means that
-  tasks are never considered unresponsive.
-`--corepoolsize`::
-  Specifies the number of threads to keep in a thread pool, even if they
-  are idle. The default value is 0, which means that a thread is created
-  when the first task is scheduled.
-`--keepaliveseconds`::
-  Specifies the number of seconds that threads can remain idle when the
-  number of threads is greater than `corepoolsize`. The default value is
-  60.
-`--threadlifetimeseconds`::
-  Specifies the number of seconds that threads can remain in a thread
-  pool before being purged, regardless of whether the number of threads
-  is greater than `corepoolsize` or whether the threads are idle. The
-  default value is 0, which means that threads are never purged.
-`--description`::
-  Descriptive details about the resource.
-`--property`::
-  Optional attribute name/value pairs for configuring the resource. +
-  \{product---name} does not define any additional properties for this
-  resource. Moreover, this resource does not currently use any
-  additional properties.
-`--target`::
-  Specifies the target for which you are creating the resource. Valid
-  targets are: +
-  `server`;;
-    Creates the resource for the default server instance. This is the
-    default value.
-  `domain`;;
-    Creates the resource for the domain.
-  cluster_name;;
-    Creates the resource for every server instance in the specified
-    cluster.
-  instance_name;;
-    Creates the resource for the specified server instance.
-
-[[sthref408]]
-
-Operands
-
-jndi_name::
-  The JNDI name of this resource.
-
-[[sthref409]]
-
-Examples
-
-[[GSRFM461]][[sthref410]]
-
-Example 1   Creating a Managed Scheduled Executor Service Resource
-
-This example creates a managed scheduled executor service resource named
-`concurrent/myScheduledExecutor`.
-
-[source,oac_no_warn]
-----
-asadmin> create-managed-scheduled-executor-service concurrent/myScheduledExecutor
-Managed scheduled executor service concurrent/myScheduledExecutor created successfully.
-Command create-managed-scheduled-executor-service executed successfully.
-----
-
-[[sthref411]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref412]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-managed-scheduled-executor-service.html#delete-managed-scheduled-executor-service-1[`delete-managed-scheduled-executor-service`(1)],
-link:list-managed-scheduled-executor-services.html#list-managed-scheduled-executor-services-1[`list-managed-scheduled-executor-services`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-managed-thread-factory.adoc b/docs/reference-manual/src/main/jbake/content/create-managed-thread-factory.adoc
deleted file mode 100644
index e72e4d7..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-managed-thread-factory.adoc
+++ /dev/null
@@ -1,133 +0,0 @@
-type=page
-status=published
-title=create-managed-thread-factory
-next=create-message-security-provider.html
-prev=create-managed-scheduled-executor-service.html
-~~~~~~
-create-managed-thread-factory
-=============================
-
-[[create-managed-thread-factory-1]][[GSRFM842]][[create-managed-thread-factory]]
-
-create-managed-thread-factory
------------------------------
-
-creates a managed thread factory resource
-
-[[sthref413]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-managed-thread-factory [--help]
-[--enabled={false|true}]
-[--contextinfoenabled={false|true}]
-[--contextinfo={Classloader|JNDI|Security|WorkArea}]
-[--threadpriority threadpriority]
-[--description description]
-[--property property]
-[--target target]
-jndi_name
-----
-
-[[sthref414]]
-
-Description
-
-The `create-managed-thread-factory` subcommand creates a managed thread
-factory resource.
-
-This subcommand is supported in remote mode only.
-
-[[sthref415]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--enabled`::
-  Determines whether the managed thread factory is enabled at runtime.
-  The default value is `true`.
-`--contextinfoenabled`::
-  Determines whether container contexts are propagated to threads. If
-  set to `true`, the contexts specified in the `--contextinfo` option
-  are propagated. If set to `false`, no contexts are propagated and the
-  `--contextinfo` option is ignored. The default value is `true`.
-`--contextinfo`::
-  Specifies individual container contexts to propagate to threads. Valid
-  values are Classloader, JNDI, Security, and WorkArea. Values are
-  specified in a comma-separated list and are case-insensitive. All
-  contexts are propagated by default.
-`--threadpriority`::
-  Specifies the priority to assign to created threads. The default value
-  is 5.
-`--description`::
-  Descriptive details about the resource.
-`--property`::
-  Optional attribute name/value pairs for configuring the resource. +
-  \{product---name} does not define any additional properties for this
-  resource. Moreover, this resource does not currently use any
-  additional properties.
-`--target`::
-  Specifies the target for which you are creating the resource. Valid
-  targets are: +
-  `server`;;
-    Creates the resource for the default server instance. This is the
-    default value.
-  `domain`;;
-    Creates the resource for the domain.
-  cluster_name;;
-    Creates the resource for every server instance in the specified
-    cluster.
-  instance_name;;
-    Creates the resource for the specified server instance.
-
-[[sthref416]]
-
-Operands
-
-jndi_name::
-  The JNDI name of this resource.
-
-[[sthref417]]
-
-Examples
-
-[[GSRFM843]][[sthref418]]
-
-Example 1   Creating a Managed Thread Factory Resource
-
-This example creates a managed thread factory resource named
-`concurrent/myThreadFactory`.
-
-[source,oac_no_warn]
-----
-asadmin> create-managed-thread-factory concurrent/myThreadFactory
-Managed thread factory concurrent/myThreadFactory created successfully.
-Command create-managed-thread-factory executed successfully.
-----
-
-[[sthref419]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref420]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-managed-thread-factory.html#delete-managed-thread-factory-1[`delete-managed-thread-factory`(1)],
-link:list-managed-thread-factories.html#list-managed-thread-factories-1[`list-managed-thread-factories`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-message-security-provider.adoc b/docs/reference-manual/src/main/jbake/content/create-message-security-provider.adoc
deleted file mode 100644
index e17b8e0..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-message-security-provider.adoc
+++ /dev/null
@@ -1,191 +0,0 @@
-type=page
-status=published
-title=create-message-security-provider
-next=create-module-config.html
-prev=create-managed-thread-factory.html
-~~~~~~
-create-message-security-provider
-================================
-
-[[create-message-security-provider-1]][[GSRFM00045]][[create-message-security-provider]]
-
-create-message-security-provider
---------------------------------
-
-enables administrators to create a message security provider, which
-specifies how SOAP messages will be secured.
-
-[[sthref421]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-message-security-provider [--help]
-[--target target]
---classname provider_class
-[--layer message_layer] [--providertype provider_type]
-[--requestauthsource request_auth_source ]
-[--requestauthrecipient request_auth_recipient ]
-[--responseauthsource response_auth_source ]
-[--responseauthrecipient response_auth_recipient ]
-[--isdefaultprovider] [--property name=value[:name=value]*] 
-provider_name
-----
-
-[[sthref422]]
-
-Description
-
-The `create-message-security-provider` subcommand enables the
-administrator to create a message security provider for the security
-service which specifies how SOAP messages will be secured.
-
-This command is supported in remote mode only.
-
-[[sthref423]]
-
-Options
-
-If an option has a short option name, then the short option precedes the
-long option name. Short options have one dash whereas long options have
-two dashes.
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Specifies the target for which you are creating the message security
-  provider. The following values are valid: +
-  `server`;;
-    Creates the provider for the default server instance `server` and is
-    the default value.
-  `domain`;;
-    Creates the provider for the domain.
-  cluster_name;;
-    Creates the provider for every server instance in the cluster.
-  instance_name;;
-    Creates the provider for a particular sever instance.
-`--classname`::
-  Defines the Java implementation class of the provider. Client
-  authentication providers must implement the
-  `com.sun.enterprise. security.jauth.ClientAuthModule` interface.
-  Server-side providers must implement the
-  `com.sun.enterprise.security jauth.ServerAuthModule` interface. A
-  provider may implement both interfaces, but it must implement the
-  interface corresponding to its provider type.
-`--layer`::
-  The message-layer entity used to define the value of the `auth-layer`
-  attribute of `message-security-config` elements. The default is
-  `HttpServlet`. Another option is `SOAP`.
-`--providertype`::
-  Establishes whether the provider is to be used as client
-  authentication provider, server authentication provider, or both.
-  Valid options for this property include `client`, `server`, or
-  `client-server`.
-`--requestauthsource`::
-  The `auth-source` attribute defines a requirement for message-layer
-  sender authentication (e.g. username password) or content
-  authentication (e.g. digital signature) to be applied to request
-  messages. Possible values are `sender` or `content`. When this
-  argument is not specified, source authentication of the request is not
-  required.
-`--requestauthrecipient`::
-  The `auth-recipient` attribute defines a requirement for message-layer
-  authentication of the receiver of a message to its sender (e.g. by XML
-  encryption). Possible values are `before-content` or `after-content`.
-  The default value is `after-content`.
-`--responseauthsource`::
-  The `auth-source` attribute defines a requirement for message-layer
-  sender authentication (e.g. username password) or content
-  authentication (e.g. digital signature) to be applied to response
-  messages. Possible values are `sender` or `content`. When this option
-  is not specified, source authentication of the response is not
-  required.
-`--responseauthrecipient`::
-  The `auth-recipient` attribute defines a requirement for message-layer
-  authentication of the receiver of the response message to its sender
-  (e.g. by XML encryption). Possible values are `before-content` or
-  `after-content`. The default value is `after-content`.
-`--isdefaultprovider`::
-  The `default-provider` attribute is used to designate the provider as
-  the default provider (at the layer) of the type or types identified by
-  the `providertype` argument. There is no default associated with this
-  option.
-`--property`::
-  Use this property to pass provider-specific property values to the
-  provider when it is initialized. Properties passed in this way might
-  include key aliases to be used by the provider to get keys from
-  keystores, signing, canonicalization, encryption algorithms, etc. +
-  The following properties may be set: +
-  `security.config`;;
-    Specifies the location of the message security configuration file.
-    To point to a configuration file in the domain-dir`/config`
-    directory, use the system property
-    `${com.sun.aas.instanceRoot}/config/`, for example:
-    `${com.sun.aas.instanceRoot}/config/wss-server-config-1.0.xml`. The
-    default is domain-dir`/config/ wss-serverconfig-1.0.xml`.
-  `debug`;;
-    If `true`, enables dumping of server provider debug messages to the
-    server log. The default is `false`.
-  `dynamic.username. password`;;
-    If `true`, signals the provider runtime to collect the user name and
-    password from the `CallbackHandler` for each request. If `false`,
-    the user name and password for `wsse:UsernameToken`(s) is collected
-    once, during module initialization. This property is only applicable
-    for a `ClientAuthModule`. The default is `false`.
-  `encryption.key.alias`;;
-    Specifies the encryption key used by the provider. The key is
-    identified by its keystore alias. The default value is `s1as`.
-  `signature.key.alias`;;
-    Specifies the signature key used by the provider. The key is
-    identified by its keystore alias. The default value is `s1as`.
-
-[[sthref424]]
-
-Operands
-
-provider_name::
-  The name of the provider used to reference the `provider-config`
-  element.
-
-[[sthref425]]
-
-Examples
-
-[[GSRFM507]][[sthref426]]
-
-Example 1   Creating a Message Security Provider
-
-The following example shows how to create a message security provider
-for a client.
-
-[source,oac_no_warn]
-----
-asadmin> create-message-security-provider 
---classname com.sun.enterprise.security.jauth.ClientAuthModule
---providertype client mySecurityProvider
-----
-
-[[sthref427]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref428]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-message-security-provider.html#delete-message-security-provider-1[`delete-message-security-provider`(1)],
-link:list-message-security-providers.html#list-message-security-providers-1[`list-message-security-providers`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-module-config.adoc b/docs/reference-manual/src/main/jbake/content/create-module-config.adoc
deleted file mode 100644
index dc1c27f..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-module-config.adoc
+++ /dev/null
@@ -1,114 +0,0 @@
-type=page
-status=published
-title=create-module-config
-next=create-network-listener.html
-prev=create-message-security-provider.html
-~~~~~~
-create-module-config
-====================
-
-[[create-module-config-1]][[GSRFM844]][[create-module-config]]
-
-create-module-config
---------------------
-
-adds the default configuration of a module to `domain.xml`
-
-[[sthref429]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-module-config [--help]
-[--dryrun={false|true}]
-[--all={false|true}]
-[--target target] 
-[service_name]
-----
-
-[[sthref430]]
-
-Description
-
-The `create-module-config` subcommand adds the default configuration of
-a module to `domain.xml`.
-
-This subcommand is supported in remote mode only.
-
-[[sthref431]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--dryrun`::
-  Displays the default configuration of a module but does not add it to
-  `domain.xml`. The default value is `false`.
-`--all`::
-  Adds all default configurations of modules to `domain.xml` if they are
-  not already in it. The default value is `false`.
-`--target`::
-  Specifies the target to which the default configuration is being
-  added. +
-  Possible values are as follows: +
-  `server`;;
-    Adds the default configuration to the default server instance. This
-    is the default value.
-  `domain`;;
-    Adds the default configuration to the default domain.
-  cluster-name;;
-    Adds the default configuration to every server instance in the
-    specified cluster.
-  instance-name;;
-    Adds the default configuration to the specified instance.
-
-[[sthref432]]
-
-Operands
-
-service_name::
-  The name of the module for which the default configuration is to be
-  added.
-
-[[sthref433]]
-
-Examples
-
-[[GSRFM845]][[sthref434]]
-
-Example 1   Adding a Default Configuration to domain.xml
-
-This example adds the default configuration of the web container module
-to `domain1` in `server-config` (the default configuration). Use the
-`--dryrun` option to preview the configuration before it is added.
-
-[source,oac_no_warn]
-----
-asadmin> create-module-config web-container
-Command create-module-config executed successfully.
-----
-
-[[sthref435]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref436]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-module-config.html#delete-module-config-1[`delete-module-config`(1)],
-link:get-active-module-config.html#get-active-module-config-1[`get-active-module-config`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-network-listener.adoc b/docs/reference-manual/src/main/jbake/content/create-network-listener.adoc
deleted file mode 100644
index 6505f3f..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-network-listener.adoc
+++ /dev/null
@@ -1,159 +0,0 @@
-type=page
-status=published
-title=create-network-listener
-next=create-node-config.html
-prev=create-module-config.html
-~~~~~~
-create-network-listener
-=======================
-
-[[create-network-listener-1]][[GSRFM00046]][[create-network-listener]]
-
-create-network-listener
------------------------
-
-adds a new network listener socket
-
-[[sthref437]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-network-listener [--help]
-[--address address] 
---listenerport listener-port 
-[--threadpool thread-pool] 
---protocol protocol 
-[--transport transport] 
-[--enabled={true|false}] 
-[--jkenabled={false|true}]
-[--target target]
-listener-name
-----
-
-[[sthref438]]
-
-Description
-
-The `create-network-listener` subcommand creates a network listener.
-This subcommand is supported in remote mode only.
-
-
-[NOTE]
-=======================================================================
-
-If you edit the special network listener named `admin-listener`, you
-must restart the server for the changes to take effect. The
-Administration Console does not tell you that a restart is required in
-this case.
-
-=======================================================================
-
-
-
-[NOTE]
-=======================================================================
-
-You can use the `create-http-listener` subcommand to create a network
-listener that uses the HTTP protocol without having to first create a
-protocol, transport, or HTTP configuration. This subcommand is a
-convenient shortcut, but it gives access to only a limited number of
-options.
-
-=======================================================================
-
-
-[[sthref439]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--address`::
-  The IP address or the hostname (resolvable by DNS).
-`--listenerport`::
-  The port number to create the listen socket on. Legal values are
-  1-65535. On UNIX, creating sockets that listen on ports 1-1024
-  requires superuser privileges. Configuring an SSL listen socket to
-  listen on port 443 is standard.
-`--threadpool`::
-  The name of the thread pool for this listener. Specifying a thread
-  pool is optional. The default is `http-thread-pool`.
-`--protocol`::
-  The name of the protocol for this listener.
-`--transport`::
-  The name of the transport for this listener. Specifying a transport is
-  optional. The default is `tcp`.
-`--enabled`::
-  If set to `true`, the default, the listener is enabled at runtime.
-`--jkenabled`::
-  If set to `true`, `mod_jk` is enabled for this listener. The default
-  is false.
-`--target`::
-  Creates the network listener only on the specified target. Valid
-  values are as follows: +
-  `server`;;
-    Creates the network listener on the default server instance. This is
-    the default value.
-  configuration-name;;
-    Creates the network listener in the specified configuration.
-  cluster-name;;
-    Creates the network listener on all server instances in the
-    specified cluster.
-  standalone-instance-name;;
-    Creates the network listener on the specified standalone server
-    instance.
-
-[[sthref440]]
-
-Operands
-
-listener-name::
-  The name of the network listener.
-
-[[sthref441]]
-
-Examples
-
-[[GSRFM508]][[sthref442]]
-
-Example 1   Creating a Network Listener
-
-The following command creates a network listener named `sampleListener`
-that is not enabled at runtime:
-
-[source,oac_no_warn]
-----
-asadmin> create-network-listener --listenerport 7272 protocol http-1 
---enabled=false sampleListener
-Command create-network-listener executed successfully.
-----
-
-[[sthref443]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref444]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-http-listener.html#create-http-listener-1[`create-http-listener`(1)],
-link:create-protocol.html#create-protocol-1[`create-protocol`(1)],
-link:create-threadpool.html#create-threadpool-1[`create-threadpool`(1)],
-link:create-transport.html#create-transport-1[`create-transport`(1)],
-link:delete-network-listener.html#delete-network-listener-1[`delete-network-listener`(1)],
-link:list-network-listeners.html#list-network-listeners-1[`list-network-listeners`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-node-config.adoc b/docs/reference-manual/src/main/jbake/content/create-node-config.adoc
deleted file mode 100644
index fd89dea..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-node-config.adoc
+++ /dev/null
@@ -1,169 +0,0 @@
-type=page
-status=published
-title=create-node-config
-next=create-node-dcom.html
-prev=create-network-listener.html
-~~~~~~
-create-node-config
-==================
-
-[[create-node-config-1]][[GSRFM00047]][[create-node-config]]
-
-create-node-config
-------------------
-
-creates a node that is not enabled for remote communication
-
-[[sthref445]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-node-config [--help]
-[--nodehost node-host]
-[--installdir as-install-parent] [--nodedir node-dir] node-name
-----
-
-[[sthref446]]
-
-Description
-
-The `create-node-config` subcommand creates a node that is not enabled
-for remote communication. The `create-node-config` subcommand does not
-require the Distributed Component Object Model (DCOM) remote protocol or
-secure shell (SSH) to be configured to create the node.
-
-A node represents a host on which the \{product---name} software is
-installed. A node must exist for every host on which \{product---name}
-instances reside.
-
-
-[NOTE]
-=======================================================================
-
-To represent the host where the DAS is running, \{product---name}
-provides the predefined node `localhost-`domain. The predefined node
-`localhost-`domain is not enabled for remote communication.
-
-=======================================================================
-
-
-All administration of instances on a node that is not enabled for remote
-communication must be performed on the host that the node represents.
-The domain administration server (DAS) on a remote host cannot contact
-the node. To administer instances on a node that represents a host that
-is remote from the DAS, you must use the following subcommands:
-
-* link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)]
-* link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)]
-* link:start-local-instance.html#start-local-instance-1[`start-local-instance`(1)]
-
-However, you may use
-link:stop-local-instance.html#stop-local-instance-1[`stop-local-instance`(1)]
-or link:stop-instance.html#stop-instance-1[`stop-instance`(1)] to stop
-the instances.
-
-This subcommand is supported in remote mode only.
-
-[[sthref447]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--nodehost`::
-  The name of the host that the node represents. If this option is
-  omitted, no host is specified for the node.
-`--installdir`::
-  The full path to the parent of the base installation directory of the
-  \{product---name} software on the host, for example,
-  `/export/glassfish3/`. If this option is omitted, no parent of the
-  base installation directory of the \{product---name} software is
-  specified for the node.
-`--nodedir`::
-  The path to the directory that is to contain \{product---name}
-  instances that are created on the node. If a relative path is
-  specified, the path is relative to the as-install directory. If this
-  option is omitted, no directory for instances is specified for the
-  node.
-
-[[sthref448]]
-
-Operands
-
-node-name::
-  The name of the node. +
-  The name must meet the following requirements: +
-  * The name may contain only ASCII characters.
-  * The name must start with a letter, a number, or an underscore.
-  * The name may contain only the following characters:
-  ** Lowercase letters
-  ** Uppercase letters
-  ** Numbers
-  ** Hyphen
-  ** Period
-  ** Underscore
-  * The name must be unique in the domain and must not be the name of
-  another node, a cluster, a named configuration, or a \{product---name}
-  instance.
-  * The name must not be `domain`, `server`, or any other keyword that
-  is reserved by \{product---name}.
-
-[[sthref449]]
-
-Examples
-
-[[GSRFM509]][[sthref450]]
-
-Example 1   Creating a Node That Is Not Enabled for Remote Communication
-
-This example creates the node `sj03` for host `sj03.example.com`. The
-node is not enabled for remote communication.
-
-[source,oac_no_warn]
-----
-asadmin> create-node-config --nodehost sj03.example.com sj03
-
-Command create-node-config executed successfully.
-----
-
-[[sthref451]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref452]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)],
-link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
-link:create-node-ssh.html#create-node-ssh-1[`create-node-ssh`(1)],
-link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)],
-link:delete-node-config.html#delete-node-config-1[`delete-node-config`(1)],
-link:install-node.html#install-node-1[`install-node`(1)],
-link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)],
-link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)],
-link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
-link:start-local-instance.html#start-local-instance-1[`start-local-instance`(1)],
-link:stop-instance.html#stop-instance-1[`stop-instance`(1)],
-link:stop-local-instance.html#stop-local-instance-1[`stop-local-instance`(1)],
-link:uninstall-node.html#uninstall-node-1[`uninstall-node`(1)],
-link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)],
-link:uninstall-node-ssh.html#uninstall-node-ssh-1[`uninstall-node-ssh`(1)],
-link:update-node-config.html#update-node-config-1[`update-node-config`(1)],
-link:update-node-ssh.html#update-node-dcom-1[`update-node-dcom`(1)],
-link:update-node-ssh001.html#update-node-ssh-1[`update-node-ssh`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-node-dcom.adoc b/docs/reference-manual/src/main/jbake/content/create-node-dcom.adoc
deleted file mode 100644
index f4087e5..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-node-dcom.adoc
+++ /dev/null
@@ -1,226 +0,0 @@
-type=page
-status=published
-title=create-node-dcom
-next=create-node-ssh.html
-prev=create-node-config.html
-~~~~~~
-create-node-dcom
-================
-
-[[create-node-dcom-1]][[GSRFM510]][[create-node-dcom]]
-
-create-node-dcom
-----------------
-
-creates a node that is enabled for communication over DCOM
-
-[[sthref453]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-node-dcom [--help]
---nodehost node-host
-[--installdir as-install-parent] [--nodedir node-dir] 
-[--windowsuser windows-user] [--windowsdomain windows-domain]
-[--force={false|true}]
-[--install={false|true}] [--archive archive]
-node-name
-----
-
-[[sthref454]]
-
-Description
-
-The `create-node-dcom` subcommand creates a node that is enabled for
-communication over the Distributed Component Object Model (DCOM) remote
-protocol. The DCOM protocol is available only on Windows systems.
-
-A node represents a host on which the \{product---name} software is
-installed. A node must exist for every host on which \{product---name}
-instances reside.
-
-In a DCOM-enabled network, the domain administration server (DAS)
-contacts a node's host through the DCOM connector to manage
-\{product---name} instances that reside on the node. DCOM is used only
-for communications between hosts. DCOM is never used for communications
-within a single host.
-
-By default, the subcommand fails and the node is not created if the DAS
-cannot contact the node's host through DCOM. To force the node to be
-created in the DAS configuration even if the host cannot be contacted
-through DCOM, set the `--force` option to `true`.
-
-The `create-node-dcom` subcommand cannot create a node that represents
-the local host, that is, the host on which the subcommand is run. The
-subcommand fails regardless of how the local host is specified, for
-example, by using the keyword `localhost`, the Internet Protocol (IP)
-address of the host, or the host name.
-
-This subcommand is supported in remote mode only.
-
-[[sthref455]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--nodehost`::
-  The name of the host that the node represents. The name of the host
-  must be specified. Otherwise, an error occurs.
-`--installdir`::
-  The full path to the parent of the base installation directory of the
-  \{product---name} software on the host, for example, `C:\glassfish3`.
-  The default is the parent of the default base installation directory
-  of the \{product---name} software for the DAS. This default is useful
-  only if \{product---name} is installed in the same location on all
-  hosts.
-`--nodedir`::
-  The path to the directory that is to contain \{product---name}
-  instances that are created on the node. The default is
-  as-install`\nodes`, where as-install is the base installation
-  directory of the \{product---name} software on the host. If a relative
-  path is specified, the path is relative to the as-install directory.
-`--windowsuser`::
-`-w`::
-  The user on this node's host that is to run the process for connecting
-  to the host through DCOM. The default is the user that is running the
-  DAS process. If the `--nodehost` option is set to `localhost-`domain,
-  the `--windowsuser` option is ignored
-`--windowsdomain`::
-`-d`::
-  The name of the Windows domain that contains the user that the
-  `--windowsuser` option specifies. The default is the name of the host
-  on which the subcommand is run.
-`--force`::
-  Specifies whether the node is created in the DAS configuration even if
-  validation of the node's parameters fails. To validate a node's
-  parameters, the DAS must be able to contact the node's host through
-  DCOM. Possible values are as follows: +
-  `false`;;
-    The node is not created if validation of the node's parameters fails
-    (default).
-  `true`;;
-    The node is created even if validation of the node's parameters
-    fails.
-`--install`::
-  Specifies whether the subcommand shall install the \{product---name}
-  software on the host that the node represents. +
-  Possible values are as follows: +
-  `false`;;
-    The subcommand shall not install the \{product---name} software on
-    the host (default).
-  `true`;;
-    The subcommand shall install the \{product---name} software on the
-    host.
-`--archive`::
-  The absolute path to the archive file of the \{product---name}
-  software that is to be installed. If this option is omitted and the
-  `--install` is `true`, the subcommand creates a ZIP archive of the
-  \{product---name} software from the installation where this subcommand
-  is run. The archive does not contain the `domains` directory or the
-  `nodes` directory.
-
-[[sthref456]]
-
-Operands
-
-node-name::
-  The name of the node. +
-  The name must meet the following requirements: +
-  * The name may contain only ASCII characters.
-  * The name must start with a letter, a number, or an underscore.
-  * The name may contain only the following characters:
-  ** Lowercase letters
-  ** Uppercase letters
-  ** Numbers
-  ** Hyphen
-  ** Period
-  ** Underscore
-  * The name must be unique in the domain and must not be the name of
-  another node, a cluster, a named configuration, or a \{product---name}
-  instance.
-  * The name must not be `domain`, `server`, or any other keyword that
-  is reserved by \{product---name}.
-
-[[sthref457]]
-
-Examples
-
-[[GSRFM511]][[sthref458]]
-
-Example 1   Creating a Node
-
-This example creates the node `wpmdl1` for the host
-`wpmdl1.example.com`. By default, the parent of the base installation
-directory of the \{product---name} software is `C:\glassfish3`.
-
-[source,oac_no_warn]
-----
-asadmin> create-node-dcom 
---nodehost wpmdl1.example.com wpmdl1
-Command create-node-dcom executed successfully.
-----
-
-[[GSRFM829]][[sthref459]]
-
-Example 2   Creating a Node With a Specific Installation Directory
-
-This example creates the node `wyml1` for the host `wyml1.example.com`.
-The parent of the base installation directory of the \{product---name}
-software on this host is `C:\middleware\glassfish3`.
-
-[source,oac_no_warn]
-----
-asadmin> create-node-dcom --installdir C:\middleware\glassfish3 
---nodehost wyml1.example.com wyml1
-Command create-node-dcom executed successfully.
-----
-
-[[GSRFM512]][[sthref460]]
-
-Example 3   Forcing the Creation of a Node
-
-This example forces the creation of node `xkyd` for the host
-`xkyd.example.com`. The node is created despite the failure of the DAS
-to contact the host `xkyd.example.com` to validate the node's
-parameters.
-
-[source,oac_no_warn]
-----
-asadmin> create-node-dcom --force --nodehost xkyd.example.com xkyd
-Warning: some parameters appear to be invalid.
-com.sun.enterprise.universal.process.WindowsException: Connection in error
-Continuing with node creation due to use of --force.
-Command create-node-dcom executed successfully.
-----
-
-[[sthref461]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref462]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-node-config.html#create-node-config-1[`create-node-config`(1)],
-link:create-node-ssh.html#create-node-ssh-1[`create-node-ssh`(1)],
-link:delete-node-dcom.html#delete-node-dcom-1[`delete-node-dcom`(1)],
-link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)],
-link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
-link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)],
-link:update-node-ssh.html#update-node-dcom-1[`update-node-dcom`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-node-ssh.adoc b/docs/reference-manual/src/main/jbake/content/create-node-ssh.adoc
deleted file mode 100644
index 3487062..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-node-ssh.adoc
+++ /dev/null
@@ -1,241 +0,0 @@
-type=page
-status=published
-title=create-node-ssh
-next=create-password-alias.html
-prev=create-node-dcom.html
-~~~~~~
-create-node-ssh
-===============
-
-[[create-node-ssh-1]][[GSRFM00048]][[create-node-ssh]]
-
-create-node-ssh
----------------
-
-creates a node that is enabled for communication over SSH
-
-[[sthref463]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-node-ssh [--help]
---nodehost node-host
-[--installdir as-install-parent] [--nodedir node-dir] 
-[--sshport ssh-port] [--sshuser ssh-user] 
-[--sshkeyfile ssh-keyfile]
-[--force={false|true}]
-[--install={false|true}] [--archive archive]
-node-name
-----
-
-[[sthref464]]
-
-Description
-
-The `create-node-ssh` subcommand creates a node that is enabled for
-communication over secure shell (SSH).
-
-A node represents a host on which the \{product---name} software is
-installed. A node must exist for every host on which \{product---name}
-instances reside.
-
-The domain administration server (DAS) contacts an SSH node's host
-through the SSH connector to manage \{product---name} instances that
-reside on the node. However, the DAS does not use the SSH connector to
-contact the host where the DAS is running because the DAS can run all
-`asadmin` subcommands locally.
-
-By default, the subcommand fails and the node is not created if the DAS
-cannot contact the node's host through SSH. To force the node to be
-created in the DAS configuration even if the host cannot be contacted
-through SSH, set the `--force` option to `true`.
-
-This subcommand is supported in remote mode only.
-
-[[sthref465]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--nodehost`::
-  The name of the host that the node represents. The name of the host
-  must be specified. Otherwise, an error occurs.
-`--installdir`::
-  The full path to the parent of the base installation directory of the
-  \{product---name} software on the host, for example,
-  `/export/glassfish3/`. The default is the parent of the default base
-  installation directory of the \{product---name} software for the DAS.
-  This default is useful only if \{product---name} is installed in the
-  same location on all hosts.
-`--nodedir`::
-  The path to the directory that is to contain \{product---name}
-  instances that are created on the node. The default is
-  as-install`/nodes`, where as-install is the base installation
-  directory of the \{product---name} software on the host. If a relative
-  path is specified, the path is relative to the as-install directory.
-`--sshport`::
-  The port to use for SSH connections to this node's host. The default
-  is 22. If the `--nodehost` option is set to `localhost-`domain, the
-  `--sshport` option is ignored.
-`--sshuser`::
-  The user on this node's host that is to run the process for connecting
-  to the host through SSH. The default is the user that is running the
-  DAS process. To ensure that the DAS can read this user's SSH private
-  key file, specify the user that is running the DAS process. If the
-  `--nodehost` option is set to `localhost-`domain, the `--sshuser`
-  option is ignored.
-`--sshkeyfile`::
-  The absolute path to the SSH private key file for user that the
-  `--sshuser` option specifies. This file is used for authentication to
-  the `sshd` daemon on the node's host. +
-
-[width="100%",cols="100%",]
-|=======================================================================
-a|
-Note:
-
-\{product---name} also supports password authentication through the
-`AS_ADMIN_SSHPASSWORD` entry in the password file. The password file
-is specified in the `--paswordfile` option of the
-link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility.
-
-|=======================================================================
-
-  If the SSH private key file is protected by a passphrase, the password
-  file must contain the `AS_ADMIN_SSHKEYPASSPHRASE` entry. +
-  The path to the key file must be reachable by the DAS and the key file
-  must be readable by the DAS. +
-  The default is the a key file in the user's `.ssh` directory. If
-  multiple key files are found, the subcommand uses the following order
-  of preference: +
-  1.  `id_rsa`
-  2.  `id_dsa`
-  3.  `identity`
-`--force`::
-  Specifies whether the node is created in the DAS configuration even if
-  validation of the node's parameters fails. To validate a node's
-  parameters, the DAS must be able to contact the node's host through
-  SSH. Possible values are as follows: +
-  `false`;;
-    The node is not created if validation of the node's parameters fails
-    (default).
-  `true`;;
-    The node is created even if validation of the node's parameters
-    fails.
-`--install`::
-  Specifies whether the subcommand shall install the \{product---name}
-  software on the host that the node represents. +
-  Possible values are as follows: +
-  `false`;;
-    The subcommand shall not install the \{product---name} software on
-    the host (default).
-  `true`;;
-    The subcommand shall install the \{product---name} software on the
-    host.
-`--archive`::
-  The absolute path to the archive file of the \{product---name}
-  software that is to be installed. If this option is omitted and the
-  `--install` is `true`, the subcommand creates a ZIP archive of the
-  \{product---name} software from the installation where this subcommand
-  is run. The archive does not contain the `domains` directory or the
-  `nodes` directory.
-
-[[sthref466]]
-
-Operands
-
-node-name::
-  The name of the node. +
-  The name must meet the following requirements: +
-  * The name may contain only ASCII characters.
-  * The name must start with a letter, a number, or an underscore.
-  * The name may contain only the following characters:
-  ** Lowercase letters
-  ** Uppercase letters
-  ** Numbers
-  ** Hyphen
-  ** Period
-  ** Underscore
-  * The name must be unique in the domain and must not be the name of
-  another node, a cluster, a named configuration, or a \{product---name}
-  instance.
-  * The name must not be `domain`, `server`, or any other keyword that
-  is reserved by \{product---name}.
-
-[[sthref467]]
-
-Examples
-
-[[GSRFM513]][[sthref468]]
-
-Example 1   Creating a Node
-
-This example creates the node `adc` for the host `adc.example.com`. By
-default, the parent of the base installation directory of the
-\{product---name} software is `/export/glassfish3`.
-
-[source,oac_no_warn]
-----
-asadmin> create-node-ssh 
---nodehost adc.example.com 
---installdir /export/glassfish3 adc
-
-Command create-node-ssh executed successfully.
-----
-
-[[GSRFM514]][[sthref469]]
-
-Example 2   Forcing the Creation of a Node
-
-This example forces the creation of node `eg1` for the host
-`eghost.example.com`. The node is created despite the failure of the DAS
-to contact the host `eghost.example.com` to validate the node's
-parameters.
-
-[source,oac_no_warn]
-----
-asadmin> create-node-ssh --force --nodehost eghost.example.com eg1
-Warning: some parameters appear to be invalid.
-Could not connect to host eghost.example.com using SSH.
-There was a problem while connecting to eghost.example.com:22
-eghost.example.com
-Continuing with node creation due to use of --force.
-
-Command create-node-ssh executed successfully.
-----
-
-[[sthref470]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref471]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-node-config.html#create-node-config-1[`create-node-config`(1)],
-link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
-link:delete-node-ssh.html#delete-node-ssh-1[`delete-node-ssh`(1)],
-link:install-node.html#install-node-1[`install-node`(1)],
-link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)],
-link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
-link:ping-node-ssh.html#ping-node-ssh-1[`ping-node-ssh`(1)],
-link:setup-ssh.html#setup-ssh-1[`setup-ssh`(1)],
-link:uninstall-node.html#uninstall-node-1[`uninstall-node`(1)],
-link:uninstall-node-ssh.html#uninstall-node-ssh-1[`uninstall-node-ssh`(1)],
-link:update-node-ssh001.html#update-node-ssh-1[`update-node-ssh`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-password-alias.adoc b/docs/reference-manual/src/main/jbake/content/create-password-alias.adoc
deleted file mode 100644
index de1ac4a..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-password-alias.adoc
+++ /dev/null
@@ -1,126 +0,0 @@
-type=page
-status=published
-title=create-password-alias
-next=create-profiler.html
-prev=create-node-ssh.html
-~~~~~~
-create-password-alias
-=====================
-
-[[create-password-alias-1]][[GSRFM00049]][[create-password-alias]]
-
-create-password-alias
----------------------
-
-creates a password alias
-
-[[sthref472]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-password-alias [--help] 
-aliasname
-----
-
-[[sthref473]]
-
-Description
-
-The `create-password-alias` subcommand creates an alias for a password.
-An alias is a token of the form `${ALIAS=aliasname}`. The password that
-corresponds to the alias name is stored in an encrypted form.
-
-The `create-password-alias` subcommand can be run interactively or
-noninteractively.
-
-* When run interactively, the subcommand prompts the user for the alias
-password and to confirm the alias password.
-* When run noninteractively, the subcommand reads the alias password
-from a file that is passed through the `--passwordfile` option of the
-link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility. The file must
-contain an entry of the form `{cprefix}ALIASPASSWORD=`alias-password,
-where alias-password is the alias password. The noninteractive form of
-this command is suitable for use in scripts.
-
-This subcommand is supported in remote mode only.
-
-[[sthref474]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref475]]
-
-Operands
-
-aliasname::
-  Your choice of name for the password alias.
-
-[[sthref476]]
-
-Examples
-
-[[GSRFM515]][[sthref477]]
-
-Example 1   Creating a Password Alias Interactively
-
-This example creates the password alias `jmspassword-alias`
-interactively.
-
-[source,oac_no_warn]
-----
-asadmin> create-password-alias jmspassword-alias 
-Enter the alias password>
-Enter the alias password again>
-Command create-password-alias executed successfully.
-----
-
-[[GSRFM830]][[sthref478]]
-
-Example 2   Creating a Password Alias Noninteractively
-
-This example uses the `--passwordfile` option of the `asadmin` utility
-to create the password alias `winuser` noninteractively.
-
-[source,oac_no_warn]
-----
-$ asadmin --passwordfile aspwfile.txt create-password-alias winuser
-Command create-password-alias executed successfully.
-----
-
-The file `aspwfile.txt` contains the following entry to specify the
-alias password:
-
-[source,oac_no_warn]
-----
-AS_ADMIN_ALIASPASSWORD=sp@rky
-----
-
-[[sthref479]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref480]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-password-alias.html#delete-password-alias-1[`delete-password-alias`(1)],
-link:list-password-aliases.html#list-password-aliases-1[`list-password-aliases`(1)],
-link:update-password-alias.html#update-password-alias-1[`update-password-alias`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-profiler.adoc b/docs/reference-manual/src/main/jbake/content/create-profiler.adoc
deleted file mode 100644
index d1582e1..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-profiler.adoc
+++ /dev/null
@@ -1,121 +0,0 @@
-type=page
-status=published
-title=create-profiler
-next=create-protocol.html
-prev=create-password-alias.html
-~~~~~~
-create-profiler
-===============
-
-[[create-profiler-1]][[GSRFM00050]][[create-profiler]]
-
-create-profiler
----------------
-
-creates the profiler element
-
-[[sthref481]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-profiler [--help] 
-[--target target_name] 
-[--classpath classpath] [--nativelibpath native_library_path] [--enabled=true] 
-[--property(name=value)[:name=value]*] profiler_name
-----
-
-[[sthref482]]
-
-Description
-
-The `create-profiler` subcommand creates the profiler element. A server
-instance is tied to the profiler by the profiler element in the Java
-configuration. Only one profiler exists at a time. If you attempt to
-create a profiler while one already exists, an error message is
-displayed.
-
-For changes to take effect, the server must restarted.
-
-This subcommand is supported in remote mode only.
-
-[[sthref483]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  This option specifies the target on which you are creating a profiler.
-  Valid values are +
-  `server`;;
-    Creates the profiler for the default server instance. This is the
-    default value.
-  configuration_name;;
-    Creates the profiler for the named configuration
-  cluster_name;;
-    Creates the profiler for every server instance in the cluster
-  instance_name;;
-    Creates the profiler for a particular server instance
-`--classpath`::
-  Java classpath string that specifies the classes needed by the
-  profiler.
-`--nativelibpath`::
-  This path is automatically constructed to be a concatenation of the
-  \{product---name} installation relative path for its native shared
-  libraries, standard JRE native library path, the shell environment
-  setting (`LD_LIBRARY_PATH` on UNIX) and any path that may be specified
-  in the profile element.
-`--enabled`::
-  Profiler is enabled by default.
-`--property`::
-  Name/value pairs of provider-specific attributes.
-
-[[sthref484]]
-
-Operands
-
-profiler_name::
-  Name of the profiler.
-
-[[sthref485]]
-
-Examples
-
-[[GSRFM516]][[sthref486]]
-
-Example 1   Creating a Profiler
-
-This example creates a profiler named `sample_profiler`.
-
-[source,oac_no_warn]
-----
-asadmin> create-profiler --classpath /home/appserver/
---nativelibpath /u/home/lib --enabled=false
---property defaultuser=admin:password=adminadmin sample_profiler
-Created Profiler with id = sample_profiler
-----
-
-[[sthref487]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref488]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-profiler.html#delete-profiler-1[`delete-profiler`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-protocol-filter.adoc b/docs/reference-manual/src/main/jbake/content/create-protocol-filter.adoc
deleted file mode 100644
index f969a85..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-protocol-filter.adoc
+++ /dev/null
@@ -1,110 +0,0 @@
-type=page
-status=published
-title=create-protocol-filter
-next=create-protocol-finder.html
-prev=create-protocol.html
-~~~~~~
-create-protocol-filter
-======================
-
-[[create-protocol-filter-1]][[GSRFM00052]][[create-protocol-filter]]
-
-create-protocol-filter
-----------------------
-
-adds a new protocol filter
-
-[[sthref497]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-protocol-filter [--help]
---protocol protocol-name 
---classname class-name 
-[--target server]
-protocol-filter-name
-----
-
-[[sthref498]]
-
-Description
-
-The `create-protocol-filter` subcommand creates a protocol filter for a
-protocol. This subcommand is supported in remote mode only.
-
-[[sthref499]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--protocol`::
-  The name of the associated protocol.
-`--classname`::
-  The fully qualified name of the Java class that implements the
-  protocol filter.
-`--target`::
-  Creates the protocol filter only on the specified target. Valid values
-  are as follows: +
-  `server`;;
-    Creates the protocol filter on the default server instance. This is
-    the default value.
-  configuration-name;;
-    Creates the protocol filter in the specified configuration.
-  cluster-name;;
-    Creates the protocol filter on all server instances in the specified
-    cluster.
-  standalone-instance-name;;
-    Creates the protocol filter on the specified standalone server
-    instance.
-
-[[sthref500]]
-
-Operands
-
-protocol-filter-name::
-  The name of the protocol filter.
-
-[[sthref501]]
-
-Examples
-
-[[GSRFM518]][[sthref502]]
-
-Example 1   Creating a Protocol Filter
-
-The following command creates a protocol filter named `http1-filter`:
-
-[source,oac_no_warn]
-----
-asadmin> create-protocol-filter --protocol http1
---classname com.company22.MyProtocolFilter http1-filter
-Command create-protocol-filter executed successfully.
-----
-
-[[sthref503]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref504]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-protocol.html#create-protocol-1[`create-protocol`(1)],
-link:delete-protocol-filter.html#delete-protocol-filter-1[`delete-protocol-filter`(1)],
-link:list-protocol-filters.html#list-protocol-filters-1[`list-protocol-filters`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-protocol-finder.adoc b/docs/reference-manual/src/main/jbake/content/create-protocol-finder.adoc
deleted file mode 100644
index dd763d9..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-protocol-finder.adoc
+++ /dev/null
@@ -1,95 +0,0 @@
-type=page
-status=published
-title=create-protocol-finder
-next=create-resource-adapter-config.html
-prev=create-protocol-filter.html
-~~~~~~
-create-protocol-finder
-======================
-
-[[create-protocol-finder-1]][[GSRFM00053]][[create-protocol-finder]]
-
-create-protocol-finder
-----------------------
-
-adds a new protocol finder
-
-[[sthref505]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-protocol-finder [--help]
---protocol protocol-name 
---targetprotocol target-protocol-name 
---classname class-name 
-[--target server]
-protocol-finder-name
-----
-
-[[sthref506]]
-
-Description
-
-The `create-protocol-finder` subcommand creates a protocol finder for a
-protocol. This subcommand is supported in remote mode only.
-
-[[sthref507]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--protocol`::
-  The name of the associated protocol.
-`--targetprotocol`::
-  The name of the target protocol.
-`--classname`::
-  The fully qualified name of the Java class that implements the
-  protocol finder.
-`--target`::
-  Creates the protocol finder only on the specified target. Valid values
-  are as follows: +
-  `server`;;
-    Creates the protocol finder on the default server instance. This is
-    the default value.
-  configuration-name;;
-    Creates the protocol finder in the specified configuration.
-  cluster-name;;
-    Creates the protocol finder on all server instances in the specified
-    cluster.
-  standalone-instance-name;;
-    Creates the protocol finder on the specified standalone server
-    instance.
-
-[[sthref508]]
-
-Operands
-
-protocol-finder-name::
-  The name of the protocol finder.
-
-[[sthref509]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref510]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-protocol-finder.html#delete-protocol-finder-1[`delete-protocol-finder`(1)],
-link:list-protocol-finders.html#list-protocol-finders-1[`list-protocol-finders`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-protocol.adoc b/docs/reference-manual/src/main/jbake/content/create-protocol.adoc
deleted file mode 100644
index 30b1f59..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-protocol.adoc
+++ /dev/null
@@ -1,108 +0,0 @@
-type=page
-status=published
-title=create-protocol
-next=create-protocol-filter.html
-prev=create-profiler.html
-~~~~~~
-create-protocol
-===============
-
-[[create-protocol-1]][[GSRFM00051]][[create-protocol]]
-
-create-protocol
----------------
-
-adds a new protocol
-
-[[sthref489]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-protocol [--help]
-[--securityenabled={false|true}]
-[--target target]
-protocol-name
-----
-
-[[sthref490]]
-
-Description
-
-The `create-protocol` subcommand creates a protocol. This subcommand is
-supported in remote mode only.
-
-[[sthref491]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--securityenabled`::
-  If set to `true`, the protocol runs SSL. You can turn SSL2 or SSL3 ON
-  or OFF and set ciphers using an `ssl` element. The security setting
-  globally enables or disables SSL by making certificates available to
-  the server instance. The default value is `false`.
-`--target`::
-  Creates the protocol only on the specified target. Valid values are as
-  follows: +
-  `server`;;
-    Creates the protocol on the default server instance. This is the
-    default value.
-  configuration-name;;
-    Creates the protocol in the specified configuration.
-  cluster-name;;
-    Creates the protocol on all server instances in the specified
-    cluster.
-  standalone-instance-name;;
-    Creates the protocol on the specified standalone server instance.
-
-[[sthref492]]
-
-Operands
-
-protocol-name::
-  The name of the protocol.
-
-[[sthref493]]
-
-Examples
-
-[[GSRFM517]][[sthref494]]
-
-Example 1   Creating a Protocol
-
-The following command creates a protocol named `http-1` with security
-enabled:
-
-[source,oac_no_warn]
-----
-asadmin> create-protocol --securityenabled=true http-1
-Command create-protocol executed successfully.
-----
-
-[[sthref495]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref496]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-protocol.html#delete-protocol-1[`delete-protocol`(1)],
-link:list-protocols.html#list-protocols-1[`list-protocols`(1)],
-link:create-network-listener.html#create-network-listener-1[`create-network-listener`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-resource-adapter-config.adoc b/docs/reference-manual/src/main/jbake/content/create-resource-adapter-config.adoc
deleted file mode 100644
index 9973eb9..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-resource-adapter-config.adoc
+++ /dev/null
@@ -1,114 +0,0 @@
-type=page
-status=published
-title=create-resource-adapter-config
-next=create-resource-ref.html
-prev=create-protocol-finder.html
-~~~~~~
-create-resource-adapter-config
-==============================
-
-[[create-resource-adapter-config-1]][[GSRFM00054]][[create-resource-adapter-config]]
-
-create-resource-adapter-config
-------------------------------
-
-creates the configuration information for the connector module
-
-[[sthref511]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-resource-adapter-config [--help] 
-[--threadpoolid threadpool] 
-[--objecttype object-type] 
-[--property (property-name=value)[:name=value]*] 
-raname
-----
-
-[[sthref512]]
-
-Description
-
-The `create-resource-adapter-config` subcommand creates configuration
-information for the connector module. This subcommand can be run before
-deploying a resource adapter, so that the configuration information is
-available at the time of deployment. The resource adapter configuration
-can also be created after the resource adapter is deployed. In this
-case, the resource adapter is restarted with the new configuration. You
-must first create a thread pool, using the `create-threadpool`
-subcommand, and then identify that thread pool value as the ID in the
-`--threadpoolid` option.
-
-This subcommand is supported in remote mode only.
-
-[[sthref513]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  This option has been deprecated.
-`--threadpoolid`::
-  The thread pool ID from which the work manager gets the thread. This
-  option takes only one thread pool ID.
-`--objecttype`::
-  The default is `user`.
-`--property`::
-  Keyword-value pairs that specify additional configuration properties
-  of the resource adapter Java bean. The keyword-value pairs are
-  separated by a colon (`:`). The properties are the names of setter
-  methods of the class that is referenced by the `resourceadapter-class`
-  element in the `ra.xml` file.
-
-[[sthref514]]
-
-Operands
-
-raname::
-  Indicates the connector module name. It is the value of the
-  `resource-adapter-name` in the `domain.xml` file.
-
-[[sthref515]]
-
-Examples
-
-[[GSRFM519]][[sthref516]]
-
-Example 1   Creating a Resource Adapter Con figuration
-
-This example creates a resource adapter configuration for `ra1`.
-
-[source,oac_no_warn]
-----
-asadmin> create-resource-adapter-config --property foo=bar --threadpoolid 
-mycustomerthreadpool ra1
-Command create-resource-adapter-config executed successfully
-----
-
-[[sthref517]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref518]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-threadpool.html#create-threadpool-1[`create-threadpool`(1)],
-link:delete-resource-adapter-config.html#delete-resource-adapter-config-1[`delete-resource-adapter-config`(1)],
-link:list-resource-adapter-configs.html#list-resource-adapter-configs-1[`list-resource-adapter-configs`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-resource-ref.adoc b/docs/reference-manual/src/main/jbake/content/create-resource-ref.adoc
deleted file mode 100644
index b87848d..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-resource-ref.adoc
+++ /dev/null
@@ -1,130 +0,0 @@
-type=page
-status=published
-title=create-resource-ref
-next=create-service.html
-prev=create-resource-adapter-config.html
-~~~~~~
-create-resource-ref
-===================
-
-[[create-resource-ref-1]][[GSRFM00055]][[create-resource-ref]]
-
-create-resource-ref
--------------------
-
-creates a reference to a resource
-
-[[sthref519]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-resource-ref [--help] 
-[--target target]
-[--enabled={false|true}] reference_name
-----
-
-[[sthref520]]
-
-Description
-
-The `create-resource-ref` subcommand creates a reference from a cluster
-or an unclustered server instance to a previously created resource, for
-example, a JDBC resource created by using the `create-jdbc-resource`
-subcommand. This effectively results in the resource being made
-available in the JNDI tree of the instance or cluster.
-
-The target instance or instances making up the cluster need not be
-running or available for this subcommand to succeed. If one or more
-instances are not available, they will receive the new resource the next
-time they start.
-
-
-[NOTE]
-=======================================================================
-
-A `resource-ref` can only be created for bindable resources, such as a
-`jdbc-resource`, `connector-resource`, `admin-object-resource`,
-`mail-resource`, `custom-resource`, or `jndi-resource`.
-
-A `jdbc-connection-pool` or a `connector-connection-pool` are not
-referred to directly by applications. Instead, they are referred to
-through a `jdbc-resource` or `connector-resource`, respectively.
-
-=======================================================================
-
-
-This subcommand is supported in remote mode only.
-
-[[sthref521]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Specifies the target for which you are creating the resource
-  reference. Valid targets are as follows: +
-  `server`;;
-    Creates the resource reference for the default server instance. This
-    is the default target.
-  cluster_name;;
-    Creates the resource reference for every server instance in the
-    cluster.
-  instance_name;;
-    Creates the resource reference for the named unclustered server
-    instance.
-`--enabled`::
-  Indicates whether the resource should be enabled. This value will take
-  effect only if the resource is enabled at the global level. The
-  default is `true`.
-
-[[sthref522]]
-
-Operands
-
-reference_name::
-  The name or JNDI name of the resource.
-
-[[sthref523]]
-
-Examples
-
-[[GSRFM520]][[sthref524]]
-
-Example 1   Creating a Reference to a JMS Destination Resource
-
-This example creates a reference to the JMS destination resource
-`jms/Topic` on the cluster `Cluster1`.
-
-[source,oac_no_warn]
-----
-asadmin> create-resource-ref --target Cluster1 jms/Topic
-resource-ref jms/Topic created successfully.
-Command create-resource-ref executed successfully.
-----
-
-[[sthref525]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref526]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-resource-ref.html#delete-resource-ref-1[`delete-resource-ref`(1)],
-link:list-resource-refs.html#list-resource-refs-1[`list-resource-refs`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-service.adoc b/docs/reference-manual/src/main/jbake/content/create-service.adoc
deleted file mode 100644
index 2420ae2..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-service.adoc
+++ /dev/null
@@ -1,339 +0,0 @@
-type=page
-status=published
-title=create-service
-next=create-ssl.html
-prev=create-resource-ref.html
-~~~~~~
-create-service
-==============
-
-[[create-service-1]][[GSRFM00057]][[create-service]]
-
-create-service
---------------
-
-configures the starting of a DAS or a \{product---name} instance on an
-unattended boot
-
-[[sthref527]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-service [--help] 
-[--name service-name] 
-[--serviceproperties service-properties] 
-[--dry-run={false|true}] [--force={false|true}] 
-[--serviceuser service-user]
-[--domaindir domain-dir] 
-[--nodedir node-dir] [--node node]
-[domain-or-instance-name]
-----
-
-[[sthref528]]
-
-Description
-
-The `create-service` subcommand configures the starting of a domain
-administration server (DAS) or a \{product---name} instance on an
-unattended boot on Windows, Linux, and Oracle Solaris systems.
-
-If no operand is specified and the domains directory contains only one
-domain, the subcommand configures the starting of the DAS for the
-default domain. If no operand is specified and the domains directory
-contains multiple domains, an error occurs.
-
-If the operand specifies an instance, the `create-service` subcommand
-does not contact the domain administration server (DAS) to determine the
-node on which the instance resides. To determine the node on which the
-instance resides, the subcommand searches the directory that contains
-the node directories. If multiple node directories exist, the node must
-be specified as an option of the subcommand.
-
-The subcommand contains internal logic to determine whether the supplied
-operand is a DAS or an instance.
-
-This subcommand is supported in local mode only.
-
-Behavior of `create-service` on Windows Systems
-
-On Windows systems, the `create-service` subcommand creates a Windows
-service to represent the DAS or instance. The service is created in the
-disabled state. After this subcommand creates the service, you must use
-the Windows Services Manager or the Windows Services Wrapper to start,
-stop, uninstall, or install the service.
-
-On Windows systems, this subcommand must be run as the OS-level
-administrator user.
-
-The subcommand creates the following Windows Services Wrapper files for
-the service in the domain-dir`\bin` directory or the instance-dir`\bin`
-directory:
-
-* Configuration file: service-name`Service.xml`
-* Executable file: service-name`Service.exe`
-
-On Windows systems, this subcommand requires the
-http://www.microsoft.com/net/[Microsoft .NET Framework]
-(http://www.microsoft.com/net/). Otherwise, the subcommand fails.
-
-Behavior of `create-service` on Linux Systems
-
-On Linux systems, the `create-service` subcommand creates a
-System-V-style initialization script
-`/etc/init.d/GlassFish_`domain-or-instance-name and installs a link to
-this script in the `/etc/rc?.d` directories. After this subcommand
-creates the script, you must use this script to start, stop, or restart
-the domain or instance.
-
-On Linux systems, this subcommand must be run as the OS-level root user.
-
-Behavior of `create-service` on Oracle Solaris Systems
-
-On Oracle Solaris systems, the `create-service` subcommand creates a
-Service Management Facility (SMF) service to represent the DAS or
-instance. The service is created in the disabled state. After this
-subcommand creates the service, you must use SMF commands to start,
-enable, disable, delete, or stop the service. For more information about
-SMF, see the following documentation for the Oracle Solaris operating
-system:
-
-* "http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=SYSADV1hbrunlevels-25516[Managing
-Services (Overview)]" in System Administration Guide: Basic
-Administration
-* "http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=SYSADV1faauf[Managing
-Services (Tasks)]" in System Administration Guide: Basic Administration
-
-On Oracle Solaris systems, this subcommand must be run as the OS-level
-user with superuser privileges. The configuration file for the DAS or
-instance must be stored in a directory to which the superuser has access
-and cannot be stored on a network file system. The service that is
-created is controlled by the OS-level user who owns the directory where
-the configuration of the DAS or instance resides.
-
-On Oracle Solaris systems, the manifest file is created in the following
-directory by default:
-
-[source,oac_no_warn]
-----
-/var/svc/manifest/application/GlassFish/domain-or-instance-name_domain-or-instance-root-dir
-----
-
-To run this subcommand, you must have `solaris.smf.*` authorization. For
-information about how to grant authorizations to users, see the
-http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Museradd-1m[`useradd`(1M)]
-and
-http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Musermod-1m[`usermod`(1M)]
-man pages.
-
-To run these commands as non-root user, the system administrator must be
-contacted so that the relevant authorizations are granted. You must also
-ensure that the following conditions are met:
-
-* Oracle Solaris 10 administration commands such as
-http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Msvccfg-1m[`svccfg`(1M)],
-http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1svcs-1[`svcs`(1)],
-and
-http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1auths-1[`auths`(1)]
-are available through the `PATH` statement, so that these commands can
-be executed. A simple test to do so is to run the command `which svccfg`
-in the shell.
-* You must have write permission for the path
-`/var/svc/manifest/application/GlassFish`. Usually, the superuser has
-write permission to this path.
-
-If you delete a service that you created by using the `create-service`
-subcommand, you must delete the directory that contains the manifest
-file and the entire contents of the directory. Otherwise, an attempt to
-re-create the service by using the `create-service` subcommand fails.
-The Oracle Solaris command `svccfg` does not delete this directory.
-
-[[sthref529]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--name`::
-  (Windows and Oracle Solaris systems only) The name of the service that
-  you will use when administering the service through Oracle Solaris SMF
-  commands or the service management features of the Windows operating
-  system. The default is the name of the domain or instance that is
-  specified as the operand of this subcommand.
-`--serviceproperties`::
-  Specifies a colon(:)-separated list of various properties that are
-  specific to the service. +
-  To customize the display name of the service in the Windows Service
-  list, set the `DISPLAY_NAME` property to the required name. +
-  For Oracle Solaris 10 systems, if you specify `net_privaddr`, the
-  service's processes will be able to bind to the privileged ports
-  (<1024) on the platform. You can bind to ports< 1024 only if the owner
-  of the service is superuser, otherwise, this is not allowed.
-`--dry-run`::
-`-n`::
-  Previews your attempt to create a service. Indicates issues and the
-  outcome that will occur if you run the command without using the
-  `--dry-run` option. Nothing is actually configured. Default is false.
-`--force`::
-  Specifies whether the service is created even if validation of the
-  service fails. +
-  Possible values are as follows: +
-  `true`;;
-    The service is created even if validation of the service fails.
-  `false`;;
-    The service is not created (default).
-`--serviceuser`::
-  (Linux systems only) The user that is to run the \{product---name}
-  software when the service is started. The default is the user that is
-  running the subcommand. Specify this option if the \{product---name}
-  software is to be run by a user other than the root user.
-`--domaindir`::
-  The absolute path of the directory on the disk that contains the
-  configuration of the domain. If this option is specified, the operand
-  must specify a domain.
-`--nodedir`::
-  Specifies the directory that contains the instance's node directory.
-  The instance's files are stored in the instance's node directory. The
-  default is as-install`/nodes`. If this option is specified, the
-  operand must specify an instance.
-`--node`::
-  Specifies the node on which the instance resides. This option may be
-  omitted only if the directory that the `--nodedir` option specifies
-  contains only one node directory. Otherwise, this option is required.
-  If this option is specified, the operand must specify an instance.
-
-[[sthref530]]
-
-Operands
-
-domain-or-instance-name::
-  The name of the domain or instance to configure. If no operand is
-  specified, the default domain is used.
-
-[[sthref531]]
-
-Examples
-
-[[GSRFM522]][[sthref532]]
-
-Example 1   Creating a Service on a Windows System
-
-This example creates a service for the default domain on a system that
-is running Windows.
-
-[source,oac_no_warn]
-----
-asadmin> create-service
-Found the Windows Service and successfully uninstalled it.
-The Windows Service was created successfully.  It is ready to be started.  Here are 
-the details:
-ID of the service: domain1
-Display Name of the service:domain1 GlassFish Server
-Domain Directory: C:\glassfish3\glassfish\domains\domain1
-Configuration file for Windows Services Wrapper: C:\glassfish3\glassfish\domains\
-domain1\bin\domain1Service.xml
-The service can be controlled using the Windows Services Manager or you can use the
-Windows Services Wrapper instead:
-Start Command:  C:\glassfish3\glassfish\domains\domain1\bin\domain1Service.exe  start
-Stop Command:   C:\glassfish3\glassfish\domains\domain1\bin\domain1Service.exe  stop
-Uninstall Command:  C:\glassfish3\glassfish\domains\domain1\bin\domain1Service.exe
-uninstall
-Install Command:  C:\glassfish3\glassfish\domains\domain1\bin\domain1Service.exe
-install
-
-This message is also available in a file named PlatformServices.log in the domain's 
-root directory
-Command create-service executed successfully.
-----
-
-[[GSRFM523]][[sthref533]]
-
-Example 2   Creating a Service on a Linux System
-
-This example creates a service for the default domain on a system that
-is running Linux.
-
-[source,oac_no_warn]
-----
-asadmin> create-service
-Found the Linux Service and successfully uninstalled it.
-The Service was created successfully. Here are the details:
-Name of the service:domain1
-Type of the service:Domain
-Configuration location of the service:/etc/init.d/GlassFish_domain1
-User account that will run the service: root
-You have created the service but you need to start it yourself.
-Here are the most typical Linux commands of interest:
-
-* /etc/init.d/GlassFish_domain1 start
-* /etc/init.d/GlassFish_domain1 stop
-* /etc/init.d/GlassFish_domain1 restart
-
-For your convenience this message has also been saved to this file: 
-/export/glassfish3/glassfish/domains/domain1/PlatformServices.log
-Command create-service executed successfully.
-----
-
-[[GSRFM524]][[sthref534]]
-
-Example 3   Creating a Service on an Oracle Solaris System
-
-This example creates a service for the default domain on a system that
-is running Oracle Solaris.
-
-[source,oac_no_warn]
-----
-asadmin> create-service 
-The Service was created successfully. Here are the details:
-Name of the service:application/GlassFish/domain1
-Type of the service:Domain
-Configuration location of the service:/home/gfuser/glassfish-installations
-/glassfish3/glassfish/domains
-Manifest file location on the system:/var/svc/manifest/application
-/GlassFish/domain1_home_gfuser_glassfish-installations_glassfish3
-_glassfish_domains/Domain-service-smf.xml.
-You have created the service but you need to start it yourself. 
-Here are the most typical Solaris commands of interest:
-* /usr/bin/svcs -a | grep domain1 // status
-* /usr/sbin/svcadm enable domain1 // start
-* /usr/sbin/svcadm disable domain1 // stop
-* /usr/sbin/svccfg delete domain1 // uninstall
-Command create-service executed successfully.
-----
-
-[[sthref535]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref536]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1auths-1[`auths`(1)],
-http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1svcs-1[`svcs`(1)]
-
-http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Msvccfg-1m[`svccfg`(1M)],
-http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Museradd-1m[`useradd`(1M)],
-http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Musermod-1m[`usermod`(1M)]
-
-"http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=SYSADV1hbrunlevels-25516[Managing
-Services (Overview)]" in System Administration Guide: Basic
-Administration,
-"http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=SYSADV1faauf[Managing
-Services (Tasks)]" in System Administration Guide: Basic Administration
-
-Microsoft .NET Framework (`http://www.microsoft.com/net/`)
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-ssl.adoc b/docs/reference-manual/src/main/jbake/content/create-ssl.adoc
deleted file mode 100644
index 24accad..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-ssl.adoc
+++ /dev/null
@@ -1,185 +0,0 @@
-type=page
-status=published
-title=create-ssl
-next=create-system-properties.html
-prev=create-service.html
-~~~~~~
-create-ssl
-==========
-
-[[create-ssl-1]][[GSRFM00058]][[create-ssl]]
-
-create-ssl
-----------
-
-creates and configures the SSL element in the selected HTTP listener,
-IIOP listener, or IIOP service
-
-[[sthref537]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-ssl [--help]
-[--target target]
---type listener_or_service_type
---certname cert_name 
-[--ssl2enabled={false|true}] [--ssl2ciphers ss12ciphers] 
-[--ssl3enabled={true|false}] [--tlsenabled={true|false}]
-[--ssl3tlsciphers ssl3tlsciphers]
-[--tlsrollbackenabled={true|false}]
-[--clientauthenabled={false|true}]
-[listener_id]
-----
-
-[[sthref538]]
-
-Description
-
-The `create-ssl` subcommand creates and configures the SSL element in
-the selected HTTP listener, IIOP listener, or IIOP service to enable
-secure communication on that listener/service.
-
-This subcommand is supported in remote mode only.
-
-[[sthref539]]
-
-Options
-
-If an option has a short option name, then the short option precedes the
-long option name. Short options have one dash whereas long options have
-two dashes.
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Specifies the target on which you are configuring the ssl element. The
-  following values are valid: +
-  `server`;;
-    Specifies the server in which the iiop-service or HTTP/IIOP listener
-    is to be configured for SSL.
-  config;;
-    Specifies the configuration that contains the HTTP/IIOP listener or
-    iiop-service for which SSL is to be configured.
-  cluster;;
-    Specifies the cluster in which the HTTP/IIOP listener or
-    iiop-service is to be configured for SSL. All the server instances
-    in the cluster will get the SSL configuration for the respective
-    listener or iiop-service.
-  instance;;
-    Specifies the instance in which the HTTP/IIOP listener or
-    iiop-service is to be configured for SSL.
-`--type`::
-  The type of service or listener for which the SSL is created. The type
-  can be: +
-  * `network-listener`
-  * `http-listener`
-  * `iiop-listener`
-  * `iiop-service`
-  * `jmx-connector` +
-  When the type is `iiop-service`, the `ssl-client-config` along with
-  the embedded `ssl` element is created in `domain.xml`.
-`--certname`::
-  The nickname of the server certificate in the certificate database or
-  the PKCS#11 token. The format of the name in the certificate is
-  tokenname:nickname. For this property, the tokenname: is optional.
-`--ssl2enabled`::
-  Set this property to `true` to enable SSL2. The default value is
-  `false`. If both SSL2 and SSL3 are enabled for a virtual server, the
-  server tries SSL3 encryption first. In the event SSL3 encryption
-  fails, the server then tries SSL2 encryption.
-`--ssl2ciphers`::
-  A comma-separated list of the SSL2 ciphers to be used. Ciphers not
-  explicitly listed will be disabled for the target, even if those
-  ciphers are available in the particular cipher suite you are using. If
-  this option is not used, all supported ciphers are assumed to be
-  enabled. Allowed values are: +
-  * `rc4`
-  * `rc4export`
-  * `rc2`
-  * `rc2export`
-  * `idea`
-  * `des`
-  * `desede3`
-`--ssl3enabled`::
-  Set this property to `false` to disable SSL3. The default value is
-  `true`. If both SSL2 and SSL3 are enabled for a virtual server, the
-  server tries SSL3 encryption first. In the event SSL3 encryption
-  fails, the server then tries SSL2 encryption.
-`--tlsenabled`::
-  Set this property to `false` to disable TLS. The default value is
-  `true` It is good practice to enable TLS, which is a more secure
-  version of SSL.
-`--ssl3tlsciphers`::
-  A comma-separated list of the SSL3 and/or TLS ciphers to be used.
-  Ciphers not explicitly listed will be disabled for the target, even if
-  those ciphers are available in the particular cipher suite you are
-  using. If this option is not used, all supported ciphers are assumed
-  to be enabled. Allowed values are: +
-  * `SSL_RSA_WITH_RC4_128_MD5`
-  * `SSL_RSA_WITH_3DES_EDE_CBC_SHA`
-  * `SSL_RSA_WITH_DES_CBC_SHA`
-  * `SSL_RSA_EXPORT_WITH_RC4_40_MD5`
-  * `SSL_RSA_WITH_NULL_MD5`
-  * `SSL_RSA_WITH_RC4_128_SHA`
-  * `SSL_RSA_WITH_NULL_SHA`
-`--tlsrollbackenabled`::
-  Set to `true` (default) to enable TLS rollback. TLS rollback should be
-  enabled for Microsoft Internet Explorer 5.0 and 5.5. This option is
-  only valid when `-tlsenabled`=`true`.
-`--clientauthenabled`::
-  Set to `true` if you want SSL3 client authentication performed on
-  every request independent of ACL-based access control. Default value
-  is `false`.
-
-[[sthref540]]
-
-Operands
-
-listener_id::
-  The ID of the HTTP or IIOP listener for which the SSL element is to be
-  created. The listener_id is not required if the `--type` is
-  `iiop-service`.
-
-[[sthref541]]
-
-Examples
-
-[[GSRFM525]][[sthref542]]
-
-Example 1   Creating an SSL element for an HTTP listener
-
-The following example shows how to create an SSL element for an HTTP
-listener named `http-listener-1`.
-
-[source,oac_no_warn]
-----
-asadmin> create-ssl 
---type http-listener
---certname sampleCert http-listener-1
-Command create-ssl executed successfully.
-----
-
-[[sthref543]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref544]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-ssl.html#delete-ssl-1[`delete-ssl`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-system-properties.adoc b/docs/reference-manual/src/main/jbake/content/create-system-properties.adoc
deleted file mode 100644
index 23a53b0..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-system-properties.adoc
+++ /dev/null
@@ -1,125 +0,0 @@
-type=page
-status=published
-title=create-system-properties
-next=create-threadpool.html
-prev=create-ssl.html
-~~~~~~
-create-system-properties
-========================
-
-[[create-system-properties-1]][[GSRFM00059]][[create-system-properties]]
-
-create-system-properties
-------------------------
-
-adds one or more system property elements that can be referenced
-elsewhere in the configuration.
-
-[[sthref545]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-system-properties [--help] 
-[--target target]
-[name=value)[:name=value]*]
-----
-
-[[sthref546]]
-
-Description
-
-The `create-system-properties` subcommand adds or updates system
-properties that can be referenced elsewhere on the server.
-
-\{product---name} provides hooks where tokens (system properties) can be
-specified. Because \{product---name} does not have multiple server
-elements, you can specify a particular token at any level. When a domain
-supports multiple servers, the override potential can be exploited. When
-a domain is started or restarted, all `<system-property>` elements are
-resolved and available to the Java Virtual Machine by using the
-`System.setProperty()` call on each of them (with its name and value
-derived from the corresponding attributes of the element). This is
-analogous to sending the elements as `-D` parameters on the Java command
-line.
-
-This subcommand is supported in remote mode only.
-
-[[sthref547]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  The target on which you are creating the system properties.
-
-[[sthref548]]
-
-Operands
-
-target::
-  The valid targets for this subcommand are instance, cluster,
-  configuration, domain, and server. Server is the default option. Valid
-  values are: +
-  `server`;;
-    Creates the properties on the default server instance. This is the
-    default value.
-  `domain`;;
-    Creates the properties for all server instances in the default
-    domain.
-  configuration_name;;
-    Creates the properties in the specified configuration.
-  cluster_name;;
-    Creates the properties on all server instances in the specified
-    cluster.
-  instance_name;;
-    Creates the properties on a specified server instance.
-name=value::
-  The name value pairs of the system properties to add to the specified
-  target. Multiple system properties must be separated by a : (colon).
-  If a : (colon) appears in the name or value of a system property, it
-  must be escaped with a \ (blackslash). If any system properties were
-  previously defined, they are updated with the new values.
-
-[[sthref549]]
-
-Examples
-
-[[GSRFM526]][[sthref550]]
-
-Example 1   Creating System Properties
-
-This example creates a system property associated with an HTTP listener
-on a server instance named `myserver`.
-
-[source,oac_no_warn]
-----
-asadmin> create-system-properties --target myserver http-listener-port=1088
-Command create-system-properties executed successfully.
-----
-
-[[sthref551]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref552]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-system-property.html#delete-system-property-1[`delete-system-property`(1)],
-link:list-system-properties.html#list-system-properties-1[`list-system-properties`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-threadpool.adoc b/docs/reference-manual/src/main/jbake/content/create-threadpool.adoc
deleted file mode 100644
index a9e0458..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-threadpool.adoc
+++ /dev/null
@@ -1,128 +0,0 @@
-type=page
-status=published
-title=create-threadpool
-next=create-transport.html
-prev=create-system-properties.html
-~~~~~~
-create-threadpool
-=================
-
-[[create-threadpool-1]][[GSRFM00060]][[create-threadpool]]
-
-create-threadpool
------------------
-
-adds a thread pool
-
-[[sthref553]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-threadpool [--help] 
-[--target target] 
-[--maxthreadpoolsize maxthreadpoolsize] 
-[--minthreadpoolsize minthreadpoolsize] 
-[--idletimeout idletimeout] [--maxqueuesize maxqueuesize]
-[--workqueues workqueues] threadpool-id
-----
-
-[[sthref554]]
-
-Description
-
-The `create-threadpool` subcommand creates a thread pool with the
-specified name. You can specify maximum and minimum number of threads in
-the pool, the quantity of messages, and the idle timeout of a thread.
-The created thread pool can be used for servicing IIOP requests and for
-resource adapters to service work management requests. A thread pool can
-be used in multiple resource adapters.
-
-This subcommand is supported in remote mode only.
-
-[[sthref555]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  This option specifies the target on which you are creating the thread
-  pool. +
-  Valid values are as follows: +
-  `server`;;
-    Creates the thread pool for the default \{product---name} instance
-    `server` and is the default value
-  configuration-name;;
-    Creates the thread pool for the named configuration.
-  cluster-name;;
-    Creates the thread pool for every instance in the cluster.
-  instance-name;;
-    Creates the thread pool for a particular instance.
-`--maxthreadpoolsize`::
-  Specifies the maximum number of threads the pool can contain. Default
-  is 5.
-`--minthreadpoolsize`::
-  Specifies the minimum number of threads in the pool. These are created
-  when the thread pool is instantiated. Default is 2.
-`--idletimeout`::
-  Specifies the amount of time in seconds after which idle threads are
-  removed from the pool. Default is 900.
-`--maxqueuesize`::
-  Specifies the maximum number of messages that can be queued until
-  threads are available to process them for a network listener or IIOP
-  listener. A value of -1 specifies no limit. Default is 4096.
-`--workqueues`::
-  Do not specify this option. This option is retained for compatibility
-  with earlier releases. If you specify this option, a syntax error does
-  not occur. Instead, the subcommand runs successfully and displays a
-  warning message that the option is ignored.
-
-[[sthref556]]
-
-Operands
-
-threadpool-id::
-  An ID for the work queue, for example, `threadpool-1`.
-
-[[sthref557]]
-
-Examples
-
-[[GSRFM527]][[sthref558]]
-
-Example 1   Creating a Thread Pool
-
-This command creates a new thread pool called `threadpool-l`.
-
-[source,oac_no_warn]
-----
-asadmin> create-threadpool --maxthreadpoolsize 100 
---minthreadpoolsize 20 --idletimeout 2 threadpool-1
-Command create-threadpool executed successfully
-----
-
-[[sthref559]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref560]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-threadpool.html#delete-threadpool-1[`delete-threadpool`(1)],
-link:list-threadpools.html#list-threadpools-1[`list-threadpools`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-transport.adoc b/docs/reference-manual/src/main/jbake/content/create-transport.adoc
deleted file mode 100644
index fc1208f..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-transport.adoc
+++ /dev/null
@@ -1,159 +0,0 @@
-type=page
-status=published
-title=create-transport
-next=create-virtual-server.html
-prev=create-threadpool.html
-~~~~~~
-create-transport
-================
-
-[[create-transport-1]][[GSRFM00061]][[create-transport]]
-
-create-transport
-----------------
-
-adds a new transport
-
-[[sthref561]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-transport [--help]
-[--acceptorthreads acceptor-threads] 
-[--buffersizebytes buffer-size] 
-[--bytebuffertype byte-buffer-type] 
-[--classname class-name] 
-[--displayconfiguration={false|true}] 
-[--enablesnoop={false|true}] 
-[--idlekeytimeoutseconds idle-key-timeout]
-[--maxconnectionscount max-connections] 
-[--readtimeoutmillis read-timeout]
-[--writetimeoutmillis write-timeout] 
-[--selectionkeyhandler selection-key-handler]
-[--selectorpolltimeoutmillis selector-poll-timeout] 
-[--tcpnodelay={false|true}]
-[--target target]
-transport-name
-----
-
-[[sthref562]]
-
-Description
-
-The `create-transport` subcommand creates a transport for a network
-listener. This subcommand is supported in remote mode only.
-
-[[sthref563]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--acceptorthreads`::
-  The number of acceptor threads for the transport. The recommended
-  value is the number of processors in the machine. The default value is
-  `1`.
-`--buffersizebytes`::
-  The size, in bytes, of the buffer to be provided for input streams
-  created by the network listener that references this transport. The
-  default value is `8192`.
-`--bytebuffertype`::
-  The type of the buffer to be provided for input streams created by a
-  network-listener. Allowed values are `HEAP` and `DIRECT`. The default
-  value is `HEAP`.
-`--classname`::
-  The fully qualified name of the Java class that implements the
-  transport. The default is `org.glassfish.grizzly.TCPSelectorHandler`.
-`--displayconfiguration`::
-  If `true`, flushes the internal network configuration to the server
-  log. Useful for debugging, but reduces performance. The default is
-  `false`.
-`--enablesnoop`::
-  If `true`, writes request/response information to the server log.
-  Useful for debugging, but reduces performance. The default is `false`.
-`--idlekeytimeoutseconds`::
-  The idle key timeout. The default is `30` seconds.
-`--maxconnectionscount`::
-  The maximum number of connections for the network listener that
-  references this transport. A value of `-1` specifies no limit. The
-  default value is `4096`.
-`--readtimeoutmillis`::
-  The amount of time the server waits during the header and body parsing
-  phase. The default is `30000` milliseconds, or 30 seconds.
-`--writetimeoutmillis`::
-  The amount of time the server waits before considering the remote
-  client disconnected when writing the response. The default is `30000`
-  milliseconds, or 30 seconds.
-`--selectionkeyhandler`::
-  The name of the selection key handler associated with this transport.
-  There is no default.
-`--selectorpolltimeoutmillis`::
-  The number of milliseconds a NIO Selector blocks waiting for events
-  (user requests). The default value is `1000` milliseconds.
-`--tcpnodelay`::
-  If `true`, the default, enables `TCP_NODELAY` (also called Nagle's
-  algorithm). The default is `false`.
-`--target`::
-  Creates the transport only on the specified target. Valid values are
-  as follows: +
-  `server`;;
-    Creates the transport on the default server instance. This is the
-    default value.
-  configuration-name;;
-    Creates the transport in the specified configuration.
-  cluster-name;;
-    Creates the transport on all server instances in the specified
-    cluster.
-  standalone-instance-name;;
-    Creates the transport on the specified standalone server instance.
-
-[[sthref564]]
-
-Operands
-
-transport-name::
-  The name of the transport.
-
-[[sthref565]]
-
-Examples
-
-[[GSRFM528]][[sthref566]]
-
-Example 1   Creating a Transport
-
-The following command creates a transport named `http1-trans` that uses
-a non-default number of acceptor threads:
-
-[source,oac_no_warn]
-----
-asadmin> create-transport --acceptorthreads 100 http1-trans
-Command create-transport executed successfully.
-----
-
-[[sthref567]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref568]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-network-listener.html#create-network-listener-1[`create-network-listener`(1)],
-link:delete-transport.html#delete-transport-1[`delete-transport`(1)],
-link:list-transports.html#list-transports-1[`list-transports`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/create-virtual-server.adoc b/docs/reference-manual/src/main/jbake/content/create-virtual-server.adoc
deleted file mode 100644
index 534046b..0000000
--- a/docs/reference-manual/src/main/jbake/content/create-virtual-server.adoc
+++ /dev/null
@@ -1,387 +0,0 @@
-type=page
-status=published
-title=create-virtual-server
-next=delete-admin-object.html
-prev=create-transport.html
-~~~~~~
-create-virtual-server
-=====================
-
-[[create-virtual-server-1]][[GSRFM00062]][[create-virtual-server]]
-
-create-virtual-server
----------------------
-
-creates the named virtual server
-
-[[sthref569]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] create-virtual-server [--help]
---hosts hosts 
-[--httplisteners http-listeners]
-[--networklisteners network-listeners]
-[--defaultwebmodule default-web-module]
-[--state={on|off}] 
-[--logfile log-file]
-[--property (name=value)[:name=value]*]
-[--target target]
-virtual-server-id
-----
-
-[[sthref570]]
-
-Description
-
-The `create-virtual-server` subcommand creates the named virtual server.
-Virtualization in the \{product---name} allows multiple URL domains to
-be served by a single HTTP server process that is listening on multiple
-host addresses. If the application is available at two virtual servers,
-they still share the same physical resource pools.
-
-This subcommand is supported in remote mode only.
-
-[[sthref571]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--hosts`::
-  A comma-separated (,) list of values allowed in the host request
-  header to select the current virtual server. Each virtual server that
-  is configured to the same connection group must have a unique host for
-  that group.
-`--httplisteners`::
-  A comma-separated (,) list of HTTP listener IDs. Required only for a
-  virtual server that is not the default virtual server. HTTP listeners
-  are converted to network listeners. This option is deprecated but
-  maintained for backward compatibility. Use `--networklisteners`
-  instead. If `--networklisteners` is used, this option is ignored.
-`--networklisteners`::
-  A comma-separated (,) list of network listener IDs. Required only for
-  a virtual server that is not the default virtual server.
-`--defaultwebmodule`::
-  The standalone web module associated with this virtual server by
-  default.
-`--state`::
-  Determines whether a virtual server is active (`on`) or inactive
-  (`off` or disabled). Default is `on`. When inactive, the virtual
-  server does not service requests.
-`--logfile`::
-  Name of the file where log entries for this virtual server are to be
-  written. By default, this is the server log. The file and directory in
-  which the access log is kept must be writable by the user account
-  under which the server runs.
-`--property`::
-  Optional property name/value pairs for configuring the virtual server.
-  The following properties are available: +
-  `sso-max-inactive-seconds`;;
-    Specifies the number of seconds after which a user's single sign-on
-    record becomes eligible for purging if no client activity is
-    received. Since single sign-on applies across several applications
-    on the same virtual server, access to any of the applications keeps
-    the single sign-on record active. The default value is 300 seconds
-    (5 minutes). Higher values provide longer single sign-on persistence
-    for users, but at the expense of more memory use on the server.
-  `sso-reap-interval-seconds`;;
-    Specifies the number of seconds between purges of expired single
-    sign-on records. The default value is 60.
-  `setCacheControl`;;
-    Specifies a comma-separated list of `Cache-Control` response
-    directives. For a list of valid directives, see section 14.9 of the
-    document at http://www.ietf.org/rfc/rfc2616.txt
-    (`http://www.ietf.org/rfc/rfc2616.txt`).
-  `allowLinking`;;
-    If the value of this property is `true`, resources that are symbolic
-    links will be served for all web applications deployed on this
-    virtual server. Individual web applications may override this
-    setting by using the property `allowLinking` under the `sun-web-app`
-    element in the `sun-web.xml` file: +
-[source,oac_no_warn]
-----
-<sun-web-app>
-<property name="allowLinking" value="[true|false]"/>
-</sun-web-app>
-----
-::
-    The default value is `true`.
-  `accessLogWriteInterval`;;
-    Indicates the number of seconds before the log will be written to
-    the disk. The access log is written when the buffer is full or when
-    the interval expires. If the value is 0 (zero), then the buffer is
-    always written even if it is not full. This means that each time the
-    server is accessed, the log message is stored directly to the file.
-  `accessLogBufferSize`;;
-    Specifies the size, in bytes, of the buffer where access log calls
-    are stored.
-  `allowRemoteAddress`;;
-    This is a comma-separated list of regular expression patterns to
-    which the remote client's IP address is compared. If this property
-    is specified, the remote address must match for this request to be
-    accepted. If this property is not specified, all requests will be
-    accepted unless the remote address matches a `denyRemoteAddress`
-    pattern. The default value for this property is null.
-  `denyRemoteAddress`;;
-    This is a comma-separated list of regular expression patterns to
-    which the remote client's IP address is compared. If this property
-    is specified, the remote address must not match for this request to
-    be accepted. If this property is not specified, request acceptance
-    is governed solely by the `allowRemoteAddress` property. The default
-    value for this property is null.
-  `allowRemoteHost`;;
-    This is a comma-separated list of regular expression patterns to
-    which the remote client's host name (as returned by
-    `java.net.Socket.getInetAddress().getHostName()`) is compared. If
-    this property is specified, the remote host name must match for this
-    request to be accepted. If this property is not specified, all
-    requests will be accepted unless the remote host name matches a
-    denyRemoteHost pattern. The default value for this property is null.
-  `denyRemoteHost`;;
-    This is a comma-separated list of regular expression patterns to
-    which the remote client's host name (as returned by
-    `java.net.Socket.getInetAddress().getHostName()`) is compared. If
-    this property is specified, the remote host name must not match for
-    this request to be accepted. If this property is not specified,
-    request acceptance is governed solely by the `allowRemoteHost`
-    property. The default value for this property is null.
-  `authRealm`;;
-    Specifies the `name` attribute of an `auth-realm`, which overrides
-    the server instance's default realm for standalone web applications
-    deployed to this virtual server. A realm defined in a standalone web
-    application's `web.xml` file overrides the virtual server's realm.
-  `securePagesWithPragma`;;
-    Set this property to `false` to ensure that for all web applications
-    on this virtual server file downloads using SSL work properly in
-    Internet Explorer. +
-    You can set this property for a specific web application. For
-    details, see "link:../application-deployment-guide/dd-elements.html#GSDPG00161[glassfish-web-app]" in GlassFish
-    Server Open Source Edition Application Deployment Guide.
-  `contextXmlDefault`;;
-    Specifies the location, relative to domain-dir, of the `context.xml`
-    file for this virtual server, if one is used. For more information
-    about the `context.xml` file, see "link:../application-development-guide/webapps.html#GSDVG00416[Using a
-    context.xml File]" in GlassFish Server Open Source Edition
-    Application Development Guide and The Context Container
-    (`http://tomcat.apache.org/tomcat-5.5-doc/config/context.html`).
-    Context parameters, environment entries, and resource definitions in
-    `context.xml` are supported in the \{product---name}.
-  `alternatedocroot_n`;;
-    Specifies an alternate document root (docroot), where n is a
-    positive integer that allows specification of more than one.
-    Alternate docroots allow web applications to serve requests for
-    certain resources from outside their own docroot, based on whether
-    those requests match one (or more) of the URI patterns of the web
-    application's alternate docroots. +
-    If a request matches an alternate docroot's URI pattern, it is
-    mapped to the alternate docroot by appending the request URI (minus
-    the web application's context root) to the alternate docroot's
-    physical location (directory). If a request matches multiple URI
-    patterns, the alternate docroot is determined according to the
-    following precedence order: +
-    * Exact match
-    * Longest path match
-    * Extension match +
-    For example, the following properties specify three alternate
-    docroots. The URI pattern of the first alternate docroot uses an
-    exact match, whereas the URI patterns of the second and third
-    alternate docroots use extension and longest path prefix matches,
-    respectively. +
-[source,oac_no_warn]
-----
-<property name="alternatedocroot_1" 
-   value="from=/my.jpg dir=/srv/images/jpg"/>
-<property name="alternatedocroot_2" 
-   value="from=*.jpg dir=/srv/images/jpg"/>
-<property name="alternatedocroot_3" 
-   value="from=/jpg/* dir=/src/images"/>
-----
-::
-    The `value` of each alternate docroot has two components: The first
-    component, `from`, specifies the alternate docroot's URI pattern,
-    and the second component, `dir`, specifies the alternate docroot's
-    physical location (directory). Spaces are allowed in the `dir`
-    component. +
-    You can set this property for a specific web application. For
-    details, see "link:../application-deployment-guide/dd-elements.html#GSDPG00161[glassfish-web-app]" in GlassFish
-    Server Open Source Edition Application Deployment Guide.
-  `send-error_n`;;
-    Specifies custom error page mappings for the virtual server, which
-    are inherited by all web applications deployed on the virtual
-    server. A web application can override these custom error page
-    mappings in its `web.xml` deployment descriptor. The value of each
-    `send-error_n` property has three components, which may be specified
-    in any order: +
-    The first component, `code`, specifies the three-digit HTTP response
-    status code for which the custom error page should be returned in
-    the response. +
-    The second component, `path`, specifies the absolute or relative
-    file system path of the custom error page. A relative file system
-    path is interpreted as relative to the domain-dir`/config`
-    directory. +
-    The third component, `reason`, is optional and specifies the text of
-    the reason string (such as `Unauthorized` or `Forbidden`) to be
-    returned. +
-    For example: +
-[source,oac_no_warn]
-----
-<property name="send-error_1"
-   value="code=401 path=/myhost/401.html reason=MY-401-REASON"/>
-----
-::
-    This example property definition causes the contents of
-    `/myhost/401.html` to be returned with 401 responses, along with
-    this response line: +
-[source,oac_no_warn]
-----
-HTTP/1.1 401 MY-401-REASON
-----
-::
-  `redirect_`n;;
-    Specifies that a request for an old URL is treated as a request for
-    a new URL. These properties are inherited by all web applications
-    deployed on the virtual server. The value of each `redirect_n`
-    property has two components, which may be specified in any order: +
-    The first component, `from`, specifies the prefix of the requested
-    URI to match. +
-    The second component, `url-prefix`, specifies the new URL prefix to
-    return to the client. The from prefix is simply replaced by this URL
-    prefix. +
-    For example: +
-[source,oac_no_warn]
-----
-<property name="redirect_1" 
-value="from=/dummy url-prefix=http://etude"/>
-----
-::
-  `valve_`n;;
-    Specifies a fully qualified class name of a custom valve, where n is
-    a positive integer that allows specification of more than one. The
-    valve class must implement the `org.apache.catalina.Valve` interface
-    from Tomcat or previous \{product---name} releases, or the
-    `org.glassfish.web.valve.GlassFishValve` interface from the current
-    \{product---name} release. For example: +
-[source,oac_no_warn]
-----
-<property name="valve_1" 
-   value="org.glassfish.extension.Valve"/>
-----
-::
-    You can set this property for a specific web application. For
-    details, see "link:../application-deployment-guide/dd-elements.html#GSDPG00161[glassfish-web-app]" in GlassFish
-    Server Open Source Edition Application Deployment Guide.
-  `listener_n`;;
-    Specifies a fully qualified class name of a custom Catalina
-    listener, where n is a positive integer that allows specification of
-    more than one. The listener class must implement the
-    `org.apache.catalina.ContainerListener` or
-    `org.apache.catalina.LifecycleListener` interface. For example: +
-[source,oac_no_warn]
-----
-<property name="listener_1" 
-   value="org.glassfish.extension.MyLifecycleListener"/>
-----
-::
-    You can set this property for a specific web application. For
-    details, see "link:../application-deployment-guide/dd-elements.html#GSDPG00161[glassfish-web-app]" in GlassFish
-    Server Open Source Edition Application Deployment Guide.
-  `docroot`;;
-    Absolute path to root document directory for server. Deprecated.
-    Replaced with a `virtual-server` attribute, `docroot`, that is
-    accessible using the `get`, `set`, and `list` subcommands.
-  `accesslog`;;
-    Absolute path to server access logs. Deprecated. Replaced with a
-    `virtual-server` attribute , `access-log`, that is accessible using
-    the `get`, `set`, and `list` subcommands.
-  `accessLoggingEnabled`;;
-    If `true`, access logging is enabled for this virtual server.
-    Deprecated. Replaced with a `virtual-server` attribute,
-    `access-logging-enabled`, that is accessible using the `get`, `set`,
-    and `list` subcommands.
-  `sso-enabled`;;
-    If `true`, single sign-on is enabled for web applications on this
-    virtual server that are configured for the same realm. Deprecated.
-    Replaced with a `virtual-server` attribute, `sso-enabled`, that is
-    accessible using the `get`, `set`, and `list` subcommands.
-  `ssoCookieSecure`;;
-    Sets the `Secure` attribute of any `JSESSIONIDSSO` cookies
-    associated with the web applications deployed to this virtual
-    server. Deprecated. Replaced with a `virtual-server` attribute,
-    `sso-cookie-secure`, that is accessible using the `get`, `set`, and
-    `list` subcommands.
-  `errorReportValve`;;
-    Specifies a fully qualified class name of a custom valve that
-    produces default error pages for applications on this virtual
-    server. Specify an empty string to disable the default error page
-    mechanism for this virtual server.
-`--target`::
-  Creates the virtual server only on the specified target. Valid values
-  are as follows: +
-  `server`;;
-    Creates the virtual server on the default server instance. This is
-    the default value.
-  configuration-name;;
-    Creates the virtual server in the specified configuration.
-  cluster-name;;
-    Creates the virtual server on all server instances in the specified
-    cluster.
-  standalone-instance-name;;
-    Creates the virtual server on the specified standalone server
-    instance.
-
-[[sthref572]]
-
-Operands
-
-virtual-server-id::
-  Identifies the unique ID for the virtual server to be created. This ID
-  cannot begin with a number.
-
-[[sthref573]]
-
-Examples
-
-[[GSRFM529]][[sthref574]]
-
-Example 1   Creating a Virtual Server
-
-The following command creates a virtual server named `sampleServer`:
-
-[source,oac_no_warn]
-----
-asadmin> create-virtual-server --hosts pigeon,localhost 
---property authRealm=ldap sampleServer
-Command create-virtual-server executed successfully.
-----
-
-[[sthref575]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref576]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-virtual-server.html#delete-virtual-server-1[`delete-virtual-server`(1)],
-link:list-virtual-servers.html#list-virtual-servers-1[`list-virtual-servers`(1)],
-link:create-http-listener.html#create-http-listener-1[`create-http-listener`(1)],
-link:create-network-listener.html#create-network-listener-1[`create-network-listener`(1)]
-
-link:get.html#get-1[`get`(1)], link:list.html#list-1[`list`(1)],
-link:set.html#set-1[`set`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/debug-asadmin.adoc b/docs/reference-manual/src/main/jbake/content/debug-asadmin.adoc
deleted file mode 100644
index 4103aaa..0000000
--- a/docs/reference-manual/src/main/jbake/content/debug-asadmin.adoc
+++ /dev/null
@@ -1,54 +0,0 @@
-type=page
-status=published
-title=debug-asadmin
-next=capture-schema.html
-prev=asadmin.html
-~~~~~~
-debug-asadmin
-=======
-
-The script content on this page is for navigation purposes only and does
-not alter the content in any way.
-
-[[debug-asadmin-1m]][[GSRFM00263]][[debug-asadmin]]
-
-debug-asadmin
--------
-
-Variant of the `asadmin` utility for performing administrative tasks for Oracle \{product---name}. This variant
-is useful for debugging local admin commands the launching of \{product---name}. It suspends immediately 
-waiting for a debug connection to port 9008.
-
-[[sthref2364]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-debug-asadmin [--host host] 
-[--port port] 
-[--user admin-user] 
-[--passwordfile filename] 
-[--terse={true|false}] 
-[--secure={false|true}] 
-[--echo={true|false}] 
-[--interactive={true|false}] 
-[--detach={true|false}]
-[--help] 
-[subcommand [options] [operands]]
-----
-
-[[sthref2365]]
-
-Description
-
-Use the `debug-asadmin` utility to debug local admin commands and the launching of the Oracle
-GlassFish Server. See the `asadmin` command for full documentation.
-
-
-http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN5attributes-5[`attributes`(5)]
-
-'''''
-
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-admin-object.adoc b/docs/reference-manual/src/main/jbake/content/delete-admin-object.adoc
deleted file mode 100644
index 0d0c137..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-admin-object.adoc
+++ /dev/null
@@ -1,116 +0,0 @@
-type=page
-status=published
-title=delete-admin-object
-next=delete-application-ref.html
-prev=create-virtual-server.html
-~~~~~~
-delete-admin-object
-===================
-
-[[delete-admin-object-1]][[GSRFM00063]][[delete-admin-object]]
-
-delete-admin-object
--------------------
-
-removes the administered object with the specified JNDI name.
-
-[[sthref577]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-admin-object [--help] 
-[--target target] jndi_name
-----
-
-[[sthref578]]
-
-Description
-
-The `delete-admin-object` subcommand removes an administered object with
-the specified JNDI name.
-
-This subcommand is supported in remote mote only.
-
-[[sthref579]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  This is the name of the targets for which the administered object is
-  to be deleted. Valid values are: +
-
-[width="100%",cols="100%",]
-|=======================================================================
-a|
-Note:
-
-Resources are always created for a domain as a whole but are only
-active for targets for which a `<resource-ref>` has been created using
-the `--target` option when the resource was created. This means that
-deleting a resource only deletes the `<resource-ref>` element for the
-specified `--target`, and does not delete the resource from the domain
-as a whole unless `domain` is specified as the `--target` for the
-deletion.
-
-|=======================================================================
-
-  `server`;;
-    Deletes the administered object for the default server instance
-    `server` and is the default value.
-  configuration_name;;
-    Deletes the administered object for the specified configuration.
-  cluster_name;;
-    Deletes the administered object for the specified cluster.
-  instance_name;;
-    Deletes the administered object for a particular server instance.
-
-[[sthref580]]
-
-Operands
-
-jndi_name::
-  JNDI name of the administered object to be deleted.
-
-[[sthref581]]
-
-Examples
-
-[[GSRFM530]][[sthref582]]
-
-Example 1   Deleting an Administered Object
-
-This example deletes the administered object named `jms/samplelqueue`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-admin-object jms/samplequeue
-Command delete-admin-object executed successfully
-----
-
-[[sthref583]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref584]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-admin-object.html#create-admin-object-1[`create-admin-object`(1)],
-link:list-admin-objects.html#list-admin-objects-1[`list-admin-objects`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-application-ref.adoc b/docs/reference-manual/src/main/jbake/content/delete-application-ref.adoc
deleted file mode 100644
index 98266ed..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-application-ref.adoc
+++ /dev/null
@@ -1,129 +0,0 @@
-type=page
-status=published
-title=delete-application-ref
-next=delete-audit-module.html
-prev=delete-admin-object.html
-~~~~~~
-delete-application-ref
-======================
-
-[[delete-application-ref-1]][[GSRFM00064]][[delete-application-ref]]
-
-delete-application-ref
-----------------------
-
-removes a reference to an application
-
-[[sthref585]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-application-ref [--help] 
-[--target target]
-[--cascade=false] reference_name
-----
-
-[[sthref586]]
-
-Description
-
-The `delete-application-ref` subcommand removes a reference from a
-cluster or an unclustered server instance to an application. This
-effectively results in the application element being undeployed and no
-longer available on the targeted instance or cluster.
-
-The target instance or instances making up the cluster need not be
-running or available for this subcommand to succeed. If one or more
-instances are not available, they will no longer load the application
-the next time they start.
-
-Removal of the reference does not result in removal of the application
-from the domain. The bits are removed only by the `undeploy` subcommand.
-
-This subcommand is supported in remote mode only.
-
-[[sthref587]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Specifies the target from which you are removing the application
-  reference. Valid values are +
-  * `server`- Specifies the default server instance as the target.
-  `server` is the name of the default server instance and is the default
-  value.
-  * cluster_name- Specifies a certain cluster as the target.
-  * instance_name- Specifies a certain stand-alone server instance as
-  the target.
-`--cascade`::
-  For a connector module, indicates whether the resources dependent on
-  the module should also be recursively deleted. The default is `false`.
-  The connector module can be either a stand-alone RAR file or a module
-  within an EAR file.
-
-[[sthref588]]
-
-Operands
-
-reference_name::
-  The name of the application or module, which can be a Java EE
-  application module, Web module, EJB module, connector module,
-  application client module, or lifecycle module. +
-  The name can include an optional version identifier, which follows the
-  name and is separated from the name by a colon (`:`). The version
-  identifier must begin with a letter or number. It can contain
-  alphanumeric characters plus underscore (`_`), dash (`-`), and period
-  (`.`) characters. To delete references to multiple versions, you can
-  use an asterisk (`*`) as a wildcard character. For more information
-  about module and application versions, see "link:../application-deployment-guide/overview.html#GSDPG00324[Module
-  and Application Versions]" in GlassFish Server Open Source Edition
-  Application Deployment Guide.
-
-[[sthref589]]
-
-Examples
-
-[[GSRFM531]][[sthref590]]
-
-Example 1   Deleting an Application Reference
-
-The following example removes a reference to the Web module `MyWebApp`
-from the unclustered server instance `NewServer`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-application-ref --target NewServer MyWebApp
-Command delete-application-ref executed successfully.
-----
-
-[[sthref591]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref592]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-application-ref.html#create-application-ref-1[`create-application-ref`(1)],
-link:list-application-refs.html#list-application-refs-1[`list-application-refs`(1)],
-link:undeploy.html#undeploy-1[`undeploy`(1)]
-
-link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition Application Deployment
-Guide]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-audit-module.adoc b/docs/reference-manual/src/main/jbake/content/delete-audit-module.adoc
deleted file mode 100644
index 84c4054..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-audit-module.adoc
+++ /dev/null
@@ -1,97 +0,0 @@
-type=page
-status=published
-title=delete-audit-module
-next=delete-auth-realm.html
-prev=delete-application-ref.html
-~~~~~~
-delete-audit-module
-===================
-
-[[delete-audit-module-1]][[GSRFM00065]][[delete-audit-module]]
-
-delete-audit-module
--------------------
-
-removes the named audit-module
-
-[[sthref593]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-audit-module [--help]
-[--target target]
-audit_module_name
-----
-
-[[sthref594]]
-
-Description
-
-This subcommand removes the named audit module. This subcommand is
-supported in remote mode only.
-
-[[sthref595]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Specifies the target on which you are deleting the audit module. Valid
-  values are as follows: +
-  `server`;;
-    Deletes the audit module for the default server instance `server`
-    and is the default value.
-  configuration_name;;
-    Deletes the audit module for the named configuration.
-  cluster_name;;
-    Deletes the audit module for every server instance in the cluster.
-  instance_name;;
-    Deletes the audit module for a particular server instance.
-
-[[sthref596]]
-
-Operands
-
-audit_module_name::
-  The name of the audit module to be deleted.
-
-[[sthref597]]
-
-Examples
-
-[[GSRFM532]][[sthref598]]
-
-Example 1   Deleting an audit module
-
-[source,oac_no_warn]
-----
-asadmin> delete-audit-module sampleAuditModule
-Command delete-audit-module executed successfully
-----
-
-[[sthref599]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref600]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-audit-module.html#create-audit-module-1[`create-audit-module`(1)],
-link:list-audit-modules.html#list-audit-modules-1[`list-audit-modules`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-auth-realm.adoc b/docs/reference-manual/src/main/jbake/content/delete-auth-realm.adoc
deleted file mode 100644
index ff1753b..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-auth-realm.adoc
+++ /dev/null
@@ -1,99 +0,0 @@
-type=page
-status=published
-title=delete-auth-realm
-next=delete-cluster.html
-prev=delete-audit-module.html
-~~~~~~
-delete-auth-realm
-=================
-
-[[delete-auth-realm-1]][[GSRFM00066]][[delete-auth-realm]]
-
-delete-auth-realm
------------------
-
-removes the named authentication realm
-
-[[sthref601]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-auth-realm [--help]
-[--target target]
-auth_realm-name
-----
-
-[[sthref602]]
-
-Description
-
-The `delete-auth-realm` subcommand removes the named authentication
-realm. This subcommand is supported in remote mode only.
-
-[[sthref603]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Specifies the target on which you are deleting the authentication
-  realm. Valid values are +
-  `server`;;
-    Deletes the realm for the default server instance `server` and is
-    the default value.
-  configuration_name;;
-    Deletes the realm for the named configuration.
-  cluster_name;;
-    Deletes the realm for every server instance in the cluster.
-  instance_name;;
-    Deletes the realm for a particular server instance.
-
-[[sthref604]]
-
-Operands
-
-auth_realm_name::
-  Name of the realm to be deleted.
-
-[[sthref605]]
-
-Examples
-
-[[GSRFM533]][[sthref606]]
-
-Example 1   Deleting an Authentication Realm
-
-This example deletes the authentication realm `db`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-auth-realm db
-Command delete-auth-realm executed successfully
-----
-
-[[sthref607]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref608]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-auth-realm.html#create-auth-realm-1[`create-auth-realm`(1)],
-link:list-auth-realms.html#list-auth-realms-1[`list-auth-realms`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-cluster.adoc b/docs/reference-manual/src/main/jbake/content/delete-cluster.adoc
deleted file mode 100644
index a8e005e..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-cluster.adoc
+++ /dev/null
@@ -1,113 +0,0 @@
-type=page
-status=published
-title=delete-cluster
-next=delete-config.html
-prev=delete-auth-realm.html
-~~~~~~
-delete-cluster
-==============
-
-[[delete-cluster-1]][[GSRFM00068]][[delete-cluster]]
-
-delete-cluster
---------------
-
-deletes a \{product---name} cluster
-
-[[sthref609]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-cluster [--help]
-[--autohadboverride={true|false}] [--node-agent=node-agent--name]
-cluster-name
-----
-
-[[sthref610]]
-
-Description
-
-The `delete-cluster` subcommand deletes a \{product---name} cluster. A
-cluster can be deleted only if the cluster contains no \{product---name}
-instances. If a cluster that you are deleting contains any instances,
-stop and delete the instances before deleting the cluster.
-
-If the cluster's named configuration was created automatically for the
-cluster and no other clusters or unclustered instances refer to the
-configuration, the configuration is deleted when the cluster is deleted.
-A configuration that is created automatically for a cluster is named
-cluster-name`-config`, where cluster-name is the name of the cluster.
-
-This command is supported in remote mode only.
-
-[[sthref611]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--autohadboverride`::
-  Do not specify this option. This option is retained for compatibility
-  with earlier releases. If you specify this option, a syntax error does
-  not occur. Instead, the subcommand runs successfully and displays a
-  warning message that the option is ignored.
-`--nodeagent`::
-  Do not specify this option. This option is retained for compatibility
-  with earlier releases. If you specify this option, a syntax error does
-  not occur. Instead, the subcommand runs successfully and displays a
-  warning message that the option is ignored.
-
-[[sthref612]]
-
-Operands
-
-cluster-name::
-  The name of the cluster to delete.
-
-[[sthref613]]
-
-Examples
-
-[[GSRFM535]][[sthref614]]
-
-Example 1   Deleting a \{product---name} Cluster
-
-This example deletes the \{product---name} cluster `adccluster`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-cluster adccluster
-Command delete-cluster executed successfully.
-----
-
-[[sthref615]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref616]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-cluster.html#create-cluster-1[`create-cluster`(1)],
-link:delete-instance.html#delete-instance-1[`delete-instance`(1)],
-link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)],
-link:list-clusters.html#list-clusters-1[`list-clusters`(1)],
-link:start-cluster.html#start-cluster-1[`start-cluster`(1)],
-link:stop-instance.html#stop-instance-1[`stop-instance`(1)],
-link:stop-local-instance.html#stop-local-instance-1[`stop-local-instance`(1)],
-link:stop-cluster.html#stop-cluster-1[`stop-cluster`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-config.adoc b/docs/reference-manual/src/main/jbake/content/delete-config.adoc
deleted file mode 100644
index c533e82..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-config.adoc
+++ /dev/null
@@ -1,96 +0,0 @@
-type=page
-status=published
-title=delete-config
-next=delete-connector-connection-pool.html
-prev=delete-cluster.html
-~~~~~~
-delete-config
-=============
-
-[[delete-config-1]][[GSRFM00069]][[delete-config]]
-
-delete-config
--------------
-
-deletes an existing named configuration
-
-[[sthref617]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-config [--help] 
-configuration-name
-----
-
-[[sthref618]]
-
-Description
-
-The `delete-config` subcommand deletes an existing named configuration
-from the configuration of the domain administration server (DAS). You
-can delete a configuration only if no \{product---name} instances or
-clusters refer to the configuration. A standalone configuration is
-automatically deleted when the instance or cluster that refers to it is
-deleted. You cannot delete the `default-config` configuration that is
-copied to create standalone configurations.
-
-This subcommand is supported in remote mode only.
-
-[[sthref619]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref620]]
-
-Operands
-
-configuration-name::
-  The name of the configuration that you are deleting.
-
-[[sthref621]]
-
-Examples
-
-[[GSRFM536]][[sthref622]]
-
-Example 1   Deleting a Named Configuration
-
-This example deletes the named configuration `pmdconfig`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-config pmdconfig
-
-Command delete-config executed successfully.
-----
-
-[[sthref623]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref624]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:copy-config.html#copy-config-1[`copy-config`(1)],
-link:list-configs.html#list-configs-1[`list-configs`(1)]
-
-link:configuration.html#configuration-5asc[`configuration`(5ASC)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-connector-connection-pool.adoc b/docs/reference-manual/src/main/jbake/content/delete-connector-connection-pool.adoc
deleted file mode 100644
index 9d27f6a..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-connector-connection-pool.adoc
+++ /dev/null
@@ -1,103 +0,0 @@
-type=page
-status=published
-title=delete-connector-connection-pool
-next=delete-connector-resource.html
-prev=delete-config.html
-~~~~~~
-delete-connector-connection-pool
-================================
-
-[[delete-connector-connection-pool-1]][[GSRFM00070]][[delete-connector-connection-pool]]
-
-delete-connector-connection-pool
---------------------------------
-
-removes the specified connector connection pool
-
-[[sthref625]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-connector-connection-pool [--help] 
-[--target target]
-[--cascade={false|true}] poolname
-----
-
-[[sthref626]]
-
-Description
-
-The `delete-connector-connection-pool` subcommand removes the specified
-connector connection pool.
-
-This subcommand is supported in remote mode only.
-
-[[sthref627]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Do not specify this option. This option is retained for compatibility
-  with earlier releases. If you specify this option, a syntax error does
-  not occur. Instead, the subcommand runs successfully and displays a
-  warning message that the option is ignored.
-`--cascade`::
-  When set to true, all connector resources associated with the pool,
-  and the pool itself, are deleted. When set to false, the deletion of
-  pool fails if any resources are associated with the pool. The resource
-  must be deleted explicitly or the option must be set to true. Default
-  is false.
-
-[[sthref628]]
-
-Operands
-
-poolname::
-  The name of the connection pool to be removed.
-
-[[sthref629]]
-
-Examples
-
-[[GSRFM537]][[sthref630]]
-
-Example 1   Deleting a Connector Connection Pool
-
-This example deletes the connector connection pool named
-`jms/qConnPool`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-connector-connection-pool
---cascade=false jms/qConnPool
-Command delete-connector-connection-pool executed successfully
-----
-
-[[sthref631]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref632]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-connector-connection-pool.html#create-connector-connection-pool-1[`create-connector-connection-pool`(1)],
-link:list-connector-connection-pools.html#list-connector-connection-pools-1[`list-connector-connection-pools`(1)],
-link:ping-connection-pool.html#ping-connection-pool-1[`ping-connection-pool`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-connector-resource.adoc b/docs/reference-manual/src/main/jbake/content/delete-connector-resource.adoc
deleted file mode 100644
index cba5952..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-connector-resource.adoc
+++ /dev/null
@@ -1,131 +0,0 @@
-type=page
-status=published
-title=delete-connector-resource
-next=delete-connector-security-map.html
-prev=delete-connector-connection-pool.html
-~~~~~~
-delete-connector-resource
-=========================
-
-[[delete-connector-resource-1]][[GSRFM00071]][[delete-connector-resource]]
-
-delete-connector-resource
--------------------------
-
-removes the connector resource with the specified JNDI name
-
-[[sthref633]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-connector-resource [--help] 
-[--target target] jndi_name
-----
-
-[[sthref634]]
-
-Description
-
-The `delete-connector-resource` subcommand removes the connector
-resource with the specified JNDI name.
-
-This subcommand is supported in remote mode only.
-
-[[sthref635]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  This option specifies the target from which you want to remove the
-  connector resource. Valid targets are: +
-
-[width="100%",cols="100%",]
-|=======================================================================
-a|
-Note:
-
-Resources are always created for a domain as a whole but are only
-active for targets for which a `<resource-ref>` has been created using
-the `--target` option when the resource was created. This means that
-deleting a resource only deletes the `<resource-ref>` element for the
-specified `--target`, and does not delete the resource from the domain
-as a whole unless `domain` is specified as the `--target` for the
-deletion.
-
-|=======================================================================
-
-  `server`;;
-    Deletes the connector resource from the default server instance.
-    This is the default value.
-  `domain`;;
-    Deletes the connector resource from the domain.
-  cluster_name;;
-    Deletes the connector resource from every server instance in the
-    cluster.
-  instance_name;;
-    Deletes the connector resource from a specified server instance.
-
-[[sthref636]]
-
-Operands
-
-jndi_name::
-  The JNDI name of this connector resource.
-
-[[sthref637]]
-
-Examples
-
-[[GSRFM538]][[sthref638]]
-
-Example 1   Deleting a Connector Resource
-
-This example deletes a connector resource named `jms/qConnFactory`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-connector-resource jms/qConnFactory
-Command delete-connector-resource executed successfully
-----
-
-[[GSRFM539]][[sthref639]]
-
-Example 2   Using the delete-connector-resource subcommand
-
-This example shows the usage of this subcommand.
-
-[source,oac_no_warn]
-----
-asadmin> delete-connector-resource jms/qConnFactory
-Command delete-connector-resource executed successfully
-----
-
-Where `jms/qConnFactory` is the connector resource that is removed.
-
-[[sthref640]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref641]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-connector-resource.html#create-connector-resource-1[`create-connector-resource`(1)],
-link:list-connector-resources.html#list-connector-resources-1[`list-connector-resources`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-connector-security-map.adoc b/docs/reference-manual/src/main/jbake/content/delete-connector-security-map.adoc
deleted file mode 100644
index 9055c90..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-connector-security-map.adoc
+++ /dev/null
@@ -1,102 +0,0 @@
-type=page
-status=published
-title=delete-connector-security-map
-next=delete-connector-work-security-map.html
-prev=delete-connector-resource.html
-~~~~~~
-delete-connector-security-map
-=============================
-
-[[delete-connector-security-map-1]][[GSRFM00072]][[delete-connector-security-map]]
-
-delete-connector-security-map
------------------------------
-
-deletes a security map for the specified connector connection pool
-
-[[sthref642]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-connector-security-map [--help]
---poolname connector_connection_pool_name [--target target] mapname
-----
-
-[[sthref643]]
-
-Description
-
-The `delete-connector-security-map` subcommand deletes a security map
-for the specified connector connection pool.
-
-For this subcommand to succeed, you must have first created a connector
-connection pool using the `create-connector-connection-pool` subcommand.
-
-This subcommand is supported in remote mode only.
-
-[[sthref644]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--poolname`::
-  Specifies the name of the connector connection pool to which the
-  security map that is to be deleted belongs.
-`--target`::
-  Do not specify this option. This option is retained for compatibility
-  with earlier releases. If you specify this option, a syntax error does
-  not occur. Instead, the subcommand runs successfully and displays a
-  warning message that the option is ignored.
-
-[[sthref645]]
-
-Operands
-
-mapname::
-  Name of the security map to be deleted.
-
-[[sthref646]]
-
-Examples
-
-[[GSRFM540]][[sthref647]]
-
-Example 1   Deleting a Connector Security Map
-
-This example deletes `securityMap1` for the existing connection pool
-named `connector-pool1`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-connector-security-map
---poolname connector-pool1 securityMap1
-Command delete-connector-security-map executed successfully
-----
-
-[[sthref648]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref649]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-connector-security-map.html#create-connector-security-map-1[`create-connector-security-map`(1)],
-link:list-connector-security-maps.html#list-connector-security-maps-1[`list-connector-security-maps`(1)],
-link:update-connector-security-map.html#update-connector-security-map-1[`update-connector-security-map`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-connector-work-security-map.adoc b/docs/reference-manual/src/main/jbake/content/delete-connector-work-security-map.adoc
deleted file mode 100644
index a3b2bcc..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-connector-work-security-map.adoc
+++ /dev/null
@@ -1,101 +0,0 @@
-type=page
-status=published
-title=delete-connector-work-security-map
-next=delete-context-service.html
-prev=delete-connector-security-map.html
-~~~~~~
-delete-connector-work-security-map
-==================================
-
-[[delete-connector-work-security-map-1]][[GSRFM00073]][[delete-connector-work-security-map]]
-
-delete-connector-work-security-map
-----------------------------------
-
-deletes a work security map for the specified resource adapter
-
-[[sthref650]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-connector-work-security-map [--help] 
---raname raname
-mapname
-----
-
-[[sthref651]]
-
-Description
-
-The `delete-connector-work-security-map` subcommand deletes a security
-map associated with the specified resource adapter. For this subcommand
-to succeed, you must have first created and deployed the specified
-resource adapter.
-
-The enterprise information system (EIS) is any system that holds the
-data of an organization. It can be a mainframe, a messaging system, a
-database system, or an application.
-
-This subcommand is supported in remote mode only.
-
-[[sthref652]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--raname`::
-  Indicates the connector module name with which the work security map
-  is associated.
-
-[[sthref653]]
-
-Operands
-
-mapname::
-  The name of the work security map to be deleted.
-
-[[sthref654]]
-
-Examples
-
-[[GSRFM541]][[sthref655]]
-
-Example 1   Deleting a Connector Work Security Map
-
-This example deletes the work security map named
-`work_security_map_name` for the resource adapter named `ra_name`.
-
-[source,oac_no_warn]
-----
-asadmin delete-connector-work-security-map
---raname ra_name work_security_map_name
-Command delete-connector-work-security-map executed successfully.
-----
-
-[[sthref656]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref657]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-connector-work-security-map.html#create-connector-work-security-map-1[`create-connector-work-security-map`(1)],
-link:list-connector-work-security-maps.html#list-connector-work-security-maps-1[`list-connector-work-security-maps`(1)],
-link:update-connector-work-security-map.html#update-connector-work-security-map-1[`update-connector-work-security-map`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-context-service.adoc b/docs/reference-manual/src/main/jbake/content/delete-context-service.adoc
deleted file mode 100644
index c4a418c..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-context-service.adoc
+++ /dev/null
@@ -1,104 +0,0 @@
-type=page
-status=published
-title=delete-context-service
-next=delete-custom-resource.html
-prev=delete-connector-work-security-map.html
-~~~~~~
-delete-context-service
-======================
-
-[[delete-context-service-1]][[GSRFM846]][[delete-context-service]]
-
-delete-context-service
-----------------------
-
-removes a context service resource with the specified JNDI name
-
-[[sthref658]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-context-service [--help]
-[--target target]
-context-service-name
-----
-
-[[sthref659]]
-
-Description
-
-The `delete-context-service` subcommand removes a context service
-resource with the specified JNDI name.
-
-This subcommand is supported in remote mode only.
-
-[[sthref660]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Specifies the target from which you are deleting the resource. Valid
-  targets are: +
-  `server`;;
-    Deletes the resource from the default server instance. This is the
-    default value.
-  `domain`;;
-    Deletes the resource from the domain.
-  cluster-name;;
-    Deletes the resource from every server instance in the specified
-    cluster.
-  instance-name;;
-    Deletes the resource from the specified server instance.
-
-[[sthref661]]
-
-Operands
-
-context-service-name::
-  The JNDI name of the resource to be deleted.
-
-[[sthref662]]
-
-Examples
-
-[[GSRFM847]][[sthref663]]
-
-Example 1   Deleting a Context Service Resource
-
-This example deletes the context service resource named
-`concurrent/myContextService`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-context-service concurrent/myContextService
-Context service concurrent/myContextService deleted successfully.
-Command delete-context-service executed successfully.
-----
-
-[[sthref664]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref665]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-context-service.html#create-context-service-1[`create-context-service`(1)],
-link:list-context-services.html#list-context-services-1[`list-context-services`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-custom-resource.adoc b/docs/reference-manual/src/main/jbake/content/delete-custom-resource.adoc
deleted file mode 100644
index be4f467..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-custom-resource.adoc
+++ /dev/null
@@ -1,116 +0,0 @@
-type=page
-status=published
-title=delete-custom-resource
-next=delete-domain.html
-prev=delete-context-service.html
-~~~~~~
-delete-custom-resource
-======================
-
-[[delete-custom-resource-1]][[GSRFM00074]][[delete-custom-resource]]
-
-delete-custom-resource
-----------------------
-
-removes a custom resource
-
-[[sthref666]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-custom-resource [--help] 
-[--target target] jndi-name
-----
-
-[[sthref667]]
-
-Description
-
-The `delete-custom-resource` subcommand removes a custom resource.
-
-This subcommand is supported in remote mode only.
-
-[[sthref668]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  This option helps specify the location of the custom resources that
-  you are deleting. Valid targets are server, domain, cluster, and
-  instance. The default is server. +
-
-[width="100%",cols="100%",]
-|=======================================================================
-a|
-Note:
-
-Resources are always created for a domain as a whole but are only
-active for targets for which a `<resource-ref>` has been created using
-the `--target` option when the resource was created. This means that
-deleting a resource only deletes the `<resource-ref>` element for the
-specified `--target`, and does not delete the resource from the domain
-as a whole unless `domain` is specified as the `--target` for the
-deletion.
-
-|=======================================================================
-
-  `server`;;
-    Deletes the resource for the default server instance. This is the
-    default value.
-  `domain`;;
-    Deletes the resource for the domain.
-  cluster_name;;
-    Deletes the resource for every server instance in the cluster.
-  instance_name;;
-    Deletes the resource for a particular server instance.
-
-[[sthref669]]
-
-Operands
-
-jndi-name::
-  The JNDI name of this resource.
-
-[[sthref670]]
-
-Examples
-
-[[GSRFM542]][[sthref671]]
-
-Example 1   Deleting a Custom Resource
-
-This example deletes a custom resource named `mycustomresource`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-custom-resource mycustomresource
-Command delete-custom-resource executed successfully.
-----
-
-[[sthref672]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref673]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-custom-resource.html#create-custom-resource-1[`create-custom-resource`(1)],
-link:list-custom-resources.html#list-custom-resources-1[`list-custom-resources`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-domain.adoc b/docs/reference-manual/src/main/jbake/content/delete-domain.adoc
deleted file mode 100644
index ee295cb..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-domain.adoc
+++ /dev/null
@@ -1,111 +0,0 @@
-type=page
-status=published
-title=delete-domain
-next=delete-file-user.html
-prev=delete-custom-resource.html
-~~~~~~
-delete-domain
-=============
-
-[[delete-domain-1]][[GSRFM00075]][[delete-domain]]
-
-delete-domain
--------------
-
-deletes a domain
-
-[[sthref674]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-domain [--help] 
-[--domaindir domaindir] domain-name
-----
-
-[[sthref675]]
-
-Description
-
-The `delete-domain` subcommand deletes the specified domain. The domain
-must already exist and must be stopped.
-
-This subcommand is supported in local mode only.
-
-[[sthref676]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--domaindir`::
-  The directory where the domain to be deleted is located. If specified,
-  the path must be accessible in the file system. If not specified, the
-  domain under the domain root directory, which defaults to
-  as-install`/domains`, is deleted.
-
-[[sthref677]]
-
-Operands
-
-domain-name::
-  The unique name of the domain you want to delete.
-
-[[sthref678]]
-
-Examples
-
-[[GSRFM543]][[sthref679]]
-
-Example 1   Deleting a Domain
-
-This example deletes a domain named `mydomain4` from the default domains
-directory.
-
-[source,oac_no_warn]
-----
-asadmin> delete-domain mydomain4
-Domain mydomain4 deleted.
-Command delete-domain executed successfully.
-----
-
-[[GSRFM544]][[sthref680]]
-
-Example 2   deleting a Domain From an Alternate Location
-
-This example deletes a domain named `sampleDomain` from the
-`/home/someuser/domains` directory.
-
-[source,oac_no_warn]
-----
-asadmin> delete-domain --domaindir /home/someuser/domains sampleDomain
-Domain sampleDomain deleted
-Command delete-domain executed successfully.
-----
-
-[[sthref681]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref682]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-domain.html#create-domain-1[`create-domain`(1)],
-link:list-domains.html#list-domains-1[`list-domains`(1)],
-link:start-domain.html#start-domain-1[`start-domain`(1)],
-link:stop-domain.html#stop-domain-1[`stop-domain`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-file-user.adoc b/docs/reference-manual/src/main/jbake/content/delete-file-user.adoc
deleted file mode 100644
index 69d335e..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-file-user.adoc
+++ /dev/null
@@ -1,106 +0,0 @@
-type=page
-status=published
-title=delete-file-user
-next=delete-http.html
-prev=delete-domain.html
-~~~~~~
-delete-file-user
-================
-
-[[delete-file-user-1]][[GSRFM00076]][[delete-file-user]]
-
-delete-file-user
-----------------
-
-removes the named file user
-
-[[sthref683]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-file-user [--help] 
-[--authrealmname auth_realm_name] 
-[--target target] 
-username
-----
-
-[[sthref684]]
-
-Description
-
-The `delete-file-user` subcommand deletes the entry in the keyfile for
-the specified username.
-
-[[sthref685]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--authrealmname`::
-  The name of the authentication realm with which the user was created.
-`--target`::
-  This is the name of the target on which the command operates. The
-  valid targets are: +
-  `server`;;
-    Deletes the file user on the default server instance. This is the
-    default value
-  `domain`;;
-    Deletes the file user in the domain.
-  cluster_name;;
-    Deletes the file user from every server instance in the cluster.
-  instance_name;;
-    Deletes the file user from a particular server instance.
-
-[[sthref686]]
-
-Operands
-
-username::
-  This is the name of file user to be deleted.
-
-[[sthref687]]
-
-Examples
-
-[[GSRFM545]][[sthref688]]
-
-Example 1   Deleting a User From a File Realm
-
-The following example shows how to delete user named `sample_user` from
-a file realm.
-
-[source,oac_no_warn]
-----
-asadmin> delete-file-user
-sample_user
-Command delete-file-user executed successfully
-----
-
-[[sthref689]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref690]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-file-user.html#create-file-user-1[`create-file-user`(1)],
-link:list-file-groups.html#list-file-groups-1[`list-file-groups`(1)],
-link:list-file-users.html#list-file-users-1[`list-file-users`(1)],
-link:update-file-user.html#update-file-user-1[`update-file-user`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-http-health-checker.adoc b/docs/reference-manual/src/main/jbake/content/delete-http-health-checker.adoc
deleted file mode 100644
index 77c7e3f..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-http-health-checker.adoc
+++ /dev/null
@@ -1,106 +0,0 @@
-type=page
-status=published
-title=delete-http-health-checker
-next=delete-http-lb.html
-prev=delete-http.html
-~~~~~~
-delete-http-health-checker
-==========================
-
-[[delete-http-health-checker-1]][[GSRFM00078]][[delete-http-health-checker]]
-
-delete-http-health-checker
---------------------------
-
-deletes the health-checker for a specified load balancer configuration
-
-[[sthref699]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-http-health-checker [--help] 
-[--config config_name]
- target
-----
-
-[[sthref700]]
-
-Description
-
-The `delete-http-health-checker` subcommand deletes the health checker
-from a load balancer configuration. A health checker is unique for the
-combination of target and load balancer configuration.
-
-
-[NOTE]
-=======================================================================
-
-This subcommand is only applicable to Oracle GlassFish Server. This
-subcommand is not applicable to GlassFish Server Open Source Edition.
-
-=======================================================================
-
-
-[[sthref701]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--config`::
-  The load balancer configuration from which you delete the
-  health-checker.
-
-[[sthref702]]
-
-Operands
-
-target::
-  Specifies the target from which you are deleting the health checker. +
-  Valid values are: +
-  * cluster_name- The name of a target cluster.
-  * instance_name- The name of a target server instance.
-
-[[sthref703]]
-
-Examples
-
-[[GSRFM547]][[sthref704]]
-
-Example 1   Deleting a Health Checker from a Load Balancer Configuration
-
-This example deletes the health checker for load balancer configuration
-named `mycluster-http-lb-config` on a cluster named `mycluster`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-http-health-checker --user admin 
---passwordfile password.txt --config mycluster-http-lb-config mycluster
-
-Command delete-http-health-checker executed successfully.
-----
-
-[[sthref705]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref706]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-http-health-checker.html#create-http-health-checker-1[`create-http-health-checker`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-http-lb-config.adoc b/docs/reference-manual/src/main/jbake/content/delete-http-lb-config.adoc
deleted file mode 100644
index e4698c6..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-http-lb-config.adoc
+++ /dev/null
@@ -1,101 +0,0 @@
-type=page
-status=published
-title=delete-http-lb-config
-next=delete-http-lb-ref.html
-prev=delete-http-lb.html
-~~~~~~
-delete-http-lb-config
-=====================
-
-[[delete-http-lb-config-1]][[GSRFM00080]][[delete-http-lb-config]]
-
-delete-http-lb-config
----------------------
-
-deletes a load balancer configuration
-
-[[sthref715]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-http-lb-config [--help] 
-config_name
-----
-
-[[sthref716]]
-
-Description
-
-Use the `delete-http-lb-config` subcommand to delete a load balancer
-configuration. The load balancer configuration must not reference any
-clusters or server instances enabled for load balancing. In addition,
-the load balancer configuration must not be referenced by any physical
-load balancers.
-
-
-[NOTE]
-=======================================================================
-
-This subcommand is only applicable to Oracle GlassFish Server. This
-subcommand is not applicable to GlassFish Server Open Source Edition.
-
-=======================================================================
-
-
-[[sthref717]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref718]]
-
-Operands
-
-config_name::
-  The name of the load balancer configuration to delete. The
-  configuration must not reference any clusters or server instances
-  enabled for load balancing, or be used by any physical load balancers.
-
-[[sthref719]]
-
-Examples
-
-[[GSRFM549]][[sthref720]]
-
-Example 1   Deleting a Load Balancer Configuration
-
-This example deletes a load balancer configuration named `mylbconfig`
-
-[source,oac_no_warn]
-----
-asadmin> delete-http-lb-config mylbconfig
-Command delete-http-lb-config executed successfully.
-----
-
-[[sthref721]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref722]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-http-lb-config.html#create-http-lb-config-1[`create-http-lb-config`(1)],
-link:list-http-lb-configs.html#list-http-lb-configs-1[`list-http-lb-configs`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-http-lb-ref.adoc b/docs/reference-manual/src/main/jbake/content/delete-http-lb-ref.adoc
deleted file mode 100644
index 1ab7420..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-http-lb-ref.adoc
+++ /dev/null
@@ -1,122 +0,0 @@
-type=page
-status=published
-title=delete-http-lb-ref
-next=delete-http-listener.html
-prev=delete-http-lb-config.html
-~~~~~~
-delete-http-lb-ref
-==================
-
-[[delete-http-lb-ref-1]][[GSRFM00081]][[delete-http-lb-ref]]
-
-delete-http-lb-ref
-------------------
-
-deletes the cluster or server instance from a load balancer
-
-[[sthref723]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-http-lb-ref [--help] 
---config config_name | --lbname load_balancer_name
-[--force=false] target
-----
-
-[[sthref724]]
-
-Description
-
-Use the `delete-http-lb-ref` subcommand to remove a reference to a
-cluster or standalone server instance from a load balancer configuration
-or load balancer. So that you do not interrupt user requests, make sure
-the standalone server instance or all server instances in the cluster
-are disabled before you remove them from the load balancer
-configuration. If the `force` option is set to true, the references are
-deleted even if server instances or clusters are enabled.
-
-
-[NOTE]
-=======================================================================
-
-This subcommand is only applicable to Oracle GlassFish Server. This
-subcommand is not applicable to GlassFish Server Open Source Edition.
-
-=======================================================================
-
-
-[[sthref725]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--config`::
-  Specifies which load balancer configuration to delete cluster and
-  server instance references from. +
-  Specify either a load balancer configuration or a load balancer.
-  Specifying both results in an error.
-`--lbname`::
-  Specifies the load balancer to delete cluster and server instance
-  references from. +
-  Specify either a load balancer configuration or a load balancer.
-  Specifying both results in an error.
-`--force`::
-  If `force` is set to true, then the references are deleted even if
-  there are currently enabled applications or instances. The default is
-  false.
-
-[[sthref726]]
-
-Operands
-
-target::
-  Specifies which cluster or instance to remove from the load balancer.
-  Valid values are: +
-  * cluster_name- The name of a target cluster.
-  * instance_name- The name of a target server instance.
-
-[[sthref727]]
-
-Examples
-
-[[GSRFM550]][[sthref728]]
-
-Example 1   Deleting a Cluster Reference from a Load Balancer
-Configuration
-
-This example deletes the reference to cluster named `cluster2` from a
-load balancer configuration named `mycluster-http-lb-config`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-http-lb-ref --config mycluster-http-lb-config cluster2 
-
-Command delete-http-lb-ref executed successfully.
-----
-
-[[sthref729]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref730]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-http-lb-ref.html#create-http-lb-ref-1[`create-http-lb-ref`(1)],
-link:disable-http-lb-server.html#disable-http-lb-server-1[`disable-http-lb-server`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-http-lb.adoc b/docs/reference-manual/src/main/jbake/content/delete-http-lb.adoc
deleted file mode 100644
index 283a762..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-http-lb.adoc
+++ /dev/null
@@ -1,96 +0,0 @@
-type=page
-status=published
-title=delete-http-lb
-next=delete-http-lb-config.html
-prev=delete-http-health-checker.html
-~~~~~~
-delete-http-lb
-==============
-
-[[delete-http-lb-1]][[GSRFM00079]][[delete-http-lb]]
-
-delete-http-lb
---------------
-
-deletes a load balancer
-
-[[sthref707]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-http-lb [--help] 
-load_balancer_name
-----
-
-[[sthref708]]
-
-Description
-
-Use the `delete-http-lb` subcommand to delete a physical load balancer.
-
-
-[NOTE]
-=======================================================================
-
-This subcommand is only applicable to Oracle GlassFish Server. This
-subcommand is not applicable to GlassFish Server Open Source Edition.
-
-=======================================================================
-
-
-[[sthref709]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref710]]
-
-Operands
-
-load_balancer_name::
-  The name of the load balancer to be deleted.
-
-[[sthref711]]
-
-Examples
-
-[[GSRFM548]][[sthref712]]
-
-Example 1   Deleting a Load Balancer Configuration
-
-This example deletes the load balancer configuration named `mylb`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-http-lb mylb
-
-Command delete-http-lb executed successfully.
-----
-
-[[sthref713]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref714]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-http-lb.html#create-http-lb-1[`create-http-lb`(1)],
-link:list-http-lbs.html#list-http-lbs-1[`list-http-lbs`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-http-listener.adoc b/docs/reference-manual/src/main/jbake/content/delete-http-listener.adoc
deleted file mode 100644
index 843386d..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-http-listener.adoc
+++ /dev/null
@@ -1,104 +0,0 @@
-type=page
-status=published
-title=delete-http-listener
-next=delete-http-redirect.html
-prev=delete-http-lb-ref.html
-~~~~~~
-delete-http-listener
-====================
-
-[[delete-http-listener-1]][[GSRFM00082]][[delete-http-listener]]
-
-delete-http-listener
---------------------
-
-removes a network listener
-
-[[sthref731]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-http-listener [--help]
-[--target target]
-listener-id
-----
-
-[[sthref732]]
-
-Description
-
-The `delete-http-listener` subcommand removes the specified network
-listener.
-
-This subcommand is supported in remote mode only.
-
-[[sthref733]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Deletes the network listener only from the specified target. Valid
-  values are as follows: +
-  `server`;;
-    Deletes the network listener from the default server instance. This
-    is the default value.
-  configuration-name;;
-    Deletes the network listener from the specified configuration.
-  cluster-name;;
-    Deletes the network listener from all server instances in the
-    specified cluster.
-  standalone-instance-name;;
-    Deletes the network listener from the specified standalone server
-    instance.
-
-[[sthref734]]
-
-Operands
-
-listener-id::
-  The unique identifier for the network listener to be deleted.
-
-[[sthref735]]
-
-Examples
-
-[[GSRFM551]][[sthref736]]
-
-Example 1   Using the delete-http-listener subcommand
-
-The following command deletes the network listener named
-`sampleListener`:
-
-[source,oac_no_warn]
-----
-asadmin> delete-http-listener sampleListener
-Command delete-http-listener executed successfully.
-----
-
-[[sthref737]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref738]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-http-listener.html#create-http-listener-1[`create-http-listener`(1)],
-link:list-http-listeners.html#list-http-listeners-1[`list-http-listeners`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-http-redirect.adoc b/docs/reference-manual/src/main/jbake/content/delete-http-redirect.adoc
deleted file mode 100644
index caf436b..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-http-redirect.adoc
+++ /dev/null
@@ -1,84 +0,0 @@
-type=page
-status=published
-title=delete-http-redirect
-next=delete-iiop-listener.html
-prev=delete-http-listener.html
-~~~~~~
-delete-http-redirect
-====================
-
-[[delete-http-redirect-1]][[GSRFM00083]][[delete-http-redirect]]
-
-delete-http-redirect
---------------------
-
-removes an HTTP redirect
-
-[[sthref739]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-delete-http-redirect [--help]
-[--target target]
-protocol-name
-----
-
-[[sthref740]]
-
-Description
-
-The `delete-http-redirect` subcommand removes the specified HTTP
-redirect. This subcommand is supported in remote mode only.
-
-[[sthref741]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Deletes the HTTP redirect only from the specified target. Valid values
-  are as follows: +
-  `server`;;
-    Deletes the HTTP redirect from the default server instance. This is
-    the default value.
-  configuration-name;;
-    Deletes the HTTP redirect from the specified configuration.
-  cluster-name;;
-    Deletes the HTTP redirect from all server instances in the specified
-    cluster.
-  standalone-instance-name;;
-    Deletes the HTTP redirect from the specified standalone server
-    instance.
-
-[[sthref742]]
-
-Operands
-
-protocol-name::
-  The name of the associated protocol.
-
-[[sthref743]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref744]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-http-redirect.html#create-http-redirect-1[`create-http-redirect`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-http.adoc b/docs/reference-manual/src/main/jbake/content/delete-http.adoc
deleted file mode 100644
index 29135e0..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-http.adoc
+++ /dev/null
@@ -1,101 +0,0 @@
-type=page
-status=published
-title=delete-http
-next=delete-http-health-checker.html
-prev=delete-file-user.html
-~~~~~~
-delete-http
-===========
-
-[[delete-http-1]][[GSRFM00077]][[delete-http]]
-
-delete-http
------------
-
-removes HTTP parameters from a protocol
-
-[[sthref691]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-http [--help]
-[--target target]
-protocol-name
-----
-
-[[sthref692]]
-
-Description
-
-The `delete-http` subcommand removes the specified HTTP parameter set
-from a protocol. This subcommand is supported in remote mode only.
-
-[[sthref693]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Deletes the HTTP parameter set only from the specified target. Valid
-  values are as follows: +
-  `server`;;
-    Deletes the HTTP parameter set from the default server instance.
-    This is the default value.
-  configuration-name;;
-    Deletes the HTTP parameter set from the specified configuration.
-  cluster-name;;
-    Deletes the HTTP parameter set from all server instances in the
-    specified cluster.
-  standalone-instance-name;;
-    Deletes the HTTP parameter set from the specified standalone server
-    instance.
-
-[[sthref694]]
-
-Operands
-
-protocol-name::
-  The name of the protocol from which to delete the HTTP parameter set.
-
-[[sthref695]]
-
-Examples
-
-[[GSRFM546]][[sthref696]]
-
-Example 1   Deleting an HTTP Parameter Set
-
-The following command deletes the HTTP parameter set from a protocol
-named `http-1`:
-
-[source,oac_no_warn]
-----
-asadmin> delete-http http-1
-Command delete-http executed successfully.
-----
-
-[[sthref697]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref698]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-http.html#create-http-1[`create-http`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-iiop-listener.adoc b/docs/reference-manual/src/main/jbake/content/delete-iiop-listener.adoc
deleted file mode 100644
index e248997..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-iiop-listener.adoc
+++ /dev/null
@@ -1,98 +0,0 @@
-type=page
-status=published
-title=delete-iiop-listener
-next=delete-instance.html
-prev=delete-http-redirect.html
-~~~~~~
-delete-iiop-listener
-====================
-
-[[delete-iiop-listener-1]][[GSRFM00084]][[delete-iiop-listener]]
-
-delete-iiop-listener
---------------------
-
-removes an IIOP listener
-
-[[sthref745]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-delete-iiop-listener [--help] [--target target] listener_id
-----
-
-[[sthref746]]
-
-Description
-
-The `delete-iiop-listener` subcommand removes the specified IIOP
-listener. This subcommand is supported in remote mode only.
-
-[[sthref747]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Specifies the target from which you are deleting the IIOP listener.
-  Valid values are +
-  `server`;;
-    Deletes the listener from the default server instance `server` and
-    is the default value.
-  configuration_name;;
-    Deletes the listener from the named configuration.
-  cluster_name;;
-    Deletes the listener from every server instance in the cluster.
-  instance_name;;
-    Deletes the listener from a particular server instance.
-
-[[sthref748]]
-
-Operands
-
-listener_id::
-  The unique identifier for the IIOP listener to be deleted.
-
-[[sthref749]]
-
-Examples
-
-[[GSRFM552]][[sthref750]]
-
-Example 1   Deleting an IIOP Listener
-
-The following command deletes the IIOP listener named
-`sample_iiop_listener`:
-
-[source,oac_no_warn]
-----
-asadmin> delete-iiop-listener sample_iiop_listener
-Command delete-iiop-listener executed successfully.
-----
-
-[[sthref751]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref752]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-iiop-listener.html#create-iiop-listener-1[`create-iiop-listener`(1)],
-link:list-iiop-listeners.html#list-iiop-listeners-1[`list-iiop-listeners`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-instance.adoc b/docs/reference-manual/src/main/jbake/content/delete-instance.adoc
deleted file mode 100644
index 66074d8..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-instance.adoc
+++ /dev/null
@@ -1,135 +0,0 @@
-type=page
-status=published
-title=delete-instance
-next=delete-jacc-provider.html
-prev=delete-iiop-listener.html
-~~~~~~
-delete-instance
-===============
-
-[[delete-instance-1]][[GSRFM00085]][[delete-instance]]
-
-delete-instance
----------------
-
-deletes a \{product---name} instance
-
-[[sthref753]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-instance [--help] 
-instance-name 
-----
-
-[[sthref754]]
-
-Description
-
-The `delete-instance` subcommand deletes a \{product---name} instance.
-This subcommand requires the Distributed Component Object Model (DCOM)
-remote protocol or secure shell (SSH) to be configured on the host where
-the domain administration server (DAS) is running and on the host that
-is represented by the node where the instance resides.
-
-
-[NOTE]
-=======================================================================
-
-DCOM or SSH is not required if the instance resides on a node of type
-`CONFIG` that represents the local host. A node of type `CONFIG` is not
-enabled for remote communication over DCOM or SSH.
-
-=======================================================================
-
-
-You may run this subcommand from any host that can contact the DAS.
-
-The subcommand can delete any \{product---name} instance, regardless of
-how the instance was created. For example, this subcommand can delete an
-instance that was created by using the
-link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)]
-subcommand.
-
-The instance that is being deleted must not be running. Otherwise, an
-error occurs.
-
-The subcommand deletes an instance by performing the following actions:
-
-* Removing the instance from the configuration of the domain
-administration server (DAS)
-* Deleting the instance's files from file system
-
-If the instance that is being deleted is the only instance that is using
-the node directory, that directory is also removed.
-
-If a standalone instance is deleted, the instance's standalone
-configuration is also deleted. A standalone instance refers to a
-configuration that is named instance-name`-config` to which no other
-clusters or unclustered instances refer.
-
-This subcommand is supported in remote mode only.
-
-[[sthref755]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref756]]
-
-Operands
-
-instance-name::
-  The name of the instance to delete.
-
-[[sthref757]]
-
-Examples
-
-[[GSRFM553]][[sthref758]]
-
-Example 1   Deleting a \{product---name} Instance
-
-This example deletes the \{product---name} instance `pmdsainst`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-instance pmdsainst
-
-Command delete-instance executed successfully.
-----
-
-[[sthref759]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref760]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-instance.html#create-instance-1[`create-instance`(1)],
-link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)],
-link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)],
-link:setup-ssh.html#setup-ssh-1[`setup-ssh`(1)],
-link:start-instance.html#start-instance-1[`start-instance`(1)],
-link:start-local-instance.html#start-local-instance-1[`start-local-instance`(1)],
-link:stop-instance.html#stop-instance-1[`stop-instance`(1)],
-link:stop-local-instance.html#stop-local-instance-1[`stop-local-instance`(1)],
-link:validate-dcom.html#validate-dcom-1[`validate-dcom`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-jacc-provider.adoc b/docs/reference-manual/src/main/jbake/content/delete-jacc-provider.adoc
deleted file mode 100644
index a49d95a..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-jacc-provider.adoc
+++ /dev/null
@@ -1,124 +0,0 @@
-type=page
-status=published
-title=delete-jacc-provider
-next=delete-javamail-resource.html
-prev=delete-instance.html
-~~~~~~
-delete-jacc-provider
-====================
-
-[[delete-jacc-provider-1]][[GSRFM00086]][[delete-jacc-provider]]
-
-delete-jacc-provider
---------------------
-
-enables administrators to delete JACC providers defined for a domain
-
-[[sthref761]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-jacc-provider [--help]
-[--target target] jacc-provider-name
-----
-
-[[sthref762]]
-
-Description
-
-The `delete-jacc-provider` subcommand enables administrators to delete
-JACC providers defined for a domain. JACC providers are defined as
-`jacc-provider` elements in the `security-service` element in the
-domain's `domain.xml` file. JACC providers can be created using the
-\{product---name} Admin Console or the `create-jacc-provider`
-subcommand.
-
-The default \{product---name} installation includes two JACC providers,
-named `default` and `simple`. These default providers should not be
-deleted.
-
-The JACC provider used by\{product---name} for authorization is
-identified by the `jacc-provider` element of `security-service` in
-`domain.xml`. Therefore, if you delete the `jacc-provider` provider,
-make sure you change `jacc-provider` to the name of some other JACC
-provider that exists under `security-service`.
-
-If you change the `jacc-provider` element to point to a different JACC
-provider, you must restart \{product---name}.
-
-This subcommand is supported in remote mode only.
-
-[[sthref763]]
-
-Options
-
-If an option has a short option name, then the short option precedes the
-long option name. Short options have one dash whereas long options have
-two dashes.
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Specifies the target from which you are deleting the JACC provider.
-  The following values are valid: +
-  `server`;;
-    Deletes the JACC provider on the default server instance. This is
-    the default value.
-  configuration_name;;
-    Deletes the JACC provider in the specified configuration.
-  cluster_name;;
-    Deletes the JACC provider on all server instances in the specified
-    cluster.
-  instance_name;;
-    Deletes the JACC provider on a specified server instance.
-
-[[sthref764]]
-
-Operands
-
-jacc-provider-name::
-  The name of the JACC provider to be deleted.
-
-[[sthref765]]
-
-Examples
-
-[[GSRFM554]][[sthref766]]
-
-Example 1   Deleting a JACC provider
-
-The following example shows how to delete a JACC provider named
-`testJACC` from the default domain.
-
-[source,oac_no_warn]
-----
-asadmin> delete-jacc-provider testJACC
-
-Command delete-jacc-provider executed successfully.
-----
-
-[[sthref767]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref768]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-jacc-provider.html#create-jacc-provider-1[`create-jacc-provider`(1)],
-link:list-jacc-providers.html#list-jacc-providers-1[`list-jacc-providers`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-javamail-resource.adoc b/docs/reference-manual/src/main/jbake/content/delete-javamail-resource.adoc
deleted file mode 100644
index 65f9584..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-javamail-resource.adoc
+++ /dev/null
@@ -1,102 +0,0 @@
-type=page
-status=published
-title=delete-javamail-resource
-next=delete-jdbc-connection-pool.html
-prev=delete-jacc-provider.html
-~~~~~~
-delete-javamail-resource
-========================
-
-[[delete-javamail-resource-1]][[GSRFM00087]][[delete-javamail-resource]]
-
-delete-javamail-resource
-------------------------
-
-removes a JavaMail session resource
-
-[[sthref769]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-javamail-resource [--help] 
-[--target target] jndi_name
-----
-
-[[sthref770]]
-
-Description
-
-The `delete-javamail-resource` subcommand removes the specified JavaMail
-session resource. Ensure that you remove all references to this resource
-before running this subcommand.
-
-This subcommand is supported in remote mode only.
-
-[[sthref771]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  This option specifies the target from which you are deleting the
-  JavaMail session resource. Valid values are: +
-  `server`;;
-    Deletes the resource from the default server instance. This is the
-    default value.
-  `domain`;;
-    Deletes the resource from the domain.
-  cluster_name;;
-    Deletes the resource from every server instance in the cluster.
-  instance_name;;
-    Deletes the resource from a particular server instance.
-
-[[sthref772]]
-
-Operands
-
-jndi_name::
-  The JNDI name of the JavaMail session resource to be deleted.
-
-[[sthref773]]
-
-Examples
-
-[[GSRFM555]][[sthref774]]
-
-Example 1   Deleting a JavaMail Resource
-
-This example deletes the JavaMail session resource named
-`mail/MyMailSession`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-javamail-resource mail/MyMailSession
-Command delete-javamail-resource executed successfully.
-----
-
-[[sthref775]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref776]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-javamail-resource.html#create-javamail-resource-1[`create-javamail-resource`(1)],
-link:list-javamail-resources.html#list-javamail-resources-1[`list-javamail-resources`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-jdbc-connection-pool.adoc b/docs/reference-manual/src/main/jbake/content/delete-jdbc-connection-pool.adoc
deleted file mode 100644
index ce971c5..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-jdbc-connection-pool.adoc
+++ /dev/null
@@ -1,101 +0,0 @@
-type=page
-status=published
-title=delete-jdbc-connection-pool
-next=delete-jdbc-resource.html
-prev=delete-javamail-resource.html
-~~~~~~
-delete-jdbc-connection-pool
-===========================
-
-[[delete-jdbc-connection-pool-1]][[GSRFM00088]][[delete-jdbc-connection-pool]]
-
-delete-jdbc-connection-pool
----------------------------
-
-removes the specified JDBC connection pool
-
-[[sthref777]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-jdbc-connection-pool [--help]
-[--cascade={false|true}]
-[--target target]
-jdbc_connection_pool_id
-----
-
-[[sthref778]]
-
-Description
-
-The `delete-jdbc-connection-pool` subcommand deletes a JDBC connection
-pool. Before running this subcommand, all associations to the JDBC
-connection pool must be removed.
-
-This subcommand is supported in remote mode only.
-
-[[sthref779]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--cascade`::
-  If the option is set to true, all the JDBC resources associated with
-  the pool, apart from the pool itself, are deleted. When set to false,
-  the deletion of pool fails if any resources are associated with the
-  pool. Resources must be deleted explicitly or the option must be set
-  to true. The default value is false.
-`--target`::
-  Do not specify this option. This option is retained for compatibility
-  with earlier releases. If you specify this option, a syntax error does
-  not occur. Instead, the subcommand runs successfully and displays a
-  warning message that the option is ignored.
-
-[[sthref780]]
-
-Operands
-
-jdbc_connection_pool_id::
-  The name of the JDBC resource to be removed.
-
-[[sthref781]]
-
-Examples
-
-[[GSRFM556]][[sthref782]]
-
-Example 1   Deleting a JDBC Connection Pool
-
-This example deletes the `sample_derby_pool` JDBC connection pool.
-
-[source,oac_no_warn]
-----
-asadmin> delete-jdbc-connection-pool --cascade=false sample_derby_pool
-Command delete-jdbc-connection-pool executed correctly.
-----
-
-[[sthref783]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref784]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-jdbc-connection-pool.html#create-jdbc-connection-pool-1[`create-jdbc-connection-pool`(1)],link:list-jdbc-connection-pools.html#list-jdbc-connection-pools-1[`list-jdbc-connection-pools`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-jdbc-resource.adoc b/docs/reference-manual/src/main/jbake/content/delete-jdbc-resource.adoc
deleted file mode 100644
index 52931b7..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-jdbc-resource.adoc
+++ /dev/null
@@ -1,116 +0,0 @@
-type=page
-status=published
-title=delete-jdbc-resource
-next=delete-jmsdest.html
-prev=delete-jdbc-connection-pool.html
-~~~~~~
-delete-jdbc-resource
-====================
-
-[[delete-jdbc-resource-1]][[GSRFM00089]][[delete-jdbc-resource]]
-
-delete-jdbc-resource
---------------------
-
-removes a JDBC resource with the specified JNDI name
-
-[[sthref785]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-jdbc-resource [--help] 
-[--target target] jndi_name
-----
-
-[[sthref786]]
-
-Description
-
-The `delete-jdbc-resource` subcommand removes a JDBC resource. Ensure
-that all associations to the JDBC resource are removed before running
-this subcommand.
-
-This subcommand is supported in remote mode only.
-
-[[sthref787]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  This option helps specify the target from which you are removing the
-  JDBC resource. Valid targets are: +
-  `server`;;
-    Removes the resource from the default server instance. This is the
-    default value.
-  `domain`;;
-    Removes the resource from the domain.
-  cluster_name;;
-    Removes the resource from every server instance in the cluster.
-  instance_name;;
-    Removes the resource from a particular server instance.
-
-
-[NOTE]
-=======================================================================
-
-Resources are always created for a domain as a whole but are only active
-for targets for which a `<resource-ref>` has been created using the
-`--target` option when the resource was created. This means that
-deleting a resource only deletes the `<resource-ref>` element for the
-specified `--target`, and does not delete the resource from the domain
-as a whole unless `domain` is specified as the `--target` for the
-deletion.
-
-=======================================================================
-
-
-[[sthref788]]
-
-Operands
-
-jndi_name::
-  The JNDI name of this JDBC resource to be removed.
-
-[[sthref789]]
-
-Examples
-
-[[GSRFM557]][[sthref790]]
-
-Example 1   Deleting a JDBC Resource
-
-The following example deletes the JDBC resource named `jdbc/DerbyPool`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-jdbc-resource jdbc/DerbyPool
-Command delete-jdbc-resource executed successfully.
-----
-
-[[sthref791]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref792]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-jdbc-resource.html#create-jdbc-resource-1[`create-jdbc-resource`(1)],
-link:list-jdbc-resources.html#list-jdbc-resources-1[`list-jdbc-resources`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-jms-host.adoc b/docs/reference-manual/src/main/jbake/content/delete-jms-host.adoc
deleted file mode 100644
index 0efa0c4..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-jms-host.adoc
+++ /dev/null
@@ -1,107 +0,0 @@
-type=page
-status=published
-title=delete-jms-host
-next=delete-jms-resource.html
-prev=delete-jmsdest.html
-~~~~~~
-delete-jms-host
-===============
-
-[[delete-jms-host-1]][[GSRFM00091]][[delete-jms-host]]
-
-delete-jms-host
----------------
-
-removes a JMS host
-
-[[sthref801]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-jms-host [--help]
-[--target target]
-jms_host_name
-----
-
-[[sthref802]]
-
-Description
-
-The `delete-jms-host` subcommand removes the specified Java Message
-Service (JMS) host.
-
-This subcommand is supported in remote mode only. Remote `asadmin`
-subcommands require a running domain administration server (DAS).
-
-Deleting the default JMS host, named `default_JMS_host`, is not
-recommended.
-
-[[sthref803]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Deletes the JMS host only from the specified target. Valid values are
-  as follows: +
-  `server`;;
-    Deletes the JMS host from the default server instance. This is the
-    default value.
-  configuration-name;;
-    Deletes the JMS host from the specified configuration.
-  cluster-name;;
-    Deletes the JMS host from every server instance in the specified
-    cluster.
-  instance-name;;
-    Deletes the JMS host from the specified server instance.
-
-[[sthref804]]
-
-Operands
-
-jms_host_name::
-  The name of the host to be deleted.
-
-[[sthref805]]
-
-Examples
-
-[[GSRFM559]][[sthref806]]
-
-Example 1   Deleting a JMS host
-
-The following subcommand deletes the JMS host named `MyNewHost`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-jms-host MyNewHost
-Command delete-jms-host executed successfully.
-----
-
-[[sthref807]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref808]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-jms-host.html#create-jms-host-1[`create-jms-host`(1)],
-link:jms-ping.html#jms-ping-1[`jms-ping`(1)],
-link:list-jms-hosts.html#list-jms-hosts-1[`list-jms-hosts`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-jms-resource.adoc b/docs/reference-manual/src/main/jbake/content/delete-jms-resource.adoc
deleted file mode 100644
index 5d19903..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-jms-resource.adoc
+++ /dev/null
@@ -1,122 +0,0 @@
-type=page
-status=published
-title=delete-jms-resource
-next=delete-jndi-resource.html
-prev=delete-jms-host.html
-~~~~~~
-delete-jms-resource
-===================
-
-[[delete-jms-resource-1]][[GSRFM00092]][[delete-jms-resource]]
-
-delete-jms-resource
--------------------
-
-removes a JMS resource
-
-[[sthref809]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-jms-resource [--help]
-[--target target]
-jndi_name
-----
-
-[[sthref810]]
-
-Description
-
-The `delete-jms-resource` subcommand removes the specified Java Message
-Service (JMS) resource. Ensure that you remove all references to this
-resource before executing this subcommand.
-
-This subcommand is supported in remote mode only. Remote `asadmin`
-subcommands require a running domain administration server (DAS).
-
-[[sthref811]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Deletes the JMS resource only from the specified target. Valid values
-  are as follows: +
-
-[width="100%",cols="100%",]
-|=======================================================================
-a|
-Note:
-
-Resources are always created for a domain as a whole but are only
-active for targets for which a `<resource-ref>` has been created using
-the `--target` option when the resource was created. This means that
-deleting a resource only deletes the `<resource-ref>` element for the
-specified `--target`, and does not delete the resource from the domain
-as a whole unless `domain` is specified as the `--target` for the
-deletion.
-
-|=======================================================================
-
-  `server`;;
-    Deletes the JMS resource from the default server instance. This is
-    the default value.
-  `domain`;;
-    Deletes the JMS resource from the domain.
-  cluster-name;;
-    Deletes the JMS resource from every server instance in the specified
-    cluster.
-  instance-name;;
-    Deletes the JMS resource from the specified server instance.
-
-[[sthref812]]
-
-Operands
-
-jndi_name::
-  The JNDI name of the JMS resource to be deleted.
-
-[[sthref813]]
-
-Examples
-
-[[GSRFM560]][[sthref814]]
-
-Example 1   Deleting a JMS destination resource
-
-The following subcommand deletes the JMS destination resource named
-`jms/MyQueue`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-jms-resource jms/MyQueue
-Administered object jms/MyQueue deleted.
-Command delete-jms-resource executed successfully.
-----
-
-[[sthref815]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref816]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-jms-resource.html#create-jms-resource-1[`create-jms-resource`(1)],
-link:list-jms-resources.html#list-jms-resources-1[`list-jms-resources`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-jmsdest.adoc b/docs/reference-manual/src/main/jbake/content/delete-jmsdest.adoc
deleted file mode 100644
index b3989c6..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-jmsdest.adoc
+++ /dev/null
@@ -1,110 +0,0 @@
-type=page
-status=published
-title=delete-jmsdest
-next=delete-jms-host.html
-prev=delete-jdbc-resource.html
-~~~~~~
-delete-jmsdest
-==============
-
-[[delete-jmsdest-1]][[GSRFM00090]][[delete-jmsdest]]
-
-delete-jmsdest
---------------
-
-removes a JMS physical destination
-
-[[sthref793]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-jmsdest [--help]
---desttype type
-[--target target]
-dest_name
-----
-
-[[sthref794]]
-
-Description
-
-The `delete-jmsdest` subcommand removes the specified Java Message
-Service (JMS) physical destination.
-
-This subcommand is supported in remote mode only. Remote `asadmin`
-subcommands require a running domain administration server (DAS).
-
-[[sthref795]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--desttype`::
-  The type of the JMS destination. Valid values are `topic` and `queue`.
-`--target`::
-  Deletes the physical destination only from the specified target.
-  Although the `delete-jmsdest` subcommand is related to resources, a
-  physical destination is deleted using the JMS Service (JMS Broker),
-  which is part of the configuration. A JMS Broker is configured in the
-  config section of `domain.xml`. Valid values are as follows: +
-  `server`;;
-    Deletes the physical destination from the default server instance.
-    This is the default value.
-  configuration-name;;
-    Deletes the physical destination from the specified configuration.
-  cluster-name;;
-    Deletes the physical destination from every server instance in the
-    specified cluster.
-  instance-name;;
-    Creates the physical destination from the specified server instance.
-
-[[sthref796]]
-
-Operands
-
-dest_name::
-  The unique identifier of the JMS destination to be deleted.
-
-[[sthref797]]
-
-Examples
-
-[[GSRFM558]][[sthref798]]
-
-Example 1   Deleting a physical destination
-
-The following subcommand deletes the queue named `PhysicalQueue`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-jmsdest --desttype queue PhysicalQueue
-Command delete-jmsdest executed successfully.
-----
-
-[[sthref799]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref800]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-jmsdest.html#create-jmsdest-1[`create-jmsdest`(1)],
-link:flush-jmsdest.html#flush-jmsdest-1[`flush-jmsdest`(1)],
-link:list-jmsdest.html#list-jmsdest-1[`list-jmsdest`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-jndi-resource.adoc b/docs/reference-manual/src/main/jbake/content/delete-jndi-resource.adoc
deleted file mode 100644
index 72096c6..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-jndi-resource.adoc
+++ /dev/null
@@ -1,117 +0,0 @@
-type=page
-status=published
-title=delete-jndi-resource
-next=delete-jvm-options.html
-prev=delete-jms-resource.html
-~~~~~~
-delete-jndi-resource
-====================
-
-[[delete-jndi-resource-1]][[GSRFM00093]][[delete-jndi-resource]]
-
-delete-jndi-resource
---------------------
-
-removes a JNDI resource
-
-[[sthref817]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-jndi-resource [--help] 
-[--target target] jndi_name
-----
-
-[[sthref818]]
-
-Description
-
-The `delete-jndi-resource` subcommand removes the specified JNDI
-resource. You must remove all associations to the JNDI resource before
-running this subcommand.
-
-This subcommand is supported in remote mode only.
-
-[[sthref819]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Valid targets are described below. +
-
-[width="100%",cols="100%",]
-|=======================================================================
-a|
-Note:
-
-Resources are always created for a domain as a whole but are only
-active for targets for which a `<resource-ref>` has been created using
-the `--target` option when the resource was created. This means that
-deleting a resource only deletes the `<resource-ref>` element for the
-specified `--target`, and does not delete the resource from the domain
-as a whole unless `domain` is specified as the `--target` for the
-deletion.
-
-|=======================================================================
-
-  `server`;;
-    Deletes the resource from the default server instance. This is the
-    default value
-  `domain`;;
-    Deletes the resource from the domain
-  cluster_name;;
-    Deletes the resource for every server instance in the cluster
-  instance_name;;
-    Deletes the resource from the specified server instance
-
-[[sthref820]]
-
-Operands
-
-jndi_name::
-  The name of the JNDI resource to be removed.
-
-[[sthref821]]
-
-Examples
-
-[[GSRFM561]][[sthref822]]
-
-Example 1   Deleting a JNDI Resource
-
-This example removes an existing JNDI resource named
-`sample_jndi_resource`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-jndi-resource sample_jndi_resource
-Command delete-jndi-resource executed successfully.
-----
-
-[[sthref823]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref824]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-jndi-resource.html#create-jndi-resource-1[`create-jndi-resource`(1)],
-link:list-jndi-resources.html#list-jndi-resources-1[`list-jndi-resources`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-jvm-options.adoc b/docs/reference-manual/src/main/jbake/content/delete-jvm-options.adoc
deleted file mode 100644
index 713c63e..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-jvm-options.adoc
+++ /dev/null
@@ -1,177 +0,0 @@
-type=page
-status=published
-title=delete-jvm-options
-next=delete-lifecycle-module.html
-prev=delete-jndi-resource.html
-~~~~~~
-delete-jvm-options
-==================
-
-[[delete-jvm-options-1]][[GSRFM00094]][[delete-jvm-options]]
-
-delete-jvm-options
-------------------
-
-removes one or more options for the Java application launcher
-
-[[sthref825]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-jvm-options [--help] 
-[--target target] [--profiler={true|false}] 
-(jvm-option-name[=jvm-option-value]) [:jvm-option-name[=jvm-option-name]]*
-----
-
-[[sthref826]]
-
-Description
-
-The `delete-jvm-options` subcommand removes one or more command-line
-options for the Java application launcher. These options are removed
-from the Java configuration `java—config` element or the profiler
-`profiler` element of the `domain.xml` file. To see the Java application
-launcher options that can be deleted, use the
-link:list-jvm-options.html#list-jvm-options-1[`list-jvm-options`(1)]
-subcommand.
-
-The deletion of some options requires a server restart for changes to
-become effective. Other options are set immediately in the environment
-of the domain administration server (DAS) and do not require a restart.
-
-Whether a restart is required depends on the type of option.
-
-* Restart is not required for Java system properties whose names do not
-start with `-Djava.` or `-Djavax.` (including the trailing period). For
-example, restart is not required for the following Java system property: +
-`-Denvironment=Production`
-* Restart is required for the following options:
-
-** Java system properties whose names start with `-Djava.` or `-Djavax.`
-(including the trailing period). For example: +
-`-Djava.security.manager`
-
-** Startup parameters for the Java application launcher. For example: +
-`-client` +
-`-Xmx1024m` +
-`-d64`
-
-To restart the DAS, use the
-link:restart-domain.html#restart-domain-1[`restart-domain`(1)] command.
-
-This subcommand is supported in remote mode only.
-
-[[sthref827]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Specifies the target from which you are removing Java application
-  launcher options. +
-  Valid values are as follows: +
-  `server`;;
-    Specifies the DAS (default).
-  instance-name;;
-    Specifies a \{product---name} instance.
-  cluster-name;;
-    Specifies a cluster.
-  configuration-name;;
-    Specifies a named configuration.
-`--profiler`::
-  Indicates whether the Java application launcher options are for the
-  profiler. The option must have been set for a profiler for this option
-  to be true.
-
-[[sthref828]]
-
-Operands
-
-jvm-option-name::
-  One or more options delimited by a colon (:). The format of the
-  operand depends on the following: +
-  * If the option has a name and a value, the format is
-  option-name=value.
-  * If the option has only a name, the format is option-name. For
-  example, `-Xmx2048m`. +
-
-[width="100%",cols="100%",]
-|=======================================================================
-a|
-Note:
-
-If an option name or option value contains a colon, the backslash
-(`\`) must be used to escape the colon in the name or value. Other
-characters might also require an escape character. For more
-information about escape characters in subcommand options, see the
-link:asadmin.html#asadmin-1m[`asadmin`(1M)] man page.
-
-|=======================================================================
-
-
-[[sthref829]]
-
-Examples
-
-[[GSRFM562]][[sthref830]]
-
-Example 1   Deleting Java Application Launcher Options
-
-This example removes multiple Java application launcher options.
-
-[source,oac_no_warn]
-----
-asadmin> delete-jvm-options -Doption1=value1
-"-Doption1=value1:-Doption2=value2"
-Command delete-jvm-options executed successfully
-----
-
-[[GSRFM563]][[sthref831]]
-
-Example 2   Deleting a Java Application Launcher Option From the
-Profiler
-
-This example removes a Java application launcher startup parameter for
-the profiler.
-
-[source,oac_no_warn]
-----
-asadmin> delete-jvm-options --profiler=true -XX:MaxPermSize=192m
-Command delete-jvm-options executed successfully.
-----
-
-[[sthref832]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref833]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-jvm-options.html#create-jvm-options-1[`create-jvm-options`(1)],
-link:list-jvm-options.html#list-jvm-options-1[`list-jvm-options`(1)],
-link:restart-domain.html#restart-domain-1[`restart-domain`(1)]
-
-For more information about the Java application launcher, see the
-reference page for the operating system that you are using:
-
-* Oracle Solaris and Linux: java - the Java application launcher
-(`http://java.sun.com/javase/7/docs/technotes/tools/solaris/java.html`)
-* Windows: java - the Java application launcher
-(`http://java.sun.com/javase/7/docs/technotes/tools/windows/java.html`)
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-lifecycle-module.adoc b/docs/reference-manual/src/main/jbake/content/delete-lifecycle-module.adoc
deleted file mode 100644
index 377e6ef..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-lifecycle-module.adoc
+++ /dev/null
@@ -1,99 +0,0 @@
-type=page
-status=published
-title=delete-lifecycle-module
-next=delete-local-instance.html
-prev=delete-jvm-options.html
-~~~~~~
-delete-lifecycle-module
-=======================
-
-[[delete-lifecycle-module-1]][[GSRFM00095]][[delete-lifecycle-module]]
-
-delete-lifecycle-module
------------------------
-
-removes the lifecycle module
-
-[[sthref834]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-lifecycle-module [--help] 
-[--target target] module_name
-----
-
-[[sthref835]]
-
-Description
-
-The `delete-lifecycle-module` subcommand removes a lifecycle module. A
-lifecycle module provides a means of running a short or long duration
-Java-based task at a specific stage in the server life cycle. This
-subcommand is supported in remote mode only.
-
-[[sthref836]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Indicates the location where the lifecycle module is to be deleted.
-  Valid values are +
-  * `server`- Specifies the default server instance as the target for
-  deleting the lifecycle module. `server` is the name of the default
-  server instance and is the default value for this option.
-  * cluster_name- Specifies a particular cluster as the target for
-  deleting the lifecycle module.
-  * instance_name- Specifies a particular server instance as the target
-  for deleting the lifecycle module.
-
-[[sthref837]]
-
-Operands
-
-module_name::
-  This operand is a unique identifier for the deployed server lifecycle
-  event listener module.
-
-[[sthref838]]
-
-Examples
-
-[[GSRFM564]][[sthref839]]
-
-Example 1   Deleting a Lifecycle Module
-
-The following example deletes a lifecycle module named `customSetup`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-lifecycle-module customSetup
-Command delete-lifecycle-module executed successfully
-----
-
-[[sthref840]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref841]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-lifecycle-module.html#create-lifecycle-module-1[`create-lifecycle-module`(1)],
-link:list-lifecycle-modules.html#list-lifecycle-modules-1[`list-lifecycle-modules`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-local-instance.adoc b/docs/reference-manual/src/main/jbake/content/delete-local-instance.adoc
deleted file mode 100644
index e7364c0..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-local-instance.adoc
+++ /dev/null
@@ -1,142 +0,0 @@
-type=page
-status=published
-title=delete-local-instance
-next=delete-managed-executor-service.html
-prev=delete-lifecycle-module.html
-~~~~~~
-delete-local-instance
-=====================
-
-[[delete-local-instance-1]][[GSRFM00096]][[delete-local-instance]]
-
-delete-local-instance
----------------------
-
-deletes a \{product---name} instance on the machine where the subcommand
-is run
-
-[[sthref842]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-local-instance [--help]
-[--nodedir node-dir] [--node node-name]
-[instance-name]
-----
-
-[[sthref843]]
-
-Description
-
-The `delete-local-instance` subcommand deletes a \{product---name}
-instance on the machine where the subcommand is run. This subcommand
-does not require the Distributed Component Object Model (DCOM) remote
-protocol or secure shell (SSH) to be configured. You must run this
-command from the machine where the instance resides.
-
-The subcommand can delete any \{product---name} instance, regardless of
-how the instance was created. For example, this subcommand can delete an
-instance that was created by using the
-link:create-instance.html#create-instance-1[`create-instance`(1)]
-subcommand.
-
-The instance that is being deleted must not be running. Otherwise, an
-error occurs.
-
-The subcommand deletes an instance by performing the following actions:
-
-* Removing the instance from the configuration of the domain
-administration server (DAS)
-* Deleting the instance's files from file system
-
-If the instance that is being deleted is the only instance that is using
-the node directory, that directory is also removed.
-
-If a standalone instance is deleted, the instance's standalone
-configuration is also deleted. A standalone instance refers to a
-configuration that is named instance-name`-config` to which no other
-clusters or unclustered instances refer.
-
-The `delete-local-instance` subcommand does not contact the DAS to
-determine the node on which the instance resides. To determine the node
-on which the instance resides, the subcommand searches the directory
-that contains the node directories. If multiple node directories exist,
-the node must be specified as an option of the subcommand.
-
-If no operand is specified and only one instance resides on the
-specified node, the subcommand deletes the instance. If no operand is
-specified and multiple instances reside on the node, an error occurs.
-
-This subcommand is supported in remote mode only.
-
-[[sthref844]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--nodedir`::
-  Specifies the directory that contains the instance's node directory.
-  The instance's files are stored in the instance's node directory. The
-  default is as-install`/nodes`.
-`--node`::
-  Specifies the node on which the instance resides. This option may be
-  omitted only if the directory that the `--nodedir` option specifies
-  contains only one node directory. Otherwise, this option is required.
-
-[[sthref845]]
-
-Operands
-
-instance-name::
-  The name of the instance to delete. This operand may be omitted if
-  only one instance resides on the specified node. Otherwise, this
-  operand is required.
-
-[[sthref846]]
-
-Examples
-
-[[GSRFM565]][[sthref847]]
-
-Example 1   Deleting an Instance
-
-This example deletes the instance `pmdsainst`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-local-instance pmdsainst
-
-Command delete-local-instance executed successfully.
-----
-
-[[sthref848]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref849]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-instance.html#create-instance-1[`create-instance`(1)],
-link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)],
-link:delete-instance.html#delete-instance-1[`delete-instance`(1)],
-link:start-instance.html#start-instance-1[`start-instance`(1)],
-link:start-local-instance.html#start-local-instance-1[`start-local-instance`(1)],
-link:stop-instance.html#stop-instance-1[`stop-instance`(1)],
-link:stop-local-instance.html#stop-local-instance-1[`stop-local-instance`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-managed-executor-service.adoc b/docs/reference-manual/src/main/jbake/content/delete-managed-executor-service.adoc
deleted file mode 100644
index c95f800..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-managed-executor-service.adoc
+++ /dev/null
@@ -1,104 +0,0 @@
-type=page
-status=published
-title=delete-managed-executor-service
-next=delete-managed-scheduled-executor-service.html
-prev=delete-local-instance.html
-~~~~~~
-delete-managed-executor-service
-===============================
-
-[[delete-managed-executor-service-1]][[GSRFM848]][[delete-managed-executor-service]]
-
-delete-managed-executor-service
--------------------------------
-
-removes a managed executor service resource with the specified JNDI name
-
-[[sthref850]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-managed-executor-service [--help]
-[--target target]
-managed_executor_service_name
-----
-
-[[sthref851]]
-
-Description
-
-The `delete-managed-executor-service` subcommand removes a managed
-executor service resource with the specified JNDI name.
-
-This subcommand is supported in remote mode only.
-
-[[sthref852]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Specifies the target from which you are deleting the resource. Valid
-  targets are: +
-  `server`;;
-    Deletes the resource from the default server instance. This is the
-    default value.
-  `domain`;;
-    Deletes the resource from the domain.
-  cluster_name;;
-    Deletes the resource from every server instance in the specified
-    cluster.
-  instance_name;;
-    Deletes the resource from the specified server instance.
-
-[[sthref853]]
-
-Operands
-
-managed_executor_service_name::
-  The JNDI name of the resource to be deleted.
-
-[[sthref854]]
-
-Examples
-
-[[GSRFM849]][[sthref855]]
-
-Example 1   Deleting a Managed Executor Service Resource
-
-This example deletes the managed executor service resource named
-`concurrent/myExecutor`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-managed-executor-service concurrent/myExecutor
-Managed executor service concurrent/myExecutor deleted successfully.
-Command delete-managed-executor-service executed successfully.
-----
-
-[[sthref856]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref857]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-managed-executor-service.html#create-managed-executor-service-1[`create-managed-executor-service`(1)],
-link:list-managed-executor-services.html#list-managed-executor-services-1[`list-managed-executor-services`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-managed-scheduled-executor-service.adoc b/docs/reference-manual/src/main/jbake/content/delete-managed-scheduled-executor-service.adoc
deleted file mode 100644
index 7626b04..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-managed-scheduled-executor-service.adoc
+++ /dev/null
@@ -1,106 +0,0 @@
-type=page
-status=published
-title=delete-managed-scheduled-executor-service
-next=delete-managed-thread-factory.html
-prev=delete-managed-executor-service.html
-~~~~~~
-delete-managed-scheduled-executor-service
-=========================================
-
-[[delete-managed-scheduled-executor-service-1]][[GSRFM850]][[delete-managed-scheduled-executor-service]]
-
-delete-managed-scheduled-executor-service
------------------------------------------
-
-removes a managed scheduled executor service resource with the specified
-JNDI name
-
-[[sthref858]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-managed-scheduled-executor-service [--help]
-[--target target]
-managed_scheduled_executor_service_name
-----
-
-[[sthref859]]
-
-Description
-
-The `delete-managed-scheduled-executor-service` subcommand removes a
-managed scheduled executor service resource with the specified JNDI
-name.
-
-This subcommand is supported in remote mode only.
-
-[[sthref860]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Specifies the target from which you are deleting the resource. Valid
-  targets are: +
-  `server`;;
-    Deletes the resource from the default server instance. This is the
-    default value.
-  `domain`;;
-    Deletes the resource from the domain.
-  cluster_name;;
-    Deletes the resource from every server instance in the specified
-    cluster.
-  instance_name;;
-    Deletes the resource from the specified server instance.
-
-[[sthref861]]
-
-Operands
-
-managed_scheduled_executor_service_name::
-  The JNDI name of the resource to be deleted.
-
-[[sthref862]]
-
-Examples
-
-[[GSRFM851]][[sthref863]]
-
-Example 1   Deleting a Managed Scheduled Executor Service Resource
-
-This example deletes the managed scheduled executor service resource
-named `concurrent/myScheduledExecutor`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-managed-scheduled-executor-service concurrent/myScheduledExecutor
-Managed scheduled executor service concurrent/myScheduledExecutor deleted successfully.
-Command delete-managed-scheduled-executor-service executed successfully.
-----
-
-[[sthref864]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref865]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-managed-scheduled-executor-service.html#create-managed-scheduled-executor-service-1[`create-managed-scheduled-executor-service`(1)],
-link:list-managed-scheduled-executor-services.html#list-managed-scheduled-executor-services-1[`list-managed-scheduled-executor-services`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-managed-thread-factory.adoc b/docs/reference-manual/src/main/jbake/content/delete-managed-thread-factory.adoc
deleted file mode 100644
index 4f23343..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-managed-thread-factory.adoc
+++ /dev/null
@@ -1,104 +0,0 @@
-type=page
-status=published
-title=delete-managed-thread-factory
-next=delete-message-security-provider.html
-prev=delete-managed-scheduled-executor-service.html
-~~~~~~
-delete-managed-thread-factory
-=============================
-
-[[delete-managed-thread-factory-1]][[GSRFM852]][[delete-managed-thread-factory]]
-
-delete-managed-thread-factory
------------------------------
-
-removes a managed thread factory resource with the specified JNDI name
-
-[[sthref866]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-managed-thread-factory [--help]
-[--target target]
-managed_thread_factory_name
-----
-
-[[sthref867]]
-
-Description
-
-The `delete-managed-thread-factory` subcommand removes a managed thread
-factory resource with the specified JNDI name.
-
-This subcommand is supported in remote mode only.
-
-[[sthref868]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Specifies the target from which you are deleting the resource. Valid
-  targets are: +
-  `server`;;
-    Deletes the resource from the default server instance. This is the
-    default value.
-  `domain`;;
-    Deletes the resource from the domain.
-  cluster_name;;
-    Deletes the resource from every server instance in the specified
-    cluster.
-  instance_name;;
-    Deletes the resource from the specified server instance.
-
-[[sthref869]]
-
-Operands
-
-managed_thread_factory_name::
-  The JNDI name of the resource to be deleted.
-
-[[sthref870]]
-
-Examples
-
-[[GSRFM853]][[sthref871]]
-
-Example 1   Deleting a Managed Thread Factory Resource
-
-This example deletes the managed thread factory resource named
-`concurrent/myThreadFactory`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-managed-thread-factory concurrent/myThreadFactory
-Managed thread factory concurrent/myThreadFactory deleted successfully.
-Command delete-managed-thread-factory executed successfully.
-----
-
-[[sthref872]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref873]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-managed-thread-factory.html#create-managed-thread-factory-1[`create-managed-thread-factory`(1)],
-link:list-managed-thread-factories.html#list-managed-thread-factories-1[`list-managed-thread-factories`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-message-security-provider.adoc b/docs/reference-manual/src/main/jbake/content/delete-message-security-provider.adoc
deleted file mode 100644
index cf9c33b..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-message-security-provider.adoc
+++ /dev/null
@@ -1,125 +0,0 @@
-type=page
-status=published
-title=delete-message-security-provider
-next=delete-module-config.html
-prev=delete-managed-thread-factory.html
-~~~~~~
-delete-message-security-provider
-================================
-
-[[delete-message-security-provider-1]][[GSRFM00097]][[delete-message-security-provider]]
-
-delete-message-security-provider
---------------------------------
-
-enables administrators to delete a message security provider
-
-[[sthref874]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-message-security-provider [--help] 
-[--target target]
---layer message_layer
-provider_name
-----
-
-[[sthref875]]
-
-Description
-
-The `delete-message-security-provider` subcommand enables administrators
-to delete a message security provider.
-
-In terms of what happens when this subcommand is run, the
-`provider-config` sub-element for the given message layer
-(`message-security-config` element of `domain.xml` is deleted. The
-`domain.xml`file specifies parameters and properties to the
-\{product---name}). The options specified in the list below apply to
-attributes within the `message-security-config` and `provider-config`
-sub-elements of the `domain.xml` file.
-
-If the message-layer (`message-security-config` attribute) does not
-exist, it is created, and then the `provider-config` is created under
-it.
-
-This command is supported in remote mode only.
-
-[[sthref876]]
-
-Options
-
-If an option has a short option name, then the short option precedes the
-long option name. Short options have one dash whereas long options have
-two dashes.
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Specifies the target from which you are deleting the message security
-  provider. Valid values are +
-  `server`;;
-    Deletes the message security provider from the default server
-    instance `server` and is the default value
-  `domain`;;
-    Deletes the message security provider from the domain.
-  cluster_name;;
-    Deletes the message security provider from every server instance in
-    the cluster.
-  instance_name;;
-    Deletes the message security provider from a particular sever
-    instance.
-`--layer`::
-  The message-layer from which the provider has to be deleted. The
-  default value is `HttpServlet`.
-
-[[sthref877]]
-
-Operands
-
-provider_name::
-  The name of the provider used to reference the `provider-config`
-  element.
-
-[[sthref878]]
-
-Examples
-
-[[GSRFM566]][[sthref879]]
-
-Example 1   Deleting a message security provider
-
-The following example shows how to delete a message security provider
-for a client.
-
-[source,oac_no_warn]
-----
-asadmin> delete-message-security-provider 
---layer SOAP mySecurityProvider
-----
-
-[[sthref880]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref881]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-message-security-provider.html#create-message-security-provider-1[`create-message-security-provider`(1)],
-link:list-message-security-providers.html#list-message-security-providers-1[`list-message-security-providers`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-module-config.adoc b/docs/reference-manual/src/main/jbake/content/delete-module-config.adoc
deleted file mode 100644
index d545e68..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-module-config.adoc
+++ /dev/null
@@ -1,104 +0,0 @@
-type=page
-status=published
-title=delete-module-config
-next=delete-network-listener.html
-prev=delete-message-security-provider.html
-~~~~~~
-delete-module-config
-====================
-
-[[delete-module-config-1]][[GSRFM854]][[delete-module-config]]
-
-delete-module-config
---------------------
-
-removes the configuration of a module from `domain.xml`
-
-[[sthref882]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-module-config [--help]
-[--target target]
-service_name
-----
-
-[[sthref883]]
-
-Description
-
-The `delete-module-config` subcommand removes the configuration of a
-module from `domain.xml` and causes the module to use the default
-configuration included in the module.
-
-This subcommand is supported in remote mode only.
-
-[[sthref884]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Specifies the target from which the configuration is to be deleted. +
-  Possible values are as follows: +
-  `server`;;
-    Deletes the configuration from the default server instance. This is
-    the default value.
-  `domain`;;
-    Deletes the configuration from the default domain.
-  cluster-name;;
-    Deletes the configuration from every server instance in the
-    specified cluster.
-  instance-name;;
-    Deletes the configuration from the specified instance.
-
-[[sthref885]]
-
-Operands
-
-service_name::
-  The name of the module for which configuration is to be removed.
-
-[[sthref886]]
-
-Examples
-
-[[GSRFM855]][[sthref887]]
-
-Example 1   Deleting a Default Configuration From domain.xml
-
-This example deletes the configuration of the web container module from
-`domain1` in `server-config` (the default configuration).
-
-[source,oac_no_warn]
-----
-asadmin> delete-module-config web-container
-Command delete-module-config executed successfully.
-----
-
-[[sthref888]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref889]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-module-config.html#create-module-config-1[`create-module-config`(1)],
-link:get-active-module-config.html#get-active-module-config-1[`get-active-module-config`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-network-listener.adoc b/docs/reference-manual/src/main/jbake/content/delete-network-listener.adoc
deleted file mode 100644
index 8ad8d60..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-network-listener.adoc
+++ /dev/null
@@ -1,102 +0,0 @@
-type=page
-status=published
-title=delete-network-listener
-next=delete-node-config.html
-prev=delete-module-config.html
-~~~~~~
-delete-network-listener
-=======================
-
-[[delete-network-listener-1]][[GSRFM00098]][[delete-network-listener]]
-
-delete-network-listener
------------------------
-
-removes a network listener
-
-[[sthref890]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-network-listener [--help]
-[--target target]
-listener-name
-----
-
-[[sthref891]]
-
-Description
-
-The `delete-network-listener` subcommand removes the specified network
-listener. This subcommand is supported in remote mode only.
-
-[[sthref892]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Deletes the network listener only from the specified target. Valid
-  values are as follows: +
-  `server`;;
-    Deletes the network listener from the default server instance. This
-    is the default value.
-  configuration-name;;
-    Deletes the network listener from the specified configuration.
-  cluster-name;;
-    Deletes the network listener from all server instances in the
-    specified cluster.
-  standalone-instance-name;;
-    Deletes the network listener from the specified standalone server
-    instance.
-
-[[sthref893]]
-
-Operands
-
-listener-name::
-  The name of the network listener to be deleted.
-
-[[sthref894]]
-
-Examples
-
-[[GSRFM567]][[sthref895]]
-
-Example 1   Deleting a Network Listener
-
-The following command deletes the network listener named
-`sampleListener`:
-
-[source,oac_no_warn]
-----
-asadmin> delete-network-listener sampleListener
-Command delete-network-listener executed successfully.
-----
-
-[[sthref896]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref897]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-network-listener.html#create-network-listener-1[`create-network-listener`(1)],
-link:list-network-listeners.html#list-network-listeners-1[`list-network-listeners`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-node-config.adoc b/docs/reference-manual/src/main/jbake/content/delete-node-config.adoc
deleted file mode 100644
index b90d1a4..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-node-config.adoc
+++ /dev/null
@@ -1,140 +0,0 @@
-type=page
-status=published
-title=delete-node-config
-next=delete-node-dcom.html
-prev=delete-network-listener.html
-~~~~~~
-delete-node-config
-==================
-
-[[delete-node-config-1]][[GSRFM00099]][[delete-node-config]]
-
-delete-node-config
-------------------
-
-deletes a node that is not enabled for remote communication
-
-[[sthref898]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-node-config [--help] 
-node-name
-----
-
-[[sthref899]]
-
-Description
-
-The `delete-node-config` subcommand deletes a node that is not enabled
-for remote communication from the domain. This subcommand does not
-require the Distributed Component Object Model (DCOM) remote protocol or
-secure shell (SSH) to be configured.
-
-This subcommand can delete only a node that is not enabled for remote
-communication. The subcommand for deleting other types of nodes depends
-on the type of the node:
-
-* A node that is enabled for remote communication over DCOM must be
-deleted by using the
-link:delete-node-dcom.html#delete-node-dcom-1[`delete-node-dcom`(1)]
-subcommand.
-* A node that is enabled for remote communication over SSH must be
-deleted by using the
-link:delete-node-ssh.html#delete-node-ssh-1[`delete-node-ssh`(1)]
-subcommand.
-
-To determine whether a node is enabled for remote communication, use the
-link:list-nodes.html#list-nodes-1[`list-nodes`(1)] subcommand.
-
-No \{product---name} instances must reside on the node that is being
-deleted. Otherwise, the subcommand fails. Before running this
-subcommand, delete any instances that reside on the node by using, for
-example, the
-link:delete-instance.html#delete-instance-1[`delete-instance`(1)]
-subcommand or the
-link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)]
-subcommand.
-
-
-[NOTE]
-========================================================
-
-The predefined node `localhost-`domain cannot be deleted.
-
-========================================================
-
-
-This subcommand is supported in remote mode only.
-
-[[sthref900]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref901]]
-
-Operands
-
-node-name::
-  The name of the node to delete. The node must not be enabled for
-  communication over DCOM or SSH. Otherwise, an error occurs.
-
-[[sthref902]]
-
-Examples
-
-[[GSRFM568]][[sthref903]]
-
-Example 1   Deleting a Node That Is Not Enabled for Remote Communication
-
-This example deletes the node `sj03`, which is not enabled for remote
-communication.
-
-[source,oac_no_warn]
-----
-asadmin> delete-node-config sj03
-
-Command delete-node-config executed successfully.
-----
-
-[[sthref904]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref905]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-node-config.html#create-node-config-1[`create-node-config`(1)],
-link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
-link:delete-instance.html#delete-instance-1[`delete-instance`(1)],
-link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)],
-link:delete-node-ssh.html#delete-node-ssh-1[`delete-node-ssh`(1)],
-link:install-node.html#install-node-1[`install-node`(1)],
-link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)],
-link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)],
-link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
-link:uninstall-node.html#uninstall-node-1[`uninstall-node`(1)],
-link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)],
-link:uninstall-node-ssh.html#uninstall-node-ssh-1[`uninstall-node-ssh`(1)],
-link:update-node-config.html#update-node-config-1[`update-node-config`(1)],
-link:update-node-ssh.html#update-node-dcom-1[`update-node-dcom`(1)],
-link:update-node-ssh001.html#update-node-ssh-1[`update-node-ssh`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-node-dcom.adoc b/docs/reference-manual/src/main/jbake/content/delete-node-dcom.adoc
deleted file mode 100644
index 8cb2686..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-node-dcom.adoc
+++ /dev/null
@@ -1,157 +0,0 @@
-type=page
-status=published
-title=delete-node-dcom
-next=delete-node-ssh.html
-prev=delete-node-config.html
-~~~~~~
-delete-node-dcom
-================
-
-[[delete-node-dcom-1]][[GSRFM569]][[delete-node-dcom]]
-
-delete-node-dcom
-----------------
-
-deletes a node that is enabled for communication over DCOM
-
-[[sthref906]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-node-dcom [--help] 
-[--uninstall={false|true}] [--force={false|true}]
-node-name
-----
-
-[[sthref907]]
-
-Description
-
-The `delete-node-dcom` subcommand deletes a node that is enabled for
-communication over the Distributed Component Object Model (DCOM) remote
-protocol from the domain. The DCOM protocol is available only on Windows
-systems. This subcommand does not require DCOM to be configured.
-
-This subcommand can delete only a node that is enabled for communication
-over DCOM. The subcommand for deleting other types of nodes depends on
-the type of the node:
-
-* A node that is enabled for communication over secure shell (SSH) must
-be deleted by using the
-link:delete-node-ssh.html#delete-node-ssh-1[`delete-node-ssh`(1)]
-subcommand.
-* A node that is not enabled for communication must be deleted by using
-the
-link:delete-node-config.html#delete-node-config-1[`delete-node-config`(1)]
-subcommand.
-
-To determine whether a node is enabled for communication over DCOM, use
-the link:list-nodes.html#list-nodes-1[`list-nodes`(1)] subcommand.
-
-No \{product---name} instances must reside on the node that is being
-deleted. Otherwise, the subcommand fails. Before running this
-subcommand, delete any instances that reside on the node by using, for
-example, the
-link:delete-instance.html#delete-instance-1[`delete-instance`(1)]
-subcommand or the
-link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)]
-subcommand.
-
-This subcommand is supported in remote mode only.
-
-[[sthref908]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--uninstall`::
-  Specifies whether the \{product---name} software is uninstalled from
-  host that the node represents. +
-  Possible values are as follows: +
-  `false`;;
-    The \{product---name} software is not uninstalled from the host
-    (default).
-  `true`;;
-    The \{product---name} software is uninstalled from the host. By
-    default, if any node except the predefined node `localhost-`domain
-    resides on any host from which \{product---name} software is being
-    uninstalled, the subcommand fails. To uninstall the
-    \{product---name} software from a host on which user-defined nodes
-    reside, set the `--force` option to `true`. If the `--force` option
-    is `true`, the subcommand removes the entire content of the parent
-    of the base installation directory.
-`--force`::
-  If `--uninstall` is true, specifies whether the subcommand uninstalls
-  the \{product---name} software from a host even if a user-defined node
-  resides on the host. Possible values are as follows: +
-  `false`;;
-    If a user-defined node resides on a host, the software is not
-    uninstalled and the subcommand fails (default). +
-    If the `--force` option is `false`, the subcommand removes only the
-    \{product---name} software files. Other content if the parent of the
-    base installation directory, such as configuration files, are not
-    removed.
-  `true`;;
-    The subcommand uninstalls the \{product---name} software from the
-    host even if a user-defined node resides on the host. +
-    If the `--force` option is `true`, the subcommand removes the entire
-    content of the parent of the base installation directory.
-
-[[sthref909]]
-
-Operands
-
-node-name::
-  The name of the node to delete. The node must enabled for
-  communication over DCOM. Otherwise, an error occurs.
-
-[[sthref910]]
-
-Examples
-
-[[GSRFM570]][[sthref911]]
-
-Example 1   Deleting a Node That Is Enabled for Communication Over DCOM
-
-This example deletes the node `xkyd`, which is enabled for communication
-over DCOM.
-
-[source,oac_no_warn]
-----
-asadmin> delete-node-dcom xkyd
-Command delete-node-dcom executed successfully.
-----
-
-[[sthref912]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref913]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
-link:delete-instance.html#delete-instance-1[`delete-instance`(1)],
-link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)],
-link:delete-node-config.html#delete-node-config-1[`delete-node-config`(1)],
-link:delete-node-ssh.html#delete-node-ssh-1[`delete-node-ssh`(1)],
-link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)],
-link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
-link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)],
-link:update-node-ssh.html#update-node-dcom-1[`update-node-dcom`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-node-ssh.adoc b/docs/reference-manual/src/main/jbake/content/delete-node-ssh.adoc
deleted file mode 100644
index e4696f3..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-node-ssh.adoc
+++ /dev/null
@@ -1,162 +0,0 @@
-type=page
-status=published
-title=delete-node-ssh
-next=delete-password-alias.html
-prev=delete-node-dcom.html
-~~~~~~
-delete-node-ssh
-===============
-
-[[delete-node-ssh-1]][[GSRFM00100]][[delete-node-ssh]]
-
-delete-node-ssh
----------------
-
-deletes a node that is enabled for communication over SSH
-
-[[sthref914]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-node-ssh [--help] 
-[--uninstall={false|true}] [--force={false|true}]
-node-name
-----
-
-[[sthref915]]
-
-Description
-
-The `delete-node-ssh` subcommand deletes a node that is enabled for
-communication over secure shell (SSH) from the domain. This subcommand
-does not require SSH to be configured.
-
-This subcommand can delete only a node that is enabled for communication
-over SSH. The subcommand for deleting other types of nodes depends on
-the type of the node:
-
-* A node that is enabled for communication over the Distributed
-Component Object Model (DCOM) remote protocol must be deleted by using
-the link:delete-node-dcom.html#delete-node-dcom-1[`delete-node-dcom`(1)]
-subcommand.
-* A node that is not enabled for remote communication must be deleted by
-using the
-link:delete-node-config.html#delete-node-config-1[`delete-node-config`(1)]
-subcommand.
-
-To determine whether a node is enabled for communication over SSH, use
-the link:list-nodes.html#list-nodes-1[`list-nodes`(1)] subcommand.
-
-No \{product---name} instances must reside on the node that is being
-deleted. Otherwise, the subcommand fails. Before running this
-subcommand, delete any instances that reside on the node by using, for
-example, the
-link:delete-instance.html#delete-instance-1[`delete-instance`(1)]
-subcommand or the
-link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)]
-subcommand.
-
-This subcommand is supported in remote mode only.
-
-[[sthref916]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--uninstall`::
-  Specifies whether the \{product---name} software is uninstalled from
-  host that the node represents. +
-  Possible values are as follows: +
-  `false`;;
-    The \{product---name} software is not uninstalled from the host
-    (default).
-  `true`;;
-    The \{product---name} software is uninstalled from the host. By
-    default, if any node except the predefined node `localhost-`domain
-    resides on any host from which \{product---name} software is being
-    uninstalled, the subcommand fails. To uninstall the
-    \{product---name} software from a host on which user-defined nodes
-    reside, set the `--force` option to `true`. If the `--force` option
-    is `true`, the subcommand removes the entire content of the parent
-    of the base installation directory.
-`--force`::
-  If `--uninstall` is true, specifies whether the subcommand uninstalls
-  the \{product---name} software from a host even if a user-defined node
-  resides on the host. Possible values are as follows: +
-  `false`;;
-    If a user-defined node resides on a host, the software is not
-    uninstalled and the subcommand fails (default). +
-    If the `--force` option is `false`, the subcommand removes only the
-    \{product---name} software files. Other content if the parent of the
-    base installation directory, such as configuration files, are not
-    removed.
-  `true`;;
-    The subcommand uninstalls the \{product---name} software from the
-    host even if a user-defined node resides on the host. +
-    If the `--force` option is `true`, the subcommand removes the entire
-    content of the parent of the base installation directory.
-
-[[sthref917]]
-
-Operands
-
-node-name::
-  The name of the node to delete. The node must enabled for
-  communication over SSH. Otherwise, an error occurs.
-
-[[sthref918]]
-
-Examples
-
-[[GSRFM571]][[sthref919]]
-
-Example 1   Deleting a Node That Is Enabled for Communication Over SSH
-
-This example deletes the node `eg1`, which is enabled for communication
-over SSH.
-
-[source,oac_no_warn]
-----
-asadmin> delete-node-ssh eg1
-Command delete-node-ssh executed successfully.
-----
-
-[[sthref920]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref921]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
-link:create-node-ssh.html#create-node-ssh-1[`create-node-ssh`(1)],
-link:delete-instance.html#delete-instance-1[`delete-instance`(1)],
-link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)],
-link:delete-node-config.html#delete-node-config-1[`delete-node-config`(1)],
-link:delete-node-dcom.html#delete-node-dcom-1[`delete-node-dcom`(1)],
-link:install-node.html#install-node-1[`install-node`(1)],
-link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)],
-link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)],
-link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
-link:uninstall-node.html#uninstall-node-1[`uninstall-node`(1)],
-link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)],
-link:uninstall-node-ssh.html#uninstall-node-ssh-1[`uninstall-node-ssh`(1)],
-link:update-node-ssh.html#update-node-dcom-1[`update-node-dcom`(1)],
-link:update-node-ssh001.html#update-node-ssh-1[`update-node-ssh`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-password-alias.adoc b/docs/reference-manual/src/main/jbake/content/delete-password-alias.adoc
deleted file mode 100644
index aaef893..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-password-alias.adoc
+++ /dev/null
@@ -1,87 +0,0 @@
-type=page
-status=published
-title=delete-password-alias
-next=delete-profiler.html
-prev=delete-node-ssh.html
-~~~~~~
-delete-password-alias
-=====================
-
-[[delete-password-alias-1]][[GSRFM00101]][[delete-password-alias]]
-
-delete-password-alias
----------------------
-
-deletes a password alias
-
-[[sthref922]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-password-alias [--help]
-aliasname
-----
-
-[[sthref923]]
-
-Description
-
-This subcommand deletes a password alias.
-
-[[sthref924]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref925]]
-
-Operands
-
-aliasname::
-  This is the name of the substitute password as it appears in
-  `domain.xml`.
-
-[[sthref926]]
-
-Examples
-
-[[GSRFM572]][[sthref927]]
-
-Example 1   Deleting a Password Alias
-
-[source,oac_no_warn]
-----
-asadmin>delete-password-alias
-jmspassword-alias
-----
-
-Command delete-password-alias executed successfully
-
-[[sthref928]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref929]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-password-alias.html#create-password-alias-1[`create-password-alias`(1)],
-link:list-password-aliases.html#list-password-aliases-1[`list-password-aliases`(1)],
-link:update-password-alias.html#update-password-alias-1[`update-password-alias`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-profiler.adoc b/docs/reference-manual/src/main/jbake/content/delete-profiler.adoc
deleted file mode 100644
index 9c0310a..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-profiler.adoc
+++ /dev/null
@@ -1,97 +0,0 @@
-type=page
-status=published
-title=delete-profiler
-next=delete-protocol.html
-prev=delete-password-alias.html
-~~~~~~
-delete-profiler
-===============
-
-[[delete-profiler-1]][[GSRFM00102]][[delete-profiler]]
-
-delete-profiler
----------------
-
-removes the profiler element
-
-[[sthref930]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-profiler [--help] 
-[--target target_name]
-----
-
-[[sthref931]]
-
-Description
-
-The `delete-profiler` subcommand deletes the profiler element in the
-Java configuration. Only one profiler can exist at a time. If you
-attempt to create a profiler while one already exists, an error message
-is displayed and the existing profiler must be deleted.
-
-For changes to take effect, the server must restarted.
-
-This command is supported in remote mode only.
-
-[[sthref932]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  This option specifies the target profiler element which you are
-  deleting. Valid values are +
-  `server`;;
-    Deletes the profiler element for the default server instance
-    `server` and is the default value.
-  configuration_name;;
-    Deletes the profiler element for the named configuration.
-  cluster_name;;
-    Deletes the profiler element for every server instance in the
-    cluster.
-  instance_name;;
-    Deletes the profiler element for a particular server instance.
-
-[[sthref933]]
-
-Examples
-
-[[GSRFM573]][[sthref934]]
-
-Example 1   Deleting a Profile
-
-This example deletes the profiler named `sample_profiler`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-profiler sample_profiler
-Command delete-profiler executed successfully
-----
-
-[[sthref935]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref936]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-profiler.html#create-profiler-1[`create-profiler`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-protocol-filter.adoc b/docs/reference-manual/src/main/jbake/content/delete-protocol-filter.adoc
deleted file mode 100644
index a106e67..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-protocol-filter.adoc
+++ /dev/null
@@ -1,104 +0,0 @@
-type=page
-status=published
-title=delete-protocol-filter
-next=delete-protocol-finder.html
-prev=delete-protocol.html
-~~~~~~
-delete-protocol-filter
-======================
-
-[[delete-protocol-filter-1]][[GSRFM00104]][[delete-protocol-filter]]
-
-delete-protocol-filter
-----------------------
-
-removes a protocol filter
-
-[[sthref945]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-protocol-filter [--help]
---protocol protocol-name
-[--target server]
-protocol-filter-name
-----
-
-[[sthref946]]
-
-Description
-
-The `delete-protocol-filter` subcommand removes the specified protocol
-filter. This subcommand is supported in remote mode only.
-
-[[sthref947]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--protocol-name`::
-  The name of the associated protocol.
-`--target`::
-  Deletes the protocol filter only from the specified target. Valid
-  values are as follows: +
-  `server`;;
-    Deletes the protocol filter from the default server instance. This
-    is the default value.
-  configuration-name;;
-    Deletes the protocol filter from the specified configuration.
-  cluster-name;;
-    Deletes the protocol filter from all server instances in the
-    specified cluster.
-  standalone-instance-name;;
-    Deletes the protocol filter from the specified standalone server
-    instance.
-
-[[sthref948]]
-
-Operands
-
-protocol-filter-name::
-  The name of the protocol filter to be deleted.
-
-[[sthref949]]
-
-Examples
-
-[[GSRFM575]][[sthref950]]
-
-Example 1   Deleting a Protocol Filter
-
-The following command deletes the protocol filter named `http1-filter`:
-
-[source,oac_no_warn]
-----
-asadmin> delete-protocol-filter --protocol http1 http1-filter
-Command delete-protocol-filter executed successfully.
-----
-
-[[sthref951]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref952]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-protocol-filter.html#create-protocol-filter-1[`create-protocol-filter`(1)],
-link:list-protocol-filters.html#list-protocol-filters-1[`list-protocol-filters`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-protocol-finder.adoc b/docs/reference-manual/src/main/jbake/content/delete-protocol-finder.adoc
deleted file mode 100644
index a4bf265..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-protocol-finder.adoc
+++ /dev/null
@@ -1,88 +0,0 @@
-type=page
-status=published
-title=delete-protocol-finder
-next=delete-resource-adapter-config.html
-prev=delete-protocol-filter.html
-~~~~~~
-delete-protocol-finder
-======================
-
-[[delete-protocol-finder-1]][[GSRFM00105]][[delete-protocol-finder]]
-
-delete-protocol-finder
-----------------------
-
-removes a protocol finder
-
-[[sthref953]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-protocol-finder [--help]
---protocol protocol-name
-[--target server]
-protocol-finder-name
-----
-
-[[sthref954]]
-
-Description
-
-The `delete-protocol-finder` subcommand removes the specified protocol
-finder. This subcommand is supported in remote mode only.
-
-[[sthref955]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--protocol-name`::
-  The name of the associated protocol.
-`--target`::
-  Deletes the protocol finder only from the specified target. Valid
-  values are as follows: +
-  `server`;;
-    Deletes the protocol finder from the default server instance. This
-    is the default value.
-  configuration-name;;
-    Deletes the protocol finder from the specified configuration.
-  cluster-name;;
-    Deletes the protocol finder from all server instances in the
-    specified cluster.
-  standalone-instance-name;;
-    Deletes the protocol finder from the specified standalone server
-    instance.
-
-[[sthref956]]
-
-Operands
-
-protocol-finder-name::
-  The name of the protocol finder to be deleted.
-
-[[sthref957]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref958]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-protocol-finder.html#create-protocol-finder-1[`create-protocol-finder`(1)],
-link:list-protocol-finders.html#list-protocol-finders-1[`list-protocol-finders`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-protocol.adoc b/docs/reference-manual/src/main/jbake/content/delete-protocol.adoc
deleted file mode 100644
index b7fd7b1..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-protocol.adoc
+++ /dev/null
@@ -1,100 +0,0 @@
-type=page
-status=published
-title=delete-protocol
-next=delete-protocol-filter.html
-prev=delete-profiler.html
-~~~~~~
-delete-protocol
-===============
-
-[[delete-protocol-1]][[GSRFM00103]][[delete-protocol]]
-
-delete-protocol
----------------
-
-removes a protocol
-
-[[sthref937]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-protocol [--help]
-[--target target]
-protocol-name
-----
-
-[[sthref938]]
-
-Description
-
-The `delete-protocol` subcommand removes the specified protocol. This
-subcommand is supported in remote mode only.
-
-[[sthref939]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Deletes the protocol only from the specified target. Valid values are
-  as follows: +
-  `server`;;
-    Deletes the protocol from the default server instance. This is the
-    default value.
-  configuration-name;;
-    Deletes the protocol from the specified configuration.
-  cluster-name;;
-    Deletes the protocol from all server instances in the specified
-    cluster.
-  standalone-instance-name;;
-    Deletes the protocol from the specified standalone server instance.
-
-[[sthref940]]
-
-Operands
-
-protocol-name::
-  The name of the protocol to be deleted.
-
-[[sthref941]]
-
-Examples
-
-[[GSRFM574]][[sthref942]]
-
-Example 1   Deleting a Protocol
-
-The following command deletes the protocol named `http-1`:
-
-[source,oac_no_warn]
-----
-asadmin> delete-protocol http-1
-Command delete-protocol executed successfully.
-----
-
-[[sthref943]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref944]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-protocol.html#create-protocol-1[`create-protocol`(1)],
-link:list-protocols.html#list-protocols-1[`list-protocols`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-resource-adapter-config.adoc b/docs/reference-manual/src/main/jbake/content/delete-resource-adapter-config.adoc
deleted file mode 100644
index b66ef40..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-resource-adapter-config.adoc
+++ /dev/null
@@ -1,90 +0,0 @@
-type=page
-status=published
-title=delete-resource-adapter-config
-next=delete-resource-ref.html
-prev=delete-protocol-finder.html
-~~~~~~
-delete-resource-adapter-config
-==============================
-
-[[delete-resource-adapter-config-1]][[GSRFM00106]][[delete-resource-adapter-config]]
-
-delete-resource-adapter-config
-------------------------------
-
-deletes the resource adapter configuration
-
-[[sthref959]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-resource-adapter-config [--help] 
-raname
-----
-
-[[sthref960]]
-
-Description
-
-The `delete-resource-adapter-config` subcommand deletes the
-configuration information for the connector module.
-
-This command is supported in remote mode only.
-
-[[sthref961]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  This option is deprecated.
-
-[[sthref962]]
-
-Operands
-
-raname::
-  Specifies the connector module name.
-
-[[sthref963]]
-
-Examples
-
-[[GSRFM576]][[sthref964]]
-
-Example 1   Deleting a Resource Adapter Configuration
-
-This example deletes the configuration information for `ra1`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-resource-adapter-config ra1
-Command delete-resource-adapter-config executed successfully
-----
-
-[[sthref965]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref966]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-resource-adapter-config.html#create-resource-adapter-config-1[`create-resource-adapter-config`(1)],
-link:list-resource-adapter-configs.html#list-resource-adapter-configs-1[`list-resource-adapter-configs`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-resource-ref.adoc b/docs/reference-manual/src/main/jbake/content/delete-resource-ref.adoc
deleted file mode 100644
index 41da1b0..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-resource-ref.adoc
+++ /dev/null
@@ -1,113 +0,0 @@
-type=page
-status=published
-title=delete-resource-ref
-next=delete-ssl.html
-prev=delete-resource-adapter-config.html
-~~~~~~
-delete-resource-ref
-===================
-
-[[delete-resource-ref-1]][[GSRFM00107]][[delete-resource-ref]]
-
-delete-resource-ref
--------------------
-
-removes a reference to a resource
-
-[[sthref967]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-resource-ref [--help] 
-[--target target] reference_name
-----
-
-[[sthref968]]
-
-Description
-
-The `delete-resource-ref` subcommand removes from a cluster or an
-unclustered server instance a reference to a resource (for example, a
-JDBC resource). This effectively results in the removal of the resource
-from the JNDI tree of the targeted instance or cluster.
-
-The target instance or instances making up the cluster need not be
-running or available for this subcommand to succeed. If one or more
-instances are not available, they will no longer load the resource in
-the JNDI tree the next time they start.
-
-Removal of the reference does not result in removal of the resource from
-the domain. The resource is removed only by the `delete` subcommand for
-that resource (for example, `delete-jdbc-resource`).
-
-This subcommand is supported in remote mode only.
-
-[[sthref969]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Specifies the target from which you are removing the resource
-  reference. Valid values are +
-  `server`;;
-    Removes the resource reference from the default server instance
-    `server` and is the default value.
-  cluster_name;;
-    Removes the resource reference from every server instance in the
-    cluster.
-  instance_name;;
-    Removes the resource reference from the named unclustered server
-    instance.
-
-[[sthref970]]
-
-Operands
-
-reference_name::
-  The name or JNDI name of the resource.
-
-[[sthref971]]
-
-Examples
-
-[[GSRFM577]][[sthref972]]
-
-Example 1   Removing a Reference to a Resource
-
-This example removes a reference to the JMS destination resource
-`jms/Topic` on the cluster `cluster1`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-resource-ref --target cluster1 jms/Topic
-resource-ref jms/Topic deleted successfully.
-Command delete-resource-ref executed successfully.
-----
-
-[[sthref973]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref974]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-resource-ref.html#create-resource-ref-1[`create-resource-ref`(1)],
-link:list-resource-refs.html#list-resource-refs-1[`list-resource-refs`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-ssl.adoc b/docs/reference-manual/src/main/jbake/content/delete-ssl.adoc
deleted file mode 100644
index 40c1bc6..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-ssl.adoc
+++ /dev/null
@@ -1,123 +0,0 @@
-type=page
-status=published
-title=delete-ssl
-next=delete-system-property.html
-prev=delete-resource-ref.html
-~~~~~~
-delete-ssl
-==========
-
-[[delete-ssl-1]][[GSRFM00109]][[delete-ssl]]
-
-delete-ssl
-----------
-
-deletes the SSL element in the selected HTTP listener, IIOP listener, or
-IIOP service
-
-[[sthref975]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-ssl [--help]
-[--target target]
---type listener_or_service_type
-listener_id
-----
-
-[[sthref976]]
-
-Description
-
-The `delete-ssl` subcommand deletes the SSL element in the selected HTTP
-listener, IIOP listener, or IIOP service.
-
-The listener_id is not required if the `--type` is `iiop-service`.
-
-This subcommand is supported in remote mode only.
-
-[[sthref977]]
-
-Options
-
-If an option has a short option name, then the short option precedes the
-long option name. Short options have one dash whereas long options have
-two dashes.
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Specifies the target on which you are configuring the ssl element. The
-  following values are valid: +
-  `server`;;
-    Specifies the server in which the iiop-service or HTTP/IIOP listener
-    is to be unconfigured for SSL.
-  config;;
-    Specifies the configuration that contains the HTTP/IIOP listener or
-    iiop-service for which SSL is to be unconfigured.
-  cluster;;
-    Specifies the cluster in which the HTTP/IIOP listener or
-    iiop-service is to be unconfigured for SSL. All the server instances
-    in the cluster will get SSL unconfigured for the respective listener
-    or iiop-service.
-  instance;;
-    Specifies the instance in which the HTTP/IIOP listener or
-    iiop-service is to be unconfigured for SSL.
-`--type`::
-  The type of service or listener for which the SSL is deleted. The type
-  must be one of the following types: +
-  * `http-listener`
-  * `iiop-listener`
-  * `iiop-service`
-
-[[sthref978]]
-
-Operands
-
-listener_id::
-  The ID of the listener from which the SSL element is to be deleted. +
-  The listener_id operand is not required if the `--type` is
-  `iiop-service`.
-
-[[sthref979]]
-
-Examples
-
-[[GSRFM579]][[sthref980]]
-
-Example 1   Deleting an SSL element from an HTTP listener
-
-The following example shows how to delete an SSL element from an HTTP
-listener named `http-listener-1`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-ssl
---type http-listener http-listener-1
-Command delete-ssl executed successfully.
-----
-
-[[sthref981]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref982]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-ssl.html#create-ssl-1[`create-ssl`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-system-property.adoc b/docs/reference-manual/src/main/jbake/content/delete-system-property.adoc
deleted file mode 100644
index d6dac96..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-system-property.adoc
+++ /dev/null
@@ -1,97 +0,0 @@
-type=page
-status=published
-title=delete-system-property
-next=delete-threadpool.html
-prev=delete-ssl.html
-~~~~~~
-delete-system-property
-======================
-
-[[delete-system-property-1]][[GSRFM00110]][[delete-system-property]]
-
-delete-system-property
-----------------------
-
-removes a system property of the domain, configuration, cluster, or
-server instance, one at a time
-
-[[sthref983]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-system-property [--help] 
-[--target target_name ] 
-[property_name]
-----
-
-[[sthref984]]
-
-Description
-
-The `delete-system-property` subcommand deletes a system property of a
-domain, configuration, cluster, or server instance. Make sure that the
-system property is not referenced elsewhere in the configuration before
-deleting it.
-
-This subcommand is supported in remote mode only.
-
-[[sthref985]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  This option specifies the target on which you are deleting the system
-  properties. The valid targets for this subcommand are instance,
-  cluster, configuration, domain, and server. Server is the default
-  option.
-
-[[sthref986]]
-
-Operands
-
-property_name::
-  The name of the system property to remove.
-
-[[sthref987]]
-
-Examples
-
-[[GSRFM580]][[sthref988]]
-
-Example 1   Deleting a System Property
-
-This example deletes the system property named `http-listener-port`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-system-property http-listener-port
-Command delete-system-property executed successfully.
-----
-
-[[sthref989]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref990]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-system-properties.html#create-system-properties-1[`create-system-properties`(1)],
-link:list-system-properties.html#list-system-properties-1[`list-system-properties`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-threadpool.adoc b/docs/reference-manual/src/main/jbake/content/delete-threadpool.adoc
deleted file mode 100644
index 5dcd765..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-threadpool.adoc
+++ /dev/null
@@ -1,100 +0,0 @@
-type=page
-status=published
-title=delete-threadpool
-next=delete-transport.html
-prev=delete-system-property.html
-~~~~~~
-delete-threadpool
-=================
-
-[[delete-threadpool-1]][[GSRFM00111]][[delete-threadpool]]
-
-delete-threadpool
------------------
-
-removes a thread pool
-
-[[sthref991]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-threadpool [--help] 
-[--target target] threadpool-id
-----
-
-[[sthref992]]
-
-Description
-
-Removes the thread pool with the specified ID. This subcommand is
-supported in remote mode only.
-
-[[sthref993]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  This option specifies the target from which you are removing the
-  thread pool. +
-  Valid values are as follows: +
-  `server`;;
-    Deletes the thread pool for the default \{product---name} instance
-    `server` and is the default value.
-  configuration-name;;
-    Deletes the thread pool for the named configuration.
-  cluster-name;;
-    Deletes the thread pool for every instance in the cluster.
-  instance-name;;
-    Deletes the thread pool for a particular instance.
-
-[[sthref994]]
-
-Operands
-
-threadpool-id::
-  An ID for the work queue, for example, `thread-pool1`, `threadpool-2`,
-  and so forth.
-
-[[sthref995]]
-
-Examples
-
-[[GSRFM581]][[sthref996]]
-
-Example 1   Deleting a Thread Pool
-
-This example deletes `threadpool-l`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-threadpool threadpool-1
-Command delete-threadpool executed successfully
-----
-
-[[sthref997]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref998]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-threadpool.html#create-threadpool-1[`create-threadpool`(1)],
-link:list-threadpools.html#list-threadpools-1[`list-threadpools`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-transport.adoc b/docs/reference-manual/src/main/jbake/content/delete-transport.adoc
deleted file mode 100644
index 112edde..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-transport.adoc
+++ /dev/null
@@ -1,100 +0,0 @@
-type=page
-status=published
-title=delete-transport
-next=delete-virtual-server.html
-prev=delete-threadpool.html
-~~~~~~
-delete-transport
-================
-
-[[delete-transport-1]][[GSRFM00112]][[delete-transport]]
-
-delete-transport
-----------------
-
-removes a transport
-
-[[sthref999]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-transport [--help]
-[--target target]
-transport-name
-----
-
-[[sthref1000]]
-
-Description
-
-The `delete-transport` subcommand removes the specified transport. This
-subcommand is supported in remote mode only.
-
-[[sthref1001]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Deletes the transport only from the specified target. Valid values are
-  as follows: +
-  `server`;;
-    Deletes the transport from the default server instance. This is the
-    default value.
-  configuration-name;;
-    Deletes the transport from the specified configuration.
-  cluster-name;;
-    Deletes the transport from all server instances in the specified
-    cluster.
-  standalone-instance-name;;
-    Deletes the transport from the specified standalone server instance.
-
-[[sthref1002]]
-
-Operands
-
-transport-name::
-  The name of the transport to be deleted.
-
-[[sthref1003]]
-
-Examples
-
-[[GSRFM582]][[sthref1004]]
-
-Example 1   Deleting a Transport
-
-The following command deletes the transport named `http1-trans`:
-
-[source,oac_no_warn]
-----
-asadmin> delete-transport http1-trans
-Command delete-transport executed successfully.
-----
-
-[[sthref1005]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1006]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-transport.html#create-transport-1[`create-transport`(1)],
-link:list-transports.html#list-transports-1[`list-transports`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/delete-virtual-server.adoc b/docs/reference-manual/src/main/jbake/content/delete-virtual-server.adoc
deleted file mode 100644
index ccae303..0000000
--- a/docs/reference-manual/src/main/jbake/content/delete-virtual-server.adoc
+++ /dev/null
@@ -1,101 +0,0 @@
-type=page
-status=published
-title=delete-virtual-server
-next=deploy.html
-prev=delete-transport.html
-~~~~~~
-delete-virtual-server
-=====================
-
-[[delete-virtual-server-1]][[GSRFM00113]][[delete-virtual-server]]
-
-delete-virtual-server
----------------------
-
-removes a virtual server
-
-[[sthref1007]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] delete-virtual-server [--help]
-[--target target] virtual-server-id
-----
-
-[[sthref1008]]
-
-Description
-
-The `delete-virtual-server` subcommand removes the virtual server with
-the specified virtual server ID. This subcommand is supported in remote
-mode only.
-
-[[sthref1009]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Deletes the virtual server only from the specified target. Valid
-  values are as follows: +
-  `server`;;
-    Deletes the virtual server from the default server instance. This is
-    the default value.
-  configuration-name;;
-    Deletes the virtual server from the specified configuration.
-  cluster-name;;
-    Deletes the virtual server from all server instances in the
-    specified cluster.
-  standalone-instance-name;;
-    Deletes the virtual server from the specified standalone server
-    instance.
-
-[[sthref1010]]
-
-Operands
-
-virtual-server-id::
-  The unique identifier for the virtual server to be deleted.
-
-[[sthref1011]]
-
-Examples
-
-[[GSRFM583]][[sthref1012]]
-
-Example 1   Deleting a Virtual Server
-
-The following command deletes the virtual server named `sample_vs1`:
-
-[source,oac_no_warn]
-----
-asadmin> delete-virtual-server sample_vs1
-Command delete-virtual-server executed successfully.
-----
-
-[[sthref1013]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1014]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-virtual-server.html#create-virtual-server-1[`create-virtual-server`(1)],
-link:list-virtual-servers.html#list-virtual-servers-1[`list-virtual-servers`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/deploy.adoc b/docs/reference-manual/src/main/jbake/content/deploy.adoc
deleted file mode 100644
index d0b8980..0000000
--- a/docs/reference-manual/src/main/jbake/content/deploy.adoc
+++ /dev/null
@@ -1,584 +0,0 @@
-type=page
-status=published
-title=deploy
-next=deploydir.html
-prev=delete-virtual-server.html
-~~~~~~
-deploy
-======
-
-[[deploy-1]][[GSRFM00114]][[deploy]]
-
-deploy
-------
-
-deploys the specified component
-
-[[sthref1015]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] deploy [--help] 
-[--force={false|true}] 
-[--virtualservers virtual_servers]
-[--contextroot context_root] 
-[--precompilejsp={false|true}] 
-[--verify={false|true}]
-[--name component_name] 
-[--upload={true|false}]
-[--retrieve local_dirpath] 
-[--dbvendorname dbvendorname]
-[--createtables={true|false}|--dropandcreatetables={true|false}]
-[--uniquetablenames={true|false}] 
-[--deploymentplan deployment_plan]
-[--altdd alternate_deploymentdescriptor]
-[--runtimealtdd runtime_alternate_deploymentdescriptor]
-[--deploymentorder deployment_order]
-[--enabled={true|false}] 
-[--generatermistubs={false|true}]
-[--availabilityenabled={false|true}] 
-[--asyncreplication={true|false}]
-[--lbenabled={true|false}]
-[--keepstate={false|true}]
-[--libraries jar_file[,jar_file]*]
-[--target target] 
-[--type pkg-type]
-[--properties(name=value)[:name=value]*] 
-[file_archive|filepath]
-----
-
-[[sthref1016]]
-
-Description
-
-The `deploy` subcommand deploys applications to the server. Applications
-can be enterprise applications, web applications, Enterprise JavaBeans
-(EJB) modules, connector modules, and application client modules. If the
-component is already deployed or already exists, it is forcibly
-redeployed if the `--force` option is set to `true` (default is
-`false`).
-
-The `--createtables` and `--dropandcreatetables` options are boolean
-flags and therefore can take the values of true or false. These options
-are only used during deployment of CMP beans that have not been mapped
-to a database (that is, no `sun-cmp-mappings.xml` descriptor is provided
-in the module's `META-INF` directory). They are ignored otherwise.
-
-The `--createtables` and `--dropandcreatetables` options are mutually
-exclusive; only one should be used. If drop and/or create tables fails,
-the deployment does not fail; a warning message is provided in the log
-file.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1017]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--force`::
-  If set to `true`, redeploys the component even if the specified
-  component has already been deployed or already exists. Default is
-  `false`.
-`--virtualservers`::
-  One or more virtual server IDs. Multiple IDs are separated by commas.
-`--contextroot`::
-  Valid only if the archive is a web module. It is ignored for other
-  archive types; it will be the value specified by default-context-path
-  in web.xml, if specified; defaults to filename without extension.
-`--precompilejsp`::
-  By default this option does not allow the JSP to be precompiled during
-  deployment. Instead, JSPs are compiled during runtime. Default is
-  `false`.
-`--verify`::
-  If set to true and the required verifier packages are installed from
-  the Update Tool, the syntax and semantics of the deployment descriptor
-  is verified. Default is `false`.
-`--name`::
-  Name of the deployable component. +
-  The name can include an optional version identifier, which follows the
-  name and is separated from the name by a colon (`:`). The version
-  identifier must begin with a letter or number. It can contain
-  alphanumeric characters plus underscore (`_`), dash (`-`), and period
-  (`.`) characters. For more information about module and application
-  versions, see "link:../application-deployment-guide/overview.html#GSDPG00324[Module and Application Versions]" in
-  GlassFish Server Open Source Edition Application Deployment Guide.
-`--upload`::
-  Specifies whether the subcommand uploads the file to the DAS. In most
-  situations, this option can be omitted. +
-  Valid values are as follows: +
-  `false`;;
-    The subcommand does not upload the file and attempts to access the
-    file through the specified file name. If the DAS cannot access the
-    file, the subcommand fails. +
-    For example, the DAS might be running as a different user than the
-    administration user and does not have read access to the file. In
-    this situation, the subcommand fails if the `--upload` option is
-    `false`.
-  `true`;;
-    The subcommand uploads the file to the DAS over the network
-    connection. +
-  The default value depends on whether the DAS is on the host where the
-  subcommand is run or is on a remote host. +
-  * If the DAS is on the host where the subcommand is run, the default
-  is `false`.
-  * If the DAS is on a remote host, the default is `true`. +
-  If a directory filepath is specified, this option is ignored.
-`--retrieve`::
-  Retrieves the client stub JAR file from the server machine to the
-  local directory.
-`--dbvendorname`::
-  Specifies the name of the database vendor for which tables are
-  created. Supported values include `db2`, `mssql`, `mysql`, `oracle`,
-  `derby`, `javadb`, `postgresql`, and `sybase`. These values are
-  case-insensitive. If not specified, the value of the
-  `database-vendor-name` attribute in `glassfish-ejb-jar.xml` is used.
-  If no value is specified, a connection is made to the resource
-  specified by the `jndi-name` subelement of the `cmp-resource` element
-  in the `glassfish-ejb-jar.xml` file, and the database vendor name is
-  read. If the connection cannot be established, or if the value is not
-  recognized, SQL-92 compliance is presumed.
-`--createtables`::
-  If specified as true, creates tables at deployment of an application
-  with unmapped CMP beans. If specified as false, tables are not
-  created. If not specified, the value of the `create-tables-at-deploy`
-  entry in the `cmp-resource` element of the `glassfish-ejb-jar.xml`
-  file determines whether or not tables are created. No unique
-  constraints are created for the tables.
-`--dropandcreatetables`::
-  If specified as true when the component is redeployed, the tables
-  created by the previous deployment are dropped before creating the new
-  tables. Applies to deployed applications with unmapped CMP beans.
-  Preexisting tables will not be dropped on the initial deployment of an
-  application or on a deployment that follows an explicit undeploy. If
-  specified as false, tables are neither dropped nor created. If not
-  specified, the tables are dropped if the `drop-tables-at-undeploy`
-  entry in the `cmp-resource` element of the `glassfish-ejb-jar.xml`
-  file is set to true, and the new tables are created if the
-  `create-tables-at-deploy` entry in the `cmp-resource` element of the
-  `glassfish-ejb-jar.xml` file is set to true.
-`--uniquetablenames`::
-  Guarantees unique table names for all the beans and results in a hash
-  code added to the table names. This is useful if you have an
-  application with case-sensitive bean names. Applies to applications
-  with unmapped CMP beans.
-`--deploymentplan`::
-  Deploys the deployment plan, which is a JAR file that contains
-  \{product---name} descriptors. Specify this option when deploying a
-  pure EAR file. A pure EAR file is an EAR without \{product---name}
-  descriptors.
-`--altdd`::
-  Deploys the application using a Java EE standard deployment descriptor
-  that resides outside of the application archive. Specify an absolute
-  path or a relative path to the alternate deployment descriptor file.
-  The alternate deployment descriptor overrides the top-level deployment
-  descriptor packaged in the archive. For example, for an EAR, the
-  `--altdd` option overrides `application.xml`. For a standalone module,
-  the `--altdd` option overrides the top-level module descriptor such as
-  `web.xml`.
-`--runtimealtdd`::
-  Deploys the application using a \{product---name} runtime deployment
-  descriptor that resides outside of the application archive. Specify an
-  absolute path or a relative path to the alternate deployment
-  descriptor file. The alternate deployment descriptor overrides the
-  top-level deployment descriptor packaged in the archive. For example,
-  for an EAR, the `--runtimealtdd` option overrides
-  `glassfish-application.xml`. For a standalone module, the
-  `--runtimealtdd` option overrides the top-level module descriptor such
-  as `glassfish-web.xml`. Applies to \{product---name} deployment
-  descriptors only (`glassfish-*.xml`); the name of the alternate
-  deployment descriptor file must begin with `glassfish-`. Does not
-  apply to `sun-*.xml` deployment descriptors, which are deprecated.
-`--deploymentorder`::
-  Specifies the deployment order of the application. This is useful if
-  the application has dependencies and must be loaded in a certain order
-  at server startup. The deployment order is specified as an integer.
-  The default value is 100. Applications with lower numbers are loaded
-  before applications with higher numbers. For example, an application
-  with a deployment order of 102 is loaded before an application with a
-  deployment order of 110. If a deployment order is not specified, the
-  default value of 100 is assigned. If two applications have the same
-  deployment order, the first application to be deployed is the first
-  application to be loaded at server startup. +
-  The deployment order is typically specified when the application is
-  first deployed but can also be specified or changed after initial
-  deployment using the `set` subcommand. You can view the deployment
-  order of an application using the `get` subcommand.
-`--enabled`::
-  Allows users to access the application. If set to `false`, users will
-  not be able to access the application. This option enables the
-  application on the specified target instance or cluster. If you deploy
-  to the target `domain`, this option is ignored, since deploying to the
-  domain doesn't deploy to a specific instance or cluster. The default
-  is `true`.
-`--generatermistubs`::
-  If set to `true`, static RMI-IIOP stubs are generated and put into the
-  `client.jar`. If set to `false`, the stubs are not generated. Default
-  is `false`.
-`--availabilityenabled`::
-  This option controls whether high-availability is enabled for web
-  sessions and for stateful session bean (SFSB) checkpointing and
-  potentially passivation. If set to false (default) all web session
-  saving and SFSB checkpointing is disabled for the specified
-  application, web application, or EJB module. If set to true, the
-  specified application or module is enabled for high-availability. Set
-  this option to true only if high availability is configured and
-  enabled at higher levels, such as the server and container levels.
-`--asyncreplication`::
-  This option controls whether web session and SFSB states for which
-  high availability is enabled are first buffered and then replicated
-  using a separate asynchronous thread. If set to true (default),
-  performance is improved but availability is reduced. If the instance
-  where states are buffered but not yet replicated fails, the states are
-  lost. If set to false, performance is reduced but availability is
-  guaranteed. States are not buffered but immediately transmitted to
-  other instances in the cluster.
-`--lbenabled`::
-  This option controls whether the deployed application is available for
-  load balancing. The default is true.
-`--keepstate`::
-  This option controls whether web sessions, SFSB instances, and
-  persistently created EJB timers are retained between redeployments. +
-  The default is false. This option is supported only on the default
-  server instance, named `server`. It is not supported and ignored for
-  any other target. +
-  Some changes to an application between redeployments prevent this
-  feature from working properly. For example, do not change the set of
-  instance variables in the SFSB bean class. +
-  For web applications, this feature is applicable only if in the
-  `glassfish-web-app.xml` file the `persistence-type` attribute of the
-  `session-manager` element is `file`. +
-  For stateful session bean instances, the persistence type without high
-  availability is set in the server (the `sfsb-persistence-type`
-  attribute) and must be set to `file`, which is the default and
-  recommended value. +
-  If any active web session, SFSB instance, or EJB timer fails to be
-  preserved or restored, none of these will be available when the
-  redeployment is complete. However, the redeployment continues and a
-  warning is logged. +
-  To preserve active state data, \{product---name} serializes the data
-  and saves it in memory. To restore the data, the class loader of the
-  newly redeployed application deserializes the data that was previously
-  saved.
-`--libraries`::
-  A comma-separated list of library JAR files. Specify the library JAR
-  files by their relative or absolute paths. Specify relative paths
-  relative to domain-dir`/lib/applibs`. The libraries are made available
-  to the application in the order specified.
-`--target`::
-  Specifies the target to which you are deploying. Valid values are: +
-  `server`;;
-    Deploys the component to the default server instance `server` and is
-    the default value.
-  `domain`;;
-    Deploys the component to the domain. If `domain` is the target for
-    an initial deployment, the application is deployed to the domain,
-    but no server instances or clusters reference the application. If
-    `domain` is the target for a redeployment (the `--force` option is
-    set to true), and dynamic reconfiguration is enabled for the
-    clusters or server instances that reference the application, the
-    referencing clusters or server instances automatically get the new
-    version of the application. If redeploying, and dynamic
-    configuration is disabled, the referencing clusters or server
-    instances do not get the new version of the application until the
-    clustered or standalone server instances are restarted.
-  cluster_name;;
-    Deploys the component to every server instance in the cluster.
-  instance_name;;
-    Deploys the component to a particular stand-alone sever instance.
-`--type`::
-  The packaging archive type of the component that is being deployed.
-  Possible values are as follows: +
-  `car`;;
-    The component is packaged as a CAR file.
-  `ear`;;
-    The component is packaged as an EAR file.
-  `ejb`;;
-    The component is an EJB packaged as a JAR file.
-  `osgi`;;
-    The component is packaged as an OSGi bundle.
-  `rar`;;
-    The component is packaged as a RAR file.
-  `war`;;
-    The component is packaged as a WAR file.
-`--properties` or `--property`::
-  Optional keyword-value pairs that specify additional properties for
-  the deployment. The available properties are determined by the
-  implementation of the component that is being deployed or redeployed.
-  The `--properties` option and the `--property` option are equivalent.
-  You can use either option regardless of the number of properties that
-  you specify. +
-  You can specify the following properties for a deployment: +
-  `jar-signing-alias`;;
-    Specifies the alias for the security certificate with which the
-    application client container JAR file is signed. Java Web Start will
-    not run code that requires elevated permissions unless it resides in
-    a JAR file signed with a certificate that the user's system trusts.
-    For your convenience, \{product---name} signs the JAR file
-    automatically using the certificate with this alias from the
-    domain's keystore. Java Web Start then asks the user whether to
-    trust the code and displays the \{product---name} certificate
-    information. To sign this JAR file with a different certificate, add
-    the certificate to the domain keystore, then use this property. For
-    example, you can use a certificate from a trusted authority, which
-    avoids the Java Web Start prompt, or from your own company, which
-    users know they can trust. Default is `s1as`, the alias for the
-    self-signed certificate created for every domain.
-  `java-web-start-enabled`;;
-    Specifies whether Java Web Start access is permitted for an
-    application client module. Default is true.
-  `compatibility`;;
-    Specifies the \{product---name} release with which to be backward
-    compatible in terms of JAR visibility requirements for applications.
-    The only allowed value is `v2`, which refers to Sun GlassFish
-    Enterprise Server version 2 or Sun Java System Application Server
-    version 9.1 or 9.1.1.Beginning in Java EE 6, the Java EE platform
-    specification imposed stricter requirements than Java EE 5 did on
-    which JAR files can be visible to various modules within an EAR
-    file. In particular, application clients must not have access to EJB
-    JAR files or other JAR files in the EAR file unless references use
-    the standard Java SE mechanisms (extensions, for example) or the
-    Java EE library-directory mechanism. Setting this property to `v2`
-    removes these restrictions.
-  `keepSessions={false|true}`;;
-    Superseded by the `--keepstate` option. +
-    If the `--force` option is set to `true`, this property can by used
-    to specify whether active sessions of the application that is being
-    redeployed are preserved and then restored when the redeployment is
-    complete. Applies to HTTP sessions in a web container. Default is
-    `false`.::
-    `false`::
-      Active sessions of the application are not preserved and restored
-      (default).
-    `true`::
-      Active sessions of the application are preserved and restored. +
-      If any active session of the application fails to be preserved or
-      restored, none of the sessions will be available when the
-      redeployment is complete. However, the redeployment continues and
-      a warning is logged. +
-      To preserve active sessions, \{product---name} serializes the
-      sessions and saves them in memory. To restore the sessions, the
-      class loader of the newly redeployed application deserializes any
-      sessions that were previously saved.
-  `preserveAppScopedResources`;;
-    If set to `true`, preserves any application-scoped resources and
-    restores them during redeployment. Default is `false`. +
-  Other available properties are determined by the implementation of the
-  component that is being redeployed. +
-  For components packaged as OSGi bundles (`--type=osgi`), the `deploy`
-  subcommand accepts properties arguments to wrap a WAR file as a WAB
-  (Web Application Bundle) at the time of deployment. The subcommand
-  looks for a key named `UriScheme` and, if present, uses the key as a
-  URL stream handler to decorate the input stream. Other properties are
-  used in the decoration process. For example, the \{product---name}
-  OSGi web container registers a URL stream handler named `webbundle`,
-  which is used to wrap a plain WAR file as a WAB. For more information
-  about usage, see the example in this help page.
-
-[[sthref1018]]
-
-Operands
-
-file_archive|filepath::
-  The path to the archive that contains the application that is being
-  deployed. This path can be a relative path or an absolute path. +
-  The archive can be in either of the following formats: +
-  * An archive file, for example, `/export/JEE_apps/hello.war`. +
-  If the `--upload` option is set to `true`, this is the path to the
-  deployable file on the local client machine. If the `--upload` option
-  is set to `false`, this is the path to the file on the server machine.
-  * A directory that contains the exploded format of the deployable
-  archive. This is the path to the directory on the server machine. +
-  If you specify a directory, the `--upload` option is ignored.
-
-[[sthref1019]]
-
-Examples
-
-[[GSRFM584]][[sthref1020]]
-
-Example 1   Deploying an Enterprise Application
-
-This example deploys the enterprise application packaged in the
-`Cart.ear` file to the default server instance `server`. You can use the
-`--target` option to deploy to a different server instance or to a
-cluster.
-
-[source,oac_no_warn]
-----
-asadmin> deploy Cart.ear
-Application deployed successfully with name Cart.
-Command deploy executed successfully
-----
-
-[[GSRFM585]][[sthref1021]]
-
-Example 2   Deploying a Web Application With the Default Context Root
-
-This example deploys the web application in the `hello.war` file to the
-default server instance `server`. You can use the `--target` option to
-deploy to a different server instance or to a cluster.
-
-[source,oac_no_warn]
-----
-asadmin> deploy hello.war
-Application deployed successfully with name hello.
-Command deploy executed successfully
-----
-
-[[GSRFM586]][[sthref1022]]
-
-Example 3   Forcibly Deploying a Web Application With a Specific Context
-Root
-
-This example forcibly deploys the web application in the `hello.war`
-file. The context root of the deployed web application is `greetings`.
-If the application has already been deployed, it is redeployed.
-
-[source,oac_no_warn]
-----
-asadmin> deploy --force=true --contextroot greetings hello.war
-Application deployed successfully with name hello.
-Command deploy executed successfully
-----
-
-[[GSRFM587]][[sthref1023]]
-
-Example 4   Deploying an Enterprise Bean
-
-This example deploys a component based on the EJB specification
-(enterprise bean) with CMP and creates the database tables used by the
-bean.
-
-This example uses the `--target` option. The target in this example is
-an existing cluster, `cluster1`.
-
-[source,oac_no_warn]
-----
-asadmin> deploy --createtables=true --target cluster1 EmployeeEJB.jar
-Application deployed successfully with name EmployeeEJB.
-Command deploy executed successfully
-----
-
-[[GSRFM588]][[sthref1024]]
-
-Example 5   Deploying a Connector Module
-
-This example deploys a connector module that is packaged in a RAR file.
-
-This example uses the `--target` option. The target in this example is
-an existing standalone server instance that does not belong to a
-cluster.
-
-[source,oac_no_warn]
-----
-asadmin> deploy --target myinstance jdbcra.rar
-Application deployed successfully with name jdbcra.
-Command deploy executed successfully
-----
-
-[[GSRFM856]][[sthref1025]]
-
-Example 6   Specifying the Deployment Order for an Application
-
-This example specifies the deployment order for two applications. The
-`cart` application is loaded before the `horse` application at server
-startup.
-
-Some lines of output are omitted from this example for readability.
-
-[source,oac_no_warn]
-----
-asadmin> deploy --deploymentorder 102 --name cart cart.war
-...
-asadmin> deploy --deploymentorder 110 --name horse horse.war
-...
-----
-
-[[GSRFM857]][[sthref1026]]
-
-Example 7   Deploying an Application Using an Alternate Java EE 8
-Deployment Descriptor File
-
-This example deploys an application using a Java EE standard deployment
-descriptor file that resides outside of the application archive.
-
-[source,oac_no_warn]
-----
-asadmin> deploy --altdd path_to_alternate_descriptor cart.ear
-Application deployed successfully with name cart.
-Command deploy executed successfully
-----
-
-[[GSRFM858]][[sthref1027]]
-
-Example 8   Deploying an Application Using an Alternate
-\{product---name} Deployment Descriptor File
-
-This example deploys an application using a \{product---name} runtime
-deployment descriptor file that resides outside of the application
-archive.
-
-[source,oac_no_warn]
-----
-asadmin> deploy --runtimealtdd path_to_alternate_runtime_descriptor horse.ear
-Application deployed successfully with name horse.
-Command deploy executed successfully
-----
-
-[[GSRFM883]][[sthref1028]]
-
-Example 9   Wrapping a WAR File as a WAB
-
-This example wraps a plain WAR file as a WAB when an OSGi bundle is
-deployed, and is specific to components packaged as OSGi bundles.
-
-The backslash (\) character is used to escape characters in the command.
-For more information about escape characters in options for the
-`asadmin` utility, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-help page.
-
-[source,oac_no_warn]
-----
-asadmin deploy --type osgi \
---properties "UriScheme=webbundle:Bundle-SymbolicName=bar:\
-Import-Package=javax.servlet;javax.servlet.http;
-%20version\\=3.0;resolution\\:
-=mandatory:Web-ContextPath=/foo" \
-/tmp/test_sample1.war
-Application deployed successfully with name sample1.
-Command deploy executed successfully
-----
-
-[[sthref1029]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1030]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:get.html#get-1[`get`(1)],
-link:list-components.html#list-components-1[`list-components`(1)],
-link:redeploy.html#redeploy-1[`redeploy`(1)],
-link:set.html#set-1[`set`(1)],
-link:undeploy.html#undeploy-1[`undeploy`(1)]
-
-link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition Application Deployment
-Guide]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/deploydir.adoc b/docs/reference-manual/src/main/jbake/content/deploydir.adoc
deleted file mode 100644
index e83271f..0000000
--- a/docs/reference-manual/src/main/jbake/content/deploydir.adoc
+++ /dev/null
@@ -1,432 +0,0 @@
-type=page
-status=published
-title=deploydir
-next=disable.html
-prev=deploy.html
-~~~~~~
-deploydir
-=========
-
-[[deploydir-1]][[GSRFM00115]][[deploydir]]
-
-deploydir
----------
-
-deploys an exploded format of application archive
-
-[[sthref1031]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] deploydir [--help] 
-[--force={false|true}] 
-[--virtualservers virtual_servers]
-[--contextroot context_root]
-[--verify={false|true}] 
-[--precompilejsp={false|true}] 
-[--name component-name] 
-[--retrieve local_dirpath] 
-[--uniquetablenames={true|false}] 
-[--dbvendorname dbvendorname] 
-[--createtables={false|true}|--dropandcreatetables={false|true}]
-[--deploymentplan deployment_plan]
-[--altdd alternate_deploymentdescriptor]
-[--runtimealtdd runtime_alternate_deploymentdescriptor]
-[--deploymentorder deployment_order]
-[--enabled={true|false}] 
-[--generatermistubs={false|true}] 
-[--availabilityenabled={false|true}] 
-[--asyncreplication={true|false}]
-[--lbenabled={true|false}]
-[--keepstate={false|true}]
-[--libraries jar_file[,jar_file]*] 
-[--target target] 
-[--type pkg-type] 
-[--properties(name=value)[:name=value]*]
-dirpath
-----
-
-[[sthref1032]]
-
-Description
-
-
-[NOTE]
-=======================================================================
-
-The `deploydir` subcommand is deprecated. Use the `deploy` subcommand
-instead.
-
-=======================================================================
-
-
-The `deploydir` subcommand deploys an application directly from a
-development directory. The appropriate directory hierarchy and
-deployment descriptors conforming to the Java EE specification must
-exist in the deployment directory.
-
-Directory deployment is for advanced developers only. Do not use
-`deploydir` in production environments. Instead, use the `deploy`
-subcommand. Directory deployment is only supported on localhost, that
-is, the client and server must reside on the same machine. For this
-reason, the only values for the `--host` option are:
-
-* `localhost`
-* The value of the `$HOSTNAME` environment variable
-* The IP address of the machine
-
-If the `--uniquetablenames`, `--createtables`, and
-`--dropandcreatetables` options are not specified, the entries in the
-deployment descriptors are used.
-
-The `--force` option makes sure the component is forcefully (re)deployed
-even if the specified component has already been deployed or already
-exists. Set the `--force` option to false for an initial deployment. If
-the specified application is running and the `--force` option is set to
-false, the subcommand fails.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1033]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--force`::
-  If set to `true`, redeploys the component even if the specified
-  component has already been deployed or already exists. Default is
-  `false`.
-`--virtualservers`::
-  One or more virtual server IDs. Multiple IDs are separated by commas.
-`--contextroot`::
-  Valid only if the archive is a web module. It is ignored for other
-  archive types; it will be the value specified by default-context-path
-  in web.xml, if specified; defaults to filename without extension.
-`--precompilejsp`::
-  By default this option does not allow the JSP to be precompiled during
-  deployment. Instead, JSPs are compiled during runtime. Default is
-  `false`.
-`--verify`::
-  If set to true and the required verifier packages are installed from
-  the Update Tool, the syntax and semantics of the deployment descriptor
-  is verified. Default is `false`.
-`--name`::
-  Name of the deployable component. +
-  The name can include an optional version identifier, which follows the
-  name and is separated from the name by a colon (`:`). The version
-  identifier must begin with a letter or number. It can contain
-  alphanumeric characters plus underscore (`_`), dash (`-`), and period
-  (`.`) characters. For more information about module and application
-  versions, see "link:../application-deployment-guide/overview.html#GSDPG00324[Module and Application Versions]" in
-  GlassFish Server Open Source Edition Application Deployment Guide.
-`--retrieve`::
-  Retrieves the client stub JAR file from the server machine to the
-  local directory.
-`--dbvendorname`::
-  Specifies the name of the database vendor for which tables are
-  created. Supported values include `db2`, `mssql`, `mysql`, `oracle`,
-  `derby`, `javadb`, `postgresql`, and `sybase`. These values are
-  case-insensitive. If not specified, the value of the
-  `database-vendor-name` attribute in `glassfish-ejb-jar.xml` is used.
-  If no value is specified, a connection is made to the resource
-  specified by the `jndi-name` subelement of the `cmp-resource` element
-  in the `glassfish-ejb-jar.xml` file, and the database vendor name is
-  read. If the connection cannot be established, or if the value is not
-  recognized, SQL-92 compliance is presumed.
-`--createtables`::
-  If specified as true, creates tables at deployment of an application
-  with unmapped CMP beans. If specified as false, tables are not
-  created. If not specified, the value of the `create-tables-at-deploy`
-  entry in the `cmp-resource` element of the `glassfish-ejb-jar.xml`
-  file determines whether or not tables are created. No unique
-  constraints are created for the tables.
-`--dropandcreatetables`::
-  If specified as true when the component is redeployed, the tables
-  created by the previous deployment are dropped before creating the new
-  tables. Applies to deployed applications with unmapped CMP beans.
-  Preexisting tables will not be dropped on the initial deployment of an
-  application or on a deployment that follows an explicit undeploy. If
-  specified as false, tables are neither dropped nor created. If not
-  specified, the tables are dropped if the `drop-tables-at-undeploy`
-  entry in the `cmp-resource` element of the `glassfish-ejb-jar.xml`
-  file is set to true, and the new tables are created if the
-  `create-tables-at-deploy` entry in the `cmp-resource` element of the
-  `glassfish-ejb-jar.xml` file is set to true.
-`--uniquetablenames`::
-  Guarantees unique table names for all the beans and results in a hash
-  code added to the table names. This is useful if you have an
-  application with case-sensitive bean names. Applies to applications
-  with unmapped CMP beans.
-`--deploymentplan`::
-  Deploys the deployment plan, which is a JAR file that contains
-  \{product---name} descriptors. Specify this option when deploying a
-  pure EAR file. A pure EAR file is an EAR without \{product---name}
-  descriptors.
-`--altdd`::
-  Deploys the application using a Java EE standard deployment descriptor
-  that resides outside of the application archive. Specify an absolute
-  path or a relative path to the alternate deployment descriptor file.
-  The alternate deployment descriptor overrides the top-level deployment
-  descriptor packaged in the archive. For example, for an EAR, the
-  `--altdd` option overrides `application.xml`. For a standalone module,
-  the `--altdd` option overrides the top-level module descriptor such as
-  `web.xml`.
-`--runtimealtdd`::
-  Deploys the application using a \{product---name} runtime deployment
-  descriptor that resides outside of the application archive. Specify an
-  absolute path or a relative path to the alternate deployment
-  descriptor file. The alternate deployment descriptor overrides the
-  top-level deployment descriptor packaged in the archive. For example,
-  for an EAR, the `--runtimealtdd` option overrides
-  `glassfish-application.xml`. For a standalone module, the
-  `--runtimealtdd` option overrides the top-level module descriptor such
-  as `glassfish-web.xml`. Applies to \{product---name} deployment
-  descriptors only (`glassfish-*.xml`); the name of the alternate
-  deployment descriptor file must begin with `glassfish-`. Does not
-  apply to `sun-*.xml` deployment descriptors, which are deprecated.
-`--deploymentorder`::
-  Specifies the deployment order of the application. This is useful if
-  the application has dependencies and must be loaded in a certain order
-  at server startup. The deployment order is specified as an integer.
-  The default value is 100. Applications with lower numbers are loaded
-  before applications with higher numbers. For example, an application
-  with a deployment order of 102 is loaded before an application with a
-  deployment order of 110. If a deployment order is not specified, the
-  default value of 100 is assigned. If two applications have the same
-  deployment order, the first application to be deployed is the first
-  application to be loaded at server startup. +
-  The deployment order is typically specified when the application is
-  first deployed but can also be specified or changed after initial
-  deployment using the `set` subcommand. You can view the deployment
-  order of an application using the `get` subcommand
-`--enabled`::
-  Allows users to access the application. If set to `false`, users will
-  not be able to access the application. This option enables the
-  application on the specified target instance or cluster. If you deploy
-  to the target `domain`, this option is ignored, since deploying to the
-  domain doesn't deploy to a specific instance or cluster. The default
-  is `true`.
-`--generatermistubs`::
-  If set to `true`, static RMI-IIOP stubs are generated and put into the
-  `client.jar`. If set to `false`, the stubs are not generated. Default
-  is `false`.
-`--availabilityenabled`::
-  This option controls whether high-availability is enabled for web
-  sessions and for stateful session bean (SFSB) checkpointing and
-  potentially passivation. If set to false (default) all web session
-  saving and SFSB checkpointing is disabled for the specified
-  application, web application, or EJB module. If set to true, the
-  specified application or module is enabled for high-availability. Set
-  this option to true only if high availability is configured and
-  enabled at higher levels, such as the server and container levels.
-`--asyncreplication`::
-  This option controls whether web session and SFSB states for which
-  high availability is enabled are first buffered and then replicated
-  using a separate asynchronous thread. If set to true (default),
-  performance is improved but availability is reduced. If the instance
-  where states are buffered but not yet replicated fails, the states are
-  lost. If set to false, performance is reduced but availability is
-  guaranteed. States are not buffered but immediately transmitted to
-  other instances in the cluster.
-`--lbenabled`::
-  This option controls whether the deployed application is available for
-  load balancing. The default is true.
-`--keepstate`::
-  This option controls whether web sessions, SFSB instances, and
-  persistently created EJB timers are retained between redeployments. +
-  The default is false. This option is supported only on the default
-  server instance, named `server`. It is not supported and ignored for
-  any other target. +
-  Some changes to an application between redeployments prevent this
-  feature from working properly. For example, do not change the set of
-  instance variables in the SFSB bean class. +
-  For web applications, this feature is applicable only if in the
-  `glassfish-web-app.xml` file the `persistence-type` attribute of the
-  `session-manager` element is `file`. +
-  For stateful session bean instances, the persistence type without high
-  availability is set in the server (the `sfsb-persistence-type`
-  attribute) and must be set to `file`, which is the default and
-  recommended value. +
-  If any active web session, SFSB instance, or EJB timer fails to be
-  preserved or restored, none of these will be available when the
-  redeployment is complete. However, the redeployment continues and a
-  warning is logged. +
-  To preserve active state data, \{product---name} serializes the data
-  and saves it in memory. To restore the data, the class loader of the
-  newly redeployed application deserializes the data that was previously
-  saved.
-`--libraries`::
-  A comma-separated list of library JAR files. Specify the library JAR
-  files by their relative or absolute paths. Specify relative paths
-  relative to domain-dir`/lib/applibs`. The libraries are made available
-  to the application in the order specified.
-`--target`::
-  Specifies the target to which you are deploying. Valid values are: +
-  `server`;;
-    Deploys the component to the default server instance `server` and is
-    the default value.
-  `domain`;;
-    Deploys the component to the domain. If `domain` is the target for
-    an initial deployment, the application is deployed to the domain,
-    but no server instances or clusters reference the application. If
-    `domain` is the target for a redeployment (the `--force` option is
-    set to true), and dynamic reconfiguration is enabled for the
-    clusters or server instances that reference the application, the
-    referencing clusters or server instances automatically get the new
-    version of the application. If redeploying, and dynamic
-    configuration is disabled, the referencing clusters or server
-    instances do not get the new version of the application until the
-    clustered or standalone server instances are restarted.
-  cluster_name;;
-    Deploys the component to every server instance in the cluster.
-  instance_name;;
-    Deploys the component to a particular stand-alone server instance.
-`--type`::
-  The packaging archive type of the component that is being deployed.
-  Possible values are as follows: +
-  `car`;;
-    The component is packaged as a CAR file.
-  `ear`;;
-    The component is packaged as an EAR file.
-  `ejb`;;
-    The component is an EJB packaged as a JAR file.
-  `osgi`;;
-    The component is packaged as an OSGi bundle.
-  `rar`;;
-    The component is packaged as a RAR file.
-  `war`;;
-    The component is packaged as a WAR file.
-`--properties` or `--property`::
-  Optional keyword-value pairs that specify additional properties for
-  the deployment. The available properties are determined by the
-  implementation of the component that is being deployed or redeployed.
-  The `--properties` option and the `--property` option are equivalent.
-  You can use either option regardless of the number of properties that
-  you specify. +
-  You can specify the following properties for a deployment: +
-  `jar-signing-alias`;;
-    Specifies the alias for the security certificate with which the
-    application client container JAR file is signed. Java Web Start will
-    not run code that requires elevated permissions unless it resides in
-    a JAR file signed with a certificate that the user's system trusts.
-    For your convenience, \{product---name} signs the JAR file
-    automatically using the certificate with this alias from the
-    domain's keystore. Java Web Start then asks the user whether to
-    trust the code and displays the \{product---name} certificate
-    information. To sign this JAR file with a different certificate, add
-    the certificate to the domain keystore, then use this property. For
-    example, you can use a certificate from a trusted authority, which
-    avoids the Java Web Start prompt, or from your own company, which
-    users know they can trust. Default is `s1as`, the alias for the
-    self-signed certificate created for every domain.
-  `java-web-start-enabled`;;
-    Specifies whether Java Web Start access is permitted for an
-    application client module. Default is true.
-  `compatibility`;;
-    Specifies the \{product---name} release with which to be backward
-    compatible in terms of JAR visibility requirements for applications.
-    The only allowed value is `v2`, which refers to Sun GlassFish
-    Enterprise Server version 2 or Sun Java System Application Server
-    version 9.1 or 9.1.1. Beginning in Java EE 6, the Java EE platform
-    specification imposed stricter requirements than Java EE 5 did on
-    which JAR files can be visible to various modules within an EAR
-    file. In particular, application clients must not have access to EJB
-    JAR files or other JAR files in the EAR file unless references use
-    the standard Java SE mechanisms (extensions, for example) or the
-    Java EE library-directory mechanism. Setting this property to `v2`
-    removes these restrictions.
-  `keepSessions={false|true}`;;
-    Superseded by the `--keepstate` option. +
-    If the `--force` option is set to `true`, this property can by used
-    to specify whether active sessions of the application that is being
-    redeployed are preserved and then restored when the redeployment is
-    complete. Applies to HTTP sessions in a web container. Default is
-    `false`.::
-    `false`::
-      Active sessions of the application are not preserved and restored
-      (default).
-    `true`::
-      Active sessions of the application are preserved and restored. +
-      If any active session of the application fails to be preserved or
-      restored, none of the sessions will be available when the
-      redeployment is complete. However, the redeployment continues and
-      a warning is logged. +
-      To preserve active sessions, \{product---name} serializes the
-      sessions and saves them in memory. To restore the sessions, the
-      class loader of the newly redeployed application deserializes any
-      sessions that were previously saved.
-  `preserveAppScopedResources`;;
-    If set to `true`, preserves any application-scoped resources and
-    restores them during redeployment. Default is `false`. +
-  Other available properties are determined by the implementation of the
-  component that is being redeployed. +
-  For components packaged as OSGi bundles (`--type=osgi`), the `deploy`
-  subcommand accepts properties arguments that can be used to wrap a WAR
-  file as a WAB (Web Application Bundle). The subcommand looks for a key
-  named `UriScheme` and, if present, uses the key as a URL stream
-  handler to decorate the input stream. Other properties are used in the
-  decoration process. The \{product---name} OSGi web container registers
-  a URL stream handler named `webbundle`, which is used to wrap a plain
-  WAR file as a WAB. For more information about usage, see the related
-  example in the link:deploy.html#deploy-1[`deploy`(1)] help page.
-
-[[sthref1034]]
-
-Operands
-
-dirpath::
-  Path to the directory containing the exploded format of the deployable
-  archive. This is the path to the directory on the server machine.
-
-[[sthref1035]]
-
-Examples
-
-[[GSRFM589]][[sthref1036]]
-
-Example 1   Deploying an Application From a Directory
-
-In this example, the exploded application to be deployed is in the
-`/home/temp/sampleApp` directory. Because the `--force` option is set to
-true, if an application of that name already exists, the application is
-redeployed.
-
-[source,oac_no_warn]
-----
-asadmin> deploydir --force=true --precompilejsp=true /home/temp/sampleApp
-Application deployed successfully with name sampleApp.
-WARNING : deploydir command deprecated. Please use deploy command instead.
-Command deploydir executed successfully
-----
-
-[[sthref1037]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1038]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:get.html#get-1[`get`(1)], link:deploy.html#deploy-1[`deploy`(1)],
-link:redeploy.html#redeploy-1[`redeploy`(1)],
-link:set.html#set-1[`set`(1)],
-link:undeploy.html#undeploy-1[`undeploy`(1)]
-
-link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition Application Deployment
-Guide]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/disable-http-lb-application.adoc b/docs/reference-manual/src/main/jbake/content/disable-http-lb-application.adoc
deleted file mode 100644
index 322dee3..0000000
--- a/docs/reference-manual/src/main/jbake/content/disable-http-lb-application.adoc
+++ /dev/null
@@ -1,124 +0,0 @@
-type=page
-status=published
-title=disable-http-lb-application
-next=disable-http-lb-server.html
-prev=disable.html
-~~~~~~
-disable-http-lb-application
-===========================
-
-[[disable-http-lb-application-1]][[GSRFM00118]][[disable-http-lb-application]]
-
-disable-http-lb-application
----------------------------
-
-disables an application managed by a load balancer
-
-[[sthref1047]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] disable-http-lb-application [--help] 
-[--timeout 30]
---name application_name target
-----
-
-[[sthref1048]]
-
-Description
-
-The disable `disable-http-lb-application` subcommand disables an
-application for load balancing. The disabled application goes offline
-for load balancing with minimal impact to users. Disabling an
-application gives a finer granularity of control than disabling a server
-instance and is most useful when a cluster is hosting multiple
-independent applications.
-
-Once the application is disabled and the changes have been applied to
-the load balancer, new requests for the application are not forwarded to
-the target. Existing sessions continue to access the application until
-the timeout is reached. This process is known as quiescing.
-
-If an application is deployed across multiple clusters, use this
-subcommand to disable it in one cluster while leaving it enabled in
-others.
-
-If an application is deployed to a single server instance, use this
-subcommand to disable it in that instance while leaving the instance
-itself enabled.
-
-
-[NOTE]
-=======================================================================
-
-This subcommand is only applicable to Oracle GlassFish Server. This
-subcommand is not applicable to GlassFish Server Open Source Edition.
-
-=======================================================================
-
-
-[[sthref1049]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--timeout`::
-  The timeout (in minutes) to wait before disabling the specified
-  application. This time allows for the graceful shutdown (quiescing) of
-  the specified application. The default value is 30 minutes. The
-  minimum value is 1 minute.
-`--name`::
-  The name of the application to be disabled.
-
-[[sthref1050]]
-
-Operands
-
-target::
-  This operand specifies the server instance or cluster on which to
-  disable the application. Valid values are: +
-  * cluster_name- The name of a target cluster.
-  * instance_name- The name of a target server instance.
-
-[[sthref1051]]
-
-Examples
-
-[[GSRFM592]][[sthref1052]]
-
-Example 1   Disabling an Application for Load Balancing
-
-This example, disables an application for load balancing
-
-[source,oac_no_warn]
-----
-asadmin> disable-http-lb-application --name webapps-simple mycluster
-
-Command disable-http-lb-application executed successfully.
-----
-
-[[sthref1053]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1054]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:enable-http-lb-application.html#enable-http-lb-application-1[`enable-http-lb-application`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/disable-http-lb-server.adoc b/docs/reference-manual/src/main/jbake/content/disable-http-lb-server.adoc
deleted file mode 100644
index ae1ed52..0000000
--- a/docs/reference-manual/src/main/jbake/content/disable-http-lb-server.adoc
+++ /dev/null
@@ -1,117 +0,0 @@
-type=page
-status=published
-title=disable-http-lb-server
-next=disable-monitoring.html
-prev=disable-http-lb-application.html
-~~~~~~
-disable-http-lb-server
-======================
-
-[[disable-http-lb-server-1]][[GSRFM00119]][[disable-http-lb-server]]
-
-disable-http-lb-server
-----------------------
-
-disables a sever or cluster managed by a load balancer
-
-[[sthref1055]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] disable-http-lb-server [--help] 
-[--timeout 30]
-target
-----
-
-[[sthref1056]]
-
-Description
-
-The `disable-http-lb-server` subcommand disables a standalone server or
-cluster of servers for load balancing. The disabled server instance or
-cluster goes offline for load balancing with a minimum impact to users.
-
-Once the target has been disabled and the changes have been applied to
-the load balancer, the load balancer stops assigning new requests to the
-target. Session requests with sessions created before disabling the
-target continue to be assigned to that target until the timeout is
-reached. This process is known as quiescing.
-
-Changes are applied the load balancer automatically. You can also
-manually export the configuration using `export-http-lb-config` and copy
-it to the load balancer.
-
-
-[NOTE]
-=======================================================================
-
-This subcommand is only applicable to Oracle GlassFish Server. This
-subcommand is not applicable to GlassFish Server Open Source Edition.
-
-=======================================================================
-
-
-[[sthref1057]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--timeout`::
-  The timeout (in minutes) to wait before disabling the specified
-  target. This time allows for the graceful shutdown (quiescing) of the
-  specified target. The default value is 30 minutes. The minimum value
-  is 1 minute.
-
-[[sthref1058]]
-
-Operands
-
-target::
-  This operand specifies which server instances and clusters to disable.
-  Valid values are: +
-  * cluster_name- The name of a target cluster.
-  * instance_name- The name of a target server instance.
-
-[[sthref1059]]
-
-Examples
-
-[[GSRFM593]][[sthref1060]]
-
-Example 1   Disabling a Cluster for Load Balancing
-
-This example disables load balancing for a cluster named `mycluster`.
-
-[source,oac_no_warn]
-----
-asadmin> disable-http-lb-server mycluster
-
-Command disable-http-lb-server executed successfully.
-----
-
-[[sthref1061]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1062]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-http-lb-ref.html#create-http-lb-ref-1[`create-http-lb-ref`(1)],
-link:enable-http-lb-server.html#enable-http-lb-server-1[`enable-http-lb-server`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/disable-monitoring.adoc b/docs/reference-manual/src/main/jbake/content/disable-monitoring.adoc
deleted file mode 100644
index fc99d4a..0000000
--- a/docs/reference-manual/src/main/jbake/content/disable-monitoring.adoc
+++ /dev/null
@@ -1,131 +0,0 @@
-type=page
-status=published
-title=disable-monitoring
-next=disable-secure-admin.html
-prev=disable-http-lb-server.html
-~~~~~~
-disable-monitoring
-==================
-
-[[disable-monitoring-1]][[GSRFM00120]][[disable-monitoring]]
-
-disable-monitoring
-------------------
-
-disables monitoring for the server or for specific monitorable modules
-
-[[sthref1063]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] disable-monitoring [--help] 
-[--modules module-name][:module-name]*
-----
-
-[[sthref1064]]
-
-Description
-
-The `disable-monitoring` subcommand is used to turn off monitoring for
-\{product---name} or for particular modules during runtime. Changes are
-dynamic, that is, server restart is not required.
-
-Running the `disable-monitoring` subcommand without the `--module`
-option disables the monitoring service by setting the
-`monitoring-enabled` attribute of the `monitoring-service` element to
-`false`. The individual modules retain their monitoring levels, but no
-monitoring data is generated because the entire monitoring service is
-disabled.
-
-This subcommand used with the `--modules` option disables monitoring for
-a module by setting the monitoring level to OFF. The status of the
-monitoring service is not affected. For a list of monitorable modules,
-see the `--modules` option in this help page.
-
-An alternative method for disabling monitoring is to use the `set`
-subcommand. In this case, the server must be restarted for changes to
-take effect.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1065]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--modules`::
-  Disables the specified module or modules by setting the monitoring
-  level to OFF. Multiple modules are separated by : (colon). Monitorable
-  modules include `connector-connection-pool`, `connector-service`,
-  `ejb-container`, `http-service`, `jdbc-connection-pool`, `jersey`,
-  `jpa`, `jms-service`, `jvm`, `security`, `thread-pool`,
-  `transaction-service`, `web-container`, and `web-services-container`.
-  Additional modules can be listed by using the `get` subcommand.
-
-[[sthref1066]]
-
-Operands
-
-[[sthref1067]]
-
-Examples
-
-[[GSRFM594]][[sthref1068]]
-
-Example 1   Disabling the Monitoring Service for \{product---name}
-
-This example disables monitoring for \{product---name} in general by
-setting the `enable-monitoring` flag to `false` (default is `true`).
-
-[source,oac_no_warn]
-----
-asadmin> disable-monitoring
-Command disable-monitoring executed successfully
-----
-
-[[GSRFM595]][[sthref1069]]
-
-Example 2   Disabling Monitoring for the Web and EJB Containers
-
-This example disables monitoring for specific containers. Their
-monitoring levels will be set to OFF.
-
-[source,oac_no_warn]
-----
-asadmin> disable-monitoring --modules web-container:ejb-container
-Command disable-monitoring executed successfully
-----
-
-[[sthref1070]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1071]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:get.html#get-1[`get`(1)],
-link:enable-monitoring.html#enable-monitoring-1[`enable-monitoring`(1)],
-link:list.html#list-1[`list`(1)],
-link:monitor.html#monitor-1[`monitor`(1)], link:set.html#set-1[`set`(1)]
-
-link:monitoring.html#monitoring-5asc[`monitoring`(5ASC)]
-
-"link:../administration-guide/monitoring.html#GSADG00011[Administering the Monitoring Service]" in GlassFish
-Server Open Source Edition Administration Guide
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/disable-secure-admin-internal-user.adoc b/docs/reference-manual/src/main/jbake/content/disable-secure-admin-internal-user.adoc
deleted file mode 100644
index 3d595b5..0000000
--- a/docs/reference-manual/src/main/jbake/content/disable-secure-admin-internal-user.adoc
+++ /dev/null
@@ -1,95 +0,0 @@
-type=page
-status=published
-title=disable-secure-admin-internal-user
-next=disable-secure-admin-principal.html
-prev=disable-secure-admin.html
-~~~~~~
-disable-secure-admin-internal-user
-==================================
-
-[[disable-secure-admin-internal-user-1]][[GSRFM00122]][[disable-secure-admin-internal-user]]
-
-disable-secure-admin-internal-user
-----------------------------------
-
-Instructs the \{product---name} DAS and instances to not use the
-specified admin user to authenticate with each other and to authorize
-admin operations.
-
-[[sthref1079]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] disable-secure-admin-internal-user [--help] 
-admin-username
-----
-
-[[sthref1080]]
-
-Description
-
-The `disable-secure-admin-internal-user` subcommand disables secure
-admin from using the username (instead of SSL certificates) to
-authenticate the DAS and instances with each other and to authorize
-admin operations.
-
-[[sthref1081]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1082]]
-
-Operands
-
-admin-username::
-  The admin user name that \{product---name} should not use to
-  authenticate the DAS and instances with each other and to authorize
-  admin operations.
-
-[[sthref1083]]
-
-Examples
-
-[[GSRFM597]][[sthref1084]]
-
-Example 1   Disabling a user name for secure admin
-
-The following example disables secure admin from using username tester
-to authenticate the DAS and instances with each other and to authorize
-admin operations.
-
-[source,oac_no_warn]
-----
-asadmin> disable-secure-admin-internal-user tester
-
-Command disable-secure-admin-internal-user executed successfully.
-----
-
-[[sthref1085]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1086]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:enable-secure-admin.html#enable-secure-admin-1[`enable-secure-admin`(1)],
-link:enable-secure-admin-internal-user.html#enable-secure-admin-internal-user-1[`enable-secure-admin-internal-user`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/disable-secure-admin-principal.adoc b/docs/reference-manual/src/main/jbake/content/disable-secure-admin-principal.adoc
deleted file mode 100644
index ef38dce..0000000
--- a/docs/reference-manual/src/main/jbake/content/disable-secure-admin-principal.adoc
+++ /dev/null
@@ -1,103 +0,0 @@
-type=page
-status=published
-title=disable-secure-admin-principal
-next=enable.html
-prev=disable-secure-admin-internal-user.html
-~~~~~~
-disable-secure-admin-principal
-==============================
-
-[[disable-secure-admin-principal-1]][[GSRFM00123]][[disable-secure-admin-principal]]
-
-disable-secure-admin-principal
-------------------------------
-
-disables the certificate for authorizing access in secure
-administration.
-
-[[sthref1087]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] disable-secure-admin-principal [--help] 
---alias aliasname | DN 
-----
-
-[[sthref1088]]
-
-Description
-
-The `disable-secure-admin-principal` subcommand disables the certificate
-as being valid for authorizing access as part of secure administration.
-
-You must specify either the `--alias` option, or the DN.
-
-[[sthref1089]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--alias`::
-  The alias name of the certificate in the truststore. \{product---name}
-  looks up the certificate in the truststore using that alias and, if
-  found, disables the corresponding DN as being valid for secure
-  administration. Because alias-name must be an alias associated with a
-  certificate currently in the truststore, you may find it most useful
-  for self-signed certificates.
-
-[[sthref1090]]
-
-Operands
-
-DN::
-  The distinguished name of the certificate, specified as a
-  comma-separated list in quotes. For example,
-  `"CN=system.amer.oracle.com,OU=GlassFish,O=Oracle Corporation,L=Santa Clara,ST=California,C=US"`
-  .
-
-[[sthref1091]]
-
-Examples
-
-[[GSRFM598]][[sthref1092]]
-
-Example 1   Disables trust of a DN for secure administration
-
-The following example shows how to disable trust of a DN for authorizing
-access in secure administration.
-
-[source,oac_no_warn]
-----
-asadmin> disable-secure-admin-principal 
-"CN=system.amer.oracle.com,OU=GlassFish,
-O=Oracle Corporation,L=Santa Clara,ST=California,C=US"
-
-Command disable-secure-admin-principal executed successfully.
-----
-
-[[sthref1093]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1094]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:enable-secure-admin.html#enable-secure-admin-1[`enable-secure-admin`(1)],
-link:enable-secure-admin-principal.html#enable-secure-admin-principal-1[`enable-secure-admin-principal`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/disable-secure-admin.adoc b/docs/reference-manual/src/main/jbake/content/disable-secure-admin.adoc
deleted file mode 100644
index 3d8919c..0000000
--- a/docs/reference-manual/src/main/jbake/content/disable-secure-admin.adoc
+++ /dev/null
@@ -1,92 +0,0 @@
-type=page
-status=published
-title=disable-secure-admin
-next=disable-secure-admin-internal-user.html
-prev=disable-monitoring.html
-~~~~~~
-disable-secure-admin
-====================
-
-[[disable-secure-admin-1]][[GSRFM00121]][[disable-secure-admin]]
-
-disable-secure-admin
---------------------
-
-disables secure admin if it is already enabled.
-
-[[sthref1072]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] disable-secure-admin [--help]
-----
-
-[[sthref1073]]
-
-Description
-
-The `disable-secure-admin` subcommand disables secure admin if it is
-already enabled.
-
-
-[NOTE]
-=======================================================================
-
-You must restart any running servers in the domain after you enable or
-disable secure admin. It is simpler to enable or disable secure admin
-with only the DAS running, then restart the DAS, and then start any
-other instances.
-
-=======================================================================
-
-
-[[sthref1074]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1075]]
-
-Examples
-
-[[GSRFM596]][[sthref1076]]
-
-Example 1   Disabling `secure admin` for a domain
-
-The following example shows how to disable `secure admin` for a domain.
-
-[source,oac_no_warn]
-----
-asadmin> disable-secure-admin
-server-config
-default-config
-
-Command disable-secure-admin executed successfully.
-----
-
-[[sthref1077]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1078]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:enable-secure-admin.html#enable-secure-admin-1[`enable-secure-admin`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/disable.adoc b/docs/reference-manual/src/main/jbake/content/disable.adoc
deleted file mode 100644
index b072095..0000000
--- a/docs/reference-manual/src/main/jbake/content/disable.adoc
+++ /dev/null
@@ -1,115 +0,0 @@
-type=page
-status=published
-title=disable
-next=disable-http-lb-application.html
-prev=deploydir.html
-~~~~~~
-disable
-=======
-
-[[disable-1]][[GSRFM00116]][[disable]]
-
-disable
--------
-
-disables the component
-
-[[sthref1039]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] disable [--help] 
-[--target target_name] component_name
-----
-
-[[sthref1040]]
-
-Description
-
-The `disable` subcommand immediately disables the specified deployed
-component. If the component has not been deployed, an error message is
-returned.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1041]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  This option specifies the target on which you are disabling the
-  component. Valid values are: +
-  `server`;;
-    Disables the component on the default server instance `server` and
-    is the default value.
-  domain_name;;
-    Disables the component on the named domain.
-  cluster_name;;
-    Disables the component on every server instance in the cluster.
-  instance_name;;
-    Disables the component on a particular clustered or stand-alone
-    server instance.
-
-[[sthref1042]]
-
-Operands
-
-component_name::
-  name of the component to be disabled. +
-  The name can include an optional version identifier, which follows the
-  name and is separated from the name by a colon (`:`). The version
-  identifier must begin with a letter or number. It can contain
-  alphanumeric characters plus underscore (`_`), dash (`-`), and period
-  (`.`) characters. To disable multiple versions, you can use an
-  asterisk (`*`) as a wildcard character. For more information about
-  module and application versions, see "link:../application-deployment-guide/overview.html#GSDPG00324[Module and
-  Application Versions]" in GlassFish Server Open Source Edition
-  Application Deployment Guide.
-
-[[sthref1043]]
-
-Examples
-
-[[GSRFM590]][[sthref1044]]
-
-Example 1   Disabling a Component
-
-This example disables the deployed component `sampleApp`.
-
-[source,oac_no_warn]
-----
-asadmin> disable sampleApp
-Command disable executed successfully
-----
-
-[[sthref1045]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1046]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:deploy.html#deploy-1[`deploy`(1)],
-link:enable.html#enable-1[`enable`(1)],
-link:undeploy.html#undeploy-1[`undeploy`(1)]
-
-link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition Application Deployment
-Guide]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/domain.adoc b/docs/reference-manual/src/main/jbake/content/domain.adoc
deleted file mode 100644
index a0735c2..0000000
--- a/docs/reference-manual/src/main/jbake/content/domain.adoc
+++ /dev/null
@@ -1,33 +0,0 @@
-type=page
-status=published
-title=domain
-next=dotted-names.html
-prev=configuration.html
-~~~~~~
-domain
-======
-
-[[domain-5asc]][[GSRFM00267]][[domain]]
-
-domain
-------
-
-Domains have their own configurations.
-
-[[sthref2396]]
-
-Description
-
-A domain provides a common authentication and administration point for a
-collection of zero or more server instances. The administration domain
-encompasses several manageable resources, including instances, clusters,
-and their individual resources. A manageable resource, such as a server
-instance, may belong to only one domain.
-
-[[sthref2397]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/dotted-names.adoc b/docs/reference-manual/src/main/jbake/content/dotted-names.adoc
deleted file mode 100644
index 1f17f59..0000000
--- a/docs/reference-manual/src/main/jbake/content/dotted-names.adoc
+++ /dev/null
@@ -1,236 +0,0 @@
-type=page
-status=published
-title=dotted-names
-next=instance.html
-prev=domain.html
-~~~~~~
-dotted-names
-============
-
-[[dotted-names-5asc]][[GSRFM00268]][[dotted-names]]
-
-dotted-names
-------------
-
-syntax for using periods to separate name elements
-
-[[sthref2398]]
-
-Description
-
-A dotted name is an identifier for a particular \{product---name}
-element, such as a configurable or a monitorable object. A dotted name
-uses the period (.), known as dot, as a delimiter to separate the parts
-of an element name. The period in a dotted name is similar to the slash
-(/) character that delimits the levels in the absolute path name of a
-file in the UNIX file system.
-
-The subcommands of the `asadmin` utility use dotted names as follows:
-
-* The `list` subcommand provides the fully qualified dotted names of the
-management components' attributes.
-* The `get` subcommand provides access to the attributes.
-* The `set` subcommand enables you to modify configurable attributes and
-set properties.
-
-The configuration hierarchy is loosely based on the domain's schema
-document, and the attributes are modifiable. The attributes of the
-monitoring hierarchy are read-only.
-
-The following format is used for configuration dotted names (italic
-indicates replaceable):
-
-config-name`.`config-element-name`.`primary-key`.`attribute-name `|`
-instance-name`.`config-element-name`.`primary-key`.`attribute-name
-
-The following format is used for resource dotted names (italic indicates
-replaceable):
-
-server-name`.`resource-name`.`primary-key`.`attribute-name
-`| domain.resources.`resource-name`.`primary-key`.`attribute-name
-
-The following rules apply to forming dotted names:
-
-* The top-level is configuration, server, or domain name. For example,
-`server-config` (default configuration), `server` (default server), or
-`domain1` (default domain).
-* A dot (.) always separates two sequential parts of the name.
-* A part of the name usually identifies a server subsystem or its
-specific instance. For example, `web-container`, `log-service`,
-`thread-pool-1`.
-* If any part of the name itself contains a dot (.), then the dot must
-be escaped with a leading `\` (backslash) so that the `.` (dot) does not
-act like a delimiter. For further information on escape characters, see
-the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-* An `*` (asterisk) character can be used anywhere in the dotted name
-and acts like the wildcard character in regular expressions.
-Additionally, an `*` can collapse all the parts of the dotted name. For
-example, a long dotted name such as `this.is.really.long.hierarchy` can
-be abbreviated to `th*.hierarchy`. The `.` (dot) always delimits the
-parts of the dotted name. +
-
-[NOTE]
-=======================================================================
-
-Characters that have special meaning to the shell or command
-interpreter, such as * (asterisk), should be quoted or escaped as
-appropriate to the shell, for example, by enclosing the argument in
-quotes. In multimode, quotes are needed only for arguments that include
-spaces, quotes, or backslash.
-
-=======================================================================
-
-* The `--monitor` option of the `get` and `list` subcommands selects the
-monitoring or configuration hierarchy. If the subcommand specifies
-`--monitor``=false` (the default), the configuration hierarchy is
-selected. If the subcommand specifies `--monitor``=true`, the monitoring
-hierarchy is selected.
-* If you know the complete dotted name and do not need to use a
-wildcard, the `list`, `get`, and `set` subcommands treat the name
-differently:
-
-** The `list` subcommand treats a complete dotted name as the name of a
-parent node in the abstract hierarchy. When you specify this name to the
-`list` subcommand, the names of the immediate children at that level are
-returned. For example, the following command lists all the web modules
-deployed to the domain or the default server: +
-[source,oac_no_warn]
-----
-asadmin> list server.applications.web-module
-----
-
-** The`get` and `set` subcommands treat a complete dotted name as the
-fully qualified name of the attribute of a node (whose dotted name
-itself is the name that you get when you remove the last part of this
-dotted name). When you specify this name to the `get` or `set`
-subcommand, the subcommand acts on the value of that attribute, if such
-an attribute exists. You will never start with this case because in
-order to find out the names of attributes of a particular node in the
-hierarchy, you must use the * wildcard character . For example, the
-following dotted name returns the context root of the web application
-deployed to the domain or default server: +
-[source,oac_no_warn]
-----
-server.applications.web-module.JSPWiki.context-root
-----
-
-[[sthref2399]]
-
-Examples
-
-[[GSRFM815]][[sthref2400]]
-
-Example 1   Listing All Configurable Elements
-
-This example lists all the configurable elements.
-
-[source,oac_no_warn]
-----
-asadmin> list *
-----
-
-Output similar to the following is displayed:
-
-[source,oac_no_warn]
-----
-applications
-configs
-configs.config.server-config
-configs.config.server-config.admin-service
-configs.config.server-config.admin-service.das-config
-configs.config.server-config.admin-service.jmx-connector.system
-configs.config.server-config.admin-service.property.adminConsoleContextRoot
-configs.config.server-config.admin-service.property.adminConsoleDownloadLocation
-configs.config.server-config.admin-service.property.ipsRoot
-configs.config.server-config.ejb-container
-configs.config.server-config.ejb-container.ejb-timer-service
-configs.config.server-config.http-service
-configs.config.server-config.http-service.access-log
-configs.config.server-config.http-service.virtual-server.__asadmin
-configs.config.server-config.http-service.virtual-server.server
-configs.config.server-config.iiop-service
-configs.config.server-config.iiop-service.iiop-listener.SSL
-configs.config.server-config.iiop-service.iiop-listener.SSL.ssl
-configs.config.server-config.iiop-service.iiop-listener.SSL_MUTUALAUTH
-configs.config.server-config.iiop-service.iiop-listener.SSL_MUTUALAUTH.ssl
-configs.config.server-config.iiop-service.iiop-listener.orb-listener-1
-configs.config.server-config.iiop-service.orb
-configs.config.server-config.java-config
-configs.config.server-config.jms-service
-configs.config.server-config.jms-service.jms-host.default_JMS_host
-configs.config.server-config.mdb-container
-configs.config.server-config.monitoring-service
-configs.config.server-config.monitoring-service.module-monitoring-levels
-...
-property.administrative.domain.name
-resources
-resources.jdbc-connection-pool.DerbyPool
-resources.jdbc-connection-pool.DerbyPool.property.DatabaseName
-resources.jdbc-connection-pool.DerbyPool.property.Password
-resources.jdbc-connection-pool.DerbyPool.property.PortNumber
-resources.jdbc-connection-pool.DerbyPool.property.User
-resources.jdbc-connection-pool.DerbyPool.property.connectionAttributes
-resources.jdbc-connection-pool.DerbyPool.property.serverName
-resources.jdbc-connection-pool.__TimerPool
-resources.jdbc-connection-pool.__TimerPool.property.connectionAttributes
-resources.jdbc-connection-pool.__TimerPool.property.databaseName
-resources.jdbc-resource.jdbc/__TimerPool
-resources.jdbc-resource.jdbc/__default
-servers
-servers.server.server
-servers.server.server.resource-ref.jdbc/__TimerPool
-servers.server.server.resource-ref.jdbc/__default
-system-applications
-Command list executed successfully.
-----
-
-[[GSRFM816]][[sthref2401]]
-
-Example 2   Listing All the Monitorable Objects
-
-The following example lists all the monitorable objects.
-
-[source,oac_no_warn]
-----
-asadmin> list --monitor *
-----
-
-Output similar to the following is displayed:
-
-[source,oac_no_warn]
-----
-server
-server.jvm
-server.jvm.class-loading-system
-server.jvm.compilation-system
-server.jvm.garbage-collectors
-server.jvm.garbage-collectors.Copy
-server.jvm.garbage-collectors.MarkSweepCompact
-server.jvm.memory
-server.jvm.operating-system
-server.jvm.runtime
-server.network
-server.network.admin-listener
-server.network.admin-listener.connections
-server.network.admin-listener.file-cache
-server.network.admin-listener.keep-alive
-server.network.admin-listener.thread-pool
-server.network.http-listener-1
-server.network.http-listener-1.connections
-server.network.http-listener-1.file-cache
-server.network.http-listener-1.keep-alive
-server.network.http-listener-1.thread-pool
-server.transaction-service
-Command list executed successfully.
-----
-
-[[sthref2402]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:get.html#get-1[`get`(1)], link:list.html#list-1[`list`(1)],
-link:set.html#set-1[`set`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/enable-http-lb-application.adoc b/docs/reference-manual/src/main/jbake/content/enable-http-lb-application.adoc
deleted file mode 100644
index b68def6..0000000
--- a/docs/reference-manual/src/main/jbake/content/enable-http-lb-application.adoc
+++ /dev/null
@@ -1,105 +0,0 @@
-type=page
-status=published
-title=enable-http-lb-application
-next=enable-http-lb-server.html
-prev=enable.html
-~~~~~~
-enable-http-lb-application
-==========================
-
-[[enable-http-lb-application-1]][[GSRFM00126]][[enable-http-lb-application]]
-
-enable-http-lb-application
---------------------------
-
-enables a previously-disabled application managed by a load balancer
-
-[[sthref1103]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] enable-http-lb-application [--help] 
---name application_name target
-----
-
-[[sthref1104]]
-
-Description
-
-The `enable-http-lb-application` subcommand enables load balancing for
-applications deployed on a standalone instance or cluster. You can
-enable load balancing for an application on all instances in a cluster,
-or on a single standalone server instance. By default, load balancing is
-enabled for applications.
-
-
-[NOTE]
-=======================================================================
-
-This subcommand is only applicable to Oracle GlassFish Server. This
-subcommand is not applicable to GlassFish Server Open Source Edition.
-
-=======================================================================
-
-
-[[sthref1105]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--name`::
-  The name of the application to be enabled.
-
-[[sthref1106]]
-
-Operands
-
-target::
-  This operand specifies on which server instance or cluster to enable
-  the application. Valid values are: +
-  * cluster_name- The name of a target cluster.
-  * instance_name- The name of a target server instance.
-
-[[sthref1107]]
-
-Examples
-
-[[GSRFM601]][[sthref1108]]
-
-Example 1   Enabling Load Balancing for an Application
-
-This example enables an application named `webapps-simple` to use load
-balancing on a cluster named `mycluster`.
-
-[source,oac_no_warn]
-----
-asadmin> enable-http-lb-application --name webapps-simple mycluster
-
-Command enable-http-lb-application executed successfully.
-----
-
-[[sthref1109]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1110]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:disable-http-lb-application.html#disable-http-lb-application-1[`disable-http-lb-application`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/enable-http-lb-server.adoc b/docs/reference-manual/src/main/jbake/content/enable-http-lb-server.adoc
deleted file mode 100644
index 3e012ca..0000000
--- a/docs/reference-manual/src/main/jbake/content/enable-http-lb-server.adoc
+++ /dev/null
@@ -1,102 +0,0 @@
-type=page
-status=published
-title=enable-http-lb-server
-next=enable-monitoring.html
-prev=enable-http-lb-application.html
-~~~~~~
-enable-http-lb-server
-=====================
-
-[[enable-http-lb-server-1]][[GSRFM00127]][[enable-http-lb-server]]
-
-enable-http-lb-server
----------------------
-
-enables a previously disabled sever or cluster managed by a load
-balancer
-
-[[sthref1111]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] enable-http-lb-server [--help] 
-target
-----
-
-[[sthref1112]]
-
-Description
-
-The `enable-http-lb-server` subcommand enables a standalone server
-instance or cluster for load balancing. By default, load balancing is
-enabled for instances and clusters.
-
-
-[NOTE]
-=======================================================================
-
-This subcommand is only applicable to Oracle GlassFish Server. This
-subcommand is not applicable to GlassFish Server Open Source Edition.
-
-=======================================================================
-
-
-[[sthref1113]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1114]]
-
-Operands
-
-target::
-  This operand specifies which server instances and clusters to enable.
-  Valid values are: +
-  * cluster_name- The name of a target cluster.
-  * instance_name- The name of a target server instance.
-
-[[sthref1115]]
-
-Examples
-
-[[GSRFM602]][[sthref1116]]
-
-Example 1   Enabling a Cluster for Load Balancing
-
-This example enables load balancing for a cluster named `mycluster`.
-
-[source,oac_no_warn]
-----
-asadmin> enable-http-lb-server mycluster
-
-Command enable-http-lb-server executed successfully.
-----
-
-[[sthref1117]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1118]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-http-lb-ref.html#create-http-lb-ref-1[`create-http-lb-ref`(1)],
-link:disable-http-lb-server.html#disable-http-lb-server-1[`disable-http-lb-server`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/enable-monitoring.adoc b/docs/reference-manual/src/main/jbake/content/enable-monitoring.adoc
deleted file mode 100644
index d4ae8c0..0000000
--- a/docs/reference-manual/src/main/jbake/content/enable-monitoring.adoc
+++ /dev/null
@@ -1,172 +0,0 @@
-type=page
-status=published
-title=enable-monitoring
-next=enable-secure-admin.html
-prev=enable-http-lb-server.html
-~~~~~~
-enable-monitoring
-=================
-
-[[enable-monitoring-1]][[GSRFM00128]][[enable-monitoring]]
-
-enable-monitoring
------------------
-
-enables monitoring for the server or for specific monitorable modules
-
-[[sthref1119]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] enable-monitoring [--help] 
-[--target target] 
-[--mbean={false|true}] 
-[--dtrace={true|false}] 
-[--modules modules[=level][:module[=level]]* 
-[--pid pid] 
-[--options options]]
-----
-
-[[sthref1120]]
-
-Description
-
-The `enable-monitoring` subcommand is used to turn on monitoring for
-\{product---name} or for particular modules during runtime. Changes are
-dynamic, that is, server restart is not required.
-
-By default, the monitoring service is enabled, that is, the
-`monitoring-enabled` attribute of the `monitoring-service` element is
-`true`. However, the default monitoring level for individual modules is
-`OFF`. This subcommand used with the `--modules` option can enable
-monitoring for a given module by setting the monitoring level to HIGH or
-LOW. If level is not specified when running the subcommand, the level
-defaults to HIGH.
-
-The specific meanings of HIGH or LOW are determined by the individual
-containers. For a list of monitorable modules, see the `--modules`
-option in this help page.
-
-An alternative method for enabling monitoring is to use the `set`
-subcommand. In this case, the server must be restarted for changes to
-take effect.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1121]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Specifies the target on which to enabling monitoring. Valid values are
-  as follows: +
-  `server`;;
-    Enables monitoring for the default server instance `server` and is
-    the default value.
-  configuration-name;;
-    Enables monitoring for the named configuration.
-  cluster-name;;
-    Enables monitoring for every server instance in the cluster.
-  instance-name;;
-    Enables monitoring for a particular server instance.
-`--mbean`::
-  Enables Mbean monitoring. Default value is false.
-`--dtrace`::
-  Only usable if the DTrace Monitoring module is present. Enables Oracle
-  Solaris DTrace monitoring. Default value is false.
-`--modules`::
-  Enables specified module or modules by indicating monitoring level.
-  Valid levels are OFF, HIGH, LOW. If level is not specified, the
-  default setting is HIGH. Multiple modules are separated by : (colon).
-  Monitorable modules include `connector-connection-pool`,
-  `connector-service`, `ejb-container`, `http-service`,
-  `jdbc-connection-pool`, `jersey`, `jpa`, `jms-service`, `jvm`,
-  `security`, `thread-pool`, `transaction-service`, `web-container`, and
-  `web-services-container`. Additional modules can be listed by using
-  the `get` subcommand.
-`--pid`::
-  Specifies the \{product---name} JVM process identifier (PID). When
-  monitoring is enabled, the `btrace-agent` is attached, based on the
-  specified PID. Need to specify only in exceptional cases when the
-  system cannot determine the PID. In this situation, the subcommand
-  prompts for the PID of the corresponding \{product---name}process.
-`--options`::
-  Sets the following `btrace-agent` options: +
-  `debug`;;
-    Enables debugging for BTrace. Default value is false.
-
-[[sthref1122]]
-
-Examples
-
-[[GSRFM603]][[sthref1123]]
-
-Example 1   Enabling the Monitoring Service for \{product---name}
-
-This example enables monitoring for \{product---name} in general by
-setting the `enable-monitoring` flag to `true` (default is `true`).
-
-[source,oac_no_warn]
-----
-asadmin> enable-monitoring
-Command enable-monitoring executed successfully
-----
-
-[[GSRFM604]][[sthref1124]]
-
-Example 2   Enabling Monitoring for the Web and EJB Containers
-
-This example enables monitoring for specific containers by setting their
-monitoring levels.
-
-[source,oac_no_warn]
-----
-asadmin> enable-monitoring --modules web-container=LOW:ejb-container=HIGH
-Command enable-monitoring executed successfully
-----
-
-[[GSRFM605]][[sthref1125]]
-
-Example 3   Turning on Debugging for Monitoring
-
-This example turns on debugging.
-
-[source,oac_no_warn]
-----
-asadmin> enable-monitoring --options debug=true
-Command enable-monitoring executed successfully
-----
-
-[[sthref1126]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1127]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:disable-monitoring.html#disable-monitoring-1[`disable-monitoring`(1)],
-link:get.html#get-1[`get`(1)], link:list.html#list-1[`list`(1)],
-link:monitor.html#monitor-1[`monitor`(1)], link:set.html#set-1[`set`(1)]
-
-link:monitoring.html#monitoring-5asc[`monitoring`(5ASC)]
-
-"link:../administration-guide/monitoring.html#GSADG00011[Administering the Monitoring Service]" in GlassFish
-Server Open Source Edition Administration Guide
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/enable-secure-admin-internal-user.adoc b/docs/reference-manual/src/main/jbake/content/enable-secure-admin-internal-user.adoc
deleted file mode 100644
index 59689b0..0000000
--- a/docs/reference-manual/src/main/jbake/content/enable-secure-admin-internal-user.adoc
+++ /dev/null
@@ -1,139 +0,0 @@
-type=page
-status=published
-title=enable-secure-admin-internal-user
-next=enable-secure-admin-principal.html
-prev=enable-secure-admin.html
-~~~~~~
-enable-secure-admin-internal-user
-=================================
-
-[[enable-secure-admin-internal-user-1]][[GSRFM00130]][[enable-secure-admin-internal-user]]
-
-enable-secure-admin-internal-user
----------------------------------
-
-Instructs the \{product---name} DAS and instances to use the specified
-admin user and the password associated with the password alias to
-authenticate with each other and to authorize admin operations.
-
-[[sthref1135]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] enable-secure-admin-internal-user [--help] 
-[--passwordalias pwdaliasname]
-admin-username
-----
-
-[[sthref1136]]
-
-Description
-
-The `enable-secure-admin-internal-user` subcommand instructs all servers
-in the domain to authenticate to each other, and to authorize admin
-operations submitted to each other, using an existing admin username and
-password rather than SSL certificates. This generally means that you
-must:
-
-1.  Create a valid admin user. +
-[source,oac_no_warn]
-----
-asadmin> create-file-user --authrealmname admin-realm --groups 
-asadmin newAdminUsername
-----
-2.  Create a password alias for the just-created password. +
-[source,oac_no_warn]
-----
-asadmin> create-password-alias passwordAliasName
-----
-3.  Use that user name and password for inter-process authentication and
-admin authorization. +
-[source,oac_no_warn]
-----
-asadmin> enable-secure-admin-internal-user 
---passwordalias passwordAliasName
-newAdminUsername
-----
-
-If \{product---name} finds at least one secure admin internal user, then
-if secure admin is enabled \{product---name} processes will not use SSL
-authentication and authorization with each other and will instead use
-username password pairs.
-
-If secure admin is enabled, all \{product---name} processes continue to
-use SSL encryption to secure the content of the admin messages,
-regardless of how they authenticate to each other.
-
-Most users who use this subcommand will need to set up only one secure
-admin internal user. As a general practice, you should not use the same
-user name and password pair for internal admin communication and for
-admin user login.
-
-If you set up more than one secure admin internal user, you should not
-make any assumptions about which user name and password pair
-\{product---name} will choose to use for any given admin request.
-
-[[sthref1137]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--passwordalias`::
-  The password alias for the user that \{product---name} should use for
-  internally authenticating and authorizing the DAS to instances and the
-  instances to the DAS.
-
-[[sthref1138]]
-
-Operands
-
-admin-username::
-  The admin user name that \{product---name} should use for internally
-  authenticating and authorizing the DAS to instances and the instances
-  to the DAS.
-
-[[sthref1139]]
-
-Examples
-
-[[GSRFM607]][[sthref1140]]
-
-Example 1   Specifying a user name and password for secure admin
-
-The following example allows secure admin to use a user name and
-password alias for authentication and authorization between the DAS and
-instances, instead of certificates.
-
-[source,oac_no_warn]
-----
-asadmin> enable-secure-admin-internal-user 
---passwordalias passwordAliasName
-newAdminUsername
-----
-
-[[sthref1141]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1142]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:disable-secure-admin-internal-user.html#disable-secure-admin-internal-user-1[`disable-secure-admin-internal-user`(1)],
-link:enable-secure-admin.html#enable-secure-admin-1[`enable-secure-admin`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/enable-secure-admin-principal.adoc b/docs/reference-manual/src/main/jbake/content/enable-secure-admin-principal.adoc
deleted file mode 100644
index 9c37640..0000000
--- a/docs/reference-manual/src/main/jbake/content/enable-secure-admin-principal.adoc
+++ /dev/null
@@ -1,120 +0,0 @@
-type=page
-status=published
-title=enable-secure-admin-principal
-next=export.html
-prev=enable-secure-admin-internal-user.html
-~~~~~~
-enable-secure-admin-principal
-=============================
-
-[[enable-secure-admin-principal-1]][[GSRFM00131]][[enable-secure-admin-principal]]
-
-enable-secure-admin-principal
------------------------------
-
-Instructs \{product---name}, when secure admin is enabled, to accept
-admin requests from clients identified by the specified SSL certificate.
-
-[[sthref1143]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] enable-secure-admin-principal [--help] 
---alias aliasname | DN 
-----
-
-[[sthref1144]]
-
-Description
-
-The `enable-secure-admin-principal` subcommand instructs
-\{product---name} to accept admin requests when accompanied by an SSL
-certificate with the specified distinguished name (DN). If you use the
-"`--alias` aliasname" form, then \{product---name} looks in its
-truststore for a certificate with the specified alias and uses the DN
-associated with that certificate. Otherwise, \{product---name} records
-the value you specify as the DN.
-
-You must specify either the `--alias` option, or the DN.
-
-You can run `enable-secure-admin-principal` multiple times so that
-\{product---name} accepts admin requests from a client sending a
-certificate with any of the DNs you specify.
-
-When you run `enable-secure-admin`, \{product---name} automatically
-records the DNs for the admin alias and the instance alias, whether you
-specify those values or use the defaults. You do not need to run
-`enable-secure-admin-principal` yourself for those certificates. Other
-than these certificates, you must run `enable-secure-admin-principal`
-for any other DN that \{product---name} should authorize to send admin
-requests. This includes DNs corresponding to trusted certificates (those
-with a certificate chain to a trusted authority.)
-
-[[sthref1145]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--alias`::
-  The alias name of the certificate in the trust store.
-  \{product---name} looks up certificate in the trust store using that
-  alias and, if found, stores the corresponding DN as being valid for
-  secure administration. Because alias-name must be an alias associated
-  with a certificate currently in the trust store, you may find it most
-  useful for self-signed certificates.
-
-[[sthref1146]]
-
-Operands
-
-DN::
-  The distinguished name of the certificate, specified as a
-  comma-separated list in quotes. For example,
-  `"CN=system.amer.oracle.com,OU=GlassFish,O=Oracle Corporation,L=Santa Clara,ST=California,C=US"`.
-
-[[sthref1147]]
-
-Examples
-
-[[GSRFM608]][[sthref1148]]
-
-Example 1   Trusting a DN for secure administration
-
-The following example shows how to specify a DN for authorizing access
-in secure administration.
-
-[source,oac_no_warn]
-----
-asadmin> enable-secure-admin-principal
-"CN=system.amer.oracle.com,OU=GlassFish,
-O=Oracle Corporation,L=Santa Clara,ST=California,C=US"
-
-Command enable-secure-admin-principal executed successfully.
-----
-
-[[sthref1149]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1150]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:disable-secure-admin-principal.html#disable-secure-admin-principal-1[`disable-secure-admin-principal`(1)],
-link:enable-secure-admin.html#enable-secure-admin-1[`enable-secure-admin`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/enable-secure-admin.adoc b/docs/reference-manual/src/main/jbake/content/enable-secure-admin.adoc
deleted file mode 100644
index af5d0fd..0000000
--- a/docs/reference-manual/src/main/jbake/content/enable-secure-admin.adoc
+++ /dev/null
@@ -1,125 +0,0 @@
-type=page
-status=published
-title=enable-secure-admin
-next=enable-secure-admin-internal-user.html
-prev=enable-monitoring.html
-~~~~~~
-enable-secure-admin
-===================
-
-[[enable-secure-admin-1]][[GSRFM00129]][[enable-secure-admin]]
-
-enable-secure-admin
--------------------
-
-enables secure admin (if it is not already enabled), optionally changing
-the alias used for DAS-to-instance admin messages or the alias used for
-instance-to-DAS admin messages.
-
-[[sthref1128]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] enable-secure-admin [--help] 
-[--adminalias=alias] 
-[--instancealias=alias]
-----
-
-[[sthref1129]]
-
-Description
-
-The `enable-secure-admin` subcommand causes the DAS and the instances in
-the domain to use SSL certificates for encrypting the messages they send
-to each other. This subcommand also allows the DAS to accept
-administration messages from remote admin clients such as the asadmin
-utility and IDEs.
-
-
-[NOTE]
-=======================================================================
-
-You must restart any running servers in the domain after you enable or
-disable secure admin. It is simpler to enable or disable secure admin
-with only the DAS running, then restart the DAS, and then start any
-other instances.
-
-=======================================================================
-
-
-By default, when secure admin is enabled the DAS and the instances use
-these SSL certificates to authenticate to each other as security
-"principals" and to authorize admin access. The `--asadminalias` value
-indicates to the DAS which SSL certificate it should use to identify
-itself to the instances. The `--instancealias` value determines for
-instances which SSL certificate they should use to identify themselves
-to the DAS.
-
-The `enable-secure-admin` subcommand fails if any administrative user in
-the domain has a blank password.
-
-Alternatively, you can use the `enable-secure-admin-internal-user`
-subcommand to cause the servers to identify themselves using a secure
-admin user name and password.
-
-[[sthref1130]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--adminalias`::
-  The alias that refers to the SSL/TLS certificate on the DAS. This
-  alias is used by the DAS to identify itself to instances. The default
-  value is `s1as`.
-`--instancealias`::
-  The alias that refers to the SSL/TLS certificate on the instances.
-  This alias is used by the instances to identify themselves to the DAS.
-  The default value is `glassfish-instance`.
-
-[[sthref1131]]
-
-Examples
-
-[[GSRFM606]][[sthref1132]]
-
-Example 1   Enabling `secure admin` for a domain
-
-The following example shows how to enable `secure admin` for a domain
-using an admin alias `adtest` and an instance alias `intest`
-
-[source,oac_no_warn]
-----
-asadmin> enable-secure-admin --adminalias adtest --instancealias intest
-server-config
-default-config
-
-Command enable-secure-admin executed successfully.
-----
-
-[[sthref1133]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1134]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:disable-secure-admin.html#disable-secure-admin-1[`disable-secure-admin`(1)],
-link:enable-secure-admin-principal.html#enable-secure-admin-principal-1[`enable-secure-admin-principal`(1)],
-link:enable-secure-admin-internal-user.html#enable-secure-admin-internal-user-1[`enable-secure-admin-internal-user`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/enable.adoc b/docs/reference-manual/src/main/jbake/content/enable.adoc
deleted file mode 100644
index 96d50a6..0000000
--- a/docs/reference-manual/src/main/jbake/content/enable.adoc
+++ /dev/null
@@ -1,115 +0,0 @@
-type=page
-status=published
-title=enable
-next=enable-http-lb-application.html
-prev=disable-secure-admin-principal.html
-~~~~~~
-enable
-======
-
-[[enable-1]][[GSRFM00124]][[enable]]
-
-enable
-------
-
-enables the component
-
-[[sthref1095]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] enable [--help] 
-[--target target_name] component_name
-----
-
-[[sthref1096]]
-
-Description
-
-The `enable` subcommand enables the specified deployed component. If the
-component is already enabled, then it is re-enabled. If it has not been
-deployed, then an error message is returned.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1097]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  This option specifies the target on which you are enabling the
-  component. Valid values are: +
-  `server`;;
-    Enables the default server instance `server` and is the default
-    value.
-  domain_name;;
-    Enables the named domain.
-  cluster_name;;
-    Enables every server instance in the cluster.
-  instance_name;;
-    Enables a particular clustered or stand-alone server instance.
-
-[[sthref1098]]
-
-Operands
-
-component_name::
-  name of the component to be enabled. +
-  The name can include an optional version identifier, which follows the
-  name and is separated from the name by a colon (`:`). The version
-  identifier must begin with a letter or number. It can contain
-  alphanumeric characters plus underscore (`_`), dash (`-`), and period
-  (`.`) characters. For more information about module and application
-  versions, see "link:../application-deployment-guide/overview.html#GSDPG00324[Module and Application Versions]" in
-  GlassFish Server Open Source Edition Application Deployment Guide. +
-  At most one version of a module or application can be enabled on a
-  server instance. All other versions are disabled. Enabling one version
-  automatically disables all others.
-
-[[sthref1099]]
-
-Examples
-
-[[GSRFM599]][[sthref1100]]
-
-Example 1   Enabling a Component
-
-This example enables the disabled component, `sampleApp`.
-
-[source,oac_no_warn]
-----
-asadmin> enable sampleApp
-Command enable executed successfully
-----
-
-[[sthref1101]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1102]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:deploy.html#deploy-1[`deploy`(1)],
-link:disable.html#disable-1[`disable`(1)],
-link:undeploy.html#undeploy-1[`undeploy`(1)]
-
-link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition Application Deployment
-Guide]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/export-http-lb-config.adoc b/docs/reference-manual/src/main/jbake/content/export-http-lb-config.adoc
deleted file mode 100644
index c246932..0000000
--- a/docs/reference-manual/src/main/jbake/content/export-http-lb-config.adoc
+++ /dev/null
@@ -1,157 +0,0 @@
-type=page
-status=published
-title=export-http-lb-config
-next=export-sync-bundle.html
-prev=export.html
-~~~~~~
-export-http-lb-config
-=====================
-
-[[export-http-lb-config-1]][[GSRFM00133]][[export-http-lb-config]]
-
-export-http-lb-config
----------------------
-
-exports the load balancer configuration or load balancer to a file
-
-[[sthref1161]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] export-http-lb-config [--help] 
---config config_name | --lbname load_balancer_name 
-[--target target] [--retrievefile=false] [file_name]
-----
-
-[[sthref1162]]
-
-Description
-
-The `export-http-lb-config` subcommand exports a load balancer
-configuration or load balancer into a file that the load balancer
-plug-in can use. The default file name is `loadbalancer.xml`, but you
-can specify a different name. Once exported, you manually copy the
-exported file to the load balancer plug-in location before configuration
-changes are applied. The `--target` option makes it possible to generate
-a `loadbalancer.xml` for clusters or standalone instances without having
-to manually create `lb-config` or `load-balancer` elements in the
-target's `domain.xml`.
-
-To apply changes to the load balancer without manually copying the
-configuration file, configure the load balancer to automatically apply
-changes with `create-http-lb`. If you use the `create-http-lb`
-subcommand, you do not need to use `export-http-lb-config`.
-
-
-[NOTE]
-=======================================================================
-
-This subcommand is only applicable to Oracle GlassFish Server. This
-subcommand is not applicable to GlassFish Server Open Source Edition.
-
-=======================================================================
-
-
-[[sthref1163]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--config`::
-  Specifies which load balancer configuration to export. +
-  Specify either a load balancer configuration or a load balancer.
-  Specifying both results in an error.
-`--lbname`::
-  Specifies the load balancer to export. +
-  Specify either a load balancer configuration or a load balancer.
-  Specifying both results in an error.
-`--retrievefile`::
-  If set to `true`, retrieves the `loadbalancer.xml` file from the
-  remote machine. The default is `false`.
-`--target`::
-  Specifies the target to which the load balancer configuration will be
-  exported. If a target is not specified, the load balancer
-  configuration is exported to the location specified with file_name.
-
-[[sthref1164]]
-
-Operands
-
-file_name::
-  Specifies the file name and location of the exported configuration. +
-  * If you specify a directory (relative or absolute) but not a file
-  name, the file named `loadbalancer.xml.`load_balancer_config_name is
-  created in the specified directory. On Microsoft Windows systems the
-  path must be in quotes.
-  * If you specify a file name in a relative or absolute path, the file
-  is created with the name you specify in the directory you specify.
-  * If you specify a file name but do not specify a directory, the file
-  is created with that name in the current working directory.
-  * If you do not specify this operand, the default value is a file
-  named `loadbalancer.xml.`load_balancer_config_name created in the
-  domain-dir`/generated` directory.
-target::
-  Specifies the target to which the configuration will be exported. +
-  Valid values are: +
-  * cluster_name- Specifies a cluster and its server instances.
-  * stand-alone_instance_name- Specifies a specific server instance.
-
-[[sthref1165]]
-
-Examples
-
-[[GSRFM612]][[sthref1166]]
-
-Example 1   Exporting a Load Balancer Configuration on UNIX
-
-The following example exports a load balancing configuration named
-`mycluster-http-lb-config` to a file named `loadbalancer.xml` in the
-`/Sun/AppServer` directory .
-
-[source,oac_no_warn]
-----
-asadmin> export-http-lb-config --config mycluster-http-lb-config /Sun/AppServer/loadbalancer.xml
-Command export-http-lb-config executed successfully.
-----
-
-[[GSRFM613]][[sthref1167]]
-
-Example 2   Exporting a Load Balancer Configuration on Windows
-
-The following example exports a load balancing configuration named
-`mycluster-http-lb-config` to a file named `loadbalancer.xml` in the
-`C:\Sun\AppServer` directory on a Microsoft Windows system.
-
-[source,oac_no_warn]
-----
-asadmin> export-http-lb-config --config mycluster-http-lb-config "C:\Sun\AppServer\loadbalancer.xml"
-Command export-http-lb-config executed successfully.
-----
-
-[[sthref1168]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1169]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-http-lb.html#create-http-lb-1[`create-http-lb`(1)],
-link:create-http-lb-config.html#create-http-lb-config-1[`create-http-lb-config`(1)],
-link:list-http-lb-configs.html#list-http-lb-configs-1[`list-http-lb-configs`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/export-sync-bundle.adoc b/docs/reference-manual/src/main/jbake/content/export-sync-bundle.adoc
deleted file mode 100644
index 5d98e31..0000000
--- a/docs/reference-manual/src/main/jbake/content/export-sync-bundle.adoc
+++ /dev/null
@@ -1,161 +0,0 @@
-type=page
-status=published
-title=export-sync-bundle
-next=flush-connection-pool.html
-prev=export-http-lb-config.html
-~~~~~~
-export-sync-bundle
-==================
-
-[[export-sync-bundle-1]][[GSRFM00134]][[export-sync-bundle]]
-
-export-sync-bundle
-------------------
-
-exports the configuration data of a cluster or standalone instance to an
-archive file
-
-[[sthref1170]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] export-sync-bundle [--help]
---target target
-[--retrieve={false|true}]
-[file-name]
-----
-
-[[sthref1171]]
-
-Description
-
-The `export-sync-bundle` subcommand exports the configuration data of a
-cluster or standalone instance to an archive file. The archive file can
-then be used with the
-link:import-sync-bundle.html#import-sync-bundle-1[`import-sync-bundle`(1)]
-subcommand to restore the configuration data.
-
-Importing an instance's configuration data transfers the data to a host
-for an instance without the need for the instance to be able to
-communicate with the domain administration server (DAS). Importing an
-instance's configuration data is typically required for the following
-reasons:
-
-* To reestablish the instance after an upgrade
-* To synchronize the instance manually with the DAS when the instance
-cannot contact the DAS
-
-The subcommand creates an archive that contains the following files and
-directories in the current domain directory:
-
-* All the files in the following directories:
-
-** `config`
-
-** `docroot`
-* The entire contents of the following directories and their
-subdirectories:
-
-** `applications`
-
-** `config/`target, where target is the cluster or standalone instance
-for which configuration data is being exported
-
-** `generated`
-
-** `lib`
-
-This subcommand is supported in remote mode only.
-
-[[sthref1172]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  The cluster or standalone instance for which to export configuration
-  data. The `--target` option is required. +
-  This option must not specify a clustered \{product---name} instance.
-  If this option specifies a clustered instance, an error occurs. To
-  export configuration data for a clustered instance, specify the name
-  of the cluster of which the instance is a member, not the instance.
-`--retrieve`::
-  Specifies whether the archive file is downloaded from the DAS host to
-  the host where the subcommand is run. +
-  Possible values are as follows: +
-  `true`;;
-    The archive file is downloaded to the host where the subcommand is
-    run.
-  `false`;;
-    The archive file is not downloaded and remains on the DAS host
-    (default).
-
-[[sthref1173]]
-
-Operands
-
-file-name::
-  The file name and location of the archive file to which to export the
-  data. +
-  The default depends on the setting of the `--retrieve` option: +
-  * If `--retrieve` is `false`, the default is
-  `sync/`target`-sync-bundle.zip` in the current domain directory.
-  * If `--retrieve` is `true`, the default is target`-sync-bundle.zip`
-  in the current working directory. +
-  target is the cluster or standalone instance that the `--target`
-  option specifies. +
-  If a relative path is specified, the directory to which the path is
-  appended depends on the setting of the `--retrieve` option: +
-  * If `--retrieve` is `false`, the path is appended to the `config`
-  subdirectory of the current domain directory.
-  * If `--retrieve` is `true`, the path is appended to the current
-  working directory. +
-  If an existing directory is specified without a filename, the file
-  name of the archive file is target`-sync-bundle.zip`, where target is
-  the cluster or standalone instance that the `--target` option
-  specifies.
-
-[[sthref1174]]
-
-Examples
-
-[[GSRFM614]][[sthref1175]]
-
-Example 1   Exporting the Configuration Data of a Cluster
-
-This example exports the configuration data of the cluster `pmdcluster`.
-
-[source,oac_no_warn]
-----
-asadmin> export-sync-bundle --target=pmdcluster
-Sync bundle: /export/glassfish3/glassfish/domains/domain1/sync/
-pmdcluster-sync-bundle.zip
-
-Command export-sync-bundle executed successfully.
-----
-
-[[sthref1176]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1177]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:import-sync-bundle.html#import-sync-bundle-1[`import-sync-bundle`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/export.adoc b/docs/reference-manual/src/main/jbake/content/export.adoc
deleted file mode 100644
index ba8c258..0000000
--- a/docs/reference-manual/src/main/jbake/content/export.adoc
+++ /dev/null
@@ -1,132 +0,0 @@
-type=page
-status=published
-title=export
-next=export-http-lb-config.html
-prev=enable-secure-admin-principal.html
-~~~~~~
-export
-======
-
-[[export-1]][[GSRFM00132]][[export]]
-
-export
-------
-
-marks a variable name for automatic export to the environment of
-subsequent commands in multimode
-
-[[sthref1151]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] export [--help] 
-[variable-name=value [variable-name=value]*]
-----
-
-[[sthref1152]]
-
-Description
-
-In multimode, the `export` subcommand marks an environment variable for
-automatic export to the environment of subsequent commands. All
-subsequent commands use the variable name value as specified unless you
-exit multimode, or use the `unset` subcommand to unset the variable. If
-only the variable name is specified, the current value of that variable
-name is displayed.
-
-If the `export` subcommand is used without any arguments, a list of all
-the exported variables and their values is displayed. Exported shell
-environment variables set prior to invoking the `asadmin` utility are
-imported automatically and set as exported variables within `asadmin`.
-Environment variables that are not exported cannot be read by the
-`asadmin` utility.
-
-This subcommand is supported in local mode only.
-
-[[sthref1153]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1154]]
-
-Operands
-
-variable-name=value::
-  Variable name and value for automatic export to the environment to be
-  used by subsequent commands.
-
-[[sthref1155]]
-
-Examples
-
-[[GSRFM609]][[sthref1156]]
-
-Example 1   Listing the Environment Variables That Are Set
-
-This example lists the environment variables that have been set.
-
-[source,oac_no_warn]
-----
-asadmin> export
-AS_ADMIN_USER = admin
-AS_ADMIN_HOST = bluestar
-AS_ADMIN_PREFIX = server1.jms-service
-AS_ADMIN_PORT = 8000
-Command export executed successfully
-----
-
-[[GSRFM610]][[sthref1157]]
-
-Example 2   Setting an Environment Variable
-
-This example sets the `AS_ADMIN_HOST` environment variable to
-`bluestar`.
-
-[source,oac_no_warn]
-----
-asadmin> export AS_ADMIN_HOST=bluestar
-Command export executed successfully
-----
-
-[[GSRFM611]][[sthref1158]]
-
-Example 3   Setting Multiple Environment Variables
-
-This example sets a number of environment variables for the multimode
-environment.
-
-[source,oac_no_warn]
-----
-asadmin> export AS_ADMIN_HOST=bluestar AS_ADMIN_PORT=8000 
-AS_ADMIN_USER=admin AS_ADMIN_PREFIX=server1.jms-service
-Command export executed successfully
-----
-
-[[sthref1159]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1160]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:multimode.html#multimode-1[`multimode`(1)],
-link:unset.html#unset-1[`unset`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/flush-connection-pool.adoc b/docs/reference-manual/src/main/jbake/content/flush-connection-pool.adoc
deleted file mode 100644
index f92e1c2..0000000
--- a/docs/reference-manual/src/main/jbake/content/flush-connection-pool.adoc
+++ /dev/null
@@ -1,113 +0,0 @@
-type=page
-status=published
-title=flush-connection-pool
-next=flush-jmsdest.html
-prev=export-sync-bundle.html
-~~~~~~
-flush-connection-pool
-=====================
-
-[[flush-connection-pool-1]][[GSRFM00135]][[flush-connection-pool]]
-
-flush-connection-pool
----------------------
-
-reintializes all connections established in the specified connection
-pool
-
-[[sthref1178]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] flush-connection-pool [--help] 
-[--appname application [--modulename module]
-pool_name 
-----
-
-[[sthref1179]]
-
-Description
-
-The `flush-connection-pool` subcommand resets a JDBC connection pool or
-a connector connection pool to its initial state. Any existing live
-connections are destroyed, which means that the transactions associated
-with these connections are lost. The subcommand then recreates the
-initial connections for the pool, and restores the pool to its steady
-pool size.
-
-This subcommand is supported in remote mode only.
-
-Application Scoped Resources
-
-The `flush-connection-pool` subcommand can target resources that are
-scoped to a specific application or module, as defined in the
-`glassfish-resources.xml` for the GlassFish domain.
-
-* To reference the `jndi-name` for an application scoped resource,
-perform the lookup using the `java:app` prefix.
-* To reference the `jndi-name` for a module scoped resource, perform the
-lookup using the `java:module` prefix.
-
-The `jndi-name` for application-scoped-resources or
-module-scoped-resources are specified using the format
-`java:app/`jdbc/myDataSource or
-`java:module/`jdbc/myModuleLevelDataSource. This naming scope is defined
-in the Java EE Specification
-(`https://javaee.github.io/javaee-spec/javadocs/`).
-
-[[sthref1180]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--appname`::
-  Name of the application in which the application scoped resource is
-  defined.
-`--modulename`::
-  Name of the module in which the module scoped resource is defined.
-
-[[sthref1181]]
-
-Operands
-
-pool_name::
-  Name of the connection pool to be reinitialized.
-
-[[sthref1182]]
-
-Flushing a Connection Pool
-
-This example reinitializes the JDBC connection pool named `__TimerPool`.
-
-[source,oac_no_warn]
-----
-asadmin> flush-connection-pool __TimerPool
-Command flush-connection-pool executed successfully.
-----
-
-[[sthref1183]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1184]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:list-connector-connection-pools.html#list-connector-connection-pools-1[`list-connector-connection-pools`(1)],
-link:list-jdbc-connection-pools.html#list-jdbc-connection-pools-1[`list-jdbc-connection-pools`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/flush-jmsdest.adoc b/docs/reference-manual/src/main/jbake/content/flush-jmsdest.adoc
deleted file mode 100644
index 4154090..0000000
--- a/docs/reference-manual/src/main/jbake/content/flush-jmsdest.adoc
+++ /dev/null
@@ -1,111 +0,0 @@
-type=page
-status=published
-title=flush-jmsdest
-next=freeze-transaction-service.html
-prev=flush-connection-pool.html
-~~~~~~
-flush-jmsdest
-=============
-
-[[flush-jmsdest-1]][[GSRFM00136]][[flush-jmsdest]]
-
-flush-jmsdest
--------------
-
-purges messages in a JMS destination.
-
-[[sthref1185]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] flush-jmsdest [--help]
---desttype {topic|queue}
-[--target target]
-destname
-----
-
-[[sthref1186]]
-
-Description
-
-The `flush-jmsdest` subcommand purges the messages from a physical
-destination in the server's Java Message Service (JMS) configuration.
-
-This subcommand is supported in remote mode only. Remote `asadmin`
-subcommands require a running domain administration server (DAS).
-
-[[sthref1187]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--desttype`::
-  This option indicates the type of physical destination from which you
-  want to purge messages. The supported destination types are `topic`
-  and `queue`.
-`--target`::
-  Purges messages from the physical destination only for the specified
-  target. Valid values are as follows: +
-  `server`;;
-    Purges messages from the physical destination for the default server
-    instance. This is the default value.
-  configuration-name;;
-    Purges messages from the physical destination in the specified
-    configuration.
-  cluster-name;;
-    Purges messages from the physical destination for every server
-    instance in the specified cluster.
-  instance-name;;
-    Purges messages from the physical destination for the specified
-    server instance.
-
-[[sthref1188]]
-
-Operands
-
-dest_name::
-  The unique identifier of the JMS destination to be purged.
-
-[[sthref1189]]
-
-Examples
-
-[[GSRFM615]][[sthref1190]]
-
-Example 1   Purging messages from a physical destination
-
-The following subcommand purges messages from the queue named
-`PhysicalQueue`.
-
-[source,oac_no_warn]
-----
-asadmin> flush-jmsdest --desttype queue PhysicalQueue
-Command flush-jmsdest executed successfully.
-----
-
-[[sthref1191]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1192]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-jmsdest.html#create-jmsdest-1[`create-jmsdest`(1)],
-link:list-jmsdest.html#list-jmsdest-1[`list-jmsdest`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/freeze-transaction-service.adoc b/docs/reference-manual/src/main/jbake/content/freeze-transaction-service.adoc
deleted file mode 100644
index 1ad557b..0000000
--- a/docs/reference-manual/src/main/jbake/content/freeze-transaction-service.adoc
+++ /dev/null
@@ -1,103 +0,0 @@
-type=page
-status=published
-title=freeze-transaction-service
-next=generate-jvm-report.html
-prev=flush-jmsdest.html
-~~~~~~
-freeze-transaction-service
-==========================
-
-[[freeze-transaction-service-1]][[GSRFM00137]][[freeze-transaction-service]]
-
-freeze-transaction-service
---------------------------
-
-freezes the transaction subsystem
-
-[[sthref1193]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] freeze-transaction-service [--help] 
-[--target target]
-----
-
-[[sthref1194]]
-
-Description
-
-The `freeze-transaction-service` subcommand freezes the transaction
-subsystem, preventing the transaction manager from starting, completing,
-or changing the state of all in-flight transactions. Invoke this command
-before rolling back any in-flight transactions. Invoking this subcommand
-on an already frozen transaction subsystem has no effect. Restarting the
-server unfreezes the transaction subsystem. This subcommand is supported
-in remote mode only.
-
-[[sthref1195]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  This option specifies the target on which you are freezing the
-  transaction service. Valid values are: +
-  `server`;;
-    Freezes the transaction service for the default server instance
-    `server` and is the default value.
-  configuration_name;;
-    Freezes the transaction service for all server instances that use
-    the named configuration.
-  cluster_name;;
-    Freezes the transaction service for every server instance in the
-    cluster.
-  instance_name;;
-    Freezes the transaction service for a particular server instance.
-
-[[sthref1196]]
-
-Examples
-
-[[GSRFM616]][[sthref1197]]
-
-Example 1   Using freeze-transaction-service
-
-[source,oac_no_warn]
-----
-% asadmin freeze-transaction-service
-Command freeze-transaction-service executed successfully
-----
-
-[[sthref1198]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1199]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:recover-transactions.html#recover-transactions-1[`recover-transactions`(1)],
-link:rollback-transaction.html#rollback-transaction-1[`rollback-transaction`(1)],
-link:unfreeze-transaction-service.html#unfreeze-transaction-service-1[`unfreeze-transaction-service`(1)]
-
-"link:../administration-guide/transactions.html#GSADG00022[Administering Transactions]" in GlassFish Server Open
-Source Edition Administration Guide
-
-"http://docs.oracle.com/javaee/7/tutorial/doc/transactions.html[Transactions]"
-in The Java EE 8 Tutorial
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/generate-jvm-report.adoc b/docs/reference-manual/src/main/jbake/content/generate-jvm-report.adoc
deleted file mode 100644
index b09cf90..0000000
--- a/docs/reference-manual/src/main/jbake/content/generate-jvm-report.adoc
+++ /dev/null
@@ -1,186 +0,0 @@
-type=page
-status=published
-title=generate-jvm-report
-next=get.html
-prev=freeze-transaction-service.html
-~~~~~~
-generate-jvm-report
-===================
-
-The script content on this page is for navigation purposes only and does
-not alter the content in any way.
-
-[[generate-jvm-report-1]][[GSRFM00138]][[generate-jvm-report]]
-
-generate-jvm-report
--------------------
-
-shows the JVM machine statistics for a given target instance
-
-[[sthref1200]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-generate-jvm-report [--help] [--type=jvm-statistic-type] [--target target]
-----
-
-[[sthref1201]]
-
-Description
-
-The `generate-jvm-report` subcommand creates a report that shows the
-threads (dump of stack trace), classes, memory, or loggers for a given
-target instance, including the domain administration server (DAS). If a
-type is not specified, a summary report is generated. This subcommand
-only provides statistics for the \{product---name} instance processes.
-This subcommand provides an alternative to sending Ctrl+Break or
-`kill -3` signals to \{product---name} processes to obtain a stack trace
-for processes that are hanging.
-
-The information in the report is obtained from managed beans (MBeans)
-and MXBeans that are provided in the Java Platform, Standard Edition
-(Java SE ) or JDK software with which \{product---name} is being used.
-
-If \{product---name} is running in the Java Runtime Environment (JRE)
-software from JDK release 6 or Java SE 6, additional information is
-provided. For example:
-
-* System load on the available processors
-* Object monitors that are currently held or requested by a thread
-* Lock objects that a thread is holding, for example, `ReentrantLock`
-objects and `ReentrantReadWriteLock` objects
-
-If the JRE software cannot provide this information, the report contains
-the text `NOT_AVAILABLE`.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1202]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Specifies the target for which you are showing JVM machine statistics. +
-  Valid values are as follows: +
-  `server`;;
-    Specifies the DAS (default).
-  instance-name;;
-    Specifies a \{product---name} instance.
-  cluster-name;;
-    Specifies a cluster.
-  configuration-name;;
-    Specifies a named configuration.
-`--type`::
-  The type of report that is to be generated. Default is `summary`. +
-  `summary`;;
-    Displays summary information about the threads, classes, and memory
-    (default).
-  `memory`;;
-    Provides information about heap and non-heap memory consumption,
-    memory pools, and garbage collection statistics for a given target
-    instance.
-  `class`;;
-    Provides information about the class loader for a given target
-    instance.
-  `thread`;;
-    Provides information about threads running and the thread dump
-    (stack trace) for a given target instance.
-  `log`;;
-    Provides information about the loggers that are registered in the
-    Virtual Machine for the Java platform (Java Virtual Machine or JVM
-    machine).link:#sthref1203[^Foot 1 ^]
-
-[[sthref1204]]
-
-Examples
-
-[[GSRFM617]][[sthref1205]]
-
-Example 1   Obtaining Summary Information for the JVM Machine
-
-This example shows a partial listing of a report that is generated if no
-type is specified. This same report is generated if the `summary` type
-is specified.
-
-[source,oac_no_warn]
-----
-asadmin> generate-jvm-report
-Operating System Information:
-Name of the Operating System: SunOS
-Binary Architecture name of the Operating System: sparc, Version: 5.10
-Number of processors available on the Operating System: 32
-System load on the available processors for the last minute: 7.921875. 
-(Sum of running and queued runnable entities per minute)
-General Java Runtime Environment Information for the VM: 64097@sr1-usca-22
-...
-sun.desktop = gnome
-sun.io.unicode.encoding = UnicodeBig
-sun.java.launcher = SUN_STANDARD
-sun.jnu.encoding = ISO646-US
-sun.management.compiler = HotSpot Client Compiler
-sun.os.patch.level = unknown
-user.dir = /home/thisuser/GlassFish/glassfishv3/glassfish/domains/mydomain4/config
-user.home = /home/thisuser
-user.language = en
-user.name = thisuser
-user.timezone = US/Pacific
-Command generate-jvm-report executed successfully
-----
-
-[[GSRFM618]][[sthref1206]]
-
-Example 2   Obtaining Information for a Particular JVM Machine Type
-
-This example generates a report that shows information on the class
-loader.
-
-[source,oac_no_warn]
-----
-asadmin> generate-jvm-report --type=class
-Class loading and unloading in the Java Virtual Machine:
-Number of classes currently loaded in the Java Virtual Machine: 3,781
-Number of classes loaded in the Java Virtual Machine since the startup: 3,868
-Number of classes unloaded from the Java Virtual Machine: 87
-Just-in-time (JIT) compilation information in the Java Virtual Machine:
-Java Virtual Machine compilation monitoring allowed: true
-Name of the Just-in-time (JIT) compiler: HotSpot Client Compiler
-Total time spent in compilation: 0 Hours 0 Minutes 4 Seconds
-Command generate-jvm-report executed successfully.
-----
-
-[[sthref1207]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1208]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-jvm-options.html#create-jvm-options-1[`create-jvm-options`(1)],
-link:delete-jvm-options.html#delete-jvm-options-1[`delete-jvm-options`(1)],
-link:list-jvm-options.html#list-jvm-options-1[`list-jvm-options`(1)]
-
-'''''
-
-
-Footnote Legend
-
-Footnote 1: The terms "Java Virtual Machine" and "JVM" mean a Virtual
-Machine for the Java platform. +
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/get-active-module-config.adoc b/docs/reference-manual/src/main/jbake/content/get-active-module-config.adoc
deleted file mode 100644
index 8c90977..0000000
--- a/docs/reference-manual/src/main/jbake/content/get-active-module-config.adoc
+++ /dev/null
@@ -1,114 +0,0 @@
-type=page
-status=published
-title=get-active-module-config
-next=get-client-stubs.html
-prev=get.html
-~~~~~~
-get-active-module-config
-========================
-
-[[get-active-module-config-1]][[GSRFM859]][[get-active-module-config]]
-
-get-active-module-config
-------------------------
-
-displays the current active configuration of a service or instance
-
-[[sthref1219]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] get-active-module-config [--help]
-[--target target]
-[--all={false|true}]
-[service_name]
-----
-
-[[sthref1220]]
-
-Description
-
-The `get-active-module-config` subcommand displays the current active
-configuration of a service or instance.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1221]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Specifies the target for which you want to view the current active
-  configuration of a specific service or an entire instance. +
-  Possible values are as follows: +
-  `server`;;
-    Displays the current active configuration for the default server
-    instance. This is the default value.
-  `domain`;;
-    Displays the current active configuration for the default domain.
-  cluster-name;;
-    Displays the current active configuration for every server instance
-    in the specified cluster.
-  instance-name;;
-    Displays the current active configuration for the specified
-    instance.
-`--all`::
-  Displays all current active configurations. +
-  The default value is `false`.
-
-[[sthref1222]]
-
-Operands
-
-service_name::
-  The name of the module for which you want to display the current
-  active configuration.
-
-[[sthref1223]]
-
-Examples
-
-[[GSRFM860]][[sthref1224]]
-
-Example 1   Displaying the Current Active Configuration
-
-This example displays the current active configuration for the JMS
-service in `server-config` (the default configuration).
-
-[source,oac_no_warn]
-----
-asadmin> get-active-module-config jms-service
-At location: domain/configs/config[server-config]
-<jms-service default-jms-host="default_JMS_host" type="EMBEDDED"
-  <jms-host port="7676" host="localhost" name="default_JMS_host"/>
-</jms-service>
-Command get-active-module-config executed successfully.
-----
-
-[[sthref1225]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1226]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-module-config.html#create-module-config-1[`create-module-config`(1)],
-link:delete-module-config.html#delete-module-config-1[`delete-module-config`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/get-client-stubs.adoc b/docs/reference-manual/src/main/jbake/content/get-client-stubs.adoc
deleted file mode 100644
index 28284d9..0000000
--- a/docs/reference-manual/src/main/jbake/content/get-client-stubs.adoc
+++ /dev/null
@@ -1,110 +0,0 @@
-type=page
-status=published
-title=get-client-stubs
-next=get-health.html
-prev=get-active-module-config.html
-~~~~~~
-get-client-stubs
-================
-
-[[get-client-stubs-1]][[GSRFM00140]][[get-client-stubs]]
-
-get-client-stubs
-----------------
-
-retrieves the application JAR files needed to launch the application
-client.
-
-[[sthref1227]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] get-client-stubs [--help] 
---appname application_name
-local_directory_path
-----
-
-[[sthref1228]]
-
-Description
-
-The `get-client-stubs` subcommand copies the required JAR files for an
-`AppClient` standalone module or each `AppClient` module in an
-application from the server machine to the local directory. Each
-client's generated JAR file is retrieved, along with any required
-supporting JAR files . The client JAR file name is of the form
-app-name`Client.jar`. Before executing the `get-client-stubs`
-subcommand, you must deploy the application or module. The generated
-client JAR file is useful for running the application using the
-`appclient` utility. This subcommand is supported in remote mode only.
-
-[[sthref1229]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--appname`::
-  The name of the application or stand-alone client module. +
-  The name can include an optional version identifier, which follows the
-  name and is separated from the name by a colon (`:`). The version
-  identifier must begin with a letter or number. It can contain
-  alphanumeric characters plus underscore (`_`), dash (`-`), and period
-  (`.`) characters. For more information about module and application
-  versions, see "link:../application-deployment-guide/overview.html#GSDPG00324[Module and Application Versions]" in
-  GlassFish Server Open Source Edition Application Deployment Guide.
-
-[[sthref1230]]
-
-Operands
-
-local_directory_path::
-  The path to the local directory where the client stub JAR file should
-  be stored.
-
-[[sthref1231]]
-
-Examples
-
-[[GSRFM622]][[sthref1232]]
-
-Example 1   Using get-client-stubs
-
-[source,oac_no_warn]
-----
-asadmin> get-client-stubs --appname myapplication /sample/example
-Command get-client-stubs executed successfully
-----
-
-[[sthref1233]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1234]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:deploy.html#deploy-1[`deploy`(1)],
-link:redeploy.html#redeploy-1[`redeploy`(1)],
-link:undeploy.html#undeploy-1[`undeploy`(1)]
-
-link:appclient.html#appclient-1m[`appclient`(1M)],
-link:package-appclient.html#package-appclient-1m[`package-appclient`(1M)]
-
-link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition Application Deployment
-Guide]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/get-health.adoc b/docs/reference-manual/src/main/jbake/content/get-health.adoc
deleted file mode 100644
index b8dc6c2..0000000
--- a/docs/reference-manual/src/main/jbake/content/get-health.adoc
+++ /dev/null
@@ -1,92 +0,0 @@
-type=page
-status=published
-title=get-health
-next=import-sync-bundle.html
-prev=get-client-stubs.html
-~~~~~~
-get-health
-==========
-
-[[get-health-1]][[GSRFM00141]][[get-health]]
-
-get-health
-----------
-
-provides information on the cluster health
-
-[[sthref1235]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] get-health [--help] 
-cluster_name
-----
-
-[[sthref1236]]
-
-Description
-
-The `get-health` subcommand gets information about the health of the
-cluster. Note that if the group management service (GMS) is not enabled,
-the basic information about whether the server instances in this cluster
-are running or not running is not returned. For each server instance,
-one of the following states is reported: `not started`, `started`,
-`stopped`, `rejoined`, or `failed`. This subcommand is available in
-remote mode only.
-
-[[sthref1237]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1238]]
-
-Operands
-
-cluster_name::
-  The name of the cluster for which you want the health information.
-  This subcommand prompts you for the cluster name if you don't specify
-  it.
-
-[[sthref1239]]
-
-Examples
-
-[[GSRFM623]][[sthref1240]]
-
-Example 1   Checking the health of server instances in a cluster
-
-[source,oac_no_warn]
-----
-asadmin> get-health cluster1
-instance1 started since Wed Sep 29 16:32:46 EDT 2010
-instance2 started since Wed Sep 29 16:32:45 EDT 2010
-Command get-health executed successfully.
-----
-
-[[sthref1241]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1242]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:validate-multicast.html#validate-multicast-1[`validate-multicast`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/get.adoc b/docs/reference-manual/src/main/jbake/content/get.adoc
deleted file mode 100644
index 8f30a04..0000000
--- a/docs/reference-manual/src/main/jbake/content/get.adoc
+++ /dev/null
@@ -1,209 +0,0 @@
-type=page
-status=published
-title=get
-next=get-active-module-config.html
-prev=generate-jvm-report.html
-~~~~~~
-get
-===
-
-[[get-1]][[GSRFM00139]][[get]]
-
-get
----
-
-gets the values of configurable or monitorable attributes
-
-[[sthref1209]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] get [--help] 
-[--monitor={true|false}]
-[--aggregatedataonly={true|false}]
-(dotted-attribute--name)+
-----
-
-[[sthref1210]]
-
-Description
-
-The `get` subcommand uses dotted names to get the names and values of
-configurable or monitorable attributes for \{product---name} elements.
-
-You can use the link:list.html#list-1[`list`(1)] subcommand to display
-the dotted names that represent individual server components and
-subsystems. For example, a dotted name might be
-`server.applications.web-module`. Attributes from the monitoring
-hierarchy are read-only, but configuration attributes can be modified
-using the link:set.html#set-1[`set`(1)] subcommand. For more detailed
-information on dotted names, see the
-link:dotted-names.html#dotted-names-5asc[`dotted-names`(5ASC)] help page.
-
-
-[NOTE]
-=======================================================================
-
-Characters that have special meaning to the shell or command
-interpreter, such as * (asterisk), should be quoted or escaped as
-appropriate to the shell, for example, by enclosing the argument in
-quotes. In multimode, quotes are needed only for arguments that include
-spaces, quotes, or backslash.
-
-=======================================================================
-
-
-The following list shows common usage of the `get` subcommand with the *
-(asterisk):
-
-`get *` or `get *.*`::
-  Gets all values on all dotted name prefixes.
-`get domain*` or `get domain*.*`::
-  Gets all values on the dotted names that begin with `domain`.
-`get *config*.*.*`::
-  Gets all values on the dotted names that match `*config*.*`.
-`get domain.j2ee-applications.*.ejb-module.*.*`::
-  Gets all values on all EJB modules of all applications.
-`get *web-modules.*.*`::
-  Gets all values on all web modules whether in an application or
-  standalone.
-`get *.*.*.*`::
-  Gets all values on all dotted names that have four parts.
-
-[[sthref1211]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--monitor`::
-`-m`::
-  Defaults to `false`. If set to false, the configurable attribute
-  values are returned. If set to `true`, the monitorable attribute
-  values are returned.
-`--aggregatedataonly`::
-`-c`::
-  Aggregates monitoring data for all \{product---name} instances in a
-  cluster. The default value is `false`.
-
-[[sthref1212]]
-
-Operands
-
-dotted-attribute-name::
-  Identifies the attribute name in the dotted notation. At least one
-  dotted name attribute is required. The dotted notation is the syntax
-  used to access attributes of configurable entities.
-
-[[sthref1213]]
-
-Examples
-
-[[GSRFM619]][[sthref1214]]
-
-Example 1   Getting the Attributes of a Configurable Element
-
-This example gets the attributes of `listener.http-listener-1`.
-
-[source,oac_no_warn]
-----
-asadmin> get server.http-service.http-listener.http-listener-1.*
-server.http-service.http-listener.http-listener-1.acceptor-threads = 1
-server.http-service.http-listener.http-listener-1.address = 0.0.0.0
-server.http-service.http-listener.http-listener-1.blocking-enabled = false
-server.http-service.http-listener.http-listener-1.default-virtual-server = server
-server.http-service.http-listener.http-listener-1.enabled = true
-server.http-service.http-listener.http-listener-1.external-port =
-server.http-service.http-listener.http-listener-1.family = inet
-server.http-service.http-listener.http-listener-1.id = http-listener-1
-server.http-service.http-listener.http-listener-1.port = 8080
-server.http-service.http-listener.http-listener-1.redirect-port =
-server.http-service.http-listener.http-listener-1.security-enabled = false
-server.http-service.http-listener.http-listener-1.server-name =
-server.http-service.http-listener.http-listener-1.xpowered-by = true
-Command get executed successfully.
-----
-
-[[GSRFM620]][[sthref1215]]
-
-Example 2   Getting Monitorable Objects
-
-This example gets the configuration attributes for setting the
-monitoring level and shows whether they are enabled (LOW or HIGH) or
-disabled (OFF). The `jvm` component is enabled for monitoring.
-
-[source,oac_no_warn]
-----
-asadmin> get server.monitoring-service.module-monitoring-levels.*
-server.monitoring-service.module-monitoring-levels.connector-connection-pool=OFF
-server.monitoring-service.module-monitoring-levels.connector-service=OFF
-server.monitoring-service.module-monitoring-levels.d-trace=OFF
-server.monitoring-service.module-monitoring-levels.ejb-container=OFF
-server.monitoring-service.module-monitoring-levels.http-service=OFF
-server.monitoring-service.module-monitoring-levels.jdbc-connection-pool=OFF
-server.monitoring-service.module-monitoring-levels.jms-service=OFF
-server.monitoring-service.module-monitoring-levels.jvm=HIGH
-server.monitoring-service.module-monitoring-levels.orb=OFF
-server.monitoring-service.module-monitoring-levels.thread-pool=OFF
-server.monitoring-service.module-monitoring-levels.transaction-service=OFF
-server.monitoring-service.module-monitoring-levels.web-container=OFF
-Command get executed successfully.
-----
-
-[[GSRFM621]][[sthref1216]]
-
-Example 3   Getting Attributes and Values for a Monitorable Object
-
-This example gets all attributes and values of the `jvm` monitorable
-object.
-
-[source,oac_no_warn]
-----
-asadmin> get --monitor server.jvm.*
-server.jvm.HeapSize_Current = 45490176
-server.jvm.HeapSize_Description = Describes JvmHeapSize
-server.jvm.HeapSize_HighWaterMark = 45490176
-server.jvm.HeapSize_LastSampleTime = 1063217002433
-server.jvm.HeapSize_LowWaterMark = 0
-server.jvm.HeapSize_LowerBound = 0
-server.jvm.HeapSize_Name = JvmHeapSize
-server.jvm.HeapSize_StartTime = 1063238840055
-server.jvm.HeapSize_Unit = bytes
-server.jvm.HeapSize_UpperBound = 531628032
-server.jvm.UpTime_Count = 1063238840100
-server.jvm.UpTime_Description = Describes JvmUpTime
-server.jvm.UpTime_LastSampleTime = 1-63238840070
-server.jvm.UpTime_Name = JvmUpTime
-server.jvm.UpTime_StartTime = 1063217002430
-server.jvm.UpTime_Unit = milliseconds
-Command get executed successfully.
-----
-
-[[sthref1217]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1218]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:list.html#list-1[`list`(1)], link:set.html#set-1[`set`(1)]
-
-link:dotted-names.html#dotted-names-5asc[`dotted-names`(5ASC)]
-
-link:../administration-guide/toc.html#GSADG[GlassFish Server Open Source Edition Administration Guide]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/import-sync-bundle.adoc b/docs/reference-manual/src/main/jbake/content/import-sync-bundle.adoc
deleted file mode 100644
index 6b8b658..0000000
--- a/docs/reference-manual/src/main/jbake/content/import-sync-bundle.adoc
+++ /dev/null
@@ -1,147 +0,0 @@
-type=page
-status=published
-title=import-sync-bundle
-next=install-node.html
-prev=get-health.html
-~~~~~~
-import-sync-bundle
-==================
-
-[[import-sync-bundle-1]][[GSRFM00142]][[import-sync-bundle]]
-
-import-sync-bundle
-------------------
-
-imports the configuration data of a clustered instance or standalone
-instance from an archive file
-
-[[sthref1243]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] import-sync-bundle [--help]
---instance instance-name 
-[--nodedir node-dir] [--node node-name]
-file-name
-----
-
-[[sthref1244]]
-
-Description
-
-The `import-sync-bundle` subcommand imports the configuration data of a
-clustered instance or standalone instance from an archive file that was
-created by the
-link:export-sync-bundle.html#export-sync-bundle-1[`export-sync-bundle`(1)]
-subcommand.
-
-You must run this subcommand on the host where the instance resides. To
-contact the domain administration server (DAS), this subcommand requires
-the name of the host where the DAS is running. If a nondefault port is
-used for administration, this subcommand also requires the port number.
-You must provide this information through the `--host` option and the
-`--port` option of the link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-utility.
-
-Importing an instance's configuration data transfers the data to a host
-for an instance without the need for the instance to be able to
-communicate with the DAS. Importing an instance's configuration data is
-typically required for the following reasons:
-
-* To reestablish the instance after an upgrade
-* To synchronize the instance manually with the domain administration
-server (DAS) when the instance cannot contact the DAS
-
-The subcommand imports an instance's configuration data by performing
-the following operations:
-
-* Creating or updating the instance's files and directories
-* Attempting to register the instance with the DAS
-
-If the attempt to register the instance with the DAS fails, the
-subcommand does not fail. Instead, the subcommand displays a warning
-that the attempt failed. The warning contains the command to run to
-register the instance with the DAS.
-
-The `import-sync-bundle` subcommand does not contact the DAS to
-determine the node on which the instance resides. If the node is not
-specified as an option of the subcommand, the subcommand determines the
-node from the DAS configuration in the archive file.
-
-This subcommand is supported in local mode only.
-
-[[sthref1245]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--instance`::
-  The instance for which configuration data is being imported. The
-  instance must already exist in the DAS configuration. The archive file
-  from which the data is being imported must contain data for the
-  specified instance.
-`--nodedir`::
-  The directory that contains the instance's node directory. The
-  instance's files are stored in the instance's node directory. The
-  default is as-install`/nodes`.
-`--node`::
-  The node on which the instance resides. If this option is omitted, the
-  subcommand determines the node from the DAS configuration in the
-  archive file.
-
-[[sthref1246]]
-
-Operands
-
-file-name::
-  The name of the file, including the path, that contains the archive
-  file to import. This operand is required.
-
-[[sthref1247]]
-
-Examples
-
-[[GSRFM624]][[sthref1248]]
-
-Example 1   Importing Configuration Data for a Clustered Instance
-
-This example imports the configuration for the clustered instance
-`ymli2` on the node `sj02` from the archive file
-`/export/glassfish3/glassfish/domains/domain1/sync/ymlcluster-sync-bundle.zip`.
-
-The command is run on the host `sj02`, which is the host that the node
-`sj02` represents. The DAS is running on the host `sr04` and uses the
-default HTTP port for administration.
-
-[source,oac_no_warn]
-----
-sj02# asadmin --host sr04 import-sync-bundle --node sj02 --instance ymli2 
-/export/glassfish3/glassfish/domains/domain1/sync/ymlcluster-sync-bundle.zip
-Command import-sync-bundle executed successfully.
-----
-
-[[sthref1249]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1250]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:export-sync-bundle.html#export-sync-bundle-1[`export-sync-bundle`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/install-node-dcom.adoc b/docs/reference-manual/src/main/jbake/content/install-node-dcom.adoc
deleted file mode 100644
index 96a6897..0000000
--- a/docs/reference-manual/src/main/jbake/content/install-node-dcom.adoc
+++ /dev/null
@@ -1,221 +0,0 @@
-type=page
-status=published
-title=install-node-dcom
-next=install-node-ssh.html
-prev=install-node.html
-~~~~~~
-install-node-dcom
-=================
-
-[[install-node-dcom-1]][[GSRFM626]][[install-node-dcom]]
-
-install-node-dcom
------------------
-
-installs \{product---name} software on specified DCOM-enabled hosts
-
-[[sthref1259]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] install-node-dcom [--help]
-[--archive archive]
-[--create={false|true}] [--save[={false|true}]
-[--installdir as-install-parent] 
-[--windowsuser windows-user] [--windowsdomain windows-domain]
-[--force={false|true}]
-host-list
-----
-
-[[sthref1260]]
-
-Description
-
-The `install-node-dcom` subcommand installs \{product---name} software
-on the hosts that are specified as the operand of the subcommand. This
-subcommand requires the Distributed Component Object Model (DCOM) remote
-protocol to be configured on the host where the subcommand is run and on
-each host where the \{product---name} software is being installed. The
-DCOM protocol is available only on Windows systems.
-
-
-[NOTE]
-=======================================================================
-
-To install \{product---name} software on hosts that use secure shell
-(SSH), use the
-link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)]
-subcommand.
-
-=======================================================================
-
-
-If necessary, the subcommand creates a ZIP archive of the
-\{product---name} software from the installation where this subcommand
-is run. The archive does not contain the `domains` directory or the
-`nodes` directory. These directories are synchronized from the domain
-administration server (DAS) when instances on nodes that represent the
-hosts are created and started. The subcommand does not delete the
-archive after installing the \{product---name} software from the archive
-on the specified hosts.
-
-If multiple hosts are specified, the configuration of the following
-items is the same on all hosts:
-
-* Base installation directory
-* Windows user
-* Windows domain
-
-By default, the subcommand runs interactively and prompts for a password
-to authenticate the Windows user on each host where the
-\{product---name} software is being installed. To enable the subcommand
-to run noninteractively, the following conditions must be met:
-
-* The `--interactive` option of the
-link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility must be `false`.
-* The `--passwordfile` option of the `asadmin` utility must specify a
-password file.
-* The password file must contain the `AS_ADMIN_WINDOWSPASSWORD` entry.
-
-The subcommand does not modify the configuration of the DAS.
-
-This subcommand is supported in local mode only.
-
-[[sthref1261]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--archive`::
-  The absolute path to the archive file of the \{product---name}
-  software that is to be installed. If no archive file is specified, the
-  subcommand creates an archive from the installation of
-  \{product---name} software from which the subcommand is run. This
-  archive is created in the home directory of the user that is running
-  the command.
-`--create`::
-  Specifies whether the subcommand should create an archive file of the
-  \{product---name} software to install. +
-  `false`;;
-    No archive file is created. The subcommand installs the software
-    from the existing archive file that the `--archive` option specifies
-    (default).
-  `true`;;
-    The subcommand creates an archive file from the installation of
-    \{product---name} software from which the subcommand is run.
-`--save`::
-  Specifies whether the archive file from which the software is
-  installed is saved after installation. +
-  `false`;;
-    The archive file is not saved. The subcommand deletes the file after
-    installing the software (default).
-  `true`;;
-    The archive file is saved.
-`--installdir`::
-  The absolute path to the parent of the base installation directory
-  where the \{product---name} software is to be installed on each host,
-  for example, `C:\glassfish3`. If the directory does not exist, the
-  subcommand creates the directory. +
-  The user that is running this subcommand must have write access to the
-  specified directory. Otherwise, an error occurs. +
-  To overwrite an existing an installation of the \{product---name}
-  software, set the `--force` option to `true`. If the directory already
-  contains an installation and the `--force` option is `false`, an error
-  occurs. +
-  The default is the parent of the base installation directory of the
-  \{product---name} software on the host where this subcommand is run.
-`--windowsuser`::
-`-w`::
-  The user on the host where the \{product---name} software is to be
-  installed that is to run the process for connecting through DCOM to
-  the host. The default is the user that is running this subcommand.
-`--windowsdomain`::
-`-d`::
-  The name of the Windows domain that contains the user that the
-  `--windowsuser` option specifies. The default is the name of the host
-  on which the subcommand is run.
-`--force`::
-  Specifies whether the subcommand overwrites an existing installation
-  of the \{product---name} software in the directory that the
-  `--installdir` option specifies. Possible values are as follows: +
-  `false`;;
-    The existing installation is not overwritten (default).
-  `true`;;
-    The existing installation is overwritten.
-
-[[sthref1262]]
-
-Operands
-
-host-list::
-  A space-separated list of the names of the hosts where the
-  \{product---name} software is to be installed.
-
-[[sthref1263]]
-
-Examples
-
-[[GSRFM627]][[sthref1264]]
-
-Example 1   Installing \{product---name} Software at the Default
-Location
-
-This example installs \{product---name} software on the hosts
-`wpmdl1.example.com` and `wpmdl2.example.com` at the default location.
-
-Some lines of output are omitted from this example for readability.
-
-[source,oac_no_warn]
-----
-asadmin> install-node-dcom wpmdl1.example.com wpmdl2.example.com
-Created installation zip C:\glassfish8107276692860773166.zip
-Copying 85760199 bytes..........................................................
-....................................
-WROTE FILE TO REMOTE SYSTEM: C:/glassfish3/glassfish_install.zip and C:/glassfish3/unpack.bat
-Output from Windows Unpacker:
- 
-C:\Windows\system32>C:
- 
-C:\Windows\system32>cd "C:\glassfish3"
- 
-C:\glassfish3>jar xvf glassfish_install.zip
- inflated: bin/asadmin
- inflated: bin/asadmin.bat
- inflated: glassfish/bin/appclient
- inflated: glassfish/bin/appclient.bat
- inflated: glassfish/bin/appclient.js
- inflated: glassfish/bin/asadmin
- inflated: glassfish/bin/asadmin.bat
-...
- inflated: mq/lib/props/broker/default.properties
- inflated: mq/lib/props/broker/install.properties
- 
-Command install-node-dcom executed successfully.
-----
-
-[[sthref1265]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1266]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)],
-link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/install-node-ssh.adoc b/docs/reference-manual/src/main/jbake/content/install-node-ssh.adoc
deleted file mode 100644
index 53d63b5..0000000
--- a/docs/reference-manual/src/main/jbake/content/install-node-ssh.adoc
+++ /dev/null
@@ -1,228 +0,0 @@
-type=page
-status=published
-title=install-node-ssh
-next=jms-ping.html
-prev=install-node-dcom.html
-~~~~~~
-install-node-ssh
-================
-
-[[install-node-ssh-1]][[GSRFM628]][[install-node-ssh]]
-
-install-node-ssh
-----------------
-
-installs \{product---name} software on specified SSH-enabled hosts
-
-[[sthref1267]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] install-node-ssh [--help]
-[--archive archive]
-[--create={false|true}] [--save[={false|true}]
-[--installdir as-install-parent] 
-[--sshport ssh-port] [--sshuser ssh-user]
-[--sshkeyfile ssh-keyfile]
-[--force={false|true}]
-host-list
-----
-
-[[sthref1268]]
-
-Description
-
-The `install-node-ssh` subcommand installs \{product---name} software on
-the hosts that are specified as the operand of the subcommand. This
-subcommand requires secure shell (SSH) to be configured on the host
-where the subcommand is run and on each host where the \{product---name}
-software is being installed.
-
-
-[NOTE]
-=======================================================================
-
-This subcommand is equivalent to the
-link:install-node.html#install-node-1[`install-node`(1)] subcommand. To
-install \{product---name} software on hosts that use the Distributed
-Component Object Model (DCOM) remote protocol, use the
-link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)]
-subcommand.
-
-=======================================================================
-
-
-If necessary, the subcommand creates a ZIP archive of the
-\{product---name} software from the installation where this subcommand
-is run. The archive does not contain the `domains` directory or the
-`nodes` directory. These directories are synchronized from the domain
-administration server (DAS) when instances on nodes that represent the
-hosts are created and started. The subcommand does not delete the
-archive after installing the \{product---name} software from the archive
-on the specified hosts.
-
-If multiple hosts are specified, the configuration of the following
-items is the same on all hosts:
-
-* Base installation directory
-* SSH port
-* SSH user
-* SSH key file
-
-If the SSH key file does not exist on a host where the \{product---name}
-software is to be installed, the subcommand runs interactively and
-prompts for a password. To enable the subcommand to run
-noninteractively, the following conditions must be met:
-
-* The `--interactive` option of the
-link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility must be `false`.
-* The `--passwordfile` option of the `asadmin` utility must specify a
-password file.
-* The password file must contain the `AS_ADMIN_SSHPASSWORD` entry.
-
-The subcommand does not modify the configuration of the DAS.
-
-This subcommand is supported in local mode only.
-
-[[sthref1269]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--archive`::
-  The absolute path to the archive file of the \{product---name}
-  software that is to be installed. If no archive file is specified, the
-  subcommand creates an archive from the installation of
-  \{product---name} software from which the subcommand is run. This
-  archive is created in the home directory of the user that is running
-  the command.
-`--create`::
-  Specifies whether the subcommand should create an archive file of the
-  \{product---name} software to install. +
-  `false`;;
-    No archive file is created. The subcommand installs the software
-    from the existing archive file that the `--archive` option specifies
-    (default).
-  `true`;;
-    The subcommand creates an archive file from the installation of
-    \{product---name} software from which the subcommand is run.
-`--save`::
-  Specifies whether the archive file from which the software is
-  installed is saved after installation. +
-  `false`;;
-    The archive file is not saved. The subcommand deletes the file after
-    installing the software (default).
-  `true`;;
-    The archive file is saved.
-`--installdir`::
-  The absolute path to the parent of the base installation directory
-  where the \{product---name} software is to be installed on each host,
-  for example, `/export/glassfish3/`. If the directory does not exist,
-  the subcommand creates the directory. +
-  The user that is running this subcommand must have write access to the
-  specified directory. Otherwise, an error occurs. +
-  To overwrite an existing an installation of the \{product---name}
-  software, set the `--force` option to `true`. If the directory already
-  contains an installation and the `--force` option is `false`, an error
-  occurs. +
-  The default is the parent of the base installation directory of the
-  \{product---name} software on the host where this subcommand is run.
-`--sshport`::
-  The port to use for SSH connections to the host where the
-  \{product---name} software is to be installed. The default is 22.
-`--sshuser`::
-  The user on the host where the \{product---name} software is to be
-  installed that is to run the process for connecting through SSH to the
-  host. The default is the user that is running this subcommand. To
-  ensure that the DAS can read this user's SSH private key file, specify
-  the user that is running the DAS process.
-`--sshkeyfile`::
-  The absolute path to the SSH private key file for user that the
-  `--sshuser` option specifies. This file is used for authentication to
-  the `sshd` daemon on the host. +
-  The user that is running this subcommand must be able to reach the
-  path to the key file and read the key file. +
-  The default is a key file in the user's `.ssh` directory. If multiple
-  key files are found, the subcommand uses the following order of
-  preference: +
-  1.  `id_rsa`
-  2.  `id_dsa`
-  3.  `identity`
-`--force`::
-  Specifies whether the subcommand overwrites an existing installation
-  of the \{product---name} software in the directory that the
-  `--installdir` option specifies. Possible values are as follows: +
-  `false`;;
-    The existing installation is not overwritten (default).
-  `true`;;
-    The existing installation is overwritten.
-
-[[sthref1270]]
-
-Operands
-
-host-list::
-  A space-separated list of the names of the hosts where the
-  \{product---name} software is to be installed.
-
-[[sthref1271]]
-
-Examples
-
-[[GSRFM629]][[sthref1272]]
-
-Example 1   Installing \{product---name} Software at the Default
-Location
-
-This example installs \{product---name} software on the hosts
-`sj03.example.com` and `sj04.example.com` at the default location.
-
-[source,oac_no_warn]
-----
-asadmin> install-node-ssh sj03.example.com sj04.example.com
-Created installation zip /home/gfuser/glassfish2339538623689073993.zip
-Successfully connected to gfuser@sj03.example.com using keyfile /home/gfuser
-/.ssh/id_rsa
-Copying /home/gfuser/glassfish2339538623689073993.zip (81395008 bytes) to 
-sj03.example.com:/export/glassfish3
-Installing glassfish2339538623689073993.zip into sj03.example.com:/export/glassfish3
-Removing sj03.example.com:/export/glassfish3/glassfish2339538623689073993.zip
-Fixing file permissions of all files under sj03.example.com:/export/glassfish3/bin
-Successfully connected to gfuser@sj04.example.com using keyfile /home/gfuser
-/.ssh/id_rsa
-Copying /home/gfuser/glassfish2339538623689073993.zip (81395008 bytes) to 
-sj04.example.com:/export/glassfish3
-Installing glassfish2339538623689073993.zip into sj04.example.com:/export/glassfish3
-Removing sj04.example.com:/export/glassfish3/glassfish2339538623689073993.zip
-Fixing file permissions of all files under sj04.example.com:/export/glassfish3/bin
-Command install-node-ssh executed successfully
-----
-
-[[sthref1273]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1274]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:install-node.html#install-node-1[`install-node`(1)],
-link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)],
-link:uninstall-node.html#uninstall-node-1[`uninstall-node`(1)],
-link:uninstall-node-ssh.html#uninstall-node-ssh-1[`uninstall-node-ssh`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/install-node.adoc b/docs/reference-manual/src/main/jbake/content/install-node.adoc
deleted file mode 100644
index 6278aa4..0000000
--- a/docs/reference-manual/src/main/jbake/content/install-node.adoc
+++ /dev/null
@@ -1,229 +0,0 @@
-type=page
-status=published
-title=install-node
-next=install-node-dcom.html
-prev=import-sync-bundle.html
-~~~~~~
-install-node
-============
-
-[[install-node-1]][[GSRFM00143]][[install-node]]
-
-install-node
-------------
-
-installs \{product---name} software on specified SSH-enabled hosts
-
-[[sthref1251]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] install-node [--help]
-[--archive archive]
-[--create={false|true}] [--save[={false|true}]
-[--installdir as-install-parent] 
-[--sshport ssh-port] [--sshuser ssh-user]
-[--sshkeyfile ssh-keyfile]
-[--force={false|true}]
-host-list
-----
-
-[[sthref1252]]
-
-Description
-
-The `install-node` subcommand installs \{product---name} software on the
-hosts that are specified as the operand of the subcommand. This
-subcommand requires secure shell (SSH) to be configured on the host
-where the subcommand is run and on each host where the \{product---name}
-software is being installed.
-
-
-[NOTE]
-=======================================================================
-
-This subcommand is equivalent to the
-link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)]
-subcommand. To install \{product---name} software on hosts that use the
-Distributed Component Object Model (DCOM) remote protocol, use the
-link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)]
-subcommand.
-
-=======================================================================
-
-
-If necessary, the subcommand creates a ZIP archive of the
-\{product---name} software from the installation where this subcommand
-is run. The archive does not contain the `domains` directory or the
-`nodes` directory. These directories are synchronized from the domain
-administration server (DAS) when instances on nodes that represent the
-hosts are created and started. The subcommand does not delete the
-archive after installing the \{product---name} software from the archive
-on the specified hosts.
-
-If multiple hosts are specified, the configuration of the following
-items is the same on all hosts:
-
-* Base installation directory
-* SSH port
-* SSH user
-* SSH key file
-
-If the SSH key file does not exist on a host where the \{product---name}
-software is to be installed, the subcommand runs interactively and
-prompts for a password. To enable the subcommand to run
-noninteractively, the following conditions must be met:
-
-* The `--interactive` option of the
-link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility must be `false`.
-* The `--passwordfile` option of the `asadmin` utility must specify a
-password file.
-* The password file must contain the `AS_ADMIN_SSHPASSWORD` entry.
-
-The subcommand does not modify the configuration of the DAS.
-
-This subcommand is supported in local mode only.
-
-[[sthref1253]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--archive`::
-  The absolute path to the archive file of the \{product---name}
-  software that is to be installed. If no archive file is specified, the
-  subcommand creates an archive from the installation of
-  \{product---name} software from which the subcommand is run. This
-  archive is created in the home directory of the user that is running
-  the command.
-`--create`::
-  Specifies whether the subcommand should create an archive file of the
-  \{product---name} software to install. +
-  `false`;;
-    No archive file is created. The subcommand installs the software
-    from the existing archive file that the `--archive` option specifies
-    (default).
-  `true`;;
-    The subcommand creates an archive file from the installation of
-    \{product---name} software from which the subcommand is run.
-`--save`::
-  Specifies whether the archive file from which the software is
-  installed is saved after installation. +
-  `false`;;
-    The archive file is not saved. The subcommand deletes the file after
-    installing the software (default).
-  `true`;;
-    The archive file is saved.
-`--installdir`::
-  The absolute path to the parent of the base installation directory
-  where the \{product---name} software is to be installed on each host,
-  for example, `/export/glassfish3/`. If the directory does not exist,
-  the subcommand creates the directory. +
-  The user that is running this subcommand must have write access to the
-  specified directory. Otherwise, an error occurs. +
-  To overwrite an existing an installation of the \{product---name}
-  software, set the `--force` option to `true`. If the directory already
-  contains an installation and the `--force` option is `false`, an error
-  occurs. +
-  The default is the parent of the base installation directory of the
-  \{product---name} software on the host where this subcommand is run.
-`--sshport`::
-  The port to use for SSH connections to the host where the
-  \{product---name} software is to be installed. The default is 22.
-`--sshuser`::
-  The user on the host where the \{product---name} software is to be
-  installed that is to run the process for connecting through SSH to the
-  host. The default is the user that is running this subcommand. To
-  ensure that the DAS can read this user's SSH private key file, specify
-  the user that is running the DAS process.
-`--sshkeyfile`::
-  The absolute path to the SSH private key file for user that the
-  `--sshuser` option specifies. This file is used for authentication to
-  the `sshd` daemon on the host. +
-  The user that is running this subcommand must be able to reach the
-  path to the key file and read the key file. +
-  The default is a key file in the user's `.ssh` directory. If multiple
-  key files are found, the subcommand uses the following order of
-  preference: +
-  1.  `id_rsa`
-  2.  `id_dsa`
-  3.  `identity`
-`--force`::
-  Specifies whether the subcommand overwrites an existing installation
-  of the \{product---name} software in the directory that the
-  `--installdir` option specifies. Possible values are as follows: +
-  `false`;;
-    The existing installation is not overwritten (default).
-  `true`;;
-    The existing installation is overwritten.
-
-[[sthref1254]]
-
-Operands
-
-host-list::
-  A space-separated list of the names of the hosts where the
-  \{product---name} software is to be installed.
-
-[[sthref1255]]
-
-Examples
-
-[[GSRFM625]][[sthref1256]]
-
-Example 1   Installing \{product---name} Software at the Default
-Location
-
-This example installs \{product---name} software on the hosts
-`sj03.example.com` and `sj04.example.com` at the default location.
-
-[source,oac_no_warn]
-----
-asadmin> install-node sj03.example.com sj04.example.com
-Created installation zip /home/gfuser/glassfish2339538623689073993.zip
-Successfully connected to gfuser@sj03.example.com using keyfile /home/gfuser
-/.ssh/id_rsa
-Copying /home/gfuser/glassfish2339538623689073993.zip (81395008 bytes) to 
-sj03.example.com:/export/glassfish3
-Installing glassfish2339538623689073993.zip into sj03.example.com:/export/glassfish3
-Removing sj03.example.com:/export/glassfish3/glassfish2339538623689073993.zip
-Fixing file permissions of all files under sj03.example.com:/export/glassfish3/bin
-Successfully connected to gfuser@sj04.example.com using keyfile /home/gfuser
-/.ssh/id_rsa
-Copying /home/gfuser/glassfish2339538623689073993.zip (81395008 bytes) to 
-sj04.example.com:/export/glassfish3
-Installing glassfish2339538623689073993.zip into sj04.example.com:/export/glassfish3
-Removing sj04.example.com:/export/glassfish3/glassfish2339538623689073993.zip
-Fixing file permissions of all files under sj04.example.com:/export/glassfish3/bin
-Command install-node executed successfully
-----
-
-[[sthref1257]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1258]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)],
-link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)],
-link:uninstall-node.html#uninstall-node-1[`uninstall-node`(1)],
-link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)],
-link:uninstall-node-ssh.html#uninstall-node-ssh-1[`uninstall-node-ssh`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/instance.adoc b/docs/reference-manual/src/main/jbake/content/instance.adoc
deleted file mode 100644
index 0825ba5..0000000
--- a/docs/reference-manual/src/main/jbake/content/instance.adoc
+++ /dev/null
@@ -1,36 +0,0 @@
-type=page
-status=published
-title=instance
-next=logging.html
-prev=dotted-names.html
-~~~~~~
-instance
-========
-
-[[instance-5asc]][[GSRFM00269]][[instance]]
-
-instance
---------
-
-an instance in \{product---name} has its own Java EE configuration, Java
-EE resources, application deployment areas, and server configuration
-settings
-
-[[sthref2403]]
-
-Description
-
-\{product---name} creates one server instance, called `server` at the
-time of installation. You can delete the server instance and create a
-new instance with a different name.
-
-For many users, one server instance meets their needs. However,
-depending upon your environment, you might want to create additional
-server instances. For example, in a development environment you can use
-different server instances to test different \{product---name}
-configurations, or to compare and test different application
-deployments. Because you can easily add or delete a server instance, you
-can use them to create temporary "sandbox" areas to experiment with
-while developing.
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/jms-ping.adoc b/docs/reference-manual/src/main/jbake/content/jms-ping.adoc
deleted file mode 100644
index 0f587c2..0000000
--- a/docs/reference-manual/src/main/jbake/content/jms-ping.adoc
+++ /dev/null
@@ -1,104 +0,0 @@
-type=page
-status=published
-title=jms-ping
-next=list.html
-prev=install-node-ssh.html
-~~~~~~
-jms-ping
-========
-
-[[jms-ping-1]][[GSRFM00144]][[jms-ping]]
-
-jms-ping
---------
-
-checks if the JMS service is up and running
-
-[[sthref1275]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] jms-ping [--help]
-[-- target target]
-----
-
-[[sthref1276]]
-
-Description
-
-The `jms-ping` subcommand checks if the Java Message Service (JMS)
-service (also known as the JMS provider) is up and running. When you
-start the \{product---name}, the JMS service starts by default.
-
-The `jms-ping` subcommand pings only the default JMS host within the JMS
-service. It displays an error message when it is unable to ping a
-built-in JMS service.
-
-This subcommand is supported in remote mode only. Remote `asadmin`
-subcommands require a running domain administration server (DAS).
-
-[[sthref1277]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Specifies the target for which the operation is to be performed. Valid
-  values are as follows: +
-  `server`;;
-    Pings the JMS service for the default server instance. This is the
-    default value
-  configuration-name;;
-    Pings the JMS service for all clusters using the specified
-    configuration.
-  cluster-name;;
-    Pings the JMS service for the specified cluster.
-  instance-name;;
-    Pings the JMS service for the specified server instance.
-
-[[sthref1278]]
-
-Examples
-
-[[GSRFM630]][[sthref1279]]
-
-Example 1   Verifying that the JMS service is running
-
-The following subcommand checks to see if the JMS service is running on
-the default server.
-
-[source,oac_no_warn]
-----
-asadmin> jms-ping
-JMS-ping command executed successfully
-Connector resoure test_jms_adapter created.
-Command jms-ping executed successfully.
-----
-
-[[sthref1280]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1281]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-jms-host.html#create-jms-host-1[`create-jms-host`(1)],
-link:delete-jms-host.html#delete-jms-host-1[`delete-jms-host`(1)],
-link:list-jms-hosts.html#list-jms-hosts-1[`list-jms-hosts`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-admin-objects.adoc b/docs/reference-manual/src/main/jbake/content/list-admin-objects.adoc
deleted file mode 100644
index ee17383..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-admin-objects.adoc
+++ /dev/null
@@ -1,100 +0,0 @@
-type=page
-status=published
-title=list-admin-objects
-next=list-application-refs.html
-prev=list.html
-~~~~~~
-list-admin-objects
-==================
-
-[[list-admin-objects-1]][[GSRFM00146]][[list-admin-objects]]
-
-list-admin-objects
-------------------
-
-gets all the administered objects
-
-[[sthref1292]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-admin-objects [--help] 
-[target]
-----
-
-[[sthref1293]]
-
-Description
-
-The `list-admin-objects` subcommand lists all the administered objects.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1294]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1295]]
-
-Operands
-
-target::
-  The target for which administered objects are to be listed. Valid
-  values are as follows: +
-  `server`;;
-    Lists the administered objects on the default server instance. This
-    is the default value.
-  configuration-name;;
-    Lists the administered objects in the specified configuration.
-  cluster-name;;
-    Lists the administered objects on all server instances in the
-    specified cluster.
-  instance-name;;
-    Lists the administered objects on a specified server instance.
-
-[[sthref1296]]
-
-Examples
-
-[[GSRFM634]][[sthref1297]]
-
-Example 1   Listing Administered Objects
-
-This example lists all the administered objects.
-
-[source,oac_no_warn]
-----
-asadmin> list-admin-objects
-jms/samplequeue
-jms/anotherqueue
-Command list-admin-objects executed successfully
-----
-
-[[sthref1298]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1299]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-admin-object.html#create-admin-object-1[`create-admin-object`(1)],
-link:delete-admin-object.html#delete-admin-object-1[`delete-admin-object`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-application-refs.adoc b/docs/reference-manual/src/main/jbake/content/list-application-refs.adoc
deleted file mode 100644
index 461698d..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-application-refs.adoc
+++ /dev/null
@@ -1,116 +0,0 @@
-type=page
-status=published
-title=list-application-refs
-next=list-applications.html
-prev=list-admin-objects.html
-~~~~~~
-list-application-refs
-=====================
-
-[[list-application-refs-1]][[GSRFM00147]][[list-application-refs]]
-
-list-application-refs
----------------------
-
-lists the existing application references
-
-[[sthref1300]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-application-refs [--help] 
-[--long={false|true}] [target]
-----
-
-[[sthref1301]]
-
-Description
-
-The `list-application-refs` subcommand lists all application references
-in a cluster or an unclustered server instance. This effectively lists
-all the modules deployed on the specified target (for example, J2EE
-applications, Web modules, and enterprise bean modules).
-
-If multiple versions of a module or application are deployed, this
-subcommand lists all versions. To list which version is enabled, set the
-`--long` option to `true`. For more information about module and
-application versions, see "link:../application-deployment-guide/overview.html#GSDPG00324[Module and Application
-Versions]" in GlassFish Server Open Source Edition Application
-Deployment Guide.
-
-The target instance or instances making up the cluster need not be
-running or available for this subcommand to succeed.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1302]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--long`::
-  If `true`, displays whether each module or application listed is
-  enabled. The default is `false`.
-
-[[sthref1303]]
-
-Operands
-
-target::
-  The target for which you are listing the application references. Valid
-  values are +
-  * `server`- Specifies the default server instance as the target.
-  `server` is the name of the default server instance and is the default
-  value.
-  * cluster_name- Specifies a certain cluster as the target.
-  * instance_name- Specifies a certain server instance as the target.
-
-[[sthref1304]]
-
-Examples
-
-[[GSRFM635]][[sthref1305]]
-
-Example 1   Listing Application References
-
-The following example lists the application references for the
-unclustered server instance `NewServer`.
-
-[source,oac_no_warn]
-----
-asadmin> list-application-refs NewServer
-ClientSessionMDBApp
-MEjbApp
-__ejb_container_timer_app
-Command list-application-refs executed successfully.
-----
-
-[[sthref1306]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1307]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-application-ref.html#create-application-ref-1[`create-application-ref`(1)],
-link:delete-application-ref.html#delete-application-ref-1[`delete-application-ref`(1)]
-
-link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition Application Deployment
-Guide]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-applications.adoc b/docs/reference-manual/src/main/jbake/content/list-applications.adoc
deleted file mode 100644
index 90c5774..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-applications.adoc
+++ /dev/null
@@ -1,135 +0,0 @@
-type=page
-status=published
-title=list-applications
-next=list-audit-modules.html
-prev=list-application-refs.html
-~~~~~~
-list-applications
-=================
-
-[[list-applications-1]][[GSRFM00148]][[list-applications]]
-
-list-applications
------------------
-
-lists deployed applications
-
-[[sthref1308]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-applications [--help] 
-[--long={false|true}] [--resources] [--subcomponents]
-[--type type] [target]
-----
-
-[[sthref1309]]
-
-Description
-
-The `list-applications` subcommand lists deployed Java EE applications
-and the type of each application that is listed.
-
-If the `--type` option is not specified, all applications are listed. If
-the type option is specified, you must specify a type. The possible
-types are listed in the Options section of this help page.
-
-If multiple versions of a module or application are deployed, this
-subcommand lists all versions. To list which version is enabled, set the
-`--long` option to `true`. For more information about module and
-application versions, see "link:../application-deployment-guide/overview.html#GSDPG00324[Module and Application
-Versions]" in GlassFish Server Open Source Edition Application
-Deployment Guide.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1310]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--long`::
-  If `true`, displays whether each module or application listed is
-  enabled. The default is `false`.
-`--resources`::
-  Lists the application-scoped resources for each application. If the
-  `--subcomponents` option is also used, lists the application-scoped
-  resources for each component within the application.
-`--subcomponents`::
-  Lists the subcomponents of each application. The subcomponents listed
-  depend on the application type. For example, for a Java EE application
-  (EAR file), modules are listed. For a web application, servlets and
-  JSP pages are listed. For an EJB module, EJB subcomponents are listed.
-`--type`::
-  Specifies the type of the applications that are to be listed. The
-  options are as follows: +
-  * `application`
-  * `appclient`
-  * `connector`
-  * `ejb`
-  * `web`
-  * `webservice` +
-  If no type is specified, all applications are listed.
-
-[[sthref1311]]
-
-Operands
-
-`--target`::
-  This is the name of the target upon which the subcommand operates. The
-  valid values are as follows: +
-  `server`;;
-    Lists the applications for the default server instance `server` and
-    is the default value.
-  `domain`;;
-    Lists the applications for the domain.
-  cluster_name;;
-    Lists the applications for the cluster.
-  instance_name;;
-    Lists the applications for a particular stand-alone server instance.
-
-[[sthref1312]]
-
-Examples
-
-[[GSRFM636]][[sthref1313]]
-
-Example 1   Listing the Web Applications
-
-[source,oac_no_warn]
-----
-asadmin> list-applications --type web
-hellojsp <web>
-Command list-applications executed successfully
-----
-
-[[sthref1314]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1315]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:list-components.html#list-components-1[`list-components`(1)],
-link:list-sub-components.html#list-sub-components-1[`list-sub-components`(1)],
-link:show-component-status.html#show-component-status-1[`show-component-status`(1)]
-
-link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition Application Deployment
-Guide]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-audit-modules.adoc b/docs/reference-manual/src/main/jbake/content/list-audit-modules.adoc
deleted file mode 100644
index 1e1a3f0..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-audit-modules.adoc
+++ /dev/null
@@ -1,96 +0,0 @@
-type=page
-status=published
-title=list-audit-modules
-next=list-auth-realms.html
-prev=list-applications.html
-~~~~~~
-list-audit-modules
-==================
-
-[[list-audit-modules-1]][[GSRFM00149]][[list-audit-modules]]
-
-list-audit-modules
-------------------
-
-gets all audit modules and displays them
-
-[[sthref1316]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-audit-modules [--help] 
-[target]
-----
-
-[[sthref1317]]
-
-Description
-
-The `list-audit-modules` subcommand lists all the audit modules. This
-subcommand is supported in remote mode only.
-
-[[sthref1318]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1319]]
-
-Operands
-
-target::
-  Specifies the target on which you are listing the audit modules. Valid
-  values are as follows: +
-  `server`;;
-    Lists the audit modules for the default server instance `server` and
-    is the default value.
-  configuration_name;;
-    Lists the audit modules for the named configuration.
-  cluster_name;;
-    Lists the audit modules for every server instance in the cluster.
-  instance_name;;
-    Lists the audit modules for a particular server instance.
-
-[[sthref1320]]
-
-Examples
-
-[[GSRFM637]][[sthref1321]]
-
-Example 1   Listing Audit Modules
-
-[source,oac_no_warn]
-----
-asadmin> list-audit-modules
-sampleAuditModule1
-sampleAuditModule2
-Command list-audit-modules executed successfully
-----
-
-[[sthref1322]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1323]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-audit-module.html#create-audit-module-1[`create-audit-module`(1)],
-link:delete-audit-module.html#delete-audit-module-1[`delete-audit-module`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-auth-realms.adoc b/docs/reference-manual/src/main/jbake/content/list-auth-realms.adoc
deleted file mode 100644
index 69ccd9f..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-auth-realms.adoc
+++ /dev/null
@@ -1,101 +0,0 @@
-type=page
-status=published
-title=list-auth-realms
-next=list-backups.html
-prev=list-audit-modules.html
-~~~~~~
-list-auth-realms
-================
-
-[[list-auth-realms-1]][[GSRFM00150]][[list-auth-realms]]
-
-list-auth-realms
-----------------
-
-lists the authentication realms
-
-[[sthref1324]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-auth-realms [--help] 
-[target]
-----
-
-[[sthref1325]]
-
-Description
-
-The `list-auth-realms` subcommand lists the authentication realms. This
-subcommand is supported in remote mode only.
-
-[[sthref1326]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1327]]
-
-Operands
-
-target::
-  The name of the target for which you want to list the authentication
-  realms. +
-  `server`;;
-    Lists the realms for the default server instance `server` and is the
-    default value.
-  configuration_name;;
-    Lists the realms for the named configuration.
-  cluster_name;;
-    Lists the realms for every server instance in the cluster.
-  instance_name;;
-    Lists the realms for a particular server instance.
-
-[[sthref1328]]
-
-Examples
-
-[[GSRFM638]][[sthref1329]]
-
-Example 1   Listing authentication realms
-
-[source,oac_no_warn]
-----
-asadmin> list-auth-realms 
-file
-ldap
-certificate
-db
-Command list-auth-realms executed successfully
-----
-
-Where file, ldap, certificate, and db are the available authentication
-realms.
-
-[[sthref1330]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1331]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-auth-realm.html#create-auth-realm-1[`create-auth-realm`(1)],
-link:delete-auth-realm.html#delete-auth-realm-1[`delete-auth-realm`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-backups.adoc b/docs/reference-manual/src/main/jbake/content/list-backups.adoc
deleted file mode 100644
index 00f2fa8..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-backups.adoc
+++ /dev/null
@@ -1,134 +0,0 @@
-type=page
-status=published
-title=list-backups
-next=list-batch-job-executions.html
-prev=list-auth-realms.html
-~~~~~~
-list-backups
-============
-
-[[list-backups-1]][[GSRFM00152]][[list-backups]]
-
-list-backups
-------------
-
-lists all backups
-
-[[sthref1332]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-backups [--help]
-[--long[={false|true}]]
-[--domaindir domain-root-dir]
-[--backupdir backup-directory]
-[--backupconfig backup-config-name]
-[domain-name]
-----
-
-[[sthref1333]]
-
-Description
-
-The `list-backups` subcommand displays information about domain backups.
-
-This subcommand is supported in local mode only in GlassFish Server Open
-Source Edition, and is support in local mode and remote mode in Oracle
-GlassFish Server.
-
-[[sthref1334]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--long`::
-`-l`::
-  Displays detailed information about each backup. +
-  The default value is `false`.
-`--domaindir`::
-  Specifies the domain root directory, the parent directory of the
-  domain upon which the command will operate. +
-  The default value is as-install`/domains`.
-`--backupdir`::
-  Specifies the directory under which backup files are stored. +
-  The default value is as-install`/domains/`domain-dir`/backups`. If the
-  domain is not in the default location, the location is
-  domain-dir`/backups`.
-`--backupconfig`::
-  (Supported only in Oracle GlassFish Server.) Restricts the listing of
-  backup files in the backup directory to those for the specified domain
-  backup configuration.
-
-[[sthref1335]]
-
-Operands
-
-domain-name::
-  Specifies the domain for which backups are listed. +
-  This operand is optional if only one domain exists in the
-  \{product---name} installation.
-
-[[sthref1336]]
-
-Examples
-
-[[GSRFM640]][[sthref1337]]
-
-Example 1   Listing Domain Backups
-
-This example provides detailed information about backups in the default
-domain.
-
-[source,oac_no_warn]
-----
-asadmin> list-backups --long
-Description               : domain1 backup created on 2010_12_01 by user adminuser
-GlassFish Version         : Oracle GlassFish Server 3.1
-Backup User               : adminuser
-Backup Date               : Wed Dec 01 09:22:45 PST 2010
-Domain Name               : domain1
-Backup Type               : full
-Backup Config Name        :
-Backup Filename (origin)  : /glassfish3/glassfish/domains/domain1/backups/domain1_2010_12_01_v00001.zip
-Domain Directory          : /glassfish3/glassfish/domains/domain1
-
-Description               : domain1 backup created on 2010_12_16 by user adminuser
-GlassFish Version         : Oracle GlassFish Server 3.1
-Backup User               : adminuser
-Backup Date               : Thu Dec 16 09:23:48 PST 2010
-Domain Name               : domain1
-Backup Type               : full
-Backup Config Name        : 
-Backup Filename (origin)  : /glassfish3/glassfish/domains/domain1/backups/domain1_2010_12_16_v00001.zip
-Domain Directory          : /glassfish3/glassfish/domains/domain1
-
-
-Command list-backups executed successfully.
-----
-
-[[sthref1338]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1339]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:backup-domain.html#backup-domain-1[`backup-domain`(1)],
-link:restore-domain.html#restore-domain-1[`restore-domain`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-batch-job-executions.adoc b/docs/reference-manual/src/main/jbake/content/list-batch-job-executions.adoc
deleted file mode 100644
index 3bd15a4..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-batch-job-executions.adoc
+++ /dev/null
@@ -1,148 +0,0 @@
-type=page
-status=published
-title=list-batch-job-executions
-next=list-batch-jobs.html
-prev=list-backups.html
-~~~~~~
-list-batch-job-executions
-=========================
-
-[[list-batch-job-executions-1]][[GSRFM884]][[list-batch-job-executions]]
-
-list-batch-job-executions
--------------------------
-
-lists batch job executions and execution details
-
-[[sthref1340]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-batch-job-executions [--help]
-[--target target]
-[--executionid execution-id]
-[--long={false|true}]
-[--output output]
-[--header={false|true}]
-[instance_ID]
-----
-
-[[sthref1341]]
-
-Description
-
-The `list-batch-job-executions` subcommand lists batch job executions
-and execution details.
-
-[[sthref1342]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Specifies the target for which to list batch job executions and
-  execution details. Valid values are as follows: +
-  `server`;;
-    Lists executions for the default server instance `server` and is the
-    default value.
-  cluster-name;;
-    Lists executions for every server instance in the cluster.
-  instance-name;;
-    Lists executions for a particular server instance.
-`--executionid`::
-`-x`::
-  Specifies the execution ID of a specific batch job execution.
-`--long`::
-`-l`::
-  Displays detailed information about batch job executions. The default
-  value is `false`.
-`--output`::
-`-o`::
-  Displays specific details about batch job executions. Use a
-  comma-separated list to specify the details to display and their
-  order. The values are case-insensitive. A subset of all possible
-  headings is displayed by default. +
-  Possible values are as follows: +
-  `jobname`;;
-    Displays the name of the job.
-  `executionid`;;
-    Displays the ID assigned to the execution of the batch job. A new
-    execution is created the first time a job is started and every time
-    the existing execution is restarted.
-  `starttime`;;
-    Displays the start time of the execution.
-  `endtime`;;
-    Displays the finish time of the execution.
-  `batchstatus`;;
-    Displays the status of the execution as set by the batch runtime.
-  `exitstatus`;;
-    Displays the status of the execution as set by the Job XML for the
-    job or by the batch application. By default, the exit status and the
-    batch status are the same unless the exit status is explicitly
-    overridden.
-  `jobparameters`;;
-    Displays the properties passed to the batch runtime for the batch
-    job execution, listed as name/value pairs.
-  `stepcount`;;
-    Displays the number of steps in the batch job execution.
-`--header`::
-`-h`::
-  Specifies whether column headings are displayed when the `--long`
-  option is used. The default value is `true`. To suppress the headings,
-  set the `--header` option to `false`.
-
-[[sthref1343]]
-
-Operands
-
-instance_id::
-  The ID of the job instance for which to list execution details.
-
-[[sthref1344]]
-
-Examples
-
-[[GSRFM885]][[sthref1345]]
-
-Example 1   Listing Batch Job Executions
-
-This example lists batch job executions for the default server instance
-and displays specific details.
-
-[source,oac_no_warn]
-----
-asadmin> list-batch-job-executions -o=jobname,executionid,batchstatus,exitstatus
-JOBNAME  EXECUTIONID  BATCHSTATUS  EXITSTATUS
-payroll  9            COMPLETED    COMPLETED
-bonus    6            FAILED       FAILED
-Command list-batch-job-executions executed successfully.
-----
-
-[[sthref1346]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1347]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:list-batch-jobs.html#list-batch-jobs-1[`list-batch-jobs`(1)],
-link:list-batch-job-steps.html#list-batch-job-steps-1[`list-batch-job-steps`(1)],
-link:list-batch-runtime-configuration.html#list-batch-runtime-configuration-1[`list-batch-runtime-configuration`(1)],
-link:set-batch-runtime-configuration.html#set-batch-runtime-configuration-1[`set-batch-runtime-configuration`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-batch-job-steps.adoc b/docs/reference-manual/src/main/jbake/content/list-batch-job-steps.adoc
deleted file mode 100644
index 6860a6c..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-batch-job-steps.adoc
+++ /dev/null
@@ -1,151 +0,0 @@
-type=page
-status=published
-title=list-batch-job-steps
-next=list-batch-runtime-configuration.html
-prev=list-batch-jobs.html
-~~~~~~
-list-batch-job-steps
-====================
-
-[[list-batch-job-steps-1]][[GSRFM895]][[list-batch-job-steps]]
-
-list-batch-job-steps
---------------------
-
-lists steps for a specific batch job execution
-
-[[sthref1356]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-batch-job-steps [--help]
-[--long={false|true}]
-[--target target]
-[--output output]
-[--header={false|true}]
-execution_id
-----
-
-[[sthref1357]]
-
-Description
-
-The `list-batch-job-steps` subcommand lists steps for a specific batch
-job execution.
-
-[[sthref1358]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Specifies the target for which to list batch job steps. Valid values
-  are as follows: +
-  `server`;;
-    Lists steps for the default server instance `server` and is the
-    default value.
-  cluster-name;;
-    Lists steps for every server instance in the cluster.
-  instance-name;;
-    Lists steps for a particular server instance.
-`--long`::
-`-l`::
-  Displays detailed information about batch job steps. The default value
-  is `false`.
-`--output`::
-`-o`::
-  Displays specific details about batch job steps. Use a comma-separated
-  list to specify the details to display and their order. The values are
-  case-insensitive. A subset of all possible headings is displayed by
-  default. +
-  Possible values are as follows: +
-  `stepname`;;
-    Displays the name of the step.
-  `stepid`;;
-    Displays the step ID.
-  `starttime`;;
-    Displays the start time of the step.
-  `endtime`;;
-    Displays the finish time of the step.
-  `batchstatus`;;
-    Displays the status of the step as set by the batch runtime.
-  `exitstatus`;;
-    Displays the status of the step as set by the Job XML for the job or
-    by the batch application. By default, the exit status and the batch
-    status are the same unless the exit status is explicitly overridden.
-  `stepmetrics`;;
-    Displays metrics for the step.
-  `value`;;
-    Displays a value for each step metric. The value represents the
-    number of items read, written, committed, and so on.
-`--header`::
-`-h`::
-  Specifies whether column headings are displayed when the `--long`
-  option is used. The default value is `true`. To suppress the headings,
-  set the `--header` option to `false`.
-
-[[sthref1359]]
-
-Operands
-
-execution_id::
-  The ID of the execution for which to list batch job steps and details.
-
-[[sthref1360]]
-
-Examples
-
-[[GSRFM896]][[sthref1361]]
-
-Example 1   Listing Batch Job Steps
-
-This example lists batch job steps and specific step details for a job
-execution with the execution ID of `7`. The target is the default server
-instance.
-
-Some lines of output are omitted from this example for readability.
-
-[source,oac_no_warn]
-----
-asadmin> list-batch-job-steps o=stepname,stepid,batchstatus,stepmetrics 7
-STEPNAME   STEPID   BATCHSTATUS   STEPMETRICS
-prepare    7        COMPLETED     METRICNAME          VALUE
-                                  READ_COUNT          8
-                                  WRITE_COUNT         8
-                                  PROCESS_SKIP_COUNT  0
-process    8        COMPLETED     METRICNAME          VALUE
-                                  READ_COUNT          8
-                                  WRITE_COUNT         8
-                                  PROCESS_SKIP_COUNT  0
-...
-Command list-batch-job-steps executed successfully.
-----
-
-[[sthref1362]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1363]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:list-batch-jobs.html#list-batch-jobs-1[`list-batch-jobs`(1)],
-link:list-batch-job-executions.html#list-batch-job-executions-1[`list-batch-job-executions`(1)],
-link:list-batch-runtime-configuration.html#list-batch-runtime-configuration-1[`list-batch-runtime-configuration`(1)],
-link:set-batch-runtime-configuration.html#set-batch-runtime-configuration-1[`set-batch-runtime-configuration`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-batch-jobs.adoc b/docs/reference-manual/src/main/jbake/content/list-batch-jobs.adoc
deleted file mode 100644
index ec530ed..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-batch-jobs.adoc
+++ /dev/null
@@ -1,142 +0,0 @@
-type=page
-status=published
-title=list-batch-jobs
-next=list-batch-job-steps.html
-prev=list-batch-job-executions.html
-~~~~~~
-list-batch-jobs
-===============
-
-[[list-batch-jobs-1]][[GSRFM861]][[list-batch-jobs]]
-
-list-batch-jobs
----------------
-
-lists batch jobs
-
-[[sthref1348]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-batch-jobs [--help]
-[--target target]
-[--long={false|true}]
-[--output output]
-[--header={false|true}]
-[job_name]
-----
-
-[[sthref1349]]
-
-Description
-
-The `list-batch-jobs` subcommand lists batch jobs and job details.
-
-[[sthref1350]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Specifies the target for which to list batch jobs and job details.
-  Valid values are as follows: +
-  `server`;;
-    Lists batch jobs for the default server instance `server` and is the
-    default value.
-  cluster-name;;
-    Lists batch jobs for every server instance in the cluster.
-  instance-name;;
-    Lists batch jobs for a particular server instance.
-`--long`::
-`-l`::
-  Displays detailed information about batch jobs. The default value is
-  `false`.
-`--output`::
-`-o`::
-  Displays specific details about batch jobs. Use a comma-separated list
-  to specify the details to display and their order. The values are
-  case-insensitive. The `jobname` and `instancecount` column headings
-  are displayed by default. +
-  Possible values are as follows: +
-  `jobname`;;
-    Displays the name of the job.
-  `appname`;;
-    Displays the name of the application.
-  `instancecount`;;
-    Displays the number of job instances.
-  `instanceid`;;
-    Displays the ID assigned to the job instance.
-  `executionid`;;
-    Displays the ID assigned to the execution of the batch job. A new
-    execution is created the first time a job is started and every time
-    the existing execution is restarted.
-  `batchstatus`;;
-    Displays the status of the job as set by the batch runtime.
-  `starttime`;;
-    Displays the start time of the job.
-  `endtime`;;
-    Displays the finish time of the job.
-  `exitstatus`;;
-    Displays the status of the job as set by the Job XML for the job or
-    by the batch application. By default, the exit status and the batch
-    status are the same unless the exit status is explicitly overridden.
-`--header`::
-`-h`::
-  Specifies whether column headings are displayed when the `--long`
-  option is used. The default value is `true`. To suppress the headings,
-  set the `--header` option to `false`.
-
-[[sthref1351]]
-
-Operands
-
-job_name::
-  The name of the job for which to list details.
-
-[[sthref1352]]
-
-Examples
-
-[[GSRFM862]][[sthref1353]]
-
-Example 1   Listing Batch Jobs
-
-This example lists batch jobs for the default server instance.
-
-[source,oac_no_warn]
-----
-asadmin> list-batch-jobs
-JOBNAME  INSTANCECOUNT 
-payroll  9
-bonus    6
-Command list-batch-jobs executed successfully.
-----
-
-[[sthref1354]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1355]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:list-batch-job-executions.html#list-batch-job-executions-1[`list-batch-job-executions`(1)],
-link:list-batch-job-steps.html#list-batch-job-steps-1[`list-batch-job-steps`(1)],
-link:list-batch-runtime-configuration.html#list-batch-runtime-configuration-1[`list-batch-runtime-configuration`(1)],
-link:set-batch-runtime-configuration.html#set-batch-runtime-configuration-1[`set-batch-runtime-configuration`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-batch-runtime-configuration.adoc b/docs/reference-manual/src/main/jbake/content/list-batch-runtime-configuration.adoc
deleted file mode 100644
index f02d1fd..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-batch-runtime-configuration.adoc
+++ /dev/null
@@ -1,120 +0,0 @@
-type=page
-status=published
-title=list-batch-runtime-configuration
-next=list-clusters.html
-prev=list-batch-job-steps.html
-~~~~~~
-list-batch-runtime-configuration
-================================
-
-[[list-batch-runtime-configuration-1]][[GSRFM863]][[list-batch-runtime-configuration]]
-
-list-batch-runtime-configuration
---------------------------------
-
-displays the configuration of the batch runtime
-
-[[sthref1364]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-batch-runtime-configuration [--help]
-[--target target]
-[--output output]
-[--header={false|true}]
-----
-
-[[sthref1365]]
-
-Description
-
-The `list-batch-runtime-configuration` subcommand displays the
-configuration of the batch runtime. Batch runtime configuration data is
-stored in the `config` element in `domain.xml`.
-
-[[sthref1366]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Specifies the target for which to list the batch runtime
-  configuration. Valid values are as follows: +
-  `server`;;
-    Lists the batch runtime configuration for the default server
-    instance `server` and is the default value.
-  cluster-name;;
-    Lists the batch runtime configuration for every server instance in
-    the cluster.
-  instance-name;;
-    Lists the batch runtime configuration for a particular server
-    instance.
-`--output`::
-`-o`::
-  Displays specific details about the batch runtime configuration. Use a
-  comma-separated list to specify the details to display and their
-  order. The values are case-insensitive. The `datasourcelookupname` and
-  `executorservicelookupname` column headings are displayed by default. +
-  Possible values are as follows: +
-  `datasourcelookupname`;;
-    The JNDI lookup name of the data source used to store job
-    information. By default, the batch runtime uses the default data
-    source `jdbc/__TimerPool`.
-  `executorservicelookupname`;;
-    The JNDI lookup name of the managed executor service used to provide
-    threads to jobs. By default, the batch runtime uses the default
-    managed executor service
-    `concurrent/__defaultManagedExecutorService`.
-`--header`::
-`-h`::
-  Specifies whether column headings are displayed when the `--long`
-  option is used. The default value is `true`. To suppress the headings,
-  set the `--header` option to `false`.
-
-[[sthref1367]]
-
-Examples
-
-[[GSRFM864]][[sthref1368]]
-
-Example 1   Listing Batch Runtime Configuration
-
-The following example lists the configuration of the batch runtime for
-the default server instance.
-
-[source,oac_no_warn]
-----
-asadmin> list-batch-runtime-configuration
-DATASOURCELOOKUPNAME     EXECUTORSERVICELOOKUPNAME
-jdbc/_default            concurrent/__defaultManagedExecutorService
-Command list-batch-runtime-configuration executed successfully.
-----
-
-[[sthref1369]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1370]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:set-batch-runtime-configuration.html#set-batch-runtime-configuration-1[`set-batch-runtime-configuration`(1)],
-link:list-batch-jobs.html#list-batch-jobs-1[`list-batch-jobs`(1)],
-link:list-batch-job-executions.html#list-batch-job-executions-1[`list-batch-job-executions`(1)],
-link:list-batch-job-steps.html#list-batch-job-steps-1[`list-batch-job-steps`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-clusters.adoc b/docs/reference-manual/src/main/jbake/content/list-clusters.adoc
deleted file mode 100644
index fa5d27c..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-clusters.adoc
+++ /dev/null
@@ -1,140 +0,0 @@
-type=page
-status=published
-title=list-clusters
-next=list-commands.html
-prev=list-batch-runtime-configuration.html
-~~~~~~
-list-clusters
-=============
-
-[[list-clusters-1]][[GSRFM00153]][[list-clusters]]
-
-list-clusters
--------------
-
-lists existing clusters in a domain
-
-[[sthref1371]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-clusters [--help] 
-[target]
-----
-
-[[sthref1372]]
-
-Description
-
-The `list-clusters` subcommand lists existing clusters in a domain. The
-list can be filtered by cluster, instance, node, or configuration. For
-each cluster that is listed, the subcommand indicates whether the
-cluster is running.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1373]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1374]]
-
-Operands
-
-target::
-  Filters the list of clusters by specifying the target for which the
-  clusters are to be listed. Valid values are as follows: +
-  `domain`;;
-    Lists all clusters in the domain (default).
-  cluster-name;;
-    Lists only the specified cluster.
-  instance-name;;
-    Lists the cluster of which the specified instance is a member.
-  node-name;;
-    Lists the clusters that contain an instance that resides on the
-    specified node. For example, if instance `pmdi1` in cluster `pmdc`
-    and instance `ymli1` in cluster `ymlc` reside on node `n1`, `pmdc`
-    and `ymlc` are listed.
-  configuration-name;;
-    Lists all clusters that contain instances whose configuration is
-    defined by the named configuration.
-
-[[sthref1375]]
-
-Examples
-
-[[GSRFM641]][[sthref1376]]
-
-Example 1   Listing All Clusters in a Domain
-
-This example lists all clusters in the current domain.
-
-[source,oac_no_warn]
-----
-asadmin> list-clusters
-pmdclust not running
-ymlclust not running
-
-Command list-clusters executed successfully.
-----
-
-[[GSRFM642]][[sthref1377]]
-
-Example 2   Displaying the Status of a Cluster
-
-This example displays status of the cluster `ymlclust`, which is not
-running.
-
-[source,oac_no_warn]
-----
-asadmin> list-clusters ymlclust
-ymlclust not running
-
-Command list-clusters executed successfully.
-----
-
-[[GSRFM643]][[sthref1378]]
-
-Example 3   Listing All Clusters That Are Associated With a Node
-
-This example lists the clusters that contain an instance that resides on
-the node `sj02`.
-
-[source,oac_no_warn]
-----
-asadmin> list-clusters sj02
-ymlclust not running
-
-Command list-clusters executed successfully.
-----
-
-[[sthref1379]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1380]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-cluster.html#create-cluster-1[`create-cluster`(1)],
-link:delete-cluster.html#delete-cluster-1[`delete-cluster`(1)],
-link:start-cluster.html#start-cluster-1[`start-cluster`(1)],
-link:stop-cluster.html#stop-cluster-1[`stop-cluster`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-commands.adoc b/docs/reference-manual/src/main/jbake/content/list-commands.adoc
deleted file mode 100644
index 9863967..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-commands.adoc
+++ /dev/null
@@ -1,226 +0,0 @@
-type=page
-status=published
-title=list-commands
-next=list-components.html
-prev=list-clusters.html
-~~~~~~
-list-commands
-=============
-
-[[list-commands-1]][[GSRFM00154]][[list-commands]]
-
-list-commands
--------------
-
-lists available commands
-
-[[sthref1381]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-commands [--help] 
-[--localonly={false|true}] [--remoteonly={false|true}] 
-
-pattern-list
-----
-
-[[sthref1382]]
-
-Description
-
-The `list-commands` subcommand lists the `asadmin` subcommands.
-
-By default, the `list-commands` subcommand displays a list of local
-subcommands followed by a list of remote subcommands. You can specify
-that only remote subcommands or only local subcommands are listed and
-that only subcommands whose names contain a specified text string are
-listed.
-
-This subcommand is supported in local mode and remote mode.
-
-[[sthref1383]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--localonly`::
-  If this option is set to true, only local commands are listed. Default
-  is false. +
-  If this option is set to true, the `--remoteonly` option must be set
-  to false. Otherwise, an error occurs.
-`--remoteonly`::
-  If this option is set to true, only remote commands are listed.
-  Default is false. +
-  If this option is set to true, the `--localonly` option must be set to
-  false. Otherwise, an error occurs.
-
-[[sthref1384]]
-
-Operands
-
-pattern-list::
-  A space-separated list of text strings on which to filter the list of
-  subcommands. Only the subcommands that contain any one of the
-  specified text strings is listed.
-
-[[sthref1385]]
-
-Examples
-
-[[GSRFM644]][[sthref1386]]
-
-Example 1   Listing the Local Subcommands
-
-This example lists only the local subcommands.
-
-[source,oac_no_warn]
-----
-asadmin> list-commands --localonly=true
-********** Local Commands **********
-change-admin-password
-change-master-password
-create-domain
-create-service
-delete-domain
-export
-help
-list-commands
-list-domains
-login
-monitor
-multimode
-restart-domain
-start-database
-start-domain
-stop-database
-stop-domain
-unset
-verify-domain-xml
-version
-Command list-commands executed successfully.
-----
-
-[[GSRFM645]][[sthref1387]]
-
-Example 2   Filtering the Subcommands That Are Listed
-
-This example lists only the subcomands whose names contain the text
-`configure` or `set`.
-
-[source,oac_no_warn]
-----
-asadmin> list-commands configure set
-********** Local Commands **********
-setup-ssh
-unset
-
-********** Remote Commands **********
-configure-jms-cluster                   set-log-levels
-configure-lb-weight                     set-web-context-param
-configure-ldap-for-admin                set-web-env-entry
-set                                     unset-web-context-param
-set-log-attributes                      unset-web-env-entry
-
-Command list-commands executed successfully.
-----
-
-[[GSRFM646]][[sthref1388]]
-
-Example 3   Listing All Subcommands
-
-This example first displays a list of the local subcommands, followed by
-a partial list of the remote subcommands.
-
-[source,oac_no_warn]
-----
-asadmin> list-commands
-********** Local Commands **********
-change-admin-password
-change-master-password
-create-domain
-create-service
-delete-domain
-export
-help
-list-commands
-list-domains
-login
-monitor
-multimode
-restart-domain
-start-database
-start-domain
-stop-database
-stop-domain
-unset
-verify-domain-xml
-version
-********** Remote Commands **********
-__locations                             enable
-add-resources                           enable-monitoring
-configure-ldap-for-admin                flush-jmsdest
-create-admin-object                     freeze-transaction-service
-create-audit-module                     generate-jvm-report
-create-auth-realm                       get
-create-connector-connection-pool        get-client-stubs
-create-connector-resource               get-host-and-port
-create-connector-security-map           jms-ping
-create-connector-work-security-map      list
-create-custom-resource                  list-admin-objects
-create-file-user                        list-app-refs
-create-http                             list-applications
-create-http-listener                    list-audit-modules
-create-iiop-listener                    list-auth-realms
-create-javamail-resource                list-components
-create-jdbc-connection-pool             list-connector-connection-pools
-create-jdbc-resource                    list-connector-resources
-create-jms-host                         list-connector-security-maps
-create-jms-resource                     list-connector-work-security-maps
-create-jmsdest                          list-containers
-create-jndi-resource                    list-custom-resources
-create-jvm-options                      list-file-groups
-create-lifecycle-module                 list-file-users
-create-message-security-provider        list-http-listeners
-create-network-listener                 list-iiop-listeners
-create-password-alias                   list-javamail-resources
-create-profiler                         list-jdbc-connection-pools
-create-protocol                         list-jdbc-resources
-create-resource-adapter-config          list-jms-hosts
-create-resource-ref                     list-jms-resources
-create-ssl                              list-jmsdest
-create-system-properties                list-jndi-entries
-create-threadpool                       list-jndi-resources
-create-transport                        list-jvm-options
-create-virtual-server                   list-lifecycle-modules
-delete-admin-object                     list-logger-levels
-delete-audit-module                     list-message-security-providers
-...
-----
-
-[[sthref1389]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1390]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:list-components.html#list-components-1[`list-components`(1)],
-link:list-containers.html#list-containers-1[`list-containers`(1)],
-link:list-modules.html#list-modules-1[`list-modules`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-components.adoc b/docs/reference-manual/src/main/jbake/content/list-components.adoc
deleted file mode 100644
index f6bf27e..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-components.adoc
+++ /dev/null
@@ -1,146 +0,0 @@
-type=page
-status=published
-title=list-components
-next=list-configs.html
-prev=list-commands.html
-~~~~~~
-list-components
-===============
-
-[[list-components-1]][[GSRFM00155]][[list-components]]
-
-list-components
----------------
-
-lists deployed components
-
-[[sthref1391]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-components [--help] 
-[--long={false|true}] [--resources] [--subcomponents]
-[--type type] [target]
-----
-
-[[sthref1392]]
-
-Description
-
-
-[NOTE]
-=======================================================================
-
-The `list-components` subcommand is deprecated. Use the
-`list-applications` subcommand instead.
-
-=======================================================================
-
-
-The `list-components` subcommand lists all deployed Java EE components.
-
-If the `--type` option is not specified, all components are listed. If
-the type option is specified, you must specify a type. The possible
-types are listed in the Options section in this help page.
-
-If multiple versions of a module or application are deployed, this
-subcommand lists all versions. To list which version is enabled, set the
-`--long` option to `true`. For more information about module and
-application versions, see "link:../application-deployment-guide/overview.html#GSDPG00324[Module and Application
-Versions]" in GlassFish Server Open Source Edition Application
-Deployment Guide.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1393]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--long`::
-  If `true`, displays whether each module or application listed is
-  enabled. The default is `false`.
-`--resources`::
-  Lists the application-scoped resources for each component. If the
-  `--subcomponents` option is also used, lists the application-scoped
-  resources for each component within an application.
-`--subcomponents`::
-  Lists the subcomponents of each component. The subcomponents listed
-  depend on the component type. For example, for a Java EE application
-  (EAR file), modules are listed. For a web application, servlets and
-  JSP pages are listed. For an EJB module, EJB subcomponents are listed.
-`--type`::
-  Specifies the type of the components that are to be listed. The
-  options are as follows: +
-  * `application`
-  * `appclient`
-  * `connector`
-  * `ejb`
-  * `web`
-  * `webservice` +
-  If no type is specified, all components are listed.
-
-[[sthref1394]]
-
-Operands
-
-target::
-  This is the name of the target upon which the subcommand operates. The
-  valid values are: +
-  `server`;;
-    Lists the components for the default server instance `server` and is
-    the default value.
-  `domain`;;
-    Lists the components for the domain.
-  cluster_name;;
-    Lists the components for the cluster.
-  instance_name;;
-    Lists the components for a particular stand-alone server instance.
-
-[[sthref1395]]
-
-Examples
-
-[[GSRFM647]][[sthref1396]]
-
-Example 1   Listing Components
-
-This example lists the connector components. (`cciblackbox-tx.rar` was
-deployed.)
-
-[source,oac_no_warn]
-----
-asadmin> list-components --type connector
-cciblackbox-tx <connector>
-Command list-components executed successfully
-----
-
-[[sthref1397]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1398]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:list-applications.html#list-applications-1[`list-applications`(1)],
-link:show-component-status.html#show-component-status-1[`show-component-status`(1)]
-
-link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition Application Deployment
-Guide]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-configs.adoc b/docs/reference-manual/src/main/jbake/content/list-configs.adoc
deleted file mode 100644
index 379e7f6..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-configs.adoc
+++ /dev/null
@@ -1,111 +0,0 @@
-type=page
-status=published
-title=list-configs
-next=list-connector-connection-pools.html
-prev=list-components.html
-~~~~~~
-list-configs
-============
-
-[[list-configs-1]][[GSRFM00156]][[list-configs]]
-
-list-configs
-------------
-
-lists named configurations
-
-[[sthref1399]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-configs [--help] 
-[target]
-----
-
-[[sthref1400]]
-
-Description
-
-The `list—configs` subcommand lists named configurations in the
-configuration of the domain administration server (DAS). The list can be
-filtered by cluster, instance, or named configuration.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1401]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1402]]
-
-Operands
-
-target::
-  Filters the list of configurations. Valid values are as follows: +
-  `domain`;;
-    Lists all named configurations in the current domain.
-  cluster-name;;
-    Lists the named configuration that defines the configuration of
-    instances in the specified cluster.
-  instance-name;;
-    Lists the named configuration that defines the configuration of the
-    specified instance.
-  configuration-name;;
-    Lists the specified named configuration. Use this option to
-    determine whether a named configuration exits.
-
-[[sthref1403]]
-
-Examples
-
-[[GSRFM648]][[sthref1404]]
-
-Example 1   Listing All Named Configurations in a Domain
-
-This example lists all named configurations in the current domain.
-
-[source,oac_no_warn]
-----
-asadmin> list-configs
-server-config
-default-config
-pmdclust-config
-pmdsharedconfig
-pmdcpinst-config
-ymlclust-config
-il1-config
-il2-config
-
-Command list-configs executed successfully.
-----
-
-[[sthref1405]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1406]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:copy-config.html#copy-config-1[`copy-config`(1)],
-link:delete-config.html#delete-config-1[`delete-config`(1)]
-
-link:configuration.html#configuration-5asc[`configuration`(5ASC)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-connector-connection-pools.adoc b/docs/reference-manual/src/main/jbake/content/list-connector-connection-pools.adoc
deleted file mode 100644
index 80faaa6..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-connector-connection-pools.adoc
+++ /dev/null
@@ -1,82 +0,0 @@
-type=page
-status=published
-title=list-connector-connection-pools
-next=list-connector-resources.html
-prev=list-configs.html
-~~~~~~
-list-connector-connection-pools
-===============================
-
-[[list-connector-connection-pools-1]][[GSRFM00157]][[list-connector-connection-pools]]
-
-list-connector-connection-pools
--------------------------------
-
-lists the existing connector connection pools
-
-[[sthref1407]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-connector-connection-pools [--help]
-----
-
-[[sthref1408]]
-
-Description
-
-The `list-connector-connection-pools` subcommand list connector
-connection pools that have been created.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1409]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1410]]
-
-Examples
-
-[[GSRFM649]][[sthref1411]]
-
-Example 1   Listing the Connector Connection Pools
-
-This example lists the existing connector connection pools.
-
-[source,oac_no_warn]
-----
-asadmin> list-connector-connection-pools
-jms/qConnPool
-Command list-connector-connection-pools executed successfully
-----
-
-[[sthref1412]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1413]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-connector-connection-pool.html#create-connector-connection-pool-1[`create-connector-connection-pool`(1)],
-link:delete-connector-connection-pool.html#delete-connector-connection-pool-1[`delete-connector-connection-pool`(1)],
-link:ping-connection-pool.html#ping-connection-pool-1[`ping-connection-pool`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-connector-resources.adoc b/docs/reference-manual/src/main/jbake/content/list-connector-resources.adoc
deleted file mode 100644
index 9eb92cb..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-connector-resources.adoc
+++ /dev/null
@@ -1,99 +0,0 @@
-type=page
-status=published
-title=list-connector-resources
-next=list-connector-security-maps.html
-prev=list-connector-connection-pools.html
-~~~~~~
-list-connector-resources
-========================
-
-[[list-connector-resources-1]][[GSRFM00158]][[list-connector-resources]]
-
-list-connector-resources
-------------------------
-
-lists all connector resources
-
-[[sthref1414]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-connector-resources [--help] 
-[target]
-----
-
-[[sthref1415]]
-
-Description
-
-The `list-connector-resources` subcommand lists all connector resources.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1416]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1417]]
-
-Operands
-
-target::
-  The target for which the connector resources are to be listed. Valid
-  values are as follows: +
-  `server`;;
-    Lists the connector resources on the default server instance. This
-    is the default value.
-  `domain`;;
-    Lists the connector resources for the domain.
-  cluster-name;;
-    Lists the connector resources on all server instances in the
-    specified cluster.
-  instance-name;;
-    Lists the connector resources on a specified server instance.
-
-[[sthref1418]]
-
-Examples
-
-[[GSRFM650]][[sthref1419]]
-
-Example 1   Listing Connector Resources
-
-This example lists all existing connector resources.
-
-[source,oac_no_warn]
-----
-asadmin> list-connector-resources
-jms/qConnFactory
-Command list-connector-resources executed successfully.
-----
-
-[[sthref1420]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1421]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-connector-resource.html#create-connector-resource-1[`create-connector-resource`(1)],
-link:delete-connector-resource.html#delete-connector-resource-1[`delete-connector-resource`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-connector-security-maps.adoc b/docs/reference-manual/src/main/jbake/content/list-connector-security-maps.adoc
deleted file mode 100644
index bf4a810..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-connector-security-maps.adoc
+++ /dev/null
@@ -1,110 +0,0 @@
-type=page
-status=published
-title=list-connector-security-maps
-next=list-connector-work-security-maps.html
-prev=list-connector-resources.html
-~~~~~~
-list-connector-security-maps
-============================
-
-[[list-connector-security-maps-1]][[GSRFM00159]][[list-connector-security-maps]]
-
-list-connector-security-maps
-----------------------------
-
-lists the security maps belonging to the specified connector connection
-pool
-
-[[sthref1422]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-connector-security-maps [--help] 
-[--securitymap securitymap]
-[--verbose={false|true}] [--target target]
-pool-name
-----
-
-[[sthref1423]]
-
-Description
-
-The `list-connector-security-maps` subcommand lists the security maps
-belonging to the specified connector connection pool.
-
-For this subcommand to succeed, you must have first created a connector
-connection pool using the `create-connector-connection-pool` subcommand.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1424]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--securitymap`::
-  Specifies the name of the security map contained within the connector
-  connection pool from which the identity and principals should be
-  listed. With this option, `--verbose` is redundant.
-`--verbose`::
-  If set to `true`, returns a list including the identity, principals,
-  and security name. The default is `false`.
-`--target`::
-  Do not specify this option. This option is retained for compatibility
-  with earlier releases. If you specify this option, a syntax error does
-  not occur. Instead, the subcommand runs successfully and displays a
-  warning message that the option is ignored.
-
-[[sthref1425]]
-
-Operands
-
-pool-name::
-  Name of the connector connection pool for which you want to list
-  security maps.
-
-[[sthref1426]]
-
-Examples
-
-[[GSRFM651]][[sthref1427]]
-
-Example 1   Listing the Connector Security Maps
-
-This example lists the existing connector security maps for the pool
-named `connector-Pool1`.
-
-[source,oac_no_warn]
-----
-asadmin> list-connector-security-maps connector-Pool1
-securityMap1
-Command list-connector-security-maps executed successfully.
-----
-
-[[sthref1428]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1429]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-connector-security-map.html#create-connector-security-map-1[`create-connector-security-map`(1)],
-link:delete-connector-security-map.html#delete-connector-security-map-1[`delete-connector-security-map`(1)],
-link:update-connector-security-map.html#update-connector-security-map-1[`update-connector-security-map`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-connector-work-security-maps.adoc b/docs/reference-manual/src/main/jbake/content/list-connector-work-security-maps.adoc
deleted file mode 100644
index bcb577e..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-connector-work-security-maps.adoc
+++ /dev/null
@@ -1,99 +0,0 @@
-type=page
-status=published
-title=list-connector-work-security-maps
-next=list-containers.html
-prev=list-connector-security-maps.html
-~~~~~~
-list-connector-work-security-maps
-=================================
-
-[[list-connector-work-security-maps-1]][[GSRFM00160]][[list-connector-work-security-maps]]
-
-list-connector-work-security-maps
----------------------------------
-
-lists the work security maps belonging to the specified resource adapter
-
-[[sthref1430]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-connector-work-security-maps [--help] 
-[--securitymap securitymap]
-resource_adapter_name
-----
-
-[[sthref1431]]
-
-Description
-
-The `list-connector-work-security-maps` subcommand lists the work
-security maps belonging to the specified resource adapter.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1432]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--securitymap`::
-  Specifies the name of the security map contained within the resource
-  adapter from which the identity and principals should be listed.
-
-[[sthref1433]]
-
-Operands
-
-resource_adapter_name::
-  The name of the resource adapter for which you want to list security
-  maps.
-
-[[sthref1434]]
-
-Examples
-
-[[GSRFM652]][[sthref1435]]
-
-Example 1   Listing Connector Work Security Maps
-
-This example lists the current connector work security maps for the
-resource adapter named `my_resource_adapter`.
-
-[source,oac_no_warn]
-----
-asadmin> list-connector-work-security-maps my_resource_adapter
-workSecurityMap1: EIS principal=eis-principal-2, mapped principal=server-principal-2
-workSecurityMap1: EIS principal=eis-principal-1, mapped principal=server-principal-1
-workSecurityMap2: EIS principal=eis-principal-2, mapped principal=server-principal-2
-workSecurityMap2: EIS principal=eis-principal-1, mapped principal=server-principal-1
-Command list-connector-work-security-maps executed successfully.
-----
-
-[[sthref1436]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1437]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-connector-work-security-map.html#create-connector-work-security-map-1[`create-connector-work-security-map`(1)],
-link:delete-connector-work-security-map.html#delete-connector-work-security-map-1[`delete-connector-work-security-map`(1)],
-link:update-connector-work-security-map.html#update-connector-work-security-map-1[`update-connector-work-security-map`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-containers.adoc b/docs/reference-manual/src/main/jbake/content/list-containers.adoc
deleted file mode 100644
index f33faa8..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-containers.adoc
+++ /dev/null
@@ -1,94 +0,0 @@
-type=page
-status=published
-title=list-containers
-next=list-context-services.html
-prev=list-connector-work-security-maps.html
-~~~~~~
-list-containers
-===============
-
-[[list-containers-1]][[GSRFM00161]][[list-containers]]
-
-list-containers
----------------
-
-lists application containers
-
-[[sthref1438]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-containers [--help]
-----
-
-[[sthref1439]]
-
-Description
-
-The `list-containers` subcommand displays a list of application
-containers.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1440]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1441]]
-
-Examples
-
-[[GSRFM653]][[sthref1442]]
-
-Example 1   Listing the Application Containers
-
-This example lists the current application containers.
-
-[source,oac_no_warn]
-----
-asadmin> list-containers
-List all known application containers
-Container : grizzly
-Container : ejb
-Container : webservices
-Container : ear
-Container : appclient
-Container : connector
-Container : jpa
-Container : web
-Container : osgi
-Container : security
-Container : webbeans
-
-Command list-containers executed successfully.
-----
-
-[[sthref1443]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1444]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:list-commands.html#list-commands-1[`list-commands`(1)],
-link:list-components.html#list-components-1[`list-components`(1)],
-link:list-modules.html#list-modules-1[`list-modules`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-context-services.adoc b/docs/reference-manual/src/main/jbake/content/list-context-services.adoc
deleted file mode 100644
index b406f4c..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-context-services.adoc
+++ /dev/null
@@ -1,102 +0,0 @@
-type=page
-status=published
-title=list-context-services
-next=list-custom-resources.html
-prev=list-containers.html
-~~~~~~
-list-context-services
-=====================
-
-[[list-context-services-1]][[GSRFM865]][[list-context-services]]
-
-list-context-services
----------------------
-
-lists context service resources
-
-[[sthref1445]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-context-services [--help]
-[target]
-----
-
-[[sthref1446]]
-
-Description
-
-The `list-context-services` subcommand lists context service resources.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1447]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1448]]
-
-Operands
-
-target::
-  Specifies the target for which context service resources are to be
-  listed. Valid targets are: +
-  `server`;;
-    Lists the resources on the default server instance. This is the
-    default value.
-  `domain`;;
-    Lists the resources for the domain.
-  cluster-name;;
-    Lists the resources on all server instances in the specified
-    cluster.
-  instance-name;;
-    Lists the resources on a specified server instance.
-
-[[sthref1449]]
-
-Examples
-
-[[GSRFM866]][[sthref1450]]
-
-Example 1   Listing Context Service Resources
-
-This example lists context service resources on the default server
-instance.
-
-[source,oac_no_warn]
-----
-asadmin> list-context-services
-concurrent/__defaultContextService
-concurrent/myContextService1
-concurrent/myContextService2
-Command list-context-services executed successfully.
-----
-
-[[sthref1451]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1452]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-context-service.html#create-context-service-1[`create-context-service`(1)],
-link:delete-context-service.html#delete-context-service-1[`delete-context-service`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-custom-resources.adoc b/docs/reference-manual/src/main/jbake/content/list-custom-resources.adoc
deleted file mode 100644
index 03862aa..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-custom-resources.adoc
+++ /dev/null
@@ -1,114 +0,0 @@
-type=page
-status=published
-title=list-custom-resources
-next=list-domains.html
-prev=list-context-services.html
-~~~~~~
-list-custom-resources
-=====================
-
-[[list-custom-resources-1]][[GSRFM00162]][[list-custom-resources]]
-
-list-custom-resources
----------------------
-
-gets all custom resources
-
-[[sthref1453]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-custom-resources [--help] 
-[target]
-----
-
-[[sthref1454]]
-
-Description
-
-The `list-custom-resources` subcommand lists the custom resources.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1455]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1456]]
-
-Operands
-
-target::
-  This operand specifies the location of the custom resources. Valid
-  targets are: +
-  `server`;;
-    Lists the resources on the default server instance. This is the
-    default value
-  `domain`;;
-    Lists the resources in the domain.
-  cluster_name;;
-    Lists the resources for every server instance in the cluster.
-  instance_name;;
-    Lists the resources for a particular server instance.
-
-[[sthref1457]]
-
-Examples
-
-[[GSRFM654]][[sthref1458]]
-
-Example 1   Listing Custom Resources
-
-This example lists the current custom resources.
-
-[source,oac_no_warn]
-----
-asadmin> list-custom-resources
-sample_custom_resource01
-sample_custom_resource02
-Command list-custom-resources executed successfully.
-----
-
-[[GSRFM655]][[sthref1459]]
-
-Example 2   Using the list-custom-resources command with a target
-
-The following example displays the usage of this command.
-
-[source,oac_no_warn]
-----
-asadmin> list-custom-resources --user admin --passwordfile 
-passwords.txt --host plum --port 4848 target6 
-
-sample_custom_resource03
-sample_custom_resource04
-Command list-custom-resources executed successfully.
-----
-
-[[sthref1460]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1461]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-custom-resource.html#create-custom-resource-1[`create-custom-resource`(1)],link:delete-custom-resource.html#delete-custom-resource-1[`delete-custom-resource`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-domains.adoc b/docs/reference-manual/src/main/jbake/content/list-domains.adoc
deleted file mode 100644
index eb0233f..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-domains.adoc
+++ /dev/null
@@ -1,106 +0,0 @@
-type=page
-status=published
-title=list-domains
-next=list-file-groups.html
-prev=list-custom-resources.html
-~~~~~~
-list-domains
-============
-
-[[list-domains-1]][[GSRFM00163]][[list-domains]]
-
-list-domains
-------------
-
-lists the domains in the specified directory
-
-[[sthref1462]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-domains [--help]
-[--domaindir domaindir]
-[--long={false|true}]
-[--header={false|true}]
-----
-
-[[sthref1463]]
-
-Description
-
-The `list-domains` subcommand lists the domains in the specified domains
-directory. If the domains directory is not specified, the domains in the
-default directory are listed. If there is more that one domains
-directory, the `--domaindir` option must be specified. The status of
-each domain is included.
-
-This subcommand is supported in local mode only.
-
-[[sthref1464]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--domaindir`::
-  The directory where the domains are to be listed. If specified, the
-  path must be accessible in the files stem. If not specified, the
-  domains in the domain root directory are listed. The default location
-  of the domain root directory is as-install`/domains`.
-`--long`::
-`-l`::
-  Displays detailed information about the administration servers in the
-  listed domains, including host names and port numbers. The default
-  value is `false`.
-`--header`::
-`-h`::
-  Specifies whether a header is displayed when the `--long` option is
-  used. The default value is `true`. To suppress the header, set the
-  `--header` option to `false`.
-
-[[sthref1465]]
-
-Examples
-
-[[GSRFM656]][[sthref1466]]
-
-Example 1   Listing Domains
-
-This example lists the domains in the default directory.
-
-[source,oac_no_warn]
-----
-asadmin> list-domains
-Name: domain1 Status: Running
-Name: domain2 Status: Not running
-Name: domain4 Status: Running, restart required to apply configuration changes
-Command list-domains executed successfully
-----
-
-[[sthref1467]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1468]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-domain.html#create-domain-1[`create-domain`(1)],
-link:delete-domain.html#delete-domain-1[`delete-domain`(1)],
-link:start-domain.html#start-domain-1[`start-domain`(1)],
-link:stop-domain.html#stop-domain-1[`stop-domain`(1)],
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-file-groups.adoc b/docs/reference-manual/src/main/jbake/content/list-file-groups.adoc
deleted file mode 100644
index 0ed1d97..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-file-groups.adoc
+++ /dev/null
@@ -1,104 +0,0 @@
-type=page
-status=published
-title=list-file-groups
-next=list-file-users.html
-prev=list-domains.html
-~~~~~~
-list-file-groups
-================
-
-[[list-file-groups-1]][[GSRFM00164]][[list-file-groups]]
-
-list-file-groups
-----------------
-
-lists file groups
-
-[[sthref1469]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-file-groups [--help] 
-[--name username] [--authrealmname auth_realm_name] 
-[--target target]
-----
-
-[[sthref1470]]
-
-Description
-
-The `list-file-groups` subcommand lists the file users and groups
-supported by the file realm authentication. This subcommand lists
-available groups in the file user. If the `--name` option is not
-specified, all groups are listed.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1471]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--name`::
-  Identifies the name of the file user for whom the groups will be
-  listed.
-`--authrealmname`::
-  The name of the authentication realm for which to list available
-  groups.
-`--target`::
-  This option specifies which configurations you can list. Valid targets
-  are: +
-  `server`;;
-    Lists the file groups in the current server. This is the default
-    value.
-  cluster_name;;
-    Lists the file groups in a cluster.
-  instance_name;;
-    Lists the file groups for a particular instance.
-
-[[sthref1472]]
-
-Examples
-
-[[GSRFM657]][[sthref1473]]
-
-Example 1   Listing Groups in all File Realms
-
-This example list all file realm groups defined for the server.
-
-[source,oac_no_warn]
-----
-asadmin> list-file-groups
-staff
-manager
-Command list-file-groups executed successfully
-----
-
-[[sthref1474]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1475]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-file-user.html#create-file-user-1[`create-file-user`(1)],
-link:delete-file-user.html#delete-file-user-1[`delete-file-user`(1)],
-link:list-file-users.html#list-file-users-1[`list-file-users`(1)],
-link:update-file-user.html#update-file-user-1[`update-file-user`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-file-users.adoc b/docs/reference-manual/src/main/jbake/content/list-file-users.adoc
deleted file mode 100644
index cf6135e..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-file-users.adoc
+++ /dev/null
@@ -1,102 +0,0 @@
-type=page
-status=published
-title=list-file-users
-next=list-http-lb-configs.html
-prev=list-file-groups.html
-~~~~~~
-list-file-users
-===============
-
-[[list-file-users-1]][[GSRFM00165]][[list-file-users]]
-
-list-file-users
----------------
-
-lists the file users
-
-[[sthref1476]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-file-users [--help] 
-[--authrealmname auth_realm_name] [target]
-----
-
-[[sthref1477]]
-
-Description
-
-The `list-file-users` subcommand displays a list of file users supported
-by file realm authentication.
-
-[[sthref1478]]
-
-Options
-
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--authrealmname`::
-  Lists only the users in the specified authentication realm.
-
-[[sthref1479]]
-
-Operands
-
-target::
-  Specifies the target for which you want to list file users. The
-  following values are valid: +
-  `server`;;
-    Lists the file users on the default server instance. This is the
-    default value.
-  configuration_name;;
-    Lists the file users in the specified configuration.
-  cluster_name;;
-    Lists the file users on all server instances in the specified
-    cluster.
-  instance_name;;
-    Lists the file users on a specified server instance.
-
-[[sthref1480]]
-
-Examples
-
-[[GSRFM658]][[sthref1481]]
-
-Example 1   Listing Users in a Specific File Realm
-
-The following example lists the users in the file realm named
-`sample_file_realm`.
-
-[source,oac_no_warn]
-----
-asadmin> list-file-users --authrealmname sample_file_realm
-sample_user05
-sample_user08
-sample_user12
-Command list-file-users executed successfully
-----
-
-[[sthref1482]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1483]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-file-user.html#create-file-user-1[`create-file-user`(1)],
-link:delete-file-user.html#delete-file-user-1[`delete-file-user`(1)],
-link:list-file-groups.html#list-file-groups-1[`list-file-groups`(1)],
-link:update-file-user.html#update-file-user-1[`update-file-user`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-http-lb-configs.adoc b/docs/reference-manual/src/main/jbake/content/list-http-lb-configs.adoc
deleted file mode 100644
index 9afc959..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-http-lb-configs.adoc
+++ /dev/null
@@ -1,118 +0,0 @@
-type=page
-status=published
-title=list-http-lb-configs
-next=list-http-lbs.html
-prev=list-file-users.html
-~~~~~~
-list-http-lb-configs
-====================
-
-[[list-http-lb-configs-1]][[GSRFM00166]][[list-http-lb-configs]]
-
-list-http-lb-configs
---------------------
-
-lists load balancer configurations
-
-[[sthref1484]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-http-lb-configs [--help] 
-[target]
-----
-
-[[sthref1485]]
-
-Description
-
-The `list-http-lb-configs` subcommand lists the load balancer
-configurations. List them all or list them by the cluster or server
-instance they reference.
-
-
-[NOTE]
-=======================================================================
-
-This subcommand is only applicable to Oracle GlassFish Server. This
-subcommand is not applicable to GlassFish Server Open Source Edition.
-
-=======================================================================
-
-
-[[sthref1486]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1487]]
-
-Operands
-
-target::
-  Lists the load balancers by target. Valid values are: +
-  * cluster_name- The name of a target cluster.
-  * instance_name- The name of a target server instance.
-
-[[sthref1488]]
-
-Examples
-
-[[GSRFM659]][[sthref1489]]
-
-Example 1   Listing Load Balancer Configurations Without a Target
-
-This example lists all load balancer configurations defined for all
-\{product---name} clusters and instances.
-
-[source,oac_no_warn]
-----
-asadmin> list-http-lb-configs
-
-mycluster-http-lb-config
-serverinstlb
-Command list-http-lb-configs executed successfully.
-----
-
-[[GSRFM660]][[sthref1490]]
-
-Example 2   Listing Load Balancer Configurations for a Specific Target
-
-This example lists the load balancer configuration defined for a cluster
-named `mycluster`.
-
-[source,oac_no_warn]
-----
-asadmin> list-http-lb-configs mycluster
-
-mycluster-http-lb-config
-Command list-http-lb-configs executed successfully.
-----
-
-[[sthref1491]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1492]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-http-lb-config.html#create-http-lb-config-1[`create-http-lb-config`(1)],
-link:delete-http-lb-config.html#delete-http-lb-config-1[`delete-http-lb-config`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-http-lbs.adoc b/docs/reference-manual/src/main/jbake/content/list-http-lbs.adoc
deleted file mode 100644
index 0957051..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-http-lbs.adoc
+++ /dev/null
@@ -1,130 +0,0 @@
-type=page
-status=published
-title=list-http-lbs
-next=list-http-listeners.html
-prev=list-http-lb-configs.html
-~~~~~~
-list-http-lbs
-=============
-
-[[list-http-lbs-1]][[GSRFM00167]][[list-http-lbs]]
-
-list-http-lbs
--------------
-
-lists load balancers
-
-[[sthref1493]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-http-lbs [--help]
-[--long={false|true}]
-[--output output]
-[--header={false|true}]
-[name]
-----
-
-[[sthref1494]]
-
-Description
-
-Use the `list-http-lbs` subcommand to list physical load balancers.
-
-
-[NOTE]
-=======================================================================
-
-This subcommand is only applicable to Oracle GlassFish Server. This
-subcommand is not applicable to GlassFish Server Open Source Edition.
-
-=======================================================================
-
-
-[[sthref1495]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--long`::
-`-l`::
-  Displays detailed information about each load balancer. The default
-  value is `false.`
-`--output`::
-`-o`::
-  Displays specific details about each load balancer. Use a
-  comma-separated list to specify the details you want to display and
-  their order. For example,
-  `list-http-lbs --output name,device-host,device-port`. The values are
-  case-insensitive. +
-  Possible values are as follows: +
-  `device-host`;;
-    Displays the device host or the IP address of the load balancing
-    device. This host or IP is where the physical load balancer resides.
-  `name`;;
-    Displays the name of the load balancer.
-  `auto-apply-enabled`;;
-    Displays whether the Auto Apply feature is enabled.
-  `lb-config-name`;;
-    Displays the name of the load balancer configuration.
-  `device-port`;;
-    Displays the port used to communicate with the load balancing
-    device.
-`--header`::
-`-h`::
-  Specifies whether column headings are displayed when the `--long`
-  option is used. The default value is `true`. To suppress the headings,
-  set the `--header` option to `false`.
-
-[[sthref1496]]
-
-Operands
-
-name::
-  The name of the load balancer for which you want to display details.
-
-[[sthref1497]]
-
-Examples
-
-[[GSRFM661]][[sthref1498]]
-
-Example 1   Listing Physical Load Balancers for a Domain
-
-This example lists all physical load balancers defined for a domain.
-
-[source,oac_no_warn]
-----
-asadmin> list-http-lbs
-
-lb1
-lb2
-Command list-http-lbs executed successfully.
-----
-
-[[sthref1499]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1500]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-http-lb.html#create-http-lb-1[`create-http-lb`(1)],
-link:delete-http-lb.html#delete-http-lb-1[`delete-http-lb`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-http-listeners.adoc b/docs/reference-manual/src/main/jbake/content/list-http-listeners.adoc
deleted file mode 100644
index fc2b2e1..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-http-listeners.adoc
+++ /dev/null
@@ -1,103 +0,0 @@
-type=page
-status=published
-title=list-http-listeners
-next=list-iiop-listeners.html
-prev=list-http-lbs.html
-~~~~~~
-list-http-listeners
-===================
-
-[[list-http-listeners-1]][[GSRFM00168]][[list-http-listeners]]
-
-list-http-listeners
--------------------
-
-lists the existing network listeners
-
-[[sthref1501]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-http-listeners [--help]
-[target]
-----
-
-[[sthref1502]]
-
-Description
-
-The `list-http-listeners` subcommand lists the existing network
-listeners.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1503]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1504]]
-
-Operands
-
-target::
-  Restricts the listing to network listeners for a specified target.
-  Valid values are as follows: +
-  `server`;;
-    Lists the netowork listeners for the default server instance. This
-    is the default value.
-  configuration-name;;
-    Lists the network listeners for the specified configuration.
-  cluster-name;;
-    Lists the network listeners for all server instances in the
-    specified cluster.
-  instance-name;;
-    Lists the network listeners for the specified server instance.
-
-[[sthref1505]]
-
-Examples
-
-[[GSRFM662]][[sthref1506]]
-
-Example 1   Listing Network Listeners
-
-The following command lists all the network listeners for the server
-instance:
-
-[source,oac_no_warn]
-----
-asadmin> list-http-listeners
-http-listener-1
-http-listener-2
-admin-listener
-Command list-http-listeners executed successfully.
-----
-
-[[sthref1507]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1508]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-http-listener.html#create-http-listener-1[`create-http-listener`(1)],
-link:delete-http-listener.html#delete-http-listener-1[`delete-http-listener`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-iiop-listeners.adoc b/docs/reference-manual/src/main/jbake/content/list-iiop-listeners.adoc
deleted file mode 100644
index e4069e6..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-iiop-listeners.adoc
+++ /dev/null
@@ -1,101 +0,0 @@
-type=page
-status=published
-title=list-iiop-listeners
-next=list-instances.html
-prev=list-http-listeners.html
-~~~~~~
-list-iiop-listeners
-===================
-
-[[list-iiop-listeners-1]][[GSRFM00169]][[list-iiop-listeners]]
-
-list-iiop-listeners
--------------------
-
-lists the existing IIOP listeners
-
-[[sthref1509]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-iiop-listeners [--help]
-[target]
-----
-
-[[sthref1510]]
-
-Description
-
-The `list-iiop-listeners` subcommand lists the existing IIOP listeners.
-This subcommand is supported in remote mode only.
-
-[[sthref1511]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1512]]
-
-Operands
-
-target::
-  This operand specifies the target for which the IIOP listeners are to
-  be listed. Valid values are: +
-  `server`;;
-    Lists the listeners in the default server instance `server` and is
-    the default value.
-  configuration_name;;
-    Lists the listeners in the specified configuration.
-  cluster_name;;
-    Lists the listeners in the specified cluster.
-  instance_name;;
-    Lists the listeners in a particular server instance.
-
-[[sthref1513]]
-
-Examples
-
-[[GSRFM663]][[sthref1514]]
-
-Example 1   Using the list-iiop-listeners subcommand
-
-The following command lists all the IIOP listeners for the server
-instance:
-
-[source,oac_no_warn]
-----
-asadmin> list-iiop-listeners
-orb-listener-1
-SSL
-SSL_MUTUALAUTH
-sample_iiop_listener
-Command list-iiop-listeners executed successfully.
-----
-
-[[sthref1515]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1516]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-iiop-listener.html#create-iiop-listener-1[`create-iiop-listener`(1)],
-link:delete-iiop-listener.html#delete-iiop-listener-1[`delete-iiop-listener`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-instances.adoc b/docs/reference-manual/src/main/jbake/content/list-instances.adoc
deleted file mode 100644
index 9b14ce4..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-instances.adoc
+++ /dev/null
@@ -1,228 +0,0 @@
-type=page
-status=published
-title=list-instances
-next=list-jacc-providers.html
-prev=list-iiop-listeners.html
-~~~~~~
-list-instances
-==============
-
-[[list-instances-1]][[GSRFM00170]][[list-instances]]
-
-list-instances
---------------
-
-lists \{product---name} instances in a domain
-
-[[sthref1517]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-instances [--help] 
-[--timeoutmsec timeout] 
-[--long={false|true} | --nostatus={false|true}]
-[--standaloneonly={false|true} | target]
-----
-
-[[sthref1518]]
-
-Description
-
-The `list-instances` subcommand lists \{product---name} instances in a
-domain. The list can be filtered by cluster, instance, node, or
-configuration.
-
-The subcommand displays every \{product---name} instance in the
-specified target, regardless of how each instance was created. For
-example, this subcommand lists instances that were created by using the
-link:create-instance.html#create-instance-1[`create-instance`(1)]
-subcommand and by using the
-link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)]
-subcommand.
-
-By default, the subcommand indicates whether each instance that is
-listed is running. Options of this subcommand control the information
-that is displayed for each instance.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1519]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--timeoutmsec`::
-  The time limit in milliseconds for determining the status of
-  instances. The default is 2,000, which is equivalent to 2 seconds.
-`--long`::
-`-l`::
-  Specifies whether detailed information is displayed for each instance
-  that is listed. +
-  The `--long` option and `--nostatus` option are mutually exclusive. If
-  both options are specified in the same command, an error occurs. +
-  Valid values are as follows: +
-  `true`;;
-    The following details are displayed for each instance that is
-    listed: +
-    * The name of the instance
-    * The name of the host where the instance's node resides
-    * The HTTP port on which the instance listens for administration
-    requests
-    * The process identifier (PID) of the instance process or -1 if the
-    instance is not running
-    * The name of the cluster of which the instance is a member, if any
-    * The state of the instance, which is `running` or `not running` +
-    When an instance is listed, some configuration changes in the domain
-    administration server (DAS) for the instance might not have been
-    applied to the instance itself. In this situation, the commands that
-    are required to apply the changes are listed adjacent to the state
-    of the instance. The maximum number of commands that are listed for
-    an instance is 10.
-  `false`;;
-    Only the name of the instance and an indication of whether the
-    instance is running are displayed (default). The length of time that
-    the instance has been running is not displayed.
-`--nostatus`::
-  Specifies whether information about whether instances are running is
-  suppressed. +
-  The `--long` option and `--nostatus` option are mutually exclusive. If
-  both options are specified in the same command, an error occurs. +
-  Valid values are as follows: +
-  `true`;;
-    Information about whether instances are running is suppressed. Only
-    the name of each instance is displayed.
-  `false`;;
-    Information about whether instances are running is displayed
-    (default).
-`--standaloneonly`::
-  Specifies whether only standalone instances are listed. +
-  The `--standaloneonly` option and the target operand and are mutually
-  exclusive. If both the `--standaloneonly` option and the target
-  operand are specified in the same command, an error occurs. +
-  Valid values are as follows: +
-  `true`;;
-    Only standalone instances are listed.
-  `false`;;
-    All instances in the specified target are listed (default).
-
-[[sthref1520]]
-
-Operands
-
-target::
-  Filters the list of \{product---name} instances by specifying the
-  target for which instances are listed. +
-  The target operand and the `--standaloneonly` option are mutually
-  exclusive. If both the target operand and the `--standaloneonly`
-  option are specified in the same command, an error occurs. +
-  Valid values are as follows: +
-  `domain`;;
-    Lists all instances in the domain (default).
-  cluster-name;;
-    Lists the instances that are members of the specified cluster.
-  instance-name;;
-    Lists only the specified instance.
-  node-name;;
-    Lists the instances that reside on the specified node.
-  configuration-name;;
-    Lists all instances whose configuration is defined by the specified
-    named configuration.
-
-[[sthref1521]]
-
-Examples
-
-[[GSRFM664]][[sthref1522]]
-
-Example 1   Listing Basic Information About All \{product---name}
-Instances in a Domain
-
-This example lists the name and status of all \{product---name}
-instances in the current domain.
-
-[source,oac_no_warn]
-----
-asadmin> list-instances
-pmd-i-sj02 running
-yml-i-sj02 running
-pmd-i-sj01 running
-yml-i-sj01 running
-pmdsa1 not running
-
-Command list-instances executed successfully.
-----
-
-[[GSRFM665]][[sthref1523]]
-
-Example 2   Listing Detailed Information About All \{product---name}
-Instances in a Domain
-
-This example lists detailed information about all \{product---name}
-instances in the current domain.
-
-[source,oac_no_warn]
-----
-asadmin> list-instances --long=true
-NAME        HOST       PORT   PID    CLUSTER     STATE         
-pmd-i-sj01  sj01       24848  31310  pmdcluster   running      
-yml-i-sj01  sj01       24849  25355  ymlcluster   running      
-pmdsa1      localhost  24848  -1     ---          not running  
-pmd-i-sj02  sj02       24848  22498  pmdcluster   running      
-yml-i-sj02  sj02       24849  20476  ymlcluster   running      
-ymlsa1      localhost  24849  -1     ---          not running  
-Command list-instances executed successfully.
-----
-
-[[GSRFM666]][[sthref1524]]
-
-Example 3   Displaying the Status of an Instance
-
-This example displays status of the instance `pmd-i-sj01`, which is
-running.
-
-[source,oac_no_warn]
-----
-asadmin> list-instances pmd-i-sj01
-pmd-i-sj01 running
-Command list-instances executed successfully.
-----
-
-[[GSRFM667]][[sthref1525]]
-
-Example 4   Listing Only Standalone Instances in a Domain
-
-This example lists only the standalone instances in the current domain.
-
-[source,oac_no_warn]
-----
-asadmin> list-instances --standaloneonly=true
-pmdsa1 not running
-Command list-instances executed successfully.
-----
-
-[[sthref1526]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1527]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-instance.html#create-instance-1[`create-instance`(1)],
-link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-jacc-providers.adoc b/docs/reference-manual/src/main/jbake/content/list-jacc-providers.adoc
deleted file mode 100644
index 0a4a14c..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-jacc-providers.adoc
+++ /dev/null
@@ -1,108 +0,0 @@
-type=page
-status=published
-title=list-jacc-providers
-next=list-javamail-resources.html
-prev=list-instances.html
-~~~~~~
-list-jacc-providers
-===================
-
-[[list-jacc-providers-1]][[GSRFM00171]][[list-jacc-providers]]
-
-list-jacc-providers
--------------------
-
-enables administrators to list JACC providers defined for a domain
-
-[[sthref1528]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-jacc-providers [--help] 
-[target]
-----
-
-[[sthref1529]]
-
-Description
-
-The `list-jacc-providers` subcommand enables administrators to list the
-JACC providers defined for a domain. JACC providers are defined as
-`jacc-provider` elements in the `security-service` element in the
-domain's `domain.xml` file. JACC providers can be created using the
-\{product---name} Admin Console or the `create-jacc-provider`
-subcommand.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1530]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1531]]
-
-Operands
-
-target::
-  Specifies the target for which you want to list JACC providers. The
-  following values are valid: +
-  `server`;;
-    Lists the JACC providers on the default server instance. This is the
-    default value.
-  configuration_name;;
-    Lists the JACC providers in the specified configuration.
-  cluster_name;;
-    Lists the JACC providers on all server instances in the specified
-    cluster.
-  instance_name;;
-    Lists the JACC providers on a specified server instance.
-
-[[sthref1532]]
-
-Examples
-
-[[GSRFM668]][[sthref1533]]
-
-Example 1   Listing JACC providers
-
-The following example shows how to list JACC providers for the default
-domain.
-
-[source,oac_no_warn]
-----
-asadmin> list-jacc-providers
-default
-simple
-testJACC
-
-Command list-jacc-providers executed successfully.
-----
-
-[[sthref1534]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1535]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-jacc-provider.html#create-jacc-provider-1[`create-jacc-provider`(1)],
-link:delete-jacc-provider.html#delete-jacc-provider-1[`delete-jacc-provider`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-javamail-resources.adoc b/docs/reference-manual/src/main/jbake/content/list-javamail-resources.adoc
deleted file mode 100644
index 1b9b334..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-javamail-resources.adoc
+++ /dev/null
@@ -1,100 +0,0 @@
-type=page
-status=published
-title=list-javamail-resources
-next=list-jdbc-connection-pools.html
-prev=list-jacc-providers.html
-~~~~~~
-list-javamail-resources
-=======================
-
-[[list-javamail-resources-1]][[GSRFM00172]][[list-javamail-resources]]
-
-list-javamail-resources
------------------------
-
-lists the existing JavaMail session resources
-
-[[sthref1536]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-javamail-resources [--help] 
-[target]
-----
-
-[[sthref1537]]
-
-Description
-
-The `list-javamail-resources` subcommand lists the existing JavaMail
-session resources.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1538]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1539]]
-
-Operands
-
-target::
-  This operand specifies the target for which the JavaMail session
-  resources are to be listed. Valid values are: +
-  `server`;;
-    Lists the resources for the default server instance. This is the
-    default value.
-  `domain`;;
-    Lists the resources for the domain.
-  cluster_name;;
-    Lists the resources for the specified cluster.
-  instance_name;;
-    Lists the resources for a particular server instance.
-
-[[sthref1540]]
-
-Examples
-
-[[GSRFM669]][[sthref1541]]
-
-Example 1   Listing JavaMail Resources
-
-This example lists the JavaMail session resources for the server
-instance.
-
-[source,oac_no_warn]
-----
-asadmin> list-javamail-resources
-mail/MyMailSession
-Command list-javamail-resources executed successfuly.
-----
-
-[[sthref1542]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1543]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-javamail-resource.html#create-javamail-resource-1[`create-javamail-resource`(1)],
-link:delete-javamail-resource.html#delete-javamail-resource-1[`delete-javamail-resource`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-jdbc-connection-pools.adoc b/docs/reference-manual/src/main/jbake/content/list-jdbc-connection-pools.adoc
deleted file mode 100644
index cee81f0..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-jdbc-connection-pools.adoc
+++ /dev/null
@@ -1,82 +0,0 @@
-type=page
-status=published
-title=list-jdbc-connection-pools
-next=list-jdbc-resources.html
-prev=list-javamail-resources.html
-~~~~~~
-list-jdbc-connection-pools
-==========================
-
-[[list-jdbc-connection-pools-1]][[GSRFM00173]][[list-jdbc-connection-pools]]
-
-list-jdbc-connection-pools
---------------------------
-
-lists all JDBC connection pools
-
-[[sthref1544]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-jdbc-connection-pools [--help]
-----
-
-[[sthref1545]]
-
-Description
-
-The `list-jdbc-connection-pools` subcommand lists the current JDBC
-connection pools.
-
-This subcommand is supported in the remote mode only.
-
-[[sthref1546]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1547]]
-
-Examples
-
-[[GSRFM670]][[sthref1548]]
-
-Example 1   Listing the JDBC Connection Pools
-
-This example lists the existing JDBC connection pools.
-
-[source,oac_no_warn]
-----
-asadmin> list-jdbc-connection-pools
-sample_derby_pool
-__TimerPool
-Command list-jdbc-connection-pools executed successfully.
-----
-
-[[sthref1549]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1550]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-jdbc-connection-pool.html#create-jdbc-connection-pool-1[`create-jdbc-connection-pool`(1)],
-link:delete-jdbc-connection-pool.html#delete-jdbc-connection-pool-1[`delete-jdbc-connection-pool`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-jdbc-resources.adoc b/docs/reference-manual/src/main/jbake/content/list-jdbc-resources.adoc
deleted file mode 100644
index 8af678e..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-jdbc-resources.adoc
+++ /dev/null
@@ -1,98 +0,0 @@
-type=page
-status=published
-title=list-jdbc-resources
-next=list-jmsdest.html
-prev=list-jdbc-connection-pools.html
-~~~~~~
-list-jdbc-resources
-===================
-
-[[list-jdbc-resources-1]][[GSRFM00174]][[list-jdbc-resources]]
-
-list-jdbc-resources
--------------------
-
-lists all JDBC resources
-
-[[sthref1551]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-jdbc-resources [--help] 
-[target target]
-----
-
-[[sthref1552]]
-
-Description
-
-The `list-jdbc-resources` subcommand displays a list of the existing
-JDBC resources.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1553]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1554]]
-
-Operands
-
-`--target`::
-  This operand specifies which JDBC resources you can list. Usage of
-  this operand is optional. Valid values are: +
-  `server`;;
-    Lists the JDBC resources in the current server and is the default.
-  `domain`;;
-    Lists the JDBC resources in the current domain.
-  cluster_name;;
-    Lists the JDBC resources in a cluster.
-  instance_name;;
-    Lists the JDBC resources for a particular instance.
-
-[[sthref1555]]
-
-Examples
-
-[[GSRFM671]][[sthref1556]]
-
-Example 1   Listing the JDBC Resources
-
-This example lists the current JDBC resources.
-
-[source,oac_no_warn]
-----
-asadmin> list-jdbc-resources
-jdbc/DerbyPool
-Command list-jdbc-resources executed successfully.
-----
-
-[[sthref1557]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1558]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-jdbc-resource.html#create-jdbc-resource-1[`create-jdbc-resource`(1)],
-link:delete-jdbc-resource.html#delete-jdbc-resource-1[`delete-jdbc-resource`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-jms-hosts.adoc b/docs/reference-manual/src/main/jbake/content/list-jms-hosts.adoc
deleted file mode 100644
index 94116dc..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-jms-hosts.adoc
+++ /dev/null
@@ -1,98 +0,0 @@
-type=page
-status=published
-title=list-jms-hosts
-next=list-jms-resources.html
-prev=list-jmsdest.html
-~~~~~~
-list-jms-hosts
-==============
-
-[[list-jms-hosts-1]][[GSRFM00176]][[list-jms-hosts]]
-
-list-jms-hosts
---------------
-
-lists the existing JMS hosts
-
-[[sthref1568]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-jms-hosts [--help]
-[--target target]
-----
-
-[[sthref1569]]
-
-Description
-
-The `list-jms-hosts` subcommand lists the existing Java Message Service
-(JMS) hosts for the JMS service.
-
-This subcommand is supported in remote mode only. Remote `asadmin`
-subcommands require a running domain administration server (DAS).
-
-[[sthref1570]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Restricts the listing to JMS hosts for a specified target. Valid
-  values are as follows: +
-  `server`;;
-    Lists the JMS hosts for the default server instance. This is the
-    default value.
-  configuration-name;;
-    Lists the JMS hosts for the specified configuration.
-  cluster-name;;
-    Lists the JMS hosts for all server instances in the specified
-    cluster.
-  instance-name;;
-    Lists the JMS hosts for the specified server instance.
-
-[[sthref1571]]
-
-Examples
-
-[[GSRFM674]][[sthref1572]]
-
-Example 1   Listing all JMS hosts
-
-The following subcommand lists the JMS hosts for the JMS service.
-
-[source,oac_no_warn]
-----
-asadmin> list-jms-hosts server-config
-default_JMS_host
-MyNewHost
-Command list-jms-hosts executed successfully.
-----
-
-[[sthref1573]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1574]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-jms-host.html#create-jms-host-1[`create-jms-host`(1)],
-link:delete-jms-host.html#delete-jms-host-1[`delete-jms-host`(1)],
-link:jms-ping.html#jms-ping-1[`jms-ping`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-jms-resources.adoc b/docs/reference-manual/src/main/jbake/content/list-jms-resources.adoc
deleted file mode 100644
index 1a43014..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-jms-resources.adoc
+++ /dev/null
@@ -1,124 +0,0 @@
-type=page
-status=published
-title=list-jms-resources
-next=list-jndi-entries.html
-prev=list-jms-hosts.html
-~~~~~~
-list-jms-resources
-==================
-
-[[list-jms-resources-1]][[GSRFM00177]][[list-jms-resources]]
-
-list-jms-resources
-------------------
-
-lists the JMS resources
-
-[[sthref1575]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-jms-resources [--help]
-[--restype type]
-[target]
-----
-
-[[sthref1576]]
-
-Description
-
-The `list-jms-resources` subcommand lists the existing Java Message
-Service (JMS) resources (destination and connection factory resources).
-
-This subcommand is supported in remote mode only. Remote `asadmin`
-subcommands require a running domain administration server (DAS).
-
-[[sthref1577]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--restype`::
-  The JMS resource type can be `jakarta.jms.Topic`, `jakarta.jms.Queue`,
-  `jakarta.jms.ConnectionFactory`, `jakarta.jms.TopicConnectionFactory`, or
-  `jakarta.jms.QueueConnectionFactory`.
-
-[[sthref1578]]
-
-Operands
-
-target::
-  Restricts the listing to resources for a specified target. Valid
-  values are as follows: +
-  `server`;;
-    Lists the resources for the default server instance. This is the
-    default value.
-  `domain`;;
-    Lists the resources for the domain.
-  cluster-name;;
-    Lists the resources for every server instance in the specified
-    cluster.
-  instance-name;;
-    Lists the resources for the specified server instance.
-
-[[sthref1579]]
-
-Examples
-
-[[GSRFM675]][[sthref1580]]
-
-Example 1   Listing all JMS resources
-
-The following subcommand lists all JMS resources.
-
-[source,oac_no_warn]
-----
-asadmin> list-jms-resources
-jms/Queue
-jms/ConnectionFactory
-jms/DurableConnectionFactory
-jms/Topic
-Command list-jms-resources executed successfully.
-----
-
-[[GSRFM676]][[sthref1581]]
-
-Example 2   Listing JMS resources of a specified type
-
-The following subcommand lists all `jakarta.jms.ConnectionFactory`
-resources.
-
-[source,oac_no_warn]
-----
-asadmin> list-jms-resources --restype jakarta.jms.ConnectionFactory
-jms/ConnectionFactory
-jms/DurableConnectionFactory
-Command list-jms-resources executed successfully.
-----
-
-[[sthref1582]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1583]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-jms-resource.html#create-jms-resource-1[`create-jms-resource`(1)],
-link:delete-jms-resource.html#delete-jms-resource-1[`delete-jms-resource`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-jmsdest.adoc b/docs/reference-manual/src/main/jbake/content/list-jmsdest.adoc
deleted file mode 100644
index d5144b7..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-jmsdest.adoc
+++ /dev/null
@@ -1,120 +0,0 @@
-type=page
-status=published
-title=list-jmsdest
-next=list-jms-hosts.html
-prev=list-jdbc-resources.html
-~~~~~~
-list-jmsdest
-============
-
-[[list-jmsdest-1]][[GSRFM00175]][[list-jmsdest]]
-
-list-jmsdest
-------------
-
-lists the existing JMS physical destinations
-
-[[sthref1559]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-jmsdest [--help]
-[--desttype type]
-[target]
-----
-
-[[sthref1560]]
-
-Description
-
-The `list-jmsdest` subcommand lists the Java Message Service (JMS)
-physical destinations.
-
-This subcommand is supported in remote mode only. Remote `asadmin`
-subcommands require a running domain administration server (DAS).
-
-[[sthref1561]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--desttype`::
-  The type of JMS destination to be listed. Valid values are `topic` and
-  `queue`.
-
-[[sthref1562]]
-
-Operands
-
-target::
-  Restricts the listing to physical destinations for a specified target.
-  Valid values are as follows: +
-  `server`;;
-    Lists the physical destinations for the default server instance.
-    This is the default value.
-  configuration-name;;
-    Lists the physical destinations in the specified configuration.
-  cluster-name;;
-    Lists the physical destinations for every server instance in the
-    specified cluster.
-  instance-name;;
-    Lists the physical destinations for the specified server instance.
-
-[[sthref1563]]
-
-Examples
-
-[[GSRFM672]][[sthref1564]]
-
-Example 1   Listing all physical destinations
-
-The following subcommand lists all the physical destinations.
-
-[source,oac_no_warn]
-----
-asadmin> list-jmsdest
-PhysicalQueue
-PhysicalTopic
-Command list-jmsdest executed successfully.
-----
-
-[[GSRFM673]][[sthref1565]]
-
-Example 2   Listing all physical destinations of a specified type
-
-The following subcommand lists all physical topics.
-
-[source,oac_no_warn]
-----
-asadmin> list-jmsdest --desttype topic
-PhysicalTopic
-Command list-jmsdest executed successfully.
-----
-
-[[sthref1566]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1567]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-jmsdest.html#create-jmsdest-1[`create-jmsdest`(1)],
-link:delete-jmsdest.html#delete-jmsdest-1[`delete-jmsdest`(1)],
-link:flush-jmsdest.html#flush-jmsdest-1[`flush-jmsdest`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-jndi-entries.adoc b/docs/reference-manual/src/main/jbake/content/list-jndi-entries.adoc
deleted file mode 100644
index fa6e194..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-jndi-entries.adoc
+++ /dev/null
@@ -1,111 +0,0 @@
-type=page
-status=published
-title=list-jndi-entries
-next=list-jndi-resources.html
-prev=list-jms-resources.html
-~~~~~~
-list-jndi-entries
-=================
-
-[[list-jndi-entries-1]][[GSRFM00178]][[list-jndi-entries]]
-
-list-jndi-entries
------------------
-
-browses and queries the JNDI tree
-
-[[sthref1584]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-jndi-entries [--help]
-[--context context_name]
-[target]
-----
-
-[[sthref1585]]
-
-Description
-
-Use this subcommand to browse and query the JNDI tree.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1586]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--context`::
-  The name of the JNDI context or subcontext. If context is not
-  specified, all entries in the naming service are returned. If context
-  (such as `ejb`) is specified, all those entries are returned.
-
-[[sthref1587]]
-
-Operands
-
-target::
-  This operand specifies the JNDI tree to browse. +
-  Possible values are as follows: +
-  `server`;;
-    Browses the JNDI tree for the default \{product---name} instance
-    (default). The default instance is the domain administration server
-    (DAS).
-  `domain`;;
-    Browses the JNDI tree for the current domain.
-  cluster-name;;
-    Browses the JNDI tree for the specified cluster.
-  instance-name;;
-    Browses the JNDI tree for the specified \{product---name} instance.
-
-[[sthref1588]]
-
-Examples
-
-[[GSRFM677]][[sthref1589]]
-
-Example 1   Browsing the JNDI Tree
-
-This example browses the JNDI tree for the default \{product---name}
-instance.
-
-[source,oac_no_warn]
-----
-asadmin> list-jndi-entries
-java:global: com.sun.enterprise.naming.impl.TransientContext
-jdbc: com.sun.enterprise.naming.impl.TransientContext
-ejb: com.sun.enterprise.naming.impl.TransientContext
-com.sun.enterprise.container.common.spi.util.InjectionManager: 
-com.sun.enterprise.container.common.impl.util.InjectionManagerImpl
-
-Command list-jndi-entries executed successfully.
-----
-
-[[sthref1590]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1591]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-jndi-resource.html#create-jndi-resource-1[`create-jndi-resource`(1)],
-link:delete-jndi-resource.html#delete-jndi-resource-1[`delete-jndi-resource`(1)],
-link:list-jndi-resources.html#list-jndi-resources-1[`list-jndi-resources`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-jndi-resources.adoc b/docs/reference-manual/src/main/jbake/content/list-jndi-resources.adoc
deleted file mode 100644
index e53238f..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-jndi-resources.adoc
+++ /dev/null
@@ -1,101 +0,0 @@
-type=page
-status=published
-title=list-jndi-resources
-next=list-jobs.html
-prev=list-jndi-entries.html
-~~~~~~
-list-jndi-resources
-===================
-
-[[list-jndi-resources-1]][[GSRFM00179]][[list-jndi-resources]]
-
-list-jndi-resources
--------------------
-
-lists all existing JNDI resources
-
-[[sthref1592]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-list-jndi-resources [--help] [target]
-----
-
-[[sthref1593]]
-
-Description
-
-The `list-jndi-resources` subcommand identifies all existing JNDI
-resources.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1594]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1595]]
-
-Operands
-
-target::
-  The target for which the JNDI resources are to be listed. Valid values
-  are as follows: +
-  `server`;;
-    Lists the JNDI resources on the default server instance. This is the
-    default value.
-  configuration-name;;
-    Lists the JNDI resources for the specified configuration.
-  cluster-name;;
-    Lists the JNDI resources on all server instances in the specified
-    cluster.
-  instance-name;;
-    Lists the JNDI resources on a specified server instance.
-
-[[sthref1596]]
-
-Examples
-
-[[GSRFM678]][[sthref1597]]
-
-Example 1   Listing JNDI Resources
-
-This example lists the JNDI resources on the default server instance.
-
-[source,oac_no_warn]
-----
-asadmin> list-jndi-resources
-jndi_resource1
-jndi_resource2
-jndi_resource3
-Command list-jndi-resources executed successfully
-----
-
-[[sthref1598]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1599]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-jndi-resource.html#create-jndi-resource-1[`create-jndi-resource`(1)],
-link:delete-jndi-resource.html#delete-jndi-resource-1[`delete-jndi-resource`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-jobs.adoc b/docs/reference-manual/src/main/jbake/content/list-jobs.adoc
deleted file mode 100644
index dca6d48..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-jobs.adoc
+++ /dev/null
@@ -1,95 +0,0 @@
-type=page
-status=published
-title=list-jobs
-next=list-jvm-options.html
-prev=list-jndi-resources.html
-~~~~~~
-list-jobs
-=========
-
-[[list-jobs-1]][[GSRFM867]][[list-jobs]]
-
-list-jobs
----------
-
-lists information about subcommands that were started using
-`asadmin --detach` or that contain progress information
-
-[[sthref1600]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-jobs [--help]
-[job_id]
-----
-
-[[sthref1601]]
-
-Description
-
-The `list-jobs` subcommand lists information about subcommands that were
-started using the `asadmin` utility option `--detach` or that contain
-progress information. The `--detach` option detaches long-running
-subcommands and executes them in the background in detach mode.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1602]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1603]]
-
-Operands
-
-job_id::
-  The ID of the job for which you want to list information.
-
-[[sthref1604]]
-
-Examples
-
-[[GSRFM868]][[sthref1605]]
-
-Example 1   Checking Job Status
-
-This example provides information about subcommands that were started
-using `asadmin --detach` or that contain progress information.
-
-[source,oac_no_warn]
-----
-asadmin> list-jobs
-JOB ID     COMMAND           STATE       EXIT CODE TIME OF COMPLETION
-1          create-cluster    COMPLETED   SUCCESS   2013-02-15 16:16:16 PST
-2          deploy            COMPLETED   FAILURE   2013-02-15 18:26:30 PST
-Command list-jobs executed successfully
-----
-
-[[sthref1606]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1607]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:attach.html#attach-1[`attach`(1)],
-link:configure-managed-jobs.html#configure-managed-jobs-1[`configure-managed-jobs`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-jvm-options.adoc b/docs/reference-manual/src/main/jbake/content/list-jvm-options.adoc
deleted file mode 100644
index b239f27..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-jvm-options.adoc
+++ /dev/null
@@ -1,131 +0,0 @@
-type=page
-status=published
-title=list-jvm-options
-next=list-libraries.html
-prev=list-jobs.html
-~~~~~~
-list-jvm-options
-================
-
-[[list-jvm-options-1]][[GSRFM00180]][[list-jvm-options]]
-
-list-jvm-options
-----------------
-
-lists options for the Java application launcher
-
-[[sthref1608]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-jvm-options [--help] 
-[--target target] 
-[--profiler={false|true}] 
-----
-
-[[sthref1609]]
-
-Description
-
-The `list-jvm-options` subcommand displays a list of command-line
-options that are passed to the Java application launcher when
-\{product---name} is started.
-
-The options are managed by using the JVM Options page of the
-Administration Console or by using the `create-jvm-options` and
-`delete-jvm-options` subcommands.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1610]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Specifies the target for which you are listing Java application
-  launcher options. +
-  Valid values are as follows: +
-  `server`;;
-    Specifies the DAS (default).
-  instance-name;;
-    Specifies a \{product---name} instance.
-  cluster-name;;
-    Specifies a cluster.
-  configuration-name;;
-    Specifies a named configuration.
-`--profiler`::
-  Specifies whether the Java application launcher options to list are
-  for the profiler. Set this option to true only if a profiler has been
-  configured. If this option is set to true and no profiler is
-  configured, an error occurs. The default is false.
-
-[[sthref1611]]
-
-Examples
-
-[[GSRFM679]][[sthref1612]]
-
-Example 1   Listing the Java Application Launcher Options
-
-This example lists the options that are used by the Java application
-launcher.
-
-[source,oac_no_warn]
-----
-asadmin> list-jvm-options
--Djava.security.auth.login.config=${com.sun.aas.instanceRoot}/config/login.conf
--XX: LogVMOutput
--XX: UnlockDiagnosticVMOptions
--Dcom.sun.enterprise.config.config_environment_factory_class=
-com.sun.enterprise.config.serverbeans.AppserverConfigEnvironmentFactory
--Djavax.net.ssl.keyStore=${com.sun.aas.instanceRoot}/config/keystore.jks
--XX:NewRatio=2
--DANTLR_USE_DIRECT_CLASS_LOADING=true
--Djava.security.policy=${com.sun.aas.instanceRoot}/config/server.policy
--Djdbc.drivers=org.apache.derby.jdbc.ClientDriver
--Djavax.net.ssl.trustStore=${com.sun.aas.instanceRoot}/config/cacerts.jks
--client
--Djava.ext.dirs=${com.sun.aas.javaRoot}/lib/ext${path.separator}${
-com.sun.aas.javaRoot}/jre/lib/ext${path.separator}${com.sun.aas.instanceRoot}
-/lib/ext${path.separator}${com.sun.aas.derbyRoot}/lib
--Xmx512m
--XX:MaxPermSize=192m
--XX:LogFile=${com.sun.aas.instanceRoot}/logs/jvm.log
-Command list-jvm-options executed successfully.
-----
-
-[[sthref1613]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1614]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-jvm-options.html#create-jvm-options-1[`create-jvm-options`(1)],
-link:delete-jvm-options.html#delete-jvm-options-1[`delete-jvm-options`(1)]
-
-For more information about the Java application launcher, see the
-reference page for the operating system that you are using:
-
-* Oracle Solaris and Linux: java - the Java application launcher
-(``http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/java.html)
-* Windows: java - the Java application launcher
-(``http://docs.oracle.com/javase/6/docs/technotes/tools/windows/java.html)
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-libraries.adoc b/docs/reference-manual/src/main/jbake/content/list-libraries.adoc
deleted file mode 100644
index af1cb73..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-libraries.adoc
+++ /dev/null
@@ -1,107 +0,0 @@
-type=page
-status=published
-title=list-libraries
-next=list-lifecycle-modules.html
-prev=list-jvm-options.html
-~~~~~~
-list-libraries
-==============
-
-[[list-libraries-1]][[GSRFM00819]][[list-libraries]]
-
-list-libraries
---------------
-
-lists library JAR files on \{product---name}
-
-[[sthref1615]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-libraries [--help] 
-[--type={common|ext|app}]
-----
-
-[[sthref1616]]
-
-Description
-
-The `list-libraries` subcommand lists library archive files on
-\{product---name}.
-
-The `--type` option specifies the library type and the \{product---name}
-directory for which libraries are to be listed.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1617]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--type`::
-  Specifies the library type and the \{product---name} directory for
-  which libraries are listed. Valid values are as follows: +
-  `common`;;
-    Lists the library files for the Common class loader directory,
-    domain-dir`/lib`. This is the default.
-  `ext`;;
-    Lists the library files for the Java optional package directory,
-    domain-dir`/lib/ext`.
-  `app`;;
-    Lists the library files for the application-specific class loader
-    directory, domain-dir`/lib/applibs`. +
-  For more information about these directories, see
-  "link:../application-development-guide/class-loaders.html#GSDVG00003[Class Loaders]" in GlassFish Server Open Source
-  Edition Application Development Guide.
-
-[[sthref1618]]
-
-Examples
-
-[[GSRFM831]][[sthref1619]]
-
-Example 1   Listing Libraries
-
-This example lists the libraries in the application-specific class
-loader directory on the default server instance.
-
-[source,oac_no_warn]
-----
-asadmin> list-libraries --type app
-mylib.jar
-xlib.jar
-ylib.jar
-zlib.jar
-Command list-libraries executed successfully.
-----
-
-[[sthref1620]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1621]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:add-library.html#add-library-1[`add-library`(1)],
-link:remove-library.html#remove-library-1[`remove-library`(1)]
-
-"link:../application-development-guide/class-loaders.html#GSDVG00003[Class Loaders]" in GlassFish Server Open Source
-Edition Application Development Guide
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-lifecycle-modules.adoc b/docs/reference-manual/src/main/jbake/content/list-lifecycle-modules.adoc
deleted file mode 100644
index d544f05..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-lifecycle-modules.adoc
+++ /dev/null
@@ -1,98 +0,0 @@
-type=page
-status=published
-title=list-lifecycle-modules
-next=list-log-attributes.html
-prev=list-libraries.html
-~~~~~~
-list-lifecycle-modules
-======================
-
-[[list-lifecycle-modules-1]][[GSRFM00181]][[list-lifecycle-modules]]
-
-list-lifecycle-modules
-----------------------
-
-lists the lifecycle modules
-
-[[sthref1622]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-lifecycle-modules [--help] 
-[target]
-----
-
-[[sthref1623]]
-
-Description
-
-The `list-lifecycle-modules` subcommand lists lifecycle modules. A
-lifecycle module provides a means of running a short or long duration
-Java-based task at a specific stage in the server life cycle. This
-subcommand is supported in remote mode only.
-
-[[sthref1624]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1625]]
-
-Operands
-
-target::
-  Indicates the location where lifecycle modules are to be listed. Valid
-  values are +
-  * `server`- Specifies the default server instance as the target for
-  listing lifecycle modules. `server` is the name of the default server
-  instance and is the default value for this operand.
-  * cluster_name- Specifies a particular cluster as the target for
-  listing lifecycle modules.
-  * instance_name- Specifies a particular server instance as the target
-  for listing lifecycle modules.
-
-[[sthref1626]]
-
-Examples
-
-[[GSRFM681]][[sthref1627]]
-
-Example 1   Listing Lifecycle Modules
-
-[source,oac_no_warn]
-----
-asadmin> list-lifecycle-modules
-WSTCPConnectorLCModule
-Command list-lifecycle-modules executed successfully
-----
-
-`WSTCPConnectorLCModule` is the only lifecycle module listed for the
-default target, `server`.
-
-[[sthref1628]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1629]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-lifecycle-module.html#create-lifecycle-module-1[`create-lifecycle-module`(1)],
-link:delete-lifecycle-module.html#delete-lifecycle-module-1[`delete-lifecycle-module`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-log-attributes.adoc b/docs/reference-manual/src/main/jbake/content/list-log-attributes.adoc
deleted file mode 100644
index decf613..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-log-attributes.adoc
+++ /dev/null
@@ -1,121 +0,0 @@
-type=page
-status=published
-title=list-log-attributes
-next=list-loggers.html
-prev=list-lifecycle-modules.html
-~~~~~~
-list-log-attributes
-===================
-
-[[list-log-attributes-1]][[GSRFM00182]][[list-log-attributes]]
-
-list-log-attributes
--------------------
-
-lists all logging attributes defined for a specified target in a domain
-
-[[sthref1630]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-log-attributes [--help] 
-[target]
-----
-
-[[sthref1631]]
-
-Description
-
-The `list-log-attributes` subcommand lists all logging attributes
-currently defined for the specified \{product---name} domain or target
-within a domain. The values listed correspond to the values in the
-`logging.properties` file for the domain.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1632]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1633]]
-
-Operands
-
-target::
-  Valid values are: +
-  * `server` - The default server instance. This is the default value.
-  * configuration_name - The name of a specific configuration.
-  * cluster_name - The name of a target cluster.
-  * instance_name - The name of a target server instance.
-
-[[sthref1634]]
-
-Examples
-
-[[GSRFM682]][[sthref1635]]
-
-Example 1   Listing the Logger Attributes for a Domain
-
-This example lists all loggers attributes for the default domain.
-
-[source,oac_no_warn]
-----
-asadmin> list-log-attributes
-com.sun.enterprise.server.logging.GFFileHandler.alarms <false>
-com.sun.enterprise.server.logging.GFFileHandler.file \
-<${com.sun.aas.instanceRoot}/logs/server.log>
-com.sun.enterprise.server.logging.GFFileHandler.flushFrequency <1>
-com.sun.enterprise.server.logging.GFFileHandler.formatter \
-<com.sun.enterprise.server.logging.UniformLogFormatter>
-com.sun.enterprise.server.logging.GFFileHandler.logtoConsole <false>
-com.sun.enterprise.server.logging.GFFileHandler.maxHistoryFiles <0>
-com.sun.enterprise.server.logging.GFFileHandler.retainErrorsStasticsForHours <0>
-com.sun.enterprise.server.logging.GFFileHandler.rotationLimitInBytes <2000000>
-com.sun.enterprise.server.logging.GFFileHandler.rotationTimelimitInMinutes <0>
-com.sun.enterprise.server.logging.SyslogHandler.useSystemLogging <false>
-handlers <java.util.logging.ConsoleHandler>
-java.util.logging.ConsoleHandler.formatter \
-<com.sun.enterprise.server.logging.UniformLogFormatter>
-java.util.logging.FileHandler.count <1>
-java.util.logging.FileHandler.formatter <java.util.logging.XMLFormatter>
-java.util.logging.FileHandler.limit <50000>
-java.util.logging.FileHandler.pattern <%h/java%u.log>
-log4j.logger.org.hibernate.validator.util.Version <warn>
-
-Command list-log-attributes executed successfully.
-----
-
-[[sthref1636]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1637]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:collect-log-files.html#collect-log-files-1[`collect-log-files`(1)],
-link:list-log-levels.html#list-log-levels-1[`list-log-levels`(1)],
-link:rotate-log.html#rotate-log-1[`rotate-log`(1)],
-link:set-log-attributes.html#set-log-attributes-1[`set-log-attributes`(1)],
-link:set-log-levels.html#set-log-levels-1[`set-log-levels`(1)]
-
-"link:../administration-guide/logging.html#GSADG00010[Administering the Logging Service]" in GlassFish
-Server Open Source Edition Administration Guide
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-log-levels.adoc b/docs/reference-manual/src/main/jbake/content/list-log-levels.adoc
deleted file mode 100644
index b3ebf7f..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-log-levels.adoc
+++ /dev/null
@@ -1,149 +0,0 @@
-type=page
-status=published
-title=list-log-levels
-next=list-managed-executor-services.html
-prev=list-loggers.html
-~~~~~~
-list-log-levels
-===============
-
-[[list-log-levels-1]][[GSRFM00183]][[list-log-levels]]
-
-list-log-levels
----------------
-
-lists the loggers and their log levels
-
-[[sthref1645]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-log-levels [--help] 
-[--target target]
-----
-
-[[sthref1646]]
-
-Description
-
-The `list-log-levels` subcommand lists the current \{product---name}
-loggers and their log levels. This subcommand reports on all the loggers
-that are listed in the `logging.properties` file. In some cases, loggers
-that have not been created by the respective containers will appear in
-the list.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1647]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  The server, cluster or server instance for which log levels will be
-  listed.
-
-[[sthref1648]]
-
-Operands
-
-target::
-  Valid values are: +
-  * server_name - Default target is `server`. If no target is specified
-  then log levels are listed for the server.
-  * cluster_name - The name of a target cluster.
-  * instance_name - The name of a target server instance.
-
-[[sthref1649]]
-
-Examples
-
-[[GSRFM683]][[sthref1650]]
-
-Example 1   Listing the Log Levels
-
-This example lists the existing loggers and indicates how their log
-levels are set.
-
-[source,oac_no_warn]
-----
-asadmin> list-log-levels
-java.util.logging.ConsoleHandler        <FINEST>
-jakarta.enterprise.resource.corba <INFO>
-jakarta.enterprise.resource.javamail      <INFO>
-jakarta.enterprise.resource.jdo   <INFO>
-jakarta.enterprise.resource.jms   <INFO>
-jakarta.enterprise.resource.jta   <INFO>
-jakarta.enterprise.resource.resourceadapter       <INFO>
-jakarta.enterprise.resource.sqltrace      <FINE>
-jakarta.enterprise.resource.webcontainer.jsf.application  <INFO>
-jakarta.enterprise.resource.webcontainer.jsf.config       <INFO>
-jakarta.enterprise.resource.webcontainer.jsf.context      <INFO>
-jakarta.enterprise.resource.webcontainer.jsf.facelets     <INFO>
-jakarta.enterprise.resource.webcontainer.jsf.lifecycle    <INFO>
-jakarta.enterprise.resource.webcontainer.jsf.managedbean  <INFO>
-jakarta.enterprise.resource.webcontainer.jsf.renderkit    <INFO>
-jakarta.enterprise.resource.webcontainer.jsf.resource     <INFO>
-jakarta.enterprise.resource.webcontainer.jsf.taglib       <INFO>
-jakarta.enterprise.resource.webcontainer.jsf.timing       <INFO>
-jakarta.enterprise.system.container.cmp   <INFO>
-jakarta.enterprise.system.container.ejb   <INFO>
-jakarta.enterprise.system.container.ejb.mdb       <INFO>
-jakarta.enterprise.system.container.web   <INFO>
-jakarta.enterprise.system.core.classloading       <INFO>
-jakarta.enterprise.system.core.config     <INFO>
-jakarta.enterprise.system.core    <INFO>
-jakarta.enterprise.system.core.naming     <INFO>
-jakarta.enterprise.system.core.security   <INFO>
-jakarta.enterprise.system.core.selfmanagement     <INFO>
-jakarta.enterprise.system.core.transaction        <INFO>
-jakarta.enterprise.system <INFO>
-jakarta.enterprise.system.tools.admin     <INFO>
-jakarta.enterprise.system.tools.backup    <INFO>
-jakarta.enterprise.system.tools.deployment        <INFO>
-jakarta.enterprise.system.util    <INFO>
-jakarta.enterprise.system.webservices.registry    <INFO>
-jakarta.enterprise.system.webservices.rpc <INFO>
-jakarta.enterprise.system.webservices.saaj        <INFO>
-javax   <INFO>
-javax.org.glassfish.persistence <INFO>
-org.apache.catalina     <INFO>
-org.apache.coyote       <INFO>
-org.apache.jasper       <INFO>
-org.glassfish.admingui  <INFO>
-org.jvnet.hk2.osgiadapter       <INFO>
-Command list-log-levels executed successfully.
-----
-
-[[sthref1651]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1652]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:collect-log-files.html#collect-log-files-1[`collect-log-files`(1)],
-link:list-log-attributes.html#list-log-attributes-1[`list-log-attributes`(1)],
-link:rotate-log.html#rotate-log-1[`rotate-log`(1)],
-link:set-log-attributes.html#set-log-attributes-1[`set-log-attributes`(1)],
-link:set-log-levels.html#set-log-levels-1[`set-log-levels`(1)]
-
-"link:../administration-guide/logging.html#GSADG00010[Administering the Logging Service]" in GlassFish
-Server Open Source Edition Administration Guide
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-loggers.adoc b/docs/reference-manual/src/main/jbake/content/list-loggers.adoc
deleted file mode 100644
index d4a9aa5..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-loggers.adoc
+++ /dev/null
@@ -1,90 +0,0 @@
-type=page
-status=published
-title=list-loggers
-next=list-log-levels.html
-prev=list-log-attributes.html
-~~~~~~
-list-loggers
-============
-
-[[list-loggers-1]][[GSRFM869]][[list-loggers]]
-
-list-loggers
-------------
-
-lists existing loggers
-
-[[sthref1638]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-loggers [--help]
-----
-
-[[sthref1639]]
-
-Description
-
-The `list-loggers` subcommand lists the existing \{product---name}
-loggers. Internal loggers are not listed. The `list-loggers` subcommand
-lists the logger name, subsystem, and description.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1640]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1641]]
-
-Examples
-
-[[GSRFM870]][[sthref1642]]
-
-Example 1   Listing the Loggers
-
-This example lists the logger name, subsystem, and description for each
-logger. Some lines of output are omitted from this example for
-readability.
-
-[source,oac_no_warn]
-----
-asadmin> list-loggers
-Logger Name                            Subsystem         Logger Description
-...
-jakarta.enterprise.monitoring            Monitoring        Monitoring Logger
-jakarta.enterprise.system.core.ee        AS-CORE           Java EE Core Kernel
-jakarta.enterprise.system.jmx            JMX               JMX System Logger
-jakarta.enterprise.system.tools.admin    ADMIN             Administration Services
-...
-Command list-loggers executed successfully.
-----
-
-[[sthref1643]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1644]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:list-log-levels.html#list-log-levels-1[`list-log-levels`(1)],
-link:set-log-file-format.html#set-log-file-format-1[`set-log-file-format`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-managed-executor-services.adoc b/docs/reference-manual/src/main/jbake/content/list-managed-executor-services.adoc
deleted file mode 100644
index 52c2ac1..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-managed-executor-services.adoc
+++ /dev/null
@@ -1,103 +0,0 @@
-type=page
-status=published
-title=list-managed-executor-services
-next=list-managed-scheduled-executor-services.html
-prev=list-log-levels.html
-~~~~~~
-list-managed-executor-services
-==============================
-
-[[list-managed-executor-services-1]][[GSRFM871]][[list-managed-executor-services]]
-
-list-managed-executor-services
-------------------------------
-
-lists managed executor service resources
-
-[[sthref1653]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-managed-executor-services [--help]
-[target]
-----
-
-[[sthref1654]]
-
-Description
-
-The `list-managed-executor-services` subcommand lists managed executor
-service resources.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1655]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1656]]
-
-Operands
-
-target::
-  Specifies the target for which managed executor service resources are
-  to be listed. Valid targets are: +
-  `server`;;
-    Lists the resources on the default server instance. This is the
-    default value.
-  `domain`;;
-    Lists the resources for the domain.
-  cluster-name;;
-    Lists the resources on all server instances in the specified
-    cluster.
-  instance-name;;
-    Lists the resources on a specified server instance.
-
-[[sthref1657]]
-
-Examples
-
-[[GSRFM872]][[sthref1658]]
-
-Example 1   Listing Managed Executor Service Resources
-
-This example lists managed executor service resources on the default
-server instance.
-
-[source,oac_no_warn]
-----
-asadmin> list-managed-executor-services
-concurrent/__defaultManagedExecutorService
-concurrent/myExecutor1
-concurrent/myExecutor2
-Command list-managed-executor-services executed successfully.
-----
-
-[[sthref1659]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1660]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-managed-executor-service.html#create-managed-executor-service-1[`create-managed-executor-service`(1)],
-link:delete-managed-executor-service.html#delete-managed-executor-service-1[`delete-managed-executor-service`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-managed-scheduled-executor-services.adoc b/docs/reference-manual/src/main/jbake/content/list-managed-scheduled-executor-services.adoc
deleted file mode 100644
index 099c242..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-managed-scheduled-executor-services.adoc
+++ /dev/null
@@ -1,103 +0,0 @@
-type=page
-status=published
-title=list-managed-scheduled-executor-services
-next=list-managed-thread-factories.html
-prev=list-managed-executor-services.html
-~~~~~~
-list-managed-scheduled-executor-services
-========================================
-
-[[list-managed-scheduled-executor-services-1]][[GSRFM873]][[list-managed-scheduled-executor-services]]
-
-list-managed-scheduled-executor-services
-----------------------------------------
-
-lists managed scheduled executor service resources
-
-[[sthref1661]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-managed-scheduled-executor-services [--help]
-[target]
-----
-
-[[sthref1662]]
-
-Description
-
-The `list-managed-scheduled-executor-services` subcommand lists managed
-scheduled executor service resources.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1663]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1664]]
-
-Operands
-
-target::
-  Specifies the target for which managed scheduled executor service
-  resources are to be listed. Valid targets are: +
-  `server`;;
-    Lists the resources on the default server instance. This is the
-    default value.
-  `domain`;;
-    Lists the resources for the domain.
-  cluster-name;;
-    Lists the resources on all server instances in the specified
-    cluster.
-  instance-name;;
-    Lists the resources on a specified server instance.
-
-[[sthref1665]]
-
-Examples
-
-[[GSRFM874]][[sthref1666]]
-
-Example 1   Listing Managed Scheduled Executor Service Resources
-
-This example lists managed scheduled executor service resources on the
-default server instance.
-
-[source,oac_no_warn]
-----
-asadmin> list-managed-scheduled-executor-services
-concurrent/__defaultManagedScheduledExecutorService
-concurrent/myScheduledExecutor1
-concurrent/myScheduledExecutor2
-Command list-managed-scheduled-executor-services executed successfully.
-----
-
-[[sthref1667]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1668]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-managed-scheduled-executor-service.html#create-managed-scheduled-executor-service-1[`create-managed-scheduled-executor-service`(1)],
-link:delete-managed-scheduled-executor-service.html#delete-managed-scheduled-executor-service-1[`delete-managed-scheduled-executor-service`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-managed-thread-factories.adoc b/docs/reference-manual/src/main/jbake/content/list-managed-thread-factories.adoc
deleted file mode 100644
index 70630a9..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-managed-thread-factories.adoc
+++ /dev/null
@@ -1,103 +0,0 @@
-type=page
-status=published
-title=list-managed-thread-factories
-next=list-message-security-providers.html
-prev=list-managed-scheduled-executor-services.html
-~~~~~~
-list-managed-thread-factories
-=============================
-
-[[list-managed-thread-factories-1]][[GSRFM875]][[list-managed-thread-factories]]
-
-list-managed-thread-factories
------------------------------
-
-lists managed thread factory resources
-
-[[sthref1669]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-managed-thread-factories [--help]
-[target]
-----
-
-[[sthref1670]]
-
-Description
-
-The `list-managed-thread-factories` subcommand lists managed thread
-factory resources.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1671]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1672]]
-
-Operands
-
-target::
-  Specifies the target for which managed thread factory resources are to
-  be listed. Valid targets are: +
-  `server`;;
-    Lists the resources on the default server instance. This is the
-    default value.
-  `domain`;;
-    Lists the resources for the domain.
-  cluster-name;;
-    Lists the resources on all server instances in the specified
-    cluster.
-  instance-name;;
-    Lists the resources on a specified server instance.
-
-[[sthref1673]]
-
-Examples
-
-[[GSRFM876]][[sthref1674]]
-
-Example 1   Listing Managed Thread Factory Resources
-
-This example lists managed thread factory resources on the default
-server instance.
-
-[source,oac_no_warn]
-----
-asadmin> list-managed-thread-factories
-concurrent/__defaultManagedThreadFactory
-concurrent/myThreadFactory1
-concurrent/myThreadFactory2
-Command list-managed-thread-factories executed successfully.
-----
-
-[[sthref1675]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1676]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-managed-thread-factory.html#create-managed-thread-factory-1[`create-managed-thread-factory`(1)],
-link:delete-managed-thread-factory.html#delete-managed-thread-factory-1[`delete-managed-thread-factory`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-message-security-providers.adoc b/docs/reference-manual/src/main/jbake/content/list-message-security-providers.adoc
deleted file mode 100644
index d514b7a..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-message-security-providers.adoc
+++ /dev/null
@@ -1,110 +0,0 @@
-type=page
-status=published
-title=list-message-security-providers
-next=list-modules.html
-prev=list-managed-thread-factories.html
-~~~~~~
-list-message-security-providers
-===============================
-
-[[list-message-security-providers-1]][[GSRFM00184]][[list-message-security-providers]]
-
-list-message-security-providers
--------------------------------
-
-lists all security message providers for the given message layer
-
-[[sthref1677]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-message-security-providers [--help]
---layer message_layer
-[target]
-----
-
-[[sthref1678]]
-
-Description
-
-The `list-message-security-providers` subcommand enables administrators
-to list all security message providers (`provider-config` sub-elements)
-for the given message layer (`message-security-config` element of
-`domain.xml`).
-
-This subcommand is supported in remote mode only.
-
-[[sthref1679]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--layer`::
-  The message-layer for which the provider has to be listed. The default
-  value is `HttpServlet`.
-
-[[sthref1680]]
-
-Operands
-
-target::
-  Restricts the listing to message security providers for a specific
-  target. Valid values include: +
-  `server`;;
-    Lists providers for the default server instance `server` and is the
-    default value.
-  `domain`;;
-    Lists providers for the domain.
-  cluster;;
-    Lists providers for the server instances in the cluster.
-  instance;;
-    Lists providers for a particular server instance.
-
-[[sthref1681]]
-
-Examples
-
-[[GSRFM684]][[sthref1682]]
-
-Example 1   Listing message security providers
-
-The following example shows how to list message security providers for a
-message layer.
-
-[source,oac_no_warn]
-----
-asadmin> list-message-security-providers 
---layer SOAP 
-XWS_ClientProvider
-ClientProvider
-XWS_ServerProvider
-ServerProvider
-Command list-message-security-providers executed successfully.
-----
-
-[[sthref1683]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1684]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-message-security-provider.html#create-message-security-provider-1[`create-message-security-provider`(1)],
-link:delete-message-security-provider.html#delete-message-security-provider-1[`delete-message-security-provider`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-modules.adoc b/docs/reference-manual/src/main/jbake/content/list-modules.adoc
deleted file mode 100644
index a703ce3..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-modules.adoc
+++ /dev/null
@@ -1,106 +0,0 @@
-type=page
-status=published
-title=list-modules
-next=list-network-listeners.html
-prev=list-message-security-providers.html
-~~~~~~
-list-modules
-============
-
-[[list-modules-1]][[GSRFM00185]][[list-modules]]
-
-list-modules
-------------
-
-lists \{product---name} modules
-
-[[sthref1685]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-modules [--help]
-----
-
-[[sthref1686]]
-
-Description
-
-The `list-modules` subcommand displays a list of modules that are
-accessible to the \{product---name} module subsystem. The version of
-each module is shown.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1687]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1688]]
-
-Examples
-
-[[GSRFM685]][[sthref1689]]
-
-Example 1   Listing \{product---name} Modules
-
-This example provides a partial listing of modules that are accessible
-to the \{product---name} module subsystem
-
-[source,oac_no_warn]
-----
-asadmin> list-modules
-List Of Modules
-
-Module : org.glassfish.transaction.jts:3.0.0.b66
-    Module Characteristics : List of Jars implementing the module
-        Jar : file:/home/gfuser/GlassFish/glassfishv3/glassfish/modules/jts.jar
-    Module Characteristics : Provides to following services
-    Module Characteristics : List of imported modules
-        Imports : org.glassfish.transaction.jts:3.0.0.b66
-Module : com.sun.enterprise.tiger-types-osgi:0.3.96
-Module : org.glassfish.bean-validator:3.0.0.JBoss-400Beta3A
-Module : org.glassfish.core.kernel:3.0.0.b66
-    Module Characteristics : Provides to following services
-    Module Characteristics : List of imported modules
-        Imports : org.glassfish.core.kernel:3.0.0.b66
-    Module Characteristics : List of Jars implementing the module
-        Jar : file:/home/gfuser/GlassFish/glassfishv3/glassfish/modules/kernel.jar
-Module : org.glassfish.common.util:3.0.0.b66
-    Module Characteristics : List of Jars implementing the module
-        Jar : file:/home/gfuser/GlassFish/glassfishv3/glassfish/modules/common-util.jar
-    Module Characteristics : Provides to following services
-    Module Characteristics : List of imported modules
-        Imports : org.glassfish.common.util:3.0.0.b66
-...
-Command list-modules executed successfully
-----
-
-[[sthref1690]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1691]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:list-commands.html#list-commands-1[`list-commands`(1)],
-link:list-components.html#list-components-1[`list-components`(1)],
-link:list-containers.html#list-containers-1[`list-containers`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-network-listeners.adoc b/docs/reference-manual/src/main/jbake/content/list-network-listeners.adoc
deleted file mode 100644
index 66cf12d..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-network-listeners.adoc
+++ /dev/null
@@ -1,101 +0,0 @@
-type=page
-status=published
-title=list-network-listeners
-next=list-nodes.html
-prev=list-modules.html
-~~~~~~
-list-network-listeners
-======================
-
-[[list-network-listeners-1]][[GSRFM00186]][[list-network-listeners]]
-
-list-network-listeners
-----------------------
-
-lists the existing network listeners
-
-[[sthref1692]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-network-listeners [--help]
-[target]
-----
-
-[[sthref1693]]
-
-Description
-
-The `list-network-listeners` subcommand lists the existing network
-listeners. This subcommand is supported in remote mode only.
-
-[[sthref1694]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1695]]
-
-Operands
-
-target::
-  Restricts the listing to network listeners for a specified target.
-  Valid values are as follows: +
-  `server`;;
-    Lists the network listeners for the default server instance. This is
-    the default value.
-  configuration-name;;
-    Lists the network listeners for the specified configuration.
-  cluster-name;;
-    Lists the network listeners for all server instances in the
-    specified cluster.
-  instance-name;;
-    Lists the network listeners for the specified server instance.
-
-[[sthref1696]]
-
-Examples
-
-[[GSRFM686]][[sthref1697]]
-
-Example 1   Listing Network Listeners
-
-The following command lists all the network listeners for the server
-instance:
-
-[source,oac_no_warn]
-----
-asadmin> list-network-listeners
-admin-listener
-http-listener-1
-https-listener-2
-Command list-network-listeners executed successfully.
-----
-
-[[sthref1698]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1699]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-network-listener.html#create-network-listener-1[`create-network-listener`(1)],
-link:delete-network-listener.html#delete-network-listener-1[`delete-network-listener`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-nodes-config.adoc b/docs/reference-manual/src/main/jbake/content/list-nodes-config.adoc
deleted file mode 100644
index 06cbcec..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-nodes-config.adoc
+++ /dev/null
@@ -1,162 +0,0 @@
-type=page
-status=published
-title=list-nodes-config
-next=list-nodes-dcom.html
-prev=list-nodes.html
-~~~~~~
-list-nodes-config
-=================
-
-[[list-nodes-config-1]][[GSRFM00188]][[list-nodes-config]]
-
-list-nodes-config
------------------
-
-lists all \{product---name} nodes that do not support remote
-communication in a domain
-
-[[sthref1709]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-nodes-config [--help] 
-[--long={false|true}]
-----
-
-[[sthref1710]]
-
-Description
-
-The `list-nodes-config` subcommand lists all \{product---name} nodes
-that do not support remote communication in a domain.
-
-
-[NOTE]
-=======================================================================
-
-To list all nodes in a domain regardless of the type of the node, run
-the link:list-nodes.html#list-nodes-1[`list-nodes`(1)] subcommand.
-
-=======================================================================
-
-
-By default, the subcommand displays the following information for each
-node that is listed:
-
-* The name of the node
-* The type of the node, which is `CONFIG`
-* The name of the host that the node represents
-
-The `--long` option of the subcommand specifies whether the nodes are
-listed in long format. In long format, the following additional
-information about each node is displayed:
-
-* The path to the parent of the base installation directory of
-\{product---name} on the host that the node represents
-* A comma-separated list of the names of the \{product---name} instances
-that reside on the node
-
-If the `--terse` option of the
-link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility is `true` and the
-`--long` option of the subcommand is `false`, the subcommand lists only
-the name of each node.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1711]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--long`::
-`-l`::
-  Specifies whether the nodes are listed in long format. +
-  Possible values are as follows: +
-  `true`;;
-    The nodes are listed in long format.
-  `false`;;
-    The nodes are listed in short format (default).
-
-[[sthref1712]]
-
-Examples
-
-[[GSRFM690]][[sthref1713]]
-
-Example 1   Listing \{product---name} Nodes
-
-This example displays the name, type, and host for all \{product---name}
-nodes that do not support remote communication in the domain `domain1`.
-
-[source,oac_no_warn]
-----
-asadmin> list-nodes-config
-localhost-domain1  CONFIG  localhost
-devnode  CONFIG  localhost
-Command list-nodes-config executed successfully.
-----
-
-[[GSRFM691]][[sthref1714]]
-
-Example 2   Listing Only the Names of \{product---name} Nodes
-
-This example uses the `--terse` option of the `asadmin` utility to list
-only the names of the \{product---name} nodes that do not support remote
-communication in the domain `domain1`.
-
-[source,oac_no_warn]
-----
-asadmin> list-nodes-config --terse=true
-localhost-domain1
-devnode
-----
-
-[[GSRFM692]][[sthref1715]]
-
-Example 3   Listing \{product---name} Nodes in Long Format
-
-This example lists the \{product---name} nodes that do not support
-remote communication in the domain `domain1`in long format.
-
-[source,oac_no_warn]
-----
-asadmin> list-nodes-config --long=true
-NODE NAME           TYPE     NODE HOST   INSTALL DIRECTORY    REFERENCED BY  
-localhost-domain1   CONFIG   localhost   /export/glassfish3                  
-devnode             CONFIG   localhost   /export/glassfish3   pmdsa1         
-Command list-nodes-config executed successfully.
-----
-
-[[sthref1716]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1717]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-node-config.html#create-node-config-1[`create-node-config`(1)],
-link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
-link:create-node-ssh.html#create-node-ssh-1[`create-node-ssh`(1)],
-link:delete-node-config.html#delete-node-config-1[`delete-node-config`(1)],
-link:delete-node-dcom.html#delete-node-dcom-1[`delete-node-dcom`(1)],
-link:delete-node-ssh.html#delete-node-ssh-1[`delete-node-ssh`(1)],
-link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
-link:list-nodes-dcom.html#list-nodes-dcom-1[`list-nodes-dcom`(1)],
-link:list-nodes-ssh.html#list-nodes-ssh-1[`list-nodes-ssh`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-nodes-dcom.adoc b/docs/reference-manual/src/main/jbake/content/list-nodes-dcom.adoc
deleted file mode 100644
index b871f87..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-nodes-dcom.adoc
+++ /dev/null
@@ -1,166 +0,0 @@
-type=page
-status=published
-title=list-nodes-dcom
-next=list-nodes-ssh.html
-prev=list-nodes-config.html
-~~~~~~
-list-nodes-dcom
-===============
-
-[[list-nodes-dcom-1]][[GSRFM693]][[list-nodes-dcom]]
-
-list-nodes-dcom
----------------
-
-lists all \{product---name} nodes that support communication over DCOM
-in a domain
-
-[[sthref1718]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-nodes-dcom [--help] 
-[--long={false|true}]
-----
-
-[[sthref1719]]
-
-Description
-
-The `list-nodes-dcom` subcommand lists all \{product---name} nodes that
-support communication over the Distributed Component Object Model (DCOM)
-remote protocol. The DCOM protocol is available only on Windows systems.
-
-
-[NOTE]
-=======================================================================
-
-To list all nodes in a domain regardless of the type of the node, run
-the link:list-nodes.html#list-nodes-1[`list-nodes`(1)] subcommand.
-
-=======================================================================
-
-
-By default, the subcommand displays the following information for each
-node that is listed:
-
-* The name of the node
-* The type of the node, which is `DCOM`
-* The name of the host that the node represents
-
-The `--long` option of the subcommand specifies whether the nodes are
-listed in long format. In long format, the following additional
-information about each node is displayed:
-
-* The path to the parent of the base installation directory of
-\{product---name} on the host that the node represents
-* A comma-separated list of the names of the \{product---name} instances
-that reside on the node
-
-If the `--terse` option of the
-link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility is `true` and the
-`--long` option of the subcommand is `false`, the subcommand lists only
-the name of each node.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1720]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--long`::
-`-l`::
-  Specifies whether the nodes are listed in long format. +
-  Possible values are as follows: +
-  `true`;;
-    The nodes are listed in long format.
-  `false`;;
-    The nodes are listed in short format (default).
-
-[[sthref1721]]
-
-Examples
-
-[[GSRFM694]][[sthref1722]]
-
-Example 1   Listing \{product---name} Nodes
-
-This example displays the name, type, and host for all \{product---name}
-nodes that support communication over DCOM in a domain.
-
-[source,oac_no_warn]
-----
-asadmin> list-nodes-dcom
-xkyd  DCOM  xkyd.example.com
-wpmdl2  DCOM  wpmdl2.example.com
-wpmdl1  DCOM  wpmdl1.example.com
-Command list-nodes-dcom executed successfully.
-----
-
-[[GSRFM695]][[sthref1723]]
-
-Example 2   Listing Only the Names of \{product---name} Nodes
-
-This example uses the `--terse` option of the `asadmin` utility to list
-only the names of the \{product---name} nodes that support communication
-over DCOM in a domain.
-
-[source,oac_no_warn]
-----
-asadmin> list-nodes-dcom --terse=true
-xkyd
-wpmdl2
-wpmdl1
-----
-
-[[GSRFM696]][[sthref1724]]
-
-Example 3   Listing \{product---name} Nodes in Long Format
-
-This example lists the \{product---name} nodes that support
-communication over DCOM in a domain in long format.
-
-[source,oac_no_warn]
-----
-asadmin> list-nodes-dcom --long=true
-NODE NAME    TYPE   NODE HOST            INSTALL DIRECTORY   REFERENCED BY
-xkyd         DCOM   xkyd.example.com     C:\glassfish3
-wpmdl2       DCOM   wpmdl2.example.com   C:\glassfish3       wdi2
-wpmdl1       DCOM   wpmdl1.example.com   C:\glassfish3       wdi1
-Command list-nodes-dcom executed successfully.
-----
-
-[[sthref1725]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1726]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-node-config.html#create-node-config-1[`create-node-config`(1)],
-link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
-link:create-node-ssh.html#create-node-ssh-1[`create-node-ssh`(1)],
-link:delete-node-config.html#delete-node-config-1[`delete-node-config`(1)],
-link:delete-node-dcom.html#delete-node-dcom-1[`delete-node-dcom`(1)],
-link:delete-node-ssh.html#delete-node-ssh-1[`delete-node-ssh`(1)],
-link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
-link:list-nodes-config.html#list-nodes-config-1[`list-nodes-config`(1)],
-link:#list-nodes-dcom-1[`list-nodes-dcom`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-nodes-ssh.adoc b/docs/reference-manual/src/main/jbake/content/list-nodes-ssh.adoc
deleted file mode 100644
index 3877bf1..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-nodes-ssh.adoc
+++ /dev/null
@@ -1,162 +0,0 @@
-type=page
-status=published
-title=list-nodes-ssh
-next=list-password-aliases.html
-prev=list-nodes-dcom.html
-~~~~~~
-list-nodes-ssh
-==============
-
-[[list-nodes-ssh-1]][[GSRFM00189]][[list-nodes-ssh]]
-
-list-nodes-ssh
---------------
-
-lists all \{product---name} nodes that support communication over SSH in
-a domain
-
-[[sthref1727]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-nodes-ssh [--help] 
-[--long={false|true}]
-----
-
-[[sthref1728]]
-
-Description
-
-The `list-nodes-ssh` subcommand lists all \{product---name} nodes that
-support communication over secure shell (SSH) in a domain.
-
-
-[NOTE]
-=======================================================================
-
-To list all nodes in a domain regardless of the type of the node, run
-the link:list-nodes.html#list-nodes-1[`list-nodes`(1)] subcommand.
-
-=======================================================================
-
-
-By default, the subcommand displays the following information for each
-node that is listed:
-
-* The name of the node
-* The type of the node, which is `SSH`
-* The name of the host that the node represents
-
-The `--long` option of the subcommand specifies whether the nodes are
-listed in long format. In long format, the following additional
-information about each node is displayed:
-
-* The path to the parent of the base installation directory of
-\{product---name} on the host that the node represents
-* A comma-separated list of the names of the \{product---name} instances
-that reside on the node
-
-If the `--terse` option of the
-link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility is `true` and the
-`--long` option of the subcommand is `false`, the subcommand lists only
-the name of each node.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1729]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--long`::
-`-l`::
-  Specifies whether the nodes are listed in long format. +
-  Possible values are as follows: +
-  `true`;;
-    The nodes are listed in long format.
-  `false`;;
-    The nodes are listed in short format (default).
-
-[[sthref1730]]
-
-Examples
-
-[[GSRFM697]][[sthref1731]]
-
-Example 1   Listing \{product---name} Nodes
-
-This example displays the name, type, and host for all \{product---name}
-nodes that support communication over SSH in a domain.
-
-[source,oac_no_warn]
-----
-asadmin> list-nodes-ssh
-sj02  SSH  sj02.example.com
-sj01  SSH  sj01.example.com
-Command list-nodes-ssh executed successfully.
-----
-
-[[GSRFM698]][[sthref1732]]
-
-Example 2   Listing Only the Names of \{product---name} Nodes
-
-This example uses the `--terse` option of the `asadmin` utility to list
-only the names of the \{product---name} nodes that support communication
-over SSH in a domain.
-
-[source,oac_no_warn]
-----
-asadmin> list-nodes-ssh --terse=true
-sj02
-sj01
-----
-
-[[GSRFM699]][[sthref1733]]
-
-Example 3   Listing \{product---name} Nodes in Long Format
-
-This example lists the \{product---name} nodes that support
-communication over SSH in a domain in long format.
-
-[source,oac_no_warn]
-----
-asadmin> list-nodes-ssh --long=true
-NODE NAME   TYPE   NODE HOST          INSTALL DIRECTORY    REFERENCED BY           
-sj02        SSH    sj02.example.com   /export/glassfish3   pmd-i-sj02, yml-i-sj02  
-sj01        SSH    sj01.example.com   /export/glassfish3   pmd-i-sj01, yml-i-sj01  
-Command list-nodes-ssh executed successfully.
-----
-
-[[sthref1734]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1735]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
-link:create-node-config.html#create-node-config-1[`create-node-config`(1)],
-link:create-node-ssh.html#create-node-ssh-1[`create-node-ssh`(1)],
-link:delete-node-config.html#delete-node-config-1[`delete-node-config`(1)],
-link:delete-node-dcom.html#delete-node-dcom-1[`delete-node-dcom`(1)],
-link:delete-node-ssh.html#delete-node-ssh-1[`delete-node-ssh`(1)],
-link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
-link:list-nodes-config.html#list-nodes-config-1[`list-nodes-config`(1)],
-link:list-nodes-dcom.html#list-nodes-dcom-1[`list-nodes-dcom`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-nodes.adoc b/docs/reference-manual/src/main/jbake/content/list-nodes.adoc
deleted file mode 100644
index 0974ee5..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-nodes.adoc
+++ /dev/null
@@ -1,163 +0,0 @@
-type=page
-status=published
-title=list-nodes
-next=list-nodes-config.html
-prev=list-network-listeners.html
-~~~~~~
-list-nodes
-==========
-
-[[list-nodes-1]][[GSRFM00187]][[list-nodes]]
-
-list-nodes
-----------
-
-lists all \{product---name} nodes in a domain
-
-[[sthref1700]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-nodes [--help] 
-[--long={false|true}]
-----
-
-[[sthref1701]]
-
-Description
-
-The `list-nodes` subcommand lists all \{product---name} nodes in a
-domain.
-
-By default, the subcommand displays the following information for each
-node that is listed:
-
-* The name of the node
-* The type of the node, which is one of the following types:::
-`CONFIG`::
-  The node does not support remote communication.
-`DCOM`::
-  The node supports communication over the Distributed Component Object
-  Model (DCOM) remote protocol.
-`SSH`::
-  The node supports communication over secure shell (SSH).
-* The name of the host that the node represents
-
-The `--long` option of the subcommand specifies whether the nodes are
-listed in long format. In long format, the following additional
-information about each node is displayed:
-
-* The path to the parent of the base installation directory of
-\{product---name} on the host that the node represents
-* A comma-separated list of the names of the \{product---name} instances
-that reside on the node
-
-If the `--terse` option of the
-link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility is `true` and the
-`--long` option of the subcommand is `false`, the subcommand lists only
-the name of each node.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1702]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--long`::
-`-l`::
-  Specifies whether the nodes are listed in long format. +
-  Possible values are as follows: +
-  `true`;;
-    The nodes are listed in long format.
-  `false`;;
-    The nodes are listed in short format (default).
-
-[[sthref1703]]
-
-Examples
-
-[[GSRFM687]][[sthref1704]]
-
-Example 1   Listing \{product---name} Nodes
-
-This example displays the name, type, and host for all \{product---name}
-nodes in the domain `domain1`.
-
-[source,oac_no_warn]
-----
-asadmin> list-nodes
-localhost-domain1  CONFIG  localhost
-sj02  SSH  sj02.example.com
-sj01  SSH  sj01.example.com
-devnode  CONFIG  localhost
-Command list-nodes executed successfully.
-----
-
-[[GSRFM688]][[sthref1705]]
-
-Example 2   Listing Only the Names of \{product---name} Nodes
-
-This example uses the `--terse` option of the `asadmin` utility to list
-only the names of the \{product---name} nodes in the domain `domain1`.
-
-[source,oac_no_warn]
-----
-asadmin> list-nodes --terse=true
-localhost-domain1
-sj02
-sj01
-devnode
-----
-
-[[GSRFM689]][[sthref1706]]
-
-Example 3   Listing \{product---name} Nodes in Long Format
-
-This example lists the \{product---name} nodes in the domain `domain1`
-in long format.
-
-[source,oac_no_warn]
-----
-asadmin> list-nodes --long=true
-NODE NAME           TYPE     NODE HOST          INSTALL DIRECTORY     REFERENCED BY
-localhost-domain1   CONFIG   localhost          /export/glassfish3                 
-sj02                SSH      sj02.example.com   /export/glassfish3    pmd-i2, yml-i2
-sj01                SSH      sj01.example.com   /export/glassfish3    pmd-i1, yml-i1
-devnode             CONFIG   localhost          /export/glassfish3    pmdsa1
-Command list-nodes executed successfully.
-----
-
-[[sthref1707]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1708]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-node-config.html#create-node-config-1[`create-node-config`(1)],
-link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
-link:create-node-ssh.html#create-node-ssh-1[`create-node-ssh`(1)],
-link:delete-node-config.html#delete-node-config-1[`delete-node-config`(1)],
-link:delete-node-dcom.html#delete-node-dcom-1[`delete-node-dcom`(1)],
-link:delete-node-ssh.html#delete-node-ssh-1[`delete-node-ssh`(1)],
-link:list-nodes-config.html#list-nodes-config-1[`list-nodes-config`(1)],
-link:list-nodes-dcom.html#list-nodes-dcom-1[`list-nodes-dcom`(1)],
-link:list-nodes-ssh.html#list-nodes-ssh-1[`list-nodes-ssh`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-password-aliases.adoc b/docs/reference-manual/src/main/jbake/content/list-password-aliases.adoc
deleted file mode 100644
index a9ad850..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-password-aliases.adoc
+++ /dev/null
@@ -1,77 +0,0 @@
-type=page
-status=published
-title=list-password-aliases
-next=list-persistence-types.html
-prev=list-nodes-ssh.html
-~~~~~~
-list-password-aliases
-=====================
-
-[[list-password-aliases-1]][[GSRFM00190]][[list-password-aliases]]
-
-list-password-aliases
----------------------
-
-lists all password aliases
-
-[[sthref1736]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-password-aliases [--help]
-----
-
-[[sthref1737]]
-
-Description
-
-This subcommand lists all of the password aliases.
-
-[[sthref1738]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1739]]
-
-Examples
-
-[[GSRFM700]][[sthref1740]]
-
-Example 1   Listing all password aliases
-
-[source,oac_no_warn]
-----
-asadmin> list-password-aliases 
-jmspassword-alias
-Command list-password-aliases executed successfully
-----
-
-[[sthref1741]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1742]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-password-alias.html#create-password-alias-1[`create-password-alias`(1)],
-link:delete-password-alias.html#delete-password-alias-1[`delete-password-alias`(1)],
-link:update-password-alias.html#update-password-alias-1[`update-password-alias`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-persistence-types.adoc b/docs/reference-manual/src/main/jbake/content/list-persistence-types.adoc
deleted file mode 100644
index 29f1b95..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-persistence-types.adoc
+++ /dev/null
@@ -1,126 +0,0 @@
-type=page
-status=published
-title=list-persistence-types
-next=list-protocol-filters.html
-prev=list-password-aliases.html
-~~~~~~
-list-persistence-types
-======================
-
-[[list-persistence-types-1]][[GSRFM00191]][[list-persistence-types]]
-
-list-persistence-types
-----------------------
-
-lists registered persistence types for HTTP sessions and SFSB instances
-
-[[sthref1743]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-persistence-types [--help] 
---type={web|ejb}
-----
-
-[[sthref1744]]
-
-Description
-
-The `list-persistence-types` subcommand lists registered persistence
-types for HTTP sessions and stateful session bean (SFSB) instances. The
-built-in persistence types are `memory`, `file`, and `replicated`. The
-`memory` type does not apply to SFSB instances.
-
-Other persistence types can be added using the `StrategyBuilder` class.
-For more information, see the link:../add-on-component-development-guide/toc.html#GSACG[GlassFish Server Open Source
-Edition Add-On Component Development Guide].
-
-To set the persistence type for HTTP sessions, use the `set` subcommand
-to set the `persistence-type` attribute. For example:
-
-[source,oac_no_warn]
-----
-asadmin> set c1-config.availability-service.web-container-availability.persistence-type=file
-----
-
-To set the persistence type for SFSB instances without availability
-enabled, use the `set` subcommand to set the `sfsb-persistence-type`
-attribute. For example:
-
-[source,oac_no_warn]
-----
-asadmin> set c1-config.availability-service.ejb-container-availability.sfsb-persistence-type=file
-----
-
-To set the persistence type for SFSB instances with availability
-enabled, use the `set` subcommand to set the `sfsb-ha-persistence-type`
-attribute. For example:
-
-[source,oac_no_warn]
-----
-asadmin> set 
-c1-config.availability-service.ejb-container-availability.sfsb-ha-persistence-type=replicated
-----
-
-This subcommand is supported in remote mode only.
-
-[[sthref1745]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--type`::
-  Specifies the type of sessions for which persistence types are listed.
-  Allowed values are as follows: +
-  * `web` — Lists persistence types for HTTP sessions.
-  * `ejb` — Lists persistence types for SFSB instances.
-
-[[sthref1746]]
-
-Examples
-
-[[GSRFM701]][[sthref1747]]
-
-Example 1   Listing Persistence Types for HTTP Sessions
-
-This example lists persistence types for HTTP sessions.
-
-[source,oac_no_warn]
-----
-asadmin> list-persistence-types --type=web
-memory
-file
-replicated
-
-Command list-persistence-types executed successfully.
-----
-
-[[sthref1748]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1749]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:get.html#get-1[`get`(1)], link:list.html#list-1[`list`(1)],
-link:set.html#set-1[`set`(1)]
-
-link:../add-on-component-development-guide/toc.html#GSACG[GlassFish Server Open Source Edition Add-On Component
-Development Guide]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-protocol-filters.adoc b/docs/reference-manual/src/main/jbake/content/list-protocol-filters.adoc
deleted file mode 100644
index 4ee6f5e..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-protocol-filters.adoc
+++ /dev/null
@@ -1,103 +0,0 @@
-type=page
-status=published
-title=list-protocol-filters
-next=list-protocol-finders.html
-prev=list-persistence-types.html
-~~~~~~
-list-protocol-filters
-=====================
-
-[[list-protocol-filters-1]][[GSRFM00193]][[list-protocol-filters]]
-
-list-protocol-filters
----------------------
-
-lists the existing protocol filters
-
-[[sthref1750]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-protocol-filters [--help]
-[--target server]
-protocol-name
-----
-
-[[sthref1751]]
-
-Description
-
-The `list-protocol-filters` subcommand lists the existing protocol
-filters. This subcommand is supported in remote mode only.
-
-[[sthref1752]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-target::
-  Restricts the listing to protocol filters for a specified target.
-  Valid values are as follows: +
-  `server`;;
-    Lists the protocol filters for the default server instance. This is
-    the default value.
-  configuration-name;;
-    Lists the protocol filters for the specified configuration.
-  cluster-name;;
-    Lists the protocol filters for all server instances in the specified
-    cluster.
-  instance-name;;
-    Lists the protocol filters for the specified server instance.
-
-[[sthref1753]]
-
-Operands
-
-protocol-name::
-  The name of the protocol for which to list protocol filters.
-
-[[sthref1754]]
-
-Examples
-
-[[GSRFM704]][[sthref1755]]
-
-Example 1   Listing Protocol Filters
-
-The following command lists all the protocol filters for the server
-instance:
-
-[source,oac_no_warn]
-----
-asadmin> list-protocol-filters http1
-http1-filter
-https1-filter
-Command list-protocol-filters executed successfully.
-----
-
-[[sthref1756]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1757]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-protocol-filter.html#create-protocol-filter-1[`create-protocol-filter`(1)],
-link:delete-protocol-filter.html#delete-protocol-filter-1[`delete-protocol-filter`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-protocol-finders.adoc b/docs/reference-manual/src/main/jbake/content/list-protocol-finders.adoc
deleted file mode 100644
index da76272..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-protocol-finders.adoc
+++ /dev/null
@@ -1,84 +0,0 @@
-type=page
-status=published
-title=list-protocol-finders
-next=list-protocols.html
-prev=list-protocol-filters.html
-~~~~~~
-list-protocol-finders
-=====================
-
-[[list-protocol-finders-1]][[GSRFM00194]][[list-protocol-finders]]
-
-list-protocol-finders
----------------------
-
-lists the existing protocol finders
-
-[[sthref1758]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-protocol-finders [--help]
-[--target server]
-protocol-name
-----
-
-[[sthref1759]]
-
-Description
-
-The `list-protocol-finders` subcommand lists the existing protocol
-finders. This subcommand is supported in remote mode only.
-
-[[sthref1760]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-target::
-  Restricts the listing to protocol finders for a specified target.
-  Valid values are as follows: +
-  `server`;;
-    Lists the protocol finders for the default server instance. This is
-    the default value.
-  configuration-name;;
-    Lists the protocol finders for the specified configuration.
-  cluster-name;;
-    Lists the protocol finders for all server instances in the specified
-    cluster.
-  instance-name;;
-    Lists the protocol finders for the specified server instance.
-
-[[sthref1761]]
-
-Operands
-
-protocol-name::
-  The name of the protocol for which to list protocol finders.
-
-[[sthref1762]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1763]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-protocol-finder.html#create-protocol-finder-1[`create-protocol-finder`(1)],
-link:delete-protocol-finder.html#delete-protocol-finder-1[`delete-protocol-finder`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-protocols.adoc b/docs/reference-manual/src/main/jbake/content/list-protocols.adoc
deleted file mode 100644
index c410174..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-protocols.adoc
+++ /dev/null
@@ -1,101 +0,0 @@
-type=page
-status=published
-title=list-protocols
-next=list-resource-adapter-configs.html
-prev=list-protocol-finders.html
-~~~~~~
-list-protocols
-==============
-
-[[list-protocols-1]][[GSRFM00195]][[list-protocols]]
-
-list-protocols
---------------
-
-lists the existing protocols
-
-[[sthref1764]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-protocols [--help]
-[target]
-----
-
-[[sthref1765]]
-
-Description
-
-The `list-protocols` subcommand lists the existing protocols. This
-subcommand is supported in remote mode only.
-
-[[sthref1766]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1767]]
-
-Operands
-
-target::
-  Restricts the listing to protocols for a specified target. Valid
-  values are as follows: +
-  `server`;;
-    Lists the protocols for the default server instance. This is the
-    default value.
-  configuration-name;;
-    Lists the protocols for the specified configuration.
-  cluster-name;;
-    Lists the protocols for all server instances in the specified
-    cluster.
-  instance-name;;
-    Lists the protocols for the specified server instance.
-
-[[sthref1768]]
-
-Examples
-
-[[GSRFM705]][[sthref1769]]
-
-Example 1   Listing Protocols
-
-The following command lists all the protocols for the server instance:
-
-[source,oac_no_warn]
-----
-asadmin> list-protocols
-admin-listener
-http-1
-http-listener-1
-http-listener-2
-Command list-protocols executed successfully.
-----
-
-[[sthref1770]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1771]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-protocol.html#create-protocol-1[`create-protocol`(1)],
-link:delete-protocol.html#delete-protocol-1[`delete-protocol`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-resource-adapter-configs.adoc b/docs/reference-manual/src/main/jbake/content/list-resource-adapter-configs.adoc
deleted file mode 100644
index 539a038..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-resource-adapter-configs.adoc
+++ /dev/null
@@ -1,90 +0,0 @@
-type=page
-status=published
-title=list-resource-adapter-configs
-next=list-resource-refs.html
-prev=list-protocols.html
-~~~~~~
-list-resource-adapter-configs
-=============================
-
-[[list-resource-adapter-configs-1]][[GSRFM00196]][[list-resource-adapter-configs]]
-
-list-resource-adapter-configs
------------------------------
-
-lists the names of the current resource adapter configurations
-
-[[sthref1772]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-resource-adapter-configs [--help] 
-[--raname raname] [--verbose {false|true}]
-----
-
-[[sthref1773]]
-
-Description
-
-This command lists the configuration information in the `domain.xml` for
-the connector module. It lists an entry called `resource-adapter-config`
-in the `domain.xml` file. If the `--raname` option is specified, only
-the resource adapter configurations for the specified connector module
-are listed.
-
-This command is supported in remote mode only.
-
-[[sthref1774]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--raname`::
-  Specifies the connector module name.
-`--verbose`::
-  Lists the properties that are configured. Default value is false.
-
-[[sthref1775]]
-
-Examples
-
-[[GSRFM706]][[sthref1776]]
-
-Example 1   Listing the Resource Adapter Configurations
-
-This example lists the current resource adapter configurations.
-
-[source,oac_no_warn]
-----
-asadmin> list-resource-adapter-configs
-ra1
-ra2
-Command list-resource-adapter-configs executed successfully
-----
-
-[[sthref1777]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1778]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-resource-adapter-config.html#create-resource-adapter-config-1[`create-resource-adapter-config`(1)],
-link:delete-resource-adapter-config.html#delete-resource-adapter-config-1[`delete-resource-adapter-config`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-resource-refs.adoc b/docs/reference-manual/src/main/jbake/content/list-resource-refs.adoc
deleted file mode 100644
index 4834082..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-resource-refs.adoc
+++ /dev/null
@@ -1,104 +0,0 @@
-type=page
-status=published
-title=list-resource-refs
-next=list-secure-admin-internal-users.html
-prev=list-resource-adapter-configs.html
-~~~~~~
-list-resource-refs
-==================
-
-[[list-resource-refs-1]][[GSRFM00197]][[list-resource-refs]]
-
-list-resource-refs
-------------------
-
-lists existing resource references
-
-[[sthref1779]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-resource-refs [--help] 
-[target]
-----
-
-[[sthref1780]]
-
-Description
-
-The `list-resource-refs` subcommand lists all resource references in a
-cluster or an unclustered server instance. This effectively lists all
-the resources (for example, JDBC resources) available in the JNDI tree
-of the specified target.
-
-The target instance or instances in the cluster need not be running or
-available for this subcommand to succeed.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1781]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1782]]
-
-Operands
-
-target::
-  The target for which you are listing the resource references. Valid
-  targets are as follows: +
-  `server`;;
-    Lists the resource references for the default server instance and is
-    the default target.
-  cluster_name;;
-    Lists the resource references for every server instance in the
-    cluster.
-  instance_name;;
-    Lists the resource references for the named unclustered server
-    instance.
-
-[[sthref1783]]
-
-Examples
-
-[[GSRFM707]][[sthref1784]]
-
-Example 1   Listing Resource References for a Cluster
-
-This example lists resource references for the cluster `cluster1`.
-
-[source,oac_no_warn]
-----
-asadmin> list-resource-refs cluster1
-jms/Topic
-Command list-resource-refs executed successfully.
-----
-
-[[sthref1785]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1786]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-resource-ref.html#create-resource-ref-1[`create-resource-ref`(1)],
-link:delete-resource-ref.html#delete-resource-ref-1[`delete-resource-ref`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-secure-admin-internal-users.adoc b/docs/reference-manual/src/main/jbake/content/list-secure-admin-internal-users.adoc
deleted file mode 100644
index 7dbb154..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-secure-admin-internal-users.adoc
+++ /dev/null
@@ -1,114 +0,0 @@
-type=page
-status=published
-title=list-secure-admin-internal-users
-next=list-secure-admin-principals.html
-prev=list-resource-refs.html
-~~~~~~
-list-secure-admin-internal-users
-================================
-
-[[list-secure-admin-internal-users-1]][[GSRFM00199]][[list-secure-admin-internal-users]]
-
-list-secure-admin-internal-users
---------------------------------
-
-lists the user names that the \{product---name} DAS and instances use to
-authenticate with each other and to authorize admin operations.
-
-[[sthref1787]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-secure-admin-internal-users [--help]  
-[--long={false|true}]
-[--output output]
-[--header={false|true}]
-[name]
-----
-
-[[sthref1788]]
-
-Description
-
-The `list-secure-admin-internal-users` subcommand lists the user names
-that the \{product---name} DAS and instances use to authenticate with
-each other and to authorize admin operations.
-
-[[sthref1789]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--long`::
-`-l`::
-  Displays detailed information about each internal user. The default
-  value is `false.`
-`--output`::
-`-o`::
-  Displays specific details about each internal user. Use a
-  comma-separated list to specify the details you want to display and
-  their order. The values are case-insensitive. +
-  Possible values are as follows: +
-  `username`;;
-    Displays the user name for the internal user.
-  `password-alias`;;
-    Displays the password alias for the internal user.
-`--header`::
-`-h`::
-  Specifies whether column headings are displayed when the `--long`
-  option is used. The default value is `true`. To suppress the headings,
-  set the `--header` option to `false`.
-
-[[sthref1790]]
-
-Operands
-
-name::
-  The user name for the internal user for which you want to display
-  details.
-
-[[sthref1791]]
-
-Examples
-
-[[GSRFM709]][[sthref1792]]
-
-Example 1   Listing the User Name for Secure Admin
-
-This example lists the user names that the \{product---name} DAS and
-instances use to authenticate with each other and to authorize admin
-operations.
-
-[source,oac_no_warn]
-----
-asadmin> list-secure-admin-internal-users
-
-Command list-secure-admin-internal-users executed successfully.
-----
-
-[[sthref1793]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1794]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:enable-secure-admin.html#enable-secure-admin-1[`enable-secure-admin`(1)],
-link:enable-secure-admin-internal-user.html#enable-secure-admin-internal-user-1[`enable-secure-admin-internal-user`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-secure-admin-principals.adoc b/docs/reference-manual/src/main/jbake/content/list-secure-admin-principals.adoc
deleted file mode 100644
index 92a3aec..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-secure-admin-principals.adoc
+++ /dev/null
@@ -1,114 +0,0 @@
-type=page
-status=published
-title=list-secure-admin-principals
-next=list-sub-components.html
-prev=list-secure-admin-internal-users.html
-~~~~~~
-list-secure-admin-principals
-============================
-
-[[list-secure-admin-principals-1]][[GSRFM00200]][[list-secure-admin-principals]]
-
-list-secure-admin-principals
-----------------------------
-
-lists the certificates for which \{product---name} accepts admin
-requests from clients.
-
-[[sthref1795]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-secure-admin-principals [--help] 
-[--long={false|true}]
-[--output output]
-[--header={false|true}]
-[name]
-----
-
-[[sthref1796]]
-
-Description
-
-The `list-secure-admin-principals` subcommand lists the certificates for
-which \{product---name} accepts admin requests from clients.
-
-[[sthref1797]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--long`::
-`-l`::
-  Displays detailed information about the certificates for which
-  \{product---name} accepts admin requests from clients. The default
-  value is `false`.
-`--output`::
-`-o`::
-  Displays specific details about the certificates for which
-  \{product---name} accepts admin requests from clients. Use a
-  comma-separated list to specify the details you want to display and
-  their order. The values are case-insensitive. +
-  Possible values are as follows: +
-  `DN`;;
-    Displays the distinguished name (DN) of each certificate.
-`--header`::
-`-h`::
-  Specifies whether column headings are displayed when the `--long`
-  option is used. The default value is `true`. To suppress the headings,
-  set the `--header` option to `false`.
-
-[[sthref1798]]
-
-Operands
-
-name::
-  The distinguished name of the certificate, specified as a
-  comma-separated list in quotes. For example:
-  `"CN=system.amer.oracle.com,OU=GlassFish,O=Oracle Corporation,L=Santa Clara,ST=California,C=US"`.
-
-[[sthref1799]]
-
-Examples
-
-[[GSRFM710]][[sthref1800]]
-
-Example 1   Listing the Certificates
-
-This example lists the certificates for which \{product---name} accepts
-admin requests from clients.
-
-[source,oac_no_warn]
-----
-asadmin> list-secure-admin-principals 
-CN=localhost,OU=GlassFish,O=Oracle Corporation,L=Santa Clara,ST=California,C=US
-CN=localhost-instance,OU=GlassFish,O=Oracle Corporation,L=Santa Clara,ST=California,C=US
-Command list-secure-admin-principals executed successfully.
-----
-
-[[sthref1801]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1802]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:enable-secure-admin.html#enable-secure-admin-1[`enable-secure-admin`(1)],
-link:enable-secure-admin-principal.html#enable-secure-admin-principal-1[`enable-secure-admin-principal`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-sub-components.adoc b/docs/reference-manual/src/main/jbake/content/list-sub-components.adoc
deleted file mode 100644
index 31cae5f..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-sub-components.adoc
+++ /dev/null
@@ -1,125 +0,0 @@
-type=page
-status=published
-title=list-sub-components
-next=list-supported-cipher-suites.html
-prev=list-secure-admin-principals.html
-~~~~~~
-list-sub-components
-===================
-
-[[list-sub-components-1]][[GSRFM00201]][[list-sub-components]]
-
-list-sub-components
--------------------
-
-lists EJB or servlet components in a deployed module or module of a
-deployed application
-
-[[sthref1803]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-sub-components [--help] 
-[--type type]
-[--appname appname] [--resources]
-modulename
-----
-
-[[sthref1804]]
-
-Description
-
-The `list-sub-components` subcommand lists EJB or servlet components in
-a deployed module or in a module of a deployed application. If a module
-is not specified, all modules are listed. The `--appname` option
-functions only when the specified module is stand-alone. To display a
-specific module in an application, you must specify the module name with
-the `--appname` option.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1805]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--type`::
-  Specifies the type of component to be listed. The options are `ejbs`
-  and `servlets`. If nothing is specified, then all of the components
-  are listed.
-`--appname`::
-  Identifies the name of the application. This option is required when
-  the desired output is the subcomponents of an embedded module of a
-  deployed application. +
-  The name can include an optional version identifier, which follows the
-  name and is separated from the name by a colon (`:`). The version
-  identifier must begin with a letter or number. It can contain
-  alphanumeric characters plus underscore (`_`), dash (`-`), and period
-  (`.`) characters. For more information about module and application
-  versions, see "link:../application-deployment-guide/overview.html#GSDPG00324[Module and Application Versions]" in
-  GlassFish Server Open Source Edition Application Deployment Guide.
-`--resources`::
-  Lists the application-scoped resources for each subcomponent.
-
-[[sthref1806]]
-
-Operands
-
-modulename::
-  Specifies the name of the module containing the subcomponent. +
-  The name can include an optional version identifier, which follows the
-  name and is separated from the name by a colon (`:`). The version
-  identifier must begin with a letter or number. It can contain
-  alphanumeric characters plus underscore (`_`), dash (`-`), and period
-  (`.`) characters. For more information about module and application
-  versions, see "link:../application-deployment-guide/overview.html#GSDPG00324[Module and Application Versions]" in
-  GlassFish Server Open Source Edition Application Deployment Guide.
-
-[[sthref1807]]
-
-Examples
-
-[[GSRFM711]][[sthref1808]]
-
-Example 1   Listing Subcomponents
-
-This example lists the subcomponents of the `MEjbApp` application within
-the `mejb.jar` module.
-
-[source,oac_no_warn]
-----
-asadmin> list-sub-components --appname MEjbApp mejb.jar
-MEJBBean <StatelessSessionBean>
-Command list-sub-components executed successfully.
-----
-
-[[sthref1809]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1810]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:disable.html#disable-1[`disable`(1)],
-link:enable.html#enable-1[`enable`(1)],
-link:list-components.html#list-components-1[`list-components`(1)]
-
-link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition Application Deployment
-Guide]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-supported-cipher-suites.adoc b/docs/reference-manual/src/main/jbake/content/list-supported-cipher-suites.adoc
deleted file mode 100644
index ae57c60..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-supported-cipher-suites.adoc
+++ /dev/null
@@ -1,121 +0,0 @@
-type=page
-status=published
-title=list-supported-cipher-suites
-next=list-system-properties.html
-prev=list-sub-components.html
-~~~~~~
-list-supported-cipher-suites
-============================
-
-[[list-supported-cipher-suites-1]][[GSRFM00202]][[list-supported-cipher-suites]]
-
-list-supported-cipher-suites
-----------------------------
-
-enables administrators to list the cipher suites that are supported and
-available to a specified \{product---name} target
-
-[[sthref1811]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-supported-cipher-suites [--help] 
-[--target target]
-----
-
-[[sthref1812]]
-
-Description
-
-The `list-supported-cipher-suites` subcommand enables administrators to
-list the cipher suites that are supported and available to a specified
-\{product---name} target. The cipher suites that may be available in
-addition to the default SSL/TLS providers that are bundled with
-\{product---name} packages will vary depending on the third-party
-provider.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1813]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Specifies the target for which you want to list cipher suites. The
-  following values are valid: +
-  `server`;;
-    Lists the cipher suites for the default server instance. This is the
-    default value.
-  configuration_name;;
-    Lists the cipher suites for the specified configuration.
-  cluster_name;;
-    Lists the cipher suites for all server instances in the specified
-    cluster.
-  instance_name;;
-    Lists the cipher suites for a specified server instance.
-
-[[sthref1814]]
-
-Examples
-
-[[GSRFM712]][[sthref1815]]
-
-Example 1   Listing cipher suites
-
-The following example shows how to list cipher suites for the default
-domain.
-
-[source,oac_no_warn]
-----
-asadmin> list-supported-cipher-suites
-SSL_RSA_WITH_RC4_128_MD5
-SSL_RSA_WITH_RC4_128_SHA
-TLS_RSA_WITH_AES_128_CBC_SHA
-TLS_DHE_RSA_WITH_AES_128_CBC_SHA
-TLS_DHE_DSS_WITH_AES_128_CBC_SHA
-SSL_RSA_WITH_3DES_EDE_CBC_SHA
-SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA
-SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA
-SSL_RSA_WITH_DES_CBC_SHA
-SSL_DHE_RSA_WITH_DES_CBC_SHA
-SSL_DHE_DSS_WITH_DES_CBC_SHA
-SSL_RSA_EXPORT_WITH_RC4_40_MD5
-SSL_RSA_EXPORT_WITH_DES40_CBC_SHA
-SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA
-SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA
-SSL_RSA_WITH_NULL_MD5
-SSL_RSA_WITH_NULL_SHA
-SSL_DH_anon_WITH_RC4_128_MD5
-TLS_DH_anon_WITH_AES_128_CBC_SHA
-SSL_DH_anon_WITH_3DES_EDE_CBC_SHA
-SSL_DH_anon_WITH_DES_CBC_SHA
-SSL_DH_anon_EXPORT_WITH_RC4_40_MD5
-SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA
-
-Command list-supported-cipher-suites executed successfully.
-----
-
-[[sthref1816]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1817]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-system-properties.adoc b/docs/reference-manual/src/main/jbake/content/list-system-properties.adoc
deleted file mode 100644
index 3443321..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-system-properties.adoc
+++ /dev/null
@@ -1,107 +0,0 @@
-type=page
-status=published
-title=list-system-properties
-next=list-threadpools.html
-prev=list-supported-cipher-suites.html
-~~~~~~
-list-system-properties
-======================
-
-[[list-system-properties-1]][[GSRFM00203]][[list-system-properties]]
-
-list-system-properties
-----------------------
-
-lists the system properties of the domain, configuration, cluster, or
-server instance
-
-[[sthref1818]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-system-properties [--help] 
-[target]
-----
-
-[[sthref1819]]
-
-Description
-
-Shared or clustered server instances will often need to override
-attributes defined in their referenced configuration. Any configuration
-attribute in a server instance can be overridden through a system
-property of the corresponding name. This list-system-properties
-subcommand lists the system properties of a domain, configuration,
-cluster, or server instance.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1820]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1821]]
-
-Operands
-
-target::
-  This restricts the listing to system properties for a specific target.
-  Valid values are: +
-  domain;;
-    Lists the system properties defined for the domain.
-  configuration_name;;
-    Lists the system properties for the named configuration as well as
-    those the cluster inherits from the domain.
-  cluster_name;;
-    Lists the system properties defined for the named cluster as well as
-    those the cluster. inherits from its configuration and the domain.
-  instance_name;;
-    Lists the system properties defined for the named server instance as
-    well as those the server inherits from its cluster (if the instance
-    is clustered), its configuration, and the domain.
-
-[[sthref1822]]
-
-Examples
-
-[[GSRFM713]][[sthref1823]]
-
-Example 1   Listing System Properties
-
-This example lists the system properties on `localhost`.
-
-[source,oac_no_warn]
-----
-asadmin> list-system-properties
-http-listener-port=1088
-Command list-system-properties executed successfully.
-----
-
-[[sthref1824]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1825]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-system-properties.html#create-system-properties-1[`create-system-properties`(1)],
-link:delete-system-property.html#delete-system-property-1[`delete-system-property`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-threadpools.adoc b/docs/reference-manual/src/main/jbake/content/list-threadpools.adoc
deleted file mode 100644
index ef3c450..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-threadpools.adoc
+++ /dev/null
@@ -1,103 +0,0 @@
-type=page
-status=published
-title=list-threadpools
-next=list-timers.html
-prev=list-system-properties.html
-~~~~~~
-list-threadpools
-================
-
-[[list-threadpools-1]][[GSRFM00204]][[list-threadpools]]
-
-list-threadpools
-----------------
-
-lists all the thread pools
-
-[[sthref1826]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-threadpools [--help] 
-target
-----
-
-[[sthref1827]]
-
-Description
-
-The `list-threadpools` subcommand lists the \{product---name} thread
-pools.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1828]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1829]]
-
-Operands
-
-target::
-  This operand specifies the target for which you are listing thread
-  pools. This operand is required. +
-  Valid values are as follows: +
-  `server`;;
-    Lists the thread pools for the default \{product---name} instance
-    `server`.
-  configuration-name;;
-    Lists the thread pools for the named configuration.
-  cluster-name;;
-    Lists the thread pools for every instance in the cluster.
-  instance-name;;
-    Lists the thread pools for a particular instance.
-
-[[sthref1830]]
-
-Examples
-
-[[GSRFM714]][[sthref1831]]
-
-Example 1   Listing Thread Pools
-
-This example lists the current thread pools for the default instance
-`server`.
-
-[source,oac_no_warn]
-----
-asadmin> list-threadpools server
-admin-thread-pool
-http-thread-pool
-thread-pool-1
-Command list-threadpools executed successfully.
-----
-
-[[sthref1832]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1833]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-threadpool.html#create-threadpool-1[`create-threadpool`(1)],
-link:delete-threadpool.html#delete-threadpool-1[`delete-threadpool`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-timers.adoc b/docs/reference-manual/src/main/jbake/content/list-timers.adoc
deleted file mode 100644
index 8af98bd..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-timers.adoc
+++ /dev/null
@@ -1,99 +0,0 @@
-type=page
-status=published
-title=list-timers
-next=list-transports.html
-prev=list-threadpools.html
-~~~~~~
-list-timers
-===========
-
-[[list-timers-1]][[GSRFM00205]][[list-timers]]
-
-list-timers
------------
-
-lists all of the persistent timers owned by server instance(s)
-
-[[sthref1834]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-timers [--help] 
-[target]
-----
-
-[[sthref1835]]
-
-Description
-
-The `list-timers` subcommand lists the persistent timers owned by a
-specific server instance or a cluster of server instances. This command
-is supported in remote mode only.
-
-[[sthref1836]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1837]]
-
-Operands
-
-target::
-  The target is either a standalone server instance or a cluster. If the
-  target is the stand-alone instance, then the number of timers owned by
-  the instance is listed. If the target is a cluster, then the number of
-  timers owned by each instance in the cluster is listed. The default
-  target is `server`, the default server instance.
-
-[[sthref1838]]
-
-Examples
-
-[[GSRFM715]][[sthref1839]]
-
-Example 1   Listing Current Timers in a Server Instance
-
-This example lists persistent timers in a particular standalone server
-instance. There is one currently active timer set.
-
-[source,oac_no_warn]
-----
-asadmin> list-timers server
-1
-
-The list-timers command was executed successfully.
-----
-
-[[sthref1840]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1841]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:migrate-timers.html#migrate-timers-1[`migrate-timers`(1)]
-
-"http://docs.oracle.com/javaee/7/tutorial/doc/ejb-basicexamples.html[Using
-the Timer Service]" in The Java EE 8 Tutorial
-
-"link:../application-development-guide/ejb.html#GSDVG00146[EJB Timer Service]" in GlassFish Server Open Source
-Edition Application Development Guide
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-transports.adoc b/docs/reference-manual/src/main/jbake/content/list-transports.adoc
deleted file mode 100644
index c6382fe..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-transports.adoc
+++ /dev/null
@@ -1,99 +0,0 @@
-type=page
-status=published
-title=list-transports
-next=list-virtual-servers.html
-prev=list-timers.html
-~~~~~~
-list-transports
-===============
-
-[[list-transports-1]][[GSRFM00206]][[list-transports]]
-
-list-transports
----------------
-
-lists the existing transports
-
-[[sthref1842]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-transports [--help]
-[target]
-----
-
-[[sthref1843]]
-
-Description
-
-The `list-transports` subcommand lists the existing transports. This
-subcommand is supported in remote mode only.
-
-[[sthref1844]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1845]]
-
-Operands
-
-target::
-  Restricts the listing to transports for a specified target. Valid
-  values are as follows: +
-  `server`;;
-    Lists the transports for the default server instance. This is the
-    default value.
-  configuration-name;;
-    Lists the transports for the specified configuration.
-  cluster-name;;
-    Lists the transports for all server instances in the specified
-    cluster.
-  instance-name;;
-    Lists the transports for the specified server instance.
-
-[[sthref1846]]
-
-Examples
-
-[[GSRFM716]][[sthref1847]]
-
-Example 1   Listing Transports
-
-The following command lists all the transports for the server instance:
-
-[source,oac_no_warn]
-----
-asadmin> list-transports
-http1-trans
-tcp
-Command list-transports executed successfully.
-----
-
-[[sthref1848]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1849]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-transport.html#create-transport-1[`create-transport`(1)],
-link:delete-transport.html#delete-transport-1[`delete-transport`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-virtual-servers.adoc b/docs/reference-manual/src/main/jbake/content/list-virtual-servers.adoc
deleted file mode 100644
index 53aee9c..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-virtual-servers.adoc
+++ /dev/null
@@ -1,100 +0,0 @@
-type=page
-status=published
-title=list-virtual-servers
-next=list-web-context-param.html
-prev=list-transports.html
-~~~~~~
-list-virtual-servers
-====================
-
-[[list-virtual-servers-1]][[GSRFM00207]][[list-virtual-servers]]
-
-list-virtual-servers
---------------------
-
-lists the existing virtual servers
-
-[[sthref1850]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-virtual-servers [--help]
-[target]
-----
-
-[[sthref1851]]
-
-Description
-
-The `list-virtual-servers` subcommand lists the existing virtual
-servers. This subcommand is supported in remote mode only.
-
-[[sthref1852]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1853]]
-
-Operands
-
-target::
-  Restricts the listing to virtual servers for a specified target. Valid
-  values are as follows: +
-  `server`;;
-    Lists the virtual servers for the default server instance. This is
-    the default value.
-  configuration-name;;
-    Lists the virtual servers for the specified configuration.
-  cluster-name;;
-    Lists the virtual servers for all server instances in the specified
-    cluster.
-  instance-name;;
-    Lists the virtual servers for the specified server instance.
-
-[[sthref1854]]
-
-Examples
-
-[[GSRFM717]][[sthref1855]]
-
-Example 1   Listing Virtual Servers
-
-The following command lists all the virtual servers for the server
-instance:
-
-[source,oac_no_warn]
-----
-asadmin> list-virtual-servers
-server
-__asadmin
-Command list-virtual-servers executed successfully.
-----
-
-[[sthref1856]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1857]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-virtual-server.html#create-virtual-server-1[`create-virtual-server`(1)],
-link:delete-virtual-server.html#delete-virtual-server-1[`delete-virtual-server`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-web-context-param.adoc b/docs/reference-manual/src/main/jbake/content/list-web-context-param.adoc
deleted file mode 100644
index 4420326..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-web-context-param.adoc
+++ /dev/null
@@ -1,148 +0,0 @@
-type=page
-status=published
-title=list-web-context-param
-next=list-web-env-entry.html
-prev=list-virtual-servers.html
-~~~~~~
-list-web-context-param
-======================
-
-[[list-web-context-param-1]][[GSRFM00208]][[list-web-context-param]]
-
-list-web-context-param
-----------------------
-
-lists servlet context-initialization parameters of a deployed web
-application or module
-
-[[sthref1858]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-web-context-param [--help] 
-[--name=context-param-name] application-name[/module]
-----
-
-[[sthref1859]]
-
-Description
-
-The `list-web-context-param` subcommand lists the servlet
-context-initialization parameters of one of the following items:
-
-* A deployed web application
-* A web module in a deployed Java Platform, Enterprise Edition (Java EE)
-application
-
-The application must already be deployed. Otherwise, an error occurs.
-
-The `list-web-context-param` subcommand lists only parameters that have
-previously been set by using the
-link:set-web-context-param.html#set-web-context-param-1[`set-web-context-param`(1)]
-subcommand. The subcommand does not list parameters that are set only in
-the application's deployment descriptor.
-
-For each parameter, the following information is displayed:
-
-* The name of the parameter
-* The value to which the parameter is set
-* The value of the `--ignoreDescriptorItem` option of the
-`set-web-context-param` subcommand that was specified when the parameter
-was set
-* The description of the parameter or `null` if no description was
-specified when the parameter was set
-
-[[sthref1860]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--name`::
-  The name of the servlet context-initialization parameter that is to be
-  listed. If this option is omitted, all parameters of the application
-  that have previously been set are listed.
-
-[[sthref1861]]
-
-Operands
-
-application-name::
-  The name of the application. This name can be obtained from the
-  Administration Console or by using the
-  link:list-applications.html#list-applications-1[`list-applications`(1)]
-  subcommand. +
-  The application must already be deployed. Otherwise, an error occurs.
-module::
-  The relative path to the module within the application's enterprise
-  archive (EAR) file. The path to the module is specified in the
-  `module` element of the application's `application.xml` file. +
-  module is required only if the servlet context-initialization
-  parameter applies to a web module of a Java EE application. If
-  specified, module must follow application-name, separated by a slash
-  (/). +
-  For example, the `application.xml` file for the `myApp` application
-  might specify the following web module: +
-[source,oac_no_warn]
-----
-<module>
-    <web>
-        <web-uri>myWebModule.war</web-uri>
-    </web>
-</module> 
-----
-::
-  The module would be specified as the operand of this command as
-  `myApp/myWebModule.war`.
-
-[[sthref1862]]
-
-Examples
-
-[[GSRFM718]][[sthref1863]]
-
-Example 1   Listing Servlet Context-Initialization Parameters for a Web
-Application
-
-This example lists all servlet context-initialization parameters of the
-web application `basic-ezcomp` that have been set by using the
-`set-web-context-param` subcommand. Because no description was specified
-when the `javax.faces.PROJECT_STAGE` parameter was set, `null` is
-displayed instead of a description for this parameter.
-
-[source,oac_no_warn]
-----
-asadmin> list-web-context-param basic-ezcomp
-javax.faces.STATE_SAVING_METHOD = client ignoreDescriptorItem=false 
-//The location where the application's state is preserved
-javax.faces.PROJECT_STAGE = null ignoreDescriptorItem=true //null
-
-Command list-web-context-param executed successfully.
-----
-
-[[sthref1864]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1865]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:list-applications.html#list-applications-1[`list-applications`(1)],
-link:set-web-context-param.html#set-web-context-param-1[`set-web-context-param`(1)],
-link:unset-web-context-param.html#unset-web-context-param-1[`unset-web-context-param`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list-web-env-entry.adoc b/docs/reference-manual/src/main/jbake/content/list-web-env-entry.adoc
deleted file mode 100644
index 9f00d65..0000000
--- a/docs/reference-manual/src/main/jbake/content/list-web-env-entry.adoc
+++ /dev/null
@@ -1,147 +0,0 @@
-type=page
-status=published
-title=list-web-env-entry
-next=login.html
-prev=list-web-context-param.html
-~~~~~~
-list-web-env-entry
-==================
-
-[[list-web-env-entry-1]][[GSRFM00209]][[list-web-env-entry]]
-
-list-web-env-entry
-------------------
-
-lists environment entries for a deployed web application or module
-
-[[sthref1866]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list-web-env-entry [--help] 
-[--name=env-entry-name] application-name[/module]
-----
-
-[[sthref1867]]
-
-Description
-
-The `list-web-env-entry` subcommand lists the environment entries for
-one of the following items:
-
-* A deployed web application
-* A web module in a deployed Java Platform, Enterprise Edition (Java EE)
-application
-
-The application must already be deployed. Otherwise, an error occurs.
-
-The `list-web-env-entry` subcommand lists only entries that have
-previously been set by using the
-link:set-web-env-entry.html#set-web-env-entry-1[`set-web-env-entry`(1)]
-subcommand. The subcommand does not list environment entries that are
-set only in the application's deployment descriptor.
-
-For each entry, the following information is displayed:
-
-* The name of the entry
-* The Java type of the entry
-* The value to which the entry is set
-* The value of the `--ignoreDescriptorItem` option of the
-`set-web-env-entry` subcommand that was specified when the entry was set
-* The description of the entry or `null` if no description was specified
-when the entry was set
-
-[[sthref1868]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--name`::
-  The name of the environment entry that is to be listed. The name is a
-  JNDI name relative to the `java:comp/env` context. The name must be
-  unique within a deployment component. If this option is omitted, all
-  environment entries that have previously been set for the application
-  are listed.
-
-[[sthref1869]]
-
-Operands
-
-application-name::
-  The name of the application. This name can be obtained from the
-  Administration Console or by using the
-  link:list-applications.html#list-applications-1[`list-applications`(1)]
-  subcommand. +
-  The application must already be deployed. Otherwise, an error occurs.
-module::
-  The relative path to the module within the application's enterprise
-  archive (EAR) file. The path to the module is specified in the
-  `module` element of the application's `application.xml` file. +
-  module is required only if the environment entry applies to a web
-  module of a Java EE application. If specified, module must follow
-  application-name, separated by a slash (/). +
-  For example, the `application.xml` file for the `myApp` application
-  might specify the following web module: +
-[source,oac_no_warn]
-----
-<module>
-    <web>
-        <web-uri>myWebModule.war</web-uri>
-    </web>
-</module> 
-----
-::
-  The module would be specified as the operand of this command as
-  `myApp/myWebModule.war`.
-
-[[sthref1870]]
-
-Examples
-
-[[GSRFM719]][[sthref1871]]
-
-Example 1   Listing Environment Entries for a Web Application
-
-This example lists all environment entries that have been set for the
-web application `hello` by using the `set-web-env-entry` subcommand.
-Because no description was specified when the `Hello Port` environment
-entry was set, `null` is displayed instead of a description for this
-entry.
-
-[source,oac_no_warn]
-----
-asadmin> list-web-env-entry hello
-Hello User (java.lang.String) = techscribe ignoreDescriptorItem=false
- //User authentication for Hello appplication
-Hello Port (java.lang.Integer) = null ignoreDescriptorItem=true //null
-
-Command list-web-env-entry executed successfully.
-----
-
-[[sthref1872]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1873]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:list-applications.html#list-applications-1[`list-applications`(1)],
-link:set-web-env-entry.html#set-web-env-entry-1[`set-web-env-entry`(1)],
-link:unset-web-env-entry.html#unset-web-env-entry-1[`unset-web-env-entry`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/list.adoc b/docs/reference-manual/src/main/jbake/content/list.adoc
deleted file mode 100644
index 5ebd199..0000000
--- a/docs/reference-manual/src/main/jbake/content/list.adoc
+++ /dev/null
@@ -1,234 +0,0 @@
-type=page
-status=published
-title=list
-next=list-admin-objects.html
-prev=jms-ping.html
-~~~~~~
-list
-====
-
-[[list-1]][[GSRFM00145]][[list]]
-
-list
-----
-
-lists configurable or monitorable elements
-
-[[sthref1282]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] list [--help] 
-[--monitor={false|true}]
-[dotted-parent-attribute-name]
-----
-
-[[sthref1283]]
-
-Description
-
-The `list` subcommand lists configurable and monitorable attributes of
-\{product---name}.
-
-The output of the `list` subcommand is a list of the dotted names that
-represent individual server components and subsystems. For example,
-`server.applications.web-module`. After you know the particular
-component or subsystem, you can then use the `get` subcommand to access
-any attributes, and the `set` subcommand to modify configurable
-attributes.
-
-The following rules apply to dotted names in a `list` subcommand:
-
-
-[NOTE]
-=======================================================================
-
-Characters that have special meaning to the shell or command
-interpreter, such as * (asterisk), should be quoted or escaped as
-appropriate to the shell, for example, by enclosing the argument in
-quotes. In multimode, quotes are needed only for arguments that include
-spaces, quotes, or backslash.
-
-=======================================================================
-
-
-* Any `list` subcommand that has a dotted name that is not followed by a
-wildcard (*) lists the current node's immediate children. For example,
-the following command lists all immediate children belonging to the
-server node: +
-[source,oac_no_warn]
-----
-asadmin> list server
-----
-* Any `list` subcommand that has a dotted name followed by a wildcard(*)
-lists a hierarchical tree of child nodes from the current node. For
-example, the following command lists all child nodes of applications and
-their subsequent child nodes, and so on: +
-[source,oac_no_warn]
-----
-asadmin> list server.applications.*
-----
-* Any `list` subcommand that has a dotted name preceded or followed by a
-wildcard (*) of the form *dotted name or dottedname* lists all nodes and
-their child nodes that match the regular expression created by the
-provided matching pattern.
-
-For detailed information about dotted names, see the
-link:dotted-names.html#dotted-names-5asc[`dotted-names`(5ASC)] help page.
-
-[[sthref1284]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--monitor`::
-`-m`::
-  Defaults to false. If set to false, the configurable attribute values
-  are returned. If set to true, the monitorable attribute values are
-  returned.
-
-[[sthref1285]]
-
-Operands
-
-dotted-parent-element-name::
-  Configurable or monitorable element name
-
-[[sthref1286]]
-
-Examples
-
-[[GSRFM631]][[sthref1287]]
-
-Example 1   Listing Dotted Names of Configurable Elements
-
-This example lists the elements that can be configured.
-
-[source,oac_no_warn]
-----
-asadmin> list *
-applications
-configs
-configs.config.server-config
-configs.config.server-config.admin-service
-configs.config.server-config.admin-service.das-config
-configs.config.server-config.admin-service.jmx-connector.system
-configs.config.server-config.admin-service.property.adminConsoleContextRoot
-configs.config.server-config.admin-service.property.adminConsoleDownloadLocation
-configs.config.server-config.admin-service.property.ipsRoot
-configs.config.server-config.ejb-container
-configs.config.server-config.ejb-container.ejb-timer-service
-configs.config.server-config.http-service
-configs.config.server-config.http-service.access-log
-configs.config.server-config.http-service.virtual-server.__asadmin
-configs.config.server-config.http-service.virtual-server.server
-configs.config.server-config.iiop-service
-configs.config.server-config.iiop-service.iiop-listener.SSL
-configs.config.server-config.iiop-service.iiop-listener.SSL.ssl
-configs.config.server-config.iiop-service.iiop-listener.SSL_MUTUALAUTH
-configs.config.server-config.iiop-service.iiop-listener.SSL_MUTUALAUTH.ssl
-configs.config.server-config.iiop-service.iiop-listener.orb-listener-1
-configs.config.server-config.iiop-service.orb
-configs.config.server-config.java-config
-configs.config.server-config.jms-service
-configs.config.server-config.jms-service.jms-host.default_JMS_host
-...
-property.administrative.domain.name
-resources
-resources.jdbc-connection-pool.DerbyPool
-resources.jdbc-connection-pool.DerbyPool.property.DatabaseName
-resources.jdbc-connection-pool.DerbyPool.property.Password
-resources.jdbc-connection-pool.DerbyPool.property.PortNumber
-resources.jdbc-connection-pool.DerbyPool.property.User
-resources.jdbc-connection-pool.DerbyPool.property.connectionAttributes
-resources.jdbc-connection-pool.DerbyPool.property.serverName
-resources.jdbc-connection-pool.__TimerPool
-resources.jdbc-connection-pool.__TimerPool.property.connectionAttributes
-resources.jdbc-connection-pool.__TimerPool.property.databaseName
-resources.jdbc-resource.jdbc/__TimerPool
-resources.jdbc-resource.jdbc/__default
-servers
-servers.server.server
-servers.server.server.resource-ref.jdbc/__TimerPool
-servers.server.server.resource-ref.jdbc/__default
-system-applications
-Command list executed successfully.
-----
-
-[[GSRFM632]][[sthref1288]]
-
-Example 2   Listing Attributes of a Configurable Element
-
-This example lists the attributes of the web container.
-
-[source,oac_no_warn]
-----
-asadmin> list configs.config.server-config.web-container
-configs.config.server-config.web-container
-configs.config.server-config.web-container.session-config
-Command list executed successfully.
-----
-
-[[GSRFM633]][[sthref1289]]
-
-Example 3   Listing Dotted Names of Monitorable Objects
-
-This example lists the names of the monitorable objects that are enabled
-for monitoring.
-
-[source,oac_no_warn]
-----
-asadmin> list --monitor *
-server.jvm
-server.jvm.class-loading-system
-server.jvm.compilation-system
-server.jvm.garbage-collectors
-server.jvm.garbage-collectors.Copy
-server.jvm.garbage-collectors.MarkSweepCompact
-server.jvm.memory
-server.jvm.operating-system
-server.jvm.runtime
-server.network
-server.network.admin-listener
-server.network.admin-listener.connections
-server.network.admin-listener.file-cache
-server.network.admin-listener.keep-alive
-server.network.admin-listener.thread-pool
-server.network.http-listener-1
-server.network.http-listener-1.connections
-server.network.http-listener-1.file-cache
-server.network.http-listener-1.keep-alive
-server.network.http-listener-1.thread-pool
-server.transaction-service
-Command list executed successfully.
-----
-
-[[sthref1290]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1291]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:get.html#get-1[`get`(1)], link:set.html#set-1[`set`(1)]
-
-link:dotted-names.html#dotted-names-5asc[`dotted-names`(5ASC)]
-
-link:../administration-guide/toc.html#GSADG[GlassFish Server Open Source Edition Administration Guide]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/logging.adoc b/docs/reference-manual/src/main/jbake/content/logging.adoc
deleted file mode 100644
index 3e8c170..0000000
--- a/docs/reference-manual/src/main/jbake/content/logging.adoc
+++ /dev/null
@@ -1,61 +0,0 @@
-type=page
-status=published
-title=logging
-next=monitoring.html
-prev=instance.html
-~~~~~~
-logging
-=======
-
-[[logging-5asc]][[GSRFM00270]][[logging]]
-
-logging
--------
-
-capturing information on \{product---name} runtime events
-
-[[sthref2404]]
-
-Description
-
-Logging is the process by which \{product---name} captures data about
-events that occur during \{product---name} operation. \{product---name}
-components and application components generate logging data, which is
-saved in the server log, typically domain-dir`/logs/server.log`. The
-server log is the first source of information if \{product---name}
-problems occur.
-
-The server log is rotated when the file reaches the specified size in
-bytes, or the specified time has elapsed. The file can also be rotated
-manually by using the `rotate-log` subcommand.
-
-In addition to the server log, the domain-dir`/logs` directory contains
-two other kinds of logs:
-
-* HTTP service access logs, located in the `/access` subdirectory
-* Transaction service logs, located in the `/tx` subdirectory
-
-Logging levels can be configured by using the Administration Console or
-the `set-log-levels` subcommand. Additional properties can be set by
-using the Administration Console or by editing the `logging.properties`
-file. The default `logging.properties` file is typically located in
-domain-dir`/config`.
-
-Although application components can use the Apache Commons Logging
-Library to record messages, the platform standard JSR 047 API is
-recommended for better log configuration.
-
-[[sthref2405]]
-
-See Also
-
-link:list-log-levels.html#list-log-levels-1[`list-log-levels`(1)],
-link:rotate-log.html#rotate-log-1[`rotate-log`(1)],
-link:set-log-levels.html#set-log-levels-1[`set-log-levels`(1)]
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-"link:../administration-guide/logging.html#GSADG00010[Administering the Logging Service]" in GlassFish
-Server Open Source Edition Administration Guide
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/login.adoc b/docs/reference-manual/src/main/jbake/content/login.adoc
deleted file mode 100644
index fe3ee33..0000000
--- a/docs/reference-manual/src/main/jbake/content/login.adoc
+++ /dev/null
@@ -1,140 +0,0 @@
-type=page
-status=published
-title=login
-next=migrate-timers.html
-prev=list-web-env-entry.html
-~~~~~~
-login
-=====
-
-[[login-1]][[GSRFM00210]][[login]]
-
-login
------
-
-logs you into a domain
-
-[[sthref1874]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] login [--help]
-----
-
-[[sthref1875]]
-
-Description
-
-The purpose of the `login` subcommand is to ease domain administration
-by letting you log into a particular domain. If \{product---name}
-domains are created on various machines (locally), you can run the
-`asadmin` utility from any of these machines and manage domains located
-elsewhere (remotely). This is especially useful when a particular
-machine is chosen as an administration client that manages multiple
-domains and servers.
-
-The `login` subcommand prompts you for the administrator user name and
-password. After successful login, the `.asadminpass` file is created in
-your home directory. (This is the same file that is modified when you
-run the `create-domain` subcommand with the `--savelogin` option.) The
-literal host name is stored, and no resolution with the DNS is
-attempted. If a domain is being administered from other machines, it is
-sufficient to run the `login` subcommand once. You do not need to
-specify the `asadmin` utility options `--user` and `--passwordfile` when
-you run additional remote subcommands on that domain. After you have
-logged into a domain, you still need to provide the host and port for
-any subsequent remote subcommands unless you chose the default values
-for `--host` (localhost) and `--port` (4848) options.
-
-Subsequent use of same subcommand with the same parameters will result
-in overwriting the contents of the `.asadminpass` file for the given
-administration host and port. You can decide to overwrite the file or to
-reject such a login.
-
-Login information is saved permanently and can be used across multiple
-domain restarts.
-
-There is no `logout` subcommand. If you want to log in to another
-domain, run the `login` subcommand and specify new values for the
-`asadmin` utility options `--host` and `--port`.
-
-[[sthref1876]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref1877]]
-
-Examples
-
-[[GSRFM720]][[sthref1878]]
-
-Example 1   Logging Into a Domain on a Remote Machine
-
-This example logs into a domain located on another machine. Options are
-specified before the `login` subcommand.
-
-[source,oac_no_warn]
-----
-asadmin --host foo --port 8282 login 
-Please enter the admin user name>admin
-Please enter the admin password>
-
-Trying to authenticate for administration of server at host [foo] 
-and port [8282] ...
-Login information relevant to admin user name [admin] for host [foo] 
-and admin port [8282] stored at [/.asadminpass] successfully.
-Make sure that this file remains protected. Information stored in this 
-file will be used by asadmin commands to manage associated domain.
-----
-
-[[GSRFM721]][[sthref1879]]
-
-Example 2   Logging Into a Domain on the Default Port of Localhost
-
-This example logs into a domain on `mylhost` on the default port.
-Options are specified before the `login` subcommand.
-
-[source,oac_no_warn]
-----
-asadmin --host myhost login 
-Please enter the admin user name>admin
-Please enter the admin password>
-Trying to authenticate for administration of server 
-at host [myhost] and port [4848] ...
-An entry for login exists for host [myhost] and port [4848], probably 
-from an earlier login operation.
-Do you want to overwrite this entry (y/n)?y
-Login information relevant to admin user name [admin] for host [myhost] 
-and admin port [4848] stored at [/home/joe/.asadminpass] successfully.
-Make sure that this file remains protected. Information stored in this 
-file will be used by asadmin commands to manage associated domain.
-----
-
-[[sthref1880]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1881]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-domain.html#create-domain-1[`create-domain`(1)],
-link:delete-domain.html#delete-domain-1[`delete-domain`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/manvol1.adoc b/docs/reference-manual/src/main/jbake/content/manvol1.adoc
deleted file mode 100644
index 12af5f1..0000000
--- a/docs/reference-manual/src/main/jbake/content/manvol1.adoc
+++ /dev/null
@@ -1,20 +0,0 @@
-type=page
-status=published
-title=Eclipse GlassFish Server 5.1 asadmin Utility Subcommands
-next=add-library.html
-prev=preface.html
-~~~~~~
-Eclipse GlassFish Server 5.1 asadmin Utility Subcommands
-========================================================
-
-[[GSRFM443]][[sthref6]]
-
-
-[[glassfish-server-open-source-edition-5.0-asadmin-utility-subcommands]]
-1 Eclipse GlassFish Server 5.1 asadmin Utility Subcommands
-----------------------------------------------------------
-
-This section describes, in alphabetical order, the subcommands of the
-link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility.
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/manvol1m.adoc b/docs/reference-manual/src/main/jbake/content/manvol1m.adoc
deleted file mode 100644
index 2ecd6fc..0000000
--- a/docs/reference-manual/src/main/jbake/content/manvol1m.adoc
+++ /dev/null
@@ -1,19 +0,0 @@
-type=page
-status=published
-title=Eclipse GlassFish Server 5.1 Utility Commands
-next=appclient.html
-prev=version.html
-~~~~~~
-Eclipse GlassFish Server 5.1 Utility Commands
-=============================================
-
-[[GSRFM803]][[sthref2356]]
-
-
-[[glassfish-server-open-source-edition-5.0-utility-commands]]
-2 Eclipse GlassFish Server 5.1 Utility Commands
------------------------------------------------
-
-This section describes GlassFish Server utility commands.
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/manvol5asc.adoc b/docs/reference-manual/src/main/jbake/content/manvol5asc.adoc
deleted file mode 100644
index 8af50ca..0000000
--- a/docs/reference-manual/src/main/jbake/content/manvol5asc.adoc
+++ /dev/null
@@ -1,20 +0,0 @@
-type=page
-status=published
-title=Eclipse GlassFish Server 5.1 GlassFish Server Concepts
-next=application.html
-prev=package-appclient.html
-~~~~~~
-Eclipse GlassFish Server 5.1 GlassFish Server Concepts
-======================================================
-
-[[GSRFM814]][[sthref2391]]
-
-
-[[glassfish-server-open-source-edition-5.0-glassfish-server-concepts]]
-3 Eclipse GlassFish Server 5.1 GlassFish Server Concepts
---------------------------------------------------------
-
-This section describes concepts that are related to GlassFish Server
-administration.
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/migrate-timers.adoc b/docs/reference-manual/src/main/jbake/content/migrate-timers.adoc
deleted file mode 100644
index edc3a17..0000000
--- a/docs/reference-manual/src/main/jbake/content/migrate-timers.adoc
+++ /dev/null
@@ -1,98 +0,0 @@
-type=page
-status=published
-title=migrate-timers
-next=monitor.html
-prev=login.html
-~~~~~~
-migrate-timers
-==============
-
-[[migrate-timers-1]][[GSRFM00211]][[migrate-timers]]
-
-migrate-timers
---------------
-
-moves EJB timers when a clustered instance was stopped or has crashed
-
-[[sthref1882]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] migrate-timers [--help] 
-[--target target_server_name]
-server_name
-----
-
-[[sthref1883]]
-
-Description
-
-The `migrate-timers` subcommand moves EJB timers to a specified server
-when a server instance stops or crashes, if automatic timer migration is
-not enabled in the cluster configuration. This subcommand is supported
-in remote mode only.
-
-[[sthref1884]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  This is the target server instance. If this option is not specified,
-  then DAS will find a server instance or multiple server instances. A
-  migration notification will be sent to the selected server instances.
-`--destination`::
-  This option is deprecated. It works exactly as the `--target` option
-  does.
-
-[[sthref1885]]
-
-Operands
-
-server_name::
-  This is the server instance on which the timers are currently located.
-  This server instance should not be running during the migration
-  process.
-
-[[sthref1886]]
-
-Examples
-
-[[GSRFM722]][[sthref1887]]
-
-Example 1   Migrating Timers
-
-This example shows how to migrate timers from the server named
-`instance1` to a server named `instance2`.
-
-[source,oac_no_warn]
-----
-asadmin>migrate-timers --target instance2 instance1
-This command was successfully executed.
-----
-
-[[sthref1888]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1889]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:list-timers.html#list-timers-1[`list-timers`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/monitor.adoc b/docs/reference-manual/src/main/jbake/content/monitor.adoc
deleted file mode 100644
index 50a8580..0000000
--- a/docs/reference-manual/src/main/jbake/content/monitor.adoc
+++ /dev/null
@@ -1,273 +0,0 @@
-type=page
-status=published
-title=monitor
-next=multimode.html
-prev=migrate-timers.html
-~~~~~~
-monitor
-=======
-
-The script content on this page is for navigation purposes only and does
-not alter the content in any way.
-
-[[monitor-1]][[GSRFM00212]][[monitor]]
-
-monitor
--------
-
-displays monitoring data for commonly used components and services
-
-[[sthref1890]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] monitor [--help] 
---type type 
-[--filename filename] 
-[--interval interval] 
-[--filter filter] 
-instance-name
-----
-
-[[sthref1891]]
-
-Description
-
-The `monitor` subcommand displays statistics for commonly monitored
-\{product---name} components and services. The `--type` option must be
-used to specify the object for which statistics are to be displayed.
-Data is displayed continuously in a tabular form, or the data can be
-displayed at a particular time interval by using the `--interval`
-option.
-
-Before a given component or service can be monitored, monitoring must be
-enabled (set to HIGH or LOW) for the component or service by using the
-Administration Console, the enable-monitoring subcommand, or the set
-subcommand.
-
-The monitor subcommand has options for filtering the results and
-capturing the output in a Comma Separated Values (CSV) file. The output
-appears in a table format. To view the legend of the table header, type
-`h`.
-
-This subcommand is supported in local mode only.
-
-[[sthref1892]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--type`::
-  The component or service to monitor. This option is required. No
-  default value is defined. +
-  `httplistener`;;
-    For this type, the attribute
-    `server.monitoring-service.module-monitoring-levels.http-service`
-    must be set to LOW or HIGH. +
-    Displays the following statistics for the HTTP listener service:::
-    `ec`::
-      The total number errors in the processing of HTTP requests.
-    `mt`::
-      The longest response time (in milliseconds) for the processing of
-      a single HTTP request.
-    `pt`::
-      The total amount of time (in milliseconds) that the HTTP listener
-      service has spent in processing HTTP requests.
-    `rc`::
-      The total number of requests that the HTTP listener service has
-      processed.
-  `jvm`;;
-    For this type, the attribute
-    `server.server-config.monitoring-service.module-monitoring-levels.jvm`
-    must be set to LOW or HIGH. +
-    Displays the following statistics for the Virtual Machine for the
-    Java platform (Java Virtual Machine or JVM
-    machine):link:#sthref1893[^Foot 2 ^]::
-    `UpTime`::
-      The number of milliseconds that the JVM machine has been running
-      since it was last started.
-    `min`::
-      The initial amount of memory (in bytes) that the JVM machine
-      requests from the operating system for memory management during
-      startup.
-    `max`::
-      The maximum amount of memory that can be used for memory
-      management.
-    `low`::
-      Retained for compatibility with other releases.
-    `high`::
-      Retained for compatibility with other releases.
-    `count`::
-      The amount of memory (in bytes) that is guaranteed to be available
-      for use by the JVM machine.
-  `webmodule`;;
-    For this type, the attribute
-    `server.server-config.monitoring-service.module-monitoring-levels.web-container`
-    must be set to LOW or HIGH. +
-    Displays the following statistics for all deployed web modules:::
-    `asc`::
-      The number of currently active sessions.
-    `ast`::
-      The total number of sessions that are currently active or have
-      been active previously.
-    `rst`::
-      The total number of rejected sessions.
-    `st`::
-      The total number of sessions that have been created.
-    `ajlc`::
-      The number of currently active JavaServer Pages ( JSP) technology
-      pages that are loaded.
-    `mjlc`::
-      The maximum number of JSP technology pages that were active at any
-      time simultaneously.
-    `tjlc`::
-      Total number of JSP technology pages that have been loaded.
-    `aslc`::
-      The number of currently active Java servlets that are loaded.
-    `mslc`::
-      The maximum number of Java servlets that were active at any time
-      simultaneously.
-    `tslc`::
-      The total number of Java servlets that have been loaded.
-`--filename`::
-  Do not specify this option. This option is retained for compatibility
-  with earlier releases. If you specify this option, a syntax error does
-  not occur. Instead, the subcommand runs successfully and displays a
-  warning message that the option is ignored.
-`--interval`::
-  The interval in seconds before capturing monitoring attributes. The
-  interval must be greater than 0. The monitoring attributes are
-  displayed on `stdout` until you type Control-C or `q`. The default
-  value is 30.
-`--filter`::
-  Do not specify this option. This option is retained for compatibility
-  with earlier releases. If you specify this option, a syntax error does
-  not occur. Instead, the subcommand runs successfully and displays a
-  warning message that the option is ignored.
-
-[[sthref1894]]
-
-Operands
-
-instance-name::
-  The server instance for which to view monitoring data. The default
-  value is `server`.
-
-[[sthref1895]]
-
-Examples
-
-[[GSRFM723]][[sthref1896]]
-
-Example 1   Displaying Monitoring Statistics by Interval
-
-This example displays monitoring data for the JVM machine every 2000
-seconds.
-
-[source,oac_no_warn]
-----
-asadmin> monitor --type=jvm --interval 2000 server
-                               JVM Monitoring
-UpTime(ms)                          Heap and NonHeap Memory(bytes)          
-current                   min        max        low        high       count     
-957843                    29523968   188284928  0          0          60370944  
-
-q
-Command monitor executed successfully.
-----
-
-[[GSRFM724]][[sthref1897]]
-
-Example 2   Filtering the Monitoring Data
-
-This example uses the filter option to show `http-listener-1`
-statistics.
-
-[source,oac_no_warn]
-----
-asadmin> monitor --type httplistener --filter http-listener-1 server
-
-                   HTTP Listener Monitoring: http-listener-1
-br   bs   c200 c2xx c302 c304 c3xx c400 c401 c403 c404 c4xx c503 c5xx coc  co 
-ctc  ctb  ec   moc  mst  mt   mtm  mst  pt   rc
-0    0    0    0    0    3    3    0    0    0    0    0    0    0    0    0 
-2    0    0    1    20   20   2    2    6    3
-----
-
-To see the legend for the table headings, type `h`.
-
-[source,oac_no_warn]
-----
-******************************************************************************************
-* br   = Cumulative value of the Bytes received by each of the Request Processors        *
-* bs   = Cumulative value of the Bytes sent by each of the Request Processors            *
-* c200 = Number of responses with a status code equal to 200                             *
-* c2xx = Number of responses with a status code in the 2xx range                         *
-* c302 = Number of responses with a status code equal to 302                             *
-* c304 = Number of responses with a status code equal to 304                             *
-* c3xx = Number of responses with a status code in the 3xx range                         *
-* c400 = Number of responses with a status code equal to 400                             *
-* c401 = Number of responses with a status code equal to 401                             *
-* c403 = Number of responses with a status code equal to 403                             *
-* c404 = Number of responses with a status code equal to 404                             *
-* c4xx = Number of responses with a status code equal to 4xx                             *
-* c504 = Number of responses with a status code equal to 504                             *
-* c5xx = Number of responses with a status code equal to 5xx                             *
-* coc  = Number of open connections                                                      *
-* co   = Number of responses with a status code outside the 2xx, 3xx, 4xx, and 5xx range *
-* ctc  = Number of request processing threads currently in the listener thread pool      *
-* ctb  = Number of request processing threads currently in use in the listener thread    *
-*        pool serving requests                                                           *
-* ec   = Number of responses with a status code equal to 400                             *
-* moc  = Maximum number of open connections                                              *
-* mst  = Minimum number of request processing threads that will be created at listener   *
-*        startup time and maintained as spare threads above the current thread count     *
-* mt   = Maximum number of request processing threads that are created by the listener   *
-* mtm  = Provides the longest response time for a request - not a cumulative value, but  *
-*        the largest response time from among the response times                         *
-* pt   = Cumulative value of the times taken to process each request. The processing     *
-*        time is the average of request processing times over the request count          *
-* rc   = Cumulative number of the requests processed so far                              *
-******************************************************************************************
-----
-
-[[sthref1898]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1899]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:enable-monitoring.html#enable-monitoring-1[`enable-monitoring`(1)],
-link:disable-monitoring.html#disable-monitoring-1[`disable-monitoring`(1)],
-link:set.html#set-1[`set`(1)]
-
-link:monitoring.html#monitoring-5asc[`monitoring`(5ASC)]
-
-"link:../administration-guide/monitoring.html#GSADG00011[Administering the Monitoring Service]" in GlassFish
-Server Open Source Edition Administration Guide
-
-'''''
-
-
-Footnote Legend
-
-Footnote 2: The terms "Java Virtual Machine" and "JVM" mean a Virtual
-Machine for the Java platform. +
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/monitoring.adoc b/docs/reference-manual/src/main/jbake/content/monitoring.adoc
deleted file mode 100644
index e9ffc6b..0000000
--- a/docs/reference-manual/src/main/jbake/content/monitoring.adoc
+++ /dev/null
@@ -1,76 +0,0 @@
-type=page
-status=published
-title=monitoring
-next=passwords.html
-prev=logging.html
-~~~~~~
-monitoring
-==========
-
-[[monitoring-5asc]][[GSRFM00271]][[monitoring]]
-
-monitoring
-----------
-
-reviewing the runtime state of components and services deployed in
-\{product---name}
-
-[[sthref2406]]
-
-Description
-
-Monitoring is the process of reviewing the statistics of a system to
-improve performance or solve problems. By monitoring the state of
-various components and services deployed in \{product---name},
-performance bottlenecks can be identified, failures can be anticipated,
-and runtime standards can be established and observed. Data gathered by
-monitoring can also be useful in performance tuning and capacity
-planning.
-
-The \{product---name} monitoring service is enabled by default, that is,
-the `monitoring-enabled` attribute of the `monitoring-service` element
-is set to true. Once the monitoring service is enabled, a deployed
-module can then be enabled for monitoring by setting its monitoring
-level to HIGH or LOW (default is OFF). Monitoring can be configured
-dynamically by using the Administration Console or the
-`enable-monitoring` and the `disable-monitoring` subcommands. The `set`
-subcommand can also be used with dotted names to enable or disable
-monitoring. However, a server restart is required for changes made by
-using the `set` subcommand to take affect.
-
-Monitoring data can be viewed by using the Administration Console or by
-using the subcommands of the `asadmin` utility.
-
-* The `monitor` subcommand displays monitoring data for a given type,
-similar to the UNIX `top` command. The data is presented at given
-intervals.
-* The `list` and `get` subcommands display comprehensive data. Both use
-dotted names to specify monitorable objects.
-
-Alternate tools for monitoring \{product---name} components and services
-include JConsole and the REST interface.
-
-The Monitoring Scripting Client or DTrace Monitoring can be used to
-start the available monitoring probes. Using these tools is helpful in
-identifying performance issues during runtime. Monitoring Scripting
-Client or DTrace Monitoring are only usable if their modules are
-present.
-
-[[sthref2407]]
-
-See Also
-
-link:monitor.html#monitor-1[`monitor`(1)],
-link:enable-monitoring.html#enable-monitoring-1[`enable-monitoring`(1)],
-link:disable-monitoring.html#disable-monitoring-1[`disable-monitoring`(1)],
-link:list.html#list-1[`list`(1)], link:get.html#get-1[`get`(1)],
-link:set.html#set-1[`set`(1)]
-
-link:dotted-names.html#dotted-names-5asc[`dotted-names`(5ASC)]
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-"link:../administration-guide/monitoring.html#GSADG00011[Administering the Monitoring Service]" in GlassFish
-Server Open Source Edition Administration Guide
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/multimode.adoc b/docs/reference-manual/src/main/jbake/content/multimode.adoc
deleted file mode 100644
index 01523b0..0000000
--- a/docs/reference-manual/src/main/jbake/content/multimode.adoc
+++ /dev/null
@@ -1,130 +0,0 @@
-type=page
-status=published
-title=multimode
-next=osgi.html
-prev=monitor.html
-~~~~~~
-multimode
-=========
-
-[[multimode-1]][[GSRFM00213]][[multimode]]
-
-multimode
----------
-
-allows multiple subcommands to be run while preserving environment
-settings and remaining in the asadmin utility
-
-[[sthref1900]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] multimode [--help] 
-[--file filename] 
-[--printprompt={true|false}] [--encoding encode]
-----
-
-[[sthref1901]]
-
-Description
-
-The `multimode` subcommand processes `asadmin` subcommands sequentially
-in a single session. The command-line interface prompts for a
-subcommand, runs that subcommand, displays the results of that
-subcommand, and then prompts for the next subcommand. All the `asadmin`
-options set in multimode apply to subsequent commands until the
-multimode session is exited. You exit `multimode` by typing `exit`,
-`quit`, or Ctrl-D.
-
-You can use the `export` subcommand to set your environment, or use the
-`unset` subcommand to remove environment variables from the multimode
-environment.
-
-You can also provide subcommands by passing a previously prepared list
-of subcommands from a file or standard input (pipe). When you use a
-file, you can include comment lines in the file by entering the hash
-symbol (`#`) as the first character of the line.
-
-You can invoke `multimode` from within a multimode session. When you
-exit the second multimode environment, you return to your original
-multimode environment.
-
-All the remote `asadmin` utility options can be supplied when invoking
-the `multimode` subcommand. The settings will apply as defaults for all
-subcommands that are run within the multimode session. For a list of the
-`asadmin` utility options, see the
-link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-
-[[sthref1902]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--file`::
-`-f`::
-  Reads the subcommands in the specified file.
-`--printprompt`::
-  Controls printing of the `asadmin` prompt. By default, this option is
-  set to the same value as the `--interactive` `asadmin` utility option.
-  Normally you will not need to specify this option. Default is true.
-`--encoding`::
-  Specifies the character set for the file to be decoded. By default,
-  the system character set is used.
-
-[[sthref1903]]
-
-Examples
-
-[[GSRFM725]][[sthref1904]]
-
-Example 1   Starting a Multimode Session
-
-This example starts a multimode session where: `%` is the system prompt.
-
-[source,oac_no_warn]
-----
-% asadmin multimode
-asadmin> 
-----
-
-You can also start a multimode session by typing `asadmin` without
-options or subcommands at the system prompt.
-
-[[GSRFM726]][[sthref1905]]
-
-Example 2   Running Multiple Commands From a File
-
-This example runs a sequence of subcommands from the `commands_file.txt`
-file.
-
-[source,oac_no_warn]
-----
-% asadmin multimode --file commands_file.txt
-----
-
-[[sthref1906]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1907]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:export.html#export-1[`export`(1)],
-link:unset.html#unset-1[`unset`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/osgi-shell.adoc b/docs/reference-manual/src/main/jbake/content/osgi-shell.adoc
deleted file mode 100644
index 5b88df7..0000000
--- a/docs/reference-manual/src/main/jbake/content/osgi-shell.adoc
+++ /dev/null
@@ -1,153 +0,0 @@
-type=page
-status=published
-title=osgi-shell
-next=ping-connection-pool.html
-prev=osgi.html
-~~~~~~
-osgi-shell
-==========
-
-[[osgi-shell-1]][[GSRFM890]][[osgi-shell]]
-
-osgi-shell
-----------
-
-provides interactive access to the Apache Felix Gogo remote shell for
-the execution of OSGi shell commands
-
-[[sthref1918]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] osgi-shell [--help]
-[--file file]
-[--printprompt={false|true}]
-[--encoding encoding]
-----
-
-[[sthref1919]]
-
-Description
-
-The `osgi-shell` subcommand provides interactive access to the Apache
-Felix Gogo remote shell for the execution of OSGi shell commands. The
-remote shell is provided with \{product---name} and used to administer
-and inspect the OSGi runtime.
-
-OSGi shell commands are executed on the server and results are printed
-on the client. Because the shell is interactive, no operands are
-accepted. Scripting is supported, which means that multiple commands can
-be executed in sequence from a text file.
-
-A related subcommand is the `osgi` subcommand, which passes a single
-command to the remote shell for execution. Results are returned by the
-`asadmin` utility. For more information about the `osgi` subcommand, see
-the link:osgi.html#osgi-1[`osgi`(1)] help page.
-
-This subcommand is supported in local mode only. Unlike other local
-subcommands, however, the domain administration server (DAS) and the
-server instance whose shell is being accessed must be running.
-
-[[sthref1920]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--file`::
-`-f`::
-  Reads the commands in the specified file.
-`--printprompt`::
-  Controls printing of the shell prompt. The default value is `true`,
-  which means the shell prompt is displayed.
-`--encoding`::
-  Specifies the character set for the file to be decoded. By default,
-  the system character set is used.
-
-[[sthref1921]]
-
-Examples
-
-[[GSRFM891]][[sthref1922]]
-
-Example 1   Listing Apache Felix Gogo Remote Shell Commands
-
-This example lists Apache Felix Gogo remote shell commands.
-
-Some lines of output are omitted from this example for readability.
-
-[source,oac_no_warn]
-----
-asadmin> osgi-shell
-Use "exit" to exit and "help" for online help.
-gogo$ help
-felix:bundlelevel
-felix:cd
-felix:frameworklevel
-felix:headers
-felix:help
-felix:inspect
-felix:install
-felix:lb
-felix:log
-felix:ls
-...
-gogo:cat
-gogo:each
-gogo:echo
-gogo:format
-gogo:getopt
-gogo:gosh
-gogo:grep
-...
-gogo$
-----
-
-[[GSRFM892]][[sthref1923]]
-
-Example 2   Running a Remote Shell Command
-
-This example runs the Felix Remote Shell Command `lb` without any
-arguments to list all installed OSGi bundles.
-
-Some lines of output are omitted from this example for readability.
-
-[source,oac_no_warn]
-----
-asadmin> osgi-shell
-Use "exit" to exit and "help" for online help.
-gogo$ lb
-START LEVEL 2
-ID|State      |Level|Name
- 0|Active     |    0|System Bundle
- 1|Active     |    1|Metro Web Services API OSGi Bundle
- 2|Active     |    1|jakarta.annotation API
- 3|Active     |    1|jaxb-api
-...
-gogo$
-----
-
-[[sthref1924]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1925]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:osgi.html#osgi-1[`osgi`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/osgi.adoc b/docs/reference-manual/src/main/jbake/content/osgi.adoc
deleted file mode 100644
index 5ebe990..0000000
--- a/docs/reference-manual/src/main/jbake/content/osgi.adoc
+++ /dev/null
@@ -1,197 +0,0 @@
-type=page
-status=published
-title=osgi
-next=osgi-shell.html
-prev=multimode.html
-~~~~~~
-osgi
-====
-
-[[osgi-1]][[GSRFM877]][[osgi]]
-
-osgi
-----
-
-delegates the command line to the Apache Felix Gogo remote shell for the
-execution of OSGi shell commands
-
-[[sthref1908]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] osgi [--help]
-[--session session]
-[--session-id session-id]
-[--instance instance]
-[command_line]
-----
-
-[[sthref1909]]
-
-Description
-
-The `osgi` subcommand delegates the command line to the Apache Felix
-Gogo remote shell for the execution of OSGi shell commands. Commands are
-executed by the remote shell and results are returned by the `asadmin`
-utility. The remote shell is provided with \{product---name} and used to
-administer and inspect the OSGi runtime.
-
-Multiple command-line sessions can be created. Use the `--session` and
-`--session-id` options to run commands in a specific command-line
-session. If no session is specified, a new session is created to run
-commands and closed when execution completes.
-
-A related subcommand is the `osgi-shell` subcommand, which enables you
-to run multiple commands from a file or run commands interactively. For
-more information about the `osgi-shell` subcommand, see the
-link:osgi-shell.html#osgi-shell-1[`osgi-shell`(1)] help page.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1910]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the `osgi` subcommand.
-`--session`::
-  Performs command-line session operations. Valid values are: +
-  `new`;;
-    Creates a new session and returns a session ID.
-  `stop`;;
-    Stops the session with the specified session ID.
-  `list`;;
-    Lists all active sessions.
-  `execute`;;
-    Runs a command in the session with the specified session ID.
-`--session-id`::
-  Specifies the session ID for command-line session operations.
-`--instance`::
-  Specifies the server instance to which the command is being delegated. +
-  The default is the domain administration server (DAS). The DAS must be
-  running to run a command on another instance.
-
-[[sthref1911]]
-
-Operands
-
-command_line::
-  The complete command-line syntax as provided for commands in the
-  Apache Felix Gogo remote shell.
-
-[[sthref1912]]
-
-Examples
-
-[[GSRFM888]][[sthref1913]]
-
-Example 1   Listing Apache Felix Gogo Remote Shell Commands
-
-This example lists the Apache Felix Gogo remote shell commands that can
-be used with the `osgi` subcommand.
-
-Some lines of output are omitted from this example for readability.
-
-[source,oac_no_warn]
-----
-asadmin> osgi help
-felix:bundlelevel
-felix:cd
-felix:frameworklevel
-felix:headers
-felix:help
-felix:inspect
-felix:install
-felix:lb
-felix:log
-felix:ls
-felix:refresh
-felix:resolve
-...
-gogo:cat
-gogo:each
-gogo:echo
-gogo:format
-gogo:getopt
-gogo:gosh
-gogo:grep
-...
-Command osgi executed successfully.
-----
-
-[[GSRFM878]][[sthref1914]]
-
-Example 2   Running a Remote Shell Command
-
-This example runs the Felix Remote Shell Command `lb` without any
-arguments to list all installed OSGi bundles.
-
-Some lines of output are omitted from this example for readability.
-
-[source,oac_no_warn]
-----
-asadmin> osgi lb
-START LEVEL 2
-ID|State      |Level|Name
- 0|Active     |    0|System Bundle
- 1|Active     |    1|Metro Web Services API OSGi Bundle
- 2|Active     |    1|jakarta.annotation API
- 3|Active     |    1|jaxb-api
-...
-Command osgi executed successfully.
-----
-
-[[GSRFM889]][[sthref1915]]
-
-Example 3   Running Commands That Create and Target a Specific
-Command-Line Session
-
-This example runs commands that create and target a specific
-command-line session.
-
-Some lines of output are omitted from this example for readability.
-
-[source,oac_no_warn]
-----
-asadmin> osgi --session new
-9537e570-0def-4f2e-9c19-bc8f51a8082f
-...
-asadmin> osgi --session list
-9537e570-0def-4f2e-9c19-bc8f51a8082f 
-...
-asadmin> osgi --session execute --session-id 9537e570-0def-4f2e-9c19-bc8f51a8082f lb
-START LEVEL 2
-ID|State      |Level|Name
- 0|Active     |    0|System Bundle
- 1|Active     |    1|Metro Web Services API OSGi Bundle
- 2|Active     |    1|jakarta.annotation API
- 3|Active     |    1|jaxb-api
-...
-asadmin> osgi --session stop --session-id 9537e570-0def-4f2e-9c19-bc8f51a8082f
-Command osgi executed successfully.
-----
-
-[[sthref1916]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1917]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:osgi-shell.html#osgi-shell-1[`osgi-shell`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/package-appclient.adoc b/docs/reference-manual/src/main/jbake/content/package-appclient.adoc
deleted file mode 100644
index 72902ac..0000000
--- a/docs/reference-manual/src/main/jbake/content/package-appclient.adoc
+++ /dev/null
@@ -1,92 +0,0 @@
-type=page
-status=published
-title=package-appclient
-next=manvol5asc.html
-prev=capture-schema.html
-~~~~~~
-package-appclient
-=================
-
-[[package-appclient-1m]][[GSRFM00264]][[package-appclient]]
-
-package-appclient
------------------
-
-packs the application client container libraries and jar files
-
-[[sthref2387]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-package-appclient
-----
-
-[[sthref2388]]
-
-Description
-
-Use the `package-appclient` command to pack the application client
-container libraries and jar files into an `appclient.jar` file, which is
-created in the as-install`/lib` directory on the machine on which
-\{product---name} is installed. The `appclient.jar` file provides an
-application client container package targeted at remote hosts that do
-not contain a server installation.
-
-After copying the `appclient.jar` file to a remote location, unjar or
-unzip it to get a set of libraries and jar files in the `appclient`
-directory under the current directory.
-
-After unjarring on the client machine, modify
-`appclient/glassfish/config/asenv.conf` (`asenv.bat` for Windows) as
-follows:
-
-* set `AS_WEBSERVICES_LIB` to path-to-appclient`/appclient/lib`
-* set `AS_IMQ_LIB` to path-to-appclient`/appclient/mq/lib`
-* set `AS_INSTALL` to path-to-appclient`/appclient`
-* set `AS_JAVA` to your JDK 7 or JRE 7 home directory
-* set `AS_ACC_CONFIG` to
-path-to-appclient`/appclient/glassfish/domains/domain1/config/sun-acc.xml`
-
-Modify `appclient/glassfish/domains/domain1/config/sun-acc.xml` as
-follows:
-
-* Ensure the `DOCTYPE` file references
-path-to-appclient`/appclient/glassfish/lib/dtds`
-* Ensure that `target-server` address attribute references the server
-machine.
-* Ensure that `target-server` port attribute references the ORB port on
-the remote machine.
-* Ensure that `log-service` references a log file; if the user wants to
-put log messages to a log file.
-
-To use the newly installed application client container, you must do the
-following:
-
-* Obtain the application client files for your target application,
-including the generated yourAppClient.jar file.
-* Execute the `appclient` utility: `appclient -`client yourAppClient.jar
-
-[[sthref2389]]
-
-Attributes
-
-See
-http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN5attributes-5[`attributes`(5)]
-for descriptions of the following attributes:
-
-[width="100%",cols="50%,50%",options="header",]
-|===============================
-|ATTRIBUTE TYPE |ATTRIBUTE VALUE
-|Interface Stability |Unstable
-|===============================
-
-
-[[sthref2390]]
-
-See Also
-
-link:appclient.html#appclient-1m[`appclient`(1M)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/passwords.adoc b/docs/reference-manual/src/main/jbake/content/passwords.adoc
deleted file mode 100644
index 64b4253..0000000
--- a/docs/reference-manual/src/main/jbake/content/passwords.adoc
+++ /dev/null
@@ -1,39 +0,0 @@
-type=page
-status=published
-title=passwords
-next=resource.html
-prev=monitoring.html
-~~~~~~
-passwords
-=========
-
-[[passwords-5asc]][[GSRFM00272]][[passwords]]
-
-passwords
----------
-
-securing and managing \{product---name}
-
-[[sthref2408]]
-
-Description
-
-An administrator of \{product---name} manages one or more domains, each
-of which can have distinct administrative credentials. By managing a
-domain, an administrator effectively manages various resources like
-server instances, server clusters, libraries etc. that are required by
-the enterprise Java applications.
-
-[[sthref2409]]
-
-See Also
-
-link:change-admin-password.html#change-admin-password-1[`change-admin-password`(1)],
-link:change-master-password.html#change-master-password-1[`change-master-password`(1)],
-link:create-password-alias.html#create-password-alias-1[`create-password-alias`(1)],
-link:list-password-aliases.html#list-password-aliases-1[`list-password-aliases`(1)],
-link:delete-password-alias.html#delete-password-alias-1[`delete-password-alias`(1)]
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/ping-connection-pool.adoc b/docs/reference-manual/src/main/jbake/content/ping-connection-pool.adoc
deleted file mode 100644
index d12118e..0000000
--- a/docs/reference-manual/src/main/jbake/content/ping-connection-pool.adoc
+++ /dev/null
@@ -1,124 +0,0 @@
-type=page
-status=published
-title=ping-connection-pool
-next=ping-node-dcom.html
-prev=osgi-shell.html
-~~~~~~
-ping-connection-pool
-====================
-
-[[ping-connection-pool-1]][[GSRFM00214]][[ping-connection-pool]]
-
-ping-connection-pool
---------------------
-
-tests if a connection pool is usable
-
-[[sthref1926]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] ping-connection-pool [--help] 
-pool_name 
-[--appname application [--modulename module]
-----
-
-[[sthref1927]]
-
-Description
-
-The `ping-connection-pool` subcommand tests if an existing JDBC or
-connector connection pool is usable . For example, if you create a new
-JDBC connection pool for an application that is expected to be deployed
-later, the JDBC pool is tested with this subcommand before deploying the
-application.
-
-Before testing availability of a connection pool, you must create the
-connection pool with authentication and ensure that the server or
-database is started.
-
-This subcommand is supported in remote mode only.
-
-Application Scoped Resources
-
-The `ping-connection-pool` subcommand can target resources that are
-scoped to a specific application or module, as defined in the
-`glassfish-resources.xml` for the GlassFish domain.
-
-* To reference the `jndi-name` for an application scoped resource,
-perform the lookup using the `java:app` prefix.
-* To reference the `jndi-name` for a module scoped resource, perform the
-lookup using the `java:module` prefix.
-
-The `jndi-name` for application-scoped-resources or
-module-scoped-resources are specified using the format
-`java:app/`jdbc/myDataSource or
-`java:module/`jdbc/myModuleLevelDataSource. This naming scope is defined
-in the Java EE 6 Specification
-(`http://download.oracle.com/javaee/6/api/`).
-
-[[sthref1928]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--appname`::
-  Name of the application in which the application scoped resource is
-  defined.
-`--modulename`::
-  Name of the module in which the module scoped resource is defined.
-
-[[sthref1929]]
-
-Operands
-
-pool_name::
-  Name of the connection pool to be reinitialized.
-
-[[sthref1930]]
-
-Examples
-
-[[GSRFM727]][[sthref1931]]
-
-Example 1   Contacting a Connection Pool
-
-This example tests to see if the connection pool named `DerbyPool` is
-usable.
-
-[source,oac_no_warn]
-----
-asadmin> ping-connection-pool DerbyPool
-Command ping-connection-pool executed successfully
-----
-
-[[sthref1932]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1933]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-connector-connection-pool.html#create-connector-connection-pool-1[`create-connector-connection-pool`(1)],
-link:create-jdbc-connection-pool.html#create-jdbc-connection-pool-1[`create-jdbc-connection-pool`(1)],
-link:delete-connector-connection-pool.html#delete-connector-connection-pool-1[`delete-connector-connection-pool`(1)],
-link:delete-jdbc-connection-pool.html#delete-jdbc-connection-pool-1[`delete-jdbc-connection-pool`(1)],
-link:list-connector-connection-pools.html#list-connector-connection-pools-1[`list-connector-connection-pools`(1)],
-link:list-jdbc-connection-pools.html#list-jdbc-connection-pools-1[`list-jdbc-connection-pools`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/ping-node-dcom.adoc b/docs/reference-manual/src/main/jbake/content/ping-node-dcom.adoc
deleted file mode 100644
index 35deb51..0000000
--- a/docs/reference-manual/src/main/jbake/content/ping-node-dcom.adoc
+++ /dev/null
@@ -1,152 +0,0 @@
-type=page
-status=published
-title=ping-node-dcom
-next=ping-node-ssh.html
-prev=ping-connection-pool.html
-~~~~~~
-ping-node-dcom
-==============
-
-[[ping-node-dcom-1]][[GSRFM728]][[ping-node-dcom]]
-
-ping-node-dcom
---------------
-
-tests if a node that is enabled for communication over DCOM is usable
-
-[[sthref1934]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] ping-node-dcom [--help]
-[--validate={false|true}] node-name
-----
-
-[[sthref1935]]
-
-Description
-
-The `ping-node-dcom` subcommand tests if a node that is enabled for
-communication over the Distributed Component Object Model (DCOM) remote
-protocol is usable. The DCOM protocol is available only on Windows
-systems. This subcommand requires DCOM to be configured on the machine
-where the domain administration server (DAS) is running and on the
-machine where the node resides. You may run this command from any
-machine that can contact the DAS.
-
-If the node is usable, the subcommand displays a confirmation that the
-subcommand could connect to the node through DCOM. This confirmation
-includes the name of the host that the node represents.
-
-Optionally, the subcommand can also validate the node to determine if
-the link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility can run on the
-host that the node represents. To validate a node, the subcommand runs
-the link:version.html#version-1[`version`(1)] subcommand. If the node is
-valid, the subcommand displays the version that the `version` subcommand
-returns.
-
-The node that is specified as the operand of this subcommand must be
-enabled for communication over DCOM. If the node is not enabled for
-communication over DCOM, an error occurs. To determine whether a node is
-enabled for communication over DCOM, use the
-link:list-nodes.html#list-nodes-1[`list-nodes`(1)] subcommand.
-
-
-[NOTE]
-=======================================================================
-
-To test whether a node that is enabled for communication over secure
-shell (SSH) is usable, use the
-link:ping-node-ssh.html#ping-node-ssh-1[`ping-node-ssh`(1)] subcommand.
-
-=======================================================================
-
-
-This subcommand is supported in remote mode only.
-
-[[sthref1936]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--validate`::
-  Specifies whether the subcommand validates the node. +
-  Possible values are as follows: +
-  `true`;;
-    The node is validated.
-  `false`;;
-    The node is not validated (default).
-
-[[sthref1937]]
-
-Operands
-
-node-name::
-  The name of the node to test. The node must be enabled for
-  communication over DCOM. Otherwise, an error occurs.
-
-[[sthref1938]]
-
-Examples
-
-[[GSRFM729]][[sthref1939]]
-
-Example 1   Testing if a DCOM-Enabled Node Is Usable
-
-This example tests if the DCOM-enabled node `wpmd2` is usable.
-
-[source,oac_no_warn]
-----
-asadmin> ping-node-dcom wpmdl2
-Successfully made DCOM connection to node wpmdl2 (wpmdl2.example.com)
-Command ping-node-dcom executed successfully.
-----
-
-[[GSRFM730]][[sthref1940]]
-
-Example 2   Validating a DCOM-Enabled Node
-
-This example validates the DCOM-enabled node `adc-node`.
-
-[source,oac_no_warn]
-----
-asadmin> ping-node-dcom --validate=true adc-node
-Successfully made DCOM connection to node adc-node (adc-node.example.com)
-GlassFish version found at C:\glassfish3:
-Using locally retrieved version string from version class.
-Version = GlassFish Server Open Source Edition 3.1.2 (build 18)
-Command version executed successfully.
-Command ping-node-dcom executed successfully.
-----
-
-[[sthref1941]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1942]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
-link:delete-node-dcom.html#delete-node-dcom-1[`delete-node-dcom`(1)],
-link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
-link:ping-node-ssh.html#ping-node-ssh-1[`ping-node-ssh`(1)],
-link:update-node-ssh.html#update-node-dcom-1[`update-node-dcom`(1)],
-link:validate-dcom.html#validate-dcom-1[`validate-dcom`(1)],
-link:version.html#version-1[`version`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/ping-node-ssh.adoc b/docs/reference-manual/src/main/jbake/content/ping-node-ssh.adoc
deleted file mode 100644
index 9c2faf4..0000000
--- a/docs/reference-manual/src/main/jbake/content/ping-node-ssh.adoc
+++ /dev/null
@@ -1,152 +0,0 @@
-type=page
-status=published
-title=ping-node-ssh
-next=recover-transactions.html
-prev=ping-node-dcom.html
-~~~~~~
-ping-node-ssh
-=============
-
-[[ping-node-ssh-1]][[GSRFM00215]][[ping-node-ssh]]
-
-ping-node-ssh
--------------
-
-tests if a node that is enabled for communication over SSH is usable
-
-[[sthref1943]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] ping-node-ssh [--help]
-[--validate={false|true}] node-name
-----
-
-[[sthref1944]]
-
-Description
-
-The `ping-node-ssh` subcommand tests if a node that is enabled for
-communication over secure shell (SSH) is usable. This subcommand
-requires secure shell (SSH) to be configured on the machine where the
-domain administration server (DAS) is running and on the machine where
-the node resides. You may run this command from any machine that can
-contact the DAS.
-
-If the node is usable, the subcommand displays a confirmation that the
-subcommand could connect to the node through SSH. This confirmation
-includes the name of the host that the node represents.
-
-Optionally, the subcommand can also validate the node to determine if
-the link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility can run on the
-host that the node represents. To validate a node, the subcommand runs
-the link:version.html#version-1[`version`(1)] subcommand. If the node is
-valid, the subcommand displays the version that the `version` subcommand
-returns.
-
-The node that is specified as the operand of this subcommand must be
-enabled for communication over SSH. If the node is not enabled for
-communication over SSH, an error occurs. To determine whether a node is
-enabled for communication over SSH, use the
-link:list-nodes.html#list-nodes-1[`list-nodes`(1)] subcommand.
-
-
-[NOTE]
-=======================================================================
-
-To test whether a node that is enabled for communication over the
-Distributed Component Object Model (DCOM) remote protocol is usable, use
-the link:ping-node-dcom.html#ping-node-dcom-1[`ping-node-dcom`(1)]
-subcommand.
-
-=======================================================================
-
-
-This subcommand is supported in remote mode only.
-
-[[sthref1945]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--validate`::
-  Specifies whether the subcommand validates the node. +
-  Possible values are as follows: +
-  `true`;;
-    The node is validated.
-  `false`;;
-    The node is not validated (default).
-
-[[sthref1946]]
-
-Operands
-
-node-name::
-  The name of the node to test. The node must be enabled for
-  communication over SSH. Otherwise, an error occurs.
-
-[[sthref1947]]
-
-Examples
-
-[[GSRFM731]][[sthref1948]]
-
-Example 1   Testing if an SSH-Enabled Node Is Usable
-
-This example tests if the SSH-enabled node `sj03-node` is usable.
-
-[source,oac_no_warn]
-----
-asadmin> ping-node-ssh sj03-node
-Successfully made SSH connection to node sj03-node (sj03.example.com)
-Command ping-node-ssh executed successfully.
-----
-
-[[GSRFM732]][[sthref1949]]
-
-Example 2   Validating an SSH-Enabled Node
-
-This example validates the SSH-enabled node `adc-node`.
-
-[source,oac_no_warn]
-----
-asadmin> ping-node-ssh --validate=true adc-node
-Successfully made SSH connection to node adcnode (adc.example.com)
-GlassFish version found at /export/glassfish3:
-Using locally retrieved version string from version class.
-Version = GlassFish Server Open Source Edition 3.1 (build 40)
-Command version executed successfully.
-Command ping-node-ssh executed successfully.
-----
-
-[[sthref1950]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1951]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-node-ssh.html#create-node-ssh-1[`create-node-ssh`(1)],
-link:delete-node-ssh.html#delete-node-ssh-1[`delete-node-ssh`(1)],
-link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
-link:ping-node-dcom.html#ping-node-dcom-1[`ping-node-dcom`(1)],
-link:setup-ssh.html#setup-ssh-1[`setup-ssh`(1)],
-link:update-node-ssh001.html#update-node-ssh-1[`update-node-ssh`(1)],
-link:version.html#version-1[`version`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/preface.adoc b/docs/reference-manual/src/main/jbake/content/preface.adoc
deleted file mode 100644
index ef27af9..0000000
--- a/docs/reference-manual/src/main/jbake/content/preface.adoc
+++ /dev/null
@@ -1,108 +0,0 @@
-type=page
-status=published
-title=Preface
-next=manvol1.html
-prev=title.html
-~~~~~~
-Preface
-=======
-
-[[GSRFM441]][[sthref2]]
-
-
-[[preface]]
-Preface
--------
-
-[NOTE]
-========================================================================
-
-This documentation is part of the Java Enterprise Edition contribution 
-to the Eclipse Foundation and is not intended for use in relation to 
-Java Enterprise Edition or Orace GlassFish. The documentation is in the 
-process of being revised to reflect the new Jakarta EE branding. 
-Additional changes will be made as requirements and procedures evolve 
-for Jakarta EE. Where applicable, references to Java EE or Java 
-Enterprise Edition should be considered references to Jakarta EE. 
-
-Please see the Title page for additional license information.
-========================================================================
-
-Both novice users and those familiar with GlassFish Server Open Source
-Edition can use online man pages to obtain information about the product
-and its features. A man page is intended to answer concisely the
-question "What does it do?" The man pages in general comprise a
-reference manual. They are not intended to be a tutorial.
-
-[[GSRFM442]][[sthref3]]
-
-
-[[overview]]
-Overview
-~~~~~~~~
-
-The following contains a brief description of each man page section and
-the information it references:
-
-* Section 1 describes, in alphabetical order, the `asadmin` utility
-subcommands.
-* Section 1M describes GlassFish Server utility commands.
-* Section 5ASC describes concepts that are related to GlassFish Server +
-administration.
-
-Below is a generic format for man pages. The man pages of each manual
-section generally follow this order, but include only needed headings.
-For example, if there are no bugs to report, there is no Bugs section.
-
-Name::
-  This section gives the names of the commands or functions documented,
-  followed by a brief description of what they do.
-Synopsis::
-  This section shows the syntax of commands or functions. +
-  The following special characters are used in this section: +
-  [ ];;
-    Brackets. The option or argument enclosed in these brackets is
-    optional. If the brackets are omitted, the argument must be
-    specified.
-  |;;
-    Separator. Only one of the arguments separated by this character can
-    be specified at a time.
-Description::
-  This section defines the functionality and behavior of the service.
-  Thus it describes concisely what the command does. It does not discuss
-  options or cite examples.
-Options::
-  This section lists the command options with a concise summary of what
-  each option does. The options are listed literally and in the order
-  they appear in the Synopsis section. Possible arguments to options are
-  discussed under the option, and where appropriate, default values are
-  supplied.
-Operands::
-  This section lists the command operands and describes how they affect
-  the actions of the command.
-Examples::
-  This section provides examples of usage or of how to use a command or
-  function. Wherever possible a complete example including command-line
-  entry and machine response is shown. Examples are followed by
-  explanations, variable substitution rules, or returned values. Most
-  examples illustrate concepts from the Synopsis, Description, Options,
-  and Usage sections.
-Exit Status::
-  This section lists the values the command returns to the calling
-  program or shell and the conditions that cause these values to be
-  returned. Usually, zero is returned for successful completion, and
-  values other than zero for various error conditions.
-See Also::
-  This section lists references to other man pages, in-house
-  documentation, and outside publications.
-Notes::
-  This section lists additional information that does not belong
-  anywhere else on the page. It takes the form of an aside to the user,
-  covering points of special interest. Critical information is never
-  covered here.
-Bugs::
-  This section describes known bugs and, wherever possible, suggests
-  workarounds.
-
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/recover-transactions.adoc b/docs/reference-manual/src/main/jbake/content/recover-transactions.adoc
deleted file mode 100644
index 1d3fa17..0000000
--- a/docs/reference-manual/src/main/jbake/content/recover-transactions.adoc
+++ /dev/null
@@ -1,141 +0,0 @@
-type=page
-status=published
-title=recover-transactions
-next=redeploy.html
-prev=ping-node-ssh.html
-~~~~~~
-recover-transactions
-====================
-
-[[recover-transactions-1]][[GSRFM00216]][[recover-transactions]]
-
-recover-transactions
---------------------
-
-manually recovers pending transactions
-
-[[sthref1952]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] recover-transactions [--help] 
-[--transactionlogdir transaction_log_dir]
-[--target target_server_name] server_name
-----
-
-[[sthref1953]]
-
-Description
-
-The `recover-transactions` subcommand manually recovers pending
-transactions.
-
-For an installation of multiple server instances, you can run the
-`recover-transactions` subcommand from a surviving server instance to
-recover transactions after a server failure. To use this subcommand in
-this way, the following conditions must be met:
-
-* Delegated transaction recovery is disabled.
-* Transaction logs are stored on a shared file system or in a database
-that is accessible to all server instances.
-
-For a stand-alone server, do not use this subcommand to recover
-transactions after a server failure. For a stand-alone server, the
-`recover-transactions` subcommand can recover transactions only when a
-resource fails, but the server is still running. If a stand-alone server
-fails, only the full startup recovery process can recover transactions
-that were pending when the server failed.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1954]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--transactionlogdir`::
-  The location of the transaction logs for a server for which
-  transaction recovery is requested. This option applies only if
-  transaction logs are stored on a shared file system.
-`--target`::
-  The target server that performs the recovery for the server that is
-  specified by the server_name operand. The target server should be
-  running.
-`--destination`::
-  This option is deprecated. It works exactly as the `--target` option
-  does.
-
-[[sthref1955]]
-
-Operands
-
-server_name::
-  For a stand-alone server, the value of this operand is typically
-  `server`. Transactions are recovered only if a resource fails, but the
-  server is still running. +
-  For an installation of multiple server instances, the value of this
-  operand is the name of the server for which the recovery is required.
-  The in-flight transactions on this server will be recovered. If this
-  server is running, recovery is performed by the same server. In this
-  situation, the `--transactionlogdir` and `--target` options should be
-  omitted. If the server is not running, the `--target` option is
-  required, and the `--transactionlogdir` option is also required if
-  transaction logs are stored on a shared file system.
-
-[[sthref1956]]
-
-Examples
-
-[[GSRFM733]][[sthref1957]]
-
-Example 1   Recovering transactions on a running server
-
-[source,oac_no_warn]
-----
-% asadmin recover-transactions server1
-Transaction recovered.
-----
-
-[[GSRFM734]][[sthref1958]]
-
-Example 2   Recovering transactions for a server that is not running
-
-[source,oac_no_warn]
-----
-% asadmin recover-transactions --transactionlogdir /logs/tx --target server1 server2
-Transaction recovered.
-----
-
-[[sthref1959]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1960]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:freeze-transaction-service.html#freeze-transaction-service-1[`freeze-transaction-service`(1)],
-link:rollback-transaction.html#rollback-transaction-1[`rollback-transaction`(1)],
-link:unfreeze-transaction-service.html#unfreeze-transaction-service-1[`unfreeze-transaction-service`(1)]
-
-"link:../administration-guide/transactions.html#GSADG00022[Administering Transactions]" in GlassFish Server Open
-Source Edition Administration Guide
-
-"http://docs.oracle.com/javaee/7/tutorial/doc/transactions.html[Transactions]"
-in The Java EE 8 Tutorial
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/redeploy.adoc b/docs/reference-manual/src/main/jbake/content/redeploy.adoc
deleted file mode 100644
index 10399ee..0000000
--- a/docs/reference-manual/src/main/jbake/content/redeploy.adoc
+++ /dev/null
@@ -1,450 +0,0 @@
-type=page
-status=published
-title=redeploy
-next=remove-library.html
-prev=recover-transactions.html
-~~~~~~
-redeploy
-========
-
-[[redeploy-1]][[GSRFM00217]][[redeploy]]
-
-redeploy
---------
-
-redeploys the specified component
-
-[[sthref1961]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] redeploy [--help] 
---name component_name 
-[--upload={true|false}]
-[--retrieve local_dirpath] 
-[--dbvendorname dbvendorname]
-[--createtables={true|false}|--dropandcreatetables={true|false}]
-[--uniquetablenames={true|false}] 
-[--deploymentplan deployment_plan]
-[--altdd alternate_deploymentdescriptor]
-[--runtimealtdd runtime_alternate_deploymentdescriptor]
-[--deploymentorder deployment_order]
-[--enabled={true|false}] 
-[--generatermistubs={false|true}] 
-[--contextroot context_root] 
-[--precompilejsp={true|false}] 
-[--verify={false|true}]
-[--virtualservers virtual_servers] 
-[--availabilityenabled={false|true}] 
-[--asyncreplication={true|false}]
-[--lbenabled={true|false}]
-[--keepstate={false|true}]
-[--libraries jar_file[,jar_file]*] 
-[--target target] 
-[--type pkg-type] 
-[--properties(name=value)[:name=value]*]
-[file_archive|filepath]
-----
-
-[[sthref1962]]
-
-Description
-
-The `redeploy` subcommand redeploys an enterprise application, web
-application, module based on the Enterprise JavaBeans (EJB)
-specification (EJB module), connector module, or application client
-module that is already deployed or already exists. The `redeploy`
-subcommand preserves the settings and other options with which the
-application was originally deployed. The application must already be
-deployed. Otherwise, an error occurs.
-
-This subcommand is supported in remote mode only.
-
-[[sthref1963]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--virtualservers`::
-  One or more virtual server IDs. Multiple IDs are separated by commas.
-`--contextroot`::
-  Valid only if the archive is a web module. It is ignored for other
-  archive types; it will be the value specified by default-context-path
-  in web.xml, if specified; defaults to filename without extension.
-`--precompilejsp`::
-  By default this option does not allow the JSP to be precompiled during
-  deployment. Instead, JSPs are compiled during runtime. Default is
-  `false`.
-`--verify`::
-  If set to true and the required verifier packages are installed from
-  the Update Tool, the syntax and semantics of the deployment descriptor
-  is verified. Default is `false`.
-`--name`::
-  Name of the deployable component. +
-  The name can include an optional version identifier, which follows the
-  name and is separated from the name by a colon (`:`). The version
-  identifier must begin with a letter or number. It can contain
-  alphanumeric characters plus underscore (`_`), dash (`-`), and period
-  (`.`) characters. For more information about module and application
-  versions, see "link:../application-deployment-guide/overview.html#GSDPG00324[Module and Application Versions]" in
-  GlassFish Server Open Source Edition Application Deployment Guide.
-`--upload`::
-  Specifies whether the subcommand uploads the file to the DAS. In most
-  situations, this option can be omitted. +
-  Valid values are as follows: +
-  `false`;;
-    The subcommand does not upload the file and attempts to access the
-    file through the specified file name. If the DAS cannot access the
-    file, the subcommand fails. +
-    For example, the DAS might be running as a different user than the
-    administration user and does not have read access to the file. In
-    this situation, the subcommand fails if the `--upload` option is
-    `false`.
-  `true`;;
-    The subcommand uploads the file to the DAS over the network
-    connection. +
-  The default value depends on whether the DAS is on the host where the
-  subcommand is run or is on a remote host. +
-  * If the DAS is on the host where the subcommand is run, the default
-  is `false`.
-  * If the DAS is on a remote host, the default is `true`. +
-  If a directory filepath is specified, this option is ignored.
-`--retrieve`::
-  Retrieves the client stub JAR file from the server machine to the
-  local directory.
-`--dbvendorname`::
-  Specifies the name of the database vendor for which tables are
-  created. Supported values include `db2`, `mssql`, `oracle`, `derby`,
-  `javadb`, `postgresql`, and `sybase`, case-insensitive. If not
-  specified, the value of the `database-vendor-name` attribute in
-  `glassfish-ejb-jar.xml` is used. If no value is specified, a
-  connection is made to the resource specified by the `jndi-name`
-  subelement of the `cmp-resource` element in the
-  `glassfish-ejb-jar.xml` file, and the database vendor name is read. If
-  the connection cannot be established, or if the value is not
-  recognized, SQL-92 compliance is presumed.
-`--createtables`::
-  If specified as true, creates tables at deployment of an application
-  with unmapped CMP beans. If specified as false, tables are not
-  created. If not specified, the value of the `create-tables-at-deploy`
-  entry in the `cmp-resource` element of the `glassfish-ejb-jar.xml`
-  file determines whether or not tables are created. No unique
-  constraints are created for the tables.
-`--dropandcreatetables`::
-  If specified as true when the component is redeployed, the tables
-  created by the previous deployment are dropped before creating the new
-  tables. Applies to deployed applications with unmapped CMP beans. If
-  specified as false, tables are neither dropped nor created. If not
-  specified, the tables are dropped if the `drop-tables-at-undeploy`
-  entry in the `cmp-resource` element of the `glassfish-ejb-jar.xml`
-  file is set to true, and the new tables are created if the
-  `create-tables-at-deploy` entry in the `cmp-resource` element of the
-  `glassfish-ejb-jar.xml` file is set to true.
-`--uniquetablenames`::
-  Guarantees unique table names for all the beans and results in a hash
-  code added to the table names. This is useful if you have an
-  application with case-sensitive bean names. Applies to applications
-  with unmapped CMP beans.
-`--deploymentplan`::
-  Deploys the deployment plan, which is a JAR file that contains
-  \{product---name} descriptors. Specify this option when deploying a
-  pure EAR file. A pure EAR file is an EAR without \{product---name}
-  descriptors.
-`--altdd`::
-  Deploys the application using a Java EE standard deployment descriptor
-  that resides outside of the application archive. Specify an absolute
-  path or a relative path to the alternate deployment descriptor file.
-  The alternate deployment descriptor overrides the top-level deployment
-  descriptor packaged in the archive. For example, for an EAR, the
-  `--altdd` option overrides `application.xml`. For a standalone module,
-  the `--altdd` option overrides the top-level module descriptor such as
-  `web.xml`.
--`-runtimealtdd`::
-  Deploys the application using a \{product---name} runtime deployment
-  descriptor that resides outside of the application archive. Specify an
-  absolute path or a relative path to the alternate deployment
-  descriptor file. The alternate deployment descriptor overrides the
-  top-level deployment descriptor packaged in the archive. For example,
-  for an EAR, the `--runtimealtdd` option overrides
-  `glassfish-application.xml`. For a standalone module, the
-  `--runtimealtdd` option overrides the top-level module descriptor such
-  as `glassfish-web.xml`. Applies to \{product---name} deployment
-  descriptors only (`glassfish-*.xml`); the name of the alternate
-  deployment descriptor file must begin with `glassfish-`. Does not
-  apply to `sun-*.xml` deployment descriptors, which are deprecated.
-`--deploymentorder`::
-  Specifies the deployment order of the application. This is useful if
-  the application has dependencies and must be loaded in a certain order
-  at server startup. The deployment order is specified as an integer.
-  The default value is 100. Applications with lower numbers are loaded
-  before applications with higher numbers. For example, an application
-  with a deployment order of 102 is loaded before an application with a
-  deployment order of 110. If a deployment order is not specified, the
-  default value of 100 is assigned. If two applications have the same
-  deployment order, the first application to be deployed is the first
-  application to be loaded at server startup. +
-  The deployment order is typically specified when the application is
-  first deployed but can also be specified or changed after initial
-  deployment using the `set` subcommand. You can view the deployment
-  order of an application using the `get` subcommand.
-`--enabled`::
-  Allows users to access the application. If set to `false`, users will
-  not be able to access the application. This option enables the
-  application on the specified target instance or cluster. If you deploy
-  to the target `domain`, this option is ignored, since deploying to the
-  domain doesn't deploy to a specific instance or cluster. The default
-  is `true`.
-`--generatermistubs`::
-  If set to `true`, static RMI-IIOP stubs are generated and put into the
-  `client.jar`. If set to `false`, the stubs are not generated. Default
-  is `false`.
-`--availabilityenabled`::
-  This option controls whether high-availability is enabled for web
-  sessions and for stateful session bean (SFSB) checkpointing and
-  potentially passivation. If set to false (default) all web session
-  saving and SFSB checkpointing is disabled for the specified
-  application, web application, or EJB module. If set to true, the
-  specified application or module is enabled for high-availability. Set
-  this option to true only if high availability is configured and
-  enabled at higher levels, such as the server and container levels.
-`--asyncreplication`::
-  This option controls whether web session and SFSB states for which
-  high availability is enabled are first buffered and then replicated
-  using a separate asynchronous thread. If set to true (default),
-  performance is improved but availability is reduced. If the instance
-  where states are buffered but not yet replicated fails, the states are
-  lost. If set to false, performance is reduced but availability is
-  guaranteed. States are not buffered but immediately transmitted to
-  other instances in the cluster.
-`--lbenabled`::
-  This option controls whether the deployed application is available for
-  load balancing. The default is true.
-`--keepstate`::
-  This option controls whether web sessions, SFSB instances, and
-  persistently created EJB timers are retained between redeployments. +
-  The default is false. This option is supported only on the default
-  server instance, named `server`. It is not supported and ignored for
-  any other target. +
-  Some changes to an application between redeployments prevent this
-  feature from working properly. For example, do not change the set of
-  instance variables in the SFSB bean class. +
-  For web applications, this feature is applicable only if in the
-  `glassfish-web-app.xml` file the `persistence-type` attribute of the
-  `session-manager` element is `file`. +
-  For stateful session bean instances, the persistence type without high
-  availability is set in the server (the `sfsb-persistence-type`
-  attribute) and must be set to `file`, which is the default and
-  recommended value. +
-  If any active web session, SFSB instance, or EJB timer fails to be
-  preserved or restored, none of these will be available when the
-  redeployment is complete. However, the redeployment continues and a
-  warning is logged. +
-  To preserve active state data, \{product---name} serializes the data
-  and saves it in memory. To restore the data, the class loader of the
-  newly redeployed application deserializes the data that was previously
-  saved.
-`--libraries`::
-  A comma-separated list of library JAR files. Specify the library JAR
-  files by their relative or absolute paths. Specify relative paths
-  relative to domain-dir`/lib/applibs`. The libraries are made available
-  to the application in the order specified.
-`--target`::
-  Specifies the target to which you are deploying. Valid values are: +
-  `server`;;
-    Deploys the component to the default server instance `server` and is
-    the default value.
-  `domain`;;
-    Deploys the component to the domain. If `domain` is the target for
-    an initial deployment, the application is deployed to the domain,
-    but no server instances or clusters reference the application. If
-    `domain` is the target for a redeployment, and dynamic
-    reconfiguration is enabled for the clusters or server instances that
-    reference the application, the referencing clusters or server
-    instances automatically get the new version of the application. If
-    redeploying, and dynamic configuration is disabled, the referencing
-    clusters or server instances do not get the new version of the
-    application until the clustered or standalone server instances are
-    restarted.
-  cluster_name;;
-    Deploys the component to every server instance in the cluster.
-  instance_name;;
-    Deploys the component to a particular stand-alone server instance.
-`--type`::
-  The packaging archive type of the component that is being deployed.
-  Possible values are as follows: +
-  `car`;;
-    The component is packaged as a CAR file.
-  `ear`;;
-    The component is packaged as an EAR file.
-  `ejb`;;
-    The component is an EJB packaged as a JAR file.
-  `osgi`;;
-    The component is packaged as an OSGi bundle.
-  `rar`;;
-    The component is packaged as a RAR file.
-  `war`;;
-    The component is packaged as a WAR file.
-`--properties` or `--property`::
-  Optional keyword-value pairs that specify additional properties for
-  the deployment. The available properties are determined by the
-  implementation of the component that is being deployed or redeployed.
-  The `--properties` option and the `--property` option are equivalent.
-  You can use either option regardless of the number of properties that
-  you specify. +
-  You can specify the following properties for a deployment: +
-  `jar-signing-alias`;;
-    Specifies the alias for the security certificate with which the
-    application client container JAR file is signed. Java Web Start will
-    not run code that requires elevated permissions unless it resides in
-    a JAR file signed with a certificate that the user's system trusts.
-    For your convenience, \{product---name} signs the JAR file
-    automatically using the certificate with this alias from the
-    domain's keystore. Java Web Start then asks the user whether to
-    trust the code and displays the \{product---name} certificate
-    information. To sign this JAR file with a different certificate, add
-    the certificate to the domain keystore, then use this property. For
-    example, you can use a certificate from a trusted authority, which
-    avoids the Java Web Start prompt, or from your own company, which
-    users know they can trust. Default is `s1as`, the alias for the
-    self-signed certificate created for every domain.
-  `java-web-start-enabled`;;
-    Specifies whether Java Web Start access is permitted for an
-    application client module. Default is true.
-  `compatibility`;;
-    Specifies the \{product---name} release with which to be backward
-    compatible in terms of JAR visibility requirements for applications.
-    The only allowed value is `v2`, which refers to Sun Java System
-    Application Server version 2 or Sun Java System Application Server
-    version 9.1 or 9.1.1. Beginning in Java EE 6, the Java EE platform
-    specification imposed stricter requirements than Java EE 5 did on
-    which JAR files can be visible to various modules within an EAR
-    file. In particular, application clients must not have access to EJB
-    JAR files or other JAR files in the EAR file unless references use
-    the standard Java SE mechanisms (extensions, for example) or the
-    Java EE library-directory mechanism. Setting this property to `v2`
-    removes these restrictions.
-  `keepSessions={false|true}`;;
-    Superseded by the `--keepstate` option. +
-    This property can by used to specify whether active sessions of the
-    application that is being redeployed are preserved and then restored
-    when the redeployment is complete. Applies to HTTP sessions in a web
-    container. Default is `false`.::
-    `false`::
-      Active sessions of the application are not preserved and restored
-      (default).
-    `true`::
-      Active sessions of the application are preserved and restored. +
-      If any active session of the application fails to be preserved or
-      restored, none of the sessions will be available when the
-      redeployment is complete. However, the redeployment continues and
-      a warning is logged. +
-      To preserve active sessions, \{product---name} serializes the
-      sessions and saves them in memory. To restore the sessions, the
-      class loader of the newly redeployed application deserializes any
-      sessions that were previously saved.
-  `preserveAppScopedResources`;;
-    If set to `true`, preserves any application-scoped resources and
-    restores them during redeployment. Default is `false`. +
-  Other available properties are determined by the implementation of the
-  component that is being redeployed. +
-  For components packaged as OSGi bundles (`--type=osgi`), the `deploy`
-  subcommand accepts properties arguments to wrap a WAR file as a WAB
-  (Web Application Bundle) at the time of deployment. The subcommand
-  looks for a key named `UriScheme` and, if present, uses the key as a
-  URL stream handler to decorate the input stream. Other properties are
-  used in the decoration process. For example, the \{product---name}
-  OSGi web container registers a URL stream handler named `webbundle`,
-  which is used to wrap a plain WAR file as a WAB. For more information
-  about usage, see the related example in the
-  link:deploy.html#deploy-1[`deploy`(1)] help page.
-
-[[sthref1964]]
-
-Operands
-
-file_archive|filepath::
-  The path to the archive that contains the application that is being
-  redeployed. This path can be a relative path or an absolute path. +
-  The archive can be in either of the following formats: +
-  * An archive file, for example, `/export/JEE_apps/hello.war`. +
-  If the `--upload` option is set to `true`, this is the path to the
-  deployable file on the local client machine. If the `--upload` option
-  is set to `false`, this is the absolute path to the file on the server
-  machine.
-  * A directory that contains the exploded format of the deployable
-  archive. This is the absolute path to the directory on the server
-  machine. +
-  If you specify a directory, the `--upload` option is ignored. +
-  Whether this operand is required depends on how the application was
-  originally deployed: +
-  * If the application was originally deployed from a file, the
-  archive-path operand is required. The operand must specify an archive
-  file.
-  * If the application was originally deployed from a directory, the
-  archive-path operand is optional. +
-  The operand can specify a directory or an archive file.
-
-[[sthref1965]]
-
-Examples
-
-[[GSRFM735]][[sthref1966]]
-
-Example 1   Redeploying a Web Application From a File
-
-This example redeploys the web application `hello` from the `hello.war`
-file in the current working directory. The application was originally
-deployed from a file. Active sessions of the application are to be
-preserved and then restored when the redeployment is complete.
-
-[source,oac_no_warn]
-----
-asadmin> redeploy --name hello --properties keepSessions=true hello.war
-Application deployed successfully with name hello.
-Command redeploy executed successfully
-----
-
-[[GSRFM736]][[sthref1967]]
-
-Example 2   Redeploying a Web Application From a Directory
-
-This example redeploys the web application `hellodir`. The application
-was originally deployed from a directory.
-
-[source,oac_no_warn]
-----
-asadmin> redeploy --name hellodir
-Application deployed successfully with name hellodir.
-Command redeploy executed successfully
-----
-
-[[sthref1968]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1969]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:deploy.html#deploy-1[`deploy`(1)], link:get.html#get-1[`get`(1)],
-link:list-components.html#list-components-1[`list-components`(1)],
-link:undeploy.html#undeploy-1[`undeploy`(1)]
-
-link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition Application Deployment
-Guide]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/remove-library.adoc b/docs/reference-manual/src/main/jbake/content/remove-library.adoc
deleted file mode 100644
index ffb6c37..0000000
--- a/docs/reference-manual/src/main/jbake/content/remove-library.adoc
+++ /dev/null
@@ -1,132 +0,0 @@
-type=page
-status=published
-title=remove-library
-next=restart-domain.html
-prev=redeploy.html
-~~~~~~
-remove-library
-==============
-
-[[remove-library-1]][[GSRFM00820]][[remove-library]]
-
-remove-library
---------------
-
-removes one or more library JAR files from \{product---name}
-
-[[sthref1970]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] remove-library [--help] 
-[--type={common|ext|app}]
-library-name [library-name ... ]
-----
-
-[[sthref1971]]
-
-Description
-
-The `remove-library` subcommand removes one or more library JAR files
-from \{product---name}.
-
-The `--type` option specifies the library type and the \{product---name}
-directory from which the library is removed.
-
-The library-name operand is the name of the JAR file that contains the
-library to be removed. To specify multiple libraries, specify multiple
-names separated by spaces.
-
-
-[NOTE]
-=======================================================================
-
-The library archive file is removed from the DAS. For common and
-extension libraries, you must restart the DAS so the library removals
-are picked up by the server runtime. To remove the libraries from other
-server instances, synchronize the instances with the DAS by restarting
-them.
-
-This command is not supported on the Windows operating system.
-
-=======================================================================
-
-
-This subcommand is supported in remote mode only.
-
-[[sthref1972]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--type`::
-  Specifies the library type and the \{product---name} directory from
-  which the library is removed. Valid values are as follows: +
-  `common`;;
-    Removes the library files from the Common class loader directory,
-    domain-dir`/lib`. This is the default.
-  `ext`;;
-    Removes the library files from the Java optional package directory,
-    domain-dir`/lib/ext`.
-  `app`;;
-    Removes the library files from the application-specific class loader
-    directory, domain-dir`/lib/applibs`. +
-  For more information about these directories, see
-  "link:../application-development-guide/class-loaders.html#GSDVG00003[Class Loaders]" in GlassFish Server Open Source
-  Edition Application Development Guide.
-
-[[sthref1973]]
-
-Operands
-
-library-name::
-  The names of the JAR files that contain the libraries that are to be
-  removed.
-
-[[sthref1974]]
-
-Examples
-
-[[GSRFM832]][[sthref1975]]
-
-Example 1   Removing Libraries
-
-This example removes the library in the archive file `mylib.jar` from
-the application-specific class loader directory on the default server
-instance.
-
-[source,oac_no_warn]
-----
-asadmin> remove-library --type app mylib.jar
-Command remove-library executed successfully.
-----
-
-[[sthref1976]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1977]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:add-library.html#add-library-1[`add-library`(1)],
-link:list-libraries.html#list-libraries-1[`list-libraries`(1)]
-
-"link:../application-development-guide/class-loaders.html#GSDVG00003[Class Loaders]" in GlassFish Server Open Source
-Edition Application Development Guide
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/resource.adoc b/docs/reference-manual/src/main/jbake/content/resource.adoc
deleted file mode 100644
index 62330a4..0000000
--- a/docs/reference-manual/src/main/jbake/content/resource.adoc
+++ /dev/null
@@ -1,29 +0,0 @@
-type=page
-status=published
-title=resource
-next=security.html
-prev=passwords.html
-~~~~~~
-resource
-========
-
-[[resource-5asc]][[GSRFM00273]][[resource]]
-
-resource
---------
-
-Provide connectivity to various types of EIS .
-
-[[sthref2410]]
-
-Description
-
-\{product---name} provides support for JDBC, JMS, and JNDI resources.
-
-[[sthref2411]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/restart-domain.adoc b/docs/reference-manual/src/main/jbake/content/restart-domain.adoc
deleted file mode 100644
index 8d691b4..0000000
--- a/docs/reference-manual/src/main/jbake/content/restart-domain.adoc
+++ /dev/null
@@ -1,147 +0,0 @@
-type=page
-status=published
-title=restart-domain
-next=restart-instance.html
-prev=remove-library.html
-~~~~~~
-restart-domain
-==============
-
-[[restart-domain-1]][[GSRFM00218]][[restart-domain]]
-
-restart-domain
---------------
-
-restarts the DAS of the specified domain
-
-[[sthref1978]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] restart-domain [--help] 
-[--debug ={true|false}] 
-[--domaindir domaindir] 
-[--force={true|false}] [--kill={false|true}] 
-[domain-name]
-----
-
-[[sthref1979]]
-
-Description
-
-The `restart-domain` subcommand stops and then restarts the domain
-administration server (DAS) of the specified domain. If a domain is not
-specified, the default domain is assumed. If the domains directory
-contains two or more domains, the domain-name operand must be specified.
-If the DAS is not already running, the subcommand attempts to start it.
-
-The `restart-domain` subcommand does not exit until the subcommand has
-verified that the domain has been stopped and restarted.
-
-This subcommand is supported in local or remote mode. If you specify a
-host name, the subcommand assumes you are operating in remote mode,
-which means you must correctly authenticate to the remote server. In
-local mode, you normally do not need to authenticate to the server as
-long as you are running the subcommand as the same user who started the
-server.
-
-[[sthref1980]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--debug`::
-  Specifies whether the domain is restarted with
-  http://java.sun.com/javase/technologies/core/toolsapis/jpda/[Java
-  Platform Debugger Architecture (JPDA)]
-  (http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html)
-  debugging enabled. +
-  Possible values are as follows: +
-  `true`;;
-    The domain is restarted with JPDA debugging enabled and the port
-    number for JPDA debugging is displayed.
-  `false`;;
-    The domain is restarted with JPDA debugging disabled (default). +
-  The default is the current setting of this option for the domain that
-  is being restarted.
-`--domaindir`::
-  The domain root directory, which contains the directory of the domain
-  that is to be restarted. If specified, the path must be accessible in
-  the file system. The default location of the domain root directory is
-  as-install`/domains`.
-`--force`::
-  Specifies whether the domain is forcibly stopped immediately before it
-  is restarted. +
-  Possible values are as follows: +
-  `true`;;
-    The domain is forcibly stopped immediately (default).
-  `false`;;
-    The subcommand waits until all threads that are associated with the
-    domain are exited before stopping the domain.
-`--kill`::
-  Specifies whether the domain is killed before it is restarted by using
-  functionality of the operating system to terminate the domain process. +
-  Possible values are as follows: +
-  `false`;;
-    The domain is not killed. The subcommand uses functionality of the
-    Java platform to terminate the domain process (default).
-  `true`;;
-    The domain is killed. The subcommand uses functionality of the
-    operating system to terminate the domain process.
-
-[[sthref1981]]
-
-Operands
-
-domain-name::
-  The name of the domain you want to restart. Default is the name
-  specified during installation, usually `domain1`.
-
-[[sthref1982]]
-
-Examples
-
-[[GSRFM738]][[sthref1983]]
-
-Example 1   Restarting a Domain
-
-This example restarts `mydomain4` in the default domains directory.
-
-[source,oac_no_warn]
-----
-asadmin> restart-domain mydomain4
-Successfully restarted the domain
-Command restart-domain executed successfully. 
-----
-
-[[sthref1984]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref1985]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-domain.html#delete-domain-1[`delete-domain`(1)],
-link:list-domains.html#list-domains-1[`list-domains`(1)],
-link:start-domain.html#start-domain-1[`start-domain`(1)],
-link:stop-domain.html#stop-domain-1[`stop-domain`(1)]
-
-Java Platform Debugger Architecture (JPDA)
-(`http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html`)
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/restart-instance.adoc b/docs/reference-manual/src/main/jbake/content/restart-instance.adoc
deleted file mode 100644
index 5740108..0000000
--- a/docs/reference-manual/src/main/jbake/content/restart-instance.adoc
+++ /dev/null
@@ -1,159 +0,0 @@
-type=page
-status=published
-title=restart-instance
-next=restart-local-instance.html
-prev=restart-domain.html
-~~~~~~
-restart-instance
-================
-
-[[restart-instance-1]][[GSRFM00219]][[restart-instance]]
-
-restart-instance
-----------------
-
-restarts a running \{product---name} instance
-
-[[sthref1986]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] restart-instance [--help] 
-[--debug={false|true}] instance-name
-----
-
-[[sthref1987]]
-
-Description
-
-The `restart-instance` subcommand restarts a running \{product---name}
-instance. This subcommand requires secure shell (SSH) to be configured
-on the machine where the domain administration server (DAS) is running
-and on the machine where the instance resides.
-
-
-[NOTE]
-=======================================================================
-
-SSH is not required if the instance resides on a node of type `CONFIG`
-that represents the local host. A node of type `CONFIG` is not enabled
-for communication over SSH.
-
-=======================================================================
-
-
-You may run this subcommand from any machine that can contact the DAS.
-
-The subcommand can restart any \{product---name} instance, regardless of
-how the instance was created. For example, this subcommand can restart
-an instance that was created by using the
-link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)]
-subcommand.
-
-When this subcommand restarts an instance, the DAS synchronizes the
-instance with changes since the last synchronization as follows:
-
-* For the `config` directory, the DAS synchronizes the instance with all
-changes.
-* For the `applications` directory and `docroot` directory, only a
-change to a top-level subdirectory causes the DAS to synchronize all
-files under that subdirectory. +
-If a file below a top level subdirectory is changed without a change to
-a file in the top level subdirectory, full synchronization is required.
-In normal operation, files below the top level subdirectories of these
-directories are not changed. If an application is deployed and
-undeployed, full synchronization is not necessary to update the instance
-with the change.
-
-If different synchronization behavior is required, the instance must be
-stopped and restarted by using following sequence of subcommands:
-
-1.  link:stop-instance.html#stop-instance-1[`stop-instance`(1)]
-2.  link:start-instance.html#start-instance-1[`start-instance`(1)]
-
-This subcommand is supported in remote mode only.
-
-[[sthref1988]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--debug`::
-  Specifies whether the instance is restarted with
-  http://java.sun.com/javase/technologies/core/toolsapis/jpda/[Java
-  Platform Debugger Architecture
-  (JPDA)](http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html)
-  debugging enabled. +
-  Possible values are as follows: +
-  `true`;;
-    The instance is restarted with JPDA debugging enabled and the port
-    number for JPDA debugging is displayed.
-  `false`;;
-    The instance is restarted with JPDA debugging disabled. +
-  The default is the current setting of this option for the instance
-  that is being restarted.
-
-[[sthref1989]]
-
-Operands
-
-instance-name::
-  The name of the \{product---name} instance to restart. If the instance
-  is not running, the subcommand displays a warning message and attempts
-  to start the instance.
-
-[[sthref1990]]
-
-Examples
-
-[[GSRFM739]][[sthref1991]]
-
-Example 1   Restarting a \{product---name} Instance
-
-This example restarts the \{product---name} instance `pmdsa1`.
-
-[source,oac_no_warn]
-----
-asadmin> restart-instance pmdsa1
-Instance pmdsa1 was restarted. 
-
-Command restart-instance executed successfully.
-----
-
-[[sthref1992]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref1993]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-instance.html#create-instance-1[`create-instance`(1)],
-link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)],
-link:delete-instance.html#delete-instance-1[`delete-instance`(1)],
-link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)],
-link:restart-local-instance.html#restart-local-instance-1[`restart-local-instance`(1)],
-link:setup-ssh.html#setup-ssh-1[`setup-ssh`(1)],
-link:start-instance.html#start-instance-1[`start-instance`(1)],
-link:start-local-instance.html#start-local-instance-1[`start-local-instance`(1)],
-link:stop-instance.html#stop-instance-1[`stop-instance`(1)],
-link:stop-local-instance.html#stop-local-instance-1[`stop-local-instance`(1)]
-
-Java Platform Debugger Architecture (JPDA)
-(http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html)
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/restart-local-instance.adoc b/docs/reference-manual/src/main/jbake/content/restart-local-instance.adoc
deleted file mode 100644
index 3e96688..0000000
--- a/docs/reference-manual/src/main/jbake/content/restart-local-instance.adoc
+++ /dev/null
@@ -1,184 +0,0 @@
-type=page
-status=published
-title=restart-local-instance
-next=restore-domain.html
-prev=restart-instance.html
-~~~~~~
-restart-local-instance
-======================
-
-[[restart-local-instance-1]][[GSRFM00220]][[restart-local-instance]]
-
-restart-local-instance
-----------------------
-
-restarts a running \{product---name} instance on the host where the
-subcommand is run
-
-[[sthref1994]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] restart-local-instance [--help]
-[--nodedir nodedir] [--node node]
-[--debug={false|true}]
-[--force={true|false}] [--kill={false|true}] 
-[instance-name]
-----
-
-[[sthref1995]]
-
-Description
-
-The `restart-local-instance` subcommand restarts a \{product---name}
-instance on the host where the subcommand is run. This subcommand does
-not require secure shell (SSH) to be configured. You must run this
-command from the host where the instance resides.
-
-The subcommand can restart any \{product---name} instance, regardless of
-how the instance was created. For example, this subcommand can restart
-an instance that was created by using the
-link:create-instance.html#create-instance-1[`create-instance`(1)]
-subcommand.
-
-The `restart-local-instance` subcommand does not contact the domain
-administration server (DAS) to determine the node on which the instance
-resides. To determine the node on which the instance resides, the
-subcommand searches the directory that contains the node directories. If
-multiple node directories exist, the node must be specified as an option
-of the subcommand.
-
-When this subcommand restarts an instance, the DAS synchronizes the
-instance with changes since the last synchronization as follows:
-
-* For the `config` directory, the DAS synchronizes the instance with all
-changes.
-* For the `applications` directory and `docroot` directory, only a
-change to a top-level subdirectory causes the DAS to synchronize all
-files under that subdirectory. +
-If a file below a top level subdirectory is changed without a change to
-a file in the top level subdirectory, full synchronization is required.
-In normal operation, files below the top level subdirectories of these
-directories are not changed. If an application is deployed and
-undeployed, full synchronization is not necessary to update the instance
-with the change.
-
-If different synchronization behavior is required, the instance must be
-stopped and restarted by using following sequence of subcommands:
-
-1.  link:stop-local-instance.html#stop-local-instance-1[`stop-local-instance`(1)]
-2.  link:start-local-instance.html#start-local-instance-1[`start-local-instance`(1)]
-
-This subcommand is supported in local mode. However, to synchronize the
-instance with the DAS, this subcommand must be run in remote mode.
-
-[[sthref1996]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--nodedir`::
-  Specifies the directory that contains the instance's node directory.
-  The instance's files are stored in the instance's node directory. The
-  default is as-install`/nodes`.
-`--node`::
-  Specifies the node on which the instance resides. This option may be
-  omitted only if the directory that the `--nodedir` option specifies
-  contains only one node directory. Otherwise, this option is required.
-`--debug`::
-  Specifies whether the instance is restarted with
-  http://java.sun.com/javase/technologies/core/toolsapis/jpda/[Java
-  Platform Debugger Architecture (JPDA)]
-  (http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html)
-  debugging enabled. +
-  Possible values are as follows: +
-  `true`;;
-    The instance is restarted with JPDA debugging enabled and the port
-    number for JPDA debugging is displayed.
-  `false`;;
-    The instance is restarted with JPDA debugging disabled (default). +
-  The default is the current setting of this option for the instance
-  that is being restarted.
-`--force`::
-  Specifies whether the instance is forcibly stopped immediately before
-  it is restarted. +
-  Possible values are as follows: +
-  `true`;;
-    The instance is forcibly stopped immediately (default).
-  `false`;;
-    The subcommand waits until all threads that are associated with the
-    instance are exited before stopping the instance.
-`--kill`::
-  Specifies whether the instance is killed before it is restarted by
-  using functionality of the operating system to terminate the instance
-  process. +
-  Possible values are as follows: +
-  `false`;;
-    The instance is not killed. The subcommand uses functionality of the
-    Java platform to terminate the instance process (default).
-  `true`;;
-    The instance is killed. The subcommand uses functionality of the
-    operating system to terminate the instance process.
-
-[[sthref1997]]
-
-Operands
-
-instance-name::
-  The name of the \{product---name} instance to restart. If the instance
-  is not running, the subcommand displays a warning message and attempts
-  to start the instance.
-
-[[sthref1998]]
-
-Examples
-
-[[GSRFM740]][[sthref1999]]
-
-Example 1   Restarting an Instance Locally
-
-This example restarts the instance `ymlsa1` in the domain `domain1` on
-the host where the subcommand is run.
-
-[source,oac_no_warn]
-----
-asadmin> restart-local-instance --node localhost-domain1 ymlsa1
-Command restart-local-instance executed successfully.
-----
-
-[[sthref2000]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref2001]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-instance.html#create-instance-1[`create-instance`(1)],
-link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)],
-link:delete-instance.html#delete-instance-1[`delete-instance`(1)],
-link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)],
-link:restart-instance.html#restart-instance-1[`restart-instance`(1)],
-link:start-instance.html#start-instance-1[`start-instance`(1)],
-link:start-local-instance.html#start-local-instance-1[`start-local-instance`(1)],
-link:stop-instance.html#stop-instance-1[`stop-instance`(1)],
-link:stop-local-instance.html#stop-local-instance-1[`stop-local-instance`(1)]
-
-Java Platform Debugger Architecture (JPDA)
-(http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html)
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/restore-domain.adoc b/docs/reference-manual/src/main/jbake/content/restore-domain.adoc
deleted file mode 100644
index c85c498..0000000
--- a/docs/reference-manual/src/main/jbake/content/restore-domain.adoc
+++ /dev/null
@@ -1,106 +0,0 @@
-type=page
-status=published
-title=restore-domain
-next=rollback-transaction.html
-prev=restart-local-instance.html
-~~~~~~
-restore-domain
-==============
-
-[[restore-domain-1]][[GSRFM00221]][[restore-domain]]
-
-restore-domain
---------------
-
-restores files from backup
-
-[[sthref2002]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] restore-domain [--help]
-[--long[={false|true}]]
-[--filename backup-filename]
-[--domaindir domain-root-dir]
-[--backupdirbackup-directory]
-[--backupconfigbackup-config-name]
-[--force[={false|true}]]
-[domain-name]
-----
-
-[[sthref2003]]
-
-Description
-
-This command restores files under the domain from a backup directory.
-
-The `restore-domain` command is supported in local mode only.
-
-[[sthref2004]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--long`::
-`-l`::
-  Displays detailed information about the restore operation. +
-  The default value is `false`.
-`--filename`::
-  Specifies the name of the backup file to use as the source.
-`--domaindir`::
-  Specifies the domain root directory, the parent directory of the
-  domain to restore. +
-  The default value is as-install`/domains`.
-`--backupdir`::
-  Specifies the directory under which the backup file is stored. +
-  The default value is as-install`/domains/`domain-dir`/backups`. If the
-  domain is not in the default location, the location is
-  domain-dir`/backups`.
-`--backupconfig`::
-  (Supported only in Oracle GlassFish Server.) The name of the domain
-  backup configuration in the backup directory under which the backup
-  file is stored.
-`--force`::
-  Causes the restore operation to continue even when the name of the
-  domain to restore does not match the name of the domain stored in the
-  backup file. +
-  The default value is `false`.
-
-[[sthref2005]]
-
-Operands
-
-domain-name::
-  Specifies the name of the domain to restore. +
-  This operand is optional if only one domain exists in the
-  \{product---name} installation. +
-  If the specified domain name does not match the domain name stored in
-  the backup file, an error occurs unless the `--force` option is
-  specified.
-
-[[sthref2006]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref2007]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:backup-domain.html#backup-domain-1[`backup-domain`(1)],
-link:list-backups.html#list-backups-1[`list-backups`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/rollback-transaction.adoc b/docs/reference-manual/src/main/jbake/content/rollback-transaction.adoc
deleted file mode 100644
index b38a88f..0000000
--- a/docs/reference-manual/src/main/jbake/content/rollback-transaction.adoc
+++ /dev/null
@@ -1,113 +0,0 @@
-type=page
-status=published
-title=rollback-transaction
-next=rotate-log.html
-prev=restore-domain.html
-~~~~~~
-rollback-transaction
-====================
-
-[[rollback-transaction-1]][[GSRFM00223]][[rollback-transaction]]
-
-rollback-transaction
---------------------
-
-rolls back the named transaction
-
-[[sthref2008]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] rollback-transaction [--help] 
-[--target target]
-transaction_id
-----
-
-[[sthref2009]]
-
-Description
-
-The `rollback-transaction` subcommand rolls back the named transaction.
-
-Before you can roll back a transaction, you must do the following:
-
-1.  Enable monitoring using the `set` subcommand. For example: +
-[source,oac_no_warn]
-----
-asadmin> set clstr1-config.monitoring-service.module-monitoring-levels.transaction-service=HIGH
-----
-2.  Use the `freeze-transaction-service` subcommand to halt in-process
-transactions.
-3.  Look up the active transactions using the `get` subcommand with the
-`--monitor` option. For example: +
-[source,oac_no_warn]
-----
-asadmin> get --monitor inst1.server.transaction-service.activeids-current
-----
-
-This subcommand is supported in remote mode only.
-
-[[sthref2010]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  This option specifies the target on which you are rolling back the
-  transactions. Valid values are `server` or any other clustered or
-  stand-alone instance.
-
-[[sthref2011]]
-
-Operands
-
-transaction_id::
-  Identifier for the transaction to be rolled back.
-
-[[sthref2012]]
-
-Examples
-
-[[GSRFM741]][[sthref2013]]
-
-Example 1   Using rollback-transaction command
-
-[source,oac_no_warn]
-----
-% asadmin rollback-transaction 0000000000000001_00
-Command rollback-transaction executed succeessfully
-----
-
-[[sthref2014]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref2015]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:freeze-transaction-service.html#freeze-transaction-service-1[`freeze-transaction-service`(1)],
-link:recover-transactions.html#recover-transactions-1[`recover-transactions`(1)],
-link:unfreeze-transaction-service.html#unfreeze-transaction-service-1[`unfreeze-transaction-service`(1)],
-
-"link:../administration-guide/transactions.html#GSADG00022[Administering Transactions]" in GlassFish Server Open
-Source Edition Administration Guide
-
-"http://docs.oracle.com/javaee/7/tutorial/doc/transactions.html[Transactions]"
-in The Java EE 8 Tutorial
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/rotate-log.adoc b/docs/reference-manual/src/main/jbake/content/rotate-log.adoc
deleted file mode 100644
index 239a039..0000000
--- a/docs/reference-manual/src/main/jbake/content/rotate-log.adoc
+++ /dev/null
@@ -1,112 +0,0 @@
-type=page
-status=published
-title=rotate-log
-next=set.html
-prev=rollback-transaction.html
-~~~~~~
-rotate-log
-==========
-
-[[rotate-log-1]][[GSRFM00224]][[rotate-log]]
-
-rotate-log
-----------
-
-rotates the log file
-
-[[sthref2016]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] rotate-log [--help]
-----
-
-[[sthref2017]]
-
-Description
-
-The `rotate-log` subcommand rotates the server log by renaming the file
-with a timestamp name in the format `server.log_`date-and-time, and
-creating a new log file. Changes take effect dynamically, that is,
-server restart is not required.
-
-The size of the log queue is configurable through the
-`logging.properties` file. Log rotation is based on file size or elapsed
-time since the last log rotation. In some circumstances, the queue might
-fill up, especially if the log level is set to `FINEST` and there is
-heavy activity on the server. In this case, the `rotate-log` subcommand
-can be used to rotate the server log immediately. This subcommand is
-also useful in creating scripts for rotating the log at convenient
-times.
-
-This subcommand is supported in remote mode only.
-
-[[sthref2018]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  The server, cluster, or server instance for which logs will be
-  rotated. If this option is omitted, logs are rotated for the default
-  server.
-
-[[sthref2019]]
-
-Operands
-
-target::
-  Valid values are: +
-  * server_name - Default target is `server`. If no target is specified
-  then logs are rotated for the server.
-  * cluster_name - The name of a target cluster.
-  * instance_name - The name of a target server instance.
-
-[[sthref2020]]
-
-Examples
-
-[[GSRFM742]][[sthref2021]]
-
-Example 1   Rotating the Server Log
-
-This example rotates the server log.
-
-[source,oac_no_warn]
-----
-asadmin> rotate-log
-Command rotate-log executed successfully.
-----
-
-[[sthref2022]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref2023]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:collect-log-files.html#collect-log-files-1[`collect-log-files`(1)],
-link:list-log-attributes.html#list-log-attributes-1[`list-log-attributes`(1)],
-link:list-log-levels.html#list-log-levels-1[`list-log-levels`(1)],
-link:set-log-attributes.html#set-log-attributes-1[`set-log-attributes`(1)],
-link:set-log-levels.html#set-log-levels-1[`set-log-levels`(1)]
-
-"link:../administration-guide/logging.html#GSADG00010[Administering the Logging Service]" in GlassFish
-Server Open Source Edition Administration Guide
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/security.adoc b/docs/reference-manual/src/main/jbake/content/security.adoc
deleted file mode 100644
index dc48653..0000000
--- a/docs/reference-manual/src/main/jbake/content/security.adoc
+++ /dev/null
@@ -1,51 +0,0 @@
-type=page
-status=published
-title=security
-prev=resource.html
-~~~~~~
-security
-========
-
-[[security-5asc]][[GSRFM00274]][[security]]
-
-security
---------
-
-secure and administer \{product---name} applications
-
-[[sthref2412]]
-
-Description
-
-Security is about protecting data: how to prevent unauthorized access or
-damage to it in storage or transit. \{product---name} has a dynamic,
-extensible security architecture based on the Java EE standard. Built in
-security features include cryptography, authentication and
-authorization, and public key infrastructure. \{product---name} is built
-on the Java security model, which uses a sandbox where applications can
-run safely, without potential risk to systems or users.
-
-[[sthref2413]]
-
-See Also
-
-link:change-admin-password.html#change-admin-password-1[`change-admin-password`(1)],
-link:change-master-password.html#change-master-password-1[`change-master-password`(1)],
-link:create-auth-realm.html#create-auth-realm-1[`create-auth-realm`(1)],
-link:create-file-user.html#create-file-user-1[`create-file-user`(1)],
-link:create-message-security-provider.html#create-message-security-provider-1[`create-message-security-provider`(1)],
-link:create-password-alias.html#create-password-alias-1[`create-password-alias`(1)],
-link:create-ssl.html#create-ssl-1[`create-ssl`(1)],
-link:delete-auth-realm.html#delete-auth-realm-1[`delete-auth-realm`(1)],
-link:delete-file-user.html#delete-file-user-1[`delete-file-user`(1)],
-link:delete-message-security-provider.html#delete-message-security-provider-1[`delete-message-security-provider`(1)],
-link:delete-password-alias.html#delete-password-alias-1[`delete-password-alias`(1)],
-link:delete-ssl.html#delete-ssl-1[`delete-ssl`(1)],
-link:list-auth-realms.html#list-auth-realms-1[`list-auth-realms`(1)],
-link:list-connector-security-maps.html#list-connector-security-maps-1[`list-connector-security-maps`(1)],
-link:list-file-groups.html#list-file-groups-1[`list-file-groups`(1)],
-link:list-file-users.html#list-file-users-1[`list-file-users`(1)].
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/set-batch-runtime-configuration.adoc b/docs/reference-manual/src/main/jbake/content/set-batch-runtime-configuration.adoc
deleted file mode 100644
index 9c7b538..0000000
--- a/docs/reference-manual/src/main/jbake/content/set-batch-runtime-configuration.adoc
+++ /dev/null
@@ -1,115 +0,0 @@
-type=page
-status=published
-title=set-batch-runtime-configuration
-next=set-log-attributes.html
-prev=set.html
-~~~~~~
-set-batch-runtime-configuration
-===============================
-
-[[set-batch-runtime-configuration-1]][[GSRFM897]][[set-batch-runtime-configuration]]
-
-set-batch-runtime-configuration
--------------------------------
-
-configures the batch runtime
-
-[[sthref2034]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] set-batch-runtime-configuration [--help]
-[--target target]
-[--datasourcelookupname datasource-lookup-name]
-[--executorservicelookupname executor-service-lookup-name]
-----
-
-[[sthref2035]]
-
-Description
-
-The `set-batch-runtime-configuration` subcommand configures the batch
-runtime. The runtime uses a data source and a managed executor service
-to execute batch jobs. Batch runtime configuration data is stored in the
-`config` element in `domain.xml`.
-
-[[sthref2036]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Specifies the target for which to configure the batch runtime. Valid
-  values are as follows: +
-  `server`;;
-    Configures the batch runtime for the default server instance
-    `server` and is the default value.
-  cluster-name;;
-    Configures the batch runtime for every server instance in the
-    cluster.
-  instance-name;;
-    Configures the batch runtime for a particular server instance.
-`--datasourcelookupname`::
-`-d`::
-  The JNDI lookup name of the data source to be used to store job
-  information. The default data source is `jdbc/__TimerPool`. +
-  Do not change the data source after the first batch job has been
-  submitted to the batch runtime for execution. If the data source must
-  be changed, stop and restart the domain and then make the change
-  before any jobs are started or restarted. However, once the data
-  source has been changed, information stored in the previous data
-  source becomes inaccessible.
-`--executorservicelookupname`::
-`-x`::
-  The JNDI lookup name of the managed executor service to be used to
-  provide threads to jobs. The default managed executor service is
-  `concurrent/__defaultManagedExecutorService`. +
-  The managed executor service can be changed after a batch job has been
-  submitted to the batch runtime without impacting execution of the job.
-
-[[sthref2037]]
-
-Examples
-
-[[GSRFM898]][[sthref2038]]
-
-Example 1   Configuring the Batch Runtime
-
-The following example configures the batch runtime for the default
-server instance to use an existing managed executor service named
-`concurrent/myExecutor`.
-
-[source,oac_no_warn]
-----
-asadmin> set-batch-runtime-configuration --executorservicelookupname concurrent/myExecutor
-Command set-batch-runtime-configuration executed successfully.
-----
-
-[[sthref2039]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref2040]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:list-batch-jobs.html#list-batch-jobs-1[`list-batch-jobs`(1)],
-link:list-batch-job-executions.html#list-batch-job-executions-1[`list-batch-job-executions`(1)],
-link:list-batch-job-steps.html#list-batch-job-steps-1[`list-batch-job-steps`(1)],
-link:list-batch-runtime-configuration.html#list-batch-runtime-configuration-1[`list-batch-runtime-configuration`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/set-log-attributes.adoc b/docs/reference-manual/src/main/jbake/content/set-log-attributes.adoc
deleted file mode 100644
index 8c92a11..0000000
--- a/docs/reference-manual/src/main/jbake/content/set-log-attributes.adoc
+++ /dev/null
@@ -1,158 +0,0 @@
-type=page
-status=published
-title=set-log-attributes
-next=set-log-file-format.html
-prev=set-batch-runtime-configuration.html
-~~~~~~
-set-log-attributes
-==================
-
-[[set-log-attributes-1]][[GSRFM00227]][[set-log-attributes]]
-
-set-log-attributes
-------------------
-
-sets the logging attributes for one or more loggers
-
-[[sthref2041]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] set-log-attributes [--help] 
-[--target=target] 
-attribute-name=attribute-value[:attribute-name=attribute-value]*
-----
-
-[[sthref2042]]
-
-Description
-
-The `set-log-attributes` subcommand sets logging attributes for one or
-more loggers. The attributes you can set correspond to the attributes
-that are available in the `logging.properties` file for the domain.
-Depending on the attributes you set, a server restart may be necessary.
-
-This subcommand is supported in remote mode only.
-
-[[sthref2043]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  The server domain, instance, or cluster for which logger attributes
-  will be set. If this option is omitted, attributes are set for the
-  default server.
-
-[[sthref2044]]
-
-Operands
-
-target::
-  Valid values are: +
-  * server_name - Default target is `server`. If no target is specified
-  then log attributes are set for the server.
-  * cluster_name - The name of a target cluster.
-  * instance_name - The name of a target server instance.
-attribute-name::
-  The fully scoped name of the logging attribute. The
-  `list-log-attributes` subcommand can be used to list the names of all
-  currently defined attributes.
-attribute-value::
-  The value to apply to the specified attribute. +
-  The attribute values that can be specified include the following.
-  Refer to "link:../administration-guide/logging.html#GSADG00010[Administering the Logging Service]" in
-  GlassFish Server Open Source Edition Administration Guide for complete
-  explanations of each of these values. +
-  `com.sun.enterprise.server.logging.GFFileHandler.alarms`;;
-    Default is `false`.
-  `com.sun.enterprise.server.logging.GFFileHandler.excludeFields`;;
-    Default is an empty string.
-  `com.sun.enterprise.server.logging.GFFileHandler.file`;;
-    Default is `${com.sun.aas.instanceRoot}/logs/server.log`.
-  `com.sun.enterprise.server.logging.GFFileHandler.flushFrequency`;;
-    Default is `1`.
-  `com.sun.enterprise.server.logging.GFFileHandler.formatter`;;
-    Default is `com.sun.enterprise.server.logging.UniformLogFormatter`.
-  `com.sun.enterprise.server.logging.GFFileHandler.logtoConsole`;;
-    Default is `false`.
-  `com.sun.enterprise.server.logging.GFFileHandler.maxHistoryFiles`;;
-    Default is `0`.
-  `com.sun.enterprise.server.logging.GFFileHandler.multiLineMode`;;
-    Default is `true`.
-  `com.sun.enterprise.server.logging.GFFileHandler.retainErrorsStasticsForHours`;;
-    Default is `0`.
-  `com.sun.enterprise.server.logging.GFFileHandler.rotationLimitInBytes`;;
-    Default is `2000000`.
-  `com.sun.enterprise.server.logging.GFFileHandler.rotationTimelimitInMinutes`;;
-    Default is `0`.
-  `com.sun.enterprise.server.logging.SyslogHandler.useSystemLogging`;;
-    Default is `false`.
-  `handlers`;;
-    Default is `java.util.logging.ConsoleHandler`.
-  `java.util.logging.ConsoleHandler.formatter`;;
-    Default is `com.sun.enterprise.server.logging.UniformLogFormatter`.
-  `java.util.logging.FileHandler.count`;;
-    Default is `1`.
-  `java.util.logging.FileHandler.formatter`;;
-    Default is `java.util.logging.XMLFormatter`.
-  `java.util.logging.FileHandler.limit`;;
-    Default is `50000`.
-  `java.util.logging.FileHandler.pattern`;;
-    Default is `%h/java%u.log`.
-  `log4j.logger.org.hibernate.validator.util.Version`;;
-    Default is `warn`.
-
-[[sthref2045]]
-
-Examples
-
-[[GSRFM748]][[sthref2046]]
-
-Example 1   Setting the Maximum Number of Log History Files to Maintain
-
-This example sets to 8 the maximum number of log history files for the
-server as a whole.
-
-[source,oac_no_warn]
-----
-asadmin> set-log-attributes --target=server \
-com.sun.enterprise.server.logging.GFFileHandler.maxHistoryFiles=8
-com.sun.enterprise.server.logging.GFFileHandler.maxHistoryFiles logging 
-attribute set with value 8.
-These logging attributes are set for server.
-Command set-log-attributes executed successfully.
-----
-
-[[sthref2047]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref2048]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:collect-log-files.html#collect-log-files-1[`collect-log-files`(1)],
-link:list-log-attributes.html#list-log-attributes-1[`list-log-attributes`(1)],
-link:list-log-levels.html#list-log-levels-1[`list-log-levels`(1)],
-link:rotate-log.html#rotate-log-1[`rotate-log`(1)],
-link:set-log-levels.html#set-log-levels-1[`set-log-levels`(1)]
-
-"link:../administration-guide/logging.html#GSADG00010[Administering the Logging Service]" in GlassFish
-Server Open Source Edition Administration Guide
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/set-log-file-format.adoc b/docs/reference-manual/src/main/jbake/content/set-log-file-format.adoc
deleted file mode 100644
index 57bd1ee..0000000
--- a/docs/reference-manual/src/main/jbake/content/set-log-file-format.adoc
+++ /dev/null
@@ -1,108 +0,0 @@
-type=page
-status=published
-title=set-log-file-format
-next=set-log-levels.html
-prev=set-log-attributes.html
-~~~~~~
-set-log-file-format
-===================
-
-[[set-log-file-format-1]][[GSRFM879]][[set-log-file-format]]
-
-set-log-file-format
--------------------
-
-sets the formatter to be used for the server log file
-
-[[sthref2049]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] set-log-file-format [--help]
-[--target target]
-[formatter]
-----
-
-[[sthref2050]]
-
-Description
-
-The `set-log-file-format` subcommand sets the formatter to be used for
-the server log file for the specified target.
-
-\{product---name} provides the ULF (UniformLogFormatter) and ODL (Oracle
-Diagnostics Logging) formatters. A custom formatter can also be used by
-specifying the fully qualified name of a class that extends the
-`java.util.logging.Formatter` class.
-
-The custom formatter class can be packaged in a JAR file and placed in
-domain`/lib/ext`, or implemented as an HK2 service and the JAR
-containing the formatter implementation installed in
-`glassfish/modules`.
-
-This subcommand is supported in remote mode only.
-
-[[sthref2051]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  Specifies the target for which the formatter is being set. Specify the
-  name of the server domain, instance, or cluster. If this option is
-  omitted, logger attributes are set for the default server.
-
-[[sthref2052]]
-
-Operands
-
-formatter::
-  Specifies the fomatter to be used for the server log file. Valid
-  values are ULF, ODL, or the fully qualified name of the custom
-  formatter class to be used to render the log files. The default value
-  is ODL.
-
-[[sthref2053]]
-
-Examples
-
-[[GSRFM880]][[sthref2054]]
-
-Example 1   Setting the Log File Format
-
-This example sets the server log file format to `ULF` for `server1`.
-
-[source,oac_no_warn]
-----
-asadmin> set-log-file-format --target server1 ULF
-Command set-log-file-format executed successfully.
-----
-
-[[sthref2055]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref2056]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:list-loggers.html#list-loggers-1[`list-loggers`(1)]
-
-"link:../administration-guide/logging.html#GSADG00010[Administering the Logging Service]" in GlassFish
-Server Open Source Edition Administration Guide
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/set-log-levels.adoc b/docs/reference-manual/src/main/jbake/content/set-log-levels.adoc
deleted file mode 100644
index 8c1778f..0000000
--- a/docs/reference-manual/src/main/jbake/content/set-log-levels.adoc
+++ /dev/null
@@ -1,123 +0,0 @@
-type=page
-status=published
-title=set-log-levels
-next=setup-local-dcom.html
-prev=set-log-file-format.html
-~~~~~~
-set-log-levels
-==============
-
-[[set-log-levels-1]][[GSRFM00228]][[set-log-levels]]
-
-set-log-levels
---------------
-
-sets the log level for one or more loggers
-
-[[sthref2057]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] set-log-levels [--help]
-[--target=target]
-logger-name=logger-level[:logger-name=logger-level]*
-----
-
-[[sthref2058]]
-
-Description
-
-The `set-log-levels` subcommand sets the log level for one or more
-loggers. Changes take effect dynamically. Depending on the log levels
-you set, a server restart may be necessary.
-
-This subcommand is supported in remote mode only.
-
-[[sthref2059]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  The server instance or cluster for which log levels will be set. Valid
-  values are: +
-  * `server` - The default server instance. If no target is specified
-  then log levels are set for the default server instance.
-  * cluster-name - The name of a cluster.
-  * instance-name - The name of a standalone server instance.
-
-[[sthref2060]]
-
-Operands
-
-logger-name::
-  The name of the logger. The `list-log-levels` subcommand can be used
-  to list the names of the current loggers.
-logger-level::
-  The level to set for the logger. Log level values are `SEVERE`,
-  `WARNING`, `INFO`, `CONFIG`, `FINE`, `FINER`, and `FINEST`. The
-  default setting is `INFO`.
-
-[[sthref2061]]
-
-Examples
-
-[[GSRFM749]][[sthref2062]]
-
-Example 1   Setting a Log Level for a Logger
-
-This example sets the log level of the web container logger to
-`WARNING`.
-
-[source,oac_no_warn]
-----
-asadmin> set-log-levels jakarta.enterprise.system.container.web=WARNING
-Command set-log-level executed successfully.
-----
-
-[[GSRFM750]][[sthref2063]]
-
-Example 2   Setting the Log Level for Multiple Loggers
-
-This example sets the log level of the web container logger to `FINE`
-and the log level of the EJB container logger to `SEVERE`:
-
-[source,oac_no_warn]
-----
-asadmin set-log-levels jakarta.enterprise.system.container.web=FINE:
-jakarta.enterprise.system.container.ejb=SEVERE
-Command set-log-level executed successfully.
-----
-
-[[sthref2064]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref2065]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:collect-log-files.html#collect-log-files-1[`collect-log-files`(1)],
-link:list-log-attributes.html#list-log-attributes-1[`list-log-attributes`(1)],
-link:list-log-levels.html#list-log-levels-1[`list-log-levels`(1)],
-link:rotate-log.html#rotate-log-1[`rotate-log`(1)],
-link:set-log-attributes.html#set-log-attributes-1[`set-log-attributes`(1)]
-
-"link:../administration-guide/logging.html#GSADG00010[Administering the Logging Service]" in GlassFish
-Server Open Source Edition Administration Guide
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/set-web-context-param.adoc b/docs/reference-manual/src/main/jbake/content/set-web-context-param.adoc
deleted file mode 100644
index d0569e1..0000000
--- a/docs/reference-manual/src/main/jbake/content/set-web-context-param.adoc
+++ /dev/null
@@ -1,190 +0,0 @@
-type=page
-status=published
-title=set-web-context-param
-next=set-web-env-entry.html
-prev=setup-ssh.html
-~~~~~~
-set-web-context-param
-=====================
-
-[[set-web-context-param-1]][[GSRFM00230]][[set-web-context-param]]
-
-set-web-context-param
----------------------
-
-sets a servlet context-initialization parameter of a deployed web
-application or module
-
-[[sthref2083]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] set-web-context-param [--help] 
---name=context-param-name 
-{--value=value|--ignoredescriptoritem={false|true}} 
-[--description=description] application-name[/module]
-----
-
-[[sthref2084]]
-
-Description
-
-The `set-web-context-param` subcommand sets a servlet
-context-initialization parameter of one of the following items:
-
-* A deployed web application
-* A web module in a deployed Java Platform, Enterprise Edition (Java EE)
-application
-
-The application must already be deployed. Otherwise, an error occurs.
-
-This subcommand enables you to change the configuration of a deployed
-application without the need to modify the application's deployment
-descriptors and repackage and redeploy the application.
-
-This subcommand is supported in remote mode only.
-
-[[sthref2085]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--name`::
-  The name of the servlet context-initialization parameter that is to be
-  set.
-`--value`::
-  The value to which the servlet context-initialization parameter is to
-  be set. +
-  Either the `--value` option or the `--ignoredescriptoritem` option
-  must be set.
-`--ignoredescriptoritem`::
-  Specifies whether the servlet context-initialization parameter is
-  ignored if it is set in the application's deployment descriptor. When
-  a parameter is ignored, the application behaves as if the parameter
-  had never been set in the application's deployment descriptor. The
-  behavior of an application in this situation depends on the
-  application. +
-  The possible values are as follows: +
-  `false`;;
-    The value is not ignored (default).
-  `true`;;
-    The value is ignored. +
-  Either the `--value` option or the `--ignoredescriptoritem` option
-  must be set. +
-
-[width="100%",cols="100%",]
-|=======================================================================
-a|
-Note:
-
-Do not use the `--ignoredescriptoritem` option to unset a servlet
-context-initialization parameter that has previously been set by using
-the `set-web-context-param` subcommand. Instead, use the
-link:unset-web-context-param.html#unset-web-context-param-1[`unset-web-context-param`(1)]
-subcommand for this purpose.
-
-|=======================================================================
-
-`--description`::
-  An optional textual description of the context parameter that is being
-  set.
-
-[[sthref2086]]
-
-Operands
-
-application-name::
-  The name of the application. This name can be obtained from the
-  Administration Console or by using the
-  link:list-applications.html#list-applications-1[`list-applications`(1)]
-  subcommand. +
-  The application must already be deployed. Otherwise, an error occurs.
-module::
-  The relative path to the module within the application's enterprise
-  archive (EAR) file. The path to the module is specified in the
-  `module` element of the application's `application.xml` file. +
-  module is required only if the servlet context-initialization
-  parameter applies to a web module of a Java EE application. If
-  specified, module must follow application-name, separated by a slash
-  (/). +
-  For example, the `application.xml` file for the `myApp` application
-  might specify the following web module: +
-[source,oac_no_warn]
-----
-<module>
-    <web>
-        <web-uri>myWebModule.war</web-uri>
-    </web>
-</module> 
-----
-::
-  The module would be specified as the operand of this command as
-  `myApp/myWebModule.war`.
-
-[[sthref2087]]
-
-Examples
-
-[[GSRFM753]][[sthref2088]]
-
-Example 1   Setting a Servlet Context-Initialization Parameter for a Web
-Application
-
-This example sets the servlet context-initialization parameter
-`javax.faces.STATE_SAVING_METHOD` of the web application `basic-ezcomp`
-to `client`. The description
-`The location where the application's state is preserved` is provided
-for this parameter.
-
-[source,oac_no_warn]
-----
-asadmin> set-web-context-param --name=javax.faces.STATE_SAVING_METHOD 
---description="The location where the application's state is preserved" 
---value=client basic-ezcomp
-
-Command set-web-context-param executed successfully.
-----
-
-[[GSRFM754]][[sthref2089]]
-
-Example 2   Ignoring a Servlet Context-Initialization Parameter That Is
-Defined in a Deployment Descriptor
-
-This example ignores the servlet context-initialization parameter
-`javax.faces.PROJECT_STAGE` of the web application `basic-ezcomp`.
-
-[source,oac_no_warn]
-----
-asadmin> set-web-context-param --name=javax.faces.PROJECT_STAGE
---ignoredescriptoritem=true 
-basic-ezcomp
-
-Command set-web-context-param executed successfully.
-----
-
-[[sthref2090]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref2091]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:list-web-context-param.html#list-web-context-param-1[`list-web-context-param`(1)],
-link:unset-web-context-param.html#unset-web-context-param-1[`unset-web-context-param`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/set-web-env-entry.adoc b/docs/reference-manual/src/main/jbake/content/set-web-env-entry.adoc
deleted file mode 100644
index 460e64c..0000000
--- a/docs/reference-manual/src/main/jbake/content/set-web-env-entry.adoc
+++ /dev/null
@@ -1,203 +0,0 @@
-type=page
-status=published
-title=set-web-env-entry
-next=show-component-status.html
-prev=set-web-context-param.html
-~~~~~~
-set-web-env-entry
-=================
-
-[[set-web-env-entry-1]][[GSRFM00231]][[set-web-env-entry]]
-
-set-web-env-entry
------------------
-
-sets an environment entry for a deployed web application or module
-
-[[sthref2092]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] set-web-env-entry [--help] 
---name=env-entry-name --type=env-entry-type 
-{--value=value|--ignoredescriptoritem={true|false}} 
-[--description=description] application-name[/module]
-----
-
-[[sthref2093]]
-
-Description
-
-The `set-web-env-entry` subcommand sets an environment entry for one of
-the following items:
-
-* A deployed web application
-* A web module in a deployed Java Platform, Enterprise Edition (Java EE)
-application
-
-The application must already be deployed. Otherwise, an error occurs.
-
-An application uses the values of environment entries to customize its
-behavior or presentation.
-
-This subcommand enables you to change the configuration of a deployed
-application without the need to modify the application's deployment
-descriptors and repackage and redeploy the application.
-
-This subcommand is supported in remote mode only.
-
-[[sthref2094]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--name`::
-  The name of the environment entry that is to be set. The name is a
-  JNDI name relative to the `java:comp/env` context. The name must be
-  unique within a deployment component.
-`--type`::
-  The fully-qualified Java type of the environment entry value that is
-  expected by the application's code. This type must be one of the
-  following Java types: +
-  * `java.lang.Boolean`
-  * `java.lang.Byte`
-  * `java.lang.Character`
-  * `java.lang.Double`
-  * `java.lang.Float`
-  * `java.lang.Integer`
-  * `java.lang.Long`
-  * `java.lang.Short`
-  * `java.lang.String`
-`--value`::
-  The value to which the environment entry is to be set. If the `--type`
-  is `java.lang.Character`, the value must be a single character.
-  Otherwise, the value must be a string that is valid for the
-  constructor of the specified type. +
-  Either the `--value` option or the `--ignoredescriptoritem` option
-  must be set.
-`--ignoredescriptoritem`::
-  Specifies whether the environment entry is ignored if it is set in the
-  application's deployment descriptor. When an environment entry is
-  ignored, the application behaves as if the entry had never been set in
-  the application's deployment descriptor. The behavior of an
-  application in this situation depends on the application. +
-  The possible values are as follows: +
-  `false`;;
-    The value is not ignored (default).
-  `true`;;
-    The value is ignored. +
-  Either the `--value` option or the `--ignoredescriptoritem` option
-  must be set. +
-
-[width="100%",cols="100%",]
-|=======================================================================
-a|
-Note:
-
-Do not use the `--ignoredescriptoritem` option to unset an environment
-entry that has previously been set by using the `set-web-env-entry`
-subcommand. Instead, use the
-link:unset-web-env-entry.html#unset-web-env-entry-1[`unset-web-env-entry`(1)]
-subcommand for this purpose.
-
-|=======================================================================
-
-`--description`::
-  An optional textual description of the environment entry that is being
-  set.
-
-[[sthref2095]]
-
-Operands
-
-application-name::
-  The name of the application. This name can be obtained from the
-  Administration Console or by using the
-  link:list-applications.html#list-applications-1[`list-applications`(1)]
-  subcommand. +
-  The application must already be deployed. Otherwise, an error occurs.
-module::
-  The relative path to the module within the application's enterprise
-  archive (EAR) file. The path to the module is specified in the
-  `module` element of the application's `application.xml` file. +
-  module is required only if the environment entry applies to a web
-  module of a Java EE application. If specified, module must follow
-  application-name, separated by a slash (/). +
-  For example, the `application.xml` file for the `myApp` application
-  might specify the following web module: +
-[source,oac_no_warn]
-----
-<module>
-    <web>
-        <web-uri>myWebModule.war</web-uri>
-    </web>
-</module> 
-----
-::
-  The module would be specified as the operand of this command as
-  `myApp/myWebModule.war`.
-
-[[sthref2096]]
-
-Examples
-
-[[GSRFM755]][[sthref2097]]
-
-Example 1   Setting an Environment Entry for a Web Application
-
-This example sets the environment entry `Hello User` of the application
-hello to `techscribe`. The Java type of this entry is
-`java.lang.String`.
-
-[source,oac_no_warn]
-----
-asadmin> set-web-env-entry --name="Hello User" 
---type=java.lang.String --value=techscribe 
---description="User authentication for Hello appplication" hello
-
-Command set-web-env-entry executed successfully.
-----
-
-[[GSRFM756]][[sthref2098]]
-
-Example 2   Ignoring an Environment Entry That Is Defined in a
-Deployment Descriptor
-
-This example ignores the environment entry `Hello Port` of the web
-application `hello`.
-
-[source,oac_no_warn]
-----
-asadmin> set-web-env-entry --name="Hello Port" 
---type=java.lang.Integer --ignoredescriptoritem=true hello
-
-Command set-web-env-entry executed successfully.
-----
-
-[[sthref2099]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref2100]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:list-applications.html#list-applications-1[`list-applications`(1)],
-link:list-web-env-entry.html#list-web-env-entry-1[`list-web-env-entry`(1)],
-link:unset-web-env-entry.html#unset-web-env-entry-1[`unset-web-env-entry`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/set.adoc b/docs/reference-manual/src/main/jbake/content/set.adoc
deleted file mode 100644
index 5fb5e61..0000000
--- a/docs/reference-manual/src/main/jbake/content/set.adoc
+++ /dev/null
@@ -1,149 +0,0 @@
-type=page
-status=published
-title=set
-next=set-batch-runtime-configuration.html
-prev=rotate-log.html
-~~~~~~
-set
-===
-
-[[set-1]][[GSRFM00226]][[set]]
-
-set
----
-
-sets the values of configurable attributes
-
-[[sthref2024]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] set [--help] 
-attribute-name=value
-----
-
-[[sthref2025]]
-
-Description
-
-The `set` subcommand uses dotted names to modify the values of one or
-more configurable attributes.
-
-Attributes from the monitoring hierarchy are read-only, but
-configuration attributes can be modified. You can use the
-link:list.html#list-1[`list`(1)] subcommand to display the dotted names
-that represent individual server components and subsystems. For example,
-a dotted name might be `server.applications.web-module`. After you
-discover the particular component or subsystem, you can then use the
-`get` subcommand to access the attributes. For more detailed information
-on dotted names, see the
-link:dotted-names.html#dotted-names-5asc[`dotted-names`(5ASC)] help page.
-
-
-[NOTE]
-=======================================================================
-
-Characters that have special meaning to the shell or command
-interpreter, such as * (asterisk), should be quoted or escaped as
-appropriate to the shell, for example, by enclosing the argument in
-quotes. In multimode, quotes are needed only for arguments that include
-spaces, quotes, or backslash.
-
-=======================================================================
-
-
-By modifying attributes, you can enable and disable services, and
-customize how an existing element functions. An `asadmin` subcommand is
-provided to update some elements. For example, `update-password-alias`.
-However, to update other elements, you must use the `set` command. For
-example, you create a JDBC connection pool by using the
-`create-jdbc-connection-pool` subcommand. To change attribute settings
-later, you use the `set` command.
-
-Any change made by using the `asadmin` utility subcommands or the
-Administration Console are automatically applied to the associated
-\{product---name} configuration file.
-
-[[sthref2026]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref2027]]
-
-Operands
-
-attribute-name=value::
-  Identifies the full dotted name of the attribute name and its value.
-
-[[sthref2028]]
-
-Examples
-
-[[GSRFM745]][[sthref2029]]
-
-Example 1   Setting a JDBC Connection Pool Attribute
-
-This example changes the steady pool size of the `DerbyPool` connection
-pool to 9.
-
-[source,oac_no_warn]
-----
-asadmin> set resources.jdbc-connection-pool.DerbyPool.steady-pool-size=9
-Command set executed successfully.
-----
-
-[[GSRFM746]][[sthref2030]]
-
-Example 2   Enabling the Monitoring Service for a Monitorable Object
-
-This example enables monitoring for the JVM.
-
-[source,oac_no_warn]
-----
-asadmin> set server.monitoring-service.module-monitoring-levels.jvm=HIGH
-Command set executed successfully.
-----
-
-[[GSRFM747]][[sthref2031]]
-
-Example 3   Turning on Automatic Recovery for the Transaction Service
-
-This example turns on automatic recovery for the transaction service.
-
-[source,oac_no_warn]
-----
-asadmin> set server.transaction-service.automatic-recovery=true
-Command set executed successfully.
-----
-
-[[sthref2032]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref2033]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:get.html#get-1[`get`(1)], link:list.html#list-1[`list`(1)]
-
-link:dotted-names.html#dotted-names-5asc[`dotted-names`(5ASC)]
-
-link:../administration-guide/toc.html#GSADG[GlassFish Server Open Source Edition Administration Guide]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/setup-local-dcom.adoc b/docs/reference-manual/src/main/jbake/content/setup-local-dcom.adoc
deleted file mode 100644
index 28fbfc0..0000000
--- a/docs/reference-manual/src/main/jbake/content/setup-local-dcom.adoc
+++ /dev/null
@@ -1,155 +0,0 @@
-type=page
-status=published
-title=setup-local-dcom
-next=setup-ssh.html
-prev=set-log-levels.html
-~~~~~~
-setup-local-dcom
-================
-
-[[setup-local-dcom-1]][[GSRFM893]][[setup-local-dcom]]
-
-setup-local-dcom
-----------------
-
-sets up DCOM on a host
-
-[[sthref2066]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] setup-local-dcom [--help] 
-[--verbose={false|true}]
---force={false|true}
-----
-
-[[sthref2067]]
-
-Description
-
-The `setup-local-dcom` subcommand sets up the Distributed Component
-Object Model (DCOM) remote protocol on the host where the subcommand is
-run. The DCOM remote protocol is available only on Windows systems.
-
-This subcommand must be run by the operating-system-level administrator
-user on the host where DCOM is being set up. Before running this
-command, ensure that items in the Windows operating system are set as
-described in "link:../ha-administration-guide/ssh-setup.html#GSHAG449[Windows Operating System Settings]" in
-GlassFish Server Open Source Edition High Availability Administration
-Guide.
-
-Setting up DCOM on a host ensures that scripts can be run on the host
-from a remote host. To run scripts on the host from a remote host, the
-Windows user must be allowed full control over some Windows registry
-keys.
-
-In some versions of Windows, only the user `NT SERVICE\TrustedInstaller`
-has full control over these Windows registry keys. If the version of
-Windows on a host is configured in this way, this subcommand modifies
-these keys to allow full control over them for the Windows user.
-
-
-[CAUTION]
-=======================================================================
-
-This subcommand might modify the permissions of some keys in the Windows
-registry. Before running this command, back up the Windows registry.
-
-=======================================================================
-
-
-By default, the subcommand prompts you to confirm that you want to
-update the Windows registry. To run the subcommand without being
-prompted, set the `--force` option to `true`.
-
-This subcommand is supported in local mode only.
-
-[[sthref2068]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--verbose`::
-`-v`::
-  Specifies whether the subcommand displays information about the
-  operations that are performed to set up DCOM on the host. +
-  Possible values are as follows: +
-  `false`;;
-    No information about the operations that are performed to set up
-    DCOM is displayed (default).
-  `true`;;
-    The subcommand displays information about the operations that are
-    performed to set up DCOM on the host.
-`--force`::
-`-f`::
-  Specifies whether the subcommand prompts you to confirm that you want
-  to update the Windows registry. +
-  Possible values are as follows: +
-  `false`;;
-    You are prompted to confirm that you want to update the Windows
-    registry (default).
-  `true`;;
-    The subcommand forcibly updates the Windows registry without
-    prompting you.
-
-[[sthref2069]]
-
-Examples
-
-[[GSRFM737]][[sthref2070]]
-
-Example 1   Setting Up DCOM on a Host
-
-This example sets up DCOM on the host where the subcommand is run.
-
-[source,oac_no_warn]
-----
-asadmin> setup-local-dcom
-Caution: This command might modify the permissions of some keys in the Windows 
-registry.
-Before running this command, back up the Windows registry.
-The modification allows the Windows user full control over these keys.
- 
-Are you sure that you want to edit the Windows registry? If so, type yes in full: yes
-Command setup-local-dcom executed successfully.
-----
-
-[[GSRFM894]][[sthref2071]]
-
-Example 2   Forcibly Setting Up DCOM on a Host
-
-This example sets up DCOM without prompting for confirmation that the
-user wants to update the Windows registry.
-
-[source,oac_no_warn]
-----
-asadmin> setup-local-dcom --force=true
-Command setup-local-dcom executed successfully.
-----
-
-[[sthref2072]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref2073]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-"link:../ha-administration-guide/ssh-setup.html#GSHAG449[Windows Operating System Settings]" in GlassFish Server
-Open Source Edition High Availability Administration Guide
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/setup-ssh.adoc b/docs/reference-manual/src/main/jbake/content/setup-ssh.adoc
deleted file mode 100644
index 29f2ba2..0000000
--- a/docs/reference-manual/src/main/jbake/content/setup-ssh.adoc
+++ /dev/null
@@ -1,261 +0,0 @@
-type=page
-status=published
-title=setup-ssh
-next=set-web-context-param.html
-prev=setup-local-dcom.html
-~~~~~~
-setup-ssh
-=========
-
-[[setup-ssh-1]][[GSRFM00229]][[setup-ssh]]
-
-setup-ssh
----------
-
-sets up an SSH key on specified hosts
-
-[[sthref2074]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] setup-ssh [--help]
-[--sshport ssh-port] [--sshuser ssh-user]
-[--sshkeyfile ssh-keyfile] [--sshpublickeyfile ssh-public-keyfile]
-[--generatekey={false|true}]
-host-list
-----
-
-[[sthref2075]]
-
-Description
-
-The `setup-ssh` subcommand sets up a secure shell (SSH) key on the hosts
-that are specified as the operand of the subcommand. This key enables
-\{product---name} to use public-key authentication for authentication of
-the user's SSH login on remote hosts.
-
-SSH ensures that \{product---name} clusters that span multiple hosts can
-be administered centrally. When a user runs a subcommand for cluster
-administration that acts on multiple hosts, the subcommand is propagated
-from the domain administration server (DAS) host to remote hosts. To
-propagate subcommands that act on a \{product---name} instance that is
-not running, or on a node where no instances are running,
-\{product---name} uses SSH. SSH provides confidentiality and security
-for data that is exchanged between the DAS and remote hosts.
-
-Public-key authentication uses an SSH key pair that comprises the
-following keys:
-
-* A private key, which is stored in a secure location on the DAS host
-and which may be protected with a passphrase
-* The public key, which is stored on all the remote hosts with which the
-DAS communicates
-
-The subcommand does not require any configuration information from the
-DAS and does not modify the configuration of the DAS.
-
-This subcommand is supported in local mode only.
-
-Prerequisites for Using the `setup-ssh` Subcommand
-
-To use the `setup-ssh` subcommand, the SSH user must be able to use SSH
-to log in to remote hosts where SSH is to be set up. Specifically, the
-following prerequisites must be met:
-
-* The
-http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1ssh-1[`ssh`(1)]
-client is installed on the DAS host and is accessible through the DAS
-user's path.
-* The
-http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Msshd-1m[`sshd`(1M)]
-daemon is installed and running on all hosts where an SSH key is to be
-set up.
-* The user that the `--sshuser` option specifies has an SSH login on all
-hosts where an SSH key is to be set up.
-* The
-http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1ssh-keygen-1[`ssh-keygen`(1)]
-utility is installed on the DAS host either at the default location or
-in a location that is defined in the DAS user's path.
-* On Windows systems, the SSH package for http://www.cygwin.com/[Cygwin]
-(http://www.cygwin.com/) or an http://www.mkssoftware.com/[MKS Software]
-(http://www.mkssoftware.com/) toolkit that provides SSH is installed.
-
-Behavior of the `setup-ssh` Subcommand
-
-The subcommand sets up SSH connectivity between the DAS host and remote
-hosts by automating the following tasks:
-
-* Generating an SSH key pair. If no SSH key pair exists, the default
-behavior of the subcommand is to prompt the user to generate an SSH key
-pair. The SSH key pair is generated without an encryption passphrase. If
-a passphrase-protected key pair is required, the key pair must be
-generated manually by using the SSH
-commandhttp://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1ssh-keygen-1[`ssh-keygen`(1)].
-* Distributing the public key. The subcommand appends the content of the
-public key file to the user-home`/.ssh/authorized_keys` file on each
-remote host. By default, the subcommand locates the public key file in
-the user-home`/.ssh` directory on the host where the subcommand is run.
-If the user-home`/.ssh/authorized_keys` file does not exist on a host,
-the subcommand creates the file. user-home is the user's home directory
-on a host. +
-To distribute the public key, authentication of the user's SSH login is
-required. If the private key is protected by a passphrase, the
-passphrase is also required. By default, the subcommand prompts the user
-for the password and, if necessary, the passphrase. To distribute the
-public key without being prompted, run the subcommand as follows:
-
-** Set the `--interactive` option of the
-link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility to `false`.
-
-** Set the `--passwordfile` option of the `asadmin` utility to a file in
-which the `AS_ADMIN_SSHPASSWORD` entry specifies the SSH user's password
-for logging in to the specified hosts.
-
-** If a passphrase is required, ensure that the file that
-`--passwordfile` option of the `asadmin` utility specifies also contains
-an entry for `AS_ADMIN_SSHKEYPASSPHRASE`. +
-If public key authentication is already set up on a host, the subcommand
-informs the user that public key authentication is already set up and
-does not distribute the key to the host.
-
-[[sthref2076]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--sshport`::
-  The port to use for SSH connections to the host where SSH is being set
-  up. The default is 22.
-`--sshuser`::
-  The SSH user on the remote host that is to run the process for setting
-  up SSH on that host. The default is the user that is running this
-  subcommand. To ensure that the DAS can read this user's SSH private
-  key file, specify the user that is running the DAS process.
-`--sshkeyfile`::
-  The absolute path to the SSH private key file for user that the
-  `--sshuser` option specifies. This file is used for authentication to
-  the `sshd` daemon on the host. +
-  The user that is running this subcommand must be able to reach the
-  path to the key file and read the key file. +
-  The default is a key file in the user's `.ssh` directory on the host
-  where the subcommand is run. If multiple key files are found, the
-  subcommand uses the following order of preference: +
-  1.  `id_rsa`
-  2.  `id_dsa`
-  3.  `identity`
-`--sshpublickeyfile`::
-  The absolute path to the SSH public key file for user that the
-  `--sshuser` option specifies. The content of the public key file is
-  appended to the user's `.ssh/authorized_keys` file on each host where
-  SSH is being set up. If the `.ssh/authorized_keys` file does not exist
-  on a host, the subcommand creates the file. +
-  The user that is running this subcommand must be able to reach the
-  path to the key file and read the key file. +
-  The default is a key file in the user's `.ssh` directory on the host
-  where the subcommand is run. If multiple key files are found, the
-  subcommand uses the following order of preference: +
-  1.  `id_rsa.pub`
-  2.  `id_dsa.pub`
-  3.  `identity.pub`
-`--generatekey`::
-  Specifies whether the subcommand generates the SSH key files without
-  prompting the user. +
-  Possible values are as follows: +
-  `true`;;
-    The subcommand generates the SSH key files without prompting the
-    user.
-  `false`;;
-    The behavior of the subcommand depends on whether the SSH key files
-    exist: +
-    * If the SSH key files exist, the subcommand does not generate the
-    files.
-    * If the SSH key files do not exist, the behavior of the subcommand
-    depends on the value of the `--interactive` option of the `asadmin`
-    utility:
-    ** If the `--interactive` option is `true`, the subcommand prompts
-    the user to create the files.
-    ** If the `--interactive` option is `false`, the subcommand fails. +
-    This value is the default.
-
-[[sthref2077]]
-
-Operands
-
-host-list::
-  A space-separated list of the names of the hosts where an SSH key is
-  to be set up.
-
-[[sthref2078]]
-
-Examples
-
-[[GSRFM751]][[sthref2079]]
-
-Example 1   Setting Up an SSH Key
-
-This example sets up an SSH key for the user `gfuser` on the hosts
-`sj03` and `sj04`. The key file is not generated but is copied from the
-user's `.ssh` directory on the host where the subcommand is running.
-
-[source,oac_no_warn]
-----
-asadmin> setup-ssh sj03 sj04
-Enter SSH password for gfuser@sj03> 
-Copied keyfile /home/gfuser/.ssh/id_rsa.pub to gfuser@sj03
-Successfully connected to gfuser@sj03 using keyfile /home/gfuser/.ssh/id_rsa
-Copied keyfile /home/gfuser/.ssh/id_rsa.pub to gfuser@sj04
-Successfully connected to gfuser@sj04 using keyfile /home/gfuser/.ssh/id_rsa
-Command setup-ssh executed successfully.
-----
-
-[[GSRFM752]][[sthref2080]]
-
-Example 2   Generating and Setting Up an SSH Key
-
-This example generates and sets up an SSH key for the user `gfuser` on
-the hosts `sua01` and `sua02`.
-
-[source,oac_no_warn]
-----
-asadmin> setup-ssh --generatekey=true sua01 sua02
-Enter SSH password for gfuser@sua01> 
-Created directory /home/gfuser/.ssh
-/usr/bin/ssh-keygen successfully generated the identification /home/gfuser/.ssh/id_rsa
-Copied keyfile /home/gfuser/.ssh/id_rsa.pub to gfuser@sua01
-Successfully connected to gfuser@sua01 using keyfile /home/gfuser/.ssh/id_rsa
-Copied keyfile /home/gfuser/.ssh/id_rsa.pub to gfuser@sua02
-Successfully connected to gfuser@sua02 using keyfile /home/gfuser/.ssh/id_rsa
-Command setup-ssh executed successfully.
-----
-
-[[sthref2081]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref2082]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1ssh-1[`ssh`(1)],
-http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1ssh-keygen-1[`ssh-keygen`(1)]
-
-http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Msshd-1m[`sshd`(1M)]
-
-Cygwin Information and Installation (`http://www.cygwin.com/`), MKS
-Software (`http://www.mkssoftware.com/`)
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/show-component-status.adoc b/docs/reference-manual/src/main/jbake/content/show-component-status.adoc
deleted file mode 100644
index 7f915c7..0000000
--- a/docs/reference-manual/src/main/jbake/content/show-component-status.adoc
+++ /dev/null
@@ -1,114 +0,0 @@
-type=page
-status=published
-title=show-component-status
-next=start-cluster.html
-prev=set-web-env-entry.html
-~~~~~~
-show-component-status
-=====================
-
-[[show-component-status-1]][[GSRFM00232]][[show-component-status]]
-
-show-component-status
----------------------
-
-displays the status of the deployed component
-
-[[sthref2101]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] show-component-status [--help] 
-[--target target] component-name
-----
-
-[[sthref2102]]
-
-Description
-
-The `show-component-status` subcommand gets the status (either enabled
-or disabled) of the deployed component.
-
-This subcommand is supported in remote mode only.
-
-[[sthref2103]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  This option specifies the target on which you are showing the
-  component status. Valid values are: +
-  `server`;;
-    Shows the component status for the default server instance `server`
-    and is the default value.
-  `domain`;;
-    Shows the component status for the domain.
-  cluster_name;;
-    Shows the component status for the cluster.
-  instance_name;;
-    Shows the component status for a clustered or stand-alone server
-    instance.
-
-[[sthref2104]]
-
-Operands
-
-component-name::
-  The name of the component whose status is to be listed. +
-  The name can include an optional version identifier, which follows the
-  name and is separated from the name by a colon (`:`). The version
-  identifier must begin with a letter or number. It can contain
-  alphanumeric characters plus underscore (`_`), dash (`-`), and period
-  (`.`) characters. To list multiple versions, you can use an asterisk
-  (`*`) as a wildcard character. For more information about module and
-  application versions, see "link:../application-deployment-guide/overview.html#GSDPG00324[Module and Application
-  Versions]" in GlassFish Server Open Source Edition Application
-  Deployment Guide.
-
-[[sthref2105]]
-
-Examples
-
-[[GSRFM757]][[sthref2106]]
-
-Example 1   Showing the Status of a Component
-
-This example gets the status of the `MEjbApp` component.
-
-[source,oac_no_warn]
-----
-asadmin> show-component-status MEjbApp
-Status of MEjbApp is enabled
-Command show-component-status executed successfully.
-----
-
-[[sthref2107]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref2108]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:list-applications.html#list-applications-1[`list-applications`(1)],
-link:list-sub-components.html#list-sub-components-1[`list-sub-components`(1)]
-
-link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition Application Deployment
-Guide]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/start-cluster.adoc b/docs/reference-manual/src/main/jbake/content/start-cluster.adoc
deleted file mode 100644
index ada4668..0000000
--- a/docs/reference-manual/src/main/jbake/content/start-cluster.adoc
+++ /dev/null
@@ -1,135 +0,0 @@
-type=page
-status=published
-title=start-cluster
-next=start-database.html
-prev=show-component-status.html
-~~~~~~
-start-cluster
-=============
-
-[[start-cluster-1]][[GSRFM00233]][[start-cluster]]
-
-start-cluster
--------------
-
-starts a cluster
-
-[[sthref2109]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] start-cluster [--help] 
-[--autohadboverride={true|false}]
-[--verbose={false|true}] cluster-name
-----
-
-[[sthref2110]]
-
-Description
-
-The `start-cluster` subcommand starts a cluster by starting all
-\{product---name} instances in the cluster that are not already running.
-This subcommand requires the Distributed Component Object Model (DCOM)
-remote protocol or secure shell (SSH) to be configured on the host where
-the domain administration server (DAS) is running and on all hosts where
-instances in the cluster reside.
-
-
-[NOTE]
-=======================================================================
-
-If all instances reside on the same host as the DAS, DCOM or SSH is not
-required. You might require to start a cluster in which instances reside
-on hosts where DCOM or SSH is not configured that are remote from the
-DAS. In this situation, run the
-link:start-local-instance.html#start-local-instance-1[`start-local-instance`(1)]
-subcommand for each instance from the host where the instance resides.
-
-=======================================================================
-
-
-You may run this subcommand from any host that can contact the DAS.
-
-This subcommand is supported in remote mode only.
-
-[[sthref2111]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--autohadboverride`::
-  Do not specify this option. This option is retained for compatibility
-  with earlier releases. If you specify this option, a syntax error does
-  not occur. Instead, the subcommand runs successfully and displays a
-  warning message that the option is ignored.
-`--verbose`::
-  Specifies whether additional status information is displayed when the
-  cluster is started. +
-  Valid values are as follows: +
-  `true`;;
-    Displays the command to start each instance in the cluster and
-    whether the attempt to start each instance succeeded.
-  `false`;;
-    Displays no additional status information (default).
-
-[[sthref2112]]
-
-Operands
-
-cluster-name::
-  The name of the cluster to start.
-
-[[sthref2113]]
-
-Examples
-
-[[GSRFM758]][[sthref2114]]
-
-Example 1   Staring a Cluster
-
-This example starts the cluster `ymlcluster`. Additional status
-information is displayed when the cluster is started.
-
-[source,oac_no_warn]
-----
-asadmin> start-cluster --verbose ymlcluster
-start-instance yml-i-sr1-usca-02
-start-instance yml-i-sr1-usca-01
-
-The command start-instance executed successfully for: 
-yml-i-sr1-usca-02 yml-i-sr1-usca-01 
-
-Command start-cluster executed successfully.
-----
-
-[[sthref2115]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref2116]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-cluster.html#create-cluster-1[`create-cluster`(1)],
-link:delete-cluster.html#delete-cluster-1[`delete-cluster`(1)],
-link:list-clusters.html#list-clusters-1[`list-clusters`(1)],
-link:setup-ssh.html#setup-ssh-1[`setup-ssh`(1)],
-link:start-local-instance.html#start-local-instance-1[`start-local-instance`(1)],
-link:stop-cluster.html#stop-cluster-1[`stop-cluster`(1)],
-link:validate-dcom.html#validate-dcom-1[`validate-dcom`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/start-database.adoc b/docs/reference-manual/src/main/jbake/content/start-database.adoc
deleted file mode 100644
index df56947..0000000
--- a/docs/reference-manual/src/main/jbake/content/start-database.adoc
+++ /dev/null
@@ -1,177 +0,0 @@
-type=page
-status=published
-title=start-database
-next=start-domain.html
-prev=start-cluster.html
-~~~~~~
-start-database
-==============
-
-[[start-database-1]][[GSRFM00234]][[start-database]]
-
-start-database
---------------
-
-starts the Java DB
-
-[[sthref2117]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] start-database [--help] 
-[--jvmoptions jvm-options]
-[--dbhost host] [--dbport port-no]
-[--dbhome db-file-path]
-----
-
-[[sthref2118]]
-
-Description
-
-The `start-database` subcommand starts the Java DB server that is
-available for use with \{product---name}. Java DB is based upon Apache
-Derby. Use this subcommand only for working with applications deployed
-to the server.
-
-When you start Java DB server by using the `start-database` subcommand,
-the database server is started in Network Server mode. Clients
-connecting to it must use the Java DB ClientDriver. For details on
-connecting to the database, refer to the Apache Derby documentation.
-
-When the database server starts, or a client connects to it
-successfully, the following files are created:
-
-* The `derby.log` file that contains the database server process log
-along with its standard output and standard error information
-* The database files that contain your schema (for example, database
-tables)
-
-These files are created at the location that is specified by the
-`--dbhome` option. To create the database files at a particular
-location, you must set the `--dbhome` option. If the `--dbhome` option
-is not specified, the `start-database` subcommand determines where to
-create these files as follows:
-
-* If the current working directory contains a file that is named
-`derby.log`, the `start-database` subcommand creates the files in the
-current working directory.
-* Otherwise, the `start-database` subcommand creates the files in the
-as-install`/databases` directory.
-
-The `start-database` subcommand starts the database process, even if it
-cannot write to the log file.
-
-This subcommand is supported in local mode only.
-
-[[sthref2119]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--jvmoptions`::
-  A space-separated list of command-line options that are passed to the
-  Java application launcher when the database is started. By default, no
-  options are passed. +
-  The format of an option depends on whether the option has a name and a
-  value or only a name: +
-  * If the option has a name and a value, the format is
-  option-name=value.
-  * If the option has only a name, the format is option-name. For
-  example, `-Xmx512m`.
-`--dbhost`::
-  The host name or IP address of the Java DB server process. The default
-  is the IP address 0.0.0.0, which denotes all network interfaces on the
-  host where you run the `start-database` subcommand.
-`--dbport`::
-  The port number where the Java DB server listens for client
-  connections. This port must be available for the listen socket,
-  otherwise the database server will not start. The default is 1527.
-`--dbhome`::
-  The absolute path to the directory where the database files and the
-  `derby.log` file are created. If the `--dbhome` option is not
-  specified, the `start-database` subcommand determines where to create
-  these files as follows: +
-  * If the current working directory contains a file that is named
-  `derby.log`, the `start-database` subcommand creates the files in the
-  current working directory.
-  * Otherwise, the `start-database` subcommand creates the files in the
-  as-install`/databases` directory. +
-  To create the database files at a particular location, you must set
-  the `--dbhome` option.
-
-[[sthref2120]]
-
-Examples
-
-[[GSRFM759]][[sthref2121]]
-
-Example 1   Starting Java DB
-
-This example starts Java DB on the host `host1` and port 5001.
-
-[source,oac_no_warn]
-----
-asadmin> start-database --dbhost host1 --dbport 5001 --terse=true
-Starting database in the background.  Log redirected to 
-/opt/SUNWappserver/databases/derby.log.
-----
-
-[[GSRFM833]][[sthref2122]]
-
-Example 2   Starting Java DB With Options for the Java Application
-Launcher
-
-This example starts Java DB with the options for setting the minimum
-heap memory size to 128 megabytes and the maximum heap memory size to
-512 megabytes.
-
-[source,oac_no_warn]
-----
-asadmin> start-database --jvmoptions="-Xms128m -Xmx512m" --terse=true
-Starting database in the background.
-Log redirected to /export/glassfish3/glassfish/databases/derby.log.
-----
-
-[[sthref2123]]
-
-Exit Status
-
-The exit status applies to errors in executing the `asadmin` utility.
-For information on database errors, see the `derby.log` file. This file
-is located in the directory you specify by using the `--dbhome` option
-when you run the `start-database` subcommand. If you did not specify
-`--dbhome`, the value of `DERBY_INSTALL` defaults to
-as-install`/javadb`.
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref2124]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:stop-database.html#stop-database-1[`stop-database`(1)]
-
-"link:../administration-guide/jdbc.html#GSADG00015[Administering Database Connectivity]" in GlassFish
-Server Open Source Edition Administration Guide
-
-For more information about the Java application launcher, see the
-reference page for the operating system that you are using:
-
-* Oracle Solaris and Linux: java - the Java application launcher
-(`http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/java.html`)
-* Windows: java - the Java application launcher
-(`http://docs.oracle.com/javase/6/docs/technotes/tools/windows/java.html`)
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/start-domain.adoc b/docs/reference-manual/src/main/jbake/content/start-domain.adoc
deleted file mode 100644
index 457715e..0000000
--- a/docs/reference-manual/src/main/jbake/content/start-domain.adoc
+++ /dev/null
@@ -1,221 +0,0 @@
-type=page
-status=published
-title=start-domain
-next=start-instance.html
-prev=start-database.html
-~~~~~~
-start-domain
-============
-
-[[start-domain-1]][[GSRFM00235]][[start-domain]]
-
-start-domain
-------------
-
-starts the DAS of the specified domain
-
-[[sthref2125]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] start-domain [--help] 
-[--debug={true|false}] [--suspend={true|false}] [--domaindir domain-dir] 
-[--dry-run={true|false}] [--upgrade={true|false}] 
-[--verbose={true|false}] [--watchdog={true|false}] 
-[domain-name]
-----
-
-[[sthref2126]]
-
-Description
-
-The `start-domain` subcommand starts the domain administration server
-(DAS) of the specified domain. If a domain is not specified, the default
-domain is assumed. If the domains directory contains two or more
-domains, the domain-name operand must be specified.
-
-
-[NOTE]
-=======================================================================
-
-On the Windows platform, processes can bind to the same port. To avoid
-this problem, do not start multiple domains with the same port number at
-the same time.
-
-=======================================================================
-
-
-This subcommand is supported in local mode only.
-
-
-[NOTE]
-=======================================================================
-
-In Oracle GlassFish Server, the `start-domain` subcommand prompts for a
-new admin user password if no password has been set for the admin user.
-Additionally, the admin user password must not be blank if secure
-administration is enabled; otherwise, the `start-domain` subcommand
-fails.
-
-To provide the new admin user password, you can use the `--passwordfile`
-utility option of the link:asadmin.html#asadmin-1m[`asadmin`(1M)] command
-after adding the entry `AS_ADMIN_NEWPASSWORD` to the password file.
-
-=======================================================================
-
-
-[[sthref2127]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--debug`::
-`-d`::
-  Specifies whether the domain is started with
-  http://java.sun.com/javase/technologies/core/toolsapis/jpda/[Java
-  Platform Debugger Architecture (JPDA)]
-  (https://docs.oracle.com/en/java/javase/11/docs/specs/jpda/conninv.html)
-  debugging enabled. With debugging enabled extra exceptions can be printed. +
-  Possible values are as follows: +
-  `true`;;
-    The instance is started with JPDA debugging enabled and the port
-    number for JPDA debugging is displayed.
-  `false`;;
-    The instance is started with JPDA debugging disabled (default).
-`--suspend`::
-`-s`::
-  Specifies whether the domain is started with
-  http://java.sun.com/javase/technologies/core/toolsapis/jpda/[Java
-  Platform Debugger Architecture (JPDA)]
-  (https://docs.oracle.com/en/java/javase/11/docs/specs/jpda/conninv.html)
-  debugging enabled and suspend the newly started VM before the main class loads. 
-  When a debugger connects, it can send a JDWP command to resume the suspended VM.
-  With debugging enabled extra exceptions can be printed.
-  Possible values are as follows: +
-  `true`;;
-    The instance is started with JPDA debugging enabled and a suspendPolicy of `SUSPEND_ALL`.
-    The port number for JPDA debugging is displayed.
-  `false`;;
-    The instance is started with JPDA debugging disabled (default).
-`--dry-run`::
-`-n`::
-  Suppresses actual starting of the domain. Instead, `start-domain`
-  displays the full java command that would be used to start the domain,
-  including all options. Reviewing this command can be useful to confirm
-  JVM options and when troubleshooting startup issues. +
-  The default value is `false`.
-`--domaindir`::
-  The domain root directory, which contains the directory of the domain
-  that is to be restarted. If specified, the path must be accessible in
-  the file system. The default location of the domain root directory is
-  as-install`/domains`.
-`--upgrade`::
-  Specifies whether the configuration of the domain administration
-  server (DAS) is upgraded to the current release. Normally, if the
-  subcommand detects that the configuration is from an older release of
-  \{product---name}, the configuration is upgraded automatically before
-  being started. You should not need to use this option explicitly. +
-  Possible values are as follows: +
-  `true`;;
-    When the domain is started, the configuration is modified to be
-    compatible with this release of \{product---name}, and the
-    \{product---name} process stops.
-  `false`;;
-    The configuration of the DAS is not updated (default).
-`--verbose`::
-`-v`::
-  Specifies whether detailed information about the domain is displayed
-  in the console window where the subcommand is run. +
-  Possible values are as follows: +
-  `true`;;
-    Detailed startup messages and log messages about the domain are
-    displayed in the console window where the subcommand is run. If the
-    domain is later restarted by running the
-    link:restart-domain.html#restart-domain-1[`restart-domain`(1)]
-    subcommand from a different console window, messages continue to be
-    displayed in the original console window. +
-    You can kill the \{product---name} process by typing `CTRL-C` in the
-    console window. +
-    You can kill the \{product---name} process and obtain a thread dump
-    for the server by typing one of the following key combinations in
-    the console window: +
-    * `CTRL-\` on UNIX systems
-    * `CTRL-Break` on Windows systems
-  `false`;;
-    Detailed information is not displayed (default).
-`--watchdog`::
-`-w`::
-  Specifies whether limited information about the domain is displayed in
-  the console window where the subcommand is run. The `--watchdog`
-  option is similar to `--verbose` but does not display the detailed
-  startup messages and log messages. This option is useful when running
-  the `asadmin` utility in the background or with no attached console. +
-  Possible values are as follows: +
-  `true`;;
-    Limited information is displayed in the console window.
-  `false`;;
-    Limited information is not displayed in the console window
-    (default).
-
-[[sthref2128]]
-
-Operands
-
-domain-name::
-  The unique name of the domain you want to start. +
-  This operand is optional if only one domain exists in the
-  \{product---name} installation.
-
-[[sthref2129]]
-
-Examples
-
-[[GSRFM760]][[sthref2130]]
-
-Example 1   Starting a Domain
-
-This example starts `mydomain4` in the default domains directory.
-
-[source,oac_no_warn]
-----
-asadmin> start-domain mydomain4
-Waiting for DAS to start. ...........
-Started domain: mydomain4 
-Domain location: /myhome/glassfishv3/glassfish/domains/mydomain4 
-Log file: /myhome/glassfishv3/glassfish/domains/mydomain4/logs/server.log 
-Admin port for the domain: 4848 
-Command start-domain executed successfully.
-----
-
-[[sthref2131]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref2132]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-domain.html#create-domain-1[`create-domain`(1)],
-link:delete-domain.html#delete-domain-1[`delete-domain`(1)],
-link:list-domains.html#list-domains-1[`list-domains`(1)],
-link:restart-domain.html#restart-domain-1[`restart-domain`(1)],
-link:stop-domain.html#stop-domain-1[`stop-domain`(1)]
-
-Java Platform Debugger Architecture (JPDA)
-(https://docs.oracle.com/en/java/javase/11/docs/specs/jpda/conninv.html)
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/start-instance.adoc b/docs/reference-manual/src/main/jbake/content/start-instance.adoc
deleted file mode 100644
index 1a94d7d..0000000
--- a/docs/reference-manual/src/main/jbake/content/start-instance.adoc
+++ /dev/null
@@ -1,195 +0,0 @@
-type=page
-status=published
-title=start-instance
-next=start-local-instance.html
-prev=start-domain.html
-~~~~~~
-start-instance
-==============
-
-[[start-instance-1]][[GSRFM00236]][[start-instance]]
-
-start-instance
---------------
-
-starts a \{product---name} instance
-
-[[sthref2133]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] start-instance [--help] 
-[--debug={false|true}] [--sync={normal|full|none}] 
-instance-name
-----
-
-[[sthref2134]]
-
-Description
-
-The `start-instance` subcommand starts a \{product---name} instance.
-This subcommand requires the Distributed Component Object Model (DCOM)
-remote protocol or secure shell (SSH) to be configured on the machine
-where the domain administration server (DAS) is running and on the
-machine where the instance resides.
-
-
-[NOTE]
-=======================================================================
-
-DCOM or SSH is not required if the instance resides on a node of type
-`CONFIG` that represents the local host. A node of type `CONFIG` is not
-enabled for remote communication over DCOM or SSH.
-
-=======================================================================
-
-
-You may run this subcommand from any machine that can contact the DAS.
-
-The subcommand can start any \{product---name} instance, regardless of
-how the instance was created. For example, this subcommand can start an
-instance that was created by using the
-link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)]
-subcommand.
-
-This command is supported in remote mode only.
-
-[[sthref2135]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--debug`::
-  Specifies whether the instance is started with
-  http://java.sun.com/javase/technologies/core/toolsapis/jpda/[Java
-  Platform Debugger Architecture (JPDA)]
-  (http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html)
-  debugging enabled. +
-  Possible values are as follows: +
-  `true`;;
-    The instance is started with JPDA debugging enabled and the port
-    number for JPDA debugging is displayed.
-  `false`;;
-    The instance is started with JPDA debugging disabled (default).
-`--sync`::
-  The type of synchronization between the DAS and the instance's files
-  when the instance is started. +
-  Possible values are as follows: +
-  `none`;;
-    The DAS does not synchronize the instance's files with any changes.
-    This type of synchronization minimizes the time that is required to
-    start the instance.
-  `normal`;;
-    The DAS synchronizes the instance with changes since the last
-    synchronization as follows: +
-    * For the `config` directory, the DAS synchronizes the instance with
-    all changes.
-    * For the `applications` directory and `docroot` directory, only a
-    change to a top-level subdirectory causes the DAS to synchronize all
-    files under that subdirectory. +
-    If a file below a top level subdirectory is changed without a change
-    to a file in the top level subdirectory, full synchronization is
-    required. In normal operation, files below the top level
-    subdirectories of these directories are not changed. If an
-    application is deployed and undeployed, full synchronization is not
-    necessary to update the instance with the change. +
-    This value is the default.
-  `full`;;
-    The DAS synchronizes the instance with all of the instance's files,
-    regardless of whether the files have changed since the last
-    synchronization. This type of synchronization might delay the
-    startup of the instance while the DAS updates all files in the
-    instance's directories.
-
-[[sthref2136]]
-
-Operands
-
-instance-name::
-  The name of the \{product---name} instance to start.
-
-[[sthref2137]]
-
-Examples
-
-[[GSRFM761]][[sthref2138]]
-
-Example 1   Starting a \{product---name} Instance
-
-This example starts the \{product---name} instance `pmdsa1`.
-
-[source,oac_no_warn]
-----
-asadmin> start-instance pmdsa1
-Waiting for the server to start ..............................
-Successfully started the instance: pmdsa1
-instance Location: /export/glassfish3/glassfish/nodes/localhost/pmdsa1
-Log File: /export/glassfish3/glassfish/nodes/localhost/pmdsa1/logs/server.log
-Admin Port: 24848
-Command start-local-instance executed successfully.
-The instance, pmdsa1, was started on host localhost
-
-Command start-instance executed successfully.
-----
-
-[[GSRFM762]][[sthref2139]]
-
-Example 2   Starting a \{product---name} Instance With JPDA Debugging
-Enabled
-
-This example starts the \{product---name} instance `ymlsa1` with JPDA
-debugging enabled.
-
-[source,oac_no_warn]
-----
-asadmin> start-instance --debug=true ymlsa1
-Waiting for the server to start ...............................
-Successfully started the instance: ymlsa1
-instance Location: /export/glassfish3/glassfish/nodes/localhost/ymlsa1
-Log File: /export/glassfish3/glassfish/nodes/localhost/ymlsa1/logs/server.log
-Admin Port: 24849
-Debugging is enabled. The debugging port is: 29010
-Command start-local-instance executed successfully.
-The instance, ymlsa1, was started on host localhost
-
-Command start-instance executed successfully.
-----
-
-[[sthref2140]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref2141]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-instance.html#create-instance-1[`create-instance`(1)],
-link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)],
-link:delete-instance.html#delete-instance-1[`delete-instance`(1)],
-link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)],
-link:setup-ssh.html#setup-ssh-1[`setup-ssh`(1)],
-link:start-domain.html#start-domain-1[`start-domain`(1)],
-link:start-local-instance.html#start-local-instance-1[`start-local-instance`(1)],
-link:stop-domain.html#stop-domain-1[`stop-domain`(1)],
-link:stop-instance.html#stop-instance-1[`stop-instance`(1)],
-link:stop-local-instance.html#stop-local-instance-1[`stop-local-instance`(1)],
-link:validate-dcom.html#validate-dcom-1[`validate-dcom`(1)]
-
-Java Platform Debugger Architecture (JPDA)
-(`http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html`)
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/start-local-instance.adoc b/docs/reference-manual/src/main/jbake/content/start-local-instance.adoc
deleted file mode 100644
index d40b0fc..0000000
--- a/docs/reference-manual/src/main/jbake/content/start-local-instance.adoc
+++ /dev/null
@@ -1,234 +0,0 @@
-type=page
-status=published
-title=start-local-instance
-next=stop-cluster.html
-prev=start-instance.html
-~~~~~~
-start-local-instance
-====================
-
-[[start-local-instance-1]][[GSRFM00237]][[start-local-instance]]
-
-start-local-instance
---------------------
-
-starts a \{product---name} instance on the host where the subcommand is
-run
-
-[[sthref2142]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] start-local-instance [--help] 
-[--nodedir node-dir] [--node node]
-[--debug={false|true}] [--dry-run={true|false}]
-[--sync={normal|full|none}]
-[--verbose={false|true}] [--watchdog={true|false}] 
-[instance-name]
-----
-
-[[sthref2143]]
-
-Description
-
-The `start-local-instance` subcommand starts a \{product---name}
-instance on the host where the subcommand is run. This subcommand does
-not require the Distributed Component Object Model (DCOM) remote
-protocol or secure shell (SSH) to be configured. You must run this
-command from the host where the instance resides.
-
-The subcommand can start any \{product---name} instance, regardless of
-how the instance was created. For example, this subcommand can start an
-instance that was created by using the
-link:create-instance.html#create-instance-1[`create-instance`(1)]
-subcommand.
-
-The `start-local-instance` subcommand does not contact the domain
-administration server (DAS) to determine the node on which the instance
-resides. To determine the node on which the instance resides, the
-subcommand searches the directory that contains the node directories. If
-multiple node directories exist, the node must be specified as an option
-of the subcommand.
-
-This subcommand is supported in local mode. However, to synchronize the
-instance with the DAS, this subcommand must be run in remote mode.
-
-[[sthref2144]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--nodedir`::
-  Specifies the directory that contains the instance's node directory.
-  The instance's files are stored in the instance's node directory. The
-  default is as-install`/nodes`.
-`--node`::
-  Specifies the node on which the instance resides. This option may be
-  omitted only if the directory that the `--nodedir` option specifies
-  contains only one node directory. Otherwise, this option is required.
-`--debug`::
-`-d`::
-  Specifies whether the instance is started with
-  http://java.sun.com/javase/technologies/core/toolsapis/jpda/[Java
-  Platform Debugger Architecture (JPDA)]
-  (http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html)
-  debugging enabled. +
-  Possible values are as follows: +
-  `true`;;
-    The instance is started with JPDA debugging enabled and the port
-    number for JPDA debugging is displayed.
-  `false`;;
-    The instance is started with JPDA debugging disabled (default).
-`--dry-run`::
-`-n`::
-  Suppresses actual starting of the instance. Instead,
-  `start-local-instance` displays the full command that would be used to
-  start the instance, including all options. Reviewing this command can
-  be useful when troubleshooting startup issues. +
-  The default value is `false`.
-`--sync`::
-  The type of synchronization between the DAS and the instance's files
-  when the instance is started. +
-  Possible values are as follows: +
-  `none`;;
-    The DAS does not synchronize the instance's files with any changes.
-    This type of synchronization minimizes the time that is required to
-    start the instance.
-  `normal`;;
-    The DAS synchronizes the instance with changes since the last
-    synchronization as follows: +
-    * For the `config` directory, the DAS synchronizes the instance with
-    all changes.
-    * For the `applications` directory and `docroot` directory, only a
-    change to a top-level subdirectory causes the DAS to synchronize all
-    files under that subdirectory. +
-    If a file below a top level subdirectory is changed without a change
-    to a file in the top level subdirectory, full synchronization is
-    required. In normal operation, files below the top level
-    subdirectories of these directories are not changed. If an
-    application is deployed and undeployed, full synchronization is not
-    necessary to update the instance with the change. +
-    This value is the default.
-  `full`;;
-    The DAS synchronizes the instance with all of the instance's files,
-    regardless of whether the files have changed since the last
-    synchronization. This type of synchronization might delay the
-    startup of the instance while the DAS updates all files in the
-    instance's directories. +
-
-[width="100%",cols="100%",]
-|=======================================================================
-a|
-Caution:
-
-If the DAS is not running or is unreachable from the host where you
-are running this subcommand, do not set the `--sync` option to
-`full`. To perform a full synchronization, the subcommand removes
-the instance's cache. If the DAS cannot be contacted to replace the
-cache, the subcommand fails and the instance cannot be restarted
-until it is resynchronized with the DAS.
-
-|=======================================================================
-
-`--verbose`::
-`-v`::
-  Specifies whether detailed information about the instance is displayed
-  in the console window where the subcommand is run. +
-  Possible values are as follows: +
-  `true`;;
-    Detailed startup messages and log messages about the instance are
-    displayed in the console window where the subcommand is run. If the
-    instance is later restarted by running the
-    link:restart-local-instance.html#restart-local-instance-1[`restart-local-instance`(1)]
-    subcommand from a different console window, messages continue to be
-    displayed in the original console window. +
-    You can kill the \{product---name} process by typing `CTRL-C` in the
-    console window. +
-    You can kill the \{product---name} process and obtain a thread dump
-    for the server by typing one of the following key combinations in
-    the console window: +
-    * `CTRL-\` on UNIX systems
-    * `CTRL-Break` on Windows systems
-  `false`;;
-    Detailed information is not displayed (default).
-`--watchdog`::
-`-w`::
-  Specifies whether limited information about the instance is displayed
-  in the console window where the subcommand is run. The `--watchdog`
-  option is similar to `--verbose` but does not display the detailed
-  startup messages and log messages. This option is useful when running
-  the `asadmin` utility in the background or with no attached console. +
-  Possible values are as follows: +
-  `true`;;
-    Limited information is displayed in the console window.
-  `false`;;
-    Limited information is not displayed in the console window
-    (default).
-
-[[sthref2145]]
-
-Operands
-
-instance-name::
-  The name of the instance to start.
-
-[[sthref2146]]
-
-Examples
-
-[[GSRFM763]][[sthref2147]]
-
-Example 1   Starting an Instance Locally
-
-This example starts the instance `yml-i-sj01` on the host where the
-subcommand is run.
-
-[source,oac_no_warn]
-----
-asadmin> start-local-instance --node sj01 yml-i-sj01
-Waiting for the server to start .................................
-Successfully started the instance: yml-i-sj01
-instance Location: /export/glassfish3/glassfish/nodes/sj01/yml-i-sj01
-Log File: /export/glassfish3/glassfish/nodes/sj01/yml-i-sj01/logs/server.log
-Admin Port: 24849
-Command start-local-instance executed successfully.
-----
-
-[[sthref2148]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref2149]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-instance.html#create-instance-1[`create-instance`(1)],
-link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)],
-link:delete-instance.html#delete-instance-1[`delete-instance`(1)],
-link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)],
-link:restart-instance.html#restart-instance-1[`restart-instance`(1)],
-link:restart-local-instance.html#restart-local-instance-1[`restart-local-instance`(1)],
-link:start-domain.html#start-domain-1[`start-domain`(1)],
-link:start-instance.html#start-instance-1[`start-instance`(1)],
-link:stop-domain.html#stop-domain-1[`stop-domain`(1)],
-link:stop-instance.html#stop-instance-1[`stop-instance`(1)],
-link:stop-local-instance.html#stop-local-instance-1[`stop-local-instance`(1)]
-
-Java Platform Debugger Architecture (JPDA)
-(http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html)
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/stop-cluster.adoc b/docs/reference-manual/src/main/jbake/content/stop-cluster.adoc
deleted file mode 100644
index d89d769..0000000
--- a/docs/reference-manual/src/main/jbake/content/stop-cluster.adoc
+++ /dev/null
@@ -1,127 +0,0 @@
-type=page
-status=published
-title=stop-cluster
-next=stop-database.html
-prev=start-local-instance.html
-~~~~~~
-stop-cluster
-============
-
-[[stop-cluster-1]][[GSRFM00238]][[stop-cluster]]
-
-stop-cluster
-------------
-
-stops a \{product---name} cluster
-
-[[sthref2150]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] stop-cluster [--help]
-[--verbose={false|true}] 
-[--kill={false|true}] 
-[--autohadboverride={true|false}] 
-cluster-name
-----
-
-[[sthref2151]]
-
-Description
-
-The `stop-cluster` subcommand stops a \{product---name} cluster by
-stopping all running \{product---name} instances in the cluster.
-
-This subcommand is supported in remote mode only.
-
-[[sthref2152]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--verbose`::
-  Specifies whether additional progress messages about the status of
-  instances in the cluster are displayed while the cluster is being
-  stopped. +
-  Possible values are as follows: +
-  `true`;;
-    Additional progress messages about the status of instances in the
-    cluster are displayed.
-  `false`;;
-    No messages about the status of instances in the cluster are
-    displayed.
-`--kill`::
-  Specifies whether each instance in the cluster is killed by using
-  functionality of the operating system to terminate the instance
-  process. +
-  Possible values are as follows: +
-  `false`;;
-    No instances are killed. The subcommand uses functionality of the
-    Java platform to terminate each instance process (default).
-  `true`;;
-    Each instance is killed. The subcommand uses functionality of the
-    operating system to terminate each instance process.
-`--autohadboverride`::
-  Do not specify this option. This option is retained for compatibility
-  with earlier releases. If you specify this option, a syntax error does
-  not occur. Instead, the subcommand runs successfully and displays a
-  warning message that the option is ignored.
-
-[[sthref2153]]
-
-Operands
-
-cluster-name::
-  The name of the cluster to stop.
-
-[[sthref2154]]
-
-Examples
-
-[[GSRFM764]][[sthref2155]]
-
-Example 1   Stopping a Cluster
-
-This example stops the cluster `pmdcluster`. Additional progress
-messages about the status of instances in the cluster are displayed
-while the cluster is being stopped.
-
-[source,oac_no_warn]
-----
-asadmin> stop-cluster --verbose pmdcluster
-stop-instance pmd-i-sj01
-stop-instance pmd-i-sj02
-
-The command stop-instance executed successfully for: pmd-i-sj01 pmd-i-sj02
-
-Command stop-cluster executed successfully.
-----
-
-[[sthref2156]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref2157]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-cluster.html#create-cluster-1[`create-cluster`(1)],
-link:delete-cluster.html#delete-cluster-1[`delete-cluster`(1)],
-link:list-clusters.html#list-clusters-1[`list-clusters`(1)],
-link:start-cluster.html#start-cluster-1[`start-cluster`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/stop-database.adoc b/docs/reference-manual/src/main/jbake/content/stop-database.adoc
deleted file mode 100644
index 1915fb1..0000000
--- a/docs/reference-manual/src/main/jbake/content/stop-database.adoc
+++ /dev/null
@@ -1,111 +0,0 @@
-type=page
-status=published
-title=stop-database
-next=stop-domain.html
-prev=stop-cluster.html
-~~~~~~
-stop-database
-=============
-
-[[stop-database-1]][[GSRFM00239]][[stop-database]]
-
-stop-database
--------------
-
-stops the Java DB
-
-[[sthref2158]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] stop-database [--help] 
-[--dbuser db-user]
-[--dbhost host] [--dbport port-no]
-----
-
-[[sthref2159]]
-
-Description
-
-The `stop-database` subcommand stops a process of the Java DB server.
-Java DB server is available for use with \{product---name} and is based
-upon Apache Derby. The database is typically started with the
-link:start-database.html#start-database-1[`start-database`(1)]
-subcommand. A single host can have multiple database server processes
-running on different ports. The `stop-database` subcommand stops the
-database server process for the specified port only.
-
-This subcommand is supported in local mode only.
-
-[[sthref2160]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--dbuser`::
-  The user name of the Java DB user that is to stop the server process.
-  This option is required only when Java DB user authentication is
-  enabled. +
-  If this option is omitted, no user is specified. By default, Java DB
-  user authentication is disabled, so no user or password is required.
-`--dbhost`::
-  The host name or IP address of the Java DB server process. The default
-  is the IP address 0.0.0.0, which denotes all network interfaces on the
-  host where you run the `stop-database` subcommand.
-`--dbport`::
-  The port number where the Java DB server listens for client
-  connections. The default is 1527.
-
-[[sthref2161]]
-
-Examples
-
-[[GSRFM765]][[sthref2162]]
-
-Example 1   Stopping Java DB
-
-This example stops Java DB on host host1 and port 5001.
-
-[source,oac_no_warn]
-----
-asadmin> stop-database --dbhost host1 --dbport 5001
-Connection obtained for host: host1, port number 5001.
-Shutdown successful.
-Command stop-database executed successfully.
-----
-
-[[sthref2163]]
-
-Exit Status
-
-The exit status applies to errors in executing the `asadmin` utility.
-For information on database errors, see the `derby.log` file. This file
-is located in the directory you specify by using the `--dbhome` option
-when you run the `start-database` subcommand. If you did not specify
-`--dbhome`, the value of `DERBY_INSTALL` defaults to
-as-install`/javadb`.
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref2164]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:start-database.html#start-database-1[`start-database`(1)]
-
-"link:../administration-guide/jdbc.html#GSADG00015[Administering Database Connectivity]" in GlassFish
-Server Open Source Edition Administration Guide
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/stop-domain.adoc b/docs/reference-manual/src/main/jbake/content/stop-domain.adoc
deleted file mode 100644
index 6e15e4a..0000000
--- a/docs/reference-manual/src/main/jbake/content/stop-domain.adoc
+++ /dev/null
@@ -1,126 +0,0 @@
-type=page
-status=published
-title=stop-domain
-next=stop-instance.html
-prev=stop-database.html
-~~~~~~
-stop-domain
-===========
-
-[[stop-domain-1]][[GSRFM00240]][[stop-domain]]
-
-stop-domain
------------
-
-stops the Domain Administration Server of the specified domain
-
-[[sthref2165]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] stop-domain [--help] 
-[--domaindir domaindir] 
-[--force={true|false}] [--kill={false|true}] 
-[domain-name]
-----
-
-[[sthref2166]]
-
-Description
-
-The `stop-domain` subcommand stops the Domain Administration Server
-(DAS) of the specified domain. If the domain directory is not specified,
-the domain in the default domains directory is stopped. If there are two
-or more domains in the domains directory, the domain-name operand must
-be specified.
-
-This subcommand is supported in local or remote mode. If you specify a
-host name, the subcommand assumes you are operating in remote mode,
-which means you must correctly authenticate to the remote server. In
-local mode, you normally do not need to authenticate to the server as
-long as you are running the subcommand as the same user who started the
-server.
-
-[[sthref2167]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--domaindir`::
-  Specifies the directory of the domain that is to be stopped. If
-  specified, the path must be accessible in the file system. If not
-  specified, the domain in the default as-install`/domains` directory is
-  stopped.
-`--force`::
-  Specifies whether the domain is forcibly stopped immediately. +
-  Possible values are as follows: +
-  `true`;;
-    The domain is forcibly stopped immediately (default).
-  `false`;;
-    The subcommand waits until all threads that are associated with the
-    domain are exited before stopping the domain.
-`--kill`::
-  Specifies whether the domain is killed by using functionality of the
-  operating system to terminate the domain process. +
-  Possible values are as follows: +
-  `false`;;
-    The domain is not killed. The subcommand uses functionality of the
-    Java platform to terminate the domain process (default).
-  `true`;;
-    The domain is killed. The subcommand uses functionality of the
-    operating system to terminate the domain process.
-
-[[sthref2168]]
-
-Operands
-
-domain-name::
-  The name of the domain you want to stop. Default is the name specified
-  during installation, usually `domain1`.
-
-[[sthref2169]]
-
-Examples
-
-[[GSRFM766]][[sthref2170]]
-
-Example 1   Stopping a Domain
-
-This example stops the domain named `sampleDomain` in the default
-domains directory.
-
-[source,oac_no_warn]
-----
-asadmin> stop-domain sampleDomain
-Waiting for the domain to stop .................
-Command stop-domain executed successfully.
-----
-
-[[sthref2171]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref2172]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:delete-domain.html#delete-domain-1[`delete-domain`(1)],
-link:list-domains.html#list-domains-1[`list-domains`(1)],
-link:restart-domain.html#restart-domain-1[`restart-domain`(1)],
-link:start-domain.html#start-domain-1[`start-domain`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/stop-instance.adoc b/docs/reference-manual/src/main/jbake/content/stop-instance.adoc
deleted file mode 100644
index 6b08a86..0000000
--- a/docs/reference-manual/src/main/jbake/content/stop-instance.adoc
+++ /dev/null
@@ -1,122 +0,0 @@
-type=page
-status=published
-title=stop-instance
-next=stop-local-instance.html
-prev=stop-domain.html
-~~~~~~
-stop-instance
-=============
-
-[[stop-instance-1]][[GSRFM00241]][[stop-instance]]
-
-stop-instance
--------------
-
-stops a running \{product---name} instance
-
-[[sthref2173]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] stop-instance [--help] 
-[--force={false|true}] [--kill={false|true}]
-instance-name
-----
-
-[[sthref2174]]
-
-Description
-
-The `stop-instance` subcommand stops a running \{product---name}
-instance.
-
-The subcommand can stop any \{product---name} instance, regardless of
-how the instance was created. For example, this subcommand can stop an
-instance that was created by using the
-link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)]
-subcommand.
-
-This command is supported in remote mode only.
-
-[[sthref2175]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--force`::
-  Specifies whether the instance is forcibly stopped immediately. +
-  Possible values are as follows: +
-  `true`;;
-    The instance is forcibly stopped immediately (default).
-  `false`;;
-    The subcommand waits until all threads that are associated with the
-    instance are exited before stopping the instance.
-`--kill`::
-  Specifies whether the instance is killed by using functionality of the
-  operating system to terminate the instance process. +
-  Possible values are as follows: +
-  `false`;;
-    The instance is not killed. The subcommand uses functionality of the
-    Java platform to terminate the instance process (default).
-  `true`;;
-    The instance is killed. The subcommand uses functionality of the
-    operating system to terminate the instance process.
-
-[[sthref2176]]
-
-Operands
-
-instance-name::
-  This is the name of the \{product---name} instance to stop.
-
-[[sthref2177]]
-
-Examples
-
-This example stops the \{product---name} instance `yml-i-sj01`.
-
-[[GSRFM767]][[sthref2178]]
-
-Example 1   Stopping a \{product---name} Instance
-
-[source,oac_no_warn]
-----
-asadmin> stop-instance yml-i-sj01
-The instance, yml-i-sj01, was stopped.
-
-Command stop-instance executed successfully.
-----
-
-[[sthref2179]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref2180]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-instance.html#create-instance-1[`create-instance`(1)],
-link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)],
-link:delete-instance.html#delete-instance-1[`delete-instance`(1)],
-link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)],
-link:start-domain.html#start-domain-1[`start-domain`(1)],
-link:start-instance.html#start-instance-1[`start-instance`(1)],
-link:start-local-instance.html#start-local-instance-1[`start-local-instance`(1)],
-link:stop-domain.html#stop-domain-1[`stop-domain`(1)],
-link:stop-local-instance.html#stop-local-instance-1[`stop-local-instance`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/stop-local-instance.adoc b/docs/reference-manual/src/main/jbake/content/stop-local-instance.adoc
deleted file mode 100644
index 6f53688..0000000
--- a/docs/reference-manual/src/main/jbake/content/stop-local-instance.adoc
+++ /dev/null
@@ -1,138 +0,0 @@
-type=page
-status=published
-title=stop-local-instance
-next=undeploy.html
-prev=stop-instance.html
-~~~~~~
-stop-local-instance
-===================
-
-[[stop-local-instance-1]][[GSRFM00242]][[stop-local-instance]]
-
-stop-local-instance
--------------------
-
-stops a \{product---name} instance on the machine where the subcommand
-is run
-
-[[sthref2181]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] stop-local-instance [--help]
-[--nodedir node-dir] [--node node]
-[--force={true|false}] [--kill={false|true}]
-[instance-name]
-----
-
-[[sthref2182]]
-
-Description
-
-The `stop-local-instance` subcommand stops a \{product---name} instance
-on the machine where the subcommand is run. This subcommand does not
-require secure shell (SSH) to be configured. You must run this command
-from the machine where the instance resides.
-
-The subcommand can stop any \{product---name} instance, regardless of
-how the instance was created. For example, this subcommand can stop an
-instance that was created by using the
-link:create-instance.html#create-instance-1[`create-instance`(1)]
-subcommand.
-
-The `stop-local-instance` subcommand does not contact the DAS to
-determine the node on which the instance resides. To determine the node
-on which the instance resides, the subcommand searches the directory
-that contains the node directories. If multiple node directories exist,
-the node must be specified as an option of the subcommand.
-
-This subcommand is supported in local mode.
-
-[[sthref2183]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--nodedir`::
-  Specifies the directory that contains the instance's node directory.
-  The instance's files are stored in the instance's node directory. The
-  default is as-install`/nodes`.
-`--node`::
-  Specifies the node on which the instance resides. This option may be
-  omitted only if the directory that the `--nodedir` option specifies
-  contains only one node directory. Otherwise, this option is required.
-`--force`::
-  Specifies whether the instance is forcibly stopped immediately. +
-  Possible values are as follows: +
-  `true`;;
-    The instance is forcibly stopped immediately (default).
-  `false`;;
-    The subcommand waits until all threads that are associated with the
-    instance are exited before stopping the instance.
-`--kill`::
-  Specifies whether the instance is killed by using functionality of the
-  operating system to terminate the instance process. +
-  Possible values are as follows: +
-  `false`;;
-    The instance is not killed. The subcommand uses functionality of the
-    Java platform to terminate the instance process (default).
-  `true`;;
-    The instance is killed. The subcommand uses functionality of the
-    operating system to terminate the instance process.
-
-[[sthref2184]]
-
-Operands
-
-instance-name::
-  The name of the instance to stop.
-
-[[sthref2185]]
-
-Examples
-
-[[GSRFM768]][[sthref2186]]
-
-Example 1   Stopping an Instance Locally
-
-This example stops the instance `yml-i-sj01` on the machine where the
-subcommand is run.
-
-[source,oac_no_warn]
-----
-asadmin> stop-local-instance --node sj01 yml-i-sj01
-Waiting for the instance to stop ...
-Command stop-local-instance executed successfully.
-----
-
-[[sthref2187]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref2188]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-instance.html#create-instance-1[`create-instance`(1)],
-link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)],
-link:delete-instance.html#delete-instance-1[`delete-instance`(1)],
-link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)],
-link:start-instance.html#start-instance-1[`start-instance`(1)],
-link:start-local-instance.html#start-local-instance-1[`start-local-instance`(1)],
-link:stop-instance.html#stop-instance-1[`stop-instance`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/title.adoc b/docs/reference-manual/src/main/jbake/content/title.adoc
deleted file mode 100644
index 6370f77..0000000
--- a/docs/reference-manual/src/main/jbake/content/title.adoc
+++ /dev/null
@@ -1,55 +0,0 @@
-type=page
-status=published
-title=Eclipse GlassFish Server Reference Manual, Release 5.1
-next=preface.html
-prev=toc.html
-~~~~~~
-Eclipse GlassFish Server Reference Manual, Release 5.1
-======================================================
-
-[[eclipse-glassfish-server]]
-Eclipse GlassFish Server
-------------------------
-
-Reference Manual
-
-Release 5.1
-
-Contributed 2018, 2019
-
-This reference manual describes administration commands and utility
-commands that are available with Eclipse GlassFish Server
-5.1. This reference manual also describes concepts that are related to
-\{product---name} administration.
-
-The available options, arguments, and operands for each command are
-provided in accordance with standard rules of command syntax, along with
-availability attributes, diagnostic information, and cross-references to
-other manual pages and reference material with relevant information.
-
-This reference manual is for all users of GlassFish Server Open Source
-Edition.
-
-[[sthref1]]
-
-'''''
-
-Eclipse GlassFish Server Reference Manual, Release 5.1
-
-Copyright © 2013, 2019 Oracle and/or its affiliates. All rights reserved.
-
-This program and the accompanying materials are made available under the 
-terms of the Eclipse Public License v. 2.0, which is available at 
-http://www.eclipse.org/legal/epl-2.0. 
-
-SPDX-License-Identifier: EPL-2.0
-
-Oracle and Java are registered trademarks of Oracle and/or its 
-affiliates. Other names may be trademarks of their respective owners. 
-
-Intel and Intel Xeon are trademarks or registered trademarks of Intel 
-Corporation. All SPARC trademarks are used under license and are 
-trademarks or registered trademarks of SPARC International, Inc. AMD, 
-Opteron, the AMD logo, and the AMD Opteron logo are trademarks or 
-registered trademarks of Advanced Micro Devices. UNIX is a registered 
-trademark of The Open Group. 
diff --git a/docs/reference-manual/src/main/jbake/content/undeploy.adoc b/docs/reference-manual/src/main/jbake/content/undeploy.adoc
deleted file mode 100644
index b844bdc..0000000
--- a/docs/reference-manual/src/main/jbake/content/undeploy.adoc
+++ /dev/null
@@ -1,158 +0,0 @@
-type=page
-status=published
-title=undeploy
-next=unfreeze-transaction-service.html
-prev=stop-local-instance.html
-~~~~~~
-undeploy
-========
-
-[[undeploy-1]][[GSRFM00244]][[undeploy]]
-
-undeploy
---------
-
-removes a deployed component
-
-[[sthref2189]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] undeploy [--help] 
-[--target target] [--droptables={true|false}] 
-[--cascade={false|true}] name
-----
-
-[[sthref2190]]
-
-Description
-
-The `undeploy` subcommand uninstalls a deployed application or module
-and removes it from the repository.
-
-This subcommand is supported in remote mode only.
-
-[[sthref2191]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--cascade`::
-  If set to `true`, deletes all the connection pools and connector
-  resources associated with the resource adapter being undeployed. If
-  set to `false`, the undeploy fails if any pools and resources are
-  still associated with the resource adapter. Then, either those pools
-  and resources must be deleted explicitly, or the option must be set to
-  `true`. If the option is set to `false`, and if there are no pools and
-  resources still associated with the resource adapter, the resource
-  adapter is undeployed. This option is applicable to connectors
-  (resource adapters) and applications. Default value is false.
-`--droptables`::
-  If set to true, drops the tables that the application created by using
-  CMP beans during deployment. If set to false, tables are not dropped.
-  If not specified, the value of the `drop-tables-at-deploy` entry in
-  the `cmp-resource` element of the `glassfish-ejb-jar.xml` file
-  determines whether or not tables are dropped. Default value is true.
-`--target`::
-  Specifies the target from which you are undeploying. Valid values are: +
-  `server`;;
-    Undeploys the component from the default server instance `server`
-    and is the default value.
-  `domain`;;
-    Undeploys the component from the domain.
-  cluster_name;;
-    Undeploys the component from every server instance in the cluster.
-  instance_name;;
-    Undeploys the component from a particular stand-alone server
-    instance.
-
-[[sthref2192]]
-
-Operands
-
-name::
-  Name of the deployed component. +
-  The name can include an optional version identifier, which follows the
-  name and is separated from the name by a colon (`:`). The version
-  identifier must begin with a letter or number. It can contain
-  alphanumeric characters plus underscore (`_`), dash (`-`), and period
-  (`.`) characters. To delete multiple versions, you can use an asterisk
-  (`*`) as a wildcard character. For more information about module and
-  application versions, see "link:../application-deployment-guide/overview.html#GSDPG00324[Module and Application
-  Versions]" in GlassFish Server Open Source Edition Application
-  Deployment Guide.
-
-[[sthref2193]]
-
-Examples
-
-[[GSRFM769]][[sthref2194]]
-
-Example 1   Undeploying an Enterprise Application
-
-This example undeploys an enterprise application named `Cart.ear`.
-
-[source,oac_no_warn]
-----
-asadmin> undeploy Cart
-Command undeploy executed successfully.
-----
-
-[[GSRFM770]][[sthref2195]]
-
-Example 2   Undeploying an Enterprise Bean With Container-Managed
-Persistence (CMP)
-
-This example undeploys a CMP bean named `myejb` and drops the
-corresponding database tables.
-
-[source,oac_no_warn]
-----
-asadmin> undeploy --droptables=true myejb
-Command undeploy executed successfully.
-----
-
-[[GSRFM771]][[sthref2196]]
-
-Example 3   Undeploying a Connector (Resource Adapter)
-
-This example undeploys the connector module named `jdbcra` and performs
-a cascading delete to remove the associated resources and connection
-pools.
-
-[source,oac_no_warn]
-----
-asadmin> undeploy --cascade=true jdbcra
-Command undeploy executed successfully.
-----
-
-[[sthref2197]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref2198]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:deploy.html#deploy-1[`deploy`(1)],
-link:list-components.html#list-components-1[`list-components`(1)],
-link:redeploy.html#redeploy-1[`redeploy`(1)]
-
-link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition Application Deployment
-Guide]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/unfreeze-transaction-service.adoc b/docs/reference-manual/src/main/jbake/content/unfreeze-transaction-service.adoc
deleted file mode 100644
index 08caa06..0000000
--- a/docs/reference-manual/src/main/jbake/content/unfreeze-transaction-service.adoc
+++ /dev/null
@@ -1,100 +0,0 @@
-type=page
-status=published
-title=unfreeze-transaction-service
-next=uninstall-node.html
-prev=undeploy.html
-~~~~~~
-unfreeze-transaction-service
-============================
-
-[[unfreeze-transaction-service-1]][[GSRFM00245]][[unfreeze-transaction-service]]
-
-unfreeze-transaction-service
-----------------------------
-
-resumes all suspended transactions
-
-[[sthref2199]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] unfreeze-transaction-service [--help] 
-[--target target]
-----
-
-[[sthref2200]]
-
-Description
-
-The `unfreeze-transaction-service` subcommand restarts the transaction
-subsystem and resumes all in-flight transactions. Invoke this subcommand
-on an already frozen transaction subsystem. This subcommand is supported
-in remote mode only.
-
-[[sthref2201]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--target`::
-  This option specifies the target on which you are unfreezing the
-  transaction service. Valid values are: +
-  `server`;;
-    Unfreezes the transaction service for the default server instance
-    `server` and is the default value.
-  configuration_name;;
-    Unfreezes the transaction service for all server instances that use
-    the named configuration.
-  cluster_name;;
-    Unfreezes the transaction service for every server instance in the
-    cluster.
-  instance_name;;
-    Unfreezes the transaction service for a particular server instance.
-
-[[sthref2202]]
-
-Examples
-
-[[GSRFM772]][[sthref2203]]
-
-Example 1   Using unfreeze-transaction-service
-
-[source,oac_no_warn]
-----
-% asadmin unfreeze-transaction-service
-Command unfreeze-transaction-service executed successfully
-----
-
-[[sthref2204]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref2205]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:freeze-transaction-service.html#freeze-transaction-service-1[`freeze-transaction-service`(1)],
-link:recover-transactions.html#recover-transactions-1[`recover-transactions`(1)],
-link:rollback-transaction.html#rollback-transaction-1[`rollback-transaction`(1)]
-
-"link:../administration-guide/transactions.html#GSADG00022[Administering Transactions]" in GlassFish Server Open
-Source Edition Administration Guide
-
-"http://docs.oracle.com/javaee/7/tutorial/doc/transactions.html[Transactions]"
-in The Java EE 8 Tutorial
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/uninstall-node-dcom.adoc b/docs/reference-manual/src/main/jbake/content/uninstall-node-dcom.adoc
deleted file mode 100644
index 88b49aa..0000000
--- a/docs/reference-manual/src/main/jbake/content/uninstall-node-dcom.adoc
+++ /dev/null
@@ -1,184 +0,0 @@
-type=page
-status=published
-title=uninstall-node-dcom
-next=uninstall-node-ssh.html
-prev=uninstall-node.html
-~~~~~~
-uninstall-node-dcom
-===================
-
-[[uninstall-node-dcom-1]][[GSRFM775]][[uninstall-node-dcom]]
-
-uninstall-node-dcom
--------------------
-
-uninstalls \{product---name} software from specified DCOM-enabled hosts
-
-[[sthref2215]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] uninstall-node-dcom [--help]
-[--installdir as-install-parent]
-[--windowsuser windows-user] [--windowsdomain windows-domain]
-[--force={false|true}]
-host-list
-----
-
-[[sthref2216]]
-
-Description
-
-The `uninstall-node-dcom` subcommand uninstalls \{product---name}
-software from the hosts that are specified as the operand of the
-subcommand. This subcommand requires the Distributed Component Object
-Model (DCOM) remote protocol to be configured on the host where the
-subcommand is run and on each host where the \{product---name} software
-is being uninstalled.
-
-
-[NOTE]
-=======================================================================
-
-To uninstall \{product---name} software on hosts that use secure shell
-(SSH), use the
-link:uninstall-node-ssh.html#uninstall-node-ssh-1[`uninstall-node-ssh`(1)]
-subcommand.
-
-=======================================================================
-
-
-By default, if any node except the predefined node `localhost-`domain
-resides on any host from which \{product---name} software is being
-uninstalled, the subcommand fails. To uninstall the \{product---name}
-software from a host on which user-defined nodes reside, set the
-`--force` option to `true`. If the `--force` option is `true`, the
-subcommand removes the entire content of the parent of the base
-installation directory.
-
-If a file under the parent of the base installation directory is open,
-the subcommand fails.
-
-If multiple hosts are specified, the configuration of the following
-items must be the same on all hosts:
-
-* Parent of the base installation directory for the \{product---name}
-software
-* Windows user
-* Windows domain
-
-The subcommand does not modify the configuration of the domain
-administration server (DAS).
-
-This subcommand is supported in local mode only.
-
-[[sthref2217]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--installdir`::
-  The absolute path to the parent of the base installation directory
-  where the \{product---name} software is installed on each host, for
-  example, `C:\glassfish3`. +
-  The user that is running this subcommand must have write access to the
-  specified directory. Otherwise, an error occurs. +
-  The specified directory must contain the installation of the
-  \{product---name} software on the host. Otherwise, an error occurs. +
-  The default is the parent of the base installation directory of the
-  \{product---name} software on the host where this subcommand is run.
-`--windowsuser`::
-`-w`::
-  The user on this node's host that is to run the process for connecting
-  to the host through DCOM. The default is the user that is running the
-  DAS process.
-`--windowsdomain`::
-`-d`::
-  The name of the Windows domain that contains the user that the
-  `--windowsuser` option specifies. The default is the name of the host
-  on which the subcommand is run.
-`--force`::
-  Specifies whether the subcommand uninstalls the \{product---name}
-  software from a host even if a user-defined node resides on the host.
-  Possible values are as follows: +
-  `false`;;
-    If a user-defined node resides on a host, the software is not
-    uninstalled and the subcommand fails (default). +
-    If the `--force` option is `false`, the subcommand removes only the
-    \{product---name} software files. Other content if the parent of the
-    base installation directory, such as configuration files, are not
-    removed.
-  `true`;;
-    The subcommand uninstalls the \{product---name} software from the
-    host even if a user-defined node resides on the host. +
-    If the `--force` option is `true`, the subcommand removes the entire
-    content of the parent of the base installation directory.
-
-[[sthref2218]]
-
-Operands
-
-host-list::
-  A space-separated list of the names of the hosts from which the
-  \{product---name} software is to be uninstalled.
-
-[[sthref2219]]
-
-Examples
-
-[[GSRFM776]][[sthref2220]]
-
-Example 1   Uninstalling \{product---name} Software From the Default
-Location
-
-This example uninstalls \{product---name} software on the hosts
-`wpmdl1.example.com` and `wpmdl2.example.com` from the default location.
-
-[source,oac_no_warn]
-----
-asadmin> uninstall-node-dcom wpmdl1 wpmdl2
-Command uninstall-node-dcom executed successfully.
-----
-
-[[GSRFM777]][[sthref2221]]
-
-Example 2   Forcibly Uninstalling \{product---name} Software
-
-This example uninstalls \{product---name} software on the host
-`xkyd.example.com`.
-
-The software is uninstalled even if a user-defined node resides on the
-host. The entire content of the `C:\glassfish3` directory is removed.
-
-[source,oac_no_warn]
-----
-asadmin> uninstall-node-dcom --force --installdir C:\glassfish3 xkyd.example.com
-Command uninstall-node-dcom executed successfully.
-----
-
-[[sthref2222]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref2223]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)],
-link:uninstall-node-ssh.html#uninstall-node-ssh-1[`uninstall-node-ssh`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/uninstall-node-ssh.adoc b/docs/reference-manual/src/main/jbake/content/uninstall-node-ssh.adoc
deleted file mode 100644
index 0b65e90..0000000
--- a/docs/reference-manual/src/main/jbake/content/uninstall-node-ssh.adoc
+++ /dev/null
@@ -1,215 +0,0 @@
-type=page
-status=published
-title=uninstall-node-ssh
-next=unset.html
-prev=uninstall-node-dcom.html
-~~~~~~
-uninstall-node-ssh
-==================
-
-[[uninstall-node-ssh-1]][[GSRFM778]][[uninstall-node-ssh]]
-
-uninstall-node-ssh
-------------------
-
-uninstalls \{product---name} software from specified SSH-enabled hosts
-
-[[sthref2224]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] uninstall-node-ssh [--help]
-[--installdir as-install-parent]
-[--sshport ssh-port] [--sshuser ssh-user]
-[--sshkeyfile ssh-keyfile]
-[--force={false|true}]
-host-list
-----
-
-[[sthref2225]]
-
-Description
-
-The `uninstall-node-ssh` subcommand uninstalls \{product---name}
-software from the hosts that are specified as the operand of the
-subcommand. This subcommand requires secure shell (SSH) to be configured
-on the host where the subcommand is run and on each host where the
-\{product---name} software is being uninstalled.
-
-
-[NOTE]
-=======================================================================
-
-This subcommand is equivalent to the
-link:uninstall-node.html#uninstall-node-1[`uninstall-node`(1)]
-subcommand. To uninstall \{product---name} software from hosts that use
-the Distributed Component Object Model (DCOM) remote protocol, use the
-link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)]
-subcommand.
-
-=======================================================================
-
-
-By default, if any node except the predefined node `localhost-`domain
-resides on any host from which \{product---name} software is being
-uninstalled, the subcommand fails. To uninstall the \{product---name}
-software from a host on which user-defined nodes reside, set the
-`--force` option to `true`. If the `--force` option is `true`, the
-subcommand removes the entire content of the parent of the base
-installation directory.
-
-If a file under the parent of the base installation directory is open,
-the subcommand fails.
-
-If multiple hosts are specified, the configuration of the following
-items must be the same on all hosts:
-
-* Parent of the base installation directory for the \{product---name}
-software
-* SSH port
-* SSH user
-* SSH key file
-
-The subcommand does not modify the configuration of the domain
-administration server (DAS).
-
-This subcommand is supported in local mode only.
-
-[[sthref2226]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--installdir`::
-  The absolute path to the parent of the base installation directory
-  where the \{product---name} software is installed on each host, for
-  example, `/export/glassfish3/`. +
-  The user that is running this subcommand must have write access to the
-  specified directory. Otherwise, an error occurs. +
-  The specified directory must contain the installation of the
-  \{product---name} software on the host. Otherwise, an error occurs. +
-  The default is the parent of the base installation directory of the
-  \{product---name} software on the host where this subcommand is run.
-`--sshport`::
-  The port to use for SSH connections to the host where the
-  \{product---name} software is to be uninstalled. The default is 22.
-`--sshuser`::
-  The user on the host where the \{product---name} software is to be
-  uninstalled that is to run the process for connecting through SSH to
-  the host. The default is the user that is running this subcommand. To
-  ensure that the DAS can read this user's SSH private key file, specify
-  the user that is running the DAS process.
-`--sshkeyfile`::
-  The absolute path to the SSH private key file for user that the
-  `--sshuser` option specifies. This file is used for authentication to
-  the `sshd` daemon on the host. +
-  The user that is running this subcommand must be able to reach the
-  path to the key file and read the key file. +
-  The default is a key file in the user's `.ssh` directory. If multiple
-  key files are found, the subcommand uses the following order of
-  preference: +
-  1.  `id_rsa`
-  2.  `id_dsa`
-  3.  `identity`
-`--force`::
-  Specifies whether the subcommand uninstalls the \{product---name}
-  software from a host even if a user-defined node resides on the host.
-  Possible values are as follows: +
-  `false`;;
-    If a user-defined node resides on a host, the software is not
-    uninstalled and the subcommand fails (default). +
-    If the `--force` option is `false`, the subcommand removes only the
-    \{product---name} software files. Other content if the parent of the
-    base installation directory, such as configuration files, are not
-    removed.
-  `true`;;
-    The subcommand uninstalls the \{product---name} software from the
-    host even if a user-defined node resides on the host. +
-    If the `--force` option is `true`, the subcommand removes the entire
-    content of the parent of the base installation directory.
-
-[[sthref2227]]
-
-Operands
-
-host-list::
-  A space-separated list of the names of the hosts from which the
-  \{product---name} software is to be uninstalled.
-
-[[sthref2228]]
-
-Examples
-
-[[GSRFM779]][[sthref2229]]
-
-Example 1   Uninstalling \{product---name} Software From the Default
-Location
-
-This example uninstalls \{product---name} software on the hosts
-`sj03.example.com` and `sj04.example.com` from the default location.
-
-[source,oac_no_warn]
-----
-asadmin> uninstall-node-ssh sj03 sj04
-Successfully connected to gfuser@sj03.example.com using keyfile /home/gfuser
-/.ssh/id_rsa
-Successfully connected to gfuser@sj04.example.com using keyfile /home/gfuser
-/.ssh/id_rsa
-Command uninstall-node-ssh executed successfully.
-----
-
-[[GSRFM780]][[sthref2230]]
-
-Example 2   Forcibly Uninstalling \{product---name} Software
-
-This example uninstalls \{product---name} software on the host
-`sj02.example.com`.
-
-The software is uninstalled even if a user-defined node resides on the
-host. The entire content of the `/export/glassfish3` directory is
-removed.
-
-Some lines of output are omitted from this example for readability.
-
-[source,oac_no_warn]
-----
-asadmin> uninstall-node-ssh --force --installdir /export/glassfish3 sj02.example.com
-Successfully connected to gfuser@sj02.example.com using keyfile /home/gfuser
-/.ssh/id_rsa
-Force removing file /export/glassfish3/mq/lib/help/en/add_overrides.htm
-Force removing file /export/glassfish3/mq/lib/help/en/add_connfact.htm
-...
-Force removing directory /export/glassfish3/glassfish/lib/appclient
-Force removing directory /export/glassfish3/glassfish/lib
-Force removing directory /export/glassfish3/glassfish
-Command uninstall-node-ssh executed successfully.
-----
-
-[[sthref2231]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref2232]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:install-node.html#install-node-1[`install-node`(1)],
-link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)],
-link:uninstall-node.html#uninstall-node-1[`uninstall-node`(1)],
-link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/uninstall-node.adoc b/docs/reference-manual/src/main/jbake/content/uninstall-node.adoc
deleted file mode 100644
index 37e3fc5..0000000
--- a/docs/reference-manual/src/main/jbake/content/uninstall-node.adoc
+++ /dev/null
@@ -1,216 +0,0 @@
-type=page
-status=published
-title=uninstall-node
-next=uninstall-node-dcom.html
-prev=unfreeze-transaction-service.html
-~~~~~~
-uninstall-node
-==============
-
-[[uninstall-node-1]][[GSRFM00246]][[uninstall-node]]
-
-uninstall-node
---------------
-
-uninstalls \{product---name} software from specified hosts
-
-[[sthref2206]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] uninstall-node [--help]
-[--installdir as-install-parent]
-[--sshport ssh-port] [--sshuser ssh-user]
-[--sshkeyfile ssh-keyfile]
-[--force={false|true}]
-host-list
-----
-
-[[sthref2207]]
-
-Description
-
-The `uninstall-node` subcommand uninstalls \{product---name} software
-from the hosts that are specified as the operand of the subcommand. This
-subcommand requires secure shell (SSH) to be configured on the host
-where the subcommand is run and on each host where the \{product---name}
-software is being uninstalled.
-
-
-[NOTE]
-=======================================================================
-
-This subcommand is equivalent to the
-link:uninstall-node-ssh.html#uninstall-node-ssh-1[`uninstall-node-ssh`(1)]
-subcommand. To uninstall \{product---name} software on hosts that use
-the Distributed Component Object Model (DCOM) remote protocol, use the
-link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)]
-subcommand.
-
-=======================================================================
-
-
-By default, if any node except the predefined node `localhost-`domain
-resides on any host from which \{product---name} software is being
-uninstalled, the subcommand fails. To uninstall the \{product---name}
-software from a host on which user-defined nodes reside, set the
-`--force` option to `true`. If the `--force` option is `true`, the
-subcommand removes the entire content of the parent of the base
-installation directory.
-
-If a file under the parent of the base installation directory is open,
-the subcommand fails.
-
-If multiple hosts are specified, the configuration of the following
-items must be the same on all hosts:
-
-* Parent of the base installation directory for the \{product---name}
-software
-* SSH port
-* SSH user
-* SSH key file
-
-The subcommand does not modify the configuration of the domain
-administration server (DAS).
-
-This subcommand is supported in local mode only.
-
-[[sthref2208]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--installdir`::
-  The absolute path to the parent of the base installation directory
-  where the \{product---name} software is installed on each host, for
-  example, `/export/glassfish3/`. +
-  The user that is running this subcommand must have write access to the
-  specified directory. Otherwise, an error occurs. +
-  The specified directory must contain the installation of the
-  \{product---name} software on the host. Otherwise, an error occurs. +
-  The default is the parent of the base installation directory of the
-  \{product---name} software on the host where this subcommand is run.
-`--sshport`::
-  The port to use for SSH connections to the host where the
-  \{product---name} software is to be uninstalled. The default is 22.
-`--sshuser`::
-  The user on the host where the \{product---name} software is to be
-  uninstalled that is to run the process for connecting through SSH to
-  the host. The default is the user that is running this subcommand. To
-  ensure that the DAS can read this user's SSH private key file, specify
-  the user that is running the DAS process.
-`--sshkeyfile`::
-  The absolute path to the SSH private key file for user that the
-  `--sshuser` option specifies. This file is used for authentication to
-  the `sshd` daemon on the host. +
-  The user that is running this subcommand must be able to reach the
-  path to the key file and read the key file. +
-  The default is a key file in the user's `.ssh` directory. If multiple
-  key files are found, the subcommand uses the following order of
-  preference: +
-  1.  `id_rsa`
-  2.  `id_dsa`
-  3.  `identity`
-`--force`::
-  Specifies whether the subcommand uninstalls the \{product---name}
-  software from a host even if a user-defined node resides on the host.
-  Possible values are as follows: +
-  `false`;;
-    If a user-defined node resides on a host, the software is not
-    uninstalled and the subcommand fails (default). +
-    If the `--force` option is `false`, the subcommand removes only the
-    \{product---name} software files. Other content if the parent of the
-    base installation directory, such as configuration files, are not
-    removed.
-  `true`;;
-    The subcommand uninstalls the \{product---name} software from the
-    host even if a user-defined node resides on the host. +
-    If the `--force` option is `true`, the subcommand removes the entire
-    content of the parent of the base installation directory.
-
-[[sthref2209]]
-
-Operands
-
-host-list::
-  A space-separated list of the names of the hosts from which the
-  \{product---name} software is to be uninstalled.
-
-[[sthref2210]]
-
-Examples
-
-[[GSRFM773]][[sthref2211]]
-
-Example 1   Uninstalling \{product---name} Software From the Default
-Location
-
-This example uninstalls \{product---name} software on the hosts
-`sj03.example.com` and `sj04.example.com` from the default location.
-
-[source,oac_no_warn]
-----
-asadmin> uninstall-node sj03 sj04
-Successfully connected to gfuser@sj03.example.com using keyfile /home/gfuser
-/.ssh/id_rsa
-Successfully connected to gfuser@sj04.example.com using keyfile /home/gfuser
-/.ssh/id_rsa
-Command uninstall-node executed successfully.
-----
-
-[[GSRFM774]][[sthref2212]]
-
-Example 2   Forcibly Uninstalling \{product---name} Software
-
-This example uninstalls \{product---name} software on the host
-`sj02.example.com`.
-
-The software is uninstalled even if a user-defined node resides on the
-host. The entire content of the `/export/glassfish3` directory is
-removed.
-
-Some lines of output are omitted from this example for readability.
-
-[source,oac_no_warn]
-----
-asadmin> uninstall-node --force --installdir /export/glassfish3 sj02.example.com
-Successfully connected to gfuser@sj02.example.com using keyfile /home/gfuser
-/.ssh/id_rsa
-Force removing file /export/glassfish3/mq/lib/help/en/add_overrides.htm
-Force removing file /export/glassfish3/mq/lib/help/en/add_connfact.htm
-...
-Force removing directory /export/glassfish3/glassfish/lib/appclient
-Force removing directory /export/glassfish3/glassfish/lib
-Force removing directory /export/glassfish3/glassfish
-Command uninstall-node executed successfully.
-----
-
-[[sthref2213]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref2214]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:install-node.html#install-node-1[`install-node`(1)],
-link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)],
-link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)],
-link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)],
-link:uninstall-node-ssh.html#uninstall-node-ssh-1[`uninstall-node-ssh`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/unset-web-context-param.adoc b/docs/reference-manual/src/main/jbake/content/unset-web-context-param.adoc
deleted file mode 100644
index 3f2c669..0000000
--- a/docs/reference-manual/src/main/jbake/content/unset-web-context-param.adoc
+++ /dev/null
@@ -1,154 +0,0 @@
-type=page
-status=published
-title=unset-web-context-param
-next=unset-web-env-entry.html
-prev=unset.html
-~~~~~~
-unset-web-context-param
-=======================
-
-[[unset-web-context-param-1]][[GSRFM00248]][[unset-web-context-param]]
-
-unset-web-context-param
------------------------
-
-unsets a servlet context-initialization parameter of a deployed web
-application or module
-
-[[sthref2242]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] unset-web-context-param [--help] 
---name=context-param-name application-name[/module]
-----
-
-[[sthref2243]]
-
-Description
-
-The `unset-web-context-param` subcommand unsets a servlet
-context-initialization parameter of one of the following items:
-
-* A deployed web application
-* A web module in a deployed Java Platform, Enterprise Edition (Java EE)
-application
-
-When a parameter is unset, its value reverts to the value, if any, that
-is set in the application's deployment descriptor.
-
-The application must already be deployed. Otherwise, an error occurs.
-
-The parameter must have previously been set by using the
-`set-web-context-param` subcommand. Otherwise, an error occurs.
-
-
-[NOTE]
-=======================================================================
-
-Do not use the `unset-web-context-param` subcommand to change the value
-of a servlet context-initialization parameter that is set in an
-application's deployment descriptor. Instead, use the
-link:set-web-context-param.html#set-web-context-param-1[`set-web-context-param`(1)]
-subcommand for this purpose.
-
-=======================================================================
-
-
-This subcommand enables you to change the configuration of a deployed
-application without the need to modify the application's deployment
-descriptors and repackage and redeploy the application.
-
-This subcommand is supported in remote mode only.
-
-[[sthref2244]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--name`::
-  The name of the servlet context-initialization parameter that is to be
-  unset. This parameter must have previously been set by using the
-  `set-web-context-param` subcommand. Otherwise, an error occurs.
-
-[[sthref2245]]
-
-Operands
-
-application-name::
-  The name of the application. This name can be obtained from the
-  Administration Console or by using the
-  link:list-applications.html#list-applications-1[`list-applications`(1)]
-  subcommand. +
-  The application must already be deployed. Otherwise, an error occurs.
-module::
-  The relative path to the module within the application's enterprise
-  archive (EAR) file. The path to the module is specified in the
-  `module` element of the application's `application.xml` file. +
-  module is required only if the servlet context-initialization
-  parameter applies to a web module of a Java EE application. If
-  specified, module must follow application-name, separated by a slash
-  (/). +
-  For example, the `application.xml` file for the `myApp` application
-  might specify the following web module: +
-[source,oac_no_warn]
-----
-<module>
-    <web>
-        <web-uri>myWebModule.war</web-uri>
-    </web>
-</module> 
-----
-::
-  The module would be specified as the operand of this command as
-  `myApp/myWebModule.war`.
-
-[[sthref2246]]
-
-Examples
-
-[[GSRFM783]][[sthref2247]]
-
-Example 1   Unsetting a Servlet Context-Initialization Parameter for a
-Web Application
-
-This example unsets the servlet context-initialization parameter
-`javax.faces.STATE_SAVING_METHOD` of the web application `basic-ezcomp`.
-The parameter reverts to the value, if any, that is defined in the
-application's deployment descriptor.
-
-[source,oac_no_warn]
-----
-asadmin> unset-web-context-param 
---name=javax.faces.STATE_SAVING_METHOD basic-ezcomp
-
-Command unset-web-context-param executed successfully.
-----
-
-[[sthref2248]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref2249]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:list-applications.html#list-applications-1[`list-applications`(1)],
-link:list-web-context-param.html#list-web-context-param-1[`list-web-context-param`(1)],
-link:set-web-context-param.html#set-web-context-param-1[`set-web-context-param`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/unset-web-env-entry.adoc b/docs/reference-manual/src/main/jbake/content/unset-web-env-entry.adoc
deleted file mode 100644
index e1866a3..0000000
--- a/docs/reference-manual/src/main/jbake/content/unset-web-env-entry.adoc
+++ /dev/null
@@ -1,151 +0,0 @@
-type=page
-status=published
-title=unset-web-env-entry
-next=update-connector-security-map.html
-prev=unset-web-context-param.html
-~~~~~~
-unset-web-env-entry
-===================
-
-[[unset-web-env-entry-1]][[GSRFM00249]][[unset-web-env-entry]]
-
-unset-web-env-entry
--------------------
-
-unsets an environment entry for a deployed web application or module
-
-[[sthref2250]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] unset-web-env-entry [--help] 
---name=env-entry-name application-name[/module]
-----
-
-[[sthref2251]]
-
-Description
-
-The `unset-web-env-entry` subcommand unsets an environment entry for one
-of the following items:
-
-* A deployed web application
-* A web module in a deployed Java Platform, Enterprise Edition (Java EE)
-application
-
-When an entry is unset, its value reverts to the value, if any, that is
-set in the application's deployment descriptor.
-
-The application must already be deployed. Otherwise, an error occurs.
-
-The entry must have previously been set by using the
-link:set-web-env-entry.html#set-web-env-entry-1[`set-web-env-entry`(1)]
-subcommand. Otherwise, an error occurs.
-
-
-[NOTE]
-=======================================================================
-
-Do not use the `unset-web-env-entry` subcommand to change the value of
-an environment entry that is set in an application's deployment
-descriptor. Instead, use the `set-web-env-entry` subcommand for this
-purpose.
-
-=======================================================================
-
-
-This subcommand enables you to change the configuration of a deployed
-application without the need to modify the application's deployment
-descriptors and repackage and redeploy the application.
-
-This subcommand is supported in remote mode only.
-
-[[sthref2252]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--name`::
-  The name of the environment entry that is to be unset. The name is a
-  JNDI name relative to the `java:comp/env` context. The name must be
-  unique within a deployment component. This entry must have previously
-  been set by using the `set-web-env-entry` subcommand. Otherwise, an
-  error occurs.
-
-[[sthref2253]]
-
-Operands
-
-application-name::
-  The name of the application. This name can be obtained from the
-  Administration Console or by using the
-  link:list-applications.html#list-applications-1[`list-applications`(1)]
-  subcommand. +
-  The application must already be deployed. Otherwise, an error occurs.
-module::
-  The relative path to the module within the application's enterprise
-  archive (EAR) file. The path to the module is specified in the
-  `module` element of the application's `application.xml` file. +
-  module is required only if the environment entry applies to a web
-  module of a Java EE application. If specified, module must follow
-  application-name, separated by a slash (/). +
-  For example, the `application.xml` file for the `myApp` application
-  might specify the following web module: +
-[source,oac_no_warn]
-----
-<module>
-    <web>
-        <web-uri>myWebModule.war</web-uri>
-    </web>
-</module> 
-----
-::
-  The module would be specified as the operand of this command as
-  `myApp/myWebModule.war`.
-
-[[sthref2254]]
-
-Examples
-
-[[GSRFM784]][[sthref2255]]
-
-Example 1   Unsetting an Environment Entry for a Web Application
-
-This example unsets the environment entry `Hello User` of the web
-application `hello`. The entry reverts to the value, if any, that is
-defined in the application's deployment descriptor.
-
-[source,oac_no_warn]
-----
-asadmin> unset-web-env-entry --name="Hello User" hello
-
-Command unset-web-env-entry executed successfully.
-----
-
-[[sthref2256]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref2257]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:list-applications.html#list-applications-1[`list-applications`(1)],
-link:list-web-env-entry.html#list-web-env-entry-1[`list-web-env-entry`(1)],
-link:set-web-env-entry.html#set-web-env-entry-1[`set-web-env-entry`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/unset.adoc b/docs/reference-manual/src/main/jbake/content/unset.adoc
deleted file mode 100644
index 950527a..0000000
--- a/docs/reference-manual/src/main/jbake/content/unset.adoc
+++ /dev/null
@@ -1,110 +0,0 @@
-type=page
-status=published
-title=unset
-next=unset-web-context-param.html
-prev=uninstall-node-ssh.html
-~~~~~~
-unset
-=====
-
-[[unset-1]][[GSRFM00247]][[unset]]
-
-unset
------
-
-removes one or more variables from the multimode environment
-
-[[sthref2233]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] unset [--help] 
-variable-list
-----
-
-[[sthref2234]]
-
-Description
-
-The `unset` subcommand removes one or more environment variables that
-are set for the multimode environment. After removal, the variables and
-their associated values no longer apply to the multimode environment.
-
-To list the environment variables that are set, use the `export`
-subcommand without options. If the `export` subcommand lists no
-environment variables, no environment variables are set.
-
-This subcommand is supported in local mode only.
-
-[[sthref2235]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref2236]]
-
-Operands
-
-variable-list::
-  A space-separated list of the environment variables to remove.
-
-[[sthref2237]]
-
-Examples
-
-[[GSRFM781]][[sthref2238]]
-
-Example 1   Listing the Environment Variables That Are Set
-
-This example uses the `export` subcommand to list the environment
-variables that have been set.
-
-[source,oac_no_warn]
-----
-asadmin> export
-AS_ADMIN_USER = admin
-AS_ADMIN_HOST = bluestar
-AS_ADMIN_PREFIX = server1.jms-service
-AS_ADMIN_PORT = 8000
-Command export executed successfully
-----
-
-[[GSRFM782]][[sthref2239]]
-
-Example 2   Removing an Environment Variable
-
-This example removes the `AS_ADMIN_PREFIX` environment variable.
-
-[source,oac_no_warn]
-----
-asadmin> unset AS_ADMIN_PREFIX
-Command unset executed successfully
-----
-
-[[sthref2240]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref2241]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:export.html#export-1[`export`(1)],
-link:multimode.html#multimode-1[`multimode`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/update-connector-security-map.adoc b/docs/reference-manual/src/main/jbake/content/update-connector-security-map.adoc
deleted file mode 100644
index ccccbce..0000000
--- a/docs/reference-manual/src/main/jbake/content/update-connector-security-map.adoc
+++ /dev/null
@@ -1,118 +0,0 @@
-type=page
-status=published
-title=update-connector-security-map
-next=update-connector-work-security-map.html
-prev=unset-web-env-entry.html
-~~~~~~
-update-connector-security-map
-=============================
-
-[[update-connector-security-map-1]][[GSRFM00252]][[update-connector-security-map]]
-
-update-connector-security-map
------------------------------
-
-modifies a security map for the specified connector connection pool
-
-[[sthref2258]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] update-connector-security-map [--help]
---poolname connector_connection_pool_name
-[--addprincipals principal_name1[,principal_name2]*] 
-[--addusergroups user_group1[,user_group2]*]
-[--removeprincipals principal_name1[,principal_name2]*]
-[--removeusergroups user_group1[,user_group2]*]
-[--mappedusername username]
-mapname
-----
-
-[[sthref2259]]
-
-Description
-
-The `update-connector-security-map` subcommand modifies a security map
-for the specified connector connection pool.
-
-For this subcommand to succeed, you must have first created a connector
-connection pool using the `create-connector-connection-pool` subcommand.
-
-This subcommand is supported in remote mode only.
-
-[[sthref2260]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--poolname`::
-  Specifies the name of the connector connection pool to which the
-  security map that is to be updated belongs.
-`--addprincipals`::
-  Specifies a comma-separated list of EIS-specific principals to be
-  added. Use either the `--addprincipals` or `--addusergroups` options,
-  but not both in the same command.
-`--addusergroups`::
-  Specifies a comma-separated list of EIS user groups to be added. Use
-  either the `--addprincipals` or `--addusergroups` options, but not
-  both in the same command.
-`--removeprincipals`::
-  Specifies a comma-separated list of EIS-specific principals to be
-  removed.
-`--removeusergroups`::
-  Specifies a comma-separated list of EIS user groups to be removed.
-`--mappedusername`::
-  Specifies the EIS username.
-
-[[sthref2261]]
-
-Operands
-
-mapname::
-  The name of the security map to be updated.
-
-[[sthref2262]]
-
-Examples
-
-[[GSRFM785]][[sthref2263]]
-
-Example 1   Updating a Connector Security Map
-
-This example adds principals to the existing security map named
-`securityMap1`.
-
-[source,oac_no_warn]
-----
-asadmin> update-connector-security-map --poolname connector-pool1 
---addprincipals principal1,principal2 securityMap1
-Command update-connector-security-map executed successfully
-----
-
-[[sthref2264]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref2265]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-connector-security-map.html#create-connector-security-map-1[`create-connector-security-map`(1)],
-link:delete-connector-security-map.html#delete-connector-security-map-1[`delete-connector-security-map`(1)],
-link:list-connector-security-maps.html#list-connector-security-maps-1[`list-connector-security-maps`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/update-connector-work-security-map.adoc b/docs/reference-manual/src/main/jbake/content/update-connector-work-security-map.adoc
deleted file mode 100644
index 7a2f47e..0000000
--- a/docs/reference-manual/src/main/jbake/content/update-connector-work-security-map.adoc
+++ /dev/null
@@ -1,111 +0,0 @@
-type=page
-status=published
-title=update-connector-work-security-map
-next=update-file-user.html
-prev=update-connector-security-map.html
-~~~~~~
-update-connector-work-security-map
-==================================
-
-[[update-connector-work-security-map-1]][[GSRFM00253]][[update-connector-work-security-map]]
-
-update-connector-work-security-map
-----------------------------------
-
-modifies a work security map for the specified resource adapter
-
-[[sthref2266]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] update-connector-work-security-map [--help] 
---raname raname
-[--addprincipals eis-principal1=server-principal1[, eis-principal2=server-principal2]*] 
-[--addgroups eis-group1=server-group1[, eis-group2=server-group2]*]
-[--removeprincipals eis-principal1[,eis-principal2]*]
-[--removegroups eis-group1[, eis-group2]*]
-mapname
-----
-
-[[sthref2267]]
-
-Description
-
-The `update-connector-work-security-map` subcommand modifies a security
-map for the specified resource adapter.
-
-This subcommand is supported in remote mode only.
-
-[[sthref2268]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--addgroups`::
-  Specifies a comma-separated list of EIS groups to be added. Use either
-  the `--addprincipals` option or the `--addgroups` option, but not
-  both.
-`--addprincipals`::
-  Specifies a comma-separated list of EIS-specific principals to be
-  added. Use either the `--addprincipals` option or the `--addgroups`
-  option, but not both.
-`--removegroups`::
-  Specifies a comma-separated list of EIS groups to be removed.
-`--removeprincipals`::
-  Specifies a comma-separated list of EIS-specific principals to be
-  removed.
-`--raname`::
-  Indicates the connector module name with which the work security map
-  is associated.
-
-[[sthref2269]]
-
-Operands
-
-mapname::
-  The name of the work security map to be updated.
-
-[[sthref2270]]
-
-Examples
-
-[[GSRFM786]][[sthref2271]]
-
-Example 1   Updating a Connector Work Security Map
-
-This example updates `workSecurityMap2` by removing `eis-group-2`.
-
-[source,oac_no_warn]
-----
-asadmin> update-connector-work-security-map
---raname my-resource-adapter --removegroups eis-group-2 workSecurityMap2
-Command update-connector-work-security-map executed successfully.
-----
-
-[[sthref2272]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref2273]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-connector-work-security-map.html#create-connector-work-security-map-1[`create-connector-work-security-map`(1)],
-link:delete-connector-work-security-map.html#delete-connector-work-security-map-1[`delete-connector-work-security-map`(1)],
-link:list-connector-work-security-maps.html#list-connector-work-security-maps-1[`list-connector-work-security-maps`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/update-file-user.adoc b/docs/reference-manual/src/main/jbake/content/update-file-user.adoc
deleted file mode 100644
index 8f98b34..0000000
--- a/docs/reference-manual/src/main/jbake/content/update-file-user.adoc
+++ /dev/null
@@ -1,113 +0,0 @@
-type=page
-status=published
-title=update-file-user
-next=update-node-config.html
-prev=update-connector-work-security-map.html
-~~~~~~
-update-file-user
-================
-
-[[update-file-user-1]][[GSRFM00254]][[update-file-user]]
-
-update-file-user
-----------------
-
-updates a current file user as specified
-
-[[sthref2274]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] update-file-user [--help] 
-[--groups user_groups[:user_groups]*] 
-[--target target 
-[--authrealmname authrealm_name] 
-username
-----
-
-[[sthref2275]]
-
-Description
-
-Th `update-file-user` subcommand updates an existing entry in the
-keyfile using the specified user name, password and groups. Multiple
-groups can be entered by separating them, with a colon (:).
-
-If a new password is not provided, this subcommand fails if secure
-administration is enabled and the user being updated is an
-administrative user.
-
-[[sthref2276]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--groups`::
-  This is the name of the group to which the file user belongs.
-`--authrealmname`::
-  Name of the authentication realm where the user to be updated can be
-  found.
-`--target`::
-  This option helps specify the target on which you are updating a file
-  user. Valid values are: +
-  `server`;;
-    Updates the file user in the default server instance. This is the
-    default value.
-  cluster_name;;
-    Updates the file user on every server instance in the cluster.
-  instance_name;;
-    Updates the file user on a specified sever instance.
-
-[[sthref2277]]
-
-Operands
-
-username::
-  This is the name of the file user to be updated.
-
-[[sthref2278]]
-
-Examples
-
-[[GSRFM787]][[sthref2279]]
-
-Example 1   Updating a User's Information in a File Realm
-
-The following example updates information for a file realm user named
-`sample_user`.
-
-[source,oac_no_warn]
-----
-asadmin> update-file-user 
---groups staff:manager:engineer sample_user
-Command update-file-user executed successfully
-----
-
-[[sthref2280]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref2281]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-file-user.html#create-file-user-1[`create-file-user`(1)],
-link:delete-file-user.html#delete-file-user-1[`delete-file-user`(1)],
-link:list-file-groups.html#list-file-groups-1[`list-file-groups`(1)],
-link:list-file-users.html#list-file-users-1[`list-file-users`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/update-node-config.adoc b/docs/reference-manual/src/main/jbake/content/update-node-config.adoc
deleted file mode 100644
index 4890b82..0000000
--- a/docs/reference-manual/src/main/jbake/content/update-node-config.adoc
+++ /dev/null
@@ -1,132 +0,0 @@
-type=page
-status=published
-title=update-node-config
-next=update-node-ssh.html
-prev=update-file-user.html
-~~~~~~
-update-node-config
-==================
-
-[[update-node-config-1]][[GSRFM00255]][[update-node-config]]
-
-update-node-config
-------------------
-
-updates the configuration data of a node
-
-[[sthref2282]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] update-node-config [--help]
-[--nodehost node-host] 
-[--installdir as-install-parent] [--nodedir node-dir] 
-node-name
-----
-
-[[sthref2283]]
-
-Description
-
-The `update-node-config` subcommand updates the configuration data of a
-node.
-
-This subcommand can update any node, regardless of whether the node is
-enabled for remote communication. If a node that is enabled for remote
-communication is updated, the node is not enabled for remote
-communication after the update.
-
-Options of this subcommand specify the new values of the node's
-configuration data. The default for these options is to leave the
-existing value unchanged.
-
-This subcommand does not require the Distributed Component Object Model
-(DCOM) remote protocol or secure shell (SSH) to be configured to update
-the node. You may run this subcommand from any host that can contact the
-DAS.
-
-This subcommand is supported in remote mode only.
-
-[[sthref2284]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--nodehost`::
-  The name of the host that the node is to represent after the node is
-  updated.
-`--installdir`::
-  The full path to the parent of the base installation directory of the
-  \{product---name} software on the host, for example,
-  `/export/glassfish3`.
-`--nodedir`::
-  The path to the directory that is to contain \{product---name}
-  instances that are created on the node. If a relative path is
-  specified, the path is relative to the as-install directory, where
-  as-install is the base installation directory of the \{product---name}
-  software on the host.
-
-[[sthref2285]]
-
-Operands
-
-node-name::
-  The name of the node to update. The node must exist. Otherwise, an
-  error occurs.
-
-[[sthref2286]]
-
-Examples
-
-[[GSRFM788]][[sthref2287]]
-
-Example 1   Updating the Host That a Node Represents
-
-This example updates the host that the node `sj04` represents to
-`hsj04`.
-
-[source,oac_no_warn]
-----
-asadmin> update-node-config --nodehost hsj04 sj04
-Command update-node-config executed successfully.
-----
-
-[[sthref2288]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref2289]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-node-config.html#create-node-config-1[`create-node-config`(1)],
-link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
-link:create-node-ssh.html#create-node-ssh-1[`create-node-ssh`(1)],
-link:delete-node-config.html#delete-node-config-1[`delete-node-config`(1)],
-link:delete-node-dcom.html#delete-node-dcom-1[`delete-node-dcom`(1)],
-link:delete-node-ssh.html#delete-node-ssh-1[`delete-node-ssh`(1)],
-link:install-node.html#install-node-1[`install-node`(1)],
-link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)],
-link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)],
-link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
-link:uninstall-node.html#uninstall-node-1[`uninstall-node`(1)],
-link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)],
-link:uninstall-node-ssh.html#uninstall-node-ssh-1[`uninstall-node-ssh`(1)],
-link:update-node-ssh.html#update-node-dcom-1[`update-node-dcom`(1)],
-link:update-node-ssh001.html#update-node-ssh-1[`update-node-ssh`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/update-node-ssh.adoc b/docs/reference-manual/src/main/jbake/content/update-node-ssh.adoc
deleted file mode 100644
index 6663c35..0000000
--- a/docs/reference-manual/src/main/jbake/content/update-node-ssh.adoc
+++ /dev/null
@@ -1,191 +0,0 @@
-type=page
-status=published
-title=update-node-dcom
-next=update-node-ssh001.html
-prev=update-node-config.html
-~~~~~~
-update-node-dcom
-================
-
-[[update-node-dcom-1]][[GSRFM789]][[update-node-dcom]]
-
-update-node-dcom
-----------------
-
-updates the configuration data of a node
-
-[[sthref2290]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] update-node-dcom [--help]
-[--nodehost node-host]
-[--installdir as-install-parent] [--nodedir node-dir] 
-[--windowsuser windows-user] [--windowsdomain windows-domain]
-[--force={false|true}]
-node-name
-----
-
-[[sthref2291]]
-
-Description
-
-The `update-node-dcom` subcommand updates the configuration data of a
-node. This subcommand requires the Distributed Component Object Model
-(DCOM) remote protocol to be configured on the host where the domain
-administration server (DAS) is running and on the host where the node
-resides. The DCOM protocol is available only on Windows systems.You may
-run this subcommand from any host that can contact the DAS.
-
-This subcommand can update any node, regardless of whether the node is
-enabled for remote communication. If the node is not enabled for remote
-communication, the subcommand enables DCOM communication for the node
-and updates any other specified configuration data.
-
-Options of this subcommand specify the new values of the node's
-configuration data. The default for most options is to leave the
-existing value unchanged. However, if this subcommand is run to enable
-DCOM communication for a node, default values are applied if any of the
-following options is omitted:
-
-* `--windowsuser`
-* `--windowsdomain`
-
-By default, the subcommand fails and the node is not updated if the DAS
-cannot contact the node's host through DCOM. To force the node to be
-updated even if the host cannot be contacted through DCOM, set the
-`--force` option to `true`.
-
-This subcommand is supported in remote mode only.
-
-[[sthref2292]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--nodehost`::
-  The name of the host that the node is to represent after the node is
-  updated.
-`--installdir`::
-  The full path to the parent of the base installation directory of the
-  \{product---name} software on the host, for example,
-  `/export/glassfish3/`.
-`--nodedir`::
-  The path to the directory that is to contain \{product---name}
-  instances that are created on the node. If a relative path is
-  specified, the path is relative to the as-install directory, where
-  as-install is the base installation directory of the \{product---name}
-  software on the host.
-`--windowsuser`::
-`-w`::
-  The user on this node's host that is to run the process for connecting
-  to the host through DCOM. The default depends on whether this
-  subcommand is run to enable DCOM communication for the node: +
-  * If the node is already enabled for communication over DCOM, the
-  default is to leave the user unchanged.
-  * If this subcommand is run to enable DCOM communication for the node,
-  the default is the user that is running the DAS process. +
-  If the `--nodehost` option is set to `localhost`, the `--windowsuser`
-  option is ignored.
-`--windowsdomain`::
-`-d`::
-  The name of the Windows domain that contains the user that the
-  `--windowsuser` option specifies. The default depends on whether this
-  subcommand is run to enable DCOM communication for the node: +
-  * If the node is already enabled for communication over DCOM, the
-  default is to leave the domain unchanged.
-  * If this subcommand is run to enable DCOM communication for the node,
-  the default is the name of the host on which the subcommand is run.
-`--force`::
-  Specifies whether the node is updated even if validation of the node's
-  parameters fails. To validate a node's parameters, the DAS must be
-  able to contact the node's host through DCOM. Possible values are as
-  follows: +
-  `false`;;
-    The node is not updated if validation of the node's parameters fails
-    (default).
-  `true`;;
-    The node is updated even if validation of the node's parameters
-    fails.
-
-[[sthref2293]]
-
-Operands
-
-node-name::
-  The name of the node to update. The node must exist. Otherwise, an
-  error occurs.
-
-[[sthref2294]]
-
-Examples
-
-[[GSRFM790]][[sthref2295]]
-
-Example 1   Updating the Host That a Node Represents
-
-This example updates the host that the node `wpmdl1` represents to
-`wj01`.
-
-[source,oac_no_warn]
-----
-asadmin> update-node-dcom --nodehost wj01 wpmdl1
-Command update-node-dcom executed successfully.
-----
-
-[[GSRFM791]][[sthref2296]]
-
-Example 2   Forcing the Update of a Node
-
-This example forces the update of the node `xkyd` to enable the node to
-communicate over DCOM.
-
-[source,oac_no_warn]
-----
-asadmin> update-node-dcom --force xkyd
-Warning: some parameters appear to be invalid.
-Could not find a remote Glassfish installation on host: xkyd.example.com at
-C:\glassfish3\glassfish
-Continuing with node update due to use of --force.
-Command update-node-dcom executed successfully.
-----
-
-[[sthref2297]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref2298]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-node-config.html#create-node-config-1[`create-node-config`(1)],
-link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
-link:create-node-ssh.html#create-node-ssh-1[`create-node-ssh`(1)],
-link:delete-node-config.html#delete-node-config-1[`delete-node-config`(1)],
-link:delete-node-dcom.html#delete-node-dcom-1[`delete-node-dcom`(1)],
-link:delete-node-ssh.html#delete-node-ssh-1[`delete-node-ssh`(1)],
-link:install-node.html#install-node-1[`install-node`(1)],
-link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)],
-link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)],
-link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
-link:uninstall-node.html#uninstall-node-1[`uninstall-node`(1)],
-link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)],
-link:uninstall-node-ssh.html#uninstall-node-ssh-1[`uninstall-node-ssh`(1)],
-link:update-node-config.html#update-node-config-1[`update-node-config`(1)],
-link:update-node-ssh001.html#update-node-ssh-1[`update-node-ssh`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/update-node-ssh001.adoc b/docs/reference-manual/src/main/jbake/content/update-node-ssh001.adoc
deleted file mode 100644
index f381d73..0000000
--- a/docs/reference-manual/src/main/jbake/content/update-node-ssh001.adoc
+++ /dev/null
@@ -1,224 +0,0 @@
-type=page
-status=published
-title=update-node-ssh
-next=update-password-alias.html
-prev=update-node-ssh.html
-~~~~~~
-update-node-ssh
-===============
-
-[[update-node-ssh-1]][[GSRFM00256]][[update-node-ssh]]
-
-update-node-ssh
----------------
-
-updates the configuration data of a node
-
-[[sthref2299]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] update-node-ssh [--help]
-[--nodehost node-host]
-[--installdir as-install-parent] [--nodedir node-dir] 
-[--sshport ssh-port] [--sshuser ssh-user] 
-[--sshkeyfile ssh-keyfile]
-[--force={false|true}]
-node-name
-----
-
-[[sthref2300]]
-
-Description
-
-The `update-node-ssh` subcommand updates the configuration data of a
-node. This subcommand requires secure shell (SSH) to be configured on
-the machine where the domain administration server (DAS) is running and
-on the machine where the node resides. You may run this subcommand from
-any machine that can contact the DAS.
-
-This subcommand can update any node, regardless of whether the node is
-enabled for remote communication. If the node is not enabled for remote
-communication, the subcommand enables SSH communication for the node and
-updates any other specified configuration data.
-
-Options of this subcommand specify the new values of the node's
-configuration data. The default for most options is to leave the
-existing value unchanged. However, if this subcommand is run to enable
-SSH communication for a node, default values are applied if any of the
-following options is omitted:
-
-* `--sshport`
-* `--sshuser`
-* `--sshkeyfile`
-
-By default, the subcommand fails and the node is not updated if the DAS
-cannot contact the node's host through SSH. To force the node to be
-updated even if the host cannot be contacted through SSH, set the
-`--force` option to `true`.
-
-This subcommand is supported in remote mode only.
-
-[[sthref2301]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--nodehost`::
-  The name of the host that the node is to represent after the node is
-  updated.
-`--installdir`::
-  The full path to the parent of the base installation directory of the
-  \{product---name} software on the host, for example,
-  `/export/glassfish3`.
-`--nodedir`::
-  The path to the directory that is to contain \{product---name}
-  instances that are created on the node. If a relative path is
-  specified, the path is relative to the as-install directory, where
-  as-install is the base installation directory of the \{product---name}
-  software on the host.
-`--sshport`::
-  The port to use for SSH connections to this node's host. The default
-  depends on whether this subcommand is run to enable SSH communication
-  for the node: +
-  * If the node is already enabled for communication over SSH, the
-  default is to leave the port unchanged.
-  * If this subcommand is run to enable SSH communication for the node,
-  the default port is 22. +
-  If the `--nodehost` is set to `localhost`, the `--sshport` option is
-  ignored.
-`--sshuser`::
-  The user on this node's host that is to run the process for connecting
-  to the host through SSH. The default depends on whether this
-  subcommand is run to enable SSH communication for the node: +
-  * If the node is already enabled for communication over SSH, the
-  default is to leave the user unchanged.
-  * If this subcommand is run to enable SSH communication for the node,
-  the default is the user that is running the DAS process. +
-  If the `--nodehost` option is set to `localhost`, the `--sshuser`
-  option is ignored.
-`--sshkeyfile`::
-  The absolute path to the SSH private key file for user that the
-  `--sshuser` option specifies. This file is used for authentication to
-  the `sshd` daemon on the node's host. +
-
-[width="100%",cols="100%",]
-|=======================================================================
-a|
-Note:
-
-\{product---name} also supports password authentication through the
-`AS_ADMIN_SSHPASSWORD` entry in the password file. The password file
-is specified in the `--paswordfile` option of the
-link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility.
-
-|=======================================================================
-
-  If the SSH private key file is protected by a passphrase, the password
-  file must contain the `AS_ADMIN_SSHKEYPASSPHRASE` entry. +
-  The path to the key file must be reachable by the DAS and the key file
-  must be readable by the DAS. +
-  The default depends on whether this subcommand is run to enable SSH
-  communication for the node: +
-  * If the node is already enabled for communication over SSH, the
-  default is to leave the key file unchanged.
-  * If this subcommand is run to enable SSH communication for the node,
-  the default is the key file in the user's `.ssh` directory. If
-  multiple key files are found, the subcommand uses the following order
-  of preference:
-  1.  `id_rsa`
-  2.  `id_dsa`
-  3.  `identity`
-`--force`::
-  Specifies whether the node is updated even if validation of the node's
-  parameters fails. To validate a node's parameters, the DAS must be
-  able to contact the node's host through SSH. Possible values are as
-  follows: +
-  `false`;;
-    The node is not updated if validation of the node's parameters fails
-    (default).
-  `true`;;
-    The node is updated even if validation of the node's parameters
-    fails.
-
-[[sthref2302]]
-
-Operands
-
-node-name::
-  The name of the node to update. The node must exist. Otherwise, an
-  error occurs.
-
-[[sthref2303]]
-
-Examples
-
-[[GSRFM792]][[sthref2304]]
-
-Example 1   Updating the Host That a Node Represents
-
-This example updates the host that the node `lssh` represents to `sj04`.
-
-[source,oac_no_warn]
-----
-asadmin> update-node-ssh --nodehost sj04 lssh
-Command update-node-ssh executed successfully.
-----
-
-[[GSRFM793]][[sthref2305]]
-
-Example 2   Forcing the Update of a Node
-
-This example forces the update of the node `sj01` to enable the node to
-communicate over SSH.
-
-[source,oac_no_warn]
-----
-asadmin> update-node-ssh --force sj01
-Warning: some parameters appear to be invalid.
-Could not connect to host sj01 using SSH.
-Could not authenticate. Tried authenticating with specified key at 
-/home/gfuser/.ssh/id_rsa
-Continuing with node update due to use of --force.
-Command update-node-ssh executed successfully.
-----
-
-[[sthref2306]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref2307]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
-link:create-node-config.html#create-node-config-1[`create-node-config`(1)],
-link:create-node-ssh.html#create-node-ssh-1[`create-node-ssh`(1)],
-link:delete-node-config.html#delete-node-config-1[`delete-node-config`(1)],
-link:delete-node-dcom.html#delete-node-dcom-1[`delete-node-dcom`(1)],
-link:delete-node-ssh.html#delete-node-ssh-1[`delete-node-ssh`(1)],
-link:install-node.html#install-node-1[`install-node`(1)],
-link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)],
-link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)],
-link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
-link:uninstall-node.html#uninstall-node-1[`uninstall-node`(1)],
-link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)],
-link:uninstall-node-ssh.html#uninstall-node-ssh-1[`uninstall-node-ssh`(1)],
-link:update-node-config.html#update-node-config-1[`update-node-config`(1)],
-link:update-node-ssh.html#update-node-dcom-1[`update-node-dcom`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/update-password-alias.adoc b/docs/reference-manual/src/main/jbake/content/update-password-alias.adoc
deleted file mode 100644
index 68bb4c0..0000000
--- a/docs/reference-manual/src/main/jbake/content/update-password-alias.adoc
+++ /dev/null
@@ -1,94 +0,0 @@
-type=page
-status=published
-title=update-password-alias
-next=uptime.html
-prev=update-node-ssh001.html
-~~~~~~
-update-password-alias
-=====================
-
-[[update-password-alias-1]][[GSRFM00257]][[update-password-alias]]
-
-update-password-alias
----------------------
-
-updates a password alias
-
-[[sthref2308]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] update-password-alias [--help]
-aliasname
-----
-
-[[sthref2309]]
-
-Description
-
-This subcommand updates the password alias IDs in the named target. An
-alias is a token of the form `${ALIAS=password-alias-password}`. The
-password corresponding to the alias name is stored in an encrypted form.
-The `update-password-alias` subcommand takes both a secure interactive
-form (in which the user is prompted for all information) and a more
-script-friendly form, in which the password is propagated on the command
-line.
-
-This subcommand is supported in remote mode only.
-
-[[sthref2310]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref2311]]
-
-Operands
-
-aliasname::
-  This is the name of the password as it appears in `domain.xml`.
-
-[[sthref2312]]
-
-Examples
-
-[[GSRFM794]][[sthref2313]]
-
-Example 1   Updating a Password Alias
-
-[source,oac_no_warn]
-----
-asadmin> update-password-alias jmspassword-alias
-Please enter the alias password>
-Please enter the alias password again>
-Command update-password-alias executed successfully.
-----
-
-[[sthref2314]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref2315]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-password-alias.html#create-password-alias-1[`create-password-alias`(1)],
-link:delete-password-alias.html#delete-password-alias-1[`delete-password-alias`(1)],
-link:list-password-aliases.html#list-password-aliases-1[`list-password-aliases`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/uptime.adoc b/docs/reference-manual/src/main/jbake/content/uptime.adoc
deleted file mode 100644
index 5facd98..0000000
--- a/docs/reference-manual/src/main/jbake/content/uptime.adoc
+++ /dev/null
@@ -1,83 +0,0 @@
-type=page
-status=published
-title=uptime
-next=validate-dcom.html
-prev=update-password-alias.html
-~~~~~~
-uptime
-======
-
-[[uptime-1]][[GSRFM00258]][[uptime]]
-
-uptime
-------
-
-returns the length of time that the DAS has been running
-
-[[sthref2316]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] uptime [--help]
-----
-
-[[sthref2317]]
-
-Description
-
-The `uptime` subcommand returns the length of time that the domain
-administration server (DAS) has been running since it was last
-restarted.
-
-This subcommand is supported in remote mode only.
-
-[[sthref2318]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-
-[[sthref2319]]
-
-Examples
-
-[[GSRFM795]][[sthref2320]]
-
-Example 1   Showing How Long the DAS Has Been Running
-
-This example shows the length of time that the DAS has been running.
-
-[source,oac_no_warn]
-----
-asadmin> uptime
-Uptime: 2 days, 1 hours, 30 minutes, 18 seconds, Total milliseconds: 178218706
-Command uptime executed successfully.
-----
-
-[[sthref2321]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref2322]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:list-domains.html#list-domains-1[`list-domains`(1)],
-link:start-domain.html#start-domain-1[`start-domain`(1)],
-link:stop-domain.html#stop-domain-1[`stop-domain`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/validate-dcom.adoc b/docs/reference-manual/src/main/jbake/content/validate-dcom.adoc
deleted file mode 100644
index 14ad2a1..0000000
--- a/docs/reference-manual/src/main/jbake/content/validate-dcom.adoc
+++ /dev/null
@@ -1,198 +0,0 @@
-type=page
-status=published
-title=validate-dcom
-next=validate-multicast.html
-prev=uptime.html
-~~~~~~
-validate-dcom
-=============
-
-[[validate-dcom-1]][[GSRFM796]][[validate-dcom]]
-
-validate-dcom
--------------
-
-tests the connection over DCOM to a remote host
-
-[[sthref2323]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] validate-dcom [--help]
-[--windowsuser windows-user] [--windowsdomain windows-domain]
-[--remotetestdir remote-test-directory]
-[--verbose={false|true}] host-name
-----
-
-[[sthref2324]]
-
-Description
-
-The `validate-dcom` subcommand tests the connection over the Distributed
-Component Object Model (DCOM) remote protocol to the remote host that is
-specified as the operand of the subcommand. The DCOM protocol is
-available only on Windows systems.
-
-The prerequisites for running this subcommand are as follows:
-
-* DCOM must be configured on the host where the domain administration
-server (DAS) is running and on the remote host that is specified as the
-operand of the subcommand.
-* The following ports must be open on the remote host:
-
-** DCOM port 135 or 139
-
-** Windows Shares port 445
-* The Server Windows Service is enabled on the remote host.
-
-This subcommand verifies whether the prerequisites for creating a DCOM
-node or creating a \{product---name} instance on a DCOM node are met. If
-this subcommand fails, any attempt to create a DCOM node or create an
-instance on a DCOM node will also fail.
-
-You may run this command from any machine that can contact the DAS.
-
-The subcommand tests the connection over DCOM to the remote host by
-performing the following operations on the remote host:
-
-* Resolving the host name
-* Connecting to DCOM through port 135 or 139
-* Connecting to Windows Shares through port 445
-* Copying a script that is named `delete_me.bat` in the folder that is
-specified by the `--remotetestdir` option
-* Running the script to obtain a listing of the folder in which the
-`delete_me.bat` was written
-
-By default, the subcommand displays no information about the operations
-that are performed to test the connection to the remote host. To display
-information about these operations, set the `--verbose` option to
-`true`.
-
-This subcommand is supported in remote mode only.
-
-[[sthref2325]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--windowsuser`::
-`-w`::
-  The user on the remote host that is to run the process for connecting
-  to that host through DCOM. The default is the user that is running the
-  DAS process.
-`--windowsdomain`::
-`-d`::
-  The name of the Windows domain that contains the user that the
-  `--windowsuser` option specifies. The default is the name of the host
-  on which the subcommand is run.
-`--remotetestdir`::
-  Specifies the folder on the remote host in which the subcommand
-  creates the `delete_me.bat` file. The user that the `--windowsuser`
-  option specifies must have write access to this folder. Otherwise an
-  error occurs. The default is `C:\`
-`--verbose`::
-`-v`::
-  Specifies whether the subcommand displays information about the
-  operations that are performed to test the connection to the remote
-  host. +
-  Possible values are as follows: +
-  `false`;;
-    No information about the operations that are performed to test the
-    connection is displayed (default).
-  `true`;;
-    The subcommand displays information about the operations that are
-    performed to test the connection. +
-    If the `--verbose` option is true and the `AS_DEBUG` environment
-    variable is set, the subcommand also displays the command line for
-    each process that is running on the remote host.
-
-[[sthref2326]]
-
-Operands
-
-host-name::
-  The name of the host to which to test the connection over DCOM.
-
-[[sthref2327]]
-
-Examples
-
-[[GSRFM834]][[sthref2328]]
-
-Example 1   Testing the Connection Over DCOM to a Remote Host
-
-This example tests the connection over DCOM to the host `wpmdl2`.
-
-[source,oac_no_warn]
-----
-asadmin> validate-dcom --wpmdl2
-Command validate-dcom executed successfully. 
-----
-
-[[GSRFM797]][[sthref2329]]
-
-Example 2   Verbosely Testing the Connection Over DCOM to a Remote Host
-
-This example tests the connection over DCOM to the host `wpmdl2` and
-displays information about the operations that are performed to test the
-connection to the remote host.
-
-[source,oac_no_warn]
-----
-asadmin> validate-dcom --verbose wpmdl2
-
-Successfully resolved host name to: wpmdl2/192.168.122.106
-Successfully connected to DCOM Port at port 135 on host wpmdl2.
-Successfully connected to NetBIOS Session Service at port 139 on host wpmdl2.
-Successfully connected to Windows Shares at port 445 on host wpmdl2.
-Successfully accessed C: on wpmdl2 using DCOM.
-Successfully wrote delete_me.bat to C: on wpmdl2 using DCOM.
-Successfully accessed WMI (Windows Management Interface) on wpmdl2. There are 40
-processes running on wpmdl2.
-Successfully ran the test script on wpmdl2 using DCOM.
-The script simply ran the DIR command. Here are the first few lines from the 
-output of the dir command on the remote machine:
- 
-C:\Windows\system32>dir C:\
- Volume in drive C has no label.
- Volume Serial Number is XXXX-XXX
- 
- Directory of C:\
- 
-12/05/2011  10:21 AM                63 .asadminpass
-02/15/2011  01:08 PM    <DIR>          aroot
-12/05/2011  04:43 PM                 8 delete_me.bat
-03/03/2011  10:36 AM    <DIR>          export 
- 
-Command validate-dcom executed successfully. 
-----
-
-[[sthref2330]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref2331]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
-link:delete-node-dcom.html#delete-node-dcom-1[`delete-node-dcom`(1)],
-link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
-link:ping-node-dcom.html#ping-node-dcom-1[`ping-node-dcom`(1)],
-link:update-node-ssh.html#update-node-dcom-1[`update-node-dcom`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/validate-multicast.adoc b/docs/reference-manual/src/main/jbake/content/validate-multicast.adoc
deleted file mode 100644
index 778f46a..0000000
--- a/docs/reference-manual/src/main/jbake/content/validate-multicast.adoc
+++ /dev/null
@@ -1,170 +0,0 @@
-type=page
-status=published
-title=validate-multicast
-next=verify-domain-xml.html
-prev=validate-dcom.html
-~~~~~~
-validate-multicast
-==================
-
-[[validate-multicast-1]][[GSRFM00259]][[validate-multicast]]
-
-validate-multicast
-------------------
-
-validates that multicast transport is available for clusters
-
-[[sthref2332]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] validate-multicast [--help] 
-[--multicastport multicastport]
-[--multicastaddress multicastaddress]
-[--bindaddress bindaddress]
-[--sendperiod sendperiod]
-[--timeout timeout]
-[--timetolive timetolive]
-[--verbose={false|true}]
-----
-
-[[sthref2333]]
-
-Description
-
-The `validate-multicast` subcommand validates that multicast transport
-is available for clusters. You should run this subcommand at the same
-time on each of the hosts to be validated. This subcommand is available
-in local mode.
-
-
-[NOTE]
-=======================================================================
-
-Do not run the `validate-multicast` subcommand using the DAS and
-cluster's multicast address and port values while the DAS and cluster
-are running. Doing so results in an error.
-
-The `validate-multicast` subcommand must be run at the same time on two
-or more machines to validate whether multicast messages are being
-received between the machines.
-
-=======================================================================
-
-
-As long as all machines see each other, multicast is validated to be
-working properly across the machines. If the machines are not seeing
-each other, set the `--bindaddress` option explicitly to ensure that all
-machines are using interface on same subnet, or increase the
-`--timetolive` option from the default of `4`. If these changes fail to
-resolve the multicast issues, ask the network administrator to verify
-that the network is configured so the multicast messages can be seen
-between all the machines used to run the cluster.
-
-[[sthref2334]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--multicastport`::
-  The port for the multicast socket on which the Group Management
-  Service (GMS) listens for group events. Specify a standard UDP port
-  number in the range 2048-49151. The default is `2048`.
-`--multicastaddress`::
-  The address for the multicast socket on which the GMS listens for
-  group events. Specify a class D IP address. Class D IP addresses are
-  in the range `224.0.0.0` to `239.255.255.255`, inclusive. The address
-  `224.0.0.0` is reserved and should not be used. The default is
-  `228.9.3.1`.
-`--bindaddress`::
-  The local interface to receive multicast datagram packets for the GMS.
-  The default is to use all available binding interfaces. +
-  On a multi-home machine (possessing two or more network interfaces),
-  this attribute enables you to indicate which network interface is used
-  for the GMS. This value must be a local network interface IP address.
-`--sendperiod`::
-  The number of milliseconds between test messages sent between nodes.
-  The default is `2000`.
-`--timeout`::
-  The number of seconds before the subcommand times out and exits. The
-  default is `20`. You can also exit this subcommand using Ctrl-C.
-`--timetolive`::
-  The default time-to-live for multicast packets sent out on the
-  multicast socket in order to control the scope of the multicasts. The
-  time-to-live value must be between zero and 255 inclusive. The default
-  is the JDK default or a minimum defined by a constant in the GMS
-  subsystem, whichever is lower. To see the time-to-live value being
-  used, use the `--verbose` option.
-`--verbose`::
-  If used without a value or set to `true`, provides additional
-  debugging information. The default is `false`.
-
-[[sthref2335]]
-
-Examples
-
-[[GSRFM798]][[sthref2336]]
-
-Example 1   Validating multicast transport
-
-Run from host `machine1`:
-
-[source,oac_no_warn]
-----
-asadmin> validate-multicast
-Will use port 2,048
-Will use address 228.9.3.1
-Will use bind address null
-Will use wait period 2,000 (in milliseconds)
-
-Listening for data...
-Sending message with content "machine1" every 2,000 milliseconds
-Received data from machine1 (loopback)
-Received data from machine2
-Exiting after 20 seconds. To change this timeout, use the --timeout command line option.
-Command validate-multicast executed successfully
-----
-
-Run from host `machine2`:
-
-[source,oac_no_warn]
-----
-asadmin> validate-multicast
-Will use port 2,048
-Will use address 228.9.3.1
-Will use bind address null
-Will use wait period 2,000 (in milliseconds)
-
-Listening for data...
-Sending message with content "machine2" every 2,000 milliseconds
-Received data from machine2 (loopback)
-Received data from machine1
-Exiting after 20 seconds. To change this timeout, use the --timeout command line option.
-Command validate-multicast executed successfully
-----
-
-[[sthref2337]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref2338]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:get-health.html#get-health-1[`get-health`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/verify-domain-xml.adoc b/docs/reference-manual/src/main/jbake/content/verify-domain-xml.adoc
deleted file mode 100644
index 1e4fe23..0000000
--- a/docs/reference-manual/src/main/jbake/content/verify-domain-xml.adoc
+++ /dev/null
@@ -1,89 +0,0 @@
-type=page
-status=published
-title=verify-domain-xml
-next=version.html
-prev=validate-multicast.html
-~~~~~~
-verify-domain-xml
-=================
-
-[[verify-domain-xml-1]][[GSRFM00260]][[verify-domain-xml]]
-
-verify-domain-xml
------------------
-
-verifies the content of the domain.xml file
-
-[[sthref2339]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] verify-domain-xml [--help] 
-[--domaindir domain-dir] [domain-name]
-----
-
-[[sthref2340]]
-
-Description
-
-Verifies the content of the `domain.xml` file by checking the following:
-
-* That the `domain.xml` file can be parsed
-* That the names for elements that have them are unique
-
-This subcommand is supported in local mode only.
-
-[[sthref2341]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`-h` `--help`::
-  Displays the help text for the subcommand.
-`--domaindir`::
-  Specifies the domain root directory, where the domains are located.
-  The path must be accessible in the file system. The default is
-  as-install`/domains`.
-
-[[sthref2342]]
-
-Operands
-
-domain_name::
-  Specifies the name of the domain. The default is `domain1`.
-
-[[sthref2343]]
-
-Examples
-
-[[GSRFM799]][[sthref2344]]
-
-Example 1   Using verify-domain-xml
-
-[source,oac_no_warn]
-----
-asadmin> verify-domain-xml
-All Tests Passed.
-domain.xml is valid
-----
-
-[[sthref2345]]
-
-Exit Status
-
-0::
-  command executed successfully
-1::
-  error in executing the command
-
-[[sthref2346]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/content/version.adoc b/docs/reference-manual/src/main/jbake/content/version.adoc
deleted file mode 100644
index 64d3352..0000000
--- a/docs/reference-manual/src/main/jbake/content/version.adoc
+++ /dev/null
@@ -1,122 +0,0 @@
-type=page
-status=published
-title=version
-next=manvol1m.html
-prev=verify-domain-xml.html
-~~~~~~
-version
-=======
-
-[[version-1]][[GSRFM00261]][[version]]
-
-version
--------
-
-displays version information for\{product---name}
-
-[[sthref2347]]
-
-Synopsis
-
-[source,oac_no_warn]
-----
-asadmin [asadmin-options] version [--help] 
-[--verbose={false|true}] 
-[--local={false|true}]
-----
-
-[[sthref2348]]
-
-Description
-
-The `version` subcommand displays version information for
-\{product---name}. By default, if the subcommand cannot contact the
-domain administration server (DAS), the subcommand retrieves the version
-information locally and displays a warning message.
-
-This subcommand is supported in remote mode and local mode.
-
-[[sthref2349]]
-
-Options
-
-asadmin-options::
-  Options for the `asadmin` utility. For information about these
-  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
-`--help`::
-`-?`::
-  Displays the help text for the subcommand.
-`--verbose`::
-`-v`::
-  If this option is set to `true`, the subcommand provides the version
-  of the Java Runtime Environment (JRE) that the server is running. The
-  default is `false`.
-`--local`::
-  If this option is set to `true`, the subcommand obtains the version
-  locally from the installation of \{product---name} on the host where
-  the subcommand is run. +
-  If this option is set to `false` (default), the subcommand attempts to
-  contact the DAS to obtain the version. If the attempt to contact the
-  DAS fails, the subcommand retrieves the version locally and displays a
-  warning message.
-
-[[sthref2350]]
-
-Examples
-
-[[GSRFM800]][[sthref2351]]
-
-Example 1   Obtaining Version Information From a Running DAS
-
-[source,oac_no_warn]
-----
-asadmin> version
-Version = Oracle GlassFish Server 3.1 (build 34)
-Command version executed successfully.
-----
-
-[[GSRFM801]][[sthref2352]]
-
-Example 2   Obtaining Version Information When the DAS Cannot be Reached
-
-[source,oac_no_warn]
-----
-asadmin> version
-Version string could not be obtained from Server [localhost:4848] for some reason.
-(Turn debugging on e.g. by setting AS_DEBUG=true in your environment, to see the
- details).
-Using locally retrieved version string from version class.
-Version = Oracle GlassFish Server 3.1 (build 34)
-Command version executed successfully.
-----
-
-[[GSRFM802]][[sthref2353]]
-
-Example 3   Obtaining Version Information Locally
-
-[source,oac_no_warn]
-----
-asadmin> version --local
-Using locally retrieved version string from version class.
-Version = Oracle GlassFish Server 3.1 (build 34)
-Command version executed successfully.
-----
-
-[[sthref2354]]
-
-Exit Status
-
-0::
-  subcommand executed successfully
-1::
-  error in executing the subcommand
-
-[[sthref2355]]
-
-See Also
-
-link:asadmin.html#asadmin-1m[`asadmin`(1M)]
-
-link:list-modules.html#list-modules-1[`list-modules`(1)]
-
-
diff --git a/docs/reference-manual/src/main/jbake/jbake.properties b/docs/reference-manual/src/main/jbake/jbake.properties
deleted file mode 100644
index 546d09c..0000000
--- a/docs/reference-manual/src/main/jbake/jbake.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-site.host=http://jbake.org
-render.tags=false
-render.sitemap=false
-render.archive=false
-render.feed=false
-asciidoctor.option.safe=0
-asciidoctor.attributes.export=true
diff --git a/docs/reference-manual/src/main/jbake/templates/footer.ftl b/docs/reference-manual/src/main/jbake/templates/footer.ftl
deleted file mode 100644
index 6f2b09e..0000000
--- a/docs/reference-manual/src/main/jbake/templates/footer.ftl
+++ /dev/null
@@ -1,46 +0,0 @@
-<#-- a footer template fragment included in the page template -->
-<hr />
-
-<table width="90%" id="bottom-nav" cellspacing="0" cellpadding="0">
-	<colgroup>
-		<col width="12%"/>
-		<col width="12%"/>
-		<col width="*"/>
-	</colgroup>
-	<tr>		
-	    <#if content.prev??>
-		<td align="left">
-		<a href="${content.prev}">
-			<span class=" vector-font"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Previous</span>
-		</a>
-		</td>
-		</#if>
-
-		<#if content.next??>
-		<td align="left">
-		<a href="${content.next}">
-			<span class="vector-font"><i class="fa fa-arrow-circle-right vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Next</span>
-		</a>
-		</td>
-		</#if>
-
-		<td align="right">
-		<a href="toc.html">
-			<span class="vector-font"><i class="fa fa-list vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Contents</span>
-		</a>
-		</td>
-	</tr>
-</table>
-
-<span id="copyright">
-        <img src="img/eclipse_foundation_logo_tiny.png" height="20px" alt="Eclipse Foundation Logo" align="top"/>&nbsp;            
-        <span >Copyright&nbsp;&copy;&nbsp;2019,&nbsp;Oracle&nbsp;and/or&nbsp;its&nbsp;affiliates.&nbsp;All&nbsp;rights&nbsp;reserved.</span>
-</span>
-
-<p align="center" class="beta">${config.status!}</p>
-
-</body>
-</html>
diff --git a/docs/reference-manual/src/main/jbake/templates/header.ftl b/docs/reference-manual/src/main/jbake/templates/header.ftl
deleted file mode 100644
index 82ebb36..0000000
--- a/docs/reference-manual/src/main/jbake/templates/header.ftl
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html>
-<#-- a header template fragment included in the page template -->
-<html lang="en">
-  <head>
-    <meta charset="utf-8"/>
-    <title><#if (content.title)??><#escape x as x?xml>${content.title}</#escape></#if></title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <link href="<#if (content.rootpath)??>${content.rootpath}<#else></#if>css/style.css" rel="stylesheet">
-    <script src="https://use.fontawesome.com/96c4d89611.js"></script>
-  </head>
-  <body>
-<table id="doc-title" cellspacing="0" cellpadding="0">
-  <tr>
-  <td align="left" valign="top">
-  <b>${content.title}</b><br />
-      <p class="beta">${config.status!}</p>
-  </td>
-  </tr>
-</table>
-<hr />
-
-<table width="90%" id="top-nav" cellspacing="0" cellpadding="0">
-	<colgroup>
-		<col width="12%"/>
-		<col width="12%"/>
-		<col width="*"/>
-	</colgroup>
-	<tr>
-	    <#if content.prev??>
-		<td align="left">
-		<a href="${content.prev}">
-			<span class="vector-font"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Previous</span>
-		</a>
-		</td>
-	    </#if>
-
-	    <#if content.next??>
-		<td align="left">
-		<a href="${content.next}">
-			<span class=" vector-font"><i class="fa fa-arrow-circle-right vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Next</span>
-		</a>
-		</td>
-	    </#if>
-
-		<td align="right">
-		<a href="toc.html">
-			<span class=" vector-font"><i class="fa fa-list vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Contents</span>
-		</a>
-		</td>
-	</tr>
-</table>
-
diff --git a/docs/reference-manual/src/main/jbake/templates/menu.ftl b/docs/reference-manual/src/main/jbake/templates/menu.ftl
deleted file mode 100644
index 888c03d..0000000
--- a/docs/reference-manual/src/main/jbake/templates/menu.ftl
+++ /dev/null
@@ -1 +0,0 @@
-<#-- a menu bar template fragment included in the page template -->
\ No newline at end of file
diff --git a/docs/reference-manual/src/main/jbake/templates/page.ftl b/docs/reference-manual/src/main/jbake/templates/page.ftl
deleted file mode 100644
index eca51db..0000000
--- a/docs/reference-manual/src/main/jbake/templates/page.ftl
+++ /dev/null
@@ -1,8 +0,0 @@
-<#-- a top level page layout template -->
-
-<#include "header.ftl">
-<#include "menu.ftl">
-
-${content.body}
-
-<#include "footer.ftl">
\ No newline at end of file
diff --git a/docs/release-notes/README.md b/docs/release-notes/README.md
deleted file mode 100644
index a3ec2b6..0000000
--- a/docs/release-notes/README.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# A JBake project template
-
-## About JBake
-
-JBake is a static site generator, it's inspired from jekyll and written
-in java.  The basic idea is to have templates for the structure of the
-page, and the body generated from asciidoc content.
-
-## Pre requisites
-
-- Maven
-- JDK8+
-
-Deploying to Github will require password less authentication.
-
-This is done by exporting your SSH public key into your Github account.
-
-## Build the site locally
-
-The site is generated under target/staging.
-
-Open file:///PATH_TO_PROJECT_DIR/target/staging in a browser to view the site.
-
-```
-mvn generate-resources
-```
-
-Or you can invoke the JBake plugin directly.
-
-```
-mvn jbake:build
-```
-
-### Rebuild the site on changes
-
-```
-mvn jbake:watch
-```
-
-If you keep this command running, changes to the sources will be
-detected and the site will be rendered incrementally.
-
-This is convenient when writing content.
-
-### Serve the site locally
-
-```
-mvn jbake:serve
-```
-
-If a webserver is required (e.g. absolute path are used), this command
-will start a webserver (jetty) at http://localhost:8820.  It will also
-watch for changes and rebuild incrementally.
-
-## Deploy the site to Github Pages
-
-```
-mvn deploy
-```
-
-## Produce a zip file for download
-
-To produce a zip file containing the generated html files, use:
-
-```
-mvn package
-```
-
-When making a release on GitHub, this zip file should be added to the release.
-
-## Links
-
-- [JBake maven plugin documentation](https://github.com/Blazebit/jbake-maven-plugin)
-- [JBake documentation](http://jbake.org/docs/2.5.1)
-- [Freemarker documentation](http://freemarker.org/docs)
-- [AsciiDoc User Guide](http://asciidoc.org/userguide.html)
-- [Asciidoctor quick reference](http://asciidoctor.org/docs/asciidoc-syntax-quick-reference)
diff --git a/docs/release-notes/pom.xml b/docs/release-notes/pom.xml
index 97dd441..b80bfea 100644
--- a/docs/release-notes/pom.xml
+++ b/docs/release-notes/pom.xml
@@ -22,11 +22,10 @@
     <parent>
         <groupId>org.glassfish.docs</groupId>
         <artifactId>parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../parent</relativePath>
     </parent>
-    <groupId>org.glassfish.docs</groupId>
     <artifactId>release-notes</artifactId>
     <packaging>jar</packaging>
-    <name>Eclipse GlassFish Server Release Notes, Release 5.1</name>
+    <name>Eclipse GlassFish Server Release Notes, Release 7</name>
 </project>
diff --git a/docs/release-notes/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png b/docs/release-notes/src/main/asciidoc/img/eclipse_foundation_logo_tiny.png
similarity index 100%
rename from docs/release-notes/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png
rename to docs/release-notes/src/main/asciidoc/img/eclipse_foundation_logo_tiny.png
Binary files differ
diff --git a/docs/release-notes/src/main/asciidoc/preface.adoc b/docs/release-notes/src/main/asciidoc/preface.adoc
new file mode 100644
index 0000000..d52ec11
--- /dev/null
+++ b/docs/release-notes/src/main/asciidoc/preface.adoc
@@ -0,0 +1,324 @@
+type=page
+status=published
+title=Preface
+next=release-notes.html
+prev=title.html
+~~~~~~
+
+= Preface
+
+[[gkamj]][[preface]]
+
+== Preface
+
+[NOTE]
+====
+This documentation is part of the Java Enterprise Edition contribution
+to the Eclipse Foundation and is not intended for use in relation to
+Java Enterprise Edition or Orace GlassFish. The documentation is in the
+process of being revised to reflect the new Jakarta EE branding.
+Additional changes will be made as requirements and procedures evolve
+for Jakarta EE. Where applicable, references to Jakarta EE or Java
+Enterprise Edition should be considered references to Jakarta EE.
+
+Please see the Title page for additional license information.
+====
+
+This preface contains information about and conventions for the entire
+{productName} ({productName}) documentation set.
+
+{productName} 7 is developed through the GlassFish project
+open-source community at https://github.com/eclipse-ee4j/glassfish.
+The GlassFish project provides a structured process for developing the
+{productName} platform that makes the new features of the Jakarta EE
+platform available faster, while maintaining the most important feature
+of Jakarta EE: compatibility. It enables Java developers to access the
+{productName} source code and to contribute to the development of the
+{productName}.
+
+The following topics are addressed here:
+
+* link:#ghpbz[{productName} Documentation Set]
+* link:#giprl[Related Documentation]
+* link:#fwbkx[Typographic Conventions]
+* link:#fquvc[Symbol Conventions]
+* link:#ghpfg[Default Paths and File Names]
+
+[[ghpbz]][[glassfish-server-documentation-set]]
+
+=== {productName} Documentation Set
+
+The {productName} documentation set describes deployment planning and
+system installation. For an introduction to {productName}, refer to
+the books in the order in which they are listed in the following table.
+
+[width="100%",cols="<30%,<70%",options="header",]
+|===
+|Book Title |Description
+|link:release-notes.html#GSRLN[Release Notes] |Provides late-breaking information about
+the software and the documentation and includes a comprehensive,
+table-based summary of the supported hardware, operating system, Java
+Development Kit (JDK), and database drivers.
+
+|link:quick-start-guide.html#GSQSG[Quick Start Guide]
+|Explains how to get started with the {productName} product.
+
+|link:installation-guide.html#GSING[Installation Guide]
+|Explains how to install the software and its components.
+
+|link:upgrade-guide.html#GSUPG[Upgrade Guide]
+|Explains how to upgrade to the latest version of {productName}.
+This guide also describes differences between adjacent product releases and configuration
+options that can result in incompatibility with the product specifications.
+
+|link:deployment-planning-guide.html#GSPLG[Deployment Planning Guide]
+|Explains how to build a production deployment of {productName} that meets the requirements of
+your system and enterprise.
+
+|link:administration-guide.html#GSADG[Administration Guide]
+|Explains how to configure, monitor, and manage {productName} subsystems and components
+from the command line by using the link:reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] utility.
+Instructions for performing these tasks from the Administration Console are provided
+in the Administration Console online help.
+
+|link:security-guide.html#GSSCG[Security Guide]
+|Provides instructions for configuring and administering {productName} security.
+
+|link:application-deployment-guide.html#GSDPG[Application Deployment Guide]
+|Explains how to assemble and deploy applications to the {productName} and provides information
+about deployment descriptors.
+
+|link:application-development-guide.html#GSDVG[Application Development Guide]
+|Explains how to create and implement Java Platform, Enterprise Edition (Jakarta EE platform)
+applications that are intended to run on the {productName}.
+These applications follow the open Java standards model for Jakarta EE components
+and application programmer interfaces (APIs).
+This guide provides information about developer tools, security, and debugging.
+
+|link:add-on-component-development-guide.html#GSACG[Add-On Component Development Guide]
+|Explains how to use published interfaces of {productName} to develop add-on components
+for {productName}.
+This document explains how to perform only those tasks that ensure that the add-on component
+is suitable for {productName}.
+
+|link:embedded-server-guide.html#GSESG[Embedded Server Guide]
+|Explains how to run applications in embedded {productName} and to develop applications
+in which {productName} is embedded.
+
+|link:ha-administration-guide.html#GSHAG[High Availability Administration Guide]
+|Explains how to configure {productName} to provide higher availability and
+scalability through failover and load balancing.
+
+|link:performance-tuning-guide.html#GSPTG[Performance Tuning Guide]
+|Explains how to optimize the performance of {productName}.
+
+|link:troubleshooting-guide.html#GSTSG[Troubleshooting Guide]
+|Describes common problems that you might encounter when using {productName} and explains how to solve them.
+
+|link:error-messages-reference.html#GSEMR[Error Message Reference]
+|Describes error messages that you might encounter when using {productName}.
+
+|link:reference-manual.html#GSRFM[Reference Manual]
+|Provides reference information in man page format for {productName} administration commands, utility
+commands, and related concepts.
+
+|link:../openmq/mq-release-notes.html#GMRLN[Message Queue Release Notes]
+|Describes new features, compatibility issues, and existing bugs for Open Message Queue.
+
+|link:../openmq/mq-tech-over.html#GMTOV[Message Queue Technical Overview]
+|Provides an introduction to the technology, concepts, architecture, capabilities, and features of
+the Message Queue messaging service.
+
+|link:../openmq/mq-admin-guide.html#GMADG[Message Queue Administration Guide]
+|Explains how to set up and manage a Message Queue messaging system.
+
+|link:../openmq/mq-dev-guide-jmx.html#GMJMG[Message Queue Developer's Guide for JMX Clients]
+|Describes the application programming interface in Message Queue for
+programmatically configuring and monitoring Message Queue resources in
+conformance with the Java Management Extensions (JMX).
+
+|link:../openmq/mq-dev-guide-java.html#GMJVG[Message Queue Developer's Guide for Java Clients]
+|Provides information about concepts and procedures for developing Java messaging
+applications (Java clients) that work with {productName}.
+
+|link:../openmq/mq-dev-guide-c.html#GMCCG[Message Queue Developer's Guide for C Clients]
+|Provides programming and reference information for developers working with
+Message Queue who want to use the C language binding to the Message
+Queue messaging service to send, receive, and process Message Queue messages.
+|===
+
+
+[[giprl]][[related-documentation]]
+
+=== Related Documentation
+
+The following tutorials explain how to develop Jakarta EE applications:
+
+* https://github.com/eclipse-ee4j/jakartaee-firstcup-examples[
+Your First Cup: An Introduction to the Jakarta EE Platform].
+For beginning Jakarta EE programmers, this short tutorial explains the entire
+process for developing a simple enterprise application.
+The sample application is a web application that consists of a component that is
+based on the Enterprise JavaBeans specification, a JAX-RS web service,
+and a JavaServer Faces component for the web front end.
+
+* https://eclipse-ee4j.github.io/jakartaee-tutorial[The Jakarta EE Tutorial].
+This comprehensive tutorial explains how to use Jakarta EE platform technologies
+and APIs to develop Jakarta EE applications.
+
+Javadoc tool reference documentation for packages that are provided with
+{productName} is available as follows.
+
+* The Jakarta EE specifications and API specification is
+located at https://jakarta.ee/specifications/.
+
+* The API specification for {productName} 7, including Jakarta EE
+platform packages and nonplatform packages that are specific to the
+{productName} product, is located at
+https://glassfish.org/docs/.
+
+For information about creating enterprise applications in the NetBeans
+Integrated Development Environment (IDE), see the
+https://netbeans.apache.org/kb/docs/java-ee.html[
+NetBeans Documentation, Training & Support page].
+
+For information about the Derby database for use with
+the {productName}, see the https://db.apache.org/derby/index.html[Derby page].
+
+The Jakarta EE Samples project is a collection of sample applications that
+demonstrate a broad range of Jakarta EE technologies. The Jakarta EE Samples
+are bundled with the Jakarta EE Software Development Kit (SDK) and are also
+available from the repository
+(`https://github.com/eclipse-ee4j/glassfish-samples`).
+
+[[fwbkx]][[typographic-conventions]]
+
+=== Typographic Conventions
+
+The following table describes the typographic changes that are used in
+this book.
+
+[width="100%",cols="<14%,<37%,<49%",options="header",]
+|===
+|Typeface |Meaning |Example
+
+|`AaBbCc123`
+|The names of commands, files, and directories, and onscreen computer output
+|Edit your `.login` file.
+
+Use `ls` `a` to list all files.
+
+`machine_name% you have mail.`
+
+|`AaBbCc123`
+|What you type, contrasted with onscreen computer output
+|`machine_name%` `su`
+
+`Password:`
+
+|AaBbCc123
+|A placeholder to be replaced with a real name or value
+|The command to remove a file is `rm` filename.
+
+|AaBbCc123
+|Book titles, new terms, and terms to be emphasized (note that some emphasized items appear bold online)
+|Read Chapter 6 in the User's Guide.
+
+A cache is a copy that is stored locally.
+
+Do not save the file.
+|===
+
+
+[[fquvc]][[symbol-conventions]]
+
+=== Symbol Conventions
+
+The following table explains symbols that might be used in this book.
+
+[width="100%",cols="<10%,<26%,<28%,<36%",options="header",]
+|===
+|Symbol |Description |Example |Meaning
+
+|`[ ]`
+|Contains optional arguments and command options.
+|`ls [-l]`
+|The `-l` option is not required.
+
+|`{ \| }`
+|Contains a set of choices for a required command option.
+|`-d {y\|n}`
+|The `-d` option requires that you use either the `y` argument or the `n` argument.
+
+|`${ }`
+|Indicates a variable reference.
+|`${com.sun.javaRoot}`
+|References the value of the `com.sun.javaRoot` variable.
+
+|`-`
+|Joins simultaneous multiple keystrokes.
+|Control-A
+|Press the Control key while you press the A key.
+
+|`+`
+|Joins consecutive multiple keystrokes.
+|Ctrl+A+N
+|Press the Control key, release it, and then press the subsequent keys.
+
+|`>`
+|Indicates menu item selection in a graphical user interface.
+|File > New > Templates
+|From the File menu, choose New. From the New submenu, choose Templates.
+|===
+
+
+[[ghpfg]][[default-paths-and-file-names]]
+
+=== Default Paths and File Names
+
+The following table describes the default paths and file names that are
+used in this book.
+
+[%autowidth.stretch,options="header",]
+|===
+|Placeholder |Description |Default Value
+
+|as-install
+a|Represents the base installation directory for {productName}.
+In configuration files, as-install is represented as follows:
+`${com.sun.aas.installRoot}`
+a|* Installations on the Oracle Solaris operating system, Linux operating
+system, and Mac OS operating system:
++
+user's-home-directory``/glassfish7/glassfish``
++
+* Installations on the Windows operating system:
++
+SystemDrive``:\glassfish7\glassfish``
+
+|as-install-parent
+|Represents the parent of the base installation directory for {productName}.
+a|* Installations on the Oracle Solaris operating system, Linux operating
+system, and Mac operating system:
++
+user's-home-directory``/glassfish7``
++
+* Installations on the Windows operating system:
++
+SystemDrive``:\glassfish7``
+
+|domain-root-dir
+|Represents the directory in which a domain is created by default.
+|as-install``/domains/``
+
+|domain-dir
+|Represents the directory in which a domain's configuration is stored.
+In configuration files, domain-dir is represented as follows:
+`${com.sun.aas.instanceRoot}`
+|domain-root-dir/domain-name
+
+|instance-dir
+|Represents the directory for a server instance.
+|domain-dir/instance-name
+|===
+
diff --git a/docs/release-notes/src/main/asciidoc/release-notes.adoc b/docs/release-notes/src/main/asciidoc/release-notes.adoc
new file mode 100644
index 0000000..0e1ae12
--- /dev/null
+++ b/docs/release-notes/src/main/asciidoc/release-notes.adoc
@@ -0,0 +1,964 @@
+type=page
+status=published
+title={productName} 7 Release Notes
+prev=preface.html
+~~~~~~
+
+= {productName} 7 Release Notes
+
+[[GSRLN00001]][[abppa]]
+
+
+[[glassfish-server-open-source-edition-release-notes]]
+== 1 {productName} 7 Release Notes
+
+[CAUTION]
+====
+To Be Done
+
+This page must be updated before the release!
+====
+
+{productName} provides a lightweight, modular server for the
+development of Java Platform Enterprise Edition (Jakarta EE) 8
+applications. It is the Reference Implementation for Jakarta EE. It
+delivers a highly productive platform for developing with the latest
+Jakarta EE technologies.
+
+For any issue or information on {productName},
+see the https://glassfish.org/.
+
+These Release Notes provide late-breaking information about {productName} 7
+software and documentation. These Release Notes include
+summaries of supported hardware, operating environments, and JDK and
+JDBC/RDBMS requirements. Also included are a summary of new product
+features in the 7 release, and descriptions and workarounds for known
+issues and limitations.
+
+Refer to this document prior to installing, configuring, or using
+{productName} 7 software. Consult this document periodically to
+view the most up-to-date product information.
+
+* link:#ghmvk["Revision History"]
+* link:#glcmf["What's New in the {productName} 7 Release?"]
+* link:#abpaj["Hardware and Software Requirements"]
+* link:#glcmm["Known Issues in {productName} 7"]
+* link:#ggqok["Restrictions and Deprecated Functionality"]
+* link:#BABDACBE["Documentation Errata"]
+* link:#giraq["Features Available Only in the Full Platform"]
+* link:#gipkz["Jakarta EE Standards Support"]
+* link:#ghmtl["Jakarta EE SDK"]
+* link:#abpha["How to Report Problems and Provide Feedback"]
+* link:#abphc["Additional Resources"]
+
+[[ghmvk]][[GSRLN00128]][[revision-history]]
+
+=== Revision History
+
+This section lists the revision history for these Release Notes.
+
+[[sthref2]][[gabzd]]
+
+Table 1-1 Revision History
+
+[width="100%",options="header",]
+|===
+|Date |Description of Changes
+|September 2017 |{productName} 7.
+|===
+
+
+[[glcmf]][[GSRLN00129]][[whats-new-in-the-glassfish-server-release]]
+
+=== What's New in the {productName} 7 Release?
+
+GlassFish is the Reference Implementation for Jakarta EE. Jakarta EE 10
+introduces ... To Be Done
+
+{productName} 7 includes the following new and updated Jakarta EE standards.
+
+New Features
+
+* To Be Done
+
+Updated
+
+* To Be Done
+
+For a complete list of the Jakarta EE technologies included in {productName} 7,
+see link:#gipkz[Jakarta EE Standards Support].
+
+
+[NOTE]
+====
+The main thrust of the {productName} 7 release
+is to provide an application server for developers to explore and begin
+exploiting the new and updated technologies in the Jakarta EE 10 platform.
+Thus, the following features of {productName} were not a focus of
+this release:
+
+* Clusters and centralized management of standalone instances
+* High availability features
+* Upgrade
+* Embedded Server
+
+These features are included in the release, but they may not function
+properly with some of the new features added in support of the Jakarta EE 10 platform.
+====
+
+[[abpaj]][[GSRLN00131]][[hardware-and-software-requirements]]
+
+=== Hardware and Software Requirements
+
+This section lists the requirements that must be met before installing
+{productName} Release 7 software.
+
+The following topics are addressed here:
+
+* link:#abpak[Required JDK Versions]
+* link:#ggppy[Required Disk Space]
+* link:#ggpoq[Required Free Ports]
+* link:#gkxlg[Message Queue Broker Requirements]
+* link:#gfgps[Paths and Environment Settings for the JDK Software]
+
+[[abpak]][[GSRLN00246]][[required-jdk-versions]]
+
+==== Required JDK Versions
+
+{productName} Release 7 requires Oracle JDK 8
+Update 144 or later.
+
+Also be sure to see link:#gfgps[Paths and Environment Settings for the
+JDK Software] for important JDK configuration instructions.
+
+[NOTE]
+====
+It is recommended that any machine that is hosting a {productName}
+DAS or server instance have a minimum of 1 GB RAM.
+====
+
+[[ggppy]][[GSRLN00248]][[required-disk-space]]
+
+==== Required Disk Space
+
+The download sizes for {productName} 7 vary depending on the
+package you choose. The following are the approximate sizes of the ZIP
+packages for the Full and Web profiles:
+
+* Full `*.zip`: 114 MB (136 MB unzipped)
+* Web `*.zip`: 64.9 MB (82.9 MB unzipped)
+
+The installation sizes will vary depending on your configuration, but
+the approximate amount of disk space used by {productName} 7 is as
+follows:
+
+* Full: 138 MB
+* Web: 84.4 MB
+
+[[ggpoq]][[GSRLN00249]][[required-free-ports]]
+
+==== Required Free Ports
+
+You must have sixteen unused ports available for the ports {productName} uses. The installation program automatically detects ports that
+are in use and suggests currently unused ports for the default settings.
+The initial default port assignments are listed in the following table.
+If these default port numbers are in use, the installation program
+assigns a randomly selected port number from the dynamic port range. The
+selected port number might not be the next available port number.
+
+[[sthref3]][[ggpmu]]
+
+Table 1-2 Default Port Assignments for {productName} 7
+
+[width="100%",cols="63%,37%",options="header",]
+|===
+|Port Number |Usage
+|4848 |Administration Console
+
+|8080 |HTTP
+
+|8081 |HTTPS
+
+|8686 |Pure JMX clients
+
+|3700 |IIOP
+
+|3820 |IIOP/SSL
+
+|3920 |IIOP/SSL with mutual authentication
+
+|22 |SSH port
+
+|9009 |Java debugger
+
+|7676 |JMS provider
+
+|Auto-generated from the operating system's dynamic port range |Message Queue TCP port
+
+|Auto-generated from the operating system's dynamic port range |Message Queue Admin port
+
+|9090 |GMS TCP start port
+
+|9200 |GMS TCP end port
+
+|Auto-generated between GMS TCP start and end ports |GMS listener port
+
+|Auto generated between 2048 and 49151 |GMS multicast port
+|===
+
+
+In some situations, such as when multiple domains are running on a
+single host, port conflicts can arise in the auto-generated ports used
+by Message Queue and the GMS. To avoid these conflicts, you can
+configure the JMS host and the GMS to use specific ports.
+
+[[sthref4]][[to-configure-specific-ports-for-a-jms-host]]
+
+===== To Configure Specific Ports for a JMS Host
+
+When you create a JMS Host, {productName} automatically selects ports
+for the JMS provider (called the portmapper port in Message Queue
+terminology), the Message Queue TCP port and the Message Queue admin
+port.
+
+To provide specific values for these ports, use the `--mqport` and
+`--property` options when creating the JMS host:
+
+[source]
+----
+asadmin> create-jms-host --mqhost hostName --mqport portNumber \
+--mquser adminUser --mqpassword adminPassword --target glassfishTarget \
+--property imq\\.jms\\.tcp\\.port=tcpPort:imq\\.admin\\.tcp\\.port=adminPort \
+jms-host-name
+----
+
+`--mqport` `portNumber`::
+  This option specifies the JMS provider port number.
+`--property imq\\.jms\\.tcp\\.port=``tcpPort``:imq\\.admin\\.tcp\\.port=``adminPort`::
+  The `imq.jms.tcp.port` and `imq.admin.tcp.port` properties specify the
+  TCP port and the admin port numbers. The double backslashes (`\\`) are
+  used in the `--properties` option to escape the dots in the property
+  names.
+
+[[sthref5]][[to-configure-specific-gms-ports-for-a-cluster]]
+
+===== To Configure Specific GMS Ports for a Cluster
+
+When you create a cluster, {productName} automatically selects a port
+for GMS multicast that does not conflict with the GMS multicast port of
+any other cluster in the domain. Additionally, when you start a cluster,
+the GMS automatically selects an available port in a specific range for
+its TCP listener.
+
+If two or more domains are running on the same host, configure the
+clusters in the domains to ensure that no GMS port conflicts can arise
+among the clusters. To avoid possible port conflicts, use the
+`--multicast` and `--properties` options when creating the cluster:
+
+[source]
+----
+asadmin> create-cluster --multicastport multicast-port \
+--properties GMS_TCPSTARTPORT=start-port:GMS_TCPENDPORT=end-port \
+cluster-name
+----
+
+`--multicastport` `multicast-port`::
+  This option specifies the port number for the GMS to use for UDP
+  multicast.
+`--properties GMS_TCPSTARTPORT=``start-port``:GMS_TCPENDPORT=``end-port`::
+  The `GMS_TCPSTARTPORT` and `GMS_TCPENDPORT` properties specify the
+  range of port numbers the GMS is to use when selecting an available
+  port for its TCP listener.
++
+
+[NOTE]
+====
+Though you can create a cluster, there is no support for
+configuration, as this has not been tested.
+====
+
+[[gkxlg]][[GSRLN00250]][[message-queue-broker-requirements]]
+
+==== Message Queue Broker Requirements
+
+{productName} 7 is now bundled with Message Queue (MQ) Broker
+5.1.1. Refer to the
+https://github.com/eclipse-ee4j/glassfishdoc/5.1/mq-release-notes.pdf[`Open Message Queue Release Notes`]
+for complete information about MQ Broker requirements.
+
+[[gfgps]][[GSRLN00252]][[paths-and-environment-settings-for-the-jdk-software]]
+
+==== Paths and Environment Settings for the JDK Software
+
+Ensure that your JDK configuration settings on all local and remote
+{productName} hosts adhere to the guidelines listed below. Failure to
+adhere to these guidelines can cause various problems that may be
+difficult to trace.
+
+The following topics are addressed here:
+
+* link:#gldjj[Use the JDK Binaries]
+* link:#gldgl[Set the `JAVA_HOME` Environment Variable]
+* link:#gldho[Set Other Environment Variables As Necessary]
+
+[[gldjj]][[GSRLN00155]][[use-the-jdk-binaries]]
+
+===== Use the JDK Binaries
+
+The following binary files that are used with {productName} must come
+from the JDK software, not the Java Runtime Environment (JRE) software:
+
+* `java`
+* `keytool`
+
+To meet this requirement, ensure that the `bin` directory for the JDK
+software precedes the `bin` directory for the JRE software in your path.
+
+[[gldgl]][[GSRLN00156]][[set-the-java_home-environment-variable]]
+
+===== Set the `JAVA_HOME` Environment Variable
+
+Before performing any {productName} installation or configuration
+procedures, set the `JAVA_HOME` environment variable on the {productName} host machine to point to the correct Java version. Also be sure
+to add the `JAVA_HOME/bin` directory to the `PATH` variable for your
+environment. The `JAVA_HOME` variable must be set on all local and
+remote {productName} hosts.
+
+[[gldho]][[GSRLN00157]][[set-other-environment-variables-as-necessary]]
+
+===== Set Other Environment Variables As Necessary
+
+All remote `asadmin` subcommands require the correct version of Java to
+be available on the affected remote machine. For example, when creating
+a cluster or server instance on a remote machine, the remote machine
+uses its local default Java installation, not the Java installation that
+is on the DAS. Errors will therefore occur if the remote machine uses
+the wrong Java version.
+
+Depending on the remote subcommand, the errors may not occur when the
+subcommand is executed, but may occur later, when interacting with a
+configuration or resource created or modified by the subcommand. For
+example, when creating a clustered server instance on a remote machine,
+the error may only first appear when you attempt to deploy an
+application on that server instance.
+
+This issue is more likely to be encountered when {productName} is
+installed on the remote server by means of a ZIP file package as you do
+not have the option to specifically choose your Java version while
+unzipping a ZIP file.
+
+Depending on what shell is invoked via SSH on the remote host, the
+`JAVA_HOME` and `PATH` environment variables may need to be explicitly
+set in `.bashrc`, `.cshrc`, or some other shell configuration file. This
+configuration file may differ from the one that is used when you log in
+to the machine, such as `.profile`.
+
+Alternatively, you can specifically set the Java path with the `AS_JAVA`
+property in the in the as-install``/config/asenv.conf`` file.
+
+[[glcmm]][[GSRLN00253]][[known-issues-in-glassfish-server-5.1]]
+
+=== Known Issues in {productName} 7
+
+This section describes known issues and any available workarounds for
+{productName} 7 software.
+
+The following topics are addressed here:
+
+* link:#CHDIBHHF[JAXB and JAX-WS no longer part of Jakarta EE platform]
+* link:#CHDIBEAJ[Resource validation property is enabled in the JVM option for deployment]
+* link:#CHDBJDGF[Update Tool and pkg Command no longer part of {productName}]
+* link:#CHDJGJHD[Java DB has been replaced by Apache Derby]
+
+[[CHDIBHHF]][[jaxb-and-jax-ws-no-longer-part-of-java-ee-platform]]
+
+==== JAXB and JAX-WS no longer part of Jakarta EE platform
+
+[[sthref6]][[description]]
+
+===== Description
+
+Jakarta XML Binding (previous JAXB) and Jakarta XML Web Services (previouly JAX-WS)
+are part of Jakarta EE platform, but as optional technologies. However,
+the jars are packaged in GlassFish.
+
+[NOTE]
+====
+These jars are present only in the full profile of GlassFish and
+not part of web profile.
+====
+
+[[sthref7]][[workaround]]
+
+===== Workaround
+
+None
+
+[[CHDIBEAJ]][[resource-validation-property-is-enabled-in-the-jvm-option-for-deployment]]
+
+==== Resource validation property is enabled in the JVM option for deployment
+
+[[sthref8]][[description-1]]
+
+===== Description
+
+A new JVM option for deployment - deployment.resource.validation is
+introduced in {productName} 7. This property is set to True by
+default so that each resource is validated during deployment time. This
+ensures that all resources are created beforehand. This property is
+applicable for administration server as well as instances when clusters
+are involved.
+
+
+[NOTE]
+====
+However, for deployment of applications containing embedded resource
+adapter, a connector resource is created after deployment. For the
+deployment of such applications to succeed, the server(s) must be
+started with this property set to false. For more information on JVM
+deployment options see
+https://github.com/eclipse-ee4j/glassfishdoc/5.1/administration-guide.pdf#G11.998994[`Administering JVM Options.`]
+====
+
+
+[[sthref9]][[workaround-1]]
+
+===== Workaround
+
+In case you do not want the resource validation to take place during the
+deployment, you can set this property value to False.
+
+[[CHDBJDGF]][[update-tool-and-pkg-command-no-longer-part-of-glassfish-server]]
+
+==== Update Tool and pkg Command no longer part of {productName}
+
+[[sthref10]][[description-2]]
+
+===== Description
+
+In previous releases, you could update your {productName} software
+using the pkg command and the Update tool. Since the recent release of
+{productName} does not require the use of these features, they have
+been removed from the {productName} installation.
+
+[[sthref11]][[workaround-2]]
+
+===== Workaround
+
+No workaround.
+
+[[CHDJGJHD]][[java-db-has-been-replaced-by-apache-derby]]
+
+==== Java DB has been replaced by Apache Derby
+
+[[sthref12]][[description-3]]
+
+===== Description
+
+In the previous releases, Java DB was used as the database for {productName}s. With the release of {productName} 7, Apache Derby
+10.13.1.1 has replaced Java DB as the database for {productName}s.
+
+[[sthref13]][[workaround-3]]
+
+===== Workaround
+
+No workaround.
+
+[[ggqok]][[GSRLN00133]][[restrictions-and-deprecated-functionality]]
+
+=== Restrictions and Deprecated Functionality
+
+This section describes restrictions and deprecated functionality in
+{productName} 7.
+
+The following topics are addressed here:
+
+* link:#ggqoc[`asadmin` Subcommands]
+* link:#abmbf[Deprecated, Unsupported, and Obsolete Options]
+* link:#gkueg[Applications That Use Apache Derby]
+* link:#ghpen[No Support for Client VM on Windows AMD64]
+* link:#gkwbd[Metro Reliable Messaging in `InOrder` Delivery Mode]
+
+[[ggqoc]][[GSRLN00258]][[asadmin-subcommands]]
+
+==== `asadmin` Subcommands
+
+In {productName} 7, it is recommended that utility options of the
+`asadmin` command precede the subcommand. Utility options are options
+that control the behavior of the `asadmin` utility, as distinguished
+from subcommand options. Use of the following options after the
+subcommand is deprecated.
+
+* `--host`
+* `--port`
+* `--user`
+* `--passwordfile`
+* `--terse`
+* `--secure`
+* `--echo`
+* `--interactive`
+
+[[abmbf]][[GSRLN00259]][[deprecated-unsupported-and-obsolete-options]]
+
+==== Deprecated, Unsupported, and Obsolete Options
+
+Options in link:#gaeki[Table 1-3] are deprecated or no longer supported,
+or are obsolete and are ignored.
+
+[[sthref14]][[gaeki]]
+
+Table 1-3 Deprecated, Unsupported, and Obsolete Options for `asadmin`
+and Subcommands
+
+[width="100%",cols="33%,67%",options="header",]
+|===
+|Option |Affected Subcommands
+|`--acceptlang` |Unsupported for the `create-virtual-server` subcommand.
+
+|`--acls` |Unsupported for the `create-virtual-server` subcommand.
+
+|`--adminpassword` |Unsupported for all relevant subcommands. Use
+`--passwordfile` instead.
+
+|`--autoapplyenabled` |Obsolete for the `create-http-lb` subcommand.
+
+|`--autohadb` |Obsolete for the `create-cluster` subcommand.
+
+|`--autohadboverride` |Obsolete for the `start-cluster` subcommand and
+the `stop-cluster` subcommand
+
+|`--blockingenabled` |Unsupported for the `create-http-listener` subcommand.
+
+|`--configfile` |Unsupported for the `create-virtual-server` subcommand.
+
+|`--defaultobj` |Unsupported for the `create-virtual-server` subcommand.
+
+|`--defaultvs` |Deprecated for the `create-http-listener` subcommand.
+Use `--default-virtual-server` instead.
+
+|`--description` |Obsolete for the `restore-domain` subcommand.
+
+|`--devicesize` |Obsolete for the `create-cluster` subcommand.
+
+|`--haadminpassword` |Obsolete for the `create-cluster` subcommand.
+
+|`--haadminpasswordfile` |Obsolete for the `create-cluster` subcommand.
+
+|`--haagentport` |Obsolete for the `create-cluster` subcommand.
+
+|`--haproperty` |Obsolete for the `create-cluster` subcommand.
+
+|`--hosts` |Obsolete for the `create-cluster` subcommand.
+
+|`--ignoreDescriptorItem` |Replaced by the all lowercase option
+`--ignoredescriptoritem` in the `set-web-context-param` subcommand and
+the `set-web-env-entry` subcommand.
+
+|`--mime` |Unsupported for the `create-virtual-server` subcommand.
+
+|`--password` |Unsupported for all remote subcommands. Use
+`--passwordfile` instead.
+
+|`--path` |Unsupported for the `create-domain` subcommand. Use
+`--domaindir` instead.
+
+|`--portbase` |Obsolete only for the `create-cluster` subcommand. This
+option is still valid in other subcommands such as `create-domain`,
+`create-instance`, and `create-local-instance`.
+
+|`--resourcetype` |Unsupported for all relevant subcommands. Use
+`--restype` instead.
+
+|`--retrievefile` |Obsolete for the `export-http-lb-config` subcommand.
+
+|`--setenv` |Obsolete for the `start-instance` subcommand.
+
+|`--target` a|
+Obsolete only for the following subcommands:
+
+* `create-connector-connection-pool`
+* `create-resource-adapter-config`
+* `delete-connector-connection-pool`
+* `delete-connector-security-map`
+* `delete-jdbc-connection-pool`
+* `delete-resource-ref`
+
+Replaced by an operand in the `list-custom-resources` subcommand and the
+`list-jndi-entries` subcommand.
+|===
+
+
+[[gkueg]][[GSRLN00260]][[applications-that-use-apache-derby]]
+
+==== Applications That Use Apache Derby
+
+The directory location of Apache Derby in {productName} 7 has
+changed from its location in previous installations. Suppose that you
+have deployed applications that use Apache Derby databases in your
+previous server installation, and you upgrade your existing installation
+to {productName} 7. If you run the `asadmin start-database` command
+and successfully start Apache Derby, you could run into problems while
+trying to run applications that were deployed on your previous server
+installation.
+
+To solve this problem, you can copy the `databases` directory from your
+previous installation to as-install``/databases``. Make sure the database
+is not running when you do this.
+
+Alternatively, you can perform these steps:
+
+1. Use the `asadmin start-database` command with the `--dbhome` option
+pointing to the `databases` directory in the older version of Apache
+Derby. For example:
++
+[source]
+----
+asadmin start-database --dbhome c:\glassfish\databases
+----
+2. After upgrade, start {productName} 7.
+
+[[ghpen]][[GSRLN00261]][[no-support-for-client-vm-on-windows-amd64]]
+
+==== No Support for Client VM on Windows AMD64
+
+By default, the {productName} DAS uses the Client VM to achieve best
+startup and deployment performance. If you are using Windows AMD64, edit
+the `domain.xml` file to remove the line
+`<jvm-options>-client<jvm-options>`. In this case, JVM ergonomics
+chooses the appropriate kind of VM for the given platform. Note that
+server instances use the Server VM by default.
+
+For more information about platform support, see
+http://www.oracle.com/technetwork/java/ergo5-140223.html[Ergonomics in
+the 5.1 Java Virtual Machine].
+
+[[gkwbd]][[GSRLN00262]][[metro-reliable-messaging-in-inorder-delivery-mode]]
+
+==== Metro Reliable Messaging in `InOrder` Delivery Mode
+
+The Metro Reliable Messaging in `InOrder` Delivery mode has not been
+tested for high availability in {productName} 7. The feature may
+work, but it has not been formally tested and is therefore not a
+supported feature.
+
+[[glgiy]][[GSRLN00263]][[no-support-for-kerberos-on-aix]]
+
+==== No Support for Kerberos on AIX
+
+{productName} 7 does not support Kerberos on the AIX platform.
+
+For the complete report about this issue, see
+https://github.com/javaee/glassfish/issues/16728[`Issue-16728`]
+
+[[BABDACBE]][[documentation-errata]]
+
+=== Documentation Errata
+
+This section describes documentation errata.
+
+* link:#BABIDEHD[Upgrading to {productName} Is Not Necessary]
+
+[[BABIDEHD]][[upgrading-to-oracle-glassfish-server-is-not-necessary]]
+
+==== Upgrading to {productName} Is Not Necessary
+
+The {productName} Administration Guide discusses
+upgrading {productName} to {productName}. {productName} 4.x is only an open source release, so this
+upgrade is not necessary.
+
+
+[NOTE]
+====
+Upgrading may not work for {productName} 7
+====
+
+
+[[giraq]][[GSRLN00135]][[features-available-only-in-the-full-platform]]
+
+=== Features Available Only in the Full Platform
+
+The following features of {productName} 7 are available only in the
+Full Platform:
+
+* EJB features that make up the full EJB 3.2 API, such as remote EJB
+components, message-driven beans, web service EJB endpoints, and the EJB
+Timer Service
++
+The EJB 3.2 Lite specification is supported in the Web Profile. This
+specification allows enterprise beans within web applications and
+includes support for local stateless session beans, stateful session
+beans, and singleton session beans.
+* Application Client Container
+* JMS resources
+* Web services
++
+In the Web Profile, a servlet or EJB component cannot be a web service
+endpoint. The `sun-web.xml` and `sun-ejb-jar.xml` elements that are
+related to web services are ignored.
+* Message security
+* JavaMail resources
+
+Connector modules that use only outbound communication features and
+work-management that does not involve inbound communication features are
+supported in the Web Profile. Other connector features are supported
+only in the {productName} 7 full platform.
+
+[[gipkz]][[GSRLN00136]][[java-ee-standards-support]]
+
+=== Jakarta EE Standards Support
+
+link:#gjxcp[Table 1-4] lists the Jakarta EE standards implemented in
+{productName} 7. The table also indicates the distributions in
+which the implementation of a standard is available.
+
+* X indicates that the implementation is available in the distribution.
+* - indicates that the implementation is not available in the
+distribution.
+
+[[sthref15]][[gjxcp]]
+
+Table 1-4 Jakarta EE Standards Implementations in {productName} 7
+
+[width="100%",cols="<48%,<10%,<10%,<10%",options="header",]
+|===
+|Jakarta EE Standard |Version |{productName} 7 Full Platform |{productName} 7 Web Profile
+
+|https://jakarta.ee/specifications/platform/10/[Jakarta EE Specification]
+|10
+|X
+|X
+
+|https://jakarta.ee/specifications/activation/[Activation]
+|2.1
+|X
+|-
+
+|https://jakarta.ee/specifications/security/[Security]
+|3.0
+|X
+|X
+
+|https://jakarta.ee/specifications/batch/[Batch]
+|2.1
+|X
+|-
+
+|https://jakarta.ee/specifications/concurrency/[Concurrency]
+|3.0
+|X
+|-
+
+|https://jakarta.ee/specifications/jsonp/[JSON Processing]
+|2.1
+|X
+|X
+
+|https://jakarta.ee/specifications/jsonb/[JSON Binding]
+|3.0
+|X
+|X
+
+|https://jakarta.ee/specifications/websocket/[WebSocket]
+|2.1
+|X
+|X
+
+|https://jakarta.ee/specifications/websocket/[Servlet]
+|6.0
+|X
+|X
+
+|https://jakarta.ee/specifications/pages/[Server Pages]
+|3.1
+|X
+|X
+
+|https://jakarta.ee/specifications/expression-language/[Expression Language]
+|5.0
+|X
+|X
+
+|https://jakarta.ee/specifications/debugging/[Debugging Support for Other Languages]
+|2.0
+|X
+|X
+
+|https://jakarta.ee/specifications/tags/[Standard Tag Library]
+|3.0
+|X
+|X
+
+|https://jakarta.ee/specifications/mvc/[MVC]
+|2.1
+|X
+|X
+
+|https://jakarta.ee/specifications/faces/[JavaServer Faces]
+|4.0
+|X
+|X
+
+|https://jakarta.ee/specifications/annotations/[Annotations]
+|2.1
+|X
+|X
+
+|https://jakarta.ee/specifications/transactions/[Transactions]
+|2.0
+|X
+|X
+
+|https://jakarta.ee/specifications/persistence/[Persistence]
+|3.1
+|X
+|X
+
+|https://jakarta.ee/specifications/managedbeans/[Managed Beans]
+|2.0
+|X
+|X
+
+|https://jakarta.ee/specifications/interceptors/[Interceptors]
+|2.0
+|X
+|X
+
+|https://jakarta.ee/specifications/dependency-injection/[Dependency Injection]
+|2.0
+|X
+|X
+
+|https://jakarta.ee/specifications/cdi/[Contexts and Dependency Injection]
+|3.0
+|X
+|X
+
+|https://jakarta.ee/specifications/persistence/[Enterprise Beans]
+|4.0
+|X
+|-
+
+|https://jakarta.ee/specifications/restful-ws/[RESTful Web Services]
+|4.0
+|X
+|X
+
+|https://jakarta.ee/specifications/bean-validation/[Bean Validation]
+|3.0
+|X
+|X
+
+|https://jakarta.ee/specifications/connectors/[Connectors]
+|2.1
+|X
+|X^*^
+
+|https://jakarta.ee/specifications/xml-web-services/[XML Web Services]
+|4.0
+|X
+|-
+
+|https://jakarta.ee/specifications/soap-attachments/[SOAP With Attachements]
+|3.0
+|X
+|-
+
+|https://jakarta.ee/specifications/xml-binding/[XML Binding]
+|4.0
+|X
+|-
+
+|https://jakarta.ee/specifications/enterprise-ws/[Enterprise Web Services]
+|2.0
+|X
+|-
+
+|https://jakarta.ee/specifications/web-services-metadata/[Web Services Metadata]
+|3.0
+|X
+|-
+
+|https://jakarta.ee/specifications/messaging/[Messaging]
+|3.1
+|X
+|-
+
+|https://jakarta.ee/specifications/mail/[Mail]
+|2.1
+|X
+|-
+
+|https://jakarta.ee/specifications/authentication/[Authentication]
+|3.0
+|X
+|X
+
+|https://jakarta.ee/specifications/authorization/[Authorization]
+|2.1
+|X
+|-
+
+|https://jakarta.ee/specifications/deployment/[Deployment]
+|1.7
+|X
+|-
+
+|https://jakarta.ee/specifications/management/[Management]
+|1.1
+|X
+|-
+
+|https://jakarta.ee/specifications/xml-rpc/[XML RPC]
+|1.1
+|X
+|-
+
+|https://jakarta.ee/specifications/xml-registries/[XML Registries]
+|1.0
+|X
+|-
+|===
+
+^*^ Standalone Connector 1.7 Container only.
+
+Building on these standards, {productName} 7 provides a number of
+extensions, including the following:
+
+* Ajax (asynchronous JavaScript and XML): Retrieves and displays new
+  data for a portion of a web page without affecting the rest of the page.
+* Metro: A web services stack that implements Java Architecture for XML
+  Binding (JAXB) and Java APIs for XML Web Services 2.3 (JAX-WS 2.3).
+* Grizzly: A framework for building scalable and robust servers using
+  New I/O (NIO) APIs, which make scaling to thousands of users possible.
+  The ability to embed components that support HTTP, Bayeux Protocol, Java
+  Servlet API, and Comet is provided.
+
+[[abpha]][[GSRLN00138]][[how-to-report-problems-and-provide-feedback]]
+
+=== How to Report Problems and Provide Feedback
+
+If you have problems with {productName} 7, provide feedback through
+one of the following mechanisms:
+
+* https://javaee.groups.io/g/glassfish[{productName} forum]
+  (`https://javaee.groups.io/g/glassfish`) — A variety of {productName}
+  community for various interests and feedback
+* https://github.com/javaee/glassfish/issues[GlassFish Issue track]er
+  (`https://github.com/javaee/glassfish/issues`) — {productName}
+  project dashboards and issue tracking database
+
+[[abphc]][[GSRLN00139]][[additional-resources]]
+
+=== Additional Resources
+
+Useful information can be found at the following locations:
+
+* https://github.com/eclipse-ee4j/glassfish[{productName} Community]
+(`https://github.com/eclipse-ee4j/glassfish`)
+* http://www.oracle.com/technetwork/index.html[Oracle Developer
+Information] (`http://www.oracle.com/technetwork/index.html`)
+* http://www.oracle.com/technetwork/indexes/documentation/index.html[Oracle
+product documentation]
+(`http://www.oracle.com/technetwork/indexes/documentation/index.html`)
+
+
diff --git a/docs/release-notes/src/main/asciidoc/title.adoc b/docs/release-notes/src/main/asciidoc/title.adoc
new file mode 100644
index 0000000..9188423
--- /dev/null
+++ b/docs/release-notes/src/main/asciidoc/title.adoc
@@ -0,0 +1,48 @@
+type=page
+status=published
+title={productName} Release Notes, Release 7
+next=preface.html
+prev=toc.html
+~~~~~~
+
+= {productName} Release Notes, Release 7
+
+[[eclipse-glassfish-server]]
+== {productName}
+
+Release Notes
+
+Release 7
+
+Contributed 2018 - 2022
+
+These Release Notes provide late-breaking information about {productName} 7
+software and documentation. Also included are a summary of
+new product features in the 7 release, and descriptions and
+workarounds for known issues and limitations.
+
+[[sthref1]]
+
+'''''
+
+{productName} Release Notes, Release 7
+
+Copyright © 2013, 2019 Oracle and/or its affiliates. All rights reserved.
+
+This program and the accompanying materials are made available under the
+terms of the Eclipse Public License v. 2.0, which is available at
+http://www.eclipse.org/legal/epl-2.0.
+
+SPDX-License-Identifier: EPL-2.0
+
+Oracle and Java are registered trademarks of Oracle and/or its
+affiliates. Other names may be trademarks of their respective owners.
+
+Intel and Intel Xeon are trademarks or registered trademarks of Intel
+Corporation. All SPARC trademarks are used under license and are
+trademarks or registered trademarks of SPARC International, Inc. AMD,
+Opteron, the AMD logo, and the AMD Opteron logo are trademarks or
+registered trademarks of Advanced Micro Devices. UNIX is a registered
+trademark of The Open Group.
+
+image:img/eclipse_foundation_logo_tiny.png["Eclipse Logo"]
diff --git a/docs/release-notes/src/main/jbake/assets/css/style.css b/docs/release-notes/src/main/jbake/assets/css/style.css
deleted file mode 100644
index 25a16e4..0000000
--- a/docs/release-notes/src/main/jbake/assets/css/style.css
+++ /dev/null
@@ -1,315 +0,0 @@
-/* CSS */
-/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
-/** 1. Set default font family to sans-serif. 2. Prevent iOS text size adjust after orientation change, without disabling user zoom. */
-html { font-family: sans-serif; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ }
-
-/* HTML5 display definitions ========================================================================== */
-/** Correct `block` display not defined for any HTML5 element in IE 8/9. Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox. Correct `block` display not defined for `main` in IE 11. */
-article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { display: block; }
-
-/** 1. Correct `inline-block` display not defined in IE 8/9. 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. */
-audio, canvas, progress, video { display: inline-block; /* 1 */ vertical-align: baseline; /* 2 */ }
-
-/** Prevent modern browsers from displaying `audio` without controls. Remove excess height in iOS 5 devices. */
-audio:not([controls]) { display: none; height: 0; }
-
-/** Address `[hidden]` styling not present in IE 8/9/10. Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. */
-[hidden], template { display: none; }
-
-/* Links ========================================================================== */
-/** Remove the gray background color from active links in IE 10. */
-a { background-color: transparent; }
-
-/** Improve readability when focused and also mouse hovered in all browsers. */
-a:active, a:hover { outline: 0; }
-
-/* Text-level semantics ========================================================================== */
-/** Address styling not present in IE 8/9/10/11, Safari, and Chrome. */
-abbr[title] { border-bottom: 1px dotted; }
-
-/** Address style set to `bolder` in Firefox 4+, Safari, and Chrome. */
-b, strong { font-weight: bold; }
-
-/** Address styling not present in Safari and Chrome. */
-dfn { font-style: italic; }
-
-/** Address variable `h1` font-size and margin within `section` and `article` contexts in Firefox 4+, Safari, and Chrome. */
-h1 { font-size: 2em; margin: 0.67em 0; }
-
-/** Address styling not present in IE 8/9. */
-mark { background: #ff0; color: #000; }
-
-/** Address inconsistent and variable font size in all browsers. */
-small { font-size: 80%; }
-
-/** Prevent `sub` and `sup` affecting `line-height` in all browsers. */
-sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }
-
-sup { top: -0.5em; }
-
-sub { bottom: -0.25em; }
-
-/* Embedded content ========================================================================== */
-/** Remove border when inside `a` element in IE 8/9/10. */
-img { border: 0; }
-
-/** Correct overflow not hidden in IE 9/10/11. */
-svg:not(:root) { overflow: hidden; }
-
-/* Grouping content ========================================================================== */
-/** Address margin not present in IE 8/9 and Safari. */
-figure { margin: 1em 40px; }
-
-/** Address differences between Firefox and other browsers. */
-hr { box-sizing: content-box; height: 0; }
-
-/** Contain overflow in all browsers. */
-pre { overflow: auto; }
-
-/** Address odd `em`-unit font size rendering in all browsers. */
-code, kbd, pre, samp { font-family: monospace, monospace; font-size: 1em; }
-
-/* Forms ========================================================================== */
-/** Known limitation: by default, Chrome and Safari on OS X allow very limited styling of `select`, unless a `border` property is set. */
-/** 1. Correct color not being inherited. Known issue: affects color of disabled elements. 2. Correct font properties not being inherited. 3. Address margins set differently in Firefox 4+, Safari, and Chrome. */
-button, input, optgroup, select, textarea { color: inherit; /* 1 */ font: inherit; /* 2 */ margin: 0; /* 3 */ }
-
-/** Address `overflow` set to `hidden` in IE 8/9/10/11. */
-button { overflow: visible; }
-
-/** Address inconsistent `text-transform` inheritance for `button` and `select`. All other form control elements do not inherit `text-transform` values. Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. Correct `select` style inheritance in Firefox. */
-button, select { text-transform: none; }
-
-/** 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls. 2. Correct inability to style clickable `input` types in iOS. 3. Improve usability and consistency of cursor style between image-type `input` and others. */
-button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ }
-
-/** Re-set default cursor for disabled elements. */
-button[disabled], html input[disabled] { cursor: default; }
-
-/** Remove inner padding and border in Firefox 4+. */
-button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; }
-
-/** Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet. */
-input { line-height: normal; }
-
-/** It's recommended that you don't attempt to style these elements. Firefox's implementation doesn't respect box-sizing, padding, or width.  1. Address box sizing set to `content-box` in IE 8/9/10. 2. Remove excess padding in IE 8/9/10. */
-input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ }
-
-/** Fix the cursor style for Chrome's increment/decrement buttons. For certain `font-size` values of the `input`, it causes the cursor style of the decrement button to change from `default` to `text`. */
-input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { height: auto; }
-
-/** 1. Address `appearance` set to `searchfield` in Safari and Chrome. 2. Address `box-sizing` set to `border-box` in Safari and Chrome (include `-moz` to future-proof). */
-input[type="search"] { -webkit-appearance: textfield; /* 1 */ /* 2 */ box-sizing: content-box; }
-
-/** Remove inner padding and search cancel button in Safari and Chrome on OS X. Safari (but not Chrome) clips the cancel button when the search input has padding (and `textfield` appearance). */
-input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; }
-
-/** Define consistent border, margin, and padding. */
-fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; }
-
-/** 1. Correct `color` not being inherited in IE 8/9/10/11. 2. Remove padding so people aren't caught out if they zero out fieldsets. */
-legend { border: 0; /* 1 */ padding: 0; /* 2 */ }
-
-/** Remove default vertical scrollbar in IE 8/9/10/11. */
-textarea { overflow: auto; }
-
-/** Don't inherit the `font-weight` (applied by a rule above). NOTE: the default cannot safely be changed in Chrome and Safari on OS X. */
-optgroup { font-weight: bold; }
-
-/* Tables ========================================================================== */
-/** Remove most spacing between table cells. */
-table { border-collapse: collapse; border-spacing: 0; }
-
-td, th { padding: 0; }
-
-/* LAYOUT STYLES */
-
-p { margin-top: 0; }
-
-code, pre { margin-bottom: 30px; font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace; font-size: 13px; color: #222; }
-
-code { padding: 0 3px; background-color: #f2f8fc; border: solid 1px #dbe7f3; }
-
-pre { padding: 20px; overflow: auto; text-shadow: none; background: #fff; border: solid 1px #f2f2f2; }
-
-pre code { padding: 0; color: #2879d0; background-color: #fff; border: none; }
-
-ul, ol, dl { margin-bottom: 20px; }
-
-/* COMMON STYLES */
-
-td.halign-right { text-align: right; } 
-
-td.halign-center { text-align: center; } 
-
-form { padding: 20px; background: #f2f2f2; }
-
-h2 { 
-   font-size: 2em;
-   line-height: 1.2em;
-   font-weight: 200;
-   letter-spacing: 0;
-}
-
-h3 { 
-   font-size: 1.4em;
-   line-height: 1.2em;
-   font-weight: normal;
-   letter-spacing: 0;
-}
-
-.sect1 {
-   margin-left: 4%;
-   margin-right: 4%;
-   font: 13px/20px Arial, Helvetica, sans-serif  
-}
-
-a:link {
-   text-decoration: none;
-   color: #09569d;
-}
-
-#preamble hr{
-   margin-left: 0%;
-   margin-right: 0%;
-}
-
-#preamble .sectionbody table  {
-   font-weight: 200;
-   margin-left: 4%;
-   margin-right: 4%;
-}
-
-hr {
-   margin-bottom: 12px;
-}
-
-table.tableblock.frame-all.grid-all.spread {
-   font-size: 12px;
-}
-
-code {
-   font-size:.9em;
-   border: 1px solid #eaeaea;
-   background-color: #f6f6f6;
-   border-radius: 3px;
-   padding: 1px;
-   padding-left:2px;
-   padding-right:2px;
-}
-
-pre.prettyprint.highlight {
-   border: 1px solid #eaeaea;
-   background-color: #f6f6f6;
-   border-radius: 4px;
-   padding: 8px;
-   padding-top:4px;
-   padding-bottom:4px;
-}
-
-.language-oac_no_warn {
-   font-size:.9em;
-   color:#222;
-   background-color: transparent;
-}
-
-#doc-title {
-   margin-left: 4%;
-}
-
-#top-nav {
-   margin-left: 4%;
-   font-size: 12px;
-}
-
-#bottom-nav {
-   margin-left: 4%;
-   font-size: 12px;
-}
-
-.vector-font {
-   color:grey; 
-   font-size: 20px;
-}
-
-#copyright {
-   padding-top: 10px;
-   padding-bottom: 4px;
-   display: table;
-   margin:0 auto;
-   color: grey;
-   font-size: 12px;
-   vertical-align: middle;
-}
-
-.beta {color: #FF0000}
-
-/* GENERAL ELEMENT TYPE STYLES */
-
-/* #Media Queries
-================================================== */
-/* Smaller than standard 960 (devices and browsers) */
-/* Tablet Portrait size to standard 960 (devices and browsers) */
-@media only screen and (min-width: 768px) and (max-width: 959px) { .inner { width: 740px; }
-  header h1, header h2 { width: 340px; }
-  header h1 { font-size: 60px; }
-  header h2 { font-size: 30px; }
-}
-/* All Mobile Sizes (devices and browser) */
-@media only screen and (max-width: 767px) { .inner { width: 93%; }
-  header { padding: 20px 0; }
-  header .inner { position: relative; }
-  header h1, header h2 { width: 100%; }
-  header h1 { font-size: 48px; }
-  header h2 { font-size: 24px; }
-  header a.button { position: relative; display: inline-block; width: auto; height: auto; padding: 5px 10px; margin-top: 15px; font-size: 13px; line-height: 1; color: #2879d0; text-align: center; background-color: #9ddcff; background-image: none; border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; }
-  header a.button small { display: inline; font-size: 13px; }
-}
-/* Mobile Landscape Size to Tablet Portrait (devices and browsers) */
-/* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */
-
-header h1 { padding-top: 14px; font-size: 2em; font-weight: 200; line-height: 1.4; color: #FFFFFF; letter-spacing: 0px; border-bottom: 0px; }
-
-header h2 { font-size: 1.2em; margin-top: 0; margin-bottom: 0; font-weight: 200; line-height: .8; color: #ec7D11; letter-spacing: 0; }
-
-/*
-header a.button { background: transparent url(../images/logo.png) 0 0 no-repeat; padding-left: 32px; }
-*/
-
-header a:hover { text-decoration: none; }
-
-/* Admonition (Note) block */
-.admonitionblock > table {
-  border: 0;
-  background: none;
-  width: 100%;
-  table-layout: auto;
-  margin-bottom: 10.5px;
-}
-.admonitionblock > table td.icon {
-  text-align: center;
-  width: 60px;
-}
-.admonitionblock > table td.icon img {
-  max-width: none;
-}
-.admonitionblock > table td.icon .title {
-  text-transform: uppercase;
-}
-.admonitionblock > table td.content {
-  padding-left: 1em;
-  padding-right: 1em;
-  border-left: 3px solid #ddd;
-}
-.admonitionblock > table td.content > :last-child > :last-child {
-  margin-bottom: 0;
-}
-.admonitionblock td.icon [class^="fa icon-"]:before {
-  font-size: 2.5em;
-  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
-  cursor: default;
-}
-.admonitionblock td.icon .icon-note:before {
-  content: "\f05a";
-  color: #5bc0de;
-}
diff --git a/docs/release-notes/src/main/jbake/content/preface.adoc b/docs/release-notes/src/main/jbake/content/preface.adoc
deleted file mode 100644
index 53bd75c..0000000
--- a/docs/release-notes/src/main/jbake/content/preface.adoc
+++ /dev/null
@@ -1,314 +0,0 @@
-type=page
-status=published
-title=Preface
-next=release-notes.html
-prev=title.html
-~~~~~~
-Preface
-=======
-
-[[gkamj]][[preface]]
-
-Preface
--------
-
-[NOTE]
-========================================================================
-
-This documentation is part of the Java Enterprise Edition contribution 
-to the Eclipse Foundation and is not intended for use in relation to 
-Java Enterprise Edition or Orace GlassFish. The documentation is in the 
-process of being revised to reflect the new Jakarta EE branding. 
-Additional changes will be made as requirements and procedures evolve 
-for Jakarta EE. Where applicable, references to Java EE or Java 
-Enterprise Edition should be considered references to Jakarta EE. 
-
-Please see the Title page for additional license information.
-========================================================================
-
-This preface contains information about and conventions for the entire
-GlassFish Server Open Source Edition (GlassFish Server) documentation
-set.
-
-GlassFish Server is developed through the GlassFish project open-source
-community at `https://javaee.github.io/glassfish/`. The GlassFish
-project provides a structured process for developing the GlassFish
-Server platform that makes the new features of the Java EE platform
-available faster, while maintaining the most important feature of Java
-EE: compatibility. It enables Java developers to access the GlassFish
-Server source code and to contribute to the development of the GlassFish
-Server. The GlassFish project is designed to encourage communication
-between Oracle engineers and the community.
-
-The following topics are addressed here:
-
-* link:#ghpbz[GlassFish Server Documentation Set]
-* link:#giprl[Related Documentation]
-* link:#fwbkx[Typographic Conventions]
-* link:#fquvc[Symbol Conventions]
-* link:#ghpfg[Default Paths and File Names]
-
-[[ghpbz]][[glassfish-server-documentation-set]]
-
-GlassFish Server Documentation Set
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The GlassFish Server documentation set describes deployment planning and
-system installation. For an introduction to GlassFish Server, refer to
-the books in the order in which they are listed in the following table.
-
-[width="100%",cols="30%,70%",options="header",]
-|=======================================================================
-|Book Title |Description
-|link:../release-notes/toc.html#GSRLN[Release Notes] |Provides late-breaking information about
-the software and the documentation and includes a comprehensive,
-table-based summary of the supported hardware, operating system, Java
-Development Kit (JDK), and database drivers.
-
-|link:../quick-start-guide/toc.html#GSQSG[Quick Start Guide] |Explains how to get started with the
-GlassFish Server product.
-
-|link:../installation-guide/toc.html#GSING[Installation Guide] |Explains how to install the software
-and its components.
-
-|link:../upgrade-guide/toc.html#GSUPG[Upgrade Guide] |Explains how to upgrade to the latest
-version of GlassFish Server. This guide also describes differences
-between adjacent product releases and configuration options that can
-result in incompatibility with the product specifications.
-
-|link:../deployment-planning-guide/toc.html#GSPLG[Deployment Planning Guide] |Explains how to build a
-production deployment of GlassFish Server that meets the requirements of
-your system and enterprise.
-
-|link:../administration-guide/toc.html#GSADG[Administration Guide] |Explains how to configure, monitor,
-and manage GlassFish Server subsystems and components from the command
-line by using the link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`] utility. Instructions for
-performing these tasks from the Administration Console are provided in
-the Administration Console online help.
-
-|link:../security-guide/toc.html#GSSCG[Security Guide] |Provides instructions for configuring and
-administering GlassFish Server security.
-
-|link:../application-deployment-guide/toc.html#GSDPG[Application Deployment Guide] |Explains how to assemble and
-deploy applications to the GlassFish Server and provides information
-about deployment descriptors.
-
-|link:../application-development-guide/toc.html#GSDVG[Application Development Guide] |Explains how to create and
-implement Java Platform, Enterprise Edition (Java EE platform)
-applications that are intended to run on the GlassFish Server. These
-applications follow the open Java standards model for Java EE components
-and application programmer interfaces (APIs). This guide provides
-information about developer tools, security, and debugging.
-
-| |
-
-|link:../embedded-server-guide/toc.html#GSESG[Embedded Server Guide] |Explains how to run applications in
-embedded GlassFish Server and to develop applications in which GlassFish
-Server is embedded.
-
-|link:../ha-administration-guide/toc.html#GSHAG[High Availability Administration Guide] |Explains how to
-configure GlassFish Server to provide higher availability and
-scalability through failover and load balancing.
-
-|link:../performance-tuning-guide/toc.html#GSPTG[Performance Tuning Guide] |Explains how to optimize the
-performance of GlassFish Server.
-
-|link:../troubleshooting-guide/toc.html#GSTSG[Troubleshooting Guide] |Describes common problems that you
-might encounter when using GlassFish Server and explains how to solve
-them.
-
-|link:../error-messages-reference/toc.html#GSEMR[Error Message Reference] |Describes error messages that you
-might encounter when using GlassFish Server.
-
-|link:../reference-manual/toc.html#GSRFM[Reference Manual] |Provides reference information in man
-page format for GlassFish Server administration commands, utility
-commands, and related concepts.
-
-|link:../../openmq/mq-release-notes/toc.html#GMRLN[Message Queue Release Notes] |Describes new features,
-compatibility issues, and existing bugs for Open Message Queue.
-
-|link:../../openmq/mq-tech-over/toc.html#GMTOV[Message Queue Technical Overview] |Provides an introduction
-to the technology, concepts, architecture, capabilities, and features of
-the Message Queue messaging service.
-
-|link:../../openmq/mq-admin-guide/toc.html#GMADG[Message Queue Administration Guide] |Explains how to set up
-and manage a Message Queue messaging system.
-
-|link:../../openmq/mq-dev-guide-jmx/toc.html#GMJMG[Message Queue Developer's Guide for JMX Clients] |Describes
-the application programming interface in Message Queue for
-programmatically configuring and monitoring Message Queue resources in
-conformance with the Java Management Extensions (JMX).
-
-|link:../../openmq/mq-dev-guide-java/toc.html#GMJVG[Message Queue Developer's Guide for Java Clients] |Provides
-information about concepts and procedures for developing Java messaging
-applications (Java clients) that work with GlassFish Server.
-
-|link:../../openmq/mq-dev-guide-c/toc.html#GMCCG[Message Queue Developer's Guide for C Clients] |Provides
-programming and reference information for developers working with
-Message Queue who want to use the C language binding to the Message
-Queue messaging service to send, receive, and process Message Queue
-messages.
-|=======================================================================
-
-
-[[giprl]][[related-documentation]]
-
-Related Documentation
-~~~~~~~~~~~~~~~~~~~~~
-
-The following tutorials explain how to develop Java EE applications:
-
-* https://javaee.github.io/firstcup/[Your First Cup: An Introduction to
-the Java EE Platform] (`https://javaee.github.io/firstcup/`). For
-beginning Java EE programmers, this short tutorial explains the entire
-process for developing a simple enterprise application. The sample
-application is a web application that consists of a component that is
-based on the Enterprise JavaBeans specification, a JAX-RS web service,
-and a JavaServer Faces component for the web front end.
-* https://javaee.github.io/tutorial/[The Java EE 8 Tutorial]
-(`https://javaee.github.io/tutorial/`). This comprehensive tutorial
-explains how to use Java EE 7 platform technologies and APIs to develop
-Java EE applications.
-
-Javadoc tool reference documentation for packages that are provided with
-GlassFish Server is available as follows.
-
-* The API specification for version 8 of Java EE is located at
-`https://javaee.github.io/javaee-spec/javadocs/`.
-* The API specification for GlassFish Server 5.0, including Java EE 8
-platform packages and non-platform packages that are specific to the
-GlassFish Server product, is located at
-`https://javaee.github.io/javaee-spec/javadocs/`.
-
-Additionally, the
-http://www.oracle.com/technetwork/java/javaee/tech/index.html[Java EE
-Specifications] (`https://javaee.github.io/javaee-spec/Specifications`)
-might be useful.
-
-For information about creating enterprise applications in the NetBeans
-Integrated Development Environment (IDE), see the
-http://www.netbeans.org/kb/[NetBeans Documentation, Training & Support
-page] (`http://www.netbeans.org/kb/`).
-
-For information about the Apache Derby database for use with the
-GlassFish Server, see the https://db.apache.org/derby/manuals/[Apache
-Derby product page] (`https://db.apache.org/derby/manuals/`).
-
-The Java EE Samples project is a collection of sample applications that
-demonstrate a broad range of Java EE technologies. The Java EE Samples
-are bundled with the Java EE Software Development Kit (SDK) and are also
-available from the https://github.com/javaee/glassfish-samples[Java EE
-Samples project page] (`https://github.com/javaee/glassfish-samples`).
-
-[[fwbkx]][[typographic-conventions]]
-
-Typographic Conventions
-~~~~~~~~~~~~~~~~~~~~~~~
-
-The following table describes the typographic changes that are used in
-this book.
-
-[width="100%",cols="14%,37%,49%",options="header",]
-|=======================================================================
-|Typeface |Meaning |Example
-|`AaBbCc123` |The names of commands, files, and directories, and
-onscreen computer output a|
-Edit your `.login` file.
-
-Use `ls` `a` to list all files.
-
-`machine_name% you have mail.`
-
-|`AaBbCc123` |What you type, contrasted with onscreen computer output a|
-`machine_name%` `su`
-
-`Password:`
-
-|AaBbCc123 |A placeholder to be replaced with a real name or value |The
-command to remove a file is `rm` filename.
-
-|AaBbCc123 |Book titles, new terms, and terms to be emphasized (note
-that some emphasized items appear bold online) a|
-Read Chapter 6 in the User's Guide.
-
-A cache is a copy that is stored locally.
-
-Do not save the file.
-
-|=======================================================================
-
-
-[[fquvc]][[symbol-conventions]]
-
-Symbol Conventions
-~~~~~~~~~~~~~~~~~~
-
-The following table explains symbols that might be used in this book.
-
-[width="100%",cols="10%,26%,28%,36%",options="header",]
-|=======================================================================
-|Symbol |Description |Example |Meaning
-|`[ ]` |Contains optional arguments and command options. |`ls [-l]` |The
-`-l` option is not required.
-
-|`{ \| }` |Contains a set of choices for a required command option.
-|`-d {y\|n}` |The `-d` option requires that you use either the `y`
-argument or the `n` argument.
-
-|`${ }` |Indicates a variable reference. |`${com.sun.javaRoot}`
-|References the value of the `com.sun.javaRoot` variable.
-
-|- |Joins simultaneous multiple keystrokes. |Control-A |Press the
-Control key while you press the A key.
-
-|+ + |Joins consecutive multiple keystrokes. |Ctrl+A+N |Press the
-Control key, release it, and then press the subsequent keys.
-
-|> |Indicates menu item selection in a graphical user interface. |File >
-New > Templates |From the File menu, choose New. From the New submenu,
-choose Templates.
-|=======================================================================
-
-
-[[ghpfg]][[default-paths-and-file-names]]
-
-Default Paths and File Names
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following table describes the default paths and file names that are
-used in this book.
-
-[width="100%",cols="14%,34%,52%",options="header",]
-|=======================================================================
-|Placeholder |Description |Default Value
-|as-install + |Represents the base installation directory for GlassFish
-Server. a|
-Installations on the Oracle Solaris operating system, Linux operating
-system, and Mac OS operating system:
-
-user's-home-directory`/glassfish6/glassfish`
-
-Installations on the Windows operating system:
-
-SystemDrive`:\glassfish6\glassfish`
-
-|as-install-parent + |Represents the parent of the base installation
-directory for GlassFish Server. a|
-Installations on the Oracle Solaris operating system, Linux operating
-system, and Mac operating system:
-
-user's-home-directory`/glassfish6`
-
-Installations on the Windows operating system:
-
-SystemDrive`:\glassfish6`
-
-|domain-root-dir + |Represents the directory in which a domain is
-created by default. |as-install`/domains/`
-
-|domain-dir + |Represents the directory in which a domain's
-configuration is stored. |domain-root-dir`/`domain-name
-
-|instance-dir + |Represents the directory for a server instance.
-|domain-dir`/`instance-name
-|=======================================================================
diff --git a/docs/release-notes/src/main/jbake/content/release-notes.adoc b/docs/release-notes/src/main/jbake/content/release-notes.adoc
deleted file mode 100644
index ed9c790..0000000
--- a/docs/release-notes/src/main/jbake/content/release-notes.adoc
+++ /dev/null
@@ -1,999 +0,0 @@
-type=page
-status=published
-title=Eclipse GlassFish Server 6.1 Release Notes
-prev=preface.html
-~~~~~~
-Eclipse GlassFish Server 6.1 Release Notes
-==========================================
-
-[[GSRLN00001]][[abppa]]
-
-
-[[glassfish-server-open-source-edition-6.1-release-notes]]
-1 Eclipse GlassFish Server 6.1 Release Notes
---------------------------------------------
-
-GlassFish Server provides a lightweight, modular server for the
-development of Java Platform Enterprise Edition (Java EE) 8
-applications. It is the Reference Implementation for Java EE. It
-delivers a highly productive platform for developing with the latest
-Java EE technologies.
-
-For any issue or information on Eclipse GlassFish Server,
-see the https://javaee.github.io/glassfish/[GlassFish Server Community]
-(`https://javaee.github.io/glassfish/`).
-
-These Release Notes provide late-breaking information about GlassFish
-Server 5.1 software and documentation. These Release Notes include
-summaries of supported hardware, operating environments, and JDK and
-JDBC/RDBMS requirements. Also included are a summary of new product
-features in the 5.1 release, and descriptions and workarounds for known
-issues and limitations.
-
-Refer to this document prior to installing, configuring, or using
-GlassFish Server 5.1 software. Consult this document periodically to
-view the most up-to-date product information.
-
-* link:#ghmvk["Revision History"]
-* link:#glcmf["What's New in the GlassFish Server 5.1 Release?"]
-* link:#abpaj["Hardware and Software Requirements"]
-* link:#glcmm["Known Issues in GlassFish Server 5.1"]
-* link:#ggqok["Restrictions and Deprecated Functionality"]
-* link:#BABDACBE["Documentation Errata"]
-* link:#giraq["Features Available Only in the Full Platform"]
-* link:#gipkz["Java EE Standards Support"]
-* link:#ghmtl["Java EE SDK"]
-* link:#abpha["How to Report Problems and Provide Feedback"]
-* link:#abphc["Additional Resources"]
-
-[[ghmvk]][[GSRLN00128]][[revision-history]]
-
-Revision History
-~~~~~~~~~~~~~~~~
-
-This section lists the revision history for these Release Notes.
-
-[[sthref2]][[gabzd]]
-
-Table 1-1 Revision History
-
-[width="100%",cols="16%,84%",options="header",]
-|=========================================================
-|Date |Description of Changes
-|September 2017 |Eclipse GlassFish Server 5.1.
-|=========================================================
-
-
-[[glcmf]][[GSRLN00129]][[whats-new-in-the-glassfish-server-5.1-release]]
-
-What's New in the GlassFish Server 5.1 Release?
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-GlassFish is the Reference Implementation for Java EE. Java EE 8
-introduces the JSON Binding API (JSON-B) for mapping between JSON text
-and Java objects, building on the JSON Processing API (JSON-P). Servlet
-has been enhanced with the addition of support for the new HTTP/2
-protocol. JAX-RS adds support for server-sent events and, building on
-concurrency facilities added in Java SE 8, a reactive client API. The
-new Java EE Security API provides enhanced support for authentication
-and authorization in web modules, and also introduces APIs for access to
-identity stores. The Bean Validation facility is updated to reflect
-enhancements made in Java SE 8 and to extend the range of validated
-objects.
-
-GlassFish Server 5.1 includes the following new and updated Java EE
-standards.
-
-New Features
-
-* Java EE Security API 1.0
-* Java API for JSON Binding (JSON-B) 1.0
-
-Updated
-
-* Java API for JSON Processing (JSON-P) 1.1
-* Java API for WebSocket 1.1
-* Java API for RESTful Web Services (JAX-RS) 2.1
-* Contexts and Dependency Injection for Java EE (CDI) 2.0
-* Java Persistence API (JPA) 2.2
-* Common annotations 1.3
-* JavaServer Faces (JSF) 2.3
-* Java Servlet 5.1
-* Bean Validation (BV) 2.0
-* Interceptors 1.2
-* JavaMail 1.6
-
-For a complete list of the Java EE technologies included in GlassFish
-Server 5.1, see link:#gipkz[Java EE Standards Support].
-
-
-[NOTE]
-=======================================================================
-
-The main thrust of the Eclipse GlassFish Server 5.1 release
-is to provide an application server for developers to explore and begin
-exploiting the new and updated technologies in the Java EE 8 platform.
-Thus, the following features of GlassFish Server were not a focus of
-this release:
-
-* Clusters and centralized management of standalone instances
-* High availability features
-* Upgrade
-* Embedded Server
-
-These features are included in the release, but they may not function
-properly with some of the new features added in support of the Java EE 8
-platform.
-
-=======================================================================
-
-
-[[abpaj]][[GSRLN00131]][[hardware-and-software-requirements]]
-
-Hardware and Software Requirements
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This section lists the requirements that must be met before installing
-Eclipse GlassFish Server Release 5.1 software.
-
-The following topics are addressed here:
-
-* link:#abpak[Required JDK Versions]
-* link:#ggppy[Required Disk Space]
-* link:#ggpoq[Required Free Ports]
-* link:#gkxlg[Message Queue Broker Requirements]
-* link:#gfgps[Paths and Environment Settings for the JDK Software]
-
-[[abpak]][[GSRLN00246]][[required-jdk-versions]]
-
-Required JDK Versions
-^^^^^^^^^^^^^^^^^^^^^
-
-Eclipse GlassFish Server Release 5.1 requires Oracle JDK 8
-Update 144 or later.
-
-Also be sure to see link:#gfgps[Paths and Environment Settings for the
-JDK Software] for important JDK configuration instructions.
-
-
-[NOTE]
-=======================================================================
-
-It is recommended that any machine that is hosting a GlassFish Server
-DAS or server instance have a minimum of 1 GB RAM.
-
-=======================================================================
-
-
-[[ggppy]][[GSRLN00248]][[required-disk-space]]
-
-Required Disk Space
-^^^^^^^^^^^^^^^^^^^
-
-The download sizes for GlassFish Server 5.1 vary depending on the
-package you choose. The following are the approximate sizes of the ZIP
-packages for the Full and Web profiles:
-
-* Full `*.zip`: 114 MB (136 MB unzipped)
-* Web `*.zip`: 64.9 MB (82.9 MB unzipped)
-
-The installation sizes will vary depending on your configuration, but
-the approximate amount of disk space used by GlassFish Server 5.1 is as
-follows:
-
-* Full: 138 MB
-* Web: 84.4 MB
-
-[[ggpoq]][[GSRLN00249]][[required-free-ports]]
-
-Required Free Ports
-^^^^^^^^^^^^^^^^^^^
-
-You must have sixteen unused ports available for the ports GlassFish
-Server uses. The installation program automatically detects ports that
-are in use and suggests currently unused ports for the default settings.
-The initial default port assignments are listed in the following table.
-If these default port numbers are in use, the installation program
-assigns a randomly selected port number from the dynamic port range. The
-selected port number might not be the next available port number.
-
-[[sthref3]][[ggpmu]]
-
-Table 1-2 Default Port Assignments for GlassFish Server 5.1
-
-[width="100%",cols="52%,48%",options="header",]
-|=======================================================================
-|Port Number |Usage
-|4848 a|
-Administration Console
-
-
-|8080 |HTTP
-
-|8081 |HTTPS
-
-|8686 |Pure JMX clients
-
-|3700 |IIOP
-
-|3820 |IIOP/SSL
-
-|3920 |IIOP/SSL with mutual authentication
-
-|22 |SSH port
-
-|9009 |Java debugger
-
-|7676 |JMS provider
-
-|Auto-generated from the operating system's dynamic port range |Message
-Queue TCP port
-
-|Auto-generated from the operating system's dynamic port range |Message
-Queue Admin port
-
-|9090 |GMS TCP start port
-
-|9200 |GMS TCP end port
-
-|Auto-generated between GMS TCP start and end ports |GMS listener port
-
-|Auto generated between 2048 and 49151 |GMS multicast port
-|=======================================================================
-
-
-In some situations, such as when multiple domains are running on a
-single host, port conflicts can arise in the auto-generated ports used
-by Message Queue and the GMS. To avoid these conflicts, you can
-configure the JMS host and the GMS to use specific ports.
-
-[[sthref4]][[to-configure-specific-ports-for-a-jms-host]]
-
-To Configure Specific Ports for a JMS Host
-++++++++++++++++++++++++++++++++++++++++++
-
-When you create a JMS Host, GlassFish server automatically selects ports
-for the JMS provider (called the portmapper port in Message Queue
-terminology), the Message Queue TCP port and the Message Queue admin
-port.
-
-To provide specific values for these ports, use the `--mqport` and
-`--property` options when creating the JMS host:
-
-[source,oac_no_warn]
-----
-asadmin> create-jms-host --mqhost hostName --mqport portNumber \
---mquser adminUser --mqpassword adminPassword --target glassfishTarget \
---property imq\\.jms\\.tcp\\.port=tcpPort:imq\\.admin\\.tcp\\.port=adminPort \
-jms-host-name
-----
-
-`--mqport` `portNumber`::
-  This option specifies the JMS provider port number.
-`--property imq\\.jms\\.tcp\\.port=``tcpPort``:imq\\.admin\\.tcp\\.port=``adminPort`::
-  The `imq.jms.tcp.port` and `imq.admin.tcp.port` properties specify the
-  TCP port and the admin port numbers. The double backslashes (`\\`) are
-  used in the `--properties` option to escape the dots in the property
-  names.
-
-[[sthref5]][[to-configure-specific-gms-ports-for-a-cluster]]
-
-To Configure Specific GMS Ports for a Cluster
-+++++++++++++++++++++++++++++++++++++++++++++
-
-When you create a cluster, GlassFish server automatically selects a port
-for GMS multicast that does not conflict with the GMS multicast port of
-any other cluster in the domain. Additionally, when you start a cluster,
-the GMS automatically selects an available port in a specific range for
-its TCP listener.
-
-If two or more domains are running on the same host, configure the
-clusters in the domains to ensure that no GMS port conflicts can arise
-among the clusters. To avoid possible port conflicts, use the
-`--multicast` and `--properties` options when creating the cluster:
-
-[source,oac_no_warn]
-----
-asadmin> create-cluster --multicastport multicast-port \
---properties GMS_TCPSTARTPORT=start-port:GMS_TCPENDPORT=end-port \
-cluster-name
-----
-
-`--multicastport` `multicast-port`::
-  This option specifies the port number for the GMS to use for UDP
-  multicast.
-`--properties GMS_TCPSTARTPORT=``start-port``:GMS_TCPENDPORT=``end-port`::
-  The `GMS_TCPSTARTPORT` and `GMS_TCPENDPORT` properties specify the
-  range of port numbers the GMS is to use when selecting an available
-  port for its TCP listener. +
-
-[width="100%",cols="100%",]
-|=======================================================================
-a|
-Note:
-
-Though you can create a cluster, there is no support for
-configuration, as this has not been tested.
-
-|=======================================================================
-
-
-[[gkxlg]][[GSRLN00250]][[message-queue-broker-requirements]]
-
-Message Queue Broker Requirements
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-GlassFish Server 5.1 is now bundled with Message Queue (MQ) Broker
-5.1.1. Refer to the
-https://javaee.github.io/glassfish/doc/5.1/mq-release-notes.pdf[`Open Message Queue Release Notes`]
-for complete information about MQ Broker requirements.
-
-[[gfgps]][[GSRLN00252]][[paths-and-environment-settings-for-the-jdk-software]]
-
-Paths and Environment Settings for the JDK Software
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Ensure that your JDK configuration settings on all local and remote
-GlassFish Server hosts adhere to the guidelines listed below. Failure to
-adhere to these guidelines can cause various problems that may be
-difficult to trace.
-
-The following topics are addressed here:
-
-* link:#gldjj[Use the JDK Binaries]
-* link:#gldgl[Set the `JAVA_HOME` Environment Variable]
-* link:#gldho[Set Other Environment Variables As Necessary]
-
-[[gldjj]][[GSRLN00155]][[use-the-jdk-binaries]]
-
-Use the JDK Binaries
-++++++++++++++++++++
-
-The following binary files that are used with GlassFish Server must come
-from the JDK software, not the Java Runtime Environment (JRE) software:
-
-* `java`
-* `keytool`
-
-To meet this requirement, ensure that the `bin` directory for the JDK
-software precedes the `bin` directory for the JRE software in your path.
-
-[[gldgl]][[GSRLN00156]][[set-the-java_home-environment-variable]]
-
-Set the `JAVA_HOME` Environment Variable
-++++++++++++++++++++++++++++++++++++++++
-
-Before performing any GlassFish Server installation or configuration
-procedures, set the `JAVA_HOME` environment variable on the GlassFish
-Server host machine to point to the correct Java version. Also be sure
-to add the `JAVA_HOME/bin` directory to the `PATH` variable for your
-environment. The `JAVA_HOME` variable must be set on all local and
-remote GlassFish Server hosts.
-
-[[gldho]][[GSRLN00157]][[set-other-environment-variables-as-necessary]]
-
-Set Other Environment Variables As Necessary
-++++++++++++++++++++++++++++++++++++++++++++
-
-All remote `asadmin` subcommands require the correct version of Java to
-be available on the affected remote machine. For example, when creating
-a cluster or server instance on a remote machine, the remote machine
-uses its local default Java installation, not the Java installation that
-is on the DAS. Errors will therefore occur if the remote machine uses
-the wrong Java version.
-
-Depending on the remote subcommand, the errors may not occur when the
-subcommand is executed, but may occur later, when interacting with a
-configuration or resource created or modified by the subcommand. For
-example, when creating a clustered server instance on a remote machine,
-the error may only first appear when you attempt to deploy an
-application on that server instance.
-
-This issue is more likely to be encountered when GlassFish Server is
-installed on the remote server by means of a ZIP file package as you do
-not have the option to specifically choose your Java version while
-unzipping a ZIP file.
-
-Depending on what shell is invoked via SSH on the remote host, the
-`JAVA_HOME` and `PATH` environment variables may need to be explicitly
-set in `.bashrc`, `.cshrc`, or some other shell configuration file. This
-configuration file may differ from the one that is used when you log in
-to the machine, such as `.profile`.
-
-Alternatively, you can specifically set the Java path with the `AS_JAVA`
-property in the in the as-install`/config/asenv.conf` file.
-
-[[glcmm]][[GSRLN00253]][[known-issues-in-glassfish-server-5.1]]
-
-Known Issues in GlassFish Server 5.1
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This section describes known issues and any available workarounds for
-Eclipse GlassFish Server 5.1 software.
-
-The following topics are addressed here:
-
-* link:#CHDIBHHF[JAXB and JAX-WS no longer part of Java EE platform]
-* link:#CHDIBEAJ[Resource validation property is enabled in the JVM
-option for deployment]
-* link:#CHDBJDGF[Update Tool and pkg Command no longer part of GlassFish
-Server]
-* link:#CHDJGJHD[Java DB has been replaced by Apache Derby]
-
-[[CHDIBHHF]][[jaxb-and-jax-ws-no-longer-part-of-java-ee-platform]]
-
-JAXB and JAX-WS no longer part of Java EE platform
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-[[sthref6]][[description]]
-
-Description
-+++++++++++
-
-Jakarta XML Binding (previous JAXB) and Jakarta XML Web Services (previouly JAX-WS) are part of Java EE platform,
-but as optional technologies. However, the jars are packaged in GlassFish.
-
-
-[NOTE]
-=======================================================================
-
-These jars are present only in the full profile of GlassFish and
-not part of web profile.
-
-=======================================================================
-
-
-[[sthref7]][[workaround]]
-
-Workaround
-++++++++++
-
-None
-
-[[CHDIBEAJ]][[resource-validation-property-is-enabled-in-the-jvm-option-for-deployment]]
-
-Resource validation property is enabled in the JVM option for deployment
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-[[sthref8]][[description-1]]
-
-Description
-+++++++++++
-
-A new JVM option for deployment - deployment.resource.validation is
-introduced in GlassFish Server 5.1. This property is set to True by
-default so that each resource is validated during deployment time. This
-ensures that all resources are created beforehand. This property is
-applicable for administration server as well as instances when clusters
-are involved.
-
-
-[NOTE]
-=======================================================================
-
-However, for deployment of applications containing embedded resource
-adapter, a connector resource is created after deployment. For the
-deployment of such applications to succeed, the server(s) must be
-started with this property set to false. For more information on JVM
-deployment options see
-https://javaee.github.io/glassfish/doc/5.1/administration-guide.pdf#G11.998994[`Administering JVM Options.`]
-
-=======================================================================
-
-
-[[sthref9]][[workaround-1]]
-
-Workaround
-++++++++++
-
-In case you do not want the resource validation to take place during the
-deployment, you can set this property value to False.
-
-[[CHDBJDGF]][[update-tool-and-pkg-command-no-longer-part-of-glassfish-server]]
-
-Update Tool and pkg Command no longer part of GlassFish Server
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-[[sthref10]][[description-2]]
-
-Description
-+++++++++++
-
-In previous releases, you could update your GlassFish Server software
-using the pkg command and the Update tool. Since the recent release of
-GlassFish server does not require the use of these features, they have
-been removed from the GlassFish server installation.
-
-[[sthref11]][[workaround-2]]
-
-Workaround
-++++++++++
-
-No workaround.
-
-[[CHDJGJHD]][[java-db-has-been-replaced-by-apache-derby]]
-
-Java DB has been replaced by Apache Derby
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-[[sthref12]][[description-3]]
-
-Description
-+++++++++++
-
-In the previous releases, Java DB was used as the database for GlassFish
-servers. With the release of GlassFish Server 5.1, Apache Derby
-10.13.1.1 has replaced Java DB as the database for GlassFish servers.
-
-[[sthref13]][[workaround-3]]
-
-Workaround
-++++++++++
-
-No workaround.
-
-[[ggqok]][[GSRLN00133]][[restrictions-and-deprecated-functionality]]
-
-Restrictions and Deprecated Functionality
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This section describes restrictions and deprecated functionality in
-Oracle GlassFish Server 5.1.
-
-The following topics are addressed here:
-
-* link:#ggqoc[`asadmin` Subcommands]
-* link:#abmbf[Deprecated, Unsupported, and Obsolete Options]
-* link:#gkueg[Applications That Use Apache Derby]
-* link:#ghpen[No Support for Client VM on Windows AMD64]
-* link:#gkwbd[Metro Reliable Messaging in `InOrder` Delivery Mode]
-
-[[ggqoc]][[GSRLN00258]][[asadmin-subcommands]]
-
-`asadmin` Subcommands
-^^^^^^^^^^^^^^^^^^^^^
-
-In GlassFish Server 5.1, it is recommended that utility options of the
-`asadmin` command precede the subcommand. Utility options are options
-that control the behavior of the `asadmin` utility, as distinguished
-from subcommand options. Use of the following options after the
-subcommand is deprecated.
-
-* `--host`
-* `--port`
-* `--user`
-* `--passwordfile`
-* `--terse`
-* `--secure`
-* `--echo`
-* `--interactive`
-
-[[abmbf]][[GSRLN00259]][[deprecated-unsupported-and-obsolete-options]]
-
-Deprecated, Unsupported, and Obsolete Options
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Options in link:#gaeki[Table 1-3] are deprecated or no longer supported,
-or are obsolete and are ignored.
-
-[[sthref14]][[gaeki]]
-
-Table 1-3 Deprecated, Unsupported, and Obsolete Options for `asadmin`
-and Subcommands
-
-[width="100%",cols="33%,67%",options="header",]
-|=======================================================================
-|Option |Affected Subcommands
-|`--acceptlang` |Unsupported for the `create-virtual-server` subcommand.
-
-|`--acls` |Unsupported for the `create-virtual-server` subcommand.
-
-|`--adminpassword` |Unsupported for all relevant subcommands. Use
-`--passwordfile` instead.
-
-|`--autoapplyenabled` |Obsolete for the `create-http-lb` subcommand.
-
-|`--autohadb` |Obsolete for the `create-cluster` subcommand.
-
-|`--autohadboverride` |Obsolete for the `start-cluster` subcommand and
-the `stop-cluster` subcommand
-
-|`--blockingenabled` |Unsupported for the `create-http-listener`
-subcommand.
-
-|`--configfile` |Unsupported for the `create-virtual-server` subcommand.
-
-|`--defaultobj` |Unsupported for the `create-virtual-server` subcommand.
-
-|`--defaultvs` |Deprecated for the `create-http-listener` subcommand.
-Use `--default-virtual-server` instead.
-
-|`--description` |Obsolete for the `restore-domain` subcommand.
-
-|`--devicesize` |Obsolete for the `create-cluster` subcommand.
-
-|`--haadminpassword` |Obsolete for the `create-cluster` subcommand.
-
-|`--haadminpasswordfile` |Obsolete for the `create-cluster` subcommand.
-
-|`--haagentport` |Obsolete for the `create-cluster` subcommand.
-
-|`--haproperty` |Obsolete for the `create-cluster` subcommand.
-
-|`--hosts` |Obsolete for the `create-cluster` subcommand.
-
-|`--ignoreDescriptorItem` |Replaced by the all lowercase option
-`--ignoredescriptoritem` in the `set-web-context-param` subcommand and
-the `set-web-env-entry` subcommand.
-
-|`--mime` |Unsupported for the `create-virtual-server` subcommand.
-
-|`--password` |Unsupported for all remote subcommands. Use
-`--passwordfile` instead.
-
-|`--path` |Unsupported for the `create-domain` subcommand. Use
-`--domaindir` instead.
-
-|`--portbase` |Obsolete only for the `create-cluster` subcommand. This
-option is still valid in other subcommands such as `create-domain`,
-`create-instance`, and `create-local-instance`.
-
-|`--resourcetype` |Unsupported for all relevant subcommands. Use
-`--restype` instead.
-
-|`--retrievefile` |Obsolete for the `export-http-lb-config` subcommand.
-
-|`--setenv` |Obsolete for the `start-instance` subcommand.
-
-|`--target` a|
-Obsolete only for the following subcommands:
-
-* `create-connector-connection-pool`
-* `create-resource-adapter-config`
-* `delete-connector-connection-pool`
-* `delete-connector-security-map`
-* `delete-jdbc-connection-pool`
-* `delete-resource-ref`
-
-Replaced by an operand in the `list-custom-resources` subcommand and the
-`list-jndi-entries` subcommand:
-
-|=======================================================================
-
-
-[[gkueg]][[GSRLN00260]][[applications-that-use-apache-derby]]
-
-Applications That Use Apache Derby
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The directory location of Apache Derby in GlassFish Server 5.1 has
-changed from its location in previous installations. Suppose that you
-have deployed applications that use Apache Derby databases in your
-previous server installation, and you upgrade your existing installation
-to GlassFish Server 5.1. If you run the `asadmin start-database` command
-and successfully start Apache Derby, you could run into problems while
-trying to run applications that were deployed on your previous server
-installation.
-
-To solve this problem, you can copy the `databases` directory from your
-previous installation to as-install`/databases`. Make sure the database
-is not running when you do this.
-
-Alternatively, you can perform these steps:
-
-1.  Use the `asadmin start-database` command with the `--dbhome` option
-pointing to the `databases` directory in the older version of Apache
-Derby. For example: +
-[source,oac_no_warn]
-----
-asadmin start-database --dbhome c:\glassfish\databases
-----
-2.  After upgrade, start GlassFish Server 5.1.
-
-[[ghpen]][[GSRLN00261]][[no-support-for-client-vm-on-windows-amd64]]
-
-No Support for Client VM on Windows AMD64
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-By default, the GlassFish Server DAS uses the Client VM to achieve best
-startup and deployment performance. If you are using Windows AMD64, edit
-the `domain.xml` file to remove the line
-`<jvm-options>-client<jvm-options>`. In this case, JVM ergonomics
-chooses the appropriate kind of VM for the given platform. Note that
-server instances use the Server VM by default.
-
-For more information about platform support, see
-http://www.oracle.com/technetwork/java/ergo5-140223.html[Ergonomics in
-the 5.1 Java Virtual Machine].
-
-[[gkwbd]][[GSRLN00262]][[metro-reliable-messaging-in-inorder-delivery-mode]]
-
-Metro Reliable Messaging in `InOrder` Delivery Mode
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The Metro Reliable Messaging in `InOrder` Delivery mode has not been
-tested for high availability in GlassFish Server 5.1. The feature may
-work, but it has not been formally tested and is therefore not a
-supported feature.
-
-[[glgiy]][[GSRLN00263]][[no-support-for-kerberos-on-aix]]
-
-No Support for Kerberos on AIX
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-GlassFish Server 5.1 does not support Kerberos on the AIX platform.
-
-For the complete report about this issue, see
-https://github.com/javaee/glassfish/issues/16728[`Issue-16728`]
-
-[[BABDACBE]][[documentation-errata]]
-
-Documentation Errata
-~~~~~~~~~~~~~~~~~~~~
-
-This section describes documentation errata.
-
-* link:#BABIDEHD[Upgrading to Oracle GlassFish Server Is Not Necessary]
-
-[[BABIDEHD]][[upgrading-to-oracle-glassfish-server-is-not-necessary]]
-
-Upgrading to Oracle GlassFish Server Is Not Necessary
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The Eclipse GlassFish Server Administration Guide discusses
-upgrading Eclipse GlassFish Server to Oracle GlassFish
-Server. GlassFish Server 4.x is only an open source release, so this
-upgrade is not necessary.
-
-
-[NOTE]
-==============================================
-
-Upgrading may not work for GlassFish Server 5.1
-
-==============================================
-
-
-[[giraq]][[GSRLN00135]][[features-available-only-in-the-full-platform]]
-
-Features Available Only in the Full Platform
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following features of GlassFish Server 5.1 are available only in the
-Full Platform:
-
-* EJB features that make up the full EJB 3.2 API, such as remote EJB
-components, message-driven beans, web service EJB endpoints, and the EJB
-Timer Service +
-The EJB 3.2 Lite specification is supported in the Web Profile. This
-specification allows enterprise beans within web applications and
-includes support for local stateless session beans, stateful session
-beans, and singleton session beans.
-* Application Client Container
-* JMS resources
-* Web services +
-In the Web Profile, a servlet or EJB component cannot be a web service
-endpoint. The `sun-web.xml` and `sun-ejb-jar.xml` elements that are
-related to web services are ignored.
-* Message security
-* JavaMail resources
-
-Connector modules that use only outbound communication features and
-work-management that does not involve inbound communication features are
-supported in the Web Profile. Other connector features are supported
-only in the Eclipse GlassFish Server 5.1 full platform.
-
-[[gipkz]][[GSRLN00136]][[java-ee-standards-support]]
-
-Java EE Standards Support
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-link:#gjxcp[Table 1-4] lists the Java EE standards implemented in
-GlassFish Server 5.1. The table also indicates the distributions in
-which the implementation of a standard is available.
-
-* X indicates that the implementation is available in the distribution.
-* - indicates that the implementation is not available in the
-distribution.
-
-[[sthref15]][[gjxcp]]
-
-Table 1-4 Java EE Standards Implementations in GlassFish Server 5.1
-
-[width="100%",cols="48%,24%,16%,12%",options="header",]
-|=======================================================================
-|Java EE Standard |Java Specification Request (JSR) |GlassFish Server
-5.1 Full Platform |GlassFish Server 5.1 Web Profile
-|https://javaee.github.io/javaee-spec/javadocs/[Java Platform,
-Enterprise Edition 8] `(https://javaee.github.io/javaee-spec/javadocs/)`
-|http://jcp.org/en/jsr/detail?id=366[JSR 366] |X |X
-
-|Java EE Security API |http://jcp.org/en/jsr/detail?id=375[JSR 375] |X
-|X
-
-|Batch Applications for the Java Platform 1.0
-|http://jcp.org/en/jsr/detail?id=352[JSR 352] |X |-
-
-|Concurrency Utilities for Java EE 1.0
-|http://jcp.org/en/jsr/detail?id=236[JSR 236] |X |-
-
-|Java API for JSON Processing 1.1
-|http://jcp.org/en/jsr/detail?id=374[JSR 374] |X |X
-
-|Java API for JSON Binding 1.0 |http://jcp.org/en/jsr/detail?id=367[JSR
-367] |X |X
-
-|Java API for WebSocket 1.1 |http://jcp.org/en/jsr/detail?id=356[JSR
-356] |X |X
-
-|https://javaee.github.io/servlet-spec/[Java Servlet Technology
-5.1]`(https://javaee.github.io/servlet-spec/)/`
-|http://jcp.org/en/jsr/detail?id=369[JSR 369] |X |X
-
-|JavaServer Pages 2.3 |http://jcp.org/en/jsr/detail?id=245[JSR 245] |X
-|X
-
-|Expression Language 3.0 |http://jcp.org/en/jsr/detail?id=341[JSR 341]
-|X |X
-
-|Debugging Support for Other Languages 1.0
-|http://jcp.org/en/jsr/detail?id=45[JSR 45] |X |X
-
-|Standard Tag Library for JavaServer Pages 1.2
-|http://jcp.org/en/jsr/detail?id=52[JSR 52] |X |X
-
-|http://www.oracle.com/technetwork/java/javaee/javaserverfaces-139869.html[JavaServer
-Faces 2.3]`(https://github.com/javaserverfaces/)`
-|http://jcp.org/en/jsr/detail?id=372[JSR 372] |X |X
-
-|Common Annotations for the Java Platform 1.2
-|http://jcp.org/en/jsr/detail?id=250[JSR 250] |X |X
-
-|https://github.com/javaee/jta-spec[Java Transaction API 1.2]
-`(https://github.com/javaee/jta-spec)`
-|http://jcp.org/en/jsr/detail?id=907[JSR 907] |X |X
-
-|https://github.com/javaee/jpa-spec[Java Persistence API 2.2]
-`(https://github.com/javaee/jpa-spec)`
-|http://jcp.org/en/jsr/detail?id=338[JSR 338] |X |X
-
-|Managed Beans 1.0 |http://jcp.org/en/jsr/detail?id=316[JSR 316] |X |X
-
-|Interceptors 1.2 |http://jcp.org/en/jsr/detail?id=318[JSR 318] |X |X
-
-|Dependency Injection for Java 1.0
-|http://jcp.org/en/jsr/detail?id=330[JSR 330] |X |X
-
-|https://github.com/javaee/ejb-spec[Enterprise JavaBeans 3.2 Lite]
-`(https://github.com/javaee/ejb-spec)`
-|http://jcp.org/en/jsr/detail?id=345[JSR 345] |X |X
-
-|https://github.com/javaee/ejb-spec[Enterprise JavaBeans 3.2 Full
-API]`(https://github.com/javaee/ejb-spec)`
-|http://jcp.org/en/jsr/detail?id=345[JSR 345] |X |-
-
-|Contexts and Dependency Injection for Java EE 2.0
-|http://jcp.org/en/jsr/detail?id=365[JSR 365] |X |X
-
-|Java API for RESTful Web Service (JAX-RS) 2.1
-|http://jcp.org/en/jsr/detail?id=370[JSR 370] |X |X
-
-|Bean Validation 2.0 |http://jcp.org/en/jsr/detail?id=349[JSR 380] |X |X
-
-|https://github.com/javaee/connector-spec[Java EE Connector Architecture
-1.7]`(https://github.com/javaee/connector-spec)`
-|http://jcp.org/en/jsr/detail?id=322[JSR 322] |X |X^*^
-
-|https://github.com/javaee/metro-jax-ws[Java API for XML-Based Web
-Services (JAX-WS) 2.3]`(https://github.com/javaee/metro-jax-ws)`
-|http://jcp.org/en/jsr/detail?id=224[JSR 224] |X |-
-
-|https://github.com/javaee/jaxb-v2[Java Architecture for XML Binding
-(JAXB) 2.2]`(https://github.com/javaee/jaxb-v2)`
-|http://jcp.org/en/jsr/detail?id=222[JSR 222] |X |-
-
-|Implementing Enterprise Web Services 1.4
-|http://jcp.org/en/jsr/detail?id=109[JSR 109] |X |-
-
-|Web Services Metadata for the Java Platform 2.1
-|http://jcp.org/en/jsr/detail?id=181[JSR 181] |X |-
-
-|https://javaee.github.io/jms-spec/[Java Message Service
-2.0]`(https://javaee.github.io/jms-spec/)`
-|http://jcp.org/en/jsr/detail?id=343[JSR 343] |X |-
-
-|https://javaee.github.io/javamail/[JavaMail
-1.6]`(https://javaee.github.io/javamail/)`
-|http://jcp.org/en/jsr/detail?id=919[JSR 919] |X |-
-
-|https://javaee.github.io/jacc-spec/[Java Authorization Contract for
-Containers 1.5]`(https://javaee.github.io/jacc-spec/)`
-|http://jcp.org/en/jsr/detail?id=115[JSR 115] |X |-
-
-|Java Authentication Service Provider Interface for Containers 1.1
-|http://jcp.org/en/jsr/detail?id=196[JSR 196] |X |-
-
-|Java EE Application Deployment 1.2
-|http://jcp.org/en/jsr/detail?id=88[JSR 88] |X |-
-
-|J2EE Management 1.1 |http://jcp.org/en/jsr/detail?id=77[JSR 77] |X |-
-
-|https://github.com/javaee/jax-rpc-ri[Java API for XML-Based Remote
-Procedure Calls (JAX-RPC) 1.1]`(https://github.com/javaee/jax-rpc-ri/)`
-|http://jcp.org/en/jsr/detail?id=101[JSR 101] |X |-
-
-|Java API for XML-Based Registries (JAXR) 1.0
-|http://jcp.org/en/jsr/detail?id=93[JSR 93] |X |-
-|=======================================================================
-
-
-^*^ Standalone Connector 1.7 Container only.
-
-Building on these standards, GlassFish Server 5.1 provides a number of
-extensions, including the following:
-
-* Ajax (asynchronous JavaScript and XML): Retrieves and displays new
-data for a portion of a web page without affecting the rest of the page.
-* Metro: A web services stack that implements Java Architecture for XML
-Binding (JAXB) and Java APIs for XML Web Services 2.3 (JAX-WS 2.3).
-* Grizzly: A framework for building scalable and robust servers using
-New I/O (NIO) APIs, which make scaling to thousands of users possible.
-The ability to embed components that support HTTP, Bayeux Protocol, Java
-Servlet API, and Comet is provided.
-
-[[ghmtl]][[GSRLN00137]][[java-ee-sdk]]
-
-Java EE SDK
-~~~~~~~~~~~
-
-GlassFish Server 5.1 is available as part of the Java EE 8 SDK. The
-following versions of the Java EE 8 SDK are available:
-
-* Java EE 8 SDK: This version includes GlassFish Server 5.1. This
-version is designed for developers who require the full set of Java EE
-APIs for enterprise application development.
-* Java EE 8 Web Profile SDK: This version includes GlassFish Server 5.1
-Web Profile. This version contains web technologies that are subset of
-the Full Platform and is designed for developers who do not require the
-full set of Java EE APIs.
-
-More information about the Java EE SDK distributions are available at
-http://www.oracle.com/technetwork/java/javaee/documentation/index.html[Java
-EE Reference at a Glance]
-(`http://www.oracle.com/technetwork/java/javaee/documentation/index.html`).
-Java EE SDK distributions are available from the
-http://www.oracle.com/technetwork/java/javaee/downloads/index.html[Java
-EE SDK Downloads page]
-(`http://www.oracle.com/technetwork/java/javaee/downloads/index.html`).
-
-[[abpha]][[GSRLN00138]][[how-to-report-problems-and-provide-feedback]]
-
-How to Report Problems and Provide Feedback
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-If you have problems with GlassFish Server 5.1, provide feedback through
-one of the following mechanisms:
-
-* https://javaee.groups.io/g/glassfish[GlassFish Server forum]
-(`https://javaee.groups.io/g/glassfish`) — A variety of GlassFish Server
-community for various interests and feedback
-* https://github.com/javaee/glassfish/issues[GlassFish Issue track]er
-(`https://github.com/javaee/glassfish/issues`) — GlassFish Server
-project dashboards and issue tracking database
-
-[[abphc]][[GSRLN00139]][[additional-resources]]
-
-Additional Resources
-~~~~~~~~~~~~~~~~~~~~
-
-Useful information can be found at the following locations:
-
-* https://javaee.github.io/glassfish/[GlassFish Server Community]
-(`https://javaee.github.io/glassfish/`)
-* http://www.oracle.com/technetwork/index.html[Oracle Developer
-Information] (`http://www.oracle.com/technetwork/index.html`)
-* http://www.oracle.com/technetwork/indexes/documentation/index.html[Oracle
-product documentation]
-(`http://www.oracle.com/technetwork/indexes/documentation/index.html`)
-
-
diff --git a/docs/release-notes/src/main/jbake/content/title.adoc b/docs/release-notes/src/main/jbake/content/title.adoc
deleted file mode 100644
index 46e7dd7..0000000
--- a/docs/release-notes/src/main/jbake/content/title.adoc
+++ /dev/null
@@ -1,47 +0,0 @@
-type=page
-status=published
-title=Eclipse GlassFish Server Release Notes, Release 5.1
-next=preface.html
-prev=toc.html
-~~~~~~
-Eclipse GlassFish Server Release Notes, Release 5.1
-===================================================
-
-[[eclipse-glassfish-server]]
-Eclipse GlassFish Server
-------------------------
-
-Release Notes
-
-Release 5.1
-
-Contributed 2018, 2019
-
-These Release Notes provide late-breaking information about GlassFish
-Server 5.1 software and documentation. Also included are a summary of
-new product features in the 5.1 release, and descriptions and
-workarounds for known issues and limitations.
-
-[[sthref1]]
-
-'''''
-
-Eclipse GlassFish Server Release Notes, Release 5.1
-
-Copyright © 2013, 2019 Oracle and/or its affiliates. All rights reserved.
-
-This program and the accompanying materials are made available under the 
-terms of the Eclipse Public License v. 2.0, which is available at 
-http://www.eclipse.org/legal/epl-2.0. 
-
-SPDX-License-Identifier: EPL-2.0
-
-Oracle and Java are registered trademarks of Oracle and/or its 
-affiliates. Other names may be trademarks of their respective owners. 
-
-Intel and Intel Xeon are trademarks or registered trademarks of Intel 
-Corporation. All SPARC trademarks are used under license and are 
-trademarks or registered trademarks of SPARC International, Inc. AMD, 
-Opteron, the AMD logo, and the AMD Opteron logo are trademarks or 
-registered trademarks of Advanced Micro Devices. UNIX is a registered 
-trademark of The Open Group. 
diff --git a/docs/release-notes/src/main/jbake/jbake.properties b/docs/release-notes/src/main/jbake/jbake.properties
deleted file mode 100644
index 546d09c..0000000
--- a/docs/release-notes/src/main/jbake/jbake.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-site.host=http://jbake.org
-render.tags=false
-render.sitemap=false
-render.archive=false
-render.feed=false
-asciidoctor.option.safe=0
-asciidoctor.attributes.export=true
diff --git a/docs/release-notes/src/main/jbake/templates/footer.ftl b/docs/release-notes/src/main/jbake/templates/footer.ftl
deleted file mode 100644
index 6f2b09e..0000000
--- a/docs/release-notes/src/main/jbake/templates/footer.ftl
+++ /dev/null
@@ -1,46 +0,0 @@
-<#-- a footer template fragment included in the page template -->
-<hr />
-
-<table width="90%" id="bottom-nav" cellspacing="0" cellpadding="0">
-	<colgroup>
-		<col width="12%"/>
-		<col width="12%"/>
-		<col width="*"/>
-	</colgroup>
-	<tr>		
-	    <#if content.prev??>
-		<td align="left">
-		<a href="${content.prev}">
-			<span class=" vector-font"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Previous</span>
-		</a>
-		</td>
-		</#if>
-
-		<#if content.next??>
-		<td align="left">
-		<a href="${content.next}">
-			<span class="vector-font"><i class="fa fa-arrow-circle-right vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Next</span>
-		</a>
-		</td>
-		</#if>
-
-		<td align="right">
-		<a href="toc.html">
-			<span class="vector-font"><i class="fa fa-list vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Contents</span>
-		</a>
-		</td>
-	</tr>
-</table>
-
-<span id="copyright">
-        <img src="img/eclipse_foundation_logo_tiny.png" height="20px" alt="Eclipse Foundation Logo" align="top"/>&nbsp;            
-        <span >Copyright&nbsp;&copy;&nbsp;2019,&nbsp;Oracle&nbsp;and/or&nbsp;its&nbsp;affiliates.&nbsp;All&nbsp;rights&nbsp;reserved.</span>
-</span>
-
-<p align="center" class="beta">${config.status!}</p>
-
-</body>
-</html>
diff --git a/docs/release-notes/src/main/jbake/templates/header.ftl b/docs/release-notes/src/main/jbake/templates/header.ftl
deleted file mode 100644
index 82ebb36..0000000
--- a/docs/release-notes/src/main/jbake/templates/header.ftl
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html>
-<#-- a header template fragment included in the page template -->
-<html lang="en">
-  <head>
-    <meta charset="utf-8"/>
-    <title><#if (content.title)??><#escape x as x?xml>${content.title}</#escape></#if></title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <link href="<#if (content.rootpath)??>${content.rootpath}<#else></#if>css/style.css" rel="stylesheet">
-    <script src="https://use.fontawesome.com/96c4d89611.js"></script>
-  </head>
-  <body>
-<table id="doc-title" cellspacing="0" cellpadding="0">
-  <tr>
-  <td align="left" valign="top">
-  <b>${content.title}</b><br />
-      <p class="beta">${config.status!}</p>
-  </td>
-  </tr>
-</table>
-<hr />
-
-<table width="90%" id="top-nav" cellspacing="0" cellpadding="0">
-	<colgroup>
-		<col width="12%"/>
-		<col width="12%"/>
-		<col width="*"/>
-	</colgroup>
-	<tr>
-	    <#if content.prev??>
-		<td align="left">
-		<a href="${content.prev}">
-			<span class="vector-font"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Previous</span>
-		</a>
-		</td>
-	    </#if>
-
-	    <#if content.next??>
-		<td align="left">
-		<a href="${content.next}">
-			<span class=" vector-font"><i class="fa fa-arrow-circle-right vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Next</span>
-		</a>
-		</td>
-	    </#if>
-
-		<td align="right">
-		<a href="toc.html">
-			<span class=" vector-font"><i class="fa fa-list vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Contents</span>
-		</a>
-		</td>
-	</tr>
-</table>
-
diff --git a/docs/release-notes/src/main/jbake/templates/menu.ftl b/docs/release-notes/src/main/jbake/templates/menu.ftl
deleted file mode 100644
index 888c03d..0000000
--- a/docs/release-notes/src/main/jbake/templates/menu.ftl
+++ /dev/null
@@ -1 +0,0 @@
-<#-- a menu bar template fragment included in the page template -->
\ No newline at end of file
diff --git a/docs/release-notes/src/main/jbake/templates/page.ftl b/docs/release-notes/src/main/jbake/templates/page.ftl
deleted file mode 100644
index eca51db..0000000
--- a/docs/release-notes/src/main/jbake/templates/page.ftl
+++ /dev/null
@@ -1,8 +0,0 @@
-<#-- a top level page layout template -->
-
-<#include "header.ftl">
-<#include "menu.ftl">
-
-${content.body}
-
-<#include "footer.ftl">
\ No newline at end of file
diff --git a/docs/security-guide/README.md b/docs/security-guide/README.md
deleted file mode 100644
index a3ec2b6..0000000
--- a/docs/security-guide/README.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# A JBake project template
-
-## About JBake
-
-JBake is a static site generator, it's inspired from jekyll and written
-in java.  The basic idea is to have templates for the structure of the
-page, and the body generated from asciidoc content.
-
-## Pre requisites
-
-- Maven
-- JDK8+
-
-Deploying to Github will require password less authentication.
-
-This is done by exporting your SSH public key into your Github account.
-
-## Build the site locally
-
-The site is generated under target/staging.
-
-Open file:///PATH_TO_PROJECT_DIR/target/staging in a browser to view the site.
-
-```
-mvn generate-resources
-```
-
-Or you can invoke the JBake plugin directly.
-
-```
-mvn jbake:build
-```
-
-### Rebuild the site on changes
-
-```
-mvn jbake:watch
-```
-
-If you keep this command running, changes to the sources will be
-detected and the site will be rendered incrementally.
-
-This is convenient when writing content.
-
-### Serve the site locally
-
-```
-mvn jbake:serve
-```
-
-If a webserver is required (e.g. absolute path are used), this command
-will start a webserver (jetty) at http://localhost:8820.  It will also
-watch for changes and rebuild incrementally.
-
-## Deploy the site to Github Pages
-
-```
-mvn deploy
-```
-
-## Produce a zip file for download
-
-To produce a zip file containing the generated html files, use:
-
-```
-mvn package
-```
-
-When making a release on GitHub, this zip file should be added to the release.
-
-## Links
-
-- [JBake maven plugin documentation](https://github.com/Blazebit/jbake-maven-plugin)
-- [JBake documentation](http://jbake.org/docs/2.5.1)
-- [Freemarker documentation](http://freemarker.org/docs)
-- [AsciiDoc User Guide](http://asciidoc.org/userguide.html)
-- [Asciidoctor quick reference](http://asciidoctor.org/docs/asciidoc-syntax-quick-reference)
diff --git a/docs/security-guide/pom.xml b/docs/security-guide/pom.xml
index 19e2658..fd9442f 100644
--- a/docs/security-guide/pom.xml
+++ b/docs/security-guide/pom.xml
@@ -22,11 +22,10 @@
     <parent>
         <groupId>org.glassfish.docs</groupId>
         <artifactId>parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../parent</relativePath>
     </parent>
-    <groupId>org.glassfish.docs</groupId>
     <artifactId>security-guide</artifactId>
     <packaging>jar</packaging>
-    <name>Eclipse GlassFish Server Security Guide, Release 5.1</name>
+    <name>Eclipse GlassFish Server Security Guide, Release 7</name>
 </project>
diff --git a/docs/security-guide/src/main/asciidoc/administrative-security.adoc b/docs/security-guide/src/main/asciidoc/administrative-security.adoc
new file mode 100644
index 0000000..e0ad496
--- /dev/null
+++ b/docs/security-guide/src/main/asciidoc/administrative-security.adoc
@@ -0,0 +1,962 @@
+type=page
+status=published
+title=Managing Administrative Security
+next=running-in-secure-environment.html
+prev=security-in-cluster-mode.html
+~~~~~~
+
+= Managing Administrative Security
+
+[[GSSCG00039]][[gknqh]]
+
+
+[[managing-administrative-security]]
+== 5 Managing Administrative Security
+
+This chapter describes how to manage administrative security by using
+the secure administration feature.
+
+This chapter assumes that you are familiar with security features such
+as authentication, authorization, and certificates. If you are not,
+first see link:system-security.html#ablnk[Administering System Security].
+
+Instructions for accomplishing the tasks specific to {productName} by
+using the Administration Console are contained in the Administration
+Console online help.
+
+* link:#gkocp[Secure Administration Overview]
+* link:#gkofl[How Secure Admin Works: The Big Picture]
+* link:#gkofe[Considerations When Running {productName} With Default Security]
+* link:#gkomz[Running Secure Admin]
+* link:#gkolu[Additional Considerations When Creating Local Instances]
+* link:#gkqah[Secure Admin Use Case]
+* link:#gkodn[Upgrading an SSL-Enabled Secure GlassFish Installation to Secure Admin]
+
+[[gkocp]][[GSSCG00162]][[secure-administration-overview]]
+
+=== Secure Administration Overview
+
+The secure administration feature allows an administrator to secure all
+administrative communication between the domain administration server
+(DAS), any remote instances, and administration clients such as the
+`asadmin` utility, the administration console, and REST clients.
+
+In addition, secure administration helps to prevent DAS-to-DAS and
+instance-to-instance traffic, and carefully restricts
+administration-client-to-instance traffic.
+
+The secure administration feature, which is henceforth referred to as
+secure admin, provides a secure environment, in which you can be
+confident that rogue users or processes cannot intercept or corrupt
+administration traffic or impersonate legitimate {productName} components.
+
+When you install {productName} or create a new domain, secure admin
+is disabled by default. When secure admin is disabled, {productName}
+does not encrypt administrative communication among the system
+components and does not accept administrative connections from remote hosts.
+
+The following subcommands enable and disable secure admin:
+
+* enable-secure-admin +
+The `enable-secure-admin` subcommand turns on
+secure admin. {productName} uses SSL encryption to protect subsequent
+administrative traffic and will accept remote administrative
+connections. Enabling secure admin affects the entire domain, including
+the DAS and all instances. The DAS must be running, and not any
+instances, when you run `enable-secure-admin`. You must restart the DAS
+immediately after enabling secure admin, and then start any instances
+you want to run.
++
+[NOTE]
+====
+The `enable-secure-admin` subcommand fails if any administrative user
+has a blank password.
+====
+
+* disable-secure-admin +
+The `disable-secure-admin` subcommand turns off
+secure admin. {productName} no longer encrypts administrative
+messages and will no longer accept remote administration connections.
+Disabling secure admin affects the entire domain, including the DAS and
+all instances. The DAS must be running , and not any instances, when you
+run `disable-secure-admin`. You must restart the DAS immediately after
+disabling secure admin, and then start any instances you want to run.
++
+If secure admin is not enabled, this subcommand has no effect.
+
+This section describes how to use these commands to run secure admin,
+and the implications of doing so.
+
+[[gkofl]][[GSSCG00163]][[how-secure-admin-works-the-big-picture]]
+
+=== How Secure Admin Works: The Big Picture
+
+Secure admin is a domain-wide setting. It affects the DAS and all
+instances and all administration clients. This section describes the
+following topics:
+
+* link:#gkqce[Functions Performed by Secure Admin]
+* link:#gkocv[Which Administration Account is Used?]
+* link:#gkodi[What Authentication Methods Are Used for Secure Administration?]
+* link:#gkpex[Understanding How Certificate Authentication is Performed]
+* link:#gkoey[What Certificates Are Used?]
+* link:#glgmy[An Alternate Approach: Using Distinguished Names to Specify Certificates]
+* link:#gkqjj[Guarding Against Unwanted Connections]
+
+[[gkqce]][[GSSCG00227]][[functions-performed-by-secure-admin]]
+
+==== Functions Performed by Secure Admin
+
+The `enable-secure-admin` subcommand performs the following functions.
+Subsequent sections describe these functions in more detail.
+
+* Enables the secure admin behavior, optionally setting which aliases
+  are to be used for identifying the DAS and instance certificates.
+
+* Adjusts all configurations in the domain, including default-config.
+
+* Adjusts Grizzly settings:
+** SSL/TLS is enabled in the DAS's admin listener and the instances'
+   admin listeners.
+** Port unification (that is, HTTP and HTTPS are handled by the same port),
+   http—to—https redirection, and client authentication
+  (client-auth=want) are enabled.
+** Configures SSL to use the administration truststore.
+** Configures SSL to use the administration keystore and the correct
+   alias (for the self-signed cert) for authenticating itself.
+   (You can use your own certificate instead, as described in link:#gkped[
+   Using Your Own Certificates].
+
++
+The Grizzly configuration on the DAS and each instance is identical,
+with the exception that the DAS uses the `s1as` alias for SSL/TLS
+authentication and the instances use the `glassfish-instance` alias.
+(These alias names are the default, and you can change them.) +
+A server restart is required to change the Grizzly adapter behavior. +
+The restart also synchronizes the restarted instances. When you start
+the instances, the DAS delivers the updated configuration to the instances.
+
+[[gkocv]][[GSSCG00228]][[which-administration-account-is-used]]
+
+==== Which Administration Account is Used?
+
+If only one administration account exists in the realm, {productName}
+treats that account as the current default administration account. In
+this case, when you run an `asadmin` command, you do not need to specify
+the username. If a password for that username is required, you need to
+specify it, typically by using the `--passwordfile` option or by letting
+`asadmin` prompt you for it.
+
+By default, {productName} includes a single account for user "admin"
+and an empty password. Therefore, if you make no other changes before
+you enable secure admin, "admin" is the initial default username and no
+password is required. You need to decide whether enabling secure admin
+without also requiring a password makes sense in your environment.
+
+If multiple admin accounts exist, then {productName} does not
+recognize any admin username as the default. You must then specify a
+valid username via the `-—user` option when you use the `asadmin`
+command (or by or defining the `AS_ASDMIN_USER` environment variable),
+and its associated password (if the associated password is not empty).
+
+The username and password used for a login attempt must match the
+username and password (if required) for an account defined in the realm,
+and you must have set up the account as a member of the admin group.
+
+[[gkodi]][[GSSCG00229]][[what-authentication-methods-are-used-for-secure-administration]]
+
+==== What Authentication Methods Are Used for Secure Administration?
+
+The secure admin feature enforces security via the following
+authentication methods:
+
+* The DAS and instances authenticate to each other via mutual (two-way)
+SSL/TLS certificate authentication. The DAS authenticates to clients via
+one-way SSL/TLS certificate authentication.
++
+The domain creation process creates a default keystore and truststore,
+plus a default private key for the DAS. Secure admin uses this initial
+configuration to set up the truststore so that the DAS and instances
+always trust each other.
+* Remote administration clients (`asadmin`, administration console,
+browsers, and IDEs) must accept the public certificate presented by the
+DAS. If accepted, remote administration clients then send a user name
+and password (HTTP Basic authentication) in the HTTP Authorization
+header. The receiving DAS or instance makes sure those credentials are
+valid in its realm, and authenticates and authorizes the user.
+* A locally-running `asadmin` (that is, connecting to an instance on the
+same host) authenticates and authorizes to the co-located instance using
+a locally-provisioned password.
+* Credentials or other sensitive information sent over the network are
+always encrypted if secure admin is enabled. No credentials are sent in
+the clear if secure admin is enabled. (If secure admin is disabled,
+credentials are sent in the clear.) Messages between administration
+clients and the DAS, between the DAS and remote instances, and between
+local administration clients and instances are encrypted using SSL/TLS.
+This is true even if you explicitly set the `asadmin` `-—secure` option
+to false.
+
+link:#gkobl[Table 5-1] shows which authentication methods are employed
+when secure admin is enabled or disabled.
+
+[[sthref35]][[gkobl]]
+
+Table 5-1 Authentication Methods Employed
+
+[width="100%",cols="30%,30%,40%",options="header",]
+|===
+|Access Method |When Secure Admin is Disabled |When Secure Admin is Enabled
+
+|Remote administration access to the DAS
+|Rejected.
+|Username/password authentication. (Client must also accept server certificate.)
+
+|Communication between DAS and instances
+|Cleartext messages. No mutual authentication.
+|SSL-encrypted messages. SSL mutual authentication using certificates.
+
+|Communication between administration clients and DAS
+|Cleartext messages. No DAS authentication.
+|SSL-encrypted messages. DAS uses SSL certificate server authentication.
+
+|Local asadmin client to instance on same node
+|Cleartext messages. Locally-provisioned password mechanism is used.
+|SSL-encrypted messages. Locally-provisioned password mechanism is used.
+|===
+
+
+[[gkpex]][[GSSCG00230]][[understanding-how-certificate-authentication-is-performed]]
+
+==== Understanding How Certificate Authentication is Performed
+
+The domain creation process creates a primary (private) key and a
+self-signed certificate for the DAS, and a separate private key and
+self-signed certificate for remote instances.
+
+Then, when you enable secure admin, the following actions are performed:
+
+* Both private keys are stored in the domain-wide DAS keystore file, keystore.jks.
+* Both public certificates are stored in the domain-wide DAS truststore
+  file, cacerts.jks.
+
+When the DAS sends a message to an instance:
+
+1. SSL on the instance asks the DAS to provide an SSL/TLS certificate.
+2. The DAS sends the certificate with the alias you specified using the
+`--adminalias` option when you ran the `enable-secure-admin` subcommand.
+3. SSL on the instance makes sure the certificate is valid and
+{productName} makes sure that the security Principal associated with
+the incoming request (provided automatically by Grizzly and the SSL/TLS
+Java implementation) matches the Principal associated with the
+adminalias from the instance's truststore.
+
+[[gkoey]][[GSSCG00231]][[what-certificates-are-used]]
+
+==== What Certificates Are Used?
+
+When you enable secure admin, you can optionally set the `--adminalias`
+and `--instancealias` options that tell secure admin which aliases to
+use for the DAS and instance certificates.
+
+The DAS uses the alias associated with the `--instancealias` option to
+check incoming requests that use SSL/TLS cert authentication.
+Conversely, instances use the alias associated with the `--adminalias`
+option to check incoming requests with certificate authentication.
+
+By default, `--adminalias` of the `enable-secure-admin` subcommand uses
+the `s1as` alias, and the `--instancealias` option uses the
+`glassfish-instance` alias, both of which identify the default
+self-signed certificates.
+
+You can use your tool of choice, such as keytool, to list the default
+self-signed certificates in the keystore, similar to the following:
+
+[NOTE]
+====
+You can list the contents of the keystore without supplying a password.
+However, for a request that affects the private key, such as the
+keytool.exe `--certreq` option, the keystore password is required. This
+is the master password and has a default value of changeit unless you
+change it with the `change-master-password` subcommand.
+====
+
+[source]
+----
+keytool.exe -list -keystore keystore.jks
+Enter keystore password:
+
+*****************  WARNING WARNING WARNING  *****************
+* The integrity of the information stored in your keystore  *
+* has NOT been verified!  In order to verify its integrity, *
+* you must provide your keystore password.                  *
+*****************  WARNING WARNING WARNING  *****************
+
+Keystore type: JKS
+Keystore provider: SUN
+
+Your keystore contains 2 entries
+
+glassfish-instance, Jan 3, 2011, PrivateKeyEntry,
+Certificate fingerprint (MD5): 06:A4:83:84:57:52:9C:2F:E1:FD:08:68:BB:2D:ED:E8
+s1as, Jan 3, 2011, PrivateKeyEntry,
+Certificate fingerprint (MD5): 8B:7D:5A:4A:32:36:1B:5D:6A:29:66:01:B0:A3:CB:85
+----
+
+The `--adminalias` and `--instancealias` values are maintained. Because
+of this design, normal instance creation operations (create-instance
+over SSH and create-local-instance) apply the up-to-date keystore,
+truststore, and configuration to each instance.
+
+[[gkpfi]][[GSSCG00201]][[self-signed-certificates-and-trust]]
+
+===== Self-Signed Certificates and Trust
+
+The self-signed certificates that {productName} uses might not be
+trusted by clients by default because a certificate authority does not
+vouch for the authenticity of the certificate. If you enable secure
+admin and then contact the DAS using an administration client, that
+client will detect whether the certificate is automatically trusted.
+
+Browsers will warn you, let you view the certificate, and ask you to
+reject the certificate, accept it once, or accept it indefinitely, as
+shown in link:#gkqpv[Figure 5-1].
+
+[[GSSCG00002]][[gkqpv]]
+
+
+.*Figure 5-1 Sample Browser Response to Untrusted Certificate*
+image:img/accept-certif.png[
+"This screen shot shows how a browser might respond to an untrusted certificate."]
+
+
+Similarly, the first time `asadmin` receives an untrusted certificate,
+it displays the certificate and lets you accept it or reject it, as
+follows: (If you accept it, `asadmin` also accepts that certificate in
+the future. )
+
+[source]
+----
+D:\glassfish7\glassfish\bin>asadmin enable-secure-admin
+Command enable-secure-admin executed successfully.
+
+
+D:\glassfish7\glassfish\bin>asadmin stop-domain domain1
+Waiting for the domain to stop .......
+Command stop-domain executed successfully.
+
+D:\glassfish7\glassfish\bin>asadmin start-domain domain1
+Waiting for domain1 to start ..............................
+Successfully started the domain : domain1
+domain  Location: D:\glassfish7\glassfish\domains\domain1
+Log File: D:\glassfish7\glassfish\domains\domain1\logs\server.log
+Admin Port: 4848
+Command start-domain executed successfully.
+
+D:\glassfish7\glassfish\bin>asadmin list-domains
+[
+[
+  Version: V3
+  Subject: CN=machine.oracle.com, OU=GlassFish, O=Oracle Corporation, L=San
+ta Clara, ST=California, C=US
+  Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5
+
+  Key:  Sun RSA public key, 1024 bits
+  modulus: 916043595073784449632358756374297330881618062298549101072702252458856
+74079656358328568800001548507219262910864311924824938195045822088563459253216383
+21100660819657204757523896415606833471499564071226722478056407102318862796797465
+6245090519956376357288295037519504394674686082145398885236913866246525691704749
+  public exponent: 65537
+  Validity: [From: Tue Jan 04 14:30:08 EST 2011,
+               To: Fri Jan 01 14:30:08 EST 2021]
+  Issuer: CN=machine.oracle.com, OU=GlassFish, O=Oracle Corporation, L=Sant
+a Clara, ST=California, C=US
+  SerialNumber: [    4d237540]
+
+Certificate Extensions: 1
+[1]: ObjectId: 2.5.29.14 Criticality=false
+SubjectKeyIdentifier [
+KeyIdentifier [
+0000: AF 8B 90 1E 51 9A 80 1B   EB A4 D9 C6 01 8A A0 FD  ....Q...........
+0010: DE EC 83 8A                                        ....
+]
+]
+
+]
+  Algorithm: [SHA1withRSA]
+  Signature:
+0000: 3F 2B 30 CE 97 0B 5E F3   72 0E 60 18 8D 3B 04 DC  ?+0...^.r.`..;..
+0010: 26 E6 7A 6F D0 19 CC 26   1D 90 C0 DE 33 4E 53 FB  &.zo...&....3NS.
+0020: DC E7 AE 78 9E BA EF 14   86 57 36 D4 3E 9B C9 FB  ...x.....W6.>...
+0030: C0 B4 EF 72 27 D9 4F 79   1F 89 91 B8 96 26 33 64  ...r'.Oy.....&3d
+0040: 9F 4B 04 4B 83 B9 BF 4D   54 B4 8F 75 17 1A 51 BD  .K.K...MT..u..Q.
+0050: F3 69 94 CE 90 95 08 55   2C 07 D2 23 AC AE EC 6D  .i.....U,..#...m
+0060: 84 B6 3D 00 FB FE 92 50   37 1A 2D 00 F1 21 5C E6  ..=....P7.-..!\.
+0070: 1F 39 26 B2 5D C1 FD C8   B1 4F CC EE 26 84 B8 B5  .9&.]....O..&...
+
+]
+Do you trust the above certificate [y|N] -->
+----
+
+`asadmin` saves certificates you accept in the file `.asadmintruststore`
+in your log-in default directory. You do not generally need to work with
+the file directly, but if you delete or move the file, `asadmin` will
+prompt you again when it receives untrusted certificates.
+
+Some `asadmin` commands such as run-script can contact an instance
+directly to retrieve information (but not to make configuration
+changes). The instances do not use the same certificate as the DAS, so
+in these cases `asadmin` then prompts you to accept or reject the
+instance certificate.
+
+[[gkped]][[GSSCG00202]][[using-your-own-certificates]]
+
+===== Using Your Own Certificates
+
+By default, `--adminalias` of the `enable-secure-admin` subcommand uses
+the `s1as` alias, and the `--instancealias` option uses the
+`glassfish-instance` alias, both of which identify the default
+self-signed certificates.
+
+You can instead have {productName} use your own certificates for this
+purpose by first adding your certificates to the keystore and
+truststore, and then running `enable-secure-admin` and specifying the
+aliases for your certificates.
+
+It is also possible to use `s1as` and `glassfish-instance` as the alias
+names for your own certificates. A benefit of doing so is that you would
+not have to specify alias names with the `enable-secure-admin`
+subcommand.
+
+In addition, your own certificate identified by the `s1as` alias would
+be used in all other cases within the domain where the `s1as` alias is
+used (by default), such as in the SSL configuration of the IIOP and
+http-listener-2 listeners, and as the `encryption.key.alias` and
+`signature.key.alias` used for provider configuration in the SOAP
+authentication layer for Message Security configuration.
+
+You may find the wide-reaching effect of using the `s1as` alias with
+your own certificate to be either a useful feature or an unintended
+consequence. Therefore, you should understand the implications of using
+the `s1as` alias before doing so.
+
+If you decide to use the `s1as` and `glassfish-instance` aliases with
+your own certificates, you will first need to disable secure admin (if
+enabled) and then change or delete the exiting `s1as` alias from both
+the `keystore.jks` keystore and `cacerts.jks` truststore for the DAS.
+You can use the `--changealias` or`--delete` option of `keytool` to
+accomplish this. Then, import your own certificates.
+
+When you enable secure admin, the DAS and the instances then have copies
+of the same keystore and truststore
+
+[[glgmy]][[GSSCG00232]][[an-alternate-approach-using-distinguished-names-to-specify-certificates]]
+
+==== An Alternate Approach: Using Distinguished Names to Specify Certificates
+
+By default, the DAS uses the alias associated with the `--instancealias`
+option to check incoming requests that use SSL/TLS cert authentication.
+Conversely, instances use the alias associated with the `--adminalias`
+option to check incoming requests with certificate authentication.
+
+The link:reference-manual/enable-secure-admin-principal.html#GSRFM00131[
+`enable-secure-admin-principal`] subcommand
+provides an alternate approach. `enable-secure-admin-principal`
+instructs {productName} to accept admin requests when accompanied by
+an SSL certificate with the specified distinguished name (DN).
+
+[NOTE]
+====
+Any certificate you specify with `enable-secure-admin-principal` must
+either be issued by a trusted certificate authority or, if it is
+self-signed, must already be in the {productName} truststore.
+====
+
+For example, assume that you write your own admin client that uses the
+REST interface. When your client establishes the connection, it can
+choose which certificate to use for its client cert. You would then
+specify the DN of this certificate to `enable-secure-admin-principal`.
+
+You must specify either the DN or the `--alias` option of the
+`enable-secure-admin-principal` subcommand.
+
+If you specify the DN, {productName} records the value you specify as
+the DN. You specify the DN as a comma-separated list in quotes. For
+example,
+`"CN=system.amer.oracle.com,OU=GlassFish,O=Oracle Corporation,L=Santa Clara,ST=California,C=US"`.
+
+[NOTE]
+====
+The `enable-secure-admin-principal` subcommand accepts the string you
+enter and does not immediately validate it. However, secure admin must
+be able to match the DN you specify in order to use it.
+====
+
+If you have sufficient privileges to view the content of the keystore,
+you can use keytool to display the DN of a certificate:
+
+[source]
+----
+keytool.exe -v -list -keystore keystore.jks
+Enter keystore password:
+
+Keystore type: JKS
+Keystore provider: SUN
+
+Your keystore contains 2 entries
+
+Alias name: glassfish-instance
+Creation date: Jul 7, 2011
+Entry type: PrivateKeyEntry
+Certificate chain length: 1
+Certificate[1]:
+Owner: CN=systemname.amer.oracle.com-instance, OU=GlassFish,
+O=Oracle Corporation, L=Santa Clara, ST=California, C=US
+Issuer: CN=systemname.amer.oracle.com-instance, OU=GlassFish, O=Oracle Corporation,
+ L=Santa Clara, ST=California, C=US
+Serial number: 4e15d6e7
+Valid from: Thu Jul 07 11:55:19 EDT 2011 until: Sun Jul 04 11:55:19 EDT 2021
+Certificate fingerprints:
+         MD5:  05:6E:01:D6:CE:9D:29:DA:55:D9:10:5E:BE:CC:55:05
+         SHA1: 2A:6D:A2:52:A5:2B:ED:DE:CD:B4:76:4A:65:9D:B5:79:A6:EA:3C:10
+         Signature algorithm name: SHA1withRSA
+         Version: 3
+
+Extensions:
+
+#1: ObjectId: 2.5.29.14 Criticality=false
+SubjectKeyIdentifier [
+KeyIdentifier [
+0000: 96 99 36 B6 CF 60 1E 8A   AE 25 75 4E C8 34 AA AB  ..6..`...%uN.4..
+0010: E1 3B CF 03                                        .;..
+]
+]
+----
+
+If you use the "`--alias` aliasname" form, then {productName} looks
+in its truststore for a certificate with the specified alias and uses
+the DN associated with that certificate. alias-name must be an alias
+associated with a certificate currently in the truststore. Therefore,
+you may find it most useful for self-signed certificates for which you
+know the alias.
+
+If you have sufficient privileges to view the contents of the
+truststore, you can use keytool to display the alias of a certificate:
+
+[source]
+----
+keytool.exe -v -list -keystore cacerts.jks
+Enter keystore password:
+:
+:
+Alias name: glassfish-instance
+Creation date: Jul 7, 2011
+Entry type: trustedCertEntry
+
+Owner: CN=systemname.amer.oracle.com-instance, OU=GlassFish, O=Oracle Corporation,
+L=Santa Clara, ST=California, C=US
+Issuer: CN=systemname.amer.oracle.com-instance, OU=GlassFish, O=Oracle Corporation,
+ L=Santa Clara, ST=California, C=US
+Serial number: 4e15d6e7
+Valid from: Thu Jul 07 11:55:19 EDT 2011 until: Sun Jul 04 11:55:19 EDT 2021
+Certificate fingerprints:
+         MD5:  05:6E:01:D6:CE:9D:29:DA:55:D9:10:5E:BE:CC:55:05
+         SHA1: 2A:6D:A2:52:A5:2B:ED:DE:CD:B4:76:4A:65:9D:B5:79:A6:EA:3C:10
+         Signature algorithm name: SHA1withRSA
+         Version: 3
+
+Extensions:
+
+#1: ObjectId: 2.5.29.14 Criticality=false
+SubjectKeyIdentifier [
+KeyIdentifier [
+0000: 96 99 36 B6 CF 60 1E 8A   AE 25 75 4E C8 34 AA AB  ..6..`...%uN.4..
+0010: E1 3B CF 03                                        .;..
+]
+]
+----
+
+When you run `enable-secure-admin`, {productName} automatically
+records the DNs for the admin alias and the instance alias, whether you
+specify those values or use the defaults. You do not need to run
+`enable-secure-admin-principal` yourself for those certificates.
+
+Other than these certificates, you must run
+`enable-secure-admin-principal` for any other DN that {productName}
+should authorize to send admin requests. This includes DNs corresponding
+to trusted certificates (those with a certificate chain to a trusted
+authority.)
+
+You can run `enable-secure-admin-principal` multiple times so that
+{productName} accepts admin requests from a client sending a
+certificate with any of the DNs you specify.
+
+The following example shows how to specify a DN for authorizing access
+in secure administration:
+
+[source]
+----
+asadmin> enable-secure-admin-principal
+"CN=system.amer.oracle.com,OU=GlassFish,
+O=Oracle Corporation,L=Santa Clara,ST=California,C=US"
+
+Command enable-secure-admin-principal executed successfully.
+----
+
+You can use the link:reference-manual/disable-secure-admin-principal.html#GSRFM00123[`disable-secure-admin-principal`]
+subcommand to disable a specific certificate for authenticating and
+authorizing access in secure admin. You must specify either the DN or
+the `--alias` option of the `disable-secure-admin-principal` subcommand.
+To disable multiple certificates for authenticating and authorizing
+access in secure admin, run the `disable-secure-admin-principal`
+subcommand multiple times.
+
+You can use the link:reference-manual/list-secure-admin-principals.html#GSRFM00200[`list-secure-admin-principals`]
+subcommand to list the certificates for which {productName} accepts
+admin requests from clients.
+
+[[gkqjj]][[GSSCG00233]][[guarding-against-unwanted-connections]]
+
+==== Guarding Against Unwanted Connections
+
+Secure admin guards against unwanted connections in several ways:
+
+* DAS-to-DAS, instance-to-instance:
+
+** The DAS and the instances have copies of the same truststore, which
+contains the public certificate of the DAS and the separate public
+certificate that is used by all instances. In addition, {productName}
+includes a unique, generated "domain ID" that servers use to ensure that
+admin requests from other {productName}s originate from the correct
+domain.
+
+** DAS-to-other-DAS communication is not authenticated because each
+different DAS will have its own self-signed certificate that is not in
+the truststore of the other DAS.
+
+** DAS-to-itself communication is unlikely unless you were to
+misconfigure the admin listener port for an instance on the same host so
+it is the same as for the DAS. Similarly, instance-to-instance traffic
+is unlikely unless you were to misconfigure listener ports for instances
+on the same host.
++
+To prevent both of these situations, both cases are handled by making
+sure that the connecting Principal (alias) is not the running Principal.
+secure admin ensures that if the client has authenticated using SSL/TLS
+client authentication that the Principal associated with the remote
+client is not the same as the current process. That is, the DAS makes
+sure that the Principal is not itself. Similarly, each instance ensures
+that the client is not an instance. (The instances share the same
+self-signed certificate and therefore are mapped to the same Principal.)
+* Remote client-to-instance:
++
+Remote `asadmin` clients are unable to connect directly to instances. If
+the user on host "test1" runs a local command but specifies a remote
+instance on host "test2," `asadmin` on test1 will read and send that
+locally-provisioned password. The instance on "test2" will have a
+different locally-provisioned password and so the authentication attempt
+will fail.
++
+Therefore, a user on "test1" will not be able to run a remote command
+targeting an instance on "test2."
+
+[[gkofe]][[GSSCG00164]][[considerations-when-running-glassfish-server-with-default-security]]
+
+=== Considerations When Running {productName} With Default Security
+
+In {productName}, the default admin account is username "admin" with
+an empty password. Admin clients provide empty credentials or none at
+all, and all are authenticated and authorized as that default admin
+user. None of the participants (clients, DAS, or instances) encrypts
+network messages.
+
+If this level of security is acceptable in your environment, no changes
+are needed and you do not need to enable secure administration. Imposing
+a heightened level of security is optional.
+
+However, consider link:#gkode[Table 5-2], which shows which operations
+are accepted and rejected when secure admin is disabled.
+
+
+[NOTE]
+====
+When secure admin is disabled, {productName} does allow remote
+monitoring (read-only) access via the REST interface.
+====
+
+
+[[sthref37]][[gkode]]
+
+Table 5-2 Accepted and Rejected Operations if Secure Admin is Disabled
+
+[width="100%",cols="30%,25%,45%",options="header",]
+|===
+|Operation |Run From Same System as DAS |Run From Remote System
+
+|`start-local-instance`
+|Functions as expected
+|Cannot sync with DAS.
+The instance starts but cannot communicate with the DAS.
+DAS will not see the instance.
+
+|Any other `asadmin` subcommand
+|Functions as expected
+|Rejected. A user sees the username/password prompt, but even correct entries are rejected.
+
+|Commands that use SSH. For example, `create-instance`.
+|Functions as expected; requires prior SSH configuration.
+|Functions as expected; requires prior SSH configuration.
+|===
+
+
+[[gkomz]][[GSSCG00165]][[running-secure-admin]]
+
+=== Running Secure Admin
+
+This section describes how to run secure admin. The section begins with
+prerequisites for running secure admin.
+
+[[gkokc]][[GSSCG00234]][[prerequisites-for-running-secure-admin]]
+
+==== Prerequisites for Running Secure Admin
+
+Before running {productName} with secure admin enabled, you must make
+sure that:
+
+1. The DAS is installed, initialized, and running.
+2. If one or more remote instances are installed and initialized, they
+   must not be running.
+3. Any administration clients you require are installed.
+4. The DAS communicates on the `-—adminport` you configure when you
+   create the domain, and defaults to 4848. An instance communicates on the
+   `ASADMIN_LISTENER_PORT` system property you specify for the instance.
+5. The user name and password sent by remote administration clients
+   (`asadmin`, administration console, browsers, and IDEs) must exist in
+   the realm and be in the admin group.
+6. The keystore and truststore for the domain exist. (They are created
+   by default when you create the domain or install {productName}.)
++
+If you are not using the default self-signed certificates, you must add
+   your own valid certificates and CA root in the keystore and truststore,
+   respectively.
+7. If you are not using the default self-signed certificates, create
+   two aliases corresponding to certificates in the keystore and
+   truststore: one that the DAS will use for authenticating itself in
+   administration traffic, and one that the instances will use for
+   authenticating itself in administration traffic.
+
+[[glgmh]][[GSSCG00235]][[an-alternate-approach-using-a-user-name-and-password-for-internal-authentication-and-authorization]]
+
+==== An Alternate Approach: Using A User Name and Password for Internal Authentication and Authorization
+
+By default, secure admin uses the {productName} self-signed
+certificates, via the aliases corresponding to these certificates, to
+authenticate the DAS and instances with each other and to authorize
+secure admin operations. Specifically, the DAS uses the (`s1as`) alias
+for authenticating itself and authorizing access in administration
+traffic, and instances use the (`glassfish-instance`) alias for
+authenticating themselves and authorizing access in secure admin traffic.
+
+As described in link:#gkped[Using Your Own Certificates], you can
+instead use your own certificates and their associated aliases for
+authenticating and authorizing the DAS and instances in administration traffic.
+
+As an alternative to this certificate-based authentication and
+authorization, you can instead use the
+link:reference-manual/enable-secure-admin-internal-user.html#GSRFM00130[
+`enable-secure-admin-internal-user`] subcommand to
+instruct all servers in the domain to authenticate to each other, and to
+authorize admin operations submitted to each other, using an existing
+admin user name and password rather than SSL certificates.
+
+[NOTE]
+====
+If secure admin is enabled, all {productName} processes continue to
+use SSL encryption to secure the content of the admin messages,
+regardless of how they authenticate to each other.
+====
+
+You might want to use the
+link:reference-manual/enable-secure-admin-internal-user.html#GSRFM00130[
+`enable-secure-admin-internal-user`] subcommand if your
+use case favors the use of a user name and password combination over the
+use of SSL certificates and aliases.
+
+This generally means that you must:
+
+1. Create a valid admin user.
++
+[source]
+----
+asadmin> create-file-user --authrealmname admin-realm --groups
+asadmin newAdminUsername
+----
+2. Create a password alias for the just-created password.
++
+[source]
+----
+asadmin> create-password-alias passwordAliasName
+----
+3. Use that user name and password for inter-process authentication and
+admin authorization.
++
+[source]
+----
+asadmin> enable-secure-admin-internal-user
+--passwordalias passwordAliasName
+newAdminUsername
+----
+
+The following example allows secure admin to use a user name and
+password alias for authentication and authorization between the DAS and
+instances, instead of certificates.
+
+[source]
+----
+asadmin> enable-secure-admin-internal-user
+--passwordalias passwordAliasName
+newAdminUsername
+----
+
+If {productName} finds at least one secure admin internal user, then
+if secure admin is enabled {productName} processes will not use SSL
+authentication and authorization with each other and will instead use
+user name password pairs.
+
+Most users who use this subcommand will need to set up only one secure
+admin internal user. If you set up more than one secure admin internal
+user, you should not make any assumptions about which user name and
+password pair {productName} will choose to use for any given admin
+request.
+
+As a general practice, you should not use the same user name and
+password pair for internal admin communication and for admin user login.
+That is, create at least one admin account specifically for internal
+admin communication.
+
+You can use the link:reference-manual/disable-secure-admin-internal-user.html#GSRFM00122[`disable-secure-admin-internal-user`]
+subcommand to disable secure admin from using the user name (instead of
+SSL certificates) to authenticate the DAS and instances with each other
+and to authorize admin operations. To disable multiple user names for
+authenticating and authorizing access in secure admin, run the
+`disable-secure-admin-internal-user` subcommand multiple times.
+
+You can use the link:reference-manual/list-secure-admin-internal-users.html#GSRFM00199[`list-secure-admin-internal-users`]
+subcommand to list the user names for which {productName}
+authenticate the DAS and instances with each other and authorizes admin
+operations.
+
+[[gkqby]][[GSSCG00236]][[example-of-running-enable-secure-admin]]
+
+==== Example of Running enable-secure-admin
+
+The following example shows how to enable secure admin for a domain
+using the default admin alias and the default instance alias. You must
+restart the DAS immediately after enabling secure admin.
+
+[NOTE]
+====
+The only indicator that secure admin is enabled is the successful status
+from the `enable-secure-admin` subcommand. When secure admin is running,
+the DAS and instances do not report the secure admin status.
+====
+
+[source]
+----
+asadmin> enable-secure-admin
+Command enable-secure-admin executed successfully.
+----
+
+The following example shows how to enable secure admin for a domain
+using an admin alias adtest and an instance alias intest. You can also
+use this command to modify an existing secure admin configuration to use
+different aliases.
+
+[source]
+----
+asadmin> enable-secure-admin --adminalias adtest --instancealias intest
+----
+
+The following example shows how to disable secure admin:
+[source]
+----
+asadmin> disable-secure-admin
+Command disable-secure-admin executed successfully.
+----
+
+You can use the following command to see the current state of secure
+admin in a domain:
+[source]
+----
+asadmin> get secure-admin.enabled
+secure-admin.enabled=false
+Command get executed successfully.
+----
+
+[[gkolu]][[GSSCG00166]][[additional-considerations-when-creating-local-instances]]
+
+=== Additional Considerations When Creating Local Instances
+
+If you use `xxx-local-instance` commands to set up local instances,
+either leave secure admin disabled, or enable it before you create or
+start the instances and leave it that way.
+
+However, if you use `xxx-instance` commands over SSH to manage remote
+instances, you can enable and disable secure admin, although this is not
+recommended because it can result in an inconsistent security model.
+
+[[gkqah]][[GSSCG00167]][[secure-admin-use-case]]
+
+=== Secure Admin Use Case
+
+This section describes a simple secure admin use case.
+
+In the
+`asadmin --secure=false --user me --passwordfile myFile.txt cmd ...` use
+case, the user submits a command with `--secure` set to false, and
+supplies password credentials.
+
+The important concept to note is that `asadmin` uses HTTPS because of
+the DAS redirection, even though the command sets `--secure` to false.
+`asadmin` sends the HTTP Authorization header along with the redirected request.
+
+In addition to the flow described here, certificate authentication is
+also performed as described in link:#gkqax[Table 5-3]. Also, the
+credentials that the user supplies are assumed to be valid administrator
+credentials for the DAS.
+
+[[sthref38]][[gkqax]]
+
+Table 5-3 asadmin --secure=false, With Username and Password
+
+[width="100%",cols="34%,33%,33%",options="header",]
+|===
+|asadmin |Grizzly |AdminAdapter
+
+|Sends HTTP request, no authorization header (because the transport is not secure).
+|
+|
+
+|
+|Returns 3xx status and redirects HTTP to HTTPS.
+|
+
+|Follows redirection, this time adding the Authorization header (because transport is now HTTPS).
+|
+|
+
+|
+|
+|Authenticates admin user and password from HTTP Authorization
+header in the realm Executes command, and responds with success status.
+|===
+
+
+[[gkodn]][[GSSCG00168]][[upgrading-an-ssl-enabled-secure-glassfish-installation-to-secure-admin]]
+
+=== Upgrading an SSL-Enabled Secure GlassFish Installation to Secure Admin
+
+If you enable secure admin on an SSL-enabled {productName}
+installation, secure admin uses the existing <ssl cert-nickname> value
+as the DAS adminalias for secure admin.
+
+
diff --git a/docs/security-guide/src/main/jbake/assets/img/accept-certif.png b/docs/security-guide/src/main/asciidoc/img/accept-certif.png
similarity index 100%
rename from docs/security-guide/src/main/jbake/assets/img/accept-certif.png
rename to docs/security-guide/src/main/asciidoc/img/accept-certif.png
Binary files differ
diff --git a/docs/security-guide/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png b/docs/security-guide/src/main/asciidoc/img/eclipse_foundation_logo_tiny.png
similarity index 100%
rename from docs/security-guide/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png
rename to docs/security-guide/src/main/asciidoc/img/eclipse_foundation_logo_tiny.png
Binary files differ
diff --git a/docs/security-guide/src/main/jbake/assets/img/jacc-providers.png b/docs/security-guide/src/main/asciidoc/img/jacc-providers.png
similarity index 100%
rename from docs/security-guide/src/main/jbake/assets/img/jacc-providers.png
rename to docs/security-guide/src/main/asciidoc/img/jacc-providers.png
Binary files differ
diff --git a/docs/security-guide/src/main/jbake/assets/img/securityrolemapping.png b/docs/security-guide/src/main/asciidoc/img/securityrolemapping.png
similarity index 100%
rename from docs/security-guide/src/main/jbake/assets/img/securityrolemapping.png
rename to docs/security-guide/src/main/asciidoc/img/securityrolemapping.png
Binary files differ
diff --git a/docs/security-guide/src/main/asciidoc/loe.adoc b/docs/security-guide/src/main/asciidoc/loe.adoc
new file mode 100644
index 0000000..8aa7284
--- /dev/null
+++ b/docs/security-guide/src/main/asciidoc/loe.adoc
@@ -0,0 +1,60 @@
+type=page
+status=published
+title=List of Examples
+next=lof.html
+prev=toc.html
+~~~~~~
+
+= List of Examples
+
+[[list-of-examples]]
+== List of Examples
+
+* link:system-security.html#gksel[1-1 Sample
+AppservCertificateLoginModule Code]
+* link:system-security.html#givil[1-2 Changing the Master Password]
+* link:system-security.html#ghlac[1-3 Changing the Admin Password]
+* link:system-security.html#ginvi[1-4 Creating a Password Alias]
+* link:system-security.html#ginsk[1-5 Listing Password Aliases]
+* link:system-security.html#ginul[1-6 Deleting a Password Alias]
+* link:system-security.html#giodl[1-7 Updating a Password Alias]
+* link:system-security.html#ghjlw[1-8 Creating an Audit Module]
+* link:system-security.html#ghjmy[1-9 Listing Audit Modules]
+* link:system-security.html#ghjhm[1-10 Deleting an Audit Module]
+* link:system-security.html#ghlii[1-11 Creating a Self-Signed Certificate
+in a JKS Keystore by Using an RSA Key Algorithm]
+* link:system-security.html#ghlew[1-12 Creating a Self-Signed Certificate
+in a JKS Keystore by Using a Default Key Algorithm]
+* link:system-security.html#ghldw[1-13 Displaying Available Certificates
+From a JKS Keystore]
+* link:system-security.html#ghlfd[1-14 Displaying Certificate information
+From a JKS Keystore]
+* link:system-security.html#ghlhu[1-15 Importing an RFC/Text-Formatted
+Certificate Into a JKS Keystore]
+* link:system-security.html#ghlim[1-16 Exporting a Certificate From a JKS
+Keystore in PKCS7 Format]
+* link:system-security.html#ghleb[1-17 Exporting a Certificate From a JKS
+Keystore in RFC/Text Format]
+* link:system-security.html#ghlgy[1-18 Deleting a Certificate From a JKS
+Keystore]
+* link:user-security.html#ggpjx[2-1 Creating a Realm]
+* link:user-security.html#ggpkw[2-2 Listing Realms]
+* link:user-security.html#ggpjf[2-3 Deleting a Realm]
+* link:user-security.html#ghysu[2-4 Assigning a Security Role]
+* link:user-security.html#ggpkq[2-5 Creating a User]
+* link:user-security.html#ggpgf[2-6 Listing File Users]
+* link:user-security.html#ghlgb[2-7 Listing Groups for a User]
+* link:user-security.html#ggpgh[2-8 Updating a User]
+* link:user-security.html#ggpib[2-9 Deleting a User]
+* link:message-security.html#gipxo[3-1 Message Security Policy Setting
+for Application Clients]
+* link:message-security.html#giosd[3-2 Creating a Message Security
+Provider]
+* link:message-security.html#gioui[3-3 Listing Message Security
+Providers]
+* link:message-security.html#gioug[3-4 Deleting a Message Security
+Provider]
+* link:message-security.html#gkxqz[3-5 Creating a Message Security
+Provider]
+
+
diff --git a/docs/security-guide/src/main/asciidoc/lof.adoc b/docs/security-guide/src/main/asciidoc/lof.adoc
new file mode 100644
index 0000000..107cde4
--- /dev/null
+++ b/docs/security-guide/src/main/asciidoc/lof.adoc
@@ -0,0 +1,17 @@
+type=page
+status=published
+title=List of Figures
+next=lot.html
+prev=loe.html
+~~~~~~
+
+= List of Figures
+
+[[list-of-figures]]
+== List of Figures
+
+* link:system-security.html#fxjfw[1-1 Role Mapping]
+* link:administrative-security.html#gkqpv[5-1 Sample Browser Response to
+Untrusted Certificate]
+
+
diff --git a/docs/security-guide/src/main/asciidoc/lot.adoc b/docs/security-guide/src/main/asciidoc/lot.adoc
new file mode 100644
index 0000000..0bd9893
--- /dev/null
+++ b/docs/security-guide/src/main/asciidoc/lot.adoc
@@ -0,0 +1,27 @@
+type=page
+status=published
+title=List of Tables
+next=title.html
+prev=lof.html
+~~~~~~
+
+= List of Tables
+
+[[list-of-tables]]
+== List of Tables
+
+* link:message-security.html#fxjcu[3-1 Message Protection Policy Mapping
+to WS-Security SOAP Operations]
+* link:administrative-security.html#gkobl[5-1 Authentication Methods
+Employed]
+* link:administrative-security.html#gkode[5-2 Accepted and Rejected
+Operations if Secure Admin is Disabled]
+* link:administrative-security.html#gkqax[5-3 asadmin --secure=false,
+With Username and Password]
+* link:running-in-secure-environment.html#gksbt[6-1 Securing the
+{productName} Host]
+* link:running-in-secure-environment.html#gkscz[6-2 Securing {productName}]
+* link:running-in-secure-environment.html#gkscv[6-3 Securing
+Applications]
+
+
diff --git a/docs/security-guide/src/main/asciidoc/message-security.adoc b/docs/security-guide/src/main/asciidoc/message-security.adoc
new file mode 100644
index 0000000..28c7cbd
--- /dev/null
+++ b/docs/security-guide/src/main/asciidoc/message-security.adoc
@@ -0,0 +1,877 @@
+type=page
+status=published
+title=Administering Message Security
+next=security-in-cluster-mode.html
+prev=user-security.html
+~~~~~~
+
+= Administering Message Security
+
+[[GSSCG00037]][[ablrk]]
+
+
+[[administering-message-security]]
+== 3 Administering Message Security
+
+This chapter provides information and procedures on configuring the
+message layer security for web services in the {productName} environment.
+
+[NOTE]
+====
+Message security (JSR 196) is supported only in the Full Platform
+Profile of {productName}, not in the Web Profile.
+====
+
+The following topics are addressed here:
+
+* link:#ablrn[About Message Security in {productName}]
+* link:#giood[Enabling Default Message Security Providers for Web Services]
+* link:#giouf[Configuring Message Protection Policies]
+* link:#giosl[Administering Non-default Message Security Providers]
+* link:#gdhgg[Enabling Message Security for Application Clients]
+* link:#gglrb[Additional Information About Message Security]
+
+Some of the material in this chapter assumes a basic understanding of
+security and web services concepts. For more information about security,
+see link:system-security.html#ggktf[About System Security in {productName}].
+
+Instructions for accomplishing the tasks in this chapter by using the
+Administration Console are contained in the Administration Console online help.
+
+[[ablrn]][[GSSCG00153]][[about-message-security-in-glassfish-server]]
+
+=== About Message Security in {productName}
+
+Message security enables a server to perform end-to-end authentication
+of web service invocations and responses at the message layer. Security
+information is inserted into messages so that it travels through the
+networking layers and arrives with the intact message at the message
+destination(s). Message security differs from transport layer security
+in that message security can be used to decouple message protection from
+message transport so that messages remain protected after transmission.
+
+Web services deployed on {productName} are secured by binding SOAP
+layer message security providers and message protection policies to the
+containers in which the applications are deployed, or to web service
+endpoints served by the applications. SOAP layer message security
+functionality is configured in the client-side containers of {productName} by binding SOAP layer message security providers and message
+protection policies to the client containers or to the portable service
+references declared by client applications.
+
+Message-level security can be configured for the entire {productName}
+or for specific applications or methods. Configuring message security at
+the application level is discussed in the
+link:application-development-guide.html#GSDVG[
+{productName} Application Development Guide].
+
+The following topics are addressed here:
+
+* link:#ablrs[Security Tokens and Security Mechanisms]
+* link:#ablrx[Authentication Providers]
+* link:#ablrw[Message Protection Policies]
+* link:#ablrz[Application-Specific Web Services Security]
+* link:#gioom[Message Security Administration]
+* link:#ablsa[Sample Application for Web Services]
+
+[[ablrs]][[GSSCG00218]][[security-tokens-and-security-mechanisms]]
+
+==== Security Tokens and Security Mechanisms
+
+WS-Security is a specification that provides a communications protocol
+for applying security to web services. The security mechanisms implement
+the specification. Web Services Interoperability Technologies (WSIT)
+implements WS-Security so as to provide interoperable message content
+integrity and confidentiality, even when messages pass through
+intermediary nodes before reaching their destination endpoint.
+WS-Security as provided by WSIT is in addition to existing
+transport-level security, which can still be used.
+
+The Simple Object Access Protocol (SOAP) layer message security
+providers installed with {productName} can be used to employ
+username/password and X.509 certificate security tokens to authenticate
+and encrypt SOAP web services messages.
+
+* Username Tokens. {productName} uses username tokens in SOAP
+messages to authenticate the message sender. The recipient of a message
+containing a username token (within embedded password) validates that
+the message sender is authorized to act as the user (identified in the
+token) by confirming that the sender knows the password of the user.
++
+When using a username token, a valid user database must be configured on
+{productName}.
+* Digital Signatures. {productName} uses XML digital signatures to
+bind an authentication identity to message content. Clients use digital
+signatures to establish their caller identity. Digital signatures are
+verified by the message receiver to authenticate the source of the
+message content (which might be different from the sender of the
+message.)
++
+When using digital signatures, valid keystore and truststore files must
+be configured on {productName}.
+* Encryption. The purpose of encryption is to modify the data so that it
+can only be understood by its intended audience. This is accomplished by
+substituting an encrypted element for the original content. When based
+on public key cryptography, encryption can be used to establish the
+identity of the parties who are authorized to read a message.
++
+When using encryption, a Java Cryptography Extension (JCE) provider that
+supports encryption must be installed.
+
+[[ablrx]][[GSSCG00219]][[authentication-providers]]
+
+==== Authentication Providers
+
+The authentication layer is the message layer on which authentication
+processing must be performed. {productName} enforces web services
+message security at the SOAP layer. The types of authentication that are
+supported include the following:
+
+* Sender authentication, including username-password authentication
+* Content authentication, including XML digital signatures
+
+{productName} invokes authentication providers to process SOAP
+message layer security. The message security providers provide
+information such as the type of authentication that is required for the
+request and response messages. The following message security providers
+are included with {productName}:
+
+* Client-side Provider. A client-side provider establishes (by signature
+or username/password) the source identity of request messages and/or
+protects (by encryption) request messages such that they can only be
+viewed by their intended recipients. A client-side provider also
+establishes its container as an authorized recipient of a received
+response (by successfully decrypting it) and validates passwords or
+signatures in the response to authenticate the source identity
+associated with the response. Client-side providers configured in
+{productName} can be used to protect the request messages sent and
+the response messages received by server-side components (servlets and
+EJB components) acting as clients of other services.
++
+The default client provider is used to identify the client—side provider
+to be invoked for any application for which a specific client provider
+has not been bound.
+* Server-side Provider. A server-side provider establishes its container
+as an authorized recipient of a received request (by successfully
+decrypting it), and validates passwords or signatures in the request to
+authenticate the source identity associated with the request. A
+server-side provider also establishes (by signature or
+username/password) the source identity of response messages and/or
+protects (by encryption) response messages such that they can only be
+viewed by their intended recipients. Server-side providers are only
+invoked by server-side containers.
+
+The default server provider is used to identify the server—side provider
+to be invoked for any application for which a specific server provider
+has not been bound.
+
+[[ablrw]][[GSSCG00220]][[message-protection-policies]]
+
+==== Message Protection Policies
+
+A request policy defines the authentication policy requirements
+associated with request processing performed by the authentication
+provider. Policies are expressed in message sender order such that a
+requirement that encryption occur after content would mean that the
+message receiver would expect to decrypt the message before validating
+the signature. The response policy defines the authentication policy
+requirements associated with response processing performed by the
+authentication provider.
+
+Message protection policies are defined for request message processing
+and response message processing. The policies are expressed in terms of
+requirements for source and/or recipient authentication. The providers
+apply specific message security mechanisms to cause the message
+protection policies to be realized in the context of SOAP web services
+messages.
+
+* Source Authentication Policy. A source authentication policy
+represents a requirement that the identity of the entity that sent a
+message or that defined the content of a message be established in the
+message such that it can be authenticated by the message receiver.
+* Recipient Authentication Policy. A recipient authentication policy
+represents a requirement that the message be sent such that the identity
+of the entities that can receive the message can be established by the
+message sender.
+
+Request and response message protection policies are defined when a
+security provider is configured into a container. Application-specific
+message protection policies (at the granularity of the web service port
+or operation) can also be configured within the {productName}
+deployment descriptors of the application or application client. In any
+situation where message protection policies are defined, the request and
+response message protection policies of the client must be equivalent t)
+the request and response message protection policies of the server. For
+more information about defining application-specific message protection
+policies, see "link:application-development-guide/securing-apps.html#GSDVG00006[Securing Applications]" in {productName} Application Development Guide.
+
+[[ablrz]][[GSSCG00221]][[application-specific-web-services-security]]
+
+==== Application-Specific Web Services Security
+
+Application-specific web services security functionality is configured
+(at application assembly) by defining the `message-security-binding`
+elements in the {productName} deployment descriptors of the
+application. These `message-security-binding` elements are used to
+associate a specific security provider or message protection policy with
+a web service endpoint or service reference, and might be qualified so
+that they apply to a specific port or method of the corresponding
+endpoint or referenced service.
+
+For information about defining application-specific message protection
+policies, see "link:application-development-guide/securing-apps.html#GSDVG00006[Securing Applications]" in {productName} Application Development Guide.
+
+[[gioom]][[GSSCG00222]][[message-security-administration]]
+
+==== Message Security Administration
+
+When {productName} is installed, SOAP layer message security
+providers are configured in the client and server-side containers of
+{productName}, where they are available for binding for use by the
+containers, or by individual applications or clients deployed in the
+containers. During installation, the default providers are configured
+with a simple message protection policy that, if bound to a container,
+or to an application or client in a container, would cause the source of
+the content in all request and response messages to be authenticated by
+XML digital signature.
+
+{productName} administrative interfaces can be used as follows:
+
+* To modify the message protection policies enforced by the providers
+* To bind the existing providers for use by the server-side containers
+of {productName}
+* To create new security provider configurations with alternative
+message protection policies
+
+Analogous administrative operations can be performed on the SOAP message
+layer security configuration of the application client container. If you
+want web services security to protect all web services applications
+deployed on {productName}. See link:#gdhgg[Enabling Message Security
+for Application Clients].
+
+By default, message layer security is disabled on {productName}. To
+configure message layer security for the {productName} see
+link:#giood[Enabling Default Message Security Providers for Web
+Services].
+
+In most cases, you must restart {productName} after performing
+administrative tasks. This is especially true if you want the effects of
+the administrative change to be applied to applications that were
+already deployed on {productName} at the time the operation was
+performed.
+
+[[giose]][[GSSCG00199]][[message-security-tasks]]
+
+===== Message Security Tasks
+
+The general implementation tasks for message security include some or
+all of the following:
+
+1. If you are using a version of the Java SDK prior to version 1.5.0,
+   and using encryption technology, configuring a JCE provider
+2. If you are using a username token, verifying that a user database is
+   configured for an appropriate realm
++
+When using a username/password token, an appropriate realm must be
+   configured and a user database must be configured for the realm.
+3. Managing certificates and private keys, if necessary
+4. Enabling the {productName} default providers
+5. Configuring new message security providers
+
+[[ablro]][[GSSCG00200]][[message-security-roles]]
+
+===== Message Security Roles
+
+In {productName}, the administrator and the application deployer are
+expected to take primary responsibility for configuring message
+security. In some situations, the application developer might also
+contribute.
+
+[[ablrp]][[GSSCG00057]][[system-administrator]]
+
+System Administrator
+
+The system administrator is responsible for the following message
+security tasks:
+
+* Administering server security settings and certificate databases
+* Administering keystore and truststore files
+* Configuring message security providers on {productName}
+* Turning on message security
+* (If needed) Installing the samples server
+
+[[ablrq]][[GSSCG00058]][[application-deployer]]
+
+Application Deployer
+
+The application deployer is responsible for the following message
+security tasks:
+
+* Specifying (at application reassembly) any required
+application-specific message protection policies if such policies have
+not already been specified by the developer/assembler.
+* Modifying {productName} deployment descriptors to specify
+application-specific message protection policies information
+(message-security-binding elements) to web service endpoint and service references.
+
+[[ablrr]][[GSSCG00059]][[application-developerassembler]]
+
+Application Developer/Assembler
+
+The application developer/assembler is responsible for the following
+message security tasks:
+
+* Determining if an application-specific message protection policy is
+required by the application
++
+If so, the developer ensures that the required policy is specified at
+application assembly time.
+* Specifying how web services should be set up for message security
++
+Message security can be set up by the administrator so that all web
+services are secured, or by the application deployer when the security
+provider or protection policy bound to the application must be different
+from that bound to the container.
+* Turning on message security if authorized to do so by the administrator
+
+[[ablsa]][[GSSCG00223]][[sample-application-for-web-services]]
+
+==== Sample Application for Web Services
+
+{productName} includes a sample application named `xms`. The `xms`
+application features a simple web service that is implemented by both a
+Jakarta EE EJB endpoint and a Java servlet endpoint. Both endpoints share
+the same service endpoint interface. The service endpoint interface
+defines a single operation, `sayHello`, which takes a string argument,
+and returns a `String` composed by pre-pending `Hello` to the invocation argument.
+
+The `xms` sample application is provided to demonstrate the use of
+{productName} WS-Security functionality to secure an existing web
+services application. The instructions which accompany the sample
+describe how to enable the WS-Security functionality of {productName}
+such that it is used to secure the `xms` application. The sample also
+demonstrates the binding of WS-Security functionality directly to the
+application as described in link:#ablrz[Application-Specific Web
+Services Security] application.
+
+For information about compiling, packaging, and running the `xms` sample
+application, "link:application-development-guide/securing-apps.html#GSDVG00006[
+Securing Applications]" in
+{productName} Application Development Guide.
+
+The `xms` sample application is installed in the following directory:
+as-install``/samples/webservices/security/ejb/apps/xms/``
+
+[[giood]][[GSSCG00154]][[enabling-default-message-security-providers-for-web-services]]
+
+=== Enabling Default Message Security Providers for Web Services
+
+By default, message security is disabled on {productName}. Default
+message security providers have been created, but are not active until
+you enable them. After the providers have been enabled, message security
+is enabled.
+
+The following topics are addressed here:
+
+* link:#giork[To Enable a Default Server Provider]
+* link:#giort[To Enable a Default Client Provider]
+
+[[giork]][[GSSCG00123]][[to-enable-a-default-server-provider]]
+
+==== To Enable a Default Server Provider
+
+To enable message security for web services endpoints deployed in
+{productName}, you must specify a security provider to be used by
+default on the server side. If you enable a default provider for message
+security, you also need to enable providers to be used by clients of the
+web services deployed in {productName}.
+
+1. Specify the default server provider by using the
+link:reference-manual/set.html#GSRFM00226[`set`] subcommand.
++
+Use the following syntax:
++
+[source]
+----
+asadmin set --port admin-port
+server-config.security-service.message-security-config.SOAP.
+default_provider=ServerProvider
+----
+2. To apply your changes to applications that are already running,
+restart {productName}.
++
+See "link:administration-guide/domains.html#GSADG00337[To Restart a Domain]" in {productName} Administration Guide.
+
+[[giort]][[GSSCG00124]][[to-enable-a-default-client-provider]]
+
+==== To Enable a Default Client Provider
+
+To enable message security for web service invocations originating from
+deployed endpoints, you must specify a default client provider. If you
+enabled a default client provider for {productName}, you must ensure
+that any services invoked from endpoints deployed in {productName}
+are compatibly configured for message layer security.
+
+1. Specify the default client provider by using the
+link:reference-manual/set.html#GSRFM00226[`set`] subcommand.
++
+Use the following syntax:
++
+[source]
+----
+asadmin set --port admin-port
+server-config.security-service.message-security-config.SOAP.
+default_client_provider=ClientProvider
+----
+2. To apply your changes to applications that are already running,
+restart {productName}.
++
+See "link:administration-guide/domains.html#GSADG00337[To Restart a Domain]" in {productName} Administration Guide.
+
+[[giouf]][[GSSCG00155]][[configuring-message-protection-policies]]
+
+=== Configuring Message Protection Policies
+
+Message protection policies are defined for request message processing
+and response message processing. The policies are expressed in terms of
+requirements for source and/or recipient authentication. The providers
+apply specific message security mechanisms to cause the message
+protection policies to be realized in the context of SOAP web services
+messages.
+
+The following topics are addressed here:
+
+* link:#giraj[Message Protection Policy Mapping]
+* link:#gioqu[To Configure the Message Protection Policies for a
+Provider]
+* link:#ablsl[Setting the Request and Response Policy for the
+Application Client Configuration]
+
+[[giraj]][[GSSCG00224]][[message-protection-policy-mapping]]
+
+==== Message Protection Policy Mapping
+
+The following table shows message protection policy configurations and
+the resulting message security operations performed by the WS-Security
+SOAP message security providers for that configuration.
+
+[[sthref30]][[fxjcu]]
+
+Table 3-1 Message Protection Policy Mapping to WS-Security SOAP Operations
+
+[width="100%",cols="34%,66%",options="header",]
+|===
+|Message Protection Policy |Resulting WS-Security SOAP Message Protection Operations
+
+|auth-source="sender"
+|The message contains a `wsse:Security` header that contains
+a `wsse:UsernameToken` (with password).
+
+|auth-source="content"
+|The content of the SOAP message Body is signed.
+The message contains a `wsse:Security` header that contains the message
+Body signature represented as a `ds`:`Signature`.
+
+a|auth-source="sender" +
+auth-recipient="before-content" +
+OR +
+auth-recipient="after-content"
+|The content of the SOAP message Body is encrypted and replaced with
+the resulting `xend:EncryptedData`. The message contains
+`a wsse:Security` header that contains a
+`wsse:UsernameToken (with password)` and an `xenc:EncryptedKey`. The
+`xenc:EncryptedKey` contains the key used to encrypt the SOAP message
+body. The key is encrypted in the public key of the recipient.
+
+a|auth-source="content" +
+auth-recipient="before-content"
+|The content of the SOAP message Body is encrypted and replaced with
+the resulting `xend:EncryptedData`. The `xenc:EncryptedData` is signed.
+The message contains `a wsse:Security` header that contains an
+`xenc:EncryptedKey` and a `ds`:`Signature`. The `xenc:EncryptedKey`
+contains the key used to encrypt the SOAP message body. The key is
+encrypted in the public key of the recipient.
+
+a|
+auth-source="content" +
+auth-recipient="after-content"
+|The content of the SOAP message Body is signed, then encrypted, and
+then replaced with the resulting `xend:EncryptedData`. The message
+contains a `wsse:Security` header that contains an `xenc:EncryptedKey`
+and a `ds:Signature`. The `xenc:EncryptedKey` contains the key used to
+encrypt the SOAP message body. The key is encrypted in the public key of
+the recipient.
+
+a|auth-recipient="before-content" +
+OR +
+auth-recipient="after-content"
+|The content of the SOAP message Body is encrypted and replaced with
+the resulting `xend:EncryptedData`. The message contains
+`a wsse:Security` header that contains an `xenc:EncryptedKey`.
+The `xenc:EncryptedKey` contains the key used to encrypt the SOAP message
+body. The key is encrypted in the public key of the recipient.
+|No policy specified. |No security operations are performed by the modules.
+|===
+
+
+[[gioqu]][[GSSCG00125]][[to-configure-the-message-protection-policies-for-a-provider]]
+
+==== To Configure the Message Protection Policies for a Provider
+
+Typically, you would not reconfigure a provider. However, if needed for
+your situation, you can modify a provider's message protection policies
+by changing provider type, implementation class, and provider-specific
+configuration properties. To understand the results of different
+combinations, see link:#fxjcu[Table 3-1].
+
+Use the link:reference-manual/set.html#GSRFM00226[`set`] subcommand to set the response policy,
+then replace the word `request` in the following commands with the word
+`response`.
+
+1. Add a request policy to the client and set the authentication source
+by using the link:reference-manual/set.html#GSRFM00226[`set`] subcommand.
++
+For example:
++
+[source]
+----
+asadmin> set server-config.security-service.message-security-config.SOAP.
+provider-config.ClientProvider.request-policy.auth_source=[sender | content]
+----
+2. Add a request policy to the server and set the authentication source
+by using the `set` subcommand.
++
+For example:
++
+[source]
+----
+asadmin> set server-config.security-service.message-security-config.SOAP.
+provider-config.ServerProvider.request-policy.auth_source=[sender | content]
+----
+3. Add a request policy to the client and set the authentication
+recipient by using the `set` subcommand:
++
+For example:
++
+[source]
+----
+asadmin> set server-config.security-service.message-security-config.SOAP.
+provider-config.ClientProvider.request-policy.auth_recipient=[before-content | after-content]
+----
+4. Add a request policy to the server and set the authentication
+recipient by using the `set` subcommand:
++
+For example:
++
+[source]
+----
+asadmin> set server-config.security-service.message-security-config.SOAP.
+provider-config.ServerProvider.request-policy.auth_recipient=[before-content | after-content]
+----
+
+[[ablsl]][[GSSCG00225]][[setting-the-request-and-response-policy-for-the-application-client-configuration]]
+
+==== Setting the Request and Response Policy for the Application Client Configuration
+
+The request and response policies define the authentication policy
+requirements associated with request and response processing performed
+by the authentication provider. Policies are expressed in message sender
+order such that a requirement that encryption occur after content would
+mean that the message receiver would expect to decrypt the message
+before validating the signature.
+
+To achieve message security, the request and response policies must be
+enabled on both the server and client. When configuring the policies on
+the client and server, make sure that the client policy matches the
+server policy for request/response protection at application-level
+message binding.
+
+To set the request policy for the application client configuration,
+modify the {productName}-specific configuration for the application
+client container as described in link:#gdhgg[Enabling Message Security
+for Application Clients].
+
+[[GSSCG00088]][[gipxo]]
+Example 3-1 Message Security Policy Setting for Application Clients
+
+In the application client configuration file, the `request-policy` and
+`response-policy` elements are used to set the request policy, as shown
+in the following code snippet. (Additional code in the snippet is
+provided as illustration and might differ slightly in your installation.
+Do not change the additional code.)
+
+[source,xml]
+----
+<client-container>
+  <target-server name="your-host" address="your-host"
+      port="your-port"/>
+  <log-service file="" level="WARNING"/>
+  <message-security-config auth-layer="SOAP"
+      default-client-provider="ClientProvider">
+    <provider-config
+        class-name="com.sun.enterprise.security.jauth.ClientAuthModule"
+        provider-id="clientprovider" provider-type="client">
+      <request-policy auth-source="sender | content"
+        auth-recipient="after-content | before-content"/>
+      <response-policy auth-source="sender | content"
+        auth-recipient="after-content | before-content"/>
+       <property name="security.config"
+           value="as-install/lib/appclient/wss-client-config.xml"/>
+    </provider-config>
+  </message-security-config>
+</client-container>
+----
+
+Valid values for `auth-source` include `sender` and `content`. Valid
+values for `auth-recipient` include `before-content` and
+`after-content`. A table describing the results of various combinations
+of these values can be found in link:#giouf[Configuring Message
+Protection Policies].
+
+To not specify a request or response policy, leave the element blank,
+for example:
+
+[source,xml]
+----
+<response-policy/>
+----
+
+[[giosl]][[GSSCG00156]][[administering-non-default-message-security-providers]]
+
+=== Administering Non-default Message Security Providers
+
+The following topics are addressed here:
+
+* link:#giory[To Create a Message Security Provider]
+* link:#giotv[To List Message Security Providers]
+* link:#giwkd[To Update a Message Security Provider]
+* link:#giorr[To Delete a Message Security Provider]
+* link:#gkxru[To Configure a Servlet Layer Server Authentication Module
+(SAM)]
+
+[[giory]][[GSSCG00126]][[to-create-a-message-security-provider]]
+
+==== To Create a Message Security Provider
+
+Use the `create-message-security-provider` subcommand in remote mode to
+create a new message provider for the security service. If the message
+layer does not exist, the message layer is created, and the provider is
+created under it.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Create the message security provider by using the
+link:reference-manual/create-message-security-provider.html#GSRFM00045[`create-message-security-provider`] subcommand.
++
+Information about properties for this subcommand is included in the help
+page.
+3. If needed, restart the server.
++
+Some properties require server restart. See
+"link:administration-guide/overview.html#GSADG00628[Configuration Changes That Require Restart]" in
+{productName} Administration Guide. If your
+server needs to be restarted, see "link:administration-guide/domains.html#GSADG00337[To Restart a
+Domain]" in {productName} Administration Guide.
+
+[[GSSCG00089]][[giosd]]
+Example 3-2 Creating a Message Security Provider
+
+This example creates the new message security provider
+`mySecurityProvider`.
+
+[source]
+----
+asadmin> create-message-security-provider
+--classname com.sun.enterprise.security.jauth.ClientAuthModule
+--providertype client mySecurityProvider
+Command create-message-security-provider executed successfully.
+----
+
+[[sthref31]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-message-security-provider` at the command
+line.
+
+[[giotv]][[GSSCG00127]][[to-list-message-security-providers]]
+
+==== To List Message Security Providers
+
+Use the `list-message-security-providers` subcommand in remote mode to
+list the message providers for the security layer.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the message security providers by using the
+link:reference-manual/list-message-security-providers.html#GSRFM00184[`list-message-security-providers`] subcommand.
+
+[[GSSCG00090]][[gioui]]
+Example 3-3 Listing Message Security Providers
+
+This example lists the message security providers for a message layer.
+
+[source]
+----
+asadmin> list-message-security-providers --layer SOAP
+XWS_ClientProvider
+ClientProvider
+XWS_ServerProvider
+ServerProvider
+Command list-message-security-providers executed successfully.
+----
+
+[[sthref32]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-message-security-providers` at the command
+line.
+
+[[giwkd]][[GSSCG00128]][[to-update-a-message-security-provider]]
+
+==== To Update a Message Security Provider
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the message security providers by using the
+link:reference-manual/list-message-security-providers.html#GSRFM00184[`list-message-security-providers`] subcommand.
+3. Modify the values for the specified message security provider by
+using the link:reference-manual/set.html#GSRFM00226[`set`] subcommand.
++
+The message security provider is identified by its dotted name.
+
+[[giorr]][[GSSCG00129]][[to-delete-a-message-security-provider]]
+
+==== To Delete a Message Security Provider
+
+Use the `delete-message-security-provider` subcommand in remote mode to
+remove a message security provider.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the message security providers by using the
+link:reference-manual/list-message-security-providers.html#GSRFM00184[`list-message-security-providers`] subcommand.
+3. Delete the message security provider by using the
+link:reference-manual/delete-message-security-provider.html#GSRFM00097[`delete-message-security-provider`] subcommand.
+
+[[GSSCG00091]][[gioug]]
+Example 3-4 Deleting a Message Security Provider
+
+This example deletes the `myServerityProvider` message security
+provider.
+
+[source]
+----
+asadmin> delete-message-security-provider --layer SOAP myServerityProvider
+Command delete-message-security-provider executed successfully.
+----
+
+[[sthref33]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-message-security-provider` at the command
+line.
+
+[[gkxru]][[GSSCG00130]][[to-configure-a-servlet-layer-server-authentication-module-sam]]
+
+==== To Configure a Servlet Layer Server Authentication Module (SAM)
+
+You configure a JSR 196 Server Authentication Module (SAM) as an
+HttpServlet-layer message security provider, either through the
+Administration Console or with the `create-message-security-provider`
+subcommand.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Create the message security provider by using the
+link:reference-manual/create-message-security-provider.html#GSRFM00045[`create-message-security-provider`] subcommand.
++
+Information about properties for this subcommand is included in the help page.
+3. Bind the message security provider for use with your application.
++
+You do this by defining the `httpservlet-security-provider` attribute in
+the `glassfish-web.xml` file corresponding to your application. Set the
+value of the attribute to the provider name you assigned to the message
+security provider. For example, if you use MySAM when you create the
+message security provider the entry would be
+httpservlet-security-provider="MySAM".
+4. If needed, restart the server.
++
+Some properties require server restart. See
+"link:administration-guide/overview.html#GSADG00628[Configuration Changes That Require Restart]" in
+{productName} Administration Guide. If your
+server needs to be restarted, see "link:administration-guide/domains.html#GSADG00337[To Restart a
+Domain]" in {productName} Administration Guide.
+
+[[GSSCG00092]][[gkxqz]]
+Example 3-5 Creating a Message Security Provider
+
+This example creates the new message security provider `mySAM`.
+
+[source]
+----
+asadmin> create-message-security-provider --layer=HttpServlet
+--classname com.sun.glassfish.oamsam.OAMAuthenticatorSAM
+--providertype server
+--property oam.resource.hostid.variation="your-host-system.com" mySAM
+Creation of message security provider named mySAM completed successfully
+Command create-message-security-provider executed successfully.
+----
+
+The subcommand results in the following `domain.xml` entry:
+
+[source,xml]
+----
+<message-security-config auth-layer="HttpServlet">
+<provider-config provider-type="server" provider-id="mysam"
+class-name="com.sun.glassfish.oamsam.OAMAuthenticatorSAM">
+            <property name="oam.resource.hostid.variation" value="your-host-system.com"></property>
+            <request-policy></request-policy>
+            <response-policy></response-policy>
+          </provider-config>
+</message-security-config>
+----
+
+To list the HttpServlet message security providers, use the
+`list-message-security-providers` subcommand:
+
+[source]
+----
+asadmin> list-message-security-providers --layer HttpServlet
+list-message-security-providers successful
+GFConsoleAuthModule
+mySAM
+Command list-message-security-providers executed successfully.
+----
+
+[[sthref34]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-message-security-provider` at the command line.
+
+[[gdhgg]][[GSSCG00157]][[enabling-message-security-for-application-clients]]
+
+=== Enabling Message Security for Application Clients
+
+The message protection policies of client providers must be configured
+such that they are equivalent to the message protection policies of the
+server-side providers they will be interacting with. This is already the
+situation for the providers configured (but not enabled) when {productName} is installed.
+
+To enable message security for client applications, modify the {productName} specific configuration for the application client container. The
+process is analogous to the process in link:#giouf[Configuring Message
+Protection Policies].
+
+[[gglrb]][[GSSCG00158]][[additional-information-about-message-security]]
+
+=== Additional Information About Message Security
+
+For additional information about message security, see the following documentation:
+
+* https://eclipse-ee4j.github.io/jakartaee-tutorial/#security-2[
+Introduction to Security in the Jakarta EE Platform] in The Jakarta EE Tutorial
+* "link:application-development-guide/securing-apps.html#GSDVG00006[Securing Applications]"
+in {productName} Application Development Guide
+
+
diff --git a/docs/security-guide/src/main/asciidoc/preface.adoc b/docs/security-guide/src/main/asciidoc/preface.adoc
new file mode 100644
index 0000000..e86e1a1
--- /dev/null
+++ b/docs/security-guide/src/main/asciidoc/preface.adoc
@@ -0,0 +1,334 @@
+type=page
+status=published
+title=Preface
+next=system-security.html
+prev=title.html
+~~~~~~
+
+= Preface
+
+[[sthref2]][[preface]]
+
+== Preface
+
+[NOTE]
+====
+This documentation is part of the Java Enterprise Edition contribution
+to the Eclipse Foundation and is not intended for use in relation to
+Java Enterprise Edition or Orace GlassFish. The documentation is in the
+process of being revised to reflect the new Jakarta EE branding.
+Additional changes will be made as requirements and procedures evolve
+for Jakarta EE. Where applicable, references to Jakarta EE or Java
+Enterprise Edition should be considered references to Jakarta EE.
+
+Please see the Title page for additional license information.
+====
+
+The {productName} Security Guide provides
+instructions for configuring and administering {productName} security.
+
+This preface contains information about and conventions for the entire
+{productName} ({productName}) documentation set.
+
+{productName} 7 is developed through the GlassFish project
+open-source community at https://github.com/eclipse-ee4j/glassfish.
+The GlassFish project provides a structured process for developing the
+{productName} platform that makes the new features of the Jakarta EE
+platform available faster, while maintaining the most important feature
+of Jakarta EE: compatibility. It enables Java developers to access the
+{productName} source code and to contribute to the development of the
+{productName}.
+
+The following topics are addressed here:
+
+* link:#ghpbz[{productName} Documentation Set]
+* link:#giprl[Related Documentation]
+* link:#fwbkx[Typographic Conventions]
+* link:#fquvc[Symbol Conventions]
+* link:#ghpfg[Default Paths and File Names]
+
+[[GSSCG00135]][[ghpbz]]
+
+
+[[glassfish-server-documentation-set]]
+=== {productName} Documentation Set
+
+The {productName} documentation set describes deployment planning and
+system installation. For an introduction to {productName}, refer to
+the books in the order in which they are listed in the following table.
+
+[width="100%",cols="<30%,<70%",options="header",]
+|===
+|Book Title |Description
+|link:release-notes.html#GSRLN[Release Notes] |Provides late-breaking information about
+the software and the documentation and includes a comprehensive,
+table-based summary of the supported hardware, operating system, Java
+Development Kit (JDK), and database drivers.
+
+|link:quick-start-guide.html#GSQSG[Quick Start Guide]
+|Explains how to get started with the {productName} product.
+
+|link:installation-guide.html#GSING[Installation Guide]
+|Explains how to install the software and its components.
+
+|link:upgrade-guide.html#GSUPG[Upgrade Guide]
+|Explains how to upgrade to the latest version of {productName}.
+This guide also describes differences between adjacent product releases and configuration
+options that can result in incompatibility with the product specifications.
+
+|link:deployment-planning-guide.html#GSPLG[Deployment Planning Guide]
+|Explains how to build a production deployment of {productName} that meets the requirements of
+your system and enterprise.
+
+|link:administration-guide.html#GSADG[Administration Guide]
+|Explains how to configure, monitor, and manage {productName} subsystems and components
+from the command line by using the link:reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] utility.
+Instructions for performing these tasks from the Administration Console are provided
+in the Administration Console online help.
+
+|link:security-guide.html#GSSCG[Security Guide]
+|Provides instructions for configuring and administering {productName} security.
+
+|link:application-deployment-guide.html#GSDPG[Application Deployment Guide]
+|Explains how to assemble and deploy applications to the {productName} and provides information
+about deployment descriptors.
+
+|link:application-development-guide.html#GSDVG[Application Development Guide]
+|Explains how to create and implement Java Platform, Enterprise Edition (Jakarta EE platform)
+applications that are intended to run on the {productName}.
+These applications follow the open Java standards model for Jakarta EE components
+and application programmer interfaces (APIs).
+This guide provides information about developer tools, security, and debugging.
+
+|link:add-on-component-development-guide.html#GSACG[Add-On Component Development Guide]
+|Explains how to use published interfaces of {productName} to develop add-on components
+for {productName}.
+This document explains how to perform only those tasks that ensure that the add-on component
+is suitable for {productName}.
+
+|link:embedded-server-guide.html#GSESG[Embedded Server Guide]
+|Explains how to run applications in embedded {productName} and to develop applications
+in which {productName} is embedded.
+
+|link:ha-administration-guide.html#GSHAG[High Availability Administration Guide]
+|Explains how to configure {productName} to provide higher availability and
+scalability through failover and load balancing.
+
+|link:performance-tuning-guide.html#GSPTG[Performance Tuning Guide]
+|Explains how to optimize the performance of {productName}.
+
+|link:troubleshooting-guide.html#GSTSG[Troubleshooting Guide]
+|Describes common problems that you might encounter when using {productName} and explains how to solve them.
+
+|link:error-messages-reference.html#GSEMR[Error Message Reference]
+|Describes error messages that you might encounter when using {productName}.
+
+|link:reference-manual.html#GSRFM[Reference Manual]
+|Provides reference information in man page format for {productName} administration commands, utility
+commands, and related concepts.
+
+|link:../openmq/mq-release-notes.html#GMRLN[Message Queue Release Notes]
+|Describes new features, compatibility issues, and existing bugs for Open Message Queue.
+
+|link:../openmq/mq-tech-over.html#GMTOV[Message Queue Technical Overview]
+|Provides an introduction to the technology, concepts, architecture, capabilities, and features of
+the Message Queue messaging service.
+
+|link:../openmq/mq-admin-guide.html#GMADG[Message Queue Administration Guide]
+|Explains how to set up and manage a Message Queue messaging system.
+
+|link:../openmq/mq-dev-guide-jmx.html#GMJMG[Message Queue Developer's Guide for JMX Clients]
+|Describes the application programming interface in Message Queue for
+programmatically configuring and monitoring Message Queue resources in
+conformance with the Java Management Extensions (JMX).
+
+|link:../openmq/mq-dev-guide-java.html#GMJVG[Message Queue Developer's Guide for Java Clients]
+|Provides information about concepts and procedures for developing Java messaging
+applications (Java clients) that work with {productName}.
+
+|link:../openmq/mq-dev-guide-c.html#GMCCG[Message Queue Developer's Guide for C Clients]
+|Provides programming and reference information for developers working with
+Message Queue who want to use the C language binding to the Message
+Queue messaging service to send, receive, and process Message Queue messages.
+|===
+
+
+[[GSSCG00136]][[giprl]]
+
+[[related-documentation]]
+=== Related Documentation
+
+The following tutorials explain how to develop Jakarta EE applications:
+
+* https://github.com/eclipse-ee4j/jakartaee-firstcup-examples[
+Your First Cup: An Introduction to the Jakarta EE Platform].
+For beginning Jakarta EE programmers, this short tutorial explains the entire
+process for developing a simple enterprise application.
+The sample application is a web application that consists of a component that is
+based on the Enterprise JavaBeans specification, a JAX-RS web service,
+and a JavaServer Faces component for the web front end.
+
+* https://eclipse-ee4j.github.io/jakartaee-tutorial[The Jakarta EE Tutorial].
+This comprehensive tutorial explains how to use Jakarta EE platform technologies
+and APIs to develop Jakarta EE applications.
+
+Javadoc tool reference documentation for packages that are provided with
+{productName} is available as follows.
+
+* The Jakarta EE specifications and API specification is
+located at https://jakarta.ee/specifications/.
+
+* The API specification for {productName} 7, including Jakarta EE
+platform packages and nonplatform packages that are specific to the
+{productName} product, is located at
+https://glassfish.org/docs/.
+
+For information about creating enterprise applications in the NetBeans
+Integrated Development Environment (IDE), see the
+https://netbeans.apache.org/kb/docs/java-ee.html[
+NetBeans Documentation, Training & Support page].
+
+For information about the Derby database for use with
+the {productName}, see the https://db.apache.org/derby/index.html[Derby page].
+
+The Jakarta EE Samples project is a collection of sample applications that
+demonstrate a broad range of Jakarta EE technologies. The Jakarta EE Samples
+are bundled with the Jakarta EE Software Development Kit (SDK) and are also
+available from the repository
+(`https://github.com/eclipse-ee4j/glassfish-samples`).
+
+
+[[typographic-conventions]]
+=== Typographic Conventions
+
+The following table describes the typographic changes that are used in
+this book.
+
+[width="100%",cols="<14%,<37%,<49%",options="header",]
+|===
+|Typeface |Meaning |Example
+
+|`AaBbCc123`
+|The names of commands, files, and directories, and onscreen computer output
+|Edit your `.login` file.
+
+Use `ls` `a` to list all files.
+
+`machine_name% you have mail.`
+
+|`AaBbCc123`
+|What you type, contrasted with onscreen computer output
+|`machine_name%` `su`
+
+`Password:`
+
+|AaBbCc123
+|A placeholder to be replaced with a real name or value
+|The command to remove a file is `rm` filename.
+
+|AaBbCc123
+|Book titles, new terms, and terms to be emphasized (note that some emphasized items appear bold online)
+|Read Chapter 6 in the User's Guide.
+
+A cache is a copy that is stored locally.
+
+Do not save the file.
+|===
+
+
+[[GSSCG00138]][[fquvc]]
+
+
+[[symbol-conventions]]
+=== Symbol Conventions
+
+The following table explains symbols that might be used in this book.
+
+[width="100%",cols="<10%,<26%,<28%,<36%",options="header",]
+|===
+|Symbol |Description |Example |Meaning
+
+|`[ ]`
+|Contains optional arguments and command options.
+|`ls [-l]`
+|The `-l` option is not required.
+
+|`{ \| }`
+|Contains a set of choices for a required command option.
+|`-d {y\|n}`
+|The `-d` option requires that you use either the `y` argument or the `n` argument.
+
+|`${ }`
+|Indicates a variable reference.
+|`${com.sun.javaRoot}`
+|References the value of the `com.sun.javaRoot` variable.
+
+|`-`
+|Joins simultaneous multiple keystrokes.
+|Control-A
+|Press the Control key while you press the A key.
+
+|`+`
+|Joins consecutive multiple keystrokes.
+|Ctrl+A+N
+|Press the Control key, release it, and then press the subsequent keys.
+
+|`>`
+|Indicates menu item selection in a graphical user interface.
+|File > New > Templates
+|From the File menu, choose New. From the New submenu, choose Templates.
+|===
+
+
+[[GSSCG00139]][[ghpfg]]
+
+
+[[default-paths-and-file-names]]
+=== Default Paths and File Names
+
+The following table describes the default paths and file names that are
+used in this book.
+
+[%autowidth.stretch,options="header",]
+|===
+|Placeholder |Description |Default Value
+
+|as-install
+a|Represents the base installation directory for {productName}.
+In configuration files, as-install is represented as follows:
+`${com.sun.aas.installRoot}`
+a|* Installations on the Oracle Solaris operating system, Linux operating
+system, and Mac OS operating system:
++
+user's-home-directory``/glassfish7/glassfish``
++
+* Installations on the Windows operating system:
++
+SystemDrive``:\glassfish7\glassfish``
+
+|as-install-parent
+|Represents the parent of the base installation directory for {productName}.
+a|* Installations on the Oracle Solaris operating system, Linux operating
+system, and Mac operating system:
++
+user's-home-directory``/glassfish7``
++
+* Installations on the Windows operating system:
++
+SystemDrive``:\glassfish7``
+
+|domain-root-dir
+|Represents the directory in which a domain is created by default.
+|as-install``/domains/``
+
+|domain-dir
+|Represents the directory in which a domain's configuration is stored.
+In configuration files, domain-dir is represented as follows:
+`${com.sun.aas.instanceRoot}`
+|domain-root-dir/domain-name
+
+|instance-dir
+|Represents the directory for a server instance.
+|domain-dir/instance-name
+|===
+
diff --git a/docs/security-guide/src/main/asciidoc/running-in-secure-environment.adoc b/docs/security-guide/src/main/asciidoc/running-in-secure-environment.adoc
new file mode 100644
index 0000000..9b43ec1
--- /dev/null
+++ b/docs/security-guide/src/main/asciidoc/running-in-secure-environment.adoc
@@ -0,0 +1,547 @@
+type=page
+status=published
+title=Running in a Secure Environment
+prev=administrative-security.html
+~~~~~~
+
+= Running in a Secure Environment
+
+[[GSSCG00040]][[gkscr]]
+
+
+[[running-in-a-secure-environment]]
+== 6 Running in a Secure Environment
+
+This chapter describes important information about running {productName} in a secure environment.
+
+This chapter assumes that you are familiar with security features such
+as authentication, authorization, and certificates. If you are not, see
+link:system-security.html#ablnk[Administering System Security].
+
+Instructions for accomplishing the tasks specific to {productName} by
+using the Administration Console are contained in the Administration
+Console online help.
+
+The chapter describes the following topics:
+
+* link:#gksbk[Determining Your Security Needs]
+* link:#gksbw[Installing {productName} in a Secure Environment]
+* link:#gksby[Run on the Web Profile if Possible]
+* link:#gksct[Securing the {productName} Host]
+* link:#gksca[Securing {productName}]
+* link:#gksbf[Securing Applications]
+
+[[gksbk]][[GSSCG00169]][[determining-your-security-needs]]
+
+=== Determining Your Security Needs
+
+Before you deploy {productName} and your Jakarta EE applications into a
+production environment, determine your security needs and make sure that
+you take the appropriate security measures, as described in the
+following sections:
+
+* link:#gkscs[Understand Your Environment]
+* link:#gksce[Read Security Publications]
+
+[[gkscs]][[GSSCG00237]][[understand-your-environment]]
+
+==== Understand Your Environment
+
+To better understand your security needs, ask yourself the following
+questions:
+
+* Which resources am I protecting?
++
+Many resources in the production environment can be protected, including
+information in databases accessed by {productName} and the
+availability, performance, applications, and the integrity of the Web
+site. Consider the resources you want to protect when deciding the level
+of security you must provide.
+
+* From whom am I protecting the resources?
++
+For most Web sites, resources must be protected from everyone on the
+Internet. But should the Web site be protected from the employees on the
+intranet in your enterprise? Should your employees have access to all
+resources within the {productName} environment? Should the system
+administrators have access to all {productName} resources? Should the
+system administrators be able to access all data? You might consider
+giving access to highly confidential data or strategic resources to only
+a few well trusted system administrators. Perhaps it would be best to
+allow no system administrators access to the data or resources.
+
+* What will happen if the protections on strategic resources fail?
++
+In some cases, a fault in your security scheme is easily detected and
+considered nothing more than an inconvenience. In other cases, a fault
+might cause great damage to companies or individual clients that use the
+Web site. Understanding the security ramifications of each resource will
+help you protect it properly.
+
+See Also: `http://www.oracle.com/us/products/ondemand/index.html`[[gksce]]
+
+[[GSSCG00239]][[read-security-publications]]
+
+==== Read Security Publications
+
+Read about security issues:
+
+* For the latest information about securing Web servers, Oracle
+recommends the "Security Practices & Evaluations" information available
+from the CERT Coordination Center operated by Carnegie Mellon University
+at `http://www.cert.org/`.
+
+[[gksbw]][[GSSCG00170]][[installing-glassfish-server-in-a-secure-environment]]
+
+=== Installing {productName} in a Secure Environment
+
+This section describes recommendations for installing {productName}
+in a secure environment. The link:#gkscn[Enable the Secure
+Administration Feature] topic is described.
+
+[[gkscn]][[GSSCG00240]][[enable-the-secure-administration-feature]]
+
+==== Enable the Secure Administration Feature
+
+The secure administration feature allows an administrator to secure all
+administrative communication between the domain administration server
+(DAS), any remote instances, and administration clients such as the
+asadmin utility, the administration console, and REST clients. In
+addition, secure administration helps to prevent DAS-to-DAS and
+instance-to-instance traffic, and carefully restricts
+administration-client-to-instance traffic.
+
+When you install {productName} or create a new domain, secure admin
+is disabled by default. {productName} does not encrypt administrative
+communication among the system components and does not accept
+administrative connections from remote hosts. Imposing a heightened
+level of security is optional.
+
+See link:administrative-security.html#gknqh[Managing Administrative
+Security] for information on enabling the secure administration feature.
+
+[[gksby]][[GSSCG00172]][[run-on-the-web-profile-if-possible]]
+
+=== Run on the Web Profile if Possible
+
+If your applications can run on the Web Profile, use that instead of the
+Full Platform.
+
+Starting in Jakarta EE 6, Jakarta EE introduced the concept of profiles. A
+profile is a collection of Jakarta EE technologies and APIs that address
+specific developer communities and application types.
+
+The following profiles are implemented through the distributions of
+{productName}:
+
+* Full Platform -The full Jakarta EE platform is designed for developers
+who require the full set of Jakarta EE APIs for enterprise application
+development, and is installed when you install {productName}.
+* Web Profile -This profile contains Web technologies that are a subset
+of the full Java platform, and is designed for developers who do not
+require the full set of Jakarta EE APIs.
+
+For the list of APIs in each profile, see
+"link:release-notes/release-notes.html#GSRLN00136[
+Jakarta EE Standards Support]"
+in {productName} Release Notes.
+
+[[gksct]][[GSSCG00173]][[securing-the-glassfish-server-host]]
+
+=== Securing the {productName} Host
+
+A {productName} production environment is only as secure as the
+security of the machine on which it is running. It is important that you
+secure the physical machine, the operating system, and all other
+software that is installed on the host machine.
+
+The following are recommendations for securing a {productName} host
+in a production environment. Also check with the manufacturer of the
+machine and operating system for recommended security measures.
+
+
+[NOTE]
+====
+The domain and server configuration files should be accessible only by
+the operating system users who configure or execute {productName}.
+====
+
+
+[[sthref39]][[gksbt]]
+
+Table 6-1 Securing the {productName} Host
+
+[width="100%",cols="27%,73%",options="header",]
+|===
+|Security Action |Description
+|Physically secure the hardware. |Keep your hardware in a secured area
+to prevent unauthorized operating system users from tampering with the
+deployment machine or its network connections.
+
+|Log out of the Administration Console before navigating to a non-secure
+site. |If you are logged on to the Administration Console, be sure to
+log out completely before browsing to an unknown or non-secure Web site.
+
+|Secure networking services that the operating system provides. a|
+Have an expert review network services such as e-mail programs or
+directory services to ensure that a malicious attacker cannot access the
+operating system or system-level commands. The way you do this depends
+on the operating system you use.
+
+Sharing a file system with other machines in the enterprise network
+imposes risks of a remote attack on the file system. Be certain that the
+remote machines and the network are secure before sharing the file
+systems from the machine.
+
+|Use a file system that can prevent unauthorized access. |Make sure that
+the file system on each {productName}host can prevent unauthorized
+access to protected resources. For example, on a Windows computer, use
+only NTFS.
+
+|Set file access permissions for data stored on disk. a|
+Set operating system file access permissions to restrict access to data
+stored on disk. This data includes, but is not limited to, the
+following:
+
+The database files. {productName} includes Apache Derby database,
+however, you can use any JDBC-compliant database.
+
+The directory and filename location of a private keystore, such as
+keystore.jks
+
+The directory and filename location of a Root Certificate Authority (CA)
+keystore, such as cacerts.jks.
+
+For example, operating systems provide utilities such as umask and chmod
+to set the file access permissions. At a minimum, consider using "umask
+066", which denies read and write permission to Group and Others.
+
+|Set file access permission for the {productName} installation. a|
+The directory structure in which {productName} is located, including
+all files, should be protected from access by unprivileged users.
+
+Taking this step helps ensure that unprivileged users cannot insert code
+that can potentially be executed by {productName}.
+
+|Limit the number of user accounts on the host machine. a|
+Avoid creating more user accounts than you need on host machines, and
+limit the file access privileges granted to each account. On operating
+systems that allow more than one system administrator user, the host
+machine should have two user accounts with system administrator
+privileges and one user with sufficient privileges to run {productName}. Having two system administrator users provides a back up at all
+times. The {productName} user should be a restricted user, not a
+system administrator user. One of the system administrator users can
+always create a new {productName} user if needed.
+
+Important: Domain and server configuration files should be accessible
+only by the operating system users who configure or execute {productName}.
+
+Review active user accounts regularly and when personnel leave.
+
+Background Information: Configuration data and some URL (Web) resources,
+including Java Server Pages (JSPs) and HTML pages, are stored in clear
+text on the file system. A sophisticated user or intruder with read
+access to files and directories might be able to defeat any security
+mechanisms you establish with authentication and authorization schemes.
+
+|For your system administrator user accounts, choose names that are not
+obvious. |For additional security, avoid choosing an obvious name such
+as "system," "admin," or "administrator" for your system administrator
+user accounts.
+
+|Safeguard passwords. a|
+The passwords for user accounts on production machines should be
+difficult to guess and should be guarded carefully.
+
+Set a policy to expire passwords periodically.
+
+Never code passwords in client applications.
+
+Do not deploy an application that can be accessed with the default
+username admin and no password.
+
+|Safeguard password files a|
+The `-passwordfile` option of the `asadmin` command specifies the name
+of a file that contains password entries in a specific format. These
+password entries are stored in clear text in the password file, and rely
+on file system mechanisms for protection. Therefore, any password file
+created for use with the `-passwordfile` option should be protected with
+file system permissions. Additionally, any password file being used for
+a transient purpose, such as setting up SSH among nodes, should be
+deleted after it has served its purpose.
+
+To provide additional security, create a password alias.
+
+|Use a password alias a|
+A password alias stores a password in encrypted form in the domain
+keystore, providing a clear-text alias name to use instead of the
+password.
+
+To provide additional security, use the `create-password-alias`
+subcommand to create an alias for the password. The password for which
+the alias is created is stored in an encrypted form.
+
+Then, specify the alias in the entry for the password in the password
+file as follows:
+
+In password files and the domain configuration file, use the form
+$\{alias=alias-name} to refer to the encrypted password.
+
+|Do not run {productName} as root a|
+{productName} should run only as an unprivileged user, never as root.
+
+Taking this step helps ensure that code from other users cannot be
+executed by {productName}.
+
+|Consider use PAM Realm |The use of a PAM Realm requires {productName} to run as an account that has read-access to a shadow password
+file or the equivalent, and therefore may not be suitable in your
+environment.
+
+|Do not develop on a production machine. |Develop first on a development
+machine and then move code to the production machine when it is
+completed and tested. This process prevents bugs in the development
+environment from affecting the security of the production environment.
+
+|Do not install development or sample software on a production machine.
+|Do not install development tools on production machines. Keeping
+development tools off the production machine reduces the leverage
+intruders have should they get partial access to a production machine.
+
+|Enable security auditing. |If the operating system on which {productName} runs supports security auditing of file and directory access,
+Oracle recommends using audit logging to track any denied directory or
+file access violations. Administrators should ensure that sufficient
+disk space is available for the audit log.
+
+|Consider using additional software to secure your operating system.
+|Most operating systems can run additional software to secure a
+production environment. For example, an Intrusion Detection System (IDS)
+can detect attempts to modify the production environment. Refer to the
+vendor of your operating system for information about available
+software.
+
+|Apply operating system patch sets and security patches. |Refer to the
+vendor of your operating system for a list of recommended patch sets and
+security-related patches.
+
+|Apply the latest maintenance packs and critical patch updates. |Refer
+to the vendor of your operating system for a list of maintenance packs
+and critical patch updates.
+|===
+
+
+[[gksca]][[GSSCG00174]][[securing-glassfish-server]]
+
+=== Securing {productName}
+
+{productName} provides a powerful and flexible set of software tools
+for securing the subsystems and applications that run on a server
+instance. The following table provides a checklist of essential features
+that Oracle recommends you use to secure your production environment.
+
+[[sthref40]][[gkscz]]
+
+Table 6-2 Securing {productName}
+
+[width="100%",cols="25%,75%",options="header",]
+|===
+|Security Action |Description
+|Enable Secure Admin. a|
+The secure administration feature allows an administrator to secure all
+administrative communication between the domain administration server
+(DAS), any remote instances, and administration clients such as the
+`asadmin` utility, the administration console, and REST clients.
+
+In addition, secure administration helps to prevent DAS-to-DAS and
+instance-to-instance traffic, and carefully restricts
+administration-client-to-instance traffic.
+
+The secure administration feature provides a secure environment, in
+which you can be confident that rogue users or processes cannot
+intercept or corrupt administration traffic or impersonate legitimate
+{productName} components.
+
+See link:administrative-security.html#gknqh[Managing Administrative
+Security].
+
+|Protect the `.asadminpass` file a|
+If you create a domain with the `--savelogin` option, `create-domain`
+saves the administration user name and password in the `.asadminpass`
+file in the user's home directory.
+
+Make sure that this file remains protected. Information stored in this
+file will be used by `asadmin` commands to manage this domain.
+
+|Safeguard password files a|
+The `-passwordfile` option of the `asadmin` command specifies the name
+of a file that contains password entries in a specific format. These
+password entries are stored in clear text in the password file, and rely
+on file system mechanisms for protection. Therefore, any password file
+created for use with the `-passwordfile` option should be protected with
+file system permissions. Additionally, any password file being used for
+a transient purpose, such as setting up SSH among nodes, should be
+deleted after it has served its purpose.
+
+To provide additional security, create a password alias.
+
+|Deploy production-ready security providers to the security realm. a|
+Java Authorization Contract for Containers (JACC) is the part of the
+Jakarta EE specification that defines an interface for pluggable
+authorization providers. This enables you to set up third-party plug-in
+modules to perform authorization.
+
+By default, the {productName} provides a simple, file-based
+authorization engine that complies with the JACC specification. You can
+also specify additional third-party JACC providers.
+
+If you have purchased or written your own security providers, make sure
+that you have deployed and configured them properly.
+
+|Use SSL, but do not use the self-signed certificates in a production
+environment. a|
+To prevent sensitive data from being compromised, secure data transfers
+by using HTTPS.
+
+By default, {productName} uses self-signed certificates. The
+self-signed certificates that {productName} uses might not be trusted
+by clients by default because a certificate authority does not vouch for
+the authenticity of the certificate.
+
+You can instead use your own certificates, as described in
+link:administrative-security.html#gkped[Using Your Own Certificates].
+
+|Restrict the size and the time limit of requests on external channels
+to prevent Denial of Service attacks. a|
+To prevent some Denial of Service (DoS) attacks, restrict the size of a
+message as well as the maximum time it takes a message to arrive.
+
+The default setting for maximum post size is 2097152 bytes and 900
+seconds for the request timeout.
+
+|Enable authentication and authorization auditing. a|
+Auditing is the process of recording key security events in your
+{productName} environment. You use audit modules to develop an audit
+trail of all authentication and authorization decisions. To enable audit
+logging, two steps are required:
+
+1. On the Security page, select the Audit Logging Enabled checkbox to
+enable audit logging.
+2. Set the `auditOn` property for the active audit module to true.
+
+Review the auditing records periodically to detect security breaches and
+attempted breaches. Noting repeated failed logon attempts or a
+surprising pattern of security events can prevent serious problems.
+
+|Set logging for security and SSL messages. a|
+Consider setting module log levels for
+table.jakarta.enterprise.system.ssl.security and
+jakarta.enterprise.system.core.security. You can set a level from Severe
+to Finest (the default is Info), but be aware that the finer logging
+levels may produce a large log file.
+
+By default, {productName} logging messages are recorded in the server
+log, and you can set the file rotation limit, as described in
+link:reference-manual/rotate-log.html#GSRFM00224[`rotate-log`(1)]
+
+|Ensure that you have correctly assigned users to the correct groups.
+|Make sure you have assigned the desired set of users to the right
+groups. In particular, make sure that users assigned to the asadmin
+group need to be members of that group.
+
+|Create no fewer than two user accounts in the asadmin group. |The user
+admin is created when you install {productName}. For production
+environments, create at least one other account in the asadmin group in
+case one account password is compromised. When creating asadmin users
+give them unique names that cannot be easily guessed.
+
+|Assign a password to the admin account. |By default, {productName}
+includes a single account for user "admin" and an empty password. For
+production environments this default is inherently unsecure, and you
+should set a password for admin.
+|===
+
+
+[[gksbf]][[GSSCG00175]][[securing-applications]]
+
+=== Securing Applications
+
+Although much of the responsibility for securing the {productName}
+resources in a domain fall within the scope of the server, some security
+responsibilities lie within the scope of individual applications. For
+some security options, {productName} enables you to determine whether
+the server or individual applications are responsible. For each
+application that you deploy in a production environment, review the
+items in the following table to verify that you have secured its
+resources.
+
+[[sthref41]][[gkscv]]
+
+Table 6-3 Securing Applications
+
+[width="100%",cols="22%,78%",options="header",]
+|===
+|Security Action |Description
+|Use JSP comment tags instead of HTML comment tags. |Comments in JSP
+files that might contain sensitive data and or other comments that are
+not intended for the end user should use the JSP syntax of <%/* xxx */%>
+instead of the HTML syntax <!-- xxx -->. The JSP comments, unlike the
+HTML comments, are deleted when the JSP is compiled and therefore cannot
+be viewed in the browser.
+
+|Do not install uncompiled JSPs and other source code on the production
+machine. a|
+Always keep source code off of the production machine. Getting access to
+your source code allows an intruder to find security holes.
+
+Consider precompiling JSPs and installing only the compiled JSPs on the
+production machine. To do this, set the `deploy` subcommand
+`-precompilejsp` option to true for the component.
+
+When set to true, the `deploy` and `redeploy` subcommands
+`-precompilejsp` option compiles JSPs during deploy time. If set to
+false (the default), JSPs are compiled during runtime.
+
+|Configure your applications to use SSL. |Set the transport-guarantee to
+CONFIDENTIAL in the user-data-constraint element of the web.xml file
+whenever appropriate.
+
+|Examine applications for security. a|
+There are instances where an application can lead to a security
+vulnerability.
+
+Of particular concern is code that uses Java native interface (JNI)
+because Java positions native code outside of the scope of Java
+security. If Java native code behaves errantly, it is only constrained
+by the operating system. That is, the Java native code can do anything
+{productName} itself can do. This potential vulnerability is further
+complicated by the fact that buffer overflow errors are common in native
+code and can be used to run arbitrary code.
+
+|If your applications contain untrusted code, enable the Java security
+manager. |The Java security manager defines and enforces permissions for
+classes that run within a JVM. In many cases, where the threat model
+does not include malicious code being run in the JVM, the Java security
+manager is unnecessary. However, when third parties use {productName}
+and untrusted classes are being run, the Java security manager may be
+useful. See "link:application-development-guide/securing-apps.html#GSDVG00373[Enabling and Disabling the Security
+Manager]" in {productName} Application
+Development Guide.
+
+|Replace HTML special characters when servlets or JSPs return
+user-supplied data. a|
+The ability to return user-supplied data can present a security
+vulnerability called cross-site scripting, which can be exploited to
+steal a user's security authorization. For a detailed description of
+cross-site scripting, refer to "Understanding Malicious Content
+Mitigation for Web Developers" (a CERT security advisory) at
+`http://www.cert.org/tech_tips/malicious_code_mitigation.html`.
+
+To remove the security vulnerability, before you return data that a user
+has supplied, scan the data for HTML special characters. If you find any
+such characters, replace them with their HTML entity or character
+reference. Replacing the characters prevents the browser from executing
+the user-supplied data as HTML.
+
+|===
+
+
+
diff --git a/docs/security-guide/src/main/asciidoc/security-in-cluster-mode.adoc b/docs/security-guide/src/main/asciidoc/security-in-cluster-mode.adoc
new file mode 100644
index 0000000..29e2224
--- /dev/null
+++ b/docs/security-guide/src/main/asciidoc/security-in-cluster-mode.adoc
@@ -0,0 +1,154 @@
+type=page
+status=published
+title=Administering Security in Cluster Mode
+next=administrative-security.html
+prev=message-security.html
+~~~~~~
+
+= Administering Security in Cluster Mode
+
+[[GSSCG00038]][[gknpf]]
+
+
+[[administering-security-in-cluster-mode]]
+== 4 Administering Security in Cluster Mode
+
+This chapter describes important information about administering
+security in a cluster.
+
+The following topics are described:
+
+* link:#gksam[Configuring Certificates in Cluster Mode]
+* link:#gkmhh[Dynamic Reconfiguration]
+* link:#gktgi[Understanding Synchronization]
+
+This chapter assumes that you are familiar with security features such
+as authentication, authorization, and certificates. If you are not, see
+link:system-security.html#ablnk[Administering System Security].
+
+Instructions for accomplishing the tasks specific to {productName} by
+using the Administration Console are contained in the Administration
+Console online help.
+
+[[gksam]][[GSSCG00159]][[configuring-certificates-in-cluster-mode]]
+
+=== Configuring Certificates in Cluster Mode
+
+The sections link:system-security.html#abloj[Certificates and SSL] and
+link:system-security.html#ablqz[Administering JSSE Certificates] describe
+the relevant concepts and use of certificates in {productName}.
+
+By default, {productName} uses self-signed certificates. The
+self-signed certificates that {productName} uses might not be trusted
+by clients by default because a certificate authority does not vouch for
+the authenticity of the certificate.
+
+You can instead use your own certificates, as described in
+link:administrative-security.html#gkped[Using Your Own Certificates].
+
+[[gkmhh]][[GSSCG00160]][[dynamic-reconfiguration]]
+
+=== Dynamic Reconfiguration
+
+Administrative commands that you execute on the domain administration
+server (DAS) must either be replicated on the affected server instances,
+or on all server instances that are part of the cluster. {productName} replicates the commands by sending the same administration
+command request that was sent to the DAS to the server instances. As a
+result of replicating the commands on the DAS and the individual
+instances, the DAS and the instances make the same changes to their
+respective copies of the domain's configuration.
+
+[NOTE]
+====
+Oracle recommends that you enable secure admin as described in
+link:administrative-security.html#gknqh[Managing Administrative Security]
+so that {productName} securely transfers these files on the network.
+====
+
+Dynamic reconfiguration refers to using the `--target` operand to CLI
+subcommands to make a change to a server instance (if the user-specified
+target is a server instance), or all server instances that are part of
+the cluster (if the user-specified target is a cluster). For
+example:`asadmin create-jdbc-resource some-options --target some-target`.
+
+The `--target` operand allows the following values:
+
+* `server` - Performs the command on the default server instance.
+This is the default value.
+* configuration_name - Performs the command in the specified configuration.
+* cluster_name - Performs the command on all server instances in the
+specified cluster.
+* instance_name - Performs the command on a specified server instance.
+
+If a command fails for a cluster, the status shows all server instances
+where dynamic reconfiguration failed, and suggests corrective next steps.
+
+The command status also shows when a restart is required for each server instance.
+
+The `--target` operand is supported for the following security-related CLI subcommands:
+
+* create-jacc-provider
+* delete-jacc-provider
+* list-jacc-providers
+* create-audit-module
+* create-auth-realm
+* create-file-user
+* delete-audit-module
+* delete-auth-realm
+* delete-file-user
+* update-file-user
+* create-message-security-provider
+* delete-message-security-provider
+* list-audit-modules
+* list-file-groups
+* list-file-users
+* login
+
+[[gkned]][[GSSCG00226]][[enabling-dynamic-configuration]]
+
+==== Enabling Dynamic Configuration
+
+Dynamic configuration is enabled by default and no additional action is required.
+
+Use the following command to enable dynamic configuration from the command line:
+
+`asadmin --user user --passwordfile password-file set cluster-name-config.dynamic-reconfiguration-enabled=true`.
+
+To enable dynamic configuration from the Administration Console, perform
+the following steps:
+
+1. Expand the Configurations node.
+2. Click the name of the cluster's configuration.
+3. On the Configuration System Properties page,
+   check the Dynamic Reconfiguration Enabled box.
+4. Click Save.
+
+[NOTE]
+====
+The dynamic reconfiguration feature applies only to server instances,
+not the DAS. Therefore, you cannot "disable" dynamic reconfiguration on
+the DAS. There is no way to make changes to the DAS configuration using
+`asadmin` commands, the Administration Console, or the REST interface
+without having those changes take effect immediately.
+====
+
+[[gktgi]][[GSSCG00161]][[understanding-synchronization]]
+
+=== Understanding Synchronization
+
+As described in "link:ha-administration-guide/instances.html#GSHAG00189[
+Resynchronizing {productName} Instances and the DAS]"
+in {productName} High
+Availability Administration Guide, configuration data for a {productName} instance is stored in the repository of the DAS and in a cache on
+the host that is local to the instance. The configuration data in these
+locations must be synchronized. The cache is synchronized only when a
+user uses the administration tools to start or restart an instance.
+
+See "link:ha-administration-guide/instances.html#GSHAG00189[
+Resynchronizing {productName} Instances and the DAS]"
+in {productName} High Availability
+Administration Guide for information about default synchronization for
+files and directories, for the steps required to resynchronize an
+instance and the DAS, and for additional synchronization topics.
+
+
diff --git a/docs/security-guide/src/main/asciidoc/system-security.adoc b/docs/security-guide/src/main/asciidoc/system-security.adoc
new file mode 100644
index 0000000..76dfd19
--- /dev/null
+++ b/docs/security-guide/src/main/asciidoc/system-security.adoc
@@ -0,0 +1,2121 @@
+type=page
+status=published
+title=Administering System Security
+next=user-security.html
+prev=preface.html
+~~~~~~
+
+= Administering System Security
+
+[[GSSCG00035]][[ablnk]]
+
+
+[[administering-system-security]]
+== 1 Administering System Security
+
+This chapter describes general information about administering system security.
+
+The following topics are addressed here:
+
+* link:#ggktf[About System Security in {productName}]
+* link:#ghgrp[Administering Passwords]
+* link:#ghgol[Administering Audit Modules]
+* link:#ablqz[Administering JSSE Certificates]
+* link:#gkngj[Administering JACC Providers]
+
+Instructions for accomplishing many of these tasks by using the
+Administration Console are contained in the Administration Console
+online help.
+
+Information on application security is contained in
+"link:application-development-guide/securing-apps.html#GSDVG00006[Securing Applications]"
+in {productName} Application Development Guide.
+
+[[ggktf]][[GSSCG00143]][[about-system-security-in-glassfish-server]]
+
+=== About System Security in {productName}
+
+Security is about protecting data, that is, how to prevent unauthorized
+access or damage to data that is in storage or in transit. The {productName} is built on the Java security model, which uses a sandbox where
+applications can run safely, without potential risk to systems or users.
+System security affects all the applications in the {productName} environment.
+
+The Jakarta EE Security API specification defines portable, plug-in
+interfaces for authentication and identity stores, and a new
+injectable-type SecurityContext interface that provides an access point
+for programmatic security. You can use the built-in implementations of
+the plug-in SPIs, or write custom implementations.
+
+System security features include the following:
+
+* link:#ablnx[Authentication]
+* link:#ghlvu[Authorization]
+* link:#ghlql[Auditing]
+* link:#ghlti[Firewalls]
+* link:#abloj[Certificates and SSL]
+* link:#ablno[Tools for Managing System Security]
+
+[[ablnx]][[GSSCG00203]][[authentication]]
+
+==== Authentication
+
+Authentication is the way in which an entity (a user, an application, or
+a component) determines that another entity is who it claims to be. An
+entity uses security credentials to authenticate itself. The credentials
+might be a user name and password, a digital certificate, or something
+else. Usually, servers or applications require clients to authenticate
+themselves. Additionally, clients might require servers to authenticate
+themselves. When authentication is bidirectional, it is called mutual
+authentication.
+
+When an entity tries to access a protected resource, {productName}
+uses the authentication mechanism configured for that resource to
+determine whether to grant access. For example, a user can enter a user
+name and password in a web browser, and if the application verifies
+those credentials, the user is authenticated. The user is associated
+with this authenticated security identity for the remainder of the session.
+
+[[ghsqc]][[GSSCG00184]][[authentication-types]]
+
+===== Authentication Types
+
+Within its deployment descriptors, an application can specify the type
+of authentication that it uses. The Jakarta EE Security API provides an
+alternative mechanism for configuring the type of authentication an
+application uses. See https://jcp.org/en/jsr/detail?id=375[Jakarta EE
+Security API 1.0 specification]. {productName} supports specifying
+the following types of authentication in deployment descriptors:
+
+BASIC::
+  Uses the standard Basic Authentication Scheme as described in RFC 2617.
+  The communication protocol is HTTP (SSL optional). There is no
+  encryption of user credentials unless using SSL. This type is not
+  considered to be a secure method of user authentication unless used in
+  conjunction with an encrypted communications channel, such as that
+  provided by SSL.
+FORM::
+  The application provides its own custom login and error pages. The
+  communication protocol is HTTP (SSL optional). There is no encryption
+  of user credentials unless using SSL.
+CLIENT-CERT::
+  The server authenticates the client using a public key certificate.
+  The communication protocol is HTTPS (HTTP over SSL).
+DIGEST::
+  The server authenticates a user based on a user name and a password.
+  Unlike BASIC authentication, the plaintext password is never sent over
+  the network, although a hash of the password combined with other
+  parameters is sent. While Digest Authentication is more secure than
+  Basic Authentication, user names and passwords are not strongly
+  protected, and the use of SSL is still recommended.
+
+[[sthref4]][[jsr-375-authentication-mechanisms-and-identity-stores]]
+
+===== JSR 375 Authentication Mechanisms and Identity Stores
+
+The Jakarta EE Security API defines the `HttpAuthenticationMechanism`
+interface, the `IdentityStore` and `IdentityStoreHandler` interfaces.
+
+The `HttpAuthenticationMechanism` interface defines an SPI for writing
+authentication mechanisms that can be provided with an application and
+deployed using CDI. Developers can write their own implementations of
+`HttpAuthenticationMechanism` to support specific authentication token
+types or protocols. There are also several built-in authentication
+mechanisms that perform BASIC, FORM, and Custom FORM authentication.
+The `HttpAuthenticationMechanism` interface defines three methods -
+`validateRequest()`, `secureResponse()`, and `cleanSubject()`.
+These methods align closely with the methods defined by the JASPIC
+`ServerAuth` interface.
+
+The `IdentityStore` interface provides an abstraction of an identity
+store that holds user account information including name, password,
+group membership, and potentially other attributes. Implementations of
+the `IdentityStore` interface are used to validate caller credentials,
+typically username and password, and retrieve and group information.
+There are built-in implementations of this SPI that can validate
+credentials against external LDAP or Database identity stores.
+
+`IdentityStore` is intended primarily for use by
+`HttpAuthenticationMechanism` implementations, but could be used by
+other authentication mechanisms, such as a JASPIC `ServerAuthModule`, or
+a container's built-in authentication mechanisms. Though
+`HttpAuthenticationMechanism` implementations can authenticate users in
+any manner they choose, the `IdentityStore` interface provides a
+convenient mechanism. A significant advantage of using
+`HttpAuthenticationMechanism` and `IdentityStore` over the declarative
+mechanisms defined by the Servlet specification is that it allows an
+application to control the identity stores that it authenticates
+against, in a standard, portable way. You can use the built-in
+implementations of the  plug-in SPIs, or define custom implementations.
+
+[[gknah]][[GSSCG00185]][[jsr-196-server-authentication-modules]]
+
+===== JSR 196 Server Authentication Modules
+
+{productName} implements the Servlet Container Profile of
+http://www.jcp.org/en/jsr/detail?id=196[JSR 196 Java Authentication
+Service Provider Interface for Containers specification].
+
+JSR 196 defines a standard service-provider interface (SPI) for
+integrating authentication mechanism implementations in message
+processing runtimes. JSR 196 extends the concepts of the Java
+Authentication and Authorization Service (JAAS) to enable pluggability
+of message authentication modules in message processing runtimes. The
+standard defines profiles that establish contracts for the use of the
+SPI in specific contexts.
+
+[[ghltx]][[GSSCG00186]][[passwords]]
+
+===== Passwords
+
+Passwords are your first line of defense against unauthorized access to
+the components and data of {productName}. For Information about how
+to use passwords for {productName}, see link:#ghgrp[Administering
+Passwords].
+
+[[gczen]][[GSSCG00042]][[master-password-and-keystores]]
+
+====== Master Password and Keystores
+
+The master password is not tied to a user account and it is not used for
+authentication. Instead, {productName} uses the master password only
+to encrypt the keystore and truststore for the DAS and instances.
+
+When you create a new {productName} domain, a new self-signed
+certificate is generated and stored in the domain keystore and
+truststore. The DAS needs the master password to open these stores at
+startup. Similarly, the associated server instances need the master
+password to open their copy of these stores at startup.
+
+If you use a utility such as keytool to modify the keystore or
+truststore, you must provide the master password in that case as well.
+
+The master password is a shared password and must be the same for the
+DAS and all instances in the domain in order to manage the instances
+from the DAS. However, because {productName} never transmits the
+master password over the network, it is up to you to keep the master
+password in sync between the DAS and instances.
+
+If you change the master password, you can choose to enter the master
+password manually when required, or save it in a file.
+
+[[gktgy]][[GSSCG00043]][[understanding-master-password-synchronization]]
+
+====== Understanding Master Password Synchronization
+
+The master password is used encrypt the keystore and truststore for the
+DAS and instances. The DAS needs the master password to open these
+stores at startup. Similarly, the associated server instances need the
+master password to open their copy of these stores at startup.
+
+{productName} keeps the keystore and truststore for the DAS and
+instances in sync, which guarantees that all copies of the stores are
+encrypted with the same master password at any given time.
+
+However, {productName} does not synchronize the master password
+itself, and it is possible that the DAS and instances might attempt to
+use different master passwords.
+
+Consider the following potential scenario:
+
+1. You create a domain and instances, using the default master password
+(changeit). As a result, the DAS and instances have keystores and
+truststores encrypted using changeit.
+2. You use the `change-master-password` subcommand on the DAS to change
+the master password to ichangedit. As a result, the DAS and instance
+keystores and truststores are encrypted using ichangedit.
+3. Access to the keystore and truststore from an instance now requires
+the master password ichangedit. You are responsible for changing the
+master password as needed.
+
+If you do not use a master password file, you assume the responsibility
+for using the `change-master-password` subcommand on the DAS and
+instances to keep the master passwords in sync. Be aware that not using
+a master password file has additional considerations for the
+start-instance and start-cluster subcommands, as described in
+link:#gktgr[Additional Considerations for the `start-instance` and
+`start-cluster` Subcommands].
+
+If you do use a master password file, you assume the responsibility for
+using the `change-master-password` subcommand on the DAS and instances
+to keep the master password file in sync.
+
+[[gktez]][[GSSCG00044]][[using-the-default-master-password]]
+
+====== Using the Default Master Password
+
+{productName} uses the known phrase "changeit" as the default master
+password. This master password is not stored in a file. The default
+password is a convenience feature and provides no additional security
+because it is assumed to be widely known.
+
+All {productName} subcommands work as expected with the default
+master password and there are no synchronization issues.
+
+[[gktfy]][[GSSCG00045]][[saving-the-master-password-to-a-file]]
+
+====== Saving the Master Password to a File
+
+The `change-master-password` `--savemasterpassword` option indicates
+whether the master password should be written to the file system in the
+`master-password` file for the DAS or a node. The default is false.
+
+For a domain, the master password is kept in
+domain-dir``/master-password``.
+
+For a node, the master-password file is kept in
+``nodes/``node-name``/agent/master-password``. You can set a master password
+at the node level and all instances created on that node will use that
+master-password file. To do this, use the `--nodedir` option and provide
+a node name.
+
+You might want to save the master password to the file so that the
+`start-domain` subcommand can start the server without having to prompt
+the user. There are additional considerations for using a master
+password with the `start-instance` and `start-cluster` subcommands, as
+described in link:#gktgr[Additional Considerations for the
+`start-instance` and `start-cluster` Subcommands].
+
+The master-password file is encoded, not encrypted. You must use
+filesystem permissions to protect the file.
+
+[[gkthb]][[GSSCG00046]][[using-the-master-password-when-creating-a-domain]]
+
+====== Using the Master Password When Creating a Domain
+
+The `create-domain` `--usemasterpassword` option specifies whether the
+keystore is encrypted with a master password that is built into the
+system, or by a user-defined master password.
+
+* If false (default), the keystore is encrypted with a well-known
+password (changeit) that is built into {productName}.
+* If true, the subcommand obtains the master password from the
+`AS_ADMIN_MASTERPASSWORD` entry in the password file you specified in
+the `--passwordfile` option of the `asadmin` utility. Or, if none is
+defined, `--usemasterpassword` prompts the user for the master password.
+
+[[ghgof]][[GSSCG00047]][[administration-password]]
+
+====== Administration Password
+
+An administration password, also known as the admin password, is used to
+invoke the Administration Console and the `asadmin` utility. As with the
+default admin username, the default admin password is usually set during
+installation but it can be changed. For instructions, see link:#ghgpu[To
+Change an Administration Password].
+
+[[ablnq]][[GSSCG00048]][[encoded-passwords]]
+
+====== Encoded Passwords
+
+Files that contain encoded passwords need to be protected using file
+system permissions. These files include the following:
+
+* domain-dir``/master-password``
++
+This file contains the encoded master password and should be protected
+with file system permissions 600.
+* Any password file created to pass as an argument by using the
+`--passwordfile` argument to the `asadmin` utility should be protected
+with file system permissions. Additionally, any password file being used
+for a transient purpose, such as setting up SSH among nodes, should be
+deleted after it has served its purpose.
+
+For instructions, see link:#ghytn[To Set a Password From a File].
+
+[[gkaol]][[GSSCG00049]][[web-browsers-and-password-storage]]
+
+====== Web Browsers and Password Storage
+
+Most web browsers can save login credentials entered through HTML forms.
+This function can be configured by the user and also by applications
+that employ user credentials. If the function is enabled, then
+credentials entered by the user are stored on their local computer and
+retrieved by the browser on future visits to the same application. This
+function is convenient for users, but can also be a security risk. The
+stored credentials can be captured by an attacker who gains access to
+the computer, either locally or through some remote compromise. Further,
+methods have existed whereby a malicious web site can retrieve the
+stored credentials for other applications, by exploiting browser
+vulnerabilities or through application-level cross-domain attacks.
+
+To prevent your web browser from saving login credentials for the
+{productName} Administration Console, choose "No" or "Never for this
+page" when prompted by the browser during login.
+
+[[ghgoj]][[GSSCG00187]][[password-aliases]]
+
+===== Password Aliases
+
+To avoid storing passwords in the domain configuration file in clear
+text, you can create an alias for a password. This process is also known
+as encrypting a password. For more information, see
+link:#ghgqc[Administering Password Aliases].
+
+[[ghlus]][[GSSCG00188]][[single-sign-on]]
+
+===== Single Sign-on
+
+With single sign-on, a user who logs in to one application becomes
+implicitly logged in to other applications that require the same
+authentication information. Single sign-on is based on groups. Single
+sign-on applies to web applications configured for the same realm and
+virtual server. The realm is defined by the `realm-name` element in the
+`web.xml` file.
+
+On {productName}, single sign-on behavior can be inherited from the
+HTTP Service, enabled, or disabled. By default, it is inherited from the
+HTTP Service. If enabled, single sign-on is enabled for web applications
+on this virtual server that are configured for the same realm. If
+disabled, single sign-on is disabled for this virtual server, and users
+must authenticate separately to every application on the virtual server.
+
+[[ghlvu]][[GSSCG00204]][[authorization]]
+
+==== Authorization
+
+Authorization, also known as access control, is the means by which users
+are granted permission to access data or perform operations. After a
+user is authenticated, the user's level of authorization determines what
+operations the owner can perform. A user's authorization is based on the
+user's role.
+
+[[abloh]][[GSSCG00189]][[roles]]
+
+Roles
++++++
+
+A role defines which applications and what parts of each application
+users can access and what those users or groups can do with the
+applications. For example, in a personnel application, all employees
+might be able to see phone numbers and email addresses, but only
+managers have access to salary information. This application would
+define at least two roles: `employee` and `manager`. Only users in the
+`manager` role are allowed to view salary information.
+
+A role is different from a group in that a role defines a function in an
+application, while a group is a set of users who are related in some
+way. For example, the personnel application specify groups such as
+`full-time`, `part-time`, and `on-leave`. Users in these groups are all
+employees (the `employee` role). In addition, each user has its own
+designation that defines an additional level of employment.
+
+Roles are defined in the deployment descriptor for the application. The
+application developer or deployer maps roles to one or more groups in
+the deployment descriptor for each application. When the application is
+being packaged and deployed, the application specifies mappings between
+users, groups, and roles, as illustrated in link:#fxjfw[Figure 1-1].
+
+[NOTE]
+====
+By default, group principal names are mapped to roles of the same name.
+Therefore, the Default Principal To Role Mapping setting is enabled by
+default on the Security page of the {productName} Administration
+Console. With this setting enabled, if the group name defined on
+{productName} matches the role name defined in the application, there
+is no need to use the runtime deployment descriptor to provide a
+mapping. The application server will implicitly make this mapping, as
+long as the names of the groups and roles match.
+====
+
+[[GSSCG00001]][[fxjfw]]
+
+.*Figure 1-1 Role Mapping*
+image:img/securityrolemapping.png[
+"Figure shows how users are assigned to groups, how users and groups are
+assigned to roles, and how applications use groups and roles."]
+
+
+[[ghsqd]][[GSSCG00190]][[java-authorization-contract-for-containers]]
+
+===== Java Authorization Contract for Containers
+
+Java Authorization Contract for Containers (JACC) is the part of the
+Jakarta EE specification that defines an interface for pluggable
+authorization providers. This enables you to set up third-party plug-in
+modules to perform authorization. By default, the {productName}
+provides a simple, file-based authorization engine that complies with
+the JACC specification.
+
+This release includes Administration Console support and CLI subcommands
+to create (`create-jacc-provider`), delete (`delete-jacc-provider`), and
+list (`list-jacc-providers`) JACC providers. link:#gkngj[Administering
+JACC Providers] for additional information.
+
+You can also specify additional third-party JACC providers.
+
+[[gkriq]][[GSSCG00191]][[working-with-the-server.policy-policy-file]]
+
+===== Working With the server.policy Policy File
+
+Each {productName} domain has its own global Java SE policy file,
+located in domain-dir``/config``. The file is named `server.policy`.
+
+This section covers the following topics:
+
+* link:#gkrkh[Contents of server.policy]
+* link:#gkrmo[Changing the Default Permissions]
+
+[[gkrkh]][[GSSCG00050]][[contents-of-server.policy]]
+
+Contents of server.policy
+
+A sample server.policy file is as follows. Comments in the file describe
+why various permissions are granted. These permissions are described in
+more detail in the next section.
+
+[NOTE]
+====
+This server.policy file is presented for example purposes only and is
+subject to change.
+====
+
+[source]
+----
+// classes in lib get all permissions by default
+grant codeBase "file:${com.sun.aas.installRoot}/lib/-" {
+    permission java.security.AllPermission;
+};
+
+// Core server classes get all permissions by default
+grant codeBase "file:${com.sun.aas.installRoot}/modules/-" {
+    permission java.security.AllPermission;
+};
+
+// Felix classes get all permissions by default
+grant codeBase "file:${com.sun.aas.installRoot}/osgi/felix/bin/-" {
+    permission java.security.AllPermission;
+};
+
+// iMQ classes get all permissions by default
+grant codeBase "file:${com.sun.aas.imqLib}/-" {
+    permission java.security.AllPermission;
+};
+
+// Derby driver classes get all permissions by default
+grant codeBase "file:${com.sun.aas.derbyRoot}/lib/-" {
+    permission java.security.AllPermission;
+};
+
+
+// permission for JDK's tools.jar to enable webservice annotation processing
+// at runtime by wsgen tool:
+//       permission java.lang.RuntimePermission "createClassLoader";
+//
+// permission for JDK's tools.jar to sign JARs at runtime for
+// Java Web Start support:
+//       permissions java.security.AllPermission;
+// on the advice of the JDK tools folks.  Should be refined later.
+grant codeBase "file:${com.sun.aas.javaRoot}/lib/tools.jar" {
+    permission java.security.AllPermission;
+};
+
+//Loading MBeans from anywhere, to take care of side effects of 6235678.
+grant {
+    permission javax.management.MBeanTrustPermission "register" ;
+};
+//Loading MBeans from anywhere, to take care of side effects of 6235678.
+
+
+// Basic set of required permissions granted to all remaining code
+// The permission FilePermission "<<ALL FILES>>", "read,write"
+// allows all applications to read and write any file in the filesystem.
+// It should be changed based on real deployment needs. If you know your
+// applications just need to read/write a few directories consider removing
+// this permission and adding grants indicating those specific directories.
+// against the codebase of your application(s).
+grant {
+    //Workaround for bugs #6484935, 6513799
+    permission java.lang.RuntimePermission "getProtectionDomain";
+    permission com.sun.corba.ee.impl.presentation.rmi.DynamicAccessPermission "access";
+    permission java.util.PropertyPermission "*", "read,write";
+
+    permission java.lang.RuntimePermission  "loadLibrary.*";
+    permission java.lang.RuntimePermission  "queuePrintJob";
+    permission java.net.SocketPermission    "*", "connect";
+    permission java.io.FilePermission       "<<ALL FILES>>", "read,write";
+
+        // work-around for pointbase bug 4864405
+        permission java.io.FilePermission
+          "${com.sun.aas.instanceRoot}${/}lib${/}databases${/}-",
+           "delete";
+        permission java.io.FilePermission "${java.io.tmpdir}${/}-", "delete";
+
+    permission java.util.PropertyPermission "*", "read";
+
+    permission java.lang.RuntimePermission    "modifyThreadGroup";
+    permission java.lang.RuntimePermission    "getClassLoader";
+    permission java.lang.RuntimePermission    "setContextClassLoader";
+        permission javax.management.MBeanPermission
+               "[com.sun.messaging.jms.*:*]", "*";
+};
+
+
+// Following grant block is only required by Connectors. If Connectors
+// are not in use the recommendation is to remove this grant.
+grant {
+        permission javax.security.auth.PrivateCredentialPermission
+               "javax.resource.spi.security.PasswordCredential * \"*\"","read";
+};
+
+// Following grant block is only required for Reflection. If Reflection
+// is not in use the recommendation is to remove this section.
+grant {
+    permission java.lang.RuntimePermission "accessDeclaredMembers";
+};
+
+// Permissions to invoke CORBA objects in server
+grant {
+    permission com.sun.enterprise.security.CORBAObjectPermission "*", "*";
+};
+----
+
+[[gkrmo]][[GSSCG00051]][[changing-the-default-permissions]]
+
+====== Changing the Default Permissions
+
+The {productName} internal server code is granted all permissions.
+These grants are covered by the `AllPermission` grant blocks to various
+parts of the server infrastructure code. Do not modify these entries.
+
+Application permissions are granted in the default grant block. These
+permissions apply to all code not part of the internal server code
+listed previously.
+
+The last section, beginning with the comment "Basic set of required
+permissions..." provides the basic set of permissions granted to all
+remaining code.
+
+Depending on your {productName} implementation, deleting or modifying
+these permissions might be appropriate.
+
+Specifically, the following permission allows all applications to read
+and write all properties and read and write all files on the filesystem.
+
+[source]
+----
+permission java.util.PropertyPermission "*", "read,write";
+permission java.io.FilePermission       "<<ALL FILES\>>", "read,write";
+----
+
+While this grant provides optimum flexibility, it is inherently
+unsecure. For enhanced security, change this permission based on your
+real deployment needs.
+
+For example, consider removing this permission and assign default read
+and write permissions only to the application's install directory
+(context-root). (This example uses `com.sun.aas.instanceRoot`, which
+specifies the top level directory for a server instance.)
+
+[source]
+----
+grant codeBase "file:${com.sun.aas.instanceRoot}/applications/MyApp/-"
+{
+permission java.io.FilePermission "file:${com.sun.aas.instanceRoot}
+/applications/MyApp/-", "read,write";
+}
+----
+
+For any application that needs to read and write additional directories,
+you would then have to explicitly allow such permissions by adding
+specific grants. In general, you should add extra permissions only to
+the applications or modules that require them, not to all applications
+deployed to a domain.
+
+Additional permissions (see the embedded comments in `server.policy`)
+are granted specifically for using connectors and reflection. If
+connectors or reflection are not used in a particular domain, you should
+remove these permissions, because they are otherwise unnecessary.
+
+[[ghlql]][[GSSCG00205]][[auditing]]
+
+==== Auditing
+
+Auditing is the means used to capture security-related events for the
+purpose of evaluating the effectiveness of security measures. {productName} uses audit modules to capture audit trails of all authentication
+and authorization decisions. {productName} provides a default audit
+module, as well as the ability to plug in custom audit modules. The
+scope of the audit module is the entire server, which means that all the
+applications on the server will use the same audit module.
+
+For administration instructions, see link:#ghgol[Administering Audit
+Modules].
+
+[[ghlti]][[GSSCG00206]][[firewalls]]
+
+==== Firewalls
+
+A firewall controls the flow of data between two or more networks, and
+manages the links between the networks. A firewall can consist of both
+hardware and software elements. The following guidelines pertain
+primarily to {productName}:
+
+* In general, firewalls should be configured so that clients can access
+the necessary TCP/IP ports.
++
+For example, if the HTTP listener is operating on port 8080, configure
+the firewall to allow HTTP requests on port 8080 only. Likewise, if
+HTTPS requests are set up for port 8081, you must configure the
+firewalls to allow HTTPS requests on port 8081.
+* If direct Remote Method Invocations over Internet Inter-ORB Protocol
+(RMI-IIOP) access from the Internet to EJB modules is required, open the
+RMI-IIOP listener port as well.
++
+
+[NOTE]
+====
+Opening the RMI-IIOP listener port is strongly discouraged because it
+creates security risks.
+====
+
+* In double firewall architecture, you must configure the outer firewall
+to allow for HTTP and HTTPS transactions. You must configure the inner
+firewall to allow the HTTP server plug-in to communicate with {productName} behind the firewall.
+
+[[abloj]][[GSSCG00207]][[certificates-and-ssl]]
+
+==== Certificates and SSL
+
+The following topics are addressed here:
+
+* link:#ablok[Certificates]
+* link:#ablol[Certificate Chains]
+* link:#ablqx[Certificate Files]
+* link:#ablom[Secure Sockets Layer]
+* link:#gksdc[Custom Authentication of Client Certificate in SSL Mutual Authentication]
+
+For administration instructions, see link:#ablqz[Administering JSSE Certificates].
+
+[[ablok]][[GSSCG00192]][[certificates]]
+
+===== Certificates
+
+Certificates, also called digital certificates, are electronic files
+that uniquely identify people and resources on the Internet.
+Certificates also enable secure, confidential communication between two
+entities. There are different kinds of certificates:
+
+* Personal certificates are used by individuals.
+* Server certificates are used to establish secure sessions between the
+server and clients through secure sockets layer (SSL) technology.
+
+Certificates are based on public key cryptography, which uses pairs of
+digital keys (very long numbers) to encrypt, or encode, information so
+the information can be read only by its intended recipient. The
+recipient then decrypts (decodes) the information to read it. A key pair
+contains a public key and a private key. The owner distributes the
+public key and makes it available to anyone. But the owner never
+distributes the private key, which is always kept secret. Because the
+keys are mathematically related, data encrypted with one key can only be
+decrypted with the other key in the pair.
+
+Certificates are issued by a trusted third party called a Certification
+Authority (CA). The CA is analogous to a passport office: it validates
+the certificate holder's identity and signs the certificate so that it
+cannot be forged or tampered with. After a CA has signed a certificate,
+the holder can present it as proof of identity and to establish
+encrypted, confidential communications. Most importantly, a certificate
+binds the owner's public key to the owner's identity.
+
+In addition to the public key, a certificate typically includes
+information such as the following:
+
+* The name of the holder and other identification, such as the URL of
+the web server using the certificate, or an individual's email address
+* The name of the CA that issued the certificate
+* An expiration date
+
+Certificates are governed by the technical specifications of the X.509
+format. To verify the identity of a user in the `certificate` realm, the
+authentication service verifies an X.509 certificate, using the common
+name field of the X.509 certificate as the principal name.
+
+[[ablol]][[GSSCG00193]][[certificate-chains]]
+
+===== Certificate Chains
+
+A certificate chain is a series of certificates issued by successive CA
+certificates, eventually ending in a root CA certificate.
+
+Web browsers are preconfigured with a set of root CA certificates that
+the browser automatically trusts. Any certificates from elsewhere must
+come with a certificate chain to verify their validity.
+
+When a certificate is first generated, it is a self-signed certificate.
+A self-signed certificate is one for which the issuer (signer) is the
+same as the subject (the entity whose public key is being authenticated
+by the certificate). When the owner sends a certificate signing request
+(CSR) to a CA, then imports the response, the self-signed certificate is
+replaced by a chain of certificates. At the bottom of the chain is the
+certificate (reply) issued by the CA authenticating the subject's public
+key. The next certificate in the chain is one that authenticates the
+CA's public key. Usually, this is a self-signed certificate (that is, a
+certificate from the CA authenticating its own public key) and the last
+certificate in the chain.
+
+In other cases, the CA can return a chain of certificates. In this
+situation, the bottom certificate in the chain is the same (a
+certificate signed by the CA, authenticating the public key of the key
+entry), but the second certificate in the chain is a certificate signed
+by a different CA, authenticating the public key of the CA to which you
+sent the CSR. Then, the next certificate in the chain is a certificate
+authenticating the second CA's key, and so on, until a self-signed root
+certificate is reached. Each certificate in the chain (after the first)
+thus authenticates the public key of the signer of the previous
+certificate in the chain.
+
+[[ablqx]][[GSSCG00194]][[certificate-files]]
+
+===== Certificate Files
+
+During {productName} installation, a certificate is generated in Java
+Secure Socket Extension (JSSE) format suitable for internal testing.
+(The certificate is self-signed.) By default, {productName} stores
+its certificate information in certificate databases in the
+domain-dir``/config`` directory:
+
+Keystore file::
+  The `keystore.jks` file contains {productName} certificate,
+  including its private key. The keystore file is protected with a
+  password. +
+  Each keystore entry has a unique alias. After installation, the
+  {productName} keystore has a single entry with an alias of `s1as`.
+Truststore file::
+  The `cacerts.jks` file contains the {productName} trusted
+  certificates, including public keys for other entities. For a trusted
+  certificate, the server has confirmed that the public key in the
+  certificate belongs to the certificate's owner. Trusted certificates
+  generally include those of CAs.
+
+By default, {productName} is configured with a keystore and
+truststore that will work with the example applications and for
+development purposes.
+
+[[ablom]][[GSSCG00195]][[secure-sockets-layer]]
+
+===== Secure Sockets Layer
+
+Secure Sockets Layer (SSL) is the most popular standard for securing
+Internet communications and transactions. Secure web applications use
+HTTPS (HTTP over SSL). The HTTPS protocol uses certificates to ensure
+confidential and secure communications between server and clients. In an
+SSL connection, both the client and the server encrypt data before
+sending it. Data is decrypted upon receipt.
+
+When a Web browser (client) wants to connect to a secure site, an SSL
+handshake happens, like this:
+
+1. The browser sends a message over the network requesting a secure
+session (typically, by requesting a URL that begins with `https` instead
+of `http`).
+2. The server responds by sending its certificate (including its public key).
+3. The browser verifies that the server's certificate is valid and is
+signed by a CA whose certificate is in the browser's database (and who
+is trusted). It also verifies that the CA certificate has not expired.
+4. If the certificate is valid, the browser generates a one time,
+unique session key and encrypts it with the server's public key. The
+browser then sends the encrypted session key to the server so that they
+both have a copy.
+5. The server decrypts the message using its private key and recovers
+the session key.
+
+After the handshake, the client has verified the identity of the Web
+site, and only the client and the Web server have a copy of the session
+key. From this point forward, the client and the server use the session
+key to encrypt all their communications with each other. Thus, their
+communications are ensured to be secure.
+
+The newest version of the SSL standard is called Transport Layer
+Security (TLS). The {productName} supports the SSL 3.0 and the TLS
+1.0 encryption protocols.
+
+To use SSL, {productName} must have a certificate for each external
+interface or IP address that accepts secure connections. The HTTPS
+service of most web servers will not run unless a certificate has been
+installed. For instructions on applying SSL to HTTP listeners, see
+"link:administration-guide/http_https.html#GSADG00469[
+To Configure an HTTP Listener for SSL]" in {productName} Administration Guide.
+
+[[ablon]][[GSSCG00052]][[ciphers]]
+
+====== Ciphers
+
+A cipher is a cryptographic algorithm used for encryption or decryption.
+SSL and TLS protocols support a variety of ciphers used to authenticate
+the server and client to each other, transmit certificates, and
+establish session keys.
+
+Some ciphers are stronger and more secure than others. Clients and
+servers can support different cipher suites. During a secure connection,
+the client and the server agree to use the strongest cipher that they
+both have enabled for communication, so it is usually sufficient to
+enable all ciphers.
+
+[[abloo]][[GSSCG00053]][[name-based-virtual-hosts]]
+
+====== Name-based Virtual Hosts
+
+Using name-based virtual hosts for a secure application can be
+problematic. This is a design limitation of the SSL protocol itself. The
+SSL handshake, where the client browser accepts the server certificate,
+must occur before the HTTP request is accessed. As a result, the request
+information containing the virtual host name cannot be determined prior
+to authentication, and it is therefore not possible to assign multiple
+certificates to a single IP address.
+
+If all virtual hosts on a single IP address need to authenticate against
+the same certificate, the addition of multiple virtual hosts probably
+will not interfere with normal SSL operations on the server. Be aware,
+however, that most browsers will compare the server's domain name
+against the domain name listed in the certificate, if any (applicable
+primarily to official, CA-signed certificates). If the domain names do
+not match, these browsers display a warning. In general, only
+address-based virtual hosts are commonly used with SSL in a production
+environment.
+
+[[gksdc]][[GSSCG00196]][[custom-authentication-of-client-certificate-in-ssl-mutual-authentication]]
+
+===== Custom Authentication of Client Certificate in SSL Mutual Authentication
+
+Release 7 of {productName} extends the Certificate realm to allow
+custom authentication and group assignment based on the client
+certificate received as part of SSL mutual (two-way) authentication.
+
+As in previous releases, you can create only one certificate realm.
+However, you can now use a convenient abstract base class to configure a
+JAAS LoginModule for the Certificate realm. Specifically, your
+LoginModule can now extend
+`com.sun.appserv.security.AppservCertificateLoginModule`. When you do
+this, you need to implement only the `authenticateUser` method and call
+the `commitUserAuthentication` method to signify success.
+
+This section describes the following topics:
+
+* link:#gksfl[Understanding the `AppservCertificateLoginModule` Class]
+* link:#gksej[Example AppservCertificateLoginModule Code]
+* link:#gksee[Setting the JAAS Context]
+
+[[gksfl]][[GSSCG00054]][[understanding-the-appservcertificateloginmodule-class]]
+
+Understanding the `AppservCertificateLoginModule` Class
+
+The `AppservCertificateLoginModule` class provides some convenience
+methods for accessing the certificates, the application name and so
+forth, and for adding the group principals to the subject. The
+convenience methods include the following:
+
+`getAppName()`::
+  Returns the name of the application to be authenticated. This may be
+  useful when a single LoginModule has to handle multiple applications
+  that use certificates.
+`getCerts()`::
+  Returns the certificate chain as an array of
+  `java.security.cert.X509Certificate` certificates.
+`getX500Principal()`::
+  Returns the Distinguished principal from the first certificate in the
+  chain.
+`getSubject()`::
+  Returns the subject that is being authenticated.
+`commitUserAuthentication(final String[] groups)`::
+  This method sets the authentication status to success if the groups
+  parameter is non-null. Note that this method is called after the
+  authentication has succeeded. If authentication failed, do not call
+  this method.
+
+[NOTE]
+====
+You do not have to extend the convenience base class, you can extend the
+JAAS LoginModule `javax.security.auth.spi.LoginModule` instead if you so
+choose.
+====
+
+[[gksej]][[GSSCG00055]][[example-appservcertificateloginmodule-code]]
+
+Example AppservCertificateLoginModule Code
+
+link:#gksel[Example 1-1] shows a sample instance of the
+AppservCertificateLoginModule class.
+
+Take note of the following points from the example:
+
+* The `getX500Principal()` method returns the subject (subject
+distinguished name) value from the first certificate in the client
+certificate chain as an `X500Principal`.
+* From that `X500Principal`, the `getName()` method then returns a
+string representation of the X.500 distinguished name using the format
+defined in RFC 2253.
+* The example uses the `getAppName()` method to determine the
+application name. It also determines the organizational unit (`OU`) from
+the distinguished name.
+* The example concatenates the application name with the value of `OU`,
+and uses it as the group name in the `commitUserAuthentication` method.
+
+[[GSSCG00060]][[gksel]]
+Example 1-1 Sample AppservCertificateLoginModule Code
+
+[source,java]
+----
+public class CertificateLM extends AppservCertificateLoginModule {
+
+    @Override
+    protected void authenticateUser() throws LoginException {
+        // Get the distinguished name from the X500Principal.
+        String dname = getX500Principal().getName();
+        StringTokenizer st = new StringTokenizer(dname, "B \t\n\r\f,");
+        while (st.hasMoreTokens()) {
+            String next = st.nextToken();
+            // Set the appname:OU as the group.
+            // At this point, one has the application name and the DN of
+            // the certificate. A suitable login decision can be made here.
+            if (next.startsWith("OU=")) {
+            commitUserAuthentication(new String[]{getAppName() + ":" + next.substring(3)});
+                return;
+            }
+        }
+        throw new LoginException("No OU found.");
+    }
+}
+----
+
+[[gksee]][[GSSCG00056]][[setting-the-jaas-context]]
+
+====== Setting the JAAS Context
+
+After you create your LoginModule, you must plug it in to a
+jaas-context, which you then specify as a parameter to the certificate
+realm in {productName}.
+
+To do this, perform the following steps:
+
+1. Specify a new jaas-context for the Certificate realm in the file
+domain-dir``/config/login.conf``. For example, using the `CertificateLM`
+class from link:#gksej[Example AppservCertificateLoginModule Code]:
++
+[source]
+----
+certRealm {
+    com.sun.blogs.certificate.login.CertificateLM required;
+};
+----
+2. Specify this jaas-context as a parameter to the `set` subcommand in the
+`configs.config.server-config.security-service.auth-realm.certificate.property.jaas-context=`<jaas-context-name>
+property. For example:
++
+`asadmin>`
+`set configs.config.server-config.security-service.auth-realm.certificate.property.jaas-context=certRealm`
++
+`configs.config.server-config.security-service.auth-realm.certificate.property.jaas-context=certRealm`
++
+`Command set executed successfully.`
+3. Optionally, get the value you just set to make sure that it is correct.
++
+`asadmin>`
+`get configs.config.server-config.security-service.auth-realm.certificate.property.jaas-context`
++
+`configs.config.server-config.security-service.auth-realm.certificate.property.jaas-context=certRealm`
++
+`Command get executed successfully.`
+
+[[ablno]][[GSSCG00208]][[tools-for-managing-system-security]]
+
+==== Tools for Managing System Security
+
+{productName} provides the following tools for managing system
+security:
+
+Administration Console::
+  The Administration Console is a browser-based utility used to
+  configure security for the entire server. Tasks include managing
+  certificates, users, groups, and realms, and performing other
+  system-wide security tasks. For a general introduction to the
+  Administration Console, see
+  "link:administration-guide/overview.html#GSADG00698[Administration Console]"
+  in {productName} Administration Guide.
+The `asadmin` utility::
+  The `asadmin` command-line utility performs many of the same tasks as
+  the Administration Console. You might be able to do some things with
+  the `asadmin` utility that you cannot do with the Administration
+  Console. For a general introduction to `asadmin`, see
+  "link:administration-guide/overview.html#GSADG00699[asadmin Utility]"
+  in {productName} Administration Guide.
+The `keytool` utility::
+  The `keytool` Java Platform, Standard Edition (Java SE) command-line
+  utility is used for managing digital certificates and key pairs. For
+  more information, see link:#ablqz[Administering JSSE Certificates].
+The `policytool` utility::
+  The `policytool` Java SE graphical utility is used for managing
+  system-wide Java security policies. As an administrator, you rarely
+  use `policytool`.
+
+[[ghgrp]][[GSSCG00144]][[administering-passwords]]
+
+=== Administering Passwords
+
+There are multiple ways to administer passwords. You can rely on
+administrators to keep passwords secret and change the passwords
+regularly. You can set up files for storing passwords so that `asadmin`
+subcommands can access these files rather than having users type the
+commands. You can encrypt passwords by setting up aliases so that
+sensitive passwords are not visible in the `domain.xml` file.
+
+The following topics are addressed here:
+
+* link:#giudi[To Change the Master Password]
+* link:#gktgr[Additional Considerations for the `start-instance` and
+`start-cluster` Subcommands]
+* link:#gktey[Using `start-instance` and `start-cluster` With a Password File]
+* link:#ghgpu[To Change an Administration Password]
+* link:#ghytn[To Set a Password From a File]
+* link:#ghgqc[Administering Password Aliases]
+
+[[giudi]][[GSSCG00093]][[to-change-the-master-password]]
+
+==== To Change the Master Password
+
+The master password gives access to the keystore used with the domain.
+This password is not tied to a UNIX user. You should treat this overall
+shared password as sensitive data. {productName} never uses it for
+authentication and never transmits it over the network.
+
+You can choose to type the password manually when required, or to
+obscure the password in a password file. If there is no password file,
+you are prompted for the master password. If there is a password file,
+but you want to change access to require prompting, remove the file. The
+default master password is `changeit`.
+
+When changing the master password, it has to be changed on all nodes as
+well as on the DAS. The master password on nodes is only stored once in
+the node, for all instances that are on that node.
+
+Use the `change-master-password` subcommand in local mode to modify the
+master password.
+
+[NOTE]
+====
+If you change the master password and are not using a master password
+file, the `start-instance` and `start-cluster` subcommands are not able
+to determine the master password. In this case, you must start those
+instances locally by using start-local-instance.
+====
+
+When the master password is saved, it is saved in the `master-password` file.
+
+[[sthref6]]
+
+Before You Begin
+
+This subcommand will not work unless the domain is stopped.
+
+1. Stop the domain whose password you are changing.
++
+See "link:administration-guide/domains.html#GSADG00336[To Stop a Domain]"
+in {productName} Administration Guide.
+2. Change the master password for the domain by using the
+link:reference-manual/change-master-password.html#GSRFM00006[`change-master-password`] subcommand.
++
+You are prompted for the old and new passwords. All dependent items are re-encrypted.
+3. Start the domain.
++
+See "link:administration-guide/domains.html#GSADG00335[To Start a Domain]" in {productName} Administration Guide.
+
+[[GSSCG00061]][[givil]]
+Example 1-2 Changing the Master Password
+
+The `change-master-password` subcommand is interactive in that you are
+prompted for the old master password as well as the new master password.
+This example changes the master password for `domain44ps`:
+
+[source]
+----
+asadmin> change-master-password domain44ps
+----
+
+If you have already logged into the domain using the
+link:reference-manual/login.html#GSRFM00210[`login`] subcommand, you are prompted for the new
+master password:
+
+[source]
+----
+Please enter the new master password>
+Please enter the new master password again>
+----
+
+If you are not logged into the domain, you are prompted for both the old
+and the new master passwords:
+
+[source]
+----
+Please enter the master password>
+Please enter the new master password>
+Please enter the new master password again>
+----
+
+Information similar to the following is displayed:
+
+[source]
+----
+Master password changed for domain44ps
+----
+
+[[sthref7]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin --help change-master-password` at the command line.
+
+[[gktgr]][[GSSCG00209]][[additional-considerations-for-the-start-instance-and-start-cluster-subcommands]]
+
+==== Additional Considerations for the `start-instance` and `start-cluster` Subcommands
+
+If you change the master password for DAS, the `start-domain` and
+`start-local-instance` subcommands allow you to provide it during domain
+or instance startup in one of three ways:
+
+* Via the master-password file
+* By entering it interactively
+* Via the `asadmin` `passwordfile`
+
+The `start-instance` and `start-cluster` subcommands are more
+problematic. If you create a domain with a master password other than
+the default, an associated remote instance or cluster must have access
+to the master password in order to start. However, for security reasons
+{productName} never transmits the master password or the master
+password file over the network.
+
+Consider the following scenario:
+
+1. Change the master password on the DAS and save it with `--savemasterpassword`.
+2. Create an instance on another host using the subcommand
+`create-instance`. {productName} copies the keystore and truststore
+from the DAS to the instance, but it does not copy the master password file.
+3. Try to start the instance using the `start-instance` subcommand.
+An error results.
+
+The `start-instance` command is looking for the file master-password in
+the node directory on the instance machine, and it is not there by
+default. Therefore, the subcommand fails.
+
+You can use the `change-master-password` subcommand to make sure the
+correct password is used in this password file, as described in
+link:#gktey[Using `start-instance` and `start-cluster` With a Password File].
+
+[NOTE]
+====
+The `start-instance` and `start-cluster` subcommands do not include any
+other way for you to provide the password. If you change the master
+password and are not using a master password file, the `start-instance`
+and `start-cluster` subcommands are not able to determine the master
+password. In this case, you must start the instances locally by using
+`start-local-instance`.
+====
+
+[[gktey]][[GSSCG00094]][[using-start-instance-and-start-cluster-with-a-password-file]]
+
+==== Using `start-instance` and `start-cluster` With a Password File
+
+Assume that you have changed the master password on the DAS and you want
+to make the same change for all instances.
+
+The `start-instance` and `start-cluster` subcommands automatically use
+the master password file if it exists in the instance filesystem. You
+can use the `change-master-password` subcommand to make sure the
+password file exists and that the correct password is used.
+
+1. From the DAS, create a domain and set the master password. +
+`asadmin> create-domain --savemasterpassword true domain-name`
+2. Start the domain. +
+`asadmin> start-domain domain-name`
+3. Create a node that is enabled for communication over secure shell (SSH). +
+`asadmin> create-node-ssh --nodehost host-name --installdir/some-dir node-name`
+4. Create an instance on the node. +
+`asadmin> create-instance --node node-name instance-name`
+5. Before you start the instance, on the instance machine run
+`change-master-password` with the `---savemasterpassword` option to
+create a file called `master-password` in the agents directory to access
+the keystores. (The `start-instance` subcommand is looking for a file
+called `master-password` in the agents directory to access the stores.) +
+`asadmin> change-master-password --savemasterpassword true --nodedir /some-dir node-name` +
+You are prompted to enter the current and new master password:
++
+[source]
+----
+Enter the current master password>
+Enter the new master password>
+Enter the new master password again>
+Command change-master-password executed successfully.
+----
++
+Remember that when you created the domain you specified a new master
+password. This master password was then used to encrypt the keystore and
+truststore for the DAS, and these stores were copied to the instance as
+a result of the `create-instance` subcommand.
++
+Therefore, enter the master password you set when you created the domain
+as both the current master password and again as the new master
+password. You enter it as the new master password because you do not
+want to change the master password for the instance and make it out of
+sync with the DAS.
+6. Run start-instance from the DAS.
++
+`asadmin>` `start-instance` instance-name
++
+The master password file is associated with the node and not with an
+instance. After the master password file exists in the node directory on
+the instance machine, additional instances can be created, started and
+stopped from the DAS.
+
+[[ghgpu]][[GSSCG00095]][[to-change-an-administration-password]]
+
+==== To Change an Administration Password
+
+Use the `change-admin-password` subcommand in remote mode to change an
+administration password. The default administration user is `admin`. You
+are prompted for the old and new admin passwords, with confirmation. The
+passwords are not echoed to the display.
+
+[NOTE]
+====
+For the zip bundle of {productName} 7, the default administrator
+login is `admin`, with no password, which means that no login is
+required. For {productName}, you are prompted to provide a
+password for the `admin` user when you start the domain for the first
+time.
+====
+
+[NOTE]
+====
+If there is a single user called `admin` that does not have a password,
+you are not prompted for login information. Any other situation requires
+login.
+====
+
+[NOTE]
+====
+If secure administration is enabled as described in
+link:administrative-security.html#gkomz[Running Secure Admin], you cannot
+change an administration password to a blank value.
+====
+
+
+Encrypting the admin password is strongly encouraged.
+
+1. Change the admin password by using the
+link:reference-manual/change-admin-password.html#GSRFM00004[`change-admin-password`] subcommand.
+2. Enter the old and new admin passwords when prompted.
+3. Restart {productName}. +
+See "link:administration-guide/domains.html#GSADG00337[To Restart a Domain]" in {productName} Administration Guide.
+
+[[GSSCG00062]][[ghlac]]
+Example 1-3 Changing the Admin Password
+
+This example changes the admin password for user anonymous from
+`adminadmin` to `newadmin`:
+
+[source]
+----
+asadmin> change-admin-password --username anonymous
+----
+
+You are prompted to enter the old and the new admin passwords:
+
+[source]
+----
+Enter admin password>adminadmin
+Enter new admin password>newadmin
+Enter new admin password again>newadmin
+----
+
+Information similar to the following is displayed:
+
+[source]
+----
+Command change-admin-password executed successfully.
+----
+
+[[sthref8]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help change-admin-password` at the command line.
+
+[[ghytn]][[GSSCG00096]][[to-set-a-password-from-a-file]]
+
+==== To Set a Password From a File
+
+Instead of typing the password at the command line, you can access the
+password for a command from a file such as `passwords.txt`. The
+`--passwordfile` option of the `asadmin` utility takes the name of the
+file that contains the passwords. The entry for a password in the file
+must have the `AS_ADMIN_` prefix followed by the password name in
+uppercase letters.
+
+[NOTE]
+====
+Any password file created to pass as an argument by using the
+`--passwordfile` argument to the `asadmin` utility should be protected
+with file system permissions. Additionally, any password file being used
+for a transient purpose, such as setting up SSH among nodes, should be
+deleted after it has served its purpose.
+====
+
+For a list of the types of passwords that can be specified, see the
+link:reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] help page.
+
+[source]
+----
+AS_ADMIN_MASTERPASSWORD
+AS_ADMIN_USERPASSWORD
+AS_ADMIN_ALIASPASSWORD
+----
+
+1. Edit the password file. +
+For example, to specify the password for the domain administration
+server (DAS), add an entry similar to the following to the password
+file, where `adminadmin` is the administrator password:
++
+[source]
+----
+AS_ADMIN_PASSWORD=adminadmin
+----
+2. Save the password file. +
+You can now specify the password file in an `asadmin` subcommand. In
+this example, `passwords.txt` is the file that contains the password:
++
+[source]
+----
+asadmin>delete-jdbc-resource --user admin --passwordfile passwords.txt jdbc/DerbyPool
+----
+
+[[sthref9]]
+
+===== Troubleshooting
+
+If `AS_ADMIN_PASSWORD` has been exported to the global environment,
+specifying the `--passwordfile` option will produce a warning about
+using the `--passwordfile` option. To prevent this warning situation
+from happening, unset `AS_ADMIN_PASSWORD`.
+
+[[ghgqc]][[GSSCG00210]][[administering-password-aliases]]
+
+==== Administering Password Aliases
+
+A password alias is used to indirectly access a password so that the
+password itself does not appear in cleartext in the domain's
+`domain.xml` configuration file.
+
+Storing passwords in cleartext format in system configuration files is
+common in many open source projects. In addition to {productName},
+Apache Tomcat, Maven, and Subversion, among others, store and pass
+passwords in cleartext format. However, storing and passing passwords in
+cleartext can be a security risk, and may violate some corporate
+security policies. In such cases, you can use password aliases.
+
+The following topics are addressed here:
+
+* link:#ghgrf[To Create a Password Alias]
+* link:#ghgsr[To List Password Aliases]
+* link:#ghgnv[To Delete a Password Alias]
+* link:#giobz[To Update a Password Alias]
+
+[[ghgrf]][[GSSCG00097]][[to-create-a-password-alias]]
+
+===== To Create a Password Alias
+
+Use the `create-password-alias` subcommand in remote mode to create an
+alias for a password in the domain's keystore. The password
+corresponding to the alias name is stored in an encrypted form in the
+domain configuration file. The `create-password-alias` subcommand takes
+both a secure interactive form, in which users are prompted for all
+information, and a more script-friendly form, in which the password is
+propagated on the command line.
+
+You can also use the link:reference-manual/set.html#GSRFM00226[`set`] subcommand to remove and
+replace the password in the configuration file. For example:
+
+[source]
+----
+asadmin set --user admin server.jms-service.jms-host.default_JMS_host.
+admin-password='${ALIAS=jms-password}'
+----
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Go to the directory where the configuration file resides. +
+By default, the configuration file is located in domain-dir``/config``.
+3. Create the password alias by using the
+link:reference-manual/create-password-alias.html#GSRFM00049[`create-password-alias`] subcommand.
+4. Type the password for the alias when prompted.
+5. Add the alias to a password file. +
+For example, assume the use of a password file such as `passwords.txt`.
+Assume further that you want to add an alias for the
+`AS_ADMIN_USERPASSWORD` entry that is read by the
+link:reference-manual/create-file-user.html#GSRFM00024[`create-file-user`] subcommand.
+You would add the following line to the password file:
+`AS_ADMIN_USERPASSWORD=${ALIAS=user-password-alias}`, where
+user-password-alias is the new password alias.
+6. To continue the example of the previous step, you would then run the
+link:reference-manual/create-file-user.html#GSRFM00024[`create-file-user`] subcommand. +
+You could use this method to create several users (user1, user2, and so forth),
+all with the same password. +
+`asadmin>` `--passwordfile``passwords.txt create-file-user` user1
+
+[[GSSCG00063]][[ginvi]]
+Example 1-4 Creating a Password Alias
+
+This example creates the new `jms-password` alias for the `admin` user:
+
+[source]
+----
+asadmin> create-password-alias --user admin jms-password
+----
+
+You are prompted to type the password for the alias:
+
+[source]
+----
+Please enter the alias password>secret-password
+Please enter the alias password again>secret-password
+Command create-password-alias executed successfully.
+----
+
+[[sthref10]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-password-alias` at the command line.
+
+[[ghgsr]][[GSSCG00098]][[to-list-password-aliases]]
+
+===== To List Password Aliases
+
+Use the `list-password-aliases` subcommand in remote mode to list
+existing the password aliases.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List password aliases by using the
+link:reference-manual/list-password-aliases.html#GSRFM00190[`list-password-aliases`] subcommand.
+
+[[GSSCG00064]][[ginsk]]
+Example 1-5 Listing Password Aliases
+
+This example lists the existing password aliases:
+
+[source]
+----
+asadmin> list-password aliases
+jmspassword-alias
+Command list-password-aliases executed successfully
+----
+
+[[sthref11]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-password-aliases` at the command line.
+
+[[ghgnv]][[GSSCG00099]][[to-delete-a-password-alias]]
+
+===== To Delete a Password Alias
+
+Use the `delete-password-alias` subcommand in remote mode to delete an
+existing password alias.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List all aliases by using the
+link:reference-manual/list-password-aliases.html#GSRFM00190[`list-password-aliases`] subcommand.
+3. Delete a password alias by using the
+link:reference-manual/list-password-aliases.html#GSRFM00190[`list-password-aliases`] subcommand.
+
+[[GSSCG00065]][[ginul]]
+Example 1-6 Deleting a Password Alias
+
+This example deletes the password alias `jmspassword-alias`:
+
+[source]
+----
+asadmin> delete-password-alias jmspassword-alias
+Command list-password-aliases executed successfully
+----
+
+[[sthref12]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-password-alias` at the command line.
+
+[[giobz]][[GSSCG00100]][[to-update-a-password-alias]]
+
+===== To Update a Password Alias
+
+Use the `update-password-alias` subcommand in remote mode to change the
+password for an existing password alias. The `update-password-alias`
+subcommand takes both a secure interactive form, in which the user is
+prompted for all information, and a more script-friendly form, in which
+the password is propagated on the command line.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Update an alias by using the
+link:reference-manual/update-password-alias.html#GSRFM00257[`update-password-alias`] subcommand.
+3. Type the password when prompted.
+
+[[GSSCG00066]][[giodl]]
+Example 1-7 Updating a Password Alias
+
+This example updates the password for the `jmspassword-alias` alias:
+
+[source]
+----
+asadmin> update-password-alias jsmpassword-alias
+----
+
+You are prompted to type the new password for the alias:
+
+[source]
+----
+Please enter the alias password>new-secret-password
+Please enter the alias password again>new-secret-password
+Command update-password-alias executed successfully
+----
+
+[[sthref13]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help update-password-alias` at the command line.
+
+[[ghgol]][[GSSCG00146]][[administering-audit-modules]]
+
+=== Administering Audit Modules
+
+The following topics are addressed here:
+
+* link:#ghgra[To Create an Audit Module]
+* link:#ghgsm[To List Audit Modules]
+* link:#ghgpo[To Delete an Audit Module]
+
+[[ghgra]][[GSSCG00101]][[to-create-an-audit-module]]
+
+==== To Create an Audit Module
+
+Use the `create-audit-module` subcommand in remote mode to create an
+audit module for the add-on component that implements the audit
+capabilities.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Create an audit module by using the
+link:reference-manual/create-audit-module.html#GSRFM00014[`create-audit-module`] subcommand.
++
+Information about properties for this subcommand is included in this
+help page.
+
+[[GSSCG00067]][[ghjlw]]
+Example 1-8 Creating an Audit Module
+
+This example creates an audit module named `sampleAuditModule`:
+
+[source]
+----
+asadmin> create-audit-module
+--classname com.sun.appserv.auditmodule --property defaultuser=
+admin:Password=admin sampleAuditModule
+Command create-audit-module executed successfully.
+----
+
+[[sthref14]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-audit-module` at the command line.
+
+[[ghgsm]][[GSSCG00102]][[to-list-audit-modules]]
+
+==== To List Audit Modules
+
+Use the `list-audit-modules` subcommand in remote mode to list the audit
+modules on one of the following targets:
+
+* Server instance, `server` (the default)
+* Specified server instance
+* Specified configuration
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the audit modules by using the
+link:reference-manual/list-audit-modules.html#GSRFM00149[`list-audit-modules`] subcommand.
+
+[[GSSCG00068]][[ghjmy]]
+Example 1-9 Listing Audit Modules
+
+This example lists the audit modules on `localhost`:
+
+[source]
+----
+asadmin> list-audit-modules
+audit-module : default
+audit-module : sampleAuditModule
+Command list-audit-modules executed successfully.
+----
+
+[[sthref15]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-audit-modules` at the command line.
+
+[[ghgpo]][[GSSCG00104]][[to-delete-an-audit-module]]
+
+==== To Delete an Audit Module
+
+Use the `delete-audit-module` subcommand in remote mode to delete an
+existing audit module.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List the audit modules by using the
+link:reference-manual/list-audit-modules.html#GSRFM00149[`list-audit-modules`] subcommand.
+3. Delete an audit module by using the
+link:reference-manual/delete-audit-module.html#GSRFM00065[`delete-audit-module`] subcommand.
+
+[[GSSCG00070]][[ghjhm]]
+Example 1-10 Deleting an Audit Module
+
+This example deletes `sampleAuditModule`:
+
+[source]
+----
+asadmin> delete-audit-module sampleAuditModule
+Command delete-audit-module executed successfully.
+----
+
+[[ablqz]][[GSSCG00147]][[administering-jsse-certificates]]
+
+=== Administering JSSE Certificates
+
+In the developer profile, the {productName} 7 uses the JSSE format
+on the server side to manage certificates and key stores. In all
+profiles, the client side (appclient or stand-alone) uses the JSSE
+format.
+
+The Java SE SDK ships with the `keytool` utility, which enables you to
+set up and work with Java Secure Socket Extension (JSSE) digital
+certificates. You can administer public/private key pairs and associated
+certificates, and cache the public keys (in the form of certificates) of
+their communicating peers.
+
+The following topics are addressed here:
+
+* link:#ghlgv[To Generate a Certificate by Using `keytool`]
+* link:#ghlgj[To Sign a Certificate by Using `keytool`]
+* link:#ghleq[To Delete a Certificate by Using `keytool`]
+
+[[ghlgv]][[GSSCG00105]][[to-generate-a-certificate-by-using-keytool]]
+
+==== To Generate a Certificate by Using `keytool`
+
+By default, the `keytool` utility creates a keystore file in the
+directory where the utility is run.
+
+[[sthref16]]
+
+Before You Begin
+
+To run the `keytool` utility, your shell environment must be configured
+so that the Java SE ``/bin`` directory is in the path, otherwise the full
+path to the utility must be present on the command line.
+
+1. Change to the directory that contains the keystore and truststore files. +
+Always generate the certificate in the directory containing the keystore
+and truststore files. The default is domain-dir``/config``.
+2. Generate the certificate in the keystore file, `keystore.jks`, using
+the following command format:
++
+[source]
+----
+keytool -genkey -alias keyAlias-keyalg RSA
+ -keypass changeit
+ -storepass changeit
+keystore keystore.jks
+----
+Use any unique name as your keyAlias. If you have changed the keystore
+or private key password from the default (`changeit`), substitute the
+new password for `changeit`. The default key password alias is `s1as`.
++
+A prompt appears that asks for your name, organization, and other information.
+3. Export the generated certificate to the `server.cer` file (or
+`client.cer` if you prefer), using the following command format:
++
+[source]
+----
+keytool -export -alias keyAlias-storepass changeit
+ -file server.cer
+ -keystore keystore.jks
+----
+4. If a certificate signed by a certificate authority is required, see
+link:#ghlgj[To Sign a Certificate by Using `keytool`].
+5. Create the `cacerts.jks` truststore file and add the certificate to
+the truststore, using the following command format:
++
+[source]
+----
+keytool -import -v -trustcacerts
+-alias keyAlias
+ -file server.cer
+-keystore cacerts.jks
+ -keypass changeit
+----
+If you have changed the keystore or private key password from the
+default (`changeit`), substitute the new password.
++
+Information about the certificate is displayed and a prompt appears
+asking if you want to trust the certificate.
+6. Type `yes`, then press Enter.
++
+Information similar to the following is displayed:
++
+[source]
+----
+Certificate was added to keystore
+[Saving cacerts.jks]
+----
+7. To apply your changes, restart {productName}. See
+"link:administration-guide/domains.html#GSADG00337[To Restart a Domain]" in {productName} Administration Guide.
+
+[[GSSCG00071]][[ghlii]]
+Example 1-11 Creating a Self-Signed Certificate in a JKS Keystore by
+Using an RSA Key Algorithm
+
+RSA is public-key encryption technology developed by RSA Data Security,
+Inc.
+
+[source]
+----
+keytool -genkey -noprompt -trustcacerts -keyalg RSA -alias ${cert.alias}
+-dname ${dn.name} -keypass ${key.pass} -keystore ${keystore.file}
+-storepass ${keystore.pass}
+----
+
+[[GSSCG00072]][[ghlew]]
+Example 1-12 Creating a Self-Signed Certificate in a JKS Keystore by
+Using a Default Key Algorithm
+
+[source]
+----
+keytool -genkey -noprompt -trustcacerts -alias ${cert.alias} -dname
+${dn.name} -keypass ${key.pass} -keystore ${keystore.file} -storepass
+${keystore.pass}
+----
+
+[[GSSCG00073]][[ghldw]]
+Example 1-13 Displaying Available Certificates From a JKS Keystore
+
+[source]
+----
+keytool -list -v -keystore ${keystore.file} -storepass ${keystore.pass}
+----
+
+[[GSSCG00074]][[ghlfd]]
+Example 1-14 Displaying Certificate information From a JKS Keystore
+
+[source]
+----
+keytool -list -v -alias ${cert.alias} -keystore ${keystore.file}
+-storepass ${keystore.pass}
+----
+
+[[sthref17]]
+
+See Also
+
+[[ghlgj]][[GSSCG00106]][[to-sign-a-certificate-by-using-keytool]]
+
+==== To Sign a Certificate by Using `keytool`
+
+After creating a certificate, the owner must sign the certificate to
+prevent forgery. E-commerce sites, or those for which authentication of
+identity is important, can purchase a certificate from a well-known
+Certificate Authority (CA).
+
+
+[NOTE]
+====
+If authentication is not a concern, for example if private secure
+communications are all that is required, you can save the time and
+expense involved in obtaining a CA certificate by using a self-signed
+certificate.
+====
+
+
+1. Delete the default self-signed certificate:
++
+[source]
+----
+keytool -delete -alias s1as -keystore keystore.jks -storepass <store_passwd>
+----
+where <store_passwd> is the password for the keystore. For example,
+"mypass". Note that `s1as` is the default alias of the {productName}
+keystore.
+2. Generate a new key pair for the application server:
++
+[source]
+----
+keytool -genkeypair -keyalg <key_alg> -keystore keystore.jks
+-validity <val_days> -alias s1as
+----
+where <key_alg> is the algorithm to be used for generating the key pair,
+for example RSA, and <val_days> is the number of days that the
+certificate should be considered valid. For example, 365.
++
+In addition to generating a key pair, the command wraps the public key
+into a self-signed certificate and stores the certificate and the
+private key in a new keystore entry identified by the alias.
++
+For HTTPS hostname verification, it is important to ensure that the name
+of the certificate (CN) matches the fully-qualified hostname of your
+site (fully-qualified domain name). If the names do not match, clients
+connecting to the server will see a security alert stating that the name
+of the certificate does not match the name of the site.
+3. Generate a Certificate Signing Request (CSR):
++
+[source]
+----
+keytool -certreq -alias s1as -file <certreq_file> -keystore keystore.jks
+-storepass <store_passwd>
+----
+where <certreq_file> is the file in which the CSR is stored (for
+example, `s1as.csr`) and <store_passwd> is the password for the
+keystore. For example, changeit.
+4. Submit the CSR to a Certificate Authority such as VeriSign (at
+`http://www.verisign.com/ssl/buy-ssl-certificates/index.html`). In
+response, you should receive a signed server certificate. Make sure to
+import into your browser the CA certificate of the CA (if not already
+present) and any intermediate certificates indicated by the CA in the
+reply.
+5. Store the signed server certificate from the CA, including the
+markers `-----BEGIN CERTIFICATE-----` and `-----END CERTIFICATE-----`,
+into a file such as `s1as.cert`. Download the CA certificate and any
+intermediate CA certificates and store them in local files.
+6. Import the CA certificate (if not already present) and any
+intermediate CA certificates (if not already present) indicated by the
+CA into the truststore `cacerts.jks`:
++
+[source]
+----
+keytool -import -v -trustcacerts -alias <CA-Name> -file ca.cert
+ -keystore cacerts.jks -storepass <store_passwd>
+----
+7. Replace the original self-signed certificate with the certificate
+you obtained from the CA, as stored in a file such as `s1as.cert`:
++
+[source]
+----
+keytool -import -v -trustcacerts -alias s1as -file s1as.cert
+   -keystore keystore.jks -storepass <store_passwd>
+----
+When you import the certificate using the same original alias `s1as`,
+keytool treats it as a command to replace the original certificate with
+the certificate obtained as a reply to a CSR.
++
+After running the command, you should see that the certificate `s1as` in
+the keystore is no longer the original self-signed certificate, but is
+now the response certificate from the CA.
++
+Consider the following example that compares an original `s1as`
+certificate with a new `s1as` certificate obtained from VeriSign:
++
+[source]
+----
+Original s1as (self-signed):
+
+Owner: CN=FQDN, OU=Sun Java System Application Server, O=Sun
+Microsystems, L=Santa Clara, ST=California, C=US
+Issuer: CN=KUMAR, OU=Sun Java System Application Server, O=Su
+n Microsystems, L=Santa Clara, ST=California, C=US
+Serial number: 472acd34
+Valid from: Fri Nov 02 12:39:40 GMT+05:30 2007 until: Mon Oct
+30 12:39:40 GMT+05:30 2017
+
+New s1as (contains signed cert from CA):
+
+Owner: CN=FQDN, OU=Terms of use at www.verisign.com/cps/test
+ca (c)05, OU=Sun Java System Application Server, O=Sun Micros
+ystems, L=Santa Clara, ST=California, C=US
+Issuer: CN=VeriSign Trial Secure Server Test CA, OU=Terms of
+use at https://www.verisign.com/cps/testca (c)05, OU="For Test
+Purposes Only. No assurances.", O="VeriSign, Inc.", C=US
+Serial number: 1375de18b223508c2cb0123059d5c440
+Valid from: Sun Nov 11 05:30:00 GMT+05:30 2007 until: Mon Nov
+26 05:29:59 GMT+05:30 2007
+----
+8. To apply your changes, restart {productName}.
++
+See "link:administration-guide/domains.html#GSADG00337[To Restart a Domain]" in {productName} Administration Guide.
+
+[[GSSCG00075]][[ghlhu]]
+Example 1-15 Importing an RFC/Text-Formatted Certificate Into a JKS
+Keystore
+
+Certificates are often stored using the printable encoding format
+defined by the Internet Request for Comments (RFC) 1421 standard instead
+of their binary encoding. This certificate format, also known as Base 64
+encoding, facilitates exporting certificates to other applications by
+email or through some other mechanism.
+
+[source]
+----
+keytool -import -noprompt -trustcacerts -alias ${cert.alias} -file
+${cert.file} -keystore ${keystore.file} -storepass ${keystore.pass}
+----
+
+[[GSSCG00076]][[ghlim]]
+Example 1-16 Exporting a Certificate From a JKS Keystore in PKCS7 Format
+
+The reply format defined by the Public Key Cryptography Standards #7,
+Cryptographic Message Syntax Standard, includes the supporting
+certificate chain in addition to the issued certificate.
+
+[source]
+----
+keytool -export -noprompt -alias ${cert.alias} -file ${cert.file}
+-keystore ${keystore.file} -storepass ${keystore.pass}
+----
+
+[[GSSCG00077]][[ghleb]]
+Example 1-17 Exporting a Certificate From a JKS Keystore in RFC/Text
+Format
+
+[source]
+----
+keytool -export -noprompt -rfc -alias ${cert.alias} -file
+${cert.file} -keystore ${keystore.file} -storepass ${keystore.pass}
+----
+
+[[sthref18]]
+
+See Also
+
+[[ghleq]][[GSSCG00107]][[to-delete-a-certificate-by-using-keytool]]
+
+==== To Delete a Certificate by Using `keytool`
+
+Use the `keytool` `delete` command to delete an existing certificate.
+
+Delete a certificate using the following command format:
+
+[source]
+----
+keytool -delete
+ -alias keyAlias
+ -keystore keystore-name
+ -storepass password
+----
+
+[[GSSCG00078]][[ghlgy]]
+Example 1-18 Deleting a Certificate From a JKS Keystore
+
+[source]
+----
+keytool -delete -noprompt -alias ${cert.alias} -keystore ${keystore.file}
+-storepass ${keystore.pass}
+----
+
+[[sthref19]]
+
+See Also
+
+[[gkngj]][[GSSCG00148]][[administering-jacc-providers]]
+
+=== Administering JACC Providers
+
+The Java Authorization Contract for Containers (JACC) is part of the
+J2EE 1.4 specification that defines an interface for pluggable
+authorization providers. This enables the administrator to set up
+third-party plug-in modules to perform authorization.
+
+{productName} includes Administration Console support and subcommands
+to support JACC providers, as follows:
+
+* create `create-jacc-provider`
+* delete `delete-jacc-provider`
+* list `list-jacc-providers`
+
+The default {productName} installation includes two JACC providers,
+named default and simple. You should not delete these default providers.
+Any JACC providers you create with the `create-jacc-provider` subcommand
+are in addition to these two default providers.
+
+The {productName} creates a JSR-115-compliant JACC provider that you
+can use with third-party authorization modules for applications running
+in {productName}. The JACC provider is created as a `jacc-provider`
+element within the security-service element in the domain's `domain.xml`
+file.
+
+[[gksgp]][[GSSCG00108]][[administering-jacc-providers-from-the-administration-console]]
+
+==== Administering JACC Providers From the Administration Console
+
+To use the Administration Console to administer JACC providers, perform
+the following steps:
+
+1. Select Configurations and expand the entry.
+2. Select the server configuration for which you want to administer
+JACC providers and expand the entry.
+3. Select Security and expand the entry.
+4. Select JACC Providers. The JACC Providers page is displayed. The
+existing JACC providers are shown on this page.
++
+image:img/jacc-providers.png[
+"This screen shot shows the default JACC providers."]
+
+5. To create a new provider, click New.
++
+Enter the Name, Policy Configuration (the class that implements the
+policy configuration factory) and the Policy Provider (the class that
+implements the policy factory) for the new JACC provider. You can also
+enter optional properties (name/value) for the provider.
+6. To delete an existing JACC provider, select that provider and click
+Delete.
+
+[[gksfx]][[GSSCG00109]][[administering-jacc-providers-from-the-command-line]]
+
+==== Administering JACC Providers from the Command Line
+
+To use the command line to administer JACC providers, perform the
+following steps:
+
+1. To create a JACC provider, use the `create-jacc-provider`
+subcommand. The following example shows how to create a JACC provider
+named testJACC on the default server target.
++
+[source]
+----
+asadmin> create-jacc-provider
+       --policyproviderclass org.glassfish.exousia.modules.locked.SimplePolicyProvider
+       --policyconfigfactoryclass com.sun.enterprise.security.provider.PolicyCon
+figurationFactoryImpl
+       testJACC
+----
+2. To delete a JACC provider, use the `create-jacc-provider`
+subcommand. The following example shows how to delete a JACC provider
+named testJACC from the default domain:
++
+[source]
+----
+asadmin> delete-jacc-provider testJACC
+----
+3. To list the available providers, use the `list-jacc-providers`
+subcommand. The following example shows how to list JACC providers for
+the default domain:
++
+[source]
+----
+asadmin> list-jacc-providers
+default
+simple
+Command list-jacc-providers executed successfully.
+----
+
+
diff --git a/docs/security-guide/src/main/asciidoc/title.adoc b/docs/security-guide/src/main/asciidoc/title.adoc
new file mode 100644
index 0000000..564bdcc
--- /dev/null
+++ b/docs/security-guide/src/main/asciidoc/title.adoc
@@ -0,0 +1,46 @@
+type=page
+status=published
+title={productName} Security Guide, Release 7
+next=preface.html
+prev=lot.html
+~~~~~~
+
+= {productName} Security Guide, Release 7
+
+[[eclipse-glassfish-server]]
+== {productName}
+
+Security Guide
+
+Release 7
+
+Contributed 2018 - 2022
+
+This book provides instructions for configuring and administering
+{productName} security.
+
+[[sthref1]]
+
+'''''
+
+{productName} Security Guide, Release 7
+
+Copyright © 2013, 2019 Oracle and/or its affiliates. All rights reserved.
+
+This program and the accompanying materials are made available under the
+terms of the Eclipse Public License v. 2.0, which is available at
+http://www.eclipse.org/legal/epl-2.0.
+
+SPDX-License-Identifier: EPL-2.0
+
+Oracle and Java are registered trademarks of Oracle and/or its
+affiliates. Other names may be trademarks of their respective owners.
+
+Intel and Intel Xeon are trademarks or registered trademarks of Intel
+Corporation. All SPARC trademarks are used under license and are
+trademarks or registered trademarks of SPARC International, Inc. AMD,
+Opteron, the AMD logo, and the AMD Opteron logo are trademarks or
+registered trademarks of Advanced Micro Devices. UNIX is a registered
+trademark of The Open Group.
+
+image:img/eclipse_foundation_logo_tiny.png["Eclipse Logo"]
diff --git a/docs/security-guide/src/main/asciidoc/user-security.adoc b/docs/security-guide/src/main/asciidoc/user-security.adoc
new file mode 100644
index 0000000..2b764a9
--- /dev/null
+++ b/docs/security-guide/src/main/asciidoc/user-security.adoc
@@ -0,0 +1,784 @@
+type=page
+status=published
+title=Administering User Security
+next=message-security.html
+prev=system-security.html
+~~~~~~
+
+= Administering User Security
+
+[[GSSCG00036]][[ggnqj]]
+
+
+[[administering-user-security]]
+== 2 Administering User Security
+
+This chapter provides instructions for administering user security in
+the {productName} environment by using the `asadmin`
+command-line utility. {productName} enforces its authentication and
+authorization policies upon realms, users, and groups. This chapter
+assumes that you are familiar with security features such as
+authentication, authorization, and certificates. If you are not, see
+link:system-security.html#ablnk[Administering System Security].
+
+The following topics are addressed here:
+
+* link:#ggkuk[Administering Authentication Realms]
+* link:#ggnxq[Administering File Users]
+
+Instructions for accomplishing these tasks by using the Administration
+Console are contained in the Administration Console online help.
+
+[NOTE]
+====
+JSR-375 defines the concept of an Identity Store, and an SPI interface
+for writing providers that can authenticate users against Identity
+Stores. It also provides two built-in providers. This mechanism is
+conceptually similar to Authentication Realms, but can be configured and
+managed by applications. See
+https://eclipse-ee4j.github.io/jakartaee-tutorial/#working-with-identity-stores[
+Working with Identity Stores]
+in The Jakarta EE Tutorial for more information about Identity Stores.
+====
+
+[[ggkuk]][[GSSCG00151]][[administering-authentication-realms]]
+
+=== Administering Authentication Realms
+
+The following topics are addressed here:
+
+* link:#gkbiy[Overview of Authentication Realms]
+* link:#ggnca[To Create an Authentication Realm]
+* link:#ggngh[To List Authentication Realms]
+* link:#giwlt[To Update an Authentication Realm]
+* link:#ggngf[To Delete an Authentication Realm]
+* link:#ggmww[To Configure a JDBC or Digest Authentication Realm]
+* link:#gkbeo[To Configure LDAP Authentication with OID]
+* link:#gksgi[To Configure LDAP Authentication with OVD]
+* link:#gkbjp[To Enable LDAP Authentication on the {productName} DAS]
+
+[[gkbiy]][[GSSCG00217]][[overview-of-authentication-realms]]
+
+==== Overview of Authentication Realms
+
+An authentication realm, also called a security policy domain or
+security domain, is a scope over which the {productName} defines and
+enforces a common security policy. {productName} is preconfigured
+with the file, certificate, and administration realms. In addition, you
+can set up LDAP, JDBC, digest, Oracle Solaris, or custom realms. An
+application can specify which realm to use in its deployment descriptor.
+If the application does not specify a realm, {productName} uses its
+default realm (`file`).
+
+File realm::
+  {productName} stores user credentials locally in a file named
+  `keyfile`. The file realm is the initial default realm.
+Administration realm::
+  The administration realm is also a file realm and stores administrator
+  user credentials locally in a file named `admin-keyfile`.
+Certificate realm::
+  {productName} stores user credentials in a certificate database.
+  When using the certificate realm, the server uses certificates with
+  the HTTPS protocol to authenticate web clients.
+LDAP realm::
+  {productName} can get user credentials from a Lightweight Directory
+  Access Protocol (LDAP) server such as Oracle Virtual Directory (OVD)
+  (`http://www.oracle.com/technetwork/middleware/id-mgmt/overview/index.html`),
+  Oracle Internet Directory (OID)
+  (`http://www.oracle.com/technetwork/indexes/products/index.html`), and
+  Oracle Directory Server Enterprise Edition
+  (`http://www.oracle.com/us/products/middleware/identity-management/oracle-directory-services/index.html`).
+  LDAP is a protocol for enabling anyone to locate organizations,
+  individuals, and other resources such as files and devices in a
+  network, whether on the public Internet or on a corporate intranet. +
+  See link:#gkbeo[To Configure LDAP Authentication with OID] for
+  instructions on configuring {productName} to work with an OVD/OID
+  LDAP provider.
++
+[NOTE]
+====
+By default, {productName} performs LDAP group search. If you have
+not created any groups in LDAP, the search fails.
+
+To disable LDAP group search in LDAP user name search, set the
+`com.oracle.enterprise.security.auth.realm.ldap.DISABLEGROUP_SEARCH`
+Java system property to `true` in the required {productName}
+instance or cluster configurations:
+[source]
+----
+asadmin> create-jvm-options --target=target
+-Dcom.oracle.enterprise.security.auth.realm.ldap.DISABLEGROUP_SEARCH=true
+----
+where target is the {productName} instance or cluster for which you
+are disabling LDAP group search. For more information about the
+`create-jvm-options` subcommand, see the link:reference-manual.html#GSRFM[{productName} Reference Manual].
+====
+
+JDBC realm::
+  {productName} gets user credentials from a database. The server
+  uses the database information and the enabled JDBC realm option in the
+  configuration file.
+Digest realm::
+  Digest Authentication authenticates a user based on a user name and a
+  password. However, the authentication is performed by transmitting the
+  password in an encrypted form.
+Oracle Solaris realm::
+  {productName} gets user credentials from the Oracle Solaris
+  operating system. This realm is supported on the Oracle Solaris 9 and
+  Oracle Solaris 10 operating systems. Consult your Oracle Solaris
+  documentation for information about managing users and groups in the
+  Oracle Solaris realm.
+PAM realm::
+  A Pluggable Authentication Module (PAM) realm allows applications
+  deployed on {productName} to authenticate users against a native
+  Unix (Solaris/Linux/Mac OS) users list. PAM realms use the class name
+  `com.sun.enterprise.security.auth.realm.pam.PamRealm` and the JAAS
+  Context `pamRealm`. +
+  This realm is supported on all Unix Operating Systems, including the
+  Oracle Solaris 9 and Oracle Solaris 10 operating systems
+Custom realm::
+  You can create other repositories for user credentials, such as a
+  relational database or third-party components. For more information
+  about custom realms, see the Administration Console online help. For
+  instructions on creating a custom realm, see
+  "link:application-development-guide/securing-apps.html#GSDVG00367[
+  Creating a Custom Realm]" in
+  {productName} Application Development Guide.
+
+The {productName} authentication service can govern users in multiple realms.
+
+[[ggnca]][[GSSCG00110]][[to-create-an-authentication-realm]]
+
+==== To Create an Authentication Realm
+
+Use the `create-auth-realm` subcommand in remote mode to create an
+authentication realm.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Create a realm by using the
+link:reference-manual/create-auth-realm.html#GSRFM00015[`create-auth-realm`] subcommand. +
+Information about properties for this subcommand is included in this help page.
+
+[[GSSCG00079]][[ggpjx]]
+Example 2-1 Creating a Realm
+
+This example creates a realm named `db`.
+
+[source]
+----
+asadmin> create-auth-realm --classname com.iplanet.ias.security.
+auth.realm.DB.Database --property defaultuser=admin:Password=admin db
+Command create-auth-realm executed successfully.
+----
+
+[[sthref21]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-auth-realm` at the command line.
+
+For information on creating a custom realm, see
+"link:application-development-guide/securing-apps.html#GSDVG00367[Creating a Custom Realm]" in {productName} Application Development Guide.
+
+[[ggngh]][[GSSCG00111]][[to-list-authentication-realms]]
+
+==== To List Authentication Realms
+
+Use the `list-auth-realms` subcommand in remote mode to list the
+existing authentication realms.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List realms by using the link:reference-manual/list-auth-realms.html#GSRFM00150[`list-auth-realms`]
+subcommand.
+
+[[GSSCG00080]][[ggpkw]]
+Example 2-2 Listing Realms
+
+This example lists the authentication realms on `localhost`.
+
+[source]
+----
+asadmin> list-auth-realms
+db
+certificate
+file
+admin-realm
+Command list-auth-realms executed successfully.
+----
+
+[[sthref22]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-auth-realms` at the command line.
+
+[[giwlt]][[GSSCG00112]][[to-update-an-authentication-realm]]
+
+==== To Update an Authentication Realm
+
+Use the `set` subcommand to modify an existing authentication realm.
+
+
+[NOTE]
+====
+A custom realm does not require server restart.
+====
+
+
+1. List realms by using the link:reference-manual/list-auth-realms.html#GSRFM00150[`list-auth-realms`]
+subcommand.
+2. Modify the values for the specified thread pool by using the
+link:reference-manual/set.html#GSRFM00226[`set`] subcommand.
++
+The thread pool is identified by its dotted name.
+3. To apply your changes, restart {productName}.
++
+See "link:administration-guide/domains.html#GSADG00337[To Restart a Domain]" in {productName} Administration Guide.
+
+[[ggngf]][[GSSCG00113]][[to-delete-an-authentication-realm]]
+
+==== To Delete an Authentication Realm
+
+Use the `delete-auth-realm` subcommand in remote mode to delete an
+existing authentication realm.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List realms by using the
+link:reference-manual/list-auth-realms.html#GSRFM00150[`list-auth-realms`] subcommand.
+3. If necessary, notify users that the realm is being deleted.
+4. Delete the realm by using the
+link:reference-manual/delete-auth-realm.html#GSRFM00066[`delete-auth-realm`] subcommand.
+5. To apply your changes, restart {productName}. See
+"link:administration-guide/domains.html#GSADG00337[To Restart a Domain]" in {productName} Administration Guide.
+
+[[GSSCG00081]][[ggpjf]]
+Example 2-3 Deleting a Realm
+
+This example deletes an authentication realm named `db`.
+
+[source]
+----
+asadmin> delete-auth-realm db
+Command delete-auth-realm executed successfully.
+----
+
+[[sthref23]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-auth-realm` at the command line.
+
+[[ggmww]][[GSSCG00114]][[to-configure-a-jdbc-or-digest-authentication-realm]]
+
+==== To Configure a JDBC or Digest Authentication Realm
+
+{productName} enables you to specify a user's credentials (user name
+and password) in the JDBC realm instead of in the connection pool. Using
+the `jdbc` type realm instead of the connection pool prevents other
+applications from browsing the database tables for user credentials.
+
+
+[NOTE]
+====
+By default, storage of passwords as clear text is not supported in the
+JDBC realm. Under normal circumstances, passwords should not be stored
+as clear text.
+====
+
+
+1. [[ggmxh]]
+Create the database tables in which to store user credentials for the realm. +
+How you create the database tables depends on the database that you are using.
+
+2. Add user credentials to the database tables that you created. +
+How you add user credentials to the database tables depends on the
+database that you are using.
+
+3. Create a JDBC connection pool for the database. +
+See "link:administration-guide/jdbc.html#GSADG00420[
+To Create a JDBC Connection Pool]" in {productName} Administration Guide.
+
+4. Create a JDBC resource for the database. +
+"link:administration-guide/jdbc.html#GSADG00426[
+To Create a JDBC Resource]" in {productName} Administration Guide.
+
+5. [[ggmvo]]
+Create a realm. +
+For instructions, see link:#ggnca[To Create an Authentication Realm].
++
+[NOTE]
+====
+The JAAS context should be `jdbcDigestRealm` for digest authentication
+or `jdbcRealm` for other authentication types.
+====
+
+6. [[ggmtc]]
+Modify the deployment descriptor to specify the `jdbc` realm. +
+Modify the deployment descriptor that is associated with your application.
+* For an enterprise application in an Enterprise Archive (EAR) file,
+  modify the `sun-application.xml` file.
+* For a web application in a Web Application Archive (WAR) file, modify the `web.xml` file.
+* For an enterprise bean in an EJB JAR file, modify the `sun-ejb-jar.xml` file.
+
++
+For more information about how to specify a realm, see
+"link:application-development-guide/securing-apps.html#GSDVG00365[
+How to Configure a Realm]" in {productName} Application Development Guide.
+
+7. Assign security roles to users in the realm. +
+To assign a security role to a user, add a `security-role-mapping`
+element to the deployment descriptor that you modified.
+
+8. Verify that the database is running. +
+If needed, see "link:administration-guide/jdbc.html#GSADG00417[To Start the Database]"
+in {productName} Administration Guide.
+
+9. To apply the authentication, restart the server. +
+See "link:administration-guide/domains.html#GSADG00337[To Restart a Domain]"
+in {productName} Administration Guide.
+
+[[GSSCG00082]][[ghysu]]
+Example 2-4 Assigning a Security Role
+
+This example shows a `security-role-mapping` element that assigns the
+security role `Employee` to user `Calvin`
+
+[source,xml]
+----
+<security-role-mapping>
+    <role-name>Employee</role-name>
+    <principal-name>Calvin</principal-name>
+  </security-role-mapping>
+----
+
+[[gkbeo]][[GSSCG00115]][[to-configure-ldap-authentication-with-oid]]
+
+==== To Configure LDAP Authentication with OID
+
+This procedure explains how to configure {productName} to use LDAP
+authentication with Oracle Internet Directory.
+
+1. Install Oracle Enterprise Manager 11g and the latest Enterprise
+Manager patches, if they are not installed already. +
+Instructions for installing Oracle Enterprise Manager are provided in
+the Oracle Enterprise Manager
+(`http://docs.oracle.com/cd/E11857_01/index.html`) documentation set.
+
+2. Install the Oracle Identity Management Suite (IDM) 11g and Patch Set 2 or later,
+if they are not installed already. +
+Instructions for installing the Oracle Identity Management suite are
+provided in Oracle Fusion Middleware Installation Guide for Oracle
+Identity Management
+(`http://docs.oracle.com/cd/E12839_01/install.1111/e12002.html`).
+
+3. Configure SSL for Oracle Internet Directory (OID), if it is not
+configured already. Configure the OID instance in the server
+authentication mode and with the protocol version set to SSLv3 +
+Instructions for configuring SSL for OID are provided in the SSL chapter
+of Oracle Internet Directory Administrator's Guide
+(`http://docs.oracle.com/cd/B14099_19/idmanage.1012/b14082/ssl.html`).
+
+4. Using Oracle Wallet Manager, export an SSL self-signed certificate
+you want to use with {productName}. +
+Instructions for using Oracle Wallet Manager to create and export SSL
+certificates are provided in the "Configure Oracle Internet Directory
+for SSL" (`http://docs.oracle.com/cd/B14099_19/idmanage.1012/b14082/ssl.html#CHDCADIJ`)
+section of the SSL chapter in Oracle Internet Directory Administrator's
+Guide (`http://docs.oracle.com/cd/B14099_19/idmanage.1012/b14082/ssl.html`).
+
+5. On the {productName} side, use the `keytool` command import the
+certificate you exported with Oracle Wallet Manager. +
+The `keytool` command is available in the `$JAVA_HOME/bin` directory.
+Use the following syntax:
++
+[source]
+----
+keytool -importcert -alias "alias-name" -keystore domain-dir/config/cacerts.jks
+-file cert-name
+----
++
+where the variables are defined as follows:
++
+--
+alias-name::
+  Name of an alias to use for the certificate
+domain-dir::
+  Name of the domain for which the certificate is used
+cert-name::
+  Path to the certificate that you exported with Oracle Wallet Manager.
+--
++
+For example, to import a certificate named `oi.cer` for a {productName} domain in `/glassfish7/glassfish/domains/domain1`, using an
+alias called "OID self-signed certificate," you would use the following command:
++
+[source]
+----
+keytool -importcert -alias "OID self signed certificate" -keystore \
+/glassfish7/glassfish/domains/domain1/config/cacerts.jks -file oid.cer
+----
+6. Restart the {productName} domain. +
+See "link:administration-guide/domains.html#GSADG00337[To Restart a Domain]"
+in {productName} Administration Guide.
+7. Use the Oracle Enterprise Manager `ldapmodify` command to enable
+Anonymous Bind for OID. +
+For example:
++
+[source]
+----
+ldapmodify -D cn=orcladmin -q -p portNum -h hostname -f ldifFile
+----
+In this example, the LDIF file might contain the following:
++
+[source]
+----
+dn: cn=oid1,cn=osdldapd,cn=subconfigsubentry
+changetype: modify
+replace: orclAnonymousBindsFlag
+orclAnonymousBindsFlag: 1
+----
+To disable all anonymous binds, you would use a similar LDIF file with
+the last line changed to:
++
+[source]
+----
+orclAnonymousBindsFlag: 0
+----
+See "Managing Anonymous Binds"
+(`http://docs.oracle.com/cd/E14571_01/oid.1111/e10029/authentication.html#CACJEJDA`)
+in Oracle Fusion Middleware Administrator's Guide for Oracle Internet Directory
+(`http://docs.oracle.com/cd/E14571_01/oid.1111/e10029.html`) for
+complete instructions on the `ldapmodify` command.
+
+[[gksgi]][[GSSCG00116]][[to-configure-ldap-authentication-with-ovd]]
+
+==== To Configure LDAP Authentication with OVD
+
+This procedure explains how to configure {productName} to use LDAP
+authentication with Oracle Virtual Directory.
+
+1. Create the OVD adapter, as described in the "Creating and
+Configuring Oracle Virtual Directory Adapters"
+(`http://docs.oracle.com/cd/E12839_01/oid.1111/e10046/basic_adapters.html#BABCBGJA`)
+chapter of Administrator's Guide for Oracle Virtual Directory
+(`http://docs.oracle.com/cd/E12839_01/oid.1111/e10046.html`).
+
+2. Configure SSL for Oracle Virtual Directory (OVD), if it is not
+configured already. For instructions on configuring SSL for OVD, see the
+section "Enable SSL for Oracle Virtual Directory Using Fusion Middleware
+Control" in SSL Configuration in Oracle Fusion Middleware
+(`http://docs.oracle.com/cd/E12839_01/core.1111/e10105/sslconfig.html#ASADM1800`).
++
+Also, configure the SSL for the OVD listener in server authentication mode.
+
+3. Export the certificate from JKS keystore you want to use with
+{productName}. See "Exporting a Keystore Using Fusion Middleware Control"
+(`http://docs.oracle.com/cd/E16764_01/core.1111/e10105/wallets.html#CIHECAIB`)
+for information.
+
+4. On the {productName} side, use the `keytool` command to import
+the certificate you exported from the JKS keystore. +
+The `keytool` command is available in the `$JAVA_HOME/bin` directory.
+Use the following syntax:
++
+[source]
+----
+keytool -importcert -alias "alias-name" -keystore domain-dir/config/cacerts.jks
+-file cert-name
+----
++
+where the variables are defined as follows:
++
+--
+alias-name::
+  Name of an alias to use for the certificate
+domain-dir::
+  Name of the domain for which the certificate is used
+cert-name::
+  Path to the certificate that you exported from the keystore.
+--
++
+For example, to import a certificate named `ovd.cer` for a {productName} domain in `/glassfish7/glassfish/domains/domain1`, using an
+alias called "OVD self-signed certificate," you would use the following command:
++
+[source]
+----
+keytool -importcert -alias "OVD self signed certificate" -keystore \
+/glassfish7/glassfish/domains/domain1/config/cacerts.jks -file ovd.cer
+----
+5. Restart the {productName} domain. +
+See "link:administration-guide/domains.html#GSADG00337[To Restart a Domain]"
+in {productName} Administration Guide.
+
+[[gkbjp]][[GSSCG00117]][[to-enable-ldap-authentication-on-the-glassfish-server-das]]
+
+==== To Enable LDAP Authentication on the {productName} DAS
+
+This procedure explains how to enable LDAP authentication for logins to
+the {productName} Domain Administration Server (DAS). Logging in to
+the DAS is typically only performed by {productName} administrators
+who want to use the {productName} Administration Console or `asadmin`
+command. See link:#gkbeo[To Configure LDAP Authentication with OID] for
+instructions on enabling general LDAP authentication for {productName}.
+
+[[sthref24]]
+
+Before you begin, ensure that you have followed the configuration instructions in
+link:#gkbeo[To Configure LDAP Authentication with OID]
+
+Use the `asadmin configure-ldap-for-admin` subcommand to enable user
+authentication to the {productName} DAS.
+
+Use the following syntax:
+
+[source]
+----
+asadmin configure-ldap-for-admin --basedn "dn-list" --url [ldap|ldaps]://ldap-url
+--ldap-group group-name
+----
+
+where the variables are defined as follows:
+
+dn-list::
+  basedn parameters
+ldap-url::
+  URL and port number for the LDAP server; can use standard (`ldap`) or
+  secure (`ldaps`) protocol
+group-name::
+  LDAP group name for allowed users, as defined on the LDAP server.
+
+For example:
+
+[source]
+----
+asadmin configure-ldap-for-admin --basedn "dc=red,dc=iplanet,dc=com" \
+--url ldap://interopoel54-1:3060 --ldap-group sqestaticgroup
+
+asadmin configure-ldap-for-admin --basedn "dc=red,dc=iplanet,dc=com" \
+--url ldaps://interopoel54-1:7501 --ldap-group sqestaticgroup
+----
+
+[[sthref25]]
+
+See Also
+
+See link:reference-manual/configure-ldap-for-admin.html#GSRFM00010[`configure-ldap-for-admin`] for more information
+about the `configure-ldap-for-admin subcommand`.
+
+[[ggnxq]][[GSSCG00152]][[administering-file-users]]
+
+=== Administering File Users
+
+A user is an individual (or application program) identity that is
+defined in {productName}. A user who has been authenticated is
+sometimes called a principal.
+
+As the administrator, you are responsible for integrating users into the
+{productName} environment so that their credentials are securely
+established and they are provided with access to the applications and
+services that they are entitled to use.
+
+The following topics are addressed here:
+
+* link:#ggocf[To Create a File User]
+* link:#ggoab[To List File Users]
+* link:#ghlgs[To List File Groups]
+* link:#ggoaw[To Update a File User]
+* link:#ggoah[To Delete a File User]
+
+[[ggocf]][[GSSCG00118]][[to-create-a-file-user]]
+
+==== To Create a File User
+
+Use the `create-file-user` subcommand in remote mode to create a new
+user by adding a new entry to the `keyfile`. The entry includes the user
+name, password, and any groups for the user. Multiple groups can be
+specified by separating the groups with colons (:).
+
+[NOTE]
+====
+If secure administration is enabled as described in
+link:administrative-security.html#gkomz[Running Secure Admin], you cannot
+create an administrative user with a blank password.
+====
+
+Creating a new `file` realm user is a dynamic event and does not require
+server restart.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. If the user will belong to a particular group, see the current
+groups by using the
+link:reference-manual/list-file-groups.html#GSRFM00164[`list-file-groups`] subcommand.
+3. Create a file user by using the
+link:reference-manual/create-file-user.html#GSRFM00024[`create-file-user`] subcommand.
+
+[[GSSCG00083]][[ggpkq]]
+Example 2-5 Creating a User
+
+This example create user `Jennifer` on the default realm `file` (no groups are specified).
+
+The `asadmin` `--passwordfile` option specifies the name of a file that
+contains the password entries in a specific format. The entry for a
+password must have the `AS_ADMIN_` prefix followed by the password name
+in uppercase letters, an equals sign, and the password. See
+link:reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] for more information.
+
+[source]
+----
+asadmin> create-file-user --user admin
+--passwordfile=c:\tmp\asadminpassword.txt Jennifer
+Command create-file-user executed successfully.
+----
+
+[[sthref26]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help create-file-user` at the command line.
+
+[[ggoab]][[GSSCG00119]][[to-list-file-users]]
+
+==== To List File Users
+
+Use the `list-file-users` subcommand in remote mode to list the users
+that are in the `keyfile`.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List users by using the link:reference-manual/list-file-users.html#GSRFM00165[`list-file-users`]
+subcommand.
+
+[[GSSCG00084]][[ggpgf]]
+Example 2-6 Listing File Users
+
+This example lists file users on the default `file` realm file.
+
+[source]
+----
+asadmin> list-file-users
+Jennifer
+Command list-file-users executed successfully.
+----
+
+[[sthref27]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help list-file-users` at the command line.
+
+[[ghlgs]][[GSSCG00120]][[to-list-file-groups]]
+
+==== To List File Groups
+
+A group is a category of users classified by common traits, such as job
+title or customer profile. For example, users of an e-commerce
+application might belong to the `customer` group, and the big spenders
+might also belong to the `preferred` group. Categorizing users into
+groups makes it easier to control the access of large numbers of users.
+A group is defined for an entire server and realm. A user can be
+associated with multiple groups of users.
+
+A group is different from a role in that a role defines a function in an
+application, while a group is a set of users who are related in some
+way. For example, in the personnel application there might be groups
+such as `full-time`, `part-time`, and `on-leave`. Users in these groups
+are all employees (the `employee` role). In addition, each user has its
+own designation that defines an additional level of employment.
+
+Use the `list-file-groups` subcommand in remote mode to list groups for
+a file user, or all file groups if the `--name` option is not specified.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List file groups by using the
+link:reference-manual/list-file-groups.html#GSRFM00164[`list-file-groups`] subcommand.
+
+[[GSSCG00085]][[ghlgb]]
+Example 2-7 Listing Groups for a User
+
+This example lists the groups for user `joesmith`.
+
+[source]
+----
+asadmin> list-file-groups --name joesmith
+staff
+manager
+Command list-file-groups executed successfully
+----
+
+[[ggoaw]][[GSSCG00121]][[to-update-a-file-user]]
+
+==== To Update a File User
+
+Use the `update-file-user` subcommand in remote mode to modify the
+information in the `keyfile` for a specified user.
+
+[NOTE]
+====
+If secure administration is enabled as described in
+link:administrative-security.html#gkomz[Running Secure Admin], you cannot
+update an administrative user to have a blank password.
+====
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. Update the user information by using the
+link:reference-manual/update-file-user.html#GSRFM00254[`update-file-user`] subcommand.
+3. To apply your changes, restart {productName}. +
+See "link:administration-guide/domains.html#GSADG00337[To Restart a Domain]"
+in {productName} Administration Guide.
+
+[[GSSCG00086]][[ggpgh]]
+Example 2-8 Updating a User
+
+The following subcommand updates the groups for user `Jennifer`.
+
+[source]
+----
+asadmin> update-file-user --passwordfile c:\tmp\asadminpassword.txt --groups
+staff:manager:engineer Jennifer
+Command update-file-user executed successfully.
+----
+
+[[sthref28]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help update-file-user` at the command line.
+
+[[ggoah]][[GSSCG00122]][[to-delete-a-file-user]]
+
+==== To Delete a File User
+
+Use the `delete-file-user` subcommand in remote mode to remove a user
+entry from the `keyfile` by specifying the user name. You cannot delete
+yourself, that is, the user you are logged in as cannot be deleted
+during your session.
+
+1. Ensure that the server is running. Remote subcommands require a running server.
+2. List users by using the
+link:reference-manual/list-file-users.html#GSRFM00165[`list-file-users`] subcommand.
+3. Delete the user by using the
+link:reference-manual/delete-file-user.html#GSRFM00076[`delete-file-user`] subcommand.
+
+[[GSSCG00087]][[ggpib]]
+Example 2-9 Deleting a User
+
+This example deletes user `Jennifer` from the default `file` realm.
+
+[source]
+----
+asadmin> delete-file-user Jennifer
+Command delete-file-user executed successfully.
+----
+
+[[sthref29]]
+
+See Also
+
+You can also view the full syntax and options of the subcommand by
+typing `asadmin help delete-file-user` at the command line.
+
+
diff --git a/docs/security-guide/src/main/jbake/assets/css/style.css b/docs/security-guide/src/main/jbake/assets/css/style.css
deleted file mode 100644
index 25a16e4..0000000
--- a/docs/security-guide/src/main/jbake/assets/css/style.css
+++ /dev/null
@@ -1,315 +0,0 @@
-/* CSS */
-/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
-/** 1. Set default font family to sans-serif. 2. Prevent iOS text size adjust after orientation change, without disabling user zoom. */
-html { font-family: sans-serif; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ }
-
-/* HTML5 display definitions ========================================================================== */
-/** Correct `block` display not defined for any HTML5 element in IE 8/9. Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox. Correct `block` display not defined for `main` in IE 11. */
-article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { display: block; }
-
-/** 1. Correct `inline-block` display not defined in IE 8/9. 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. */
-audio, canvas, progress, video { display: inline-block; /* 1 */ vertical-align: baseline; /* 2 */ }
-
-/** Prevent modern browsers from displaying `audio` without controls. Remove excess height in iOS 5 devices. */
-audio:not([controls]) { display: none; height: 0; }
-
-/** Address `[hidden]` styling not present in IE 8/9/10. Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. */
-[hidden], template { display: none; }
-
-/* Links ========================================================================== */
-/** Remove the gray background color from active links in IE 10. */
-a { background-color: transparent; }
-
-/** Improve readability when focused and also mouse hovered in all browsers. */
-a:active, a:hover { outline: 0; }
-
-/* Text-level semantics ========================================================================== */
-/** Address styling not present in IE 8/9/10/11, Safari, and Chrome. */
-abbr[title] { border-bottom: 1px dotted; }
-
-/** Address style set to `bolder` in Firefox 4+, Safari, and Chrome. */
-b, strong { font-weight: bold; }
-
-/** Address styling not present in Safari and Chrome. */
-dfn { font-style: italic; }
-
-/** Address variable `h1` font-size and margin within `section` and `article` contexts in Firefox 4+, Safari, and Chrome. */
-h1 { font-size: 2em; margin: 0.67em 0; }
-
-/** Address styling not present in IE 8/9. */
-mark { background: #ff0; color: #000; }
-
-/** Address inconsistent and variable font size in all browsers. */
-small { font-size: 80%; }
-
-/** Prevent `sub` and `sup` affecting `line-height` in all browsers. */
-sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }
-
-sup { top: -0.5em; }
-
-sub { bottom: -0.25em; }
-
-/* Embedded content ========================================================================== */
-/** Remove border when inside `a` element in IE 8/9/10. */
-img { border: 0; }
-
-/** Correct overflow not hidden in IE 9/10/11. */
-svg:not(:root) { overflow: hidden; }
-
-/* Grouping content ========================================================================== */
-/** Address margin not present in IE 8/9 and Safari. */
-figure { margin: 1em 40px; }
-
-/** Address differences between Firefox and other browsers. */
-hr { box-sizing: content-box; height: 0; }
-
-/** Contain overflow in all browsers. */
-pre { overflow: auto; }
-
-/** Address odd `em`-unit font size rendering in all browsers. */
-code, kbd, pre, samp { font-family: monospace, monospace; font-size: 1em; }
-
-/* Forms ========================================================================== */
-/** Known limitation: by default, Chrome and Safari on OS X allow very limited styling of `select`, unless a `border` property is set. */
-/** 1. Correct color not being inherited. Known issue: affects color of disabled elements. 2. Correct font properties not being inherited. 3. Address margins set differently in Firefox 4+, Safari, and Chrome. */
-button, input, optgroup, select, textarea { color: inherit; /* 1 */ font: inherit; /* 2 */ margin: 0; /* 3 */ }
-
-/** Address `overflow` set to `hidden` in IE 8/9/10/11. */
-button { overflow: visible; }
-
-/** Address inconsistent `text-transform` inheritance for `button` and `select`. All other form control elements do not inherit `text-transform` values. Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. Correct `select` style inheritance in Firefox. */
-button, select { text-transform: none; }
-
-/** 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls. 2. Correct inability to style clickable `input` types in iOS. 3. Improve usability and consistency of cursor style between image-type `input` and others. */
-button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ }
-
-/** Re-set default cursor for disabled elements. */
-button[disabled], html input[disabled] { cursor: default; }
-
-/** Remove inner padding and border in Firefox 4+. */
-button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; }
-
-/** Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet. */
-input { line-height: normal; }
-
-/** It's recommended that you don't attempt to style these elements. Firefox's implementation doesn't respect box-sizing, padding, or width.  1. Address box sizing set to `content-box` in IE 8/9/10. 2. Remove excess padding in IE 8/9/10. */
-input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ }
-
-/** Fix the cursor style for Chrome's increment/decrement buttons. For certain `font-size` values of the `input`, it causes the cursor style of the decrement button to change from `default` to `text`. */
-input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { height: auto; }
-
-/** 1. Address `appearance` set to `searchfield` in Safari and Chrome. 2. Address `box-sizing` set to `border-box` in Safari and Chrome (include `-moz` to future-proof). */
-input[type="search"] { -webkit-appearance: textfield; /* 1 */ /* 2 */ box-sizing: content-box; }
-
-/** Remove inner padding and search cancel button in Safari and Chrome on OS X. Safari (but not Chrome) clips the cancel button when the search input has padding (and `textfield` appearance). */
-input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; }
-
-/** Define consistent border, margin, and padding. */
-fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; }
-
-/** 1. Correct `color` not being inherited in IE 8/9/10/11. 2. Remove padding so people aren't caught out if they zero out fieldsets. */
-legend { border: 0; /* 1 */ padding: 0; /* 2 */ }
-
-/** Remove default vertical scrollbar in IE 8/9/10/11. */
-textarea { overflow: auto; }
-
-/** Don't inherit the `font-weight` (applied by a rule above). NOTE: the default cannot safely be changed in Chrome and Safari on OS X. */
-optgroup { font-weight: bold; }
-
-/* Tables ========================================================================== */
-/** Remove most spacing between table cells. */
-table { border-collapse: collapse; border-spacing: 0; }
-
-td, th { padding: 0; }
-
-/* LAYOUT STYLES */
-
-p { margin-top: 0; }
-
-code, pre { margin-bottom: 30px; font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace; font-size: 13px; color: #222; }
-
-code { padding: 0 3px; background-color: #f2f8fc; border: solid 1px #dbe7f3; }
-
-pre { padding: 20px; overflow: auto; text-shadow: none; background: #fff; border: solid 1px #f2f2f2; }
-
-pre code { padding: 0; color: #2879d0; background-color: #fff; border: none; }
-
-ul, ol, dl { margin-bottom: 20px; }
-
-/* COMMON STYLES */
-
-td.halign-right { text-align: right; } 
-
-td.halign-center { text-align: center; } 
-
-form { padding: 20px; background: #f2f2f2; }
-
-h2 { 
-   font-size: 2em;
-   line-height: 1.2em;
-   font-weight: 200;
-   letter-spacing: 0;
-}
-
-h3 { 
-   font-size: 1.4em;
-   line-height: 1.2em;
-   font-weight: normal;
-   letter-spacing: 0;
-}
-
-.sect1 {
-   margin-left: 4%;
-   margin-right: 4%;
-   font: 13px/20px Arial, Helvetica, sans-serif  
-}
-
-a:link {
-   text-decoration: none;
-   color: #09569d;
-}
-
-#preamble hr{
-   margin-left: 0%;
-   margin-right: 0%;
-}
-
-#preamble .sectionbody table  {
-   font-weight: 200;
-   margin-left: 4%;
-   margin-right: 4%;
-}
-
-hr {
-   margin-bottom: 12px;
-}
-
-table.tableblock.frame-all.grid-all.spread {
-   font-size: 12px;
-}
-
-code {
-   font-size:.9em;
-   border: 1px solid #eaeaea;
-   background-color: #f6f6f6;
-   border-radius: 3px;
-   padding: 1px;
-   padding-left:2px;
-   padding-right:2px;
-}
-
-pre.prettyprint.highlight {
-   border: 1px solid #eaeaea;
-   background-color: #f6f6f6;
-   border-radius: 4px;
-   padding: 8px;
-   padding-top:4px;
-   padding-bottom:4px;
-}
-
-.language-oac_no_warn {
-   font-size:.9em;
-   color:#222;
-   background-color: transparent;
-}
-
-#doc-title {
-   margin-left: 4%;
-}
-
-#top-nav {
-   margin-left: 4%;
-   font-size: 12px;
-}
-
-#bottom-nav {
-   margin-left: 4%;
-   font-size: 12px;
-}
-
-.vector-font {
-   color:grey; 
-   font-size: 20px;
-}
-
-#copyright {
-   padding-top: 10px;
-   padding-bottom: 4px;
-   display: table;
-   margin:0 auto;
-   color: grey;
-   font-size: 12px;
-   vertical-align: middle;
-}
-
-.beta {color: #FF0000}
-
-/* GENERAL ELEMENT TYPE STYLES */
-
-/* #Media Queries
-================================================== */
-/* Smaller than standard 960 (devices and browsers) */
-/* Tablet Portrait size to standard 960 (devices and browsers) */
-@media only screen and (min-width: 768px) and (max-width: 959px) { .inner { width: 740px; }
-  header h1, header h2 { width: 340px; }
-  header h1 { font-size: 60px; }
-  header h2 { font-size: 30px; }
-}
-/* All Mobile Sizes (devices and browser) */
-@media only screen and (max-width: 767px) { .inner { width: 93%; }
-  header { padding: 20px 0; }
-  header .inner { position: relative; }
-  header h1, header h2 { width: 100%; }
-  header h1 { font-size: 48px; }
-  header h2 { font-size: 24px; }
-  header a.button { position: relative; display: inline-block; width: auto; height: auto; padding: 5px 10px; margin-top: 15px; font-size: 13px; line-height: 1; color: #2879d0; text-align: center; background-color: #9ddcff; background-image: none; border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; }
-  header a.button small { display: inline; font-size: 13px; }
-}
-/* Mobile Landscape Size to Tablet Portrait (devices and browsers) */
-/* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */
-
-header h1 { padding-top: 14px; font-size: 2em; font-weight: 200; line-height: 1.4; color: #FFFFFF; letter-spacing: 0px; border-bottom: 0px; }
-
-header h2 { font-size: 1.2em; margin-top: 0; margin-bottom: 0; font-weight: 200; line-height: .8; color: #ec7D11; letter-spacing: 0; }
-
-/*
-header a.button { background: transparent url(../images/logo.png) 0 0 no-repeat; padding-left: 32px; }
-*/
-
-header a:hover { text-decoration: none; }
-
-/* Admonition (Note) block */
-.admonitionblock > table {
-  border: 0;
-  background: none;
-  width: 100%;
-  table-layout: auto;
-  margin-bottom: 10.5px;
-}
-.admonitionblock > table td.icon {
-  text-align: center;
-  width: 60px;
-}
-.admonitionblock > table td.icon img {
-  max-width: none;
-}
-.admonitionblock > table td.icon .title {
-  text-transform: uppercase;
-}
-.admonitionblock > table td.content {
-  padding-left: 1em;
-  padding-right: 1em;
-  border-left: 3px solid #ddd;
-}
-.admonitionblock > table td.content > :last-child > :last-child {
-  margin-bottom: 0;
-}
-.admonitionblock td.icon [class^="fa icon-"]:before {
-  font-size: 2.5em;
-  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
-  cursor: default;
-}
-.admonitionblock td.icon .icon-note:before {
-  content: "\f05a";
-  color: #5bc0de;
-}
diff --git a/docs/security-guide/src/main/jbake/content/administrative-security.adoc b/docs/security-guide/src/main/jbake/content/administrative-security.adoc
deleted file mode 100644
index 270cc95..0000000
--- a/docs/security-guide/src/main/jbake/content/administrative-security.adoc
+++ /dev/null
@@ -1,990 +0,0 @@
-type=page
-status=published
-title=Managing Administrative Security
-next=running-in-secure-environment.html
-prev=security-in-cluster-mode.html
-~~~~~~
-Managing Administrative Security
-================================
-
-[[GSSCG00039]][[gknqh]]
-
-
-[[managing-administrative-security]]
-5 Managing Administrative Security
-----------------------------------
-
-This chapter describes how to manage administrative security by using
-the secure administration feature.
-
-This chapter assumes that you are familiar with security features such
-as authentication, authorization, and certificates. If you are not,
-first see link:system-security.html#ablnk[Administering System Security].
-
-Instructions for accomplishing the tasks specific to GlassFish Server by
-using the Administration Console are contained in the Administration
-Console online help.
-
-* link:#gkocp[Secure Administration Overview]
-* link:#gkofl[How Secure Admin Works: The Big Picture]
-* link:#gkofe[Considerations When Running GlassFish Server With Default
-Security]
-* link:#gkomz[Running Secure Admin]
-* link:#gkolu[Additional Considerations When Creating Local Instances]
-* link:#gkqah[Secure Admin Use Case]
-* link:#gkodn[Upgrading an SSL-Enabled Secure GlassFish Installation to
-Secure Admin]
-
-[[gkocp]][[GSSCG00162]][[secure-administration-overview]]
-
-Secure Administration Overview
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The secure administration feature allows an administrator to secure all
-administrative communication between the domain administration server
-(DAS), any remote instances, and administration clients such as the
-`asadmin` utility, the administration console, and REST clients.
-
-In addition, secure administration helps to prevent DAS-to-DAS and
-instance-to-instance traffic, and carefully restricts
-administration-client-to-instance traffic.
-
-The secure administration feature, which is henceforth referred to as
-secure admin, provides a secure environment, in which you can be
-confident that rogue users or processes cannot intercept or corrupt
-administration traffic or impersonate legitimate GlassFish Server
-components.
-
-When you install GlassFish Server or create a new domain, secure admin
-is disabled by default. When secure admin is disabled, GlassFish Server
-does not encrypt administrative communication among the system
-components and does not accept administrative connections from remote
-hosts.
-
-The following subcommands enable and disable secure admin:
-
-* enable-secure-admin-The `enable-secure-admin` subcommand turns on
-secure admin. GlassFish Server uses SSL encryption to protect subsequent
-administrative traffic and will accept remote administrative
-connections. Enabling secure admin affects the entire domain, including
-the DAS and all instances. The DAS must be running, and not any
-instances, when you run `enable-secure-admin`. You must restart the DAS
-immediately after enabling secure admin, and then start any instances
-you want to run. +
-
-[NOTE]
-=======================================================================
-
-The `enable-secure-admin` subcommand fails if any administrative user
-has a blank password.
-
-=======================================================================
-
-* disable-secure-admin-The `disable-secure-admin` subcommand turns off
-secure admin. GlassFish Server no longer encrypts administrative
-messages and will no longer accept remote administration connections.
-Disabling secure admin affects the entire domain, including the DAS and
-all instances. The DAS must be running , and not any instances, when you
-run `disable-secure-admin`. You must restart the DAS immediately after
-disabling secure admin, and then start any instances you want to run. +
-If secure admin is not enabled, this subcommand has no effect.
-
-This section describes how to use these commands to run secure admin,
-and the implications of doing so.
-
-[[gkofl]][[GSSCG00163]][[how-secure-admin-works-the-big-picture]]
-
-How Secure Admin Works: The Big Picture
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Secure admin is a domain-wide setting. It affects the DAS and all
-instances and all administration clients. This section describes the
-following topics:
-
-* link:#gkqce[Functions Performed by Secure Admin]
-* link:#gkocv[Which Administration Account is Used?]
-* link:#gkodi[What Authentication Methods Are Used for Secure
-Administration?]
-* link:#gkpex[Understanding How Certificate Authentication is Performed]
-* link:#gkoey[What Certificates Are Used?]
-* link:#glgmy[An Alternate Approach: Using Distinguished Names to
-Specify Certificates]
-* link:#gkqjj[Guarding Against Unwanted Connections]
-
-[[gkqce]][[GSSCG00227]][[functions-performed-by-secure-admin]]
-
-Functions Performed by Secure Admin
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The `enable-secure-admin` subcommand performs the following functions.
-Subsequent sections describe these functions in more detail.
-
-* Enables the secure admin behavior, optionally setting which aliases
-are to be used for identifying the DAS and instance certificates.
-* Adjusts all configurations in the domain, including default-config.
-* Adjusts Grizzly settings:
-
-** SSL/TLS is enabled in the DAS's admin listener and the instances'
-admin listeners.
-
-** Port unification (that is, HTTP and HTTPS are handled by the same
-port), http—to—https redirection, and client authentication
-(client-auth=want) are enabled.
-
-** Configures SSL to use the administration truststore.
-
-** Configures SSL to use the administration keystore and the correct
-alias (for the self-signed cert) for authenticating itself. (You can use
-your own certificate instead, as described in link:#gkped[Using Your Own
-Certificates]. +
-The Grizzly configuration on the DAS and each instance is identical,
-with the exception that the DAS uses the `s1as` alias for SSL/TLS
-authentication and the instances use the `glassfish-instance` alias.
-(These alias names are the default, and you can change them.) +
-A server restart is required to change the Grizzly adapter behavior. +
-The restart also synchronizes the restarted instances. When you start
-the instances, the DAS delivers the updated configuration to the
-instances.
-
-[[gkocv]][[GSSCG00228]][[which-administration-account-is-used]]
-
-Which Administration Account is Used?
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-If only one administration account exists in the realm, GlassFish Server
-treats that account as the current default administration account. In
-this case, when you run an `asadmin` command, you do not need to specify
-the username. If a password for that username is required, you need to
-specify it, typically by using the `--passwordfile` option or by letting
-`asadmin` prompt you for it.
-
-By default, GlassFish Server includes a single account for user "admin"
-and an empty password. Therefore, if you make no other changes before
-you enable secure admin, "admin" is the initial default username and no
-password is required. You need to decide whether enabling secure admin
-without also requiring a password makes sense in your environment.
-
-If multiple admin accounts exist, then GlassFish Server does not
-recognize any admin username as the default. You must then specify a
-valid username via the `-—user` option when you use the `asadmin`
-command (or by or defining the `AS_ASDMIN_USER` environment variable),
-and its associated password (if the associated password is not empty).
-
-The username and password used for a login attempt must match the
-username and password (if required) for an account defined in the realm,
-and you must have set up the account as a member of the admin group.
-
-[[gkodi]][[GSSCG00229]][[what-authentication-methods-are-used-for-secure-administration]]
-
-What Authentication Methods Are Used for Secure Administration?
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The secure admin feature enforces security via the following
-authentication methods:
-
-* The DAS and instances authenticate to each other via mutual (two-way)
-SSL/TLS certificate authentication. The DAS authenticates to clients via
-one-way SSL/TLS certificate authentication. +
-The domain creation process creates a default keystore and truststore,
-plus a default private key for the DAS. Secure admin uses this initial
-configuration to set up the truststore so that the DAS and instances
-always trust each other.
-* Remote administration clients (`asadmin`, administration console,
-browsers, and IDEs) must accept the public certificate presented by the
-DAS. If accepted, remote administration clients then send a user name
-and password (HTTP Basic authentication) in the HTTP Authorization
-header. The receiving DAS or instance makes sure those credentials are
-valid in its realm, and authenticates and authorizes the user.
-* A locally-running `asadmin` (that is, connecting to an instance on the
-same host) authenticates and authorizes to the co-located instance using
-a locally-provisioned password.
-* Credentials or other sensitive information sent over the network are
-always encrypted if secure admin is enabled. No credentials are sent in
-the clear if secure admin is enabled. (If secure admin is disabled,
-credentials are sent in the clear.) Messages between administration
-clients and the DAS, between the DAS and remote instances, and between
-local administration clients and instances are encrypted using SSL/TLS.
-This is true even if you explicitly set the `asadmin` `-—secure` option
-to false.
-
-link:#gkobl[Table 5-1] shows which authentication methods are employed
-when secure admin is enabled or disabled.
-
-[[sthref35]][[gkobl]]
-
-Table 5-1 Authentication Methods Employed
-
-[width="100%",cols="30%,30%,40%",options="header",]
-|=======================================================================
-|Access Method |When Secure Admin is Disabled |When Secure Admin is
-Enabled
-|Remote administration access to the DAS |Rejected. |Username/password
-authentication. (Client must also accept server certificate.)
-
-|Communication between DAS and instances |Cleartext messages. No mutual
-authentication. |SSL-encrypted messages. SSL mutual authentication using
-certificates.
-
-|Communication between administration clients and DAS |Cleartext
-messages. No DAS authentication. |SSL-encrypted messages. DAS uses SSL
-certificate server authentication.
-
-|Local asadmin client to instance on same node |Cleartext messages.
-Locally-provisioned password mechanism is used. |SSL-encrypted messages.
-Locally-provisioned password mechanism is used.
-|=======================================================================
-
-
-[[gkpex]][[GSSCG00230]][[understanding-how-certificate-authentication-is-performed]]
-
-Understanding How Certificate Authentication is Performed
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The domain creation process creates a primary (private) key and a
-self-signed certificate for the DAS, and a separate private key and
-self-signed certificate for remote instances.
-
-Then, when you enable secure admin, the following actions are performed:
-
-* Both private keys are stored in the domain-wide DAS keystore file,
-keystore.jks.
-* Both public certificates are stored in the domain-wide DAS truststore
-file, cacerts.jks.
-
-When the DAS sends a message to an instance:
-
-1.  SSL on the instance asks the DAS to provide an SSL/TLS certificate.
-2.  The DAS sends the certificate with the alias you specified using the
-`--adminalias` option when you ran the `enable-secure-admin` subcommand.
-3.  SSL on the instance makes sure the certificate is valid and
-GlassFish Server makes sure that the security Principal associated with
-the incoming request (provided automatically by Grizzly and the SSL/TLS
-Java implementation) matches the Principal associated with the
-adminalias from the instance's truststore.
-
-[[gkoey]][[GSSCG00231]][[what-certificates-are-used]]
-
-What Certificates Are Used?
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-When you enable secure admin, you can optionally set the `--adminalias`
-and `--instancealias` options that tell secure admin which aliases to
-use for the DAS and instance certificates.
-
-The DAS uses the alias associated with the `--instancealias` option to
-check incoming requests that use SSL/TLS cert authentication.
-Conversely, instances use the alias associated with the `--adminalias`
-option to check incoming requests with certificate authentication.
-
-By default, `--adminalias` of the `enable-secure-admin` subcommand uses
-the `s1as` alias, and the `--instancealias` option uses the
-`glassfish-instance` alias, both of which identify the default
-self-signed certificates.
-
-You can use your tool of choice, such as keytool, to list the default
-self-signed certificates in the keystore, similar to the following:
-
-
-[NOTE]
-=======================================================================
-
-You can list the contents of the keystore without supplying a password.
-However, for a request that affects the private key, such as the
-keytool.exe `--certreq` option, the keystore password is required. This
-is the master password and has a default value of changeit unless you
-change it with the `change-master-password` subcommand.
-
-=======================================================================
-
-
-`keytool.exe -list -keystore keystore.jks`
-
-[source,oac_no_warn]
-----
-Enter keystore password:
-
-*****************  WARNING WARNING WARNING  *****************
-* The integrity of the information stored in your keystore  *
-* has NOT been verified!  In order to verify its integrity, *
-* you must provide your keystore password.                  *
-*****************  WARNING WARNING WARNING  *****************
-
-Keystore type: JKS
-Keystore provider: SUN
-
-Your keystore contains 2 entries
-
-glassfish-instance, Jan 3, 2011, PrivateKeyEntry,
-Certificate fingerprint (MD5): 06:A4:83:84:57:52:9C:2F:E1:FD:08:68:BB:2D:ED:E8
-s1as, Jan 3, 2011, PrivateKeyEntry,
-Certificate fingerprint (MD5): 8B:7D:5A:4A:32:36:1B:5D:6A:29:66:01:B0:A3:CB:85
-----
-
-The `--adminalias` and `--instancealias` values are maintained. Because
-of this design, normal instance creation operations (create-instance
-over SSH and create-local-instance) apply the up-to-date keystore,
-truststore, and configuration to each instance.
-
-[[gkpfi]][[GSSCG00201]][[self-signed-certificates-and-trust]]
-
-Self-Signed Certificates and Trust
-++++++++++++++++++++++++++++++++++
-
-The self-signed certificates that GlassFish Server uses might not be
-trusted by clients by default because a certificate authority does not
-vouch for the authenticity of the certificate. If you enable secure
-admin and then contact the DAS using an administration client, that
-client will detect whether the certificate is automatically trusted.
-
-Browsers will warn you, let you view the certificate, and ask you to
-reject the certificate, accept it once, or accept it indefinitely, as
-shown in link:#gkqpv[Figure 5-1].
-
-[[GSSCG00002]][[gkqpv]]
-
-
-.*Figure 5-1 Sample Browser Response to Untrusted Certificate*
-image:img/accept-certif.png[
-"This screen shot shows how a browser might respond to an untrusted
-certificate."]
-
-
-Similarly, the first time `asadmin` receives an untrusted certificate,
-it displays the certificate and lets you accept it or reject it, as
-follows: (If you accept it, `asadmin` also accepts that certificate in
-the future. )
-
-[source,oac_no_warn]
-----
-D:\glassfish6\glassfish\bin>asadmin enable-secure-admin
-Command enable-secure-admin executed successfully.
-
-
-D:\glassfish6\glassfish\bin>asadmin stop-domain domain1
-Waiting for the domain to stop .......
-Command stop-domain executed successfully.
-
-D:\glassfish6\glassfish\bin>asadmin start-domain domain1
-Waiting for domain1 to start ..............................
-Successfully started the domain : domain1
-domain  Location: D:\glassfish6\glassfish\domains\domain1
-Log File: D:\glassfish6\glassfish\domains\domain1\logs\server.log
-Admin Port: 4848
-Command start-domain executed successfully.
-
-D:\glassfish6\glassfish\bin>asadmin list-domains
-[
-[
-  Version: V3
-  Subject: CN=machine.oracle.com, OU=GlassFish, O=Oracle Corporation, L=San
-ta Clara, ST=California, C=US
-  Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5
-
-  Key:  Sun RSA public key, 1024 bits
-  modulus: 916043595073784449632358756374297330881618062298549101072702252458856
-74079656358328568800001548507219262910864311924824938195045822088563459253216383
-21100660819657204757523896415606833471499564071226722478056407102318862796797465
-6245090519956376357288295037519504394674686082145398885236913866246525691704749
-  public exponent: 65537
-  Validity: [From: Tue Jan 04 14:30:08 EST 2011,
-               To: Fri Jan 01 14:30:08 EST 2021]
-  Issuer: CN=machine.oracle.com, OU=GlassFish, O=Oracle Corporation, L=Sant
-a Clara, ST=California, C=US
-  SerialNumber: [    4d237540]
-
-Certificate Extensions: 1
-[1]: ObjectId: 2.5.29.14 Criticality=false
-SubjectKeyIdentifier [
-KeyIdentifier [
-0000: AF 8B 90 1E 51 9A 80 1B   EB A4 D9 C6 01 8A A0 FD  ....Q...........
-0010: DE EC 83 8A                                        ....
-]
-]
-
-]
-  Algorithm: [SHA1withRSA]
-  Signature:
-0000: 3F 2B 30 CE 97 0B 5E F3   72 0E 60 18 8D 3B 04 DC  ?+0...^.r.`..;..
-0010: 26 E6 7A 6F D0 19 CC 26   1D 90 C0 DE 33 4E 53 FB  &.zo...&....3NS.
-0020: DC E7 AE 78 9E BA EF 14   86 57 36 D4 3E 9B C9 FB  ...x.....W6.>...
-0030: C0 B4 EF 72 27 D9 4F 79   1F 89 91 B8 96 26 33 64  ...r'.Oy.....&3d
-0040: 9F 4B 04 4B 83 B9 BF 4D   54 B4 8F 75 17 1A 51 BD  .K.K...MT..u..Q.
-0050: F3 69 94 CE 90 95 08 55   2C 07 D2 23 AC AE EC 6D  .i.....U,..#...m
-0060: 84 B6 3D 00 FB FE 92 50   37 1A 2D 00 F1 21 5C E6  ..=....P7.-..!\.
-0070: 1F 39 26 B2 5D C1 FD C8   B1 4F CC EE 26 84 B8 B5  .9&.]....O..&...
-
-]
-Do you trust the above certificate [y|N] -->
-----
-
-`asadmin` saves certificates you accept in the file `.asadmintruststore`
-in your log-in default directory. You do not generally need to work with
-the file directly, but if you delete or move the file, `asadmin` will
-prompt you again when it receives untrusted certificates.
-
-Some `asadmin` commands such as run-script can contact an instance
-directly to retrieve information (but not to make configuration
-changes). The instances do not use the same certificate as the DAS, so
-in these cases `asadmin` then prompts you to accept or reject the
-instance certificate.
-
-[[gkped]][[GSSCG00202]][[using-your-own-certificates]]
-
-Using Your Own Certificates
-+++++++++++++++++++++++++++
-
-By default, `--adminalias` of the `enable-secure-admin` subcommand uses
-the `s1as` alias, and the `--instancealias` option uses the
-`glassfish-instance` alias, both of which identify the default
-self-signed certificates.
-
-You can instead have GlassFish Server use your own certificates for this
-purpose by first adding your certificates to the keystore and
-truststore, and then running `enable-secure-admin` and specifying the
-aliases for your certificates.
-
-It is also possible to use `s1as` and `glassfish-instance` as the alias
-names for your own certificates. A benefit of doing so is that you would
-not have to specify alias names with the `enable-secure-admin`
-subcommand.
-
-In addition, your own certificate identified by the `s1as` alias would
-be used in all other cases within the domain where the `s1as` alias is
-used (by default), such as in the SSL configuration of the IIOP and
-http-listener-2 listeners, and as the `encryption.key.alias` and
-`signature.key.alias` used for provider configuration in the SOAP
-authentication layer for Message Security configuration.
-
-You may find the wide-reaching effect of using the `s1as` alias with
-your own certificate to be either a useful feature or an unintended
-consequence. Therefore, you should understand the implications of using
-the `s1as` alias before doing so.
-
-If you decide to use the `s1as` and `glassfish-instance` aliases with
-your own certificates, you will first need to disable secure admin (if
-enabled) and then change or delete the exiting `s1as` alias from both
-the `keystore.jks` keystore and `cacerts.jks` truststore for the DAS.
-You can use the `--changealias` or`--delete` option of `keytool` to
-accomplish this. Then, import your own certificates.
-
-When you enable secure admin, the DAS and the instances then have copies
-of the same keystore and truststore
-
-[[glgmy]][[GSSCG00232]][[an-alternate-approach-using-distinguished-names-to-specify-certificates]]
-
-An Alternate Approach: Using Distinguished Names to Specify Certificates
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-By default, the DAS uses the alias associated with the `--instancealias`
-option to check incoming requests that use SSL/TLS cert authentication.
-Conversely, instances use the alias associated with the `--adminalias`
-option to check incoming requests with certificate authentication.
-
-The link:../reference-manual/enable-secure-admin-principal.html#GSRFM00131[`enable-secure-admin-principal`] subcommand
-provides an alternate approach. `enable-secure-admin-principal`
-instructs GlassFish Server to accept admin requests when accompanied by
-an SSL certificate with the specified distinguished name (DN).
-
-
-[NOTE]
-=======================================================================
-
-Any certificate you specify with `enable-secure-admin-principal` must
-either be issued by a trusted certificate authority or, if it is
-self-signed, must already be in the GlassFish Server truststore.
-
-=======================================================================
-
-
-For example, assume that you write your own admin client that uses the
-REST interface. When your client establishes the connection, it can
-choose which certificate to use for its client cert. You would then
-specify the DN of this certificate to `enable-secure-admin-principal`.
-
-You must specify either the DN or the `--alias` option of the
-`enable-secure-admin-principal` subcommand.
-
-If you specify the DN, GlassFish Server records the value you specify as
-the DN. You specify the DN as a comma-separated list in quotes. For
-example,
-`"CN=system.amer.oracle.com,OU=GlassFish,O=Oracle Corporation,L=Santa Clara,ST=California,C=US"`.
-
-
-[NOTE]
-=======================================================================
-
-The `enable-secure-admin-principal` subcommand accepts the string you
-enter and does not immediately validate it. However, secure admin must
-be able to match the DN you specify in order to use it.
-
-=======================================================================
-
-
-If you have sufficient privileges to view the content of the keystore,
-you can use keytool to display the DN of a certificate:
-
-[source,oac_no_warn]
-----
-keytool.exe -v -list -keystore keystore.jks
-Enter keystore password:
-
-Keystore type: JKS
-Keystore provider: SUN
-
-Your keystore contains 2 entries
-
-Alias name: glassfish-instance
-Creation date: Jul 7, 2011
-Entry type: PrivateKeyEntry
-Certificate chain length: 1
-Certificate[1]:
-Owner: CN=systemname.amer.oracle.com-instance, OU=GlassFish, 
-O=Oracle Corporation, L=Santa Clara, ST=California, C=US
-Issuer: CN=systemname.amer.oracle.com-instance, OU=GlassFish, O=Oracle Corporation,
- L=Santa Clara, ST=California, C=US
-Serial number: 4e15d6e7
-Valid from: Thu Jul 07 11:55:19 EDT 2011 until: Sun Jul 04 11:55:19 EDT 2021
-Certificate fingerprints:
-         MD5:  05:6E:01:D6:CE:9D:29:DA:55:D9:10:5E:BE:CC:55:05
-         SHA1: 2A:6D:A2:52:A5:2B:ED:DE:CD:B4:76:4A:65:9D:B5:79:A6:EA:3C:10
-         Signature algorithm name: SHA1withRSA
-         Version: 3
-
-Extensions:
-
-#1: ObjectId: 2.5.29.14 Criticality=false
-SubjectKeyIdentifier [
-KeyIdentifier [
-0000: 96 99 36 B6 CF 60 1E 8A   AE 25 75 4E C8 34 AA AB  ..6..`...%uN.4..
-0010: E1 3B CF 03                                        .;..
-]
-]
-----
-
-If you use the "`--alias` aliasname" form, then GlassFish Server looks
-in its truststore for a certificate with the specified alias and uses
-the DN associated with that certificate. alias-name must be an alias
-associated with a certificate currently in the truststore. Therefore,
-you may find it most useful for self-signed certificates for which you
-know the alias.
-
-If you have sufficient privileges to view the contents of the
-truststore, you can use keytool to display the alias of a certificate:
-
-[source,oac_no_warn]
-----
-keytool.exe -v -list -keystore cacerts.jks
-Enter keystore password:
-:
-:
-Alias name: glassfish-instance
-Creation date: Jul 7, 2011
-Entry type: trustedCertEntry
-
-Owner: CN=systemname.amer.oracle.com-instance, OU=GlassFish, O=Oracle Corporation,
-L=Santa Clara, ST=California, C=US
-Issuer: CN=systemname.amer.oracle.com-instance, OU=GlassFish, O=Oracle Corporation,
- L=Santa Clara, ST=California, C=US
-Serial number: 4e15d6e7
-Valid from: Thu Jul 07 11:55:19 EDT 2011 until: Sun Jul 04 11:55:19 EDT 2021
-Certificate fingerprints:
-         MD5:  05:6E:01:D6:CE:9D:29:DA:55:D9:10:5E:BE:CC:55:05
-         SHA1: 2A:6D:A2:52:A5:2B:ED:DE:CD:B4:76:4A:65:9D:B5:79:A6:EA:3C:10
-         Signature algorithm name: SHA1withRSA
-         Version: 3
-
-Extensions:
-
-#1: ObjectId: 2.5.29.14 Criticality=false
-SubjectKeyIdentifier [
-KeyIdentifier [
-0000: 96 99 36 B6 CF 60 1E 8A   AE 25 75 4E C8 34 AA AB  ..6..`...%uN.4..
-0010: E1 3B CF 03                                        .;..
-]
-]
-----
-
-When you run `enable-secure-admin`, GlassFish Server automatically
-records the DNs for the admin alias and the instance alias, whether you
-specify those values or use the defaults. You do not need to run
-`enable-secure-admin-principal` yourself for those certificates.
-
-Other than these certificates, you must run
-`enable-secure-admin-principal` for any other DN that GlassFish Server
-should authorize to send admin requests. This includes DNs corresponding
-to trusted certificates (those with a certificate chain to a trusted
-authority.)
-
-You can run `enable-secure-admin-principal` multiple times so that
-GlassFish Server accepts admin requests from a client sending a
-certificate with any of the DNs you specify.
-
-The following example shows how to specify a DN for authorizing access
-in secure administration:
-
-[source,oac_no_warn]
-----
-asadmin> enable-secure-admin-principal
-"CN=system.amer.oracle.com,OU=GlassFish,
-O=Oracle Corporation,L=Santa Clara,ST=California,C=US"
-
-Command enable-secure-admin-principal executed successfully.
-----
-
-You can use the link:../reference-manual/disable-secure-admin-principal.html#GSRFM00123[`disable-secure-admin-principal`]
-subcommand to disable a specific certificate for authenticating and
-authorizing access in secure admin. You must specify either the DN or
-the `--alias` option of the `disable-secure-admin-principal` subcommand.
-To disable multiple certificates for authenticating and authorizing
-access in secure admin, run the `disable-secure-admin-principal`
-subcommand multiple times.
-
-You can use the link:../reference-manual/list-secure-admin-principals.html#GSRFM00200[`list-secure-admin-principals`]
-subcommand to list the certificates for which GlassFish Server accepts
-admin requests from clients.
-
-[[gkqjj]][[GSSCG00233]][[guarding-against-unwanted-connections]]
-
-Guarding Against Unwanted Connections
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Secure admin guards against unwanted connections in several ways:
-
-* DAS-to-DAS, instance-to-instance:
-
-** The DAS and the instances have copies of the same truststore, which
-contains the public certificate of the DAS and the separate public
-certificate that is used by all instances. In addition, GlassFish Server
-includes a unique, generated "domain ID" that servers use to ensure that
-admin requests from other GlassFish Servers originate from the correct
-domain.
-
-** DAS-to-other-DAS communication is not authenticated because each
-different DAS will have its own self-signed certificate that is not in
-the truststore of the other DAS.
-
-** DAS-to-itself communication is unlikely unless you were to
-misconfigure the admin listener port for an instance on the same host so
-it is the same as for the DAS. Similarly, instance-to-instance traffic
-is unlikely unless you were to misconfigure listener ports for instances
-on the same host. +
-To prevent both of these situations, both cases are handled by making
-sure that the connecting Principal (alias) is not the running Principal.
-secure admin ensures that if the client has authenticated using SSL/TLS
-client authentication that the Principal associated with the remote
-client is not the same as the current process. That is, the DAS makes
-sure that the Principal is not itself. Similarly, each instance ensures
-that the client is not an instance. (The instances share the same
-self-signed certificate and therefore are mapped to the same Principal.)
-* Remote client-to-instance: +
-Remote `asadmin` clients are unable to connect directly to instances. If
-the user on host "test1" runs a local command but specifies a remote
-instance on host "test2," `asadmin` on test1 will read and send that
-locally-provisioned password. The instance on "test2" will have a
-different locally-provisioned password and so the authentication attempt
-will fail. +
-Therefore, a user on "test1" will not be able to run a remote command
-targeting an instance on "test2."
-
-[[gkofe]][[GSSCG00164]][[considerations-when-running-glassfish-server-with-default-security]]
-
-Considerations When Running GlassFish Server With Default Security
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-In GlassFish Server, the default admin account is username "admin" with
-an empty password. Admin clients provide empty credentials or none at
-all, and all are authenticated and authorized as that default admin
-user. None of the participants (clients, DAS, or instances) encrypts
-network messages.
-
-If this level of security is acceptable in your environment, no changes
-are needed and you do not need to enable secure administration. Imposing
-a heightened level of security is optional.
-
-However, consider link:#gkode[Table 5-2], which shows which operations
-are accepted and rejected when secure admin is disabled.
-
-
-[NOTE]
-=======================================================================
-
-When secure admin is disabled, GlassFish Server does allow remote
-monitoring (read-only) access via the REST interface.
-
-=======================================================================
-
-
-[[sthref37]][[gkode]]
-
-Table 5-2 Accepted and Rejected Operations if Secure Admin is Disabled
-
-[width="100%",cols="30%,25%,45%",options="header",]
-|=======================================================================
-|Operation |Run From Same System as DAS |Run From Remote System
-|`start-local-instance` |Functions as expected |Cannot sync with DAS.
-The instance starts but cannot communicate with the DAS. DAS will not
-see the instance.
-
-|Any other `asadmin` subcommand |Functions as expected |Rejected. A user
-sees the username/password prompt, but even correct entries are
-rejected.
-
-|Commands that use SSH. For example, `create-instance`. |Functions as
-expected; requires prior SSH configuration. |Functions as expected;
-requires prior SSH configuration.
-|=======================================================================
-
-
-[[gkomz]][[GSSCG00165]][[running-secure-admin]]
-
-Running Secure Admin
-~~~~~~~~~~~~~~~~~~~~
-
-This section describes how to run secure admin. The section begins with
-prerequisites for running secure admin.
-
-[[gkokc]][[GSSCG00234]][[prerequisites-for-running-secure-admin]]
-
-Prerequisites for Running Secure Admin
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Before running GlassFish Server with secure admin enabled, you must make
-sure that:
-
-1.  The DAS is installed, initialized, and running.
-2.  If one or more remote instances are installed and initialized, they
-must not be running.
-3.  Any administration clients you require are installed.
-4.  The DAS communicates on the `-—adminport` you configure when you
-create the domain, and defaults to 4848. An instance communicates on the
-`ASADMIN_LISTENER_PORT` system property you specify for the instance.
-5.  The user name and password sent by remote administration clients
-(`asadmin`, administration console, browsers, and IDEs) must exist in
-the realm and be in the admin group.
-6.  The keystore and truststore for the domain exist. (They are created
-by default when you create the domain or install GlassFish Server.) +
-If you are not using the default self-signed certificates, you must add
-your own valid certificates and CA root in the keystore and truststore,
-respectively.
-7.  If you are not using the default self-signed certificates, create
-two aliases corresponding to certificates in the keystore and
-truststore: one that the DAS will use for authenticating itself in
-administration traffic, and one that the instances will use for
-authenticating itself in administration traffic.
-
-[[glgmh]][[GSSCG00235]][[an-alternate-approach-using-a-user-name-and-password-for-internal-authentication-and-authorization]]
-
-An Alternate Approach: Using A User Name and Password for Internal
-Authentication and Authorization
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-By default, secure admin uses the GlassFish Server self-signed
-certificates, via the aliases corresponding to these certificates, to
-authenticate the DAS and instances with each other and to authorize
-secure admin operations. Specifically, the DAS uses the (`s1as`) alias
-for authenticating itself and authorizing access in administration
-traffic, and instances use the (`glassfish-instance`) alias for
-authenticating themselves and authorizing access in secure admin
-traffic.
-
-As described in link:#gkped[Using Your Own Certificates], you can
-instead use your own certificates and their associated aliases for
-authenticating and authorizing the DAS and instances in administration
-traffic.
-
-As an alternative to this certificate-based authentication and
-authorization, you can instead use the
-link:../reference-manual/enable-secure-admin-internal-user.html#GSRFM00130[`enable-secure-admin-internal-user`] subcommand to
-instruct all servers in the domain to authenticate to each other, and to
-authorize admin operations submitted to each other, using an existing
-admin user name and password rather than SSL certificates.
-
-
-[NOTE]
-=======================================================================
-
-If secure admin is enabled, all GlassFish Server processes continue to
-use SSL encryption to secure the content of the admin messages,
-regardless of how they authenticate to each other.
-
-=======================================================================
-
-
-You might want to use the
-link:../reference-manual/enable-secure-admin-internal-user.html#GSRFM00130[`enable-secure-admin-internal-user`] subcommand if your
-use case favors the use of a user name and password combination over the
-use of SSL certificates and aliases.
-
-This generally means that you must:
-
-1.  Create a valid admin user. +
-[source,oac_no_warn]
-----
-asadmin> create-file-user --authrealmname admin-realm --groups 
-asadmin newAdminUsername
-----
-2.  Create a password alias for the just-created password. +
-[source,oac_no_warn]
-----
-asadmin> create-password-alias passwordAliasName
-----
-3.  Use that user name and password for inter-process authentication and
-admin authorization. +
-[source,oac_no_warn]
-----
-asadmin> enable-secure-admin-internal-user 
---passwordalias passwordAliasName
-newAdminUsername
-----
-
-The following example allows secure admin to use a user name and
-password alias for authentication and authorization between the DAS and
-instances, instead of certificates.
-
-[source,oac_no_warn]
-----
-asadmin> enable-secure-admin-internal-user 
---passwordalias passwordAliasName
-newAdminUsername
-----
-
-If GlassFish Server finds at least one secure admin internal user, then
-if secure admin is enabled GlassFish Server processes will not use SSL
-authentication and authorization with each other and will instead use
-user name password pairs.
-
-Most users who use this subcommand will need to set up only one secure
-admin internal user. If you set up more than one secure admin internal
-user, you should not make any assumptions about which user name and
-password pair GlassFish Server will choose to use for any given admin
-request.
-
-As a general practice, you should not use the same user name and
-password pair for internal admin communication and for admin user login.
-That is, create at least one admin account specifically for internal
-admin communication.
-
-You can use the link:../reference-manual/disable-secure-admin-internal-user.html#GSRFM00122[`disable-secure-admin-internal-user`]
-subcommand to disable secure admin from using the user name (instead of
-SSL certificates) to authenticate the DAS and instances with each other
-and to authorize admin operations. To disable multiple user names for
-authenticating and authorizing access in secure admin, run the
-`disable-secure-admin-internal-user` subcommand multiple times.
-
-You can use the link:../reference-manual/list-secure-admin-internal-users.html#GSRFM00199[`list-secure-admin-internal-users`]
-subcommand to list the user names for which GlassFish Server
-authenticate the DAS and instances with each other and authorizes admin
-operations.
-
-[[gkqby]][[GSSCG00236]][[example-of-running-enable-secure-admin]]
-
-Example of Running enable-secure-admin
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The following example shows how to enable secure admin for a domain
-using the default admin alias and the default instance alias. You must
-restart the DAS immediately after enabling secure admin.
-
-
-[NOTE]
-=======================================================================
-
-The only indicator that secure admin is enabled is the successful status
-from the `enable-secure-admin` subcommand. When secure admin is running,
-the DAS and instances do not report the secure admin status.
-
-=======================================================================
-
-
-`asadmin>` `enable-secure-admin`
-
-`Command enable-secure-admin executed successfully.`
-
-The following example shows how to enable secure admin for a domain
-using an admin alias adtest and an instance alias intest. You can also
-use this command to modify an existing secure admin configuration to use
-different aliases.
-
-`asadmin>`
-`enable-secure-admin --adminalias adtest --instancealias intest`
-
-The following example shows how to disable secure admin:
-
-`asadmin>` `disable-secure-admin`
-
-`Command disable-secure-admin executed successfully.`
-
-You can use the following command to see the current state of secure
-admin in a domain:
-
-`asadmin>` `get secure-admin.enabled`
-
-`secure-admin.enabled=false`
-
-`Command get executed successfully.`
-
-[[gkolu]][[GSSCG00166]][[additional-considerations-when-creating-local-instances]]
-
-Additional Considerations When Creating Local Instances
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-If you use `xxx-local-instance` commands to set up local instances,
-either leave secure admin disabled, or enable it before you create or
-start the instances and leave it that way.
-
-However, if you use `xxx-instance` commands over SSH to manage remote
-instances, you can enable and disable secure admin, although this is not
-recommended because it can result in an inconsistent security model.
-
-[[gkqah]][[GSSCG00167]][[secure-admin-use-case]]
-
-Secure Admin Use Case
-~~~~~~~~~~~~~~~~~~~~~
-
-This section describes a simple secure admin use case.
-
-In the
-`asadmin --secure=false --user me --passwordfile myFile.txt cmd ...` use
-case, the user submits a command with `--secure` set to false, and
-supplies password credentials.
-
-The important concept to note is that `asadmin` uses HTTPS because of
-the DAS redirection, even though the command sets `--secure` to false.
-`asadmin` sends the HTTP Authorization header along with the redirected
-request.
-
-In addition to the flow described here, certificate authentication is
-also performed as described in link:#gkqax[Table 5-3]. Also, the
-credentials that the user supplies are assumed to be valid administrator
-credentials for the DAS.
-
-[[sthref38]][[gkqax]]
-
-Table 5-3 asadmin --secure=false, With Username and Password
-
-[width="100%",cols="34%,33%,33%",options="header",]
-|=======================================================================
-|asadmin |Grizzly |AdminAdapter
-|Sends HTTP request, no authorization header (because the transport is
-not secure). | + | +
-
-| + |Returns 3xx status and redirects HTTP to HTTPS. | +
-
-|Follows redirection, this time adding the Authorization header (because
-transport is now HTTPS). | + | +
-
-| + | + |Authenticates admin user and password from HTTP Authorization
-header in the realm Executes command, and responds with success status.
-|=======================================================================
-
-
-[[gkodn]][[GSSCG00168]][[upgrading-an-ssl-enabled-secure-glassfish-installation-to-secure-admin]]
-
-Upgrading an SSL-Enabled Secure GlassFish Installation to Secure Admin
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-If you enable secure admin on an SSL-enabled GlassFish Server
-installation, secure admin uses the existing <ssl cert-nickname> value
-as the DAS adminalias for secure admin.
-
-
diff --git a/docs/security-guide/src/main/jbake/content/loe.adoc b/docs/security-guide/src/main/jbake/content/loe.adoc
deleted file mode 100644
index 5e30ad0..0000000
--- a/docs/security-guide/src/main/jbake/content/loe.adoc
+++ /dev/null
@@ -1,61 +0,0 @@
-type=page
-status=published
-title=List of Examples
-next=lof.html
-prev=toc.html
-~~~~~~
-List of Examples
-================
-
-[[list-of-examples]]
-List of Examples
-----------------
-
-* link:system-security.html#gksel[1-1 Sample
-AppservCertificateLoginModule Code]
-* link:system-security.html#givil[1-2 Changing the Master Password]
-* link:system-security.html#ghlac[1-3 Changing the Admin Password]
-* link:system-security.html#ginvi[1-4 Creating a Password Alias]
-* link:system-security.html#ginsk[1-5 Listing Password Aliases]
-* link:system-security.html#ginul[1-6 Deleting a Password Alias]
-* link:system-security.html#giodl[1-7 Updating a Password Alias]
-* link:system-security.html#ghjlw[1-8 Creating an Audit Module]
-* link:system-security.html#ghjmy[1-9 Listing Audit Modules]
-* link:system-security.html#ghjhm[1-10 Deleting an Audit Module]
-* link:system-security.html#ghlii[1-11 Creating a Self-Signed Certificate
-in a JKS Keystore by Using an RSA Key Algorithm]
-* link:system-security.html#ghlew[1-12 Creating a Self-Signed Certificate
-in a JKS Keystore by Using a Default Key Algorithm]
-* link:system-security.html#ghldw[1-13 Displaying Available Certificates
-From a JKS Keystore]
-* link:system-security.html#ghlfd[1-14 Displaying Certificate information
-From a JKS Keystore]
-* link:system-security.html#ghlhu[1-15 Importing an RFC/Text-Formatted
-Certificate Into a JKS Keystore]
-* link:system-security.html#ghlim[1-16 Exporting a Certificate From a JKS
-Keystore in PKCS7 Format]
-* link:system-security.html#ghleb[1-17 Exporting a Certificate From a JKS
-Keystore in RFC/Text Format]
-* link:system-security.html#ghlgy[1-18 Deleting a Certificate From a JKS
-Keystore]
-* link:user-security.html#ggpjx[2-1 Creating a Realm]
-* link:user-security.html#ggpkw[2-2 Listing Realms]
-* link:user-security.html#ggpjf[2-3 Deleting a Realm]
-* link:user-security.html#ghysu[2-4 Assigning a Security Role]
-* link:user-security.html#ggpkq[2-5 Creating a User]
-* link:user-security.html#ggpgf[2-6 Listing File Users]
-* link:user-security.html#ghlgb[2-7 Listing Groups for a User]
-* link:user-security.html#ggpgh[2-8 Updating a User]
-* link:user-security.html#ggpib[2-9 Deleting a User]
-* link:message-security.html#gipxo[3-1 Message Security Policy Setting
-for Application Clients]
-* link:message-security.html#giosd[3-2 Creating a Message Security
-Provider]
-* link:message-security.html#gioui[3-3 Listing Message Security
-Providers]
-* link:message-security.html#gioug[3-4 Deleting a Message Security
-Provider]
-* link:message-security.html#gkxqz[3-5 Creating a Message Security
-Provider]
-
-
diff --git a/docs/security-guide/src/main/jbake/content/lof.adoc b/docs/security-guide/src/main/jbake/content/lof.adoc
deleted file mode 100644
index 594489d..0000000
--- a/docs/security-guide/src/main/jbake/content/lof.adoc
+++ /dev/null
@@ -1,18 +0,0 @@
-type=page
-status=published
-title=List of Figures
-next=lot.html
-prev=loe.html
-~~~~~~
-List of Figures
-===============
-
-[[list-of-figures]]
-List of Figures
----------------
-
-* link:system-security.html#fxjfw[1-1 Role Mapping]
-* link:administrative-security.html#gkqpv[5-1 Sample Browser Response to
-Untrusted Certificate]
-
-
diff --git a/docs/security-guide/src/main/jbake/content/lot.adoc b/docs/security-guide/src/main/jbake/content/lot.adoc
deleted file mode 100644
index 920fbe9..0000000
--- a/docs/security-guide/src/main/jbake/content/lot.adoc
+++ /dev/null
@@ -1,29 +0,0 @@
-type=page
-status=published
-title=List of Tables
-next=title.html
-prev=lof.html
-~~~~~~
-List of Tables
-==============
-
-[[list-of-tables]]
-List of Tables
---------------
-
-* link:message-security.html#fxjcu[3-1 Message Protection Policy Mapping
-to WS-Security SOAP Operations]
-* link:administrative-security.html#gkobl[5-1 Authentication Methods
-Employed]
-* link:administrative-security.html#gkode[5-2 Accepted and Rejected
-Operations if Secure Admin is Disabled]
-* link:administrative-security.html#gkqax[5-3 asadmin --secure=false,
-With Username and Password]
-* link:running-in-secure-environment.html#gksbt[6-1 Securing the
-GlassFish Server Host]
-* link:running-in-secure-environment.html#gkscz[6-2 Securing GlassFish
-Server]
-* link:running-in-secure-environment.html#gkscv[6-3 Securing
-Applications]
-
-
diff --git a/docs/security-guide/src/main/jbake/content/message-security.adoc b/docs/security-guide/src/main/jbake/content/message-security.adoc
deleted file mode 100644
index b1efd1b..0000000
--- a/docs/security-guide/src/main/jbake/content/message-security.adoc
+++ /dev/null
@@ -1,925 +0,0 @@
-type=page
-status=published
-title=Administering Message Security
-next=security-in-cluster-mode.html
-prev=user-security.html
-~~~~~~
-Administering Message Security
-==============================
-
-[[GSSCG00037]][[ablrk]]
-
-
-[[administering-message-security]]
-3 Administering Message Security
---------------------------------
-
-This chapter provides information and procedures on configuring the
-message layer security for web services in the GlassFish Server
-environment.
-
-
-[NOTE]
-=======================================================================
-
-Message security (JSR 196) is supported only in the Full Platform
-Profile of GlassFish Server, not in the Web Profile.
-
-=======================================================================
-
-
-The following topics are addressed here:
-
-* link:#ablrn[About Message Security in GlassFish Server]
-* link:#giood[Enabling Default Message Security Providers for Web
-Services]
-* link:#giouf[Configuring Message Protection Policies]
-* link:#giosl[Administering Non-default Message Security Providers]
-* link:#gdhgg[Enabling Message Security for Application Clients]
-* link:#gglrb[Additional Information About Message Security]
-
-Some of the material in this chapter assumes a basic understanding of
-security and web services concepts. For more information about security,
-see link:system-security.html#ggktf[About System Security in GlassFish
-Server].
-
-Instructions for accomplishing the tasks in this chapter by using the
-Administration Console are contained in the Administration Console
-online help.
-
-[[ablrn]][[GSSCG00153]][[about-message-security-in-glassfish-server]]
-
-About Message Security in GlassFish Server
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Message security enables a server to perform end-to-end authentication
-of web service invocations and responses at the message layer. Security
-information is inserted into messages so that it travels through the
-networking layers and arrives with the intact message at the message
-destination(s). Message security differs from transport layer security
-in that message security can be used to decouple message protection from
-message transport so that messages remain protected after transmission.
-
-Web services deployed on GlassFish Server are secured by binding SOAP
-layer message security providers and message protection policies to the
-containers in which the applications are deployed, or to web service
-endpoints served by the applications. SOAP layer message security
-functionality is configured in the client-side containers of GlassFish
-Server by binding SOAP layer message security providers and message
-protection policies to the client containers or to the portable service
-references declared by client applications.
-
-Message-level security can be configured for the entire GlassFish Server
-or for specific applications or methods. Configuring message security at
-the application level is discussed in the link:../application-development-guide/toc.html#GSDVG[GlassFish Server
-Open Source Edition Application Development Guide].
-
-The following topics are addressed here:
-
-* link:#ablrs[Security Tokens and Security Mechanisms]
-* link:#ablrx[Authentication Providers]
-* link:#ablrw[Message Protection Policies]
-* link:#ablrz[Application-Specific Web Services Security]
-* link:#gioom[Message Security Administration]
-* link:#ablsa[Sample Application for Web Services]
-
-[[ablrs]][[GSSCG00218]][[security-tokens-and-security-mechanisms]]
-
-Security Tokens and Security Mechanisms
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-WS-Security is a specification that provides a communications protocol
-for applying security to web services. The security mechanisms implement
-the specification. Web Services Interoperability Technologies (WSIT)
-implements WS-Security so as to provide interoperable message content
-integrity and confidentiality, even when messages pass through
-intermediary nodes before reaching their destination endpoint.
-WS-Security as provided by WSIT is in addition to existing
-transport-level security, which can still be used.
-
-The Simple Object Access Protocol (SOAP) layer message security
-providers installed with GlassFish Server can be used to employ
-username/password and X.509 certificate security tokens to authenticate
-and encrypt SOAP web services messages.
-
-* Username Tokens. GlassFish Server uses username tokens in SOAP
-messages to authenticate the message sender. The recipient of a message
-containing a username token (within embedded password) validates that
-the message sender is authorized to act as the user (identified in the
-token) by confirming that the sender knows the password of the user. +
-When using a username token, a valid user database must be configured on
-GlassFish Server.
-* Digital Signatures. GlassFish Server uses XML digital signatures to
-bind an authentication identity to message content. Clients use digital
-signatures to establish their caller identity. Digital signatures are
-verified by the message receiver to authenticate the source of the
-message content (which might be different from the sender of the
-message.) +
-When using digital signatures, valid keystore and truststore files must
-be configured on GlassFish Server.
-* Encryption. The purpose of encryption is to modify the data so that it
-can only be understood by its intended audience. This is accomplished by
-substituting an encrypted element for the original content. When based
-on public key cryptography, encryption can be used to establish the
-identity of the parties who are authorized to read a message. +
-When using encryption, a Java Cryptography Extension (JCE) provider that
-supports encryption must be installed.
-
-[[ablrx]][[GSSCG00219]][[authentication-providers]]
-
-Authentication Providers
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-The authentication layer is the message layer on which authentication
-processing must be performed. GlassFish Server enforces web services
-message security at the SOAP layer. The types of authentication that are
-supported include the following:
-
-* Sender authentication, including username-password authentication
-* Content authentication, including XML digital signatures
-
-GlassFish Server invokes authentication providers to process SOAP
-message layer security. The message security providers provide
-information such as the type of authentication that is required for the
-request and response messages. The following message security providers
-are included with GlassFish Server:
-
-* Client-side Provider. A client-side provider establishes (by signature
-or username/password) the source identity of request messages and/or
-protects (by encryption) request messages such that they can only be
-viewed by their intended recipients. A client-side provider also
-establishes its container as an authorized recipient of a received
-response (by successfully decrypting it) and validates passwords or
-signatures in the response to authenticate the source identity
-associated with the response. Client-side providers configured in
-GlassFish Server can be used to protect the request messages sent and
-the response messages received by server-side components (servlets and
-EJB components) acting as clients of other services. +
-The default client provider is used to identify the client—side provider
-to be invoked for any application for which a specific client provider
-has not been bound.
-* Server-side Provider. A server-side provider establishes its container
-as an authorized recipient of a received request (by successfully
-decrypting it), and validates passwords or signatures in the request to
-authenticate the source identity associated with the request. A
-server-side provider also establishes (by signature or
-username/password) the source identity of response messages and/or
-protects (by encryption) response messages such that they can only be
-viewed by their intended recipients. Server-side providers are only
-invoked by server-side containers.
-
-The default server provider is used to identify the server—side provider
-to be invoked for any application for which a specific server provider
-has not been bound.
-
-[[ablrw]][[GSSCG00220]][[message-protection-policies]]
-
-Message Protection Policies
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A request policy defines the authentication policy requirements
-associated with request processing performed by the authentication
-provider. Policies are expressed in message sender order such that a
-requirement that encryption occur after content would mean that the
-message receiver would expect to decrypt the message before validating
-the signature. The response policy defines the authentication policy
-requirements associated with response processing performed by the
-authentication provider.
-
-Message protection policies are defined for request message processing
-and response message processing. The policies are expressed in terms of
-requirements for source and/or recipient authentication. The providers
-apply specific message security mechanisms to cause the message
-protection policies to be realized in the context of SOAP web services
-messages.
-
-* Source Authentication Policy. A source authentication policy
-represents a requirement that the identity of the entity that sent a
-message or that defined the content of a message be established in the
-message such that it can be authenticated by the message receiver.
-* Recipient Authentication Policy. A recipient authentication policy
-represents a requirement that the message be sent such that the identity
-of the entities that can receive the message can be established by the
-message sender.
-
-Request and response message protection policies are defined when a
-security provider is configured into a container. Application-specific
-message protection policies (at the granularity of the web service port
-or operation) can also be configured within the GlassFish Server
-deployment descriptors of the application or application client. In any
-situation where message protection policies are defined, the request and
-response message protection policies of the client must be equivalent t)
-the request and response message protection policies of the server. For
-more information about defining application-specific message protection
-policies, see "link:../application-development-guide/securing-apps.html#GSDVG00006[Securing Applications]" in GlassFish
-Server Open Source Edition Application Development Guide.
-
-[[ablrz]][[GSSCG00221]][[application-specific-web-services-security]]
-
-Application-Specific Web Services Security
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Application-specific web services security functionality is configured
-(at application assembly) by defining the `message-security-binding`
-elements in the GlassFish Server deployment descriptors of the
-application. These `message-security-binding` elements are used to
-associate a specific security provider or message protection policy with
-a web service endpoint or service reference, and might be qualified so
-that they apply to a specific port or method of the corresponding
-endpoint or referenced service.
-
-For information about defining application-specific message protection
-policies, see "link:../application-development-guide/securing-apps.html#GSDVG00006[Securing Applications]" in GlassFish
-Server Open Source Edition Application Development Guide.
-
-[[gioom]][[GSSCG00222]][[message-security-administration]]
-
-Message Security Administration
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-When GlassFish Server is installed, SOAP layer message security
-providers are configured in the client and server-side containers of
-GlassFish Server, where they are available for binding for use by the
-containers, or by individual applications or clients deployed in the
-containers. During installation, the default providers are configured
-with a simple message protection policy that, if bound to a container,
-or to an application or client in a container, would cause the source of
-the content in all request and response messages to be authenticated by
-XML digital signature.
-
-GlassFish Server administrative interfaces can be used as follows:
-
-* To modify the message protection policies enforced by the providers
-* To bind the existing providers for use by the server-side containers
-of GlassFish Server
-* To create new security provider configurations with alternative
-message protection policies
-
-Analogous administrative operations can be performed on the SOAP message
-layer security configuration of the application client container. If you
-want web services security to protect all web services applications
-deployed on GlassFish Server. See link:#gdhgg[Enabling Message Security
-for Application Clients].
-
-By default, message layer security is disabled on GlassFish Server. To
-configure message layer security for the GlassFish Server see
-link:#giood[Enabling Default Message Security Providers for Web
-Services].
-
-In most cases, you must restart GlassFish Server after performing
-administrative tasks. This is especially true if you want the effects of
-the administrative change to be applied to applications that were
-already deployed on GlassFish Server at the time the operation was
-performed.
-
-[[giose]][[GSSCG00199]][[message-security-tasks]]
-
-Message Security Tasks
-++++++++++++++++++++++
-
-The general implementation tasks for message security include some or
-all of the following:
-
-1.  If you are using a version of the Java SDK prior to version 1.5.0,
-and using encryption technology, configuring a JCE provider
-2.  If you are using a username token, verifying that a user database is
-configured for an appropriate realm +
-When using a username/password token, an appropriate realm must be
-configured and a user database must be configured for the realm.
-3.  Managing certificates and private keys, if necessary
-4.  Enabling the GlassFish Server default providers
-5.  Configuring new message security providers
-
-[[ablro]][[GSSCG00200]][[message-security-roles]]
-
-Message Security Roles
-++++++++++++++++++++++
-
-In GlassFish Server, the administrator and the application deployer are
-expected to take primary responsibility for configuring message
-security. In some situations, the application developer might also
-contribute.
-
-[[ablrp]][[GSSCG00057]][[system-administrator]]
-
-System Administrator
-
-The system administrator is responsible for the following message
-security tasks:
-
-* Administering server security settings and certificate databases
-* Administering keystore and truststore files
-* Configuring message security providers on GlassFish Server
-* Turning on message security
-* (If needed) Installing the samples server
-
-[[ablrq]][[GSSCG00058]][[application-deployer]]
-
-Application Deployer
-
-The application deployer is responsible for the following message
-security tasks:
-
-* Specifying (at application reassembly) any required
-application-specific message protection policies if such policies have
-not already been specified by the developer/assembler.
-* Modifying GlassFish Server deployment descriptors to specify
-application-specific message protection policies information
-(message-security-binding elements) to web service endpoint and service
-references.
-
-[[ablrr]][[GSSCG00059]][[application-developerassembler]]
-
-Application Developer/Assembler
-
-The application developer/assembler is responsible for the following
-message security tasks:
-
-* Determining if an application-specific message protection policy is
-required by the application +
-If so, the developer ensures that the required policy is specified at
-application assembly time.
-* Specifying how web services should be set up for message security +
-Message security can be set up by the administrator so that all web
-services are secured, or by the application deployer when the security
-provider or protection policy bound to the application must be different
-from that bound to the container.
-* Turning on message security if authorized to do so by the
-administrator
-
-[[ablsa]][[GSSCG00223]][[sample-application-for-web-services]]
-
-Sample Application for Web Services
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-GlassFish Server includes a sample application named `xms`. The `xms`
-application features a simple web service that is implemented by both a
-Java EE EJB endpoint and a Java servlet endpoint. Both endpoints share
-the same service endpoint interface. The service endpoint interface
-defines a single operation, `sayHello`, which takes a string argument,
-and returns a `String` composed by pre-pending `Hello` to the invocation
-argument.
-
-The `xms` sample application is provided to demonstrate the use of
-GlassFish Server WS-Security functionality to secure an existing web
-services application. The instructions which accompany the sample
-describe how to enable the WS-Security functionality of GlassFish Server
-such that it is used to secure the `xms` application. The sample also
-demonstrates the binding of WS-Security functionality directly to the
-application as described in link:#ablrz[Application-Specific Web
-Services Security] application.
-
-For information about compiling, packaging, and running the `xms` sample
-application, "link:../application-development-guide/securing-apps.html#GSDVG00006[Securing Applications]" in GlassFish
-Server Open Source Edition Application Development Guide.
-
-The `xms` sample application is installed in the following directory:
-as-install`/samples/webservices/security/ejb/apps/xms/`
-
-[[giood]][[GSSCG00154]][[enabling-default-message-security-providers-for-web-services]]
-
-Enabling Default Message Security Providers for Web Services
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-By default, message security is disabled on GlassFish Server. Default
-message security providers have been created, but are not active until
-you enable them. After the providers have been enabled, message security
-is enabled.
-
-The following topics are addressed here:
-
-* link:#giork[To Enable a Default Server Provider]
-* link:#giort[To Enable a Default Client Provider]
-
-[[giork]][[GSSCG00123]][[to-enable-a-default-server-provider]]
-
-To Enable a Default Server Provider
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To enable message security for web services endpoints deployed in
-GlassFish Server, you must specify a security provider to be used by
-default on the server side. If you enable a default provider for message
-security, you also need to enable providers to be used by clients of the
-web services deployed in GlassFish Server.
-
-1.  Specify the default server provider by using the
-link:../reference-manual/set.html#GSRFM00226[`set`] subcommand. +
-Use the following syntax: +
-[source,oac_no_warn]
-----
-asadmin set --port admin-port 
-server-config.security-service.message-security-config.SOAP.
-default_provider=ServerProvider
-----
-2.  To apply your changes to applications that are already running,
-restart GlassFish Server. +
-See "link:../administration-guide/domains.html#GSADG00337[To Restart a Domain]" in GlassFish Server Open
-Source Edition Administration Guide.
-
-[[giort]][[GSSCG00124]][[to-enable-a-default-client-provider]]
-
-To Enable a Default Client Provider
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To enable message security for web service invocations originating from
-deployed endpoints, you must specify a default client provider. If you
-enabled a default client provider for GlassFish Server, you must ensure
-that any services invoked from endpoints deployed in GlassFish Server
-are compatibly configured for message layer security.
-
-1.  Specify the default client provider by using the
-link:../reference-manual/set.html#GSRFM00226[`set`] subcommand. +
-Use the following syntax: +
-[source,oac_no_warn]
-----
-asadmin set --port admin-port 
-server-config.security-service.message-security-config.SOAP.
-default_client_provider=ClientProvider
-----
-2.  To apply your changes to applications that are already running,
-restart GlassFish Server. +
-See "link:../administration-guide/domains.html#GSADG00337[To Restart a Domain]" in GlassFish Server Open
-Source Edition Administration Guide.
-
-[[giouf]][[GSSCG00155]][[configuring-message-protection-policies]]
-
-Configuring Message Protection Policies
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Message protection policies are defined for request message processing
-and response message processing. The policies are expressed in terms of
-requirements for source and/or recipient authentication. The providers
-apply specific message security mechanisms to cause the message
-protection policies to be realized in the context of SOAP web services
-messages.
-
-The following topics are addressed here:
-
-* link:#giraj[Message Protection Policy Mapping]
-* link:#gioqu[To Configure the Message Protection Policies for a
-Provider]
-* link:#ablsl[Setting the Request and Response Policy for the
-Application Client Configuration]
-
-[[giraj]][[GSSCG00224]][[message-protection-policy-mapping]]
-
-Message Protection Policy Mapping
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The following table shows message protection policy configurations and
-the resulting message security operations performed by the WS-Security
-SOAP message security providers for that configuration.
-
-[[sthref30]][[fxjcu]]
-
-Table 3-1 Message Protection Policy Mapping to WS-Security SOAP
-Operations
-
-[width="100%",cols="34%,66%",options="header",]
-|=======================================================================
-|Message Protection Policy |Resulting WS-Security SOAP Message
-Protection Operations
-|auth-source="sender" |The message contains a `wsse:Security` header
-that contains a `wsse:UsernameToken` (with password).
-
-|auth-source="content" |The content of the SOAP message Body is signed.
-The message contains a `wsse:Security` header that contains the message
-Body signature represented as a `ds`:`Signature`.
-
-a|
-auth-source="sender"
-
-auth-recipient="before-content"
-
-OR
-
-auth-recipient="after-content"
-
- |The content of the SOAP message Body is encrypted and replaced with
-the resulting `xend:EncryptedData`. The message contains
-`a wsse:Security` header that contains a
-`wsse:UsernameToken (with password)` and an `xenc:EncryptedKey`. The
-`xenc:EncryptedKey` contains the key used to encrypt the SOAP message
-body. The key is encrypted in the public key of the recipient.
-
-a|
-auth-source="content"
-
-auth-recipient="before-content"
-
- |The content of the SOAP message Body is encrypted and replaced with
-the resulting `xend:EncryptedData`. The `xenc:EncryptedData` is signed.
-The message contains `a wsse:Security` header that contains an
-`xenc:EncryptedKey` and a `ds`:`Signature`. The `xenc:EncryptedKey`
-contains the key used to encrypt the SOAP message body. The key is
-encrypted in the public key of the recipient.
-
-a|
-auth-source="content"
-
-auth-recipient="after-content"
-
- |The content of the SOAP message Body is signed, then encrypted, and
-then replaced with the resulting `xend:EncryptedData`. The message
-contains a `wsse:Security` header that contains an `xenc:EncryptedKey`
-and a `ds:Signature`. The `xenc:EncryptedKey` contains the key used to
-encrypt the SOAP message body. The key is encrypted in the public key of
-the recipient.
-
-a|
-auth-recipient="before-content"
-
-OR
-
-auth-recipient="after-content"
-
- |The content of the SOAP message Body is encrypted and replaced with
-the resulting `xend:EncryptedData`. The message contains
-`a wsse:Security` header that contains an `xenc:EncryptedKey`. The
-`xenc:EncryptedKey` contains the key used to encrypt the SOAP message
-body. The key is encrypted in the public key of the recipient.
-
-|No policy specified. |No security operations are performed by the
-modules.
-|=======================================================================
-
-
-[[gioqu]][[GSSCG00125]][[to-configure-the-message-protection-policies-for-a-provider]]
-
-To Configure the Message Protection Policies for a Provider
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Typically, you would not reconfigure a provider. However, if needed for
-your situation, you can modify a provider's message protection policies
-by changing provider type, implementation class, and provider-specific
-configuration properties. To understand the results of different
-combinations, see link:#fxjcu[Table 3-1].
-
-Use the link:../reference-manual/set.html#GSRFM00226[`set`] subcommand to set the response policy,
-then replace the word `request` in the following commands with the word
-`response`.
-
-1.  Add a request policy to the client and set the authentication source
-by using the link:../reference-manual/set.html#GSRFM00226[`set`] subcommand. +
-For example: +
-[source,oac_no_warn]
-----
-asadmin> set server-config.security-service.message-security-config.SOAP.
-provider-config.ClientProvider.request-policy.auth_source=[sender | content]
-----
-2.  Add a request policy to the server and set the authentication source
-by using the `set` subcommand. +
-For example: +
-[source,oac_no_warn]
-----
-asadmin> set server-config.security-service.message-security-config.SOAP.
-provider-config.ServerProvider.request-policy.auth_source=[sender | content]
-----
-3.  Add a request policy to the client and set the authentication
-recipient by using the `set` subcommand: +
-For example: +
-[source,oac_no_warn]
-----
-asadmin> set server-config.security-service.message-security-config.SOAP.
-provider-config.ClientProvider.request-policy.auth_recipient=[before-content | after-content]
-----
-4.  Add a request policy to the server and set the authentication
-recipient by using the `set` subcommand: +
-For example: +
-[source,oac_no_warn]
-----
-asadmin> set server-config.security-service.message-security-config.SOAP.
-provider-config.ServerProvider.request-policy.auth_recipient=[before-content | after-content]
-----
-
-[[ablsl]][[GSSCG00225]][[setting-the-request-and-response-policy-for-the-application-client-configuration]]
-
-Setting the Request and Response Policy for the Application Client
-Configuration
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The request and response policies define the authentication policy
-requirements associated with request and response processing performed
-by the authentication provider. Policies are expressed in message sender
-order such that a requirement that encryption occur after content would
-mean that the message receiver would expect to decrypt the message
-before validating the signature.
-
-To achieve message security, the request and response policies must be
-enabled on both the server and client. When configuring the policies on
-the client and server, make sure that the client policy matches the
-server policy for request/response protection at application-level
-message binding.
-
-To set the request policy for the application client configuration,
-modify the GlassFish Server-specific configuration for the application
-client container as described in link:#gdhgg[Enabling Message Security
-for Application Clients].
-
-[[GSSCG00088]][[gipxo]]
-
-
-Example 3-1 Message Security Policy Setting for Application Clients
-
-In the application client configuration file, the `request-policy` and
-`response-policy` elements are used to set the request policy, as shown
-in the following code snippet. (Additional code in the snippet is
-provided as illustration and might differ slightly in your installation.
-Do not change the additional code.)
-
-[source,oac_no_warn]
-----
-<client-container>
-  <target-server name="your-host" address="your-host"
-      port="your-port"/>
-  <log-service file="" level="WARNING"/>
-  <message-security-config auth-layer="SOAP"
-      default-client-provider="ClientProvider">
-    <provider-config
-        class-name="com.sun.enterprise.security.jauth.ClientAuthModule"
-        provider-id="clientprovider" provider-type="client">
-      <request-policy auth-source="sender | content"
-        auth-recipient="after-content | before-content"/>
-      <response-policy auth-source="sender | content"
-        auth-recipient="after-content | before-content"/>
-       <property name="security.config"
-           value="as-install/lib/appclient/wss-client-config.xml"/>
-    </provider-config>
-  </message-security-config>
-</client-container>
-----
-
-Valid values for `auth-source` include `sender` and `content`. Valid
-values for `auth-recipient` include `before-content` and
-`after-content`. A table describing the results of various combinations
-of these values can be found in link:#giouf[Configuring Message
-Protection Policies].
-
-To not specify a request or response policy, leave the element blank,
-for example:
-
-[source,oac_no_warn]
-----
-<response-policy/>
-----
-
-[[giosl]][[GSSCG00156]][[administering-non-default-message-security-providers]]
-
-Administering Non-default Message Security Providers
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following topics are addressed here:
-
-* link:#giory[To Create a Message Security Provider]
-* link:#giotv[To List Message Security Providers]
-* link:#giwkd[To Update a Message Security Provider]
-* link:#giorr[To Delete a Message Security Provider]
-* link:#gkxru[To Configure a Servlet Layer Server Authentication Module
-(SAM)]
-
-[[giory]][[GSSCG00126]][[to-create-a-message-security-provider]]
-
-To Create a Message Security Provider
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `create-message-security-provider` subcommand in remote mode to
-create a new message provider for the security service. If the message
-layer does not exist, the message layer is created, and the provider is
-created under it.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Create the message security provider by using the
-link:../reference-manual/create-message-security-provider.html#GSRFM00045[`create-message-security-provider`] subcommand. +
-Information about properties for this subcommand is included in the help
-page.
-3.  If needed, restart the server. +
-Some properties require server restart. See
-"link:../administration-guide/overview.html#GSADG00628[Configuration Changes That Require Restart]" in
-GlassFish Server Open Source Edition Administration Guide. If your
-server needs to be restarted, see "link:../administration-guide/domains.html#GSADG00337[To Restart a
-Domain]" in GlassFish Server Open Source Edition Administration Guide.
-
-[[GSSCG00089]][[giosd]]
-
-
-Example 3-2 Creating a Message Security Provider
-
-This example creates the new message security provider
-`mySecurityProvider`.
-
-[source,oac_no_warn]
-----
-asadmin> create-message-security-provider 
---classname com.sun.enterprise.security.jauth.ClientAuthModule
---providertype client mySecurityProvider
-Command create-message-security-provider executed successfully.
-----
-
-[[sthref31]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-message-security-provider` at the command
-line.
-
-[[giotv]][[GSSCG00127]][[to-list-message-security-providers]]
-
-To List Message Security Providers
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `list-message-security-providers` subcommand in remote mode to
-list the message providers for the security layer.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the message security providers by using the
-link:../reference-manual/list-message-security-providers.html#GSRFM00184[`list-message-security-providers`] subcommand.
-
-[[GSSCG00090]][[gioui]]
-
-
-Example 3-3 Listing Message Security Providers
-
-This example lists the message security providers for a message layer.
-
-[source,oac_no_warn]
-----
-asadmin> list-message-security-providers --layer SOAP
-XWS_ClientProvider 
-ClientProvider
-XWS_ServerProvider
-ServerProvider
-Command list-message-security-providers executed successfully.
-----
-
-[[sthref32]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-message-security-providers` at the command
-line.
-
-[[giwkd]][[GSSCG00128]][[to-update-a-message-security-provider]]
-
-To Update a Message Security Provider
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the message security providers by using the
-link:../reference-manual/list-message-security-providers.html#GSRFM00184[`list-message-security-providers`] subcommand.
-3.  Modify the values for the specified message security provider by
-using the link:../reference-manual/set.html#GSRFM00226[`set`] subcommand. +
-The message security provider is identified by its dotted name.
-
-[[giorr]][[GSSCG00129]][[to-delete-a-message-security-provider]]
-
-To Delete a Message Security Provider
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `delete-message-security-provider` subcommand in remote mode to
-remove a message security provider.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the message security providers by using the
-link:../reference-manual/list-message-security-providers.html#GSRFM00184[`list-message-security-providers`] subcommand.
-3.  Delete the message security provider by using the
-link:../reference-manual/delete-message-security-provider.html#GSRFM00097[`delete-message-security-provider`] subcommand.
-
-[[GSSCG00091]][[gioug]]
-
-
-Example 3-4 Deleting a Message Security Provider
-
-This example deletes the `myServerityProvider` message security
-provider.
-
-[source,oac_no_warn]
-----
-asadmin> delete-message-security-provider --layer SOAP myServerityProvider
-Command delete-message-security-provider executed successfully.
-----
-
-[[sthref33]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-message-security-provider` at the command
-line.
-
-[[gkxru]][[GSSCG00130]][[to-configure-a-servlet-layer-server-authentication-module-sam]]
-
-To Configure a Servlet Layer Server Authentication Module (SAM)
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-You configure a JSR 196 Server Authentication Module (SAM) as an
-HttpServlet-layer message security provider, either through the
-Administration Console or with the `create-message-security-provider`
-subcommand.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Create the message security provider by using the
-link:../reference-manual/create-message-security-provider.html#GSRFM00045[`create-message-security-provider`] subcommand. +
-Information about properties for this subcommand is included in the help
-page.
-3.  Bind the message security provider for use with your application. +
-You do this by defining the `httpservlet-security-provider` attribute in
-the `glassfish-web.xml` file corresponding to your application. Set the
-value of the attribute to the provider name you assigned to the message
-security provider. For example, if you use MySAM when you create the
-message security provider the entry would be
-httpservlet-security-provider="MySAM".
-4.  If needed, restart the server. +
-Some properties require server restart. See
-"link:../administration-guide/overview.html#GSADG00628[Configuration Changes That Require Restart]" in
-GlassFish Server Open Source Edition Administration Guide. If your
-server needs to be restarted, see "link:../administration-guide/domains.html#GSADG00337[To Restart a
-Domain]" in GlassFish Server Open Source Edition Administration Guide.
-
-[[GSSCG00092]][[gkxqz]]
-
-
-Example 3-5 Creating a Message Security Provider
-
-This example creates the new message security provider `mySAM`.
-
-[source,oac_no_warn]
-----
-asadmin> create-message-security-provider --layer=HttpServlet
---classname com.sun.glassfish.oamsam.OAMAuthenticatorSAM
---providertype server
---property oam.resource.hostid.variation="your-host-system.com" mySAM
-Creation of message security provider named mySAM completed successfully
-Command create-message-security-provider executed successfully.
-----
-
-The subcommand results in the following `domain.xml` entry:
-
-[source,oac_no_warn]
-----
-<message-security-config auth-layer="HttpServlet">
-<provider-config provider-type="server" provider-id="mysam" 
-class-name="com.sun.glassfish.oamsam.OAMAuthenticatorSAM">
-            <property name="oam.resource.hostid.variation" value="your-host-system.com"></property>
-            <request-policy></request-policy>
-            <response-policy></response-policy>
-          </provider-config>
-</message-security-config>
-----
-
-To list the HttpServlet message security providers, use the
-`list-message-security-providers` subcommand:
-
-[source,oac_no_warn]
-----
-asadmin> list-message-security-providers --layer HttpServlet
-list-message-security-providers successful
-GFConsoleAuthModule
-mySAM
-Command list-message-security-providers executed successfully.
-----
-
-[[sthref34]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-message-security-provider` at the command
-line.
-
-[[gdhgg]][[GSSCG00157]][[enabling-message-security-for-application-clients]]
-
-Enabling Message Security for Application Clients
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The message protection policies of client providers must be configured
-such that they are equivalent to the message protection policies of the
-server-side providers they will be interacting with. This is already the
-situation for the providers configured (but not enabled) when GlassFish
-Server is installed.
-
-To enable message security for client applications, modify the GlassFish
-Server specific configuration for the application client container. The
-process is analogous to the process in link:#giouf[Configuring Message
-Protection Policies].
-
-[[gglrb]][[GSSCG00158]][[additional-information-about-message-security]]
-
-Additional Information About Message Security
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-For additional information about message security, see the following
-documentation:
-
-* "http://docs.oracle.com/javaee/7/tutorial/doc/security-intro.html[Introduction
-to Security in the Java EE Platform]" in The Java EE 8 Tutorial
-* "link:../application-development-guide/securing-apps.html#GSDVG00006[Securing Applications]" in GlassFish Server Open
-Source Edition Application Development Guide
-
-
diff --git a/docs/security-guide/src/main/jbake/content/preface.adoc b/docs/security-guide/src/main/jbake/content/preface.adoc
deleted file mode 100644
index 4ee003e..0000000
--- a/docs/security-guide/src/main/jbake/content/preface.adoc
+++ /dev/null
@@ -1,343 +0,0 @@
-type=page
-status=published
-title=Preface
-next=system-security.html
-prev=title.html
-~~~~~~
-Preface
-=======
-
-[[sthref2]][[preface]]
-
-Preface
--------
-
-[NOTE]
-========================================================================
-
-This documentation is part of the Java Enterprise Edition contribution 
-to the Eclipse Foundation and is not intended for use in relation to 
-Java Enterprise Edition or Orace GlassFish. The documentation is in the 
-process of being revised to reflect the new Jakarta EE branding. 
-Additional changes will be made as requirements and procedures evolve 
-for Jakarta EE. Where applicable, references to Java EE or Java 
-Enterprise Edition should be considered references to Jakarta EE. 
-
-Please see the Title page for additional license information.
-========================================================================
-
-The GlassFish Server Open Source Edition Security Guide provides
-instructions for configuring and administering GlassFish Server
-security.
-
-This preface contains information about and conventions for the entire
-GlassFish Server Open Source Edition (GlassFish Server) documentation
-set.
-
-GlassFish Server 5.0 is developed through the GlassFish project
-open-source community at `https://javaee.github.io/glassfish/`. The
-GlassFish project provides a structured process for developing the
-GlassFish Server platform that makes the new features of the Java EE
-platform available faster, while maintaining the most important feature
-of Java EE: compatibility. It enables Java developers to access the
-GlassFish Server source code and to contribute to the development of the
-GlassFish Server. The GlassFish project is designed to encourage
-communication between Oracle engineers and the community.
-
-The following topics are addressed here:
-
-* link:#ghpbz[GlassFish Server Documentation Set]
-* link:#giprl[Related Documentation]
-* link:#fwbkx[Typographic Conventions]
-* link:#fquvc[Symbol Conventions]
-* link:#ghpfg[Default Paths and File Names]
-
-[[GSSCG00135]][[ghpbz]]
-
-
-[[glassfish-server-documentation-set]]
-GlassFish Server Documentation Set
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The GlassFish Server documentation set describes deployment planning and
-system installation. For an introduction to GlassFish Server, refer to
-the books in the order in which they are listed in the following table.
-
-[width="100%",cols="30%,70%",options="header",]
-|=======================================================================
-|Book Title |Description
-|link:../release-notes/toc.html#GSRLN[Release Notes] |Provides late-breaking information about
-the software and the documentation and includes a comprehensive,
-table-based summary of the supported hardware, operating system, Java
-Development Kit (JDK), and database drivers.
-
-|link:../quick-start-guide/toc.html#GSQSG[Quick Start Guide] |Explains how to get started with the
-GlassFish Server product.
-
-|link:../installation-guide/toc.html#GSING[Installation Guide] |Explains how to install the software
-and its components.
-
-|link:../upgrade-guide/toc.html#GSUPG[Upgrade Guide] |Explains how to upgrade to the latest
-version of GlassFish Server. This guide also describes differences
-between adjacent product releases and configuration options that can
-result in incompatibility with the product specifications.
-
-|link:../deployment-planning-guide/toc.html#GSPLG[Deployment Planning Guide] |Explains how to build a
-production deployment of GlassFish Server that meets the requirements of
-your system and enterprise.
-
-|link:../administration-guide/toc.html#GSADG[Administration Guide] |Explains how to configure, monitor,
-and manage GlassFish Server subsystems and components from the command
-line by using the link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`] utility. Instructions for
-performing these tasks from the Administration Console are provided in
-the Administration Console online help.
-
-|link:../security-guide/toc.html#GSSCG[Security Guide] |Provides instructions for configuring and
-administering GlassFish Server security.
-
-|link:../application-deployment-guide/toc.html#GSDPG[Application Deployment Guide] |Explains how to assemble and
-deploy applications to the GlassFish Server and provides information
-about deployment descriptors.
-
-|link:../application-development-guide/toc.html#GSDVG[Application Development Guide] |Explains how to create and
-implement Java Platform, Enterprise Edition (Java EE platform)
-applications that are intended to run on the GlassFish Server. These
-applications follow the open Java standards model for Java EE components
-and application programmer interfaces (APIs). This guide provides
-information about developer tools, security, and debugging.
-
-| |
-
-|link:../embedded-server-guide/toc.html#GSESG[Embedded Server Guide] |Explains how to run applications in
-embedded GlassFish Server and to develop applications in which GlassFish
-Server is embedded.
-
-|link:../ha-administration-guide/toc.html#GSHAG[High Availability Administration Guide] |Explains how to
-configure GlassFish Server to provide higher availability and
-scalability through failover and load balancing.
-
-|link:../performance-tuning-guide/toc.html#GSPTG[Performance Tuning Guide] |Explains how to optimize the
-performance of GlassFish Server.
-
-|link:../troubleshooting-guide/toc.html#GSTSG[Troubleshooting Guide] |Describes common problems that you
-might encounter when using GlassFish Server and explains how to solve
-them.
-
-|link:../error-messages-reference/toc.html#GSEMR[Error Message Reference] |Describes error messages that you
-might encounter when using GlassFish Server.
-
-|link:../reference-manual/toc.html#GSRFM[Reference Manual] |Provides reference information in man
-page format for GlassFish Server administration commands, utility
-commands, and related concepts.
-
-|link:../../openmq/mq-release-notes/toc.html#GMRLN[Message Queue Release Notes] |Describes new features,
-compatibility issues, and existing bugs for Open Message Queue.
-
-|link:../../openmq/mq-tech-over/toc.html#GMTOV[Message Queue Technical Overview] |Provides an introduction
-to the technology, concepts, architecture, capabilities, and features of
-the Message Queue messaging service.
-
-|link:../../openmq/mq-admin-guide/toc.html#GMADG[Message Queue Administration Guide] |Explains how to set up
-and manage a Message Queue messaging system.
-
-|link:../../openmq/mq-dev-guide-jmx/toc.html#GMJMG[Message Queue Developer's Guide for JMX Clients] |Describes
-the application programming interface in Message Queue for
-programmatically configuring and monitoring Message Queue resources in
-conformance with the Java Management Extensions (JMX).
-
-|link:../../openmq/mq-dev-guide-java/toc.html#GMJVG[Message Queue Developer's Guide for Java Clients] |Provides
-information about concepts and procedures for developing Java messaging
-applications (Java clients) that work with GlassFish Server.
-
-|link:../../openmq/mq-dev-guide-c/toc.html#GMCCG[Message Queue Developer's Guide for C Clients] |Provides
-programming and reference information for developers working with
-Message Queue who want to use the C language binding to the Message
-Queue messaging service to send, receive, and process Message Queue
-messages.
-|=======================================================================
-
-
-[[GSSCG00136]][[giprl]]
-
-
-[[related-documentation]]
-Related Documentation
-~~~~~~~~~~~~~~~~~~~~~
-
-The following tutorials explain how to develop Java EE applications:
-
-* http://docs.oracle.com/javaee/7/firstcup/doc/home.html[Your First Cup:
-An Introduction to the Java EE Platform]
-(`(https://javaee.github.io/firstcup/`). For beginning Java EE
-programmers, this short tutorial explains the entire process for
-developing a simple enterprise application. The sample application is a
-web application that consists of a component that is based on the
-Enterprise JavaBeans specification, a JAX-RS web service, and a
-JavaServer Faces component for the web front end.
-* http://docs.oracle.com/javaee/7/tutorial/doc/home.html[The Java EE 8
-Tutorial] (`https://javaee.github.io/tutorial/`). This comprehensive
-tutorial explains how to use Java EE 8 platform technologies and APIs to
-develop Java EE applications.
-
-Javadoc tool reference documentation for packages that are provided with
-GlassFish Server is available as follows.
-
-* The API specification for version 8 of Java EE is located at
-`https://javaee.github.io/javaee-spec/`.
-* The API specification for GlassFish Server 5.0, including Java EE 8
-platform packages and nonplatform packages that are specific to the
-GlassFish Server product, is located at
-`https://javaee.github.io/glassfish/documentation`.
-
-Additionally, the
-http://www.oracle.com/technetwork/java/javaee/tech/index.html[Java EE
-Specifications] (`https://javaee.github.io/javaee-spec/`) might be
-useful.
-
-For information about creating enterprise applications in the NetBeans
-Integrated Development Environment (IDE), see the
-http://www.netbeans.org/kb/[NetBeans Documentation, Training & Support
-page] (`http://www.netbeans.org/kb/`).
-
-For information about the Apache Derby database for use with the
-GlassFish Server, see the https://db.apache.org/derby/[Apache Derby
-product page] (`https://db.apache.org/derby/`).
-
-The Java EE Samples project is a collection of sample applications that
-demonstrate a broad range of Java EE technologies. The Java EE Samples
-are bundled with the Java EE Software Development Kit (SDK) and are also
-available from the http://glassfish-samples.java.net/[Java EE Samples
-project page] (`https://github.com/javaee/glassfish-samples`).
-
-[[GSSCG00137]][[fwbkx]]
-
-
-[[typographic-conventions]]
-Typographic Conventions
-~~~~~~~~~~~~~~~~~~~~~~~
-
-The following table describes the typographic changes that are used in
-this book.
-
-[width="100%",cols="14%,37%,49%",options="header",]
-|=======================================================================
-|Typeface |Meaning |Example
-|`AaBbCc123` |The names of commands, files, and directories, and
-onscreen computer output a|
-Edit your `.login` file.
-
-Use `ls` `a` to list all files.
-
-`machine_name% you have mail.`
-
-|`AaBbCc123` |What you type, contrasted with onscreen computer output a|
-`machine_name%` `su`
-
-`Password:`
-
-|AaBbCc123 |A placeholder to be replaced with a real name or value |The
-command to remove a file is `rm` filename.
-
-|AaBbCc123 |Book titles, new terms, and terms to be emphasized (note
-that some emphasized items appear bold online) a|
-Read Chapter 6 in the User's Guide.
-
-A cache is a copy that is stored locally.
-
-Do not save the file.
-
-|=======================================================================
-
-
-[[GSSCG00138]][[fquvc]]
-
-
-[[symbol-conventions]]
-Symbol Conventions
-~~~~~~~~~~~~~~~~~~
-
-The following table explains symbols that might be used in this book.
-
-[width="100%",cols="10%,26%,28%,36%",options="header",]
-|=======================================================================
-|Symbol |Description |Example |Meaning
-|`[ ]` |Contains optional arguments and command options. |`ls [-l]` |The
-`-l` option is not required.
-
-|`{ \| }` |Contains a set of choices for a required command option.
-|`-d {y\|n}` |The `-d` option requires that you use either the `y`
-argument or the `n` argument.
-
-|`${ }` |Indicates a variable reference. |`${com.sun.javaRoot}`
-|References the value of the `com.sun.javaRoot` variable.
-
-|- |Joins simultaneous multiple keystrokes. |Control-A |Press the
-Control key while you press the A key.
-
-|+ + |Joins consecutive multiple keystrokes. |Ctrl+A+N |Press the
-Control key, release it, and then press the subsequent keys.
-
-|> |Indicates menu item selection in a graphical user interface. |File >
-New > Templates |From the File menu, choose New. From the New submenu,
-choose Templates.
-|=======================================================================
-
-
-[[GSSCG00139]][[ghpfg]]
-
-
-[[default-paths-and-file-names]]
-Default Paths and File Names
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following table describes the default paths and file names that are
-used in this book.
-
-[width="100%",cols="14%,34%,52%",options="header",]
-|=======================================================================
-|Placeholder |Description |Default Value
-|as-install + a|
-Represents the base installation directory for GlassFish Server.
-
-In configuration files, as-install is represented as follows:
-
-`${com.sun.aas.installRoot}`
-
- a|
-Installations on the Oracle Solaris operating system, Linux operating
-system, and Mac OS operating system:
-
-user's-home-directory`/glassfish6/glassfish`
-
-Installations on the Windows operating system:
-
-SystemDrive`:\glassfish6\glassfish`
-
-|as-install-parent + |Represents the parent of the base installation
-directory for GlassFish Server. a|
-Installations on the Oracle Solaris operating system, Linux operating
-system, and Mac operating system:
-
-user's-home-directory`/glassfish6`
-
-Installations on the Windows operating system:
-
-SystemDrive`:\glassfish6`
-
-|domain-root-dir + |Represents the directory in which a domain is
-created by default. |as-install`/domains/`
-
-|domain-dir + a|
-Represents the directory in which a domain's configuration is stored.
-
-In configuration files, domain-dir is represented as follows:
-
-`${com.sun.aas.instanceRoot}`
-
- |domain-root-dir`/`domain-name
-
-|instance-dir + |Represents the directory for a server instance.
-|domain-dir`/`instance-name
-|=======================================================================
-
-
diff --git a/docs/security-guide/src/main/jbake/content/running-in-secure-environment.adoc b/docs/security-guide/src/main/jbake/content/running-in-secure-environment.adoc
deleted file mode 100644
index fda8c48..0000000
--- a/docs/security-guide/src/main/jbake/content/running-in-secure-environment.adoc
+++ /dev/null
@@ -1,560 +0,0 @@
-type=page
-status=published
-title=Running in a Secure Environment
-prev=administrative-security.html
-~~~~~~
-Running in a Secure Environment
-===============================
-
-[[GSSCG00040]][[gkscr]]
-
-
-[[running-in-a-secure-environment]]
-6 Running in a Secure Environment
----------------------------------
-
-This chapter describes important information about running GlassFish
-Server in a secure environment.
-
-This chapter assumes that you are familiar with security features such
-as authentication, authorization, and certificates. If you are not, see
-link:system-security.html#ablnk[Administering System Security].
-
-Instructions for accomplishing the tasks specific to GlassFish Server by
-using the Administration Console are contained in the Administration
-Console online help.
-
-The chapter describes the following topics:
-
-* link:#gksbk[Determining Your Security Needs]
-* link:#gksbw[Installing GlassFish Server in a Secure Environment]
-* link:#gksby[Run on the Web Profile if Possible]
-* link:#gksct[Securing the GlassFish Server Host]
-* link:#gksca[Securing GlassFish Server]
-* link:#gksbf[Securing Applications]
-
-[[gksbk]][[GSSCG00169]][[determining-your-security-needs]]
-
-Determining Your Security Needs
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Before you deploy GlassFish Server and your Java EE applications into a
-production environment, determine your security needs and make sure that
-you take the appropriate security measures, as described in the
-following sections:
-
-* link:#gkscs[Understand Your Environment]
-* link:#gksce[Read Security Publications]
-
-[[gkscs]][[GSSCG00237]][[understand-your-environment]]
-
-Understand Your Environment
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To better understand your security needs, ask yourself the following
-questions:
-
-* Which resources am I protecting? +
-Many resources in the production environment can be protected, including
-information in databases accessed by GlassFish Server and the
-availability, performance, applications, and the integrity of the Web
-site. Consider the resources you want to protect when deciding the level
-of security you must provide.
-* From whom am I protecting the resources? +
-For most Web sites, resources must be protected from everyone on the
-Internet. But should the Web site be protected from the employees on the
-intranet in your enterprise? Should your employees have access to all
-resources within the GlassFish Server environment? Should the system
-administrators have access to all GlassFish Server resources? Should the
-system administrators be able to access all data? You might consider
-giving access to highly confidential data or strategic resources to only
-a few well trusted system administrators. Perhaps it would be best to
-allow no system administrators access to the data or resources.
-* What will happen if the protections on strategic resources fail? +
-In some cases, a fault in your security scheme is easily detected and
-considered nothing more than an inconvenience. In other cases, a fault
-might cause great damage to companies or individual clients that use the
-Web site. Understanding the security ramifications of each resource will
-help you protect it properly.
-
-(`http://www.oracle.com/us/products/ondemand/index.html`)[[gksce]]
-
-[[GSSCG00239]][[read-security-publications]]
-
-Read Security Publications
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Read about security issues:
-
-* For the latest information about securing Web servers, Oracle
-recommends the "Security Practices & Evaluations" information available
-from the CERT Coordination Center operated by Carnegie Mellon University
-at `http://www.cert.org/`.
-
-[[gksbw]][[GSSCG00170]][[installing-glassfish-server-in-a-secure-environment]]
-
-Installing GlassFish Server in a Secure Environment
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This section describes recommendations for installing GlassFish Server
-in a secure environment. The link:#gkscn[Enable the Secure
-Administration Feature] topic is described.
-
-[[gkscn]][[GSSCG00240]][[enable-the-secure-administration-feature]]
-
-Enable the Secure Administration Feature
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The secure administration feature allows an administrator to secure all
-administrative communication between the domain administration server
-(DAS), any remote instances, and administration clients such as the
-asadmin utility, the administration console, and REST clients. In
-addition, secure administration helps to prevent DAS-to-DAS and
-instance-to-instance traffic, and carefully restricts
-administration-client-to-instance traffic.
-
-When you install GlassFish Server or create a new domain, secure admin
-is disabled by default. GlassFish Server does not encrypt administrative
-communication among the system components and does not accept
-administrative connections from remote hosts. Imposing a heightened
-level of security is optional.
-
-See link:administrative-security.html#gknqh[Managing Administrative
-Security] for information on enabling the secure administration feature.
-
-[[gksby]][[GSSCG00172]][[run-on-the-web-profile-if-possible]]
-
-Run on the Web Profile if Possible
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-If your applications can run on the Web Profile, use that instead of the
-Full Platform.
-
-Starting in Java EE 6, Java EE introduced the concept of profiles. A
-profile is a collection of Java EE technologies and APIs that address
-specific developer communities and application types.
-
-The following profiles are implemented through the distributions of
-GlassFish Server:
-
-* Full Platform -The full Java EE platform is designed for developers
-who require the full set of Java EE APIs for enterprise application
-development, and is installed when you install GlassFish Server. This
-profile is also installed as part of the Java EE 8 SDK installation.
-* Web Profile -This profile contains Web technologies that are a subset
-of the full Java platform, and is designed for developers who do not
-require the full set of Java EE APIs. This profile is also installed
-with Java EE 8 Web Profile SDK.
-
-For the list of APIs in each profile, see "link:../release-notes/release-notes.html#GSRLN00136[Java EE
-Standards Support]" in GlassFish Server Open Source Edition Release
-Notes.
-
-[[gksct]][[GSSCG00173]][[securing-the-glassfish-server-host]]
-
-Securing the GlassFish Server Host
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-A GlassFish Server production environment is only as secure as the
-security of the machine on which it is running. It is important that you
-secure the physical machine, the operating system, and all other
-software that is installed on the host machine.
-
-The following are recommendations for securing a GlassFish Server host
-in a production environment. Also check with the manufacturer of the
-machine and operating system for recommended security measures.
-
-
-[NOTE]
-=======================================================================
-
-The domain and server configuration files should be accessible only by
-the operating system users who configure or execute GlassFish Server.
-
-=======================================================================
-
-
-[[sthref39]][[gksbt]]
-
-Table 6-1 Securing the GlassFish Server Host
-
-[width="100%",cols="27%,73%",options="header",]
-|=======================================================================
-|Security Action |Description
-|Physically secure the hardware. |Keep your hardware in a secured area
-to prevent unauthorized operating system users from tampering with the
-deployment machine or its network connections.
-
-|Log out of the Administration Console before navigating to a non-secure
-site. |If you are logged on to the Administration Console, be sure to
-log out completely before browsing to an unknown or non-secure Web site.
-
-|Secure networking services that the operating system provides. a|
-Have an expert review network services such as e-mail programs or
-directory services to ensure that a malicious attacker cannot access the
-operating system or system-level commands. The way you do this depends
-on the operating system you use.
-
-Sharing a file system with other machines in the enterprise network
-imposes risks of a remote attack on the file system. Be certain that the
-remote machines and the network are secure before sharing the file
-systems from the machine.
-
-|Use a file system that can prevent unauthorized access. |Make sure that
-the file system on each GlassFish Serverhost can prevent unauthorized
-access to protected resources. For example, on a Windows computer, use
-only NTFS.
-
-|Set file access permissions for data stored on disk. a|
-Set operating system file access permissions to restrict access to data
-stored on disk. This data includes, but is not limited to, the
-following:
-
-The database files. GlassFish Server includes Apache Derby database,
-however, you can use any JDBC-compliant database.
-
-The directory and filename location of a private keystore, such as
-keystore.jks
-
-The directory and filename location of a Root Certificate Authority (CA)
-keystore, such as cacerts.jks.
-
-For example, operating systems provide utilities such as umask and chmod
-to set the file access permissions. At a minimum, consider using "umask
-066", which denies read and write permission to Group and Others.
-
-|Set file access permission for the GlassFish Server installation. a|
-The directory structure in which GlassFish Server is located, including
-all files, should be protected from access by unprivileged users.
-
-Taking this step helps ensure that unprivileged users cannot insert code
-that can potentially be executed by GlassFish Server.
-
-|Limit the number of user accounts on the host machine. a|
-Avoid creating more user accounts than you need on host machines, and
-limit the file access privileges granted to each account. On operating
-systems that allow more than one system administrator user, the host
-machine should have two user accounts with system administrator
-privileges and one user with sufficient privileges to run GlassFish
-Server. Having two system administrator users provides a back up at all
-times. The GlassFish Server user should be a restricted user, not a
-system administrator user. One of the system administrator users can
-always create a new GlassFish Server user if needed.
-
-Important: Domain and server configuration files should be accessible
-only by the operating system users who configure or execute GlassFish
-Server.
-
-Review active user accounts regularly and when personnel leave.
-
-Background Information: Configuration data and some URL (Web) resources,
-including Java Server Pages (JSPs) and HTML pages, are stored in clear
-text on the file system. A sophisticated user or intruder with read
-access to files and directories might be able to defeat any security
-mechanisms you establish with authentication and authorization schemes.
-
-|For your system administrator user accounts, choose names that are not
-obvious. |For additional security, avoid choosing an obvious name such
-as "system," "admin," or "administrator" for your system administrator
-user accounts.
-
-|Safeguard passwords. a|
-The passwords for user accounts on production machines should be
-difficult to guess and should be guarded carefully.
-
-Set a policy to expire passwords periodically.
-
-Never code passwords in client applications.
-
-Do not deploy an application that can be accessed with the default
-username admin and no password.
-
-|Safeguard password files a|
-The `-passwordfile` option of the `asadmin` command specifies the name
-of a file that contains password entries in a specific format. These
-password entries are stored in clear text in the password file, and rely
-on file system mechanisms for protection. Therefore, any password file
-created for use with the `-passwordfile` option should be protected with
-file system permissions. Additionally, any password file being used for
-a transient purpose, such as setting up SSH among nodes, should be
-deleted after it has served its purpose.
-
-To provide additional security, create a password alias.
-
-|Use a password alias a|
-A password alias stores a password in encrypted form in the domain
-keystore, providing a clear-text alias name to use instead of the
-password.
-
-To provide additional security, use the `create-password-alias`
-subcommand to create an alias for the password. The password for which
-the alias is created is stored in an encrypted form.
-
-Then, specify the alias in the entry for the password in the password
-file as follows:
-
-In password files and the domain configuration file, use the form
-$\{alias=alias-name} to refer to the encrypted password.
-
-|Do not run GlassFish Server as root a|
-GlassFish Server should run only as an unprivileged user, never as root.
-
-Taking this step helps ensure that code from other users cannot be
-executed by GlassFish Server.
-
-|Consider use PAM Realm |The use of a PAM Realm requires GlassFish
-Server to run as an account that has read-access to a shadow password
-file or the equivalent, and therefore may not be suitable in your
-environment.
-
-|Do not develop on a production machine. |Develop first on a development
-machine and then move code to the production machine when it is
-completed and tested. This process prevents bugs in the development
-environment from affecting the security of the production environment.
-
-|Do not install development or sample software on a production machine.
-|Do not install development tools on production machines. Keeping
-development tools off the production machine reduces the leverage
-intruders have should they get partial access to a production machine.
-
-|Enable security auditing. |If the operating system on which GlassFish
-Server runs supports security auditing of file and directory access,
-Oracle recommends using audit logging to track any denied directory or
-file access violations. Administrators should ensure that sufficient
-disk space is available for the audit log.
-
-|Consider using additional software to secure your operating system.
-|Most operating systems can run additional software to secure a
-production environment. For example, an Intrusion Detection System (IDS)
-can detect attempts to modify the production environment. Refer to the
-vendor of your operating system for information about available
-software.
-
-|Apply operating system patch sets and security patches. |Refer to the
-vendor of your operating system for a list of recommended patch sets and
-security-related patches.
-
-|Apply the latest maintenance packs and critical patch updates. |Refer
-to the vendor of your operating system for a list of maintenance packs
-and critical patch updates.
-|=======================================================================
-
-
-[[gksca]][[GSSCG00174]][[securing-glassfish-server]]
-
-Securing GlassFish Server
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-GlassFish Server provides a powerful and flexible set of software tools
-for securing the subsystems and applications that run on a server
-instance. The following table provides a checklist of essential features
-that Oracle recommends you use to secure your production environment.
-
-[[sthref40]][[gkscz]]
-
-Table 6-2 Securing GlassFish Server
-
-[width="100%",cols="25%,75%",options="header",]
-|=======================================================================
-|Security Action |Description
-|Enable Secure Admin. a|
-The secure administration feature allows an administrator to secure all
-administrative communication between the domain administration server
-(DAS), any remote instances, and administration clients such as the
-`asadmin` utility, the administration console, and REST clients.
-
-In addition, secure administration helps to prevent DAS-to-DAS and
-instance-to-instance traffic, and carefully restricts
-administration-client-to-instance traffic.
-
-The secure administration feature provides a secure environment, in
-which you can be confident that rogue users or processes cannot
-intercept or corrupt administration traffic or impersonate legitimate
-GlassFish Server components.
-
-See link:administrative-security.html#gknqh[Managing Administrative
-Security].
-
-|Protect the `.asadminpass` file a|
-If you create a domain with the `--savelogin` option, `create-domain`
-saves the administration user name and password in the `.asadminpass`
-file in the user's home directory.
-
-Make sure that this file remains protected. Information stored in this
-file will be used by `asadmin` commands to manage this domain.
-
-|Safeguard password files a|
-The `-passwordfile` option of the `asadmin` command specifies the name
-of a file that contains password entries in a specific format. These
-password entries are stored in clear text in the password file, and rely
-on file system mechanisms for protection. Therefore, any password file
-created for use with the `-passwordfile` option should be protected with
-file system permissions. Additionally, any password file being used for
-a transient purpose, such as setting up SSH among nodes, should be
-deleted after it has served its purpose.
-
-To provide additional security, create a password alias.
-
-|Deploy production-ready security providers to the security realm. a|
-Java Authorization Contract for Containers (JACC) is the part of the
-Java EE specification that defines an interface for pluggable
-authorization providers. This enables you to set up third-party plug-in
-modules to perform authorization.
-
-By default, the GlassFish Server provides a simple, file-based
-authorization engine that complies with the JACC specification. You can
-also specify additional third-party JACC providers.
-
-If you have purchased or written your own security providers, make sure
-that you have deployed and configured them properly.
-
-|Use SSL, but do not use the self-signed certificates in a production
-environment. a|
-To prevent sensitive data from being compromised, secure data transfers
-by using HTTPS.
-
-By default, GlassFish Server uses self-signed certificates. The
-self-signed certificates that GlassFish Server uses might not be trusted
-by clients by default because a certificate authority does not vouch for
-the authenticity of the certificate.
-
-You can instead use your own certificates, as described in
-link:administrative-security.html#gkped[Using Your Own Certificates].
-
-|Restrict the size and the time limit of requests on external channels
-to prevent Denial of Service attacks. a|
-To prevent some Denial of Service (DoS) attacks, restrict the size of a
-message as well as the maximum time it takes a message to arrive.
-
-The default setting for maximum post size is 2097152 bytes and 900
-seconds for the request timeout.
-
-|Enable authentication and authorization auditing. a|
-Auditing is the process of recording key security events in your
-GlassFish Server environment. You use audit modules to develop an audit
-trail of all authentication and authorization decisions. To enable audit
-logging, two steps are required:
-
-1.  On the Security page, select the Audit Logging Enabled checkbox to
-enable audit logging.
-2.  Set the `auditOn` property for the active audit module to true.
-
-Review the auditing records periodically to detect security breaches and
-attempted breaches. Noting repeated failed logon attempts or a
-surprising pattern of security events can prevent serious problems.
-
-|Set logging for security and SSL messages. a|
-Consider setting module log levels for
-table.jakarta.enterprise.system.ssl.security and
-jakarta.enterprise.system.core.security. You can set a level from Severe
-to Finest (the default is Info), but be aware that the finer logging
-levels may produce a large log file.
-
-By default, GlassFish Server logging messages are recorded in the server
-log, and you can set the file rotation limit, as described in
-link:../reference-manual/rotate-log.html#GSRFM00224[`rotate-log`(1)]
-
-|Ensure that you have correctly assigned users to the correct groups.
-|Make sure you have assigned the desired set of users to the right
-groups. In particular, make sure that users assigned to the asadmin
-group need to be members of that group.
-
-|Create no fewer than two user accounts in the asadmin group. |The user
-admin is created when you install GlassFish Server. For production
-environments, create at least one other account in the asadmin group in
-case one account password is compromised. When creating asadmin users
-give them unique names that cannot be easily guessed.
-
-|Assign a password to the admin account. |By default, GlassFish Server
-includes a single account for user "admin" and an empty password. For
-production environments this default is inherently unsecure, and you
-should set a password for admin.
-|=======================================================================
-
-
-[[gksbf]][[GSSCG00175]][[securing-applications]]
-
-Securing Applications
-~~~~~~~~~~~~~~~~~~~~~
-
-Although much of the responsibility for securing the GlassFish Server
-resources in a domain fall within the scope of the server, some security
-responsibilities lie within the scope of individual applications. For
-some security options, GlassFish Server enables you to determine whether
-the server or individual applications are responsible. For each
-application that you deploy in a production environment, review the
-items in the following table to verify that you have secured its
-resources.
-
-[[sthref41]][[gkscv]]
-
-Table 6-3 Securing Applications
-
-[width="100%",cols="22%,78%",options="header",]
-|=======================================================================
-|Security Action |Description
-|Use JSP comment tags instead of HTML comment tags. |Comments in JSP
-files that might contain sensitive data and or other comments that are
-not intended for the end user should use the JSP syntax of <%/* xxx */%>
-instead of the HTML syntax <!-- xxx -->. The JSP comments, unlike the
-HTML comments, are deleted when the JSP is compiled and therefore cannot
-be viewed in the browser.
-
-|Do not install uncompiled JSPs and other source code on the production
-machine. a|
-Always keep source code off of the production machine. Getting access to
-your source code allows an intruder to find security holes.
-
-Consider precompiling JSPs and installing only the compiled JSPs on the
-production machine. To do this, set the `deploy` subcommand
-`-precompilejsp` option to true for the component.
-
-When set to true, the `deploy` and `redeploy` subcommands
-`-precompilejsp` option compiles JSPs during deploy time. If set to
-false (the default), JSPs are compiled during runtime.
-
-|Configure your applications to use SSL. |Set the transport-guarantee to
-CONFIDENTIAL in the user-data-constraint element of the web.xml file
-whenever appropriate.
-
-|Examine applications for security. a|
-There are instances where an application can lead to a security
-vulnerability.
-
-Of particular concern is code that uses Java native interface (JNI)
-because Java positions native code outside of the scope of Java
-security. If Java native code behaves errantly, it is only constrained
-by the operating system. That is, the Java native code can do anything
-GlassFish Server itself can do. This potential vulnerability is further
-complicated by the fact that buffer overflow errors are common in native
-code and can be used to run arbitrary code.
-
-|If your applications contain untrusted code, enable the Java security
-manager. |The Java security manager defines and enforces permissions for
-classes that run within a JVM. In many cases, where the threat model
-does not include malicious code being run in the JVM, the Java security
-manager is unnecessary. However, when third parties use GlassFish Server
-and untrusted classes are being run, the Java security manager may be
-useful. See "link:../application-development-guide/securing-apps.html#GSDVG00373[Enabling and Disabling the Security
-Manager]" in GlassFish Server Open Source Edition Application
-Development Guide.
-
-|Replace HTML special characters when servlets or JSPs return
-user-supplied data. a|
-The ability to return user-supplied data can present a security
-vulnerability called cross-site scripting, which can be exploited to
-steal a user's security authorization. For a detailed description of
-cross-site scripting, refer to "Understanding Malicious Content
-Mitigation for Web Developers" (a CERT security advisory) at
-`http://www.cert.org/tech_tips/malicious_code_mitigation.html`.
-
-To remove the security vulnerability, before you return data that a user
-has supplied, scan the data for HTML special characters. If you find any
-such characters, replace them with their HTML entity or character
-reference. Replacing the characters prevents the browser from executing
-the user-supplied data as HTML.
-
-|=======================================================================
-
-
-
diff --git a/docs/security-guide/src/main/jbake/content/security-in-cluster-mode.adoc b/docs/security-guide/src/main/jbake/content/security-in-cluster-mode.adoc
deleted file mode 100644
index 989534b..0000000
--- a/docs/security-guide/src/main/jbake/content/security-in-cluster-mode.adoc
+++ /dev/null
@@ -1,173 +0,0 @@
-type=page
-status=published
-title=Administering Security in Cluster Mode
-next=administrative-security.html
-prev=message-security.html
-~~~~~~
-Administering Security in Cluster Mode
-======================================
-
-[[GSSCG00038]][[gknpf]]
-
-
-[[administering-security-in-cluster-mode]]
-4 Administering Security in Cluster Mode
-----------------------------------------
-
-This chapter describes important information about administering
-security in a cluster.
-
-The following topics are described:
-
-* link:#gksam[Configuring Certificates in Cluster Mode]
-* link:#gkmhh[Dynamic Reconfiguration]
-* link:#gktgi[Understanding Synchronization]
-
-This chapter assumes that you are familiar with security features such
-as authentication, authorization, and certificates. If you are not, see
-link:system-security.html#ablnk[Administering System Security].
-
-Instructions for accomplishing the tasks specific to GlassFish Server by
-using the Administration Console are contained in the Administration
-Console online help.
-
-[[gksam]][[GSSCG00159]][[configuring-certificates-in-cluster-mode]]
-
-Configuring Certificates in Cluster Mode
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The sections link:system-security.html#abloj[Certificates and SSL] and
-link:system-security.html#ablqz[Administering JSSE Certificates] describe
-the relevant concepts and use of certificates in GlassFish Server.
-
-By default, GlassFish Server uses self-signed certificates. The
-self-signed certificates that GlassFish Server uses might not be trusted
-by clients by default because a certificate authority does not vouch for
-the authenticity of the certificate.
-
-You can instead use your own certificates, as described in
-link:administrative-security.html#gkped[Using Your Own Certificates].
-
-[[gkmhh]][[GSSCG00160]][[dynamic-reconfiguration]]
-
-Dynamic Reconfiguration
-~~~~~~~~~~~~~~~~~~~~~~~
-
-Administrative commands that you execute on the domain administration
-server (DAS) must either be replicated on the affected server instances,
-or on all server instances that are part of the cluster. GlassFish
-Server replicates the commands by sending the same administration
-command request that was sent to the DAS to the server instances. As a
-result of replicating the commands on the DAS and the individual
-instances, the DAS and the instances make the same changes to their
-respective copies of the domain's configuration.
-
-
-[NOTE]
-=======================================================================
-
-Oracle recommends that you enable secure admin as described in
-link:administrative-security.html#gknqh[Managing Administrative Security]
-so that GlassFish Server securely transfers these files on the network.
-
-=======================================================================
-
-
-Dynamic reconfiguration refers to using the `--target` operand to CLI
-subcommands to make a change to a server instance (if the user-specified
-target is a server instance), or all server instances that are part of
-the cluster (if the user-specified target is a cluster). For
-example:`asadmin create-jdbc-resource some-options --target some-target`.
-
-The --target operand allows the following values:
-
-* `server` - Performs the command on the default server instance. This
-is the default value.
-* configuration_name - Performs the command in the specified
-configuration.
-* cluster_name - Performs the command on all server instances in the
-specified cluster.
-* instance_name - Performs the command on a specified server instance.
-
-If a command fails for a cluster, the status shows all server instances
-where dynamic reconfiguration failed, and suggests corrective next
-steps.
-
-The command status also shows when a restart is required for each server
-instance.
-
-The --target operand is supported for the following security-related CLI
-subcommands:
-
-* create-jacc-provider
-* delete-jacc-provider
-* list-jacc-providers
-* create-audit-module
-* create-auth-realm
-* create-file-user
-* delete-audit-module
-* delete-auth-realm
-* delete-file-user
-* update-file-user
-* create-message-security-provider
-* delete-message-security-provider
-* list-audit-modules
-* list-file-groups
-* list-file-users
-* login
-
-[[gkned]][[GSSCG00226]][[enabling-dynamic-configuration]]
-
-Enabling Dynamic Configuration
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Dynamic configuration is enabled by default and no additional action is
-required.
-
-Use the following command to enable dynamic configuration from the
-command line:
-
-`asadmin --user user --passwordfile password-file set cluster-name-config.dynamic-reconfiguration-enabled=true`.
-
-To enable dynamic configuration from the Administration Console, perform
-the following steps:
-
-1.  Expand the Configurations node.
-2.  Click the name of the cluster's configuration.
-3.  On the Configuration System Properties page, check the Dynamic
-Reconfiguration Enabled box.
-4.  Click Save.
-
-
-[NOTE]
-=======================================================================
-
-The dynamic reconfiguration feature applies only to server instances,
-not the DAS. Therefore, you cannot "disable" dynamic reconfiguration on
-the DAS. There is no way to make changes to the DAS configuration using
-`asadmin` commands, the Administration Console, or the REST interface
-without having those changes take effect immediately.
-
-=======================================================================
-
-
-[[gktgi]][[GSSCG00161]][[understanding-synchronization]]
-
-Understanding Synchronization
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-As described in "link:../ha-administration-guide/instances.html#GSHAG00189[Resynchronizing GlassFish Server
-Instances and the DAS]" in GlassFish Server Open Source Edition High
-Availability Administration Guide, configuration data for a GlassFish
-Server instance is stored in the repository of the DAS and in a cache on
-the host that is local to the instance. The configuration data in these
-locations must be synchronized. The cache is synchronized only when a
-user uses the administration tools to start or restart an instance.
-
-See "link:../ha-administration-guide/instances.html#GSHAG00189[Resynchronizing GlassFish Server Instances and the
-DAS]" in GlassFish Server Open Source Edition High Availability
-Administration Guide for information about default synchronization for
-files and directories, for the steps required to resynchronize an
-instance and the DAS, and for additional synchronization topics.
-
-
diff --git a/docs/security-guide/src/main/jbake/content/system-security.adoc b/docs/security-guide/src/main/jbake/content/system-security.adoc
deleted file mode 100644
index 3958f8f..0000000
--- a/docs/security-guide/src/main/jbake/content/system-security.adoc
+++ /dev/null
@@ -1,2231 +0,0 @@
-type=page
-status=published
-title=Administering System Security
-next=user-security.html
-prev=preface.html
-~~~~~~
-Administering System Security
-=============================
-
-[[GSSCG00035]][[ablnk]]
-
-
-[[administering-system-security]]
-1 Administering System Security
--------------------------------
-
-This chapter describes general information about administering system
-security.
-
-The following topics are addressed here:
-
-* link:#ggktf[About System Security in GlassFish Server]
-* link:#ghgrp[Administering Passwords]
-* link:#ghgol[Administering Audit Modules]
-* link:#ablqz[Administering JSSE Certificates]
-* link:#gkngj[Administering JACC Providers]
-
-Instructions for accomplishing many of these tasks by using the
-Administration Console are contained in the Administration Console
-online help.
-
-Information on application security is contained in
-"link:../application-development-guide/securing-apps.html#GSDVG00006[Securing Applications]" in GlassFish Server Open
-Source Edition Application Development Guide.
-
-[[ggktf]][[GSSCG00143]][[about-system-security-in-glassfish-server]]
-
-About System Security in GlassFish Server
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Security is about protecting data, that is, how to prevent unauthorized
-access or damage to data that is in storage or in transit. The GlassFish
-Server is built on the Java security model, which uses a sandbox where
-applications can run safely, without potential risk to systems or users.
-System security affects all the applications in the GlassFish Server
-environment.
-
-The Java EE Security API specification defines portable, plug-in
-interfaces for authentication and identity stores, and a new
-injectable-type SecurityContext interface that provides an access point
-for programmatic security. You can use the built-in implementations of
-the plug-in SPIs, or write custom implementations.
-
-System security features include the following:
-
-* link:#ablnx[Authentication]
-* link:#ghlvu[Authorization]
-* link:#ghlql[Auditing]
-* link:#ghlti[Firewalls]
-* link:#abloj[Certificates and SSL]
-* link:#ablno[Tools for Managing System Security]
-
-[[ablnx]][[GSSCG00203]][[authentication]]
-
-Authentication
-^^^^^^^^^^^^^^
-
-Authentication is the way in which an entity (a user, an application, or
-a component) determines that another entity is who it claims to be. An
-entity uses security credentials to authenticate itself. The credentials
-might be a user name and password, a digital certificate, or something
-else. Usually, servers or applications require clients to authenticate
-themselves. Additionally, clients might require servers to authenticate
-themselves. When authentication is bidirectional, it is called mutual
-authentication.
-
-When an entity tries to access a protected resource, GlassFish Server
-uses the authentication mechanism configured for that resource to
-determine whether to grant access. For example, a user can enter a user
-name and password in a web browser, and if the application verifies
-those credentials, the user is authenticated. The user is associated
-with this authenticated security identity for the remainder of the
-session.
-
-[[ghsqc]][[GSSCG00184]][[authentication-types]]
-
-Authentication Types
-++++++++++++++++++++
-
-Within its deployment descriptors, an application can specify the type
-of authentication that it uses. The Java EE Security API provides an
-alternative mechanism for configuring the type of authentication an
-application uses. See https://jcp.org/en/jsr/detail?id=375[Java EE
-Security API 1.0 specification]. GlassFish Server supports specifying
-the following types of authentication in deployment descriptors:
-
-BASIC::
-  Uses the standard Basic Authentication Scheme as described in RFC
-  2617. The communication protocol is HTTP (SSL optional). There is no
-  encryption of user credentials unless using SSL. This type is not
-  considered to be a secure method of user authentication unless used in
-  conjunction with an encrypted communications channel, such as that
-  provided by SSL.
-FORM::
-  The application provides its own custom login and error pages. The
-  communication protocol is HTTP (SSL optional). There is no encryption
-  of user credentials unless using SSL.
-CLIENT-CERT::
-  The server authenticates the client using a public key certificate.
-  The communication protocol is HTTPS (HTTP over SSL).
-DIGEST::
-  The server authenticates a user based on a user name and a password.
-  Unlike BASIC authentication, the plaintext password is never sent over
-  the network, although a hash of the password combined with other
-  parameters is sent. While Digest Authentication is more secure than
-  Basic Authentication, user names and passwords are not strongly
-  protected, and the use of SSL is still recommended.
-
-[[sthref4]][[jsr-375-authentication-mechanisms-and-identity-stores]]
-
-JSR 375 Authentication Mechanisms and Identity Stores
-+++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-The Java EE Security API defines the `HttpAuthenticationMechanism`
-interface, the `IdentityStore` and `IdentityStoreHandler` interfaces.
-
-The `HttpAuthenticationMechanism` interface defines an SPI for writing
-authentication mechanisms that can be provided with an application and
-deployed using CDI. Developers can write their own implementations of
-`HttpAuthenticationMechanism` to support specific authentication token
-types or protocols. There are also several built-in authentication
-mechanisms that perform BASIC, FORM, and Custom FORM authentication.The
-`HttpAuthenticationMechanism` interface defines three methods -
-`validateRequest()`, `secureResponse()`, and `cleanSubject()`. These
-methods align closely with the methods defined by the JASPIC
-`ServerAuth` interface.
-
-The `IdentityStore` interface provides an abstraction of an identity
-store that holds user account information including name, password,
-group membership, and potentially other attributes. Implementations of
-the `IdentityStore` interface are used to validate caller credentials,
-typically username and password, and retrieve and group information.
-There are built-in implementations of this SPI that can validate
-credentials against external LDAP or Database identity stores.
-
-`IdentityStore` is intended primarily for use by
-`HttpAuthenticationMechanism` implementations, but could be used by
-other authentication mechanisms, such as a JASPIC `ServerAuthModule`, or
-a container's built-in authentication mechanisms. Though
-`HttpAuthenticationMechanism` implementations can authenticate users in
-any manner they choose, the `IdentityStore` interface provides a
-convenient mechanism. A significant advantage of using
-`HttpAuthenticationMechanism` and `IdentityStore` over the declarative
-mechanisms defined by the Servlet specification is that it allows an
-application to control the identity stores that it authenticates
-against, in a standard, portable way. You can use the built-in
-implementations of the  plug-in SPIs, or define custom implementations.
-
-[[gknah]][[GSSCG00185]][[jsr-196-server-authentication-modules]]
-
-JSR 196 Server Authentication Modules
-+++++++++++++++++++++++++++++++++++++
-
-GlassFish Server implements the Servlet Container Profile of
-http://www.jcp.org/en/jsr/detail?id=196[JSR 196 Java Authentication
-Service Provider Interface for Containers specification].
-
-JSR 196 defines a standard service-provider interface (SPI) for
-integrating authentication mechanism implementations in message
-processing runtimes. JSR 196 extends the concepts of the Java
-Authentication and Authorization Service (JAAS) to enable pluggability
-of message authentication modules in message processing runtimes. The
-standard defines profiles that establish contracts for the use of the
-SPI in specific contexts.
-
-[[ghltx]][[GSSCG00186]][[passwords]]
-
-Passwords
-+++++++++
-
-Passwords are your first line of defense against unauthorized access to
-the components and data of GlassFish Server. For Information about how
-to use passwords for GlassFish Server, see link:#ghgrp[Administering
-Passwords].
-
-[[gczen]][[GSSCG00042]][[master-password-and-keystores]]
-
-Master Password and Keystores
-
-The master password is not tied to a user account and it is not used for
-authentication. Instead, GlassFish Server uses the master password only
-to encrypt the keystore and truststore for the DAS and instances.
-
-When you create a new GlassFish Server domain, a new self-signed
-certificate is generated and stored in the domain keystore and
-truststore. The DAS needs the master password to open these stores at
-startup. Similarly, the associated server instances need the master
-password to open their copy of these stores at startup.
-
-If you use a utility such as keytool to modify the keystore or
-truststore, you must provide the master password in that case as well.
-
-The master password is a shared password and must be the same for the
-DAS and all instances in the domain in order to manage the instances
-from the DAS. However, because GlassFish Server never transmits the
-master password over the network, it is up to you to keep the master
-password in sync between the DAS and instances.
-
-If you change the master password, you can choose to enter the master
-password manually when required, or save it in a file.
-
-[[gktgy]][[GSSCG00043]][[understanding-master-password-synchronization]]
-
-Understanding Master Password Synchronization
-
-The master password is used encrypt the keystore and truststore for the
-DAS and instances. The DAS needs the master password to open these
-stores at startup. Similarly, the associated server instances need the
-master password to open their copy of these stores at startup.
-
-GlassFish Server keeps the keystore and truststore for the DAS and
-instances in sync, which guarantees that all copies of the stores are
-encrypted with the same master password at any given time.
-
-However, GlassFish Server does not synchronize the master password
-itself, and it is possible that the DAS and instances might attempt to
-use different master passwords.
-
-Consider the following potential scenario:
-
-1.  You create a domain and instances, using the default master password
-(changeit). As a result, the DAS and instances have keystores and
-truststores encrypted using changeit.
-2.  You use the `change-master-password` subcommand on the DAS to change
-the master password to ichangedit. As a result, the DAS and instance
-keystores and truststores are encrypted using ichangedit.
-3.  Access to the keystore and truststore from an instance now requires
-the master password ichangedit. You are responsible for changing the
-master password as needed.
-
-If you do not use a master password file, you assume the responsibility
-for using the `change-master-password` subcommand on the DAS and
-instances to keep the master passwords in sync. Be aware that not using
-a master password file has additional considerations for the
-start-instance and start-cluster subcommands, as described in
-link:#gktgr[Additional Considerations for the `start-instance` and
-`start-cluster` Subcommands].
-
-If you do use a master password file, you assume the responsibility for
-using the `change-master-password` subcommand on the DAS and instances
-to keep the master password file in sync.
-
-[[gktez]][[GSSCG00044]][[using-the-default-master-password]]
-
-Using the Default Master Password
-
-GlassFish Server uses the known phrase "changeit" as the default master
-password. This master password is not stored in a file. The default
-password is a convenience feature and provides no additional security
-because it is assumed to be widely known.
-
-All GlassFish Server subcommands work as expected with the default
-master password and there are no synchronization issues.
-
-[[gktfy]][[GSSCG00045]][[saving-the-master-password-to-a-file]]
-
-Saving the Master Password to a File
-
-The `change-master-password` `--savemasterpassword` option indicates
-whether the master password should be written to the file system in the
-`master-password` file for the DAS or a node. The default is false.
-
-For a domain, the master password is kept in
-domain-dir`/master-password`.
-
-For a node, the master-password file is kept in
-`nodes/`node-name`/agent/master-password`. You can set a master password
-at the node level and all instances created on that node will use that
-master-password file. To do this, use the `--nodedir` option and provide
-a node name.
-
-You might want to save the master password to the file so that the
-`start-domain` subcommand can start the server without having to prompt
-the user. There are additional considerations for using a master
-password with the `start-instance` and `start-cluster` subcommands, as
-described in link:#gktgr[Additional Considerations for the
-`start-instance` and `start-cluster` Subcommands].
-
-The master-password file is encoded, not encrypted. You must use
-filesystem permissions to protect the file.
-
-[[gkthb]][[GSSCG00046]][[using-the-master-password-when-creating-a-domain]]
-
-Using the Master Password When Creating a Domain
-
-The `create-domain` `--usemasterpassword` option specifies whether the
-keystore is encrypted with a master password that is built into the
-system, or by a user-defined master password.
-
-* If false (default), the keystore is encrypted with a well-known
-password (changeit) that is built into GlassFish Server.
-* If true, the subcommand obtains the master password from the
-`AS_ADMIN_MASTERPASSWORD` entry in the password file you specified in
-the `--passwordfile` option of the `asadmin` utility. Or, if none is
-defined, `--usemasterpassword` prompts the user for the master password.
-
-[[ghgof]][[GSSCG00047]][[administration-password]]
-
-Administration Password
-
-An administration password, also known as the admin password, is used to
-invoke the Administration Console and the `asadmin` utility. As with the
-default admin username, the default admin password is usually set during
-installation but it can be changed. For instructions, see link:#ghgpu[To
-Change an Administration Password].
-
-[[ablnq]][[GSSCG00048]][[encoded-passwords]]
-
-Encoded Passwords
-
-Files that contain encoded passwords need to be protected using file
-system permissions. These files include the following:
-
-* domain-dir`/master-password` +
-This file contains the encoded master password and should be protected
-with file system permissions 600.
-* Any password file created to pass as an argument by using the
-`--passwordfile` argument to the `asadmin` utility should be protected
-with file system permissions. Additionally, any password file being used
-for a transient purpose, such as setting up SSH among nodes, should be
-deleted after it has served its purpose.
-
-For instructions, see link:#ghytn[To Set a Password From a File].
-
-[[gkaol]][[GSSCG00049]][[web-browsers-and-password-storage]]
-
-Web Browsers and Password Storage
-
-Most web browsers can save login credentials entered through HTML forms.
-This function can be configured by the user and also by applications
-that employ user credentials. If the function is enabled, then
-credentials entered by the user are stored on their local computer and
-retrieved by the browser on future visits to the same application. This
-function is convenient for users, but can also be a security risk. The
-stored credentials can be captured by an attacker who gains access to
-the computer, either locally or through some remote compromise. Further,
-methods have existed whereby a malicious web site can retrieve the
-stored credentials for other applications, by exploiting browser
-vulnerabilities or through application-level cross-domain attacks.
-
-To prevent your web browser from saving login credentials for the
-GlassFish Server Administration Console, choose "No" or "Never for this
-page" when prompted by the browser during login.
-
-[[ghgoj]][[GSSCG00187]][[password-aliases]]
-
-Password Aliases
-++++++++++++++++
-
-To avoid storing passwords in the domain configuration file in clear
-text, you can create an alias for a password. This process is also known
-as encrypting a password. For more information, see
-link:#ghgqc[Administering Password Aliases].
-
-[[ghlus]][[GSSCG00188]][[single-sign-on]]
-
-Single Sign-on
-++++++++++++++
-
-With single sign-on, a user who logs in to one application becomes
-implicitly logged in to other applications that require the same
-authentication information. Single sign-on is based on groups. Single
-sign-on applies to web applications configured for the same realm and
-virtual server. The realm is defined by the `realm-name` element in the
-`web.xml` file.
-
-On GlassFish Server, single sign-on behavior can be inherited from the
-HTTP Service, enabled, or disabled. By default, it is inherited from the
-HTTP Service. If enabled, single sign-on is enabled for web applications
-on this virtual server that are configured for the same realm. If
-disabled, single sign-on is disabled for this virtual server, and users
-must authenticate separately to every application on the virtual server.
-
-[[ghlvu]][[GSSCG00204]][[authorization]]
-
-Authorization
-^^^^^^^^^^^^^
-
-Authorization, also known as access control, is the means by which users
-are granted permission to access data or perform operations. After a
-user is authenticated, the user's level of authorization determines what
-operations the owner can perform. A user's authorization is based on the
-user's role.
-
-[[abloh]][[GSSCG00189]][[roles]]
-
-Roles
-+++++
-
-A role defines which applications and what parts of each application
-users can access and what those users or groups can do with the
-applications. For example, in a personnel application, all employees
-might be able to see phone numbers and email addresses, but only
-managers have access to salary information. This application would
-define at least two roles: `employee` and `manager`. Only users in the
-`manager` role are allowed to view salary information.
-
-A role is different from a group in that a role defines a function in an
-application, while a group is a set of users who are related in some
-way. For example, the personnel application specify groups such as
-`full-time`, `part-time`, and `on-leave`. Users in these groups are all
-employees (the `employee` role). In addition, each user has its own
-designation that defines an additional level of employment.
-
-Roles are defined in the deployment descriptor for the application. The
-application developer or deployer maps roles to one or more groups in
-the deployment descriptor for each application. When the application is
-being packaged and deployed, the application specifies mappings between
-users, groups, and roles, as illustrated in link:#fxjfw[Figure 1-1].
-
-
-[NOTE]
-=======================================================================
-
-By default, group principal names are mapped to roles of the same name.
-Therefore, the Default Principal To Role Mapping setting is enabled by
-default on the Security page of the GlassFish Server Administration
-Console. With this setting enabled, if the group name defined on
-GlassFish Server matches the role name defined in the application, there
-is no need to use the runtime deployment descriptor to provide a
-mapping. The application server will implicitly make this mapping, as
-long as the names of the groups and roles match.
-
-=======================================================================
-
-
-[[GSSCG00001]][[fxjfw]]
-
-
-.*Figure 1-1 Role Mapping*
-image:img/securityrolemapping.png[
-"Figure shows how users are assigned to groups, how users and groups are
-assigned to roles, and how applications use groups and roles."]
-
-
-[[ghsqd]][[GSSCG00190]][[java-authorization-contract-for-containers]]
-
-Java Authorization Contract for Containers
-++++++++++++++++++++++++++++++++++++++++++
-
-Java Authorization Contract for Containers (JACC) is the part of the
-Java EE specification that defines an interface for pluggable
-authorization providers. This enables you to set up third-party plug-in
-modules to perform authorization. By default, the GlassFish Server
-provides a simple, file-based authorization engine that complies with
-the JACC specification.
-
-This release includes Administration Console support and CLI subcommands
-to create (`create-jacc-provider`), delete (`delete-jacc-provider`), and
-list (`list-jacc-providers`) JACC providers. link:#gkngj[Administering
-JACC Providers] for additional information.
-
-You can also specify additional third-party JACC providers.
-
-[[gkriq]][[GSSCG00191]][[working-with-the-server.policy-policy-file]]
-
-Working With the server.policy Policy File
-++++++++++++++++++++++++++++++++++++++++++
-
-Each GlassFish Server domain has its own global Java SE policy file,
-located in domain-dir`/config`. The file is named `server.policy`.
-
-This section covers the following topics:
-
-* link:#gkrkh[Contents of server.policy]
-* link:#gkrmo[Changing the Default Permissions]
-
-[[gkrkh]][[GSSCG00050]][[contents-of-server.policy]]
-
-Contents of server.policy
-
-A sample server.policy file is as follows. Comments in the file describe
-why various permissions are granted. These permissions are described in
-more detail in the next section.
-
-
-[NOTE]
-=======================================================================
-
-This server.policy file is presented for example purposes only and is
-subject to change.
-
-=======================================================================
-
-
-[source,oac_no_warn]
-----
-// classes in lib get all permissions by default
-grant codeBase "file:${com.sun.aas.installRoot}/lib/-" {
-    permission java.security.AllPermission;
-};
-
-// Core server classes get all permissions by default
-grant codeBase "file:${com.sun.aas.installRoot}/modules/-" {
-    permission java.security.AllPermission;
-};
-
-// Felix classes get all permissions by default
-grant codeBase "file:${com.sun.aas.installRoot}/osgi/felix/bin/-" {
-    permission java.security.AllPermission;
-};
-
-// iMQ classes get all permissions by default
-grant codeBase "file:${com.sun.aas.imqLib}/-" {
-    permission java.security.AllPermission;
-};
-
-// Derby driver classes get all permissions by default
-grant codeBase "file:${com.sun.aas.derbyRoot}/lib/-" {
-    permission java.security.AllPermission;
-}; 
-
-
-// permission for JDK's tools.jar to enable webservice annotation processing
-// at runtime by wsgen tool: 
-//       permission java.lang.RuntimePermission "createClassLoader";
-//
-// permission for JDK's tools.jar to sign JARs at runtime for 
-// Java Web Start support:
-//       permissions java.security.AllPermission;
-// on the advice of the JDK tools folks.  Should be refined later.
-grant codeBase "file:${com.sun.aas.javaRoot}/lib/tools.jar" {
-    permission java.security.AllPermission;
-};
-
-//Loading MBeans from anywhere, to take care of side effects of 6235678.
-grant {
-    permission javax.management.MBeanTrustPermission "register" ;
-};
-//Loading MBeans from anywhere, to take care of side effects of 6235678.
-
-
-// Basic set of required permissions granted to all remaining code
-// The permission FilePermission "<<ALL FILES>>", "read,write"
-// allows all applications to read and write any file in the filesystem.
-// It should be changed based on real deployment needs. If you know your
-// applications just need to read/write a few directories consider removing
-// this permission and adding grants indicating those specific directories.
-// against the codebase of your application(s).
-grant {
-    //Workaround for bugs #6484935, 6513799
-    permission java.lang.RuntimePermission "getProtectionDomain";
-    permission com.sun.corba.ee.impl.presentation.rmi.DynamicAccessPermission "access";
-    permission java.util.PropertyPermission "*", "read,write";
-
-    permission java.lang.RuntimePermission  "loadLibrary.*";
-    permission java.lang.RuntimePermission  "queuePrintJob";
-    permission java.net.SocketPermission    "*", "connect";
-    permission java.io.FilePermission       "<<ALL FILES>>", "read,write";
-
-        // work-around for pointbase bug 4864405      
-        permission java.io.FilePermission 
-          "${com.sun.aas.instanceRoot}${/}lib${/}databases${/}-", 
-           "delete";
-        permission java.io.FilePermission "${java.io.tmpdir}${/}-", "delete";
-
-    permission java.util.PropertyPermission "*", "read";
-
-    permission java.lang.RuntimePermission    "modifyThreadGroup";
-    permission java.lang.RuntimePermission    "getClassLoader";
-    permission java.lang.RuntimePermission    "setContextClassLoader";
-        permission javax.management.MBeanPermission 
-               "[com.sun.messaging.jms.*:*]", "*"; 
-};
-
-
-// Following grant block is only required by Connectors. If Connectors
-// are not in use the recommendation is to remove this grant.
-grant {
-        permission javax.security.auth.PrivateCredentialPermission 
-               "javax.resource.spi.security.PasswordCredential * \"*\"","read";
-};
-
-// Following grant block is only required for Reflection. If Reflection
-// is not in use the recommendation is to remove this section.
-grant {
-    permission java.lang.RuntimePermission "accessDeclaredMembers";
-};
-
-// Permissions to invoke CORBA objects in server
-grant {
-    permission com.sun.enterprise.security.CORBAObjectPermission "*", "*";
-};
-----
-
-[[gkrmo]][[GSSCG00051]][[changing-the-default-permissions]]
-
-Changing the Default Permissions
-
-The GlassFish Server internal server code is granted all permissions.
-These grants are covered by the `AllPermission` grant blocks to various
-parts of the server infrastructure code. Do not modify these entries.
-
-Application permissions are granted in the default grant block. These
-permissions apply to all code not part of the internal server code
-listed previously.
-
-The last section, beginning with the comment "Basic set of required
-permissions..." provides the basic set of permissions granted to all
-remaining code.
-
-Depending on your GlassFish Server implementation, deleting or modifying
-these permissions might be appropriate.
-
-Specifically, the following permission allows all applications to read
-and write all properties and read and write all files on the filesystem.
-
-[source,oac_no_warn]
-----
-permission java.util.PropertyPermission "*", "read,write";
- permission java.io.FilePermission       "<<ALL FILES\>>", "read,write";
-----
-
-While this grant provides optimum flexibility, it is inherently
-unsecure. For enhanced security, change this permission based on your
-real deployment needs.
-
-For example, consider removing this permission and assign default read
-and write permissions only to the application's install directory
-(context-root). (This example uses `com.sun.aas.instanceRoot`, which
-specifies the top level directory for a server instance.)
-
-[source,oac_no_warn]
-----
-grant codeBase "file:${com.sun.aas.instanceRoot}/applications/MyApp/-"
-{
-permission java.io.FilePermission "file:${com.sun.aas.instanceRoot}
-/applications/MyApp/-", "read,write";
-}
-----
-
-For any application that needs to read and write additional directories,
-you would then have to explicitly allow such permissions by adding
-specific grants. In general, you should add extra permissions only to
-the applications or modules that require them, not to all applications
-deployed to a domain.
-
-Additional permissions (see the embedded comments in `server.policy`)
-are granted specifically for using connectors and reflection. If
-connectors or reflection are not used in a particular domain, you should
-remove these permissions, because they are otherwise unnecessary.
-
-[[ghlql]][[GSSCG00205]][[auditing]]
-
-Auditing
-^^^^^^^^
-
-Auditing is the means used to capture security-related events for the
-purpose of evaluating the effectiveness of security measures. GlassFish
-Server uses audit modules to capture audit trails of all authentication
-and authorization decisions. GlassFish Server provides a default audit
-module, as well as the ability to plug in custom audit modules. The
-scope of the audit module is the entire server, which means that all the
-applications on the server will use the same audit module.
-
-For administration instructions, see link:#ghgol[Administering Audit
-Modules].
-
-[[ghlti]][[GSSCG00206]][[firewalls]]
-
-Firewalls
-^^^^^^^^^
-
-A firewall controls the flow of data between two or more networks, and
-manages the links between the networks. A firewall can consist of both
-hardware and software elements. The following guidelines pertain
-primarily to GlassFish Server:
-
-* In general, firewalls should be configured so that clients can access
-the necessary TCP/IP ports. +
-For example, if the HTTP listener is operating on port 8080, configure
-the firewall to allow HTTP requests on port 8080 only. Likewise, if
-HTTPS requests are set up for port 8081, you must configure the
-firewalls to allow HTTPS requests on port 8081.
-* If direct Remote Method Invocations over Internet Inter-ORB Protocol
-(RMI-IIOP) access from the Internet to EJB modules is required, open the
-RMI-IIOP listener port as well. +
-
-[NOTE]
-=======================================================================
-
-Opening the RMI-IIOP listener port is strongly discouraged because it
-creates security risks.
-
-=======================================================================
-
-* In double firewall architecture, you must configure the outer firewall
-to allow for HTTP and HTTPS transactions. You must configure the inner
-firewall to allow the HTTP server plug-in to communicate with GlassFish
-Server behind the firewall.
-
-[[abloj]][[GSSCG00207]][[certificates-and-ssl]]
-
-Certificates and SSL
-^^^^^^^^^^^^^^^^^^^^
-
-The following topics are addressed here:
-
-* link:#ablok[Certificates]
-* link:#ablol[Certificate Chains]
-* link:#ablqx[Certificate Files]
-* link:#ablom[Secure Sockets Layer]
-* link:#gksdc[Custom Authentication of Client Certificate in SSL Mutual
-Authentication]
-
-For administration instructions, see link:#ablqz[Administering JSSE
-Certificates].
-
-[[ablok]][[GSSCG00192]][[certificates]]
-
-Certificates
-++++++++++++
-
-Certificates, also called digital certificates, are electronic files
-that uniquely identify people and resources on the Internet.
-Certificates also enable secure, confidential communication between two
-entities. There are different kinds of certificates:
-
-* Personal certificates are used by individuals.
-* Server certificates are used to establish secure sessions between the
-server and clients through secure sockets layer (SSL) technology.
-
-Certificates are based on public key cryptography, which uses pairs of
-digital keys (very long numbers) to encrypt, or encode, information so
-the information can be read only by its intended recipient. The
-recipient then decrypts (decodes) the information to read it. A key pair
-contains a public key and a private key. The owner distributes the
-public key and makes it available to anyone. But the owner never
-distributes the private key, which is always kept secret. Because the
-keys are mathematically related, data encrypted with one key can only be
-decrypted with the other key in the pair.
-
-Certificates are issued by a trusted third party called a Certification
-Authority (CA). The CA is analogous to a passport office: it validates
-the certificate holder's identity and signs the certificate so that it
-cannot be forged or tampered with. After a CA has signed a certificate,
-the holder can present it as proof of identity and to establish
-encrypted, confidential communications. Most importantly, a certificate
-binds the owner's public key to the owner's identity.
-
-In addition to the public key, a certificate typically includes
-information such as the following:
-
-* The name of the holder and other identification, such as the URL of
-the web server using the certificate, or an individual's email address
-* The name of the CA that issued the certificate
-* An expiration date
-
-Certificates are governed by the technical specifications of the X.509
-format. To verify the identity of a user in the `certificate` realm, the
-authentication service verifies an X.509 certificate, using the common
-name field of the X.509 certificate as the principal name.
-
-[[ablol]][[GSSCG00193]][[certificate-chains]]
-
-Certificate Chains
-++++++++++++++++++
-
-A certificate chain is a series of certificates issued by successive CA
-certificates, eventually ending in a root CA certificate.
-
-Web browsers are preconfigured with a set of root CA certificates that
-the browser automatically trusts. Any certificates from elsewhere must
-come with a certificate chain to verify their validity.
-
-When a certificate is first generated, it is a self-signed certificate.
-A self-signed certificate is one for which the issuer (signer) is the
-same as the subject (the entity whose public key is being authenticated
-by the certificate). When the owner sends a certificate signing request
-(CSR) to a CA, then imports the response, the self-signed certificate is
-replaced by a chain of certificates. At the bottom of the chain is the
-certificate (reply) issued by the CA authenticating the subject's public
-key. The next certificate in the chain is one that authenticates the
-CA's public key. Usually, this is a self-signed certificate (that is, a
-certificate from the CA authenticating its own public key) and the last
-certificate in the chain.
-
-In other cases, the CA can return a chain of certificates. In this
-situation, the bottom certificate in the chain is the same (a
-certificate signed by the CA, authenticating the public key of the key
-entry), but the second certificate in the chain is a certificate signed
-by a different CA, authenticating the public key of the CA to which you
-sent the CSR. Then, the next certificate in the chain is a certificate
-authenticating the second CA's key, and so on, until a self-signed root
-certificate is reached. Each certificate in the chain (after the first)
-thus authenticates the public key of the signer of the previous
-certificate in the chain.
-
-[[ablqx]][[GSSCG00194]][[certificate-files]]
-
-Certificate Files
-+++++++++++++++++
-
-During GlassFish Server installation, a certificate is generated in Java
-Secure Socket Extension (JSSE) format suitable for internal testing.
-(The certificate is self-signed.) By default, GlassFish Server stores
-its certificate information in certificate databases in the
-domain-dir`/config` directory:
-
-Keystore file::
-  The `keystore.jks` file contains GlassFish Server certificate,
-  including its private key. The keystore file is protected with a
-  password. +
-  Each keystore entry has a unique alias. After installation, the
-  GlassFish Server keystore has a single entry with an alias of `s1as`.
-Truststore file::
-  The `cacerts.jks` file contains the GlassFish Server trusted
-  certificates, including public keys for other entities. For a trusted
-  certificate, the server has confirmed that the public key in the
-  certificate belongs to the certificate's owner. Trusted certificates
-  generally include those of CAs.
-
-By default, GlassFish Server is configured with a keystore and
-truststore that will work with the example applications and for
-development purposes.
-
-[[ablom]][[GSSCG00195]][[secure-sockets-layer]]
-
-Secure Sockets Layer
-++++++++++++++++++++
-
-Secure Sockets Layer (SSL) is the most popular standard for securing
-Internet communications and transactions. Secure web applications use
-HTTPS (HTTP over SSL). The HTTPS protocol uses certificates to ensure
-confidential and secure communications between server and clients. In an
-SSL connection, both the client and the server encrypt data before
-sending it. Data is decrypted upon receipt.
-
-When a Web browser (client) wants to connect to a secure site, an SSL
-handshake happens, like this:
-
-1.  The browser sends a message over the network requesting a secure
-session (typically, by requesting a URL that begins with `https` instead
-of `http`).
-2.  The server responds by sending its certificate (including its public
-key).
-3.  The browser verifies that the server's certificate is valid and is
-signed by a CA whose certificate is in the browser's database (and who
-is trusted). It also verifies that the CA certificate has not expired.
-4.  If the certificate is valid, the browser generates a one time,
-unique session key and encrypts it with the server's public key. The
-browser then sends the encrypted session key to the server so that they
-both have a copy.
-5.  The server decrypts the message using its private key and recovers
-the session key.
-
-After the handshake, the client has verified the identity of the Web
-site, and only the client and the Web server have a copy of the session
-key. From this point forward, the client and the server use the session
-key to encrypt all their communications with each other. Thus, their
-communications are ensured to be secure.
-
-The newest version of the SSL standard is called Transport Layer
-Security (TLS). The GlassFish Server supports the SSL 3.0 and the TLS
-1.0 encryption protocols.
-
-To use SSL, GlassFish Server must have a certificate for each external
-interface or IP address that accepts secure connections. The HTTPS
-service of most web servers will not run unless a certificate has been
-installed. For instructions on applying SSL to HTTP listeners, see
-"link:../administration-guide/http_https.html#GSADG00469[To Configure an HTTP Listener for SSL]" in GlassFish
-Server Open Source Edition Administration Guide.
-
-[[ablon]][[GSSCG00052]][[ciphers]]
-
-Ciphers
-
-A cipher is a cryptographic algorithm used for encryption or decryption.
-SSL and TLS protocols support a variety of ciphers used to authenticate
-the server and client to each other, transmit certificates, and
-establish session keys.
-
-Some ciphers are stronger and more secure than others. Clients and
-servers can support different cipher suites. During a secure connection,
-the client and the server agree to use the strongest cipher that they
-both have enabled for communication, so it is usually sufficient to
-enable all ciphers.
-
-[[abloo]][[GSSCG00053]][[name-based-virtual-hosts]]
-
-Name-based Virtual Hosts
-
-Using name-based virtual hosts for a secure application can be
-problematic. This is a design limitation of the SSL protocol itself. The
-SSL handshake, where the client browser accepts the server certificate,
-must occur before the HTTP request is accessed. As a result, the request
-information containing the virtual host name cannot be determined prior
-to authentication, and it is therefore not possible to assign multiple
-certificates to a single IP address.
-
-If all virtual hosts on a single IP address need to authenticate against
-the same certificate, the addition of multiple virtual hosts probably
-will not interfere with normal SSL operations on the server. Be aware,
-however, that most browsers will compare the server's domain name
-against the domain name listed in the certificate, if any (applicable
-primarily to official, CA-signed certificates). If the domain names do
-not match, these browsers display a warning. In general, only
-address-based virtual hosts are commonly used with SSL in a production
-environment.
-
-[[gksdc]][[GSSCG00196]][[custom-authentication-of-client-certificate-in-ssl-mutual-authentication]]
-
-Custom Authentication of Client Certificate in SSL Mutual Authentication
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-Release 4.0 of GlassFish Server extends the Certificate realm to allow
-custom authentication and group assignment based on the client
-certificate received as part of SSL mutual (two-way) authentication.
-
-As in previous releases, you can create only one certificate realm.
-However, you can now use a convenient abstract base class to configure a
-JAAS LoginModule for the Certificate realm. Specifically, your
-LoginModule can now extend
-`com.sun.appserv.security.AppservCertificateLoginModule`. When you do
-this, you need to implement only the `authenticateUser` method and call
-the `commitUserAuthentication` method to signify success.
-
-This section describes the following topics:
-
-* link:#gksfl[Understanding the `AppservCertificateLoginModule` Class]
-* link:#gksej[Example AppservCertificateLoginModule Code]
-* link:#gksee[Setting the JAAS Context]
-
-[[gksfl]][[GSSCG00054]][[understanding-the-appservcertificateloginmodule-class]]
-
-Understanding the `AppservCertificateLoginModule` Class
-
-The `AppservCertificateLoginModule` class provides some convenience
-methods for accessing the certificates, the application name and so
-forth, and for adding the group principals to the subject. The
-convenience methods include the following:
-
-`getAppName()`::
-  Returns the name of the application to be authenticated. This may be
-  useful when a single LoginModule has to handle multiple applications
-  that use certificates.
-`getCerts()`::
-  Returns the certificate chain as an array of
-  `java.security.cert.X509Certificate` certificates.
-`getX500Principal()`::
-  Returns the Distinguished principal from the first certificate in the
-  chain.
-`getSubject()`::
-  Returns the subject that is being authenticated.
-`commitUserAuthentication(final String[] groups)`::
-  This method sets the authentication status to success if the groups
-  parameter is non-null. Note that this method is called after the
-  authentication has succeeded. If authentication failed, do not call
-  this method.
-
-
-[NOTE]
-=======================================================================
-
-You do not have to extend the convenience base class, you can extend the
-JAAS LoginModule `javax.security.auth.spi.LoginModule` instead if you so
-choose.
-
-=======================================================================
-
-
-[[gksej]][[GSSCG00055]][[example-appservcertificateloginmodule-code]]
-
-Example AppservCertificateLoginModule Code
-
-link:#gksel[Example 1-1] shows a sample instance of the
-AppservCertificateLoginModule class.
-
-Take note of the following points from the example:
-
-* The `getX500Principal()` method returns the subject (subject
-distinguished name) value from the first certificate in the client
-certificate chain as an `X500Principal`.
-* From that `X500Principal`, the `getName()` method then returns a
-string representation of the X.500 distinguished name using the format
-defined in RFC 2253.
-* The example uses the `getAppName()` method to determine the
-application name. It also determines the organizational unit (`OU`) from
-the distinguished name.
-* The example concatenates the application name with the value of `OU`,
-and uses it as the group name in the `commitUserAuthentication` method.
-
-[[GSSCG00060]][[gksel]]
-
-
-Example 1-1 Sample AppservCertificateLoginModule Code
-
-[source,oac_no_warn]
-----
-/**
- *
- * @author nasradu8
- */
-public class CertificateLM extends AppservCertificateLoginModule {
-
-    @Override
-    protected void authenticateUser() throws LoginException {
-        // Get the distinguished name from the X500Principal.
-        String dname = getX500Principal().getName();
-        StringTokenizer st = new StringTokenizer(dname, "B \t\n\r\f,");
-        while (st.hasMoreTokens()) {
-            String next = st.nextToken();
-            // Set the appname:OU as the group.
-            // At this point, one has the application name and the DN of
-            // the certificate. A suitable login decision can be made here.
-            if (next.startsWith("OU=")) {
-            commitUserAuthentication(new String[]{getAppName() 
-+ ":" + next.substring(3)});
-                return;
-            }
-        }
-        throw new LoginException("No OU found.");
-    }
-}
-----
-
-[[gksee]][[GSSCG00056]][[setting-the-jaas-context]]
-
-Setting the JAAS Context
-
-After you create your LoginModule, you must plug it in to a
-jaas-context, which you then specify as a parameter to the certificate
-realm in GlassFish Server.
-
-To do this, perform the following steps:
-
-1.  Specify a new jaas-context for the Certificate realm in the file
-domain-dir`/config/login.conf`. For example, using the `CertificateLM`
-class from link:#gksej[Example AppservCertificateLoginModule Code]: +
-[source,oac_no_warn]
-----
-certRealm {
-    com.sun.blogs.certificate.login.CertificateLM required;
-};
-----
-2.  Specify this jaas-context as a parameter to the `set` subcommand in
-the
-`configs.config.server-config.security-service.auth-realm.certificate.property.jaas-context=`<jaas-context-name>
-property. For example: +
-`asadmin>`
-`set configs.config.server-config.security-service.auth-realm.certificate.property.jaas-context=certRealm` +
-`configs.config.server-config.security-service.auth-realm.certificate.property.jaas-context=certRealm` +
-`Command set executed successfully.`
-3.  Optionally, get the value you just set to make sure that it is
-correct. +
-`asadmin>`
-`get configs.config.server-config.security-service.auth-realm.certificate.property.jaas-context` +
-`configs.config.server-config.security-service.auth-realm.certificate.property.jaas-context=certRealm` +
-`Command get executed successfully.`
-
-[[ablno]][[GSSCG00208]][[tools-for-managing-system-security]]
-
-Tools for Managing System Security
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-GlassFish Server provides the following tools for managing system
-security:
-
-Administration Console::
-  The Administration Console is a browser-based utility used to
-  configure security for the entire server. Tasks include managing
-  certificates, users, groups, and realms, and performing other
-  system-wide security tasks. For a general introduction to the
-  Administration Console, see "link:../administration-guide/overview.html#GSADG00698[Administration Console]"
-  in GlassFish Server Open Source Edition Administration Guide.
-The `asadmin` utility::
-  The `asadmin` command-line utility performs many of the same tasks as
-  the Administration Console. You might be able to do some things with
-  the `asadmin` utility that you cannot do with the Administration
-  Console. For a general introduction to `asadmin`, see
-  "link:../administration-guide/overview.html#GSADG00699[asadmin Utility]" in GlassFish Server Open Source
-  Edition Administration Guide.
-The `keytool` utility::
-  The `keytool` Java Platform, Standard Edition (Java SE) command-line
-  utility is used for managing digital certificates and key pairs. For
-  more information, see link:#ablqz[Administering JSSE Certificates].
-The `policytool` utility::
-  The `policytool` Java SE graphical utility is used for managing
-  system-wide Java security policies. As an administrator, you rarely
-  use `policytool`.
-
-[[ghgrp]][[GSSCG00144]][[administering-passwords]]
-
-Administering Passwords
-~~~~~~~~~~~~~~~~~~~~~~~
-
-There are multiple ways to administer passwords. You can rely on
-administrators to keep passwords secret and change the passwords
-regularly. You can set up files for storing passwords so that `asadmin`
-subcommands can access these files rather than having users type the
-commands. You can encrypt passwords by setting up aliases so that
-sensitive passwords are not visible in the `domain.xml` file.
-
-The following topics are addressed here:
-
-* link:#giudi[To Change the Master Password]
-* link:#gktgr[Additional Considerations for the `start-instance` and
-`start-cluster` Subcommands]
-* link:#gktey[Using `start-instance` and `start-cluster` With a Password
-File]
-* link:#ghgpu[To Change an Administration Password]
-* link:#ghytn[To Set a Password From a File]
-* link:#ghgqc[Administering Password Aliases]
-
-[[giudi]][[GSSCG00093]][[to-change-the-master-password]]
-
-To Change the Master Password
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The master password gives access to the keystore used with the domain.
-This password is not tied to a UNIX user. You should treat this overall
-shared password as sensitive data. GlassFish Server never uses it for
-authentication and never transmits it over the network.
-
-You can choose to type the password manually when required, or to
-obscure the password in a password file. If there is no password file,
-you are prompted for the master password. If there is a password file,
-but you want to change access to require prompting, remove the file. The
-default master password is `changeit`.
-
-When changing the master password, it has to be changed on all nodes as
-well as on the DAS. The master password on nodes is only stored once in
-the node, for all instances that are on that node.
-
-Use the `change-master-password` subcommand in local mode to modify the
-master password.
-
-
-[NOTE]
-=======================================================================
-
-If you change the master password and are not using a master password
-file, the `start-instance` and `start-cluster` subcommands are not able
-to determine the master password. In this case, you must start those
-instances locally by using start-local-instance.
-
-=======================================================================
-
-
-When the master password is saved, it is saved in the `master-password`
-file.
-
-[[sthref6]]
-
-Before You Begin
-
-This subcommand will not work unless the domain is stopped.
-
-1.  Stop the domain whose password you are changing. +
-See "link:../administration-guide/domains.html#GSADG00336[To Stop a Domain]" in GlassFish Server Open Source
-Edition Administration Guide.
-2.  Change the master password for the domain by using the
-link:../reference-manual/change-master-password.html#GSRFM00006[`change-master-password`] subcommand. +
-You are prompted for the old and new passwords. All dependent items are
-re-encrypted.
-3.  Start the domain. +
-See "link:../administration-guide/domains.html#GSADG00335[To Start a Domain]" in GlassFish Server Open
-Source Edition Administration Guide.
-
-[[GSSCG00061]][[givil]]
-
-
-Example 1-2 Changing the Master Password
-
-The `change-master-password` subcommand is interactive in that you are
-prompted for the old master password as well as the new master password.
-This example changes the master password for `domain44ps`:
-
-[source,oac_no_warn]
-----
-asadmin> change-master-password domain44ps
-----
-
-If you have already logged into the domain using the
-link:../reference-manual/login.html#GSRFM00210[`login`] subcommand, you are prompted for the new
-master password:
-
-[source,oac_no_warn]
-----
-Please enter the new master password>
-Please enter the new master password again>
-----
-
-If you are not logged into the domain, you are prompted for both the old
-and the new master passwords:
-
-[source,oac_no_warn]
-----
-Please enter the master password>
-Please enter the new master password>
-Please enter the new master password again>
-----
-
-Information similar to the following is displayed:
-
-[source,oac_no_warn]
-----
-Master password changed for domain44ps
-----
-
-[[sthref7]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin --help change-master-password` at the command line.
-
-[[gktgr]][[GSSCG00209]][[additional-considerations-for-the-start-instance-and-start-cluster-subcommands]]
-
-Additional Considerations for the `start-instance` and `start-cluster`
-Subcommands
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-If you change the master password for DAS, the `start-domain` and
-`start-local-instance` subcommands allow you to provide it during domain
-or instance startup in one of three ways:
-
-* Via the master-password file
-* By entering it interactively
-* Via the `asadmin` `passwordfile`
-
-The `start-instance` and `start-cluster` subcommands are more
-problematic. If you create a domain with a master password other than
-the default, an associated remote instance or cluster must have access
-to the master password in order to start. However, for security reasons
-GlassFish Server never transmits the master password or the master
-password file over the network.
-
-Consider the following scenario:
-
-1.  Change the master password on the DAS and save it with
-`--savemasterpassword`.
-2.  Create an instance on another host using the subcommand
-`create-instance`. GlassFish Server copies the keystore and truststore
-from the DAS to the instance, but it does not copy the master password
-file.
-3.  Try to start the instance using the `start-instance` subcommand. An
-error results.
-
-The `start-instance` command is looking for the file master-password in
-the node directory on the instance machine, and it is not there by
-default. Therefore, the subcommand fails.
-
-You can use the `change-master-password` subcommand to make sure the
-correct password is used in this password file, as described in
-link:#gktey[Using `start-instance` and `start-cluster` With a Password
-File].
-
-
-[NOTE]
-=======================================================================
-
-The `start-instance` and `start-cluster` subcommands do not include any
-other way for you to provide the password. If you change the master
-password and are not using a master password file, the `start-instance`
-and `start-cluster` subcommands are not able to determine the master
-password. In this case, you must start the instances locally by using
-`start-local-instance`.
-
-=======================================================================
-
-
-[[gktey]][[GSSCG00094]][[using-start-instance-and-start-cluster-with-a-password-file]]
-
-Using `start-instance` and `start-cluster` With a Password File
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Assume that you have changed the master password on the DAS and you want
-to make the same change for all instances.
-
-The `start-instance` and`start-cluster` subcommands automatically use
-the master password file if it exists in the instance filesystem. You
-can use the `change-master-password` subcommand to make sure the
-password file exists and that the correct password is used.
-
-1.  From the DAS, create a domain and set the master password. +
-`asadmin>` `create-domain --savemasterpassword true` domain-name
-2.  Start the domain. +
-`asadmin>``start-domain` domain-name
-3.  Create a node that is enabled for communication over secure shell
-(SSH). +
-`asadmin>` `create-node-ssh --nodehost` host-name --installdir/some-dir
-node-name
-4.  Create an instance on the node. +
-`asadmin>` `create-instance --node` node-name instance-name
-5.  Before you start the instance, on the instance machine run
-`change-master-password` with the `---savemasterpassword` option to
-create a file called `master-password` in the agents directory to access
-the keystores. (The `start-instance` subcommand is looking for a file
-called `master-password` in the agents directory to access the stores.) +
-`asadmin>` `change-master-password --savemasterpassword true --nodedir`
-/some-dir node-name +
-You are prompted to enter the current and new master password: +
-`Enter the current master password>` +
-`Enter the new master password>` +
-`Enter the new master password again>` +
-`Command change-master-password executed successfully.` +
-Remember that when you created the domain you specified a new master
-password. This master password was then used to encrypt the keystore and
-truststore for the DAS, and these stores were copied to the instance as
-a result of the `create-instance` subcommand. +
-Therefore, enter the master password you set when you created the domain
-as both the current master password and again as the new master
-password. You enter it as the new master password because you do not
-want to change the master password for the instance and make it out of
-sync with the DAS.
-6.  Run start-instance from the DAS. +
-`asadmin>` `start-instance` instance-name +
-The master password file is associated with the node and not with an
-instance. After the master password file exists in the node directory on
-the instance machine, additional instances can be created, started and
-stopped from the DAS.
-
-[[ghgpu]][[GSSCG00095]][[to-change-an-administration-password]]
-
-To Change an Administration Password
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `change-admin-password` subcommand in remote mode to change an
-administration password. The default administration user is `admin`. You
-are prompted for the old and new admin passwords, with confirmation. The
-passwords are not echoed to the display.
-
-
-[NOTE]
-=======================================================================
-
-For the zip bundle of GlassFish Server 5.0, the default administrator
-login is `admin`, with no password, which means that no login is
-required. For Oracle GlassFish Server, you are prompted to provide a
-password for the `admin` user when you start the domain for the first
-time.
-
-=======================================================================
-
-
-
-[NOTE]
-=======================================================================
-
-If there is a single user called `admin` that does not have a password,
-you are not prompted for login information. Any other situation requires
-login.
-
-=======================================================================
-
-
-
-[NOTE]
-=======================================================================
-
-If secure administration is enabled as described in
-link:administrative-security.html#gkomz[Running Secure Admin], you cannot
-change an administration password to a blank value.
-
-=======================================================================
-
-
-Encrypting the admin password is strongly encouraged.
-
-1.  Change the admin password by using the
-link:../reference-manual/change-admin-password.html#GSRFM00004[`change-admin-password`] subcommand.
-2.  Enter the old and new admin passwords when prompted.
-3.  Restart GlassFish Server. +
-See "link:../administration-guide/domains.html#GSADG00337[To Restart a Domain]" in GlassFish Server Open
-Source Edition Administration Guide.
-
-[[GSSCG00062]][[ghlac]]
-
-
-Example 1-3 Changing the Admin Password
-
-This example changes the admin password for user anonymous from
-`adminadmin` to `newadmin`:
-
-[source,oac_no_warn]
-----
-asadmin> change-admin-password --username anonymous
-----
-
-You are prompted to enter the old and the new admin passwords:
-
-[source,oac_no_warn]
-----
-Enter admin password>adminadmin
-Enter new admin password>newadmin
-Enter new admin password again>newadmin
-----
-
-Information similar to the following is displayed:
-
-[source,oac_no_warn]
-----
-Command change-admin-password executed successfully.
-----
-
-[[sthref8]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help change-admin-password` at the command line.
-
-[[ghytn]][[GSSCG00096]][[to-set-a-password-from-a-file]]
-
-To Set a Password From a File
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Instead of typing the password at the command line, you can access the
-password for a command from a file such as `passwords.txt`. The
-`--passwordfile` option of the `asadmin` utility takes the name of the
-file that contains the passwords. The entry for a password in the file
-must have the `AS_ADMIN_` prefix followed by the password name in
-uppercase letters.
-
-
-[NOTE]
-=======================================================================
-
-Any password file created to pass as an argument by using the
-`--passwordfile` argument to the `asadmin` utility should be protected
-with file system permissions. Additionally, any password file being used
-for a transient purpose, such as setting up SSH among nodes, should be
-deleted after it has served its purpose.
-
-=======================================================================
-
-
-For a list of the types of passwords that can be specified, see the
-link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] help page.
-
-[source,oac_no_warn]
-----
-AS_ADMIN_MASTERPASSWORD
-AS_ADMIN_USERPASSWORD
-AS_ADMIN_ALIASPASSWORD
-----
-
-1.  Edit the password file. +
-For example, to specify the password for the domain administration
-server (DAS), add an entry similar to the following to the password
-file, where `adminadmin` is the administrator password: +
-[source,oac_no_warn]
-----
-AS_ADMIN_PASSWORD=adminadmin 
-----
-2.  Save the password file. +
-You can now specify the password file in an `asadmin` subcommand. In
-this example, `passwords.txt` is the file that contains the password: +
-[source,oac_no_warn]
-----
-asadmin>delete-jdbc-resource --user admin --passwordfile passwords.txt jdbc/DerbyPool
-----
-
-[[sthref9]]
-
-Troubleshooting
-
-If `AS_ADMIN_PASSWORD` has been exported to the global environment,
-specifying the `--passwordfile` option will produce a warning about
-using the `--passwordfile` option. To prevent this warning situation
-from happening, unset `AS_ADMIN_PASSWORD`.
-
-[[ghgqc]][[GSSCG00210]][[administering-password-aliases]]
-
-Administering Password Aliases
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A password alias is used to indirectly access a password so that the
-password itself does not appear in cleartext in the domain's
-`domain.xml` configuration file.
-
-Storing passwords in cleartext format in system configuration files is
-common in many open source projects. In addition to GlassFish Server,
-Apache Tomcat, Maven, and Subversion, among others, store and pass
-passwords in cleartext format. However, storing and passing passwords in
-cleartext can be a security risk, and may violate some corporate
-security policies. In such cases, you can use password aliases.
-
-The following topics are addressed here:
-
-* link:#ghgrf[To Create a Password Alias]
-* link:#ghgsr[To List Password Aliases]
-* link:#ghgnv[To Delete a Password Alias]
-* link:#giobz[To Update a Password Alias]
-
-[[ghgrf]][[GSSCG00097]][[to-create-a-password-alias]]
-
-To Create a Password Alias
-++++++++++++++++++++++++++
-
-Use the `create-password-alias` subcommand in remote mode to create an
-alias for a password in the domain's keystore. The password
-corresponding to the alias name is stored in an encrypted form in the
-domain configuration file. The `create-password-alias` subcommand takes
-both a secure interactive form, in which users are prompted for all
-information, and a more script-friendly form, in which the password is
-propagated on the command line.
-
-You can also use the link:../reference-manual/set.html#GSRFM00226[`set`] subcommand to remove and
-replace the password in the configuration file. For example:
-
-[source,oac_no_warn]
-----
-asadmin set --user admin server.jms-service.jms-host.default_JMS_host.
-admin-password='${ALIAS=jms-password}'
-----
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Go to the directory where the configuration file resides. +
-By default, the configuration file is located in domain-dir`/config`.
-3.  Create the password alias by using the
-link:../reference-manual/create-password-alias.html#GSRFM00049[`create-password-alias`] subcommand.
-4.  Type the password for the alias when prompted.
-5.  Add the alias to a password file. +
-For example, assume the use of a password file such as `passwords.txt`.
-Assume further that you want to add an alias for the
-`AS_ADMIN_USERPASSWORD` entry that is read by the
-link:../reference-manual/create-file-user.html#GSRFM00024[`create-file-user`] subcommand. You would add the
-following line to the password file:
-`AS_ADMIN_USERPASSWORD=${ALIAS=`user-password-alias}, where
-user-password-alias is the new password alias.
-6.  To continue the example of the previous step, you would then run the
-link:../reference-manual/create-file-user.html#GSRFM00024[`create-file-user`] subcommand. +
-You could use this method to create several users (user1, user2, and so
-forth), all with the same password. +
-`asadmin>` `--passwordfile``passwords.txt create-file-user` user1
-
-[[GSSCG00063]][[ginvi]]
-
-
-Example 1-4 Creating a Password Alias
-
-This example creates the new `jms-password` alias for the `admin` user:
-
-[source,oac_no_warn]
-----
-asadmin> create-password-alias --user admin jms-password
-----
-
-You are prompted to type the password for the alias:
-
-[source,oac_no_warn]
-----
-Please enter the alias password>secret-password
-Please enter the alias password again>secret-password
-Command create-password-alias executed successfully.
-----
-
-[[sthref10]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-password-alias` at the command line.
-
-[[ghgsr]][[GSSCG00098]][[to-list-password-aliases]]
-
-To List Password Aliases
-++++++++++++++++++++++++
-
-Use the `list-password-aliases` subcommand in remote mode to list
-existing the password aliases.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List password aliases by using the
-link:../reference-manual/list-password-aliases.html#GSRFM00190[`list-password-aliases`] subcommand.
-
-[[GSSCG00064]][[ginsk]]
-
-
-Example 1-5 Listing Password Aliases
-
-This example lists the existing password aliases:
-
-[source,oac_no_warn]
-----
-asadmin> list-password aliases
-jmspassword-alias
-Command list-password-aliases executed successfully
-----
-
-[[sthref11]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-password-aliases` at the command line.
-
-[[ghgnv]][[GSSCG00099]][[to-delete-a-password-alias]]
-
-To Delete a Password Alias
-++++++++++++++++++++++++++
-
-Use the `delete-password-alias` subcommand in remote mode to delete an
-existing password alias.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List all aliases by using the
-link:../reference-manual/list-password-aliases.html#GSRFM00190[`list-password-aliases`] subcommand.
-3.  Delete a password alias by using the
-link:../reference-manual/list-password-aliases.html#GSRFM00190[`list-password-aliases`] subcommand.
-
-[[GSSCG00065]][[ginul]]
-
-
-Example 1-6 Deleting a Password Alias
-
-This example deletes the password alias `jmspassword-alias`:
-
-[source,oac_no_warn]
-----
-asadmin> delete-password-alias jmspassword-alias
-Command list-password-aliases executed successfully
-----
-
-[[sthref12]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-password-alias` at the command line.
-
-[[giobz]][[GSSCG00100]][[to-update-a-password-alias]]
-
-To Update a Password Alias
-++++++++++++++++++++++++++
-
-Use the `update-password-alias` subcommand in remote mode to change the
-password for an existing password alias. The `update-password-alias`
-subcommand takes both a secure interactive form, in which the user is
-prompted for all information, and a more script-friendly form, in which
-the password is propagated on the command line.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Update an alias by using the
-link:../reference-manual/update-password-alias.html#GSRFM00257[`update-password-alias`] subcommand.
-3.  Type the password when prompted.
-
-[[GSSCG00066]][[giodl]]
-
-
-Example 1-7 Updating a Password Alias
-
-This example updates the password for the `jmspassword-alias` alias:
-
-[source,oac_no_warn]
-----
-asadmin> update-password-alias jsmpassword-alias
-----
-
-You are prompted to type the new password for the alias:
-
-[source,oac_no_warn]
-----
-Please enter the alias password>new-secret-password
-Please enter the alias password again>new-secret-password
-Command update-password-alias executed successfully
-----
-
-[[sthref13]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help update-password-alias` at the command line.
-
-[[ghgol]][[GSSCG00146]][[administering-audit-modules]]
-
-Administering Audit Modules
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following topics are addressed here:
-
-* link:#ghgra[To Create an Audit Module]
-* link:#ghgsm[To List Audit Modules]
-* link:#ghgpo[To Delete an Audit Module]
-
-[[ghgra]][[GSSCG00101]][[to-create-an-audit-module]]
-
-To Create an Audit Module
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `create-audit-module` subcommand in remote mode to create an
-audit module for the add-on component that implements the audit
-capabilities.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Create an audit module by using the
-link:../reference-manual/create-audit-module.html#GSRFM00014[`create-audit-module`] subcommand. +
-Information about properties for this subcommand is included in this
-help page.
-
-[[GSSCG00067]][[ghjlw]]
-
-
-Example 1-8 Creating an Audit Module
-
-This example creates an audit module named `sampleAuditModule`:
-
-[source,oac_no_warn]
-----
-asadmin> create-audit-module 
---classname com.sun.appserv.auditmodule --property defaultuser=
-admin:Password=admin sampleAuditModule
-Command create-audit-module executed successfully.
-----
-
-[[sthref14]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-audit-module` at the command line.
-
-[[ghgsm]][[GSSCG00102]][[to-list-audit-modules]]
-
-To List Audit Modules
-^^^^^^^^^^^^^^^^^^^^^
-
-Use the `list-audit-modules` subcommand in remote mode to list the audit
-modules on one of the following targets:
-
-* Server instance, `server` (the default)
-* Specified server instance
-* Specified configuration
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the audit modules by using the
-link:../reference-manual/list-audit-modules.html#GSRFM00149[`list-audit-modules`] subcommand.
-
-[[GSSCG00068]][[ghjmy]]
-
-
-Example 1-9 Listing Audit Modules
-
-This example lists the audit modules on `localhost`:
-
-[source,oac_no_warn]
-----
-asadmin> list-audit-modules
-audit-module : default
-audit-module : sampleAuditModule
-Command list-audit-modules executed successfully.
-----
-
-[[sthref15]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-audit-modules` at the command line.
-
-[[ghgpo]][[GSSCG00104]][[to-delete-an-audit-module]]
-
-To Delete an Audit Module
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `delete-audit-module` subcommand in remote mode to delete an
-existing audit module.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List the audit modules by using the
-link:../reference-manual/list-audit-modules.html#GSRFM00149[`list-audit-modules`] subcommand.
-3.  Delete an audit module by using the
-link:../reference-manual/delete-audit-module.html#GSRFM00065[`delete-audit-module`] subcommand.
-
-[[GSSCG00070]][[ghjhm]]
-
-
-Example 1-10 Deleting an Audit Module
-
-This example deletes `sampleAuditModule`:
-
-[source,oac_no_warn]
-----
-asadmin> delete-audit-module sampleAuditModule
-Command delete-audit-module executed successfully.
-----
-
-[[ablqz]][[GSSCG00147]][[administering-jsse-certificates]]
-
-Administering JSSE Certificates
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-In the developer profile, the GlassFish Server 5.0 uses the JSSE format
-on the server side to manage certificates and key stores. In all
-profiles, the client side (appclient or stand-alone) uses the JSSE
-format.
-
-The Java SE SDK ships with the `keytool` utility, which enables you to
-set up and work with Java Secure Socket Extension (JSSE) digital
-certificates. You can administer public/private key pairs and associated
-certificates, and cache the public keys (in the form of certificates) of
-their communicating peers.
-
-The following topics are addressed here:
-
-* link:#ghlgv[To Generate a Certificate by Using `keytool`]
-* link:#ghlgj[To Sign a Certificate by Using `keytool`]
-* link:#ghleq[To Delete a Certificate by Using `keytool`]
-
-[[ghlgv]][[GSSCG00105]][[to-generate-a-certificate-by-using-keytool]]
-
-To Generate a Certificate by Using `keytool`
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-By default, the `keytool` utility creates a keystore file in the
-directory where the utility is run.
-
-[[sthref16]]
-
-Before You Begin
-
-To run the `keytool` utility, your shell environment must be configured
-so that the Java SE `/bin` directory is in the path, otherwise the full
-path to the utility must be present on the command line.
-
-1.  Change to the directory that contains the keystore and truststore
-files. +
-Always generate the certificate in the directory containing the keystore
-and truststore files. The default is domain-dir`/config`.
-2.  Generate the certificate in the keystore file, `keystore.jks`, using
-the following command format: +
-[source,oac_no_warn]
-----
-keytool -genkey -alias keyAlias-keyalg RSA
- -keypass changeit
- -storepass changeit
-keystore keystore.jks
-----
-Use any unique name as your keyAlias. If you have changed the keystore
-or private key password from the default (`changeit`), substitute the
-new password for `changeit`. The default key password alias is `s1as`. +
-A prompt appears that asks for your name, organization, and other
-information.
-3.  Export the generated certificate to the `server.cer` file (or
-`client.cer` if you prefer), using the following command format: +
-[source,oac_no_warn]
-----
-keytool -export -alias keyAlias-storepass changeit
- -file server.cer
- -keystore keystore.jks
-----
-4.  If a certificate signed by a certificate authority is required, see
-link:#ghlgj[To Sign a Certificate by Using `keytool`].
-5.  Create the `cacerts.jks` truststore file and add the certificate to
-the truststore, using the following command format: +
-[source,oac_no_warn]
-----
-keytool -import -v -trustcacerts
--alias keyAlias
- -file server.cer
--keystore cacerts.jks
- -keypass changeit
-----
-If you have changed the keystore or private key password from the
-default (`changeit`), substitute the new password. +
-Information about the certificate is displayed and a prompt appears
-asking if you want to trust the certificate.
-6.  Type `yes`, then press Enter. +
-Information similar to the following is displayed: +
-[source,oac_no_warn]
-----
-Certificate was added to keystore
-[Saving cacerts.jks]
-----
-7.  To apply your changes, restart GlassFish Server. See
-"link:../administration-guide/domains.html#GSADG00337[To Restart a Domain]" in GlassFish Server Open Source
-Edition Administration Guide.
-
-[[GSSCG00071]][[ghlii]]
-
-
-Example 1-11 Creating a Self-Signed Certificate in a JKS Keystore by
-Using an RSA Key Algorithm
-
-RSA is public-key encryption technology developed by RSA Data Security,
-Inc.
-
-[source,oac_no_warn]
-----
-keytool -genkey -noprompt -trustcacerts -keyalg RSA -alias ${cert.alias} 
--dname ${dn.name} -keypass ${key.pass} -keystore ${keystore.file} 
--storepass ${keystore.pass}
-----
-
-[[GSSCG00072]][[ghlew]]
-
-
-Example 1-12 Creating a Self-Signed Certificate in a JKS Keystore by
-Using a Default Key Algorithm
-
-[source,oac_no_warn]
-----
-keytool -genkey -noprompt -trustcacerts -alias ${cert.alias} -dname 
-${dn.name} -keypass ${key.pass} -keystore ${keystore.file} -storepass 
-${keystore.pass}
-----
-
-[[GSSCG00073]][[ghldw]]
-
-
-Example 1-13 Displaying Available Certificates From a JKS Keystore
-
-[source,oac_no_warn]
-----
-keytool -list -v -keystore ${keystore.file} -storepass ${keystore.pass}
-----
-
-[[GSSCG00074]][[ghlfd]]
-
-
-Example 1-14 Displaying Certificate information From a JKS Keystore
-
-[source,oac_no_warn]
-----
-keytool -list -v -alias ${cert.alias} -keystore ${keystore.file} 
--storepass ${keystore.pass}
-----
-
-[[sthref17]]
-
-See Also
-
-[[ghlgj]][[GSSCG00106]][[to-sign-a-certificate-by-using-keytool]]
-
-To Sign a Certificate by Using `keytool`
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-After creating a certificate, the owner must sign the certificate to
-prevent forgery. E-commerce sites, or those for which authentication of
-identity is important, can purchase a certificate from a well-known
-Certificate Authority (CA).
-
-
-[NOTE]
-=======================================================================
-
-If authentication is not a concern, for example if private secure
-communications are all that is required, you can save the time and
-expense involved in obtaining a CA certificate by using a self-signed
-certificate.
-
-=======================================================================
-
-
-1.  Delete the default self-signed certificate: +
-[source,oac_no_warn]
-----
-keytool -delete -alias s1as -keystore keystore.jks -storepass <store_passwd>
-----
-where <store_passwd> is the password for the keystore. For example,
-"mypass". Note that `s1as` is the default alias of the GlassFish Server
-keystore.
-2.  Generate a new key pair for the application server: +
-[source,oac_no_warn]
-----
-keytool -genkeypair -keyalg <key_alg> -keystore keystore.jks 
--validity <val_days> -alias s1as 
-----
-where <key_alg> is the algorithm to be used for generating the key pair,
-for example RSA, and <val_days> is the number of days that the
-certificate should be considered valid. For example, 365. +
-In addition to generating a key pair, the command wraps the public key
-into a self-signed certificate and stores the certificate and the
-private key in a new keystore entry identified by the alias. +
-For HTTPS hostname verification, it is important to ensure that the name
-of the certificate (CN) matches the fully-qualified hostname of your
-site (fully-qualified domain name). If the names do not match, clients
-connecting to the server will see a security alert stating that the name
-of the certificate does not match the name of the site.
-3.  Generate a Certificate Signing Request (CSR): +
-[source,oac_no_warn]
-----
-keytool -certreq -alias s1as -file <certreq_file> -keystore keystore.jks 
--storepass <store_passwd>
-----
-where <certreq_file> is the file in which the CSR is stored (for
-example, `s1as.csr`) and <store_passwd> is the password for the
-keystore. For example, changeit.
-4.  Submit the CSR to a Certificate Authority such as VeriSign (at
-`http://www.verisign.com/ssl/buy-ssl-certificates/index.html`). In
-response, you should receive a signed server certificate. Make sure to
-import into your browser the CA certificate of the CA (if not already
-present) and any intermediate certificates indicated by the CA in the
-reply.
-5.  Store the signed server certificate from the CA, including the
-markers `-----BEGIN CERTIFICATE-----` and `-----END CERTIFICATE-----`,
-into a file such as `s1as.cert`. Download the CA certificate and any
-intermediate CA certificates and store them in local files.
-6.  Import the CA certificate (if not already present) and any
-intermediate CA certificates (if not already present) indicated by the
-CA into the truststore `cacerts.jks`: +
-[source,oac_no_warn]
-----
-keytool -import -v -trustcacerts -alias <CA-Name> -file ca.cert 
- -keystore cacerts.jks -storepass <store_passwd>
-----
-7.  Replace the original self-signed certificate with the certificate
-you obtained from the CA, as stored in a file such as `s1as.cert`: +
-[source,oac_no_warn]
-----
-keytool -import -v -trustcacerts -alias s1as -file s1as.cert
-   -keystore keystore.jks -storepass <store_passwd>
-----
-When you import the certificate using the same original alias`s1as`,
-keytool treats it as a command to replace the original certificate with
-the certificate obtained as a reply to a CSR. +
-After running the command, you should see that the certificate `s1as` in
-the keystore is no longer the original self-signed certificate, but is
-now the response certificate from the CA. +
-Consider the following example that compares an original `s1as`
-certificate with a new `s1as` certificate obtained from VeriSign: +
-[source,oac_no_warn]
-----
-Original s1as (self-signed):
-
-Owner: CN=FQDN, OU=Sun Java System Application Server, O=Sun
-Microsystems, L=Santa Clara, ST=California, C=US
-Issuer: CN=KUMAR, OU=Sun Java System Application Server, O=Su
-n Microsystems, L=Santa Clara, ST=California, C=US
-Serial number: 472acd34
-Valid from: Fri Nov 02 12:39:40 GMT+05:30 2007 until: Mon Oct
-30 12:39:40 GMT+05:30 2017
-
-New s1as (contains signed cert from CA):
-
-Owner: CN=FQDN, OU=Terms of use at www.verisign.com/cps/test
-ca (c)05, OU=Sun Java System Application Server, O=Sun Micros
-ystems, L=Santa Clara, ST=California, C=US
-Issuer: CN=VeriSign Trial Secure Server Test CA, OU=Terms of
-use at https://www.verisign.com/cps/testca (c)05, OU="For Test
-Purposes Only. No assurances.", O="VeriSign, Inc.", C=US
-Serial number: 1375de18b223508c2cb0123059d5c440
-Valid from: Sun Nov 11 05:30:00 GMT+05:30 2007 until: Mon Nov
-26 05:29:59 GMT+05:30 2007
-----
-8.  To apply your changes, restart GlassFish Server. +
-See "link:../administration-guide/domains.html#GSADG00337[To Restart a Domain]" in GlassFish Server Open
-Source Edition Administration Guide.
-
-[[GSSCG00075]][[ghlhu]]
-
-
-Example 1-15 Importing an RFC/Text-Formatted Certificate Into a JKS
-Keystore
-
-Certificates are often stored using the printable encoding format
-defined by the Internet Request for Comments (RFC) 1421 standard instead
-of their binary encoding. This certificate format, also known as Base 64
-encoding, facilitates exporting certificates to other applications by
-email or through some other mechanism.
-
-[source,oac_no_warn]
-----
-keytool -import -noprompt -trustcacerts -alias ${cert.alias} -file 
-${cert.file} -keystore ${keystore.file} -storepass ${keystore.pass}
-----
-
-[[GSSCG00076]][[ghlim]]
-
-
-Example 1-16 Exporting a Certificate From a JKS Keystore in PKCS7 Format
-
-The reply format defined by the Public Key Cryptography Standards #7,
-Cryptographic Message Syntax Standard, includes the supporting
-certificate chain in addition to the issued certificate.
-
-[source,oac_no_warn]
-----
-keytool -export -noprompt -alias ${cert.alias} -file ${cert.file} 
--keystore ${keystore.file} -storepass ${keystore.pass}
-----
-
-[[GSSCG00077]][[ghleb]]
-
-
-Example 1-17 Exporting a Certificate From a JKS Keystore in RFC/Text
-Format
-
-[source,oac_no_warn]
-----
-keytool -export -noprompt -rfc -alias ${cert.alias} -file 
-${cert.file} -keystore ${keystore.file} -storepass ${keystore.pass}
-----
-
-[[sthref18]]
-
-See Also
-
-[[ghleq]][[GSSCG00107]][[to-delete-a-certificate-by-using-keytool]]
-
-To Delete a Certificate by Using `keytool`
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `keytool` `delete` command to delete an existing certificate.
-
-Delete a certificate using the following command format:
-
-[source,oac_no_warn]
-----
-keytool -delete
- -alias keyAlias
- -keystore keystore-name
- -storepass password
-----
-
-[[GSSCG00078]][[ghlgy]]
-
-
-Example 1-18 Deleting a Certificate From a JKS Keystore
-
-[source,oac_no_warn]
-----
-keytool -delete -noprompt -alias ${cert.alias} -keystore ${keystore.file} 
--storepass ${keystore.pass}
-----
-
-[[sthref19]]
-
-See Also
-
-[[gkngj]][[GSSCG00148]][[administering-jacc-providers]]
-
-Administering JACC Providers
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The Java Authorization Contract for Containers (JACC) is part of the
-J2EE 1.4 specification that defines an interface for pluggable
-authorization providers. This enables the administrator to set up
-third-party plug-in modules to perform authorization.
-
-GlassFish Server includes Administration Console support and subcommands
-to support JACC providers, as follows:
-
-* create `create-jacc-provider`
-* delete `delete-jacc-provider`
-* list `list-jacc-providers`
-
-The default GlassFish Server installation includes two JACC providers,
-named default and simple. You should not delete these default providers.
-Any JACC providers you create with the `create-jacc-provider` subcommand
-are in addition to these two default providers.
-
-The GlassFish Server creates a JSR-115-compliant JACC provider that you
-can use with third-party authorization modules for applications running
-in GlassFish Server. The JACC provider is created as a `jacc-provider`
-element within the security-service element in the domain's `domain.xml`
-file.
-
-[[gksgp]][[GSSCG00108]][[administering-jacc-providers-from-the-administration-console]]
-
-Administering JACC Providers From the Administration Console
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To use the Administration Console to administer JACC providers, perform
-the following steps:
-
-1.  Select Configurations and expand the entry.
-2.  Select the server configuration for which you want to administer
-JACC providers and expand the entry.
-3.  Select Security and expand the entry.
-4.  Select JACC Providers. The JACC Providers page is displayed. The
-existing JACC providers are shown on this page. +
-image:img/jacc-providers.png[
-"This screen shot shows the default JACC providers."]
-
-5.  To create a new provider, click New. +
-Enter the Name, Policy Configuration (the class that implements the
-policy configuration factory) and the Policy Provider (the class that
-implements the policy factory) for the new JACC provider. You can also
-enter optional properties (name/value) for the provider.
-6.  To delete an existing JACC provider, select that provider and click
-Delete.
-
-[[gksfx]][[GSSCG00109]][[administering-jacc-providers-from-the-command-line]]
-
-Administering JACC Providers from the Command Line
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To use the command line to administer JACC providers, perform the
-following steps:
-
-1.  To create a JACC provider, use the `create-jacc-provider`
-subcommand. The following example shows how to create a JACC provider
-named testJACC on the default server target. +
-[source,oac_no_warn]
-----
-asadmin> create-jacc-provider
-       --policyproviderclass org.glassfish.exousia.modules.locked.SimplePolicyProvider
-       --policyconfigfactoryclass com.sun.enterprise.security.provider.PolicyCon
-figurationFactoryImpl
-       testJACC
-----
-2.  To delete a JACC provider, use the `create-jacc-provider`
-subcommand. The following example shows how to delete a JACC provider
-named testJACC from the default domain: +
-[source,oac_no_warn]
-----
-asadmin> delete-jacc-provider testJACC
-----
-3.  To list the available providers, use the `list-jacc-providers`
-subcommand. The following example shows how to list JACC providers for
-the default domain: +
-[source,oac_no_warn]
-----
-asadmin> list-jacc-providers
-default
-simple
-Command list-jacc-providers executed successfully.
-----
-
-
diff --git a/docs/security-guide/src/main/jbake/content/title.adoc b/docs/security-guide/src/main/jbake/content/title.adoc
deleted file mode 100644
index 1726d9f..0000000
--- a/docs/security-guide/src/main/jbake/content/title.adoc
+++ /dev/null
@@ -1,45 +0,0 @@
-type=page
-status=published
-title=Eclipse GlassFish Server Security Guide, Release 5.1
-next=preface.html
-prev=lot.html
-~~~~~~
-Eclipse GlassFish Server Security Guide, Release 5.1
-====================================================
-
-[[eclipse-glassfish-server]]
-Eclipse GlassFish Server
-------------------------
-
-Security Guide
-
-Release 5.1
-
-Contributed 2018, 2019
-
-This book provides instructions for configuring and administering
-GlassFish Server security.
-
-[[sthref1]]
-
-'''''
-
-Eclipse GlassFish Server Security Guide, Release 5.1
-
-Copyright © 2013, 2019 Oracle and/or its affiliates. All rights reserved.
-
-This program and the accompanying materials are made available under the 
-terms of the Eclipse Public License v. 2.0, which is available at 
-http://www.eclipse.org/legal/epl-2.0. 
-
-SPDX-License-Identifier: EPL-2.0
-
-Oracle and Java are registered trademarks of Oracle and/or its 
-affiliates. Other names may be trademarks of their respective owners. 
-
-Intel and Intel Xeon are trademarks or registered trademarks of Intel 
-Corporation. All SPARC trademarks are used under license and are 
-trademarks or registered trademarks of SPARC International, Inc. AMD, 
-Opteron, the AMD logo, and the AMD Opteron logo are trademarks or 
-registered trademarks of Advanced Micro Devices. UNIX is a registered 
-trademark of The Open Group. 
diff --git a/docs/security-guide/src/main/jbake/content/user-security.adoc b/docs/security-guide/src/main/jbake/content/user-security.adoc
deleted file mode 100644
index f96e370..0000000
--- a/docs/security-guide/src/main/jbake/content/user-security.adoc
+++ /dev/null
@@ -1,834 +0,0 @@
-type=page
-status=published
-title=Administering User Security
-next=message-security.html
-prev=system-security.html
-~~~~~~
-Administering User Security
-===========================
-
-[[GSSCG00036]][[ggnqj]]
-
-
-[[administering-user-security]]
-2 Administering User Security
------------------------------
-
-This chapter provides instructions for administering user security in
-the Oracle GlassFish Server environment by using the `asadmin`
-command-line utility. GlassFish Server enforces its authentication and
-authorization policies upon realms, users, and groups. This chapter
-assumes that you are familiar with security features such as
-authentication, authorization, and certificates. If you are not, see
-link:system-security.html#ablnk[Administering System Security].
-
-The following topics are addressed here:
-
-* link:#ggkuk[Administering Authentication Realms]
-* link:#ggnxq[Administering File Users]
-
-Instructions for accomplishing these tasks by using the Administration
-Console are contained in the Administration Console online help.
-
-
-[NOTE]
-=======================================================================
-
-JSR-375 defines the concept of an Identity Store, and an SPI interface
-for writing providers that can authenticate users against Identity
-Stores. It also provides two built-in providers. This mechanism is
-conceptually similar to Authentication Realms, but can be configured and
-managed by applications. See
-https://javaee.github.io/tutorial/security-intro005a.html#working-with-identity-stores[Working
-with Identity Stores] in The Java EE Tutorial for more information about
-Identity Stores.
-
-=======================================================================
-
-
-[[ggkuk]][[GSSCG00151]][[administering-authentication-realms]]
-
-Administering Authentication Realms
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following topics are addressed here:
-
-* link:#gkbiy[Overview of Authentication Realms]
-* link:#ggnca[To Create an Authentication Realm]
-* link:#ggngh[To List Authentication Realms]
-* link:#giwlt[To Update an Authentication Realm]
-* link:#ggngf[To Delete an Authentication Realm]
-* link:#ggmww[To Configure a JDBC or Digest Authentication Realm]
-* link:#gkbeo[To Configure LDAP Authentication with OID]
-* link:#gksgi[To Configure LDAP Authentication with OVD]
-* link:#gkbjp[To Enable LDAP Authentication on the GlassFish Server DAS]
-
-[[gkbiy]][[GSSCG00217]][[overview-of-authentication-realms]]
-
-Overview of Authentication Realms
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-An authentication realm, also called a security policy domain or
-security domain, is a scope over which the GlassFish Server defines and
-enforces a common security policy. GlassFish Server is preconfigured
-with the file, certificate, and administration realms. In addition, you
-can set up LDAP, JDBC, digest, Oracle Solaris, or custom realms. An
-application can specify which realm to use in its deployment descriptor.
-If the application does not specify a realm, GlassFish Server uses its
-default realm (`file`).
-
-File realm::
-  GlassFish Server stores user credentials locally in a file named
-  `keyfile`. The file realm is the initial default realm.
-Administration realm::
-  The administration realm is also a file realm and stores administrator
-  user credentials locally in a file named `admin-keyfile`.
-Certificate realm::
-  GlassFish Server stores user credentials in a certificate database.
-  When using the certificate realm, the server uses certificates with
-  the HTTPS protocol to authenticate web clients.
-LDAP realm::
-  GlassFish Server can get user credentials from a Lightweight Directory
-  Access Protocol (LDAP) server such as Oracle Virtual Directory (OVD)
-  (`http://www.oracle.com/technetwork/middleware/id-mgmt/overview/index.html`),
-  Oracle Internet Directory (OID)
-  (`http://www.oracle.com/technetwork/indexes/products/index.html`), and
-  Oracle Directory Server Enterprise Edition
-  (`http://www.oracle.com/us/products/middleware/identity-management/oracle-directory-services/index.html`).
-  LDAP is a protocol for enabling anyone to locate organizations,
-  individuals, and other resources such as files and devices in a
-  network, whether on the public Internet or on a corporate intranet. +
-  See link:#gkbeo[To Configure LDAP Authentication with OID] for
-  instructions on configuring GlassFish Server to work with an OVD/OID
-  LDAP provider. +
-
-[width="100%",cols="100%",]
-|=======================================================================
-a|
-Note:
-
-By default, GlassFish Server performs LDAP group search. If you have
-not created any groups in LDAP, the search fails.
-
-To disable LDAP group search in LDAP user name search, set the
-`com.oracle.enterprise.security.auth.realm.ldap.DISABLEGROUP_SEARCH`
-Java system property to `true` in the required GlassFish Server
-instance or cluster configurations:
-
-`asadmin>` `create-jvm-options --target=`target +
-`-Dcom.oracle.enterprise.security.auth.realm.ldap.DISABLEGROUP_SEARCH=true`
-
-where target is the GlassFish Server instance or cluster for which you
-are disabling LDAP group search. For more information about the
-`create-jvm-options` subcommand, see the link:../reference-manual/toc.html#GSRFM[GlassFish Server
-Open Source Edition Reference Manual].
-
-|=======================================================================
-
-JDBC realm::
-  GlassFish Server gets user credentials from a database. The server
-  uses the database information and the enabled JDBC realm option in the
-  configuration file.
-Digest realm::
-  Digest Authentication authenticates a user based on a user name and a
-  password. However, the authentication is performed by transmitting the
-  password in an encrypted form.
-Oracle Solaris realm::
-  GlassFish Server gets user credentials from the Oracle Solaris
-  operating system. This realm is supported on the Oracle Solaris 9 and
-  Oracle Solaris 10 operating systems. Consult your Oracle Solaris
-  documentation for information about managing users and groups in the
-  Oracle Solaris realm.
-PAM realm::
-  A Pluggable Authentication Module (PAM) realm allows applications
-  deployed on GlassFish Server to authenticate users against a native
-  Unix (Solaris/Linux/Mac OS) users list. PAM realms use the class name
-  `com.sun.enterprise.security.auth.realm.pam.PamRealm` and the JAAS
-  Context `pamRealm`. +
-  This realm is supported on all Unix Operating Systems, including the
-  Oracle Solaris 9 and Oracle Solaris 10 operating systems
-Custom realm::
-  You can create other repositories for user credentials, such as a
-  relational database or third-party components. For more information
-  about custom realms, see the Administration Console online help. For
-  instructions on creating a custom realm, see
-  "link:../application-development-guide/securing-apps.html#GSDVG00367[Creating a Custom Realm]" in GlassFish Server Open
-  Source Edition Application Development Guide.
-
-The GlassFish Server authentication service can govern users in multiple
-realms.
-
-[[ggnca]][[GSSCG00110]][[to-create-an-authentication-realm]]
-
-To Create an Authentication Realm
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `create-auth-realm` subcommand in remote mode to create an
-authentication realm.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Create a realm by using the link:../reference-manual/create-auth-realm.html#GSRFM00015[`create-auth-realm`]
-subcommand. +
-Information about properties for this subcommand is included in this
-help page.
-
-[[GSSCG00079]][[ggpjx]]
-
-
-Example 2-1 Creating a Realm
-
-This example creates a realm named `db`.
-
-[source,oac_no_warn]
-----
-asadmin> create-auth-realm --classname com.iplanet.ias.security.
-auth.realm.DB.Database --property defaultuser=admin:Password=admin db
-Command create-auth-realm executed successfully.
-----
-
-[[sthref21]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-auth-realm` at the command line.
-
-For information on creating a custom realm, see
-"link:../application-development-guide/securing-apps.html#GSDVG00367[Creating a Custom Realm]" in GlassFish Server Open
-Source Edition Application Development Guide.
-
-[[ggngh]][[GSSCG00111]][[to-list-authentication-realms]]
-
-To List Authentication Realms
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `list-auth-realms` subcommand in remote mode to list the
-existing authentication realms.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List realms by using the link:../reference-manual/list-auth-realms.html#GSRFM00150[`list-auth-realms`]
-subcommand.
-
-[[GSSCG00080]][[ggpkw]]
-
-
-Example 2-2 Listing Realms
-
-This example lists the authentication realms on `localhost`.
-
-[source,oac_no_warn]
-----
-asadmin> list-auth-realms
-db
-certificate
-file
-admin-realm
-Command list-auth-realms executed successfully.
-----
-
-[[sthref22]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-auth-realms` at the command line.
-
-[[giwlt]][[GSSCG00112]][[to-update-an-authentication-realm]]
-
-To Update an Authentication Realm
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `set` subcommand to modify an existing authentication realm.
-
-
-[NOTE]
-==============================================
-
-A custom realm does not require server restart.
-
-==============================================
-
-
-1.  List realms by using the link:../reference-manual/list-auth-realms.html#GSRFM00150[`list-auth-realms`]
-subcommand.
-2.  Modify the values for the specified thread pool by using the
-link:../reference-manual/set.html#GSRFM00226[`set`] subcommand. +
-The thread pool is identified by its dotted name.
-3.  To apply your changes, restart GlassFish Server. +
-See "link:../administration-guide/domains.html#GSADG00337[To Restart a Domain]" in GlassFish Server Open
-Source Edition Administration Guide.
-
-[[ggngf]][[GSSCG00113]][[to-delete-an-authentication-realm]]
-
-To Delete an Authentication Realm
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `delete-auth-realm` subcommand in remote mode to delete an
-existing authentication realm.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List realms by using the link:../reference-manual/list-auth-realms.html#GSRFM00150[`list-auth-realms`]
-subcommand.
-3.  If necessary, notify users that the realm is being deleted.
-4.  Delete the realm by using the link:../reference-manual/delete-auth-realm.html#GSRFM00066[`delete-auth-realm`]
-subcommand.
-5.  To apply your changes, restart GlassFish Server. See
-"link:../administration-guide/domains.html#GSADG00337[To Restart a Domain]" in GlassFish Server Open Source
-Edition Administration Guide.
-
-[[GSSCG00081]][[ggpjf]]
-
-
-Example 2-3 Deleting a Realm
-
-This example deletes an authentication realm named `db`.
-
-[source,oac_no_warn]
-----
-asadmin> delete-auth-realm db
-Command delete-auth-realm executed successfully.
-----
-
-[[sthref23]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-auth-realm` at the command line.
-
-[[ggmww]][[GSSCG00114]][[to-configure-a-jdbc-or-digest-authentication-realm]]
-
-To Configure a JDBC or Digest Authentication Realm
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-GlassFish Server enables you to specify a user's credentials (user name
-and password) in the JDBC realm instead of in the connection pool. Using
-the `jdbc` type realm instead of the connection pool prevents other
-applications from browsing the database tables for user credentials.
-
-
-[NOTE]
-=======================================================================
-
-By default, storage of passwords as clear text is not supported in the
-JDBC realm. Under normal circumstances, passwords should not be stored
-as clear text.
-
-=======================================================================
-
-
-1.  [[ggmxh]] +
-Create the database tables in which to store user credentials for the
-realm. +
-How you create the database tables depends on the database that you are
-using.
-2.  Add user credentials to the database tables that you created. +
-How you add user credentials to the database tables depends on the
-database that you are using.
-3.  Create a JDBC connection pool for the database. +
-See "link:../administration-guide/jdbc.html#GSADG00420[To Create a JDBC Connection Pool]" in GlassFish
-Server Open Source Edition Administration Guide.
-4.  Create a JDBC resource for the database. +
-"link:../administration-guide/jdbc.html#GSADG00426[To Create a JDBC Resource]" in GlassFish Server Open
-Source Edition Administration Guide.
-5.  [[ggmvo]] +
-Create a realm. +
-For instructions, see link:#ggnca[To Create an Authentication Realm]. +
-
-[NOTE]
-=======================================================================
-
-The JAAS context should be `jdbcDigestRealm` for digest authentication
-or `jdbcRealm` for other authentication types.
-
-=======================================================================
-
-6.  [[ggmtc]] +
-Modify the deployment descriptor to specify the `jdbc` realm. +
-Modify the deployment descriptor that is associated with your
-application.
-* For an enterprise application in an Enterprise Archive (EAR) file,
-modify the `sun-application.xml` file.
-* For a web application in a Web Application Archive (WAR) file, modify
-the `web.xml` file.
-* For an enterprise bean in an EJB JAR file, modify the
-`sun-ejb-jar.xml` file. +
-For more information about how to specify a realm, see
-"link:../application-development-guide/securing-apps.html#GSDVG00365[How to Configure a Realm]" in GlassFish Server Open
-Source Edition Application Development Guide.
-7.  Assign security roles to users in the realm. +
-To assign a security role to a user, add a `security-role-mapping`
-element to the deployment descriptor that you modified.
-8.  Verify that the database is running. +
-If needed, see "link:../administration-guide/jdbc.html#GSADG00417[To Start the Database]" in GlassFish
-Server Open Source Edition Administration Guide.
-9.  To apply the authentication, restart the server. +
-See "link:../administration-guide/domains.html#GSADG00337[To Restart a Domain]" in GlassFish Server Open
-Source Edition Administration Guide.
-
-[[GSSCG00082]][[ghysu]]
-
-
-Example 2-4 Assigning a Security Role
-
-This example shows a `security-role-mapping` element that assigns the
-security role `Employee` to user `Calvin`
-
-[source,oac_no_warn]
-----
-<security-role-mapping>
-    <role-name>Employee</role-name>
-    <principal-name>Calvin</principal-name>
-  </security-role-mapping>
-----
-
-[[gkbeo]][[GSSCG00115]][[to-configure-ldap-authentication-with-oid]]
-
-To Configure LDAP Authentication with OID
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This procedure explains how to configure GlassFish Server to use LDAP
-authentication with Oracle Internet Directory.
-
-1.  Install Oracle Enterprise Manager 11g and the latest Enterprise
-Manager patches, if they are not installed already. +
-Instructions for installing Oracle Enterprise Manager are provided in
-the Oracle Enterprise Manager
-(`http://docs.oracle.com/cd/E11857_01/index.html`) documentation set.
-2.  Install the Oracle Identity Management Suite (IDM) 11g and Patch Set
-2 or later, if they are not installed already. +
-Instructions for installing the Oracle Identity Management suite are
-provided in Oracle Fusion Middleware Installation Guide for Oracle
-Identity Management
-(`http://docs.oracle.com/cd/E12839_01/install.1111/e12002/toc.html`).
-3.  Configure SSL for Oracle Internet Directory (OID), if it is not
-configured already. Configure the OID instance in the server
-authentication mode and with the protocol version set to SSLv3 +
-Instructions for configuring SSL for OID are provided in the SSL chapter
-of Oracle Internet Directory Administrator's Guide
-(`http://docs.oracle.com/cd/B14099_19/idmanage.1012/b14082/ssl.html`).
-4.  Using Oracle Wallet Manager, export an SSL self-signed certificate
-you want to use with GlassFish Server. +
-Instructions for using Oracle Wallet Manager to create and export SSL
-certificates are provided in the "Configure Oracle Internet Directory
-for SSL"
-(`http://docs.oracle.com/cd/B14099_19/idmanage.1012/b14082/ssl.html#CHDCADIJ`)
-section of the SSL chapter in Oracle Internet Directory Administrator's
-Guide
-(`http://docs.oracle.com/cd/B14099_19/idmanage.1012/b14082/ssl.html`).
-5.  On the GlassFish Server side, use the `keytool` command import the
-certificate you exported with Oracle Wallet Manager. +
-The `keytool` command is available in the `$JAVA_HOME/bin` directory.
-Use the following syntax: +
-[source,oac_no_warn]
-----
-keytool -importcert -alias "alias-name" -keystore domain-dir/config/cacerts.jks 
--file cert-name
-----
-where the variables are defined as follows:::
-alias-name::
-  Name of an alias to use for the certificate
-domain-dir::
-  Name of the domain for which the certificate is used
-cert-name::
-  Path to the certificate that you exported with Oracle Wallet Manager. +
-For example, to import a certificate named `oi.cer` for a GlassFish
-Server domain in `/glassfishv3/glassfish/domains/domain1`, using an
-alias called "OID self-signed certificate," you would use the following
-command: +
-[source,oac_no_warn]
-----
-keytool -importcert -alias "OID self signed certificate" -keystore \
-/glassfishv3/glassfish/domains/domain1/config/cacerts.jks -file oid.cer
-----
-6.  Restart the GlassFish Server domain. +
-See "link:../administration-guide/domains.html#GSADG00337[To Restart a Domain]" in GlassFish Server Open
-Source Edition Administration Guide.
-7.  Use the Oracle Enterprise Manager `ldapmodify` command to enable
-Anonymous Bind for OID. +
-For example: +
-[source,oac_no_warn]
-----
-ldapmodify -D cn=orcladmin -q -p portNum -h hostname -f ldifFile
-----
-In this example, the LDIF file might contain the following: +
-[source,oac_no_warn]
-----
-dn: cn=oid1,cn=osdldapd,cn=subconfigsubentry
-changetype: modify
-replace: orclAnonymousBindsFlag
-orclAnonymousBindsFlag: 1
-----
-To disable all anonymous binds, you would use a similar LDIF file with
-the last line changed to: +
-[source,oac_no_warn]
-----
-orclAnonymousBindsFlag: 0
-----
-See "Managing Anonymous Binds"
-(`http://docs.oracle.com/cd/E14571_01/oid.1111/e10029/authentication.html#CACJEJDA`)
-in Oracle Fusion Middleware Administrator's Guide for Oracle Internet
-Directory
-(`http://docs.oracle.com/cd/E14571_01/oid.1111/e10029/toc.html`) for
-complete instructions on the `ldapmodify` command.
-
-[[gksgi]][[GSSCG00116]][[to-configure-ldap-authentication-with-ovd]]
-
-To Configure LDAP Authentication with OVD
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This procedure explains how to configure GlassFish Server to use LDAP
-authentication with Oracle Virtual Directory.
-
-1.  Create the OVD adapter, as described in the "Creating and
-Configuring Oracle Virtual Directory Adapters"
-(`http://docs.oracle.com/cd/E12839_01/oid.1111/e10046/basic_adapters.html#BABCBGJA`)
-chapter of Administrator's Guide for Oracle Virtual Directory
-(`http://docs.oracle.com/cd/E12839_01/oid.1111/e10046/toc.html`).
-2.  Configure SSL for Oracle Virtual Directory (OVD), if it is not
-configured already. For instructions on configuring SSL for OVD, see the
-section "Enable SSL for Oracle Virtual Directory Using Fusion Middleware
-Control" in SSL Configuration in Oracle Fusion Middleware
-(`http://docs.oracle.com/cd/E12839_01/core.1111/e10105/sslconfig.html#ASADM1800`). +
-Also, configure the SSL for the OVD listener in server authentication
-mode.
-3.  Export the certificate from JKS keystore you want to use with
-GlassFish Server. See "Exporting a Keystore Using Fusion Middleware
-Control"
-(`http://docs.oracle.com/cd/E16764_01/core.1111/e10105/wallets.html#CIHECAIB`)
-for information.
-4.  On the GlassFish Server side, use the `keytool` command to import
-the certificate you exported from the JKS keystore. +
-The `keytool` command is available in the `$JAVA_HOME/bin` directory.
-Use the following syntax: +
-[source,oac_no_warn]
-----
-keytool -importcert -alias "alias-name" -keystore domain-dir/config/cacerts.jks 
--file cert-name
-----
-where the variables are defined as follows:::
-alias-name::
-  Name of an alias to use for the certificate
-domain-dir::
-  Name of the domain for which the certificate is used
-cert-name::
-  Path to the certificate that you exported from the keystore. +
-For example, to import a certificate named `ovd.cer` for a GlassFish
-Server domain in `/glassfishv3/glassfish/domains/domain1`, using an
-alias called "OVD self-signed certificate," you would use the following
-command: +
-[source,oac_no_warn]
-----
-keytool -importcert -alias "OVD self signed certificate" -keystore \
-/glassfishv3/glassfish/domains/domain1/config/cacerts.jks -file ovd.cer
-----
-5.  Restart the GlassFish Server domain. +
-See "link:../administration-guide/domains.html#GSADG00337[To Restart a Domain]" in GlassFish Server Open
-Source Edition Administration Guide.
-
-[[gkbjp]][[GSSCG00117]][[to-enable-ldap-authentication-on-the-glassfish-server-das]]
-
-To Enable LDAP Authentication on the GlassFish Server DAS
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This procedure explains how to enable LDAP authentication for logins to
-the GlassFish Server Domain Administration Server (DAS). Logging in to
-the DAS is typically only performed by GlassFish Server administrators
-who want to use the GlassFish Server Administration Console or `asadmin`
-command. See link:#gkbeo[To Configure LDAP Authentication with OID] for
-instructions on enabling general LDAP authentication for GlassFish
-Server.
-
-[[sthref24]]
-
-Before You Begin
-
-Ensure that you have followed the configuration instructions in
-link:#gkbeo[To Configure LDAP Authentication with OID]
-
-Use the `asadmin configure-ldap-for-admin` subcommand to enable user
-authentication to the GlassFish Server DAS.
-
-Use the following syntax:
-
-[source,oac_no_warn]
-----
-asadmin configure-ldap-for-admin --basedn "dn-list" --url [ldap|ldaps]://ldap-url 
---ldap-group group-name
-----
-
-where the variables are defined as follows:
-
-dn-list::
-  basedn parameters
-ldap-url::
-  URL and port number for the LDAP server; can use standard (`ldap`) or
-  secure (`ldaps`) protocol
-group-name::
-  LDAP group name for allowed users, as defined on the LDAP server.
-
-For example:
-
-[source,oac_no_warn]
-----
-asadmin configure-ldap-for-admin --basedn "dc=red,dc=iplanet,dc=com" \
---url ldap://interopoel54-1:3060 --ldap-group sqestaticgroup
-
-asadmin configure-ldap-for-admin --basedn "dc=red,dc=iplanet,dc=com" \
---url ldaps://interopoel54-1:7501 --ldap-group sqestaticgroup
-----
-
-[[sthref25]]
-
-See Also
-
-See link:../reference-manual/configure-ldap-for-admin.html#GSRFM00010[`configure-ldap-for-admin`] for more information
-about the `configure-ldap-for-admin subcommand`.
-
-[[ggnxq]][[GSSCG00152]][[administering-file-users]]
-
-Administering File Users
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-A user is an individual (or application program) identity that is
-defined in GlassFish Server. A user who has been authenticated is
-sometimes called a principal.
-
-As the administrator, you are responsible for integrating users into the
-GlassFish Server environment so that their credentials are securely
-established and they are provided with access to the applications and
-services that they are entitled to use.
-
-The following topics are addressed here:
-
-* link:#ggocf[To Create a File User]
-* link:#ggoab[To List File Users]
-* link:#ghlgs[To List File Groups]
-* link:#ggoaw[To Update a File User]
-* link:#ggoah[To Delete a File User]
-
-[[ggocf]][[GSSCG00118]][[to-create-a-file-user]]
-
-To Create a File User
-^^^^^^^^^^^^^^^^^^^^^
-
-Use the `create-file-user` subcommand in remote mode to create a new
-user by adding a new entry to the `keyfile`. The entry includes the user
-name, password, and any groups for the user. Multiple groups can be
-specified by separating the groups with colons (:).
-
-
-[NOTE]
-=======================================================================
-
-If secure administration is enabled as described in
-link:administrative-security.html#gkomz[Running Secure Admin], you cannot
-create an administrative user with a blank password.
-
-=======================================================================
-
-
-Creating a new `file` realm user is a dynamic event and does not require
-server restart.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  If the user will belong to a particular group, see the current
-groups by using the link:../reference-manual/list-file-groups.html#GSRFM00164[`list-file-groups`] subcommand.
-3.  Create a file user by using the link:../reference-manual/create-file-user.html#GSRFM00024[`create-file-user`]
-subcommand.
-
-[[GSSCG00083]][[ggpkq]]
-
-
-Example 2-5 Creating a User
-
-This example create user `Jennifer` on the default realm `file` (no
-groups are specified).
-
-The `asadmin` `--passwordfile` option specifies the name of a file that
-contains the password entries in a specific format. The entry for a
-password must have the `AS_ADMIN_` prefix followed by the password name
-in uppercase letters, an equals sign, and the password. See
-link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] for more information.
-
-[source,oac_no_warn]
-----
-asadmin> create-file-user --user admin 
---passwordfile=c:\tmp\asadminpassword.txt Jennifer
-Command create-file-user executed successfully.
-----
-
-[[sthref26]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help create-file-user` at the command line.
-
-[[ggoab]][[GSSCG00119]][[to-list-file-users]]
-
-To List File Users
-^^^^^^^^^^^^^^^^^^
-
-Use the `list-file-users` subcommand in remote mode to list the users
-that are in the `keyfile`.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List users by using the link:../reference-manual/list-file-users.html#GSRFM00165[`list-file-users`]
-subcommand.
-
-[[GSSCG00084]][[ggpgf]]
-
-
-Example 2-6 Listing File Users
-
-This example lists file users on the default `file` realm file.
-
-[source,oac_no_warn]
-----
-asadmin> list-file-users
-Jennifer
-Command list-file-users executed successfully.
-----
-
-[[sthref27]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help list-file-users` at the command line.
-
-[[ghlgs]][[GSSCG00120]][[to-list-file-groups]]
-
-To List File Groups
-^^^^^^^^^^^^^^^^^^^
-
-A group is a category of users classified by common traits, such as job
-title or customer profile. For example, users of an e-commerce
-application might belong to the `customer` group, and the big spenders
-might also belong to the `preferred` group. Categorizing users into
-groups makes it easier to control the access of large numbers of users.
-A group is defined for an entire server and realm. A user can be
-associated with multiple groups of users.
-
-A group is different from a role in that a role defines a function in an
-application, while a group is a set of users who are related in some
-way. For example, in the personnel application there might be groups
-such as `full-time`, `part-time`, and `on-leave`. Users in these groups
-are all employees (the `employee` role). In addition, each user has its
-own designation that defines an additional level of employment.
-
-Use the `list-file-groups` subcommand in remote mode to list groups for
-a file user, or all file groups if the `--name` option is not specified.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List file groups by using the link:../reference-manual/list-file-groups.html#GSRFM00164[`list-file-groups`]
-subcommand.
-
-[[GSSCG00085]][[ghlgb]]
-
-
-Example 2-7 Listing Groups for a User
-
-This example lists the groups for user `joesmith`.
-
-[source,oac_no_warn]
-----
-asadmin> list-file-groups --name joesmith
-staff
-manager
-Command list-file-groups executed successfully
-----
-
-[[ggoaw]][[GSSCG00121]][[to-update-a-file-user]]
-
-To Update a File User
-^^^^^^^^^^^^^^^^^^^^^
-
-Use the `update-file-user` subcommand in remote mode to modify the
-information in the `keyfile` for a specified user.
-
-
-[NOTE]
-=======================================================================
-
-If secure administration is enabled as described in
-link:administrative-security.html#gkomz[Running Secure Admin], you cannot
-update an administrative user to have a blank password.
-
-=======================================================================
-
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  Update the user information by using the
-link:../reference-manual/update-file-user.html#GSRFM00254[`update-file-user`] subcommand.
-3.  To apply your changes, restart GlassFish Server. +
-See "link:../administration-guide/domains.html#GSADG00337[To Restart a Domain]" in GlassFish Server Open
-Source Edition Administration Guide.
-
-[[GSSCG00086]][[ggpgh]]
-
-
-Example 2-8 Updating a User
-
-The following subcommand updates the groups for user `Jennifer`.
-
-[source,oac_no_warn]
-----
-asadmin> update-file-user --passwordfile c:\tmp\asadminpassword.txt --groups 
-staff:manager:engineer Jennifer
-Command update-file-user executed successfully.
-----
-
-[[sthref28]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help update-file-user` at the command line.
-
-[[ggoah]][[GSSCG00122]][[to-delete-a-file-user]]
-
-To Delete a File User
-^^^^^^^^^^^^^^^^^^^^^
-
-Use the `delete-file-user` subcommand in remote mode to remove a user
-entry from the `keyfile` by specifying the user name. You cannot delete
-yourself, that is, the user you are logged in as cannot be deleted
-during your session.
-
-1.  Ensure that the server is running. +
-Remote subcommands require a running server.
-2.  List users by using the link:../reference-manual/list-file-users.html#GSRFM00165[`list-file-users`]
-subcommand.
-3.  Delete the user by using the link:../reference-manual/delete-file-user.html#GSRFM00076[`delete-file-user`]
-subcommand.
-
-[[GSSCG00087]][[ggpib]]
-
-
-Example 2-9 Deleting a User
-
-This example deletes user `Jennifer` from the default `file` realm.
-
-[source,oac_no_warn]
-----
-asadmin> delete-file-user Jennifer
-Command delete-file-user executed successfully.
-----
-
-[[sthref29]]
-
-See Also
-
-You can also view the full syntax and options of the subcommand by
-typing `asadmin help delete-file-user` at the command line.
-
-
diff --git a/docs/security-guide/src/main/jbake/jbake.properties b/docs/security-guide/src/main/jbake/jbake.properties
deleted file mode 100644
index 546d09c..0000000
--- a/docs/security-guide/src/main/jbake/jbake.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-site.host=http://jbake.org
-render.tags=false
-render.sitemap=false
-render.archive=false
-render.feed=false
-asciidoctor.option.safe=0
-asciidoctor.attributes.export=true
diff --git a/docs/security-guide/src/main/jbake/templates/footer.ftl b/docs/security-guide/src/main/jbake/templates/footer.ftl
deleted file mode 100644
index 6f2b09e..0000000
--- a/docs/security-guide/src/main/jbake/templates/footer.ftl
+++ /dev/null
@@ -1,46 +0,0 @@
-<#-- a footer template fragment included in the page template -->
-<hr />
-
-<table width="90%" id="bottom-nav" cellspacing="0" cellpadding="0">
-	<colgroup>
-		<col width="12%"/>
-		<col width="12%"/>
-		<col width="*"/>
-	</colgroup>
-	<tr>		
-	    <#if content.prev??>
-		<td align="left">
-		<a href="${content.prev}">
-			<span class=" vector-font"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Previous</span>
-		</a>
-		</td>
-		</#if>
-
-		<#if content.next??>
-		<td align="left">
-		<a href="${content.next}">
-			<span class="vector-font"><i class="fa fa-arrow-circle-right vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Next</span>
-		</a>
-		</td>
-		</#if>
-
-		<td align="right">
-		<a href="toc.html">
-			<span class="vector-font"><i class="fa fa-list vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Contents</span>
-		</a>
-		</td>
-	</tr>
-</table>
-
-<span id="copyright">
-        <img src="img/eclipse_foundation_logo_tiny.png" height="20px" alt="Eclipse Foundation Logo" align="top"/>&nbsp;            
-        <span >Copyright&nbsp;&copy;&nbsp;2019,&nbsp;Oracle&nbsp;and/or&nbsp;its&nbsp;affiliates.&nbsp;All&nbsp;rights&nbsp;reserved.</span>
-</span>
-
-<p align="center" class="beta">${config.status!}</p>
-
-</body>
-</html>
diff --git a/docs/security-guide/src/main/jbake/templates/header.ftl b/docs/security-guide/src/main/jbake/templates/header.ftl
deleted file mode 100644
index 82ebb36..0000000
--- a/docs/security-guide/src/main/jbake/templates/header.ftl
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html>
-<#-- a header template fragment included in the page template -->
-<html lang="en">
-  <head>
-    <meta charset="utf-8"/>
-    <title><#if (content.title)??><#escape x as x?xml>${content.title}</#escape></#if></title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <link href="<#if (content.rootpath)??>${content.rootpath}<#else></#if>css/style.css" rel="stylesheet">
-    <script src="https://use.fontawesome.com/96c4d89611.js"></script>
-  </head>
-  <body>
-<table id="doc-title" cellspacing="0" cellpadding="0">
-  <tr>
-  <td align="left" valign="top">
-  <b>${content.title}</b><br />
-      <p class="beta">${config.status!}</p>
-  </td>
-  </tr>
-</table>
-<hr />
-
-<table width="90%" id="top-nav" cellspacing="0" cellpadding="0">
-	<colgroup>
-		<col width="12%"/>
-		<col width="12%"/>
-		<col width="*"/>
-	</colgroup>
-	<tr>
-	    <#if content.prev??>
-		<td align="left">
-		<a href="${content.prev}">
-			<span class="vector-font"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Previous</span>
-		</a>
-		</td>
-	    </#if>
-
-	    <#if content.next??>
-		<td align="left">
-		<a href="${content.next}">
-			<span class=" vector-font"><i class="fa fa-arrow-circle-right vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Next</span>
-		</a>
-		</td>
-	    </#if>
-
-		<td align="right">
-		<a href="toc.html">
-			<span class=" vector-font"><i class="fa fa-list vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Contents</span>
-		</a>
-		</td>
-	</tr>
-</table>
-
diff --git a/docs/security-guide/src/main/jbake/templates/menu.ftl b/docs/security-guide/src/main/jbake/templates/menu.ftl
deleted file mode 100644
index 888c03d..0000000
--- a/docs/security-guide/src/main/jbake/templates/menu.ftl
+++ /dev/null
@@ -1 +0,0 @@
-<#-- a menu bar template fragment included in the page template -->
\ No newline at end of file
diff --git a/docs/security-guide/src/main/jbake/templates/page.ftl b/docs/security-guide/src/main/jbake/templates/page.ftl
deleted file mode 100644
index eca51db..0000000
--- a/docs/security-guide/src/main/jbake/templates/page.ftl
+++ /dev/null
@@ -1,8 +0,0 @@
-<#-- a top level page layout template -->
-
-<#include "header.ftl">
-<#include "menu.ftl">
-
-${content.body}
-
-<#include "footer.ftl">
\ No newline at end of file
diff --git a/docs/troubleshooting-guide/README.md b/docs/troubleshooting-guide/README.md
deleted file mode 100644
index a3ec2b6..0000000
--- a/docs/troubleshooting-guide/README.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# A JBake project template
-
-## About JBake
-
-JBake is a static site generator, it's inspired from jekyll and written
-in java.  The basic idea is to have templates for the structure of the
-page, and the body generated from asciidoc content.
-
-## Pre requisites
-
-- Maven
-- JDK8+
-
-Deploying to Github will require password less authentication.
-
-This is done by exporting your SSH public key into your Github account.
-
-## Build the site locally
-
-The site is generated under target/staging.
-
-Open file:///PATH_TO_PROJECT_DIR/target/staging in a browser to view the site.
-
-```
-mvn generate-resources
-```
-
-Or you can invoke the JBake plugin directly.
-
-```
-mvn jbake:build
-```
-
-### Rebuild the site on changes
-
-```
-mvn jbake:watch
-```
-
-If you keep this command running, changes to the sources will be
-detected and the site will be rendered incrementally.
-
-This is convenient when writing content.
-
-### Serve the site locally
-
-```
-mvn jbake:serve
-```
-
-If a webserver is required (e.g. absolute path are used), this command
-will start a webserver (jetty) at http://localhost:8820.  It will also
-watch for changes and rebuild incrementally.
-
-## Deploy the site to Github Pages
-
-```
-mvn deploy
-```
-
-## Produce a zip file for download
-
-To produce a zip file containing the generated html files, use:
-
-```
-mvn package
-```
-
-When making a release on GitHub, this zip file should be added to the release.
-
-## Links
-
-- [JBake maven plugin documentation](https://github.com/Blazebit/jbake-maven-plugin)
-- [JBake documentation](http://jbake.org/docs/2.5.1)
-- [Freemarker documentation](http://freemarker.org/docs)
-- [AsciiDoc User Guide](http://asciidoc.org/userguide.html)
-- [Asciidoctor quick reference](http://asciidoctor.org/docs/asciidoc-syntax-quick-reference)
diff --git a/docs/troubleshooting-guide/pom.xml b/docs/troubleshooting-guide/pom.xml
index 0fc3ec3..85f286d 100644
--- a/docs/troubleshooting-guide/pom.xml
+++ b/docs/troubleshooting-guide/pom.xml
@@ -22,11 +22,10 @@
     <parent>
         <groupId>org.glassfish.docs</groupId>
         <artifactId>parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../parent</relativePath>
     </parent>
-    <groupId>org.glassfish.docs</groupId>
     <artifactId>troubleshooting-guide</artifactId>
     <packaging>jar</packaging>
-    <name>Eclipse GlassFish Server Troubleshooting Guide, Release 5.1</name>
+    <name>Eclipse GlassFish Server Troubleshooting Guide, Release 7</name>
 </project>
diff --git a/docs/troubleshooting-guide/src/main/asciidoc/faqs.adoc b/docs/troubleshooting-guide/src/main/asciidoc/faqs.adoc
new file mode 100644
index 0000000..1959c0a
--- /dev/null
+++ b/docs/troubleshooting-guide/src/main/asciidoc/faqs.adoc
@@ -0,0 +1,181 @@
+type=page
+status=published
+title=Frequently Asked Questions
+prev=specific-issues.html
+~~~~~~
+
+= Frequently Asked Questions
+
+[[GSTSG00006]][[abgkd]]
+
+
+[[frequently-asked-questions]]
+== 3 Frequently Asked Questions
+
+This chapter lists a few of the Frequently Asked Questions (FAQs)
+related to {productName} 7. For the latest FAQs, see the
+GlassFish wiki at
+`http://wikis.sun.com/display/GlassFish/GlassFishFAQIndex`.
+
+This chapter contains the following:
+
+* link:#ghynj[Administration FAQs]
+* link:#ghyaf[Application FAQs]
+* link:#ghyak[Eclipse FAQs]
+* link:#ghybv[Extensibility FAQs]
+* link:#ghybi[Java Persistence FAQs]
+* link:#ghybd[Update Tool FAQs]
+
+[[ghynj]][[GSTSG00071]][[administration-faqs]]
+
+=== Administration FAQs
+
+[[ghvhr]][[GSTSG00252]][[which-asadmin-commands-are-supported]]
+
+==== Which `asadmin` Commands are Supported?
+
+Use `asadmin` `list-commands` to determine which commands are supported
+and available for use. For related information, see
+"link:administration-guide/asadmin-subcommands.html#GSADG00023[Subcommands for the asadmin Utility]" in {productName} Administration Guide.
+
+[[ghyaf]][[GSTSG00072]][[application-faqs]]
+
+=== Application FAQs
+
+[[ghybu]][[GSTSG00253]][[how-do-i-debug-applications]]
+
+==== How Do I Debug Applications?
+
+See "link:application-development-guide/debugging-apps.html#GSDVG00004[Debugging Applications]" in {productName} Application Development Guide.
+
+[[ghybh]][[GSTSG00254]][[how-do-i-change-application-permissions]]
+
+==== How Do I Change Application Permissions?
+
+See "link:application-development-guide/securing-apps.html#GSDVG00372[Changing Permissions for an Application]" in
+{productName} Application Development Guide.
+
+[[ghybt]][[GSTSG00255]][[what-are-the-restrictions-and-optimizations-for-session-beans]]
+
+==== What Are the Restrictions and Optimizations for Session Beans?
+
+See "link:application-development-guide/ejb.html#GSDVG00427[Session Bean Restrictions and Optimizations]" in
+{productName} Application Development Guide.
+
+[[ghyak]][[GSTSG00073]][[eclipse-faqs]]
+
+=== Eclipse FAQs
+
+[[ghvmc]][[GSTSG00256]][[where-can-i-find-more-information-about-eclipse-and-glassfish-server-integration]]
+
+==== Where Can I Find More Information About Eclipse and {productName} Integration?
+
+Eclipse is a development environment that provides a framework, tools,
+and runtime for deploying and managing software. The GlassFish plugin
+for Eclipse provides important changes to better support {productName} and to provide optimal redeployment of web applications. For more
+information, see the GlassFish Plugins page:
+`http://glassfishplugins.java.net`.
+
+[[ghybv]][[GSTSG00074]][[extensibility-faqs]]
+
+=== Extensibility FAQs
+
+[[ghyaw]][[GSTSG00257]][[how-do-i-develop-add-on-components]]
+
+==== How Do I Develop Add-On Components?
+
+See the link:add-on-component-development-guide.html#GSACG[{productName} Add-On
+Component Development Guide] for complete details.
+
+[[ghvhg]][[GSTSG00258]][[how-do-i-add-containers]]
+
+==== How Do I Add Containers?
+
+{productName} has a highly modular architecture that enables you to
+add new types of containers that handle many application types, not just
+Jakarta EE. {productName} defines a service provider interface (SPI),
+which container developers implement. The {productName} framework
+then invokes the container's implementation of the SPI to detect,
+deploy, and manage applications of the new type.
+
+For more information, see "link:add-on-component-development-guide/adding-container-capabilities.html#GSACG00007[Adding Container
+Capabilities]" in {productName} Add-On Component
+Development Guide.
+
+[[ghvgv]][[GSTSG00259]][[how-do-i-extend-the-administration-console]]
+
+==== How Do I Extend the Administration Console?
+
+See "link:add-on-component-development-guide/extending-the-admin-console.html#GSACG00003[Extending the Administration Console]" in
+{productName} Add-On Component Development Guide.
+
+[[ghybi]][[GSTSG00075]][[java-persistence-faqs]]
+
+=== Java Persistence FAQs
+
+[[ghvnl]][[GSTSG00260]][[what-are-the-restrictions-and-optimizations-for-the-java-persistence-api]]
+
+==== What Are the Restrictions and Optimizations for the Java Persistence API?
+
+See "link:application-development-guide/jpa.html#GSDVG00139[Restrictions and Optimizations]" in {productName} Application Development Guide.
+
+[[ghybd]][[GSTSG00076]][[update-tool-faqs]]
+
+=== Update Tool FAQs
+
+[[ghvly]][[GSTSG00261]][[how-do-i-use-update-tool-to-extend-my-glassfish-server-installation]]
+
+==== How Do I Use Update Tool to Extend My {productName} Installation?
+
+Enterprise Server provides an administrative tool called Update Tool
+that enables you to install updates and add-on components to your
+existing Enterprise Server installation.
+
+Update Tool can be accessed as a standalone graphical tool from the
+command line (using the `updatetool` command from
+as-install-parent``/bin``), or as a browser-based graphical tool from the
+Administration Console (using the Update Tool node). For more
+information about Update Tool, see "link:administration-guide.html#GSADG00701[Update Tool]" in
+{productName} Administration Guide.
+
+[NOTE]
+====
+To update or remove installed components, you must use the standalone
+graphical Update Tool, not the Administration Console Update Tool.
+====
+
+A command-line interface is also available for Update Tool. This
+interface uses the `pkg` command and enables you to perform most of the
+tasks provided by the standalone graphical version. For more information
+about the `pkg` command, see "link:administration-guide.html#GSADG00014[Extending and Updating
+{productName}]" in {productName}
+Administration Guide.
+
+[NOTE]
+====
+Update Tool differs from Upgrade Tool, which is used to migrate the
+configuration and deployed applications from an earlier version of
+{productName} to the current version. For more information about
+Upgrade Tool and upgrading, see the link:upgrade-guide.html#GSUPG[{productName} Upgrade Guide].
+====
+
+[[gjjoq]][[GSTSG00262]][[how-do-i-turn-off-the-notifier]]
+
+==== How Do I Turn Off the Notifier?
+
+Update Tool provides automatic notifications of available updates after
+installation. These notifications can be turned off if desired.
+
+[[gjjox]][[GSTSG00028]][[to-turn-off-the-notifier]]
+
+===== To Turn Off the Notifier
+
+1. Launch the standalone graphical tool using the `updatetool` command:
++
+[source]
+----
+as-install-parent/bin/updatetool
+----
+2. Click Preferences.
+3. Click the Updates tab.
+4. Deselect Automatically Check for Updates and click OK.
diff --git a/docs/troubleshooting-guide/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png b/docs/troubleshooting-guide/src/main/asciidoc/img/eclipse_foundation_logo_tiny.png
similarity index 100%
rename from docs/troubleshooting-guide/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png
rename to docs/troubleshooting-guide/src/main/asciidoc/img/eclipse_foundation_logo_tiny.png
Binary files differ
diff --git a/docs/troubleshooting-guide/src/main/asciidoc/overview.adoc b/docs/troubleshooting-guide/src/main/asciidoc/overview.adoc
new file mode 100644
index 0000000..9a9892e
--- /dev/null
+++ b/docs/troubleshooting-guide/src/main/asciidoc/overview.adoc
@@ -0,0 +1,395 @@
+type=page
+status=published
+title=Overview of {productName} Troubleshooting
+next=specific-issues.html
+prev=preface.html
+~~~~~~
+
+= Overview of {productName} Troubleshooting
+
+[[GSTSG00002]][[abgap]]
+
+
+[[overview-of-glassfish-server-open-source-edition-troubleshooting]]
+== 1 Overview of {productName} Troubleshooting
+
+This chapter describes some of the tools, methods, and resources
+available for troubleshooting {productName}.
+Guidelines for evaluating and investigating a problem are provided.
+
+This chapter contains the following sections:
+
+* link:#abgar[Identifying the Problem]
+* link:#ghuvy[Troubleshooting Tools]
+* link:#ghuyv[Where to Go for More Information]
+
+[[abgar]][[GSTSG00039]][[identifying-the-problem]]
+
+=== Identifying the Problem
+
+Application servers are typically deployed in complex operating
+environments and involve many technologies, products, and tools.
+Understanding and diagnosing problems in enterprise software with many
+components performing many tasks can be a challenge. This section
+describes how to get started , and contains the following topics:
+
+* link:#ghvay[First Steps]
+* link:#ghuvf[Gathering Information]
+* link:#abgax[Examining Log Files]
+* link:#ghuvd[Monitoring the System]
+
+[[ghvay]][[GSTSG00171]][[first-steps]]
+
+==== First Steps
+
+Sometimes the most obvious solutions are overlooked. As you begin your
+investigation, try the following steps first.
+
+[[ghyku]][[GSTSG00077]][[verify-system-requirements-and-configuration]]
+
+===== Verify System Requirements and Configuration
+
+Ensure that your system meets the requirements listed in
+"link:release-notes/release-notes.html#GSRLN00131[Hardware and Software Requirements]"
+in {productName} Release Notes.
+Problems are likely to arise if you attempt to install on a platform that
+is not supported or on a system that in some other way does not meet release requirements.
+Also see "link:release-notes/release-notes.html#GSRLN00253[Known Issues]"
+in {productName} Release Notes for known issues related to installation.
+
+{productName} requires JDK release 6. The minimum
+(and certified) version of the JDK that is required for {productName} depends on the operating system:
+
+* For supported operating systems except Mac OS, the minimum required version is 1.6.0_17.
+* For the Mac OS X operating system, the minimum required version is 1.6.0_15.
+
+If necessary, download and install the required JDK software.
+
+On Solaris, Linux, and Windows systems, JDK software is available from the
+http://www.oracle.com/technetwork/java/javase/downloads/index.html[
+Java SE downloads page]
+(`http://www.oracle.com/technetwork/java/javase/downloads/index.html`).
+
+For Mac OS X systems, {productName} uses the JDK
+that is part of the Macintosh operating system. If necessary, obtain the
+required JDK version from the http://support.apple.com/downloads/[Mac OS
+X Updates site] (`http://support.apple.com/downloads/`).
+
+Also ensure that the `JAVA_HOME` environment variable on your system
+points to the JDK installation directory and not the Java Runtime
+Environment (JRE) software.
+
+Set `JAVA_HOME` and `$JAVA_HOME/bin` in the `PATH` to point to the
+supported JDK version.
+
+[[ghyml]][[GSTSG00078]][[review-known-issues]]
+
+===== Review Known Issues
+
+Your problem might be related to a known issue for the release. Refer to
+the link:release-notes.html#GSRLN[{productName} Release Notes] for
+the latest information regarding known issues and possible workarounds.
+Also search the GlassFish Issue Tracker at
+`http://java.net/jira/browse/GLASSFISH`.
+
+[[ghykl]][[GSTSG00079]][[search-the-product-documentation]]
+
+===== Search the Product Documentation
+
+{productName} includes complete product
+documentation. Search the documentation to see if your problem is
+addressed. See link:preface.html#ghpbz[{productName} Documentation
+Set] for the books in the documentation set and a description of their
+contents. Also see the Administration Console online help for detailed
+information about performing administrative tasks using the graphical
+interface.
+
+The following books will be especially helpful for troubleshooting:
+
+* link:release-notes.html#GSRLN[{productName} Release Notes],
+  which provides the latest information regarding known issues and possible workarounds.
+* link:error-messages-reference.html#GSEMR[
+  {productName} Error Message Reference],
+  which lists error messages you might encounter when using {productName}.
+
+Use the product documentation to learn more about {productName}. The more you know about the product the easier it might
+be to figure out why something isn't working.
+
+[[ghymp]][[GSTSG00080]][[search-the-glassfish-mailing-lists-and-forums]]
+
+===== Search the GlassFish Mailing Lists and Forums
+
+Lists and forums are extremely helpful resources, and are accessed as follows:
+
+* GlassFish mailing lists (start with users@glassfish.java.net and
+  search the archives): `http://java.net/projects/glassfish/lists/`
+* GlassFish user forum: `http://www.java.net/forums/glassfish/glassfish`
+
+[[ghuvf]][[GSTSG00172]][[gathering-information]]
+
+==== Gathering Information
+
+Troubleshooting and analysis require information. The more information
+you have the easier it is to classify a problem and search for its
+solution. Detailed information will also be necessary should you need to
+contact others for support, either through a community mailing list or
+through more formal Sun support channels.
+
+As you continue your investigation, consider the following questions.
+
+[[ghvar]][[GSTSG00081]][[when-does-the-problem-occur]]
+
+===== When Does the Problem Occur?
+
+* What do the logs show? What kind of error message are you getting? For
+more information about logs, see link:#abgax[Examining Log Files]. Logs
+are a good place to start your troubleshooting.
+* What are you trying to do when the problem occurs and how are you
+doing it? What is the sequence of events?
+* Does the problem occur every time you perform the same type of
+operation, or does it seem random? Can you reproduce the issue?
+* Have other events or problems occurred that could possibly be related,
+such as web sessions closing early, exceptions being thrown in your own
+application logic, components not being correctly deployed or
+undeployed?
+
+[[ghvbb]][[GSTSG00082]][[what-is-your-environment]]
+
+===== What Is Your Environment?
+
+* What version of {productName} are you using?
+What operating system and version? What JDK version? Many problems are
+caused simply because system requirements for the release are not met.
+Refer to the link:release-notes.html#GSRLN[{productName} Release
+Notes] for the latest information regarding system requirements, and
+make sure your system meets those requirements.
+* What resources does your system have, such as memory, disk, and swap
+space? If system memory is an issue, look for ways to optimize your
+configuration and consider taking other actions such as adding memory or
+decreasing system load.
+* Have any patches been applied? If so, what are the product and
+operating system patch numbers?
+* What other products and technologies are installed and being used in
+the installation?
+* How many application servers, web servers, and directory servers are
+installed? What are the products and versions?
+* How is the web server connected to {productName}? On the same system?
+* How is {productName} connected to the directory
+server?
+* What JDBC driver is being used to access the database?
+
+[[ghvce]][[GSTSG00083]][[what-is-your-system-configuration]]
+
+===== What Is Your System Configuration?
+
+* What are your settings?
+* On which port is {productName} configured — the
+default or something else?
+* What defaults were changed during installation and what are the
+values?
+* What other settings were changed from the defaults and what are their
+values?
+* What are the parameters related to JVM heap, stack, and garbage
+collection set to?
+* What are the JVM options?
+* What is the permgen size? `OutOfMemoryError:PermGen space` errors are
+common and indicate that you need to increase the permanent generation
+space available.
+* Is SSL enabled?
+* What are your network settings (proxy, firewall, and so on)? What
+happens if you disable your firewall and attempt the task?
+
+[[ghvcr]][[GSTSG00084]][[what-is-different]]
+
+===== What Is Different?
+
+* What is different that could have provoked the problem or triggered
+the event? Was something new added or changed? Have any new applications
+been deployed? If changes have been made recently, consider backing them
+out and seeing what happens — does the problem still occur?
+* Was the feature or functionality working correctly at one time? If so,
+what changed or happened between then and now?
+* Is this working on another system? If so, what is different about that
+environment?
+
+[[abgax]][[GSTSG00173]][[examining-log-files]]
+
+==== Examining Log Files
+
+Logging is one of your most important troubleshooting tools. It is the
+process by which {productName} captures data
+about events that occur during server operation, such as configuration
+errors, security failures, or server malfunction. This data is recorded
+in log files, and is usually your first source of information when
+Enterprise Server problems occur. The primary purpose of log files is to
+provide troubleshooting information. Analyzing the log files can help
+determine the health of the server and identify problem areas.
+
+By default, log information for each {productName} server instance is captured in a `server.log` file. That is,
+each instance, including the domain administration server (DAS), has an
+individual log file. By default, the log file for the DAS is located in
+domain-dir``/logs``, and the log file for each instance is located in
+instance-dir``/logs`.
+
+In addition, for domains that use clustering, {productName} captures log information for each cluster instance in a
+`cluster.log` file. By default, the `cluster.log` file is also located
+in instance-dir``/logs``.
+
+Oracle recommends using the Administration Console to view logging
+information. However, you can open a log file in a text editor and
+search for the module or message in which you are interested. {productName} also lets you collect log files into a ZIP
+file, which provides a convenient means to collect and view the log
+files for an instance or a domain even when it is not running.
+
+You configure the Logging Service by setting attributes in the
+`logging.properties` file. Each server, configuration, instance, and
+cluster in the {productName} domain has an
+individual `logging.properties` file. The root directory in which these
+`logging.properties` files are located is the same directory as for the
+`domain.xml` file, typically domain-dir/`config`. The default target
+when configuring logging attributes is the DAS. However, you can
+optionally target a specific server, instance, or cluster. You can also
+target a configuration that is shared by one or more instances or
+clusters. The Logging Service can also be configured using the
+Administration Console.
+
+Log levels such as `SEVERE`, `WARNING`, `INFO`, `CONFIG`, and others can
+be set to provide different types and amounts of information. The
+default setting is `INFO`. Each {productName}
+module has its own logger, and each logger has its own namespace. Log
+levels can be set globally for all loggers, or individually for
+module-specific loggers.
+
+For information about using the Administration Console log viewer and
+logging functions, see the Administration Console online help. For
+information about using the command line for logging functions, see
+"link:administration-guide/logging.html#GSADG00010[Administering the Logging Service]" in {productName} Administration Guide.
+
+[[ghuvd]][[GSTSG00174]][[monitoring-the-system]]
+
+==== Monitoring the System
+
+Monitoring is another helpful tool. It is the process of reviewing the
+statistics of a system to improve performance or solve problems. By
+monitoring the state of various components and services deployed in
+{productName} you can identify performance
+bottlenecks, predict failures, perform root cause analysis, and ensure
+that everything is functioning as expected. For more information about
+monitoring, including JConsole information, see
+"link:administration-guide/monitoring.html#GSADG00011[Administering the Monitoring Service]" in {productName} Administration Guide.
+
+[[ghuvy]][[GSTSG00040]][[troubleshooting-tools]]
+
+=== Troubleshooting Tools
+
+Several tools are available that can be used to collect information for
+troubleshooting purposes. This section provides basic information about
+some of them, and includes the following:
+
+* link:#ghvcm[Operating System Utilities]
+* link:#ghvbo[Stack Traces and Thread Dumps]
+* link:#ghyjq[VisualVM]
+* link:#gjjjl[JVM Command-Line Tools]
+
+[[ghvcm]][[GSTSG00175]][[operating-system-utilities]]
+
+==== Operating System Utilities
+
+Operating system utilities, such as `pkginfo` and `showrev` on Solaris
+and `rpm` on Linux, are helpful in gathering system information.
+
+The `ps -ef` command provides helpful information about processes that
+are running, including their process identification numbers (PIDs).
+
+[[ghvbo]][[GSTSG00176]][[stack-traces-and-thread-dumps]]
+
+==== Stack Traces and Thread Dumps
+
+A stack trace is a user-friendly snapshot of the threads and monitors in
+a Virtual Machine for the Java platform (Java Virtual Machine or JVM
+machine). A thread dump shows what every thread in a JVM is doing at a
+given time and is useful in debugging. When the application server
+freezes, hangs, or becomes sluggish for no apparent reason, you should
+generate and analyze a thread dump.
+
+This section explains how to obtain a thread dump for {productName}. More information about analyzing the information
+contained in a thread dump can be found in
+"http://java.sun.com/developer/technicalArticles/Programming/Stacktrace[An
+Introduction to Java Stack Traces]"
+(`http://java.sun.com/developer/technicalArticles/Programming/Stacktrace`).
+
+[[ghykr]][[GSTSG00023]][[to-obtain-a-server-thread-dump]]
+
+===== To Obtain a Server Thread Dump
+
+Type the following command:
+
+[source]
+----
+asadmin generate-jvm-report --type=thread
+----
+
+[[sthref3]]
+
+See Also
+
+link:reference-manual/generate-jvm-report.html#GSRFM00138[`generate-jvm-report`(1)]
+
+[[ghyjq]][[GSTSG00177]][[visualvm]]
+
+==== VisualVM
+
+VisualVM is a Java troubleshooting tool that uses various technologies
+such as `jvmstat`, JMX, and Attach API to access monitored applications.
+VisualVM is a tool for visualizing data sources and by default
+visualizes the following types: applications, hosts, snapshots, core
+dumps, heap dumps, and thread dumps. These data sources are visualized
+in VisualVM so that they can be monitored for the purposes of analysis,
+management, and troubleshooting. VisualVM is commonly used to detect
+memory leaks.
+
+VisualVM has a GlassFish plugin that enhances monitoring of hosted
+applications by adding specialized overview, a tab for monitoring the
+HTTP Service, and the ability to visually select and monitor any of the
+deployed web applications. You can experiment with VisualVM
+troubleshooting capabilities, but note that various features depend on
+the Java versions used in the client and server. Depending on your
+configuration, you might only get parts of the VisualVM features. For
+more information about VisualVM, see `http://visualvm.java.net`.
+
+[[gjjjl]][[GSTSG00178]][[jvm-command-line-tools]]
+
+==== JVM Command-Line Tools
+
+JVM command-line tools can be used to provide valuable information about
+hung Java processes or Java core dumps. These tools include the
+following:
+
+* `jstack`: Prints Java stack traces of Java threads for a given Java
+process or core file or a remote debug server.
+* `jinfo`: Prints Java configuration information for a given Java
+process or core file or a remote debug server.
+* `jmap`: Prints shared object memory maps or heap memory details for a
+given process or core file or a remote debug server.
+* `jsadebugd`: Attaches to a Java process or core file and acts as a
+debug server. Remote clients such as `jstack`, `jmap`, and `jinfo` can
+attach to the server using Java Remote Invocation Method (RMI).
+* `jhat`: Enables Java heap dumps to be browsed using a web browser.
+* `jstat`: Displays performance statistics for an instrumented HotSpot JVM.
+* `jps`: Lists the instrumented HotSpot JVMs on the target system
+
+[[ghuyv]][[GSTSG00041]][[where-to-go-for-more-information]]
+
+=== Where to Go for More Information
+
+These resources were mentioned throughout this chapter and are provided
+again here for easy reference.
+
+* Release Notes: link:release-notes.html#GSRLN[{productName}
+Release Notes]
+* Error messages: link:error-messages-reference.html#GSEMR[{productName} Error
+Message Reference]
+* Mailing lists and forums: See link:#ghymp[Search the GlassFish Mailing
+Lists and Forums] for details about accessing lists and forums.
+* GlassFish community site: `http://glassfish.java.net/`
+
diff --git a/docs/troubleshooting-guide/src/main/asciidoc/preface.adoc b/docs/troubleshooting-guide/src/main/asciidoc/preface.adoc
new file mode 100644
index 0000000..5b32784
--- /dev/null
+++ b/docs/troubleshooting-guide/src/main/asciidoc/preface.adoc
@@ -0,0 +1,331 @@
+type=page
+status=published
+title=Preface
+next=overview.html
+prev=title.html
+~~~~~~
+
+= Preface
+
+[[GSTSG00001]][[gkbfu]]
+[[preface]]
+== Preface
+
+[NOTE]
+====
+This documentation is part of the Java Enterprise Edition contribution
+to the Eclipse Foundation and is not intended for use in relation to
+Java Enterprise Edition or Orace GlassFish. The documentation is in the
+process of being revised to reflect the new Jakarta EE branding.
+Additional changes will be made as requirements and procedures evolve
+for Jakarta EE. Where applicable, references to Jakarta EE or Java
+Enterprise Edition should be considered references to Jakarta EE.
+
+Please see the Title page for additional license information.
+====
+
+This guide describes common problems that you might encounter when using
+{productName} and how to solve them.
+
+This preface contains information about and conventions for the entire
+{productName} ({productName}) documentation set.
+
+{productName} 7 is developed through the GlassFish project
+open-source community at https://github.com/eclipse-ee4j/glassfish.
+The GlassFish project provides a structured process for developing the
+{productName} platform that makes the new features of the Jakarta EE
+platform available faster, while maintaining the most important feature
+of Jakarta EE: compatibility. It enables Java developers to access the
+{productName} source code and to contribute to the development of the
+{productName}.
+
+The following topics are addressed here:
+
+* link:#ghpbz[{productName} Documentation Set]
+* link:#giprl[Related Documentation]
+* link:#fwbkx[Typographic Conventions]
+* link:#fquvc[Symbol Conventions]
+* link:#ghpfg[Default Paths and File Names]
+
+[[GSTSG00031]][[ghpbz]]
+
+[[glassfish-server-documentation-set]]
+=== {productName} Documentation Set
+
+The {productName} documentation set describes deployment planning and
+system installation. For an introduction to {productName}, refer to
+the books in the order in which they are listed in the following table.
+
+[width="100%",cols="<30%,<70%",options="header",]
+|===
+|Book Title |Description
+|link:release-notes.html#GSRLN[Release Notes] |Provides late-breaking information about
+the software and the documentation and includes a comprehensive,
+table-based summary of the supported hardware, operating system, Java
+Development Kit (JDK), and database drivers.
+
+|link:quick-start-guide.html#GSQSG[Quick Start Guide]
+|Explains how to get started with the {productName} product.
+
+|link:installation-guide.html#GSING[Installation Guide]
+|Explains how to install the software and its components.
+
+|link:upgrade-guide.html#GSUPG[Upgrade Guide]
+|Explains how to upgrade to the latest version of {productName}.
+This guide also describes differences between adjacent product releases and configuration
+options that can result in incompatibility with the product specifications.
+
+|link:deployment-planning-guide.html#GSPLG[Deployment Planning Guide]
+|Explains how to build a production deployment of {productName} that meets the requirements of
+your system and enterprise.
+
+|link:administration-guide.html#GSADG[Administration Guide]
+|Explains how to configure, monitor, and manage {productName} subsystems and components
+from the command line by using the link:reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] utility.
+Instructions for performing these tasks from the Administration Console are provided
+in the Administration Console online help.
+
+|link:security-guide.html#GSSCG[Security Guide]
+|Provides instructions for configuring and administering {productName} security.
+
+|link:application-deployment-guide.html#GSDPG[Application Deployment Guide]
+|Explains how to assemble and deploy applications to the {productName} and provides information
+about deployment descriptors.
+
+|link:application-development-guide.html#GSDVG[Application Development Guide]
+|Explains how to create and implement Java Platform, Enterprise Edition (Jakarta EE platform)
+applications that are intended to run on the {productName}.
+These applications follow the open Java standards model for Jakarta EE components
+and application programmer interfaces (APIs).
+This guide provides information about developer tools, security, and debugging.
+
+|link:add-on-component-development-guide.html#GSACG[Add-On Component Development Guide]
+|Explains how to use published interfaces of {productName} to develop add-on components
+for {productName}.
+This document explains how to perform only those tasks that ensure that the add-on component
+is suitable for {productName}.
+
+|link:embedded-server-guide.html#GSESG[Embedded Server Guide]
+|Explains how to run applications in embedded {productName} and to develop applications
+in which {productName} is embedded.
+
+|link:ha-administration-guide.html#GSHAG[High Availability Administration Guide]
+|Explains how to configure {productName} to provide higher availability and
+scalability through failover and load balancing.
+
+|link:performance-tuning-guide.html#GSPTG[Performance Tuning Guide]
+|Explains how to optimize the performance of {productName}.
+
+|link:troubleshooting-guide.html#GSTSG[Troubleshooting Guide]
+|Describes common problems that you might encounter when using {productName} and explains how to solve them.
+
+|link:error-messages-reference.html#GSEMR[Error Message Reference]
+|Describes error messages that you might encounter when using {productName}.
+
+|link:reference-manual.html#GSRFM[Reference Manual]
+|Provides reference information in man page format for {productName} administration commands, utility
+commands, and related concepts.
+
+|link:../openmq/mq-release-notes.html#GMRLN[Message Queue Release Notes]
+|Describes new features, compatibility issues, and existing bugs for Open Message Queue.
+
+|link:../openmq/mq-tech-over.html#GMTOV[Message Queue Technical Overview]
+|Provides an introduction to the technology, concepts, architecture, capabilities, and features of
+the Message Queue messaging service.
+
+|link:../openmq/mq-admin-guide.html#GMADG[Message Queue Administration Guide]
+|Explains how to set up and manage a Message Queue messaging system.
+
+|link:../openmq/mq-dev-guide-jmx.html#GMJMG[Message Queue Developer's Guide for JMX Clients]
+|Describes the application programming interface in Message Queue for
+programmatically configuring and monitoring Message Queue resources in
+conformance with the Java Management Extensions (JMX).
+
+|link:../openmq/mq-dev-guide-java.html#GMJVG[Message Queue Developer's Guide for Java Clients]
+|Provides information about concepts and procedures for developing Java messaging
+applications (Java clients) that work with {productName}.
+
+|link:../openmq/mq-dev-guide-c.html#GMCCG[Message Queue Developer's Guide for C Clients]
+|Provides programming and reference information for developers working with
+Message Queue who want to use the C language binding to the Message
+Queue messaging service to send, receive, and process Message Queue messages.
+|===
+
+
+[[GSTSG00032]][[giprl]]
+
+[[related-documentation]]
+=== Related Documentation
+
+The following tutorials explain how to develop Jakarta EE applications:
+
+* https://github.com/eclipse-ee4j/jakartaee-firstcup-examples[
+Your First Cup: An Introduction to the Jakarta EE Platform].
+For beginning Jakarta EE programmers, this short tutorial explains the entire
+process for developing a simple enterprise application.
+The sample application is a web application that consists of a component that is
+based on the Enterprise JavaBeans specification, a JAX-RS web service,
+and a JavaServer Faces component for the web front end.
+
+* https://eclipse-ee4j.github.io/jakartaee-tutorial[The Jakarta EE Tutorial].
+This comprehensive tutorial explains how to use Jakarta EE platform technologies
+and APIs to develop Jakarta EE applications.
+
+Javadoc tool reference documentation for packages that are provided with
+{productName} is available as follows.
+
+* The Jakarta EE specifications and API specification is
+located at https://jakarta.ee/specifications/.
+
+* The API specification for {productName} 7, including Jakarta EE
+platform packages and nonplatform packages that are specific to the
+{productName} product, is located at
+https://glassfish.org/docs/.
+
+For information about creating enterprise applications in the NetBeans
+Integrated Development Environment (IDE), see the
+https://netbeans.apache.org/kb/docs/java-ee.html[
+NetBeans Documentation, Training & Support page].
+
+For information about the Derby database for use with
+the {productName}, see the https://db.apache.org/derby/index.html[Derby page].
+
+The Jakarta EE Samples project is a collection of sample applications that
+demonstrate a broad range of Jakarta EE technologies. The Jakarta EE Samples
+are bundled with the Jakarta EE Software Development Kit (SDK) and are also
+available from the repository
+(`https://github.com/eclipse-ee4j/glassfish-samples`).
+
+
+[[typographic-conventions]]
+=== Typographic Conventions
+
+The following table describes the typographic changes that are used in
+this book.
+
+[width="100%",cols="<14%,<37%,<49%",options="header",]
+|===
+|Typeface |Meaning |Example
+
+|`AaBbCc123`
+|The names of commands, files, and directories, and onscreen computer output
+|Edit your `.login` file.
+
+Use `ls` `a` to list all files.
+
+`machine_name% you have mail.`
+
+|`AaBbCc123`
+|What you type, contrasted with onscreen computer output
+|`machine_name%` `su`
+
+`Password:`
+
+|AaBbCc123
+|A placeholder to be replaced with a real name or value
+|The command to remove a file is `rm` filename.
+
+|AaBbCc123
+|Book titles, new terms, and terms to be emphasized (note that some emphasized items appear bold online)
+|Read Chapter 6 in the User's Guide.
+
+A cache is a copy that is stored locally.
+
+Do not save the file.
+|===
+
+
+[[GSTSG00034]][[fquvc]]
+
+[[symbol-conventions]]
+=== Symbol Conventions
+
+The following table explains symbols that might be used in this book.
+
+[width="100%",cols="<10%,<26%,<28%,<36%",options="header",]
+|===
+|Symbol |Description |Example |Meaning
+
+|`[ ]`
+|Contains optional arguments and command options.
+|`ls [-l]`
+|The `-l` option is not required.
+
+|`{ \| }`
+|Contains a set of choices for a required command option.
+|`-d {y\|n}`
+|The `-d` option requires that you use either the `y` argument or the `n` argument.
+
+|`${ }`
+|Indicates a variable reference.
+|`${com.sun.javaRoot}`
+|References the value of the `com.sun.javaRoot` variable.
+
+|`-`
+|Joins simultaneous multiple keystrokes.
+|Control-A
+|Press the Control key while you press the A key.
+
+|`+`
+|Joins consecutive multiple keystrokes.
+|Ctrl+A+N
+|Press the Control key, release it, and then press the subsequent keys.
+
+|`>`
+|Indicates menu item selection in a graphical user interface.
+|File > New > Templates
+|From the File menu, choose New. From the New submenu, choose Templates.
+|===
+
+
+[[GSTSG00035]][[ghpfg]]
+
+[[default-paths-and-file-names]]
+=== Default Paths and File Names
+
+The following table describes the default paths and file names that are
+used in this book.
+
+[%autowidth.stretch,options="header",]
+|===
+|Placeholder |Description |Default Value
+
+|as-install
+a|Represents the base installation directory for {productName}.
+In configuration files, as-install is represented as follows:
+`${com.sun.aas.installRoot}`
+a|* Installations on the Oracle Solaris operating system, Linux operating
+system, and Mac OS operating system:
++
+user's-home-directory``/glassfish7/glassfish``
++
+* Installations on the Windows operating system:
++
+SystemDrive``:\glassfish7\glassfish``
+
+|as-install-parent
+|Represents the parent of the base installation directory for {productName}.
+a|* Installations on the Oracle Solaris operating system, Linux operating
+system, and Mac operating system:
++
+user's-home-directory``/glassfish7``
++
+* Installations on the Windows operating system:
++
+SystemDrive``:\glassfish7``
+
+|domain-root-dir
+|Represents the directory in which a domain is created by default.
+|as-install``/domains/``
+
+|domain-dir
+|Represents the directory in which a domain's configuration is stored.
+In configuration files, domain-dir is represented as follows:
+`${com.sun.aas.instanceRoot}`
+|domain-root-dir/domain-name
+
+|instance-dir
+|Represents the directory for a server instance.
+|domain-dir/instance-name
+|===
+
diff --git a/docs/troubleshooting-guide/src/main/asciidoc/specific-issues.adoc b/docs/troubleshooting-guide/src/main/asciidoc/specific-issues.adoc
new file mode 100644
index 0000000..dd0b542
--- /dev/null
+++ b/docs/troubleshooting-guide/src/main/asciidoc/specific-issues.adoc
@@ -0,0 +1,811 @@
+type=page
+status=published
+title=Specific Issues
+next=faqs.html
+prev=overview.html
+~~~~~~
+
+= Specific Issues
+
+[[GSTSG00003]][[abgbj]]
+
+
+[[specific-issues]]
+== 2 Specific Issues
+
+This chapter lists problems that you might encounter when using {productName} 7. The following topics are addressed:
+
+* link:#abgca[Cannot Access Local Server (`http://localhost:8080`)]
+* link:#abgcf[Cannot Access Remote Server]
+* link:#abgcm[Cannot Access the Administration Console]
+* link:#abgcw[Cannot Access a Server Application]
+* link:#gjjoz[Administrator User Name or Password Not Known]
+* link:#gjjpj[Experience Issues Related to the JDK]
+* link:#abgdi[Server Will Not Start on Windows (Port Conflict)]
+* link:#gkvcs[{productName} Fails to Start in an OpenSolaris Zone]
+* link:#abgdr[Two Server Instances Bind to Same Port on Windows]
+* link:#abgel[Cannot Produce a JVM Thread Dump After Server Crash]
+* link:#ghvgk[Issues Related to Applications]
+* link:#ghvhy[Issues Related to `asadmin`]
+* link:#ghvgu[Issues Related to Installation]
+* link:#ghvrh[Issues Related to Security]
+
+[[abgca]][[GSTSG00043]][[cannot-access-local-server-httplocalhost8080]]
+
+=== Cannot Access Local Server (`http://localhost:8080`)
+
+When this error occurs, check the following:
+
+* link:#abgcb[Did the Server Start?]
+* link:#abgcd[Was the Server Started at the Expected Port?]
+* link:#gjjpn[Is a Personal Firewall Enabled?]
+
+[[abgcb]][[GSTSG00179]][[did-the-server-start]]
+
+==== Did the Server Start?
+
+[[abgcc]][[GSTSG00085]][[description]]
+
+===== Description
+
+If the console window is still open, the expected message indicates that
+the default domain was started successfully.
+
+If the console window is already closed, check for messages in the log
+file. This is the default location:
+
+[source]
+----
+domain-dir/logs/server.log
+----
+
+If startup was successful, the expected message is similar to that on
+the console, and appears at the end of the log file.
+
+For more information about starting a domain, see
+"link:administration-guide/domains.html#GSADG00537[
+Starting and Stopping a Domain]"
+in {productName} Administration Guide.
+To easily determine if a domain is running, use the `asadmin list-domains` command.
+
+[[abgcd]][[GSTSG00180]][[was-the-server-started-at-the-expected-port]]
+
+==== Was the Server Started at the Expected Port?
+
+[[abgce]][[GSTSG00086]][[description-1]]
+
+===== Description
+
+The server might be running at a different port number than expected,
+either because it was intentionally installed there, or because another
+server was already running on the default port when the server was
+installed.
+
+[[fxxov]][[GSTSG00024]][[to-determine-which-port-number-the-server-is-using]]
+
+To Determine Which Port Number the Server Is Using
+
+Follow this procedure.
+
+1. Examine the server's configuration file:
++
+[source]
+----
+domain-dir/config/domain.xml
+----
+2. Find the `network-listener` element.
+3. Inspect the value of the `port` attribute.
++
+Be sure to enter the correct port number when invoking the server.
++
+[NOTE]
+====
+The server's default port number is `8080`, however, there are a number
+of ways in which the expected value can change:
+
+* A different port number was specified during installation.
+* A previous installation exists.
+====
+
+
+[[gjjpn]][[GSTSG00181]][[is-a-personal-firewall-enabled]]
+
+==== Is a Personal Firewall Enabled?
+
+Issues might result when personal firewalls are enabled. Disable your
+personal firewall and see if the server access problem still exists.
+
+[[abgcf]][[GSTSG00044]][[cannot-access-remote-server]]
+
+=== Cannot Access Remote Server
+
+When attempting to open the start page of {productName}, the initial
+screen does not appear.
+
+When this error occurs, check the following:
+
+* link:#abgcg[Is the Server Available Locally?]
+* link:#abgcj[Is the Proxy Setting Causing a Problem?]
+
+[[abgcg]][[GSTSG00182]][[is-the-server-available-locally]]
+
+==== Is the Server Available Locally?
+
+[[abgch]][[GSTSG00087]][[description-2]]
+
+===== Description
+
+If the server cannot be accessed from the web, but it is running
+locally, then the server is actually running.
+
+[[abgci]][[GSTSG00088]][[solution]]
+
+===== Solution
+
+Verify that the server is running locally.
+
+[[fxxod]][[GSTSG00025]][[to-verify-that-the-server-is-running-locally]]
+
+To Verify That the Server Is Running Locally
+
+Follow this procedure.
+
+1. Log on to the host where the server is running.
+2. Go to the local web page. For example, if `8080` is the default port, go to:
++
+[source]
+----
+http://localhost:8080/
+----
+If the start page does appear, the web connection is encountering a
+problem that prevents accessing the server remotely. If the start page
+does not appear, see link:#abgcb[Did the Server Start?].
+
+[[abgcj]][[GSTSG00183]][[is-the-proxy-setting-causing-a-problem]]
+
+==== Is the Proxy Setting Causing a Problem?
+
+[[abgck]][[GSTSG00089]][[description-3]]
+
+===== Description
+
+The server should be accessible directly from the host on which it is
+running (`localhost`); for example, using the default port `8080`:
+
+[source]
+----
+http://localhost:8080/
+----
+
+[[abgcl]][[GSTSG00090]][[solution-1]]
+
+===== Solution
+
+A server instance running on `localhost` might not be accessible if the
+server host machine is connected to the web through a proxy. To solve
+this problem, do one of the following:
+
+* Set the browser to bypass the proxy server when accessing `localhost`.
+Refer to the browser's help system for information about how to do this.
+* Use the fully-qualified host name or IP address of your system; for example:
++
+[source]
+----
+http://myhost.mydomain.com:8080/
+----
+* Create an entry in the system's hosts file (for example, pointing
+`127.0.0.1` to `localhost`; `127.0.0.1` is not proxied).
+
+
+[NOTE]
+====
+To determine the host name for the `localhost` machine, type `hostname` at the command prompt.
+====
+
+
+[[abgcm]][[GSTSG00045]][[cannot-access-the-administration-console]]
+
+=== Cannot Access the Administration Console
+
+The Administration Console provides a graphical interface for
+administrative functions. If the Administration Console is not
+accessible, check the following:
+
+* link:#abgcn[Is the Application Server Running?]
+* link:#abgcq[Is the Administration Console Running on the Expected
+Port?]
+
+For more information about the Administration Console, see
+"link:administration-guide/overview.html#GSADG00698[Administration Console]" in {productName} Administration Guide.
+
+[[abgcn]][[GSTSG00184]][[is-the-application-server-running]]
+
+==== Is the Application Server Running?
+
+[[abgco]][[GSTSG00091]][[description-4]]
+
+===== Description
+
+The server must be running before the Administration Console can be
+accessed.
+
+[[abgcp]][[GSTSG00092]][[solution-2]]
+
+===== Solution
+
+Review the information in link:#abgcb[Did the Server Start?] to
+determine if the server is running.
+
+[[abgcq]][[GSTSG00185]][[is-the-administration-console-running-on-the-expected-port]]
+
+==== Is the Administration Console Running on the Expected Port?
+
+[[abgcr]][[GSTSG00093]][[description-5]]
+
+===== Description
+
+The default port number for the Administration Console is `4848`.
+However, it could be running on a different port number than expected,
+either because it was intentionally installed there, or because that
+port was in use when the server was started.
+
+[[abgcs]][[GSTSG00094]][[solution-3]]
+
+===== Solution
+
+Refer to link:#abgcd[Was the Server Started at the Expected Port?] for
+guidelines on verifying the port on which the Administration Console is
+running. Be sure to enter the correct port number and HTTP protocol when
+invoking the Administration Console.
+
+[[abgcw]][[GSTSG00046]][[cannot-access-a-server-application]]
+
+=== Cannot Access a Server Application
+
+If a particular application cannot be accessed through {productName},
+check the following:
+
+* link:#abgcx[Is the Application Server Running?]
+* link:#abgda[Was Application Deployment Successful?]
+
+[[abgcx]][[GSTSG00186]][[is-the-application-server-running-1]]
+
+==== Is the Application Server Running?
+
+[[abgcy]][[GSTSG00095]][[description-6]]
+
+===== Description
+
+If {productName} is not running, applications are not accessible.
+
+[[abgcz]][[GSTSG00096]][[solution-4]]
+
+===== Solution
+
+Review the information in link:#abgcb[Did the Server Start?] to
+determine if the server is running. The server must be running before a
+server application can be accessed.
+
+[[abgda]][[GSTSG00187]][[was-application-deployment-successful]]
+
+==== Was Application Deployment Successful?
+
+[[abgdb]][[GSTSG00097]][[description-7]]
+
+===== Description
+
+An application must be successfully deployed before it can be accessed.
+
+[[abgdc]][[GSTSG00098]][[solution-5]]
+
+===== Solution
+
+Verify that the application was successfully deployed. There are several
+ways to do this:
+
+* Check the server's log file for related entries:
++
+[source]
+----
+domain-dir/server.log
+----
+* Use the `asadmin list-applications` command to determine which
+applications are deployed.
+* View the Applications page in the Administration Console, accessed by
+clicking the Applications node.
+
+For more information about deploying applications, see
+"link:application-deployment-guide/deploying-applications.html#GSDPG00004[Deploying Applications]" in {productName} Application Deployment Guide. Also see the Administration
+Console online help.
+
+[[gjjoz]][[GSTSG00047]][[administrator-user-name-or-password-not-known]]
+
+=== Administrator User Name or Password Not Known
+
+If you have forgotten the administrator user name, you can find it by
+inspecting the domain-dir`/config/admin-keyfile` file, where domain-dir
+is the directory for the domain. In the default domain, `domain1`, the
+file to inspect is domain-dir`/config/admin-keyfile`. For a different
+domain, substitute its name in the path.
+
+If you have forgotten the administrator password, one solution is to
+create a new domain with the admin username and password that you want,
+then copy the entry from the `config/admin-keyfile` file in that new
+domain to the other domain.
+
+[[gjjpj]][[GSTSG00048]][[experience-issues-related-to-the-jdk]]
+
+=== Experience Issues Related to the JDK
+
+[[gjjpl]][[GSTSG00188]][[description-8]]
+
+==== Description
+
+You experience JDK-related issues in a variety of circumstances.
+
+[[gjjop]][[GSTSG00189]][[solution-6]]
+
+==== Solution
+
+{productName} 7 requires JDK 11, so check your system for that dependency.
+
+Ensure that the required JDK software is installed and that the
+`JAVA_HOME` environment variable points to the JDK installation
+directory, not the Java Runtime Environment (JRE) software.
+
+Set `JAVA_HOME` and `$JAVA_HOME/bin` in the `PATH` to point to the
+supported JDK version.
+
+[[abgdi]][[GSTSG00049]][[server-will-not-start-on-windows-port-conflict]]
+
+=== Server Will Not Start on Windows (Port Conflict)
+
+If a message similar to the following is displayed when starting
+{productName} on Microsoft Windows, a server port conflict has
+occurred:
+
+[source]
+----
+Address already in use
+----
+
+This error occurs when another application is running on the {productName} port (default `8080`), or because a previous instance of
+{productName} did not shut down cleanly.
+
+You might also check the following:
+
+* link:#abgdj[Is Another Application Running on the Server's Port?]
+* link:#abgdk[Has an Ungraceful Shutdown Occurred on a Previously Running Server?]
+
+[[abgdj]][[GSTSG00190]][[is-another-application-running-on-the-servers-port]]
+
+==== Is Another Application Running on the Server's Port?
+
+If another application is using the server's port, stop the other
+application, then restart {productName}.
+
+[[abgdk]][[GSTSG00191]][[has-an-ungraceful-shutdown-occurred-on-a-previously-running-server]]
+
+==== Has an Ungraceful Shutdown Occurred on a Previously Running Server?
+
+Use the `asadmin stop-domain` command to stop the server, or explicitly
+kill the Java process and then restart {productName}.
+
+[[gkvcs]][[GSTSG00050]][[glassfish-server-fails-to-start-in-an-opensolaris-zone]]
+
+=== {productName} Fails to Start in an OpenSolaris Zone
+
+[[gkvcx]][[GSTSG00192]][[description-9]]
+
+==== Description
+
+If {productName} is installed in an OpenSolaris zone, an attempt to
+start a domain might fail with the following error message:
+
+[source]
+----
+Waiting for DAS to start ..Error starting domain: domain.
+The server exited prematurely with exit code 6.
+Before it died, it produced the following output:
+
+UTF ERROR ["../../../src/solaris/instrument/EncodingSupport_md.c":66]:
+Failed to complete iconv_open() setup
+----
+
+The failure occurs because, by default, an OpenSolaris zone is installed
+without language and encoding support, which {productName} requires.
+
+[[gkvdf]][[GSTSG00026]][[resolution-to-enable-glassfish-server-to-run-in-an-opensolaris-zone]]
+
+==== Resolution: To Enable {productName} to Run in an OpenSolaris Zone
+
+1. Install the package that provides language and encoding support for
+your locale.
++
+[source]
+----
+$ pkg install package-name
+----
+package-name::
+  The name of the package that provides language and encoding support
+  for your locale. For example, the name of the package that provides
+  language and encoding support for the US English locale is
+  `SUNWlang-enUS`.
+2. Set the `LANG` environment variable to the code for your locale.
++
+For example, if your locale is US English, set the `LANG` environment
+variable to `en_US.UTF-8`.
+
+[[abgdr]][[GSTSG00051]][[two-server-instances-bind-to-same-port-on-windows]]
+
+=== Two Server Instances Bind to Same Port on Windows
+
+[[abgds]][[GSTSG00193]][[description-10]]
+
+==== Description
+
+This problem occurs on Windows XP systems with {productName}
+software, and is due to a known Windows security flaw rather than a
+problem with {productName} itself.
+
+The problem occurs when two or more instances of {productName} are
+created using the same port number for the `instanceport` option; for
+example:
+
+[source]
+----
+asadmin create-domain -adminport 5001 options -instanceport 6001 domain
+asadmin create-domain -adminport 5002 options -instanceport 6001 domain
+----
+
+When the two domains are started on a UNIX or Linux system, a port
+conflict error is thrown and the second instance fails to start.
+However, when the two domains are started on Windows XP, no error is
+thrown, both server instances start, but only the first instance is
+accessible at the specified port. When that first server instance is
+subsequently shut down, the second instance then becomes accessible.
+Moreover, when both instances are running, the Windows `netstat` command
+only reports the first instance.
+
+[[fxxyd]][[GSTSG00194]][[solution-7]]
+
+==== Solution
+
+Be sure to use unique port numbers for all server instances on Windows
+systems.
+
+[[abgel]][[GSTSG00052]][[cannot-produce-a-jvm-thread-dump-after-server-crash]]
+
+=== Cannot Produce a JVM Thread Dump After Server Crash
+
+[[abgem]][[GSTSG00195]][[description-11]]
+
+==== Description
+
+If {productName} crashes, the server dumps a core file and, by
+default, restarts with the `-Xrs` flag, which prevents the dump of a JVM
+thread dump.
+
+[[fxxyw]][[GSTSG00196]][[solution-8]]
+
+==== Solution
+
+[[ghylc]][[GSTSG00027]][[to-obtain-a-server-thread-dump-specific-issues]]
+
+===== To Obtain a Server Thread Dump
+
+Type the following command:
+
+[source]
+----
+asadmin generate-jvm-report --type=thread
+----
+
+[[sthref4]]
+
+See Also
+
+link:reference-manual/generate-jvm-report.html#GSRFM00138[`generate-jvm-report`(1)]
+
+[[ghvgk]][[GSTSG00053]][[issues-related-to-applications]]
+
+=== Issues Related to Applications
+
+[[abgee]][[GSTSG00197]][[cannot-undeploy-or-redeploy-application-with-open-streams-to-jar-files-windows]]
+
+==== Cannot Undeploy or Redeploy Application With Open Streams to `jar` Files (Windows)
+
+[[abgef]][[GSTSG00099]][[description-12]]
+
+===== Description
+
+On Windows systems, after running an application, subsequent attempts to
+undeploy it or redeploy it throw exceptions about the server being
+unable to delete a file or rename a directory.
+
+On Windows systems, an application may use `getClass().getResource` or
+`getResourceAsStream` methods to locate a resource inside the
+application, particularly in `jar` files that are in the application or
+accessible to it. If the streams remain open, subsequent attempts to
+redeploy or undeploy the application can fail. In addition, the Java
+runtime by default caches streams to `jar` files for performance
+reasons.
+
+[[fxxyr]][[GSTSG00100]][[solution-9]]
+
+===== Solution
+
+Be sure to close streams opened by your applications. Also, if an
+application needs to be redeployed or undeployed repeatedly, and also
+needs to obtain a resource from a `jar` file using `getResource` or
+`getResourceAsStream`, consider using `getClass().getResource`, which
+returns a URL object, then invoke the `url.setUseCaches` method to turn
+off caching for that `jar` file, and use `url.getInputStream()` to
+obtain the stream.
+
+Although turning off caching for access to the `jar` file can slow
+performance, this approach does allow the application to be undeployed
+or redeployed. Note also that if the `getClass().getResourceAsStream`
+method is used instead, then the `jar` file in which the resource is
+located is cached (this is the default Java runtime setting) and remains
+open until the server is stopped.
+
+[[gldbk]][[GSTSG00198]][[maxpermgen-exception]]
+
+==== `MaxPermGen` Exception
+
+[[gldbn]][[GSTSG00101]][[description-13]]
+
+===== Description
+
+Application servers such as {productName} allow you to redeploy an
+application without restarting the server. Simply make the change in
+your source code, compile the source, and redeploy the application.
+
+Each application is loaded using its own classloader. When you undeploy
+an application, its classloader is discarded with all the classes it
+loaded and is garbage collected sooner or later. However, if there's a
+reference from outside an application to an object in the application
+loaded by the application's classloader, that object can't be garbage
+collected. The reference holds the object in memory.
+
+The memory in the Virtual Machine is divided into a number of regions.
+One of these regions is `PermGen`. It's an area of memory used to (among
+other things) load class files. The size of this memory region is fixed;
+it does not change when the VM is running. You can specify the size of
+this region with a command line switch: `-XX:MaxPermSize`. Setting the
+`-Xmx` parameter does not help: this parameter only specifies the total
+heap size and does not affect the size of the `PermGen` region.
+
+If you keep loading new classes that can't be garbage collected because
+of references to them from outside the application, the VM runs out of
+space in the `PermGen` region, even if there's plenty of memory
+available. This is called a classloader leak. The resulting exception is
+`java.lang.OutOfMemoryError: PermGen space`.
+
+The `java.lang.String.intern()` method also allocates memory in the
+`PermGen` region. If your application uses this method with strings and
+holds references to these strings, thereby making garbage collection
+impossible, your application may cause the same `PermGen space`
+exception.
+
+[[gldbw]][[GSTSG00102]][[solution-10]]
+
+===== Solution
+
+Classloader leaks are difficult to diagnose. Most profilers list leaked
+objects but don't highlight the ones causing classloader leaks. Most
+profilers also stop tracing as soon as they reach a class object or
+classloader.
+
+One diagnostic approach involves undeploying the application and
+triggering a memory dump using the JDK 11 `jcmd` tool.
+The simplest analysis is to list all instances of `java.lang.Class`
+and look for class objects that have many instances.
+This is a sign that the class has been loaded
+multiple times without being garbage collected.
+
+See https://www.eclipse.org/openj9/docs/tool_jcmd/ for more information.
+
+
+[[ghvhy]][[GSTSG00054]][[issues-related-to-asadmin]]
+
+=== Issues Related to `asadmin`
+
+[[ghvhi]][[GSTSG00199]][[asadmin-start-domain-command-fails]]
+
+==== `asadmin` `start-domain` Command Fails
+
+The command `asadmin start-domain` fails with the following error:
+
+[source]
+----
+There is more than one domain...
+----
+
+[[gjkph]][[GSTSG00103]][[description-14]]
+
+===== Description
+
+When issued with no arguments, the command `asadmin start-domain` fails.
+
+This error occurs when there is more than one domain in the domains
+directory, none of them is named `domain1,` and no domain is specified
+with the `start-domain` command.
+
+[[gjkoy]][[GSTSG00104]][[solution-11]]
+
+===== Solution
+
+Specify the domain when issuing the `start-domain` command:
+
+[source]
+----
+asadmin start-domain domain-name
+----
+
+For example:
+
+[source]
+----
+asadmin start-domain mycustomdomain
+----
+
+[[ghvhx]][[GSTSG00200]][[cannot-stop-domain-using-asadmin-stop-domain]]
+
+==== Cannot Stop Domain Using `asadmin` `stop-domain`
+
+[[ghvhl]][[GSTSG00105]][[description-15]]
+
+===== Description
+
+You cannot stop the domain using the `asadmin` `stop-domain` command.
+
+[[ghvha]][[GSTSG00106]][[solution-12]]
+
+===== Solution
+
+Look for error messages that display in the console when you issue the command.
+
+Search the `server.log` file for error messages related to your
+inability to stop the domain.
+
+[[ghvgu]][[GSTSG00055]][[issues-related-to-installation]]
+
+=== Issues Related to Installation
+
+[[gjjnu]][[GSTSG00201]][[installation-hangs-during-update-tool-configuration]]
+
+==== Installation Hangs During Update Tool Configuration
+
+[[giqjt]][[GSTSG00107]][[description-16]]
+
+===== Description
+
+Installation hangs more than five minutes during Update Tool configuration.
+
+[[giqle]][[GSTSG00108]][[solution-13]]
+
+===== Solution
+
+Cancel the installation and run the installation program again, but this
+time deselect the Install Update Tool check box. Update Tool can be
+installed later from as-install``/bin/``. For more information about
+Update Tool, see "link:administration-guide.html#GSADG00701[Update Tool]"
+in {productName} Administration Guide. For general information about
+{productName}installation, see the link:installation-guide.html#GSING[
+{productName} Installation Guide].
+
+
+[NOTE]
+====
+Update Tool differs from Upgrade Tool, which is used to migrate the
+configuration and deployed applications from an earlier version of
+{productName} to the current version.
+For more information about Upgrade Tool and upgrading, see the
+link:upgrade-guide.html#GSUPG[{productName} Upgrade Guide].
+====
+
+
+[[gjjob]][[GSTSG00202]][[glassfish-server-components-not-removed-during-uninstallation]]
+
+==== {productName} Components Not Removed During Uninstallation
+
+[[gjjoh]][[GSTSG00109]][[description-17]]
+
+===== Description
+
+Not all {productName} directories are automatically removed by the
+uninstallation program. Some directories and files remain after
+uninstalling.
+
+[[gjjnk]][[GSTSG00110]][[solution-14]]
+
+===== Solution
+
+Examine the remaining directories and remove any files or directories
+that you do not want, including hidden directories prefixed with a dot.
+It is safe to remove uninstallation and installation log files after you
+have examined them.
+
+For information related to uninstallation, see
+"link:installation-guide/uninstalling.html#GSING00003[Uninstalling GlassFish]"
+in {productName} Installation Guide.
+
+[[ghvrh]][[GSTSG00056]][[issues-related-to-security]]
+
+=== Issues Related to Security
+
+[[abgjt]][[GSTSG00203]][[java.security.accesscontrolexception-access-denied-error]]
+
+==== `java.security.AccessControlException`: Access Denied Error
+
+[[abgju]][[GSTSG00111]][[description-18]]
+
+===== Description
+
+The following error occurs from an application client, or appears in the
+`server.log` file:
+
+[source]
+----
+java.security.AccessControlException: access denied
+(java.util.PropertyPermission name write...)
+----
+
+There is a permissions issue in the policy files. Either the
+`client.policy` file for the application client or the `server.policy`
+file for server side components does not have permission to set the
+property.
+
+[[fxxzk]][[GSTSG00112]][[solution-15]]
+
+===== Solution
+
+Add the permission in `client.policy` (for the application client), or
+in `server.policy` (for web modules) for the application that needs to
+set the property. By default, applications only have read permission for
+properties.
+
+For example, to grant read/write permission for all files in the
+codebase directory, add or append the following to `client.policy` or
+`server.policy`:
+
+[source]
+----
+grant codeBase "file:/.../build/sparc_SunOS/sec/-" {
+   permission java.util.PropertyPermission "*", "read,write";
+ };
+----
+
+[[abgka]][[GSTSG00204]][[mutual-authentication-not-working-with-the-application-client]]
+
+==== Mutual Authentication Not Working With the Application Client
+
+[[abgkb]][[GSTSG00113]][[description-19]]
+
+===== Description
+
+This failure can occur when the keystore and truststore properties are
+not set properly.
+
+[[fxxzu]][[GSTSG00114]][[solution-16]]
+
+===== Solution
+
+Set the following properties on the JVM:
+
+[source]
+----
+javax.net.ssl.keyStore=
+<keystore-file-path>;javax.net.ssl.trustStore=<truststore-file-path>
+----
+
+To use the application client, set the environment variable `VMARGS` to
+the following value:
+
+[source]
+----
+-Djavax.net.ssl.keyStore=${admin.domain.dir}/${admin.domain}/config/keystore.jks
+-Djavax.net.ssl.trustStore=${admin.domain.dir}/${admin.domain}/config/cacerts.jks
+----
diff --git a/docs/troubleshooting-guide/src/main/asciidoc/title.adoc b/docs/troubleshooting-guide/src/main/asciidoc/title.adoc
new file mode 100644
index 0000000..613d218
--- /dev/null
+++ b/docs/troubleshooting-guide/src/main/asciidoc/title.adoc
@@ -0,0 +1,46 @@
+type=page
+status=published
+title={productName} Troubleshooting Guide, Release 7
+next=preface.html
+prev=toc.html
+~~~~~~
+
+= {productName} Troubleshooting Guide, Release 7
+
+[[eclipse-glassfish-server]]
+== {productName}
+
+Troubleshooting Guide
+
+Release 7
+
+Contributed 2018 - 2022
+
+This guide describes common problems that you might encounter when using
+{productName} and how to solve them.
+
+[[sthref1]]
+
+'''''
+
+{productName} Troubleshooting Guide, Release 7
+
+Copyright © 2013, 2019 Oracle and/or its affiliates. All rights reserved.
+
+This program and the accompanying materials are made available under the
+terms of the Eclipse Public License v. 2.0, which is available at
+http://www.eclipse.org/legal/epl-2.0.
+
+SPDX-License-Identifier: EPL-2.0
+
+Oracle and Java are registered trademarks of Oracle and/or its
+affiliates. Other names may be trademarks of their respective owners.
+
+Intel and Intel Xeon are trademarks or registered trademarks of Intel
+Corporation. All SPARC trademarks are used under license and are
+trademarks or registered trademarks of SPARC International, Inc. AMD,
+Opteron, the AMD logo, and the AMD Opteron logo are trademarks or
+registered trademarks of Advanced Micro Devices. UNIX is a registered
+trademark of The Open Group.
+
+image:img/eclipse_foundation_logo_tiny.png["Eclipse Logo"]
diff --git a/docs/troubleshooting-guide/src/main/jbake/assets/css/style.css b/docs/troubleshooting-guide/src/main/jbake/assets/css/style.css
deleted file mode 100644
index 25a16e4..0000000
--- a/docs/troubleshooting-guide/src/main/jbake/assets/css/style.css
+++ /dev/null
@@ -1,315 +0,0 @@
-/* CSS */
-/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
-/** 1. Set default font family to sans-serif. 2. Prevent iOS text size adjust after orientation change, without disabling user zoom. */
-html { font-family: sans-serif; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ }
-
-/* HTML5 display definitions ========================================================================== */
-/** Correct `block` display not defined for any HTML5 element in IE 8/9. Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox. Correct `block` display not defined for `main` in IE 11. */
-article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { display: block; }
-
-/** 1. Correct `inline-block` display not defined in IE 8/9. 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. */
-audio, canvas, progress, video { display: inline-block; /* 1 */ vertical-align: baseline; /* 2 */ }
-
-/** Prevent modern browsers from displaying `audio` without controls. Remove excess height in iOS 5 devices. */
-audio:not([controls]) { display: none; height: 0; }
-
-/** Address `[hidden]` styling not present in IE 8/9/10. Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. */
-[hidden], template { display: none; }
-
-/* Links ========================================================================== */
-/** Remove the gray background color from active links in IE 10. */
-a { background-color: transparent; }
-
-/** Improve readability when focused and also mouse hovered in all browsers. */
-a:active, a:hover { outline: 0; }
-
-/* Text-level semantics ========================================================================== */
-/** Address styling not present in IE 8/9/10/11, Safari, and Chrome. */
-abbr[title] { border-bottom: 1px dotted; }
-
-/** Address style set to `bolder` in Firefox 4+, Safari, and Chrome. */
-b, strong { font-weight: bold; }
-
-/** Address styling not present in Safari and Chrome. */
-dfn { font-style: italic; }
-
-/** Address variable `h1` font-size and margin within `section` and `article` contexts in Firefox 4+, Safari, and Chrome. */
-h1 { font-size: 2em; margin: 0.67em 0; }
-
-/** Address styling not present in IE 8/9. */
-mark { background: #ff0; color: #000; }
-
-/** Address inconsistent and variable font size in all browsers. */
-small { font-size: 80%; }
-
-/** Prevent `sub` and `sup` affecting `line-height` in all browsers. */
-sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }
-
-sup { top: -0.5em; }
-
-sub { bottom: -0.25em; }
-
-/* Embedded content ========================================================================== */
-/** Remove border when inside `a` element in IE 8/9/10. */
-img { border: 0; }
-
-/** Correct overflow not hidden in IE 9/10/11. */
-svg:not(:root) { overflow: hidden; }
-
-/* Grouping content ========================================================================== */
-/** Address margin not present in IE 8/9 and Safari. */
-figure { margin: 1em 40px; }
-
-/** Address differences between Firefox and other browsers. */
-hr { box-sizing: content-box; height: 0; }
-
-/** Contain overflow in all browsers. */
-pre { overflow: auto; }
-
-/** Address odd `em`-unit font size rendering in all browsers. */
-code, kbd, pre, samp { font-family: monospace, monospace; font-size: 1em; }
-
-/* Forms ========================================================================== */
-/** Known limitation: by default, Chrome and Safari on OS X allow very limited styling of `select`, unless a `border` property is set. */
-/** 1. Correct color not being inherited. Known issue: affects color of disabled elements. 2. Correct font properties not being inherited. 3. Address margins set differently in Firefox 4+, Safari, and Chrome. */
-button, input, optgroup, select, textarea { color: inherit; /* 1 */ font: inherit; /* 2 */ margin: 0; /* 3 */ }
-
-/** Address `overflow` set to `hidden` in IE 8/9/10/11. */
-button { overflow: visible; }
-
-/** Address inconsistent `text-transform` inheritance for `button` and `select`. All other form control elements do not inherit `text-transform` values. Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. Correct `select` style inheritance in Firefox. */
-button, select { text-transform: none; }
-
-/** 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls. 2. Correct inability to style clickable `input` types in iOS. 3. Improve usability and consistency of cursor style between image-type `input` and others. */
-button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ }
-
-/** Re-set default cursor for disabled elements. */
-button[disabled], html input[disabled] { cursor: default; }
-
-/** Remove inner padding and border in Firefox 4+. */
-button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; }
-
-/** Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet. */
-input { line-height: normal; }
-
-/** It's recommended that you don't attempt to style these elements. Firefox's implementation doesn't respect box-sizing, padding, or width.  1. Address box sizing set to `content-box` in IE 8/9/10. 2. Remove excess padding in IE 8/9/10. */
-input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ }
-
-/** Fix the cursor style for Chrome's increment/decrement buttons. For certain `font-size` values of the `input`, it causes the cursor style of the decrement button to change from `default` to `text`. */
-input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { height: auto; }
-
-/** 1. Address `appearance` set to `searchfield` in Safari and Chrome. 2. Address `box-sizing` set to `border-box` in Safari and Chrome (include `-moz` to future-proof). */
-input[type="search"] { -webkit-appearance: textfield; /* 1 */ /* 2 */ box-sizing: content-box; }
-
-/** Remove inner padding and search cancel button in Safari and Chrome on OS X. Safari (but not Chrome) clips the cancel button when the search input has padding (and `textfield` appearance). */
-input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; }
-
-/** Define consistent border, margin, and padding. */
-fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; }
-
-/** 1. Correct `color` not being inherited in IE 8/9/10/11. 2. Remove padding so people aren't caught out if they zero out fieldsets. */
-legend { border: 0; /* 1 */ padding: 0; /* 2 */ }
-
-/** Remove default vertical scrollbar in IE 8/9/10/11. */
-textarea { overflow: auto; }
-
-/** Don't inherit the `font-weight` (applied by a rule above). NOTE: the default cannot safely be changed in Chrome and Safari on OS X. */
-optgroup { font-weight: bold; }
-
-/* Tables ========================================================================== */
-/** Remove most spacing between table cells. */
-table { border-collapse: collapse; border-spacing: 0; }
-
-td, th { padding: 0; }
-
-/* LAYOUT STYLES */
-
-p { margin-top: 0; }
-
-code, pre { margin-bottom: 30px; font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace; font-size: 13px; color: #222; }
-
-code { padding: 0 3px; background-color: #f2f8fc; border: solid 1px #dbe7f3; }
-
-pre { padding: 20px; overflow: auto; text-shadow: none; background: #fff; border: solid 1px #f2f2f2; }
-
-pre code { padding: 0; color: #2879d0; background-color: #fff; border: none; }
-
-ul, ol, dl { margin-bottom: 20px; }
-
-/* COMMON STYLES */
-
-td.halign-right { text-align: right; } 
-
-td.halign-center { text-align: center; } 
-
-form { padding: 20px; background: #f2f2f2; }
-
-h2 { 
-   font-size: 2em;
-   line-height: 1.2em;
-   font-weight: 200;
-   letter-spacing: 0;
-}
-
-h3 { 
-   font-size: 1.4em;
-   line-height: 1.2em;
-   font-weight: normal;
-   letter-spacing: 0;
-}
-
-.sect1 {
-   margin-left: 4%;
-   margin-right: 4%;
-   font: 13px/20px Arial, Helvetica, sans-serif  
-}
-
-a:link {
-   text-decoration: none;
-   color: #09569d;
-}
-
-#preamble hr{
-   margin-left: 0%;
-   margin-right: 0%;
-}
-
-#preamble .sectionbody table  {
-   font-weight: 200;
-   margin-left: 4%;
-   margin-right: 4%;
-}
-
-hr {
-   margin-bottom: 12px;
-}
-
-table.tableblock.frame-all.grid-all.spread {
-   font-size: 12px;
-}
-
-code {
-   font-size:.9em;
-   border: 1px solid #eaeaea;
-   background-color: #f6f6f6;
-   border-radius: 3px;
-   padding: 1px;
-   padding-left:2px;
-   padding-right:2px;
-}
-
-pre.prettyprint.highlight {
-   border: 1px solid #eaeaea;
-   background-color: #f6f6f6;
-   border-radius: 4px;
-   padding: 8px;
-   padding-top:4px;
-   padding-bottom:4px;
-}
-
-.language-oac_no_warn {
-   font-size:.9em;
-   color:#222;
-   background-color: transparent;
-}
-
-#doc-title {
-   margin-left: 4%;
-}
-
-#top-nav {
-   margin-left: 4%;
-   font-size: 12px;
-}
-
-#bottom-nav {
-   margin-left: 4%;
-   font-size: 12px;
-}
-
-.vector-font {
-   color:grey; 
-   font-size: 20px;
-}
-
-#copyright {
-   padding-top: 10px;
-   padding-bottom: 4px;
-   display: table;
-   margin:0 auto;
-   color: grey;
-   font-size: 12px;
-   vertical-align: middle;
-}
-
-.beta {color: #FF0000}
-
-/* GENERAL ELEMENT TYPE STYLES */
-
-/* #Media Queries
-================================================== */
-/* Smaller than standard 960 (devices and browsers) */
-/* Tablet Portrait size to standard 960 (devices and browsers) */
-@media only screen and (min-width: 768px) and (max-width: 959px) { .inner { width: 740px; }
-  header h1, header h2 { width: 340px; }
-  header h1 { font-size: 60px; }
-  header h2 { font-size: 30px; }
-}
-/* All Mobile Sizes (devices and browser) */
-@media only screen and (max-width: 767px) { .inner { width: 93%; }
-  header { padding: 20px 0; }
-  header .inner { position: relative; }
-  header h1, header h2 { width: 100%; }
-  header h1 { font-size: 48px; }
-  header h2 { font-size: 24px; }
-  header a.button { position: relative; display: inline-block; width: auto; height: auto; padding: 5px 10px; margin-top: 15px; font-size: 13px; line-height: 1; color: #2879d0; text-align: center; background-color: #9ddcff; background-image: none; border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; }
-  header a.button small { display: inline; font-size: 13px; }
-}
-/* Mobile Landscape Size to Tablet Portrait (devices and browsers) */
-/* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */
-
-header h1 { padding-top: 14px; font-size: 2em; font-weight: 200; line-height: 1.4; color: #FFFFFF; letter-spacing: 0px; border-bottom: 0px; }
-
-header h2 { font-size: 1.2em; margin-top: 0; margin-bottom: 0; font-weight: 200; line-height: .8; color: #ec7D11; letter-spacing: 0; }
-
-/*
-header a.button { background: transparent url(../images/logo.png) 0 0 no-repeat; padding-left: 32px; }
-*/
-
-header a:hover { text-decoration: none; }
-
-/* Admonition (Note) block */
-.admonitionblock > table {
-  border: 0;
-  background: none;
-  width: 100%;
-  table-layout: auto;
-  margin-bottom: 10.5px;
-}
-.admonitionblock > table td.icon {
-  text-align: center;
-  width: 60px;
-}
-.admonitionblock > table td.icon img {
-  max-width: none;
-}
-.admonitionblock > table td.icon .title {
-  text-transform: uppercase;
-}
-.admonitionblock > table td.content {
-  padding-left: 1em;
-  padding-right: 1em;
-  border-left: 3px solid #ddd;
-}
-.admonitionblock > table td.content > :last-child > :last-child {
-  margin-bottom: 0;
-}
-.admonitionblock td.icon [class^="fa icon-"]:before {
-  font-size: 2.5em;
-  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
-  cursor: default;
-}
-.admonitionblock td.icon .icon-note:before {
-  content: "\f05a";
-  color: #5bc0de;
-}
diff --git a/docs/troubleshooting-guide/src/main/jbake/content/faqs.adoc b/docs/troubleshooting-guide/src/main/jbake/content/faqs.adoc
deleted file mode 100644
index f02ad80..0000000
--- a/docs/troubleshooting-guide/src/main/jbake/content/faqs.adoc
+++ /dev/null
@@ -1,218 +0,0 @@
-type=page
-status=published
-title=Frequently Asked Questions
-prev=specific-issues.html
-~~~~~~
-Frequently Asked Questions
-==========================
-
-[[GSTSG00006]][[abgkd]]
-
-
-[[frequently-asked-questions]]
-3 Frequently Asked Questions
-----------------------------
-
-This chapter lists a few of the Frequently Asked Questions (FAQs)
-related to Oracle GlassFish Server 4.0. For the latest FAQs, see the
-GlassFish wiki at
-`http://wikis.sun.com/display/GlassFish/GlassFishFAQIndex`.
-
-This chapter contains the following:
-
-* link:#ghynj[Administration FAQs]
-* link:#ghyaf[Application FAQs]
-* link:#ghyak[Eclipse FAQs]
-* link:#ghybv[Extensibility FAQs]
-* link:#ghybi[Java Persistence FAQs]
-* link:#ghybd[Update Tool FAQs]
-
-[[ghynj]][[GSTSG00071]][[administration-faqs]]
-
-Administration FAQs
-~~~~~~~~~~~~~~~~~~~
-
-[[ghvhr]][[GSTSG00252]][[which-asadmin-commands-are-supported]]
-
-Which `asadmin` Commands are Supported?
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use `asadmin` `list-commands` to determine which commands are supported
-and available for use. For related information, see
-"link:../administration-guide/asadmin-subcommands.html#GSADG00023[Subcommands for the asadmin Utility]" in GlassFish
-Server Open Source Edition Administration Guide.
-
-[[ghyaf]][[GSTSG00072]][[application-faqs]]
-
-Application FAQs
-~~~~~~~~~~~~~~~~
-
-[[ghybu]][[GSTSG00253]][[how-do-i-debug-applications]]
-
-How Do I Debug Applications?
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-See "link:../application-development-guide/debugging-apps.html#GSDVG00004[Debugging Applications]" in GlassFish Server Open
-Source Edition Application Development Guide.
-
-[[ghybh]][[GSTSG00254]][[how-do-i-change-application-permissions]]
-
-How Do I Change Application Permissions?
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-See "link:../application-development-guide/securing-apps.html#GSDVG00372[Changing Permissions for an Application]" in
-Eclipse GlassFish Server Application Development Guide.
-
-[[ghybt]][[GSTSG00255]][[what-are-the-restrictions-and-optimizations-for-session-beans]]
-
-What Are the Restrictions and Optimizations for Session Beans?
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-See "link:../application-development-guide/ejb.html#GSDVG00427[Session Bean Restrictions and Optimizations]" in
-Eclipse GlassFish Server Application Development Guide.
-
-[[ghyak]][[GSTSG00073]][[eclipse-faqs]]
-
-Eclipse FAQs
-~~~~~~~~~~~~
-
-[[ghvmc]][[GSTSG00256]][[where-can-i-find-more-information-about-eclipse-and-glassfish-server-integration]]
-
-Where Can I Find More Information About Eclipse and GlassFish Server
-Integration?
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Eclipse is a development environment that provides a framework, tools,
-and runtime for deploying and managing software. The GlassFish plugin
-for Eclipse provides important changes to better support GlassFish
-Server and to provide optimal redeployment of web applications. For more
-information, see the GlassFish Plugins page:
-`http://glassfishplugins.java.net`.
-
-[[ghybv]][[GSTSG00074]][[extensibility-faqs]]
-
-Extensibility FAQs
-~~~~~~~~~~~~~~~~~~
-
-[[ghyaw]][[GSTSG00257]][[how-do-i-develop-add-on-components]]
-
-How Do I Develop Add-On Components?
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-See the link:../add-on-component-development-guide/toc.html#GSACG[Eclipse GlassFish Server Add-On
-Component Development Guide] for complete details.
-
-[[ghvhg]][[GSTSG00258]][[how-do-i-add-containers]]
-
-How Do I Add Containers?
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-GlassFish Server has a highly modular architecture that enables you to
-add new types of containers that handle many application types, not just
-Java EE. GlassFish Server defines a service provider interface (SPI),
-which container developers implement. The GlassFish Server framework
-then invokes the container's implementation of the SPI to detect,
-deploy, and manage applications of the new type.
-
-For more information, see "link:../add-on-component-development-guide/adding-container-capabilities.html#GSACG00007[Adding Container
-Capabilities]" in Eclipse GlassFish Server Add-On Component
-Development Guide.
-
-[[ghvgv]][[GSTSG00259]][[how-do-i-extend-the-administration-console]]
-
-How Do I Extend the Administration Console?
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-See "link:../add-on-component-development-guide/extending-the-admin-console.html#GSACG00003[Extending the Administration Console]" in
-Eclipse GlassFish Server Add-On Component Development Guide.
-
-[[ghybi]][[GSTSG00075]][[java-persistence-faqs]]
-
-Java Persistence FAQs
-~~~~~~~~~~~~~~~~~~~~~
-
-[[ghvnl]][[GSTSG00260]][[what-are-the-restrictions-and-optimizations-for-the-java-persistence-api]]
-
-What Are the Restrictions and Optimizations for the Java Persistence
-API?
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-See "link:../application-development-guide/jpa.html#GSDVG00139[Restrictions and Optimizations]" in GlassFish
-Server Open Source Edition Application Development Guide.
-
-[[ghybd]][[GSTSG00076]][[update-tool-faqs]]
-
-Update Tool FAQs
-~~~~~~~~~~~~~~~~
-
-[[ghvly]][[GSTSG00261]][[how-do-i-use-update-tool-to-extend-my-glassfish-server-installation]]
-
-How Do I Use Update Tool to Extend My GlassFish Server Installation?
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Enterprise Server provides an administrative tool called Update Tool
-that enables you to install updates and add-on components to your
-existing Enterprise Server installation.
-
-Update Tool can be accessed as a standalone graphical tool from the
-command line (using the `updatetool` command from
-as-install-parent`/bin`), or as a browser-based graphical tool from the
-Administration Console (using the Update Tool node). For more
-information about Update Tool, see "link:../administration-guide/toc.html#GSADG00701[Update Tool]" in
-Eclipse GlassFish Server Administration Guide.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-To update or remove installed components, you must use the standalone
-graphical Update Tool, not the Administration Console Update Tool.
-
-|=======================================================================
-
-
-A command-line interface is also available for Update Tool. This
-interface uses the `pkg` command and enables you to perform most of the
-tasks provided by the standalone graphical version. For more information
-about the `pkg` command, see "link:../administration-guide/toc.html#GSADG00014[Extending and Updating
-GlassFish Server]" in Eclipse GlassFish Server
-Administration Guide.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Update Tool differs from Upgrade Tool, which is used to migrate the
-configuration and deployed applications from an earlier version of
-GlassFish Server to the current version. For more information about
-Upgrade Tool and upgrading, see the link:../upgrade-guide/toc.html#GSUPG[GlassFish Server Open
-Source Edition Upgrade Guide].
-
-|=======================================================================
-
-
-[[gjjoq]][[GSTSG00262]][[how-do-i-turn-off-the-notifier]]
-
-How Do I Turn Off the Notifier?
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Update Tool provides automatic notifications of available updates after
-installation. These notifications can be turned off if desired.
-
-[[gjjox]][[GSTSG00028]][[to-turn-off-the-notifier]]
-
-To Turn Off the Notifier
-++++++++++++++++++++++++
-
-1.  Launch the standalone graphical tool using the `updatetool` command: +
-[source,oac_no_warn]
-----
-as-install-parent/bin/updatetool
-----
-2.  Click Preferences.
-3.  Click the Updates tab.
-4.  Deselect Automatically Check for Updates and click OK.
diff --git a/docs/troubleshooting-guide/src/main/jbake/content/overview.adoc b/docs/troubleshooting-guide/src/main/jbake/content/overview.adoc
deleted file mode 100644
index 1545f1c..0000000
--- a/docs/troubleshooting-guide/src/main/jbake/content/overview.adoc
+++ /dev/null
@@ -1,431 +0,0 @@
-type=page
-status=published
-title=Overview of Eclipse GlassFish Server Troubleshooting
-next=specific-issues.html
-prev=preface.html
-~~~~~~
-Overview of Eclipse GlassFish Server Troubleshooting
-====================================================
-
-[[GSTSG00002]][[abgap]]
-
-
-[[overview-of-glassfish-server-open-source-edition-troubleshooting]]
-1 Overview of Eclipse GlassFish Server Troubleshooting
-------------------------------------------------------
-
-This chapter describes some of the tools, methods, and resources
-available for troubleshooting Eclipse GlassFish Server.
-Guidelines for evaluating and investigating a problem are provided.
-
-This chapter contains the following sections:
-
-* link:#abgar[Identifying the Problem]
-* link:#ghuvy[Troubleshooting Tools]
-* link:#ghuyv[Where to Go for More Information]
-
-[[abgar]][[GSTSG00039]][[identifying-the-problem]]
-
-Identifying the Problem
-~~~~~~~~~~~~~~~~~~~~~~~
-
-Application servers are typically deployed in complex operating
-environments and involve many technologies, products, and tools.
-Understanding and diagnosing problems in enterprise software with many
-components performing many tasks can be a challenge. This section
-describes how to get started , and contains the following topics:
-
-* link:#ghvay[First Steps]
-* link:#ghuvf[Gathering Information]
-* link:#abgax[Examining Log Files]
-* link:#ghuvd[Monitoring the System]
-
-[[ghvay]][[GSTSG00171]][[first-steps]]
-
-First Steps
-^^^^^^^^^^^
-
-Sometimes the most obvious solutions are overlooked. As you begin your
-investigation, try the following steps first.
-
-[[ghyku]][[GSTSG00077]][[verify-system-requirements-and-configuration]]
-
-Verify System Requirements and Configuration
-++++++++++++++++++++++++++++++++++++++++++++
-
-Ensure that your system meets the requirements listed in
-"link:../release-notes/release-notes.html#GSRLN00131[Hardware and Software Requirements]" in GlassFish
-Server Open Source Edition Release Notes. Problems are likely to arise
-if you attempt to install on a platform that is not supported or on a
-system that in some other way does not meet release requirements. Also
-see "link:../release-notes/release-notes.html#GSRLN00253[Known Issues]" in GlassFish Server Open Source
-Edition Release Notes for known issues related to installation.
-
-Eclipse GlassFish Server requires JDK release 6. The minimum
-(and certified) version of the JDK that is required for GlassFish Server
-Open Source Edition depends on the operating system:
-
-* For supported operating systems except Mac OS, the minimum required
-version is 1.6.0_17.
-* For the Mac OS X operating system, the minimum required version is
-1.6.0_15.
-
-If necessary, download and install the required JDK software.
-
-On Solaris, Linux, and Windows systems, JDK software is available from
-the
-http://www.oracle.com/technetwork/java/javase/downloads/index.html[Java
-SE downloads page]
-(`http://www.oracle.com/technetwork/java/javase/downloads/index.html`).
-
-For Mac OS X systems, Eclipse GlassFish Server uses the JDK
-that is part of the Macintosh operating system. If necessary, obtain the
-required JDK version from the http://support.apple.com/downloads/[Mac OS
-X Updates site] (`http://support.apple.com/downloads/`).
-
-Also ensure that the `JAVA_HOME` environment variable on your system
-points to the JDK installation directory and not the Java Runtime
-Environment (JRE) software.
-
-Set `JAVA_HOME` and `$JAVA_HOME/bin` in the `PATH` to point to the
-supported JDK version.
-
-[[ghyml]][[GSTSG00078]][[review-known-issues]]
-
-Review Known Issues
-+++++++++++++++++++
-
-Your problem might be related to a known issue for the release. Refer to
-the link:../release-notes/toc.html#GSRLN[Eclipse GlassFish Server Release Notes] for
-the latest information regarding known issues and possible workarounds.
-Also search the GlassFish Issue Tracker at
-`http://java.net/jira/browse/GLASSFISH`.
-
-[[ghykl]][[GSTSG00079]][[search-the-product-documentation]]
-
-Search the Product Documentation
-++++++++++++++++++++++++++++++++
-
-Eclipse GlassFish Server includes complete product
-documentation. Search the documentation to see if your problem is
-addressed. See link:preface.html#ghpbz[GlassFish Server Documentation
-Set] for the books in the documentation set and a description of their
-contents. Also see the Administration Console online help for detailed
-information about performing administrative tasks using the graphical
-interface.
-
-The following books will be especially helpful for troubleshooting:
-
-* link:../release-notes/toc.html#GSRLN[Eclipse GlassFish Server Release Notes], which
-provides the latest information regarding known issues and possible
-workarounds.
-* link:../error-messages-reference/toc.html#GSEMR[Eclipse GlassFish Server Error Message
-Reference], which lists error messages you might encounter when using
-GlassFish Server.
-
-Use the product documentation to learn more about GlassFish Server Open
-Source Edition. The more you know about the product the easier it might
-be to figure out why something isn't working.
-
-[[ghymp]][[GSTSG00080]][[search-the-glassfish-mailing-lists-and-forums]]
-
-Search the GlassFish Mailing Lists and Forums
-+++++++++++++++++++++++++++++++++++++++++++++
-
-Lists and forums are extremely helpful resources, and are accessed as
-follows:
-
-* GlassFish mailing lists (start with users@glassfish.java.net and
-search the archives): `http://java.net/projects/glassfish/lists/`
-* GlassFish user forum: `http://www.java.net/forums/glassfish/glassfish`
-
-[[ghuvf]][[GSTSG00172]][[gathering-information]]
-
-Gathering Information
-^^^^^^^^^^^^^^^^^^^^^
-
-Troubleshooting and analysis require information. The more information
-you have the easier it is to classify a problem and search for its
-solution. Detailed information will also be necessary should you need to
-contact others for support, either through a community mailing list or
-through more formal Sun support channels.
-
-As you continue your investigation, consider the following questions.
-
-[[ghvar]][[GSTSG00081]][[when-does-the-problem-occur]]
-
-When Does the Problem Occur?
-++++++++++++++++++++++++++++
-
-* What do the logs show? What kind of error message are you getting? For
-more information about logs, see link:#abgax[Examining Log Files]. Logs
-are a good place to start your troubleshooting.
-* What are you trying to do when the problem occurs and how are you
-doing it? What is the sequence of events?
-* Does the problem occur every time you perform the same type of
-operation, or does it seem random? Can you reproduce the issue?
-* Have other events or problems occurred that could possibly be related,
-such as web sessions closing early, exceptions being thrown in your own
-application logic, components not being correctly deployed or
-undeployed?
-
-[[ghvbb]][[GSTSG00082]][[what-is-your-environment]]
-
-What Is Your Environment?
-+++++++++++++++++++++++++
-
-* What version of Eclipse GlassFish Server are you using?
-What operating system and version? What JDK version? Many problems are
-caused simply because system requirements for the release are not met.
-Refer to the link:../release-notes/toc.html#GSRLN[Eclipse GlassFish Server Release
-Notes] for the latest information regarding system requirements, and
-make sure your system meets those requirements.
-* What resources does your system have, such as memory, disk, and swap
-space? If system memory is an issue, look for ways to optimize your
-configuration and consider taking other actions such as adding memory or
-decreasing system load.
-* Have any patches been applied? If so, what are the product and
-operating system patch numbers?
-* What other products and technologies are installed and being used in
-the installation?
-* How many application servers, web servers, and directory servers are
-installed? What are the products and versions?
-* How is the web server connected to GlassFish Server Open Source
-Edition? On the same system?
-* How is Eclipse GlassFish Server connected to the directory
-server?
-* What JDBC driver is being used to access the database?
-
-[[ghvce]][[GSTSG00083]][[what-is-your-system-configuration]]
-
-What Is Your System Configuration?
-++++++++++++++++++++++++++++++++++
-
-* What are your settings?
-* On which port is Eclipse GlassFish Server configured — the
-default or something else?
-* What defaults were changed during installation and what are the
-values?
-* What other settings were changed from the defaults and what are their
-values?
-* What are the parameters related to JVM heap, stack, and garbage
-collection set to?
-* What are the JVM options?
-* What is the permgen size? `OutOfMemoryError:PermGen space` errors are
-common and indicate that you need to increase the permanent generation
-space available.
-* Is SSL enabled?
-* What are your network settings (proxy, firewall, and so on)? What
-happens if you disable your firewall and attempt the task?
-
-[[ghvcr]][[GSTSG00084]][[what-is-different]]
-
-What Is Different?
-++++++++++++++++++
-
-* What is different that could have provoked the problem or triggered
-the event? Was something new added or changed? Have any new applications
-been deployed? If changes have been made recently, consider backing them
-out and seeing what happens — does the problem still occur?
-* Was the feature or functionality working correctly at one time? If so,
-what changed or happened between then and now?
-* Is this working on another system? If so, what is different about that
-environment?
-
-[[abgax]][[GSTSG00173]][[examining-log-files]]
-
-Examining Log Files
-^^^^^^^^^^^^^^^^^^^
-
-Logging is one of your most important troubleshooting tools. It is the
-process by which Eclipse GlassFish Server captures data
-about events that occur during server operation, such as configuration
-errors, security failures, or server malfunction. This data is recorded
-in log files, and is usually your first source of information when
-Enterprise Server problems occur. The primary purpose of log files is to
-provide troubleshooting information. Analyzing the log files can help
-determine the health of the server and identify problem areas.
-
-By default, log information for each GlassFish Server Open Source
-Edition server instance is captured in a `server.log` file. That is,
-each instance, including the domain administration server (DAS), has an
-individual log file. By default, the log file for the DAS is located in
-domain-dir`/logs`, and the log file for each instance is located in
-instance-dir`/logs`.
-
-In addition, for domains that use clustering, GlassFish Server Open
-Source Edition captures log information for each cluster instance in a
-`cluster.log` file. By default, the `cluster.log` file is also located
-in instance-dir`/logs`.
-
-Oracle recommends using the Administration Console to view logging
-information. However, you can open a log file in a text editor and
-search for the module or message in which you are interested. GlassFish
-Server Open Source Edition also lets you collect log files into a ZIP
-file, which provides a convenient means to collect and view the log
-files for an instance or a domain even when it is not running.
-
-You configure the Logging Service by setting attributes in the
-`logging.properties` file. Each server, configuration, instance, and
-cluster in the Eclipse GlassFish Server domain has an
-individual `logging.properties` file. The root directory in which these
-`logging.properties` files are located is the same directory as for the
-`domain.xml` file, typically domain-dir/`config`. The default target
-when configuring logging attributes is the DAS. However, you can
-optionally target a specific server, instance, or cluster. You can also
-target a configuration that is shared by one or more instances or
-clusters. The Logging Service can also be configured using the
-Administration Console.
-
-Log levels such as `SEVERE`, `WARNING`, `INFO`, `CONFIG`, and others can
-be set to provide different types and amounts of information. The
-default setting is `INFO`. Each Eclipse GlassFish Server
-module has its own logger, and each logger has its own namespace. Log
-levels can be set globally for all loggers, or individually for
-module-specific loggers.
-
-For information about using the Administration Console log viewer and
-logging functions, see the Administration Console online help. For
-information about using the command line for logging functions, see
-"link:../administration-guide/logging.html#GSADG00010[Administering the Logging Service]" in GlassFish
-Server Open Source Edition Administration Guide.
-
-[[ghuvd]][[GSTSG00174]][[monitoring-the-system]]
-
-Monitoring the System
-^^^^^^^^^^^^^^^^^^^^^
-
-Monitoring is another helpful tool. It is the process of reviewing the
-statistics of a system to improve performance or solve problems. By
-monitoring the state of various components and services deployed in
-Eclipse GlassFish Server you can identify performance
-bottlenecks, predict failures, perform root cause analysis, and ensure
-that everything is functioning as expected. For more information about
-monitoring, including JConsole information, see
-"link:../administration-guide/monitoring.html#GSADG00011[Administering the Monitoring Service]" in GlassFish
-Server Open Source Edition Administration Guide.
-
-[[ghuvy]][[GSTSG00040]][[troubleshooting-tools]]
-
-Troubleshooting Tools
-~~~~~~~~~~~~~~~~~~~~~
-
-Several tools are available that can be used to collect information for
-troubleshooting purposes. This section provides basic information about
-some of them, and includes the following:
-
-* link:#ghvcm[Operating System Utilities]
-* link:#ghvbo[Stack Traces and Thread Dumps]
-* link:#ghyjq[VisualVM]
-* link:#gjjjl[JVM Command-Line Tools]
-
-[[ghvcm]][[GSTSG00175]][[operating-system-utilities]]
-
-Operating System Utilities
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Operating system utilities, such as `pkginfo` and `showrev` on Solaris
-and `rpm` on Linux, are helpful in gathering system information.
-
-The `ps -ef` command provides helpful information about processes that
-are running, including their process identification numbers (PIDs).
-
-[[ghvbo]][[GSTSG00176]][[stack-traces-and-thread-dumps]]
-
-Stack Traces and Thread Dumps
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A stack trace is a user-friendly snapshot of the threads and monitors in
-a Virtual Machine for the Java platform (Java Virtual Machine or JVM
-machine). A thread dump shows what every thread in a JVM is doing at a
-given time and is useful in debugging. When the application server
-freezes, hangs, or becomes sluggish for no apparent reason, you should
-generate and analyze a thread dump.
-
-This section explains how to obtain a thread dump for GlassFish Server
-Open Source Edition. More information about analyzing the information
-contained in a thread dump can be found in
-"http://java.sun.com/developer/technicalArticles/Programming/Stacktrace[An
-Introduction to Java Stack Traces]"
-(`http://java.sun.com/developer/technicalArticles/Programming/Stacktrace`).
-
-[[ghykr]][[GSTSG00023]][[to-obtain-a-server-thread-dump]]
-
-To Obtain a Server Thread Dump
-++++++++++++++++++++++++++++++
-
-Type the following command:
-
-[source,oac_no_warn]
-----
-asadmin generate-jvm-report --type=thread
-----
-
-[[sthref3]]
-
-See Also
-
-link:../reference-manual/generate-jvm-report.html#GSRFM00138[`generate-jvm-report`(1)]
-
-[[ghyjq]][[GSTSG00177]][[visualvm]]
-
-VisualVM
-^^^^^^^^
-
-VisualVM is a Java troubleshooting tool that uses various technologies
-such as `jvmstat`, JMX, and Attach API to access monitored applications.
-VisualVM is a tool for visualizing data sources and by default
-visualizes the following types: applications, hosts, snapshots, core
-dumps, heap dumps, and thread dumps. These data sources are visualized
-in VisualVM so that they can be monitored for the purposes of analysis,
-management, and troubleshooting. VisualVM is commonly used to detect
-memory leaks.
-
-VisualVM has a GlassFish plugin that enhances monitoring of hosted
-applications by adding specialized overview, a tab for monitoring the
-HTTP Service, and the ability to visually select and monitor any of the
-deployed web applications. You can experiment with VisualVM
-troubleshooting capabilities, but note that various features depend on
-the Java versions used in the client and server. Depending on your
-configuration, you might only get parts of the VisualVM features. For
-more information about VisualVM, see `http://visualvm.java.net`.
-
-[[gjjjl]][[GSTSG00178]][[jvm-command-line-tools]]
-
-JVM Command-Line Tools
-^^^^^^^^^^^^^^^^^^^^^^
-
-JVM command-line tools can be used to provide valuable information about
-hung Java processes or Java core dumps. These tools include the
-following:
-
-* `jstack`: Prints Java stack traces of Java threads for a given Java
-process or core file or a remote debug server.
-* `jinfo`: Prints Java configuration information for a given Java
-process or core file or a remote debug server.
-* `jmap`: Prints shared object memory maps or heap memory details for a
-given process or core file or a remote debug server.
-* `jsadebugd`: Attaches to a Java process or core file and acts as a
-debug server. Remote clients such as `jstack`, `jmap`, and `jinfo` can
-attach to the server using Java Remote Invocation Method (RMI).
-* `jhat`: Enables Java heap dumps to be browsed using a web browser.
-* `jstat`: Displays performance statistics for an instrumented HotSpot
-JVM.
-* `jps`: Lists the instrumented HotSpot JVMs on the target system
-
-[[ghuyv]][[GSTSG00041]][[where-to-go-for-more-information]]
-
-Where to Go for More Information
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-These resources were mentioned throughout this chapter and are provided
-again here for easy reference.
-
-* Release Notes: link:../release-notes/toc.html#GSRLN[Eclipse GlassFish Server
-Release Notes]
-* Error messages: link:../error-messages-reference/toc.html#GSEMR[Eclipse GlassFish Server Error
-Message Reference]
-* Mailing lists and forums: See link:#ghymp[Search the GlassFish Mailing
-Lists and Forums] for details about accessing lists and forums.
-* GlassFish community site: `http://glassfish.java.net/`
-
diff --git a/docs/troubleshooting-guide/src/main/jbake/content/preface.adoc b/docs/troubleshooting-guide/src/main/jbake/content/preface.adoc
deleted file mode 100644
index 37bee42..0000000
--- a/docs/troubleshooting-guide/src/main/jbake/content/preface.adoc
+++ /dev/null
@@ -1,343 +0,0 @@
-type=page
-status=published
-title=Preface
-next=overview.html
-prev=title.html
-~~~~~~
-Preface
-=======
-
-[[GSTSG00001]][[gkbfu]]
-
-
-[[preface]]
-Preface
--------
-
-[NOTE]
-========================================================================
-
-This documentation is part of the Java Enterprise Edition contribution 
-to the Eclipse Foundation and is not intended for use in relation to 
-Java Enterprise Edition or Orace GlassFish. The documentation is in the 
-process of being revised to reflect the new Jakarta EE branding. 
-Additional changes will be made as requirements and procedures evolve 
-for Jakarta EE. Where applicable, references to Java EE or Java 
-Enterprise Edition should be considered references to Jakarta EE. 
-
-Please see the Title page for additional license information.
-========================================================================
-
-This guide describes common problems that you might encounter when using
-GlassFish Server Open Source Edition and how to solve them.
-
-This preface contains information about and conventions for the entire
-GlassFish Server Open Source Edition (GlassFish Server) documentation
-set.
-
-GlassFish Server 4.0 is developed through the GlassFish project
-open-source community at `http://glassfish.java.net/`. The GlassFish
-project provides a structured process for developing the GlassFish
-Server platform that makes the new features of the Java EE platform
-available faster, while maintaining the most important feature of Java
-EE: compatibility. It enables Java developers to access the GlassFish
-Server source code and to contribute to the development of the GlassFish
-Server. The GlassFish project is designed to encourage communication
-between Oracle engineers and the community.
-
-The following topics are addressed here:
-
-* link:#ghpbz[GlassFish Server Documentation Set]
-* link:#giprl[Related Documentation]
-* link:#fwbkx[Typographic Conventions]
-* link:#fquvc[Symbol Conventions]
-* link:#ghpfg[Default Paths and File Names]
-
-[[GSTSG00031]][[ghpbz]]
-
-
-[[glassfish-server-documentation-set]]
-GlassFish Server Documentation Set
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The GlassFish Server documentation set describes deployment planning and
-system installation. For an introduction to GlassFish Server, refer to
-the books in the order in which they are listed in the following table.
-
-[width="100%",cols="<30%,<70%",options="header",]
-|=======================================================================
-|Book Title |Description
-|link:../release-notes/toc.html#GSRLN[Release Notes] |Provides late-breaking information about
-the software and the documentation and includes a comprehensive,
-table-based summary of the supported hardware, operating system, Java
-Development Kit (JDK), and database drivers.
-
-|link:../quick-start-guide/toc.html#GSQSG[Quick Start Guide] |Explains how to get started with the
-GlassFish Server product.
-
-|link:../installation-guide/toc.html#GSING[Installation Guide] |Explains how to install the software
-and its components.
-
-|link:../upgrade-guide/toc.html#GSUPG[Upgrade Guide] |Explains how to upgrade to the latest
-version of GlassFish Server. This guide also describes differences
-between adjacent product releases and configuration options that can
-result in incompatibility with the product specifications.
-
-|link:../deployment-planning-guide/toc.html#GSPLG[Deployment Planning Guide] |Explains how to build a
-production deployment of GlassFish Server that meets the requirements of
-your system and enterprise.
-
-|link:../administration-guide/toc.html#GSADG[Administration Guide] |Explains how to configure, monitor,
-and manage GlassFish Server subsystems and components from the command
-line by using the link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`] utility. Instructions for
-performing these tasks from the Administration Console are provided in
-the Administration Console online help.
-
-|link:../security-guide/toc.html#GSSCG[Security Guide] |Provides instructions for configuring and
-administering GlassFish Server security.
-
-|link:../application-deployment-guide/toc.html#GSDPG[Application Deployment Guide] |Explains how to assemble and
-deploy applications to the GlassFish Server and provides information
-about deployment descriptors.
-
-|link:../application-development-guide/toc.html#GSDVG[Application Development Guide] |Explains how to create and
-implement Java Platform, Enterprise Edition (Java EE platform)
-applications that are intended to run on the GlassFish Server. These
-applications follow the open Java standards model for Java EE components
-and application programmer interfaces (APIs). This guide provides
-information about developer tools, security, and debugging.
-
-|link:../embedded-server-guide/toc.html#GSESG[Embedded Server Guide] |Explains how to run applications in
-embedded GlassFish Server and to develop applications in which GlassFish
-Server is embedded.
-
-|link:../ha-administration-guide/toc.html#GSHAG[High Availability Administration Guide] |Explains how to
-configure GlassFish Server to provide higher availability and
-scalability through failover and load balancing.
-
-|link:../performance-tuning-guide/toc.html#GSPTG[Performance Tuning Guide] |Explains how to optimize the
-performance of GlassFish Server.
-
-|link:../troubleshooting-guide/toc.html#GSTSG[Troubleshooting Guide] |Describes common problems that you
-might encounter when using GlassFish Server and explains how to solve
-them.
-
-|link:../error-messages-reference/toc.html#GSEMR[Error Message Reference] |Describes error messages that you
-might encounter when using GlassFish Server.
-
-|link:../reference-manual/toc.html#GSRFM[Reference Manual] |Provides reference information in man
-page format for GlassFish Server administration commands, utility
-commands, and related concepts.
-
-|link:../../openmq/mq-release-notes/toc.html#GMRLN[Message Queue Release Notes] |Describes new features,
-compatibility issues, and existing bugs for Open Message Queue.
-
-|link:../../openmq/mq-tech-over/toc.html#GMTOV[Message Queue Technical Overview] |Provides an introduction
-to the technology, concepts, architecture, capabilities, and features of
-the Message Queue messaging service.
-
-|link:../../openmq/mq-admin-guide/toc.html#GMADG[Message Queue Administration Guide] |Explains how to set up
-and manage a Message Queue messaging system.
-
-|link:../../openmq/mq-dev-guide-jmx/toc.html#GMJMG[Message Queue Developer's Guide for JMX Clients] |Describes
-the application programming interface in Message Queue for
-programmatically configuring and monitoring Message Queue resources in
-conformance with the Java Management Extensions (JMX).
-
-|link:../../openmq/mq-dev-guide-java/toc.html#GMJVG[Message Queue Developer's Guide for Java Clients] |Provides
-information about concepts and procedures for developing Java messaging
-applications (Java clients) that work with GlassFish Server.
-
-|link:../../openmq/mq-dev-guide-c/toc.html#GMCCG[Message Queue Developer's Guide for C Clients] |Provides
-programming and reference information for developers working with
-Message Queue who want to use the C language binding to the Message
-Queue messaging service to send, receive, and process Message Queue
-messages.
-|=======================================================================
-
-
-[[GSTSG00032]][[giprl]]
-
-
-[[related-documentation]]
-Related Documentation
-~~~~~~~~~~~~~~~~~~~~~
-
-The following tutorials explain how to develop Java EE applications:
-
-* http://docs.oracle.com/javaee/7/firstcup/doc/home.html[Your First Cup:
-An Introduction to the Java EE Platform]
-(`http://docs.oracle.com/javaee/7/firstcup/doc/home.html`). For beginning
-Java EE programmers, this short tutorial explains the entire process for
-developing a simple enterprise application. The sample application is a
-web application that consists of a component that is based on the
-Enterprise JavaBeans specification, a JAX-RS web service, and a
-JavaServer Faces component for the web front end.
-* http://docs.oracle.com/javaee/7/tutorial/doc/home.html[The Java EE 7
-Tutorial] (`http://docs.oracle.com/javaee/7/tutorial/doc/home.html`).
-This comprehensive tutorial explains how to use Java EE 7 platform
-technologies and APIs to develop Java EE applications.
-
-Javadoc tool reference documentation for packages that are provided with
-GlassFish Server is available as follows.
-
-* The API specification for version 7 of Java EE is located at
-`http://docs.oracle.com/javaee/7/api/`.
-* The API specification for GlassFish Server 4.0, including Java EE 7
-platform packages and nonplatform packages that are specific to the
-GlassFish Server product, is located at
-`http://glassfish.java.net/nonav/docs/v3/api/`.
-
-Additionally, the
-http://www.oracle.com/technetwork/java/javaee/tech/index.html[Java EE
-Specifications]
-(`http://www.oracle.com/technetwork/java/javaee/tech/index.html`) might
-be useful.
-
-For information about creating enterprise applications in the NetBeans
-Integrated Development Environment (IDE), see the
-http://www.netbeans.org/kb/[NetBeans Documentation, Training & Support
-page] (`http://www.netbeans.org/kb/`).
-
-For information about the Java DB database for use with the GlassFish
-Server, see the
-http://www.oracle.com/technetwork/java/javadb/overview/index.html[Java
-DB product page]
-(`http://www.oracle.com/technetwork/java/javadb/overview/index.html`).
-
-The Java EE Samples project is a collection of sample applications that
-demonstrate a broad range of Java EE technologies. The Java EE Samples
-are bundled with the Java EE Software Development Kit (SDK) and are also
-available from the http://glassfish-samples.java.net/[Java EE Samples
-project page] (`http://glassfish-samples.java.net/`).
-
-[[GSTSG00033]][[fwbkx]]
-
-
-[[typographic-conventions]]
-Typographic Conventions
-~~~~~~~~~~~~~~~~~~~~~~~
-
-The following table describes the typographic changes that are used in
-this book.
-
-[width="100%",cols="<14%,<37%,<49%",options="header",]
-|=======================================================================
-|Typeface |Meaning |Example
-|`AaBbCc123` |The names of commands, files, and directories, and
-onscreen computer output a|
-Edit your `.login` file.
-
-Use `ls` `a` to list all files.
-
-`machine_name% you have mail.`
-
-|`AaBbCc123` |What you type, contrasted with onscreen computer output a|
-`machine_name%` `su`
-
-`Password:`
-
-|AaBbCc123 |A placeholder to be replaced with a real name or value |The
-command to remove a file is `rm` filename.
-
-|AaBbCc123 |Book titles, new terms, and terms to be emphasized (note
-that some emphasized items appear bold online) a|
-Read Chapter 6 in the User's Guide.
-
-A cache is a copy that is stored locally.
-
-Do not save the file.
-
-|=======================================================================
-
-
-[[GSTSG00034]][[fquvc]]
-
-
-[[symbol-conventions]]
-Symbol Conventions
-~~~~~~~~~~~~~~~~~~
-
-The following table explains symbols that might be used in this book.
-
-[width="100%",cols="<10%,<26%,<28%,<36%",options="header",]
-|=======================================================================
-|Symbol |Description |Example |Meaning
-|`[ ]` |Contains optional arguments and command options. |`ls [-l]` |The
-`-l` option is not required.
-
-|`{ \| }` |Contains a set of choices for a required command option.
-|`-d {y\|n}` |The `-d` option requires that you use either the `y`
-argument or the `n` argument.
-
-|`${ }` |Indicates a variable reference. |`${com.sun.javaRoot}`
-|References the value of the `com.sun.javaRoot` variable.
-
-|- |Joins simultaneous multiple keystrokes. |Control-A |Press the
-Control key while you press the A key.
-
-|+ + |Joins consecutive multiple keystrokes. |Ctrl+A+N |Press the
-Control key, release it, and then press the subsequent keys.
-
-|> |Indicates menu item selection in a graphical user interface. |File >
-New > Templates |From the File menu, choose New. From the New submenu,
-choose Templates.
-|=======================================================================
-
-
-[[GSTSG00035]][[ghpfg]]
-
-
-[[default-paths-and-file-names]]
-Default Paths and File Names
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following table describes the default paths and file names that are
-used in this book.
-
-[width="100%",cols="<14%,<34%,<52%",options="header",]
-|=======================================================================
-|Placeholder |Description |Default Value
-|as-install + a|
-Represents the base installation directory for GlassFish Server.
-
-In configuration files, as-install is represented as follows:
-
-`${com.sun.aas.installRoot}`
-
- a|
-Installations on the Oracle Solaris operating system, Linux operating
-system, and Mac OS operating system:
-
-user's-home-directory`/glassfish3/glassfish`
-
-Installations on the Windows operating system:
-
-SystemDrive`:\glassfish3\glassfish`
-
-|as-install-parent + |Represents the parent of the base installation
-directory for GlassFish Server. a|
-Installations on the Oracle Solaris operating system, Linux operating
-system, and Mac operating system:
-
-user's-home-directory`/glassfish3`
-
-Installations on the Windows operating system:
-
-SystemDrive`:\glassfish3`
-
-|domain-root-dir + |Represents the directory in which a domain is
-created by default. |as-install`/domains/`
-
-|domain-dir + a|
-Represents the directory in which a domain's configuration is stored.
-
-In configuration files, domain-dir is represented as follows:
-
-`${com.sun.aas.instanceRoot}`
-
- |domain-root-dir`/`domain-name
-
-|instance-dir + |Represents the directory for a server instance.
-|domain-dir`/`instance-name
-|=======================================================================
diff --git a/docs/troubleshooting-guide/src/main/jbake/content/specific-issues.adoc b/docs/troubleshooting-guide/src/main/jbake/content/specific-issues.adoc
deleted file mode 100644
index a2ad951..0000000
--- a/docs/troubleshooting-guide/src/main/jbake/content/specific-issues.adoc
+++ /dev/null
@@ -1,919 +0,0 @@
-type=page
-status=published
-title=Specific Issues
-next=faqs.html
-prev=overview.html
-~~~~~~
-Specific Issues
-===============
-
-[[GSTSG00003]][[abgbj]]
-
-
-[[specific-issues]]
-2 Specific Issues
------------------
-
-This chapter lists problems that you might encounter when using Oracle
-GlassFish Server 4.0. The following topics are addressed:
-
-* link:#abgca[Cannot Access Local Server (`http://localhost:8080`)]
-* link:#abgcf[Cannot Access Remote Server]
-* link:#abgcm[Cannot Access the Administration Console]
-* link:#abgcw[Cannot Access a Server Application]
-* link:#gjjoz[Administrator User Name or Password Not Known]
-* link:#gjjpj[Experience Issues Related to the JDK]
-* link:#abgdi[Server Will Not Start on Windows (Port Conflict)]
-* link:#gkvcs[GlassFish Server Fails to Start in an OpenSolaris Zone]
-* link:#abgdr[Two Server Instances Bind to Same Port on Windows]
-* link:#abgel[Cannot Produce a JVM Thread Dump After Server Crash]
-* link:#ghvgk[Issues Related to Applications]
-* link:#ghvhy[Issues Related to `asadmin`]
-* link:#ghvgu[Issues Related to Installation]
-* link:#ghvrh[Issues Related to Security]
-
-[[abgca]][[GSTSG00043]][[cannot-access-local-server-httplocalhost8080]]
-
-Cannot Access Local Server (`http://localhost:8080`)
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-When this error occurs, check the following:
-
-* link:#abgcb[Did the Server Start?]
-* link:#abgcd[Was the Server Started at the Expected Port?]
-* link:#gjjpn[Is a Personal Firewall Enabled?]
-
-[[abgcb]][[GSTSG00179]][[did-the-server-start]]
-
-Did the Server Start?
-^^^^^^^^^^^^^^^^^^^^^
-
-[[abgcc]][[GSTSG00085]][[description]]
-
-Description
-+++++++++++
-
-If the console window is still open, the expected message indicates that
-the default domain was started successfully.
-
-If the console window is already closed, check for messages in the log
-file. This is the default location:
-
-[source,oac_no_warn]
-----
-domain-dir/logs/server.log
-----
-
-If startup was successful, the expected message is similar to that on
-the console, and appears at the end of the log file.
-
-For more information about starting a domain, see
-"link:../administration-guide/domains.html#GSADG00537[Starting and Stopping a Domain]" in GlassFish Server
-Open Source Edition Administration Guide. To easily determine if a
-domain is running, use the `asadmin list-domains` command.
-
-[[abgcd]][[GSTSG00180]][[was-the-server-started-at-the-expected-port]]
-
-Was the Server Started at the Expected Port?
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-[[abgce]][[GSTSG00086]][[description-1]]
-
-Description
-+++++++++++
-
-The server might be running at a different port number than expected,
-either because it was intentionally installed there, or because another
-server was already running on the default port when the server was
-installed.
-
-[[fxxov]][[GSTSG00024]][[to-determine-which-port-number-the-server-is-using]]
-
-To Determine Which Port Number the Server Is Using
-
-Follow this procedure.
-
-1.  Examine the server's configuration file: +
-[source,oac_no_warn]
-----
-domain-dir/config/domain.xml
-----
-2.  Find the `network-listener` element.
-3.  Inspect the value of the `port` attribute. +
-Be sure to enter the correct port number when invoking the server. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-The server's default port number is `8080`, however, there are a number
-of ways in which the expected value can change:
-
-* A different port number was specified during installation.
-* A previous installation exists.
-
-|=======================================================================
-
-
-[[gjjpn]][[GSTSG00181]][[is-a-personal-firewall-enabled]]
-
-Is a Personal Firewall Enabled?
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Issues might result when personal firewalls are enabled. Disable your
-personal firewall and see if the server access problem still exists.
-
-[[abgcf]][[GSTSG00044]][[cannot-access-remote-server]]
-
-Cannot Access Remote Server
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-When attempting to open the start page of GlassFish Server, the initial
-screen does not appear.
-
-When this error occurs, check the following:
-
-* link:#abgcg[Is the Server Available Locally?]
-* link:#abgcj[Is the Proxy Setting Causing a Problem?]
-
-[[abgcg]][[GSTSG00182]][[is-the-server-available-locally]]
-
-Is the Server Available Locally?
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-[[abgch]][[GSTSG00087]][[description-2]]
-
-Description
-+++++++++++
-
-If the server cannot be accessed from the web, but it is running
-locally, then the server is actually running.
-
-[[abgci]][[GSTSG00088]][[solution]]
-
-Solution
-++++++++
-
-Verify that the server is running locally.
-
-[[fxxod]][[GSTSG00025]][[to-verify-that-the-server-is-running-locally]]
-
-To Verify That the Server Is Running Locally
-
-Follow this procedure.
-
-1.  Log on to the host where the server is running.
-2.  Go to the local web page. For example, if `8080` is the default
-port, go to: +
-[source,oac_no_warn]
-----
-http://localhost:8080/
-----
-If the start page does appear, the web connection is encountering a
-problem that prevents accessing the server remotely. If the start page
-does not appear, see link:#abgcb[Did the Server Start?].
-
-[[abgcj]][[GSTSG00183]][[is-the-proxy-setting-causing-a-problem]]
-
-Is the Proxy Setting Causing a Problem?
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-[[abgck]][[GSTSG00089]][[description-3]]
-
-Description
-+++++++++++
-
-The server should be accessible directly from the host on which it is
-running (`localhost`); for example, using the default port `8080`:
-
-[source,oac_no_warn]
-----
-http://localhost:8080/
-----
-
-[[abgcl]][[GSTSG00090]][[solution-1]]
-
-Solution
-++++++++
-
-A server instance running on `localhost` might not be accessible if the
-server host machine is connected to the web through a proxy. To solve
-this problem, do one of the following:
-
-* Set the browser to bypass the proxy server when accessing `localhost`.
-Refer to the browser's help system for information about how to do this.
-* Use the fully-qualified host name or IP address of your system; for
-example: +
-[source,oac_no_warn]
-----
-http://myhost.mydomain.com:8080/
-----
-* Create an entry in the system's hosts file (for example, pointing
-`127.0.0.1` to `localhost`; `127.0.0.1` is not proxied).
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-To determine the host name for the `localhost` machine, type `hostname`
-at the command prompt.
-
-|=======================================================================
-
-
-[[abgcm]][[GSTSG00045]][[cannot-access-the-administration-console]]
-
-Cannot Access the Administration Console
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The Administration Console provides a graphical interface for
-administrative functions. If the Administration Console is not
-accessible, check the following:
-
-* link:#abgcn[Is the Application Server Running?]
-* link:#abgcq[Is the Administration Console Running on the Expected
-Port?]
-
-For more information about the Administration Console, see
-"link:../administration-guide/overview.html#GSADG00698[Administration Console]" in GlassFish Server Open
-Source Edition Administration Guide.
-
-[[abgcn]][[GSTSG00184]][[is-the-application-server-running]]
-
-Is the Application Server Running?
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-[[abgco]][[GSTSG00091]][[description-4]]
-
-Description
-+++++++++++
-
-The server must be running before the Administration Console can be
-accessed.
-
-[[abgcp]][[GSTSG00092]][[solution-2]]
-
-Solution
-++++++++
-
-Review the information in link:#abgcb[Did the Server Start?] to
-determine if the server is running.
-
-[[abgcq]][[GSTSG00185]][[is-the-administration-console-running-on-the-expected-port]]
-
-Is the Administration Console Running on the Expected Port?
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-[[abgcr]][[GSTSG00093]][[description-5]]
-
-Description
-+++++++++++
-
-The default port number for the Administration Console is `4848`.
-However, it could be running on a different port number than expected,
-either because it was intentionally installed there, or because that
-port was in use when the server was started.
-
-[[abgcs]][[GSTSG00094]][[solution-3]]
-
-Solution
-++++++++
-
-Refer to link:#abgcd[Was the Server Started at the Expected Port?] for
-guidelines on verifying the port on which the Administration Console is
-running. Be sure to enter the correct port number and HTTP protocol when
-invoking the Administration Console.
-
-[[abgcw]][[GSTSG00046]][[cannot-access-a-server-application]]
-
-Cannot Access a Server Application
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-If a particular application cannot be accessed through GlassFish Server,
-check the following:
-
-* link:#abgcx[Is the Application Server Running?]
-* link:#abgda[Was Application Deployment Successful?]
-
-[[abgcx]][[GSTSG00186]][[is-the-application-server-running-1]]
-
-Is the Application Server Running?
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-[[abgcy]][[GSTSG00095]][[description-6]]
-
-Description
-+++++++++++
-
-If GlassFish Server is not running, applications are not accessible.
-
-[[abgcz]][[GSTSG00096]][[solution-4]]
-
-Solution
-++++++++
-
-Review the information in link:#abgcb[Did the Server Start?] to
-determine if the server is running. The server must be running before a
-server application can be accessed.
-
-[[abgda]][[GSTSG00187]][[was-application-deployment-successful]]
-
-Was Application Deployment Successful?
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-[[abgdb]][[GSTSG00097]][[description-7]]
-
-Description
-+++++++++++
-
-An application must be successfully deployed before it can be accessed.
-
-[[abgdc]][[GSTSG00098]][[solution-5]]
-
-Solution
-++++++++
-
-Verify that the application was successfully deployed. There are several
-ways to do this:
-
-* Check the server's log file for related entries: +
-[source,oac_no_warn]
-----
-domain-dir/server.log
-----
-* Use the `asadmin list-applications` command to determine which
-applications are deployed.
-* View the Applications page in the Administration Console, accessed by
-clicking the Applications node.
-
-For more information about deploying applications, see
-"link:../application-deployment-guide/deploying-applications.html#GSDPG00004[Deploying Applications]" in GlassFish Server Open
-Source Edition Application Deployment Guide. Also see the Administration
-Console online help.
-
-[[gjjoz]][[GSTSG00047]][[administrator-user-name-or-password-not-known]]
-
-Administrator User Name or Password Not Known
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-If you have forgotten the administrator user name, you can find it by
-inspecting the domain-dir`/config/admin-keyfile` file, where domain-dir
-is the directory for the domain. In the default domain, `domain1`, the
-file to inspect is domain-dir`/config/admin-keyfile`. For a different
-domain, substitute its name in the path.
-
-If you have forgotten the administrator password, one solution is to
-create a new domain with the admin username and password that you want,
-then copy the entry from the `config/admin-keyfile` file in that new
-domain to the other domain.
-
-[[gjjpj]][[GSTSG00048]][[experience-issues-related-to-the-jdk]]
-
-Experience Issues Related to the JDK
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-[[gjjpl]][[GSTSG00188]][[description-8]]
-
-Description
-^^^^^^^^^^^
-
-You experience JDK-related issues in a variety of circumstances.
-
-[[gjjop]][[GSTSG00189]][[solution-6]]
-
-Solution
-^^^^^^^^
-
-GlassFish Server 4.0 requires JDK 6, so check your system for that
-dependency.
-
-The minimum (and certified) version of the JDK software that is required
-for GlassFish Server depends on the operating system:
-
-* For supported operating systems except Mac OS, the minimum required
-version is 1.6.0_17.
-* For the Mac OS X operating system, the minimum required version is
-1.6.0_15.
-
-Ensure that the required JDK software is installed and that the
-`JAVA_HOME` environment variable points to the JDK installation
-directory, not the Java Runtime Environment (JRE) software.
-
-Set `JAVA_HOME` and `$JAVA_HOME/bin` in the `PATH` to point to the
-supported JDK version.
-
-[[abgdi]][[GSTSG00049]][[server-will-not-start-on-windows-port-conflict]]
-
-Server Will Not Start on Windows (Port Conflict)
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-If a message similar to the following is displayed when starting
-GlassFish Server on Microsoft Windows, a server port conflict has
-occurred:
-
-[source,oac_no_warn]
-----
-Address already in use
-----
-
-This error occurs when another application is running on the GlassFish
-Server port (default `8080`), or because a previous instance of
-GlassFish Server did not shut down cleanly.
-
-You might also check the following:
-
-* link:#abgdj[Is Another Application Running on the Server's Port?]
-* link:#abgdk[Has an Ungraceful Shutdown Occurred on a Previously
-Running Server?]
-
-[[abgdj]][[GSTSG00190]][[is-another-application-running-on-the-servers-port]]
-
-Is Another Application Running on the Server's Port?
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-If another application is using the server's port, stop the other
-application, then restart GlassFish Server.
-
-[[abgdk]][[GSTSG00191]][[has-an-ungraceful-shutdown-occurred-on-a-previously-running-server]]
-
-Has an Ungraceful Shutdown Occurred on a Previously Running Server?
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the `asadmin stop-domain` command to stop the server, or explicitly
-kill the Java process and then restart GlassFish Server.
-
-[[gkvcs]][[GSTSG00050]][[glassfish-server-fails-to-start-in-an-opensolaris-zone]]
-
-GlassFish Server Fails to Start in an OpenSolaris Zone
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-[[gkvcx]][[GSTSG00192]][[description-9]]
-
-Description
-^^^^^^^^^^^
-
-If GlassFish Server is installed in an OpenSolaris zone, an attempt to
-start a domain might fail with the following error message:
-
-[source,oac_no_warn]
-----
-Waiting for DAS to start ..Error starting domain: domain.
-The server exited prematurely with exit code 6.
-Before it died, it produced the following output:
-
-UTF ERROR ["../../../src/solaris/instrument/EncodingSupport_md.c":66]:
-Failed to complete iconv_open() setup
-----
-
-The failure occurs because, by default, an OpenSolaris zone is installed
-without language and encoding support, which GlassFish Server requires.
-
-[[gkvdf]][[GSTSG00026]][[resolution-to-enable-glassfish-server-to-run-in-an-opensolaris-zone]]
-
-Resolution: To Enable GlassFish Server to Run in an OpenSolaris Zone
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-1.  Install the package that provides language and encoding support for
-your locale. +
-[source,oac_no_warn]
-----
-$ pkg install package-name
-----
-package-name::
-  The name of the package that provides language and encoding support
-  for your locale. For example, the name of the package that provides
-  language and encoding support for the US English locale is
-  `SUNWlang-enUS`.
-2.  Set the `LANG` environment variable to the code for your locale. +
-For example, if your locale is US English, set the `LANG` environment
-variable to `en_US.UTF-8`.
-
-[[abgdr]][[GSTSG00051]][[two-server-instances-bind-to-same-port-on-windows]]
-
-Two Server Instances Bind to Same Port on Windows
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-[[abgds]][[GSTSG00193]][[description-10]]
-
-Description
-^^^^^^^^^^^
-
-This problem occurs on Windows XP systems with GlassFish Server
-software, and is due to a known Windows security flaw rather than a
-problem with GlassFish Server itself.
-
-The problem occurs when two or more instances of GlassFish Server are
-created using the same port number for the `instanceport` option; for
-example:
-
-[source,oac_no_warn]
-----
-asadmin create-domain -adminport 5001 options -instanceport 6001 domain
-asadmin create-domain -adminport 5002 options -instanceport 6001 domain
-----
-
-When the two domains are started on a UNIX or Linux system, a port
-conflict error is thrown and the second instance fails to start.
-However, when the two domains are started on Windows XP, no error is
-thrown, both server instances start, but only the first instance is
-accessible at the specified port. When that first server instance is
-subsequently shut down, the second instance then becomes accessible.
-Moreover, when both instances are running, the Windows `netstat` command
-only reports the first instance.
-
-[[fxxyd]][[GSTSG00194]][[solution-7]]
-
-Solution
-^^^^^^^^
-
-Be sure to use unique port numbers for all server instances on Windows
-systems.
-
-[[abgel]][[GSTSG00052]][[cannot-produce-a-jvm-thread-dump-after-server-crash]]
-
-Cannot Produce a JVM Thread Dump After Server Crash
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-[[abgem]][[GSTSG00195]][[description-11]]
-
-Description
-^^^^^^^^^^^
-
-If GlassFish Server crashes, the server dumps a core file and, by
-default, restarts with the `-Xrs` flag, which prevents the dump of a JVM
-thread dump.
-
-[[fxxyw]][[GSTSG00196]][[solution-8]]
-
-Solution
-^^^^^^^^
-
-[[ghylc]][[GSTSG00027]][[to-obtain-a-server-thread-dump]]
-
-To Obtain a Server Thread Dump
-++++++++++++++++++++++++++++++
-
-Type the following command:
-
-[source,oac_no_warn]
-----
-asadmin generate-jvm-report --type=thread
-----
-
-[[sthref4]]
-
-See Also
-
-link:../reference-manual/generate-jvm-report.html#GSRFM00138[`generate-jvm-report`(1)]
-
-[[ghvgk]][[GSTSG00053]][[issues-related-to-applications]]
-
-Issues Related to Applications
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-[[abgee]][[GSTSG00197]][[cannot-undeploy-or-redeploy-application-with-open-streams-to-jar-files-windows]]
-
-Cannot Undeploy or Redeploy Application With Open Streams to `jar` Files
-(Windows)
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-[[abgef]][[GSTSG00099]][[description-12]]
-
-Description
-+++++++++++
-
-On Windows systems, after running an application, subsequent attempts to
-undeploy it or redeploy it throw exceptions about the server being
-unable to delete a file or rename a directory.
-
-On Windows systems, an application may use `getClass().getResource` or
-`getResourceAsStream` methods to locate a resource inside the
-application, particularly in `jar` files that are in the application or
-accessible to it. If the streams remain open, subsequent attempts to
-redeploy or undeploy the application can fail. In addition, the Java
-runtime by default caches streams to `jar` files for performance
-reasons.
-
-[[fxxyr]][[GSTSG00100]][[solution-9]]
-
-Solution
-++++++++
-
-Be sure to close streams opened by your applications. Also, if an
-application needs to be redeployed or undeployed repeatedly, and also
-needs to obtain a resource from a `jar` file using `getResource` or
-`getResourceAsStream`, consider using `getClass().getResource`, which
-returns a URL object, then invoke the `url.setUseCaches` method to turn
-off caching for that `jar` file, and use `url.getInputStream()` to
-obtain the stream.
-
-Although turning off caching for access to the `jar` file can slow
-performance, this approach does allow the application to be undeployed
-or redeployed. Note also that if the `getClass().getResourceAsStream`
-method is used instead, then the `jar` file in which the resource is
-located is cached (this is the default Java runtime setting) and remains
-open until the server is stopped.
-
-[[gldbk]][[GSTSG00198]][[maxpermgen-exception]]
-
-`MaxPermGen` Exception
-^^^^^^^^^^^^^^^^^^^^^^
-
-[[gldbn]][[GSTSG00101]][[description-13]]
-
-Description
-+++++++++++
-
-Application servers such as GlassFish Server allow you to redeploy an
-application without restarting the server. Simply make the change in
-your source code, compile the source, and redeploy the application.
-
-Each application is loaded using its own classloader. When you undeploy
-an application, its classloader is discarded with all the classes it
-loaded and is garbage collected sooner or later. However, if there's a
-reference from outside an application to an object in the application
-loaded by the application's classloader, that object can't be garbage
-collected. The reference holds the object in memory.
-
-The memory in the Virtual Machine is divided into a number of regions.
-One of these regions is `PermGen`. It's an area of memory used to (among
-other things) load class files. The size of this memory region is fixed;
-it does not change when the VM is running. You can specify the size of
-this region with a command line switch: `-XX:MaxPermSize`. Setting the
-`-Xmx` parameter does not help: this parameter only specifies the total
-heap size and does not affect the size of the `PermGen` region.
-
-If you keep loading new classes that can't be garbage collected because
-of references to them from outside the application, the VM runs out of
-space in the `PermGen` region, even if there's plenty of memory
-available. This is called a classloader leak. The resulting exception is
-`java.lang.OutOfMemoryError: PermGen space`.
-
-The `java.lang.String.intern()` method also allocates memory in the
-`PermGen` region. If your application uses this method with strings and
-holds references to these strings, thereby making garbage collection
-impossible, your application may cause the same `PermGen space`
-exception.
-
-[[gldbw]][[GSTSG00102]][[solution-10]]
-
-Solution
-++++++++
-
-Classloader leaks are difficult to diagnose. Most profilers list leaked
-objects but don't highlight the ones causing classloader leaks. Most
-profilers also stop tracing as soon as they reach a class object or
-classloader.
-
-One diagnostic approach involves undeploying the application and
-triggering a memory dump using the JDK 6.0 `jmap` tool. Then you can use
-the JDK 6.0 `jhat` tool to analyze the dump. The simplest analysis is to
-list all instances of `java.lang.Class` and look for class objects that
-have many instances. This is a sign that the class has been loaded
-multiple times without being garbage collected.
-
-If you're willing to modify the `jhat` code, you can perform more
-refined queries. For example:
-
-* Trace references to a classloader from all the instances of the
-classes it loaded.
-* Generate a list of all classloader instances that have loaded an
-identical set of classes.
-* Find classloader instances whose only strong-reference chains from the
-root set go through instances of classes loaded by those classloaders.
-These are called orphaned classloaders.
-
-To override the original `jhat` code, put the JAR file of the modified
-`jhat` code in the `lib/ext` directory of the JDK.
-
-[[ghvhy]][[GSTSG00054]][[issues-related-to-asadmin]]
-
-Issues Related to `asadmin`
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-[[ghvhi]][[GSTSG00199]][[asadmin-start-domain-command-fails]]
-
-`asadmin` `start-domain` Command Fails
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The command `asadmin start-domain` fails with the following error:
-
-[source,oac_no_warn]
-----
-There is more than one domain...
-----
-
-[[gjkph]][[GSTSG00103]][[description-14]]
-
-Description
-+++++++++++
-
-When issued with no arguments, the command `asadmin start-domain` fails.
-
-This error occurs when there is more than one domain in the domains
-directory, none of them is named `domain1,` and no domain is specified
-with the `start-domain` command.
-
-[[gjkoy]][[GSTSG00104]][[solution-11]]
-
-Solution
-++++++++
-
-Specify the domain when issuing the `start-domain` command:
-
-[source,oac_no_warn]
-----
-asadmin start-domain domain-name
-----
-
-For example:
-
-[source,oac_no_warn]
-----
-asadmin start-domain mycustomdomain
-----
-
-[[ghvhx]][[GSTSG00200]][[cannot-stop-domain-using-asadmin-stop-domain]]
-
-Cannot Stop Domain Using `asadmin` `stop-domain`
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-[[ghvhl]][[GSTSG00105]][[description-15]]
-
-Description
-+++++++++++
-
-You cannot stop the domain using the `asadmin` `stop-domain` command.
-
-[[ghvha]][[GSTSG00106]][[solution-12]]
-
-Solution
-++++++++
-
-Look for error messages that display in the console when you issue the
-command.
-
-Search the `server.log` file for error messages related to your
-inability to stop the domain.
-
-[[ghvgu]][[GSTSG00055]][[issues-related-to-installation]]
-
-Issues Related to Installation
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-[[gjjnu]][[GSTSG00201]][[installation-hangs-during-update-tool-configuration]]
-
-Installation Hangs During Update Tool Configuration
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-[[giqjt]][[GSTSG00107]][[description-16]]
-
-Description
-+++++++++++
-
-Installation hangs more than five minutes during Update Tool
-configuration.
-
-[[giqle]][[GSTSG00108]][[solution-13]]
-
-Solution
-++++++++
-
-Cancel the installation and run the installation program again, but this
-time deselect the Install Update Tool check box. Update Tool can be
-installed later from as-install`/bin/`. For more information about
-Update Tool, see "link:../administration-guide/toc.html#GSADG00701[Update Tool]" in GlassFish Server
-Open Source Edition Administration Guide. For general information about
-GlassFish Serverinstallation, see the link:../installation-guide/toc.html#GSING[GlassFish Server Open
-Source Edition Installation Guide].
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Update Tool differs from Upgrade Tool, which is used to migrate the
-configuration and deployed applications from an earlier version of
-GlassFish Server to the current version. For more information about
-Upgrade Tool and upgrading, see the link:../upgrade-guide/toc.html#GSUPG[GlassFish Server Open
-Source Edition Upgrade Guide].
-
-|=======================================================================
-
-
-[[gjjob]][[GSTSG00202]][[glassfish-server-components-not-removed-during-uninstallation]]
-
-GlassFish Server Components Not Removed During Uninstallation
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-[[gjjoh]][[GSTSG00109]][[description-17]]
-
-Description
-+++++++++++
-
-Not all GlassFish Server directories are automatically removed by the
-uninstallation program. Some directories and files remain after
-uninstalling.
-
-[[gjjnk]][[GSTSG00110]][[solution-14]]
-
-Solution
-++++++++
-
-Examine the remaining directories and remove any files or directories
-that you do not want, including hidden directories prefixed with a dot.
-It is safe to remove uninstallation and installation log files after you
-have examined them.
-
-For information related to uninstallation, see
-"link:../installation-guide/uninstalling.html#GSING00003[Uninstalling GlassFish Server 3.1]" in GlassFish
-Server Open Source Edition Installation Guide.
-
-[[ghvrh]][[GSTSG00056]][[issues-related-to-security]]
-
-Issues Related to Security
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-[[abgjt]][[GSTSG00203]][[java.security.accesscontrolexception-access-denied-error]]
-
-`java.security.AccessControlException`: Access Denied Error
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-[[abgju]][[GSTSG00111]][[description-18]]
-
-Description
-+++++++++++
-
-The following error occurs from an application client, or appears in the
-`server.log` file:
-
-[source,oac_no_warn]
-----
-java.security.AccessControlException: access denied
-(java.util.PropertyPermission name write...)
-----
-
-There is a permissions issue in the policy files. Either the
-`client.policy` file for the application client or the `server.policy`
-file for server side components does not have permission to set the
-property.
-
-[[fxxzk]][[GSTSG00112]][[solution-15]]
-
-Solution
-++++++++
-
-Add the permission in `client.policy` (for the application client), or
-in `server.policy` (for web modules) for the application that needs to
-set the property. By default, applications only have read permission for
-properties.
-
-For example, to grant read/write permission for all files in the
-codebase directory, add or append the following to `client.policy` or
-`server.policy`:
-
-[source,oac_no_warn]
-----
-grant codeBase "file:/.../build/sparc_SunOS/sec/-" {
-   permission java.util.PropertyPermission "*", "read,write";
- };
-----
-
-[[abgka]][[GSTSG00204]][[mutual-authentication-not-working-with-the-application-client]]
-
-Mutual Authentication Not Working With the Application Client
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-[[abgkb]][[GSTSG00113]][[description-19]]
-
-Description
-+++++++++++
-
-This failure can occur when the keystore and truststore properties are
-not set properly.
-
-[[fxxzu]][[GSTSG00114]][[solution-16]]
-
-Solution
-++++++++
-
-Set the following properties on the JVM:
-
-[source,oac_no_warn]
-----
-javax.net.ssl.keyStore=
-<keystore-file-path>;javax.net.ssl.trustStore=<truststore-file-path>
-----
-
-To use the application client, set the environment variable `VMARGS` to
-the following value:
-
-[source,oac_no_warn]
-----
--Djavax.net.ssl.keyStore=${admin.domain.dir}/${admin.domain}/config/keystore.jks
--Djavax.net.ssl.trustStore=${admin.domain.dir}/${admin.domain}/config/cacerts.jks
-----
diff --git a/docs/troubleshooting-guide/src/main/jbake/content/title.adoc b/docs/troubleshooting-guide/src/main/jbake/content/title.adoc
deleted file mode 100644
index 3c1c328..0000000
--- a/docs/troubleshooting-guide/src/main/jbake/content/title.adoc
+++ /dev/null
@@ -1,45 +0,0 @@
-type=page
-status=published
-title=Eclipse GlassFish Server Troubleshooting Guide, Release 5.1
-next=preface.html
-prev=toc.html
-~~~~~~
-Eclipse GlassFish Server Troubleshooting Guide, Release 5.1
-===========================================================
-
-[[eclipse-glassfish-server]]
-Eclipse GlassFish Server
-------------------------
-
-Troubleshooting Guide
-
-Release 5.1
-
-Contributed 2018, 2019
-
-This guide describes common problems that you might encounter when using
-Eclipse GlassFish Server and how to solve them.
-
-[[sthref1]]
-
-'''''
-
-Eclipse GlassFish Server Troubleshooting Guide, Release 5.1
-
-Copyright © 2013, 2019 Oracle and/or its affiliates. All rights reserved.
-
-This program and the accompanying materials are made available under the 
-terms of the Eclipse Public License v. 2.0, which is available at 
-http://www.eclipse.org/legal/epl-2.0. 
-
-SPDX-License-Identifier: EPL-2.0
-
-Oracle and Java are registered trademarks of Oracle and/or its 
-affiliates. Other names may be trademarks of their respective owners. 
-
-Intel and Intel Xeon are trademarks or registered trademarks of Intel 
-Corporation. All SPARC trademarks are used under license and are 
-trademarks or registered trademarks of SPARC International, Inc. AMD, 
-Opteron, the AMD logo, and the AMD Opteron logo are trademarks or 
-registered trademarks of Advanced Micro Devices. UNIX is a registered 
-trademark of The Open Group. 
diff --git a/docs/troubleshooting-guide/src/main/jbake/jbake.properties b/docs/troubleshooting-guide/src/main/jbake/jbake.properties
deleted file mode 100644
index 546d09c..0000000
--- a/docs/troubleshooting-guide/src/main/jbake/jbake.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-site.host=http://jbake.org
-render.tags=false
-render.sitemap=false
-render.archive=false
-render.feed=false
-asciidoctor.option.safe=0
-asciidoctor.attributes.export=true
diff --git a/docs/troubleshooting-guide/src/main/jbake/templates/footer.ftl b/docs/troubleshooting-guide/src/main/jbake/templates/footer.ftl
deleted file mode 100644
index 6f2b09e..0000000
--- a/docs/troubleshooting-guide/src/main/jbake/templates/footer.ftl
+++ /dev/null
@@ -1,46 +0,0 @@
-<#-- a footer template fragment included in the page template -->
-<hr />
-
-<table width="90%" id="bottom-nav" cellspacing="0" cellpadding="0">
-	<colgroup>
-		<col width="12%"/>
-		<col width="12%"/>
-		<col width="*"/>
-	</colgroup>
-	<tr>		
-	    <#if content.prev??>
-		<td align="left">
-		<a href="${content.prev}">
-			<span class=" vector-font"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Previous</span>
-		</a>
-		</td>
-		</#if>
-
-		<#if content.next??>
-		<td align="left">
-		<a href="${content.next}">
-			<span class="vector-font"><i class="fa fa-arrow-circle-right vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Next</span>
-		</a>
-		</td>
-		</#if>
-
-		<td align="right">
-		<a href="toc.html">
-			<span class="vector-font"><i class="fa fa-list vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Contents</span>
-		</a>
-		</td>
-	</tr>
-</table>
-
-<span id="copyright">
-        <img src="img/eclipse_foundation_logo_tiny.png" height="20px" alt="Eclipse Foundation Logo" align="top"/>&nbsp;            
-        <span >Copyright&nbsp;&copy;&nbsp;2019,&nbsp;Oracle&nbsp;and/or&nbsp;its&nbsp;affiliates.&nbsp;All&nbsp;rights&nbsp;reserved.</span>
-</span>
-
-<p align="center" class="beta">${config.status!}</p>
-
-</body>
-</html>
diff --git a/docs/troubleshooting-guide/src/main/jbake/templates/header.ftl b/docs/troubleshooting-guide/src/main/jbake/templates/header.ftl
deleted file mode 100644
index 82ebb36..0000000
--- a/docs/troubleshooting-guide/src/main/jbake/templates/header.ftl
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html>
-<#-- a header template fragment included in the page template -->
-<html lang="en">
-  <head>
-    <meta charset="utf-8"/>
-    <title><#if (content.title)??><#escape x as x?xml>${content.title}</#escape></#if></title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <link href="<#if (content.rootpath)??>${content.rootpath}<#else></#if>css/style.css" rel="stylesheet">
-    <script src="https://use.fontawesome.com/96c4d89611.js"></script>
-  </head>
-  <body>
-<table id="doc-title" cellspacing="0" cellpadding="0">
-  <tr>
-  <td align="left" valign="top">
-  <b>${content.title}</b><br />
-      <p class="beta">${config.status!}</p>
-  </td>
-  </tr>
-</table>
-<hr />
-
-<table width="90%" id="top-nav" cellspacing="0" cellpadding="0">
-	<colgroup>
-		<col width="12%"/>
-		<col width="12%"/>
-		<col width="*"/>
-	</colgroup>
-	<tr>
-	    <#if content.prev??>
-		<td align="left">
-		<a href="${content.prev}">
-			<span class="vector-font"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Previous</span>
-		</a>
-		</td>
-	    </#if>
-
-	    <#if content.next??>
-		<td align="left">
-		<a href="${content.next}">
-			<span class=" vector-font"><i class="fa fa-arrow-circle-right vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Next</span>
-		</a>
-		</td>
-	    </#if>
-
-		<td align="right">
-		<a href="toc.html">
-			<span class=" vector-font"><i class="fa fa-list vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Contents</span>
-		</a>
-		</td>
-	</tr>
-</table>
-
diff --git a/docs/troubleshooting-guide/src/main/jbake/templates/menu.ftl b/docs/troubleshooting-guide/src/main/jbake/templates/menu.ftl
deleted file mode 100644
index 888c03d..0000000
--- a/docs/troubleshooting-guide/src/main/jbake/templates/menu.ftl
+++ /dev/null
@@ -1 +0,0 @@
-<#-- a menu bar template fragment included in the page template -->
\ No newline at end of file
diff --git a/docs/troubleshooting-guide/src/main/jbake/templates/page.ftl b/docs/troubleshooting-guide/src/main/jbake/templates/page.ftl
deleted file mode 100644
index eca51db..0000000
--- a/docs/troubleshooting-guide/src/main/jbake/templates/page.ftl
+++ /dev/null
@@ -1,8 +0,0 @@
-<#-- a top level page layout template -->
-
-<#include "header.ftl">
-<#include "menu.ftl">
-
-${content.body}
-
-<#include "footer.ftl">
\ No newline at end of file
diff --git a/docs/upgrade-guide/README.md b/docs/upgrade-guide/README.md
deleted file mode 100644
index a3ec2b6..0000000
--- a/docs/upgrade-guide/README.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# A JBake project template
-
-## About JBake
-
-JBake is a static site generator, it's inspired from jekyll and written
-in java.  The basic idea is to have templates for the structure of the
-page, and the body generated from asciidoc content.
-
-## Pre requisites
-
-- Maven
-- JDK8+
-
-Deploying to Github will require password less authentication.
-
-This is done by exporting your SSH public key into your Github account.
-
-## Build the site locally
-
-The site is generated under target/staging.
-
-Open file:///PATH_TO_PROJECT_DIR/target/staging in a browser to view the site.
-
-```
-mvn generate-resources
-```
-
-Or you can invoke the JBake plugin directly.
-
-```
-mvn jbake:build
-```
-
-### Rebuild the site on changes
-
-```
-mvn jbake:watch
-```
-
-If you keep this command running, changes to the sources will be
-detected and the site will be rendered incrementally.
-
-This is convenient when writing content.
-
-### Serve the site locally
-
-```
-mvn jbake:serve
-```
-
-If a webserver is required (e.g. absolute path are used), this command
-will start a webserver (jetty) at http://localhost:8820.  It will also
-watch for changes and rebuild incrementally.
-
-## Deploy the site to Github Pages
-
-```
-mvn deploy
-```
-
-## Produce a zip file for download
-
-To produce a zip file containing the generated html files, use:
-
-```
-mvn package
-```
-
-When making a release on GitHub, this zip file should be added to the release.
-
-## Links
-
-- [JBake maven plugin documentation](https://github.com/Blazebit/jbake-maven-plugin)
-- [JBake documentation](http://jbake.org/docs/2.5.1)
-- [Freemarker documentation](http://freemarker.org/docs)
-- [AsciiDoc User Guide](http://asciidoc.org/userguide.html)
-- [Asciidoctor quick reference](http://asciidoctor.org/docs/asciidoc-syntax-quick-reference)
diff --git a/docs/upgrade-guide/pom.xml b/docs/upgrade-guide/pom.xml
index 2995d79..71c6469 100644
--- a/docs/upgrade-guide/pom.xml
+++ b/docs/upgrade-guide/pom.xml
@@ -22,11 +22,10 @@
     <parent>
         <groupId>org.glassfish.docs</groupId>
         <artifactId>parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../parent</relativePath>
     </parent>
-    <groupId>org.glassfish.docs</groupId>
     <artifactId>upgrade-guide</artifactId>
     <packaging>jar</packaging>
-    <name>Eclipse GlassFish Server Upgrade Guide, Release 5.1</name>
+    <name>Eclipse GlassFish Server Upgrade Guide, Release 7</name>
 </project>
diff --git a/docs/upgrade-guide/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png b/docs/upgrade-guide/src/main/asciidoc/img/eclipse_foundation_logo_tiny.png
similarity index 100%
rename from docs/upgrade-guide/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png
rename to docs/upgrade-guide/src/main/asciidoc/img/eclipse_foundation_logo_tiny.png
Binary files differ
diff --git a/docs/upgrade-guide/src/main/asciidoc/loe.adoc b/docs/upgrade-guide/src/main/asciidoc/loe.adoc
new file mode 100644
index 0000000..f31c408
--- /dev/null
+++ b/docs/upgrade-guide/src/main/asciidoc/loe.adoc
@@ -0,0 +1,18 @@
+type=page
+status=published
+title=List of Examples
+next=lot.html
+prev=toc.html
+~~~~~~
+
+= List of Examples
+
+[[list-of-examples]]
+== List of Examples
+
+* link:upgrading-legacy-installation.html#gktiu[2-1 Using the asupgrade
+Command Line]
+* link:upgrading-legacy-installation.html#gktoh[2-2 Correcting the
+Configuration of a Node After an Upgrade]
+* link:upgrading-legacy-installation.html#gkyin[2-3 Creating Two Local
+Instances]
diff --git a/docs/upgrade-guide/src/main/asciidoc/lot.adoc b/docs/upgrade-guide/src/main/asciidoc/lot.adoc
new file mode 100644
index 0000000..a523637
--- /dev/null
+++ b/docs/upgrade-guide/src/main/asciidoc/lot.adoc
@@ -0,0 +1,62 @@
+type=page
+status=published
+title=List of Tables
+next=title.html
+prev=loe.html
+~~~~~~
+
+= List of Tables
+
+[[list-of-tables]]
+== List of Tables
+
+* link:upgrade-compatibility-issues.html#gklho[1-1 GMS Administration
+Console Settings Changes from 2.1.1 to 4.0]
+* link:upgrade-compatibility-issues.html#gaeki[1-2 Deprecated,
+Unsupported, and Obsolete Options for asadmin and Subcommands]
+* link:upgrade-compatibility-issues.html#gipfy[1-3 com.sun.grizzly
+Property Remapping]
+* link:upgrade-compatibility-issues.html#gipfn[1-4 connection-pool
+Attribute Remapping]
+* link:upgrade-compatibility-issues.html#gipcv[1-5 http-file-cache
+Attribute Remapping]
+* link:upgrade-compatibility-issues.html#gipev[1-6 http-listener
+Attribute Remapping]
+* link:upgrade-compatibility-issues.html#gipdo[1-7 http-listener Property
+Remapping]
+* link:upgrade-compatibility-issues.html#gipel[1-8 http-protocol
+Attribute Remapping]
+* link:upgrade-compatibility-issues.html#gipfa[1-9 http-service Property
+Remapping]
+* link:upgrade-compatibility-issues.html#gipea[1-10 keep-alive Attribute
+Remapping]
+* link:upgrade-compatibility-issues.html#gipdh[1-11 request-processing
+Attribute Remapping]
+* link:upgrade-compatibility-issues.html#gipdv[1-12 ssl Attribute
+Changes]
+* link:upgrade-compatibility-issues.html#gipcj[1-13 thread-pool Attribute
+Changes]
+* link:upgrade-compatibility-issues.html#gipep[1-14 virtual-server
+Attribute Changes]
+* link:upgrade-compatibility-issues.html#gipds[1-15 New http Attributes]
+* link:upgrade-compatibility-issues.html#gipey[1-16 New network-listener
+Attributes]
+* link:upgrade-compatibility-issues.html#gipfg[1-17 New port-unification
+Attributes]
+* link:upgrade-compatibility-issues.html#gipdj[1-18 New protocol
+Attributes]
+* link:upgrade-compatibility-issues.html#gipcr[1-19 New protocol-chain
+Attributes]
+* link:upgrade-compatibility-issues.html#gipfq[1-20 New
+protocol-chain-instance-handler Attributes]
+* link:upgrade-compatibility-issues.html#gipeq[1-21 New protocol-filter
+Attributes]
+* link:upgrade-compatibility-issues.html#gipfd[1-22 New protocol-finder
+Attributes]
+* link:upgrade-compatibility-issues.html#gipft[1-23 New
+selection-key-handler Attributes]
+* link:upgrade-compatibility-issues.html#gipfi[1-24 New ssl Attributes]
+* link:upgrade-compatibility-issues.html#gipcc[1-25 New thread-pool
+Attributes]
+* link:upgrade-compatibility-issues.html#gipem[1-26 New transport
+Attributes]
diff --git a/docs/upgrade-guide/src/main/asciidoc/preface.adoc b/docs/upgrade-guide/src/main/asciidoc/preface.adoc
new file mode 100644
index 0000000..fefa79c
--- /dev/null
+++ b/docs/upgrade-guide/src/main/asciidoc/preface.adoc
@@ -0,0 +1,335 @@
+type=page
+status=published
+title=Preface
+next=upgrade-compatibility-issues.html
+prev=title.html
+~~~~~~
+
+= Preface
+
+[[GSUPG00001]][[gkbei]]
+
+
+[[preface]]
+== Preface
+
+This guide explains how to upgrade to {productName} from previous
+of {productName} and Sun GlassFish Enterprise Server product releases.
+Also included in this guide are instructions for upgrading configuration
+data and Jakarta EE applications from binary-compatible earlier versions
+of this software to work with {productName}.
+Finally, this guide describes compatibility issues that affect data
+and applications that are to be migrated.
+
+[NOTE]
+====
+The main thrust of the {productName} 7 release
+is to provide an application server for developers to explore and begin
+exploiting the new and updated technologies in the Jakarta EE 10 platform.
+Thus, the upgrade feature of {productName} was not a focus of this
+release. The feature is included in the release, but it may not function
+properly with some of the new features added in support of the Jakarta EE 10 platform.
+====
+
+This preface contains information about and conventions for the entire
+{productName} ({productName}) documentation set.
+
+{productName} 7 is developed through the GlassFish project
+open-source community at https://github.com/eclipse-ee4j/glassfish.
+The GlassFish project provides a structured process for developing the
+{productName} platform that makes the new features of the Jakarta EE
+platform available faster, while maintaining the most important feature
+of Jakarta EE: compatibility. It enables Java developers to access the
+{productName} source code and to contribute to the development of the
+{productName}.
+
+The following topics are addressed here:
+
+* link:#ghpbz[{productName} Documentation Set]
+* link:#giprl[Related Documentation]
+* link:#fwbkx[Typographic Conventions]
+* link:#fquvc[Symbol Conventions]
+* link:#ghpfg[Default Paths and File Names]
+
+[[GSUPG00020]][[ghpbz]]
+
+[[glassfish-server-documentation-set]]
+=== {productName} Documentation Set
+
+The {productName} documentation set describes deployment planning and
+system installation. For an introduction to {productName}, refer to
+the books in the order in which they are listed in the following table.
+
+[width="100%",cols="<30%,<70%",options="header",]
+|===
+|Book Title |Description
+|link:release-notes.html#GSRLN[Release Notes] |Provides late-breaking information about
+the software and the documentation and includes a comprehensive,
+table-based summary of the supported hardware, operating system, Java
+Development Kit (JDK), and database drivers.
+
+|link:quick-start-guide.html#GSQSG[Quick Start Guide]
+|Explains how to get started with the {productName} product.
+
+|link:installation-guide.html#GSING[Installation Guide]
+|Explains how to install the software and its components.
+
+|link:upgrade-guide.html#GSUPG[Upgrade Guide]
+|Explains how to upgrade to the latest version of {productName}.
+This guide also describes differences between adjacent product releases and configuration
+options that can result in incompatibility with the product specifications.
+
+|link:deployment-planning-guide.html#GSPLG[Deployment Planning Guide]
+|Explains how to build a production deployment of {productName} that meets the requirements of
+your system and enterprise.
+
+|link:administration-guide.html#GSADG[Administration Guide]
+|Explains how to configure, monitor, and manage {productName} subsystems and components
+from the command line by using the link:reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] utility.
+Instructions for performing these tasks from the Administration Console are provided
+in the Administration Console online help.
+
+|link:security-guide.html#GSSCG[Security Guide]
+|Provides instructions for configuring and administering {productName} security.
+
+|link:application-deployment-guide.html#GSDPG[Application Deployment Guide]
+|Explains how to assemble and deploy applications to the {productName} and provides information
+about deployment descriptors.
+
+|link:application-development-guide.html#GSDVG[Application Development Guide]
+|Explains how to create and implement Java Platform, Enterprise Edition (Jakarta EE platform)
+applications that are intended to run on the {productName}.
+These applications follow the open Java standards model for Jakarta EE components
+and application programmer interfaces (APIs).
+This guide provides information about developer tools, security, and debugging.
+
+|link:add-on-component-development-guide.html#GSACG[Add-On Component Development Guide]
+|Explains how to use published interfaces of {productName} to develop add-on components
+for {productName}.
+This document explains how to perform only those tasks that ensure that the add-on component
+is suitable for {productName}.
+
+|link:embedded-server-guide.html#GSESG[Embedded Server Guide]
+|Explains how to run applications in embedded {productName} and to develop applications
+in which {productName} is embedded.
+
+|link:ha-administration-guide.html#GSHAG[High Availability Administration Guide]
+|Explains how to configure {productName} to provide higher availability and
+scalability through failover and load balancing.
+
+|link:performance-tuning-guide.html#GSPTG[Performance Tuning Guide]
+|Explains how to optimize the performance of {productName}.
+
+|link:troubleshooting-guide.html#GSTSG[Troubleshooting Guide]
+|Describes common problems that you might encounter when using {productName} and explains how to solve them.
+
+|link:error-messages-reference.html#GSEMR[Error Message Reference]
+|Describes error messages that you might encounter when using {productName}.
+
+|link:reference-manual.html#GSRFM[Reference Manual]
+|Provides reference information in man page format for {productName} administration commands, utility
+commands, and related concepts.
+
+|link:../openmq/mq-release-notes.html#GMRLN[Message Queue Release Notes]
+|Describes new features, compatibility issues, and existing bugs for Open Message Queue.
+
+|link:../openmq/mq-tech-over.html#GMTOV[Message Queue Technical Overview]
+|Provides an introduction to the technology, concepts, architecture, capabilities, and features of
+the Message Queue messaging service.
+
+|link:../openmq/mq-admin-guide.html#GMADG[Message Queue Administration Guide]
+|Explains how to set up and manage a Message Queue messaging system.
+
+|link:../openmq/mq-dev-guide-jmx.html#GMJMG[Message Queue Developer's Guide for JMX Clients]
+|Describes the application programming interface in Message Queue for
+programmatically configuring and monitoring Message Queue resources in
+conformance with the Java Management Extensions (JMX).
+
+|link:../openmq/mq-dev-guide-java.html#GMJVG[Message Queue Developer's Guide for Java Clients]
+|Provides information about concepts and procedures for developing Java messaging
+applications (Java clients) that work with {productName}.
+
+|link:../openmq/mq-dev-guide-c.html#GMCCG[Message Queue Developer's Guide for C Clients]
+|Provides programming and reference information for developers working with
+Message Queue who want to use the C language binding to the Message
+Queue messaging service to send, receive, and process Message Queue messages.
+|===
+
+
+[[GSUPG00021]][[giprl]]
+
+[[related-documentation]]
+=== Related Documentation
+
+The following tutorials explain how to develop Jakarta EE applications:
+
+* https://github.com/eclipse-ee4j/jakartaee-firstcup-examples[
+Your First Cup: An Introduction to the Jakarta EE Platform].
+For beginning Jakarta EE programmers, this short tutorial explains the entire
+process for developing a simple enterprise application.
+The sample application is a web application that consists of a component that is
+based on the Enterprise JavaBeans specification, a JAX-RS web service,
+and a JavaServer Faces component for the web front end.
+
+* https://eclipse-ee4j.github.io/jakartaee-tutorial[The Jakarta EE Tutorial].
+This comprehensive tutorial explains how to use Jakarta EE platform technologies
+and APIs to develop Jakarta EE applications.
+
+Javadoc tool reference documentation for packages that are provided with
+{productName} is available as follows.
+
+* The Jakarta EE specifications and API specification is
+located at https://jakarta.ee/specifications/.
+
+* The API specification for {productName} 7, including Jakarta EE
+platform packages and nonplatform packages that are specific to the
+{productName} product, is located at
+https://glassfish.org/docs/.
+
+For information about creating enterprise applications in the NetBeans
+Integrated Development Environment (IDE), see the
+https://netbeans.apache.org/kb/docs/java-ee.html[
+NetBeans Documentation, Training & Support page].
+
+For information about the Derby database for use with
+the {productName}, see the https://db.apache.org/derby/index.html[Derby page].
+
+The Jakarta EE Samples project is a collection of sample applications that
+demonstrate a broad range of Jakarta EE technologies. The Jakarta EE Samples
+are bundled with the Jakarta EE Software Development Kit (SDK) and are also
+available from the repository
+(`https://github.com/eclipse-ee4j/glassfish-samples`).
+
+
+[[typographic-conventions]]
+=== Typographic Conventions
+
+The following table describes the typographic changes that are used in
+this book.
+
+[width="100%",cols="<14%,<37%,<49%",options="header",]
+|===
+|Typeface |Meaning |Example
+
+|`AaBbCc123`
+|The names of commands, files, and directories, and onscreen computer output
+|Edit your `.login` file.
+
+Use `ls` `a` to list all files.
+
+`machine_name% you have mail.`
+
+|`AaBbCc123`
+|What you type, contrasted with onscreen computer output
+|`machine_name%` `su`
+
+`Password:`
+
+|AaBbCc123
+|A placeholder to be replaced with a real name or value
+|The command to remove a file is `rm` filename.
+
+|AaBbCc123
+|Book titles, new terms, and terms to be emphasized (note that some emphasized items appear bold online)
+|Read Chapter 6 in the User's Guide.
+
+A cache is a copy that is stored locally.
+
+Do not save the file.
+|===
+
+
+[[GSUPG00023]][[fquvc]]
+
+[[symbol-conventions]]
+=== Symbol Conventions
+
+The following table explains symbols that might be used in this book.
+
+[width="100%",cols="<10%,<26%,<28%,<36%",options="header",]
+|===
+|Symbol |Description |Example |Meaning
+
+|`[ ]`
+|Contains optional arguments and command options.
+|`ls [-l]`
+|The `-l` option is not required.
+
+|`{ \| }`
+|Contains a set of choices for a required command option.
+|`-d {y\|n}`
+|The `-d` option requires that you use either the `y` argument or the `n` argument.
+
+|`${ }`
+|Indicates a variable reference.
+|`${com.sun.javaRoot}`
+|References the value of the `com.sun.javaRoot` variable.
+
+|`-`
+|Joins simultaneous multiple keystrokes.
+|Control-A
+|Press the Control key while you press the A key.
+
+|`+`
+|Joins consecutive multiple keystrokes.
+|Ctrl+A+N
+|Press the Control key, release it, and then press the subsequent keys.
+
+|`>`
+|Indicates menu item selection in a graphical user interface.
+|File > New > Templates
+|From the File menu, choose New. From the New submenu, choose Templates.
+|===
+
+
+[[GSUPG00024]][[ghpfg]]
+
+[[default-paths-and-file-names]]
+=== Default Paths and File Names
+
+The following table describes the default paths and file names that are
+used in this book.
+
+[%autowidth.stretch,options="header",]
+|===
+|Placeholder |Description |Default Value
+
+|as-install
+a|Represents the base installation directory for {productName}.
+In configuration files, as-install is represented as follows:
+`${com.sun.aas.installRoot}`
+a|* Installations on the Oracle Solaris operating system, Linux operating
+system, and Mac OS operating system:
++
+user's-home-directory``/glassfish7/glassfish``
++
+* Installations on the Windows operating system:
++
+SystemDrive``:\glassfish7\glassfish``
+
+|as-install-parent
+|Represents the parent of the base installation directory for {productName}.
+a|* Installations on the Oracle Solaris operating system, Linux operating
+system, and Mac operating system:
++
+user's-home-directory``/glassfish7``
++
+* Installations on the Windows operating system:
++
+SystemDrive``:\glassfish7``
+
+|domain-root-dir
+|Represents the directory in which a domain is created by default.
+|as-install``/domains/``
+
+|domain-dir
+|Represents the directory in which a domain's configuration is stored.
+In configuration files, domain-dir is represented as follows:
+`${com.sun.aas.instanceRoot}`
+|domain-root-dir/domain-name
+
+|instance-dir
+|Represents the directory for a server instance.
+|domain-dir/instance-name
+|===
+
diff --git a/docs/upgrade-guide/src/main/asciidoc/title.adoc b/docs/upgrade-guide/src/main/asciidoc/title.adoc
new file mode 100644
index 0000000..fc18ca4
--- /dev/null
+++ b/docs/upgrade-guide/src/main/asciidoc/title.adoc
@@ -0,0 +1,58 @@
+type=page
+status=published
+title={productName} Upgrade Guide, Release 7
+next=preface.html
+prev=lot.html
+~~~~~~
+
+= {productName} Upgrade Guide, Release 7
+
+[[eclipse-glassfish-server]]
+== {productName}
+
+Upgrade Guide
+
+Release 7
+
+Contributed 2018 - 2022
+
+This guide explains how to upgrade to {productName} 7
+from previous {productName} and Sun GlassFish Enterprise
+Server product releases. Also included in this guide are instructions
+for upgrading configuration data and Jakarta EE applications from
+binary-compatible earlier versions of this software to work with
+{productName} 7. Finally, this guide describes
+compatibility issues that affect data and applications that are to be
+migrated.
+
+Note: The main thrust of the {productName} 7
+release is to provide an application server for developers to explore
+and begin exploiting the new and updated technologies in the Jakarta EE 10
+platform. Thus, the upgrade feature of {productName} was not a focus
+of this release. The feature is included in the release, but it may not
+function properly with some of the new features added in support of the
+Jakarta EE 10 platform.
+
+[[sthref1]]
+
+'''''
+
+{productName} Upgrade Guide, Release 7
+
+Copyright © 2013, 2019 Oracle and/or its affiliates. All rights reserved.
+
+This program and the accompanying materials are made available under the
+terms of the Eclipse Public License v. 2.0, which is available at
+http://www.eclipse.org/legal/epl-2.0.
+
+SPDX-License-Identifier: EPL-2.0
+
+Oracle and Java are registered trademarks of Oracle and/or its
+affiliates. Other names may be trademarks of their respective owners.
+
+Intel and Intel Xeon are trademarks or registered trademarks of Intel
+Corporation. All SPARC trademarks are used under license and are
+trademarks or registered trademarks of SPARC International, Inc. AMD,
+Opteron, the AMD logo, and the AMD Opteron logo are trademarks or
+registered trademarks of Advanced Micro Devices. UNIX is a registered
+trademark of The Open Group.
diff --git a/docs/upgrade-guide/src/main/asciidoc/upgrade-compatibility-issues.adoc b/docs/upgrade-guide/src/main/asciidoc/upgrade-compatibility-issues.adoc
new file mode 100644
index 0000000..38131cc
--- /dev/null
+++ b/docs/upgrade-guide/src/main/asciidoc/upgrade-compatibility-issues.adoc
@@ -0,0 +1,1075 @@
+type=page
+status=published
+title={productName} Upgrade Compatibility Issues
+next=upgrading-legacy-installation.html
+prev=preface.html
+~~~~~~
+
+= {productName} Upgrade Compatibility Issues
+
+[[GSUPG00002]][[abmaq]]
+
+
+[[glassfish-server-upgrade-compatibility-issues]]
+== 1 {productName} Upgrade Compatibility Issues
+
+This section describes some compatibility issues between {productName} 7 and earlier product releases. This section also describes
+some compatibility issues that affect Java applications that run on
+earlier product releases with which {productName} 7 is
+binary-compatible. When you upgrade to {productName} 7, you must
+address these issues.
+
+The following topics are addressed here:
+
+* link:#gjwpd[Binary-Compatible Releases For {productName} 7]
+* link:#gkric[New Default Installation Directory]
+* link:#gklhr[Changes to Group Management Service Settings]
+* link:#geyyk[Application Client Interoperability]
+* link:#gktad[Node Agent Support]
+* link:#gkrjm[HADB and `hadbm` Command Support]
+* link:#abmbc[Command Line Interface: The `asadmin` Command]
+* link:#gflnv[Applications That Use Java DB]
+* link:#gjizi[Applications That Use Persistence]
+* link:#gjiqj[HTTP Service to Network Service Changes]
+* link:#gktkt[NSS Cryptographic Token Support]
+
+[[gjwpd]][[GSUPG00028]][[binary-compatible-releases-for-glassfish-server]]
+
+=== Binary-Compatible Releases For {productName} 7
+
+{productName} 7 is NOT binary-compatible with the earlier releases of the software:
+
+* Sun GlassFish Enterprise Server v2.1.1 (Enterprise and Developer Profiles)
+* Sun GlassFish Enterprise Server v3
+* GlassFish Server Open Source Edition 3.0.1
+* GlassFish Server Open Source Edition 3.1
+* GlassFish Server Open Source Edition 3.1.1
+* GlassFish Server Open Source Edition 4.x
+* GlassFish Server Open Source Edition 5.x
+* Eclipse GlassFish 6.x
+
+Java applications that run on these releases also work on {productName} 7 except for the compatibility issues that
+are listed in the remainder of this chapter.
+
+
+[NOTE]
+====
+The compatibility issues that are listed in the remainder of this
+chapter do not affect Java applications that run on Sun GlassFish
+Enterprise Server v3 and {productName} 3.0.1. The differences between
+{productName} 7 and the Enterprise Server v3 releases do not affect
+applications and data.
+====
+
+
+[[gkric]][[GSUPG00029]][[new-default-installation-directory]]
+
+=== New Default Installation Directory
+
+The default {productName} 7 installation directories are as follows:
+
+Solaris, Linux, and Mac OS X systems::
+[source]
+----
+user-home-directory/glassfish7
+----
+Windows systems::
+[source]
+----
+SystemDrive\glassfish7
+----
+
+In {productName} 3.0.1 and Enterprise Server v3, the default
+installation root directory was `glassfish7`.
+
+[[gklhr]][[GSUPG00030]][[changes-to-group-management-service-settings]]
+
+=== Changes to Group Management Service Settings
+
+The functionality of the Group Management Service (GMS) has not changed
+since Sun GlassFish Enterprise Server v2.1.1, but the names of GMS
+settings have been changed in the Administration Console to make them
+more understandable. These changes are made automatically during the
+upgrade process.
+
+Changes to settings on the Edit Group Management Service page in the
+Administration Console are summarized in the following table.
+
+[[sthref3]][[gklho]]
+
+Table 1-1 GMS Administration Console Settings Changes from 2.1.1 to 4.0
+
+[width="100%",cols="<50%,<50%",options="header",]
+|===
+|Old Setting Name |New Setting Name
+|Protocol Maximum Trial |Maximum Missed Heartbeats
+|Protocol Timeout |Heartbeat Frequency
+|Ping Timeout |Group Discovery Timeout
+|Verified Timeout |Failure Verification Wait Time
+|===
+
+
+The Merge Protocol settings from Sun GlassFish Enterprise Server v2.1.1
+are not supported and have been removed.
+
+[[geyyk]][[GSUPG00031]][[application-client-interoperability]]
+
+=== Application Client Interoperability
+
+The Jakarta EE 6 platform specification imposes stricter requirements than
+Jakarta EE 5 did on which JAR files can be visible to various modules
+within an EAR file. In particular, application clients must not have
+access to EJB JAR files or other JAR files in the EAR file unless they
+use a `Class-Path` header in the manifest file, or unless references use
+the standard Java SE mechanisms (extensions, for example), or use the
+Jakarta EE `library-directory` mechanism. Deployed Jakarta EE 5 applications
+that are upgraded to {productName} 7 will have the `compatibility`
+property set to `v2` and will run without change on {productName} 7.
+You may, however, want to consider modifying the applications to
+conform to Jakarta EE 6 requirements.
+
+If your upgrade includes a deployed application with an application
+client, you will need to retrieve the client stubs using {productName} 7 in order to run the client. Use the
+`asadmin get-client-stubs` command.
+
+If you try to run the application client before retrieving the client
+stubs, you will see the following error message:
+
+[source]
+----
+Invalid or corrupt jarfile jar-file-name
+----
+
+If you commonly distribute application clients to remote systems from
+which users will run them, you must not only retrieve the client stubs,
+but you must also run the `package-appclient` utility for {productName} 7 to upgrade the {productName} system files. This utility
+creates a JAR file, which you can then expand on the remote systems.
+
+Application clients use EJBs, web services, or other enterprise
+components that are in the application server (on the server side). The
+application client and the application server must use the same version
+and implementation of the RMI-IIOP protocol. {productName} 7 does
+not support communication between different versions of the protocol
+implementation. You cannot run application clients with one version of
+the application server runtime with a server that has a different
+version. Most often, this would happen if you upgraded the server but
+had not upgraded all the application client installations. If you run
+the `package-appclient` utility, this issue will not arise.
+
+You can use the Java Web Start support to distribute and launch the
+application client. If the runtime on the server has changed since the
+end-user last used the application client, Java Web Start automatically
+retrieves the updated runtime. Java Web Start enables you to keep the
+clients and servers synchronized and using the same runtime.
+
+[[gktad]][[GSUPG00032]][[node-agent-support]]
+
+=== Node Agent Support
+
+{productName} 7 does not support node agents. When updating from
+installations of earlier product versions in which node agents were
+configured, the cluster definitions will be migrated, but the clustered
+instances themselves must be manually re-created. See
+link:upgrading-legacy-installation.html#gfybw[Upgrading Clusters and Node
+Agent Configurations] for more information.
+
+[[gkrjm]][[GSUPG00033]][[hadb-and-hadbm-command-support]]
+
+=== HADB and `hadbm` Command Support
+
+{productName} 7 does not support HADB or the `hadbm` management command.
+
+Instead of HADB, {productName} 7 supports high availability
+clustering by means of in-memory session state replication and
+ActiveCache for GlassFish.
+See "link:ha-administration-guide/overview.html#GSHAG00002[
+High Availability in {productName}]" in
+{productName} High Availability Administration Guide
+for more information.
+
+[[abmbc]][[GSUPG00034]][[command-line-interface-the-asadmin-command]]
+
+=== Command Line Interface: The `asadmin` Command
+
+The following sections describe changes to the command line utility `asadmin`:
+
+* link:#abmbd[Deprecated `asadmin` Subcommands]
+* link:#abmbf[Deprecated, Unsupported, and Obsolete Options]
+
+For more information about `asadmin` and its subcommands, see the
+link:reference-manual.html#GSRFM[{productName} Reference Manual].
+
+[[abmbd]][[GSUPG00053]][[deprecated-asadmin-subcommands]]
+
+==== Deprecated `asadmin` Subcommands
+
+In {productName} 7, it is recommended that utility options of the
+`asadmin` command precede the subcommand. Utility options are options
+that control the behavior of the `asadmin` utility, as distinguished
+from subcommand options. Use of the following options after the
+subcommand is deprecated.
+
+* `--host`
+* `--port`
+* `--user`
+* `--passwordfile`
+* `--terse`
+* `--secure`
+* `--echo`
+* `--interactive`
+
+[[abmbf]][[GSUPG00054]][[deprecated-unsupported-and-obsolete-options]]
+
+==== Deprecated, Unsupported, and Obsolete Options
+
+Options in link:#gaeki[Table 1-2] are deprecated or no longer supported,
+or are obsolete and are ignored.
+
+[[sthref4]][[gaeki]]
+
+Table 1-2 Deprecated, Unsupported, and Obsolete Options for `asadmin`
+and Subcommands
+
+[width="100%",cols="<33%,<67%",options="header",]
+|===
+|Option |Affected Subcommands
+
+|`--acceptlang`
+|Unsupported for the `create-virtual-server` subcommand.
+
+|`--acls`
+|Unsupported for the `create-virtual-server` subcommand.
+
+|`--adminpassword`
+|Unsupported for all relevant subcommands. Use `--passwordfile` instead.
+
+|`--autoapplyenabled`
+|Obsolete for the `create-http-lb` subcommand.
+
+|`--autohadb`
+|Obsolete for the `create-cluster` subcommand.
+
+|`--autohadboverride`
+|Obsolete for the `start-cluster` subcommand and the `stop-cluster` subcommand
+
+|`--blockingenabled`
+|Unsupported for the `create-http-listener` subcommand.
+
+|`--configfile`
+|Unsupported for the `create-virtual-server` subcommand.
+
+|`--defaultobj`
+|Unsupported for the `create-virtual-server` subcommand.
+
+|`--defaultvs`
+|Deprecated for the `create-http-listener` subcommand. Use `--default-virtual-server` instead.
+
+|`--description`
+|Obsolete for the `restore-domain` subcommand.
+
+|`--devicesize`
+|Obsolete for the `create-cluster` subcommand.
+
+|`--haadminpassword`
+|Obsolete for the `create-cluster` subcommand.
+
+|`--haadminpasswordfile`
+|Obsolete for the `create-cluster` subcommand.
+
+|`--haagentport`
+|Obsolete for the `create-cluster` subcommand.
+
+|`--haproperty`
+|Obsolete for the `create-cluster` subcommand.
+
+|`--heartbeataddress`
+|Deprecated for the `create-cluster` subcommand. Use `--multicastaddress` instead.
+
+|`--heartbeatport`
+|Deprecated for the `create-cluster` subcommand. Use `--multicastport` instead.
+
+|`--hosts`
+|Obsolete for the `create-cluster` subcommand.
+
+|`--ignoreDescriptorItem`
+|Replaced by the all lowercase option `--ignoredescriptoritem`
+in the `set-web-context-param` subcommand and the `set-web-env-entry` subcommand.
+
+|`--mime`
+|Unsupported for the `create-virtual-server` subcommand.
+
+|`--password`
+|Unsupported for all remote subcommands. Use `--passwordfile` instead.
+
+|`--path`
+|Unsupported for the `create-domain` subcommand. Use `--domaindir` instead.
+
+|`--portbase`
+|Obsolete only for the `create-cluster` subcommand.
+This option is still valid in other subcommands such as `create-domain`,
+`create-instance`, and `create-local-instance`.
+
+|`--resourcetype`
+|Unsupported for all relevant subcommands. Use `--restype` instead.
+
+|`--retrievefile`
+|Obsolete for the `export-http-lb-config` subcommand.
+
+|`--setenv`
+|Obsolete for the `start-instance` subcommand.
+
+|`--target`
+a|Obsolete only for the following subcommands:
+
+* `create-connector-connection-pool`
+* `create-resource-adapter-config`
+* `delete-connector-connection-pool`
+* `delete-connector-security-map`
+* `delete-jdbc-connection-pool`
+* `delete-resource-ref`
+
+Replaced by an operand in the `list-custom-resources` subcommand and the
+`list-jndi-entries` subcommand.
+|===
+
+
+[[gflnv]][[GSUPG00035]][[applications-that-use-java-db]]
+
+=== Applications That Use Java DB
+
+The directory location of Java DB in {productName} 7 has changed
+from its location in previous installations. Suppose that you have
+deployed applications that use Java DB databases in your previous server
+installation, and you upgrade your existing installation to {productName} 7. If you run the `asadmin start-database` command and
+successfully start Java DB, you could run into problems while trying to
+run applications that were deployed on your previous server
+installation.
+
+To solve this problem, you can copy the `databases` directory from your
+previous installation to as-install``/databases``. Make sure the database
+is not running when you do this.
+
+Alternatively, you can perform these steps:
+
+1. Use the `asadmin start-database` command with the `--dbhome` option
+pointing to the `databases` directory in the older version of Java DB.
+For example:
++
+[source]
+----
+asadmin start-database --dbhome c:\glassfish\databases
+----
+2. After upgrade, start {productName} 7.
+
+[[gjizi]][[GSUPG00036]][[applications-that-use-persistence]]
+
+=== Applications That Use Persistence
+
+{productName} 7 and 3.0.1, and Sun GlassFish Enterprise Server v3
+use the persistence provider EclipseLink, while earlier versions used
+TopLink Essentials.
+
+An application that uses the container to create an `EntityManager` or
+`EntityManagerFactory` and that used Toplink Essentials as its provider
+will work in {productName} 7. The container creates an
+`EntityManager` if the application uses the `@PersistenceContext`
+annotation to inject an `EntityManager`, as in the following example:
+
+[source,java]
+----
+@PersistenceContext
+EntityManager em;
+----
+
+The container creates an `EntityManagerFactory` if the application uses
+the `@PersistenceUnit` annotation to inject an `EntityManagerFactory`,
+as in the following example:
+
+[source,java]
+----
+@PersistenceUnit
+EntityManagerFactory emf;
+
+EntityManager em = emf.createEntityManager();
+----
+
+When the application is loaded, {productName} 7 will translate the
+provider to EclipseLink and will also translate `toplink.*` properties
+in the `persistence.xml` to corresponding EclipseLink properties. (The
+actual `persistence.xml` file remains unchanged.)
+
+Under certain circumstances, however, you may have to modify the
+`persistence.xml` file or your code:
+
+* If your application uses Java SE code to create the
+`EntityManagerFactory`, you will need to change your `persistence.xml`
+file for both the `provider` element and for any `toplink.*` properties
+to use the EclipseLink equivalents. An application uses Java SE code if
+it uses the `javax.persistence.Persistence` class to create the
+`EntityManagerFactory`, as in the following example:
++
+[source,java]
+----
+EntityManagerFactory emf =
+    javax.persistence.Persistence.createEntityManagerFactory("Order");
+EntityManager em = emf.createEntityManager();
+----
+In this case, change the `provider` element to specify the following:
++
+[source,xml]
+----
+<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
+----
+* If the application itself contains any TopLink Essentials-specific
+code and therefore contains casts to `oracle.toplink.\*`, you must change
+the code to cast to `org.eclipse.persistence.*`. You can use the package
+renamer tool described on the
+http://wiki.eclipse.org/EclipseLink/Examples/MigratingFromOracleTopLink#Rename_Packages[
+Eclipse wiki]
+to do this. This tool is not provided with {productName} 7,
+however, so you must obtain it from the EclipseLink project download site.
+
+[[gjiqj]][[GSUPG00037]][[http-service-to-network-service-changes]]
+
+=== HTTP Service to Network Service Changes
+
+In {productName} 7, most HTTP Service settings are defined in the
+Network Service configuration that was introduced in Sun GlassFish
+Enterprise Server v3.
+
+The changes are described in the following sections.
+
+* link:#gipsa[Changes to Dotted Names]
+* link:#giprg[Changes to `asadmin` Subcommands]
+* link:#gipfo[Remapping of HTTP Service Attributes and Properties]
+* link:#gipcg[New Network Service Elements and Attributes]
+
+[[gipsa]][[GSUPG00055]][[changes-to-dotted-names]]
+
+==== Changes to Dotted Names
+
+The dotted name hierarchy for the HTTP Service configuration in
+{productName} 7 is shown below. Elements that are no longer
+supported are `request-processing`, `keep-alive`, `connection-pool`,
+`http-protocol`, `http-file-cache`, and `http-listener`. During the
+upgrade process, these discontinued elements are remapped to the new
+configuration automatically and then deleted.
+
+[source]
+----
+config
+    http-service
+        access-log
+        request-processing
+        keep-alive
+        connection-pool
+        http-protocol
+        http-file-cache
+        http-listener
+            ssl
+            property
+        virtual-server
+            http-access-log
+            property
+        property
+    thread-pools
+        thread-pool
+----
+
+The dotted name hierarchy for the {productName} 7 Network Service
+and HTTP Service configurations is shown below. The `network-config`
+element and all its children are new except for `ssl`.
+
+[source]
+----
+config
+    network-config
+        transports
+            selection-key-handler
+            transport
+        protocols
+            protocol
+                http
+                    file-cache
+                port-unification
+                    protocol-finder
+                protocol-chain-instance-handler
+                    protocol-chain
+                protocol-filter
+                ssl
+        network-listeners
+            network-listener
+    http-service
+        access-log
+        virtual-server
+            http-access-log
+            property
+        property
+    thread-pools
+        thread-pool
+----
+
+The following example compares the commands for setting a listener port
+for Sun GlassFish Enterprise Server v3 and {productName} 7. Note
+that the configuration for Enterprise Server v3 also applies to all
+earlier Enterprise Server 2.x releases.
+
+* Command for Sun GlassFish Enterprise Server v3 and earlier:
++
+[source]
+----
+asadmin set server-config.http-service.http-listener.http-1.listenerport=4321
+----
+* Command for {productName} 7:
++
+[source]
+----
+asadmin set server-config.network-config.network-listeners.network-\
+listener.http-1.listenerport=4321
+----
+
+[[giprg]][[GSUPG00056]][[changes-to-asadmin-subcommands]]
+
+==== Changes to `asadmin` Subcommands
+
+To accommodate the move of HTTP Service into the new Network Service
+configuration, link:reference-manual/asadmin.html#GSRFM00263[`asadmin`] subcommands are changed as
+follows:
+
+* The link:reference-manual/create-ssl.html#GSRFM00058[`create-ssl`] subcommand has a new `--type`
+parameter value, `network-listener`.
+* The link:reference-manual/create-virtual-server.html#GSRFM00062[`create-virtual-server`] SUBcommand has a new
+parameter, `--networklisteners`.
+* The link:reference-manual/create-http-listener.html#GSRFM00030[`create-http-listener`] subcommand adds a
+`network-listener` element to the domain configuration. The syntax and
+options of this commands are unchanged.
+
+[[gipfo]][[GSUPG00057]][[remapping-of-http-service-attributes-and-properties]]
+
+==== Remapping of HTTP Service Attributes and Properties
+
+The following tables describe how attributes and properties in the HTTP
+Service configuration for {productName} 7 are remapped to
+attributes in the Network Service configuration for older product
+releases. If you use a configuration from a Sun GlassFish Enterprise
+Server v2 or v3 release, this remapping happens automatically and then
+discontinued elements are deleted.
+
+[[sthref5]][[gipfy]]
+
+Table 1-3 `com.sun.grizzly` Property Remapping
+
+[width="100%",cols="<33%,<26%,<41%",options="header",]
+|===
+|`com.sun.grizzly` Property |New Owning Element |New Attribute Name
+|`selector.timeout` |`transport` |`selector-poll-timeout-millis`
+|`displayConfiguration` |`transport` |`display-configuration`
+|`enableSnoop` |`transport` |`snoop-enabled`
+|`readTimeout` |`transport` |`read-timeout-millis`
+|`writeTimeout` |`transport` |`write-timeout-millis`
+|===
+
+
+[[sthref6]][[gipfn]]
+
+Table 1-4 `connection-pool` Attribute Remapping
+
+[width="100%",cols="<41%,<19%,<40%",options="header",]
+|===
+|`connection-pool` Attribute |New Owning Element |New Attribute Name
+|`queue-size-in-bytes` |`thread-pool` |`max-queue-size`
+
+|`max-pending-count` |`transport` |`max-connections-count`
+
+|`receive-buffer-size-in-` `bytes` |`http` |`request-body-buffer-size-`
+`bytes`
+
+|`send-buffer-size-in-bytes` |`http` |`send-buffer-size-bytes`
+|===
+
+
+[[sthref7]][[gipcv]]
+
+Table 1-5 `http-file-cache` Attribute Remapping
+
+[width="100%",cols="<50%,<17%,<33%",options="header",]
+|===
+|`http-file-cache` Attribute |New Owning Element |New Attribute Name
+|`file-caching-enabled` |`file-cache` |`enabled`
+|`max-age-in-seconds` |`file-cache` |`max-age-seconds`
+|`medium-file-space-in-bytes` |`file-cache` |`max-cache-size-bytes`
+|`max-files-count` |`file-cache` |`max-files-count`
+|`globally-enabled` |none |not supported
+|`medium-file-size-limit-in-bytes` |none |not supported
+|`small-file-size-limit-in-bytes` |none |not supported
+|`small-file-space-in-bytes` |none |not supported
+|`file-transmission-enabled` |none |not supported
+|`hash-init-size` |none |not supported
+|===
+
+
+[[sthref8]][[gipev]]
+
+Table 1-6 `http-listener` Attribute Remapping
+
+[width="100%",cols="<37%,<27%,<36%",options="header",]
+|===
+|`http-listener` Attribute |New Owning Element |New Attribute Name
+|`id` |`network-listener` |`name`
+|`address` |`network-listener` |`address`
+|`port` |`network-listener` |`port`
+|`enabled` |`network-listener` |`enabled`
+|`acceptor-threads` |`transport` |`acceptor-threads`
+|`security-enabled` |`protocol` |`security-enabled`
+|`default-virtual-server` |`http` |`default-virtual-server`
+|`server-name` |`http` |`server-name`
+|`redirect-port` |`http` |`redirect-port`
+|`xpowered-by` |`http` |`xpowered-by`
+|`external-port` |none |not supported
+|`family` |none |not supported
+|`blocking-enabled` |none |not supported
+|===
+
+
+[[sthref9]][[gipdo]]
+
+Table 1-7 `http-listener` Property Remapping
+
+[width="100%",cols="<43%,<15%,<42%",options="header",]
+|===
+|`http-listener` Property |New Owning Element |New Attribute Name
+|`maxKeepAliveRequests` |`http` |`max-connections`
+
+|`authPassthroughEnabled` |`http` |`auth-pass-through-enabled`
+
+|`compression` |`http` |`compression`
+
+|`compressableMimeType` |`http` |`compressable-mime-type`
+
+|`noCompressionUserAgents` |`http` |`no-compression-user-agents`
+
+|`compressionMinSize` |`http` |`compression-min-size-bytes`
+
+|`restrictedUserAgents` |`http` |`restricted-user-agents`
+
+|`cometSupport` |`http` |`comet-support-enabled`
+
+|`connectionUploadTimeout` |`http` |`connection-upload-timeout-`
+`millis`
+
+|`disableUploadTimeout` |`http` |`upload-timeout-enabled`
+
+|`chunkingDisabled` |`http` |`chunking-enabled`
+
+|`uriEncoding` |`http` |`uri-encoding`
+
+|`traceEnabled` |`http` |`trace-enabled`
+
+|`rcmSupport` |`http` |`rcm-support-enabled`
+
+|`jkEnabled` |`network-` `listener` |`jk-enabled`
+
+|`crlFile` |`ssl` |`crl-file`
+
+|`trustAlgorithm` |`ssl` |`trust-algorithm`
+
+|`trustMaxCertLength` |`ssl` |`trust-max-cert-length-bytes`
+
+|`tcpNoDelay` |`transport` |`tcp-no-delay`
+
+|`bufferSize` |`transport` |`buffer-size-bytes`
+
+|`use-nio-direct-bytebuffer` |`transport` |`byte-buffer-type`
+
+|`proxyHandler` |none |not supported
+
+|`proxiedProtocols` |none |not supported
+
+|`recycle-objects` |none |not supported
+
+|`reader-threads` |none |not supported
+
+|`acceptor-queue-length` |none |not supported
+
+|`reader-queue-length` |none |not supported
+
+|`connectionTimeout` |none |not supported
+
+|`monitoring-cache-enabled` |none |not supported
+
+|`monitoring-cache-refresh-in-` `millis` |none |not supported
+
+|`ssl-cache-entries` |none |not supported
+
+|`ssl3-session-timeout` |none |not supported
+
+|`ssl-session-timeout` |none |not supported
+|===
+
+
+[[sthref10]][[gipel]]
+
+Table 1-8 `http-protocol` Attribute Remapping
+
+[width="100%",cols="<34%,<33%,<33%",options="header",]
+|===
+|`http-protocol` Attribute |New Owning Element |New Attribute Name
+|`version` |`http` |`version`
+|`forced-response-type` |`http` |`forced-response-type`
+|`default-response-type` |`http` |`default-response-type`
+|`dns-lookup-enabled` |none |not supported
+|`ssl-enabled` |none |not supported
+|===
+
+
+[[sthref11]][[gipfa]]
+
+Table 1-9 `http-service` Property Remapping
+
+[width="100%",cols="<34%,<33%,<33%",options="header",]
+|===
+|`http-service` Property |New Owning Element |New Attribute or Property
+Name
+|`accessLoggingEnabled` |`http-service`, `virtual-server`
+|`access-logging-enabled` attribute
+
+|`ssl-cache-entries` |`http-service` |unchanged property
+
+|`ssl3-session-timeout` |`http-service` |unchanged property
+
+|`ssl-session-timeout` |`http-service` |unchanged property
+
+|`proxyHandler` |`http-service` |unchanged property
+
+|`connectionTimeout` |`http-service` |unchanged property
+
+|all other properties |none |not supported
+|===
+
+
+[[sthref12]][[gipea]]
+
+Table 1-10 `keep-alive` Attribute Remapping
+
+[width="100%",cols="<34%,<33%,<33%",options="header",]
+|===
+|`keep-alive` Attribute |New Owning Element |New Attribute Name
+|`max-connections` |`http` |`max-connections`
+|`timeout-in-seconds` |`http` |`timeout-seconds`
+|`thread-count` |none |not supported
+|===
+
+
+[[sthref13]][[gipdh]]
+
+Table 1-11 `request-processing` Attribute Remapping
+
+[width="100%",cols="<43%,<18%,<39%",options="header",]
+|===
+|`request-processing` Attribute |New Owning Element |New Attribute Name
+|`thread-count` |`thread-pool` |`max-thread-pool-size`
+|`initial-thread-count` |`thread-pool` |`min-thread-pool-size`
+|`header-buffer-length-in-bytes` |`http` |`header-buffer-length-bytes`
+|`request-timeout-in-seconds` |`http` |`request-timeout-seconds`
+|`thread-increment` |none |not supported
+|===
+
+
+[[sthref14]][[gipdv]]
+
+Table 1-12 `ssl` Attribute Changes
+
+[width="100%",cols="<34%,<22%,<44%",options="header",]
+|===
+|Previous Attribute or Property |Previous Owning Element |New `ssl`
+Attribute
+|none |none |`key-store`
+
+|none |none |`trust-store`
+
+|`crlFile` property |`http-listener` |`crl-file`
+
+|`trustAlgorithm` property |`http-listener` |`trust-algorithm`
+
+|`trustMaxCertLength` property |`http-listener`
+|`trust-max-cert-length-bytes`
+
+|all other `ssl` attributes |`ssl` |unchanged
+|===
+
+
+[[sthref15]][[gipcj]]
+
+Table 1-13 `thread-pool` Attribute Changes
+
+[width="100%",cols="<44%,<17%,<39%",options="header",]
+|===
+|Previous Attribute |Previous Owning Element |New `thread-pool`
+Attribute
+|none |none |`classname`
+
+|none |none |`max-queue-size`
+
+|`thread-pool-id` |`thread-pool` |`name`
+
+|`idle-thread-timeout-in-seconds` |`thread-pool`
+|`idle-thread-timeout-seconds`
+
+|`num-work-queues` |`thread-pool` |not supported
+
+|all other `thread-pool` attributes |`thread-pool` |unchanged
+|===
+
+
+[[sthref16]][[gipep]]
+
+Table 1-14 `virtual-server` Attribute Changes
+
+[width="100%",cols="<39%,<24%,<37%",options="header",]
+|===
+|Previous Attribute or Property |Previous Owning Element |New
+`virtual-server` Attribute
+|`http-listeners` attribute |`virtual-server` |`network-listeners`
+
+|`accessLoggingEnabled` property |`http-service`
+|`access-logging-enabled`
+
+|`sso-enabled` property |`virtual-server` |`sso-enabled`
+
+|`ssoCookieSecure` property |`virtual-server` |`sso-cookie-secure`
+
+|all other `virtual-server` attributes |`virtual-server` |unchanged
+
+|all other `virtual-server` properties |`virtual-server` |unchanged,
+still properties
+|===
+
+
+[[gipcg]][[GSUPG00058]][[new-network-service-elements-and-attributes]]
+
+==== New Network Service Elements and Attributes
+
+The following tables describe the Network Service elements and
+attributes that were introduced in Sun GlassFish Enterprise Server v3.
+For attributes and properties remapped from discontinued elements to new
+elements, see link:#gipfo[Remapping of HTTP Service Attributes and
+Properties].
+
+The new `file-cache` element has no new attributes. All of its
+attributes are remapped from the `http-file-cache` element. For details,
+see link:#gipcv[Table 1-5].
+
+[[sthref17]][[gipds]]
+
+Table 1-15 New `http` Attributes
+
+[width="100%",cols="<28%,<32%,<40%",options="header",]
+|===
+|Attribute |Default |Description
+|`adapter` |`com.sun.grizzly.tcp. StaticResourcesAdapter` |(Optional)
+Specifies the class name of the static resources adapter.
+
+|`max-post-size-bytes` |`2097152` |(Optional) Specifies the maximum size
+of `POST` actions.
+|===
+
+
+For remapped `http` attributes, see link:#gipfn[Table 1-4],
+link:#gipev[Table 1-6], link:#gipdo[Table 1-7], link:#gipel[Table 1-8],
+link:#gipea[Table 1-10], and link:#gipdh[Table 1-11].
+
+[[sthref18]][[gipey]]
+
+Table 1-16 New `network-listener` Attributes
+
+[width="100%",cols="<18%,<11%,<71%",options="header",]
+|===
+|Attribute |Default |Description
+|`protocol` |none |Specifies the `name` of the `protocol` associated
+with this `network-listener`. Although this attribute is required, a
+`protocol` is automatically created with the same `name` as the
+`network-listener` when you use `asadmin create-http-listener` to create
+a `network-listener`.
+
+|`thread-pool` |none |(Optional) Specifies the `name` of the
+`thread-pool` associated with this `network-listener`.
+
+|`transport` |none |Specifies the `name` of the `transport` associated
+with this `network-listener`. Although this attribute is required, the
+default `transport` is used when you use `asadmin create-http-listener`
+to create a `network-listener`.
+|===
+
+
+For remapped `network-listener` attributes, see link:#gipev[Table 1-6].
+
+[[sthref19]][[gipfg]]
+
+Table 1-17 New `port-unification` Attributes
+
+[width="100%",cols="<19%,<16%,<65%",options="header",]
+|===
+|Attribute |Default |Description
+|`name` |none |Specifies a unique name for the `port-unification`.
+
+|`classname` |none |Specifies the class name of the `port-unification`
+implementation.
+|===
+
+
+[[sthref20]][[gipdj]]
+
+Table 1-18 New `protocol` Attributes
+
+[width="100%",cols="<18%,<17%,<65%",options="header",]
+|===
+|Attribute |Default |Description
+|`name` |none |Specifies a unique name for the `protocol`.
+|===
+
+
+For remapped `protocol` attributes, see link:#gipev[Table 1-6].
+
+[[sthref21]][[gipcr]]
+
+Table 1-19 New `protocol-chain` Attributes
+
+[width="100%",cols="<19%,<17%,<64%",options="header",]
+|===
+|Attribute |Default |Description
+|`name` |none |Specifies a unique name for the `protocol-chain`.
+
+|`classname` |none |Specifies the class name of the `protocol-chain`
+implementation.
+
+|`type` |`STATELESS` |Specifies the type of protocol chain.
+|===
+
+
+[[sthref22]][[gipfq]]
+
+Table 1-20 New `protocol-chain-instance-handler` Attributes
+
+[width="100%",cols="<19%,<17%,<64%",options="header",]
+|===
+|Attribute |Default |Description
+|`name` |none |Specifies a unique name for the
+`protocol-chain-instance-handler`.
+
+|`classname` |none |Specifies the class name of the
+`protocol-chain-instance-handler` implementation.
+|===
+
+
+[[sthref23]][[gipeq]]
+
+Table 1-21 New `protocol-filter` Attributes
+
+[width="100%",cols="<19%,<17%,<64%",options="header",]
+|===
+|Attribute |Default |Description
+|`name` |none |Specifies a unique name for the `protocol-filter`.
+
+|`classname` |none |Specifies the class name of the `protocol-filter`
+implementation.
+|===
+
+
+[[sthref24]][[gipfd]]
+
+Table 1-22 New `protocol-finder` Attributes
+
+[width="100%",cols="<19%,<17%,<64%",options="header",]
+|===
+|Attribute |Default |Description
+|`name` |none |Specifies a unique name for the `protocol-finder`.
+
+|`classname` |none |Specifies the class name of the `protocol-finder`
+implementation.
+
+|`protocol` |none |Specifies the `name` of the `protocol` associated
+with this `protocol-finder`.
+|===
+
+
+[[sthref25]][[gipft]]
+
+Table 1-23 New `selection-key-handler` Attributes
+
+[width="100%",cols="<19%,<16%,<65%",options="header",]
+|===
+|Attribute |Default |Description
+|`name` |none |Specifies a unique name for the `selection-key-handler`.
+
+|`classname` |none |Specifies the class name of the
+`selection-key-handler` implementation.
+|===
+
+
+[[sthref26]][[gipfi]]
+
+Table 1-24 New `ssl` Attributes
+
+[width="100%",cols="<19%,<17%,<64%",options="header",]
+|===
+|Attribute |Default |Description
+|`key-store` |none |(Optional) Specifies a key store.
+|`trust-store` |none |(Optional) Specifies a trust store.
+|===
+
+
+For remapped `ssl` attributes, see link:#gipdv[Table 1-12].
+
+[[sthref27]][[gipcc]]
+
+Table 1-25 New `thread-pool` Attributes
+
+[width="100%",cols="<21%,<32%,<47%",options="header",]
+|===
+|Attribute |Default |Description
+|`classname` |`com.sun.grizzly.http.StatsThreadPool` |(Optional)
+Specifies the class name of the `thread-pool` implementation.
+
+|`max-queue-size` |`-1` |(Optional) Specifies the maximum number of
+messages that can be queued until threads are available to process them.
+A value of `-1` specifies no limit.
+|===
+
+
+For remapped `thread-pool` attributes, see link:#gipfn[Table 1-4],
+link:#gipdh[Table 1-11], and link:#gipcj[Table 1-13].
+
+[[sthref28]][[gipem]]
+
+Table 1-26 New `transport` Attributes
+
+[width="100%",cols="<35%,<27%,<38%",options="header",]
+|===
+|Attribute |Default |Description
+|`name` |none |Specifies a unique name for the `transport`.
+
+|`classname` |`com.sun.grizzly. TCPSelectorHandler` |(Optional)
+Specifies the class name of the `transport` implementation.
+
+|`selection-key-handler` |none |(Optional) Specifies the `name` of the
+`selection-key-handler` associated with this `transport`.
+
+|`idle-key-timeout-seconds` |`30` |(Optional) Specifies the idle key
+timeout.
+|===
+
+
+For remapped `transport` attributes, see link:#gipfy[Table 1-3],
+link:#gipfn[Table 1-4], link:#gipev[Table 1-6], and link:#gipdo[Table
+1-7].
+
+[[gktkt]][[GSUPG00038]][[nss-cryptographic-token-support]]
+
+=== NSS Cryptographic Token Support
+
+{productName} 7 does not support Network Security Services (NSS)
+cryptographic tokens. When upgrading to {productName} 7 from
+Enterprise Server v2.x, additional manual configuration steps must be
+performed. These steps are explained later in this guide, in
+link:upgrading-legacy-installation.html#gktnh[Upgrading Installations
+That Use NSS Cryptographic Tokens].
diff --git a/docs/upgrade-guide/src/main/asciidoc/upgrading-legacy-installation.adoc b/docs/upgrade-guide/src/main/asciidoc/upgrading-legacy-installation.adoc
new file mode 100644
index 0000000..8fb17e9
--- /dev/null
+++ b/docs/upgrade-guide/src/main/asciidoc/upgrading-legacy-installation.adoc
@@ -0,0 +1,1700 @@
+type=page
+status=published
+title=Upgrading an Installation of Application Server or {productName}
+prev=upgrade-compatibility-issues.html
+~~~~~~
+
+= Upgrading an Installation of Application Server or {productName}
+
+[[GSUPG00003]][[abmbq]]
+
+
+[[upgrading-an-installation-of-application-server-or-glassfish-server]]
+== 2 Upgrading an Installation of Application Server or {productName}
+
+[CAUTION]
+====
+This chapter is obsoleted and must be revided.
+====
+
+The Upgrade Tool that is bundled with {productName} 7 replicates
+the configuration of a previously installed server in the target
+installation. The Upgrade Tool assists in upgrading the configuration
+and applications from an earlier version of the Application Server or
+{productName} to {productName} 7.
+
+In addition to Upgrade Tool, there are three Update Center tools that
+can be used to perform an in-place upgrade to {productName} 7 from
+{productName} 3.1.1, 3.1, 3.0.1, and Enterprise Server v3. These
+three Update Center tools are:
+
+* Update Tool
+* Software Update Notifier
+* The `pkg` command-line utility
+
+Upgrade Tool and the three Update Center tools are explained later in
+this chapter.
+
+To view a list of the older versions from which you can upgrade, see
+link:#gjxkx[Supported Releases for Upgrade to {productName} 7].
+
+The following topics are addressed here:
+
+* link:#gaejc[Upgrade Overview]
+* link:#abmbr[Performing a Side-By-Side Upgrade With Upgrade Tool]
+* link:#gkthu[Performing an In-Place Upgrade With the Update Center
+Tools]
+* link:#gktnh[Upgrading Installations That Use NSS Cryptographic Tokens]
+* link:#gfybw[Upgrading Clusters and Node Agent Configurations]
+* link:#gkrfh[Correcting Potential Upgrade Problems]
+
+[[gaejc]][[GSUPG00039]][[upgrade-overview]]
+
+=== Upgrade Overview
+
+The subsections that follow provide information that you will need when
+you perform an upgrade.
+
+The following topics are addressed here:
+
+* link:#gkxum[Upgrade Paths]
+* link:#gdkiw[Upgrade Terminology]
+* link:#gktcb[Summary of Upgrade Tools and Procedures]
+* link:#gjxkx[Supported Releases for Upgrade to {productName} 7]
+* link:#gkufi[Upgrading From Version 8.x or Older Product Releases]
+* link:#gkxrp[Upgrading {productName} Inside a Closed Network]
+
+[[gkxum]][[GSUPG00059]][[upgrade-paths]]
+
+==== Upgrade Paths
+
+There are two general paths you can use when upgrading to {productName} 7:
+
+Side-by-Side::
+  A side-by-side upgrade means that the new {productName} release is
+  installed in a different directory than the release from which you are
+  upgrading. +
+  In this scenario, you perform the following steps:
+
+  1.  Perform a basic installation of {productName} 7 in a location
+  other than the one being used for the older product.
+  2.  Use Upgrade Tool to migrate the old configurations and
+  applications to the new {productName} 7 directories.
+  3.  Test the new {productName} installation to make sure everything
+  is working properly.
+  4.  When you are satisfied that the new installation works properly,
+  modify your production environment to use the new installation.
+
++
+The side-by-side upgrade path is typically used for live production
+  environments because it allows you to thoroughly test the new
+  {productName} installation before bringing it into production.
+
+In-Place::
+  An in-place upgrade means that the new {productName} release is
+  installed directly over and into the same directory as the previous
+  product release. The existing configuration is reused in the updated
+  installation. +
+In this scenario, you simply use Update Tool, the `pkg` utility, or
+  the Update Notifier in your old installation to overwrite the old
+  installation with the new {productName} 7 product. +
+  Performing an in-place upgrade is easier than performing a
+  side-by-side upgrade, but you lose the ability to switch back and
+  forth between the old and new installations. There is also no way to
+  revert an in-place upgrade back to the previous product version.
+  Because of these limitations, in-place upgrades are typically only
+  used by developers and for non-production {productName}
+  deployments. +
+  Note also that it is only possible to perform an in-place upgrade when
+  upgrading from {productName} 3.1.1, 3.1, 3.0.1, or v3. If you are
+  upgrading from product versions prior to 3x, you must perform a
+  side-by-side upgrade.
+
+For a more detailed overview, see link:#gktcb[Summary of Upgrade Tools
+and Procedures].
+
+[[gdkiw]][[GSUPG00060]][[upgrade-terminology]]
+
+==== Upgrade Terminology
+
+The following are important terms related to the upgrade process.
+
+Source Domain Directory::
+  The directory of the server domain from which you are upgrading to the
+  new version (for example, `c:\glassfish\domains\domain1`).
+Target Root Domain's Directory::
+  The directory where domains are created on the server to which you are
+  upgrading (for example, `c:\glassfish7\glassfish\domains`).
+Master Password::
+  The SSL certificate database password used in operations such as
+  {productName} startup. This term refers to the master password of
+  the installation from which you want to upgrade. You need to specify
+  this password if you have changed it from the default value of
+  `changeit`.
+
+[[gktcb]][[GSUPG00061]][[summary-of-upgrade-tools-and-procedures]]
+
+==== Summary of Upgrade Tools and Procedures
+
+There are several tools you can use to upgrade from an earlier {productName} or Enterprise Server installation to {productName} 7. The
+general procedures for upgrading to {productName} 7 vary depending
+on which tool you use and the product version from which you are upgrading.
+
+The following topics are addressed here:
+
+* link:#gktdx[Summary of Tools for Performing an Upgrade]
+* link:#gktdz[Summary of Procedure for Upgrading With Upgrade Tool]
+* link:#gktcl[Summary of Procedure for Upgrading With Update Tool]
+* link:#gkuef[Summary of Procedure for Upgrading With the Software Update Notifier]
+* link:#gktnb[Summary of Procedure for Upgrading With the `pkg` Utility]
+
+[[gktdx]][[GSUPG00045]][[summary-of-tools-for-performing-an-upgrade]]
+
+===== Summary of Tools for Performing an Upgrade
+
+There are several tools you can use to perform an upgrade to {productName} 7 are described below.
+
+* link:#gktcz[Upgrade Tool]
+* link:#gktha[Update Tool and the `pkg` Utility]
+* link:#gkuff[Software Update Notifier]
+
+[[gktcz]][[GSUPG00004]][[upgrade-tool]]
+
+Upgrade Tool
+
+The {productName} Upgrade Tool is tended solely for performing
+side-by-side upgrades from any compatible older product version to
+{productName} 7.
+
+Upgrade Tool provides a number of features that aid in the migration of
+older configurations and applications to a new {productName} 7
+installation. These features are described in more detail in
+link:#gdkix[Upgrade Tool Functionality].
+
+In {productName} 7 Upgrade Tool is installed in the
+as-install``/bin`` directory.
+
+[NOTE]
+====
+Upgrade Tool is the only tool you can use when upgrading to {productName} 7 from product versions prior to {productName} 3.0.1 or
+Enterprise Server v3.
+====
+
+See link:#gktdz[Summary of Procedure for Upgrading With Upgrade Tool]
+for an overview of the general procedure for performing an upgrade with
+Upgrade Tool.
+
+[[gktha]][[GSUPG00005]][[update-tool-and-the-pkg-utility]]
+
+Update Tool and the `pkg` Utility
+
+The {productName} Update Tool is a graphical utility that is
+typically used for the day-to-day maintenance of {productName}
+components and additional features. For example, Update Tool can be used
+to update {productName} components or install additional features
+such as OSGi Admin Console.
+
+The command-line counterpart to Update Tool is the `pkg` utility. While
+the `pkg` utility does not provide exactly the same set of features as
+Update Tool, for the purposes of upgrading to {productName} 7, the
+`pkg` utility and Update Tool feature sets are almost identical.
+
+In addition to day-to-day maintenance tasks, Update Tool and the `pkg`
+utility can be used to perform an in-place upgrade of an entire
+{productName} 3.0.1 or Enterprise Server v3 installation to the
+{productName} 7 or later release.
+
+In {productName} 7 Update Tool is installed in the
+as-install-parent``/bin`` directory.
+
+[NOTE]
+====
+It is not possible to use Update Tool to upgrade from {productName}
+or Enterprise Server versions prior to 3x. For these older versions, you
+must use the Upgrade Tool, described in link:#gktcz[Upgrade Tool].
+====
+
+See link:#gktcl[Summary of Procedure for Upgrading With Update Tool] for
+an overview of the general procedure for performing an upgrade with
+Update Tool. For more information about Update Tool in general, see
+"link:administration-guide.html#GSADG00701[Update Tool]"
+in {productName} Administration Guide.
+
+[[gkuff]][[GSUPG00006]][[software-update-notifier]]
+
+Software Update Notifier
+
+The {productName} Software Update Notifier is similar to Update Tool
+and the `pkg` utility in that it enables you to perform an in-place
+upgrade from {productName} 3.1.1, 3.1, 3.0.1, or Enterprise Server
+v3. As with Update Tool and the `pkg` utility, you cannot use the
+Software Update tool to upgrade from product releases prior 3.0.1 and
+v3.
+
+The Software Update Notifier is distributed as a configuration option
+during {productName} 7, 3.0.1, and Enterprise Server v3
+installation. If installed and enabled, the Software Update Notifier
+monitors your installation and pops up a notification balloon when
+updates or upgrades are available for your product.
+
+See link:#gkuef[Summary of Procedure for Upgrading With the Software
+Update Notifier] for an overview of the general procedure for performing
+an upgrade with the Software Update Notifier. For more information about
+the Update Notifier, refer to the Update Tool online help.
+
+[[gktdz]][[GSUPG00046]][[summary-of-procedure-for-upgrading-with-upgrade-tool]]
+
+===== Summary of Procedure for Upgrading With Upgrade Tool
+
+The general procedure for using Upgrade Tool to perform an upgrade to
+{productName} 7 from any compatible older version of {productName} or Enterprise Server comprises the following steps:
+
+1. Download {productName} 7 and perform a Standard Installation,
+as described in "link:installation-guide.html#GSING00007[
+To Install {productName} Using the Self-Extracting File]"
+in {productName} Installation Guide.
+2. Copy any custom or third-party libraries from the older installation
+to their corresponding locations in the new {productName} 7
+installation directories. Note that you should only copy custom or
+third-party libraries here. Do not copy an libraries from the actual
+domain that will be upgraded.
+3. Run the `asupgrade` command from the new {productName} 7
+as-install``/bin`` directory.
+4. Start the new {productName} 7 DAS with the
+`asadmin start-domain` subcommand.
+
+This procedure is described in more detail in link:#abmbr[Performing a
+Side-By-Side Upgrade With Upgrade Tool].
+
+[[gktcl]][[GSUPG00047]][[summary-of-procedure-for-upgrading-with-update-tool]]
+
+===== Summary of Procedure for Upgrading With Update Tool
+
+The general procedure for using Update Tool to perform an upgrade to
+{productName} 7 from {productName} 3.0.1 or Enterprise Server v3
+comprises the following steps:
+
+1. Manually stop all server instances and the domain.
+2. Launch Update Tool by using the as-install-parent`/bin/updatetool`
+command in the older product directory.
+3. In Update Tool, select and install the latest {productName}
+product release. This updates your server to the 7 release.
+4. Upgrade the domain by running the `asadmin start-domain --upgrade`
+subcommand. This performs the upgrade and then shuts down the DAS.
+5. Restart the DAS normally with the with the `asadmin start-domain`
+subcommand.
+
+This procedure is described in more detail in link:#gktjf[To Upgrade
+Using the Update Tool GUI].
+
+[[gkuef]][[GSUPG00048]][[summary-of-procedure-for-upgrading-with-the-software-update-notifier]]
+
+===== Summary of Procedure for Upgrading With the Software Update Notifier
+
+The general procedure for using the Software Update Notifier to perform
+an upgrade to {productName} 7 from {productName}3.0.1 or
+Enterprise Server v3 comprises the following steps:
+
+1. Wait for the Software Update Notifier to pop up a notification
+balloon informing you that updates are available.
+2. Click the balloon prompt to launch the Software Update GUI.
+3. Manually stop all server instances and the domain.
+4. Use the Software Update GUI to perform the upgrade. This updates
+your server to the 7 release.
+5. Upgrade the domain by running the `asadmin start-domain --upgrade`
+subcommand. This performs the upgrade and then shuts down the DAS.
+6. Restart the upgraded DAS normally with the with the
+`asadmin start-domain` subcommand.
+
+This procedure is described in more detail in link:#gkuhu[To Upgrade
+Using the Software Update Notifier].
+
+[[gktnb]][[GSUPG00049]][[summary-of-procedure-for-upgrading-with-the-pkg-utility]]
+
+===== Summary of Procedure for Upgrading With the `pkg` Utility
+
+The general procedure for using the `pkg` utility to perform an upgrade
+to {productName} 7 from {productName}3.0.1 or Enterprise Server
+v3 comprises the following steps:
+
+1. Manually stop all server instances and the domain.
+2. Run the as-install-parent`/bin/pkg` command with the desired options
+in the older product directory. This updates your server to the 7
+release.
+3. Upgrade the domain by running the `asadmin start-domain --upgrade`
+subcommand. This performs the upgrade and then shuts down the DAS.
+4. Restart the upgraded DAS normally with the with the
+`asadmin start-domain` subcommand.
+
+This procedure is described in more detail in link:#gktks[To Upgrade
+From the Command Line Using the `pkg` Utility].
+
+[[gjxkx]][[GSUPG00062]][[supported-releases-for-upgrade-to-glassfish-server-7]]
+
+==== Supported Releases for Upgrade to {productName} 7
+
+Upgrades to {productName} 7 are supported from the following
+earlier {productName} product releases:
+
+* Sun GlassFish Enterprise Server v2.1.1
+* Sun GlassFish Enterprise Server v3
+* {productName} 3.0.1
+* {productName} 3.1
+* {productName} 3.1.1
+
+[[gkufi]][[GSUPG00063]][[upgrading-from-version-8.x-or-older-product-releases]]
+
+==== Upgrading From Version 8.x or Older Product Releases
+
+It is not possible to upgrade to {productName} 7 directly from Sun
+GlassFish Enterprise Server 8.x or older product releases.
+
+To upgrade from a product release that is older than any of those listed
+in link:#gjxkx[Supported Releases for Upgrade to {productName} 7],
+you must first upgrade your older product release to one of the releases
+that are supported for upgrade to {productName} 7.
+
+For example, to upgrade from any Enterprise Server 8.x release, you
+first need to upgrade that older release to Enterprise Server 2.1.1.
+That is, your upgrade path would be as follows:
+
+Enterprise Server 8.x⇒Enterprise Server 2.1.1⇒{productName} 7
+
+Sun GlassFish Enterprise Server 2.1.1 is available for download from the
+http://glassfish.java.net/public/downloadsindex.html[GlassFish Community
+Downloads] (`http://glassfish.java.net/public/downloadsindex.html`)
+page. Instructions for upgrading to Enterprise Server 2.1.1 are provided
+in http://download.oracle.com/docs/cd/E19879-01/821-0180/index.html[Sun
+GlassFish Enterprise Server 2.1.1 Upgrade Guide]
+(`http://docs.oracle.com/cd/E19879-01/821-0180/index.html`).
+
+After upgrading your older Enterprise Server installation to Enterprise
+Server 2.1.1, you can proceed normally with the instructions in this
+guide to complete the upgrade to {productName} 7.
+
+[[gkxrp]][[GSUPG00065]][[upgrading-glassfish-server-inside-a-closed-network]]
+
+==== Upgrading {productName} Inside a Closed Network
+
+For instructions on upgrading a {productName} installation in an
+environment where Internet access is not available, see
+"link:administration-guide.html#GSADG00575[
+Extending and Updating {productName} Inside a Closed Network]"
+in {productName} Administration Guide.
+
+[[abmbr]][[GSUPG00040]][[performing-a-side-by-side-upgrade-with-upgrade-tool]]
+
+=== Performing a Side-By-Side Upgrade With Upgrade Tool
+
+This section explains how to use Upgrade Tool to perform a side-by-side
+upgrade to {productName} 7 from any compatible older product release.
+
+The following topics are addressed here:
+
+* link:#gktgx[Upgrade Tool Summary]
+* link:#gdkix[Upgrade Tool Functionality]
+* link:#gktjn[To Upgrade From the Command Line Using Upgrade Tool]
+* link:#gaejn[To Upgrade Using the Upgrade Tool Wizard]
+
+[[gktgx]][[GSUPG00066]][[upgrade-tool-summary]]
+
+==== Upgrade Tool Summary
+
+The Upgrade Tool upgrades your domain configurations and deployed
+applications. When you use the Upgrade Tool, the source server and the
+target server are normally installed on the same machine, but under
+different install locations. Both server file systems must be accessible
+from the system on which you perform the upgrade.
+
+To perform the upgrade, the user who runs the upgrade needs to have read
+permissions for the source and target directories and write permission
+for the target directory.
+
+You can perform an upgrade using Upgrade Tool in the following ways:
+
+* link:#gktjn[To Upgrade From the Command Line Using Upgrade Tool]
+* link:#gaejn[To Upgrade Using the Upgrade Tool Wizard]
+
+[[gdkix]][[GSUPG00067]][[upgrade-tool-functionality]]
+
+==== Upgrade Tool Functionality
+
+The Upgrade Tool migrates the configurations and deployed applications
+from an earlier version of Sun Java System Application Server or Sun
+GlassFishEnterprise Server to the current version. Database migrations
+or conversions are not part of this upgrade process.
+
+Briefly, the Upgrade Tool performs the following steps:
+
+* Copies the older source domain directory to the new target `domains` directory.
+* Calls the `asadmin start-domain --upgrade` command to migrate the
+source configurations to the new target {productName} installation.
+* Sends all `asadmin` command output to the screen and to the
+`upgrade.log` file, and sends all server output to the `server.log` file.
+
+Additional Upgrade Tool functions are explained in the following sections:
+
+* link:#gebrv[Migration of Deployed Applications]
+* link:#gebqm[Upgrade of Clusters]
+* link:#gebvn[Upgrade Verification]
+
+[[gebrv]][[GSUPG00050]][[migration-of-deployed-applications]]
+
+===== Migration of Deployed Applications
+
+Application archives (EAR files) and component archives (JAR, WAR, and
+RAR files) that are deployed in the source server do not require any
+modification to run on {productName} 7.
+Components that may have incompatibilities are deployed on {productName} 7 with the `compatibility` property set to `v2` and will run
+without change on {productName} 7. You may, however, want to
+consider modifying the applications to conform to Jakarta EE 6 requirements.
+
+The Jakarta EE 6 platform specification imposes stricter requirements than
+Jakarta EE 5 did on which JAR files can be visible to various modules
+within an EAR file. In particular, application clients must not have
+access to EJB JAR files or other JAR files in the EAR file unless they
+use a `Class-Path` header in the manifest file, or unless references use
+the standard Java SE mechanisms (extensions, for example), or use the
+Jakarta EE `library-directory` mechanism. Setting the `library-directory`
+property to `v2` removes these Jakarta EE 6 restrictions.
+
+Applications and components that are deployed in the source server are
+deployed on the target server during the upgrade. Applications that do
+not deploy successfully on the target server must be deployed manually
+on the target server by the user.
+
+If a domain contains information about a deployed application and the
+installed application components do not agree with the configuration
+information, the configuration is migrated unchanged, without any
+attempt to reconfigure the incorrect configurations.
+
+[[gebqm]][[GSUPG00051]][[upgrade-of-clusters]]
+
+===== Upgrade of Clusters
+
+When upgrading from a clustered configuration, the older cluster
+information is retained in a new `domain.xml` file in the {productName} 7 installation directories. However, it is still necessary to
+manually re-create the server instances that are contained in the
+clusters. This procedure is explained in link:#gfybw[Upgrading Clusters
+and Node Agent Configurations].
+
+[[gebvn]][[GSUPG00052]][[upgrade-verification]]
+
+===== Upgrade Verification
+
+An upgrade log records the upgrade activity. The upgrade log file is
+named `upgrade.log` and is created in the working directory from which
+the Upgrade Tool is run. Additional information is recorded in the
+server log of the upgraded domain.
+
+You can also use the `asadmin version` subcommand after starting the
+upgraded domain to verify the new {productName} product version; for example:
+
+[source]
+----
+asadmin> version
+Version = Eclipse GlassFish 7.0.0 (build 42)
+Command version executed successfully.
+----
+
+[[gktjn]][[GSUPG00010]][[to-upgrade-from-the-command-line-using-upgrade-tool]]
+
+==== To Upgrade From the Command Line Using Upgrade Tool
+
+This procedure explains how to use the Upgrade Tool command line to
+upgrade to {productName} 7 from any supported older product
+release. See link:#gjxkx[Supported Releases for Upgrade to {productName} 7] for a list of supported releases.
+
+[[sthref29]]
+
+Before You Begin
+
+Ensure that the domains on the source server from which you are
+upgrading are stopped before proceeding.
+
+1. Download and install {productName} 7 using the Typical
+Installation path. +
+See "link:installation-guide.html#GSING00025[
+Installing {productName} From a Self-Extracting Bundle]"
+in {productName} Installation Guide for instructions.
+
+2. Copy any custom or third-party libraries that may be located in the
+source as-install``/lib`` directory to the target as-install``/lib``
+directory. +
+Custom and third-party libraries should normally be located in the
+domain-dir``/lib`` directory. This step is only necessary for custom or
+third-party libraries that may be located in the nonstandard
+as-install``/lib`` directory.
+
+3. Start Upgrade Tool from a command shell for your operating environment.
++
+[NOTE]
+====
+Use the Upgrade Tool that is located in the target {productName} 7
+installation, not the older source installation.
+====
++
+* On UNIX systems
++
+[source]
+----
+as-install/bin/asupgrade -c
+----
+* On Windows systems
++
+[source]
+----
+as-install\bin\asupgrade.bat -c
+----
+The `-c` option starts Upgrade Tool in console mode. If `-c` is omitted,
+Upgrade Tool starts in GUI mode, which is described in link:#gaejn[To
+Upgrade Using the Upgrade Tool Wizard].
++
+If you start Upgrade Tool with only the `-c` option, the tool enters
+interactive CLI mode in which you are asked to supply the needed
+options. If you prefer to enter all options directly from the command
+line, you can use the following syntax:
++
+[source]
+----
+asupgrade
+[-c|--console]
+[-V|--version]
+[-h|--help]
+[-s|--source source-domain-directory]
+[-t|--target target-domain-directory]
+[-f|--passwordfile password-file]
+----
+
++
+Explanations of these options are provided at the end of this procedure.
+
+4. Follow the prompts to perform the upgrade. +
+If a name used for an older domain that you are upgrading already exists
+in the new target domains directory, Upgrade Tool will ask if you want
+to rename the new directory so the old directory can be copied to the
+new installation.
+* If you type `y` in response, the directory is renamed
+domain-name`.original`. If that name already exists, the directory will
+be renamed domain-name`.orginal.0`. For example, if the old domain
+directory is named `domain1`, it will be renamed `domain1.original`, or
+if that name already exists, `domain1.original.0`.
+* If you type `n`, you are prompted to specify a different directory
+name or quit.
++
+The domain is upgraded and the results are output to the console.
+
+5. Review the console output to verify that the upgrade proceeded correctly. +
+This output is also written to the `output.log` file for later review. +
+If there are any `SEVERE` or `WARNING` messages in the `server.log`
+file, the upgrade output will say
+`"Possible error encountered during upgrade. See server log after upgrade process completes."`
+
+6. Start the upgraded {productName} 7 domain.
++
+[source]
+----
+asadmin start-domain domain-name
+----
+Log in to the Administration Console with the user name and password you
+used in the older server.
++
+[NOTE]
+====
+{productName} 7 does not support NSS authentication. If you are
+upgrading from a Enterprise Profile configuration that uses NSS
+authentication, follow the procedure in link:#gktnh[Upgrading
+Installations That Use NSS Cryptographic Tokens].
+====
+
+7. If you are upgrading a clustered configuration or a configuration in
+which node agents were used, proceed with the instructions in
+link:#gfybw[Upgrading Clusters and Node Agent Configurations].
+
+[[GSUPG00007]][[gktiu]]
+Example 2-1 Using the `asupgrade` Command Line
+
+The following example shows how to use the `asupgrade` command-line
+utility in non-interactive mode to upgrade an existing Sun GlassFish
+Enterprise Server v2.1 installation to {productName} 7. The
+following command should be entered on a single line.
+
+[source]
+----
+asupgrade -c -s /home/glassfish/domains/domain1 -f /root/mypassword
+-t /home/glassfish7/glassfish/domains
+----
+
+[[sthref30]]
+
+asupgrade Command-Line Options
+
+Listed below are the `asupgrade` command-line options, including the
+short form, the long form, and a description of each option.
+
+[width="100%",cols="<26%,<26%,<48%",options="header",]
+|===
+|Short Form |Long Form |Description
+
+|`-c`
+|`--console`
+|Launches the upgrade command line utility.
+
+|`-V`
+|`--version`
+|The version of the {productName}.
+
+|`-h`
+|`--help`
+|Displays the arguments for launching the upgrade utility.
+
+|`-s` source-domain-directory
+|`--source` source-domain-directory
+|The domain-dir directory in the source (older) server installation.
+
+|`-t` target-domains-directory
+|`--target` target-domains-directory
+|The desired domain-root-dir directory in the {productName} 7 target
+installation; default is as-install``/domains``
+
+|`-f` password-file
+|`--passwordfile` password-file
+|The file containing the administration password and the master password.
+|===
+
+[[sthref31]]
+
+Next Steps
+
+* Browse to the URL `http://localhost:8080` to view the
+domain-dir``/docroot/index.html`` file. This file is brought over during
+the upgrade. You may want to copy the default {productName} 7 file
+from the `domain1.original/docroot` directory and customize it for your
+{productName} 7 installation.
+* To register your installation of {productName} from the
+Administration Console, select the Registration item from the Common
+Tasks page. For step-by-step instructions on the registration process,
+click the Help button on the Administration Console.
+
+[[gaejn]][[GSUPG00011]][[to-upgrade-using-the-upgrade-tool-wizard]]
+
+==== To Upgrade Using the Upgrade Tool Wizard
+
+This procedure explains how to use the graphical Upgrade Tool Wizard to
+upgrade to {productName} 7 from any supported older product
+release. See link:#gjxkx[Supported Releases for Upgrade to {productName} 7] for a list of supported releases.
+
+[[sthref32]]
+
+Before You Begin
+
+Ensure that the source domains from which you are upgrading are stopped
+before proceeding.
+
+1. Download and install {productName} 7 using the Typical Installation path. +
+See "link:installation-guide.html#GSING00025[
+Installing {productName} From a Self-Extracting Bundle]"
+in {productName} Installation Guide for instructions.
+
+2. Copy any custom or third-party libraries that may be located in the
+source as-install``/lib`` directory to the target as-install``/lib`` directory. +
+Custom and third-party libraries should normally be located in the
+domain-dir``/lib`` directory. This step is only necessary for custom or
+third-party libraries that may be located in the nonstandard
+as-install``/lib`` directory.
+
+3. Start the Upgrade Tool wizard from a command shell for your
+operating environment.
++
+[NOTE]
+====
+Use the Upgrade Tool that is located in the target {productName} 7
+installation, not the older source installation.
+====
++
+* On UNIX systems
++
+[source]
+----
+as-install/bin/asupgrade
+----
+* On Windows systems
++
+[source]
+----
+as-install\bin\asupgrade.bat
+----
+
++
+[TIP]
+====
+You may find it faster to run the `asupgrade` command with the `s`
+source-domain-directory option, which will prefill the Source Domain
+Directory field in the next step.
+====
+
+4. In the Source Domain Directory field, type the domain directory of
+the existing installation from which to import the configuration, or
+click Browse. +
+For example, you might type `c:\glassfish\domains\domain1`.
+
+5. In the Target Domains Root Directory field, type the location of the
+{productName} 7 installation to which to transfer the
+configuration, or click Browse. +
+The default is the full path name of the `domains` directory of your
+{productName} 7 installation (for example,
+`c:\glassfish7\glassfish\domains`).
+
+6. Provide the master password of the source application server. +
+The domain will be upgraded using these credentials. If you do not
+specify a password here, the default master password is used.
++
+[NOTE]
+====
+{productName} 7 does not support NSS authentication. If you are
+upgrading from a Enterprise Profile configuration that uses NSS
+authentication, follow the procedure in link:#gktnh[Upgrading
+Installations That Use NSS Cryptographic Tokens].
+====
+
+7. Click Next. +
+If a name used for an older domain that you are upgrading already exists
+in the new target domains directory, Upgrade Tool will ask if you want
+to rename the new directory so the old directory can be copied to the
+new installation.
+* If you click OK in response, the directory is renamed
+domain-name``.original``. If that name already exists, the directory will
+be renamed domain-name``.orginal.0``. For example, if the old domain
+directory is named `domain1`, it will be renamed `domain1.original`, or
+if that name already exists, `domain1.original.0`.
+* If you click No, you brought back to the main screen.
+
++
+The domain is upgraded and the Upgrade Results page displays the status
+of the upgrade operation.
+
+8. Review the output in the Upgrade Results page to verify that the
+upgrade proceeded correctly. +
+If there are any `SEVERE` or `WARNING` messages in the `server.log`
+file, the upgrade output will say
+`"Possible error encountered during upgrade. See server log after upgrade process completes."`
+
+9. Click Finish to exit the Upgrade Tool when the upgrade process is
+complete.
+
+10. Start the upgraded {productName} 7 domain.
++
+[source]
+----
+asadmin start-domain domain-name
+----
+
+11. If you are upgrading a clustered configuration or a configuration in
+which node agents were used, proceed with the instructions in
+link:#gfybw[Upgrading Clusters and Node Agent Configurations].
+
+[[sthref33]]
+
+Next Steps
+
+* Browse to the URL `http://localhost:8080` to view the
+domain-dir`/docroot/index.html` file. This file is brought over during
+the upgrade. You may want to copy the default {productName} 7 file
+from the `domain1.original/docroot` directory and customize it for your
+{productName} 7 installation.
+* To register your installation of {productName} from the
+Administration Console, select the Registration item from the Common
+Tasks page. For step-by-step instructions on the registration process,
+click the Help button on the Administration Console.
+
+[[gkthu]][[GSUPG00041]][[performing-an-in-place-upgrade-with-the-update-center-tools]]
+
+=== Performing an In-Place Upgrade With the Update Center Tools
+
+This section explains how to use the three Update Center tools to
+perform an in-place upgrade to {productName} 7 from {productName} 3.0.1 or Enterprise Server v3. Specifically, the three tools
+explained in this section are:
+
+* Update Tool
+* Software Update Notifier
+* The `pkg` command-line utility
+
+[NOTE]
+====
+{productName} 3.0.1 and Enterprise Server v3 are the only product
+releases that can be upgraded to the 7 release with the Update Center
+tools. If you are upgrading from any other product release, you must use
+Upgrade Tool, as described in link:#abmbr[Performing a Side-By-Side
+Upgrade With Upgrade Tool].
+====
+
+The following topics are addressed here:
+
+* link:#gkthx[Update Center Tool Procedures]
+* link:#gktjf[To Upgrade Using the Update Tool GUI]
+* link:#gkuhu[To Upgrade Using the Software Update Notifier]
+* link:#gktks[To Upgrade From the Command Line Using the `pkg` Utility]
+
+[[gkthx]][[GSUPG00068]][[update-center-tool-procedures]]
+
+==== Update Center Tool Procedures
+
+Unlike when using Upgrade Tool, when you use the Update Tool, the
+Software Update Notifier, or the `pkg` utility to perform a {productName} 7 upgrade, the older source server directories are overwritten
+with the new target server directories, and the existing configuration
+and deployed applications are reused in the updated installation.
+
+To perform the upgrade, the user who runs the upgrade needs to have read
+and writer permissions for the server installation directories.
+
+You can perform an upgrade using the Update Center tools in the
+following ways:
+
+* link:#gktjf[To Upgrade Using the Update Tool GUI]
+* link:#gkuhu[To Upgrade Using the Software Update Notifier]
+* link:#gktks[To Upgrade From the Command Line Using the `pkg` Utility]
+
+[[gktjf]][[GSUPG00012]][[to-upgrade-using-the-update-tool-gui]]
+
+==== To Upgrade Using the Update Tool GUI
+
+This procedure explains how to use the graphical Update Tool to perform
+an in-place upgrade to {productName} 7 from {productName} 3.0.1
+or Enterprise Server v3. Note that it is not possible to use this
+procedure with any other product releases.
+
+1. Ensure that all domains on the source server from which you are
+upgrading are stopped before proceeding.
+
+2. In a command shell for your operating environment, navigate to the
+as-install-parent``/bin`` directory.
+
+3. Use the `updatetool` command to start the Update Tool GUI. +
+The Update Tool main window is displayed.
+
+4. Click on Available Updates.
+
+5. Select all items in the Available Updates list, and then click the
+Install button in the toolbar at the top of the Update Tool main window. +
+When the upgrade is complete, exit Update Tool.
+
+6. Upgrade the domain by starting the DAS with the `--upgrade` option.
++
+[source]
+----
+as-install/bin/asadmin start-domain --upgrade domain-name
+----
+This upgrades the domain and then shuts down the DAS.
+
+7. Start the DAS normally.
++
+[source]
+----
+as-install/bin/asadmin start-domain domain-name
+----
+
+[[sthref34]]
+
+Next Steps
+
+* Browse to the URL `http://localhost:8080` to view the
+domain-dir``/docroot/index.html`` file. This file is brought over during
+the upgrade. You may want to copy the default {productName} 7 file
+from the `domain1.original/docroot` directory and customize it for your
+{productName} 7 installation.
+* To register your installation of {productName} from the
+Administration Console, select the Registration item from the Common
+Tasks page. For step-by-step instructions on the registration process,
+click the Help button on the Administration Console.
+
+[[gkuhu]][[GSUPG00013]][[to-upgrade-using-the-software-update-notifier]]
+
+==== To Upgrade Using the Software Update Notifier
+
+This procedure explains how to use the Software Update Notifier to
+perform an in-place upgrade to {productName} 7 from {productName} 3.0.1 or Enterprise Server v3. Note that it is not possible to
+use this procedure with any other product releases.
+
+[[sthref35]]
+
+Before You Begin
+
+The Software Update Notifier must be installed and enabled on the
+{productName} or Enterprise Server release from which you are
+upgrading. Software Update Notifier installation is typically performed
+during the initial {productName} or Enterprise Server installation.
+The Software Update Notifier can also be installed later using Update
+Tool. For more information about the Update Notifier, refer to the
+Update Tool online help.
+
+1. Wait for the Software Update Notifier to pop up a notification
+balloon informing you that updates are available.
+
+2. Click the balloon prompt to open the Software Update GUI.
+
+3. Manually stop all domains and server instances.
+
+4. Using the Software Update GUI, select the items you want to upgrade
+and start the installation. +
+Ensure that {productName} 7 is one of the items you select for
+upgrade. This upgrades the server and selected components to the latest
+available versions.
+
+5. Upgrade the domain by starting the DAS with the `--upgrade` option.
++
+[source]
+----
+as-install/bin/asadmin start-domain --upgrade domain-name
+----
+This upgrades the domain and then shuts down the DAS.
+
+6. Start the DAS normally.
++
+[source]
+----
+as-install/bin/asadmin start-domain domain-name
+----
+
+[[sthref36]]
+
+Next Steps
+
+* Browse to the URL `http://localhost:8080` to view the
+domain-dir`/docroot/index.html` file. This file is brought over during
+the upgrade. You may want to copy the default {productName} 7 file
+from the `domain1.original/docroot` directory and customize it for your
+{productName} 7 installation.
+* To register your installation of {productName} from the
+Administration Console, select the Registration item from the Common
+Tasks page. For step-by-step instructions on the registration process,
+click the Help button on the Administration Console.
+
+[[gktks]][[GSUPG00014]][[to-upgrade-from-the-command-line-using-the-pkg-utility]]
+
+==== To Upgrade From the Command Line Using the `pkg` Utility
+
+This procedure explains how to use the `pkg` utility to perform an
+in-place upgrade to {productName} 7 from {productName} 3.0.1 or
+Enterprise Server v3. Note that it is not possible to use this procedure
+with any other product releases.
+
+1. Ensure that all domains on the source server from which you are
+upgrading are stopped before proceeding.
+
+2. In a command shell for your operating environment, navigate to the
+as-install-parent``/bin`` directory.
+
+3. Use the `pkg image-update` command to update your entire {productName} 3.0.1 or Enterprise Server v3 installation to {productName} 7.
++
+[source]
+----
+./pkg image-update
+----
+This upgrades the server components to the latest available versions.
+
+4. Upgrade the domain by starting the DAS with the `--upgrade` option.
++
+[source]
+----
+as-install/bin/asadmin start-domain --upgrade domain-name
+----
+This upgrades the domain and then shuts down the DAS.
+
+5. Start the DAS normally.
++
+[source]
+----
+as-install/bin/asadmin start-domain domain-name
+----
+
+[[sthref37]]
+
+Next Steps
+
+* Browse to the URL `http://localhost:8080` to view the
+domain-dir`/docroot/index.html` file. This file is brought over during
+the upgrade. You may want to copy the default {productName} 7 file
+from the `domain1.original/docroot` directory and customize it for your
+{productName} 7 installation.
+* To register your installation of {productName} from the
+Administration Console, select the Registration item from the Common
+Tasks page. For step-by-step instructions on the registration process,
+click the Help button on the Administration Console.
+
+[[gktnh]][[GSUPG00042]][[upgrading-installations-that-use-nss-cryptographic-tokens]]
+
+=== Upgrading Installations That Use NSS Cryptographic Tokens
+
+{productName} v2.x EE (Enterprise Edition) uses Network Security
+Services (NSS) for cryptographic software tokens. {productName} 7
+does not support NSS, so when performing an upgrade from v2.x EE to 7
+additional manual configuration steps must be performed.
+
+The following topics are addressed here:
+
+* link:#gktnq[To Prepare for the Upgrade]
+* link:#gktlz[To Perform Post-Upgrade Configuration]
+* link:#gktlp[To Upgrade PKCS#11 Hardware Tokens]
+
+[[gktnq]][[GSUPG00015]][[to-prepare-for-the-upgrade]]
+
+==== To Prepare for the Upgrade
+
+This procedure explains how to prepare for modifying an NSS-based
+{productName} 2.x installation when upgrading to {productName} 7.
+
+1. Download and install {productName} 7 using the Typical Installation path. +
+Ensure that you install the new {productName} 7 product in a
+directory that is different than the one used for the older installation
+from which you are upgrading. +
+See "link:installation-guide.html#GSING00025[
+Installing {productName} From a Self-Extracting Bundle]"
+in {productName} Installation Guide for instructions.
+
+2. Rename the new {productName} 7 domain-dir (the default is
+as-install``/domains/domain1``) to a name of your choice. +
+In this procedure, `31domain` is used for the renamed {productName} 7 domain.
+
+3. Copy the older source domain to be upgraded to the new {productName} 7 as-install``/domains`` directory. +
+In this procedure, `domain1` is used for the older source domain that is
+copied to the new {productName} 7 installation.
++
+[NOTE]
+====
+The remaining steps in this procedure are performed on the copy of your
+source domain that you created in this step, rather than on your
+original source domain. It is strongly recommended that you perform the
+{productName} 7 upgrade on a copy of your old domain rather than on
+the original.
+====
+
+4. Copy the `server.policy`, `keystore.jks`, and `cacerts.jks` files
+from the renamed `./31domain/config` directory to the `./domain1/config`
+directory to be upgraded. +
+For example:
++
+[source]
+----
+cp as-install/domains/31domain/config/server.policy as-install/domains/domain1/config
+cp as-install/domains/31domain/config/keystore.jks as-install/domains/domain1/config
+cp as-install/domains/31domain/config/cacerts.jks as-install/domains/domain1/config
+----
+This will overwrite the master password for `./domain1` with the
+password used in the `./31domain`.
+
+5. Modify the `domain.xml` file for `./domain1`.
+[arabic]
+.. Add the following `jvm-options` under `server-config` and
+`default-config`:
++
+[source]
+----
+-Djavax.net.ssl.keyStore=${com.sun.aas.instanceRoot}/config/keystore.jks
+-Djavax.net.ssl.trustStore=${com.sun.aas.instanceRoot}/config/cacerts.jks
+----
+.. Remove the following `jvm-option` under `server-config` and
+`default-config`:
++
+[source]
+----
+-Dcom.sun.appserv.nss.db=${com.sun.aas.instanceRoot}/config
+----
+
+6. Upgrade `./domain1` by starting the DAS in the new {productName} 7
+installation with the `--upgrade` option.
++
+[source]
+----
+as-install/bin/asadmin start-domain --upgrade domain1
+----
+This upgrades the domain and then shuts down the DAS.
+7. Start the upgraded DAS normally.
++
+[source]
+----
+as-install/bin/asadmin start-domain domain1
+----
+
+[[gktlz]][[GSUPG00016]][[to-perform-post-upgrade-configuration]]
+
+==== To Perform Post-Upgrade Configuration
+
+These instructions explain the post-upgrade configuration steps that
+must be performed when upgrading from an NSS-based installation to
+{productName} 7.
+
+[[sthref38]]
+
+Before You Begin
+
+Before proceeding with this procedure, complete the procedure explained
+in link:#gktnq[To Prepare for the Upgrade].
+
+1. Start the {productName} 7 domain, if it is not already running,
+and open the {productName} Admin Console in a browser window. +
+The default URL is `https://localhost:4848` +
+As part of the link:#gktnq[To Prepare for the Upgrade] procedure, the
+default keystore with a default self-signed key-certificate pair with an
+alias named `s1as` and a keystore password `changeit` was copied into
+the v2.x domain before the upgrade.
+
+2. If your default server alias in the NSS v2.x domain is not `s1as`,
+you can delete this entry using the following command:
++
+[source]
+----
+keytool -delete -keystore keystore.jks -storepass changeit -alias s1as
+keytool -delete -keystore cacerts.jks -storepass changeit -alias s1as
+----
+
+3. If the master password for the v2.x domain is not the default
+password `changeit`, you need to change the new keystore password to
+match the v2.x master password.
++
+[source]
+----
+keytool -storepasswd -new v2-master-password \
+-keystore keystore.jks -storepass changeit
+keytool -storepasswd -new v2-master-password \
+-keystore cacerts.jks -storepass changeit
+----
+
+4. Take note of all the `KeyEntries` that exist in your NSS database.
++
+These entries must be migrated to the `keystore.jks` in the {productName} 7 domain. The following command can be used to list all the
+`KeyEntries` in the NSS database:
++
+[source]
+----
+certutil -L -d $AS_NSS_DB
+----
+`AS_NSS_DB` should point to the `${com.sun.aas.instanceRoot}/config` for
+the 7 instance into which the v2.x domain was copied. The listing with
+the attribute combinations `u,u,u` are the `KeyEntries`. +
+For example:
++
+[source]
+----
+s1as u,u,u
+----
+
++
+[NOTE]
+====
+To run the `certutil` command, your `LD_LIBRARY_PATH` must point to the
+directory containing NSS library and DLLs.
+====
+
+5. For each `PrivateKey-Certificate` pair (`KeyEntry`) that exists in
+the v2.x NSS database, use the following commands to export them from
+the NSS database and import them into the newly created `keystore.jks` file. +
+Make sure you use the same alias when importing the `KeyEntry` into the
+JKS keystore. For example, if s1as is the only alias present in the NSS
+database, the following command can be used:
++
+[source]
+----
+> pk12util -o /tmp/s1as_pk.p12 -n s1as -d $AS_NSS_DB
+>keytool -importkeystore -srckeystore /tmp/s1as_pk.p12 -destkeystore \
+${com.sun.aas.instanceRoot}/config/keystore.jks -srcstoretype PKCS12 \
+-deststoretype JKS -srcstorepass v2-master-password \
+-deststorepass v3-master-password -srcalias s1as \
+-destalias s1as -srckeypass v2-master-password \
+-destkeypass v3-master-password
+----
++
+[NOTE]
+====
+The reference to v3-master-password could be the same as
+v2-master-password if you intend to retain the same master password for
+the 7 domain after upgrading from v2.x.
+====
+
+6. If the `s1as` alias represents a `KeyEntry` with a self-signed
+certificate, the self-signed certificate must be copied to the
+`truststore`.
++
+[source]
+----
+>certutil -L -n s1as -r -d $AS_NSS_DB> /tmp/s1as.der>keytool -import -keystore cacerts.jks -storepass v3-master-password \
+-file /tmp/s1as.der -alias s1as
+----
+7. There is a rare chance that the 2.x NSS database has some CA
+(Certificate Authority) certificates that are absent in the default
+created `truststore`. In such cases, all aliases that are missing in the
+`truststore` (`cacerts.jks`) need to collected.
+[arabic]
+.. `certutil -L -d $AS_NSS_DB` +
+Example output:
++
+[source]
+----
+verisignc1g1 T,c,c
+verisignc1g2 T,c,c
+verisignc1g3 T,c,c
+----
+.. `keytool -list -keystore cacerts.jks -storepass` v3-master-password +
+Example output:
++
+[source]
+----
+godaddyclass2ca, Jan 20, 2005, trustedCertEntry,
+Certificate fingerprint (MD5): 91:DE:06:25:AB:DA:FD:32:17:0C:BB:25:17:2A:84:67
+verisignclass1g3ca, Mar 26, 2004, trustedCertEntry,
+Certificate fingerprint (MD5): B1:47:BC:18:57 1:18:A0:78:2D:EC:71:E8:2A:95:73
+secomevrootca1, May 1, 2008, trustedCertEntry,
+Certificate fingerprint (MD5): 22:2D:A6:01:EA:7C:0A:F7:F0:6C:56:43:3F:77:76 3
+----
+
+8. For each of the aliases from the `certutil` output in the preceding
+step that are required but missing in the `truststore` listing, execute
+the following commands to export and import them into the 7 domain's
+`truststore`.
++
+[source]
+----
+>certutil -L -n verisignc1g1 -r -d $AS_NSS_DB> /tmp/verisignc1g1.der>keytool -import -keystore cacerts.jks -storepass v3-master-password \
+-file /tmp/verisignc1g1.der -alias verisignc1g1
+----
+
+[NOTE]
+====
+Sometimes just the alias names that are used in the NSS database are
+different, and the same certificate is, in fact, present in the 7
+default `truststore`.
+====
+
+
+[[gktlp]][[GSUPG00017]][[to-upgrade-pkcs11-hardware-tokens]]
+
+==== To Upgrade PKCS#11 Hardware Tokens
+
+If you are using {productName} v2.x Enterprise Edition with Hardware
+Tokens (for example, FIPS-140 compliant Sun Cryptographic Accelerator
+6000 or other Sun Cryptographic Accelerators) configured by means of
+NSS-PKCS11, then the v2.x EE-to-7 upgrade solution is to directly
+configure the Hardware Token as a PKCS11 token using the JDK-JSSE
+supported mechanisms for configuring PKCS#11 tokens.
+
+1. Set the `javax.net.ssl.keyStoreType` `jvm-options` in {productName} 7 to PKCS11.
++
+[source,xml]
+----
+<jvm-options>-Djavax.net.ssl.keyStoreType=PKCS11</jvm-options>
+----
+
+2. Set the `javax.net.ssl.keyStore` URL should be set to l since this
+is a hardware token.
++
+[source,xml]
+----
+<jvm-options>-Djavax.net.ssl.keyStore=NONE</jvm-options>
+----
+
+3. Change the password for the `truststore` and the {productName}
+`MasterPassword` to match the PIN of your `HardwareToken`.
+
+4. Since you are using a Hardware Token, you can delete the
+`keystore.jks` for the migrated domain.
+
+5. Ensure the `token-alias` for the hardware token (private key) that
+you intend to use as the Server's Key for SSL is mentioned in every
+relevant place in the `domain.xml` for the domain. +
+For example, the `cert-nickname` attribute for the `<ssl/>` element
+under the `protocol` configuration.
+
+6. If the Hardware Token is to act as a `TrustStore` as well, remove
+the `cacerts.jks` file from the domain-dir``/config`` directory. +
+Ensure that the following two `jvm-options` are set in the `domain.xml` file:
++
+[source,xml]
+----
+<jvm-options>-Djavax.net.ssl.trustStore=NONE</jvm-options>
+<jvm-options>-Djavax.net.ssl.trustStoreType=PKCS11</jvm-options>
+----
+
+[[gfybw]][[GSUPG00043]][[upgrading-clusters-and-node-agent-configurations]]
+
+=== Upgrading Clusters and Node Agent Configurations
+
+This section explains additional steps you need to perform when
+upgrading cluster and node agent configurations from Application Server
+or Enterprise Server to {productName} 7.
+
+{productName} 7 does not support node agents. As part of the
+upgrade process, any node agent elements in the older source
+configuration are transformed into `CONFIG` node elements in the
+`domain.xml` file for the upgraded DAS. If the source node agent
+configuration is incompatible with your {productName} 7
+installation, you must correct the node configuration on the upgraded DAS.
+
+In addition, although the source cluster configuration is retained in
+the `domain.xml` file for the upgraded DAS, it is still necessary to
+install {productName} 7 on each node host and manually re-create
+the server instances that are contained in the clusters.
+
+The following topics are addressed here:
+
+* link:#gkyda[Overview of Cluster and Node Agent Upgrade Procedures]
+* link:#gktle[To Correct the Configuration of a Node After an Upgrade]
+* link:#gktkx[To Re-Create a Cluster]
+
+[[gkyda]][[GSUPG00069]][[overview-of-cluster-and-node-agent-upgrade-procedures]]
+
+==== Overview of Cluster and Node Agent Upgrade Procedures
+
+The general steps for upgrading a cluster and node agent configuration
+so it will work in {productName} 7 are as follows:
+
+1. Perform a side-by-side upgrade of the DAS. This procedure is
+described in link:#abmbr[Performing a Side-By-Side Upgrade With Upgrade Tool].
+
+2. Perform new (not upgrade) {productName} 7 installations on each
+node host. {productName} 7 installation instructions are provided
+in the link:installation-guide.html#GSING[
+{productName} Installation Guide].
+
+3. Correct the node configuration on the upgraded DAS, if necessary.
+This procedure is described in link:#gktle[To Correct the Configuration
+of a Node After an Upgrade].
+
+4. Re-create the clusters and server instances on each {productName} 7 node host.
+This procedure is described in link:#gktkx[To Re-Create a Cluster].
+
+[[gktle]][[GSUPG00018]][[to-correct-the-configuration-of-a-node-after-an-upgrade]]
+
+==== To Correct the Configuration of a Node After an Upgrade
+
+As part of the upgrade process, node agent elements in the DAS
+configuration are transformed into {productName} node elements of
+type `CONFIG`. This transformation does not affect the node agent
+directories for {productName} instances. To create the equivalent
+directories for {productName} instances after an upgrade, you must
+re-create the instances as explained in link:#gktkx[To Re-Create a
+Cluster].
+
+The name of an upgraded node is the name of the node agent from which
+the node is transformed.
+
+The host that the node represents is obtained from the configuration of
+the original node agent or, if not specified, is not set. If the
+configuration of the original node agent did not specify the name of the
+node host, you must update the node to specify the host that the node represents.
+
+Default values are applied to the remainder of the node's configuration data.
+
+The default values of the following items in a node's configuration data
+might not meet your requirements for the upgraded installation of {productName}:
+
+* The parent of the base installation directory of the {productName}
+software on the host, for example, `/export/glassfish7`. +
+The default is the parent of the default base installation directory of
+the {productName} 7 software on the DAS host. If the {productName} software is installed under a different directory on the node
+host, you must update the node's configuration to specify the correct directory.
+
+* The directory that will contain the {productName} instances that
+are to reside on the node. +
+The default is as-install``/nodes``, where as-install is the base
+installation directory of the {productName} software on the host. If
+you require the instances to be contained in a different directory, you
+must update the node's configuration to specify that directory.
+
+If you are using secure shell (SSH) for centralized administration, you
+must also change the type of the node to `SSH` to enable the node for
+remote communication.
+
+For more information about {productName} nodes, see
+"link:ha-administration-guide/nodes.html#GSHAG00004[Administering {productName} Nodes]" in {productName} High Availability Administration Guide.
+
+[[sthref39]]
+
+Before You Begin
+
+Ensure that the following prerequisites are met:
+
+* A side-by-side upgrade on the DAS has been performed. For more
+information, see link:#abmbr[Performing a Side-By-Side Upgrade With Upgrade Tool].
+
+* If you are changing the type of the node to `SSH`, ensure that SSH is
+configured on the host where the DAS is running and on the host that the
+node represents. For more information, see
+"link:ha-administration-guide/ssh-setup.html#GSHAG00003[
+Setting Up SSH for Centralized Administration]" in
+{productName} High Availability Administration Guide.
+
+* If you are upgrading from an Enterprise Profile configuration that
+uses NSS authentication, ensure that the procedure in
+link:#gktnh[Upgrading Installations That Use NSS Cryptographic Tokens]
+has been performed. {productName} 7 does not support NSS authentication.
+
+1. Ensure that the DAS is running. +
+Remote subcommands require a running server.
+2. Update the node's configuration data to specify the correct
+directories and, if necessary, change the type of the node.
++
+[NOTE]
+====
+Only the options that are required to complete this task are provided in
+this step. For information about all the options for changing the node's
+configuration data, see the link:reference-manual/update-node-ssh001.html#GSRFM00256[`update-node-ssh`(1)] help
+page or the link:reference-manual/update-node-config.html#GSRFM00255[`update-node-config`(1)] help page.
+====
+
+[source]
+----
+asadmin> node-update-subcommand [--installdir as-install-parent] [--nodedir node-dir]
+[--nodehost node-host] node-name
+----
+node-update-subcommand::
+  The subcommand to run to update the node.
+  * If you are leaving the type of the node as `CONFIG`, run the
+  `update-node-config` subcommand on the node.
+  * If you are changing the type of the node to `SSH`, run the
+  `update-node-ssh` subcommand on the node.
+as-install-parent::
+  The full path to the parent of the base installation directory of the
+  {productName} software on the host, for example,
+  `/export/glassfish7`.
+node-dir::
+  The path to the directory that will contain {productName} instances
+  that are to reside on the node. If a relative path is specified, the
+  path is relative to the as-install directory.
+node-host::
+  The name of the host that the node is to represent after the node is
+  updated.
+node-name::
+  The name of the node to update. This name is the name of the node
+  agent from which the node was transformed.
+
+[[GSUPG00008]][[gktoh]]
+Example 2-2 Correcting the Configuration of a Node After an Upgrade
+
+This example updates the path to the directory that will contain
+instances that are to reside on the node `xk01` to
+`/export/home/gf/nodes`. Because this node is transformed from a node
+agent, the type of the node is `CONFIG`. Therefore, type of the node is
+not changed.
+
+[source]
+----
+asadmin> update-node-config --nodedir /export/home/gf/nodes xk01
+Command update-node-config executed successfully.
+----
+
+[[sthref40]]
+
+Next Steps
+
+Re-create the cluster configuration from the older source installation
+in the new {productName} 7 installation in as explained in
+link:#gktkx[To Re-Create a Cluster].
+
+[[sthref41]]
+
+See Also
+
+* "link:ha-administration-guide/ssh-setup.html#GSHAG00003[
+Setting Up SSH for Centralized Administration]" in
+{productName} High Availability Administration Guide
+* "link:ha-administration-guide/nodes.html#GSHAG00004[Administering {productName} Nodes]"
+in {productName} High Availability Administration Guide
+* link:reference-manual/update-node-config.html#GSRFM00255[`update-node-config`(1)]
+* link:reference-manual/update-node-ssh001.html#GSRFM00256[`update-node-ssh`(1)]
+
+[[gktkx]][[GSUPG00019]][[to-re-create-a-cluster]]
+
+==== To Re-Create a Cluster
+
+This procedure explains how to re-create a clustered {productName} or
+Enterprise Server configuration for {productName} 7.
+
+[[sthref42]]
+
+Before proceeding with these instructions, ensure that you have
+completed the following procedures:
+--
+* Perform the standard upgrade to {productName} 7 on the DAS, as
+described in link:#abmbr[Performing a Side-By-Side Upgrade With Upgrade Tool].
+
+* Perform a new (not upgrade) installation of {productName} 7 on
+each node host. See the link:installation-guide.html#GSING[
+{productName} Installation Guide] for instructions.
+
+* Correct the upgraded node configuration, if necessary, as described
+link:#gktle[To Correct the Configuration of a Node After an Upgrade].
+--
+
+1. Start the upgraded DAS.
++
+[source]
+----
+asadmin> start-domain domain-name
+----
+If the upgrade succeeded, the migrated cluster configuration exists and
+the `get-health` subcommand lists the status of the clustered instances
+as not running.
+
+2. Confirm that the cluster configuration exists and contains all its instances.
++
+[source]
+----
+asadmin> get-health cluster-name
+----
+For example, for the sample `cluster1` used in this procedure:
++
+[source]
+----
+asadmin> get-health cluster1
+instance1 not started
+instance2 not started
+Command get-health executed successfully.
+----
+
+3. Re-create the clustered server instances on each instance host. +
+The specific commands to use depend on your configuration.
+
+* If remote hosts cannot contact the DAS, export and import the
+instances' configuration data, as explained in
+"link:ha-administration-guide/instances.html#GSHAG00125[
+To Resynchronize an Instance and the DAS Offline]"
+in {productName} High Availability Administration Guide.
+
+* If remote hosts can contact the DAS, create each instance individually
+and resynchronize the instance with the DAS, as explained in the
+following sections:
+
+** "link:ha-administration-guide/instances.html#GSHAG00114[
+To Create an Instance Locally]"
+in {productName} High Availability Administration Guide
+
+** "link:ha-administration-guide/instances.html#GSHAG00119[
+To Resynchronize an Instance and the DAS Online]"
+in {productName} High Availability Administration Guide +
+Note that the node name matches that used for the node agent in the 2.x
+installation. If you get an error stating that some attributes do not
+match the values in the DAS configuration, follow the instructions in
+link:#gktle[To Correct the Configuration of a Node After an Upgrade].
+
+4. After creating the instances, manually copy the instance-dir``/imq``
+directory for each instance from the older source installation to the
+target {productName} 7 installation.
+
+5. If necessary, start the cluster. +
+For example:
++
+[source]
+----
+asadmin> start-cluster cluster1
+----
+This step may or may not be necessary, depending on the procedure you
+used to create the server instances for the cluster.
+
+[[GSUPG00009]][[gkyin]]
+Example 2-3 Creating Two Local Instances
+
+The following example shows how to create two local instances in a
+cluster.
+
+[source]
+----
+host1$ asadmin --host dashost create-local-instance --node na1 --cluster cluster1 instance1
+host2$ asadmin --host dashost create-local-instance --node na2 --cluster cluster1 instance2
+----
+
+`dashost`::
+  The name of the DAS host.
+`na1`::
+  The name of the node host.
+`cluster1`::
+  The name of the cluster.
+`instance1`, `instance2`::
+  The names of the instances.
+
+[[gkrfh]][[GSUPG00044]][[correcting-potential-upgrade-problems]]
+
+=== Correcting Potential Upgrade Problems
+
+This section addresses issues that can occur during an upgrade to
+{productName} 7.
+
+The following topics are addressed here:
+
+* link:#gkrgh[Cluster Profile Security Setting]
+* link:#gkrib[Cluster Profile Upgrade on Windows]
+* link:#gkyho[`asupgrade` Fails Without Internet Connection]
+
+[[gkrgh]][[GSUPG00070]][[cluster-profile-security-setting]]
+
+==== Cluster Profile Security Setting
+
+When upgrading a clustered domain configuration from Application Server
+9.1 or Enterprise Server v2 to {productName} 7, you may encounter
+problems if the `admin-service` element in the DAS `domain.xml` file
+sets both of the following attributes:
+
+* `security-enabled=true`
+* `type=das-and-server`
+
+The `security-enabled` attribute must be set to `false` in the
+`admin-service` element for the DAS when `type` is set to
+`das-and-server`.
+
+You can use the `get` subcommand to determine the values for these two
+attributes. For example:
+
+* To display the value for the `security-enabled` attribute:
++
+[source]
+----
+asadmin> get configs.config.server-config.admin-service.jmx-connector.system.security-enabled
+----
+* To display the value for the type attribute:
++
+[source]
+----
+asadmin> get configs.config.server-config.admin-service.type
+----
+
+If necessary, use the `set` subcommand to set `security-enabled=false`.
+For example:
+
+[source]
+----
+asadmin> set configs.config.server-config.admin-service.jmx-connector.system.security-enabled=false
+----
+
+[[gkrib]][[GSUPG00071]][[cluster-profile-upgrade-on-windows]]
+
+==== Cluster Profile Upgrade on Windows
+
+On Windows, when you upgrade cluster profile domains, you could
+encounter the following error:
+
+[source]
+----
+Fatal error while backing up the domain directory
+----
+
+To resolve this error, look for and remove any hidden files in the
+source domain's directory and re-run Upgrade Tool.
+
+[[gkyho]][[GSUPG00072]][[asupgrade-fails-without-internet-connection]]
+
+==== `asupgrade` Fails Without Internet Connection
+
+This problem only occurs when using {productName} 3.1 Upgrade Tool to
+perform a side-by-side upgrade on a 2.x domain without an Internet
+connection. It does not occur when using {productName} 3.1.1.
+
+The workaround for this issue is as follows:
+
+1. Copy the older source domain to be upgraded to the new target
+domain-dir, the default for which is as-install``/domains``. +
+Rename the target `domain1` directory, if one exists, before proceeding.
+
+2. Run the upgrade.
++
+[source]
+----
+asadmin> start-domain --upgrade domain-name
+----
diff --git a/docs/upgrade-guide/src/main/jbake/assets/css/style.css b/docs/upgrade-guide/src/main/jbake/assets/css/style.css
deleted file mode 100644
index 25a16e4..0000000
--- a/docs/upgrade-guide/src/main/jbake/assets/css/style.css
+++ /dev/null
@@ -1,315 +0,0 @@
-/* CSS */
-/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
-/** 1. Set default font family to sans-serif. 2. Prevent iOS text size adjust after orientation change, without disabling user zoom. */
-html { font-family: sans-serif; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ }
-
-/* HTML5 display definitions ========================================================================== */
-/** Correct `block` display not defined for any HTML5 element in IE 8/9. Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox. Correct `block` display not defined for `main` in IE 11. */
-article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { display: block; }
-
-/** 1. Correct `inline-block` display not defined in IE 8/9. 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. */
-audio, canvas, progress, video { display: inline-block; /* 1 */ vertical-align: baseline; /* 2 */ }
-
-/** Prevent modern browsers from displaying `audio` without controls. Remove excess height in iOS 5 devices. */
-audio:not([controls]) { display: none; height: 0; }
-
-/** Address `[hidden]` styling not present in IE 8/9/10. Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. */
-[hidden], template { display: none; }
-
-/* Links ========================================================================== */
-/** Remove the gray background color from active links in IE 10. */
-a { background-color: transparent; }
-
-/** Improve readability when focused and also mouse hovered in all browsers. */
-a:active, a:hover { outline: 0; }
-
-/* Text-level semantics ========================================================================== */
-/** Address styling not present in IE 8/9/10/11, Safari, and Chrome. */
-abbr[title] { border-bottom: 1px dotted; }
-
-/** Address style set to `bolder` in Firefox 4+, Safari, and Chrome. */
-b, strong { font-weight: bold; }
-
-/** Address styling not present in Safari and Chrome. */
-dfn { font-style: italic; }
-
-/** Address variable `h1` font-size and margin within `section` and `article` contexts in Firefox 4+, Safari, and Chrome. */
-h1 { font-size: 2em; margin: 0.67em 0; }
-
-/** Address styling not present in IE 8/9. */
-mark { background: #ff0; color: #000; }
-
-/** Address inconsistent and variable font size in all browsers. */
-small { font-size: 80%; }
-
-/** Prevent `sub` and `sup` affecting `line-height` in all browsers. */
-sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }
-
-sup { top: -0.5em; }
-
-sub { bottom: -0.25em; }
-
-/* Embedded content ========================================================================== */
-/** Remove border when inside `a` element in IE 8/9/10. */
-img { border: 0; }
-
-/** Correct overflow not hidden in IE 9/10/11. */
-svg:not(:root) { overflow: hidden; }
-
-/* Grouping content ========================================================================== */
-/** Address margin not present in IE 8/9 and Safari. */
-figure { margin: 1em 40px; }
-
-/** Address differences between Firefox and other browsers. */
-hr { box-sizing: content-box; height: 0; }
-
-/** Contain overflow in all browsers. */
-pre { overflow: auto; }
-
-/** Address odd `em`-unit font size rendering in all browsers. */
-code, kbd, pre, samp { font-family: monospace, monospace; font-size: 1em; }
-
-/* Forms ========================================================================== */
-/** Known limitation: by default, Chrome and Safari on OS X allow very limited styling of `select`, unless a `border` property is set. */
-/** 1. Correct color not being inherited. Known issue: affects color of disabled elements. 2. Correct font properties not being inherited. 3. Address margins set differently in Firefox 4+, Safari, and Chrome. */
-button, input, optgroup, select, textarea { color: inherit; /* 1 */ font: inherit; /* 2 */ margin: 0; /* 3 */ }
-
-/** Address `overflow` set to `hidden` in IE 8/9/10/11. */
-button { overflow: visible; }
-
-/** Address inconsistent `text-transform` inheritance for `button` and `select`. All other form control elements do not inherit `text-transform` values. Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. Correct `select` style inheritance in Firefox. */
-button, select { text-transform: none; }
-
-/** 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls. 2. Correct inability to style clickable `input` types in iOS. 3. Improve usability and consistency of cursor style between image-type `input` and others. */
-button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ }
-
-/** Re-set default cursor for disabled elements. */
-button[disabled], html input[disabled] { cursor: default; }
-
-/** Remove inner padding and border in Firefox 4+. */
-button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; }
-
-/** Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet. */
-input { line-height: normal; }
-
-/** It's recommended that you don't attempt to style these elements. Firefox's implementation doesn't respect box-sizing, padding, or width.  1. Address box sizing set to `content-box` in IE 8/9/10. 2. Remove excess padding in IE 8/9/10. */
-input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ }
-
-/** Fix the cursor style for Chrome's increment/decrement buttons. For certain `font-size` values of the `input`, it causes the cursor style of the decrement button to change from `default` to `text`. */
-input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { height: auto; }
-
-/** 1. Address `appearance` set to `searchfield` in Safari and Chrome. 2. Address `box-sizing` set to `border-box` in Safari and Chrome (include `-moz` to future-proof). */
-input[type="search"] { -webkit-appearance: textfield; /* 1 */ /* 2 */ box-sizing: content-box; }
-
-/** Remove inner padding and search cancel button in Safari and Chrome on OS X. Safari (but not Chrome) clips the cancel button when the search input has padding (and `textfield` appearance). */
-input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; }
-
-/** Define consistent border, margin, and padding. */
-fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; }
-
-/** 1. Correct `color` not being inherited in IE 8/9/10/11. 2. Remove padding so people aren't caught out if they zero out fieldsets. */
-legend { border: 0; /* 1 */ padding: 0; /* 2 */ }
-
-/** Remove default vertical scrollbar in IE 8/9/10/11. */
-textarea { overflow: auto; }
-
-/** Don't inherit the `font-weight` (applied by a rule above). NOTE: the default cannot safely be changed in Chrome and Safari on OS X. */
-optgroup { font-weight: bold; }
-
-/* Tables ========================================================================== */
-/** Remove most spacing between table cells. */
-table { border-collapse: collapse; border-spacing: 0; }
-
-td, th { padding: 0; }
-
-/* LAYOUT STYLES */
-
-p { margin-top: 0; }
-
-code, pre { margin-bottom: 30px; font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace; font-size: 13px; color: #222; }
-
-code { padding: 0 3px; background-color: #f2f8fc; border: solid 1px #dbe7f3; }
-
-pre { padding: 20px; overflow: auto; text-shadow: none; background: #fff; border: solid 1px #f2f2f2; }
-
-pre code { padding: 0; color: #2879d0; background-color: #fff; border: none; }
-
-ul, ol, dl { margin-bottom: 20px; }
-
-/* COMMON STYLES */
-
-td.halign-right { text-align: right; } 
-
-td.halign-center { text-align: center; } 
-
-form { padding: 20px; background: #f2f2f2; }
-
-h2 { 
-   font-size: 2em;
-   line-height: 1.2em;
-   font-weight: 200;
-   letter-spacing: 0;
-}
-
-h3 { 
-   font-size: 1.4em;
-   line-height: 1.2em;
-   font-weight: normal;
-   letter-spacing: 0;
-}
-
-.sect1 {
-   margin-left: 4%;
-   margin-right: 4%;
-   font: 13px/20px Arial, Helvetica, sans-serif  
-}
-
-a:link {
-   text-decoration: none;
-   color: #09569d;
-}
-
-#preamble hr{
-   margin-left: 0%;
-   margin-right: 0%;
-}
-
-#preamble .sectionbody table  {
-   font-weight: 200;
-   margin-left: 4%;
-   margin-right: 4%;
-}
-
-hr {
-   margin-bottom: 12px;
-}
-
-table.tableblock.frame-all.grid-all.spread {
-   font-size: 12px;
-}
-
-code {
-   font-size:.9em;
-   border: 1px solid #eaeaea;
-   background-color: #f6f6f6;
-   border-radius: 3px;
-   padding: 1px;
-   padding-left:2px;
-   padding-right:2px;
-}
-
-pre.prettyprint.highlight {
-   border: 1px solid #eaeaea;
-   background-color: #f6f6f6;
-   border-radius: 4px;
-   padding: 8px;
-   padding-top:4px;
-   padding-bottom:4px;
-}
-
-.language-oac_no_warn {
-   font-size:.9em;
-   color:#222;
-   background-color: transparent;
-}
-
-#doc-title {
-   margin-left: 4%;
-}
-
-#top-nav {
-   margin-left: 4%;
-   font-size: 12px;
-}
-
-#bottom-nav {
-   margin-left: 4%;
-   font-size: 12px;
-}
-
-.vector-font {
-   color:grey; 
-   font-size: 20px;
-}
-
-#copyright {
-   padding-top: 10px;
-   padding-bottom: 4px;
-   display: table;
-   margin:0 auto;
-   color: grey;
-   font-size: 12px;
-   vertical-align: middle;
-}
-
-.beta {color: #FF0000}
-
-/* GENERAL ELEMENT TYPE STYLES */
-
-/* #Media Queries
-================================================== */
-/* Smaller than standard 960 (devices and browsers) */
-/* Tablet Portrait size to standard 960 (devices and browsers) */
-@media only screen and (min-width: 768px) and (max-width: 959px) { .inner { width: 740px; }
-  header h1, header h2 { width: 340px; }
-  header h1 { font-size: 60px; }
-  header h2 { font-size: 30px; }
-}
-/* All Mobile Sizes (devices and browser) */
-@media only screen and (max-width: 767px) { .inner { width: 93%; }
-  header { padding: 20px 0; }
-  header .inner { position: relative; }
-  header h1, header h2 { width: 100%; }
-  header h1 { font-size: 48px; }
-  header h2 { font-size: 24px; }
-  header a.button { position: relative; display: inline-block; width: auto; height: auto; padding: 5px 10px; margin-top: 15px; font-size: 13px; line-height: 1; color: #2879d0; text-align: center; background-color: #9ddcff; background-image: none; border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; }
-  header a.button small { display: inline; font-size: 13px; }
-}
-/* Mobile Landscape Size to Tablet Portrait (devices and browsers) */
-/* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */
-
-header h1 { padding-top: 14px; font-size: 2em; font-weight: 200; line-height: 1.4; color: #FFFFFF; letter-spacing: 0px; border-bottom: 0px; }
-
-header h2 { font-size: 1.2em; margin-top: 0; margin-bottom: 0; font-weight: 200; line-height: .8; color: #ec7D11; letter-spacing: 0; }
-
-/*
-header a.button { background: transparent url(../images/logo.png) 0 0 no-repeat; padding-left: 32px; }
-*/
-
-header a:hover { text-decoration: none; }
-
-/* Admonition (Note) block */
-.admonitionblock > table {
-  border: 0;
-  background: none;
-  width: 100%;
-  table-layout: auto;
-  margin-bottom: 10.5px;
-}
-.admonitionblock > table td.icon {
-  text-align: center;
-  width: 60px;
-}
-.admonitionblock > table td.icon img {
-  max-width: none;
-}
-.admonitionblock > table td.icon .title {
-  text-transform: uppercase;
-}
-.admonitionblock > table td.content {
-  padding-left: 1em;
-  padding-right: 1em;
-  border-left: 3px solid #ddd;
-}
-.admonitionblock > table td.content > :last-child > :last-child {
-  margin-bottom: 0;
-}
-.admonitionblock td.icon [class^="fa icon-"]:before {
-  font-size: 2.5em;
-  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
-  cursor: default;
-}
-.admonitionblock td.icon .icon-note:before {
-  content: "\f05a";
-  color: #5bc0de;
-}
diff --git a/docs/upgrade-guide/src/main/jbake/content/loe.adoc b/docs/upgrade-guide/src/main/jbake/content/loe.adoc
deleted file mode 100644
index a1d258a..0000000
--- a/docs/upgrade-guide/src/main/jbake/content/loe.adoc
+++ /dev/null
@@ -1,19 +0,0 @@
-type=page
-status=published
-title=List of Examples
-next=lot.html
-prev=toc.html
-~~~~~~
-List of Examples
-================
-
-[[list-of-examples]]
-List of Examples
-----------------
-
-* link:upgrading-legacy-installation.html#gktiu[2-1 Using the asupgrade
-Command Line]
-* link:upgrading-legacy-installation.html#gktoh[2-2 Correcting the
-Configuration of a Node After an Upgrade]
-* link:upgrading-legacy-installation.html#gkyin[2-3 Creating Two Local
-Instances]
diff --git a/docs/upgrade-guide/src/main/jbake/content/lot.adoc b/docs/upgrade-guide/src/main/jbake/content/lot.adoc
deleted file mode 100644
index 1c91462..0000000
--- a/docs/upgrade-guide/src/main/jbake/content/lot.adoc
+++ /dev/null
@@ -1,63 +0,0 @@
-type=page
-status=published
-title=List of Tables
-next=title.html
-prev=loe.html
-~~~~~~
-List of Tables
-==============
-
-[[list-of-tables]]
-List of Tables
---------------
-
-* link:upgrade-compatibility-issues.html#gklho[1-1 GMS Administration
-Console Settings Changes from 2.1.1 to 4.0]
-* link:upgrade-compatibility-issues.html#gaeki[1-2 Deprecated,
-Unsupported, and Obsolete Options for asadmin and Subcommands]
-* link:upgrade-compatibility-issues.html#gipfy[1-3 com.sun.grizzly
-Property Remapping]
-* link:upgrade-compatibility-issues.html#gipfn[1-4 connection-pool
-Attribute Remapping]
-* link:upgrade-compatibility-issues.html#gipcv[1-5 http-file-cache
-Attribute Remapping]
-* link:upgrade-compatibility-issues.html#gipev[1-6 http-listener
-Attribute Remapping]
-* link:upgrade-compatibility-issues.html#gipdo[1-7 http-listener Property
-Remapping]
-* link:upgrade-compatibility-issues.html#gipel[1-8 http-protocol
-Attribute Remapping]
-* link:upgrade-compatibility-issues.html#gipfa[1-9 http-service Property
-Remapping]
-* link:upgrade-compatibility-issues.html#gipea[1-10 keep-alive Attribute
-Remapping]
-* link:upgrade-compatibility-issues.html#gipdh[1-11 request-processing
-Attribute Remapping]
-* link:upgrade-compatibility-issues.html#gipdv[1-12 ssl Attribute
-Changes]
-* link:upgrade-compatibility-issues.html#gipcj[1-13 thread-pool Attribute
-Changes]
-* link:upgrade-compatibility-issues.html#gipep[1-14 virtual-server
-Attribute Changes]
-* link:upgrade-compatibility-issues.html#gipds[1-15 New http Attributes]
-* link:upgrade-compatibility-issues.html#gipey[1-16 New network-listener
-Attributes]
-* link:upgrade-compatibility-issues.html#gipfg[1-17 New port-unification
-Attributes]
-* link:upgrade-compatibility-issues.html#gipdj[1-18 New protocol
-Attributes]
-* link:upgrade-compatibility-issues.html#gipcr[1-19 New protocol-chain
-Attributes]
-* link:upgrade-compatibility-issues.html#gipfq[1-20 New
-protocol-chain-instance-handler Attributes]
-* link:upgrade-compatibility-issues.html#gipeq[1-21 New protocol-filter
-Attributes]
-* link:upgrade-compatibility-issues.html#gipfd[1-22 New protocol-finder
-Attributes]
-* link:upgrade-compatibility-issues.html#gipft[1-23 New
-selection-key-handler Attributes]
-* link:upgrade-compatibility-issues.html#gipfi[1-24 New ssl Attributes]
-* link:upgrade-compatibility-issues.html#gipcc[1-25 New thread-pool
-Attributes]
-* link:upgrade-compatibility-issues.html#gipem[1-26 New transport
-Attributes]
diff --git a/docs/upgrade-guide/src/main/jbake/content/preface.adoc b/docs/upgrade-guide/src/main/jbake/content/preface.adoc
deleted file mode 100644
index 57bae5c..0000000
--- a/docs/upgrade-guide/src/main/jbake/content/preface.adoc
+++ /dev/null
@@ -1,352 +0,0 @@
-type=page
-status=published
-title=Preface
-next=upgrade-compatibility-issues.html
-prev=title.html
-~~~~~~
-Preface
-=======
-
-[[GSUPG00001]][[gkbei]]
-
-
-[[preface]]
-Preface
--------
-
-This guide explains how to upgrade to GlassFish Server Open Source
-Edition 4.0 from previous GlassFish Server and Sun GlassFish Enterprise
-Server product releases. Also included in this guide are instructions
-for upgrading configuration data and Java EE applications from
-binary-compatible earlier versions of this software to work with
-GlassFish Server Open Source Edition 4.0. Finally, this guide describes
-compatibility issues that affect data and applications that are to be
-migrated.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-The main thrust of the GlassFish Server Open Source Edition 4.0 release
-is to provide an application server for developers to explore and begin
-exploiting the new and updated technologies in the Java EE 7 platform.
-Thus, the upgrade feature of GlassFish Server was not a focus of this
-release. The feature is included in the release, but it may not function
-properly with some of the new features added in support of the Java EE 7
-platform.
-
-|=======================================================================
-
-
-This preface contains information about and conventions for the entire
-GlassFish Server Open Source Edition (GlassFish Server) documentation
-set.
-
-GlassFish Server 4.0 is developed through the GlassFish project
-open-source community at `http://glassfish.java.net/`. The GlassFish
-project provides a structured process for developing the GlassFish
-Server platform that makes the new features of the Java EE platform
-available faster, while maintaining the most important feature of Java
-EE: compatibility. It enables Java developers to access the GlassFish
-Server source code and to contribute to the development of the GlassFish
-Server. The GlassFish project is designed to encourage communication
-between Oracle engineers and the community.
-
-The following topics are addressed here:
-
-* link:#ghpbz[GlassFish Server Documentation Set]
-* link:#giprl[Related Documentation]
-* link:#fwbkx[Typographic Conventions]
-* link:#fquvc[Symbol Conventions]
-* link:#ghpfg[Default Paths and File Names]
-
-[[GSUPG00020]][[ghpbz]]
-
-
-[[glassfish-server-documentation-set]]
-Eclipse GlassFish Server Documentation Set
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The GlassFish Server documentation set describes deployment planning and
-system installation. For an introduction to GlassFish Server, refer to
-the books in the order in which they are listed in the following table.
-
-[width="100%",cols="<30%,<70%",options="header",]
-|=======================================================================
-|Book Title |Description
-|link:../release-notes/toc.html#GSRLN[Release Notes] |Provides late-breaking information about
-the software and the documentation and includes a comprehensive,
-table-based summary of the supported hardware, operating system, Java
-Development Kit (JDK), and database drivers.
-
-|link:../quick-start-guide/toc.html#GSQSG[Quick Start Guide] |Explains how to get started with the
-GlassFish Server product.
-
-|link:../installation-guide/toc.html#GSING[Installation Guide] |Explains how to install the software
-and its components.
-
-|link:../upgrade-guide/toc.html#GSUPG[Upgrade Guide] |Explains how to upgrade to the latest
-version of GlassFish Server. This guide also describes differences
-between adjacent product releases and configuration options that can
-result in incompatibility with the product specifications.
-
-|link:../deployment-planning-guide/toc.html#GSPLG[Deployment Planning Guide] |Explains how to build a
-production deployment of GlassFish Server that meets the requirements of
-your system and enterprise.
-
-|link:../administration-guide/toc.html#GSADG[Administration Guide] |Explains how to configure, monitor,
-and manage GlassFish Server subsystems and components from the command
-line by using the link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`] utility. Instructions for
-performing these tasks from the Administration Console are provided in
-the Administration Console online help.
-
-|link:../security-guide/toc.html#GSSCG[Security Guide] |Provides instructions for configuring and
-administering GlassFish Server security.
-
-|link:../application-deployment-guide/toc.html#GSDPG[Application Deployment Guide] |Explains how to assemble and
-deploy applications to the GlassFish Server and provides information
-about deployment descriptors.
-
-|link:../application-development-guide/toc.html#GSDVG[Application Development Guide] |Explains how to create and
-implement Java Platform, Enterprise Edition (Java EE platform)
-applications that are intended to run on the GlassFish Server. These
-applications follow the open Java standards model for Java EE components
-and application programmer interfaces (APIs). This guide provides
-information about developer tools, security, and debugging.
-
-|link:../embedded-server-guide/toc.html#GSESG[Embedded Server Guide] |Explains how to run applications in
-embedded GlassFish Server and to develop applications in which GlassFish
-Server is embedded.
-
-|link:../ha-administration-guide/toc.html#GSHAG[High Availability Administration Guide] |Explains how to
-configure GlassFish Server to provide higher availability and
-scalability through failover and load balancing.
-
-|link:../performance-tuning-guide/toc.html#GSPTG[Performance Tuning Guide] |Explains how to optimize the
-performance of GlassFish Server.
-
-|link:../troubleshooting-guide/toc.html#GSTSG[Troubleshooting Guide] |Describes common problems that you
-might encounter when using GlassFish Server and explains how to solve
-them.
-
-|link:../error-messages-reference/toc.html#GSEMR[Error Message Reference] |Describes error messages that you
-might encounter when using GlassFish Server.
-
-|link:../reference-manual/toc.html#GSRFM[Reference Manual] |Provides reference information in man
-page format for GlassFish Server administration commands, utility
-commands, and related concepts.
-
-|link:../../openmq/mq-release-notes/toc.html#GMRLN[Message Queue Release Notes] |Describes new features,
-compatibility issues, and existing bugs for Open Message Queue.
-
-|link:../../openmq/mq-tech-over/toc.html#GMTOV[Message Queue Technical Overview] |Provides an introduction
-to the technology, concepts, architecture, capabilities, and features of
-the Message Queue messaging service.
-
-|link:../../openmq/mq-admin-guide/toc.html#GMADG[Message Queue Administration Guide] |Explains how to set up
-and manage a Message Queue messaging system.
-
-|link:../../openmq/mq-dev-guide-jmx/toc.html#GMJMG[Message Queue Developer's Guide for JMX Clients] |Describes
-the application programming interface in Message Queue for
-programmatically configuring and monitoring Message Queue resources in
-conformance with the Java Management Extensions (JMX).
-
-|link:../../openmq/mq-dev-guide-java/toc.html#GMJVG[Message Queue Developer's Guide for Java Clients] |Provides
-information about concepts and procedures for developing Java messaging
-applications (Java clients) that work with GlassFish Server.
-
-|link:../../openmq/mq-dev-guide-c/toc.html#GMCCG[Message Queue Developer's Guide for C Clients] |Provides
-programming and reference information for developers working with
-Message Queue who want to use the C language binding to the Message
-Queue messaging service to send, receive, and process Message Queue
-messages.
-|=======================================================================
-
-
-[[GSUPG00021]][[giprl]]
-
-
-[[related-documentation]]
-Related Documentation
-~~~~~~~~~~~~~~~~~~~~~
-
-The following tutorials explain how to develop Java EE applications:
-
-* http://docs.oracle.com/javaee/7/firstcup/doc/home.html[Your First Cup:
-An Introduction to the Java EE Platform]
-(`http://docs.oracle.com/javaee/7/firstcup/doc/home.html`). For beginning
-Java EE programmers, this short tutorial explains the entire process for
-developing a simple enterprise application. The sample application is a
-web application that consists of a component that is based on the
-Enterprise JavaBeans specification, a JAX-RS web service, and a
-JavaServer Faces component for the web front end.
-* http://docs.oracle.com/javaee/7/tutorial/doc/home.html[The Java EE 7
-Tutorial] (`http://docs.oracle.com/javaee/7/tutorial/doc/home.html`).
-This comprehensive tutorial explains how to use Java EE 7 platform
-technologies and APIs to develop Java EE applications.
-
-Javadoc tool reference documentation for packages that are provided with
-GlassFish Server is available as follows.
-
-* The API specification for version 7 of Java EE is located at
-`http://docs.oracle.com/javaee/7/api/`.
-* The API specification for GlassFish Server 4.0, including Java EE 7
-platform packages and nonplatform packages that are specific to the
-GlassFish Server product, is located at
-`http://glassfish.java.net/nonav/docs/v3/api/`.
-
-Additionally, the
-http://www.oracle.com/technetwork/java/javaee/tech/index.html[Java EE
-Specifications]
-(`http://www.oracle.com/technetwork/java/javaee/tech/index.html`) might
-be useful.
-
-For information about creating enterprise applications in the NetBeans
-Integrated Development Environment (IDE), see the
-http://www.netbeans.org/kb/[NetBeans Documentation, Training & Support
-page] (`http://www.netbeans.org/kb/`).
-
-For information about the Java DB database for use with the GlassFish
-Server, see the
-http://www.oracle.com/technetwork/java/javadb/overview/index.html[Java
-DB product page]
-(`http://www.oracle.com/technetwork/java/javadb/overview/index.html`).
-
-The Java EE Samples project is a collection of sample applications that
-demonstrate a broad range of Java EE technologies. The Java EE Samples
-are bundled with the Java EE Software Development Kit (SDK) and are also
-available from the http://glassfish-samples.java.net/[Java EE Samples
-project page] (`http://glassfish-samples.java.net/`).
-
-[[GSUPG00022]][[fwbkx]]
-
-
-[[typographic-conventions]]
-Typographic Conventions
-~~~~~~~~~~~~~~~~~~~~~~~
-
-The following table describes the typographic changes that are used in
-this book.
-
-[width="100%",cols="<14%,<37%,<49%",options="header",]
-|=======================================================================
-|Typeface |Meaning |Example
-|`AaBbCc123` |The names of commands, files, and directories, and
-onscreen computer output a|
-Edit your `.login` file.
-
-Use `ls` `a` to list all files.
-
-`machine_name% you have mail.`
-
-|`AaBbCc123` |What you type, contrasted with onscreen computer output a|
-`machine_name%` `su`
-
-`Password:`
-
-|AaBbCc123 |A placeholder to be replaced with a real name or value |The
-command to remove a file is `rm` filename.
-
-|AaBbCc123 |Book titles, new terms, and terms to be emphasized (note
-that some emphasized items appear bold online) a|
-Read Chapter 6 in the User's Guide.
-
-A cache is a copy that is stored locally.
-
-Do not save the file.
-
-|=======================================================================
-
-
-[[GSUPG00023]][[fquvc]]
-
-
-[[symbol-conventions]]
-Symbol Conventions
-~~~~~~~~~~~~~~~~~~
-
-The following table explains symbols that might be used in this book.
-
-[width="100%",cols="<10%,<26%,<28%,<36%",options="header",]
-|=======================================================================
-|Symbol |Description |Example |Meaning
-|`[ ]` |Contains optional arguments and command options. |`ls [-l]` |The
-`-l` option is not required.
-
-|`{ \| }` |Contains a set of choices for a required command option.
-|`-d {y\|n}` |The `-d` option requires that you use either the `y`
-argument or the `n` argument.
-
-|`${ }` |Indicates a variable reference. |`${com.sun.javaRoot}`
-|References the value of the `com.sun.javaRoot` variable.
-
-|- |Joins simultaneous multiple keystrokes. |Control-A |Press the
-Control key while you press the A key.
-
-|+ + |Joins consecutive multiple keystrokes. |Ctrl+A+N |Press the
-Control key, release it, and then press the subsequent keys.
-
-|> |Indicates menu item selection in a graphical user interface. |File >
-New > Templates |From the File menu, choose New. From the New submenu,
-choose Templates.
-|=======================================================================
-
-
-[[GSUPG00024]][[ghpfg]]
-
-
-[[default-paths-and-file-names]]
-Default Paths and File Names
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following table describes the default paths and file names that are
-used in this book.
-
-[width="100%",cols="<14%,<34%,<52%",options="header",]
-|=======================================================================
-|Placeholder |Description |Default Value
-|as-install + a|
-Represents the base installation directory for GlassFish Server.
-
-In configuration files, as-install is represented as follows:
-
-`${com.sun.aas.installRoot}`
-
- a|
-Installations on the Oracle Solaris operating system, Linux operating
-system, and Mac OS operating system:
-
-user's-home-directory`/glassfish3/glassfish`
-
-Installations on the Windows operating system:
-
-SystemDrive`:\glassfish3\glassfish`
-
-|as-install-parent + |Represents the parent of the base installation
-directory for GlassFish Server. a|
-Installations on the Oracle Solaris operating system, Linux operating
-system, and Mac operating system:
-
-user's-home-directory`/glassfish3`
-
-Installations on the Windows operating system:
-
-SystemDrive`:\glassfish3`
-
-|domain-root-dir + |Represents the directory in which a domain is
-created by default. |as-install`/domains/`
-
-|domain-dir + a|
-Represents the directory in which a domain's configuration is stored.
-
-In configuration files, domain-dir is represented as follows:
-
-`${com.sun.aas.instanceRoot}`
-
- |domain-root-dir`/`domain-name
-
-|instance-dir + |Represents the directory for a server instance.
-|domain-dir`/`instance-name
-|=======================================================================
diff --git a/docs/upgrade-guide/src/main/jbake/content/title.adoc b/docs/upgrade-guide/src/main/jbake/content/title.adoc
deleted file mode 100644
index 9a8c1b7..0000000
--- a/docs/upgrade-guide/src/main/jbake/content/title.adoc
+++ /dev/null
@@ -1,59 +0,0 @@
-type=page
-status=published
-title=Eclipse GlassFish Server Upgrade Guide, Release 5.1
-next=preface.html
-prev=lot.html
-~~~~~~
-Eclipse GlassFish Server Upgrade Guide, Release 5.1
-===================================================
-
-[[eclipse-glassfish-server]]
-Eclipse GlassFish Server
-------------------------
-
-Upgrade Guide
-
-Release 5.1
-
-Contributed 2018, 2019
-
-This guide explains how to upgrade to Eclipse GlassFish Server 
-5.1 from previous GlassFish Server and Sun GlassFish Enterprise
-Server product releases. Also included in this guide are instructions
-for upgrading configuration data and Java EE applications from
-binary-compatible earlier versions of this software to work with
-Eclipse GlassFish Server 5.1. Finally, this guide describes
-compatibility issues that affect data and applications that are to be
-migrated.
-
-Note: The main thrust of the Eclipse GlassFish Server 5.1
-release is to provide an application server for developers to explore
-and begin exploiting the new and updated technologies in the Java EE 7
-platform. Thus, the upgrade feature of GlassFish Server was not a focus
-of this release. The feature is included in the release, but it may not
-function properly with some of the new features added in support of the
-Java EE 7 platform.
-
-[[sthref1]]
-
-'''''
-
-Eclipse GlassFish Server Upgrade Guide, Release 5.1
-
-Copyright © 2013, 2019 Oracle and/or its affiliates. All rights reserved.
-
-This program and the accompanying materials are made available under the 
-terms of the Eclipse Public License v. 2.0, which is available at 
-http://www.eclipse.org/legal/epl-2.0. 
-
-SPDX-License-Identifier: EPL-2.0
-
-Oracle and Java are registered trademarks of Oracle and/or its 
-affiliates. Other names may be trademarks of their respective owners. 
-
-Intel and Intel Xeon are trademarks or registered trademarks of Intel 
-Corporation. All SPARC trademarks are used under license and are 
-trademarks or registered trademarks of SPARC International, Inc. AMD, 
-Opteron, the AMD logo, and the AMD Opteron logo are trademarks or 
-registered trademarks of Advanced Micro Devices. UNIX is a registered 
-trademark of The Open Group. 
diff --git a/docs/upgrade-guide/src/main/jbake/content/upgrade-compatibility-issues.adoc b/docs/upgrade-guide/src/main/jbake/content/upgrade-compatibility-issues.adoc
deleted file mode 100644
index 9ae186a..0000000
--- a/docs/upgrade-guide/src/main/jbake/content/upgrade-compatibility-issues.adoc
+++ /dev/null
@@ -1,1082 +0,0 @@
-type=page
-status=published
-title=GlassFish Server Upgrade Compatibility Issues
-next=upgrading-legacy-installation.html
-prev=preface.html
-~~~~~~
-GlassFish Server Upgrade Compatibility Issues
-=============================================
-
-[[GSUPG00002]][[abmaq]]
-
-
-[[glassfish-server-upgrade-compatibility-issues]]
-1 GlassFish Server Upgrade Compatibility Issues
------------------------------------------------
-
-This section describes some compatibility issues between GlassFish
-Server 4.0 and earlier product releases. This section also describes
-some compatibility issues that affect Java applications that run on
-earlier product releases with which Oracle GlassFish Server 4.0 is
-binary-compatible. When you upgrade to GlassFish Server 4.0, you must
-address these issues.
-
-The following topics are addressed here:
-
-* link:#gjwpd[Binary-Compatible Releases For GlassFish Server 4.0]
-* link:#gkric[New Default Installation Directory]
-* link:#gklhr[Changes to Group Management Service Settings]
-* link:#geyyk[Application Client Interoperability]
-* link:#gktad[Node Agent Support]
-* link:#gkrjm[HADB and `hadbm` Command Support]
-* link:#abmbc[Command Line Interface: The `asadmin` Command]
-* link:#gflnv[Applications That Use Java DB]
-* link:#gjizi[Applications That Use Persistence]
-* link:#gjiqj[HTTP Service to Network Service Changes]
-* link:#gktkt[NSS Cryptographic Token Support]
-
-[[gjwpd]][[GSUPG00028]][[binary-compatible-releases-for-glassfish-server-4.0]]
-
-Binary-Compatible Releases For GlassFish Server 4.0
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-GlassFish Server Open Source Edition 4.0 is binary-compatible with the
-following earlier releases of the software:
-
-* Sun GlassFish Enterprise Server v2.1.1 (Enterprise and Developer
-Profiles)
-* Sun GlassFish Enterprise Server v3
-* GlassFish Server Open Source Edition 3.0.1
-* GlassFish Server Open Source Edition 3.1
-* GlassFish Server Open Source Edition 3.1.1
-
-Java applications that run on these releases also work on GlassFish
-Server Open Source Edition 4.0 except for the compatibility issues that
-are listed in the remainder of this chapter.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-The compatibility issues that are listed in the remainder of this
-chapter do not affect Java applications that run on Sun GlassFish
-Enterprise Server v3 and GlassFish Server 3.0.1. The differences between
-GlassFish Server 4.0 and the Enterprise Server v3 releases do not affect
-applications and data.
-
-|=======================================================================
-
-
-[[gkric]][[GSUPG00029]][[new-default-installation-directory]]
-
-New Default Installation Directory
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The default GlassFish Server 4.0 installation directories are as
-follows:
-
-Solaris, Linux, and Mac OS X systems::
-[source,oac_no_warn]
-----
-user-home-directory/glassfish3
-----
-Windows systems::
-[source,oac_no_warn]
-----
-SystemDrive\glassfish3
-----
-
-In GlassFish Server 3.0.1 and Enterprise Server v3, the default
-installation root directory was `glassfishv3`.
-
-[[gklhr]][[GSUPG00030]][[changes-to-group-management-service-settings]]
-
-Changes to Group Management Service Settings
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The functionality of the Group Management Service (GMS) has not changed
-since Sun GlassFish Enterprise Server v2.1.1, but the names of GMS
-settings have been changed in the Administration Console to make them
-more understandable. These changes are made automatically during the
-upgrade process.
-
-Changes to settings on the Edit Group Management Service page in the
-Administration Console are summarized in the following table.
-
-[[sthref3]][[gklho]]
-
-Table 1-1 GMS Administration Console Settings Changes from 2.1.1 to 4.0
-
-[width="100%",cols="<50%,<50%",options="header",]
-|=================================================
-|Old Setting Name |New Setting Name
-|Protocol Maximum Trial |Maximum Missed Heartbeats
-|Protocol Timeout |Heartbeat Frequency
-|Ping Timeout |Group Discovery Timeout
-|Verified Timeout |Failure Verification Wait Time
-|=================================================
-
-
-The Merge Protocol settings from Sun GlassFish Enterprise Server v2.1.1
-are not supported and have been removed.
-
-[[geyyk]][[GSUPG00031]][[application-client-interoperability]]
-
-Application Client Interoperability
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The Java EE 6 platform specification imposes stricter requirements than
-Java EE 5 did on which JAR files can be visible to various modules
-within an EAR file. In particular, application clients must not have
-access to EJB JAR files or other JAR files in the EAR file unless they
-use a `Class-Path` header in the manifest file, or unless references use
-the standard Java SE mechanisms (extensions, for example), or use the
-Java EE `library-directory` mechanism. Deployed Java EE 5 applications
-that are upgraded to GlassFish Server 4.0 will have the `compatibility`
-property set to `v2` and will run without change on GlassFish Server
-4.0. You may, however, want to consider modifying the applications to
-conform to Java EE 6 requirements.
-
-If your upgrade includes a deployed application with an application
-client, you will need to retrieve the client stubs using GlassFish
-Server 4.0 in order to run the client. Use the
-`asadmin get-client-stubs` command.
-
-If you try to run the application client before retrieving the client
-stubs, you will see the following error message:
-
-[source,oac_no_warn]
-----
-Invalid or corrupt jarfile jar-file-name
-----
-
-If you commonly distribute application clients to remote systems from
-which users will run them, you must not only retrieve the client stubs,
-but you must also run the `package-appclient` utility for GlassFish
-Server 4.0 to upgrade the GlassFish Server system files. This utility
-creates a JAR file, which you can then expand on the remote systems.
-
-Application clients use EJBs, web services, or other enterprise
-components that are in the application server (on the server side). The
-application client and the application server must use the same version
-and implementation of the RMI-IIOP protocol. GlassFish Server 4.0 does
-not support communication between different versions of the protocol
-implementation. You cannot run application clients with one version of
-the application server runtime with a server that has a different
-version. Most often, this would happen if you upgraded the server but
-had not upgraded all the application client installations. If you run
-the `package-appclient` utility, this issue will not arise.
-
-You can use the Java Web Start support to distribute and launch the
-application client. If the runtime on the server has changed since the
-end-user last used the application client, Java Web Start automatically
-retrieves the updated runtime. Java Web Start enables you to keep the
-clients and servers synchronized and using the same runtime.
-
-[[gktad]][[GSUPG00032]][[node-agent-support]]
-
-Node Agent Support
-~~~~~~~~~~~~~~~~~~
-
-GlassFish Server 4.0 does not support node agents. When updating from
-installations of earlier product versions in which node agents were
-configured, the cluster definitions will be migrated, but the clustered
-instances themselves must be manually re-created. See
-link:upgrading-legacy-installation.html#gfybw[Upgrading Clusters and Node
-Agent Configurations] for more information.
-
-[[gkrjm]][[GSUPG00033]][[hadb-and-hadbm-command-support]]
-
-HADB and `hadbm` Command Support
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-GlassFish Server 4.0 does not support HADB or the `hadbm` management
-command.
-
-Instead of HADB, GlassFish Server 4.0 supports high availability
-clustering by means of in-memory session state replication and
-ActiveCache for GlassFish. See "link:../ha-administration-guide/overview.html#GSHAG00002[High Availability in
-GlassFish Server]" in GlassFish Server Open Source Edition High
-Availability Administration Guide for more information.
-
-[[abmbc]][[GSUPG00034]][[command-line-interface-the-asadmin-command]]
-
-Command Line Interface: The `asadmin` Command
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following sections describe changes to the command line utility
-`asadmin`:
-
-* link:#abmbd[Deprecated `asadmin` Subcommands]
-* link:#abmbf[Deprecated, Unsupported, and Obsolete Options]
-
-For more information about `asadmin` and its subcommands, see the
-link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].
-
-[[abmbd]][[GSUPG00053]][[deprecated-asadmin-subcommands]]
-
-Deprecated `asadmin` Subcommands
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-In GlassFish Server 4.0, it is recommended that utility options of the
-`asadmin` command precede the subcommand. Utility options are options
-that control the behavior of the `asadmin` utility, as distinguished
-from subcommand options. Use of the following options after the
-subcommand is deprecated.
-
-* `--host`
-* `--port`
-* `--user`
-* `--passwordfile`
-* `--terse`
-* `--secure`
-* `--echo`
-* `--interactive`
-
-[[abmbf]][[GSUPG00054]][[deprecated-unsupported-and-obsolete-options]]
-
-Deprecated, Unsupported, and Obsolete Options
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Options in link:#gaeki[Table 1-2] are deprecated or no longer supported,
-or are obsolete and are ignored.
-
-[[sthref4]][[gaeki]]
-
-Table 1-2 Deprecated, Unsupported, and Obsolete Options for `asadmin`
-and Subcommands
-
-[width="100%",cols="<33%,<67%",options="header",]
-|=======================================================================
-|Option |Affected Subcommands
-|`--acceptlang` |Unsupported for the `create-virtual-server` subcommand.
-
-|`--acls` |Unsupported for the `create-virtual-server` subcommand.
-
-|`--adminpassword` |Unsupported for all relevant subcommands. Use
-`--passwordfile` instead.
-
-|`--autoapplyenabled` |Obsolete for the `create-http-lb` subcommand.
-
-|`--autohadb` |Obsolete for the `create-cluster` subcommand.
-
-|`--autohadboverride` |Obsolete for the `start-cluster` subcommand and
-the `stop-cluster` subcommand
-
-|`--blockingenabled` |Unsupported for the `create-http-listener`
-subcommand.
-
-|`--configfile` |Unsupported for the `create-virtual-server` subcommand.
-
-|`--defaultobj` |Unsupported for the `create-virtual-server` subcommand.
-
-|`--defaultvs` |Deprecated for the `create-http-listener` subcommand.
-Use `--default-virtual-server` instead.
-
-|`--description` |Obsolete for the `restore-domain` subcommand.
-
-|`--devicesize` |Obsolete for the `create-cluster` subcommand.
-
-|`--haadminpassword` |Obsolete for the `create-cluster` subcommand.
-
-|`--haadminpasswordfile` |Obsolete for the `create-cluster` subcommand.
-
-|`--haagentport` |Obsolete for the `create-cluster` subcommand.
-
-|`--haproperty` |Obsolete for the `create-cluster` subcommand.
-
-|`--heartbeataddress` |Deprecated for the `create-cluster` subcommand.
-Use `--multicastaddress` instead.
-
-|`--heartbeatport` |Deprecated for the `create-cluster` subcommand. Use
-`--multicastport` instead.
-
-|`--hosts` |Obsolete for the `create-cluster` subcommand.
-
-|`--ignoreDescriptorItem` |Replaced by the all lowercase option
-`--ignoredescriptoritem` in the `set-web-context-param` subcommand and
-the `set-web-env-entry` subcommand.
-
-|`--mime` |Unsupported for the `create-virtual-server` subcommand.
-
-|`--password` |Unsupported for all remote subcommands. Use
-`--passwordfile` instead.
-
-|`--path` |Unsupported for the `create-domain` subcommand. Use
-`--domaindir` instead.
-
-|`--portbase` |Obsolete only for the `create-cluster` subcommand. This
-option is still valid in other subcommands such as `create-domain`,
-`create-instance`, and `create-local-instance`.
-
-|`--resourcetype` |Unsupported for all relevant subcommands. Use
-`--restype` instead.
-
-|`--retrievefile` |Obsolete for the `export-http-lb-config` subcommand.
-
-|`--setenv` |Obsolete for the `start-instance` subcommand.
-
-|`--target` a|
-Obsolete only for the following subcommands:
-
-* `create-connector-connection-pool`
-* `create-resource-adapter-config`
-* `delete-connector-connection-pool`
-* `delete-connector-security-map`
-* `delete-jdbc-connection-pool`
-* `delete-resource-ref`
-
-Replaced by an operand in the `list-custom-resources` subcommand and the
-`list-jndi-entries` subcommand:
-
-|=======================================================================
-
-
-[[gflnv]][[GSUPG00035]][[applications-that-use-java-db]]
-
-Applications That Use Java DB
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The directory location of Java DB in GlassFish Server 4.0 has changed
-from its location in previous installations. Suppose that you have
-deployed applications that use Java DB databases in your previous server
-installation, and you upgrade your existing installation to GlassFish
-Server 4.0. If you run the `asadmin start-database` command and
-successfully start Java DB, you could run into problems while trying to
-run applications that were deployed on your previous server
-installation.
-
-To solve this problem, you can copy the `databases` directory from your
-previous installation to as-install`/databases`. Make sure the database
-is not running when you do this.
-
-Alternatively, you can perform these steps:
-
-1.  Use the `asadmin start-database` command with the `--dbhome` option
-pointing to the `databases` directory in the older version of Java DB.
-For example: +
-[source,oac_no_warn]
-----
-asadmin start-database --dbhome c:\glassfish\databases
-----
-2.  After upgrade, start GlassFish Server 4.0.
-
-[[gjizi]][[GSUPG00036]][[applications-that-use-persistence]]
-
-Applications That Use Persistence
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-GlassFish Server 4.0 and 3.0.1, and Sun GlassFish Enterprise Server v3
-use the persistence provider EclipseLink, while earlier versions used
-TopLink Essentials.
-
-An application that uses the container to create an `EntityManager` or
-`EntityManagerFactory` and that used Toplink Essentials as its provider
-will work in GlassFish Server 4.0. The container creates an
-`EntityManager` if the application uses the `@PersistenceContext`
-annotation to inject an `EntityManager`, as in the following example:
-
-[source,oac_no_warn]
-----
-@PersistenceContext
-EntityManager em;
-----
-
-The container creates an `EntityManagerFactory` if the application uses
-the `@PersistenceUnit` annotation to inject an `EntityManagerFactory`,
-as in the following example:
-
-[source,oac_no_warn]
-----
-@PersistenceUnit
-EntityManagerFactory emf;
-
-EntityManager em = emf.createEntityManager();
-----
-
-When the application is loaded, GlassFish Server 4.0 will translate the
-provider to EclipseLink and will also translate `toplink.*` properties
-in the `persistence.xml` to corresponding EclipseLink properties. (The
-actual `persistence.xml` file remains unchanged.)
-
-Under certain circumstances, however, you may have to modify the
-`persistence.xml` file or your code:
-
-* If your application uses Java SE code to create the
-`EntityManagerFactory`, you will need to change your `persistence.xml`
-file for both the `provider` element and for any `toplink.*` properties
-to use the EclipseLink equivalents. An application uses Java SE code if
-it uses the `javax.persistence.Persistence` class to create the
-`EntityManagerFactory`, as in the following example: +
-[source,oac_no_warn]
-----
-EntityManagerFactory emf =
-    javax.persistence.Persistence.createEntityManagerFactory("Order");
-EntityManager em = emf.createEntityManager();
-----
-In this case, change the `provider` element to specify the following: +
-[source,oac_no_warn]
-----
-<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
-----
-* If the application itself contains any TopLink Essentials-specific
-code and therefore contains casts to `oracle.toplink.*`, you must change
-the code to cast to `org.eclipse.persistence.*`. You can use the package
-renamer tool described on the
-http://wiki.eclipse.org/EclipseLink/Examples/MigratingFromOracleTopLink#Rename_Packages[Eclipse
-wiki]
-(`http://wiki.eclipse.org/EclipseLink/Examples/MigratingFromOracleTopLink#Rename_Packages`)
-to do this. This tool is not provided with GlassFish Server 4.0,
-however, so you must obtain it from the EclipseLink project download
-site.
-
-[[gjiqj]][[GSUPG00037]][[http-service-to-network-service-changes]]
-
-HTTP Service to Network Service Changes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-In GlassFish Server 4.0, most HTTP Service settings are defined in the
-Network Service configuration that was introduced in Sun GlassFish
-Enterprise Server v3.
-
-The changes are described in the following sections.
-
-* link:#gipsa[Changes to Dotted Names]
-* link:#giprg[Changes to `asadmin` Subcommands]
-* link:#gipfo[Remapping of HTTP Service Attributes and Properties]
-* link:#gipcg[New Network Service Elements and Attributes]
-
-[[gipsa]][[GSUPG00055]][[changes-to-dotted-names]]
-
-Changes to Dotted Names
-^^^^^^^^^^^^^^^^^^^^^^^
-
-The dotted name hierarchy for the HTTP Service configuration in
-GlassFish Server 4.0 is shown below. Elements that are no longer
-supported are `request-processing`, `keep-alive`, `connection-pool`,
-`http-protocol`, `http-file-cache`, and `http-listener`. During the
-upgrade process, these discontinued elements are remapped to the new
-configuration automatically and then deleted.
-
-[source,oac_no_warn]
-----
-config
-    http-service
-        access-log
-        request-processing
-        keep-alive
-        connection-pool
-        http-protocol
-        http-file-cache
-        http-listener
-            ssl
-            property
-        virtual-server
-            http-access-log
-            property
-        property
-    thread-pools
-        thread-pool
-----
-
-The dotted name hierarchy for the GlassFish Server 4.0 Network Service
-and HTTP Service configurations is shown below. The `network-config`
-element and all its children are new except for `ssl`.
-
-[source,oac_no_warn]
-----
-config
-    network-config
-        transports
-            selection-key-handler
-            transport
-        protocols
-            protocol
-                http
-                    file-cache
-                port-unification
-                    protocol-finder
-                protocol-chain-instance-handler
-                    protocol-chain
-                protocol-filter
-                ssl
-        network-listeners
-            network-listener
-    http-service
-        access-log
-        virtual-server
-            http-access-log
-            property
-        property
-    thread-pools
-        thread-pool
-----
-
-The following example compares the commands for setting a listener port
-for Sun GlassFish Enterprise Server v3 and GlassFish Server 4.0. Note
-that the configuration for Enterprise Server v3 also applies to all
-earlier Enterprise Server 2.x releases.
-
-* Command for Sun GlassFish Enterprise Server v3 and earlier: +
-[source,oac_no_warn]
-----
-asadmin set server-config.http-service.http-listener.http-1.listenerport=4321
-----
-* Command for GlassFish Server 4.0: +
-[source,oac_no_warn]
-----
-asadmin set server-config.network-config.network-listeners.network-\
-listener.http-1.listenerport=4321
-----
-
-[[giprg]][[GSUPG00056]][[changes-to-asadmin-subcommands]]
-
-Changes to `asadmin` Subcommands
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To accommodate the move of HTTP Service into the new Network Service
-configuration, link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`] subcommands are changed as
-follows:
-
-* The link:../reference-manual/create-ssl.html#GSRFM00058[`create-ssl`] subcommand has a new `--type`
-parameter value, `network-listener`.
-* The link:../reference-manual/create-virtual-server.html#GSRFM00062[`create-virtual-server`] SUBcommand has a new
-parameter, `--networklisteners`.
-* The link:../reference-manual/create-http-listener.html#GSRFM00030[`create-http-listener`] subcommand adds a
-`network-listener` element to the domain configuration. The syntax and
-options of this commands are unchanged.
-
-[[gipfo]][[GSUPG00057]][[remapping-of-http-service-attributes-and-properties]]
-
-Remapping of HTTP Service Attributes and Properties
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The following tables describe how attributes and properties in the HTTP
-Service configuration for GlassFish Server 4.0 are remapped to
-attributes in the Network Service configuration for older product
-releases. If you use a configuration from a Sun GlassFish Enterprise
-Server v2 or v3 release, this remapping happens automatically and then
-discontinued elements are deleted.
-
-[[sthref5]][[gipfy]]
-
-Table 1-3 `com.sun.grizzly` Property Remapping
-
-[width="100%",cols="<33%,<26%,<41%",options="header",]
-|==================================================================
-|`com.sun.grizzly` Property |New Owning Element |New Attribute Name
-|`selector.timeout` |`transport` |`selector-poll-timeout-millis`
-|`displayConfiguration` |`transport` |`display-configuration`
-|`enableSnoop` |`transport` |`snoop-enabled`
-|`readTimeout` |`transport` |`read-timeout-millis`
-|`writeTimeout` |`transport` |`write-timeout-millis`
-|==================================================================
-
-
-[[sthref6]][[gipfn]]
-
-Table 1-4 `connection-pool` Attribute Remapping
-
-[width="100%",cols="<41%,<19%,<40%",options="header",]
-|=======================================================================
-|`connection-pool` Attribute |New Owning Element |New Attribute Name
-|`queue-size-in-bytes` |`thread-pool` |`max-queue-size`
-
-|`max-pending-count` |`transport` |`max-connections-count`
-
-|`receive-buffer-size-in-` `bytes` |`http` |`request-body-buffer-size-`
-`bytes`
-
-|`send-buffer-size-in-bytes` |`http` |`send-buffer-size-bytes`
-|=======================================================================
-
-
-[[sthref7]][[gipcv]]
-
-Table 1-5 `http-file-cache` Attribute Remapping
-
-[width="100%",cols="<50%,<17%,<33%",options="header",]
-|===================================================================
-|`http-file-cache` Attribute |New Owning Element |New Attribute Name
-|`file-caching-enabled` |`file-cache` |`enabled`
-|`max-age-in-seconds` |`file-cache` |`max-age-seconds`
-|`medium-file-space-in-bytes` |`file-cache` |`max-cache-size-bytes`
-|`max-files-count` |`file-cache` |`max-files-count`
-|`globally-enabled` |none |not supported
-|`medium-file-size-limit-in-bytes` |none |not supported
-|`small-file-size-limit-in-bytes` |none |not supported
-|`small-file-space-in-bytes` |none |not supported
-|`file-transmission-enabled` |none |not supported
-|`hash-init-size` |none |not supported
-|===================================================================
-
-
-[[sthref8]][[gipev]]
-
-Table 1-6 `http-listener` Attribute Remapping
-
-[width="100%",cols="<37%,<27%,<36%",options="header",]
-|=================================================================
-|`http-listener` Attribute |New Owning Element |New Attribute Name
-|`id` |`network-listener` |`name`
-|`address` |`network-listener` |`address`
-|`port` |`network-listener` |`port`
-|`enabled` |`network-listener` |`enabled`
-|`acceptor-threads` |`transport` |`acceptor-threads`
-|`security-enabled` |`protocol` |`security-enabled`
-|`default-virtual-server` |`http` |`default-virtual-server`
-|`server-name` |`http` |`server-name`
-|`redirect-port` |`http` |`redirect-port`
-|`xpowered-by` |`http` |`xpowered-by`
-|`external-port` |none |not supported
-|`family` |none |not supported
-|`blocking-enabled` |none |not supported
-|=================================================================
-
-
-[[sthref9]][[gipdo]]
-
-Table 1-7 `http-listener` Property Remapping
-
-[width="100%",cols="<43%,<15%,<42%",options="header",]
-|=======================================================================
-|`http-listener` Property |New Owning Element |New Attribute Name
-|`maxKeepAliveRequests` |`http` |`max-connections`
-
-|`authPassthroughEnabled` |`http` |`auth-pass-through-enabled`
-
-|`compression` |`http` |`compression`
-
-|`compressableMimeType` |`http` |`compressable-mime-type`
-
-|`noCompressionUserAgents` |`http` |`no-compression-user-agents`
-
-|`compressionMinSize` |`http` |`compression-min-size-bytes`
-
-|`restrictedUserAgents` |`http` |`restricted-user-agents`
-
-|`cometSupport` |`http` |`comet-support-enabled`
-
-|`connectionUploadTimeout` |`http` |`connection-upload-timeout-`
-`millis`
-
-|`disableUploadTimeout` |`http` |`upload-timeout-enabled`
-
-|`chunkingDisabled` |`http` |`chunking-enabled`
-
-|`uriEncoding` |`http` |`uri-encoding`
-
-|`traceEnabled` |`http` |`trace-enabled`
-
-|`rcmSupport` |`http` |`rcm-support-enabled`
-
-|`jkEnabled` |`network-` `listener` |`jk-enabled`
-
-|`crlFile` |`ssl` |`crl-file`
-
-|`trustAlgorithm` |`ssl` |`trust-algorithm`
-
-|`trustMaxCertLength` |`ssl` |`trust-max-cert-length-bytes`
-
-|`tcpNoDelay` |`transport` |`tcp-no-delay`
-
-|`bufferSize` |`transport` |`buffer-size-bytes`
-
-|`use-nio-direct-bytebuffer` |`transport` |`byte-buffer-type`
-
-|`proxyHandler` |none |not supported
-
-|`proxiedProtocols` |none |not supported
-
-|`recycle-objects` |none |not supported
-
-|`reader-threads` |none |not supported
-
-|`acceptor-queue-length` |none |not supported
-
-|`reader-queue-length` |none |not supported
-
-|`connectionTimeout` |none |not supported
-
-|`monitoring-cache-enabled` |none |not supported
-
-|`monitoring-cache-refresh-in-` `millis` |none |not supported
-
-|`ssl-cache-entries` |none |not supported
-
-|`ssl3-session-timeout` |none |not supported
-
-|`ssl-session-timeout` |none |not supported
-|=======================================================================
-
-
-[[sthref10]][[gipel]]
-
-Table 1-8 `http-protocol` Attribute Remapping
-
-[width="100%",cols="<34%,<33%,<33%",options="header",]
-|=================================================================
-|`http-protocol` Attribute |New Owning Element |New Attribute Name
-|`version` |`http` |`version`
-|`forced-response-type` |`http` |`forced-response-type`
-|`default-response-type` |`http` |`default-response-type`
-|`dns-lookup-enabled` |none |not supported
-|`ssl-enabled` |none |not supported
-|=================================================================
-
-
-[[sthref11]][[gipfa]]
-
-Table 1-9 `http-service` Property Remapping
-
-[width="100%",cols="<34%,<33%,<33%",options="header",]
-|=======================================================================
-|`http-service` Property |New Owning Element |New Attribute or Property
-Name
-|`accessLoggingEnabled` |`http-service`, `virtual-server`
-|`access-logging-enabled` attribute
-
-|`ssl-cache-entries` |`http-service` |unchanged property
-
-|`ssl3-session-timeout` |`http-service` |unchanged property
-
-|`ssl-session-timeout` |`http-service` |unchanged property
-
-|`proxyHandler` |`http-service` |unchanged property
-
-|`connectionTimeout` |`http-service` |unchanged property
-
-|all other properties |none |not supported
-|=======================================================================
-
-
-[[sthref12]][[gipea]]
-
-Table 1-10 `keep-alive` Attribute Remapping
-
-[width="100%",cols="<34%,<33%,<33%",options="header",]
-|==============================================================
-|`keep-alive` Attribute |New Owning Element |New Attribute Name
-|`max-connections` |`http` |`max-connections`
-|`timeout-in-seconds` |`http` |`timeout-seconds`
-|`thread-count` |none |not supported
-|==============================================================
-
-
-[[sthref13]][[gipdh]]
-
-Table 1-11 `request-processing` Attribute Remapping
-
-[width="100%",cols="<43%,<18%,<39%",options="header",]
-|======================================================================
-|`request-processing` Attribute |New Owning Element |New Attribute Name
-|`thread-count` |`thread-pool` |`max-thread-pool-size`
-|`initial-thread-count` |`thread-pool` |`min-thread-pool-size`
-|`header-buffer-length-in-bytes` |`http` |`header-buffer-length-bytes`
-|`request-timeout-in-seconds` |`http` |`request-timeout-seconds`
-|`thread-increment` |none |not supported
-|======================================================================
-
-
-[[sthref14]][[gipdv]]
-
-Table 1-12 `ssl` Attribute Changes
-
-[width="100%",cols="<34%,<22%,<44%",options="header",]
-|=======================================================================
-|Previous Attribute or Property |Previous Owning Element |New `ssl`
-Attribute
-|none |none |`key-store`
-
-|none |none |`trust-store`
-
-|`crlFile` property |`http-listener` |`crl-file`
-
-|`trustAlgorithm` property |`http-listener` |`trust-algorithm`
-
-|`trustMaxCertLength` property |`http-listener`
-|`trust-max-cert-length-bytes`
-
-|all other `ssl` attributes |`ssl` |unchanged
-|=======================================================================
-
-
-[[sthref15]][[gipcj]]
-
-Table 1-13 `thread-pool` Attribute Changes
-
-[width="100%",cols="<44%,<17%,<39%",options="header",]
-|=======================================================================
-|Previous Attribute |Previous Owning Element |New `thread-pool`
-Attribute
-|none |none |`classname`
-
-|none |none |`max-queue-size`
-
-|`thread-pool-id` |`thread-pool` |`name`
-
-|`idle-thread-timeout-in-seconds` |`thread-pool`
-|`idle-thread-timeout-seconds`
-
-|`num-work-queues` |`thread-pool` |not supported
-
-|all other `thread-pool` attributes |`thread-pool` |unchanged
-|=======================================================================
-
-
-[[sthref16]][[gipep]]
-
-Table 1-14 `virtual-server` Attribute Changes
-
-[width="100%",cols="<39%,<24%,<37%",options="header",]
-|=======================================================================
-|Previous Attribute or Property |Previous Owning Element |New
-`virtual-server` Attribute
-|`http-listeners` attribute |`virtual-server` |`network-listeners`
-
-|`accessLoggingEnabled` property |`http-service`
-|`access-logging-enabled`
-
-|`sso-enabled` property |`virtual-server` |`sso-enabled`
-
-|`ssoCookieSecure` property |`virtual-server` |`sso-cookie-secure`
-
-|all other `virtual-server` attributes |`virtual-server` |unchanged
-
-|all other `virtual-server` properties |`virtual-server` |unchanged,
-still properties
-|=======================================================================
-
-
-[[gipcg]][[GSUPG00058]][[new-network-service-elements-and-attributes]]
-
-New Network Service Elements and Attributes
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The following tables describe the Network Service elements and
-attributes that were introduced in Sun GlassFish Enterprise Server v3.
-For attributes and properties remapped from discontinued elements to new
-elements, see link:#gipfo[Remapping of HTTP Service Attributes and
-Properties].
-
-The new `file-cache` element has no new attributes. All of its
-attributes are remapped from the `http-file-cache` element. For details,
-see link:#gipcv[Table 1-5].
-
-[[sthref17]][[gipds]]
-
-Table 1-15 New `http` Attributes
-
-[width="100%",cols="<28%,<32%,<40%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`adapter` |`com.sun.grizzly.tcp. StaticResourcesAdapter` |(Optional)
-Specifies the class name of the static resources adapter.
-
-|`max-post-size-bytes` |`2097152` |(Optional) Specifies the maximum size
-of `POST` actions.
-|=======================================================================
-
-
-For remapped `http` attributes, see link:#gipfn[Table 1-4],
-link:#gipev[Table 1-6], link:#gipdo[Table 1-7], link:#gipel[Table 1-8],
-link:#gipea[Table 1-10], and link:#gipdh[Table 1-11].
-
-[[sthref18]][[gipey]]
-
-Table 1-16 New `network-listener` Attributes
-
-[width="100%",cols="<18%,<11%,<71%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`protocol` |none |Specifies the `name` of the `protocol` associated
-with this `network-listener`. Although this attribute is required, a
-`protocol` is automatically created with the same `name` as the
-`network-listener` when you use `asadmin create-http-listener` to create
-a `network-listener`.
-
-|`thread-pool` |none |(Optional) Specifies the `name` of the
-`thread-pool` associated with this `network-listener`.
-
-|`transport` |none |Specifies the `name` of the `transport` associated
-with this `network-listener`. Although this attribute is required, the
-default `transport` is used when you use `asadmin create-http-listener`
-to create a `network-listener`.
-|=======================================================================
-
-
-For remapped `network-listener` attributes, see link:#gipev[Table 1-6].
-
-[[sthref19]][[gipfg]]
-
-Table 1-17 New `port-unification` Attributes
-
-[width="100%",cols="<19%,<16%,<65%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`name` |none |Specifies a unique name for the `port-unification`.
-
-|`classname` |none |Specifies the class name of the `port-unification`
-implementation.
-|=======================================================================
-
-
-[[sthref20]][[gipdj]]
-
-Table 1-18 New `protocol` Attributes
-
-[width="100%",cols="<18%,<17%,<65%",options="header",]
-|=========================================================
-|Attribute |Default |Description
-|`name` |none |Specifies a unique name for the `protocol`.
-|=========================================================
-
-
-For remapped `protocol` attributes, see link:#gipev[Table 1-6].
-
-[[sthref21]][[gipcr]]
-
-Table 1-19 New `protocol-chain` Attributes
-
-[width="100%",cols="<19%,<17%,<64%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`name` |none |Specifies a unique name for the `protocol-chain`.
-
-|`classname` |none |Specifies the class name of the `protocol-chain`
-implementation.
-
-|`type` |`STATELESS` |Specifies the type of protocol chain.
-|=======================================================================
-
-
-[[sthref22]][[gipfq]]
-
-Table 1-20 New `protocol-chain-instance-handler` Attributes
-
-[width="100%",cols="<19%,<17%,<64%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`name` |none |Specifies a unique name for the
-`protocol-chain-instance-handler`.
-
-|`classname` |none |Specifies the class name of the
-`protocol-chain-instance-handler` implementation.
-|=======================================================================
-
-
-[[sthref23]][[gipeq]]
-
-Table 1-21 New `protocol-filter` Attributes
-
-[width="100%",cols="<19%,<17%,<64%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`name` |none |Specifies a unique name for the `protocol-filter`.
-
-|`classname` |none |Specifies the class name of the `protocol-filter`
-implementation.
-|=======================================================================
-
-
-[[sthref24]][[gipfd]]
-
-Table 1-22 New `protocol-finder` Attributes
-
-[width="100%",cols="<19%,<17%,<64%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`name` |none |Specifies a unique name for the `protocol-finder`.
-
-|`classname` |none |Specifies the class name of the `protocol-finder`
-implementation.
-
-|`protocol` |none |Specifies the `name` of the `protocol` associated
-with this `protocol-finder`.
-|=======================================================================
-
-
-[[sthref25]][[gipft]]
-
-Table 1-23 New `selection-key-handler` Attributes
-
-[width="100%",cols="<19%,<16%,<65%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`name` |none |Specifies a unique name for the `selection-key-handler`.
-
-|`classname` |none |Specifies the class name of the
-`selection-key-handler` implementation.
-|=======================================================================
-
-
-[[sthref26]][[gipfi]]
-
-Table 1-24 New `ssl` Attributes
-
-[width="100%",cols="<19%,<17%,<64%",options="header",]
-|========================================================
-|Attribute |Default |Description
-|`key-store` |none |(Optional) Specifies a key store.
-|`trust-store` |none |(Optional) Specifies a trust store.
-|========================================================
-
-
-For remapped `ssl` attributes, see link:#gipdv[Table 1-12].
-
-[[sthref27]][[gipcc]]
-
-Table 1-25 New `thread-pool` Attributes
-
-[width="100%",cols="<21%,<32%,<47%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`classname` |`com.sun.grizzly.http.StatsThreadPool` |(Optional)
-Specifies the class name of the `thread-pool` implementation.
-
-|`max-queue-size` |`-1` |(Optional) Specifies the maximum number of
-messages that can be queued until threads are available to process them.
-A value of `-1` specifies no limit.
-|=======================================================================
-
-
-For remapped `thread-pool` attributes, see link:#gipfn[Table 1-4],
-link:#gipdh[Table 1-11], and link:#gipcj[Table 1-13].
-
-[[sthref28]][[gipem]]
-
-Table 1-26 New `transport` Attributes
-
-[width="100%",cols="<35%,<27%,<38%",options="header",]
-|=======================================================================
-|Attribute |Default |Description
-|`name` |none |Specifies a unique name for the `transport`.
-
-|`classname` |`com.sun.grizzly. TCPSelectorHandler` |(Optional)
-Specifies the class name of the `transport` implementation.
-
-|`selection-key-handler` |none |(Optional) Specifies the `name` of the
-`selection-key-handler` associated with this `transport`.
-
-|`idle-key-timeout-seconds` |`30` |(Optional) Specifies the idle key
-timeout.
-|=======================================================================
-
-
-For remapped `transport` attributes, see link:#gipfy[Table 1-3],
-link:#gipfn[Table 1-4], link:#gipev[Table 1-6], and link:#gipdo[Table
-1-7].
-
-[[gktkt]][[GSUPG00038]][[nss-cryptographic-token-support]]
-
-NSS Cryptographic Token Support
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-GlassFish Server 4.0 does not support Network Security Services (NSS)
-cryptographic tokens. When upgrading to GlassFish Server 4.0 from
-Enterprise Server v2.x, additional manual configuration steps must be
-performed. These steps are explained later in this guide, in
-link:upgrading-legacy-installation.html#gktnh[Upgrading Installations
-That Use NSS Cryptographic Tokens].
diff --git a/docs/upgrade-guide/src/main/jbake/content/upgrading-legacy-installation.adoc b/docs/upgrade-guide/src/main/jbake/content/upgrading-legacy-installation.adoc
deleted file mode 100644
index b66e98f..0000000
--- a/docs/upgrade-guide/src/main/jbake/content/upgrading-legacy-installation.adoc
+++ /dev/null
@@ -1,1729 +0,0 @@
-type=page
-status=published
-title=Upgrading an Installation of Application Server or GlassFish Server
-prev=upgrade-compatibility-issues.html
-~~~~~~
-Upgrading an Installation of Application Server or GlassFish Server
-===================================================================
-
-[[GSUPG00003]][[abmbq]]
-
-
-[[upgrading-an-installation-of-application-server-or-glassfish-server]]
-2 Upgrading an Installation of Application Server or GlassFish Server
----------------------------------------------------------------------
-
-The Upgrade Tool that is bundled with GlassFish Server 4.0 replicates
-the configuration of a previously installed server in the target
-installation. The Upgrade Tool assists in upgrading the configuration
-and applications from an earlier version of the Application Server or
-GlassFish Server to GlassFish Server 4.0.
-
-In addition to Upgrade Tool, there are three Update Center tools that
-can be used to perform an in-place upgrade to GlassFish Server 4.0 from
-GlassFish Server 3.1.1, 3.1, 3.0.1, and Enterprise Server v3. These
-three Update Center tools are:
-
-* Update Tool
-* Software Update Notifier
-* The `pkg` command-line utility
-
-Upgrade Tool and the three Update Center tools are explained later in
-this chapter.
-
-To view a list of the older versions from which you can upgrade, see
-link:#gjxkx[Supported Releases for Upgrade to GlassFish Server 4.0].
-
-The following topics are addressed here:
-
-* link:#gaejc[Upgrade Overview]
-* link:#abmbr[Performing a Side-By-Side Upgrade With Upgrade Tool]
-* link:#gkthu[Performing an In-Place Upgrade With the Update Center
-Tools]
-* link:#gktnh[Upgrading Installations That Use NSS Cryptographic Tokens]
-* link:#gfybw[Upgrading Clusters and Node Agent Configurations]
-* link:#gkrfh[Correcting Potential Upgrade Problems]
-
-[[gaejc]][[GSUPG00039]][[upgrade-overview]]
-
-Upgrade Overview
-~~~~~~~~~~~~~~~~
-
-The subsections that follow provide information that you will need when
-you perform an upgrade.
-
-The following topics are addressed here:
-
-* link:#gkxum[Upgrade Paths]
-* link:#gdkiw[Upgrade Terminology]
-* link:#gktcb[Summary of Upgrade Tools and Procedures]
-* link:#gjxkx[Supported Releases for Upgrade to GlassFish Server 4.0]
-* link:#gkufi[Upgrading From Version 8.x or Older Product Releases]
-* link:#gkxrp[Upgrading GlassFish Server Inside a Closed Network]
-
-[[gkxum]][[GSUPG00059]][[upgrade-paths]]
-
-Upgrade Paths
-^^^^^^^^^^^^^
-
-There are two general paths you can use when upgrading to GlassFish
-Server 4.0:
-
-Side-by-Side::
-  A side-by-side upgrade means that the new GlassFish Server release is
-  installed in a different directory than the release from which you are
-  upgrading. +
-  In this scenario, you perform the following steps: +
-  1.  Perform a basic installation of GlassFish Server 4.0 in a location
-  other than the one being used for the older product.
-  2.  Use Upgrade Tool to migrate the old configurations and
-  applications to the new GlassFish Server 4.0 directories.
-  3.  Test the new GlassFish Server installation to make sure everything
-  is working properly.
-  4.  When you are satisfied that the new installation works properly,
-  modify your production environment to use the new installation. +
-  The side-by-side upgrade path is typically used for live production
-  environments because it allows you to thoroughly test the new
-  GlassFish Server installation before bringing it into production.
-In-Place::
-  An in-place upgrade means that the new GlassFish Server release is
-  installed directly over and into the same directory as the previous
-  product release. The existing configuration is reused in the updated
-  installation. +
-  In this scenario, you simply use Update Tool, the `pkg` utility, or
-  the Update Notifier in your old installation to overwrite the old
-  installation with the new GlassFish Server 4.0 product. +
-  Performing an in-place upgrade is easier than performing a
-  side-by-side upgrade, but you lose the ability to switch back and
-  forth between the old and new installations. There is also no way to
-  revert an in-place upgrade back to the previous product version.
-  Because of these limitations, in-place upgrades are typically only
-  used by developers and for non-production GlassFish Server
-  deployments. +
-  Note also that it is only possible to perform an in-place upgrade when
-  upgrading from GlassFish Server 3.1.1, 3.1, 3.0.1, or v3. If you are
-  upgrading from product versions prior to 3x, you must perform a
-  side-by-side upgrade.
-
-For a more detailed overview, see link:#gktcb[Summary of Upgrade Tools
-and Procedures].
-
-[[gdkiw]][[GSUPG00060]][[upgrade-terminology]]
-
-Upgrade Terminology
-^^^^^^^^^^^^^^^^^^^
-
-The following are important terms related to the upgrade process.
-
-Source Domain Directory::
-  The directory of the server domain from which you are upgrading to the
-  new version (for example, `c:\glassfish\domains\domain1`).
-Target Root Domain's Directory::
-  The directory where domains are created on the server to which you are
-  upgrading (for example, `c:\glassfish3\glassfish\domains`).
-Master Password::
-  The SSL certificate database password used in operations such as
-  GlassFish Server startup. This term refers to the master password of
-  the installation from which you want to upgrade. You need to specify
-  this password if you have changed it from the default value of
-  `changeit`.
-
-[[gktcb]][[GSUPG00061]][[summary-of-upgrade-tools-and-procedures]]
-
-Summary of Upgrade Tools and Procedures
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-There are several tools you can use to upgrade from an earlier GlassFish
-Server or Enterprise Server installation to GlassFish Server 4.0. The
-general procedures for upgrading to GlassFish Server 4.0 vary depending
-on which tool you use and the product version from which you are
-upgrading.
-
-The following topics are addressed here:
-
-* link:#gktdx[Summary of Tools for Performing an Upgrade]
-* link:#gktdz[Summary of Procedure for Upgrading With Upgrade Tool]
-* link:#gktcl[Summary of Procedure for Upgrading With Update Tool]
-* link:#gkuef[Summary of Procedure for Upgrading With the Software
-Update Notifier]
-* link:#gktnb[Summary of Procedure for Upgrading With the `pkg` Utility]
-
-[[gktdx]][[GSUPG00045]][[summary-of-tools-for-performing-an-upgrade]]
-
-Summary of Tools for Performing an Upgrade
-++++++++++++++++++++++++++++++++++++++++++
-
-There are several tools you can use to perform an upgrade to GlassFish
-Server 4.0 are described below.
-
-* link:#gktcz[Upgrade Tool]
-* link:#gktha[Update Tool and the `pkg` Utility]
-* link:#gkuff[Software Update Notifier]
-
-[[gktcz]][[GSUPG00004]][[upgrade-tool]]
-
-Upgrade Tool
-
-The GlassFish Server Upgrade Tool is tended solely for performing
-side-by-side upgrades from any compatible older product version to
-GlassFish Server 4.0.
-
-Upgrade Tool provides a number of features that aid in the migration of
-older configurations and applications to a new GlassFish Server 4.0
-installation. These features are described in more detail in
-link:#gdkix[Upgrade Tool Functionality].
-
-In GlassFish Server 4.0 Upgrade Tool is installed in the
-as-install`/bin` directory.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Upgrade Tool is the only tool you can use when upgrading to GlassFish
-Server 4.0 from product versions prior to GlassFish Server 3.0.1 or
-Enterprise Server v3.
-
-|=======================================================================
-
-
-See link:#gktdz[Summary of Procedure for Upgrading With Upgrade Tool]
-for an overview of the general procedure for performing an upgrade with
-Upgrade Tool.
-
-[[gktha]][[GSUPG00005]][[update-tool-and-the-pkg-utility]]
-
-Update Tool and the `pkg` Utility
-
-The GlassFish Server Update Tool is a graphical utility that is
-typically used for the day-to-day maintenance of GlassFish Server
-components and additional features. For example, Update Tool can be used
-to update GlassFish Server components or install additional features
-such as OSGi Admin Console.
-
-The command-line counterpart to Update Tool is the `pkg` utility. While
-the `pkg` utility does not provide exactly the same set of features as
-Update Tool, for the purposes of upgrading to GlassFish Server 4.0, the
-`pkg` utility and Update Tool feature sets are almost identical.
-
-In addition to day-to-day maintenance tasks, Update Tool and the `pkg`
-utility can be used to perform an in-place upgrade of an entire
-GlassFish Server 3.0.1 or Enterprise Server v3 installation to the
-GlassFish Server 4.0 or later release.
-
-In GlassFish Server 4.0 Update Tool is installed in the
-as-install-parent`/bin` directory.
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-It is not possible to use Update Tool to upgrade from GlassFish Server
-or Enterprise Server versions prior to 3x. For these older versions, you
-must use the Upgrade Tool, described in link:#gktcz[Upgrade Tool].
-
-|=======================================================================
-
-
-See link:#gktcl[Summary of Procedure for Upgrading With Update Tool] for
-an overview of the general procedure for performing an upgrade with
-Update Tool. For more information about Update Tool in general, see
-"link:../administration-guide/toc.html#GSADG00701[Update Tool]" in GlassFish Server Open Source Edition
-Administration Guide.
-
-[[gkuff]][[GSUPG00006]][[software-update-notifier]]
-
-Software Update Notifier
-
-The GlassFish Server Software Update Notifier is similar to Update Tool
-and the `pkg` utility in that it enables you to perform an in-place
-upgrade from GlassFish Server 3.1.1, 3.1, 3.0.1, or Enterprise Server
-v3. As with Update Tool and the `pkg` utility, you cannot use the
-Software Update tool to upgrade from product releases prior 3.0.1 and
-v3.
-
-The Software Update Notifier is distributed as a configuration option
-during GlassFish Server 4.0, 3.0.1, and Enterprise Server v3
-installation. If installed and enabled, the Software Update Notifier
-monitors your installation and pops up a notification balloon when
-updates or upgrades are available for your product.
-
-See link:#gkuef[Summary of Procedure for Upgrading With the Software
-Update Notifier] for an overview of the general procedure for performing
-an upgrade with the Software Update Notifier. For more information about
-the Update Notifier, refer to the Update Tool online help.
-
-[[gktdz]][[GSUPG00046]][[summary-of-procedure-for-upgrading-with-upgrade-tool]]
-
-Summary of Procedure for Upgrading With Upgrade Tool
-++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-The general procedure for using Upgrade Tool to perform an upgrade to
-GlassFish Server 4.0 from any compatible older version of GlassFish
-Server or Enterprise Server comprises the following steps:
-
-1.  Download GlassFish Server 4.0 and perform a Standard Installation,
-as described in "link:../installation-guide/toc.html#GSING00007[To Install GlassFish Server Using the
-Self-Extracting File]" in GlassFish Server Open Source Edition
-Installation Guide.
-2.  Copy any custom or third-party libraries from the older installation
-to their corresponding locations in the new GlassFish Server 4.0
-installation directories. Note that you should only copy custom or
-third-party libraries here. Do not copy an libraries from the actual
-domain that will be upgraded.
-3.  Run the `asupgrade` command from the new GlassFish Server 4.0
-as-install`/bin` directory.
-4.  Start the new GlassFish Server 4.0 DAS with the
-`asadmin start-domain` subcommand.
-
-This procedure is described in more detail in link:#abmbr[Performing a
-Side-By-Side Upgrade With Upgrade Tool].
-
-[[gktcl]][[GSUPG00047]][[summary-of-procedure-for-upgrading-with-update-tool]]
-
-Summary of Procedure for Upgrading With Update Tool
-+++++++++++++++++++++++++++++++++++++++++++++++++++
-
-The general procedure for using Update Tool to perform an upgrade to
-GlassFish Server 4.0 from GlassFish Server 3.0.1 or Enterprise Server v3
-comprises the following steps:
-
-1.  Manually stop all server instances and the domain.
-2.  Launch Update Tool by using the as-install-parent`/bin/updatetool`
-command in the older product directory.
-3.  In Update Tool, select and install the latest GlassFish Server
-product release. This updates your server to the 4.0 release.
-4.  Upgrade the domain by running the `asadmin start-domain --upgrade`
-subcommand. This performs the upgrade and then shuts down the DAS.
-5.  Restart the DAS normally with the with the `asadmin start-domain`
-subcommand.
-
-This procedure is described in more detail in link:#gktjf[To Upgrade
-Using the Update Tool GUI].
-
-[[gkuef]][[GSUPG00048]][[summary-of-procedure-for-upgrading-with-the-software-update-notifier]]
-
-Summary of Procedure for Upgrading With the Software Update Notifier
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-The general procedure for using the Software Update Notifier to perform
-an upgrade to GlassFish Server 4.0 from GlassFish Server3.0.1 or
-Enterprise Server v3 comprises the following steps:
-
-1.  Wait for the Software Update Notifier to pop up a notification
-balloon informing you that updates are available.
-2.  Click the balloon prompt to launch the Software Update GUI.
-3.  Manually stop all server instances and the domain.
-4.  Use the Software Update GUI to perform the upgrade. This updates
-your server to the 4.0 release.
-5.  Upgrade the domain by running the `asadmin start-domain --upgrade`
-subcommand. This performs the upgrade and then shuts down the DAS.
-6.  Restart the upgraded DAS normally with the with the
-`asadmin start-domain` subcommand.
-
-This procedure is described in more detail in link:#gkuhu[To Upgrade
-Using the Software Update Notifier].
-
-[[gktnb]][[GSUPG00049]][[summary-of-procedure-for-upgrading-with-the-pkg-utility]]
-
-Summary of Procedure for Upgrading With the `pkg` Utility
-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-The general procedure for using the `pkg` utility to perform an upgrade
-to GlassFish Server 4.0 from GlassFish Server3.0.1 or Enterprise Server
-v3 comprises the following steps:
-
-1.  Manually stop all server instances and the domain.
-2.  Run the as-install-parent`/bin/pkg` command with the desired options
-in the older product directory. This updates your server to the 4.0
-release.
-3.  Upgrade the domain by running the `asadmin start-domain --upgrade`
-subcommand. This performs the upgrade and then shuts down the DAS.
-4.  Restart the upgraded DAS normally with the with the
-`asadmin start-domain` subcommand.
-
-This procedure is described in more detail in link:#gktks[To Upgrade
-From the Command Line Using the `pkg` Utility].
-
-[[gjxkx]][[GSUPG00062]][[supported-releases-for-upgrade-to-glassfish-server-4.0]]
-
-Supported Releases for Upgrade to GlassFish Server 4.0
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Upgrades to GlassFish Server 4.0 are supported from the following
-earlier GlassFish Server product releases:
-
-* Sun GlassFish Enterprise Server v2.1.1
-* Sun GlassFish Enterprise Server v3
-* GlassFish Server Open Source Edition 3.0.1
-* GlassFish Server Open Source Edition 3.1
-* GlassFish Server Open Source Edition 3.1.1
-
-[[gkufi]][[GSUPG00063]][[upgrading-from-version-8.x-or-older-product-releases]]
-
-Upgrading From Version 8.x or Older Product Releases
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-It is not possible to upgrade to GlassFish Server 4.0 directly from Sun
-GlassFish Enterprise Server 8.x or older product releases.
-
-To upgrade from a product release that is older than any of those listed
-in link:#gjxkx[Supported Releases for Upgrade to GlassFish Server 4.0],
-you must first upgrade your older product release to one of the releases
-that are supported for upgrade to GlassFish Server 4.0.
-
-For example, to upgrade from any Enterprise Server 8.x release, you
-first need to upgrade that older release to Enterprise Server 2.1.1.
-That is, your upgrade path would be as follows:
-
-Enterprise Server 8.x⇒Enterprise Server 2.1.1⇒GlassFish Server 4.0
-
-Sun GlassFish Enterprise Server 2.1.1 is available for download from the
-http://glassfish.java.net/public/downloadsindex.html[GlassFish Community
-Downloads] (`http://glassfish.java.net/public/downloadsindex.html`)
-page. Instructions for upgrading to Enterprise Server 2.1.1 are provided
-in http://download.oracle.com/docs/cd/E19879-01/821-0180/index.html[Sun
-GlassFish Enterprise Server 2.1.1 Upgrade Guide]
-(`http://docs.oracle.com/cd/E19879-01/821-0180/index.html`).
-
-After upgrading your older Enterprise Server installation to Enterprise
-Server 2.1.1, you can proceed normally with the instructions in this
-guide to complete the upgrade to GlassFish Server 4.0.
-
-[[gkxrp]][[GSUPG00065]][[upgrading-glassfish-server-inside-a-closed-network]]
-
-Upgrading GlassFish Server Inside a Closed Network
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-For instructions on upgrading a GlassFish Server installation in an
-environment where Internet access is not available, see
-"link:../administration-guide/toc.html#GSADG00575[Extending and Updating GlassFish Server Inside a
-Closed Network]" in GlassFish Server Open Source Edition Administration
-Guide.
-
-[[abmbr]][[GSUPG00040]][[performing-a-side-by-side-upgrade-with-upgrade-tool]]
-
-Performing a Side-By-Side Upgrade With Upgrade Tool
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This section explains how to use Upgrade Tool to perform a side-by-side
-upgrade to GlassFish Server 4.0 from any compatible older product
-release.
-
-The following topics are addressed here:
-
-* link:#gktgx[Upgrade Tool Summary]
-* link:#gdkix[Upgrade Tool Functionality]
-* link:#gktjn[To Upgrade From the Command Line Using Upgrade Tool]
-* link:#gaejn[To Upgrade Using the Upgrade Tool Wizard]
-
-[[gktgx]][[GSUPG00066]][[upgrade-tool-summary]]
-
-Upgrade Tool Summary
-^^^^^^^^^^^^^^^^^^^^
-
-The Upgrade Tool upgrades your domain configurations and deployed
-applications. When you use the Upgrade Tool, the source server and the
-target server are normally installed on the same machine, but under
-different install locations. Both server file systems must be accessible
-from the system on which you perform the upgrade.
-
-To perform the upgrade, the user who runs the upgrade needs to have read
-permissions for the source and target directories and write permission
-for the target directory.
-
-You can perform an upgrade using Upgrade Tool in the following ways:
-
-* link:#gktjn[To Upgrade From the Command Line Using Upgrade Tool]
-* link:#gaejn[To Upgrade Using the Upgrade Tool Wizard]
-
-[[gdkix]][[GSUPG00067]][[upgrade-tool-functionality]]
-
-Upgrade Tool Functionality
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The Upgrade Tool migrates the configurations and deployed applications
-from an earlier version of Sun Java System Application Server or Sun
-GlassFishEnterprise Server to the current version. Database migrations
-or conversions are not part of this upgrade process.
-
-Briefly, the Upgrade Tool performs the following steps:
-
-* Copies the older source domain directory to the new target `domains`
-directory.
-* Calls the `asadmin start-domain --upgrade` command to migrate the
-source configurations to the new target GlassFish Server installation.
-* Sends all `asadmin` command output to the screen and to the
-`upgrade.log` file, and sends all server output to the `server.log`
-file.
-
-Additional Upgrade Tool functions are explained in the following
-sections:
-
-* link:#gebrv[Migration of Deployed Applications]
-* link:#gebqm[Upgrade of Clusters]
-* link:#gebvn[Upgrade Verification]
-
-[[gebrv]][[GSUPG00050]][[migration-of-deployed-applications]]
-
-Migration of Deployed Applications
-++++++++++++++++++++++++++++++++++
-
-Application archives (EAR files) and component archives (JAR, WAR, and
-RAR files) that are deployed in the source server do not require any
-modification to run on GlassFish Server Open Source Edition 4.0.
-Components that may have incompatibilities are deployed on GlassFish
-Server 4.0 with the `compatibility` property set to `v2` and will run
-without change on GlassFish Server 4.0. You may, however, want to
-consider modifying the applications to conform to Java EE 6
-requirements.
-
-The Java EE 6 platform specification imposes stricter requirements than
-Java EE 5 did on which JAR files can be visible to various modules
-within an EAR file. In particular, application clients must not have
-access to EJB JAR files or other JAR files in the EAR file unless they
-use a `Class-Path` header in the manifest file, or unless references use
-the standard Java SE mechanisms (extensions, for example), or use the
-Java EE `library-directory` mechanism. Setting the `library-directory`
-property to `v2` removes these Java EE 6 restrictions.
-
-Applications and components that are deployed in the source server are
-deployed on the target server during the upgrade. Applications that do
-not deploy successfully on the target server must be deployed manually
-on the target server by the user.
-
-If a domain contains information about a deployed application and the
-installed application components do not agree with the configuration
-information, the configuration is migrated unchanged, without any
-attempt to reconfigure the incorrect configurations.
-
-[[gebqm]][[GSUPG00051]][[upgrade-of-clusters]]
-
-Upgrade of Clusters
-+++++++++++++++++++
-
-When upgrading from a clustered configuration, the older cluster
-information is retained in a new `domain.xml` file in the GlassFish
-Server 4.0 installation directories. However, it is still necessary to
-manually re-create the server instances that are contained in the
-clusters. This procedure is explained in link:#gfybw[Upgrading Clusters
-and Node Agent Configurations].
-
-[[gebvn]][[GSUPG00052]][[upgrade-verification]]
-
-Upgrade Verification
-++++++++++++++++++++
-
-An upgrade log records the upgrade activity. The upgrade log file is
-named `upgrade.log` and is created in the working directory from which
-the Upgrade Tool is run. Additional information is recorded in the
-server log of the upgraded domain.
-
-You can also use the `asadmin version` subcommand after starting the
-upgraded domain to verify the new GlassFish Server product version; for
-example:
-
-[source,oac_no_warn]
-----
-asadmin> version
-Version = Oracle GlassFish Server 3.1 (build 42)
-Command version executed successfully.
-----
-
-[[gktjn]][[GSUPG00010]][[to-upgrade-from-the-command-line-using-upgrade-tool]]
-
-To Upgrade From the Command Line Using Upgrade Tool
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This procedure explains how to use the Upgrade Tool command line to
-upgrade to GlassFish Server 4.0 from any supported older product
-release. See link:#gjxkx[Supported Releases for Upgrade to GlassFish
-Server 4.0] for a list of supported releases.
-
-[[sthref29]]
-
-Before You Begin
-
-Ensure that the domains on the source server from which you are
-upgrading are stopped before proceeding.
-
-1.  Download and install GlassFish Server 4.0 using the Typical
-Installation path. +
-See "link:../installation-guide/toc.html#GSING00025[Installing GlassFish Server From a Self-Extracting
-Bundle]" in GlassFish Server Open Source Edition Installation Guide for
-instructions.
-2.  Copy any custom or third-party libraries that may be located in the
-source as-install`/lib` directory to the target as-install`/lib`
-directory. +
-Custom and third-party libraries should normally be located in the
-domain-dir`/lib` directory. This step is only necessary for custom or
-third-party libraries that may be located in the nonstandard
-as-install`/lib` directory.
-3.  Start Upgrade Tool from a command shell for your operating
-environment. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Use the Upgrade Tool that is located in the target GlassFish Server 4.0
-installation, not the older source installation.
-
-|=======================================================================
-
-* On UNIX systems +
-[source,oac_no_warn]
-----
-as-install/bin/asupgrade -c
-----
-* On Windows systems +
-[source,oac_no_warn]
-----
-as-install\bin\asupgrade.bat -c
-----
-The `-c` option starts Upgrade Tool in console mode. If `-c` is omitted,
-Upgrade Tool starts in GUI mode, which is described in link:#gaejn[To
-Upgrade Using the Upgrade Tool Wizard]. +
-If you start Upgrade Tool with only the `-c` option, the tool enters
-interactive CLI mode in which you are asked to supply the needed
-options. If you prefer to enter all options directly from the command
-line, you can use the following syntax: +
-[source,oac_no_warn]
-----
-asupgrade
-[-c|--console]
-[-V|--version]
-[-h|--help]
-[-s|--source source-domain-directory]
-[-t|--target target-domain-directory]
-[-f|--passwordfile password-file]
-----
-Explanations of these options are provided at the end of this procedure.
-4.  Follow the prompts to perform the upgrade. +
-If a name used for an older domain that you are upgrading already exists
-in the new target domains directory, Upgrade Tool will ask if you want
-to rename the new directory so the old directory can be copied to the
-new installation.
-* If you type `y` in response, the directory is renamed
-domain-name`.original`. If that name already exists, the directory will
-be renamed domain-name`.orginal.0`. For example, if the old domain
-directory is named `domain1`, it will be renamed `domain1.original`, or
-if that name already exists, `domain1.original.0`.
-* If you type `n`, you are prompted to specify a different directory
-name or quit. +
-The domain is upgraded and the results are output to the console.
-5.  Review the console output to verify that the upgrade proceeded
-correctly. +
-This output is also written to the `output.log` file for later review. +
-If there are any `SEVERE` or `WARNING` messages in the `server.log`
-file, the upgrade output will say
-`"Possible error encountered during upgrade. See server log after upgrade process completes."`
-6.  Start the upgraded GlassFish Server 4.0 domain. +
-[source,oac_no_warn]
-----
-asadmin start-domain domain-name
-----
-Log in to the Administration Console with the user name and password you
-used in the older server. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-GlassFish Server 4.0 does not support NSS authentication. If you are
-upgrading from a Enterprise Profile configuration that uses NSS
-authentication, follow the procedure in link:#gktnh[Upgrading
-Installations That Use NSS Cryptographic Tokens].
-
-|=======================================================================
-
-7.  If you are upgrading a clustered configuration or a configuration in
-which node agents were used, proceed with the instructions in
-link:#gfybw[Upgrading Clusters and Node Agent Configurations].
-
-[[GSUPG00007]][[gktiu]]
-
-
-Example 2-1 Using the `asupgrade` Command Line
-
-The following example shows how to use the `asupgrade` command-line
-utility in non-interactive mode to upgrade an existing Sun GlassFish
-Enterprise Server v2.1 installation to GlassFish Server 4.0. The
-following command should be entered on a single line.
-
-[source,oac_no_warn]
-----
-asupgrade -c -s /home/glassfish/domains/domain1 -f /root/mypassword
--t /home/glassfish3/glassfish/domains
-----
-
-[[sthref30]]
-
-asupgrade Command-Line Options
-
-Listed below are the `asupgrade` command-line options, including the
-short form, the long form, and a description of each option.
-
-[width="100%",cols="<26%,<26%,<48%",options="header",]
-|=======================================================================
-|Short Form |Long Form |Description
-|`-c` |`--console` |Launches the upgrade command line utility.
-
-|`-V` |`--version` |The version of the GlassFish Server.
-
-|`-h` |`--help` |Displays the arguments for launching the upgrade
-utility.
-
-|`-s` source-domain-directory |`--source` source-domain-directory |The
-domain-dir directory in the source (older) server installation.
-
-|`-t` target-domains-directory |`--target` target-domains-directory |The
-desired domain-root-dir directory in the GlassFish Server 4.0 target
-installation; default is as-install`/domains`
-
-|`-f` password-file |`--passwordfile` password-file |The file containing
-the administration password and the master password.
-|=======================================================================
-
-
-[[sthref31]]
-
-Next Steps
-
-* Browse to the URL `http://localhost:8080` to view the
-domain-dir`/docroot/index.html` file. This file is brought over during
-the upgrade. You may want to copy the default GlassFish Server 4.0 file
-from the `domain1.original/docroot` directory and customize it for your
-GlassFish Server 4.0 installation.
-* To register your installation of GlassFish Server from the
-Administration Console, select the Registration item from the Common
-Tasks page. For step-by-step instructions on the registration process,
-click the Help button on the Administration Console.
-
-[[gaejn]][[GSUPG00011]][[to-upgrade-using-the-upgrade-tool-wizard]]
-
-To Upgrade Using the Upgrade Tool Wizard
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This procedure explains how to use the graphical Upgrade Tool Wizard to
-upgrade to GlassFish Server 4.0 from any supported older product
-release. See link:#gjxkx[Supported Releases for Upgrade to GlassFish
-Server 4.0] for a list of supported releases.
-
-[[sthref32]]
-
-Before You Begin
-
-Ensure that the source domains from which you are upgrading are stopped
-before proceeding.
-
-1.  Download and install GlassFish Server 4.0 using the Typical
-Installation path. +
-See "link:../installation-guide/toc.html#GSING00025[Installing GlassFish Server From a Self-Extracting
-Bundle]" in GlassFish Server Open Source Edition Installation Guide for
-instructions.
-2.  Copy any custom or third-party libraries that may be located in the
-source as-install`/lib` directory to the target as-install`/lib`
-directory. +
-Custom and third-party libraries should normally be located in the
-domain-dir`/lib` directory. This step is only necessary for custom or
-third-party libraries that may be located in the nonstandard
-as-install`/lib` directory.
-3.  Start the Upgrade Tool wizard from a command shell for your
-operating environment. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Use the Upgrade Tool that is located in the target GlassFish Server 4.0
-installation, not the older source installation.
-
-|=======================================================================
-
-* On UNIX systems +
-[source,oac_no_warn]
-----
-as-install/bin/asupgrade
-----
-* On Windows systems +
-[source,oac_no_warn]
-----
-as-install\bin\asupgrade.bat
-----
-::
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Tip:
-
-You may find it faster to run the `asupgrade` command with the `s`
-source-domain-directory option, which will prefill the Source Domain
-Directory field in the next step.
-
-|=======================================================================
-
-4.  In the Source Domain Directory field, type the domain directory of
-the existing installation from which to import the configuration, or
-click Browse. +
-For example, you might type `c:\glassfish\domains\domain1`.
-5.  In the Target Domains Root Directory field, type the location of the
-GlassFish Server 4.0 installation to which to transfer the
-configuration, or click Browse. +
-The default is the full path name of the `domains` directory of your
-GlassFish Server 4.0 installation (for example,
-`c:\glassfish3\glassfish\domains`).
-6.  Provide the master password of the source application server. +
-The domain will be upgraded using these credentials. If you do not
-specify a password here, the default master password is used. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-GlassFish Server 4.0 does not support NSS authentication. If you are
-upgrading from a Enterprise Profile configuration that uses NSS
-authentication, follow the procedure in link:#gktnh[Upgrading
-Installations That Use NSS Cryptographic Tokens].
-
-|=======================================================================
-
-7.  Click Next. +
-If a name used for an older domain that you are upgrading already exists
-in the new target domains directory, Upgrade Tool will ask if you want
-to rename the new directory so the old directory can be copied to the
-new installation.
-* If you click OK in response, the directory is renamed
-domain-name`.original`. If that name already exists, the directory will
-be renamed domain-name`.orginal.0`. For example, if the old domain
-directory is named `domain1`, it will be renamed `domain1.original`, or
-if that name already exists, `domain1.original.0`.
-* If you click No, you brought back to the main screen. +
-The domain is upgraded and the Upgrade Results page displays the status
-of the upgrade operation.
-8.  Review the output in the Upgrade Results page to verify that the
-upgrade proceeded correctly. +
-If there are any `SEVERE` or `WARNING` messages in the `server.log`
-file, the upgrade output will say
-`"Possible error encountered during upgrade. See server log after upgrade process completes."`
-9.  Click Finish to exit the Upgrade Tool when the upgrade process is
-complete.
-10. Start the upgraded GlassFish Server 4.0 domain. +
-[source,oac_no_warn]
-----
-asadmin start-domain domain-name
-----
-11. If you are upgrading a clustered configuration or a configuration in
-which node agents were used, proceed with the instructions in
-link:#gfybw[Upgrading Clusters and Node Agent Configurations].
-
-[[sthref33]]
-
-Next Steps
-
-* Browse to the URL `http://localhost:8080` to view the
-domain-dir`/docroot/index.html` file. This file is brought over during
-the upgrade. You may want to copy the default GlassFish Server 4.0 file
-from the `domain1.original/docroot` directory and customize it for your
-GlassFish Server 4.0 installation.
-* To register your installation of GlassFish Server from the
-Administration Console, select the Registration item from the Common
-Tasks page. For step-by-step instructions on the registration process,
-click the Help button on the Administration Console.
-
-[[gkthu]][[GSUPG00041]][[performing-an-in-place-upgrade-with-the-update-center-tools]]
-
-Performing an In-Place Upgrade With the Update Center Tools
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This section explains how to use the three Update Center tools to
-perform an in-place upgrade to GlassFish Server 4.0 from GlassFish
-Server 3.0.1 or Enterprise Server v3. Specifically, the three tools
-explained in this section are:
-
-* Update Tool
-* Software Update Notifier
-* The `pkg` command-line utility
-
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-GlassFish Server 3.0.1 and Enterprise Server v3 are the only product
-releases that can be upgraded to the 4.0 release with the Update Center
-tools. If you are upgrading from any other product release, you must use
-Upgrade Tool, as described in link:#abmbr[Performing a Side-By-Side
-Upgrade With Upgrade Tool].
-
-|=======================================================================
-
-
-The following topics are addressed here:
-
-* link:#gkthx[Update Center Tool Procedures]
-* link:#gktjf[To Upgrade Using the Update Tool GUI]
-* link:#gkuhu[To Upgrade Using the Software Update Notifier]
-* link:#gktks[To Upgrade From the Command Line Using the `pkg` Utility]
-
-[[gkthx]][[GSUPG00068]][[update-center-tool-procedures]]
-
-Update Center Tool Procedures
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Unlike when using Upgrade Tool, when you use the Update Tool, the
-Software Update Notifier, or the `pkg` utility to perform a GlassFish
-Server 4.0 upgrade, the older source server directories are overwritten
-with the new target server directories, and the existing configuration
-and deployed applications are reused in the updated installation.
-
-To perform the upgrade, the user who runs the upgrade needs to have read
-and writer permissions for the server installation directories.
-
-You can perform an upgrade using the Update Center tools in the
-following ways:
-
-* link:#gktjf[To Upgrade Using the Update Tool GUI]
-* link:#gkuhu[To Upgrade Using the Software Update Notifier]
-* link:#gktks[To Upgrade From the Command Line Using the `pkg` Utility]
-
-[[gktjf]][[GSUPG00012]][[to-upgrade-using-the-update-tool-gui]]
-
-To Upgrade Using the Update Tool GUI
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This procedure explains how to use the graphical Update Tool to perform
-an in-place upgrade to GlassFish Server 4.0 from GlassFish Server 3.0.1
-or Enterprise Server v3. Note that it is not possible to use this
-procedure with any other product releases.
-
-1.  Ensure that all domains on the source server from which you are
-upgrading are stopped before proceeding.
-2.  In a command shell for your operating environment, navigate to the
-as-install-parent`/bin` directory.
-3.  Use the `updatetool` command to start the Update Tool GUI. +
-The Update Tool main window is displayed.
-4.  Click on Available Updates.
-5.  Select all items in the Available Updates list, and then click the
-Install button in the toolbar at the top of the Update Tool main window. +
-When the upgrade is complete, exit Update Tool.
-6.  Upgrade the domain by starting the DAS with the `--upgrade` option. +
-[source,oac_no_warn]
-----
-as-install/bin/asadmin start-domain --upgrade domain-name
-----
-This upgrades the domain and then shuts down the DAS.
-7.  Start the DAS normally. +
-[source,oac_no_warn]
-----
-as-install/bin/asadmin start-domain domain-name
-----
-
-[[sthref34]]
-
-Next Steps
-
-* Browse to the URL `http://localhost:8080` to view the
-domain-dir`/docroot/index.html` file. This file is brought over during
-the upgrade. You may want to copy the default GlassFish Server 4.0 file
-from the `domain1.original/docroot` directory and customize it for your
-GlassFish Server 4.0 installation.
-* To register your installation of GlassFish Server from the
-Administration Console, select the Registration item from the Common
-Tasks page. For step-by-step instructions on the registration process,
-click the Help button on the Administration Console.
-
-[[gkuhu]][[GSUPG00013]][[to-upgrade-using-the-software-update-notifier]]
-
-To Upgrade Using the Software Update Notifier
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This procedure explains how to use the Software Update Notifier to
-perform an in-place upgrade to GlassFish Server 4.0 from GlassFish
-Server 3.0.1 or Enterprise Server v3. Note that it is not possible to
-use this procedure with any other product releases.
-
-[[sthref35]]
-
-Before You Begin
-
-The Software Update Notifier must be installed and enabled on the
-GlassFish Server or Enterprise Server release from which you are
-upgrading. Software Update Notifier installation is typically performed
-during the initial GlassFish Server or Enterprise Server installation.
-The Software Update Notifier can also be installed later using Update
-Tool. For more information about the Update Notifier, refer to the
-Update Tool online help.
-
-1.  Wait for the Software Update Notifier to pop up a notification
-balloon informing you that updates are available.
-2.  Click the balloon prompt to open the Software Update GUI.
-3.  Manually stop all domains and server instances.
-4.  Using the Software Update GUI, select the items you want to upgrade
-and start the installation. +
-Ensure that GlassFish Server 4.0 is one of the items you select for
-upgrade. This upgrades the server and selected components to the latest
-available versions.
-5.  Upgrade the domain by starting the DAS with the `--upgrade` option. +
-[source,oac_no_warn]
-----
-as-install/bin/asadmin start-domain --upgrade domain-name
-----
-This upgrades the domain and then shuts down the DAS.
-6.  Start the DAS normally. +
-[source,oac_no_warn]
-----
-as-install/bin/asadmin start-domain domain-name
-----
-
-[[sthref36]]
-
-Next Steps
-
-* Browse to the URL `http://localhost:8080` to view the
-domain-dir`/docroot/index.html` file. This file is brought over during
-the upgrade. You may want to copy the default GlassFish Server 4.0 file
-from the `domain1.original/docroot` directory and customize it for your
-GlassFish Server 4.0 installation.
-* To register your installation of GlassFish Server from the
-Administration Console, select the Registration item from the Common
-Tasks page. For step-by-step instructions on the registration process,
-click the Help button on the Administration Console.
-
-[[gktks]][[GSUPG00014]][[to-upgrade-from-the-command-line-using-the-pkg-utility]]
-
-To Upgrade From the Command Line Using the `pkg` Utility
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This procedure explains how to use the `pkg` utility to perform an
-in-place upgrade to GlassFish Server 4.0 from GlassFish Server 3.0.1 or
-Enterprise Server v3. Note that it is not possible to use this procedure
-with any other product releases.
-
-1.  Ensure that all domains on the source server from which you are
-upgrading are stopped before proceeding.
-2.  In a command shell for your operating environment, navigate to the
-as-install-parent`/bin` directory.
-3.  Use the `pkg image-update` command to update your entire GlassFish
-Server 3.0.1 or Enterprise Server v3 installation to GlassFish Server
-4.0. +
-[source,oac_no_warn]
-----
-./pkg image-update
-----
-This upgrades the server components to the latest available versions.
-4.  Upgrade the domain by starting the DAS with the `--upgrade` option. +
-[source,oac_no_warn]
-----
-as-install/bin/asadmin start-domain --upgrade domain-name
-----
-This upgrades the domain and then shuts down the DAS.
-5.  Start the DAS normally. +
-[source,oac_no_warn]
-----
-as-install/bin/asadmin start-domain domain-name
-----
-
-[[sthref37]]
-
-Next Steps
-
-* Browse to the URL `http://localhost:8080` to view the
-domain-dir`/docroot/index.html` file. This file is brought over during
-the upgrade. You may want to copy the default GlassFish Server 4.0 file
-from the `domain1.original/docroot` directory and customize it for your
-GlassFish Server 4.0 installation.
-* To register your installation of GlassFish Server from the
-Administration Console, select the Registration item from the Common
-Tasks page. For step-by-step instructions on the registration process,
-click the Help button on the Administration Console.
-
-[[gktnh]][[GSUPG00042]][[upgrading-installations-that-use-nss-cryptographic-tokens]]
-
-Upgrading Installations That Use NSS Cryptographic Tokens
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-GlassFish Server v2.x EE (Enterprise Edition) uses Network Security
-Services (NSS) for cryptographic software tokens. GlassFish Server 4.0
-does not support NSS, so when performing an upgrade from v2.x EE to 4.0
-additional manual configuration steps must be performed.
-
-The following topics are addressed here:
-
-* link:#gktnq[To Prepare for the Upgrade]
-* link:#gktlz[To Perform Post-Upgrade Configuration]
-* link:#gktlp[To Upgrade PKCS#11 Hardware Tokens]
-
-[[gktnq]][[GSUPG00015]][[to-prepare-for-the-upgrade]]
-
-To Prepare for the Upgrade
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This procedure explains how to prepare for modifying an NSS-based
-GlassFish Server 2.x installation when upgrading to GlassFish Server
-4.0.
-
-1.  Download and install GlassFish Server 4.0 using the Typical
-Installation path. +
-Ensure that you install the new GlassFish Server 4.0 product in a
-directory that is different than the one used for the older installation
-from which you are upgrading. +
-See "link:../installation-guide/toc.html#GSING00025[Installing GlassFish Server From a Self-Extracting
-Bundle]" in GlassFish Server Open Source Edition Installation Guide for
-instructions.
-2.  Rename the new GlassFish Server 4.0 domain-dir (the default is
-as-install`/domains/domain1`) to a name of your choice. +
-In this procedure, `31domain` is used for the renamed GlassFish Server
-4.0 domain.
-3.  Copy the older source domain to be upgraded to the new GlassFish
-Server 4.0 as-install`/domains` directory. +
-In this procedure, `domain1` is used for the older source domain that is
-copied to the new GlassFish Server 4.0 installation. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-The remaining steps in this procedure are performed on the copy of your
-source domain that you created in this step, rather than on your
-original source domain. It is strongly recommended that you perform the
-GlassFish Server 4.0 upgrade on a copy of your old domain rather than on
-the original.
-
-|=======================================================================
-
-4.  Copy the `server.policy`, `keystore.jks`, and `cacerts.jks` files
-from the renamed `./31domain/config` directory to the `./domain1/config`
-directory to be upgraded. +
-For example: +
-[source,oac_no_warn]
-----
-cp as-install/domains/31domain/config/server.policy as-install/domains/domain1/config
-cp as-install/domains/31domain/config/keystore.jks as-install/domains/domain1/config
-cp as-install/domains/31domain/config/cacerts.jks as-install/domains/domain1/config
-----
-This will overwrite the master password for `./domain1` with the
-password used in the `./31domain`.
-5.  Modify the `domain.xml` file for `./domain1`.
-1.  Add the following `jvm-options` under `server-config` and
-`default-config`: +
-[source,oac_no_warn]
-----
--Djavax.net.ssl.keyStore=${com.sun.aas.instanceRoot}/config/keystore.jks
--Djavax.net.ssl.trustStore=${com.sun.aas.instanceRoot}/config/cacerts.jks
-----
-2.  Remove the following `jvm-option` under `server-config` and
-`default-config`: +
-[source,oac_no_warn]
-----
--Dcom.sun.appserv.nss.db=${com.sun.aas.instanceRoot}/config
-----
-6.  Upgrade `./domain1` by starting the DAS in the new GlassFish Server
-4.0 installation with the `--upgrade` option. +
-[source,oac_no_warn]
-----
-as-install/bin/asadmin start-domain --upgrade domain1
-----
-This upgrades the domain and then shuts down the DAS.
-7.  Start the upgraded DAS normally. +
-[source,oac_no_warn]
-----
-as-install/bin/asadmin start-domain domain1
-----
-
-[[gktlz]][[GSUPG00016]][[to-perform-post-upgrade-configuration]]
-
-To Perform Post-Upgrade Configuration
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-These instructions explain the post-upgrade configuration steps that
-must be performed when upgrading from an NSS-based installation to
-GlassFish Server 4.0.
-
-[[sthref38]]
-
-Before You Begin
-
-Before proceeding with this procedure, complete the procedure explained
-in link:#gktnq[To Prepare for the Upgrade].
-
-1.  Start the GlassFish Server 4.0 domain, if it is not already running,
-and open the GlassFish Server Admin Console in a browser window. +
-The default URL is `https://localhost:4848` +
-As part of the link:#gktnq[To Prepare for the Upgrade] procedure, the
-default keystore with a default self-signed key-certificate pair with an
-alias named `s1as` and a keystore password `changeit` was copied into
-the v2.x domain before the upgrade.
-2.  If your default server alias in the NSS v2.x domain is not `s1as`,
-you can delete this entry using the following command: +
-[source,oac_no_warn]
-----
-keytool -delete -keystore keystore.jks -storepass changeit -alias s1as
-keytool -delete -keystore cacerts.jks -storepass changeit -alias s1as
-----
-3.  If the master password for the v2.x domain is not the default
-password `changeit`, you need to change the new keystore password to
-match the v2.x master password. +
-[source,oac_no_warn]
-----
-keytool -storepasswd -new v2-master-password \
--keystore keystore.jks -storepass changeit
-keytool -storepasswd -new v2-master-password \
--keystore cacerts.jks -storepass changeit
-----
-4.  Take note of all the `KeyEntries` that exist in your NSS database. +
-These entries must be migrated to the `keystore.jks` in the GlassFish
-Server 4.0 domain. The following command can be used to list all the
-`KeyEntries` in the NSS database: +
-[source,oac_no_warn]
-----
-certutil -L -d $AS_NSS_DB
-----
-`AS_NSS_DB` should point to the `${com.sun.aas.instanceRoot}/config` for
-the 4.0 instance into which the v2.x domain was copied. The listing with
-the attribute combinations `u,u,u` are the `KeyEntries`. +
-For example: +
-[source,oac_no_warn]
-----
-s1as u,u,u
-----
-::
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-To run the `certutil` command, your `LD_LIBRARY_PATH` must point to the
-directory containing NSS library and DLLs.
-
-|=======================================================================
-
-5.  For each `PrivateKey-Certificate` pair (`KeyEntry`) that exists in
-the v2.x NSS database, use the following commands to export them from
-the NSS database and import them into the newly created `keystore.jks`
-file. +
-Make sure you use the same alias when importing the `KeyEntry` into the
-JKS keystore. For example, if s1as is the only alias present in the NSS
-database, the following command can be used: +
-[source,oac_no_warn]
-----
-> pk12util -o /tmp/s1as_pk.p12 -n s1as -d $AS_NSS_DB
->keytool -importkeystore -srckeystore /tmp/s1as_pk.p12 -destkeystore \
-${com.sun.aas.instanceRoot}/config/keystore.jks -srcstoretype PKCS12 \
--deststoretype JKS -srcstorepass v2-master-password \
--deststorepass v3-master-password -srcalias s1as \
--destalias s1as -srckeypass v2-master-password \
--destkeypass v3-master-password
-----
-::
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-The reference to v3-master-password could be the same as
-v2-master-password if you intend to retain the same master password for
-the 4.0 domain after upgrading from v2.x.
-
-|=======================================================================
-
-6.  If the `s1as` alias represents a `KeyEntry` with a self-signed
-certificate, the self-signed certificate must be copied to the
-`truststore`. +
-[source,oac_no_warn]
-----
->certutil -L -n s1as -r -d $AS_NSS_DB> /tmp/s1as.der>keytool -import -keystore cacerts.jks -storepass v3-master-password \
--file /tmp/s1as.der -alias s1as
-----
-7.  There is a rare chance that the 2.x NSS database has some CA
-(Certificate Authority) certificates that are absent in the default
-created `truststore`. In such cases, all aliases that are missing in the
-`truststore` (`cacerts.jks`) need to collected.
-1.  `certutil -L -d $AS_NSS_DB` +
-Example output: +
-[source,oac_no_warn]
-----
-verisignc1g1 T,c,c
-verisignc1g2 T,c,c
-verisignc1g3 T,c,c
-----
-2.  `keytool -list -keystore cacerts.jks -storepass` v3-master-password +
-Example output: +
-[source,oac_no_warn]
-----
-godaddyclass2ca, Jan 20, 2005, trustedCertEntry,
-Certificate fingerprint (MD5): 91:DE:06:25:AB:DA:FD:32:17:0C:BB:25:17:2A:84:67
-verisignclass1g3ca, Mar 26, 2004, trustedCertEntry,
-Certificate fingerprint (MD5): B1:47:BC:18:57 1:18:A0:78:2D:EC:71:E8:2A:95:73
-secomevrootca1, May 1, 2008, trustedCertEntry,
-Certificate fingerprint (MD5): 22:2D:A6:01:EA:7C:0A:F7:F0:6C:56:43:3F:77:76 3
-----
-8.  For each of the aliases from the `certutil` output in the preceding
-step that are required but missing in the `truststore` listing, execute
-the following commands to export and import them into the 4.0 domain's
-`truststore`. +
-[source,oac_no_warn]
-----
->certutil -L -n verisignc1g1 -r -d $AS_NSS_DB> /tmp/verisignc1g1.der>keytool -import -keystore cacerts.jks -storepass v3-master-password \
--file /tmp/verisignc1g1.der -alias verisignc1g1
-----
-::
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Sometimes just the alias names that are used in the NSS database are
-different, and the same certificate is, in fact, present in the 4.0
-default `truststore`.
-
-|=======================================================================
-
-
-[[gktlp]][[GSUPG00017]][[to-upgrade-pkcs11-hardware-tokens]]
-
-To Upgrade PKCS#11 Hardware Tokens
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-If you are using GlassFish Server v2.x Enterprise Edition with Hardware
-Tokens (for example, FIPS-140 compliant Sun Cryptographic Accelerator
-6000 or other Sun Cryptographic Accelerators) configured by means of
-NSS-PKCS11, then the v2.x EE-to-4.0 upgrade solution is to directly
-configure the Hardware Token as a PKCS11 token using the JDK-JSSE
-supported mechanisms for configuring PKCS#11 tokens.
-
-1.  Set the `javax.net.ssl.keyStoreType` `jvm-options` in GlassFish
-Server 4.0 to PKCS11. +
-[source,oac_no_warn]
-----
-<jvm-options>-Djavax.net.ssl.keyStoreType=PKCS11</jvm-options>
-----
-2.  Set the `javax.net.ssl.keyStore` URL should be set to l since this
-is a hardware token. +
-[source,oac_no_warn]
-----
-<jvm-options>-Djavax.net.ssl.keyStore=NONE</jvm-options>
-----
-3.  Change the password for the `truststore` and the GlassFish Server
-`MasterPassword` to match the PIN of your `HardwareToken`.
-4.  Since you are using a Hardware Token, you can delete the
-`keystore.jks` for the migrated domain.
-5.  Ensure the `token-alias` for the hardware token (private key) that
-you intend to use as the Server's Key for SSL is mentioned in every
-relevant place in the `domain.xml` for the domain. +
-For example, the `cert-nickname` attribute for the `<ssl/>` element
-under the `protocol` configuration.
-6.  If the Hardware Token is to act as a `TrustStore` as well, remove
-the `cacerts.jks` file from the domain-dir`/config` directory. +
-Ensure that the following two `jvm-options` are set in the `domain.xml`
-file: +
-[source,oac_no_warn]
-----
-<jvm-options>-Djavax.net.ssl.trustStore=NONE</jvm-options>
-<jvm-options>-Djavax.net.ssl.trustStoreType=PKCS11</jvm-options>
-----
-
-[[gfybw]][[GSUPG00043]][[upgrading-clusters-and-node-agent-configurations]]
-
-Upgrading Clusters and Node Agent Configurations
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This section explains additional steps you need to perform when
-upgrading cluster and node agent configurations from Application Server
-or Enterprise Server to GlassFish Server 4.0.
-
-GlassFish Server 4.0 does not support node agents. As part of the
-upgrade process, any node agent elements in the older source
-configuration are transformed into `CONFIG` node elements in the
-`domain.xml` file for the upgraded DAS. If the source node agent
-configuration is incompatible with your GlassFish Server 4.0
-installation, you must correct the node configuration on the upgraded
-DAS.
-
-In addition, although the source cluster configuration is retained in
-the `domain.xml` file for the upgraded DAS, it is still necessary to
-install GlassFish Server 4.0 on each node host and manually re-create
-the server instances that are contained in the clusters.
-
-The following topics are addressed here:
-
-* link:#gkyda[Overview of Cluster and Node Agent Upgrade Procedures]
-* link:#gktle[To Correct the Configuration of a Node After an Upgrade]
-* link:#gktkx[To Re-Create a Cluster]
-
-[[gkyda]][[GSUPG00069]][[overview-of-cluster-and-node-agent-upgrade-procedures]]
-
-Overview of Cluster and Node Agent Upgrade Procedures
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The general steps for upgrading a cluster and node agent configuration
-so it will work in GlassFish Server 4.0 are as follows:
-
-1.  Perform a side-by-side upgrade of the DAS. This procedure is
-described in link:#abmbr[Performing a Side-By-Side Upgrade With Upgrade
-Tool].
-2.  Perform new (not upgrade) GlassFish Server 4.0 installations on each
-node host. GlassFish Server 4.0 installation instructions are provided
-in the link:../installation-guide/toc.html#GSING[GlassFish Server Open Source Edition Installation
-Guide].
-3.  Correct the node configuration on the upgraded DAS, if necessary.
-This procedure is described in link:#gktle[To Correct the Configuration
-of a Node After an Upgrade].
-4.  Re-create the clusters and server instances on each GlassFish Server
-4.0 node host. This procedure is described in link:#gktkx[To Re-Create a
-Cluster].
-
-[[gktle]][[GSUPG00018]][[to-correct-the-configuration-of-a-node-after-an-upgrade]]
-
-To Correct the Configuration of a Node After an Upgrade
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-As part of the upgrade process, node agent elements in the DAS
-configuration are transformed into GlassFish Server node elements of
-type `CONFIG`. This transformation does not affect the node agent
-directories for GlassFish Server instances. To create the equivalent
-directories for GlassFish Server instances after an upgrade, you must
-re-create the instances as explained in link:#gktkx[To Re-Create a
-Cluster].
-
-The name of an upgraded node is the name of the node agent from which
-the node is transformed.
-
-The host that the node represents is obtained from the configuration of
-the original node agent or, if not specified, is not set. If the
-configuration of the original node agent did not specify the name of the
-node host, you must update the node to specify the host that the node
-represents.
-
-Default values are applied to the remainder of the node's configuration
-data.
-
-The default values of the following items in a node's configuration data
-might not meet your requirements for the upgraded installation of
-GlassFish Server:
-
-* The parent of the base installation directory of the GlassFish Server
-software on the host, for example, `/export/glassfish3`. +
-The default is the parent of the default base installation directory of
-the GlassFish Server 4.0 software on the DAS host. If the GlassFish
-Server software is installed under a different directory on the node
-host, you must update the node's configuration to specify the correct
-directory.
-* The directory that will contain the GlassFish Server instances that
-are to reside on the node. +
-The default is as-install`/nodes`, where as-install is the base
-installation directory of the GlassFish Server software on the host. If
-you require the instances to be contained in a different directory, you
-must update the node's configuration to specify that directory.
-
-If you are using secure shell (SSH) for centralized administration, you
-must also change the type of the node to `SSH` to enable the node for
-remote communication.
-
-For more information about GlassFish Server nodes, see
-"link:../ha-administration-guide/nodes.html#GSHAG00004[Administering GlassFish Server Nodes]" in GlassFish
-Server Open Source Edition High Availability Administration Guide.
-
-[[sthref39]]
-
-Before You Begin
-
-Ensure that the following prerequisites are met:
-
-* A side-by-side upgrade on the DAS has been performed. For more
-information, see link:#abmbr[Performing a Side-By-Side Upgrade With
-Upgrade Tool].
-* If you are changing the type of the node to `SSH`, ensure that SSH is
-configured on the host where the DAS is running and on the host that the
-node represents. For more information, see "link:../ha-administration-guide/ssh-setup.html#GSHAG00003[Setting Up
-SSH for Centralized Administration]" in GlassFish Server Open Source
-Edition High Availability Administration Guide.
-* If you are upgrading from an Enterprise Profile configuration that
-uses NSS authentication, ensure that the procedure in
-link:#gktnh[Upgrading Installations That Use NSS Cryptographic Tokens]
-has been performed. GlassFish Server 4.0 does not support NSS
-authentication.
-
-1.  Ensure that the DAS is running. +
-Remote subcommands require a running server.
-2.  Update the node's configuration data to specify the correct
-directories and, if necessary, change the type of the node. +
-
-[width="100%",cols="<100%",]
-|=======================================================================
-a|
-Note:
-
-Only the options that are required to complete this task are provided in
-this step. For information about all the options for changing the node's
-configuration data, see the link:../reference-manual/update-node-ssh001.html#GSRFM00256[`update-node-ssh`(1)] help
-page or the link:../reference-manual/update-node-config.html#GSRFM00255[`update-node-config`(1)] help page.
-
-|=======================================================================
-
-[source,oac_no_warn]
-----
-asadmin> node-update-subcommand [--installdir as-install-parent] [--nodedir node-dir]
-[--nodehost node-host] node-name
-----
-node-update-subcommand::
-  The subcommand to run to update the node. +
-  * If you are leaving the type of the node as `CONFIG`, run the
-  `update-node-config` subcommand on the node.
-  * If you are changing the type of the node to `SSH`, run the
-  `update-node-ssh` subcommand on the node.
-as-install-parent::
-  The full path to the parent of the base installation directory of the
-  GlassFish Server software on the host, for example,
-  `/export/glassfish3`.
-node-dir::
-  The path to the directory that will contain GlassFish Server instances
-  that are to reside on the node. If a relative path is specified, the
-  path is relative to the as-install directory.
-node-host::
-  The name of the host that the node is to represent after the node is
-  updated.
-node-name::
-  The name of the node to update. This name is the name of the node
-  agent from which the node was transformed.
-
-[[GSUPG00008]][[gktoh]]
-
-
-Example 2-2 Correcting the Configuration of a Node After an Upgrade
-
-This example updates the path to the directory that will contain
-instances that are to reside on the node `xk01` to
-`/export/home/gf/nodes`. Because this node is transformed from a node
-agent, the type of the node is `CONFIG`. Therefore, type of the node is
-not changed.
-
-[source,oac_no_warn]
-----
-asadmin> update-node-config --nodedir /export/home/gf/nodes xk01
-Command update-node-config executed successfully.
-----
-
-[[sthref40]]
-
-Next Steps
-
-Re-create the cluster configuration from the older source installation
-in the new GlassFish Server 4.0 installation in as explained in
-link:#gktkx[To Re-Create a Cluster].
-
-[[sthref41]]
-
-See Also
-
-* "link:../ha-administration-guide/ssh-setup.html#GSHAG00003[Setting Up SSH for Centralized Administration]" in
-GlassFish Server Open Source Edition High Availability Administration
-Guide
-* "link:../ha-administration-guide/nodes.html#GSHAG00004[Administering GlassFish Server Nodes]" in GlassFish
-Server Open Source Edition High Availability Administration Guide
-* link:../reference-manual/update-node-config.html#GSRFM00255[`update-node-config`(1)]
-* link:../reference-manual/update-node-ssh001.html#GSRFM00256[`update-node-ssh`(1)]
-
-[[gktkx]][[GSUPG00019]][[to-re-create-a-cluster]]
-
-To Re-Create a Cluster
-^^^^^^^^^^^^^^^^^^^^^^
-
-This procedure explains how to re-create a clustered GlassFish Server or
-Enterprise Server configuration for GlassFish Server 4.0.
-
-[[sthref42]]
-
-Before You Begin
-
-Before proceeding with these instructions, ensure that you have
-completed the following procedures:
-
-* Perform the standard upgrade to GlassFish Server 4.0 on the DAS, as
-described in link:#abmbr[Performing a Side-By-Side Upgrade With Upgrade
-Tool].
-* Perform a new (not upgrade) installation of GlassFish Server 4.0 on
-each node host. See the link:../installation-guide/toc.html#GSING[GlassFish Server Open Source Edition
-Installation Guide] for instructions.
-* Correct the upgraded node configuration, if necessary, as described
-link:#gktle[To Correct the Configuration of a Node After an Upgrade].
-
-1.  Start the upgraded DAS. +
-[source,oac_no_warn]
-----
-asadmin> start-domain domain-name
-----
-If the upgrade succeeded, the migrated cluster configuration exists and
-the `get-health` subcommand lists the status of the clustered instances
-as not running.
-2.  Confirm that the cluster configuration exists and contains all its
-instances. +
-[source,oac_no_warn]
-----
-asadmin> get-health cluster-name
-----
-For example, for the sample `cluster1` used in this procedure: +
-[source,oac_no_warn]
-----
-asadmin> get-health cluster1
-instance1 not started
-instance2 not started
-Command get-health executed successfully.
-----
-3.  Re-create the clustered server instances on each instance host. +
-The specific commands to use depend on your configuration.
-* If remote hosts cannot contact the DAS, export and import the
-instances' configuration data, as explained in "link:../ha-administration-guide/instances.html#GSHAG00125[To
-Resynchronize an Instance and the DAS Offline]" in GlassFish Server Open
-Source Edition High Availability Administration Guide.
-* If remote hosts can contact the DAS, create each instance individually
-and resynchronize the instance with the DAS, as explained in the
-following sections:
-
-** "link:../ha-administration-guide/instances.html#GSHAG00114[To Create an Instance Locally]" in GlassFish Server
-Open Source Edition High Availability Administration Guide
-
-** "link:../ha-administration-guide/instances.html#GSHAG00119[To Resynchronize an Instance and the DAS Online]"
-in GlassFish Server Open Source Edition High Availability Administration
-Guide +
-Note that the node name matches that used for the node agent in the 2.x
-installation. If you get an error stating that some attributes do not
-match the values in the DAS configuration, follow the instructions in
-link:#gktle[To Correct the Configuration of a Node After an Upgrade].
-4.  After creating the instances, manually copy the instance-dir`/imq`
-directory for each instance from the older source installation to the
-target GlassFish Server 4.0 installation.
-5.  If necessary, start the cluster. +
-For example: +
-[source,oac_no_warn]
-----
-asadmin> start-cluster cluster1
-----
-This step may or may not be necessary, depending on the procedure you
-used to create the server instances for the cluster.
-
-[[GSUPG00009]][[gkyin]]
-
-
-Example 2-3 Creating Two Local Instances
-
-The following example shows how to create two local instances in a
-cluster.
-
-[source,oac_no_warn]
-----
-host1$ asadmin --host dashost create-local-instance --node na1 --cluster cluster1 instance1
-host2$ asadmin --host dashost create-local-instance --node na2 --cluster cluster1 instance2
-----
-
-`dashost`::
-  The name of the DAS host.
-`na1`::
-  The name of the node host.
-`cluster1`::
-  The name of the cluster.
-`instance1`, `instance2`::
-  The names of the instances.
-
-[[gkrfh]][[GSUPG00044]][[correcting-potential-upgrade-problems]]
-
-Correcting Potential Upgrade Problems
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This section addresses issues that can occur during an upgrade to
-GlassFish Server 4.0.
-
-The following topics are addressed here:
-
-* link:#gkrgh[Cluster Profile Security Setting]
-* link:#gkrib[Cluster Profile Upgrade on Windows]
-* link:#gkyho[`asupgrade` Fails Without Internet Connection]
-
-[[gkrgh]][[GSUPG00070]][[cluster-profile-security-setting]]
-
-Cluster Profile Security Setting
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-When upgrading a clustered domain configuration from Application Server
-9.1 or Enterprise Server v2 to GlassFish Server 4.0, you may encounter
-problems if the `admin-service` element in the DAS `domain.xml` file
-sets both of the following attributes:
-
-* `security-enabled=true`
-* `type=das-and-server`
-
-The `security-enabled` attribute must be set to `false` in the
-`admin-service` element for the DAS when `type` is set to
-`das-and-server`.
-
-You can use the `get` subcommand to determine the values for these two
-attributes. For example:
-
-* To display the value for the `security-enabled` attribute: +
-[source,oac_no_warn]
-----
-asadmin> get configs.config.server-config.admin-service.jmx-connector.system.security-enabled
-----
-* To display the value for the type attribute: +
-[source,oac_no_warn]
-----
-asadmin> get configs.config.server-config.admin-service.type
-----
-
-If necessary, use the `set` subcommand to set `security-enabled=false`.
-For example:
-
-[source,oac_no_warn]
-----
-asadmin> set configs.config.server-config.admin-service.jmx-connector.system.security-enabled=false
-----
-
-[[gkrib]][[GSUPG00071]][[cluster-profile-upgrade-on-windows]]
-
-Cluster Profile Upgrade on Windows
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-On Windows, when you upgrade cluster profile domains, you could
-encounter the following error:
-
-[source,oac_no_warn]
-----
-Fatal error while backing up the domain directory
-----
-
-To resolve this error, look for and remove any hidden files in the
-source domain's directory and re-run Upgrade Tool.
-
-[[gkyho]][[GSUPG00072]][[asupgrade-fails-without-internet-connection]]
-
-`asupgrade` Fails Without Internet Connection
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This problem only occurs when using GlassFish Server 3.1 Upgrade Tool to
-perform a side-by-side upgrade on a 2.x domain without an Internet
-connection. It does not occur when using GlassFish Server 3.1.1.
-
-The workaround for this issue is as follows:
-
-1.  Copy the older source domain to be upgraded to the new target
-domain-dir, the default for which is as-install`/domains`. +
-Rename the target `domain1` directory, if one exists, before proceeding.
-2.  Run the upgrade. +
-[source,oac_no_warn]
-----
-asadmin> start-domain --upgrade domain-name
-----
diff --git a/docs/upgrade-guide/src/main/jbake/jbake.properties b/docs/upgrade-guide/src/main/jbake/jbake.properties
deleted file mode 100644
index 546d09c..0000000
--- a/docs/upgrade-guide/src/main/jbake/jbake.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-site.host=http://jbake.org
-render.tags=false
-render.sitemap=false
-render.archive=false
-render.feed=false
-asciidoctor.option.safe=0
-asciidoctor.attributes.export=true
diff --git a/docs/upgrade-guide/src/main/jbake/templates/footer.ftl b/docs/upgrade-guide/src/main/jbake/templates/footer.ftl
deleted file mode 100644
index 6f2b09e..0000000
--- a/docs/upgrade-guide/src/main/jbake/templates/footer.ftl
+++ /dev/null
@@ -1,46 +0,0 @@
-<#-- a footer template fragment included in the page template -->
-<hr />
-
-<table width="90%" id="bottom-nav" cellspacing="0" cellpadding="0">
-	<colgroup>
-		<col width="12%"/>
-		<col width="12%"/>
-		<col width="*"/>
-	</colgroup>
-	<tr>		
-	    <#if content.prev??>
-		<td align="left">
-		<a href="${content.prev}">
-			<span class=" vector-font"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Previous</span>
-		</a>
-		</td>
-		</#if>
-
-		<#if content.next??>
-		<td align="left">
-		<a href="${content.next}">
-			<span class="vector-font"><i class="fa fa-arrow-circle-right vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Next</span>
-		</a>
-		</td>
-		</#if>
-
-		<td align="right">
-		<a href="toc.html">
-			<span class="vector-font"><i class="fa fa-list vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Contents</span>
-		</a>
-		</td>
-	</tr>
-</table>
-
-<span id="copyright">
-        <img src="img/eclipse_foundation_logo_tiny.png" height="20px" alt="Eclipse Foundation Logo" align="top"/>&nbsp;            
-        <span >Copyright&nbsp;&copy;&nbsp;2019,&nbsp;Oracle&nbsp;and/or&nbsp;its&nbsp;affiliates.&nbsp;All&nbsp;rights&nbsp;reserved.</span>
-</span>
-
-<p align="center" class="beta">${config.status!}</p>
-
-</body>
-</html>
diff --git a/docs/upgrade-guide/src/main/jbake/templates/header.ftl b/docs/upgrade-guide/src/main/jbake/templates/header.ftl
deleted file mode 100644
index 82ebb36..0000000
--- a/docs/upgrade-guide/src/main/jbake/templates/header.ftl
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html>
-<#-- a header template fragment included in the page template -->
-<html lang="en">
-  <head>
-    <meta charset="utf-8"/>
-    <title><#if (content.title)??><#escape x as x?xml>${content.title}</#escape></#if></title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <link href="<#if (content.rootpath)??>${content.rootpath}<#else></#if>css/style.css" rel="stylesheet">
-    <script src="https://use.fontawesome.com/96c4d89611.js"></script>
-  </head>
-  <body>
-<table id="doc-title" cellspacing="0" cellpadding="0">
-  <tr>
-  <td align="left" valign="top">
-  <b>${content.title}</b><br />
-      <p class="beta">${config.status!}</p>
-  </td>
-  </tr>
-</table>
-<hr />
-
-<table width="90%" id="top-nav" cellspacing="0" cellpadding="0">
-	<colgroup>
-		<col width="12%"/>
-		<col width="12%"/>
-		<col width="*"/>
-	</colgroup>
-	<tr>
-	    <#if content.prev??>
-		<td align="left">
-		<a href="${content.prev}">
-			<span class="vector-font"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Previous</span>
-		</a>
-		</td>
-	    </#if>
-
-	    <#if content.next??>
-		<td align="left">
-		<a href="${content.next}">
-			<span class=" vector-font"><i class="fa fa-arrow-circle-right vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Next</span>
-		</a>
-		</td>
-	    </#if>
-
-		<td align="right">
-		<a href="toc.html">
-			<span class=" vector-font"><i class="fa fa-list vector-font" aria-hidden="true"></i></span>
-			<span style="position:relative;top:-2px;">Contents</span>
-		</a>
-		</td>
-	</tr>
-</table>
-
diff --git a/docs/upgrade-guide/src/main/jbake/templates/menu.ftl b/docs/upgrade-guide/src/main/jbake/templates/menu.ftl
deleted file mode 100644
index 888c03d..0000000
--- a/docs/upgrade-guide/src/main/jbake/templates/menu.ftl
+++ /dev/null
@@ -1 +0,0 @@
-<#-- a menu bar template fragment included in the page template -->
\ No newline at end of file
diff --git a/docs/upgrade-guide/src/main/jbake/templates/page.ftl b/docs/upgrade-guide/src/main/jbake/templates/page.ftl
deleted file mode 100644
index eca51db..0000000
--- a/docs/upgrade-guide/src/main/jbake/templates/page.ftl
+++ /dev/null
@@ -1,8 +0,0 @@
-<#-- a top level page layout template -->
-
-<#include "header.ftl">
-<#include "menu.ftl">
-
-${content.body}
-
-<#include "footer.ftl">
\ No newline at end of file
diff --git a/docs/website/pom.xml b/docs/website/pom.xml
index baedbc3..d86899b 100644
--- a/docs/website/pom.xml
+++ b/docs/website/pom.xml
@@ -22,9 +22,8 @@
     <parent>
         <groupId>org.glassfish.docs</groupId>
         <artifactId>docs</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
-    <groupId>org.glassfish.docs</groupId>
     <artifactId>website</artifactId>
     <packaging>jar</packaging>
     <name>Eclipse GlassFish website content</name>
@@ -36,7 +35,7 @@
 
     <!--
         This project doesn't inherit from ../parent because it doesn't
-        need jbake, and so the jar plugin needs to be configured here...
+        need asciidoc, and so the jar plugin needs to be configured here...
     -->
     <build>
         <defaultGoal>package</defaultGoal>
diff --git a/docs/website/src/main/resources/README.md b/docs/website/src/main/resources/README.md
index 7c7b8c9..9464bbe 100644
--- a/docs/website/src/main/resources/README.md
+++ b/docs/website/src/main/resources/README.md
@@ -9,10 +9,19 @@
 
 ## Latest News
 
+## November 18, 2021 -- Eclipse GlassFish 6.2.3 Available
+
+We are pleased to announce the release of Eclipse GlassFish 6.2.3. This release provides implementations
+of the Jakarta EE 9.1 Platform and Web Profile specifications. Download links are available from the [GlassFish Download page](https://eclipse-ee4j.github.io/glassfish/download). Eclipse GlassFish 6.2.3 implements the Jakarta EE 9.1 specification ([Jakarta EE 9.1 Platform](https://jakarta.ee/specifications/platform/9.1/), [Jakarta EE 9 Web Profile](https://jakarta.ee/specifications/webprofile/9.1/)). GlassFish 6.2.3 brings Admin console fixes, build times improvement, component updates, and bug fixes.
+
+GlassFish 6.2.3 compiles with JDK 11 to JDK 17 and runs on JDK 11 to JDK 17. GlassFish 6.2.3 also compiles and runs on JDK 18-EA releases.
+
+Note this release requires at least JDK 11. 
+
 ## October 1, 2021 -- Eclipse GlassFish 6.2.2 Available
 
 We are pleased to announce the release of Eclipse GlassFish 6.2.2. This release provides implementations
-of the Jakarta EE 9.1 Platform and Web Profile specifications. Download links are available from the [GlassFish Download page](https://eclipse-ee4j.github.io/glassfish/download). Eclipse GlassFish 6.1 implements the Jakarta EE 9.1 specification ([Jakarta EE 9.1 Platform](https://jakarta.ee/specifications/platform/9.1/), [Jakarta EE 9 Web Profile](https://jakarta.ee/specifications/webprofile/9.1/)). GlassFish 6.2.2 brings GlassFish embedded back to live, and contains an import fix for a memory leak. A major behind the scenes accomplishment is that all active tests now use JUnit 5.
+of the Jakarta EE 9.1 Platform and Web Profile specifications. Download links are available from the [GlassFish Download page](https://eclipse-ee4j.github.io/glassfish/download). Eclipse GlassFish 6.2.2 implements the Jakarta EE 9.1 specification ([Jakarta EE 9.1 Platform](https://jakarta.ee/specifications/platform/9.1/), [Jakarta EE 9 Web Profile](https://jakarta.ee/specifications/webprofile/9.1/)). GlassFish 6.2.2 brings GlassFish embedded back to live, and contains an import fix for a memory leak. A major behind the scenes accomplishment is that all active tests now use JUnit 5.
 
 GlassFish 6.2.2 compiles with JDK 11 to JDK 17 and runs on JDK 11 to JDK 17. GlassFish 6.2.2 has been briefly tested with JDK 18-EA releases.
 
@@ -21,7 +30,7 @@
 ## August 28, 2021 -- Eclipse GlassFish 6.2.1 Available
 
 We are happy to announce the release of Eclipse GlassFish 6.2.1. This release provides implementations
-of the Jakarta EE 9.1 Platform and Web Profile specifications. Download links are available from the [GlassFish Download page](https://eclipse-ee4j.github.io/glassfish/download). Eclipse GlassFish 6.1 implements the Jakarta EE 9.1 specification ([Jakarta EE 9.1 Platform](https://jakarta.ee/specifications/platform/9.1/), [Jakarta EE 9 Web Profile](https://jakarta.ee/specifications/webprofile/9.1/)). GlassFish 6.2.1 now has much improved support for JDK 17, and includes new component Eclipse Exousia, the standalone Jakarta Authorization implementation. GlassFish 6.2.1 compiles with JDK 11 to JDK 17.
+of the Jakarta EE 9.1 Platform and Web Profile specifications. Download links are available from the [GlassFish Download page](https://eclipse-ee4j.github.io/glassfish/download). Eclipse GlassFish 6.2.1 implements the Jakarta EE 9.1 specification ([Jakarta EE 9.1 Platform](https://jakarta.ee/specifications/platform/9.1/), [Jakarta EE 9 Web Profile](https://jakarta.ee/specifications/webprofile/9.1/)). GlassFish 6.2.1 now has much improved support for JDK 17, and includes new component Eclipse Exousia, the standalone Jakarta Authorization implementation. GlassFish 6.2.1 compiles with JDK 11 to JDK 17.
 
 Note this release requires at least JDK 11.
 
diff --git a/docs/website/src/main/resources/docs/README.md b/docs/website/src/main/resources/docs/README.md
index 730ee2c..2959878 100644
--- a/docs/website/src/main/resources/docs/README.md
+++ b/docs/website/src/main/resources/docs/README.md
@@ -38,37 +38,37 @@
 
 ## <a name="development">Development Version</a>
 
-* [Add On Component Development Guide](SNAPSHOT/add-on-component-development-guide/toc.html)
+* [Add On Component Development Guide](SNAPSHOT/add-on-component-development-guide.html)
   ([pdf](SNAPSHOT/add-on-component-development-guide.pdf))
-* [Administration Guide](SNAPSHOT/administration-guide/toc.html)
+* [Administration Guide](SNAPSHOT/administration-guide.html)
   ([pdf](SNAPSHOT/administration-guide.pdf))
-* [Application Deployment Guide](SNAPSHOT/application-deployment-guide/toc.html)
+* [Application Deployment Guide](SNAPSHOT/application-deployment-guide.html)
   ([pdf](SNAPSHOT/application-deployment-guide.pdf))
-* [Application Development Guide](SNAPSHOT/application-development-guide/toc.html)
+* [Application Development Guide](SNAPSHOT/application-development-guide.html)
   ([pdf](SNAPSHOT/application-development-guide.pdf))
-* [Deployment Planning Guide](SNAPSHOT/deployment-planning-guide/toc.html)
+* [Deployment Planning Guide](SNAPSHOT/deployment-planning-guide.html)
   ([pdf](SNAPSHOT/deployment-planning-guide.pdf))
-* [Embedded Server Guide](SNAPSHOT/embedded-server-guide/toc.html)
+* [Embedded Server Guide](SNAPSHOT/embedded-server-guide.html)
   ([pdf](SNAPSHOT/embedded-server-guide.pdf))
-* [Error Messages Reference](SNAPSHOT/error-messages-reference/toc.html)
+* [Error Messages Reference](SNAPSHOT/error-messages-reference.html)
   ([pdf](SNAPSHOT/error-messages-reference.pdf))
-* [High Availability Administration Guide](SNAPSHOT/ha-administration-guide/toc.html)
+* [High Availability Administration Guide](SNAPSHOT/ha-administration-guide.html)
   ([pdf](SNAPSHOT/ha-administration-guide.pdf))
-* [Installation Guide](SNAPSHOT/installation-guide/toc.html)
+* [Installation Guide](SNAPSHOT/installation-guide.html)
   ([pdf](SNAPSHOT/installation-guide.pdf))
-* [Performance Tuning Guide](SNAPSHOT/performance-tuning-guide/toc.html)
+* [Performance Tuning Guide](SNAPSHOT/performance-tuning-guide.html)
   ([pdf](SNAPSHOT/performance-tuning-guide.pdf))
-* [Quick Start Guide](SNAPSHOT/quick-start-guide/toc.html)
+* [Quick Start Guide](SNAPSHOT/quick-start-guide.html)
   ([pdf](SNAPSHOT/quick-start-guide.pdf))
-* [Reference Manual](SNAPSHOT/reference-manual/toc.html)
+* [Reference Manual](SNAPSHOT/reference-manual.html)
   ([pdf](SNAPSHOT/reference-manual.pdf))
-* [Release Notes](SNAPSHOT/release-notes/toc.html)
+* [Release Notes](SNAPSHOT/release-notes.html)
   ([pdf](SNAPSHOT/release-notes.pdf))
-* [Security Guide](SNAPSHOT/security-guide/toc.html)
+* [Security Guide](SNAPSHOT/security-guide.html)
   ([pdf](SNAPSHOT/security-guide.pdf))
-* [Troubleshooting Guide](SNAPSHOT/troubleshooting-guide/toc.html)
+* [Troubleshooting Guide](SNAPSHOT/troubleshooting-guide.html)
   ([pdf](SNAPSHOT/troubleshooting-guide.pdf))
-* [Upgrade Guide](SNAPSHOT/upgrade-guide/toc.html)
+* [Upgrade Guide](SNAPSHOT/upgrade-guide.html)
   ([pdf](SNAPSHOT/upgrade-guide.pdf))
 
 ## <a name="5.1.0">5.1.0 Release</a>
diff --git a/docs/website/src/main/resources/download.md b/docs/website/src/main/resources/download.md
index 250cf48..b999920 100644
--- a/docs/website/src/main/resources/download.md
+++ b/docs/website/src/main/resources/download.md
@@ -1,15 +1,33 @@
 # Eclipse GlassFish Downloads
 
+## Eclipse GlassFish 6.2.3
+
+GlassFish 6.2.3 brings Admin console fixes, build times improvement, component updates, and bug fixes.
+
+For more details on Jakarta EE 9.1, please see the [Jakarte EE Platform Specification Project](https://eclipse-ee4j.github.io/jakartaee-platform/).
+
+* [Eclipse GlassFish 6.2.3, Jakarta EE Platform, 9.1](https://www.eclipse.org/downloads/download.php?file=/ee4j/glassfish/glassfish-6.2.3.zip)
+* [Eclipse GlassFish 6.2.3, Jakarta EE Web Profile, 9.1](https://www.eclipse.org/downloads/download.php?file=/ee4j/glassfish/web-6.2.3.zip)
+
 ## Eclipse GlassFish 6.2.2
 
 GlassFish 6.2.2 brings GlassFish embedded back to live, and contains an import fix for a memory leak. A major behind the scenes accomplishment is that all active tests now use JUnit 5.
 
 For more details on Jakarta EE 9.1, please see the [Jakarte EE Platform Specification Project](https://eclipse-ee4j.github.io/jakartaee-platform/).
 
-Other than bug-fixes, the major change is support for JDK 17.
+* [Eclipse GlassFish 6.2.2, Jakarta EE Platform, 9.1](https://www.eclipse.org/downloads/download.php?file=/ee4j/glassfish/glassfish-6.2.2.zip)
+* [Eclipse GlassFish 6.2.2, Jakarta EE Web Profile, 9.1](https://www.eclipse.org/downloads/download.php?file=/ee4j/glassfish/web-6.2.2.zip)
 
+## Eclipse GlassFish 6.2.1
 
-* [Eclipse GlassFish 6.2.2, Jakarta EE Platform, 9.1](https://github.com/eclipse-ee4j/glassfish/releases/download/6.2.2/glassfish-6.2.2.zip)
+GlassFish 6.2.1 brings integration of Eclipse Exousia, component updates, bug fixes.
+
+For more details on Jakarta EE 9.1, please see the [Jakarte EE Platform Specification Project](https://eclipse-ee4j.github.io/jakartaee-platform/).
+
+The major change is support for JDK 17.
+
+* [Eclipse GlassFish 6.2.1, Jakarta EE Platform, 9.1](https://www.eclipse.org/downloads/download.php?file=/ee4j/glassfish/glassfish-6.2.1.zip)
+* [Eclipse GlassFish 6.2.1, Jakarta EE Web Profile, 9.1](https://www.eclipse.org/downloads/download.php?file=/ee4j/glassfish/web-6.2.1.zip)
 
 ## Eclipse GlassFish 6.1
 
@@ -21,9 +39,8 @@
 
 Other than bug-fixes, the major change is support for JDK 11.
 
-
-* [Eclipse GlassFish 6.1.0, Jakarta EE Platform, 9.1](https://download.eclipse.org/ee4j/glassfish/glassfish-6.1.0.zip), - [info](https://download.eclipse.org/ee4j/glassfish/glassfish-6.1.0.info)
-* [Eclipse GlassFish 6.1.0, Jakarta EE Web Profile, 9.1](https://download.eclipse.org/ee4j/glassfish/web-6.1.0.zip), - [info](https://download.eclipse.org/ee4j/glassfish/web-6.1.0.info)
+* [Eclipse GlassFish 6.1.0, Jakarta EE Platform, 9.1](https://www.eclipse.org/downloads/download.php?file=/ee4j/glassfish/glassfish-6.1.0.zip), - [info](https://download.eclipse.org/ee4j/glassfish/glassfish-6.1.0.info)
+* [Eclipse GlassFish 6.1.0, Jakarta EE Web Profile, 9.1](https://www.eclipse.org/downloads/download.php?file=/ee4j/glassfish/web-6.1.0.zip), - [info](https://download.eclipse.org/ee4j/glassfish/web-6.1.0.info)
 
 ## Eclipse GlassFish 6
 
@@ -32,8 +49,8 @@
 
 NOTE: Users upgrading from Jakarta EE 8 to Jakarta EE 9 may want to review the Spec. changes describing how to upgrade an EE 8 application to EE 9 (for example, you might start by watching [this video](https://youtu.be/3ClvncBrKJw?t=405)).
 
-* [Eclipse GlassFish 6.0.0, Jakarta EE Platform, 9](https://download.eclipse.org/ee4j/glassfish/glassfish-6.0.0.zip), - [info](https://download.eclipse.org/ee4j/glassfish/glassfish-6.0.0.info)
-* [Eclipse GlassFish 6.0.0, Jakarta EE Web Profile, 9](https://download.eclipse.org/ee4j/glassfish/web-6.0.0.zip), - [info](https://download.eclipse.org/ee4j/glassfish/web-6.0.0.info)
+* [Eclipse GlassFish 6.0.0, Jakarta EE Platform, 9](https://www.eclipse.org/downloads/download.php?file=/ee4j/glassfish/glassfish-6.0.0.zip), - [info](https://download.eclipse.org/ee4j/glassfish/glassfish-6.0.0.info)
+* [Eclipse GlassFish 6.0.0, Jakarta EE Web Profile, 9](https://www.eclipse.org/downloads/download.php?file=/ee4j/glassfish/web-6.1.0.zip), - [info](https://download.eclipse.org/ee4j/glassfish/web-6.0.0.info)
 
 We welcome your feedback! Please include the details provided in the **info** link when reporting any [issues](https://github.com/eclipse-ee4j/glassfish/issues).
 
diff --git a/etc/PruneMavenCache.groovy b/etc/PruneMavenCache.groovy
index f190487..b4d4b05 100644
--- a/etc/PruneMavenCache.groovy
+++ b/etc/PruneMavenCache.groovy
@@ -20,7 +20,6 @@
   - name: jnlp
     image: jenkins/jnlp-slave:alpine
     imagePullPolicy: IfNotPresent
-    volumeMounts:
     env:
       - name: JAVA_TOOL_OPTIONS
         value: -Xmx1G
diff --git a/gfbuild.sh b/gfbuild.sh
index 25c7f3b..4d0f1d9 100755
--- a/gfbuild.sh
+++ b/gfbuild.sh
@@ -71,6 +71,9 @@
 }
 
 build_re_dev(){
+  if [ -f "${WORKSPACE}/snapshots/pom.xml" ]; then
+    mvn clean install -T2C -s "${WORKSPACE}/snapshots/settings.xml" -f "${WORKSPACE}/snapshots/pom.xml" ${MVN_EXTRA}
+  fi
   dev_build
   archive_bundles
   merge_junits
diff --git a/gftest.sh b/gftest.sh
index b778032..75b11cf 100755
--- a/gftest.sh
+++ b/gftest.sh
@@ -17,7 +17,7 @@
 #!/bin/bash -e
 
 export WORKSPACE=`pwd`
-export S1AS_HOME="${WORKSPACE}/glassfish6/glassfish"
+export S1AS_HOME="${WORKSPACE}/glassfish7/glassfish"
 export APS_HOME="${WORKSPACE}/appserver/tests/appserv-tests"
 export TEST_RUN_LOG="${WORKSPACE}/tests-run.log"
 
diff --git a/nucleus/admin/cli/pom.xml b/nucleus/admin/cli/pom.xml
index bfa0bf8..2f4b21f 100755
--- a/nucleus/admin/cli/pom.xml
+++ b/nucleus/admin/cli/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.admin</groupId>
         <artifactId>nucleus-admin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>admin-cli</artifactId>
@@ -108,8 +108,18 @@
             <artifactId>jettison</artifactId>
         </dependency>
         <dependency>
+            <groupId>jakarta.activation</groupId>
+            <artifactId>jakarta.activation-api</artifactId>
+        </dependency>
+        <dependency>
             <groupId>jakarta.xml.bind</groupId>
             <artifactId>jakarta.xml.bind-api</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
         <dependency>
             <groupId>com.sun.xml.bind</groupId>
diff --git a/nucleus/admin/config-api/pom.xml b/nucleus/admin/config-api/pom.xml
index 2d0c07a..3ce47d9 100644
--- a/nucleus/admin/config-api/pom.xml
+++ b/nucleus/admin/config-api/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.admin</groupId>
         <artifactId>nucleus-admin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>config-api</artifactId>
@@ -90,8 +90,8 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.glassfish</groupId>
-            <artifactId>jakarta.el</artifactId>
+            <groupId>org.glassfish.expressly</groupId>
+            <artifactId>expressly</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
diff --git a/nucleus/admin/config-api/src/main/java/org/glassfish/config/support/DefaultConfigUpgrade.java b/nucleus/admin/config-api/src/main/java/org/glassfish/config/support/DefaultConfigUpgrade.java
index 6646ae2..313a310 100644
--- a/nucleus/admin/config-api/src/main/java/org/glassfish/config/support/DefaultConfigUpgrade.java
+++ b/nucleus/admin/config-api/src/main/java/org/glassfish/config/support/DefaultConfigUpgrade.java
@@ -52,7 +52,7 @@
 
 /**
  * Upgrade service to add the default-config if it doesn't exist. 3.0.1 and v2.x developer profile do not have
- * default-config. The data to populate the default-config is taken from glassfish6\glassfish\lib\templates\domain.xml.
+ * default-config. The data to populate the default-config is taken from glassfish7\glassfish\lib\templates\domain.xml.
  * This class uses the StAX parser and depends on the exact order of the elements in the template, and the original
  * contents of the template when glassfish was installed. The DefaultConfigUpgrade may not work if the template has been
  * changed from its original.
@@ -308,7 +308,7 @@
     }
 
     /*
-     * Creates the http-service object using data from glassfish6\glassfish\lib\templates\domain.xml
+     * Creates the http-service object using data from glassfish7\glassfish\lib\templates\domain.xml
      * <http-service>
      *  <access-log/>
      *  <virtual-server id="server" network-listeners="http-listener-1, http-listener-2">
@@ -378,7 +378,7 @@
     }
 
     /*
-     * Creates the admin-service object using data from glassfish6\glassfish\lib\templates\domain.xml
+     * Creates the admin-service object using data from glassfish7\glassfish\lib\templates\domain.xml
      * <admin-service system-jmx-connector-name="system" type="server">
      *  <!-- JSR 160  "system-jmx-connector" -->
      *  <jmx-connector address="0.0.0.0" auth-realm-name="admin-realm" name="system" port="${JMX_SYSTEM_CONNECTOR_PORT}" protocol="rmi_jrmp" security-enabled="false"/>
@@ -437,7 +437,7 @@
     }
 
     /*
-     * Creates the log-service object using data from glassfish6\glassfish\lib\templates\domain.xml
+     * Creates the log-service object using data from glassfish7\glassfish\lib\templates\domain.xml
      * <log-service log-rotation-limit-in-bytes="2000000" file="${com.sun.aas.instanceRoot}/logs/server.log">
      *      <module-log-levels/>
      * </log-service>
@@ -490,7 +490,7 @@
     }
 
     /*
-     * Creates the security-service object using data from glassfish6\glassfish\lib\templates\domain.xml
+     * Creates the security-service object using data from glassfish7\glassfish\lib\templates\domain.xml
      * <security-service>
      *  <auth-realm classname="com.sun.enterprise.security.auth.realm.file.FileRealm" name="admin-realm">
      *      <property name="file" value="${com.sun.aas.instanceRoot}/config/admin-keyfile"/>
@@ -899,7 +899,7 @@
     }
 
     /*
-     * Creates the diagnostic-service object using data from glassfish6\glassfish\lib\templates\domain.xml
+     * Creates the diagnostic-service object using data from glassfish7\glassfish\lib\templates\domain.xml
      * <diagnostic-service/>
      */
     private static class DiagnosticServiceConfigCode implements SingleConfigCode<Config> {
@@ -912,7 +912,7 @@
     }
 
     /*
-     * Creates the java-config object using data from glassfish6\glassfish\lib\templates\domain.xml
+     * Creates the java-config object using data from glassfish7\glassfish\lib\templates\domain.xml
      * <java-config debug-options="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,
      * address=${JAVA_DEBUGGER_PORT}" system-classpath="" classpath-suffix="">
      */
@@ -961,7 +961,7 @@
     }
 
     /*
-     * Creates the availability-service object using data from glassfish6\glassfish\lib\templates\domain.xml
+     * Creates the availability-service object using data from glassfish7\glassfish\lib\templates\domain.xml
      * <availability-service>
      *  <web-container-availability availability-enabled="true" persistence-frequency="web-method" persistence-scope="session" persistence-type="replicated" sso-failover-enabled="false"/>
      *  <ejb-container-availability availability-enabled="true" sfsb-store-pool-name="jdbc/hastore"/>
@@ -983,7 +983,7 @@
     }
 
     /*
-     * Creates the network-config object using data from glassfish6\glassfish\lib\templates\domain.xml
+     * Creates the network-config object using data from glassfish7\glassfish\lib\templates\domain.xml
      * <network-config>
      */
     private class NetworkConfigCode implements SingleConfigCode<Config> {
@@ -1356,7 +1356,7 @@
     }
 
     /*
-     * Creates the thread-pools object using data from glassfish6\glassfish\lib\templates\domain.xml
+     * Creates the thread-pools object using data from glassfish7\glassfish\lib\templates\domain.xml
      * <thread-pools>
      *   <thread-pool name="http-thread-pool"/>
      *   <thread-pool max-thread-pool-size="200" idle-thread-timeout-in-seconds="120" name="thread-pool-1"/>
@@ -1413,7 +1413,7 @@
     }
 
     /*
-     * Creates the system-property elements using data from glassfish6\glassfish\lib\templates\domain.xml
+     * Creates the system-property elements using data from glassfish7\glassfish\lib\templates\domain.xml
      */
     private class SystemPropertyConfigCode implements SingleConfigCode<Config> {
 
diff --git a/nucleus/admin/launcher/pom.xml b/nucleus/admin/launcher/pom.xml
index b2b55af..0d1a6f3 100644
--- a/nucleus/admin/launcher/pom.xml
+++ b/nucleus/admin/launcher/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.admin</groupId>
         <artifactId>nucleus-admin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>launcher</artifactId>
diff --git a/nucleus/admin/monitor/pom.xml b/nucleus/admin/monitor/pom.xml
index b289449..58d859e 100755
--- a/nucleus/admin/monitor/pom.xml
+++ b/nucleus/admin/monitor/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.admin</groupId>
         <artifactId>nucleus-admin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>monitoring-core</artifactId>
diff --git a/nucleus/admin/monitor/src/main/java/org/glassfish/admin/monitor/jvm/JVMStatsProviderBootstrap.java b/nucleus/admin/monitor/src/main/java/org/glassfish/admin/monitor/jvm/JVMStatsProviderBootstrap.java
index 16d3b57..c447a78 100644
--- a/nucleus/admin/monitor/src/main/java/org/glassfish/admin/monitor/jvm/JVMStatsProviderBootstrap.java
+++ b/nucleus/admin/monitor/src/main/java/org/glassfish/admin/monitor/jvm/JVMStatsProviderBootstrap.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2009, 2018 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2021 Contributors to the Eclipse Foundation
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -45,7 +46,6 @@
     private JVMOSStatsProvider osStatsProvider = new JVMOSStatsProvider();
     private JVMRuntimeStatsProvider runtimeStatsProvider = new JVMRuntimeStatsProvider();
     private JVMThreadSystemStatsProvider threadSysStatsProvider = new JVMThreadSystemStatsProvider();
-    private List<JVMGCStatsProvider> jvmStatsProviderList = new ArrayList();
     private ThreadMXBean threadBean = ManagementFactory.getThreadMXBean();
     public static final String JVM = "jvm";
 
@@ -59,7 +59,6 @@
                 ContainerMonitoring.LEVEL_LOW);
         for (GarbageCollectorMXBean gc : ManagementFactory.getGarbageCollectorMXBeans()) {
             JVMGCStatsProvider jvmStatsProvider = new JVMGCStatsProvider(gc.getName());
-            jvmStatsProviderList.add(jvmStatsProvider);
             StatsProviderManager.register("jvm", PluginPoint.SERVER, "jvm/garbage-collectors/" + gc.getName(), jvmStatsProvider,
                     ContainerMonitoring.LEVEL_LOW);
         }
diff --git a/nucleus/admin/pom.xml b/nucleus/admin/pom.xml
index ecbf082..78d4150 100755
--- a/nucleus/admin/pom.xml
+++ b/nucleus/admin/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-nucleus-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.main.admin</groupId>
diff --git a/nucleus/admin/rest/gf-restadmin-connector/pom.xml b/nucleus/admin/rest/gf-restadmin-connector/pom.xml
index 121c149..d7c08b8 100644
--- a/nucleus/admin/rest/gf-restadmin-connector/pom.xml
+++ b/nucleus/admin/rest/gf-restadmin-connector/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.admin</groupId>
         <artifactId>rest-service-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>gf-restadmin-connector</artifactId>
diff --git a/nucleus/admin/rest/pom.xml b/nucleus/admin/rest/pom.xml
index 0ca4620..a0e888c 100644
--- a/nucleus/admin/rest/pom.xml
+++ b/nucleus/admin/rest/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.admin</groupId>
         <artifactId>nucleus-admin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>rest-service-parent</artifactId>
diff --git a/nucleus/admin/rest/rest-client/pom.xml b/nucleus/admin/rest/rest-client/pom.xml
index 22a4e61..ab9aa57 100644
--- a/nucleus/admin/rest/rest-client/pom.xml
+++ b/nucleus/admin/rest/rest-client/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.admin</groupId>
         <artifactId>rest-service-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>rest-client</artifactId>
diff --git a/nucleus/admin/rest/rest-service/pom.xml b/nucleus/admin/rest/rest-service/pom.xml
index ade651e..70acd95 100644
--- a/nucleus/admin/rest/rest-service/pom.xml
+++ b/nucleus/admin/rest/rest-service/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.admin</groupId>
         <artifactId>rest-service-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>rest-service</artifactId>
@@ -137,8 +137,8 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.glassfish</groupId>
-            <artifactId>jakarta.el</artifactId>
+            <groupId>org.glassfish.expressly</groupId>
+            <artifactId>expressly</artifactId>
             <scope>test</scope>
         </dependency>
     </dependencies>
diff --git a/nucleus/admin/rest/rest-testing/pom.xml b/nucleus/admin/rest/rest-testing/pom.xml
index 2f487c2..c842895 100644
--- a/nucleus/admin/rest/rest-testing/pom.xml
+++ b/nucleus/admin/rest/rest-testing/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.admin</groupId>
         <artifactId>rest-service-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>rest-testing</artifactId>
diff --git a/nucleus/admin/server-mgmt/pom.xml b/nucleus/admin/server-mgmt/pom.xml
index a76c169..5b9a12f 100644
--- a/nucleus/admin/server-mgmt/pom.xml
+++ b/nucleus/admin/server-mgmt/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.admin</groupId>
         <artifactId>nucleus-admin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>server-mgmt</artifactId>
diff --git a/nucleus/admin/template/pom.xml b/nucleus/admin/template/pom.xml
index ebcaf79..0a85772 100644
--- a/nucleus/admin/template/pom.xml
+++ b/nucleus/admin/template/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.admin</groupId>
         <artifactId>nucleus-admin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>nucleus-domain</artifactId>
diff --git a/nucleus/admin/util/pom.xml b/nucleus/admin/util/pom.xml
index 654c94c..c12fbb0 100755
--- a/nucleus/admin/util/pom.xml
+++ b/nucleus/admin/util/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.admin</groupId>
         <artifactId>nucleus-admin</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>admin-util</artifactId>
diff --git a/nucleus/cluster/admin/pom.xml b/nucleus/cluster/admin/pom.xml
index 5039817..c92d24c 100644
--- a/nucleus/cluster/admin/pom.xml
+++ b/nucleus/cluster/admin/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.cluster</groupId>
         <artifactId>cluster</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>cluster-admin</artifactId>
diff --git a/nucleus/cluster/admin/readme b/nucleus/cluster/admin/readme
index ff33a09..00be977 100755
--- a/nucleus/cluster/admin/readme
+++ b/nucleus/cluster/admin/readme
@@ -28,7 +28,7 @@
 bunch-o-nodes
 
   <nodes>
-    <node node-host="chandu" name="ssh_node1" type="SSH" install-dir="/export/home/hudson/devtest-bnlocal/glassfish6-xyz">
+    <node node-host="chandu" name="ssh_node1" type="SSH" install-dir="/export/home/hudson/devtest-bnlocal/glassfish7-xyz">
       <ssh-connector>
         <ssh-auth user-name="hudson"></ssh-auth>
       </ssh-connector>
diff --git a/nucleus/cluster/cli/pom.xml b/nucleus/cluster/cli/pom.xml
index edca153..7fcc636 100755
--- a/nucleus/cluster/cli/pom.xml
+++ b/nucleus/cluster/cli/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.cluster</groupId>
         <artifactId>cluster</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>cluster-cli</artifactId>
diff --git a/nucleus/cluster/cli/src/main/java/com/sun/enterprise/admin/cli/cluster/ImportSyncBundleCommand.java b/nucleus/cluster/cli/src/main/java/com/sun/enterprise/admin/cli/cluster/ImportSyncBundleCommand.java
index c70ac0f..beb3d8f 100644
--- a/nucleus/cluster/cli/src/main/java/com/sun/enterprise/admin/cli/cluster/ImportSyncBundleCommand.java
+++ b/nucleus/cluster/cli/src/main/java/com/sun/enterprise/admin/cli/cluster/ImportSyncBundleCommand.java
@@ -50,7 +50,7 @@
  * import-sync-bundle applies the content under ${com.sun.aas.instanceRoot}/
  * directory. Synchronization cookie with DAS's timestamp should be created.
  * It also creates das.properties (if not present) under agent dir (ex.
- * installRoot/glassfish6/glassfish/nodes/<host-name>/agent/config/das.properties).
+ * installRoot/glassfish7/glassfish/nodes/<host-name>/agent/config/das.properties).
  *
  * Before running this command the instance should already have been registered in
  * DAS (server element created in DAS domain.xml) by running create-instance.
@@ -76,10 +76,10 @@
  *
  * --node         name of the node; this is optional. The command fails if there
  * is more than one node under the default location
- * (installRoot/glassfish6/glassfish/nodes/<host-name>/)
+ * (installRoot/glassfish7/glassfish/nodes/<host-name>/)
  *
  * --nodedir      parent dir where node is created; this is optional. Default
- * location is installRoot/glassfish6/glassfish/nodes/
+ * location is installRoot/glassfish7/glassfish/nodes/
  *
  * --file         sync bundle created by export-sync-bundle
  *
diff --git a/nucleus/cluster/common/pom.xml b/nucleus/cluster/common/pom.xml
index b1ca0d6..5340398 100644
--- a/nucleus/cluster/common/pom.xml
+++ b/nucleus/cluster/common/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.cluster</groupId>
         <artifactId>cluster</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>cluster-common</artifactId>
diff --git a/nucleus/cluster/common/src/test/java/com/sun/enterprise/util/cluster/PathsTest.java b/nucleus/cluster/common/src/test/java/com/sun/enterprise/util/cluster/PathsTest.java
index 9847d04..30ced91 100644
--- a/nucleus/cluster/common/src/test/java/com/sun/enterprise/util/cluster/PathsTest.java
+++ b/nucleus/cluster/common/src/test/java/com/sun/enterprise/util/cluster/PathsTest.java
@@ -35,7 +35,7 @@
  * @author wnevins
  */
 public class PathsTest {
-    private static final String SPECIFIED_INSTALL_DIR = "D:/glassfish6";
+    private static final String SPECIFIED_INSTALL_DIR = "D:/glassfish7";
     private static final String NODE_NAME = "thenode";
     private static final String SPECIFIED_NODES_DIR = SPECIFIED_INSTALL_DIR + "/glassfish/mynodes";
     private static final String SPECIFIED_NODE_DIR = SPECIFIED_NODES_DIR + "/" + NODE_NAME;
diff --git a/nucleus/cluster/gms-adapter/pom.xml b/nucleus/cluster/gms-adapter/pom.xml
index a8a187b..3285593 100644
--- a/nucleus/cluster/gms-adapter/pom.xml
+++ b/nucleus/cluster/gms-adapter/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.cluster</groupId>
         <artifactId>cluster</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>gms-adapter</artifactId>
diff --git a/nucleus/cluster/gms-bootstrap/pom.xml b/nucleus/cluster/gms-bootstrap/pom.xml
index 3b557e0..069af0c 100644
--- a/nucleus/cluster/gms-bootstrap/pom.xml
+++ b/nucleus/cluster/gms-bootstrap/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.cluster</groupId>
         <artifactId>cluster</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>gms-bootstrap</artifactId>
diff --git a/nucleus/cluster/pom.xml b/nucleus/cluster/pom.xml
index fc64f30..ba384ae 100755
--- a/nucleus/cluster/pom.xml
+++ b/nucleus/cluster/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-nucleus-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.main.cluster</groupId>
diff --git a/nucleus/cluster/ssh/pom.xml b/nucleus/cluster/ssh/pom.xml
index 4d9a609..e794bc5 100644
--- a/nucleus/cluster/ssh/pom.xml
+++ b/nucleus/cluster/ssh/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.cluster</groupId>
         <artifactId>cluster</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>cluster-ssh</artifactId>
diff --git a/nucleus/common/amx-core/pom.xml b/nucleus/common/amx-core/pom.xml
index e1cf748..662d597 100755
--- a/nucleus/common/amx-core/pom.xml
+++ b/nucleus/common/amx-core/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.common</groupId>
         <artifactId>nucleus-common</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>amx-core</artifactId>
diff --git a/nucleus/common/common-util/pom.xml b/nucleus/common/common-util/pom.xml
index a9f2606..7e9bcd0 100755
--- a/nucleus/common/common-util/pom.xml
+++ b/nucleus/common/common-util/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.common</groupId>
         <artifactId>nucleus-common</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>common-util</artifactId>
diff --git a/nucleus/common/common-util/src/main/java/com/sun/common/util/logging/LoggingConfigImpl.java b/nucleus/common/common-util/src/main/java/com/sun/common/util/logging/LoggingConfigImpl.java
index 2a20914..0e9c61e 100644
--- a/nucleus/common/common-util/src/main/java/com/sun/common/util/logging/LoggingConfigImpl.java
+++ b/nucleus/common/common-util/src/main/java/com/sun/common/util/logging/LoggingConfigImpl.java
@@ -191,7 +191,7 @@
         // these are only accessible via the web-container name so all values should be the same
         props.setProperty("org.apache.catalina.level", value);
         props.setProperty("org.apache.coyote.level", value);
-        props.setProperty("org.apache.jasper.level", value);
+        props.setProperty("org.glassfish.wasp.level", value);
     }
 
     /**
diff --git a/nucleus/common/common-util/src/main/java/com/sun/common/util/logging/LoggingOutputStream.java b/nucleus/common/common-util/src/main/java/com/sun/common/util/logging/LoggingOutputStream.java
index eced79c..8b73cc0 100644
--- a/nucleus/common/common-util/src/main/java/com/sun/common/util/logging/LoggingOutputStream.java
+++ b/nucleus/common/common-util/src/main/java/com/sun/common/util/logging/LoggingOutputStream.java
@@ -170,7 +170,7 @@
  * One option that was thought of to smooth this over was to see
  * if the caller of println is Throwable.[some set of methods].
  * Unfortunately, there are others who interpose on System.out and err
- * (like jasper) which makes that check untenable.
+ * (like WaSP) which makes that check untenable.
  * Hence the logic currently used is to see if there is a println(Throwable)
  * and do a printStackTrace and log the complete StackTrace ourselves.
  * If this is followed by a series of printlns, then we keep ignoring
diff --git a/nucleus/common/common-util/src/main/java/com/sun/enterprise/universal/collections/CollectionUtils.java b/nucleus/common/common-util/src/main/java/com/sun/enterprise/universal/collections/CollectionUtils.java
index 029402b..47699d2 100644
--- a/nucleus/common/common-util/src/main/java/com/sun/enterprise/universal/collections/CollectionUtils.java
+++ b/nucleus/common/common-util/src/main/java/com/sun/enterprise/universal/collections/CollectionUtils.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2008, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -16,52 +17,63 @@
 
 package com.sun.enterprise.universal.collections;
 
-import java.util.*;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
 
 /**
  * all-static methods for handling operations with Collections
+ *
  * @author bnevins
  */
 public class CollectionUtils {
+
+    private static final String EOL = System.getProperty("line.separator");
+
     private CollectionUtils() {
 
     }
+
     /**
-     * Convert a Properties object, which is a Map<Object,Object> into
-     * a Map<String,String>
+     * Convert a Properties object, which is a <code>Map&lt;Object,Object></code> into a <code<Map&lt;String,String></code>
+     *
      * @param p The Properties object to convert
      * @return The converted Map
      */
-    public static Map<String,String> propertiesToStringMap(Properties p)
-    {
-        Map<String,String> map = new HashMap<String,String>();
-        Set<Map.Entry<Object,Object>> entries = p.entrySet();
+    public static Map<String, String> propertiesToStringMap(Properties p) {
+        Map<String, String> map = new HashMap<>();
+        Set<Map.Entry<Object, Object>> entries = p.entrySet();
 
-        for(Map.Entry<Object,Object> entry : entries) {
+        for (Map.Entry<Object, Object> entry : entries) {
             Object name = entry.getKey();
             Object value = entry.getValue();
 
-            if(name == null)
-                continue; // impossible.  Ignore if I was wrong...
-            if(value == null)
+            if (name == null) {
+                continue; // impossible. Ignore if I was wrong...
+            }
+            if (value == null) {
                 map.put(name.toString(), null);
-            else
+            } else {
                 map.put(name.toString(), value.toString());
+            }
         }
+
         return map;
     }
 
     /**
-     * Tired of dumping a String representation of a Map?
-     * Then call me!
+     * Tired of dumping a String representation of a Map? Then call me!
+     *
      * @param map The map to turn into a printable String
      * @return The pretty String
      */
-    public static String toString(Map<String,String> map) {
+    public static String toString(Map<String, String> map) {
         String[] arr = toStringArray(map);
         StringBuilder sb = new StringBuilder();
 
-        for(String s : arr) {
+        for (String s : arr) {
             sb.append(s);
             sb.append(EOL);
         }
@@ -70,59 +82,65 @@
 
     /**
      * Convert a String[] into a space-delimited String
+     *
      * @param arr The String array to convert
      * @return The pretty String
      */
     public static String toString(String[] arr) {
         StringBuilder sb = new StringBuilder();
-        for(String s : arr) {
+        for (String s : arr) {
             sb.append(s);
             sb.append(' ');
         }
         return sb.toString();
     }
+
     /**
      * Convert a String[] into a newline-delimited String
+     *
      * @param arr The String array to convert
      * @return The pretty String
      */
     public static String toStringLines(String[] arr) {
         StringBuilder sb = new StringBuilder();
-        for(String s : arr) {
+        for (String s : arr) {
             sb.append(s);
             sb.append('\n');
         }
         return sb.toString();
     }
+
     /**
      * Convert a List of String into a space-delimited String
+     *
      * @param arr The String array to convert
      * @return The pretty String
      */
     public static String toString(List<String> list) {
         StringBuilder sb = new StringBuilder();
-        for(String s : list) {
+        for (String s : list) {
             sb.append(s);
             sb.append(' ');
         }
         return sb.toString();
     }
 
-    public static String[] toStringArray(Map<String,String> map) {
+    public static String[] toStringArray(Map<String, String> map) {
         Set<String> set = map.keySet();
         String[] ss = new String[map.size()];
         int i = 0;
 
-        for(String name : set) {
+        for (String name : set) {
             String value = map.get(name);
             String s = name;
 
-            if(value != null) {
+            if (value != null) {
                 s += "=" + value;
             }
             ss[i++] = s;
         }
+
         return ss;
     }
-    private static final String EOL = System.getProperty("line.separator");
+
 }
diff --git a/nucleus/common/common-util/src/main/java/com/sun/enterprise/universal/process/Jps.java b/nucleus/common/common-util/src/main/java/com/sun/enterprise/universal/process/Jps.java
index 6d055c0..63263b0 100644
--- a/nucleus/common/common-util/src/main/java/com/sun/enterprise/universal/process/Jps.java
+++ b/nucleus/common/common-util/src/main/java/com/sun/enterprise/universal/process/Jps.java
@@ -146,7 +146,7 @@
      <pre>
      2524 sun.tools.jps.Jps
      5324 com.sun.enterprise.glassfish.bootstrap.ASMain
-     4120 D:\glassfish6\glassfish\bin\..\modules\admin-cli.jar
+     4120 D:\glassfish7\glassfish\bin\..\modules\admin-cli.jar
      </pre>
      * If there is a path -- then there is no classname and vice-versa
      * @param s
diff --git a/nucleus/common/common-util/src/main/java/com/sun/enterprise/util/FelixPrettyPrinter.java b/nucleus/common/common-util/src/main/java/com/sun/enterprise/util/FelixPrettyPrinter.java
index c6bd714..69a0314 100644
--- a/nucleus/common/common-util/src/main/java/com/sun/enterprise/util/FelixPrettyPrinter.java
+++ b/nucleus/common/common-util/src/main/java/com/sun/enterprise/util/FelixPrettyPrinter.java
@@ -33,87 +33,92 @@
      */
     public static String prettyPrintExceptionMessage(String message) {
         StringBuilder messageBuilder = new StringBuilder();
-        int index = message.indexOf("Unable to resolve");
-        int indent = 0;
-        while (index >= 0) {
-            printLn(messageBuilder, indent, "Unable to resolve");
-            index += "Unable to resolve".length();
+        try {
+            int index = message.indexOf("Unable to resolve");
+            int indent = 0;
+            while (index >= 0) {
+                printLn(messageBuilder, indent, "Unable to resolve");
+                index += "Unable to resolve".length();
 
-            int index2 = message.indexOf("missing requirement", index);
-            if (index2 >= 0) {
-
-                indent++;
-
-                // Module name would be e.g.
-                // org.glassfish.server.internal.batch.glassfish-batch-connector [103](R 103.0):
-                String module = message.substring(index, index2);
-
-                // Remove the duplicate number
-                if (module.contains("(R")) {
-                    module = module.substring(0, module.indexOf("(R"));
-                }
-
-                printLn(messageBuilder, indent, module);
-                printLn(messageBuilder, indent, "missing requirement");
-
-                index = index2 + "missing requirement".length();
-
-                // In GlassFish and in a classloader the search is always for package, so we can
-                // use that as a delimiter here
-                index = message.indexOf("osgi.wiring.package; ", index);
-                if (index >= 0) {
+                int index2 = message.indexOf("missing requirement", index);
+                if (index2 >= 0) {
 
                     indent++;
 
-                    // Remainder of input now looks like this:
+                    // Module name would be e.g.
+                    // org.glassfish.server.internal.batch.glassfish-batch-connector [103](R 103.0):
+                    String module = message.substring(index, index2);
 
-                    // osgi.wiring.package; (&(osgi.wiring.package=org.glassfish.grizzly)(version>=2.4.0)(!(version>=3.0.0)))
-
-                    // Skip over "osgi.wiring.package; ", we're always searching for this so
-                    // no need to print it.
-                    index += "osgi.wiring.package; ".length();
-
-                    // Now extracting this:
-                    // "(&(osgi.wiring.package=org.glassfish.grizzly)(version>=2.4.0)(!(version>=3.0.0)))"
-                    index2 = message.indexOf(" ", index);
-
-                    String packageAndVersion = message.substring(index, index2);
-
-                    // Make it a little less "cramped"
-                    // "(&(package=org.glassfish.grizzly) (version>=2.4.0) (!(version>=3.0.0)))"
-                    packageAndVersion = packageAndVersion.replace("osgi.wiring.package", "package");
-                    packageAndVersion = packageAndVersion.replace(")(", ") (");
-                    packageAndVersion = packageAndVersion.replace("=", " = ");
-                    packageAndVersion = packageAndVersion.replace("> =", " >=");
-                    packageAndVersion = packageAndVersion.replace("< =", " <=");
-
-                    // Remove outer braces
-                    // "&(package=org.glassfish.grizzly) (version>=2.4.0) (!(version>=3.0.0))"
-                    if (packageAndVersion.startsWith("(")) {
-                        packageAndVersion = packageAndVersion.substring(1);
-                    }
-                    if (packageAndVersion.endsWith(")")) {
-                        packageAndVersion = packageAndVersion.substring(0, packageAndVersion.length()-1);
+                    // Remove the duplicate number
+                    if (module.contains("(R")) {
+                        module = module.substring(0, module.indexOf("(R"));
                     }
 
-                    printLn(messageBuilder, indent, packageAndVersion);
+                    printLn(messageBuilder, indent, module);
+                    printLn(messageBuilder, indent, "missing requirement");
 
-                    // If there's a "caused by:", print it and increase the indent
-                    index = message.indexOf("caused by: ", index2);
+                    index = index2 + "missing requirement".length();
+
+                    // In GlassFish and in a classloader the search is always for package, so we can
+                    // use that as a delimiter here
+                    index = message.indexOf("osgi.wiring.package; ", index);
                     if (index >= 0) {
 
-                        printLn(messageBuilder, indent, "caused by:");
-
                         indent++;
-                        index += "caused by: ".length();
+
+                        // Remainder of input now looks like this:
+
+                        // osgi.wiring.package; (&(osgi.wiring.package=org.glassfish.grizzly)(version>=2.4.0)(!(version>=3.0.0)))
+
+                        // Skip over "osgi.wiring.package; ", we're always searching for this so
+                        // no need to print it.
+                        index += "osgi.wiring.package; ".length();
+
+                        // Now extracting this:
+                        // "(&(osgi.wiring.package=org.glassfish.grizzly)(version>=2.4.0)(!(version>=3.0.0)))"
+                        index2 = message.indexOf(" ", index);
+
+                        String packageAndVersion = message.substring(index, index2);
+
+                        // Make it a little less "cramped"
+                        // "(&(package=org.glassfish.grizzly) (version>=2.4.0) (!(version>=3.0.0)))"
+                        packageAndVersion = packageAndVersion.replace("osgi.wiring.package", "package");
+                        packageAndVersion = packageAndVersion.replace(")(", ") (");
+                        packageAndVersion = packageAndVersion.replace("=", " = ");
+                        packageAndVersion = packageAndVersion.replace("> =", " >=");
+                        packageAndVersion = packageAndVersion.replace("< =", " <=");
+
+                        // Remove outer braces
+                        // "&(package=org.glassfish.grizzly) (version>=2.4.0) (!(version>=3.0.0))"
+                        if (packageAndVersion.startsWith("(")) {
+                            packageAndVersion = packageAndVersion.substring(1);
+                        }
+                        if (packageAndVersion.endsWith(")")) {
+                            packageAndVersion = packageAndVersion.substring(0, packageAndVersion.length()-1);
+                        }
+
+                        printLn(messageBuilder, indent, packageAndVersion);
+
+                        // If there's a "caused by:", print it and increase the indent
+                        index = message.indexOf("caused by: ", index2);
+                        if (index >= 0) {
+
+                            printLn(messageBuilder, indent, "caused by:");
+
+                            indent++;
+                            index += "caused by: ".length();
+                        }
                     }
+
                 }
 
+                index = index2;
+
+                index = message.indexOf("Unable to resolve", index);
             }
-
-            index = index2;
-
-            index = message.indexOf("Unable to resolve", index);
+        } catch (Exception e) {
+            // too bad
+            return message;
         }
 
         return messageBuilder.toString();
@@ -148,17 +153,16 @@
     }
 
     public static void main(String[] args) {
-        String test = "Caused by: org.osgi.framework.BundleException: Unable to resolve org.glassfish.server.internal.batch.glassfish-batch-connector [103](R 103.0): missing requirement [org.glassfish.server.internal.batch.glassfish-batch-connector [103](R 103.0)] osgi.wiring.package; (osgi.wiring.package=com.ibm.jbatch.spi) [caused by: Unable to resolve org.glassfish.server.internal.batch.payara-jbatch [325](R 325.0): missing requirement [org.glassfish.server.internal.batch.payara-jbatch [325](R 325.0)] osgi.wiring.package; (osgi.wiring.package=org.glassfish.weld) [caused by: Unable to resolve org.glassfish.server.internal.web.weld-integration [395](R 395.0): missing requirement [org.glassfish.server.internal.web.weld-integration [395](R 395.0)] osgi.wiring.package; (&(osgi.wiring.package=com.sun.faces.spi)(version>=2.3.0)(!(version>=3.0.0)))]] Unresolved requirements: [[org.glassfish.server.internal.batch.glassfish-batch-connector [103](R 103.0)] osgi.wiring.package; (osgi.wiring.package=com.ibm.jbatch.spi)]";
+        String test = "org.osgi.framework.BundleException: Unable to resolve org.glassfish.main.webservices.connector [207](R 207.0): missing requirement [org.glassfish.main.webservices.connector [207](R 207.0)] osgi.wiring.package; (&(osgi.wiring.package=jakarta.xml.ws)(version>=3.0.0)(!(version>=4.0.0))) [caused by: Unable to resolve org.glassfish.metro.webservices-api-osgi [236](R 236.0): missing requirement [org.glassfish.metro.webservices-api-osgi [236](R 236.0)] osgi.wiring.package; (&(osgi.wiring.package=jakarta.xml.bind)(version>=3.0.0)(!(version>=4.0.0)))] Unresolved requirements: [[org.glassfish.main.webservices.connector [207](R 207.0)] osgi.wiring.package; (&(osgi.wiring.package=jakarta.xml.ws)(version>=3.0.0)(!(version>=4.0.0)))]"
+                + "";
 
         String test1 = prettyPrintExceptionMessage(test);
 
         List<Integer> ids = findBundleIds(test1);
 
-        String test2 = prettyPrintExceptionMessage(" (java.lang.String) Unable to resolve org.glassfish.jersey.containers.jersey-container-grizzly2-http [142](R 142.0): missing requirement [org.glassfish.jersey.containers.jersey-container-grizzly2-http [142](R 142.0)] osgi.wiring.package; (&(osgi.wiring.package=org.glassfish.grizzly)(version>=2.4.0)(!(version>=3.0.0))) Unresolved requirements: [[org.glassfish.jersey.containers.jersey-container-grizzly2-http [142](R 142.0)] osgi.wiring.package; (&(osgi.wiring.package=org.glassfish.grizzly)(version>=2.4.0)(!(version>=3.0.0)))]");
+        String test2 = prettyPrintExceptionMessage(" Unable to resolve org.glassfish.main.resources.mail-connector [29](R 29.0): missing requirement [org.glassfish.main.resources.mail-connector [29](R 29.0)] osgi.wiring.package; (&(osgi.wiring.package=org.glassfish.resources.admin.cli)(version>=7.0.0)(!(version>=8.0.0))) [caused by: Unable to resolve org.glassfish.main.resources.connector [217](R 217.0): missing requirement [org.glassfish.main.resources.connector [217](R 217.0)] osgi.wiring.package; (&(osgi.wiring.package=com.sun.enterprise.repository)(version>=7.0.0)(!(version>=8.0.0))) [caused by: Unable to resolve org.glassfish.main.deployment.dol [284](R 284.0): missing requirement [org.glassfish.main.deployment.dol [284](R 284.0)] osgi.wiring.package; (&(osgi.wiring.package=jakarta.enterprise.inject.spi)(version>=3.0.0)(!(version>=4.0.0))) [caused by: Unable to resolve jakarta.enterprise.cdi-api [127](R 127.0): missing requirement [jakarta.enterprise.cdi-api [127](R 127.0)] osgi.wiring.package; (&(osgi.wiring.package=jakarta.enterprise.lang.model)(version>=4.0.0)(!(version>=5.0.0)))]]] Unresolved requirements: [[org.glassfish.main.resources.mail-connector [29](R 29.0)] osgi.wiring.package; (&(osgi.wiring.package=org.glassfish.resources.admin.cli)(version>=7.0.0)(!(version>=8.0.0)))] ");
 
-        System.out.println(test1);
-        System.out.println(ids.toString());
-        System.out.println("\n\n");
+
         System.out.println(test2);
     }
 
diff --git a/nucleus/common/common-util/src/main/java/com/sun/enterprise/util/SystemPropertyConstants.java b/nucleus/common/common-util/src/main/java/com/sun/enterprise/util/SystemPropertyConstants.java
index 6d58e59..6c2fefe 100644
--- a/nucleus/common/common-util/src/main/java/com/sun/enterprise/util/SystemPropertyConstants.java
+++ b/nucleus/common/common-util/src/main/java/com/sun/enterprise/util/SystemPropertyConstants.java
@@ -312,7 +312,7 @@
 
     /**
      * Returns the component identifier associated with the INSTALL_ROOT. For example if INSTALL_ROOT is
-     * /home/glassfish6/glassfish the component name will "glassfish".
+     * /home/glassfish7/glassfish the component name will "glassfish".
      *
      * @return String representing the component identifier.
      */
diff --git a/nucleus/common/common-util/src/main/java/com/sun/enterprise/util/io/InstanceDirs.java b/nucleus/common/common-util/src/main/java/com/sun/enterprise/util/io/InstanceDirs.java
index b702ccc..25b2030 100644
--- a/nucleus/common/common-util/src/main/java/com/sun/enterprise/util/io/InstanceDirs.java
+++ b/nucleus/common/common-util/src/main/java/com/sun/enterprise/util/io/InstanceDirs.java
@@ -28,11 +28,11 @@
  * when working with invalid directories...
  *
  * Example:
- * new InstanceDirs(new File("/glassfish6/glassfish/nodes/mymachine/instance1"));
+ * new InstanceDirs(new File("/glassfish7/glassfish/nodes/mymachine/instance1"));
  *
- * getInstanceDir()   == /glassfish6/glassfish/nodes/mymachine/instance1
- * getNodeAgentDir()  == /glassfish6/glassfish/nodes/mymachine
- * getNodeAgentsDir() == /glassfish6/glassfish/nodes
+ * getInstanceDir()   == /glassfish7/glassfish/nodes/mymachine/instance1
+ * getNodeAgentDir()  == /glassfish7/glassfish/nodes/mymachine
+ * getNodeAgentsDir() == /glassfish7/glassfish/nodes
  * getInstanceName()  == instance1
  *
  *
diff --git a/nucleus/common/common-util/src/main/java/com/sun/enterprise/util/io/ServerDirs.java b/nucleus/common/common-util/src/main/java/com/sun/enterprise/util/io/ServerDirs.java
index 98c49e6..895d236 100644
--- a/nucleus/common/common-util/src/main/java/com/sun/enterprise/util/io/ServerDirs.java
+++ b/nucleus/common/common-util/src/main/java/com/sun/enterprise/util/io/ServerDirs.java
@@ -32,14 +32,14 @@
  *
  * examples:
  * DAS
- * domainDir = getServerDir() == C:/glassfish6/glassfish/domains/domain1
- * domainsDir = getServerParentDir() == C:/glassfish6/glassfish/domains
+ * domainDir = getServerDir() == C:/glassfish7/glassfish/domains/domain1
+ * domainsDir = getServerParentDir() == C:/glassfish7/glassfish/domains
  * grandparent-dir is meaningless
  *
  * Instance
- * instanceDir = getServerDir() == C:/glassfish6/glassfish/nodes/mymachine/instance1
- * agentDir = getServerParentDir() == C:/glassfish6/glassfish/nodes/mymachine
- * agentsDir = getServerGrandParentDir() == C:/glassfish6/glassfish/nodes
+ * instanceDir = getServerDir() == C:/glassfish7/glassfish/nodes/mymachine/instance1
+ * agentDir = getServerParentDir() == C:/glassfish7/glassfish/nodes/mymachine
+ * agentsDir = getServerGrandParentDir() == C:/glassfish7/glassfish/nodes
  *
  * Currently in all cases the name of the serverDir is the name of the server --
  * by our definition.
@@ -79,11 +79,13 @@
     }
 
     public ServerDirs(File leaf) throws IOException {
-        if (leaf == null)
+        if (leaf == null) {
             throw new IllegalArgumentException(strings.get("ServerDirs.nullArg", "ServerDirs.ServerDirs()"));
+        }
 
-        if (!leaf.isDirectory())
+        if (!leaf.isDirectory()) {
             throw new IOException(strings.get("ServerDirs.badDir", leaf));
+        }
 
         serverDir = SmartFile.sanitize(leaf);
         serverName = serverDir.getName();
@@ -92,8 +94,9 @@
         // about getParentFile() which has issues with relative paths...
         parentDir = serverDir.getParentFile();
 
-        if (parentDir == null || !parentDir.isDirectory())
+        if (parentDir == null || !parentDir.isDirectory()) {
             throw new IOException(strings.get("ServerDirs.badParentDir", serverDir));
+        }
 
         // grandparent dir is optional.  It can be null for DAS for instance...
         grandParentDir = parentDir.getParentFile();
@@ -130,8 +133,9 @@
     }
 
     public final String getServerName() {
-        if (!valid)
+        if (!valid) {
             return null;
+        }
 
         return serverName;
     }
@@ -141,11 +145,13 @@
      * @return
      */
     public final String deletePidFile() {
-        if (!valid)
+        if (!valid) {
             return "Internal Error: ServerDirs is in an invalid state";
+        }
 
-        if (!pidFile.isFile())
+        if (!pidFile.isFile()) {
             return null;
+        }
 
         String message = "pid file " + pidFile + " exists, removing it.";
 
@@ -163,46 +169,53 @@
 
     // getters & setters section below
     public final File getServerDir() {
-        if (!valid)
+        if (!valid) {
             return null;
+        }
         return serverDir;
     }
 
     public final File getAgentDir(){
-         if (!valid)
+         if (!valid) {
             return null;
+        }
         return agentDir;
     }
 
     public final File getServerParentDir() {
-        if (!valid)
+        if (!valid) {
             return null;
+        }
         return parentDir;
     }
 
     public final File getServerGrandParentDir() {
-        if (!valid)
+        if (!valid) {
             return null;
+        }
         return grandParentDir;
     }
 
     public final File getDomainXml() {
-        if (!valid)
+        if (!valid) {
             return null;
+        }
 
         return domainXml;
     }
 
     public final File getConfigDir() {
-        if (!valid)
+        if (!valid) {
             return null;
+        }
 
         return configDir;
     }
 
     public final File getPidFile() {
-        if (!valid)
+        if (!valid) {
             return null;
+        }
 
         return pidFile;
     }
@@ -216,8 +229,9 @@
     }
 
     public final File getLocalPasswordFile() {
-        if (!valid)
+        if (!valid) {
             return null;
+        }
 
         return localPasswordFile;
     }
diff --git a/nucleus/common/common-util/src/main/java/org/glassfish/common/util/admin/GlassFishErrorServiceImpl.java b/nucleus/common/common-util/src/main/java/org/glassfish/common/util/admin/GlassFishErrorServiceImpl.java
index d2d8181..b4ef314 100644
--- a/nucleus/common/common-util/src/main/java/org/glassfish/common/util/admin/GlassFishErrorServiceImpl.java
+++ b/nucleus/common/common-util/src/main/java/org/glassfish/common/util/admin/GlassFishErrorServiceImpl.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2021 Contributors to Eclipse Foundation.
  * Copyright (c) 2012, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -18,27 +19,70 @@
 
 import jakarta.inject.Singleton;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import org.glassfish.hk2.api.ErrorInformation;
 import org.glassfish.hk2.api.ErrorService;
 import org.glassfish.hk2.api.MultiException;
 import org.jvnet.hk2.annotations.Service;
+import org.osgi.framework.BundleException;
+
+import com.sun.enterprise.util.FelixPrettyPrinter;
 
 /**
  * @author jwells
  *
  */
-@Service @Singleton
+@Service
+@Singleton
 public class GlassFishErrorServiceImpl implements ErrorService {
-    /* (non-Javadoc)
+    /*
+     * (non-Javadoc)
+     *
      * @see org.glassfish.hk2.api.ErrorService#onFailure(org.glassfish.hk2.api.ErrorInformation)
      */
     @Override
-    public void onFailure(ErrorInformation errorInformation)
-            throws MultiException {
+    public void onFailure(ErrorInformation errorInformation) throws MultiException {
         if (errorInformation.getAssociatedException() != null) {
+            MultiException multiException = errorInformation.getAssociatedException();
+
+            Set<String> bundleMessages = new HashSet<>();
+            Set<String> stateMessages = new HashSet<>();
+
+            for (Throwable throwable : multiException.getErrors()) { // throwable, error, exception, what's in a name?
+                String bundleText = findBundleExceptionText(throwable);
+                if (bundleText != null) {
+                    bundleMessages.add(bundleText);
+                }
+
+                if (throwable instanceof IllegalStateException) {
+                    stateMessages.add(throwable.getMessage());
+                }
+            }
+
+            for (String stateMessage : stateMessages) {
+                bundleMessages.remove(stateMessage);
+            }
+
+            for (String bundleMessage : bundleMessages) {
+                multiException.addError(new IllegalStateException(bundleMessage));
+            }
+
             throw errorInformation.getAssociatedException();
         }
+    }
 
+    String findBundleExceptionText(Throwable throwable) {
+        while (throwable != null) {
+            if (throwable instanceof BundleException) {
+                BundleException bundleException = (BundleException) throwable;
+                return FelixPrettyPrinter.prettyPrintExceptionMessage(bundleException.getMessage());
+            }
+            throwable = throwable.getCause();
+        }
+
+        return null;
     }
 
 }
diff --git a/nucleus/common/glassfish-api/pom.xml b/nucleus/common/glassfish-api/pom.xml
index 684d1fe..2037f1f 100644
--- a/nucleus/common/glassfish-api/pom.xml
+++ b/nucleus/common/glassfish-api/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-nucleus-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/nucleus/common/internal-api/pom.xml b/nucleus/common/internal-api/pom.xml
index f6cfa07..3fc633d 100644
--- a/nucleus/common/internal-api/pom.xml
+++ b/nucleus/common/internal-api/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.common</groupId>
         <artifactId>nucleus-common</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>internal-api</artifactId>
diff --git a/nucleus/common/mbeanserver/pom.xml b/nucleus/common/mbeanserver/pom.xml
index 3e4c3a1..b6631a8 100755
--- a/nucleus/common/mbeanserver/pom.xml
+++ b/nucleus/common/mbeanserver/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.common</groupId>
         <artifactId>nucleus-common</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>glassfish-mbeanserver</artifactId>
diff --git a/nucleus/common/pom.xml b/nucleus/common/pom.xml
index 96d8a89..ba2ed85 100755
--- a/nucleus/common/pom.xml
+++ b/nucleus/common/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-nucleus-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.main.common</groupId>
diff --git a/nucleus/common/scattered-archive-api/pom.xml b/nucleus/common/scattered-archive-api/pom.xml
index aaa676a..0332e1d 100644
--- a/nucleus/common/scattered-archive-api/pom.xml
+++ b/nucleus/common/scattered-archive-api/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-nucleus-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/nucleus/common/simple-glassfish-api/pom.xml b/nucleus/common/simple-glassfish-api/pom.xml
index 49f20bb..c7c514a 100644
--- a/nucleus/common/simple-glassfish-api/pom.xml
+++ b/nucleus/common/simple-glassfish-api/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.common</groupId>
         <artifactId>nucleus-common</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>simple-glassfish-api</artifactId>
diff --git a/nucleus/core/api-exporter/pom.xml b/nucleus/core/api-exporter/pom.xml
index 59b2cf9..5225f04 100755
--- a/nucleus/core/api-exporter/pom.xml
+++ b/nucleus/core/api-exporter/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.core</groupId>
         <artifactId>nucleus-core</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>api-exporter</artifactId>
diff --git a/nucleus/core/bootstrap/pom.xml b/nucleus/core/bootstrap/pom.xml
index f40fcc6..670fde6 100755
--- a/nucleus/core/bootstrap/pom.xml
+++ b/nucleus/core/bootstrap/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.core</groupId>
         <artifactId>nucleus-core</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>glassfish</artifactId>
diff --git a/nucleus/core/bootstrap/src/main/java/com/sun/enterprise/glassfish/bootstrap/osgi/GlassFishMainActivator.java b/nucleus/core/bootstrap/src/main/java/com/sun/enterprise/glassfish/bootstrap/osgi/GlassFishMainActivator.java
index d23fdf4..3572342 100644
--- a/nucleus/core/bootstrap/src/main/java/com/sun/enterprise/glassfish/bootstrap/osgi/GlassFishMainActivator.java
+++ b/nucleus/core/bootstrap/src/main/java/com/sun/enterprise/glassfish/bootstrap/osgi/GlassFishMainActivator.java
@@ -34,7 +34,7 @@
  * in an existing OSGi runtime. It expects install root and instance root
  * to be set via framework context properties called com.sun.aas.installRoot and com.sun.aas.instanceRoot
  * respectively. The former one refers to the directory where glassfish is installed.
- * (e.g., /tmp/glassfish6/glassfish)
+ * (e.g., /tmp/glassfish7/glassfish)
  * The latter one refers to the domain directory - this is a directory containing
  * configuration information and deployed applications, etc.
  * If instance root is not set, it defaults to $installRoot/domains/domain1/.
diff --git a/nucleus/core/context-propagation/pom.xml b/nucleus/core/context-propagation/pom.xml
index 57422dc..89cdcd6 100644
--- a/nucleus/core/context-propagation/pom.xml
+++ b/nucleus/core/context-propagation/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.core</groupId>
         <artifactId>nucleus-core</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>context-propagation</artifactId>
diff --git a/nucleus/core/extra-jre-packages/pom.xml b/nucleus/core/extra-jre-packages/pom.xml
index 3b7a25d..56dda64 100755
--- a/nucleus/core/extra-jre-packages/pom.xml
+++ b/nucleus/core/extra-jre-packages/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.core</groupId>
         <artifactId>nucleus-core</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>glassfish-extra-jre-packages</artifactId>
diff --git a/nucleus/core/kernel/osgi.bundle b/nucleus/core/kernel/osgi.bundle
index d9ab648..baa3906 100644
--- a/nucleus/core/kernel/osgi.bundle
+++ b/nucleus/core/kernel/osgi.bundle
@@ -36,5 +36,5 @@
 Import-Package: \
     com.sun.enterprise.server.logging.*; resolution:=optional, \
     org.jvnet.tiger_types;version="${project.version}", \
-    org.hibernate.validator.*;resolution:=optional;version="${hibernate-validator.version}", \
+    org.hibernate.validator.*;resolution:=optional;version="[7.0.0,8.0.0)", \
     *
diff --git a/nucleus/core/kernel/pom.xml b/nucleus/core/kernel/pom.xml
index 0103c3b..54a5248 100755
--- a/nucleus/core/kernel/pom.xml
+++ b/nucleus/core/kernel/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.core</groupId>
         <artifactId>nucleus-core</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>kernel</artifactId>
@@ -180,8 +180,8 @@
         </dependency>
         <!-- Dependency of Hibernate Validator -->
         <dependency>
-            <groupId>org.glassfish</groupId>
-            <artifactId>jakarta.el</artifactId>
+            <groupId>org.glassfish.expressly</groupId>
+            <artifactId>expressly</artifactId>
             <scope>test</scope>
         </dependency>
         <!-- Required by the cluster replication despite we don't do any - ConfigAttributeSetTest fails without it -->
diff --git a/nucleus/core/kernel/src/main/java/com/sun/enterprise/v3/admin/adapter/AdminConsoleAdapter.java b/nucleus/core/kernel/src/main/java/com/sun/enterprise/v3/admin/adapter/AdminConsoleAdapter.java
index 3d24c9e..6f43ba8 100644
--- a/nucleus/core/kernel/src/main/java/com/sun/enterprise/v3/admin/adapter/AdminConsoleAdapter.java
+++ b/nucleus/core/kernel/src/main/java/com/sun/enterprise/v3/admin/adapter/AdminConsoleAdapter.java
@@ -145,7 +145,7 @@
     }
 
     @Override
-    public final HttpHandler getHttpService() {
+    public HttpHandler getHttpService() {
         return this;
     }
 
@@ -460,7 +460,7 @@
             warFile = new File(iRoot.replace('/', File.separatorChar));
             writeAdminServiceProp(ServerTags.ADMIN_CONSOLE_DOWNLOAD_LOCATION, "${" + INSTALL_ROOT + "}/lib/install/applications/admingui.war");
         } else {
-            //For any non-absolute path, we start from the installation, ie glassfish6
+            //For any non-absolute path, we start from the installation, ie glassfish7
             //eg, v3 prelude upgrade, where the location property was "glassfish/lib..."
             String locValue = locProp.getValue();
             warFile = new File(locValue);
@@ -831,7 +831,7 @@
 //            return method;
 //        }
 //    }
-    private Method[] allowedHttpMethods = {Method.GET, Method.POST, Method.HEAD,
+    private final Method[] allowedHttpMethods = {Method.GET, Method.POST, Method.HEAD,
         Method.DELETE, Method.PUT};
 
     private boolean checkHttpMethodAllowed(Method method) {
diff --git a/nucleus/core/logging/pom.xml b/nucleus/core/logging/pom.xml
index 6e37df4..cc868a3 100755
--- a/nucleus/core/logging/pom.xml
+++ b/nucleus/core/logging/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.core</groupId>
         <artifactId>nucleus-core</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>logging</artifactId>
diff --git a/nucleus/core/logging/src/main/java/com/sun/enterprise/server/logging/ModuleToLoggerNameMapper.java b/nucleus/core/logging/src/main/java/com/sun/enterprise/server/logging/ModuleToLoggerNameMapper.java
index f403ab3..f514600 100644
--- a/nucleus/core/logging/src/main/java/com/sun/enterprise/server/logging/ModuleToLoggerNameMapper.java
+++ b/nucleus/core/logging/src/main/java/com/sun/enterprise/server/logging/ModuleToLoggerNameMapper.java
@@ -99,7 +99,8 @@
         {"synchronization",new String[] { "javax.ee.enterprise.system.tools.synchronization"} },
         {"web-container",  new String[] { LogDomains.WEB_LOGGER,
                                           "org.apache.catalina",
-                                          "org.apache.coyote","org.apache.jasper"
+                                          "org.apache.coyote",
+                                          "org.glassfish.wasp"
                                         } },
         {"group-management-service", new String[] { LogDomains.GMS_LOGGER} },
         {"node-agent",     new String[] { "javax.ee.enterprise.system.nodeagent" } },
diff --git a/nucleus/core/logging/src/test/resources/com/sun/enterprise/server/logging/parser/odl-server.log b/nucleus/core/logging/src/test/resources/com/sun/enterprise/server/logging/parser/odl-server.log
index a4a28e2..948c7a3 100644
--- a/nucleus/core/logging/src/test/resources/com/sun/enterprise/server/logging/parser/odl-server.log
+++ b/nucleus/core/logging/src/test/resources/com/sun/enterprise/server/logging/parser/odl-server.log
@@ -39,9 +39,9 @@
 	at org.apache.jsp.hello_jsp._jspService(hello_jsp.java:71)
 	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)
 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
-	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:411)
-	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:473)
-	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:377)
+	at org.glassfish.wasp.servlet.JspServletWrapper.service(JspServletWrapper.java:411)
+	at org.glassfish.wasp.servlet.JspServlet.serviceJspFile(JspServlet.java:473)
+	at org.glassfish.wasp.servlet.JspServlet.service(JspServlet.java:377)
 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
 	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1593)
 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:285)
diff --git a/nucleus/core/logging/src/test/resources/com/sun/enterprise/server/logging/parser/uniform-server.log b/nucleus/core/logging/src/test/resources/com/sun/enterprise/server/logging/parser/uniform-server.log
index 61ecb4d..1085ada 100644
--- a/nucleus/core/logging/src/test/resources/com/sun/enterprise/server/logging/parser/uniform-server.log
+++ b/nucleus/core/logging/src/test/resources/com/sun/enterprise/server/logging/parser/uniform-server.log
@@ -200,7 +200,7 @@
 
 [#|2012-10-19T15:27:48.265-0400|SEVERE|44.0|org.glassfish.admingui|_ThreadID=90;_ThreadName=admin-listener(7);_TimeMillis=1350674868265;_LevelValue=1000;|RestResponse.getResponse() gives FAILURE.  endpoint = 'http://localhost:4848/management/domain/location'; attrs = '{}'|#]
 
-[#|2012-10-19T15:27:48.629-0400|WARNING|44.0|org.glassfish.admingui|_ThreadID=95;_ThreadName=Thread-20;_TimeMillis=1350674868629;_LevelValue=900;|Cannot create update center Image for /scratch/sanshriv/software/glassfish6; Update Center functionality will not be available in Admin Console|#]
+[#|2012-10-19T15:27:48.629-0400|WARNING|44.0|org.glassfish.admingui|_ThreadID=95;_ThreadName=Thread-20;_TimeMillis=1350674868629;_LevelValue=900;|Cannot create update center Image for /scratch/sanshriv/software/glassfish7; Update Center functionality will not be available in Admin Console|#]
 
 [#|2012-10-19T15:27:55.484-0400|WARNING|44.0|javax.enterprise.resource.webcontainer.jsf.context|_ThreadID=89;_ThreadName=admin-listener(6);_TimeMillis=1350674875484;_LevelValue=900;_MessageID=jsf.externalcontext.no.mime.type.found;|JSF1091: No mime type could be found for file /common/applications/applications.jsp.  To resolve this, add a mime-type mapping to the applications web.xml.|#]
 
@@ -245,9 +245,9 @@
 	at org.apache.jsp.hello_jsp._jspService(hello_jsp.java:71)
 	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)
 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
-	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:411)
-	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:473)
-	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:377)
+	at org.glassfish.wasp.servlet.JspServletWrapper.service(JspServletWrapper.java:411)
+	at org.glassfish.wasp.servlet.JspServlet.serviceJspFile(JspServlet.java:473)
+	at org.glassfish.wasp.servlet.JspServlet.service(JspServlet.java:377)
 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
 	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1593)
 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:285)
diff --git a/nucleus/core/pom.xml b/nucleus/core/pom.xml
index d114a0d..5bc9180 100644
--- a/nucleus/core/pom.xml
+++ b/nucleus/core/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-nucleus-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.main.core</groupId>
diff --git a/nucleus/deployment/admin/pom.xml b/nucleus/deployment/admin/pom.xml
index d76bbf5..d14d2c9 100755
--- a/nucleus/deployment/admin/pom.xml
+++ b/nucleus/deployment/admin/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.deployment</groupId>
         <artifactId>nucleus-deployment</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>deployment-admin</artifactId>
diff --git a/nucleus/deployment/autodeploy/pom.xml b/nucleus/deployment/autodeploy/pom.xml
index 31fd716..c569db4 100755
--- a/nucleus/deployment/autodeploy/pom.xml
+++ b/nucleus/deployment/autodeploy/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.deployment</groupId>
         <artifactId>nucleus-deployment</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>deployment-autodeploy</artifactId>
diff --git a/nucleus/deployment/common/pom.xml b/nucleus/deployment/common/pom.xml
index 48e2d26..2591d03 100755
--- a/nucleus/deployment/common/pom.xml
+++ b/nucleus/deployment/common/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.deployment</groupId>
         <artifactId>nucleus-deployment</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>deployment-common</artifactId>
diff --git a/nucleus/deployment/dtds/pom.xml b/nucleus/deployment/dtds/pom.xml
index a03a27c..3d77255 100644
--- a/nucleus/deployment/dtds/pom.xml
+++ b/nucleus/deployment/dtds/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.deployment</groupId>
         <artifactId>nucleus-deployment</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>nucleus-dtds</artifactId>
diff --git a/nucleus/deployment/pom.xml b/nucleus/deployment/pom.xml
index cb7c810..0bfeb99 100755
--- a/nucleus/deployment/pom.xml
+++ b/nucleus/deployment/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-nucleus-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.main.deployment</groupId>
diff --git a/nucleus/deployment/schemas/pom.xml b/nucleus/deployment/schemas/pom.xml
index 7cebb92..b516e56 100644
--- a/nucleus/deployment/schemas/pom.xml
+++ b/nucleus/deployment/schemas/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.deployment</groupId>
         <artifactId>nucleus-deployment</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>nucleus-schemas</artifactId>
diff --git a/nucleus/diagnostics/context/pom.xml b/nucleus/diagnostics/context/pom.xml
index 5a225df..7b2a0e3 100644
--- a/nucleus/diagnostics/context/pom.xml
+++ b/nucleus/diagnostics/context/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.diagnostics</groupId>
         <artifactId>nucleus-diagnostics</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>diagnostics-context</artifactId>
diff --git a/nucleus/diagnostics/diagnostics-api/pom.xml b/nucleus/diagnostics/diagnostics-api/pom.xml
index 2f34742..4693ab8 100755
--- a/nucleus/diagnostics/diagnostics-api/pom.xml
+++ b/nucleus/diagnostics/diagnostics-api/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.diagnostics</groupId>
         <artifactId>nucleus-diagnostics</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>diagnostics-api</artifactId>
diff --git a/nucleus/diagnostics/pom.xml b/nucleus/diagnostics/pom.xml
index dad0e7e..21da23d 100755
--- a/nucleus/diagnostics/pom.xml
+++ b/nucleus/diagnostics/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-nucleus-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.main.diagnostics</groupId>
diff --git a/nucleus/distributions/atomic/pom.xml b/nucleus/distributions/atomic/pom.xml
index bc557be..f099dab 100644
--- a/nucleus/distributions/atomic/pom.xml
+++ b/nucleus/distributions/atomic/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.distributions</groupId>
         <artifactId>nucleus-distributions</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>atomic</artifactId>
diff --git a/nucleus/distributions/nucleus-common/pom.xml b/nucleus/distributions/nucleus-common/pom.xml
index b657374..d69b164 100644
--- a/nucleus/distributions/nucleus-common/pom.xml
+++ b/nucleus/distributions/nucleus-common/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.distributions</groupId>
         <artifactId>nucleus-distributions</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>nucleus-common</artifactId>
diff --git a/nucleus/distributions/nucleus-common/src/main/resources/bin/jspc b/nucleus/distributions/nucleus-common/src/main/resources/bin/jspc
index 374f78f..0336812 100644
--- a/nucleus/distributions/nucleus-common/src/main/resources/bin/jspc
+++ b/nucleus/distributions/nucleus-common/src/main/resources/bin/jspc
@@ -18,7 +18,7 @@
 AS_INSTALL=`dirname $0`/..
 AS_INSTALL_LIB=$AS_INSTALL/modules
 JSP_IMPL=$AS_INSTALL_LIB/wasp.jar
-EL_IMPL=$AS_INSTALL_LIB/jakarta.el.jar:$AS_INSTALL_LIB/jakarta.el-api.jar
+EL_IMPL=$AS_INSTALL_LIB/expressly:$AS_INSTALL_LIB/jakarta.el-api.jar
 JSTL_IMPL=$AS_INSTALL_LIB/jakarta.servlet.jsp.jstl.jar
 AS_LIB=$AS_INSTALL/lib
 JAVAEE_API=$AS_LIB/javaee.jar
diff --git a/nucleus/distributions/nucleus-common/src/main/resources/bin/jspc.bat b/nucleus/distributions/nucleus-common/src/main/resources/bin/jspc.bat
index 1db1b2d..1da8773 100644
--- a/nucleus/distributions/nucleus-common/src/main/resources/bin/jspc.bat
+++ b/nucleus/distributions/nucleus-common/src/main/resources/bin/jspc.bat
@@ -19,7 +19,7 @@
 
 set AS_INSTALL_LIB=%~dp0..\modules
 set JSP_IMPL=%AS_INSTALL_LIB%\wasp.jar
-set EL_IMPL=%AS_INSTALL_LIB%\jakarta.el.jar;%AS_INSTALL_LIB%\jakarta.el-api.jar
+set EL_IMPL=%AS_INSTALL_LIB%\expressly;%AS_INSTALL_LIB%\jakarta.el-api.jar
 set JSTL_IMPL=%AS_INSTALL_LIB%\jakarta.servlet.jsp.jstl.jar
 set AS_LIB=%~dp0..\lib
 set JAVAEE_API=%AS_LIB%\javaee.jar
diff --git a/nucleus/distributions/nucleus-common/src/main/resources/docs/about.html b/nucleus/distributions/nucleus-common/src/main/resources/docs/about.html
index da81f172..0de95f3 100644
--- a/nucleus/distributions/nucleus-common/src/main/resources/docs/about.html
+++ b/nucleus/distributions/nucleus-common/src/main/resources/docs/about.html
@@ -45,7 +45,7 @@
 <td align="right" valign="top"> <a href="http://www.oracle.com">oracle.com</a> </td>
 </tr>
 <tr>
-<td align="left" valign="top" bgcolor="#587993"> <font color="#ffffff"><b>GlassFish Server 5.1</b></font></td>
+<td align="left" valign="top" bgcolor="#587993"> <font color="#ffffff"><b>GlassFish Server 7</b></font></td>
 </tr>
 </tbody>
 </table> <h1>GlassFish Server - Installation Complete</h1>
diff --git a/nucleus/distributions/nucleus-common/src/main/resources/docs/copyright.html b/nucleus/distributions/nucleus-common/src/main/resources/docs/copyright.html
index 7105bf6..afad202 100644
--- a/nucleus/distributions/nucleus-common/src/main/resources/docs/copyright.html
+++ b/nucleus/distributions/nucleus-common/src/main/resources/docs/copyright.html
@@ -35,11 +35,11 @@
 	a:visited{color:#917E9C}
 	a:hover {text-decoration:underline}
 </style>
-<title>GlassFish Server 5.1</title>
+<title>GlassFish Server 7</title>
 </head>
 <body><table width="100%" border="0" cellspacing="4" cellpadding="2">
 <tbody>
-<tr><td align="left" valign="top" bgcolor="#587993"> <font color="#ffffff">&nbsp;&nbsp;<b> GlassFish Server 5.1</b></font>&nbsp; </td></tr>
+<tr><td align="left" valign="top" bgcolor="#587993"> <font color="#ffffff">&nbsp;&nbsp;<b> GlassFish Server 7</b></font>&nbsp; </td></tr>
 </tbody>
 </table><!--startindex-->
 <p>Copyright &copy; 2010, 2019 Oracle and/or its affiliates. All rights reserved.</p>
diff --git a/nucleus/distributions/nucleus-common/src/main/resources/docs/features.html b/nucleus/distributions/nucleus-common/src/main/resources/docs/features.html
index 785aacf..71c8e86 100755
--- a/nucleus/distributions/nucleus-common/src/main/resources/docs/features.html
+++ b/nucleus/distributions/nucleus-common/src/main/resources/docs/features.html
@@ -36,16 +36,16 @@
 	a:visited{color:#917E9C}
 	a:hover {text-decoration:underline}
 </style>
-<title>GlassFish Server 5.1 - Features and Resources</title>
+<title>GlassFish Server 7 - Features and Resources</title>
 </head>
 <body bgcolor="#ffffff" text="#000000" link="#594fbf" vlink="#1005fb" alink="#333366">
 <table width="100%" border="0" cellspacing="4" cellpadding="2">
 <tbody>
 <tr><td align="right" valign="top"><a href="http://www.oracle.com">oracle.com</a></td></tr>
-<tr><td align="left" valign="top" bgcolor="#587993"><font color="#ffffff"><b>GlassFish Server 5.1</b></font>&nbsp;</td></tr>
+<tr><td align="left" valign="top" bgcolor="#587993"><font color="#ffffff"><b>GlassFish Server 7</b></font>&nbsp;</td></tr>
 </tbody>
 </table>  <h1>Features and Resources </h1>
-<p>GlassFish Server 5.1 provides a server for the development and 
+<p>GlassFish Server 7 provides a server for the development and 
 deployment of Java&trade; Platform Enterprise Edition (Java EE) 
 and dynamic, scalable HTML5 applications. Key features include 
 Servlet 4.0 to support HTTP/2, support for Java SE 8 and
@@ -63,7 +63,7 @@
 Processing. Java EE 8 aligns with Java SE 8 so that developers will be 
 able to take advantage of new features such as repeating annotations, 
 lambda expressions, the Date/Time API, type annotations, Completable Futures etc.</p>
-<p>Java EE 8 and GlassFish Server 5.1 include the following new and updated Java EE standards:</p>
+<p>Java EE 8 and GlassFish Server 7 include the following new and updated Java EE standards:</p>
 <dl><dt><b>New or Significant Updates</b></dt><dd><ul>
 <li>Java API for JSON Binding (JSON-B) 1.0</li>
 <li>Java EE Security 1.0</li>
diff --git a/nucleus/distributions/nucleus-common/src/main/resources/docs/quickstart.html b/nucleus/distributions/nucleus-common/src/main/resources/docs/quickstart.html
index 0ac96ce..c4207a9 100644
--- a/nucleus/distributions/nucleus-common/src/main/resources/docs/quickstart.html
+++ b/nucleus/distributions/nucleus-common/src/main/resources/docs/quickstart.html
@@ -35,7 +35,7 @@
 	a:visited{color:#917E9C}
 	a:hover {text-decoration:underline}
 </style>
-<title>GlassFish Server 5.1 Quick Start Guide</title>
+<title>GlassFish Server 7 Quick Start Guide</title>
 </head>
 <body style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"
 link="#594fbf" vlink="#1005fb" alink="#333366"><table width="100%" border="0"
@@ -45,12 +45,12 @@
 <td align="right" valign="top"> <a href="http://www.oracle.com">oracle.com</a> </td>
 </tr>
 <tr>
-<td align="left" valign="top" bgcolor="#587993"> <font color="#ffffff"><b>GlassFish Server 5.1</b></font></td>
+<td align="left" valign="top" bgcolor="#587993"> <font color="#ffffff"><b>GlassFish Server 7</b></font></td>
 </tr>
 </tbody>
 </table><div class="maincontent">
-<a name="aboaa"></a><h1>GlassFish Server 5.1 Quick Start Guide</h1>
-<p>GlassFish Server provides a server for the development and deployment of Java Platform, Enterprise Edition (Java EE platform) applications and web technologies based on Java technology. GlassFish Server 5.1 provides the following:</p>
+<a name="aboaa"></a><h1>GlassFish Server 7 Quick Start Guide</h1>
+<p>GlassFish Server provides a server for the development and deployment of Java Platform, Enterprise Edition (Java EE platform) applications and web technologies based on Java technology. GlassFish Server 7 provides the following:</p>
 <ul>
 <li><p>A lightweight and extensible core based on OSGi Alliance standards</p></li>
 <li><p>A web container</p></li>
@@ -65,20 +65,20 @@
 <li><p><a href="#gglmh">Starting and Stopping the Database Server</a></p></li>
 <li><p><a href="#ggllq">Starting the Administration Console</a></p></li>
 <li><p><a href="#geyvr">Deploying and Undeploying Applications</a></p></li>
-<li><p><a href="#ghgqg">Removing GlassFish Server 5.1 Software</a></p></li>
+<li><p><a href="#ghgqg">Removing GlassFish Server 7 Software</a></p></li>
 <li><p><a href="#ggkzh">For More Information</a></p></li>
 </ul>
 <a id="ghgpe" name="ghgpe"></a><a id="GSQSG00030" name="GSQSG00030"></a>
 <h2>About This Quick Start Guide</h2>
 <p>This <i>Quick Start Guide</i> demonstrates key features of GlassFish Server and enables you to quickly learn the basics. Step-by-step procedures introduce you to product features and enable you to use them immediately.</p>
-<p>This guide assumes that you have already obtained and installed the GlassFish Server 5.1 software. For more information about installing GlassFish Server 5.1, see the <a href="https://javaee.github.io/glassfish/documentation"><cite>Installation Guide</cite></a>.</p>
+<p>This guide assumes that you have already obtained and installed the GlassFish Server 7 software. For more information about installing GlassFish Server 7, see the <a href="https://javaee.github.io/glassfish/documentation"><cite>Installation Guide</cite></a>.</p>
 <p>Instructions and examples in this guide that apply to all supported operating systems use the forward slash character (<code>/</code>) as path separators in all file names and commands. Ensure that you use the correct character for the system on which GlassFish Server is installed. For example:</p>
 <ul>
 <li><p><b>UNIX, Linux, or Mac OS X systems:</b> <i>as-install</i><code>/bin/asadmin</code></p></li>
 <li><p><b>Windows systems:</b> <i>as-install</i><code>\bin\asadmin</code></p></li>
 </ul>
 <p>This guide provides basic information only. For comprehensive information about GlassFish Server and other entities mentioned in this guide, see <a href="#ggkzh">For More Information</a>.</p>
-<p>To review additional details about this release before you begin using the software, see the <a href="https://javaee.github.io/glassfish/documentation"><cite>Release Notes</cite></a>. The <i>Release Notes</i> provide important information about the GlassFish Server 5.1 release, including details about new features, information about known issues and possible workarounds, and tips for installing and working with GlassFish Server 5.1 software.</p>
+<p>To review additional details about this release before you begin using the software, see the <a href="https://javaee.github.io/glassfish/documentation"><cite>Release Notes</cite></a>. The <i>Release Notes</i> provide important information about the GlassFish Server 7 release, including details about new features, information about known issues and possible workarounds, and tips for installing and working with GlassFish Server 7 software.</p>
 
 
 <a id="ghpfg" name="ghpfg"></a><a id="GSQSG00031" name="GSQSG00031"></a>
@@ -110,9 +110,9 @@
 </td>
 <td align="left" headers="r2c1-t2 r1c3-t2">
 <p>Installations on the Oracle Solaris operating system, Linux operating system, and Mac OS operating system:</p>
-<p><i>user's-home-directory</i><code>/glassfish6/glassfish</code></p>
+<p><i>user's-home-directory</i><code>/glassfish7/glassfish</code></p>
 <p>Installations on the Windows operating system:</p>
-<p><i>SystemDrive</i><code>:\glassfish6\glassfish</code></p>
+<p><i>SystemDrive</i><code>:\glassfish7\glassfish</code></p>
 </td>
 </tr>
 <tr align="left" valign="top">
@@ -124,9 +124,9 @@
 </td>
 <td align="left" headers="r3c1-t2 r1c3-t2">
 <p>Installations on the Oracle Solaris operating system, Linux operating system, and Mac operating system:</p>
-<p><i>user's-home-directory</i><code>/glassfish6</code></p>
+<p><i>user's-home-directory</i><code>/glassfish7</code></p>
 <p>Installations on the Windows operating system:</p>
-<p><i>SystemDrive</i><code>:\glassfish6</code></p>
+<p><i>SystemDrive</i><code>:\glassfish7</code></p>
 </td>
 </tr>
 <tr align="left" valign="top">
@@ -613,7 +613,7 @@
 
 <a id="ghgqg" name="ghgqg"></a><a id="GSQSG00039" name="GSQSG00039"></a>
 
-<h2>Removing GlassFish Server 5.1 Software</h2>
+<h2>Removing GlassFish Server 7 Software</h2>
 <p>Before removing the GlassFish Server software, stop the following processes:</p>
 <ul>
 <li><p>All domains and other related processes</p></li>
@@ -627,7 +627,7 @@
 <a id="ggkzh" name="ggkzh"></a><a id="GSQSG00040" name="GSQSG00040"></a>
 
 <h2>For More Information</h2>
-<p>Additional resources are available to help you learn more about GlassFish Server 5.1 and related technologies.</p>
+<p>Additional resources are available to help you learn more about GlassFish Server 7 and related technologies.</p>
 <p>The following resources are described here:</p>
 <ul>
 <li><p><a href="#ghhir">Product Documentation</a></p></li>
diff --git a/nucleus/distributions/nucleus/pom.xml b/nucleus/distributions/nucleus/pom.xml
index eb5e6e1..a491e6f 100644
--- a/nucleus/distributions/nucleus/pom.xml
+++ b/nucleus/distributions/nucleus/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.distributions</groupId>
         <artifactId>nucleus-distributions</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>nucleus-new</artifactId>
diff --git a/nucleus/distributions/pom.xml b/nucleus/distributions/pom.xml
index 089540d..256dfc1 100644
--- a/nucleus/distributions/pom.xml
+++ b/nucleus/distributions/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-nucleus-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.main.distributions</groupId>
diff --git a/nucleus/featuresets/atomic/pom.xml b/nucleus/featuresets/atomic/pom.xml
index 6421306..5529b72 100644
--- a/nucleus/featuresets/atomic/pom.xml
+++ b/nucleus/featuresets/atomic/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.featuresets</groupId>
         <artifactId>nucleus-featuresets</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>atomic</artifactId>
@@ -380,8 +380,8 @@
             </exclusions>
         </dependency>
         <dependency>
-            <groupId>org.glassfish</groupId>
-            <artifactId>jakarta.el</artifactId>
+            <groupId>org.glassfish.expressly</groupId>
+            <artifactId>expressly</artifactId>
             <exclusions>
                 <exclusion>
                     <groupId>*</groupId>
@@ -819,8 +819,18 @@
             </exclusions>
         </dependency>
         <dependency>
-            <groupId>com.sun.activation</groupId>
-            <artifactId>jakarta.activation</artifactId>
+            <groupId>jakarta.activation</groupId>
+            <artifactId>jakarta.activation-api</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.angus</groupId>
+            <artifactId>angus-activation</artifactId>
             <exclusions>
                 <exclusion>
                     <groupId>*</groupId>
diff --git a/nucleus/featuresets/nucleus/pom.xml b/nucleus/featuresets/nucleus/pom.xml
index 635eb46..afb33ff 100644
--- a/nucleus/featuresets/nucleus/pom.xml
+++ b/nucleus/featuresets/nucleus/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.featuresets</groupId>
         <artifactId>nucleus-featuresets</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>nucleus</artifactId>
diff --git a/nucleus/featuresets/pom.xml b/nucleus/featuresets/pom.xml
index 40f74f7..44c9279 100644
--- a/nucleus/featuresets/pom.xml
+++ b/nucleus/featuresets/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-nucleus-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.main.featuresets</groupId>
diff --git a/nucleus/flashlight/agent/pom.xml b/nucleus/flashlight/agent/pom.xml
index 524e2aa..e66910b 100755
--- a/nucleus/flashlight/agent/pom.xml
+++ b/nucleus/flashlight/agent/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.common</groupId>
         <artifactId>nucleus-common</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../../common/pom.xml</relativePath>
     </parent>
 
diff --git a/nucleus/flashlight/flashlight-extra-jdk-packages/pom.xml b/nucleus/flashlight/flashlight-extra-jdk-packages/pom.xml
index 8147157..9afb2f6 100755
--- a/nucleus/flashlight/flashlight-extra-jdk-packages/pom.xml
+++ b/nucleus/flashlight/flashlight-extra-jdk-packages/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.common</groupId>
         <artifactId>nucleus-common</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../../common/pom.xml</relativePath>
     </parent>
 
diff --git a/nucleus/flashlight/framework/pom.xml b/nucleus/flashlight/framework/pom.xml
index cf4e69c..05c65c8 100755
--- a/nucleus/flashlight/framework/pom.xml
+++ b/nucleus/flashlight/framework/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.common</groupId>
         <artifactId>nucleus-common</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../../common/pom.xml</relativePath>
     </parent>
 
diff --git a/nucleus/flashlight/pom.xml b/nucleus/flashlight/pom.xml
index 673b2f4..9149af6 100755
--- a/nucleus/flashlight/pom.xml
+++ b/nucleus/flashlight/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-nucleus-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.main.flashlight</groupId>
diff --git a/nucleus/grizzly/config/pom.xml b/nucleus/grizzly/config/pom.xml
index 9787b07..465db2e 100644
--- a/nucleus/grizzly/config/pom.xml
+++ b/nucleus/grizzly/config/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.grizzly</groupId>
         <artifactId>nucleus-grizzly</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>grizzly-config</artifactId>
diff --git a/nucleus/grizzly/nucleus-grizzly-all/pom.xml b/nucleus/grizzly/nucleus-grizzly-all/pom.xml
index 0afcde3..9185ce8 100644
--- a/nucleus/grizzly/nucleus-grizzly-all/pom.xml
+++ b/nucleus/grizzly/nucleus-grizzly-all/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.grizzly</groupId>
         <artifactId>nucleus-grizzly</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>nucleus-grizzly-all</artifactId>
diff --git a/nucleus/grizzly/pom.xml b/nucleus/grizzly/pom.xml
index 12a7267..ec585e9 100644
--- a/nucleus/grizzly/pom.xml
+++ b/nucleus/grizzly/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-nucleus-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.main.grizzly</groupId>
diff --git a/nucleus/hk2/config-generator/pom.xml b/nucleus/hk2/config-generator/pom.xml
index 6e4870c..46b8bfe 100644
--- a/nucleus/hk2/config-generator/pom.xml
+++ b/nucleus/hk2/config-generator/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.hk2</groupId>
         <artifactId>glassfish-nucleus-hk2</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
     <artifactId>config-generator</artifactId>
     <packaging>maven-plugin</packaging>
diff --git a/nucleus/hk2/config-types/pom.xml b/nucleus/hk2/config-types/pom.xml
index 8bba78f..caeaaba 100644
--- a/nucleus/hk2/config-types/pom.xml
+++ b/nucleus/hk2/config-types/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.hk2</groupId>
         <artifactId>glassfish-nucleus-hk2</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>config-types</artifactId>
diff --git a/nucleus/hk2/hk2-config/pom.xml b/nucleus/hk2/hk2-config/pom.xml
index 4873631..25062c6 100644
--- a/nucleus/hk2/hk2-config/pom.xml
+++ b/nucleus/hk2/hk2-config/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.hk2</groupId>
         <artifactId>glassfish-nucleus-hk2</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>hk2-config</artifactId>
@@ -54,8 +54,8 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.glassfish</groupId>
-            <artifactId>jakarta.el</artifactId>
+            <groupId>org.glassfish.expressly</groupId>
+            <artifactId>expressly</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -117,8 +117,8 @@
                 <configuration>
                     <instructions>
                         <Import-Package>
-                            jakarta.validation.*;resolution:=optional;version="${jakarta.validation.version}",
-                            org.hibernate.validator.*;resolution:=optional;version="${hibernate-validator.version}",
+                            jakarta.validation.*;resolution:=optional;version="${jakarta.validation-api.version}",
+                            org.hibernate.validator.*;resolution:=optional;version="[7.0.0,8.0.0)",
                             org.jvnet.tiger_types;version=${project.version},
                             *
                         </Import-Package>
diff --git a/nucleus/hk2/pom.xml b/nucleus/hk2/pom.xml
index 9d7f139..3e534a6 100755
--- a/nucleus/hk2/pom.xml
+++ b/nucleus/hk2/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>nucleus-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../parent/pom.xml</relativePath>
     </parent>
 
diff --git a/nucleus/hk2/tiger-types/pom.xml b/nucleus/hk2/tiger-types/pom.xml
index 2870f51..96c989a 100644
--- a/nucleus/hk2/tiger-types/pom.xml
+++ b/nucleus/hk2/tiger-types/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.hk2</groupId>
         <artifactId>glassfish-nucleus-hk2</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>tiger-types</artifactId>
diff --git a/nucleus/osgi-platforms/felix/pom.xml b/nucleus/osgi-platforms/felix/pom.xml
index 57c5235..f7147a2 100644
--- a/nucleus/osgi-platforms/felix/pom.xml
+++ b/nucleus/osgi-platforms/felix/pom.xml
@@ -22,7 +22,7 @@
     <parent>
       <groupId>org.glassfish.main.osgi-platforms</groupId>
       <artifactId>osgi-platforms</artifactId>
-      <version>6.2.6-SNAPSHOT</version>
+      <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>felix</artifactId>
diff --git a/nucleus/osgi-platforms/osgi-cli-interactive/pom.xml b/nucleus/osgi-platforms/osgi-cli-interactive/pom.xml
index 248f924..92468bc 100644
--- a/nucleus/osgi-platforms/osgi-cli-interactive/pom.xml
+++ b/nucleus/osgi-platforms/osgi-cli-interactive/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.osgi-platforms</groupId>
         <artifactId>osgi-platforms</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>osgi-cli-interactive</artifactId>
diff --git a/nucleus/osgi-platforms/osgi-cli-remote/pom.xml b/nucleus/osgi-platforms/osgi-cli-remote/pom.xml
index 5aae878..ce53c33 100644
--- a/nucleus/osgi-platforms/osgi-cli-remote/pom.xml
+++ b/nucleus/osgi-platforms/osgi-cli-remote/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.osgi-platforms</groupId>
         <artifactId>osgi-platforms</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>osgi-cli-remote</artifactId>
diff --git a/nucleus/osgi-platforms/osgi-container/pom.xml b/nucleus/osgi-platforms/osgi-container/pom.xml
index 7e78bd8..2fa9a21 100755
--- a/nucleus/osgi-platforms/osgi-container/pom.xml
+++ b/nucleus/osgi-platforms/osgi-container/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.osgi-platforms</groupId>
         <artifactId>osgi-platforms</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>osgi-container</artifactId>
diff --git a/nucleus/osgi-platforms/pom.xml b/nucleus/osgi-platforms/pom.xml
index 97b9902..4d0deb0 100644
--- a/nucleus/osgi-platforms/pom.xml
+++ b/nucleus/osgi-platforms/pom.xml
@@ -28,7 +28,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-nucleus-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/nucleus/parent/pom.xml b/nucleus/parent/pom.xml
index 707c4ac..c2fafee 100644
--- a/nucleus/parent/pom.xml
+++ b/nucleus/parent/pom.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-    Copyright (c) 2021 Contributors to the Eclipse Foundation
+    Copyright (c) 2021, 2022 Contributors to the Eclipse Foundation
     Copyright (c) 2017, 2021 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
@@ -30,7 +30,7 @@
 
     <groupId>org.glassfish.main</groupId>
     <artifactId>nucleus-parent</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>GlassFish Nucleus Parent Project</name>
@@ -70,6 +70,100 @@
     </issueManagement>
 
     <properties>
+        <!-- Jakarta API Versions -->
+
+        <!-- Jakarta Expression Language -->
+        <jakarta.el-api.version>5.0.0</jakarta.el-api.version>
+        <expressly.version>5.0.0-M1</expressly.version>
+
+        <!-- Jakarta Servlet -->
+        <jakarta.servlet-api.version>6.0.0</jakarta.servlet-api.version>
+
+        <!-- Jakarta Validation -->
+        <jakarta.validation-api.version>3.0.1</jakarta.validation-api.version>
+        <hibernate-validator.version>7.0.3-SNAPSHOT</hibernate-validator.version>
+
+        <!-- Jakarta Web Services -->
+        <!-- 
+        Jakarta XML Web Services 
+        <jakarta.xml.ws-api.version>4.0.0-RC2</jakarta.xml.ws-api.version>
+        
+        Jakarta SOAP (with Attachments) 
+        <jakarta.xml.soap-api.version>3.0.0-RC2</jakarta.xml.soap-api.version>
+         -->
+        <webservices.version>4.0.0-M3</webservices.version>
+
+        <!-- Jakarta Inject -->
+        <jakarta.inject-api.version>2.0.1.MR</jakarta.inject-api.version>
+        <hk2.version>3.0.2</hk2.version>
+        <hk2.plugin.version>3.0.2</hk2.plugin.version>
+        <hk2.config-generator.version>2.5.0-b53</hk2.config-generator.version>
+
+        <!-- Jakarta XML Binding -->
+        <jakarta.xml.bind-api.version>4.0.0</jakarta.xml.bind-api.version>
+        <jakarta.jaxb-impl.version>4.0.0-M3</jakarta.jaxb-impl.version>
+
+        <!-- Jakarta REST -->
+        <jakarta.rest-api.version>3.1.0</jakarta.rest-api.version>
+        <jersey.version>3.1.0-M2</jersey.version>
+
+        <!-- Jakarta Mail -->
+        <jakarta.mail-api.version>2.1.0</jakarta.mail-api.version>
+        <angus.mail.version>1.0.0</angus.mail.version>
+
+        <!-- Jakarta Activation -->
+        <activation.version>2.1.0</activation.version>
+        <angus.activation.version>1.0.0</angus.activation.version>
+
+        <!-- Jakarta Annotations -->
+        <jakarta.annotation-api.version>2.1.0</jakarta.annotation-api.version>
+
+
+        <!-- GlassFish Components -->
+        
+        <glassfish-corba.version>4.2.4</glassfish-corba.version>
+        <grizzly.version>3.0.1</grizzly.version>
+        <grizzly.npn.version>2.0.0</grizzly.npn.version>
+        <glassfish-management-api.version>3.2.3</glassfish-management-api.version>
+        <pfl.version>4.1.2</pfl.version>
+        <gmbal.version>4.0.3</gmbal.version>
+        <shoal.version>2.0.0</shoal.version>
+        <ha-api.version>3.1.13</ha-api.version>
+        <logging-annotation-processor.version>1.9</logging-annotation-processor.version>
+        <command-security-plugin.version>1.0.14</command-security-plugin.version>
+        <command.security.maven.plugin.isFailureFatal>false</command.security.maven.plugin.isFailureFatal>
+
+
+        <!-- 3rd party dependencies -->
+        
+        <jboss.logging.annotation.version>2.2.1.Final</jboss.logging.annotation.version>
+        <jboss.logging.version>3.4.3.Final</jboss.logging.version>
+        <javassist.version>3.28.0-GA</javassist.version>
+        <asm.version>9.2</asm.version>
+        <jsch.version>0.1.56</jsch.version>
+        <antlr.version>2.7.8</antlr.version>
+        <ant.version>1.10.2</ant.version>
+        <jackson.version>2.13.1</jackson.version>
+        <fasterxml.classmate.version>1.5.1</fasterxml.classmate.version>
+        <stax-api.version>1.0-2</stax-api.version>
+        <jettison.version>1.4.1</jettison.version>
+        <mimepull.version>1.9.15</mimepull.version>
+
+        <commons-io.version>2.11.0</commons-io.version>
+        <replacer.plugin.version>1.5.3</replacer.plugin.version>
+
+        <easymock.version>4.3</easymock.version>
+        <jmockit.version>1.49</jmockit.version>
+        <junit.version>5.8.2</junit.version>
+        <jmh.version>1.34</jmh.version>
+        <osgi-resource-locator.version>1.0.3</osgi-resource-locator.version>
+        
+        <javaee.version.old>8</javaee.version.old>
+        <javaee.version.new>9</javaee.version.new>
+        
+        
+        <!-- Settings -->
+        
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.build.commonResourcesDirectory>${project.build.directory}/common-resources</project.build.commonResourcesDirectory>
         <legal.doc.source>${project.build.commonResourcesDirectory}/legal</legal.doc.source>
@@ -79,89 +173,9 @@
         <findbugs.exclude />
         <findbugs.version>3.0.5</findbugs.version>
         <findbugs.glassfish.logging.validLoggerPrefixes>jakarta.enterprise</findbugs.glassfish.logging.validLoggerPrefixes>
-
-        <!-- Jakarta API Versions -->
-
-        <!-- Jakarta EL -->
-        <jakarta.el-api.version>4.0.0</jakarta.el-api.version>
-        <jakarta.el.version>4.0.2</jakarta.el.version>
-
-        <!-- Jakarta Servlet -->
-        <servlet-api.version>5.0.0</servlet-api.version>
-
-        <!-- Jakarta Validation -->
-        <jakarta.validation.version>3.0.0</jakarta.validation.version>
-        <hibernate-validator.version>7.0.2.Final</hibernate-validator.version>
-
-        <!-- Jakarta Web Services -->
-        <webservices.version>3.0.3</webservices.version>
-
-        <!-- Jakarta Inject -->
-        <jakarta.inject-api.version>2.0.0</jakarta.inject-api.version>
-
-        <!-- Jakarta XML Binding -->
-        <jakarta.jaxb-api.version>3.0.1</jakarta.jaxb-api.version>
-        <jakarta.jaxb-impl.version>3.0.2</jakarta.jaxb-impl.version>
-
-        <!-- Jakarta REST -->
-        <jax-rs-api.spec.version>3.0</jax-rs-api.spec.version>
-        <jax-rs-api.impl.version>3.0.0</jax-rs-api.impl.version>
-        <jersey.version>3.0.3</jersey.version>
-
-        <!-- Jakarta Mail -->
-        <mail.version>2.0.1</mail.version>
-
-        <!-- Jakarta Activation -->
-        <activation.version>2.0.1</activation.version>
-
-        <!-- Jakarta Annotations -->
-        <jakarta.annotation-api.version>2.0.0</jakarta.annotation-api.version>
-
-        <!-- GlassFish Components -->
-        <glassfish-corba.version>4.2.4</glassfish-corba.version>
-        <grizzly.version>3.0.1</grizzly.version>
-        <grizzly.npn.version>2.0.0</grizzly.npn.version>
-        <glassfish-management-api.version>3.2.3</glassfish-management-api.version>
-        <hk2.version>3.0.2</hk2.version>
-        <hk2.plugin.version>3.0.2</hk2.plugin.version>
-        <hk2.config-generator.version>2.5.0-b53</hk2.config-generator.version>
-        <pfl.version>4.1.2</pfl.version>
-
-        <gmbal.version>4.0.3</gmbal.version>
-        <shoal.version>2.0.0</shoal.version>
-        <ha-api.version>3.1.13</ha-api.version>
-        <logging-annotation-processor.version>1.9</logging-annotation-processor.version>
-        <command-security-plugin.version>1.0.14</command-security-plugin.version>
-        <command.security.maven.plugin.isFailureFatal>false</command.security.maven.plugin.isFailureFatal>
-
-        <!-- 3rd party dependencies -->
-        <stax-api.version>1.0-2</stax-api.version>
-        <jboss.logging.annotation.version>2.2.1.Final</jboss.logging.annotation.version>
-        <jboss.logging.version>3.4.3.Final</jboss.logging.version>
-        <javassist.version>3.28.0-GA</javassist.version>
-        <fasterxml.classmate.version>1.5.1</fasterxml.classmate.version>
-        <jsch.version>0.1.56</jsch.version>
-        <antlr.version>2.7.8</antlr.version>
-        <ant.version>1.10.2</ant.version>
-        <jackson.version>2.13.1</jackson.version>
-        <jettison.version>1.4.1</jettison.version>
-        <mimepull.version>1.9.14</mimepull.version>
-        <asm.version>9.2</asm.version>
-
-        <commons-io.version>2.11.0</commons-io.version>
-
         <nucleus.install.dir.name>nucleus</nucleus.install.dir.name>
         <javadoc.skip>false</javadoc.skip>
         <deploy.skip>false</deploy.skip>
-        <replacer.plugin.version>1.5.3</replacer.plugin.version>
-        <javaee.version.old>8</javaee.version.old>
-        <javaee.version.new>9</javaee.version.new>
-
-        <easymock.version>4.3</easymock.version>
-        <jmockit.version>1.49</jmockit.version>
-        <junit.version>5.8.2</junit.version>
-        <jmh.version>1.34</jmh.version>
-        <osgi-resource-locator.version>1.0.3</osgi-resource-locator.version>
 
         <maven.test.jvmoptions.add-opens>--add-opens java.base/java.lang=ALL-UNNAMED --add-opens=java.naming/javax.naming.spi=ALL-UNNAMED</maven.test.jvmoptions.add-opens>
         <maven.test.jvmoptions.memory.sizes>-Xss512k -Xms256m -Xmx1g -XX:MaxDirectMemorySize=512m</maven.test.jvmoptions.memory.sizes>
@@ -183,6 +197,52 @@
 
     <dependencyManagement>
         <dependencies>
+            <!-- Jakarta API dependencies -->
+
+            <!-- Jakarta Expression Language -->
+            <dependency>
+                <groupId>jakarta.el</groupId>
+                <artifactId>jakarta.el-api</artifactId>
+                <version>${jakarta.el-api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.glassfish.expressly</groupId>
+                <artifactId>expressly</artifactId>
+                <version>${expressly.version}</version>
+            </dependency>
+            
+            <!-- Jakarta Servlet -->
+            <dependency>
+                <groupId>jakarta.servlet</groupId>
+                <artifactId>jakarta.servlet-api</artifactId>
+                <version>${jakarta.servlet-api.version}</version>
+            </dependency>
+            
+            <!-- Jakarta Validation -->
+            <dependency>
+                <groupId>jakarta.validation</groupId>
+                <artifactId>jakarta.validation-api</artifactId>
+                <version>${jakarta.validation-api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.hibernate.validator</groupId>
+                <artifactId>hibernate-validator</artifactId>
+                <version>${hibernate-validator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.hibernate.validator</groupId>
+                <artifactId>hibernate-validator-cdi</artifactId>
+                <version>${hibernate-validator.version}</version>
+            </dependency>
+            
+            <!-- Jakarta Web Services -->
+            <dependency>
+                <groupId>org.glassfish.metro</groupId>
+                <artifactId>webservices-extra-jdk-packages</artifactId>
+                <version>${webservices.version}</version>
+            </dependency>
+            
+            <!-- Jakarta Inject -->
             <dependency>
                 <groupId>jakarta.inject</groupId>
                 <artifactId>jakarta.inject-api</artifactId>
@@ -196,41 +256,34 @@
                 <scope>import</scope>
             </dependency>
             <dependency>
-                <groupId>org.glassfish.metro</groupId>
-                <artifactId>webservices-extra-jdk-packages</artifactId>
-                <version>${webservices.version}</version>
+                <groupId>org.glassfish.hk2</groupId>
+                <artifactId>osgi-resource-locator</artifactId>
+                <version>${osgi-resource-locator.version}</version>
+            </dependency>
+            
+            <!-- Jakarta XML Binding -->
+            <dependency>
+                <groupId>jakarta.xml.bind</groupId>
+                <artifactId>jakarta.xml.bind-api</artifactId>
+                <version>${jakarta.xml.bind-api.version}</version>
+                <exclusions>
+                    <exclusion>
+                        <groupId>*</groupId>
+                        <artifactId>*</artifactId>
+                    </exclusion>
+                </exclusions>
             </dependency>
             <dependency>
-                <groupId>org.hibernate.validator</groupId>
-                <artifactId>hibernate-validator</artifactId>
-                <version>${hibernate-validator.version}</version>
+                <groupId>com.sun.xml.bind</groupId>
+                <artifactId>jaxb-osgi</artifactId>
+                <version>${jakarta.jaxb-impl.version}</version>
             </dependency>
+            
+            <!-- Jakarta REST -->
             <dependency>
-                <groupId>org.hibernate.validator</groupId>
-                <artifactId>hibernate-validator-cdi</artifactId>
-                <version>${hibernate-validator.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.jboss.logging</groupId>
-                <artifactId>jboss-logging</artifactId>
-                <version>${jboss.logging.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.jboss.logging</groupId>
-                <artifactId>jboss-logging-annotations</artifactId>
-                <version>${jboss.logging.annotation.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>com.fasterxml</groupId>
-                <artifactId>classmate</artifactId>
-                <version>${fasterxml.classmate.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.glassfish.grizzly</groupId>
-                <artifactId>grizzly-bom</artifactId>
-                <version>${grizzly.version}</version>
-                <type>pom</type>
-                <scope>import</scope>
+                <groupId>jakarta.ws.rs</groupId>
+                <artifactId>jakarta.ws.rs-api</artifactId>
+                <version>${jakarta.rest-api.version}</version>
             </dependency>
             <dependency>
                 <groupId>org.glassfish.jersey</groupId>
@@ -239,31 +292,146 @@
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
+            
+            <!-- Jakarta Mail -->
             <dependency>
-                <groupId>org.glassfish.hk2</groupId>
-                <artifactId>osgi-resource-locator</artifactId>
-                <version>${osgi-resource-locator.version}</version>
+                <groupId>jakarta.mail</groupId>
+                <artifactId>jakarta.mail-api</artifactId>
+                <version>${jakarta.mail-api.version}</version>
             </dependency>
             <dependency>
-                <groupId>javax.xml.stream</groupId>
-                <artifactId>stax-api</artifactId>
-                <version>${stax-api.version}</version>
+                <groupId>org.eclipse.angus</groupId>
+                <artifactId>angus-mail</artifactId>
+                <version>${angus.mail.version}</version>
+            </dependency>
+            
+            <!-- Jakarta Activation -->
+            <dependency>
+                <groupId>jakarta.activation</groupId>
+                <artifactId>jakarta.activation-api</artifactId>
+                <version>${activation.version}</version>
             </dependency>
             <dependency>
-                <groupId>antlr</groupId>
-                <artifactId>antlr</artifactId>
-                <version>2.7.7</version>
+                <groupId>org.eclipse.angus</groupId>
+                <artifactId>angus-activation</artifactId>
+                <version>${angus.activation.version}</version>
             </dependency>
+            
+            <!-- Jakarta Annotation -->
+            <dependency>
+                <groupId>jakarta.annotation</groupId>
+                <artifactId>jakarta.annotation-api</artifactId>
+                <version>${jakarta.annotation-api.version}</version>
+            </dependency>
+            
+            
+            <!-- GlassFish Components -->
+            
+            <!-- GlassFish Corba -->
+            <dependency>
+                <groupId>org.glassfish.corba</groupId>
+                <artifactId>glassfish-corba-orb</artifactId>
+                <version>${glassfish-corba.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.glassfish.corba</groupId>
+                <artifactId>glassfish-corba-omgapi</artifactId>
+                <version>${glassfish-corba.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.glassfish.corba</groupId>
+                <artifactId>glassfish-corba-csiv2-idl</artifactId>
+                <version>${glassfish-corba.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.glassfish.corba</groupId>
+                <artifactId>glassfish-corba-internal-api</artifactId>
+                <version>${glassfish-corba.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.glassfish.corba</groupId>
+                <artifactId>rmic</artifactId>
+                <version>${glassfish-corba.version}</version>
+            </dependency>
+            
+            <!-- GlassFish Grizzly -->
+            <dependency>
+                <groupId>org.glassfish.grizzly</groupId>
+                <artifactId>grizzly-bom</artifactId>
+                <version>${grizzly.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            
+            <!-- GlassFish Management API -->
             <dependency>
                 <groupId>org.glassfish.external</groupId>
                 <artifactId>management-api</artifactId>
                 <version>${glassfish-management-api.version}</version>
             </dependency>
+            
+            <!-- GlassFish Primitive Function Library -->
+            <dependency>
+                <groupId>org.glassfish.pfl</groupId>
+                <artifactId>pfl-basic</artifactId>
+                <version>${pfl.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.glassfish.pfl</groupId>
+                <artifactId>pfl-dynamic</artifactId>
+                <version>${pfl.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.glassfish.pfl</groupId>
+                <artifactId>pfl-basic-tools</artifactId>
+                <version>${pfl.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.glassfish.pfl</groupId>
+                <artifactId>pfl-tf</artifactId>
+                <version>${pfl.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.glassfish.pfl</groupId>
+                <artifactId>pfl-tf-tools</artifactId>
+                <version>${pfl.version}</version>
+            </dependency>
+            
+            <!-- Glassfish MBean Annotation Library -->
             <dependency>
                 <groupId>org.glassfish.gmbal</groupId>
                 <artifactId>gmbal</artifactId>
                 <version>${gmbal.version}</version>
             </dependency>
+            
+            <!-- GlassFish Shoal -->
+            <dependency>
+                <groupId>org.glassfish.shoal</groupId>
+                <artifactId>shoal-gms-api</artifactId>
+                <version>${shoal.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.glassfish.shoal</groupId>
+                <artifactId>shoal-gms-impl</artifactId>
+                <version>${shoal.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.glassfish.shoal</groupId>
+                <artifactId>shoal-cache</artifactId>
+                <version>${shoal.version}</version>
+            </dependency>
+            
+            <!-- GlassFish High Availability -->
+            <dependency>
+                <groupId>org.glassfish.ha</groupId>
+                <artifactId>ha-api</artifactId>
+                <version>${ha-api.version}</version>
+            </dependency>
+            
+            
+            
+            <!-- OSGi / Felix -->
+            
             <dependency>
                 <groupId>org.osgi</groupId>
                 <artifactId>osgi.cmpn</artifactId>
@@ -296,54 +464,134 @@
             <dependency>
                 <groupId>org.apache.felix</groupId>
                 <artifactId>org.apache.felix.webconsole</artifactId>
-                <version>4.6.2</version>
+                <version>4.7.0</version>
+            </dependency>
+            <dependency>
+                <groupId>org.osgi</groupId>
+                <artifactId>org.osgi.util.promise</artifactId>
+                <version>1.1.1</version>
+            </dependency>
+            <dependency>
+                <groupId>org.osgi</groupId>
+                <artifactId>org.osgi.util.function</artifactId>
+                <version>1.1.0</version>
             </dependency>
             <dependency>
                 <groupId>org.apache.felix</groupId>
                 <artifactId>org.apache.felix.eventadmin</artifactId>
                 <version>1.6.2</version>
             </dependency>
-
             <dependency>
-                <groupId>jakarta.servlet</groupId>
-                <artifactId>jakarta.servlet-api</artifactId>
-                <version>${servlet-api.version}</version>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>org.apache.felix.shell</artifactId>
+                <version>1.4.3</version>
             </dependency>
             <dependency>
-                <groupId>jakarta.el</groupId>
-                <artifactId>jakarta.el-api</artifactId>
-                <version>${jakarta.el-api.version}</version>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>org.apache.felix.gogo.runtime</artifactId>
+                <version>1.1.4</version>
             </dependency>
             <dependency>
-                <groupId>jakarta.ws.rs</groupId>
-                <artifactId>jakarta.ws.rs-api</artifactId>
-                <version>${jax-rs-api.impl.version}</version>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>org.apache.felix.gogo.shell</artifactId>
+                <version>1.1.4</version>
             </dependency>
             <dependency>
-                <groupId>jakarta.xml.bind</groupId>
-                <artifactId>jakarta.xml.bind-api</artifactId>
-                <version>${jakarta.jaxb-api.version}</version>
-                <exclusions>
-                    <exclusion>
-                        <groupId>*</groupId>
-                        <artifactId>*</artifactId>
-                    </exclusion>
-                </exclusions>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>org.apache.felix.gogo.command</artifactId>
+                <version>1.1.2</version>
             </dependency>
             <dependency>
-                <groupId>com.sun.xml.bind</groupId>
-                <artifactId>jaxb-osgi</artifactId>
-                <version>${jakarta.jaxb-impl.version}</version>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>org.apache.felix.fileinstall</artifactId>
+                <version>3.7.2</version>
             </dependency>
             <dependency>
-                <groupId>jakarta.annotation</groupId>
-                <artifactId>jakarta.annotation-api</artifactId>
-                <version>${jakarta.annotation-api.version}</version>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>org.apache.felix.configadmin</artifactId>
+                <version>1.9.22</version>
+            </dependency>
+            <!-- Felix SCR used to include/embed promise, but after 2.0.12 stopped doing that. Since Felix Core doesn't export
+                these packages, we have to deploy them together with Felix SCR. -->
+            <dependency>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>org.apache.felix.scr</artifactId>
+                <version>2.2.0-RC1</version>
             </dependency>
             <dependency>
-                <groupId>org.glassfish</groupId>
-                <artifactId>jakarta.el</artifactId>
-                <version>${jakarta.el.version}</version>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>org.apache.felix.bundlerepository</artifactId>
+                <version>2.0.10</version>
+            </dependency>
+            <!-- This is currently used by osgi-shell cmd, but can be used for others as well -->
+            <dependency>
+                <groupId>jline</groupId>
+                <artifactId>jline</artifactId>
+                <version>2.14.5</version>
+            </dependency>
+            
+            
+            
+            <!--3rd party dependencies -->
+           
+            <dependency>
+                <groupId>org.jboss.logging</groupId>
+                <artifactId>jboss-logging</artifactId>
+                <version>${jboss.logging.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jboss.logging</groupId>
+                <artifactId>jboss-logging-annotations</artifactId>
+                <version>${jboss.logging.annotation.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.javassist</groupId>
+                <artifactId>javassist</artifactId>
+                <version>${javassist.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.ow2.asm</groupId>
+                <artifactId>asm</artifactId>
+                <version>${asm.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.ow2.asm</groupId>
+                <artifactId>asm-analysis</artifactId>
+                <version>${asm.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.ow2.asm</groupId>
+                <artifactId>asm-commons</artifactId>
+                <version>${asm.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.ow2.asm</groupId>
+                <artifactId>asm-tree</artifactId>
+                <version>${asm.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.ow2.asm</groupId>
+                <artifactId>asm-util</artifactId>
+                <version>${asm.version}</version>
+            </dependency>
+            
+            <dependency>
+                <groupId>javax.xml.stream</groupId>
+                <artifactId>stax-api</artifactId>
+                <version>${stax-api.version}</version>
+            </dependency>
+            <!-- Jettison is a Java library for converting XML to JSON -->
+            <dependency>
+                <groupId>org.codehaus.jettison</groupId>
+                <artifactId>jettison</artifactId>
+                <version>${jettison.version}</version>
+            </dependency>
+            
+            <!-- Jackson - "the Java JSON library" -->
+            <dependency>
+                <groupId>com.fasterxml</groupId>
+                <artifactId>classmate</artifactId>
+                <version>${fasterxml.classmate.version}</version>
             </dependency>
             <dependency>
                 <groupId>com.fasterxml.jackson.core</groupId>
@@ -371,82 +619,17 @@
                     </exclusion>
                 </exclusions>
             </dependency>
+            
             <dependency>
-                <groupId>org.codehaus.jettison</groupId>
-                <artifactId>jettison</artifactId>
-                <version>${jettison.version}</version>
+                <groupId>antlr</groupId>
+                <artifactId>antlr</artifactId>
+                <version>2.7.7</version>
             </dependency>
-
             <dependency>
                 <groupId>org.jvnet.mimepull</groupId>
                 <artifactId>mimepull</artifactId>
                 <version>${mimepull.version}</version>
             </dependency>
-            <dependency>
-                <groupId>org.glassfish.corba</groupId>
-                <artifactId>glassfish-corba-orb</artifactId>
-                <version>${glassfish-corba.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.glassfish.corba</groupId>
-                <artifactId>glassfish-corba-omgapi</artifactId>
-                <version>${glassfish-corba.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.glassfish.corba</groupId>
-                <artifactId>glassfish-corba-csiv2-idl</artifactId>
-                <version>${glassfish-corba.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.glassfish.corba</groupId>
-                <artifactId>glassfish-corba-internal-api</artifactId>
-                <version>${glassfish-corba.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.glassfish.corba</groupId>
-                <artifactId>rmic</artifactId>
-                <version>${glassfish-corba.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>jakarta.mail</groupId>
-                <artifactId>jakarta.mail-api</artifactId>
-                <version>${mail.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>com.sun.mail</groupId>
-                <artifactId>jakarta.mail</artifactId>
-                <version>${mail.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>com.sun.activation</groupId>
-                <artifactId>jakarta.activation</artifactId>
-                <version>${activation.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.glassfish.pfl</groupId>
-                <artifactId>pfl-basic</artifactId>
-                <version>${pfl.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.glassfish.pfl</groupId>
-                <artifactId>pfl-dynamic</artifactId>
-                <version>${pfl.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.glassfish.pfl</groupId>
-                <artifactId>pfl-basic-tools</artifactId>
-                <version>${pfl.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.glassfish.pfl</groupId>
-                <artifactId>pfl-tf</artifactId>
-                <version>${pfl.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.glassfish.pfl</groupId>
-                <artifactId>pfl-tf-tools</artifactId>
-                <version>${pfl.version}</version>
-            </dependency>
 
             <dependency>
                 <groupId>org.junit.jupiter</groupId>
@@ -512,26 +695,6 @@
                 <version>${jsch.version}</version>
             </dependency>
             <dependency>
-                <groupId>org.glassfish.shoal</groupId>
-                <artifactId>shoal-gms-api</artifactId>
-                <version>${shoal.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.glassfish.shoal</groupId>
-                <artifactId>shoal-gms-impl</artifactId>
-                <version>${shoal.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.glassfish.shoal</groupId>
-                <artifactId>shoal-cache</artifactId>
-                <version>${shoal.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.glassfish.ha</groupId>
-                <artifactId>ha-api</artifactId>
-                <version>${ha-api.version}</version>
-            </dependency>
-            <dependency>
                 <groupId>org.bsc.maven</groupId>
                 <artifactId>maven-processor-plugin</artifactId>
                 <version>3.3.3</version>
@@ -541,100 +704,7 @@
                 <artifactId>logging-annotation-processor</artifactId>
                 <version>${logging-annotation-processor.version}</version>
             </dependency>
-            <dependency>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>org.apache.felix.shell</artifactId>
-                <version>1.4.3</version>
-            </dependency>
-            <dependency>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>org.apache.felix.gogo.runtime</artifactId>
-                <version>1.1.4</version>
-            </dependency>
-            <dependency>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>org.apache.felix.gogo.shell</artifactId>
-                <version>1.1.4</version>
-            </dependency>
-            <dependency>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>org.apache.felix.gogo.command</artifactId>
-                <version>1.1.2</version>
-            </dependency>
-            <dependency>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>org.apache.felix.fileinstall</artifactId>
-                <version>3.7.0</version>
-            </dependency>
-            <dependency>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>org.apache.felix.configadmin</artifactId>
-                <version>1.9.22</version>
-            </dependency>
-            <!-- Felix SCR used to include/embed promise, but after 2.0.12 stopped doing that. Since Felix Core doesn't export
-                these packages, we have to deploy them together with Felix SCR. -->
-            <dependency>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>org.apache.felix.scr</artifactId>
-                <version>2.1.28</version>
-            </dependency>
-            <dependency>
-                <groupId>org.osgi</groupId>
-                <artifactId>org.osgi.util.promise</artifactId>
-                <version>1.1.1</version>
-            </dependency>
-            <dependency>
-                <groupId>org.osgi</groupId>
-                <artifactId>org.osgi.util.function</artifactId>
-                <version>1.1.0</version>
-            </dependency>
-
-            <dependency>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>org.apache.felix.bundlerepository</artifactId>
-                <version>2.0.10</version>
-            </dependency>
-            <!-- This is currently used by osgi-shell cmd, but can be used for others as well -->
-            <dependency>
-                <groupId>jline</groupId>
-                <artifactId>jline</artifactId>
-                <version>2.14.5</version>
-            </dependency>
-            <dependency>
-                <groupId>org.ow2.asm</groupId>
-                <artifactId>asm</artifactId>
-                <version>${asm.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.ow2.asm</groupId>
-                <artifactId>asm-analysis</artifactId>
-                <version>${asm.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.ow2.asm</groupId>
-                <artifactId>asm-commons</artifactId>
-                <version>${asm.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.ow2.asm</groupId>
-                <artifactId>asm-tree</artifactId>
-                <version>${asm.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.ow2.asm</groupId>
-                <artifactId>asm-util</artifactId>
-                <version>${asm.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.javassist</groupId>
-                <artifactId>javassist</artifactId>
-                <version>${javassist.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>jakarta.validation</groupId>
-                <artifactId>jakarta.validation-api</artifactId>
-                <version>${jakarta.validation.version}</version>
-            </dependency>
+            
         </dependencies>
     </dependencyManagement>
 
@@ -684,7 +754,7 @@
                 </plugin>
                 <plugin>
                     <artifactId>maven-compiler-plugin</artifactId>
-                    <version>3.8.1</version>
+                    <version>3.9.0</version>
                     <configuration>
                         <source>11</source>
                         <target>11</target>
@@ -698,7 +768,7 @@
                 </plugin>
                 <plugin>
                     <artifactId>maven-dependency-plugin</artifactId>
-                    <version>3.1.2</version>
+                    <version>3.2.0</version>
                 </plugin>
                 <plugin>
                     <groupId>org.glassfish.build</groupId>
@@ -789,7 +859,7 @@
                         <dependency>
                             <groupId>com.puppycrawl.tools</groupId>
                             <artifactId>checkstyle</artifactId>
-                            <version>8.43</version>
+                            <version>9.3</version>
                         </dependency>
                     </dependencies>
                     <executions>
@@ -806,11 +876,11 @@
                 <plugin>
                     <groupId>com.googlecode.maven-download-plugin</groupId>
                     <artifactId>download-maven-plugin</artifactId>
-                    <version>1.6.7</version>
+                    <version>1.6.8</version>
                 </plugin>
                 <plugin>
                     <artifactId>maven-release-plugin</artifactId>
-                    <version>3.0.0-M1</version>
+                    <version>3.0.0-M5</version>
                 </plugin>
                 <plugin>
                     <artifactId>maven-resources-plugin</artifactId>
@@ -818,7 +888,7 @@
                 </plugin>
                 <plugin>
                     <artifactId>maven-site-plugin</artifactId>
-                    <version>3.9.0</version>
+                    <version>3.10.0</version>
                 </plugin>
                 <plugin>
                     <artifactId>maven-assembly-plugin</artifactId>
@@ -826,7 +896,7 @@
                 </plugin>
                 <plugin>
                     <artifactId>maven-deploy-plugin</artifactId>
-                    <version>3.0.0-M1</version>
+                    <version>3.0.0-M2</version>
                 </plugin>
                 <plugin>
                     <artifactId>maven-install-plugin</artifactId>
@@ -834,12 +904,12 @@
                 </plugin>
                 <plugin>
                     <artifactId>maven-jar-plugin</artifactId>
-                    <version>3.2.0</version>
+                    <version>3.2.2</version>
                 </plugin>
                 <plugin>
                     <groupId>org.codehaus.mojo</groupId>
                     <artifactId>build-helper-maven-plugin</artifactId>
-                    <version>3.2.0</version>
+                    <version>3.3.0</version>
                 </plugin>
                 <plugin>
                     <artifactId>maven-invoker-plugin</artifactId>
@@ -924,7 +994,7 @@
             <!-- Sets minimal Maven version to 3.5.4 -->
             <plugin>
                 <artifactId>maven-enforcer-plugin</artifactId>
-                <version>3.0.0-M3</version>
+                <version>3.0.0</version>
                 <executions>
                     <execution>
                         <id>enforce-maven</id>
@@ -942,12 +1012,6 @@
                 </executions>
             </plugin>
 
-            <!-- force cleaning of the local repository <plugin> <artifactId>maven-dependency-plugin</artifactId> <executions>
-                <execution> <id>purge-local-dependencies</id> <phase>initialize</phase> <goals> <goal>purge-local-repository</goal> </goals>
-                <configuration> <resolutionFuzziness>groupId</resolutionFuzziness> <includes> <include>jakarta.ejb</include> <include>jakarta.transaction</include>
-                <include>jakarta.resource</include> <include>jakarta.enterprise.concurrent</include> <include>jakarta.ws.rs</include> <include>javax.xml.registry</include>
-                <include>jakarta.websocket</include> <include>org.glassfish.jersey</include> </includes> </configuration> </execution> </executions>
-                </plugin> -->
             <plugin>
                 <groupId>org.codehaus.mojo</groupId>
                 <artifactId>build-helper-maven-plugin</artifactId>
@@ -1023,6 +1087,8 @@
                     </execution>
                 </executions>
             </plugin>
+
+            <!-- Add the license and the notice file to every module -->
             <plugin>
                 <artifactId>maven-dependency-plugin</artifactId>
                 <executions>
diff --git a/nucleus/pom.xml b/nucleus/pom.xml
index cbd2417..a724c84 100644
--- a/nucleus/pom.xml
+++ b/nucleus/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>nucleus-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
         <relativePath>parent/pom.xml</relativePath>
     </parent>
 
@@ -101,7 +101,7 @@
                 </plugin>
                 <plugin>
                     <artifactId>maven-war-plugin</artifactId>
-                    <version>3.3.1</version>
+                    <version>3.3.2</version>
                 </plugin>
                 <plugin>
                     <groupId>org.codehaus.mojo</groupId>
diff --git a/nucleus/resources/pom.xml b/nucleus/resources/pom.xml
index 537f19e..6d81428 100755
--- a/nucleus/resources/pom.xml
+++ b/nucleus/resources/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-nucleus-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.main.resourcebase.resources</groupId>
diff --git a/nucleus/security/core/pom.xml b/nucleus/security/core/pom.xml
index b8a5016..42ec177 100644
--- a/nucleus/security/core/pom.xml
+++ b/nucleus/security/core/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.security</groupId>
         <artifactId>nucleus-security</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>security</artifactId>
diff --git a/nucleus/security/core/src/main/java/com/sun/enterprise/security/common/Util.java b/nucleus/security/core/src/main/java/com/sun/enterprise/security/common/Util.java
index 4d35590..0181645 100644
--- a/nucleus/security/core/src/main/java/com/sun/enterprise/security/common/Util.java
+++ b/nucleus/security/core/src/main/java/com/sun/enterprise/security/common/Util.java
@@ -119,7 +119,7 @@
             String userHome = System.getProperty("user.home");
 
             String embeddedServerName = getCurrentEmbeddedServerName();
-            File tempDir = new File(userHome + File.separator + ".glassfish6-" + embeddedServerName + File.separator + "config");
+            File tempDir = new File(userHome + File.separator + ".glassfish7-" + embeddedServerName + File.separator + "config");
             boolean mkDirSuccess = true;
             if (!tempDir.exists()) {
                 mkDirSuccess = tempDir.mkdirs();
diff --git a/nucleus/security/pom.xml b/nucleus/security/pom.xml
index e80c913..0a11dd6 100644
--- a/nucleus/security/pom.xml
+++ b/nucleus/security/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-nucleus-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.main.security</groupId>
diff --git a/nucleus/security/services/pom.xml b/nucleus/security/services/pom.xml
index e5011c4..e7c1cf4 100644
--- a/nucleus/security/services/pom.xml
+++ b/nucleus/security/services/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.security</groupId>
         <artifactId>nucleus-security</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>security-services</artifactId>
diff --git a/nucleus/security/ssl-impl/pom.xml b/nucleus/security/ssl-impl/pom.xml
index 9bc0755..aa9451c 100644
--- a/nucleus/security/ssl-impl/pom.xml
+++ b/nucleus/security/ssl-impl/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main.security</groupId>
         <artifactId>nucleus-security</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>ssl-impl</artifactId>
diff --git a/nucleus/test-utils/pom.xml b/nucleus/test-utils/pom.xml
index 940ed92..206562f 100755
--- a/nucleus/test-utils/pom.xml
+++ b/nucleus/test-utils/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-nucleus-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>test-utils</artifactId>
diff --git a/nucleus/tests/admin/pom.xml b/nucleus/tests/admin/pom.xml
index 3231089..46d5848 100644
--- a/nucleus/tests/admin/pom.xml
+++ b/nucleus/tests/admin/pom.xml
@@ -56,7 +56,7 @@
     <parent>
         <groupId>org.glassfish.main.tests</groupId>
         <artifactId>nucleus-tests</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.tests</groupId>
diff --git a/nucleus/tests/pom.xml b/nucleus/tests/pom.xml
index aa0dc2c..72ade32 100755
--- a/nucleus/tests/pom.xml
+++ b/nucleus/tests/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-nucleus-parent</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.main.tests</groupId>
diff --git a/pom.xml b/pom.xml
index f018f39..809888e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,7 +28,7 @@
 
     <groupId>org.glassfish.main</groupId>
     <artifactId>glassfish-main-aggregator</artifactId>
-    <version>6.2.6-SNAPSHOT</version>
+    <version>7.0.0-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>GlassFish Project</name>
@@ -74,7 +74,7 @@
             <!-- Sets minimal Maven version to 3.5.4 -->
             <plugin>
                 <artifactId>maven-enforcer-plugin</artifactId>
-                <version>3.0.0-M3</version>
+                <version>3.0.0</version>
                 <executions>
                     <execution>
                         <id>enforce-maven</id>
diff --git a/qa/pom.xml b/qa/pom.xml
index 82cdc42..40534fd 100644
--- a/qa/pom.xml
+++ b/qa/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.glassfish.main</groupId>
         <artifactId>glassfish-main-aggregator</artifactId>
-        <version>6.2.6-SNAPSHOT</version>
+        <version>7.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>glassfish-qa-config</artifactId>
diff --git a/runtests.sh b/runtests.sh
index 2b7e700..4fe8e3f 100755
--- a/runtests.sh
+++ b/runtests.sh
@@ -67,9 +67,9 @@
 export MVN_REPOSITORY="${HOME}/.m2/repository"
 export WORKSPACE="$(pwd)/target"
 export TEST_RUN_LOG="${WORKSPACE}/tests-run.log"
-export CLASSPATH="${WORKSPACE}/glassfish6/javadb"
+export CLASSPATH="${WORKSPACE}/glassfish7/javadb"
 export APS_HOME="$(pwd)/appserver/tests/appserv-tests"
-export S1AS_HOME="${WORKSPACE}/glassfish6/glassfish"
+export S1AS_HOME="${WORKSPACE}/glassfish7/glassfish"
 export PORT_ADMIN="4848"
 export PORT_HTTP="8080"
 export PORT_HTTPS="8181"
diff --git a/snapshots/hibernate-validator/pom.xml b/snapshots/hibernate-validator/pom.xml
new file mode 100644
index 0000000..c756519
--- /dev/null
+++ b/snapshots/hibernate-validator/pom.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (c) 2021 Contributors to the Eclipse Foundation. All rights reserved.
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    This Source Code may also be made available under the following Secondary
+    Licenses when the conditions for such availability set forth in the
+    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
+>
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.glassfish.main.snapshots</groupId>
+        <artifactId>snapshotsmodule</artifactId>
+        <version>0.0.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>hibernate-validator-snapshot</artifactId>
+    <packaging>pom</packaging>
+
+    <properties>
+        <snapshots.sources.url>https://github.com/omnifaces/hibernate-validator/archive/refs/heads/main.zip</snapshots.sources.url>
+        <snapshots.sources.directory>${project.build.directory}/hibernate-validator-main</snapshots.sources.directory>
+    </properties>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>com.googlecode.maven-download-plugin</groupId>
+                <artifactId>download-maven-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <artifactId>maven-invoker-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/snapshots/pom.xml b/snapshots/pom.xml
new file mode 100644
index 0000000..2220b2d
--- /dev/null
+++ b/snapshots/pom.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (c) 2021, 2022 Contributors to Eclipse Foundation.
+    Copyright (c) 1997, 2021 Oracle and/or its affiliates. All rights reserved.
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    This Source Code may also be made available under the following Secondary
+    Licenses when the conditions for such availability set forth in the
+    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+>
+    <modelVersion>4.0.0</modelVersion>
+    
+    <parent>
+        <groupId>org.eclipse.ee4j</groupId>
+        <artifactId>project</artifactId>
+        <version>1.0.6</version>
+    </parent>
+
+    <groupId>org.glassfish.main.snapshots</groupId>
+    <artifactId>snapshotsmodule</artifactId>
+    <version>0.0.0-SNAPSHOT</version>
+    <packaging>pom</packaging>
+
+    <name>GlassFish Snapshots Parent</name>
+    <description>Temporary snapshot modules</description>
+
+    <modules>
+        <module>hibernate-validator</module>
+    </modules>
+
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-install-plugin</artifactId>
+                <version>3.0.0-M1</version>
+                <configuration>
+                    <skip>true</skip>
+                </configuration>
+            </plugin>
+        </plugins>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>com.googlecode.maven-download-plugin</groupId>
+                    <artifactId>download-maven-plugin</artifactId>
+                    <inherited>true</inherited>
+                    <executions>
+                        <execution>
+                            <id>download-snapshot</id>
+                            <phase>generate-resources</phase>
+                            <goals>
+                                <goal>wget</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+                    <configuration>
+                        <url>${snapshots.sources.url}</url>
+                        <unpack>true</unpack>
+                        <outputDirectory>${project.build.directory}</outputDirectory>
+                    </configuration>
+                </plugin>
+                <plugin>
+                    <artifactId>maven-invoker-plugin</artifactId>
+                    <version>3.2.1</version>
+                    <inherited>true</inherited>
+                    <executions>
+                        <execution>
+                            <id>snapshots.execute-build</id>
+                            <goals>
+                                <goal>run</goal>
+                            </goals>
+                            <configuration>
+                                <streamLogs>true</streamLogs>
+                                <projectsDirectory>${snapshots.sources.directory}</projectsDirectory>
+                                <pomIncludes>
+                                    <pomInclude>pom.xml</pomInclude>
+                                </pomIncludes>
+                                <goals>clean source:jar install -Pstaging -DskipTests -Dmaven.test.skip=true</goals>
+                            </configuration>
+                        </execution>
+                    </executions>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+</project>
diff --git a/snapshots/settings.xml b/snapshots/settings.xml
new file mode 100644
index 0000000..f5d77a1
--- /dev/null
+++ b/snapshots/settings.xml
@@ -0,0 +1,40 @@
+<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
+
+	<profiles>
+		<profile>
+			<id>default</id>
+			<activation>
+				<activeByDefault>true</activeByDefault>
+			</activation>
+			<repositories>
+				<repository>
+					<id>sonatype-nexus-staging</id>
+					<name>Sonatype Nexus Staging</name>
+					<url>https://jakarta.oss.sonatype.org/content/repositories/staging/ </url>
+					<releases>
+						<enabled>true</enabled>
+					</releases>
+					<snapshots>
+						<enabled>false</enabled>
+					</snapshots>
+				</repository>
+			</repositories>
+
+			<pluginRepositories>
+				<pluginRepository>
+					<id>sonatype-nexus-staging</id>
+					<name>Sonatype Nexus Staging</name>
+					<url>https://jakarta.oss.sonatype.org/content/repositories/staging/ </url>
+					<releases>
+						<enabled>true</enabled>
+					</releases>
+					<snapshots>
+						<enabled>false</enabled>
+					</snapshots>
+				</pluginRepository>
+			</pluginRepositories>
+		</profile>
+	</profiles>
+</settings>
\ No newline at end of file
